diff --git a/.formatter.exs b/.formatter.exs index 4c3febe3..64dc50d2 100644 --- a/.formatter.exs +++ b/.formatter.exs @@ -1,8 +1,9 @@ [ inputs: [ "{lib,test,config}/**/*.{ex,exs}", + "c_src/**/*.spec.exs", ".formatter.exs", "*.exs" ], - import_deps: [:membrane_core] + import_deps: [:membrane_core, :bundlex, :unifex] ] diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..6d37185f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,18 @@ +{ + "C_Cpp.errorSquiggles": "Disabled", + "files.associations": { + "__locale": "c", + "filter.h": "c", + "raw_video.h": "c", + "functional": "c", + "locale": "c", + "concepts": "c", + "ios": "c", + "istream": "c", + "numeric": "c", + "ostream": "c", + "random": "c", + "*.inc": "c", + "video_compositor.h": "c" + } +} diff --git a/bundlex.exs b/bundlex.exs new file mode 100644 index 00000000..678bb851 --- /dev/null +++ b/bundlex.exs @@ -0,0 +1,22 @@ +defmodule Membrane.VideoCompositor.BundlexProject do + use Bundlex.Project + + def project do + [ + natives: natives() + ] + end + + defp natives() do + [ + video_compositor: [ + interface: :nif, + sources: ["video_compositor.c", "filter.c", "raw_video.c"], + includes: ["filter.h", "raw_video.h"], + pkg_configs: ["libavutil", "libavfilter"], + preprocessor: Unifex, + src_base: "ffmpeg_video_compositor" + ] + ] + end +end diff --git a/c_src/ffmpeg_video_compositor/_generated/.gitignore b/c_src/ffmpeg_video_compositor/_generated/.gitignore new file mode 100644 index 00000000..e7b4472d --- /dev/null +++ b/c_src/ffmpeg_video_compositor/_generated/.gitignore @@ -0,0 +1,3 @@ +**/*.h +**/*.c +**/*.cpp diff --git a/c_src/ffmpeg_video_compositor/filter.c b/c_src/ffmpeg_video_compositor/filter.c new file mode 100644 index 00000000..7b6654bb --- /dev/null +++ b/c_src/ffmpeg_video_compositor/filter.c @@ -0,0 +1,154 @@ +#include "filter.h" +/** + * @brief Append a header of the filter description to the string (buffer). + * Creates \p n_videos input nodes with output pads named [in_1], [in_2], .., + * [in_ \p n_videos]. + * + * @param filters_str Description destination string (buffer) + * @param filters_size Remaining size of the buffer + * @param videos Array of input videos. + * @param n_videos Size of the videos array + * @return Number of characters written to the buffer + */ +static int append_input_nodes_filters_string(char *filters_str, + int filters_size, + RawVideo videos[], int n_videos); + +/** + * @brief Append a main filter description (transformation graph) to the string + * (buffer) + * + * @param filters_str Description destination string (buffer) + * @param filters_size Remaining size of the buffer + * @return Number of characters written to the buffer + */ +static int apply_filters_options_string(char *filters_str, int filters_size); + +/** + * @brief Append a footer filter description to the string + * (buffer). Assumes that the previous filter description provides one output + * pad named [out] + * + * @param filters_str Description destination string (buffer) + * @param filters_size Remaining size of the buffer + * @return Number of characters written to the buffer + */ +static int finish_filters_string(char *filter_str, int filters_size); + +/** + * @brief Print error message to the stderr with formatted error code. + * + * @param msg + * @param error_code + */ +static void print_av_error(const char *msg, int error_code) { + fprintf(stderr, "%s: %s\n", msg, av_err2str(error_code)); +} + +/** + * @brief Creates a filter description string in an FFmpeg format and stores it + * in the given string. + * + * @param filter_str Description destination (buffer) + * @param filter_size Maximum size of the filter description (buffer size) + * @param videos Array of input videos. + * @param n_videos Size of the videos array + * @return Number of characters written to the buffer + */ +int get_filter_description(char *filter_str, int filter_size, RawVideo videos[], + int n_videos) { + int filter_end = 0; + filter_end += append_input_nodes_filters_string( + filter_str + filter_end, filter_size - filter_end, videos, n_videos); + filter_end += apply_filters_options_string(filter_str + filter_end, + filter_size - filter_end); + filter_end += + finish_filters_string(filter_str + filter_end, filter_size - filter_end); + return filter_end; +} + +static int append_input_nodes_filters_string(char *filters_str, + int filters_size, + RawVideo videos[], int n_videos) { + int filter_end = 0; + for (int i = 0; i < n_videos; ++i) { + RawVideo *video = &videos[i]; + const char *video_description_format = + "buffer=" + "video_size=%dx%d" + ":pix_fmt=%d" + ":time_base=%d/%d" + "[in_%d];\n"; + const int time_base_num = 1; + const int time_base_den = 1; + const int input_pad_idx = i + 1; + filter_end += snprintf(filters_str + filter_end, filters_size - filter_end, + video_description_format, video->width, + video->height, video->pixel_format, time_base_num, + time_base_den, input_pad_idx); + } + return filter_end; +} + +static int apply_filters_options_string(char *filters_str, int filters_size) { + int filter_end = 0; + // Temporary main filter description. It creates space for the second video + // (pad) and then overlay them on top of each other (overlay) + const char *filter_descr = + "[in_1]pad=iw:ih*2[src]; " + "[src][in_2]overlay=0:h[out];\n"; + filter_end += snprintf(filters_str + filter_end, filters_size - filter_end, + "%s", filter_descr); + return filter_end; +} + +static int finish_filters_string(char *filters_str, int filters_size) { + int filter_end = 0; + + filter_end += snprintf(filters_str + filter_end, filters_size - filter_end, + "%s", "[out] buffersink"); + return filter_end; +} + +/** + * @brief Creates a filter graph from the string description and stores it in + * the given filter. + * + * @param filters_descr String description of the filter graph. This should + * follow FFmpeg filter documentation. + * @param filter Pointer to the filter graph. + * @return Return code. Return 0 on success, a negative value on failure. + */ +int init_filters_graph(const char *filters_str, FilterState *filter) { + filter->graph = avfilter_graph_alloc(); + AVFilterGraph *graph = filter->graph; + + if (graph == NULL) { + fprintf(stderr, "Cannot allocate filter graph."); + return -1; + } + + AVFilterInOut *gis = NULL; + AVFilterInOut *gos = NULL; + + int ret = avfilter_graph_parse2(graph, filters_str, &gis, &gos); + if (ret < 0) { + print_av_error("Cannot parse graph.", ret); + goto end; + } + + ret = avfilter_graph_config(graph, NULL); + if (ret < 0) { + print_av_error("Cannot configure graph.", ret); + goto end; + } + + filter->inputs[0] = graph->filters[0]; + filter->inputs[1] = graph->filters[1]; + filter->output = graph->filters[graph->nb_filters - 1 - 1]; + +end: + avfilter_inout_free(&gis); + avfilter_inout_free(&gos); + return ret; +} diff --git a/c_src/ffmpeg_video_compositor/filter.h b/c_src/ffmpeg_video_compositor/filter.h new file mode 100644 index 00000000..8d2ce621 --- /dev/null +++ b/c_src/ffmpeg_video_compositor/filter.h @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include +#include + +#include "raw_video.h" + +#define SIZE(x) ((int)(sizeof(x) / sizeof(x[0]))) + +typedef struct FilterState { + AVFilterContext *inputs[2]; + AVFilterContext *output; + AVFilterGraph *graph; +} FilterState; + +typedef struct VState { + FilterState filter; + RawVideo videos[2]; +} VState; + +int init_filters_graph(const char *filters_descr, FilterState *filter); + +int get_filter_description(char *filter_str, int filter_size, RawVideo videos[], + int n_videos); diff --git a/c_src/ffmpeg_video_compositor/raw_video.c b/c_src/ffmpeg_video_compositor/raw_video.c new file mode 100644 index 00000000..a3b6dfa0 --- /dev/null +++ b/c_src/ffmpeg_video_compositor/raw_video.c @@ -0,0 +1,43 @@ +#include "raw_video.h" + +#include + +/** + * @brief Returns the specified pixel code. + * + * @param fmt_name Pixel format string + * @return Pixel format code + */ +enum AVPixelFormat get_pixel_format(const char *fmt_name) { + enum AVPixelFormat pix_fmt = AV_PIX_FMT_NONE; + if (strcmp(fmt_name, "I420") == 0) { + pix_fmt = AV_PIX_FMT_YUV420P; + } else if (strcmp(fmt_name, "I422") == 0) { + pix_fmt = AV_PIX_FMT_YUV422P; + } else if (strcmp(fmt_name, "I444") == 0) { + pix_fmt = AV_PIX_FMT_YUV444P; + } + return pix_fmt; +} + +/** + * @brief Init the raw video with the given parameters + * + * @param raw_video Destination video + * @param width Video width + * @param height Video height + * @param pixel_format_name Pixel format name given in a string. It will be + * converted into the corresponding enum code + * @return Return code. Return 0 on success, negative value otherwise + */ +int init_raw_video(RawVideo *raw_video, int width, int height, + const char *pixel_format_name) { + int pixel_format = get_pixel_format(pixel_format_name); + if (pixel_format < 0) { + return -1; + } + raw_video->width = width; + raw_video->height = height; + raw_video->pixel_format = pixel_format; + return 0; +} diff --git a/c_src/ffmpeg_video_compositor/raw_video.h b/c_src/ffmpeg_video_compositor/raw_video.h new file mode 100644 index 00000000..1c95a3bc --- /dev/null +++ b/c_src/ffmpeg_video_compositor/raw_video.h @@ -0,0 +1,12 @@ +#include + +typedef struct RawVideo { + int width; + int height; + enum AVPixelFormat pixel_format; +} RawVideo; + +enum AVPixelFormat get_pixel_format(const char *fmt_name); + +int init_raw_video(RawVideo *raw_video, int width, int height, + const char *pixel_format_name); diff --git a/c_src/ffmpeg_video_compositor/video_compositor.c b/c_src/ffmpeg_video_compositor/video_compositor.c new file mode 100644 index 00000000..cfa3d90f --- /dev/null +++ b/c_src/ffmpeg_video_compositor/video_compositor.c @@ -0,0 +1,165 @@ +#include "video_compositor.h" + +/** + * @brief Create a unifex filter object + * + * @param env Unifex environment + * @param filter_description Description of the FFmpeg filter (transformation + * graph), given in a string + * @param videos Array of input videos + * @param n_videos Size of the videos array + * @return UNIFEX_TERM + */ +static UNIFEX_TERM init_unifex_filter(UnifexEnv *env, + const char *filter_description, + RawVideo videos[], int n_videos); + +/** + * @brief Initializes the state of the video compositor and creates a filter + * graph. The function assumes two input videos and one output video. + * + * @param env Unifex environment + * @param first_video First input video + * @param second_video Second input video + * @return UNIFEX_TERM + */ +UNIFEX_TERM init(UnifexEnv *env, raw_video first_video, + raw_video second_video) { + UNIFEX_TERM result; + char filter_str[512]; + + RawVideo videos[2]; + if (init_raw_video(&videos[0], first_video.width, first_video.height, + first_video.pixel_format) < 0) { + result = init_result_error(env, "unsupported_pixel_format"); + goto end; + } + if (init_raw_video(&videos[1], second_video.width, second_video.height, + second_video.pixel_format) < 0) { + result = init_result_error(env, "unsupported_pixel_format"); + goto end; + } + + get_filter_description(filter_str, sizeof filter_str, videos, SIZE(videos)); + result = init_unifex_filter(env, filter_str, videos, SIZE(videos)); +end: + return result; +} + +static UNIFEX_TERM init_unifex_filter(UnifexEnv *env, + const char *filter_description, + RawVideo videos[], int n_videos) { + UNIFEX_TERM result; + State *state = unifex_alloc_state(env); + + if (SIZE(state->vstate.videos) != n_videos) { + result = init_result_error(env, "error_expected_two_input_videos"); + goto exit_create; + } + for (int i = 0; i < SIZE(state->vstate.videos); i++) { + state->vstate.videos[i] = videos[i]; + } + + if (init_filters_graph(filter_description, &state->vstate.filter) < 0) { + result = init_result_error(env, "error_creating_filters"); + goto exit_create; + } + result = init_result_ok(env, state); + +exit_create: + unifex_release_state(env, state); + return result; +} + +/** + * @brief Apply a filter on the given frames (compose them) and stores the + * result in the environment. + * + * @param env Unifex environment + * @param left_payload First frame + * @param right_payload Second frame + * @param state State with the initialized filter + * @return UNIFEX_TERM + */ +UNIFEX_TERM apply_filter(UnifexEnv *env, UnifexPayload *left_payload, + UnifexPayload *right_payload, State *state) { + UNIFEX_TERM res; + int ret = 0; + UnifexPayload *payloads[] = {left_payload, right_payload}; + AVFrame *frames[] = {av_frame_alloc(), av_frame_alloc()}; + AVFrame *filtered_frame = av_frame_alloc(); + + if (!frames[0] || !frames[1] || !filtered_frame) { + res = apply_filter_result_error(env, "error_allocating_frame"); + goto exit_filter; + } + + for (int i = 0; i < SIZE(frames); i++) { + AVFrame *frame = frames[i]; + RawVideo *video = &state->vstate.videos[i]; + UnifexPayload *payload = payloads[i]; + frame->format = video->pixel_format; + frame->width = video->width; + frame->height = video->height; + av_image_fill_arrays(frame->data, frame->linesize, payload->data, + frame->format, frame->width, frame->height, 1); + } + + /* feed the filter graph */ + FilterState *filter = &state->vstate.filter; + for (int i = 0; i < SIZE(filter->inputs); ++i) { + AVFilterContext *input = filter->inputs[i]; + AVFrame *frame = frames[i]; + if (av_buffersrc_add_frame_flags(input, frame, AV_BUFFERSRC_FLAG_KEEP_REF) < + 0) { + res = apply_filter_result_error(env, "error_feeding_filtergraph"); + goto exit_filter; + } + } + + /* pull the filtered frame from the filter graph + * should always be 1 frame on output for each frame on input*/ + ret = av_buffersink_get_frame(filter->output, filtered_frame); + if (ret < 0) { + res = apply_filter_result_error(env, "error_pulling_from_filtergraph"); + goto exit_filter; + } + + UnifexPayload payload_frame; + size_t payload_size = av_image_get_buffer_size( + filtered_frame->format, filtered_frame->width, filtered_frame->height, 1); + unifex_payload_alloc(env, UNIFEX_PAYLOAD_BINARY, payload_size, + &payload_frame); + + if (av_image_copy_to_buffer(payload_frame.data, payload_size, + (const uint8_t *const *)filtered_frame->data, + filtered_frame->linesize, filtered_frame->format, + filtered_frame->width, filtered_frame->height, + 1) < 0) { + res = apply_filter_result_error(env, "copy_to_payload"); + goto exit_filter; + } + res = apply_filter_result_ok(env, &payload_frame); +exit_filter: + if (frames[0] != NULL) av_frame_free(&frames[0]); + if (frames[1] != NULL) av_frame_free(&frames[1]); + if (filtered_frame != NULL) av_frame_free(&filtered_frame); + return res; +} + +/** + * @brief Clean up the state + * + * @param env Unifex environment + * @param state State + */ +void handle_destroy_state(UnifexEnv *env, State *state) { + UNIFEX_UNUSED(env); + FilterState *filter = &state->vstate.filter; + if (filter->graph != NULL) { + avfilter_graph_free(&filter->graph); + } + filter->inputs[0] = NULL; + filter->inputs[1] = NULL; + filter->output = NULL; +} diff --git a/c_src/ffmpeg_video_compositor/video_compositor.h b/c_src/ffmpeg_video_compositor/video_compositor.h new file mode 100644 index 00000000..37a51144 --- /dev/null +++ b/c_src/ffmpeg_video_compositor/video_compositor.h @@ -0,0 +1,8 @@ +#pragma once + +#include "filter.h" + +typedef struct VideoCompositorState { + VState vstate; +} State; +#include "_generated/video_compositor.h" diff --git a/c_src/ffmpeg_video_compositor/video_compositor.spec.exs b/c_src/ffmpeg_video_compositor/video_compositor.spec.exs new file mode 100644 index 00000000..cb349008 --- /dev/null +++ b/c_src/ffmpeg_video_compositor/video_compositor.spec.exs @@ -0,0 +1,21 @@ +module Membrane.VideoCompositor.FFmpeg.Native + +state_type "State" + +type( + raw_video :: %Membrane.RawVideo{ + width: int, + height: int, + pixel_format: atom + } +) + +spec init( + first_video :: raw_video, + second_video :: raw_video + ) :: {:ok :: label, state} | {:error :: label, reason :: atom} + +spec apply_filter(left_payload :: payload, right_payload :: payload, state) :: + {:ok :: label, payload} | {:error :: label, reason :: atom} + +dirty :cpu, apply_filter: 3 diff --git a/lib/membrane_video_compositor.ex b/lib/membrane_video_compositor.ex index 828d79ac..6c4ba963 100644 --- a/lib/membrane_video_compositor.ex +++ b/lib/membrane_video_compositor.ex @@ -1,2 +1,3 @@ defmodule Membrane.VideoCompositor do + @moduledoc false end diff --git a/lib/membrane_video_compositor_ffmpeg_native.ex b/lib/membrane_video_compositor_ffmpeg_native.ex new file mode 100644 index 00000000..e9b640dc --- /dev/null +++ b/lib/membrane_video_compositor_ffmpeg_native.ex @@ -0,0 +1,4 @@ +defmodule Membrane.VideoCompositor.FFmpeg.Native do + @moduledoc false + use Unifex.Loader +end diff --git a/mix.exs b/mix.exs index a85a73e0..4ceaea73 100644 --- a/mix.exs +++ b/mix.exs @@ -9,6 +9,7 @@ defmodule Membrane.VideoCompositor.Mixfile do app: :membrane_video_compositor_plugin, version: @version, elixir: "~> 1.13", + compilers: [:unifex, :bundlex] ++ Mix.compilers(), elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, deps: deps(), @@ -38,6 +39,14 @@ defmodule Membrane.VideoCompositor.Mixfile do defp deps do [ {:membrane_core, "~> 0.10.0"}, + {:membrane_raw_video_format, "~> 0.2.0"}, + {:membrane_common_c, "~> 0.13.0"}, + {:unifex, "~> 1.0"}, + # Testing + {:membrane_file_plugin, "~> 0.9", only: :test}, + {:membrane_h264_ffmpeg_plugin, "~> 0.18", only: :test}, + {:membrane_raw_video_parser_plugin, "~> 0.8.0", only: :test}, + # Development {:ex_doc, ">= 0.0.0", only: :dev, runtime: false}, {:dialyxir, ">= 0.0.0", only: :dev, runtime: false}, {:credo, ">= 0.0.0", only: :dev, runtime: false} diff --git a/mix.lock b/mix.lock index 33e319da..a6df4bae 100644 --- a/mix.lock +++ b/mix.lock @@ -1,5 +1,7 @@ %{ "bunch": {:hex, :bunch, "1.3.1", "f8fe80042f9eb474ef2801ae2c9372f9b13d11e7053265dcfc24b9d912e3750b", [:mix], [], "hexpm", "00e21b16ff9bb698b728a01a2fc4b3bf7fc0e87c4bb9c6e4a442324aa8c5e567"}, + "bunch_native": {:hex, :bunch_native, "0.5.0", "8ac1536789a597599c10b652e0b526d8833348c19e4739a0759a2bedfd924e63", [:mix], [{:bundlex, "~> 1.0", [hex: :bundlex, repo: "hexpm", optional: false]}], "hexpm", "24190c760e32b23b36edeb2dc4852515c7c5b3b8675b1a864e0715bdd1c8f80d"}, + "bundlex": {:hex, :bundlex, "1.0.0", "358c26a6c027359c6935dcd0716b68736b7604599d376c4e1ac17c6618ef6771", [:mix], [{:bunch, "~> 1.0", [hex: :bunch, repo: "hexpm", optional: false]}, {:qex, "~> 0.5", [hex: :qex, repo: "hexpm", optional: false]}, {:secure_random, "~> 0.5", [hex: :secure_random, repo: "hexpm", optional: false]}], "hexpm", "09b4a0c597a31e6e7ce8e103b94f19539bb2279f5966a3d6d46dcd32a5b6fd44"}, "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, "coerce": {:hex, :coerce, "1.0.1", "211c27386315dc2894ac11bc1f413a0e38505d808153367bd5c6e75a4003d096", [:mix], [], "hexpm", "b44a691700f7a1a15b4b7e2ff1fa30bebd669929ac8aa43cffe9e2f8bf051cf1"}, "credo": {:hex, :credo, "1.6.5", "330ca591c12244ab95498d8f47994c493064b2689febf1236d43d596b4f2261d", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "101de53e6907397c3246ccd2cc9b9f0d3fc0b7805b8e1c1c3d818471fc85bafd"}, @@ -12,10 +14,19 @@ "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.0", "f8c570a0d33f8039513fbccaf7108c5d750f47d8defd44088371191b76492b0b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "28b2cbdc13960a46ae9a8858c4bebdec3c9a6d7b4b9e7f4ed1502f8159f338e7"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, + "membrane_common_c": {:hex, :membrane_common_c, "0.13.0", "c314623f93209eb2fa092379954c686f6e50ac89baa48360f836d24f4d53f5ee", [:mix], [{:membrane_core, "~> 0.10.0", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:shmex, "~> 0.5.0", [hex: :shmex, repo: "hexpm", optional: false]}, {:unifex, "~> 1.0", [hex: :unifex, repo: "hexpm", optional: false]}], "hexpm", "90181fbbe481ccd0a4a76daf0300f8ad1b5b0bf0ebd8b42c133904f8839663ca"}, "membrane_core": {:hex, :membrane_core, "0.10.1", "b4fb68d9e541888b60ebbf4e22c4913a84f35c955846b7df26154cb7c5ce0f78", [:mix], [{:bunch, "~> 1.3", [hex: :bunch, repo: "hexpm", optional: false]}, {:qex, "~> 0.3", [hex: :qex, repo: "hexpm", optional: false]}, {:ratio, "~> 2.0", [hex: :ratio, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d039f67d00cb1c1608b1e4f03cea8a9b5a88ff0fef3f61f54dc65e515b9dc286"}, + "membrane_file_plugin": {:hex, :membrane_file_plugin, "0.12.0", "eb940e7a2f2abf30e048bd0b7c2bef9c17c18aa58875b9a833c0bc7e7b1fd709", [:mix], [{:membrane_core, "~> 0.10.0", [hex: :membrane_core, repo: "hexpm", optional: false]}], "hexpm", "281b9bf9467beead3f973adce55b9844bc4206bb3f3f60f0db8320a4af4fc5ca"}, + "membrane_h264_ffmpeg_plugin": {:hex, :membrane_h264_ffmpeg_plugin, "0.21.5", "453fa8800c4f8d64bd6f1b074d3aecfcb2ac27844060ee6e4575e945faf4b035", [:mix], [{:bunch, "~> 1.3.0", [hex: :bunch, repo: "hexpm", optional: false]}, {:membrane_common_c, "~> 0.13.0", [hex: :membrane_common_c, repo: "hexpm", optional: false]}, {:membrane_core, "~> 0.10.0", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_h264_format, "~> 0.3.0", [hex: :membrane_h264_format, repo: "hexpm", optional: false]}, {:membrane_raw_video_format, "~> 0.2.0", [hex: :membrane_raw_video_format, repo: "hexpm", optional: false]}, {:ratio, "~> 2.4.0", [hex: :ratio, repo: "hexpm", optional: false]}, {:unifex, "~> 1.0", [hex: :unifex, repo: "hexpm", optional: false]}], "hexpm", "1ebe477c6fe6b9dd740a696d380261a934c7a55c86133f8aa89f430351bc5fd4"}, + "membrane_h264_format": {:hex, :membrane_h264_format, "0.3.0", "84426aac86c3f4d3e8110438c3514ad94aa528e7002650d40e3b3862e2af5e3e", [:mix], [], "hexpm", "8254e52cea3c5d7c078c960a32f1ba338eeae9e301515302fd293f1683fa8dd9"}, + "membrane_raw_video_format": {:hex, :membrane_raw_video_format, "0.2.0", "cda8eb207cf65c93690a19001aba3edbb2ba5d22abc8068a1f6a785ba871e8cf", [:mix], [], "hexpm", "6b716fc24f60834323637c95aaaa0f99be23fcc6a84a21af70195ef50185b634"}, + "membrane_raw_video_parser_plugin": {:hex, :membrane_raw_video_parser_plugin, "0.8.0", "1e6c7b29e5a939d0c5bbd3e21d8005bbd86850993f28820635d0fd7c3c66fcf0", [:mix], [{:bunch, "~> 1.3", [hex: :bunch, repo: "hexpm", optional: false]}, {:membrane_core, "~> 0.10.0", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_raw_video_format, "~> 0.2.0", [hex: :membrane_raw_video_format, repo: "hexpm", optional: false]}], "hexpm", "061fc1eb44e25083e067e8ae7331480dfa0e1292c2dd16ba11f08fef578eaf8c"}, "nimble_parsec": {:hex, :nimble_parsec, "1.2.3", "244836e6e3f1200c7f30cb56733fd808744eca61fd182f731eac4af635cc6d0b", [:mix], [], "hexpm", "c8d789e39b9131acf7b99291e93dae60ab48ef14a7ee9d58c6964f59efb570b0"}, "numbers": {:hex, :numbers, "5.2.4", "f123d5bb7f6acc366f8f445e10a32bd403c8469bdbce8ce049e1f0972b607080", [:mix], [{:coerce, "~> 1.0", [hex: :coerce, repo: "hexpm", optional: false]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "eeccf5c61d5f4922198395bf87a465b6f980b8b862dd22d28198c5e6fab38582"}, "qex": {:hex, :qex, "0.5.1", "0d82c0f008551d24fffb99d97f8299afcb8ea9cf99582b770bd004ed5af63fd6", [:mix], [], "hexpm", "935a39fdaf2445834b95951456559e9dc2063d0a055742c558a99987b38d6bab"}, "ratio": {:hex, :ratio, "2.4.2", "c8518f3536d49b1b00d88dd20d49f8b11abb7819638093314a6348139f14f9f9", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:numbers, "~> 5.2.0", [hex: :numbers, repo: "hexpm", optional: false]}], "hexpm", "441ef6f73172a3503de65ccf1769030997b0d533b1039422f1e5e0e0b4cbf89e"}, + "secure_random": {:hex, :secure_random, "0.5.1", "c5532b37c89d175c328f5196a0c2a5680b15ebce3e654da37129a9fe40ebf51b", [:mix], [], "hexpm", "1b9754f15e3940a143baafd19da12293f100044df69ea12db5d72878312ae6ab"}, + "shmex": {:hex, :shmex, "0.5.0", "7dc4fb1a8bd851085a652605d690bdd070628717864b442f53d3447326bcd3e8", [:mix], [{:bunch_native, "~> 0.5.0", [hex: :bunch_native, repo: "hexpm", optional: false]}, {:bundlex, "~> 1.0", [hex: :bundlex, repo: "hexpm", optional: false]}], "hexpm", "b67bb1e22734758397c84458dbb746519e28eac210423c267c7248e59fc97bdc"}, "telemetry": {:hex, :telemetry, "1.1.0", "a589817034a27eab11144ad24d5c0f9fab1f58173274b1e9bae7074af9cbee51", [:rebar3], [], "hexpm", "b727b2a1f75614774cff2d7565b64d0dfa5bd52ba517f16543e6fc7efcc0df48"}, + "unifex": {:hex, :unifex, "1.0.1", "c8ebda892901e2fdb262a0ff95f4157fd5575709965b88a6415e43b527adcc0c", [:mix], [{:bunch, "~> 1.0", [hex: :bunch, repo: "hexpm", optional: false]}, {:bundlex, "~> 1.0", [hex: :bundlex, repo: "hexpm", optional: false]}, {:shmex, "~> 0.5.0", [hex: :shmex, repo: "hexpm", optional: false]}], "hexpm", "4b5217c06f5f8f82215d2edf077e40f7d4d0ee30c456b19f2eb99bfb484c558d"}, } diff --git a/test/fixtures/1frame.h264 b/test/fixtures/1frame.h264 new file mode 100644 index 00000000..44990d28 Binary files /dev/null and b/test/fixtures/1frame.h264 differ diff --git a/test/fixtures/1frame.yuv b/test/fixtures/1frame.yuv new file mode 100644 index 00000000..517aeb5a --- /dev/null +++ b/test/fixtures/1frame.yuv @@ -0,0 +1,11 @@ +QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQVQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRQPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRROQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRQRPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRQQQQRPTQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPMjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRQPOMSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRQPHNQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRPQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRQQQPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQPSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQKPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQQRQPMQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQQQQPRgQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQRRSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQQQQPPRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґRRRRRRRRRRRRRRRRQQQQQQQQPSQPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOROQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQPQQQSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRSShjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQORQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQPOhjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQPQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQLROSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOLPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQOQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOPSQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQLSVjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQVUQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQVRPSRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSOOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPOSQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTPQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRUQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQROQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQLMQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRNQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRLUXQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTQNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRQRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRPPOONQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSRPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPOURQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOROOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRQijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSQQQQQQQQQQQQQQQQQQQQQQQQQQRQRRQQQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPNQQQQQQQQQQQQQQQQQQQQQQQQQQQRRQQMQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTQQQQQQQQQQQQQQQQQQQQQQQQQQQQMQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPOQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQNQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPQORQQQQQQQQQQQQQQQQQQQQQQQQQQRQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOTPQQQQQQQQQQQQQQQQQQQQQQQQQQRQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQOOPQQQQQQQQQQQQQQQQQQQQQQQQPVSPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPLQQQQQQQQQQQQQQQQQQQQQQQQPOSOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPOQQQQQQQQQQQQQQQQQQQQQQQQPNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPPMQQQQQQQQQQQQQQQQQQQQQQQQQNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPRTTQQQQQQQQQQQQQQQQQQQQQQQQQUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRPOQQQQQQQQQQQQQQQQQQQQQQQQPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSPQQQQQQQQQQQQQQQQQQQQPRQQMjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJNQQQQQQQQQQQQQQQQQQQQQPSQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUNRQXQQQQQQQQQQQQQQQQQQQQOSRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQRWQQQQQQQQQQQQQQQQQQQQPSUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQMSQQQQQQQQQQQQQQQQQQQQQNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQWRSQQQQQQQQQQQQQQQQQQQQQSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRQQQQQQQQQQQQQQQQQQQQQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQQQQQQQQQQQQQQQQQQQQTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPSQQQQQQQQQQQQQQQQQQgjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQROQQQQQQQQQQQQQQQRSSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQRRPQQQQQQQQQQQQQQQQUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPSQQQQQQQQQQQQPOTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOSQQQQQQQQQQQQOTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQNRLQQQQQQQQQQQQNQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRgQQQQQQQQQQQQMjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQMQQQQQQQQKQMjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSWQQQQQQQQQQTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQQQQQQTPRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPOQQQQQQQQRXjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQRQRQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQLQSMQQQQQQQQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTTQQQQQQQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPTPXQQPPPQNQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSQRQQQQPQSQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQJQQQQPNQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSQQRRQTPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQQQRPRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTQQQQSVjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQOQQQQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQKPQQQQQTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQQQQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQPQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUOOQTjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSPRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUPMSSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPSPPNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPOPNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPQRPOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRROROjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQMSNPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRSSRQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSQQLjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQꪪjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ ꪪjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ骪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQꪪjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 骪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 骪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 骪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ + 說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ說jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ骪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ骪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ骪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQꪪjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ +몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ򪪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQꪪjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ着jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ着jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 񪪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 着jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ  𪪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 쪪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ  몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ몪jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQꪪjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ Qjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQROjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQOSQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQRRNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQSQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRQTPQMjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRLQPPLjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQORPPPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRTQPRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQVRRRRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQRRRRRPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRPRRRQRPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRTRRRQRQNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPRRRQQRPjjjjjjjjjjkkjjjjjjjkkkjjjjjjjjkkkjjjjjjkkkjjjjjjjkkkjjjjjjjkkkjjjjjjjjjjjjjjkkjj)))))))))))))))))))))((((())))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQPPQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRQQQQQQQQQQQQQQQQQUQTTTTRPOkkjjjiijjjjjlllllllkjjjjjiijjjkkjllllllkjjjjjjjjjjjjlllllllkjjjjjjjijjjjjjjkjjll((((((((((()))****))))))))(())))))))))))))))))))))))))))))))))))))))))))))))))))ґPPPPPPPPPPPPPPPPQQPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPPPQQRkkjjjiiijjjjiiiiiiijjjjjjiiijjjjiiiiiiijjjjjjiiijjjjiiiiiiijjjjjjjiihhhhhhhhiiii)))))))))))***++++++******)))((())))))))))))))))****************++++++++++++++++яPPPPPPPPQQQQQQQQRRQQQPPPPPPPQQQQQQQQRRQQQPPPPPPPQQQQQQQQPPPPPPQQQQQQQQRRQQSSTTUUVWXXZ[]^_`cdeeffghiiklmoppqqrrzz{{||}~~|ywvutsrqpponmmllddccbb`_^]\[ZZYWTRQQPPNMLKJIHHGFCA@?>=<;::9877652100//-,+***+,--...///00111222334467899:::;;<<====>>??ABCDDEEEFFGGGHHHIJLMNOPPQQQQQQRRRSTUUUUUVWYZZZZZ[\\]]^^^^`ceeeeefgghhiiiiiiiiiiiiiiiiiiiihhhggggggggggffffeeeeeeeeeeeeeeeeSSTUUVWXYY[\ccddddehgijllmnoppqqtuvxzz{~}~~}{ywvutsrqpponllkieddcbb`_^]\[ZZYWUSRRQPONLNKLIHGICBA@?>=<;:9877652100--,+****+,--...///01122333446787899:::;<<=>>>>?@@ABCCDDEEEFFHIIIIIJKLMNOOPPQQQQQRRSTUVVVVXWXYZZZ[[\]]^^____acdddeeefghhiiiiiiiiiiiiiiiiihhhhhggggggfffffeeccbbbbbbbbbbbbbbbbRRTUVWWYZZ[\_abcddefhiikkmnopqrstuvwyz{}}}|{zywvutsrqoonmkjjgfeddbaa`^]\[YYXWVTSRQPONKKKIIGFEDBAA?>=<;:987654210/.-,+*)**++,-...//001122344456677899::;;<==>>??@@AABCCDDEEFFGHIIJJJKLLMMNOOPPQQRRRRSTUWVWWXXYZZZ[[\\]^__````abcddeeefggghiiiiiiiiiiiihhhhhhhghgffffffffeeddddccccbbbbbbbaaa``RRTUVWWYZ[[]_abcddefhiikkmnopqrstuvwyz{}}~||{zywvutsrqoonmkijggeedbaa`^]\[YYXWVTSRQPONKKKIIGFEDCBA?>=<;:987654210/.-+*))**++,-...//001122345566677899::;;<==>>??@@AABCCDDEEFFGHIIJJJKLLMMNOOPPQQRRSSTTUWVWWXYYZZZ[\]]^^__``aabbcddeeefggghjjjjjjjjiiiihhhhgggghffffffeeeeeddddccccbbbbbbbaaa``QRTUVWWYZ[[]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqonnmjiiggeedbaa`^\\[YXXVVTSRQPOMKKJIHGFEDCBA?>=<;:987654210/.-+*))**++,,...//001122345566677899::;;<<=>>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUWVWWXYYZZ[[\]]^^__``aabbcddeeefggghjjjjjjjjiiiihhhhgggghffffffeeeeeddddccccbbbbbbbaaa``QRTUVWWYZ[[]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqonnmjiiggeedbaa`^\\[YXXVVTSRQPOMKKJIHGFEDCBA?>=<;:987654210/.-+*))**++,,...//001122345566677899::;;<<=>>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUWVWWXYYZZ[[\]]^^__``aabbcddeeefggghjjjjjjjjiiiihhhhgggghffffffeeeeeddddccccbbbbbbbaaa``QRTUVWWYZ[[]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqonnmjiiggeedbaa`^\\[YXXVVTSRQPOMKKJIHGFEDCBA?>=<;:987654210/.-+*))**++,,...//001122345566677889::;;<<=>>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUWVWWXYYZZ[[]]]^^__``aabbcddeeefggghjjjjjjjjiiiihhhhgggghffffffeeeeeddddccccbbbbbbbaaa``QRTUVWWYZ[[]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqonnmjiiggeedbaa`^\\[YXXVVTSRQPOMKKJIHGFECBA@@>=<;:987654210/.-+*))**++,,...//001122345566677889::;;<<=>>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUWVWWXYYZZ[[]]]^^__``aabbcddeeefggghjjjjjjjjiiiihhhhgggghffffffeeeeeddddccccbbbbbbbaaa``QRTUVWWYZ[[]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqonnmjiiggeedbaa`^\\[YXXVVTSRQPOMKKJIHGFECBA??>=<;:987654210/.-+*))**++,,...//001122345566677889::;;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUWVWWXYYZZ[[]]^^^__``aabbcddeeefggghjjjjjjjjiiiihhhhgggghffffffeeeeeddddccccbbbbbbbaaa``QRTUVWWYZ[[]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqonnmjiiggeedbaa`^\\[YXXVVTSRQPOMKKJIHGFECBA@?>=<;;:97654210/.-+*))**++,,...//001122345566677889::;;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUWVWWXYYZZ[[]]^^^__``aabbcddeeefggghjjjjjjjjiiiihhhhgggghffffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@>=<<;:987654210/.-+*))**++,,...//00112233445778899:::;;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^^_`aabbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@?>=<;:988654210/.-+*))**++,,...//00112233445778899:::;;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^^_`aabbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@?>=<;:977654210/.-+*))**++,,...//00112233445678899:::;;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^__`aabbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@?>=<;:986544210/.-+*))**++,,...//00112233445678899:::;;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^__`aabbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@?>=<;:986543210/.-+*))**++,,...//00112233445678899::::;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^__aaabbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@?>=<;:986543210/.-+*))**++,,...//00112233445678899::::;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^__aaabbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@?>=<;:986543210/.-+*))**++,,...//00112233445677899::::;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^__aabbbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abcddefhiikkmnopqrstuvwyz{}}~|{zyywvutsrqommlkiiggfedbaa`^\[ZYXXVVTSRQPOMLKJIHGFECBA@?>=<;:986543210/.-+*))**++,,...//00112233445677899::::;<<==>??@@AABCCDDEEFFGHIIJJJKLLMMNOOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^__aabbbcddeeefggghjjjjjjjjiiiihhhhggggggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_aabcdefghiklmnopqrstuvwyz{|}~|{zyywvutsrqonmljihgfedcba`_]\[ZYXWVVTSRQPOMLKJIHGFEDCA@?>=<;:987543210/.-+*))**++,,-..//00112234556677899::::;<<==>??@@AABCCDDEEFFGHHIIJJKLLMMNNOOPQQRRSSTTUVWWWXYYZZ[[\\]]^^_`aabbbcddeeefggghjjjjjjjjiiiiihhhhhhgggfffffeeeeeddddccccbbbbbbbaaa``QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjiiiihhhhhhhhggggggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjiiiihhhhhhhhggggggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjiiiihhhhhhhhggggggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjiiiihhhhhhhhggggggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHHIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHIIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```QRTUVWXYZ[\]_abbcdefghiklmnoprsstuvxxy{|}~~~|{zyxwvutsqqonlljihgffecba__]\[ZYXWVUTSRQPOMLKJIHGFEDCA@?>=<;:987543221/.-+*)***+,,,--.///01112345566788999:::;<<=>>??@@AABCCCDEEFGGHJIIJJKLLLMNNOPPQQRRSSTTUVVWWXYYZZ[[\\]]^^_`aabbccddeeffgghiiijjjjjjiiiiiiiihhhhggggffffffffeeedddccbbbbbbaaa```RRRRRRRRRRRRRRRRRRRRRRRRRRQQPPPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj********************************************************************************ӑRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRTMRRRRRRRRRRRRRRRRRRRRRRRRRRRRSPPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj********************************************************************************ӑRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQPPRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQNSiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ӑRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRSSSMTThhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ӑRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQLjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQPSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQOQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUTRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQQRPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPSRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQQTNQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQPMOQRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSTNQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRNjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRTQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOVjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQWSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRQMZjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRPVRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPQQRUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSVXjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQKQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQUQSQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPTPKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSSQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSTQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQNSQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQPSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSPQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQQOLPTQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQOPSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQQQQLSVQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRMRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQPPQPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQRQQQQRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQRRSPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQQORQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQSKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQQQQQLPRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQPPPPPLTUQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPQPJUjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQQQPWQRPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPQPNRSjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQRQPQKRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPQPQRRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQQRQLRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPSPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQRRQNQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQTPPPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQMRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPSPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQRRQRNiQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPQPPTPPPjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQQQQQQRjQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPQQQURjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQROSQMSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPQQPPRRjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQORPQSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPQQOOPUOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQQRQQRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRPPPQOjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))ґQQQQQQQQQQQRQQR뀀ZZZZZZZZZZZZZZZZZZZZZZZZ[[[[\WZZZ6666666666666666666666666666666666666666[[[[ZYZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[ZX\[6666666666666666666666666666666666666666[[[ZZYZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[ZZXX5555555555555555555555555555555555555555[[[[ZZYY]ZZZZZZZZZZZZZZZZZZZZZZZZ[[[Z]Z5555555555555555555555555555555555555555[[[[WZYZZ]ZZZZZZZZZZZZZZZZZZZZZZZZ^\^YY5555555555555555555555555555555555555555ZZZZZZZZ]Z\ZZZZZZZZZZZZZZZZZZZZZZZZ[\YZ5555555555555555555555555555555555555555ZZZZZZZZZY]\ZZZZZZZZZZZZZZZZZZZZZZZZZ[U5555555555555555555555555555555555555555ZZZZZZZ[\]YZ_ZZZZZZZZZZZZZZZZZZZZZZZZXWp5555555555555555555555555555555555555555ZZZZZZZZ_\Z]WiZZZZZZZZZZZZZZZZZZZZ^[Y\Vn5555555555555555555555555555555555555555ZZZZZZZZZ[ZZZZnZZZZZZZZZZZZZZZZZZZZ[\XYn5555555555555555555555555555555555555555ZZZZZZZZZZZZZZWnZZZZZZZZZZZZZZZZZZZZYX\[5555555555555555555555555555555555555555ZZZZZZZZZZZZZ]ZZZZZZZZZZZZZZZZZZZZZZ\Y[5555555555555555555555555555555555555555ZZZZZZZZZZZZ^ZZZ\ZZZZZZZZZZZZZZZZZZZZ[W5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ[ZZZZZZZZZZZZZZZZZZZZZWo5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZnZZZZZZZZZZZZZZZZZZZZk5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZYY\mZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZ[Z\[UZZZZZZZZZZZZZZZZZYU5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZ[ZXZZZZZZZZZZZZZZZZ[Vo5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZiZZZZZZZZZZZZZZZZ[j5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZSmZZZZZZZZZZZZZZZZ]5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZ[ZZUZZZZZZZZZZZZZZ[X5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[ZZYk5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZqZZZZZZZZZZZZZW^5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZXZZZZZZZZZ[ZZZ[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZY[ZZZZZZZZZ\YZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZX[|ZZZZZZZZZ\XZY5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZXY\ZZZZZZZZZ\XZi5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZ\\]jZZZZZZZZZ\XZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZXZYYZZZZZZZZZ^Y}5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZXZZZZZZZZ[[`5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZYZZZZZZZZ]Y}5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZ[\_ZZZZZZZZ[]5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZ[YYZZZZZZZZV5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZYZ\ZZZZZZZZi5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZY[[rZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\Z]XZZZ[ZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[~ZZZZZY[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ`ZZZZ[\[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY_ZZZ[Z]5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY[Y[YZY}5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY\^Y[YZW5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY[]Y[YZk5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY[kYZXZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYZVXZW_5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZXYY}Y[X}5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYYYY\]ZY5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYYYYV\Zk5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYYYYWjY[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ]T^[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZVZ\l5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[\\j]5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZVY5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ]Y[j5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYZ[Ym5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYXY[W5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYW]W5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZYYYYYYYYYYYYYYYYYYYYYYYY5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ]]]]]]]]]]]]]]]]]]]]]]]]5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY[X|5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZXZZ_\5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[{[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZX\XY}5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ]_ZZ5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[ZZ|W[5555555566665555666555556666555555555555ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[X_[v5555555555555555555554455665655555555555ZZZZZZZZYYYYZZZZZZZZZZZZZZZZYYYYZZZZV][__    4443322344443334555432234554322233333333WWWXXYYYXXXXYYYYXXXXXXXXXXXXYYYYYYYY[~~~~~~~~~~}||||||||||}}~~}{zzzzzzzzzz{{|||ZVV}>>>>>>>?ABBA@??@BCCBA@@ABCCCCCCCBBBBBBBBccccccccbbbbaaaabbbbbbbba```aaaabbbbcZZZYYXXXRRRQPOOOHHHGEDDCA@@>=;;;44431000)*)*+**)'&&%#""" !!!##%%%++++,,,,---..//01223344455577999:::<<>>>HHHHQQQRSTTT^^^_bccckkkkqqqqxxxxZYWVUTRQPONMJIHGFEDC@?>=;:98654310/.,+)('&$#"! !!""$$&'&'(())**,,-.///0112345568:<=@BDEFIKLNPRTVXZ\_`bdfhjlnpqsuwxz}¿ZYWVUTRQPONMJIHGFEDC?>=<;:9864321/.-,+*)'&$#"! !!!""#$%&&'(()*++,,-../0/0112345569:<>ABDFHKMNPRTVWY\]^`acfhkloprsuwxz}¿ZYWVUTRQONMLKJIHEDCB@?>=;:98654310/.,+*)'&$##"  !""###$$%&'((())++,,--./111122345667:;=>BCEFHKMNPRTVX[\_`acefikmoqstvxy{}¿ZYWVUTRQONMLJIHGEDCB@?>=<;:9654310/.,+*)'&$#$#!  !!#$$%%&'(())*++,,-./0112122345667:;>?BCFGHKMNPRTVXY\^`bceghknoqrtwxz|~ZYWVUTRQPONNKJIHFEDCA@?=<;:97654210.-,+*'&$##"  !!"##$$%&'(())*+,,--../011222335566:;>?BCFGIKMOPRTVXZ\^`acehilnpqstvx{|~ZYWVUTRQPONMJIHGFEDB@?>=<;98654310/.-,*)'&$##"  !!#$$$%&'((())++,,--.//01222345667:;>?BCFGIKMOOQSUXY\__acdgiknoqstux{|~ZYWVUTRQONNMJIHGEDCB@?><;:9865421/.-,+*)'&$##"  !"$$$%%&'('(()++,,,-../00122335567:;>?BCFGHJLNPRTVXZ\^`aceghknoqrtuxz|~ZYWVUTRQONMLIHGGEDCA?>=<;98754320/.-,*)('&$##"  !!"##$$%&'('(()*++,,,-.//0123345677:;>?BCFGHJLNPRTVXZ\_`bdeghkmoprtuxz|}ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/-,+*('&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuvxz|~ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/-,+*)'&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuvxz|~ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/-,+*)'&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuvxz|~ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/.,+*)'&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuvxz}ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/.,+*)'&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuuxz|~ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/.,+*)'&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuvxz|~ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/.,+*)'&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuvxz|~ZYWVUTRQPOMLKIHGFDCBA@>=<:98654310/.-+*)'&$##"  !!"##$$%&'(())*++,,--./011223345677:;>?BCFGIKMOPRTVXZ\^_acegikmoqsuvxz|~ZYWVUTRQPOMLKJHGFECBA@>=<;98764321/.-,*)'&$##"  !!"#$$%%&&'())**++,-..//00122244668:<>@ACEGIKMOOQSUXZ\^_acegikmoqsuwxz|~ZYWVUTRQPOMLKJHGFECBA@>=<;98764321/.-,*)'&$##"  !!"#$$%%&&'())**++,-..//00122244668:<>@ACEGIKMOOQSUXZ\^_acegikmoqsuwxz|~ZYWVUTRQPOMLKJHGFECBA@>=<;98764321/.-,*)'&$##"  !!"#$$%%&&'())**++,-..//00122244668:<>@ACEGIKMOOQSUXZ\^_acegikmoqsuwxz|~ZYWVUTRQPOMLKJHGFECBA@>=<;98764321/.-,*)'&$##"  !!"#$$%%&&'())**++,-..//00122244668:<>@ACEGIKMOOQSUXZ\^_acegikmoqsuwxz|~WWWVVTRPMKKJIHHGDBBA?>>=:88754430//-,***)(&$"  !!"#$$%&&&'())*,--..///0001122479;=?ACEGIKMOQSUWXZ\]_acfhjmnqstuvxz|~ZZZZYXVURQQPPOOOHHHGFEEE>>>=<;;:87753110-+)(&%#""!! ""$$&)***+++,-..//0012223344567799;;;<<<<====FGIKMOQRTUWYY[]_acegikmnpqsuvxz{}~~~~~~||{{{{{{{{||||{{{{||||{{{{zyyzz{{{ZYWWWWUUUUUUTYVt????>>>>????@@@@AAAA@@@ABBBBCCCCBAAABBBBddddddddccccccccbbbbbbbbd]\Z[[\ZZ[[[]^_Z]    3333444433333333222233333333333322223333WWWWXXXXWWWWXXXXXXXXYYYY~~~~~ZZZZZZZZZZZZZZZZl5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZ]XYmZZZZZZZZZZZZZZZZ[5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZYW\ZZZZZZZZZZZZZZZZ[X5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZZZZ[^ZZZZZZZZZZZZZZZZY\\5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZ[Z[Z[}ZZZZZZZZZZZZZZZZZ\Zq5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZZY[ZrZZZZZZZZZZZZZZZZW[[S5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZYZ[[ZZZZZZZZZZZZZZZZZV_Y]5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZY[_ZZZZZZZZZZZZZZZZZZ\YVY5555555555555555555555555555555555555555ZZZZZZZZZZZZZZZZWX}ZZZZZZZZZZZZZZZZZZZZ[\o5555555555555555555555555555555555555555ZZZZZZZZZZZZ^[Y\[pZZZZZZZZZZZZZZZZZZZZ[[Xo5555555555555555555555555555555555555555ZZZZZZZZZZZZ[\XYkZZZZZZZZZZZZZZZZZZZZY\YY5555555555555555555555555555555555555555ZZZZZZZZZZZZYX\[ZZZZZZZZZZZZZZZZZZZZ]YYYY5555555555555555555555555555555555555555ZZZZZZZZZZZZ\Y[ZZZZZZZZZZZZZZZZZZZZZZYYVY5555555555555555555555555555555555555555ZZZZZZZZY\X[W\ZZZZZZZZZZZZZZZZZZZZZZZZZZ\5555555555555555555555555555555555555555ZZZZZZZZ\X\]TZZZZZZZZZZZZZZZZZZZZZZZZYXZn5555555555555555555555555555555555555555ZZZZZZZZX\XWqZZZZZZZZZZZZZZZZZZZZZZZZ]YZVt5555555555555555555555555555555555555555ZZZZZZZZ[]WtZZZZZZZZZZZZZZZZZZZZZZZZZZZZVq5555555555555555555555555555555555555555ZZZZZ[YYYXoZZZZZZZZZZZZZZZZZZZZZZZZZZZZZXr5555555555555555555555555555555555555555ZZZZ[Y[\XpZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[]Xq6666666666666666666666666666666666666666ZZZZY[YXmZZZZZZZZZZZZZZZZZZZZZZZZZZZZW[YVt6666666666666666666666666666666666666666ZZZZ[\YkJnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""R  O nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""L R +nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""NR nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""L Qnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""TQ nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""M R nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""C nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" +Pnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""ONnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""Cnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""A nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""M N nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""@ nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""Annnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""O nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""Dnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""O +nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" Onnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""C nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""O nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""|nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" @nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""G  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" Innnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""D + nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" Bnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""D nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" Fnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""= nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" unnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""s +nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""rnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""p nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""ﷀ nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""Innnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""򀀀nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""退nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""~~~~~~~~~~~~~~~~~~~~~~~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""~~~~~~~~~~~~~~~~~~~~~~~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""끀nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""򀀀nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""񀀀nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""񀀀nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""x nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""뀀 +nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""Innnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""!!!""###F nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""!!!""###  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""!!!""###Dnnnnmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnn!!!"""""""""""""####""""###"""""!!!""###G  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnooonnnnnnnn!!!!!"""""""####"""""""""""#####"""""""" ~~~}}~~ nnnnooooooooooooooooooooooooppppoooooooo!!!!""""########"!!!""""!!!  !!! ~~~~~}}~}iiiijjjjjjjjjjjjihhhhhhhhhhhggggffffffff###$$%%%$$$%&'''''''(((()))(&%%&())(&%%%#ĽwwwwqqqqhhhhpppphhhhbbbbXXXWTSSSJJJIGFFF<<<;:9990000&&&&%%%%%%%%%%%$#""""""""""!! %%%'')))////66665555;;;=;97531/,+)(&$##!!!!  !#$%')+,./124689;=?@ACEFHJKMNPRSUWXZ[\^_`bdegiklnoqruwx{}}{zxvtrpnljhfeca^\[YWUTRPNKIGFDB@>=;97531/,+)(&$""!!!! !!"$%')*,./124689;=?@BCEGHJKMNPRTUWYZ[\]^`acfhikmnpqsvwy|}}{ywusqpnlihfdb`^][YWUTRPNKJHFDB@?=;975320-,*)&$##!!!!  !#%'(*+-.0234689;=?@ABDFGIKLMNPRTUWY[\]^`bdegijlnoqruwx{}}{yxvtrpnliifdba_][YWUTRPNKIGEDB@><;97531/,+)(%#""!!!!  !#%&(*+-.0234689;=??ACDFHIKMMOPRTVWY[\^_`bdehiklnpqsuwy{}}|zxvtrpnljifdca_][YWUSQOMKIHFDB@>=;97531/,+)(%#""!!!! !#%&(*+-.0134689:<>?ACDFHIKMMOQRTVXY\]^_`befhjkmnprstwy{}~|zxvtrqomjigeca_^[YWUSQOMKIGECB@><:86420/,+)(%#""!!!!  #%&(*+-.0134678:<>?ACEFHJKMNOQSTVXZ\]^_acefijlmoprtuwy{}}{ywusqpnlihfdb`^][YWUSQOMKIGFDB@>=;98531/-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~}{ywusqpnlihfdb`^][YWUSQOMKIGFDB@>=;98531/-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~}{ywusqpnlihfdb`^][YWUSQOMKIGFDB@>=;98531/-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~}{ywusqpnlihfdb`^][YWUSQOMKIGFDB@>=;98531/-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~}{ywusqpnlihfdb`^][YWUSQOMKIGFDB@>=;98531/-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~}{ywusqpnlihfdb`^][YWUSQOMKIGFDB@>=;98531/-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~}{ywusqpnlihfdb`^][YWUSQOMKIGFDB@>=;98531/-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~}|ywusqpnlihfdb`^][YWUSQOMKIGFDB@?=;985310-+)'%#""!!!!  !#%&()+-.0134679;<>?ACEFGIJLNOQSTVXZ[\^_abdehiklnoqsuwy{|~~|ywusrpnljhfdca_][YWTSPNMKIGFDCA?=;976420-+)'&$"""""!!  "$&()+--/124579;=?@ABDFGIKLNOQSTVXY[\^`acefhikmnprtvwy{}~|ywusrpnljhfdca_][YWTSPNMKIGFDCA?=;976420-+)'&$"""""!!  "$&()+--/124579;=?@ABDFGIKLNOQSTVXY[\^`acefhikmnprtvwy{}~|ywusrpnljhfdca_][YWTSPNMKIGFDCA?=;976420-+)'&$"""""!!  "$&()+--/124579;=?@ABDFGIKLNOQSTVXY[\^`acefhikmnprtvwy{}~|ywusrpnljhfdca_][YWTSPNMKIGFDCA?=;976420-+)'&$"""""!!  "$&()+--/12557:;>?@ABDFGIKLNOQSTVXY[\^`acefhikmnprtvwy{}~|zxvtsqonfecb`_][YWURQNLJHFDCA@><975421/-+)'&  "###***,-///579:==>@BDFHJLNOQRTUVWYZ\]_abdfgijlnoqsttuwz{~|{xvusrpnljhgqpnlkigfdca^]ZXWUTRPOMKJHFDBA?=<:976////%%%$$###$$$##"""!  !"#%()++,/00077765469:<<=?@BDDFHJLMOPPQSUWXZ[\]_acdfghiklމkkkjjiiijjjiihhhhhhhhhhhhhhhgggghhhggfff#$&&%$$$$$&&&&((&%''''))'&((''))'&(('')*~~~~~~~?    pppoonnnooonnmmmnnnnnnnnnnnnnnnnooonnmmm !###""" "!! "" ""!!##!!#"! "" "! !"O  }~~~~~~~~~~~~~~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""Qnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""Qnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" S nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""P nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""~ nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" Q nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""C +Qnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""S +Snnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""M  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"""""""""""""""""""""""""""""""""""""""" nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn""""""""""""""""""""""""""""""""""""""""  \ No newline at end of file diff --git a/test/fixtures/2s_8fps.h264 b/test/fixtures/2s_8fps.h264 new file mode 100644 index 00000000..83bb98f7 Binary files /dev/null and b/test/fixtures/2s_8fps.h264 differ diff --git a/test/fixtures/3s_9fps.h264 b/test/fixtures/3s_9fps.h264 new file mode 100644 index 00000000..b10ceac0 Binary files /dev/null and b/test/fixtures/3s_9fps.h264 differ diff --git a/test/fixtures/4s_2fps.h264 b/test/fixtures/4s_2fps.h264 new file mode 100644 index 00000000..7ed9f2fb Binary files /dev/null and b/test/fixtures/4s_2fps.h264 differ diff --git a/test/support/video_compositor_helpers.ex b/test/support/video_compositor_helpers.ex new file mode 100644 index 00000000..2923817e --- /dev/null +++ b/test/support/video_compositor_helpers.ex @@ -0,0 +1,46 @@ +defmodule Membrane.VideoCompositor.Test.Utility do + @moduledoc false + import ExUnit.Assertions + + require Membrane.Logger + + @spec prepare_paths(binary(), binary(), binary()) :: {binary(), binary(), binary()} + def prepare_paths(input_file_name, ref_file_name, tmp_dir) do + in_path = "../fixtures/#{input_file_name}" |> Path.expand(__DIR__) + ref_path = Path.join(tmp_dir, ref_file_name) + out_path = Path.join(tmp_dir, "out-#{ref_file_name}") + {in_path, out_path, ref_path} + end + + @spec create_ffmpeg_reference(binary, binary, binary) :: nil | :ok + def create_ffmpeg_reference(input_path, output_reference_path, filter_descr) do + {result, exit_status} = + System.cmd( + "ffmpeg", + [ + # overrides the output file without asking if it already exists + "-y", + # video input filename + "-i", + input_path, + # description of the filter (transformation graph) + "-vf", + filter_descr, + # video output filename + output_reference_path + ], + stderr_to_stdout: true + ) + + if exit_status != 0 do + raise inspect(result) + end + end + + @spec compare_contents(binary(), binary()) :: true + def compare_contents(output_path, reference_path) do + {:ok, reference_file} = File.read(reference_path) + {:ok, output_file} = File.read(output_path) + assert output_file == reference_file + end +end diff --git a/test/video_compositor/video_compositor_ffmpeg_test.exs b/test/video_compositor/video_compositor_ffmpeg_test.exs new file mode 100644 index 00000000..4c31947e --- /dev/null +++ b/test/video_compositor/video_compositor_ffmpeg_test.exs @@ -0,0 +1,47 @@ +defmodule VideoCompositor.FFmpeg.NativeTest do + use ExUnit.Case, async: true + + alias Membrane.RawVideo + alias Membrane.VideoCompositor.FFmpeg.Native + alias Membrane.VideoCompositor.Test.Utility + + @tag :tmp_dir + test "compose doubled raw video frame on top of each other", %{tmp_dir: tmp_dir} do + {in_path, out_path, ref_path} = Utility.prepare_paths("1frame.yuv", "ref-native.yuv", tmp_dir) + assert {:ok, frame_a} = File.read(in_path) + assert {:ok, frame_b} = File.read(in_path) + + assert {:ok, ref} = + Native.init( + %RawVideo{ + width: 640, + height: 360, + pixel_format: :I420, + framerate: nil, + aligned: nil + }, + %RawVideo{ + width: 640, + height: 360, + pixel_format: :I420, + framerate: nil, + aligned: nil + } + ) + + assert {:ok, out_frame} = Native.apply_filter(frame_a, frame_b, ref) + assert {:ok, file} = File.open(out_path, [:write]) + on_exit(fn -> File.close(file) end) + + IO.binwrite(file, out_frame) + reference_input_path = "../fixtures/1frame.h264" |> Path.expand(__DIR__) + + Utility.create_ffmpeg_reference( + reference_input_path, + ref_path, + "split[b], pad=iw:ih*2[src], [src][b]overlay=0:h" + ) + + Utility.compare_contents(out_path, ref_path) + end +end