Kutluhan Aktar
Published © CC BY

O3-enabled BLE Weather Station Predicting Air Quality w/ TF

Via Nano 33 BLE, collate local weather data, build and train a TensorFlow neural network model, and run the model to predict air quality.

ExpertFull instructions provided3,487

Things used in this project

Hardware components

Arduino Nano 33 BLE
Arduino Nano 33 BLE
×1
Raspberry Pi 4 Model B
Raspberry Pi 4 Model B
×1
DFRobot I2C Ozone Sensor
×1
Anemometer Kit (0-5V)
DFRobot Anemometer Kit (0-5V)
×1
DFRobot 8.9'' 1920x1200 IPS Touch Display
×1
Creality CR-6 SE 3D Printer
×1
BMP180 Precision Sensor
×1
SSD1306 OLED Display (128x64)
×1
5 mm LED: Green
5 mm LED: Green
×1
SparkFun Button (6x6)
×1
Through Hole Resistor, 2.2 kohm
Through Hole Resistor, 2.2 kohm
×1
Through Hole Resistor, 3.3 kohm
Through Hole Resistor, 3.3 kohm
×1
Xiaomi 20000 mAh 3 Pro Type-C Power Bank
×1
USB Buck-Boost Converter Board
×1
Breadboard (generic)
Breadboard (generic)
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE
TensorFlow
TensorFlow
Raspbian
Raspberry Pi Raspbian
Thonny
Fusion 360
Autodesk Fusion 360
Ultimaker Cura
Visual Studio 2017
Microsoft Visual Studio 2017

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Solder Wire, Lead Free
Solder Wire, Lead Free
Hot glue gun (generic)
Hot glue gun (generic)

Story

Read more

Custom parts and enclosures

air_quality_weather_station_v1.stl

Fritzing

Schematics

Schematic

Code

main.py

Python
# O3-enabled BLE Weather Station Predicting Air Quality w/ TensorFlow
#
# Windows, Linux, or Ubuntu
#
# By Kutluhan Aktar
#
# Via Nano 33 BLE, collate local weather data, build and train a TensorFlow neural network model, and run the model to predict air quality.
# 
#
# For more information:
# https://www.theamplituhedron.com/projects/O3_enabled_BLE_Weather_Station_Predicting_Air_Quality_w_TensorFlow/

import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from tflite_to_c_array import hex_to_c_array
from labels import labels

# Create a class to build a neural network model after visualizing and scaling (normalizing) the local weather data collected by the Arduino Nano 33 BLE.
class Air_Quality_Level:
    def __init__(self, csv_path):
        self.inputs = []
        self.labels = []
        self.model_name = "air_quality_level"
        # Read the collated local weather data set:
        self.df = pd.read_csv(csv_path)
    # Create graphics for each requested column.
    def graphics(self, column_1, column_2, x_label, y_label):
        # Show the requested data column from the data set:
        plt.style.use("dark_background")
        plt.gcf().canvas.set_window_title('O3-enabled BLE Weather Station Predicting Air Quality')
        plt.hist2d(self.df[column_1], self.df[column_2], cmap="summer_r")
        plt.colorbar()
        plt.xlabel(x_label)
        plt.ylabel(y_label)
        plt.title(x_label)
        plt.show()
    # Visualize data before creating and training the neural network model.
    def data_visualization(self):
        # Scrutinize data columns to build a model with appropriately formatted data:
        self.graphics('Temperature', 'Ozone_Concentration', 'Temperature', 'Ozone Concentration')
        self.graphics('Altitude', 'Ozone_Concentration', 'Altitude', 'Ozone Concentration')
        self.graphics('Pressure', 'Ozone_Concentration', 'Pressure', 'Ozone Concentration')
        self.graphics('Wind Speed', 'Ozone_Concentration', 'Wind Speed', 'Ozone Concentration')
    # Scale (normalize) data to define appropriately formatted inputs.
    def scale_data_and_define_inputs(self):
        self.df["scaled_Temperature"] = self.df["Temperature"] / 100
        self.df["scaled_Altitude"] = self.df["Altitude"] / 100
        self.df["scaled_Ozone"] = self.df["Ozone_Concentration"] / 1000
        self.df["scaled_Pressure"] = self.df["Pressure"] / 100000
        self.df["scaled_Wind_Speed"] = self.df["Wind Speed"] / 30
        # Create the inputs array by utilizing the scaled variables:
        for i in range(len(self.df)):
            self.inputs.append(np.array([self.df["scaled_Temperature"][i], self.df["scaled_Altitude"][i], self.df["scaled_Ozone"][i], self.df["scaled_Pressure"][i], self.df["scaled_Wind_Speed"][i]]))
        self.inputs = np.asarray(self.inputs)
    # Assign labels for each weather data input according to the Air Quality Index (AQI) on the given date.
    def define_and_assign_labels(self):
        self.labels = labels
    # Split inputs and labels into training and test sets.
    def split_data(self):
        l = len(self.df)
        # (95%, 5%) - (training, test)
        self.train_inputs = self.inputs[0:int(l*0.95)]
        self.test_inputs = self.inputs[int(l*0.95):]
        self.train_labels = self.labels[0:int(l*0.95)]
        self.test_labels = self.labels[int(l*0.95):]
    # Build and train an artificial neural network (ANN) model to make predictions on air quality levels (classes) based on the local weather data.
    def build_and_train_model(self):
        # Build the neural network:
        self.model = keras.Sequential([
            keras.Input(shape=(5,)),
            keras.layers.Dense(128, activation='relu'),
            keras.layers.Dense(64, activation='relu'),
            keras.layers.Dense(3, activation='softmax')
        ])
        # Compile:
        self.model.compile(optimizer='adam', loss="sparse_categorical_crossentropy", metrics=['accuracy'])
        # Train:
        self.model.fit(self.train_inputs, self.train_labels, epochs=100)
        # Test the model accuracy:
        print("\n\nModel Evaluation:")
        test_loss, test_acc = self.model.evaluate(self.test_inputs, self.test_labels) 
        print("Evaluated Accuracy: ", test_acc)
    # Save the model for further usage:
    def save_model(self):
        self.model.save("model/{}.h5".format(self.model_name))        
    # Convert the TensorFlow Keras H5 model (.h5) to a TensorFlow Lite model (.tflite).
    def convert_TF_model(self, path):
        #model = tf.keras.models.load_model(path + ".h5")
        converter = tf.lite.TFLiteConverter.from_keras_model(self.model)
        #converter.optimizations = [tf.lite.Optimize.DEFAULT]
        #converter.target_spec.supported_types = [tf.float16]
        tflite_model = converter.convert()
        # Save the recently converted TensorFlow Lite model.
        with open(path + '.tflite', 'wb') as f:
            f.write(tflite_model)
        print("\r\nTensorFlow Keras H5 model converted to a TensorFlow Lite model!\r\n")
        # Convert the recently created TensorFlow Lite model to hex bytes (C array) to generate a .h file string.
        with open("model/{}.h".format(self.model_name), 'w') as file:
            file.write(hex_to_c_array(tflite_model, self.model_name))
        print("\r\nTensorFlow Lite model converted to a C header (.h) file!\r\n")
    # Run Artificial Neural Network (ANN):
    def Neural_Network(self, save):
        self.scale_data_and_define_inputs()
        self.define_and_assign_labels()
        self.split_data()
        self.build_and_train_model()
        if save:
            self.save_model()
    
# Define a new class object named 'air_quality_level':
air_quality_level = Air_Quality_Level("data/air_quality_data_set.csv")

# Visualize data columns:
air_quality_level.data_visualization()

# Artificial Neural Network (ANN):        
air_quality_level.Neural_Network(True)        
        
# Convert the TensorFlow Keras H5 model to a TensorFlow Lite model:
air_quality_level.convert_TF_model("model/{}".format(air_quality_level.model_name))
     

labels.py

Python
import numpy as np

labels = np.array([1,1,2,2,2,1,1,1,1,2,2,1,1,2,1,2,2,2,2,2,2,1,1,2,1,1,1,1,2,2,1,1,1,2,2,1,1,1,2,2,2,2,2,2,1,2,2,2,2,1,2,1,2,2,2,2,2,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,2,1,1,2,1,1,1,1,1,2,2,1,1,1,1,1,2,2,1,2,2,1,2,2,2,2,2,2,1,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,1,1,1,1,2,2,1,2,1,2,2,2,1,1,2,2,1,2,2,2,2,1,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,2,2,1,2,2,2,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,1,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,1,2,1,2,2,2,2,1,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,1,1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,1,2,2,1,1,2,2,2,2,1,2,1,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,1,1,2,2,2,2,2,2,2,2,1,2,2,2,1,2,1,1,2,2,1,1,2,2,1,1,1,2,2,1,1,2,2,1,2,2,2,2,2,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,1,1,2,1,1,1,2,2,2,2,2,2,2,2,2,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,1,2,2,2,1,1,1,1,2,1,1,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,1,2,2,1,1,2,2,2,1,2,2,2,2,1,1,1,2,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,2,1,2,1,2,1,2,2,1,2,2,2,1,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1,2,2,1,2,1,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,2,2,2,1,2,1,2,2,1,1,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,1,2,2,2,1,2,1,1,1,1,1,2,2,2,2,2,2,1,1,2,1,2,2,1,1,1,2,2,2,1,1,2,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,2,1,2,2,2,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,1,2,2,1,2,2,2,2,2,2,2,2,2,1,2,1,1,2,2,2,1,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,1,2,2,1,2,2,2,2,2,2,1,1,2,2,2,1,2,2,2,2,2,2,1,1,2,2,2,1,1,2,1,1,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,1,2,1,2,2,2,1,2,1,2,2,1,1,2,2,1,1,2,1,2,2,2,2,1,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,2,2,1,2,2,1,1,2,2,1,2,2,2,2,1,1,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,1,2,1,2,2,2,2,2,1,1,1,2,0,0,0,0,0,0,2,2,2,2,0,0,0,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,0,0,2,2,2,2,0,0,0,0,2,2,2,0,0,2,2,2,2,0,0,2,2,2,2,0,0,0,0,2,2,0,2,2,0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,2,0,0,2,2,0,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,0,2,2,0,0,0,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,0,0,0,0,2,2,2,0,0,2,0,0,2,2,2,2,2,2,0,0,0,2,2,2,2,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,0,2,0,2,2,0,0,0,2,0,2,2,2,0,0,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,2,2,2,2,2,2,0,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,0,0,2,2,2,0,2,0,2,0,0,0,0,2,2,2,0,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,0,2,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,2,2])

#print(len(labels))

tflite_to_c_array.py

Python
# Code from:
# https://www.digikey.com/en/maker/projects/intro-to-tinyml-part-1-training-a-model-for-arduino-in-tensorflow/8f1fc8c0b83d417ab521c48864d2a8ec
# By Shawn Hymel

# Function: Convert some hex value into an array for C programming
def hex_to_c_array(hex_data, var_name):

  c_str = ''

  # Create header guard
  c_str += '#ifndef ' + var_name.upper() + '_H\n'
  c_str += '#define ' + var_name.upper() + '_H\n\n'

  # Add array length at top of file
  c_str += '\nunsigned int ' + var_name + '_len = ' + str(len(hex_data)) + ';\n'

  # Declare C variable
  c_str += 'unsigned char ' + var_name + '[] = {'
  hex_array = []
  for i, val in enumerate(hex_data) :

    # Construct string from hex
    hex_str = format(val, '#04x')

    # Add formatting so each line stays within 80 characters
    if (i + 1) < len(hex_data):
      hex_str += ','
    if (i + 1) % 12 == 0:
      hex_str += '\n '
    hex_array.append(hex_str)

  # Add closing brace
  c_str += '\n ' + format(' '.join(hex_array)) + '\n};\n\n'

  # Close out header guard
  c_str += '#endif //' + var_name.upper() + '_H'

  return c_str

air_quality_BLE_data_collection.py

Python
# O3-enabled BLE Weather Station Predicting Air Quality w/ TensorFlow
#
# Windows, Linux, or Ubuntu
#
# By Kutluhan Aktar
#
# Via Nano 33 BLE, collate local weather data, build and train a TensorFlow neural network model, and run the model to predict air quality.
# 
#
# For more information:
# https://www.theamplituhedron.com/projects/O3_enabled_BLE_Weather_Station_Predicting_Air_Quality_w_TensorFlow/

from bluepy import btle
from struct import unpack
from csv import writer
from time import sleep
import datetime

class air_quality:
    def __init__(self):
        # Define the Arduino Nano 33 BLE's address information:
        self.MAC_Address = "4c:f9:a9:9a:b2:da"
        self.Service_UUID_Address = "19B10000-E8F2-537E-4F6C-D104768A1214"
        self.Characteristic_UUID_Address = "19B10001-E8F2-537E-4F6C-D104768A1214"
        # Define the peripheral device:
        self.device = btle.Peripheral(self.MAC_Address)
        # Define the characteristics:
        self.characteristics = self.device.getCharacteristics()
    # Display the given service's information if required.
    def print_service(self):
        service = self.device.getServiceByUUID(btle.UUID(self.Service_UUID_Address))
        print(service.getCharacteristics())
    # Obtain the local weather data from the Arduino Nano 33 BLE. 
    def obtain_characteristics(self):
        self.air_data = []
        # Create the air quality data array:
        for data in self.characteristics:
            if(data.uuid == self.Characteristic_UUID_Address):
                #print(data.read())
                self.air_data.extend(unpack('ffiii', data.read()))
                # Add the date to the air quality data array:
                _date = datetime.datetime.now().strftime("%m-%d-%y_%H:%M:%S")
                self.air_data.append(_date)
                # Print the air quality data array:
                print(self.air_data)
        sleep(1)
    # Insert the recently generated air quality data array into the given CSV file.
    def insert_data_to_CSV(self, file_name):
        with open(file_name, "a", newline="") as f:
            # Add a new row:
            writer(f).writerow(self.air_data)
            f.close()

air_quality_data = air_quality()
#air_quality_data.print_service()

try:
    while True:
        # Get the updated characteristics and insert them into the given CSV file every 30 seconds:
        air_quality_data.obtain_characteristics()
        air_quality_data.insert_data_to_CSV("air_quality_data_set.csv")
        sleep(30)
except KeyboardInterrupt:
        # Disconnect BLE:
        air_quality_data.device.disconnect()
        print("\r\nPeripheral Disconnected!")

ozone-enabled_weather_station_data_collect.ino

Arduino
         /////////////////////////////////////////////  
        //     O3-enabled BLE Weather Station      //
       //   Predicting Air Quality w/ TensorFlow  //
      //             ---------------             //
     //          (Arduino Nano 33 BLE)          //           
    //             by Kutluhan Aktar           // 
   //                                         //
  /////////////////////////////////////////////

//
// Via Nano 33 BLE, collate local weather data, build and train a TensorFlow neural network model, and run the model to predict air quality.
//
// For more information:
// https://www.theamplituhedron.com/projects/O3_enabled_BLE_Weather_Station_Predicting_Air_Quality_w_TensorFlow/
//
//
// Connections
// Arduino Nano 33 BLE :  
//                                DFRobot IIC Ozone Sensor
// A4  --------------------------- SDA
// A5  --------------------------- SCL
//                                BMP180 Barometric Pressure/Temperature/Altitude Sensor
// A4  --------------------------- SDA
// A5  --------------------------- SCL
//                                SSD1306 OLED Display (128x64)
// A4  --------------------------- SDA
// A5  --------------------------- SCL
//                                DFRobot Anemometer Kit
// A0  --------------------------- S (Yellow)
//                                5mm Green LED
// D2  --------------------------- +


// Include the required libraries.
#include <ArduinoBLE.h>
#include "DFRobot_OzoneSensor.h"
#include <Adafruit_BMP085.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Create the BLE service:
BLEService air_quality_service("19B10000-E8F2-537E-4F6C-D104768A1214");

// Create the data characteristic and allow the remote device (central) to read and write:
BLECharacteristic airDataCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite, 20);

// Define the collect number. The collection range is 1-100: 
#define COLLECT_NUMBER   20 

// To modify the I2C address, configure the hardware IIC address by the dial switch - A0, A1 (ADDRESS_0 for [0 0]), (ADDRESS_1 for [1 0]), (ADDRESS_2 for [0 1]), (ADDRESS_3 for [1 1]).              
/*  
    The default IIC device address is ADDRESS_3: 
       ADDRESS_0               0x70  
       ADDRESS_1               0x71
       ADDRESS_2               0x72
       ADDRESS_3               0x73
*/
#define Ozone_IICAddress ADDRESS_3

// Define the IIC Ozone Sensor.
DFRobot_OzoneSensor Ozone;

// Define the timer for the IIC Ozone Sensor.
unsigned long ozone_timer = 0;
unsigned long timer = 0;

// Define the BMP180 Barometric Pressure/Temperature/Altitude Sensor.
Adafruit_BMP085 bmp;

// Define the anemometer kit's voltage signal pin (yellow).
#define  anemometer_signal A0

// Define the notification LED.
#define notification 2

