<commit_before>#pragma once

#include <cstdint>
#include <array>
#include <vector>

namespace beluga
{
    class tls_client_hello
    {
    public:
	using random_bytes_type = std::array<std::uint8_t, 28>;
	using cipher_suites_type = std::vector<std::uint16_t>;
	using compression_methods_type = std::vector<std::uint8_t>;
	using extensions_type = std::vector<std::uint8_t>;
	
	tls_client_hello(std::uint16_t version = 0, std::uint32_t gmt_unix_time = 0, const random_bytes_type& random_bytes = random_bytes_type(), std::uint32_t session_id = 0, const cipher_suites_type& cipher_suites = cipher_suites_type(), const compression_methods_type& compression_methods = compression_methods_type(), const extensions_type& extensions = extensions_type());

	void set_version(std::uint16_t version);
	std::uint16_t get_version() const;
	
	void set_gmt_unix_time(std::uint32_t gmt_unix_time);
	std::uint32_t get_gmt_unix_time() const;

	void set_random_bytes(const random_bytes_type& random_bytes);
	const random_bytes_type& get_random_bytes() const;
	random_bytes_type& get_random_bytes();

	void set_session_id(std::uint32_t session_id);
	std::uint32_t get_session_id() const;

	void set_cipher_suites(cipher_suites_type cipher_suites);
	const cipher_suites_type& get_cipher_suites() const;
	cipher_suites_type& get_cipher_suites();
	
	void set_compression_methods(compression_methods_type compression_methods);
	const compression_methods_type& get_compression_methods() const;
	compression_methods_type& get_compression_methods();

	void set_extensions(extensions_type extensions);<commit_msg>changed extensions_type to vector of tls_extensions<commit_after>#pragma once

#include <cstdint>
#include <array>
#include <vector>
#include <beluga/tls/tls_extension.hpp>

namespace beluga
{
    class tls_client_hello
    {
    public:
	using random_bytes_type = std::array<std::uint8_t, 28>;
	using cipher_suites_type = std::vector<std::uint16_t>;
	using compression_methods_type = std::vector<std::uint8_t>;
	using extensions_type = std::vector<tls_extension>;
	
	tls_client_hello(std::uint16_t version = 0, std::uint32_t gmt_unix_time = 0, const random_bytes_type& random_bytes = random_bytes_type(), std::uint32_t session_id = 0, const cipher_suites_type& cipher_suites = cipher_suites_type(), const compression_methods_type& compression_methods = compression_methods_type(), const extensions_type& extensions = extensions_type());

	void set_version(std::uint16_t version);
	std::uint16_t get_version() const;
	
	void set_gmt_unix_time(std::uint32_t gmt_unix_time);
	std::uint32_t get_gmt_unix_time() const;

	void set_random_bytes(const random_bytes_type& random_bytes);
	const random_bytes_type& get_random_bytes() const;
	random_bytes_type& get_random_bytes();

	void set_session_id(std::uint32_t session_id);
	std::uint32_t get_session_id() const;

	void set_cipher_suites(cipher_suites_type cipher_suites);
	const cipher_suites_type& get_cipher_suites() const;
	cipher_suites_type& get_cipher_suites();
	
	void set_compression_methods(compression_methods_type compression_methods);
	const compression_methods_type& get_compression_methods() const;
	compression_methods_type& get_compression_methods();

	void set_extensions(extensions_type extensions);
{'fraction_non_alphanumeric': 0.0935672514619883, 'fraction_numerical': 0.01692828562634657, 'mean_word_length': 8.938837920489297, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6946102', 'n_tokens_mistral': 1159, 'n_tokens_neox': 1084, 'n_words': 206}