From 17fd0f96dfd3f5a09c20b35ab21d4e62cff4c7f0 Mon Sep 17 00:00:00 2001 From: jomjol <30766535+jomjol@users.noreply.github.com> Date: Sat, 16 Jul 2022 20:59:09 +0200 Subject: [PATCH] Rolling 20220716_2 --- README.md | 6 +- code/components/esp-nn/CMakeLists.txt | 4 +- code/components/esp-nn/Kconfig.projbuild | 8 +- code/components/esp-nn/README.md | 7 +- code/components/esp-nn/include/esp_nn.h | 10 +- .../components/esp-nn/include/esp_nn_ansi_c.h | 1 + .../esp-nn/include/esp_nn_ansi_headers.h | 136 +- code/components/esp-nn/include/esp_nn_defs.h | 83 + .../esp-nn/include/esp_nn_esp32s3.h | 76 +- .../{esp_nn_esp32.h => esp_nn_generic_opt.h} | 19 +- .../esp-nn/src/common/common_functions.h | 63 +- .../esp-nn/src/convolution/esp_nn_conv_ansi.c | 56 +- .../src/convolution/esp_nn_conv_esp32s3.c | 185 +- .../esp-nn/src/convolution/esp_nn_conv_opt.c | 179 + .../convolution/esp_nn_depthwise_conv_ansi.c | 57 +- .../convolution/esp_nn_depthwise_conv_opt.c | 291 ++ .../esp_nn_depthwise_conv_s8_esp32s3.c | 134 +- .../test_app/sdkconfig.defaults.esp32s3 | 8 + .../esp-nn/tests/src/basic_math_test.c | 20 +- .../esp-nn/tests/src/convolution_test.c | 108 +- code/components/esp-nn_20220716.zip | Bin 0 -> 126540 bytes .../ClassFlowCNNGeneral.cpp | 2 +- code/components/tflite-lib/CMakeLists.txt | 5 +- .../tflite-lib/tensorflow/lite/builtin_ops.h | 2 + .../tensorflow/lite/c/builtin_op_data.h | 3 + .../tensorflow/lite/c/c_api_types.h | 8 +- .../tflite-lib/tensorflow/lite/c/common.cc | 50 +- .../tflite-lib/tensorflow/lite/c/common.h | 55 +- .../lite/core/api/flatbuffer_conversions.cc | 11 + .../tensorflow/lite/core/api/op_resolver.h | 53 +- .../kernels/internal/reference/hard_swish.h | 6 +- .../lite/kernels/internal/runtime_shape.h | 9 +- .../tensorflow/lite/kernels/internal/types.h | 10 +- .../tensorflow/lite/kernels/kernel_util.h | 2 +- .../{ => arena_allocator}/ibuffer_allocator.h | 6 +- .../non_persistent_arena_buffer_allocator.cc | 165 + .../non_persistent_arena_buffer_allocator.h | 104 + .../persistent_arena_buffer_allocator.cc | 52 + .../persistent_arena_buffer_allocator.h | 59 + .../recording_simple_memory_allocator.cc | 2 +- .../recording_simple_memory_allocator.h | 8 +- .../simple_memory_allocator.cc | 2 +- .../simple_memory_allocator.h | 8 +- .../lite/micro/fake_micro_context.cc | 2 +- .../lite/micro/kernels/activations.cc | 27 +- .../tensorflow/lite/micro/kernels/add.cc | 9 +- .../tensorflow/lite/micro/kernels/add_n.cc | 9 +- .../lite/micro/kernels/arg_min_max.cc | 18 +- .../lite/micro/kernels/assign_variable.cc | 9 +- .../lite/micro/kernels/batch_to_space_nd.cc | 9 +- .../lite/micro/kernels/broadcast_args.cc | 12 +- .../lite/micro/kernels/broadcast_to.cc | 12 +- .../lite/micro/kernels/call_once.cc | 9 +- .../tensorflow/lite/micro/kernels/cast.cc | 9 +- .../tensorflow/lite/micro/kernels/ceil.cc | 9 +- .../lite/micro/kernels/circular_buffer.cc | 9 +- .../lite/micro/kernels/comparisons.cc | 60 +- .../lite/micro/kernels/concatenation.cc | 16 +- .../tensorflow/lite/micro/kernels/conv.cc | 62 +- .../tensorflow/lite/micro/kernels/conv_test.h | 10 + .../tensorflow/lite/micro/kernels/cumsum.cc | 9 +- .../lite/micro/kernels/depth_to_space.cc | 9 +- .../lite/micro/kernels/depthwise_conv.cc | 13 +- .../lite/micro/kernels/depthwise_conv.h | 28 +- .../lite/micro/kernels/dequantize.cc | 17 +- .../lite/micro/kernels/dequantize_common.cc | 5 +- .../micro/kernels/detection_postprocess.cc | 11 +- .../lite/micro/kernels/elementwise.cc | 376 ++- .../tensorflow/lite/micro/kernels/elu.cc | 9 +- .../lite/micro/kernels/esp_nn/add.cc | 9 +- .../lite/micro/kernels/esp_nn/conv.cc | 67 +- .../micro/kernels/esp_nn/depthwise_conv.cc | 71 +- .../micro/kernels/esp_nn/fully_connected.cc | 9 +- .../lite/micro/kernels/esp_nn/mul.cc | 9 +- .../lite/micro/kernels/esp_nn/pooling.cc | 18 +- .../lite/micro/kernels/esp_nn/softmax.cc | 208 ++ .../tensorflow/lite/micro/kernels/exp.cc | 9 +- .../lite/micro/kernels/expand_dims.cc | 9 +- .../tensorflow/lite/micro/kernels/fill.cc | 9 +- .../tensorflow/lite/micro/kernels/floor.cc | 9 +- .../lite/micro/kernels/floor_div.cc | 9 +- .../lite/micro/kernels/floor_mod.cc | 9 +- .../lite/micro/kernels/fully_connected.cc | 31 +- .../lite/micro/kernels/fully_connected.h | 20 +- .../tensorflow/lite/micro/kernels/gather.cc | 9 +- .../lite/micro/kernels/gather_nd.cc | 9 +- .../lite/micro/kernels/hard_swish.cc | 10 +- .../tensorflow/lite/micro/kernels/if.cc | 9 +- .../lite/micro/kernels/kernel_runner.cc | 5 +- .../lite/micro/kernels/kernel_runner.h | 5 +- .../lite/micro/kernels/kernel_util.cc | 15 + .../lite/micro/kernels/kernel_util.h | 25 +- .../lite/micro/kernels/l2_pool_2d.cc | 9 +- .../tensorflow/lite/micro/kernels/l2norm.cc | 9 +- .../lite/micro/kernels/leaky_relu.cc | 10 +- .../lite/micro/kernels/log_softmax.cc | 9 +- .../tensorflow/lite/micro/kernels/logical.cc | 22 +- .../tensorflow/lite/micro/kernels/logistic.cc | 9 +- .../lite/micro/kernels/lstm_eval.cc | 2955 +++++++++++++++++ .../tensorflow/lite/micro/kernels/lstm_eval.h | 250 ++ .../lite/micro/kernels/lstm_shared.h | 67 + .../lite/micro/kernels/maximum_minimum.cc | 28 +- .../tensorflow/lite/micro/kernels/micro_ops.h | 6 +- .../lite/micro/kernels/micro_tensor_utils.cc | 809 +++++ .../lite/micro/kernels/micro_tensor_utils.h | 874 +++++ .../lite/micro/kernels/mirror_pad.cc | 9 +- .../tensorflow/lite/micro/kernels/mul.cc | 9 +- .../tensorflow/lite/micro/kernels/neg.cc | 9 +- .../tensorflow/lite/micro/kernels/pack.cc | 9 +- .../tensorflow/lite/micro/kernels/pad.cc | 18 +- .../tensorflow/lite/micro/kernels/pooling.cc | 18 +- .../tensorflow/lite/micro/kernels/prelu.cc | 9 +- .../tensorflow/lite/micro/kernels/quantize.cc | 10 +- .../lite/micro/kernels/quantize_common.cc | 65 +- .../lite/micro/kernels/read_variable.cc | 9 +- .../tensorflow/lite/micro/kernels/reduce.cc | 316 +- .../tensorflow/lite/micro/kernels/reduce.h | 61 + .../lite/micro/kernels/reduce_common.cc | 311 ++ .../tensorflow/lite/micro/kernels/reshape.cc | 9 +- .../lite/micro/kernels/resize_bilinear.cc | 9 +- .../micro/kernels/resize_nearest_neighbor.cc | 10 +- .../tensorflow/lite/micro/kernels/round.cc | 9 +- .../tensorflow/lite/micro/kernels/shape.cc | 9 +- .../tensorflow/lite/micro/kernels/slice.cc | 9 +- .../tensorflow/lite/micro/kernels/softmax.cc | 9 +- .../tensorflow/lite/micro/kernels/softmax.h | 28 +- .../lite/micro/kernels/softmax_common.cc | 86 +- .../lite/micro/kernels/space_to_batch_nd.cc | 9 +- .../lite/micro/kernels/space_to_depth.cc | 9 +- .../tensorflow/lite/micro/kernels/split.cc | 9 +- .../tensorflow/lite/micro/kernels/split_v.cc | 9 +- .../lite/micro/kernels/squared_difference.cc | 247 ++ .../tensorflow/lite/micro/kernels/squeeze.cc | 9 +- .../lite/micro/kernels/strided_slice.cc | 10 +- .../tensorflow/lite/micro/kernels/sub.cc | 9 +- .../tensorflow/lite/micro/kernels/svdf.cc | 9 +- .../tensorflow/lite/micro/kernels/tanh.cc | 10 +- .../lite/micro/kernels/transpose.cc | 9 +- .../lite/micro/kernels/transpose_conv.cc | 17 +- .../kernels/unidirectional_sequence_lstm.cc | 1696 ++++++++++ ...unidirectional_sequence_lstm_test_config.h | 244 ++ .../tensorflow/lite/micro/kernels/unpack.cc | 9 +- .../lite/micro/kernels/var_handle.cc | 9 +- .../tensorflow/lite/micro/kernels/while.cc | 9 +- .../lite/micro/kernels/zeros_like.cc | 9 +- .../lite/micro/micro_allocation_info.cc | 40 +- .../lite/micro/micro_allocation_info.h | 4 + .../tensorflow/lite/micro/micro_allocator.cc | 2 +- .../tensorflow/lite/micro/micro_allocator.h | 2 +- .../tensorflow/lite/micro/micro_context.cc | 10 + .../tensorflow/lite/micro/micro_context.h | 7 + .../lite/micro/micro_mutable_op_resolver.h | 29 +- .../tensorflow/lite/micro/micro_profiler.cc | 12 +- .../tensorflow/lite/micro/micro_profiler.h | 6 +- .../tensorflow/lite/micro/micro_time.cc | 8 +- .../tensorflow/lite/micro/micro_time.h | 10 +- .../lite/micro/recording_micro_allocator.cc | 2 +- .../lite/micro/recording_micro_allocator.h | 2 +- .../tensorflow/lite/micro/test_helpers.cc | 18 +- .../tensorflow/lite/schema/schema_generated.h | 152 +- code/components/tflite-lib_20220716.zip | Bin 0 -> 804399 bytes code/main/version.cpp | 6 +- code/platformio.ini | 2 +- code/version.cpp | 6 +- firmware/bootloader.bin | Bin 26864 -> 26864 bytes firmware/firmware.bin | Bin 1781232 -> 1789200 bytes 166 files changed, 10471 insertions(+), 1691 deletions(-) create mode 100644 code/components/esp-nn/include/esp_nn_defs.h rename code/components/esp-nn/include/{esp_nn_esp32.h => esp_nn_generic_opt.h} (77%) create mode 100644 code/components/esp-nn/src/convolution/esp_nn_conv_opt.c create mode 100644 code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_opt.c create mode 100644 code/components/esp-nn/test_app/sdkconfig.defaults.esp32s3 create mode 100644 code/components/esp-nn_20220716.zip rename code/components/tflite-lib/tensorflow/lite/micro/{ => arena_allocator}/ibuffer_allocator.h (95%) create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h rename code/components/tflite-lib/tensorflow/lite/micro/{ => arena_allocator}/recording_simple_memory_allocator.cc (97%) rename code/components/tflite-lib/tensorflow/lite/micro/{ => arena_allocator}/recording_simple_memory_allocator.h (87%) rename code/components/tflite-lib/tensorflow/lite/micro/{ => arena_allocator}/simple_memory_allocator.cc (99%) rename code/components/tflite-lib/tensorflow/lite/micro/{ => arena_allocator}/simple_memory_allocator.h (95%) create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/softmax.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.h create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_shared.h create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.h create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.h create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce_common.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/squared_difference.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.cc create mode 100644 code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm_test_config.h create mode 100644 code/components/tflite-lib_20220716.zip diff --git a/README.md b/README.md index 82b14ee0..5fdd5403 100644 --- a/README.md +++ b/README.md @@ -54,8 +54,10 @@ In other cases you can contact the developer via email: - +#include "esp_nn_defs.h" /************************** Basic math functions ****************************/ /** @@ -81,28 +80,15 @@ void esp_nn_mul_elementwise_s8_ansi(const int8_t *input1_data, * optimization notes: Though input_offset is int32 type, * offset values are contained in 8 bits [-128, 127] */ -void esp_nn_depthwise_conv_s8_ansi(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, - const uint16_t ch_mult, +void esp_nn_depthwise_conv_s8_ansi(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, + const data_dims_t *output_dims, int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max); + const dw_conv_params_t *conv_params, + const quant_data_t *quant_data); /** * @brief 2d-convolution channelwise @@ -112,43 +98,26 @@ void esp_nn_depthwise_conv_s8_ansi(const int8_t *input_data, * inputs type: int8_t, output: int8_t * input offsets: although int32_t, they are contained in 8 bits [-128, 127] */ -void esp_nn_conv_s8_ansi(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, +void esp_nn_conv_s8_ansi(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, + const data_dims_t *output_dims, int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const uint16_t out_channels, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max); + const conv_params_t *conv_params, + const quant_data_t *quant_data); -int esp_nn_get_conv_scratch_size_ansi(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_ch, - const uint16_t out_ch, - const uint16_t filter_wd, - const uint16_t filter_ht); +int esp_nn_get_conv_scratch_size_ansi(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const conv_params_t *conv_params); void esp_nn_set_conv_scratch_buf_ansi(const void *buf); -int esp_nn_get_depthwise_conv_scratch_size_ansi(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const uint16_t ch_mult, - const uint16_t filter_wd, - const uint16_t filter_ht); +int esp_nn_get_depthwise_conv_scratch_size_ansi(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const dw_conv_params_t *conv_params); void esp_nn_set_depthwise_conv_scratch_buf_ansi(const void *buf); /************************** Activation functions *****************************/ @@ -252,9 +221,6 @@ int32_t esp_nn_get_softmax_scratch_size_opt(const int32_t width, const int32_t h */ void esp_nn_set_softmax_scratch_buf_ansi(void *buffer); -/* ANSI C function to be hooked up when optimised version needed */ -void esp_nn_set_softmax_scratch_buf_opt(void *buffer); - /** * @brief reference softmax function * @@ -268,6 +234,66 @@ void esp_nn_softmax_s8_ansi(const int8_t *input_data, const int32_t diff_min, int8_t *output_data); + +//////////////////////////// Generic optimisations ///////////////////////////// + +/************************** Convolution functions *****************************/ + +/** + * @brief 2d-convolution channelwise optimized version + * + * @note operation: result += (input + offset) * filter + * + * inputs type: int8_t, output: int8_t + * input offsets: although int32_t, they are contained in 8 bits [-128, 127] + */ +void esp_nn_conv_s8_opt(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, + const int8_t *filter_data, + const int32_t *bias, + const data_dims_t *output_dims, + int8_t *out_data, + const conv_params_t *conv_params, + const quant_data_t *quant_data); + +/** + * @brief depthwise convolution per channel optimized version + * + * @note inputs type: int8_t, output: int8_t + * Version used in tflite is per channel. + * This version follows the same footsprints. + * Meaning, it has per out_channel shift and multiplier for + * requantization + * + * optimization notes: Though input_offset is int32 type, + * offset values are contained in 8 bits [-128, 127] + */ +void esp_nn_depthwise_conv_s8_opt(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, + const int8_t *filter_data, + const int32_t *bias, + const data_dims_t *output_dims, + int8_t *out_data, + const dw_conv_params_t *conv_params, + const quant_data_t *quant_data); + +int esp_nn_get_conv_scratch_size_opt(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const conv_params_t *conv_params); +void esp_nn_set_conv_scratch_buf_opt(const void *buf); + +int esp_nn_get_depthwise_conv_scratch_size_opt(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const dw_conv_params_t *conv_params); +void esp_nn_set_depthwise_conv_scratch_buf_opt(const void *buf); + +/* ANSI C function to be hooked up when optimised version needed */ +void esp_nn_set_softmax_scratch_buf_opt(void *buffer); + /** * @brief optimised version of softmax function * diff --git a/code/components/esp-nn/include/esp_nn_defs.h b/code/components/esp-nn/include/esp_nn_defs.h new file mode 100644 index 00000000..756d8e6f --- /dev/null +++ b/code/components/esp-nn/include/esp_nn_defs.h @@ -0,0 +1,83 @@ +// Copyright 2022 Espressif Systems (Shanghai) PTE LTD +// +// 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. + +#pragma once + +#include + +/** + * @brief structure to club data dims + * this structure can be used for input, output and filter + */ +typedef struct data_dims { + int32_t width; + int32_t height; + int32_t channels; + + int32_t extra; // can be used as batch or any other param +} data_dims_t; + +/** + * @brief 2d data structure (width, height) + * + */ +typedef struct data_2d { + int32_t width; + int32_t height; +} data_2d_t; + +/** + * @brief min/max activation + */ +typedef struct act_params { + int32_t min; + int32_t max; +} act_params_t; + +/** + * @brief per channel quant data + * + * @note number of shift and mult elements are equal to output channels + */ +typedef struct quant_data { + int32_t *shift; + int32_t *mult; +} quant_data_t; + +/** + * @brief params specific to convolution 2d + * + */ +typedef struct conv_params { + int32_t in_offset; + int32_t out_offset; + data_2d_t stride; + data_2d_t padding; + data_2d_t dilation; + act_params_t activation; +} conv_params_t; + +/** + * @brief params specific to depthwise convolution 2d + * + */ +typedef struct dw_conv_params { + int32_t in_offset; + int32_t out_offset; + int32_t ch_mult; // channel multiplier. (in_ch * ch_mult = out_ch) + data_2d_t stride; + data_2d_t padding; + data_2d_t dilation; + act_params_t activation; +} dw_conv_params_t; diff --git a/code/components/esp-nn/include/esp_nn_esp32s3.h b/code/components/esp-nn/include/esp_nn_esp32s3.h index 58b544e4..0f52c943 100644 --- a/code/components/esp-nn/include/esp_nn_esp32s3.h +++ b/code/components/esp-nn/include/esp_nn_esp32s3.h @@ -19,7 +19,7 @@ #pragma once -#include +#include "esp_nn_defs.h" #include "esp_nn_ansi_headers.h" /************************** Basic math functions *****************************/ @@ -85,28 +85,15 @@ void esp_nn_mul_elementwise_s8_esp32s3(const int8_t *input1_data, * optimization notes: Though input_offset is int32 type, * offset values are contained in 8 bits [-128, 127] */ -void esp_nn_depthwise_conv_s8_esp32s3(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, - const uint16_t ch_mult, +void esp_nn_depthwise_conv_s8_esp32s3(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, - int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max); + const data_dims_t *output_dims, + int8_t *output_data, + const dw_conv_params_t *conv_params, + const quant_data_t *quant_data); /** * @brief 2d - convolution channelwise @@ -116,43 +103,26 @@ void esp_nn_depthwise_conv_s8_esp32s3(const int8_t *input_data, * inputs type: int8_t, output: int8_t * input offsets: although int32_t, they are contained in 8 bits [-128, 127] */ -void esp_nn_conv_s8_esp32s3(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, +void esp_nn_conv_s8_esp32s3(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, - int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const uint16_t out_channels, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max); + const data_dims_t *output_dims, + int8_t *output_data, + const conv_params_t *conv_params, + const quant_data_t *quant_data); -int esp_nn_get_conv_scratch_size_esp32s3(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_ch, - const uint16_t out_ch, - const uint16_t filter_wd, - const uint16_t filter_ht); +int esp_nn_get_conv_scratch_size_esp32s3(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const conv_params_t *conv_params); void esp_nn_set_conv_scratch_buf_esp32s3(const void *buf); -int esp_nn_get_depthwise_conv_scratch_size_esp32s3(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const uint16_t ch_mult, - const uint16_t filter_wd, - const uint16_t filter_ht); +int esp_nn_get_depthwise_conv_scratch_size_esp32s3(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const dw_conv_params_t *conv_params); void esp_nn_set_depthwise_conv_scratch_buf_esp32s3(const void *buf); /************************** Pooling functions *****************************/ diff --git a/code/components/esp-nn/include/esp_nn_esp32.h b/code/components/esp-nn/include/esp_nn_generic_opt.h similarity index 77% rename from code/components/esp-nn/include/esp_nn_esp32.h rename to code/components/esp-nn/include/esp_nn_generic_opt.h index 03fd8216..136cba5d 100644 --- a/code/components/esp-nn/include/esp_nn_esp32.h +++ b/code/components/esp-nn/include/esp_nn_generic_opt.h @@ -13,28 +13,27 @@ // limitations under the License. /** - * @file Header definitions to include for esp_nn optimized functions for - * the ESP32 platform. - * We are hooking up just the C versions for now. - * The file hence is exactly same as `esp_nn_ansi_c.h` + * @file Header definitions to include for esp_nn generic optimisations + * For functions which not having optimisations, _ansi versions are picked. */ #pragma once +#include "esp_nn_defs.h" #include "esp_nn_ansi_headers.h" #define esp_nn_add_elementwise_s8 esp_nn_add_elementwise_s8_ansi #define esp_nn_mul_elementwise_s8 esp_nn_mul_elementwise_s8_ansi -#define esp_nn_depthwise_conv_s8 esp_nn_depthwise_conv_s8_ansi +#define esp_nn_depthwise_conv_s8 esp_nn_depthwise_conv_s8_opt -#define esp_nn_conv_s8 esp_nn_conv_s8_ansi +#define esp_nn_conv_s8 esp_nn_conv_s8_opt -#define esp_nn_get_conv_scratch_size esp_nn_get_conv_scratch_size_ansi -#define esp_nn_set_conv_scratch_buf esp_nn_set_conv_scratch_buf_ansi +#define esp_nn_get_conv_scratch_size esp_nn_get_conv_scratch_size_opt +#define esp_nn_set_conv_scratch_buf esp_nn_set_conv_scratch_buf_opt -#define esp_nn_get_depthwise_conv_scratch_size esp_nn_get_depthwise_conv_scratch_size_ansi -#define esp_nn_set_depthwise_conv_scratch_buf esp_nn_set_depthwise_conv_scratch_buf_ansi +#define esp_nn_get_depthwise_conv_scratch_size esp_nn_get_depthwise_conv_scratch_size_opt +#define esp_nn_set_depthwise_conv_scratch_buf esp_nn_set_depthwise_conv_scratch_buf_opt #define esp_nn_relu6_s8 esp_nn_relu6_s8_ansi diff --git a/code/components/esp-nn/src/common/common_functions.h b/code/components/esp-nn/src/common/common_functions.h index 9a5f0dcc..0a74eca4 100644 --- a/code/components/esp-nn/src/common/common_functions.h +++ b/code/components/esp-nn/src/common/common_functions.h @@ -41,15 +41,39 @@ __NN_FORCE_INLINE__ int32_t esp_nn_clz32(uint32_t in) { +#if CONFIG_IDF_TARGET_ARCH_XTENSA __asm__ volatile("nsau %0, %0" : "+r" (in)); return in; -} - -__NN_FORCE_INLINE__ int32_t esp_nn_pick_sat_high32_of64(int64_t val64) -{ - int32_t sign = (int32_t) (val64 >> 63); - int32_t to_add = sign & ((1ul << 31) - 1); - return (int32_t) ((int64_t) (val64 + to_add) >> 31); +#elif defined(__GNUC__) + return __builtin_clz(in); +#else + int32_t count = 32; + uint32_t x = in, y = in >> 16; + if (y != 0) { + count -= 16; + x = y; + } + y = x >> 8; + if (y != 0) { + count -= 8; + x = y; + } + y = x >> 4; + if (y != 0) { + count -= 4; + x = y; + } + y = x >> 2; + if (y != 0) { + count -= 2; + x = y; + } + y = x >> 1; + if (y != 0) { + return count - 2; + } + return count - x; +#endif } /** @@ -57,8 +81,19 @@ __NN_FORCE_INLINE__ int32_t esp_nn_pick_sat_high32_of64(int64_t val64) */ __NN_FORCE_INLINE__ int32_t esp_nn_saturate8(int32_t in) { +#if CONFIG_IDF_TARGET_ARCH_XTENSA __asm__ volatile("clamps %0, %0, 7" : "+a"(in)); return in; +#else + return max(INT8_MIN, min(in, INT8_MAX)); +#endif +} + +__NN_FORCE_INLINE__ int32_t esp_nn_pick_sat_high32_of64(int64_t val64) +{ + int32_t sign = (int32_t) (val64 >> 63); + int32_t to_add = sign & ((1ul << 31) - 1); + return (int32_t) ((int64_t) (val64 + to_add) >> 31); } __NN_FORCE_INLINE__ int32_t esp_nn_sat_round_doubling_high_mul(int32_t in0, int32_t in1) @@ -144,7 +179,7 @@ static void esp_nn_aligned_s8_pad_with_value(const int8_t *src, int8_t *dst, const uint16_t pad_ht) { /* memset with pad_val */ - memset(dst, pad_val, ((input_wd + 2 * pad_wd) * (input_ht + 2 * pad_ht)) * channels * 2); + memset(dst, pad_val, ((input_wd + 2 * pad_wd) * (input_ht + 2 * pad_ht)) * channels); dst += (pad_wd + input_wd + pad_wd) * channels; for (int i = 0; i < input_ht; i++) { @@ -156,7 +191,6 @@ static void esp_nn_aligned_s8_pad_with_value(const int8_t *src, int8_t *dst, } } -#if 0 static void esp_nn_aligned_s8_pad_end_with_value(const int8_t *src, int8_t *dst, const uint16_t input_wd, const uint16_t input_ht, @@ -169,13 +203,16 @@ static void esp_nn_aligned_s8_pad_end_with_value(const int8_t *src, int8_t *dst, for (int j = 0; j < input_wd * channels; j++) { *dst++ = *src++; } - memset(dst, pad_val, pad_wd * channels); - dst += pad_wd * channels; + if (pad_wd) { + memset(dst, pad_val, pad_wd * channels); + dst += pad_wd * channels; + } } /* pad end `pad_ht` lines at end */ - memset(dst, pad_val, (input_wd + pad_wd) * pad_ht * channels); + if (pad_ht) { + memset(dst, pad_val, (input_wd + pad_wd) * pad_ht * channels); + } } -#endif /** * @brief convert 8 bit input data to 16 bit diff --git a/code/components/esp-nn/src/convolution/esp_nn_conv_ansi.c b/code/components/esp-nn/src/convolution/esp_nn_conv_ansi.c index d04f78e1..677c0ad8 100644 --- a/code/components/esp-nn/src/convolution/esp_nn_conv_ansi.c +++ b/code/components/esp-nn/src/convolution/esp_nn_conv_ansi.c @@ -12,16 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include +#include #include -int esp_nn_get_conv_scratch_size_ansi(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_ch, - const uint16_t out_ch, - const uint16_t filter_wd, - const uint16_t filter_ht) +int esp_nn_get_conv_scratch_size_ansi(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const conv_params_t *conv_params) { return 0; } @@ -108,29 +106,35 @@ void esp_nn_conv_u8_ansi(const uint8_t *input_data, * Assumption 2: Pointers are valid * Assumption 3: dialation width = 1 */ -void esp_nn_conv_s8_ansi(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, +void esp_nn_conv_s8_ansi(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, + const data_dims_t *output_dims, int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const uint16_t out_channels, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max) + const conv_params_t *conv_params, + const quant_data_t *quant_data) { + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t in_channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const uint16_t out_channels = output_dims->channels; + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + int32_t out_ch_idx, out_y, out_x, in_ch_idx, filter_y_idx, filter_x_idx; for (out_y = 0; out_y < out_ht; out_y++) { diff --git a/code/components/esp-nn/src/convolution/esp_nn_conv_esp32s3.c b/code/components/esp-nn/src/convolution/esp_nn_conv_esp32s3.c index ea8fdfa5..e13129b2 100644 --- a/code/components/esp-nn/src/convolution/esp_nn_conv_esp32s3.c +++ b/code/components/esp-nn/src/convolution/esp_nn_conv_esp32s3.c @@ -12,30 +12,30 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include #include +#include #include static int16_t *scratch_buffer = NULL; -extern void esp_nn_conv_s16_mult8_1x1_esp32s3(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_channels, - const int32_t input_offset, - const int16_t *filter_data, - const int32_t *bias, - int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const uint16_t out_channels, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max, - void *buffer /* scratch buffer */); +extern void esp_nn_conv_s8_mult8_1x1_esp32s3(const int8_t *input_data, + const uint16_t input_wd, + const uint16_t input_ht, + const uint16_t in_channels, + const int32_t input_offset, + const int8_t *filter_aligned, + const int32_t *bias, + int8_t *out_data, + const uint16_t out_wd, + const uint16_t out_ht, + const uint16_t out_channels, + const int32_t out_offset, + const int32_t *out_shift, + const int32_t *out_mult, + const int32_t activation_min, + const int32_t activation_max, + void *buffer /* scratch buffer */); extern void esp_nn_conv_s16_mult4_1x1_esp32s3(const int16_t *input_data, const uint16_t input_wd, @@ -81,34 +81,40 @@ extern void esp_nn_aligned_s8_to_s16_with_offset_esp32s3(const int8_t *src, int1 extern void esp_nn_s8_to_s16_esp32s3(const int8_t *src, int16_t *dst, const int size); -static void esp_nn_conv_s8_unrolled(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, +static void esp_nn_conv_s8_unrolled(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, + const data_dims_t *output_dims, int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const uint16_t out_channels, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max) + const conv_params_t *conv_params, + const quant_data_t *quant_data) { + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t in_ch = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const uint16_t out_ch = output_dims->channels; + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + int32_t out_ch_idx, out_y, out_x, in_ch_idx, filter_y_idx, filter_x_idx; for (out_y = 0; out_y < out_ht; out_y++) { for (out_x = 0; out_x < out_wd; out_x++) { - for (out_ch_idx = 0; out_ch_idx < out_channels; out_ch_idx++) { + for (out_ch_idx = 0; out_ch_idx < out_ch; out_ch_idx++) { int32_t conv_out = 0; const int32_t base_y = stride_ht * out_y - pad_ht; @@ -124,10 +130,10 @@ static void esp_nn_conv_s8_unrolled(const int8_t *input_data, for (filter_x_idx = filter_x_start; filter_x_idx < filter_x_end; filter_x_idx++) { const int32_t in_row = base_y + filter_y_idx; const int32_t in_col = base_x + filter_x_idx; - int32_t input_base_offset = (in_row * input_wd + in_col) * in_channels; - int32_t filter_base_offset = out_ch_idx * in_channels * filter_ht * filter_wd + - (filter_y_idx * filter_wd + filter_x_idx) * in_channels; - for (in_ch_idx = 0; in_ch_idx < in_channels; in_ch_idx++) { + int32_t input_base_offset = (in_row * input_wd + in_col) * in_ch; + int32_t filter_base_offset = out_ch_idx * in_ch * filter_ht * filter_wd + + (filter_y_idx * filter_wd + filter_x_idx) * in_ch; + for (in_ch_idx = 0; in_ch_idx < in_ch; in_ch_idx++) { conv_out += (input_data[input_base_offset + in_ch_idx] + input_offset) * filter_data[filter_base_offset + in_ch_idx]; @@ -332,18 +338,35 @@ static void esp_nn_conv_s8_pad_valid_ch3_3x3(const int8_t *input_data, } } -int esp_nn_get_conv_scratch_size_esp32s3(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t in_ch, - const uint16_t out_ch, - const uint16_t filter_wd, - const uint16_t filter_ht) +int esp_nn_get_conv_scratch_size_esp32s3(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const conv_params_t *conv_params) { + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t in_ch = input_dims->channels; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_ch = output_dims->channels; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + int filter_size = filter_wd * filter_ht * in_ch * out_ch; int input_size = input_wd * input_ht * in_ch; - int transpose_buf_size = 8 * in_ch; /* to store intermediate data */ + + int transpose_buf_size = 2 * (8 * in_ch); /* to store intermediate data */ + if (input_wd * input_ht < 8) { + transpose_buf_size = 0; // not using this for leftover + } int align_buf_size = 32; /* extra buffer for alignment */ - return 2 * (filter_size + input_size + transpose_buf_size) + align_buf_size; + if (in_ch % 8 == 0 && filter_wd == 1 && filter_ht == 1 && + pad_wd == 0 && pad_ht == 0 && stride_wd == 1 && stride_ht == 1) { + return filter_size + transpose_buf_size + align_buf_size; + } + return 2 * (filter_size + input_size) + transpose_buf_size + align_buf_size; } void esp_nn_set_conv_scratch_buf_esp32s3(void *buf) @@ -351,29 +374,35 @@ void esp_nn_set_conv_scratch_buf_esp32s3(void *buf) scratch_buffer = (int16_t *) buf; } -void esp_nn_conv_s8_esp32s3(const int8_t *input, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, +void esp_nn_conv_s8_esp32s3(const data_dims_t *input_dims, + const int8_t *input, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, + const data_dims_t *output_dims, int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const uint16_t out_channels, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max) + const conv_params_t *conv_params, + const quant_data_t *quant_data) { + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const uint16_t out_channels = output_dims->channels; + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + int filter_size = filter_wd * filter_ht * channels * out_channels; int input_size = input_wd * input_ht * channels; int align_len = 16 - (filter_size & 15); @@ -387,15 +416,16 @@ void esp_nn_conv_s8_esp32s3(const int8_t *input, if (channels % 8 == 0 && filter_wd == 1 && filter_ht == 1 && pad_wd == 0 && pad_ht == 0 && stride_wd == 1 && stride_ht == 1) { - int scratch_offset = (int) (filter_data16 + filter_size); + int8_t *filter_aligned = (int8_t *) scratch_buffer; + int scratch_offset = (int) (filter_aligned + filter_size); void *scratch_buf = (void *) (scratch_offset + 16 - (scratch_offset & 15)); - esp_nn_s8_to_s16_esp32s3(filter_data, filter_data16, filter_size); - esp_nn_conv_s16_mult8_1x1_esp32s3( - input, input_wd, input_ht, channels, input_offset, filter_data16, + memcpy(filter_aligned, filter_data, filter_size); // copy to aligned address + esp_nn_conv_s8_mult8_1x1_esp32s3( + input, input_wd, input_ht, channels, input_offset, filter_aligned, bias, out_data, out_wd, out_ht, out_channels, out_offset, out_shift, out_mult, activation_min, activation_max, scratch_buf); } else if (channels % 4 == 0 && filter_wd == 1 && filter_ht == 1 && - (input_wd * input_ht) % 16 == 0 && /* TODO: remove this check */ + (input_wd * input_ht) % 4 == 0 && /* TODO: remove this check */ pad_wd == 0 && pad_ht == 0 && stride_wd == 1 && stride_ht == 1) { int scratch_offset = (int) (input_data16 + input_size); void *scratch_buf = (void *) (scratch_offset + 16 - (scratch_offset & 15)); @@ -427,10 +457,7 @@ void esp_nn_conv_s8_esp32s3(const int8_t *input, } } else { /* Basic unrolled version */ - esp_nn_conv_s8_unrolled(input, input_wd, input_ht, channels, input_offset, - pad_wd, pad_ht, stride_wd, stride_ht, - filter_data, filter_wd, filter_ht, bias, - out_data, out_wd, out_ht, out_channels, out_offset, out_shift, - out_mult, activation_min, activation_max); + esp_nn_conv_s8_unrolled(input_dims, input, filter_dims, filter_data, + bias, output_dims, out_data, conv_params, quant_data); } } diff --git a/code/components/esp-nn/src/convolution/esp_nn_conv_opt.c b/code/components/esp-nn/src/convolution/esp_nn_conv_opt.c new file mode 100644 index 00000000..be96430e --- /dev/null +++ b/code/components/esp-nn/src/convolution/esp_nn_conv_opt.c @@ -0,0 +1,179 @@ +// Copyright 2020-2021 Espressif Systems (Shanghai) PTE LTD +// +// 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. + +#include + +#include + +int esp_nn_get_conv_scratch_size_opt(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const conv_params_t *conv_params) +{ + return 0; +} + +void esp_nn_set_conv_scratch_buf_opt(const void *buf) +{ + +} + +__attribute__ ((noinline)) +static void esp_nn_conv_s8_1x1(const data_dims_t *input_dims, + const int8_t *input_data, + const int8_t *filter_data, + const int32_t *bias, + const data_dims_t *output_dims, + int8_t *out_data, + const conv_params_t *conv_params, + const quant_data_t *quant_data) +{ + const uint16_t input_wd = input_dims->width; + const uint16_t in_channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const uint16_t out_channels = output_dims->channels; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + + for (int32_t in_row = 0; in_row < out_ht * stride_ht; in_row += stride_ht) { + for (int32_t in_col = 0; in_col < out_wd * stride_wd; in_col += stride_wd) { + const int32_t *out_mult = quant_data->mult; + const int32_t *out_shift = quant_data->shift; + const int8_t *filter_ptr = filter_data; + const int8_t *input_base_ptr = input_data + (in_row * input_wd + in_col) * in_channels; + int32_t out_ch_idx = 0; + for (; out_ch_idx < out_channels; out_ch_idx++) { + int32_t conv_out = 0; + + const int8_t *input_ptr = input_base_ptr; + + int32_t in_ch_idx = 0; + for (; in_ch_idx < in_channels - 3; in_ch_idx += 4) { + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + } + for (; in_ch_idx < in_channels; in_ch_idx ++) { + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + } + if (bias) { + conv_out += bias[out_ch_idx]; + } + conv_out = esp_nn_multiply_by_quantized_mult_fast(conv_out, *out_mult++, *out_shift++); + conv_out += out_offset; + conv_out = max(conv_out, activation_min); + conv_out = min(conv_out, activation_max); + *out_data++ = (int8_t) conv_out; + } + } + } +} + +/** + * Assumption 1: i/p channels == o/p channels + * Assumption 2: Pointers are valid + * Assumption 3: dialation width = 1 + */ +void esp_nn_conv_s8_opt(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, + const int8_t *filter_data, + const int32_t *bias, + const data_dims_t *output_dims, + int8_t *out_data, + const conv_params_t *conv_params, + const quant_data_t *quant_data) +{ + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + + if (filter_wd == 1 && filter_ht == 1) { + esp_nn_conv_s8_1x1(input_dims, input_data, filter_data, bias, + output_dims, out_data, conv_params, quant_data); + return; + } + + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t in_channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const uint16_t out_channels = output_dims->channels; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + + int32_t out_ch_idx, out_y, out_x, filter_y_idx, filter_x_idx; + + for (out_y = 0; out_y < out_ht; out_y++) { + for (out_x = 0; out_x < out_wd; out_x++) { + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + for (out_ch_idx = 0; out_ch_idx < out_channels; out_ch_idx++) { + int32_t conv_out = 0; + + const int32_t base_y = stride_ht * out_y - pad_ht; + const int32_t base_x = stride_wd * out_x - pad_wd; + + const int32_t filter_y_start = max(0, -base_y); + const int32_t filter_x_start = max(0, -base_x); + + const int32_t filter_y_end = min(filter_ht, input_ht - base_y); + const int32_t filter_x_end = min(filter_wd, input_wd - base_x); + + for (filter_y_idx = filter_y_start; filter_y_idx < filter_y_end; filter_y_idx++) { + for (filter_x_idx = filter_x_start; filter_x_idx < filter_x_end; filter_x_idx++) { + const int32_t in_row = base_y + filter_y_idx; + const int32_t in_col = base_x + filter_x_idx; + + const int8_t *input_ptr = input_data + + (in_row * input_wd + in_col) * in_channels; + const int8_t *filter_ptr = filter_data + + out_ch_idx * in_channels * filter_ht * filter_wd + + (filter_y_idx * filter_wd + filter_x_idx) * in_channels; + int32_t in_ch_idx = 0; + for (; in_ch_idx < in_channels - 3; in_ch_idx += 4) { + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + } + for (; in_ch_idx < in_channels; in_ch_idx ++) { + conv_out += (*input_ptr++ + input_offset) * *filter_ptr++; + } + } + } + if (bias) { + conv_out += bias[out_ch_idx]; + } + conv_out = esp_nn_multiply_by_quantized_mult_fast(conv_out, *out_mult++, *out_shift++); + conv_out += out_offset; + conv_out = max(conv_out, activation_min); + conv_out = min(conv_out, activation_max); + *out_data++ = (int8_t) conv_out; + } + } + } +} diff --git a/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_ansi.c b/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_ansi.c index 9cac6cef..1cd02e0f 100644 --- a/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_ansi.c +++ b/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_ansi.c @@ -12,16 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include - +#include #include -int esp_nn_get_depthwise_conv_scratch_size_ansi(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const uint16_t ch_mult, - const uint16_t filter_wd, - const uint16_t filter_ht) +int esp_nn_get_depthwise_conv_scratch_size_ansi(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const dw_conv_params_t *conv_params) { return 0; } @@ -31,29 +28,35 @@ void esp_nn_set_depthwise_conv_scratch_buf_ansi(const void *buf) } -void esp_nn_depthwise_conv_s8_ansi(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, - const uint16_t ch_mult, +void esp_nn_depthwise_conv_s8_ansi(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, + const data_dims_t *output_dims, int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max) + const dw_conv_params_t *conv_params, + const quant_data_t *quant_data) { + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + const uint16_t ch_mult = conv_params->ch_mult; + int out_idx = 0; for (int out_y = 0; out_y < out_ht; out_y++) { //height loop const int16_t base_y = (out_y * stride_ht) - pad_ht; diff --git a/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_opt.c b/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_opt.c new file mode 100644 index 00000000..4afea3f3 --- /dev/null +++ b/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_opt.c @@ -0,0 +1,291 @@ +// Copyright 2020-2021 Espressif Systems (Shanghai) PTE LTD +// +// 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. + +#include +#include + +int esp_nn_get_depthwise_conv_scratch_size_opt(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const dw_conv_params_t *conv_params) +{ + return 0; +} + +void esp_nn_set_depthwise_conv_scratch_buf_opt(const void *buf) +{ + +} + +/* common channel multiplier == 1 case */ +__attribute__ ((noinline)) +static void esp_nn_depthwise_conv_s8_ch_mult_1(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, + const int8_t *filter_data, + const int32_t *bias, + const data_dims_t *output_dims, + int8_t *out_data, + const dw_conv_params_t *conv_params, + const quant_data_t *quant_data) +{ + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + + int out_idx = 0; + for (int out_y = 0; out_y < out_ht; out_y++) { //height loop + const int16_t base_y = (out_y * stride_ht) - pad_ht; + for (int out_x = 0; out_x < out_wd; out_x++) { //width_loop + const int16_t base_x = (out_x * stride_wd) - pad_wd; + + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + + /* Select filter so as the point doesn't lie outside block */ + int filter_y_start = max(0, -base_y); + int filter_x_start = max(0, -base_x); + int filter_y_end = min(filter_ht, input_ht - base_y); + int filter_x_end = min(filter_wd, input_wd - base_x); + + int ch_idx = 0; + for (; ch_idx < channels - 3; ch_idx += 4) {//channel_loop + int32_t result0 = 0; + int32_t result1 = 0; + int32_t result2 = 0; + int32_t result3 = 0; + + for (int filter_y_idx = filter_y_start; filter_y_idx < filter_y_end; filter_y_idx++) { + const int32_t idx_y = base_y + filter_y_idx; + for (int filter_x_idx = filter_x_start; filter_x_idx < filter_x_end; filter_x_idx++) { + const int32_t idx_x = base_x + filter_x_idx; + int32_t input_index = (idx_y * input_wd + idx_x) * channels + ch_idx; + int32_t filter_index = (filter_y_idx * filter_wd + filter_x_idx) * (channels) + ch_idx; + int32_t input_val0 = input_data[input_index + 0] + input_offset; + int32_t input_val1 = input_data[input_index + 1] + input_offset; + int32_t input_val2 = input_data[input_index + 2] + input_offset; + int32_t input_val3 = input_data[input_index + 3] + input_offset; + int32_t filter_val0 = filter_data[filter_index + 0]; + int32_t filter_val1 = filter_data[filter_index + 1]; + int32_t filter_val2 = filter_data[filter_index + 2]; + int32_t filter_val3 = filter_data[filter_index + 3]; + result0 += input_val0 * filter_val0; + result1 += input_val1 * filter_val1; + result2 += input_val2 * filter_val2; + result3 += input_val3 * filter_val3; + } + } + if (bias) { + result0 += bias[ch_idx + 0]; + result1 += bias[ch_idx + 1]; + result2 += bias[ch_idx + 2]; + result3 += bias[ch_idx + 3]; + } + result0 = esp_nn_multiply_by_quantized_mult_fast(result0, *out_mult++, *out_shift++); + result1 = esp_nn_multiply_by_quantized_mult_fast(result1, *out_mult++, *out_shift++); + result2 = esp_nn_multiply_by_quantized_mult_fast(result2, *out_mult++, *out_shift++); + result3 = esp_nn_multiply_by_quantized_mult_fast(result3, *out_mult++, *out_shift++); + + result0 += out_offset; + result1 += out_offset; + result2 += out_offset; + result3 += out_offset; + + result0 = max(result0, activation_min); + result1 = max(result1, activation_min); + result2 = max(result2, activation_min); + result3 = max(result3, activation_min); + + result0 = min(result0, activation_max); + result1 = min(result1, activation_max); + result2 = min(result2, activation_max); + result3 = min(result3, activation_max); + + out_data[out_idx++] = result0; + out_data[out_idx++] = result1; + out_data[out_idx++] = result2; + out_data[out_idx++] = result3; + } + for (; ch_idx < channels; ch_idx++) {//channel_loop + int32_t result = 0; + + for (int filter_y_idx = filter_y_start; filter_y_idx < filter_y_end; filter_y_idx++) { + const int32_t idx_y = base_y + filter_y_idx; + for (int filter_x_idx = filter_x_start; filter_x_idx < filter_x_end; filter_x_idx++) { + const int32_t idx_x = base_x + filter_x_idx; + int32_t input_index = (idx_y * input_wd + idx_x) * channels + ch_idx; + int32_t filter_index = (filter_y_idx * filter_wd + filter_x_idx) * (channels) + ch_idx; + int32_t input_val = input_data[input_index] + input_offset; + int32_t filter_val = filter_data[filter_index]; + result += input_val * filter_val; + } + } + if (bias) { + result += bias[ch_idx]; + } + result = esp_nn_multiply_by_quantized_mult_fast(result, *out_mult++, *out_shift++); + result += out_offset; + result = max(result, activation_min); + result = min(result, activation_max); + + out_data[out_idx++] = result; + } + } + } +} + +void esp_nn_depthwise_conv_s8_opt(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, + const int8_t *filter_data, + const int32_t *bias, + const data_dims_t *output_dims, + int8_t *out_data, + const dw_conv_params_t *conv_params, + const quant_data_t *quant_data) +{ + const uint16_t ch_mult = conv_params->ch_mult; + if (ch_mult == 1) { + esp_nn_depthwise_conv_s8_ch_mult_1(input_dims, input_data, filter_dims, filter_data, + bias, output_dims, out_data, conv_params, quant_data); + return; + } + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + + int out_idx = 0; + for (int out_y = 0; out_y < out_ht; out_y++) { //height loop + const int16_t base_y = (out_y * stride_ht) - pad_ht; + for (int out_x = 0; out_x < out_wd; out_x++) { //width_loop + const int16_t base_x = (out_x * stride_wd) - pad_wd; + + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + + /* Select filter so as the point doesn't lie outside block */ + int filter_y_start = max(0, -base_y); + int filter_x_start = max(0, -base_x); + int filter_y_end = min(filter_ht, input_ht - base_y); + int filter_x_end = min(filter_wd, input_wd - base_x); + + for (int ch_idx = 0; ch_idx < channels; ch_idx++) {//channel_loop + int ch_mult_idx = 0; + for (; ch_mult_idx < ch_mult - 3; ch_mult_idx += 4) { + int32_t result0 = 0; + int32_t result1 = 0; + int32_t result2 = 0; + int32_t result3 = 0; + const int out_ch_idx = ch_idx * ch_mult + ch_mult_idx; + + for (int filter_y_idx = filter_y_start; filter_y_idx < filter_y_end; filter_y_idx++) { + const int32_t idx_y = base_y + filter_y_idx; + for (int filter_x_idx = filter_x_start; filter_x_idx < filter_x_end; filter_x_idx++) { + const int32_t idx_x = base_x + filter_x_idx; + int32_t input_index = (idx_y * input_wd + idx_x) * channels + ch_idx; + int32_t filter_index = (filter_y_idx * filter_wd + filter_x_idx) * (channels * ch_mult) + out_ch_idx; + int32_t input_val = input_data[input_index] + input_offset; + int32_t filter_val0 = filter_data[filter_index + 0]; + int32_t filter_val1 = filter_data[filter_index + 1]; + int32_t filter_val2 = filter_data[filter_index + 2]; + int32_t filter_val3 = filter_data[filter_index + 3]; + result0 += input_val * filter_val0; + result1 += input_val * filter_val1; + result2 += input_val * filter_val2; + result3 += input_val * filter_val3; + } + } + if (bias) { + result0 += bias[out_ch_idx + 0]; + result1 += bias[out_ch_idx + 1]; + result2 += bias[out_ch_idx + 2]; + result3 += bias[out_ch_idx + 3]; + } + result0 = esp_nn_multiply_by_quantized_mult_fast(result0, *out_mult++, *out_shift++); + result1 = esp_nn_multiply_by_quantized_mult_fast(result1, *out_mult++, *out_shift++); + result2 = esp_nn_multiply_by_quantized_mult_fast(result2, *out_mult++, *out_shift++); + result3 = esp_nn_multiply_by_quantized_mult_fast(result3, *out_mult++, *out_shift++); + + result0 += out_offset; + result1 += out_offset; + result2 += out_offset; + result3 += out_offset; + + result0 = max(result0, activation_min); + result1 = max(result1, activation_min); + result2 = max(result2, activation_min); + result3 = max(result3, activation_min); + result0 = min(result0, activation_max); + result1 = min(result1, activation_max); + result2 = min(result2, activation_max); + result3 = min(result3, activation_max); + + out_data[out_idx++] = result0; + out_data[out_idx++] = result1; + out_data[out_idx++] = result2; + out_data[out_idx++] = result3; + } + for (; ch_mult_idx < ch_mult; ch_mult_idx++) { + int32_t result = 0; + const int out_ch_idx = ch_idx * ch_mult + ch_mult_idx; + + for (int filter_y_idx = filter_y_start; filter_y_idx < filter_y_end; filter_y_idx++) { + const int32_t idx_y = base_y + filter_y_idx; + for (int filter_x_idx = filter_x_start; filter_x_idx < filter_x_end; filter_x_idx++) { + const int32_t idx_x = base_x + filter_x_idx; + int32_t input_index = (idx_y * input_wd + idx_x) * channels + ch_idx; + int32_t filter_index = (filter_y_idx * filter_wd + filter_x_idx) * (channels * ch_mult) + out_ch_idx; + int32_t input_val = input_data[input_index] + input_offset; + int32_t filter_val = filter_data[filter_index]; + result += input_val * filter_val; + } + } + if (bias) { + result += bias[out_ch_idx]; + } + result = esp_nn_multiply_by_quantized_mult_fast(result, *out_mult++, *out_shift++); + result += out_offset; + result = max(result, activation_min); + result = min(result, activation_max); + + out_data[out_idx++] = result; + } + } + } + } +} diff --git a/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_s8_esp32s3.c b/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_s8_esp32s3.c index c588c48f..9167a43f 100644 --- a/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_s8_esp32s3.c +++ b/code/components/esp-nn/src/convolution/esp_nn_depthwise_conv_s8_esp32s3.c @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include #include +#include #include @@ -353,17 +353,59 @@ void esp_nn_depthwise_conv_s8_ch_mult1(const int8_t *input_data, } } -int esp_nn_get_depthwise_conv_scratch_size_esp32s3(const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const uint16_t ch_mult, - const uint16_t filter_wd, - const uint16_t filter_ht) +int esp_nn_get_depthwise_conv_scratch_size_esp32s3(const data_dims_t *input_dims, + const data_dims_t *filter_dims, + const data_dims_t *output_dims, + const dw_conv_params_t *conv_params) { + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t channels = input_dims->channels; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t ch_mult = conv_params->ch_mult; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + int filter_size = filter_wd * filter_ht * channels * ch_mult; - int padding_used = ((filter_wd == 3) && (filter_ht == 3)) * 2; - int input_size = (input_wd + padding_used) * (input_ht + padding_used) * channels; - return 2 * (filter_size + input_size) + 16; //16 for alignment + int pad_width = 0, pad_height = 0; + + if ((ch_mult == 1) && (channels % 8 == 0) && (filter_wd == 3) && (filter_ht == 3)) { + if (channels % 16 == 0) { + if (pad_wd || pad_ht) { + pad_width = pad_wd * 2; + pad_height = pad_ht * 2; + } else { + // check if we need to pad additionally + pad_width = (out_wd * stride_wd + filter_wd - 1) - input_wd; + pad_height = (out_ht * stride_ht + filter_ht - 1) - input_ht; + // printf("in(%d %d %d), out(%d %d), filter (%d %d) stride (%d %d), pad (%d %d)", + // input_wd, input_ht, channels, out_wd, out_ht, filter_wd, filter_ht, + // stride_wd, stride_ht, pad_wd, pad_ht); + } + if (pad_width || pad_height) { + int input_size = (input_wd + pad_width) * (input_ht + pad_height) * channels; + // printf("ask1 %d\n", filter_size + input_size + 16); + return filter_size + input_size + 16; // 16 for alignment + } else { + // printf("ask2 %d\n", filter_size + 16); + return filter_size + 16; // 16 for alignment + } + } else { + int input_size = input_wd * input_ht * channels; + // printf("ask3 %d\n", 2 * (filter_size + input_size) + 16); + return 2 * (filter_size + input_size) + 16; // 16 for alignment + } + } else if (ch_mult % 4 == 0) { + int input_size = input_wd * input_ht * channels; + // printf("ask4 %d\n", 2 * (filter_size + input_size) + 16); + return 2 * (filter_size + input_size) + 16; // 16 for alignment + } + return 32; // just few bytes } void esp_nn_set_depthwise_conv_scratch_buf_esp32s3(void *buf) @@ -376,29 +418,38 @@ void esp_nn_set_depthwise_conv_scratch_buf_esp32s3(void *buf) * Assumption 2: Pointers are valid * Assumption 3: dialation width = 1 */ -void esp_nn_depthwise_conv_s8_esp32s3(const int8_t *input_data, - const uint16_t input_wd, - const uint16_t input_ht, - const uint16_t channels, - const int32_t input_offset, - const uint16_t pad_wd, - const uint16_t pad_ht, - const uint16_t stride_wd, - const uint16_t stride_ht, - const uint16_t ch_mult, + + + +void esp_nn_depthwise_conv_s8_esp32s3(const data_dims_t *input_dims, + const int8_t *input_data, + const data_dims_t *filter_dims, const int8_t *filter_data, - const uint16_t filter_wd, - const uint16_t filter_ht, const int32_t *bias, + const data_dims_t *output_dims, int8_t *out_data, - const uint16_t out_wd, - const uint16_t out_ht, - const int32_t out_offset, - const int32_t *out_shift, - const int32_t *out_mult, - const int32_t activation_min, - const int32_t activation_max) + const dw_conv_params_t *conv_params, + const quant_data_t *quant_data) { + const uint16_t input_wd = input_dims->width; + const uint16_t input_ht = input_dims->height; + const uint16_t channels = input_dims->channels; + const int32_t input_offset = conv_params->in_offset; + const int32_t out_offset = conv_params->out_offset; + const uint16_t pad_wd = conv_params->padding.width; + const uint16_t pad_ht = conv_params->padding.height; + const uint16_t stride_wd = conv_params->stride.width; + const uint16_t stride_ht = conv_params->stride.height; + const uint16_t filter_wd = filter_dims->width; + const uint16_t filter_ht = filter_dims->height; + const uint16_t out_wd = output_dims->width; + const uint16_t out_ht = output_dims->height; + const int32_t *out_shift = quant_data->shift; + const int32_t *out_mult = quant_data->mult; + const int32_t activation_min = conv_params->activation.min; + const int32_t activation_max = conv_params->activation.max; + const uint16_t ch_mult = conv_params->ch_mult; + int filter_size = filter_wd * filter_ht * channels * ch_mult; int align_len = 16 - (filter_size & 15); int input_size = input_wd * input_ht * channels; @@ -423,18 +474,27 @@ void esp_nn_depthwise_conv_s8_esp32s3(const int8_t *input_data, stride_wd, stride_ht, filter_aligned, bias, out_data, out_wd, out_ht, out_offset, out_shift, out_mult, activation_min, activation_max); - } else if ((pad_wd == 0) && (pad_ht == 0) && - // because this does not handle padding offset cases yet, run just for stride (1, 1). - // end padding of input with `-input_offset` should solve this - (stride_wd == 1) && (stride_ht == 1)) { + } else if ((channels % 16 == 0) && (pad_wd == 0) && (pad_ht == 0)) { /* process in 8 bits */ int8_t *filter_aligned = (int8_t *) scratch_buffer; + int8_t *input_padded = (int8_t *) scratch_buffer + filter_size + align_len; + + // check if we need to pad additionally + int pad_right = (out_wd * stride_wd + filter_wd - 1) - input_wd; + int pad_bottom = (out_ht * stride_ht + filter_ht - 1) - input_ht; + if (pad_right || pad_bottom) { // pad right and bottom + esp_nn_aligned_s8_pad_end_with_value(input_data, input_padded, input_wd, input_ht, + channels, -input_offset, pad_right, pad_bottom); + } else { + input_padded = (int8_t *) input_data; + } memcpy(filter_aligned, filter_data, filter_size); - esp_nn_depthwise_conv_s8_mult1_3x3_padded_esp32s3(input_data, input_wd, input_ht, channels, input_offset, - stride_wd, stride_ht, filter_aligned, - bias, out_data, out_wd, out_ht, out_offset, out_shift, + esp_nn_depthwise_conv_s8_mult1_3x3_padded_esp32s3(input_padded, input_wd + pad_right, + input_ht + pad_bottom, channels, input_offset, + stride_wd, stride_ht, filter_aligned, bias, + out_data, out_wd, out_ht, out_offset, out_shift, out_mult, activation_min, activation_max); - } else { /* (channels % 8) == 0 && pad_wd == 1 && pad_ht == 1 */ + } else { /* (channels % 8) == 0 */ esp_nn_s8_to_s16_esp32s3(filter_data, filter_data16, filter_size); esp_nn_aligned_s8_to_s16_with_offset_esp32s3(input_data, input_data16, input_size, input_offset); esp_nn_depthwise_conv_s16_mult1_3x3_esp32s3(input_data16, input_wd, input_ht, channels, diff --git a/code/components/esp-nn/test_app/sdkconfig.defaults.esp32s3 b/code/components/esp-nn/test_app/sdkconfig.defaults.esp32s3 new file mode 100644 index 00000000..1adc4b01 --- /dev/null +++ b/code/components/esp-nn/test_app/sdkconfig.defaults.esp32s3 @@ -0,0 +1,8 @@ +# Default configurations for ESP32-S3 + +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32S3_SPIRAM_SUPPORT=y + +CONFIG_ESP32S3_DATA_CACHE_64KB=y +CONFIG_ESP32S3_DATA_CACHE_8WAYS=y +CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y diff --git a/code/components/esp-nn/tests/src/basic_math_test.c b/code/components/esp-nn/tests/src/basic_math_test.c index 5b96b990..715d7c78 100644 --- a/code/components/esp-nn/tests/src/basic_math_test.c +++ b/code/components/esp-nn/tests/src/basic_math_test.c @@ -23,7 +23,9 @@ #include "test_utils.h" #if CONFIG_IDF_CMAKE +#if (CONFIG_SPIRAM_SUPPORT && (CONFIG_SPIRAM_USE_CAPS_ALLOC || CONFIG_SPIRAM_USE_MALLOC)) #define IDF_HEAP_CAPS 1 +#endif #if IDF_HEAP_CAPS #include "esp_heap_caps.h" @@ -138,6 +140,11 @@ void esp_nn_add_elementwise_s8_test() out_c_orig = out_data_c; out_opt_orig = out_data_opt; #endif + if (input1_orig == NULL || input2_orig == NULL || out_c_orig == NULL || + out_opt_orig == NULL) { + printf(ANSI_COLOR_RED"%s error allocating buffers\n"ANSI_COLOR_RESET, __FUNCTION__); + goto elementwise_add_test_cleanup; + } for (int i = 0; i < size; ++i) { input1[i] = rand() % 256 - 128; @@ -194,10 +201,10 @@ elementwise_add_test_cleanup: if (input2_orig) { free(input2_orig); } - if (out_data_c) { + if (out_c_orig) { free(out_c_orig); } - if (out_data_opt) { + if (out_opt_orig) { free(out_opt_orig); } } @@ -282,6 +289,11 @@ void esp_nn_mul_elementwise_s8_test() out_c_orig = out_data_c; out_opt_orig = out_data_opt; #endif + if (input1_orig == NULL || input2_orig == NULL || out_c_orig == NULL || + out_opt_orig == NULL) { + printf(ANSI_COLOR_RED"%s error allocating buffers\n"ANSI_COLOR_RESET, __FUNCTION__); + goto elementwise_mult_test_cleanup; + } for (int i = 0; i < size; ++i) { input1[i] = rand() % 256 - 128; @@ -333,10 +345,10 @@ elementwise_mult_test_cleanup: if (input2_orig) { free(input2_orig); } - if (out_data_c) { + if (out_c_orig) { free(out_c_orig); } - if (out_data_opt) { + if (out_opt_orig) { free(out_opt_orig); } } diff --git a/code/components/esp-nn/tests/src/convolution_test.c b/code/components/esp-nn/tests/src/convolution_test.c index f3802257..c86bdbab 100644 --- a/code/components/esp-nn/tests/src/convolution_test.c +++ b/code/components/esp-nn/tests/src/convolution_test.c @@ -22,8 +22,9 @@ #include "test_utils.h" #if CONFIG_IDF_CMAKE +#if (CONFIG_SPIRAM_SUPPORT && (CONFIG_SPIRAM_USE_CAPS_ALLOC || CONFIG_SPIRAM_USE_MALLOC)) #define IDF_HEAP_CAPS 1 - +#endif #if IDF_HEAP_CAPS #include "esp_heap_caps.h" #endif @@ -44,8 +45,8 @@ void esp_nn_depthwise_conv_s8_test() uint16_t filter_ht, filter_wd, ch_mult; uint16_t pad_wd, pad_ht, stride_wd, stride_ht; - // run for 10 iterations - for (int itr = 0; itr < 10; itr++) { + // run for 15 iterations + for (int itr = 0; itr < 15; itr++) { /* prepare data */ switch (itr) { case 0: // (ch_mult 1, (channels % 16) = 0), filter (3,3), pad (0,0) @@ -144,22 +145,52 @@ void esp_nn_depthwise_conv_s8_test() stride_wd = 2; stride_ht = 2; break; - default: - input_wd = 4; - input_ht = 4; + case 8: // same as case 7, with large parameters + input_wd = 58; + input_ht = 58; filter_ht = 3; filter_wd = 3; - ch_mult = 4; - channels = 4; - pad_wd = 1; - pad_ht = 1; - stride_wd = 1; - stride_ht = 1; + ch_mult = 1; + channels = 128; + pad_wd = 0; + pad_ht = 0; + stride_wd = 2; + stride_ht = 2; + break; + case 9: // (ch_mult 1, (channels % 16) = 0), filter (3,3), pad (0,0) stride (2,2) + input_wd = 6; + input_ht = 6; + filter_ht = 3; + filter_wd = 3; + ch_mult = 1; + channels = 16; + pad_wd = 0; + pad_ht = 0; + stride_wd = 2; + stride_ht = 2; + break; + default: + input_wd = 6; + input_ht = 6; + filter_ht = 3; + filter_wd = 3; + ch_mult = 1; + channels = 16; + stride_wd = rand() % 2 + 1; + stride_ht = stride_wd; + pad_wd = stride_wd == 1 ? 0 : rand() % 2; + pad_ht = pad_wd; + printf("stride(%d), pad (%d)\t", stride_wd, pad_wd); break; } uint16_t out_wd = (input_wd - filter_wd + 1) / stride_wd; uint16_t out_ht = (input_ht - filter_ht + 1) / stride_ht; + if (itr == 9) { + // expect the function to handle this gracefully + out_wd += 1; + out_ht += 1; + } int in_size = input_wd * input_ht * channels; int out_size = out_wd * out_ht * channels * ch_mult; int filter_size = filter_wd * filter_ht * channels * ch_mult + 4; @@ -210,9 +241,16 @@ void esp_nn_depthwise_conv_s8_test() out_mult[i] = 0x7eb0e200 + rand() % 50; } - int scratch_buf_size = esp_nn_get_depthwise_conv_scratch_size(input_wd, input_ht, - channels, ch_mult, - filter_wd, filter_ht); + data_dims_t input_dims = {.width = input_wd, .height = input_ht, .channels = channels, 1}; + data_dims_t output_dims = {.width = out_wd, .height = out_ht, .channels = channels * ch_mult, 1}; + data_dims_t filter_dims = {.width = filter_wd, .height = filter_ht, 0, 0}; + dw_conv_params_t conv_params = {.in_offset = input_offset, .out_offset = out_offset, .ch_mult = ch_mult, + .stride = {stride_wd, stride_ht}, .padding = {pad_wd, pad_ht}, + .dilation = {0, 0}, .activation = {activation_min, activation_max}}; + quant_data_t quant_data = {.shift = out_shift, .mult = out_mult}; + + int scratch_buf_size = esp_nn_get_depthwise_conv_scratch_size(&input_dims, &filter_dims, + &output_dims, &conv_params); if (scratch_buf_size > 0) { #if IDF_HEAP_CAPS scratch_buf = heap_caps_malloc(scratch_buf_size + 32, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); @@ -234,11 +272,8 @@ void esp_nn_depthwise_conv_s8_test() } /* C function */ - esp_nn_depthwise_conv_s8_ansi(input, input_wd, input_ht, channels, input_offset, - pad_wd, pad_ht, stride_wd, stride_ht, ch_mult, - filter_data + 4, filter_wd, filter_ht, - bias + 1, out_data_c, out_wd, out_ht, out_offset, out_shift, - out_mult, activation_min, activation_max); + esp_nn_depthwise_conv_s8_ansi(&input_dims, input, &filter_dims, filter_data + 4, + bias + 1, &output_dims, out_data_c, &conv_params, &quant_data); if (itr == 0) { profile_c_end(); @@ -246,11 +281,8 @@ void esp_nn_depthwise_conv_s8_test() } /* Optimized function */ - esp_nn_depthwise_conv_s8(input, input_wd, input_ht, channels, input_offset, - pad_wd, pad_ht, stride_wd, stride_ht, ch_mult, - filter_data + 4, filter_wd, filter_ht, - bias + 1, out_data_opt, out_wd, out_ht, out_offset, out_shift, - out_mult, activation_min, activation_max); + esp_nn_depthwise_conv_s8(&input_dims, input, &filter_dims, filter_data + 4, + bias + 1, &output_dims, out_data_opt, &conv_params, &quant_data); if (itr == 0) { /* disable profiler */ @@ -479,8 +511,16 @@ void esp_nn_conv_s8_test() out_mult[i] = 0x7f67f4f8 + rand() % 50; } - int scratch_buf_size = esp_nn_get_conv_scratch_size(in_wd, in_ht, in_channels, - out_channels, filter_wd, filter_ht); + data_dims_t input_dims = {.width = in_wd, .height = in_ht, .channels = in_channels, 1}; + data_dims_t output_dims = {.width = out_wd, .height = out_ht, .channels = out_channels, 1}; + data_dims_t filter_dims = {.width = filter_wd, .height = filter_ht, 0, 0}; + conv_params_t conv_params = {.in_offset = input_offset, .out_offset = out_offset, + .stride = {stride_wd, stride_ht}, .padding = {pad_wd, pad_ht}, + .dilation = {0, 0}, .activation = {activation_min, activation_max}}; + quant_data_t quant_data = {.shift = out_shift, .mult = out_mult}; + + int scratch_buf_size = esp_nn_get_conv_scratch_size(&input_dims, &filter_dims, + &output_dims, &conv_params); if (scratch_buf_size > 0) { #if IDF_HEAP_CAPS void *scratch_buf = heap_caps_malloc(scratch_buf_size + 32, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); @@ -502,11 +542,8 @@ void esp_nn_conv_s8_test() } /* C function */ - esp_nn_conv_s8_ansi(input, in_wd, in_ht, in_channels, input_offset, - pad_wd, pad_ht, stride_wd, stride_ht, - filter_data + 2, filter_wd, filter_ht, bias, - out_data_c, out_wd, out_ht, out_channels, out_offset, out_shift, - out_mult, activation_min, activation_max); + esp_nn_conv_s8_ansi(&input_dims, input, &filter_dims, filter_data + 2, + bias, &output_dims, out_data_c, &conv_params, &quant_data); if (itr == 0) { profile_c_end(); @@ -514,11 +551,8 @@ void esp_nn_conv_s8_test() } /* Optimized function */ - esp_nn_conv_s8(input, in_wd, in_ht, in_channels, input_offset, - pad_wd, pad_ht, stride_wd, stride_ht, - filter_data + 2, filter_wd, filter_ht, bias, - out_data_opt, out_wd, out_ht, out_channels, out_offset, out_shift, - out_mult, activation_min, activation_max); + esp_nn_conv_s8(&input_dims, input, &filter_dims, filter_data + 2, + bias, &output_dims, out_data_opt, &conv_params, &quant_data); if (itr == 0) { /* disable profiler */ diff --git a/code/components/esp-nn_20220716.zip b/code/components/esp-nn_20220716.zip new file mode 100644 index 0000000000000000000000000000000000000000..53c7bef26cf4846723ba94f3e44375f11c0045be GIT binary patch literal 126540 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 XqgYIYIzIhl+ewC+qS(0=$Ca>1k|S2 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 literal 0 HcmV?d00001 diff --git a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp index 72bcd63b..a3d47753 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp +++ b/code/components/jomjol_flowcontroll/ClassFlowCNNGeneral.cpp @@ -756,7 +756,7 @@ bool ClassFlowCNNGeneral::doNeuralNetwork(string time) _fit = _val + _valminus; } - if (result > 10) + if (result >= 10) result = result - 10; if (result < 0) result = result + 10; diff --git a/code/components/tflite-lib/CMakeLists.txt b/code/components/tflite-lib/CMakeLists.txt index eed31a57..ab666ce0 100644 --- a/code/components/tflite-lib/CMakeLists.txt +++ b/code/components/tflite-lib/CMakeLists.txt @@ -25,7 +25,8 @@ list(REMOVE_ITEM srcs_kernels "${tfmicro_kernels_dir}/depthwise_conv.cc" "${tfmicro_kernels_dir}/fully_connected.cc" "${tfmicro_kernels_dir}/mul.cc" - "${tfmicro_kernels_dir}/pooling.cc") + "${tfmicro_kernels_dir}/pooling.cc" + "${tfmicro_kernels_dir}/softmax.cc") FILE(GLOB esp_nn_kernels "${tfmicro_kernels_dir}/esp_nn/*.cc") @@ -38,6 +39,8 @@ set(lib_srcs "${tflite_dir}/kernels/kernel_util.cc" "${tflite_dir}/micro/memory_planner/greedy_memory_planner.cc" "${tflite_dir}/micro/memory_planner/linear_memory_planner.cc" + "${tflite_dir}/micro/arena_allocator/recording_simple_memory_allocator.cc" + "${tflite_dir}/micro/arena_allocator/simple_memory_allocator.cc" "${tflite_dir}/c/common.cc" "${tflite_dir}/core/api/error_reporter.cc" "${tflite_dir}/core/api/flatbuffer_conversions.cc" diff --git a/code/components/tflite-lib/tensorflow/lite/builtin_ops.h b/code/components/tflite-lib/tensorflow/lite/builtin_ops.h index 19ce3e2c..67014928 100644 --- a/code/components/tflite-lib/tensorflow/lite/builtin_ops.h +++ b/code/components/tflite-lib/tensorflow/lite/builtin_ops.h @@ -179,6 +179,8 @@ typedef enum { kTfLiteBuiltinMultinomial = 149, kTfLiteBuiltinGelu = 150, kTfLiteBuiltinDynamicUpdateSlice = 151, + kTfLiteBuiltinRelu0To1 = 152, + kTfLiteBuiltinUnsortedSegmentProd = 153, } TfLiteBuiltinOperator; #ifdef __cplusplus diff --git a/code/components/tflite-lib/tensorflow/lite/c/builtin_op_data.h b/code/components/tflite-lib/tensorflow/lite/c/builtin_op_data.h index 7f160972..b8fdb7d1 100644 --- a/code/components/tflite-lib/tensorflow/lite/c/builtin_op_data.h +++ b/code/components/tflite-lib/tensorflow/lite/c/builtin_op_data.h @@ -518,6 +518,9 @@ typedef struct { bool approximate; } TfLiteGeluParams; +typedef struct { + int num_segments; +} TfLiteUnsortedSegmentProdParams; #ifdef __cplusplus } // extern "C" #endif // __cplusplus diff --git a/code/components/tflite-lib/tensorflow/lite/c/c_api_types.h b/code/components/tflite-lib/tensorflow/lite/c/c_api_types.h index d2524969..d947213b 100644 --- a/code/components/tflite-lib/tensorflow/lite/c/c_api_types.h +++ b/code/components/tflite-lib/tensorflow/lite/c/c_api_types.h @@ -113,7 +113,13 @@ typedef struct TfLiteQuantizationParams { } TfLiteQuantizationParams; // -------------------------------------------------------------------------- -// Opaque types used by c_api_opaque.h. +// Opaque types used by c_api.h, c_api_opaque.h and common.h. + +// TfLiteOpaqueContext is an opaque version of TfLiteContext; +typedef struct TfLiteOpaqueContext TfLiteOpaqueContext; + +// TfLiteOpaqueNode is an opaque version of TfLiteNode; +typedef struct TfLiteOpaqueNode TfLiteOpaqueNode; // TfLiteOpaqueTensor is an opaque version of TfLiteTensor; typedef struct TfLiteOpaqueTensor TfLiteOpaqueTensor; diff --git a/code/components/tflite-lib/tensorflow/lite/c/common.cc b/code/components/tflite-lib/tensorflow/lite/c/common.cc index 956e9d69..8548424d 100644 --- a/code/components/tflite-lib/tensorflow/lite/c/common.cc +++ b/code/components/tflite-lib/tensorflow/lite/c/common.cc @@ -14,13 +14,33 @@ limitations under the License. ==============================================================================*/ #include "tensorflow/lite/c/common.h" + #include "tensorflow/lite/c/c_api_types.h" +#ifdef TF_LITE_TENSORFLOW_PROFILER +#include + +#include "tensorflow/lite/core/macros.h" +#include "tensorflow/lite/tensorflow_profiler_logger.h" +#endif #ifndef TF_LITE_STATIC_MEMORY #include #include #endif // TF_LITE_STATIC_MEMORY +#ifdef TF_LITE_TENSORFLOW_PROFILER +namespace tflite { +// Use weak symbols here (even though they are guarded by macros) to avoid +// build breakage when building a benchmark requires TFLite runs. The main +// benchmark library should have tensor_profiler_logger dependency. +TFLITE_ATTRIBUTE_WEAK void OnTfLiteTensorAlloc(TfLiteTensor* tensor, + size_t num_bytes); + +TFLITE_ATTRIBUTE_WEAK void OnTfLiteTensorDealloc(TfLiteTensor* tensor); +} // namespace tflite + +#endif // TF_LITE_TENSORFLOW_PROFILER + extern "C" { size_t TfLiteIntArrayGetSizeInBytes(int size) { @@ -99,7 +119,12 @@ void TfLiteFloatArrayFree(TfLiteFloatArray* a) { free(a); } void TfLiteTensorDataFree(TfLiteTensor* t) { if (t->allocation_type == kTfLiteDynamic || t->allocation_type == kTfLitePersistentRo) { - free(t->data.raw); + if (t->data.raw) { +#ifdef TF_LITE_TENSORFLOW_PROFILER + tflite::OnTfLiteTensorDealloc(t); +#endif + free(t->data.raw); + } } t->data.raw = nullptr; } @@ -161,7 +186,7 @@ void TfLiteTensorFree(TfLiteTensor* t) { t->dims = nullptr; if (t->dims_signature) { - TfLiteIntArrayFree((TfLiteIntArray *) t->dims_signature); + TfLiteIntArrayFree((TfLiteIntArray*)t->dims_signature); } t->dims_signature = nullptr; @@ -191,16 +216,12 @@ void TfLiteTensorReset(TfLiteType type, const char* name, TfLiteIntArray* dims, } TfLiteStatus TfLiteTensorCopy(const TfLiteTensor* src, TfLiteTensor* dst) { - if (!src || !dst) - return kTfLiteOk; - if (src->bytes != dst->bytes) - return kTfLiteError; - if (src == dst) - return kTfLiteOk; + if (!src || !dst) return kTfLiteOk; + if (src->bytes != dst->bytes) return kTfLiteError; + if (src == dst) return kTfLiteOk; dst->type = src->type; - if (dst->dims) - TfLiteIntArrayFree(dst->dims); + if (dst->dims) TfLiteIntArrayFree(dst->dims); dst->dims = TfLiteIntArrayCopy(src->dims); memcpy(dst->data.raw, src->data.raw, src->bytes); dst->buffer_handle = src->buffer_handle; @@ -218,8 +239,17 @@ void TfLiteTensorRealloc(size_t num_bytes, TfLiteTensor* tensor) { // TODO(b/145340303): Tensor data should be aligned. if (!tensor->data.raw) { tensor->data.raw = (char*)malloc(num_bytes); +#ifdef TF_LITE_TENSORFLOW_PROFILER + tflite::OnTfLiteTensorAlloc(tensor, num_bytes); +#endif } else if (num_bytes > tensor->bytes) { +#ifdef TF_LITE_TENSORFLOW_PROFILER + tflite::OnTfLiteTensorDealloc(tensor); +#endif tensor->data.raw = (char*)realloc(tensor->data.raw, num_bytes); +#ifdef TF_LITE_TENSORFLOW_PROFILER + tflite::OnTfLiteTensorAlloc(tensor, num_bytes); +#endif } tensor->bytes = num_bytes; } diff --git a/code/components/tflite-lib/tensorflow/lite/c/common.h b/code/components/tflite-lib/tensorflow/lite/c/common.h index 6a109e1e..8b8ffbe8 100644 --- a/code/components/tflite-lib/tensorflow/lite/c/common.h +++ b/code/components/tflite-lib/tensorflow/lite/c/common.h @@ -173,9 +173,9 @@ void TfLiteFloatArrayFree(TfLiteFloatArray* a); } \ } while (false) #else // TF_LITE_STRIP_ERROR_STRINGS -#define UNUSED(...) (void)sizeof(#__VA_ARGS__) -#define TF_LITE_KERNEL_LOG(context, ...) UNUSED(__VA_ARGS__) -#define TF_LITE_MAYBE_KERNEL_LOG(context, ...) UNUSED(__VA_ARGS__) +#define ARGS_UNUSED(...) (void)sizeof(#__VA_ARGS__) +#define TF_LITE_KERNEL_LOG(context, ...) ARGS_UNUSED(__VA_ARGS__) +#define TF_LITE_MAYBE_KERNEL_LOG(context, ...) ARGS_UNUSED(__VA_ARGS__) #endif // TF_LITE_STRIP_ERROR_STRINGS // Check whether value is true, and if not return kTfLiteError from @@ -842,6 +842,32 @@ typedef struct TfLiteContext { size_t* bytes); } TfLiteContext; +// `TfLiteRegistrationExternal` is an external version of `TfLiteRegistration` +// for C API which doesn't use internal types (such as `TfLiteContext`) but only +// uses stable API types (such as `TfLiteOpaqueContext`). The purpose of each +// field is the exactly the same as with `TfLiteRegistration`. +typedef struct TfLiteRegistrationExternal { + // Custom op name. + const char* custom_name; + + // The version of the op. The verion should be higher than 0. + const int version; + + // Initializes the op from serialized data. + void* (*init)(TfLiteOpaqueContext* context, const char* buffer, + size_t length); + + // The pointer `buffer` is the data previously returned by an init invocation. + void (*free)(TfLiteOpaqueContext* context, void* buffer); + + // Called when the inputs that this node depends on have been resized. + TfLiteStatus (*prepare)(TfLiteOpaqueContext* context, TfLiteOpaqueNode* node); + + // Called when the node is executed. (should read node->inputs and output to + // node->outputs). + TfLiteStatus (*invoke)(TfLiteOpaqueContext* context, TfLiteOpaqueNode* node); +} TfLiteRegistrationExternal; + typedef struct TfLiteRegistration { // Initializes the op from serialized data. // Called only *once* for the lifetime of the op, so any one-time allocations @@ -903,8 +929,31 @@ typedef struct TfLiteRegistration { // Note: It is the responsibility of the registration binder to set this // properly. int version; + + // The external version of `TfLiteRegistration`. Since we can't use internal + // types (such as `TfLiteContext`) for C API to maintain ABI stability. + // C API user will provide `TfLiteRegistrationExternal` to implement custom + // ops. We keep it inside of `TfLiteRegistration` and use it to route + // callbacks properly. + TfLiteRegistrationExternal* registration_external; } TfLiteRegistration; +// Old version of `TfLiteRegistration` to maintain binary backward +// compatibility. +// WARNING: This structure is deprecated / not an official part of the API. +// It should be only used for binary backward compatibility. +typedef struct TfLiteRegistration_V1 { + void* (*init)(TfLiteContext* context, const char* buffer, size_t length); + void (*free)(TfLiteContext* context, void* buffer); + TfLiteStatus (*prepare)(TfLiteContext* context, TfLiteNode* node); + TfLiteStatus (*invoke)(TfLiteContext* context, TfLiteNode* node); + const char* (*profiling_string)(const TfLiteContext* context, + const TfLiteNode* node); + int32_t builtin_code; + const char* custom_name; + int version; +} TfLiteRegistration_V1; + // The flags used in `TfLiteDelegate`. Note that this is a bitmask, so the // values should be 1, 2, 4, 8, ...etc. typedef enum TfLiteDelegateFlags { diff --git a/code/components/tflite-lib/tensorflow/lite/core/api/flatbuffer_conversions.cc b/code/components/tflite-lib/tensorflow/lite/core/api/flatbuffer_conversions.cc index e92d754f..5175d903 100644 --- a/code/components/tflite-lib/tensorflow/lite/core/api/flatbuffer_conversions.cc +++ b/code/components/tflite-lib/tensorflow/lite/core/api/flatbuffer_conversions.cc @@ -836,6 +836,16 @@ TfLiteStatus ParseOpDataTfLite(const Operator* op, BuiltinOperator op_type, *builtin_data = params.release(); return kTfLiteOk; } + case BuiltinOperator_UNSORTED_SEGMENT_PROD: { + auto params = safe_allocator.Allocate(); + TF_LITE_ENSURE(error_reporter, params != nullptr); + if (const auto* unsorted_segment_prod_params = + op->builtin_options_as_UnsortedSegmentProdOptions()) { + params->num_segments = unsorted_segment_prod_params->num_segments(); + } + *builtin_data = params.release(); + return kTfLiteOk; + } // Below are the ops with no builtin_data structure. // TODO(aselle): Implement call in BuiltinOptions, but nullptrs are // ok for now, since there is no call implementation either. @@ -848,6 +858,7 @@ TfLiteStatus ParseOpDataTfLite(const Operator* op, BuiltinOperator op_type, case BuiltinOperator_MATRIX_DIAG: case BuiltinOperator_MATRIX_SET_DIAG: case BuiltinOperator_RELU_N1_TO_1: + case BuiltinOperator_RELU_0_TO_1: case BuiltinOperator_SELECT: case BuiltinOperator_SELECT_V2: case BuiltinOperator_SLICE: diff --git a/code/components/tflite-lib/tensorflow/lite/core/api/op_resolver.h b/code/components/tflite-lib/tensorflow/lite/core/api/op_resolver.h index 49ac778e..cec1f2dd 100644 --- a/code/components/tflite-lib/tensorflow/lite/core/api/op_resolver.h +++ b/code/components/tflite-lib/tensorflow/lite/core/api/op_resolver.h @@ -23,6 +23,16 @@ limitations under the License. #include "tensorflow/lite/core/api/error_reporter.h" #include "tensorflow/lite/schema/schema_generated.h" +// Opaque type similar to TfLiteDelegate / TfLiteOpaqueDelegate. +// This is used for cases (e.g. when using "TF Lite with Google Play Services") +// where the TF Lite runtime might be built using a newer (or older) +// version of the TF Lite sources than the app, and hence might have a +// different definition of the TfLiteDelegate type. TF Lite APIs use +// TfLiteOpaqueDelegate rather than TfLiteDelegate when they want to +// refer to a delegate defined with that potentially different version +// of the TfLiteDelegate type. +struct TfLiteOpaqueDelegateStruct; + namespace tflite { /// Abstract interface that returns TfLiteRegistrations given op codes or custom @@ -37,8 +47,10 @@ class OpResolver { virtual const TfLiteRegistration* FindOp(const char* op, int version) const = 0; + // Represents a sequence of delegates. using TfLiteDelegatePtrVector = std::vector>; + // Returns optional delegates for resolving and handling ops in the flatbuffer // model. This may be used in addition to the standard TfLiteRegistration // lookup for graph resolution. @@ -47,16 +59,55 @@ class OpResolver { return {}; } - // Represent a function that creates a TfLite delegate instance. + // Represents a function that creates a TfLite delegate instance. using TfLiteDelegateCreator = std::function( int /*num_threads*/)>; + + // Represents a sequence of delegate creator functions. using TfLiteDelegateCreators = std::vector; + // Returns a vector of delegate creators to create optional delegates for // resolving and handling ops in the flatbuffer model. This may be used in // addition to the standard TfLiteRegistration lookup for graph resolution. + // + // Note that this method is not used (will not be called) if you are using + // TF Lite in Google Play Services; the GetOpaqueDelegateCreators method + // (see below) is used for that case. virtual TfLiteDelegateCreators GetDelegateCreators() const { return {}; } + // TODO(b/202712825): it would be nice if we could avoid the need for separate + // "opaque" types & methods for use only with TF Lite in Google Play Services. + + // Represents an opaque delegate instance. + // WARNING: Experimental interface, subject to change. + using TfLiteOpaqueDelegatePtr = + std::unique_ptr; + + // Represents a function that creates an opaque delegate instance. + // WARNING: Experimental interface, subject to change. + using TfLiteOpaqueDelegateCreator = + std::function; + + // Represents a sequence of opaque delegate creator functions. + // WARNING: Experimental interface, subject to change. + using TfLiteOpaqueDelegateCreators = std::vector; + + // Returns a vector of opaque delegate creators to create optional opaque + // delegates for resolving and handling ops in the flatbuffer model. This may + // be used in addition to the standard TfLiteRegistration lookup for graph + // resolution. + // + // Note that this method will be called only if you are using TF Lite in + // Google Play Services; if you are using regular TF Lite, GetDelegateCreators + // (see above) is used instead. + // + // WARNING: Experimental interface, subject to change. + virtual TfLiteOpaqueDelegateCreators GetOpaqueDelegateCreators() const { + return {}; + } + virtual ~OpResolver() {} private: diff --git a/code/components/tflite-lib/tensorflow/lite/kernels/internal/reference/hard_swish.h b/code/components/tflite-lib/tensorflow/lite/kernels/internal/reference/hard_swish.h index cda1b5cf..b1204cc5 100644 --- a/code/components/tflite-lib/tensorflow/lite/kernels/internal/reference/hard_swish.h +++ b/code/components/tflite-lib/tensorflow/lite/kernels/internal/reference/hard_swish.h @@ -23,9 +23,9 @@ namespace tflite { namespace reference_ops { inline int16_t SaturatingLeftShift(int16_t value, int amount) { - int32_t result = static_cast(value) * (1 << amount); - result = std::min(result, std::numeric_limits::max()); - result = std::max(result, std::numeric_limits::min()); + int64_t result = static_cast(value) * (1 << amount); + result = std::min(result, std::numeric_limits::max()); + result = std::max(result, std::numeric_limits::min()); return result; } diff --git a/code/components/tflite-lib/tensorflow/lite/kernels/internal/runtime_shape.h b/code/components/tflite-lib/tensorflow/lite/kernels/internal/runtime_shape.h index 13693643..c2678b57 100644 --- a/code/components/tflite-lib/tensorflow/lite/kernels/internal/runtime_shape.h +++ b/code/components/tflite-lib/tensorflow/lite/kernels/internal/runtime_shape.h @@ -27,6 +27,11 @@ class RuntimeShape { public: RuntimeShape& operator=(RuntimeShape const&) = delete; + // RuntimeShape in TFLM supports up to 5 dimensions. + // The name kMaxSmallSize comes from the same file of the upstream + // tensorflow lite repo and need to be kept the same for max reuse. + static constexpr int kMaxSmallSize = 5; + RuntimeShape() : size_(0) {} explicit RuntimeShape(int dimensions_count) : size_(dimensions_count) {} @@ -104,11 +109,9 @@ class RuntimeShape { sizeof(int32_t) * shape.DimensionsCount()); } - // A maximum of 4 dimensions are supported on TFLM. - static constexpr int kMaxSize = 5; int32_t size_; union { - int32_t dims_[kMaxSize]; + int32_t dims_[kMaxSmallSize]; }; }; diff --git a/code/components/tflite-lib/tensorflow/lite/kernels/internal/types.h b/code/components/tflite-lib/tensorflow/lite/kernels/internal/types.h index 77644bc0..c44ba48e 100644 --- a/code/components/tflite-lib/tensorflow/lite/kernels/internal/types.h +++ b/code/components/tflite-lib/tensorflow/lite/kernels/internal/types.h @@ -974,11 +974,11 @@ struct StridedSliceParams { int8_t strides_count; int32_t strides[5]; - int16_t begin_mask; - int16_t ellipsis_mask; - int16_t end_mask; - int16_t new_axis_mask; - int16_t shrink_axis_mask; + uint16_t begin_mask; + uint16_t ellipsis_mask; + uint16_t end_mask; + uint16_t new_axis_mask; + uint16_t shrink_axis_mask; }; struct TanhParams { diff --git a/code/components/tflite-lib/tensorflow/lite/kernels/kernel_util.h b/code/components/tflite-lib/tensorflow/lite/kernels/kernel_util.h index 22689436..ed3a566f 100644 --- a/code/components/tflite-lib/tensorflow/lite/kernels/kernel_util.h +++ b/code/components/tflite-lib/tensorflow/lite/kernels/kernel_util.h @@ -308,7 +308,7 @@ TfLiteStatus CalculateShapeForBroadcast(TfLiteContext* context, const TfLiteTensor* input3, TfLiteIntArray** output_shape); -// Return the size of given type in bytes. Return 0 in in case of string. +// Return the size of given type in bytes. Return 0 in case of string. int TfLiteTypeGetSize(TfLiteType type); // Whether the current platform is mobile (Android or iOS). diff --git a/code/components/tflite-lib/tensorflow/lite/micro/ibuffer_allocator.h b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h similarity index 95% rename from code/components/tflite-lib/tensorflow/lite/micro/ibuffer_allocator.h rename to code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h index 3767cb9f..b92d6b2d 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/ibuffer_allocator.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h @@ -12,8 +12,8 @@ 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. ==============================================================================*/ -#ifndef TENSORFLOW_LITE_MICRO_IBUFFER_ALLOCATOR_H_ -#define TENSORFLOW_LITE_MICRO_IBUFFER_ALLOCATOR_H_ +#ifndef TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_IBUFFER_ALLOCATOR_H_ +#define TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_IBUFFER_ALLOCATOR_H_ #include #include @@ -97,4 +97,4 @@ class INonPersistentBufferAllocator { } // namespace tflite -#endif // TENSORFLOW_LITE_MICRO_IBUFFER_ALLOCATOR_H_ +#endif // TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_IBUFFER_ALLOCATOR_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.cc b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.cc new file mode 100644 index 00000000..0f75d286 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.cc @@ -0,0 +1,165 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#include "tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h" + +#include "tensorflow/lite/micro/memory_helpers.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" + +namespace tflite { + +NonPersistentArenaBufferAllocator::NonPersistentArenaBufferAllocator( + uint8_t* buffer, size_t buffer_size) + : buffer_head_(buffer), + buffer_tail_(buffer + buffer_size), + head_temp_(buffer), + next_temp_(buffer) {} + +NonPersistentArenaBufferAllocator::~NonPersistentArenaBufferAllocator() {} + +// Allocates a temporary buffer. This buffer is not resizable. +uint8_t* NonPersistentArenaBufferAllocator::AllocateTemp(size_t size, + size_t alignment) { + uint8_t* const aligned_result = AlignPointerUp(next_temp_, alignment); + const size_t available_memory = buffer_tail_ - aligned_result; + if (available_memory < size) { + MicroPrintf( + "Failed to allocate temp memory. Requested: %u, " + "available %u, missing: %u", + size, available_memory, size - available_memory); + return nullptr; + } + next_temp_ = aligned_result + size; + temp_buffer_ptr_check_sum_ ^= reinterpret_cast(aligned_result); + temp_buffer_count_++; + return aligned_result; +} + +// Signals that a temporary buffer is no longer needed. +void NonPersistentArenaBufferAllocator::DeallocateTemp(uint8_t* temp_buf) { + temp_buffer_ptr_check_sum_ ^= reinterpret_cast(temp_buf); + temp_buffer_count_--; +} + +// Returns true if all temporary buffers are already deallocated. +bool NonPersistentArenaBufferAllocator::IsAllTempDeallocated() { + if (temp_buffer_count_ != 0 || temp_buffer_ptr_check_sum_ != 0) { + MicroPrintf( + "Number of allocated temp buffers: %d. Checksum passing status: %d", + temp_buffer_count_, !temp_buffer_ptr_check_sum_); + return false; + } + return true; +} + +// Signals that all temporary allocations can be reclaimed. TFLM calls this +// API when it knows that all temporary buffers that it requested has been +// deallocated. The goal of API is to facilitate implementations of +// INonPersistentBufferAllocator can reuse buffer with some reasonable +// complexity. +TfLiteStatus NonPersistentArenaBufferAllocator::ResetTempAllocations() { + if (!IsAllTempDeallocated()) { + MicroPrintf( + "All temp buffers must be freed before calling ResetTempAllocations()"); + return kTfLiteError; + } + next_temp_ = head_temp_; + return kTfLiteOk; +} + +// Returns a buffer that is resizable viable ResizeBuffer(). +uint8_t* NonPersistentArenaBufferAllocator::AllocateResizableBuffer( + size_t size, size_t alignment) { + // Only supports one resizable buffer, which starts at the buffer head. + uint8_t* expected_resizable_buf = AlignPointerUp(buffer_head_, alignment); + + if (head_temp_ != expected_resizable_buf) { + MicroPrintf( + "Cannot allocate a new resizable buffer when one is already allocated"); + return nullptr; + } + + if (ResizeBuffer(expected_resizable_buf, size, alignment) == kTfLiteOk) { + return expected_resizable_buf; + } + return nullptr; +} + +// Resizes a buffer that is previously returned by the AllocateResizableBuffer. +// Note that ResizeBuffer(old_resizable_buf, 0, 1) effectively deallocates +// a previous allocated resizable buffer. +TfLiteStatus NonPersistentArenaBufferAllocator::ResizeBuffer( + uint8_t* resizable_buf, size_t size, size_t alignment) { + // Only supports one resizable buffer, which starts at the buffer head. + uint8_t* expect_resizable_buf = AlignPointerUp(buffer_head_, alignment); + if (resizable_buf != expect_resizable_buf) { + MicroPrintf("Internal error: buffer is not resizable"); + return kTfLiteError; + } + if (head_temp_ != next_temp_) { + MicroPrintf("ResetTempAllocations() is not called before ResizeBuffer()."); + return kTfLiteError; + } + + const size_t available_memory = buffer_tail_ - expect_resizable_buf; + if (available_memory < size) { + MicroPrintf( + "Failed to resize buffer. Requested: %u, available %u, missing: %u", + size, available_memory, size - available_memory); + return kTfLiteError; + } + head_temp_ = expect_resizable_buf + size; + next_temp_ = head_temp_; + + return kTfLiteOk; +} + +// Frees up the memory occupied by the resizable buffer. +TfLiteStatus NonPersistentArenaBufferAllocator::DeallocateResizableBuffer( + uint8_t* resizable_buf) { + return ResizeBuffer(resizable_buf, 0, 1); +} + +// Returns a pointer pointing to the start of the overlay memory, which is +// used for activation tensors and scratch buffers by kernels at Invoke stage. +uint8_t* NonPersistentArenaBufferAllocator::GetOverlayMemoryAddress() const { + return buffer_head_; +} + +// Reserves the size of the overlay memory. This overlay is reserved for the +// kernels at Invoke stage. This is referred to as the overlay because before +// Invoket state, the same memory can be used for temp buffers. The layout of +// the memory is planned by the memory planner separately at Invoke stage. +TfLiteStatus +NonPersistentArenaBufferAllocator::ReserveNonPersistentOverlayMemory( + size_t size, size_t alignment) { + uint8_t* expect_resizable_buf = AlignPointerUp(buffer_head_, alignment); + return ResizeBuffer(expect_resizable_buf, size, alignment); +} + +// Returns the size of non-persistent buffer in use. +size_t NonPersistentArenaBufferAllocator::GetNonPersistentUsedBytes() const { + return (next_temp_ - buffer_head_); +} + +// Returns the number of bytes available with a given alignment. This number +// takes in account any temporary allocations. +size_t NonPersistentArenaBufferAllocator::GetAvailableMemory( + size_t alignment) const { + uint8_t* const aligned_temp = AlignPointerUp(next_temp_, alignment); + uint8_t* const aligned_tail = AlignPointerDown(buffer_tail_, alignment); + return aligned_tail - aligned_temp; +} + +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h new file mode 100644 index 00000000..aad41d3f --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.h @@ -0,0 +1,104 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#ifndef TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_NON_PERSISTENT_ARENA_BUFFER_ALLOCATOR_H_ +#define TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_NON_PERSISTENT_ARENA_BUFFER_ALLOCATOR_H_ + +#include +#include + +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/core/api/error_reporter.h" +#include "tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h" +#include "tensorflow/lite/micro/compatibility.h" + +namespace tflite { + +// Implement INonPersistentBufferAllocator on an arena that is dedicated for +// non-persistent buffers. +class NonPersistentArenaBufferAllocator : public INonPersistentBufferAllocator { + public: + NonPersistentArenaBufferAllocator(uint8_t* buffer, size_t buffer_size); + virtual ~NonPersistentArenaBufferAllocator(); + + // Allocates a temporary buffer. This buffer is not resizable. + uint8_t* AllocateTemp(size_t size, size_t alignment) override; + + // Signals that a temporary buffer is no longer needed. + void DeallocateTemp(uint8_t* buf) override; + + // Returns true if all temporary buffers are already deallocated. + bool IsAllTempDeallocated() override; + + // Signals that all temporary allocations can be reclaimed. TFLM calls this + // API when it knows that all temporary buffers that it requested has been + // deallocated. + TfLiteStatus ResetTempAllocations() override; + + // Returns a buffer that is resizable viable ResizeBuffer(). + uint8_t* AllocateResizableBuffer(size_t size, size_t alignment) override; + + // Resizes a buffer that is previously returned by the + // AllocateResizableBuffer. + TfLiteStatus ResizeBuffer(uint8_t* resizable_buf, size_t size, + size_t alignment) override; + + // Frees up the memory occupied by the resizable buffer. + TfLiteStatus DeallocateResizableBuffer(uint8_t* resizable_buf) override; + + // Returns a pointer pointing to the start of the overlay memory, which is + // used for activation tensors and scratch buffers by kernels at Invoke stage. + uint8_t* GetOverlayMemoryAddress() const override; + + // Reserves the size of the overlay memory. This overlay is reserved for the + // kernels at Invoke stage. This is referred to as the overlay because before + // Invoket state, the same memory can be used for temp buffers. The layout of + // the memory is planned by the memory planner separately at Invoke stage. + TfLiteStatus ReserveNonPersistentOverlayMemory(size_t size, + size_t alignment) override; + + // Returns the size of non-persistent buffer in use. + size_t GetNonPersistentUsedBytes() const override; + + // Returns the number of bytes available with a given alignment. This number + // takes in account any temporary allocations. + size_t GetAvailableMemory(size_t alignment) const override; + + TF_LITE_REMOVE_VIRTUAL_DELETE + + private: + // The memory arena that this allocator manages. + uint8_t* const buffer_head_; + uint8_t* const buffer_tail_; + + // The whole region is split into two parts: + // buffer_head_ to head_temp_ - 1 belongs to the only resizable buffer. + // head_temp_ to buffer_tail_ can be used for (non-resizable) temp buffers. + uint8_t* head_temp_; + + // next_temp_ points to the next available temp buffer allocation address and + // its range is between head_temp_ and buffer_tail_ + uint8_t* next_temp_; + + // XOR Check sum for outstanding temp buffers. + // If all temp buffers are deallocated OR no temp buffers are allocated, + // temp_buffer_ptr_check_sum_ == nullptr. + intptr_t temp_buffer_ptr_check_sum_ = 0; + // Count of outstanding temp buffers. + int temp_buffer_count_ = 0; +}; + +} // namespace tflite + +#endif // TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_NON_PERSISTENT_ARENA_BUFFER_ALLOCATOR_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.cc b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.cc new file mode 100644 index 00000000..0ccc8fb1 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.cc @@ -0,0 +1,52 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#include "tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h" + +#include "tensorflow/lite/micro/memory_helpers.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" + +namespace tflite { + +PersistentArenaBufferAllocator::PersistentArenaBufferAllocator( + uint8_t* buffer, size_t buffer_size) + : buffer_head_(buffer), + buffer_tail_(buffer + buffer_size), + tail_temp_(buffer_tail_) {} + +PersistentArenaBufferAllocator::~PersistentArenaBufferAllocator() {} + +uint8_t* PersistentArenaBufferAllocator::AllocatePersistentBuffer( + size_t size, size_t alignment) { + uint8_t* const aligned_result = + AlignPointerDown(tail_temp_ - size, alignment); + if (aligned_result < buffer_head_) { +#ifndef TF_LITE_STRIP_ERROR_STRINGS + const size_t missing_memory = buffer_head_ - aligned_result; + MicroPrintf( + "Failed to allocate tail memory. Requested: %u, " + "available %u, missing: %u", + size, size - missing_memory, missing_memory); +#endif + return nullptr; + } + tail_temp_ = aligned_result; + return aligned_result; +} + +size_t PersistentArenaBufferAllocator::GetPersistentUsedBytes() const { + return buffer_tail_ - tail_temp_; +} + +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h new file mode 100644 index 00000000..10145d72 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.h @@ -0,0 +1,59 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#ifndef TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_PERSISTENT_ARENA_BUFFER_ALLOCATOR_H_ +#define TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_PERSISTENT_ARENA_BUFFER_ALLOCATOR_H_ + +#include +#include + +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/core/api/error_reporter.h" +#include "tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h" +#include "tensorflow/lite/micro/compatibility.h" + +namespace tflite { + +// PersistentArenaBufferAllocator is an implementatation of +// IPersistentBufferAllocator interface on an arena that is dedicated for +// persistent buffers. +class PersistentArenaBufferAllocator : public IPersistentBufferAllocator { + public: + PersistentArenaBufferAllocator(uint8_t* buffer, size_t buffer_size); + virtual ~PersistentArenaBufferAllocator(); + + // Allocates persistent memory. The persistent buffer is never freed. + // Returns nullptr if errors occured. + uint8_t* AllocatePersistentBuffer(size_t size, size_t alignment) override; + + // Returns the size of all persistent allocations in bytes. + size_t GetPersistentUsedBytes() const override; + + TF_LITE_REMOVE_VIRTUAL_DELETE + private: + // The memory arena that this allocator manages. + uint8_t* const buffer_head_; + uint8_t* const buffer_tail_; + + // The whole region is split into two parts: + // tail_temp_ to buffer_tail_ contains allocated buffers; + // buffer_head_ to tail_temp_ - 1 belongs to still available spaces. + // So in essence, the allocated region grows from the bottom and emulates + // SimpleMemoryAllocator's persistent part. + uint8_t* tail_temp_; +}; + +} // namespace tflite + +#endif // TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_PERSISTENT_ARENA_BUFFER_ALLOCATOR_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/recording_simple_memory_allocator.cc b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.cc similarity index 97% rename from code/components/tflite-lib/tensorflow/lite/micro/recording_simple_memory_allocator.cc rename to code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.cc index 6d3e72bd..0efb6512 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/recording_simple_memory_allocator.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.cc @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ -#include "tensorflow/lite/micro/recording_simple_memory_allocator.h" +#include "tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.h" #include diff --git a/code/components/tflite-lib/tensorflow/lite/micro/recording_simple_memory_allocator.h b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.h similarity index 87% rename from code/components/tflite-lib/tensorflow/lite/micro/recording_simple_memory_allocator.h rename to code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.h index a251e940..1abe43dd 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/recording_simple_memory_allocator.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.h @@ -13,11 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ -#ifndef TENSORFLOW_LITE_MICRO_RECORDING_SIMPLE_MEMORY_ALLOCATOR_H_ -#define TENSORFLOW_LITE_MICRO_RECORDING_SIMPLE_MEMORY_ALLOCATOR_H_ +#ifndef TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_RECORDING_SIMPLE_MEMORY_ALLOCATOR_H_ +#define TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_RECORDING_SIMPLE_MEMORY_ALLOCATOR_H_ +#include "tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h" #include "tensorflow/lite/micro/compatibility.h" -#include "tensorflow/lite/micro/simple_memory_allocator.h" namespace tflite { @@ -62,4 +62,4 @@ class RecordingSimpleMemoryAllocator : public SimpleMemoryAllocator { } // namespace tflite -#endif // TENSORFLOW_LITE_MICRO_RECORDING_SIMPLE_MEMORY_ALLOCATOR_H_ +#endif // TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_RECORDING_SIMPLE_MEMORY_ALLOCATOR_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/simple_memory_allocator.cc b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/simple_memory_allocator.cc similarity index 99% rename from code/components/tflite-lib/tensorflow/lite/micro/simple_memory_allocator.cc rename to code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/simple_memory_allocator.cc index e5d87afb..3e3ea4bd 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/simple_memory_allocator.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/simple_memory_allocator.cc @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ -#include "tensorflow/lite/micro/simple_memory_allocator.h" +#include "tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h" #include #include diff --git a/code/components/tflite-lib/tensorflow/lite/micro/simple_memory_allocator.h b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h similarity index 95% rename from code/components/tflite-lib/tensorflow/lite/micro/simple_memory_allocator.h rename to code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h index d88c4a3d..92d0e425 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/simple_memory_allocator.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h @@ -13,16 +13,16 @@ See the License for the specific language governing permissions and limitations under the License. ==============================================================================*/ -#ifndef TENSORFLOW_LITE_MICRO_SIMPLE_MEMORY_ALLOCATOR_H_ -#define TENSORFLOW_LITE_MICRO_SIMPLE_MEMORY_ALLOCATOR_H_ +#ifndef TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_SIMPLE_MEMORY_ALLOCATOR_H_ +#define TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_SIMPLE_MEMORY_ALLOCATOR_H_ #include #include #include "tensorflow/lite/c/common.h" #include "tensorflow/lite/core/api/error_reporter.h" +#include "tensorflow/lite/micro/arena_allocator/ibuffer_allocator.h" #include "tensorflow/lite/micro/compatibility.h" -#include "tensorflow/lite/micro/ibuffer_allocator.h" namespace tflite { @@ -147,4 +147,4 @@ class SimpleMemoryAllocator : public INonPersistentBufferAllocator, } // namespace tflite -#endif // TENSORFLOW_LITE_MICRO_SIMPLE_MEMORY_ALLOCATOR_H_ +#endif // TENSORFLOW_LITE_MICRO_ARENA_ALLOCATOR_SIMPLE_MEMORY_ALLOCATOR_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/fake_micro_context.cc b/code/components/tflite-lib/tensorflow/lite/micro/fake_micro_context.cc index 5a5ba9ab..36dd062a 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/fake_micro_context.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/fake_micro_context.cc @@ -16,10 +16,10 @@ limitations under the License. #include "tensorflow/lite/micro/fake_micro_context.h" #include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h" #include "tensorflow/lite/micro/micro_allocator.h" #include "tensorflow/lite/micro/micro_arena_constants.h" #include "tensorflow/lite/micro/micro_error_reporter.h" -#include "tensorflow/lite/micro/simple_memory_allocator.h" namespace tflite { namespace { diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/activations.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/activations.cc index c556ac64..e0b79631 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/activations.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/activations.cc @@ -24,6 +24,7 @@ limitations under the License. #include "tensorflow/lite/kernels/kernel_util.h" #include "tensorflow/lite/kernels/op_macros.h" #include "tensorflow/lite/micro/kernels/kernel_util.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" #include "tensorflow/lite/micro/micro_utils.h" namespace tflite { @@ -60,8 +61,8 @@ TfLiteStatus ReluEval(TfLiteContext* context, TfLiteNode* node) { return kTfLiteOk; } default: { - TF_LITE_KERNEL_LOG(context, "Only float32 is supported currently, got %s", - TfLiteTypeGetName(input->type)); + MicroPrintf("Only float32 is supported currently, got %s", + TfLiteTypeGetName(input->type)); return kTfLiteError; } } @@ -99,8 +100,8 @@ TfLiteStatus Relu6Eval(TfLiteContext* context, TfLiteNode* node) { return kTfLiteOk; } default: { - TF_LITE_KERNEL_LOG(context, "Only float32 is supported currently, got %s", - TfLiteTypeGetName(input->type)); + MicroPrintf("Only float32 is supported currently, got %s", + TfLiteTypeGetName(input->type)); return kTfLiteError; } } @@ -109,25 +110,11 @@ TfLiteStatus Relu6Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_RELU() { - return {/*init=*/ReluInit, - /*free=*/nullptr, - /*prepare=*/ReluPrepare, - /*invoke=*/ReluEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(ReluInit, ReluPrepare, ReluEval); } TfLiteRegistration Register_RELU6() { - return {/*init=*/Relu6Init, - /*free=*/nullptr, - /*prepare=*/Relu6Prepare, - /*invoke=*/Relu6Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Relu6Init, Relu6Prepare, Relu6Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/add.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/add.cc index 75523d14..f75db4e5 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/add.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/add.cc @@ -159,14 +159,7 @@ TfLiteStatus AddEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_ADD() { - return {/*init=*/AddInit, - /*free=*/nullptr, - /*prepare=*/AddPrepare, - /*invoke=*/AddEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(AddInit, AddPrepare, AddEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/add_n.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/add_n.cc index 5d0ab724..ce064687 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/add_n.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/add_n.cc @@ -208,14 +208,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_ADD_N() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/arg_min_max.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/arg_min_max.cc index 8217a4a0..a8aa5a48 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/arg_min_max.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/arg_min_max.cc @@ -104,25 +104,11 @@ TfLiteStatus ArgMaxEval(TfLiteContext* context, TfLiteNode* node) { } // namespace arg_min_max TfLiteRegistration Register_ARG_MAX() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/arg_min_max::ArgMaxEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, arg_min_max::ArgMaxEval); } TfLiteRegistration Register_ARG_MIN() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/arg_min_max::ArgMinEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, arg_min_max::ArgMinEval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/assign_variable.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/assign_variable.cc index e28ebebb..a770d0aa 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/assign_variable.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/assign_variable.cc @@ -95,14 +95,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_ASSIGN_VARIABLE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/batch_to_space_nd.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/batch_to_space_nd.cc index 07b680df..be82d942 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/batch_to_space_nd.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/batch_to_space_nd.cc @@ -105,14 +105,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_BATCH_TO_SPACE_ND() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_args.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_args.cc index fa333249..be2672ec 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_args.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_args.cc @@ -84,14 +84,8 @@ TfLiteStatus BroadcastArgsEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_BROADCAST_ARGS() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/BroadcastArgsPrepare, - /*invoke=*/BroadcastArgsEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, BroadcastArgsPrepare, + BroadcastArgsEval); } -} // namespace tflite \ No newline at end of file +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_to.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_to.cc index 5302faf1..63a14db2 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_to.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/broadcast_to.cc @@ -116,14 +116,8 @@ TfLiteStatus BroadcastToEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_BROADCAST_TO() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/BroadcastToPrepare, - /*invoke=*/BroadcastToEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, BroadcastToPrepare, + BroadcastToEval); } -} // namespace tflite \ No newline at end of file +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/call_once.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/call_once.cc index 4db39f7d..200242b2 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/call_once.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/call_once.cc @@ -82,14 +82,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_CALL_ONCE() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/cast.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/cast.cc index dc651a24..a1f4516b 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/cast.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/cast.cc @@ -108,14 +108,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_CAST() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/ceil.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/ceil.cc index d0a48f91..a390a735 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/ceil.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/ceil.cc @@ -67,14 +67,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace ceil TfLiteRegistration Register_CEIL() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ceil::Prepare, - /*invoke=*/ceil::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, ceil::Prepare, ceil::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/circular_buffer.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/circular_buffer.cc index bda3e66a..a66a61c5 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/circular_buffer.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/circular_buffer.cc @@ -108,14 +108,7 @@ TfLiteStatus CircularBufferEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration* Register_CIRCULAR_BUFFER() { - static TfLiteRegistration r = {/*init=*/CircularBufferInit, - /*free=*/nullptr, - /*prepare=*/CircularBufferPrepare, - /*invoke=*/CircularBufferEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + static TfLiteRegistration r = tflite::micro::RegisterOp(CircularBufferInit, CircularBufferPrepare, CircularBufferEval); return &r; } diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/comparisons.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/comparisons.cc index 925c3fb5..cff15e4d 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/comparisons.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/comparisons.cc @@ -583,69 +583,33 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { } // namespace comparisons TfLiteRegistration Register_EQUAL() { - return {/*init=*/comparisons::Init, - /*free=*/nullptr, - /*prepare=*/comparisons::Prepare, - /*invoke=*/comparisons::EqualEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(comparisons::Init, comparisons::Prepare, + comparisons::EqualEval); } TfLiteRegistration Register_NOT_EQUAL() { - return {/*init=*/comparisons::Init, - /*free=*/nullptr, - /*prepare=*/comparisons::Prepare, - /*invoke=*/comparisons::NotEqualEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(comparisons::Init, comparisons::Prepare, + comparisons::NotEqualEval); } TfLiteRegistration Register_GREATER() { - return {/*init=*/comparisons::Init, - /*free=*/nullptr, - /*prepare=*/comparisons::Prepare, - /*invoke=*/comparisons::GreaterEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(comparisons::Init, comparisons::Prepare, + comparisons::GreaterEval); } TfLiteRegistration Register_GREATER_EQUAL() { - return {/*init=*/comparisons::Init, - /*free=*/nullptr, - /*prepare=*/comparisons::Prepare, - /*invoke=*/comparisons::GreaterEqualEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(comparisons::Init, comparisons::Prepare, + comparisons::GreaterEqualEval); } TfLiteRegistration Register_LESS() { - return {/*init=*/comparisons::Init, - /*free=*/nullptr, - /*prepare=*/comparisons::Prepare, - /*invoke=*/comparisons::LessEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(comparisons::Init, comparisons::Prepare, + comparisons::LessEval); } TfLiteRegistration Register_LESS_EQUAL() { - return {/*init=*/comparisons::Init, - /*free=*/nullptr, - /*prepare=*/comparisons::Prepare, - /*invoke=*/comparisons::LessEqualEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(comparisons::Init, comparisons::Prepare, + comparisons::LessEqualEval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/concatenation.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/concatenation.cc index d727a0d5..34622c22 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/concatenation.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/concatenation.cc @@ -148,12 +148,12 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TF_LITE_ENSURE(context, input != nullptr); int num_dimensions = NumDimensions(input); - if (num_dimensions > 4) { + if (num_dimensions > RuntimeShape::kMaxSmallSize) { TF_LITE_KERNEL_LOG( context, - "Op Concatenation does not currently support num dimensions >4 " + "Op Concatenation does not currently support num dimensions > %d " "Tensor has %d dimensions.", - num_dimensions); + RuntimeShape::kMaxSmallSize, num_dimensions); return kTfLiteError; } micro_context->DeallocateTempTfLiteTensor(input); @@ -252,14 +252,8 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace concatenation TfLiteRegistration Register_CONCATENATION() { - return {/*init=*/concatenation::Init, - /*free=*/nullptr, - /*prepare=*/concatenation::Prepare, - /*invoke=*/concatenation::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(concatenation::Init, concatenation::Prepare, + concatenation::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv.cc index 0fed1223..87ea92e6 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv.cc @@ -25,6 +25,7 @@ limitations under the License. #include "tensorflow/lite/kernels/kernel_util.h" #include "tensorflow/lite/kernels/padding.h" #include "tensorflow/lite/micro/kernels/kernel_util.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" namespace tflite { namespace { @@ -67,23 +68,47 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(filter), tflite::micro::GetTensorData(filter), tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), + tflite::micro::GetOptionalTensorData(bias), tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output), tflite::micro::GetTensorShape(nullptr), nullptr); break; } case kTfLiteInt16: { - reference_integer_ops::ConvPerChannel( - ConvParamsQuantized(params, data), data.per_channel_output_multiplier, - data.per_channel_output_shift, tflite::micro::GetTensorShape(input), - tflite::micro::GetTensorData(input), - tflite::micro::GetTensorShape(filter), - tflite::micro::GetTensorData(filter), - tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), - tflite::micro::GetTensorShape(output), - tflite::micro::GetTensorData(output)); + switch (bias->type) { + case kTfLiteInt32: { + reference_integer_ops::ConvPerChannel( + ConvParamsQuantized(params, data), + data.per_channel_output_multiplier, data.per_channel_output_shift, + tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(filter), + tflite::micro::GetTensorData(filter), + tflite::micro::GetTensorShape(bias), + tflite::micro::GetOptionalTensorData(bias), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + break; + } + case kTfLiteInt64: { + reference_integer_ops::ConvPerChannel( + ConvParamsQuantized(params, data), + data.per_channel_output_multiplier, data.per_channel_output_shift, + tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(filter), + tflite::micro::GetTensorData(filter), + tflite::micro::GetTensorShape(bias), + tflite::micro::GetOptionalTensorData(bias), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + break; + } + default: + MicroPrintf("Bias type %s (%d) not supported.", + TfLiteTypeGetName(bias->type), bias->type); + return kTfLiteError; + } break; } case kTfLiteInt8: { @@ -94,14 +119,14 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(filter), tflite::micro::GetTensorData(filter), tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), + tflite::micro::GetOptionalTensorData(bias), tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output)); break; } default: - TF_LITE_KERNEL_LOG(context, "Type %s (%d) not supported.", - TfLiteTypeGetName(input->type), input->type); + MicroPrintf("Type %s (%d) not supported.", TfLiteTypeGetName(input->type), + input->type); return kTfLiteError; } return kTfLiteOk; @@ -110,14 +135,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_CONV_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/ConvPrepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, ConvPrepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv_test.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv_test.h index 38b69525..47ba8ac4 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv_test.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/conv_test.h @@ -97,6 +97,16 @@ TfLiteStatus TestConvQuantizedPerChannel( float output_scale, int output_zero_point, TfLiteConvParams* conv_params, TfLiteRegistration registration, int16_t* output_data); +TfLiteStatus TestConvQuantizedPerChannel( + int* input_dims_data, const float* input_data, int16_t* input_quantized, + float input_scale, int input_zero_point, int* filter_dims_data, + const float* filter_data, int8_t* filter_data_quantized, + int* bias_dims_data, const float* bias_data, int32_t* bias_data_quantized, + float* bias_scales, int* bias_zero_points, int* output_dims_data, + const float* expected_output_data, int16_t* expected_output_data_quantized, + float output_scale, int output_zero_point, TfLiteConvParams* conv_params, + TfLiteRegistration registration, int16_t* output_data); + } // namespace testing } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/cumsum.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/cumsum.cc index 61f7af23..eedc61fd 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/cumsum.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/cumsum.cc @@ -169,14 +169,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_CUMSUM() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/depth_to_space.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/depth_to_space.cc index cce93c9c..ec000540 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/depth_to_space.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/depth_to_space.cc @@ -136,14 +136,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_DEPTH_TO_SPACE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.cc index 8a58433a..d2468ff9 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.cc @@ -62,7 +62,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(filter), tflite::micro::GetTensorData(filter), tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), + tflite::micro::GetOptionalTensorData(bias), tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output)); break; @@ -76,7 +76,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(filter), tflite::micro::GetTensorData(filter), tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), + tflite::micro::GetOptionalTensorData(bias), tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output)); break; @@ -92,14 +92,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_DEPTHWISE_CONV_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/DepthwiseConvPrepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, DepthwiseConvPrepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.h index 7a7eb0ba..562438d7 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/depthwise_conv.h @@ -1,4 +1,4 @@ -/* Copyright 2021 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -49,6 +49,32 @@ TfLiteStatus CalculateOpDataDepthwiseConv( TfLiteStatus DepthwiseConvPrepare(TfLiteContext* context, TfLiteNode* node); +// This is the most generic TfLiteRegistration. The actual supported types may +// still be target dependent. The only requirement is that every implementation +// (reference or optimized) must define this function. +TfLiteRegistration Register_DEPTHWISE_CONV_2D(); + +#if defined(CMSIS_NN) +// Returns a TfLiteRegistration struct for kernel variant that only supports +// int8 activations and int8 weights and uses the latency optimized +// implementations. +TfLiteRegistration Register_DEPTHWISE_CONV_2D_INT8(); + +// Returns a TfLiteRegistration struct for kernel variant that only supports +// int16 activations and int8 weights and uses the latency optimized +// implementations. +TfLiteRegistration Register_DEPTHWISE_CONV_2D_INT16(); + +#else +inline TfLiteRegistration Register_DEPTHWISE_CONV_2D_INT8() { + return Register_DEPTHWISE_CONV_2D(); +} + +inline TfLiteRegistration Register_DEPTHWISE_CONV_2D_INT16() { + return Register_DEPTHWISE_CONV_2D(); +} +#endif + } // namespace tflite #endif // TENSORFLOW_LITE_MICRO_KERNELS_DEPTHWISE_CONV_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize.cc index 4438ea33..1cf7f133 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize.cc @@ -57,6 +57,13 @@ TfLiteStatus DequantizeEval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output)); break; + case kTfLiteUInt8: + reference_ops::Dequantize(data->quantization_params, + tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + break; default: MicroPrintf("Input %s, output %s not supported.", TfLiteTypeGetName(input->type), @@ -74,14 +81,8 @@ TfLiteStatus DequantizeEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_DEQUANTIZE() { - return {/*init=*/DequantizeInit, - /*free=*/nullptr, - /*prepare=*/DequantizePrepare, - /*invoke=*/DequantizeEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(DequantizeInit, DequantizePrepare, + DequantizeEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize_common.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize_common.cc index 4be5ad89..438f9cda 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize_common.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/dequantize_common.cc @@ -41,8 +41,9 @@ TfLiteStatus DequantizePrepare(TfLiteContext* context, TfLiteNode* node) { TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); TF_LITE_ENSURE(context, output != nullptr); - TF_LITE_ENSURE(context, - input->type == kTfLiteInt8 || input->type == kTfLiteInt16); + TF_LITE_ENSURE(context, input->type == kTfLiteInt8 || + input->type == kTfLiteInt16 || + input->type == kTfLiteUInt8); TF_LITE_ENSURE(context, output->type == kTfLiteFloat32); if (output->type == kTfLiteInt32) { diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/detection_postprocess.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/detection_postprocess.cc index efe57e2f..326d87b5 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/detection_postprocess.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/detection_postprocess.cc @@ -149,8 +149,6 @@ void* Init(TfLiteContext* context, const char* buffer, size_t length) { return op_data; } -void Free(TfLiteContext* context, void* buffer) {} - TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { auto* op_data = static_cast(node->user_data); @@ -802,14 +800,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration* Register_DETECTION_POSTPROCESS() { - static TfLiteRegistration r = {/*init=*/Init, - /*free=*/Free, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + static TfLiteRegistration r = tflite::micro::RegisterOp(Init, Prepare, Eval); return &r; } diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/elementwise.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/elementwise.cc index 366dd610..b1cb1dcb 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/elementwise.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/elementwise.cc @@ -1,4 +1,4 @@ -/* Copyright 2019 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,6 +16,8 @@ limitations under the License. #include #include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/kernels/internal/common.h" +#include "tensorflow/lite/kernels/internal/quantization_util.h" #include "tensorflow/lite/kernels/internal/tensor_ctypes.h" #include "tensorflow/lite/kernels/kernel_util.h" #include "tensorflow/lite/micro/kernels/kernel_util.h" @@ -27,6 +29,22 @@ namespace micro { namespace elementwise { namespace { +constexpr int kAbsNameId = 0; +constexpr int kRsrqtNameId = 1; + +const int kElementwiseInputTensor = 0; +const int kElementwiseOutputTensor = 0; + +struct OpDataAbsRsqrt { + int32_t multiplier; + int shift; + int input_offset; + int output_offset; + bool needs_rescale; + TfLiteQuantizationType input_quantization_type; + TfLiteType input_type; +}; + bool IsNumericSupportedType(const TfLiteType type) { return type == kTfLiteFloat32; } @@ -35,16 +53,40 @@ bool IsLogicalSupportedType(const TfLiteType type) { return type == kTfLiteBool; } +bool IsAbsSupportedType(const TfLiteType type) { + return type == kTfLiteFloat32 || type == kTfLiteInt8 || type == kTfLiteInt16; +} + +bool IsRsqrtSupportedType(const TfLiteType type) { + return type == kTfLiteFloat32 || type == kTfLiteInt8; +} + +inline void SetAbsOutputMultiplier(const float input_scale, + const float output_scale, + int32_t* multiplier, int* shift) { + QuantizeMultiplier(static_cast(input_scale / output_scale), + multiplier, shift); +} + +inline void SetRsqrtOutputMultiplier(const float input_scale, + const float output_scale, + int32_t* multiplier, int* shift) { + const double scale = + 1. / static_cast((std::sqrt(input_scale) * output_scale)); + QuantizeMultiplier(scale, multiplier, shift); +} + typedef bool (*IsSupportedType)(TfLiteType); template TfLiteStatus GenericPrepare(TfLiteContext* context, TfLiteNode* node) { MicroContext* micro_context = GetMicroContext(context); - TF_LITE_ENSURE_EQ(context, NumInputs(node), 1); TF_LITE_ENSURE_EQ(context, NumOutputs(node), 1); - TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); + TfLiteTensor* input = + micro_context->AllocateTempInputTensor(node, kElementwiseInputTensor); TF_LITE_ENSURE(context, input != nullptr); - TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); + TfLiteTensor* output = + micro_context->AllocateTempOutputTensor(node, kElementwiseOutputTensor); TF_LITE_ENSURE(context, output != nullptr); TF_LITE_ENSURE_TYPES_EQ(context, input->type, output->type); if (!IsSupportedType(input->type)) { @@ -58,9 +100,79 @@ TfLiteStatus GenericPrepare(TfLiteContext* context, TfLiteNode* node) { return kTfLiteOk; } +typedef bool (*IsSupportedType)(TfLiteType); +template +TfLiteStatus PrepareAbsRsqrt(TfLiteContext* context, TfLiteNode* node) { + MicroContext* micro_context = GetMicroContext(context); + TF_LITE_ENSURE_EQ(context, NumInputs(node), 1); + TF_LITE_ENSURE_EQ(context, NumOutputs(node), 1); + TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); + TF_LITE_ENSURE(context, input != nullptr); + TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); + TF_LITE_ENSURE(context, output != nullptr); + TF_LITE_ENSURE_TYPES_EQ(context, input->type, output->type); + if (!IsSupportedType(input->type)) { + TF_LITE_KERNEL_LOG(context, "Input data type %s (%d) is not supported.", + TfLiteTypeGetName(input->type), input->type); + return kTfLiteError; + } + + auto* op_data = static_cast(node->user_data); + op_data->input_type = input->type; + + // For int16 type input, we support both quantized and non-quantized + // evaluation. + if (op_nameid == kAbsNameId) { + op_data->input_quantization_type = input->quantization.type; + } + + if (input->type == kTfLiteInt8 || + (input->type == kTfLiteInt16 && + input->quantization.type != kTfLiteNoQuantization)) { + TF_LITE_ENSURE_EQ(context, input->quantization.type, + kTfLiteAffineQuantization); + TF_LITE_ENSURE_EQ(context, output->quantization.type, + kTfLiteAffineQuantization); + const auto* input_params = + reinterpret_cast(input->quantization.params); + const auto* output_params = reinterpret_cast( + output->quantization.params); + TF_LITE_ENSURE(context, input_params != nullptr); + TF_LITE_ENSURE(context, input_params->scale != nullptr); + TF_LITE_ENSURE(context, input_params->scale->size > 0); + TF_LITE_ENSURE(context, input_params->zero_point->size > 0); + TF_LITE_ENSURE(context, output_params != nullptr); + TF_LITE_ENSURE(context, output_params->scale != nullptr); + TF_LITE_ENSURE(context, output_params->scale->size > 0); + TF_LITE_ENSURE(context, output_params->zero_point->size > 0); + op_data->input_offset = input_params->zero_point->data[0]; + op_data->output_offset = output_params->zero_point->data[0]; + if (input->type == kTfLiteInt16) { + TF_LITE_ENSURE_EQ(context, op_data->input_offset, 0); + TF_LITE_ENSURE_EQ(context, op_data->output_offset, 0); + } + const float input_scale = input_params->scale->data[0]; + const float output_scale = output_params->scale->data[0]; + op_data->needs_rescale = input_scale != output_scale; + if (op_nameid == kAbsNameId && op_data->needs_rescale) { + SetAbsOutputMultiplier(input_scale, output_scale, &op_data->multiplier, + &op_data->shift); + } else if (op_nameid == kRsrqtNameId) { + SetRsqrtOutputMultiplier(input_scale, output_scale, &op_data->multiplier, + &op_data->shift); + } + } + micro_context->DeallocateTempTfLiteTensor(input); + micro_context->DeallocateTempTfLiteTensor(output); + return kTfLiteOk; +} + template -inline TfLiteStatus EvalImpl(TfLiteContext* context, TfLiteNode* node, - T func(T), TfLiteType expected_type) { +inline TfLiteStatus EvalImplQuantized( + TfLiteContext* context, TfLiteNode* node, + T func(TfLiteContext*, TfLiteNode*, T), + TfLiteStatus validate_input_func(TfLiteContext*, TfLiteNode*, T), + TfLiteType expected_type) { const TfLiteEvalTensor* input = tflite::micro::GetEvalInput(context, node, 0); TfLiteEvalTensor* output = tflite::micro::GetEvalOutput(context, node, 0); TF_LITE_ENSURE_TYPES_EQ(context, input->type, expected_type); @@ -68,6 +180,34 @@ inline TfLiteStatus EvalImpl(TfLiteContext* context, TfLiteNode* node, const T* in_data = tflite::micro::GetTensorData(input); T* out_data = tflite::micro::GetTensorData(output); for (size_t i = 0; i < num_elements; ++i) { + if (validate_input_func) { + TF_LITE_ENSURE_OK(context, + validate_input_func(context, node, in_data[i])); + } + out_data[i] = func(context, node, in_data[i]); + } + return kTfLiteOk; +} + +template +inline T AbsHelper(T i) { + return std::abs(i); +} + +template +inline TfLiteStatus EvalImpl(TfLiteContext* context, TfLiteNode* node, + T func(T), TfLiteStatus validate_input_func(T), + TfLiteType expected_type) { + const TfLiteEvalTensor* input = tflite::micro::GetEvalInput(context, node, 0); + TfLiteEvalTensor* output = tflite::micro::GetEvalOutput(context, node, 0); + TF_LITE_ENSURE_TYPES_EQ(context, input->type, expected_type); + const size_t num_elements = ElementCount(*input->dims); + const T* in_data = tflite::micro::GetTensorData(input); + T* out_data = tflite::micro::GetTensorData(output); + for (size_t i = 0; i < num_elements; ++i) { + if (validate_input_func) { + TF_LITE_ENSURE_OK(context, validate_input_func(in_data[i])); + } out_data[i] = func(in_data[i]); } return kTfLiteOk; @@ -75,16 +215,114 @@ inline TfLiteStatus EvalImpl(TfLiteContext* context, TfLiteNode* node, inline TfLiteStatus EvalNumeric(TfLiteContext* context, TfLiteNode* node, float float_func(float)) { - return EvalImpl(context, node, float_func, kTfLiteFloat32); + return EvalImpl(context, node, float_func, + /*validate_input_func=*/nullptr, kTfLiteFloat32); } inline TfLiteStatus EvalLogical(TfLiteContext* context, TfLiteNode* node, + bool bool_func(bool)) { - return EvalImpl(context, node, bool_func, kTfLiteBool); + return EvalImpl(context, node, bool_func, + /*validate_input_func=*/nullptr, kTfLiteBool); +} + +void* ElementWiseAbsRsqrtInit(TfLiteContext* context, const char* buffer, + size_t length) { + TFLITE_DCHECK(context->AllocatePersistentBuffer != nullptr); + return context->AllocatePersistentBuffer(context, sizeof(OpDataAbsRsqrt)); +} + +template +inline T AbsEvalQuantized(TfLiteContext* context, TfLiteNode* node, T i) { + const auto* op_data = static_cast(node->user_data); + const int kMin = std::numeric_limits::min(); + const int kMax = std::numeric_limits::max(); + + const int32_t value = std::abs(i - op_data->input_offset); + if (!op_data->needs_rescale) { + return static_cast( + std::min(std::max(static_cast(value + op_data->output_offset), + static_cast(kMin)), + static_cast(kMax))); + } + + const int32_t output = tflite::MultiplyByQuantizedMultiplier( + value, op_data->multiplier, op_data->shift) + + op_data->output_offset; + return static_cast(std::min( + std::max(static_cast(output), static_cast(kMin)), + static_cast(kMax))); +} + +template +inline T RsqrtEvalQuantized(TfLiteContext* context, TfLiteNode* node, T i) { + const auto* op_data = static_cast(node->user_data); + const int kMin = std::numeric_limits::min(); + const int kMax = std::numeric_limits::max(); + + const int32_t value = (i - op_data->input_offset); + const int32_t kShift = 20; // Shift to keep value integer. + if (value == 0) { + // Assume that any value close to 0 represents the max output value. + return static_cast(kMax); + } + int32_t inv_sqrt_multiplier; + int inv_sqrt_shift; + GetInvSqrtQuantizedMultiplierExp(value, kReverseShift, &inv_sqrt_multiplier, + &inv_sqrt_shift); + const int32_t data = tflite::MultiplyByQuantizedMultiplier( + static_cast(1), inv_sqrt_multiplier, inv_sqrt_shift + kShift); + const int32_t output = + tflite::MultiplyByQuantizedMultiplier(data, op_data->multiplier, + op_data->shift - kShift) + + op_data->output_offset; + return static_cast(std::min( + std::max(static_cast(output), static_cast(kMin)), + static_cast(kMax))); +} + +template +TfLiteStatus validate_input_func(TfLiteContext* context, TfLiteNode* node, + T i) { + const auto* op_data = static_cast(node->user_data); + + TF_LITE_ENSURE_MSG(context, i >= op_data->input_offset, + "Rsqrt is only defined for positive values"); + return static_cast(kTfLiteOk); } TfLiteStatus AbsEval(TfLiteContext* context, TfLiteNode* node) { - return EvalNumeric(context, node, std::abs); + OpDataAbsRsqrt* op_data = reinterpret_cast(node->user_data); + TfLiteType type = op_data->input_type; + TfLiteQuantizationType input_quantization_type = + op_data->input_quantization_type; + TfLiteStatus eval_result; + + switch (type) { + case kTfLiteFloat32: + eval_result = EvalNumeric(context, node, std::abs); + break; + case kTfLiteInt8: + eval_result = + EvalImplQuantized(context, node, AbsEvalQuantized, + /*validate_input_func=*/nullptr, type); + break; + case kTfLiteInt16: + eval_result = + input_quantization_type == kTfLiteNoQuantization + ? EvalImpl(context, node, AbsHelper, + /*validate_input_func=*/nullptr, type) + : EvalImplQuantized(context, node, AbsEvalQuantized, + /*validate_input_func=*/nullptr, + type); + break; + default: + TF_LITE_KERNEL_LOG(context, "Current data type %s is not supported.", + TfLiteTypeGetName(type)); + return kTfLiteError; + break; + } + return eval_result; } TfLiteStatus SinEval(TfLiteContext* context, TfLiteNode* node) { @@ -104,7 +342,23 @@ TfLiteStatus SqrtEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteStatus RsqrtEval(TfLiteContext* context, TfLiteNode* node) { - return EvalNumeric(context, node, [](float f) { return 1.f / std::sqrt(f); }); + const auto* op_data = static_cast(node->user_data); + TfLiteType type = op_data->input_type; + switch (type) { + case kTfLiteFloat32: + return EvalImpl( + context, node, [](float f) { return 1.f / std::sqrt(f); }, + /*validate_input_func=*/nullptr, type); + case kTfLiteInt8: + return EvalImplQuantized(context, node, + elementwise::RsqrtEvalQuantized, + elementwise::validate_input_func, type); + + default: + TF_LITE_KERNEL_LOG(context, "Current data type %s is not supported.", + TfLiteTypeGetName(type)); + return kTfLiteError; + } } TfLiteStatus SquareEval(TfLiteContext* context, TfLiteNode* node) { @@ -119,101 +373,57 @@ TfLiteStatus LogicalNotEval(TfLiteContext* context, TfLiteNode* node) { } // namespace elementwise TfLiteRegistration Register_ABS() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::AbsEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + elementwise::ElementWiseAbsRsqrtInit, + elementwise::PrepareAbsRsqrt, + elementwise::AbsEval); } TfLiteRegistration Register_SIN() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::SinEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, elementwise::GenericPrepare, + elementwise::SinEval); } TfLiteRegistration Register_COS() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::CosEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, elementwise::GenericPrepare, + elementwise::CosEval); } TfLiteRegistration Register_LOG() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::LogEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, elementwise::GenericPrepare, + elementwise::LogEval); } TfLiteRegistration Register_SQRT() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::SqrtEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, elementwise::GenericPrepare, + elementwise::SqrtEval); } TfLiteRegistration Register_RSQRT() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::RsqrtEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + elementwise::ElementWiseAbsRsqrtInit, + elementwise::PrepareAbsRsqrt, + elementwise::RsqrtEval); } TfLiteRegistration Register_SQUARE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::SquareEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, elementwise::GenericPrepare, + elementwise::SquareEval); } TfLiteRegistration Register_LOGICAL_NOT() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/ - elementwise::GenericPrepare, - /*invoke=*/elementwise::LogicalNotEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, elementwise::GenericPrepare, + elementwise::LogicalNotEval); } } // namespace micro } // namespace ops -} // namespace tflite +} // namespace tflite \ No newline at end of file diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/elu.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/elu.cc index b2cd19cc..0b64e89d 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/elu.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/elu.cc @@ -146,14 +146,7 @@ TfLiteStatus EluEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_ELU() { - return {/*init=*/EluInit, - /*free=*/nullptr, - /*prepare=*/EluPrepare, - /*invoke=*/EluEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(EluInit, EluPrepare, EluEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/add.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/add.cc index 47a17d9f..2f1ac58d 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/add.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/add.cc @@ -196,14 +196,7 @@ TfLiteStatus AddEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_ADD() { - return {/*init=*/AddInit, - /*free=*/nullptr, - /*prepare=*/AddPrepare, - /*invoke=*/AddEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(AddInit, AddPrepare, AddEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/conv.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/conv.cc index 09260482..919dd006 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/conv.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/conv.cc @@ -112,9 +112,24 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { #if ESP_NN if (input->type == kTfLiteInt8) { + data_dims_t input_dims = { + .width = input_width, .height = input_height, + .channels = input->dims->data[3], 1 + }; + data_dims_t output_dims = { + .width = output_width, .height = output_height, + .channels = output->dims->data[3], 1 + }; + data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0}; + conv_params_t conv_params = { + .in_offset = 0, .out_offset = 0, + .stride = {params.stride_width, params.stride_height}, + .padding = {data->op_data.padding.width, data->op_data.padding.height}, + .dilation = {0, 0}, .activation = {-128, 127} + }; + int scratch_buf_size = esp_nn_get_conv_scratch_size( - input_width, input_height, input->dims->data[3], - output->dims->data[3], filter_width, filter_height); + &input_dims, &filter_dims, &output_dims, &conv_params); if (scratch_buf_size > 0) { TF_LITE_ENSURE_STATUS(context->RequestScratchBufferInArena( context, scratch_buf_size, &data->buffer_idx)); @@ -191,18 +206,33 @@ inline void EvalQuantizedPerChannel( const int input_size = input_width * input_height * input_depth; const int output_size = output_width * output_height * output_depth; + data_dims_t input_dims = { + .width = input_width, .height = input_height, + .channels = input_depth, 1 + }; + data_dims_t output_dims = { + .width = output_width, .height = output_height, + .channels = output_depth, 1 + }; + data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0}; + conv_params_t conv_params = { + .in_offset = input_offset, .out_offset = output_offset, + .stride = {stride_width, stride_height}, + .padding = {pad_width, pad_height}, + .dilation = {0, 0}, + .activation = {activation_min, activation_max} + }; + quant_data_t quant_data = { + .shift = data.op_data.per_channel_output_shift, + .mult = data.op_data.per_channel_output_multiplier + }; + for (int i_batch = 0; i_batch < batch_size; i_batch++) { - esp_nn_conv_s8(input_data + i_batch * input_size, - input_width, input_height, input_depth, input_offset, - pad_width, pad_height, stride_width, stride_height, - tflite::micro::GetTensorData(filter), - filter_width, filter_height, + esp_nn_conv_s8(&input_dims, input_data + i_batch * input_size, + &filter_dims, tflite::micro::GetTensorData(filter), tflite::micro::GetTensorData(bias), - output_data + i_batch * output_size, - output_width, output_height, output_depth, output_offset, - data.op_data.per_channel_output_shift, - data.op_data.per_channel_output_multiplier, - activation_min, activation_max); + &output_dims, output_data + i_batch * output_size, + &conv_params, &quant_data); } } else { reference_integer_ops::ConvPerChannel( @@ -299,21 +329,16 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { TfLiteTypeGetName(input->type), input->type); return kTfLiteError; } - conv_total_time += esp_timer_get_time() - start_time; + long long time_this_instance = esp_timer_get_time() - start_time; + conv_total_time += time_this_instance; + //printf("time this instance: %llu\n", time_this_instance / 1000); return kTfLiteOk; } } // namespace TfLiteRegistration Register_CONV_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/depthwise_conv.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/depthwise_conv.cc index 5f2d9d50..a2460248 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/depthwise_conv.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/depthwise_conv.cc @@ -112,21 +112,36 @@ inline void EvalQuantizedPerChannel(TfLiteContext* context, TfLiteNode* node, if (data.buffer_idx > -1) { scratch_buf = context->GetScratchBuffer(context, data.buffer_idx); } + esp_nn_set_depthwise_conv_scratch_buf(scratch_buf); + data_dims_t input_dims = { + .width = input_width, .height = input_height, + .channels = input_depth, 1 + }; + data_dims_t output_dims = { + .width = output_width, .height = output_height, + .channels = output_depth, 1 + }; + data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0}; + dw_conv_params_t conv_params = { + .in_offset = input_offset, .out_offset = output_offset, + .ch_mult = depth_multiplier, + .stride = {stride_width, stride_height}, + .padding = {pad_width, pad_height}, .dilation = {0, 0}, + .activation = {activation_min, activation_max} + }; + quant_data_t quant_data = { + .shift = data.op_data.per_channel_output_shift, + .mult = data.op_data.per_channel_output_multiplier + }; + for (int i_batch = 0; i_batch < batch_size; i_batch++) { - esp_nn_depthwise_conv_s8(input_data + i_batch * input_size, input_width, - input_height, input_depth, input_offset, - pad_width, pad_height, - stride_width, stride_height, depth_multiplier, - tflite::micro::GetTensorData(filter), - filter_width, filter_height, + esp_nn_depthwise_conv_s8(&input_dims, input_data + i_batch * input_size, + &filter_dims, tflite::micro::GetTensorData(filter), tflite::micro::GetTensorData(bias), - output_data + i_batch * output_size, - output_width, output_height, output_offset, - data.op_data.per_channel_output_shift, - data.op_data.per_channel_output_multiplier, - activation_min, activation_max); + &output_dims, output_data + i_batch * output_size, + &conv_params, &quant_data); } } else { reference_integer_ops::DepthwiseConvPerChannel( @@ -209,9 +224,25 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { #if ESP_NN if (input->type == kTfLiteInt8) { + data_dims_t input_dims = { + .width = input_width, .height = input_height, + .channels = input->dims->data[3], 1 + }; + data_dims_t output_dims = { + .width = output_width, .height = output_height, + .channels = output->dims->data[3], 1 + }; + data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0}; + dw_conv_params_t conv_params = { + .in_offset = 0, .out_offset = 0, + .ch_mult = params.depth_multiplier, + .stride = {params.stride_width, params.stride_height}, + .padding = {data->op_data.padding.width, data->op_data.padding.height}, + .dilation = {0, 0}, .activation = {-128, 127} + }; + int scratch_buf_size = esp_nn_get_depthwise_conv_scratch_size( - input_width, input_height, input->dims->data[3], - params.depth_multiplier, filter_width, filter_height); + &input_dims, &filter_dims, &output_dims, &conv_params); if (scratch_buf_size > 0) { TF_LITE_ENSURE_STATUS(context->RequestScratchBufferInArena( context, scratch_buf_size, &data->buffer_idx)); @@ -299,21 +330,17 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { TfLiteTypeGetName(input->type), input->type); return kTfLiteError; } - dc_total_time += esp_timer_get_time() - start_time; + long long time_this_instance = esp_timer_get_time() - start_time; + dc_total_time += time_this_instance; + // printf("time this instance: %llu\n", time_this_instance / 1000); + return kTfLiteOk; } } // namespace TfLiteRegistration Register_DEPTHWISE_CONV_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/fully_connected.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/fully_connected.cc index 5e1705da..484cffb6 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/fully_connected.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/fully_connected.cc @@ -185,14 +185,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_FULLY_CONNECTED() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/mul.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/mul.cc index 0e8a82f4..02413f5c 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/mul.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/mul.cc @@ -118,14 +118,7 @@ TfLiteStatus MulEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_MUL() { - return {/*init=*/MulInit, - /*free=*/nullptr, - /*prepare=*/MulPrepare, - /*invoke=*/MulEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(MulInit, MulPrepare, MulEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/pooling.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/pooling.cc index d55bab82..b450929e 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/pooling.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/pooling.cc @@ -221,25 +221,11 @@ void* Init(TfLiteContext* context, const char* buffer, size_t length) { } // namespace TfLiteRegistration Register_AVERAGE_POOL_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/PoolingPrepare, - /*invoke=*/AverageEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, PoolingPrepare, AverageEval); } TfLiteRegistration Register_MAX_POOL_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/PoolingPrepare, - /*invoke=*/MaxEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, PoolingPrepare, MaxEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/softmax.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/softmax.cc new file mode 100644 index 00000000..9a967839 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/esp_nn/softmax.cc @@ -0,0 +1,208 @@ +/* Copyright 2021 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ + +#include "tensorflow/lite/micro/kernels/softmax.h" + +#include "tensorflow/lite/c/builtin_op_data.h" +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/kernels/internal/common.h" +#include "tensorflow/lite/kernels/internal/quantization_util.h" +#include "tensorflow/lite/kernels/internal/reference/softmax.h" +#include "tensorflow/lite/kernels/internal/tensor_ctypes.h" +#include "tensorflow/lite/kernels/kernel_util.h" +#include "tensorflow/lite/kernels/op_macros.h" +#include "tensorflow/lite/micro/kernels/kernel_util.h" + +#include "freertos/FreeRTOS.h" +#include + +#if ESP_NN +#include +#endif + +long long softmax_total_time = 0; + +namespace tflite { +namespace { +// Softmax parameter data that persists in user_data +const int kInt16LUTArraySize = 513; + +struct NodeData { + SoftmaxParams op_data; +#if ESP_NN + int buffer_idx; +#endif +}; + +static void* Init(TfLiteContext* context, const char* buffer, size_t length) { + TFLITE_DCHECK(context->AllocatePersistentBuffer != nullptr); + return context->AllocatePersistentBuffer(context, sizeof(NodeData)); +} + +void SoftmaxQuantized(TfLiteContext* context, const TfLiteEvalTensor* input, + TfLiteEvalTensor* output, const NodeData* data) { + if (input->type == kTfLiteInt8) { + if (output->type == kTfLiteInt16) { + tflite::reference_ops::Softmax( + data->op_data, tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + } else { +#if ESP_NN + const int32_t input_beta_multiplier = data->op_data.input_multiplier; + const int32_t input_beta_left_shift = data->op_data.input_left_shift; + const int diff_min = data->op_data.diff_min; + const RuntimeShape input_shape = tflite::micro::GetTensorShape(input); + const RuntimeShape output_shape = tflite::micro::GetTensorShape(output); + const int trailing_dim = input_shape.DimensionsCount() - 1; + const int outer_size = + MatchingFlatSizeSkipDim(input_shape, trailing_dim, output_shape); + const int depth = + MatchingDim(input_shape, trailing_dim, output_shape, trailing_dim); + const int8_t *in_ptr = tflite::micro::GetTensorData(input); + int8_t *out_ptr = tflite::micro::GetTensorData(output); + void *scratch_buf = NULL; + if (data->buffer_idx > -1) { + scratch_buf = context->GetScratchBuffer(context, data->buffer_idx); + } + esp_nn_set_softmax_scratch_buf(scratch_buf); + esp_nn_softmax_s8(in_ptr, outer_size, depth, input_beta_multiplier, + input_beta_left_shift, diff_min, out_ptr); +#else + tflite::reference_ops::Softmax( + data->op_data, tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); +#endif + } + } else { + tflite::reference_ops::SoftmaxInt16( + data->op_data, tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + } +} + +static TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { + const TfLiteEvalTensor* input = tflite::micro::GetEvalInput(context, node, 0); + TfLiteEvalTensor* output = tflite::micro::GetEvalOutput(context, node, 0); + + TFLITE_DCHECK(node->user_data != nullptr); + NodeData data = *static_cast(node->user_data); + + long long start_time = esp_timer_get_time(); + switch (input->type) { + case kTfLiteFloat32: { + tflite::reference_ops::Softmax( + data.op_data, tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + } + break; + case kTfLiteInt8: + case kTfLiteInt16: { + SoftmaxQuantized(context, input, output, &data); + } + break; + default: + TF_LITE_KERNEL_LOG(context, "Type %s (%d) not supported.", + TfLiteTypeGetName(input->type), input->type); + return kTfLiteError; + } + softmax_total_time += esp_timer_get_time() - start_time; + return kTfLiteOk; +} + +static TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { + MicroContext* micro_context = GetMicroContext(context); + + TF_LITE_ENSURE_EQ(context, NumInputs(node), 1); + TF_LITE_ENSURE_EQ(context, NumOutputs(node), 1); + TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); + TF_LITE_ENSURE(context, input != nullptr); + TF_LITE_ENSURE(context, NumDimensions(input) >= 1); + TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); + TF_LITE_ENSURE(context, output != nullptr); + + TF_LITE_ENSURE(context, node->user_data != nullptr); + NodeData* data = static_cast(node->user_data); + // Only allocate LUTs for KTfLiteInt16 data type + if (input->type == kTfLiteInt16) { + void* raw_exp_lut = context->AllocatePersistentBuffer( + context, sizeof(int16_t) * kInt16LUTArraySize); + TF_LITE_ENSURE(context, raw_exp_lut != nullptr); + data->op_data.exp_lut = reinterpret_cast(raw_exp_lut); + void* one_over_one_plus_x_lut = context->AllocatePersistentBuffer( + context, sizeof(int16_t) * kInt16LUTArraySize); + TF_LITE_ENSURE(context, one_over_one_plus_x_lut != nullptr); + data->op_data.one_over_one_plus_x_lut = + reinterpret_cast(one_over_one_plus_x_lut); + } + + if (output->type == kTfLiteInt16) { + TF_LITE_ENSURE(context, + input->type == kTfLiteInt8 || input->type == kTfLiteInt16); + } else { + TF_LITE_ENSURE_EQ(context, input->type, output->type); + } + + // Populate LUT if required + if (input->type == kTfLiteInt16) { + TF_LITE_ENSURE_EQ(context, output->params.zero_point, 0); + // exp LUT only used on negative values + // we consider exp(-10.0) is insignificant to accumulation + gen_lut( + [](float value) { return std::exp(value); }, -10.0f, 0.0f, -1.0f, 1.0f, + data->op_data.exp_lut); + gen_lut( + [](float value) { return 1.0f / (1.0f + value); }, 0.0f, 1.0f, -1.0f, + 1.0f, data->op_data.one_over_one_plus_x_lut); + data->op_data.zero_point = output->params.zero_point; + data->op_data.scale = output->params.scale; + } + + auto* params = static_cast(node->builtin_data); + auto ret_val = + CalculateSoftmaxParams(context, input, output, params, &data->op_data); + +#if ESP_NN + if (output->type == kTfLiteInt8 && input->type == kTfLiteInt8) { + const int32_t input_width = input->dims->data[1]; + const int32_t input_height = input->dims->data[2]; + int scratch_buf_size = esp_nn_get_softmax_scratch_size(input_width, + input_height); + if (scratch_buf_size > 0) { + TF_LITE_ENSURE_STATUS(context->RequestScratchBufferInArena( + context, scratch_buf_size, &data->buffer_idx)); + } + } +#endif + + micro_context->DeallocateTempTfLiteTensor(input); + micro_context->DeallocateTempTfLiteTensor(output); + return ret_val; +} + +} // namespace + +TfLiteRegistration Register_SOFTMAX() { + return tflite::micro::RegisterOp(Init, Prepare, Eval); +} + +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/exp.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/exp.cc index d1b0f6cb..ae26f636 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/exp.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/exp.cc @@ -72,14 +72,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_EXP() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/expand_dims.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/expand_dims.cc index 6dcba4d5..4b105bf6 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/expand_dims.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/expand_dims.cc @@ -146,14 +146,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_EXPAND_DIMS() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/fill.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/fill.cc index d8a2b09d..9f438b89 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/fill.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/fill.cc @@ -135,14 +135,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_FILL() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor.cc index b8be1cf0..6b2a4cc2 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor.cc @@ -42,14 +42,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace floor TfLiteRegistration Register_FLOOR() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/floor::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, floor::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_div.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_div.cc index d11e4969..333a1eba 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_div.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_div.cc @@ -123,14 +123,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_FLOOR_DIV() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_mod.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_mod.cc index 083bd5cb..9bb49497 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_mod.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/floor_mod.cc @@ -121,14 +121,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_FLOOR_MOD() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.cc index c0be3814..a083edd7 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.cc @@ -1,4 +1,4 @@ -/* Copyright 2021 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -55,10 +55,7 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { TfLiteTensor* output = micro_context->AllocateTempOutputTensor( node, kFullyConnectedOutputTensor); TF_LITE_ENSURE(context, output != nullptr); - TF_LITE_ENSURE_TYPES_EQ(context, input->type, output->type); - TF_LITE_ENSURE_MSG(context, input->type == filter->type, - "Hybrid models are not supported on TFLite Micro."); TF_LITE_ENSURE_OK(context, CalculateOpDataFullyConnected( context, params->activation, input->type, @@ -126,6 +123,23 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { break; } + case kTfLiteInt16: { + const int64_t* bias_data = + nullptr != bias ? tflite::micro::GetTensorData(bias) + : nullptr; + + tflite::reference_integer_ops::FullyConnected( + FullyConnectedParamsQuantized(data), + tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(filter), + tflite::micro::GetTensorData(filter), + tflite::micro::GetTensorShape(bias), bias_data, + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + break; + } + default: { TF_LITE_KERNEL_LOG(context, "Type %s (%d) not supported.", TfLiteTypeGetName(input->type), input->type); @@ -138,14 +152,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_FULLY_CONNECTED() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.h index e1215da6..93026cd5 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/fully_connected.h @@ -1,4 +1,4 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -81,6 +81,24 @@ inline TfLiteRegistration Register_FULLY_CONNECTED_INT8() { } #endif + +#if defined(CMSIS_NN) +// Returns a TfLiteRegistration struct for kernel variant that only supports +// int16. +TfLiteRegistration Register_FULLY_CONNECTED_INT16(); + +#else +// Note that while this block gets used for both reference and optimized kernels +// that do not have any specialized implementations, the only goal here is to +// define fallback implementation that allow reference kernels to still be used +// from applications that call a more specific kernel variant. + +inline TfLiteRegistration Register_FULLY_CONNECTED_INT16() { + return Register_FULLY_CONNECTED(); +} + +#endif + } // namespace tflite #endif // TENSORFLOW_LITE_MICRO_KERNELS_FULLY_CONNECTED_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather.cc index 0b7c23f9..6035efa7 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather.cc @@ -218,14 +218,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_GATHER() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather_nd.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather_nd.cc index c604ae15..eaa1abca 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather_nd.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/gather_nd.cc @@ -195,14 +195,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_GATHER_ND() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/hard_swish.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/hard_swish.cc index 060dfc14..055e12e6 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/hard_swish.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/hard_swish.cc @@ -68,14 +68,8 @@ TfLiteStatus HardSwishEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_HARD_SWISH() { - return {/*init=*/HardSwishInit, - /*free=*/nullptr, - /*prepare=*/tflite::HardSwishPrepare, - /*invoke=*/HardSwishEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(HardSwishInit, tflite::HardSwishPrepare, + HardSwishEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/if.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/if.cc index 050aeac4..39eca8b4 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/if.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/if.cc @@ -115,14 +115,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_IF() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.cc index fd84dec1..341eec77 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.cc @@ -15,9 +15,9 @@ limitations under the License. #include "tensorflow/lite/micro/kernels/kernel_runner.h" +#include "tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h" #include "tensorflow/lite/micro/micro_arena_constants.h" #include "tensorflow/lite/micro/micro_error_reporter.h" -#include "tensorflow/lite/micro/simple_memory_allocator.h" #include "tensorflow/lite/micro/test_helpers.h" namespace tflite { @@ -30,7 +30,7 @@ uint8_t KernelRunner::kKernelRunnerBuffer_[]; KernelRunner::KernelRunner(const TfLiteRegistration& registration, TfLiteTensor* tensors, int tensors_size, TfLiteIntArray* inputs, TfLiteIntArray* outputs, - void* builtin_data) + void* builtin_data, TfLiteIntArray* intermediates) : registration_(registration), allocator_(SimpleMemoryAllocator::Create(GetMicroErrorReporter(), kKernelRunnerBuffer_, @@ -54,6 +54,7 @@ KernelRunner::KernelRunner(const TfLiteRegistration& registration, node_.inputs = inputs; node_.outputs = outputs; node_.builtin_data = builtin_data; + node_.intermediates = intermediates; } bool KernelRunner::ValidateTempBufferDeallocated() { diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.h index 9dddde50..68722edb 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_runner.h @@ -18,9 +18,9 @@ limitations under the License. #include "tensorflow/lite/c/common.h" #include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h" #include "tensorflow/lite/micro/fake_micro_context.h" #include "tensorflow/lite/micro/mock_micro_graph.h" -#include "tensorflow/lite/micro/simple_memory_allocator.h" namespace tflite { namespace micro { @@ -35,7 +35,8 @@ class KernelRunner { public: KernelRunner(const TfLiteRegistration& registration, TfLiteTensor* tensors, int tensors_size, TfLiteIntArray* inputs, - TfLiteIntArray* outputs, void* builtin_data); + TfLiteIntArray* outputs, void* builtin_data, + TfLiteIntArray* intermediates = nullptr); // Calls init and prepare on the kernel (i.e. TfLiteRegistration) struct. Any // exceptions will be DebugLog'd and returned as a status code. diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.cc index 14664b91..91c0bc91 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.cc @@ -36,6 +36,21 @@ int ValidateTensorIndexing(const TfLiteContext* context, int index, } // namespace +TfLiteRegistration RegisterOp( + void* (*init)(TfLiteContext* context, const char* buffer, size_t length), + TfLiteStatus (*prepare)(TfLiteContext* context, TfLiteNode* node), + TfLiteStatus (*invoke)(TfLiteContext* context, TfLiteNode* node)) { + return {/*init=*/init, + /*free=*/nullptr, + /*prepare=*/prepare, + /*invoke=*/invoke, + /*profiling_string=*/nullptr, + /*builtin_code=*/0, + /*custom_name=*/nullptr, + /*version=*/0, + /*registration_external=*/nullptr}; +} + // Returns a mutable tensor for a given input index. is_variable must be checked // during prepare when the full TfLiteTensor is available. TfLiteEvalTensor* GetMutableEvalInput(const TfLiteContext* context, diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.h index 6c5d7f18..d6f20c72 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/kernel_util.h @@ -27,6 +27,11 @@ limitations under the License. namespace tflite { namespace micro { +TfLiteRegistration RegisterOp( + void* (*init)(TfLiteContext* context, const char* buffer, size_t length), + TfLiteStatus (*prepare)(TfLiteContext* context, TfLiteNode* node), + TfLiteStatus (*invoke)(TfLiteContext* context, TfLiteNode* node)); + // Returns a mutable tensor for a given input index. is_variable must be checked // during prepare when the full TfLiteTensor is available. TfLiteEvalTensor* GetMutableEvalInput(const TfLiteContext* context, @@ -40,19 +45,33 @@ const TfLiteEvalTensor* GetEvalInput(const TfLiteContext* context, TfLiteEvalTensor* GetEvalOutput(const TfLiteContext* context, const TfLiteNode* node, int index); -// Returns data for a TfLiteEvalTensor struct. +// Returns data for a TfLiteEvalTensor struct that are expected to exist. template T* GetTensorData(TfLiteEvalTensor* tensor) { - return tensor != nullptr ? reinterpret_cast(tensor->data.raw) : nullptr; + TFLITE_DCHECK(tensor != nullptr); + return reinterpret_cast(tensor->data.raw); } -// Returns const data for a TfLiteEvalTensor struct. +// Returns const data for a TfLiteEvalTensor struct that are expected to exist. template const T* GetTensorData(const TfLiteEvalTensor* tensor) { TFLITE_DCHECK(tensor != nullptr); return reinterpret_cast(tensor->data.raw); } +// Returns data for a TfLiteEvalTensor struct that could be null. +template +T* GetOptionalTensorData(TfLiteEvalTensor* tensor) { + return tensor == nullptr ? nullptr : reinterpret_cast(tensor->data.raw); +} + +// Returns const data for a TfLiteEvalTensor struct that could be null. +template +const T* GetOptionalTensorData(const TfLiteEvalTensor* tensor) { + return tensor == nullptr ? nullptr + : reinterpret_cast(tensor->data.raw); +} + // Returns the shape of a TfLiteEvalTensor struct. const RuntimeShape GetTensorShape(const TfLiteEvalTensor* tensor); diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2_pool_2d.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2_pool_2d.cc index 250cd3be..2b2a27bf 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2_pool_2d.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2_pool_2d.cc @@ -136,14 +136,7 @@ TfLiteStatus L2Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_L2_POOL_2D() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/L2Prepare, - /*invoke=*/L2Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, L2Prepare, L2Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2norm.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2norm.cc index 289e4de5..45858e78 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2norm.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/l2norm.cc @@ -137,14 +137,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace l2norm TfLiteRegistration Register_L2NORM_REF() { - return {/*init=*/l2norm::Init, - /*free=*/nullptr, - /*prepare=*/l2norm::Prepare, - /*invoke=*/l2norm::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(l2norm::Init, l2norm::Prepare, l2norm::Eval); } TfLiteRegistration Register_L2_NORMALIZATION() { return Register_L2NORM_REF(); } diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/leaky_relu.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/leaky_relu.cc index 70ee3856..96c1b1b1 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/leaky_relu.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/leaky_relu.cc @@ -88,14 +88,8 @@ TfLiteStatus LeakyReluEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_LEAKY_RELU() { - return {/*init=*/LeakyReluInit, - /*free=*/nullptr, - /*prepare=*/LeakyReluPrepare, - /*invoke=*/LeakyReluEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(LeakyReluInit, LeakyReluPrepare, + LeakyReluEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/log_softmax.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/log_softmax.cc index 0af74def..5fd87612 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/log_softmax.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/log_softmax.cc @@ -142,14 +142,7 @@ TfLiteStatus LogSoftmaxEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_LOG_SOFTMAX() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/LogSoftmaxPrepare, - /*invoke=*/LogSoftmaxEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, LogSoftmaxPrepare, LogSoftmaxEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/logical.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/logical.cc index e2d2b5f8..c85e0c5b 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/logical.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/logical.cc @@ -34,29 +34,11 @@ TfLiteStatus LogicalAndEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_LOGICAL_OR() { - // Init, Free, Prepare, Eval are satisfying the Interface required by - // TfLiteRegistration. - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/LogicalOrEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, LogicalOrEval); } TfLiteRegistration Register_LOGICAL_AND() { - // Init, Free, Prepare, Eval are satisfying the Interface required by - // TfLiteRegistration. - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/LogicalAndEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, LogicalAndEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/logistic.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/logistic.cc index 77f94ec0..f8ac1c23 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/logistic.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/logistic.cc @@ -106,13 +106,6 @@ TfLiteStatus LogisticEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_LOGISTIC() { - return {/*init=*/LogisticInit, - /*free=*/nullptr, - /*prepare=*/LogisticPrepare, - /*invoke=*/LogisticEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(LogisticInit, LogisticPrepare, LogisticEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.cc new file mode 100644 index 00000000..f157a8d0 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.cc @@ -0,0 +1,2955 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#include "tensorflow/lite/micro/kernels/lstm_eval.h" + +#include +#include +#include +#include + +#include "tensorflow/lite/c/builtin_op_data.h" +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/kernels/internal/tensor_ctypes.h" +#include "tensorflow/lite/kernels/op_macros.h" +#include "tensorflow/lite/micro/kernels/kernel_util.h" +#include "tensorflow/lite/micro/kernels/micro_tensor_utils.h" +namespace tflite { +namespace { + +void ComputeRowSums( + int32_t* input_to_input_row_sums, int32_t* input_to_forget_row_sums, + int32_t* input_to_cell_row_sums, int32_t* input_to_output_row_sums, + int32_t* aux_input_to_input_row_sums, int32_t* aux_input_to_forget_row_sums, + int32_t* aux_input_to_cell_row_sums, int32_t* aux_input_to_output_row_sums, + int32_t* recurrent_to_input_row_sums, int32_t* recurrent_to_forget_row_sums, + int32_t* recurrent_to_cell_row_sums, int32_t* recurrent_to_output_row_sums, + int32_t* projection_weights_row_sums, int32_t* row_sums, int n_cell, + int n_input, int n_aux_input, int n_output, + const int8_t* input_to_input_weights_ptr, + const int8_t* input_to_forget_weights_ptr, + const int8_t* input_to_cell_weights_ptr, + const int8_t* input_to_output_weights_ptr, + const int8_t* aux_input_to_input_weights_ptr, + const int8_t* aux_input_to_forget_weights_ptr, + const int8_t* aux_input_to_cell_weights_ptr, + const int8_t* aux_input_to_output_weights_ptr, + const int8_t* recurrent_to_input_weights_ptr, + const int8_t* recurrent_to_forget_weights_ptr, + const int8_t* recurrent_to_cell_weights_ptr, + const int8_t* recurrent_to_output_weights_ptr, + const int8_t* projection_weights_ptr, bool use_cifg, + const float* aux_input_ptr) { + // Compute the row sums for dequantization + if (!use_cifg) { + micro_tensor_utils::ReductionSumVector( + input_to_input_weights_ptr, input_to_input_row_sums, n_cell, n_input); + } + micro_tensor_utils::ReductionSumVector( + input_to_forget_weights_ptr, input_to_forget_row_sums, n_cell, n_input); + micro_tensor_utils::ReductionSumVector( + input_to_cell_weights_ptr, input_to_cell_row_sums, n_cell, n_input); + micro_tensor_utils::ReductionSumVector( + input_to_output_weights_ptr, input_to_output_row_sums, n_cell, n_input); + + if (aux_input_ptr) { + if (!use_cifg) { + micro_tensor_utils::ReductionSumVector(aux_input_to_input_weights_ptr, + aux_input_to_input_row_sums, + n_cell, n_aux_input); + } + micro_tensor_utils::ReductionSumVector(aux_input_to_forget_weights_ptr, + aux_input_to_forget_row_sums, n_cell, + n_aux_input); + micro_tensor_utils::ReductionSumVector(aux_input_to_cell_weights_ptr, + aux_input_to_cell_row_sums, n_cell, + n_aux_input); + micro_tensor_utils::ReductionSumVector(aux_input_to_output_weights_ptr, + aux_input_to_output_row_sums, n_cell, + n_aux_input); + } + if (!use_cifg) { + micro_tensor_utils::ReductionSumVector(recurrent_to_input_weights_ptr, + recurrent_to_input_row_sums, n_cell, + n_output); + } + micro_tensor_utils::ReductionSumVector(recurrent_to_forget_weights_ptr, + recurrent_to_forget_row_sums, n_cell, + n_output); + micro_tensor_utils::ReductionSumVector(recurrent_to_cell_weights_ptr, + recurrent_to_cell_row_sums, n_cell, + n_output); + micro_tensor_utils::ReductionSumVector(recurrent_to_output_weights_ptr, + recurrent_to_output_row_sums, n_cell, + n_output); + + if (projection_weights_ptr != nullptr) { + micro_tensor_utils::ReductionSumVector( + projection_weights_ptr, projection_weights_row_sums, n_output, n_cell); + } +} + +// Calculates a single LSTM gate. +// +// Implements the following formula: (* is matrix multiply) +// gate = activate(W_input * input + W_aux * aux_input + +// W_peephole * cell + W_recurrent * prev_output + bias) +// with layer norm: +// gate = activate(W_norm * normalize(...) + bias) // not adding bias inside +// +// Activation is sigmoid except for the "cell" gate (configurable, usually tanh) +// +// Parameters: +// Input vectors (to LSTM): | Size: | Optional? +// input | n_input | +// aux_input | n_aux_input | y (bidir LSTM) +// Input vectors (persistent states): +// output_state | n_output | +// cell_state | n_cell | +// 'Constant' inputs: +// input_to_gate_weights | n_cell * n_input | +// aux_input_to_gate_weights | n_cell * n_aux_input | y (bidir LSTM) +// recurrent_to_gate_weights | n_cell * n_output | +// cell_to_gate_weights | n_cell | y (peephole) +// gate_bias | n_cell | +// layer_norm_coefficients | n_cell | y (layer norm) +// Output vector: +// gate | n_cell | +// Scalar parameters: +// n_batch - batch size / number of vectors +// n_input, n_aux_input, n_output, n_cell - size of vectors. +// activation - activation to use. +// is_input_all_zeros, is_aux_input_all_zeros - if input vectors are all zero. +// use_layer_norm - if doing layer norm LSTM. +inline void CalculateLstmGateFloat( + const float* input, const float* input_to_gate_weights, + const float* aux_input, const float* aux_input_to_gate_weights, + const float* output_state, const float* recurrent_to_gate_weights, + const float* cell_state, const float* cell_to_gate_weights, + const float* layer_norm_coefficients, const float* gate_bias, + const int n_batch, const int n_input, const int n_aux_input, + const int n_output, const int n_cell, + const TfLiteFusedActivation activation, float* gate, + const bool is_input_all_zeros, const bool is_aux_input_all_zeros) { + const bool use_peephole = (cell_to_gate_weights != nullptr); + const bool use_layer_norm = (layer_norm_coefficients != nullptr); + + // Initialize scratch buffers with bias for regular lstm or initialize with + // zero for layer norm lstm. + if (use_layer_norm) { + memset(gate, 0, n_cell * n_batch * sizeof(float)); + } else { + micro_tensor_utils::VectorBatchVectorAssign(gate_bias, n_cell, n_batch, + gate); + } + // For each batch and cell: compute input_weight * input. + // Skip if input is all zeros. + if (!is_input_all_zeros) { + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + input_to_gate_weights, n_cell, n_input, input, n_batch, gate); + } + // For each batch and cell: compute aux_input_weight * aux_input. + // Skip if auxiliary input is not available or all zeros. + if (!is_aux_input_all_zeros) { + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + aux_input_to_gate_weights, n_cell, n_aux_input, aux_input, n_batch, + gate); + } + // For each batch and cell: compute recurrent_weight * output_state. + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + recurrent_to_gate_weights, n_cell, n_output, output_state, n_batch, gate); + // For each batch and cell: compute cell_weight .* cell_state (peephole LSTM) + if (use_peephole) { + micro_tensor_utils::VectorBatchVectorCwiseProductAccumulate( + cell_to_gate_weights, n_cell, cell_state, n_batch, gate); + } + // Do layer normalization (if layer norm LSTM) + if (use_layer_norm) { + micro_tensor_utils::MeanStddevNormalization(gate, gate, n_cell, n_batch); + micro_tensor_utils::VectorBatchVectorCwiseProduct( + layer_norm_coefficients, n_cell, gate, n_batch, gate); + micro_tensor_utils::VectorBatchVectorAdd(gate_bias, n_cell, n_batch, gate); + } + // Apply activation + micro_tensor_utils::ApplyActivationToVector(gate, n_batch * n_cell, + activation, gate); +} + +// Updates the LSTM cell state, used by both float and hybrid LSTM versions. +// +// Implements the following formula: +// cell_state_new = clip(forget_gate * cell_state + input_gate * cell_gate) +// +// With CIFG LSTM, input gate is replaced by (1-forget_gate). +// +// Parameters: +// - n_batch, n_cell: sizes of vectors +// - cell_state: input/output vector, size n_batch*n_cell +// - input_gate: input vector, size n_batch*n_cell. +// - forget_gate: input/scratch vector, size n_batch*n_cell, modified with CIFG +// - cell_gate: input vector, size n_batch*n_cell. +// - use_cifg: use 1-forget_gate instead of input_gate. +// - clip: if > 0, clip the resulting cell state to [-clip, +clip]. +void UpdateLstmCellFloat(int n_batch, int n_cell, float* cell_state, + const float* input_gate, float* forget_gate, + const float* cell_gate, bool use_cifg, float clip) { + micro_tensor_utils::VectorVectorCwiseProduct(forget_gate, cell_state, + n_batch * n_cell, cell_state); + + if (use_cifg) { + // With CIFG, input_gate = 1-forget_gate. Use the forget_gate array as + // scratch, as input_gate array is not allocated in this case. (Be careful + // not to write to the scratch before reading the forget gate data.) + float* scratch = forget_gate; + micro_tensor_utils::Sub1Vector(forget_gate, n_batch * n_cell, scratch); + micro_tensor_utils::VectorVectorCwiseProductAccumulate( + cell_gate, scratch, n_batch * n_cell, cell_state); + } else { + micro_tensor_utils::VectorVectorCwiseProductAccumulate( + cell_gate, input_gate, n_batch * n_cell, cell_state); + } + if (clip > 0.0f) { + micro_tensor_utils::CwiseClipping(cell_state, n_batch * n_cell, clip); + } +} + +// Calculates the output state tensor of an LSTM step. +// +// Implements the following formula: +// output_no_projection = output_gate .* activate(cell_state) +// (elementwise vector product) +// If no projection is used: +// output = output_state = output_no_projection +// With projection: +// output = output_state = clip(W*output_no_projection + bias) +// +// Output might not have a different 'stride' than n_batch, so we need to copy. +// +// Parameters: +// - n_batch: batches: the number of distinct vectors in each array. +// - n_cell, n_output: sizes of vectors. +// - cell_state, output_gate: input vectors, size n_batch*n_cell. +// - projection_weights, projection_weights_scale, projection_bias: +// constant inputs, describing projection matrix and bias. +// - proj_clip: if > 0, clip the output of the projection. +// - output_state: output vector, size n_batch*n_output. Must be contigous. +// - scratch: scratch area, size n_batch*n_cell. +void CalculateLstmOutputFloat(int n_batch, int n_cell, int n_output, + const float* cell_state, const float* output_gate, + TfLiteFusedActivation activation, + const float* projection_weights, + const float* projection_bias, + const float proj_clip, float* output_state, + float* scratch) { + micro_tensor_utils::ApplyActivationToVector(cell_state, n_batch * n_cell, + activation, scratch); + micro_tensor_utils::VectorVectorCwiseProduct(output_gate, scratch, + n_batch * n_cell, scratch); + + const bool use_projection = (projection_weights != nullptr); + const bool use_projection_bias = (projection_bias != nullptr); + + if (use_projection) { + if (use_projection_bias) { + micro_tensor_utils::VectorBatchVectorAssign(projection_bias, n_output, + n_batch, output_state); + } else { + memset(output_state, 0, n_batch * n_output * sizeof(float)); + } + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + projection_weights, n_output, n_cell, scratch, n_batch, output_state); + if (proj_clip > 0.0f) { + micro_tensor_utils::CwiseClipping(output_state, n_batch * n_output, + proj_clip); + } + } else { + std::memcpy(output_state, scratch, n_batch * n_output * sizeof(float)); + } +} + +// Calculates a single LSTM gate, hybrid version. +// Implements the same functionality as CalculateLstmGateFloat. +void CalculateLstmGateHybrid( + // Input and weights + const int8_t* input, const float* input_sf, const int32_t* input_zp, + const int8_t* input_to_gate_weights, + const uint8_t* input_to_gate_weights_ledger, + const float input_to_gate_weights_scale, int32_t* input_to_gate_row_sums, + // Aux input and weights + const int8_t* aux_input, const float* aux_input_sf, + const int32_t* aux_input_zp, const int8_t* aux_input_to_gate_weights, + const float aux_input_to_gate_weights_scale, + int32_t* aux_input_to_gate_row_sums, + // Output state and weights + const int8_t* output_state, const float* output_state_sf, + const int32_t* output_state_zp, const int8_t* recurrent_to_gate_weights, + const uint8_t* recurrent_to_gate_weights_ledger, + const float recurrent_to_gate_weights_scale, + int32_t* recurrent_to_gate_row_sums, + // Cell state and weights (peephole LSTM) + const float* cell_state, const int8_t* cell_to_gate_weights, + const float cell_to_gate_weights_scale, + // Layer normalization coefficients (layer norm LSTM) + gate bias + const float* layer_norm_coefficients, const float* gate_bias, + // Array sizes + const int n_batch, const int n_input, const int n_aux_input, + const int n_output, const int n_cell, + const TfLiteFusedActivation activation, + // Output + float* gate, + // Parameters for performance optimizations + const bool is_input_all_zeros, const bool is_aux_input_all_zeros, + const bool is_output_state_all_zeros, bool* compute_row_sums, + // Scratch arrays + float* scratch0, // size: n_batch + float* scratch1, // size: n_cell, only used if peephole LSTM + float* scales, // size: n_batch + int32_t* accum_scratch // For MatrixBatchVectorMultiplyAccumulate +) { + const bool use_peephole = (cell_to_gate_weights != nullptr); + const bool use_layer_norm = (layer_norm_coefficients != nullptr); + + // Initialize scratch buffers with bias for regular lstm or initialize with + // zero for layer norm lstm. + if (use_layer_norm) { + memset(gate, 0, n_cell * n_batch * sizeof(float)); + } else { + micro_tensor_utils::VectorBatchVectorAssign(gate_bias, n_cell, n_batch, + gate); + } + // For each batch and cell: compute input_weight * input. + // Skip if input is all zeros. + if (!is_input_all_zeros) { + if (input_to_gate_weights_ledger != nullptr) { + for (int i = 0; i < n_batch; i++) { + scales[i] = input_to_gate_weights_scale * input_sf[i]; + } + micro_tensor_utils::SparseMatrixBatchVectorMultiplyAccumulate( + input_to_gate_weights, input_to_gate_weights_ledger, n_cell, n_input, + input, scales, n_batch, gate); + + } else { + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + input_to_gate_weights, n_cell, n_input, input, + input_to_gate_weights_scale, input_sf, n_batch, gate, + /*per_channel_scale=*/nullptr, input_zp, accum_scratch, + input_to_gate_row_sums, compute_row_sums, scratch0, nullptr); + } + } + // For each batch and cell: compute aux_input_weight * aux_input. + // Skip if auxiliary input is not available or all zeros. + if (!is_aux_input_all_zeros) { + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + aux_input_to_gate_weights, n_cell, n_aux_input, aux_input, + aux_input_to_gate_weights_scale, aux_input_sf, n_batch, gate, + /*per_channel_scale=*/nullptr, aux_input_zp, accum_scratch, + aux_input_to_gate_row_sums, compute_row_sums, scratch0, nullptr); + } + // For each batch and cell: compute recurrent_weight * output_state. + // Skip if output state is all zeros. + if (!is_output_state_all_zeros) { + if (recurrent_to_gate_weights_ledger != nullptr) { + for (int i = 0; i < n_batch; i++) { + scales[i] = recurrent_to_gate_weights_scale * input_sf[i]; + } + micro_tensor_utils::SparseMatrixBatchVectorMultiplyAccumulate( + recurrent_to_gate_weights, recurrent_to_gate_weights_ledger, n_cell, + n_output, output_state, scales, n_batch, gate); + } else { + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + recurrent_to_gate_weights, n_cell, n_output, output_state, + recurrent_to_gate_weights_scale, output_state_sf, n_batch, gate, + /*per_channel_scale=*/nullptr, output_state_zp, accum_scratch, + recurrent_to_gate_row_sums, compute_row_sums, scratch0, nullptr); + } + } + // For each batch and cell: compute cell_weight .* cell_state (peephole LSTM) + if (use_peephole) { + float* recovered_cell_weights = scratch1; + micro_tensor_utils::VectorScalarMultiply(cell_to_gate_weights, n_cell, + cell_to_gate_weights_scale, + recovered_cell_weights); + micro_tensor_utils::VectorBatchVectorCwiseProductAccumulate( + recovered_cell_weights, n_cell, cell_state, n_batch, gate); + } + // Do layer normalization (if layer norm LSTM) + if (use_layer_norm) { + micro_tensor_utils::MeanStddevNormalization(gate, gate, n_cell, n_batch); + micro_tensor_utils::VectorBatchVectorCwiseProduct( + layer_norm_coefficients, n_cell, gate, n_batch, gate); + micro_tensor_utils::VectorBatchVectorAdd(gate_bias, n_cell, n_batch, gate); + } + // Apply activation + micro_tensor_utils::ApplyActivationToVector(gate, n_cell * n_batch, + activation, gate); +} + +// Calculates the output state tensor of an LSTM step. See Float version too. +// +// Parameters: +// - n_batch: batches: the number of distinct vectors in each array. +// - n_cell, n_output: sizes of vectors. +// - cell_state, output_gate: input vectors, size n_batch*n_cell. +// - projection_weights, projection_weights_scale, projection_bias: +// constant inputs, describing projection matrix and bias. +// - proj_clip: if > 0, clip the output of the projection. +// - output_state: output vector, size n_batch*n_output. Must be contigous. +// - asymmetric_quantize_inputs: parameter to control quantization. +// - projection_weights_row_sums, compute_row_sums: Data for optimized +// MatrixBatchVectorMultiplyAccumulate. +// - scratch0: scratch area of size n_batch*n_cell +// - scratch1: scratch area of size n_batch*n_cell +// - scratch2: scratch area of size n_batch +// - scratch3: scratch area of size n_batch +// - scratch4: scratch area used by MatrixBatchVectorMultiplyAccumulate +// - scales: scratch area of size n_batch +void CalculateLstmOutputHybrid( + int n_batch, int n_cell, int n_output, const float* cell_state, + const float* output_gate, TfLiteFusedActivation activation, + const int8_t* projection_weights, const uint8_t* projection_weights_ledger, + float projection_weights_scale, const float* projection_bias, + const float proj_clip, float* output_state, bool asymmetric_quantize_inputs, + int32_t* projection_weights_row_sums, bool* compute_row_sums, + float* scratch0, int8_t* scratch1, float* scratch2, int32_t* scratch3, + int32_t* scratch4, float* scales) { + micro_tensor_utils::ApplyActivationToVector(cell_state, n_batch * n_cell, + activation, scratch0); + micro_tensor_utils::VectorVectorCwiseProduct(output_gate, scratch0, + n_batch * n_cell, scratch0); + + const bool use_projection = (projection_weights != nullptr); + const bool use_projection_bias = (projection_bias != nullptr); + + if (use_projection) { + if (use_projection_bias) { + micro_tensor_utils::VectorBatchVectorAssign(projection_bias, n_output, + n_batch, output_state); + } else { + memset(output_state, 0, n_batch * n_output * sizeof(float)); + } + if (!micro_tensor_utils::IsZeroVector(scratch0, n_batch * n_cell)) { + // Save quantization and matmul computation for all zero output. + micro_tensor_utils::BatchQuantizeFloats(scratch0, n_batch, n_cell, + scratch1, scratch2, scratch3, + asymmetric_quantize_inputs); + if (projection_weights_ledger != nullptr) { + for (int i = 0; i < n_batch; i++) { + scales[i] = projection_weights_scale * scratch2[i]; + } + micro_tensor_utils::SparseMatrixBatchVectorMultiplyAccumulate( + projection_weights, projection_weights_ledger, n_output, n_cell, + scratch1, scales, n_batch, output_state); + } else { + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + projection_weights, n_output, n_cell, scratch1, + projection_weights_scale, scratch2, n_batch, output_state, + /*per_channel_scale=*/nullptr, scratch3, scratch4, + projection_weights_row_sums, compute_row_sums, scratch2, nullptr); + } + } + if (proj_clip > 0.0f) { + micro_tensor_utils::CwiseClipping(output_state, n_batch * n_output, + proj_clip); + } + } else { + std::memcpy(output_state, scratch0, n_batch * n_output * sizeof(float)); + } +} + +// Calculates a single LSTM gate, int8x8_16 version. +// Implements the same functionality as CalculateLstmGateFloat. +void CalculateLstmGateInteger8x8_16( + // Input and weights + const int8_t* input, const int8_t* input_to_gate_weights, + const int32_t* input_to_gate_bias, const int32_t input_to_gate_scale_a, + const int32_t input_to_gate_scale_b, + // Output state and weights + const int8_t* output_state, const int8_t* recurrent_to_gate_weights, + const int32_t* recurrent_to_gate_bias, + const int32_t recurrent_to_gate_scale_a, + const int32_t recurrent_to_gate_scale_b, + // Cell state and weights + const int16_t* cell_state, const int16_t* cell_to_gate_weights, + const int32_t cell_to_gate_scale_a, const int32_t cell_to_gate_scale_b, + // Layer normalization parameters (layer norm LSTM) + const int16_t* layer_norm_coefficients, const int32_t* layer_norm_bias, + const int32_t layer_norm_input_scale_a, + const int32_t layer_norm_input_scale_b, + const int32_t layer_norm_variance_guard, + // Array sizes + const int n_batch, const int n_input, const int n_output, const int n_cell, + const TfLiteFusedActivation activation, + // Output + int16_t* gate, + // Parameters for performance optimizations + // Scratch arrays + int32_t* scratch5) { + const bool use_peephole = (cell_to_gate_weights != nullptr); + const bool use_layer_norm = (layer_norm_coefficients != nullptr); + + // Initialize scratch buffers with zeros. Note that unlike float and hybrid + // versions, bias is only used in layer normalization. + memset(gate, 0, n_batch * n_cell * sizeof(int16_t)); + // For each batch and cell: compute input_weight * input. + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + input, input_to_gate_bias, input_to_gate_weights, input_to_gate_scale_a, + input_to_gate_scale_b, n_batch, n_input, n_cell, 0, scratch5, gate, + nullptr); + // Note: no aux_input. + + // For each batch and cell: compute recurrent_weight * output_state. + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + output_state, recurrent_to_gate_bias, recurrent_to_gate_weights, + recurrent_to_gate_scale_a, recurrent_to_gate_scale_b, n_batch, n_output, + n_cell, 0, scratch5, gate, nullptr); + // For each batch and cell: compute cell_weight * cell_state (peephole LSTM) + if (use_peephole) { + micro_tensor_utils::VectorBatchVectorCwiseProductAccumulate( + cell_to_gate_weights, n_output, cell_state, n_batch, + cell_to_gate_scale_a, cell_to_gate_scale_b, gate); + } + // Do layer normalization (if layer norm LSTM) + if (use_layer_norm) { + micro_tensor_utils::ApplyLayerNorm( + gate, layer_norm_coefficients, layer_norm_bias, + layer_norm_input_scale_a, layer_norm_input_scale_b, + layer_norm_variance_guard, n_batch, n_cell, gate); + } + // Apply activation + switch (activation) { + case kTfLiteActSigmoid: + micro_tensor_utils::ApplySigmoid(gate, n_batch, n_cell, gate); + break; + case kTfLiteActTanh: + micro_tensor_utils::ApplyTanh(3, gate, n_batch, n_cell, gate); + break; + default: + // Only Sigmoid or Tanh is used. + TFLITE_ASSERT_FALSE; + } +} + +// Updates the LSTM cell state, used by both integer LSTM versions. +// Also see UpdateLstmCellFloat. +// +// Parameters: +// - n_batch, n_cell: sizes of vectors +// - cell_state: input/output vector, size n_batch*n_cell +// - cell_state_scale: scaling factor of cell state. +// - input_gate: input vector, size n_batch*n_cell. +// - forget_gate: input/scratch vector, size n_batch*n_cell, always modified. +// - cell_gate: input vector, size n_batch*n_cell. +// - use_cifg: use 1-forget_gate instead of input_gate. +// - clip: if > 0, clip the resulting cell state to [-clip, +clip]. +void UpdateLstmCellInteger(int n_batch, int n_cell, int16_t* cell_state, + int32_t cell_state_scale, const int16_t* input_gate, + int16_t* forget_gate, const int16_t* cell_gate, + bool use_cifg, int16_t clip) { + // Use the forget_gate array as scratch, as input_gate array is not allocated + // in CIFG case. (Be careful not to write to the scratch before reading the + // forget gate data.) + int16_t* scratch = forget_gate; + + micro_tensor_utils::CwiseMul(forget_gate, cell_state, n_batch, n_cell, 15, + cell_state); + if (use_cifg) { + micro_tensor_utils::Sub1Vector(forget_gate, n_batch * n_cell, scratch); + micro_tensor_utils::CwiseMul(scratch, cell_gate, n_batch, n_cell, + 30 + cell_state_scale, scratch); + } else { + micro_tensor_utils::CwiseMul(input_gate, cell_gate, n_batch, n_cell, + 30 + cell_state_scale, scratch); + } + micro_tensor_utils::CwiseAdd(cell_state, scratch, n_batch, n_cell, + cell_state); + + if (clip > 0) { + micro_tensor_utils::CwiseClipping(cell_state, n_batch * n_cell, clip); + } +} + +// Calculates the output state tensor of an LSTM step. See Float and hybrid +// versions as well. +// +// Parameters: +// - n_batch: batches: the number of distinct vectors in each array. +// - n_cell, n_output: sizes of vectors. +// - cell_state, output_gate: input vectors, size n_batch*n_cell. +// - cell_state_scale: scaling of cell_state. +// - hidden_scale_[a|b]: effective scale of cell_state.*output_gate +// - hidden_zp: zero_point for cell_state.*output_gate +// - projection_weights, proj_scale_[a|b], projection_bias: +// constant inputs, describing projection matrix and bias. +// - output_state_zp: zero point of output_state. (Input, calibrated value.) +// - quantized_proj_clip: if > 0, clip the output of the projection. +// - output_state: output vector, size n_batch*n_output. Must be contigous. +// - scratch0: scratch area of size n_batch*n_cell +// - scratch1: scratch area of size n_batch*n_cell +// - scratch2: scratch area used by MatrixBatchVectorMultiplyAccumulate +void CalculateLstmOutputInteger8x8_16( + int n_batch, int n_cell, int n_output, const int16_t* cell_state, + int32_t cell_state_scale, const int16_t* output_gate, + int32_t hidden_scale_a, int32_t hidden_scale_b, int32_t hidden_zp, + const int8_t* projection_weights, int32_t proj_scale_a, + int32_t proj_scale_b, const int32_t* projection_bias, + int32_t output_state_zp, int8_t quantized_proj_clip, int8_t* output_state, + int16_t* scratch0, int8_t* scratch1, int32_t* scratch2) { + // Note: unlike float/hybrid, the activation is always Tanh. + micro_tensor_utils::ApplyTanh(15 + cell_state_scale, cell_state, n_batch, + n_cell, scratch0); + micro_tensor_utils::CwiseMul(output_gate, scratch0, hidden_scale_a, + hidden_scale_b, n_batch, n_cell, hidden_zp, + scratch1); + + const bool use_projection = (projection_weights != nullptr); + + if (use_projection) { + // Note: no bias like in float/hybrid + memset(output_state, 0, n_batch * n_output * sizeof(int8_t)); + micro_tensor_utils::MatrixBatchVectorMultiplyAccumulate( + scratch1, projection_bias, projection_weights, proj_scale_a, + proj_scale_b, n_batch, n_cell, n_output, output_state_zp, scratch2, + output_state, nullptr); + if (quantized_proj_clip > 0) { + micro_tensor_utils::CwiseClipping(output_state, n_batch * n_output, + quantized_proj_clip); + } + } else { + std::memcpy(output_state, scratch1, n_batch * n_output * sizeof(int8_t)); + } +} + +// Calculates a single LSTM gate, int8x8_8 version. +// Implements the same functionality as CalculateLstmGateFloat. +void CalculateLstmGateInteger8x8_8( + // Inputs and weights + const int8_t* input, int32_t input_zp, const int8_t* input_to_gate_weight, + const int32_t input_to_gate_scale_a, const int32_t input_to_gate_scale_b, + const int32_t input_times_weights_scale_a, + const int32_t input_times_weights_scale_b, + const int32_t input_times_weights_zp, + // Output state and weights + const int8_t* output_state, const int32_t output_state_zp, + const int8_t* recurrent_to_gate_weight, + const int32_t recurrent_to_gate_scale_a, + const int32_t recurrent_to_gate_scale_b, + const int32_t output_state_times_weights_scale_a, + const int32_t output_state_times_weights_scale_b, + const int32_t output_state_times_weights_zp, + // Layer normalization parameters (layer norm LSTM) + const int16_t* layer_norm_gate_weight, + const int32_t layer_norm_gate_scale_a, + const int32_t layer_norm_gate_scale_b, const int32_t* gate_bias, + // Array sizes + const int n_batch, const int n_input, const int n_output, const int n_cell, + const TfLiteFusedActivation activation, + // Output + int16_t* gate, + // Scratch arrays, both sized n_batch*n_cell + int8_t* scratch0, int8_t* scratch1) { + // Multiply input * input_weights => scratch0 + micro_tensor_utils::MatrixBatchVectorMultiply( + input, input_zp, input_to_gate_weight, input_to_gate_scale_a, + input_to_gate_scale_b, n_batch, n_input, n_cell, scratch0, + input_times_weights_zp); + // Multiply output_state * recurrent_weights => scratch1 + micro_tensor_utils::MatrixBatchVectorMultiply( + output_state, output_state_zp, recurrent_to_gate_weight, + recurrent_to_gate_scale_a, recurrent_to_gate_scale_b, n_batch, n_output, + n_cell, scratch1, output_state_times_weights_zp); + // Add scratch0 + scratch1 => gate + micro_tensor_utils::TwoGateSaturatingAdd( + scratch0, input_times_weights_zp, scratch1, output_state_times_weights_zp, + input_times_weights_scale_a, input_times_weights_scale_b, + output_state_times_weights_scale_a, output_state_times_weights_scale_b, + n_batch, n_cell, gate); + // Apply layer normalization. + micro_tensor_utils::ApplyLayerNormFloat( + gate, layer_norm_gate_weight, layer_norm_gate_scale_a, + layer_norm_gate_scale_b, gate_bias, n_batch, n_cell, gate); + // Apply activation. + switch (activation) { + case kTfLiteActSigmoid: + micro_tensor_utils::ApplySigmoidFloat(gate, n_batch, n_cell, gate); + break; + case kTfLiteActTanh: + micro_tensor_utils::ApplyTanhFloat(gate, n_batch, n_cell, -12, gate); + break; + default: + // Only Sigmoid or Tanh is used. + TFLITE_ASSERT_FALSE; + } +} + +// Calculates the output state tensor of an LSTM step. See Float and hybrid +// versions as well. +// +// Parameters: +// - n_batch: batches: the number of distinct vectors in each array. +// - n_cell, n_output: sizes of vectors. +// - cell_state, output_gate: input vectors, size n_batch*n_cell. +// - projection_weights, proj_scale_[a|b], projection_bias: +// constant inputs, describing projection matrix and bias. +// - output_state_zp: zero point of the output state. +// - quantized_proj_clip: if > 0, clip the output of the projection. +// - output_state: output vector, size n_batch*n_output. Must be contigous. +// - scratch: scratch area of size n_batch*n_cell +void CalculateLstmOutputInteger8x8_8( + int n_batch, int n_cell, int n_output, const int16_t* cell_state, + const int16_t* output_gate, const int8_t* projection_weights, + int32_t proj_scale_a, int32_t proj_scale_b, const int32_t* projection_bias, + int32_t output_state_zp, int32_t quantized_proj_clip, int8_t* output_state, + int16_t* scratch) { + // Note: unlike float/hybrid, the activation is always Tanh. + micro_tensor_utils::ApplyTanhFloat(cell_state, n_batch, n_cell, -15, scratch); + micro_tensor_utils::CwiseMul(output_gate, scratch, n_batch, n_cell, + 15 + 15 - 15, scratch); + // Note: no bias like in float/hybrid + micro_tensor_utils::MatrixBatchVectorMultiply( + scratch, projection_weights, proj_scale_a, proj_scale_b, projection_bias, + n_batch, n_cell, n_output, output_state_zp, output_state); + if (quantized_proj_clip > 0) { + micro_tensor_utils::CwiseClipping(output_state, n_batch * n_output, + quantized_proj_clip); + } +} + +// Performs an LSTM batch inference step for input specified by input_ptr. +// The LSTM cell is specified by the pointers to its weights (*_weights_ptr) and +// biases (*_bias_ptr), and buffers (*_scratch), along with additional +// parameters: +// - params: various LSTM params including activation, clipping, etc., +// - n_batch: size of batch, +// - n_cell: number of cells (or units), +// - n_input: the input size, +// - n_aux_input: the auxiliary input size. +// - n_output: the output size. +// - output_batch_leading_dim: the leading dimension of the output buffer. +// +// Input of size 'n_batch * n_input': +// input_ptr +// Input of size 'n_batch * n_aux_input': +// aux_input_ptr - optional (can be nullptr) +// +// LSTM weights: +// Input weights of size 'n_cell * n_input': +// input_to_input_weights - optional +// input_to_forget_weights +// input_to_cell_weights +// input_to_output_weights +// Auxiliary input weights of size 'n_cell * n_aux_input': +// aux_input_to_input_weights - optional +// aux_input_to_forget_weights - optional +// aux_input_to_cell_weights - optional +// aux_input_to_output_weights - optional +// Recurrent weights of size 'n_cell * n_output': +// recurrent_to_input_weights - optional +// recurrent_to_forget_weights +// recurrent_to_cell_weights +// recurrent_to_input_weights +// Peephole weights of size 'n_cell', representing diagonal matrices. +// cell_to_input_weights - optional +// cell_to_cell_weights - optional +// cell_to_output_weights - optional +// Projection weights of size 'n_output * n_cell' +// projection_weights_ptr - optional +// Gate biases of size 'n_cell': +// input_gate_bias_ptr - optional +// forget_gate_bias_ptr +// cell_gate_bias_ptr +// output_gate_bias_ptr +// +// Layer norm coefficients of size 'n_cell', representing diagonal matrices. +// input_layer_norm_coefficients_ptr - optional +// forget_layer_norm_coefficients_ptr - optional +// cell_layer_norm_coefficients_ptr - optional +// output_layer_norm_coefficients_ptr - optional +// +// The pointers to the cell and output state and the output are updated. +// +// The pointers input_ptr, aux_input_ptr, and output_ptr point to data aligned +// in batch_major order, and each step processes batch_size many inputs from +// input_ptr, and updates batch_size many cell and output states. +// +// The output_batch_dim is output.shape[-1], i.e. the outermost dimension of the +// output tensor, and in most cases will be equal to n_output. It is usually not +// when we want to store the LSTM output into a slice of the output tensor, e.g. +// for bidirectional LSTMs with merge_outputs. In this case, the batched +// operations cannot be used since they assume that the batched outputs are +// contiguous, and we manually loop over the batched outputs. +inline void LstmStepFloat( + const float* input_ptr, const float* input_to_input_weights_ptr, + const float* input_to_forget_weights_ptr, + const float* input_to_cell_weights_ptr, + const float* input_to_output_weights_ptr, const float* aux_input_ptr, + const float* aux_input_to_input_weights_ptr, + const float* aux_input_to_forget_weights_ptr, + const float* aux_input_to_cell_weights_ptr, + const float* aux_input_to_output_weights_ptr, + const float* recurrent_to_input_weights_ptr, + const float* recurrent_to_forget_weights_ptr, + const float* recurrent_to_cell_weights_ptr, + const float* recurrent_to_output_weights_ptr, + const float* cell_to_input_weights_ptr, + const float* cell_to_forget_weights_ptr, + const float* cell_to_output_weights_ptr, + const float* input_layer_norm_coefficients_ptr, + const float* forget_layer_norm_coefficients_ptr, + const float* cell_layer_norm_coefficients_ptr, + const float* output_layer_norm_coefficients_ptr, + const float* input_gate_bias_ptr, const float* forget_gate_bias_ptr, + const float* cell_gate_bias_ptr, const float* output_gate_bias_ptr, + const float* projection_weights_ptr, const float* projection_bias_ptr, + const TfLiteLSTMParams* params, int n_batch, int n_cell, int n_input, + int n_aux_input, int n_output, int output_batch_leading_dim, + float* output_state_ptr, float* cell_state_ptr, float* scratch0, + float* scratch1, float* scratch2, float* scratch3, float* output_ptr) { + // Since we have already checked that weights are all there or none, we can + // check the existence of only one to the get the condition. + const bool use_cifg = (input_to_input_weights_ptr == nullptr); + + // Make named scratch buffers. + float* input_gate_scratch = scratch0; + float* forget_gate_scratch = scratch1; + float* cell_gate_scratch = scratch2; + float* output_gate_scratch = scratch3; + + // Check if inputs are all zeros so we can skip some computations. + const bool is_input_all_zeros = + micro_tensor_utils::IsZeroVector(input_ptr, n_batch * n_input); + const bool is_aux_input_all_zeros = + (aux_input_ptr == nullptr || + micro_tensor_utils::IsZeroVector(aux_input_ptr, n_batch * n_aux_input)); + if (!use_cifg) { + // Calculate the input gate. (If not CIFG.) + CalculateLstmGateFloat( + input_ptr, input_to_input_weights_ptr, aux_input_ptr, + aux_input_to_input_weights_ptr, output_state_ptr, + recurrent_to_input_weights_ptr, cell_state_ptr, + cell_to_input_weights_ptr, input_layer_norm_coefficients_ptr, + input_gate_bias_ptr, n_batch, n_input, n_aux_input, n_output, n_cell, + /*activation=*/kTfLiteActSigmoid, input_gate_scratch, + is_input_all_zeros, is_aux_input_all_zeros); + } + // Calculate the forget gate. + CalculateLstmGateFloat( + input_ptr, input_to_forget_weights_ptr, aux_input_ptr, + aux_input_to_forget_weights_ptr, output_state_ptr, + recurrent_to_forget_weights_ptr, cell_state_ptr, + cell_to_forget_weights_ptr, forget_layer_norm_coefficients_ptr, + forget_gate_bias_ptr, n_batch, n_input, n_aux_input, n_output, n_cell, + /*activation=*/kTfLiteActSigmoid, forget_gate_scratch, is_input_all_zeros, + is_aux_input_all_zeros); + // Calculate the cell update gate. + CalculateLstmGateFloat(input_ptr, input_to_cell_weights_ptr, aux_input_ptr, + aux_input_to_cell_weights_ptr, output_state_ptr, + recurrent_to_cell_weights_ptr, /*cell_state=*/nullptr, + /*cell_to_gate_weights=*/nullptr, + cell_layer_norm_coefficients_ptr, cell_gate_bias_ptr, + n_batch, n_input, n_aux_input, n_output, n_cell, + params->activation, cell_gate_scratch, + is_input_all_zeros, is_aux_input_all_zeros); + // Update the cell state. + UpdateLstmCellFloat(n_batch, n_cell, cell_state_ptr, input_gate_scratch, + forget_gate_scratch, cell_gate_scratch, use_cifg, + params->cell_clip); + // Calculate output gate. + CalculateLstmGateFloat( + input_ptr, input_to_output_weights_ptr, aux_input_ptr, + aux_input_to_output_weights_ptr, output_state_ptr, + recurrent_to_output_weights_ptr, cell_state_ptr, + cell_to_output_weights_ptr, output_layer_norm_coefficients_ptr, + output_gate_bias_ptr, n_batch, n_input, n_aux_input, n_output, n_cell, + /*activation=*/kTfLiteActSigmoid, output_gate_scratch, is_input_all_zeros, + is_aux_input_all_zeros); + // Update the output state. + CalculateLstmOutputFloat(n_batch, n_cell, n_output, cell_state_ptr, + output_gate_scratch, params->activation, + projection_weights_ptr, projection_bias_ptr, + params->proj_clip, output_state_ptr, scratch2); + // Copy output state to the output. Note that the output's rows may not be + // contiguous (output_batch_leading_dim != n_output). + for (int b = 0; b < n_batch; b++) { + std::memcpy(output_ptr + b * output_batch_leading_dim, + output_state_ptr + b * n_output, n_output * sizeof(float)); + } +} + +// Same as above but with quantized weight matrices. In detail: +// Input of size 'n_batch * n_input': +// input_ptr +// Input of size 'n_batch * n_aux_input': +// aux_input_ptr - optional (can be nullptr) +// +// LSTM weights: +// Quantized input weights of size 'n_cell * n_input': +// input_to_input_weights - optional +// input_to_forget_weights +// input_to_cell_weights +// input_to_input_weights +// Quantized auxiliary input weights of size 'n_cell * n_aux_input': +// aux_input_to_input_weights - optional +// aux_input_to_forget_weights - optional +// aux_input_to_cell_weights - optional +// aux_input_to_output_weights - optional +// Quantized recurrent weights of size 'n_cell * n_output': +// recurrent_to_input_weights - optional +// recurrent_to_forget_weights +// recurrent_to_cell_weights +// recurrent_to_input_weights +// Quantized peephole weights of size 'n_cell', representing diagonal matrices. +// cell_to_input_weights - optional +// cell_to_cell_weights - optional +// cell_to_output_weights - optional +// Quantized projection weights of size 'n_output * n_cell' +// projection_weights_ptr - optional +// Weight scales (scalars) for each of the weights above. +// input_to_input_weights_scale - optional +// input_to_forget_weights_scale +// input_to_cell_weights_scale +// input_to_output_weights_scale +// aux_input_to_input_weights_scale - optional +// aux_input_to_forget_weights_scale - optional +// aux_input_to_cell_weights_scale - optional +// aux_input_to_output_weights_scale - optional +// recurrent_to_input_weights_scale - optional +// recurrent_to_forget_weights_scale +// recurrent_to_cell_weights_scale +// recurrent_to_output_weights_scale +// cell_to_input_weights_scale, +// cell_to_forget_weights_scale, +// cell_to_output_weights_scale, +// projection_weights_scale - optional +// Gate biases of size 'n_cell': +// input_gate_bias_ptr - optional +// forget_gate_bias_ptr +// cell_gate_bias_ptr +// output_gate_bias_ptr +// +// Layer norm coefficients of size 'n_cell', representing diagonal matrices. +// input_layer_norm_coefficients_ptr - optional +// forget_layer_norm_coefficients_ptr - optional +// cell_layer_norm_coefficients_ptr - optional +// output_layer_norm_coefficients_ptr - optional +// +// Temporary pre-allocated storage for quantized values: +// quantized_input_ptr (same size as input_ptr) +// quantized_output_state_ptr (same size as output_state_ptr) +// quantized_output_scratch (same size as cell_state_ptr) +// Temporary pre-allocated storage for recovered values: +// recovered_cell_weights (same size as cell_to_*_weights) +// +// Outputs: +// output_state_ptr - size 'n_batch * n_output' +// cell_state_ptr - size 'n_batch * n_cell' +// output_ptr - size 'n_batch * output_batch_leading_dim' +inline void LstmStepHybrid( + const float* input_ptr, const int8_t* input_to_input_weights_ptr, + const uint8_t* input_to_input_weights_ledger_ptr, + float input_to_input_weights_scale, + const int8_t* input_to_forget_weights_ptr, + const uint8_t* input_to_forget_weights_ledger_ptr, + float input_to_forget_weights_scale, + const int8_t* input_to_cell_weights_ptr, + const uint8_t* input_to_cell_weights_ledger_ptr, + float input_to_cell_weights_scale, + const int8_t* input_to_output_weights_ptr, + const uint8_t* input_to_output_weights_ledger_ptr, + float input_to_output_weights_scale, const float* aux_input_ptr, + const int8_t* aux_input_to_input_weights_ptr, + float aux_input_to_input_weights_scale, + const int8_t* aux_input_to_forget_weights_ptr, + float aux_input_to_forget_weights_scale, + const int8_t* aux_input_to_cell_weights_ptr, + float aux_input_to_cell_weights_scale, + const int8_t* aux_input_to_output_weights_ptr, + float aux_input_to_output_weights_scale, + const int8_t* recurrent_to_input_weights_ptr, + const uint8_t* recurrent_to_input_weights_ledger_ptr, + float recurrent_to_input_weights_scale, + const int8_t* recurrent_to_forget_weights_ptr, + const uint8_t* recurrent_to_forget_weights_ledger_ptr, + float recurrent_to_forget_weights_scale, + const int8_t* recurrent_to_cell_weights_ptr, + const uint8_t* recurrent_to_cell_weights_ledger_ptr, + float recurrent_to_cell_weights_scale, + const int8_t* recurrent_to_output_weights_ptr, + const uint8_t* recurrent_to_output_weights_ledger_ptr, + float recurrent_to_output_weights_scale, + const int8_t* cell_to_input_weights_ptr, float cell_to_input_weights_scale, + const int8_t* cell_to_forget_weights_ptr, + float cell_to_forget_weights_scale, + const int8_t* cell_to_output_weights_ptr, + float cell_to_output_weights_scale, + const float* input_layer_norm_coefficients_ptr, + const float* forget_layer_norm_coefficients_ptr, + const float* cell_layer_norm_coefficients_ptr, + const float* output_layer_norm_coefficients_ptr, + const float* input_gate_bias_ptr, const float* forget_gate_bias_ptr, + const float* cell_gate_bias_ptr, const float* output_gate_bias_ptr, + const int8_t* projection_weights_ptr, + const uint8_t* projection_weights_ledger_ptr, + float projection_weights_scale, const float* projection_bias_ptr, + const TfLiteLSTMParams* params, int n_batch, int n_cell, int n_input, + int n_aux_input, int n_output, int output_batch_leading_dim, + float* scratch0, float* scratch1, float* scratch2, float* scratch3, + float* scales, float* input_sf, float* aux_input_sf, float* output_state_sf, + float* scaling_factors_scratch, float* recovered_cell_weights, + int8_t* quantized_input_ptr, int8_t* quantized_aux_input_ptr, + int8_t* quantized_output_state_ptr, int8_t* quantized_output_scratch, + float* output_state_ptr, float* cell_state_ptr, int32_t* accum_scratch_ptr, + float* output_ptr, int32_t* input_zp, int32_t* aux_input_zp, + int32_t* output_state_zp, int32_t* row_sums, int row_sums_size, + bool* compute_row_sums, bool asymmetric_quantize_inputs) { + // Since we have already checked that weights are all there or none, we + // can check the existence of only one to the get the condition. + const bool use_cifg = (input_to_input_weights_ptr == nullptr); + // Make named scratch buffers for the different gates. + float* input_gate_scratch = scratch0; + float* forget_gate_scratch = scratch1; + float* cell_gate_scratch = scratch2; + float* output_gate_scratch = scratch3; + + int32_t* input_to_input_row_sums = nullptr; + int32_t* input_to_forget_row_sums = nullptr; + int32_t* input_to_cell_row_sums = nullptr; + int32_t* input_to_output_row_sums = nullptr; + int32_t* aux_input_to_input_row_sums = nullptr; + int32_t* aux_input_to_forget_row_sums = nullptr; + int32_t* aux_input_to_cell_row_sums = nullptr; + int32_t* aux_input_to_output_row_sums = nullptr; + int32_t* recurrent_to_input_row_sums = nullptr; + int32_t* recurrent_to_forget_row_sums = nullptr; + int32_t* recurrent_to_cell_row_sums = nullptr; + int32_t* recurrent_to_output_row_sums = nullptr; + int32_t* projection_weights_row_sums = nullptr; + + if (asymmetric_quantize_inputs) { + int num_row_sums = use_cifg ? 6 : 8; + if (aux_input_ptr != nullptr) { + num_row_sums += use_cifg ? 3 : 4; + } + if (projection_weights_ptr != nullptr) { + num_row_sums += ceil(static_cast(n_output) / n_cell); + } + TFLITE_DCHECK(row_sums_size == num_row_sums); + input_to_input_row_sums = row_sums; + input_to_forget_row_sums = + use_cifg ? input_to_input_row_sums : input_to_input_row_sums + n_cell; + input_to_cell_row_sums = input_to_forget_row_sums + n_cell; + input_to_output_row_sums = input_to_cell_row_sums + n_cell; + if (aux_input_ptr != nullptr) { + aux_input_to_input_row_sums = input_to_output_row_sums + n_cell; + aux_input_to_forget_row_sums = use_cifg + ? aux_input_to_input_row_sums + : aux_input_to_input_row_sums + n_cell; + aux_input_to_cell_row_sums = aux_input_to_forget_row_sums + n_cell; + aux_input_to_output_row_sums = aux_input_to_cell_row_sums + n_cell; + } + recurrent_to_input_row_sums = aux_input_ptr + ? aux_input_to_output_row_sums + n_cell + : input_to_output_row_sums + n_cell; + recurrent_to_forget_row_sums = use_cifg + ? recurrent_to_input_row_sums + : recurrent_to_input_row_sums + n_cell; + recurrent_to_cell_row_sums = recurrent_to_forget_row_sums + n_cell; + recurrent_to_output_row_sums = recurrent_to_cell_row_sums + n_cell; + if (projection_weights_ptr != nullptr) { + projection_weights_row_sums = recurrent_to_output_row_sums + n_cell; + } + if (*compute_row_sums) { + ComputeRowSums( + input_to_input_row_sums, input_to_forget_row_sums, + input_to_cell_row_sums, input_to_output_row_sums, + aux_input_to_input_row_sums, aux_input_to_forget_row_sums, + aux_input_to_cell_row_sums, aux_input_to_output_row_sums, + recurrent_to_input_row_sums, recurrent_to_forget_row_sums, + recurrent_to_cell_row_sums, recurrent_to_output_row_sums, + projection_weights_row_sums, row_sums, n_cell, n_input, n_aux_input, + n_output, input_to_input_weights_ptr, input_to_forget_weights_ptr, + input_to_cell_weights_ptr, input_to_output_weights_ptr, + aux_input_to_input_weights_ptr, aux_input_to_forget_weights_ptr, + aux_input_to_cell_weights_ptr, aux_input_to_output_weights_ptr, + recurrent_to_input_weights_ptr, recurrent_to_forget_weights_ptr, + recurrent_to_cell_weights_ptr, recurrent_to_output_weights_ptr, + projection_weights_ptr, use_cifg, aux_input_ptr); + *compute_row_sums = false; + } + } + + // Check if inputs are all zeros so we can skip some computations. + const bool is_input_all_zeros = + micro_tensor_utils::IsZeroVector(input_ptr, n_batch * n_input); + const bool is_aux_input_all_zeros = + (aux_input_ptr == nullptr || + micro_tensor_utils::IsZeroVector(aux_input_ptr, n_batch * n_aux_input)); + const bool is_output_state_all_zeros = + micro_tensor_utils::IsZeroVector(output_state_ptr, n_batch * n_output); + // Quantize inputs. + if (!is_input_all_zeros) { + micro_tensor_utils::BatchQuantizeFloats( + input_ptr, n_batch, n_input, quantized_input_ptr, input_sf, input_zp, + asymmetric_quantize_inputs); + } + if (!is_aux_input_all_zeros) { + micro_tensor_utils::BatchQuantizeFloats( + aux_input_ptr, n_batch, n_aux_input, quantized_aux_input_ptr, + aux_input_sf, aux_input_zp, asymmetric_quantize_inputs); + } + if (!is_output_state_all_zeros) { + micro_tensor_utils::BatchQuantizeFloats( + output_state_ptr, n_batch, n_output, quantized_output_state_ptr, + output_state_sf, output_state_zp, asymmetric_quantize_inputs); + } + if (!use_cifg) { + // Calculate the input gate. (If not CIFG.) + CalculateLstmGateHybrid( + quantized_input_ptr, input_sf, input_zp, input_to_input_weights_ptr, + input_to_input_weights_ledger_ptr, input_to_input_weights_scale, + input_to_input_row_sums, quantized_aux_input_ptr, aux_input_sf, + aux_input_zp, aux_input_to_input_weights_ptr, + aux_input_to_input_weights_scale, aux_input_to_input_row_sums, + quantized_output_state_ptr, output_state_sf, output_state_zp, + recurrent_to_input_weights_ptr, recurrent_to_input_weights_ledger_ptr, + recurrent_to_input_weights_scale, recurrent_to_input_row_sums, + cell_state_ptr, cell_to_input_weights_ptr, cell_to_input_weights_scale, + input_layer_norm_coefficients_ptr, input_gate_bias_ptr, n_batch, + n_input, n_aux_input, n_output, n_cell, kTfLiteActSigmoid, + input_gate_scratch, is_input_all_zeros, is_aux_input_all_zeros, + is_output_state_all_zeros, compute_row_sums, scaling_factors_scratch, + recovered_cell_weights, scales, accum_scratch_ptr); + } + // Calculate the forget gate. + CalculateLstmGateHybrid( + quantized_input_ptr, input_sf, input_zp, input_to_forget_weights_ptr, + input_to_forget_weights_ledger_ptr, input_to_forget_weights_scale, + input_to_forget_row_sums, quantized_aux_input_ptr, aux_input_sf, + aux_input_zp, aux_input_to_forget_weights_ptr, + aux_input_to_forget_weights_scale, aux_input_to_forget_row_sums, + quantized_output_state_ptr, output_state_sf, output_state_zp, + recurrent_to_forget_weights_ptr, recurrent_to_forget_weights_ledger_ptr, + recurrent_to_forget_weights_scale, recurrent_to_forget_row_sums, + cell_state_ptr, cell_to_forget_weights_ptr, cell_to_forget_weights_scale, + forget_layer_norm_coefficients_ptr, forget_gate_bias_ptr, n_batch, + n_input, n_aux_input, n_output, n_cell, kTfLiteActSigmoid, + forget_gate_scratch, is_input_all_zeros, is_aux_input_all_zeros, + is_output_state_all_zeros, compute_row_sums, scaling_factors_scratch, + recovered_cell_weights, scales, accum_scratch_ptr); + // Calculate the cell update gate. + CalculateLstmGateHybrid( + quantized_input_ptr, input_sf, input_zp, input_to_cell_weights_ptr, + input_to_cell_weights_ledger_ptr, input_to_cell_weights_scale, + input_to_cell_row_sums, quantized_aux_input_ptr, aux_input_sf, + aux_input_zp, aux_input_to_cell_weights_ptr, + aux_input_to_cell_weights_scale, aux_input_to_cell_row_sums, + quantized_output_state_ptr, output_state_sf, output_state_zp, + recurrent_to_cell_weights_ptr, recurrent_to_cell_weights_ledger_ptr, + recurrent_to_cell_weights_scale, recurrent_to_cell_row_sums, + /*cell_state=*/nullptr, /*cell_to_gate_weights=*/nullptr, + /*cell_to_gate_weights_scale=*/0.0f, cell_layer_norm_coefficients_ptr, + cell_gate_bias_ptr, n_batch, n_input, n_aux_input, n_output, n_cell, + params->activation, cell_gate_scratch, is_input_all_zeros, + is_aux_input_all_zeros, is_output_state_all_zeros, compute_row_sums, + scaling_factors_scratch, recovered_cell_weights, scales, + accum_scratch_ptr); + // Update the cell state. + UpdateLstmCellFloat(n_batch, n_cell, cell_state_ptr, input_gate_scratch, + forget_gate_scratch, cell_gate_scratch, use_cifg, + params->cell_clip); + // Calculate the output gate. + CalculateLstmGateHybrid( + quantized_input_ptr, input_sf, input_zp, input_to_output_weights_ptr, + input_to_output_weights_ledger_ptr, input_to_output_weights_scale, + input_to_output_row_sums, quantized_aux_input_ptr, aux_input_sf, + aux_input_zp, aux_input_to_output_weights_ptr, + aux_input_to_output_weights_scale, aux_input_to_output_row_sums, + quantized_output_state_ptr, output_state_sf, output_state_zp, + recurrent_to_output_weights_ptr, recurrent_to_output_weights_ledger_ptr, + recurrent_to_output_weights_scale, recurrent_to_output_row_sums, + cell_state_ptr, cell_to_output_weights_ptr, cell_to_output_weights_scale, + output_layer_norm_coefficients_ptr, output_gate_bias_ptr, n_batch, + n_input, n_aux_input, n_output, n_cell, kTfLiteActSigmoid, + output_gate_scratch, is_input_all_zeros, is_aux_input_all_zeros, + is_output_state_all_zeros, compute_row_sums, scaling_factors_scratch, + recovered_cell_weights, scales, accum_scratch_ptr); + // Update the output state. + CalculateLstmOutputHybrid( + n_batch, n_cell, n_output, cell_state_ptr, output_gate_scratch, + params->activation, projection_weights_ptr, projection_weights_ledger_ptr, + projection_weights_scale, projection_bias_ptr, params->proj_clip, + output_state_ptr, asymmetric_quantize_inputs, projection_weights_row_sums, + compute_row_sums, scratch2, quantized_output_scratch, input_sf, input_zp, + accum_scratch_ptr, scales); + // Copy output state to the output. Note that the output's rows may not be + // contiguous (output_batch_leading_dim != n_output). + for (int b = 0; b < n_batch; b++) { + std::memcpy(output_ptr + b * output_batch_leading_dim, + output_state_ptr + b * n_output, n_output * sizeof(float)); + } +} + +// Fully quantized lstm kernel for 16 bit gate matmul output. +// +// Input tensor of size n_batch * n_input: +// input_ptr +// +// LSTM weights: +// Quantized input weights of size 'n_cell * n_input': +// input_to_input_weight_ptr - optional +// input_to_forget_weight_ptr - optional +// input_to_cell_weight_ptr - optional +// input_to_output_weight_ptr - optional +// +// Quantized recurrent weights of size 'n_cell * n_output': +// recurrent_to_input_weight_ptr - optional +// recurrent_to_forget_weights_ptr +// recurrent_to_cell_weights_ptr +// recurrent_to_input_weights_ptr +// +// Quantized peephole weights of size 'n_cell', representing diagonal matrices. +// cell_to_input_weights - optional +// cell_to_cell_weights - optional +// cell_to_output_weights - optional +// +// Quantized projection weights of size 'n_output * n_cell' +// projection_weight_ptr - optional +// +// Weight scales (scalars) for each of the weights above. +// effective_input_to_input_scale_a - optional +// effective_input_to_input_scale_b - optional +// effective_input_to_forget_scale_a +// effective_input_to_forget_scale_b +// effective_input_to_cell_scale_a +// effective_input_to_cell_scale_b +// effective_input_to_output_scale_a +// effective_input_to_output_scale_b +// effective_recurrent_to_input_scale_a - optional +// effective_recurrent_to_input_scale_b - optional +// effective_recurrent_to_forget_scale_a +// effective_recurrent_to_forget_scale_b +// effective_recurrent_to_cell_scale_a +// effective_recurrent_to_cell_scale_b +// effective_recurrent_to_output_scale_a +// effective_recurrent_to_output_scale_b +// effective_proj_scale_a - optional +// effective_proj_scale_b - optional +// +// Gate biases of size 'n_cell': +// input_gate_bias_ptr - optional +// forget_gate_bias_ptr +// cell_gate_bias_ptr +// output_gate_bias_ptr +// +// Layer norm coefficients of size 'n_cell', representing diagonal matrices. +// layer_norm_input_weight_ptr - optional +// layer_norm_forget_weight_ptr - optional +// layer_norm_cell_weight_ptr - optional +// layer_norm_output_weight_ptr - optional +// +// Layer norm scales of size 'n_cell'. +// layer_norm_input_scale_a - optional +// layer_norm_input_scale_b - optional +// layer_norm_forget_scale_a - optional +// layer_norm_forget_scale_b - optional +// layer_norm_cell_scale_a - optional +// layer_norm_cell_scale_b - optional +// layer_norm_output_scale_a - optional +// layer_norm_output_scale_b - optional +// +// Scalar values: +// quantized_cell_clip: quantized clip value for cell. +// quantized_proj_clip: quantized clip value for projection. +// cell_state_scale: the power of two scale for cell state. +// +// Zero points: +// output_state_zp: zero point of output state +// hidden_zp: zero point for hidden state. +// +// Temporary pre-allocated storage for the calculation. Each is of size n_cell * +// n_batch. +// scratch0 +// scratch1 +// scratch2 +// scratch3 +// scratch4 +// scratch5: this scratch buffer is created purely for optimizing the +// MatrixBatchVectorMultiplyAccumulate. +// +// Outputs: +// output_state_ptr - size 'n_batch * n_output' +// cell_state_ptr - size 'n_batch * n_cell' +// output_ptr - size 'n_batch * n_output' +// TODO(b/159947023): scratch0 is not used if (!cifg). Don't allocate then. +inline void LstmStepInteger8x8_16( + const int8_t* input_ptr, const int8_t* input_to_input_weight_ptr, + int32_t effective_input_to_input_scale_a, + int32_t effective_input_to_input_scale_b, + const int8_t* input_to_forget_weight_ptr, + int32_t effective_input_to_forget_scale_a, + int32_t effective_input_to_forget_scale_b, + const int8_t* input_to_cell_weight_ptr, + int32_t effective_input_to_cell_scale_a, + int32_t effective_input_to_cell_scale_b, + const int8_t* input_to_output_weight_ptr, + int32_t effective_input_to_output_scale_a, + int32_t effective_input_to_output_scale_b, + const int8_t* recurrent_to_input_weight_ptr, + int32_t effective_recurrent_to_input_scale_a, + int32_t effective_recurrent_to_input_scale_b, + const int8_t* recurrent_to_forget_weight_ptr, + int32_t effective_recurrent_to_forget_scale_a, + int32_t effective_recurrent_to_forget_scale_b, + const int8_t* recurrent_to_cell_weight_ptr, + int32_t effective_recurrent_to_cell_scale_a, + int32_t effective_recurrent_to_cell_scale_b, + const int8_t* recurrent_to_output_weight_ptr, + int32_t effective_recurrent_to_output_scale_a, + int32_t effective_recurrent_to_output_scale_b, + const int16_t* cell_to_input_weight_ptr, + int32_t effective_cell_to_input_scale_a, + int32_t effective_cell_to_input_scale_b, + const int16_t* cell_to_forget_weight_ptr, + int32_t effective_cell_to_forget_scale_a, + int32_t effective_cell_to_forget_scale_b, + const int16_t* cell_to_output_weight_ptr, + int32_t effective_cell_to_output_scale_a, + int32_t effective_cell_to_output_scale_b, + const int8_t* projection_weight_ptr, int32_t effective_proj_scale_a, + int32_t effective_proj_scale_b, int32_t hidden_zp, + int32_t effective_hidden_scale_a, int32_t effective_hidden_scale_b, + const int16_t* layer_norm_input_weight_ptr, + int32_t layer_norm_input_scale_a, int32_t layer_norm_input_scale_b, + const int16_t* layer_norm_forget_weight_ptr, + int32_t layer_norm_forget_scale_a, int32_t layer_norm_forget_scale_b, + const int16_t* layer_norm_cell_weight_ptr, int32_t layer_norm_cell_scale_a, + int32_t layer_norm_cell_scale_b, + const int16_t* layer_norm_output_weight_ptr, + int32_t layer_norm_output_scale_a, int32_t layer_norm_output_scale_b, + const int32_t* input_gate_bias_ptr, const int32_t* forget_gate_bias_ptr, + const int32_t* cell_gate_bias_ptr, const int32_t* output_gate_bias_ptr, + int16_t quantized_cell_clip, int8_t quantized_proj_clip, + int32_t cell_state_scale, int32_t input_variance_guard, + int32_t forget_variance_guard, int32_t cell_variance_guard, + int32_t output_variance_guard, + const int32_t* input_to_forget_effective_bias, + const int32_t* recurrent_to_forget_effective_bias, + const int32_t* input_to_cell_effective_bias, + const int32_t* recurrent_to_cell_effective_bias, + const int32_t* input_to_output_effective_bias, + const int32_t* recurrent_to_output_effective_bias, + const int32_t* input_to_input_effective_bias, + const int32_t* recurrent_to_input_effective_bias, + const int32_t* projection_effective_bias, int n_batch, int n_cell, + int n_input, int n_output, int8_t* output_state_ptr, + int32_t output_state_zp, int16_t* cell_state_ptr, int8_t* output_ptr, + int16_t* scratch0, int16_t* scratch1, int16_t* scratch2, int16_t* scratch3, + int8_t* scratch4, int32_t* scratch5) { + // Make named scratch buffers for the different gates. + int16_t* input_gate_scratch = scratch0; + int16_t* forget_gate_scratch = scratch1; + int16_t* cell_gate_scratch = scratch2; + int16_t* output_gate_scratch = scratch3; + + // Since we have already checked that weights are all there or none, we + // can check the existence of only one to the get the condition. + const bool use_cifg = (input_to_input_weight_ptr == nullptr); + + // Check for nullptrs. + TFLITE_DCHECK(input_to_forget_effective_bias); + TFLITE_DCHECK(recurrent_to_forget_effective_bias); + TFLITE_DCHECK(input_to_cell_effective_bias); + TFLITE_DCHECK(recurrent_to_cell_effective_bias); + TFLITE_DCHECK(input_to_output_effective_bias); + TFLITE_DCHECK(recurrent_to_output_effective_bias); + if (!use_cifg) { + TFLITE_DCHECK(input_to_input_effective_bias); + TFLITE_DCHECK(recurrent_to_input_effective_bias); + } + const bool use_projection = (projection_weight_ptr != nullptr); + if (use_projection) { + TFLITE_DCHECK(projection_effective_bias); + } + if (!use_cifg) { + // Calculate the input gate. (If not CIFG.) + CalculateLstmGateInteger8x8_16( + input_ptr, input_to_input_weight_ptr, input_to_input_effective_bias, + effective_input_to_input_scale_a, effective_input_to_input_scale_b, + output_state_ptr, recurrent_to_input_weight_ptr, + recurrent_to_input_effective_bias, effective_recurrent_to_input_scale_a, + effective_recurrent_to_input_scale_b, cell_state_ptr, + cell_to_input_weight_ptr, effective_cell_to_input_scale_a, + effective_cell_to_input_scale_b, layer_norm_input_weight_ptr, + input_gate_bias_ptr, layer_norm_input_scale_a, layer_norm_input_scale_b, + input_variance_guard, n_batch, n_input, n_output, n_cell, + kTfLiteActSigmoid, input_gate_scratch, scratch5); + } + // Calculate the forget gate. + CalculateLstmGateInteger8x8_16( + input_ptr, input_to_forget_weight_ptr, input_to_forget_effective_bias, + effective_input_to_forget_scale_a, effective_input_to_forget_scale_b, + output_state_ptr, recurrent_to_forget_weight_ptr, + recurrent_to_forget_effective_bias, effective_recurrent_to_forget_scale_a, + effective_recurrent_to_forget_scale_b, cell_state_ptr, + cell_to_forget_weight_ptr, effective_cell_to_forget_scale_a, + effective_cell_to_forget_scale_b, layer_norm_forget_weight_ptr, + forget_gate_bias_ptr, layer_norm_forget_scale_a, + layer_norm_forget_scale_b, forget_variance_guard, n_batch, n_input, + n_output, n_cell, kTfLiteActSigmoid, forget_gate_scratch, scratch5); + // Calculate the cell update gate. + CalculateLstmGateInteger8x8_16( + input_ptr, input_to_cell_weight_ptr, input_to_cell_effective_bias, + effective_input_to_cell_scale_a, effective_input_to_cell_scale_b, + output_state_ptr, recurrent_to_cell_weight_ptr, + recurrent_to_cell_effective_bias, effective_recurrent_to_cell_scale_a, + effective_recurrent_to_cell_scale_b, cell_state_ptr, + /*cell_to_gate_weights=*/nullptr, /*cell_to_gate_scale_a=*/0, + /*cell_to_gate_scale_b=*/0, layer_norm_cell_weight_ptr, + cell_gate_bias_ptr, layer_norm_cell_scale_a, layer_norm_cell_scale_b, + cell_variance_guard, n_batch, n_input, n_output, n_cell, kTfLiteActTanh, + cell_gate_scratch, scratch5); + // Update the cell state. + UpdateLstmCellInteger(n_batch, n_cell, cell_state_ptr, cell_state_scale, + input_gate_scratch, forget_gate_scratch, + cell_gate_scratch, use_cifg, quantized_cell_clip); + // Calculate the output gate. + CalculateLstmGateInteger8x8_16( + input_ptr, input_to_output_weight_ptr, input_to_output_effective_bias, + effective_input_to_output_scale_a, effective_input_to_output_scale_b, + output_state_ptr, recurrent_to_output_weight_ptr, + recurrent_to_output_effective_bias, effective_recurrent_to_output_scale_a, + effective_recurrent_to_output_scale_b, cell_state_ptr, + cell_to_output_weight_ptr, effective_cell_to_output_scale_a, + effective_cell_to_output_scale_b, layer_norm_output_weight_ptr, + output_gate_bias_ptr, layer_norm_output_scale_a, + layer_norm_output_scale_b, output_variance_guard, n_batch, n_input, + n_output, n_cell, kTfLiteActSigmoid, output_gate_scratch, scratch5); + // Update the output state. + CalculateLstmOutputInteger8x8_16( + n_batch, n_cell, n_output, cell_state_ptr, cell_state_scale, + output_gate_scratch, effective_hidden_scale_a, effective_hidden_scale_b, + hidden_zp, projection_weight_ptr, effective_proj_scale_a, + effective_proj_scale_b, projection_effective_bias, output_state_zp, + quantized_proj_clip, output_state_ptr, scratch0, scratch4, scratch5); + // Copy output state to the output. Note that unlike float or hybrid, output + // is always contiguous. + std::memcpy(output_ptr, output_state_ptr, + n_batch * n_output * sizeof(int8_t)); +} + +// Fully quantized lstm kernel for 8 bit gate matmul output. +// +// Input tensor of size n_batch * n_input: +// input_ptr +// +// LSTM weights: +// Quantized input weights of size 'n_cell * n_input': +// input_to_input_weight_ptr - optional +// input_to_forget_weight_ptr - optional +// input_to_cell_weight_ptr - optional +// input_to_output_weight_ptr - optional +// +// Quantized recurrent weights of size 'n_cell * n_output': +// recurrent_to_input_weight_ptr - optional +// recurrent_to_forget_weights_ptr +// recurrent_to_cell_weights_ptr +// recurrent_to_input_weights_ptr +// +// Quantized peephole weights of size 'n_cell', representing diagonal matrices. +// cell_to_input_weights - optional +// cell_to_cell_weights - optional +// cell_to_output_weights - optional +// +// Quantized projection weights of size 'n_output * n_cell' +// projection_weight_ptr - optional +// +// Weight scales (scalars) for each of the weights above. +// effective_input_to_input_scale_a - optional +// effective_input_to_input_scale_b - optional +// effective_input_to_forget_scale_a +// effective_input_to_forget_scale_b +// effective_input_to_cell_scale_a +// effective_input_to_cell_scale_b +// effective_input_to_output_scale_a +// effective_input_to_output_scale_b +// effective_recurrent_to_input_scale_a - optional +// effective_recurrent_to_input_scale_b - optional +// effective_recurrent_to_forget_scale_a +// effective_recurrent_to_forget_scale_b +// effective_recurrent_to_cell_scale_a +// effective_recurrent_to_cell_scale_b +// effective_recurrent_to_output_scale_a +// effective_recurrent_to_output_scale_b +// effective_proj_scale_a - optional +// effective_proj_scale_b - optional +// +// Gate biases of size 'n_cell': +// input_gate_bias_ptr - optional +// forget_gate_bias_ptr +// cell_gate_bias_ptr +// output_gate_bias_ptr +// +// Layer norm coefficients of size 'n_cell', representing diagonal matrices. +// layer_norm_input_weight_ptr - optional +// layer_norm_forget_weight_ptr - optional +// layer_norm_cell_weight_ptr - optional +// layer_norm_output_weight_ptr - optional +// +// Layer norm scales of size 'n_cell'. +// layer_norm_input_scale_a - optional +// layer_norm_input_scale_b - optional +// layer_norm_forget_scale_a - optional +// layer_norm_forget_scale_b - optional +// layer_norm_cell_scale_a - optional +// layer_norm_cell_scale_b - optional +// layer_norm_output_scale_a - optional +// layer_norm_output_scale_b - optional +// +// Scalar values: +// quantized_cell_clip: quantized clip value for cell. +// quantized_proj_clip: quantized clip value for projection. +// cell_state_scale: the power of two scale for cell state. +// +// Zero points: +// input_zp: zero point for input tensor. +// output_state_zp: zero point of output state. +// hidden_zp: zero point for hidden state. +// +// Temporary pre-allocated storage for the calculation. Each is of size n_cell * +// n_batch. +// scratch0 +// scratch1 +// scratch2 +// scratch3 +// scratch4 +// scratch5 +// scratch6 +// scratch7 +// +// Outputs: +// output_state_ptr - size 'n_batch * n_output' +// cell_state_ptr - size 'n_batch * n_cell' +// output_ptr - size 'n_batch * n_output' +// +// Can move zero point calculation into Prepare() for better perfomance. +// TODO(b/159947023): scratch5 is unused, remove. +inline void LstmStepInteger8x8_8( + const int8_t* input_ptr, int32_t input_zp, + const int8_t* input_to_input_weight_ptr, + int32_t effective_input_to_input_scale_a, + int32_t effective_input_to_input_scale_b, + const int8_t* input_to_forget_weight_ptr, + int32_t effective_input_to_forget_scale_a, + int32_t effective_input_to_forget_scale_b, + const int8_t* input_to_cell_weight_ptr, + int32_t effective_input_to_cell_scale_a, + int32_t effective_input_to_cell_scale_b, + const int8_t* input_to_output_weight_ptr, + int32_t effective_input_to_output_scale_a, + int32_t effective_input_to_output_scale_b, + const int8_t* recurrent_to_input_weight_ptr, + int32_t effective_recurrent_to_input_scale_a, + int32_t effective_recurrent_to_input_scale_b, + const int8_t* recurrent_to_forget_weight_ptr, + int32_t effective_recurrent_to_forget_scale_a, + int32_t effective_recurrent_to_forget_scale_b, + const int8_t* recurrent_to_cell_weight_ptr, + int32_t effective_recurrent_to_cell_scale_a, + int32_t effective_recurrent_to_cell_scale_b, + const int8_t* recurrent_to_output_weight_ptr, + int32_t effective_recurrent_to_output_scale_a, + int32_t effective_recurrent_to_output_scale_b, + const int8_t* cell_to_input_weight_ptr, + int32_t effective_cell_to_input_scale_a, + int32_t effective_cell_to_input_scale_b, + const int8_t* cell_to_forget_weight_ptr, + int32_t effective_cell_to_forget_scale_a, + int32_t effective_cell_to_forget_scale_b, + const int8_t* cell_to_output_weight_ptr, + int32_t effective_cell_to_output_scale_a, + int32_t effective_cell_to_output_scale_b, + const int8_t* projection_weight_ptr, int32_t effective_proj_scale_a, + int32_t effective_proj_scale_b, const int16_t* layer_norm_input_weight_ptr, + int32_t layer_norm_input_scale_a, int32_t layer_norm_input_scale_b, + const int16_t* layer_norm_forget_weight_ptr, + int32_t layer_norm_forget_scale_a, int32_t layer_norm_forget_scale_b, + const int16_t* layer_norm_cell_weight_ptr, int32_t layer_norm_cell_scale_a, + int32_t layer_norm_cell_scale_b, + const int16_t* layer_norm_output_weight_ptr, + int32_t layer_norm_output_scale_a, int32_t layer_norm_output_scale_b, + const int32_t* input_gate_bias_ptr, const int32_t* forget_gate_bias_ptr, + const int32_t* cell_gate_bias_ptr, const int32_t* output_gate_bias_ptr, + const int32_t* projection_bias_ptr, const TfLiteLSTMParams* params, + const int32_t* intermediate_scale_a, const int32_t* intermediate_scale_b, + const int32_t* intermediate_zp, int16_t quantized_cell_clip, + int8_t quantized_proj_clip, int n_batch, int n_cell, int n_input, + int n_output, int output_batch_leading_dim, int8_t* output_state_ptr, + int32_t output_state_zp, int16_t* cell_state_ptr, int8_t* output_ptr, + int8_t* scratch0, int8_t* scratch1, int16_t* scratch2, int16_t* scratch3, + int16_t* scratch4, int16_t* scratch5, int16_t* scratch6, + int16_t* scratch7) { + // TODO(b/159066113): scratch5 is unused, remove. + + // Make named scratch buffers for the different gates. + int16_t* forget_gate_scratch = scratch2; + int16_t* cell_gate_scratch = scratch3; + int16_t* output_gate_scratch = scratch4; + // no-CIFG is not supported here + + // Calculate the forget gate. + CalculateLstmGateInteger8x8_8( + input_ptr, input_zp, input_to_forget_weight_ptr, + effective_input_to_forget_scale_a, effective_input_to_forget_scale_b, + intermediate_scale_a[2], intermediate_scale_b[2], intermediate_zp[4], + output_state_ptr, output_state_zp, recurrent_to_forget_weight_ptr, + effective_recurrent_to_forget_scale_a, + effective_recurrent_to_forget_scale_b, intermediate_scale_a[3], + intermediate_scale_b[3], intermediate_zp[5], layer_norm_forget_weight_ptr, + layer_norm_forget_scale_a, layer_norm_forget_scale_b, + forget_gate_bias_ptr, n_batch, n_input, n_output, n_cell, + kTfLiteActSigmoid, forget_gate_scratch, scratch0, scratch1); + // Calculate the cell update gate. + CalculateLstmGateInteger8x8_8( + input_ptr, input_zp, input_to_cell_weight_ptr, + effective_input_to_cell_scale_a, effective_input_to_cell_scale_b, + intermediate_scale_a[4], intermediate_scale_b[4], intermediate_zp[7], + output_state_ptr, output_state_zp, recurrent_to_cell_weight_ptr, + effective_recurrent_to_cell_scale_a, effective_recurrent_to_cell_scale_b, + intermediate_scale_a[5], intermediate_scale_b[5], intermediate_zp[8], + layer_norm_cell_weight_ptr, layer_norm_cell_scale_a, + layer_norm_cell_scale_b, cell_gate_bias_ptr, n_batch, n_input, n_output, + n_cell, kTfLiteActTanh, cell_gate_scratch, scratch0, scratch1); + // Update the cell state. + UpdateLstmCellInteger(n_batch, n_cell, cell_state_ptr, + /*cell_state_scale=*/-15, /*input_gate=*/nullptr, + forget_gate_scratch, cell_gate_scratch, + /*use_cifg=*/true, quantized_cell_clip); + // Calculate the output gate. + CalculateLstmGateInteger8x8_8( + input_ptr, input_zp, input_to_output_weight_ptr, + effective_input_to_output_scale_a, effective_input_to_output_scale_b, + intermediate_scale_a[6], intermediate_scale_b[6], intermediate_zp[10], + output_state_ptr, output_state_zp, recurrent_to_output_weight_ptr, + effective_recurrent_to_output_scale_a, + effective_recurrent_to_output_scale_b, intermediate_scale_a[11], + intermediate_scale_b[7], intermediate_zp[7], layer_norm_output_weight_ptr, + layer_norm_output_scale_a, layer_norm_output_scale_b, + output_gate_bias_ptr, n_batch, n_input, n_output, n_cell, + kTfLiteActSigmoid, output_gate_scratch, scratch0, scratch1); + // Update the output state. + CalculateLstmOutputInteger8x8_8( + n_batch, n_cell, n_output, cell_state_ptr, output_gate_scratch, + projection_weight_ptr, effective_proj_scale_a, effective_proj_scale_b, + projection_bias_ptr, output_state_zp, quantized_proj_clip, + output_state_ptr, scratch2); + // Copy output state to the output. Note that unlike float or hybrid, output + // is always contigous. + std::memcpy(output_ptr, output_state_ptr, + n_batch * n_output * sizeof(int8_t)); +} + +} // namespace + +TfLiteStatus EvalFloatLstm( + const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* aux_input, + const TfLiteEvalTensor* aux_input_to_input_weights, + const TfLiteEvalTensor* aux_input_to_forget_weights, + const TfLiteEvalTensor* aux_input_to_cell_weights, + const TfLiteEvalTensor* aux_input_to_output_weights, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + bool forward_sequence, bool time_major, int output_offset, + float* scratch_buffer, TfLiteEvalTensor* output_state, + TfLiteEvalTensor* cell_state, TfLiteEvalTensor* output) { + TFLITE_DCHECK(input->dims->size >= 2 && input->dims->size <= 3); + int max_time, n_batch; + if (input->dims->size == 3) { + max_time = (time_major) ? input->dims->data[0] : input->dims->data[1]; + n_batch = (time_major) ? input->dims->data[1] : input->dims->data[0]; + } else { + max_time = 1; + n_batch = input->dims->data[0]; + } + const int n_input = input->dims->data[input->dims->size - 1]; + const int aux_input_size = + (aux_input) ? aux_input->dims->data[aux_input->dims->size - 1] : 0; + + // n_cell and n_output will be the same size when there is no projection. + const int n_cell = input_to_output_weights->dims->data[0]; + const int n_output = recurrent_to_output_weights->dims->data[1]; + + // Since we have already checked that weights are all there or none, we can + // check the existence of only one to the get the condition. + const bool use_cifg = (input_to_input_weights == nullptr); + + // Index the scratch buffers pointers to the global scratch buffer. + float* input_gate_scratch = nullptr; + float* cell_gate_scratch = nullptr; + float* forget_gate_scratch = nullptr; + float* output_gate_scratch = nullptr; + if (use_cifg) { + cell_gate_scratch = scratch_buffer; + forget_gate_scratch = scratch_buffer + n_cell * n_batch; + output_gate_scratch = scratch_buffer + 2 * n_cell * n_batch; + } else { + input_gate_scratch = scratch_buffer; + cell_gate_scratch = scratch_buffer + n_cell * n_batch; + forget_gate_scratch = scratch_buffer + 2 * n_cell * n_batch; + output_gate_scratch = scratch_buffer + 3 * n_cell * n_batch; + } + + const int output_batch_leading_dim = + output->dims->data[output->dims->size - 1]; + if (time_major) { + // Loop through the sequence. + const int input_step = n_batch * n_input; + const int output_step = n_batch * output_batch_leading_dim; + for (int t = 0; t < max_time; t++) { + // If this is the forward_sequence, step forward, otherwise step + // backwards. + const int t_rel = forward_sequence ? t : max_time - t - 1; + const float* input_ptr = + tflite::micro::GetTensorData(input) + t_rel * input_step; + const float* aux_input_ptr = nullptr; + if (aux_input) { + aux_input_ptr = + tflite::micro::GetTensorData(aux_input) + t_rel * input_step; + } + float* output_ptr = tflite::micro::GetTensorData(output) + + t_rel * output_step + output_offset; + + LstmStepFloat( + input_ptr, + input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_input_weights), + input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_forget_weights), + input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_cell_weights), + input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_output_weights), + aux_input_ptr, + aux_input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(aux_input_to_input_weights), + aux_input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_forget_weights), + aux_input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(aux_input_to_cell_weights), + aux_input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_output_weights), + recurrent_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_input_weights), + recurrent_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights), + recurrent_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_cell_weights), + recurrent_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights), + cell_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_input_weights), + cell_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_forget_weights), + cell_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_output_weights), + input_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_layer_norm_coefficients), + forget_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + forget_layer_norm_coefficients), + cell_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + cell_layer_norm_coefficients), + output_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + output_layer_norm_coefficients), + input_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_gate_bias), + forget_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(forget_gate_bias), + cell_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_gate_bias), + output_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(output_gate_bias), + projection_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_weights), + projection_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_bias), + params, n_batch, n_cell, n_input, aux_input_size, n_output, + output_batch_leading_dim, + tflite::micro::GetTensorData(output_state), + tflite::micro::GetTensorData(cell_state), input_gate_scratch, + forget_gate_scratch, cell_gate_scratch, output_gate_scratch, + output_ptr); + } + } else { + for (int b = 0; b < n_batch; b++) { + const int input_step = n_input; + const int output_step = output_batch_leading_dim; + for (int t = 0; t < max_time; t++) { + // If this is the forward_sequence, step forward, otherwise step + // backwards. + const int t_rel = forward_sequence ? t : max_time - t - 1; + const int time_offset = b * max_time + t_rel; + const float* input_ptr = tflite::micro::GetTensorData(input) + + time_offset * input_step; + const float* aux_input_ptr = nullptr; + if (aux_input) { + aux_input_ptr = tflite::micro::GetTensorData(aux_input) + + time_offset * input_step; + } + float* output_ptr = tflite::micro::GetTensorData(output) + + time_offset * output_step + output_offset; + + // Offset the {output,cell}_state pointers to the right batch. + float* output_state_ptr = + tflite::micro::GetTensorData(output_state) + + b * output_batch_leading_dim; + float* cell_state_ptr = + tflite::micro::GetTensorData(cell_state) + b * n_cell; + // Offset the scratch pointers to the right batch. + float* input_gate_scratch_ptr = + input_gate_scratch ? input_gate_scratch + b * n_cell : nullptr; + float* forget_gate_scratch_ptr = forget_gate_scratch + b * n_cell; + float* cell_gate_scratch_ptr = cell_gate_scratch + b * n_cell; + float* output_gate_scratch_ptr = output_gate_scratch + b * n_cell; + + LstmStepFloat( + input_ptr, + input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_input_weights), + input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_forget_weights), + input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_cell_weights), + input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_output_weights), + aux_input_ptr, + aux_input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_input_weights), + aux_input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_forget_weights), + aux_input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_cell_weights), + aux_input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_output_weights), + recurrent_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_input_weights), + recurrent_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights), + recurrent_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_cell_weights), + recurrent_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights), + cell_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_input_weights), + cell_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_forget_weights), + cell_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_output_weights), + input_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_layer_norm_coefficients), + forget_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + forget_layer_norm_coefficients), + cell_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + cell_layer_norm_coefficients), + output_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + output_layer_norm_coefficients), + input_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_gate_bias), + forget_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(forget_gate_bias), + cell_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_gate_bias), + output_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(output_gate_bias), + projection_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_weights), + projection_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_bias), + params, + /*n_batch=*/1, n_cell, n_input, aux_input_size, n_output, + output_batch_leading_dim, output_state_ptr, cell_state_ptr, + input_gate_scratch_ptr, forget_gate_scratch_ptr, + cell_gate_scratch_ptr, output_gate_scratch_ptr, output_ptr); + } + } + } + return kTfLiteOk; +} + +TfLiteStatus EvalHybridLstm( + const HybridLstmScales* hybrid_lstm_scales, const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_input_weights_ledger, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_forget_weights_ledger, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_cell_weights_ledger, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* input_to_output_weights_ledger, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_input_weights_ledger, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights_ledger, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights_ledger, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* recurrent_to_output_weights_ledger, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* aux_input, + const TfLiteEvalTensor* aux_input_to_input_weights, + const TfLiteEvalTensor* aux_input_to_forget_weights, + const TfLiteEvalTensor* aux_input_to_cell_weights, + const TfLiteEvalTensor* aux_input_to_output_weights, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_weights_ledger, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + bool forward_sequence, bool time_major, int output_offset, + float* scratch_buffer, float* input_sf, float* aux_input_sf, + float* output_state_sf, float* prod_scaling_factors, + float* recovered_cell_weights, int8_t* input_quantized, + int8_t* aux_input_quantized, int8_t* output_state_quantized, + int8_t* cell_state_quantized, float* scales, TfLiteEvalTensor* output_state, + TfLiteEvalTensor* cell_state, int32_t* output_scratch_buffer, + TfLiteEvalTensor* output, int32_t* input_zp, int32_t* aux_input_zp, + int32_t* output_state_zp, int32_t* row_sums, int row_sums_size, + bool* compute_row_sums) { + TFLITE_DCHECK(input->dims->size >= 2 && input->dims->size <= 3); + const int n_input = input->dims->data[input->dims->size - 1]; + int max_time, n_batch; + if (input->dims->size == 2) { + max_time = 1; + n_batch = input->dims->data[0]; + } else { + max_time = (time_major) ? input->dims->data[0] : input->dims->data[1]; + n_batch = (time_major) ? input->dims->data[1] : input->dims->data[0]; + } + const int aux_input_size = + (aux_input) ? aux_input->dims->data[aux_input->dims->size - 1] : 0; + // n_cell and n_output will be the same size when there is no projection. + const int n_cell = input_to_output_weights->dims->data[0]; + const int n_output = recurrent_to_output_weights->dims->data[1]; + + // Since we have already checked that weights are all there or none, we can + // check the existence of only one to get the condition. + const bool use_cifg = (input_to_input_weights == nullptr); + + float* input_gate_scratch = nullptr; + float* cell_gate_scratch = nullptr; + float* forget_gate_scratch = nullptr; + float* output_gate_scratch = nullptr; + if (use_cifg) { + cell_gate_scratch = scratch_buffer; + forget_gate_scratch = scratch_buffer + n_cell * n_batch; + output_gate_scratch = scratch_buffer + 2 * n_cell * n_batch; + } else { + input_gate_scratch = scratch_buffer; + cell_gate_scratch = scratch_buffer + n_cell * n_batch; + forget_gate_scratch = scratch_buffer + 2 * n_cell * n_batch; + output_gate_scratch = scratch_buffer + 3 * n_cell * n_batch; + } + + const int output_batch_leading_dim = + output->dims->data[output->dims->size - 1]; + + int32_t* input_zp_ptr = nullptr; + int32_t* aux_input_zp_ptr = nullptr; + int32_t* output_state_zp_ptr = nullptr; + int32_t* row_sums_ptr = nullptr; + if (params->asymmetric_quantize_inputs) { + input_zp_ptr = input_zp; + aux_input_zp_ptr = aux_input_zp; + output_state_zp_ptr = output_state_zp; + row_sums_ptr = row_sums; + } + + if (time_major) { + // Feed the sequence into the LSTM step-by-step. + const int input_step = n_batch * n_input; + const int output_step = n_batch * output_batch_leading_dim; + for (int t = 0; t < max_time; t++) { + // If this is the forward_sequence, step forward, otherwise step + // backwards. + const int t_rel = forward_sequence ? t : max_time - t - 1; + const float* input_ptr = + tflite::micro::GetTensorData(input) + t_rel * input_step; + const float* aux_input_ptr = nullptr; + if (aux_input) { + aux_input_ptr = + tflite::micro::GetTensorData(aux_input) + t_rel * input_step; + } + float* output_ptr = tflite::micro::GetTensorData(output) + + t_rel * output_step + output_offset; + LstmStepHybrid( + input_ptr, + input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_input_weights), + input_to_input_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_input_weights_ledger), + hybrid_lstm_scales->input_to_input_weights_scale, + input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_forget_weights), + input_to_forget_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_forget_weights_ledger), + hybrid_lstm_scales->input_to_forget_weights_scale, + input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_cell_weights), + input_to_cell_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_cell_weights_ledger), + hybrid_lstm_scales->input_to_cell_weights_scale, + input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_output_weights), + input_to_output_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_output_weights_ledger), + hybrid_lstm_scales->input_to_output_weights_scale, aux_input_ptr, + aux_input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_input_weights), + hybrid_lstm_scales->aux_input_to_input_weights_scale, + aux_input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_forget_weights), + hybrid_lstm_scales->aux_input_to_forget_weights_scale, + aux_input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(aux_input_to_cell_weights), + hybrid_lstm_scales->aux_input_to_cell_weights_scale, + aux_input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_output_weights), + hybrid_lstm_scales->aux_input_to_output_weights_scale, + recurrent_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_input_weights), + recurrent_to_input_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_input_weights_ledger), + hybrid_lstm_scales->recurrent_to_input_weights_scale, + recurrent_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights), + recurrent_to_forget_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights_ledger), + hybrid_lstm_scales->recurrent_to_forget_weights_scale, + recurrent_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_cell_weights), + recurrent_to_cell_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_cell_weights_ledger), + hybrid_lstm_scales->recurrent_to_cell_weights_scale, + recurrent_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights), + recurrent_to_output_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights_ledger), + hybrid_lstm_scales->recurrent_to_output_weights_scale, + cell_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_input_weights), + hybrid_lstm_scales->cell_to_input_weights_scale, + cell_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_forget_weights), + hybrid_lstm_scales->cell_to_forget_weights_scale, + cell_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_output_weights), + hybrid_lstm_scales->cell_to_output_weights_scale, + input_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_layer_norm_coefficients), + forget_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + forget_layer_norm_coefficients), + cell_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + cell_layer_norm_coefficients), + output_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + output_layer_norm_coefficients), + input_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_gate_bias), + forget_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(forget_gate_bias), + cell_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_gate_bias), + output_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(output_gate_bias), + projection_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_weights), + projection_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + projection_weights_ledger), + hybrid_lstm_scales->projection_weights_scale, + projection_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_bias), + params, n_batch, n_cell, n_input, aux_input_size, n_output, + output_batch_leading_dim, input_gate_scratch, forget_gate_scratch, + cell_gate_scratch, output_gate_scratch, scales, input_sf, + aux_input_sf, output_state_sf, prod_scaling_factors, + recovered_cell_weights, input_quantized, aux_input_quantized, + output_state_quantized, cell_state_quantized, + tflite::micro::GetTensorData(output_state), + tflite::micro::GetTensorData(cell_state), + output_scratch_buffer, output_ptr, input_zp_ptr, aux_input_zp_ptr, + output_state_zp_ptr, row_sums_ptr, row_sums_size, compute_row_sums, + params->asymmetric_quantize_inputs); + } + } else { + for (int b = 0; b < n_batch; b++) { + const int input_step = n_input; + const int output_step = output_batch_leading_dim; + for (int t = 0; t < max_time; t++) { + // If this is the forward_sequence, step forward, otherwise step + // backwards. + const int t_rel = forward_sequence ? t : max_time - t - 1; + const int time_offset = b * max_time + t_rel; + const float* input_ptr = tflite::micro::GetTensorData(input) + + time_offset * input_step; + const float* aux_input_ptr = nullptr; + if (aux_input) { + aux_input_ptr = tflite::micro::GetTensorData(aux_input) + + time_offset * input_step; + } + float* output_ptr = tflite::micro::GetTensorData(output) + + time_offset * output_step + output_offset; + + // Offset the {output,cell}_state pointers to the right batch. + float* output_state_ptr = + tflite::micro::GetTensorData(output_state) + + b * output_batch_leading_dim; + float* cell_state_ptr = + tflite::micro::GetTensorData(cell_state) + b * n_cell; + // Offset the scratch pointers to the right batch. + float* input_gate_scratch_ptr = + input_gate_scratch ? input_gate_scratch + b * n_cell : nullptr; + float* forget_gate_scratch_ptr = forget_gate_scratch + b * n_cell; + float* cell_gate_scratch_ptr = cell_gate_scratch + b * n_cell; + float* output_gate_scratch_ptr = output_gate_scratch + b * n_cell; + + LstmStepHybrid( + input_ptr, + input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_input_weights), + input_to_input_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_input_weights_ledger), + hybrid_lstm_scales->input_to_input_weights_scale, + input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_forget_weights), + input_to_forget_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_forget_weights_ledger), + hybrid_lstm_scales->input_to_forget_weights_scale, + input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_cell_weights), + input_to_cell_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_cell_weights_ledger), + hybrid_lstm_scales->input_to_cell_weights_scale, + input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_output_weights), + input_to_output_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_to_output_weights_ledger), + hybrid_lstm_scales->input_to_output_weights_scale, aux_input_ptr, + aux_input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_input_weights), + hybrid_lstm_scales->aux_input_to_input_weights_scale, + aux_input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_forget_weights), + hybrid_lstm_scales->aux_input_to_forget_weights_scale, + aux_input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_cell_weights), + hybrid_lstm_scales->aux_input_to_cell_weights_scale, + aux_input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + aux_input_to_output_weights), + hybrid_lstm_scales->aux_input_to_output_weights_scale, + recurrent_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_input_weights), + recurrent_to_input_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_input_weights_ledger), + hybrid_lstm_scales->recurrent_to_input_weights_scale, + recurrent_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights), + recurrent_to_forget_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights_ledger), + hybrid_lstm_scales->recurrent_to_forget_weights_scale, + recurrent_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_cell_weights), + recurrent_to_cell_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_cell_weights_ledger), + hybrid_lstm_scales->recurrent_to_cell_weights_scale, + recurrent_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights), + recurrent_to_output_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights_ledger), + hybrid_lstm_scales->recurrent_to_output_weights_scale, + cell_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_input_weights), + hybrid_lstm_scales->cell_to_input_weights_scale, + cell_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_forget_weights), + hybrid_lstm_scales->cell_to_forget_weights_scale, + cell_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_output_weights), + hybrid_lstm_scales->cell_to_output_weights_scale, + input_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_layer_norm_coefficients), + forget_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + forget_layer_norm_coefficients), + cell_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + cell_layer_norm_coefficients), + output_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + output_layer_norm_coefficients), + input_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_gate_bias), + forget_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(forget_gate_bias), + cell_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_gate_bias), + output_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(output_gate_bias), + projection_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_weights), + projection_weights_ledger == nullptr + ? nullptr + : tflite::micro::GetTensorData( + projection_weights_ledger), + hybrid_lstm_scales->projection_weights_scale, + projection_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_bias), + params, + /*n_batch=*/1, n_cell, n_input, aux_input_size, n_output, + output_batch_leading_dim, input_gate_scratch_ptr, + forget_gate_scratch_ptr, cell_gate_scratch_ptr, + output_gate_scratch_ptr, scales, input_sf, aux_input_sf, + output_state_sf, prod_scaling_factors, recovered_cell_weights, + input_quantized, aux_input_quantized, output_state_quantized, + cell_state_quantized, output_state_ptr, cell_state_ptr, + output_scratch_buffer, output_ptr, input_zp_ptr, aux_input_zp_ptr, + output_state_zp_ptr, row_sums_ptr, row_sums_size, compute_row_sums, + params->asymmetric_quantize_inputs); + } + } + } + + return kTfLiteOk; +} + +TfLiteStatus EvalInteger8x8_16Lstm( + const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + bool forward_sequence, bool time_major, + const IntegerLstmParameter* integer_lstm_param, int32_t output_state_zp, + TfLiteEvalTensor* output_state, TfLiteEvalTensor* cell_state, + TfLiteEvalTensor* output, int16_t* scratch0, int16_t* scratch1, + int16_t* scratch2, int16_t* scratch3, int8_t* scratch4, int32_t* scratch5) { + TFLITE_DCHECK(input->dims->size >= 2 && input->dims->size <= 3); + const int n_input = input->dims->data[input->dims->size - 1]; + int max_time, n_batch; + if (input->dims->size == 2) { + max_time = 1; + n_batch = input->dims->data[0]; + } else { + max_time = (time_major) ? input->dims->data[0] : input->dims->data[1]; + n_batch = (time_major) ? input->dims->data[1] : input->dims->data[0]; + } + + // n_cell and n_output will be the same size when there is no projection. + const int n_cell = input_to_output_weights->dims->data[0]; + const int n_output = recurrent_to_output_weights->dims->data[1]; + + // Get params for time/batch/sequence. + const int output_batch_leading_dim = + output->dims->data[output->dims->size - 1]; + + if (time_major) { + const int input_step = n_batch * n_input; + const int output_step = n_batch * output_batch_leading_dim; + for (int t = 0; t < max_time; t++) { + const int t_rel = t; + int8_t* output_ptr = + tflite::micro::GetTensorData(output) + t_rel * output_step; + const int8_t* input_ptr = + tflite::micro::GetTensorData(input) + t_rel * input_step; + LstmStepInteger8x8_16( + input_ptr, + input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_input_weights), + integer_lstm_param->effective_input_to_input_scale_a, + integer_lstm_param->effective_input_to_input_scale_b, + input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_forget_weights), + integer_lstm_param->effective_input_to_forget_scale_a, + integer_lstm_param->effective_input_to_forget_scale_b, + input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_cell_weights), + integer_lstm_param->effective_input_to_cell_scale_a, + integer_lstm_param->effective_input_to_cell_scale_b, + input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_output_weights), + integer_lstm_param->effective_input_to_output_scale_a, + integer_lstm_param->effective_input_to_output_scale_b, + recurrent_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_input_weights), + integer_lstm_param->effective_recurrent_to_input_scale_a, + integer_lstm_param->effective_recurrent_to_input_scale_b, + recurrent_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights), + integer_lstm_param->effective_recurrent_to_forget_scale_a, + integer_lstm_param->effective_recurrent_to_forget_scale_b, + recurrent_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_cell_weights), + integer_lstm_param->effective_recurrent_to_cell_scale_a, + integer_lstm_param->effective_recurrent_to_cell_scale_b, + recurrent_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights), + integer_lstm_param->effective_recurrent_to_output_scale_a, + integer_lstm_param->effective_recurrent_to_output_scale_b, + cell_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_input_weights), + integer_lstm_param->effective_cell_to_input_scale_a, + integer_lstm_param->effective_cell_to_input_scale_b, + cell_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_forget_weights), + integer_lstm_param->effective_cell_to_forget_scale_a, + integer_lstm_param->effective_cell_to_forget_scale_b, + cell_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_output_weights), + integer_lstm_param->effective_cell_to_output_scale_a, + integer_lstm_param->effective_cell_to_output_scale_b, + projection_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_weights), + integer_lstm_param->effective_proj_scale_a, + integer_lstm_param->effective_proj_scale_b, + integer_lstm_param->hidden_zp, + integer_lstm_param->effective_hidden_scale_a, + integer_lstm_param->effective_hidden_scale_b, + input_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_layer_norm_coefficients), + integer_lstm_param->layer_norm_input_scale_a, + integer_lstm_param->layer_norm_input_scale_b, + forget_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + forget_layer_norm_coefficients), + integer_lstm_param->layer_norm_forget_scale_a, + integer_lstm_param->layer_norm_forget_scale_b, + cell_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + cell_layer_norm_coefficients), + integer_lstm_param->layer_norm_cell_scale_a, + integer_lstm_param->layer_norm_cell_scale_b, + output_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + output_layer_norm_coefficients), + integer_lstm_param->layer_norm_output_scale_a, + integer_lstm_param->layer_norm_output_scale_b, + input_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_gate_bias), + forget_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(forget_gate_bias), + cell_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_gate_bias), + output_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(output_gate_bias), + integer_lstm_param->quantized_cell_clip, + integer_lstm_param->quantized_proj_clip, + integer_lstm_param->cell_scale, + integer_lstm_param->input_variance_guard, + integer_lstm_param->forget_variance_guard, + integer_lstm_param->cell_variance_guard, + integer_lstm_param->output_variance_guard, + integer_lstm_param->input_to_forget_effective_bias, + integer_lstm_param->recurrent_to_forget_effective_bias, + integer_lstm_param->input_to_cell_effective_bias, + integer_lstm_param->recurrent_to_cell_effective_bias, + integer_lstm_param->input_to_output_effective_bias, + integer_lstm_param->recurrent_to_output_effective_bias, + integer_lstm_param->input_to_input_effective_bias, + integer_lstm_param->recurrent_to_input_effective_bias, + integer_lstm_param->projection_effective_bias, n_batch, n_cell, + n_input, n_output, tflite::micro::GetTensorData(output_state), + output_state_zp, tflite::micro::GetTensorData(cell_state), + output_ptr, scratch0, scratch1, scratch2, scratch3, scratch4, + scratch5); + } + } else { + for (int b = 0; b < n_batch; b++) { + const int input_step = n_input; + const int output_step = output_batch_leading_dim; + for (int t = 0; t < max_time; t++) { + // If this is the forward_sequence, step forward, otherwise step + // backwards. + const int t_rel = forward_sequence ? t : max_time - t - 1; + const int time_offset = b * max_time + t_rel; + const int8_t* input_ptr = tflite::micro::GetTensorData(input) + + time_offset * input_step; + int8_t* output_ptr = tflite::micro::GetTensorData(output) + + time_offset * output_step; + + // Offset the {output,cell}_state pointers to the right batch. + int8_t* output_state_ptr = + tflite::micro::GetTensorData(output_state) + + b * output_batch_leading_dim; + int16_t* cell_state_ptr = + tflite::micro::GetTensorData(cell_state) + b * n_cell; + + LstmStepInteger8x8_16( + input_ptr, + input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_input_weights), + integer_lstm_param->effective_input_to_input_scale_a, + integer_lstm_param->effective_input_to_input_scale_b, + input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_forget_weights), + integer_lstm_param->effective_input_to_forget_scale_a, + integer_lstm_param->effective_input_to_forget_scale_b, + input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_cell_weights), + integer_lstm_param->effective_input_to_cell_scale_a, + integer_lstm_param->effective_input_to_cell_scale_b, + input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_output_weights), + integer_lstm_param->effective_input_to_output_scale_a, + integer_lstm_param->effective_input_to_output_scale_b, + recurrent_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_input_weights), + integer_lstm_param->effective_recurrent_to_input_scale_a, + integer_lstm_param->effective_recurrent_to_input_scale_b, + recurrent_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_forget_weights), + integer_lstm_param->effective_recurrent_to_forget_scale_a, + integer_lstm_param->effective_recurrent_to_forget_scale_b, + recurrent_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_cell_weights), + integer_lstm_param->effective_recurrent_to_cell_scale_a, + integer_lstm_param->effective_recurrent_to_cell_scale_b, + recurrent_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData( + recurrent_to_output_weights), + integer_lstm_param->effective_recurrent_to_output_scale_a, + integer_lstm_param->effective_recurrent_to_output_scale_b, + cell_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_input_weights), + integer_lstm_param->effective_cell_to_input_scale_a, + integer_lstm_param->effective_cell_to_input_scale_b, + cell_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_forget_weights), + integer_lstm_param->effective_cell_to_forget_scale_a, + integer_lstm_param->effective_cell_to_forget_scale_b, + cell_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_output_weights), + integer_lstm_param->effective_cell_to_output_scale_a, + integer_lstm_param->effective_cell_to_output_scale_b, + projection_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_weights), + integer_lstm_param->effective_proj_scale_a, + integer_lstm_param->effective_proj_scale_b, + integer_lstm_param->hidden_zp, + integer_lstm_param->effective_hidden_scale_a, + integer_lstm_param->effective_hidden_scale_b, + input_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_layer_norm_coefficients), + integer_lstm_param->layer_norm_input_scale_a, + integer_lstm_param->layer_norm_input_scale_b, + forget_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + forget_layer_norm_coefficients), + integer_lstm_param->layer_norm_forget_scale_a, + integer_lstm_param->layer_norm_forget_scale_b, + cell_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + cell_layer_norm_coefficients), + integer_lstm_param->layer_norm_cell_scale_a, + integer_lstm_param->layer_norm_cell_scale_b, + output_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + output_layer_norm_coefficients), + integer_lstm_param->layer_norm_output_scale_a, + integer_lstm_param->layer_norm_output_scale_b, + input_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_gate_bias), + forget_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(forget_gate_bias), + cell_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_gate_bias), + output_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(output_gate_bias), + integer_lstm_param->quantized_cell_clip, + integer_lstm_param->quantized_proj_clip, + integer_lstm_param->cell_scale, + integer_lstm_param->input_variance_guard, + integer_lstm_param->forget_variance_guard, + integer_lstm_param->cell_variance_guard, + integer_lstm_param->output_variance_guard, + integer_lstm_param->input_to_forget_effective_bias, + integer_lstm_param->recurrent_to_forget_effective_bias, + integer_lstm_param->input_to_cell_effective_bias, + integer_lstm_param->recurrent_to_cell_effective_bias, + integer_lstm_param->input_to_output_effective_bias, + integer_lstm_param->recurrent_to_output_effective_bias, + integer_lstm_param->input_to_input_effective_bias, + integer_lstm_param->recurrent_to_input_effective_bias, + integer_lstm_param->projection_effective_bias, /*n_batch=*/1, + n_cell, n_input, n_output, output_state_ptr, output_state_zp, + cell_state_ptr, output_ptr, scratch0, scratch1, scratch2, scratch3, + scratch4, scratch5); + } + } + } + + return kTfLiteOk; +} + +TfLiteStatus EvalInteger8x8_8Lstm( + const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + TfLiteEvalTensor* output_state, TfLiteEvalTensor* cell_state, + TfLiteEvalTensor* output, const IntegerLstmParameter* integer_lstm_param, + int32_t input_zp, int32_t output_state_zp, int8_t* scratch0, + int8_t* scratch1, int16_t* scratch2, int16_t* scratch3, int16_t* scratch4, + int16_t* scratch5, int16_t* scratch6, int16_t* scratch7) { + TFLITE_DCHECK(input->dims->size >= 2 && input->dims->size <= 3); + const int n_input = input->dims->data[input->dims->size - 1]; + int max_time, n_batch; + if (input->dims->size == 2) { + max_time = 1; + n_batch = input->dims->data[0]; + } else { + max_time = input->dims->data[0]; + n_batch = input->dims->data[1]; + } + + // n_cell and n_output will be the same size when there is no projection. + const int n_cell = input_to_output_weights->dims->data[0]; + const int n_output = recurrent_to_output_weights->dims->data[1]; + + // Get params for time/batch/sequence. + const int output_batch_leading_dim = + output->dims->data[output->dims->size - 1]; + const int input_step = n_batch * n_input; + const int output_step = n_batch * output_batch_leading_dim; + + for (int t = 0; t < max_time; t++) { + const int t_rel = t; + int8_t* output_ptr = + tflite::micro::GetTensorData(output) + t_rel * output_step; + // Input can be int8 asymmetric or int16 symmetric. + const int8_t* input_ptr = + tflite::micro::GetTensorData(input) + t_rel * input_step; + LstmStepInteger8x8_8( + input_ptr, input_zp, + + input_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_input_weights), + integer_lstm_param->effective_input_to_input_scale_a, + integer_lstm_param->effective_input_to_input_scale_b, + + input_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_forget_weights), + integer_lstm_param->effective_input_to_forget_scale_a, + integer_lstm_param->effective_input_to_forget_scale_b, + + input_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_cell_weights), + integer_lstm_param->effective_input_to_cell_scale_a, + integer_lstm_param->effective_input_to_cell_scale_b, + + input_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_to_output_weights), + integer_lstm_param->effective_input_to_output_scale_a, + integer_lstm_param->effective_input_to_output_scale_b, + + recurrent_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_input_weights), + integer_lstm_param->effective_recurrent_to_input_scale_a, + integer_lstm_param->effective_recurrent_to_input_scale_b, + + recurrent_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_forget_weights), + integer_lstm_param->effective_recurrent_to_forget_scale_a, + integer_lstm_param->effective_recurrent_to_forget_scale_b, + + recurrent_to_cell_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_cell_weights), + integer_lstm_param->effective_recurrent_to_cell_scale_a, + integer_lstm_param->effective_recurrent_to_cell_scale_b, + + recurrent_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(recurrent_to_output_weights), + integer_lstm_param->effective_recurrent_to_output_scale_a, + integer_lstm_param->effective_recurrent_to_output_scale_b, + + cell_to_input_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_input_weights), + integer_lstm_param->effective_cell_to_input_scale_a, + integer_lstm_param->effective_cell_to_input_scale_b, + + cell_to_forget_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_forget_weights), + integer_lstm_param->effective_cell_to_forget_scale_a, + integer_lstm_param->effective_cell_to_forget_scale_b, + + cell_to_output_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_to_output_weights), + integer_lstm_param->effective_cell_to_output_scale_a, + integer_lstm_param->effective_cell_to_output_scale_b, + + projection_weights == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_weights), + integer_lstm_param->effective_proj_scale_a, + integer_lstm_param->effective_proj_scale_b, + + input_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + input_layer_norm_coefficients), + integer_lstm_param->layer_norm_input_scale_a, + integer_lstm_param->layer_norm_input_scale_b, + + forget_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + forget_layer_norm_coefficients), + integer_lstm_param->layer_norm_forget_scale_a, + integer_lstm_param->layer_norm_forget_scale_b, + + cell_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + cell_layer_norm_coefficients), + integer_lstm_param->layer_norm_cell_scale_a, + integer_lstm_param->layer_norm_cell_scale_b, + + output_layer_norm_coefficients == nullptr + ? nullptr + : tflite::micro::GetTensorData( + output_layer_norm_coefficients), + integer_lstm_param->layer_norm_output_scale_a, + integer_lstm_param->layer_norm_output_scale_b, + + input_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(input_gate_bias), + forget_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(forget_gate_bias), + cell_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(cell_gate_bias), + output_gate_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(output_gate_bias), + projection_bias == nullptr + ? nullptr + : tflite::micro::GetTensorData(projection_bias), + + params, integer_lstm_param->intermediate_scale_a, + integer_lstm_param->intermediate_scale_b, + integer_lstm_param->intermediate_zp, + integer_lstm_param->quantized_cell_clip, + integer_lstm_param->quantized_proj_clip, n_batch, n_cell, n_input, + n_output, output_batch_leading_dim, + tflite::micro::GetTensorData(output_state), output_state_zp, + tflite::micro::GetTensorData(cell_state), output_ptr, scratch0, + scratch1, scratch2, scratch3, scratch4, scratch5, scratch6, scratch7); + } + + return kTfLiteOk; +} + +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.h new file mode 100644 index 00000000..218b4938 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_eval.h @@ -0,0 +1,250 @@ +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#ifndef TENSORFLOW_LITE_MICRO_KERNELS_LSTM_EVAL_H_ +#define TENSORFLOW_LITE_MICRO_KERNELS_LSTM_EVAL_H_ + +#include +#include + +#include "tensorflow/lite/c/builtin_op_data.h" +#include "tensorflow/lite/c/common.h" + +namespace tflite { + +// Pamameters for integer LSTM. +// Consider split this into two Integer Parameters if more fields are added. +struct IntegerLstmParameter { + int32_t effective_input_to_input_scale_a; + int32_t effective_input_to_input_scale_b; + int32_t effective_recurrent_to_input_scale_a; + int32_t effective_recurrent_to_input_scale_b; + int32_t effective_cell_to_input_scale_a; + int32_t effective_cell_to_input_scale_b; + int32_t effective_input_to_forget_scale_a; + int32_t effective_input_to_forget_scale_b; + int32_t effective_recurrent_to_forget_scale_a; + int32_t effective_recurrent_to_forget_scale_b; + int32_t effective_cell_to_forget_scale_a; + int32_t effective_cell_to_forget_scale_b; + int32_t effective_input_to_cell_scale_a; + int32_t effective_input_to_cell_scale_b; + int32_t effective_recurrent_to_cell_scale_a; + int32_t effective_recurrent_to_cell_scale_b; + int32_t effective_input_to_output_scale_a; + int32_t effective_input_to_output_scale_b; + int32_t effective_recurrent_to_output_scale_a; + int32_t effective_recurrent_to_output_scale_b; + int32_t effective_cell_to_output_scale_a; + int32_t effective_cell_to_output_scale_b; + int32_t effective_proj_scale_a; + int32_t effective_proj_scale_b; + int32_t effective_hidden_scale_a; + int32_t effective_hidden_scale_b; + int32_t layer_norm_input_scale_a; + int32_t layer_norm_input_scale_b; + int32_t layer_norm_forget_scale_a; + int32_t layer_norm_forget_scale_b; + int32_t layer_norm_cell_scale_a; + int32_t layer_norm_cell_scale_b; + int32_t layer_norm_output_scale_a; + int32_t layer_norm_output_scale_b; + // Quantized clip value for cell and projection. Zero value means no clipping. + int16_t quantized_cell_clip; + int8_t quantized_proj_clip; + int32_t hidden_zp; + int32_t cell_scale; + + int32_t input_variance_guard; + int32_t forget_variance_guard; + int32_t cell_variance_guard; + int32_t output_variance_guard; + + // Pre-calculate bias + zero_point * weight. + int32_t* input_to_forget_effective_bias; + int32_t* recurrent_to_forget_effective_bias; + int32_t* input_to_cell_effective_bias; + int32_t* recurrent_to_cell_effective_bias; + int32_t* input_to_output_effective_bias; + int32_t* recurrent_to_output_effective_bias; + int32_t* input_to_input_effective_bias; + int32_t* recurrent_to_input_effective_bias; + int32_t* projection_effective_bias; + + // Scale and zero point for intermediate tensors. + // Used only in the 8x8_8 case. + int32_t intermediate_scale_a[8]; + int32_t intermediate_scale_b[8]; + int32_t intermediate_zp[12]; +}; + +// Scales for hybrid op with integer inputs and float weights +struct HybridLstmScales { + float input_to_input_weights_scale; + float input_to_forget_weights_scale; + float input_to_cell_weights_scale; + float input_to_output_weights_scale; + float aux_input_to_input_weights_scale; + float aux_input_to_forget_weights_scale; + float aux_input_to_cell_weights_scale; + float aux_input_to_output_weights_scale; + float recurrent_to_input_weights_scale; + float recurrent_to_forget_weights_scale; + float recurrent_to_cell_weights_scale; + float recurrent_to_output_weights_scale; + float cell_to_input_weights_scale; + float cell_to_forget_weights_scale; + float cell_to_output_weights_scale; + float projection_weights_scale; +}; + +TfLiteStatus EvalFloatLstm( + const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* aux_input, + const TfLiteEvalTensor* aux_input_to_input_weights, + const TfLiteEvalTensor* aux_input_to_forget_weights, + const TfLiteEvalTensor* aux_input_to_cell_weights, + const TfLiteEvalTensor* aux_input_to_output_weights, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + bool forward_sequence, bool time_major, int output_offset, + float* scratch_buffer, TfLiteEvalTensor* output_state, + TfLiteEvalTensor* cell_state, TfLiteEvalTensor* output); + +TfLiteStatus EvalHybridLstm( + const HybridLstmScales* hybrid_lstm_scales, const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_input_weights_ledger, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_forget_weights_ledger, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_cell_weights_ledger, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* input_to_output_weights_ledger, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_input_weights_ledger, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights_ledger, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights_ledger, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* recurrent_to_output_weights_ledger, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* aux_input, + const TfLiteEvalTensor* aux_input_to_input_weights, + const TfLiteEvalTensor* aux_input_to_forget_weights, + const TfLiteEvalTensor* aux_input_to_cell_weights, + const TfLiteEvalTensor* aux_input_to_output_weights, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_weights_ledger, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + bool forward_sequence, bool time_major, int output_offset, + float* scratch_buffer, float* input_sf, float* aux_input_sf, + float* output_state_sf, float* prod_scaling_factors, + float* recovered_cell_weights, int8_t* input_quantized, + int8_t* aux_input_quantized, int8_t* output_state_quantized, + int8_t* cell_state_quantized, float* scales, TfLiteEvalTensor* output_state, + TfLiteEvalTensor* cell_state, int32_t* output_scratch_buffer, + TfLiteEvalTensor* output, int32_t* input_zp, int32_t* aux_input_zp, + int32_t* output_state_zp, int32_t* row_sums, int row_sums_size, + bool* compute_row_sums); + +TfLiteStatus EvalInteger8x8_16Lstm( + const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + bool forward_sequence, bool time_major, + const IntegerLstmParameter* integer_lstm_param, int32_t output_state_zp, + TfLiteEvalTensor* output_state, TfLiteEvalTensor* cell_state, + TfLiteEvalTensor* output, int16_t* scratch0, int16_t* scratch1, + int16_t* scratch2, int16_t* scratch3, int8_t* scratch4, int32_t* scratch5); + +TfLiteStatus EvalInteger8x8_8Lstm( + const TfLiteEvalTensor* input, + const TfLiteEvalTensor* input_to_input_weights, + const TfLiteEvalTensor* input_to_forget_weights, + const TfLiteEvalTensor* input_to_cell_weights, + const TfLiteEvalTensor* input_to_output_weights, + const TfLiteEvalTensor* recurrent_to_input_weights, + const TfLiteEvalTensor* recurrent_to_forget_weights, + const TfLiteEvalTensor* recurrent_to_cell_weights, + const TfLiteEvalTensor* recurrent_to_output_weights, + const TfLiteEvalTensor* cell_to_input_weights, + const TfLiteEvalTensor* cell_to_forget_weights, + const TfLiteEvalTensor* cell_to_output_weights, + const TfLiteEvalTensor* input_layer_norm_coefficients, + const TfLiteEvalTensor* forget_layer_norm_coefficients, + const TfLiteEvalTensor* cell_layer_norm_coefficients, + const TfLiteEvalTensor* output_layer_norm_coefficients, + const TfLiteEvalTensor* input_gate_bias, + const TfLiteEvalTensor* forget_gate_bias, + const TfLiteEvalTensor* cell_gate_bias, + const TfLiteEvalTensor* output_gate_bias, + const TfLiteEvalTensor* projection_weights, + const TfLiteEvalTensor* projection_bias, const TfLiteLSTMParams* params, + TfLiteEvalTensor* output_state, TfLiteEvalTensor* cell_state, + TfLiteEvalTensor* output, const IntegerLstmParameter* integer_lstm_param, + int8_t* scratch0, int8_t* scratch1, int16_t* scratch2, int16_t* scratch3, + int16_t* scratch4, int16_t* scratch5, int16_t* scratch6, int16_t* scratch7); + +} // namespace tflite +#endif // TENSORFLOW_LITE_MICRO_KERNELS_LSTM_EVAL_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_shared.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_shared.h new file mode 100644 index 00000000..ee34b848 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/lstm_shared.h @@ -0,0 +1,67 @@ +/* Copyright 2019 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#ifndef TENSORFLOW_LITE_MICRO_KERNELS_LSTM_SHARED_H_ +#define TENSORFLOW_LITE_MICRO_KERNELS_LSTM_SHARED_H_ + +namespace tflite { + +// Input Tensors of size {n_batch, n_input} +constexpr int kLstmInputTensor = 0; + +// Input weight tensors of size: {n_cell, n_input} +constexpr int kLstmInputToInputWeightsTensor = 1; // Optional +constexpr int kLstmInputToForgetWeightsTensor = 2; +constexpr int kLstmInputToCellWeightsTensor = 3; +constexpr int kLstmInputToOutputWeightsTensor = 4; + +// Recurrent weight tensors of size {n_cell, n_output} +constexpr int kLstmRecurrentToInputWeightsTensor = 5; // Optional +constexpr int kLstmRecurrentToForgetWeightsTensor = 6; +constexpr int kLstmRecurrentToCellWeightsTensor = 7; +constexpr int kLstmRecurrentToOutputWeightsTensor = 8; + +// Peephole weights tensors of size {n_cell}, representing a diagonal matrix. +constexpr int kLstmCellToInputWeightsTensor = 9; // Optional +constexpr int kLstmCellToForgetWeightsTensor = 10; // Optional +constexpr int kLstmCellToOutputWeightsTensor = 11; // Optional + +// Gates bias tensors of size {n_cell} +constexpr int kLstmInputGateBiasTensor = 12; // Optional +constexpr int kLstmForgetGateBiasTensor = 13; +constexpr int kLstmCellGateBiasTensor = 14; +constexpr int kLstmOutputGateBiasTensor = 15; + +// Projection weight tensor of size {n_output, n_cell} +constexpr int kLstmProjectionWeightsTensor = 16; // Optional +// Projection bias tensor of size {n_output} +constexpr int kLstmProjectionBiasTensor = 17; // Optional + +// These state tensors are defined as variable tensors, and will be modified by +// this op. +constexpr int kLstmOutputStateTensor = 18; +constexpr int kLstmCellStateTensor = 19; + +// Layer norm coefficient tensors of size {n_cell}, representing a diagonal +// matrix. +constexpr int kLstmInputLayerNormCoefficientsTensor = 20; // Optional +constexpr int kLstmForgetLayerNormCoefficientsTensor = 21; // Optional +constexpr int kLstmCellLayerNormCoefficientsTensor = 22; // Optional +constexpr int kLstmOutputLayerNormCoefficientsTensor = 23; // Optional + +// Output tensors. +constexpr int kLstmOutputTensor = 0; + +} // namespace tflite +#endif // TENSORFLOW_LITE_MICRO_KERNELS_LSTM_SHARED_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/maximum_minimum.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/maximum_minimum.cc index a6d358fb..7964f1e6 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/maximum_minimum.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/maximum_minimum.cc @@ -115,29 +115,17 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace maximum_minimum TfLiteRegistration Register_MAXIMUM() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/ - maximum_minimum::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, nullptr, + maximum_minimum::Eval); } TfLiteRegistration Register_MINIMUM() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/ - maximum_minimum::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + nullptr, nullptr, + maximum_minimum::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_ops.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_ops.h index 17064fee..c4dec92d 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_ops.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_ops.h @@ -76,11 +76,14 @@ TfLiteRegistration Register_SHAPE(); TfLiteRegistration Register_SLICE(); TfLiteRegistration Register_SPACE_TO_BATCH_ND(); TfLiteRegistration Register_SPACE_TO_DEPTH(); +TfLiteRegistration Register_SQUARED_DIFFERENCE(); TfLiteRegistration Register_SQUEEZE(); TfLiteRegistration Register_SUB(); TfLiteRegistration Register_SVDF(); TfLiteRegistration Register_TRANSPOSE(); TfLiteRegistration Register_TRANSPOSE_CONV(); +// TODO(b/230666079): resolve conflict with xtensa implementation +TfLiteRegistration Register_UNIDIRECTIONAL_SEQUENCE_LSTM(); TfLiteRegistration Register_VAR_HANDLE(); TfLiteRegistration Register_WHILE(); TfLiteRegistration Register_ZEROS_LIKE(); @@ -103,14 +106,12 @@ TfLiteRegistration Register_LESS_EQUAL(); TfLiteRegistration Register_LOG(); TfLiteRegistration Register_LOGICAL_NOT(); TfLiteRegistration Register_MAXIMUM(); -TfLiteRegistration Register_MEAN(); TfLiteRegistration Register_MINIMUM(); TfLiteRegistration Register_NEG(); TfLiteRegistration Register_NOT_EQUAL(); TfLiteRegistration Register_PACK(); TfLiteRegistration Register_PAD(); TfLiteRegistration Register_PADV2(); -TfLiteRegistration Register_REDUCE_MAX(); TfLiteRegistration Register_RESHAPE(); TfLiteRegistration Register_RESIZE_NEAREST_NEIGHBOR(); TfLiteRegistration Register_ROUND(); @@ -121,7 +122,6 @@ TfLiteRegistration Register_SPLIT_V(); TfLiteRegistration Register_SQRT(); TfLiteRegistration Register_SQUARE(); TfLiteRegistration Register_STRIDED_SLICE(); -TfLiteRegistration Register_UNIDIRECTIONAL_SEQUENCE_LSTM(); TfLiteRegistration Register_UNPACK(); TfLiteRegistration Register_L2_NORMALIZATION(); TfLiteRegistration Register_TANH(); diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.cc new file mode 100644 index 00000000..88b097c7 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.cc @@ -0,0 +1,809 @@ +/* Copyright 2019 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#include "tensorflow/lite/micro/kernels/micro_tensor_utils.h" + +#include +#include +#include +#include +#include +#include + +#include "fixedpoint/fixedpoint.h" // from @gemmlowp +#include "tensorflow/lite/kernels/internal/common.h" +#include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/kernels/internal/cppmath.h" +#include "tensorflow/lite/kernels/op_macros.h" + +namespace tflite { +namespace micro_tensor_utils { + +namespace { +const int32_t kInt16Max = std::numeric_limits::max(); +const int32_t kInt16Min = std::numeric_limits::min(); +} // namespace + +void PortableSymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, float* min_value, + float* max_value, float* scaling_factor) { + auto minmax = std::minmax_element(values, values + size); + *min_value = *minmax.first; + *max_value = *minmax.second; + + PortableSymmetricQuantizeFloats(values, size, quantized_values, *min_value, + *max_value, scaling_factor); +} + +void PortableSymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, float min_value, + float max_value, float* scaling_factor) { + const int32_t kScale = 127; + const float range = std::max(std::abs(min_value), std::abs(max_value)); + if (range == 0) { + memset(quantized_values, 0, size * sizeof(int8_t)); + *scaling_factor = 1; + return; + } + *scaling_factor = range / kScale; + const float scaling_factor_inv = kScale / range; + for (int i = 0; i < size; ++i) { + const int32_t quantized_value = + static_cast(TfLiteRound(values[i] * scaling_factor_inv)); + // Clamp: just in case some odd numeric offset. + quantized_values[i] = static_cast( + std::min(kScale, std::max(-kScale, quantized_value))); + } +} + +void PortableAsymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, + float* scaling_factor, int32_t* offset) { + const int32_t kMinScale = -128; + const int32_t kMaxScale = 127; + const double qmin_double = kMinScale; + const double qmax_double = kMaxScale; + const auto minmax = std::minmax_element(values, values + size); + const double rmin = static_cast(std::min(0.0f, *minmax.first)); + const double rmax = static_cast(std::max(0.0f, *minmax.second)); + if (rmin == rmax) { + memset(quantized_values, 0, size * sizeof(int8_t)); + *scaling_factor = 1; + *offset = 0; + return; + } else { + double scale = (rmax - rmin) / (qmax_double - qmin_double); + const double zero_point_from_min = qmin_double - rmin / scale; + const double zero_point_from_max = qmax_double - rmax / scale; + const double zero_point_from_min_error = + std::abs(qmin_double) + std::abs(rmin / scale); + const double zero_point_from_max_error = + std::abs(qmax_double) + std::abs(rmax / scale); + const double zero_point_double = + zero_point_from_min_error < zero_point_from_max_error + ? zero_point_from_min + : zero_point_from_max; + int8_t nudged_zero_point = 0; + if (zero_point_double <= qmin_double) { + nudged_zero_point = kMinScale; + } else if (zero_point_double >= qmax_double) { + nudged_zero_point = kMaxScale; + } else { + nudged_zero_point = static_cast(round(zero_point_double)); + } + *scaling_factor = scale; + *offset = nudged_zero_point; + } + const float scaling_factor_inv = 1.0f / *scaling_factor; + for (int i = 0; i < size; ++i) { + const int32_t quantized_value = static_cast( + TfLiteRound(*offset + values[i] * scaling_factor_inv)); + quantized_values[i] = + std::min(kMaxScale, std::max(kMinScale, quantized_value)); + } +} + +void PortableMatrixBatchVectorMultiplyAccumulate(const float* matrix, + int m_rows, int m_cols, + const float* vector, + int n_batch, float* result) { + float* result_in_batch = result; + for (int b = 0; b < n_batch; b++) { + const float* matrix_ptr = matrix; + for (int r = 0; r < m_rows; r++) { + float dot_prod = 0.0f; + const float* vector_in_batch = vector + b * m_cols; + for (int c = 0; c < m_cols; c++) { + dot_prod += *matrix_ptr++ * *vector_in_batch++; + } + *result_in_batch += dot_prod; + ++result_in_batch; + } + } +} + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vectors, const float* scaling_factors, + int n_batch, float* __restrict__ result) { + for (int batch = 0; batch < n_batch; ++batch, vectors += m_cols) { + const float batch_scaling_factor = scaling_factors[batch]; + // Get the address of the first row. + const int8_t* row_ptr = matrix; + for (int row = 0; row < m_rows; ++row) { + // Initialize the dot product sum for the row to 0. + int32_t dotprod = 0; + // TODO(b/230666277): remove this +#if defined(__GNUC__) + // Prefetch the row to cache. + __builtin_prefetch(row_ptr, 0 /* prefetch for read */, + 3 /* temporal locality */); +#endif + for (int col = 0; col < m_cols; ++col, ++row_ptr) { + dotprod += (*row_ptr) * (vectors[col]); + } // for col + *result += dotprod * batch_scaling_factor; + ++result; + } // for row + } // for batch +} + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vectors, const float* scaling_factors, + int n_batch, float* __restrict__ result, const float* per_channel_scale, + const int32_t* input_offset, int32_t* scratch, int32_t* row_sums, + bool* compute_row_sums, CpuBackendContext* context) { + if (input_offset == nullptr) { + PortableMatrixBatchVectorMultiplyAccumulate( + matrix, m_rows, m_cols, vectors, scaling_factors, n_batch, result); + return; + } + if (!compute_row_sums || *compute_row_sums) { + PortableReductionSumVector(matrix, row_sums, m_rows, m_cols); + if (compute_row_sums) { + *compute_row_sums = false; + } + } + + for (int batch = 0; batch < n_batch; ++batch, vectors += m_cols) { + const float batch_scaling_factor = scaling_factors[batch]; + const int32_t batch_offset = input_offset[batch]; + const int8_t* row_ptr = matrix; + for (int row = 0; row < m_rows; ++row) { + int32_t dotprod = 0; + float scale = batch_scaling_factor; + if (per_channel_scale) { + scale *= per_channel_scale[row]; + } +#if defined(__GNUC__) + // Prefetch the row to cache. + __builtin_prefetch(row_ptr, 0 /* prefetch for read */, + 3 /* temporal locality */); +#endif + for (int col = 0; col < m_cols; ++col, ++row_ptr) { + dotprod += (*row_ptr) * vectors[col]; + } // for col + dotprod -= row_sums[row] * batch_offset; + *result += dotprod * scale; + ++result; + } // for row + } // for batch +} + +void PortableSparseMatrixBatchVectorMultiplyAccumulate1x4( + const float* __restrict__ matrix, const int32_t* __restrict__ segments, + const int32_t* __restrict__ indices, int m_rows, int m_cols, + const float* __restrict__ vector, int n_batch, float* __restrict__ result) { + const int kBlockSize = 4; + TFLITE_DCHECK_EQ(m_cols % kBlockSize, 0); + for (int batch = 0; batch < n_batch; batch++) { + const float* matrix_ptr = matrix; + for (int row = 0; row < m_rows; row++) { + float dot_prod = 0.0f; + const float* vector_in_batch = vector + batch * m_cols; + for (int i = segments[row]; i < segments[row + 1]; i++) { + const int block_start_index = indices[i] * kBlockSize; + const float* vector_block_in_batch_ptr = + vector_in_batch + block_start_index; + for (int c = 0; c < kBlockSize; c++) { + dot_prod += *matrix_ptr++ * *vector_block_in_batch_ptr++; + } + } + result[batch * m_rows + row] += dot_prod; + } + } +} + +void PortableSparseMatrixBatchVectorMultiplyAccumulate1x16( + const int8_t* __restrict__ matrix, const int32_t* __restrict__ segments, + const int32_t* __restrict__ indices, int m_rows, int m_cols, + const int8_t* __restrict__ vector, const int32_t* __restrict__ bias_vector, + int n_batch, const int32_t input_offset, const int32_t output_multiplier, + const int32_t output_shift, const int32_t output_offset, + const int32_t output_activation_min, const int32_t output_activation_max, + int8_t* __restrict__ result) { + const int kBlockSize = 16; + TFLITE_DCHECK_EQ(m_cols % kBlockSize, 0); + for (int batch = 0; batch < n_batch; ++batch) { + const int8_t* matrix_ptr = matrix; + for (int row = 0; row < m_rows; ++row) { + int32_t dot_prod = 0; + const int8_t* vector_in_batch = vector + batch * m_cols; + for (int i = segments[row]; i < segments[row + 1]; ++i) { + const int block_start_index = indices[i] * kBlockSize; + const int8_t* vector_block_in_batch_ptr = + vector_in_batch + block_start_index; + for (int c = 0; c < kBlockSize; c++) { + dot_prod += *matrix_ptr * *vector_block_in_batch_ptr++; + dot_prod += *matrix_ptr++ * input_offset; + } + } + const int32_t bias_value = bias_vector != nullptr ? bias_vector[row] : 0; + dot_prod = MultiplyByQuantizedMultiplier(dot_prod + bias_value, + output_multiplier, output_shift); + dot_prod += output_offset; + result[batch * m_rows + row] = + static_cast(ActivationFunctionWithMinMax( + dot_prod, output_activation_min, output_activation_max)); + } + } +} + +void PortableSparseMatrixBatchVectorMultiplyAccumulate( + const float* __restrict__ matrix, const uint8_t* __restrict__ ledger, + int m_rows, int m_cols, const float* __restrict__ vector, int n_batch, + float* __restrict__ result) { + const int kBlockSize = 16; + TFLITE_DCHECK_EQ( // NOLINT + m_cols % kBlockSize, 0); + for (int batch = 0; batch < n_batch; batch++) { + const float* matrix_ptr = matrix; + const uint8_t* ledger_ptr = ledger; + for (int row = 0; row < m_rows; row++) { + float dot_prod = 0.0f; + int num_nonzero_blocks = *ledger_ptr++; + if (num_nonzero_blocks > 0) { + const float* vector_in_batch = vector + batch * m_cols; + for (int i = 0; i < num_nonzero_blocks; i++) { + const int block_start_index = *ledger_ptr++ * kBlockSize; + const float* vector_block_in_batch_ptr = + vector_in_batch + block_start_index; + for (int c = 0; c < kBlockSize; c++) { + dot_prod += *matrix_ptr++ * *vector_block_in_batch_ptr++; + } + } + } + result[batch * m_rows + row] += dot_prod; + } + } +} + +void PortableSparseMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const uint8_t* ledger, const int m_rows, + const int m_cols, const int8_t* __restrict__ vectors, + const float* scaling_factors, int n_batch, float* __restrict__ result) { + static const int kBlockSize = 16; + TFLITE_DCHECK_EQ( // NOLINT + m_cols % kBlockSize, 0); + for (int batch = 0; batch < n_batch; ++batch, vectors += m_cols) { + const float batch_scaling_factor = scaling_factors[batch]; + const uint8_t* ledger_ptr = ledger; + // Get the address of the first row. + const int8_t* row_ptr = matrix; + for (int row = 0; row < m_rows; ++row) { + // Initialize the dot product sum for the row to 0. + int32_t dotprod = 0; +#if defined(__GNUC__) + // Prefetch the row to cache. + __builtin_prefetch(row_ptr, 0 /* prefetch for read */, + 3 /* temporal locality */); +#endif + int num_nonzero_blocks = *ledger_ptr++; + for (int i = 0; i < num_nonzero_blocks; i++) { + const int block_start_index = *ledger_ptr++ * kBlockSize; + const int8_t* vector_block_ptr = vectors + block_start_index; + for (int c = 0; c < kBlockSize; c++) { + dotprod += (*row_ptr++) * (*vector_block_ptr++); + } // for block + } // for num_nonzero_blocks + result[batch * m_rows + row] += dotprod * batch_scaling_factor; + } // for row + } // for batch +} + +template +void PortableMatrixBatchVectorMultiplyAccumulateImpl( + const int8_t* input, const int32_t* bias, + const int8_t* input_to_gate_weights, int32_t multiplier, int32_t shift, + int32_t n_batch, int32_t n_input, int32_t n_output, int32_t output_zp, + T* output) { + const int16_t output_max = std::numeric_limits::max(); + const int16_t output_min = std::numeric_limits::min(); + for (int batch = 0; batch < n_batch; ++batch) { + for (int row = 0; row < n_output; ++row) { + int32_t acc = bias[row]; + for (int col = 0; col < n_input; ++col) { + int8_t input_val = input[batch * n_input + col]; + int8_t weights_val = input_to_gate_weights[row * n_input + col]; + acc += input_val * weights_val; + } + acc = MultiplyByQuantizedMultiplier(acc, multiplier, shift); + acc += output_zp; + acc += output[batch * n_output + row]; + if (acc > output_max) { + acc = output_max; + } + if (acc < output_min) { + acc = output_min; + } + output[batch * n_output + row] = static_cast(acc); + } + } +} + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* input, const int32_t* bias, + const int8_t* input_to_gate_weights, int32_t multiplier, int32_t shift, + int32_t n_batch, int32_t n_input, int32_t n_output, int32_t output_zp, + int32_t* scratch, int16_t* output, CpuBackendContext* context) { + PortableMatrixBatchVectorMultiplyAccumulateImpl( + input, bias, input_to_gate_weights, multiplier, shift, n_batch, n_input, + n_output, output_zp, output); +} + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* input, const int32_t* bias, + const int8_t* input_to_gate_weights, int32_t multiplier, int32_t shift, + int32_t n_batch, int32_t n_input, int32_t n_output, int32_t output_zp, + int32_t* scratch, int8_t* output, CpuBackendContext* context) { + PortableMatrixBatchVectorMultiplyAccumulateImpl( + input, bias, input_to_gate_weights, multiplier, shift, n_batch, n_input, + n_output, output_zp, output); +} + +void PortableMatrixBatchVectorMultiply(const int8_t* input, + int32_t input_zeropoint, + const int8_t* input_to_gate_weights, + int32_t input_to_gate_effective_scale_a, + int32_t input_to_gate_effective_scale_b, + int32_t n_batch, int32_t n_input, + int32_t n_cell, int8_t* gate_output, + int8_t gate_output_zp) { + const int32_t int8_max = std::numeric_limits::max(); + const int32_t int8_min = std::numeric_limits::min(); + for (int batch = 0; batch < n_batch; ++batch) { + for (int row = 0; row < n_cell; ++row) { + int32_t acc = 0; + for (int col = 0; col < n_input; ++col) { + int32_t input_val = input[batch * n_input + col]; + int8_t weights_val = input_to_gate_weights[row * n_input + col]; + acc += (input_val - input_zeropoint) * weights_val; + } + acc = MultiplyByQuantizedMultiplier(acc, input_to_gate_effective_scale_a, + input_to_gate_effective_scale_b); + acc += gate_output_zp; + if (acc > int8_max) { + acc = int8_max; + } + if (acc < int8_min) { + acc = int8_min; + } + gate_output[batch * n_cell + row] = static_cast(acc); + } + } +} + +void PortableMatrixBatchVectorMultiply( + const int16_t* hidden, const int8_t* hidden_to_output_weights, + int32_t proj_effective_scale_a, int32_t proj_effective_scale_b, + const int32_t* gate_bias, int32_t n_batch, int32_t n_hidden, + int32_t n_output, int32_t output_zp, int8_t* proj_output) { + const int16_t int8_max = std::numeric_limits::max(); + const int16_t int8_min = std::numeric_limits::min(); + for (int batch = 0; batch < n_batch; ++batch) { + for (int row = 0; row < n_output; ++row) { + int64_t acc = gate_bias[row]; + for (int col = 0; col < n_hidden; ++col) { + int16_t input_val = hidden[batch * n_hidden + col]; + int8_t weights_val = hidden_to_output_weights[row * n_hidden + col]; + int64_t curr = acc; + acc += input_val * weights_val; + if (input_val * weights_val > 0 && acc < curr) { + acc = std::numeric_limits::max(); + } + if (input_val * weights_val < 0 && acc > curr) { + acc = std::numeric_limits::min(); + } + } + acc = MultiplyByQuantizedMultiplier(acc, proj_effective_scale_a, + proj_effective_scale_b); + acc += output_zp; + if (acc > int8_max) { + acc = int8_max; + } + if (acc < int8_min) { + acc = int8_min; + } + proj_output[batch * n_output + row] = acc; + } + } +} + +void PortableApplyLayerNorm(const int16_t* input, + const int16_t* layer_norm_weights, + const int32_t* bias, int32_t layer_norm_scale_a, + int32_t layer_norm_scale_b, int32_t variance_limit, + int n_batch, int n_input, int16_t* output) { + // The square of std::pow(2, 10), which is the extra factor that makes sure + // normalized values has enough resolution. + static const int kTwoToPower20 = 1 << 20; + for (int i = 0; i < n_batch; ++i) { + int64_t sum = 0; + int64_t sum_sq = 0; + for (int j = 0; j < n_input; ++j) { + const int32_t index = i * n_input + j; + int32_t val = static_cast(input[index]); + sum += val; + sum_sq += val * val; + } + int32_t mean = + static_cast(static_cast(sum) * 1024 / n_input); + // TODO(b/173994730): Avoids overflow but only works for POT n_input. + int32_t temp = kTwoToPower20 / n_input; + int64_t variance = + sum_sq * temp - static_cast(mean) * static_cast(mean); + int32_t variance2 = static_cast(variance / kTwoToPower20); + if (variance2 < 1) { + variance2 = variance_limit; + } + int32_t stddev_inverse_a; + int stddev_inverse_b; + GetInvSqrtQuantizedMultiplierExp(variance2, /*reverse_shift*/ -1, + &stddev_inverse_a, &stddev_inverse_b); + + for (int j = 0; j < n_input; ++j) { + const int32_t index = i * n_input + j; + int32_t val = static_cast(input[index]); + int32_t shifted = 1024 * val - mean; + int32_t rescaled = MultiplyByQuantizedMultiplier( + shifted, stddev_inverse_a, stddev_inverse_b); + int64_t val3 = rescaled * layer_norm_weights[j] + bias[j]; + int32_t val4 = + static_cast((val3 > 0 ? val3 + 512 : val3 - 512) / 1024); + int32_t val5 = MultiplyByQuantizedMultiplier(val4, layer_norm_scale_a, + layer_norm_scale_b + 12); + val5 = std::min(std::max(kInt16Min, val5), kInt16Max); + output[index] = static_cast(val5); + } + } +} + +void PortableApplyLayerNormFloat(const int16_t* input, + const int16_t* layer_norm_weights, + int32_t layer_norm_scale_a, + int32_t layer_norm_scale_b, + const int32_t* bias, int n_batch, int n_input, + int16_t* output) { + const int32_t int16_max = std::numeric_limits::max(); + const int32_t int16_min = std::numeric_limits::min(); + const float layer_norm_scale = + layer_norm_scale_a * + std::pow(2.0, static_cast(layer_norm_scale_b - 31)); + const float bias_scale = + static_cast(std::pow(2.0, -10)) * layer_norm_scale; + + for (int batch = 0; batch < n_batch; ++batch) { + float sum = 0.0f; + float sum_sq = 0.0f; + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + const float value = static_cast(input[index]); + sum += value; + sum_sq += value * value; + } + const float mean = sum / n_input; + float stddev_inv = 0.0f; + const float variance = sum_sq / n_input - mean * mean; + if (variance == 0) { + stddev_inv = 1.0f / std::sqrt(1e-8f); + } else { + stddev_inv = 1.0f / std::sqrt(variance); + } + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + const float normalized_value = + (static_cast(input[index]) - mean) * stddev_inv; + const float weighted_normalized_value = + normalized_value * layer_norm_weights[i] * layer_norm_scale + + bias[i] * bias_scale; + const int32_t quant_output = static_cast(round( + weighted_normalized_value * static_cast(std::pow(2, 12)))); + output[index] = std::min(int16_max, std::max(int16_min, quant_output)); + } + } +} + +void PortableMatrixScalarMultiplyAccumulate(const int8_t* matrix, + int32_t scalar, int32_t n_row, + int32_t n_col, int32_t* output) { + for (int i = 0; i < n_row; ++i) { + int32_t row_sum = 0; + for (int j = 0; j < n_col; ++j) { + row_sum += *matrix++; + } + output[i] += row_sum * scalar; + } +} + +void PortableApplySigmoid(const int16_t* input, int32_t n_batch, + int32_t n_input, int16_t* output) { + for (int batch = 0; batch < n_batch; ++batch) { + for (int c = 0; c < n_input; c++) { + using F3 = gemmlowp::FixedPoint; + using F0 = gemmlowp::FixedPoint; + const int index = batch * n_input + c; + F3 sigmoid_input = F3::FromRaw(input[index]); + F0 sigmoid_output = gemmlowp::logistic(sigmoid_input); + output[index] = sigmoid_output.raw(); + } + } +} + +void PortableApplySigmoidFloat(const int16_t* input, int32_t n_batch, + int32_t n_input, int16_t* output) { + const int32_t int16_max = std::numeric_limits::max(); + const int32_t int16_min = std::numeric_limits::min(); + for (int batch = 0; batch < n_batch; ++batch) { + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + const float float_input = + input[index] * static_cast(std::pow(2, -12)); + const float float_output = 1.0f / (1.0f + std::exp(-float_input)); + const int32_t quant_output = static_cast( + float_output * static_cast(std::pow(2, 15))); + const int32_t quant_output_clamped = + std::min(int16_max, std::max(int16_min, quant_output)); + output[index] = static_cast(quant_output_clamped); + } + } +} + +template +void PortableApplyTanhImpl(const int16_t* input, int32_t n_batch, + int32_t n_input, int16_t* output) { + using FX = gemmlowp::FixedPoint; + using F0 = gemmlowp::FixedPoint; + for (int batch = 0; batch < n_batch; ++batch) { + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + FX tanh_input = FX::FromRaw(input[index]); + F0 tanh_output = gemmlowp::tanh(tanh_input); + output[index] = tanh_output.raw(); + } + } +} + +void PortableApplyTanh(int32_t integer_bits, const int16_t* input, + int32_t n_batch, int32_t n_input, int16_t* output) { + if (integer_bits > 6) { + TFLITE_ASSERT_FALSE; + } +#define DISPATCH_TANH(i) \ + case i: \ + PortableApplyTanhImpl(input, n_batch, n_input, output); \ + break; + switch (integer_bits) { + DISPATCH_TANH(0); + DISPATCH_TANH(1); + DISPATCH_TANH(2); + DISPATCH_TANH(3); + DISPATCH_TANH(4); + DISPATCH_TANH(5); + DISPATCH_TANH(6); + default: + return; + } +#undef DISPATCH_TANH +} + +void PortableApplyTanhFloat(const int16_t* input, int32_t n_batch, + int32_t n_input, int32_t integer_bits, + int16_t* output) { + const int32_t int16_max = std::numeric_limits::max(); + const int32_t int16_min = std::numeric_limits::min(); + const double two = 2.0; + for (int batch = 0; batch < n_batch; ++batch) { + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + const float float_input = + input[index] * std::pow(two, static_cast(integer_bits)); + const float float_output = std::tanh(float_input); + const int32_t quant_output = static_cast( + float_output * static_cast(std::pow(2, 15))); + const int32_t quant_output_clamped = + std::min(int16_max, std::max(int16_min, quant_output)); + output[index] = static_cast(quant_output_clamped); + } + } +} + +void PortableCwiseMul(const int16_t* input_1, const int16_t* input_2, + int n_batch, int n_input, int shift, int16_t* output) { + for (int batch = 0; batch < n_batch; ++batch) { + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + const int16_t a = input_1[index]; + const int16_t b = input_2[index]; + const int32_t value = static_cast(a) * static_cast(b); + output[index] = + static_cast(gemmlowp::RoundingDivideByPOT(value, shift)); + } + } +} + +void PortableCwiseMul(const int16_t* input_1, const int16_t* input_2, + int32_t multiplier, int32_t shift, int32_t n_batch, + int32_t n_input, int32_t output_zp, int8_t* output) { + for (int batch = 0; batch < n_batch; ++batch) { + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + const int16_t a = input_1[index]; + const int16_t b = input_2[index]; + int32_t value = static_cast(a) * static_cast(b); + value = MultiplyByQuantizedMultiplier(value, multiplier, shift); + value -= output_zp; + value = std::min(std::max(static_cast(-128), value), + static_cast(127)); + + output[index] = static_cast(value); + } + } +} + +void PortableCwiseAdd(const int16_t* input_1, const int16_t* input_2, + int n_batch, int n_input, int16_t* output) { + for (int batch = 0; batch < n_batch; ++batch) { + for (int i = 0; i < n_input; ++i) { + const int index = batch * n_input + i; + int32_t sum = input_1[index] + input_2[index]; + const int32_t sum_clamped = std::min(kInt16Max, std::max(kInt16Min, sum)); + output[index] = static_cast(sum_clamped); + } + } +} + +float PortableVectorVectorDotProduct(const float* vector1, const float* vector2, + int v_size) { + float result = 0.0; + for (int v = 0; v < v_size; v++) { + result += *vector1++ * *vector2++; + } + return result; +} + +namespace { +inline int32_t VectorVectorDotProduct(const int16_t* vector1, + const int16_t* vector2, int v_size) { + int32_t result = 0; + for (int v = 0; v < v_size; v++) { + result += *vector1++ * *vector2++; + } + return result; +} +} // namespace + +void PortableBatchVectorBatchVectorDotProduct(const int16_t* vector1, + const int16_t* vector2, + int v_size, int n_batch, + int32_t* result) { + for (int b = 0; b < n_batch; b++) { + result[b] = VectorVectorDotProduct(vector1, vector2, v_size); + vector1 += v_size; + vector2 += v_size; + } +} + +void PortableVectorBatchVectorCwiseProductAccumulate( + const int16_t* vector, int v_size, const int16_t* batch_vector, int n_batch, + int32_t multiplier, int shift, int16_t* result) { + for (int b = 0; b < n_batch; b++) { + for (int v = 0; v < v_size; v++) { + int32_t prod = vector[v] * *batch_vector++; + prod = MultiplyByQuantizedMultiplier(prod, multiplier, shift); + int32_t output = prod + *result; + output = std::max(std::min(static_cast(32767), output), + static_cast(-32768)); + *result++ = output; + } + } +} + +void PortableSub1Vector(const float* vector, int v_size, float* result) { + for (int v = 0; v < v_size; v++) { + *result++ = 1.0f - *vector++; + } +} + +void PortableSub1Vector(const int16_t* vector, int v_size, int16_t* result) { + static const int16_t kOne = 32767; + for (int v = 0; v < v_size; v++) { + *result++ = kOne - *vector++; + } +} + +void PortableVectorScalarMultiply(const int8_t* vector, const int v_size, + const float scale, float* result) { + for (int v = 0; v < v_size; ++v) { + *result++ = scale * *vector++; + } +} + +void PortableMeanStddevNormalization(const float* __restrict__ input_vector, + float* __restrict__ output_vector, + int v_size, int n_batch) { + for (int batch = 0; batch < n_batch; ++batch) { + float sum = 0.0f; + for (int i = 0; i < v_size; ++i) { + sum += input_vector[i]; + } + const float mean = sum / v_size; + float sum_diff_sq = 0.0f; + for (int i = 0; i < v_size; ++i) { + const float diff = input_vector[i] - mean; + sum_diff_sq += diff * diff; + } + const float variance = sum_diff_sq / v_size; + constexpr float kNormalizationConstant = 1e-8f; + const float stddev_inv = + 1.0f / std::sqrt(variance + kNormalizationConstant); + for (int i = 0; i < v_size; ++i) { + output_vector[i] = (input_vector[i] - mean) * stddev_inv; + } + input_vector += v_size; + output_vector += v_size; + } +} + +void PortableTwoGateSaturatingAdd(const int8_t* input, int8_t input_zp, + const int8_t* recurrent, int8_t recurrent_zp, + int32_t input_effective_scale_a, + int32_t input_effective_scale_b, + int32_t recurrent_effective_scale_a, + int32_t recurrent_effective_scale_b, + int32_t n_batch, int32_t n_cell, + int16_t* output) { + const int32_t int16_max = std::numeric_limits::max(); + const int32_t int16_min = std::numeric_limits::min(); + for (int i = 0; i < n_batch * n_cell; ++i) { + int32_t x = static_cast(input[i]) - static_cast(input_zp); + int32_t h = + static_cast(recurrent[i]) - static_cast(recurrent_zp); + int32_t x_scaled = MultiplyByQuantizedMultiplier(x, input_effective_scale_a, + input_effective_scale_b); + int32_t h_scaled = MultiplyByQuantizedMultiplier( + h, recurrent_effective_scale_a, recurrent_effective_scale_b); + int32_t y = h_scaled + x_scaled; + if (y > int16_max) { + y = int16_max; + } + if (y < int16_min) { + y = int16_min; + } + output[i] = static_cast(y); + } +} + +} // namespace micro_tensor_utils +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.h new file mode 100644 index 00000000..673ba6a3 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/micro_tensor_utils.h @@ -0,0 +1,874 @@ +/* Copyright 2021 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ + +// This file and the associated .cc file is branched from +// tensorflow/lite/kernels/internal/reference/portable_tensor_utils* +// TFLM needs to create its own because the original files are coupled with +// the tensor_utils module, which we cannot reuse due to its use of the +// Eigen library. + +#ifndef TENSORFLOW_LITE_MICRO_KERNELS_MICRO_TENSOR_UTILS_H_ +#define TENSORFLOW_LITE_MICRO_KERNELS_MICRO_TENSOR_UTILS_H_ + +#include +#include +#include + +#include "tensorflow/lite/c/builtin_op_data.h" +#include "tensorflow/lite/c/common.h" + +#if defined(_MSC_VER) +#define __restrict__ __restrict +#endif + +namespace tflite { + +// Not all backends support CpuBackendContext usage, so forward declare to avoid +// pulling in its implementation. +// TODO(b/230666277): consider removing this since micro does not utilize it +class CpuBackendContext; + +namespace micro_tensor_utils { + +template +inline bool PortableIsZeroVector(const T* vector, int v_size) { + for (int i = 0; i < v_size; ++i) { + if (vector[i] != 0) { + return false; + } + } + return true; +} + +void PortableSymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, float* min_value, + float* max_value, float* scaling_factor); + +void PortableSymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, float min_value, + float max_value, float* scaling_factor); + +void PortableAsymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, + float* scaling_factor, int32_t* offset); + +// Multiply a matrix by a batch vector, and store results in a batch-size +// vector. +void PortableMatrixBatchVectorMultiplyAccumulate(const float* matrix, + int m_rows, int m_cols, + const float* vector, + int n_batch, float* result); + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vectors, const float* scaling_factors, + int n_batch, float* __restrict__ result); + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vectors, const float* scaling_factors, + int n_batch, float* __restrict__ result, const float* per_channel_scale, + const int32_t* input_offset, int32_t* scratch, int32_t* row_sums, + bool* compute_row_sums, CpuBackendContext* context); + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vector, const float* scaling_factors, + int n_batch, int32_t* scratch, float* __restrict__ result, + CpuBackendContext* context); + +void PortableSparseMatrixBatchVectorMultiplyAccumulate1x4( + const float* __restrict__ matrix, const int32_t* __restrict__ segments, + const int32_t* __restrict__ indices, int m_rows, int m_cols, + const float* __restrict__ vector, int n_batch, float* __restrict__ result); + +void PortableSparseMatrixBatchVectorMultiplyAccumulate( + const float* __restrict__ matrix, const uint8_t* __restrict__ ledger, + int m_rows, int m_cols, const float* __restrict__ vector, int n_batch, + float* __restrict__ result); + +void PortableSparseMatrixBatchVectorMultiplyAccumulate1x16( + const int8_t* __restrict__ matrix, const int32_t* __restrict__ segments, + const int32_t* __restrict__ indices, int m_rows, int m_cols, + const int8_t* __restrict__ vector, const int32_t* __restrict__ bias_vector, + int n_batch, const int32_t input_offset, const int32_t output_multiplier, + const int32_t output_shift, const int32_t output_offset, + const int32_t output_activation_min, const int32_t output_activation_max, + int8_t* __restrict__ result); + +void PortableSparseMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const uint8_t* ledger, const int m_rows, + const int m_cols, const int8_t* __restrict__ vectors, + const float* scaling_factors, int n_batch, float* __restrict__ result); + +// Dot product of two vectors. +float PortableVectorVectorDotProduct(const float* vector1, const float* vector2, + int v_size); + +void PortableBatchVectorBatchVectorDotProduct(const int16_t* vector1, + const int16_t* vector2, + int v_size, int n_batch, + int32_t* result); + +void PortableVectorBatchVectorCwiseProductAccumulate( + const int16_t* vector, int v_size, const int16_t* batch_vector, int n_batch, + int32_t multiplier, int shift, int16_t* result); + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* input, const int32_t* bias, + const int8_t* input_to_gate_weights, int32_t multiplier, int32_t shift, + int32_t n_batch, int32_t n_input, int32_t n_output, int32_t output_zp, + int32_t* scratch, int16_t* output, CpuBackendContext* context); + +void PortableMatrixBatchVectorMultiplyAccumulate( + const int8_t* input, const int32_t* bias, + const int8_t* input_to_gate_weights, int32_t multiplier, int32_t shift, + int32_t n_batch, int32_t n_input, int32_t n_output, int32_t output_zp, + int32_t* scratch, int8_t* output, CpuBackendContext* context); + +void PortableMatrixBatchVectorMultiply(const int8_t* input, + int32_t input_zeropoint, + const int8_t* input_to_gate_weights, + int32_t input_to_gate_effective_scale_a, + int32_t input_to_gate_effective_scale_b, + int32_t n_batch, int32_t n_input, + int32_t n_cell, int8_t* gate_output, + int8_t gate_output_zp); + +void PortableMatrixBatchVectorMultiply( + const int16_t* hidden, const int8_t* hidden_to_output_weights, + int32_t proj_effective_scale_a, int32_t proj_effective_scale_b, + const int32_t* gate_bias, int32_t n_batch, int32_t n_hidden, + int32_t n_output, int32_t output_zp, int8_t* proj_output); + +void PortableMatrixScalarMultiplyAccumulate(const int8_t* matrix, + int32_t scalar, int32_t n_row, + int32_t n_col, int32_t* output); + +void PortableApplyLayerNorm(const int16_t* input, + const int16_t* layer_norm_weights, + const int32_t* bias, int32_t layer_norm_scale_a, + int32_t layer_norm_scale_b, int32_t variance_limit, + int n_batch, int n_input, int16_t* output); + +void PortableApplyLayerNormFloat(const int16_t* input, + const int16_t* layer_norm_weights, + int32_t layer_norm_scale_a, + int32_t layer_norm_scale_b, + const int32_t* bias, int n_batch, int n_input, + int16_t* output); + +void PortableApplySigmoid(const int16_t* input, int32_t n_batch, + int32_t n_input, int16_t* output); + +void PortableApplySigmoidFloat(const int16_t* input, int32_t n_batch, + int32_t n_input, int16_t* output); + +void PortableApplyTanh(int32_t integer_bits, const int16_t* input, + int32_t n_batch, int32_t n_input, int16_t* output); + +void PortableApplyTanhFloat(const int16_t* input, int32_t n_batch, + int32_t n_input, int32_t integer_bits, + int16_t* output); + +void PortableCwiseMul(const int16_t* input_1, const int16_t* input_2, + int n_batch, int n_input, int shift, int16_t* output); + +void PortableCwiseMul(const int16_t* input_1, const int16_t* input_2, + int32_t multiplier, int32_t shift, int32_t n_batch, + int32_t n_input, int32_t output_zp, int8_t* output); + +void PortableCwiseAdd(const int16_t* input_1, const int16_t* input_2, + int n_batch, int n_input, int16_t* output); + +template +inline void PortableCwiseClipping(T* vector, const int v_size, + const T& clipping_value) { + for (int i = 0; i < v_size; i++) { + vector[i] = std::max(std::min(clipping_value, vector[i]), + static_cast(-clipping_value)); + } +} + +// Batch vector initialization with another vector. +void PortableVectorBatchVectorAssign(const float* vector, int v_size, + int n_batch, float* batch_vector); + +// Compute "1.0f - elements of vector" (used in CIFG). +void PortableSub1Vector(const float* vector, int v_size, float* result); + +void PortableSub1Vector(const int16_t* vector, int v_size, int16_t* result); + +// Multiply all elements of vector with a scalar. +void PortableVectorScalarMultiply(const int8_t* vector, int v_size, float scale, + float* result); + +// Reduce-sum on a vector: +// input_vector: pointer to input vector. +// output_vector: pointer to vector. +// output_size: output vector size. +// reduction_size: number of consecutive elements from input vector which are +// added to get one element of output. +template +inline void PortableReductionSumVector(const INPUT* input_vector, + OUTPUT* output_vector, int output_size, + int reduction_size) { + for (int o = 0; o < output_size; o++) { + OUTPUT result = 0; + for (int r = 0; r < reduction_size; r++) { + result += input_vector[r]; + } + output_vector[o] = result; + input_vector += reduction_size; + } +} + +// Layer norm for each batch. +void PortableMeanStddevNormalization(const float* __restrict__ input_vector, + float* __restrict__ output_vector, + int v_size, int n_batch); + +// Saturate Add. +void PortableTwoGateSaturatingAdd(const int8_t* input, int8_t input_zp, + const int8_t* recurrent, int8_t recurrent_zp, + int32_t input_effective_scale_a, + int32_t input_effective_scale_b, + int32_t recurrent_effective_scale_a, + int32_t recurrent_effective_scale_b, + int32_t n_batch, int32_t n_cell, + int16_t* output); + +// Add another vector for each batch in the batch vector. +template +inline void VectorBatchVectorAdd(const T* vector, int v_size, int n_batch, + T* batch_vector) { + for (int b = 0; b < n_batch; b++) { + for (int i = 0; i < v_size; ++i) { + batch_vector[i] += vector[i]; + } + batch_vector += v_size; + } +} + +// Cwise product of two vectors. +template +inline void VectorVectorCwiseProduct(const T* vector1, const T* vector2, + int v_size, T* result) { + for (int v = 0; v < v_size; v++) { + *result++ = *vector1++ * *vector2++; + } +} + +// Cwise product of a vector and a batch-vector. +template +inline void VectorBatchVectorCwiseProduct(const T* vector, int v_size, + const T* batch_vector, int n_batch, + T* result) { + for (int b = 0; b < n_batch; b++) { + VectorVectorCwiseProduct(vector, batch_vector, v_size, result); + // Update the pointers. + result += v_size; + batch_vector += v_size; + } +} + +// Reduce-sum on a float input vector: +// input_vector: float pointer to input vector. +// output_vector: float pointer to vector. +// output_size: output vector size. +// reduction_size: number of consecutive elements from input vector which are +// added to get one element of output. +inline void ReductionSumVector(const float* input_vector, float* output_vector, + int output_size, int reduction_size) { + PortableReductionSumVector(input_vector, output_vector, output_size, + reduction_size); +} + +// Same as above but input/output is 32 bit integer. +inline void ReductionSumVector(const int32_t* input_vector, + int32_t* output_vector, int output_size, + int reduction_size) { + PortableReductionSumVector(input_vector, output_vector, output_size, + reduction_size); +} + +// Same as above but input is 8 bit integer. +inline void ReductionSumVector(const int8_t* input_vector, + int32_t* output_vector, int output_size, + int reduction_size) { + PortableReductionSumVector(input_vector, output_vector, output_size, + reduction_size); +} + +// Cwise product and accumulate of two vectors. Since it's a MAC operation, the +// assumption here is that result array is initialized to valid values. +template +inline void VectorVectorCwiseProductAccumulate(const T* __restrict__ vector1, + const T* __restrict__ vector2, + int v_size, + T* __restrict__ result) { + for (int v = 0; v < v_size; v++) { + *result++ += *vector1++ * *vector2++; + } +} + +// Batch vector initialization with another vector. +template +inline void VectorBatchVectorAssign(const T* vector, int v_size, int n_batch, + T* batch_vector) { + for (int b = 0; b < n_batch; b++) { + std::copy_n(vector, v_size, batch_vector + b * v_size); + } +} + +inline void SymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, float* min, + float* max, float* scaling_factor) { + PortableSymmetricQuantizeFloats(values, size, quantized_values, min, max, + scaling_factor); +} + +inline void SymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, float min_value, + float max_value, float* scaling_factor) { + PortableSymmetricQuantizeFloats(values, size, quantized_values, min_value, + max_value, scaling_factor); +} + +inline void AsymmetricQuantizeFloats(const float* values, const int size, + int8_t* quantized_values, + float* scaling_factor, int32_t* offset) { + PortableAsymmetricQuantizeFloats(values, size, quantized_values, + scaling_factor, offset); +} + +// Helper function to quantize floats. +// float_data_ptr input float vectors +// n_batch number of input vectors +// n_data size of a single input vector +// quantized_data_ptr (out) vector with quantized data +// scaling_factors (out) scaling factors (one per vector) +// zero_points (out) zero points (one per vector) +// do_asymmetric controls if the quantization should be asymmetric. +inline void BatchQuantizeFloats(const float* float_data_ptr, int n_batch, + int n_data, int8_t* quantized_data_ptr, + float* scaling_factors, int32_t* zero_points, + bool do_asymmetric) { + for (int b = 0; b < n_batch; ++b) { + const int offset = b * n_data; + if (do_asymmetric) { + AsymmetricQuantizeFloats(float_data_ptr + offset, n_data, + quantized_data_ptr + offset, &scaling_factors[b], + &zero_points[b]); + } else { + float unused_min, unused_max; + SymmetricQuantizeFloats(float_data_ptr + offset, n_data, + quantized_data_ptr + offset, &unused_min, + &unused_max, &scaling_factors[b]); + } + } +} + +// Check if all entries of a vector are zero for float. +inline bool IsZeroVector(const float* vector, int v_size) { + return PortableIsZeroVector(vector, v_size); +} + +// Check if all entries of a vector are zero for int8_t. +inline bool IsZeroVector(const int8_t* vector, int v_size) { + return PortableIsZeroVector(vector, v_size); +} + +// Apply Layer Normalization (https://arxiv.org/abs/1607.06450) to a Quantized +// vector. +// Parameters: +// - input: batch vector of size n_batch * n_input; 16 bit. +// - layer_norm_weights: the quantized layer normalization weights. +// - bias: the bias for the layer normalization. +// - layer_norm_scale_a: multiplier for scale factor. +// - layer_norm_scale_b: shift for scale factor. +// - variance_limit: the guard to make sure the inverse does not overflow. +// - n_batch: the number of batches. +// - n_input: the size for input and output. +// - output: the 16 bit output +inline void ApplyLayerNorm(const int16_t* input, + const int16_t* layer_norm_weights, + const int32_t* bias, int32_t layer_norm_scale_a, + int32_t layer_norm_scale_b, int32_t variance_limit, + int n_batch, int n_input, int16_t* output) { + PortableApplyLayerNorm(input, layer_norm_weights, bias, layer_norm_scale_a, + layer_norm_scale_b, variance_limit, n_batch, n_input, + output); +} + +// Same as above but the internal calculation is done in float. +inline void ApplyLayerNormFloat(const int16_t* input, + const int16_t* layer_norm_weights, + int32_t layer_norm_scale_a, + int32_t layer_norm_scale_b, const int32_t* bias, + int n_batch, int n_input, int16_t* output) { + PortableApplyLayerNormFloat(input, layer_norm_weights, layer_norm_scale_a, + layer_norm_scale_b, bias, n_batch, n_input, + output); +} + +// Apply Sigmoid to a quantized vector. +// Parameters: +// - input: batch vector of size n_batch * n_input; 16 bit. +// - n_batch: the number of batches. +// - n_input: the size for input and output. +// - output: the 16 bit output +// The input is in Q3.12 format and the output is in Q0.15 format. +inline void ApplySigmoid(const int16_t* input, int32_t n_batch, int32_t n_input, + int16_t* output) { + PortableApplySigmoid(input, n_batch, n_input, output); +} + +// Same as above but the internal calcualtion is float. +inline void ApplySigmoidFloat(const int16_t* input, int32_t n_batch, + int32_t n_input, int16_t* output) { + PortableApplySigmoidFloat(input, n_batch, n_input, output); +} + +// Apply Tanh to a quantized vector. +// Parameters: +// - integer_bits: the integer bits of the input. +// Currently supports 0, 1, 2, 3, 4, 5, 6. +// - input: batch vector of size n_batch * n_input; 16 bit. +// - n_batch: the number of batches. +// - n_input: the size for input and output. +// - output: the 16 bit output +// The input is in Qm.15-m format and the output is in Q0.15 format. +inline void ApplyTanh(int32_t integer_bits, const int16_t* input, + int32_t n_batch, int32_t n_input, int16_t* output) { + PortableApplyTanh(integer_bits, input, n_batch, n_input, output); +} + +// Apply Tanh to a quantized vector. Tbe internal calculation is in float. +// - Input has 2^(integer_bits) as scale. +// - Output has Q0.15 as scale. +inline void ApplyTanhFloat(const int16_t* input, int32_t n_batch, + int32_t n_input, int32_t integer_bits, + int16_t* output) { + PortableApplyTanhFloat(input, n_batch, n_input, integer_bits, output); +} + +// Element-wise multiplication of two quantized vectors. +// Parameters: +// - input_1: batch vector of size n_batch * n_input; 16 bit. +// - input_2: batch vector of size n_batch * n_input; 16 bit. +// - n_batch: the number of batches. +// - n_input: the size for input and output. +// - shift: the shift needed to produce the output. +// - output: the 16 bit output of size n_batch * n_input. +// Output does not need to be initialized. +inline void CwiseMul(const int16_t* input_1, const int16_t* input_2, + int n_batch, int n_input, int shift, int16_t* output) { + PortableCwiseMul(input_1, input_2, n_batch, n_input, shift, output); +} + +// Element-wise multiplication of two quantized vectors with rescaling. +// Parameters: +// - input_1: batch vector of size n_batch * n_input; 16 bit. +// - input_2: batch vector of size n_batch * n_input; 16 bit. +// - multiplier: the multiplier part of scale. +// - shift: the shift part of scale. +// - n_batch: the number of batches. +// - n_input: the size for input and output. +// - output: the 8 bit output of size n_batch * n_input. +// - output_zp: the zero point of output. +// Output does not need to be initialized. +// Multiplier ("m") and shift ("s") are connected to scale ("s") with s = m * +// 2^(s - 31). +inline void CwiseMul(const int16_t* input_1, const int16_t* input_2, + int32_t multiplier, int32_t shift, int32_t n_batch, + int32_t n_input, int32_t output_zp, int8_t* output) { + PortableCwiseMul(input_1, input_2, multiplier, shift, n_batch, n_input, + output_zp, output); +} + +// Element-wise in-place clipping of a vector. Overloaded for float, int16_t, +// int8_t. Parameters: +// - vector: vector of size v_size. +// - v_size: the size of the vector. +// - clipping_value: the value used for clipping. +inline void CwiseClipping(float* vector, const int v_size, + const float clipping_value) { + PortableCwiseClipping(vector, v_size, clipping_value); +} + +inline void CwiseClipping(int16_t* vector, const int v_size, + const int16_t clipping_value) { + PortableCwiseClipping(vector, v_size, clipping_value); +} + +inline void CwiseClipping(int8_t* vector, const int v_size, + const int8_t clipping_value) { + PortableCwiseClipping(vector, v_size, clipping_value); +} + +// Element-wise saturating addition of two quantized vectors without rescaling. +// Parameters: +// - input_1: batch vector of size n_batch * n_input; 16 bit. +// - input_2: batch vector of size n_batch * n_input; 16 bit. +// - n_batch: the number of batches. +// - n_input: the size for input and output. +// - output: the 8 bit output of size n_batch * n_input. +// Output does not need to be initialized. +inline void CwiseAdd(const int16_t* input_1, const int16_t* input_2, + int n_batch, int n_input, int16_t* output) { + PortableCwiseAdd(input_1, input_2, n_batch, n_input, output); +} + +inline void MeanStddevNormalization(const float* input_vector, + float* output_vector, int v_size, + int n_batch) { + PortableMeanStddevNormalization(input_vector, output_vector, v_size, n_batch); +} + +inline void Sub1Vector(const float* vector, int v_size, float* result) { + PortableSub1Vector(vector, v_size, result); +} + +inline void Sub1Vector(const int16_t* vector, int v_size, int16_t* result) { + PortableSub1Vector(vector, v_size, result); +} + +// Multiply all elements of vector with a scalar. +inline void VectorScalarMultiply(const int8_t* vector, int v_size, float scale, + float* result) { + PortableVectorScalarMultiply(vector, v_size, scale, result); +} + +// Saturate Add with rescale on both inputs. +inline void TwoGateSaturatingAdd(const int8_t* input, int8_t input_zp, + const int8_t* recurrent, int8_t recurrent_zp, + int32_t input_effective_scale_a, + int32_t input_effective_scale_b, + int32_t recurrent_effective_scale_a, + int32_t recurrent_effective_scale_b, + int32_t n_batch, int32_t n_cell, + int16_t* output) { + PortableTwoGateSaturatingAdd( + input, input_zp, recurrent, recurrent_zp, input_effective_scale_a, + input_effective_scale_b, recurrent_effective_scale_a, + recurrent_effective_scale_b, n_batch, n_cell, output); +} + +// Multiplies a matrix by a "batched" vector (i.e. a matrix with a batch +// dimension composed by input vectors independent from each other). The result +// of the multiplication is accumulated to the passed result buffer. +// More specifically, for a matrix M of shape [n, i] and a batched-vector +// of shape [i, batch] it will first compute the product of shape [n, batch]. +// This product will be accumulated to the result buffer. +inline void MatrixBatchVectorMultiplyAccumulate(const float* matrix, int m_rows, + int m_cols, const float* vector, + int n_batch, float* result) { + PortableMatrixBatchVectorMultiplyAccumulate(matrix, m_rows, m_cols, vector, + n_batch, result); +} + +// Same as the function above, but the matrix is a sparse tensor with block +// pattern 1x4. +// This function assumes that m_cols is a multiple of the block size (4 in this +// case) so that there's no incomplete block. +inline void MatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vector, const float* scaling_factors, + int n_batch, float* __restrict__ result) { + PortableMatrixBatchVectorMultiplyAccumulate(matrix, m_rows, m_cols, vector, + scaling_factors, n_batch, result); +} + +inline void MatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vectors, const float* scaling_factors, + int n_batch, float* __restrict__ result, const float* per_channel_scale, + const int32_t* input_offset, int32_t* scratch, int32_t* row_sums, + bool* compute_row_sums, CpuBackendContext* context) { + PortableMatrixBatchVectorMultiplyAccumulate( + matrix, m_rows, m_cols, vectors, scaling_factors, n_batch, result, + per_channel_scale, input_offset, scratch, row_sums, compute_row_sums, + context); +} + +inline void MatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vector, const float* scaling_factors, + int n_batch, int32_t* scratch, float* __restrict__ result, + CpuBackendContext* context) { + PortableMatrixBatchVectorMultiplyAccumulate(matrix, m_rows, m_cols, vector, + scaling_factors, n_batch, result); +} + +// Same as the function above, but the matrix is a sparse tensor with block +// pattern 1x4. +// This function assumes that m_cols is a multiple of the block size (4 in this +// case) so that there's no incomplete block. +inline void SparseMatrixBatchVectorMultiplyAccumulate1x4( + const float* __restrict__ matrix, const int32_t* __restrict__ segments, + const int32_t* __restrict__ indices, int m_rows, int m_cols, + const float* __restrict__ vector, int n_batch, float* __restrict__ result) { + PortableSparseMatrixBatchVectorMultiplyAccumulate1x4( + matrix, segments, indices, m_rows, m_cols, vector, n_batch, result); +} + +// Same as the function above, but the matrix is stored in block compressed +// sparse row format with block pattern 1x16 which consists of two arrays: +// 1. A matrix array stores non-zero blocks of the matrix in row major. +// 2. A ledger array stores nrows groups, one group per row. Each group starts +// with an integer representing the number of non-zero blocks for the +// corresponding row and follows with column indexes of the first element +// of each non-zero block. +// This function assumes that +// 1. m_cols is a multiple of 16 so that all blocks are full blocks. +// 2. m_cols < 254 * 16 so that block index can be represented by uint8. +inline void SparseMatrixBatchVectorMultiplyAccumulate( + const float* __restrict__ matrix, const uint8_t* __restrict__ ledger, + int m_rows, int m_cols, const float* __restrict__ vector, int n_batch, + float* __restrict__ result) { + PortableSparseMatrixBatchVectorMultiplyAccumulate( + matrix, ledger, m_rows, m_cols, vector, n_batch, result); +} + +// Same as the function above, but the matrix is a sparse tensor with block +// pattern 1x16. +// This function assumes that m_cols is a multiple of the block size (16 in this +// case) so that there's no incomplete block. Also, it assumes all offsets of +// input, output and filter are zero. +inline void SparseMatrixBatchVectorMultiplyAccumulate1x16( + const int8_t* __restrict__ matrix, const int32_t* __restrict__ segments, + const int32_t* __restrict__ indices, int m_rows, int m_cols, + const int8_t* __restrict__ vector, const int32_t* __restrict__ bias_vector, + int n_batch, const int32_t input_offset, const int32_t output_multiplier, + const int32_t output_shift, const int32_t output_offset, + const int32_t output_activation_min, const int32_t output_activation_max, + int8_t* __restrict__ result) { + PortableSparseMatrixBatchVectorMultiplyAccumulate1x16( + matrix, segments, indices, m_rows, m_cols, vector, bias_vector, n_batch, + input_offset, output_multiplier, output_shift, output_offset, + output_activation_min, output_activation_max, result); +} + +// Same as the function above, but the matrix is stored in block compressed +// sparse row format with block pattern 1x16 which consists of two arrays: +// 1. A matrix array stores non-zero blocks of the matrix in row major. +// 2. A ledger array stores nrows groups, one group per row. Each group starts +// with an integer representing the number of non-zero blocks for the +// corresponding row followed by column index of the first element of +// each non-zero block. +// This function assumes that +// 1. m_cols is a multiple of 16 so that all blocks are full blocks. +// 2. m_cols < 254 * 16 so that block index can be represented by uint8. +inline void SparseMatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const uint8_t* ledger, const int m_rows, + const int m_cols, const int8_t* __restrict__ vectors, + const float* scaling_factors, int n_batch, float* __restrict__ result) { + PortableSparseMatrixBatchVectorMultiplyAccumulate( + matrix, ledger, m_rows, m_cols, vectors, scaling_factors, n_batch, + result); +} + +// Same as the above 8, 8, 8 integer matmul except for the presence of zero +// point and non-accumulative. +// TODO(b/148688698): remove this function by folding zero point calculation in +// prepare() function. +inline void MatrixBatchVectorMultiplyAccumulate( + const int8_t* input, const int32_t* bias, + const int8_t* input_to_gate_weights, int32_t multiplier, int32_t shift, + int32_t n_batch, int32_t n_input, int32_t n_output, int32_t output_zp, + int32_t* scratch, int16_t* output, CpuBackendContext* context) { + PortableMatrixBatchVectorMultiplyAccumulate( + input, bias, input_to_gate_weights, multiplier, shift, n_batch, n_input, + n_output, output_zp, scratch, output, context); +} + +// Same as above but has 16 bit and 8 bit input and 8 bit output. +// Used in projection when hidden is 16bit. +inline void MatrixBatchVectorMultiplyAccumulate( + const int8_t* input, const int32_t* bias, + const int8_t* input_to_gate_weights, int32_t multiplier, int32_t shift, + int32_t n_batch, int32_t n_input, int32_t n_output, int32_t output_zp, + int32_t* scratch, int8_t* output, CpuBackendContext* context) { + PortableMatrixBatchVectorMultiplyAccumulate( + input, bias, input_to_gate_weights, multiplier, shift, n_batch, n_input, + n_output, output_zp, scratch, output, context); +} + +// Same as the function above, but provides separate scaling factor for the +// matrix and the vectors. The scaling factors are multiplied in the +// scaling_factor_scratch buffer. +inline void MatrixBatchVectorMultiplyAccumulate( + const int8_t* __restrict__ matrix, const int m_rows, const int m_cols, + const int8_t* __restrict__ vectors, const float matrix_scaling_factor, + const float* vector_scaling_factors, int n_batch, + float* __restrict__ result, const float* per_channel_scale, + const int32_t* input_offset, int32_t* scratch, int32_t* row_sums, + bool* compute_row_sums, float* scaling_factor_scratch, + CpuBackendContext* context) { + for (int b = 0; b < n_batch; ++b) { + scaling_factor_scratch[b] = + vector_scaling_factors[b] * matrix_scaling_factor; + } + MatrixBatchVectorMultiplyAccumulate(matrix, m_rows, m_cols, vectors, + scaling_factor_scratch, n_batch, result, + per_channel_scale, input_offset, scratch, + row_sums, compute_row_sums, context); +} + +// Multiplies a matrix with a scalar and reduce the result on each row to a +// scalar. +// Parameters: +// - matrix: matrix of size n_row * n_col +// - scalar: the scalar that is multiplied to each element in the matrix +// - n_row: the row count of the matrix +// - n_col: the column count of the matrix +// - output: the 32bit output +// Note: We do not need saturation because the int8 * int8 is safe from overflow +// in (2^31-1) / (2^14) = 131072, which is bigger than the n_row. Non-zero +// initial output value is not exceptionally large. +inline void MatrixScalarMultiplyAccumulate(const int8_t* matrix, int32_t scalar, + int32_t n_row, int32_t n_col, + int32_t* output) { + PortableMatrixScalarMultiplyAccumulate(matrix, scalar, n_row, n_col, output); +} + +// Same as the above 8, 8, 8 integer matmul except for the presence of zero +// point and non-accumulative. +// TODO(b/148688698): remove this function by folding zero point calculation in +// prepare() function. +inline void MatrixBatchVectorMultiply(const int8_t* input, + int32_t input_zeropoint, + const int8_t* input_to_gate_weights, + int32_t input_to_gate_effective_scale_a, + int32_t input_to_gate_effective_scale_b, + int32_t n_batch, int32_t n_input, + int32_t n_cell, int8_t* gate_output, + int8_t gate_output_zp) { + PortableMatrixBatchVectorMultiply( + input, input_zeropoint, input_to_gate_weights, + input_to_gate_effective_scale_a, input_to_gate_effective_scale_b, n_batch, + n_input, n_cell, gate_output, gate_output_zp); +} + +// Same as above but has 16 bit and 8 bit input and 8 bit output. +// Used in projection when hidden is 16bit. +inline void MatrixBatchVectorMultiply(const int16_t* hidden, + const int8_t* hidden_to_output_weights, + int32_t proj_effective_scale_a, + int32_t proj_effective_scale_b, + const int32_t* gate_bias, int32_t n_batch, + int32_t n_hidden, int32_t n_output, + int32_t output_zp, int8_t* proj_output) { + PortableMatrixBatchVectorMultiply(hidden, hidden_to_output_weights, + proj_effective_scale_a, + proj_effective_scale_b, gate_bias, n_batch, + n_hidden, n_output, output_zp, proj_output); +} + +// Cwise product and accumulate of a vector and a batch-vector. Since it's a MAC +// operation, the assumption here is that result array is initialized to valid +// values. +template +inline void VectorBatchVectorCwiseProductAccumulate(const T* vector, int v_size, + const T* batch_vector, + int n_batch, T* result) { + for (int b = 0; b < n_batch; b++) { + VectorVectorCwiseProductAccumulate(vector, batch_vector, v_size, result); + // Update the pointers. + result += v_size; + batch_vector += v_size; + } +} + +// Same as above, but inputs are 16bit integer and output is 16bit integer. +inline void VectorBatchVectorCwiseProductAccumulate( + const int16_t* vector, int v_size, const int16_t* batch_vector, int n_batch, + int32_t multiplier, int shift, int16_t* result) { + PortableVectorBatchVectorCwiseProductAccumulate( + vector, v_size, batch_vector, n_batch, multiplier, shift, result); +} + +// Apply Rectified Linear to elements of a vector. +inline void ApplyReluToVector(const float* vector, int v_size, float* result) { + for (int v = 0; v < v_size; v++) { + result[v] = std::max(0.0f, vector[v]); + } +} + +// Apply Rectified Linear 1 (cap to [-1;1]) to elements of a vector +inline void ApplyRelu1ToVector(const float* vector, int v_size, float* result) { + for (int v = 0; v < v_size; v++) { + result[v] = std::max(-1.0f, std::min(vector[v], 1.0f)); + } +} + +// Apply Rectified Linear 6 (cap to [0;6]) to elements of a vector +inline void ApplyRelu6ToVector(const float* vector, int v_size, float* result) { + for (int v = 0; v < v_size; v++) { + result[v] = std::max(0.0f, std::min(vector[v], 6.0f)); + } +} + +// Apply tanh to elements of a vector +inline void ApplyTanhToVector(const float* vector, int v_size, float* result) { + for (int v = 0; v < v_size; v++) { + result[v] = std::tanh(vector[v]); + } +} + +// Apply signbit to elements of a vector +inline void ApplySignbitToVector(const float* vector, int v_size, + float* result) { + for (int v = 0; v < v_size; v++) { + result[v] = std::signbit(vector[v]); + } +} + +// Apply sigmoid to elements of a vector. +inline void ApplySigmoidToVector(const float* vector, int v_size, + float* result) { + for (int v = 0; v < v_size; v++) { + result[v] = 1.0f / (1.0f + std::exp(-vector[v])); + } +} + +// Apply appropriate activation function to elements of a vector. +inline void ApplyActivationToVector(const float* vector, int v_size, + TfLiteFusedActivation activation, + float* result) { + switch (activation) { + case kTfLiteActNone: + return; + case kTfLiteActRelu: + return ApplyReluToVector(vector, v_size, result); + case kTfLiteActReluN1To1: + return ApplyRelu1ToVector(vector, v_size, result); + case kTfLiteActRelu6: + return ApplyRelu6ToVector(vector, v_size, result); + case kTfLiteActTanh: + return ApplyTanhToVector(vector, v_size, result); + case kTfLiteActSignBit: + return ApplySignbitToVector(vector, v_size, result); + case kTfLiteActSigmoid: + return ApplySigmoidToVector(vector, v_size, result); + } +} + +} // namespace micro_tensor_utils + +} // namespace tflite + +#endif // TENSORFLOW_LITE_MICRO_KERNELS_MICRO_TENSOR_UTILS_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/mirror_pad.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/mirror_pad.cc index a19561f6..90d3bd9e 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/mirror_pad.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/mirror_pad.cc @@ -209,14 +209,7 @@ TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_MIRROR_PAD() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/mul.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/mul.cc index e8295197..59f006b0 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/mul.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/mul.cc @@ -61,14 +61,7 @@ TfLiteStatus MulEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_MUL() { - return {/*init=*/MulInit, - /*free=*/nullptr, - /*prepare=*/MulPrepare, - /*invoke=*/MulEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(MulInit, MulPrepare, MulEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/neg.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/neg.cc index 74a95ca3..59dd8cb8 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/neg.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/neg.cc @@ -51,14 +51,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace neg TfLiteRegistration Register_NEG() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/neg::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, neg::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/pack.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/pack.cc index 098a0482..56f3b96e 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/pack.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/pack.cc @@ -108,14 +108,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace pack TfLiteRegistration Register_PACK() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/pack::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, pack::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/pad.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/pad.cc index 1428b16e..b645f983 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/pad.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/pad.cc @@ -223,26 +223,12 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace pad TfLiteRegistration Register_PAD() { - return {/*init=*/pad::Init, - /*free=*/nullptr, - /*prepare=*/pad::Prepare, - /*invoke=*/pad::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(pad::Init, pad::Prepare, pad::Eval); } // Also register Pad as PadV2. TfLiteRegistration Register_PADV2() { - return {/*init=*/pad::Init, - /*free=*/nullptr, - /*prepare=*/pad::Prepare, - /*invoke=*/pad::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(pad::Init, pad::Prepare, pad::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/pooling.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/pooling.cc index b3781636..a2ef8b62 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/pooling.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/pooling.cc @@ -88,25 +88,11 @@ void* Init(TfLiteContext* context, const char* buffer, size_t length) { } // namespace TfLiteRegistration Register_AVERAGE_POOL_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/PoolingPrepare, - /*invoke=*/AverageEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, PoolingPrepare, AverageEval); } TfLiteRegistration Register_MAX_POOL_2D() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/PoolingPrepare, - /*invoke=*/MaxEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, PoolingPrepare, MaxEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/prelu.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/prelu.cc index dc0c32c0..54cc0e02 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/prelu.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/prelu.cc @@ -69,14 +69,7 @@ TfLiteStatus PreluEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_PRELU() { - return {/*init=*/PreluInit, - /*free=*/nullptr, - /*prepare=*/PreluPrepare, - /*invoke=*/PreluEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(PreluInit, PreluPrepare, PreluEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize.cc index 97f5a004..b5eb9c3c 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize.cc @@ -34,14 +34,8 @@ void* Init(TfLiteContext* context, const char* buffer, size_t length) { } // namespace TfLiteRegistration Register_QUANTIZE() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/PrepareQuantizeReference, - /*invoke=*/EvalQuantizeReference, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, PrepareQuantizeReference, + EvalQuantizeReference); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize_common.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize_common.cc index cca3489d..94220529 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize_common.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/quantize_common.cc @@ -53,15 +53,19 @@ TfLiteStatus PrepareQuantizeReference(TfLiteContext* context, TF_LITE_ENSURE(context, affine_quantization->scale); TF_LITE_ENSURE(context, affine_quantization->scale->size == 1); - TF_LITE_ENSURE(context, - input->type == kTfLiteFloat32 || input->type == kTfLiteInt32 || - input->type == kTfLiteInt16 || input->type == kTfLiteInt8); + TF_LITE_ENSURE( + context, input->type == kTfLiteFloat32 || input->type == kTfLiteInt32 || + input->type == kTfLiteInt16 || input->type == kTfLiteInt8 || + input->type == kTfLiteUInt8); TF_LITE_ENSURE(context, output->type == kTfLiteInt8 || output->type == kTfLiteInt16 || - output->type == kTfLiteInt32); + output->type == kTfLiteInt32 || + output->type == kTfLiteUInt8); if ((input->type == kTfLiteInt16 && output->type == kTfLiteInt8) || (input->type == kTfLiteInt8 && output->type == kTfLiteInt8) || + (input->type == kTfLiteInt8 && output->type == kTfLiteUInt8) || + (input->type == kTfLiteUInt8 && output->type == kTfLiteInt8) || (input->type == kTfLiteInt8 && output->type == kTfLiteInt16) || (input->type == kTfLiteInt8 && output->type == kTfLiteInt32) || (input->type == kTfLiteInt16 && output->type == kTfLiteInt16) || @@ -109,9 +113,9 @@ TfLiteStatus EvalQuantizeReference(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorData(output)); return kTfLiteOk; default: - TF_LITE_KERNEL_LOG(context, "Input %s, output %s not supported.", - TfLiteTypeGetName(input->type), - TfLiteTypeGetName(output->type)); + MicroPrintf("Input %s, output %s not supported.", + TfLiteTypeGetName(input->type), + TfLiteTypeGetName(output->type)); return kTfLiteError; } } else if (input->type == kTfLiteInt32) { @@ -132,9 +136,9 @@ TfLiteStatus EvalQuantizeReference(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorData(output)); break; default: - TF_LITE_KERNEL_LOG(context, "Input %s, output %s not supported.", - TfLiteTypeGetName(input->type), - TfLiteTypeGetName(output->type)); + MicroPrintf("Input %s, output %s not supported.", + TfLiteTypeGetName(input->type), + TfLiteTypeGetName(output->type)); return kTfLiteError; } } else if (input->type == kTfLiteInt16) { @@ -162,9 +166,9 @@ TfLiteStatus EvalQuantizeReference(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorData(output)); return kTfLiteOk; default: - TF_LITE_KERNEL_LOG(context, "Input %s, output %s not supported.", - TfLiteTypeGetName(input->type), - TfLiteTypeGetName(output->type)); + MicroPrintf("Input %s, output %s not supported.", + TfLiteTypeGetName(input->type), + TfLiteTypeGetName(output->type)); return kTfLiteError; } } else if (input->type == kTfLiteInt8) { @@ -179,6 +183,13 @@ TfLiteStatus EvalQuantizeReference(TfLiteContext* context, TfLiteNode* node) { data->input_zero_point, data->quantization_params.zero_point, tflite::micro::GetTensorData(output)); break; + case kTfLiteUInt8: + reference_ops::Requantize( + tflite::micro::GetTensorData(input), size, + data->requantize_output_multiplier, data->requantize_output_shift, + data->input_zero_point, data->quantization_params.zero_point, + tflite::micro::GetTensorData(output)); + break; case kTfLiteInt16: reference_ops::Requantize( tflite::micro::GetTensorData(input), size, @@ -194,15 +205,31 @@ TfLiteStatus EvalQuantizeReference(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorData(output)); break; default: - TF_LITE_KERNEL_LOG(context, "Input %s, output %s not supported.", - TfLiteTypeGetName(input->type), - TfLiteTypeGetName(output->type)); + MicroPrintf("Input %s, output %s not supported.", + TfLiteTypeGetName(input->type), + TfLiteTypeGetName(output->type)); + return kTfLiteError; + } + } else if (input->type == kTfLiteUInt8) { + size_t size = ElementCount(*input->dims); + switch (output->type) { + case kTfLiteInt8: + reference_ops::Requantize( + tflite::micro::GetTensorData(input), size, + data->requantize_output_multiplier, data->requantize_output_shift, + data->input_zero_point, data->quantization_params.zero_point, + tflite::micro::GetTensorData(output)); + break; + default: + MicroPrintf("Input %s, output %s not supported.", + TfLiteTypeGetName(input->type), + TfLiteTypeGetName(output->type)); return kTfLiteError; } } else { - TF_LITE_KERNEL_LOG(context, "Input %s, output %s not supported.", - TfLiteTypeGetName(input->type), - TfLiteTypeGetName(output->type)); + MicroPrintf("Input %s, output %s not supported.", + TfLiteTypeGetName(input->type), + TfLiteTypeGetName(output->type)); return kTfLiteError; } diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/read_variable.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/read_variable.cc index f9124f04..422c0384 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/read_variable.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/read_variable.cc @@ -81,14 +81,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_READ_VARIABLE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.cc index 40aed2d5..7e862ba1 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.cc @@ -1,4 +1,4 @@ -/* Copyright 2019 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,331 +23,41 @@ limitations under the License. #include "tensorflow/lite/kernels/internal/types.h" #include "tensorflow/lite/kernels/kernel_util.h" #include "tensorflow/lite/micro/kernels/kernel_util.h" +#include "tensorflow/lite/micro/kernels/reduce.h" #include "tensorflow/lite/micro/micro_utils.h" namespace tflite { -namespace ops { -namespace micro { -namespace reduce { - -constexpr int kMaxNumberOfAxis = 4; -constexpr int kMaxNumberOfReducedAxis = 2; - -struct OpData { - int32_t multiplier; - int shift; - int temp_buffer_idx; - int resolved_axis_idx; - int input_zp; - float input_scale; - int output_zp; - float output_scale; - int num_output_elements; -}; void* InitReduce(TfLiteContext* context, const char* buffer, size_t length) { - return context->AllocatePersistentBuffer(context, sizeof(OpData)); -} - -TfLiteStatus PrepareSimple(TfLiteContext* context, TfLiteNode* node) { - MicroContext* micro_context = GetMicroContext(context); - - // Inputs Tensor (dtype depends on quantization): - // [0] = Input - // [1] = Axis - TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); - - // Outputs Tensor (dtype depends on quantization): - // [0] = Output - - // Validate number of inputs and outputs - TF_LITE_ENSURE_EQ(context, node->inputs->size, 2); - TF_LITE_ENSURE_EQ(context, node->outputs->size, 1); - - // Validate axis type - TfLiteTensor* axis = micro_context->AllocateTempInputTensor(node, 1); - TF_LITE_ENSURE(context, axis != nullptr); - TF_LITE_ENSURE_TYPES_EQ(context, axis->type, kTfLiteInt32); - - if (input->type == kTfLiteInt8) { - OpData* data = static_cast(node->user_data); - TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); - const double real_multiplier = static_cast(input->params.scale) / - static_cast(output->params.scale); - QuantizeMultiplier(real_multiplier, &data->multiplier, &data->shift); - micro_context->DeallocateTempTfLiteTensor(output); - } - micro_context->DeallocateTempTfLiteTensor(axis); - micro_context->DeallocateTempTfLiteTensor(input); - return kTfLiteOk; + return context->AllocatePersistentBuffer(context, sizeof(OpDataReduce)); } TfLiteStatus PrepareMax(TfLiteContext* context, TfLiteNode* node) { - TF_LITE_ENSURE_OK(context, PrepareSimple(context, node)); - - MicroContext* micro_context = GetMicroContext(context); - OpData* op_data = static_cast(node->user_data); - TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); - TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); - TfLiteTensor* axis = micro_context->AllocateTempInputTensor(node, 1); - - op_data->input_scale = input->params.scale; - op_data->output_scale = output->params.scale; - op_data->num_output_elements = NumElements(output); - - context->RequestScratchBufferInArena(context, sizeof(int) * input->dims->size, - &op_data->temp_buffer_idx); - context->RequestScratchBufferInArena( - context, sizeof(int) * static_cast(ElementCount(*axis->dims)), - &op_data->resolved_axis_idx); - - micro_context->DeallocateTempTfLiteTensor(input); - micro_context->DeallocateTempTfLiteTensor(output); - micro_context->DeallocateTempTfLiteTensor(axis); - return kTfLiteOk; + return PrepareMaxHelper(context, node, + static_cast(node->user_data)); } TfLiteStatus PrepareMeanOrSum(TfLiteContext* context, TfLiteNode* node) { - MicroContext* micro_context = GetMicroContext(context); - TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); - OpData* op_data = reinterpret_cast(node->user_data); - TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); - if (input->type == kTfLiteInt8 || input->type == kTfLiteInt16) { - const double real_multiplier = static_cast(input->params.scale) / - static_cast(output->params.scale); - QuantizeMultiplier(real_multiplier, &op_data->multiplier, &op_data->shift); - } - - int output_size = NumElements(output); - if (input->type == kTfLiteInt8 || input->type == kTfLiteInt16) { - context->RequestScratchBufferInArena(context, output_size * sizeof(int32_t), - &op_data->temp_buffer_idx); - op_data->input_zp = input->params.zero_point; - op_data->input_scale = input->params.scale; - op_data->output_zp = output->params.zero_point; - op_data->output_scale = output->params.scale; - } - - TF_LITE_ENSURE_OK(context, PrepareSimple(context, node)); - // TODO(b/144955155): Support uint8_t(b/144955155) and int8_t(b/144955018) - micro_context->DeallocateTempTfLiteTensor(input); - micro_context->DeallocateTempTfLiteTensor(output); - return kTfLiteOk; -} - -void ResolveAxis(const int* axis_data, int axis_count, - tflite::MeanParams* op_params) { - int i = 0; - for (; i < axis_count; ++i) { - op_params->axis[i] = static_cast(axis_data[i]); - } - for (; i < 4; ++i) { - op_params->axis[i] = 1; - } - op_params->axis_count = axis_count; + return PrepareMeanOrSumHelper(context, node, + static_cast(node->user_data)); } TfLiteStatus EvalMean(TfLiteContext* context, TfLiteNode* node) { - const TfLiteEvalTensor* input = tflite::micro::GetEvalInput(context, node, 0); - const TfLiteEvalTensor* axis = tflite::micro::GetEvalInput(context, node, 1); - TfLiteEvalTensor* output = tflite::micro::GetEvalOutput(context, node, 0); - TfLiteReducerParams* params = - reinterpret_cast(node->builtin_data); - OpData* op_data = reinterpret_cast(node->user_data); - - int num_axis = static_cast(ElementCount(*axis->dims)); - int temp_index[kMaxNumberOfAxis]; - int resolved_axis[kMaxNumberOfReducedAxis]; - - tflite::MeanParams op_params; - ResolveAxis(tflite::micro::GetTensorData(axis), num_axis, &op_params); - - // Special case mean implementation exists for 4D mean across axes 1 and 2. - bool special_case_4d_axes_1_and_2 = - input->dims->size == 4 && op_params.axis_count == 2 && - ((op_params.axis[0] == 1 && op_params.axis[1] == 2) || - (op_params.axis[0] == 2 && op_params.axis[1] == 1)); - - switch (input->type) { - case kTfLiteFloat32: { - // Defer to specialized implementation for 4D Mean across axes 1 & 2. - if (params->keep_dims && special_case_4d_axes_1_and_2) { - reference_ops::Mean(op_params, tflite::micro::GetTensorShape(input), - tflite::micro::GetTensorData(input), - tflite::micro::GetTensorShape(output), - tflite::micro::GetTensorData(output)); - } else { - TF_LITE_ENSURE( - context, - reference_ops::Mean( - tflite::micro::GetTensorData(input), input->dims->data, - input->dims->size, tflite::micro::GetTensorData(output), - output->dims->data, output->dims->size, - tflite::micro::GetTensorData(axis), num_axis, - params->keep_dims, temp_index, resolved_axis, - tflite::micro::GetTensorData(output))); - } - } break; - case kTfLiteInt8: { - // Defer to specialized implementation for 4D Mean across axes 1 & 2. - if (params->keep_dims && special_case_4d_axes_1_and_2) { - reference_integer_ops::Mean( - op_params, op_data->multiplier, op_data->shift, - tflite::micro::GetTensorShape(input), - tflite::micro::GetTensorData(input), op_data->input_zp, - tflite::micro::GetTensorShape(output), - tflite::micro::GetTensorData(output), op_data->output_zp); - } else if (op_data->input_zp == op_data->output_zp && - op_data->input_scale == op_data->output_scale) { - int32_t* temp_buffer = static_cast( - context->GetScratchBuffer(context, op_data->temp_buffer_idx)); - TF_LITE_ENSURE( - context, - reference_ops::Mean( - tflite::micro::GetTensorData(input), input->dims->data, - input->dims->size, tflite::micro::GetTensorData(output), - output->dims->data, output->dims->size, - tflite::micro::GetTensorData(axis), num_axis, - params->keep_dims, temp_index, resolved_axis, temp_buffer)); - } else { - int32_t* temp_buffer = static_cast( - context->GetScratchBuffer(context, op_data->temp_buffer_idx)); - TF_LITE_ENSURE( - context, - reference_ops::QuantizedMeanOrSum( - tflite::micro::GetTensorData(input), op_data->input_zp, - op_data->input_scale, input->dims->data, input->dims->size, - tflite::micro::GetTensorData(output), - op_data->output_zp, op_data->output_scale, output->dims->data, - output->dims->size, tflite::micro::GetTensorData(axis), - num_axis, params->keep_dims, temp_index, resolved_axis, - temp_buffer, false)); - } - } break; - case kTfLiteInt16: { - // Defer to specialized implementation for 4D Mean across axes 1 & 2. - if (params->keep_dims && special_case_4d_axes_1_and_2) { - reference_integer_ops::Mean( - op_params, op_data->multiplier, op_data->shift, - tflite::micro::GetTensorShape(input), - tflite::micro::GetTensorData(input), op_data->input_zp, - tflite::micro::GetTensorShape(output), - tflite::micro::GetTensorData(output), op_data->output_zp); - } else if (op_data->input_zp == op_data->output_zp && - op_data->input_scale == op_data->output_scale) { - int32_t* temp_buffer = static_cast( - context->GetScratchBuffer(context, op_data->temp_buffer_idx)); - TF_LITE_ENSURE( - context, - reference_ops::Mean(tflite::micro::GetTensorData(input), - input->dims->data, input->dims->size, - tflite::micro::GetTensorData(output), - output->dims->data, output->dims->size, - tflite::micro::GetTensorData(axis), - num_axis, params->keep_dims, temp_index, - resolved_axis, temp_buffer)); - } else { - int32_t* temp_buffer = static_cast( - context->GetScratchBuffer(context, op_data->temp_buffer_idx)); - TF_LITE_ENSURE( - context, - reference_ops::QuantizedMeanOrSum( - tflite::micro::GetTensorData(input), op_data->input_zp, - op_data->input_scale, input->dims->data, input->dims->size, - tflite::micro::GetTensorData(output), - op_data->output_zp, op_data->output_scale, output->dims->data, - output->dims->size, tflite::micro::GetTensorData(axis), - num_axis, params->keep_dims, temp_index, resolved_axis, - temp_buffer, false)); - } - } break; - default: - TF_LITE_ENSURE_MSG(context, false, - "Currently, only float32, int8 or uint8 input type " - "is supported."); - } - return kTfLiteOk; + return EvalMeanHelper(context, node, + static_cast(node->user_data)); } TfLiteStatus EvalMax(TfLiteContext* context, TfLiteNode* node) { - const TfLiteEvalTensor* input = tflite::micro::GetEvalInput(context, node, 0); - const TfLiteEvalTensor* axis = tflite::micro::GetEvalInput(context, node, 1); - TfLiteEvalTensor* output = tflite::micro::GetEvalOutput(context, node, 0); - TF_LITE_ENSURE_TYPES_EQ(context, input->type, output->type); - TfLiteReducerParams* params = - static_cast(node->builtin_data); - OpData* op_data = static_cast(node->user_data); - - // Interpret an axis tensor with null dimensions as a scalar - int num_axis = static_cast(ElementCount(*axis->dims)); - int* temp_buffer = static_cast( - context->GetScratchBuffer(context, op_data->temp_buffer_idx)); - int* resolved_axis = static_cast( - context->GetScratchBuffer(context, op_data->resolved_axis_idx)); - switch (input->type) { - case kTfLiteFloat32: - TF_LITE_ENSURE( - context, - reference_ops::ReduceGeneric( - tflite::micro::GetTensorData(input), input->dims->data, - input->dims->size, tflite::micro::GetTensorData(output), - output->dims->data, output->dims->size, - tflite::micro::GetTensorData(axis), num_axis, - params->keep_dims, temp_buffer, resolved_axis, - std::numeric_limits::lowest(), - [](const float current, const float in) -> float { - return (in > current) ? in : current; - })); - break; - case kTfLiteInt8: - TF_LITE_ENSURE_EQ(context, static_cast(op_data->input_scale), - static_cast(op_data->output_scale)); - TF_LITE_ENSURE_EQ(context, op_data->input_zp, op_data->output_zp); - TF_LITE_ENSURE( - context, - reference_ops::ReduceGeneric( - tflite::micro::GetTensorData(input), input->dims->data, - input->dims->size, tflite::micro::GetTensorData(output), - output->dims->data, output->dims->size, - tflite::micro::GetTensorData(axis), num_axis, - params->keep_dims, temp_buffer, resolved_axis, - std::numeric_limits::lowest(), - [](const int8_t current, const int8_t in) -> int8_t { - return (in > current) ? in : current; - })); - break; - default: - TF_LITE_KERNEL_LOG(context, - "Only float32 and int8 types are supported.\n"); - return kTfLiteError; - } - return kTfLiteOk; + OpDataReduce* op_data = static_cast(node->user_data); + return EvalMaxHelper(context, node, op_data); } -} // namespace reduce - TfLiteRegistration Register_MEAN() { - return {/*init=*/reduce::InitReduce, - /*free=*/nullptr, - /*prepare=*/reduce::PrepareMeanOrSum, - /*invoke=*/reduce::EvalMean, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(InitReduce, PrepareMeanOrSum, EvalMean); } TfLiteRegistration Register_REDUCE_MAX() { - return {/*init=*/reduce::InitReduce, - /*free=*/nullptr, - /*prepare=*/reduce::PrepareMax, - /*invoke=*/reduce::EvalMax, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(InitReduce, PrepareMax, EvalMax); } -} // namespace micro -} // namespace ops } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.h new file mode 100644 index 00000000..cd94b3f5 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce.h @@ -0,0 +1,61 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ + +#ifndef TENSORFLOW_LITE_MICRO_KERNELS_REDUCE_H_ +#define TENSORFLOW_LITE_MICRO_KERNELS_REDUCE_H_ + +#include + +#include "tensorflow/lite/c/builtin_op_data.h" +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/kernels/internal/types.h" + +namespace tflite { + +extern const int kMaxNumberOfAxis; +extern const int kMaxNumberOfReducedAxis; + +struct OpDataReduce { + int32_t multiplier; + int shift; + int temp_buffer_idx; + int resolved_axis_idx; + int input_zp; + float input_scale; + int output_zp; + float output_scale; + int num_output_elements; +}; + +TfLiteStatus PrepareMaxHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data); + +TfLiteStatus PrepareMeanOrSumHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data); + +TfLiteStatus EvalMaxHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data); +TfLiteStatus EvalMeanHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data); + +void ReduceResolveAxis(const int* axis_data, int axis_count, + MeanParams* op_params); + +TfLiteRegistration Register_MEAN(); +TfLiteRegistration Register_REDUCE_MAX(); + +} // namespace tflite + +#endif // TENSORFLOW_LITE_MICRO_KERNELS_REDUCE_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce_common.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce_common.cc new file mode 100644 index 00000000..97452300 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reduce_common.cc @@ -0,0 +1,311 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ + +#include "tensorflow/lite/c/builtin_op_data.h" +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/kernels/internal/quantization_util.h" +#include "tensorflow/lite/kernels/internal/reference/integer_ops/mean.h" +#include "tensorflow/lite/kernels/internal/reference/reduce.h" +#include "tensorflow/lite/kernels/internal/tensor_ctypes.h" +#include "tensorflow/lite/kernels/internal/types.h" +#include "tensorflow/lite/kernels/kernel_util.h" +#include "tensorflow/lite/micro/kernels/kernel_util.h" +#include "tensorflow/lite/micro/kernels/reduce.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" +#include "tensorflow/lite/micro/micro_utils.h" + +namespace tflite { + +const int kMaxNumberOfAxis = 4; +const int kMaxNumberOfReducedAxis = 2; + +TfLiteStatus PrepareSimple(TfLiteContext* context, TfLiteNode* node, + int32_t* multiplier, int* shift) { + MicroContext* micro_context = GetMicroContext(context); + + // Inputs Tensor (dtype depends on quantization): + // [0] = Input + // [1] = Axis + TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); + + // Outputs Tensor (dtype depends on quantization): + // [0] = Output + + // Validate number of inputs and outputs + TF_LITE_ENSURE_EQ(context, node->inputs->size, 2); + TF_LITE_ENSURE_EQ(context, node->outputs->size, 1); + + // Validate axis type + TfLiteTensor* axis = micro_context->AllocateTempInputTensor(node, 1); + TF_LITE_ENSURE(context, axis != nullptr); + TF_LITE_ENSURE_TYPES_EQ(context, axis->type, kTfLiteInt32); + + if (input->type == kTfLiteInt8) { + TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); + const double real_multiplier = static_cast(input->params.scale) / + static_cast(output->params.scale); + QuantizeMultiplier(real_multiplier, multiplier, shift); + micro_context->DeallocateTempTfLiteTensor(output); + } + micro_context->DeallocateTempTfLiteTensor(axis); + micro_context->DeallocateTempTfLiteTensor(input); + return kTfLiteOk; +} + +TfLiteStatus PrepareMaxHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data) { + TF_LITE_ENSURE_OK(context, PrepareSimple(context, node, &op_data->multiplier, + &op_data->shift)); + + MicroContext* micro_context = GetMicroContext(context); + TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); + TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); + TfLiteTensor* axis = micro_context->AllocateTempInputTensor(node, 1); + + op_data->input_scale = input->params.scale; + op_data->output_scale = output->params.scale; + op_data->num_output_elements = NumElements(output); + + context->RequestScratchBufferInArena(context, sizeof(int) * input->dims->size, + &op_data->temp_buffer_idx); + context->RequestScratchBufferInArena( + context, sizeof(int) * static_cast(ElementCount(*axis->dims)), + &op_data->resolved_axis_idx); + + micro_context->DeallocateTempTfLiteTensor(input); + micro_context->DeallocateTempTfLiteTensor(output); + micro_context->DeallocateTempTfLiteTensor(axis); + return kTfLiteOk; +} + +TfLiteStatus PrepareMeanOrSumHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data) { + MicroContext* micro_context = GetMicroContext(context); + TfLiteTensor* input = micro_context->AllocateTempInputTensor(node, 0); + TfLiteTensor* output = micro_context->AllocateTempOutputTensor(node, 0); + if (input->type == kTfLiteInt8 || input->type == kTfLiteInt16) { + const double real_multiplier = static_cast(input->params.scale) / + static_cast(output->params.scale); + QuantizeMultiplier(real_multiplier, &op_data->multiplier, &op_data->shift); + } + + int output_size = NumElements(output); + if (input->type == kTfLiteInt8 || input->type == kTfLiteInt16) { + context->RequestScratchBufferInArena(context, output_size * sizeof(int32_t), + &op_data->temp_buffer_idx); + op_data->input_zp = input->params.zero_point; + op_data->input_scale = input->params.scale; + op_data->output_zp = output->params.zero_point; + op_data->output_scale = output->params.scale; + } + + TF_LITE_ENSURE_OK( + context, + PrepareSimple(context, node, &(op_data->multiplier), &(op_data->shift))); + // TODO(b/144955155): Support uint8_t(b/144955155) and int8_t(b/144955018) + micro_context->DeallocateTempTfLiteTensor(input); + micro_context->DeallocateTempTfLiteTensor(output); + return kTfLiteOk; +} + +void ResolveAxis(const int* axis_data, int axis_count, + tflite::MeanParams* op_params) { + int i = 0; + for (; i < axis_count; ++i) { + op_params->axis[i] = static_cast(axis_data[i]); + } + for (; i < 4; ++i) { + op_params->axis[i] = 1; + } + op_params->axis_count = axis_count; +} + +TfLiteStatus EvalMeanHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data) { + const TfLiteEvalTensor* input = tflite::micro::GetEvalInput(context, node, 0); + const TfLiteEvalTensor* axis = tflite::micro::GetEvalInput(context, node, 1); + TfLiteEvalTensor* output = tflite::micro::GetEvalOutput(context, node, 0); + TfLiteReducerParams* params = + reinterpret_cast(node->builtin_data); + + int num_axis = static_cast(ElementCount(*axis->dims)); + int temp_index[kMaxNumberOfAxis]; + int resolved_axis[kMaxNumberOfReducedAxis]; + + tflite::MeanParams op_params; + ResolveAxis(tflite::micro::GetTensorData(axis), num_axis, &op_params); + + // Special case mean implementation exists for 4D mean across axes 1 and 2. + bool special_case_4d_axes_1_and_2 = + input->dims->size == 4 && op_params.axis_count == 2 && + ((op_params.axis[0] == 1 && op_params.axis[1] == 2) || + (op_params.axis[0] == 2 && op_params.axis[1] == 1)); + + switch (input->type) { + case kTfLiteFloat32: { + // Defer to specialized implementation for 4D Mean across axes 1 & 2. + if (params->keep_dims && special_case_4d_axes_1_and_2) { + reference_ops::Mean(op_params, tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output)); + } else { + TF_LITE_ENSURE( + context, + reference_ops::Mean( + tflite::micro::GetTensorData(input), input->dims->data, + input->dims->size, tflite::micro::GetTensorData(output), + output->dims->data, output->dims->size, + tflite::micro::GetTensorData(axis), num_axis, + params->keep_dims, temp_index, resolved_axis, + tflite::micro::GetTensorData(output))); + } + } break; + case kTfLiteInt8: { + // Defer to specialized implementation for 4D Mean across axes 1 & 2. + if (params->keep_dims && special_case_4d_axes_1_and_2) { + reference_integer_ops::Mean( + op_params, op_data->multiplier, op_data->shift, + tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), op_data->input_zp, + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output), op_data->output_zp); + } else if (op_data->input_zp == op_data->output_zp && + op_data->input_scale == op_data->output_scale) { + int32_t* temp_buffer = static_cast( + context->GetScratchBuffer(context, op_data->temp_buffer_idx)); + TF_LITE_ENSURE( + context, + reference_ops::Mean( + tflite::micro::GetTensorData(input), input->dims->data, + input->dims->size, tflite::micro::GetTensorData(output), + output->dims->data, output->dims->size, + tflite::micro::GetTensorData(axis), num_axis, + params->keep_dims, temp_index, resolved_axis, temp_buffer)); + } else { + int32_t* temp_buffer = static_cast( + context->GetScratchBuffer(context, op_data->temp_buffer_idx)); + TF_LITE_ENSURE( + context, + reference_ops::QuantizedMeanOrSum( + tflite::micro::GetTensorData(input), op_data->input_zp, + op_data->input_scale, input->dims->data, input->dims->size, + tflite::micro::GetTensorData(output), + op_data->output_zp, op_data->output_scale, output->dims->data, + output->dims->size, tflite::micro::GetTensorData(axis), + num_axis, params->keep_dims, temp_index, resolved_axis, + temp_buffer, false)); + } + } break; + case kTfLiteInt16: { + // Defer to specialized implementation for 4D Mean across axes 1 & 2. + if (params->keep_dims && special_case_4d_axes_1_and_2) { + reference_integer_ops::Mean( + op_params, op_data->multiplier, op_data->shift, + tflite::micro::GetTensorShape(input), + tflite::micro::GetTensorData(input), op_data->input_zp, + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output), op_data->output_zp); + } else if (op_data->input_zp == op_data->output_zp && + op_data->input_scale == op_data->output_scale) { + int32_t* temp_buffer = static_cast( + context->GetScratchBuffer(context, op_data->temp_buffer_idx)); + TF_LITE_ENSURE( + context, + reference_ops::Mean(tflite::micro::GetTensorData(input), + input->dims->data, input->dims->size, + tflite::micro::GetTensorData(output), + output->dims->data, output->dims->size, + tflite::micro::GetTensorData(axis), + num_axis, params->keep_dims, temp_index, + resolved_axis, temp_buffer)); + } else { + int32_t* temp_buffer = static_cast( + context->GetScratchBuffer(context, op_data->temp_buffer_idx)); + TF_LITE_ENSURE( + context, + reference_ops::QuantizedMeanOrSum( + tflite::micro::GetTensorData(input), op_data->input_zp, + op_data->input_scale, input->dims->data, input->dims->size, + tflite::micro::GetTensorData(output), + op_data->output_zp, op_data->output_scale, output->dims->data, + output->dims->size, tflite::micro::GetTensorData(axis), + num_axis, params->keep_dims, temp_index, resolved_axis, + temp_buffer, false)); + } + } break; + default: + TF_LITE_ENSURE_MSG(context, false, + "Currently, only float32, int8 or uint8 input type " + "is supported."); + } + return kTfLiteOk; +} + +TfLiteStatus EvalMaxHelper(TfLiteContext* context, TfLiteNode* node, + OpDataReduce* op_data) { + const TfLiteEvalTensor* input = tflite::micro::GetEvalInput(context, node, 0); + const TfLiteEvalTensor* axis = tflite::micro::GetEvalInput(context, node, 1); + TfLiteEvalTensor* output = tflite::micro::GetEvalOutput(context, node, 0); + TF_LITE_ENSURE_TYPES_EQ(context, input->type, output->type); + TfLiteReducerParams* params = + static_cast(node->builtin_data); + + // Interpret an axis tensor with null dimensions as a scalar + int num_axis = static_cast(ElementCount(*axis->dims)); + int* temp_buffer = static_cast( + context->GetScratchBuffer(context, op_data->temp_buffer_idx)); + int* resolved_axis = static_cast( + context->GetScratchBuffer(context, op_data->resolved_axis_idx)); + switch (input->type) { + case kTfLiteFloat32: + TF_LITE_ENSURE( + context, + reference_ops::ReduceGeneric( + tflite::micro::GetTensorData(input), input->dims->data, + input->dims->size, tflite::micro::GetTensorData(output), + output->dims->data, output->dims->size, + tflite::micro::GetTensorData(axis), num_axis, + params->keep_dims, temp_buffer, resolved_axis, + std::numeric_limits::lowest(), + [](const float current, const float in) -> float { + return (in > current) ? in : current; + })); + break; + case kTfLiteInt8: + TF_LITE_ENSURE_EQ(context, static_cast(op_data->input_scale), + static_cast(op_data->output_scale)); + TF_LITE_ENSURE_EQ(context, op_data->input_zp, op_data->output_zp); + TF_LITE_ENSURE( + context, + reference_ops::ReduceGeneric( + tflite::micro::GetTensorData(input), input->dims->data, + input->dims->size, tflite::micro::GetTensorData(output), + output->dims->data, output->dims->size, + tflite::micro::GetTensorData(axis), num_axis, + params->keep_dims, temp_buffer, resolved_axis, + std::numeric_limits::lowest(), + [](const int8_t current, const int8_t in) -> int8_t { + return (in > current) ? in : current; + })); + break; + default: + MicroPrintf("Only float32 and int8 types are supported."); + return kTfLiteError; + } + return kTfLiteOk; +} + +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/reshape.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reshape.cc index d14ed82e..832ba261 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/reshape.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/reshape.cc @@ -110,14 +110,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace reshape TfLiteRegistration Register_RESHAPE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/reshape::Prepare, - /*invoke=*/reshape::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, reshape::Prepare, reshape::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_bilinear.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_bilinear.cc index 55c23846..a90057b9 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_bilinear.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_bilinear.cc @@ -111,14 +111,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_RESIZE_BILINEAR() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_nearest_neighbor.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_nearest_neighbor.cc index a02159af..ce507445 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_nearest_neighbor.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/resize_nearest_neighbor.cc @@ -117,14 +117,8 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace resize_nearest_neighbor TfLiteRegistration Register_RESIZE_NEAREST_NEIGHBOR() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/resize_nearest_neighbor::Prepare, - /*invoke=*/resize_nearest_neighbor::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, resize_nearest_neighbor::Prepare, + resize_nearest_neighbor::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/round.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/round.cc index 76d8e6bf..0bda8783 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/round.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/round.cc @@ -68,14 +68,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace round TfLiteRegistration Register_ROUND() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/round::Prepare, - /*invoke=*/round::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, round::Prepare, round::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/shape.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/shape.cc index df962f62..02f663a8 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/shape.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/shape.cc @@ -60,14 +60,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_SHAPE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/slice.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/slice.cc index 40d9fdd7..212cf47f 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/slice.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/slice.cc @@ -151,14 +151,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_SLICE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.cc index f6a30010..c2cee3c5 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.cc @@ -83,14 +83,7 @@ TfLiteStatus SoftmaxEval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_SOFTMAX() { - return {/*init=*/SoftmaxInit, - /*free=*/nullptr, - /*prepare=*/SoftmaxPrepare, - /*invoke=*/SoftmaxEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(SoftmaxInit, SoftmaxPrepare, SoftmaxEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.h index 8d605eab..7096d202 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax.h @@ -1,4 +1,4 @@ -/* Copyright 2021 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,6 +23,13 @@ namespace tflite { void* SoftmaxInit(TfLiteContext* context, const char* buffer, size_t length); +// Common helper function to SoftmaxPrepare. +TfLiteStatus CalculateSoftmaxParams(TfLiteContext* context, + const TfLiteTensor* input, + TfLiteTensor* output, + const TfLiteSoftmaxParams* params, + SoftmaxParams* op_data); + TfLiteStatus SoftmaxPrepare(TfLiteContext* context, TfLiteNode* node); // This is the most generic TfLiteRegistration. The actual supported types may @@ -30,7 +37,7 @@ TfLiteStatus SoftmaxPrepare(TfLiteContext* context, TfLiteNode* node); // (reference or optimized) must define this function. TfLiteRegistration Register_SOFTMAX(); -#if defined(XTENSA) +#if defined(XTENSA) || defined(CMSIS_NN) // Returns a TfLiteRegistration struct for kernel variant that only supports // int8 input and int16 output. TfLiteRegistration Register_SOFTMAX_INT8_INT16(); @@ -40,6 +47,23 @@ inline TfLiteRegistration Register_SOFTMAX_INT8_INT16() { } #endif +#if defined(CMSIS_NN) +// Returns a TfLiteRegistration struct for kernel variant that only supports +// int8 input/output and uses the latency optimized implementations. +TfLiteRegistration Register_SOFTMAX_INT8(); + +// Returns a TfLiteRegistration struct for kernel variant that only supports +// int16 input/output and uses the latency optimized implementations. +TfLiteRegistration Register_SOFTMAX_INT16(); + +#else +inline TfLiteRegistration Register_SOFTMAX_INT8() { return Register_SOFTMAX(); } + +inline TfLiteRegistration Register_SOFTMAX_INT16() { + return Register_SOFTMAX(); +} +#endif + } // namespace tflite #endif // TENSORFLOW_LITE_MICRO_KERNELS_SOFTMAX_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax_common.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax_common.cc index d93f5f26..b5378dae 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax_common.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/softmax_common.cc @@ -1,4 +1,4 @@ -/* Copyright 2021 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -28,11 +28,59 @@ namespace { // Softmax parameter data that persists in user_data const int kInt16LUTArraySize = 513; +TfLiteStatus InitializeLutForInt16(TfLiteContext* context, + const TfLiteTensor* input, + TfLiteTensor* output, + SoftmaxParams* op_data) { + // Only allocate LUTs for KTfLiteInt16 data type + if (input->type == kTfLiteInt16) { + void* raw_exp_lut = context->AllocatePersistentBuffer( + context, sizeof(int16_t) * kInt16LUTArraySize); + TF_LITE_ENSURE(context, raw_exp_lut != nullptr); + op_data->exp_lut = reinterpret_cast(raw_exp_lut); + void* one_over_one_plus_x_lut = context->AllocatePersistentBuffer( + context, sizeof(int16_t) * kInt16LUTArraySize); + TF_LITE_ENSURE(context, one_over_one_plus_x_lut != nullptr); + op_data->one_over_one_plus_x_lut = + reinterpret_cast(one_over_one_plus_x_lut); + } + + if (output->type == kTfLiteInt16) { + TF_LITE_ENSURE(context, + input->type == kTfLiteInt8 || input->type == kTfLiteInt16); + } else { + TF_LITE_ENSURE_EQ(context, input->type, output->type); + } + + // Populate LUT if required + if (input->type == kTfLiteInt16) { + TF_LITE_ENSURE_EQ(context, output->params.zero_point, 0); + // exp LUT only used on negative values + // we consider exp(-10.0) is insignificant to accumulation + gen_lut( + [](float value) { return std::exp(value); }, -10.0f, 0.0f, -1.0f, 1.0f, + op_data->exp_lut); + gen_lut( + [](float value) { return 1.0f / (1.0f + value); }, 0.0f, 1.0f, -1.0f, + 1.0f, op_data->one_over_one_plus_x_lut); + op_data->zero_point = output->params.zero_point; + op_data->scale = output->params.scale; + } + + return kTfLiteOk; +} + +} // namespace + TfLiteStatus CalculateSoftmaxParams(TfLiteContext* context, const TfLiteTensor* input, TfLiteTensor* output, const TfLiteSoftmaxParams* params, SoftmaxParams* op_data) { + if (InitializeLutForInt16(context, input, output, op_data) != kTfLiteOk) { + return kTfLiteError; + } + if (input->type == kTfLiteInt8 || input->type == kTfLiteInt16) { if (input->type == kTfLiteInt16) { TF_LITE_ENSURE_EQ(context, output->params.zero_point, 0); @@ -83,8 +131,6 @@ TfLiteStatus CalculateSoftmaxParams(TfLiteContext* context, return kTfLiteOk; } -} // namespace - void* SoftmaxInit(TfLiteContext* context, const char* buffer, size_t length) { TFLITE_DCHECK(context->AllocatePersistentBuffer != nullptr); return context->AllocatePersistentBuffer(context, sizeof(SoftmaxParams)); @@ -103,40 +149,6 @@ TfLiteStatus SoftmaxPrepare(TfLiteContext* context, TfLiteNode* node) { TF_LITE_ENSURE(context, node->user_data != nullptr); SoftmaxParams* op_data = static_cast(node->user_data); - // Only allocate LUTs for KTfLiteInt16 data type - if (input->type == kTfLiteInt16) { - void* raw_exp_lut = context->AllocatePersistentBuffer( - context, sizeof(int16_t) * kInt16LUTArraySize); - TF_LITE_ENSURE(context, raw_exp_lut != nullptr); - op_data->exp_lut = reinterpret_cast(raw_exp_lut); - void* one_over_one_plus_x_lut = context->AllocatePersistentBuffer( - context, sizeof(int16_t) * kInt16LUTArraySize); - TF_LITE_ENSURE(context, one_over_one_plus_x_lut != nullptr); - op_data->one_over_one_plus_x_lut = - reinterpret_cast(one_over_one_plus_x_lut); - } - - if (output->type == kTfLiteInt16) { - TF_LITE_ENSURE(context, - input->type == kTfLiteInt8 || input->type == kTfLiteInt16); - } else { - TF_LITE_ENSURE_EQ(context, input->type, output->type); - } - - // Populate LUT if required - if (input->type == kTfLiteInt16) { - TF_LITE_ENSURE_EQ(context, output->params.zero_point, 0); - // exp LUT only used on negative values - // we consider exp(-10.0) is insignificant to accumulation - gen_lut( - [](float value) { return std::exp(value); }, -10.0f, 0.0f, -1.0f, 1.0f, - op_data->exp_lut); - gen_lut( - [](float value) { return 1.0f / (1.0f + value); }, 0.0f, 1.0f, -1.0f, - 1.0f, op_data->one_over_one_plus_x_lut); - op_data->zero_point = output->params.zero_point; - op_data->scale = output->params.scale; - } auto* params = static_cast(node->builtin_data); auto ret_val = diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_batch_nd.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_batch_nd.cc index 4e01becb..21f81312 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_batch_nd.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_batch_nd.cc @@ -114,14 +114,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_SPACE_TO_BATCH_ND() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_depth.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_depth.cc index 9c0cc445..30519b27 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_depth.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/space_to_depth.cc @@ -121,14 +121,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_SPACE_TO_DEPTH() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/split.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/split.cc index 5d90d983..06584d45 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/split.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/split.cc @@ -120,14 +120,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace split TfLiteRegistration Register_SPLIT() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/split::Prepare, - /*invoke=*/split::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, split::Prepare, split::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/split_v.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/split_v.cc index c1c41124..3ea35130 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/split_v.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/split_v.cc @@ -121,14 +121,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace split_v TfLiteRegistration Register_SPLIT_V() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/split_v::Prepare, - /*invoke=*/split_v::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, split_v::Prepare, split_v::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/squared_difference.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/squared_difference.cc new file mode 100644 index 00000000..ca924e26 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/squared_difference.cc @@ -0,0 +1,247 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/kernels/internal/quantization_util.h" +#include "tensorflow/lite/kernels/internal/reference/binary_function.h" +#include "tensorflow/lite/kernels/internal/reference/integer_ops/add.h" +#include "tensorflow/lite/kernels/kernel_util.h" +#include "tensorflow/lite/micro/kernels/kernel_util.h" +#include "tensorflow/lite/micro/micro_context.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" + +namespace tflite { +namespace { +constexpr int kInputTensor1 = 0; +constexpr int kInputTensor2 = 1; +constexpr int kOutputTensor = 0; + +struct OpData { + bool requires_broadcast; + ArithmeticParams arithmetic_params; +}; + +template +T SquaredDifference(T input1, T input2) { + const T difference = input1 - input2; + return difference * difference; +} + +void* SquaredDifferenceInit(TfLiteContext* context, const char* buffer, + size_t length) { + TFLITE_DCHECK(context->AllocatePersistentBuffer != nullptr); + return context->AllocatePersistentBuffer(context, sizeof(OpData)); +} + +TfLiteStatus SquaredDifferencePrepare(TfLiteContext* context, + TfLiteNode* node) { + TFLITE_DCHECK(node->user_data != nullptr); + OpData* data = reinterpret_cast(node->user_data); + data->requires_broadcast = false; + + TF_LITE_ENSURE_EQ(context, NumInputs(node), 2); + TF_LITE_ENSURE_EQ(context, NumOutputs(node), 1); + + MicroContext* micro_context = GetMicroContext(context); + + TfLiteTensor* input1 = + micro_context->AllocateTempInputTensor(node, kInputTensor1); + TF_LITE_ENSURE(context, input1 != nullptr); + TfLiteTensor* input2 = + micro_context->AllocateTempInputTensor(node, kInputTensor2); + TF_LITE_ENSURE(context, input2 != nullptr); + TfLiteTensor* output = + micro_context->AllocateTempOutputTensor(node, kOutputTensor); + TF_LITE_ENSURE(context, output != nullptr); + + TF_LITE_ENSURE_TYPES_EQ(context, input1->type, input2->type); + output->type = input2->type; + + // Ensure the quantization parameters are equivalent. + if (input1->type == kTfLiteInt8) { + const auto& input1_quantization_params = input1->params; + const auto& input2_quantization_params = input2->params; + const auto& output_quantization_params = output->params; + const int32_t integer_type_min = std::numeric_limits::min(); + const int32_t integer_type_max = std::numeric_limits::max(); + TF_LITE_ENSURE(context, + input1_quantization_params.zero_point >= integer_type_min); + TF_LITE_ENSURE(context, + input1_quantization_params.zero_point <= integer_type_max); + TF_LITE_ENSURE(context, + input2_quantization_params.zero_point >= integer_type_min); + TF_LITE_ENSURE(context, + input2_quantization_params.zero_point <= integer_type_max); + TF_LITE_ENSURE(context, + output_quantization_params.zero_point >= integer_type_min); + TF_LITE_ENSURE(context, + output_quantization_params.zero_point <= integer_type_max); + data->arithmetic_params.input1_offset = + -input1_quantization_params.zero_point; + data->arithmetic_params.input2_offset = + -input2_quantization_params.zero_point; + data->arithmetic_params.output_offset = + output_quantization_params.zero_point; + + // shift to make integer for scales. + // 7 is selected so that maximum shifted result 255^2 * (1 << (7 * 2 )) + // does not overflow signed 32-bit integer + data->arithmetic_params.left_shift = 7; + const double twice_max_input_scale = + 2.0 * static_cast(std::max(input1_quantization_params.scale, + input2_quantization_params.scale)); + const double real_input1_multiplier = + static_cast(input1_quantization_params.scale) / + twice_max_input_scale; + double real_input2_multiplier = + static_cast(input2_quantization_params.scale) / + twice_max_input_scale; + const double real_output_multiplier = + (twice_max_input_scale * twice_max_input_scale) / + static_cast((1 << data->arithmetic_params.left_shift * 2) * + output_quantization_params.scale); + QuantizeMultiplierSmallerThanOneExp( + real_input1_multiplier, &data->arithmetic_params.input1_multiplier, + &data->arithmetic_params.input1_shift); + QuantizeMultiplierSmallerThanOneExp( + real_input2_multiplier, &data->arithmetic_params.input2_multiplier, + &data->arithmetic_params.input2_shift); + QuantizeMultiplierSmallerThanOneExp( + real_output_multiplier, &data->arithmetic_params.output_multiplier, + &data->arithmetic_params.output_shift); + data->arithmetic_params.quantized_activation_min = + std::numeric_limits::min(); + data->arithmetic_params.quantized_activation_max = + std::numeric_limits::max(); + } + + data->requires_broadcast = !HaveSameShapes(input1, input2); + + micro_context->DeallocateTempTfLiteTensor(input1); + micro_context->DeallocateTempTfLiteTensor(input2); + micro_context->DeallocateTempTfLiteTensor(output); + return kTfLiteOk; +} + +inline int8_t SquaredDifference(int8_t x, int8_t y, + const ArithmeticParams& params) { + const int32_t input1_val = params.input1_offset + x; + const int32_t input2_val = params.input2_offset + y; + const int32_t shifted_input1_val = input1_val * (1 << params.left_shift); + const int32_t shifted_input2_val = input2_val * (1 << params.left_shift); + const int32_t scaled_input1_val = + MultiplyByQuantizedMultiplierSmallerThanOneExp( + shifted_input1_val, params.input1_multiplier, params.input1_shift); + const int32_t scaled_input2_val = + MultiplyByQuantizedMultiplierSmallerThanOneExp( + shifted_input2_val, params.input2_multiplier, params.input2_shift); + const int32_t raw_diff = scaled_input1_val - scaled_input2_val; + + // Max of this is 255^2 * (1 << 14), so won't overflow 32 bits. + const int32_t squared_raw_diff = raw_diff * raw_diff; + const int32_t raw_output = + MultiplyByQuantizedMultiplierSmallerThanOneExp( + squared_raw_diff, params.output_multiplier, params.output_shift) + + params.output_offset; + const int32_t clamped_output = + std::min(params.quantized_activation_max, + std::max(params.quantized_activation_min, raw_output)); + return static_cast(clamped_output); +} + +template +void EvalQuantizedSquaredDifference(TfLiteContext* context, TfLiteNode* node, + const OpData* data, + const TfLiteEvalTensor* input1, + const TfLiteEvalTensor* input2, + TfLiteEvalTensor* output) { + const auto* op_data = static_cast(node->user_data); + if (data->requires_broadcast) { + reference_integer_ops::BroadcastBinaryFunction4DSlow( + op_data->arithmetic_params, tflite::micro::GetTensorShape(input1), + tflite::micro::GetTensorData(input1), + tflite::micro::GetTensorShape(input2), + tflite::micro::GetTensorData(input2), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output), + reference_integer_ops::CheckArithmeticParams, SquaredDifference); + } else { + const int flat_size = tflite::micro::GetTensorShape(input1).FlatSize(); + reference_integer_ops::ElementWise( + flat_size, op_data->arithmetic_params, + tflite::micro::GetTensorData(input1), + tflite::micro::GetTensorData(input2), + tflite::micro::GetTensorData(output), + reference_integer_ops::CheckArithmeticParams, SquaredDifference); + } +} + +template +void EvalSquaredDifference(TfLiteContext* context, TfLiteNode* node, + const OpData* data, const TfLiteEvalTensor* input1, + const TfLiteEvalTensor* input2, + TfLiteEvalTensor* output) { + if (data->requires_broadcast) { + reference_ops::BroadcastBinaryFunction4DSlow( + tflite::micro::GetTensorShape(input1), + tflite::micro::GetTensorData(input1), + tflite::micro::GetTensorShape(input2), + tflite::micro::GetTensorData(input2), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output), SquaredDifference); + } else { + reference_ops::BinaryFunction( + tflite::micro::GetTensorShape(input1), + tflite::micro::GetTensorData(input1), + tflite::micro::GetTensorShape(input2), + tflite::micro::GetTensorData(input2), + tflite::micro::GetTensorShape(output), + tflite::micro::GetTensorData(output), SquaredDifference); + } +} + +TfLiteStatus SquaredDifferenceEval(TfLiteContext* context, TfLiteNode* node) { + OpData* data = reinterpret_cast(node->user_data); + + const TfLiteEvalTensor* input1 = + tflite::micro::GetEvalInput(context, node, kInputTensor1); + const TfLiteEvalTensor* input2 = + tflite::micro::GetEvalInput(context, node, kInputTensor2); + TfLiteEvalTensor* output = + tflite::micro::GetEvalOutput(context, node, kOutputTensor); + + if (output->type == kTfLiteFloat32) { + EvalSquaredDifference(context, node, data, input1, input2, output); + } else if (output->type == kTfLiteInt32) { + EvalSquaredDifference(context, node, data, input1, input2, output); + } else if (output->type == kTfLiteInt8) { + EvalQuantizedSquaredDifference(context, node, data, input1, input2, + output); + } else { + MicroPrintf( + "SquaredDifference only supports FLOAT32, INT32 and INT8 now, got %d.", + output->type); + return kTfLiteError; + } + + return kTfLiteOk; +} +} // namespace + +TfLiteRegistration Register_SQUARED_DIFFERENCE() { + return tflite::micro::RegisterOp( + SquaredDifferenceInit, SquaredDifferencePrepare, SquaredDifferenceEval); +} + +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/squeeze.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/squeeze.cc index 0eb767db..e81b5b56 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/squeeze.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/squeeze.cc @@ -111,14 +111,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_SQUEEZE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/strided_slice.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/strided_slice.cc index d5b73b8f..832e2ccd 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/strided_slice.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/strided_slice.cc @@ -193,14 +193,8 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace strided_slice TfLiteRegistration Register_STRIDED_SLICE() { - return {/*init=*/strided_slice::Init, - /*free=*/nullptr, - /*prepare=*/strided_slice::Prepare, - /*invoke=*/strided_slice::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(strided_slice::Init, strided_slice::Prepare, + strided_slice::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/sub.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/sub.cc index de99149f..40bddbad 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/sub.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/sub.cc @@ -162,14 +162,7 @@ TfLiteStatus SubEval(TfLiteContext* context, TfLiteNode* node) { } TfLiteRegistration Register_SUB() { - return {/*init=*/SubInit, - /*free=*/nullptr, - /*prepare=*/SubPrepare, - /*invoke=*/SubEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(SubInit, SubPrepare, SubEval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/svdf.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/svdf.cc index f8a2bed2..5994db94 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/svdf.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/svdf.cc @@ -100,14 +100,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_SVDF() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/PrepareSvdf, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, PrepareSvdf, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/tanh.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/tanh.cc index a9f01c71..e97a9035 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/tanh.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/tanh.cc @@ -195,14 +195,8 @@ TfLiteStatus TanhEval(TfLiteContext* context, TfLiteNode* node) { } // namespace activations TfLiteRegistration Register_TANH() { - return {/*init=*/activations::TanhInit, - /*free=*/nullptr, - /*prepare=*/activations::TanhPrepare, - /*invoke=*/activations::TanhEval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp( + activations::TanhInit, activations::TanhPrepare, activations::TanhEval); } } // namespace micro } // namespace ops diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose.cc index ba3d6e94..9f77e04d 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose.cc @@ -116,13 +116,6 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_TRANSPOSE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose_conv.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose_conv.cc index dcf007c5..0b2afd5b 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose_conv.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/transpose_conv.cc @@ -266,7 +266,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(filter), tflite::micro::GetTensorData(filter), tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), + tflite::micro::GetOptionalTensorData(bias), tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output), tflite::micro::GetTensorShape(nullptr), nullptr); @@ -282,7 +282,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(filter), tflite::micro::GetTensorData(filter), tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), + tflite::micro::GetOptionalTensorData(bias), tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output), tflite::micro::GetTensorShape(nullptr), nullptr, scratch_buffer); @@ -293,7 +293,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { context->GetScratchBuffer(context, data.scratch_buffer_index)); // TODO(b/192090531): Remove this once all 8x16 transpose conv models use // 64-bit biases. - if (bias->type == kTfLiteInt16) { + if (bias != nullptr && bias->type == kTfLiteInt16) { std::int64_t* bias_converted_buffer = static_cast(context->GetScratchBuffer( context, data.bias_converted_buffer_index)); @@ -319,7 +319,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { tflite::micro::GetTensorShape(filter), tflite::micro::GetTensorData(filter), tflite::micro::GetTensorShape(bias), - tflite::micro::GetTensorData(bias), + tflite::micro::GetOptionalTensorData(bias), tflite::micro::GetTensorShape(output), tflite::micro::GetTensorData(output), tflite::micro::GetTensorShape(nullptr), nullptr, scratch_buffer); @@ -337,14 +337,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_TRANSPOSE_CONV() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.cc new file mode 100644 index 00000000..7f3c50e4 --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm.cc @@ -0,0 +1,1696 @@ +/* Copyright 2017 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ + +#include +#include + +#include "tensorflow/lite/c/builtin_op_data.h" +#include "tensorflow/lite/c/common.h" +#include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/kernels/internal/quantization_util.h" +#include "tensorflow/lite/kernels/internal/tensor_ctypes.h" +#include "tensorflow/lite/kernels/kernel_util.h" +#include "tensorflow/lite/micro/kernels/kernel_util.h" +#include "tensorflow/lite/micro/kernels/lstm_eval.h" +#include "tensorflow/lite/micro/kernels/lstm_shared.h" +#include "tensorflow/lite/micro/kernels/micro_tensor_utils.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" + +namespace tflite { + +namespace { + +constexpr int scratch_index_size = 12; + +struct UnidirectionalSequenceLstmOpData { + // If the lstm is layer norm. + bool use_layer_norm; + // The scratch index. + int scratch_index[scratch_index_size]; + + int32_t row_sums_size; + int32_t* row_sums; + bool compute_row_sums = false; + + int32_t input_zero_point; + int32_t output_state_zero_point; + + IntegerLstmParameter integer_lstm_param; + HybridLstmScales hybrid_lstm_scales; +}; + +TfLiteStatus PopulateQuantizedLstmParams8x8_16( + TfLiteContext* context, TfLiteNode* node, + IntegerLstmParameter* integer_lstm_param) { + MicroContext* micro_context = GetMicroContext(context); + + // Calculate quantized clip for projection and cell. + const auto* params = + static_cast(node->builtin_data); + const float cell_clip = params->cell_clip; + const float proj_clip = params->proj_clip; + + TfLiteTensor* cell_state = + micro_context->AllocateTempInputTensor(node, kLstmCellStateTensor); + TF_LITE_ENSURE(context, cell_state != nullptr); + TF_LITE_ENSURE(context, cell_state->is_variable); + TfLiteTensor* output_tensor = + micro_context->AllocateTempOutputTensor(node, kLstmOutputTensor); + + TF_LITE_ENSURE(context, + cell_state->quantization.type != kTfLiteNoQuantization); + auto* cell_state_params = + static_cast(cell_state->quantization.params); + TF_LITE_ENSURE(context, + output_tensor->quantization.type != kTfLiteNoQuantization); + auto* proj_params = static_cast( + output_tensor->quantization.params); + if (cell_clip > 0.0f) { + integer_lstm_param->quantized_cell_clip = static_cast(std::min( + std::max(cell_clip / cell_state_params->scale->data[0], -32768.0f), + 32767.0f)); + } else { + integer_lstm_param->quantized_cell_clip = 0; + } + if (proj_clip > 0.0f) { + integer_lstm_param->quantized_proj_clip = static_cast(std::min( + std::max(proj_clip / proj_params->scale->data[0], -128.0f), 127.0f)); + } else { + integer_lstm_param->quantized_proj_clip = 0; + } + + // Calculate effective scales. + UnidirectionalSequenceLstmOpData* op_data = + static_cast(node->user_data); + const bool use_layer_norm = op_data->use_layer_norm; + + TfLiteTensor* input = + micro_context->AllocateTempInputTensor(node, kLstmInputTensor); + + TfLiteTensor* input_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToInputWeightsTensor); + TfLiteTensor* input_to_forget_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToForgetWeightsTensor); + TfLiteTensor* input_to_cell_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToCellWeightsTensor); + TfLiteTensor* input_to_output_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToOutputWeightsTensor); + + TfLiteTensor* recurrent_to_input_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToInputWeightsTensor); + TfLiteTensor* recurrent_to_forget_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToForgetWeightsTensor); + TfLiteTensor* recurrent_to_cell_weights = + micro_context->AllocateTempInputTensor(node, + kLstmRecurrentToCellWeightsTensor); + TfLiteTensor* recurrent_to_output_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToOutputWeightsTensor); + + TfLiteTensor* cell_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToInputWeightsTensor); + TfLiteTensor* cell_to_forget_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToForgetWeightsTensor); + TfLiteTensor* cell_to_output_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToOutputWeightsTensor); + + TfLiteTensor* input_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmInputLayerNormCoefficientsTensor); + TfLiteTensor* forget_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmForgetLayerNormCoefficientsTensor); + TfLiteTensor* cell_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmCellLayerNormCoefficientsTensor); + TfLiteTensor* output_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmOutputLayerNormCoefficientsTensor); + + TfLiteTensor* projection_weights = micro_context->AllocateTempInputTensor( + node, kLstmProjectionWeightsTensor); + + TfLiteTensor* output_state = + micro_context->AllocateTempInputTensor(node, kLstmOutputStateTensor); + TF_LITE_ENSURE(context, output_state != nullptr); + TF_LITE_ENSURE(context, output_state->is_variable); + + // Since we have already checked that weights are all there or none, we can + // check the existence of only one to get the condition. + const bool use_cifg = (input_to_input_weights == nullptr); + const bool use_peephole = (cell_to_output_weights != nullptr); + const bool use_projection = (projection_weights != nullptr); + + // Get intermediate scales and zero points. + float intermediate_scale[5]; + int32_t intermediate_zp[5]; + for (int i = 0; i < 4; ++i) { + if (use_layer_norm) { + TfLiteTensor* intermediate = + micro_context->AllocateTempIntermediateTensor(node, i); + TF_LITE_ENSURE(context, + intermediate->quantization.type != kTfLiteNoQuantization); + auto* params_intermediate = static_cast( + intermediate->quantization.params); + intermediate_scale[i] = params_intermediate->scale->data[0]; + intermediate_zp[i] = params_intermediate->zero_point->data[0]; + if (intermediate != nullptr) { + micro_context->DeallocateTempTfLiteTensor(intermediate); + } + } else { + // Q3.12 for activation functions. + intermediate_scale[i] = std::pow(2.0f, -12.0f); + intermediate_zp[i] = 0; + } + } + // In the absence of projection, hidden becomes otuput and this intermediate + // is ignored. + TfLiteTensor* hidden = micro_context->AllocateTempIntermediateTensor(node, 4); + TF_LITE_ENSURE(context, hidden->quantization.type != kTfLiteNoQuantization); + auto* hidden_params = + static_cast(hidden->quantization.params); + intermediate_scale[4] = hidden_params->scale->data[0]; + intermediate_zp[4] = hidden_params->zero_point->data[0]; + if (hidden != nullptr) { + micro_context->DeallocateTempTfLiteTensor(hidden); + } + + // Scales. + const float default_scale = 1.0; + float input_scale = default_scale; + float input_to_input_weight_scale = default_scale; + float recurrent_to_input_weight_scale = default_scale; + float cell_to_input_weight_scale = default_scale; + float input_to_forget_weight_scale = default_scale; + float recurrent_to_forget_weight_scale = default_scale; + float cell_to_forget_weight_scale = default_scale; + float input_to_cell_weight_scale = default_scale; + float recurrent_to_cell_weight_scale = default_scale; + float input_to_output_weight_scale = default_scale; + float recurrent_to_output_weight_scale = default_scale; + float cell_to_output_weight_scale = default_scale; + float projection_weight_scale = default_scale; + float layer_norm_input_scale = default_scale; + float layer_norm_forget_scale = default_scale; + float layer_norm_cell_scale = default_scale; + float layer_norm_output_scale = default_scale; + float output_state_scale = default_scale; + int cell_scale = 1; + + // Effective scales. + float effective_input_to_input_scale = default_scale; + float effective_recurrent_to_input_scale = default_scale; + float effective_cell_to_input_scale = default_scale; + float effective_input_to_forget_scale = default_scale; + float effective_recurrent_to_forget_scale = default_scale; + float effective_cell_to_forget_scale = default_scale; + float effective_input_to_cell_scale = default_scale; + float effective_recurrent_to_cell_scale = default_scale; + float effective_input_to_output_scale = default_scale; + float effective_recurrent_to_output_scale = default_scale; + float effective_cell_to_output_scale = default_scale; + float effective_proj_scale = default_scale; + float effective_hidden_scale = default_scale; + + // Populate scales. + if (!use_cifg) { + input_to_input_weight_scale = input_to_input_weights->params.scale; + recurrent_to_input_weight_scale = recurrent_to_input_weights->params.scale; + } + + if (use_peephole) { + if (!use_cifg) { + cell_to_input_weight_scale = cell_to_input_weights->params.scale; + } + cell_to_forget_weight_scale = cell_to_forget_weights->params.scale; + cell_to_output_weight_scale = cell_to_output_weights->params.scale; + } + + if (use_layer_norm) { + if (!use_cifg) { + layer_norm_input_scale = input_layer_norm_coefficients->params.scale; + } + layer_norm_forget_scale = forget_layer_norm_coefficients->params.scale; + layer_norm_cell_scale = cell_layer_norm_coefficients->params.scale; + layer_norm_output_scale = output_layer_norm_coefficients->params.scale; + } + + if (use_projection) { + projection_weight_scale = projection_weights->params.scale; + } + output_state_scale = output_state->params.scale; + + input_to_forget_weight_scale = input_to_forget_weights->params.scale; + input_to_cell_weight_scale = input_to_cell_weights->params.scale; + input_to_output_weight_scale = input_to_output_weights->params.scale; + recurrent_to_forget_weight_scale = recurrent_to_forget_weights->params.scale; + recurrent_to_cell_weight_scale = recurrent_to_cell_weights->params.scale; + recurrent_to_output_weight_scale = recurrent_to_output_weights->params.scale; + + // Check cell state (already used above) + TF_LITE_ENSURE(context, CheckedLog2(cell_state->params.scale, &cell_scale)); + // TF_LITE_ENSURE(context, cell_scale <= -9); + integer_lstm_param->cell_scale = cell_scale; + input_scale = input->params.scale; + + // Calculate effective scales. + if (!use_cifg) { + effective_input_to_input_scale = + input_to_input_weight_scale * input_scale / intermediate_scale[0]; + effective_recurrent_to_input_scale = recurrent_to_input_weight_scale * + output_state_scale / + intermediate_scale[0]; + } + effective_input_to_forget_scale = + input_to_forget_weight_scale * input_scale / intermediate_scale[1]; + effective_recurrent_to_forget_scale = recurrent_to_forget_weight_scale * + output_state_scale / + intermediate_scale[1]; + + effective_input_to_cell_scale = + input_to_cell_weight_scale * input_scale / intermediate_scale[2]; + effective_recurrent_to_cell_scale = recurrent_to_cell_weight_scale * + output_state_scale / + intermediate_scale[2]; + + effective_input_to_output_scale = + input_to_output_weight_scale * input_scale / intermediate_scale[3]; + effective_recurrent_to_output_scale = recurrent_to_output_weight_scale * + output_state_scale / + intermediate_scale[3]; + + effective_hidden_scale = + std::pow(2.0f, -15.0f) / intermediate_scale[4] * std::pow(2.0f, -15.0f); + + effective_proj_scale = + projection_weight_scale * intermediate_scale[4] / output_state_scale; + + if (use_peephole) { + if (!use_cifg) { + effective_cell_to_input_scale = + std::pow(2.0f, static_cast(cell_scale)) * + cell_to_input_weight_scale / intermediate_scale[0]; + } + effective_cell_to_forget_scale = + std::pow(2.0f, static_cast(cell_scale)) * + cell_to_forget_weight_scale / intermediate_scale[1]; + effective_cell_to_output_scale = + std::pow(2.0f, static_cast(cell_scale)) * + cell_to_output_weight_scale / intermediate_scale[3]; + } + + // Decompose scales. + int shift_output; + QuantizeMultiplier(static_cast(effective_input_to_input_scale), + &integer_lstm_param->effective_input_to_input_scale_a, + &shift_output); + integer_lstm_param->effective_input_to_input_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_recurrent_to_input_scale), + &integer_lstm_param->effective_recurrent_to_input_scale_a, + &shift_output); + integer_lstm_param->effective_recurrent_to_input_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_cell_to_input_scale), + &integer_lstm_param->effective_cell_to_input_scale_a, + &shift_output); + integer_lstm_param->effective_cell_to_input_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_input_to_forget_scale), + &integer_lstm_param->effective_input_to_forget_scale_a, + &shift_output); + integer_lstm_param->effective_input_to_forget_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_recurrent_to_forget_scale), + &integer_lstm_param->effective_recurrent_to_forget_scale_a, + &shift_output); + integer_lstm_param->effective_recurrent_to_forget_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_cell_to_forget_scale), + &integer_lstm_param->effective_cell_to_forget_scale_a, + &shift_output); + integer_lstm_param->effective_cell_to_forget_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_input_to_cell_scale), + &integer_lstm_param->effective_input_to_cell_scale_a, + &shift_output); + integer_lstm_param->effective_input_to_cell_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_recurrent_to_cell_scale), + &integer_lstm_param->effective_recurrent_to_cell_scale_a, + &shift_output); + integer_lstm_param->effective_recurrent_to_cell_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_input_to_output_scale), + &integer_lstm_param->effective_input_to_output_scale_a, + &shift_output); + integer_lstm_param->effective_input_to_output_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_recurrent_to_output_scale), + &integer_lstm_param->effective_recurrent_to_output_scale_a, + &shift_output); + integer_lstm_param->effective_recurrent_to_output_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_cell_to_output_scale), + &integer_lstm_param->effective_cell_to_output_scale_a, + &shift_output); + integer_lstm_param->effective_cell_to_output_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_proj_scale), + &integer_lstm_param->effective_proj_scale_a, + &shift_output); + integer_lstm_param->effective_proj_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(effective_hidden_scale), + &integer_lstm_param->effective_hidden_scale_a, + &shift_output); + integer_lstm_param->effective_hidden_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(layer_norm_input_scale), + &integer_lstm_param->layer_norm_input_scale_a, + &shift_output); + integer_lstm_param->layer_norm_input_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(layer_norm_forget_scale), + &integer_lstm_param->layer_norm_forget_scale_a, + &shift_output); + integer_lstm_param->layer_norm_forget_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(layer_norm_cell_scale), + &integer_lstm_param->layer_norm_cell_scale_a, + &shift_output); + integer_lstm_param->layer_norm_cell_scale_b = + static_cast(shift_output); + QuantizeMultiplier(static_cast(layer_norm_output_scale), + &integer_lstm_param->layer_norm_output_scale_a, + &shift_output); + integer_lstm_param->layer_norm_output_scale_b = + static_cast(shift_output); + + integer_lstm_param->hidden_zp = intermediate_zp[4]; + + // 10000 is used to make sure the kernel logic does not overflow. + if (!use_cifg) { + integer_lstm_param->input_variance_guard = + std::max(1, static_cast(10000 * layer_norm_input_scale)); + } + integer_lstm_param->forget_variance_guard = + std::max(1, static_cast(10000 * layer_norm_forget_scale)); + integer_lstm_param->cell_variance_guard = + std::max(1, static_cast(10000 * layer_norm_cell_scale)); + integer_lstm_param->output_variance_guard = + std::max(1, static_cast(10000 * layer_norm_output_scale)); + + if (cell_state != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_state); + } + if (output_tensor != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_tensor); + } + if (input != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input); + } + if (input_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_input_weights); + } + if (input_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_forget_weights); + } + if (input_to_cell_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_cell_weights); + } + if (input_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_output_weights); + } + if (recurrent_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_input_weights); + } + if (recurrent_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_forget_weights); + } + if (recurrent_to_cell_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_cell_weights); + } + if (recurrent_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_output_weights); + } + if (cell_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_input_weights); + } + if (cell_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_forget_weights); + } + if (cell_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_output_weights); + } + if (input_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_layer_norm_coefficients); + } + if (forget_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(forget_layer_norm_coefficients); + } + if (cell_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_layer_norm_coefficients); + } + if (output_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_layer_norm_coefficients); + } + if (projection_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(projection_weights); + } + if (output_state != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_state); + } + + return kTfLiteOk; +} + +// Temporary buffers used for hybrid mode +enum HybridTempBuffer { + kPrimaryScratchBuffer = 0, + kInputQuantized = 1, + kOutputStateQuantized = 2, + kCellStateQuantized = 3, + kInputScalingFactors = 4, + kOutputStateScalingFactors = 5, + kProductScalingFactors = 6, + kRecoveredCellWeights = 7, + kAccumScratch = 8, + kInputZeroPoints = 9, + kOutputStateZeroPoints = 10, + kScales = 11, + kNumHybridTempBuffers = 12, +}; + +void* UnidirectionalSequenceLstmInit(TfLiteContext* context, const char* buffer, + size_t length) { + TFLITE_DCHECK(context->AllocatePersistentBuffer != nullptr); + return context->AllocatePersistentBuffer( + context, sizeof(UnidirectionalSequenceLstmOpData)); +} + +// Check that input tensor dimensions matches with each other. +TfLiteStatus SetHybridScales(TfLiteContext* context, TfLiteNode* node) { + UnidirectionalSequenceLstmOpData* op_data = + reinterpret_cast(node->user_data); + MicroContext* micro_context = GetMicroContext(context); + + TfLiteTensor* input_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToInputWeightsTensor); + op_data->hybrid_lstm_scales.input_to_input_weights_scale = + (input_to_input_weights != nullptr) ? input_to_input_weights->params.scale + : 1.0f; + + TfLiteTensor* input_to_forget_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToForgetWeightsTensor); + op_data->hybrid_lstm_scales.input_to_forget_weights_scale = + (input_to_forget_weights != nullptr) + ? input_to_forget_weights->params.scale + : 1.0f; + + TfLiteTensor* input_to_cell_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToCellWeightsTensor); + op_data->hybrid_lstm_scales.input_to_cell_weights_scale = + (input_to_cell_weights != nullptr) ? input_to_cell_weights->params.scale + : 1.0f; + + TfLiteTensor* input_to_output_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToOutputWeightsTensor); + op_data->hybrid_lstm_scales.input_to_output_weights_scale = + (input_to_output_weights != nullptr) + ? input_to_output_weights->params.scale + : 1.0f; + + op_data->hybrid_lstm_scales.aux_input_to_input_weights_scale = 1.0f; + op_data->hybrid_lstm_scales.aux_input_to_forget_weights_scale = 1.0f; + op_data->hybrid_lstm_scales.aux_input_to_cell_weights_scale = 1.0f; + op_data->hybrid_lstm_scales.aux_input_to_output_weights_scale = 1.0f; + + TfLiteTensor* recurrent_to_input_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToInputWeightsTensor); + op_data->hybrid_lstm_scales.recurrent_to_input_weights_scale = + (recurrent_to_input_weights != nullptr) + ? recurrent_to_input_weights->params.scale + : 1.0f; + + TfLiteTensor* recurrent_to_forget_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToForgetWeightsTensor); + op_data->hybrid_lstm_scales.recurrent_to_forget_weights_scale = + (recurrent_to_forget_weights != nullptr) + ? recurrent_to_forget_weights->params.scale + : 1.0f; + + TfLiteTensor* recurrent_to_cell_weights = + micro_context->AllocateTempInputTensor(node, + kLstmRecurrentToCellWeightsTensor); + op_data->hybrid_lstm_scales.recurrent_to_cell_weights_scale = + (recurrent_to_cell_weights != nullptr) + ? recurrent_to_cell_weights->params.scale + : 1.0f; + + TfLiteTensor* recurrent_to_output_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToOutputWeightsTensor); + op_data->hybrid_lstm_scales.recurrent_to_output_weights_scale = + (recurrent_to_output_weights != nullptr) + ? recurrent_to_output_weights->params.scale + : 1.0f; + + TfLiteTensor* cell_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToInputWeightsTensor); + op_data->hybrid_lstm_scales.cell_to_input_weights_scale = + (cell_to_input_weights != nullptr) ? cell_to_input_weights->params.scale + : 1.0f; + + TfLiteTensor* cell_to_forget_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToForgetWeightsTensor); + op_data->hybrid_lstm_scales.cell_to_forget_weights_scale = + (cell_to_forget_weights != nullptr) ? cell_to_forget_weights->params.scale + : 1.0f; + + TfLiteTensor* cell_to_output_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToOutputWeightsTensor); + op_data->hybrid_lstm_scales.cell_to_output_weights_scale = + (cell_to_output_weights != nullptr) ? cell_to_output_weights->params.scale + : 1.0f; + + TfLiteTensor* projection_weights = micro_context->AllocateTempInputTensor( + node, kLstmProjectionWeightsTensor); + op_data->hybrid_lstm_scales.projection_weights_scale = + (projection_weights != nullptr) ? projection_weights->params.scale : 1.0f; + + if (input_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_input_weights); + } + + if (input_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_forget_weights); + } + + if (input_to_cell_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_cell_weights); + } + + if (input_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_output_weights); + } + + if (recurrent_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_input_weights); + } + + if (recurrent_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_forget_weights); + } + + if (recurrent_to_cell_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_cell_weights); + } + + if (recurrent_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_output_weights); + } + + if (cell_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_input_weights); + } + + if (cell_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_forget_weights); + } + + if (cell_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_output_weights); + } + + if (projection_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(projection_weights); + } + + return kTfLiteOk; +} + +// Check that input tensor dimensions matches with each other. +TfLiteStatus CheckInputTensorDimensions(TfLiteContext* context, + TfLiteNode* node, int n_input, + int n_output, int n_cell, + bool use_layer_norm, bool is_integer) { + MicroContext* micro_context = GetMicroContext(context); + + const auto* params = reinterpret_cast(node->builtin_data); + + // Making sure clipping parameters have valid values. + // == 0 means no clipping + // > 0 means clipping + TF_LITE_ENSURE(context, params->cell_clip >= 0); + TF_LITE_ENSURE(context, params->proj_clip >= 0); + + TfLiteTensor* input_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToInputWeightsTensor); + if (input_to_input_weights != nullptr) { + TF_LITE_ENSURE_EQ(context, input_to_input_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, input_to_input_weights->dims->data[0], n_cell); + TF_LITE_ENSURE_EQ(context, input_to_input_weights->dims->data[1], n_input); + } + + TfLiteTensor* input_to_forget_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToForgetWeightsTensor); + TF_LITE_ENSURE_EQ(context, input_to_forget_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, input_to_forget_weights->dims->data[0], n_cell); + TF_LITE_ENSURE_EQ(context, input_to_forget_weights->dims->data[1], n_input); + + TfLiteTensor* input_to_cell_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToCellWeightsTensor); + TF_LITE_ENSURE_EQ(context, input_to_cell_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, input_to_cell_weights->dims->data[0], n_cell); + TF_LITE_ENSURE_EQ(context, input_to_cell_weights->dims->data[1], n_input); + + TfLiteTensor* recurrent_to_input_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToInputWeightsTensor); + if (recurrent_to_input_weights != nullptr) { + TF_LITE_ENSURE_EQ(context, recurrent_to_input_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, recurrent_to_input_weights->dims->data[0], + n_cell); + TF_LITE_ENSURE_EQ(context, recurrent_to_input_weights->dims->data[1], + n_output); + } + + TfLiteTensor* recurrent_to_forget_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToForgetWeightsTensor); + TF_LITE_ENSURE_EQ(context, recurrent_to_forget_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, recurrent_to_forget_weights->dims->data[0], + n_cell); + TF_LITE_ENSURE_EQ(context, recurrent_to_forget_weights->dims->data[1], + n_output); + + TfLiteTensor* recurrent_to_cell_weights = + micro_context->AllocateTempInputTensor(node, + kLstmRecurrentToCellWeightsTensor); + TF_LITE_ENSURE_EQ(context, recurrent_to_cell_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, recurrent_to_cell_weights->dims->data[0], n_cell); + TF_LITE_ENSURE_EQ(context, recurrent_to_cell_weights->dims->data[1], + n_output); + + // We make sure the input-gate's parameters are either both present (regular + // LSTM) or not at all (CIFG-LSTM). + const bool cifg_weights_all_or_none = + ((input_to_input_weights != nullptr) && + (recurrent_to_input_weights != nullptr)) || + ((input_to_input_weights == nullptr) && + (recurrent_to_input_weights == nullptr)); + TF_LITE_ENSURE(context, cifg_weights_all_or_none == true); + + TfLiteTensor* cell_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToInputWeightsTensor); + if (cell_to_input_weights != nullptr) { + TF_LITE_ENSURE_EQ(context, cell_to_input_weights->dims->size, 1); + TF_LITE_ENSURE_EQ(context, cell_to_input_weights->dims->data[0], n_cell); + TF_LITE_ENSURE_TYPES_EQ( + context, cell_to_input_weights->type, + is_integer ? kTfLiteInt16 : input_to_forget_weights->type); + } + + TfLiteTensor* cell_to_forget_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToForgetWeightsTensor); + if (cell_to_forget_weights != nullptr) { + TF_LITE_ENSURE_EQ(context, cell_to_forget_weights->dims->size, 1); + TF_LITE_ENSURE_EQ(context, cell_to_forget_weights->dims->data[0], n_cell); + TF_LITE_ENSURE_TYPES_EQ( + context, cell_to_forget_weights->type, + is_integer ? kTfLiteInt16 : input_to_forget_weights->type); + } + + TfLiteTensor* cell_to_output_weights = micro_context->AllocateTempInputTensor( + node, kLstmCellToOutputWeightsTensor); + if (cell_to_output_weights != nullptr) { + TF_LITE_ENSURE_EQ(context, cell_to_output_weights->dims->size, 1); + TF_LITE_ENSURE_EQ(context, cell_to_output_weights->dims->data[0], n_cell); + TF_LITE_ENSURE_TYPES_EQ( + context, cell_to_output_weights->type, + is_integer ? kTfLiteInt16 : input_to_forget_weights->type); + } + + // Making sure the peephole weights are there all or none. + const bool use_cifg = (input_to_input_weights == nullptr); + const bool peephole_weights_all_or_none = + ((cell_to_input_weights != nullptr || use_cifg) && + (cell_to_forget_weights != nullptr) && + (cell_to_output_weights != nullptr)) || + ((cell_to_input_weights == nullptr) && + (cell_to_forget_weights == nullptr) && + (cell_to_output_weights == nullptr)); + TF_LITE_ENSURE(context, peephole_weights_all_or_none == true); + + // Make sure the input gate bias is present only when not a CIFG-LSTM. + TfLiteTensor* input_gate_bias = + micro_context->AllocateTempInputTensor(node, kLstmInputGateBiasTensor); + if (use_cifg) { + TF_LITE_ENSURE_EQ(context, input_gate_bias, nullptr); + } else { + TF_LITE_ENSURE_EQ(context, input_gate_bias->dims->size, 1); + TF_LITE_ENSURE_EQ(context, input_gate_bias->dims->data[0], n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, input_gate_bias->type, kTfLiteInt32); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, input_gate_bias->type, kTfLiteFloat32); + } + } + + TfLiteTensor* forget_gate_bias = + micro_context->AllocateTempInputTensor(node, kLstmForgetGateBiasTensor); + TF_LITE_ENSURE_EQ(context, forget_gate_bias->dims->size, 1); + TF_LITE_ENSURE_EQ(context, forget_gate_bias->dims->data[0], n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, forget_gate_bias->type, kTfLiteInt32); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, forget_gate_bias->type, kTfLiteFloat32); + } + + TfLiteTensor* cell_gate_bias = + micro_context->AllocateTempInputTensor(node, kLstmCellGateBiasTensor); + TF_LITE_ENSURE_EQ(context, cell_gate_bias->dims->size, 1); + TF_LITE_ENSURE_EQ(context, cell_gate_bias->dims->data[0], n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, cell_gate_bias->type, kTfLiteInt32); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, cell_gate_bias->type, kTfLiteFloat32); + } + + TfLiteTensor* output_gate_bias = + micro_context->AllocateTempInputTensor(node, kLstmOutputGateBiasTensor); + TF_LITE_ENSURE_EQ(context, output_gate_bias->dims->size, 1); + TF_LITE_ENSURE_EQ(context, output_gate_bias->dims->data[0], n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, output_gate_bias->type, kTfLiteInt32); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, output_gate_bias->type, kTfLiteFloat32); + } + + TfLiteTensor* projection_weights = micro_context->AllocateTempInputTensor( + node, kLstmProjectionWeightsTensor); + if (projection_weights != nullptr) { + TF_LITE_ENSURE_EQ(context, projection_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, projection_weights->dims->data[0], n_output); + TF_LITE_ENSURE_EQ(context, projection_weights->dims->data[1], n_cell); + } + + TfLiteTensor* projection_bias = + micro_context->AllocateTempInputTensor(node, kLstmProjectionBiasTensor); + if (projection_bias != nullptr) { + TF_LITE_ENSURE_EQ(context, projection_bias->dims->size, 1); + TF_LITE_ENSURE_EQ(context, projection_bias->dims->data[0], n_output); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, projection_bias->type, kTfLiteInt32); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, projection_bias->type, kTfLiteFloat32); + } + } + + // Making sure the projection tensors are consistent: + // 1) If projection weight is not present, then projection bias should not be + // present. + // 2) If projection weight is present, then projection bias is optional. + const bool projecton_tensors_consistent = + ((projection_weights != nullptr) || (projection_bias == nullptr)); + TF_LITE_ENSURE(context, projecton_tensors_consistent == true); + + if (use_layer_norm) { + TfLiteTensor* input_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmInputLayerNormCoefficientsTensor); + if (use_cifg) { + TF_LITE_ENSURE_EQ(context, input_layer_norm_coefficients, nullptr); + } else { + TF_LITE_ENSURE(context, input_layer_norm_coefficients != nullptr); + TF_LITE_ENSURE_EQ(context, input_layer_norm_coefficients->dims->size, 1); + TF_LITE_ENSURE_EQ(context, input_layer_norm_coefficients->dims->data[0], + n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, input_layer_norm_coefficients->type, + kTfLiteInt16); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, input_layer_norm_coefficients->type, + kTfLiteFloat32); + } + } + + TfLiteTensor* forget_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmForgetLayerNormCoefficientsTensor); + TF_LITE_ENSURE_EQ(context, forget_layer_norm_coefficients->dims->size, 1); + TF_LITE_ENSURE_EQ(context, forget_layer_norm_coefficients->dims->data[0], + n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, forget_layer_norm_coefficients->type, + kTfLiteInt16); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, forget_layer_norm_coefficients->type, + kTfLiteFloat32); + } + + TfLiteTensor* cell_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmCellLayerNormCoefficientsTensor); + TF_LITE_ENSURE_EQ(context, cell_layer_norm_coefficients->dims->size, 1); + TF_LITE_ENSURE_EQ(context, cell_layer_norm_coefficients->dims->data[0], + n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, cell_layer_norm_coefficients->type, + kTfLiteInt16); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, cell_layer_norm_coefficients->type, + kTfLiteFloat32); + } + + TfLiteTensor* output_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmOutputLayerNormCoefficientsTensor); + TF_LITE_ENSURE_EQ(context, output_layer_norm_coefficients->dims->size, 1); + TF_LITE_ENSURE_EQ(context, output_layer_norm_coefficients->dims->data[0], + n_cell); + if (is_integer) { + TF_LITE_ENSURE_TYPES_EQ(context, output_layer_norm_coefficients->type, + kTfLiteInt16); + } else { + TF_LITE_ENSURE_TYPES_EQ(context, output_layer_norm_coefficients->type, + kTfLiteFloat32); + } + if (input_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_layer_norm_coefficients); + } + if (forget_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(forget_layer_norm_coefficients); + } + if (cell_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_layer_norm_coefficients); + } + if (output_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_layer_norm_coefficients); + } + } + + if (input_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_input_weights); + } + if (input_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_forget_weights); + } + if (input_to_cell_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_cell_weights); + } + if (recurrent_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_input_weights); + } + if (recurrent_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_forget_weights); + } + micro_context->DeallocateTempTfLiteTensor(recurrent_to_cell_weights); + if (cell_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_input_weights); + } + if (cell_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_forget_weights); + } + if (cell_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_to_output_weights); + } + if (input_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_gate_bias); + } + if (forget_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(forget_gate_bias); + } + if (cell_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_gate_bias); + } + if (output_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_gate_bias); + } + if (projection_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(projection_weights); + } + if (projection_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(projection_bias); + } + + return kTfLiteOk; +} + +TfLiteStatus PrecomputeZeroPointTimesWeightWithBias( + TfLiteContext* context, int32_t zero_point, + const TfLiteTensor* weight_tensor, const TfLiteTensor* bias_tensor, + int32_t** output) { + if (weight_tensor == nullptr) { + return kTfLiteOk; + } + + const RuntimeShape& weight_shape = GetTensorShape(weight_tensor); + TF_LITE_ENSURE_EQ(context, weight_shape.DimensionsCount(), 2); + const int row = weight_shape.Dims(0); + const int col = weight_shape.Dims(1); + TFLITE_DCHECK(context->AllocatePersistentBuffer != nullptr); + *output = static_cast( + context->AllocatePersistentBuffer(context, row * sizeof(int32_t))); + + if (bias_tensor == nullptr) { + memset(*output, 0, row * sizeof(int32_t)); + } else { + const int32_t* bias = GetTensorData(bias_tensor); + memcpy(*output, bias, row * sizeof(int32_t)); + } + if (zero_point != 0) { + const int8_t* weight = GetTensorData(weight_tensor); + micro_tensor_utils::MatrixScalarMultiplyAccumulate(weight, zero_point, row, + col, *output); + } + return kTfLiteOk; +} + +TfLiteStatus PopulatePrecomputedZPTimesWeightsWithBias( + TfLiteContext* context, UnidirectionalSequenceLstmOpData* op_data, + TfLiteNode* node) { + MicroContext* micro_context = GetMicroContext(context); + + TfLiteTensor* input = + micro_context->AllocateTempInputTensor(node, kLstmInputTensor); + TfLiteTensor* output_state = + micro_context->AllocateTempInputTensor(node, kLstmOutputStateTensor); + TF_LITE_ENSURE(context, output_state != nullptr); + TF_LITE_ENSURE(context, output_state->is_variable); + + const int32_t input_zero_point = -input->params.zero_point; + const int32_t output_state_zero_point = -output_state->params.zero_point; + + TfLiteTensor* input_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToInputWeightsTensor); + TfLiteTensor* input_to_forget_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToForgetWeightsTensor); + TfLiteTensor* input_to_cell_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToCellWeightsTensor); + TfLiteTensor* input_to_output_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToOutputWeightsTensor); + + TfLiteTensor* recurrent_to_input_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToInputWeightsTensor); + TfLiteTensor* recurrent_to_forget_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToForgetWeightsTensor); + TfLiteTensor* recurrent_to_cell_weights = + micro_context->AllocateTempInputTensor(node, + kLstmRecurrentToCellWeightsTensor); + TfLiteTensor* recurrent_to_output_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToOutputWeightsTensor); + + TfLiteTensor* projection_weights = micro_context->AllocateTempInputTensor( + node, kLstmProjectionWeightsTensor); + TfLiteTensor* projection_bias = + micro_context->AllocateTempInputTensor(node, kLstmProjectionBiasTensor); + + IntegerLstmParameter* integer_lstm_params = &op_data->integer_lstm_param; + + TfLiteTensor* intermediate = + micro_context->AllocateTempIntermediateTensor(node, 4); + TF_LITE_ENSURE(context, + intermediate->quantization.type != kTfLiteNoQuantization); + const auto* params = + static_cast(intermediate->quantization.params); + const int32_t hidden_zp = params->zero_point->data[0]; + + // Get bias and perform zero point calculation. + // When there is layer normalization, the gate bias does not apply to matmul + // directly: + // y = ln(w * x + w * r + w * c) + b. + const bool is_layer_norm = op_data->use_layer_norm; + + // Forget gate. + TfLiteTensor* forget_gate_bias = is_layer_norm + ? nullptr + : micro_context->AllocateTempInputTensor( + node, kLstmForgetGateBiasTensor); + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, input_zero_point, input_to_forget_weights, forget_gate_bias, + &(integer_lstm_params->input_to_forget_effective_bias))); + + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, output_state_zero_point, recurrent_to_forget_weights, + nullptr, &(integer_lstm_params->recurrent_to_forget_effective_bias))); + + // Modulation gate. + TfLiteTensor* cell_gate_bias = is_layer_norm + ? nullptr + : micro_context->AllocateTempInputTensor( + node, kLstmCellGateBiasTensor); + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, input_zero_point, input_to_cell_weights, cell_gate_bias, + &(integer_lstm_params->input_to_cell_effective_bias))); + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, output_state_zero_point, recurrent_to_cell_weights, nullptr, + &(integer_lstm_params->recurrent_to_cell_effective_bias))); + + // Output gate. + TfLiteTensor* output_gate_bias = is_layer_norm + ? nullptr + : micro_context->AllocateTempInputTensor( + node, kLstmOutputGateBiasTensor); + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, input_zero_point, input_to_output_weights, output_gate_bias, + &(integer_lstm_params->input_to_output_effective_bias))); + + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, output_state_zero_point, recurrent_to_output_weights, + nullptr, &(integer_lstm_params->recurrent_to_output_effective_bias))); + + // Input gate. The calculation is only meaningful for non-cifg case. + TfLiteTensor* input_gate_bias = is_layer_norm + ? nullptr + : micro_context->AllocateTempInputTensor( + node, kLstmInputGateBiasTensor); + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, input_zero_point, input_to_input_weights, input_gate_bias, + &(integer_lstm_params->input_to_input_effective_bias))); + TF_LITE_ENSURE_OK( + context, + PrecomputeZeroPointTimesWeightWithBias( + context, output_state_zero_point, recurrent_to_input_weights, nullptr, + &(integer_lstm_params->recurrent_to_input_effective_bias))); + + // Projection bias. The calculation is only meaningful for with projection. + TF_LITE_ENSURE_OK(context, + PrecomputeZeroPointTimesWeightWithBias( + context, hidden_zp, projection_weights, projection_bias, + &(integer_lstm_params->projection_effective_bias))); + + if (input != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input); + } + if (output_state != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_state); + } + if (input_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_input_weights); + } + if (input_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_forget_weights); + } + if (input_to_cell_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_cell_weights); + } + if (input_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_output_weights); + } + if (recurrent_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_input_weights); + } + if (recurrent_to_forget_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_forget_weights); + } + if (recurrent_to_cell_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_cell_weights); + } + if (recurrent_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_output_weights); + } + if (projection_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(projection_weights); + } + if (projection_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(projection_bias); + } + if (forget_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(forget_gate_bias); + } + if (cell_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_gate_bias); + } + if (output_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_gate_bias); + } + if (input_gate_bias != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_gate_bias); + } + + if (intermediate != nullptr) { + micro_context->DeallocateTempTfLiteTensor(intermediate); + } + + return kTfLiteOk; +} + +// Resize the output and state tensors based on the sizes of the input tensors. +// Allocate a temporary scratch tensor. Also check that the sizes of the input +// tensors match each other. +TfLiteStatus UnidirectionalSequenceLstmPrepare(TfLiteContext* context, + TfLiteNode* node) { + UnidirectionalSequenceLstmOpData* op_data = + reinterpret_cast(node->user_data); + + MicroContext* micro_context = GetMicroContext(context); + + // Check we have all the inputs and outputs we need. + bool use_layer_norm = false; + if (node->inputs->size == 24) { + TfLiteTensor* forget_layer_norm_coefficients = + micro_context->AllocateTempInputTensor( + node, kLstmForgetLayerNormCoefficientsTensor); + if (forget_layer_norm_coefficients == nullptr) { + use_layer_norm = false; + } else { + use_layer_norm = true; + } + if (forget_layer_norm_coefficients != nullptr) { + micro_context->DeallocateTempTfLiteTensor(forget_layer_norm_coefficients); + } + } else if (node->inputs->size == 20) { + // This is deprecated and is only kept here for backward compatibility. + use_layer_norm = false; + } else { + MicroPrintf("The LSTM Full kernel expects 20 or 24 inputs. Got %d inputs", + node->inputs->size); + return kTfLiteError; + } + TF_LITE_ENSURE_EQ(context, node->outputs->size, 1); + op_data->use_layer_norm = use_layer_norm; + + // Inferring batch size, number of outputs and sequence length and + // number of cells from the input tensors. + TfLiteTensor* input = + micro_context->AllocateTempInputTensor(node, kLstmInputTensor); + op_data->input_zero_point = input->params.zero_point; + const bool is_integer = input->type == kTfLiteInt8; + TF_LITE_ENSURE(context, input->dims->size > 1); + const auto* params = + reinterpret_cast( + node->builtin_data); + const bool time_major = params->time_major; + const int n_batch = time_major ? input->dims->data[1] : input->dims->data[0]; + const int n_input = input->dims->data[2]; + + TfLiteTensor* input_to_output_weights = + micro_context->AllocateTempInputTensor(node, + kLstmInputToOutputWeightsTensor); + const int n_cell = input_to_output_weights->dims->data[0]; + TF_LITE_ENSURE_EQ(context, input_to_output_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, input_to_output_weights->dims->data[1], n_input); + + TfLiteTensor* recurrent_to_output_weights = + micro_context->AllocateTempInputTensor( + node, kLstmRecurrentToOutputWeightsTensor); + TF_LITE_ENSURE_EQ(context, recurrent_to_output_weights->dims->size, 2); + TF_LITE_ENSURE_EQ(context, recurrent_to_output_weights->dims->data[0], + n_cell); + const int n_output = recurrent_to_output_weights->dims->data[1]; + + // Check that input tensor dimensions matches with each other. + TF_LITE_ENSURE_OK( + context, CheckInputTensorDimensions(context, node, n_input, n_output, + n_cell, use_layer_norm, is_integer)); + + // Get the pointer to output, output_state and cell_state buffer tensors. + TfLiteTensor* output = + micro_context->AllocateTempOutputTensor(node, kLstmOutputTensor); + + TfLiteTensor* output_state = + micro_context->AllocateTempInputTensor(node, kLstmOutputStateTensor); + TF_LITE_ENSURE(context, output_state != nullptr); + TF_LITE_ENSURE(context, output_state->is_variable); + op_data->output_state_zero_point = output_state->params.zero_point; + TfLiteTensor* cell_state = + micro_context->AllocateTempInputTensor(node, kLstmCellStateTensor); + TF_LITE_ENSURE(context, cell_state != nullptr); + TF_LITE_ENSURE(context, cell_state->is_variable); + + // Check the shape of input state tensors. + // These tensor may be 1D or 2D. It's fine as long as the total size is + // correct. + TF_LITE_ENSURE_EQ(context, NumElements(output_state), n_batch * n_output); + TF_LITE_ENSURE_EQ(context, NumElements(cell_state), n_batch * n_cell); + + // Check the shape of output tensor against that of input tensor + TF_LITE_ENSURE_EQ(context, output->dims->size, 3); + TF_LITE_ENSURE_EQ(context, input->dims->data[0], output->dims->data[0]); + TF_LITE_ENSURE_EQ(context, input->dims->data[1], output->dims->data[1]); + TF_LITE_ENSURE_EQ(context, output->dims->data[2], n_output); + + if (is_integer) { + const int num_intermediate_tensors = node->intermediates->size; + TF_LITE_ENSURE(context, num_intermediate_tensors == 5); + } + + TfLiteTensor* input_to_input_weights = micro_context->AllocateTempInputTensor( + node, kLstmInputToInputWeightsTensor); + + const bool use_cifg = (input_to_input_weights == nullptr); + + // Create a primary scratch buffer for hybrid and float + // If is_integer, primary scratch buffer has a different size + if (!is_integer) { + int scratch_buffer_size[2]; + scratch_buffer_size[0] = n_batch; + + if (use_cifg) { + // Reserving space for Cell, Forget, Output gates + scratch_buffer_size[1] = n_cell * 3; + } else { + // Reserving space for Input, Cell, Forget, Output gates + scratch_buffer_size[1] = n_cell * 4; + } + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, + scratch_buffer_size[0] * scratch_buffer_size[1] * + TfLiteTypeGetSize(input->type), + &(op_data->scratch_index[kPrimaryScratchBuffer]))); + } + + if (IsHybridOp(input, input_to_output_weights)) { + TF_LITE_ENSURE(context, kNumHybridTempBuffers <= scratch_index_size); + + TF_LITE_ENSURE_OK(context, SetHybridScales(context, node)); + + op_data->compute_row_sums = true; + + // Allocate temporary tensors to store quantized values of input, + // output_state and cell_state tensors. + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, + GetTensorShape(input).FlatSize() * + TfLiteTypeGetSize(input_to_output_weights->type), + &(op_data->scratch_index[kInputQuantized]))); + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, + GetTensorShape(output_state).FlatSize() * + TfLiteTypeGetSize(input_to_output_weights->type), + &(op_data->scratch_index[kOutputStateQuantized]))); + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, + GetTensorShape(cell_state).FlatSize() * + TfLiteTypeGetSize(input_to_output_weights->type), + &(op_data->scratch_index[kCellStateQuantized]))); + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, n_batch * TfLiteTypeGetSize(kTfLiteFloat32), + &(op_data->scratch_index[kScales]))); + + // Allocate temporary buffers to store scaling factors and product scaling + // factors. The latter is a convenience storage which allows to quantize + // a vector once (which produces the scaling factors) and multiply it with + // different matrices (which requires multiplying the scaling factors with + // the scaling factor of the matrix). + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, n_batch * TfLiteTypeGetSize(kTfLiteFloat32), + &(op_data->scratch_index[kInputScalingFactors]))); + + TF_LITE_ENSURE_OK( + context, context->RequestScratchBufferInArena( + context, n_batch * TfLiteTypeGetSize(kTfLiteFloat32), + &(op_data->scratch_index[kOutputStateScalingFactors]))); + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, n_batch * TfLiteTypeGetSize(kTfLiteFloat32), + &(op_data->scratch_index[kProductScalingFactors]))); + + // Allocate a temporary buffer to store the recovered cell weights. Since + // this is used for diagonal matrices, only need to store n_cell values. + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, n_cell * TfLiteTypeGetSize(kTfLiteFloat32), + &(op_data->scratch_index[kRecoveredCellWeights]))); + + // Allocate a temporary buffer to store the accumulated int32 values. + TF_LITE_ENSURE_OK( + context, + context->RequestScratchBufferInArena( + context, n_cell * n_batch * TfLiteTypeGetSize(kTfLiteInt32), + &(op_data->scratch_index[kAccumScratch]))); + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, n_batch * TfLiteTypeGetSize(kTfLiteFloat32), + &(op_data->scratch_index[kInputZeroPoints]))); + + TF_LITE_ENSURE_OK(context, + context->RequestScratchBufferInArena( + context, n_batch * TfLiteTypeGetSize(kTfLiteFloat32), + &(op_data->scratch_index[kOutputStateZeroPoints]))); + + int row_sums_rows = use_cifg ? 6 : 8; + TfLiteTensor* projection_weights = micro_context->AllocateTempInputTensor( + node, kLstmProjectionWeightsTensor); + if (projection_weights != nullptr) { + row_sums_rows += ceil(static_cast(n_output) / n_cell); + } + op_data->row_sums_size = row_sums_rows; + TFLITE_DCHECK(context->AllocatePersistentBuffer != nullptr); + op_data->row_sums = static_cast(context->AllocatePersistentBuffer( + context, row_sums_rows * n_cell * sizeof(int32_t))); + if (projection_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(projection_weights); + } + } + + if (is_integer) { + // Integer UnidirectionalSequenceLSTM prepare function for 8x8->16. + // This code path needs 5 intermediate tensors per Op. + // Populate quantization parameters. + PopulateQuantizedLstmParams8x8_16(context, node, + &op_data->integer_lstm_param); + // Allocate scratch buffer. Need 4 16-bit buffer with size n_batch * n_cell + // and 1 8-bit buffer with size n_batch * n_cell. For integer + // UnidirectionalSequenceLSTM, we do not need the extra 32-bit buffer. + for (int i = 0; i < 5; ++i) { + TfLiteType buffer_type = kTfLiteInt16; + + if (i == 4) { + buffer_type = kTfLiteInt8; + } + + TF_LITE_ENSURE_OK( + context, + context->RequestScratchBufferInArena( + context, n_batch * n_cell * TfLiteTypeGetSize(buffer_type), + &(op_data->scratch_index[i]))); + } + + // Populate precomputed zp * weight. + TF_LITE_ENSURE_OK(context, PopulatePrecomputedZPTimesWeightsWithBias( + context, op_data, node)); + } + + if (input != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input); + } + if (input_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_output_weights); + } + if (recurrent_to_output_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(recurrent_to_output_weights); + } + if (output != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output); + } + if (output_state != nullptr) { + micro_context->DeallocateTempTfLiteTensor(output_state); + } + if (cell_state != nullptr) { + micro_context->DeallocateTempTfLiteTensor(cell_state); + } + + if (input_to_input_weights != nullptr) { + micro_context->DeallocateTempTfLiteTensor(input_to_input_weights); + } + return kTfLiteOk; +} + +TfLiteStatus UnidirectionalSequenceLstmEval(TfLiteContext* context, + TfLiteNode* node) { + TFLITE_DCHECK(context->GetScratchBuffer != nullptr); + + const auto* params = + reinterpret_cast( + node->builtin_data); + const UnidirectionalSequenceLstmOpData* op_data = + reinterpret_cast(node->user_data); + const bool use_layer_norm = op_data->use_layer_norm; + const bool time_major = params->time_major; + + const TfLiteEvalTensor* input = + tflite::micro::GetEvalInput(context, node, kLstmInputTensor); + + const TfLiteEvalTensor* input_to_input_weights = tflite::micro::GetEvalInput( + context, node, kLstmInputToInputWeightsTensor); + + const TfLiteEvalTensor* input_to_forget_weights = tflite::micro::GetEvalInput( + context, node, kLstmInputToForgetWeightsTensor); + + const TfLiteEvalTensor* input_to_cell_weights = + tflite::micro::GetEvalInput(context, node, kLstmInputToCellWeightsTensor); + + const TfLiteEvalTensor* input_to_output_weights = tflite::micro::GetEvalInput( + context, node, kLstmInputToOutputWeightsTensor); + + const TfLiteEvalTensor* recurrent_to_input_weights = + tflite::micro::GetEvalInput(context, node, + kLstmRecurrentToInputWeightsTensor); + + const TfLiteEvalTensor* recurrent_to_forget_weights = + tflite::micro::GetEvalInput(context, node, + kLstmRecurrentToForgetWeightsTensor); + + const TfLiteEvalTensor* recurrent_to_cell_weights = + tflite::micro::GetEvalInput(context, node, + kLstmRecurrentToCellWeightsTensor); + + const TfLiteEvalTensor* recurrent_to_output_weights = + tflite::micro::GetEvalInput(context, node, + kLstmRecurrentToOutputWeightsTensor); + + const TfLiteEvalTensor* cell_to_input_weights = + tflite::micro::GetEvalInput(context, node, kLstmCellToInputWeightsTensor); + + const TfLiteEvalTensor* cell_to_forget_weights = tflite::micro::GetEvalInput( + context, node, kLstmCellToForgetWeightsTensor); + + const TfLiteEvalTensor* cell_to_output_weights = tflite::micro::GetEvalInput( + context, node, kLstmCellToOutputWeightsTensor); + + const TfLiteEvalTensor* input_gate_bias = + tflite::micro::GetEvalInput(context, node, kLstmInputGateBiasTensor); + + const TfLiteEvalTensor* forget_gate_bias = + tflite::micro::GetEvalInput(context, node, kLstmForgetGateBiasTensor); + + const TfLiteEvalTensor* cell_gate_bias = + tflite::micro::GetEvalInput(context, node, kLstmCellGateBiasTensor); + + const TfLiteEvalTensor* output_gate_bias = + tflite::micro::GetEvalInput(context, node, kLstmOutputGateBiasTensor); + + const TfLiteEvalTensor* projection_weights = + tflite::micro::GetEvalInput(context, node, kLstmProjectionWeightsTensor); + + const TfLiteEvalTensor* projection_bias = + tflite::micro::GetEvalInput(context, node, kLstmProjectionBiasTensor); + + TfLiteEvalTensor* output_state = + tflite::micro::GetMutableEvalInput(context, node, kLstmOutputStateTensor); + + TfLiteEvalTensor* cell_state = + tflite::micro::GetMutableEvalInput(context, node, kLstmCellStateTensor); + + TFLITE_DCHECK(cell_state != nullptr); + + const TfLiteEvalTensor* input_layer_norm_coefficients = + use_layer_norm ? tflite::micro::GetEvalInput( + context, node, kLstmInputLayerNormCoefficientsTensor) + : nullptr; + const TfLiteEvalTensor* forget_layer_norm_coefficients = + use_layer_norm + ? tflite::micro::GetEvalInput(context, node, + kLstmForgetLayerNormCoefficientsTensor) + : nullptr; + const TfLiteEvalTensor* cell_layer_norm_coefficients = + use_layer_norm ? tflite::micro::GetEvalInput( + context, node, kLstmCellLayerNormCoefficientsTensor) + : nullptr; + const TfLiteEvalTensor* output_layer_norm_coefficients = + use_layer_norm + ? tflite::micro::GetEvalInput(context, node, + kLstmOutputLayerNormCoefficientsTensor) + : nullptr; + + TfLiteEvalTensor* output = + tflite::micro::GetEvalOutput(context, node, kLstmOutputTensor); + + // Copy out the LSTM specific params so they can be passed in the function. + TfLiteLSTMParams lstm_params; + lstm_params.activation = params->activation; + lstm_params.cell_clip = params->cell_clip; + lstm_params.proj_clip = params->proj_clip; + lstm_params.asymmetric_quantize_inputs = params->asymmetric_quantize_inputs; + + switch (input_to_output_weights->type) { + case kTfLiteFloat32: { + // Index the scratch buffers pointers to the global scratch buffer. + return EvalFloatLstm( + input, input_to_input_weights, input_to_forget_weights, + input_to_cell_weights, input_to_output_weights, + recurrent_to_input_weights, recurrent_to_forget_weights, + recurrent_to_cell_weights, recurrent_to_output_weights, + cell_to_input_weights, cell_to_forget_weights, cell_to_output_weights, + input_layer_norm_coefficients, forget_layer_norm_coefficients, + cell_layer_norm_coefficients, output_layer_norm_coefficients, + /*aux_input=*/nullptr, + /*aux_input_to_input_weights=*/nullptr, + /*aux_input_to_forget_weights=*/nullptr, + /*aux_input_to_cell_weights=*/nullptr, + /*aux_input_to_output_weights=*/nullptr, input_gate_bias, + forget_gate_bias, cell_gate_bias, output_gate_bias, + projection_weights, projection_bias, &lstm_params, + /*forward_sequence=*/true, time_major, + /*output_offset=*/0, + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kPrimaryScratchBuffer])), + output_state, cell_state, output); + } break; + case kTfLiteUInt8: + case kTfLiteInt8: { + const bool is_hybrid = input->type == kTfLiteFloat32; + if (is_hybrid) { + // Index the scratch buffers pointers to the global scratch buffer. + UnidirectionalSequenceLstmOpData* op_data_rw = + reinterpret_cast( + node->user_data); + return EvalHybridLstm( + &(op_data->hybrid_lstm_scales), input, input_to_input_weights, + /*input_to_input_weights_ledger*/ nullptr, input_to_forget_weights, + /*input_to_forget_weights_ledger*/ nullptr, input_to_cell_weights, + /*input_to_cell_weights_ledger*/ nullptr, input_to_output_weights, + /*input_to_output_weights_ledger*/ nullptr, + recurrent_to_input_weights, + /*recurrent_to_input_weights_ledger*/ nullptr, + recurrent_to_forget_weights, + /*recurrent_to_forget_weights_ledger*/ nullptr, + recurrent_to_cell_weights, + /*recurrent_to_cell_weights_ledger*/ nullptr, + recurrent_to_output_weights, + /*recurrent_to_output_weights_ledger*/ nullptr, + cell_to_input_weights, cell_to_forget_weights, + cell_to_output_weights, input_layer_norm_coefficients, + forget_layer_norm_coefficients, cell_layer_norm_coefficients, + output_layer_norm_coefficients, + /*aux_input=*/nullptr, + /*aux_input_to_input_weights=*/nullptr, + /*aux_input_to_forget_weights=*/nullptr, + /*aux_input_to_cell_weights=*/nullptr, + /*aux_input_to_output_weights=*/nullptr, input_gate_bias, + forget_gate_bias, cell_gate_bias, output_gate_bias, + projection_weights, /*projection_weights_ledger*/ nullptr, + projection_bias, &lstm_params, + /*forward_sequence=*/true, time_major, + /*output_offset=*/0, + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kPrimaryScratchBuffer])), + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kInputScalingFactors])), + /*aux_input_sf=*/nullptr, + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kOutputStateScalingFactors])), + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kProductScalingFactors])), + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kRecoveredCellWeights])), + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kInputQuantized])), + /*aux_input_quantized=*/nullptr, + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kOutputStateQuantized])), + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kCellStateQuantized])), + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kScales])), + output_state, cell_state, + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kAccumScratch])), + output, + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kInputZeroPoints])), + /*aux_input_zp=*/nullptr, + reinterpret_cast(context->GetScratchBuffer( + context, op_data->scratch_index[kOutputStateZeroPoints])), + op_data_rw->row_sums, op_data_rw->row_sums_size, + &op_data_rw->compute_row_sums); + } else { + return EvalInteger8x8_16Lstm( + input, input_to_input_weights, input_to_forget_weights, + input_to_cell_weights, input_to_output_weights, + recurrent_to_input_weights, recurrent_to_forget_weights, + recurrent_to_cell_weights, recurrent_to_output_weights, + cell_to_input_weights, cell_to_forget_weights, + cell_to_output_weights, input_layer_norm_coefficients, + forget_layer_norm_coefficients, cell_layer_norm_coefficients, + output_layer_norm_coefficients, input_gate_bias, forget_gate_bias, + cell_gate_bias, output_gate_bias, projection_weights, + projection_bias, &lstm_params, /*forward_sequence=*/true, + time_major, &op_data->integer_lstm_param, + op_data->output_state_zero_point, output_state, cell_state, output, + reinterpret_cast( + context->GetScratchBuffer(context, op_data->scratch_index[0])), + reinterpret_cast( + context->GetScratchBuffer(context, op_data->scratch_index[1])), + reinterpret_cast( + context->GetScratchBuffer(context, op_data->scratch_index[2])), + reinterpret_cast( + context->GetScratchBuffer(context, op_data->scratch_index[3])), + reinterpret_cast( + context->GetScratchBuffer(context, op_data->scratch_index[4])), + nullptr); + } + } break; + default: + MicroPrintf("Type %s is not currently supported.", + TfLiteTypeGetName(input_to_output_weights->type)); + return kTfLiteError; + } +} + +} // namespace + +TfLiteRegistration Register_UNIDIRECTIONAL_SEQUENCE_LSTM() { + return tflite::micro::RegisterOp(UnidirectionalSequenceLstmInit, + UnidirectionalSequenceLstmPrepare, + UnidirectionalSequenceLstmEval); +} + +} // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm_test_config.h b/code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm_test_config.h new file mode 100644 index 00000000..e37c0efd --- /dev/null +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/unidirectional_sequence_lstm_test_config.h @@ -0,0 +1,244 @@ +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ +#ifndef TENSORFLOW_LITE_MICRO_KERNELS_UNIDIRECTIONAL_SEQUENCE_LSTM_TEST_CONFIG_H_ +#define TENSORFLOW_LITE_MICRO_KERNELS_UNIDIRECTIONAL_SEQUENCE_LSTM_TEST_CONFIG_H_ + +#include "tensorflow/lite/c/common.h" + +namespace tflite { +namespace testing { + +// TODO(b/230666079) enable below tests for xtensa when the xtensa +// kernel is reconciled with reference kernel +#if !defined(XTENSA) + +typedef struct LstmIntegerTestConfig { + const int n_batch; + const int n_input; + const int n_cell; + const int n_output; + const int sequence_length; + const bool time_major; + const bool use_cifg; + const bool use_peephole; + const bool use_projection_weights; + const bool use_projection_bias; + const bool use_layer_norm; + const bool use_8x8_8_implementation; + float intermediate_scale[5][2]; + int intermediate_zp[5][2]; + TfLiteAffineQuantization* intermediate_qparam; + + const float* input; + int8_t* input_quant; + + const float* input_to_input_weights; + int8_t* lstm_i2i_quant; + const float* input_to_forget_weights; + int8_t* lstm_i2f_quant; + const float* input_to_cell_weights; + int8_t* lstm_i2c_quant; + const float* input_to_output_weights; + int8_t* lstm_i2o_quant; + + const float* recurrent_to_input_weights; + int8_t* lstm_r2i_quant; + const float* recurrent_to_forget_weights; + int8_t* lstm_r2f_quant; + const float* recurrent_to_cell_weights; + int8_t* lstm_r2c_quant; + const float* recurrent_to_output_weights; + int8_t* lstm_r2o_quant; + + const float* cell_to_input_weights; + int16_t* lstm_c2i_quant; + const float* cell_to_forget_weights; + int16_t* lstm_c2f_quant; + const float* cell_to_output_weights; + int16_t* lstm_c2o_quant; + + const float* input_gate_bias; + int32_t* lstm_igate_bias_quant; + const float* forget_gate_bias; + int32_t* lstm_fgate_bias_quant; + const float* cell_gate_bias; + int32_t* lstm_cgate_bias_quant; + const float* output_gate_bias; + int32_t* lstm_ogate_bias_quant; + + const float* projection_weights; + int8_t* lstm_proj_w_quant; + const float* projection_bias; + int32_t* projection_bias_quant; + + int16_t* output_state; + int16_t* cell_state; + + const float* input_layer_norm_coefficients; + int16_t* lstm_input_layer_norm_coeff_quant; + const float* forget_layer_norm_coefficients; + int16_t* lstm_forget_layer_norm_coeff_quant; + const float* cell_layer_norm_coefficients; + int16_t* lstm_cell_layer_norm_coeff_quant; + const float* output_layer_norm_coefficients; + int16_t* lstm_output_layer_norm_coeff_quant; + + int8_t* output; + const int8_t* expected_output; + + bool asymmetric_quantize_inputs; + const float ranges[25][2]; +} LstmIntegerTestConfig; + +typedef struct LstmFloatTestConfig { + const int n_batch; + const int n_input; + const int n_cell; + const int n_output; + const int sequence_length; + const bool time_major; + const bool use_cifg; + const bool use_peephole; + const bool use_projection_weights; + const bool use_projection_bias; + const bool use_layer_norm; + const float cell_clip; + const float proj_clip; + + const float* input_original; + float* input; + + const float* input_to_input_weights; + const float* input_to_forget_weights; + const float* input_to_cell_weights; + const float* input_to_output_weights; + + const float* recurrent_to_input_weights; + const float* recurrent_to_forget_weights; + const float* recurrent_to_cell_weights; + const float* recurrent_to_output_weights; + + const float* cell_to_input_weights; + const float* cell_to_forget_weights; + const float* cell_to_output_weights; + + const float* input_gate_bias; + const float* forget_gate_bias; + const float* cell_gate_bias; + const float* output_gate_bias; + + const float* projection_weights; + const float* projection_bias; + + float* output_state; + float* cell_state; + + const float* input_layer_norm_coefficients; + const float* forget_layer_norm_coefficients; + const float* cell_layer_norm_coefficients; + const float* output_layer_norm_coefficients; + + float* output; + const float* expected_output_original; + float* expected_output; +} LstmFloatTestConfig; + +typedef struct LstmWeightQuantizationBuffers { + int8_t* lstm_i2i_quant; + float* lstm_i2i_scale; + int* lstm_i2i_zp; + TfLiteAffineQuantization* lstm_i2i_qparam; + + int8_t* lstm_i2f_quant; + float* lstm_i2f_scale; + int* lstm_i2f_zp; + TfLiteAffineQuantization* lstm_i2f_qparam; + + int8_t* lstm_i2c_quant; + float* lstm_i2c_scale; + int* lstm_i2c_zp; + TfLiteAffineQuantization* lstm_i2c_qparam; + + int8_t* lstm_i2o_quant; + float* lstm_i2o_scale; + int* lstm_i2o_zp; + TfLiteAffineQuantization* lstm_i2o_qparam; + + int8_t* lstm_r2i_quant; + float* lstm_r2i_scale; + int* lstm_r2i_zp; + TfLiteAffineQuantization* lstm_r2i_qparam; + + int8_t* lstm_r2f_quant; + float* lstm_r2f_scale; + int* lstm_r2f_zp; + TfLiteAffineQuantization* lstm_r2f_qparam; + + int8_t* lstm_r2c_quant; + float* lstm_r2c_scale; + int* lstm_r2c_zp; + TfLiteAffineQuantization* lstm_r2c_qparam; + + int8_t* lstm_r2o_quant; + float* lstm_r2o_scale; + int* lstm_r2o_zp; + TfLiteAffineQuantization* lstm_r2o_qparam; + + int8_t* lstm_c2i_quant; + float* lstm_c2i_scale; + int* lstm_c2i_zp; + TfLiteAffineQuantization* lstm_c2i_qparam; + + int8_t* lstm_c2f_quant; + float* lstm_c2f_scale; + int* lstm_c2f_zp; + TfLiteAffineQuantization* lstm_c2f_qparam; + + int8_t* lstm_c2o_quant; + float* lstm_c2o_scale; + int* lstm_c2o_zp; + TfLiteAffineQuantization* lstm_c2o_qparam; + + int8_t* lstm_proj_w_quant; + float* lstm_proj_w_scale; + int* lstm_proj_w_zp; + TfLiteAffineQuantization* lstm_proj_w_qparam; +} LstmWeightQuantizationBuffers; + +extern LstmIntegerTestConfig lstm_integer_no_peephole_config; + +extern LstmIntegerTestConfig lstm_integer_peephole_config; + +extern LstmFloatTestConfig lstm_no_cifg_no_peephole_no_proj_config; + +extern LstmFloatTestConfig lstm_cifg_peephole_no_proj_config; + +extern LstmFloatTestConfig lstm_no_cifg_peephole_proj_config; + +extern LstmFloatTestConfig lstm_no_cifg_peephole_proj_bias_config; + +extern LstmWeightQuantizationBuffers lstm_no_cifg_no_peephole_no_proj_buffers; + +extern LstmWeightQuantizationBuffers lstm_cifg_peephole_no_proj_buffers; + +extern LstmWeightQuantizationBuffers lstm_no_cifg_peephole_proj_buffers; + +extern LstmFloatTestConfig cifg_peephole_no_proj_config_layer_norm; + +#endif // !defined(XTENSA) +} // namespace testing +} // namespace tflite + +#endif // TENSORFLOW_LITE_MICRO_KERNELS_UNIDIRECTIONAL_SEQUENCE_LSTM_TEST_CONFIG_H_ diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/unpack.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/unpack.cc index 13bb7dcf..d199add0 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/unpack.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/unpack.cc @@ -103,14 +103,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace unpack TfLiteRegistration Register_UNPACK() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/nullptr, - /*invoke=*/unpack::Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, nullptr, unpack::Eval); } } // namespace micro diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/var_handle.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/var_handle.cc index 8354c918..db044f3f 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/var_handle.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/var_handle.cc @@ -87,14 +87,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_VAR_HANDLE() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/while.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/while.cc index 576c19b0..811c9eae 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/while.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/while.cc @@ -127,14 +127,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace. TfLiteRegistration Register_WHILE() { - return {/*init=*/Init, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(Init, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/kernels/zeros_like.cc b/code/components/tflite-lib/tensorflow/lite/micro/kernels/zeros_like.cc index 733564c9..fd6e6612 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/kernels/zeros_like.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/kernels/zeros_like.cc @@ -81,14 +81,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { } // namespace TfLiteRegistration Register_ZEROS_LIKE() { - return {/*init=*/nullptr, - /*free=*/nullptr, - /*prepare=*/Prepare, - /*invoke=*/Eval, - /*profiling_string=*/nullptr, - /*builtin_code=*/0, - /*custom_name=*/nullptr, - /*version=*/0}; + return tflite::micro::RegisterOp(nullptr, Prepare, Eval); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.cc b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.cc index ab313e66..edab2b83 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.cc @@ -16,8 +16,10 @@ limitations under the License. #include "tensorflow/lite/c/c_api_types.h" #include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/kernels/kernel_util.h" #include "tensorflow/lite/micro/memory_helpers.h" #include "tensorflow/lite/micro/memory_planner/greedy_memory_planner.h" +#include "tensorflow/lite/micro/micro_error_reporter.h" namespace tflite { @@ -148,6 +150,30 @@ TfLiteStatus AllocationInfoBuilder::FreeAllocationInfo() { return kTfLiteOk; } +TfLiteStatus AllocationInfoBuilder::ValidateSubgraph( + const SubGraph* subgraph, TfLiteEvalTensor* eval_tensors) { + uint32_t operators_size = NumSubgraphOperators(subgraph); + + for (uint32_t i = 0; i < operators_size; i++) { + const auto op = subgraph->operators()->Get(i); + for (size_t n = 0; + op->intermediates() != nullptr && n < op->intermediates()->size(); + n++) { + const int tensor_index = op->intermediates()->Get(n); + size_t tensor_size = -1; + TF_LITE_ENSURE_STATUS(TfLiteEvalTensorByteLength( + &eval_tensors[tensor_index], &tensor_size)); + if (tensor_size != 0) { + MicroPrintf( + "Does not support intermediate tensor with non-zero size: %d", + tensor_size); + return kTfLiteError; + } + } + } + return kTfLiteOk; +} + TfLiteStatus AllocationInfoBuilder::InitializeAllocationInfo( const int32_t* offline_offsets, SubgraphAllocations* allocations) { AllocationInfo* allocation_info = info_.allocation_info; @@ -158,6 +184,10 @@ TfLiteStatus AllocationInfoBuilder::InitializeAllocationInfo( TfLiteEvalTensor* eval_tensors = allocations[subgraph_idx].tensors; AllocationInfo* subgraph_allocation_info = &allocation_info[info_.subgraph_offsets[subgraph_idx]]; + + // Ensure constraints are met. + TF_LITE_ENSURE_STATUS(ValidateSubgraph(subgraph, eval_tensors)); + for (size_t i = 0; i < subgraph->tensors()->size(); ++i) { AllocationInfo* current = &subgraph_allocation_info[i]; current->output_ptr = &(eval_tensors[i].data.data); @@ -167,8 +197,10 @@ TfLiteStatus AllocationInfoBuilder::InitializeAllocationInfo( current->first_created = kUninitializedLifetime; current->last_used = kUninitializedLifetime; - current->needs_allocating = (eval_tensors[i].data.data == nullptr) && - (!subgraph->tensors()->Get(i)->is_variable()); + current->needs_allocating = + (eval_tensors[i].data.data == nullptr) && + (!subgraph->tensors()->Get(i)->is_variable()) && + (current->bytes != 0); if (offline_offsets) { current->offline_offset = offline_offsets[i]; } else { @@ -181,8 +213,8 @@ TfLiteStatus AllocationInfoBuilder::InitializeAllocationInfo( &allocation_info[info_.scratch_offset]; for (size_t i = 0; i < info_.scratch_buffer_count; i++) { AllocationInfo* current = &scratch_allocation_info[i]; - current->first_created = -1; - current->last_used = -1; + current->first_created = kUninitializedLifetime; + current->last_used = kUninitializedLifetime; current->needs_allocating = true; current->offline_offset = kOnlinePlannedBuffer; } diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.h b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.h index af303307..bc6825ef 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocation_info.h @@ -128,6 +128,10 @@ class AllocationInfoBuilder { // count monotonically increases through the lifetime marking process. void UpdateLastUsed(AllocationInfo* current, int allocation_scope_count); + // Validate if a subgraph satisfies assumptions. + TfLiteStatus ValidateSubgraph(const SubGraph* subgraph, + TfLiteEvalTensor* eval_tensors); + const tflite::Model* model_ = nullptr; INonPersistentBufferAllocator* non_persistent_allocator_ = nullptr; ErrorReporter* reporter_ = nullptr; diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.cc b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.cc index b71c7502..7e5192cf 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.cc @@ -26,6 +26,7 @@ limitations under the License. #include "tensorflow/lite/core/api/op_resolver.h" #include "tensorflow/lite/core/api/tensor_utils.h" #include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h" #include "tensorflow/lite/micro/compatibility.h" #include "tensorflow/lite/micro/flatbuffer_utils.h" #include "tensorflow/lite/micro/memory_helpers.h" @@ -34,7 +35,6 @@ limitations under the License. #include "tensorflow/lite/micro/micro_allocation_info.h" #include "tensorflow/lite/micro/micro_arena_constants.h" #include "tensorflow/lite/micro/micro_error_reporter.h" -#include "tensorflow/lite/micro/simple_memory_allocator.h" #include "tensorflow/lite/schema/schema_generated.h" #include "tensorflow/lite/schema/schema_utils.h" diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.h b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.h index d2967c21..35b07f16 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_allocator.h @@ -21,10 +21,10 @@ limitations under the License. #include "tensorflow/lite/c/common.h" #include "tensorflow/lite/core/api/error_reporter.h" #include "tensorflow/lite/core/api/flatbuffer_conversions.h" +#include "tensorflow/lite/micro/arena_allocator/simple_memory_allocator.h" #include "tensorflow/lite/micro/compatibility.h" #include "tensorflow/lite/micro/flatbuffer_utils.h" #include "tensorflow/lite/micro/memory_planner/micro_memory_planner.h" -#include "tensorflow/lite/micro/simple_memory_allocator.h" #include "tensorflow/lite/schema/schema_generated.h" namespace tflite { diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_context.cc b/code/components/tflite-lib/tensorflow/lite/micro/micro_context.cc index 1526b976..9ec694b8 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_context.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_context.cc @@ -80,6 +80,16 @@ TfLiteTensor* MicroContext::AllocateTempOutputTensor(const TfLiteNode* node, return AllocateTempTfLiteTensor(tensor_index); } +TfLiteTensor* MicroContext::AllocateTempIntermediateTensor( + const TfLiteNode* node, int index) { + const int tensor_index = GetTensorIndex(index, node->intermediates->size, + node->intermediates->data); + if (tensor_index < 0) { + return nullptr; + } + return AllocateTempTfLiteTensor(tensor_index); +} + void MicroContext::DeallocateTempTfLiteTensor(TfLiteTensor* tensor) { return allocator_.DeallocateTempTfLiteTensor(tensor); } diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_context.h b/code/components/tflite-lib/tensorflow/lite/micro/micro_context.h index 1db2575e..e7be6544 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_context.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_context.h @@ -73,6 +73,13 @@ class MicroContext { virtual TfLiteTensor* AllocateTempOutputTensor(const TfLiteNode* node, int index); + // Returns a temporary TfLiteTensor struct for the specified intermediate + // tensor of a given mode. This is the recommended API over the deprecated + // GetIntermediates/GetIntermediatesSafe to get a temp intermediate tensor. + // The returned tensor shall be freed via calling DeallocateTempTfLiteTensor. + virtual TfLiteTensor* AllocateTempIntermediateTensor(const TfLiteNode* node, + int index); + // Deallocates a temp TfLiteTensor. // Virtual so that it can be faked for kernel tests. virtual void DeallocateTempTfLiteTensor(TfLiteTensor* tensor); diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_mutable_op_resolver.h b/code/components/tflite-lib/tensorflow/lite/micro/micro_mutable_op_resolver.h index 8676189d..237bd595 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_mutable_op_resolver.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_mutable_op_resolver.h @@ -1,4 +1,4 @@ -/* Copyright 2021 The TensorFlow Authors. All Rights Reserved. +/* Copyright 2022 The TensorFlow Authors. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -25,9 +25,11 @@ limitations under the License. #include "tensorflow/lite/kernels/op_macros.h" #include "tensorflow/lite/micro/compatibility.h" #include "tensorflow/lite/micro/kernels/conv.h" +#include "tensorflow/lite/micro/kernels/depthwise_conv.h" #include "tensorflow/lite/micro/kernels/ethosu.h" #include "tensorflow/lite/micro/kernels/fully_connected.h" #include "tensorflow/lite/micro/kernels/micro_ops.h" +#include "tensorflow/lite/micro/kernels/reduce.h" #include "tensorflow/lite/micro/kernels/softmax.h" #include "tensorflow/lite/micro/micro_op_resolver.h" #include "tensorflow/lite/schema/schema_generated.h" @@ -119,8 +121,8 @@ class MicroMutableOpResolver : public MicroOpResolver { ParseAbs); } - TfLiteStatus AddAdd() { - return AddBuiltin(BuiltinOperator_ADD, tflite::Register_ADD(), ParseAdd); + TfLiteStatus AddAdd(const TfLiteRegistration& registration = Register_ADD()) { + return AddBuiltin(BuiltinOperator_ADD, registration, ParseAdd); } TfLiteStatus AddAddN() { @@ -207,9 +209,10 @@ class MicroMutableOpResolver : public MicroOpResolver { tflite::Register_DEPTH_TO_SPACE(), ParseDepthToSpace); } - TfLiteStatus AddDepthwiseConv2D() { - return AddBuiltin(BuiltinOperator_DEPTHWISE_CONV_2D, - Register_DEPTHWISE_CONV_2D(), ParseDepthwiseConv2D); + TfLiteStatus AddDepthwiseConv2D( + const TfLiteRegistration& registration = Register_DEPTHWISE_CONV_2D()) { + return AddBuiltin(BuiltinOperator_DEPTHWISE_CONV_2D, registration, + ParseDepthwiseConv2D); } TfLiteStatus AddDequantize() { @@ -372,8 +375,7 @@ class MicroMutableOpResolver : public MicroOpResolver { } TfLiteStatus AddMean() { - return AddBuiltin(BuiltinOperator_MEAN, tflite::ops::micro::Register_MEAN(), - ParseReducer); + return AddBuiltin(BuiltinOperator_MEAN, Register_MEAN(), ParseReducer); } TfLiteStatus AddMinimum() { @@ -426,8 +428,8 @@ class MicroMutableOpResolver : public MicroOpResolver { } TfLiteStatus AddReduceMax() { - return AddBuiltin(BuiltinOperator_REDUCE_MAX, - tflite::ops::micro::Register_REDUCE_MAX(), ParseReducer); + return AddBuiltin(BuiltinOperator_REDUCE_MAX, Register_REDUCE_MAX(), + ParseReducer); } TfLiteStatus AddRelu() { @@ -554,10 +556,9 @@ class MicroMutableOpResolver : public MicroOpResolver { } TfLiteStatus AddUnidirectionalSequenceLSTM() { - return AddBuiltin( - BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM, - tflite::ops::micro::Register_UNIDIRECTIONAL_SEQUENCE_LSTM(), - ParseUnidirectionalSequenceLSTM); + return AddBuiltin(BuiltinOperator_UNIDIRECTIONAL_SEQUENCE_LSTM, + Register_UNIDIRECTIONAL_SEQUENCE_LSTM(), + ParseUnidirectionalSequenceLSTM); } TfLiteStatus AddVarHandle() { diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.cc b/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.cc index d8a86c6b..72f3d37f 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.cc @@ -14,6 +14,7 @@ limitations under the License. ==============================================================================*/ #include "tensorflow/lite/micro/micro_profiler.h" +#include #include #include "tensorflow/lite/kernels/internal/compatibility.h" @@ -38,7 +39,7 @@ void MicroProfiler::EndEvent(uint32_t event_handle) { end_ticks_[event_handle] = GetCurrentTimeTicks(); } -int32_t MicroProfiler::GetTotalTicks() const { +uint32_t MicroProfiler::GetTotalTicks() const { int32_t ticks = 0; for (int i = 0; i < num_events_; ++i) { ticks += end_ticks_[i] - start_ticks_[i]; @@ -49,8 +50,9 @@ int32_t MicroProfiler::GetTotalTicks() const { void MicroProfiler::Log() const { #if !defined(TF_LITE_STRIP_ERROR_STRINGS) for (int i = 0; i < num_events_; ++i) { - int32_t ticks = end_ticks_[i] - start_ticks_[i]; - MicroPrintf("%s took %d ticks (%d ms).", tags_[i], ticks, TicksToMs(ticks)); + uint32_t ticks = end_ticks_[i] - start_ticks_[i]; + MicroPrintf("%s took %" PRIu32 " ticks (%d ms).", tags_[i], ticks, + TicksToMs(ticks)); } #endif } @@ -59,8 +61,8 @@ void MicroProfiler::LogCsv() const { #if !defined(TF_LITE_STRIP_ERROR_STRINGS) MicroPrintf("\"Event\",\"Tag\",\"Ticks\""); for (int i = 0; i < num_events_; ++i) { - int32_t ticks = end_ticks_[i] - start_ticks_[i]; - MicroPrintf("%d,%s,%d", i, tags_[i], ticks); + uint32_t ticks = end_ticks_[i] - start_ticks_[i]; + MicroPrintf("%d,%s,%" PRIu32, i, tags_[i], ticks); } #endif } diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.h b/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.h index 8a1ba5de..41f41a35 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_profiler.h @@ -51,7 +51,7 @@ class MicroProfiler { // Returns the sum of the ticks taken across all the events. This number // is only meaningful if all of the events are disjoint (the end time of // event[i] <= start time of event[i+1]). - int32_t GetTotalTicks() const; + uint32_t GetTotalTicks() const; // Prints the profiling information of each of the events in human readable // form. @@ -68,8 +68,8 @@ class MicroProfiler { static constexpr int kMaxEvents = 1024; const char* tags_[kMaxEvents]; - int32_t start_ticks_[kMaxEvents]; - int32_t end_ticks_[kMaxEvents]; + uint32_t start_ticks_[kMaxEvents]; + uint32_t end_ticks_[kMaxEvents]; int num_events_ = 0; TF_LITE_REMOVE_VIRTUAL_DELETE; diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_time.cc b/code/components/tflite-lib/tensorflow/lite/micro/micro_time.cc index bbe3f1a8..2d74fdba 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_time.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_time.cc @@ -38,21 +38,21 @@ namespace tflite { // for a platform to support Tensorflow Lite for Microcontrollers profiling. // This returns 0 by default because timing is an optional feature that builds // without errors on platforms that do not need it. -int32_t ticks_per_second() { return 0; } +uint32_t ticks_per_second() { return 0; } // Reference implementation of the GetCurrentTimeTicks() function that's // required for a platform to support Tensorflow Lite for Microcontrollers // profiling. This returns 0 by default because timing is an optional feature // that builds without errors on platforms that do not need it. -int32_t GetCurrentTimeTicks() { return 0; } +uint32_t GetCurrentTimeTicks() { return 0; } #else // defined(TF_LITE_USE_CTIME) // For platforms that support ctime, we implment the micro_time interface in // this central location. -int32_t ticks_per_second() { return CLOCKS_PER_SEC; } +uint32_t ticks_per_second() { return CLOCKS_PER_SEC; } -int32_t GetCurrentTimeTicks() { return clock(); } +uint32_t GetCurrentTimeTicks() { return clock(); } #endif } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/micro_time.h b/code/components/tflite-lib/tensorflow/lite/micro/micro_time.h index fac9069b..7a8ab455 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/micro_time.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/micro_time.h @@ -21,14 +21,14 @@ namespace tflite { // These functions should be implemented by each target platform, and provide an // accurate tick count along with how many ticks there are per second. -int32_t ticks_per_second(); +uint32_t ticks_per_second(); // Return time in ticks. The meaning of a tick varies per platform. -int32_t GetCurrentTimeTicks(); +uint32_t GetCurrentTimeTicks(); -inline int32_t TicksToMs(int32_t ticks) { - return static_cast(1000.0f * static_cast(ticks) / - static_cast(ticks_per_second())); +inline uint32_t TicksToMs(int32_t ticks) { + return static_cast(1000.0f * static_cast(ticks) / + static_cast(ticks_per_second())); } } // namespace tflite diff --git a/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.cc b/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.cc index 53b3806d..fd84370a 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.cc @@ -17,12 +17,12 @@ limitations under the License. #include "tensorflow/lite/core/api/error_reporter.h" #include "tensorflow/lite/kernels/internal/compatibility.h" +#include "tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.h" #include "tensorflow/lite/micro/compatibility.h" #include "tensorflow/lite/micro/memory_helpers.h" #include "tensorflow/lite/micro/memory_planner/greedy_memory_planner.h" #include "tensorflow/lite/micro/micro_allocator.h" #include "tensorflow/lite/micro/micro_error_reporter.h" -#include "tensorflow/lite/micro/recording_simple_memory_allocator.h" namespace tflite { diff --git a/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.h b/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.h index 6b039c03..0667287f 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.h +++ b/code/components/tflite-lib/tensorflow/lite/micro/recording_micro_allocator.h @@ -16,9 +16,9 @@ limitations under the License. #ifndef TENSORFLOW_LITE_MICRO_RECORDING_MICRO_ALLOCATOR_H_ #define TENSORFLOW_LITE_MICRO_RECORDING_MICRO_ALLOCATOR_H_ +#include "tensorflow/lite/micro/arena_allocator/recording_simple_memory_allocator.h" #include "tensorflow/lite/micro/compatibility.h" #include "tensorflow/lite/micro/micro_allocator.h" -#include "tensorflow/lite/micro/recording_simple_memory_allocator.h" namespace tflite { diff --git a/code/components/tflite-lib/tensorflow/lite/micro/test_helpers.cc b/code/components/tflite-lib/tensorflow/lite/micro/test_helpers.cc index 2adea777..2411bbf8 100644 --- a/code/components/tflite-lib/tensorflow/lite/micro/test_helpers.cc +++ b/code/components/tflite-lib/tensorflow/lite/micro/test_helpers.cc @@ -110,7 +110,9 @@ class ModelBuilder { // Adds a node to the model with given input and output Tensors. Node AddNode(Operator op, std::initializer_list inputs, - std::initializer_list outputs); + std::initializer_list outputs, + std::initializer_list intermediates = + std::initializer_list{}); void AddMetadata(const char* description_string, const int32_t* metadata_buffer_data, size_t num_elements); @@ -165,12 +167,17 @@ ModelBuilder::Operator ModelBuilder::RegisterOp(BuiltinOperator op, ModelBuilder::Node ModelBuilder::AddNode( ModelBuilder::Operator op, std::initializer_list inputs, - std::initializer_list outputs) { + std::initializer_list outputs, + std::initializer_list intermediates) { TFLITE_DCHECK(next_operator_id_ <= kMaxOperators); operators_[next_operator_id_] = tflite::CreateOperator( *builder_, op, builder_->CreateVector(inputs.begin(), inputs.size()), builder_->CreateVector(outputs.begin(), outputs.size()), - BuiltinOptions_NONE); + BuiltinOptions_NONE, + /*builtin_options=*/0, + /*custom_options=*/0, tflite::CustomOptionsFormat_FLEXBUFFERS, + /*mutating_variable_inputs =*/0, + builder_->CreateVector(intermediates.begin(), intermediates.size())); next_operator_id_++; return next_operator_id_ - 1; } @@ -274,9 +281,12 @@ const Model* BuildSimpleStatefulModel() { const int median_tensor = model_builder.AddTensor(TensorType_INT8, {3}); const int invoke_count_tensor = model_builder.AddTensor(TensorType_INT32, {1}); + const int intermediate_tensor = + model_builder.AddTensor(TensorType_FLOAT32, {0}); model_builder.AddNode(op_id, {input_tensor}, - {median_tensor, invoke_count_tensor}); + {median_tensor, invoke_count_tensor}, + {intermediate_tensor}); return model_builder.BuildModel({input_tensor}, {median_tensor, invoke_count_tensor}); } diff --git a/code/components/tflite-lib/tensorflow/lite/schema/schema_generated.h b/code/components/tflite-lib/tensorflow/lite/schema/schema_generated.h index e5ce189f..d30dbfe8 100644 --- a/code/components/tflite-lib/tensorflow/lite/schema/schema_generated.h +++ b/code/components/tflite-lib/tensorflow/lite/schema/schema_generated.h @@ -397,6 +397,9 @@ struct GeluOptionsT; struct DynamicUpdateSliceOptions; struct DynamicUpdateSliceOptionsT; +struct UnsortedSegmentProdOptions; +struct UnsortedSegmentProdOptionsT; + struct OperatorCode; struct OperatorCodeT; @@ -875,11 +878,13 @@ enum BuiltinOperator { BuiltinOperator_MULTINOMIAL = 149, BuiltinOperator_GELU = 150, BuiltinOperator_DYNAMIC_UPDATE_SLICE = 151, + BuiltinOperator_RELU_0_TO_1 = 152, + BuiltinOperator_UNSORTED_SEGMENT_PROD = 153, BuiltinOperator_MIN = BuiltinOperator_ADD, - BuiltinOperator_MAX = BuiltinOperator_DYNAMIC_UPDATE_SLICE + BuiltinOperator_MAX = BuiltinOperator_UNSORTED_SEGMENT_PROD }; -inline const BuiltinOperator (&EnumValuesBuiltinOperator())[152] { +inline const BuiltinOperator (&EnumValuesBuiltinOperator())[154] { static const BuiltinOperator values[] = { BuiltinOperator_ADD, BuiltinOperator_AVERAGE_POOL_2D, @@ -1032,13 +1037,15 @@ inline const BuiltinOperator (&EnumValuesBuiltinOperator())[152] { BuiltinOperator_RANDOM_UNIFORM, BuiltinOperator_MULTINOMIAL, BuiltinOperator_GELU, - BuiltinOperator_DYNAMIC_UPDATE_SLICE + BuiltinOperator_DYNAMIC_UPDATE_SLICE, + BuiltinOperator_RELU_0_TO_1, + BuiltinOperator_UNSORTED_SEGMENT_PROD }; return values; } inline const char * const *EnumNamesBuiltinOperator() { - static const char * const names[153] = { + static const char * const names[155] = { "ADD", "AVERAGE_POOL_2D", "CONCATENATION", @@ -1191,13 +1198,15 @@ inline const char * const *EnumNamesBuiltinOperator() { "MULTINOMIAL", "GELU", "DYNAMIC_UPDATE_SLICE", + "RELU_0_TO_1", + "UNSORTED_SEGMENT_PROD", nullptr }; return names; } inline const char *EnumNameBuiltinOperator(BuiltinOperator e) { - if (flatbuffers::IsOutRange(e, BuiltinOperator_ADD, BuiltinOperator_DYNAMIC_UPDATE_SLICE)) return ""; + if (flatbuffers::IsOutRange(e, BuiltinOperator_ADD, BuiltinOperator_UNSORTED_SEGMENT_PROD)) return ""; const size_t index = static_cast(e); return EnumNamesBuiltinOperator()[index]; } @@ -1321,11 +1330,12 @@ enum BuiltinOptions { BuiltinOptions_BucketizeOptions = 115, BuiltinOptions_GeluOptions = 116, BuiltinOptions_DynamicUpdateSliceOptions = 117, + BuiltinOptions_UnsortedSegmentProdOptions = 118, BuiltinOptions_MIN = BuiltinOptions_NONE, - BuiltinOptions_MAX = BuiltinOptions_DynamicUpdateSliceOptions + BuiltinOptions_MAX = BuiltinOptions_UnsortedSegmentProdOptions }; -inline const BuiltinOptions (&EnumValuesBuiltinOptions())[118] { +inline const BuiltinOptions (&EnumValuesBuiltinOptions())[119] { static const BuiltinOptions values[] = { BuiltinOptions_NONE, BuiltinOptions_Conv2DOptions, @@ -1444,13 +1454,14 @@ inline const BuiltinOptions (&EnumValuesBuiltinOptions())[118] { BuiltinOptions_RandomOptions, BuiltinOptions_BucketizeOptions, BuiltinOptions_GeluOptions, - BuiltinOptions_DynamicUpdateSliceOptions + BuiltinOptions_DynamicUpdateSliceOptions, + BuiltinOptions_UnsortedSegmentProdOptions }; return values; } inline const char * const *EnumNamesBuiltinOptions() { - static const char * const names[119] = { + static const char * const names[120] = { "NONE", "Conv2DOptions", "DepthwiseConv2DOptions", @@ -1569,13 +1580,14 @@ inline const char * const *EnumNamesBuiltinOptions() { "BucketizeOptions", "GeluOptions", "DynamicUpdateSliceOptions", + "UnsortedSegmentProdOptions", nullptr }; return names; } inline const char *EnumNameBuiltinOptions(BuiltinOptions e) { - if (flatbuffers::IsOutRange(e, BuiltinOptions_NONE, BuiltinOptions_DynamicUpdateSliceOptions)) return ""; + if (flatbuffers::IsOutRange(e, BuiltinOptions_NONE, BuiltinOptions_UnsortedSegmentProdOptions)) return ""; const size_t index = static_cast(e); return EnumNamesBuiltinOptions()[index]; } @@ -2052,6 +2064,10 @@ template<> struct BuiltinOptionsTraits { static const BuiltinOptions enum_value = BuiltinOptions_DynamicUpdateSliceOptions; }; +template<> struct BuiltinOptionsTraits { + static const BuiltinOptions enum_value = BuiltinOptions_UnsortedSegmentProdOptions; +}; + struct BuiltinOptionsUnion { BuiltinOptions type; void *value; @@ -3020,6 +3036,14 @@ struct BuiltinOptionsUnion { return type == BuiltinOptions_DynamicUpdateSliceOptions ? reinterpret_cast(value) : nullptr; } + tflite::UnsortedSegmentProdOptionsT *AsUnsortedSegmentProdOptions() { + return type == BuiltinOptions_UnsortedSegmentProdOptions ? + reinterpret_cast(value) : nullptr; + } + const tflite::UnsortedSegmentProdOptionsT *AsUnsortedSegmentProdOptions() const { + return type == BuiltinOptions_UnsortedSegmentProdOptions ? + reinterpret_cast(value) : nullptr; + } }; bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *obj, BuiltinOptions type); @@ -10659,6 +10683,60 @@ inline flatbuffers::Offset CreateDynamicUpdateSliceOp flatbuffers::Offset CreateDynamicUpdateSliceOptions(flatbuffers::FlatBufferBuilder &_fbb, const DynamicUpdateSliceOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +struct UnsortedSegmentProdOptionsT : public flatbuffers::NativeTable { + typedef UnsortedSegmentProdOptions TableType; + int32_t num_segments; + UnsortedSegmentProdOptionsT() + : num_segments(0) { + } +}; + +struct UnsortedSegmentProdOptions FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef UnsortedSegmentProdOptionsT NativeTableType; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_NUM_SEGMENTS = 4 + }; + int32_t num_segments() const { + return GetField(VT_NUM_SEGMENTS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_NUM_SEGMENTS) && + verifier.EndTable(); + } + UnsortedSegmentProdOptionsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(UnsortedSegmentProdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct UnsortedSegmentProdOptionsBuilder { + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_num_segments(int32_t num_segments) { + fbb_.AddElement(UnsortedSegmentProdOptions::VT_NUM_SEGMENTS, num_segments, 0); + } + explicit UnsortedSegmentProdOptionsBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + UnsortedSegmentProdOptionsBuilder &operator=(const UnsortedSegmentProdOptionsBuilder &); + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateUnsortedSegmentProdOptions( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t num_segments = 0) { + UnsortedSegmentProdOptionsBuilder builder_(_fbb); + builder_.add_num_segments(num_segments); + return builder_.Finish(); +} + +flatbuffers::Offset CreateUnsortedSegmentProdOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + struct OperatorCodeT : public flatbuffers::NativeTable { typedef OperatorCode TableType; int8_t deprecated_builtin_code; @@ -11160,6 +11238,9 @@ struct Operator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { const tflite::DynamicUpdateSliceOptions *builtin_options_as_DynamicUpdateSliceOptions() const { return builtin_options_type() == tflite::BuiltinOptions_DynamicUpdateSliceOptions ? static_cast(builtin_options()) : nullptr; } + const tflite::UnsortedSegmentProdOptions *builtin_options_as_UnsortedSegmentProdOptions() const { + return builtin_options_type() == tflite::BuiltinOptions_UnsortedSegmentProdOptions ? static_cast(builtin_options()) : nullptr; + } const flatbuffers::Vector *custom_options() const { return GetPointer *>(VT_CUSTOM_OPTIONS); } @@ -11664,6 +11745,10 @@ template<> inline const tflite::DynamicUpdateSliceOptions *Operator::builtin_opt return builtin_options_as_DynamicUpdateSliceOptions(); } +template<> inline const tflite::UnsortedSegmentProdOptions *Operator::builtin_options_as() const { + return builtin_options_as_UnsortedSegmentProdOptions(); +} + struct OperatorBuilder { flatbuffers::FlatBufferBuilder &fbb_; flatbuffers::uoffset_t start_; @@ -15773,6 +15858,32 @@ inline flatbuffers::Offset CreateDynamicUpdateSliceOp _fbb); } +inline UnsortedSegmentProdOptionsT *UnsortedSegmentProdOptions::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = new UnsortedSegmentProdOptionsT(); + UnPackTo(_o, _resolver); + return _o; +} + +inline void UnsortedSegmentProdOptions::UnPackTo(UnsortedSegmentProdOptionsT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = num_segments(); _o->num_segments = _e; } +} + +inline flatbuffers::Offset UnsortedSegmentProdOptions::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateUnsortedSegmentProdOptions(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateUnsortedSegmentProdOptions(flatbuffers::FlatBufferBuilder &_fbb, const UnsortedSegmentProdOptionsT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnsortedSegmentProdOptionsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _num_segments = _o->num_segments; + return tflite::CreateUnsortedSegmentProdOptions( + _fbb, + _num_segments); +} + inline OperatorCodeT *OperatorCode::UnPack(const flatbuffers::resolver_function_t *_resolver) const { auto _o = new OperatorCodeT(); UnPackTo(_o, _resolver); @@ -16716,6 +16827,10 @@ inline bool VerifyBuiltinOptions(flatbuffers::Verifier &verifier, const void *ob auto ptr = reinterpret_cast(obj); return verifier.VerifyTable(ptr); } + case BuiltinOptions_UnsortedSegmentProdOptions: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } default: return true; } } @@ -17202,6 +17317,10 @@ inline void *BuiltinOptionsUnion::UnPack(const void *obj, BuiltinOptions type, c auto ptr = reinterpret_cast(obj); return ptr->UnPack(resolver); } + case BuiltinOptions_UnsortedSegmentProdOptions: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } default: return nullptr; } } @@ -17676,6 +17795,10 @@ inline flatbuffers::Offset BuiltinOptionsUnion::Pack(flatbuffers::FlatBuff auto ptr = reinterpret_cast(value); return CreateDynamicUpdateSliceOptions(_fbb, ptr, _rehasher).Union(); } + case BuiltinOptions_UnsortedSegmentProdOptions: { + auto ptr = reinterpret_cast(value); + return CreateUnsortedSegmentProdOptions(_fbb, ptr, _rehasher).Union(); + } default: return 0; } } @@ -18150,6 +18273,10 @@ inline BuiltinOptionsUnion::BuiltinOptionsUnion(const BuiltinOptionsUnion &u) FL value = new tflite::DynamicUpdateSliceOptionsT(*reinterpret_cast(u.value)); break; } + case BuiltinOptions_UnsortedSegmentProdOptions: { + value = new tflite::UnsortedSegmentProdOptionsT(*reinterpret_cast(u.value)); + break; + } default: break; } @@ -18742,6 +18869,11 @@ inline void BuiltinOptionsUnion::Reset() { delete ptr; break; } + case BuiltinOptions_UnsortedSegmentProdOptions: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } default: break; } value = nullptr; diff --git a/code/components/tflite-lib_20220716.zip b/code/components/tflite-lib_20220716.zip new file mode 100644 index 0000000000000000000000000000000000000000..38814b7a89f3642e079c84b869bd0e5477294f44 GIT binary patch literal 804399 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%0D)>Vzkkg<~FddApDUw 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

G@jK&S$Uh(`E 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

ZbWoSM)>|=i9$BTpa>) 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 literal 0 HcmV?d00001 diff --git a/code/main/version.cpp b/code/main/version.cpp index a6add0f6..34b61171 100644 --- a/code/main/version.cpp +++ b/code/main/version.cpp @@ -1,4 +1,4 @@ -const char* GIT_REV="058e943"; +const char* GIT_REV="0b039e8"; const char* GIT_TAG=""; -const char* GIT_BRANCH="rolling"; -const char* BUILD_TIME="2022-07-16 07:55"; \ No newline at end of file +const char* GIT_BRANCH="espressif-latest"; +const char* BUILD_TIME="2022-07-16 20:42"; \ No newline at end of file diff --git a/code/platformio.ini b/code/platformio.ini index abf5731f..c26b91de 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -14,7 +14,7 @@ src_dir = main [env:esp32cam] -platform = espressif32@4.4.0 +platform = espressif32@4.4 ;platform = espressif32 board = esp32cam framework = espidf diff --git a/code/version.cpp b/code/version.cpp index 0b90033d..34b61171 100644 --- a/code/version.cpp +++ b/code/version.cpp @@ -1,4 +1,4 @@ -const char* GIT_REV="058e943"; +const char* GIT_REV="0b039e8"; const char* GIT_TAG=""; -const char* GIT_BRANCH="rolling"; -const char* BUILD_TIME="2022-07-16 07:54"; \ No newline at end of file +const char* GIT_BRANCH="espressif-latest"; +const char* BUILD_TIME="2022-07-16 20:42"; \ No newline at end of file diff --git a/firmware/bootloader.bin b/firmware/bootloader.bin index d13bbe16bf3fb2114c8a8c07791a34d7aaa8c444..3705e66f3a57742245f7f1d27c22f72ec0cc0f40 100644 GIT binary patch delta 57 zcmV-90LK6D(E;$$0kH8I2r@7_G&ediH?#Q})=nV@Ju#}IvsL8AhuB&2mJpL$RA`x4 Py1vvnbJ=*TM?%EqW delta 57 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

!JO#hdnCBrzjJf*&=|OUT^m%th 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 hl$OAJx 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 Q_q2Vq?b1}$_*JR@4{9;EE&u=k delta 415134 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≻1Zg(C1`S| zHp4=vtiXCOW&5MD@~wX=``5&#RA^F`8;=m;vvq5BvP6giSpFp!tb89qVE`}O#bP0K z24%(T0Ghy(7H({Wq@8eWVmu^mdq`U7&|sX1l1C!~Kf2B^iDgn%2x?1(&qzme4MKIg z6OpiHQ@F`{&4_T5FRWeI+~)8vr|H`k!@7j(im9u<-FZ`|Dif(Nx!L}nEzU@TUI2^! z&vg}5Ay^ZB0!I`UOLSy|H2Hd6g>}u*3dsHIb+^>#9saBa!aRHu=ieGqc{u7Mn}@+G zRK({P4xdT#(7N!L9nc`b&*OV$eMGCmuFPi58MhTJ2{_{QCVNM5$~#jmgF0rx#!KE( zXSa1j7mu!CtU)UUUu&fnj?c*yoQIh=t&`5q?v0iC4WOMv8uvz>-py{k8IuypxIqQ1 z={C1L&|UNNb&~^ zrAi)im9f^WG>n*yb$%ZcB@zt86R=^zQ>-_e>->k043XiLZotSLhUP5@7B?!;{9~2A zbzNdkC`0BC)=8nX%V{!dz;*P-%6<(UppGXZ%O0-EF7I>cP>ae$zm(>mX($$`g1Cs(9G=66zcvNG|d3=U)_#7jigJ%+d zu2!j3i|eGZppd-XiH3!Lm1(rN0mAWLU^tn!`Vv+ydeZJ+l5{h4^inY7j=#7W&djo& zgfDJ{Z|)O}#>cgl9_Tr@F3cafz|0$nC01&m!40gdgrdb?twkY8{59l1juQCewL&*c z-LpDLpJBIk28(2TT7@GCDs?)4_zX8Wh5u}tCJq4 zBY!_dUY$$c_rNS4Ve*dD3Obj(U(@Zjb|5d-B@b)`_(pkRG01a?%V**a)Rvpo;sKYu zmt69C)Ja#FydH|YZ(Q;&pu7quucB7?1)ENY-$jt;1q2s3 zjNW^-;ikwUfQ zxYy1yVvh|O!H$)Wf-d<=xQf&9m=s{=Hv9X@hrxdg_~#$?Txh+%!eix#SsNcbbu$fwbs1QIM{_Hjs&a=Mg|H!q5x_agW{iQhTJx}{fHFPuWp1I?b|9rP^3G&aogsj}`m<&Xjqd~Y)ge;Zkr*Ge5A{DxBwh?QB` zf!>lIRx0tAT5L4LZ7fou{0(GZij_)U;!4A=b&?L#@Rky9k(Ho)@JxcPNj5@8gaSKn zbj27u=^-rjasi9a1*}jmw-%OcI)go7E>fG7{W5+cI5{$#o zd;^Nc+2n%S!2TX=$=7-Z2XcVbu1-1)A^qh#j0`xq3yR#;P;>88s-e|d3t-|bl+4en zg}qo6RUwcP1nZZQ&pwayxd%o%UY?0TX4V1+Se60Dz&ODq7{jN+Gf7T?XTAte958bD zhVi193~wASa_G1K4n7GScgP+vT7UiqE-l(lTYpOe`Y>j^UAo)Z4q+UPTB?|-Sz^vdRVUvn5g1-G7G4|S# zrU*1ujRcwH8dX%85XSV?2%-44^`3>JVj-N~{*H7U&<9djUDUMwOW2VHERd~Ik6GeA zrKZe)LJ0~aK{j(kK_TeBhh89^qWLTMA$6R^H8`ulpkf=Fp5`Gu8X^32;Fkv>3y;rG zZcr@_;<@&)Nu%{FxCN4@TP~1b6OY{~=syxApYC{`Ta6isZnRZ*aEbX~^aH36majP5l00 zV&hLR{&Kt^j6ivP-5^`VK{HEreL`R}f$f7d{?nhtfio?-GwJ-mnJLDYpbVYe7*Juv zKRXnTU>JJ}k=||6+7~H%S3jY22H@De|2ts(v+4DHbet-CG09#idFxpHUcEPDk^Pjv zkd6{nx>MR1+*}RnfG8-gpbqL#$KVqY{)h{H&l3?lN7vO8e-AZ7r{`*k-|%M<(VpD# zG2AYfvd0@RdcL9j-{1c`6D1g&9$bWBjj ze+nx6Z$a`c7NJ`x$k4Mz#=q`D&Sl8Ad5FzK9`~O;&UpT33@iUsQv_l2Ranb1Ad`Tm z|;<3ia23w=ywgo z*hfl%5B-DP>OCWN9`@Div9$#z?o69Q^)AI%dS*rNc?h0524ecdWWQv-s4Ajdy|5}YL!n)u{`h})j)?qTU{bUbWyxGr4|>0WcutSG7+wiw_buv1OxEZgX%BC zZCq}2*k#hC&0jOmcO6jGbr7oZ$xNDY85Ui6y81E+GD8>tPWz``vq{%y3fE_XFpI9} zeUs-0SW192*L;7DA$~pDlQ3N<3M8;j)l55?n$iK4I^i%34-Z zPWJ)JQ+#A?r50LD{l^NI4 z(5tZ2YN2C+4qN}zuadr={h6?Ey7ejv^W@k^H~RHe($BL4`{+Ph{Qw_2_MxLs|3F3s z4w;FnPPmXPL@<~7g0C|;FiUDlJyf2HD57)G86&u=)Ds7xu<5noF=&G*H*fqe z86?Ky-3Ds4L_SYF>j5YBJmGK+a0uRX*)`J5T$w7UQ8BQ}q+_Y_3Dg=I>+Bk3s>K1{ zQ0f-dU`ru7poZ}iurP4=3>D*Rqoxz{EWdZL^=HqhX5M*;WYsPO9)D za-e%hDt}xN!_PM>a=2qm4nL2{;g4ZWjzc*jK0~><8cTb`a>wwmrwZRRVU?tc7!)}( z6e#|nqH?;T@C#V9^h;IrlTg1XrXM~-xhMdIcbw&*N@MV{Vdl{Jck^;83 z<|Rn5VNAuLh{g|nj8+7*EoY<|sX}QJ-lS9!!z11_7v4?kdGotXZE8QdTSM}_Oe z&m5O3ywZd*CRN;7!*-JT^OIaLv@0MlC`#E8BpgA+Fa{Fl(rHX!-buHrGk(&LR3Wno zuV<=gZ^Dar;cZj!o>%a;nGvur1MI^9`v73liQq943r8N0iZM#vQ%4WhNL(sfZPO4K zR+gc|*#hCjo;AgBPRWo8{OFzV*qefP@m8ng*W@>@*^hez{9>z}l5Z-MO7ol8Gz_|| zN<5%)wPB-bU_pYlqukk=vD=72!Ae{VvHrrcCatIq|I%YL#1H|HFQAp#tB##sk5_9T7tudTqTs zTqz3EvO}uFqj3)s{KQWosj)B)14vjuXM-@Pjkv{MwoFkx`AC%KS98Jdtb2U@aV7Ru zHC1rLK?~88^I5L(16zHyj`BqN}WpQXGTCQ z^J9=;KNTTDEp>fG?I{#fn!grW_h$kj8DfIW`JTd3`qvH8uk&*$ApA-)TBX7^Y&20P zPq_=~#5K~wL%n`7DdMr`Ul>xrYJ8yAUukZ($FWZB$A{j{s3WbD@SajBfSp zb$b0K>Di0x21axS9+_3C&U@Bf*#~#Y0bqqmC%z2Z0HW-lrSpWPBprH-^oti?L@NBD zxTr@e?B-Tdsp3?6+#c~klbVM;nc5Ri*)WO zuKrha^n8pfI&MsS1B=cZw@F^QSXd*~C)=&pp#vLRQ(+4Q=TQkhMq&!WG|?XM_lwfE zzyVHvG$S4c*KZdgy{(5MEzk?&b_y|?d0Bz~*Nf6=;0GtKfB+9qzrPK$*KcF?NtMZ% z4be)Q6eZuj$nr?O3tC0-XHYl!G(0m!cv>Mahi^na1@FVq!*b|22M+#oaDeLaNz9tT zyR=%JUV1B88`nB+4_3OKHGz|2y)i%ZL3(fA=h4O3x8UpWXuENyT$e)E{X#m=Sb$2c z)ot^>V$3LSbI+Jw>Ek&3QuX@eqGXsqNXKH=EgD$P>gv5Af6Ki#0!u5Q3(}P5?nA7! z0Vg+}WzT03BIZdH_YrM%hs5al)Ea3XqzR@RoqPw*gN|S+F#~8A!Je$RW^&&_s#a9KS~ zVVwsIMAmU9^9YjRs&|~HdW?x$C8b>T9_+zW0wiEO_$p4OQDI-C$u3YpT}L^1Rn;oR zpDY7>72ZTF$!lSgLmpJSb}rn)8aZUP!Bk8$5XD@``?{2LFvngJyPP?8M;4o_es)SR zkYAwiV#bs|JylYQe3}qD97eA-Vp_vYU&s;oIuc9WfoHBv&m}yb*!PL@WBV!Bp|uG@ z(swp#Ce2hOh})@5V|tNwKtVdSCfxI+Aht+-e)mq9y{7>0!Y`-RoW-7wKy?kY z!h)bv)M7>hG0PF1RcOho(3Lqta6qL|S*i)J?m+?g9wb0Rh)V!eWpbpe)_DsO$kMmJ zdw1=)slZ-H``{>n-jHtm?wuO7obf(=%EZ=Hg1!7CvFD$>&psoo(8uClf!1-@CKQwJMNJzO<wDJO#VM-2W z`@}^Q#4=V$tu6ugKw-%#B^`pLih^|Mx_8V&Bk4swddhSL7K#)W0w`5o@c$FhNFw^r zGcXCm?n%h|YZA&EAR#~Ze_HL^zAvF%L=y5vrxbrCVSnk{KfDKx z_MjL3z$vT{frN5CNyz7G654bdvZfgSJW}bd(`0$}4d^ zT3K30;OubwY$2YZRz}3_FY5jJdphswAJq#LR*H>`%caWx_#H4I%802 zm70GF?TzSD07TI>{8Y8OF#J?mSa`sp8#TN3Q0ym&|IaC9XJ9pfDd#7rzIyPJ~ z3Bt>LPXQPYcQyP}O;{xEUBPmPSvca654Gs#1`&o0}QZFP9Be-yhVJ@`RwSq^XOuDA$ZDV>SJ zIkN4j0rPGLdx0itj|8aiNuEHU0t-lNJKV!2cwz zyX$TB4x5=(`O?Z8E}vOGTl(ZKiim)jNNV+VQMEBQIoDnEC%f++W8Z~l82P}PT5iUh zxQl`WWDgrwJ0@$_9pU#vc+r%~XMb_eI`00FiQvB?piNlId?%=?XxE(!=AgN+b*S!i z)4i_qI+Me9`tghT+iB;MxGEliN6nJZ=Iv+rBVT%|&AYc*{)@y%zE-8T+q{Q*$Vdkx z|E=^hUT~REcPI7~9G$A|DfpBIz8~0A@URmnr>oM7PH$^o6-g0qMy*s?BfRZqajUeC z4eBh)6g|;gX~ze3x7!((aPw&2ble5MS%4bE5(CO5cidB`H>x?_9w$s3*(D78A zv2yc@D%HXQ3#xd_DT^mT6ei}+Hy2Kpvh^JAuX^J1Hb>>=9aTI92}PEk*K-f)`$(Va zxjq(te-RxPf(lL?BVE;VJx8f2RNX1pW~fK**0)a}ewzo|P%l|M&|0k*UTp=4x&zNh zc}FWvAbt^zD$PBgkCrAGxUNtu>)O)fj;}g{{iyo<*v$x2pB>=2mTPUq&&h%_VsfnsRmqDr%KDEXIDn zqEMf*P~QTUwF~bg7hsYm0FyL}-LY92?F?ZPlX+w7o;6?sZt~Dm)p6MNt291&Ze;BDxFpZwL$B6HFkCEKtJ|i!fj$g(!daPZe zZtaX-WQ-OOqs5F->9c=l1UGnuDfDnF+muO(M73!bq5!OwjKF9jFpYw2iwnPqp)725 z?a7>g+@X03WjbFM>SBgEeg+Nrq-nT2tE4~^*KvH|KZTIz5=DM4gfMC8M@4)m7bV77 z2_YedX@ns5Y=$vgs&(h0dZ$pdwti3(MDTRsj$%@DC){q#0%?Q)$()}~q~ts>ce}@2 zFuDlzV+5{E2LaD^=IT_2Aw6Q^dIhL$Fgw|*D}%gAkT>!q&cykZcKjzVIg^Q<`8R7* z9my!TGYUtD!a2(P+J>TZhLYZHZQ5#g&)WPA7wQdyS58hRYoE|?UDhtWIQnn71?562 zQ4~`DCIpZAkqN;#E4xXE&+Z8!k6|cd+J)dB6hgS{LS>AV_n8oT|0YDtm;V%kPaul& zsMeihvO;|z(kfhd2#~`1-Z1O#XmqD+WOBmEyB1~ zwx)$!jctJUHm2y^5?4ttdvfbb`BANQ+p6;9psKv`V5_z@B_2`RXdepgou@(OPvkg6 z6>CszNuN9d5g9BZw-zl-KRLFw#&(ES7@~nJe~Xt4*NgCSYv!2gc&T$o(|KDfb)wNs zl2ZV)s+7XOKtW6Ktr(zyEh}0HmVbrC9Y81+^h>WhXsT`Rd@AO}ccW?Z!qGeGO*oJ`I z8G*etVnBgI7%}M7N=t!;i5P7V_WhOkW1ht`#wXr$oMBzkI;#}if$L{($rCDDsZNxo zj1FAnEcIPT9jF}4;}73ov9pZYFRa4tOBJpgfv842BV{A2aL2f5BgT7N{{GE0%5)#( z!C0?@I`yn|gd|J<>A?A8_v#-VxX>{9%~n<~FCyrCGtEz`w@>D{-_dI3U9HMaDaOJj zm)Z#ch816@0A&5+B!~%roJ?t?5jISvimRq#!F0uuD!Z~OFRCbNT~bt*IVve2D(Oe$ z75s#382J)DugFs;x5nV0?%1fJq^P3NG1jOgI!JBMGTde5 zvAZX=`;bxPe5_7g`Jxjk#u3S6HX-Yp$j?r@DDI&Fq%zX|X|Op1k%awXNX( zEcnDcdDBlDvn%xlm<4wOJb$+!2^;E@b@H8pX=WxI=}QSJm;aTRl!tl0viiU(yPL&J z@sz&o$Zarp%afP06jh}eow%?;K6!MP%VeCDlqdKU)l?k$xCZGVKhqkQ#?Lxgr^kIb z9jHjc^0lHQu#ly_K#SE;+_eg4weg&lZ?yKRw}#bNt^3Vr=2mg z`PY1DNoUjy!mmi%4E2kXn7*uYlLr*yPO~b(T3BQCW0Rl4A5Q!a`equYT#fQDmP3o> zA5Yd;v2-Rw{vBSMQRAQmpN}v`6)dOnKb?fz93av>J&V=PPHN;nJ6Th4$c|}L>fO(4 z#ZKnEtcx;8vUqddN~dW=R#BWVP~#??2Dbo^5^(-lJGV&>a8u8Kn^4OX`H;BDc+$)* zPygFcT77{3y?FoNLGCl*qKvuPr?ti!NRZN7-khKRkOzg}T|!9T;!|nF18n6cu;t%n zY~LZa0-nTHt=8BI^bfY`9#|I}Ut~Ycx?Zqu1cQ`MlXXd1wY$bg{Tj;lgR<&(_m#D@ za~*RZHCpl30UC!42!^8xMnN$uJRlEiV{OK(u2;$kNIyVCI>nDqxCnKu2o z((#f8sHNic2Ez0{z3X>T8;c!fOxmPHE?jqOrz0kXd%H56pM`K_M(I zAwGr>14x_R=ySM)`0@cE)K4gRUtvPfvsivv6N0CIO5T@92rAkUAVaIS3&@S-D+M^> zwlaq)ehA6$xdnh{X>9i!A1-E|b835@(tAxbSa(H79e0Ze?R(H-P_E|MdyVLO!aAB} z^{lh~t+NBHv%4V7pDM`5xS3&12)d{k>40Ph3T!{;*6De<@Tj{M^I3r%dueI$?l!0L zgY>X3*T3L9VpeSwo;`_gFx={s_Avjluz(7!)ACIMIxRPfyI~}2E)#fHHYV(j5|Vuv z2CCInC%a#f(%mfvj`L@swK zZ%D;{TsZfdCJ6sH2?C>G1E?R@txJGLHsbGOy`?5Uu6Gv`eYEVc&*|^tSwKAX66eo_ zly)F_8{S}5Lns#Ij>hd5bU?xNmKtkPMQn&=hPaY=qV&f$hX7waMmY)nDT+jxKhiQ` zy>PXq-Z~l`b8C|Pnvn+88x8)5LB#=BA;>Mt;J8FQy<8`WIU2aD@ivviO@b; z9<20Xf)uwCs=ZHWor{n>5}W+SN5;TZ;qJ zIV^S^K?LLxC%1(5XkY9~eM9xUi_$xcQVpZDfx??0Q&}PHWaFb5b7^59hsCb{aUtwv z2==Mae8vCC`9*0j<2;CQ9`rw)Pq_%KVT9H*&a?l)d7#F*Lsu?ngxm}S+GQXvV;E0O zrEn&NbJE~%Sb-TRoFJlPjfD*6F-A32D(K4jFPt?Bqm}p9oo+lI?}a*mCl&&KGIDDO z=xt#d%e@ep%J(9fclNER&|&#AiU>KzDOL>wzuie1JIYk3YFJNeJY$&67=}w{!En;3 zQL6^inMq-EY*8c@y7E1UncV&4&M;8Kvfsmj!eFPkpHQ*j`W{jKi*_}l7}XJE<<5-g zgx-HAO3lTNBMMZVh-@Wy?01l03Poevp_PjaBnOPV@l(pwBgO6bM~ zbdl{Y&`JjS0ps?Z#w}y#Ke-8i5UP3|+^X*xPe#qoxG@%rowzL}YWH)QdX?}5>3BEJ zx1YS7;7O}z8PAspq39n7mo*tXcjrR%k4ur=xv{0oa@P6W-}Eq!5I|IUBuCCY$-03i zR_dr;u)FXh6ZCwGHc+_nq%toDIe^bONnM#pArly6H{(gA5FY~NY(_#hFcPvmNbqNw z2>-z|Qut3x-E?HbNTK|sl0%eaP#{X`1dS5!Y*8|ak~)b|;@euN2;}wT1m6=So}Q8F zcP;(0ncE&uG!@E2NGcV=Kz&I8>UQRjFl2la@h1OJtwtbRgff0&SF6lvp4 z{W2v&YUlxnx+Gog!FB5|9|cQvQVMmUd$Ti)w=%4^LP8>9^a=J`IQ|=MEW6Lhh`6P* z?+D!>#q{JNItbloXp2rmpOGH!$%PIV#<(Efu4-VH%7tE^0y5r)g;-b}dX2&%`h`z; zzm-sNOT9B)Ll%prhMru4*K7kOL0`=Z{Z8r}!ac5kNqR1XOVGa~HH2`(^fu`({cV+o zgmR1Y6D3pOdYA(1#kC*gm(gSURdO55j!xtA(7P=;1grl81#W0BKDsvown{;=9`|7@W;0<*2j!U2MLs4cVb zhIHRb=`PSSQr&`Qs!Y!Uo}MM@<`%H0HYo)vX}ICVmfmjh38N2KKX-p~vcdZKZF^{> z@S{u579X7y5ytf{g+&x@3e2N8&n~0Wz{^jp!2H~{;_{NU+YKqRQJPL6-LcOFy5p!9 z;o~-?^8>oeKROkQrn`Krg$>Nel`S+dQy_o%fbOf9?grAGzscYt`8Qjpumz|5`}dW9 zf+;_Wl*fhuO?OpB`38%yQ)r)vwB6Vs$+y|`YbLW@&8l)cyt1LhWK>-a&!{f_cgcK!VXZgeUQ z*;)c$(3BKjVF_0t$PXwvoGJNHHc6;zN~&91n2xIbzK#Q!jyFm(nUa5HY6<)ZlnE5* z8L2*uXR1uk0-l~F>S9evf&QVSx(H<96|c3il3{ZT!V6mh+>N;hdk^i0wT_^rzKUs1 z)SWQhF$jZ#Yy&Gtgy#XR7PkZwzv7nE6DyK)-BKUV6*AbO%%soTUU^nhcrIvwaL`$Y zksG4*avPO?f&2-L(sPWGTuzjVAYh(79_q(Vb1<(#lgkYkIkVC|hwU2uf#E zUCP32z#i8mSWS5OEx~i?Oj;7-`L>Yy5NbbwMSTlasY0KpH6E(~%TFgBxaBD6^V=Wv zGNeeQy}6!)I%Oh-byQXuOy#=7=7IP+u{?SyzB+2t2p$zHfmI@X)(VdOVWm#*~Y ztfhQe8#yXG>wen2MJL0PO@(FPE2k4*fu51-#FivCUBG)RC(!xi&$KDM9(0mQr_w`n z68TfjNo1rF%Lz|C;3O{)2ZhVFmm(|d*Sv&Zpm_=Z-TRJ4C{7fA*UBKaj zmJpCgaDa-sh|z#m7cj3a6=sr&qnTNk{edIofz8ivQ@)*CPi+8sE6xM3b%o7)WM%{FcMk=Pf;PlQgkZG zIH+aijTCk)bSdhwA9P6uOU|=iac24B=6JLEqEXp5xxPLb_7xWsBI~m7txyt-MPCvF z4Gw&kvq%)RKdI2arP3j!7GNkV4`n_2IBFAF#VD*XvIF1bh?bmZjWt%z_S$51OaU^4 z^6F$cCY|mG*V|5Jh~H&^F5Eo41wAWuy|LQJZ)~PC?$bgW1M&KZF}FU)9sXKvR3}Rf zeYt3Tj^ymiB^tp~8XdunDOKxR>?ibCwP4s##rMIw0wJ&^&MerQ7n{`*qmsq+I<6Nj zOt0fmC|v!lr3Uww7{wYA05#Tey%5_17Jg7JT);Clfsce@d{RNpacCsNVU5)${$ZoN za0)wLo%d-;3Z0VE%WXXA7dx3BP=Ix0F_ZaWq@B_Bc!pTQv@^<`TdGaMqd=D*YX&E| zQwx@5U{JhDRy(#>L#K4VQt)O-R)tQUB4zdC;*C6CAZ_W#4J=J0oCM?2yIGHV=yt9J zec#D^ghqc%hM4N2Z*0NRY?IK}h&BT*S1}nAbEt9;H`ZaNR}QLrdEazVAnhIQlaHGw zi(M&;Io_Fc{KpKjkj1|}>3Ca~ynedqOP^3(lr*L-#|;2dVt=md_)LPK^_sX2q9$~L z(52u}LwLZ4rW#vd&?m6k8!aV`uv;3I0GG_m!$QQGue-^1m@&-~4>(UwUFz_+b&Hh~XIN4HAW(Z#%_*u2Fypi^t@Y|6v%E2t52>%pS z?pa<;GdW_-H1O`lSp12JqRuQoOoGRtms(UdnxVkGCMUoUkS zgdv)9&JvGmQ|(DU2ZSJ;mU$6c|4UsM)|L1+C!f!d$yGwEUEUaFLmVB z8OxYDVm)P8`q)gGG?P+l6P^ijQ}gENtSw%+)o1F?C+j>R#>y6~Stp+rS8IX^jm^~_ z;w~cLxSoDIBTJmgoaAcy@d;VtGzw#dNoYEF)i8sI+X=Q*ThTj}R`ll7d5Jq1fgjV4 zkIE7y7XBgqcw82rJ6#+{H17LGiO24-NCa^ML7nMYgm_fh@oe(7aRl518_GQhFp894M#4I}5kiJa_CvB=Q zjt?@`#x_D#-W{zCv@wBIW^zKm)3?;${;z=szl$DtX^PK=%3Y+Y2 zCb`(sRGFCHOi?aMY;PnDPz6)UDbV%BGXQ*!sVU-t_?ck z8c}?kL1zFufj2VXa9#m$7F+kPb_4LY1WZ*>g(mO?HW^a`k!4hYv^{`Th2iQ3l3Ku% ztv+AhjP_Hmj6aBvCkZRBgLc9?(uJmYbNQ$iWiWW>3bzT2>Hypd;ICx|%0}X9CSN}$ zABqvQbi?_#AYVEx;Cq`aPm-;8Kr*?KTyZrRsR?DE8ZOW?fv4vZS;R9}5J4f<)+JNj zIg5z`RrQ7pi-XP2JT@@WS7NwK|EH{-OZ3&;2Gh{oecF7 zWJ4P6Xs)q(gM(@U5DGc4)G9yXx|~w^2@*-BX9AC>)mt1+!e6Fh3MIU&n2Mq}Dy7ba zPK~%0nq&JhLwI2pb^{msdtIFlr$5THg6sybsWkCW%X!BwjIczGHLxRRun)! zttjBTP*LznhHw@F-7ni%WvG6~jGW7FB4HOapEDE(eA+>B4(I$sZZ!8cXSUa*oGUvE z2!u|AHnO+$&QPweuRMn|Q|ut8YEOQ~;Hv9OJWwI%JP)I_KvlSMGQGsZm$f6rN2Sk( zaS_GeOjzm* z(@86JBAy8Xo=CTsq|D)5KSlTu75q7*yQ#guZlJEX#q zEYZ?U7K^=p(Sx9XXwEN8Yfhla z3)iH^$B*sc=i9;0OKYRK{NAQlb!Ufh7WdS~*yM7z)ROXIZ3E%hp@xPnI@`HPb?)-S zS&})1>*scIl2{(u3=_RQDRq$; z-_E6KlKQfXi#poH<%bEt1`9W_Mq?p_5DT83k#f)G;3>E+=a47*a^;JtX@=Wlw_Vtx ziQh*fT%bHPNqCW^MXE5enObqFv8)wXs_jYchJuidDhYATO8F#`eUnQLVT4PL&q$6f zOj|GUMNJg73yC7oGm@ugsvLl4f$77)N%ZKXZLKbejO`NTOybuz*Oj8+Oy!3@C{kK# zElw)z#)~eA1~)4LljvC%5hz5t1bX#Bffl(0>cj-1XCzP0RJkJwgj?K$=Qb2L+m|Mk z8L%wj2o|2q9>E2ULp4MO#+B9sXt2YpIlyidJ4`}5X6H6sjFdD<9)Nluy-C~T31SYh zt;P|L%{2SR@6}L`VHQhump&iC@do~a^y>(&uYsQ=b;2>>`q!k`IIcVQ{5T-qU+!Db zBo)+ohZ^M7(uO!d-%Zz`AJ?Gg{vA4}9r{VBUpxw}R%v29*QHcggFafHh#A=7V_+Nd z)oqZ6(ywzf1p1|^)i=1I!GX@?)VeIo_X5DOb^?w}$!zcz*72$ESaqyjZ#vkGcEn zO|@$HAAN#n;#=Pi<3IUGjXO-ab3v2!a4+PUzAJF2@Oo<+Ey>%hw;!gx=kk>%d#F$C zitzP)f(M7|8QO|Ng*BlT+bik#&fg?z;46RMM0$PS)cs05CaJy{!nZnUu;3^N1qwen zP1j1D!yGtYnKtYKGOI8(t8iRaVH!z5)oY+KDqX#U=96nS@#FEXj3wM|f;E~!K2V@% zB;VYWh4sSE1*40}PN{yn87Jep7N&{5l1@%O_+N4di|J|eyr5EpDFqFuRyNwX z0*whQFE~I8NJJAu5rA?4Z|4bRu{p<#&30^PR9+5XHYQBKx9PKz2Vjg%iYMtU-~6;W zXT28<_?D>4;QuA?Y4Iup%tYc8h~FSw%HZbh5C|?+K;5BD=KajzQYjI|&nY}_hjxM~ zzr>Z5{>>l~(^07Hr=Z0@BM*ZS^51x0ya+s)K8@$30&BGe!-2MRkS-< z5GXGh#9|UbTORgtQ^1(JHve>szkFjR7QO*ZtftQc+%cPg?a|uVn0(2NoE7IS?rUy1 z)noZ3boq$nZtIjT&pfYwlb>tG-6O&``O<*|&fog-&;s0ZGR4pkid;+%mfwu35PY>m z#`SWI^k)LsvtLI_GdhcBH;zn5wI62t(>%4v-Tri-5F%4SKr~8;iJX7wU6QMC(8T#; zET-K<=Qqz+VZ5490ui#w&@|cf2mvYIPo(e!3Tw;4Q?o+Hxvrg`d$Nn!(#BC(t@Op`t10hIUrAFs@mtng~*#-#w$R$LX0E#7)ImZEO-3 zHDm}e!n+tn0f@MR_^I2QH2KsdmvDWVaLU^E&0V} zc}sqs{z)^o1wjQ2^p)Tepb5+U4Gl)8&2J*bb(LOAMzdONJJD$EigSr-tX=Gd^ac6l zLNXWO!{0uEE34zFd8fr+mwJuiQVqu@u!_(yHid1I;iAVv=zI01diaD^Z{j}A^JBPV z^NtB;=h2X?qIS+iTf`N>5^NM>>?kg=MOD;ET$_34B9SogNLMYA<0qd1q$R zwiDI*wC&rxw#{F#y{4}Yt(Y=w_&C%{6G-@r@McVq>wyQ})t>5Oh!N7IxUt-X($N#{ zHIh!GG06**J`;pbnB=L#{HAiO7)sR!-xieDgcEuGefBj{nAfBXodCI!Pqap=FxRE& zLejLo*%qg1swS~SrDr5h&r~^a9{vg%Dp0Z4qAiJ48kDeTKp?ERPf%+pP=2DFJsUd| zsx_<1vzn9ua1WICA_9h-+2mp<7m{H{02hP%M1db6J)Ft~Oytiq!oQ9e_E2EkiFUKq zdO-A=A$EJY?emqFaJnFVon&}n3X;O}i#|s7*Bo;}xU2Gw} zY>}9SOKwuWz-I(e{!t{>+6kkZYTXg~x|9~3zCh8~37*uX>>p2otrS6r3-F0eHMRl@ z0#4Y3=xU=nstL_e15&oyD0D|v3plk~6YvB)iMkq$|43R$M*+yC1~rwqqvHOu7a!F0 z^;>G!rfLu28Mv?-T;4o>%9@X9+%_ObSMX+ty7Gj!>s;<4y_Lp=Jj{RAgrdNAlY6mo zUSL2qt~o4f2wW$^F!IeC6)U!ui@4lAXRN*`%rMVCxY`|UXZ4e&T;HrO0;l=1YFFTz zaL(z^PVAzhJ-5%0XExkqmu~)Jq4nOeY+-`G>eckmg$Y7;Y1Vko>dq^Fh;yVhUsUhCcW;5k7&$q_9@<09V1-3t z4}d@kaX3MpG1pY|aHPNiy~Sk7GJy*$RjbKe1?LIeKb}A+6U{}1A;Wj{j;Wgc#G!y^hx-wY8a6G5y#Tf3tdu4xDj6!Vf1(Xv2aV?~?9N9;!QtEM1RtJhDY zoOcEfPPyaM71xOGXu{ofuQOe!vBWw$jgO)BkGPxSAy{WZY-plOqV!qD@FOxN#X5{v z&$2YBIf&t-f>L37Q>HTwp*nY=sL8Sk%U5xZVye8esUC-?)5)-rVo$Oi&0a?G1>~~G zqMe#7xV6u+leHAsE;dREe*#2taS;VuAWzRo^%pAS1bPj!xzqBq8^ha0jYigQvyNmE-nKbS z{xu)00VkJ~qQe%6H5T)UGFW~Cz)1Nho+ZLja&nA-iCgJo#o>^>--nP9SEfzQ&*JuBHR(b2HAmFjiG)* z+_X*RbD{p%Lc3gf=K$_ruF)VzN;@*R;7-FIfQ+6d9n9eRmWHL#vJ+hdnJ9WPol`nhPy_K&u(1Le#q9U*hY-| zh^wP*IA{Y)`?E0^Gf4V(HurtcKPd+tHN)jaRtwn+15n-+c8U9%=wFsvr*P43gU2XQ zl3xzDu1+;H=mpy)g_)CPcap|V<+^v3`;=fJ zU_FUtF|S#V!Wsug8r1$J(z8>!u^pGvhlyJ9JuJ0O;ujRgQC_d*ag%+8Ajsv>E|GpK)C4GbR;tZ~TIK)e63Sr{OP3_`E5f;P?lD~y) z!ncr3^3Laa7=#ZbOFm~c2u)ICJ{Qu_hXC_6wL44s`P>Tq6H;qF7g5?6szX*osvjzo z4`_7V#d9Qcd)n*=X@0*;ZAyJ1xshyuX48hGafX1|Zrb(rza;_be@|}}PBl_9>VeZ+ z)k}@h`WT;ZL#)*z{Z;4QaqyuOe)$jNT6U|Ura~tSHCZFv%dMdYQ`WxWd3G>Yo)#M& zZe&aob(L0}WHnfF%;W++YEy7EkfN$U zE1%M5m;aFyXJ6uWlpn(Nake!n!jChgJ+rvr(iLN%EENW}r&F+l>4zD(j{XLG>$`b? zTdLT{Psle}+{Sj9a;9^g+fj^={^cORoy#xdGGj}3iupyMb=dr?%U`3Y0Ti{}Mlm~< zOLGgbXJgGT&eYAp*0i}M)d}|e$Bots{fj6Ek!p!_03b5rb!XY0z>OD?oWDESRFgqC z>)d1>fO|TJ*>r7UNCBQOT{4^Db5I;H;lR4b07)x%4t`g_i^RLfYdF=>J;AL?l+80y>O*w&PK0H^x>zs(j4gYrI zTsJRUmlTVE|9M9D(km!r9vTIz1I!lx(>^~5oe|MbiwK_5aLcI+c+{YDOu=D@_As6J z7YUGW#>loCmgE@t&>7fs#H3nt$%(7CQq&)2m@cx)MATW*nPXG}J8@_y^c~3;R@zSGbjP<_m zwZ3xra;c?=>#P6#mDyZi+GphFXAISD^*-)3R=p6mJRWP5#g8eP3VB9F2wA?^ym54y z;a86foi;v)4wi`u^`2B_B<#IDp_|1l?vWPE=EA1S4DlK>W1=p{M}OQlrl#U2hi#0_ zHby*2X@JDAUjj}xbgie;1t8;+9)ic4Kl zIXl{FLj%UQS#W2ii1ns(u#qf5`f?68KtDtJV-9DH&L&7pe`@uLSrndV7+^mAv85jz zZW6t}a#)*Dn@BHj1{p#_5&@bfO%k|(4k;A*H2T!&^eqv%uAN3v#OVcfZjeoklO%x~ z(6=AO<$URG39MMVH7C`*06nw56!&O-H=MTV_SQaP?;-YB~uZ-)5aN+aiC*X}VXXCAqrw2J;dma67)14^rtL#kE{FarTxpv?H9IwP5( ziebazN9fq;FTBM!DPn+mV_v2`InRnki6(IeMeU|zbW(0pW1mhEw-qM@4AGZabz`GD z+Utji8wh4&ko~)Fw46vh&UgUQWXn(3BbSyNrbhQhaoOwy=-QyrBOg;uVy_Pu%Ngbl z>$_r~2)EF+$q`i=1>1AU4d@H&P@cwYjy6oQZ62R6{5?a;!@8*YAu;0kC}c-_C=KtZ zUpQYg=L7|PZR3ke0&a9ge`sDwR(-dm`X#KR@OVi;=?nm;v}ZKTEK^K381a z{_acfbHw@W?>@C+eSPlNHsQtB0B-jETEXS09mFEn_gh?2eZsl=3CQ>L-M&^5c7@0b z2ylgWPKyutq!V1Y?WnnS^KRt-1EokP7WbOj6r)S3&qXQeCMFS7K!h8*zHUTf9g&Fb zz>a@)6UVxEMVPbd=fGO-=-8|!h#;?{Ml?GxoGXqbn3NMv*cyEcW3`+75!vFF$@Q+6 zYuS6L`=g+thdDfi)kNbW4kN;%FAs5`i_3RLS42N8;?iM&13*{>@YAvdDu}um1>({SsTMFs^6%mJk&tY+Wbz4py9pFWNUMqfW6D%2qgk0Reuh1dWkpmLinrsX!e2W3mI{lGw-^7GG-3I9ao=di zzR}9Q(d#H@@vj~y84Gns-2;-{a=y?(BXKQNSR)4G2CuhASG#@125~mUA?}d=NW@X| zM01D1Hzs?FyGEm>7K`2T)rM$eg%MReO7hRMEd~fGe3@;!OX>&7UuRR*D>$-E>@;Hj z^Xvv(XQ?)1OOG$&dPQy;ea5`f8JAvfji~ji3>4Ro2BSKo)oQR?_2OE3GvRP1=v-Tb zL9u70uNHCrgI7>|ly&HagX8zfXEJviD}C@rdM}f_7jr{;FD8JNJcDQ>Whx><1kdTp zoY5hTA$xxfi8fy?7#*W`6iN#gbKQDuArNIM1i9S7>aM#wd9)*EbYHzCi0EyUb}i;c z=u@P#i@E;#IH}{q++h7cDe+-$Y+x24o-r!{qwN)X(7ozA+7U1sz4eNRxgI?`F%d3e zvj~A<3HOye#eMV{GIWON2rE za3lf)%=|Zb%8H~jhRYpRUb_jVjQ(+SOO9LLm;BJ^Eq4IO0CFpVo z$DKs6C&ff1ore5q+9@{^?N+TJGZ|N@XBkuXOySeBvy6)a_zt2kW7G;p@HEHoiC`vn zrnnSbI8zhm8!+8nG&7iEOc+bhRW;G^Q=({MOss}J$WV=89S*Iooh+J2nHC(1*+z%V zDfKQ4$Js>jmh|gmT#v$Q^kGnAqVj$s{Hmf=OR1|z6CL{#HSfAe5EuZ~>9WGQ?erH_ zMyiUDax^63tnxb*?Uc*@-ky{2bO3! zl84Z$}D+Ic9d~Zz~tYm-Gr2E z2|LC@N599wOWIYF62-j~BfdjVRFMz46b>hS zoSW5s10$5d2wh#0=vb1NREW_V$LSqKi6E15 z#c6RHwaUCN+e(!nih*F!s3o{&m!eK!378B-a|@E#1a}Y``-IVY2y>zfZ=|0f^(EL zq<5GB7tYkYaiP*jOr^M%h)>0l1dUSak-Q%aiD!&;omkF|O%!9KD^GBN(Xj+*8IzIc zoueMDb4OcMC~(G`Tha_-KSEWmB)Iax)xbnY=ftQ&RuAz~!g8)l*R#|yi8q&TUX`4f z^!Z(MF)fv2qkD*EX~}XfO7ADVv7DP9c$EsJitj>{_Y<@d)nas9NDwbcy-K+8rRRvo zQS&y(o%LcfK`J{K%d1}`IKD_gIv%G;@f&*HH7Z-!M@K!85)V_P>DxBiBUA0Q-SHLm zpT%QDag({WaGT?h?evPB)5Xsi-Dfqr?A0(qO-fOT-oNhbddcrCBVu`YbTlz)**FE;Pvp<9m`gLUFZ}zk2QFg_M z7p2sd+(P|K>AjU)nE$6EfS{~q5}=g7=4cp&dx zcF`AfQiH^e3_TO*cTs7gzIl1n%Ijh|#SWlL$=ZwJbm`F3+^o`)QLw!F)3jV`u8#fW>BP>JUL*2F4tNs z2rp!3ah-Siv+K6FPE~K@TE$T5@G}@p$|PPp7f`1^jWUV-F!Km6inbSZ(T3ODwYLE6 zZDNc|&RbNPn|6^H7&y&2rx*J$GhG^~mC#W(gClm77{;uGAvEY#^R838NNB0noM+u? zDv#N>s%h{n9e_@0_8mUx+j6TXnBP#@_vxk{*Ik0@QEoX&ZH2;Tz?H!2&U1qG} zg3K-K{jHJ84r$dYuDkgtdw*@D@}l(CDlTlYgS~GVsXWKzEeF*#2b_$#w>``#|JIhX zKrhxZsPd7@N(Qw7P*`nh5A&?4FAy#<&hIjiRU?(hr0ycuJ7U6cC}}V1dYaj?f_+^w zQkl&NY$oCV<*eO$)J>c!Ef%@e`fBN_$d%8YKT`O%E!DdF@ziBGb9w?y%w(w6k%~W| z+G!L#CBqqT{gU0B}*mvOv) zzGPUTuz8QPj2CL#c0Z2X`go4u!MdAQ$;k)R$1Cp>vfWI`SK8+G>Tmlh-ZEWyAJ(!9 z9!b4Ca^}$dh^R9758{>G44w}EPWiEIZgOAS)p*MYp~hw1)6Wv{cMP~HUilXTrpY_g zskYR?Ic^;+{;5`J?Xw(T`d0k9L`GRN#=M}8)t*XAy!ZpXS3I$Gv4^G0@_=4@{EK?I zWj-4p@QO*?PjsnLMuW2{9`n)_2CGWiC{g49 zEwiI(I+KJ&HUB|aZ}9~NpY4KQ`MaYkUfe)d*bO;~Izu8X}^ap~5zGlppEI{k&x z!H2>uMx`R&W@8fC2(EWfS8*kymT;fij(D-8o!V%ELgS4}CJgnVWLm<&hq}P6D4ABr zi;F1I)sCi;X)u%4a5}(f5jV21HFU&VTX_<2AiayT2m=*XSUhVtm&S|JrQ$W%&X>jL z2Qd1m$5e@1%k}M|evxIjMx#STqoKc1 z>z_JTW#PM2Bn&zlryPi*{PO1?g@IUP{u+nzH1|pah+)9``s8@?=>_5u2Kri@ z@*<=5IjA)pMKw^7Azml_Xu%F|%yu*bxzZr)$P&zixI+AtAwD0clrh9_NQ}=QhN8xa zKM^Lz*Bo2psBTV|h~Z_z%MM(rGFr#b+2^ zdYqC({NB*T=&$agp4DBVDH1?l)iCP z2fjgrhHF%(_@d?jF&yy=?gBbU=)6#MuXMIYC`Iwv2waz3}A@gGh)bs5pkj~#jO1OUg`BDvudmK`Ub9- z{gX_Ht{v=gvdoA&siCafBrTRBw$Czn~b4SGje&CrVxn zH-=lqXGT=|uoZdY@6y?gm^Uw$!Z&dfae3nto46r*hxGO)OxlJ?3D0xs-s?srjiCcK zEkno_9fnH(dY&88vyt59C^~HzAN!B9aWm>;WkJ^D(6wsOG(uT#;o7z62-R){?a zXV44{XBu!~xc-B$PK$L+jn&GbF4BsvT<@H8;xZ9)V0ZFJMNft{Rzn-Dp`E{)9P3DQ zq3H<#GXvd+;D3Ny!%xmy6bNGNV7%5&-nikYN8T>+ed)$luEpRMD}D14O3J&^#h18$ z`L&REZ-rs_6IX4xTSkD&E7H!FIi-{pzYu$eIFlSelw+8xwiu>r_|<>KI9`v@RGmry zxr;aPMhU%i; zxDc|nEM#y^IT!k|bmSE-4ATR>1N&?&@0~lmckx(~Q5-_Nl$8*M^;VvW5hE#v=3>MF z?Azn)o8$2qODtl=J}h#H7P&O0;V-8c#-bK#QHx{P(5L8AxCrA&Sc(IA#8XkAnRL9= zv%X>pCSBabW{TK6FD7$Nj5sG|T9d`UXpVnz*J(eN&GGe_(`Dlgu`s4MaO0X{ulYlY zJ*Q>QPqt9YN}NjGe$-s?pFzsB82fQA`Q$X)w3whOWonFY?U*eG!OWZ(EX4cdSe?N( z8Lz?z$Lh?sEQI9Z(qpy^0?vpLKBCx3c;V+A!?_9*5K{M1+;|EJ$Lic|sT5+^V-b?) z9IH9*WlN^u`vf>T1{*nMAG0MOhEF_Zi>EIM$853mj{jlwKI)h)irz;Z6TcgBw$xJ> zY9%un>I|0HYrSF}gJZ;I@-o{1Kq-+i{7=Vh{U|svhJW{%Eu4Y_VuUJU*c&gxjAOQ5 z6d4}FS5ssUyztYHv41uCm@SxqqK`%O3Xfq$_I{$SalF>6G#pDDgJZ;6io~c>a7MgY ze2-o-yFjeF?w1W1&Ug67*ei_Uy9~(a@QG1;V$`oDiB%dYR3aoj0gG=^RDG`zsEulR z#i|t<0cQOVUNJKk9rub+ykbNXd8fFOpd6-{Go@f*i6!mDZ5nm{{R~XZ{Gf}OvGe$y zXys0{XrLSn*`sAV_eAq}?v7T2NCF5@*63FoURJT{!|0g( z{mL4>%fr|DcC&bH{wR9KmK1|-{C4|ScPh=pgE|D4uYL6j<@K_PQr+2duB_E(eOY*T z_bUT%ZLat(*@jslsnNUGZ%<27eW1m?L9Yv*lJt4VJpZ6_x4DO|p-tl_$^@E|*S2>G zH+~AuSrX9!SVE%Vmm4;}7F}KF3d4BYwgmilOmXKm4kTRj@QbhRD)KJ@Lh z<*Sh3@|v&CuHErp!rxmdeI{XNE;LFtWUh}+eRk?g!!=RfWTKc1y8lBK)>`?eESQ3+ zHk@@sg~BEy<{mVx>8pcS%a~YC)=bzQtRj~h6E7F>0|!UXfw?KfK+{VJn2?l_7AWTM3a zR&{r!nYvQ!9i&eIx7w8P(PG~HFFGc6!zrih`<=#$RX`sdEoN#!Ykopa;Lv4N=%O0E zvu5j)8vRh@7RE(S>osl2e5$kgslixZT!G7{k4Hz#ztOJD3nPyYi^k03|D*10;G(Lw z|KXX#a6lZBIlKr1%AA4W9T{E}L^_rdKw_Yx3##Sxc6uh|@B{l;BezNA>YsFX5pp$!emP=(S#i^?c^6K!ae1;F6HmIg)wVwI@A~4$D5t1Qa()j)pa|N0S=kj!tMC zcXW26=BTdm$+AU9H}3Y*_$8M`Emjy7I?_^dADSl81`B6}3e*<&)aMGd;Dj!q=M{*D zfPS(2>{0}z>4Fbs0WF3PTNl0B9`Huq1?-i@5zLGGP_qAAB`qZbtdW1)M#HqV!$Luf4# zj7*|Jx4dDLHHg+)(TfGv*4gMqQ=W~o9wxMAV(hS{BcwGS-C6sE=TRT+7YtI$Bu5n( z#8DW;2QY{;F^ErN5Oed6KDXOz`m3NmH`Lj&ie^y(sD}xx^W39n@hW5;OjL;PSYC;& zZoCq;5G4Y6qC~XG?X+EqqW@GH(z+Pr8@}-Tau~=5lyO1T65q!TEcy~U^Q1oMK=i86 zl3ty$ImppTP}yyEmF;jHK+kx|l_+h0de+TOdbQ=-?oM!tgWv+5V3|X2Y;mr3@r(k{ zGw}52Qv>PIpWjLEi9ULUd(#^?fSzKhliqnZZF!MhzIO)FGuGWnZ$=-zqPx>u?2u1B zfS&2NgC6~^TdIBd=t?^|qCWQVd-V=_bc&N+>hFx7%WdO#%|TE78sy8j>&wQ0@>$p4 zLC+fGq*q&>e|P!x4*AZHCJIv)LMDBuD-3&!N1>PQElOSBdTf|AmEN~eqHXZov~5YT z<*U*BLLDO|C@#VT*|?peN7L1G-bX(j7FYWowKUsPEZ!mhOrzzrdDfDy>clOp&7Y1g z`iOYH#OWU5?J!}Jv0INeFN`uu>=T`IU$J{$IHewP$4oa?(NKS4!^BagA%cJm!K#YY z1r4V>zw|9QMP|Uh*CoD-4&;4F4B0*iv^dPEkh$Nc+X>RM3B4rB_yf{U9J3wtk}37K zu6NkXXM5?5MenVG@xG1NQU|eZ1BfXuN$uLNz8|Btlpig%)jnEk$mh@x%N^rIuOS4< zO`^7Z>D|Z6Io}HS@#>x6Hg{h~hXxY)zNOR^ynJGw9t6BdS$FaR9wRq}o%Wl8dX`hb z+VXXGmoVQU;lsRyz4UTTzRj>-F#_w)G_2<=%K8jXk9LgT9LlKU$>lljL9garqKrx! z*0TkUf_Pp(>p7g5uVQZ89*J+>?qx@xFY|gbarEw}RlUYCH*B0kxRW%5n?R{&+Xs)o z-{oad>WA+fyTMM;#FOtWneTwHv%Tx=$U}tIBFY+Jr{(O(d`hjjgBl&%OYO0{Q`0;8 z@%kvcT4J8r_WJSj47x%lnl~nzag1xfiT2~D0TT^whBe-`-$eV8&u+4kImOSj)nuMc zGM^rmyM?T@$#oBKsNqann^pdV-6~!Z4Yc~-iSDralU;kY@QJ%?q0=h94{3?-dhi|L;ZpNn%rG{W( zK{@t5+f=miZOV8{bj;7%BidIiDS*MM*t~HQ3DFo~t+ru;Z-ldSLsac%w^qZBTJT%Z zyy{5-Lh)8W zlL3gFAAlG`5FZ9KJqv{RFF+&%VHz9Q^bD!-cOa60u*(^U!Mrc@*Yu4S5xrJA61qn%p#V6c~yj^cN0q zdKe7VmP4xCXkZk}yqX>YCiP!HM3E|wdo@iV2#A>*2}Ewy@TQ6UHBaO1a|F4jeR$IY zJZ2>@;lN-OY*3SGl=#pmBs>^O>by4sxvfI+$2eDz^L0T@WBF^ez=ROYV_r>3gb;em z77T=GsaI1XL7=xxav*X`q)l-^O!+GiED$y~SyK!UIpE%euUz8GebS~#AoMxU024$S zagjBJkt&nH{s>ZKrmQJsl=uh2S?+LB!=NIZ1qR?e5a+hJY*QevNJSI50R%BSLgNoa z3myFz$R{P&ppFlz15OnFq)vsri2AiFZJ+;4+ zUg}5prnh$>J;k3D4y!c8H8t1Xp#`^h=(0OHR6WMop{c~AlMcPDKb^kz^SAY<*+I|x zgDAVafG232VkgKyAYuTGS$EL0dO7LUmKWTepwkRK&J!#P;it3d)zI4V7e5g;Elz}r z{eaIP+9D%bXec{Tx$nvOSz*(oiO|8ZP_XZSFtrMs77)arfVfBy*%3`S1o0RU-vXgn z7SS}9AfW!H3#1K2RMRXyFtz0x%m^E)Gb5@go5!pG<~%UDbEQoW0W;-e=(ge;U`&6G zYMM+iSj8z*oFi9Fkv3%!4B@VoRQW0TwAZoW#=nZD_~dJ6Z>QAPDdL$qJPD%y*C^td z2-ukhsP&u=4V{nSCOAGISPeY2{x1gTsVzL{o=3MN7Twuq|;6+dm+hHkaxf zx2KeL+325Lvdi=AuLj22g>#ZKCfy;MRp^whq&)9l!oA1~=X^Lf1xpJBliG48wdi}w7C(?$ZbYJE1{hqTPugYMeLFSNozy1v zQagPw*}Mi)vnia^@?4@{u~U2Qc4|d;QVZ#&R(daL*Ww4vH`~I|4lT)a3AFd5nyi57 zKW_B=JE?V34$BpI&z?LvkebOg*+DJbCD5TIskc#6C*Mi!bT74gYROvzspbCNK~3%E z68*HjC;e`x=6xr%S|_#W!h7{3H;|g*P>REHU8AOqvQO@7SP0eocurnvUKZT`cusGj z9F}X!n0rm`!uSD}OYy6Nn)-7p$Nu`%c-&5{*OVN)gP1YTNi65C?@yOH%;a1UgXJM#_PHJysYq=MA;naU0NKU=$4szBEC%KaH7bdT~n|Mnc6vx~~G1q6TW6r$-iaLJq z)X(u0X{UhdBA#OZhjXjcId+C}-Q5OH@375Me(+W~-}J>esXa^OIA-{Qfy9hCcM|(q zSZ%+3=bWCr%uY?7-R!x0xV)JO&{a!z$5gYs)2ickPpuxedw#WM_u6Xxlbe?9#yvgm zR@^4V82Kvls%rS<>cnGG>!uqGgbaf=acD%{0ld(>KF;)vUN?Pn zobgh>hCFUIlq<|@;%uvQYPXw?h7>?3P5w znU}`dp4QQ`fpsvr0_aiZytv#II`xyz%2xdgKhlfdI`czurpI;G7f47C zxRif2l)qq}6qmb9XI<>T9c;?kVtyb_u~bKA_Eab8eGfKHNi~m)Q#_`lWkC2Id@p*9 zIW11HM2Bp1a{gA}G4q%>#bOmXUx%Ywp<FHoJ>gXatcSHGP^N6@y ztxnz5<>>lDw8ZZE)qwbqP$C%;5ST8WAASz-a_phhc|kmW zc-Z_kz67CD$M#)dG+|fkLFO-&is?FI<*nZO^n<`pFn_KzJ*1;21J7%G1dvadKUL;F zsG~z~*`+bI-xMz;D%OZkLg{iB4Qufzz}qS4*bg`LypnbDO7<_Mxk+i8q_bY{)mr1b zP*0KhpfY!&&UlFE9+^HnfOIv#sZ?a?)Z9%w;g!IxGw)N{)H?bp2W~oWOU-{*njX;6 z5B9Yg3ABsZq*P?;jQTJ#6&&rl;s?t7n$o1wsi~U+%iGFT+XA>~x8iM^wbet4hnIQn z_AQOs6k42CHoA1`CUx=rvRRw*ir22n+hjaSmJ=I4x@mds-@1roDXSZAkY2EQ-NIBe zZ&TV*bXHH&(VHrYivmjPDh?W|=`ycU-`#%Ip=IHvqjx7)tIM)VXYHO-mY=_Jad9-g zIR9uNTB2QWnL~xXg)kG$%apcJI{G|>ieaeve45chtUyaZ5F8m5Kx% z-O<~K`ct6g<{YIdPN)8uu;l2eYTzF>&r&LsI<=_}Zwvr_ka?QYG*V~u1D+=;hBD`w zCo6Mfbo8LU8FT^q7N<8qptMEl)Zg?eoVp%ANX_ZW+(@1Ja6kMG;6u%0l(ujTdq4aN z;Qh@B%G@wmwtn~rfgfj%QQ8zb^y zy2+ur*1^}Oos^N=K%mmZ>S*`t&g#aH>*PM*t5nEzMiyvi&)g6ELuOB2$dj6w{R$lM*Pkm`)x{qSc{-_?9Q*5s!% ze%XgtzkQ?rjLdu`RxwPc-VZ!4Z3!wbHD8Lg`M@&Xu;WI9!>#6vu_kXFouGHHIK4fV z+}$3;Z$fihtc}qbC--r$&Iev${#R_SM5oRLo^O0TklV~(#40>>^t$VI+~0sRn44m4 z_vz@rI&cSoD>5I8H4V|xZ{cEx4t);vD81Pls}Sqd$DNJ-2yDLD5^M9&(LeN7rq4nU z+I%QBcaV<$m-A+99R`Cv-~3jr!kug)z%z9f%BC}$V{NpKzU;7^p91%Sd2g)ARY!l^ zXM5>gT@Cv3Ip#NF6(Sv7)u)+7s6XCZ9&4g>>Sz1vtN#Rin0ZI6La0;E>4zT$e4zQ| zSX0kRb$mbkP~Zd1FT^UkSE|MR@ZUi(Bh1CIrp}dm^@V;K`#ye%F&knPw^m{n^eNS= zz(<+a#F}obRPX4A*8!hnUKy*nzEZuSAAUOUlg-OxO~0&EKiDY{ORXnwh^5B;H^lz1 zx!5|;dh{mFt8a?+Qnd^Ssnxp^zg@j0ma3a?kqY~6iT#Z);*a`qAn6hKW9_^N+$2&l z0*(4xH{#HkN6tUs&tE6!R2Rx_{>X!)e7~g0!+A|j5k9F&>gvdXB zMZR)uy(D<(##qEK4%0QRrNU1JnWl4^ddV;s+x1NDnR-bWWBNdm~7c03j7Rdrx5?^a{Y{lr< zqAmjql) zB3-^_S16@^Qy?zRatjy9Lh9ogK~geB*JGbRk?-rVDT#Aj<|WK=nLV1KjRI`LG&zBs z&U<+7IN#hDvAdjc+4ST_#w{`=i<+dG_+(|64_S+x`}4}(71bm^R$*JYyU5prTiGB{ z_`EJKc)9xKhi`r^**&E=**z(dGA`uyHDD*JJnl>bzNM#N#?O-aY2`u1(>Lek(qnouT;4odt)VLuCOO}>8qk_rCRJ!`2snt+*eHPxgKjT?Hz7l>Q&73X>c z-$OgmW4}t>4BylA@yg0aDb*2SJnKHei&B^Hi%c%|G`%>IjQ2|;D_$5`q>sdSH*MxI zn@3h`9$B=SV6c%kjm>fdVz*^(MzW-+qIl%;w`GbsnXs1i(X!!}u|wE`H)KaG@^T`v zEpEK|*^&B2%dT3sV%=|~M%o@Czkl7s=8bIq0uj)< zA=Zu_R?DBr2h~y7c^Zj%SGbWMV6~~uBhxq1Pt~yWut$x^^f>}5rjM``b4w)2qAr>} zvPKlI^@`Vek7>rIG9iWH!OS%52+>_5ikm(XKgCTOIi{INH<#cyBMs{1crA#MpC*rN zkO$Suk-sfP3#gPUA(c{YLj7yyianKzM&u)Z@`2>K>}rhVYD~q|7*s0yCW6ebTQMrE z_e~^I%(iwVXR}H^*T>5R+H!YQupnc6eYUp%I&T~$Pb@^y;_e+%==@i<++coRL|@Ym}_H}e<+J5t2QXbl9k43 zJ!B=YZAKWZWl#`3MW)K$6i!u_{frs(QBHydF$%$Fs zgqnlVx8hJ`@BV@GIYR%@mBvvR4)e<~FeeTMv@4BD=oQHk3#TrRgEo-FLV3vO_GAOK zWy@*g?_v*VlQI)4Keh@4c;B7-VUO?XZu==3GsKWyo4>NMTnHT3-YD_ccSoaF`Id^$ zZK=clG8E43dyN$R>iDffkd@%O-<_nzO@BP5(KYvCz+sp99&t-!YN$pR#SZ~#9@UCa z>3DJJ#vKYdHrhs>n&L;)!MpWK0jFKJxFqAlY?oXR>k=t^Ai?m<@p4z&m5lO_^fIt1 zX3XNi!095 zvj@1ZK9T%OXyD%ZR5D)g-b#^lPEoih+<-$e!pYe+RCD<=Vy5ktdS*p6=ihqO_`I8?^-qZ1w zyYK`-`HqtRSr@ryD_8iL#8)_(d+{?#Tsq-}Fo0~)$O=nTQ8#I&NJajd_Dl=MrXw}f zQDH6r#onSZ1l=fXW`#wmd_9)y`AjleQXOTfjxtv}c*9y6PJJBT)ph6oc^rG-nO1VA zj!Q<%pNq1rj54o`A{3e7m$PPxy;9R^=#HnN+MbHCJP~Cs;9{F3zLEJ+mi#DlzO!C@ zsB7+%8Q6cJ`f1zpjMPgV`B81C^5-b?BJK&)4|pWXGAGJB$4)(YR_fszx@}&R<>4sv z!(4fjWU>A&GGJumj@@ksI-o8^|0IagBHX+q4v^bhQ4K*@ZYr8mql*6Stj%vR`3RBo zV%zl&vK8cROU-=;nhp;om&_(Vw1{AEOwlR>>)G5G*wE-*ZK-94n4(nJaGC~k^2HW> zWsY^Xb*IN*XP=AVZkQ!*{HUXFt1IeNfc%On!)xg9S#86jEaE7$*eN~mF+84$vd~dx z+KCqkw5$hKzK74M<@Y_c&CW>k0L991x7^toQ_?!zqS}N}mK%{~A?NnFBq{#aNXz$; z=IB^fTZ)Bx_E{6R(l_si#!mqa^4 zHCwsoPe>He&xeYKZJp_vGHP}LMOy@x;!v@>*f%4){@~jmWxneEiTkwe>jl0Uf4$QjdVVGSTGBMJ4C5Dhjt@a~zUfp%~0PbV{NWzQL_K zC3#r*0e9k*WMt4s5w#V0mX9JTK8h$>ufRAr9R+5Q<%5U{YebQrV^2$zvjT_$@b`jk zbrJoo)NdFb-bi8RUo5MKz5Ypx9jgQJ4F)RrN9lYId#5Wpq}+?AB_q;vZ>E!p2Vr(b z@WS8@ptzCVYf($>Sb<;x`4noF>9Q0~6L#fIro&xrKS|$iKP@>W9MUX3>{cU8rsuet znxtMI@#6Avn* z%9t|w?)WlQS$0{kt>uNTSa|Q>A?9Hh+&gS@rPw^+BmPrilx>c5uQWV9Tpq67a*jxt zEUI%cT~qP5(28kcV#fB23LRCnoBO^^65^tmA>}0JB!037!YmnK=FBj@Gl)?X%cIwJ zj0tNS6J|*XGpBG9&q?w<6=5}0>iig&w%{;JV3;|Ov*22fVPS2~{O(HznR_Th95`$NOYP54G)2qhLA-Rv6f+B=td{^Fxw?Km0Q zb~4m*GSqyM`{^5e{ONdT+woA#u~74|&@qyUME_b{ar3I7+CB|UogbcU`5@H%Q79TD z+bNJ%Qe$BGkAzy@3pF1J<@rS2hS1chsCzKf{N8}N%VI=rheIv5b@>+7qJ;yY zmj4Mg|C6<&i7t&vCk9n#N={FGzN0p@tv1xME7V-e?LLoZt1#&@vY&b&bTgEwX>|EK zawj(_Fp@-3ahw}2t<;RF4h@wCiC;?EK_MiPoK5CayhCwMhnjcT$&qi~(D)uqgcKV< zA9meS5l$;2q`t3YWA8RgVX~_tTY*Yywtz}~jnsFtXv0BaOyiAH7 zCKUUL2TgTPcA4X9&?w_IDuX7mM3a`S86VG%yWmC9j|j5av07HSV3fhYj$V*&SeIZZ z(X%PoNUOC>VqjI-Y~s3^&6&L*zsF+^{W%agXCjQYzWe+b5;exKH~)c34!RncS?If-%$=#gMu1yhk%TrG%Xvkg!BPFSC+O z-&2fzz<0fLD2<*v1S}3JVG{z%#SC3gdx*5$U2a83Bvr%oMuJLB8Wfo1R> zP8d&#C5(SHvc{b(EbZmHNN_K<-!V4zkj?h9OhRcs_Rxm4)M^sJfJq?r^@$|P=ojv4 z>hbs0XGYWrp^SwhTep8aJIeQA@|>d5jLK#i?FYOv?iAz;7x_@e9Rd~Woi8b7OIRz}}w76gx zpTen>Qi*ttWwU#Pm{}_zw2}cyvNWa#kiymX`!IjT20#4 z#n?C};W(7+EIvRxmWv^}C1>?cm>!VPyB;V^EU2Y|83KVR$ zLCNdZT9R)YgVqi;K)H%b*z_GOayBD!CisN9VM1=!$=NYs{uJHZ z^D2!^t+i|#GL6_oIXgbGIG(*9Gd#(c!sp+37pM190l6NfS0;tYtpoAU^Y8ar5Vo~ z7*&>6wq`WU612>!xSdB+lGJnGd+vhHN zyo60$Sv-WRbl;vWDB2i87FVXojVvmbut_`1KpC^8gdGj*v9j2WtE9d#bS;sqvDrRG zr^~h9_+ajfrn;PClhWvAgNXThL{^|tU)IZ-iOm|#Rr+t&3b$9?*uL@xVnO zgk`St-3l~W1*}q~nFvdeb|1vzD%tJl@D-hu?W>?&qqqBCsc~OmC3->#-{&Np9*{6e zzN2`_%p~q;nrJ>&5wTfXc7lqXXlzAP5s&iQM2bIlmwxdFi9Ga|khWh!ELTFzKZis} z=JI!5vJ5$VM)Z&xQQHq8mLEdQ?IGN$A0%@Ip9yLED#Y@6i1~{UE~Q;EJmGiMuv{4#F-{x1+DyWwT3Tk`s&)6omK&*RvwZd~$u$6@32 z!(#r#@u2%g$R84&ESfH+#|Y<2$ZaD|z$IOhd@6i}qkokApr04)@OR*n!krSEiu}o& z0CLy2t-~SlNpZN|KRGhS1CQ;Y!3i*#xf}g`&to4^7|Uc)uF>Du$CZ3r2k#x8^CvF> z8Z3U-@nJ&LH2r`ni0zK>6^jl2d#lJLS-51q|4tjZVgxQRI4;SuU$P+gEB+FJpeTWR z;U~#9{kh<_?}9B~2b<3Y&z11&#~s}sK4VG?2IEw)=k-)qN|c( z>PI>E!c~cH=0!OMH{T^-W~6SBqS^Wd3^3xr<;m!h@Y^q(cclp>T{ z`LiTexQlz^XUT-LmGaayu@}746>{^_a?+D{1IqiMHEmDHEliYeHpk^g}%;55HTvUuMc{oLOTFU=Nv)lh*gF)khH^0suj zB|~n`;F^As_zg~yx24D}Npf?NoZGq8%m2ZtF`~A3xn-o>97p)G^Blbv*pYHexZE6V z$6_O4`)sk@^dp||R6N3%y8L3W4LoLqN$5{hTOs8B^sD3m5%|{a=M;&5Z5>6VqjF(`D8-diX9Ux@vmX&#AV#MSf}aF3)|=&vylRohb|# znKt;5SD#s$V&O(_ik1o9@LpE@WT|9h*~(Dwan(hoEVpB6Xo$3WTWK7(LmQgtS?yU- zI*!{hCp43;HkVH4c09;U?tz^ihNa|FT{g#8$_4TUkz(J}%7uc-nMox-Iy}~D%Jz?` zyIsi58(ZnZUJdUXx1c{ZZoF+i_l`SE?_V(H*e%=T*b1@B7zT}UpY=#Q#+sf^j}yyk zgmo^8&Vtir5+B?ZrdGX z`CE{=l4}z(e$y56p<<2Ws@Iru(o$PGUJGh_Ey%Jh$oyImRFaCJ?T^-E8e?$C0?XbD4SRM^5qMv zgNu?0ZnC9CXk*gr;>263*-}ZdaFy>-`atOJ(cBsrW{6(l7?n2ntb}9U>MGn@dApr} zA;%q>JfbJ?mS`C)kz%x8e3MJ1<_vDO?@vRYn#TAUfM`rUOxu$EN}611*)x?#Wr}3K zX7 zY|YtOU#X7y(nVBhWvM{y-PITm4vveLTEXABA)#;Tl2M6bJ3t_QE9$O zVkr7)>HHoW5Jp{xS759mHZt0 zHCN%v_>TPUtAv)J3r?=L92)VFD#Nz^6L&59b-CO?UP&fYv@Y`$-`8|-#J9UdYr2~} zM{v{S%t&Diw@%KC7M608X(o5*_p)?X*;>zY?2q3kXxTH|do-hrJNLZH_wsnQO|ChY zR7ug5Jz+1otJu~Fbrk)Y{jr1SUFa~1HdEOO!K{Ov%#G;~p5YjG=2hViZl61oA>7P$ zxHC_?7;lQWS648Bl+cwsw1Nqsu826#P$mcaTMIpye2;T{AO2LLY305SWtxRwbE{V} z6T%)GuF~98RRu~j<6aMJ*4${hZ}*@v)Lc=6rlpeo@q!fF2Z%^F$if+g|5*cjhWxmR zF4273%zl4iI7K&zRQUOkaOOSXIc`J*<40W&++N6dE6xd|83K95wqFAmRa4fhE?c~e zLeY*u179rZ&*HiaYw!SYp z$iI#E4&=I5F-y78L(w7X_1t?=n3Va?H=^FIT43rZ$L z`!T6?JmqV(XhQ`J>;~O(5Yj?L;CD*)FFR$O(fH)=h zw~^?1>osoOTBtx&0Qa}Gj3UhVO?PGG5qy+pPX+oVa!;#Ovd_E@)43=h02V{ezI8!G zBJpf26OAu5JQ&NwyX~evL__u5L(eiksm4-lg+v(-bc@{$nzaR*RR!z;LvVu5&x`Dm zu!j7ouH}Dxwm`Ew%-1`Qp^UFlp?GfI%auRN#0tx~~b=)>3!}^}Xpc^z-N;H=$HQ&{0E;c~9G-tW3dL|rs4$pZrqZgb#r@5ihT$gKp zsnq=3tht7nY#`J4>k`d{c+J%Y_R57o3d>H;u`PKcDeIJOvG|f(HhXFCOgY;T&$g@B zGjh#O@tVsj&5zldRylhK283=Gs!%_XvSx4rK8*k3lx{hDF)W&*le<;yw-bUX>!|Jv zL6kbNyOKS(Ya~U-ch|Blp_3_VYO>pmlv>8U>ca#~KN}ES%eE%{m9oAkT%t?EgYXaYiYwXg z_mts!yc(F}>boc1_m}ngbe|@O!P%!!0NSHl3r)cCYq#$BCaONHzTnYFY=q4uQKO{X z>LTWTELG$V7BMTho4(8l%2>%gXkY?`+qk4*Og?qipQ{)K*GYZ$W=%7~axF6%=egSOm<+ke4O~K@3eHSKyHl##L-Y=+K zZ;^^VhDRkhqt|qj-$LWHa-3Pkx5(M(cx^nX`8b&$T1APLtq;PmcHcyk4{!3qPsT-j zlcP$saio#?-JC3i@e|JCJ{iu0!H3YKFtOa_rA$0GYXswyaK^y4SF#=1?9F-5svA3s zYuW1u_oy^y44U>zO$VX%Qdd0tb3jbes}vo0liX(hHiGdVex^ioxmNQdsjvyXb3Gt7 z={1TTdb0}}cZMrp#tcK>wvS+nhMmc$mlPY&VpXOT@665?yKgSTfN|3vXMFY4t$4Pv zD8p}ChF=o&+52XZbQn5}AjkS`8%vPZce{&xoXAmr+eQtYP`^Rb z+N^2APwL4xz*Uhu`IS6a-sYT`mijuK6U9=!FL_QP-ihsT-+|sqZh^1UJ25@!+v}a! zmiyl6o#Za_z0*5!I48z?IVZ}0(>rPTH@uUB!{Q{vh^?-{!ZxHuFFA zTZUmPc)wZ9m-LxQ|F|^Ri+kuPXm{vrW{J?3+culY;N~lsmDI1i7ZX4kySRh!VqDZe z@oo&B!Ul6cu3*%{2yR*EZ@V*bzP;{@(dVx2%=un-Mnv2hPNHMH;bp*q8H3M5F3>U0 zIsKS_`3&%5zVab{%r)Z2P`CLp$9#A{=DyZ9f+*v!E=zr8{|`mq$|K%)b9ImcaXFHS{!LHkS8w9!EEE2f zTe_O@r>uJ7>qvQ#63cIcgVdON~H zoJ`4R{~vaC=Kh<`&ZRzQ=hmZ)|C0YrXNMM%z(YT8$13mjc4!&*?85%uj{}+ z+|Lg_;`D>vc%2B2B!2KW+%{h(NqCa$Dq@m_A99Z;FvHybCJgnbjPG%>VT`Za7GWsw zwLWQJe1)}KeF7ZZH@M3Qn6>o`?@$eGy@1JQ#BF#O99-kOT*i7P__B+o1M<)J|-9Z(&=pO z7*4HMI-SjZf>Zh@Ze%hO6*S`3F)wT2EwM|C3%+?VR2+zp6vJ7n8Itl=p-;Xy*ZLe2 zp%>rUm}KSO(pd-H%6BakElTf%kVh1XkDL=qQ?__ch)Nk{Fn9=ciWif5d+Qz&|FPk#@+ zk}?9pJLyksWJ0-dk1F0zSw|4gW;Fws%mv;EzR`>osxKZEV2UmOc z_ra|Nqx+n2c-j;$bok)(WBq+_qo$jX_BK4qe?(v*_u^7!+|X+`#gzQfVcJKD)2@D$ z`+6xee&kB5oLYNdGy7{mm=5lC%+0lwiv3L&otw6d@o|;i)hBpWl0g9zL$s2y}OyA^F$SA`t(K%|3d~U*6;kgdq(S{gEAH@9F#$>uf|2k0ha-uxJU_@23QWb2oQX%N`D6p zWuaUMSOF+~N0nZTGVquxJsgk-$U&WHD9_ZZ(ih;k8po{w!6$lE`VqzW^ri2i@+bC- zkGH7OH=vPxoRh|@Q0@oR15N-gf(~J#6~}r~QQ4$Qp8+5}u?8h!g7g5!Ej{^d z_l$je-7|IqPng6IrtinGXEUxts>O!LK^e(7&IIHG1cKJ|ohXk0jsva(qCba_fHi=2 zz)rx+r&a0Se2(!y5{a(!4ag`56awl1b54K>RCpcby5L*smvKDjOAG_fj{sT$*8%5G zL5WVHaX=uT5ugO50usLfQz*+(PC+R~-5DqgQ5K@tiUG+-^@0rNm=FSY>o(_jlVRA2 zI*owSfa?IiuT<&DfH{CdKq;UO;B50W!J#KfZ}uPN-Zu4U)carH5O5}ZeD8%zaelW8 zk7LY;@)2f8BP%{c2(SfE2RH!`omHiW01^S@y5%Uzb(cQ?6F4Re6Q*|Jm=LK(Sr0e{I1RW45Pgm7 z0m}gpM$b#L6(>ZZ4UYz7IJrFz9BI(Wtv74{A-WVLA?n=VojdkLHH0JpYBmk@dlmm_c1m~e(fTaK!$P5AOqOhJARDs}S8%!xcAjrsoVa3es z>48a2uSZ>Cc!&`a0=EU{uNyGKP&ySe5Z4iA^tWp!vDRoRwOik#&*vMjPcB8d4?rYu zN7)H*ztAU*H;%&r3jyVTGk}YLkZ&;^0n-2r0p$8>l=XnifWV6w|L}{@UO+p*$z9fW z_QnZwq-V&5Ie;y|6YF@U!LDe|nLuU*#D5Rnq6hSpquvRCv%PEm+9U0d_DH*l-;V%y zuy(!k5lZO1ksMAkj^g&FGk)B$bS6Ykdh-OTlAhg)5@RrQKg#GI_#0XJ29)HtZj4NH zJ30g~1vn=UXK+k<{Pqs-PkK!ln^6pSXLmrxaexwSz;ASg$ht>egS zRstsw?8^`c+%xKXKFgSb^DRGNw5o7W2#YOBqBFL98j#_BJRsxx9`}rw!F4s^9B>5C zh5S8TB~MIT?^~9;J7OooUj8q}NK{ z!E7bcOv4Xk_?(g~#CbKK9?%N74hX!0i37+2%mBO$H~}EiUPl>y6$An60Ho(SQIei3 zM|lQ7=*+lgXP^`%p|@9$1Lt@i!|~n5)B9(1A7Bb#0bmWF3LyK%e#a)n*5H^BJApFe z*FHfO;F#F6a+Jpar2XqC#n*8?KtBb4i1K#cuyeh_Wjx=IK+vtiV81Wu?op%saQ`hR zcPFIl!p!YPF9^n`uMm#sZIKw)5FunJiRE|tH;Fi(0U(keLrLfmsl}r4>7D>Eqwno< z!etY_E!I9g$ica@ zk)1epdROl_@J^{aaUSlDE(WXszuA^s?D$OfV70r>#p<~e5unaf1uF}G8(*3be#DHsc5nSwI;3C1O13$7^z>?0-d zX)(0Naf~`iPcZA_PxHr@?>|3iyq+M(wgcfUApb+iExcD^Pmh7a(g@`tOkPGAg87{T z*a~nmM+gxqb8wwg$~BHQZnu(lox%LS-7!9b3t9n}0ph{q)BOO`07SEwqa+OML+LFZ zpPmTF1S|wNhp8CHq*ohJDu>wXkZYXv2!qprUkF&C#~)JJ$t~e>KXBxN(8b%4_Va-D4G`1EK1k%oT^z%(RnWB^wMI07KL;OW_?3;S`r53m=YKaUD_ z#aK6yI7InC65>v$D9Z;D0x|%pfMh@-pbquU0Elv(@wPYKiSrzs`$_C=VPz`to za0bu`@bdzbfDAxl9gGdyCQ7&f=Y@bH0Ais0!1QHe|B2FclEBT< z!`&iXS&d3$&SF*w$gS9E@dSQ-dP0b1;(R~g7=Q?H9;L`13JZt^lmqGkggI}iV>r-m z4vxwFWI0MAfZlmi*#g8~KzIPO9k2pGBqc*risR0}@#*a-uLFpk@y2;iPq*GF`9ho% z0Wyc%1t2iA**2g5Utp@Bxg5mG{$VpOch?}2G(96;v%R^XB`e-{Ea0G{#w$Aq@k zFQ-@GxDh~@au3B+JwX&%@EPEt5S)`9or01KB~d`=o}Tw;$PI?f(R}<^2p|erjIt3R z4g*m@NI1qBa1oFXcp0#h9PhE~|4u>}OZ`)}Wi6)_K zJ#UEnKfjZq#kj6>M)Y5Iq#K%Yym}-0IbOX1{YSiR3+QXTdIS0zufBl(04xXHEl>Q>bi>DP#yxhE1oYSU{5Jvp zCwqP~p#R`adq98c&Hm|z)Pp_T6q;Fhw|qlCZhSD~H}Q`r9q!|k4p%Sted`H(!~;2L zB*t?{h>(ZTpIctQ9QSZ>6$B)%9dZt#^k+kuMDE$Am^`YWn=`vJ3U2TU#$TxAnr0)i zf6I}dNICKoukwL?AK_4YTz>@DHfLa5f7jD}X^P)m?~UuXUB7Ew|NGv!{$0})k2up5 z#|T#si1PnW*MKPhmg~P6=e-je+dKJ$M#}gaiStW^8|*2KPmz>HA0*rHQT{!hB+9>p zd*T`3?v>t{fVK0F#4x`9Rj}V}us`e90m1&v|2Ej~()oMA{;RhTvA9dH zKUru`ZRC_*jN6F2hx)B+?V*0o5{o$Rz(mGRs%K5{3`w54%`RbGjK1yMRFLC!TOt#`_7wWfbWdl$GOw{ zg{QErlMmqgx*IF)5&Z3WjPHnT_5gktJ`AlLY0yUMyuI^~TJ*XQIo8I30sS{`@&SF? z9?<8WNMvGuFOL5#hU-6#;|HbvS0Q}v&;FR}e7>cBLU7lBP`)*&FY)s2J-?lJIYK{l zKqz0#hw`837s_`V7|M4U7|It64CQwYjBHV|Itg1kIV0I za$oHX%fB&@`^ww6|J%U0{EmTfd5&3$~Vjb%gXTnoAT0+Dgj!u>P3e`2e?H>SS* z+Q68)hWiL9uOy~kaf6SkFY>3<>u%y3I946j4bactY+8Md1ld<#t5|)lXzC42m8Mm| zEV4X(tzzZ1qKO34FUYRm(m&JH&_Bwq7WI#^)6eup*|U)9I=FwBy??4JvRk|QWxD3| zkFq1vwO^Fo_-D>C98vbm{iE#GM>xp{#*5pU!o-h!l7!la^oH6aekas^IR#4!?o55% z*cWEMZ(x``XDst5zVlo^mKlEU3|Il50sHyYZPx1~!0vUksO&mAk_6a4y}Hdpkk-T9 zMK3#%jaRq5Ly$(gr|1QOv>dtG^!D`u0rp9JfPEwR75|+6vU7Qk;uVS0UpBq0mpC2f zTuw63VYcm%I2~ri4oR=WoLeTj(_yx~A{po}ll3`HfBAni1NQ8{kpVmPYTVST#9_`w zlK+3cKIh@$x0 z!-@)B@0ku8-Oug*zb+j%@5I>YeL1nKd;NFarGfr? zPOtxNxMI(VU2uuG>wmsf@#jlL2}FaM9sy>N@?Q}KiaW&E$FU!vRnEbcxIpj@3|ST!X|Q2o0+V{ z@LMhSHB_ZakJYjl1ELzmAO4jxw*P_bSsy)3-{M{Q1MS=Pb`bx5*v%q+2YR0P_xszo z?IK8PU3bxHC-NWd+bRjtDC{X(L6DX`?M<&@y=lJ{ZV&SQ{W9_^@$WSr*fw|6TF2u1 zPlq0MS<5fJSA41;YTpMWzKVR#@Ayz{lSrDd+vTuZrPU7|q&PA3u&9PMeLmDsl_)K) zbFX~;BKE>-9$JFaveH3YR#oC)Pu-vc*w3PdY`$dsbg0;?I1KCX#V=tc{>Fb&)=D~V zLwjqfWJf}>OSy~SqFZy7Qrhy}kYiH%J8s^a%wyEjcJ9MBnW@4#T<#X8P#DLZ-GXIA zMptgnTTFm|s0zmRR-tt0uwr|x$1cJ&?{9dlsi17J<^uB zBC>8=RUvlW`oK$-RfTnfrF)cPJ;^tpZPiX`-l`$H2US*GlkPb^F8s-?qS9?&4sNb$m$pOpVp)}WyEkBgeH-@y_H+S${>Zl0)B;8Z(L6++$4>||VxZN+}U2`JW z_#%_yN)O6Lzq@T^<_TAE+O14uXqH?okd{e%aDT56l@8h=FTntnT^}k4$`H(~nD%&m zm#E0+2X5LnCUCg-55&bcxMAH}quaps`>sE5n^46+L)vqFDAvAN-*MAcWk|6RJ(j?| zK^YHo?`~s)T(5k8r7D>_w+(O5k~z;3EOEWSMU*fp<6m^MuY)UbGgNJ;#NZW6_Y}J; z|Lm&F_ly}*87U~Axo(ky$_SBNsai^C2!>`TmFARqzVpMWJk1PVIHE&zUP?3OpD8p>xbCRK)GifO_&`2 zJ-7H>CRe{%)LgYr+Hz5)s>;$<%`l*YGQS(rTr~}PQY>vL&4#W?_gt)8g;|jb9d|cW z&5;(*rN0|;t|~|R;|tx+^NV zcedQ8K<;ah56i>a#+f}l(eNS7deCb*J>>W~gLp{&NW(eIwjU$zJ6BbT-7KX)YOBg4 z?vv)Vo|nk0ULHLDJ6enCc~W_NRdGHoO{l+M&|)^_O{7{MkYraal+J98kbFnCE|HwW zMEtR&YQbXHY)Ch=b(ch1Hpg{vZg$lM=}gjohV;kQD9K`1y%tjCO~hnMZq1TN6C&=r zNbepr(WMrb9jY6AA%L z9;zNxQng%KwtJ9x5ZUD-VldBlK1~+8&!qFxDWgwMCAp|jFGs~a(nC^tv4_~DaBx0_ zBc@1 z>h5ki2FG5DzSXV5kijra!1cd&S5{R?_t;lzZSttc=Jzy>7x+~fl`swbyxE*t?XhQO z*xx8?dv`5H6_i~>0fut+kiE7W&PqO9~{0Sk_00LKXL+ufT9rmKq?B6 z#)ze(SQM?coKO&L?O3NX+D@I2Xwzu5RkR+kwS@>4smwIkS5a$Au#JdH5p6|hYzeK_ zc3P`WYe9kB-#!7golf6*|M$NC=RWt|=iv!wf3LmIT6?X%etYkO%L$C)Ogs3`{h?Ru z4{3~7dSeHlR2n`JD;|4Che1!` zId(nmJBC*|{AWk?p8SeycFCe6ZMDd>h|h!zD~?KiqWS1oyl4(5=k%($utpiaAi;4D zG|EP6W#_gFA>MHL+t&9<0!s>HOD~zCMwUc{FBv9-T+%@_Il^b<${S@vMvkQ+q_#iy z5g`pT6@>bP)DS{LNZr5Z&NRvrluP>@P^;L?Cm0>ISd%2CjJ|_nM9;8YV&MZDhuh z$vsb5SQb!%w^*iU?z1ve+L+X?!N-Ho2hJ3(r*ZSJR%OO@WQgu#(I6iDj$ zTAD0!R6dq)zf}jJOCq{(voeEMPG5;TW=WMb9reGKhX!sXi}}4C)S(}Vmv%^1L| zS3(M>3f-N(H!7b~SFY9}zgMYNCN&L~i0g&bB3x%`8%K3Q2$AzkTzuP(oU@4@`4Qsz zajzQUM`SHZ=sw+h8He#&dpq&Ee3|J}$c&fNH5h{FK90Q2d~V2SWx2$2y#X!|rWvm_}GCyP?-^}&bAR>4fHN5N!Lt}9>?#PS{P@`tif zrciY;zRJOC;E1Twz!|vH;v-DjMOI9VU?ih>VNK@YEFtbRs&*!CNUj8AiX} z%g@KW=naDCxyyQa(Q|XXR)}7%(Dq8Nx?IdX=9X!2QBd$s+ys(xg?q~_8=bhS*Rg9% zznrP7#7gygA;hiDEhelUa|QCIs}ifDLX}B&5yZ~@IOl&1*Ba$<6OYN_7rVa@L*m@o zy(Q%8VylV$lPOA8`oWT6L>1CMh>6I}>V-J6YfY@#6eTyFodIJJ=Rv;|6A8@dg#@ze zOl)z#1pZx2Byei44r-E1dtDY6jsvQ$Mf{aM-*hxV1Zye@WnX;B37c?MKbd>?b=kNe z*}zfT819GH0RrVI%N$^on)8x2CVD+&W0A5@&5X=uMp>Dt^MP#`e^`GvFtpwU800i% zMjbP3J+7J3n3$OMK?j4Diem?NGRka5c~V~2=qpRx2Prf7+BPdM?m-VA}j72F)_AIfuNJ_OqtZWK&s3*AKV_mU*d$aCz~WhGaW~2GLb!U&iK8aMzo8R z?8;(mr5y_gZc({x;$Zp^WEb;LX&^aYT+LOK%SPnWI?4g5AxdqW(7m%~KxvJ^rNupJ z$O{o62p89Ld4$mYN{<6W?#pZ|LFQy4wB+FN%gFp#e`XqMIig-5L1Tn&JI7SW#yfuKb_`f^HNFn(o0!V(#8 zIKC#*K$Lp9HdGk#-EBw3V;vd%O-?>>NUJF(@=$)6V@}DQj68K)uO4<8lGRD^Z}kC_ zT3G_iCx?utLmg39Ih(6Hg?pZ`0we#DIZ2BwZbTZ`@8nXyvVa@v;hk#cV31lJ-##c- z0zP-Y#?5WP1!G2TTZ>E^Y`v`}bM!hBxaC-j>^}2~+u4y!~pie3@nk3CRuvZGP zslhe_HSj#B_anBDZTjuF0}<**nrg^M(9a^6!jI|?pnABEKEkQ*;%ag^S3!Kzfa^WR z*?Ea~y;Ic5Fx%+c+CqEwCCI7*wn1peUx~-8V*lkA53|xxE+}5Zg z?c0qL5x{rZG&+UdVBC#>TX|cf547($&O^X9^tPV4H3QWQ!NcuIVX&3tw|A?v?KVBr zLoy6TJuy~Ipq}X^g@aL3xRvSSt1<+jsv!G*J>w;5;@d`BT9Q?x4l`~i|8)}MZt`C* z*6!z8TCwUH&wbe{Gb%3KGKyhhJ0NIfa2WVCRzB8=_1X0|WuwgK-FZoO$a?XDVA994 zx5!Sf#drGHdJBEbC4C$MGw&Aqm`nONL`XN^LLYN?8x07!-M7%kT+&Bq;G?(D#~7@P zTzEhqh4`rDZgoyB-$kS!Mm4e7zAma!_yB5BW^01v!)zu@oOb2YMbZpc|YkLMmfE1Mo{^jR|*Ch*Ukw{S;NxVMumQDAQD6B=y3 zJN)P{Y=;K(-0Hr|JU@05=6Ojtz&!uxCd{KT+VCa~*SZPwOf+ssfd01o9_IO~n=sEj z<9?*rE_e42>=$_82e$LR?%nEnR;Guq$Mz}e(OQ{ay(W+_$OY6i49ug~1d)o*p)NQp zy}ruMbaT#DStLG{!ut&le=N%|J9&av^W6StLNJ}i6FdX!*&0G{E+H5%tYns|cyS@%(%;C|L! z#1q`ly16{T{j8faK=52b@C?k=bACc_7OELwT|)3o)N~K)8c^3gtgGjaoRf`ChSA$3 znWdfegk(s}ySUkrl7ua(7rJYyPT0fXoLP}+IVwq5%zHxHo4E6T$vzAzbpw;Gs$CX0 zsQL3b$3IW2OFspDKAxN34vTC&XKTlOgX6ikeg7`B%gkoO=$1Z+{ z{@iOq+6^81w9;M*cfdxa{UWg{%lH_w1X-;tBP-y|!~)n+!-t87>p9F4K@ON5Q0p~^ z`S8IYOq_=HTUJ;YP|OjrTq!p6!0g4!f_S*5Z&oJl6vFn!f&x)waj{yNkqe?X5|PQw z;lsrH@U$|g$Pbnhnf@0R^5La^r1H&N#0A+S+O*G8gKX2fPN#of2M>AL=M`z6TV{L? z^?Q06VwSk3d|ol-bBq3SuHpjBKU@=kxP(1`^6sa5B($kujJ`liYCG3OLJ=heLrLg| zZg?=+KbEko5TbA0B%wnkxK0te3cQTW*pv!}SHk^-G`bCdTq}E7{cu**@mUeOJ%cBjnce-Bgwo zC=g-{_1&akoV7qh5?}0+_{IB4B2M`&oNf|Rgk`??t8BM<>5mR92Jt#0G;eMf8q`>r z!7WmR*Yg_xdJ6e4S)9UcL%bv9L?JJ;^I>9n7Ax(`g@lPJ$?GR9gqX4b(q>n;4z<9v z#D|_G& zItk+Xafh0oY&1&v`?Q~ryAfLI$J;k#RKFh>RoFXZR9E;2yvDu#sVv-FbCaUx!=t;c zXVp8n^0rTc4`KoWxn+s&+!EPIu!ukQSjKij6kMuKUhSM7(TViNC#mxzk!(2CgCRq1 z~!7QRRgUBs> z{Dr~MgYJPWqP2qvUZFcJ#>Y{P622`MJqS>Q=u+Gue(d`pi|DvP{OkWYWI?=}s9ZAC zu2})df+LUxHnbh2l}}yu5X@rLYX5S7s)%lbd3bRt!7M1Q=0#u@$35K8jj}A^e|WgU zjo4{!3*k`)G z(87O;EYLE7EZDSO^Zy!X!7!0P3+^zlgNGK>&;vh57TotD3x*)C4_Po1Xo0>LT5yX9 zv|tb-!vM5E^U#8=_a11$aO)muf&MwP0P}^cr>(yTE&TmnXh94o=9k=jPNtsEGr<6U zaNF-+;s>@5y{l<3_P1iiws+vSReE{G9t`It-O`sGNfDRL30xk?doPc3t(6?y zyHeSZ`{+x4#3}hK!3gr@OaEbt8l{gK=ELr2DGv+$j=%!>VW#}hm?6Xk<8JoTz^-4; zO)HZn2v}}K8LqPa?Wf%OGN1ry11P`~BA#Ud0>DsFS3ZzkNnn6}*FQmsI++yWhH(&R z2tI#3qw~Q41d4+fdnR0XKnIQo6U*Q(7=Z7F-N6H{gaDbNX9~{;-e3~4c`(4-j|MPP zP0TbalUBl{7mkE`0k64OslI|bpCHaQ)u&cT$Ti}dg!_^B8_PRnf^Mzo8R?8@i(*%cNOfwzkMg2!Z6 zu4u#<<`5(9X)|I^65A2T_rV}Z5be66|*e+QuB)+O~lnK5nbYuyx_&$N0vw4qGoX~v?)I3C}ITj_feb5UBCw&y@xk!iX z;qJuuks*O(&^#cty?YNxU^ob0zYimT&uc#l!I6~>}Zyt2SogygUi&t`3`!JKa-#bwvD~HBFLX@LqB?8 zuydZ*u(Vv`Lk>1v>0UMMBW2z6ALBTBAX zXf277ZT^sZ6&_f@TyFnPS$wYhJdY;a|I28?c^*xe`cpKaUvLlbXu_nsXaX;|h7vIm z+(hm^UMsEan|lUS6o7OZ?d=@6*48k6S^QAhCYHPJah+7@Ck?eH$A*?xU+hEsJ3ku zk0(q_CwM|;B#~wDZ`yK3|%QIoe^+5WvqjYsqiEqDRbwnkUpSN10#%1Rx zHk$J%)a55+=Z|;fk1NSfvgVI%%hxRlmmdS7{)*@re2ijp+$UdW${%ZDZd#)fkO&OV z{d*Dl@wafM8rJ4Hd#?|M;+9S_L zwI`h)-#)#QIdVRueXfbwfBvCH=0JOX9aHaM4wf*7tjyt+%)6bY=qsY+-+d+KmF@Y* zCO@r5TNx(P$VStsI+M!mFfk=2wbc~4(iEjrhffaa5?{tOzejHC0I1;ME6lFNC6y0Y z)k+6+Qx5T(*Qp~Kp(ajtLOonNu-6Pl?*=lA_AP}4;No;T-P`{10d7~PN^omcP zmsFP4@oL=OI@Y@46f}7;Aj|eaEA-Y*cww#v@0uAB{B0ZjGG)+{7bSFez@EV4!Cwu6 z)lZZO0ho-CZJ%O|#pis03h{;p7AcLD>pJ1@s3E96Fnt}bZ-MFeYiXsLfcqs=ZCagoXaP1V{C&cluvMQ`Epqer8M2T}i7$3Ubi7_Y6b-?#?Zr{Mz z6D%L_eb(*Ea6>}t-UHVhP0DPozYX5o{J_@_7%`Xz=ikDz{ zCFS9x7 z%q>)A=(}Yy!$A$<>jAcs4FrI%$JPaGCB_;VXkvOv;qL*h5cr6%%5WXX3IPE4y4>I1 zDq5SDLExjJt>nK>QnZWw2Yj?om0?YLBXN^>-a)ZqomfIkMy1lCgcI8e-!2K73C>8C?or{2N@2zYgN_gQlc({#P=xTx}6|K!?dPsUDL6l69fq)W7 z*>VCXnIeOLB+Qqi;++IhGDQYwGhQSc$~b4Wj2V$;0-}_Y_HtrqVX?k|T2Ci#yD)F{ zRYk_tHn;)4tClUni=Mwn78$+zLgF(Qx&bITpS*Bha^p!#XQGyhc`@vSV!GNS(Zg}U z!%L4`_-A-2F!zEFUYgG>K7(aNGB>eCcE3<}fm>69j}P$3(l}1{mMrY&@RHK}Ptej3 zAGGvEw>CdlRKx=x9s+#0X9x#I_#zK2Mdq%Z55@up1ZXKKcPjz}0Rk>LJ$DxZ?lT1V zu+Poihk&iMyMKgR@W7AoNdkOK0%P&@*qR9P0ca^ZGLRJhfB+w0tnA1jQn8BwAK=4?1)0a6d^F?^2 ztuRJ%A|BI;sN$rCO@UZcS2EZSLdGN<3x(%Im7g_q?F0y3)pGKDGzjX7!1JIB7H+Kr@?RP5&U~uuL zs1*pc!{YT3ZbwHr`+0m#57?Ox_E_Bydl(+*tvK8csA_T7>37=+RCTx=5thbwm@cOe zA!do|Kzqf3cFPeGlRDV&a^J=MzYYo`56Jv1b-+CC^XZz8CY+{s>ry z9l(4Xxa*uY2-$kR zmNEK#9wGaT08>Y2t|j?q;&S{u*p^{1X*^$9l20He_m4oB7Mb$ntoa0DG92x?2e+cH z6WoeDWc5L5%Lod#t1KV+Y#M@s<&U=J^C;L6(%8PT-;u^*_>|%Le1aL+u6A?Vow6cx z`HwodB?x{q_DkS5D|&g*fWSzvDa*d)VI)3=7*FebDAFCE24P|$J?BG_Dv41+P$YzT z6p2m+ZduB6m*xe)UkiGP*>aUwCoqAQ3$KKH?KSgJ-68x=uVn1>Dkrwatt37?d9V(Z z@vP1xT?FMscqacH&)2Xb=?9*$dC8#fwW9L>GVo+3M$?@R4Iod3GhIIc*GAtRl{?_t zol*I(Vrz-SF49+i!SDLz{(lNKzE7c+zbFZd7hfNJ&NKR)OMT86bB-JBktxS2&$*Q6 zoJx|{_l4!Q@--xM;rv@o*$?!q&jMYI!^fP|5a+XASe5cuvT96i$ zoOCfraVE6nv;YkqPitdMBz}5O8)MoysC|%HMB&hpPL7T3vvusl^KsWuGNq7D)G-F5 z2nLgFJiakwtq8AU=4`Ok24)3zG)l3y$(D?&V;9yjb4~1`I`$D0^H3d=)5$z+Vjrzz z^V(Q;_mJNzWI;tZeYJ22KJ^(%X@)$a!Ac{F(nRMLCDk#HEP3^r-S=l|bbQ?X8AWsJ zn7k#g7HD!N7G~ocgVai9UQzxM?jcP<^zdVnLMxlQL>6kTNPBjl(rj-Jezv}DG<9I- z#E8O`$HYrs`P|CnZnp}Xla5H%3{IA(EW<}=-<*hpaVZ%QWwmtX3~uD?4DHvGb&=A9-zL7f_01XED-}A`?jf)1m^le=;6u2%CG3LB zY8-q)Q|t9icG|wWwCUD5c7dMFEkt}IRTwR_{gvzcN)|)s6;8mmckbmMWwF7Dh4;hB z?cF5W>CfeTjY}>XuF8TX*;u1_BXskz|8f?$-xa?`$(F`{BaG527X zY>dI3gd?i>0w?>(xBl_|Cgx$qP1^TX(cDX337zFv!Yo>hPsc9oWFN(N*!UZ$D#Dfa z4cn84m5Mm{*w=A+f0rp#3loy9s(scgK{x=_aadYA=#=QtdzS4VWBgJs=$MDOTV1l@ zPtt$$ez`5c#N?7aQs=#xJJZ*EJm-%e>)A!w>|(TF_{h6EdbDNL#}fIL-+zoZilITY zdyjXXA3i9QJFoD@h-=%e=OjT{K^>h^`bls46CclcyuSjBSGF(z`*;b|&n2lRa6pno zzaU8q2(7;^NjC$3O_I6-e_4`l2mY!gP5-|_l6ubmH%U_V{|=Hw=D`16N%{jBzq^vO z{1+r?@!2^KpS@R-C~9}~7|Z;#kfofncVx-1$4kxo7?)z@&YMVtDSJSe49mUg51gHo z*xZif&Z+NCKFnJU6TI%tCI9KBxxtnNormvHKvvLbke@S z66mDB(!hU5Cj~(#nV9SimLowOZBof7lbKy)BI=0fB0Vz)ipa!kBt5$@E6Bv=mE6@y zCD2LO{{M5GR05q;_A{MS0-aR$Z|J10&`C{!&z6?NQrv4l(@7VSb`Iio(&Nxc2l{nV z%@OFNH%HF-xla1qnE^?{a7)Tg3_1^)s|qiCOm6RNO6>N z(ywJaQD{wAg*;sP*E0F=BXQ z%%nP|pX z|GO;Itb=f0^oN>UER0829#-Il4R8EFO>Tmk)H93P*hdK)@!MdbB*A*nkvYjjaz*oT zdS{)t4hG!eZ03=LNx_7`kw!XVq+{QerJ0_6G zIK?$t=ra0K@3}jw^RK+>oO))?lrwh){xo!6#pE;2NoRIP$4KN3{uL6f{nj0U-w%PO zi24l93WoYLJn3~1>um9zyoN^a&(&u1@&RElc={KFJ%SMZtHNHeZw_jkBk8Z?j^1>?M~u*ktVklBDVWLPb`6#r^n+~Z9Yq?E z5H%oL(PMr=v~HdL&qOPF)USzFmFky8t19yUi56wqNk;d-V{P|;u4r9Ll3u$bT0_bB z{kmxNwa)2j{b$kYYK3UsZ2dPy>zmd&fA6p4=c1KPk=^XI!m7^$6y_lR>NrX1o5^!K zc1SJs=^b$Qmj_TPhbm#8svz2{E+?+K{@}JgKIjWo{q^2Z^fF)8{xqjAgd>JkSK@&Y zBU&PJe%pGF8|zbv%=5QaKi7p;=LIhCmP{M>MXTqFR#!)>v!gXux%rY^3I`R?l0lu3fFp%GR0p z)In+IO{qoRidNTat>a_c4 zE00Z07oQAI7K!OPePpoK+8?mH zjs)-li4cywc@HeE4WvD*TV0R0I)BTB_Q=xBMXlhBQ$ZJlvw{`}TM9_X?%KmvYY#q! zCM|g+!WG?mdU31e(SfYhZ2eP~MI_Y3wm-GUQY${V4kB#I&mJ#B?&$iP)ip)93LM<3j`NT@{K6VJ03Gb-w+f$qeqI3EH#5CHY|>t#dy(KiQi*MapudW&fSA3w;7p*%2oC-r_`-2#$3ss` zSFFhESSJnM*XT!O`w7mw+AB(F3BAB_e9K~5BDvzs8{5!jxt6{4*p6xFxotRg#nmvj zVee5@r1i>{d3}L#qtn#Z>qkCXsKy?t*@JI=E8<4<$-);WYc2DHJ&H(g!We7UmYz3| z>s!(Fzud_e*BuxChnFPs!PEwCC>12qQybKcCk1c5=8h=DUI#1}_|w1S?VzZqqQ79s zt+-w^@p7MRNVv`8rTFGOulzLi{XX2M-VigrTB?zaOlA^zAT>FW{MUsfr<4DBT9TbS z2TvFw!wBC9+2t`~@C|JNKlZi+!A`MZD_qq{U6ERmQEsp3cB$E+dNzEcwltuu!oh^M zF+=?mEX_Azc{K^yL2BzjASRl31q54W{DGsZ;;A_wsuOpMPdC~GIUHpd;TeZbL+Ld(zVqtYFHYTSs@83VTX_l zpty=QR$lyBXzPxx!DZc^uHRj2%`4s%N{vXPR#jY?Ui|Db5 zzQK-MaC((aa4P6f{h@c+(I34%Eio@CG%ivSK1nB#1RScjXg`wpONOLPZP@9*A*0qm z;gz-2kTmLWg=(B%TGiU}nW3uDsx-~kMkZ7>&96Zp+Quj@B+ZBvu9&at@<_zEFiNFz z#zjBZl^F5SoQRLqY@|e13w(5#jvZyzv#M-1+RAEzQzRowx0J^=G@WjUT-#-7V`XYq z*~Ul}kH%&*vfyYdBj1gU4V$PZly6oGZ7)+zmf2GpjHlBgw<=PjTGdtu6DojN+Dkjo+JE!J0t32OoeWL$WG! zm4g|%DX@IT+9qe(-iGq$*VYDJZ)&*})$o0t3PW2R+K>Sb8`a3DK6#X~GSQ8UCZ7Ig z*@kuTelwB<@qx`BH8(c=CNVD~bi=w{M4|m|RkQb+S6ckCU-39q({;>N^c3oeQ9pwB zrs8DTa6(UIXqI0iqi(i$RisP2KUWQI1V=iXq#uc@c2eHZ_Z z#(6(?B6Wm-5bjEEMP1glUcI%NqcX=Ot6sf_s%0BIuYig_B%t~YV43XZ`Z?}*w0B^Tcyxn41(*l)q`Y(uC z;(Dv4VsDG(84?4&iioyb=7&eASsCgzu-??*tN?mTAC)RLZ0?hULGEYr6^6p}*D=E) zB8^)nZ4=t|_wgJ|%4B&lPY|MLZ>l*kE5L2(Ln#s=^ri;V=03?N$UX`8^-02!w4Sf9 zr!Q5U6=3^A-_8KTBYnm#hQIYumbru~AG%~~`S;MJi54nXlqK9aAr}WFxDjG`P|&It z&#D&J>K5l}E>SGsU}jr9Y>R7di*s(v`g<&omJ&DgcUHT>8}JgQ_Y`Ks@Tc zGN+5>4*JOzf{k3O9|UwQUz(a|5yFZjHbZu#_>#hBOh{l0Rt*bC)?@{B`Dx_CC9ja1 zxUN&xamm>Qkpo78zmEV%dG!&xrs4+6n;OahNBQO>;+hJRhBC1U=o~7#!A##M##Kv9 z9NF3bzCg`HnRjPnGnPOyyJ3(>JdG${c(R-wrh+V%;^ z%{%3Lb*=~ajm+h{ihZqFUOxpkk!0?1scIU~$ZH!U^2w(sDP@yAnz%ueuk%%eq6)Xe zSH-q$*LZ+|_(0-pSzhE}>z);O%kN80_SFLC`VI3PFs)tg}wA zWCZT~5|9%cPf`id){Z1=hgofv1j7VTvwDIneJTweTgRs8*)$zHt&N>p$BtLCQzU^p zMyF@SrzNSfnKTnKS;wYkvlB|vJ20-7v7K->B?-_oNw}4ZY=)gd;k*^Cr>@1`K-1Tf zZ=|So%zYhrtZ%zEvkiCo8CU^M>`3HkRUs<4?{tEW=WeFWOL)7G`-i_gC9sZ3)iaY6 zf0c0)1LWI{bbLY##RKpC%DKMeVH5?pR=X$PYS3mo_!z~Ju$CwY2)LC=DTXn9- zY6f_#>Lhrph&8cOe5~dE3uPCSZmG94J!NH+OITeUJE@UPx>5nQa#vGetMoXYI2GzDNXHTrW7?hHJhDSlKw?MGfjsx7|dp3CW4uuc(C8x zJz;>EX57GlXR6V_wPS79*0*W0gtq6PMkf_l;(`csHZy6yR;U+z@!aj=hZ7nOC%pZ> z-|R>I(sDxU*bE#pYdEXYmka6`-GMPAR~>WTAv;1)URL&gE0d8{A8KXpZ#H&hz_OTX zWs()og=!#ck5P*IhAEa~Yw(0RCh34yXnT~3u*U6cV-i&EhRm!IHUm6RWmc#@RVg-6 zUxIn&Q`_r?#GNf+5;u$qR>#G*4WiogWK+%y5rOdm5#;2N?S{96$%t5$P*_~Yj9-QO z89(6Jdm`9-S&o%S!MG6aJ`C=jz;kyab05#$ZOo(#C)I?zCxE*f+529=exN;GGjIIc zG+qiPl)kdTFOUJV9D`|{M+`0{$(Dk+eD(=M%>)VW^<1w!hEP|IG z!wqjE>iFB+Csd>cCH3wQzJl!z;g^n>62AO;l&?eijT_e2@#W892h%=Zd5oN5XMpAU z2{87&<=#3bG4ANH7u(Ff*He2LFJnlb>OIxQSzkKNZ#VT4irzVNBtl&mO!+E{upcY= z2t*mmz4MmeMg^*)#d$9llg|A97D_4}roME%zP+ydmy6=w0q?vNvL%cDo(#>`b<6z~ zaoqQV$|@%S;Y`e42u)iA<tEp#9VT&f5jU8(wOp0Rdr<5rZJ~*UvtI269v1*k%cVj zWO&u{{hx2@J| z8BSt-CTrn||C|ra{Qf!%Rg{z^RD2?{ixfuM9#9zms9mmT3d{{C9P)eO0$i;lZYs5! zhK0E)NU>~?7CZ-Y&0o86eL7l3bZU@2U6C^Ax%1l9>c;NP>d<+Pz|v;4l?r+p7rk-$3J>i^sB38PdcdiA3Ds8qzJ_cs&^@%4u zlTWxNo^Vb)F}dGdhM6lOITi=dH@(K>YVAx7PlhFs^xo)iPtQ#S``X5vr30P1_ zD8yzx0Hw+P$^9m$_MtHsYsE`EniH;3C!CQ3bRn8p$s!Uu(vmI&HS+Mzia?X6Lm7yXEpkL5j7FB{zX!;IQ4$ zPwVIN6yl+sJu>L7r;zNsQ@54ZT;I{`+0pEJrP=ukCmkXmny~l!)@IMPX4l4M=f>t( zsYG^<2h&JO>D$UbyS|~>^J24WZL@PNmpep0PVlD#_91eSKrxl{Fg|F+HSDpg$CUK; zz6Q(WX0AdZmn+8)r1?0mP7YTfNgvzHwJ79E1aET_hsyT|Xs!eQQr|ni>?G`#=KLah z&94wu(cDRvmW@Iqp;)KOl>c4-yDGoNBn-C^@Pw7kExKx!!GZ9y{>#aQQre zU^#bUg#1(C#3t^ok@6^Wwn`l-BD_DjBGw7YF1rjnq1N*=kO*X5a4FD8n;vkXIH7}E7bh@ zGJJ&7zS1@&^Xwzw2E7G><|*!NFqgoXa}oED@P>RDQ`JKA{}ga9ZUAx8-jf`+a42W z6R*_&MS*8r}JvX`9Pg@)$c2iKb z$jV06vBYS$yh@^o+q#5NEBEu_E@St2g%~xY}rJ@ zSopwq=zDImv~RJjC$VS)%cFrdtR(7ZZTyMESzaT*vx9C`U&k;Ja#oXwM&geg=6jA# zp5mH(?DT&ev;2-E@!eQKp8DILopK94t)%oQQo4vFYzl(9z1w&`iThdOEQzbqO>spY zJN^1G%VHAbiC;*bEUU=x?6_NYXRV(uT3V--M5dF$0=LH1-~}cLq7vqql?l=yytqh# zT9u|$Q9&h)bZ#a!JyRgh6pAuMtDxsz^ww8kLM9&ls-<8YgofApMK7g&yr~9nIN%VX^~T_GtNshHSESIL-XIL84jVlgVM$k zt~*EBoz+45fbcyQMaF%k(fSHBTVSG32}#4XepM{I;Hms$!DEQ6uW+!ShR~KzOU963 zgfD2KB~wUnlrPBArOwh=2Me<>{4#X(_kvo#BBwc7Zl9N&RJ^sp7*>DT7^RMu>e$d^ z?3+|rS-GB7VzrLCAxL$aFeL8rK#Y75%Y$nDj84SWMTL^|C^?=TEW<$AOG9WRRIT8Jq#k;1*CuFJ3nqo_50 zFb0durZ+OoVo3=bQtJ=f&qxe-(h~<>Gte&yVkj#&%2l2QNm;vCW@G3`bVvwXS>_=oZI<=8+<{MC=&lY z;G6Fl%|Hq#@d5qS1uyaruNmgy~x=!@1f-o+LChMN z&^m@lUv$3L8bzgKbl9aEo{!5BLDd+jS%s^%e`56HUWcVi1T8kbPCEn=NH|AG5%DN> zLO@P|rL}?WuKJ2tqAM?rf_!XL(*Au#>F_Vv9u$BhBUU%y6OU|o$0X_G>#2U(jC3V4 zqRiu9Wzc61b_8Z}5UZ7_O0jm2XfAUwVX6(*vWgNW6asAv%%Cn1(8j4_O}Yt^cOLHNsM7ZGc)U zt&5dF?m7pAyvfyEQ!0A4OzVkTr48y*#s=2MY3W&ol(4ybSW`taf%v*os?E5xyvY(b zrjt=0jP0H*%A`s|7M6*GRMYk59DG6r><{^k*}h}3cuh!_$i&D}1JLaag(g;3l#WFf z@c@L+Dg&~F$q`q18IF3@47x3&B+WWzq+)GWvWVw&V$#>U=qr5+|47C2W0qqxqHKf4 zyxDE-D3St8b1?FT*Q6UZ;EgUbb&QdcX+)apzs7GdyG5D@eaO#rFDXIiiKQCT#;4XXGs4msij^UACn zOdVROm62mn8K-SHE?rjCQ6}9aGJ#}2>=zVgNmfF)1T;BKT50`B--Jj=2BW){)vOj~ zt||iAO&)V|#!~A7+V!{OZq8)fQ%bqwG(>)2~i)hd)ExL|ZvaAd* z<=884WC<6GQUla*&@!RR)R>uk2!*Z8i-q-nN~r%DVZ0fXW)n(_oY|n%eV0-{m>SJB zMZ(O&T+hOcTu{4!u8+&bLXz@p?pA=%oQ@o6bqYvrvMgM5P_t(uC@T`}D8!Tu?tw>C z3Rwf8^EnW@MwHDA#|YSd>rKXtwHq^5(TA=F%pW@Ef5;obIGBWZ72-`Fx(pvW=lG(t zXv3fTuq1VJeTpAOLTtb-=rH7CLo8SruK-+w(Lagzpl797^m2S;ayVY5-(oBTOP$sj zY5j3B^2Bs%#`RNO%Jt}nT|6s;3TW;&D@rSN*dcIaxEF$3HmpCW>7Gc28wEVgh4$;B z`>72%G27}e)c)XEH4_?F2Hqihz{ev~u^Pq;*q{MD$l&8>P(|3|BxoBT4CU7ZVz5CN z3<|4;5Qfi#+)Ei)VSuus{e)Gg5Tf=>Iv4{&2#r3%R)K|cKqd%7XX!>CVJATt#<|f) zSU6dxgI@4LUdc~cc3DxwS5k1R8Em_p@GDIS!_bXdBkGu{A|q!S7&+QEa>5jQk!M*F z;oGGFU|BMPVA*icNm!Q9xoqh{?Ve=N30`fwZUO_`Pc`Q(+4h%I|16=Ee03>whaL2- zWJXze5)I~SeGVV7-}jlAFwCns4}pQAMLIYFUG`_DvS@rL@2I5ZjF*+dbr`62gw$c4S4D8%JrBb?4nsocaa4N>N)U!j47jB?76k=Mq!KmkNtw|LxmSm9^zh*H1>U}TW)(EEbTR@0(OZu{z zk$6C7ucgE7ON>0|S3KjvlJWswF!lpdcC{uvZ1^sG-peqGO5FPaQAumf$pPgeN+%TC zg*T_mZsMxJ97ErQWYw#w{nLf+=P6{jZKBj+lq#b^ zaaL6&oQ7k`L6W^k1hv?Eh{g-t>G46S!FE9jK6O|&Biz4$nq~}AJamf*_#n~$1Jo~| zI7_TtG0~k(-Gt-yQOdEEvg8nw;ku$Iy-=Ji+@B$&jnqx-XkJX|;uaVk_Y1~5!+69Nj)EU)ndxsoAriR^*554!eKe{r>Ryg*r){yepxqCY=k5m#ei=N9RNxohe)(>vy4o ztk+8QO|6nwcZz1*7eEiA98Iln9)5(&iwE;mHBL2^Q%i$za1m<_$q*e&q~?+%-6+^2 zJScOBsq%uYdF4;fQ+DIsB~-0V4Vt&C3t6JypQ;T~O;}5eV10SQj8ca_P+%(0&C5tI zm4CKm-Bx%bhx_&kUWegEWa;#uj*>C6AFWt()FLMRqap$FQn{TchZvrxGn1@G`@lw$ zvNQ+7;iiO>LW#)or=#4+vGO_L^jQH8{JBpEJb6b|ZK||)R22nB3mkde3uEP3f=cdV z{F6=?NSbmKBvx^GT+%rC1A;QHc$_>dEchsBLP17$6d*F`=EgkEGfo~CT6M^~M^Gy` zC_T=QuHj1U1o?wuUo;}Ws!o;uO=DUm$sfHok6V)f@0*SLOM*N>>Tc|(lf zwFLQe;ror;ghaV6psKOrt;S2g%j15VC?6#l%)Oi_|Bci(P-ZJ%=J7o4yF_`K)Y=H` z6&I@&mV@i4iqBnKnojRU3+SEc!y8fG)}H}y9c z8L~S~P2~PDUjE>SKl{pjK+0U2kf(T7oL19doTG|sn^8A~dt`!qoLQ2-@1CL+5?8!v z&n{#Kk9ta6g;szleW$m&h%9b(Rcv)xq%IGM3y z$FJ&hAMuJ(&EGK^WwvYxwwTuP51Mn?Qa^ z{YhTBl8<+IJvx_dA^9coxnBBpKK?bYXN=2cCclL;snD>-OP6|^{50UV?|MD4+`>un zSnWucP1?st8fN!-B3!oYK4Wm&tOj)eMH_qx?)811Fz&5Ma^i?_>g--_#4~fAnYlzR%O!fZJWEJ9&K>+(UenVPBKy`v&(gFE7(bw9x%EpPtL7&*#%u^dS{s98zt00!Jxjna!v2zwWIh704Ya8^fp0M5>0e z82Q2nP&uicUc{FlLvqB6ENOfVX`C)ao)-f38BF=!gTdCzm8Zz(h3JKpZ{!ULsDTsT zCpXURejntzU+S$E-?ZaHu)XzRmhVXvuJ@!6_dKSQKE!>;#|89J)d3_fp|3vN@--hf zwm;5b>5CU3_R{;@8~4eFm_Oqy&gvuf!~FtB1XVt|AsbC4crkA7=>m+K;cI~-jFJRf zR6ONvq=ccUmvqi3q|-3$f#<+vAv z&v2%{0)IZkAwEMJsQ?Z;Qo*VI3cMu6Qb&I8PBCPZZ5lq`vHpBN@cF9wdKBa>qc;Yw zdOJ#FWkDy=f%%X~n9H1|+*%kbD5VQ~rLUQ`Nrr^e>%EQdZ_^8$7*RX{jC;_40;1%>! zHB)GCl3K{!%)VNl;EV9TwspNAk-ka|kZ363^9ly?vV30t*QVx&QOXa`K=tPRxSp|! zlrik+?{%4%bd~0*=)6k>y_&E2bbrkl0z)gTMhxdIB2 z;Vz9fR#2!6^L1u4>amG<+5C*!ul>4zaIHMqN&Kk%(8EiQ?E?4IRBT}ThzOD4xIi6F zsq76P-|#q3*ttFjj2;ZKiZ9Fm+FrtoL1#|$W$N!Kvx2Aa%s?4AUxxps_wsMS$;;~I zyG3jnq=>e;? z#oZezZGf*AbRTh4mw|{}uX*2S5(y#C%^T^#Q4P$sZB79XEl%z_-^LMJW%^vkjy)3?`mxK9M z8b~X5Boq48_HeJ~@9)vW`|u0B>mJre&+omNk;BbTlP6=X_HvqBImF$2yV_48+`q0? zJB0q)>uG(@(AUeopC%szO!J#Gc|@!&4bzA1tZx<@EeUqJ`p6tNToPFy zTOVe4i%Up{MsY`SS?S;!itneA^pk$cs|}!^_kw9@iZHG1lRmB3=E3BE@pXSoA&+5& zm!CNe`QG|)!xF4ZY#;j44PTIScP{F%{l?2r!}LK+x$fhA+5khMm(0R;p&^3MFv?d6 zt?`=c!`;7!X+s3%99h=7L&#dkkNk9_b^5zL46%DGT7x$65$om~TGda;vxJa8kyan~ zN!{N`WweHLATHWBKiMu(c;A?Y9AT7Y9nU}$_?O*mzU`Z&n@J(eX!jIyALR?F_(H4r zLR!AiSELMB{45z3I*cz9OB$MqYts2LgZMJb_%acEnIxaAy6gBdA~M`@v0!k1n%T=2 z>Y*Irlw~nrD1tL|2LZlAW?yZfIKw2kPr|m1|LYZ=AY>X;~Y_5{fyO5rR(yhAh91pB=cmeYLd{4P!DPN6|y|3Ky zGOEFfL50d4YaO+Jb04nbs$G-g?kaaY$3OoGw2tH|q-OxTf9Uu%_BwyvVML0IM<7e9 zw^0jY5;(aOjZ)+Bd)2PM|HYXg*|-1#n) zWQ;{687m>d*a^*D@lMEVK$h?l-JZ9)Zl$Fv175a_!zAka{G)Y^K3Jbg&}|yk(A?!= zmgg+E-{Wswe79Pl@=R9Uw>S(>pP|}dd4$1tC+|VM3cscHYPV!Lsx0}M9VJ*$*C3VR zEZ?|Y_Ez)+<(2fqJA}mz1A&2Ijbh9=015h6IvC#+VxbOs76SO`0dxrY6&3@!st%9n zj1&&t>agAF;C|^~f9aSp0)Lg|$Z-~O{M2C^>fnCrV1I%fyt%Vq3`^)N4ftl?OxL2%s}_G^Aea;6CnP`y8oY4s!q_bLxc-=R&aRC>n)4F48|7HK0Q^ zZwelrNhKLTvJ8W!=sIijXTCtZdgD`6d;&+Olv@a({$&oR|ig$riT>|T1I?gP96V=gU3`ue?t|& z(ZLxy*f;*8;%e`~Im4eg@(TkBHWo;QZdh802X-4aG}3B+Upe@0>WUv$t~fBF@`?%v zeJfN$FQUpiu&e)|az(<56wxjrd~z&+(IbVmQ>tPALh@N0nBbkNIzv4!-fQ(u!Tfb?Sg+ z8NSkr{i>mn|z%)Z|YP-eyCES zgOhf!#2-|e6Y)otR+#>4r8%!XtW@#W5tUXHIJ&ezHFT#P>b%v?{bOD`d#nB5#|&_? zLa`#j$;rn?IlDEZt{wI4VDXGjz$@sFw}T9Gko!AlA2R_dgy#Q{KAr8h&UWtIcJ|%& z{~~>w+ik7wTys0y3_1Q#`s8dHDSh5>wuJUbA(zn3CbTo9*~HRxewGufgw+|tm{>H2En5TG$#z>vJ4EZ7tEmo5#|{Vkjb3$G0YP*F(WReE#2?72bQ)Gs|U~| zWK@LD(6_V!STS97TQ2ao4)PP=;1j@V^6Hm!o=`2jGK96;uy*dZHWq7V-lbt$`MHg| z(Z>GV#&ag(vSnvsjvH#@{@%v^|6L*hI|0j z6Nvf90Q23>AtviAqEk_*ONXmLvWWoAA{KC>q!qaDT7^Z@^dHHnf6DwrHoh+Jyax@9CpV6TZ=zf0LiDf+0xs%^forV?SU9|pw@V=(jdq&yUmu` z#-+5eDQ(Q5XNd{VdZ|Et+LYs^iYOaOY_lb`aj|V|d>iuhbRd>-tROzp6@clkss)2% zAvXZj#;S&O>5&OwXxHFm)qfb8Zi%cIwrPpp>1q<8$;$0{>q7MC}DgXJHBnP zXNdr)!;b@i+HZxtL2aCG8|&Z3&^g4E2eXAlB^e&YF+5U#$fM2X(Ppf&W7Et|ZLs2> z;2_fp;{!C8Tlg&S8Uas{oZC3)x`M&q@M7>20oM*=C zy?TNtg49p)lU?u5a|cWwy28&-{Aun0m)UL=Ql!0E- z;{3qrNZvp+jSn0ZBGs%|ROvr%gzk$pLpNSC)Q!{&QP$It^&e@8Qm@$^$S#mJ*I*LN zhTx(k=AJ5jBaf1!`xEQ)C=Ztbv`*^^mdoYd3k|L&Lp%_~p*77nOTjdzf2V z$(C+;xJRh}{_wd)A}oAcKtd6(4p$w~ZBN~mnmCa%z$QCCj;df=@(X)-Pk69eim7=I zI>*quWS6>HZSc?84yoVl6S(n;-T0e5ZLSoD+i2YQsa^65gumOkLrO`pfF5e3(rvWD z8flshKm)QEw*ptC3b#_Qt+9%DcIKW|7_0`;vr+}epcus-vMsGM zoFavHut2PiFN++iZ?)C8a<#2&eJk>KaR@Y&1C)WIt;?2!lTB?aXK7`tTAAa|6TYsc ztz2m1QzZ7mt$SAxhN0ew0&v(+}U zm3yR>jc$Eqgrs#mSH%xaX|+vh<&>@L#MZFMQmN&)VXyv2FDi{ow>WGC|>FZnes~VHohTA@lUIbD=<|05yO%LNeyudJ_qn*Fzj_` z=bkS=d+imyVKB3Ss1X910X^RuwwGNk@RoL?=pRFX0-tppAn`4(9HqFtUS zm%7Krc}xA4yT@g1b1#+dN`FGm%)}dZ%JaA5MhdG|gllY=PL%4itpP62^|{tKV@j5?VO5{Hbw` zP2-%g#&S}D<*LJ#yjdqFD-@Y^1{Z}6?P`e#(%E*laJyRAT`m8^8Q~IoOibu7r zSkII$Q6@>Mhl&fC()3~urg~+Fcd?=uT}+V{+t6>4C}oIeS0Cu3;hF!P>CDht!e^SI zc{->7h$6R zHBeo2C|VZ1loK5~Gjhni#pc?=+23JZoz*?Z>w?IZ2s1GaZgspmGf3jgox#Kuq*Jp& zE1_U~v%*5pQTmRnbCLSSXn?kZk-YGUbYXA3(=S9W9D-qH#W*X3 zwLtMgI<(vd04GDRk4k8ZzNMM@^)(`NoRtz7xMh5fU2wo5Jg!EMtD2dmtwd;u)ywhr z5jB_8e-b@Luq8dy3cXmYhJ*iz#xvnv_%YQ`r=X_5k}%%+DJDW0jRA`zp9GmAR73vK1+{m%J zg+=tdvM~enlX2fbkcku&(7z5!OIMR=sKDJ=_%mC_?3p32c1a)?q;4|M5U@r&KtFwx z&PGIDjEIav>s1Tkc!joTeI`mketmVKPO*Lgx*HTt*T0A^kj2YD(nX|pfP7ka6M|J2 zRYyt!3Q$DnpYk+hMtVt}mQ2kDqJIevT62rYc?0B=0R<2mdo@HUSs4D4np_lXPavNH z=_L6OvMdQGpvc8)a#<_|WJw^iv?Orb@+Cb5ZAU?z|rpP4_t5HkOfz`0F$u4z? zbb*!!rQbjU6h?y^j0QBSET;3d<_ZAHn65eadGNZx(knpRd|d$CybDh3;hA|#0vS6S zy8jt;Fo`h(cnpH9JUW}{-AFts@Mh$jh$LN-L8WXywZ!Z%R%76 z7sSneYo^qt8rPph1)>fGkzfHFRM&&r`Tl$l-3?xyrvDsW7|1y_u26^-jxN#fKq(-a zU>8o_{~^KA2Fp{;Txv7>Wb?2DpBV(HY0X?xGdpKQ>byu%xNUYb z_jog#=tu?$UeT%KCAgwfIdkh!VzVu-nVa6s#x*m2uMlCnPTo=l(z&8e0J6DLTqgqJ zDe46=Axgr#P6&~jT9i&>RfMBZnPM)bz(B>4`TKxuHJS5rjst_5I>oi-EDJYnv4cJQ>AP^ zpq<}qlKO%PF@c;z;8+}cyIM@dX9vgAhwO(mzEBM2v{l3Ndv$yR!fe{USL>H`mKG-U?4qC49&4E?k(XU#E|iC z7`RJ<%T9W=0Xgw}&tz|aRc>-Vn!AkKVD74kcTQb9_^Io!j;SkO#!p=ae(HMVcT?AE z{M5C9pSlcWpn*)zF#*5U6yfCW&4| z(Mz;+S}y4JTJYsbLng*_Ox4RzVDtHj%|L1fz$5in1DXdHnpI8Ux!p%*YUvc1%P2CH z*}0VnN}2<2gex`ly!7)4_>7SU}6MiAChnZgP1a zxnh7^#!USy5w2TQRB9lfL9@@iR7yk6UDBf^pIlw?9Z=&_m|D{N$c%u3?_st{(U1$$ zlk(tTf!HfrG7TnsG((*L58*`tFfuYV$3|q|a^Q zlAGAnk=b8@o7kx%(+`7fA-2gD z+r))8u@jq0JYV58cV5SER9gnEjB4V7o7hlib2>*!z*x(h*c_{~l*B;_?QjGx2g)cY zonVdAv@jSVh*2toMF^OH#VB%Ne*(rlvkAof%V1m&BdZ1~EcHe*VF%+Qk zpIEUh#(S09{`s>YhOhA-*z`&SJe_XAjXz+rm*TRND02Yumecul#)MeVQ-cs+hrE~Q2ga!JI+a)MZSApRTJvt5VYb@aX z{$-v^mP-Ai61q-79hq=UAA1TO&Bq>Q=A#Tl@PvsJk^t>-o4TZ4DPZx0P`vJ&7EZTM z-;c1L0nsSjaEVms4Q)!s;64j1qM$;p4E|>f^3Jz*+Vj)~sW>j$kayUyIKF>@=L|MZ z4Zh69@iQjR63xQ_$e6LXumsdr7cd=3U1H+Z@88W5%!>F+o4gROtB4%gtx`2|H zj4XCZbji9I8O3yrIkqG#zJx9=EX`aTAG0n?zX&??BJ8N3X1s3Kfj<)rr3w!;lz0pE zp+(T$Z~^!MPkNmjHBIhgIYIKX;7TP^m;nMq06!pJ80F-JVjFP7%6%t(1Ww3` z57@M%;QJDlXDDM#DGW%;(iiuZX3i;8txMrjsm1zYHj6IJ3|p6CRuwL$XTxsf1)YNv zl0|l@x3vx=#cJwP>TCT!8-UezM1Q)?rXNC=tD`?n?AHH;E?=cSwRGwKjxMEM#z?!= zFF6EW2456RN`U){bb_SPF7=U=L6qkQ-8#pNXuaFck8!EbuilIGkYIGTV-dVw@7DOI z<{0Lbk$6U#)312It2fvYQ%gk9kd3w3SkA_>HkL`xC&sD2WNlxv++~)%%>I!k?_hq# z=Z*rwoc}4y9LOi0#J_J~{+>@frZapt);Ur9N8BegQT)yd9kCn~dNa$Fv8>tAF5U_q zu^W;Pu^hv)2Oc&TKwlzT3Ck6-?0!co>_il^Dh=459dW22U8NgwyZ7NkBR^aHTy#b>JJfAszT`BFnyw^63q+@R z2@BW{zSX6rQs3y=xVYuS(25R4p;G&-b>4LLO4iBDy)>f(27?J8rlp>S;T3tYR|4(Lv6cKDX*qZ zlaA|Y-qq^UlO5N|uGI;rHfdr=2;ZVB6 zkyKxaYJze|LHyqvI(4wcd0LdS3&rih$!iT@F{CiXn~)hcCj5ONE+TA9Jb@`n6rH2Y z*Bc<#-fhkH<2RB*@NxERk(&nNWe^Sl{b5QiK$6qRWBe4BwxUa zB5Sh^9OYNSf)dPS3RqB%g=05;;NE%xQ%*$y2`wpuTM1aso`4l4tSNlq7W^mSwQPtT zh^!?(=mJ?wWat7}OMKHI@Gi^|Q!<(wG_>FJDI`$TD8tglw>><<8%e)}lOjN%=r5oz z=K)o3KbCR4Azg8s5a}?vU{uC}dbq)Gz@&VXVQEN9f;+TE#6NPp4={E)Xo$CD$4&Jrww<@7-eS#yf9)^%B)i(rqu7*l%BTSdYI zt^?A%g(*XVS53|;Tm&nILQFYDwkkf$3^%Z_Qzp5s0u=yml6PWR`t){WHqRm1p0s@2oxUlgf z!R|3zM;GZxzuR-l#w5V>l@zQYu=J#^JxQKw#}5iL9-W!%5-}&4P|5E4sM(0W}e+p_(Vf`Y58mk zIE!JWnV&zAzMwq)DH2+_lc%B z$h$8%J1@Hus5%41(XYgfYAnKK?Pd=Y^!^3&+Q00*ZP8lo7J6J>Zg6&qhi<(|V4l)Y zrNGylu(fMN*)+L&rPPN}3Z!B!A%K|iadGVGq$Nqv2u*z+)T}Y-(vuQ35GviC@C4e9 zaHwBfAP%uK`G_4`K6>8hN@(n7c3GC_g>iY{cdSZ@aND!r1CzyJyUct3w%5HNuOK+? zusF|5>f%y7YD-{my~YQV#HFXRJ2K6q8uBuOYct`~tfyf+UhHF&ZTD?D6ZT999h9yiXHK))0uR{HtDhVnev zny#wn%IaBjJtR9PWwso_&m8p8KaXmo-ggC`-W{?ZTH9zQOCbtpGt+Q!i(l3wHyAd7Q239y@9V2Zs9l(@}+v}!PDdeVD?lUXRa0! z`?b&4&+M!d*;dzc+Ilv(K8#!pOAOQ|7a$-&kDh^(azsNb>TN6Pxh3`N3Lvm!N5`Q^ zKp6U2@Vcg+)6}!`>z!W$!hGRpzpTRRaIMmnxl}|v`^@9@w#Vx^bv-++ekA&ckHxiM zW*L+bS*&kS$REk zXfJH?kFV#v>sjx5rgJY5mQk?Y1%r&z@d!ARC0Qj~yKvhTaZ1QpQAGsS)3yqX{dJ;M z3;QM5u5dIPp^yS6(P>9@_~0CVenQ&NvQFEt$GLwUXKx*6rtc%hNA0MC-f_-+$N!Lv z|BZ>)>?5X%*P^$W7xxj-xVDb@avwqBOX?W=KEgLb@$3>)@Lrh4Fnz{w*$4Nw5(k&2 zSz=)M(f_{Z4Ai^&lsYEiEkY$!tXRUVd5f5!D@FOyfB<*&n&W+@=ivZ1SU7__`VxXN`U456#ARN%k=pU0R3`-!+&2l$tl9OvdAXXiU! zj>#w%!bIejJ+%wg&=SC~Xh-jsq|I2QM2BSTPnM#CA){l2`^yg?YZYxiFRtu^E;V`2bDJDWjzl$oc)p3{W z*voaOf{FV}h>#S;SEv%<;FXb;oa8Iv>bUkgw&Oo4N%+r79y`XoP(q9w{dS%0Z9p?| zZ`ZMJ*CD7a$uyM!Qm?$ucBGCwSjQf$d&7w}0mvbQc*z1&TEtlZ+U%{f?XLsWEx%|; zm^o``f1Qn~eJsj1;}`dm~Z=Y$4lr)^YiDEQ}#!Te5_^7?dvg{&8R@7;Fkz zKB{_SPE*LtpQbj-uuK{|N|;>lYJJkaTUzDsMF% zX`m+#(4ksd6|+J0EEHa`(_SaY5;u~v#mKfYwPJ_;CMnzXc*@uWT9!g9VQV)+kRm|8 z;exDnDPTSh25SZ!k+jO360fEG&>jWTa1errt4Rpm7BN7FQFOSPR>Ibubr8ErOJN@b z2BG9CCLL=a6?y&H2AUe6y>HS4MJkb9`y9l7grG|UWWPNHk^2& zCMQNwiEtiJ0!{YOqcx--lq+e20j(yFMy$NlmM z1a@Gu%ZLPZ;IBjBlLqMV2HN);P0=0@2dpDh%h*;@18_2y6+dmM(3>_kZ z1isAJ!^Bca(Dwy5$??qE!-UM0JPN}_@$yvWZ-Gtbp6`YC zhc(2W#RX()$>7D@O4u%CUNjK_0)J+wiFg!#PMIKlvOn{Si3p8MtWC#n!-vN;+(tTm zYb`XcV#!pM0F3y#5Se1XU7v!|q<#aWKa*xA9$8^MDwzdKC-N|Sx}4;WItfq*o?S>Y z;*S1_IR%8Jb2TOX-D)bhmU+)i?AIAe;(@3z381jv#qphP6os@X6yXO2=AIb@^ZNFq zw(Uo`?MK<|M@Pox&H~6WI$maI%Tb%|D7WP(yX7bxN+Wb=1`fZlNZv0D=Kp&zOTTuM zd+8{<@#upo2TqS!2FV+aa%+yV>yGjR9gdVi6Z#8Bxm8Em7lzY1A?>-N+%renm5wyW zVKw{~qY}hHaeVbF6^f9#qlcb3YJ27=xA-Wl1yAd8!Z&&OQQPvPT*gs0S|Ae&Jmou6$mm}k_$4w{Ab&*-nE|6a>HSwRH&O{y8XTzg}o zA^S;7ztNET#8%h+C)f5)s$ujM#Q5>5n!*qH*w;^D4ueq6-QWinrcY{_&I+PrTtzLM z_nbhFgQ$=3H>x*P;Ku7<3CS?mGA~vV)xNsgweu9`3q13-%g-~O@K{ohWo)Qr9;qT` z;W@R;nkphxe6)J%h3dGt4SAGdQKe|hza~Fd&6HIW)nlhsv(eR3AN{QA z9j6Mvs$mw?5GlB-nmJTMOpO8Tb7zf)^am+YLKPS=a(DU;{dFq@A8RMw}OF&`yTB4*d1 z)kJcQIk`r^zY2OZetJ#D^co924Nf)bBOy{@gochJcUDc#t73eP5pvnKstiSqb<_RA zm#d`W_>EQim#fU1s+hE6#G~$OQ3>YUDt2rQQ+SL}iRr4z3#*uSj}c)m_Uc%5yuF(F z=@{{xvhYUrpBRSBk5|3?q9ReDj=_8NPrdb49TBWktiLbY8wTJcL5xt%2kuj>yN~<~ zR?#s6WTH5X&fbw6gkujjd%{+Uo>u2j=^9rLbx&R!<5rx1@W8B zaFYxx_GGt$jLj_ENdAUx)~^M-gwlI+A^M#r-E2m`$s*k<77P|>r+psGA}|A_-^h+| zmCB?pd2f24Gx2iGc`NtA+B92FYH1I!a~WuFm|Emr+0tickTRgD9IP5v|+UNJW z=QdFDF}JvE6Z_myL+1P~zy2tkh&a~M>Itp5lyeb7#5o&`_7Y}cCp3N``QF#+SA zJbi=pg8fIgbZxueMP35dkT?h+$tT&<>E#oIvnMf z2Nrm#poASZfu{Lx5T5A3qLtx;@%VV#A z#dDU6hW19WfPLtRm2i3(MAY2!D{$|6+85L@13k`+2URj}vVi3Gsbrd2Vv9JvDn7M} znbt_C@b4iwT_X|Te!XH-y?A}SoxWDV7#krzTxeB1Sp}T}Tl4g;s`znL%(smYvusNh zBK2!k=GUt9Co2%C$Dtqr`Yv=0VuZuuH&vk}>uJ%T*L~g)x&iLN5L)4LA5Lfusg71| z4wRNK#SrBPz!DScTon_7!5;d271%?kC_y(k3t`(-41v%3Ikm31>E<^SQlD z7{96FES~OtTj~mqDZIYs8&Dve3*O6VJqXv_Yj>u5e23xT0R?F#=pj5h$6L6pXYBHB z6auhfpW}pKsXs(;!SpXyFfYDMES<}H3qFL{qGeUF!{dDxn1n`G*+y4!qpR34RU?f? z7+Tr@E_NPd5mnh-syJ~KE3RT>%|x`W9QBW0i~jd<-e>W_lOZV?jiI&kFm%ZqpqS6F)6xps+ za-UVQUsi$=MSyYx=7@+oNdBynyHLqqs${-sCW3SqE5T-gHe$pWoJGSQs4@g*i zeXmm_TkQqlCB@)9nJ5wAm*5D$6p`Yadoo#q6T*~|B~g5Rk0Micsbg>e_EKb=nv6xb zM?3G;C>5y5c)%)xSEB?Xk9YwNY^Ih>K!*5Vz!NZRy^frvB@^M^_)mvlW0ID93~sIe zaQHPot|gyApUtmq;^Op#B>qYae=6*~pK44|nHvmqeUA_6=D zPzEec7RM9<4)fm(+wOTFaz)=g*@h?tmjhA(T(0+?%s9!3m`h2KRGhyDAV*m;Rv(7m{ghy3*sn7 zu!R^u&d6X7;L06fZh8P$UUh_d+r>LnXUxao&^aiH;*uIoM`|r?EPRJP3l&2FTp3n6 zI!x+MIdEZW1Hy&vHNeDGGZbc<;lzb)gzXoE3(ITbabbTqbd$b)q-V{#8T5&a>+z?8 z##RBuc`a52FtO*IFtM?KaJH`1@i?(uKtjBdkuMvY3wsgIA()s%3ox|tT+)MTIq?(?irRN)XOc)plAV}1= z6L5(ND;upQNm`Q`FPaFk232(cy6-DEn0w-J%LEG?k5GS#Fewj_bfNX=bzctheV0sBd zHV*4su%K0wQ>GVj!05o{6ac_+NJ+6IBAYb)87VtMPVn*5w4t&c+VZxFKcQngmbzSd zx%}{C0OUxTu*s(K*aRsNIt5QYj**)xn6!2xczS7h#;gikarw~h@>B|TFx0s5JQh1O zHl}xHdDK&r&nJ0=LrBlrGjQV>ELIICeeF3c)~~2wD%yz%-$fNsQ{++VuDry?ylBIx z3ozT(@}UV8%(ZqR5`UtC@$Dd<7_*{$Xny&p^D*1<@*(>XW_1TK+4ISA@Dv$JS(Dgjx75@f2>gFjemo%AhvO2nv7~WLu$yS^pl` zv3FT|AAyg2k64c<9bx2M#B4nJ2=iPQal|d!BK7|8aPP%(M#d4r87d3=VL5W2<~v(| zt~}4+G5L0RY)n_VXU%m*AX zDd=K()T17I$~^Y$jq0D#nAa}u|IE-3mu4mDkJ5e8An;$c?%*k3VwU>!PstmK zEoZj8Pf%`ugZuC6hN8-us`rU-slm*KltbWZ=_qSE!-o0zFgGDN;Hh%QJP&%I{Vu}T zk!j_;UYLWoOg~8^2}a$rXifJ6YU6KPnAbl5^T6LN%*hW3`HYI2BxnJks3>ldXVEcr zS1eMm3KvDtjrHL;@*!D-yo_&<2*)w_50ph{zG$g{SSdkPLO!YAl$sC+aj+isNFY6> zqX6y}Z!=X@;np~8;rmpoV=NlCW3`)JeQ9!^iFv_FEW}Tmn3Gnpnjf;nC3vhmWC5mP zJWmmG{SKS9+_rYW{v@)aR$RD?OfM;7#RcZ&Q^bblgQjE&a10m(D&AH@6b2#@FjQ$t zY0(H2xWS&W(2_2@4IAP@*dm4W3zPM~n&F~#O5oj^5NRsPvX7B|NciCu2N>mt#Dv)uCBd@V(OY~| z;y3NXt+n9Y+-F(^ZTQM;`^wD0Xy}7B%;63Gs13#oaJ)6b65(^#44pIE&Y8JxGkeC& z?1DmdcMhYbbsg@tn)SE&>(0ZyC(Zg_`0KXAz1`+lrbvBj3Qy>vDf;(O+X@Pc^_#+7 zjP7vkr1DhOSywnG$rap6uJiBI9qw&5Kgi$mAb+KQ-z!s4E>sGOQforsQfB;s-?Qj5 z#F&X`G4!n%>Q`K?D>dz0bhTZx&ILni$8O?CANo{ zEWl-lnKfsLJ^0fL8T(lx9RItCnfNjBD1Pn`v+84_7e8`{dGs8y4mTcRj-P`UHyvvE z{v3KS{16k=3olMv$kg}3oOJ&%^Hnd5@PRTWsE_zu{B{|%+EFP}=BTuw%vtH9WvJ3O zg^IDxT0IUsYW?{jU#rWRgXoj_*MpcdpAt_AjxzUv7EHn=!V5omuw~&T)P|=HGH+al zHVkH>Huy2opAkNI@F6DkGiZnlJp7Ef82-fpzN~2^a^K})V}m7k5Nr%BWEJQVg+75D z)&orb=R|O%;?N!01}`n=L0LD$ek`6M8a#MMmg$K+b3Gu`$-z5kanObbI1jSBjJfnV z*dlUD?#Pae25q@h>|YDcyE(;oWEE(8hx15KU^&d4PQ2UH3d;-fcp1ERMdaV(UmGTn z;=l4X46z-;+ygH4fcybE>vAw#Ro0IX;Ao*7m$MhjcR}Jwr4r>7-I0AF;R{a@R}@0o zu6&tfX&Lj^FJSehc=L|zSs}`u1+L0}yL0TV;g;-%+>XozW!+qsg?CnkuCTg6&0`FkxhL- z#hmRAsko{Pg)bjLkikg4DY^c0fMn=Nh5n9g`w040%C6 z+cuJ*DI*A4@fsBPfS?tx-jOvwAn4#L!z79;V{U&*1ZCxHy3>)wlM{9A#yiJeen8KP zmxnVy^6&HC`M+zPBexBxC|;-%=&dk{f6i{!9M zxo=%`;CQav^)K-yqt7bbcJNOs%nu@{C}!Q^*XgL%!N(B`g(&@fVAC^I?%4E%KqW68 z>=!Nq-gltr{1gdy5Cj6C#X0eJc+YBwWynZ^XZ8Amb;X`c@fPG+tuKb79o8ey>cZm5 zOzA4*Sq%twrgR1JtOgHkrgQ<5X7`++3mo>Ouj9jnNQF3jBTUvKgONa*6h~?NiXr*7 zUH^!Kq#%jo5B?8H%wZ0-NGhG-8Aiq=0(C1U-H9BP5)K}u)_-ERm}xe!+$qACWj3M$ zuNdDV93Y|uc!fJN^=o1~t`IWqUlWNzgZFPQti7Xut^_)=kHq7S$f-zijuZ&RzIuQO z_=X4+=G?i>#C}8U!gFpir@sLOJLgAc+#s5kw>)|0jM@qS}Qnu`2>Rj02vmGwwm{PVF zr8=-UJnE*blq)J_iyovFaKAFAz9SZoDV=)--Z7MN8%x<&N|{Hlfz(ecX4YII(xCMj zrL3ludG8vr756P>9=lF7>RkJ18FU7ej&>niZH_%i71sy5;eB9$K@u>7mU z_AhWjD`BsfKoF$>UKx=9p|Tb%gQgGND6!or;jWgj10~Fk?}_kHCARNMxV{qhlM?3L z?}^Nak5TDDflmzyT4W=QW()lpl-6g`0h!N~oba@rDdE@>wz-6P{O_=dQ^Hl1uvH}v zrENiMrD;BrD$Db1Zxz*R zvPbJSrPFnQ?4ia)AzR2{aZ#_pVk)k!87{|S%IoeGbOJ{5o7!Uqt_J#|qXB5oNxGz) z%!ShiD__8qO^p8!L}=K4$pE(n*^bNy9q#SN5jp0d&q2Af;Y?Y`ZQLbczS`uiz>Nl` z@CR`7n~E~1$)0X-#_0)0IW|kwLO(1zxbhh|n_NQm;!?3j8>Z2QYqS$J+6av{vNCXj zbV*ljSCQq2f$V`g{Y#+AwAR`hR3*t*3Gakxv``<{eSiv~$8`V{m3kGCml!2ZnJ{^#9L^b%x>OR06#3-+P#Unr-$Tg<$WNf;BJ%8aVWJ){$r53m>scZ8b}%Aj1R~__QL%79 z;raEa1e;3g19G9PmE&;$|4?KP1WqG+;WGea!R-GD&J!M7G2wx3#a=1qM+Xdn-h=x) zT{Xa>V#K1!FX9&SueIhrdeFh56$@@#%>BrX9XJ&6=UJ#bXFfP!4$8bS;89IC`B#db zhIs0VxQpsK<|QT6^z`Xo{%Sf#NdXpT1`1V2$Lf>`u4?*GB^X36h%Kfs0U-j;vgW(M zRN=L4EYyg;>h=AIm7&nh6deVXK)Kda56hj*m#gN>jpoap!WTOginVq^u_tTIP;jI9 z8-93%*E)-Raeu$g6^+Pl*w*L?b{5QvDK|gZ;H=a_fPAqOc6>Y4^t)>MJvH5>rn$;M ziXQ=L%g>1YqY?X`s4aIExfHb&3PP{7s_7GIx=l^DtLctPuTbd{IGjXl=?A)^H*>*E z+o<~>&{Ub{e0i?(Wr~dY76ikaVgotZ089?oyTnDLx`_T59S!t`*g{5IU?8Y*s}aCU zQyS@>+yvaZO$=vZlJBX>u5Pk(fP7a&a$2(0K%OWf+bR08n*OYt{&ax8q@h38(q9

q_@4Fds2=pz_dMalD8@(V!wO|J!RHISEPN%JS+fG&!HF|cQYn*7pW!YK0ND5?v- zT}xic&g`OS7={-q9obXqwRRR1abZzCdL>e-B`>d3K{@hh`Axb{DvpZUaL=`J{44|c zRire(9-gd`8pzM`6}Z-fWm9r3`6&#Cm9=>CDd8Fz5Xqb{a!e1Ad|4>F9>38b{0t5N zZA(JXqMk)X@7#D(ev|AAD1heY@68LywQIxW7)L4bW%p&3(bD|}+IExlR8xT(YCPI*?!0dy zKLs{6w%<>Gy6e3BXAKQoKc4RI-8knd9it&H0kcF+?Wz-%;V@!4$DY3@@1_R^=yPiN zYpG<CN3uJ9F(<5G;CFDH$C6&8d_q!-L<6#UN*J`o~5A7`O_8Yx*f}lzUma!=b@F>NM2L}1AqBYRA2sgQGJCM)#pG| z>oiDKf5pq{i=YO9{H*j^gGBYkhobtkhobtEVNw04fxJ3GRDYfi<3++t>PrquZ5)I1 zlG+tcue;3rPyLDr4lAjt@MiEb(x}aR|8B0B~S#?Wljgy);uiX6Vy0I0TekC^cjht z&_d3#(0!oKNPL8iW#M@E@b?Vf$TB zXrk&9LB4`oBMB4vLL|?vc8exi`Z23cz(>wWG*B4f#d7 zx(lf#J=2jgJ`0qOOZi|OWl%zGC=%2)b5-!)TCk-eccNWddi z>GGmbUfqwDYd}GY+5ppE<@i`s{#Prj9x68isSXVpkUTJCK*d>EgBxGK)`(;S0g+>5 z<$fK1caE4^UbQ*9s0h@&ivgR|Q@QE5 zJ95lee}u)s$Gg0Y<#%`aBwOy5xek!7eUakI@pJo|-g?*DUq_7#pa#Zb0rr7Zv`5@x z@u`yreAsnRekt^70-pqdqg$x!H|dMh!O6Ywt~3Y&K*%q2xi{@GWy{;UOeXJlo?kQF zvie82W2p&zOvHfe0gXz3*~IG!{BFd=MrF9$qt_p8Oqhf8uSj>(m9F!R@!tS) zM*1pt(lhU8CR^YgqN8dLRh2=cfxFIyGyBrIcR?c8f#nurHJ7g{)|iS?rL{Z7Tq4O|Bg(IeT^t`%tk{juT`Q9d+pF2 z?#hR+!1nvBQIR5R|2?pN^vYCjFm0>(={k8ACaZB_3hcyqMrbE|$6dY$C0NnPJTQzP z+pSf&bu%V=&IL{A;d1Ny_xO@*uc_S|bP&fJK`P4NF8Q#|d-CcPPR@p5Uv3zHj zf&MH?4|-jX{1v$V_SQPF*4=NVct1(J%71e{I{t?If2_TEKvP%t2mbQ1umuHq zL?AAC4+sIpLQp}f6(U9i7mTuqqP!@JC~h;OV8xIyji^{Ewmx<06zD)Lqt(#GF5?W) zHnkmXmCm%*4lQKrQd>JnTeT?i``j1YX6F0*%^$!1QNw-r-FNS~=bm%!Sx>)V-k@6L zNme^fRfHy7!Bvq8H^AOl5u^G-CPHEg>VY9}Jz8eW8K6{qh)517lF{(FFar3zHMZ`zKm6Ua#wA`1!?<)5!U3o?PHV=&F#ax z$`QufgGkjHEwg_?@FddX!DHu*0XHt)N2NYMAbQyIUp(kzeB#cdeH4jzDAlJA0l+!w zPR)l8UaXr#N@xtM@J!!c>Pb3=e@42T`@%!uzO4h4EI4AyJL-)9 z)8+{yHr(2?`C%|Q<#$9d+1Ss>mJEILQ!-Si&=d)kiNJ-5-`wwYzyqJY|J|XFqF`VKp#)eZ+ zkC1^aRMY5R8XJy3q%R@*yzo(O85)AeMg$EJ(N`k5uPYfR$_3*^xgc7U3nqwi!DB@1 zxQT3nM}|}-r-#H2jA(7y1D;FtBx^W63GK7*>C<6q_Y*Es%lj(>yWPdt#OPn#Z+reAlb&9sr>hJ^45Ci7z^ zbBxIxYqFU2&G!ZBH$fi$Q=tB}dm>?wRqb!$Y8&ppJKA3dLTYVL2tuZA1&xTPgH8lW zz+)7GgIrJ!&Y+#n_{glYqFZ4g81cdC1OCraAJ){6U3&{e(;mQ#hglP0~ z+Mp)Menq^@1%i?jl^zlr)KeMa6%o<_|8ca%qe4+iyP#tn1H}Ml3-RC|l|&f`SU@^J zcjX8u`Yt1WoObI1qZKCpOsNO51<}m`(>eAmE{c_PxK|29PH?eb5T#)FkW$blUL1+? zQAexl5G@Op;2WY!a3=w4q9p~~NS&Fz|F!iInhJ%+j5B>!U08(0UKlL(a6wA=fnz^) z@ux43pplOq;cGy1!^UsMI?tW%x=lSMI?tW9(S2VeqVpOt&K~@`JmqL$5n*uxKnw< zB02u1M#Cld-qy4nP;(%Nzkp|M{iyzk-_@v=LvUwA#^#~HMPcIA!Euf5(TTuteDHDn zbx)W$GMJ9P?ghL#Eht4|6-q{Z_@-fIr z8JqxbTi<*J8zdSHuhjjIMnf1FyZ-mS#KtQ8PQeVbJTHEVn%p2Qj#Is1c86JA{P31& z>W7DLIQi+0xVre)Td+ZjIbp^~kO2%A&XF)vz><$NrXSyep+5)4>6Qj$)B_c1I&(|) zS{|HVPfAnK=yp9WIDLy)B@J+WU4-hR63$hiKDiXNJTzl)?8;-C~Mf zQL~V9?|naw_&#Ic{bz;X|0D3efe*m@2APTe`EO3Msbm1R)2uN;f(rv10^5XU zrVUQBNrJ7B9SOhLNXLiQ7dJ%ql<%2+?q#c(S5XlyF^K-NN#|{K?1;19+FDuv*|8sP z*ul=`5BPtv;4R6w$uFt>KR8Gmf1y6Gpc<)0qV#zy`DMxGV1IadDXtSYTDw{T6D5+; zX9xKg;x>auL=CAV@U7(+v$IC{<0gf4Ys4AUUqW&PN5+cTf@fZWXRJ~pW(zhFV&y4u zv12%R$FiCntBX(J_!(FB=&(z(kcu+ZVaaKC@o5~Ne&w95$3PMx7N=g%k+}F39G`FC z=jzzhSQDRl#Xl#R*(ZsKE@mW_E==jtPCU&NaU&-;jfuBbv`2%%E;bLbP*p#FR zHWNDw(KIgB=<@@|7jf(iO}Nd)7bf@C_Vm{3`K3xJ#}{n1^yztnfnT8KO)fr<)wn@FjBk@qB^s15^evO z@-ZuYNrGZuIMyOXubE%&f&(zW5I*ae5g?*iK!(=NqmAz(^xR^omo&1AkYU)wC+S&( zi8W@25@Vg2O?I&xa^^hqn}x+w@$C#vJ~c9liff43)VAPo?KQ9UiQiP^|Ja(l zuzQ;ZTF8uVs=7D(!8zRpl`XsAv*j2(&&4iV@OS^Q*4h1b=8UA-JD)CzmN z8CJ4dc-5PE+%gAWPu=;1x*FLS!~&ya-pPEUJr! z>oeeyn_^}c>e)reJn3TjtAz$OKP?VU(|UdpPNDGyl4bE??dbbvqL=n`ixJ`O9H&j& zK?~rF($cVy3#Xdww^V;q!DNbrHW!}~kAFw~SrSe_4@j>`x?~@qlyZ9w0c4cmgi(LT#lI*36IiA?Torz$j26ecZEzDL$B9*j(ElP_s zu^BFQJ`RAHT~z|N@#4fEOniompAQWb`8bD(z)8lJe3POgi9<>9p8tV22ohgr1%3Hx zq0pB}rayaHc-fbkPCK7Ian+YuDxu9!3#r4IUOMjS6N!FIm?U5Hk(3=(43+pf>2d!j z`Myrl_rBj>FCON;-S7*KX<5CW#(bi^r}-R?uzHZ+FSCck-ijrUq~y;tbeGghlV7LU z^RZUR)54$qnUUP>-DtVRcMW&39^D^nE`B?v^ZlUe^%`2gt8Kqr>$u`>wI10myg-i#nbt(UHhHUg|iqu-I*o+GvGO|_1u zTEuKCR`~;pSh$6xa~Xg1D3Zw4wjZi>G}IFJ5QW%!2CcuZZQoz(_}#r$YX7#a=UYGg z#pmV9U4Cyw`6|6DORDnoe+~VpF@Y-nRpYUN4(Bhe&byFvRO6_u5USXuE zSyz&lE*Xii8gqr$#T^cflz%It$`bMfO&+OF=xo9Qh8Zc=lOkvZ01)?-wYBYht)pOQ zUl&aUaC-`B+n3fl^6$3+pgnwTdv>j3$^AA0n`O1_rdmgqyG_X`>EmHl(354^`r5*( zRE8Tw&Ba7}4z+UEqdnWgETo63?kC8yRwKsT+q0-ZViaYlL&i{Fn2tUN*qu|ob z>abF8ZP4R|I;29D6qbqcDtqIhLrbL&GYG&2NSdBDC1`CdSNJOg;z_perH$WExTZLN zPaO_Jv?`Slg(t=~B0mKn$?1%t^k?puFMe~=9eG`bFsqx86Ljr|!{3~gph%Tt$OuU0 zpV7FCIM2}>8<2A@8*0-|S{s~=lx8_S*-&bJOlu=`2x`r_j=vOtrL|L#>se)D{qU#p z16n)V2NAa>)}Qo!mmZH)&tS&dNHhhKA5&lxQ;{FD2N@WtmB@r2!>-GQF|hYcoK216jUlW7FXNf>SefnK|-0KE%Y2 zD)W*hD2R2hYfzXviWy@G%I6l2`l*u*qU1?u&%#w;G{>ujKS1{=p#qbrs0Oa%?n&wO z^)+~|(d@}>j9p!GP1?r?>-n*Dyk^tRXOzAMHiQ$XB(4pvB~)+{LW2(}V7fyNjW$DT ze_!u&RRfBcpR23|HN8{(+Bn>C1UQ69!fl^4}Jxne*`CSh6_Hcq~rdd2G-+ zhOBPIPRqU3rOi#7ku*KFJI*gEv`ZeZr}ID4q|NR9NsN0Q)Nt&7U%2}JTKJMd>Q=#( znF-k0K5^l1%5-F76`2V6!recnlEebbg-auu5tg9!aoA)NHd)MZW0(wl%n}-m*k- zsHCs~#VkF&{-!2(uy;^g|8%TBC}z1l#^4vN=wnCsXU+DOplXj3ZI6 ze#gX)$_?%17Cytx;N}wDs=CXK1%asNQ;;Al%S@e_Bj@;0CVot@2#n!KgL7%5gueOz+P|eW71&)*+vwNs>co>iyh5W4Sz|OJia+XD#yF z&3Qgp#@S-Oq6kSIUB|NOIGh;QT|BdgrciVI(0Oh$$cSQ=f=aIGKGS;UGA*mb!Pa zlIQHg!2&LoG{(-^1?1W-(~~SbV>j(QgzOtSWd;W#p(e=}xP}1_O>4Nf!wxir(- z=6V3NM7-*mu}c%}#;cxW5wEUt(=3Y1z@h&?@G2epw+DEYF5=Y?b=h*)onO*Tg$sUj zQw-gaHU0W#nT6L$2%jldB!E_N5s2Chk|4vVJy4=UmdOa*;ZUYwB=T1v%OsRyDAEvt z{1r$tiOc6Oi8fwU-H?+^ltMld?JVT4K$1x?MGpy*OoEw2Fi0|qf8$A#N&GuYmgB&` zqljU4#Ms zG#=qWRQ*9v*2I?eEi)=x7B*&yXiyjt_E!-T6w~3naBj+OBCsdyZb;Z|{dOl_O_1H1 znOZ=Yh(SDCsW@8}+8%colm=M`KxsyfS15<&7mHaQvm5f4xzAQNFyv=5HrOL6Ki^^I zH5@;Bd-w}(^Z;h;8CkQX^{BL6U32dJoovTWu&6__4nC-p59au>HXNy4O}mFFeG%KL z^M)-Q)ek5}q(IBtEOUq9KxJ&N%GX!+npkF++a(gA-I@+oQ@Kw5QDL-4C#$ZU<`<8= z7{d%Ko8AH%R0$fynbOW{#j#O5KS;7_i2N3hz-kwi?K~+J4^ML0P8^<$r!+{KV-io#HBjRa?ghAp z0VwJrpiFH8P0lqWU8$_4+U9x#iGVvLrfzd9kjW87aHyN$5JVIQ>qeos zfkGz$E${z^LiHCOMj;M}vrb;A_aiu@xll+@$Qvj$ZqSWFmWOfZzoO9M0V>+lX&gYx zDG7{hRw+4w;$^I(9)=bY*ANQ%`p8E^61Mi{kr16;$LY*9E)wF9AbV39{@PeE+i*il z4KifR919`QdVL2ONBBCNS!MAQ?}ixsQ?XIhnsPP&<4v!fn0pY=6ds6akU%Gh`OHms zeP{d}d9%X1IO1?vQOJ16w@oaOTqDBSQJoFUb?=%U@0xaROO3;)=HCn6QHKMI<1U_D zFn~4aIsZ4cef%&GFU<7K$@u%_WYK>de@;V2kXt?4pgGEeFYTWqRmcMr9;6DIAMM;m zRU3;7i}sTu0f^UYh()~KPrG`4+SUHUF30sS*2zj2t^ z?}2F=Oga`WBibGmgzfCM4qhwV~x zISZf;Uxg|Q=~0n96mL#ni7rINsdgbfHWp$;2uO?RqdPfrl~9nzY-T$M?0pvP=WWhg zi#MQ}O74M-O>G-LxOD&(dv~^=jNd>Svz=BX2=;VFi!wDw)0vR*v&mahiSNTM`zfTY zvmqwIbbZY(xa_al)n2^Iv1XU>V>2rk%rbd}?N9Y;DZ?AR^;5mihdg!wXvLD|ejxrH8PQx#Tm|=Wg|+??1r9 z9YkTHbU~`lA9hvWUtqQA6j|VN*VJ6ZzTVy!VzWN9aH=9#8l9#q4CsKOK#`o@&d1R0D#Tfg00pqC9#k9IwogVFb zVj>7~OXEpd`srCOyz$b3S1}7`0oASbKb(AqR{HEXN9Gyoo~KW9cbdPcLnxTb=)68t zs=f{;y@h>qnJJQe!r8gZDv76%IFA`E*)HVFV`lsOv?G$hNpa~eCH!$7Gs z*S7DYoehIn&FSE*zjP}-@jd6E!JGx$u}V%%K}@!HJ^Ip$pY9T@>TDPf-slofSR>{)0O)xA)c`^E(kjTb!A) zglO%rvQVgfFKus;z%$S3Dbcf8N2R)jj*6Wa3ThP+Nz;oe5L1*RH!dV!QtP!dUO>Kq z#3}B-$Kmf<@$Y**&`I(2pk6_t_+U+lFXiIyn-KPm>O6e*GrLp$7pBcr z2K46mBPqqKH)v<29O?Sm?A*mDkd%Frc3zbw#c4eLi3&#^J_)0Kt5n5Lr0rYeeQdT; z+KVEo!AX1f7VV(zBRwjUlh3C38{WH>G(-5;IA-$dC!n*0tmyn!kuXN}Zse|cN@4{g z6e7j+9yvfy>GbbP;)Q>G#!<#Z4}>R7@qi&N>L6-9d2b0zGQ9X%7^Ub{Y!0LCKPaAW z;@J7KMz9?XQ$LEuA(Ei*Yq4~e%1_N@*9p&zXE@aw7hft(E(u6pjqg|ow*%d5>>AwWnDJb44|J>C`Tw|=7y;-EtK%c1W$Z}QNbzkiIc<1#DysY{|QV`rqe1_r>y5} zv!3fxb$X#h7^04B{2DT)dNL(Mzjw0vXJhgy=|_H46lU1SXGxQDRGuCbeE~6b29~G7 zKGL(9J42Iq?=Z31{O%pXHVkdqHT1qzk`*e+@zbOwHTH+!9VeA!qM{YWc_VKUS_=L( z?xf=4cjNFOs^MT`rYO2)#@D?f5-`+E3RDK4_sx+XmUTiCjY3=SNO(i0l%J8G^eSd{ zr3~SYtV@|cr7=Av=F7d)d}~JAlccNEnaI}lQusHjFC>j@PWOk%Kto|^b-W1h6=ZgG z>}srtxIRcV$6{+j6i*^7s?__WQaQT5UxQ2^&P|FO&n=TOkaHuPQs@<%5o8pjc)l56 zjStkg8m3-NR!W7tQy8^n&NSZ-CQ7CafBV%lvh?a%b&eAUU+IqUZyp)c*q|Ylu)d*k z=-bnWzU`BZN1Y8AM`L5NyC?alqbQxB<5oyl$PbBcrgb&)i_%hK8ru?oX#D6_9iQL9 z&Ih*J_@%9UUeudP*a&gdmK*qGEob=`!02O2n9d)Uo-eRrYq_atsqc{7U)upI zQY9c_?^QQnSq2BJtg<K^!cEI_#Hs`8*?1hYR8kE1t(pk@uts)ZtAZJx(~Yb76M^C_`rU8?^Cz zDe*tZOq|lmX2*jv9k>U6|kkj21dx1g3>8k;?&%&VG+k@<4xIpN?|OP zK0+xJW97p4(F`j*HIWInOx-d>48B%%HatQMC^E7Cn;5)6afBFfAO`dhG5BsfAqL-V z4^7ULLX#H?3P^c>M1mUGOhR71dy0%m%FJa2NOGtVX-N&1{_uU{LM6HQj>cc44-NeV z+X;QB8t1+!H;TMnof)y$O&^TQ?t-6!hb<0PhHex&DIo~U2B-j~T&nb-Bt!@`77ZL7 z_At-7HJY$1!mG0T_`FU&w`@4!RTiUDM({BQcnJ0M`?7mX3K=r*GpQ~gHDC!1j_v`=Biq~`Q4^v}qv!~=XL@d<-SDh(^B(gQ-9LcxB zfkcLt-*d7~c8QD4*FhFc7#8s&Z48h_ zKnSU)g{a3FwchA01C{AKa|hlw&VBUD_t_GETIHN0>qbeu00NVxhh$OVriQ7x3xv&& zGoj(1f)9c4%-Z+$=>X@!fzv_u0|WPkdBBdu_vHwGc^u@ZcHrU7Rp{?RZ~yS_?jPFS zIzA5@3}K|qOO!-@l9J6`B5tnnC+UCN+<~FZ?H45wv3KrrNK`+gdhE>!0sf;P-Gw-qOEQwE6p^?y1l zv*;G}gxlNw?T!%pkf2RbCOmAAAC>Dedo=cTZ@VMl(P#DD;xo0qU21nI?>*Bg8|x3B z^hGh%Q5?Snq5%X#w`{HFmtjib&;8t3{|xa;a!c7DS#vs5#PZPvdw+)L0?FIOmezoU zo?4@4qdIuAb_VVIlI~!`kbckp1#PQ898#U0dN`~tv~43hu3DEmaSC6)VTW*jD%4)E ztEH2|qpkJNx}7GEy5~TMb43-l@0O&GUyASGBS|Jj}}@B z#??Z%vIU4qaAw?54(nv|&d!%#NJ&a&Pc^jdwyhs;>#g>$W0&_H@NZ<7)z{~@vdg;P zS$J!MfnSl7l;6Q;_MY~~y`tCT54W8@;=)r@$FH*S#f^MnE1Y-Oe2^~}o7Fv_AvQ5^ z(p;zk?DMHhuv#h_kX`AhjAJv;x-_k9Zu7`!)%;}Dgc&wAb36Prs^~g4i-XTbByF#x zkN-}ye!FH{fK!ltwHIdN#E;} zQu&yi@=i*sceFIZu7g~2QIcpM7#(0p*(rYawgjFWJ0}=eOI{M!>0-@M6Oz+^o5amX zo`?T0G_XraQGl6r?_7U%R~?%>?tqQu(^4A&yG4Zb)bY8W!=!bb2!QJ9I+kx`^BdV! zEeAT;;tTJ%*a91$RYz)Y=Wic_6aa4TO8bS|N|`<2Hi}m?!3~@0114C2QrzI1(S=XK z^4YKa{pH`$_U|YyP~n4qgMvEEI6uC9I>dhF_DSDeFZb~!ZVKOI#-ZpPIuttJCjRF> zwuBr3WWv-MY2!#>|5RYVB9JyTc!s2;|9bz(He*|LL?b(+EZ)qIX%uawP-I&+@*HeM z&%Z{B5eFABj2RwxVZ+S4T07AbIo1INg^Wi2yw>`k%;A^%fuUbU1q?P=upk(i0M)PVbh4RsY>v)X ze}GElB7HG!}CobeeDf$M>A4@0uVp25^Xs zHiSYb(karoNU_!ccNc$>Xxv<#!tfk5)ND*6Tunh`g;Mt4-p-1m6jiqy>(A?ygzZ=e z-^sqeeaJhC?_bp7e6^AD<jM z_JjROpGG#fe!9FRE+&?R%SnE}&BQN*zyNN8eL-4zS+o{Tmw1!OEB_P4lSH<5fojRI3Av zqG;o%lz|k)&dSCO@hp|+CEQJ6g7Z(ASY9b3P9Jf|&S+z^V|0k`)6A@L{M!2V-e;bw zs(jWD3`!}BG1+4Dtu}TEVJ&f}VH;rGVBHz649eDntt2Ku)kl)KhiVqAu%7nHqetDE zb(mHN!seL_{7M%JugqjZEy$N{0GFLu+4vD$Y?pGPo8?RJDSdOWgUwW*=2$=?51xL+ zU{a8q0#y?@F!5^T^F9FCd)ZCwow5BGXNBUggMWGlOLP7f%bDxD>9s0imlYyXpN9zWWqVHhQ?3s*1uYHy#Cil!(E5gstkHNTwI1vTw=n4 zV5=Y)nbDSp5NpeCl_9g>z3lD7CHq>VqM*V_YVq5drVM&%qMMo8{FCO(lTsfrQ*!!x z2kO|Ooso^$3$D{C#gST>7H(s6E4fbNA2F$11Dma{qjWMHNf|kk(RV;uNh7ZOaC{Zp zE#$#3clJZ8i6cZ5o2O*W&|Un#9|DIGcMHAf4WX1y@g_Y#?Wd?}($_Ym1Z{>Abnq5P z3+W3Ip%-nI=q?fn-7gfi;PXmUYcv+zg%HwN|LIXLE>hl;R@EL?<#@cRd$n81>mtu? z9UZ1y)*fBelT_uHRCQk}rOw4w5vy@rRYP2r^;{*+ky4I2nu=HMW^?jvaEejCDCN!s z{12`6#-Uc@8~sYT5fe7C*>&}lxth+ViBRvy515#fut&k`LH`Uc3nrP>JAFOuvKYxTWK{bBfT5FIp4@x1shnntoA^ zP+SMJ4Q!5k_GB5No_W-?TaYWFuwaO%KY#mjzUNXoEPC^*z-zXEgG@e`xFZ(AIv`=5W~V zrG_V&0jVTFCgA=#2hmxucyw|{u|Qae*0t|W=xnXze8cHtTbh+p5%Z^%e^0e3kvGJkWpM^0R~ML})-s?__|=DtsU=^pe`t@EhPJ@45( zdbU!XenshZyldg6-Ky$g=|5C{5?lGQ?f7Y1q3cJN@v9!KHqiIs%^eK6YlA8FV?Y+6DUU_v&{lHmS5y7zEI z`p@6S{=yO*_@~8<6xtnCGA z_H?hr_{pIAhf=Mo{n?0sRnc}GXnWLlZP{Nwh5lv4w~y8(1O^coaG!tc{D1c4@8{WT zvj221pr>HRPb8_}Ny)`S>S*tp5DW_c%L4uU4wh>B$krN$YV;p^OI}i6A`9GN5h~_0 z$9+Dr_IzS(f6wYTWfc-KkYC>RAvqR6cj793D*2>RM0kSbM5Yg=n!#Ex3>v=?O@`xl z!(w>E+J409IAR5e#bV1HJmDANmf-p{&8g(WTMM=Y&pCPhWoysN*7ioL<7Ml=8`#B@ z;ESwrhpau}hpg=ftd2w0*$<`HBOS({#HXIMw(qez>a2ov0i*ZaYi+NxI;yO~v;~aX z$8PPhTieU6j%`+9#R4YLxY^pX+1g%gb*!;QipN9>d{+EZL{va~qxI3P`9Gj7{B;2n z?6bn!v%=cG!s=LQ75=q=VSScbdzM<;bF7ZVRzYoImiVMtduCeOr&}GH2pHI&r_AC zyGEsWvsINsbtV%U6#iT!F=JgnI72ce=@0#V{A7X-S&_oKnM|$Ee6f3+H#@IV$jf3P zg9^5b-K_`XB=Jcv!t6%6H>F0N_8Y>xm1CncH;WtJ{?FG_G{mEQo=M+_;#@ zmHd%yC$27Ko|Mq@wh2Ycu>Pheh2~|<R92Szqj^fXkoAF6O1st}TR9NYsHJqIe<_f$CcRNOl|KraL) zpgiR6imB63J+!u>eMg03N5$fyGHrMc>YW;_4bvQ@r{=*Y#Zu9;qoUnX;iyC>H@|WZ zLgkdD+81xpGGGl3D^gw$p)ba#bRO`anCqdtPdY$pfu$nh_z!d?Y@%n#o1kn)c$Ns| zQh>G~6F=RtiQzdyoSBIXySVsAsLMwoNy=dofK;ZqnDgUl#*RcI&FH%c;u(6s3aeo zrSXg6*n%v5FZQb-Tqm@wK~~GB%7k-km`P&`#_EU>?D)Z>avPg>MppUG4AeMJ%S?Rd z?Gsj6nGjyeOs36cLLUB=HpM=?wy!q}ZaE)8DMSzWr&%Jm^h9oHAHBuFZrL$(UWxRZkcmL0-ACougSYeqZ)p$Q;t1Yy zFHngv;DpTGwEYI$&NC6tB=1pfX;*G>D7Rp2F|lms_zJXoZE06*ad_NoO(kO=j^wpva@hm(o$L-yWg@WH5Px_Ln&%gW|YZ5%1b%CjS$iE4`sSV`cRNUKq@S}NzQ7H?MQ^3*yRP%!H z{CR{(YLt|J2yZFR(DrLk{M3)p!2C+dsmg;M#h!fHW>ife8pV{Au)4q}FD@eN?IAA@ zAP_EZR|l;ZHW6$hGU0RO|06Obi_VXbi^H?~+;o&UWG)u2Y+zz0n@8S@?nHw1&E?$$ zksz#BOKTFUJ+(nBV%tjhgO^?3P~Nkl92JN+lsh(*3-dNIW2P6D_pB;6{v<{$?lER1#%Px8~RCpkjt0Y4wfP^R{hlI>toA% z#+J8_Eq9D97m{jl!zDGtLdttW%G*`t4psS-Aui>vhB{ZN0P0(3i{K-C2D$QxM`*z$ zz(hHUu$iWbeY=V4nwS=3JrOnH@QmD30I!0{eKvNzQU>E}<{@MUF(p%`*3-@>C8m0)GYZu+U~CxbW4{b9M?}`ey!y3P~wrs>hx)PC_f=WI_h>gz+pCmIp3Iz`jSM?gBSkr%Tx zFCicmVn0PX&jm95P^RXoEiZ~H+#z5J1ekgNGfo8N3fgXz834?b(B_rMDhW?6Gdsq_ z=bQQL!i8XL5-e7`h&INfEOnurHcpb5+5Frr6JOE{%fq`8lPZBUwq3|K8qL)$X`KXCj@=>r@; zFI6fKlVaw18>*3+R=mgO?9O_JfCT{9{QUTWBGN zpqSuzE^N_ozAJbH$InQJ$+zGv!Ev(-+X5UvBY6bJKb9y_9DI2$!E)fZb1r=!$1ijc z1V2mm#CTc)FP5c*@3lxf*?>;*OBvB5H)*iV#RlNn8O26c)#bslfhb4k z;)}1z`uJr7UL3z%&lez&-o&ngCBVLnLZ(JDuEcC{Wub;+%{V37Ig)U1>rW=uoDmiS zt$qxWY_bLU1vVR7WadjaJ_kx>jxE%)mK8_>rcAv1f;q)eOwiCraq!{f&5(SY2i*1tR95M@bAQ*0$eAq~qzoMc_uC3dTgjjgCz8w55zewf z$hFxpx*DZYm{naOv9Z^nC^3jlGYr9&4`2z*zJ!vXw`l~Cbc)2rj<`JF*UILJ@XZsS zC(y=aO8Rt=(L!tfsHthew%WJSNSdd3l9no{^lL|l zsr#gJDH5`;q0$SxhD8%AsN(vd>D@c`At&zFxdT3&3)^FoU*rZSWA%OE=lW#mVH+n%kP1W0(PG5^=y-ENHedA@a{5DgQ~B zzKt0vzYKH4VPVNOMs3;)s*tb#p^sh7v1_9S^=yfY&+p?`$HShtb;z|ri?0S5-^Y$E z0W!zarQYPb@S?}k1Z?KGcg$$;dqb%~%mMV+3Cd{BuAsu!Oep z8gUIyB|WqT=WzELFnfhBdBN^OOMMZ^f*NIA(s|T1(c*M`uxYyrS9wrL+~r4Y3O^JK z=@Kp|#D+Qu>KqJXJ!m%y9xG)AVEGJO9biOWa!Ct^QHhPUgxEydZQn^LeLMLALM12M zHJ}5~{a+yeYA{nmB`-)GrjmrYDx&Z9q2GMkcoFnl%-ln$x1vI%lF{N^~$4kL3b~NI(`uHNfg$?OrN1Yr#;M)bdxD5GBm1k(sBw)RXEe3T|EQSFF zuLD&zI-q|MNF+!nNF>Lvnxzw|y-p|;*Iu=z<^(gj2} zcOpD>aDw#w3X7gyiGqxvZF)XS8GsLh?8fK`t=03HW_~FMAWB$9Ac?{R*!!2lq?HzW zoCEn=ma!0C9`MM>C1##QMJR7fZ@q;sF^6N|+@om$sa$^fSUD_E+DzK{yrjbS__KH; zR~b+e*2aO3=k;^lGKg|IVX74w?uu8yq^!yTCCyYFHrv=mH9@KKf-PqL`uHH z59IWVSrB5L84_YREp;(dlwTsLx=1lQeALVBBun5z3B;G@uPOtkoQn?$n$n|<3Yc;zjsGTLI;TtSOPJ27aLX)i2g@+?IfV;l)&5u@kuM`C zw|p5+0Yx&hAQ`U45iq_i^_!fl8 zzYk6iEN@^}Lo!gD9mwesvlcDtH4+|$>&*q>Min#L6KuY%)ON;8nDtv`x}}rl&+3K_ zBgZdwv1|I+B96`4*$EK{J{=HBaEdUZJs0Pas|OV_S7yZ^rryP_tb9TPDnZ1ROus(1 z7-twF6TF^qe9dfj5!Paa4grS}G_Jc^17Y6A=iQt@&fZTTYx#eOvA7Rk9dTpG$0>sG zoY0+#SWk|2Ijwk>QmWvSkhD<~5k{LKW8F&9#kkm9kcNEDPqocoMe9_v0y#EMr4J_T z?gm?-EcN2pMXFFr70#;qHJV+Tnli%Ptkk{{8kdS1xBZN#y3Zx1m0kMzh*jeXD?CLO zXYV8Y>;aD>a*DI$Q65JQma}vaEO$|bS09_DS=Xkz`q(CWXib1>W{BoHP0coZ%UDS5 zGY1RZPay+<^If3D5_PqUT?YBP{|Al*J}zakAV!B2^lChv85z8R*9ZBLqIPA zGXBm@06N(We|2UH#YyOpYGo0gsd1Y|9KtiPY;gUTSTE zn2C`PVFN_QCqM1scSTm0PkwKP^&Z0ABK&r$;a!IAV*4=AHjXXr@{YQk(6&ZHzMKjC zz|jEsI%@{Aqyre= z_#-jAWxdpY@4Y@YkG%R9Z(KQ4Py7M^T)d@v`xb_%F`Q_w+NZcBv~OpE+0$gAo5;(m zrk`DGUe>&yNuP};z@a+__Z9v`x`lAg;=!z{JLE&x(HEmVcb&|}Mv;E+4(@C275j~G zF2)I7n)S5U_07QteO@2jr@bcZ*~zH%v?6C9>)oqluoe*#SZUM_%$7{@TQY~Izr8<) z7cuq~acqlo%7ZyTJzSye7QsURH~k`c_Zys=EZaBt->t>F|LoO*#c?ADniK+?IPsKJ zD2smY!~_)Kg8)2+>fcdH6CgKrlQ9h4_s7@<7}vnzQaJoA zQT2U^Ni}_m`DM-j^0*d2-RHajc-dD8{0?U1xDN>glml6%=Z9V+xNun9>q(#An}8yB za9`GEBH*Uc&O3Lq0?2kFIW?7a?Nc-PT*+m;#{md^!ypi;YCA<_=~Uf1Cyudi(>bz7 zDdIO*{go{GGI5VpUHlj?W!XNy_a#(p+1GpqF|JV)q$Fn9?1TW93Aq`O?nN)a)%#A? zUb3zB>p)Hsc}tb#Qw1N96%POC{y5>->JP;k2h)mEcd}k3Zz({E2--N&4QM08?}9Vf zTX0TXlJ$Z(s&bI1J;Q(XKPzPSsQ>rAR{vj-qRf83N=!J8qRfRq?g`wesVWw$GGCDo zRb`&M{@l3rq$=~I_2)j{aIY%!c6U|gi1iQEH=aTpE2+e3aCpNV^_jgIpC7Ix{nEqL zn!mVLt(jeaUA11A8xi;z-Mc~977?hD4_kj-x?VUC5vU*Cwc$Z^=I`!RXTH78(YtQn zYic3CBOpq9dcz|Hn!mqSp!v!=$5-n}f#%EW96L4$3A(`XhPO5(%@vC|KO0kzde7J7 z_3mQMe_QAHa2+Yw{OLN!Z#J|{R|ejMkTIWnJ0)#q((>50Og{tc+PPUQ0NuFGT>yH<1|cIdkn8#WT8g!w!e;S zg8w$BSBV?A@fPSrL;1Rg=Hm$3fGNF3JKr2sNZ@nkd}r|5@PC`!Ylz}>zdPA_ze;P< zw%&WCSqrSa32}41PX`#km0AvmYqx03^_1Eva@UJfQsxXVdmK&~qdjjju_ynMrzf zMB!rE=s;r-8WqQ+qu$da$Tu(;6HO~QtPr3?cv)&`ZBI>GU92d=+MA^i?^EK1FAXg?y_jG;5%*f521};bnb?VDKGDoRVc_+-29A$|LjuC-aTA=#B_9UdpkGtGAhp$3 zqE*kvA+Hkh8T}@7b0ck^LdQS*gHkySs-UYd1RjvPHRs9aXJr~#J$Jr{plwQIyMT5n) zb}JH?H=JMl{r)Y#+U*k`FWK#T@P*jFtv$H^ncCQxYQHUI(|oqa(`Tn?4(>&*`t=t1 z`W8(qKXc>U;X+9lnN++AVJwh_gxBdv*@?w2T zCDKUa?(^y3H02rDT&T%Uk5bH)##rtowX%AWXzNJB+b!Ym_l=(v^IY3_xiTPQu^4>; z=Uk7B_`N=HG3VGb-Y5ju$v+Nf#gSc7y!ZCfjL)l1N)7zfxr$O;VLSOLeQaFfV;oHk z3~i)xSWI>!=Zc*PmUx zFTAWK$SI?*+Sb3MiAazf_36*d&1IiioAGt5rps^V?xP-`lh)jp-WLDLT6txQrjDNh zhyWabMZw;|{GDy}pS9LE+W?CJpURt6CU#0jtzXafwb!?@HFvkiOOxp1yEOe>7tWupjn(MAWj6EdxRi0*4pU_AVxu~)&%#c;`6AF1B`T&3H?UI^Q~KCMH8|a5;)ooV2sIgyI}v61OnlsSgi|cM zrw9ZuwS|(aXvXWBmWKTSHhy9qKZyV!sh4L0`;V2dM~M#vyqMRDFQW6IB6Rj zrpof+*l`wu_#e@FHar4%=MU&Y`1wXq96P=c?eC#oOWND%Lhy1H?a?Ikmg56`u|oKOa^ZB)grv(F*I^$v_}I^ zGNFkYO_)a%T0_xl)B#bzJjM{_5st<%G%7;rQSTGxp#t;B&)ss^gD{WLbZdKA?vrI6 zo54Fmz#7ss6!JLZSniBiJ_l;p}`w1 z{NsImoB%}eruCs?!8;V5Sk2?$9ZoI80y7(H;$tqU^YWWWAnL%jr=rl9}q_aKT*$5<@os6*Vh`@IQ@cD z;%k2iJo77wiJjX2T(lQ*qSR62xOh}Xe380Ycb%k?nyL&kuoIJBtz59Mw5M@x2m3_h zf>gX{;$!>x1jOvsb8Tieo+R|*8rn>4r5-@>jN+<(eV#{KUu#TGRYsN{F8#@~OQC`* zIwsqCBY9S7>=UKmKj)Wb$n%VtD9Q6ESyxhUeM+gY_>(~ODl;21>gS>+qzR*9=F35i zVoZL~PyR^HnM$+1Qh@jPg39V5eQr{sg&IqSl;96w@*WILzA2VP_K2aF$PpXC7BV2nMa>gKHeS+`aJraf2PiM)CFGn+5t#pX&7i0Adw=imJ@4oJe?BF%*Is*F zzw3FPwbpZ~4Z4hr;vg#Uc0zJTLd7$gi5T)guk*y2;x`S`=sa%5xp%Zh3&0iN)U0*d zlPe`XS0fuS^kf1OBIHr8P&=Qn?2K+Zx2IzDY#PBD2GBLj}~8Z%z!6eb}&b7@*C3r($-5n>~?%ojn3=LRH2yhMB}w-_uVK zql>4WYIy1?^Ph@AjkuSJTVSI!;?tnI)b$g{H5{KnhbNPtjgK##`w8BkL|)l?eja>Z zI1Hi=yG-jkaJVYVEr7*yS$r~ez-GwAZ zA_|%Lm_}C+LmNb**aq^glL}do7Hcd>qOC)erWHxnK`LZvtcEXGMgp$H+DTbIQ-L4J z^RNY)t+SaVYvPsEv=6)9GHJuY!5woy|Wj zx+2jMT79D@7_8+y)FU7S%^>bl{!VGiz+0>rDa<#qBOV%-(|T?;&IvO)h?_ICDaCp| zI(I=uCigIweH3qsLQpxEf&{qdRMHWl)R|qFW0=+M4Wmq~g23!(o*{B3+ za*3ef#Tn}RB4}u_O9Gu-3<{~uIj%?pb$U%c*6Vg ze;$DZ%3XP~zKlqq5nd2K`#3!$&g8e363pa1$h8>{VAhih?!QJ9`Z}$jc;e%a%xc~xvE@sOmqN^J!x;rWw+d!XI z=vT_mJ+kGZJmKpt=RWtTP+N4pYmHy5tseBxo~%gizTp)bFS;RL(cJuY@88x6M?VV) zT%fxzcDl#l(sv_~7dqJ~j0m(cBF{L5P1iM19^2l*2Ng8%`# z<7!Y zF^z){QcqpB$6Fo%xeW9(riy0PnaJUi`MI^AD2-fH{=luOdU1EX3<^C}{G4t+mXv>Z zsB8X{Z4Cu>{gVy)C(Tch%+&=$;N)f81MuSzG_ib7yIcV#o(I0qM`Oe2_|8@C6Qku` zx_&E)n}NeD(w>iRWBZuL`C$jC4>EbfH=Olb=Kx|y2Kf(=g*qeYW!jKTj)=@zqu&Sr zaBI`;O@}XfTKM=XewKxwL%O#Z_d#g$m0K3z9OmDS{I# zHD#bHYJLVfY`sdDmN}l3i_<4tpJ{vh+!x`BoA~L+O(tcIA+Lx|HI*Yyr?=0{k%k1Q z<$m4uxv@*&hTh}JUXLg39#6K8c{1!b78Mkw@mExN=g=XLxgMg34r<{HS8xELg}T30 zQ8Z4oLPHZn>Y1*$8m5I&t7SwABpK|A%JDVPwOxukV{%$G&*EHxiJ@%voDBuf(vAem z(s?Ho1uvvFeI7f1nFkyXQ8lgpV`%xS*jZYQq8$6aXQ9!?EESOhiVBftCYZ^xD%y}M zBF^(;m)sgE>HVR^{&h*~*CmL>=(qfy0f&i+W!hU^YJx4~r+rjoFc$v%yX$%M_)JOf zrzOls&e$a@X=V^ZtXa}sU)Ul+s{KSs>**4-pQydN(pMqWO|5{eznNFGe^4Mz*0T1zVWatbMAX$jIz(ITIO zXjdt(lXv-_PeBXtais4gvlq#MFY(!>zfBQ~#^Ey`YLfZ$;*8kANGfgD;k7{`zx6); zyQSt&i_ukz=;unQopliGs$BG`s*##nE&!xQoSH8AcuIC!(-zjNF7pfgjGy^Vg(J@GpnqyL4iTInwnub}&ff5lMSCG!AF6 zgyTqED%Y3!$ET3742SaZB=ZS(&s`;UP9Zr}Mapv2VxCZfF$ofliS$ct_yZ}~U+001 zC3cbSnK$onl}$FBo)}3=G-=l_#TjuE1|$8#cUg)v!cbkBIe#ribBA=-redM`M1aa< zIONpyZaQDp4X@CeXEQtRRJ`D`&z>_|>`6DIuWfXh_ttbRe@>j@5j#J-{ckR+fW=|> z=SX&NK*P;qG=!otDYRiRrBY4et`%oQ4XVVhZS-cUF^ID8uuGtEWgWg|hLU@=5uj?5(cig~Pq3 zgT?md;?|Ffp&u`~ryno(vz`TGBTKdn1-)5pZzyhk<6c4VM7$(Fh$VJL!9nb;4~rl5 z?tP=!UQ^uK>MCWq2o1!Vw|+1}xhri_q0$ybUGRIA_s5a=+{sU1i^JmA$mM zHyvf8Nb40CRV<(3?8H!>3yThQAPL3x26>LPARreDQ=wtw|Cp&1?$1$-Uo~A%HmdK@o$yfTj<`& z#dD8oGVN?}>qOFo2#MR6crG!<^e?uLEpGKMc5w;h^(~&;g1lpjTgU!e-m?*sUU{)y zT-@s6&Py6H_aaL0D7KHRZKX}_i=$Dm&it^1~LZ@TT0VK;XXKjqVi0)8<0xf1&J_}O#Q78(yBNlVTU zTPVZ~wA7E;igTi!lxf`|><`J=MR4CuSeP-m3{bm{ZG(GnDik^7aB6~v$?v(TSg?%P zfaFM<{(h5~fIw6$a||C0r5)L#4We>Lrb|RN-x?0Gm`&@F#^zRW{uYj{;HT^fKSm^*(UH@e%x%_1jhsT97;oh~eYiJd6H&TzJ{{v|d$*$Zk+vqG`S9V5cw zZ}s=O2of>C^I}@>Oj1$;D zu$q8Hh((30=F^1$=MK+qZV}>D3C2IL4{58oST$z|uZ`j$y2g?-wNZ~2nBblJU7=w< z_ID}JSV2C}9fia8T7-v@ITI#mDGw z{$9n=?ut<>>c&RTr70zAZn$*lCQfuUvfP6zxKUH{3((4@gEtig5oE$QKnefAO~tFz zh}mRrq4d)Gt{Knd!cAo#yQch2s*IaZjx)pklm(uMIH>PEjG44>$|`QEg`bC+wQ$p_ zxCmV9RPhM~3tS2>ljTy(Jp+7o^SC*ik;%_YmbmVK3^Iy6|-`uTV|^*+{|@2 zno8_gNA8klqfT6^Q< z+{~i7yPfYGluPwoN~$f7OD-y};u7nk z)m#kOVSEA=zW6dON@-dOY^%9cf?G^@9B}J+%e_@KEOKHez5O|WQh-CYDQKUb09A+B z)Q#Ni`fAnoiF^0_4)CpBE^F~VMx#CdYE0#7S7QKFw1@e|wW>_o9Mbdi-W1AGvSJd1=U`2NCzV4ki<#*i6!dHU93K_ST^_F5XJHC>E~Hx?MEt zQZAue%?)i_WU?eU_okXNMRs!wwnxQ6TQ{Rgz1vz*-&EnQ&U~-{c#)^>x2u{v zP|u$#-Rh!#L|xRIsEc}-qTo~tg?#TWHy!T0|2m!ovB1FQSCY$+Y1s zQH{Nk3uxn5_;;$}A8zDl;bgg!*CCMDkm2sD$=v_JL)L1qv59pUl_*GKV9SDBLR<%Bi#77d^@K+>=!Qw1IxL zr9U0CGCoy}V*6XV`xkZ-|91_zJAJrB7J_@l*F<1w3AHL5WPw`ACkoRA7PmeVg=B$E zdC1dKvAk6AwFDGOkutuKi*Dm)9D-TjCXwR&V>@X1n2Og`+c#EEcq|4glIul6hrmvX zw9ce9uBo#C6;NMP)OfTJ#xP^+RNAmcq_nJPR0$ob_f*?|7lT{eRibKI@Ty^_%AR{l zk>;mJ7UFBz2c(Nd)ty;FZVel%NJLxbWS`GaZGqAxKCvcHw;i}ZUP|B^iu@# z!nd_>5)QjQs4z#_17RZ9X5ZBO`Y0mz=et2I8U^)6fZ8`^l5ZRr5-yL^hRl}5=}0)> zFUjX=I>5QjzN-0+(XZ>s*ExJ9KbOE6jQy`vp~$wY#=NgIkB^6>2e#12C){o@T{h6n z394QDZiM9|7wg-`&*&rvdC~1UD2Q4+s186GVEYTz?}jp9eUyqp+=9atu78+UoE2ek z$!P)lwy9v>wi3wGDZMRzo-)SNzwL$&kN{H#7*4+iS8|1$U* zgCcY%H?s^PALcTZ!i|7q0d;Qrz&W+$Tr3bhceWbEpR4IU_b@@U^^Z6@j8B)5-q%o@ zh9V!0gb)fI{SG)u*zj3VoNl%n zr_<=f6T+Rhmk%ggVr?w^|QBkdcCOHybPZvk?0l8zhPp9(@gl zL0aK=ufa?xQV?EadC^nCo!5|s7oz^m#(89pWP5&xB88{_%!VP$?mx2`qA20!pIJ4Y zeCyeTCdG)$PI~U@|A3ui`Qmu@p7$)9#70D*x590eArr>I;l@L&)oQ70Pm7H3Lj_iM ze+QY2joZQ&Y}|rY+k;lO2Ca74vr?1^1@2P+r|UCjGPE-*nPfX zM5xGbxN)Ao@NCAi*J~zy8B9AKp*D;uhi}g1RL`@%8^dZu8=tfJRah+>#+PFQvxHLq zyg_o=1PLseLhw$Hv>#H82vi{1rdz*#LNc5?CBQ{pjpf~DOTvqd32Bz*+GCQ+Z7IfW zx-TE1nFMO;0eE;)zEdNTvquigrTxPlds}En1l91t6MJ{l)~VF`KPYSnv{>bzp4vYrjab_a^1%>$9T&*?*)(<=A2-#+7GPly>ES$3JBN9yT zD>t@#?(=L9upxN7CE*jx9_4bOrvWjkD=ev|FdV zoK(ZqaLLA`xNZ0B_T>*cx}Bual2uBh=2{0DU6fTg`j<5qELmnkXZw>+^cN6?>_Da zBG5EhZ(KFo##WMGHRmU7#eKvUO5;sPmzg3LkMV{6;nQnGxoa#MKU~bftWJ4AL&n9i zmXc3KRDrj@D%~wD@!l*+;n#1QknEY(obY#T!U;?6MN7i^#sq`Oa^XygWaFlk(&u=v zHESL4qZT5amhciTHKB+KABaS>(Acw$)%iR!%m#Ys7s+6hRbQprxs%P_Kc=EehaFhesiB=!y0i2#Pi5`;ZL;(7v@>4;M4L|StnsPr z6eeiv+6KI+x*wH?2TY3yCEWVvgGc&~9GP0%H9cR5SMa{n5gGDU!$wfMa8LUf8QnU6Cjy$)XEjCo~Dj?PxP^#G)ydkkBygfdrU zr)qmgeE)izyoy}mR;7|+P0D8c%fP2vWvBJBbL*QyfXbMZ(psJ*?*?#E2+OrLJF|oD z+DfzAf3)KGNj_07snyn&rjT5YCa3uydG`PnrgPy*8^*cu#JTXK-KYDZ0eLU+H?B7P z7EdMs$qgu6H{1slcOOt20jNR(DC-(Bk$!1!rjO)@SHfb|uQxB|Z1x+n4xJ8bLw|fIL9aW; zC==H|FC*lMICI$4r<&%|ztH!DUqFAG?~#K)_O&Ug{+qr%%@u7cTnLIzEwFJhSi7G) z<$g81GERs_{d96^s@i4_D~;o~;(qpwGqgrlvrBl7HjFw41|N_s9S5B#yYcu)eFLeu zd3~kaqNJuCwPcc_r@F+pDRSercV#cR zMldIzfcm!?w~gl8=QQVy0_lHb5|`rtok^@1WfD36EtAM{GYQayr2myinEsDUV&4CT zNlc>}rsokR5&nN>5}_o9n)QMIhDSX38z#{d`M)rUrG!baLf}4joaryW0mnr6CT8&9_~zV$q@V;d?!xszyI9ywd)xHCW1r!U`^Zb>ngcl)0_Z+@P3})1Fk&g ze^M51P5b@=kRsW&v zWQOy%QISQIqFe48M(AVk*c-`o4m`Ku>EfO>zVS5CO5&(>CsgEn&l^H=Gdn$CDFx;Vxu(Wf`CPINtQ05IONAGk*%(tA zrQBNMJM|QHGV(FW+SAA7>^^SY#*VGch!{?pSMXcwXj~84z-=l%BrYxCtg7M_BCZ^% ztgG=V&yE?f>A>BXC~8kYx!hwLw+%|9BDpM?bIBdsmOM6g3Y(%q@^vK zN_fk%CvbI->5Q-C%n)`%6&BqMy7^6|4X(MxW2v;8;#6V_U4B}$ywz#0ZxJ? zHQKuSf=u0geD1t2$c%S<=CnuH9_0!Rm#R8 z++Svph7J>v!_D28(w+sr@v`N73Aocrk95d;$E0UvsJ`jSb=#yCy2xgmQ1Ml6j%XaV6ij&9@#fb!2@R}7A;nUq>v zGjZpu7Mo}8ehV;+2=-}5j2>>shg|wS|3RQM0;! zpG)R(2`9>OBJ*s;NPOy)2b|X_OTL^%XV$~3ZROJQ{Bq+O-Ivg1cQ}{r_Q>R9%MSiV z;z6JoN1G7)Hr&$JOp<$yHV2K_gT{R5tn0M)Ic-`@ot%kh!bGVWjUO3$96~%#6cf$Q z%cm}Rma&#Mv%SD*-jE{ja zQ6ooV=z`w_#>U#T$&)G*PqODl9cL};wp-dgAzwjq?@#tkd!_D=scFMv;UJ_a6P31S zw|MXSM0|fser)HTRm0-F@o;O@@0Q*nUA^L#-en!T{w2M)FmBl$0_IoHfZz0E{aZf$ zfAZZM$o8lDrW%@UP#Z?9l*$+NF4YV~Z79Gk0Ys~0qY?p&Y{sqda3nd;Uoa&uH|9W6 zUiJnNu999wnCtWAFWX^tabG%T9fzDK+j458!mLBZpsez?Nz~NlwoyOY1ZG!&SGm`} z_jwOF@+6;H{|>3E=X2k$v~pQI7Nvy~-`7|@7dIztzsCuQVE=OYij@Bc%j>`A8~tl9YP*1J|Ukqt-Y>D^{Vl-vE5;mMMG7u zq_?&_EWGy~8wd}zLf3nc`x5f(bMji}<^4wP%Oi5%+&uftyw*5(I+6P(J(zHORPMX9 z%q7F!e{TAl>lr!#!KJ>C^iVat-A;3Vdq3Bu*Il_N%KXz~ZpqY4b(-#lgnsP$O3!`a z>2$~nqgyK=n7^_mNtAZ{5_2H`Q3nLZ|&H#l8vEB7WIOtk( z%P+6jFVF6m*Xo~FI~pmOc4_C}R4jirX<5P>DwsgZi1H%Q+G&@{&U!%c?et^9<@ec; z=_7ovleZ7@t#|p~>QYe2nZ(`vv|;!Z{F(3lnYRz{tpmI;`vChm-OCGqJivx=pY!&! zd}}x19T>}FQlfVFFa1Mv?3P294zOoL@*IBdS!h}q`POV+ICcnLfxKPALFCxQ{C_CN z5*5$w?T`MO0?E)y_o((V8=?{At{CprUD_4g^?Uwuo2FbZ43GDOMGXvZewjsECyENz z(SBA95WobRUuAb&y_$slcNc7yF;KI(3B$2OZm;G0ot-pkuEf%CrqT=%wXJb`^FEhTJW_PWO5vaF?DUv$Nn^wN2%3ni zv&Lt7j^l!=vYA>MM6$e1YTuI&m468o*P%J;ct8RhN}{_TC@eqB4tRe~azwdQgB=eG zIY-!7lUKCMkmG#{n&Jfwb9UrO4kI)7SSC$*Cs!#`2oC!iUaY_@D--nRq#>S7vYqn zL0tc%Dk)srS5NhPpEW)Y%oznojsFh!N3MeXWR3h0-7?fVsk~C?|j4lfm@X z@wB)^S{^LTtEX~TXT_l1VJ2A_HzNikvXmjh10_qBl8kG_u<=9GO{lC}xbklPAly++ zkd$!`C86mTq@~|Kieo`*CsPTv^n>{6sF!`Ap_oU-7XDDV2B*;-C$c*ELrG}-1euzf zne+s0eTpHzpIT&5_yS_ugC6+8YFdm>9HIMYD=m?WBcrmSc$XUmr#J-S)nrj)eY@JV z5E}D)uAN~W^To*$tc=F`dU!T&((^~jQuy{-WBm|W3Rkfd`uI-?7>_?nmV#_TC-*j% zf}Sje$S7e-rV!G{eLA`tBE{V@Zr`2~xQG(`jv;hukTCBUJDJ||sPNb^c1FTjabv^x zqga2V=d26sC>~xQNe#P54JeFwgcM_j->23Dt%hVsiGltk$Y3Kv_c8XSPdmw{<_*Xi z`U>rsD4hEXn_;5Z1gg9ttBxNeoSMv~ z;X`S?x`NEoY6jS1>S#p!4Gnj}dmu};ns#UzXadQuVceu7+gOs#u+wGH_Yz&jRh*gV zs71j#J(q3*SPfrD;258j{H3%`P5zcK1Xj<}fM6&fD9y;s%H$7>N6~>OI%)hhtQk_Y z;TP#B1fL^zf!1=`!kOVu>?Im1Rhir(VAaqi(f#ugvKVWnl?308jSME-QA}58R7o0> zR9z1jep#WbX-3KDx#ZAmuyDZ^pSIqRTKL1r3jdx3vuH;y%Cvw4n&?h$em5c*V;y`X zv0r?I!0wDR;Y<41r}!ylzZXWW3bu3?A;VmzJ4e{doM zCzg?O0oD(aR@2sDX%v^5v=)N1^ot_#O#4jI)rvz7mbfj zbRhDG;W2R|ymNt9*ZY7Yy1W8RY5nCfmjD1p-%ViOcvh1y5ZpfqU#D&c@K+x_e}tg^ z)oTRuEu!1v0sb5TWWyr>S|?YjmQi`K37Iau>xGa3?%XKe$I{*0^91g4S`h5)bef`t z6L$7N+VY5S)y~Esma3|gRjG?fK~>zR_;L?c@I?_-5QGi2^=lC*J?OgOD@F}|ll1df->1aD@$>(9E?gC(IWf+o%nL~oT!ghtsWWpLk7Kp-H<$hsMOBgFW z@ewY$sQ|JTBBN9Z`g_YEkt_#?Rn!@#R4mNX_~vwBDS+s65`rniyOItp1%N9O9j zWX0f0n>ObbL4F%F_*am!swK@f{57D=@TE6Aw}!hwf7Jzg2IY+jMGFVTq<-s{l1Bb; z_32DN-kKt^ggu~WU#{jP-JA~q?|4VdomfF|-XN(!$8ja|w6yy6ViQSUG zlvW#3^Y~+-E|?RVd<-yW`Xrjxq*b(olMok#8>D)m9IQpkR2L-W@h3w8@z3Z{B7PEp zG<4A}A*S);octx%6zl@%=mFG_VQ}w!2pNL2To8^q-Eben)hk>Wu7>QQmrZcfY=|%S zG0ccX-P}%K*g=T|`^W5b(LaU$k6Df`Um^HAaNm1TSm*$Rb4fX)5YDF^T@;8m4il}P zQlrHAtniY9z2$Eu`P6*iC|I$}yDn6nU?Zb}XhNdZ4eCxO1Q7B&x`F&#&|nD*aZ_&~ zHaG7cVhe(VTPN6w^iRtL`AIgDzOY=#J;^SmKVB{zBG2zG7raiv2mc?J3oB2tg>x#G zqvl~x$J${E_{C^gUllvX4R1eLlN-M zOhiG4c^K{!0U!Kksz<1m9v3|f`|wwCQDWFNOqC#nm7!F~Jk46@gj(T?(`>j;dmDeG zlRwqS9m7r>(xc$>2|Ibp=_>xHo-%g*zh{KVg;9 zqEEWH(?aPdY@Fz@@Fw}wE?oMAO%a_E9y-I$k{s@z?@Q7Hg%{2sXy6Aszp)H(2L^+n z_S457+j-NHs>hjXcmd?}iULbFcVvKjzmNa8lmGDCrxiQTSo+}C;ahz2asSVjZoYGX zKi&svpPSvswa@;2#ZMME=IG`+&V6plSY{dEKgu9hlE?dRTdKHDJ%8X_vSp{u(#RdC zFTg>{U)m<~N7ejkOlcqAKER*S^Cv9)ktqHXptgL;l?@YvfKhzu(85-1znYXW#SS+N3wvmUyZ;M{`sk_mS}0S$6)4k1juObamL# z0j{(EXoZ?PqN=S>HCG_} zM3tOnueDogLuX2crj<4sah`e(+FC_@OB7h~WH` zog?~0m~)O@ikaVaj(vSLCJ;EP;y=d7_oVvv@u%AO!<}Swj{;d$+yPi<_Hjp27u|p= z=|Su)$XsxL$>h%pPj*57;*7AXi=D)rKH})+&I+wv>|s=}wwry_WTgj>BpO76@UBK# zXAhlL8{&pszZVYUciJ%dZ5V&IS(quY1UIXmLRrTQHYXZ9+}|!8KB6`( zapkwp9m4N9CG+AsxSiA#MyeFJ*Y-!M6|HtxPmbf8s8AFpM3nOJuxJP$*?p z53VRTaQHoqvc}&{J!6=QJZOY*s8Y>j43S3U52vaPt6;}X9@Y;Vo*hPJCiSi(nKTS} zA01*I8A4%(kU=I`*#9>+dVypJB6DY!frbTRb?01=RqIs|k>1LNL*Xx=XHf20-0PwK@He6KGj{w; zdT3ObbJ2^DyVZIvspESQVj(x^XjQJ8_dd|;JGd#k`OMmaOLOhgfaW> zpqivC!ye)HpR+NspWKyupX<&toVrW7`49B}u`s__--2(<)@&C;I7rSV7b5+{7X_6h zy&_w&bdirtCSlU`WWPa53G)>LFkJpB*yQKPMuC%urk>*Jo zo^V-{W@h)8P~;ly+V(KCbis8c;2pEU_4IW&@_W+;qpM(@EA3hz z(#Fz;JXgVUU1?vr^I4}2l5%5QY1LKyu{~pGtHt$gR5l5E=H=+*KiDIOcB3m}gezmt z9w`LSyXJ7$(@E^jkb}{?ni%X#)2LAtOu_23Jy0htL_kIhRtd(~tFEZhm0Su3!q!!qU-QM(z`$&Mi z|J`lMi-6=ZKtc_Lz6~|QdzHAXSzi^pQHkk=JDUcu%W`bF)+mRy$NH0ADzCfe~LY1gA!j%|0m2-+@>p$!-A zf?6=|4Q~2}Yr}qwH0T|aH4FQp%VM~Byn6yy7u9z*1^vUlNg~~T89mBDvCJoTL!020 zV$juHL#5Dgfeq56lisb)GNj%1BH+9%hw|p#^0#Q~-=lw53JS%rkem@TEm+#yZGp2sn(l_54CoSM0#L&tJ!(X%09-ltAX_yehX&BB^ou~xsIQMQS2I3OQc#k+UeVG5x z01jsP-4pQB;dKX}eUoJ!bH{7>Xwx!Xb$9)`>DT+*z=1LP8o__n^{@gPeTrLLl{ z24(V`g;%NhAd7LD-WZ`aPS+bB$}~ozRf@5JjrKy#V`*)DYO3e2kVGbS^C5kF@Bkl* z*XGqrK&b|}&^|7>n+uW4$UZ8D%Cr~i?QCHde7h(ZMUTZd)=(MUE>?Icu1td7>s)G| zR51zmL8@3u&GFFlv_ns6)0YUZe~YMO@k@mB-?CF@guvSIU-dMRdM;gmphxh92`{|c zQ}uN_Ybqj}v#P?deF;JRXoV2-cQz!VY?)?7Z|O4olgnD4T=v}kKyNNvROQ~o>>|21I+@i?b0 zaLSJ(^CiOPm9mR;D&>|&@2<)k>QtE8 z{BtB4JuW2a<@Y;g1Mh}VRoT%l!_d4eA z#pof?)iaG`v@$tbfJ9eCq_eIOl$o4zeGZG7=;d~j>Ka1YDYxWIK~41XE|TaP!l4m) zXU+`NL@)0piLN31btI5ZPQ)6c(JdspMsQ#Rc~Flg5nUn+7jwnj7;$$A18{%*99Kq6 z?mi*){s3D0M%;Zu;{5?MTpV%t>9+&OoFAc3vl0KdlGV-cKS4PcCR_xzA?LXV|LuA)wC-L8x*PJ`tJJ5 zTjklk<=OVq?AEeu;gRpySLm#4;nsKTgai*9yhU-7T40gd#sx+pgz#^kC;yk{2mZ_R zgRxtLl<(Qs|HUX=y23_`zh>0-8L!tC<;T;@ zW{Kiu&F?h7zU!h<2)oMW(kG0WMPq}}CXGPKh(uGicfgRw_GJo4VHunghOO^ktmhVaNw7z2-t z>u(j6tfZkW!xT{)H*9>?EY1+Beqxu=KP?un{lre4@Z(}_@8auwN5{aBMpf>p+|u>U z;zQH>S#J?tvsj3~#XcCfb8*Ey?YaBCg+>+W?GKrxw?AYy{E%sWc`@njRiv!8f1lZK zDbxH1k|JFEk$s9@x7gibe(`9B{TGuCR|?{PvX9NUuxJ!r9=eAzVOLF`lx&!vzx*n( z*>0hAQ!`IW@^h{dLvAh%?@!Xfk6aaA{U^K0t7+NQ#*Y$@F~Q5O3V}bfCc1Kwu={7W zh<<93FyyHEFU%hjhg!g#2Gq=!E?Q#gxEQSmissS-q>XH5f=Q)a?&>zmo_aH z*8Yk>toe~w6-y&wGyYLvjx_(Fs|xEwX|ErX6f#ZIuL`gKil~^^(*?zCHj%!NEWN~6gzdkgU~b`<{=||(Cb<8Ku>CGh01Yx>?_Czb zRz`#qciAAC84#}DW!n@d7VbK>u#NwLq7%-&iyP{jR~x!MS}43f#7^^QUD(L~+|aU6 zxH`n<(De%s>4(|xMU(RnUQy&9Bm=|3UjD!pMfCxfQ5Qz${VRv&JK6W>Ov#qi5 zGeoXvjFslwt|->q8XG^r?Qvsf2$jF}N*VVd)W6{<5wpM*jIBf4Q6@4#BxJU;mQ-Ytnf>1Hv595X` zN1A(3g}V4}k+rG(3hq+AMfw>sfz6G1{NItBzy3(nSt zUcO(l=~w=%RAHqg;Pvs=r>PYMMR~afp_abGr{f+d7H`2|E zQiWF;I5Au~&alfFG0suxydie{G`v!5_+j|$I71uKU~EN2)!&{S1rR=+LM{rK7l+&l zl9ZR9n~wzRt2pJkmuE{#G|5vr1bwX~%ZdENJT;nMy8MY0e#}9g&YW$cE(;;7?2VL>4e*-Y+RA1!bTu=6{giZn4wc zPky64B>jf_x03w+k^F{U6O=C`!QpaYx<|lFdRDrS?-8IkMUy7Ei%Iuf=@lfR;LSrU z62nD~d7A6pb@KUn-;>;>o8Imh{vru+a5Ba9`g`)a#&~gzjX&$rbltl}a!lHNLe+U9 z@X|H!c5&YcpHIF#%Mi8b550(5wE6jk@)0;1V!EKJ$_pW50@j*5;QtB4QZgD|p8T-+ z{>$EYRPP!_T9+2u`xdtLEp*??k@QE2?bbI7?cXeH{l=Z_N+qs1zFKJiVqxo-?o{)$ zq@6ClPjp14{Z>cBWPWn=rI~_7b8_@@onn;_q29*R3r|WhhE2nlkBN;Z@vz_6LiF{T zhAyu}98CWB!WOzSglf8bd9&wj@%BFyj+2io$flVoq(3zO;lh*59isaZ{LAGMVOi;^fg$X|6T0HU@IjHr4g>t{(z;VKBo&gbb@EPH(X8@;IO^7x{ z@pTK`>gA-m{>y^I3r^LWh*~;DnM3b)Zr4i-{{x{0AI%bp)-;syK7|2goT^Y^lT}>q z-p1P+V%asK!U;D2!jRaYA9@ix7b>ZJ9H;PG8Kw4By!U7ejj&>EA(B4cpI91UCK`Eo zGHK6Nt9{W?>}(L7ZvQRC!wasCo%*oNw@{R;u|Pc%2F3_RG(E;|ePmTf)v1xRr%S{; z%{sZV{4cciXDaRY@=4|I(T-bG&(o@P>)84?Rq{Z&*SZh3?0pfA$f&^8LJZB^rcT=^ zc|wJ17mn7|2r8sf>o$))tzK`D)i7xVwX(GGO_y^EeGt$=6CjIGHlq9PqzR?1?zj%z-ur!CM5 zQw6o5NrooacZRjToqQzb7z5%7#rp86XnEv3DXzJ=`sB^@nX#Kq;=sEn-lVN>Q`2z& z?L!47P$3PG5pdqPZk|-t${l%673veugifUsW~eZ3>pEJw?^8}ktD@&Co4Ly=s_3i@ z+crkGYfpAXJwo=Sr;lD09oFszvpnh4n3d|-(j4Q8Xq#`CIj)pg$Q^Z_Y&a>`h)!{R zoZlWlQ$dg3SMGUiY^*M_+XC<1Ul}_&-}7B5+LiJMFFCV;ljGG7(mnpcyJZ*jJI3~L zK?B6=?$wui=5-9zQd4XDF*vqu($H7FyHFk>Q5M9C(w44%`Gm3=rXXhujYUUozI$ul zjrC3LO^CKwIG;G3LZgb1*gW>I&-RF35#I6+m|`mA_b5_ry*(RzFUroH^u2oP+_~J1 zzn6RTT=vz7Iy!QD2H<1FcVkQZmSOYVoAEQHsE3v*xTgS$Z z!P*$j=gB(oLc?4N4wMzIPLzAfS^K=?&7N0vr$lYsII})^S4=XF=wQ>Z{-rZ#WhONO z?QualQR{-U&U?iwa2%h}kxO)@A{tcx=qMCLcDEH}mdN^7Z5d`tWErcrT^ z0<|je=My;13Zte;O&RXFU(yh{?BzU8?X@&R%c-2w+0OF}zHYu4FIn~wHWz3kKtMcP z26e(^@H-Vb>y^zb)E(;ik?JgUIsri1QTzkyaB|ldWnT<4tz!Vd@@Ubp#7o^eoD}{L z6w2QvEFGYH5B+yKGNE2;^2Et87O)qVa5QZl<8%xr-mZreb6o!0e7y>b z@^Yl-xiz}wt+5glP7WP9k({~6++YT{2j!FEO7nOR4KZgi%z^5Cax3gZ3LiQbl4Ub) z7zgso^ih>d5?<|)dz^f#z4TPW`fU@VyeQ>S5bl!=9nl?~5=xm!ok73}P$!)}iL7N! zgKBF>YSc0Bv)&a)wnU!Zk}lmnw&M{W)ghBbRo(_Xj=x8@I#wezuNBWtt5Yuj}vwaPOZ-zt}3tttFytmu^XuIEOHhUoll$`HfBT~dq zN%x5Nwt4Si%X(fBruc!F+xR^blFr+EHWOlgF88Ya++TeO4ZrFOmy#YE%W7`@9|$?; zBINzG6)~F6l0~58Oe}@?(29@;2qnKQ+U(iJdGB%<%pVz&-oZ5-Y#lpFWWaY$JP5ey zq*v@@Lcw!g6nt8P>Z6W}vbxNU&$gVEWgOoU+1J)_)<^D*&Ki#zzIaE|{JYc?+3AxrR@KY>c(HjYzK#GhK-)kyA|qR8NABPGAJ{zMqs#goNA;eh* zKMzloxz^We`07zRr#?|8Hi^pgBCK!~6L z7o8pJRlac(S7uoElvWkuGrO(CGjxuqWbDTEfc?7=R$^4l9Op4_hH`EmD<885N?&tG zDRMCrG8RKw z7~iu#t6hp&{tYvzTYYTox{o??+e|o~>*(H6;Jjvm>xas4`&CLZ;fJx7(N!jO!1o=9rts=$Bj#ogP-&S^}pn+fDK zL_Ya4CP~Y!`%pUj=(<@x_$p>9-SeahO#|6CQJx9w*0s85fBR;LDAC{m;0lBZB$8=R zCgPvT{lm2N6Q{wVC0*il)dmj+|X%CuiZt?>BFc&GE?O#~1ppb68Yo zAh{`^yPnp5I%k>EyTzmPjO!F<326gd3HJ2)_WgAT<^K4yO*^!<+1-CW8WUvbiM!o*#-k~DyYK?YI}d?#>Lwlra)>iaGQ7uXDE^u?-gjCJgJpf zUu*EO5Ixj^RSxXb*=AfsQMN4bg0h*2s3ohD)(K@49qUv_J)W{s_ItiJyPWg=J|4gG z4}A9iyg#4M`}%snUeDKU!_87JiQSGc7O5HQhBe7#k=5j5Y2EOqC^mFT&zYQAcWD+l0W`ygd{+>x|^QIvf)FQ(V!ar9QX_XQ5wUw-jS~O^i#O9aFN2vPqmek2jy`ROLSH_shsNM@Py}bp!uYzGV z62;Ym?6P&?t);fuSothVRc~R8M?8P+VA;j)No@pn%~HApe0_9#pgS7n(O zS6l;jwfN=F%0+SI2~e{pz@H;N;e2pG>3~B&ukw(h{~7i%)cd(1M}r^p1TbM88v|egG@Wqa zl{+!6@Esmp+RXZv5W`OVqX9NKhXcqYKcBFdRs}dCUH0ZTnv=r1@Gr)7vE`q}>IZqD z&6%qt;#iyQ zM~%mdUqJCDqi2KBwc+Ptj+H-y^4}Rfzcadi_nUH=#OJ7J3ct42=wEB}JYsaMHKyK) zAje#ACZUDw;b-yiLq^X^qif~Q53}NuoLYrH-{@IpbS*R5291#~o}6v;FE+|1LQHYZ zLz90Kj1Ki}_)?b9pJnvSGP>p(ZCl64`N4CH{y9d^WUxj?Tk{zC#KFl%f3ne|FuLN6 zw##GWv61mc&lsa?jL~*`jC^eJSfgKQ^h6t7vBsxkevMkXIjO->JXWzN%I9#T!87;TRfGQrgQv&f`pod# zKzxMm!h9%9<2%V1NaY~=Vg-6iQYrO`4ufgLnxK0^t55~z=mWu}eMT6&UgX_p|-hr3_ z82`60Ebkfo?;9XT?lZXF`nL*PN^$16Kdt6rf{FbW6YJQuI(}S_ZU1DgR9K2;*Rc{ zy_Vw=EJg4PPvLxyuhIY9Yjp-VNe=hd89YxKT+bL1*;&&Y#!ZoozuK@Fk^d0vYYQhC zCLS?V937pMLK~DLGAxnXyRCF+AC10Fhe63g`7OwB#fdmO1Q&kKg`7Yq%KRu`+go!u<&uJ$A8@Xc!yk!)vFgwNq)NEjB<}3C+Rrre)#&^#;#;gKK`M6rrOroNd@*YYm=EgDdk+Wg7c%Y|0ZwaFbe& z$cH}1w-_4vwY3KS!v;^P!FBI{42`X9ynO1EiLBkFpJn22PekX2!a^C^0}QpHG}NWi zp5QI;(A)Oa5*^;9&`fNF~rA7#WNYItR+a3R^RRfvVUgI@vb# zmtQxpwGHF>$UD`_yW1jvxz$R8mohP%IGrlI-x_6KtAK-Gp*8ASw87_i*Dp7CzS6r! z8W4im)-pkU&y*LV5Tn>>7xh;}T?V>$}C|~nM3V?4}>&9`b!h?;3GJDQIq)EIlcd!eu~6%TJJimw+&UuM_D|2 zk4NwF=!26KthfplkLmsGdaQR22bT%)lZ&I)MKwH8SR6IG=h{)d|ES(`Q13d*8YZ3+ z_9$aj!E=ni>YOG%v-k&3A05KhhL#Pt=X+iE4_T$t+4Z@w+Ly+9{;BK!S61m1R?z?Q zn6aflv1z-~J?>WP+&xoe*2mQtx_2Z~KQrKAQYd?2 zwujowU}l+k@7g6Uee-k+`a+@p8R z)!XzuWUM)Qk4Ep(u$~|{^p(;nVdHMxteQU;FOgmfls?bCjKdK+@|pVo5>C$GJnM9d zd#9hW!WNCoSgXqxWFzBKkcEy*n?cgEqBBJr7b$UM*xyvxx_P;L#v{6_h%CQZcWt?D z2QM4BO)D<*acQY(GrDti$TfOCD>~^F*>FQD7+o$XK9R&M+gPQ1+9;BxnW4~V+bc8O zmB|7UpZX2DYhPyC3Y5Ujhh^FRsFcqenxMNjUWWv#{&?NB)0wtDrF?qKXdMjEuMG(n z$Lg-NX4)oBluwFvXO=9M_ad&)=ZfCEnA=0PDU}%?XW9xU%4ZGzF5}wYGuS8om2u6M zX=|J)UnIVqVf$gCeEh6^nP^{vSf9%&ate@Tl_jr_&fzslHKbx*QVsG-R!)^e7%LGJ zy@z6;^Fgenj6Y}E7OCWE<6g{^h52`6I#y-6R%UiLXOI^&%gO@FI>VQ|lVRJfk|&BS znYQ;-a!tg>%w4aO<@0RFO`;ILlwpfk%hh5b!*-uq9vks|#*0I*ZO*Vgrj}ESN7N?q z+F|j~Kk)fF1PNyvhgwm89-#j^1fBuEQXS3hT+HjxQhq*#S>Pz%Sz z6ECMFcbUl;7I@+kHEWkEEv-sIjk7Qbd zH|j@|6Y%fJumQ=B?;(B>t1F8t`&z~z`giC+NO^!h3NXdFjFsD?mWBt;X2j>E3 z_L7O;NZOkVOjMn-gzz+e3POOqD7Khr0@_{{#-&X(A&+MW^-JES6oY+FOGL~#cnTHp z?eTjrA-U0VemJVxEum`cxf`%@^OAVv9Dx#qcbJGuQQPh%s&=3I+)(?etxH}?Z;}C_ z8JcryE0P;~D$}1uUMp0~;RTp%c35U}OSYzez2ljUGI{(g(W;?c=ekZJE_piucvUn? z$D_1oXjc!k94s{~%TbElPi4vYsyb&{c+Qq+*;p@0=;DicQPWUl>|;4f^K2=xRxne6om#w8ER6`1E=>oOUvgjimRrw;>$BPekVzSL%yma)F;r$y zmSa#>=>k?sHWp@b99x)nuCS0TO!oH40a+|U%OIX=Q}~pjt7ILWwvVRDm6L8|`fp`= zZf3e}X8tduFMjs;YgaSxEFG0)tU4v#fl`pyG&GdUSJx4QL z-pnAk5WYRgEl4;$;>wLjA~O(S0=wrAR2(#Xdo zRPDAz2>RtN{EehXbS}(k@o4(15VmFfRp$IUW6&>wDn7`-IRG9KF90b-`zHPThDrba z29Kr?q1J-zCO8JBU0?Wz-=^@mItNP#+(fBpP4XgftbTPuCQm2CdW+cklxMpuMSdpI zn&BzWaFu7+uBXT~gUd7g+cP{*XSklruuVxtYW3%?2;*v_TO7g^FX{23XZ zdoo<<830QpsX_UJae>G&vaqKqjNMJnaLvd7gUoDqS@sw^il=0Fre?UN{o#Ej#T>Q`FEV0zbh_IdzmEljw@Wf@fNJh)-wYRm_|D-d;4WJ08yD1yvzo8(SG@E1>b{EQtwAykD=5N!9(mMim~_bv+;mNC#L zu_$%f)0^07LipU9Y7FXN?thqwtM%&(3t$ z&UD-1*>Xc>{#^OJ;>ELV zJLby&A{J)1(0k=&k};*T4S)BF{GZu7Gv!-{ESqhgv{l1r zHaMo|&9+r$%3rlioxSAaw6b>s-Cc9tjuDUCek)E9U)>h7BN>{qmpMc`OAXsT@(&Cm z)_)6HUi5@me=)GpJ_x;)-Xl_vu-pSl5Ieo_{>V^7eguAbBGgN-T>|VFBbxacV&w#R z$9{cq+?MV6y7Xx_@aTclez7gQu^#{?q~Cy&2H3mRuaTN* z9xKs*hGB?(3sst*#>UJ z7f8|h$m|P1E8j;5YfT@qfP5}Az^da+AdgSbnn@atRGu#3$#N6D-%J+^)PQjI*U7Yf zR-R}XD|1-P{5b6myqB4qWEaauX2ak_nm1}eaZZ-N-qnhC8%!i8=Uw6IS;0&ews!!W zOmLFiAUKJE^3nBubOQ#>f-aU;v9UxiePn$f*?`UqcM{8{ibRglVqo z7~58c^t)s+cuu`Dm>=8Dy$B>{!0pyd3|E&40$F%F;=b$rdgp20A3@HiklXhNWPmaV08}0D6&K*3K)7td#+%n z5BL5)rl0`4+M{mzxQXc913u@qMGnpEqy>o;R0kb(}#5A0TVIhyi#H& zd1ksuN0yq%B7q>8ZkCD8+j6~RqXrBgbH6ssN)RExOK~(>it*PHW8L_uolkJ}yTd9* z>2HhTk`EVsl{M?nS9D}v9Gr`@Oe8x$izf?`inIjB^*l4pvTS>K-+~%5S+t-?Ao%v?3dcS&Z4aX0lWukM1bqsYy#7;>i*dHJa(tSy+_5z-^>= zSQA(7B=dQapVX)&t8`>-cCtX%n8-?jU`*zl$zyACo#c0o1O#<0bRzM$TO%lR?{@R5w8p8@a9p{?MNfWFx(mM9htla0`;7xhRQ_Nk;Ln{5>ug z>9PO(p_XLD^`xD}8!o)k9#>-`^8}*bk;{|&FmdrUfBr?LyF;EC&9VfE7U;9!QRKX> zz$WAqqqT`xs|%c+=wE@BQbw3=^)X><4Kgj8f@G=ir#>bF=a|(T))J#rKlU-2c4L3r zFsCPl5wswsyV=Jga47B&v{k5B`+Xn2qN@ov)kw`X7LmXxnnFh(!oZs80|H&iC|ctH zPsTEeRzHy7Xa8$aK#bRTx|{{CaSp(xh=&A9m$Cp(Zw#17oR`3*eBLRT!t5Hr+TB;j zlaY*Gy(|hE$1!3hlWRRW`HWhv!KqP@D+m@cZ#gKB@lP6Zj04ecFJU>Pv+a(6%$ ziT#$I4uX`gqxUnCHII9Jm_W0fj@hzdV;jG*3=+r#B_&v5D+Fq~9*l{}DBcXDbl}NS zTp~ifY>1iU?kIASWjo-9pJS%kPP)(P9}c<-1C?2DDN!4GH57 ziIFD9?C9JQZ8)dVMw{&*n2NGC>`eg>4>JWI72`hL$*N%bd8H?_U)V>xXUFrL$m5@?jtj z4qql6c_=#>gi}jR-(ybB1YRG?7HG1L+>afW4~mhm#s0^zFvQ?!;P#-nfSD{`jjZDC zfNZGjE-hIigKtsPAkGM%#TS-bC$x9Gd zywaN%qnS~nRdQ*3?}G~4xW)2umdtkgNQ!2od#zc61RoMJHLV+({`l5KL$P|y#8hzK zRx`;-*Te7}Q@ zDH=ZdmmAL{!<+)ix6)xwaeX=D@JrleF$8taws)~yZFw+_&*ot?1J=_-7BZ_Derd&1 zW@1BaA0QO>{BXjUsR$R;HmWRi|K2Sg^s_9&WgeJ>08R#4hFH zry`sbe)4XT)vQHk4j5&2*l)Xu(tZ!S&p!J4?Tut&$t>I~PC)*T+r7NtC0W7IZ{*kW zf*T3CCIJb7UldOtR%gQP0&k2<4}D;wxT69;$6eJbEbN0w2C*G49A6N8Ap+yPfPPOX zL28`^vl7Ho;dVNE{lXvl^&5q?#hO_{t3PeFR>EoNBkBc+rFuKzTJJ_hg#j(^*n}5H zE1p)wF6WTaO!@@c9n<_2Znhwp@Zqd3YCFHQWhhKKp={EY2?O zEsjY$i{tQ_jc)P?caKtYR!E5G@}7>sz;%oUw+g~3Bt~!SDuAha1nO+G&mq#>r-I@820YsT21s+0I8Um2qpwK<%G+icW(+HQy$`RG4aV;^!)pK3 zcipq5Cjx^nko6$PO@qLAdCA5@OWGn6V`Sn-Gg7C|Co32}Q2WV1Sw54ZpK`LuvHSif$EU3A9+>@mZ$;l5J^O+yxm@iI{2 zws7?5Ix*tN3H1nUVW?BJ)=;PN!d18mYmykHg;nT43hU0W{>r|l2wb`C+?rwif9(4P z(gFHoB3VHhq6sv0-lG|2PYM`HbZUiV$)nR@z!y@}_MaOVe^oYG`t>c@NW&Y*Fn3!T zb{mcb8wR*G8BZ3)9ccmm{d53JE$*zDEI9>q@WX-g-zeg~)sf|3Z}sr~6YKeb?g#H- zxX`M59INgreS8+yc}PXD@}B?1M@FQIe;EEH|FQP8?vQDZxn?7V%T{HA%18A-eRHA` zlGMBku@$Z2vdvr(tkdRlEXp~r3|Ey$oQrbJyQhKN5!}t7e0EMZkz)aZgLzaBM5+$mX* zd>V#VEid1QE6;DNwq)$$S66=)SDYZq&nmVaxx=C4jg-lZVZV0qvA#7UjM8kDGG_Bw z1HviSBfR+##QY8axp%w}_o^XLT!wthFR%CITa) ze~nvU*ob=w`D@8R2aA@?WF6F7xoSy@h@IO#fs#z2_aaMb1=H<8vWRt&=NBp5M1)S> z>EXkn9uA*a7fa@Z%LZqkcs=Sxi6oL+P%fFzEvVV{r|WS?vKtWk1H-0W#<-G zhdQY52;7-R%bkg=VuSWzpK(M&SkkhB!rggnBK5xystz_F%gTc1KVI^z^z|W|wn-Zz z7nIv;gqkIBW$~bjkHKOXQq9^d*{G7xWTIP`Hl(=NCM-}H!)0=26!ZwfGfRUrnkz7V zXE|q-q*Q%z7Yt2y2ex=&7N00uC0WmBtcTRY!%0CVi7Ogxv#rRLk4q|C8tm-FC3WLB z)s1?B85*TMa`@njk||LaMW1|fW%^e)4k2dn0=L~}&y|lFp?F8p+&uDQk8FZ$Nb{ww zZ9^`4Y+bo<&!~BZN3`UkPs*<>`CHBIxZG!wuT(9Eas9`D%P<1^^#SgpqfMOjO^TuVQ zJEa-LO)q~l8R;lsX#9FsM#ED5#XZ*YX`4BF82AYi;cF@W5JW2BmZ zY*f7sw$g#pqM6vxP-%|Vn^CA=4I{h>UotdRS`{c?A{zx`YnfaR+dQTgbSzFoZXj{Z z@EU%PwnkTDstIj!rgCQYL(%6gun|s4?!Tw6;u)DZmFYHNguIA-Cs>Igh5w%HSO3dB z9WT*M6gNDwudzI{b98H@F}c4jYERhCwZS|EK^L6DnSFnHW`5M2Efn<7cO<64-EkSb zjJVR|nY~kfrckQ1|D;g=7lA5VE`LxzD9t}8O&043OLIl0G1NFUh#AASK|1~_G6HjH zvv12{5vlf8s_RxNsMMYE?^BWfmz95)>iRC#HYg7!HvdfZ|0C7&_f*$EQf)Kyzb5wCdh_H7BWsuTJsWjS%F32~FJaa7eYSBc_EK&AWddT+ofKb7j=oa%Wh)%8@W?N5~>##p9I3G=T{^*om9dOS4+)y23LpY+T zoO<+q4W-q@2F>OqPMx4^n2w|`W8tKez^PMW8ytv=3@A;-sf~jgmQ=g&ql0kOrIlv| zbwX@)75kqu)Jme*g)v+pgGz-hW)G? zcQpv}G)YQ#v2lm->dgQ&t4-o_kqG!~nGxzA$Av1td!8Arq4FQ^RQ@I)8&}pJC?)JS zHcwUJe=}wHKI*bPH2chN(e~&&Q%@qz9*yvksM_|%19JV)+OPa=VFLNi*_o&M%5S^= zfPAy~!VKGEE9L9OM`pBKS}B)^wf%?vu_q{^9Ya3=cU3L*U^&zt^2a_|;6#Yma3d?U z_sVoS+KxN@Eq>dGhvW;zV`tdtL-Lhk$&8lc56MT1#7C1`J}!_)iNwXpwtgyqOuQ=D zw$v;?AWlrSg*_}+PEaRr+bfpp!YX1rbYW?CpBoDImVyq&jz8?Eprevo<~=N*AQE5H z+6o_$?~Zk8F);lPN}1cT3OTbKZ8Hm>9AukNC?6w!Q)^2tlqcz4pMg5)-?GE^G^o_i zh^2=_=s*7v3vlQ)_UE8u-?Lshy^!$VVcojVAN$I8NQ>;$ zElJO2Y@BJ+70Le?KU-ThUF)SCo;0nGp5WjseBRYZ&ukg+(M~6Q@3FD2DcbHNt?g!! ze3MwNZCSrsenKR!o8EHwqjI@q=-+3!;lTR$8IHftD7~byOfn-#5tP;(kA^c&}K$iCgx?__Vvf8L~WC^o{hHBZrS| zD45nlHnJy`(`>0v$Qz@7oQf7r|9o=qbf(spT`W%= zJ&8@Yl^A6sE0fx%$7|!$kaqxLnl12xoF7q8r>LC~j>XW)V=au-s`=>Nrbu>dg$$7##%Z{yXl}tKPRt>Wo|s+ezvU$Jn16THg4}J^i&&b{rhv0s zG$Nx&nXwu_3&-`wzMAED45jx9D_!oUc~-LQi!ruc|0AEW%u2FtfFexH zmZB^N;`KtLXNRkoIt#&Ou#*=v)qgft!6KG++Q>Bxd0qD6V42uW*Py5RFwRX(3u+FR z1Gzrjh_JS0_oC!J+xRW=>B|Akq#cgX(-sW0jj*FjVW0>5t_(Z-H zqApqiATM7_9!WbA?0O-Jg4iCujGQU5(a^bfTpTFfHyINEX6noUBlO2L|Haw-8$!?2 zs)%XF+^9LObQgOUI4M83COP)IiN?(NrLoUXY?BzZO$c7IVUH%Surqj`hjXic+-JElA%EzvYsg~-*^3hn*ZILzI)w4S%pT5@F*GFRnI{XL6$DSHLI@~M6{0(o5 zEbrU1Gsvp3K3BIswWqF+#B6&luRKBxmV7c-Ju0?lOv9kq>@n42Vt*Lj0QFb2dhC>* zsD|ZVebq3bemu_%*w!FTfnU&giZ!lcjX*8K*%!p@3sWN5I9L<0grjXp0h`Q$;S|WQ zL(|(N)&7+3o1QDKi;m9H?eG(;3E8vOX248fS@td2%hgZKsu4@4hs-RinDynI7c)0` zW{%0&pom{CfBu}&66ADN_FQ{F<9|ToF=<@+n(d;H20Dy`jDSY5vwz_ff40Vxt#K{T zfa#Hq{-u1C->C6qXjvER_D!hK^Ry(6IQWgS#`pzs=AH+FPe zl(%C>lUU0~GccSCk6rtZ7o((mVa{_hsh% zjuJS(Pvi=nm)AuZB^9r14g-iat=WyjQpXiaB?>dniYnXz9-l_$qmM}>5+!=ZZ} zF%|X~BQ?LIFGDYfqLrAT${!kiGyh8WoA0D z;qz(u6``s@dzZ=nRr>BEe4}Y$)#yQ5PrAkF=){4&TlLyy{sU27xYORu zB7K8w?mI(ptjFPdq;vntD7HOE_Jnd>7;Btq8_m5Hd$BwnCj zSZS+3E?UWXC+%?49xuJ*qlh_sOh^4D`ktBkYz^>K5AZ|)Dk(jUi!BVE?7+o(T$H^V z&^bD@GaE*ll+;N-SPsVcc)+b(XHq`mrd`IY<)H0H0$%d|zO%eVS;S7pg0Nqd3?@gl zEH;1XT6QvSmM_R%UnC$J@oM;F?hjyyOv?2p+GKKc<|ms;Q^6zGtCdcEs#Ym+^V0;< zRFdU0(}PxeT1$^R=}9+jUZ%g|<9RRXN?(ZoN}m3eCm-nOM?U%~zHI5Z000!vocUrz zxF)?oN6$=_$cAI(naCN<-O@=20PM-HZcsIbx&H$B>WOp*S%LQ4j)@UNl zt6%*zuE$I~R?;qzPNvs6)rcA$NdYZ6X{H`4ZHI=w>{4LSP!oB-;$LR6uU8H2^7}~% zJkKezN|2;%u$5ev$+$7;ncPH&lf0+MZ@25*Iqz(p?n_EzK@{MLYiHxtw~>7IQ5J`2 zG#?~QKb`dTNrk!u+Md-~vDVII8?rN}znf%hdmjEJXU1J$?G#I$63u;R`R7Slvf(~* z;r!C*QV6Hao@J_E460eECTGC`e57~Bx+HZR7>q7~?hDyFw&3(!8PJh)EQvU#p?__zz!vH`6MfeJ$#_Y? zNxI`2-Q=v7d;ye*eCnj#Sm*VKBB#TiM|f2&`5>OBZ$k~-F^e%mrMnnIud|D^T47zsN7ad+%?Y~KB|rinZLgrAKSPix5@WL?wO4CFu!vX$F; zvX-e7Ud7GBNogA;oO-@kY8}v8$PxCgeF#a6cXhmo`){#_56nUk!5#RuH~8j;S-^wK z1{AX~*r#}L$5!0=DlRuE6}f>)+cQr?ySf4_r&3g@jHEkHDcS}Vrd)Vj!#1RV`2t$Hg#&r@hy-1f z1WTuZyw-~?Cb}oD(??rPsD}~r z?17E(!>x&aMY7O2x$di`ft#{6|m$V{2J5O6=;*A8; zatM=y9E4$uBG=brEjRLBk(H6$VK|v~6xaC6U)kPW{-%{!4y10_mAoA!>@ap^jbpnD zEf>h4n$qo6c2vLGr^`V!AssdfrDpS>i z=BkIRRV$oT5YFs6+G(O^&9q6NZ&~TPIDwNzDVd^F#vicnIU_Gk$~-U1)dyQ4iWmb+dAb-=?`5uE3Ja^WvjA6M;p@b^O>j%yn#UXz-+_a zr+l$Ojsyz4<7QH_lN?IV_H`;#l6~Yj&?qnUXz3B0;`&nv8dCC*P_R(I;nJKXlqiMX zRAwXPB=17MVdvYg@r{Hp@eK6*(5&g9-L%z(v5&YsT| zyrk)><=~PU^8Gb=W8t^*sW+vi7?tZ+x zZ=&6O;KGo80PYcwb38eT)@aE&X=@*O4}6C-9fYkFN3;DjI1x81=@t1%!}+rqhGS`y zF$X$wB59(PH0=75i5xZ)SLyc&a1i!^Y~x&^d(E^F8>?;te9Z&r_iF41!nNceZx?~U z;xM!*8lypEvG%d!HWJs)t!U#O!*21iE~K{QNmEj?jvUA?2b+*zQ~btdGii(~LTxA6 zi_O90<9C`HOL+2DQV%vUzJ%)nnG$DvY@*@|< zAd<2-EFvfPg(NUOaYwx5u#cSiB8S|x)k_aUg;{o-aj0=;eWU|zG?8QA8k2f- zq%%Fa1PmQJBae9L`##zM5`ob?g_Ck0Sj6*j~Vp1W4F2KxeEY(g83;sCJvZL z10W9lJArkBRzD^W0(vnjjgviJUH&tFHDeyH!2NN5;aUz)C;W5xJ>KWv)^S zRq@uU1dFqZxT|11|Kq z=%~d-8ZOFq-|~?~Jh{h5-;alU@Mn}8kSfDOPQ%DkM{?qEj_kT+CTE#3Q##0pR2Kr* zf|0&tv8Ha(Z^aCOoMu4VOSgE~ekx7&tJS*vng*VuF@_1X!%2 z>3e|l%8qevaxo}89P^Qn-1G!8YcS!##RaRLHbXGL!m8tZY^$8tOz~kavo}VGykx$a zv?RR04N>|AV(M`K_D;% z1%jLh6lMrH5DTcwNsfcD2V1z297Du;Gi~1aHix~otu~w|N0;d)AbBXb{kM~H!4PU1 zOLSy^@hg9g>oGBD0Btz6HrGlzc9lEH$;Kl*fwa{w(Bl`t16&GdAqiy0n8?{jE9PaZ z62wUXGx=+_S|Fcf8&lwZsZcI;lVip(u%?>kV7!)T4w-cNsd&Zx?TGm}>UC+l;MT0( znq%84lN79o26OE=89%EbY|B3#@5WahiT}E`(Fr%jG|{5)v=sO$z7uczrc%Dd;v_x0 z_(tAD&VlE5lWxTWnV}`D_y2_T>m}~?5YG>@p-)jV+eh9zuVrREQ^aK#f6|dTW^$$= z$n!(7{ozkqGM5c?h~LV>$$MRlybdZWr?o0rqessE(DMancjeen}Sxc=8_O>$`O1GP6Uwz|;4%v#poks1a^*Ux-? z?nR z)Nn!jNs(5f1C`HGYDp`MnDj5=1@FWjLR7s#*3Gq2$KkD@Z5J%DBiqZOe zZ?Tm3iy|nAFT3v+*S%;GQ`9V+5`_!P)1yzz3tkEN&XL$JntpBK1}+*&|$bE z`A;T!I+9!+Nx#6uh)4k7*k|AEw|J90$CF&gf4vvF)8IdvH$<@LJ=C>H}2z_fH2oG1gDw}VF&|*iW{YFY|bt%AM-xz6VB>VGIF_M=5 z4G@orUHdHn;`(0!;#VXY6bCmMj3R`)^M&QROuvD~!VNy#UPQtsL^n8QLO}mTI zfLw}#-pjC!RgWE&VnUt5EXgm(?h9;C;Kt@j2h@5l45;kx+TI9ARIu}g9Mzw8$xZB# zpcs2pi)Z^&FF^o0JG^X57?YqPjAAfEv;lWimXu3pM|EsMIpnCk2seS4{U&bI&b(wM z^?+>zH7C$|XH}84s?b}t+E=wkSM?~QB_}-!q0&otLwMIwr@M+etISH#>}1g#@IQKU z7*Afog|q+{<+$ir6~;SyL6ww$Fb)SGXMiQ!im-Bvu1{GmQ2RDGm*j?7l`naTvvQ%} zQ&s>;Fe_iI<^^S0g4Rb5n5jdcbr3gr`j$_*?Qc-&&BrStA|*%||CIGBPW!Xp3M|1x zek&bw!@Pv0a)OV(mN+y?0`Q8UH;LsyGvBV6CxFp0lNN!zRWcI-(>^b8v_oL3iGlvd zOzb$n3Lq*aLuPslc6Gh$1QX8dq8Pj#q7jc!K zq-{{j^9-APTNd6&8(^P4N{`EAPSR@OaSqdZFKx0CCzE2cICKXiRhGu}Lf4bnZYBrQ^iJ}2 zTAG*Cu_1htTPFef0d7CXq$qt^g;NAl6+|Tysjr)G|ISh2UUJ}6{Q?0{RYDx3OyE=c zehKh1mWTB#$!+PmaO8ypUTdXY4{!Q|V&@eccn(`bWTp(ER5)&Aww3JO1+k-X*I5kI zE}U>(abN?I~e z#k_5hI@)cscOeo4L^og_I#RzNOG})Zni5PQPn&eK9-IS$C~3)YX2RYI?7~D&=4V;S zySw1pa%gRjlK^Wujx!X=m1e=NrV$PDGA;wdd05M!k5lbTMk@ph(^wuCqxgrq+K{k@{ z)xap9PXtD(A15}E?wlj-=||dSBiBfh)OjOTYsFQu%srf^|!K)At3mdqs zF@Txe^U-8ZUlttl7l*VB#en}eqdjXXxs|3C;3NU(Rkq*k*}C}@NL^H#~-!ue#O^+PA!Ba70~#`;Nv z0T{wZ2O|dxUU)SH>mJ&cvMqsvf*U+(0D7mz^O_rG+F&O8Q7DiDB_#j`_W|bv_@`xT zYICq!Q?ObssFOhVLu@_(bOSOLj->C!K`hbD9wBd`vH;+|1aGd#UN+Hs6S0Ga%ETZ@ zV3V7q*cPE73!;I0b`<@J1~zW@V56m$0ugj!p3o;Cf>q@aV6(Sx5J)q^<1Jx0V3XxK zsqG_g`q%*MbrV<3^z9jt1FYo0b|L^53|Y_>Ru5-8-TH^p*Ajlaz)vN_A7+Ss$11kO z*oo#mk>0;K;*JKgzpID8qk*(LOR&;R^bCfu_H>U9$J)rUBVwlo%E*X3mU)17;a2~t z9vo|Li*Y_SI@d&CL7IamUWFZ4i}kU2oHc>7QXFgZyj6N%l|ff!G*xAot8`BKiI@J> z$7m>)&qXu+Sg4wBB}q;)2{9IYM6Dz7CX!$#iO?|$)N7^hz&OfFE${m1N$5KPMw{t} z?7Z744k;hYUcm)ZKI*MvTcfz6Qfzi~u6?*XR;Q!_{fhwrN`+Vl)uHkc=5e-NT&?d^ zL*rGMFRYnqr5^wU^(lXERz5B$%~s{ZI1F&&24Tz#R{D_vfXfyblv|jtvh05t1PLu= z2!+f~mdStX62`OPxN3Ce#5Bfk-B0is2LJu>H$+G)(_07jlTyk^Kx!m<{3g zSx~;`d+)}UdV5FmB0x(oG_w%dWmsLil7sj_vjya$IZv=N5YyR}>?5x87jckVoTLQE z;*UkpDzxV*yilCZF7eSr_KyYd6ZXfUFSKjPRx>?rWt>c_nc$%w< z2kkL4<8}^vDG2%=fwn_OR5xPzmVc$+tud1h1i+M82;jvFd76%|=bxyFw0C(|ESROk)x`#COBOvOsryTigT1=I_w6@8@sN2W^* z06+*q3-z%3dMt2zC>969O;7N|%kbGdYw;8gw}%2imzeN;z)U`2a`Q)6zCft3Kg)6g zX0n%|yimCOmEkwgvF`;QxEkj|CVb*}@)t`yzHm-XToe7& zM^2hZ&nLO~ZL{x&``XvY6bptz7WN-3g=p&Z3~bnUQCR!fe-LDqw@U4+iZ?;ttRhYd0`(U#|3Kda>a$ky&Z=te z3^;j{L;zFsmu{X1CpiNG1gS;mq6FnUr&4bR(nz~}$}H@6E76s!oFp^vZXZ1^Q0(D7 zR(j4!&lZD1jS=bW7qgR%EUk=wj0ggO?%iAII=H0fvm`e`4gtOy@Ix6U0s#UG-SOOQ zpM{+4of89xaLvqi09epGXzBYrbutqAL6C%=gE52-i7!DyPa-jcmG~+v3%ukk_#X&g zj1zAK-w$3@AW*5CfT{t!zJ4DEwF{Gnc5|cwAVSEw$Vi_D!gO1Z!f*z1hp1z44RWMt~=fT71$f*Ke`0>p};a0ML7vIj* zn9bNL?YROFt2Ew6a?bx*0n(&-OyQ*tFS#!WL7C{G^D9AVVU6+*T)e@RRqn+7-6q;< z@e-4kEQIT)nXz;&UIy2?P2knYVl%A+^{gASYRj$k*`Tn;8HEiISZk2LR=%QWi-HL4 zC3Pid6;`?zs&+i#r40(N0y3|Yeza*jqp@r|?G87S+GQO;XFoZDCNtxlLu=3CWcY}2 z%EsdrjTk{USdw=yZ@CZKHzkpw;gl{Louo{E!i|{QvYdvkiq5UFNC0!~`Oz6hep`LmmYW#{fd2f~wb_|6`K%c@ zCUz7*6ZRBIHnLL&>lnfg%*BNHwEC?aAYGfWliB2GGu+s?9&o!KmWLnA5${<1u`uPY4 z-&hT!pRi4kQqGAp($3)awjB(fMb%x5l>UZ<9(HzxdC3v)*)R}JES?ZW#aVa(mWU5S zZfaz5(}|$agtHcWu8y97=dXTg0B>V*(ta=bu&WU|Mk_t)r2B2)l?^z)+Twb6;(^7( zU($Hkc=%`=PdyjFq@;n~IvKq^W2Vk+&=YDHVTG23Lvs(Rvso}Ih*+_2bExMe`|8p2 zX(-vtJYU~j4ca;h743FLUh83cn}B<7SJXmP=OhkP?oe`O8A66Aarmm|S;SHWs=u|f zF~UR|D(2yYtZ#VSNp`Q#S5(OB>mR|XRUyA{V5Mm=$K@)WNTt3O3f=r~rIdxBo*tnF zQ}0!B{qmk?qohy$#C3{eR%v z5L#=ycj$=NySB0R;<-{-vgN>8e6nnwA^#CKKYYrKgJV0|$v zwkxtaXoTx&S5-gSDGP?M>Kz0`wyI5KTh}O8KiI1J#ZXemhu01k+w&C-PpAfq7tXo1 zU*+Gg^3nhLdD%TsTAU?*B#M$Ri`X`mATIH%% z*{(Gr4(Ubdl&EF-H`~J3grTWrh^fh1Tn_)(ych5zFQejBW*M6o7W~Qjb0=HV9dp<5 zc;oXb&$BAmbD{5)Cf^wek7P||>^mzNAeix_3g)B#_%!GT@RTZOe)%naWjtxY4JXYD zd3Jq+qD4`q>sf_J)zwd*jY>(5-JMsOtip&n>4OXqd`O+9LiQxsdX8kao*hR4p0acH zCXOmL42WyNydS7FPkAUAW=)QZPPyagp@M_I0>_Lx`_lp*;=!X7UI3r7I`OfUiuiDmt&uL$zv4}nEr=pf{{N_Z_qeF4?tlEu85m$@z~M4S?#>xtxEl2GQ^(|hsWFo%lJ*Fhx1<=Vk;n9T6f4cN&__x`P0h*+ zFyHq+gT?dx{64SO=kt1f|M~fHarW%J&f0tJv(CP(v)5Y6h#Y7h@}GKa(>23C`l|Ov zt2@Zz1HElIDatdVHH+o4LtWGu?)M#-WKOHx?Gwzq{d&{X|?K znpvnP8qv8GyT$86Rh_Q{$^+mFL(M%sUfy^b9v!NFPaOmk0U+W&lXWVTfU~6V#GXz3 z$&1OCeCX{?Z~SGV-@Vn5VlSeELy#R}{z2cP#KPGIOmW1hJU?e?MulyknteLrx@v9f zZvXvT-$4hsR=XpN;09a3BW}r;ZYGvkLp$m&hc^~ERn6?QxLxOP1i5khg8eE}@%!i0 z>@fH=!ffmsgYorYSYDJMJ(9Ay`qb?3>MQ=1y31fWymC`bO&EzAo<)S3gB z7AY!?EUt+g70Hdhj0c?(Uqc%YxzV2OSn@Tv(YZjdzVAL65=-WjkXU<2tohR+kVlg| z!nne1K1|Y{kvlN8Ga!&z_irlamarMhuDJ{D<9X$$w9jhkB;RAVUOo-Zv(D6(+# zY}^ZK?!_XH*MYasS;#FXaN4_}YXih|xT%aCvmj-%noB$4psiJ+)}q$KzmrE%A(Dq$ zxbzA}TVcb;R*{9%YBZV>D1gmKXTS$)iIz4lM|zmX7*GPG$ZJSHteHYfUKQC$E!!G* z;t4g^9fqahp@VZ9(FJBR;Zw~eEq2hx7exz-T1|{(CaN>e6RJ!0ROc!MsT5Cju41H9 zJ=M92kRIx(&h-q^51~5iEKhZ-`>XqE&%yG!jnLAQ`ie)36A|SDDJo5)yfE^|;895VLp_Ejb`6f!ojxG@J@*pgdPoi=kuLOrztP>*`>c zb?882gUq7wE#tANeME$)9!Hlh89XNeQ9?vVzif}hmfpCAwzTzWe4hY{WcUCSmsUVI zg6+v0Kt-1Upcqhdz!aAuZ=Z0xajROX-S}{ zwXt>cA$d@ani~=y9-`({nxp_V$7)9TsyQ`TnE8spvdy`SC`;?El4p3JaVP21K+>m# zSgwN$CB*vpUp`c-W?Fxv(6;99MQZ14+|=m6Jwj|Qb6+%h>TL9nkdmu#9SI{e1Iwz0 zS&CRyTD8T&4zaMIYA(2q8*Jc$)Era9;rodarZqM$ zZ04+OT*XDs0=Gvs=7#kL?CnjLu{B&@#Jy$VmYdYvMjN-p!M)ndEp6joyU4wra5DEo z=}im!qMBQ0;MNpzuam9eIVwdW4=S9akb9B1U}}3|EcAOSY_r)?HTQ~*TZZL@)k4WK zn%PBdthqJWa*>_iskW%O>ds`#HJ=u_mfIj3Q^2iKb2bC_l9pSGsYEH+Ei$mBC2-5~ z5*!+}_}kbQPt@|NeabMCjazJC7m>k%9To&t$jpk*sYsA=nDbghMKx+hWk zZ7R8sjeWzyu2@txxK1Rlqk`@G)y5kts!kM4;V&(A92KcCT&iOX?DKkUYXSRG5xZng z90F>gX=Q5m)p#6nc?2{U6tGLDf}7FUUc5F3=P>x5eMG9E5x91sNfU6&R&-1Do zGiOY3s-yWA_A6P@27c{+<^3h@CsF5z6}XAn|X5k)+keb$qv%`({2FgW8#>$n*i zI162gBdz6R=Rbo8^V5IfS?swE;DuCGTevpxit!mmoF%Ev2g4lb#Nig9Emdkn?$*!h*R1)GQ?ZY_Q^5MF&&!1H17pH+Uo?^q0*kiDXQ#a<`?#9En)2!SYMjhmLBlt9;$> z(4jV`3VZOnEt1AvFZft>eJ8K5WWK-5+Ap)_w+K70d%JAlMrnlKu`tO#Y#Lqoyk}#} zA`%_!+8vmq8u5-)YRL;#)yCS6HX7LVc^O6QI(Wt7Dz)6o0i5udl7GuS8B; zOWbpC&c4{)c`opx$*DT~Npo@{aSm1JKKp%JDjJHFvb&?Lx5S@zJ?)-@<4H5zoyP-@ z{*$l+pIcKr><|ZFnA9bc-OX%z8=Fk-JK{D!L)vYrqmD~beb+swYTc|V8N3uzrevI_ zlZ-KaWcGX1jaZgTmztIg)<8kFkwQPY^lr?9q#wfxie#(@#e=buU?9jJra@pBg9IYO z24J|#1sV^ziGoDhwm3Ut*c zy)yVK#sJ(4>2Q7D*SRckX;oz?1jG7W-_q9*jRwvAsMpgB$%lkpf(6n`DFJbP>KHfoFxA&UAjf7~lu`flWXxR-THsdL}O$K&V5o@xs z>7{d%eoESjt*-DVddmg-~uz!}4s4FFqeuTAV5} zd_r6hkxlXnVm6zpvKTMsv_H=KFfaQHHldSz*>>;xe||?o98Z$4*tL6i9sdq#FXZ<} zOpZJ8-A)b-HGf2g;90VrSqMjv6fJ*eKeq5gC`~xoT*rM&wMg4FFzf$aRexO^8+GFr zD=GX&rT<*m!e5?LJj2IaPY5Jrsq$LoLFw02{OuOyBjdY%_I3S?Ekp_n$PMG>>BI#S;}9ss6Mu+)?xUM zRxP$n*%{c(hLVl%!xVOT_;zmL)c7=BS9iP6L_V{JlP}~Pt7XH4GV*aj$O+T3@j?z( zn+ZaWO3Nk+Ik9W#RPR~7T7*9Lb8s=x0>T)v(4~sVu(44~A;i&D>e_`i;$Jehmb0-D zD<{=vS=b>qR<$y{mPMU5HtZJ5PP<5)<;AQFoNg8-v#xK3V`W>h;RCCbBCg7tsXtwn zKcf;fTX@LWi!S&{1&KNCO&(R3Qfl@kPX#MX7`KsABTuP#>1WDhyi}pv!w#dxLhEA* z$A!1S`U6&DJj~nJcw$S$4bid@0(&Y8n}}QR#IQ&eidebW!bPkRj|JBbPHp4D;bOU; zXM8aO&+x2(qXG-@9Bphku@s7^HNjNK#)8{0oC#pTJ9^+28+(zBX=c^62)MkGOyI>| z-~f0izwrZ@=$iLO5JCR0;uu22ah*pTgFNDBBjVUf_7?x0IGX;q@@VT9$Myej#L@J> zmdF3M;%NF`%j5qoj&J{`I9B{6jvo#AZ^W_qpr3grc`7i?e;|)Lhy4FZ9#;&IN0~<+ zp&(y4mf*-A;8X_g_O-Dz!VH>UC;Nt3()53t z!VzPvL1Pv_K-%q%sm)B2pU%-kPL3I3K0)RKu}J)5xIS0}OUKuDD~XvWISH%Xc_Xg6H;m~W6@JALHz!NF(=m=lik+I7&GYlb-Ehcv~9dSu3v z|2Xnvhd9|GP3#c9_p~y?``3tte?;(6XOxM)iXl$_Ax-{6_z7o}VezZN1%pDfh%~hL zoMNK%-g>VgP?Dipm4S;Cw9!DV7Y*UxI)g|$i^CC;OpMJDM+O)3Rnn@s(+V7oOaCQ$ zV$3}S{k&L2;U;_vO7A8)Dln%YUxKLgP4R9Qmc7&@)CVZIhhN%P3!wZCXhJ8${i(Uyt~Yb{r*S>i;RUNfv zV?O4R4*Lvr&KJ?nPotYYjqZQX(6*1l;paY=9G|w&NEKgbiFWRbZrUF$d)fM|aen!(r)t(azn`O&>+`$G=soWba2`*d6V3L^m}?^LM^gPLyql zzOW_QxhlHp?Pz}TS>>?7V@ONIqQTIn;DI*_nPRCxs_*PS`hO^-%fxKMP3aCAHr24!O*CO01k#xH18ezbFRbW;w& z8F+#_6sllyI{Y$F9*H(yBQC}|>aN2l-Pma7L(xqSJs>KEk|5M-#$qTp37YSksd?ja zL-@|`lrqI|RPihB*G4j>!Um6VhRhP_C#Ne$`my_?a3;FS zk^t{7z+FQ}hOr+;Rg9D(mu-%!vLLz!ZXt9ced7<7e@I~2Jav@Mh`?^JH0pAY5N-Bga{r(aNx zq{oNyZ(mS;K}Ux2PhW&zH%lb{^+jbGeRDAH^Ka!1dSoPj_utCd^gDz3XD%rZ(enoL z5nal~^!UO1-|kY%MD*GS-u|Pqh`!12-ajE$&EyDv{ZGm{zM~?rlIdz4R()9+=e?6b zck-WHRzAX)URD;+D;WOpWjGQ08^ce$qI@~j6^>JONikYAH4;u4cai}D?jA=o{JATL zWfsfuK0m`5S)_m+#xML?xsblA zPY5C1y@*Z|u4DN}Z=u_RLiqAq%0*tcgFAis>(|h-0zUe>GKL@jtFr!~tWY#!OlX|w zzcwN>lr&;QsC`7Jc{gsR%#Fc3dt3RN*E~Y1?|bEAJog(sxE&izL|_7)5zM=PQ*Nf$ z4d%D}u6&aIJ&6DHcjcFKTM*y+hjP95)}a2LQu9mhDCg5lg2 zLOmSiyp3<$E#i}JGiEyxi*L?KcGJ#Z0!h`^0?lhl)!W0T9~Tj<`uqUr<-n6a2b)=; zzDWV*d7k<**&hS>fcwfs(*@7bTi0#(j^;1T7XlwtWd1r3=S#}#)|=zWEo-D(WXHYE zdlRx2j;a+tgosHA8Q&^JyM1c{Tl~y!a{qWKTf)qe9jDWane*ZzR&M4IJq~_{G`x#XLtJS^h}W|gDP#Z>Np~Uws_Z%32^QT zJo!Pexrg}>d^OZn;VvjP#l=6U`%LpcRixu7YRAoL)?nspqg?PPvtgJ;^xOYY2 zwhf*R{c~CKq0pYl0JE7$F>y+v42eLk#tI@ySh`VUY}*)sOgI~{)nVwy z5-OY>#PIifl-B41PZKdd;;Zv#eGXr$&c@pQ@yEVIrTHf%|8B4Htfomx-kUv2`yQn^ zh~NvpUlZsXS^eW`X14i#;PxqhqvtF6YByXDIu-m8H(sILij9Mr6{)ELiBzRMRcT(S z0Ewm)rQD~Xp#I?u*KZi-|DtF%D>fcslITT>jlVK6x_X~f>FQC!ThQ!G*)2+JBK)NL z;?P7@-*K-4O}j{={q6(8WEE!&(FA% ztr-+h>9f8&gm;OUI=V80FQu86WcHAg_7JBdq)VB>|41_jq_2cD6p)&5exO0j80eS` z{;HT67c?nE&NLLHO1gTqq)}%3ApS8gW)!Up;a7MuPqUFBq^}}F?2#enC4&f~u_1)f z;+tCIuWs{8gLtuJGA^I36mcF zZg3)**d@o@)XCMsgm7)JeO0jeasdC34-+?NO|SzS@-MZL3vSAMHh_QDhj9+Rs4ev_ zEN*RPsG3PTr{Z>_h_X)!=12Q7@6)@q{AFK8OP|v6k$#LdpgV|A?F+JZ2bmuW;P?2U z=eKD2bAC*;`lq0Vtgbq(Jj{3=Pl#%|M1H?Zet%1To09|hNGVhO;tqkvjv)JvAhS3C zET4Q&$k`KQe=o@F_WuuoArb>gjg-~z(~eTtwY9cLcYAe}i4vsp$5Xz9kMa&o8MCDI zrzD4m9abiYk-KWQSjd(8=5J`S2l1?oQPCIu`D__8nqC#em&=%in)yL;FZ8lmE4fD+ zXP*~T|1c%_18QorPZ4C*yxX52ENAlQDM9?Ra%Mx$LqVkb7HS=JqPirN@HkV+J1LB? z4z+J{omc$^ZHL}& zsn${_66_%fqm}e}c~E60Uo*clXt!^rZ{;*lU!6o=*anL{zqm?US;o|O-)Il45{NT@ z5zlX2Z};c_<~neVc?g4Pqi> zU9A%PyKt0S+$!Pg2QedpY=H^BtKm0y{o24(zgl1O+CcvLASQ*b@8TmB%tE^Odw#8g znL*c|;ky+~G97n}4-I5gIG-{mF#bbj-B}gfkwY~&DzK}|jb1uXV!Y>0?^E#80-5B< zxPSHS6fsiyiHtzGm*9@i8bVRpI=(43kbgIjDH(lAK@K@Qdq5(&O@d6+Pwn1PP*78b%U3}G?@iiM)t3j1t@xkSP54`HSRJTBzrEA06S^LPaxp=4gpNEY&v z74~F>IYp>AUdTyM*fk1s0?GMH$xH|cAw|ay?e;pLGzTj9XofMSyU7SK zWmDhll2jjIjI-YzwCs;Ao7;HPjeDynQx-K{5u?C#i>cp!8?!aT#LK(MZNwF_`NSZ; zodJX258|&fOrq=rDFG$>sX@GIFf%Ovi~bDC?i>Uv#cv>97g0ADMb2Re=-POyBhcL-O`^b1e zUJi%a2k{N#7Nzrwaz-6+)c?f4Thl&MIn;FhgmhkC&V*#um!)^8y-$zw-C2|>#cLdO zqwaibQ;YvK|Ks8lr&=4-arx;EfQML zw88(xrPkwKsXh&wE?qi#Y9NR={Vjh!)6B#KSp3V|Rutdtv%ldVce9Uw&djKCil0fZ zET|aBM?>p1Y2B&TrWe6VgSuc-j3NmLUTPm)1aM2w|EslnVu>w^)?symoBQP z9@gT8sqEpn$?1HSg+TxrfpQ!jm*Sz^B0cYQ9RA2VB_7IgVmz*{3F#eiq*F$Wm5v%U z@~M%pcsgYmd3wjisgj1cxP%9t;!u-Y>hsfQNlR(-Lj!8n7U!kclvNhsEI5`V<<%S3 zmGkE;jK56fUr-0hpo?SD`P&voWvYJ^BH*b|jtUD#mZf@jI8B2*RnC&2`=Zk&7#;8& zX3>WYhhyL_w}EiR2x2W)VREnGj`4$xpZaK%1sY? z$^4C+$a+R=TU|oaZ}PN%tJ2Q3s-hgKxUh6AbfEvm!ORwK1T6^~DH>=rt4?3eYC96TTN7|+5*Cqh zFZYs`b{tW)9f>S{sW(@2@rdHf)5j$Tyd12k-pEfTi@(c$CMnP*X|l8_OicPbMW(M^>*3-4@yl9_Xl>gTd!QyUgj7H8}_7&m;Mt$($d{nm*>2#WHch+hu5SoowZwyk@8I zdt;e&&0C~k9SYDC%#-FS@_SYP?<;PSY%^E!vN$F~95*_R&x&KFNSDhlESEW7lQk{p z?Qu+jY_@FX>)`ZRS<`I34;iD2q@^Y8zJxmo^@5bi3qT}n@U^~BT3ISMEruuKr2#cU zrn5v!4pDo~PtTC@t2E4$#<)B8urklP+9FBt-tApO6!)bgax)SvwYf#5-iA`LTSCu4 zR{pcI)M{Un-QS0NTs)JK87y=9%bNTLc2Ftlpa7ZEN7m#sF#iRT?C9k@2!ze+0>hVxSftY^ykvIJ&*-Wq9TR^k%2LYi2KV{j6+hC(0o_m1~&NrI%mOAwp+L7L3}7I=`pt6b zg>tF$6={=6DujC$KPTcZB{C7FCDP2S#2EG!X<`OgF@EaC_ZKfL{=fY9s#C{(>UR?1 zNV?e&Yx^v;b|Em#*`%XVrDJ6cS(c+A_=3QZ+_5D0&tXyc1!aFcM%5AjQSvbPB@Bxk zhQ;$z5g4ucitcAHET)vBkc@=pOe{C2;Q*fUxoC1i&G{@Cn(v9e`edsXy$_vG_|`Yu9ab)a5R?yLV5=@A9l zy19Uf)3SB3L-e|#HHHA)+sLQ|Yz64}vBQ|brfo)Z+SngF*K+uCD`JfU#1&?l`XE zTUolVaqR>wxSFMlpPH>p1w0IR1mFYuB7hfQ4Cvom>vr!#{>iDPY+VR4ROrErWA(aa zXT9~C0g>N%>vv6uw4kiN_jGMYe+l>k@D<=9pc`-tAOr53fX#r7fCUG9_1QDBbuCCg zxPK^q4+i`Lc>%a~ziQC6vPifAPXT75yM83;XYcCv?DEy`5E*psGx%E%W3g#?8u``w zKZzydcPQX0x_Jh!vjI(jZb0nJY+VUp3*aY!cGh2w==msGuiqQ3p9kcQNzZ(Hx0b-u} zt3f(COQ&j!)@K58kDynMM(g(?z1bP9eKrja>osK!*FQK7d9C_y7{lRVJVdUW_OnEW;b6lk}*i@KxG|Z&vSh9 zNG4CUB#F}J{DacBB9Gv?-MVbI`xlJrs#Z)TI$kk~Nt53|X@5&peC{YFM{)u=ozL;M zQOpdf?_87u6m$9CM={ZK=v zL$&E^VlioCADGKa$1q8ldnk9$3#7L4(MUf6$U5-?Zy3Yan1uP5#Q>Ob$|>rOiK6=4 zx%2s-$1nv^rO2Nql(m|c;95z$-Q~FQfJ^-Ju}rcTg^dFL##kmd$@fK!v@7+xOk6#k zlcl?H%2z-AdX`RK=c`{0*xPwe*U-iPK9-3#?OKqn+XpxS=mgvW&>#Y#le&pnDs61h@T7taJbrwWo*jr|Onb)H=XK zaqFx6Rvk0N6kCPLR%YuS2VBNYzDschP_LouL9hX^ca=f63)ek>??)SSp(vxMH2s{C zk`gHd>uuz}0hs)6z3vUHj>?bv>JNYEt8YhMxj#k4F2}@n+wFGZH)+(Fy}o+tQLLhF z2O9K`{}!m<^_8!_^Q5mn7l@^RT=Wzffd0D%EJ4}ratI_~GXIgDNuEXMdYRDyH?wp> zxE{m&^a!qMz+Ql2=zU!huDO7TfI;yTRfsE=dP$|YS^;H%Wq=K_<7_J{D=WYF(6N3K zeqZKCW-$@Pp5zZ^F+)sGUkdfpt5E(s^4MxjzQzz|II&zQK58w_E)v4F* z$Mp@s7C_EV0s1qxP<`jx0R6UaeD(9NqCU1RK(8O^ug_g{U-!k$tU_I-;=WG57=Vl% zz!*S4ZkDbMFdgtY*6ShIS9rO6^}F%=4d7o!-f&LRR#!?Qw=2|6MH#n+?Ds-kB*_u(r-q1Q9=^RZSsm}U5(vNCp(8lLP z7f*^hoQnKMh^?9=23q**qQUL>kneb1gXg#Ba>yK#WIIR`dS5IUL5o4JQ{fPyE9QdqFf*II{I0ApPKS z(MX>HmaA<5mbL8xmT@w$dIhY92(5zyup|c`V7bP50j0zsZ-__;j)%Qgr-`o1u^4dD zy3S7>M~?^!CgzsqL^DTJK6|*P@ z{vXj7Ek2FAGbP23f3D0^LqZC;;hNZh z0&axHG|abv%Op-$C{Y2bsUzO!8|#}LA^3ck*Ldh7(xcCi9wp?^(xD({{EhmP+(QDn zG=W^YhEUTIhb>pBB0_B!p|-u*-jmlzEbI0WYL63Y26otwaPabP6IAjBHnWHwp`T(Y zV}~!;2;0DiE$mPOm)OCj7I6s%E~Si%FW{0L9FBb@!8XwKHC4cBEo}P4c8iToYrSG= zW*;ix*bWZIwp0aNtc@Ge#>L?5_(e{=BO>_pCffLi7@py*M_@+S%&B1!xi~Bs#sbFQ zOk!9Px}2~iv~e+I+>i<;gcun9E{55L-7@_W~}? zz_IWi1HsSBC6m( z!fka2_ufTr+byo%VB)qHai3V&7#kbwVB?zEtriXeC-ytIh7z2&Uq;EEf;W+iY-8tm z%PscZ8#%Bi+!PShK-9d%`yGdLC+=pow&U^&Oir}N}ctCFeJk%k00340NT@PG| zIyi@gefLKg(##h-SUbGa=T1T-dYI&>**ZApf<2*Y5@h0osY7Y&6R;?F|3~;K7!SV$ z4t6)(?-g;IFLIx${fPZwo}qxX7qRbUa%Q~uJA}S3Aa<;_4zWZ1WZH+(|ZI;1sVCSCN@{4T4&y8ws zvw`)VQg)3B5G^i*bWy?z%zBtao~){^ zyi0784!TR=@&(2wZN1es*GwoWJ1eT10H@xq$sTWMyI+0zvXE1g}!yL$blGd6u@WcgM$ItQ5=2()iZumH&>1SDw|d6;wFB6A|Q1 zmP947_^NP6tcZvBBv9oQt<}C4khWR`PI3B@U`R~vWP$;sB7$-GdxE`mAcl33$vt{S ze8V%O{LVR)8_NckyXL#|Q4ED0D)^3&nme#qGROTiirMnTt<{6SjfcTmkIRe=$AFbN4LVX<`cHCi zCMh*lRSBeB!@$ZM4=WYNV6+CGLPUyQFN=QytVmMb&u7eekCr66%h<;k6lIf<`w+_SP%7$u8!aN3@J9<-HmeNzJcYg=DvKC>xBw-5mFxvES9|A_cV%Gd@8RFZH$LO z>h?au-C9e+Q$$GL>wDfB55q!x-(tkz8b-+~2uDkIEXJA*vA)0&o+;s|W|Ic|TX}G_ z7@@rSIjTq6YV%ZBQwxTSYrzo7R0#~-bs&vMU(J6F2m+e*O>nh%=if-H57rSJvp{5% zP%2pto)&v}`gSWyU9SqICQq?-5qMg>Q%!ifvw1NY2Lzs0SrW#9C)fPGB9~}$OG6zHclYM01f4KKg>+;H*5inKWVnb}xgaRhP)YW5d{DUm; zxJWr&m#5OeEL=mue%CdouhS5imn~~+2+_!wRHV?xHWAF1&*tZb0Lf?)5i`|8qO+%R zqdMC9^o)G&Ecow0TLi43gx0zNSgys=2WVCmZ=TGAoBq{f;KJp! z2JWCHi^#_0YAkbP^A?TQ6F`v^ z{)LhU6v;FFD7^wo3Q&ww|3Zleig5~1awARp^THM+7!8m_i4r1I=Peyv7^Z*8PV^L# zz_lLfC7w-4MPKypfKwC|CHq_>UkLVGnWD~=z$8ysSu;gRF$qEOTME^m_npAgpeKMM zNt&p$&9jxlgMSE5D6|B*U64Jq|8Zp7Wn; zl{b2@Rxz4-v{Ac^C?Ak5%(_Xlv&{Yj86x*CE+G)Y~$af zT@!k>_IAu9qaH~h&h}lqD40NaybS-RvwcJjT>u2*j=vDJ_C4T0t{kNs=!{s+&Ltzw zW~x(5oJ^>liXwXrTusa^k_RPaEMf9X7N{+)UBlDekW#6 zE?_tR*QNL9JACgHW-$A@-#1TCS?PC{{gIx2=c-F@C~uvoiXTRwctN$)v~*EZ3O{Tr zzC&-}7ffZ+O&{GOUK;k^v+uoUet~rOMfi6giU=<}{Q1RTQ{cFWR(*U8tB752ED6{0 z#3RH0xlc874lTEKzOrA2CiU{&o3>LKnfQY>5oDf7cysb%XTVhrrT z$ATZXuuTrO`6Bxvarao+%zk{R@fLgN-gOIt9C6JTxewJ`9d466(UU62uvY=C%R53N z!h}Z1@q&*x$$??*f-(L@)*dnR7TfX%_+E7%?+9GzBVa%g+e!i+eM&0$ztO211Ne-SQx;JK^;3Z*Gc=Wi>ryl+SMu8Ba@2^ria4*DF-Dy6B5ZkBcy{pKfd-92t+&hUDKI)qL28n8BD&&!57b9 z9uuwGzk3GrD=qq(x6fk6m_%ae-yC=!Wa_gbxSlhAa+|cUEulps&kpwX5qtXvX9bG0 zf>2Za`3^+!Xz__V-vOsX1#Irb2Rb)37kdN`tgIy;)yDIuWWj<4a;PSk%4YQN7tyh&G{L^HxKer{Mdjt_~P-rpOw@wwqm2VQ^ z27NJA+{{HHSMocp0ZVxl>5pG&f{`RUU}_KgCYh3q7LzbldU5A>foE|aL5vblO~wjL zeD-WYR5NYCp$Gq<$DG3r9Id}k~>o!4@Bnyb77tl!bf{)M({^HI9frr3NNl@C< zgaAm4OC=^fGDIjyN(hows!YNi*84Pi$S4vwf7x^BU_yi@=yV$wfh_AznsiqKO-LPT zkAP4}exzjw&}Y_PX|&rY7MgSAax`g(7!5fSbvhdET4?lHXA0>v;}wD^xl4C`8F=*D zGf_Zv-Ju1^iK6*C93wYLejq5W>jO}%*B_ur;;H8Lo>sNc|6dVA>!ksR#!DW=EsL7l z?|ZO}UkWuMJndgKp6$n)*xY^(KB>sFbPBXi(w(wD(Tpegw~BC9NU~pOkc+PR#~C>q zY&=3++Iyt$$%nA+*-_W0~&t6MIP@woE|7<1dL!8=)2? z$w~v?_@+>B@IZu2y+>fkRYGnsE)aUFsy$Q_c^WeZX+V&Gy7EjYDIY|i#v=DoO4bZP zay?19(6~hC!hf_!qHj%-Sv0f}p%uUyO?LIIpzcds^N5&A<_pqDFtOn*pbs6Yi~u6G z|IKZ^1Q8;q7arfU14vqPA5ermL6PO5C>c&DTBi@7Xnce|WFjOtFKTYP@1bW+A@n2@ z2hej3^U&KovAOM@2TKwo$bxYImNB^>D@j-cUY31a?rC7C(7@4j(#m#UFl=OLED@6g zmd|!@(?jJ3wV*wOJ5-GREt0z3IJ@?s_;qzszKWj0_4Q_61NLkG<# z`M($ANc+)Sm{X=~DiP{vM;&m3=V=M4{+SM@q!=q>Oo90R(EwHD-#VDbW@AwdV(@vn zv(%@4me2sU%=sXoIslXkZ^zE3m+(Bd2jt*$MEwxSL5)MiU!Y6Udl zrsX2&FRg+m2M^r1R8W>QLYY$&PJS;Eey_G9q!OiMnF#tzsK{*4U*3J%QrBL!x?cs; zTN74&b_P)`>~bWf5>?I|ktSmSQRO^0y&tFNKv?yrX#$QdDV2xc!@r44n(W7kE+=s+ zL8`PJxnCJtJ$(xKvDucGN_06-i8PZFh%V>ylZ27YmLvCUi5b08bPr!?g^r587-)y z-l+)#hA~r=ydi$)Yec2-+<25qh7BlnrHMwPbQURHnNRLb8Bl6W6y>8-M@n~&BlpG) zD0Q)-r%}oheMh_Lv3R@=Q9>`Tu_R<$n4fGD0=?VZND8Sf6YWvne)GK~MZT%QV2^b-_dQ>gm$cr9Yqp`VK#O&Nfad8 z*fAtgq_(kRNumsHe;y$T=y7Tttgddcg%9$^2T|npYwm5$b?p%JLxLXh9a#h9GbtSc zfIK3i@eomCD^+5GGr=^-b6@rJhX~8>INJMa!b+sj)l>b_9M40O@ew?-Kal)`DFpLl zTYGOqMD>+q@&mF;C`xuwnv7S7(7&35`cZP|@TT`|?L7_Q)d-u_k4Wg*DUaaKs=gB6 zPwhUag$Y0Uskv$>NWKk{zcWs_*U^5DNdD1Sw5)DdIk*5R<64SH{u&CBFZl;0v!xwu zt$s%xkLkUVSIuQYOe?5}_wXX%y{+5XS}j!(_2zO9cMajtk{Dm3lHZGOe2tVQMWa-* zct9x}XO2ecEK-^mN$!1dK&f#am5)*#DV-Zm?kycq>Y7bG{hlelk*%x6dlE|ClR`ms zwtx>vuVfbWJYEIjqYFw0%*3*qG!Xh(Sph;*2q6q%jqig|qD`6vK2Ttd7x>r|jI`@< zp|*Yu<2W!<(P$!#X$&MZ9!0SUx+f0>YZh3kXe=b`$T9m&?5iQPv+v@z1{G6#g2`LTdk(TNN z%JpH7IproMi{J;vi#L)$^HDdj+{V?K&X>+(qD8y;3S6S=d)nH2HS%{x?5gS99JpzV z1N)L)Yix-T5E;o<{Zoak--3NEHqJ?8s2KzNPJIHZ?a<8M6KvmM{G+THTOl96tC zuywB+Z?AQCpYaE5UcsSjj@w$}_Poo+^L;J8)@OPt%-7bB-JQwU2b>8?l}UE?rpk}| zyQcJZ2)kW)A4I$Wj%;47-N+*fIpY=NA+CKMWt%-f*tI(X^WXYCe-bWcdx}@*7RdZwNLOP`(Gv)M%f>D8`oGNSwpI#>c+M zJZvgn@Vo1zds&|qP5@pY`SWfhE+)(#bF(GncX9vkb~jr@e&df&4o73tNi$*NB4;~hch%Y^OY3)Wz>@C5*{1z8$;D)G)7)q0Y66;I$a20TtGK}4?aQwa;z@J`GICIrS~DX@cTw-^ClKqc0xtBtL^#k8qveus zaVEK%(-d$?ZCn^U=8>1;O-k-fe7Ln18d%^c4P0~qmr!~VU!AOQ(CejULzBkbVwHOL z`R-2|mGd-EA-WGE6dUY8SD$`e%-@@&idF3d8!h{*qKBaVbbg}A~WAYuzZVhev%f%AvT zI0)lVcyWhgc5ucodx_afXZ^B2@?~bD$iL&d=S|FludVC6bQ!Z?$fwuglc)HzWZ0Ii z13Mg5qi$Up*r2VdxCV((X=sin?ZpTV7o>8rHmeYb@(uEU_?S;&`P`I32q3JYJ&{l- zp2S~Y&RjB_Nj{^lo-I1PEf_tNV9PVe=}fPY<#7Of%(;JHxhxQ#JkvyndgFWjx<%Wm^`fPhnFM2rMK7D8Jbq13(^Ka+;! z_Eo*v;M-W);Jag=wsU)6er03j0blvGLzVLI1HO9>w6;Z1N5VCgfOpQp^)$P36 zZSU$fcXjXIwVKh2e7AOk9dlhb|Kl2Fd5)>uF_iAQmPEwt%AzpteZb)W7LYd-Bl~$R~>|aYcK8Q12!;> z&$HdTCFa@PeDVhPHF+u-E@HeP+U8_J{p8f{-Slxp0xA~4_7Heab@R_}fH#CElKHnb zFhi9DsYUA4ciZ*d=10jdc1$;aas%^ak-YoyZl}E4F7Gz~`ZEgfhU_y0o|J)uADyyp zyQJHEjpU!O1hT%}Rq7hLG6S&YU?jb7tnu+!?S?9R0)ISX~H_ z{16`JQ&D`?LH!_%4D+|&gX>y;8Rlc&hpSnJhWRJn2h-3x%zyGeT;WkS%y+!c&ZR4d z`Jmlw5Pf`@pS7F4BLMTXeLCDJKlX!Ks2H{sOURjF{;A#2kPZ#6iUsG5gzQ43t8}Ma z_1TVto3K(h2gf*OE=59B+agx9F=rc=6J9(=ah36n4wRU&EH+6|J&* zDRZACETLr5w9O;=Copj@B5629P0R_6)tB(@ELzukkS9k|I^p7&xR^Q0IF0T3;j2D# zBsYA8=Z8_sZ6Zc^LVvz@rAH0CN~HClW>_<9;S?nY_}6(hcv8tut>qyJ;Id1m6qW3r z6S(so1M~KVtYQ8H&qjx44mWL7+LjDImyPC-tVMpz+h9cD?yHPp+k?X-XPEacVna>$ z4sW`?O+28s6p`4GaU=`_w%Mb~zk9fR9C-jiM2&wtJ+FInwv`)R1t1BxPNf`q?@h$rI6>X8`-p00AbW?oFIjK~n&y4JJg zN$*rSqe}X28$4*Y_1)aW7woU|WqVj=F*1aM8QK-zw)4Od+WZYUG8-AGzDqNRh_{;1g|NKSC~nJ;X5|bn5B|<%G@6yODm}9f;?ShkQ?ifX zVy8ujE4(_y@A-fY_1lE81i2+NAtwNDQX(6M_@)n7mVSPSAN+uwLO(ggkJ|^oYlir+ zeQ@Mb%zM^Y-j58Cg$MxynYsNYw*8yCvazj^B?vB3c5MTv9BggvEhvm00;kT-0!wbb zaTiDJEUVfYzndsTei}DF9cWFscZkFxkhxEoHw3*{Tcyh%5O3qSD(m#*Pw!*rn5qWd zd4hqQ3@RXzNPriXxTh6Zj>!l@0N_+g;dM`%L?8%S&0ZnV5-m$~A^J?PpaJltWpc=BC?MVs6SI z{=j}VB=o2b#P%ElJ|&;%h%n0K*5EBqk&A1P3=Q%>?1zuTN{)vulpC%MvbCPXhIm({ zU^{;qtduhG~?jE|pL5AV(ZXbXaX?~!2>QDE4%@L!DA zVMWYF@IQR}O*(G*VDb+xCK%{nz{HABiv2-~)0GVvT_^uqPHqh#vpIuVSy?FKEt#+k znT3uqlZirVU)6E<56arW)|s9QRj>~umx^LKCpTZ~6YEuY z09pAWtIa>l&H(WWk0>_ZBm2(5yf7-$3oJNdV_zGD(If$}Wr(dYOOq=Bomz3$6LQI0 zrGf0ARpx98tM?vP5vD1Z=4=k*_nVF7>EG*YuATWglib4T&jIO42Gw0 z4Xlmh(tqXp2lmC1gNP{3fxHJR@u3hLYl{&m$OaK!Nki^u5WxLDken-)E>yWMjPMAv zwLrF@gIfdqb_*MmGlIbKaXIR+awysf3Hbv73*`kFMR32*ps}^ggZx({JUIY8Qmi@; zp>qK8C_ylmaI`}{s^e-0$nyy8gz?e#$pGYYVSs!vz;hq7ekQRF7K%DsC35`uUmWeo z@vZ+C$0a(hVjy|I1xkVY+`zp=8W01_YfvLuBJ$WZ03Tb4Qb~ock;mpS9#VIM%FuDe z1Ieu}DuJTd6Lln2BzxVh1>1n^DKJslu!5?T+JANI8@T^f;rM`g-vH4fp8a#j2Lt!N zDO3#b*FI*$)iwme?C6;ID@!UKB%fdq9{N6@CglVC>;o`gMTqSQF$c6by9dYu5#O`_ zh$~qSQzzfaBv3?pNJJ{9H~%cWJwOr>23|P0rSHvw&IvG{j3e(NELwhKnD~eksRRFX z^DS83SOnM8%rqFh`|s9qn+8_M`mxe&n+NLQ?iFov7~FB>N%BS+wUa+DqkOae#prot z#Qlp=PP~r0Z$Q=zd@2sy?|5dQcvyYx^W5|jwXk-e-x$WvEMYmte4X`YG6Bgf8UYRvu%Wy3O-Ily?xr?85kd3Bi==hw2>~urm z013u??CpqRIW?odNFu`zY;C>+P#WToiC4DQd)OupfE*c@`R@<1+&I|)XiPT1Up>g` z*514f7k0kv1&2lDk_geQV7mbz?M5%SR1gFyqBq}QH+fjS$@?f?0d0*VyGBESWant; z5%Sh(D3!c98iI#GF*FxeD^{AQFZ1LO8|@dROOWp#hCWo|abl50<3U<3^THuEj;^`P z|8f4BQB8mab$oRfo2u*dt3$U=gQLrZVN$eoWQgMIr-u;pJHX73Ye@b z^*b1J78pxUEV3pc%DYftD{G_!b-Y(88x^F{bxP~yICsvG=@>ujb1^H#dEF!(|3E1_ z&3~LId7d?pcwoqyN9fD^TcvE^vYY)7FW6;?kdQwyXx&Brz+WuDZ|;C6`56NsdZo*9 zDysji%UVHx6p?=>SHxc@85Vzg$eQ;5DyzDJmNQR5cDVJ3sOZ$1l z5jKGRre8Z-vPcuykwY{h?(u$`t)GAF2z=ox#>@I`B_i!QpiMpmLRmDE*k$L*TuffH z0(VC8v(YGlo2H_;4Xn-Gm;x?r`4t`Uz_9JTez>+17yp)ioV`p#AT*U~7q;$-Vl@!y z5muVSp1c|LCL?a8ghh#u!_8%&Su z=U@7S-T&A`l*Y0mFi8`b`JD_UUx!=_G;o3D^;aJ_2$V7A1J{{;;bz|)v3V6D23a{O z<}ZLE$oli))aQvU?6e=teZDjzpEG^@vq#~K`%itcE|(=l!VXKxPe@}~;h(7!4dp^H ztDZhvXCG#AWVD4{=@U9ev)X_d;D>m^CA;XdK7V8xx#(swDYHzJWvghh4AfkQ^Fj+6^);bUP*0}kqI>Zl^#X2y2-Dmrv zk54_uPN)CZ$8S2u22VbNXr&%kmLbOp7=fDl5LHmo#~(Y!PF8;9#$eapOl`LN8;kq+ z&SNkf_X4V|piiuu{eAhr!1kbRUmtjYq1$PncEO@#*p}Z{k4^wBo}w*&=v^=)laN{F zZ!$6{(!cDcf2S|M7w9WOD7MZU3Ep%S$E(3zaZ$v2){V8bPu70BLK6U^V96sUSMf46 z`^q1-+|fMySGw%&wzYlra66lJB|Jq}JYx&=##_jN{pCj7BIBmM1ycOuhkrthFZV5o z#Xs}#&tm+u(zvm2!Snd%UHr2pE-7*)?l#xe{{tDxNl~OUFSkr9`*v5bVTlL> zy(RQ9LD1J?%u?aWKGK5FXjpYp6qG4vsaPiPdWj5TM0)T6JlaQUd-+urus|0Rw2%Ni zaEkLlANd+#hSa{~%UH2V^mi2+|5KU(r$&?comBgBCX^YUv_f4!9##tI8qQf4 zS>5g;MC7I%%VusLDHVCm=u5^42&H`~a+UmkvJrvCaeZJVQWE>r;0_0wV*1F3BDr^; zMdL^Q6bZxnGM8N^Ph%J=-9ymz!M&kDe;ym-zScb3bRJCtG{jD-y=5UV@KXi7!NHr@QQH3nYT2mw)4PcDf!(p(!lw1%DPT zyxR*Zx{ffoMXzU$gnfQ|IrekyCsZ6A9BbRr%lCZ_Rllisdu(cjRSMfD)FS*II z7i{>HhkJFQ5p*$4!K9$y=7L2oJ3_@szuU3ckkQMJKh6eCFL`qu^J#&6 zcF`qnUT^a6F8JbD9Tqc%tQyVm_a5|v!m3d)_L8@I_{`%hH@+l)98(b|5BEFD8G8BG zkFzsqc`twRI2$_CO~y4M8C^-=kP1P)Ze}D7)2`Bj3hJ(s#t|8<0-tPpPF74kq zj$d_xjn*q8Bi=3WWoYZX$T%$FPly)2Hx!np<6IH3nLl^ScEe0Cr@;l&f&LBS_-{|J zOCoX}S1gq0aT<1w2Y7IrkOp20gC&K8G+?AsVi6u8_8va*OID@$wnux>Yt^Uy7ETl8 zN0=Ud^_OgtNs5T;kXiQf{5ZQI&1Z;wP%V0b68S z*F(IJAamredQZpN9{&1Cb`t$$56^rB_qQ(VDK%Pz&`4#HI7us+Ij(IbJATL_sA~#s z5A~GH7-uacZ+G*Le+75eCHF8M^>nAyBKR-JSbzg}iD6tsM#`>8vIt9NxC=@K6M@-K zG8m(a-@l&NBg}-JiH%?*Vt@~aCZA*IsvOGa0UH_R9{soJR3j7g>SyF-Oo^7?gvpl3 zFWk*9#LdrCTy#CEN8m;ou0#}T1`&T{LoQob4++PT#&F`k(>_dxRbZ#|ln_|y@w6r9 z1`V$Rz|xs{6C3a2?#!-iCm|RjliisGLT1~PQ75hk^ayN^Xog5CB23|*`x@41d%Ah^ z*KDS5IKrSdwD=37Z%8-qUCG{K@)P48Bo}{6SxdDCl)ir^e8!Xfs|%)*4Cd{NiI2;# zoFr{s5aJx&qT=ei#U`3}y`fvE>vlKMTZmwRd3m3!Qo8wO4oAg#W`=l>T9NQnx2>uh zTD4_#I`mCww@^7s`4eJTJ&F4_fLz5m4BJ0+@jq0uQ{*Cp@@`vMH}CsDHYGX7TM;c! z-Eidq*^fz`a_;?ZsLfrXP@3X{*Wc|Hc8>Bsg&4Sw!Tsw`)i9mc4!Nuw$p5Msm>@p8%*o#F$V_>gH3Qb2$ zI8v)mtE%`;0-5@|As}{7S4HuEh3+nMdl&fzg+u=ZDaH^^(?AR?<~@kN5cY^j0yGr? z_I=KD@s|WRkx|*jhn-?0=})`(j8p7n`d}CT>?xLuqL3oS3}*e%r?jlal~kL+w381J z3KQ8~#dYk+FZJN}r%1*n{_9h0km{YTJ>M1?tR!zS-c__~<#_npe?h}vJq5e!@t621 z-@-k5FLd!szGdgoSzY|jZ`m2a8C~$$yJU`X4!6MIzT^m~@-Mp#_k(=jvic`V&S;nj z%VH&f;eYZMq9v)r-nl849%@{*l0t6Y1R*DZOcbg7cjtr-VJ$oqPWq$Vo5eZu^g$)3cYzYZv)Fr=e%XM(|&sX4Us0vTZ4- zTC`=$E|E0|+5GdAYiN2(FalF7`F*W0$C2h3Z!z@cpdMln$?g-$pm7NcFOg*z`S2Px zgw{py_t&u7=vf!}b2VTACtqYddxQulJlP|)jla0m#@xHqjO`^1d6d&9Y}&90av2)xlI@P07YGbhF_(02n4zmCaG?8}lq@JBT z{cQMTrgGdmIlMJZb|dL2VFqjj>xd7^unH#4A#m79jW+-&$Xgw}y`H^u3gX!YI^8~3 z=o*}_aJf^|EV3!MT^j4J93w&~lN@+hQ?s2>aZl?_PvnZ>KVVJwf%b3)aB#>?yBuhR)tzWYfSNpv zNN_E_RW_NafL5?fq~6Zv{OOr0k15_b+n-<5#4a->ittyY#2W(%@>H4jXW&}0Z`>_x zVl$BI-G6h9LL}`q&l51e>@N*Z-sQRyL`E(E(54fM%mjh9V>^ik5i5!}x~HWv#U3%) zzCA*!Q@CI7@347wK!H$7PE=d#GMWq_6D*W=7_)!RU8n%JLe!!{K66!Ye(W?)=*U`2 zIO#+R@C{fvKTt)Xo50IW5Fj3Bwz^33C=zJ8qz|?AjvMcGhp1_0g^2i}3*bR|nSGo3031zD%?^*uzWS7JGO$ zzs|`jX!`|sH@97|9k?*s&Hsly#X)OFIC%pj?rz@y>R30o0e|6C$G^I{^#Xs@36CHg zcFS|6oov7mIo=_f)Q^AwP3oQ3Z5@KG!);P`i}^^k8ZfDwZ*0SBo?f`_g8ChPYco6B^n5r>>h?yQgwlht zcF$$B&xKobJ}_x7`A@j}B#vkpOV&fo8bqE#SzzM5TKv_J9Pu}XtQ3EfNH+e$Bx^bT z{%xT1%ru*aiw5m8;ZW~ZIZV$oFPH$u{_Y(5E$Qen6)2ckPo;F8S;El8dGCT`vaxrZ za1>ZGDqPOWe}n^g|0;y{KZ(poEqO^!c*Ndya`pUq3?1$tX+7ELiS}Om7!Y0#nnb)V zbSa_jXM*0v+0K#F7JN!taezwt`1U4An@rGlSnd&g`rO$or zva-4|%_+L%wk-V6WWtN2{TG<&s63JG>IJ^Al?_O}JN$CcWb&qnaQ*^T#tl~Jy#Ncf zPZ5^>Rj&1m{y9JpKujV*{TM;p1^&lYRu$Kb(vZzqC3#Th2$~%p zu{B&kmzV>A>?;aQZ2-D!$@A{`L`G_S<^rE^4z{T3+xaKXv3EW`MP&Zzg{a3Y!Xgrc zu^9ZQw*bH8B}OEy5EkJ8d<4TuP}PDWrucwcgxsl5vu0n~G+bn*kWHBrG9 zVWT!d!Vf`KraefA3sxsFh`Hs8MG@Y)kT0WxHTl&ppR#H=^hk7K>dWrbeALS#gyhGI zXDVR6s|$Zk4mVTCO2S54wp;pVL<(@8=k=&c-`mD+p?$;o zHRst!Oy?mFTL2(qbA)_#7s!tY!)YM6u(Y4uUMR=?L-Gqk6XaLQ$d?%6LVyOmHnI!i zD$$a8eewli%7xL{3u54|N#sd$kXW~AC_uElRC*I9wZw`D#P>p{33>e1E}Bov6W5sw z0&~G_KI;($>dpP@k#qER{tqt80XRX4tV;dBefJ8o+AXqjwTsg9j&jPm{%5=JXM3J| zNBAV7Sfxb##YRtYBkeHLfQfDNpY7LwY484}-SJDi@JqYx*LJZ4+D~r7(cE9!`(@!^ zQvtO^63$(3=YMEtgP7Z4Xbg2=49(|x<4dh?YX5A#oV9Z3X$kdcZk6S}1ELSqPkR4UXH%Z!k%)+!2*PL6svcVI5?5T2 zgpn;M1bF{I*lY5Ly$9h6k1Ldw^j{8x7xz3@q~Ya0U{2w$wmWQ{{9sUo^|MY-CaOYE zlym^#a!@Go7IS-KG&kYlb`o=*ukK(I>DDmbtCNkOTf+F5PI&0DF^vCjC%ft?M_7Wq z$h^)wNgi>eB}pC_?hye^J9T@CC6s*8hN|!w zxDqpdO&;xWMNX_D*&pZK8iY1{M>}b1;}>3p9ZoT67?MyMKT87z-}a}JZgre;GX=-F zfFZ^!ch$UV*cIlyRuog(@574ss$=94tNl7-d{LeWQ(k`4T(T7cqneEE*m;4I-P`_|i+PI#q;= zxp|5yI`RyH@=IMXrIL`j7(pW83sF|*FkXB@d8!_E$K<#fH8XZ;gs|R1y1#9kO)P1lZP+&yh*W=gJkM95d2l4*_}Oa9A6mHgz9rvrPpCOq&;|Bpx?meis-`Wd>l zVNzq!P}n8EQ)`ZXwHpo?sQ>2K|2y*Ba2|Q){P2Hx<_sgxX>O(^Lw_@^7-edO6HI>0 zG`PDt(6bn4hf7k<#Kd}Btm+SlgjYs=i@ z4WC_bTKyw=`htqunGeTG7J9cAWL#?F|J%zxsr|k!W8%35#-$n1jASsa7TOAZ&TZrN z;NmX-8yBf;D;#%@AJ@me5xTFf_T}{}wq(7c$bHuHDd^Q!QnSIvx1A31TyfN8D{SlD z)y5y|1INIdZM?mYU25Vadi}5IRlhD$rY9!;%1q2tE}ByqqfA?xp~+^~tAE|4d}Ny= z(i{VyeJYp5C?C@=%`3>*(+%I~=0@ceId*E`qHR@=GBrtg{{o>aF$=yCoMT%+mR{Fn z2jp=?Ofdyf%|x|D)%8yWc`&VS8@U7V6X_;A(dd2w9)>s1AL8jd|#QDoR#py9%|=gGV& z-K)FCQPif8U0mQ^UiWga<~fLN3|YS^@0GICny%p3+OKK>**83d30@Uf7{8<-WBdI4 zArqXN$^Qetf8J5h6|K}oXf%|r3_`m&gKiGvoyX~Q5sye?G}O*W_0D;V;j=!yItv~} zpvuf7ysh}&D#nkIC9d4UOxm8tNE7F5(I+d4-|a1rC z3nWh|nMssyA~nbC6Pqfb=)^>|O}*SRah`&Lrv&u2Ww9wAOZLKzu+w#L&vwjC&EiM0 z+h@XOYFuotW?qp&Gf$i}Z~?kKdkk^5+2wFEkt;Pje*PoIVAGNX*-MQD#-eWC`T%~< zJ1I9LFV(D`UzI+8ae-MKSCy-&TEG<*?u})SOJI-M5mf^Tzwta^l`Es47xuhC>rTS_3YdK0>qW*H@kro>;< z(|=9MW}y|XU;k^8@}Z>}N!gPYDKk?u;44pyas{-b71^pe-7B#9Ez&5{;bf;;{cE1` zv6$?@rOM)m@}9aLqkM7&r_Y0{D!nY(iuJ`=G1+Yc z)LB{jRg3dDUtRL{`Ai%2)VQE<4yVbUT)1CNT=4uy3fCyt zE?FD9fLmHP2Q5SL=Wu{3qxikNHQd@gd0fEWBCDkAjWvd>g1p)S3m3J0`x^L$ZStY8 z@xih1$@%<(>)V&)!-qi@Zz^~d^-73^Qc;VHBDK7Dnri~sCbb}zhLy!PdFQZTiH8?rVjazFB9 zWM;{^fk|j)&40BDH(UAjzrmjO@2&iszp+my!3x*CYe{-q#c>Y~xIcInLbi_9zvtWS ztz;v@aL|I$4L`EM1uxK&v#osLZ8nsC^8^0)ZMeJk+tza0@og*l9=Qpw7RT)t@-2pO zPkt8FsvXZAZG|dQ&sVbt7{(*xi`INSm3_PwDkLk*cI+jEdZU_6@eypu$ks|e6&YP= zaa?I3woyj1P^z_r;tnH`T5pSAviaw%75el{xN!Fg7t7vhLA+>rvWmK}YV!?BmYADW z7%oc}ijZefE7>dZY;JKhw~(S%-r{1@7QWb8Db?pG^zW+AcnDisw?^GlT%-PapFmnq zZwV5Pw>WZJp@s=T(qnlF&C%LpAE-4?Qko-l?&}6!0k^4Dy+={wv3&=(vGx5qs_@9A zt&Ci~MX}2JCGMG4b%8oLn4-*Ctza9Ai*5Q^g}Ot{UiIWwwZ6Yi6;3a1eZN9=w`oS} zm@2y zI}yxfganvkmE#(V$U%4N0!3kHt1Y8tYiW34MhkyfqI$~o!&wB&Tep7skoea}DghEX z(B^NX_@Z&Giz4#(0c7_gNud<5CNgsEa%m|t&)*Ahs+IOM+&-HgGAgNoYf1MTfm;e* zqT*zQ6jgZR?A9+g75;H{>zoL~A7|60h_|}}9@7hAd<{P=I4h%pi9~J~JiGa4psb#N zObu86=BP7VIt%dDMHF}OEND(a$qoHyDfM2+lJczuan+J#hVy6n4q7!y-f@Dv?@5WdW=to&fqwkuG9gQq2X+L?1-LAa|aYLX@>f!G^GRM5IJPz!)jr%D|eXn|VU8Zy2}vUBT;c{KxAWGMx$hpTUqX@Mqp>l^U}mg3u6 z%lx@YBm^}XK5mJSgi9C8z;Ayr(BIJ3va>*<-(ynbZc}d)>tGT^JyUkbdUv4{Y*EYX z(g5z0QCcAM3g+rs@;!h#_u0Roo?H#a6bjvFLm5XIPPOFKOcI$Zb{4@w5)`Zo`@Fk( zjCE%0%CEKfiG7)23U{~IzH@FZ)fRs1CT&p}g?=j%WwXi{(`81&GcU=ZkP4ORGd%hpIG&UD=fdCEl|FLK>^xAX_O{XZd~Ndm?YX$Z{R`+sVy+h!D`Nt(n3-YwY8nf zd0VO}))-Tr87WS_!CN(T!K@am{7Yq+d}%%GC?jWR9%L4xXD;&)W;@H_eRRi6Cy7PS zmF*=3QX$5vDdrq{XH%tGvz96sKk$ue;b+NJb4~s&1zxMX;1vltI0F2Dn6M%E9F8uBRdNDn+vGeFwCSP*+F_^`C$7+*zjGLNHiHvB8&A(bmGm!> z7{6%de}Y^Czrc)c1{se#+;=NveC~j(jyCg?8Pz2ENHag1QO!)<-CW=WJtNF30h&z7 z94Umq4l;bu3~fssP$!mTi;aL=hbArGlQO)IY2s)k?_UmSP*vPp4*oMn#nGFa`E!iw zj=0wxV4?MrX)jUgoMlqmCP!W|m$#OJ16`8Q2-l!LOd6 znl>c>(?sJ9*M-qA6y+pJ-NoYmaPmhdsN$wl4iu*xy>CP+7E(SUy91cy#7nt9n|Rqo zRjBVdCs?YNsQKLYP8^xJADZ~N6IIcst|nA40J@t1AyGXd)@wN}I;pg;Xu&oxlNdRv zcfx%r1-YeLigRCp+PYFhQNh%<<}0aOV-re`^Mpy-=~7!=Q&iwTN^fXFr3Z~9a=;iw zf@v#GS6_A}sU6Ing?hTDkniNLO;m+2ub}0qUIgL{H1SgvszlQ#PTMC=yw3R^ z%6!;qJL1Iaoaa*JkDa!|&Q)-^;2g?a?6e(nR?mXr;zOtHBgD>+rOY2VZTk@$=C$U+ zCR++(=SNfKx0`HlH6>4@P8a!^cR6jloUK#j=69U7cb&2@kPvU_c-=7f%+|;$txG8W zqCz#^^j{Q9dxXw;g_e0x<~*lui&Hdi=1onumz%SMrkmDQ=o`q5Rk)eWj;N zNeOvQN1l^xL27))-28&m_M#KV5x92RvDryBV~X&s)3M%3Hi<=t3(Cw-J8jQ6lO=G8 ziPQG96JA9(`M7mQD5IZqom4*`S4-qS&Xg02i5mU}-~m|UBqyx+VLqSvf?sBiF1d^n z(ww4gUEm}E$oyasBTR6XGmZ()%JKR8DPg`leV&ud!}Qke9?2ho2C|nrQ)ag@Z03D|&)1cenIbS5 zUx-guP*jG&nKCoZZG41A2ihqo=4JG0s`tn^hZd(1;|GKMU{wWMOQ;8O20_UWQ}C1* zDoljcAxxO+7U~WsIW5MgI2}`*#0Rr<(-V^*CQNcVCOOG*438#!CBg%ojsPcd{R{rN z2v<5CN+&stVbSCs6GPAxM4gdeF#48!zt7ks_uGtnGO!yT!~|3ncwRDYeo^jas`M7l zHad1VKq1HsS>R|S786TDy2jwh#tek=iypNb4A$NdL`P z%)-HGD5;xYjigOU>|-hB|pn6?U{Cua$tG{SJv z<{&R4l2}bJPLwtptc~Jkt>ZBm4)j+Q>79ziXc$@ElHT%QpObK_9RnI=;?AtZJ?fnw zd2&xWn)ayqibT zpB|vP+e_m}U!*|e`C@?Tjq$geI-08*J)3qYh1Cvz9IMjO(;fVstm*~R>8A7-6g85i z%BqLe1xoXTMq7K6JwRrrp?5tl-A`vbno`2ltKaixSXe%;-EwGmShl@sW7zoBd?dqy z7p@9m>>Y;K#`yW_P__A1gRQp7?pwW+HtTSlELjNmbkdA$b;%RvFvmt+CjKp3wElph z;)vwrNuE=w9yA?nI>g^)P&CHRP=~0^?G3g=$YLGMc{@@pzBqQ{WspzN=9UIqb3^`W zx;4(l6*LVh)&J95CHX69^IqT(h%Ffq^Ow`u63jIXw)dN=aYktVZ_}Y7`B-C@Wzyzf znqV$+tSmP(Ub1 zBAYNS_P|k#ke994m90cB)5cKqI7PV^IG8KFNf^R}=b9YPH<6IB^ug|~Pt-qi6R&-v zCOHT+Vb&;qxd+Y#eG$gUu~C;AzZCoTqhquvdG$|FRT(}_3_be|aA?#C#sZ8I`Vs!+hPVw- zq;76b1|u!aHfJ^!|EQj01dn5e`BG!qkMJa(OA^V=F^t^ZDdm`kdfLjJFrdcHj5`khPxwFYJy@`B*aUr_Nac2`bBJ!j4&1!N?1nZg{I%w7yR-aNMyiA0L zH8}#CNU4AHiyN!WP--q`Dzbe{?t;CJV6nA-QSXpK8x_%@?#MW{wc;#n`AA9FefX) zf|#IbR$x?*WKrNPLW9H-BnTwi3s?i0}Zp0Fr zVX$r__m6QEni|Ef+t^4_0A~6}feDBLZMe2EUUN!AwfT}bHxZokIQFQT?8jJvfC|PE zZV(!`Z!8#Bq(WVfZhes`#6iJGB!;krBpgFlBZfzJ?(%5F3@M*AE; zu*~@1#*_1l=c{*wqK8AcyV3D#BO;T_h=~H%7|Ugq(zXnuH;rZQwoaE2<6zK}LR*8Q ztwF5gE(8fJ4UU!uxER)0-EeHaB4bTsO36LO)uZ|N%VboISgOg$u14a7CGIK=?%pdA zmNz<O41XbG)!AXDjSlHNJQ_jEq<2% z$&$3>?Bfl5&{S2B>8jlgZ`Dv)Sy`wT@)t5hW#B9Ys~fd!MIa-OmJ40>1RuxTMpA|l zvEa}uq2L?HRfLG`7!@;wF`>S}alL_jgkc;6gz4_~cxR(~7zje%MPqdTs;(UkZiD%T zmIO%31IhXunj?l#9Gs)O)r9$q5{jV5M7nqE zSbXgAj``9byc--S#oK`2~Ab zn8cRYK;CHJIZhSyNI_}@8L zy}u7lO#_bq?s|TnM)ly_u6n(h)0OQkG>%*8$(^ZJ?@?F1DJhGK_8t|Gd|MCNEK*d$ zp9%i3>l+V^EFV4r#H)vGJ3mpsA-03S3en(H@pmqnq74 zr=c2uTI`mGh&U8PFyjry%IYR_0)_J_qKrH z`oF?47@h~N`gzMJe=#sa2WVH468T`Q%6q{^tPGGB)Cj&&ZUg2`NrS3YpghI=pu~?y zq((aNGw?5oBf!&$4!FCHZjnl8P}mT2+{-wjSyLr2c#VAQ>D4hV(jd zZvd-=TUZzQ_vV0+vbpS6Y4rt#{woDDiQG|tJVL^FGl7i!*!FjK7N`%k`4D5>xd_kW zf3&MVRCpiXPgjRhW~QDG4pYqw`PrWPqk_QS zx7C)TdFu8mYDyyYmHCjy$9BaIc^ZDO^CV0aKCR2%5w~-?C)})DxTRjVC&Ihhhq_jv z^wDhn_z$2wqzTZRGVQcTARE3J2uwD+?XOz%hWf4agw_-27^kQp+wZj?RTY@oky=y} zc&>6lvY%_WTD+mrC?s-OHpDCKjQ3WJ;+aj{IeYpdY%J*-U1Hvd;R}0ixIrHWmmHJ5 zyU3&U+qZC^+M&?`bg!ncw{~ZNUSFX8>)mY*0iD{nl+y7|zwgHWnoX z$6El~ql8T;uGB8}3>`=Wdlr(d{CKAYwas58WX z|A;ZVKK+G}^#B(G>J4eesCr5@0ze28P5t(Fvs5|~QLitkg6dZXq{T`k2LmGw&)d@% zL*4828XdUyDP^3_o}{3Isy!)gy&XHSe;P!S!5gaZ3!)@C`wD2p7^S#1b~FnfSS;=t zJAX7n6|nFgd!)oF2`})m<=2{T*-=4K@J^4_Bf)wk`D2whg(Cm0J!BoN!(`Z9Aq$`m z4@F=duC(*YNZ2#F+s^AFRg+CW*wJrG>$qXmpPxjcmZWimqq-Dbk}xu$^UDq+!;^}P z<+bUaBkZh9SPNz7?XS@(T4uG@oAG?uk}iW&J>a*hO_z;uOKQX4qh$|D%&qqR)e_kM zfPbXLzB(d;B-&S7ms*NX@=U6k8nn$%#W9(SSCWnw@!M1 zi>n2V$!1BY)<_qaq%6rub&Ldd7HYTd4uq7}q5I6SwUu!1>Zk&er%52Q-ny-OeL2bUFF3`8WOy$@^WWTtmNz|@voEwxZm4E~l#c<^=wqx@F=xsVx zpnqU3G#?T;%D(m7JZ_JjFW0GNns(S%!}AqtihI+ZqM6tld7ZP@x$UzIj5N2^j;rfQ zL&^Vhaetk0n|tm*Siu|-RjgQM{H`uNbcEuTQ3@UR8diovqtiq944O8*?=s`dcFHgU zIBIG`Qx7{zzmW`5-D9`;s{q-m$=#h zb+w|JY+uE-p8j4#Qtr&t-?s#FPgyiPZtp%+NtX|H1%i80HbJ3m+I zfxD>+J=pyqbKRN5Pe<~yJ)}lyh|v@BBsCFd+~zez;;Bf|6+UR6XOyHWcg|N>B@4J> zBWJ!@2NPrS19sjkN)@s&#SUcy*{R+l z`m7QCqBQOfJO5LZN@sfc%=#s2P_q4A;|pifVK~BlI34Gz(}Q}I^CXf)I%qLiJ4ITe zR!8orQ)kOpirOzw!0A@b)4tV$pIgIhoC+^m$kC$OC2}B9-y1}Ez<`*@>FTQCEDOcm ztOKKJFw{Z&P4-0mDf9TEXcaSaS{*hEsSZY<F&G23wb??Y%c-Oze z&9#6DNp22){PsIlfhv{Q1mq(-^CZv;{3KF^Z<;}IhX3+T*krG$g{DXBwJ8w_slii@g2Yq93_nt?!Y<+J62NHsQs30SV z=RcxQ2Qfh~fQQV(omc5R9OSFlgMQzvqa^ZCl5K7hxsfiY<2OxLO zj~p5H@m(aG&+#utHI?B8kAXI#9#`ARw=`w`-=^#fK>kdT*Rn)rR z)jivWI=*MRYTASqb(DGp&=n!eGP3IUV7)44!ozhG?0C-~Nt7-#E~(=m1sGja!@r|f z&Gfsgj!BRjDT)rlu1x7N-l*Zv=~ZF$oproRuQDh?YoS8G>O@Kk)pgu|YWPHhYEsH< zw0)GXjtfM)!m)KQ0;khy?tnTyjq|UgJVyYCVc&m+75{__C)Dx92Gx`auG+$Jb((By zYou49td6fUz&_Z`TK;!~Dv^$=;p1XdkJAA)JRhTa)W5QJ(f2MCRiUGddnx}~87iOp~ z(1Epl#!T3UoLb92GgEapz4$bLWTq-MfUfmR!Ko71hSr0(;HdyFGgW*1*O{vI5+A+> z+At`k@Vztqv$ItJk9>Fr3=LRy?t?RE9=SAbF9zVq3Ag7A9zSu1`G3M4Gr0H9fbR5? zG_YlfiZtx9u!XXx234un;oM>N8NOq-YVL&po`LM3i?VP|X7d?7EKa4FaJV{CLz&B} zZ3nB#;c7lJP8C91s`*#rRGeZ#jkqI}@%WjPlDjerKp%2;?NMSCayEum#8@G)1VR7j|CB-D_5kWScC?YOswBw+X;oEJMt zRl~KPh?NsbWh9=#)f!OdPo*;M21bdvnj{91a&0v;&M~XTL|(-xE;WT!)kx`>Ttgxd zCN4d3>tZ>^kX3RxB|KLBT(QIvQA5`KP4|eKE~JJ8{U5rFzv(7X8B-zu`AoQQf3@R| zGvtXeVv~^Srk-?$_##l4U+qxV5U+nYp;zbbF;>-JKT$CAUDeEN+n=XN+*nF799{nd zmz3hd({*~Z1eR=go=BYDk03}asH?`|sv*B)+$7wtaonyUS1>ZVQ*;f(!bpu{q=sDn z7kpTR|6b$xy@quC3*INff39)-TtnLb1-~f5f2?ubUqf0jTp+3UDnd7D8^+#}3xhSL z(Z&4bn$hF7#354k);RiVNPwsX57-wYbt1S6_I7H>L%qs;`E{sYH%sqYO(YWV)UR9e%z(^++jV!N6>;wx-CT_uLA za*F+VK|ipPh+ zg@+T9FO~4e!cp+I!tDt>hA79975Wx+<#^e2c<p;^>mW`|6%J&;F>zR{mli!77-A+Hvu(?3%Ij`C?+f_t`)7g)&eTxRySO# zSh!RJDySehNL>hSh%2}R5tN`TT5OG9YpvB5t+v`~ORZHaYTkctu=aiL!SCeEoH=vm z%)Z{4$1+x%zBT3P)vtWQyEc+jgK%7JL<6}#i0i5jfOoC7rVOfH^>+!M)p*+;AEw!P zqo{^-Kq?PtARb|ylKrHCgoSaQA&Lf{OmU%PrOX&#XX@D?^rk8aqZ*7A4W^2QjJ>R` zCqst@Ozi=4LxH%hEO<1KoG>gw*ft2x4LQyY2J1j6W=8vY=kSgVHJK9acIUJ+%Aq{< zb?ozolEFeygR!-KSczP)Zpg82Fvx5KwjrlqqmgMaF%3E@ULXxQ1)@uSLymW&F|Wat z*KowH+FokIgq!Qr8-px@k=RDRI+LnVc$He;R%FDyj%RvGLL{m?^~hQ@4_+mG1g62O z#K}qm=?>`QknHtIjA~s&PYGVfktQl%jB`Z{z54ZnS(mv;}r2_9LgFQa-;FU~u} z6LN|=^aJ7{6ng9j34%=Q?#`s5dqIi!@*Xe#_6)yRFOCHqRPE|$gYPp!TmBN$Jwa9n zMbSK@V~Y^MDVT6+orTlcSwVU9kVAR!F*tpftlotx^m~Jsx0mX-286A8c@f$;D@VNJ ze}1t!RrEl=v#PgYsvYz#7lkJmAw?EqIl>7cDKBXBmAzCyG$>tr(XRTt2HHVkG9?;r>=oCYq&oB7SyMyoh`LYm|Ks^BXi9;aS`Xz)J1R4Evw2KuqiAsri6MD zs^vO+C)Z!^ZPQ$d7e1YxOC>q`8Y;JUuxHY?#Nl*a+WPRE%=#_pehceKnwE?1_OPCD z)TSLTJHA~>k5Vu>>n>)T>5H))a(*Zs=n88a$RjN`fL+l*yu!I5?5qazQ8>my2^UFm zI5$1Sk0zWDO@DD4e6P^hberO$v4TR(xf!9idR=iag*22G@%rEfB)AYM@(;R5LL#`p zcHRx%tXe&QI`p|nRz+~C4%+`!IKvsC%SCcDg5ySZXejn(GE1{~1ceV$ooRi;Ul7*T zTrI(86-LjEeV-B9QKxYGhGDrj-W_Ni47Y_@>fLoHUGEFGZXnK)oF{9pC;cKhclKpH z85+s;R6V94$3Lu}oo_SAm3oW+8D{AuwdgJWUOm|o$#ru3fwDP9t+7h#_)14F$PjMT z6JsRj!G2XwzK_K6XHz|~jY4B_@B-->#r0=*ULaGVaJK4jJy{dQaqPYeWLp%r-Sg|o z&r#g;$aE?Z-!{4{tQ)baeNBHFw|K3g#4v|yd~ST*%4%N+Phl0M6sz6wIMp~hQK6}} zoYI74^(1o$*R9is)aEzN7B0T=^#gM0PqA-Y{eW`(kV`|jKJqb?#kq{`s&seo+#;qR z5_#AK;xv?-!unhwbBA(jWe-uVsy-vnI@%R2iJ*j08f{4mp;J9MJQOL&*OSXbIhCLD zJE8YqdO#@p1;OD0LaJu3Sj~EF78gMUd{#O@+}zxJfpi+ic_>?HDG{F4{S(SxF#Z$D zlR7eK7}sgQW6FgSa1z{n^n#kxyUF`H*gkMdcaxF_cE#P?h5M9TZgeY&>E7beR%3ps zB}a#GeO1?}Tl^Pwv-51CE!o-x^V?A3FV&G(!#K~ti zdBrvd%U20&>WDC$o7f|XI%6w0y@OOAS9idUtxsmI?Pb2noG!dym%+KgoA6#8c{7~r zE{|>Fy{2-Go%>1{U033gR_ZK_sw0C&pqvh^BeOaKFzyH4s3QgYX>xU0L+jOsWNk$!ZMG>qhY*ee&w-y=EYk3-6EG=GZ4ai{*S%sN%V<({s(Yhu)xsdU; z#S>a!e%s;+k1vq@Ui)6pQKxAXN-V#p|GL{RK%CX7bsf8RL z%W-7$Sh!ah$yZ~MjE9WGAqI{9E+ZKng94pvBp<~f@7EbgQ4Gd2$rlbMWB69K^n!4U zX6}wc+^JzLd`rz)H_JY{0LyjJ;vimfL7Ru@3z>H5HzaC1Z}C)UTiMF zqq%^MA)CjzdI-GU1Df(=ovN*kQ!ikKfy4)YqJy2xdN>Il$GIp%ECL?m!YQ;lt^Ww= zeSsv5<0i9;3#57+7vkKmE$KF7&TWbo>@E6LqXr)2%|R zT<&`!YDn`FF|9ujw|DtztR<@VIfcV8s_OuW@AX~G^pq)PDLv9rk`Pp%&iDX{IMA#(kL|~x56rG9&BrL zd{;Cli{>Zp8^!ali>R$!?JPPiuviARxy`XyLq#`rBDMLcU9(M)m(u5EsAKK}9YeonblUPl^$`JxBsVYukgKEjtSoD9rEeX`!QgSUh+Jn-R zk>iGStSzzMahYD}EpU|W zp!C%Siwsw4O?iS-sWQbudraO@9BF^%MCtB@uPdarbuSKz$0nN2k)0E{UY%bUea_Y# zVJAuO{^uk+yet_$_iXR8>qVaDMsj~5x4Oe3s%-3r*9g!=D|^frMzVAgr*dzkHe5@; ziaOO(OJCe9O2&lq9}@e?7$BvbBj1Pf6G_fwF4!j3D7-#Tu1w|zI{tQE9nYxatyK$* zq{9@h4;y-pgiql{+m)Y#5Mi{DY@339SALGvP2mQ#-$to-i_(6%6KWFr8%evV+|bm8 z#^$Yfhbz;r$d1u_7^SNiy~3zlNq?m)7`@!6TSkAS$&8*i>Xy)7>0(CD8FdTkuk<5E z?{3u1r@zv9jJ~5$H;4X8lNi05QI|-6vCXFMVARc^ztRLo?`qV=(O>C@j6T)HsQZA? zyBMX@7`?MmH--Mh@_*MqLQYS|LtVSoJznCuT|Ekg1 z(_gIm>7Ulp$*%}}v#*Z*GAx9i&l4I#N2r9;*ZT}-?Cx8Jp7 z!bjC)$p>8TNacA0AU`SVJnO<5Wa$4f%dL=ia66+yE22U^WqR{9MYj z$)<#OS@1n}sJm6BNp<8L>F^=9n0;Pl(0#~lk+A0TgpcQjr#?AfY*fzjYv=w_3WHi@ zr>-@ZJwD%4fT;UE?V3h-3-lx280ERiRJwE-8mY3MsHg7z+qsuo!G|Bq^hx*H+7(Sb z$Yssv_xZF-oZ=P|qjEim!?H=?Jxz0r)Ndlo=x?6iSM<8RFIp;G&5^4j&GDSi@E^o> z$auyydrzca?enXjy7<*o%*l4_ADv?&WQwcv-lT8U+7w5g_L;Xa$Re4v5@J%(TPT+cm z<)7~*9+xjMR+xlWG_av~QOHl_rtDD@s{RQFLIyEPpMV`(7jHa|^_$S(cOuSJlddyx zSowH088L(Fox1cqv@gtTw7bCz`$e^FJ^Ym_)lcf?tmxu+oE>Zj2_+`gob#pXo+j1o zHie42;*A9{vIW$aYHRgzEQQ6NKZsQE!o{^W&AuO=_d3xb<%!Jd&W7rq#)l?+vyZ6N z4`Wo5&&%v8AuTm_JKLvg%qM3_%S>)HJL#-p!7Of-q{D@( zNv4TbY`u-dx2_7;W`u7)M_wj!foxe7@tw`d{f|}o1Uu)fJr_K{$tU1cZqYoS0X6h{ z@+keVf`mjnTi;L4g$BF-SS54t-B;za!r6Cs6&)MUwDM z!of=1oQy+UA65xtX*2$lA{o~LWGxNfQyH_c3Y9#>*tFF*p(;4TK}VOp5<9T&-_(bH zRv9y;>P}(hABk19+V`m@t)+=}Bkbs45?g z&)s-jtk5+=rS3jX)fMWXsWE0)WQ>I(ZNnB@6Ta^~5DW?<_c+Bc0}O{Zjp@AC&gn_9*vP>;!LW&*@cle7JLr8xL^qs378V`yU`F-T-Z`GAi!>Mg(F9hW3enYzWadmL;Y#frt z32EbR)u!L7@5c9d67NOR@=0~`2y}p={GSv9k2uj&)W6YU(uC`tgkPvBSLIHlf6G4n z=~?YapW=AWi1Qsr%e6(EIie!oUf@|gx{$dx+4S{ zk!VxQo1>IfQN~l%rc>3$|Fk0g?I|OY5=px4vMpWLG#;%s{pYN3g(`!OQgk>E z!59xzn@X#NH)qM+xm&4JQyP`dDC6}dW(b5on%an15H z(+Gw+9Ph0ZDyU|Mr|3sl6X|@eXX-Q>|L~({aBj(2@{+D!GOG_tmOBqPVio?uSt7S5{pOV9OR$T$} z4eMDhqAs}ql`4~U)((!)MpaEtQ*C@iZPNc=ZG79b=|{EEv}v>SzqIjut4-Sfqm97m zcUG>kk!5~h)f3mLjJEOU{sEg{&6I9?f>lVfb1a#@fQxd9ITK@dHugiT#hs0@K1+@- z;M_XCpgDcTw%X=~%R$u%^2K_=vWp`JQql@5sdj+Xq#LWm+ zRe6M_J1`rno;WfUE>}Nyscb6iRCW36%d_Q<*n}wacx!e%d;ECv>5Z)JE5_(vMdB8t z&3$o}+_}buu@BE0l>gzrldvZZ#F)!_v!w>IdkBA-4LWQ1J(&xTsIM5HR=R4xnwJ*G zA6tpGSux@5u0sDRhZ=7_} zH1TAysUP4Y(`50FTnADkaJEiNg`cV6l+G<-M;S;? zI=7wOe~Pr+=0!$h79&ohiu?MbgQ=cWlC*TXy zF4LM*!V2nyYcP+n#-k@FZRIJU^b~o0pPNVauI1MBS#qM9H7zu5xLF_rdB8F6{VY03IR6k}NQg`C{6 zsm$bfl)9cNGt?DwM8eK0GfdyX#o|;?*|466N&F738@aucTgpB>p0D6Lk%has)tvdT z$$Yr2WV}3zc*NdxR-HReB)hq1Z0d3H_in5ptvpVeC46TRRK(S@gO8IpMcfP4e9Z7d z&&`vtdyf%c8@{vQ(>>fc2^)Qke6yGP%IUpBrZI=w1dl#Ka%_2yT;0bdvyYCF&USo% zvTQ&1GrR97nSKBR;73P@=>XQ6emFvGO1P)&u|uS_1WPXm4iWi5?o-y|sA1PZE>zP0 z@{yrZ1Ei3&rD9;5!ta^(Khr4W?V5tIckm&+e4Tto;^Z>4q;4w z=!jv;AnmX$50D9!5Io|5VO=F{$ZQXg+_T&|_Wph%uj0(?l>J0e zjkYL%zhQDUmmp!S_L1sy+&8RrKiPJk8^u1|NA8_RB!1jSR5e(m{C=Nda1CcKVaMzv z!;KJ~z0dHmk>e!nuze)AmJ4S?_K~k^aa5x3KJu~_=Sxl=AcHP&XS?VQ+&o+U8B;#{ za@pDg$1|OgiuJC{6R*oHKe&{o9x%9He30_~O>&I`% z$Oy7d(2tutyR6SX!@Mh;HLLipm{y?;`h$DBJ3glwQtWlH+^bH|?Ir8K{T53ttkS3H8w7kLdsqk->w~2zN4@BH~plAE-ZaZM3$p(PcM4o72+&>sqdAU zZpWmhxh3+fx>hMJV70k5zH`H_Rc$le;u&(_Di*^F_mCQjWA~D8uVRuhiVE-HaK>>$ zqRl-u774L1j737MpkuS*(>-v+BB4)Lx(hRFVh77ASqfEb^gm0wD=3$+bPrwJbHntO z5f+Q)ZsID`LYO5X0d&0-SEs&Rm_tM)LfoF$?`yFFLlY z2i{3d#c3tt($Y&k=&EOWG~iy_ZPlv1-mXLKaW+}+2g25N@R8}AF1Benv90<|Pv(7t zzV5D`=)d83&!eo^-syh1=}i6|;92nR z$d8EML#55yPCLX{7Fg^Hr))QE&!-NRxSAf2-fXmJ^W#_f!cjh)kh<1Z>3TQXjKmP^a!1gL2MhV}E?OH&)!h7sPLVH0K z`I+UvV-FI7uCTM=t`$ETttl~}KTMXee{3TMr2H+XZ*xsIa@&M|lSjM4jqKKK2K0go z2|IEd?E#f!iakGuU7k-$?fG!UtbC~O{}lWY`NYP7PiFh%lGP6UEcSjrx$D4pXFc*s zbp_vpb;u{aj=Y=m-#PG)jRnhY$J0DA!IAf2ALNk?M}8AqmqR!i-`inNM{H(bBaC54 z+;D}QU6)T*4_9<%*W{DWhAR?6X60w7RXBYxGoO_B<;=(@d>;d* zVup_610UwgTnX=-GaVcbIUnQ`RXbiK$sv*L_(!Y?Dmn2URK+n)d?ZzIs}mo^zQ`lr zI`QG`&w0eNJs;Hf+q~Lh?PX)R+PfZ2#Pzqf0Yedl>e^eYmyTsrU*?h2_WU6BSRScv z&wGuk%R_9HIP!hWx8*O@HPy}{b4{*lhw4C{@j%{=$?BpR&x;*$FMX}rmuK9Umo;3a z&ol1Hll5!a?~+@R*Zg>C>4CTtHDoWV+LcFqoOwl$f;=xb)>x2tBk=yOwnOdd0fHMt zT86sdn!Xb?9=8i7JP1^!=aEIudCTU5*{$TZJKu}Fl}qe7)SRz!i8sej^7uCQ>b3Hl*REbuDf{~>Z`WYQ z9e>diFa{@|aS(hZm(+25SGFvd{KE0R?4exJiRXtn6y{!w--%j1>qj!5=e<)4bD@qJ znnef&)M)vQUZ?Hvt5w%1-?O>e%>@R0Uel{IdV`Qdd9>O%?U%kS+wh51ZXr?bEk}M9 z?M*A%r>ZHf$&KGp9{*WwJiSd=&{1|}ukxbbeS7sXtpR!w$X)ZPXqeg$5@EN&Ohi;>#73>j5gh0hV-$Xu<^Znf>Qf8?; zGpz7G#g>4_ULo&rSKvp6OWjc5o&i6?FB;}@o+P>JB#*`p|(s}4zoM{}@$6$hu(x1-Fr#BDU)+D4v>SLT%13Lk9& zB|dRWrZmCZ^_DcDaa7LIoP;D-_sL9dPbN1h(DUz1_l$#1CG@b4FoSYqI>WdZ+Z6Xu z?~a8IxfBgja(+x`PNOD>o}En`~k|{(`HUt6F;=8m1_T%o_6F1 zC9iZ0+mx&7u*Kgwe#j=`pyH!booFn4Gq=e2(GHd49o6aaJYC#1ewbzQ-Av^!qH>MG z7L%|==pmZZwwThk2%gl8C+OG@90ft7r))8$Y!Nz9vv_Wn9+~c7;R4SJk!M5}#u3q3 z`0!p_dWslAskr5!4-ewC`{Mkk_t1FtV`I|%4aRI7mc9N@1J#0p# zk57OqX*0Yxrr*ew`LzjY67wruyzD|}%h=B7&?uz|;i1O0K)KYBo|yLWRc%bv(eJf3 z$L@Jel@-76uBPrfHzqS)rgpcpNkgMI7Pk<&#Ejmo^@~!?ogkAo+T7@9QCUcR8&u3t zn!PAOlMK&4SjaNAqZ!~?BO(U`+o6POTcd{$kXu7ajn2}93cjMht z&rvCj;rKp&3N;zCH=53D7RFNZV+WOCbEWz<8=Gun%-Co;wYem`TxD}N-UD~?Qi=JL z>o$8=<#ENSIKESPyn<3AC^cQxDOaU{3y#rCr(sE-E(ZJd$@aPCBP^l}+g81g-CAaz zW4Ej0TvXPZr>G15Xk>4=x_{eFKYwFcP&R^jVhLt8A#GQ)>cjr5$j-=FWq04Ei>ql)YN~ zlc8Um83qgI45dvf8`0gOX+=!2Dpf47Vp`*BsL7PUqGCe54?glAXpxd2J}~Jq;Y`fL z+=R@s5#C1CM$@A#iw-nyKW6>o5x$zK4Jlneff;0DiHN@A#1h01ifKQg)OiFw3 z9(MK{O#z#Q|74LXJ@`Is&L+~@gZFX&eS@jfX7QesGgP2hDn?|Ja4%jl<1VELPE;K9 zZbxw=z0~92TSaIokEr(%9#KL>Bm*s@!-Mk{ijx(pa)BsQycPxi@~Q171zu}t6tIe% zBV5WN=e+n~o@X|Mv8Eq437=91bauG(!gz9n>BI)%c$Pus%?C>yys`>nh^}LNuPj4C zPky$9_1{E3@5Rg6m+K8b_2T1Ler@(RRj=V?s!y}CI_j>yLhx9ePzl*&dSAXjJ12{5 z?#pZ0Nm<0ymrtHCfCfe9VBMdXaqz}+T=AcyH-6N$?U>M~?b=Sd^;r+%yCXnelt<{A z_3lWQ3g&-~bal=mCH?rD{H&~xW4zfTY-Y^l#p{KhzH`JfyJ$Tr?9WHAcQVQM{rSo4 zoW|e{rOmyotsIV zf-pjzo=FB%JT8-b6vT(Jk(s14i0>TkvLU^w#hcxrww$0-wfo=p=-fwn#YN7-y$nR; zV6J!)xbMdDqC|b)jWqMxWf1#dh*fSR11NUeNah6dYLDtR{?MY!N|O{GHt20c4?pS1 z{$PHY=YtL9MW^)lHwg7QNN$Y${6z1j<|dcVONIS95*&g_(6<}N^bo$6;}vjzp}(|2 zIHV(6L-;v;3>nIFrMieAnKn!&-q>``30M!ay4Ef&(~j9rk-K4hZ`L}4v>(h* zV;||rg2DU%)sXe&dmQu;>xHiCpqcMg9X5c+zQ3<2uwH`Egm6Vi8V2)s0>7kszuWxs zT&e$jZCQcN%iHOy+C}&P?=6+E6|Pv8G1jfc*#lEcrm$H@Zfkg>T|X*VxRhZzhLgXR ze68gNw0EV{x5sb}Wspwc{CRf#T6)B%0Vk>c?_$)sjCYGsRd3DzUW^))X<3ZwoM~B% zYMzixz8kw(M>>zdM5{5~ z5ITaFyRco;$%Lu=Gqy5~jGhLEL7y1rOygf!vEQc|X2((i)VG;?*j zWlO>(mBi1&?7l-PDVxQ2cCt-14SDPK=O^U$EdC`Ml}f%%Ba z62FH%`3doygXz`EPe^A2uQc?U%Lhr=Zl92ZdHfXij}&rl9zT^m@-gw4kIC20kI9tz z{G2XTs|x)SteB!iXZL5;>0V1i`28I`WE*o~ve%zlWw<+^uV-13LP{56YPKzfTw2Jh zSY3+Y(L%n`O0jJwpzA6eRfLj>{Uoa9K4CyvYON^<=xn<)#Un8emdK{k_06q zJtnLq{gz=4nY+@ExQw4HVc8YLxE#wI{7N!r1)s>iSz$Q6f+p>p73B6x-j6-7g1CIl zo7vebi0djy_SWu0My>@pUUnYYM-Q z{d74gUc)bAXDv6#KjFJcSkp41NyTKb{c^*SRKA^r{d^e_()drCu_)rpnMN&ig# zVwalbm6hUJ`6~U8Cw%e;!JG@r4wkKHRvmskjQ*KAZR}I2w!TsG&sT9dwA?!t8&%$V$}{I zWGP(eBJcM9UgV8iLXPC~gW0i543G2qKnXi=Dd|R#B0fvWD1t0WS!kGp1t%Bwr;o_8 z5|p7O3&?_lsFhFW9$0^nw`PkL7&ac^A6UD7Kksd&^q62$Bngf4$hvaOM4IM_YU$JM zB@=mTkL|hfdff43Ypk7TVv=aPacmy>tsI3%HlO@_f*;Mkm}dw&$-gII_st_2r%*dr z&m(Z>bPJw_GU|01FygwR` z^C_z1bA#Pj)v>vbi4iKE4vl*!8>c6lJm*qB-qg<-p*Y^2+SXDV&IbseQbWslm&_b- zT4Xn6T!FCV3|@IkBBf_|#gO5Nrf39wMxefiy$v_E@`W)Xkp^LsC9TiNwWwwN*7+xe zmv~GgG|^<8Bm^Z9`%3SJK4w;&OtGg*R)8%r!2dW{#D&Rj(D|-0t-()9YCl zp1)@kb0vSkPnfge?7#NoQ|G)Z*lXUJ|0&qdaCh`v!;Q22KnYtn$I!8wzbj#%&a{;1 zUuM!0J)dkokM_!Wj^X$7{3Pt>&Bl%w?`J!8CU)DW%rvAM`Sz0b^OHu5iKgS~B5Nl6 z!z4pdE&sX0l#Vle0&!PSf~xU|G~8td4oRqISdMJO&Ok~&D!oEK1U(|f+PCm#CMa|R zVO+c^CcaqJSgyJxjHGPW3uz~g*#WjKuciN*sa}&bgPA9+}0LnhgcNTb|-Pp6N0&lMZkD;zF&FbeKyj zN6P0)3P|@+@}VTSl~);xM#;Z)BtKipok{By`6R=_N%9odFn+51nw6pNhw{yKk|dmg zlaEx~vU#PUOG|Ie>2?xqF3x%>KKaa8+ZfbI^5xd-sKKOgzT9_&W-yXV)n%}NAgJayD;*> zM<7MDmf41ptdHbTVdugiWNazzvJSG-tixL9e@vbkAF3IsQ&GtfMnR7af^dQod;+e8 zUl^z@bq-%2M%pcuk7EnNNc=*%qVrbjoaQGH=7r&7B%cjR-=8e8TyG;}g^}$G#OcT3=5Exryk`eVXK&La6BRue|PTqO5ogTu(#TqsRt9z?Pi%jZpgItVsjF4QMfDV~cTzzV-pQuweC?FeVz zCW}_XS>YE-O-V=ivWT}CfROJ|vg)@1$f)pIv$$-8=2-ZC5Q$kLSFqmBhOHHZWz z%l+p}5$&t_& zx!gDPbL#5jlN|G#dF)*18FO~v*jSo|lUd;+bt@Vhh}nQqG|r^P^P;>T&1r>}Xl-YO zN|E%#ze%SkDfg&(%R8>)BIy{j1rOi&(;x=mizrq&G>~*&A)nDMmpWg+EJYBT2a-)I z~nf$SQY-c;s+mfI()T7Tr;92#;Y$*X&f@C0R_*mYP zeHKcdd@K*2e?JsK_}0-H75>DMd#F^+l$vq^WnA>Ai5*Vw&*WKN1ajO`mjN>b$A*lr=@ixhcx zHa(F1l_H0Z9O6&~wf6ibzccwmv+qUTJ2MHEZPlto;B|zDDlH zz78Qjt&ywPKSPN9C-RX_cS4}#72AS4xWwXi2ub)veubSANPJV}3)%c2LvgBHA@R^v zMrxjRZq+OUhT6ASQ>$6lM>e-?UoiP5O&-f`4krBt`9bzb2)QYsG20(Po(Xa_yEB9+ z(&e4m{16hFE?1Aq3MtlGrK_3PXi066+Yw3G`VgUO05re{fRg)umOYVpMz#^>kJnTB z8i!oHWJhUvksY436xLEwwnNh|^vU6m14wDQd_a$Zl!#|#dzH-%!6Tn@LWG%=a>Ukx zGbKmtg!lkr|EWB#XN*N=qstA|1K$@CJP_Wo&9|Z~DkMTLfq5dmypa$`ibtE#3=o{pkzUqszkA{+6H>W!7z;r6Iy=f0Daa9>f0PPwuakk97Ek zGNGUQ+Mk53lMi>O7423+jX%j=Cs(ItQhQlN@NI|VzbcJqgK0#MQ<_@Oc51ohFQkbK z$G`yXP6kV#V`xH9!Foy^|tojL_{$xxhDuXhZEY6g7 znCC%#)$cZ=jQbrkV_1%sbl*L*d#G7xqQ1&r1r^;?wmre@5-dEWM7+?^p87-e4HB4G zSBc3gxV%^}ItJ^lf`xsQB|0Ld6$vPzY$a+WsZB8XJyRaVUiTw`>*e@r*N=R%Ue2YS z6Lkw0SMSG3n5_H~U-v1DP(jI_GHfVHgt63I;)=uD5}`2&<{pZ#N?e8W)QCp>2z5qS z7e%|ZaE4+!K80?#ZN^EouWcuX$3{rXi_e%&1sTr==}!mI1e{3yeb{uwR25WSTxqNf z8v3{Sk$(?sl`xmOlx+{9#ZRX2)8n8(kdRA>eJ$h4rVhUOK`E^=o05ocWB!h(()Q3$ z3&!1uc@ZD`tyHGSwl6)oI4g)O-5~ermrnhzaiETmei5RnO?(x4d61u8LhHcRAYmb; zA|Eq@h-rg-1Ut=-blNCi^4_>0V_cAayr}Y1U+^^TGkp+LzQ@)$m1=zJ#~#+6f-Uu2 z7SyIO%35rY(4W$fMNrls%6cS2cw`Xyej{3|UP0vLMtKg)_>t@^^qGJAl0#W?rBe$H zpjd5<6<|RcM83_EPjdPtuzb%T z54gENJtH;Vwz^`gqvuR%YE-vTtV&#w`}Nc&lO`&T_Qi|K!pT75xk=6ssty$T`XduU ztkeAI2zY?CQoAfIO5$4)m{So5LZ%h&^hk@Mqm1EJ%IIWel#58sDGMZvHlY+A4*VB` zZ)u=VO1(u}z4aqngmM0F?csX@g*}u-3{ubsrdftCv`YJRV}xBGI19u5EM#=(8R_(y znDFg^md(?XG$Otv5JO)0IGAc3p5Nwjl)BK7a4r>JJQMR%V4;MPBaT^V+lKfS>K;l> z`N~2pp3%m;Q>5N|%j%mJXyGQ5E~85%>#clK+K9Q7*ykS!zAFMP!vrCVI;0<^(*vra zRU26sNXjp$(QaYs9Pq#G z{ov)_?!Bo!rx*3wlSawg-q-sr3tfJKT~6&nSCK^|+4=VO`?nM~J72fAenc5|@Ixl# z$oocr<@;|&J70%?_+(ZpJ1TMjoARg1)?$LSQwt5$&i4h?TY6r6%vvQ0B$spK13UZ~ z0LMnwHpQoAlXXphYt!!mgwMs0_NM?6nTwIx?Eo@2S02QE89<72<^56xAK?NWG_)P| z&>I7U^Z&A|&QO6E5UHvHY?Jy30Y2cx6+>qNuCRh1wFv#&NT&jnwMwC{NPFI&x}2bb z1TRW49t%M8%vQ5_czmqLa)df|N^L<`miDVvTDEo0!GQhVHo`;dm4?}qaZfS}`$ZX+ z-+iLl%@UrmAV9w>KyVR-6;YR=En?@4H3>qMR(ng_6U;&}by5`ss9EOl68&>OVK*i8 zb=XlVNPOtkN!1R<+<@DxJ~u#kBdUFg{^Hh;DMCJF-QjR2E1?c6DO9rq2CyYIw>H3VkbU=qND6bQhfXct4n64< z+>&~Dj6B-r)mq5tMpMUQ?z~cAJ~fSYa4&pyMd}wtt9~^*buaZYg-S@W8E!KNRIK3R zkc8+a$fyE%8qdNW9vu)L6+njN%X@aw1{k#gdM!<5A%&(^v^9oZQ({YO@O9TSAF?@L z?xPN%a@`dUGKcsc0Xgb`HTILF6ARnNs{@jxvCr({y9AIs`EoBuMS!tOfL;+GOzclO zY?G@;wF?Nb@mTt?&DHTPA-s=Ix3T`p0rWPk?#*UFMumC>;p0b@ETBT-&C-!_GfO*8 zhM9UAs~A-@qOmvsN|0LTy!0o+HhE|JKm51zldWR@@FykPx-*n70Dk{HZ?TMxGi z5AD{f2>=WRyuXIgGA&OvjP|J}U>&0!#E6qpXQt>cO%%*ZMynaMuvK$vyjJto`&vyM z@Bp&@we>KUv2gbEk;Hi}V&mq6Wf8ga+M4T?_pMUf2cQK^1DG{9k_6mzL#cfPI85P= zlXmYnME%BEoqF{frM3pp-0Y-%1iT1t-N54p>`l;0eOy$1FsrbTlV z&nltHIO)~H`z;6Jv887<1YR?paXA3|pX-(B+!f^F| ztL6sa0R-Lyyc+*ZbL%{#9si?NGc!}Gsmai4Rx(dDhr!FFJ=MsR&P<%7RkJso(LOt) z)hw*kYFq#_7b8glqX1EWX@L2Z54ZrZ1K^p&XfusYTA$Cg8tvz)TFn=iwVDDDPQvjx zpaQ@k$C9jDG+)A;3C3K&6_}drG#_YPvJl%of;d02P3X0G@4u zyk{DH=#8<=6({X2gyVe4N$dQPN-J*!!y^zL(7^H60=&27FU%%oCH-u~AfX@K3U@o-{*X#!V5%x>K$D3bj@^;#31J$44U1PMzYh1LmO2RdnfT{!G8dOQtz81|Sz%;;G_*)0a0<>7QXn2$i zMrl)H?qV~78QBo7iEIqlJgg7bjCE<%EQLK2Fm0%v_6ro1?J(ba=%T%M%t?C!W>@fj z4*UW%qzlrd9q=ET0^+h=?vc74&Q~vi4N$PIRg;G>&1QyK3j28gqx?gYO)(>3BymVk zzz*;=_LgezgZ}a5aLp^=Bw!z8j1Ana0agGhK-&blaC;xBehr*?PpN$a-1l=Tlj$W{ z4TC$Fo&Xp9;-VeZh|JS63=d(}KRap1TnX1S0piHl+vWapyRXAF9H0jv0PyhR2u%d= zVWKLOckSLMAwqK+5Dkbz`5Xm^im{3_ry?*WP4hm=@K`dZQ2w4n#;gd<2>5PEB(;SY zDZDp3LX!`B0OMS9FeyUg3EZ+GLW7e(HCA&YXpwJK!aQ|egeIgba;JdT9-1GaDFZYE z92Z1rLIJY?g@8+d0PtCV6rst4+(9tE@}X6YnZFWhC0EiEaIP5+_vIf)1ZfxhQJv}-;{J2$kzKZE`|5q8Nn{hEAQHD>@N z00PhfmH}o0#siMS%Nv^eanCfo5BY7EyjLeX^f-3_NbOo;i6Xa9^faqCjplLoa(e1 z4L}EI0$hb#`+BWr8Q=`e`M_5IdYCKj*=Yy;Y^ROBi_6jP*pY8`%e$uzh63#X9T4D9 zFnIy@1&#)u0eUiUSK!^ixuBl|UJ3gbz>fjxptSDNcmrwH4AAaiQkhA=*=ZlZV&jX70nh+C0{Q_~!qX%VhKYbV7BCC&319=D z0B{`82>2TCBjA9{R;SMF$6*eV{NBh3&p9t zwSU=ZX}|?vqEmqVVtbUDCFptWTQzaOS*ca_+7@%GS&1(BX0uikcNfVB{1d?G4w4># zf@M7t^yM&z0PnES*c#v-uqOk4|5>YIYqU=1-YW#uIfF}Si0h9q+ z0P{ghb-bt5OaT-CJV7V{b^xxU_WKqE<^Z!lp-_T;9RXbgIKbW&uoiF{_AS80z`p>8 zf-f6p4$ubyEeDg3Nm$xH)N1NM7=^24eSErTZy=d2f)Rts zv?iKdfD%AU4#uRwhXD+P`2aitc7Pk8Jp$|iWCDr+$$ zft^6R)De9M%&EV_z#wMNVHxCLuT4V?U%|W{0^5ULaJ5x47VU2Z@LoU>Ui~C&e4l(`>Pr~S0P6v$)P1{X z$41&~-^UR47ucU-s)RjUrgLbkW-4H(rd9I+=o?|aG7u&6IYu17Ge8d+)T;Ry_+!{N z0`CDH2ika;Q-Oy8{|W3LhE@#_2K(tS%y#;~a2Evc!L6DuFn-cfWv@u0EVfl$(w1ft${h+58a?Y z!az&4v40m708GJ{7R01IgMm0>UNW>*GX}t5r|c_|y-vHbKTm>`%8Ugcb zBylCchYe+qu{DLk((B*lT_j0{PA&3*5|@N*^g_<)od;RP*+ z9!?wkRP&MHZ;4`_#AZ62mXbMEiiOfu@Y(!6`QA#gM6!s)SSxn3i=^aL>*%}+HI5Z_{B_+F+s z`X6~#mk3Q@YPv^g+yLb}A~hv| zT{{eSpD9jDqyZr2?I62eDE7N{=@Fq>wKGz)2#^Svw$l*%x1y4jBpX~_DZaFEuK~mV zi~*EOfR%<6uxvgK?Ci{#yZsxZbR8p~-#lkvhPxzF3~#VI|H zMJb^h=xU($0wA3O#GOFZDL^^`h%TuzxsDr>RQHLvk6t*uHl0M49sRN8v9w2@*y;NM{htl9of4Wyxgd3v3Ov>0Q<_Nf}u<}7TW zx%V9A?U!_<^B9?2BDOo}NiSn$ikUb4mA>>dF=Z`a&kl%x&v&+ezi;h5U?F865i|Xn zf%G*do!#5_8A?Ynaa{nW3V)!Yk_Fq9Or*P*_(FhTVGb0?THtJ-uweQwGwD}cH-RSb z1I5nI-@eXV+EH}k0}jQ9%NY4ZOQU~E#;ng-r}m3KNMPgUMKx)ip)uc+7rZcR3