// Define the SSD1306 screen settings:
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET    -1 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// Define monochrome graphics:
static const unsigned char PROGMEM _error [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x01, 0x80, 0x01, 0x80,
0x06, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x30, 0x08, 0x01, 0x80, 0x10, 0x10, 0x03, 0xC0, 0x08,
0x30, 0x02, 0x40, 0x0C, 0x20, 0x02, 0x40, 0x04, 0x60, 0x02, 0x40, 0x06, 0x40, 0x02, 0x40, 0x02,
0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02,
0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x03, 0xC0, 0x02, 0x40, 0x01, 0x80, 0x02,
0x40, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x06, 0x20, 0x01, 0x80, 0x04, 0x30, 0x03, 0xC0, 0x0C,
0x10, 0x03, 0xC0, 0x08, 0x08, 0x01, 0x80, 0x10, 0x0C, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x60,
0x01, 0x80, 0x01, 0x80, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const unsigned char PROGMEM _weather [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00,
0x02, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, 0x10, 0xFC, 0x10, 0x00,
0x09, 0xFE, 0x60, 0x00, 0x07, 0x87, 0x80, 0x00, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 0x7E, 0x00,
0x02, 0x00, 0xFF, 0x80, 0x02, 0x01, 0xC1, 0xC0, 0x03, 0x01, 0x80, 0xC0, 0x02, 0x1F, 0x00, 0x60,
0x04, 0x3B, 0x00, 0x60, 0x18, 0x60, 0x00, 0x60, 0x10, 0x40, 0x00, 0x70, 0x00, 0xC0, 0x00, 0x18,
0x07, 0xC0, 0x00, 0x0C, 0x0F, 0xC0, 0x00, 0x04, 0x0C, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x04,
0x18, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0E, 0x00, 0x00, 0x38,
0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// Create a struct (data) including all air quality data parameters:
struct data {
  float _temperature;
  float _altitude;
  int ozoneConcentration;
  int _pressure;
  int wind_speed;
};

// Define the data holders: 
struct data air_Quality_Data;
float _temperature, _altitude, _real_altitude;
int ozoneConcentration, _pressure, _sea_level_pressure, wind_speed;

void setup(){
  Serial.begin(9600);
  // Wait for the serial monitor to be initialized so as to display this peripheral device's address information successfully:
  //while(!Serial);

  pinMode(notification, OUTPUT);

  // Start the timer:
  ozone_timer = millis();

  // Initialize the SSD1306 screen:
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(1000);
  
  // Check the IIC Ozone Sensor connection status:
  while(!Ozone.begin(Ozone_IICAddress)){
    Serial.println("IIC Ozone Sensor is not found!");
    err_msg();
    delay(1000);
  }
  Serial.println("\nIIC Ozone Sensor is connected successfully!\n");
  
  /*   
     Set IIC Ozone Sensor mode:
       MEASURE_MODE_AUTOMATIC    // active  mode
       MEASURE_MODE_PASSIVE      // passive mode
  */
  Ozone.SetModes(MEASURE_MODE_PASSIVE);

  // Check the BMP180 Barometric Pressure/Temperature/Altitude Sensor connection status: 
  while(!bmp.begin()){
    Serial.println("BMP180 Barometric Pressure/Temperature/Altitude Sensor is not found!");
    err_msg();
    delay(1000);
  }
  Serial.println("\nBMP180 Barometric Pressure/Temperature/Altitude Sensor is connected successfully!\n");

  // Check the BLE initialization status:
  while(!BLE.begin()){
    Serial.println("BLE initialization is failed!");
    err_msg();
  }
  Serial.println("\nBLE initialization is successful!\n");
  // Print this peripheral device's address information:
  Serial.print("MAC Address: "); Serial.println(BLE.address());
  Serial.print("Service UUID Address: "); Serial.println(air_quality_service.uuid());
  Serial.print("Characteristic UUID Address: ");Serial.println(airDataCharacteristic.uuid());
  Serial.println();

  // Set the local name this peripheral advertises: 
  BLE.setLocalName("AirQuality");
  // Set the UUID for the service this peripheral advertises:
  BLE.setAdvertisedService(air_quality_service);

  // Add the given characteristic to the service:
  air_quality_service.addCharacteristic(airDataCharacteristic);

  // Add the service to the device:
  BLE.addService(air_quality_service);

  // Assign event handlers for connected, disconnected devices to this peripheral:
  BLE.setEventHandler(BLEConnected, blePeripheralConnectHandler);
  BLE.setEventHandler(BLEDisconnected, blePeripheralDisconnectHandler);

  // Set the initial value for the given characteristic: 
  airDataCharacteristic.writeValue((byte)0);

  // Start advertising:
  BLE.advertise();
  Serial.println(("Bluetooth device active, waiting for connections..."));

  display.clearDisplay();   
  display.setTextSize(2); 
  display.setTextColor(SSD1306_BLACK, SSD1306_WHITE);
  display.setCursor(0,0);
  display.println("Heating...");
  display.display();
}


void loop(){
  // Wait until the IIC Ozone Sensor heats for 3 minutes.
  while (millis() - ozone_timer < 3*60*1000){ if (millis() - timer > 1000){ timer = millis(); } }
  // Transmit the collected weather (air quality) data to Raspberry Pi over BLE every 20 seconds.
  if (millis() - timer > 20000){
    update_characteristics();
    // After updating characteristics, notify the user.
    display.clearDisplay();   
    display.drawBitmap(48, 0, _weather, 32, 32, SSD1306_WHITE);
    display.setTextSize(1); 
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0,40);
    display.println("Given BLE characteristics are updated successfully!");
    display.display();
    digitalWrite(notification, HIGH); delay(1500); digitalWrite(notification, LOW);  
    timer = millis();
  }
  
  collect_ozone_concentration();
  delay(1000);
  collect_BMP180_data();
  delay(500);
  collect_anemometer_data();
  delay(250);
  
  // Show the collected weather (air quality) data on the screen.
  show_weather_data();

  // Poll for BLE events:
  BLE.poll();
}

void collect_ozone_concentration(){
  ozoneConcentration = Ozone.ReadOzoneData(COLLECT_NUMBER);
  Serial.print("\n\nOzone Concentration => "); Serial.print(ozoneConcentration); Serial.println(" PPB");
}

void collect_BMP180_data(){
  _temperature = bmp.readTemperature();
  _pressure = bmp.readPressure();
  // Calculate altitude assuming 'standard' barometric pressure of 1013.25 millibars (101325 Pascal).
  _altitude = bmp.readAltitude();
  _sea_level_pressure = bmp.readSealevelPressure();
  // To get a more precise altitude measurement, use the current sea level pressure, which will vary with the weather conditions. 
  _real_altitude = bmp.readAltitude(101500);
  // Print the data generated by the BMP180 Barometric Pressure/Temperature/Altitude Sensor.
  Serial.print("Temperature => "); Serial.print(_temperature); Serial.println(" *C");
  Serial.print("Pressure => "); Serial.print(_pressure); Serial.println(" Pa");
  Serial.print("Altitude => "); Serial.print(_altitude); Serial.println(" meters");
  Serial.print("Pressure at sea level (calculated) => "); Serial.print(_sea_level_pressure); Serial.println(" Pa");
  Serial.print("Real Altitude => "); Serial.print(_real_altitude); Serial.println(" meters");
}

void collect_anemometer_data(){
  float outvoltage = (analogRead(A0) * (3.3 / 1023.0)) + 0.1;
  // Calculate the wind speed (level) [1 - 30] according to the output voltage: 
  wind_speed = 6 * outvoltage;
  // Print the data generated by the Anemometer Kit.
  Serial.print("Wind Speed (Level) => "); Serial.print(wind_speed);
}

void show_weather_data(){
  display.clearDisplay();   
  display.setTextSize(1); 
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,8); 
  display.println("Ozone Con. => " + String(ozoneConcentration) + " PPB");
  display.println("Wind Speed => " + String(wind_speed));
  display.println("Temp. => " + String(_temperature) + " *C");
  display.println("Pressure => " + String(_pressure) + " Pa");
  display.println("Altitude => " + String(_altitude) + " m");
  display.display();  
}

void err_msg(){
  // Show the error message on the SSD1306 screen.
  display.clearDisplay();   
  display.drawBitmap(48, 0, _error, 32, 32, SSD1306_WHITE);
  display.setTextSize(1); 
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,40); 
  display.println("Check the serial monitor to see the error!");
  display.display();  
}

void blePeripheralConnectHandler(BLEDevice central) {
  // Central connected event handler:
  Serial.print("Connected event, central: ");
  Serial.println(central.address());
}

void blePeripheralDisconnectHandler(BLEDevice central) {
  // Central disconnected event handler:
  Serial.print("Disconnected event, central: ");
  Serial.println(central.address());
}

void update_characteristics(){
  // Update the data characteristic with the data struct:
  air_Quality_Data._temperature = _temperature;
  air_Quality_Data._altitude = _altitude;
  air_Quality_Data.ozoneConcentration = ozoneConcentration;
  air_Quality_Data._pressure = _pressure;
  air_Quality_Data.wind_speed = wind_speed;
  airDataCharacteristic.writeValue((byte *) &air_Quality_Data, 20);
}

ozone-enabled_weather_station_run_model.ino

Arduino
         /////////////////////////////////////////////  
        //     O3-enabled BLE Weather Station      //
       //   Predicting Air Quality w/ TensorFlow  //
      //             ---------------             //
     //          (Arduino Nano 33 BLE)          //           
    //             by Kutluhan Aktar           // 
   //                                         //
  /////////////////////////////////////////////

//
// Via Nano 33 BLE, collate local weather data, build and train a TensorFlow neural network model, and run the model to predict air quality.
//
// For more information:
// https://www.theamplituhedron.com/projects/O3_enabled_BLE_Weather_Station_Predicting_Air_Quality_w_TensorFlow/
//
//
// Connections
// Arduino Nano 33 BLE :  
//                                DFRobot IIC Ozone Sensor
// A4  --------------------------- SDA
// A5  --------------------------- SCL
//                                BMP180 Barometric Pressure/Temperature/Altitude Sensor
// A4  --------------------------- SDA
// A5  --------------------------- SCL
//                                SSD1306 OLED Display (128x64)
// A4  --------------------------- SDA
// A5  --------------------------- SCL
//                                DFRobot Anemometer Kit
// A0  --------------------------- S (Yellow)
//                                5mm Green LED
// D2  --------------------------- +
//                                Button (6x6)
// D3  --------------------------- +


// Include the required libraries.
#include "DFRobot_OzoneSensor.h"
#include <Adafruit_BMP085.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Import the required TensorFlow modules.
#include "TensorFlowLite.h"
#include "tensorflow/lite/micro/kernels/micro_ops.h"
#include "tensorflow/lite/micro/micro_error_reporter.h"
#include "tensorflow/lite/micro/micro_interpreter.h"
#include "tensorflow/lite/micro/all_ops_resolver.h"
#include "tensorflow/lite/version.h"

// Import the converted TensorFlow Lite model.
#include "air_quality_level.h"

// TFLite globals, used for compatibility with Arduino-style sketches:
namespace {
  tflite::ErrorReporter* error_reporter = nullptr;
  const tflite::Model* model = nullptr;
  tflite::MicroInterpreter* interpreter = nullptr;
  TfLiteTensor* model_input = nullptr;
  TfLiteTensor* model_output = nullptr;

  // Create an area of memory to use for input, output, and other TensorFlow arrays.
  constexpr int kTensorArenaSize = 15 * 1024;
  uint8_t tensor_arena[kTensorArenaSize];
} // namespace

// Define the threshold value for the model outputs (results).
float threshold = 0.75;

// Define the air quality level (class) names:
String classes[] = {"Good", "Moderate", "Unhealthy"};

// Define the collect number. The collection range is 1-100: 
#define COLLECT_NUMBER   20 

// To modify the I2C address, configure the hardware IIC address by the dial switch - A0, A1 (ADDRESS_0 for [0 0]), (ADDRESS_1 for [1 0]), (ADDRESS_2 for [0 1]), (ADDRESS_3 for [1 1]).              
/*  
    The default IIC device address is ADDRESS_3: 
       ADDRESS_0               0x70  
       ADDRESS_1               0x71
       ADDRESS_2               0x72
       ADDRESS_3               0x73
*/
#define Ozone_IICAddress ADDRESS_3

// Define the IIC Ozone Sensor.
DFRobot_OzoneSensor Ozone;

// Define the timer for the IIC Ozone Sensor.
unsigned long ozone_timer = 0;
unsigned long timer = 0;

// Define the BMP180 Barometric Pressure/Temperature/Altitude Sensor.
Adafruit_BMP085 bmp;

// Define the anemometer kit's voltage signal pin (yellow).
#define  anemometer_signal A0

// Define the notification LED.
#define notification 2

// Define the model initialization button.
#define run_model 3

// Define the SSD1306 screen settings:
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET    -1 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// Define monochrome graphics:
static const unsigned char PROGMEM _error [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x01, 0x80, 0x01, 0x80,
0x06, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x30, 0x08, 0x01, 0x80, 0x10, 0x10, 0x03, 0xC0, 0x08,
0x30, 0x02, 0x40, 0x0C, 0x20, 0x02, 0x40, 0x04, 0x60, 0x02, 0x40, 0x06, 0x40, 0x02, 0x40, 0x02,
0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02,
0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x03, 0xC0, 0x02, 0x40, 0x01, 0x80, 0x02,
0x40, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x06, 0x20, 0x01, 0x80, 0x04, 0x30, 0x03, 0xC0, 0x0C,
0x10, 0x03, 0xC0, 0x08, 0x08, 0x01, 0x80, 0x10, 0x0C, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x60,
0x01, 0x80, 0x01, 0x80, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const unsigned char PROGMEM _good [] = {
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00,
0x01, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x3F,
0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF,
0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0xFF,
0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0,
0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFC, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x7F, 0xF0, 0x03,
0xF8, 0x1C, 0x7F, 0xE0, 0x01, 0xF1, 0x1C, 0xFE, 0x00, 0x00, 0x00, 0xF8, 0xBC, 0x00, 0x00, 0x00,
0x79, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x3C,
0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00,
0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00,
0x1F, 0x7F, 0x70, 0x00, 0x00, 0x40, 0x67, 0x0C, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x01,
0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
static const unsigned char PROGMEM _moderate [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00,
0x00, 0x40, 0x18, 0x00, 0x00, 0x00, 0xC0, 0x08, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00,
0x80, 0x04, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x03, 0x86, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00,
0x04, 0x00, 0x08, 0x00, 0x80, 0x08, 0x00, 0x10, 0x00, 0x40, 0x08, 0x00, 0x10, 0x00, 0x78, 0x10,
0x00, 0x10, 0x00, 0x46, 0x00, 0x00, 0x20, 0x00, 0x41, 0x80, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00,
0xE0, 0x00, 0x00, 0x40, 0x01, 0x00, 0x60, 0x00, 0x40, 0x02, 0x00, 0x18, 0x00, 0x20, 0x02, 0x00,
0x08, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x40, 0x3F, 0xFF, 0xF0,
0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x06,
0x00, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};
static const unsigned char PROGMEM _unhealthy [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x00, 0x7F, 0x1C,
0x00, 0x00, 0x00, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x7F, 0xE7, 0x80, 0x00, 0x00, 0x07, 0xF3, 0x80,
0x00, 0x00, 0x00, 0x78, 0x60, 0x00, 0x00, 0x00, 0x3F, 0x74, 0x00, 0x00, 0x00, 0x26, 0x7C, 0x00,
0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x01, 0x86, 0x00, 0x00, 0x00, 0x01, 0x86, 0x00, 0x00,
0x00, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00,
0x01, 0xC7, 0x80, 0x00, 0x00, 0x01, 0xC7, 0x80, 0x00, 0x02, 0x03, 0xC7, 0x80, 0x00, 0x02, 0x03,
0xC7, 0x80, 0x00, 0x02, 0x0B, 0xE7, 0x80, 0x00, 0x02, 0x53, 0xE7, 0x80, 0x00, 0x07, 0xFF, 0xEF,
0x80, 0x00, 0x0F, 0xFF, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xFF, 0xE0, 0x00, 0x08, 0x08, 0x3F, 0xE0,
0x00, 0x08, 0x08, 0x3F, 0xE0, 0x00, 0x0F, 0xFF, 0xFF, 0xE0, 0x00, 0x08, 0x08, 0x3F, 0xE0, 0x00,
0x08, 0x08, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x08, 0x0F, 0xFF, 0xFF, 0xE0, 0x08, 0x1F,
0xFF, 0xFF, 0xE0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

// Define the data holders: 
float _temperature, _altitude, _real_altitude;
int ozoneConcentration, _pressure, _sea_level_pressure, wind_speed;

void setup(){
  Serial.begin(9600);

  pinMode(notification, OUTPUT);
  pinMode(run_model, INPUT_PULLUP);

  // Start the timer:
  ozone_timer = millis();

  // Initialize the SSD1306 screen:
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(1000);
  
  // Check the IIC Ozone Sensor connection status:
  while(!Ozone.begin(Ozone_IICAddress)){
    Serial.println("IIC Ozone Sensor is not found!");
    err_msg();
    delay(1000);
  }
  Serial.println("\nIIC Ozone Sensor is connected successfully!\n");
  
  /*   
     Set IIC Ozone Sensor mode:
       MEASURE_MODE_AUTOMATIC    // active  mode
       MEASURE_MODE_PASSIVE      // passive mode
  */
  Ozone.SetModes(MEASURE_MODE_PASSIVE);

  // Check the BMP180 Barometric Pressure/Temperature/Altitude Sensor connection status: 
  while(!bmp.begin()){
    Serial.println("BMP180 Barometric Pressure/Temperature/Altitude Sensor is not found!");
    err_msg();
    delay(1000);
  }
  Serial.println("\nBMP180 Barometric Pressure/Temperature/Altitude Sensor is connected successfully!\n");

  // TensorFlow Lite Model settings:
  
  // Set up logging (will report to Serial, even within TFLite functions).
  static tflite::MicroErrorReporter micro_error_reporter;
  error_reporter = &micro_error_reporter;

  // Map the model into a usable data structure.
  model = tflite::GetModel(air_quality_level);
  if (model->version() != TFLITE_SCHEMA_VERSION) {
    error_reporter->Report("Model version does not match Schema");
    while(1);
  }

  // This pulls in all the operation implementations we need.
  // NOLINTNEXTLINE(runtime-global-variables)
  static tflite::AllOpsResolver resolver;

  // Build an interpreter to run the model.
  static tflite::MicroInterpreter static_interpreter(
    model, resolver, tensor_arena, kTensorArenaSize,
    error_reporter);
  interpreter = &static_interpreter;

  // Allocate memory from the tensor_arena for the model's tensors.
  TfLiteStatus allocate_status = interpreter->AllocateTensors();
  if (allocate_status != kTfLiteOk) {
    error_reporter->Report("AllocateTensors() failed");
    while(1);
  }

  // Assign model input and output buffers (tensors) to pointers.
  model_input = interpreter->input(0);
  model_output = interpreter->output(0);

  delay(1000);
  display.clearDisplay();   
  display.setTextSize(2); 
  display.setTextColor(SSD1306_BLACK, SSD1306_WHITE);
  display.setCursor(0,0);
  display.println("Heating...");
  display.display();
}

void loop(){
  // Wait until the IIC Ozone Sensor heats for 3 minutes.
  while (millis() - ozone_timer < 3*60*1000){ if (millis() - timer > 1000){ timer = millis(); } }

  collect_ozone_concentration();
  delay(1000);
  collect_BMP180_data();
  delay(500);
  collect_anemometer_data();
  delay(250);
  
  // Show the collected weather (air quality) data on the screen.
  show_weather_data();

 // Execute the TensorFlow Lite model to make predictions on the air quality levels (classes). 
 if(digitalRead(run_model) == LOW) run_inference_to_make_predictions();
}

void run_inference_to_make_predictions(){    
    // Scale (normalize) values (local weather data) depending on the model and copy them to the input buffer (tensor):
    model_input->data.f[0] = _temperature / 100;
    model_input->data.f[1] = _altitude / 100;
    model_input->data.f[2] = ozoneConcentration / 1000;
    model_input->data.f[3] = _pressure / 100000;
    model_input->data.f[4] = wind_speed / 30;
    
    // Run inference:
    TfLiteStatus invoke_status = interpreter->Invoke();
    if (invoke_status != kTfLiteOk) {
      error_reporter->Report("Invoke failed on the given input.");
    }

    // Read predicted y values (air quality classes) from the output buffer (tensor): 
    for(int i = 0; i<3; i++){
      if(model_output->data.f[i] >= threshold){
        // Display the detection result (class).
        display.clearDisplay(); 
        if(i == 0) display.drawBitmap(44, 0, _good, 40, 40, SSD1306_WHITE);
        if(i == 1) display.drawBitmap(44, 0, _moderate, 40, 40, SSD1306_WHITE);
        if(i == 2) display.drawBitmap(44, 0, _unhealthy, 40, 40, SSD1306_WHITE);
        // Print:
        int str_x = classes[i].length() * 11;
        display.setTextSize(2); 
        display.setTextColor(SSD1306_WHITE);
        display.setCursor((SCREEN_WIDTH - str_x) / 2, 48);
        display.println(classes[i]);
        display.display();
        digitalWrite(notification, HIGH); delay(1500); digitalWrite(notification, LOW); 
      }
    }
    // Exit and clear.
    delay(3000);

}

void collect_ozone_concentration(){
  ozoneConcentration = Ozone.ReadOzoneData(COLLECT_NUMBER);
  Serial.print("\n\nOzone Concentration => "); Serial.print(ozoneConcentration); Serial.println(" PPB");
}

void collect_BMP180_data(){
  _temperature = bmp.readTemperature();
  _pressure = bmp.readPressure();
  // Calculate altitude assuming 'standard' barometric pressure of 1013.25 millibars (101325 Pascal).
  _altitude = bmp.readAltitude();
  _sea_level_pressure = bmp.readSealevelPressure();
  // To get a more precise altitude measurement, use the current sea level pressure, which will vary with the weather conditions. 
  _real_altitude = bmp.readAltitude(101500);
  // Print the data generated by the BMP180 Barometric Pressure/Temperature/Altitude Sensor.
  Serial.print("Temperature => "); Serial.print(_temperature); Serial.println(" *C");
  Serial.print("Pressure => "); Serial.print(_pressure); Serial.println(" Pa");
  Serial.print("Altitude => "); Serial.print(_altitude); Serial.println(" meters");
  Serial.print("Pressure at sea level (calculated) => "); Serial.print(_sea_level_pressure); Serial.println(" Pa");
  Serial.print("Real Altitude => "); Serial.print(_real_altitude); Serial.println(" meters");
}

void collect_anemometer_data(){
  float outvoltage = (analogRead(A0) * (3.3 / 1023.0)) + 0.1;
  // Calculate the wind speed (level) [1 - 30] according to the output voltage: 
  wind_speed = 6 * outvoltage;
  // Print the data generated by the Anemometer Kit.
  Serial.print("Wind Speed (Level) => "); Serial.print(wind_speed);
}

void show_weather_data(){
  display.clearDisplay();   
  display.setTextSize(1); 
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,8); 
  display.println("Ozone Con. => " + String(ozoneConcentration) + " PPB");
  display.println("Wind Speed => " + String(wind_speed));
  display.println("Temp. => " + String(_temperature) + " *C");
  display.println("Pressure => " + String(_pressure) + " Pa");
  display.println("Altitude => " + String(_altitude) + " m");
  display.display();  
}

void err_msg(){
  // Show the error message on the SSD1306 screen.
  display.clearDisplay();   
  display.drawBitmap(48, 0, _error, 32, 32, SSD1306_WHITE);
  display.setTextSize(1); 
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,40); 
  display.println("Check the serial monitor to see the error!");
  display.display();  
}

air_quality_level.h

C/C++
#ifndef AIR_QUALITY_LEVEL_H
#define AIR_QUALITY_LEVEL_H


unsigned int air_quality_level_len = 38648;
unsigned char air_quality_level[] = {
 0x1c, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x14, 0x00, 0x20, 0x00,
  0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00,
  0x18, 0x00, 0x1c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
  0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00,
  0x20, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00,
  0x02, 0x00, 0x00, 0x00, 0x8c, 0x03, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00,
  0x01, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
  0xa0, 0x96, 0x00, 0x00, 0x9c, 0x96, 0x00, 0x00, 0xcc, 0x93, 0x00, 0x00,
  0x58, 0x92, 0x00, 0x00, 0xe4, 0x91, 0x00, 0x00, 0x94, 0x87, 0x00, 0x00,
  0x40, 0x07, 0x00, 0x00, 0xec, 0x03, 0x00, 0x00, 0x80, 0x96, 0x00, 0x00,
  0x7c, 0x96, 0x00, 0x00, 0x78, 0x96, 0x00, 0x00, 0x74, 0x96, 0x00, 0x00,
  0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x08, 0x00,
  0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
  0x13, 0x00, 0x00, 0x00, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x75, 0x6e, 0x74,
  0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00,
  0x9e, 0x6c, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
  0x31, 0x2e, 0x35, 0x2e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x4d, 0x4c, 0x49, 0x52,
  0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x00,
  0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00,
  0x10, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
  0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00,
  0x58, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x94, 0x95, 0x00, 0x00,
  0x24, 0x95, 0x00, 0x00, 0xa0, 0x92, 0x00, 0x00, 0x38, 0x91, 0x00, 0x00,
  0xdc, 0x90, 0x00, 0x00, 0x88, 0x86, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00,
  0xa4, 0x02, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00,
  0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
  0x28, 0x02, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
  0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e,
  0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00,
  0x07, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
  0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
  0x04, 0x00, 0x00, 0x00, 0x7a, 0x6d, 0xff, 0xff, 0x00, 0x00, 0x80, 0x3f,
  0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x09, 0x00, 0x00, 0x00, 0xf4, 0xfd, 0xff, 0xff, 0x19, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x00, 0x28, 0x6b, 0xff, 0xff,
  0x14, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
  0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
  0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
  0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00,
  0x14, 0x6b, 0xff, 0xff, 0x5e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08,
  0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
  0x2c, 0x6b, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
  0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
  0x03, 0x00, 0x00, 0x00, 0x9c, 0x6b, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00,
  0x0a, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00,
  0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
  0x03, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,
  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65,
  0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x3b, 0x73, 0x65,
  0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e,
  0x73, 0x65, 0x5f, 0x32, 0x2f, 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64,
  0x00, 0x00, 0x00, 0x00, 0x8c, 0x6e, 0xff, 0xff, 0x00, 0x00, 0x0e, 0x00,
  0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00,
  0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00,
  0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0xff, 0xff, 0xff,
  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
  0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
  0x02, 0x00, 0x00, 0x00, 0x50, 0x6c, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00,
  0x09, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
  0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
  0x40, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,
  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65,
  0x5f, 0x31, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x3b, 0x73, 0x65,
  0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e,
  0x73, 0x65, 0x5f, 0x31, 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x3b, 0x73, 0x65,
  0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e,
  0x73, 0x65, 0x5f, 0x31, 0x2f, 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64,
  0x00, 0x00, 0x00, 0x00, 0x58, 0x6f, 0xff, 0xff, 0x00, 0x00, 0x0e, 0x00,
  0x16, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00,
  0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00,
  0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
  0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
  0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x0c, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x04, 0x00,
  0x0c, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
  0x01, 0x00, 0x00, 0x00, 0x40, 0x6d, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00,
  0x08, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
  0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
  0x80, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,
  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65,
  0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x3b, 0x73, 0x65, 0x71, 0x75,
  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65,
  0x2f, 0x52, 0x65, 0x6c, 0x75, 0x3b, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e,
  0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x2f, 0x42,
  0x69, 0x61, 0x73, 0x41, 0x64, 0x64, 0x00, 0x00, 0x68, 0x6d, 0xff, 0xff,
  0x3a, 0x70, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
  0x2c, 0x54, 0x7f, 0x3f, 0xdb, 0x62, 0x6c, 0x3f, 0x60, 0x8c, 0x71, 0x3f,
  0xb0, 0x2e, 0xdf, 0x3d, 0x8c, 0xb8, 0x9a, 0x3d, 0x4e, 0xe8, 0x12, 0xbf,
  0xf4, 0x95, 0x91, 0xbe, 0xce, 0x4b, 0x28, 0xbf, 0x44, 0x1b, 0x93, 0xbe,
  0x5b, 0xdd, 0x4f, 0x3f, 0x84, 0xdc, 0xb4, 0xbf, 0x50, 0x0b, 0x9f, 0x3d,
  0x70, 0x15, 0x94, 0x3e, 0x12, 0x9b, 0x31, 0x3e, 0xad, 0xcb, 0x7e, 0xbf,
  0xd0, 0xd4, 0x35, 0x3f, 0xb0, 0xa0, 0x82, 0xbe, 0x24, 0xc7, 0xdd, 0xbd,
  0x64, 0xc9, 0xde, 0xbe, 0xd1, 0x8e, 0x2b, 0xbe, 0xa0, 0xd1, 0x4e, 0xbc,
  0x79, 0x75, 0x47, 0x3e, 0xe8, 0x26, 0x06, 0xbe, 0xfe, 0x78, 0x4a, 0x3c,
  0x9f, 0x6c, 0x74, 0xbe, 0x8a, 0x44, 0x53, 0xbe, 0xae, 0x8b, 0x8e, 0xbf,
  0xea, 0x6e, 0x8b, 0xbd, 0x0f, 0xc9, 0x84, 0x3f, 0x08, 0x65, 0x50, 0x3e,
  0x6f, 0x55, 0x96, 0xbe, 0x28, 0x15, 0x01, 0xbd, 0x7f, 0x17, 0x4b, 0xbf,
  0xf9, 0x63, 0x5b, 0xbe, 0xa0, 0x3d, 0xdd, 0x3d, 0x39, 0x3e, 0xd2, 0x3e,
  0x7e, 0x2e, 0x83, 0x3f, 0xa9, 0x09, 0x25, 0xbf, 0x70, 0x40, 0x51, 0x3d,
  0x77, 0x25, 0x14, 0xbe, 0xc5, 0xf0, 0xbc, 0xbf, 0x9a, 0x3d, 0xb0, 0xbd,
  0x22, 0x15, 0x42, 0xbe, 0xf0, 0xc5, 0x9f, 0xbe, 0x07, 0xad, 0x19, 0xbe,
  0x54, 0x4f, 0x87, 0x3f, 0x87, 0x32, 0x81, 0x3f, 0x4a, 0x1f, 0x31, 0xbe,
  0xf6, 0x0d, 0x0a, 0x3e, 0xa9, 0x51, 0xf5, 0xbe, 0xc9, 0x7f, 0xcc, 0xbd,
  0x7a, 0x4d, 0x70, 0x3e, 0x40, 0xb2, 0x17, 0xbd, 0xac, 0xe6, 0x6d, 0x3e,
  0x36, 0x80, 0x15, 0x3e, 0xd0, 0xdb, 0x11, 0xbe, 0xc8, 0xf9, 0x91, 0x3e,
  0x00, 0x01, 0x6d, 0x3e, 0x65, 0x83, 0xa7, 0xbf, 0x07, 0xff, 0x7d, 0x3e,
  0xf5, 0x7c, 0x9f, 0xbf, 0x39, 0x78, 0x84, 0xbc, 0x0a, 0x39, 0xb3, 0xbd,
  0x22, 0x82, 0x48, 0xbe, 0x6f, 0x63, 0x1d, 0xc0, 0x83, 0x15, 0xf2, 0xbf,
  0x1a, 0xf7, 0x04, 0xbf, 0xec, 0xb2, 0x03, 0x3e, 0x20, 0x32, 0xb7, 0xbc,
  0x1f, 0xda, 0xc5, 0x3c, 0xd8, 0x1f, 0x62, 0x3d, 0x2e, 0x11, 0x19, 0xbf,
  0x43, 0xd0, 0x88, 0xbe, 0xa0, 0xce, 0x1d, 0xc0, 0xea, 0xdf, 0xf2, 0x3e,
  0x4e, 0x4f, 0x2f, 0x3e, 0xe4, 0xa0, 0xfa, 0xbd, 0xc4, 0x7d, 0xc0, 0x3d,
  0x5a, 0xa6, 0x8d, 0x3e, 0xba, 0xf2, 0x21, 0xc0, 0xf2, 0x6b, 0xe4, 0xbd,
  0x8e, 0x61, 0xb1, 0xbd, 0x14, 0x16, 0xd9, 0xbe, 0x36, 0x2a, 0x4f, 0xbf,
  0xca, 0xaf, 0xf1, 0xbd, 0x06, 0xe2, 0x7c, 0x3e, 0x2c, 0x68, 0x49, 0xbe,
  0x34, 0x9b, 0x65, 0x3e, 0x52, 0xa2, 0x45, 0x3e, 0x77, 0x2f, 0x88, 0xbe,
  0x88, 0xc9, 0x91, 0x3e, 0x75, 0x92, 0x2b, 0x3e, 0xb1, 0x2b, 0x0b, 0xc0,
  0xb2, 0x18, 0x77, 0x3e, 0x30, 0xf2, 0xd9, 0xbd, 0x20, 0xae, 0x0b, 0xbf,
  0xd8, 0x35, 0x64, 0x3e, 0xd8, 0xb4, 0x06, 0xbd, 0xed, 0xcc, 0x0c, 0x3d,
  0x69, 0xa1, 0x9b, 0xbe, 0xc5, 0xde, 0x0b, 0xc0, 0x02, 0xfb, 0x7f, 0xbd,
  0x15, 0x34, 0xe9, 0x3d, 0x77, 0x9c, 0x15, 0x3d, 0x6b, 0x13, 0x9f, 0x3e,
  0x09, 0x7d, 0x1b, 0xbe, 0x32, 0xf5, 0x7b, 0xbe, 0x03, 0x79, 0x42, 0xbe,
  0xd8, 0xe1, 0x2c, 0x3e, 0xc0, 0x68, 0x1f, 0xc0, 0x59, 0xb7, 0x08, 0xc0,
  0xdc, 0x60, 0xee, 0x3d, 0x20, 0x65, 0x24, 0x3c, 0x28, 0x3f, 0x2f, 0xbf,
  0x66, 0x17, 0x88, 0x3d, 0xb7, 0xb0, 0x12, 0x3d, 0xb4, 0x35, 0x61, 0x3e,
  0x65, 0x25, 0x43, 0xbe, 0x23, 0x4a, 0x81, 0x3c, 0x6d, 0x60, 0x03, 0xbe,
  0xfb, 0x4a, 0x89, 0xbe, 0xe6, 0xd5, 0xf7, 0xbd, 0x2b, 0xa4, 0xd8, 0x3e,
  0xd3, 0x38, 0xa1, 0x3d, 0x9f, 0xc2, 0x86, 0x3c, 0x33, 0x41, 0x07, 0x3e,
  0x15, 0x36, 0x07, 0xbf, 0x02, 0xc0, 0x05, 0xbe, 0xbf, 0xa7, 0xfd, 0x3e,
  0x9a, 0x5b, 0x09, 0x3f, 0x01, 0x90, 0x40, 0xbf, 0xe4, 0xf5, 0x07, 0x3e,
  0x4e, 0x58, 0x35, 0x3e, 0x2d, 0xb8, 0x01, 0x3f, 0xf0, 0xb4, 0x5d, 0x3e,
  0x94, 0x6d, 0x8a, 0x3e, 0x04, 0xf7, 0xca, 0xbd, 0xf2, 0xce, 0xc7, 0x3d,
  0x0e, 0xd9, 0xa9, 0x3d, 0x6d, 0x06, 0x65, 0xbe, 0xd4, 0x33, 0x46, 0x3e,
  0xc8, 0x94, 0xa8, 0xbd, 0x67, 0xb1, 0xf6, 0x3e, 0x21, 0xfe, 0x1f, 0x3e,
  0x0c, 0x51, 0x82, 0xbe, 0x4a, 0x2c, 0x6c, 0xbe, 0x77, 0x2d, 0x96, 0x3e,
  0xa6, 0x5e, 0x4b, 0x3f, 0xfa, 0xe2, 0x3b, 0xbe, 0x56, 0x6f, 0x73, 0xbe,
  0xd2, 0x04, 0x53, 0xbe, 0x76, 0x6d, 0x45, 0x3c, 0x1d, 0x40, 0x84, 0x3e,
  0xd6, 0x4e, 0x31, 0x3e, 0x5e, 0x53, 0xc0, 0x3e, 0x27, 0x9c, 0x4b, 0xbe,
  0xdf, 0xca, 0x03, 0xbd, 0x39, 0x1b, 0x7b, 0xbe, 0xa0, 0x30, 0xf9, 0x3c,
  0xf4, 0x2c, 0x43, 0x3f, 0x15, 0x00, 0xc3, 0x3e, 0xfe, 0x04, 0x3f, 0xbe,
  0x4d, 0x7d, 0x53, 0xbe, 0x0f, 0xdc, 0x6c, 0x3e, 0x30, 0x67, 0xb1, 0x3e,
  0x15, 0xa4, 0x07, 0x3f, 0x8e, 0xed, 0x7a, 0xbe, 0xf7, 0x33, 0x77, 0x3e,
  0xc6, 0x9b, 0xdf, 0x3d, 0x21, 0x23, 0xa9, 0xbe, 0xb7, 0x2d, 0x06, 0xbe,
  0x3e, 0xba, 0x8a, 0xbe, 0x94, 0xe9, 0xbd, 0x3d, 0x8c, 0x2f, 0xcc, 0x3d,
  0x82, 0x42, 0xf1, 0x3e, 0xae, 0xc4, 0x42, 0x3e, 0xc4, 0x17, 0xe6, 0x3d,
  0x80, 0x12, 0x1a, 0x3f, 0x19, 0xc6, 0x26, 0xbe, 0xe1, 0xaa, 0x83, 0xbe,
  0x7d, 0x5c, 0x8a, 0xbe, 0x0a, 0xf9, 0x67, 0xbe, 0xf5, 0x01, 0xd7, 0xbc,
  0xe0, 0xf5, 0x9f, 0xbc, 0xb0, 0x11, 0x08, 0x3d, 0xbc, 0x69, 0x61, 0x3e,
  0x42, 0x0c, 0x94, 0x3e, 0x6e, 0xe2, 0x91, 0x3e, 0xb1, 0x32, 0x08, 0x3e,
  0x91, 0x19, 0x28, 0xbd, 0x91, 0x34, 0x48, 0x3f, 0x14, 0xcd, 0x73, 0xbe,
  0x32, 0x71, 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
  0x14, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
  0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
  0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x64,
  0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75,
  0x6c, 0x00, 0x00, 0x00, 0xb8, 0x70, 0xff, 0xff, 0x8a, 0x73, 0xff, 0xff,
  0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x18, 0x5b, 0xe7, 0x3c,
  0xb4, 0x09, 0x27, 0xbd, 0xd7, 0x1a, 0x94, 0xbd, 0xc3, 0x24, 0xf6, 0xbc,
  0x3e, 0x95, 0x7b, 0xbe, 0xa8, 0xa4, 0x88, 0xbc, 0xe7, 0xac, 0xa0, 0xbd,
  0xd3, 0x54, 0x1c, 0xbf, 0xb4, 0xa6, 0x7c, 0x3d, 0x3c, 0x88, 0x8c, 0x3e,
  0x74, 0xbf, 0x97, 0xbd, 0x8c, 0x1d, 0x6b, 0x3d, 0x40, 0x6e, 0x3f, 0x3d,
  0x8a, 0xb3, 0x43, 0x3e, 0x9f, 0x44, 0xcf, 0xbf, 0x67, 0x9e, 0x9e, 0xbd,
  0xc5, 0xe3, 0x02, 0x3e, 0x77, 0x58, 0xfa, 0x3e, 0x9d, 0xf5, 0x1b, 0xbe,
  0x2d, 0xe7, 0x31, 0x3e, 0xc6, 0x87, 0x9f, 0x3d, 0xc0, 0xea, 0x62, 0xbc,
  0x7d, 0xc0, 0x29, 0xbd, 0xad, 0x15, 0x25, 0x3e, 0x96, 0xbb, 0xda, 0xbd,
  0xc8, 0x99, 0x03, 0xbe, 0x0d, 0xa0, 0xa9, 0xbd, 0x78, 0x99, 0xa7, 0xbc,
  0x49, 0x1e, 0x76, 0xbf, 0x7e, 0x8c, 0xbe, 0x3d, 0x1d, 0xb3, 0xf9, 0xbd,
  0xe0, 0xcf, 0x1a, 0xbd, 0x4e, 0xa2, 0x9f, 0xbe, 0x6a, 0x02, 0xd5, 0x3e,
  0x1f, 0xfa, 0x06, 0x3e, 0xf9, 0x40, 0x40, 0xbf, 0x2a, 0x54, 0xda, 0x3e,
  0x26, 0x11, 0xe7, 0xbd, 0x7d, 0xe2, 0xd5, 0xbe, 0xd5, 0xe7, 0x25, 0xbe,
  0xa2, 0xe9, 0xd0, 0xbe, 0xbc, 0x9e, 0x66, 0xbd, 0x90, 0xc3, 0xca, 0xbc,
  0x81, 0xeb, 0xe9, 0xbd, 0xd7, 0x65, 0x27, 0x3e, 0x57, 0xc6, 0x93, 0x3d,
  0x3f, 0xcc, 0x17, 0xbe, 0x51, 0xb6, 0x88, 0xbe, 0xd0, 0xed, 0xed, 0xbc,
  0xd4, 0xa6, 0x05, 0xbe, 0xd2, 0x9d, 0xbc, 0x3b, 0x55, 0x1a, 0x12, 0x3e,
  0x91, 0xaa, 0x61, 0xbf, 0x25, 0xfc, 0x21, 0xbf, 0x23, 0xb4, 0x1d, 0xbe,
  0xc8, 0xfd, 0xc4, 0x3c, 0xf0, 0x66, 0xc1, 0x3e, 0xfb, 0x28, 0x33, 0x3e,
  0x67, 0x80, 0x25, 0x3e, 0xd9, 0x8f, 0x5d, 0x3e, 0x74, 0xe2, 0x55, 0xbe,
  0x29, 0x5f, 0x8a, 0xbf, 0x53, 0xa0, 0x2d, 0xbe, 0x88, 0x77, 0x31, 0xbf,
  0x9a, 0x0d, 0x90, 0x3f, 0x13, 0x49, 0x0a, 0xbd, 0xa0, 0x50, 0x3e, 0x3d,
  0xcc, 0x50, 0x82, 0x3d, 0xe9, 0x68, 0x82, 0x3e, 0x2c, 0xf7, 0x35, 0x3d,
  0x1b, 0x38, 0xd3, 0x3a, 0x00, 0xd7, 0x68, 0x3b, 0xc8, 0x6e, 0x8a, 0xbc,
  0x77, 0xff, 0x3a, 0x3e, 0x34, 0x05, 0x69, 0x3d, 0x57, 0x52, 0xe3, 0xbe,
  0xb0, 0x8e, 0x12, 0x3d, 0x0f, 0x04, 0x23, 0x3e, 0xfe, 0x35, 0x34, 0xbe,
  0x87, 0x29, 0x0b, 0x3e, 0x5b, 0xdb, 0x0b, 0x3d, 0x96, 0x0b, 0x29, 0xbe,
  0xbf, 0xcd, 0x18, 0xbe, 0x63, 0x12, 0x0c, 0xbe, 0x2e, 0x0a, 0xae, 0x3d,
  0x26, 0x71, 0x98, 0x3f, 0x1e, 0x67, 0xcc, 0xbe, 0x5a, 0x07, 0x16, 0x3e,
  0x40, 0xc3, 0x5f, 0xbc, 0x50, 0x10, 0x32, 0xbe, 0x40, 0xf1, 0x28, 0xbe,
  0xf6, 0xa6, 0x83, 0x3d, 0x83, 0x5d, 0xe9, 0xbe, 0x33, 0x2c, 0x27, 0xbf,
  0x9b, 0x5f, 0x2a, 0x3e, 0xf0, 0xd5, 0x2a, 0x3c, 0xe5, 0x20, 0x7f, 0x3e,
  0x95, 0x1c, 0x42, 0xbe, 0x96, 0x6f, 0x5a, 0x3f, 0xe3, 0xab, 0x35, 0xbe,
  0x20, 0xe3, 0x39, 0xbe, 0x26, 0x00, 0x64, 0x3d, 0xd6, 0xdb, 0xe0, 0xbe,
  0x96, 0x31, 0xf9, 0x3e, 0x60, 0xbe, 0x15, 0x3d, 0xfb, 0x33, 0x3e, 0x3e,
  0x80, 0xdf, 0xcc, 0x3a, 0x74, 0x46, 0x09, 0x3d, 0xef, 0x99, 0x03, 0x3e,
  0x50, 0x89, 0xcd, 0xbc, 0x52, 0x91, 0x0b, 0xbe, 0x16, 0x3e, 0xe0, 0x3d,
  0x7c, 0xca, 0x44, 0xbd, 0x35, 0x17, 0x00, 0xbf, 0x38, 0x46, 0x37, 0x3d,
  0x05, 0xde, 0xa2, 0xbd, 0xde, 0x18, 0xfa, 0x3d, 0x83, 0xac, 0x5d, 0xbe,
  0x62, 0x14, 0xad, 0x3d, 0xd2, 0x56, 0x24, 0xbe, 0x47, 0x41, 0x11, 0xbf,
  0xc0, 0x3b, 0x47, 0xbd, 0x18, 0xc8, 0x7d, 0x3d, 0x90, 0x5e, 0x0b, 0xbe,
  0x65, 0x59, 0xaa, 0xbd, 0x3d, 0xbc, 0xe4, 0xbe, 0xab, 0x4b, 0xc0, 0xbd,
  0xda, 0xd1, 0x29, 0xbe, 0x7b, 0x92, 0x07, 0xbe, 0x20, 0x90, 0xb8, 0x3b,
  0xb3, 0xce, 0x35, 0xbc, 0xa3, 0xbd, 0x03, 0x3e, 0x24, 0x72, 0x94, 0xbe,
  0x50, 0xe6, 0x76, 0x3c, 0x78, 0x04, 0x8e, 0xba, 0xfe, 0x60, 0xcd, 0xbe,
  0xc7, 0x6d, 0x20, 0x3e, 0xb2, 0xbd, 0x95, 0x3e, 0xe1, 0x4c, 0x12, 0x3e,
  0x50, 0x3b, 0xe9, 0x3c, 0x48, 0x17, 0x1a, 0x3d, 0x87, 0x7a, 0x37, 0x3e,
  0x50, 0x08, 0x8c, 0xbf, 0xd2, 0x60, 0x54, 0xbd, 0x38, 0x08, 0x98, 0xbc,
  0xa3, 0xfc, 0x06, 0x3f, 0x00, 0x51, 0x76, 0xba, 0xda, 0x1f, 0xc3, 0x3d,
  0xde, 0x67, 0x55, 0xbd, 0x96, 0x78, 0xbc, 0x3d, 0xc7, 0xb5, 0xd7, 0x3d,
  0x80, 0x90, 0xf6, 0x3a, 0x4a, 0x2b, 0xa9, 0x3d, 0x30, 0xd5, 0x4c, 0xbd,
  0x38, 0x4e, 0x79, 0xbe, 0xc4, 0x86, 0x26, 0x3d, 0x5c, 0xca, 0x56, 0xbf,
  0x20, 0x56, 0x4e, 0x3c, 0xee, 0x96, 0x05, 0x3e, 0x04, 0xd6, 0x4c, 0xbd,
  0x96, 0xa5, 0xf8, 0xbd, 0xfa, 0xd4, 0x83, 0x3e, 0xbe, 0x54, 0x78, 0xbd,
  0xda, 0x7d, 0x3f, 0xbf, 0x0a, 0xa9, 0x96, 0x3e, 0xd8, 0xa9, 0x4a, 0xbd,
  0x19, 0x64, 0xa5, 0xbe, 0x45, 0x5b, 0xab, 0xbe, 0x40, 0x39, 0xc4, 0xbe,
  0x3b, 0xbf, 0xb0, 0xbd, 0xeb, 0x8c, 0x30, 0x3e, 0xe3, 0xd0, 0x82, 0xbd,
  0x5b, 0x6d, 0x94, 0xbd, 0xa0, 0x97, 0x81, 0x3e, 0xe0, 0xb8, 0x22, 0xbe,
  0xca, 0x01, 0xd9, 0xbe, 0x8a, 0x80, 0x15, 0xbe, 0x40, 0x4c, 0x53, 0x3d,
  0xc8, 0xdc, 0x15, 0x3d, 0x04, 0x9c, 0x6d, 0x3d, 0x30, 0x99, 0x55, 0xbf,
  0x98, 0x43, 0x1c, 0xbf, 0x9d, 0x90, 0x88, 0xbe, 0x09, 0x1c, 0x1b, 0x3e,
  0xa2, 0xe4, 0xa2, 0x3e, 0xa5, 0x50, 0xd0, 0xbd, 0x23, 0xf8, 0x29, 0x3e,
  0x9a, 0x05, 0xa0, 0xbd, 0x40, 0xb0, 0xaf, 0xbe, 0xef, 0xb4, 0x6e, 0xbf,
  0x74, 0x6b, 0x14, 0x3d, 0x68, 0x0d, 0xf8, 0xbe, 0x20, 0x20, 0x83, 0x3f,
  0xde, 0xfb, 0x7c, 0xbe, 0x7c, 0x34, 0x39, 0x3d, 0xa7, 0x79, 0x3c, 0x3d,
  0xf6, 0x06, 0x06, 0x3f, 0xde, 0x28, 0xae, 0x3d, 0x6b, 0x6b, 0xeb, 0xbd,
  0x6a, 0xa9, 0x1a, 0xbe, 0x58, 0xc1, 0xbd, 0x3c, 0x4f, 0x54, 0x93, 0x3d,
  0x10, 0x7d, 0x14, 0x3d, 0xd6, 0xb7, 0x90, 0xbe, 0x00, 0xa4, 0x1d, 0xba,
  0x91, 0x94, 0x1f, 0x3e, 0x44, 0x74, 0x60, 0xbc, 0x4a, 0x92, 0xa3, 0xbd,
  0x35, 0xf2, 0xf0, 0x3d, 0xea, 0xee, 0xba, 0x3d, 0x95, 0x16, 0xc4, 0xbe,
  0x31, 0xd7, 0xbe, 0xbe, 0xee, 0x27, 0x97, 0x3d, 0xe3, 0x8a, 0xae, 0x3f,
  0x4a, 0xdc, 0x06, 0xbf, 0x87, 0x8f, 0x20, 0x3e, 0xc0, 0x65, 0x3c, 0xbb,
  0xb5, 0xb0, 0x51, 0xbe, 0x10, 0xab, 0x79, 0xbe, 0x00, 0xf4, 0x33, 0x3d,
  0x8c, 0xf1, 0x12, 0xbf, 0x46, 0x3d, 0xfb, 0xbe, 0x3e, 0x02, 0xcc, 0xbd,
  0x12, 0xc0, 0xf9, 0x3d, 0xbc, 0x1d, 0x84, 0x3e, 0xd5, 0xa1, 0x44, 0xbe,
  0x32, 0xcd, 0x4e, 0x3f, 0x4c, 0x25, 0xa9, 0xbe, 0x57, 0x28, 0x55, 0xbe,
  0xff, 0xb0, 0x09, 0x3e, 0xee, 0x44, 0x27, 0xbf, 0xd6, 0x21, 0x36, 0x3f,
  0xa3, 0x61, 0x91, 0xbd, 0x71, 0x19, 0x68, 0x3e, 0x1c, 0x3d, 0x1d, 0x3d,
  0x40, 0x3e, 0xc4, 0xbc, 0xc8, 0x45, 0xb7, 0x3c, 0x0b, 0x83, 0x18, 0xbe,
  0x7a, 0x97, 0xd1, 0x3d, 0x40, 0xc4, 0x84, 0xbc, 0xaf, 0x95, 0x16, 0xbe,
  0x3a, 0xdf, 0x08, 0xbf, 0x13, 0x9d, 0x3e, 0x3e, 0x86, 0x2d, 0x8a, 0xbd,
  0x7c, 0x01, 0x27, 0xbd, 0xe6, 0x46, 0x46, 0xbe, 0xa9, 0xff, 0x16, 0x3e,
  0xc0, 0x8f, 0xdf, 0x3b, 0xbe, 0x15, 0xf6, 0xbe, 0x85, 0xd3, 0xd1, 0xbd,
  0x71, 0x57, 0x1f, 0x3e, 0xa9, 0x10, 0xdb, 0xbd, 0x80, 0xd0, 0x6f, 0x3b,
  0xa1, 0xb7, 0x02, 0xbf, 0x8e, 0xa1, 0xd3, 0x3d, 0x0e, 0x02, 0xaf, 0xbd,
  0x56, 0x9a, 0xf3, 0x3d, 0xc4, 0xf7, 0x65, 0xbd, 0xd7, 0x26, 0x23, 0xbe,
  0xcf, 0x69, 0xfb, 0x3d, 0x83, 0x2b, 0x90, 0x3d, 0x8e, 0xdd, 0xb3, 0x3d,
  0x70, 0xc4, 0xd5, 0xbd, 0x81, 0xf4, 0x73, 0xbf, 0x8c, 0x1d, 0x66, 0x3d,
  0xd6, 0x7d, 0x83, 0x3e, 0x30, 0x42, 0xe6, 0xbc, 0x8e, 0xf4, 0xc8, 0x3d,
  0xa0, 0x96, 0xfc, 0xbc, 0x29, 0xe0, 0x39, 0x3e, 0xb9, 0x58, 0x93, 0xbf,
  0x7a, 0x1e, 0xf0, 0x3d, 0x00, 0xaf, 0x78, 0xbb, 0x81, 0xef, 0x13, 0x3e,
  0xa6, 0xc3, 0xb6, 0x3d, 0xa2, 0x20, 0xcb, 0xbd, 0xb1, 0xb9, 0x28, 0x3e,
  0x04, 0x0b, 0x19, 0xbd, 0xce, 0x4e, 0x2b, 0xbd, 0xa0, 0xdf, 0x1f, 0xbe,
  0x6e, 0x26, 0xac, 0xbd, 0x69, 0xb1, 0xb6, 0xbd, 0xde, 0x3b, 0x83, 0xbd,
  0x16, 0x19, 0x12, 0xbe, 0x55, 0x16, 0x25, 0xbf, 0xfa, 0x8d, 0xab, 0x3d,
  0xff, 0xde, 0x94, 0xbc, 0x94, 0x04, 0xa3, 0xbd, 0xdd, 0xcf, 0x5e, 0xbf,
  0x1b, 0x44, 0x57, 0x3e, 0xb9, 0x0d, 0x2c, 0x3e, 0x8a, 0x73, 0xe0, 0xbd,
  0xd3, 0x77, 0x9f, 0x3e, 0x6a, 0xc0, 0x02, 0xbe, 0xd5, 0x1f, 0x9b, 0xbf,
  0x88, 0xca, 0x10, 0xbe, 0x7d, 0x23, 0x22, 0xbf, 0x9b, 0x01, 0xe9, 0xbd,
  0x64, 0x10, 0x79, 0x3d, 0x5a, 0x99, 0x01, 0xbe, 0xa7, 0x2f, 0x03, 0x3e,
  0xaa, 0x88, 0x8b, 0x3d, 0xb4, 0x1b, 0x04, 0xbe, 0x48, 0xca, 0x78, 0xbf,
  0x05, 0x68, 0xaf, 0xbd, 0x86, 0x45, 0x7f, 0xbd, 0xf4, 0x7a, 0xfb, 0xbd,
  0xad, 0x39, 0x2c, 0x3e, 0x57, 0x99, 0xf8, 0xbe, 0x3e, 0xf7, 0x03, 0xbf,
  0xa1, 0x41, 0xa8, 0xbf, 0x21, 0x1a, 0x00, 0x3e, 0x1d, 0x39, 0x3e, 0x3e,
  0xe4, 0x53, 0x1b, 0x3d, 0x93, 0x7a, 0xe3, 0xbd, 0xdc, 0xf7, 0xe0, 0xbd,
  0xe7, 0xb9, 0x0e, 0xbe, 0x29, 0x36, 0x64, 0xbf, 0x6c, 0x6e, 0x5b, 0x3d,
  0xf7, 0xe2, 0x43, 0xbf, 0xe7, 0x00, 0x33, 0x3f, 0xbb, 0x6f, 0x26, 0x3e,
  0x9c, 0xe1, 0x1b, 0x3d, 0x5b, 0x65, 0xbe, 0x3c, 0x20, 0xe0, 0x2c, 0x3e,
  0x00, 0xc2, 0x25, 0x3c, 0x68, 0x9f, 0xf4, 0xbd, 0x63, 0x86, 0x27, 0x3e,
  0x10, 0x4c, 0x47, 0x3c, 0xce, 0x15, 0x71, 0x3e, 0x3c, 0x6f, 0xbc, 0x3d,
  0xf2, 0xa2, 0x85, 0xbf, 0xaf, 0x1a, 0xaa, 0xbd, 0x4a, 0x35, 0x17, 0xbe,
  0x69, 0x27, 0xde, 0x3d, 0x82, 0xff, 0xa0, 0xbd, 0x26, 0x8e, 0x26, 0x3e,
  0x82, 0x5d, 0x84, 0x3d, 0xaf, 0x14, 0x4c, 0xbe, 0x00, 0xc0, 0x7b, 0xbe,
  0x1d, 0x03, 0x25, 0x3e, 0x05, 0x5e, 0x17, 0x3f, 0xc6, 0x4f, 0x79, 0xbf,
  0x47, 0x42, 0x5a, 0x3e, 0x50, 0x37, 0x68, 0x3d, 0xa4, 0x18, 0xb0, 0x3d,
  0x37, 0xf9, 0x9f, 0x3d, 0x14, 0x03, 0x66, 0xbd, 0xcc, 0x69, 0x2e, 0xbf,
  0x10, 0x8a, 0xb4, 0xbe, 0x85, 0x58, 0x05, 0x3e, 0xc0, 0x61, 0x64, 0x3b,
  0xcf, 0x75, 0x11, 0x3e, 0x8a, 0x66, 0x01, 0xbe, 0x48, 0x7f, 0xe2, 0x3e,
  0xb5, 0xd0, 0xa6, 0xbe, 0x20, 0x23, 0x17, 0xbe, 0x2d, 0xa4, 0x07, 0x3e,
  0x33, 0x6a, 0x85, 0xbf, 0xb2, 0xa1, 0x15, 0x3e, 0xd0, 0x90, 0x05, 0xbd,
  0x48, 0xa7, 0x30, 0x3e, 0x7e, 0xe6, 0x99, 0x3d, 0x40, 0xbc, 0x1b, 0xbc,
  0x60, 0xe5, 0xab, 0x3b, 0x18, 0x84, 0xbe, 0xbd, 0xf8, 0xcf, 0xe5, 0xbd,
  0x7e, 0x0b, 0xdb, 0x3d, 0x68, 0x0e, 0xef, 0xbc, 0xf3, 0x60, 0xc4, 0xbe,
  0x96, 0xa7, 0xf3, 0x3c, 0x83, 0x56, 0xb9, 0xbd, 0x40, 0xcb, 0x1b, 0x3d,
  0x17, 0x30, 0xc5, 0xbd, 0x59, 0xb7, 0xa0, 0x3e, 0xcc, 0x4f, 0xe2, 0xbd,
  0x89, 0xa6, 0x42, 0xbf, 0x48, 0x0b, 0x95, 0xbd, 0xa7, 0x67, 0x19, 0x3e,
  0xf7, 0x04, 0x24, 0x3e, 0x09, 0x04, 0xfa, 0xbd, 0xfb, 0x6b, 0x36, 0xbe,
  0xe0, 0x5d, 0x28, 0x3c, 0x99, 0x88, 0xa0, 0xbf, 0x9c, 0xde, 0x2c, 0xbe,
  0x30, 0xcc, 0x09, 0xbe, 0xd8, 0xad, 0x2f, 0xbd, 0x00, 0x3b, 0xeb, 0xbd,
  0x02, 0xa7, 0xa9, 0x3d, 0x2f, 0xb6, 0xdc, 0xbd, 0xb0, 0xc0, 0x0e, 0xbc,
  0x04, 0x63, 0x4b, 0xbd, 0xd9, 0x7c, 0x1e, 0xbe, 0xa6, 0x50, 0xc6, 0x3d,
  0x3a, 0x9a, 0xc0, 0x3d, 0x88, 0xf9, 0xee, 0xbd, 0x91, 0x10, 0xc7, 0xbd,
  0xfe, 0x75, 0x94, 0x3d, 0xcb, 0xc9, 0x13, 0xbe, 0x61, 0x2c, 0x92, 0xbd,
  0x63, 0xed, 0xb1, 0xbd, 0x38, 0xae, 0x26, 0x3d, 0xb4, 0x28, 0x5a, 0xbd,
  0xdc, 0xb7, 0x72, 0xbd, 0x89, 0x61, 0x0b, 0xbe, 0xc8, 0x68, 0xda, 0xbc,
  0x10, 0xe8, 0x3e, 0xbc, 0x1d, 0x60, 0x24, 0x3e, 0xe1, 0xbb, 0x8d, 0xbd,
  0x05, 0x8b, 0x8e, 0xbd, 0x4e, 0xd2, 0xda, 0x3d, 0x8d, 0xc9, 0x00, 0x3e,
  0xe7, 0x2e, 0x1b, 0x3e, 0xa3, 0xee, 0x9e, 0xbd, 0xbc, 0xd3, 0x4f, 0x3d,
  0x5f, 0xd5, 0x21, 0x3e, 0x5e, 0xb0, 0xbb, 0xbd, 0x40, 0x7f, 0x30, 0xbe,
  0x3c, 0x49, 0x52, 0xbd, 0xe3, 0x28, 0x22, 0x3e, 0x7d, 0xc1, 0x21, 0xbe,
  0xee, 0xd7, 0xe8, 0x3d, 0xcf, 0xb5, 0x05, 0x3e, 0xf4, 0xf0, 0x2e, 0xbd,
  0x49, 0x29, 0x2d, 0x3e, 0x8e, 0x69, 0xb0, 0x3d, 0x8f, 0xfb, 0x27, 0xbe,
  0xdb, 0x30, 0x2d, 0xbe, 0x76, 0xeb, 0xae, 0x3d, 0x38, 0xe2, 0x00, 0xbe,
  0xb2, 0x12, 0xf0, 0x3d, 0xf2, 0x3d, 0xb8, 0xbd, 0xfc, 0xfc, 0x19, 0xbd,
  0xcb, 0x1c, 0x17, 0x3e, 0x7b, 0x09, 0xa8, 0xbd, 0x98, 0xe0, 0xd8, 0xbc,
  0x62, 0xa1, 0xeb, 0x3d, 0x70, 0xe2, 0xc8, 0xbd, 0x80, 0xae, 0xc9, 0xbb,
  0x88, 0x1b, 0x96, 0x3c, 0x86, 0x76, 0xd8, 0x3d, 0x16, 0x96, 0xca, 0x3d,
  0x42, 0xac, 0xda, 0x3d, 0x92, 0xff, 0x94, 0xbd, 0xa8, 0xd1, 0xff, 0x3c,
  0x3d, 0xaa, 0x2e, 0x3e, 0x3c, 0x87, 0x52, 0xbd, 0x3b, 0xf2, 0x2c, 0xbe,
  0x88, 0xda, 0xeb, 0xbc, 0x67, 0x8b, 0x0f, 0x3e, 0x60, 0x34, 0x8a, 0x3d,
  0x60, 0x69, 0xb3, 0xbb, 0x07, 0xc0, 0x82, 0xbd, 0xda, 0x7a, 0xa0, 0x3d,
  0x42, 0xf4, 0xf5, 0xbd, 0xec, 0x05, 0x87, 0x3d, 0xda, 0xf0, 0xb9, 0x3d,
  0x0a, 0x36, 0x96, 0x3d, 0x68, 0x97, 0xbf, 0xbc, 0x23, 0xd2, 0xc3, 0xbd,
  0x06, 0x5b, 0xf2, 0x3d, 0x9a, 0x63, 0xdc, 0x3d, 0x15, 0x70, 0x34, 0xbe,
  0xe6, 0x92, 0xef, 0x3d, 0x48, 0x1b, 0x58, 0x3d, 0xda, 0x53, 0xe8, 0x3d,
  0xf4, 0x95, 0x28, 0x3d, 0xec, 0x83, 0xe3, 0xbd, 0x4c, 0xe5, 0x0c, 0x3d,
  0xce, 0x5f, 0xdc, 0x3d, 0xf7, 0xee, 0xe6, 0xbd, 0xdc, 0x25, 0x96, 0xbd,
  0x7d, 0xf7, 0x1e, 0x3e, 0xd0, 0x4f, 0x9c, 0xbd, 0x4e, 0x30, 0xa9, 0x3d,
  0xa4, 0x3b, 0x86, 0x3d, 0x86, 0x8b, 0xc2, 0x3d, 0x10, 0xf2, 0xe7, 0xbc,
  0x1e, 0xd9, 0xd3, 0x3d, 0x4f, 0x48, 0x07, 0x3e, 0x30, 0x63, 0xf9, 0xbd,
  0x0a, 0x80, 0xda, 0x3d, 0x3c, 0x9c, 0x18, 0xbe, 0xa1, 0x3a, 0xe6, 0xbd,
  0xe1, 0xd6, 0x0a, 0x3e, 0x8f, 0x9f, 0xf9, 0xbd, 0x56, 0x43, 0xaa, 0x3d,
  0x39, 0x51, 0x14, 0x3e, 0xb7, 0x70, 0x16, 0xbe, 0x9a, 0x7e, 0x9a, 0x3d,
  0xe7, 0x82, 0x24, 0xbe, 0x1c, 0xaa, 0x7f, 0x3d, 0x74, 0x29, 0x64, 0xbd,
  0xbe, 0xb6, 0xcf, 0x3d, 0x2e, 0xf7, 0xe3, 0xbd, 0x93, 0x9a, 0x86, 0xbd,
  0xad, 0xff, 0x00, 0x3e, 0x22, 0x3d, 0xee, 0xbd, 0x20, 0x58, 0x1b, 0x3d,
  0x00, 0x96, 0x15, 0x3a, 0x78, 0xdb, 0x3a, 0x3d, 0x09, 0x3f, 0x8c, 0xbd,
  0x00, 0xc8, 0x0d, 0x39, 0xcd, 0xe0, 0xe6, 0xbd, 0xf5, 0xa9, 0x2f, 0xbe,
  0x4b, 0x19, 0xbb, 0xbd, 0x92, 0xc5, 0x07, 0xbe, 0x94, 0x09, 0x1a, 0x3d,
  0x27, 0x3b, 0x83, 0xbd, 0x64, 0x58, 0x2a, 0xbe, 0xb0, 0x25, 0x44, 0x3d,
  0x40, 0x39, 0x31, 0x3d, 0x28, 0xae, 0x2a, 0x3d, 0xc1, 0xe5, 0x14, 0x3e,
  0x76, 0x0c, 0x74, 0xbd, 0x6c, 0x72, 0x0e, 0xbd, 0x44, 0x2d, 0x2e, 0x3d,
  0x38, 0xb6, 0xfd, 0xbc, 0x70, 0x5a, 0x63, 0x3d, 0x2d, 0x35, 0x12, 0x3e,
  0x50, 0x0d, 0x80, 0x3d, 0xb6, 0x11, 0xe5, 0xbd, 0xf0, 0xdd, 0xa2, 0x3c,
  0xd8, 0x63, 0x06, 0xbd, 0x14, 0x00, 0x28, 0xbe, 0x8d, 0x5b, 0x0c, 0x3e,
  0x29, 0x17, 0x0e, 0x3e, 0x2a, 0x4f, 0x9d, 0x3d, 0x2c, 0x1f, 0x0a, 0xbe,
  0x8e, 0xe7, 0xf8, 0x3d, 0x07, 0x0b, 0x20, 0x3e, 0x65, 0x02, 0x2b, 0x3e,
  0x9e, 0xa2, 0x08, 0xbe, 0xba, 0x3c, 0xab, 0x3d, 0x20, 0x73, 0xfe, 0xbc,
  0x96, 0xa3, 0xd3, 0x3d, 0x1c, 0x08, 0x86, 0x3d, 0x2c, 0x9c, 0x37, 0x3d,
  0x96, 0x74, 0xd2, 0x3d, 0xe0, 0x20, 0x44, 0xbd, 0xae, 0x8d, 0x98, 0x3d,
  0xb3, 0xa1, 0x06, 0x3e, 0x51, 0x13, 0x0f, 0x3e, 0x20, 0xf0, 0x21, 0x3d,
  0x51, 0x81, 0xc1, 0xbd, 0xa0, 0xd6, 0x8a, 0x3c, 0x6e, 0x68, 0xdf, 0x3d,
  0x6a, 0x97, 0x32, 0xbe, 0xfe, 0xe4, 0xb5, 0xbd, 0x98, 0xdc, 0xd3, 0xbc,
  0xf6, 0xb9, 0xd0, 0xbd, 0x7d, 0x24, 0x18, 0x3e, 0x8a, 0xa5, 0xd1, 0x3d,
  0x28, 0x7e, 0x27, 0x3d, 0x71, 0x8a, 0x93, 0xbd, 0x0e, 0x40, 0x97, 0x3d,
  0x42, 0xdc, 0x9e, 0x3d, 0xcc, 0xa1, 0x20, 0xbd, 0xc6, 0x9a, 0x5a, 0xbd,
  0x20, 0xf3, 0xae, 0xbb, 0x40, 0xab, 0x18, 0x3d, 0xe6, 0x2a, 0xfe, 0x3d,
  0x72, 0x3e, 0x9c, 0xbd, 0x50, 0x40, 0x19, 0x3d, 0x8e, 0x24, 0x2b, 0xbe,
  0x6f, 0x93, 0xb0, 0xbd, 0x9b, 0x4c, 0xcb, 0xbd, 0x32, 0x88, 0xa2, 0xbd,
  0xc9, 0x73, 0x05, 0xbe, 0x8e, 0xdb, 0x83, 0xbd, 0x0b, 0x82, 0x02, 0x3e,
  0x8f, 0xdc, 0xa3, 0xbd, 0xd3, 0xae, 0x1d, 0xbe, 0xf3, 0xad, 0x0d, 0xbe,
  0x5d, 0xb7, 0x2c, 0xbe, 0x02, 0x8a, 0xff, 0x3d, 0x18, 0x27, 0x63, 0x3d,
  0x94, 0x93, 0x40, 0xbd, 0x77, 0x02, 0x80, 0xbd, 0x1c, 0x51, 0x40, 0xbd,
  0xf8, 0x19, 0x44, 0xbd, 0xeb, 0x85, 0x2b, 0xbe, 0x55, 0xf9, 0xaf, 0xbd,
  0x24, 0xb7, 0x83, 0x3d, 0x64, 0x94, 0x15, 0x3d, 0x9d, 0x5f, 0x2c, 0x3e,
  0x1e, 0x40, 0xfa, 0x3d, 0x5e, 0xc0, 0x8d, 0xbd, 0xe0, 0xa1, 0xc2, 0x3b,
  0x18, 0x69, 0x1d, 0xbd, 0xb0, 0x6a, 0x0b, 0x3d, 0x37, 0x2f, 0x0e, 0x3e,
  0xa8, 0x7a, 0x02, 0xbd, 0x66, 0x48, 0x8e, 0x3d, 0x40, 0x7a, 0x55, 0x3d,
  0x3a, 0x2d, 0x34, 0xbe, 0x40, 0xe1, 0xc2, 0x3b, 0x59, 0x87, 0xac, 0xbd,
  0x30, 0xdc, 0xb5, 0x3c, 0x3d, 0x2c, 0x22, 0xbe, 0x80, 0x4b, 0x9d, 0xbd,
  0x50, 0xca, 0xd4, 0xbd, 0xcc, 0x40, 0x1b, 0xbd, 0x24, 0x9c, 0x9f, 0xbd,
  0x50, 0x95, 0x94, 0xbc, 0xb0, 0x66, 0xaf, 0x3c, 0x50, 0x1c, 0x21, 0x3c,
  0x25, 0xdc, 0x1f, 0x3e, 0x08, 0x7b, 0xdc, 0x3c, 0xc2, 0xb2, 0x32, 0xbe,
  0xd6, 0x89, 0x06, 0xbe, 0xfd, 0x3d, 0xda, 0xbd, 0x82, 0xef, 0x01, 0xbe,
  0x75, 0x0b, 0xdd, 0xbd, 0xf0, 0x41, 0x41, 0xbc, 0x44, 0xa1, 0x8f, 0xbd,
  0x1a, 0x7e, 0x58, 0xbd, 0xbe, 0x8b, 0xcf, 0x3d, 0xcf, 0x29, 0x8b, 0xbd,
  0x8f, 0x4a, 0x1b, 0xbe, 0xcd, 0xb9, 0x07, 0xbe, 0x00, 0x3c, 0x0a, 0x39,
  0x00, 0x17, 0xdb, 0x3c, 0xf2, 0xac, 0x65, 0xbd, 0x11, 0xb6, 0x33, 0xbe,
  0x3b, 0x78, 0x2e, 0x3e, 0xb6, 0xdb, 0xf0, 0xbd, 0xcc, 0xe2, 0x20, 0xbd,
  0xa9, 0x44, 0x0a, 0x3e, 0x35, 0xf6, 0x22, 0x3e, 0xf9, 0x69, 0x2b, 0x3e,
  0x68, 0xc6, 0x94, 0xbd, 0x60, 0xaa, 0x7a, 0x3d, 0xc6, 0x54, 0xea, 0xbd,
  0xe0, 0x11, 0x21, 0xbc, 0x77, 0xbe, 0x00, 0x3e, 0x8a, 0xa5, 0xd9, 0x3d,
  0x80, 0x0b, 0x06, 0x3d, 0x50, 0xe3, 0xbc, 0x3c, 0xd4, 0x3c, 0x90, 0xbd,
  0xb5, 0x07, 0xa5, 0xbd, 0x68, 0xf7, 0x48, 0xbd, 0xbb, 0xe3, 0x29, 0x3e,
  0x0f, 0xf0, 0xaa, 0xba, 0x24, 0x2e, 0x74, 0x3d, 0x1a, 0xa1, 0xe5, 0xbd,
  0xc8, 0x13, 0xe8, 0x3d, 0xd1, 0x07, 0xdf, 0x3d, 0xc3, 0xd5, 0x1c, 0x3e,
  0xc2, 0xbe, 0x29, 0xbe, 0xa0, 0xa7, 0xb3, 0xbc, 0x90, 0x87, 0xcc, 0xbc,
  0x24, 0x15, 0x31, 0xbd, 0x29, 0x4b, 0x40, 0xbe, 0x61, 0xf7, 0xb8, 0x3f,
  0xad, 0xf6, 0xb4, 0xbd, 0x90, 0x1e, 0x34, 0x3d, 0x6b, 0x25, 0xd8, 0xbe,
  0x33, 0x38, 0x10, 0xbe, 0x88, 0x16, 0x35, 0xbd, 0xd8, 0xef, 0x93, 0xbd,
  0xd5, 0xbb, 0x05, 0x3e, 0x7f, 0xd7, 0x5f, 0x3c, 0x61, 0x57, 0xbc, 0xbd,
  0x7c, 0xac, 0x22, 0xbd, 0xb1, 0xc6, 0x21, 0xbe, 0x10, 0x0a, 0x31, 0x3d,
  0x6d, 0x6a, 0x23, 0x3e, 0x31, 0x02, 0x34, 0x3f, 0x49, 0xb2, 0x1f, 0x3e,
  0xfb, 0x6e, 0x23, 0xbd, 0xf8, 0x82, 0x88, 0xbc, 0x91, 0x7e, 0x24, 0x3e,
  0x3d, 0x70, 0x87, 0xbe, 0x00, 0xc0, 0x6a, 0x3a, 0xd4, 0xd2, 0x0b, 0x3f,
  0xfd, 0xb4, 0xca, 0xbe, 0xc0, 0x2a, 0x10, 0xbc, 0x34, 0x94, 0xd7, 0x3d,
  0xf1, 0xd0, 0x45, 0x3e, 0x7e, 0xbe, 0xae, 0x3d, 0x02, 0x06, 0xcf, 0xbd,
  0xe0, 0x48, 0x1f, 0xbc, 0x50, 0x28, 0x0d, 0xbc, 0x2e, 0x21, 0xcc, 0x3d,
  0x6a, 0xbb, 0xf2, 0xbd, 0x7a, 0x7b, 0x99, 0x3d, 0x97, 0xc0, 0x30, 0x3e,
  0x2a, 0x9b, 0x74, 0xbd, 0xba, 0x39, 0xa2, 0xbd, 0x13, 0xb6, 0x67, 0xbd,
  0x95, 0xd9, 0x04, 0x3e, 0x97, 0x98, 0xbb, 0x3e, 0x60, 0x1f, 0x09, 0x3f,
  0x56, 0x3b, 0x4c, 0x3e, 0x7b, 0x42, 0x2e, 0x3e, 0x52, 0xfc, 0x27, 0xbe,
  0x0b, 0xfb, 0x16, 0xbe, 0xeb, 0x9d, 0xe9, 0xbd, 0x5a, 0x1b, 0x00, 0x3e,
  0x5e, 0x0a, 0x54, 0x3e, 0xe4, 0xfb, 0x7f, 0x3f, 0x04, 0x9f, 0x26, 0xbd,
  0xa9, 0xe2, 0x27, 0x3f, 0x57, 0x83, 0x2c, 0xbf, 0x19, 0x0f, 0x76, 0x3e,
  0xda, 0xb0, 0x9e, 0xbd, 0x43, 0x1c, 0xd5, 0x3d, 0x02, 0x41, 0xc0, 0xbe,
  0x3e, 0xbe, 0x0d, 0xbe, 0x6b, 0x01, 0x1f, 0xbe, 0xc0, 0x5d, 0x53, 0x3c,
  0x58, 0x52, 0x30, 0x3d, 0xbc, 0xd0, 0x38, 0xbe, 0x1d, 0x56, 0x5c, 0xbe,
  0x35, 0xe1, 0xa0, 0x3e, 0xf4, 0xef, 0x04, 0xbe, 0xb2, 0xbe, 0xd6, 0x3d,
  0x86, 0x43, 0x08, 0x3e, 0xfe, 0x93, 0xc4, 0x3d, 0xe8, 0x9f, 0xd3, 0x3d,
  0x18, 0x0b, 0x3a, 0xbd, 0x5d, 0xdb, 0xe8, 0x3e, 0x72, 0x7c, 0x37, 0x3e,
  0xe0, 0xd5, 0xe9, 0x3b, 0xb4, 0x26, 0xc5, 0xbe, 0x62, 0x58, 0x54, 0x3e,
  0xe1, 0xee, 0xed, 0x3c, 0x6a, 0xd2, 0x82, 0x3d, 0xae, 0x9b, 0x1f, 0xbc,
  0xd9, 0xe5, 0x97, 0x3e, 0x98, 0xd8, 0xbd, 0x3c, 0xa8, 0x4c, 0x2b, 0x3f,
  0x06, 0xca, 0x41, 0x3f, 0x90, 0x57, 0xf0, 0x3c, 0x4c, 0x07, 0xdc, 0xbd,
  0x31, 0x79, 0x13, 0xbe, 0x35, 0x79, 0x88, 0x3e, 0xc0, 0xe8, 0x2c, 0xbf,
  0x23, 0xdd, 0x95, 0x3e, 0xf2, 0x6a, 0x34, 0x3e, 0x81, 0xf6, 0x97, 0xbd,
  0x53, 0x1a, 0xbe, 0x3e, 0xe6, 0xe1, 0x98, 0xbe, 0x50, 0x66, 0x7e, 0x3c,
  0x9b, 0x81, 0x36, 0xbc, 0xf8, 0x3a, 0x7a, 0x3d, 0x00, 0x65, 0x88, 0x3d,
  0xb0, 0x5a, 0x28, 0xbd, 0x3e, 0x3e, 0x12, 0xbe, 0xd9, 0x82, 0x1c, 0x3e,
  0x10, 0xe2, 0xad, 0xbc, 0xe9, 0x54, 0x95, 0xbd, 0xb0, 0x26, 0x7f, 0x3e,
  0x50, 0x55, 0x35, 0x3d, 0xa6, 0xe3, 0xff, 0x3d, 0x68, 0x5b, 0x8a, 0x3c,
  0x13, 0x49, 0x70, 0x3e, 0xfd, 0xcb, 0x65, 0xbd, 0x4f, 0x6e, 0x28, 0xbe,
  0x2b, 0x29, 0xf6, 0x3e, 0x9a, 0x21, 0x8c, 0x3d, 0x03, 0xbe, 0x07, 0x3e,
  0x71, 0xbe, 0x0b, 0xbe, 0xbe, 0x9e, 0xc3, 0x3d, 0x04, 0x3b, 0x90, 0x3e,
  0x09, 0xfe, 0x33, 0x3e, 0xca, 0x51, 0x95, 0x3e, 0x5e, 0x95, 0xe2, 0x3d,
  0x0f, 0xa8, 0x1a, 0xbe, 0x60, 0x94, 0xe0, 0xbd, 0xc2, 0x0f, 0xb4, 0x3d,
  0x9f, 0xe9, 0x02, 0x3e, 0x4f, 0x7c, 0x19, 0x3e, 0x24, 0x03, 0x01, 0xbd,
  0x81, 0xe3, 0x8c, 0xbd, 0x49, 0x3a, 0xb2, 0xbd, 0xef, 0x39, 0x33, 0x3e,
  0x99, 0x7d, 0x2b, 0xbe, 0xc4, 0xe9, 0x93, 0xbd, 0xd2, 0xac, 0x99, 0x3d,
  0x91, 0x96, 0x14, 0x3e, 0xc2, 0x6d, 0xcf, 0x3d, 0x8b, 0xf5, 0x05, 0x3e,
  0xf0, 0xd9, 0x08, 0xbc, 0x9c, 0xf3, 0x65, 0xbd, 0xe9, 0x0e, 0xdc, 0xbd,
  0x2e, 0xdb, 0xdb, 0x3d, 0x4e, 0x14, 0x90, 0x3d, 0xbd, 0xe1, 0x18, 0x3e,
  0x6a, 0xf9, 0xda, 0x3d, 0x50, 0xe2, 0x3a, 0x3c, 0xe5, 0x52, 0xc8, 0xbd,
  0x0c, 0xb2, 0x10, 0xbd, 0x4c, 0x9b, 0x4a, 0xbd, 0x3c, 0x57, 0x5c, 0xbd,
  0x4a, 0x0f, 0xdb, 0x3d, 0xed, 0x78, 0x0f, 0xbe, 0xbe, 0x92, 0xa1, 0xbd,
  0x0e, 0xcb, 0xe1, 0x3d, 0x80, 0x20, 0xc5, 0x3b, 0xf6, 0x74, 0xca, 0xbd,
  0xc0, 0x8f, 0x2d, 0x3b, 0x7c, 0x6a, 0x0a, 0x3d, 0xd4, 0x4d, 0x6f, 0xbd,
  0x00, 0xe8, 0x7f, 0x3c, 0x93, 0xd1, 0x16, 0x3e, 0xa0, 0x61, 0xd1, 0xbc,
  0xfd, 0xbd, 0xe8, 0xbd, 0xe4, 0x44, 0x66, 0x3d, 0x8c, 0xf2, 0x09, 0xbe,
  0xe7, 0x25, 0x2d, 0x3e, 0x20, 0x6c, 0x6b, 0x3d, 0x60, 0xc7, 0x35, 0xbc,
  0x8c, 0x6a, 0x94, 0xbd, 0x16, 0xc6, 0xda, 0x3d, 0x56, 0x13, 0x8f, 0x3d,
  0xca, 0x33, 0xed, 0xbd, 0x33, 0xb3, 0xbb, 0xbd, 0x70, 0xa8, 0x90, 0x3d,
  0x60, 0x4e, 0x56, 0x3d, 0xb0, 0x91, 0x27, 0x3d, 0xf4, 0x7a, 0x6a, 0x3d,
  0x25, 0x86, 0x88, 0xbd, 0xeb, 0xfd, 0x03, 0x3e, 0x74, 0x54, 0xf9, 0xbd,
  0xc0, 0x73, 0x63, 0x3c, 0xd5, 0xf9, 0x08, 0xbe, 0x6a, 0x61, 0xfb, 0x3d,
  0x00, 0x34, 0xd1, 0xbc, 0x8b, 0x2e, 0x01, 0x3e, 0x2f, 0xad, 0x20, 0xbe,
  0xf0, 0x38, 0x28, 0x3c, 0x0c, 0x27, 0x68, 0x3d, 0x4f, 0xc4, 0x10, 0x3e,
  0x8c, 0x65, 0x0b, 0xbe, 0xd3, 0x59, 0x2a, 0x3e, 0xbc, 0x6c, 0x17, 0x3d,
  0x9a, 0x77, 0xfe, 0xbd, 0x40, 0x87, 0x28, 0x3c, 0xc0, 0x51, 0x80, 0x3b,
  0xd4, 0x4a, 0xf3, 0xbd, 0x9b, 0xed, 0x01, 0xbe, 0x84, 0x6e, 0x2c, 0x3d,
  0x8e, 0xb7, 0xf5, 0xbd, 0x9b, 0xd0, 0x9e, 0xbd, 0x00, 0x59, 0x55, 0xbb,
  0x22, 0xaa, 0xf7, 0xbd, 0xfd, 0x67, 0xb9, 0xbd, 0xf1, 0x68, 0x97, 0xbd,
  0xb4, 0xa0, 0x16, 0xbd, 0x34, 0x29, 0x36, 0x3d, 0x62, 0xa8, 0xca, 0x3d,
  0xc6, 0x7a, 0xfc, 0xbd, 0xf0, 0x7c, 0x24, 0xbe, 0xcc, 0x38, 0x07, 0xbe,
  0x68, 0xdb, 0xb4, 0xbd, 0xbc, 0x32, 0x20, 0xbe, 0xc1, 0x12, 0xa1, 0xbd,
  0xcf, 0x55, 0xb4, 0xbd, 0x32, 0x00, 0xd6, 0x3d, 0xa6, 0xcc, 0xd2, 0x3d,
  0x82, 0xa8, 0x01, 0xbe, 0x04, 0x64, 0xac, 0xbd, 0x5b, 0xe5, 0x8d, 0xbd,
  0x1d, 0x9c, 0x20, 0x3e, 0x48, 0xb1, 0xf3, 0x3c, 0x3c, 0x83, 0xfd, 0xbd,
  0x87, 0xaa, 0x2c, 0xbe, 0x25, 0x4f, 0x12, 0x3e, 0xe8, 0x43, 0x8a, 0x3d,
  0xeb, 0xc7, 0xda, 0xbd, 0x06, 0xc5, 0x82, 0x3d, 0xb1, 0xfe, 0x1e, 0x3e,
  0x5a, 0x6e, 0x0d, 0xbe, 0x29, 0x0e, 0x14, 0xbe, 0xa0, 0x09, 0x59, 0xbc,
  0x27, 0x39, 0x01, 0x3e, 0x60, 0x7b, 0x34, 0xbd, 0xe8, 0x84, 0xb6, 0xbc,
  0x60, 0x10, 0x31, 0xbc, 0x5e, 0x31, 0xf0, 0x3d, 0x54, 0xdd, 0x9b, 0xbd,
  0xf7, 0x1b, 0xd4, 0xbd, 0xba, 0x58, 0xfb, 0xbd, 0xe7, 0x5a, 0x1c, 0x3e,
  0x72, 0x49, 0x9d, 0xbd, 0xa3, 0xc9, 0x1e, 0x3e, 0x7b, 0x82, 0x9c, 0xbd,
  0x84, 0xc3, 0x10, 0xbd, 0x37, 0x54, 0x32, 0xbe, 0x97, 0xe2, 0x1f, 0x3e,
  0x56, 0x53, 0x61, 0xbd, 0x30, 0x7f, 0x79, 0x3d, 0x0d, 0x79, 0x21, 0x3e,
  0x60, 0x9d, 0xc1, 0x3b, 0x60, 0x0d, 0x2f, 0xbd, 0xbc, 0xac, 0x06, 0xbe,
  0x02, 0xc0, 0xba, 0xbc, 0x27, 0x48, 0xaf, 0x3d, 0x36, 0xc1, 0x38, 0x3e,
  0xf0, 0xf7, 0x50, 0x3d, 0x8e, 0x15, 0x20, 0x3e, 0x3a, 0x5a, 0x89, 0x3e,
  0xb2, 0x1b, 0xd4, 0x3d, 0xcb, 0xac, 0x7b, 0xbe, 0x22, 0x97, 0xed, 0x3d,
  0xc0, 0xa1, 0x69, 0x3c, 0xb1, 0x3c, 0x07, 0x3e, 0xde, 0x88, 0x0d, 0xbf,
  0x22, 0x20, 0xc1, 0x3f, 0x18, 0x18, 0xed, 0x3c, 0x6e, 0x90, 0xcf, 0x3d,
  0xc5, 0x1f, 0x64, 0xbe, 0x1a, 0xde, 0xdf, 0x3d, 0x08, 0xe1, 0x2f, 0x3d,
  0xa0, 0x64, 0x5a, 0x3c, 0xf0, 0xa8, 0x97, 0x3c, 0x46, 0x3d, 0x42, 0xbb,
  0x8c, 0x25, 0x7b, 0xbd, 0x81, 0x7f, 0x15, 0x3e, 0x9a, 0x5a, 0x9f, 0xbd,
  0xc1, 0x52, 0xa8, 0xbd, 0x4b, 0x87, 0xd4, 0xbd, 0xf8, 0xee, 0x8b, 0x3f,
  0x88, 0xd7, 0xd4, 0xbc, 0x40, 0xf0, 0xb1, 0x3d, 0xd2, 0xed, 0x9f, 0x3d,
  0x43, 0x8a, 0x3d, 0x3e, 0x0d, 0xb1, 0xa4, 0xbe, 0x8f, 0x2d, 0x2b, 0x3e,
  0x4e, 0x5b, 0x36, 0x3f, 0xc4, 0x72, 0x2c, 0xbe, 0xdf, 0xa2, 0x0a, 0x3e,
  0x90, 0xd7, 0x9e, 0x3e, 0x4a, 0x1e, 0x5c, 0x3e, 0x3a, 0xb9, 0x19, 0x3e,
  0xd0, 0x12, 0xb2, 0xbc, 0xb6, 0x97, 0xb5, 0x3d, 0x2a, 0xac, 0xd1, 0xbd,
  0x47, 0x7d, 0x96, 0xbd, 0xb0, 0x55, 0x9d, 0xbe, 0x94, 0x21, 0xa2, 0xbd,
  0xbc, 0x01, 0x5c, 0x3d, 0xc9, 0xe7, 0x29, 0xbe, 0x0e, 0x5e, 0x9e, 0x3d,
  0x2a, 0x97, 0x7b, 0xbc, 0x81, 0x7c, 0x8d, 0xbd, 0xaa, 0x03, 0x0e, 0x3f,
  0xeb, 0x21, 0xc1, 0x3e, 0xd2, 0x35, 0xc8, 0xbc, 0x20, 0xec, 0x4a, 0xbc,
  0x0d, 0xb9, 0xed, 0xbe, 0xe8, 0x2d, 0x05, 0xbd, 0xfc, 0x81, 0x36, 0x3d,
  0x41, 0xda, 0xc5, 0xbd, 0x7a, 0xab, 0x86, 0x3e, 0x69, 0xb0, 0x90, 0x3f,
  0x6a, 0xa7, 0xd9, 0x3d, 0xa8, 0x80, 0x19, 0x3f, 0x9e, 0x39, 0x6b, 0xbf,
  0x39, 0xb3, 0xd4, 0x3d, 0x10, 0x0a, 0x4a, 0x3c, 0xbf, 0x55, 0x4c, 0x3d,
  0x99, 0x24, 0xac, 0xbe, 0xa0, 0x20, 0x0e, 0x3d, 0x89, 0x88, 0x34, 0x3e,
  0xcf, 0x0c, 0x0d, 0x3e, 0xbe, 0x2f, 0x9a, 0x3d, 0x50, 0xf6, 0x93, 0xbc,
  0xf3, 0x3f, 0x2d, 0xbe, 0x72, 0x26, 0x6b, 0x3e, 0x50, 0x7f, 0x64, 0x3d,
  0x50, 0xa2, 0xbd, 0x3c, 0x95, 0xb4, 0x76, 0x3e, 0x29, 0xc7, 0x05, 0x3e,
  0xbe, 0xa8, 0xe1, 0xbd, 0x44, 0xaf, 0x47, 0x3d, 0x87, 0xa6, 0xea, 0x3e,
  0xdd, 0x4b, 0x18, 0x3e, 0xf8, 0x19, 0x7d, 0x3d, 0x56, 0x8e, 0xdc, 0xbe,
  0xac, 0x54, 0xbd, 0x3e, 0x6e, 0x1e, 0xbe, 0xbd, 0x6e, 0x84, 0xad, 0x3d,
  0xf4, 0xe5, 0x38, 0xbd, 0x55, 0xf9, 0xeb, 0x3e, 0xa8, 0x9c, 0xf8, 0x3c,
  0xfc, 0x6a, 0x1a, 0x3f, 0xa0, 0x1d, 0x99, 0x3f, 0x77, 0xc2, 0xdd, 0xbd,
  0x08, 0xcb, 0x2d, 0x3e, 0x83, 0x09, 0x7a, 0xbe, 0x40, 0x8e, 0x0b, 0x3e,
  0xd6, 0x56, 0x11, 0xbf, 0xe0, 0x7b, 0xac, 0x3e, 0xfd, 0xe0, 0x75, 0xbc,
  0x8b, 0x5a, 0x07, 0x3e, 0xb8, 0xd2, 0xe2, 0x3e, 0x3d, 0x55, 0x80, 0xbe,
  0xce, 0x94, 0x62, 0xbd, 0xa1, 0x8e, 0x8f, 0xbe, 0x4e, 0x08, 0x87, 0xbd,
  0xc2, 0xc3, 0xe3, 0x3d, 0xf0, 0x76, 0x58, 0xbd, 0x90, 0x03, 0x6b, 0xbd,
  0x84, 0xd1, 0x08, 0x3d, 0x84, 0x4d, 0x23, 0x3d, 0x7e, 0x96, 0x33, 0xbe,
  0xf4, 0xd3, 0x39, 0x3f, 0x67, 0x8d, 0x43, 0xbe, 0xed, 0xa3, 0xf2, 0xbd,
  0x3c, 0xa3, 0x08, 0xbe, 0x3b, 0xf5, 0xab, 0x3d, 0x9a, 0x5e, 0xa7, 0xbb,
  0xf8, 0x73, 0x95, 0x3c, 0xc1, 0x9b, 0xdb, 0x3e, 0x5b, 0xa2, 0xa7, 0xbd,
  0x94, 0x52, 0x68, 0x3d, 0x01, 0x9f, 0x10, 0x3e, 0xbe, 0x52, 0x11, 0xbe,
  0x1a, 0x6f, 0x0d, 0x3f, 0x0b, 0x39, 0x11, 0x3e, 0x4b, 0x55, 0x83, 0x3d,
  0xe6, 0x39, 0xfb, 0x3d, 0x61, 0x4f, 0xb4, 0xbd, 0xb9, 0xa0, 0x9a, 0x3d,
  0x65, 0x37, 0x1a, 0xbe, 0xea, 0x76, 0xae, 0x3d, 0xc3, 0x82, 0xd0, 0xbd,
  0xbf, 0xdf, 0xfb, 0x3d, 0xd9, 0xa3, 0x09, 0x3e, 0x3c, 0x4d, 0x56, 0x3d,
  0xe7, 0x3e, 0xc8, 0x3d, 0xaa, 0x1e, 0x84, 0x3d, 0x10, 0x1e, 0xfc, 0x3c,
  0x80, 0x1d, 0x05, 0x3b, 0x30, 0x0c, 0xae, 0x3c, 0x53, 0x40, 0x36, 0x3d,
  0x3a, 0x6c, 0xe5, 0x3d, 0x10, 0xac, 0x01, 0x3d, 0x26, 0x70, 0xc1, 0x3d,
  0x28, 0x87, 0x4b, 0xbd, 0x4b, 0xd4, 0x0c, 0x3e, 0x50, 0xfb, 0x51, 0xbc,
  0x78, 0x5a, 0xfe, 0xbc, 0xf2, 0x22, 0xd2, 0xbd, 0x24, 0x93, 0x24, 0x3d,
  0x00, 0xcb, 0x85, 0xbc, 0x1c, 0xd2, 0x7a, 0x3d, 0x1d, 0x80, 0xdb, 0xbd,
  0xc2, 0xeb, 0x66, 0xbd, 0x20, 0xce, 0x01, 0x3d, 0xb1, 0x4b, 0xdd, 0xbd,
  0xda, 0x92, 0xa1, 0x3d, 0xd3, 0xf8, 0x07, 0x3e, 0xce, 0x7c, 0x39, 0x3d,
  0x02, 0x56, 0xc4, 0xbd, 0x73, 0x4f, 0x29, 0x3e, 0x1c, 0xd3, 0x02, 0x3e,
  0x57, 0x14, 0x60, 0x3d, 0xa9, 0xf8, 0x34, 0x3e, 0xcb, 0x6a, 0x10, 0x3b,
  0x2d, 0xa3, 0x2e, 0x3e, 0x59, 0xeb, 0xee, 0x3d, 0x0b, 0x90, 0x0a, 0x3e,
  0x48, 0xd5, 0x8b, 0xbd, 0x8a, 0x2f, 0xa7, 0x3d, 0x38, 0xf6, 0x77, 0x3d,
  0x42, 0x37, 0xb6, 0xbd, 0x97, 0xde, 0x0e, 0xbe, 0x03, 0x35, 0x18, 0xbe,
  0x38, 0x59, 0x80, 0xbd, 0xfb, 0x72, 0x96, 0xbd, 0x33, 0x2a, 0x21, 0xbe,
  0x48, 0xe3, 0xfb, 0xbc, 0xf6, 0x4f, 0xd7, 0xbb, 0x11, 0x29, 0x53, 0x3d,
  0x0e, 0x57, 0xc0, 0x3b, 0x9c, 0x0c, 0x07, 0xbd, 0xc5, 0x71, 0xd3, 0xbd,
  0x96, 0x73, 0x94, 0x3d, 0xa1, 0x03, 0x86, 0xbd, 0xf1, 0xa1, 0xe4, 0xbd,
  0x60, 0x5b, 0x42, 0xbd, 0xc9, 0x2a, 0xa6, 0x3d, 0xd8, 0xba, 0x4f, 0xbd,
  0x63, 0xda, 0x4a, 0x3e, 0x07, 0x0e, 0xb6, 0xbd, 0xef, 0x6f, 0x28, 0x3e,
  0x39, 0x76, 0xc9, 0xbd, 0x4e, 0xa0, 0xc0, 0xbd, 0x02, 0xb4, 0x62, 0x3d,
  0xff, 0x61, 0x29, 0xbe, 0xe0, 0xe3, 0x22, 0x3c, 0xd0, 0x70, 0x1f, 0x3d,
  0x02, 0xb5, 0xcb, 0x3d, 0x73, 0x17, 0xe9, 0x3d, 0xd3, 0x2f, 0x0d, 0x3e,
  0x33, 0x09, 0xc0, 0xbd, 0x80, 0x02, 0x8f, 0x3d, 0x4e, 0x11, 0xff, 0x3d,
  0xee, 0x32, 0x92, 0xbd, 0xae, 0x6f, 0xe3, 0xbd, 0xcc, 0xda, 0x1f, 0xbe,
  0x73, 0xa9, 0x31, 0x3e, 0x14, 0x99, 0xe6, 0x3c, 0x1a, 0x2d, 0x00, 0xbc,
  0xbb, 0x54, 0x8d, 0xbd, 0x07, 0x57, 0x3f, 0xbe, 0xf2, 0x88, 0x41, 0x3e,
  0xfc, 0xf5, 0x23, 0xbe, 0x13, 0x25, 0x01, 0x3e, 0xab, 0xc4, 0x23, 0x3d,
  0x10, 0xb4, 0x22, 0x3e, 0xd6, 0x35, 0x81, 0x3d, 0x61, 0x22, 0x4b, 0x3e,
  0x43, 0x19, 0x3b, 0x3e, 0xc0, 0xd6, 0x10, 0x3c, 0xdf, 0x9d, 0x2d, 0xbe,
  0xac, 0xf9, 0x1c, 0x3e, 0xe1, 0xb2, 0x39, 0x3d, 0x1e, 0x63, 0xcd, 0xbd,
  0x32, 0xbc, 0xc9, 0xba, 0xb2, 0xee, 0x14, 0xbe, 0xde, 0x57, 0x14, 0xbe,
  0xf8, 0x20, 0xba, 0x3c, 0xbb, 0x3a, 0x2a, 0xbe, 0x48, 0xb8, 0x0d, 0xbd,
  0x0d, 0x12, 0x25, 0xbe, 0xaf, 0x94, 0x13, 0x3e, 0x2c, 0x30, 0x32, 0x3d,
  0x88, 0x4f, 0x39, 0x3d, 0xff, 0x78, 0xd4, 0xbd, 0x6d, 0xae, 0xae, 0xbd,
  0x36, 0xc1, 0x06, 0xbe, 0x24, 0x91, 0x74, 0x3d, 0x7f, 0x6e, 0xe6, 0x3b,
  0x73, 0x66, 0x06, 0xbd, 0x2a, 0xc2, 0xe3, 0x3d, 0x1b, 0xab, 0x1a, 0xbe,
  0xe2, 0x9f, 0x07, 0xbc, 0xd7, 0x3f, 0x26, 0xbc, 0x1b, 0xe8, 0x21, 0x3e,
  0x7c, 0xde, 0xa5, 0x3d, 0x60, 0x78, 0xbc, 0xbb, 0x60, 0x07, 0x6a, 0x3c,
  0x36, 0x67, 0x9d, 0x3d, 0x9a, 0xdd, 0xb4, 0x3d, 0xd0, 0x9e, 0x32, 0x3e,
  0x62, 0xe5, 0xc6, 0x3d, 0x24, 0x95, 0xd2, 0xbd, 0xeb, 0xa5, 0xbf, 0xbd,
  0x18, 0x2e, 0x8f, 0xbd, 0x7c, 0x8c, 0xc2, 0xbd, 0x2b, 0x5b, 0x1b, 0x3e,
  0x80, 0xb7, 0x8b, 0xbd, 0xe6, 0x18, 0x1f, 0xbe, 0x18, 0xb1, 0x95, 0x3c,
  0x71, 0xac, 0x00, 0xbf, 0xcb, 0xae, 0x30, 0x3e, 0xb9, 0xe1, 0x67, 0x3e,
  0xd9, 0xcf, 0x0f, 0x3e, 0xe5, 0x3f, 0x13, 0x3e, 0x14, 0x06, 0x29, 0xbd,
  0xf8, 0x89, 0x45, 0x3e, 0x4d, 0x11, 0xd4, 0xbf, 0xd4, 0x4b, 0x5c, 0x3d,
  0xae, 0x37, 0x08, 0xbe, 0x80, 0x69, 0x9f, 0x3e, 0x62, 0xba, 0x88, 0xbd,
  0xbb, 0xf1, 0xa2, 0xbd, 0x93, 0x91, 0xdf, 0xbd, 0x82, 0x29, 0xfc, 0x3d,
  0x3a, 0x1f, 0x21, 0x3e, 0x50, 0x30, 0x04, 0x3d, 0x58, 0xcd, 0xf8, 0xbc,
  0x10, 0x26, 0x86, 0x3c, 0x1b, 0xc7, 0x44, 0xbe, 0xf1, 0x2a, 0x0e, 0xbe,
  0xab, 0x57, 0x32, 0xbf, 0x20, 0x90, 0xbc, 0xbd, 0x13, 0x3d, 0x23, 0xbe,
  0x67, 0x97, 0xed, 0xbd, 0xbe, 0xbe, 0x8a, 0xbe, 0x59, 0x9a, 0x16, 0x3e,
  0x94, 0x7c, 0x47, 0xbd, 0xfc, 0xb9, 0x15, 0xbf, 0xa1, 0x15, 0x97, 0x3e,
  0x50, 0x10, 0x39, 0xbc, 0x01, 0x92, 0xab, 0xbe, 0xfb, 0xd2, 0x66, 0xbe,
  0xe4, 0xbb, 0x9d, 0xbe, 0x8d, 0xf4, 0xa4, 0xbd, 0x47, 0xad, 0x32, 0x3e,
  0xd0, 0xa2, 0x36, 0xbc, 0x60, 0x79, 0x89, 0xbb, 0xa9, 0x84, 0x85, 0x3e,
  0xf3, 0x1a, 0x11, 0xbe, 0x23, 0x44, 0xde, 0xbe, 0x33, 0x6d, 0x2e, 0x3e,
  0x70, 0x57, 0x34, 0x3d, 0x19, 0x03, 0x05, 0x3d, 0xd8, 0xa7, 0x9d, 0xbd,
  0x09, 0x98, 0x24, 0xbf, 0xe3, 0x48, 0x50, 0xbf, 0x5d, 0x55, 0xfc, 0xbe,
  0x82, 0x79, 0xb7, 0x3d, 0x34, 0xf5, 0x29, 0x3e, 0xa3, 0xa9, 0xfd, 0xbd,
  0xa3, 0xab, 0x1e, 0x3e, 0x2a, 0xe9, 0x0d, 0x3e, 0x9c, 0x4e, 0xff, 0xbd,
  0xb8, 0x5c, 0xa1, 0xbf, 0x80, 0xc2, 0x7a, 0x3c, 0x13, 0xd6, 0x54, 0xbf,
  0x47, 0x6b, 0x93, 0x3f, 0xf9, 0xe7, 0xeb, 0xbd, 0xd0, 0x8f, 0x66, 0x3c,
  0x9c, 0x1f, 0xd8, 0x3d, 0xb7, 0x99, 0xa0, 0x3e, 0xf0, 0xad, 0xff, 0xbd,
  0x5d, 0x8f, 0x9f, 0xbd, 0x22, 0xf9, 0x22, 0xbe, 0x42, 0xb0, 0x55, 0xbd,
  0x79, 0x34, 0xa5, 0x3e, 0x4a, 0xe8, 0x8a, 0x3e, 0x2c, 0x9c, 0xda, 0xbe,
  0x95, 0x46, 0xda, 0xbd, 0x8b, 0xea, 0x1b, 0x3e, 0xd6, 0xc5, 0x0f, 0xbe,
  0x00, 0x52, 0x4c, 0xbb, 0xda, 0x98, 0xe3, 0x3d, 0x72, 0xa8, 0x93, 0x3d,
  0xaf, 0xa8, 0x1c, 0xbe, 0x3f, 0x10, 0xbd, 0xbe, 0x40, 0x59, 0xfd, 0xbc,
  0xed, 0x23, 0x4e, 0x3f, 0xa7, 0x7a, 0x19, 0xbf, 0xa7, 0x43, 0x82, 0x3c,
  0xd4, 0xee, 0x1b, 0x3d, 0xe1, 0x2f, 0x9f, 0x3d, 0xfa, 0x45, 0x07, 0xbe,
  0x09, 0xa1, 0xd8, 0xbd, 0xd4, 0x34, 0x14, 0xbf, 0xc8, 0xb9, 0x16, 0xbf,
  0x00, 0xd7, 0xd6, 0xba, 0x37, 0xa9, 0x91, 0xbd, 0xe7, 0x7e, 0xe6, 0x3d,
  0xc4, 0xcd, 0x1b, 0xbe, 0xae, 0x63, 0x11, 0x3f, 0xf6, 0xc4, 0x43, 0xbe,
  0xd0, 0x88, 0x12, 0x3e, 0xa1, 0x30, 0x8f, 0x3d, 0x13, 0x14, 0x08, 0xbf,
  0x09, 0x6e, 0xe3, 0x3e, 0x0f, 0xe4, 0x12, 0xbe, 0x19, 0x1c, 0x34, 0x3e,
  0xf5, 0x2e, 0x1d, 0x3e, 0x18, 0xbd, 0x59, 0xbd, 0x24, 0xc1, 0x85, 0x3d,
  0x1b, 0x94, 0x20, 0xbe, 0x2c, 0xd9, 0xd6, 0xbd, 0x90, 0xfb, 0x8e, 0xbc,
  0x56, 0x82, 0x0e, 0xbe, 0x18, 0x83, 0x10, 0xbf, 0xc6, 0x74, 0x56, 0xbd,
  0xe4, 0xca, 0x8c, 0x3d, 0x0a, 0x6b, 0xf5, 0x3d, 0xa0, 0xb1, 0xb3, 0xbe,
  0x4c, 0xa3, 0x25, 0x3e, 0x16, 0xf5, 0xff, 0xbd, 0xaf, 0x9b, 0x41, 0xbf,
  0xaa, 0x93, 0xe2, 0x3d, 0xd8, 0x36, 0xfa, 0xbc, 0x02, 0x1f, 0xab, 0x3d,
  0xa8, 0xf4, 0x1d, 0xbd, 0x31, 0xf0, 0x16, 0xbf, 0x11, 0x44, 0xd9, 0xbd,
  0x32, 0xb1, 0xb2, 0xbe, 0xf0, 0x76, 0x43, 0x3d, 0xdf, 0x33, 0x31, 0xbe,
  0xd4, 0x1a, 0x9b, 0x3e, 0x41, 0x01, 0x94, 0x3e, 0x69, 0xd9, 0xd5, 0x3e,
  0x4e, 0xd6, 0xab, 0xbd, 0x52, 0x95, 0x57, 0x3e, 0x8d, 0xd3, 0xd9, 0x3e,
  0x60, 0xcb, 0xc5, 0x3c, 0x81, 0xfc, 0x0d, 0x3e, 0xf1, 0xb3, 0x2e, 0xbe,
  0x82, 0x3c, 0xfe, 0x3d, 0xb9, 0x0a, 0x29, 0x3e, 0xd1, 0xe9, 0x50, 0xbd,
  0x91, 0xfa, 0xad, 0x3e, 0xf2, 0xb8, 0xd5, 0x3d, 0xf8, 0x5e, 0x64, 0x3d,
  0xd5, 0xfc, 0xb6, 0xbd, 0xc5, 0x7d, 0x30, 0x3e, 0x44, 0xaf, 0x95, 0x3d,
  0x4a, 0x46, 0x63, 0xbd, 0x8c, 0xbb, 0x8d, 0x3d, 0xc0, 0xa1, 0x59, 0x3e,
  0xae, 0x44, 0xa9, 0x3d, 0x0c, 0x49, 0x69, 0x3d, 0x60, 0xe2, 0x78, 0xbc,
  0x8f, 0xd6, 0x8e, 0x3e, 0x80, 0x13, 0xd8, 0x3b, 0x63, 0x41, 0x11, 0x3c,
  0xf0, 0xfd, 0x25, 0xbd, 0xf3, 0x11, 0x17, 0x3e, 0x06, 0x83, 0xaf, 0xbd,
  0xae, 0x61, 0x19, 0x3f, 0x1d, 0xc3, 0xd1, 0x3d, 0xe0, 0xc3, 0x7c, 0x3d,
  0x3e, 0xee, 0x4a, 0x3d, 0x18, 0x45, 0xb5, 0xbd, 0x17, 0x74, 0x1d, 0xbe,
  0x40, 0xe7, 0x5d, 0x3f, 0x3d, 0xe1, 0x70, 0x3e, 0x21, 0x91, 0x03, 0x3f,
  0xab, 0x47, 0x34, 0x3e, 0x87, 0x13, 0x2d, 0x3e, 0x64, 0xc9, 0x3d, 0xbd,
  0x82, 0xaa, 0xf0, 0x3d, 0xd6, 0xc5, 0xae, 0xbd, 0x00, 0x83, 0x94, 0xbc,
  0xde, 0xd6, 0x0a, 0x3f, 0x10, 0x4a, 0xaf, 0x3c, 0x97, 0xb4, 0x1c, 0x3e,
  0xa9, 0x60, 0xbc, 0xbd, 0x36, 0xf8, 0x88, 0xbd, 0xf6, 0x17, 0x9d, 0x3e,
  0x7f, 0x91, 0xd2, 0x3e, 0xe5, 0x75, 0x19, 0x3f, 0xc3, 0x46, 0x23, 0x3e,
  0xb8, 0xda, 0x9a, 0x3c, 0xbf, 0xa8, 0x04, 0xbe, 0x9b, 0xce, 0x98, 0xbd,
  0xa6, 0x0c, 0x74, 0x3e, 0x2d, 0xdc, 0xc8, 0x3e, 0x9d, 0x2c, 0xb9, 0x3e,
  0x84, 0xca, 0xc2, 0xbd, 0xb1, 0x22, 0xce, 0x3e, 0xcd, 0xe9, 0xdc, 0xbe,
  0x48, 0x42, 0xab, 0x3e, 0x62, 0xf5, 0xb3, 0x3d, 0xa3, 0x4f, 0x23, 0x3e,
  0x7d, 0xce, 0x62, 0xbe, 0x4f, 0xb3, 0xbf, 0xbd, 0x47, 0xce, 0x33, 0x3e,
  0x02, 0xb9, 0x84, 0x3d, 0x8c, 0x1c, 0x4f, 0x3d, 0xcf, 0x3f, 0xc1, 0x3b,
  0x1a, 0xb3, 0x42, 0xbd, 0x1b, 0x05, 0x5d, 0x3f, 0x38, 0x8a, 0xc0, 0x3c,
  0xe0, 0xb2, 0x26, 0xbe, 0xf2, 0xf9, 0x8c, 0x3e, 0xc2, 0x3a, 0xbd, 0xbd,
  0xe4, 0x1c, 0x49, 0x3e, 0xec, 0x28, 0x4a, 0x3d, 0xc8, 0xe3, 0x80, 0x3e,
  0x91, 0x53, 0x8d, 0x3e, 0x32, 0xb5, 0x7c, 0xbd, 0x83, 0x42, 0x08, 0xbf,
  0x4c, 0x6e, 0xff, 0x3e, 0x28, 0x25, 0xa2, 0x3e, 0xd0, 0x41, 0x1b, 0x3d,
  0xfa, 0x66, 0xf4, 0x3c, 0x3a, 0xb6, 0x84, 0x3e, 0x50, 0x73, 0x41, 0xbc,
  0x4a, 0x80, 0x8d, 0x3e, 0xec, 0xe1, 0x89, 0x3d, 0x58, 0x0d, 0xbe, 0xbd,
  0xc8, 0x88, 0x31, 0x3e, 0x90, 0xd4, 0x38, 0x3d, 0xac, 0xd7, 0x21, 0x3e,
  0x97, 0x65, 0x29, 0xbf, 0xaf, 0x4e, 0xdf, 0x3e, 0xb6, 0x16, 0xde, 0xbd,
  0xee, 0x68, 0xb8, 0xbd, 0x3d, 0x74, 0x2b, 0x3f, 0x0e, 0x8f, 0xe8, 0xbe,
  0xb1, 0xaf, 0x31, 0x3e, 0x31, 0xc6, 0xad, 0x3c, 0xb8, 0x32, 0x24, 0xbd,
  0xc6, 0x4c, 0xe9, 0x3d, 0xdb, 0x55, 0xfb, 0xbd, 0x5e, 0xd9, 0x9d, 0x3d,
  0x40, 0x93, 0x78, 0x3b, 0xc2, 0xdf, 0xb0, 0xbd, 0xa0, 0x46, 0x9f, 0xbb,
  0x86, 0x48, 0x53, 0x3e, 0xff, 0x78, 0x73, 0x3c, 0x11, 0x35, 0x11, 0x3e,
  0xaf, 0x63, 0x2a, 0x3e, 0xbd, 0x03, 0xc5, 0x3e, 0x95, 0x39, 0xd6, 0xbc,
  0x20, 0x61, 0x67, 0x3c, 0x80, 0x86, 0x2e, 0x3f, 0x5c, 0x5b, 0x81, 0x3d,
  0x24, 0x78, 0x3e, 0xbd, 0x95, 0x4d, 0x05, 0x3e, 0x30, 0x98, 0x99, 0xbc,
  0xdd, 0xfc, 0x21, 0x3e, 0x08, 0xbb, 0x20, 0x3d, 0x53, 0x6f, 0x8b, 0x3f,
  0xe2, 0x48, 0xd5, 0x3d, 0xf8, 0x95, 0xe8, 0xbd, 0x73, 0x99, 0x41, 0xbe,
  0x91, 0x2a, 0x34, 0xbe, 0x9a, 0x09, 0x91, 0xbd, 0x57, 0xa0, 0x9b, 0xbd,
  0x82, 0x9d, 0x29, 0xbd, 0x97, 0xb5, 0x03, 0x3e, 0x14, 0x67, 0x36, 0x3d,
  0x61, 0x56, 0xb9, 0x3d, 0xa5, 0xef, 0xa4, 0xbd, 0xb4, 0x4e, 0x08, 0xbe,
  0x78, 0x5e, 0x98, 0x3c, 0xbe, 0xc1, 0xf3, 0x3d, 0x05, 0x5c, 0xed, 0xbd,
  0xd9, 0xce, 0xb1, 0xbd, 0x30, 0xf5, 0xe6, 0xbc, 0xbc, 0xfc, 0x98, 0xbd,
  0xad, 0x6a, 0x0b, 0x3e, 0x52, 0xc6, 0xb5, 0x3d, 0xf9, 0xfe, 0xdc, 0xbd,
  0xf4, 0x0c, 0x13, 0x3d, 0xe3, 0x32, 0x91, 0x3c, 0x48, 0xeb, 0x02, 0xbe,
  0x34, 0x7e, 0xee, 0xbd, 0x94, 0x2e, 0x28, 0x3d, 0xe7, 0x1d, 0xdf, 0x3b,
  0x70, 0xdf, 0x35, 0xbd, 0x03, 0x0e, 0x70, 0x3d, 0x5d, 0x81, 0x0c, 0x3e,
  0xf7, 0xd7, 0x8d, 0xbd, 0xd0, 0xf6, 0x22, 0xbe, 0xba, 0xfa, 0x85, 0x3d,
  0x4a, 0x7c, 0xe2, 0x3d, 0xec, 0x24, 0x17, 0xbd, 0x3e, 0xf5, 0x82, 0x3d,
  0x01, 0xbe, 0xb7, 0xbd, 0x20, 0x7e, 0xe1, 0x3b, 0x7a, 0x2e, 0xa9, 0x3d,
  0x23, 0x20, 0xae, 0xbd, 0x92, 0x92, 0x9f, 0xbd, 0x50, 0x0e, 0x4e, 0x3c,
  0xc6, 0xfd, 0xd1, 0x3d, 0x28, 0x2c, 0x04, 0x3d, 0x98, 0x82, 0x23, 0x3d,
  0x57, 0x42, 0x0b, 0x3e, 0x50, 0xa0, 0xd7, 0xbd, 0x31, 0x52, 0x9c, 0xbb,
  0xb0, 0xe9, 0x49, 0xbd, 0x40, 0x5b, 0x4d, 0x3b, 0x94, 0x9a, 0x9e, 0xbd,
  0x22, 0x86, 0xf2, 0x3d, 0x62, 0xe0, 0x1a, 0x3d, 0x9c, 0xee, 0x2c, 0xbe,
  0x8a, 0xe5, 0x3f, 0x3d, 0x4a, 0x33, 0xaf, 0x3d, 0xe7, 0x02, 0x09, 0xbe,
  0xa8, 0x2e, 0xf0, 0xbc, 0xb5, 0xe4, 0xac, 0xbd, 0xf8, 0xaf, 0xcf, 0xbd,
  0xc9, 0x91, 0x12, 0x3e, 0xe6, 0xbf, 0x57, 0xbc, 0x64, 0x25, 0x1b, 0xbd,
  0x0d, 0x34, 0xa2, 0x3c, 0x7e, 0xc0, 0xa6, 0x3b, 0x05, 0x3c, 0xd3, 0xbd,
  0x63, 0xd5, 0x18, 0x3e, 0x72, 0xc0, 0x82, 0xbd, 0x56, 0x54, 0x01, 0xbe,
  0x1d, 0xe1, 0x89, 0xbd, 0xd2, 0x43, 0xa9, 0x3d, 0xcc, 0x99, 0x40, 0xbd,
  0x40, 0xbe, 0x41, 0x3c, 0x7f, 0xe3, 0x08, 0xbd, 0x22, 0xc8, 0x0c, 0xbe,
  0x33, 0x11, 0x2b, 0xbe, 0x89, 0xa5, 0x23, 0x3e, 0xc1, 0x1d, 0x26, 0x3e,
  0x09, 0x80, 0xb0, 0x3d, 0x9a, 0xc9, 0x9e, 0xbd, 0x5e, 0xcf, 0x16, 0x3e,
  0x6c, 0x09, 0x18, 0xbe, 0x41, 0x6b, 0xdc, 0x3c, 0xfd, 0x68, 0x7b, 0xbc,
  0x31, 0x5f, 0x20, 0x3e, 0xdd, 0x3a, 0x37, 0xbe, 0x79, 0x18, 0x63, 0x3d,
  0x34, 0xc6, 0x03, 0xbe, 0xf5, 0xb8, 0xac, 0xbd, 0x55, 0x3e, 0xe2, 0x3d,
  0x0f, 0x2e, 0x8c, 0xbc, 0x92, 0x36, 0xab, 0x3d, 0x2f, 0xda, 0x0e, 0x3e,
  0x1e, 0xed, 0x0f, 0xbe, 0xec, 0xf5, 0x51, 0x3d, 0x03, 0x6a, 0xb0, 0x3c,
  0x89, 0xa5, 0x81, 0x3d, 0xa7, 0x75, 0x9f, 0xbd, 0x97, 0x70, 0x12, 0x3c,
  0x63, 0x25, 0x53, 0x3d, 0x35, 0x62, 0xe4, 0x3d, 0x23, 0x52, 0xa6, 0x3d,
  0x04, 0x0f, 0x5a, 0xbc, 0x68, 0x46, 0x8c, 0xbd, 0x58, 0x59, 0x82, 0x3d,
  0x43, 0x6d, 0x28, 0xbe, 0x88, 0xda, 0x86, 0x3c, 0xc4, 0xdd, 0x94, 0x3d,
  0x68, 0xda, 0xf2, 0x3c, 0xea, 0x20, 0x00, 0xbe, 0x8d, 0xd1, 0x00, 0x3e,
  0xb6, 0x27, 0x9b, 0x3d, 0x9a, 0xe8, 0xab, 0xbd, 0x77, 0x5f, 0xdc, 0x3c,
  0x68, 0xf8, 0xf4, 0x3d, 0x05, 0xd4, 0x1e, 0xbe, 0x48, 0xa0, 0x1a, 0x3d,
  0xae, 0x0a, 0x94, 0xbd, 0x3d, 0xac, 0x5f, 0xbd, 0x4c, 0x14, 0x72, 0x3d,
  0x3f, 0xc6, 0xc1, 0x3d, 0x26, 0x8c, 0xaa, 0x3d, 0xad, 0x27, 0x2a, 0xbe,
  0x19, 0x48, 0xf5, 0xbd, 0x7e, 0x45, 0x75, 0xbd, 0xc9, 0x96, 0xa2, 0x3d,
  0x9a, 0x53, 0x12, 0xbe, 0xd9, 0xfc, 0xb7, 0xbc, 0x60, 0xff, 0x9c, 0xbd,
  0x37, 0xc2, 0x30, 0x3e, 0xb2, 0x2b, 0xae, 0x3d, 0x2b, 0xf8, 0xc2, 0xbd,
  0x30, 0x92, 0xfc, 0xbc, 0x85, 0xa4, 0xf7, 0xbd, 0xe0, 0xd1, 0x8d, 0x3c,
  0x2a, 0x9b, 0x07, 0xbe, 0x8e, 0x99, 0x9b, 0x3d, 0xac, 0x1c, 0x61, 0x3d,
  0xdb, 0x24, 0x0e, 0x3e, 0x94, 0x58, 0xcc, 0xbd, 0x08, 0x1f, 0xb5, 0xbc,
  0xbd, 0x49, 0x22, 0x3e, 0xda, 0x4a, 0xbb, 0x3d, 0x63, 0x22, 0x1b, 0x3e,
  0x4c, 0x4c, 0x65, 0x3d, 0xf0, 0x1d, 0x58, 0x3d, 0x8c, 0xc5, 0x4f, 0x3d,
  0xee, 0x6e, 0xbd, 0x3d, 0x12, 0x0a, 0xc8, 0x3d, 0x57, 0x14, 0xdd, 0xbd,
  0x60, 0xd5, 0x3b, 0x3d, 0xba, 0x7c, 0x1a, 0xbe, 0x70, 0x7c, 0x00, 0xbd,
  0x1a, 0xb4, 0x00, 0xbe, 0x19, 0x72, 0x2b, 0x3e, 0x13, 0xd4, 0x29, 0xbe,
  0xd7, 0xb1, 0x28, 0xbe, 0x2e, 0x81, 0x00, 0xbe, 0x00, 0x54, 0x0d, 0xbd,
  0x94, 0xb8, 0x15, 0xbe, 0x4c, 0x9c, 0xa3, 0xbd, 0xbc, 0xc3, 0x90, 0x3d,
  0x90, 0xbd, 0x79, 0x3c, 0xe8, 0xb9, 0x12, 0x3d, 0x7c, 0xf6, 0x3b, 0x3d,
  0xd5, 0xc0, 0x2c, 0xbe, 0xa8, 0xa7, 0xa5, 0xbc, 0xa4, 0xdb, 0x71, 0xbd,
  0x15, 0x94, 0xc8, 0xbd, 0x04, 0x08, 0x30, 0xbe, 0x82, 0xa3, 0xf3, 0x3d,
  0x48, 0x77, 0x40, 0x3d, 0xf9, 0x7f, 0x11, 0x3e, 0x22, 0x0d, 0xbc, 0xbd,
  0x23, 0x0a, 0x10, 0xbe, 0xcc, 0x71, 0x18, 0xbd, 0xde, 0x99, 0x93, 0x3d,
  0xa7, 0xbb, 0xc5, 0xbd, 0x23, 0xf8, 0x27, 0x3e, 0x7e, 0x09, 0xd0, 0x3d,
  0x91, 0x30, 0xd7, 0xbd, 0xc5, 0x50, 0xc5, 0xbd, 0xa1, 0x2a, 0xc9, 0xbd,
  0x20, 0xc4, 0x2e, 0xbe, 0xb1, 0x5e, 0x18, 0x3e, 0x00, 0xdf, 0xa3, 0xba,
  0xc7, 0x3d, 0x18, 0x3e, 0xf6, 0x90, 0x6f, 0xbd, 0x41, 0x8b, 0x26, 0x3e,
  0x88, 0xaa, 0xca, 0x3c, 0x44, 0xd5, 0x0f, 0x3d, 0x6b, 0xe6, 0x00, 0x3e,
  0x57, 0xe2, 0xdf, 0xbd, 0x80, 0x75, 0x85, 0xbd, 0x18, 0x9e, 0x58, 0x3d,
  0xee, 0x52, 0xde, 0x3d, 0x76, 0x5f, 0xec, 0x3d, 0x66, 0xe4, 0xaf, 0x3d,
  0xb4, 0x15, 0x6a, 0x3d, 0xdd, 0x6c, 0x19, 0xbe, 0x08, 0xe5, 0xee, 0x3c,
  0x93, 0x9d, 0x33, 0xbe, 0x23, 0xac, 0x1e, 0x3e, 0xe6, 0xe4, 0xfd, 0x3d,
  0xf4, 0xf0, 0x48, 0xbd, 0x6a, 0xea, 0xf3, 0xbd, 0xd0, 0x29, 0x84, 0xbc,
  0x8c, 0x89, 0x40, 0x3d, 0x59, 0xa8, 0xe9, 0xbd, 0x66, 0xc9, 0xe1, 0x3d,
  0xa8, 0xb5, 0xec, 0xbd, 0x20, 0xd7, 0xfc, 0xbb, 0x37, 0xb3, 0x21, 0x3e,
  0xdd, 0xc0, 0xf4, 0xbd, 0xec, 0x60, 0x13, 0xbd, 0x4c, 0x4e, 0x2c, 0xbd,
  0x80, 0xbe, 0xdb, 0x3c, 0xd3, 0x56, 0x9b, 0xbd, 0x68, 0xc5, 0xe5, 0xbd,
  0xa6, 0xcd, 0xf2, 0xbd, 0x48, 0x45, 0x9a, 0xbd, 0xb1, 0x47, 0x33, 0x3e,
  0xfb, 0xc3, 0x19, 0x3e, 0xc8, 0x2d, 0x21, 0xbe, 0x62, 0xfe, 0x93, 0xbd,
  0x1e, 0xc9, 0xa2, 0x3d, 0xdd, 0x9b, 0x15, 0xbe, 0x3b, 0x78, 0xa0, 0xbd,
  0xe0, 0x6b, 0x4a, 0xbd, 0xd8, 0xaa, 0x9c, 0xbc, 0x28, 0xba, 0xc2, 0x3c,
  0x48, 0xb8, 0xb5, 0xbc, 0x30, 0xfe, 0x1c, 0xbd, 0x54, 0xb6, 0x1f, 0xbd,
  0x6c, 0x72, 0x8a, 0xbd, 0x00, 0xc7, 0xe1, 0x3a, 0x30, 0x3f, 0x1d, 0xbd,
  0xff, 0xee, 0x23, 0xbe, 0xd0, 0xb6, 0x1b, 0xbe, 0x1d, 0x81, 0x0b, 0x3e,
  0x80, 0xb2, 0x03, 0xbc, 0xa8, 0xe8, 0xd8, 0xbc, 0x80, 0x02, 0x1a, 0x3c,
  0x7a, 0xd3, 0xbb, 0x3d, 0x24, 0x8d, 0x92, 0xbd, 0x3e, 0x3f, 0xeb, 0x3d,
  0x94, 0x03, 0x23, 0xbd, 0xe0, 0xb3, 0xae, 0xbc, 0xc2, 0xf3, 0x1d, 0xbe,
  0x26, 0x15, 0xb0, 0x3d, 0x25, 0xf9, 0xa8, 0xbd, 0x26, 0x33, 0xf1, 0xbd,
  0xfe, 0x99, 0xd7, 0xbd, 0x46, 0x00, 0xd9, 0xbd, 0xe0, 0x86, 0xae, 0x3b,
  0x20, 0x9d, 0x57, 0xbc, 0xb2, 0x17, 0xcd, 0xbd, 0x24, 0xbc, 0x0c, 0xbe,
  0xc4, 0xbb, 0x07, 0xbe, 0x5e, 0xa0, 0xaa, 0x3d, 0x42, 0x99, 0xd4, 0xbd,
  0x09, 0x69, 0x03, 0xbe, 0x6e, 0xd2, 0xf8, 0xbd, 0x72, 0x97, 0xbe, 0x3d,
  0x86, 0xdd, 0xe6, 0x3d, 0x12, 0xe4, 0xaa, 0x3d, 0x8f, 0x09, 0xc3, 0xbd,
  0x28, 0x1c, 0xd7, 0xbc, 0x2c, 0xdb, 0x31, 0xbd, 0xc6, 0x85, 0xc2, 0x3d,
  0x05, 0x5d, 0x17, 0xbe, 0xcb, 0x3c, 0x2e, 0x3e, 0xd1, 0xec, 0xc1, 0xbd,
  0x20, 0x4e, 0x1b, 0xbc, 0x31, 0xde, 0x9b, 0xbd, 0xa9, 0x29, 0x9a, 0xbd,
  0x00, 0x38, 0x67, 0xb9, 0x62, 0xa2, 0xa7, 0x3d, 0x6a, 0x7b, 0x98, 0x3d,
  0xf2, 0xd5, 0x9c, 0x3d, 0x80, 0xe3, 0x9f, 0x3c, 0x07, 0xbe, 0x06, 0x3e,
  0xdd, 0x00, 0x0f, 0xbe, 0xea, 0x6d, 0xef, 0x3d, 0x16, 0xb1, 0xf8, 0xbd,
  0xcd, 0x57, 0xea, 0xbd, 0x88, 0x59, 0xe6, 0x3c, 0xc0, 0x5c, 0x78, 0x3d,
  0x1b, 0xc6, 0x19, 0x3e, 0x02, 0x6e, 0xb3, 0xbd, 0x49, 0x48, 0x1d, 0x3e,
  0xfc, 0x1d, 0x2f, 0xbe, 0x13, 0xc1, 0x11, 0xbe, 0xc4, 0x0a, 0x66, 0x3d,
  0x30, 0x04, 0xee, 0xbc, 0xe7, 0x97, 0x9a, 0xbd, 0xb6, 0xdb, 0xcb, 0x3d,
  0x16, 0x91, 0xcf, 0xbd, 0xa4, 0x84, 0x19, 0x3d, 0x62, 0x46, 0x78, 0xbd,
  0xb0, 0x6a, 0x0a, 0xbc, 0x28, 0xe1, 0xf4, 0xbc, 0x7f, 0x02, 0xdf, 0xbd,
  0xfa, 0x2d, 0x17, 0xbe, 0xec, 0x8f, 0x59, 0x3d, 0xd7, 0x97, 0x16, 0x3e,
  0x50, 0x9d, 0xda, 0xbd, 0xdd, 0xba, 0x28, 0x3e, 0x7a, 0xac, 0x66, 0xbd,
  0xa6, 0x38, 0xd0, 0x3d, 0x00, 0x7c, 0x2c, 0x3c, 0xbe, 0x18, 0xc0, 0x3d,
  0x8f, 0x57, 0x05, 0xbe, 0xb0, 0x6a, 0x3d, 0x3d, 0x70, 0xc5, 0xe9, 0x3c,
  0xf0, 0xbc, 0x3b, 0xbd, 0x1b, 0x50, 0x02, 0x3e, 0x60, 0xa0, 0x52, 0xbd,
  0xc4, 0xbb, 0x6b, 0x3d, 0x4a, 0xce, 0x71, 0xbd, 0xb4, 0x11, 0x34, 0x3d,
  0x6a, 0xdd, 0x28, 0xbe, 0xa3, 0x4b, 0x18, 0xbe, 0x38, 0x29, 0xe4, 0xbc,
  0x90, 0xb3, 0x23, 0x3d, 0x82, 0xe1, 0xef, 0xbd, 0x5f, 0x27, 0x12, 0xbe,
  0x54, 0x3e, 0x33, 0xbd, 0x00, 0x66, 0x33, 0xbe, 0xf8, 0x31, 0xa7, 0x3c,
  0xe8, 0x41, 0xad, 0xbc, 0x00, 0xc6, 0x17, 0x3a, 0xd8, 0x0e, 0xe0, 0xbd,
  0x9a, 0x1c, 0xd9, 0xbd, 0x6b, 0xd9, 0x25, 0x3e, 0x18, 0xd5, 0x0d, 0x3d,
  0xbc, 0x68, 0x90, 0x3d, 0x65, 0x84, 0x19, 0x3e, 0xc6, 0x7f, 0x25, 0xbe,
  0xd3, 0x7d, 0x0e, 0x3e, 0xf6, 0x8f, 0xfd, 0x3d, 0x0e, 0x44, 0x23, 0xbe,
  0xb0, 0x23, 0x82, 0x3d, 0xd6, 0x12, 0x91, 0x3d, 0x9e, 0x5a, 0xe8, 0x3d,
  0x7c, 0xd4, 0x24, 0xbe, 0x37, 0x30, 0xdf, 0xbd, 0x50, 0xf5, 0x2b, 0x3c,
  0xb8, 0x01, 0xda, 0xbc, 0x75, 0x96, 0x05, 0xbe, 0x6b, 0x1f, 0x90, 0xbd,
  0x10, 0x94, 0xab, 0x3c, 0x80, 0x54, 0x76, 0xbc, 0x8a, 0xd8, 0xaf, 0xbd,
  0x27, 0xc5, 0x26, 0xbe, 0x0c, 0x85, 0xdb, 0xbd, 0x50, 0xeb, 0x80, 0xbc,
  0xac, 0x80, 0x29, 0x3d, 0x4c, 0x19, 0x90, 0x3d, 0x70, 0x6a, 0x8b, 0x3d,
  0x41, 0x89, 0xd5, 0xbd, 0xec, 0x36, 0x34, 0xbd, 0x2b, 0x09, 0xd3, 0xbd,
  0x35, 0x7d, 0x0e, 0xbe, 0xe9, 0x99, 0x2c, 0xbe, 0xe2, 0x47, 0x93, 0xbd,
  0xd2, 0x68, 0xa0, 0x3d, 0x58, 0x15, 0xb7, 0x3c, 0x3f, 0x74, 0x88, 0xbd,
  0xa7, 0xff, 0x16, 0x3e, 0x08, 0xd0, 0x1b, 0x3d, 0xb2, 0x70, 0x93, 0x3d,
  0x10, 0x13, 0xe0, 0xbc, 0xac, 0xe0, 0x61, 0xbd, 0x01, 0x95, 0xc9, 0xbd,
  0x72, 0xdc, 0xca, 0x3d, 0x26, 0xb8, 0x32, 0xbe, 0xf0, 0xc7, 0x84, 0xbc,
  0xdd, 0x38, 0x29, 0xbe, 0xb4, 0x5d, 0xf2, 0xbd, 0x70, 0xb5, 0x3f, 0x3c,
  0x43, 0xa4, 0x0a, 0xbe, 0x0a, 0xd1, 0xbd, 0xbd, 0x7a, 0x74, 0xca, 0x3d,
  0xad, 0x82, 0x14, 0x3e, 0x80, 0x94, 0x28, 0x3d, 0xd1, 0xf1, 0x99, 0x3e,
  0xdc, 0xbe, 0xd3, 0x3d, 0xb2, 0x28, 0xa0, 0x3e, 0x84, 0xff, 0x2f, 0x3d,
  0x2e, 0xa2, 0x5f, 0x3e, 0x00, 0x4e, 0x0f, 0x3f, 0xc7, 0x8c, 0x05, 0xbe,
  0x63, 0x5e, 0x47, 0xbe, 0x94, 0x04, 0x21, 0xbe, 0xac, 0x3c, 0x5c, 0xbd,
  0x7c, 0xf1, 0x89, 0x3d, 0xe5, 0xf6, 0x99, 0xbe, 0xa0, 0xd2, 0xa4, 0x3f,
  0x1e, 0xba, 0x99, 0x3d, 0x6c, 0xcc, 0x36, 0x3d, 0xc3, 0x02, 0x27, 0xbd,
  0x22, 0x8b, 0xc3, 0x3d, 0x8f, 0x9b, 0x34, 0x3e, 0x3b, 0x54, 0xf9, 0xbd,
  0x0c, 0x61, 0x06, 0x3d, 0x40, 0xbd, 0xdc, 0x3d, 0xe1, 0xd4, 0x09, 0x3e,
  0x00, 0x99, 0x39, 0x3c, 0xd8, 0x5e, 0x88, 0x3c, 0x9d, 0xc4, 0x31, 0x3e,
  0xc9, 0x68, 0x20, 0x3e, 0x98, 0xc7, 0x06, 0x3f, 0xe0, 0x2d, 0xf2, 0x3c,
  0x4e, 0x12, 0x2c, 0x3e, 0x5d, 0x3a, 0x8e, 0xbd, 0x6b, 0x57, 0x2d, 0x3f,
  0x5e, 0x3d, 0x62, 0xbe, 0x1e, 0x19, 0x84, 0x3d, 0x80, 0x50, 0xbb, 0x3e,
  0xfb, 0x2d, 0xc1, 0xbe, 0xa4, 0x2c, 0x82, 0x3d, 0x70, 0x44, 0x67, 0x3f,
  0xfc, 0xec, 0xbb, 0x3e, 0x51, 0xf6, 0xb9, 0x3e, 0xec, 0x6e, 0xcb, 0xbd,
  0x06, 0x75, 0xda, 0x3d, 0x73, 0x65, 0x28, 0xbe, 0x1b, 0xb1, 0x2d, 0x3e,
  0x37, 0xed, 0x02, 0xbe, 0x0e, 0x96, 0x2e, 0xbe, 0x3a, 0xec, 0x18, 0x3f,
  0x40, 0x7c, 0x21, 0xbd, 0x90, 0xe4, 0xb5, 0xbc, 0x84, 0x92, 0x15, 0xbe,
  0x7a, 0x12, 0xb5, 0x3d, 0x32, 0xde, 0x01, 0x3f, 0x12, 0x39, 0x47, 0x3f,
  0xdc, 0x10, 0x34, 0x3f, 0xbc, 0xf1, 0x42, 0x3d, 0x89, 0xc2, 0xf9, 0x3d,
  0x88, 0x7b, 0x86, 0xbc, 0x35, 0xd4, 0x9a, 0xbd, 0x8f, 0x9f, 0xc5, 0x3d,
  0xe0, 0x5f, 0x76, 0x3d, 0x23, 0x28, 0x89, 0x3f, 0xf0, 0xa4, 0x06, 0x3d,
  0xb9, 0x87, 0x06, 0x3f, 0xb0, 0x90, 0x3e, 0xbf, 0xe7, 0x89, 0xd8, 0xbc,
  0x48, 0x76, 0x6d, 0x3d, 0xde, 0xaa, 0x01, 0x3e, 0x58, 0xd5, 0xaa, 0xbe,
  0x39, 0xc6, 0xcc, 0xbd, 0x27, 0x82, 0x1f, 0xbd, 0x58, 0x0b, 0x1f, 0x3d,
  0xa4, 0x70, 0x80, 0x3d, 0xb9, 0xcc, 0x19, 0xbe, 0xb7, 0x36, 0x27, 0xbe,
  0x04, 0xef, 0xfe, 0x3e, 0x8a, 0xf7, 0xd9, 0xbd, 0x10, 0x5c, 0x83, 0xbc,
  0x9a, 0xd0, 0xa5, 0x3c, 0x3c, 0xaf, 0x01, 0xbd, 0x0c, 0x0a, 0x01, 0xbd,
  0x28, 0x80, 0x88, 0xbd, 0x2e, 0x94, 0xc3, 0x3e, 0xe7, 0x50, 0x15, 0x3e,
  0x73, 0xf1, 0x14, 0x3e, 0x0d, 0x20, 0x06, 0xbf, 0x68, 0x11, 0x25, 0x3f,
  0xd7, 0xaf, 0xab, 0xbd, 0xcb, 0xb7, 0xaa, 0xbd, 0xcf, 0x83, 0x5e, 0x3e,
  0x7c, 0x58, 0x98, 0x3d, 0x68, 0xa2, 0xcd, 0xbc, 0x8f, 0xc3, 0x1a, 0x3f,
  0x57, 0x8c, 0xd6, 0x3e, 0xa0, 0x35, 0x04, 0xbd, 0xce, 0x66, 0xc5, 0x3d,
  0xf2, 0xf0, 0xcc, 0x3c, 0xcf, 0x49, 0x41, 0x3e, 0xdc, 0xb8, 0x43, 0xbf,
  0x45, 0xe6, 0x7a, 0x3e, 0x5c, 0x79, 0x7b, 0x3a, 0x6e, 0xcb, 0xc6, 0xbd,
  0x5a, 0x71, 0x7f, 0x3f, 0x57, 0x05, 0x02, 0xbf, 0x58, 0xf4, 0x9d, 0xbc,
  0x90, 0xfd, 0xc2, 0x3d, 0x78, 0xd2, 0xeb, 0x3c, 0x50, 0x5d, 0x70, 0xbc,
  0x70, 0xaf, 0x85, 0xbd, 0x73, 0x0d, 0x34, 0xbe, 0x80, 0x15, 0x12, 0xbb,
  0xd8, 0xdc, 0x7c, 0x3d, 0xfb, 0x19, 0x30, 0x3e, 0x30, 0xa2, 0x08, 0x3f,
  0xfb, 0x7e, 0xfc, 0x3d, 0x80, 0xd0, 0x20, 0x3d, 0x44, 0x37, 0x36, 0x3d,
  0x16, 0x31, 0xc1, 0x3e, 0x47, 0x3d, 0xa5, 0xbe, 0x47, 0x84, 0xc5, 0xbd,
  0xcb, 0xb3, 0x5d, 0x3f, 0x08, 0x95, 0x11, 0x3d, 0xc4, 0x92, 0x06, 0x3d,
  0x63, 0x04, 0x11, 0xbe, 0x06, 0x60, 0xea, 0x3d, 0x64, 0xb1, 0x08, 0x3f,
  0xe4, 0x29, 0x61, 0x3d, 0xdb, 0x99, 0x9b, 0x3f, 0xf7, 0xbb, 0x25, 0x3e,
  0x08, 0xfe, 0x9b, 0xbc, 0xda, 0xd0, 0x83, 0xbe, 0x33, 0x3b, 0x3d, 0x3e,
  0xf6, 0xa8, 0x6d, 0xbe, 0xa6, 0x7f, 0x32, 0xbe, 0xd5, 0xe8, 0x3e, 0xbe,
  0x76, 0xc6, 0x47, 0xbf, 0x8d, 0x2b, 0xd3, 0xbd, 0x06, 0xe6, 0x8b, 0xbc,
  0xaa, 0x18, 0xd5, 0x3d, 0x70, 0xc3, 0x30, 0xbd, 0x22, 0x63, 0xce, 0x3d,
  0xe3, 0xfb, 0xc3, 0x3e, 0x81, 0x6d, 0xd5, 0xbf, 0x5a, 0x66, 0x8b, 0x3d,
  0x06, 0xb5, 0x5a, 0xbd, 0xe7, 0x43, 0x00, 0x3f, 0xc1, 0xb5, 0xa3, 0xbd,
  0xee, 0xa5, 0x86, 0x3d, 0x04, 0xe3, 0x54, 0x3d, 0x40, 0x19, 0xdd, 0x3c,
  0x2a, 0xb0, 0xe5, 0x3d, 0x82, 0xe1, 0xcd, 0xbd, 0x90, 0x90, 0x6a, 0xbc,
  0xe0, 0x8b, 0x08, 0x3d, 0x63, 0xb8, 0x90, 0xbe, 0x6e, 0xe4, 0xd4, 0xbd,
  0x1a, 0x94, 0x7c, 0xbf, 0x7a, 0x2d, 0x57, 0xbd, 0x26, 0x6a, 0x9a, 0x3d,
  0x97, 0xac, 0x2c, 0x3e, 0x83, 0x76, 0xea, 0xbe, 0xfd, 0x53, 0xc7, 0x3d,
  0x2c, 0x9e, 0x03, 0x3d, 0xdb, 0x0b, 0x40, 0xbf, 0x89, 0x97, 0x6a, 0x3e,
  0x69, 0x56, 0x18, 0x3e, 0xa0, 0x64, 0x08, 0xbf, 0xa0, 0x3f, 0x38, 0xbe,
  0x22, 0x8c, 0xa9, 0xbe, 0x98, 0x70, 0xd9, 0x3c, 0xa1, 0x41, 0x0d, 0xbe,
  0x5e, 0x5c, 0x96, 0x3d, 0x7e, 0x4b, 0x9f, 0x3d, 0xe0, 0xeb, 0x1d, 0x3e,
  0x2e, 0xa3, 0xba, 0x3d, 0xbb, 0xdf, 0x9d, 0xbe, 0x19, 0x1a, 0xa0, 0xbd,
  0xe4, 0x05, 0x65, 0xbd, 0x61,