• Home
  • Raw
  • Download

Lines Matching +full:ipv4 +full:- +full:single +full:- +full:target +full:- +full:srv +full:- +full:disabled

1 diff --git a/src/DEPS b/src/DEPS
3 --- a/src/DEPS
5 @@ -253,7 +253,7 @@ vars = {
6 # Three lines of non-changing comments so that
9 - 'angle_revision': '29b222a3c07c541cafa459ae6886134da3493a4b',
11 # Three lines of non-changing comments so that
14 @@ -292,7 +292,7 @@ vars = {
15 # Three lines of non-changing comments so that
18 - 'freetype_revision': '034e5dbf92ea3a7ea7c9322e47a3a50ff23f7b55',
20 # Three lines of non-changing comments so that
23 @@ -300,7 +300,7 @@ vars = {
24 # Three lines of non-changing comments so that
27 - 'harfbuzz_revision': '0acf466c44143de2e9b9cc0375cb25ec67cb132f',
29 # Three lines of non-changing comments so that
32 diff --git a/src/base/tracing/protos/chrome_track_event.proto b/src/base/tracing/protos/chrome_trac…
34 --- a/src/base/tracing/protos/chrome_track_event.proto
36 @@ -514,6 +514,7 @@ message BackForwardCacheCanStoreDocumentResult {
44 diff --git a/src/cc/paint/paint_op_reader.cc b/src/cc/paint/paint_op_reader.cc
46 --- a/src/cc/paint/paint_op_reader.cc
48 @@ -329,6 +329,10 @@ void PaintOpReader::Read(PaintImage* image) {
59 diff --git a/src/cc/paint/paint_op_reader.h b/src/cc/paint/paint_op_reader.h
61 --- a/src/cc/paint/paint_op_reader.h
63 @@ -180,8 +180,9 @@ class CC_PAINT_EXPORT PaintOpReader {
69 - kMaxValue = kZeroSkColorFilterBytes,
74 diff --git a/src/chrome/browser/media/webrtc/region_capture_browsertest.cc b/src/chrome/browser/med…
76 --- a/src/chrome/browser/media/webrtc/region_capture_browsertest.cc
78 @@ -40,6 +40,11 @@
90 @@ -67,7 +72,7 @@ enum {
94 -enum {
99 @@ -102,6 +107,9 @@ struct TabInfo {
104 + browser->tab_strip_model()->ActivateTabAt(tab_strip_index);
108 web_contents->GetMainFrame(), "startCaptureFromEmbeddedFrame();",
109 @@ -155,6 +163,8 @@ struct TabInfo {
118 @@ -215,20 +225,18 @@ class RegionCaptureBrowserTest : public WebRtcTestBase {
122 - // Main page (for self-capture).
123 + // Other page (for other-tab-capture).
129 + // Main page (for self-capture). Instantiate it second to help it get focus.
135 - if (!self_capture) {
136 - // Other page (for other-tab-capture).
137 - SetUpPage("/webrtc/region_capture_other_main.html",
138 - servers_[kOtherPageTopLevelDocument].get(),
139 - "/webrtc/region_capture_other_embedded.html",
140 - servers_[kOtherPageEmbeddedDocument].get(), &tabs_[kOtherTab]);
141 - }
142 -
144 command_line_->AppendSwitchASCII(
146 @@ -376,28 +384,6 @@ IN_PROC_BROWSER_TEST_F(
147 EXPECT_EQ(tab.CropTo(""), "top-level-crop-success");
150 -IN_PROC_BROWSER_TEST_F(RegionCaptureBrowserTest,
151 - CropToRejectedIfElementInAnotherTabTopLevel) {
152 - SetUpTest(Frame::kTopLevelDocument, /*self_capture=*/false);
153 -
154 - const std::string crop_id =
155 - tabs_[kOtherTab].ProduceCropId(Frame::kTopLevelDocument);
156 - ASSERT_THAT(crop_id, IsValidCropId());
157 -
158 - EXPECT_EQ(tabs_[kMainTab].CropTo(crop_id), "top-level-crop-error");
159 -}
160 -
161 -IN_PROC_BROWSER_TEST_F(RegionCaptureBrowserTest,
162 - CropToRejectedIfElementInAnotherTabEmbeddedFrame) {
163 - SetUpTest(Frame::kTopLevelDocument, /*self_capture=*/false);
164 -
165 - const std::string crop_id =
166 - tabs_[kOtherTab].ProduceCropId(Frame::kEmbeddedFrame);
167 - ASSERT_THAT(crop_id, IsValidCropId());
168 -
169 - EXPECT_EQ(tabs_[kMainTab].CropTo(crop_id), "top-level-crop-error");
170 -}
171 -
175 @@ -495,4 +481,85 @@ IN_PROC_BROWSER_TEST_F(RegionCaptureBrowserTest,
176 "embedded-produce-crop-id-error");
179 +// Suite of tests ensuring that only self-capture may crop, and that it may
180 +// only crop to targets in its own tab, but that any target in its own tab
196 + // from the top-level document of said tab, or an embedded frame.
202 + // Whether the element on whose crop-ID we'll call cropTo():
203 + // * |target_element_tab_| - whether it's in kMainTab or in kOtherTab.
204 + // * |target_frame_| - whether it's in the top-level or an embedded frame.
206 + const Frame target_frame_; // Top-level or embedded frame.
234 + // Prevent test false-positive - ensure that both tabs participating in the
235 + // test have at least one associated crop-ID, or otherwise they would not
237 + // To make things even clearer, ensure both the top-level and the embedded
238 + // frame have produced crop-IDs. (This should not be necessary, but is
239 + // done as an extra buffer against false-positives.)
254 + {capturing_entity_ == Frame::kTopLevelDocument ? "top-level" : "embedded",
255 + "-", expect_permitted ? "crop-success" : "crop-error"});
261 diff --git a/src/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc b/src/chrome/…
263 --- a/src/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc
265 @@ -1187,6 +1187,52 @@ IN_PROC_BROWSER_TEST_F(ChromeSitePerProcessTest,
274 + GURL main_url(embedded_test_server()->GetURL(
278 + browser()->tab_strip_model()->GetActiveWebContents();
281 + const std::string no_op_script = "// No-op script";
290 + GURL popup_url(embedded_test_server()->GetURL("popup.com", "/"));
306 + EXPECT_EQ(2, browser()->tab_strip_model()->count());
309 + browser()->tab_strip_model()->GetActiveWebContents();
310 + EXPECT_EQ(embedded_test_server()->GetURL("popup.com", "/title1.html"),
311 + popup->GetLastCommittedURL());
316 // Tests that a cross-site iframe runs its beforeunload handler when closing a
318 diff --git a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.cc b/src/chrome/brow…
320 --- a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.cc
322 @@ -129,16 +129,6 @@ int RecentlyUsedFoldersComboModel::GetDefaultIndex() const {
323 return it == items_.end() ? 0 : static_cast<int>(it - items_.begin());
326 -void RecentlyUsedFoldersComboModel::AddObserver(
327 - ui::ComboboxModelObserver* observer) {
328 - observers_.AddObserver(observer);
329 -}
330 -
331 -void RecentlyUsedFoldersComboModel::RemoveObserver(
332 - ui::ComboboxModelObserver* observer) {
333 - observers_.RemoveObserver(observer);
334 -}
335 -
339 @@ -175,7 +165,7 @@ void RecentlyUsedFoldersComboModel::OnWillRemoveBookmarks(
343 - for (ui::ComboboxModelObserver& observer : observers_)
348 @@ -218,7 +208,7 @@ void RecentlyUsedFoldersComboModel::BookmarkAllUserNodesRemoved(
352 - for (ui::ComboboxModelObserver& observer : observers_)
357 diff --git a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.h b/src/chrome/brows…
359 --- a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.h
361 @@ -38,8 +38,6 @@ class RecentlyUsedFoldersComboModel : public ui::ComboboxModel,
365 - void AddObserver(ui::ComboboxModelObserver* observer) override;
366 - void RemoveObserver(ui::ComboboxModelObserver* observer) override;
370 @@ -90,8 +88,6 @@ class RecentlyUsedFoldersComboModel : public ui::ComboboxModel,
374 -
375 - base::ObserverList<ui::ComboboxModelObserver> observers_;
379 diff --git a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc b/src/ch…
381 --- a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc
383 @@ -41,6 +41,8 @@ class TestComboboxModelObserver : public ui::ComboboxModelObserver {
392 diff --git a/src/chrome/browser/ui/views/task_manager_view.cc b/src/chrome/browser/ui/views/task_ma…
394 --- a/src/chrome/browser/ui/views/task_manager_view.cc
396 @@ -125,6 +125,12 @@ bool TaskManagerView::IsColumnVisible(int column_id) const {
403 + if (!new_visibility && tab_table_->visible_columns().size() <= 1)
406 tab_table_->SetColumnVisibility(column_id, new_visibility);
409 diff --git a/src/components/autofill/core/browser/ui/address_combobox_model.cc b/src/components/aut…
411 --- a/src/components/autofill/core/browser/ui/address_combobox_model.cc
413 @@ -83,14 +83,6 @@ int AddressComboboxModel::GetDefaultIndex() const {
417 -void AddressComboboxModel::AddObserver(ui::ComboboxModelObserver* observer) {
418 - observers_.AddObserver(observer);
419 -}
420 -
421 -void AddressComboboxModel::RemoveObserver(ui::ComboboxModelObserver* observer) {
422 - observers_.RemoveObserver(observer);
423 -}
424 -
428 @@ -130,7 +122,7 @@ void AddressComboboxModel::UpdateAddresses() {
430 addresses_.emplace_back(profiles_cache_[i]->guid(), labels[i]);
432 - for (auto& observer : observers_) {
437 diff --git a/src/components/autofill/core/browser/ui/address_combobox_model.h b/src/components/auto…
439 --- a/src/components/autofill/core/browser/ui/address_combobox_model.h
441 @@ -40,8 +40,6 @@ class AddressComboboxModel : public ui::ComboboxModel {
445 - void AddObserver(ui::ComboboxModelObserver* observer) override;
446 - void RemoveObserver(ui::ComboboxModelObserver* observer) override;
450 @@ -72,9 +70,6 @@ class AddressComboboxModel : public ui::ComboboxModel {
454 -
455 - // To be called when the data for the given country code was loaded.
456 - base::ObserverList<ui::ComboboxModelObserver> observers_;
460 diff --git a/src/components/autofill/core/browser/ui/region_combobox_model.cc b/src/components/auto…
462 --- a/src/components/autofill/core/browser/ui/region_combobox_model.cc
464 @@ -66,14 +66,6 @@ bool RegionComboboxModel::IsItemSeparatorAt(int index) const {
468 -void RegionComboboxModel::AddObserver(ui::ComboboxModelObserver* observer) {
469 - observers_.AddObserver(observer);
470 -}
471 -
472 -void RegionComboboxModel::RemoveObserver(ui::ComboboxModelObserver* observer) {
473 - observers_.RemoveObserver(observer);
474 -}
475 -
479 @@ -94,7 +86,7 @@ void RegionComboboxModel::OnRegionDataLoaded(
483 - for (auto& observer : observers_) {
488 diff --git a/src/components/autofill/core/browser/ui/region_combobox_model.h b/src/components/autof…
490 --- a/src/components/autofill/core/browser/ui/region_combobox_model.h
492 @@ -54,8 +54,6 @@ class RegionComboboxModel : public ui::ComboboxModel {
496 - void AddObserver(ui::ComboboxModelObserver* observer) override;
497 - void RemoveObserver(ui::ComboboxModelObserver* observer) override;
501 @@ -72,9 +70,6 @@ class RegionComboboxModel : public ui::ComboboxModel {
505 - // To be called when the data for the given country code was loaded.
506 - base::ObserverList<ui::ComboboxModelObserver> observers_;
507 -
511 diff --git a/src/components/background_fetch/background_fetch_delegate_base.cc b/src/components/bac…
513 --- a/src/components/background_fetch/background_fetch_delegate_base.cc
515 @@ -102,6 +102,7 @@ void BackgroundFetchDelegateBase::DownloadUrl(
522 if (job_details->job_state == JobDetails::State::kPendingWillStartPaused ||
523 @@ -171,8 +172,11 @@ void BackgroundFetchDelegateBase::CancelDownload(std::string job_id) {
529 client->OnJobCancelled(
530 - job_id, blink::mojom::BackgroundFetchFailureReason::CANCELLED_FROM_UI);
536 @@ -242,14 +246,15 @@ void BackgroundFetchDelegateBase::MarkJobComplete(const std::string& job_id) {
537 job_details->current_fetch_guids.clear();
540 -void BackgroundFetchDelegateBase::FailFetch(const std::string& job_id) {
548 client->OnJobCancelled(
549 - unique_id,
554 @@ -301,7 +306,7 @@ void BackgroundFetchDelegateBase::OnDownloadUpdated(
558 - FailFetch(job_id);
563 diff --git a/src/components/background_fetch/background_fetch_delegate_base.h b/src/components/back…
565 --- a/src/components/background_fetch/background_fetch_delegate_base.h
567 @@ -59,7 +59,7 @@ class BackgroundFetchDelegateBase : public content::BackgroundFetchDelegate {
571 - void FailFetch(const std::string& job_id);
576 diff --git a/src/components/download/content/internal/download_driver_impl.cc b/src/components/down…
578 --- a/src/components/download/content/internal/download_driver_impl.cc
580 @@ -227,6 +227,8 @@ void DownloadDriverImpl::Start(
581 download_url_params->set_isolation_info(
584 + download_url_params->set_update_first_party_url_on_redirect(
587 download_manager_coordinator_->DownloadUrl(std::move(download_url_params));
589 diff --git a/src/components/download/internal/common/download_utils.cc b/src/components/download/in…
591 --- a/src/components/download/internal/common/download_utils.cc
593 @@ -349,8 +349,10 @@ std::unique_ptr<network::ResourceRequest> CreateResourceRequest(
594 // cross-site URL has been visited before.
595 url::Origin origin = url::Origin::Create(params->url());
596 request->trusted_params->isolation_info = net::IsolationInfo::Create(
597 - net::IsolationInfo::RequestType::kMainFrame, origin, origin,
598 - net::SiteForCookies::FromOrigin(origin));
599 + params->update_first_party_url_on_redirect()
603 request->site_for_cookies = net::SiteForCookies::FromUrl(params->url());
606 @@ -358,7 +360,8 @@ std::unique_ptr<network::ResourceRequest> CreateResourceRequest(
607 request->referrer = params->referrer();
608 request->referrer_policy = params->referrer_policy();
609 request->is_main_frame = true;
610 - request->update_first_party_url_on_redirect = true;
611 + request->update_first_party_url_on_redirect =
612 + params->update_first_party_url_on_redirect();
616 diff --git a/src/components/download/public/background_service/download_params.h b/src/components/d…
618 --- a/src/components/download/public/background_service/download_params.h
620 @@ -120,6 +120,12 @@ struct RequestParams {
625 + // First-party URL redirect policy: During server redirects, whether the
626 + // first-party URL for cookies will need to be changed. Download is normally
633 diff --git a/src/components/download/public/common/download_url_parameters.cc b/src/components/down…
635 --- a/src/components/download/public/common/download_url_parameters.cc
637 @@ -34,7 +34,8 @@ DownloadUrlParameters::DownloadUrlParameters(
641 - has_user_gesture_(false) {}
647 diff --git a/src/components/download/public/common/download_url_parameters.h b/src/components/downl…
649 --- a/src/components/download/public/common/download_url_parameters.h
651 @@ -279,6 +279,11 @@ class COMPONENTS_DOWNLOAD_EXPORT DownloadUrlParameters {
663 @@ -335,6 +340,9 @@ class COMPONENTS_DOWNLOAD_EXPORT DownloadUrlParameters {
671 // STATE CHANGING: All save_info_ sub-objects will be in an indeterminate
673 @@ -383,6 +391,7 @@ class COMPONENTS_DOWNLOAD_EXPORT DownloadUrlParameters {
681 diff --git a/src/components/history/core/browser/history_backend.cc b/src/components/history/core/b…
683 --- a/src/components/history/core/browser/history_backend.cc
685 @@ -287,6 +287,15 @@ HistoryBackend::~HistoryBackend() {
692 + // fatal (use-after-free). Additionally, as we're in shutdown, there isn't
696 + db_->reset_error_callback();
701 diff --git a/src/components/history/core/browser/history_database.h b/src/components/history/core/b…
703 --- a/src/components/history/core/browser/history_database.h
705 @@ -80,6 +80,7 @@ class HistoryDatabase : public DownloadDatabase,
713 diff --git a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc b/src/co…
715 --- a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc
717 @@ -315,8 +315,8 @@ void RealTimeUrlLookupServiceBase::MayBeCacheRealTimeUrlVerdict(
719 base::SequencedTaskRunnerHandle::Get()->PostTask(
721 - base::Unretained(cache_manager_), url,
722 - response, base::Time::Now()));
723 + cache_manager_->GetWeakPtr(), url, response,
728 diff --git a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc b/sr…
730 --- a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc
732 @@ -136,7 +136,9 @@ class RealTimeUrlLookupServiceTest : public PlatformTest {
736 - content_setting_map_->ShutdownOnUIThread();
738 + content_setting_map_->ShutdownOnUIThread();
740 rt_service_->Shutdown();
743 @@ -1139,6 +1141,24 @@ TEST_F(RealTimeUrlLookupServiceTest, TestShutdown_CallbackNotPostedOnShutdow…
756 + rt_service()->Shutdown();
758 + content_setting_map_->ShutdownOnUIThread();
768 diff --git a/src/components/viz/service/display/skia_renderer.cc b/src/components/viz/service/displ…
770 --- a/src/components/viz/service/display/skia_renderer.cc
772 @@ -1426,34 +1426,20 @@ void SkiaRenderer::DrawQuadParams::ApplyScissor(
776 - float left_inset = local_scissor.x() - visible_rect.x();
777 - float top_inset = local_scissor.y() - visible_rect.y();
778 - float right_inset = visible_rect.right() - local_scissor.right();
779 - float bottom_inset = visible_rect.bottom() - local_scissor.bottom();
783 - // The scissor is a non-AA clip, so we unset the bit flag for clipped edges.
784 - if (left_inset >= kAAEpsilon) {
785 + // The scissor is a non-AA clip, so unset the bit flag for clipped edges.
786 + if (local_scissor.x() - visible_rect.x() >= x_epsilon)
788 - } else {
789 - left_inset = 0;
790 - }
791 - if (top_inset >= kAAEpsilon) {
792 + if (local_scissor.y() - visible_rect.y() >= y_epsilon)
794 - } else {
795 - top_inset = 0;
796 - }
797 - if (right_inset >= kAAEpsilon) {
798 + if (visible_rect.right() - local_scissor.right() >= x_epsilon)
800 - } else {
801 - right_inset = 0;
802 - }
803 - if (bottom_inset >= kAAEpsilon) {
804 + if (visible_rect.bottom() - local_scissor.bottom() >= y_epsilon)
806 - } else {
807 - bottom_inset = 0;
808 - }
810 - visible_rect.Inset(left_inset, top_inset, right_inset, bottom_inset);
815 diff --git a/src/content/browser/back_forward_cache_basics_browsertest.cc b/src/content/browser/bac…
817 --- a/src/content/browser/back_forward_cache_basics_browsertest.cc
819 @@ -32,6 +32,8 @@ using testing::UnorderedElementsAreArray;
827 ASSERT_TRUE(embedded_test_server()->Start());
828 @@ -742,8 +744,8 @@ IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
829 web_contents()->GetController().GoBack();
830 EXPECT_FALSE(WaitForLoadStop(shell()->web_contents()));
832 - {BackForwardCacheMetrics::NotRestoredReason::kHTTPStatusNotOK,
833 - BackForwardCacheMetrics::NotRestoredReason::kNoResponseHead},
839 diff --git a/src/content/browser/back_forward_cache_browsertest.cc b/src/content/browser/back_forwa…
841 --- a/src/content/browser/back_forward_cache_browsertest.cc
843 @@ -52,6 +52,7 @@
851 @@ -670,6 +671,22 @@ void BackForwardCacheBrowserTest::ExpectBrowsingInstanceNotSwappedReasons(
862 + shell()->GoBackOrForward(history_offset);
864 + shell()->LoadURL(url);
867 + ASSERT_EQ(current_frame_host()->GetLastCommittedURL(), url);
868 + ASSERT_TRUE(current_frame_host()->IsErrorDocument());
874 diff --git a/src/content/browser/back_forward_cache_browsertest.h b/src/content/browser/back_forwar…
876 --- a/src/content/browser/back_forward_cache_browsertest.h
878 @@ -167,6 +167,11 @@ class BackForwardCacheBrowserTest : public ContentBrowserTest,
890 diff --git a/src/content/browser/back_forward_cache_internal_browsertest.cc b/src/content/browser/b…
892 --- a/src/content/browser/back_forward_cache_internal_browsertest.cc
894 @@ -49,6 +49,8 @@ using ::testing::UnorderedElementsAreArray;
902 ASSERT_TRUE(embedded_test_server()->Start());
903 @@ -3671,4 +3673,69 @@ IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
911 + ASSERT_TRUE(embedded_test_server()->Start());
913 + GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
914 + GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
940 + ASSERT_TRUE(embedded_test_server()->Start());
942 + GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
943 + GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
953 + web_contents()->GetController().GetLastCommittedEntry()->GetUniqueID();
969 + web_contents()->GetController().GetLastCommittedEntry()->GetUniqueID());
973 diff --git a/src/content/browser/background_fetch/background_fetch_delegate_proxy.cc b/src/content/…
975 --- a/src/content/browser/background_fetch/background_fetch_delegate_proxy.cc
977 @@ -220,6 +220,7 @@ void BackgroundFetchDelegateProxy::MarkJobComplete(
985 @@ -232,8 +233,20 @@ void BackgroundFetchDelegateProxy::OnJobCancelled(
989 - if (const auto& controller = it->second)
990 + if (const auto& controller = it->second) {
995 + controller->DidCompleteRequest(
1002 controller->AbortFromDelegate(reason_to_abort);
1007 diff --git a/src/content/browser/background_fetch/background_fetch_delegate_proxy.h b/src/content/b…
1009 --- a/src/content/browser/background_fetch/background_fetch_delegate_proxy.h
1011 @@ -142,6 +142,7 @@ class CONTENT_EXPORT BackgroundFetchDelegateProxy
1019 diff --git a/src/content/browser/background_fetch/storage/mark_request_complete_task.cc b/src/conte…
1021 --- a/src/content/browser/background_fetch/storage/mark_request_complete_task.cc
1023 @@ -103,6 +103,8 @@ void MarkRequestCompleteTask::StoreResponse(base::OnceClosure done_closure) {
1027 + // Don't expose the initial URL in case of cross-origin redirects.
1028 + response_->url_list.resize(1);
1032 diff --git a/src/content/browser/cross_origin_opener_policy_browsertest.cc b/src/content/browser/cr…
1034 --- a/src/content/browser/cross_origin_opener_policy_browsertest.cc
1036 @@ -11,6 +11,7 @@
1044 @@ -3337,6 +3338,104 @@ IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
1051 + // This test requires that a cross-origin iframe be placed in its own
1056 + GURL non_coop_page(https_server()->GetURL("a.test", "/title1.html"));
1058 + https_server()->GetURL("b.test", "/title1.html"));
1059 + GURL coop_page(https_server()->GetURL(
1060 + "a.test", "/set-header?cross-origin-opener-policy: same-origin"));
1062 + // Get an initial non-COOP page with an empty popup.
1070 + static_cast<WebContentsImpl*>(shell_observer.GetShell()->web_contents());
1071 + RenderFrameHostImpl* popup_rfh = popup->GetMainFrame();
1073 + // At this stage we have a single SiteInstance used both for the main page and
1074 + // the same-site popup.
1075 + SiteInstanceImpl* initial_main_si = initial_main_rfh->GetSiteInstance();
1076 + SiteInstanceImpl* popup_si = popup_rfh->GetSiteInstance();
1078 + RenderProcessHost* process_A = initial_main_si->GetProcess();
1090 + SiteInstanceImpl* main_si = main_rfh->GetSiteInstance();
1091 + RenderProcessHost* process_B = main_si->GetProcess();
1092 + EXPECT_FALSE(popup_si->IsRelatedSiteInstance(main_si));
1097 + EXPECT_EQ(process_A, popup_si->GetProcess());
1099 + EXPECT_TRUE(popup_rfh->frame_tree_node()
1100 + ->render_manager()
1101 + ->GetAllProxyHostsForTesting()
1103 + EXPECT_TRUE(main_rfh->frame_tree_node()
1104 + ->render_manager()
1105 + ->GetAllProxyHostsForTesting()
1108 + // Load an iframe that is cross-origin to the top frame's opener.
1117 + popup_rfh->child_at(0)->current_frame_host();
1118 + SiteInstanceImpl* iframe_si = iframe_rfh->GetSiteInstance();
1120 + // The iframe being cross-origin, it is put in a different but related
1122 + EXPECT_TRUE(iframe_si->IsRelatedSiteInstance(popup_si));
1123 + EXPECT_FALSE(iframe_si->IsRelatedSiteInstance(main_si));
1128 + RenderProcessHost* process_C = iframe_si->GetProcess();
1131 + EXPECT_EQ(1u, iframe_rfh->frame_tree_node()
1132 + ->render_manager()
1133 + ->GetAllProxyHostsForTesting()
1135 + EXPECT_EQ(1u, popup_rfh->frame_tree_node()
1136 + ->render_manager()
1137 + ->GetAllProxyHostsForTesting()
1147 // context group when using window.open from an iframe, same-origin and
1148 // cross-origin.
1149 diff --git a/src/content/browser/devtools/protocol/devtools_protocol_browsertest.cc b/src/content/b…
1151 --- a/src/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
1153 @@ -408,7 +408,8 @@ class CaptureScreenshotTest : public DevToolsProtocolTest {
1157 - bool capture_beyond_viewport = false) {
1161 params->SetStringKey("format", EncodingEnumToString(encoding));
1162 params->SetIntKey("quality", 100);
1163 @@ -427,18 +428,24 @@ class CaptureScreenshotTest : public DevToolsProtocolTest {
1167 - std::string base64;
1168 - EXPECT_TRUE(result_->GetString("data", &base64));
1170 - if (encoding == ScreenshotEncoding::PNG) {
1171 - result_bitmap = std::make_unique<SkBitmap>();
1172 - EXPECT_TRUE(DecodePNG(base64, result_bitmap.get()));
1173 - } else if (encoding == ScreenshotEncoding::JPEG) {
1174 - result_bitmap = DecodeJPEG(base64);
1180 - // Decode not implemented.
1182 + EXPECT_TRUE(result_->GetString("data", &base64));
1193 - EXPECT_TRUE(result_bitmap);
1197 @@ -538,6 +545,10 @@ class CaptureScreenshotTest : public DevToolsProtocolTest {
1208 @@ -839,6 +850,17 @@ IN_PROC_BROWSER_TEST_F(CaptureScreenshotTest, TransparentScreenshots) {
1215 + shell()->LoadURL(GURL("about:blank"));
1216 + EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
1224 // Disabled, see http://crbug.com/469947.
1226 diff --git a/src/content/browser/devtools/protocol/page_handler.cc b/src/content/browser/devtools/p…
1228 --- a/src/content/browser/devtools/protocol/page_handler.cc
1230 @@ -198,9 +198,12 @@ PageHandler::PageHandler(
1243 @@ -759,6 +762,11 @@ void PageHandler::CaptureScreenshot(
1248 + callback->sendFailure(
1252 widget_host->GetSnapshotFromBrowser(
1255 @@ -1419,6 +1427,8 @@ Page::BackForwardCacheNotRestoredReason NotRestoredReasonToProtocol(
1264 @@ -1698,6 +1708,7 @@ Page::BackForwardCacheNotRestoredReasonType MapNotRestoredReasonToType(
1272 diff --git a/src/content/browser/devtools/protocol/page_handler.h b/src/content/browser/devtools/pr…
1274 --- a/src/content/browser/devtools/protocol/page_handler.h
1276 @@ -65,6 +65,7 @@ class PageHandler : public DevToolsDomainHandler,
1284 @@ -212,6 +213,7 @@ class PageHandler : public DevToolsDomainHandler,
1292 diff --git a/src/content/browser/devtools/render_frame_devtools_agent_host.cc b/src/content/browser…
1294 --- a/src/content/browser/devtools/render_frame_devtools_agent_host.cc
1296 @@ -357,6 +357,7 @@ bool RenderFrameDevToolsAgentHost::AttachSession(DevToolsSession* session,
1297 session->AddHandler(std::make_unique<protocol::PageHandler>(
1299 session->GetClient()->AllowUnsafeOperations(),
1300 + session->GetClient()->MayAttachToBrowser(),
1301 session->GetClient()->GetNavigationInitiatorOrigin()));
1302 session->AddHandler(std::make_unique<protocol::SecurityHandler>());
1303 if (!frame_tree_node_ || !frame_tree_node_->parent()) {
1304 diff --git a/src/content/browser/download/download_browsertest.cc b/src/content/browser/download/do…
1306 --- a/src/content/browser/download/download_browsertest.cc
1308 @@ -3735,6 +3735,58 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, UpdateSiteForCookies) {
1313 +// will not behave like a top-level frame navigation and SameSite=Strict cookies
1323 + std::string("Set-Cookie"), std::string("A=strict; SameSite=Strict")));
1324 + cookie_headers.push_back(std::make_pair(std::string("Set-Cookie"),
1330 + "/sets-samesite-cookies", net::HTTP_OK, cookie_headers,
1331 + "application/octet-stream", "abcd"));
1334 + CreateRedirectHandler("/redirected-download",
1335 + site_a.GetURL("a.test", "/sets-samesite-cookies")));
1342 + shell()->web_contents(),
1343 + site_b.GetURL("b.test", "/redirected-download"),
1345 + download_parameters->set_update_first_party_url_on_redirect(false);
1347 + DownloadManagerForShell(shell())->DownloadUrl(std::move(download_parameters));
1348 + observer->WaitForFinished();
1354 + DownloadManagerForShell(shell())->GetAllDownloads(&downloads);
1356 + ASSERT_EQ(download::DownloadItem::COMPLETE, downloads[0]->GetState());
1360 + content::GetCookies(shell()->web_contents()->GetBrowserContext(),
1367 diff --git a/src/content/browser/indexed_db/indexed_db_context_impl.cc b/src/content/browser/indexe…
1369 --- a/src/content/browser/indexed_db/indexed_db_context_impl.cc
1371 @@ -120,7 +120,7 @@ void GetAllStorageKeysAndPaths(const base::FilePath& indexeddb_path,
1375 - if (!context->idb_task_runner_->RunsTasksInCurrentSequence()) {
1376 + if (!context->IDBTaskRunner()->RunsTasksInCurrentSequence()) {
1378 context_ptr->IDBTaskRunner()->ReleaseSoon(FROM_HERE, std::move(context));
1380 @@ -168,37 +168,32 @@ IndexedDBContextImpl::IndexedDBContextImpl(
1384 - // This is safe because the IndexedDBContextImpl must be destructed on the
1385 - // IDBTaskRunner, and this task will always happen before that.
1386 - idb_task_runner_->PostTask(
1387 - FROM_HERE,
1388 - base::BindOnce(
1389 - [](mojo::Remote<storage::mojom::BlobStorageContext>*
1390 - blob_storage_context,
1391 - mojo::Remote<storage::mojom::FileSystemAccessContext>*
1392 - file_system_access_context,
1393 - mojo::Receiver<storage::mojom::QuotaClient>* quota_client_receiver,
1394 - mojo::PendingRemote<storage::mojom::BlobStorageContext>
1395 - pending_blob_storage_context,
1396 - mojo::PendingRemote<storage::mojom::FileSystemAccessContext>
1397 - pending_file_system_access_context,
1398 - mojo::PendingReceiver<storage::mojom::QuotaClient>
1399 - quota_client_pending_receiver) {
1400 - quota_client_receiver->Bind(
1401 - std::move(quota_client_pending_receiver));
1402 - if (pending_blob_storage_context) {
1403 - blob_storage_context->Bind(
1404 - std::move(pending_blob_storage_context));
1405 - }
1406 - if (pending_file_system_access_context) {
1407 - file_system_access_context->Bind(
1408 - std::move(pending_file_system_access_context));
1409 - }
1410 - },
1411 - &blob_storage_context_, &file_system_access_context_,
1412 - &quota_client_receiver_, std::move(blob_storage_context),
1413 - std::move(file_system_access_context),
1414 - std::move(quota_client_receiver)));
1415 + IDBTaskRunner()->PostTask(
1430 + DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence());
1444 @@ -466,7 +461,7 @@ void IndexedDBContextImpl::GetAllStorageKeysDetails(
1448 - idb_task_runner_->PostTask(
1449 + IDBTaskRunner()->PostTask(
1453 @@ -877,7 +872,7 @@ void IndexedDBContextImpl::BindIndexedDBWithBucket(
1457 - DCHECK(idb_task_runner_->RunsTasksInCurrentSequence());
1458 + DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence());
1462 @@ -909,7 +904,7 @@ void IndexedDBContextImpl::Shutdown() {
1466 - idb_task_runner_->PostTask(
1467 + IDBTaskRunner()->PostTask(
1471 diff --git a/src/content/browser/indexed_db/indexed_db_context_impl.h b/src/content/browser/indexed…
1473 --- a/src/content/browser/indexed_db/indexed_db_context_impl.h
1475 @@ -224,6 +224,14 @@ class CONTENT_EXPORT IndexedDBContextImpl
1490 @@ -282,6 +290,8 @@ class CONTENT_EXPORT IndexedDBContextImpl
1494 + // weak_factory_->GetWeakPtr() may be used on any thread, but the resulting
1499 diff --git a/src/content/browser/loader/object_navigation_fallback_body_loader.cc b/src/content/bro…
1501 --- a/src/content/browser/loader/object_navigation_fallback_body_loader.cc
1503 @@ -157,10 +157,6 @@ blink::mojom::ResourceTimingInfoPtr GenerateResourceTiming(
1504 timing_info->allow_redirect_details = timing_info->allow_timing_details;
1505 timing_info->last_redirect_end_time =
1506 commit_params.redirect_response.back()->load_timing.receive_headers_end;
1507 -
1508 - if (!timing_info->allow_redirect_details) {
1509 - timing_info->start_time = response_head.load_timing.request_start;
1510 - }
1512 timing_info->allow_redirect_details = false;
1513 timing_info->last_redirect_end_time = base::TimeTicks();
1514 diff --git a/src/content/browser/media/capture/frame_sink_video_capture_device.cc b/src/content/bro…
1516 --- a/src/content/browser/media/capture/frame_sink_video_capture_device.cc
1518 @@ -290,17 +290,17 @@ void FrameSinkVideoCaptureDevice::OnStopped() {
1523 + GetIOThreadTaskRunner({})->PostTask(
1532 - if (BrowserThread::CurrentlyOn(BrowserThread::IO)) {
1533 - receiver_->OnLog(message);
1534 - } else {
1535 - GetIOThreadTaskRunner({})->PostTask(
1536 - FROM_HERE,
1537 - base::BindOnce(&media::VideoFrameReceiver::OnLog,
1538 - base::Unretained(receiver_.get()), message));
1539 - }
1540 + receiver_->OnLog(message);
1544 diff --git a/src/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc b/sr…
1546 --- a/src/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
1548 @@ -181,6 +181,8 @@ ProtoEnum::BackForwardCacheNotRestoredReason NotRestoredReasonToTraceEnum(
1557 @@ -392,6 +394,8 @@ std::string BackForwardCacheCanStoreDocumentResult::NotRestoredReasonToString(
1566 diff --git a/src/content/browser/renderer_host/back_forward_cache_impl.cc b/src/content/browser/ren…
1568 --- a/src/content/browser/renderer_host/back_forward_cache_impl.cc
1570 @@ -763,6 +763,13 @@ void BackForwardCacheImpl::PopulateReasonsForMainDocument(
1571 if (rfh->last_http_status_code() != net::HTTP_OK)
1578 + if (rfh->IsErrorDocument())
1582 if (rfh->last_http_method() != net::HttpRequestHeaders::kGetMethod)
1584 diff --git a/src/content/browser/renderer_host/back_forward_cache_metrics.h b/src/content/browser/r…
1586 --- a/src/content/browser/renderer_host/back_forward_cache_metrics.h
1588 @@ -111,7 +111,8 @@ class BackForwardCacheMetrics
1592 - kMaxValue = kActivationNavigationsDisallowedForBug1234857,
1598 diff --git a/src/content/browser/renderer_host/frame_tree.cc b/src/content/browser/renderer_host/fr…
1600 --- a/src/content/browser/renderer_host/frame_tree.cc
1602 @@ -788,7 +788,7 @@ void FrameTree::RegisterExistingOriginToPreventOptInIsolation(
1606 - RenderFrameHostImpl* opener,
1610 // main frame - let's do the same thing here.
1611 @@ -800,16 +800,16 @@ void FrameTree::Init(SiteInstance* main_frame_site_instance,
1615 - // different browsing context groups (`renderer_initiated_creation` is false),
1616 - // where it should use a new opaque origin.
1624 - DCHECK(!renderer_initiated_creation || opener);
1626 root_->current_frame_host()->SetOriginDependentStateOfNewFrame(
1627 - renderer_initiated_creation ? opener->GetLastCommittedOrigin()
1628 + renderer_initiated_creation ? opener_for_origin->GetLastCommittedOrigin()
1632 diff --git a/src/content/browser/renderer_host/frame_tree.h b/src/content/browser/renderer_host/fra…
1634 --- a/src/content/browser/renderer_host/frame_tree.h
1636 @@ -204,7 +204,7 @@ class CONTENT_EXPORT FrameTree {
1640 - // is enabled) that potentially inherits `opener`'s origin in its
1645 @@ -213,7 +213,7 @@ class CONTENT_EXPORT FrameTree {
1649 - RenderFrameHostImpl* opener,
1654 diff --git a/src/content/browser/renderer_host/frame_tree_node.cc b/src/content/browser/renderer_ho…
1656 --- a/src/content/browser/renderer_host/frame_tree_node.cc
1658 @@ -50,7 +50,7 @@ base::LazyInstance<FrameTreeNodeIdMap>::DestructorAtExit
1662 -// owner's opener if the opener is destroyed.
1667 @@ -61,6 +61,15 @@ class FrameTreeNode::OpenerDestroyedObserver : public FrameTreeNode::Observer {
1683 @@ -858,4 +867,13 @@ bool FrameTreeNode::IsErrorPageIsolationEnabled() const {
1697 diff --git a/src/content/browser/renderer_host/frame_tree_node.h b/src/content/browser/renderer_hos…
1699 --- a/src/content/browser/renderer_host/frame_tree_node.h
1701 @@ -63,6 +63,10 @@ class CONTENT_EXPORT FrameTreeNode {
1712 @@ -505,6 +509,10 @@ class CONTENT_EXPORT FrameTreeNode {
1723 diff --git a/src/content/browser/renderer_host/media/media_stream_dispatcher_host.cc b/src/content/…
1725 --- a/src/content/browser/renderer_host/media/media_stream_dispatcher_host.cc
1727 @@ -18,6 +18,7 @@
1735 @@ -69,26 +70,40 @@ StartObservingWebContents(int render_process_id,
1739 +// Helper for getting the top-level WebContents associated with a given ID.
1750 + return rfh ? WebContents::FromRenderFrameHost(rfh->GetMainFrame()) : nullptr;
1754 // (render_process_id, render_frame_id) may be cropped to the crop-target
1756 -bool IsCropTargetValid(int render_process_id,
1757 - int render_frame_id,
1758 - const base::Token& crop_id) {
1759 - RenderFrameHost* const rfh =
1760 - RenderFrameHost::FromID(render_process_id, render_frame_id);
1761 - if (!rfh) {
1772 - WebContents* const web_contents =
1773 - WebContents::FromRenderFrameHost(rfh->GetMainFrame());
1774 - if (!web_contents) {
1776 + if (capturing_wc != captured_wc) { // Null or not-same-tab.
1781 - CropIdWebContentsHelper::FromWebContents(web_contents);
1784 // No crop-IDs were ever produced on this WebContents.
1785 // Any non-zero crop-ID should be rejected on account of being
1786 @@ -512,14 +527,19 @@ void MediaStreamDispatcherHost::Crop(const base::UnguessableToken& device_id,
1791 + media_stream_manager_->video_capture_manager()->GetGlobalRoutingID(
1796 // for self-capture, so the crop_id has to be associated with the top-level
1798 GetUIThreadTaskRunner({})->PostTaskAndReplyWithResult(
1800 - base::BindOnce(&IsCropTargetValid, render_process_id_, render_frame_id_,
1801 - crop_id),
1808 diff --git a/src/content/browser/renderer_host/media/video_capture_manager.cc b/src/content/browser…
1810 --- a/src/content/browser/renderer_host/media/video_capture_manager.cc
1812 @@ -594,6 +594,29 @@ VideoCaptureManager::GetDeviceFormatInUse(
1813 return device_in_use ? device_in_use->GetVideoCaptureFormat() : absl::nullopt;
1822 + if (!controller || !controller->IsDeviceAlive() ||
1823 + !blink::IsVideoDesktopCaptureMediaType(controller->stream_type())) {
1828 + DesktopMediaID::Parse(controller->device_id());
1842 @@ -796,7 +819,7 @@ void VideoCaptureManager::DestroyControllerIfNoClients(
1846 - const base::UnguessableToken& session_id) {
1851 diff --git a/src/content/browser/renderer_host/media/video_capture_manager.h b/src/content/browser/…
1853 --- a/src/content/browser/renderer_host/media/video_capture_manager.h
1855 @@ -24,6 +24,7 @@
1863 @@ -169,6 +170,12 @@ class CONTENT_EXPORT VideoCaptureManager
1873 // Sets the platform-dependent window ID for the desktop capture notification
1876 @@ -242,7 +249,7 @@ class CONTENT_EXPORT VideoCaptureManager
1880 - const base::UnguessableToken& session_id);
1885 diff --git a/src/content/browser/renderer_host/render_frame_host_impl.cc b/src/content/browser/rend…
1887 --- a/src/content/browser/renderer_host/render_frame_host_impl.cc
1889 @@ -1486,7 +1486,12 @@ RenderFrameHostImpl::~RenderFrameHostImpl() {
1902 @@ -2801,7 +2806,7 @@ void RenderFrameHostImpl::RenderProcessExited(
1906 - PendingDeletionCheckCompleted();
1911 @@ -3793,7 +3798,8 @@ void RenderFrameHostImpl::RemoveChild(FrameTreeNode* child) {
1915 - PendingDeletionCheckCompleted();
1921 @@ -3867,6 +3873,7 @@ void RenderFrameHostImpl::Detach() {
1929 @@ -3883,6 +3890,7 @@ void RenderFrameHostImpl::Detach() {
1937 @@ -4370,6 +4378,7 @@ void RenderFrameHostImpl::DetachFromProxy() {
1945 @@ -4573,6 +4582,7 @@ void RenderFrameHostImpl::OnUnloadACK() {
1953 @@ -4583,7 +4593,14 @@ void RenderFrameHostImpl::OnUnloaded() {
1955 unload_event_monitor_timeout_->Stop();
1967 frame_tree_node_->render_manager()->DeleteFromPendingList(this);
1968 @@ -6635,18 +6652,23 @@ void RenderFrameHostImpl::CreateNewWindow(
1969 effective_transient_activation_state, params->opener_suppressed,
1972 - bool was_consumed = false;
1973 - if (can_create_window) {
1974 - // Consume activation even w/o User Activation v2, to sync other renderers
1975 - // with calling renderer.
1976 - was_consumed = frame_tree_node_->UpdateUserActivationState(
1977 - blink::mojom::UserActivationUpdateType::kConsumeTransientActivation,
1978 - blink::mojom::UserActivationNotificationType::kNone);
1979 - } else {
1980 - std::move(callback).Run(mojom::CreateNewWindowStatus::kIgnore, nullptr);
1994 + bool was_consumed = frame_tree_node_->UpdateUserActivationState(
1998 // For Android WebView, we support a pop-up like behavior for window.open()
2001 @@ -7671,16 +7693,19 @@ void RenderFrameHostImpl::StartPendingDeletionOnSubtree() {
2005 - if (is_waiting_for_unload_ack_)
2006 - OnUnloaded();
2007 - else
2012 parent_->RemoveChild(frame_tree_node_);
2024 @@ -8601,7 +8626,12 @@ bool RenderFrameHostImpl::CreateWebUI(const GURL& dest_url,
2026 web_ui_->GetBindings() != entry_bindings) {
2037 @@ -8626,7 +8656,8 @@ bool RenderFrameHostImpl::CreateWebUI(const GURL& dest_url,
2041 - web_ui_.reset();
2047 diff --git a/src/content/browser/renderer_host/render_frame_host_impl.h b/src/content/browser/rende…
2049 --- a/src/content/browser/renderer_host/render_frame_host_impl.h
2051 @@ -1244,6 +1244,8 @@ class CONTENT_EXPORT RenderFrameHostImpl
2060 diff --git a/src/content/browser/renderer_host/render_frame_host_impl_browsertest.cc b/src/content/…
2062 --- a/src/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
2064 @@ -6441,6 +6441,80 @@ IN_PROC_BROWSER_TEST_F(RenderFrameHostImplBrowserTest, ErrorDocuments) {
2065 EXPECT_TRUE(child_b->IsErrorDocument());
2073 + GURL main_url(embedded_test_server()->GetURL(
2075 + // Navigate to a page with a cross-site iframe.
2077 + FrameTreeNode* root = web_contents()->GetPrimaryFrameTree().root();
2078 + FrameTreeNode* child = root->child_at(0);
2082 + url::Origin b_origin = url::Origin::Create(child->current_url());
2083 + EXPECT_EQ(a_origin, root->current_frame_host()->GetLastCommittedOrigin());
2084 + EXPECT_EQ(b_origin, child->current_frame_host()->GetLastCommittedOrigin());
2094 + FrameTreeNode* popup_frame = popup->GetMainFrame()->frame_tree_node();
2100 + popup_frame->current_frame_host()->GetLastCommittedOrigin());
2117 + EXPECT_EQ(child->current_url().spec(),
2129 + FrameTreeNode* popup_frame = popup->GetMainFrame()->frame_tree_node();
2135 + popup_frame->current_frame_host()->GetLastCommittedOrigin());
2137 + popup_frame->current_frame_host()->GetLastCommittedOrigin().opaque());
2145 diff --git a/src/content/browser/renderer_host/render_frame_host_manager.cc b/src/content/browser/r…
2147 --- a/src/content/browser/renderer_host/render_frame_host_manager.cc
2149 @@ -3450,9 +3450,19 @@ void RenderFrameHostManager::CommitPending(
2151 // If this is a top-level frame, and COOP triggered a BrowsingInstance swap,
2153 - // by removing the opener and proxies with unrelated SiteInstances.
2157 DCHECK(frame_tree_node_->IsMainFrame());
2163 + frame_tree_node_->ClearOpenerReferences();
2167 if (frame_tree_node_->opener() &&
2168 !render_frame_host_->GetSiteInstance()->IsRelatedSiteInstance(
2169 frame_tree_node_->opener()
2170 @@ -3464,6 +3474,8 @@ void RenderFrameHostManager::CommitPending(
2177 for (auto& it : browsing_context_state_->proxy_hosts()) {
2179 diff --git a/src/content/browser/renderer_host/render_widget_host_view_android_unittest.cc b/src/co…
2181 --- a/src/content/browser/renderer_host/render_widget_host_view_android_unittest.cc
2183 @@ -276,9 +276,9 @@ TEST_F(RenderWidgetHostViewAndroidTest, InsetVisualViewport) {
2187 - std::unique_ptr<ui::WindowAndroid> window(
2188 - ui::WindowAndroid::CreateForTesting());
2189 - window->AddChild(parent_view());
2192 + window->get()->AddChild(parent_view());
2193 EXPECT_TRUE(render_widget_host_view_android()->IsShowing());
2196 @@ -287,7 +287,7 @@ TEST_F(RenderWidgetHostViewAndroidTest, HideWindowRemoveViewAddViewShowWindow) {
2197 ->hide_layer_and_subtree());
2200 - window->OnVisibilityChanged(nullptr, nullptr, false);
2201 + window->get()->OnVisibilityChanged(nullptr, nullptr, false);
2202 parent_view()->RemoveFromParent();
2203 EXPECT_TRUE(render_widget_host_view_android()->IsShowing());
2205 @@ -297,8 +297,8 @@ TEST_F(RenderWidgetHostViewAndroidTest, HideWindowRemoveViewAddViewShowWindow) {
2209 - window->AddChild(parent_view());
2210 - window->OnVisibilityChanged(nullptr, nullptr, true);
2211 + window->get()->AddChild(parent_view());
2212 + window->get()->OnVisibilityChanged(nullptr, nullptr, true);
2213 EXPECT_TRUE(render_widget_host_view_android()->IsShowing());
2215 ->GetNativeView()
2216 diff --git a/src/content/browser/site_per_process_browsertest.cc b/src/content/browser/site_per_pro…
2218 --- a/src/content/browser/site_per_process_browsertest.cc
2220 @@ -7700,8 +7700,8 @@ IN_PROC_BROWSER_TEST_P(
2224 -// Tests that when a frame contains a modal <dialog> element, out-of-process
2225 -// iframe children cannot take focus, because they are inert.
2226 +// Tests that when an out-of-process iframe becomes inert due to a modal
2231 @@ -7742,11 +7742,11 @@ IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
2235 - // Attempt to change focus in the inert subframe. This should fail.
2240 - "",
2245 @@ -7768,15 +7768,15 @@ IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
2249 - // Verify that inertness was preserved across the navigation.
2250 - EXPECT_EQ("",
2259 - // new local frame remains inert.
2260 + // new local frame remains non-inert.
2261 GURL same_site_url(embedded_test_server()->GetURL("a.com", "/title1.html"));
2264 @@ -7786,14 +7786,103 @@ IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
2268 - // Verify that inertness was preserved across the navigation.
2269 - EXPECT_EQ("",
2281 + base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
2283 + GURL main_url(embedded_test_server()->GetURL(
2288 + static_cast<WebContentsImpl*>(shell()->web_contents())
2289 + ->GetPrimaryFrameTree()
2291 + ASSERT_EQ(1U, frame_a->child_count());
2292 + FrameTreeNode* frame_b = frame_a->child_at(0);
2293 + ASSERT_EQ(1U, frame_b->child_count());
2294 + FrameTreeNode* frame_c = frame_b->child_at(0);
2295 + RenderFrameProxyHost* proxy_b = frame_b->render_manager()->GetProxyToParent();
2296 + RenderFrameProxyHost* proxy_c = frame_c->render_manager()->GetProxyToParent();
2307 + // as ExecJs, waiting for an browser<->renderer roundtrip using ExecJs
2314 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2315 + EXPECT_FALSE(proxy_c->IsInertForTesting());
2320 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2321 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2323 + // Make b non-inert, this should also make c non-inert.
2326 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2327 + EXPECT_FALSE(proxy_c->IsInertForTesting());
2332 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2333 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2338 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2339 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2341 + // Try to make c non-inert, it should still be inert due to b.
2344 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2345 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2347 + // Make b non-inert, this should also make c non-inert.
2350 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2351 + EXPECT_FALSE(proxy_c->IsInertForTesting());
2357 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2358 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2360 + // Make b non-inert, c should continue being inert.
2363 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2364 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2370 diff --git a/src/content/browser/sms/sms_provider_gms_unittest.cc b/src/content/browser/sms/sms_pro…
2372 --- a/src/content/browser/sms/sms_provider_gms_unittest.cc
2374 @@ -67,7 +67,7 @@ class SmsProviderGmsBaseTest : public RenderViewHostTestHarness {
2375 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
2378 - test_window_ = ui::WindowAndroid::CreateForTesting();
2383 @@ -75,15 +75,12 @@ class SmsProviderGmsBaseTest : public RenderViewHostTestHarness {
2386 provider_->SetClientAndWindowForTesting(j_fake_sms_retriever_client_,
2387 - test_window_->GetJavaObject());
2388 + window_->get()->GetJavaObject());
2390 provider_->AddObserver(&observer_);
2393 - void TearDown() {
2394 - RenderViewHostTestHarness::TearDown();
2395 - test_window_->Destroy(nullptr, nullptr);
2396 - }
2401 @@ -152,7 +149,7 @@ class SmsProviderGmsBaseTest : public RenderViewHostTestHarness {
2405 - raw_ptr<ui::WindowAndroid> test_window_;
2410 diff --git a/src/content/browser/web_contents/web_contents_impl.cc b/src/content/browser/web_conten…
2412 --- a/src/content/browser/web_contents/web_contents_impl.cc
2414 @@ -2979,9 +2979,18 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params,
2415 ->PreventAssociationWithSpareProcess();
2421 + // - GetOriginalOpener(), which would always return the main frame of the
2423 + // - FindOpenerRFH(), which will still return the opener frame if the
2429 - params.main_frame_name, GetOriginalOpener(), primary_main_frame_policy);
2433 GetContentClient()->browser()->GetWebContentsViewDelegate(this);
2434 diff --git a/src/content/common/frame.mojom b/src/content/common/frame.mojom
2436 --- a/src/content/common/frame.mojom
2438 @@ -554,8 +554,10 @@ struct CreateNewWindowParams {
2442 - // Ignore creation of the new window. This can happen because creation is
2443 - // blocked or because the new window should have no opener relationship.
2451 diff --git a/src/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentRec…
2453 --- a/src/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.j…
2455 @@ -45,7 +45,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
2459 - mContext.registerReceiver(this, filter);
2464 diff --git a/src/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/s…
2466 --- a/src/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
2468 @@ -4,14 +4,18 @@
2487 @@ -82,16 +86,34 @@ class Wrappers {
2491 - public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
2492 - if (filter.hasAction(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION)) {
2493 - mVerificationReceiver = receiver;
2494 - } else {
2495 - mUserConsentReceiver = receiver;
2496 - }
2528 diff --git a/src/content/public/browser/background_fetch_delegate.h b/src/content/public/browser/ba…
2530 --- a/src/content/public/browser/background_fetch_delegate.h
2532 @@ -66,6 +66,7 @@ class CONTENT_EXPORT BackgroundFetchDelegate {
2540 diff --git a/src/content/public/browser/web_contents.h b/src/content/public/browser/web_contents.h
2542 --- a/src/content/public/browser/web_contents.h
2544 @@ -1059,8 +1059,13 @@ class WebContents : public PageNavigator,
2548 - // Returns the original opener if HasOriginalOpener() is true, or nullptr
2549 - // otherwise.
2560 diff --git a/src/content/renderer/render_view_impl.cc b/src/content/renderer/render_view_impl.cc
2562 --- a/src/content/renderer/render_view_impl.cc
2564 @@ -306,8 +306,27 @@ WebView* RenderViewImpl::CreateView(
2567 auto* frame_host = creator_frame->GetFrameHost();
2568 - bool err = !frame_host->CreateNewWindow(std::move(params), &status, &reply);
2569 - if (err || status == mojom::CreateNewWindowStatus::kIgnore)
2570 + if (!frame_host->CreateNewWindow(std::move(params), &status, &reply)) {
2585 + consumed_user_gesture = creator->ConsumeTransientUserActivation(
2593 // For Android WebView, we support a pop-up like behavior for window.open()
2594 @@ -327,11 +346,6 @@ WebView* RenderViewImpl::CreateView(
2595 DCHECK_NE(MSG_ROUTING_NONE, reply->main_frame_route_id);
2596 DCHECK_NE(MSG_ROUTING_NONE, reply->widget_params->routing_id);
2598 - // The browser allowed creation of a new window and consumed the user
2599 - // activation.
2600 - consumed_user_gesture = creator->ConsumeTransientUserActivation(
2601 - blink::UserActivationUpdateSource::kBrowser);
2602 -
2606 diff --git a/src/content/test/data/gpu/webgl-overly-large-uniform.html b/src/content/test/data/gpu/…
2609 --- /dev/null
2610 +++ b/src/content/test/data/gpu/webgl-overly-large-uniform.html
2611 @@ -0,0 +1,137 @@
2614 +<script type="x-shader/x-vertex" id="vertex">
2622 +<script type="x-shader/x-fragment" id="fragment">
2693 + // If allocation fails (for example, on 32-bit Android), fall back
2749 diff --git a/src/content/test/gpu/gpu_tests/context_lost_integration_test.py b/src/content/test/gpu…
2751 --- a/src/content/test/gpu/gpu_tests/context_lost_integration_test.py
2753 @@ -164,6 +164,8 @@ class ContextLostIntegrationTest(gpu_integration_test.GpuIntegrationTest):
2758 + 'webgl-overly-large-uniform.html'),
2760 'webgl-domain-blocking-page1.html'),
2762 @@ -402,6 +404,16 @@ class ContextLostIntegrationTest(gpu_integration_test.GpuIntegrationTest):
2767 + test_path: str) -> None:
2770 + '--enable-features=DisableArrayBufferSizeLimitsForTesting'
2779 diff --git a/src/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt b/src/content/…
2781 --- a/src/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
2783 @@ -332,6 +332,9 @@ crbug.com/948141 Pixel_CanvasDisplaySRGBAccelerated2D [ Failure ]
2785 crbug.com/883500 [ android android-nexus-5 ] Pixel_BackgroundImage [ Failure ]
2788 +crbug.com/1307317 [ android android-chromium android-nexus-5x ] Pixel_PrecisionRoundedCorner [ Fai…
2791 …crbug.com/883500 [ android android-chromium android-nexus-5x ] Pixel_BackgroundImage [ RetryOnFail…
2792 …crbug.com/1065514 [ android android-chromium android-nexus-5x ] Pixel_WebGLReadPixelsTabSwitch [ R…
2793 diff --git a/src/gpu/command_buffer/client/client_discardable_manager_unittest.cc b/src/gpu/command…
2795 --- a/src/gpu/command_buffer/client/client_discardable_manager_unittest.cc
2797 @@ -45,6 +45,9 @@ class FakeCommandBuffer : public CommandBuffer {
2802 + // No-op; doesn't need to be exercised here.
2807 diff --git a/src/gpu/command_buffer/client/client_test_helper.cc b/src/gpu/command_buffer/client/cl…
2809 --- a/src/gpu/command_buffer/client/client_test_helper.cc
2811 @@ -155,6 +155,13 @@ void MockClientCommandBuffer::DelegateToFake() {
2825 diff --git a/src/gpu/command_buffer/client/client_test_helper.h b/src/gpu/command_buffer/client/cli…
2827 --- a/src/gpu/command_buffer/client/client_test_helper.h
2829 @@ -85,6 +85,8 @@ class MockClientCommandBuffer : public CommandBuffer,
2838 diff --git a/src/gpu/command_buffer/client/cmd_buffer_helper.cc b/src/gpu/command_buffer/client/cmd…
2840 --- a/src/gpu/command_buffer/client/cmd_buffer_helper.cc
2842 @@ -157,7 +157,8 @@ void CommandBufferHelper::UpdateCachedState(const CommandBuffer::State& state) {
2846 - context_lost_ = error::IsError(state.error);
2852 @@ -296,7 +297,6 @@ void CommandBufferHelper::WaitForAvailableEntries(int32_t count) {
2856 - DCHECK(count < total_entry_count_);
2860 @@ -344,7 +344,16 @@ void CommandBufferHelper::WaitForAvailableEntries(int32_t count) {
2864 - DCHECK_GE(immediate_entry_count_, count);
2868 + command_buffer_->ForceLostContext(error::kGuilty);
2878 diff --git a/src/gpu/command_buffer/common/command_buffer.h b/src/gpu/command_buffer/common/command…
2880 --- a/src/gpu/command_buffer/common/command_buffer.h
2882 @@ -126,6 +126,10 @@ class GPU_EXPORT CommandBuffer {
2887 + // Forcibly lose this context. Used by higher-level code when it determines
2893 diff --git a/src/gpu/command_buffer/service/command_buffer_direct.cc b/src/gpu/command_buffer/servi…
2895 --- a/src/gpu/command_buffer/service/command_buffer_direct.cc
2897 @@ -63,6 +63,11 @@ void CommandBufferDirect::DestroyTransferBuffer(int32_t id) {
2909 diff --git a/src/gpu/command_buffer/service/command_buffer_direct.h b/src/gpu/command_buffer/servic…
2911 --- a/src/gpu/command_buffer/service/command_buffer_direct.h
2913 @@ -41,6 +41,7 @@ class GPU_EXPORT CommandBufferDirect : public CommandBuffer,
2921 diff --git a/src/gpu/command_buffer/service/webgpu_decoder_impl.cc b/src/gpu/command_buffer/service…
2923 --- a/src/gpu/command_buffer/service/webgpu_decoder_impl.cc
2925 @@ -404,11 +404,12 @@ class WebGPUDecoderImpl final : public WebGPUDecoder {
2929 - void DoRequestDevice(DawnRequestDeviceSerial request_device_serial,
2930 - int32_t requested_adapter_index,
2931 - uint32_t device_id,
2932 - uint32_t device_generation,
2933 - const WGPUDeviceProperties& requested_device_properties);
2943 @@ -564,16 +565,16 @@ ContextResult WebGPUDecoderImpl::Initialize() {
2947 -void WebGPUDecoderImpl::DoRequestDevice(
2954 - DCHECK_LE(0, requested_adapter_index);
2955 -
2956 - DCHECK_LT(static_cast<size_t>(requested_adapter_index),
2957 - dawn_adapters_.size());
2965 @@ -648,6 +649,8 @@ void WebGPUDecoderImpl::DoRequestDevice(
2974 @@ -1073,9 +1076,8 @@ error::Error WebGPUDecoderImpl::HandleRequestDevice(
2978 - DoRequestDevice(request_device_serial, adapter_service_id, device_id,
2979 - device_generation, device_properties);
2980 - return error::kNoError;
2986 diff --git a/src/gpu/ipc/client/command_buffer_proxy_impl.cc b/src/gpu/ipc/client/command_buffer_pr…
2988 --- a/src/gpu/ipc/client/command_buffer_proxy_impl.cc
2990 @@ -393,6 +393,22 @@ void CommandBufferProxyImpl::DestroyTransferBuffer(int32_t id) {
3005 + // being in a GpuControlClient callback), so avoid re-entering the
3013 diff --git a/src/gpu/ipc/client/command_buffer_proxy_impl.h b/src/gpu/ipc/client/command_buffer_pro…
3015 --- a/src/gpu/ipc/client/command_buffer_proxy_impl.h
3017 @@ -120,6 +120,7 @@ class GPU_EXPORT CommandBufferProxyImpl : public gpu::CommandBuffer,
3025 diff --git a/src/gpu/ipc/in_process_command_buffer.cc b/src/gpu/ipc/in_process_command_buffer.cc
3027 --- a/src/gpu/ipc/in_process_command_buffer.cc
3029 @@ -1044,6 +1044,21 @@ void InProcessCommandBuffer::DestroyTransferBuffer(int32_t id) {
3044 + command_buffer_->SetContextLostReason(reason);
3045 + command_buffer_->SetParseError(error::kLostContext);
3050 command_buffer_->DestroyTransferBuffer(id);
3051 diff --git a/src/gpu/ipc/in_process_command_buffer.h b/src/gpu/ipc/in_process_command_buffer.h
3053 --- a/src/gpu/ipc/in_process_command_buffer.h
3055 @@ -147,6 +147,7 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer
3063 @@ -325,6 +326,7 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer
3071 diff --git a/src/net/http/http_stream_parser.cc b/src/net/http/http_stream_parser.cc
3073 --- a/src/net/http/http_stream_parser.cc
3075 @@ -1014,15 +1014,23 @@ int HttpStreamParser::ParseResponseHeaders(int end_offset) {
3076 base::StringPiece(read_buf_->StartOfBuffer(), end_offset));
3081 // Enough data was read -- there is no status line, so this is HTTP/0.9, or
3084 - // If the port is not the default for the scheme, assume it's not a real
3085 - // HTTP/0.9 response, and fail the request.
3092 base::StringPiece scheme = request_->url.scheme_piece();
3094 request_->url.EffectiveIntPort()) {
3101 diff --git a/src/net/http/http_stream_parser.h b/src/net/http/http_stream_parser.h
3103 --- a/src/net/http/http_stream_parser.h
3105 @@ -275,6 +275,11 @@ class NET_EXPORT_PRIVATE HttpStreamParser {
3106 // True if reading a keep-alive response. False if not, or if don't yet know.
3117 diff --git a/src/net/http/http_stream_parser_unittest.cc b/src/net/http/http_stream_parser_unittest…
3119 --- a/src/net/http/http_stream_parser_unittest.cc
3121 @@ -1399,6 +1399,25 @@ TEST(HttpStreamParser, Http09PortTests) {
3135 + ASSERT_TRUE(get_runner.response_info()->headers);
3137 + get_runner.response_info()->headers->GetStatusLine());
3147 diff --git a/src/ppapi/proxy/ppapi_command_buffer_proxy.cc b/src/ppapi/proxy/ppapi_command_buffer_p…
3149 --- a/src/ppapi/proxy/ppapi_command_buffer_proxy.cc
3151 @@ -171,6 +171,12 @@ void PpapiCommandBufferProxy::DestroyTransferBuffer(int32_t id) {
3164 diff --git a/src/ppapi/proxy/ppapi_command_buffer_proxy.h b/src/ppapi/proxy/ppapi_command_buffer_pr…
3166 --- a/src/ppapi/proxy/ppapi_command_buffer_proxy.h
3168 @@ -58,6 +58,7 @@ class PPAPI_PROXY_EXPORT PpapiCommandBufferProxy : public gpu::CommandBuffer,
3176 diff --git a/src/services/network/public/cpp/server/http_server.cc b/src/services/network/public/cp…
3178 --- a/src/services/network/public/cpp/server/http_server.cc
3180 @@ -107,8 +107,8 @@ void HttpServer::SendRaw(int connection_id,
3181 connection->write_watcher().Watch(
3182 connection->send_handle(),
3184 - base::BindRepeating(&HttpServer::OnWritable, base::Unretained(this),
3185 - connection->id()));
3187 + weak_ptr_factory_.GetWeakPtr(), connection->id()));
3191 @@ -182,9 +182,9 @@ bool HttpServer::SetSendBufferSize(int connection_id, int32_t size) {
3195 - server_socket_->Accept(
3196 - mojo::NullRemote(), /* observer */
3197 - base::BindOnce(&HttpServer::OnAcceptCompleted, base::Unretained(this)));
3198 + server_socket_->Accept(mojo::NullRemote(), /* observer */
3204 @@ -212,8 +212,8 @@ void HttpServer::OnAcceptCompleted(
3205 connection->receive_handle(),
3208 - base::BindRepeating(&HttpServer::OnReadable, base::Unretained(this),
3209 - connection->id()));
3211 + weak_ptr_factory_.GetWeakPtr(), connection->id()));
3215 diff --git a/src/services/network/url_loader.cc b/src/services/network/url_loader.cc
3217 --- a/src/services/network/url_loader.cc
3219 @@ -849,8 +849,8 @@ void URLLoader::OpenFilesForUpload(const ResourceRequest& request) {
3221 base::SequencedTaskRunnerHandle::Get()->PostTask(
3223 - base::BindOnce(&URLLoader::NotifyCompleted, base::Unretained(this),
3224 - net::ERR_ACCESS_DENIED));
3229 url_request_->LogBlockedBy("Opening Files");
3230 @@ -869,7 +869,7 @@ void URLLoader::SetUpUpload(const ResourceRequest& request,
3232 base::SequencedTaskRunnerHandle::Get()->PostTask(
3234 - base::Unretained(this), error_code));
3239 diff --git a/src/storage/browser/quota/quota_manager_proxy.cc b/src/storage/browser/quota/quota_man…
3241 --- a/src/storage/browser/quota/quota_manager_proxy.cc
3243 @@ -15,6 +15,7 @@
3251 @@ -123,8 +124,7 @@ void QuotaManagerProxy::GetOrCreateBucket(
3253 quota_manager_impl_->GetOrCreateBucket(
3255 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3256 - std::move(callback)));
3261 @@ -151,8 +151,7 @@ void QuotaManagerProxy::GetOrCreateBucketDeprecated(
3263 quota_manager_impl_->GetOrCreateBucketDeprecated(
3265 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3266 - std::move(callback)));
3271 @@ -179,8 +178,7 @@ void QuotaManagerProxy::CreateBucketForTesting(
3273 quota_manager_impl_->CreateBucketForTesting( // IN-TEST
3275 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3276 - std::move(callback)));
3281 @@ -207,8 +205,7 @@ void QuotaManagerProxy::GetBucket(
3283 quota_manager_impl_->GetBucket(
3285 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3286 - std::move(callback)));
3291 @@ -234,8 +231,7 @@ void QuotaManagerProxy::DeleteBucket(
3293 quota_manager_impl_->FindAndDeleteBucketData(
3295 - base::BindOnce(&DidGetStatus, std::move(callback_task_runner),
3296 - std::move(callback)));
3301 diff --git a/src/third_party/angle/src/libANGLE/Context.cpp b/src/third_party/angle/src/libANGLE/Co…
3303 --- a/src/third_party/angle/src/libANGLE/Context.cpp
3305 @@ -1304,6 +1304,7 @@ void Context::bindTransformFeedback(GLenum target, TransformFeedbackID transf…
3313 @@ -3039,6 +3040,7 @@ void Context::detachTransformFeedback(TransformFeedbackID transformFeedback)
3321 diff --git a/src/third_party/angle/src/libANGLE/State.cpp b/src/third_party/angle/src/libANGLE/Stat…
3323 --- a/src/third_party/angle/src/libANGLE/State.cpp
3325 @@ -2174,10 +2174,7 @@ angle::Result State::detachBuffer(Context *context, const Buffer *buffer)
3328 ANGLE_TRY(curTransformFeedback->detachBuffer(context, bufferID));
3329 - if (isTransformFeedbackActiveUnpaused())
3330 - {
3331 - context->getStateCache().onActiveTransformFeedbackChange(context);
3332 - }
3333 + context->getStateCache().onActiveTransformFeedbackChange(context);
3336 if (getVertexArray()->detachBuffer(context, bufferID))
3337 diff --git a/src/third_party/angle/src/libANGLE/validationEGL.cpp b/src/third_party/angle/src/libAN…
3339 --- a/src/third_party/angle/src/libANGLE/validationEGL.cpp
3341 @@ -4852,7 +4852,7 @@ bool ValidateBindTexImage(const ValidationContext *val,
3344 gl::Context *context = val->eglThread->getContext();
3345 - if (context)
3346 + if (context && !context->isContextLost())
3348 gl::TextureType type = egl_gl::EGLTextureTargetToTextureType(surface->getTextureTarget());
3349 gl::Texture *textureObject = context->getTextureByType(type);
3350 diff --git a/src/third_party/angle/src/libANGLE/validationES.cpp b/src/third_party/angle/src/libANG…
3352 --- a/src/third_party/angle/src/libANGLE/validationES.cpp
3354 @@ -4178,7 +4178,7 @@ const char *ValidateDrawStates(const Context *context)
3358 - if (state.isTransformFeedbackActiveUnpaused())
3363 diff --git a/src/third_party/angle/src/libANGLE/validationES2.cpp b/src/third_party/angle/src/libAN…
3365 --- a/src/third_party/angle/src/libANGLE/validationES2.cpp
3367 @@ -3620,7 +3620,7 @@ bool ValidateBufferSubData(const Context *context,
3371 - angle::CheckedNumeric<size_t> checkedSize(size);
3376 diff --git a/src/third_party/angle/src/libGLESv2/egl_stubs.cpp b/src/third_party/angle/src/libGLESv…
3378 --- a/src/third_party/angle/src/libGLESv2/egl_stubs.cpp
3380 @@ -61,7 +61,7 @@ EGLBoolean BindTexImage(Thread *thread, Display *display, Surface *eglSurface, E
3383 gl::Context *context = thread->getContext();
3384 - if (context)
3385 + if (context && !context->isContextLost())
3388 egl_gl::EGLTextureTargetToTextureType(eglSurface->getTextureTarget());
3389 @@ -569,15 +569,18 @@ EGLBoolean ReleaseTexImage(Thread *thread, Display *display, Surface *eglSurf…
3391 ANGLE_EGL_TRY_RETURN(thread, display->prepareForCall(), "eglReleaseTexImage",
3393 - gl::Texture *texture = eglSurface->getBoundTexture();
3394 -
3395 - if (texture)
3396 + gl::Context *context = thread->getContext();
3397 + if (context && !context->isContextLost())
3399 - ANGLE_EGL_TRY_RETURN(thread, eglSurface->releaseTexImage(thread->getContext(), buffer),
3400 - "eglReleaseTexImage", GetSurfaceIfValid(display, eglSurface),
3401 - EGL_FALSE);
3402 - }
3403 + gl::Texture *texture = eglSurface->getBoundTexture();
3407 + ANGLE_EGL_TRY_RETURN(thread, eglSurface->releaseTexImage(thread->getContext(), buffer),
3412 thread->setSuccess();
3415 diff --git a/src/third_party/angle/src/tests/gl_tests/BufferDataTest.cpp b/src/third_party/angle/sr…
3417 --- a/src/third_party/angle/src/tests/gl_tests/BufferDataTest.cpp
3419 @@ -914,6 +914,19 @@ TEST_P(BufferDataTest, MapWriteArrayBufferDataDrawArrays)
3423 +// Verify that buffer sub data uploads are properly validated within the buffer size range on 32-b…
3436 // Tests a null crash bug caused by copying from null back-end buffer pointer
3439 diff --git a/src/third_party/angle/src/tests/gl_tests/TransformFeedbackTest.cpp b/src/third_party/a…
3441 --- a/src/third_party/angle/src/tests/gl_tests/TransformFeedbackTest.cpp
3443 @@ -3997,6 +3997,67 @@ TEST_P(TransformFeedbackTest, DeleteTransformFeedbackBuffer)
3461 + ASSERT_NE(-1, loc);
3511 diff --git a/src/third_party/blink/common/features.cc b/src/third_party/blink/common/features.cc
3513 --- a/src/third_party/blink/common/features.cc
3515 @@ -1202,5 +1202,9 @@ const base::Feature kCompositedCaret{"CompositedCaret",
3525 diff --git a/src/third_party/blink/common/messaging/string_message_codec.cc b/src/third_party/blink…
3527 --- a/src/third_party/blink/common/messaging/string_message_codec.cc
3529 @@ -6,6 +6,7 @@
3537 @@ -52,21 +53,22 @@ void WriteBytes(const char* bytes,
3538 buffer->insert(buffer->end(), bytes, bytes + num_bytes);
3541 -bool ReadUint8(const uint8_t** ptr, const uint8_t* end, uint8_t* value) {
3542 - if (*ptr >= end)
3543 - return false;
3544 - *value = *(*ptr)++;
3545 - return true;
3554 -bool ReadUint32(const uint8_t** ptr, const uint8_t* end, uint32_t* value) {
3560 - if (*ptr >= end)
3563 - current_byte = *(*ptr)++;
3568 @@ -106,36 +108,36 @@ std::vector<uint8_t> EncodeStringMessage(const std::u16string& data) {
3572 - const uint8_t* ptr = encoded_data.data();
3573 - const uint8_t* end = ptr + encoded_data.size();
3581 - if (!ReadUint8(&ptr, end, &tag))
3585 - if (tag == kVersionTag && !ReadUint32(&ptr, end, &version))
3593 - if (!ReadUint32(&ptr, end, &num_bytes))
3596 - result->assign(reinterpret_cast<const char*>(ptr),
3597 - reinterpret_cast<const char*>(ptr) + num_bytes);
3598 - return true;
3600 + result->assign(span.begin(), span.end());
3605 - if (!ReadUint32(&ptr, end, &num_bytes))
3608 - result->assign(reinterpret_cast<const char16_t*>(ptr), num_bytes / 2);
3609 - return true;
3611 + result->assign(span.begin(), span.end());
3616 diff --git a/src/third_party/blink/common/messaging/string_message_codec_unittest.cc b/src/third_pa…
3618 --- a/src/third_party/blink/common/messaging/string_message_codec_unittest.cc
3620 @@ -136,5 +136,13 @@ TEST(StringMessageCodecTest, V8ToSelfTest_NonASCIILongEnoughToForcePadding) {
3634 diff --git a/src/third_party/blink/public/common/features.h b/src/third_party/blink/public/common/f…
3636 --- a/src/third_party/blink/public/common/features.h
3638 @@ -593,6 +593,12 @@ BLINK_COMMON_EXPORT extern const base::Feature kCompositedCaret;
3651 diff --git a/src/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/src/third_party/…
3653 --- a/src/third_party/blink/public/devtools_protocol/browser_protocol.pdl
3655 @@ -8023,6 +8023,7 @@ domain Page
3663 diff --git a/src/third_party/blink/renderer/build/scripts/core/css/templates/cssom_keywords.cc.tmpl…
3665 --- a/src/third_party/blink/renderer/build/scripts/core/css/templates/cssom_keywords.cc.tmpl
3667 @@ -20,8 +20,10 @@ bool CSSOMKeywords::ValidKeywordForProperty(CSSPropertyID id,
3671 - if (css_parsing_utils::IsCSSWideKeyword(valueID))
3672 - return true;
3674 + // TODO(crbug.com/1310761): Support CSS-wide keywords in custom props.
3680 diff --git a/src/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/src/third_party/b…
3682 --- a/src/third_party/blink/renderer/core/css/resolver/style_resolver.cc
3684 @@ -1303,9 +1303,6 @@ scoped_refptr<ComputedStyle> StyleResolver::InitialStyleForElement() const {
3686 initial_style->SetInitialData(std::move(initial_data));
3688 - if (frame && frame->IsInert())
3689 - initial_style->SetIsForcedInert();
3690 -
3694 diff --git a/src/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc b/src/third_pa…
3696 --- a/src/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc
3698 @@ -1872,8 +1872,6 @@ TEST_F(StyleResolverTest, IsInertWithFullscreen) {
3702 - LocalFrame& frame = GetFrame();
3703 -
3704 document.body()->setInnerHTML(R"HTML(
3707 @@ -1898,27 +1896,9 @@ TEST_F(StyleResolverTest, IsInertWithFrameAndFullscreen) {
3708 EXPECT_FALSE(div->GetComputedStyle()->IsInert());
3709 EXPECT_FALSE(div_text->GetComputedStyle()->IsInert());
3711 - frame.SetIsInert(true);
3712 - UpdateAllLifecyclePhasesForTest();
3713 -
3714 - EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3715 - EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3716 - EXPECT_TRUE(body->GetComputedStyle()->IsInert());
3717 - EXPECT_TRUE(div->GetComputedStyle()->IsInert());
3718 - EXPECT_TRUE(div_text->GetComputedStyle()->IsInert());
3719 -
3723 - EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3724 - EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3725 - EXPECT_TRUE(body->GetComputedStyle()->IsInert());
3726 - EXPECT_TRUE(div->GetComputedStyle()->IsInert());
3727 - EXPECT_TRUE(div_text->GetComputedStyle()->IsInert());
3728 -
3729 - frame.SetIsInert(false);
3730 - UpdateAllLifecyclePhasesForTest();
3731 -
3732 EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3733 EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3734 EXPECT_FALSE(body->GetComputedStyle()->IsInert());
3735 @@ -1933,20 +1913,10 @@ TEST_F(StyleResolverTest, IsInertWithFrameAndFullscreen) {
3736 EXPECT_FALSE(body->GetComputedStyle()->IsInert());
3737 EXPECT_FALSE(div->GetComputedStyle()->IsInert());
3738 EXPECT_FALSE(div_text->GetComputedStyle()->IsInert());
3739 -
3740 - frame.SetIsInert(true);
3741 - UpdateAllLifecyclePhasesForTest();
3742 -
3743 - EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3744 - EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3745 - EXPECT_TRUE(body->GetComputedStyle()->IsInert());
3746 - EXPECT_TRUE(div->GetComputedStyle()->IsInert());
3747 - EXPECT_TRUE(div_text->GetComputedStyle()->IsInert());
3752 - LocalFrame& frame = GetFrame();
3755 document.documentElement()->setInnerHTML(R"HTML(
3756 @@ -1977,37 +1947,23 @@ TEST_F(StyleResolverTest, IsInertWithBackdrop) {
3760 - frame.SetIsInert(true);
3761 - UpdateAllLifecyclePhasesForTest();
3762 -
3763 - EXPECT_EQ(html->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3764 - EXPECT_TRUE(IsBackdropInert(body));
3765 - EXPECT_TRUE(IsBackdropInert(dialog));
3766 -
3767 dialog->close();
3770 EXPECT_EQ(html->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3771 - EXPECT_TRUE(IsBackdropInert(body));
3773 EXPECT_EQ(dialog->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3778 - EXPECT_TRUE(IsBackdropInert(html));
3780 EXPECT_EQ(body->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3781 EXPECT_EQ(dialog->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3783 dialog->showModal(exception_state);
3786 - EXPECT_TRUE(IsBackdropInert(html));
3787 - EXPECT_EQ(body->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3788 - EXPECT_TRUE(IsBackdropInert(dialog));
3789 -
3790 - frame.SetIsInert(false);
3791 - UpdateAllLifecyclePhasesForTest();
3792 -
3794 EXPECT_EQ(body->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3796 diff --git a/src/third_party/blink/renderer/core/dom/attr.cc b/src/third_party/blink/renderer/core/…
3798 --- a/src/third_party/blink/renderer/core/dom/attr.cc
3800 @@ -24,10 +24,12 @@
3813 @@ -78,14 +80,23 @@ void Attr::setValue(const AtomicString& value,
3817 -void Attr::setNodeValue(const String& v) {
3822 - if (element_)
3823 - element_->setAttribute(GetQualifiedName(), value);
3824 - else
3825 - standalone_value_or_attached_local_name_ = value;
3833 + if (value->IsString())
3834 + string_value = value->GetAsString();
3835 + else if (value->IsTrustedScript())
3836 + string_value = value->GetAsTrustedScript()->toString();
3842 diff --git a/src/third_party/blink/renderer/core/dom/attr.h b/src/third_party/blink/renderer/core/d…
3844 --- a/src/third_party/blink/renderer/core/dom/attr.h
3846 @@ -67,7 +67,9 @@ class CORE_EXPORT Attr final : public Node {
3850 - void setNodeValue(const String&) override;
3857 diff --git a/src/third_party/blink/renderer/core/dom/character_data.cc b/src/third_party/blink/rend…
3859 --- a/src/third_party/blink/renderer/core/dom/character_data.cc
3861 @@ -186,7 +186,7 @@ bool CharacterData::ContainsOnlyWhitespaceOrEmpty() const {
3865 -void CharacterData::setNodeValue(const String& node_value) {
3870 diff --git a/src/third_party/blink/renderer/core/dom/character_data.h b/src/third_party/blink/rende…
3872 --- a/src/third_party/blink/renderer/core/dom/character_data.h
3874 @@ -94,7 +94,7 @@ class CORE_EXPORT CharacterData : public Node {
3878 - void setNodeValue(const String&) final;
3883 diff --git a/src/third_party/blink/renderer/core/dom/node.cc b/src/third_party/blink/renderer/core/…
3885 --- a/src/third_party/blink/renderer/core/dom/node.cc
3887 @@ -368,7 +368,7 @@ String Node::nodeValue() const {
3891 -void Node::setNodeValue(const String&) {
3896 diff --git a/src/third_party/blink/renderer/core/dom/node.h b/src/third_party/blink/renderer/core/d…
3898 --- a/src/third_party/blink/renderer/core/dom/node.h
3900 @@ -197,7 +197,8 @@ class CORE_EXPORT Node : public EventTarget {
3904 - virtual void setNodeValue(const String&);
3910 diff --git a/src/third_party/blink/renderer/core/dom/node.idl b/src/third_party/blink/renderer/core…
3912 --- a/src/third_party/blink/renderer/core/dom/node.idl
3914 @@ -56,7 +56,7 @@
3918 - [CEReactions] attribute DOMString? nodeValue;
3923 diff --git a/src/third_party/blink/renderer/core/editing/serializers/serialization.cc b/src/third_p…
3925 --- a/src/third_party/blink/renderer/core/editing/serializers/serialization.cc
3927 @@ -835,6 +835,12 @@ static bool StripSVGUseDataURLs(Node& node) {
3940 @@ -844,42 +850,56 @@ DocumentFragment* CreateSanitizedFragmentFromMarkupWithContext(
3944 - Document* staging_document = CreateStagingDocumentForMarkupSanitization(
3945 - *document.GetFrame()->GetFrameScheduler()->GetAgentGroupScheduler());
3946 - Element* body = staging_document->body();
3947 -
3948 - DocumentFragment* fragment = CreateFragmentFromMarkupWithContext(
3949 - *staging_document, raw_markup, fragment_start, fragment_end, KURL(),
3950 - kDisallowScriptingAndPluginContent);
3951 - if (!fragment) {
3952 - staging_document->GetPage()->WillBeDestroyed();
3953 - return nullptr;
3954 - }
3965 + *document.GetFrame()->GetFrameScheduler()->GetAgentGroupScheduler());
3966 + Element* body = staging_document->body();
3972 + staging_document->GetPage()->WillBeDestroyed();
3976 - bool needs_sanitization = false;
3977 - if (ContainsStyleElements(*fragment))
3978 - needs_sanitization = true;
3979 - if (StripSVGUseDataURLs(*fragment))
3980 - needs_sanitization = true;
3987 - if (!needs_sanitization) {
3991 + body->appendChild(fragment);
3992 + staging_document->UpdateStyleAndLayout(DocumentUpdateReason::kEditing);
4002 staging_document->GetPage()->WillBeDestroyed();
4003 - return CreateFragmentFromMarkupWithContext(
4004 - document, raw_markup, fragment_start, fragment_end, base_url,
4005 - kDisallowScriptingAndPluginContent);
4011 - body->appendChild(fragment);
4012 - staging_document->UpdateStyleAndLayout(DocumentUpdateReason::kEditing);
4013 -
4014 - // This sanitizes stylesheets in the markup into element inline styles
4015 - String markup = CreateMarkup(Position::FirstPositionInNode(*body),
4016 - Position::LastPositionInNode(*body),
4017 - CreateMarkupOptions::Builder()
4018 - .SetShouldAnnotateForInterchange(true)
4019 - .SetIsForMarkupSanitization(true)
4020 - .Build());
4021 - staging_document->GetPage()->WillBeDestroyed();
4028 diff --git a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.cc b/src/third_p…
4030 --- a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
4032 @@ -114,12 +114,15 @@ WebDocumentLoaderImpl::WebDocumentLoaderImpl(
4036 - std::unique_ptr<PolicyContainer> policy_container)
4037 - : DocumentLoader(frame,
4045 - response_wrapper_(DocumentLoader::GetResponse()) {}
4051 diff --git a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.h b/src/third_pa…
4053 --- a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.h
4055 @@ -54,7 +54,8 @@ class CORE_EXPORT WebDocumentLoaderImpl final : public DocumentLoader,
4059 - std::unique_ptr<PolicyContainer> policy_container);
4065 diff --git a/src/third_party/blink/renderer/core/frame/frame.cc b/src/third_party/blink/renderer/co…
4067 --- a/src/third_party/blink/renderer/core/frame/frame.cc
4069 @@ -358,7 +358,8 @@ void Frame::UpdateInertIfPossible() {
4072 const ComputedStyle* style = frame_owner_element->GetComputedStyle();
4073 - SetIsInert(style && style->IsInert());
4075 + SetIsInert((style && style->IsInert()) || (parent && parent->IsInert()));
4079 diff --git a/src/third_party/blink/renderer/core/frame/local_frame.cc b/src/third_party/blink/rende…
4081 --- a/src/third_party/blink/renderer/core/frame/local_frame.cc
4083 @@ -904,13 +904,19 @@ void LocalFrame::SetIsInert(bool inert) {
4087 - if (Document* document = GetDocument()) {
4088 - if (Element* root = document->documentElement()) {
4089 - root->SetNeedsStyleRecalc(
4090 - kLocalStyleChange,
4091 - StyleChangeReasonForTracing::Create(style_change_reason::kFrame));
4092 - }
4096 + child = child->Tree().NextSibling()) {
4097 + child->UpdateInertIfPossible();
4105 + document->ClearAXObjectCache();
4109 @@ -2131,16 +2137,19 @@ void LocalFrame::ForceSynchronousDocumentInstall(
4112 .ForPrerendering(GetPage()->IsPrerendering()));
4114 DocumentParser* parser = document->OpenForNavigation(
4115 kForceSynchronousParsing, mime_type, AtomicString("UTF-8"));
4117 parser->AppendBytes(segment.data(), segment.size());
4118 parser->Finish();
4120 - // Upon loading of SVGImages, log PageVisits in UseCounter.
4122 + // replace the document in `parser->Finish()`, which may happen when XSLT
4126 - if (document->IsSVGDocument())
4127 + if (document == GetDocument() && document->IsSVGDocument())
4128 loader_.GetDocumentLoader()->GetUseCounter().DidCommitLoad(this);
4131 diff --git a/src/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/src/third_party…
4133 --- a/src/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
4135 @@ -782,10 +782,9 @@ DocumentLoader* LocalFrameClientImpl::CreateDocumentLoader(
4139 - MakeGarbageCollected<WebDocumentLoaderImpl>(frame, navigation_type,
4140 - std::move(navigation_params),
4141 - std::move(policy_container));
4142 - document_loader->SetExtraData(std::move(extra_data));
4146 if (web_frame_->Client())
4147 web_frame_->Client()->DidCreateDocumentLoader(document_loader);
4149 diff --git a/src/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc b/src/third_party…
4151 --- a/src/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
4153 @@ -682,6 +682,8 @@ Response InspectorDOMAgent::collectClassNamesFromSubtree(
4160 if (!parent_element && !parent_node->IsDocumentNode() &&
4161 !parent_node->IsDocumentFragment())
4162 diff --git a/src/third_party/blink/renderer/core/layout/layout_embedded_content.cc b/src/third_part…
4164 --- a/src/third_party/blink/renderer/core/layout/layout_embedded_content.cc
4166 @@ -218,12 +218,8 @@ void LayoutEmbeddedContent::StyleDidChange(StyleDifference diff,
4170 - bool was_inert = old_style && old_style->IsInert();
4171 - bool is_inert = new_style.IsInert();
4172 - if (was_inert != is_inert) {
4173 - if (Frame* frame = GetFrameOwnerElement()->ContentFrame())
4174 - frame->SetIsInert(is_inert);
4175 - }
4176 + if (Frame* frame = GetFrameOwnerElement()->ContentFrame())
4177 + frame->UpdateInertIfPossible();
4181 diff --git a/src/third_party/blink/renderer/core/layout/table_layout_algorithm_auto.cc b/src/third_…
4183 --- a/src/third_party/blink/renderer/core/layout/table_layout_algorithm_auto.cc
4185 @@ -673,7 +673,7 @@ void TableLayoutAlgorithmAuto::InsertSpanCell(LayoutTableCell* cell) {
4186 span > span_cells_[pos]->ColSpan())
4189 - (size - pos - 1) * sizeof(LayoutTableCell*));
4190 + (size - pos - 1) * sizeof(decltype(span_cells_)::value_type));
4194 diff --git a/src/third_party/blink/renderer/core/loader/document_loader.cc b/src/third_party/blink/…
4196 --- a/src/third_party/blink/renderer/core/loader/document_loader.cc
4198 @@ -327,6 +327,7 @@ ASSERT_SIZE(DocumentLoader, SameSizeAsDocumentLoader);
4206 diff --git a/src/third_party/blink/renderer/core/loader/document_loader.h b/src/third_party/blink/r…
4208 --- a/src/third_party/blink/renderer/core/loader/document_loader.h
4210 @@ -102,6 +102,7 @@ class PrefetchedSignedExchangeManager;
4218 @@ -116,10 +117,15 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected<DocumentLoader>,
4222 - DocumentLoader(LocalFrame*,
4235 diff --git a/src/third_party/blink/renderer/core/loader/empty_clients.cc b/src/third_party/blink/re…
4237 --- a/src/third_party/blink/renderer/core/loader/empty_clients.cc
4239 @@ -36,6 +36,7 @@
4247 @@ -125,9 +126,11 @@ DocumentLoader* EmptyLocalFrameClient::CreateDocumentLoader(
4251 - return MakeGarbageCollected<DocumentLoader>(frame, navigation_type,
4252 - std::move(navigation_params),
4253 - std::move(policy_container));
4262 diff --git a/src/third_party/blink/renderer/core/messaging/message_port.cc b/src/third_party/blink/…
4264 --- a/src/third_party/blink/renderer/core/messaging/message_port.cc
4266 @@ -55,7 +55,11 @@
4270 - : ExecutionContextLifecycleObserver(&execution_context),
4279 @@ -167,10 +171,21 @@ void MessagePort::Entangle(MessagePortDescriptor port) {
4298 connector_->set_incoming_receiver(this);
4299 connector_->set_connection_error_handler(
4301 diff --git a/src/third_party/blink/renderer/core/messaging/message_port.h b/src/third_party/blink/r…
4303 --- a/src/third_party/blink/renderer/core/messaging/message_port.h
4305 @@ -141,7 +141,7 @@ class CORE_EXPORT MessagePort : public EventTargetWithInlineData,
4309 - bool closed_ = false;
4314 diff --git a/src/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc b/src/third_party/b…
4316 --- a/src/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc
4318 @@ -7,8 +7,10 @@
4329 @@ -333,4 +335,41 @@ TEST_F(SVGImageSimTest, TwoImagesSameSVGImageDifferentSize) {
4348 +<?xml-stylesheet type="text/xsl" href="#stylesheet"?>
4371 diff --git a/src/third_party/blink/renderer/core/timing/performance.cc b/src/third_party/blink/rend…
4373 --- a/src/third_party/blink/renderer/core/timing/performance.cc
4375 @@ -562,16 +562,6 @@ mojom::blink::ResourceTimingInfoPtr Performance::GenerateResourceTiming(
4376 result->allow_redirect_details = false;
4377 result->last_redirect_end_time = base::TimeTicks();
4379 - if (!result->allow_redirect_details) {
4380 - // TODO(https://crbug.com/817691): There was previously a DCHECK that
4381 - // |final_timing| is non-null. However, it clearly can be null: removing
4382 - // this check caused https://crbug.com/803811. Figure out how this can
4383 - // happen so test coverage can be added.
4384 - if (ResourceLoadTiming* final_timing =
4385 - final_response.GetResourceLoadTiming()) {
4386 - result->start_time = final_timing->RequestTime();
4387 - }
4388 - }
4390 result->allow_redirect_details = false;
4391 result->last_redirect_end_time = base::TimeTicks();
4392 diff --git a/src/third_party/blink/renderer/core/timing/performance_resource_timing.cc b/src/third_…
4394 --- a/src/third_party/blink/renderer/core/timing/performance_resource_timing.cc
4396 @@ -258,8 +258,10 @@ DOMHighResTimeStamp PerformanceResourceTiming::redirectEnd() const {
4400 - if (!timing)
4408 diff --git a/src/third_party/blink/renderer/core/timing/profiler_group.cc b/src/third_party/blink/r…
4410 --- a/src/third_party/blink/renderer/core/timing/profiler_group.cc
4412 @@ -110,8 +110,7 @@ ProfilerGroup::ProfilerGroup(v8::Isolate* isolate)
4416 - num_active_profilers_(0) {
4417 -}
4422 @@ -234,6 +233,8 @@ void ProfilerGroup::WillBeDestroyed() {
4431 @@ -304,18 +305,49 @@ void ProfilerGroup::CancelProfiler(Profiler* profiler) {
4437 DCHECK(!profiler->stopped());
4442 + detached_profiler_ids_.push_back(profiler->ProfilerId());
4445 // associated context, dispatch a task to cleanup context-independent isolate
4447 ThreadScheduler::Current()->V8TaskRunner()->PostTask(
4448 - FROM_HERE, WTF::Bind(&ProfilerGroup::CancelProfilerImpl,
4450 WrapPersistent(this), profiler->ProfilerId()));
4482 diff --git a/src/third_party/blink/renderer/core/timing/profiler_group.h b/src/third_party/blink/re…
4484 --- a/src/third_party/blink/renderer/core/timing/profiler_group.h
4486 @@ -81,6 +81,10 @@ class CORE_EXPORT ProfilerGroup
4497 @@ -88,9 +92,11 @@ class CORE_EXPORT ProfilerGroup
4501 -
4510 diff --git a/src/third_party/blink/renderer/core/timing/profiler_group_test.cc b/src/third_party/bl…
4512 --- a/src/third_party/blink/renderer/core/timing/profiler_group_test.cc
4514 @@ -262,4 +262,29 @@ TEST(ProfilerGroupTest, LeakProfilerWithContext) {
4524 + profiler_group->OnProfilingContextAdded(scope.GetExecutionContext());
4527 + init_options->setSampleInterval(0);
4528 + init_options->setMaxBufferSize(0);
4529 + Profiler* profiler = profiler_group->CreateProfiler(
4532 + EXPECT_FALSE(profiler->stopped());
4536 + ThreadState::Current()->CollectAllGarbageForTesting();
4544 diff --git a/src/third_party/blink/renderer/modules/accessibility/ax_object.cc b/src/third_party/bl…
4546 --- a/src/third_party/blink/renderer/modules/accessibility/ax_object.cc
4548 @@ -2596,6 +2596,14 @@ bool AXObject::ComputeIsInertViaStyle(const ComputedStyle* style,
4552 + } else if (const LocalFrame* frame = GetNode()->GetDocument().GetFrame()) {
4555 + if (frame->IsInert()) {
4557 + ignored_reasons->push_back(IgnoredReason(kAXInertSubtree));
4562 // Either GetNode() is null, or it's locked by content-visibility, or we
4563 diff --git a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_f…
4565 --- a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_file_del…
4567 @@ -19,6 +19,7 @@
4575 @@ -65,6 +66,8 @@ FileSystemAccessRegularFileDelegate::FileSystemAccessRegularFileDelegate(
4584 @@ -75,13 +78,14 @@ base::FileErrorOr<int> FileSystemAccessRegularFileDelegate::Read(
4588 - int64_t write_offset,
4596 - if (!base::CheckAdd(write_offset, write_size)
4597 - .AssignIfValid(&write_end_offset)) {
4602 @@ -89,8 +93,8 @@ base::FileErrorOr<int> FileSystemAccessRegularFileDelegate::Write(
4606 - int result = backing_file_.Write(
4607 - write_offset, reinterpret_cast<char*>(data.data()), write_size);
4611 capacity_tracker_->CommitFileSizeChange(write_end_offset);
4613 @@ -113,16 +117,19 @@ void FileSystemAccessRegularFileDelegate::GetLength(
4617 - std::move(wrapped_callback), task_runner_));
4625 - WTF::CrossThreadOnceFunction<void(base::FileErrorOr<int64_t>)>
4626 - wrapped_callback,
4630 - int64_t length = delegate->backing_file_.GetLength();
4637 @@ -131,7 +138,19 @@ void FileSystemAccessRegularFileDelegate::DoGetLength(
4641 - CrossThreadBindOnce(std::move(wrapped_callback), std::move(result)));
4651 + DCHECK(task_runner_->RunsTasksInCurrentSequence());
4658 @@ -162,6 +181,9 @@ void FileSystemAccessRegularFileDelegate::DidCheckSetLengthCapacity(
4668 @@ -174,81 +196,57 @@ void FileSystemAccessRegularFileDelegate::DidCheckSetLengthCapacity(
4670 file_utilities_host_->SetLength(
4672 - WTF::Bind(&FileSystemAccessRegularFileDelegate::DidSetLengthIPC,
4673 - WrapPersistent(this), std::move(callback), new_length));
4681 - auto wrapped_callback =
4682 - CrossThreadOnceFunction<void(bool)>(std::move(callback));
4683 -
4689 - std::move(wrapped_callback), task_runner_,
4690 - new_length));
4698 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4703 - bool result = delegate->backing_file_.SetLength(length);
4704 -
4705 - if (!result) {
4706 - // If the operation failed, the previously requested capacity is not
4707 - // returned and no change in file size is recorded. This assumes that
4708 - // setLength operations either succeed or do not change the file's length,
4709 - // which is consistent with the way other file operations are implemented in
4710 - // File System Access.
4711 - PostCrossThreadTask(
4712 - *task_runner, FROM_HERE,
4713 - CrossThreadBindOnce(std::move(wrapped_callback), std::move(result)));
4714 - return;
4715 - }
4722 - CrossThreadBindOnce(
4723 - &FileSystemAccessRegularFileDelegate::DidSuccessfulSetLength,
4724 - std::move(delegate), length, std::move(wrapped_callback)));
4725 -}
4726 -
4727 -void FileSystemAccessRegularFileDelegate::DidSuccessfulSetLength(
4728 - int64_t new_length,
4729 - CrossThreadOnceFunction<void(bool)> callback) {
4730 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
4731 - capacity_tracker_->CommitFileSizeChange(new_length);
4732 - std::move(callback).Run(true);
4738 -#if BUILDFLAG(IS_MAC)
4739 -void FileSystemAccessRegularFileDelegate::DidSetLengthIPC(
4740 - base::OnceCallback<void(bool)> callback,
4746 DCHECK(task_runner_->RunsTasksInCurrentSequence());
4749 - if (!success) {
4750 - // If the operation failed, the previously requested capacity is not
4751 - // returned and no change in file size is recorded. This assumes that
4752 - // setLength operations either succeed or do not change the file's length,
4753 - // which is consistent with the way other file operations are implemented in
4754 - // File System Access.
4755 - std::move(callback).Run(success);
4756 - return;
4757 - }
4758 - auto wrapped_callback =
4759 - CrossThreadOnceFunction<void(bool)>(std::move(callback));
4760 - DidSuccessfulSetLength(new_length, std::move(wrapped_callback));
4766 + capacity_tracker_->CommitFileSizeChange(new_length);
4770 -#endif // BUILDFLAG(IS_MAC)
4774 @@ -260,17 +258,34 @@ void FileSystemAccessRegularFileDelegate::Flush(
4778 - std::move(wrapped_callback), task_runner_));
4786 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4790 - bool result = delegate->backing_file_.Flush();
4791 - PostCrossThreadTask(*task_runner, FROM_HERE,
4792 - CrossThreadBindOnce(std::move(wrapped_callback), result));
4807 + DCHECK(task_runner_->RunsTasksInCurrentSequence());
4814 @@ -281,16 +296,33 @@ void FileSystemAccessRegularFileDelegate::Close(base::OnceClosure callback) {
4818 - std::move(wrapped_callback), task_runner_));
4826 - CrossThreadOnceClosure wrapped_callback,
4830 - delegate->backing_file_.Close();
4831 - PostCrossThreadTask(*task_runner, FROM_HERE, std::move(wrapped_callback));
4845 + DCHECK(task_runner_->RunsTasksInCurrentSequence());
4852 diff --git a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_f…
4854 --- a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_file_del…
4856 @@ -28,6 +28,11 @@ namespace blink {
4858 // Non-incognito implementation of the FileSystemAccessFileDelegate. This class
4859 // is a thin wrapper around an OS-level file descriptor.
4864 +// used while there is an in-progress operation.
4868 @@ -71,24 +76,55 @@ class FileSystemAccessRegularFileDelegate final
4873 + // thread. To keep `backing_file_` from being garbage-collected, ownership is
4880 - CrossThreadOnceFunction<void(base::FileErrorOr<int64_t>)>
4881 - wrapped_callback,
4894 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4908 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4920 - CrossThreadOnceClosure wrapped_callback,
4929 @@ -98,16 +134,7 @@ class FileSystemAccessRegularFileDelegate final
4933 - // Called after SetLength was successfully performed.
4934 - void DidSuccessfulSetLength(int64_t new_length,
4935 - CrossThreadOnceFunction<void(bool)> callback);
4936 -
4938 - void DidSetLengthIPC(base::OnceCallback<void(bool)> callback,
4939 - int64_t new_length,
4940 - base::File file,
4941 - bool result);
4942 -
4946 diff --git a/src/third_party/blink/renderer/modules/webcodecs/codec_logger.h b/src/third_party/blin…
4948 --- a/src/third_party/blink/renderer/modules/webcodecs/codec_logger.h
4950 @@ -7,6 +7,7 @@
4958 @@ -69,9 +70,17 @@ class MODULES_EXPORT CodecLogger final {
4961 media_log_ = parent_media_log_->Clone();
4966 - ~CodecLogger() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
4972 + task_runner_->DeleteSoon(FROM_HERE, std::move(parent_media_log_));
4977 @@ -132,6 +141,9 @@ class MODULES_EXPORT CodecLogger final {
4987 diff --git a/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/src/thi…
4989 --- a/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
4991 @@ -8374,6 +8374,22 @@ bool WebGLRenderingContextBase::ValidateUniformMatrixParameters(
4995 + // By design the command buffer has an internal (signed) 32-bit
4999 + // functions; each has 4-byte elements.
5014 diff --git a/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc b/src/third_party/blink/re…
5016 --- a/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc
5018 @@ -385,7 +385,8 @@ void GPUBuffer::ResetMappingState(v8::Isolate* isolate) {
5022 - DCHECK(array_buffer->IsDetached());
5024 + CHECK(array_buffer->IsDetached());
5028 diff --git a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.cc b/src/third_party/…
5030 --- a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.cc
5032 @@ -32,13 +32,10 @@ class BlobBytesStreamer {
5036 - mojo::ScopedDataPipeProducerHandle pipe,
5037 - scoped_refptr<base::SequencedTaskRunner> task_runner)
5041 - watcher_(FROM_HERE,
5042 - mojo::SimpleWatcher::ArmingPolicy::AUTOMATIC,
5043 - std::move(task_runner)) {
5048 @@ -46,6 +43,8 @@ class BlobBytesStreamer {
5057 @@ -85,15 +84,18 @@ class BlobBytesStreamer {
5061 - wtf_size_t current_item_ = 0;
5065 - size_t current_item_offset_ = 0;
5068 - Vector<scoped_refptr<RawData>> data_;
5075 - mojo::ScopedDataPipeProducerHandle pipe_;
5076 - mojo::SimpleWatcher watcher_;
5081 @@ -119,31 +121,8 @@ void DecreaseChildProcessRefCount() {
5085 -// static
5086 -BlobBytesProvider* BlobBytesProvider::CreateAndBind(
5087 - mojo::PendingReceiver<mojom::blink::BytesProvider> receiver) {
5088 - auto task_runner = base::ThreadPool::CreateSequencedTaskRunner(
5089 - {base::MayBlock(), base::TaskPriority::USER_VISIBLE});
5090 - auto provider = base::WrapUnique(new BlobBytesProvider(task_runner));
5091 - auto* result = provider.get();
5092 - // TODO(mek): Consider binding BytesProvider on the IPC thread instead, only
5093 - // using the MayBlock taskrunner for actual file operations.
5094 - PostCrossThreadTask(
5095 - *task_runner, FROM_HERE,
5096 - CrossThreadBindOnce(
5097 - [](std::unique_ptr<BlobBytesProvider> provider,
5098 - mojo::PendingReceiver<mojom::blink::BytesProvider> receiver) {
5099 - mojo::MakeSelfOwnedReceiver(std::move(provider),
5100 - std::move(receiver));
5101 - },
5102 - std::move(provider), std::move(receiver)));
5103 - return result;
5104 -}
5105 -
5106 -// static
5107 -std::unique_ptr<BlobBytesProvider> BlobBytesProvider::CreateForTesting(
5108 - scoped_refptr<base::SequencedTaskRunner> task_runner) {
5109 - return base::WrapUnique(new BlobBytesProvider(std::move(task_runner)));
5115 @@ -151,6 +130,8 @@ BlobBytesProvider::~BlobBytesProvider() {
5123 offsets_.push_back(last_offset + data_.back()->length());
5124 @@ -159,6 +140,8 @@ void BlobBytesProvider::AppendData(scoped_refptr<RawData> data) {
5131 data_.back()->length() + data.size() > kMaxConsolidatedItemSizeInBytes) {
5133 @@ -167,8 +150,32 @@ void BlobBytesProvider::AppendData(base::span<const char> data) {
5141 + DCHECK_CALLED_ON_VALID_SEQUENCE(provider->sequence_checker_);
5142 + DETACH_FROM_SEQUENCE(provider->sequence_checker_);
5153 + DCHECK_CALLED_ON_VALID_SEQUENCE(provider->sequence_checker_);
5161 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
5167 @@ -179,9 +186,10 @@ void BlobBytesProvider::RequestAsReply(RequestAsReplyCallback callback) {
5171 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
5175 - new BlobBytesStreamer(std::move(data_), std::move(pipe), task_runner_);
5180 @@ -189,7 +197,7 @@ void BlobBytesProvider::RequestAsFile(uint64_t source_offset,
5184 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
5189 @@ -257,10 +265,4 @@ void BlobBytesProvider::RequestAsFile(uint64_t source_offset,
5193 -BlobBytesProvider::BlobBytesProvider(
5194 - scoped_refptr<base::SequencedTaskRunner> task_runner)
5195 - : task_runner_(std::move(task_runner)) {
5196 - IncreaseChildProcessRefCount();
5197 -}
5198 -
5200 diff --git a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.h b/src/third_party/b…
5202 --- a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.h
5204 @@ -6,6 +6,7 @@
5210 #include "third_party/blink/public/mojom/blob/blob_registry.mojom-blink-forward.h"
5211 #include "third_party/blink/public/mojom/blob/data_element.mojom-blink.h"
5212 @@ -17,8 +18,8 @@ namespace blink {
5216 -// then transfers ownership of the class to a different thread where it will be
5217 -// bound to a mojo pipe, such that the various Request* methods are called on a
5223 @@ -26,19 +27,17 @@ class PLATFORM_EXPORT BlobBytesProvider : public mojom::blink::BytesProvider {
5227 - // Creates a new instance, and binds it on a new SequencedTaskRunner. The
5228 - // returned instance should only be considered valid as long as the request
5229 - // passed in to this method is still known to be valid.
5230 - static BlobBytesProvider* CreateAndBind(
5231 - mojo::PendingReceiver<mojom::blink::BytesProvider>);
5232 - static std::unique_ptr<BlobBytesProvider> CreateForTesting(
5233 - scoped_refptr<base::SequencedTaskRunner>);
5234 -
5249 @@ -51,17 +50,13 @@ class PLATFORM_EXPORT BlobBytesProvider : public mojom::blink::BytesProvider {
5253 - BlobBytesProvider(scoped_refptr<base::SequencedTaskRunner>);
5254 -
5255 - // The task runner this class is bound on, as well as what is used by the
5256 - // RequestAsStream method to monitor the data pipe.
5257 - scoped_refptr<base::SequencedTaskRunner> task_runner_;
5258 -
5259 - Vector<scoped_refptr<RawData>> data_;
5264 - Vector<uint64_t> offsets_;
5271 diff --git a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc b/src/third_p…
5273 --- a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc
5275 @@ -52,8 +52,7 @@ class BlobBytesProviderTest : public testing::Test {
5279 - auto result = BlobBytesProvider::CreateForTesting(
5280 - blink::scheduler::GetSequencedTaskRunnerForTesting());
5283 result->AppendData(std::move(data));
5285 @@ -73,6 +72,8 @@ class BlobBytesProviderTest : public testing::Test {
5289 + DCHECK_CALLED_ON_VALID_SEQUENCE(data->sequence_checker_);
5291 data->AppendData(base::make_span("abc", 3));
5292 data->AppendData(base::make_span("def", 3));
5293 data->AppendData(base::make_span("ps1", 3));
5294 diff --git a/src/third_party/blink/renderer/platform/blob/blob_data.cc b/src/third_party/blink/rend…
5296 --- a/src/third_party/blink/renderer/platform/blob/blob_data.cc
5298 @@ -107,6 +107,12 @@ BlobData::BlobData(FileCompositionStatus composition)
5311 @@ -141,16 +147,6 @@ std::unique_ptr<BlobData> BlobData::CreateForFileSystemURLWithUnknownSize(
5315 -void BlobData::DetachFromCurrentThread() {
5316 - content_type_ = content_type_.IsolatedCopy();
5317 - for (auto& element : elements_) {
5318 - if (element->is_file_filesystem()) {
5319 - auto& file_element = element->get_file_filesystem();
5320 - file_element->url = file_element->url.Copy();
5321 - }
5322 - }
5323 -}
5324 -
5328 @@ -274,6 +270,7 @@ void BlobData::AppendDataInternal(base::span<const char> data,
5329 if (!elements_.IsEmpty() && elements_.back()->is_bytes()) {
5333 const auto& bytes_element = elements_.back()->get_bytes();
5334 bytes_element->length += data.size();
5335 if (should_embed_bytes && bytes_element->embedded_data) {
5336 @@ -285,9 +282,18 @@ void BlobData::AppendDataInternal(base::span<const char> data,
5337 bytes_element->embedded_data = absl::nullopt;
5349 - last_bytes_provider_ = BlobBytesProvider::CreateAndBind(
5350 - bytes_provider_remote.InitWithNewPipeAndPassReceiver());
5357 diff --git a/src/third_party/blink/renderer/platform/blob/blob_data.h b/src/third_party/blink/rende…
5359 --- a/src/third_party/blink/renderer/platform/blob/blob_data.h
5361 @@ -44,6 +44,7 @@
5364 #include "third_party/abseil-cpp/absl/types/optional.h"
5365 +#include "third_party/blink/public/mojom/blob/data_element.mojom-blink-forward.h"
5369 @@ -120,13 +121,10 @@ class PLATFORM_EXPORT BlobData {
5373 - // Detaches from current thread so that it can be passed to another thread.
5374 - void DetachFromCurrentThread();
5375 -
5379 - const Vector<mojom::blink::DataElementPtr>& Elements() const {
5384 @@ -168,7 +166,15 @@ class PLATFORM_EXPORT BlobData {
5388 - BlobBytesProvider* last_bytes_provider_ = nullptr;
5391 + // (as created by `AppendBytes`, `AppendData` or `AppendText`) into a single
5401 diff --git a/src/third_party/blink/renderer/platform/blob/blob_data_test.cc b/src/third_party/blink…
5403 --- a/src/third_party/blink/renderer/platform/blob/blob_data_test.cc
5405 @@ -315,7 +315,7 @@ TEST_F(BlobDataHandleTest, CreateFromMergedBytes) {
5407 data->AppendBytes(medium_test_data_.data(), medium_test_data_.size());
5408 data->AppendBytes(small_test_data_.data(), small_test_data_.size());
5409 - EXPECT_EQ(1u, data->Elements().size());
5410 + EXPECT_EQ(1u, data->ElementsForTesting().size());
5414 @@ -331,7 +331,7 @@ TEST_F(BlobDataHandleTest, CreateFromMergedLargeAndSmallBytes) {
5416 data->AppendBytes(large_test_data_.data(), large_test_data_.size());
5417 data->AppendBytes(small_test_data_.data(), small_test_data_.size());
5418 - EXPECT_EQ(1u, data->Elements().size());
5419 + EXPECT_EQ(1u, data->ElementsForTesting().size());
5423 @@ -347,7 +347,7 @@ TEST_F(BlobDataHandleTest, CreateFromMergedSmallAndLargeBytes) {
5425 data->AppendBytes(small_test_data_.data(), small_test_data_.size());
5426 data->AppendBytes(large_test_data_.data(), large_test_data_.size());
5427 - EXPECT_EQ(1u, data->Elements().size());
5428 + EXPECT_EQ(1u, data->ElementsForTesting().size());
5432 diff --git a/src/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.cc b/src/t…
5434 --- a/src/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.cc
5436 @@ -3996,8 +3996,10 @@ bool WebGLImageConversion::ExtractTextureData(
5440 - ComputeImageSizeInBytes(format, type, width, height, 1, unpack_params,
5441 - &image_size_in_bytes, nullptr, &skip_size_in_bytes);
5449 diff --git a/src/third_party/blink/renderer/platform/heap/persistent.h b/src/third_party/blink/rend…
5451 --- a/src/third_party/blink/renderer/platform/heap/persistent.h
5453 @@ -30,9 +30,31 @@ using Persistent = cppgc::Persistent<T>;
5461 +// - Does not protect the heap owning an object from terminating. E.g., posting
5463 +// use-after-free in case the heap owning `this` is terminated before the task
5465 +// - Reaching transitively through the graph is unsupported as objects may be
5474 +// - Does not protect the heap owning an object from termination, as the
5476 +// - In order to access the underlying object
5480 +// - Reaching transitively through the graph is unsupported as objects may be
5485 diff --git a/src/third_party/blink/web_tests/TestExpectations b/src/third_party/blink/web_tests/Tes…
5487 --- a/src/third_party/blink/web_tests/TestExpectations
5489 @@ -3195,7 +3195,6 @@ crbug.com/626703 [ Mac10.14 ] external/wpt/web-share/share-url-invalid.https.…
5490 …crbug.com/626703 [ Mac10.14 ] external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.htt…
5491 …g.com/626703 [ Mac10.14 ] virtual/scroll-unification/external/wpt/dom/events/scrolling/overscroll-
5492 …crbug.com/626703 [ Mac10.14 ] virtual/portals/external/wpt/portals/no-portal-in-sandboxed-popup.ht…
5493 -crbug.com/626703 [ Mac10.13 ] virtual/plz-dedicated-worker/external/wpt/resource-timing/object-not
5494 crbug.com/626703 [ Mac11 ] external/wpt/css/css-color-adjust/inheritance.html [ Crash Failure ]
5495 …crbug.com/626703 [ Mac11-arm64 ] external/wpt/fetch/private-network-access/fetch.window.html [ Tim…
5496 …crbug.com/626703 [ Mac11 ] external/wpt/webaudio/the-audio-api/the-pannernode-interface/ctor-panne…
5497 @@ -3474,7 +3473,6 @@ crbug.com/626703 [ Mac10.15 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/R…
5498 …crbug.com/626703 [ Mac10.15 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCRtpReceiver-getPara…
5499 …rbug.com/626703 [ Mac10.15 ] virtual/without-coep-for-shared-worker/external/wpt/html/cross-origin
5500 … Mac11 ] external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-backgro…
5501 -crbug.com/626703 [ Linux ] external/wpt/resource-timing/object-not-found-adds-entry.html [ Timeout…
5502 …crbug.com/626703 [ Mac11-arm64 ] external/wpt/webrtc/RTCIceConnectionState-candidate-pair.https.ht…
5503 crbug.com/626703 [ Mac11-arm64 ] external/wpt/webrtc/RTCPeerConnection-helper-test.html [ Timeout ]
5504 …crbug.com/626703 [ Mac11-arm64 ] external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Skip T…
5505 @@ -4092,19 +4090,14 @@ crbug.com/626703 external/wpt/html/browsers/the-window-object/apis-for-crea…
5506 …/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/op…
5507 …crbug.com/626703 external/wpt/css/css-will-change/will-change-abspos-cb-dynamic-001.html [ Failure…
5508 crbug.com/626703 external/wpt/css/css-will-change/will-change-abspos-cb-001.html [ Failure ]
5509 -crbug.com/626703 [ Linux ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects…
5510 crbug.com/626703 [ Linux ] external/wpt/url/a-element.html [ Failure ]
5511 …crbug.com/626703 [ Linux ] external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.…
5512 crbug.com/626703 [ Linux ] external/wpt/websockets/Create-url-with-space.any.html [ Failure ]
5516 -crbug.com/626703 [ Linux ] virtual/plz-dedicated-worker/external/wpt/resource-timing/cross-origin-
5517 -crbug.com/626703 [ Mac ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.h…
5518 …crbug.com/626703 [ Mac ] external/wpt/websockets/Create-blocked-port.any.worker.html?wpt_flags=h2 …
5519 -crbug.com/626703 [ Win ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.h…
5520 crbug.com/626703 [ Win ] external/wpt/websockets/Create-url-with-space.any.html [ Failure ]
5521 -crbug.com/626703 [ Win ] virtual/plz-dedicated-worker/external/wpt/resource-timing/cross-origin-st…
5522 …crbug.com/626703 [ Mac ] external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https.html [ Failure …
5523 …crbug.com/626703 [ Mac ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDTMFSender-ontonechange-
5525 @@ -7315,7 +7308,6 @@ crbug.com/1256763 [ Linux ] virtual/gpu-rasterization/images/color-profile-sv…
5526 crbug.com/1259277 fast/events/message-port-multi.html [ Skip ]
5528 # Sheriff 2021-10-26
5529 -crbug.com/1263349 [ Linux ] external/wpt/resource-timing/object-not-found-after-cross-origin-redir…
5530 …crbug.com/1249043 external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html […
5531 …crbug.com/1249043 [ Fuchsia ] external/wpt/html/cross-origin-embedder-policy/reporting-subresource
5532 …crbug.com/1249043 [ Linux ] external/wpt/html/cross-origin-embedder-policy/reporting-subresource-c…
5533 @@ -7348,7 +7340,6 @@ crbug.com/1265311 http/tests/navigation/location-change-repeated-from-blank.h…
5534 # Sheriff 2021-11-03
5535 …crbug.com/1266199 [ Mac10.12 ] fast/css3-text/css3-text-decoration/text-decoration-style-wavy-font
5536 ….com/1266221 [ Mac11-arm64 ] virtual/fsa-incognito/external/wpt/file-system-access/sandboxed_FileS…
5537 -crbug.com/1263354 [ Linux ] virtual/plz-dedicated-worker/external/wpt/resource-timing/object-not-f…
5539 # Sheriff 2021-11-08
5540 ….com/1267734 [ Win7 ] virtual/plz-dedicated-worker/external/wpt/resource-timing/object-not-found-a…
5541 diff --git a/src/third_party/blink/web_tests/editing/pasteboard/paste-svg-use.html b/src/third_part…
5543 --- a/src/third_party/blink/web_tests/editing/pasteboard/paste-svg-use.html
5544 +++ b/src/third_party/blink/web_tests/editing/pasteboard/paste-svg-use.html
5545 @@ -32,6 +32,6 @@ selection_test(
5549 - '<div contenteditable>|<noscript>&lt;u title="</noscript><div contenteditable="false"><svg></svg…
5553--git a/src/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-read
5556 --- /dev/null
5557 +++ b/src/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-read-sa…
5558 @@ -0,0 +1,44 @@
5560 +<meta charset="utf-8">
5562 +<link rel="help" href="https://w3c.github.io/clipboard-apis/#dom-clipboard-read">
5567 +<script src="/resources/testdriver-vendor.js"></script>
5587 + await test_driver.set_permission({name: 'clipboard-read'}, 'granted');
5603--git a/src/third_party/blink/web_tests/external/wpt/css/css-typed-om/set-css-wide-in-custom-prope…
5606 --- /dev/null
5607 … b/src/third_party/blink/web_tests/external/wpt/css/css-typed-om/set-css-wide-in-custom-property-c…
5608 @@ -0,0 +1,15 @@
5610 +<title>Don't crash when setting a CSS-wide keyword on a custom property</title>
5611 +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
5613 +<div id="target">
5617 + for (let keyword of ['initial', 'inherit', 'unset', 'revert', 'revert-layer']) {
5619 + target.attributeStyleMap.set('--x', new CSSKeywordValue(keyword));
5624--git a/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any-expected.txt …
5627 --- /dev/null
5628 +++ b/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any-expected.txt
5629 @@ -0,0 +1,7 @@
5630 +This is a testharness.js-based test.
5637--git a/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.js b/src/thir…
5640 --- /dev/null
5641 +++ b/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.js
5642 @@ -0,0 +1,28 @@
5647 + t, TypeError, fetch('/common/text-plain.txt?pipe=status(100)'));
5652 + const res = await fetch('/common/text-plain.txt?pipe=status(101)');
5662 + t, TypeError, fetch('/common/text-plain.txt?pipe=status(103)'));
5669 + t, TypeError, fetch('/common/text-plain.txt?pipe=status(199)'));
5671--git a/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.worker-expect…
5674 --- /dev/null
5675 +++ b/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.worker-expected.…
5676 @@ -0,0 +1,7 @@
5677 +This is a testharness.js-based test.
5684--git a/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-op…
5687 --- /dev/null
5688 …/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-opener-na…
5689 @@ -0,0 +1,84 @@
5692 + Cross-Origin-Opener-Policy: opener is lost because the opener navigates.
5694 +<!--
5698 +-->
5702 +<script src="/common/get-host-info.sub.js"></script>
5709 + '|header(Cross-Origin-Opener-Policy,same-origin)';
5711 + '|header(Cross-Origin-Opener-Policy,unsafe-none)';
5774--git a/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-op…
5777 --- /dev/null
5778 …/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-opener-na…
5779 @@ -0,0 +1 @@
5780 +Cross-Origin-Opener-Policy: same-origin
5781--git a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialo…
5783 --- a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-e…
5784 …link/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-
5785 @@ -37,7 +37,11 @@ promise_test(async () => {
5789 - assert_equals(focusedElement === element, expectFocus, element.id);
5798 @@ -46,7 +50,7 @@ promise_test(async () => {
5800 testFocus(frame1.querySelector('.target'), false);
5802 - testFocus(iframe.querySelector('.target'), false);
5803 + testFocus(iframe.querySelector('.target'), true);
5807--git a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialo…
5809 --- a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-e…
5810 …tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dia…
5811 @@ -4,9 +4,8 @@
5815 - but only in its document, not in the parent browsing context.
5816 - Also, when an iframe is marked as inert by a modal dialog,
5817 - all contents in the nested browsing context are marked as inert too.">
5823 @@ -103,30 +102,30 @@ promise_test(async function() {
5827 - checkSelection(outerIframeWindow, "");
5828 -}, "Modal dialog in the main document marks outer nodes as inert. All contents of the outer iframe…
5837 - checkSelection(outerIframeWindow, "");
5838 -}, "Modal dialogs in the main document and inner iframe mark outer nodes as inert. All contents of…
5847 - checkSelection(outerIframeWindow, "");
5848 -}, "Modal dialogs in the main document and outer iframe mark outer nodes as inert. All contents of…
5857 - checkSelection(outerIframeWindow, "");
5858 -}, "Modal dialogs in the main document and both iframes mark outer nodes as inert. All contents of…
5862--git a/src/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-
5864 --- a/src/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-ori…
5865 …/src/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-origin-
5866 @@ -2,45 +2,34 @@
5869 <meta charset="utf-8" />
5870 -<title>This test validates resource timing information for a cross-origin redirect chain.</title>
5871 -<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
5872 +<title>This test validates the values in resource timing for cross-origin
5875 +<link rel="help" href="https://www.w3.org/TR/resource-timing-2/#sec-performanceresourcetiming"/>
5878 -<script src=/common/get-host-info.sub.js></script>
5879 -<script src="resources/webperftestharness.js"></script>
5880 -<script src="resources/webperftestharnessextension.js"></script>
5881 -
5882 -<script>
5883 - setup({explicit_done: true});
5884 - test_namespace('getEntriesByName');
5885 -
5886 - function onload_test()
5887 - {
5888 - const context = new PerformanceContext(performance);
5889 - const entries = context.getEntriesByName(document.querySelector('object').data, 'resource'…
5890 - test_equals(entries.length, 1, 'There should be one entry.');
5891 - const entry = entries[0];
5892 -
5893 - test_equals(entry.redirectStart, 0, 'redirectStart == 0 in cross-origin redirect.');
5894 - test_equals(entry.redirectEnd, 0, 'redirectEnd == 0 in cross-origin redirect.');
5895 - test_greater_than(entry.fetchStart, 0, 'fetchStart > 0 in cross-origin redirect.');
5896 - test_equals(entry.startTime, entry.fetchStart, 'startTime == fetchStart in cross-origin re…
5897 - done();
5898 - }
5899 -</script>
5900 -
5901 +<script src="/common/get-host-info.sub.js"></script>
5902 +<script src="resources/resource-loaders.js"></script>
5903 +<script src="resources/entry-invariants.js"></script>
5907 - let destUrl = get_host_info().HTTP_REMOTE_ORIGIN + '/resource-timing/resources/multi_redirect.…
5908 - destUrl += 'page_origin=' + 'http://' + document.location.host;
5909 - destUrl += '&cross_origin=' + get_host_info().HTTP_REMOTE_ORIGIN;
5910 - destUrl += '&final_resource=' + encodeURIComponent("/resource-timing/resources/status-code.py?…
5911 - const objElement = document.createElement('object');
5912 - objElement.style = 'width: 0px; height: 0px;';
5913 - objElement.data = destUrl;
5914 - objElement.onerror = onload_test;
5915 - document.body.appendChild(objElement);
5918 +const not_found_page = encodeURIComponent("/resource-timing/resources/status-code.py?status=404");
5922 +const destUrl = `/common/slow-redirect.py?delay=${delay}&location=${REMOTE_ORIGIN}/${not_found_pag…
5928 + // See https://github.com/w3c/resource-timing/issues/264
5929 + assert_less_than(Math.round(entry.startTime - timeBefore), delay * 1000, 'startTime should not…
5930 +}, "Verify that cross-origin object resources don't implicitly expose their redirect timings")
5935--git a/src/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-attr…
5938 --- /dev/null
5939 …hird_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-attribute-via-att…
5940 @@ -0,0 +1,42 @@
5946 + <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
5966 +}, "Sanity check: Setting non-TT attributes still works.");
5983--git a/src/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/detached-iframe…
5986 --- /dev/null
5987 +++ b/src/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/detached-iframe.wi…
5988 @@ -0,0 +1,47 @@
5990 +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
5995 + REMOVE_BEFORE_CREATION: 'remove-before-creation',
5996 + REMOVE_AFTER_CREATION: 'remove-after-creation',
6018 + // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to
6019 + // some sort of cross-browser GC trigger.
6037 …ff --git a/src/third_party/blink/web_tests/fast/dom/inert/inert-focus-in-frames.html b/src/third_p…
6039 --- a/src/third_party/blink/web_tests/fast/dom/inert/inert-focus-in-frames.html
6040 +++ b/src/third_party/blink/web_tests/fast/dom/inert/inert-focus-in-frames.html
6041 @@ -28,20 +28,20 @@ function frameLoaded() {
6044 var target1 = frame1.querySelector('.target');
6045 - testCantFocus(target1);
6048 - testCantFocus(iframe.querySelector('.target'));
6049 - }, "Focus can't go into frames or iframes in inert subtree");
6050 + testCanFocus(iframe.querySelector('.target'));
6056 -function testCantFocus(element) {
6062 - assert_false(focusedElement === theElement);
6067 …iff --git a/src/third_party/blink/web_tests/fast/peerconnection/simulcast-munge.html b/src/third_p…
6070 --- /dev/null
6071 +++ b/src/third_party/blink/web_tests/fast/peerconnection/simulcast-munge.html
6072 @@ -0,0 +1,50 @@
6124--git a/src/third_party/blink/web_tests/loader/document-updated-by-xslt-expected.txt b/src/third_…
6127 --- /dev/null
6128 +++ b/src/third_party/blink/web_tests/loader/document-updated-by-xslt-expected.txt
6129 @@ -0,0 +1 @@
6131 diff --git a/src/third_party/blink/web_tests/loader/document-updated-by-xslt.html b/src/third_party…
6134 --- /dev/null
6135 +++ b/src/third_party/blink/web_tests/loader/document-updated-by-xslt.html
6136 @@ -0,0 +1,10 @@
6138 +<meta charset="utf-8">
6142 +<img src="resources/document-updated-by-xslt.svg">
6147--git a/src/third_party/blink/web_tests/loader/resources/document-updated-by-xslt.svg b/src/third_…
6150 --- /dev/null
6151 +++ b/src/third_party/blink/web_tests/loader/resources/document-updated-by-xslt.svg
6152 @@ -0,0 +1,9 @@
6154 +<?xml-stylesheet type="text/xsl" href="#stylesheet"?>
6163--git a/src/third_party/blink/web_tests/platform/mac/inspector-protocol/layout-fonts/languages-emo…
6165 --- a/src/third_party/blink/web_tests/platform/mac/inspector-protocol/layout-fonts/languages-emoji-
6166 …/third_party/blink/web_tests/platform/mac/inspector-protocol/layout-fonts/languages-emoji-rare-gly…
6167 @@ -25,7 +25,7 @@
6171 -"Apple Color Emoji" : 24
6176--git a/src/third_party/blink/web_tests/wpt_internal/fenced_frame/restrict-size.https.html b/src/t…
6179 --- /dev/null
6180 +++ b/src/third_party/blink/web_tests/wpt_internal/fenced_frame/restrict-size.https.html
6181 @@ -0,0 +1,15 @@
6197 diff --git a/src/third_party/dawn/third_party/tint/src/intrinsic_table.cc b/src/third_party/dawn/th…
6199 --- a/src/third_party/dawn/third_party/tint/src/intrinsic_table.cc
6201 @@ -973,11 +973,16 @@ const sem::Intrinsic* Impl::Match(sem::IntrinsicType intrinsic_type,
6205 - auto num_parameters = overload.num_parameters;
6206 - auto num_arguments = static_cast<decltype(num_parameters)>(args.size());
6219 kScorePerParamArgMismatch * (std::max(num_parameters, num_arguments) -
6220 diff --git a/src/third_party/dawn/third_party/tint/src/intrinsic_table_test.cc b/src/third_party/da…
6222 --- a/src/third_party/dawn/third_party/tint/src/intrinsic_table_test.cc
6224 @@ -14,6 +14,8 @@
6233 @@ -609,5 +611,13 @@ TEST_F(IntrinsicTableTest, SameOverloadReturnsSameIntrinsicPointer) {
6240 + auto* result = table->Lookup(IntrinsicType::kAbs, std::move(arg_tys), Source{});
6247 diff --git a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleFormat.ts b/src/…
6249 --- a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleFormat.ts
6250 +++ b/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleFormat.ts
6251 @@ -196,3 +196,26 @@ export const format = (fmt: string, args: SDK.RemoteObject.RemoteObject[]): {
6265 + prefix => property.startsWith(prefix) || property.startsWith(`-webkit-${prefix}`))) {
6278 diff --git a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleViewMessage.ts b…
6280 --- a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleViewMessage.ts
6281 +++ b/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleViewMessage.ts
6282 @@ -53,7 +53,7 @@ import * as UI from '../../ui/legacy/legacy.js';
6284 …import type {Chrome} from '../../../extension-api/ExtensionAPI.js'; // eslint-disable-line rulesdi…
6286 -import {format} from './ConsoleFormat.js';
6291 @@ -903,26 +903,10 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
6295 - case 'style': {
6298 - const ALLOWED_PROPERTY_PREFIXES =
6299 - ['background', 'border', 'color', 'font', 'line', 'margin', 'padding', 'text'];
6300 -
6301 - currentStyle.clear();
6302 - const buffer = document.createElement('span');
6303 - buffer.setAttribute('style', token.value);
6304 - for (const property of buffer.style) {
6305 - if (!ALLOWED_PROPERTY_PREFIXES.some(
6306 - prefix => property.startsWith(prefix) || property.startsWith(`-webkit-${prefix…
6307 - continue;
6308 - }
6309 - currentStyle.set(property, {
6310 - value: buffer.style.getPropertyValue(property),
6311 - priority: buffer.style.getPropertyPriority(property),
6312 - });
6313 - }
6316 - }
6320 …f --git a/src/third_party/devtools-frontend/src/test/e2e/console/console-log_test.ts b/src/third_p…
6322 --- a/src/third_party/devtools-frontend/src/test/e2e/console/console-log_test.ts
6323 +++ b/src/third_party/devtools-frontend/src/test/e2e/console/console-log_test.ts
6324 @@ -3,10 +3,11 @@
6331 import {describe, it} from '../../shared/mocha-extensions.js';
6332 -import {focusConsolePrompt, getConsoleMessages, getStructuredConsoleMessages, navigateToConsoleTab…
6333 … showVerboseMessages, waitForLastConsoleMessageToHaveContent} from '../helpers/console-helpers.js';
6335 /* eslint-disable no-console */
6337 @@ -301,4 +302,87 @@ describe('The Console Tab', async () => {
6366 + const {frontend, target} = getBrowserAndPages();
6368 + await target.evaluate(() => {
6369 + console.log('--%s--', 'text');
6370 + console.log('--%s--', '%s%i', 'u', 2);
6377 + assert.deepEqual(texts, [[['--text--']], [['--u2--']], [['Number 42']], [['Float 1.5']]]);
6381 + const {frontend, target} = getBrowserAndPages();
6383 + await target.evaluate(() => console.log('PRE%cRED%cBLUE', 'color:red', 'color:blue'));
6393 + const {frontend, target} = getBrowserAndPages();
6395 + await target.evaluate(
6398 + 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAAAAAB…
6403 + const textsAndStyles = await getConsoleMessageTextChunksWithStyle(frontend, ['background-ima…
6413 + const {frontend, target} = getBrowserAndPages();
6415 + await target.evaluate(() => console.log('PRE%cBG', 'background-image: url(http://localhost/i…
6420 + const textsAndStyles = await getConsoleMessageTextChunksWithStyle(frontend, ['background-ima…
6425 diff --git a/src/third_party/devtools-frontend/src/test/unittests/front_end/panels/console/ConsoleF…
6427 --- a/src/third_party/devtools-frontend/src/test/unittests/front_end/panels/console/ConsoleFormat_t…
6428 +++ b/src/third_party/devtools-frontend/src/test/unittests/front_end/panels/console/ConsoleFormat_t…
6429 @@ -326,4 +326,104 @@ describe('ConsoleFormat', () => {
6435 + it('allows allow-listed styles', () => {
6438 + Console.ConsoleFormat.updateStyle(styles, 'border-top-style:solid');
6439 + assert.deepEqual(styles.get('border-top-style'), {value: 'solid', priority: ''});
6444 + Console.ConsoleFormat.updateStyle(styles, 'font-family:serif');
6445 + assert.deepEqual(styles.get('font-family'), {value: 'serif', priority: ''});
6447 + Console.ConsoleFormat.updateStyle(styles, 'line-height:100%');
6448 + assert.deepEqual(styles.get('line-height'), {value: '100%', priority: ''});
6450 + Console.ConsoleFormat.updateStyle(styles, 'margin-top:30px');
6451 + assert.deepEqual(styles.get('margin-top'), {value: '30px', priority: ''});
6453 + Console.ConsoleFormat.updateStyle(styles, 'padding-top : 20px');
6454 + assert.deepEqual(styles.get('padding-top'), {value: '20px', priority: ''});
6456 + Console.ConsoleFormat.updateStyle(styles, 'text-align : center');
6457 + assert.deepEqual(styles.get('text-align'), {value: 'center', priority: ''});
6463 + Console.ConsoleFormat.updateStyle(styles, 'font-size:14px; color:red');
6465 + assert.deepEqual(styles.get('font-size'), {value: '14px', priority: ''});
6471 + Console.ConsoleFormat.updateStyle(styles, 'font-size:14px; color:red');
6473 + assert.isFalse(styles.has('font-size'));
6476 + it('blocks styles outside of allow-list', () => {
6485 + Console.ConsoleFormat.updateStyle(styles, 'box-sizing:border-box');
6486 + assert.isFalse(styles.has('box-sizing'));
6489 + it('blocks block-listed url schemes in values', () => {
6492 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(http://localhost/a.png)');
6493 + assert.isFalse(styles.has('background-image'));
6495 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(https://localhost/a.png)');
6496 + assert.isFalse(styles.has('background-image'));
6498 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(resource://localhost/a.png)'…
6499 + assert.isFalse(styles.has('background-image'));
6501 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(app://com.foo.bar/index.html…
6502 + assert.isFalse(styles.has('background-image'));
6504 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(chrome://a/b.png)');
6505 + assert.isFalse(styles.has('background-image'));
6507 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(about:flags)');
6508 + assert.isFalse(styles.has('background-image'));
6510 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(ftp://localhost/a.png)');
6511 + assert.isFalse(styles.has('background-image'));
6513 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(file://c/a.txt)');
6514 + assert.isFalse(styles.has('background-image'));
6516 + Console.ConsoleFormat.updateStyle(styles, 'border-image-source:url(file://c/a.txt)');
6517 + assert.isFalse(styles.has('border-image-source'));
6526 + Console.ConsoleFormat.updateStyle(styles, `background-image:${dataUrl}`);
6527 + assert.include(styles.get('background-image').value, 'data:image/png;base64');
6529 + Console.ConsoleFormat.updateStyle(styles, `border-image-source:${dataUrl}`);
6530 + assert.include(styles.get('border-image-source').value, 'data:image/png;base64');
6534 diff --git a/src/third_party/freetype/BUILD.gn b/src/third_party/freetype/BUILD.gn
6536 --- a/src/third_party/freetype/BUILD.gn
6538 @@ -132,7 +132,7 @@ source_set("freetype_source") {
6542 - if (is_linux || is_chromeos || is_chromecast) {
6547 diff --git a/src/third_party/freetype/README.chromium b/src/third_party/freetype/README.chromium
6549 --- a/src/third_party/freetype/README.chromium
6551 @@ -1,7 +1,7 @@
6554 -Version: VER-2-11-1-112
6555 -Revision: 034e5dbf92ea3a7ea7c9322e47a3a50ff23f7b55
6556 +Version: VER-2-12-1-41-gbec4ef415
6561 diff --git a/src/third_party/freetype/src/.gitlab-ci.yml b/src/third_party/freetype/src/.gitlab-ci.…
6563 --- a/src/third_party/freetype/src/.gitlab-ci.yml
6564 +++ b/src/third_party/freetype/src/.gitlab-ci.yml
6565 @@ -5,7 +5,7 @@ stages:
6567 # FIXME: Use --werror once warnings are fixed.
6569 - MESON_ARGS: --fatal-meson-warnings
6570 + MESON_ARGS: --fatal-meson-warnings --default-library=both
6571 MESON_ARGS_WINDOWS: ${MESON_ARGS} --force-fallback-for=zlib
6574 @@ -47,8 +47,18 @@ variables:
6575 - Import-Certificate -CertStoreLocation "Cert:\LocalMachine\Root" "C:\roots.sst"
6578 - - pip3 install meson==0.59.1
6579 + - pip3 install -U 'meson==0.59.*'
6580 + - pip3 install --upgrade certifi
6581 - pip3 install -U ninja
6583 + # Generate a UWP cross-file in case it's used
6584 + - $PSDefaultParameterValues['Out-File:Encoding'] = 'ASCII'
6585 + - echo "[binaries]" > uwp-crossfile.meson
6586 + - echo "c = 'cl'" >> uwp-crossfile.meson
6587 + - echo "strip = ['true']" >> uwp-crossfile.meson
6588 + - echo "[built-in options]" >> uwp-crossfile.meson
6589 + - echo "c_args = ['-DWINAPI_FAMILY=WINAPI_FAMILY_APP', '-DUNICODE', '-D_WIN32_WINNT=0x0A00', '
6590 + - echo "c_winlibs = ['windowsapp.lib']" >> uwp-crossfile.meson
6594 @@ -59,11 +69,10 @@ variables:
6598 - - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
6599 - meson setup build $env:MESON_ARGS_WINDOWS &&
6600 - meson compile --verbose -C build &&
6601 - meson test -C build &&
6602 - meson test -C build --benchmark"
6603 + - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH $env:V…
6605 + meson compile --verbose -C build
6610 @@ -76,12 +85,20 @@ windows meson vs2017 amd64:
6614 + MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
6620 + MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
6626 + VS_UWP: '-app_platform=UWP'
6627 + MESON_ARGS_UWP: '--cross-file uwp-crossfile.meson -Dc_winlibs="windowsapp.lib"'
6631 @@ -130,7 +147,8 @@ linux autotools libs clang:
6635 - meson setup build -Dbrotli=disabled \
6637 + -Dbrotli=disabled \
6638 -Dbzip2=disabled \
6639 -Dharfbuzz=disabled \
6640 -Dpng=disabled \
6641 @@ -142,7 +160,8 @@ linux meson:
6645 - meson setup build -Dbrotli=enabled \
6647 + -Dbrotli=enabled \
6648 -Dbzip2=enabled \
6649 -Dharfbuzz=disabled \
6650 -Dpng=disabled \
6651 @@ -205,7 +224,7 @@ macos meson:
6652 - pip3 install -U meson
6653 - pip3 install --upgrade certifi
6654 - pip3 install -U ninja
6655 -
6656 - - meson setup build
6658 + - meson setup build ${MESON_ARGS}
6659 - meson compile --verbose -C build
6660 - sudo meson install -C build
6661 diff --git a/src/third_party/freetype/src/CMakeLists.txt b/src/third_party/freetype/src/CMakeLists.…
6663 --- a/src/third_party/freetype/src/CMakeLists.txt
6665 @@ -121,7 +121,6 @@ endif ()
6669 -include(FindPkgConfig)
6673 @@ -162,7 +161,7 @@ endif ()
6677 -set(VERSION_MINOR "11")
6682 @@ -245,6 +244,8 @@ endif ()
6691 @@ -491,46 +492,48 @@ if (BUILD_FRAMEWORK)
6695 - MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist
6696 + MACOSX_FRAMEWORK_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/builds/mac/freetype-Info.plist
6703 -set(PKG_CONFIG_REQUIRED_PRIVATE "")
6704 -set(PKG_CONFIG_LIBS_PRIVATE "")
6707 +set(PKGCONFIG_LIBS "-L\${libdir} -lfreetype")
6713 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "zlib")
6720 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "bzip2")
6723 - list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2")
6724 + list(APPEND PKGCONFIG_LIBS_PRIVATE "-lbz2")
6731 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libpng")
6737 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}")
6744 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libbrotlidec")
6749 @@ -557,7 +560,7 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
6750 # Generate the pkg-config file
6753 - string(REPLACE ";" ", " PKG_CONFIG_REQUIRED_PRIVATE "${PKG_CONFIG_REQUIRED_PRIVATE}")
6758 @@ -569,10 +572,26 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
6762 - string(REPLACE "%REQUIRES_PRIVATE%" "${PKG_CONFIG_REQUIRED_PRIVATE}"
6763 - FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
6764 - string(REPLACE "%LIBS_PRIVATE%" "${PKG_CONFIG_LIBS_PRIVATE}"
6765 - FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
6789 diff --git a/src/third_party/freetype/src/README b/src/third_party/freetype/src/README
6791 --- a/src/third_party/freetype/src/README
6793 @@ -1,4 +1,4 @@
6794 -FreeType 2.11.1
6799 @@ -16,7 +16,9 @@ Read the files `docs/INSTALL*` for installation instructions; see the
6803 -please read file `README.git`.
6810 @@ -30,9 +32,9 @@ sites. Go to
6814 - freetype-doc-2.11.1.tar.xz
6815 - freetype-doc-2.11.1.tar.gz
6816 - ftdoc2111.zip
6817 + freetype-doc-2.12.1.tar.xz
6818 + freetype-doc-2.12.1.tar.gz
6823 diff --git a/src/third_party/freetype/src/autogen.sh b/src/third_party/freetype/src/autogen.sh
6825 --- a/src/third_party/freetype/src/autogen.sh
6827 @@ -182,7 +182,7 @@ copy_submodule_files ()
6831 -if test -d ".git"; then
6832 +if test -e ".git"; then
6836 diff --git a/src/third_party/freetype/src/builds/unix/configure.raw b/src/third_party/freetype/src/…
6838 --- a/src/third_party/freetype/src/builds/unix/configure.raw
6840 @@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.h.in])
6844 -version_info='24:1:18'
6849 @@ -530,16 +530,28 @@ AC_SEARCH_LIBS([clock_gettime],
6853 -# 'librsvg' is needed to demonstrate SVG support.
6854 -PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0],
6855 - [have_librsvg="yes (pkg-config)"], [have_librsvg=no])
6856 -
6860 -if test "$have_librsvg" != no; then
6861 - FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG"
6862 - FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS"
6865 + [AS_HELP_STRING([--with-librsvg=@<:@yes|no|auto@:>@],
6870 +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then
6871 + PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0],
6872 + [have_librsvg="yes (pkg-config)"], [:])
6875 + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG"
6880 +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then
6885 @@ -985,32 +997,32 @@ fi
6889 -REQUIRES_PRIVATE="$zlib_reqpriv, \
6890 - $bzip2_reqpriv, \
6891 - $libpng_reqpriv, \
6892 - $harfbuzz_reqpriv, \
6893 - $brotli_reqpriv"
6900 -REQUIRES_PRIVATE=`echo "$REQUIRES_PRIVATE" \
6901 - | sed -e 's/^ *//' \
6902 - -e 's/ *$//' \
6903 - -e 's/, */,/g' \
6904 - -e 's/,,*/,/g' \
6905 - -e 's/^,*//' \
6906 - -e 's/,*$//' \
6907 - -e 's/,/, /g'`
6908 -
6909 -LIBS_PRIVATE="$zlib_libspriv \
6910 - $bzip2_libspriv \
6911 - $libpng_libspriv \
6912 - $harfbuzz_libspriv \
6913 - $brotli_libspriv \
6914 - $ft2_extra_libs"
6916 + | sed -e 's/^ *//' \
6917 + -e 's/ *$//' \
6918 + -e 's/, */,/g' \
6919 + -e 's/,,*/,/g' \
6920 + -e 's/^,*//' \
6921 + -e 's/,*$//' \
6922 + -e 's/,/, /g'`
6931 -LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \
6932 - | sed -e 's/^ *//' \
6933 - -e 's/ *$//' \
6934 - -e 's/ */ /g'`
6936 + | sed -e 's/^ *//' \
6937 + -e 's/ *$//' \
6938 + -e 's/ */ /g'`
6940 LIBSSTATIC_CONFIG="-lfreetype \
6942 @@ -1028,10 +1040,28 @@ LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \
6943 -e 's/ *$//' \
6944 -e 's/ */ /g'`
6946 +# If FreeType gets installed with `--disable-shared', don't use
6947 +# 'private' fields. `pkg-config' only looks into `.pc' files and is
6949 +# or not. As a consequence, the user had to specify `--static' while
6950 +# calling `pkg-config', which configure scripts are normally not
6954 +PKGCONFIG_LIBS='-L${libdir} -lfreetype'
6964 -AC_SUBST([REQUIRES_PRIVATE])
6965 -AC_SUBST([LIBS_PRIVATE])
6973 diff --git a/src/third_party/freetype/src/builds/unix/freetype2.in b/src/third_party/freetype/src/b…
6975 --- a/src/third_party/freetype/src/builds/unix/freetype2.in
6977 @@ -7,8 +7,8 @@ Name: FreeType 2
6979 Description: A free, high-quality, and portable font engine.
6981 -Requires:
6982 -Requires.private: %REQUIRES_PRIVATE%
6983 -Libs: -L${libdir} -lfreetype
6984 -Libs.private: %LIBS_PRIVATE%
6989 Cflags: -I${includedir}/freetype2
6990 diff --git a/src/third_party/freetype/src/builds/unix/unix-def.in b/src/third_party/freetype/src/bu…
6992 --- a/src/third_party/freetype/src/builds/unix/unix-def.in
6993 +++ b/src/third_party/freetype/src/builds/unix/unix-def.in
6994 @@ -68,12 +68,14 @@ version_info := @version_info@
6996 # Variables needed for `freetype-config' and `freetype.pc'.
6998 -PKG_CONFIG := @PKG_CONFIG@
6999 -REQUIRES_PRIVATE := @REQUIRES_PRIVATE@
7000 -LIBS_PRIVATE := @LIBS_PRIVATE@
7001 -LIBSSTATIC_CONFIG := @LIBSSTATIC_CONFIG@
7002 -build_libtool_libs := @build_libtool_libs@
7003 -ft_version := @ft_version@
7015 @@ -137,15 +139,17 @@ prefix_x := $(subst $(space),\\$(space),$(prefix))
7018 rm -f $@ $@.tmp
7019 - sed -e 's|%REQUIRES_PRIVATE%|$(REQUIRES_PRIVATE)|' \
7020 - -e 's|%LIBS_PRIVATE%|$(LIBS_PRIVATE)|' \
7021 - -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \
7022 - -e 's|%exec_prefix%|$(exec_prefix_x)|' \
7023 - -e 's|%ft_version%|$(ft_version)|' \
7024 - -e 's|%includedir%|$(includedir_x)|' \
7025 - -e 's|%libdir%|$(libdir_x)|' \
7026 - -e 's|%prefix%|$(prefix_x)|' \
7027 - $< \
7028 + sed -e 's|%PKGCONFIG_REQUIRES%|$(PKGCONFIG_REQUIRES)|' \
7029 + -e 's|%PKGCONFIG_REQUIRES_PRIVATE%|$(PKGCONFIG_REQUIRES_PRIVATE)|' \
7030 + -e 's|%PKGCONFIG_LIBS%|$(PKGCONFIG_LIBS)|' \
7031 + -e 's|%PKGCONFIG_LIBS_PRIVATE%|$(PKGCONFIG_LIBS_PRIVATE)|' \
7032 + -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \
7033 + -e 's|%exec_prefix%|$(exec_prefix_x)|' \
7034 + -e 's|%ft_version%|$(ft_version)|' \
7035 + -e 's|%includedir%|$(includedir_x)|' \
7036 + -e 's|%libdir%|$(libdir_x)|' \
7037 + -e 's|%prefix%|$(prefix_x)|' \
7040 chmod a-w $@.tmp
7042 diff --git a/src/third_party/freetype/src/builds/wince/vc2005-ce/index.html b/src/third_party/freet…
7044 --- a/src/third_party/freetype/src/builds/wince/vc2005-ce/index.html
7045 +++ b/src/third_party/freetype/src/builds/wince/vc2005-ce/index.html
7046 @@ -21,7 +21,7 @@ the following targets:
7050 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7055 diff --git a/src/third_party/freetype/src/builds/wince/vc2008-ce/index.html b/src/third_party/freet…
7057 --- a/src/third_party/freetype/src/builds/wince/vc2008-ce/index.html
7058 +++ b/src/third_party/freetype/src/builds/wince/vc2008-ce/index.html
7059 @@ -21,7 +21,7 @@ the following targets:
7063 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7068 diff --git a/src/third_party/freetype/src/builds/windows/ftsystem.c b/src/third_party/freetype/src/…
7070 --- a/src/third_party/freetype/src/builds/windows/ftsystem.c
7072 @@ -196,37 +196,77 @@
7076 -#if defined( NTDDI_VERSION ) && NTDDI_VERSION < 0x0A000007 && \
7077 - defined( WINAPI_FAMILY_PARTITION ) && \
7078 - !WINAPI_FAMILY_PARTITION( WINAPI_PARTITION_DESKTOP )
7079 + /* non-desktop Universal Windows Platform */
7084 -#define CreateFileW( a, b, c, d, e, f, g ) \
7085 - CreateFileFromAppW( a, b, c, d, e, f, g )
7086 -#define CreateFileMapping( a, b, c, d, e, f ) \
7087 - CreateFileMappingFromApp( a, b, c, PACK_DWORD64( d, e ), f )
7088 -#define MapViewOfFile( a, b, c, d, e ) \
7089 - MapViewOfFileFromApp( a, b, PACK_DWORD64( c, d ), e )
7115 -#define UWP_LEGACY
7119 + lpFileName, -1, NULL, 0 );
7131 + lpFileName, -1, lpFileNameW, len );
7141 -#if defined( _WIN32_WCE ) || defined( UWP_LEGACY )
7148 - CreateFileA( LPCSTR lpFileName,
7149 - DWORD dwDesiredAccess,
7150 - DWORD dwShareMode,
7151 - LPSECURITY_ATTRIBUTES lpSecurityAttributes,
7152 - DWORD dwCreationDisposition,
7153 - DWORD dwFlagsAndAttributes,
7154 - HANDLE hTemplateFile )
7163 - int len;
7164 - LPWSTR lpFileNameW;
7170 @@ -253,12 +293,13 @@
7179 - GetFileSizeEx( HANDLE hFile,
7180 - PLARGE_INTEGER lpFileSize )
7184 lpFileSize->u.LowPart = GetFileSize( hFile,
7185 (DWORD *)&lpFileSize->u.HighPart );
7186 diff --git a/src/third_party/freetype/src/builds/windows/vc2010/index.html b/src/third_party/freety…
7188 --- a/src/third_party/freetype/src/builds/windows/vc2010/index.html
7190 @@ -12,7 +12,7 @@
7194 -from the FreeType 2.11.1 sources:</p>
7199 diff --git a/src/third_party/freetype/src/builds/windows/visualc/index.html b/src/third_party/freet…
7201 --- a/src/third_party/freetype/src/builds/windows/visualc/index.html
7203 @@ -12,7 +12,7 @@
7207 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7212 diff --git a/src/third_party/freetype/src/builds/windows/visualce/index.html b/src/third_party/free…
7214 --- a/src/third_party/freetype/src/builds/windows/visualce/index.html
7216 @@ -21,7 +21,7 @@ the following targets:
7220 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7225 diff --git a/src/third_party/freetype/src/docs/CHANGES b/src/third_party/freetype/src/docs/CHANGES
7227 --- a/src/third_party/freetype/src/docs/CHANGES
7229 @@ -1,3 +1,49 @@
7236 + - TrueType interpreter version 38 (aka Infinality) that was first
7250 + - Loading CFF fonts sometimes made FreeType crash (bug introduced in
7253 + - Loading a fully hinted TrueType glyph a second time (without
7257 + - The generation of the pkg-config file `freetype2.pc` was broken if
7263 + - New option `--with-librsvg` for the `configure` script for better
7266 + - The meson build no longer enforces both static and dynamic
7269 + - The internal zlib library was updated to version 1.2.12. Note,
7270 + however, that FreeType is *not* affected by CVE-2018-25032 since
7279 @@ -10,7 +56,41 @@ CHANGES BETWEEN 2.11.1 and 2.12.0
7283 - This work was Moazin Kathri's GSoC 2019 project.
7289 + - The handling of fonts with an 'sbix' table has been improved.
7291 + - Corrected bitmap offsets.
7293 + - A new tag `FT_PARAM_TAG_IGNORE_SBIX` for `FT_Open_Face` makes
7297 + - `FT_FACE_FLAG_SBIX` and `FT_FACE_FLAG_SBIX_OVERLAY` together
7302 + - The internal 'zlib' code has been updated to be in sync with the
7305 + - The previously internal load flag `FT_LOAD_SBITS_ONLY` is now
7308 + - Some minor improvements of the building systems, in particular
7311 + - Support for non-desktop Universal Windows Platform.
7313 + - Various other minor bug and documentation fixes.
7315 + - The `ftdump` demo program shows more information for Type1 fonts
7316 + if option `-n` is given.
7318 + - `ftgrid` can now display embedded bitmap strikes.
7322 diff --git a/src/third_party/freetype/src/docs/VERSIONS.TXT b/src/third_party/freetype/src/docs/VER…
7324 --- a/src/third_party/freetype/src/docs/VERSIONS.TXT
7326 @@ -60,6 +60,8 @@ found on _most_ systems, but not all of them:
7329 -------------------------------
7335 diff --git a/src/third_party/freetype/src/docs/freetype-config.1 b/src/third_party/freetype/src/doc…
7337 --- a/src/third_party/freetype/src/docs/freetype-config.1
7338 +++ b/src/third_party/freetype/src/docs/freetype-config.1
7339 @@ -1,4 +1,4 @@
7340 -.TH FREETYPE-CONFIG 1 "December 2021" "FreeType 2.11.1"
7341 +.TH FREETYPE-CONFIG 1 "May 2022" "FreeType 2.12.1"
7345 diff --git a/src/third_party/freetype/src/docs/markdown/images/favico.ico b/src/third_party/freetyp…
7349 zc${NkU}Ruo5D;Jh(h3Y2EDQ{43=9kk3K0GZpm-lpOamw;01{__h=TzO0|rovW&J<U
7350 z_|%<)|6$-XkWH){GKK+C<%X+%<gg+|KQb5y`{@;a>yIy@NdNPX53#0EQUE^x&<kUh
7351 z2&4fGXc^;xT+Rp#&T?iH4?HF}Pf#l_#r3=VKlcbTzk<X-a@5vGtbb^&Z`A%#`$z2`
7358 zHdiHq4NQaNWuh4V2Q*lL)f6uc{I8YH`CkEQze+s&|KjQK5WBmT|7)jn|2N1I_-~Xa
7359 z1eOD-k&k8mAJk|IR#Ubj<iAcP_kZO$HVpkC(=>o?76!BZy0reQCUC&@hcx5XUobru
7360 z#eX0i-fR9}3F-%8^;fNk`ybow4rbezD}%!Tq)s84`F}8)`$2laW&rgU&WHocxwp##
7361 z`HcU~a;5+40K-8ujRP1Sy#JNrSTOX1^lGGV{8vll{9ig3;(z~s)&FKiLjSe0+5hLx
7363 tr2U_@qXQlm0iC-4OXo*}*)_}K|NFFR{?DHmgb`-s;DJv6lwt-70RZNI8D9VZ
7365 diff --git a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.210 b/src/third_party/freetype/src…
7367 --- a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.210
7369 @@ -2411,9 +2411,9 @@
7373 - use 16.16 fixed point to get rid of a redundant truncation operation.
7374 + use 16.16 fixed-point to get rid of a redundant truncation operation.
7376 - bottlenecked by the emboldening function, which uses 26.6 fixed point.
7377 + bottlenecked by the emboldening function, which uses 26.6 fixed-point.
7381 diff --git a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.24 b/src/third_party/freetype/src/…
7383 --- a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.24
7385 @@ -707,7 +707,7 @@
7389 - outgoing vectors and use fixed point arithmetic.
7390 + outgoing vectors and use fixed-point arithmetic.
7392 2013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
7394 diff --git a/src/third_party/freetype/src/docs/release b/src/third_party/freetype/src/docs/release
7396 --- a/src/third_party/freetype/src/docs/release
7398 @@ -77,13 +77,14 @@ How to prepare a new release
7402 - VERSION=2.10.4
7410 - GPG='/usr/bin/gpg --batch --no-tty'
7411 + GPG="/usr/bin/gpg --batch --no-tty --local-user $GPG_KEY_ID"
7415 diff --git a/src/third_party/freetype/src/include/freetype/freetype.h b/src/third_party/freetype/sr…
7417 --- a/src/third_party/freetype/src/include/freetype/freetype.h
7419 @@ -154,6 +154,8 @@ FT_BEGIN_HEADER
7428 @@ -163,6 +165,8 @@ FT_BEGIN_HEADER
7437 @@ -227,6 +231,7 @@ FT_BEGIN_HEADER
7445 @@ -1235,6 +1240,16 @@ FT_BEGIN_HEADER
7462 @@ -1253,6 +1268,8 @@ FT_BEGIN_HEADER
7471 @@ -1509,6 +1526,108 @@ FT_BEGIN_HEADER
7472 ( !!( (face)->face_flags & FT_FACE_FLAG_SVG ) )
7486 + * Apple-specific formats not part of the OpenType specification).
7490 + * a bitmap-only face. Using @FT_Open_Face with
7511 + * <sort `face->available_size` as necessary into
7514 + * for ( i = 0; i < face->num_fixed_sizes; i++ )
7534 + * if ( i != face->num_fixed_sizes )
7538 + * if ( i == face->num_fixed_sizes ||
7545 + * [*] Assuming a target value of 400dpi and available strike sizes 100,
7556 + ( !!( (face)->face_flags & FT_FACE_FLAG_SBIX ) )
7574 + ( !!( (face)->face_flags & FT_FACE_FLAG_SBIX_OVERLAY ) )
7580 @@ -1773,13 +1892,13 @@ FT_BEGIN_HEADER
7584 - * WYSIWYG layout. Only relevant for outline glyphs.
7591 - * WYSIWYG layout. Only relevant for outline glyphs.
7596 @@ -2976,6 +3095,15 @@ FT_BEGIN_HEADER
7612 @@ -3120,6 +3248,7 @@ FT_BEGIN_HEADER
7618 /* Bits 16-19 are used by `FT_LOAD_TARGET_` */
7620 @@ -3130,7 +3259,6 @@ FT_BEGIN_HEADER
7624 -#define FT_LOAD_SBITS_ONLY ( 1L << 14 )
7628 @@ -3409,6 +3537,44 @@ FT_BEGIN_HEADER
7643 + * then re-render with `FT_RENDER_MODE_SDF`.
7653 + * contours and *cannot* handle self-intersecting contours whatsoever.
7654 + * Self-intersection happens when a single connected contour intersect
7673 @@ -4775,7 +4941,7 @@ FT_BEGIN_HEADER
7677 -#define FREETYPE_MINOR 11
7682 diff --git a/src/third_party/freetype/src/include/freetype/ftcolor.h b/src/third_party/freetype/src…
7684 --- a/src/third_party/freetype/src/include/freetype/ftcolor.h
7686 @@ -528,14 +528,14 @@ FT_BEGIN_HEADER
7690 - * @FT_Get_Colorline_Stops.
7697 - * An opaque pointer into 'COLR' table data. The caller must set this
7698 - * to `NULL` before the first call of @FT_Get_Colorline_Stops.
7703 * 2.11 -- **currently experimental only!** There might be changes
7704 @@ -592,7 +592,8 @@ FT_BEGIN_HEADER
7708 - * The stop offset between 0 and 1 along the gradient.
7709 + * The stop offset along the gradient, expressed as a 16.16 fixed-point
7714 @@ -604,7 +605,7 @@ FT_BEGIN_HEADER
7718 - FT_F2Dot14 stop_offset;
7723 diff --git a/src/third_party/freetype/src/include/freetype/ftdriver.h b/src/third_party/freetype/sr…
7725 --- a/src/third_party/freetype/src/include/freetype/ftdriver.h
7727 @@ -214,9 +214,9 @@ FT_BEGIN_HEADER
7731 - * The TrueType driver's module name is 'truetype'; a single property
7732 - * @interpreter-version is available, as documented in the @properties
7733 - * section.
7735 + * available, @interpreter-version and @TEMPORARY-enable-variable-colrv1, as
7740 @@ -820,6 +820,48 @@ FT_BEGIN_HEADER
7747 + * TEMPORARY-enable-variable-colrv1
7779 + * "TEMPORARY-enable-variable-colrv1",
7789 diff --git a/src/third_party/freetype/src/include/freetype/ftimage.h b/src/third_party/freetype/src…
7791 --- a/src/third_party/freetype/src/include/freetype/ftimage.h
7793 @@ -401,11 +401,11 @@ FT_BEGIN_HEADER
7797 - * This flag indicates that this outline contains overlapping contrours
7798 - * and the anti-aliased renderer should perform oversampling to
7799 - * mitigate possible artifacts. This flag should _not_ be set for
7800 - * well designed glyphs without overlaps because it quadruples the
7801 - * rendering time.
7803 + * overlapping contours and the anti-aliased renderer should perform
7809 * This flag indicates that the scan-line converter should try to
7810 diff --git a/src/third_party/freetype/src/include/freetype/ftparams.h b/src/third_party/freetype/sr…
7812 --- a/src/third_party/freetype/src/include/freetype/ftparams.h
7814 @@ -112,6 +112,21 @@ FT_BEGIN_HEADER
7836 diff --git a/src/third_party/freetype/src/include/freetype/ftstroke.h b/src/third_party/freetype/sr…
7838 --- a/src/third_party/freetype/src/include/freetype/ftstroke.h
7840 @@ -293,7 +293,7 @@ FT_BEGIN_HEADER
7843 * The maximum reciprocal sine of half-angle at the miter join,
7844 - * expressed as 16.16 fixed point value.
7845 + * expressed as 16.16 fixed-point value.
7849 diff --git a/src/third_party/freetype/src/include/freetype/internal/cfftypes.h b/src/third_party/fr…
7851 --- a/src/third_party/freetype/src/include/freetype/internal/cfftypes.h
7853 @@ -315,7 +315,7 @@ FT_BEGIN_HEADER
7857 - /* Blended values are stored as 5-byte fixed point values. */
7858 + /* Blended values are stored as 5-byte fixed-point values. */
7862 diff --git a/src/third_party/freetype/src/include/freetype/internal/ftcalc.h b/src/third_party/free…
7864 --- a/src/third_party/freetype/src/include/freetype/internal/ftcalc.h
7866 @@ -278,6 +278,40 @@ FT_BEGIN_HEADER
7892 + * variation stores. It internally uses 64-bit data types when
7893 + * available, otherwise it emulates 64-bit math by using 32-bit
7907 diff --git a/src/third_party/freetype/src/include/freetype/internal/ftmmtypes.h b/src/third_party/f…
7910 --- /dev/null
7912 @@ -0,0 +1,85 @@
7918 + * with the multi-masters service (specification).
7998 diff --git a/src/third_party/freetype/src/include/freetype/internal/ftstream.h b/src/third_party/fr…
8000 --- a/src/third_party/freetype/src/include/freetype/internal/ftstream.h
8002 @@ -238,42 +238,42 @@ FT_BEGIN_HEADER
8006 -#define FT_NEXT_SHORT( buffer ) \
8007 - ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) )
8009 + ( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) )
8011 -#define FT_NEXT_USHORT( buffer ) \
8012 - ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) )
8014 + ( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) )
8016 -#define FT_NEXT_OFF3( buffer ) \
8017 - ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) )
8019 + ( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) )
8021 -#define FT_NEXT_UOFF3( buffer ) \
8022 - ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) )
8024 + ( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) )
8026 -#define FT_NEXT_LONG( buffer ) \
8027 - ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) )
8029 + ( buffer += 4, FT_PEEK_LONG( buffer - 4 ) )
8031 -#define FT_NEXT_ULONG( buffer ) \
8032 - ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) )
8034 + ( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) )
8037 -#define FT_NEXT_SHORT_LE( buffer ) \
8038 - ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) )
8040 + ( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) )
8042 -#define FT_NEXT_USHORT_LE( buffer ) \
8043 - ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) )
8045 + ( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) )
8047 -#define FT_NEXT_OFF3_LE( buffer ) \
8048 - ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) )
8050 + ( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) )
8052 -#define FT_NEXT_UOFF3_LE( buffer ) \
8053 - ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) )
8055 + ( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) )
8057 -#define FT_NEXT_LONG_LE( buffer ) \
8058 - ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) )
8060 + ( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) )
8062 -#define FT_NEXT_ULONG_LE( buffer ) \
8063 - ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )
8065 + ( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) )
8069 @@ -307,17 +307,17 @@ FT_BEGIN_HEADER
8073 -#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )
8074 -#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )
8075 -#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong )
8076 -#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long )
8077 -#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
8078 -#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
8079 -
8080 -#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short )
8081 -#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort )
8082 -#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long )
8083 -#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong )
8098 @@ -334,16 +334,16 @@ FT_BEGIN_HEADER
8102 -#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
8103 -#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )
8104 -#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var )
8105 -#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var )
8106 -#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var )
8113 -#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var )
8114 -#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var )
8115 -#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var )
8116 -#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var )
8124 @@ -459,23 +459,23 @@ FT_BEGIN_HEADER
8127 /* read a 16-bit big-endian unsigned integer from an entered frame */
8128 - FT_BASE( FT_UShort )
8132 /* read a 24-bit big-endian unsigned integer from an entered frame */
8133 - FT_BASE( FT_ULong )
8137 /* read a 32-bit big-endian unsigned integer from an entered frame */
8138 - FT_BASE( FT_ULong )
8142 /* read a 16-bit little-endian unsigned integer from an entered frame */
8143 - FT_BASE( FT_UShort )
8147 /* read a 32-bit little-endian unsigned integer from an entered frame */
8148 - FT_BASE( FT_ULong )
8153 @@ -485,7 +485,7 @@ FT_BEGIN_HEADER
8156 /* read a 16-bit big-endian unsigned integer from a stream */
8157 - FT_BASE( FT_UShort )
8162 @@ -495,17 +495,17 @@ FT_BEGIN_HEADER
8165 /* read a 32-bit big-endian integer from a stream */
8166 - FT_BASE( FT_ULong )
8171 /* read a 16-bit little-endian unsigned integer from a stream */
8172 - FT_BASE( FT_UShort )
8177 /* read a 32-bit little-endian unsigned integer from a stream */
8178 - FT_BASE( FT_ULong )
8183 diff --git a/src/third_party/freetype/src/include/freetype/internal/services/svmm.h b/src/third_par…
8185 --- a/src/third_party/freetype/src/include/freetype/internal/services/svmm.h
8187 @@ -5,7 +5,7 @@
8190 * Copyright (C) 2003-2022 by
8191 - * David Turner, Robert Wilhelm, and Werner Lemberg.
8196 @@ -20,6 +20,7 @@
8204 @@ -96,53 +97,94 @@ FT_BEGIN_HEADER
8237 - FT_Get_MM_Func get_mm;
8238 - FT_Set_MM_Design_Func set_mm_design;
8239 - FT_Set_MM_Blend_Func set_mm_blend;
8240 - FT_Get_MM_Blend_Func get_mm_blend;
8241 - FT_Get_MM_Var_Func get_mm_var;
8242 - FT_Set_Var_Design_Func set_var_design;
8243 - FT_Get_Var_Design_Func get_var_design;
8244 - FT_Set_Instance_Func set_instance;
8245 - FT_Set_MM_WeightVector_Func set_mm_weightvector;
8246 - FT_Get_MM_WeightVector_Func get_mm_weightvector;
8259 - FT_Get_Var_Blend_Func get_var_blend;
8260 - FT_Done_Blend_Func done_blend;
8271 -#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
8272 - get_mm_, \
8273 - set_mm_design_, \
8274 - set_mm_blend_, \
8275 - get_mm_blend_, \
8276 - get_mm_var_, \
8277 - set_var_design_, \
8278 - get_var_design_, \
8279 - set_instance_, \
8280 - set_weightvector_, \
8281 - get_weightvector_, \
8282 - get_var_blend_, \
8283 - done_blend_ ) \
8284 - static const FT_Service_MultiMastersRec class_ = \
8285 - { \
8286 - get_mm_, \
8287 - set_mm_design_, \
8288 - set_mm_blend_, \
8289 - get_mm_blend_, \
8290 - get_mm_var_, \
8291 - set_var_design_, \
8292 - get_var_design_, \
8293 - set_instance_, \
8294 - set_weightvector_, \
8295 - get_weightvector_, \
8296 - get_var_blend_, \
8297 - done_blend_ \
8338 diff --git a/src/third_party/freetype/src/meson.build b/src/third_party/freetype/src/meson.build
8340 --- a/src/third_party/freetype/src/meson.build
8342 @@ -25,7 +25,6 @@
8346 - default_options: ['default_library=both'],
8350 @@ -336,7 +335,8 @@ endif
8354 - required: get_option('harfbuzz'))
8356 + default_options: ['freetype=disabled'])
8359 ftoption_command += ['--enable=FT_CONFIG_OPTION_USE_HARFBUZZ']
8360 diff --git a/src/third_party/freetype/src/src/base/ftcalc.c b/src/third_party/freetype/src/src/base…
8362 --- a/src/third_party/freetype/src/src/base/ftcalc.c
8364 @@ -1085,4 +1085,71 @@
8436 diff --git a/src/third_party/freetype/src/src/base/ftglyph.c b/src/third_party/freetype/src/src/bas…
8438 --- a/src/third_party/freetype/src/src/base/ftglyph.c
8440 @@ -469,7 +469,7 @@
8442 FT_Memory memory = svg_glyph->library->memory;
8444 - FT_SVG_Document document;
8449 diff --git a/src/third_party/freetype/src/src/base/ftmac.c b/src/third_party/freetype/src/src/base/…
8451 --- a/src/third_party/freetype/src/src/base/ftmac.c
8453 @@ -314,7 +314,7 @@
8457 - return ((FInfo *)(info.finderInfo))->fdType;
8458 + return ( (FInfo *)( info.finderInfo ) )->fdType;
8462 @@ -462,7 +462,7 @@
8466 - ft_memcpy(ps_name, names[0] + 1, ps_name_len);
8470 if ( style->indexes[face_index] > 1 &&
8471 diff --git a/src/third_party/freetype/src/src/base/ftobjs.c b/src/third_party/freetype/src/src/base…
8473 --- a/src/third_party/freetype/src/src/base/ftobjs.c
8475 @@ -334,7 +334,7 @@
8476 /* if SVG table exists, allocate the space in `slot->other` */
8477 if ( slot->face->face_flags & FT_FACE_FLAG_SVG )
8479 - FT_SVG_Document document;
8484 @@ -605,7 +605,7 @@
8487 FT_FREE( doc->svg_document );
8488 - slot->internal->load_flags &= ~FT_GLYPH_OWN_GZIP_SVG;
8489 + slot->internal->flags &= ~FT_GLYPH_OWN_GZIP_SVG;
8493 @@ -2215,7 +2215,8 @@
8497 - if ( error ) {
8503 @@ -2527,6 +2528,16 @@
8512 + face_index = -face_index;
8514 + face_index = -face_index;
8520 @@ -3399,6 +3410,9 @@
8524 + if ( !face->size )
8527 if ( !req || req->width < 0 || req->height < 0 ||
8528 req->type >= FT_SIZE_REQUEST_TYPE_MAX )
8530 diff --git a/src/third_party/freetype/src/src/base/ftrfork.c b/src/third_party/freetype/src/src/bas…
8532 --- a/src/third_party/freetype/src/src/base/ftrfork.c
8534 @@ -402,17 +402,17 @@
8538 - CONST_FT_RFORK_RULE_ARRAY_BEGIN(ft_raccess_guess_table,
8539 - ft_raccess_guess_rec)
8540 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(apple_double, apple_double)
8541 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(apple_single, apple_single)
8542 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(darwin_ufs_export, darwin_ufs_export)
8543 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(darwin_newvfs, darwin_newvfs)
8544 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(darwin_hfsplus, darwin_hfsplus)
8545 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(vfat, vfat)
8546 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(linux_cap, linux_cap)
8547 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(linux_double, linux_double)
8548 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(linux_netatalk, linux_netatalk)
8563 diff --git a/src/third_party/freetype/src/src/base/ftstream.c b/src/third_party/freetype/src/src/ba…
8565 --- a/src/third_party/freetype/src/src/base/ftstream.c
8567 @@ -363,11 +363,11 @@
8571 - FT_BASE_DEF( FT_UShort )
8576 - FT_UShort result;
8580 FT_ASSERT( stream && stream->cursor );
8581 @@ -382,11 +382,11 @@
8585 - FT_BASE_DEF( FT_UShort )
8590 - FT_UShort result;
8594 FT_ASSERT( stream && stream->cursor );
8595 @@ -401,11 +401,11 @@
8599 - FT_BASE_DEF( FT_ULong )
8604 - FT_ULong result;
8608 FT_ASSERT( stream && stream->cursor );
8609 @@ -419,11 +419,11 @@
8613 - FT_BASE_DEF( FT_ULong )
8618 - FT_ULong result;
8622 FT_ASSERT( stream && stream->cursor );
8623 @@ -437,11 +437,11 @@
8627 - FT_BASE_DEF( FT_ULong )
8632 - FT_ULong result;
8636 FT_ASSERT( stream && stream->cursor );
8637 @@ -493,13 +493,13 @@
8641 - FT_BASE_DEF( FT_UShort )
8648 - FT_UShort result = 0;
8653 @@ -538,13 +538,13 @@
8657 - FT_BASE_DEF( FT_UShort )
8664 - FT_UShort result = 0;
8669 @@ -628,13 +628,13 @@
8673 - FT_BASE_DEF( FT_ULong )
8680 - FT_ULong result = 0;
8685 @@ -673,13 +673,13 @@
8689 - FT_BASE_DEF( FT_ULong )
8696 - FT_ULong result = 0;
8701 diff --git a/src/third_party/freetype/src/src/base/ftver.rc b/src/third_party/freetype/src/src/base…
8703 --- a/src/third_party/freetype/src/src/base/ftver.rc
8705 @@ -18,8 +18,8 @@
8709 -#define FT_VERSION 2,11,1,0
8710 -#define FT_VERSION_STR "2.11.1"
8716 @@ -45,7 +45,7 @@ BEGIN
8720 - VALUE "LegalCopyright", "\251 2000-2021 The FreeType Project www.freetype.org. All rights …
8721 + VALUE "LegalCopyright", "\251 2000-2022 The FreeType Project www.freetype.org. All rights …
8725 diff --git a/src/third_party/freetype/src/src/bzip2/ftbzip2.c b/src/third_party/freetype/src/src/bz…
8727 --- a/src/third_party/freetype/src/src/bzip2/ftbzip2.c
8729 @@ -57,8 +57,9 @@
8733 - typedef void *(* alloc_func)(void*, int, int);
8734 - typedef void (* free_func)(void*, void*);
8741 diff --git a/src/third_party/freetype/src/src/cache/ftccache.h b/src/third_party/freetype/src/src/c…
8743 --- a/src/third_party/freetype/src/src/cache/ftccache.h
8745 @@ -210,7 +210,7 @@ FT_BEGIN_HEADER
8749 - FTC_Cache _cache = FTC_CACHE(cache); \
8754 diff --git a/src/third_party/freetype/src/src/cache/ftccmap.c b/src/third_party/freetype/src/src/ca…
8756 --- a/src/third_party/freetype/src/src/cache/ftccmap.c
8758 @@ -112,7 +112,7 @@
8761 FT_Memory memory = cache->memory;
8762 - FTC_CMapNode node;
8767 diff --git a/src/third_party/freetype/src/src/cache/ftcglyph.h b/src/third_party/freetype/src/src/c…
8769 --- a/src/third_party/freetype/src/src/cache/ftcglyph.h
8771 @@ -140,8 +140,8 @@ FT_BEGIN_HEADER
8775 -#define FTC_FAMILY(x) ( (FTC_Family)(x) )
8776 -#define FTC_FAMILY_P(x) ( (FTC_Family*)(x) )
8782 @@ -245,7 +245,7 @@ FT_BEGIN_HEADER
8786 - FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
8787 + FTC_GCACHE_CLASS( FTC_CACHE( x )->org_class )
8789 ( (FTC_MruListClass)FTC_CACHE_GCACHE_CLASS( x )->family_class )
8791 diff --git a/src/third_party/freetype/src/src/cache/ftcimage.c b/src/third_party/freetype/src/src/c…
8793 --- a/src/third_party/freetype/src/src/cache/ftcimage.c
8795 @@ -61,7 +61,7 @@
8797 FT_Memory memory = cache->memory;
8799 - FTC_INode inode;
8804 diff --git a/src/third_party/freetype/src/src/cache/ftcimage.h b/src/third_party/freetype/src/src/c…
8806 --- a/src/third_party/freetype/src/src/cache/ftcimage.h
8808 @@ -51,8 +51,8 @@ FT_BEGIN_HEADER
8812 -#define FTC_INODE_GINDEX( x ) FTC_GNODE(x)->gindex
8813 -#define FTC_INODE_FAMILY( x ) FTC_GNODE(x)->family
8814 +#define FTC_INODE_GINDEX( x ) FTC_GNODE( x )->gindex
8815 +#define FTC_INODE_FAMILY( x ) FTC_GNODE( x )->family
8819 @@ -72,7 +72,7 @@ FT_BEGIN_HEADER
8823 - FTC_IFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS(x)->family_class )
8824 + FTC_IFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS( x )->family_class )
8828 diff --git a/src/third_party/freetype/src/src/cache/ftcsbits.c b/src/third_party/freetype/src/src/c…
8830 --- a/src/third_party/freetype/src/src/cache/ftcsbits.c
8832 @@ -171,7 +171,7 @@
8833 sbit->xadvance = (FT_Char)xadvance;
8834 sbit->yadvance = (FT_Char)yadvance;
8835 sbit->format = (FT_Byte)bitmap->pixel_mode;
8836 - sbit->max_grays = (FT_Byte)(bitmap->num_grays - 1);
8837 + sbit->max_grays = (FT_Byte)( bitmap->num_grays - 1 );
8839 if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
8841 diff --git a/src/third_party/freetype/src/src/cache/ftcsbits.h b/src/third_party/freetype/src/src/c…
8843 --- a/src/third_party/freetype/src/src/cache/ftcsbits.h
8845 @@ -61,7 +61,7 @@ FT_BEGIN_HEADER
8849 -#define FTC_SFAMILY_CLASS( x ) ((FTC_SFamilyClass)(x))
8853 FTC_SFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS( x )->family_class )
8854 diff --git a/src/third_party/freetype/src/src/cff/cffcmap.c b/src/third_party/freetype/src/src/cff/…
8856 --- a/src/third_party/freetype/src/src/cff/cffcmap.c
8858 @@ -81,7 +81,7 @@
8862 - FT_UInt code = (FT_UInt)(char_code + 1);
8867 diff --git a/src/third_party/freetype/src/src/cff/cffdrivr.c b/src/third_party/freetype/src/src/cff…
8869 --- a/src/third_party/freetype/src/src/cff/cffdrivr.c
8871 @@ -5,7 +5,7 @@
8874 * Copyright (C) 1996-2022 by
8875 - * David Turner, Robert Wilhelm, and Werner Lemberg.
8880 @@ -936,22 +936,103 @@
8889 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8892 + return mm->load_item_var_store( FT_FACE(face), offset, itemStore );
8903 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8906 + return mm->load_delta_set_idx_map( FT_FACE( face ), offset, map,
8917 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8920 + return mm->get_item_delta( FT_FACE( face ), itemStore,
8929 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8932 + mm->done_item_var_store( FT_FACE( face ), itemStore );
8940 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8943 + mm->done_delta_set_idx_map( FT_FACE ( face ), deltaSetIdxMap );
8951 - (FT_Get_MM_Func) NULL, /* get_mm */
8952 - (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
8953 - (FT_Set_MM_Blend_Func) cff_set_mm_blend, /* set_mm_blend */
8954 - (FT_Get_MM_Blend_Func) cff_get_mm_blend, /* get_mm_blend */
8955 - (FT_Get_MM_Var_Func) cff_get_mm_var, /* get_mm_var */
8956 - (FT_Set_Var_Design_Func) cff_set_var_design, /* set_var_design */
8957 - (FT_Get_Var_Design_Func) cff_get_var_design, /* get_var_design */
8958 - (FT_Set_Instance_Func) cff_set_instance, /* set_instance */
8959 - (FT_Set_MM_WeightVector_Func)cff_set_mm_weightvector, /* set_mm_weightvector */
8960 - (FT_Get_MM_WeightVector_Func)cff_get_mm_weightvector, /* get_mm_weightvector */
8961 -
8962 - (FT_Get_Var_Blend_Func) cff_get_var_blend, /* get_var_blend */
8963 - (FT_Done_Blend_Func) cff_done_blend /* done_blend */
8997 diff --git a/src/third_party/freetype/src/src/cff/cffgload.c b/src/third_party/freetype/src/src/cff…
8999 --- a/src/third_party/freetype/src/src/cff/cffgload.c
9001 @@ -29,6 +29,14 @@
9016 @@ -67,7 +75,7 @@
9020 - CFF_Font cff = (CFF_Font)(face->extra.data);
9021 + CFF_Font cff = (CFF_Font)( face->extra.data );
9024 return cff_index_access_element( &cff->charstrings_index, glyph_index,
9025 @@ -103,7 +111,7 @@
9029 - CFF_Font cff = (CFF_Font)(face->extra.data);
9030 + CFF_Font cff = (CFF_Font)( face->extra.data );
9033 cff_index_forget_element( &cff->charstrings_index, pointer );
9034 @@ -255,8 +263,8 @@
9037 if ( size->strike_index != 0xFFFFFFFFUL &&
9038 - sfnt->load_eblc &&
9039 - ( load_flags & FT_LOAD_NO_BITMAP ) == 0 )
9041 + IS_DEFAULT_INSTANCE( size->root.face ) )
9045 @@ -362,8 +370,8 @@
9049 - if ( size->root.metrics.x_ppem < 1 ||
9050 - size->root.metrics.y_ppem < 1 )
9051 + if ( size && (size->root.metrics.x_ppem < 1 ||
9052 + size->root.metrics.y_ppem < 1 ) )
9056 @@ -396,6 +404,9 @@
9060 + glyph->root.linearHoriAdvance = advanceX;
9061 + glyph->root.linearVertAdvance = advanceY;
9065 glyph->root.face->size->metrics.x_ppem,
9066 diff --git a/src/third_party/freetype/src/src/cff/cffload.c b/src/third_party/freetype/src/src/cff/…
9068 --- a/src/third_party/freetype/src/src/cff/cffload.c
9070 @@ -1288,7 +1288,7 @@
9074 - /* Blend calculation is done in 16.16 fixed point. */
9075 + /* Blend calculation is done in 16.16 fixed-point. */
9079 @@ -1364,7 +1364,7 @@
9083 - /* convert inputs to 16.16 fixed point */
9084 + /* convert inputs to 16.16 fixed-point */
9085 sum = cff_parse_num( parser, &parser->stack[i + base] ) * 0x10000;
9087 for ( j = 1; j < blend->lenBV; j++ )
9088 @@ -1373,7 +1373,7 @@
9090 parser->stack[i + base] = subFont->blend_top;
9092 - /* Push blended result as Type 2 5-byte fixed point number. This */
9093 + /* Push blended result as Type 2 5-byte fixed-point number. This */
9097 diff --git a/src/third_party/freetype/src/src/cff/cffparse.c b/src/third_party/freetype/src/src/cff…
9099 --- a/src/third_party/freetype/src/src/cff/cffparse.c
9101 @@ -530,7 +530,7 @@
9105 - /* 16.16 fixed point is used internally for CFF2 blend results. */
9106 + /* 16.16 fixed-point is used internally for CFF2 blend results. */
9110 diff --git a/src/third_party/freetype/src/src/gxvalid/gxvcommn.c b/src/third_party/freetype/src/src…
9112 --- a/src/third_party/freetype/src/src/gxvalid/gxvcommn.c
9114 @@ -1033,7 +1033,7 @@
9118 - (int)(*length_p), stateSize, (int)(maxClassID) ));
9123 @@ -1418,7 +1418,7 @@
9127 - (int)(*length_p), (int)stateSize, (int)(maxClassID) ));
9132 diff --git a/src/third_party/freetype/src/src/gzip/README.freetype b/src/third_party/freetype/src/s…
9134 --- a/src/third_party/freetype/src/src/gzip/README.freetype
9136 @@ -1,7 +1,7 @@
9140 -Version: 1.2.11
9145 diff --git a/src/third_party/freetype/src/src/gzip/crc32.c b/src/third_party/freetype/src/src/gzip/…
9147 --- a/src/third_party/freetype/src/src/gzip/crc32.c
9149 @@ -1,12 +1,10 @@
9150 /* crc32.c -- compute the CRC-32 of a data stream
9151 - * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
9152 + * Copyright (C) 1995-2022 Mark Adler
9155 - * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
9156 - * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
9157 - * tables for updating the shift register in one step with three exclusive-ors
9158 - * instead of four steps with four exclusive-ors. This results in about a
9159 - * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
9161 + * arithmetic-logic units, commonly found in modern CPU cores. It is due to
9162 + * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution.
9166 @@ -14,11 +12,12 @@
9169 protection on the static variables used to control the first-use generation
9170 - of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
9175 - DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
9181 @@ -28,417 +27,1090 @@
9185 -#include "zutil.h" /* for STDC and FAR definitions */
9188 -/* Definitions for doing the crc four data bytes at a time. */
9189 -#if !defined(NOBYFOUR) && defined(Z_U4)
9190 -# define BYFOUR
9198 + into a single CRC at the end. For this code, N must be in the range 1..6 and
9205 + Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64
9208 + They were all tested with either gcc or clang, all using the -O3 optimization
9221 -#ifdef BYFOUR
9222 - local unsigned long crc32_little OF((unsigned long,
9223 - const unsigned char FAR *, z_size_t));
9224 - local unsigned long crc32_big OF((unsigned long,
9225 - const unsigned char FAR *, z_size_t));
9226 -# define TBLS 8
9240 +# if Z_TESTW-1 != -1
9244 -# define TBLS 1
9245 -#endif /* BYFOUR */
9268 -/* Local functions for crc concatenation */
9269 -local unsigned long gf2_matrix_times OF((unsigned long *mat,
9270 - unsigned long vec));
9271 -local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
9272 -local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
9285 + self-respecting compiler will optimize this to a single machine byte-swap
9317 -local volatile int crc_table_empty = 1;
9318 -local z_crc_t FAR crc_table[TBLS][256];
9329 - local void write_table OF((FILE *, const z_crc_t FAR *));
9369 + if (!atomic_load(&state->done)) {
9370 + if (atomic_flag_test_and_set(&state->begun))
9371 + while (!atomic_load(&state->done))
9375 + atomic_store(&state->done, 1);
9402 +/* Run the provided init() function once. This is not thread-safe. */
9407 + if (!state->done) {
9408 + if (test_and_set(&state->begun))
9409 + while (!state->done)
9413 + state->done = 1;
9424 Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
9428 - with the lowest powers in the most significant bit. Then adding polynomials
9430 is just exclusive-or, and multiplying a polynomial by x is a right shift by
9431 - one. If we call the above polynomial p, and represent a byte as the
9434 - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
9438 This calculation is done using the shift-register method of multiplying and
9439 - taking the remainder. The register is initialized to zero, and for each
9442 - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
9443 - x (which is shifting right by one and adding x^32 mod p if the bit shifted
9444 - out is a one). We start with the highest power (least significant bit) of
9445 - q and repeat for all eight bits of q.
9446 -
9447 - The first table is simply the CRC of all possible eight bit values. This is
9448 - all the information needed to generate CRCs on data a byte at a time for all
9449 - combinations of CRC register values and incoming bytes. The remaining tables
9450 - allow for word-at-a-time CRC calculation for both big-endian and little-
9451 - endian machines, where a word is four bytes.
9452 -*/
9465 - z_crc_t c;
9466 - int n, k;
9467 - z_crc_t poly; /* polynomial exclusive-or pattern */
9468 - /* terms of polynomial defining this crc (except x^32): */
9469 - static volatile int first = 1; /* flag to limit concurrent making */
9470 - static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
9471 -
9472 - /* See if another task is already doing this (not thread-safe, but better
9473 - than nothing -- significantly reduces duration of vulnerability in
9474 - case the advice about DYNAMIC_CRC_TABLE is ignored) */
9475 - if (first) {
9476 - first = 0;
9477 -
9478 - /* make exclusive-or pattern from polynomial (0xedb88320UL) */
9479 - poly = 0;
9480 - for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
9481 - poly |= (z_crc_t)1 << (31 - p[n]);
9482 -
9483 - /* generate a crc for every 8-bit value */
9484 - for (n = 0; n < 256; n++) {
9485 - c = (z_crc_t)n;
9486 - for (k = 0; k < 8; k++)
9487 - c = c & 1 ? poly ^ (c >> 1) : c >> 1;
9488 - crc_table[0][n] = c;
9489 - }
9493 -#ifdef BYFOUR
9494 - /* generate crc for each value followed by one, two, and three zeros,
9495 - and then the byte reversal of those as well as the first table */
9496 - for (n = 0; n < 256; n++) {
9497 - c = crc_table[0][n];
9498 - crc_table[4][n] = ZSWAP32(c);
9499 - for (k = 1; k < 4; k++) {
9500 - c = crc_table[0][c & 0xff] ^ (c >> 8);
9501 - crc_table[k][n] = c;
9502 - crc_table[k + 4][n] = ZSWAP32(c);
9503 - }
9504 - }
9505 -#endif /* BYFOUR */
9506 -
9507 - crc_table_empty = 0;
9508 - }
9509 - else { /* not first */
9510 - /* wait for the other guy to finish (not efficient, but rare) */
9511 - while (crc_table_empty)
9512 - ;
9531 + /* initialize the braiding tables -- needs x2n_table[] */
9536 - /* write out CRC tables to crc32.h */
9539 + The crc32.h header file contains tables for both 32-bit and 64-bit
9540 + z_word_t's, and so requires a 64-bit type be available. In that case,
9541 + z_word_t must be defined to be 64-bits. This code then also generates
9545 +# error Need a 64-bit integer type in order to generate crc32.h.
9554 - fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
9555 - fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
9556 - fprintf(out, "local const z_crc_t FAR ");
9557 - fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
9558 - write_table(out, crc_table[0]);
9559 -# ifdef BYFOUR
9560 - fprintf(out, "#ifdef BYFOUR\n");
9561 - for (k = 1; k < 8; k++) {
9562 - fprintf(out, " },\n {\n");
9563 - write_table(out, crc_table[k]);
9565 + /* write out little-endian CRC table to crc32.h */
9567 + "/* crc32.h -- tables for rapid CRC calculation\n"
9576 + /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */
9589 + /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */
9608 + /* compute braid tables for this N and 64-bit word_t */
9611 + /* write out braid tables for 64-bit z_word_t to crc32.h */
9634 + /* compute braid tables for this N and 32-bit word_t */
9637 + /* write out braid tables for 32-bit z_word_t to crc32.h */
9664 - fprintf(out, "#endif\n");
9665 -# endif /* BYFOUR */
9666 - fprintf(out, " }\n};\n");
9687 + Write the 32-bit values in table[0..k-1] to out, five per line in
9692 - const z_crc_t FAR *table)
9698 - for (n = 0; n < 256; n++)
9699 - fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ",
9703 - n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
9704 + n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
9708 + Write the high 32-bits of each value in table[0..k-1] to out, five per line
9721 + n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
9725 + Write the 64-bit values in table[0..k-1] to out, three per line in
9726 + hexadecimal separated by commas. This assumes that if there is a 64-bit
9741 + n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", "));
9755 + Generate the little and big-endian braid tables for the given n and z_word_t
9767 + p = x2nmodp((n * w + 3 - k) << 3, 0);
9769 + big[w - 1 - k][0] = 0;
9772 + big[w - 1 - k][i] = byte_swap(q);
9780 - * Tables of CRC-32s of all single-byte values, made by make_crc_table().
9781 + * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
9782 + * of x for combining CRC-32s, all made by make_crc_table().
9807 + if ((a & (m - 1)) == 0)
9837 - * This function can be used by asm versions of crc32()
9844 - if (crc_table_empty)
9845 - make_crc_table();
9851 -/* ========================================================================= */
9852 -#undef DO1
9853 -#undef DO8
9854 -#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
9855 -#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
9861 + * that has the instructions. For example, compiling with -march=armv8.1-a or
9862 + * -march=armv8-a+crc, or -march=native if the compile machine has the crc32
9869 + measurements on a Cortex-A57. Your mileage may vary.
9875 -/* ========================================================================= */
9881 - if (buf == Z_NULL) return 0UL;
9893 - if (crc_table_empty)
9894 - make_crc_table();
9898 -#ifdef BYFOUR
9899 - if (sizeof(void *) == sizeof(ptrdiff_t)) {
9900 - z_crc_t endian;
9901 + /* Pre-condition the CRC */
9904 - endian = 1;
9905 - if (*((unsigned char *)(&endian)))
9906 - return crc32_little(crc, buf, len);
9907 - else
9908 - return crc32_big(crc, buf, len);
9911 + len--;
9915 -#endif /* BYFOUR */
9916 - crc = crc ^ 0xffffffffUL;
9917 - while (len >= 8) {
9918 - DO8;
9919 - len -= 8;
9921 + /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */
9928 + CRCs are combined into a single CRC after each set of batches. */
9941 + num -= 3 * Z_BATCH;
9945 - if (len) do {
9946 - DO1;
9947 - } while (--len);
9948 - return crc ^ 0xffffffffUL;
9949 -}
9951 -/* ========================================================================= */
9952 -unsigned long ZEXPORT crc32(
9953 - unsigned long crc,
9954 - const unsigned char FAR *buf,
9955 - uInt len)
9956 -{
9957 - return crc32_z(crc, buf, len);
9974 + num -= 3 * last;
9990 + len--;
9995 + /* Return the CRC, post-conditioned. */
9999 -#ifdef BYFOUR
10005 - This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
10006 - integer pointer type. This violates the strict aliasing rule, where a
10007 - compiler can assume, for optimization purposes, that two pointers to
10008 - fundamentally different types won't ever point to the same memory. This can
10009 - manifest as a problem only if one of the pointers is written to. This code
10010 - only reads from those pointers. So long as this code remains isolated in
10011 - this compilation unit, there won't be a problem. For this reason, this code
10012 - should not be copied and pasted into a compilation unit in which other code
10013 - writes to the buffer that is passed to these routines.
10015 + least-significant byte of the word as the first byte of data, without any pre
10027 -/* ========================================================================= */
10028 -#define DOLIT4 c ^= *buf4++; \
10029 - c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
10030 - crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
10031 -#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
10038 + crc_big_table[(data >> ((W - 1) << 3)) & 0xff];
10045 -local unsigned long crc32_little(
10051 - register z_crc_t c;
10052 - register const z_crc_t FAR *buf4;
10056 - c = (z_crc_t)crc;
10057 - c = ~c;
10058 - while (len && ((ptrdiff_t)buf & 3)) {
10059 - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
10060 - len--;
10061 - }
10066 - buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
10067 - while (len >= 32) {
10068 - DOLIT32;
10069 - len -= 32;
10070 - }
10071 - while (len >= 4) {
10072 - DOLIT4;
10073 - len -= 4;
10074 - }
10075 - buf = (const unsigned char FAR *)buf4;
10076 + /* Pre-condition the CRC */
10079 - if (len) do {
10080 - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
10081 - } while (--len);
10082 - c = ~c;
10083 - return (unsigned long)c;
10084 -}
10087 -/* ========================================================================= */
10088 -#define DOBIG4 c ^= *buf4++; \
10089 - c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
10090 - crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
10091 -#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
10093 + if (len >= N * W + W - 1) {
10099 -/* ========================================================================= */
10100 -local unsigned long crc32_big(
10101 - unsigned long crc,
10102 - const unsigned char FAR *buf,
10103 - z_size_t len)
10104 -{
10105 - register z_crc_t c;
10106 - register const z_crc_t FAR *buf4;
10108 + while (len && ((z_size_t)buf & (W - 1)) != 0) {
10109 + len--;
10113 - c = ZSWAP32((z_crc_t)crc);
10114 - c = ~c;
10115 - while (len && ((ptrdiff_t)buf & 3)) {
10116 - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
10117 - len--;
10120 + len -= blks * N * W;
10173 + Process the first blks-1 blocks, computing the CRCs on each braid
10176 + while (--blks) {
10295 + Process the first blks-1 blocks, computing the CRCs on each braid
10298 + while (--blks) {
10386 - buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
10387 - while (len >= 32) {
10388 - DOBIG32;
10389 - len -= 32;
10394 + len -= 8;
10404 - while (len >= 4) {
10405 - DOBIG4;
10406 - len -= 4;
10408 + len--;
10411 - buf = (const unsigned char FAR *)buf4;
10413 - if (len) do {
10414 - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
10415 - } while (--len);
10416 - c = ~c;
10417 - return (unsigned long)(ZSWAP32(c));
10418 + /* Return the CRC, post-conditioned. */
10422 -#endif /* BYFOUR */
10423 -
10424 -#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
10428 -local unsigned long gf2_matrix_times(
10429 - unsigned long *mat,
10430 - unsigned long vec)
10436 - unsigned long sum;
10437 -
10438 - sum = 0;
10439 - while (vec) {
10440 - if (vec & 1)
10441 - sum ^= *mat;
10442 - vec >>= 1;
10443 - mat++;
10444 - }
10445 - return sum;
10450 -local void gf2_matrix_square(
10451 - unsigned long *square,
10452 - unsigned long *mat)
10458 - int n;
10459 -
10460 - for (n = 0; n < GF2_DIM; n++)
10461 - square[n] = gf2_matrix_times(mat, mat[n]);
10469 -local uLong crc32_combine_(
10473 - z_off64_t len2)
10476 - int n;
10477 - unsigned long row;
10478 - unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
10479 - unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
10480 -
10481 - /* degenerate case (also disallow negative lengths) */
10482 - if (len2 <= 0)
10483 - return crc1;
10484 -
10485 - /* put operator for one zero bit in odd */
10486 - odd[0] = 0xedb88320UL; /* CRC-32 polynomial */
10487 - row = 1;
10488 - for (n = 1; n < GF2_DIM; n++) {
10489 - odd[n] = row;
10490 - row <<= 1;
10491 - }
10495 - /* put operator for two zero bits in even */
10496 - gf2_matrix_square(even, odd);
10497 -
10498 - /* put operator for four zero bits in odd */
10499 - gf2_matrix_square(odd, even);
10500 -
10501 - /* apply len2 zeros to crc1 (first square will put the operator for one
10502 - zero byte, eight zero bits, in even) */
10503 - do {
10504 - /* apply zeros operator for this bit of len2 */
10505 - gf2_matrix_square(even, odd);
10506 - if (len2 & 1)
10507 - crc1 = gf2_matrix_times(even, crc1);
10508 - len2 >>= 1;
10509 -
10510 - /* if no more bits set, then done */
10511 - if (len2 == 0)
10512 - break;
10513 -
10514 - /* another iteration of the loop with odd and even swapped */
10515 - gf2_matrix_square(odd, even);
10516 - if (len2 & 1)
10517 - crc1 = gf2_matrix_times(odd, crc1);
10518 - len2 >>= 1;
10519 -
10520 - /* if no more bits set, then done */
10521 - } while (len2 != 0);
10522 -
10523 - /* return combined crc */
10524 - crc1 ^= crc2;
10525 - return crc1;
10537 -uLong ZEXPORT crc32_combine(
10538 - uLong crc1,
10539 - uLong crc2,
10543 - return crc32_combine_(crc1, crc2, len2);
10547 -uLong ZEXPORT crc32_combine64(
10552 - z_off64_t len2)
10555 - return crc32_combine_(crc1, crc2, len2);
10558 diff --git a/src/third_party/freetype/src/src/gzip/crc32.h b/src/third_party/freetype/src/src/gzip/…
10560 --- a/src/third_party/freetype/src/src/gzip/crc32.h
10562 @@ -2,440 +2,9445 @@
10566 -local const z_crc_t FAR crc_table[TBLS][256] =
10567 -{
10568 - {
10569 - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
10570 - 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
10571 - 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
10572 - 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
10573 - 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
10574 - 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
10575 - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
10576 - 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
10577 - 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
10578 - 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
10579 - 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
10580 - 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
10581 - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
10582 - 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
10583 - 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
10584 - 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
10585 - 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
10586 - 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
10587 - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
10588 - 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
10589 - 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
10590 - 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
10591 - 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
10592 - 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
10593 - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
10594 - 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
10595 - 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
10596 - 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
10597 - 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
10598 - 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
10599 - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
10600 - 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
10601 - 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
10602 - 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
10603 - 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
10604 - 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
10605 - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
10606 - 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
10607 - 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
10608 - 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
10609 - 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
10610 - 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
10611 - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
10612 - 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
10613 - 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
10614 - 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
10615 - 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
10616 - 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
10617 - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
10618 - 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
10619 - 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
10620 - 0x2d02ef8dUL
10621 -#ifdef BYFOUR
10622 - },
10623 - {
10624 - 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
10625 - 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
10626 - 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
10627 - 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
10628 - 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
10629 - 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
10630 - 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
10631 - 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
10632 - 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
10633 - 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
10634 - 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
10635 - 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
10636 - 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
10637 - 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
10638 - 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
10639 - 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
10640 - 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
10641 - 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
10642 - 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
10643 - 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
10644 - 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
10645 - 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
10646 - 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
10647 - 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
10648 - 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
10649 - 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
10650 - 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
10651 - 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
10652 - 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
10653 - 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
10654 - 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
10655 - 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
10656 - 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
10657 - 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
10658 - 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
10659 - 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
10660 - 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
10661 - 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
10662 - 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
10663 - 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
10664 - 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
10665 - 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
10666 - 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
10667 - 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
10668 - 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
10669 - 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
10670 - 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
10671 - 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
10672 - 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
10673 - 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
10674 - 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
10675 - 0x9324fd72UL
10676 - },
10677 - {
10678 - 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
10679 - 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
10680 - 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
10681 - 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
10682 - 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
10683 - 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
10684 - 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
10685 - 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
10686 - 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
10687 - 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
10688 - 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
10689 - 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
10690 - 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
10691 - 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
10692 - 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
10693 - 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
10694 - 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
10695 - 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
10696 - 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
10697 - 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
10698 - 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
10699 - 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
10700 - 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
10701 - 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
10702 - 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
10703 - 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
10704 - 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
10705 - 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
10706 - 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
10707 - 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
10708 - 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
10709 - 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
10710 - 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
10711 - 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
10712 - 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
10713 - 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
10714 - 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
10715 - 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
10716 - 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
10717 - 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
10718 - 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
10719 - 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
10720 - 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
10721 - 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
10722 - 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
10723 - 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
10724 - 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
10725 - 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
10726 - 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
10727 - 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
10728 - 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
10729 - 0xbe9834edUL
10730 - },
10731 - {
10732 - 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
10733 - 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
10734 - 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
10735 - 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
10736 - 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
10737 - 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
10738 - 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
10739 - 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
10740 - 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
10741 - 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
10742 - 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
10743 - 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
10744 - 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
10745 - 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
10746 - 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
10747 - 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
10748 - 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
10749 - 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
10750 - 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
10751 - 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
10752 - 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
10753 - 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
10754 - 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
10755 - 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
10756 - 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
10757 - 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
10758 - 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
10759 - 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
10760 - 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
10761 - 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
10762 - 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
10763 - 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
10764 - 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
10765 - 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
10766 - 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
10767 - 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
10768 - 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
10769 - 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
10770 - 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
10771 - 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
10772 - 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
10773 - 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
10774 - 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
10775 - 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
10776 - 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
10777 - 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
10778 - 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
10779 - 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
10780 - 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
10781 - 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
10782 - 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
10783 - 0xde0506f1UL
10784 - },
10785 - {
10786 - 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
10787 - 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
10788 - 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
10789 - 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
10790 - 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
10791 - 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
10792 - 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
10793 - 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
10794 - 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
10795 - 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
10796 - 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
10797 - 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
10798 - 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
10799 - 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
10800 - 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
10801 - 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
10802 - 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
10803 - 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
10804 - 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
10805 - 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
10806 - 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
10807 - 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
10808 - 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
10809 - 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
10810 - 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
10811 - 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
10812 - 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
10813 - 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
10814 - 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
10815 - 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
10816 - 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
10817 - 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
10818 - 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
10819 - 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
10820 - 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
10821 - 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
10822 - 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
10823 - 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
10824 - 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
10825 - 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
10826 - 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
10827 - 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
10828 - 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
10829 - 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
10830 - 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
10831 - 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
10832 - 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
10833 - 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
10834 - 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
10835 - 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
10836 - 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
10837 - 0x8def022dUL
10838 - },
10839 - {
10840 - 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
10841 - 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
10842 - 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
10843 - 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
10844 - 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
10845 - 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
10846 - 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
10847 - 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
10848 - 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
10849 - 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
10850 - 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
10851 - 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
10852 - 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
10853 - 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
10854 - 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
10855 - 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
10856 - 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
10857 - 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
10858 - 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
10859 - 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
10860 - 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
10861 - 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
10862 - 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
10863 - 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
10864 - 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
10865 - 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
10866 - 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
10867 - 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
10868 - 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
10869 - 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
10870 - 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
10871 - 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
10872 - 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
10873 - 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
10874 - 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
10875 - 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
10876 - 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
10877 - 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
10878 - 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
10879 - 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
10880 - 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
10881 - 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
10882 - 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
10883 - 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
10884 - 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
10885 - 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
10886 - 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
10887 - 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
10888 - 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
10889 - 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
10890 - 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
10891 - 0x72fd2493UL
10892 - },
10893 - {
10894 - 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
10895 - 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
10896 - 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
10897 - 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
10898 - 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
10899 - 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
10900 - 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
10901 - 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
10902 - 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
10903 - 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
10904 - 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
10905 - 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
10906 - 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
10907 - 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
10908 - 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
10909 - 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
10910 - 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
10911 - 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
10912 - 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
10913 - 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
10914 - 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
10915 - 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
10916 - 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
10917 - 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
10918 - 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
10919 - 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
10920 - 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
10921 - 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
10922 - 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
10923 - 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
10924 - 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
10925 - 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
10926 - 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
10927 - 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
10928 - 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
10929 - 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
10930 - 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
10931 - 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
10932 - 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
10933 - 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
10934 - 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
10935 - 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
10936 - 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
10937 - 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
10938 - 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
10939 - 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
10940 - 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
10941 - 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
10942 - 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
10943 - 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
10944 - 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
10945 - 0xed3498beUL
10946 - },
10947 - {
10948 - 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
10949 - 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
10950 - 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
10951 - 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
10952 - 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
10953 - 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
10954 - 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
10955 - 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
10956 - 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
10957 - 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
10958 - 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
10959 - 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
10960 - 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
10961 - 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
10962 - 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
10963 - 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
10964 - 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
10965 - 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
10966 - 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
10967 - 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
10968 - 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
10969 - 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
10970 - 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
10971 - 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
10972 - 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
10973 - 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
10974 - 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
10975 - 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
10976 - 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
10977 - 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
10978 - 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
10979 - 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
10980 - 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
10981 - 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
10982 - 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
10983 - 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
10984 - 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
10985 - 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
10986 - 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
10987 - 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
10988 - 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
10989 - 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
10990 - 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
10991 - 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
10992 - 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
10993 - 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
10994 - 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
10995 - 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
10996 - 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
10997 - 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
10998 - 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
10999 - 0xf10605deUL
14277 - }
14278 -};
20444 diff --git a/src/third_party/freetype/src/src/gzip/ftgzip.c b/src/third_party/freetype/src/src/gzip…
20446 --- a/src/third_party/freetype/src/src/gzip/ftgzip.c
20448 @@ -790,6 +790,9 @@
20458 diff --git a/src/third_party/freetype/src/src/gzip/gzguts.h b/src/third_party/freetype/src/src/gzip…
20460 --- a/src/third_party/freetype/src/src/gzip/gzguts.h
20462 @@ -1,5 +1,5 @@
20463 /* gzguts.h -- zlib internal header definitions for gz* operations
20464 - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
20465 + * Copyright (C) 2004-2019 Mark Adler
20469 @@ -39,7 +39,7 @@
20473 -#if defined(_WIN32) || defined(__CYGWIN__)
20478 @@ -190,6 +190,7 @@ typedef struct {
20486 diff --git a/src/third_party/freetype/src/src/gzip/infback.c b/src/third_party/freetype/src/src/gzi…
20488 --- a/src/third_party/freetype/src/src/gzip/infback.c
20490 @@ -1,5 +1,5 @@
20491 /* infback.c -- inflate using a call-back interface
20492 - * Copyright (C) 1995-2016 Mark Adler
20493 + * Copyright (C) 1995-2022 Mark Adler
20497 @@ -477,6 +477,7 @@ int ZEXPORT inflateBack(
20500 state->mode = LEN;
20505 diff --git a/src/third_party/freetype/src/src/gzip/inffast.c b/src/third_party/freetype/src/src/gzi…
20507 --- a/src/third_party/freetype/src/src/gzip/inffast.c
20509 @@ -70,7 +70,7 @@ void ZLIB_INTERNAL inflate_fast(
20510 code const FAR *dcode; /* local strm->distcode */
20513 - code here; /* retrieved table entry */
20518 @@ -107,20 +107,20 @@ void ZLIB_INTERNAL inflate_fast(
20522 - here = lcode[hold & lmask];
20525 - op = (unsigned)(here.bits);
20526 + op = (unsigned)(here->bits);
20528 bits -= op;
20529 - op = (unsigned)(here.op);
20530 + op = (unsigned)(here->op);
20532 - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
20533 + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ?
20535 - "inflate: literal 0x%02x\n", here.val));
20536 - *out++ = (unsigned char)(here.val);
20537 + "inflate: literal 0x%02x\n", here->val));
20538 + *out++ = (unsigned char)(here->val);
20541 - len = (unsigned)(here.val);
20542 + len = (unsigned)(here->val);
20546 @@ -138,14 +138,14 @@ void ZLIB_INTERNAL inflate_fast(
20550 - here = dcode[hold & dmask];
20553 - op = (unsigned)(here.bits);
20554 + op = (unsigned)(here->bits);
20556 bits -= op;
20557 - op = (unsigned)(here.op);
20558 + op = (unsigned)(here->op);
20560 - dist = (unsigned)(here.val);
20561 + dist = (unsigned)(here->val);
20565 @@ -264,7 +264,7 @@ void ZLIB_INTERNAL inflate_fast(
20569 - here = dcode[here.val + (hold & ((1U << op) - 1))];
20570 + here = dcode + here->val + (hold & ((1U << op) - 1));
20574 @@ -274,7 +274,7 @@ void ZLIB_INTERNAL inflate_fast(
20578 - here = lcode[here.val + (hold & ((1U << op) - 1))];
20579 + here = lcode + here->val + (hold & ((1U << op) - 1));
20582 else if (op & 32) { /* end-of-block */
20583 diff --git a/src/third_party/freetype/src/src/gzip/inflate.c b/src/third_party/freetype/src/src/gzi…
20585 --- a/src/third_party/freetype/src/src/gzip/inflate.c
20587 @@ -1,5 +1,5 @@
20588 /* inflate.c -- zlib decompression
20589 - * Copyright (C) 1995-2016 Mark Adler
20590 + * Copyright (C) 1995-2022 Mark Adler
20594 @@ -132,6 +132,7 @@ int ZEXPORT inflateResetKeep(
20595 state->mode = HEAD;
20596 state->last = 0;
20597 state->havedict = 0;
20598 + state->flags = -1;
20599 state->dmax = 32768U;
20600 state->head = Z_NULL;
20601 state->hold = 0;
20602 @@ -269,7 +270,7 @@ int ZEXPORT inflatePrime(
20606 -#endif /* Z_FREETYPE */
20611 @@ -453,10 +454,10 @@ local int updatewindow(
20615 -# define UPDATE(check, buf, len) \
20617 (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
20619 -# define UPDATE(check, buf, len) adler32(check, buf, len)
20624 @@ -676,7 +677,6 @@ int ZEXPORT inflate(
20625 state->mode = FLAGS;
20628 - state->flags = 0; /* expect zlib header */
20629 if (state->head != Z_NULL)
20630 state->head->done = -1;
20631 if (!(state->wrap & 1) || /* check if zlib header allowed */
20632 @@ -703,6 +703,7 @@ int ZEXPORT inflate(
20635 state->dmax = 1U << len;
20636 + state->flags = 0; /* indicate zlib header */
20638 strm->adler = state->check = adler32(0L, Z_NULL, 0);
20639 state->mode = hold & 0x200 ? DICTID : TYPE;
20640 @@ -728,6 +729,7 @@ int ZEXPORT inflate(
20641 CRC2(state->check, hold);
20643 state->mode = TIME;
20647 if (state->head != Z_NULL)
20648 @@ -736,6 +738,7 @@ int ZEXPORT inflate(
20649 CRC4(state->check, hold);
20651 state->mode = OS;
20655 if (state->head != Z_NULL) {
20656 @@ -746,6 +749,7 @@ int ZEXPORT inflate(
20657 CRC2(state->check, hold);
20659 state->mode = EXLEN;
20662 if (state->flags & 0x0400) {
20664 @@ -759,6 +763,7 @@ int ZEXPORT inflate(
20665 else if (state->head != Z_NULL)
20666 state->head->extra = Z_NULL;
20667 state->mode = EXTRA;
20670 if (state->flags & 0x0400) {
20671 copy = state->length;
20672 @@ -781,6 +786,7 @@ int ZEXPORT inflate(
20674 state->length = 0;
20675 state->mode = NAME;
20678 if (state->flags & 0x0800) {
20680 @@ -802,6 +808,7 @@ int ZEXPORT inflate(
20681 state->head->name = Z_NULL;
20682 state->length = 0;
20683 state->mode = COMMENT;
20686 if (state->flags & 0x1000) {
20688 @@ -822,6 +829,7 @@ int ZEXPORT inflate(
20689 else if (state->head != Z_NULL)
20690 state->head->comment = Z_NULL;
20691 state->mode = HCRC;
20694 if (state->flags & 0x0200) {
20696 @@ -845,6 +853,7 @@ int ZEXPORT inflate(
20697 strm->adler = state->check = ZSWAP32(hold);
20699 state->mode = DICT;
20702 if (state->havedict == 0) {
20704 @@ -852,8 +861,10 @@ int ZEXPORT inflate(
20706 strm->adler = state->check = adler32(0L, Z_NULL, 0);
20707 state->mode = TYPE;
20713 if (state->last) {
20715 @@ -904,8 +915,10 @@ int ZEXPORT inflate(
20717 state->mode = COPY_;
20721 state->mode = COPY;
20724 copy = state->length;
20726 @@ -941,6 +954,7 @@ int ZEXPORT inflate(
20728 state->have = 0;
20729 state->mode = LENLENS;
20732 while (state->have < state->ncode) {
20734 @@ -962,6 +976,7 @@ int ZEXPORT inflate(
20736 state->have = 0;
20737 state->mode = CODELENS;
20740 while (state->have < state->nlen + state->ndist) {
20742 @@ -1045,8 +1060,10 @@ int ZEXPORT inflate(
20744 state->mode = LEN_;
20748 state->mode = LEN;
20753 @@ -1096,6 +1113,7 @@ int ZEXPORT inflate(
20755 state->extra = (unsigned)(here.op) & 15;
20756 state->mode = LENEXT;
20759 if (state->extra) {
20760 NEEDBITS(state->extra);
20761 @@ -1106,6 +1124,7 @@ int ZEXPORT inflate(
20762 Tracevv((stderr, "inflate: length %u\n", state->length));
20763 state->was = state->length;
20764 state->mode = DIST;
20768 here = state->distcode[BITS(state->distbits)];
20769 @@ -1133,6 +1152,7 @@ int ZEXPORT inflate(
20770 state->offset = (unsigned)here.val;
20771 state->extra = (unsigned)(here.op) & 15;
20772 state->mode = DISTEXT;
20775 if (state->extra) {
20776 NEEDBITS(state->extra);
20777 @@ -1149,6 +1169,7 @@ int ZEXPORT inflate(
20779 Tracevv((stderr, "inflate: distance %u\n", state->offset));
20780 state->mode = MATCH;
20784 copy = out - left;
20785 @@ -1208,7 +1229,7 @@ int ZEXPORT inflate(
20786 state->total += out;
20787 if ((state->wrap & 4) && out)
20788 strm->adler = state->check =
20789 - UPDATE(state->check, put - out, out);
20790 + UPDATE_CHECK(state->check, put - out, out);
20792 if ((state->wrap & 4) && (
20794 @@ -1224,10 +1245,11 @@ int ZEXPORT inflate(
20797 state->mode = LENGTH;
20800 if (state->wrap && state->flags) {
20802 - if (hold != (state->total & 0xffffffffUL)) {
20803 + if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) {
20804 strm->msg = (char *)"incorrect length check";
20805 state->mode = BAD;
20807 @@ -1237,6 +1259,7 @@ int ZEXPORT inflate(
20810 state->mode = DONE;
20815 @@ -1246,6 +1269,7 @@ int ZEXPORT inflate(
20823 @@ -1271,7 +1295,7 @@ int ZEXPORT inflate(
20824 state->total += out;
20825 if ((state->wrap & 4) && out)
20826 strm->adler = state->check =
20827 - UPDATE(state->check, strm->next_out - out, out);
20828 + UPDATE_CHECK(state->check, strm->next_out - out, out);
20829 strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
20830 (state->mode == TYPE ? 128 : 0) +
20831 (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
20832 @@ -1409,6 +1433,7 @@ int ZEXPORT inflateSync(
20840 @@ -1441,9 +1466,15 @@ int ZEXPORT inflateSync(
20843 if (state->have != 4) return Z_DATA_ERROR;
20844 + if (state->flags == -1)
20845 + state->wrap = 0; /* if no header yet, treat as raw */
20847 + state->wrap &= ~4; /* no point in computing a check value now */
20848 + flags = state->flags;
20849 in = strm->total_in; out = strm->total_out;
20851 strm->total_in = in; strm->total_out = out;
20852 + state->flags = flags;
20853 state->mode = TYPE;
20856 @@ -1468,7 +1499,7 @@ int ZEXPORT inflateSyncPoint(
20857 return state->mode == STORED && state->bits == 0;
20860 -#if !Z_FREETYPE
20865 @@ -1545,7 +1576,7 @@ int ZEXPORT inflateValidate(
20868 state = (struct inflate_state FAR *)strm->state;
20869 - if (check)
20870 + if (check && state->wrap)
20871 state->wrap |= 4;
20873 state->wrap &= ~4;
20874 diff --git a/src/third_party/freetype/src/src/gzip/inflate.h b/src/third_party/freetype/src/src/gzi…
20876 --- a/src/third_party/freetype/src/src/gzip/inflate.h
20878 @@ -1,5 +1,5 @@
20879 /* inflate.h -- internal inflate state definition
20880 - * Copyright (C) 1995-2016 Mark Adler
20881 + * Copyright (C) 1995-2019 Mark Adler
20885 @@ -89,7 +89,8 @@ struct inflate_state {
20889 - int flags; /* gzip header method and flags (0 if zlib) */
20891 + -1 if raw or no header yet */
20895 diff --git a/src/third_party/freetype/src/src/gzip/inftrees.c b/src/third_party/freetype/src/src/gz…
20897 --- a/src/third_party/freetype/src/src/gzip/inftrees.c
20899 @@ -1,5 +1,5 @@
20900 /* inftrees.c -- generate Huffman trees for efficient decoding
20901 - * Copyright (C) 1995-2017 Mark Adler
20902 + * Copyright (C) 1995-2022 Mark Adler
20906 @@ -9,7 +9,7 @@
20910 - " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
20911 + " inflate 1.2.12 Copyright 1995-2022 Mark Adler ";
20915 @@ -62,7 +62,7 @@ int ZLIB_INTERNAL inflate_table(
20919 - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
20924 diff --git a/src/third_party/freetype/src/src/gzip/patches/freetype-zlib.diff b/src/third_party/fre…
20926 --- a/src/third_party/freetype/src/src/gzip/patches/freetype-zlib.diff
20927 +++ b/src/third_party/freetype/src/src/gzip/patches/freetype-zlib.diff
20928 @@ -6,8 +6,6 @@ are compiled as part of `src/gzip/ftgzip.c`.
20932 -* src/gzip/crc32.c (DO1, DO8): Undefine. Already defined in `adler32.c`.
20933 -
20937 @@ -25,10 +23,10 @@ Omit unused function declarations when `Z_FREETYPE` is defined.
20941 -diff --git b/src/gzip/adler32.c a/src/gzip/adler32.c
20942 +diff --git a/src/gzip/adler32.c b/src/gzip/adler32.c
20944 ---- b/src/gzip/adler32.c
20945 -+++ a/src/gzip/adler32.c
20946 +--- a/src/gzip/adler32.c
20948 @@ -7,7 +7,9 @@
20951 @@ -54,23 +52,10 @@ index be5e8a247..aa032e1dd 100644
20955 -diff --git b/src/gzip/crc32.c a/src/gzip/crc32.c
20956 -index 3e3eb1794..ffced1ea7 100644
20957 ---- b/src/gzip/crc32.c
20958 -+++ a/src/gzip/crc32.c
20959 -@@ -195,6 +195,8 @@ const z_crc_t FAR * ZEXPORT get_crc_table()
20960 - }
20961 -
20962 - /* ========================================================================= */
20963 -+#undef DO1
20964 -+#undef DO8
20965 - #define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
20966 - #define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
20967 -
20968 -diff --git b/src/gzip/gzguts.h a/src/gzip/gzguts.h
20969 -index 990a4d251..c81f8f392 100644
20970 ---- b/src/gzip/gzguts.h
20971 -+++ a/src/gzip/gzguts.h
20972 +diff --git a/src/gzip/gzguts.h b/src/gzip/gzguts.h
20974 +--- a/src/gzip/gzguts.h
20976 @@ -163,7 +163,7 @@
20979 @@ -80,10 +65,10 @@ index 990a4d251..c81f8f392 100644
20983 -diff --git b/src/gzip/inflate.c a/src/gzip/inflate.c
20984 -index 3f7ea647b..7387e6f57 100644
20985 ---- b/src/gzip/inflate.c
20986 -+++ a/src/gzip/inflate.c
20987 +diff --git a/src/gzip/inflate.c b/src/gzip/inflate.c
20989 +--- a/src/gzip/inflate.c
20991 @@ -99,8 +99,10 @@ local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
20994 @@ -95,7 +80,7 @@ index 3f7ea647b..7387e6f57 100644
20998 -@@ -244,6 +246,8 @@ int ZEXPORT inflateInit_(
20999 +@@ -245,6 +247,8 @@ int ZEXPORT inflateInit_(
21003 @@ -104,16 +89,16 @@ index 3f7ea647b..7387e6f57 100644
21007 -@@ -265,6 +269,8 @@ int ZEXPORT inflatePrime(
21008 +@@ -266,6 +270,8 @@ int ZEXPORT inflatePrime(
21012 -+#endif /* Z_FREETYPE */
21018 -@@ -1288,6 +1294,8 @@ int ZEXPORT inflateEnd(
21019 +@@ -1312,6 +1318,8 @@ int ZEXPORT inflateEnd(
21023 @@ -122,7 +107,7 @@ index 3f7ea647b..7387e6f57 100644
21027 -@@ -1440,6 +1448,8 @@ int ZEXPORT inflateSync(
21028 +@@ -1471,6 +1479,8 @@ int ZEXPORT inflateSync(
21032 @@ -131,16 +116,16 @@ index 3f7ea647b..7387e6f57 100644
21036 -@@ -1458,6 +1468,8 @@ int ZEXPORT inflateSyncPoint(
21037 +@@ -1489,6 +1499,8 @@ int ZEXPORT inflateSyncPoint(
21038 return state->mode == STORED && state->bits == 0;
21041 -+#if !Z_FREETYPE
21047 -@@ -1505,6 +1517,8 @@ int ZEXPORT inflateCopy(
21048 +@@ -1536,6 +1548,8 @@ int ZEXPORT inflateCopy(
21052 @@ -149,7 +134,7 @@ index 3f7ea647b..7387e6f57 100644
21056 -@@ -1538,6 +1552,8 @@ int ZEXPORT inflateValidate(
21057 +@@ -1569,6 +1583,8 @@ int ZEXPORT inflateValidate(
21061 @@ -158,16 +143,16 @@ index 3f7ea647b..7387e6f57 100644
21065 -@@ -1559,3 +1575,5 @@ unsigned long ZEXPORT inflateCodesUsed(
21066 +@@ -1590,3 +1606,5 @@ unsigned long ZEXPORT inflateCodesUsed(
21067 state = (struct inflate_state FAR *)strm->state;
21068 return (unsigned long)(state->next - state->codes);
21072 -diff --git b/src/gzip/inflate.h a/src/gzip/inflate.h
21073 -index a46cce6b6..92ea758e2 100644
21074 ---- b/src/gzip/inflate.h
21075 -+++ a/src/gzip/inflate.h
21076 +diff --git a/src/gzip/inflate.h b/src/gzip/inflate.h
21078 +--- a/src/gzip/inflate.h
21080 @@ -3,6 +3,9 @@
21083 @@ -178,16 +163,16 @@ index a46cce6b6..92ea758e2 100644
21087 -@@ -123,3 +126,5 @@ struct inflate_state {
21088 +@@ -124,3 +127,5 @@ struct inflate_state {
21094 -diff --git b/src/gzip/inftrees.h a/src/gzip/inftrees.h
21095 +diff --git a/src/gzip/inftrees.h b/src/gzip/inftrees.h
21097 ---- b/src/gzip/inftrees.h
21098 -+++ a/src/gzip/inftrees.h
21099 +--- a/src/gzip/inftrees.h
21101 @@ -3,6 +3,9 @@
21104 @@ -204,10 +189,10 @@ index baa53a0b1..c94eb78b5 100644
21108 -diff --git b/src/gzip/zlib.h a/src/gzip/zlib.h
21109 -index f09cdaf1e..1807c0645 100644
21110 ---- b/src/gzip/zlib.h
21111 -+++ a/src/gzip/zlib.h
21112 +diff --git a/src/gzip/zlib.h b/src/gzip/zlib.h
21114 +--- a/src/gzip/zlib.h
21116 @@ -31,7 +31,7 @@
21119 @@ -251,7 +236,7 @@ index f09cdaf1e..1807c0645 100644
21123 -@@ -954,6 +958,8 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
21124 +@@ -956,6 +960,8 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
21128 @@ -260,7 +245,7 @@ index f09cdaf1e..1807c0645 100644
21132 -@@ -978,6 +984,8 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
21133 +@@ -980,6 +986,8 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
21137 @@ -269,7 +254,7 @@ index f09cdaf1e..1807c0645 100644
21141 -@@ -1067,6 +1075,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
21142 +@@ -1069,6 +1077,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
21146 @@ -278,7 +263,7 @@ index f09cdaf1e..1807c0645 100644
21150 -@@ -1093,6 +1103,8 @@ typedef unsigned (*in_func) OF((void FAR *,
21151 +@@ -1095,6 +1105,8 @@ typedef unsigned (*in_func) OF((void FAR *,
21155 @@ -287,7 +272,7 @@ index f09cdaf1e..1807c0645 100644
21159 -@@ -1212,6 +1224,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
21160 +@@ -1214,6 +1226,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
21161 27-31: 0 (reserved)
21164 @@ -296,16 +281,16 @@ index f09cdaf1e..1807c0645 100644
21168 -@@ -1739,6 +1753,8 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21169 +@@ -1742,6 +1756,8 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21175 - ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
21179 -@@ -1805,6 +1821,19 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
21180 +@@ -1822,6 +1838,19 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
21184 @@ -325,13 +310,14 @@ index f09cdaf1e..1807c0645 100644
21188 -@@ -1879,12 +1908,15 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility …
21189 +@@ -1901,13 +1930,16 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility …
21200 @@ -341,7 +327,7 @@ index f09cdaf1e..1807c0645 100644
21204 -@@ -1904,6 +1936,7 @@ ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
21205 +@@ -1927,6 +1959,7 @@ ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
21209 @@ -349,21 +335,11 @@ index f09cdaf1e..1807c0645 100644
21213 -diff --git b/src/gzip/zutil.h a/src/gzip/zutil.h
21214 -index b079ea6a8..2d734a835 100644
21215 ---- b/src/gzip/zutil.h
21216 -+++ a/src/gzip/zutil.h
21217 -@@ -30,7 +30,9 @@
21218 - #endif
21219 -
21220 - #ifdef Z_SOLO
21221 -+# ifndef Z_FREETYPE
21222 - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
21223 -+# endif
21224 - #endif
21225 -
21226 - #ifndef local
21227 -@@ -185,6 +187,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21228 +diff --git a/src/gzip/zutil.h b/src/gzip/zutil.h
21230 +--- a/src/gzip/zutil.h
21232 +@@ -188,6 +188,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21233 #pragma warn -8066
21236 @@ -372,7 +348,7 @@ index b079ea6a8..2d734a835 100644
21239 (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
21240 -@@ -192,6 +196,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21241 +@@ -195,6 +197,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21245 @@ -381,7 +357,7 @@ index b079ea6a8..2d734a835 100644
21249 -@@ -223,9 +229,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21250 +@@ -226,9 +230,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21254 diff --git a/src/third_party/freetype/src/src/gzip/zlib.h b/src/third_party/freetype/src/src/gzip/z…
21256 --- a/src/third_party/freetype/src/src/gzip/zlib.h
21258 @@ -1,7 +1,7 @@
21259 /* zlib.h -- interface of the 'zlib' general purpose compression library
21260 - version 1.2.11, January 15th, 2017
21263 - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
21264 + Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
21266 This software is provided 'as-is', without any express or implied
21268 @@ -37,11 +37,11 @@
21272 -#define ZLIB_VERSION "1.2.11"
21273 -#define ZLIB_VERNUM 0x12b0
21278 -#define ZLIB_VER_REVISION 11
21283 @@ -547,8 +547,7 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
21287 - fields next_in, zalloc, zfree and opaque must be initialized before by the
21288 - caller.
21293 @@ -716,11 +715,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
21297 - strategy is changed, and if any input has been consumed in a previous
21298 - deflate() call, then the input available so far is compressed with the old
21299 - level and strategy using deflate(strm, Z_BLOCK). There are three approaches
21300 - for the compression levels 0, 1..3, and 4..9 respectively. The new level
21301 - and strategy will take effect at the next call of deflate().
21311 @@ -869,9 +869,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
21313 return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
21314 CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
21315 - below), inflate() will not automatically decode concatenated gzip streams.
21316 - inflate() will return Z_STREAM_END at the end of the gzip stream. The state
21317 - would need to be reset to continue decoding a subsequent gzip stream.
21326 @@ -1316,14 +1318,14 @@ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
21330 - Opens a gzip (.gz) file for reading or writing. The mode parameter is as
21331 - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
21332 - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
21333 - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
21334 - for fixed code compression as in "wb9F". (See the description of
21335 - deflateInit2 for more information about the strategy parameter.) 'T' will
21336 - request transparent writing or appending with no compression and not using
21337 - the gzip format.
21341 + filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
21342 + 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
21349 @@ -1353,9 +1355,9 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
21353 - gzdopen associates a gzFile with the file descriptor fd. File descriptors
21354 - are obtained from calls like open, dup, creat, pipe or fileno (if the file
21355 - has been previously opened with fopen). The mode parameter is as in gzopen.
21362 @@ -1376,13 +1378,13 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
21366 - Set the internal buffer size used by this library's functions. The
21367 - default buffer size is 8192 bytes. This function must be called after
21368 - gzopen() or gzdopen(), and before any other calls that read or write the
21369 - file. The buffer memory allocation is always deferred to the first read or
21370 - write. Three times that size in buffer space is allocated. A larger buffer
21371 - size of, for example, 64K or 128K bytes will noticeably increase the speed
21372 - of decompression (reading).
21383 @@ -1392,9 +1394,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
21387 - Dynamically update the compression level or strategy. See the description
21388 - of deflateInit2 for the meaning of these parameters. Previously provided
21389 - data is flushed before the parameter change.
21396 @@ -1403,7 +1405,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
21400 - Reads the given number of uncompressed bytes from the compressed file. If
21405 @@ -1434,11 +1436,11 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
21409 - Read up to nitems items of size size from file to buf, otherwise operating
21410 - as gzread() does. This duplicates the interface of stdio's fread(), with
21411 - size_t request and return types. If the library defines size_t, then
21412 - z_size_t is identical to size_t. If not, then z_size_t is an unsigned
21413 - integer type that can contain a pointer.
21422 @@ -1457,18 +1459,16 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nit…
21423 file, reseting and retrying on end-of-file, when size is not 1.
21426 -ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
21427 - voidpc buf, unsigned len));
21430 - Writes the given number of uncompressed bytes into the compressed file.
21431 - gzwrite returns the number of uncompressed bytes written or 0 in case of
21432 - error.
21440 - gzfwrite() writes nitems items of size size from buf to file, duplicating
21445 @@ -1481,22 +1481,22 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
21449 - Converts, formats, and writes the arguments to the compressed file under
21450 - control of the format string, as in fprintf. gzprintf returns the number of
21459 - zlib was compiled with the insecure functions sprintf() or vsprintf()
21467 - Writes the given null-terminated string to the compressed file, excluding
21468 + Compress and write the given null-terminated string s to file, excluding
21471 gzputs returns the number of characters written, or -1 in case of error.
21472 @@ -1504,11 +1504,12 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
21476 - Reads bytes from the compressed file until len-1 characters are read, or a
21477 - newline character is read and transferred to buf, or an end-of-file
21478 - condition is encountered. If any characters are read or if len == 1, the
21479 - string is terminated with a null character. If no characters are read due
21480 - to an end-of-file or len < 1, then the buffer is left untouched.
21481 + Read and decompress bytes from file into buf, until len-1 characters are
21483 + end-of-file condition is encountered. If any characters are read or if len
21485 + are read due to an end-of-file or len is less than one, then the buffer is
21488 gzgets returns buf which is a null-terminated string, or it returns NULL
21489 for end-of-file or in case of error. If there was an error, the contents at
21490 @@ -1517,13 +1518,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
21494 - Writes c, converted to an unsigned char, into the compressed file. gzputc
21496 returns the value that was written, or -1 in case of error.
21501 - Reads one byte from the compressed file. gzgetc returns this byte or -1
21502 + Read and decompress one byte from file. gzgetc returns this byte or -1
21506 @@ -1532,8 +1533,8 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
21510 - Push one character back onto the stream to be read as the first character
21511 - on the next read. At least one character of push-back is allowed.
21513 + the next read. At least one character of push-back is always allowed.
21514 gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
21515 fail if c is -1, and may fail if a character has been pushed but not read
21517 @@ -1544,9 +1545,9 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
21521 - Flushes all pending output into the compressed file. The parameter flush
21522 - is as in the deflate() function. The return value is the zlib error number
21523 - (see function gzerror below). gzflush is only permitted when writing.
21530 @@ -1561,8 +1562,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
21534 - Sets the starting position for the next gzread or gzwrite on the given
21535 - compressed file. The offset represents a number of bytes in the
21541 @@ -1579,18 +1580,18 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
21545 - Rewinds the given file. This function is supported only for reading.
21548 - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
21555 - Returns the starting position for the next gzread or gzwrite on the given
21556 - compressed file. This position represents a number of bytes in the
21557 - uncompressed data stream, and is zero when starting, even if appending or
21558 - reading a gzip stream from the middle of a file using gzdopen().
21566 @@ -1598,22 +1599,22 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
21570 - Returns the current offset in the file being read or written. This offset
21571 - includes the count of bytes that precede the gzip stream, for example when
21572 - appending or when using gzdopen() for reading. When reading, the offset
21573 - does not include as yet unused buffered input. This information can be used
21574 - for a progress indicator. On error, gzoffset() returns -1.
21579 + be used for a progress indicator. On error, gzoffset() returns -1.
21584 - Returns true (1) if the end-of-file indicator has been set while reading,
21585 - false (0) otherwise. Note that the end-of-file indicator is set only if the
21586 - read tried to go past the end of the input, but came up short. Therefore,
21587 - just like feof(), gzeof() may return false even if there is no more data to
21588 - read, in the event that the last read request was for the exact number of
21589 - bytes remaining in the input file. This will happen if the input file size
21590 - is an exact multiple of the buffer size.
21591 + Return true (1) if the end-of-file indicator for file has been set while
21592 + reading, false (0) otherwise. Note that the end-of-file indicator is set
21600 unless the end-of-file indicator is reset by gzclearerr() and the input file
21601 @@ -1622,7 +1623,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
21605 - Returns true (1) if file is being copied directly while reading, or false
21610 @@ -1643,8 +1644,8 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
21614 - Flushes all pending output if necessary, closes the compressed file and
21615 - deallocates the (de)compression state. Note that once file is closed, you
21621 @@ -1668,10 +1669,10 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
21625 - Returns the error message for the last error which occurred on the given
21626 - compressed file. errnum is set to zlib error number. If an error occurred
21627 - in the file system and not in the compression library, errnum is set to
21628 - Z_ERRNO and the application may consult errno to get the exact error code.
21636 @@ -1684,7 +1685,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
21640 - Clears the error and end-of-file flags for file. This is analogous to the
21641 + Clear the error and end-of-file flags for file. This is analogous to the
21645 @@ -1702,8 +1703,9 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
21648 Update a running Adler-32 checksum with the bytes buf[0..len-1] and
21649 - return the updated checksum. If buf is Z_NULL, this function returns the
21650 - required initial value for the checksum.
21651 + return the updated checksum. An Adler-32 value is in the range of a 32-bit
21655 An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
21657 @@ -1736,12 +1738,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
21661 -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21664 Update a running CRC-32 with the bytes buf[0..len-1] and return the
21665 - updated CRC-32. If buf is Z_NULL, this function returns the required
21666 - initial value for the crc. Pre- and post-conditioning (one's complement) is
21667 - performed within this function so it shouldn't be done by the application.
21668 + updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
21670 + crc. Pre- and post-conditioning (one's complement) is performed within this
21675 @@ -1755,7 +1758,7 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21679 -ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
21684 @@ -1771,6 +1774,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2…
21705 @@ -1871,6 +1888,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21713 @@ -1881,6 +1899,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21721 @@ -1888,6 +1907,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21729 @@ -1896,6 +1916,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21737 @@ -1904,6 +1925,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21745 @@ -1911,6 +1933,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21753 @@ -1925,7 +1948,7 @@ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
21757 -#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
21762 diff --git a/src/third_party/freetype/src/src/gzip/zutil.c b/src/third_party/freetype/src/src/gzip/…
21764 --- a/src/third_party/freetype/src/src/gzip/zutil.c
21766 @@ -136,8 +136,8 @@ const char * ZEXPORT zError(
21770 -#if defined(_WIN32_WCE)
21771 - /* The Microsoft C Run-Time Library for Windows CE doesn't have
21773 + /* The older Microsoft C Run-Time Library for Windows CE doesn't have
21777 diff --git a/src/third_party/freetype/src/src/gzip/zutil.h b/src/third_party/freetype/src/src/gzip/…
21779 --- a/src/third_party/freetype/src/src/gzip/zutil.h
21781 @@ -1,5 +1,5 @@
21782 /* zutil.h -- internal interface and configuration of the compression library
21783 - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
21784 + * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
21788 @@ -29,12 +29,6 @@
21792 -#ifdef Z_SOLO
21793 -# ifndef Z_FREETYPE
21794 - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
21795 -# endif
21796 -#endif
21797 -
21801 @@ -48,6 +42,17 @@ typedef unsigned short ush;
21816 extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21819 @@ -172,10 +177,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21823 -# ifndef _PTRDIFF_T_DEFINED
21824 - typedef int ptrdiff_t;
21825 -# define _PTRDIFF_T_DEFINED
21826 -# endif
21830 diff --git a/src/third_party/freetype/src/src/lzw/ftlzw.c b/src/third_party/freetype/src/src/lzw/ft…
21832 --- a/src/third_party/freetype/src/src/lzw/ftlzw.c
21834 @@ -344,7 +344,7 @@
21838 - FT_LZWFile zip;
21843 diff --git a/src/third_party/freetype/src/src/lzw/ftzopen.c b/src/third_party/freetype/src/src/lzw/…
21845 --- a/src/third_party/freetype/src/src/lzw/ftzopen.c
21847 @@ -143,7 +143,7 @@
21848 return -1;
21851 - if ( FT_QRENEW_ARRAY( state->stack, old_size, new_size ) )
21852 + if ( FT_QREALLOC( state->stack, old_size, new_size ) )
21853 return -1;
21856 diff --git a/src/third_party/freetype/src/src/pfr/pfrobjs.c b/src/third_party/freetype/src/src/pfr/…
21858 --- a/src/third_party/freetype/src/src/pfr/pfrobjs.c
21860 @@ -207,7 +207,7 @@
21862 pfrface->height = (FT_Short)( ( pfrface->units_per_EM * 12 ) / 10 );
21863 if ( pfrface->height < pfrface->ascender - pfrface->descender )
21864 - pfrface->height = (FT_Short)(pfrface->ascender - pfrface->descender);
21865 + pfrface->height = (FT_Short)( pfrface->ascender - pfrface->descender );
21867 if ( phy_font->num_strikes > 0 )
21869 diff --git a/src/third_party/freetype/src/src/psaux/cffdecode.c b/src/third_party/freetype/src/src/…
21871 --- a/src/third_party/freetype/src/src/psaux/cffdecode.c
21873 @@ -248,7 +248,7 @@
21877 - CFF_Font cff = (CFF_Font)(face->extra.data);
21878 + CFF_Font cff = (CFF_Font)( face->extra.data );
21882 diff --git a/src/third_party/freetype/src/src/psaux/psconv.c b/src/third_party/freetype/src/src/psa…
21884 --- a/src/third_party/freetype/src/src/psaux/psconv.c
21886 @@ -535,11 +535,11 @@
21890 - *buffer = (FT_Byte)(*buffer + c);
21895 - *buffer = (FT_Byte)(c << 4);
21900 @@ -572,8 +572,8 @@
21904 - if ( n > (FT_UInt)(limit - p) )
21905 - n = (FT_UInt)(limit - p);
21906 + if ( n > (FT_UInt)( limit - p ) )
21907 + n = (FT_UInt)( limit - p );
21911 diff --git a/src/third_party/freetype/src/src/psaux/psfixed.h b/src/third_party/freetype/src/src/ps…
21913 --- a/src/third_party/freetype/src/src/psaux/psfixed.h
21915 @@ -2,7 +2,7 @@
21919 - * Adobe's code for Fixed Point Mathematics (specification only).
21920 + * Adobe's code for Fixed-Point Mathematics (specification only).
21922 * Copyright 2007-2013 Adobe Systems Incorporated.
21924 @@ -43,10 +43,10 @@
21928 - /* rasterizer integer and fixed point arithmetic must be 32-bit */
21929 + /* rasterizer integer and fixed-point arithmetic must be 32-bit */
21932 - typedef FT_Int32 CF2_Frac; /* 2.30 fixed point */
21933 + typedef FT_Int32 CF2_Frac; /* 2.30 fixed-point */
21937 diff --git a/src/third_party/freetype/src/src/psaux/psglue.h b/src/third_party/freetype/src/src/psa…
21939 --- a/src/third_party/freetype/src/src/psaux/psglue.h
21941 @@ -72,7 +72,7 @@ FT_BEGIN_HEADER
21945 - /* a matrix of fixed point values */
21946 + /* a matrix of fixed-point values */
21950 diff --git a/src/third_party/freetype/src/src/psaux/psobjs.c b/src/third_party/freetype/src/src/psa…
21952 --- a/src/third_party/freetype/src/src/psaux/psobjs.c
21954 @@ -518,7 +518,7 @@
21958 - if ( cur + 1 < limit && *(cur + 1) == '<' ) /* << */
21963 @@ -1115,7 +1115,7 @@
21965 FT_Memory memory = parser->memory;
21966 FT_UInt len = (FT_UInt)( limit - cur );
21967 - FT_String* string;
21972 diff --git a/src/third_party/freetype/src/src/psaux/psstack.h b/src/third_party/freetype/src/src/ps…
21974 --- a/src/third_party/freetype/src/src/psaux/psstack.h
21976 @@ -49,8 +49,8 @@ FT_BEGIN_HEADER
21980 - CF2_Fixed r; /* 16.16 fixed point */
21981 - CF2_Frac f; /* 2.30 fixed point (for font matrix) */
21982 + CF2_Fixed r; /* 16.16 fixed-point */
21983 + CF2_Frac f; /* 2.30 fixed-point (for font matrix) */
21987 diff --git a/src/third_party/freetype/src/src/pshinter/pshglob.c b/src/third_party/freetype/src/src…
21989 --- a/src/third_party/freetype/src/src/pshinter/pshglob.c
21991 @@ -646,7 +646,7 @@
21995 - PSH_Globals globals;
22000 diff --git a/src/third_party/freetype/src/src/raster/ftraster.c b/src/third_party/freetype/src/src/…
22002 --- a/src/third_party/freetype/src/src/raster/ftraster.c
22004 @@ -2269,7 +2269,7 @@
22007 while ( --c2 > 0 )
22008 - *(++target) = 0xFF;
22009 + *( ++target ) = 0xFF;
22011 target[1] |= f2;
22013 diff --git a/src/third_party/freetype/src/src/sdf/ftsdf.c b/src/third_party/freetype/src/src/sdf/ft…
22015 --- a/src/third_party/freetype/src/src/sdf/ftsdf.c
22017 @@ -738,6 +738,18 @@
22019 contour = shape->contours;
22024 + if ( ( contour->last_pos.x == control_1->x &&
22025 + contour->last_pos.y == control_1->y ) ||
22026 + ( control_1->x == to->x &&
22027 + control_1->y == to->y ) )
22035 edge->edge_type = SDF_EDGE_CONIC;
22036 @@ -764,9 +776,9 @@
22040 - SDF_Shape* shape = ( SDF_Shape* )user;
22041 - SDF_Edge* edge = NULL;
22042 - SDF_Contour* contour = NULL;
22048 FT_Memory memory = shape->memory;
22049 @@ -1065,7 +1077,7 @@
22053 - FT_Int max_splits,
22058 @@ -1134,26 +1146,41 @@
22062 - FT_Int max_splits,
22066 - FT_Error error = FT_Err_Ok;
22067 - FT_26D6_Vec cpos[7];
22068 - SDF_Edge* left,* right;
22075 - if ( !memory || !out )
22082 - /* split the conic */
22093 + /* smaller than the pre-defined `threshold` value. */
22094 + if ( FT_ABS( 2 * cpos[0].x - 3 * cpos[1].x + cpos[3].x ) < threshold &&
22095 + FT_ABS( 2 * cpos[0].y - 3 * cpos[1].y + cpos[3].y ) < threshold &&
22096 + FT_ABS( cpos[0].x - 3 * cpos[2].x + 2 * cpos[3].x ) < threshold &&
22097 + FT_ABS( cpos[0].y - 3 * cpos[2].y + 2 * cpos[3].y ) < threshold )
22106 @@ -1250,13 +1277,32 @@
22114 ctrls[0] = edge->start_pos;
22115 ctrls[1] = edge->control_a;
22116 ctrls[2] = edge->end_pos;
22118 - error = split_sdf_conic( memory, ctrls, 32, &new_edges );
22119 + dx = FT_ABS( ctrls[2].x + ctrls[0].x - 2 * ctrls[1].x );
22120 + dy = FT_ABS( ctrls[2].y + ctrls[0].y - 2 * ctrls[1].y );
22125 + /* bisection causes a four-fold reduction of the deviation, */
22140 @@ -1893,7 +1939,7 @@
22144 - /* clamp the factor between 0.0 and 1.0 in fixed point */
22145 + /* clamp the factor between 0.0 and 1.0 in fixed-point */
22149 @@ -2968,7 +3014,7 @@
22150 diff = current_dist.distance - min_dist.distance;
22153 - if ( FT_ABS(diff ) < CORNER_CHECK_EPSILON )
22158 @@ -3118,7 +3164,7 @@
22162 - /* square_root the values and fit in a 6.10 fixed point */
22163 + /* square_root the values and fit in a 6.10 fixed-point */
22167 @@ -3242,7 +3288,7 @@
22168 buffer = (FT_SDFFormat*)bitmap->buffer;
22171 - sp_sq = FT_INT_16D16( spread * spread );
22176 @@ -3286,6 +3332,7 @@
22184 @@ -3313,7 +3360,7 @@
22188 - /* square_root the values and fit in a 6.10 fixed-point */
22193 @@ -3325,11 +3372,15 @@
22197 - else if ( dists[index].distance > dist.distance )
22198 - dists[index] = dist;
22199 - else if ( FT_ABS( dists[index].distance - dist.distance )
22200 - < CORNER_CHECK_EPSILON )
22201 - dists[index] = resolve_corner( dists[index], dist );
22204 + diff = FT_ABS( dists[index].distance - dist.distance );
22214 diff --git a/src/third_party/freetype/src/src/sdf/ftsdfcommon.c b/src/third_party/freetype/src/src/…
22216 --- a/src/third_party/freetype/src/src/sdf/ftsdfcommon.c
22218 @@ -33,7 +33,7 @@
22222 - * Use this to compute the square root of a 16.16 fixed point number.
22223 + * Use this to compute the square root of a 16.16 fixed-point number.
22227 @@ -72,8 +72,8 @@
22231 - * Convert 16.16 fixed point values to the desired output format.
22232 - * In this case we reduce 16.16 fixed point values to normalized
22233 + * Convert 16.16 fixed-point values to the desired output format.
22234 + * In this case we reduce 16.16 fixed-point values to normalized
22235 * 8-bit values.
22238 diff --git a/src/third_party/freetype/src/src/sdf/ftsdfcommon.h b/src/third_party/freetype/src/src/…
22240 --- a/src/third_party/freetype/src/src/sdf/ftsdfcommon.h
22242 @@ -48,6 +48,8 @@ FT_BEGIN_HEADER
22251 diff --git a/src/third_party/freetype/src/src/sdf/ftsdfrend.c b/src/third_party/freetype/src/src/sd…
22253 --- a/src/third_party/freetype/src/src/sdf/ftsdfrend.c
22255 @@ -298,15 +298,9 @@
22259 - /* the rows and pitch must be valid after presetting the */
22260 - /* bitmap using outline */
22262 if ( !bitmap->rows || !bitmap->pitch )
22263 - {
22264 - FT_ERROR(( "ft_sdf_render: failed to preset bitmap\n" ));
22265 -
22266 - error = FT_THROW( Cannot_Render_Glyph );
22267 - goto Exit;
22268 - }
22272 x_pad = sdf_module->spread;
22273 @@ -525,13 +519,9 @@
22278 if ( !bitmap->rows || !bitmap->pitch )
22279 - {
22280 - FT_ERROR(( "ft_bsdf_render: invalid bitmap size\n" ));
22281 -
22282 - error = FT_THROW( Invalid_Argument );
22283 - goto Exit;
22284 - }
22287 FT_Bitmap_New( &target );
22289 diff --git a/src/third_party/freetype/src/src/sfnt/pngshim.c b/src/third_party/freetype/src/src/sfn…
22291 --- a/src/third_party/freetype/src/src/sfnt/pngshim.c
22293 @@ -367,7 +367,7 @@
22297 - if ( png_get_valid(png, info, PNG_INFO_tRNS ) )
22302 @@ -387,7 +387,7 @@
22306 - png_read_update_info(png, info );
22311 diff --git a/src/third_party/freetype/src/src/sfnt/sfdriver.c b/src/third_party/freetype/src/src/sf…
22313 --- a/src/third_party/freetype/src/src/sfnt/sfdriver.c
22315 @@ -657,7 +657,7 @@
22319 - * Find the shortest decimal representation of a 16.16 fixed point
22320 + * Find the shortest decimal representation of a 16.16 fixed-point
22324 @@ -733,7 +733,7 @@
22328 - verified this by iterating over all possible fixed point numbers.
22329 + verified this by iterating over all possible fixed-point numbers.
22333 @@ -741,7 +741,7 @@
22337 - also found by testing all possible fixed point values).
22338 + also found by testing all possible fixed-point values).
22342 diff --git a/src/third_party/freetype/src/src/sfnt/sfobjs.c b/src/third_party/freetype/src/src/sfnt…
22344 --- a/src/third_party/freetype/src/src/sfnt/sfobjs.c
22346 @@ -566,7 +566,7 @@
22349 /* value -(N+1) requests information on index N */
22350 - if ( face_instance_index < 0 )
22352 face_index--;
22354 if ( face_index >= face->ttc_header.count )
22355 @@ -784,17 +784,23 @@
22359 - FT_Error error;
22362 - FT_Error psnames_error;
22365 - FT_Bool has_outline;
22366 - FT_Bool is_apple_sbit;
22367 - FT_Bool is_apple_sbix;
22368 - FT_Bool has_CBLC;
22369 - FT_Bool has_CBDT;
22370 - FT_Bool ignore_typographic_family = FALSE;
22371 - FT_Bool ignore_typographic_subfamily = FALSE;
22386 SFNT_Service sfnt = (SFNT_Service)face->sfnt;
22388 @@ -813,6 +819,8 @@
22397 @@ -848,14 +856,17 @@
22401 - is_apple_sbit = 0;
22402 - is_apple_sbix = !face->goto_table( face, TTAG_sbix, stream, 0 );
22404 + has_CBLC = !face->goto_table( face, TTAG_CBLC, stream, 0 );
22405 + has_CBDT = !face->goto_table( face, TTAG_CBDT, stream, 0 );
22406 + has_EBLC = !face->goto_table( face, TTAG_EBLC, stream, 0 );
22407 + has_bloc = !face->goto_table( face, TTAG_bloc, stream, 0 );
22408 + has_sbix = !face->goto_table( face, TTAG_sbix, stream, 0 );
22410 - /* Apple 'sbix' color bitmaps are rendered scaled and then the 'glyf'
22411 - * outline rendered on top. We don't support that yet, so just ignore
22412 - * the 'glyf' outline and advertise it as a bitmap-only font. */
22413 - if ( is_apple_sbix )
22414 - has_outline = FALSE;
22422 @@ -867,16 +878,13 @@
22426 - if ( !is_apple_sbit || is_apple_sbix )
22434 - has_CBLC = !face->goto_table( face, TTAG_CBLC, stream, 0 );
22435 - has_CBDT = !face->goto_table( face, TTAG_CBDT, stream, 0 );
22436 -
22440 @@ -986,7 +994,11 @@
22444 - if ( sfnt->load_eblc )
22448 + if ( sfnt->load_eblc &&
22453 @@ -1054,11 +1066,19 @@
22455 if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_CBLC ||
22456 face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX ||
22457 - face->colr )
22458 + face->colr ||
22459 + face->svg )
22463 - flags |= FT_FACE_FLAG_SCALABLE; /* scalable outlines */
22466 + /* fonts with an 'sbix' table as bitmap-only */
22475 @@ -1281,7 +1301,8 @@
22479 - if ( FT_IS_SCALABLE( root ) )
22485 diff --git a/src/third_party/freetype/src/src/sfnt/sfwoff.c b/src/third_party/freetype/src/src/sfnt…
22487 --- a/src/third_party/freetype/src/src/sfnt/sfwoff.c
22489 @@ -162,8 +162,7 @@
22493 - if ( FT_QALLOC( sfnt, 12 + woff.num_tables * 16UL ) ||
22494 - FT_NEW( sfnt_stream ) )
22499 @@ -196,8 +195,8 @@
22503 - if ( FT_NEW_ARRAY( tables, woff.num_tables ) ||
22504 - FT_NEW_ARRAY( indices, woff.num_tables ) )
22510 @@ -328,9 +327,7 @@
22514 - if ( FT_REALLOC( sfnt,
22515 - 12 + woff.num_tables * 16UL,
22516 - woff.totalSfntSize ) )
22521 diff --git a/src/third_party/freetype/src/src/sfnt/sfwoff2.c b/src/third_party/freetype/src/src/sfn…
22523 --- a/src/third_party/freetype/src/src/sfnt/sfwoff2.c
22525 @@ -84,6 +84,8 @@
22534 @@ -227,9 +229,9 @@
22538 - if ( FT_REALLOC( dst,
22539 - (FT_ULong)( *dst_size ),
22540 - (FT_ULong)( *offset + size ) ) )
22547 @@ -522,6 +524,7 @@
22555 @@ -549,6 +552,9 @@
22556 FT_Int dy = point.y - last_y;
22564 else if ( dx > -256 && dx < 256 )
22565 @@ -778,7 +784,7 @@
22569 - if ( FT_QNEW_ARRAY( loca_buf, loca_buf_size ) )
22574 @@ -833,15 +839,18 @@
22585 - FT_ULong bitmap_length;
22594 @@ -854,18 +863,20 @@
22598 - if ( FT_NEW_ARRAY( substreams, num_substreams ) )
22602 - if ( FT_STREAM_SKIP( 4 ) )
22612 - FT_TRACE4(( "num_glyphs = %u; index_format = %u\n",
22613 - num_glyphs, index_format ));
22617 info->num_glyphs = num_glyphs;
22619 @@ -878,7 +889,7 @@
22620 if ( info->loca_table->dst_length != expected_loca_length )
22623 - offset = ( 2 + num_substreams ) * 4;
22625 if ( offset > info->glyf_table->TransformLength )
22628 @@ -901,21 +912,36 @@
22632 - if ( FT_NEW_ARRAY( loca_values, num_glyphs + 1 ) )
22637 + if ( overlap_bitmap_length > info->glyf_table->TransformLength - offset )
22654 - bitmap_length = ( ( num_glyphs + 31U ) >> 5 ) << 2;
22655 - substreams[BBOX_STREAM].offset += bitmap_length;
22661 - if ( FT_NEW_ARRAY( glyph_buf, glyph_buf_size ) )
22665 - if ( FT_NEW_ARRAY( info->x_mins, num_glyphs ) )
22666 + if ( FT_QNEW_ARRAY( info->x_mins, num_glyphs ) )
22670 @@ -947,7 +973,7 @@
22674 - FT_ULong composite_size;
22679 @@ -973,7 +999,7 @@
22683 - if ( FT_RENEW_ARRAY( glyph_buf, glyph_buf_size, size_needed ) )
22688 @@ -1025,8 +1051,11 @@
22692 - FT_Byte* flags_buf = NULL;
22693 - FT_Byte* triplet_buf = NULL;
22702 @@ -1035,7 +1064,18 @@
22706 - if ( FT_NEW_ARRAY( n_points_arr, n_contours ) )
22722 @@ -1072,7 +1112,7 @@
22726 - if ( FT_NEW_ARRAY( points, points_size ) )
22731 @@ -1101,7 +1141,7 @@
22735 - if ( FT_RENEW_ARRAY( glyph_buf, glyph_buf_size, size_needed ) )
22740 @@ -1155,6 +1195,7 @@
22748 @@ -1185,8 +1226,7 @@
22752 - if ( n_contours > 0 )
22753 - info->x_mins[i] = (FT_Short)x_min;
22754 + info->x_mins[i] = (FT_Short)x_min;
22757 info->glyf_table->dst_length = dest_offset - info->glyf_table->dst_offset;
22758 @@ -1303,7 +1343,7 @@
22762 - if ( FT_NEW_ARRAY( info->x_mins, num_glyphs ) )
22763 + if ( FT_QNEW_ARRAY( info->x_mins, num_glyphs ) )
22766 loca_offset = info->loca_table->src_offset;
22767 @@ -1391,8 +1431,8 @@
22771 - if ( FT_NEW_ARRAY( advance_widths, num_hmetrics ) ||
22772 - FT_NEW_ARRAY( lsbs, num_glyphs ) )
22778 @@ -1443,7 +1483,7 @@
22782 - if ( FT_NEW_ARRAY( hmtx_table, hmtx_table_size ) )
22787 @@ -1500,10 +1540,10 @@
22791 - FT_Error error = FT_Err_Ok;
22792 - FT_Stream stream = NULL;
22793 - FT_Byte* buf_cursor = NULL;
22794 - FT_Byte* table_entry = NULL;
22802 @@ -1544,10 +1584,6 @@
22806 - /* Create buffer for table entries. */
22807 - if ( FT_NEW_ARRAY( table_entry, 16 ) )
22808 - goto Fail;
22809 -
22813 @@ -1710,7 +1746,6 @@
22817 - FT_FREE( table_entry );
22821 @@ -1723,7 +1758,6 @@
22825 - FT_FREE( table_entry );
22829 @@ -1836,8 +1870,8 @@
22833 - if ( FT_NEW_ARRAY( tables, woff2.num_tables ) ||
22834 - FT_NEW_ARRAY( indices, woff2.num_tables ) )
22840 @@ -1908,10 +1942,11 @@
22844 + table->flags = flags;
22845 table->src_offset = src_offset;
22846 table->src_length = table->TransformLength;
22847 src_offset += table->TransformLength;
22848 - table->flags = flags;
22849 + table->dst_offset = 0;
22852 (FT_Char)( table->Tag >> 24 ),
22853 @@ -1969,6 +2004,7 @@
22857 + /* pre-zero pointers within in case of failure */
22861 @@ -1982,7 +2018,7 @@
22862 if ( FT_READ_ULONG( ttc_font->flavor ) )
22865 - if ( FT_NEW_ARRAY( ttc_font->table_indices, ttc_font->num_tables ) )
22866 + if ( FT_QNEW_ARRAY( ttc_font->table_indices, ttc_font->num_tables ) )
22870 @@ -2063,7 +2099,7 @@
22874 - file_offset = ROUND4(woff2.metaOffset + woff2.metaLength);
22879 @@ -2073,7 +2109,7 @@
22883 - file_offset = ROUND4(woff2.privOffset + woff2.privLength);
22888 @@ -2085,7 +2121,7 @@
22891 /* value -(N+1) requests information on index N */
22892 - if ( *face_instance_index < 0 )
22894 face_index--;
22897 @@ -2261,9 +2297,9 @@
22901 - if ( FT_REALLOC( sfnt,
22902 - (FT_ULong)( sfnt_size ),
22903 - (FT_ULong)( woff2.actual_sfnt_size ) ) )
22910 diff --git a/src/third_party/freetype/src/src/sfnt/sfwoff2.h b/src/third_party/freetype/src/src/sfn…
22912 --- a/src/third_party/freetype/src/src/sfnt/sfwoff2.h
22914 @@ -56,6 +56,7 @@ FT_BEGIN_HEADER
22922 diff --git a/src/third_party/freetype/src/src/sfnt/ttcmap.c b/src/third_party/freetype/src/src/sfnt…
22924 --- a/src/third_party/freetype/src/src/sfnt/ttcmap.c
22926 @@ -465,7 +465,7 @@
22930 - FT_UInt idx = (FT_UInt)(char_code & 0xFF);
22935 diff --git a/src/third_party/freetype/src/src/sfnt/ttcolr.c b/src/third_party/freetype/src/src/sfnt…
22937 --- a/src/third_party/freetype/src/src/sfnt/ttcolr.c
22939 @@ -857,10 +857,10 @@
22941 p = colr->clip_list;
22943 - /* limit points to the first byte after the end of the color table. */
22944 - /* Thus, in subsequent limit checks below we need to check whether the */
22945 - /* read pointer is strictly greater than a position offset */
22946 - /* by certain field sizes to the left of that position. */
22951 limit = (FT_Byte*)colr->table + colr->table_size;
22954 @@ -1054,7 +1054,7 @@
22956 p = iterator->p;
22958 - color_stop->stop_offset = FT_NEXT_SHORT( p );
22959 + color_stop->stop_offset = (FT_Fixed)FT_NEXT_SHORT( p ) << 2;
22961 color_stop->color.palette_index = FT_NEXT_USHORT( p );
22963 diff --git a/src/third_party/freetype/src/src/sfnt/ttkern.c b/src/third_party/freetype/src/src/sfnt…
22965 --- a/src/third_party/freetype/src/src/sfnt/ttkern.c
22967 @@ -190,10 +190,16 @@
22971 - FT_Byte* p = face->kern_table;
22972 - FT_Byte* p_limit = p + face->kern_table_size;
22977 + if ( !face->kern_table )
22980 + p = face->kern_table;
22981 + p_limit = p + face->kern_table_size;
22986 diff --git a/src/third_party/freetype/src/src/sfnt/ttmtx.c b/src/third_party/freetype/src/src/sfnt/…
22988 --- a/src/third_party/freetype/src/src/sfnt/ttmtx.c
22990 @@ -306,7 +306,7 @@
22994 - if ( var )
22995 + if ( var && face->blend )
22999 diff --git a/src/third_party/freetype/src/src/sfnt/ttsbit.c b/src/third_party/freetype/src/src/sfnt…
23001 --- a/src/third_party/freetype/src/src/sfnt/ttsbit.c
23003 @@ -172,17 +172,8 @@
23007 -#ifdef FT_DEBUG_LEVEL_TRACE
23008 - /* we currently don't support bit 1; however, it is better to */
23009 - /* draw at least something... */
23011 - {
23012 - FT_TRACE1(( "tt_face_load_sbit_strikes:"
23013 - " sbix overlay not supported yet\n" ));
23014 - FT_TRACE1(( " "
23015 - " expect bad rendering results\n" ));
23016 - }
23017 -#endif
23018 + face->root.face_flags |= FT_FACE_FLAG_SBIX_OVERLAY;
23022 @@ -1580,17 +1571,34 @@
23026 - FT_Short abearing;
23033 metrics->horiBearingX = (FT_Short)originOffsetX;
23034 - metrics->horiBearingY = (FT_Short)( -originOffsetY + metrics->height );
23035 + metrics->vertBearingX = (FT_Short)originOffsetX;
23037 + metrics->horiBearingY = (FT_Short)( originOffsetY + metrics->height );
23038 + metrics->vertBearingY = (FT_Short)originOffsetY;
23040 metrics->horiAdvance = (FT_UShort)( aadvance *
23041 face->root.size->metrics.x_ppem /
23042 face->header.Units_Per_EM );
23044 + if ( face->vertical_info )
23046 + else if ( face->os2.version != 0xFFFFU )
23047 + aadvance = (FT_UShort)FT_ABS( face->os2.sTypoAscender -
23048 + face->os2.sTypoDescender );
23050 + aadvance = (FT_UShort)FT_ABS( face->horizontal.Ascender -
23051 + face->horizontal.Descender );
23053 + metrics->vertAdvance = (FT_UShort)( aadvance *
23054 + face->root.size->metrics.x_ppem /
23055 + face->header.Units_Per_EM );
23059 diff --git a/src/third_party/freetype/src/src/sfnt/ttsvg.c b/src/third_party/freetype/src/src/sfnt/…
23061 --- a/src/third_party/freetype/src/src/sfnt/ttsvg.c
23063 @@ -39,11 +39,11 @@
23067 -#define SVG_TABLE_HEADER_SIZE 10U
23068 -#define SVG_DOCUMENT_RECORD_SIZE 12U
23069 -#define SVG_DOCUMENT_LIST_MINIMUM_SIZE 2U + SVG_DOCUMENT_RECORD_SIZE
23070 -#define SVG_MINIMUM_SIZE SVG_TABLE_HEADER_SIZE + \
23071 - SVG_DOCUMENT_LIST_MINIMUM_SIZE
23080 @@ -319,7 +319,7 @@
23084 - FT_Byte* uncomp_buffer;
23089 diff --git a/src/third_party/freetype/src/src/smooth/ftgrays.c b/src/third_party/freetype/src/src/s…
23091 --- a/src/third_party/freetype/src/src/smooth/ftgrays.c
23093 @@ -1909,10 +1909,10 @@ typedef ptrdiff_t FT_PtrDist;
23097 - gray_convert_glyph_inner( RAS_ARG,
23101 - int error;
23106 @@ -2004,7 +2004,7 @@ typedef ptrdiff_t FT_PtrDist;
23110 - error = gray_convert_glyph_inner( RAS_VAR, continued );
23115 diff --git a/src/third_party/freetype/src/src/truetype/ttdriver.c b/src/third_party/freetype/src/sr…
23117 --- a/src/third_party/freetype/src/src/truetype/ttdriver.c
23119 @@ -108,6 +108,23 @@
23123 + if ( !ft_strcmp( property_name, "TEMPORARY-enable-variable-colrv1" ) )
23131 + driver->enable_variable_colrv1 = *bv;
23143 @@ -507,19 +524,34 @@
23147 - (FT_Get_MM_Func) NULL, /* get_mm */
23148 - (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
23149 - (FT_Set_MM_Blend_Func) TT_Set_MM_Blend, /* set_mm_blend */
23150 - (FT_Get_MM_Blend_Func) TT_Get_MM_Blend, /* get_mm_blend */
23151 - (FT_Get_MM_Var_Func) TT_Get_MM_Var, /* get_mm_var */
23152 - (FT_Set_Var_Design_Func) TT_Set_Var_Design, /* set_var_design */
23153 - (FT_Get_Var_Design_Func) TT_Get_Var_Design, /* get_var_design */
23154 - (FT_Set_Instance_Func) TT_Set_Named_Instance, /* set_instance */
23155 - (FT_Set_MM_WeightVector_Func)NULL, /* set_mm_weightvector */
23156 - (FT_Get_MM_WeightVector_Func)NULL, /* get_mm_weightvector */
23157 -
23158 - (FT_Get_Var_Blend_Func) tt_get_var_blend, /* get_var_blend */
23159 - (FT_Done_Blend_Func) tt_done_blend /* done_blend */
23191 diff --git a/src/third_party/freetype/src/src/truetype/ttgload.c b/src/third_party/freetype/src/src…
23193 --- a/src/third_party/freetype/src/src/truetype/ttgload.c
23195 @@ -801,7 +801,7 @@
23199 - zone->n_points = (FT_UShort)load->outline.n_points -
23200 + zone->n_points = (FT_UShort)load->outline.n_points + 4 -
23202 zone->n_contours = load->outline.n_contours -
23204 @@ -970,11 +970,6 @@
23205 outline->points[n_points + 2] = loader->pp3;
23206 outline->points[n_points + 3] = loader->pp4;
23208 - outline->tags[n_points ] = 0;
23209 - outline->tags[n_points + 1] = 0;
23210 - outline->tags[n_points + 2] = 0;
23211 - outline->tags[n_points + 3] = 0;
23212 -
23216 @@ -985,24 +980,9 @@
23220 - error = TT_Vary_Apply_Glyph_Deltas( loader->face,
23221 - loader->glyph_index,
23224 - unrounded,
23225 - (FT_UInt)n_points );
23226 -
23227 - /* recalculate linear horizontal and vertical advances */
23228 - /* if we don't have HVAR and VVAR, respectively */
23229 -
23230 - /* XXX: change all FreeType modules to store `linear' and `vadvance' */
23231 - /* in 26.6 format before the `base' module scales them to 16.16 */
23232 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
23233 - loader->linear = FT_PIX_ROUND( unrounded[n_points - 3].x -
23234 - unrounded[n_points - 4].x ) / 64;
23235 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
23236 - loader->vadvance = FT_PIX_ROUND( unrounded[n_points - 1].x -
23237 - unrounded[n_points - 2].x ) / 64;
23238 -
23243 @@ -1014,7 +994,7 @@
23244 tt_prepare_zone( &loader->zone, &gloader->current, 0, 0 );
23246 FT_ARRAY_COPY( loader->zone.orus, loader->zone.cur,
23247 - loader->zone.n_points + 4 );
23248 + loader->zone.n_points );
23252 @@ -1104,8 +1084,8 @@
23256 - vec->x = ( FT_MulFix( u->x, x_scale ) + 32 ) >> 6;
23257 - vec->y = ( FT_MulFix( u->y, y_scale ) + 32 ) >> 6;
23258 + vec->x = ADD_LONG( FT_MulFix( u->x, x_scale ), 32 ) >> 6;
23259 + vec->y = ADD_LONG( FT_MulFix( u->y, y_scale ), 32 ) >> 6;
23263 @@ -1156,11 +1136,7 @@
23266 if ( IS_HINTED( loader->load_flags ) )
23267 - {
23268 - loader->zone.n_points += 4;
23269 -
23271 - }
23275 @@ -1228,8 +1204,8 @@
23276 p1 = gloader->base.outline.points + k;
23277 p2 = gloader->base.outline.points + l;
23279 - x = p1->x - p2->x;
23280 - y = p1->y - p2->y;
23281 + x = SUB_LONG( p1->x, p2->x );
23282 + y = SUB_LONG( p1->y, p2->y );
23286 @@ -1373,11 +1349,6 @@
23287 outline->points[outline->n_points + 2] = loader->pp3;
23288 outline->points[outline->n_points + 3] = loader->pp4;
23290 - outline->tags[outline->n_points ] = 0;
23291 - outline->tags[outline->n_points + 1] = 0;
23292 - outline->tags[outline->n_points + 2] = 0;
23293 - outline->tags[outline->n_points + 3] = 0;
23294 -
23298 @@ -1436,11 +1407,9 @@
23302 - for ( i = 0; i < loader->zone.n_points; i++ )
23303 + for ( i = 0; i < loader->zone.n_points - 4U; i++ )
23304 loader->zone.tags[i] &= ~FT_CURVE_TAG_TOUCH_BOTH;
23306 - loader->zone.n_points += 4;
23307 -
23311 @@ -1761,57 +1730,29 @@
23315 - char tags[4] = { 1, 1, 1, 1 };
23316 - short contours[4] = { 0, 1, 2, 3 };
23323 - points[0].x = loader->pp1.x;
23324 - points[0].y = loader->pp1.y;
23325 - points[1].x = loader->pp2.x;
23326 - points[1].y = loader->pp2.y;
23327 -
23328 - points[2].x = loader->pp3.x;
23329 - points[2].y = loader->pp3.y;
23330 - points[3].x = loader->pp4.x;
23331 - points[3].y = loader->pp4.y;
23332 + points[0] = loader->pp1;
23333 + points[1] = loader->pp2;
23334 + points[2] = loader->pp3;
23335 + points[3] = loader->pp4;
23337 - outline.n_points = 4;
23338 - outline.n_contours = 4;
23342 - outline.tags = tags;
23343 - outline.contours = contours;
23348 - error = TT_Vary_Apply_Glyph_Deltas( loader->face,
23349 - glyph_index,
23352 - unrounded,
23353 - (FT_UInt)outline.n_points );
23357 -
23358 - loader->pp1.x = points[0].x;
23359 - loader->pp1.y = points[0].y;
23360 - loader->pp2.x = points[1].x;
23361 - loader->pp2.y = points[1].y;
23362 -
23363 - loader->pp3.x = points[2].x;
23364 - loader->pp3.y = points[2].y;
23365 - loader->pp4.x = points[3].x;
23366 - loader->pp4.y = points[3].y;
23367 -
23368 - /* recalculate linear horizontal and vertical advances */
23369 - /* if we don't have HVAR and VVAR, respectively */
23370 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
23371 - loader->linear = FT_PIX_ROUND( unrounded[1].x -
23372 - unrounded[0].x ) / 64;
23373 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
23374 - loader->vadvance = FT_PIX_ROUND( unrounded[3].x -
23375 - unrounded[2].x ) / 64;
23379 @@ -1959,17 +1900,16 @@
23383 - outline.n_points = (short)( gloader->current.num_subglyphs + 4 );
23384 - outline.n_contours = outline.n_points;
23391 - if ( FT_NEW_ARRAY( points, outline.n_points ) ||
23392 - FT_NEW_ARRAY( tags, outline.n_points ) ||
23393 - FT_NEW_ARRAY( contours, outline.n_points ) ||
23394 - FT_NEW_ARRAY( unrounded, outline.n_points ) )
23401 subglyph = gloader->current.subglyphs;
23402 @@ -1985,28 +1925,10 @@
23406 - points[i].x = loader->pp1.x;
23407 - points[i].y = loader->pp1.y;
23408 - tags[i] = 1;
23409 - contours[i] = i;
23410 -
23411 - i++;
23412 - points[i].x = loader->pp2.x;
23413 - points[i].y = loader->pp2.y;
23414 - tags[i] = 1;
23415 - contours[i] = i;
23416 -
23417 - i++;
23418 - points[i].x = loader->pp3.x;
23419 - points[i].y = loader->pp3.y;
23420 - tags[i] = 1;
23421 - contours[i] = i;
23422 -
23423 - i++;
23424 - points[i].x = loader->pp4.x;
23425 - points[i].y = loader->pp4.y;
23426 - tags[i] = 1;
23427 - contours[i] = i;
23428 + points[i++] = loader->pp1;
23429 + points[i++] = loader->pp2;
23430 + points[i++] = loader->pp3;
23431 + points[i ] = loader->pp4;
23435 @@ -2014,12 +1936,9 @@
23439 - if ( FT_SET_ERROR( TT_Vary_Apply_Glyph_Deltas(
23440 - face,
23441 - glyph_index,
23442 - &outline,
23443 - unrounded,
23444 - (FT_UInt)outline.n_points ) ) )
23450 subglyph = gloader->current.subglyphs;
23451 @@ -2033,27 +1952,6 @@
23455 - loader->pp1.x = points[i + 0].x;
23456 - loader->pp1.y = points[i + 0].y;
23457 - loader->pp2.x = points[i + 1].x;
23458 - loader->pp2.y = points[i + 1].y;
23459 -
23460 - loader->pp3.x = points[i + 2].x;
23461 - loader->pp3.y = points[i + 2].y;
23462 - loader->pp4.x = points[i + 3].x;
23463 - loader->pp4.y = points[i + 3].y;
23464 -
23465 - /* recalculate linear horizontal and vertical advances */
23466 - /* if we don't have HVAR and VVAR, respectively */
23467 - if ( !( face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
23468 - loader->linear =
23469 - FT_PIX_ROUND( unrounded[outline.n_points - 3].x -
23470 - unrounded[outline.n_points - 4].x ) / 64;
23471 - if ( !( face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
23472 - loader->vadvance =
23473 - FT_PIX_ROUND( unrounded[outline.n_points - 1].x -
23474 - unrounded[outline.n_points - 2].x ) / 64;
23475 -
23479 @@ -2255,7 +2153,7 @@
23480 if ( loader->widthp )
23481 glyph->metrics.horiAdvance = loader->widthp[glyph_index] * 64;
23483 - glyph->metrics.horiAdvance = SUB_LONG(loader->pp2.x, loader->pp1.x);
23484 + glyph->metrics.horiAdvance = SUB_LONG( loader->pp2.x, loader->pp1.x );
23487 glyph->metrics.width = SUB_LONG( bbox.xMax, bbox.xMin );
23488 @@ -2897,8 +2795,12 @@
23492 - if ( FT_IS_SCALABLE( glyph->face ) )
23493 + if ( FT_IS_SCALABLE( glyph->face ) ||
23494 + FT_HAS_SBIX( glyph->face ) )
23496 + TT_Face face = (TT_Face)glyph->face;
23502 @@ -2906,6 +2808,35 @@
23503 glyph->linearHoriAdvance = loader.linear;
23504 glyph->linearVertAdvance = loader.vadvance;
23509 + /* glyph bounding box, also taking the left-side bearing */
23511 + if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX &&
23531 + glyph->bitmap_left += FT_MulFix( bitmap_left, x_scale ) >> 6;
23532 + glyph->bitmap_top += FT_MulFix( bitmap_top, y_scale ) >> 6;
23537 if ( !glyph->metrics.horiAdvance && glyph->linearHoriAdvance )
23538 @@ -2972,6 +2903,9 @@
23542 + glyph->linearHoriAdvance = advanceX;
23543 + glyph->linearVertAdvance = advanceY;
23546 glyph->face->size->metrics.x_ppem,
23547 glyph->face->units_per_EM );
23548 diff --git a/src/third_party/freetype/src/src/truetype/ttgxvar.c b/src/third_party/freetype/src/src…
23550 --- a/src/third_party/freetype/src/src/truetype/ttgxvar.c
23552 @@ -438,8 +438,8 @@
23556 - static FT_Error
23557 - ft_var_load_item_variation_store( TT_Face face,
23563 @@ -465,7 +465,7 @@
23567 - FT_TRACE2(( "ft_var_load_item_variation_store: bad store format %d\n",
23572 @@ -479,7 +479,17 @@
23573 /* we need at least one entry in `itemStore->varData' */
23574 if ( !itemStore->dataCount )
23576 - FT_TRACE2(( "ft_var_load_item_variation_store: missing varData\n" ));
23584 + if ( itemStore->dataCount == 0xFFFFU )
23591 @@ -505,7 +515,7 @@
23593 if ( itemStore->axisCount != (FT_Long)blend->mmvar->num_axis )
23595 - FT_TRACE2(( "ft_var_load_item_variation_store:"
23600 @@ -516,7 +526,7 @@
23602 if ( itemStore->regionCount >= 32768U )
23604 - FT_TRACE2(( "ft_var_load_item_variation_store:"
23609 @@ -621,44 +631,25 @@
23610 varData->regionIdxCount * varData->itemCount ) )
23613 - /* the delta set is stored as a 2-dimensional array of shorts */
23614 - if ( long_words )
23615 - {
23616 - /* new in OpenType 1.9, currently for 'COLR' table only; */
23617 - /* the deltas are interpreted as 16.16 fixed-point scaling values */
23618 -
23619 - /* not supported yet */
23620 -
23621 - error = FT_THROW( Invalid_Table );
23622 - goto Exit;
23623 - }
23624 - else
23625 + for ( j = 0; j < varData->itemCount * varData->regionIdxCount; )
23627 - for ( j = 0; j < varData->itemCount * varData->regionIdxCount; )
23631 - {
23632 - /* read the short deltas */
23633 - FT_Short delta;
23634 -
23635 -
23636 - if ( FT_READ_SHORT( delta ) )
23637 + if ( FT_READ_LONG( varData->deltaSet[j] ) )
23639 -
23640 - varData->deltaSet[j] = delta;
23641 - }
23642 -
23643 for ( ; k < varData->regionIdxCount; k++, j++ )
23644 - {
23645 - /* read the (signed) byte deltas */
23646 - FT_Char delta;
23647 -
23648 -
23649 - if ( FT_READ_CHAR( delta ) )
23650 + if ( FT_READ_SHORT( varData->deltaSet[j] ) )
23656 + if ( FT_READ_SHORT( varData->deltaSet[j] ) )
23658 + for ( ; k < varData->regionIdxCount; k++, j++ )
23659 + if ( FT_READ_CHAR( varData->deltaSet[j] ) )
23661 -
23662 - varData->deltaSet[j] = delta;
23663 - }
23667 @@ -670,8 +661,8 @@
23671 - static FT_Error
23672 - ft_var_load_delta_set_index_mapping( TT_Face face,
23678 @@ -728,7 +719,7 @@
23680 if ( map->mapCount * entrySize > table_len )
23682 - FT_TRACE1(( "ft_var_load_delta_set_index_mapping:"
23684 " invalid number of delta-set index mappings\n" ));
23687 @@ -758,6 +749,16 @@
23695 + map->outerIndex[i] = 0xFFFFU;
23696 + map->innerIndex[i] = 0xFFFFU;
23703 if ( outerIndex >= itemStore->dataCount )
23704 @@ -887,7 +888,7 @@
23705 table = blend->hvar_table;
23708 - error = ft_var_load_item_variation_store(
23712 &table->itemStore );
23713 @@ -896,7 +897,7 @@
23717 - error = ft_var_load_delta_set_index_mapping(
23721 &table->widthMap,
23722 @@ -938,20 +939,28 @@
23726 - static FT_Int
23727 - ft_var_get_item_delta( TT_Face face,
23734 - GX_ItemVarData varData;
23735 - FT_Short* deltaSet;
23737 + FT_Memory memory = stream->memory;
23740 - FT_UInt master, j;
23741 - FT_Fixed netAdjustment = 0; /* accumulated adjustment */
23742 - FT_Fixed scaledDelta;
23743 - FT_Fixed delta;
23759 @@ -959,6 +968,9 @@
23760 varData = &itemStore->varData[outerIndex];
23761 deltaSet = &varData->deltaSet[varData->regionIdxCount * innerIndex];
23763 + if ( FT_QNEW_ARRAY( scalars, varData->regionIdxCount ) )
23767 for ( master = 0; master < varData->regionIdxCount; master++ )
23769 @@ -1008,18 +1020,33 @@
23771 axis->endCoord - face->blend->normalizedcoords[j],
23772 axis->endCoord - axis->peakCoord );
23773 - } /* per-axis loop */
23775 - /* get the scaled delta for this region */
23776 - delta = FT_intToFixed( deltaSet[master] );
23777 - scaledDelta = FT_MulFix( scalar, delta );
23778 + } /* per-axis loop */
23780 - /* accumulate the adjustments from each region */
23781 - netAdjustment = netAdjustment + scaledDelta;
23784 } /* per-region loop */
23786 - return FT_fixedToInt( netAdjustment );
23790 …ps://docs.microsoft.com/en-us/typography/opentype/spec/otvarcommonformats#item-variation-store-hea…
23792 + * `Fixed` is a 32-bit (16.16) type and, in the general case, requires
23793 + * 32-bit deltas. As described above, the `DeltaSet` record can
23794 + * accommodate deltas that are, logically, either 16-bit or 32-bit.
23796 + * is treated like a 32-bit integer.
23798 + * `FT_MulAddFix` internally uses 64-bit precision; it thus can handle
23799 + * deltas ranging from small 8-bit to large 32-bit values that are
23802 + returnValue = FT_MulAddFix( scalars, deltaSet, varData->regionIdxCount );
23810 @@ -1128,19 +1155,22 @@
23814 - delta = ft_var_get_item_delta( face,
23816 &table->itemStore,
23820 - FT_TRACE5(( "%s value %d adjusted by %d unit%s (%s)\n",
23821 - vertical ? "vertical height" : "horizontal width",
23822 - *avalue,
23823 - delta,
23824 - delta == 1 ? "" : "s",
23825 - vertical ? "VVAR" : "HVAR" ));
23826 -
23827 - *avalue += delta;
23842 @@ -1307,7 +1337,7 @@
23846 - error = ft_var_load_item_variation_store(
23850 &blend->mvar_table->itemStore );
23851 @@ -1332,6 +1362,13 @@
23852 value->outerIndex = FT_GET_USHORT();
23853 value->innerIndex = FT_GET_USHORT();
23856 + if ( value->outerIndex == 0xFFFFU && value->innerIndex == 0xFFFFU )
23862 if ( value->outerIndex >= itemStore->dataCount ||
23863 value->innerIndex >= itemStore->varData[value->outerIndex]
23865 @@ -1422,12 +1459,12 @@
23869 - delta = ft_var_get_item_delta( face,
23871 &blend->mvar_table->itemStore,
23872 value->outerIndex,
23873 value->innerIndex );
23875 - if ( p )
23879 (FT_Char)( value->tag >> 24 ),
23880 @@ -3813,20 +3850,12 @@
23884 - * @Input:
23885 - * face ::
23886 - * A handle to the target face object.
23887 - *
23888 - * glyph_index ::
23889 - * The index of the glyph being modified.
23890 - *
23891 - * n_points ::
23892 - * The number of the points in the glyph, including
23893 - * phantom points.
23894 - *
23900 - * The outline to change.
23905 @@ -3837,15 +3866,16 @@
23909 - TT_Vary_Apply_Glyph_Deltas( TT_Face face,
23910 - FT_UInt glyph_index,
23913 - FT_Vector* unrounded,
23914 - FT_UInt n_points )
23918 + TT_Face face = loader->face;
23919 FT_Stream stream = face->root.stream;
23920 FT_Memory memory = stream->memory;
23921 + FT_UInt glyph_index = loader->glyph_index;
23922 + FT_UInt n_points = (FT_UInt)outline->n_points + 4;
23926 @@ -4063,36 +4093,8 @@
23930 - if ( j < n_points - 4 )
23931 - {
23932 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23933 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23934 - }
23935 - else
23936 - {
23937 - /* To avoid double adjustment of advance width or height, */
23938 - /* adjust phantom points only if there is no HVAR or VVAR */
23939 - /* support, respectively. */
23940 - if ( j == ( n_points - 4 ) &&
23941 - !( face->variation_support &
23942 - TT_FACE_FLAG_VAR_LSB ) )
23943 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23944 -
23945 - else if ( j == ( n_points - 3 ) &&
23946 - !( face->variation_support &
23947 - TT_FACE_FLAG_VAR_HADVANCE ) )
23948 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23949 -
23950 - else if ( j == ( n_points - 2 ) &&
23951 - !( face->variation_support &
23952 - TT_FACE_FLAG_VAR_TSB ) )
23953 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23954 -
23955 - else if ( j == ( n_points - 1 ) &&
23956 - !( face->variation_support &
23957 - TT_FACE_FLAG_VAR_VADVANCE ) )
23958 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23959 - }
23965 @@ -4165,36 +4167,8 @@
23966 FT_Pos point_delta_y = points_out[j].y - points_org[j].y;
23969 - if ( j < n_points - 4 )
23970 - {
23971 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23972 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23973 - }
23974 - else
23975 - {
23976 - /* To avoid double adjustment of advance width or height, */
23977 - /* adjust phantom points only if there is no HVAR or VVAR */
23978 - /* support, respectively. */
23979 - if ( j == ( n_points - 4 ) &&
23980 - !( face->variation_support &
23981 - TT_FACE_FLAG_VAR_LSB ) )
23982 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23983 -
23984 - else if ( j == ( n_points - 3 ) &&
23985 - !( face->variation_support &
23986 - TT_FACE_FLAG_VAR_HADVANCE ) )
23987 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23988 -
23989 - else if ( j == ( n_points - 2 ) &&
23990 - !( face->variation_support &
23991 - TT_FACE_FLAG_VAR_TSB ) )
23992 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23993 -
23994 - else if ( j == ( n_points - 1 ) &&
23995 - !( face->variation_support &
23996 - TT_FACE_FLAG_VAR_VADVANCE ) )
23997 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23998 - }
24004 @@ -4232,6 +4206,24 @@
24011 + if ( face->variation_support & TT_FACE_FLAG_VAR_HADVANCE )
24013 + point_deltas_x[n_points - 4] = 0;
24014 + point_deltas_y[n_points - 4] = 0;
24015 + point_deltas_x[n_points - 3] = 0;
24016 + point_deltas_y[n_points - 3] = 0;
24018 + if ( face->variation_support & TT_FACE_FLAG_VAR_VADVANCE )
24020 + point_deltas_x[n_points - 2] = 0;
24021 + point_deltas_y[n_points - 2] = 0;
24022 + point_deltas_x[n_points - 1] = 0;
24023 + point_deltas_y[n_points - 1] = 0;
24029 @@ -4241,6 +4233,24 @@
24030 outline->points[i].y += FT_fixedToInt( point_deltas_y[i] );
24036 + if ( !( face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
24038 + loader->pp1 = outline->points[n_points - 4];
24039 + loader->pp2 = outline->points[n_points - 3];
24040 + loader->linear = FT_PIX_ROUND( unrounded[n_points - 3].x -
24041 + unrounded[n_points - 4].x ) / 64;
24043 + if ( !( face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
24045 + loader->pp3 = outline->points[n_points - 2];
24046 + loader->pp4 = outline->points[n_points - 1];
24047 + loader->vadvance = FT_PIX_ROUND( unrounded[n_points - 1].y -
24048 + unrounded[n_points - 2].y ) / 64;
24054 @@ -4305,8 +4315,8 @@
24058 - static void
24059 - ft_var_done_item_variation_store( TT_Face face,
24065 @@ -4334,6 +4344,18 @@
24076 + FT_FREE( deltaSetIdxMap->innerIndex );
24077 + FT_FREE( deltaSetIdxMap->outerIndex );
24084 @@ -4371,27 +4393,27 @@
24086 if ( blend->hvar_table )
24088 - ft_var_done_item_variation_store( face,
24090 &blend->hvar_table->itemStore );
24092 - FT_FREE( blend->hvar_table->widthMap.innerIndex );
24093 - FT_FREE( blend->hvar_table->widthMap.outerIndex );
24095 + &blend->hvar_table->widthMap );
24096 FT_FREE( blend->hvar_table );
24099 if ( blend->vvar_table )
24101 - ft_var_done_item_variation_store( face,
24103 &blend->vvar_table->itemStore );
24105 - FT_FREE( blend->vvar_table->widthMap.innerIndex );
24106 - FT_FREE( blend->vvar_table->widthMap.outerIndex );
24108 + &blend->vvar_table->widthMap );
24109 FT_FREE( blend->vvar_table );
24112 if ( blend->mvar_table )
24114 - ft_var_done_item_variation_store( face,
24116 &blend->mvar_table->itemStore );
24118 FT_FREE( blend->mvar_table->values );
24119 diff --git a/src/third_party/freetype/src/src/truetype/ttgxvar.h b/src/third_party/freetype/src/src…
24121 --- a/src/third_party/freetype/src/src/truetype/ttgxvar.h
24123 @@ -62,57 +62,6 @@ FT_BEGIN_HEADER
24127 - typedef struct GX_ItemVarDataRec_
24128 - {
24129 - FT_UInt itemCount; /* number of delta sets per item */
24130 - FT_UInt regionIdxCount; /* number of region indices in this data */
24131 - FT_UInt* regionIndices; /* array of `regionCount' indices; */
24132 - /* these index `varRegionList' */
24133 - FT_Short* deltaSet; /* array of `itemCount' deltas */
24134 - /* use `innerIndex' for this array */
24135 -
24136 - } GX_ItemVarDataRec, *GX_ItemVarData;
24137 -
24138 -
24139 - /* contribution of one axis to a region */
24140 - typedef struct GX_AxisCoordsRec_
24141 - {
24142 - FT_Fixed startCoord;
24143 - FT_Fixed peakCoord; /* zero means no effect (factor = 1) */
24144 - FT_Fixed endCoord;
24145 -
24146 - } GX_AxisCoordsRec, *GX_AxisCoords;
24147 -
24148 -
24149 - typedef struct GX_VarRegionRec_
24150 - {
24151 - GX_AxisCoords axisList; /* array of axisCount records */
24152 -
24153 - } GX_VarRegionRec, *GX_VarRegion;
24154 -
24155 -
24156 - /* item variation store */
24157 - typedef struct GX_ItemVarStoreRec_
24158 - {
24159 - FT_UInt dataCount;
24160 - GX_ItemVarData varData; /* array of dataCount records; */
24161 - /* use `outerIndex' for this array */
24162 - FT_UShort axisCount;
24163 - FT_UInt regionCount; /* total number of regions defined */
24164 - GX_VarRegion varRegionList;
24165 -
24166 - } GX_ItemVarStoreRec, *GX_ItemVarStore;
24167 -
24168 -
24169 - typedef struct GX_DeltaSetIdxMapRec_
24170 - {
24171 - FT_ULong mapCount;
24172 - FT_UInt* outerIndex; /* indices to item var data */
24173 - FT_UInt* innerIndex; /* indices to delta set */
24174 -
24175 - } GX_DeltaSetIdxMapRec, *GX_DeltaSetIdxMap;
24176 -
24177 -
24181 @@ -412,11 +361,9 @@ FT_BEGIN_HEADER
24185 - TT_Vary_Apply_Glyph_Deltas( TT_Face face,
24186 - FT_UInt glyph_index,
24189 - FT_Vector* unrounded,
24190 - FT_UInt n_points );
24195 @@ -431,6 +378,34 @@ FT_BEGIN_HEADER
24230 diff --git a/src/third_party/freetype/src/src/truetype/ttinterp.c b/src/third_party/freetype/src/sr…
24232 --- a/src/third_party/freetype/src/src/truetype/ttinterp.c
24234 @@ -516,14 +516,6 @@
24235 exec->GS.round_state = 1;
24236 exec->GS.loop = 1;
24238 -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
24239 - exec->iup_called = FALSE;
24240 -#endif
24241 -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
24242 - exec->iupx_called = FALSE;
24243 - exec->iupy_called = FALSE;
24244 -#endif
24245 -
24248 exec->top = 0;
24249 @@ -7847,6 +7839,15 @@
24251 Compute_Round( exc, (FT_Byte)exc->GS.round_state );
24255 + exc->iup_called = FALSE;
24258 + exc->iupx_called = FALSE;
24259 + exc->iupy_called = FALSE;
24264 exc->opcode = exc->code[exc->IP];
24265 @@ -8569,7 +8570,8 @@
24269 - if ( ++ins_counter > TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES ) {
24272 exc->error = FT_THROW( Execution_Too_Long );
24275 diff --git a/src/third_party/freetype/src/src/truetype/ttobjs.c b/src/third_party/freetype/src/src/…
24277 --- a/src/third_party/freetype/src/src/truetype/ttobjs.c
24279 @@ -727,7 +727,8 @@
24283 - if ( FT_IS_SCALABLE( ttface ) )
24288 if ( !ttface->internal->incremental_interface )
24289 diff --git a/src/third_party/freetype/src/src/truetype/ttobjs.h b/src/third_party/freetype/src/src/…
24291 --- a/src/third_party/freetype/src/src/truetype/ttobjs.h
24293 @@ -337,6 +337,8 @@ FT_BEGIN_HEADER
24302 diff --git a/src/third_party/freetype/src/src/type1/t1afm.c b/src/third_party/freetype/src/src/type…
24304 --- a/src/third_party/freetype/src/src/type1/t1afm.c
24306 @@ -203,7 +203,7 @@
24307 kp->index1 = FT_Get_Char_Index( t1_face, p[0] );
24308 kp->index2 = FT_Get_Char_Index( t1_face, p[1] );
24310 - kp->x = (FT_Int)FT_PEEK_SHORT_LE(p + 2);
24311 + kp->x = (FT_Int)FT_PEEK_SHORT_LE( p + 2 );
24312 kp->y = 0;
24315 diff --git a/src/third_party/freetype/src/src/type1/t1driver.c b/src/third_party/freetype/src/src/t…
24317 --- a/src/third_party/freetype/src/src/type1/t1driver.c
24319 @@ -121,19 +121,30 @@
24323 - (FT_Get_MM_Func) T1_Get_Multi_Master, /* get_mm */
24324 - (FT_Set_MM_Design_Func) T1_Set_MM_Design, /* set_mm_design */
24325 - (FT_Set_MM_Blend_Func) T1_Set_MM_Blend, /* set_mm_blend */
24326 - (FT_Get_MM_Blend_Func) T1_Get_MM_Blend, /* get_mm_blend */
24327 - (FT_Get_MM_Var_Func) T1_Get_MM_Var, /* get_mm_var */
24328 - (FT_Set_Var_Design_Func) T1_Set_Var_Design, /* set_var_design */
24329 - (FT_Get_Var_Design_Func) T1_Get_Var_Design, /* get_var_design */
24330 - (FT_Set_Instance_Func) T1_Reset_MM_Blend, /* set_instance */
24331 - (FT_Set_MM_WeightVector_Func)T1_Set_MM_WeightVector, /* set_mm_weightvector */
24332 - (FT_Get_MM_WeightVector_Func)T1_Get_MM_WeightVector, /* get_mm_weightvector */
24333 -
24334 - (FT_Get_Var_Blend_Func) NULL, /* get_var_blend */
24335 - (FT_Done_Blend_Func) T1_Done_Blend /* done_blend */
24363 diff --git a/src/third_party/freetype/src/src/type1/t1load.c b/src/third_party/freetype/src/src/typ…
24365 --- a/src/third_party/freetype/src/src/type1/t1load.c
24367 @@ -2057,9 +2057,9 @@
24368 name_table->elements[n][len] = '\0';
24371 - if ( *cur == '.' &&
24374 - (const char*)(name_table->elements[n]) ) == 0 )
24375 + (const char*)( name_table->elements[n] ) ) == 0 )
24379 @@ -2331,8 +2331,8 @@
24380 /* in valid Type 1 fonts we don't see `RD' or `-|' directly */
24383 - else if ( *cur == 'R' && cur + 6 < limit && *(cur + 1) == 'D' &&
24384 - have_integer )
24390 @@ -2344,8 +2344,8 @@
24394 - else if ( *cur == '-' && cur + 6 < limit && *(cur + 1) == '|' &&
24395 - have_integer )
24396 + else if ( *cur == '-' && cur + 6 < limit && *( cur + 1 ) == '|' &&
24401 diff --git a/src/third_party/freetype/src/src/type1/t1parse.c b/src/third_party/freetype/src/src/ty…
24403 --- a/src/third_party/freetype/src/src/type1/t1parse.c
24405 @@ -330,50 +330,25 @@
24409 - /* first of all, look at the `eexec' keyword */
24410 + /* First look for the `eexec' keyword. Ensure `eexec' is real -- */
24413 FT_Byte* cur = parser->base_dict;
24414 FT_Byte* limit = cur + parser->base_len;
24419 - Again:
24420 - for (;;)
24421 - {
24422 - if ( cur[0] == 'e' &&
24423 - cur + 9 < limit ) /* 9 = 5 letters for `eexec' + */
24424 - /* whitespace + 4 chars */
24425 - {
24426 - if ( cur[1] == 'e' &&
24427 - cur[2] == 'x' &&
24428 - cur[3] == 'e' &&
24429 - cur[4] == 'c' )
24430 - break;
24431 - }
24432 - cur++;
24433 - if ( cur >= limit )
24434 - {
24435 - FT_ERROR(( "T1_Get_Private_Dict:"
24436 - " could not find `eexec' keyword\n" ));
24437 - error = FT_THROW( Invalid_File_Format );
24438 - goto Exit;
24439 - }
24440 - }
24441 -
24442 - /* check whether `eexec' was real -- it could be in a comment */
24443 - /* or string (as e.g. in u003043t.gsf from ghostscript) */
24444 -
24445 parser->root.cursor = parser->base_dict;
24446 - /* set limit to `eexec' + whitespace + 4 characters */
24447 - parser->root.limit = cur + 10;
24448 + parser->root.limit = parser->base_dict + parser->base_len;
24450 cur = parser->root.cursor;
24451 limit = parser->root.limit;
24455 - if ( cur[0] == 'e' &&
24456 - cur + 5 < limit )
24462 @@ -389,21 +364,9 @@
24463 cur = parser->root.cursor;
24466 - /* we haven't found the correct `eexec'; go back and continue */
24467 - /* searching */
24468 -
24469 - cur = limit;
24470 - limit = parser->base_dict + parser->base_len;
24471 -
24472 - if ( cur >= limit )
24473 - {
24474 - FT_ERROR(( "T1_Get_Private_Dict:"
24475 - " premature end in private dictionary\n" ));
24476 - error = FT_THROW( Invalid_File_Format );
24477 - goto Exit;
24478 - }
24479 -
24480 - goto Again;
24486 /* dictionary. We overwrite the base dictionary for disk-based */
24487 diff --git a/src/third_party/freetype/src/src/type42/t42objs.c b/src/third_party/freetype/src/src/t…
24489 --- a/src/third_party/freetype/src/src/type42/t42objs.c
24491 @@ -148,7 +148,7 @@
24495 - FT_FREE(face->ttf_data);
24496 + FT_FREE( face->ttf_data );
24497 face->ttf_size = 0;
24500 diff --git a/src/third_party/freetype/src/src/type42/t42parse.c b/src/third_party/freetype/src/src/…
24502 --- a/src/third_party/freetype/src/src/type42/t42parse.c
24504 @@ -92,7 +92,7 @@
24508 - T1_FIELD_BBOX("FontBBox", xMin, 0 )
24513 @@ -1008,9 +1008,9 @@
24514 name_table->elements[n][len] = '\0';
24517 - if ( *cur == '.' &&
24520 - (const char*)(name_table->elements[n]) ) == 0 )
24521 + (const char*)( name_table->elements[n] ) ) == 0 )
24525 diff --git a/src/third_party/freetype/src/src/winfonts/winfnt.c b/src/third_party/freetype/src/src/…
24527 --- a/src/third_party/freetype/src/src/winfonts/winfnt.c
24529 @@ -489,7 +489,7 @@
24533 - if ( !(dir_entry1.offset & 0x80000000UL ) /* DataIsDirectory */ )
24538 @@ -513,7 +513,7 @@
24542 - if ( !(dir_entry2.offset & 0x80000000UL ) /* DataIsDirectory */ )
24547 diff --git a/src/third_party/freetype/src/subprojects/harfbuzz.wrap b/src/third_party/freetype/src/…
24550 --- /dev/null
24552 @@ -0,0 +1,12 @@
24553 +[wrap-file]
24554 +directory = harfbuzz-4.3.0
24556 +source_url = https://github.com/harfbuzz/harfbuzz/releases/download/4.3.0/harfbuzz-4.3.0.tar.xz
24557 +source_filename = harfbuzz-4.3.0.tar.xz
24562 +harfbuzz-subset = libharfbuzz_subset_dep
24563 +harfbuzz-icu = libharfbuzz_icu_dep
24564 +harfbuzz-gobject = libharfbuzz_gobject_dep
24565 diff --git a/src/third_party/freetype/src/subprojects/zlib.wrap b/src/third_party/freetype/src/subp…
24567 --- a/src/third_party/freetype/src/subprojects/zlib.wrap
24569 @@ -1,11 +1,11 @@
24570 [wrap-file]
24571 -directory = zlib-1.2.11
24572 -source_url = http://zlib.net/fossils/zlib-1.2.11.tar.gz
24573 -source_filename = zlib-1.2.11.tar.gz
24574 -source_hash = c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
24575 -patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch
24576 -patch_filename = zlib-1.2.11-5-wrap.zip
24577 -patch_hash = 728c8e24acbc2e6682fbd950fec39e2fc77528af361adb87259f8a8511434004
24578 +directory = zlib-1.2.12
24579 +source_url = http://zlib.net/fossils/zlib-1.2.12.tar.gz
24580 +source_filename = zlib-1.2.12.tar.gz
24582 +patch_filename = zlib_1.2.12-1_patch.zip
24583 +patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.2.12-1/get_patch
24588 diff --git a/src/third_party/harfbuzz-ng/BUILD.gn b/src/third_party/harfbuzz-ng/BUILD.gn
24590 --- a/src/third_party/harfbuzz-ng/BUILD.gn
24591 +++ b/src/third_party/harfbuzz-ng/BUILD.gn
24592 @@ -91,6 +91,7 @@ if (use_system_harfbuzz) {
24593 "src/src/hb-buffer-deserialize-json.hh",
24594 "src/src/hb-buffer-deserialize-text.hh",
24595 "src/src/hb-buffer-serialize.cc",
24596 + "src/src/hb-buffer-verify.cc",
24597 "src/src/hb-buffer.cc",
24598 "src/src/hb-buffer.hh",
24599 "src/src/hb-cache.hh",
24600 @@ -118,7 +119,6 @@ if (use_system_harfbuzz) {
24601 "src/src/hb-map.cc",
24602 "src/src/hb-map.hh",
24603 "src/src/hb-meta.hh",
24604 - "src/src/hb-ms-feature-ranges.cc",
24605 "src/src/hb-ms-feature-ranges.hh",
24606 "src/src/hb-mutex.hh",
24607 "src/src/hb-null.hh",
24608 @@ -256,6 +256,8 @@ if (use_system_harfbuzz) {
24609 "src/src/hb-subset-input.hh",
24610 "src/src/hb-subset-plan.cc",
24611 "src/src/hb-subset-plan.hh",
24612 + "src/src/hb-subset-repacker.cc",
24613 + "src/src/hb-subset-repacker.h",
24614 "src/src/hb-subset.cc",
24615 "src/src/hb-subset.hh",
24616 "src/src/hb-ucd-table.hh",
24617 @@ -312,11 +314,6 @@ if (use_system_harfbuzz) {
24621 - # TODO(https://crbug.com/992390): Don't use the HarfBuzz metrics
24622 - # implementation, as we're retrieving metrics from Skia. Consider using this
24623 - # implementation at least for vertical metrics.
24624 - "HB_NO_METRICS",
24625 -
24629 @@ -324,6 +321,15 @@ if (use_system_harfbuzz) {
24644 # stricter warning under -Wfoowarning-subgroup. HarfBuzz pragma-enables
24645 @@ -352,15 +358,17 @@ if (use_system_harfbuzz) {
24649 -
24653 - # load harfbuzz like pango (see https://crbug.com/1146397), so include
24654 - # metrics symbols to prevent pango from using the system library.
24658 + # is always disabled, due to
24659 + # https://github.com/harfbuzz/harfbuzz/issues/3482 - if that changes
24663 - defines -= [ "HB_NO_METRICS" ]
24667 diff --git a/src/third_party/harfbuzz-ng/README.chromium b/src/third_party/harfbuzz-ng/README.chrom…
24669 --- a/src/third_party/harfbuzz-ng/README.chromium
24670 +++ b/src/third_party/harfbuzz-ng/README.chromium
24671 @@ -1,10 +1,10 @@
24672 Name: harfbuzz-ng
24673 Short Name: harfbuzz-ng
24675 -Version: 3.2.0-50
24676 -CPEPrefix: cpe:/a:harfbuzz_project:harfbuzz:3.2.0
24677 -Date: 20220113
24678 -Revision: 0acf466c44143de2e9b9cc0375cb25ec67cb132f
24679 +Version: 4.1.0-33
24686 diff --git a/src/third_party/harfbuzz-ng/fuzz/hb_shape_fuzzer.cc b/src/third_party/harfbuzz-ng/fuzz…
24688 --- a/src/third_party/harfbuzz-ng/fuzz/hb_shape_fuzzer.cc
24689 +++ b/src/third_party/harfbuzz-ng/fuzz/hb_shape_fuzzer.cc
24690 @@ -11,7 +11,8 @@
24691 #include <hb-ot.h>
24692 // clang-format on
24694 -#include "base/cxx17_backports.h"
24697 #include "third_party/harfbuzz-ng/utils/hb_scoped.h"
24700 @@ -40,7 +41,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
24702 memcpy(text32, data + size - sizeof(text32), sizeof(text32));
24704 - hb_buffer_add_utf32(buffer.get(), text32, base::size(text32), 0, -1);
24705 + hb_buffer_add_utf32(buffer.get(), text32, std::size(text32), 0, -1);
24709 diff --git a/src/third_party/harfbuzz-ng/fuzz/hb_subset_fuzzer.cc b/src/third_party/harfbuzz-ng/fuz…
24711 --- a/src/third_party/harfbuzz-ng/fuzz/hb_subset_fuzzer.cc
24712 +++ b/src/third_party/harfbuzz-ng/fuzz/hb_subset_fuzzer.cc
24713 @@ -11,8 +11,9 @@
24714 #include <hb-subset.h>
24715 // clang-format on
24720 -#include "base/cxx17_backports.h"
24721 #include "third_party/harfbuzz-ng/utils/hb_scoped.h"
24724 @@ -88,14 +89,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
24728 - TrySubset(face.get(), text, base::size(text), subset_flags);
24733 memcpy(text_from_data, data + size - sizeof(text_from_data),
24735 subset_flags = data[size - sizeof(text_from_data) - 1];
24736 - size_t text_size = base::size(text_from_data);
24741 diff --git a/src/third_party/harfbuzz-ng/src/.ci/build-win32.sh b/src/third_party/harfbuzz-ng/src/.…
24743 --- a/src/third_party/harfbuzz-ng/src/.ci/build-win32.sh
24744 +++ b/src/third_party/harfbuzz-ng/src/.ci/build-win32.sh
24745 @@ -3,7 +3,6 @@ set -e
24747 meson --cross-file=.ci/win32-cross-file.txt \
24748 --wrap-mode=forcefallback \
24749 - --buildtype=release \
24750 -Dtests=disabled \
24751 -Dcairo=enabled \
24752 -Dcairo:fontconfig=disabled \
24753 diff --git a/src/third_party/harfbuzz-ng/src/.ci/build-win64.sh b/src/third_party/harfbuzz-ng/src/.…
24755 --- a/src/third_party/harfbuzz-ng/src/.ci/build-win64.sh
24756 +++ b/src/third_party/harfbuzz-ng/src/.ci/build-win64.sh
24757 @@ -3,7 +3,6 @@ set -e
24759 meson --cross-file=.ci/win64-cross-file.txt \
24760 --wrap-mode=forcefallback \
24761 - --buildtype=release \
24762 -Dtests=disabled \
24763 -Dcairo=enabled \
24764 -Dcairo:fontconfig=disabled \
24765 diff --git a/src/third_party/harfbuzz-ng/src/BUILD.md b/src/third_party/harfbuzz-ng/src/BUILD.md
24767 --- a/src/third_party/harfbuzz-ng/src/BUILD.md
24768 +++ b/src/third_party/harfbuzz-ng/src/BUILD.md
24769 @@ -18,7 +18,8 @@ meson like above.
24772 …or gcc/clang is already on your path, and if you use something like `meson build --wrap-mode=defau…
24773 -it fetches and compiles most of the dependencies also.
24779 diff --git a/src/third_party/harfbuzz-ng/src/NEWS b/src/third_party/harfbuzz-ng/src/NEWS
24781 --- a/src/third_party/harfbuzz-ng/src/NEWS
24782 +++ b/src/third_party/harfbuzz-ng/src/NEWS
24783 @@ -1,7 +1,201 @@
24787 +- Various OSS-Fuzz fixes. (Behdad Esfahbod)
24788 +- Make fallback vertical-origin match FreeType’s. (Behdad Esfahbod)
24789 +- Treat visible viramas like dependent vowels in USE shaper. (David Corbett)
24790 +- Apply presentation forms features and discretionary features in one go in
24793 +- Various bug fixes.
24795 +- New API
24801 +- Update OpenType to AAT mappings for “hist” and “vrtr” features.
24803 +- Update IANA Language Subtag Registry to 2022-03-02. (David Corbett)
24804 +- Update USE shaper to allow any non-numeric tail in a symbol cluster, and
24806 +- Fix handling of baseline variations to return correctly scaled values.
24808 +- A new experimental hb_subset_repack_or_fail() to repack an array of objects,
24812 +- New experimental API
24821 +- New public API to create subset plan and gather information on things like
24824 +- Draw API for extracting glyph shapes have been extended and finalized and is
24828 + previous, non-public, experimental API. (Behdad Esfahbod)
24829 +- The hb-view tool will use HarfBuzz draw API to render the glyphs instead of
24830 + cairo-ft when compiled with Cairo 1.17.5 or newer, setting HB_DRAW
24833 +- The hb-shape and hb-view tools now default to using HarfBuzz’s own font
24835 + option, --font-slant, to apply synthetic slant to the font. (Behdad Esfahbod)
24836 +- HarfBuzz now supports more than 65535 (the OpenType limit) glyph shapes and
24837 + metrics. See https://github.com/be-fonts/boring-expansion-spec/issues/6 and
24838 + https://github.com/be-fonts/boring-expansion-spec/issues/7 for details.
24840 +- New API to get the dominant horizontal baseline tag for a given script.
24842 +- New API to get the baseline positions from the font, and synthesize missing
24845 +- Improvements to finding dependencies on Windows when building with Visual
24846 + Studio. (Chun-wei Fan)
24847 +- New buffer flag, HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT, that must be set
24851 +- Documentation improvements. (Matthias Clasen)
24853 +- New API
24854 + - General:
24858 + - Draw:
24886 + - OpenType layout
24892 + - Metrics:
24895 + - Subset:
24911 +- Perform sanity checks on shaping results is now part of “harfbuzz” library
24914 +- Arabic Mark Transient Reordering Algorithm have been updated to revision 6.
24916 +- ISO 15924 code for mathematical notation, ‘Zmth’, now maps to the OpenType
24918 +- It is now possible to get at once all math kerning values for a given glyph
24920 +- Fix locale_t portability issues on systems the typedef’s it to a void
24923 +- New API:
24930 +- Deprecated API
24937 +- Revert splitting of pair positioning values introduced in 3.3.0 as it proved
24944 +- Fix heap-use-after-free in harfbuzz-subset introduced in previous release.
24951 +- Improved documentation. (Matthias Clasen)
24952 +- Internal code cleanup, using C++ standard library more. (Behdad Esfahbod)
24953 +- The low 16-bits of face index will be used by hb_face_create() to select a
24954 + face inside a font collection file format, while the high 16-bits will be
24956 +- Glyph positions and other font metrics now apply synthetic slant set by
24959 +- Fixed unintentional locale dependency in hb_variation_to_string() for decimal
24961 +- When applying pair positioning (kerning) the positioning value is split
24964 +- Introduced new HB_GLYPH_FLAG_UNSAFE_TO_CONCAT, to be used in conjunction
24965 + with HB_GLYPH_FLAG_UNSAFE_TO_BREAK for optimizing re-shaping during line
24967 +- Improved handling of macrolanguages when mapping BCP 47 codes to OpenType
24970 +- New API:
24982 -
24984 - Fixed shaping of Apple Color Emoji flags in right-to-left context. (Behdad Esfahbod)
24985 - Fixed positioning of CFF fonts in HB_TINY profile. (Behdad Esfahbod)
24986 @@ -384,7 +578,7 @@ Friday, May 24, 2019
24987 code-base changes. We now require C++11. Support for gcc 4.8 and earlier has been
24989 - New hb-config.hh facility for compiling smaller library for embedded and web usecases.
24990 -- New Unicode Character Databse implementation that is half the size of previously-used
24991 +- New Unicode Character Database implementation that is half the size of previously-used
24993 - Subsetter improvements.
24994 - Improved documentation, thanks to Nathan Willis.
24995 @@ -1232,7 +1426,7 @@ Thursday, February 25, 2016
24996 due to bug in glyph class of ASCII double-quote character. This should
24999 - This fourth release in a week should finally stablize things...
25002 - hb-ot-font's get_glyph() implementation saw some optimizations. Though,
25003 might be really hard to measure in real-world situations.
25004 @@ -2280,7 +2474,7 @@ o Changed API:
25005 - hb_buffer_create() takes zero arguments now.
25006 Use hb_buffer_pre_allocate() to pre-allocate.
25008 - - hb_buffer_add_utf*() now accept -1 for length parameteres,
25009 + - hb_buffer_add_utf*() now accept -1 for length parameters,
25010 meaning "nul-terminated".
25012 - hb_direction_t enum values changed.
25013 diff --git a/src/third_party/harfbuzz-ng/src/RELEASING.md b/src/third_party/harfbuzz-ng/src/RELEASI…
25015 --- a/src/third_party/harfbuzz-ng/src/RELEASING.md
25016 +++ b/src/third_party/harfbuzz-ng/src/RELEASING.md
25017 @@ -28,7 +28,7 @@
25018- [ ] Commit NEWS, meson.build, configure.ac, and src/hb-version.h, as well as any REPLACEME chang…
25021 -- [ ] Do a `meson dist -Cbuild` that runs the tests against the latest commited changes.
25022 +- [ ] Do a `meson dist -Cbuild` that runs the tests against the latest committed changes.
25025 - [ ] Tag the release and sign it: e.g. `git tag -s 1.4.7 -m 1.4.7`.
25026 diff --git a/src/third_party/harfbuzz-ng/src/TODO b/src/third_party/harfbuzz-ng/src/TODO
25029 --- a/src/third_party/harfbuzz-ng/src/TODO
25031 @@ -1,28 +0,0 @@
25032 -API issues:
25033 -===========
25034 -
25035 -- API to accept a list of languages?
25036 -
25037 -- Remove hb_ot_shape_glyphs_closure()?
25038 -
25039 -
25040 -API additions
25041 -=============
25042 -
25043 -- Language to/from script.
25044 -
25045 -- Add hb-cairo glue
25046 -
25047 -- Add sanitize API.
25048 -
25049 -- Add query / enumeration API for aalt-like features?
25050 -
25051 -- Add segmentation API
25052 -
25053 -- Add hb-fribidi glue?
25054 -
25055 -
25056 -hb-view / hb-shape enhancements:
25057 -===============================
25058 -
25059 -- Add --width, --height, --auto-size, --ink-box, --align, etc?
25060 diff --git a/src/third_party/harfbuzz-ng/src/configure.ac b/src/third_party/harfbuzz-ng/src/configu…
25062 --- a/src/third_party/harfbuzz-ng/src/configure.ac
25063 +++ b/src/third_party/harfbuzz-ng/src/configure.ac
25064 @@ -1,6 +1,6 @@
25067 - [3.2.0],
25072 @@ -194,6 +194,10 @@ AC_ARG_WITH(cairo,
25074 if test "x$with_cairo" = "xyes" -o "x$with_cairo" = "xauto"; then
25081 if test "x$with_cairo" = "xyes" -a "x$have_cairo" != "xtrue"; then
25083 diff --git a/src/third_party/harfbuzz-ng/src/docs/Makefile.am b/src/third_party/harfbuzz-ng/src/doc…
25085 --- a/src/third_party/harfbuzz-ng/src/docs/Makefile.am
25086 +++ b/src/third_party/harfbuzz-ng/src/docs/Makefile.am
25087 @@ -83,7 +83,7 @@ content_files= \
25088 usermanual-integration.xml \
25091 -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
25092 +# SGML files where gtk-doc abbreviations (#GtkWidget) are expanded
25096 diff --git a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-docs.xml b/src/third_party/harfbuzz-ng/s…
25098 --- a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-docs.xml
25099 +++ b/src/third_party/harfbuzz-ng/src/docs/harfbuzz-docs.xml
25100 @@ -56,6 +56,7 @@
25101 <xi:include href="xml/hb-blob.xml"/>
25102 <xi:include href="xml/hb-buffer.xml"/>
25103 <xi:include href="xml/hb-common.xml"/>
25104 + <xi:include href="xml/hb-draw.xml"/>
25105 <xi:include href="xml/hb-deprecated.xml"/>
25106 <xi:include href="xml/hb-face.xml"/>
25107 <xi:include href="xml/hb-font.xml"/>
25108 @@ -116,6 +117,10 @@
25109 …<index id="api-index-full"><title>API Index</title><xi:include href="xml/api-index-full.xml"><xi:f…
25110 …<index id="deprecated-api-index" role="deprecated"><title>Index of deprecated API</title><xi:inclu…
25112 + <index id="api-index-4-1-0" role="4.1.0"><title>Index of new symbols in 4.1.0</title><xi:inc…
25113 + <index id="api-index-4-0-0" role="4.0.0"><title>Index of new symbols in 4.0.0</title><xi:inc…
25114 + <index id="api-index-3-4-0" role="3.4.0"><title>Index of new symbols in 3.4.0</title><xi:inc…
25115 + <index id="api-index-3-3-0" role="3.3.0"><title>Index of new symbols in 3.3.0</title><xi:inc…
25116 …<index id="api-index-3-1-0" role="3.1.0"><title>Index of new symbols in 3.1.0</title><xi:include h…
25117 …<index id="api-index-3-0-0" role="3.0.0"><title>Index of new symbols in 3.0.0</title><xi:include h…
25118 …<index id="api-index-2-9-1" role="2.9.1"><title>Index of new symbols in 2.9.1</title><xi:include h…
25119 @@ -138,7 +143,6 @@
25120 …<index id="api-index-1-8-1" role="1.8.1"><title>Index of new symbols in 1.8.1</title><xi:include h…
25121 …<index id="api-index-1-8-0" role="1.8.0"><title>Index of new symbols in 1.8.0</title><xi:include h…
25122 …<index id="api-index-1-7-7" role="1.7.7"><title>Index of new symbols in 1.7.7</title><xi:include h…
25123 - <index id="api-index-1-7-5" role="1.7.5"><title>Index of new symbols in 1.7.5</title><xi:inc…
25124 …<index id="api-index-1-7-2" role="1.7.2"><title>Index of new symbols in 1.7.2</title><xi:include h…
25125 …<index id="api-index-1-6-0" role="1.6.0"><title>Index of new symbols in 1.6.0</title><xi:include h…
25126 …<index id="api-index-1-5-0" role="1.5.0"><title>Index of new symbols in 1.5.0</title><xi:include h…
25127 diff --git a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-sections.txt b/src/third_party/harfbuzz-
25129 --- a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-sections.txt
25130 +++ b/src/third_party/harfbuzz-ng/src/docs/harfbuzz-sections.txt
25131 @@ -169,6 +169,7 @@ HB_FEATURE_GLOBAL_START
25139 @@ -183,6 +184,33 @@ HB_DEPRECATED
25144 +<FILE>hb-draw</FILE>
25171 <FILE>hb-deprecated</FILE>
25173 @@ -191,6 +219,7 @@ HB_SCRIPT_CANADIAN_ABORIGINAL
25181 @@ -280,6 +309,7 @@ hb_font_funcs_set_glyph_h_advances_func
25189 @@ -317,6 +347,8 @@ hb_font_get_glyph_name
25198 @@ -503,7 +535,9 @@ hb_ot_layout_feature_get_lookups
25208 @@ -531,20 +565,15 @@ hb_ot_layout_table_get_lookup_count
25212 -<SUBSECTION Private>
25213 -Xhb_ot_layout_lookup_enumerate_sequences
25214 -Xhb_ot_layout_lookup_position
25215 -Xhb_ot_layout_lookup_substitute
25216 -hb_ot_layout_glyph_sequence_t
25217 -hb_ot_layout_glyph_sequence_func_t
25221 <FILE>hb-ot-math</FILE>
25223 -HB_OT_MATH_SCRIPT
25231 @@ -553,6 +582,7 @@ hb_ot_math_get_constant
25239 @@ -570,6 +600,7 @@ hb_ot_meta_reference_entry
25240 <FILE>hb-ot-metrics</FILE>
25247 @@ -606,6 +637,7 @@ hb_ot_var_normalize_coords
25255 @@ -626,6 +658,7 @@ hb_set_is_equal
25263 @@ -725,6 +758,7 @@ hb_style_get_value
25271 @@ -736,4 +770,17 @@ hb_subset_input_unicode_set
25289 diff --git a/src/third_party/harfbuzz-ng/src/docs/repacker.md b/src/third_party/harfbuzz-ng/src/doc…
25291 --- a/src/third_party/harfbuzz-ng/src/docs/repacker.md
25292 +++ b/src/third_party/harfbuzz-ng/src/docs/repacker.md
25293 @@ -40,7 +40,7 @@ Other implementations exist, such as in
25297 -* Subtable Graph: a table's internal structure is abstraced out into a lightweight graph
25302 @@ -54,7 +54,7 @@ There's four key pieces to the harfbuzz approach:
25306 -* Offset resolution strategies: given a particular occurence of an overflow these strategies
25311 @@ -111,7 +111,7 @@ to be as fast as possible. There's a few things that are done to speed up subseq
25315 - portion of boths sorts. Where possible when the graph is modified we manually update the cached
25320 @@ -165,7 +165,7 @@ The above is an ideal situation where the subgraphs are disconnected from each o
25324 -* That subgraph can be treated as an indepedent unit and all nodes of the subgraph packed in isol…
25329 @@ -217,7 +217,7 @@ and then assign each such subgraph to a unique non-zero space. The algorithm is
25333 -strategies to eliminate the overflow. The type of strategy applied is dependant on the characteris…
25338 @@ -235,7 +235,7 @@ of the overflowing link:
25340 …s defined using generic graphs: https://github.com/harfbuzz/harfbuzz/blob/main/src/test-repacker.cc
25342 -# Future Improvments
25346 …the case where a single subtable is 65k and the graph structure requires an offset to point over i…
25347 diff --git a/src/third_party/harfbuzz-ng/src/docs/serializer.md b/src/third_party/harfbuzz-ng/src/d…
25350 --- /dev/null
25351 +++ b/src/third_party/harfbuzz-ng/src/docs/serializer.md
25352 @@ -0,0 +1,178 @@
25355 +In hb-subset serialization is the process of writing the subsetted font
25358 +([hb_serialize_context_t](https://github.com/harfbuzz/harfbuzz/blob/main/src/hb-serialize.hh)).
25378 ++-------+-------+-----+-------+--------------+
25380 ++-------+-------+-----+-------+--------------+
25394 +|- in progress objects -| |--- packed objects --|
25395 ++-----------+-----------+--------------+-------+-----+-------+
25397 ++-----------+-----------+--------------+-------+-----+-------+
25398 +|-----------------------> <---------------------|
25415 ++---------+--------------+---------+-------+-----+-------+
25417 ++---------+--------------+---------+-------+-----+-------+
25431 +### Object De-duplication
25433 +An important optimization in packing offset graphs is de-duplicating equivalent objects. If you
25468 +a--b--d
25490 +ctx->push();
25491 +root* a = ctx->start_embed<root> ();
25492 +ctx->extend_min (a);
25493 +a->name = 'a';
25496 +ctx->push();
25497 +child* b = ctx->start_embed<child> ();
25498 +ctx->extend_min (b);
25499 +b->name = 'b';
25502 +ctx->push();
25503 +*ctx->allocate_size<char> (1) = 'd';
25504 +unsigned d_id = ctx->pop_pack ();
25506 +ctx->add_link (b->leaf, d_id);
25507 +unsigned b_id = ctx->pop_pack ();
25510 +ctx->push();
25511 +child* c = ctx->start_embed<child> ();
25512 +ctx->extend_min (c);
25513 +c->name = 'c';
25516 +ctx->push();
25517 +*ctx->allocate_size<char> (1) = 'd';
25518 +d_id = ctx->pop_pack (); // Serializer will automatically de-dup this with the previous 'd'
25520 +ctx->add_link (c->leaf, d_id);
25521 +unsigned c_id = ctx->pop_pack ();
25524 +ctx->add_link (a->child_1, b_id);
25525 +ctx->add_link (a->child_2, c_id);
25526 +ctx->pop_pack ();
25528 +ctx->end_serialize ();
25531 diff --git a/src/third_party/harfbuzz-ng/src/docs/usermanual-integration.xml b/src/third_party/harf…
25533 --- a/src/third_party/harfbuzz-ng/src/docs/usermanual-integration.xml
25534 +++ b/src/third_party/harfbuzz-ng/src/docs/usermanual-integration.xml
25535 @@ -347,7 +347,7 @@
25539 - Your client program only needs to ensure that it coverts
25541 correctly between HarfBuzz's low-level data types (such as
25544 @@ -445,7 +445,7 @@
25545 is slightly lower-level than Core Text, provides
25548 - <ulink url="https://developer.apple.com/documentation/coretext/ctfont-q6r"><type>CTFontRef</…
25549 + <ulink url="https://developer.apple.com/documentation/coretext/ctfont-q6r"><type>CTFontRef</…
25553 diff --git a/src/third_party/harfbuzz-ng/src/docs/usermanual-object-model.xml b/src/third_party/har…
25555 --- a/src/third_party/harfbuzz-ng/src/docs/usermanual-object-model.xml
25556 +++ b/src/third_party/harfbuzz-ng/src/docs/usermanual-object-model.xml
25557 @@ -12,7 +12,7 @@
25558 HarfBuzz features two kinds of data types: non-opaque,
25559 pass-by-value types and opaque, heap-allocated types. This kind
25561 - API/ABI compatibility (almost) indefinitely.
25565 <emphasis>Value types:</emphasis> The non-opaque, pass-by-value
25566 @@ -32,8 +32,8 @@
25570 - effectively deal with the type without having to
25571 - adapt their code to future changes.
25577 @@ -42,7 +42,7 @@
25581 -
25583 <section id="object-model-object-types">
25586 @@ -63,13 +63,17 @@
25590 - <function>hb_buffer_destroy()</function> to dereference.
25599 + Note that many object types can be marked as read-only or immutable,
25600 + facilitating their use in multi-threaded environments.
25605 @@ -110,11 +114,11 @@
25609 -
25613 -
25614 -
25617 <section id="object-model-lifecycle">
25620 @@ -131,7 +135,7 @@
25624 - program is finished with an object, it should call its
25629 @@ -141,8 +145,8 @@
25630 All of HarfBuzz's object-lifecycle-management APIs are
25631 thread-safe (unless you compiled HarfBuzz from source with the
25633 - object as a whole is not thread-safe.
25634 - It is also permissible to <function>reference()</function> or to
25635 + object as a whole is not thread-safe.
25640 @@ -160,7 +164,7 @@
25644 - Reference manual for specifics.
25649 @@ -187,7 +191,7 @@
25653 -
25655 <section id="object-model-user-data">
25658 @@ -195,7 +199,7 @@
25660 arbitrary data to the object. User-data attachment can be
25662 - together, or for creating language bindings.
25667 @@ -220,10 +224,10 @@
25671 - </section>
25676 -
25677 -
25678 <section id="object-model-blobs">
25681 @@ -238,9 +242,9 @@
25685 - This allows you to take advantage of HarffBuzz's
25687 reference-counting and <function>destroy</function>
25688 - callbacks. If you allocated the memory for the data using
25693 @@ -251,8 +255,12 @@
25696 about freeing memory and let the reference-counting machinery
25697 - take care of that.
25701 + Most of the time, blobs are read-only, facilitating their use in
25705 -
25708 diff --git a/src/third_party/harfbuzz-ng/src/meson.build b/src/third_party/harfbuzz-ng/src/meson.bu…
25710 --- a/src/third_party/harfbuzz-ng/src/meson.build
25711 +++ b/src/third_party/harfbuzz-ng/src/meson.build
25712 @@ -1,6 +1,6 @@
25715 - version: '3.2.0',
25718 'cpp_rtti=false', # Just to support msvc, we are passing -fno-exceptions also anyway
25720 @@ -57,6 +57,12 @@ if host_machine.cpu_family() == 'arm' and cpp.alignment('struct { char c; }') !=
25726 + '-Wa,-mbig-obj'
25733 @@ -77,52 +83,31 @@ check_funcs = [
25737 -freetype_dep = null_dep
25738 -if not get_option('freetype').disabled()
25739 - freetype_dep = dependency('freetype2', required: false)
25740 -
25741 - if (not freetype_dep.found() and
25742 - cpp.get_id() == 'msvc' and
25743 - cpp.has_header('ft2build.h'))
25744 - freetype_dep = cpp.find_library('freetype', required: false)
25745 - endif
25746 -
25747 - if not freetype_dep.found()
25748 - # https://github.com/harfbuzz/harfbuzz/pull/2498
25749 - freetype_dep = dependency('freetype2', required: get_option('freetype'),
25750 - fallback: ['freetype2', 'freetype_dep'],
25751 - default_options: ['harfbuzz=disabled'])
25752 - endif
25753 -endif
25757 + default_options: ['harfbuzz=disabled'])
25759 -glib_dep = dependency('glib-2.0', required: get_option('glib'),
25760 - fallback: ['glib', 'libglib_dep'])
25761 -gobject_dep = dependency('gobject-2.0', required: get_option('gobject'),
25762 - fallback: ['glib', 'libgobject_dep'])
25763 +glib_dep = dependency('glib-2.0', required: get_option('glib'))
25764 +gobject_dep = dependency('gobject-2.0', required: get_option('gobject'))
25768 -icu_dep = null_dep
25769 -if not get_option('icu').disabled()
25770 - icu_dep = dependency('icu-uc', required: false)
25771 -
25772 - if (not icu_dep.found() and
25773 - cpp.get_id() == 'msvc' and
25774 - cpp.has_header('unicode/uchar.h') and
25775 - cpp.has_header('unicode/unorm2.h') and
25776 - cpp.has_header('unicode/ustring.h') and
25777 - cpp.has_header('unicode/utf16.h') and
25778 - cpp.has_header('unicode/uversion.h') and
25779 - cpp.has_header('unicode/uscript.h'))
25780 - if get_option('buildtype') == 'debug'
25781 - icu_dep = cpp.find_library('icuucd', required: false)
25782 - else
25783 - icu_dep = cpp.find_library('icuuc', required: false)
25784 - endif
25785 - endif
25792 + icu_dep = dependency('icu-uc',
25794 + method: 'pkg-config')
25797 - if not icu_dep.found()
25798 - icu_dep = dependency('icu-uc', required: get_option('icu'))
25806 @@ -148,8 +133,8 @@ if not get_option('cairo').disabled()
25808 # harfbuzz support disabled, so when cairo will lookup freetype2 dependency
25810 - cairo_dep = dependency('cairo', fallback: 'cairo', required: get_option('cairo'))
25811 - cairo_ft_dep = dependency('cairo-ft', fallback: 'cairo', required: get_option('cairo'))
25813 + cairo_ft_dep = dependency('cairo-ft', required: get_option('cairo'))
25817 @@ -176,6 +161,11 @@ endif
25829 diff --git a/src/third_party/harfbuzz-ng/src/perf/perf.cc b/src/third_party/harfbuzz-ng/src/perf/pe…
25831 --- a/src/third_party/harfbuzz-ng/src/perf/perf.cc
25832 +++ b/src/third_party/harfbuzz-ng/src/perf/perf.cc
25833 @@ -8,9 +8,7 @@
25836 #include "perf-extents.hh"
25837 -#ifdef HB_EXPERIMENTAL_API
25838 #include "perf-draw.hh"
25840 -#endif
25843 diff --git a/src/third_party/harfbuzz-ng/src/src/Makefile.am b/src/third_party/harfbuzz-ng/src/src/…
25845 --- a/src/third_party/harfbuzz-ng/src/src/Makefile.am
25846 +++ b/src/third_party/harfbuzz-ng/src/src/Makefile.am
25847 @@ -345,15 +345,17 @@ test_gsub_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
25849 test-algs \
25850 test-array \
25851 + test-bimap \
25852 test-iter \
25853 + test-machinery \
25854 test-map \
25855 test-number \
25856 test-ot-tag \
25857 test-priority-queue \
25858 test-set \
25859 + test-serialize \
25860 test-unicode-ranges \
25861 test-vector \
25862 - test-bimap \
25863 test-repacker \
25865 COMPILED_TESTS_CPPFLAGS = $(HBCFLAGS) -DMAIN -UNDEBUG
25866 @@ -369,18 +371,18 @@ test_array_SOURCES = test-array.cc
25870 -test_priority_queue_SOURCES = test-priority-queue.cc hb-static.cc
25871 -test_priority_queue_CPPFLAGS = $(HBCFLAGS)
25872 -test_priority_queue_LDADD = libharfbuzz.la $(HBLIBS)
25873 -
25874 -test_repacker_SOURCES = test-repacker.cc hb-static.cc
25875 -test_repacker_CPPFLAGS = $(HBCFLAGS)
25876 -test_repacker_LDADD = libharfbuzz.la libharfbuzz-subset.la $(HBLIBS)
25877 +test_bimap_SOURCES = test-bimap.cc hb-static.cc
25881 test_iter_SOURCES = test-iter.cc hb-static.cc
25885 +test_machinery_SOURCES = test-machinery.cc hb-static.cc
25889 test_map_SOURCES = test-map.cc hb-static.cc
25892 @@ -393,10 +395,22 @@ test_ot_tag_SOURCES = hb-ot-tag.cc
25896 +test_priority_queue_SOURCES = test-priority-queue.cc hb-static.cc
25900 +test_repacker_SOURCES = test-repacker.cc hb-static.cc
25902 +test_repacker_LDADD = libharfbuzz.la libharfbuzz-subset.la $(HBLIBS)
25904 test_set_SOURCES = test-set.cc hb-static.cc
25908 +test_serialize_SOURCES = test-serialize.cc hb-static.cc
25912 test_unicode_ranges_SOURCES = test-unicode-ranges.cc
25915 @@ -405,10 +419,6 @@ test_vector_SOURCES = test-vector.cc hb-static.cc
25919 -test_bimap_SOURCES = test-bimap.cc hb-static.cc
25920 -test_bimap_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
25921 -test_bimap_LDADD = $(COMPILED_TESTS_LDADD)
25922 -
25924 check-c-linkage-decls.py \
25925 check-externs.py \
25926 diff --git a/src/third_party/harfbuzz-ng/src/src/Makefile.sources b/src/third_party/harfbuzz-ng/src…
25928 --- a/src/third_party/harfbuzz-ng/src/src/Makefile.sources
25929 +++ b/src/third_party/harfbuzz-ng/src/src/Makefile.sources
25930 @@ -25,6 +25,7 @@ HB_BASE_sources = \
25931 hb-blob.cc \
25932 hb-blob.hh \
25933 hb-buffer-serialize.cc \
25934 + hb-buffer-verify.cc \
25935 hb-buffer.cc \
25936 hb-buffer.hh \
25937 hb-cache.hh \
25938 @@ -50,7 +51,6 @@ HB_BASE_sources = \
25939 hb-map.cc \
25940 hb-map.hh \
25941 hb-meta.hh \
25942 - hb-ms-feature-ranges.cc \
25943 hb-ms-feature-ranges.hh \
25944 hb-mutex.hh \
25945 hb-null.hh \
25946 @@ -88,6 +88,28 @@ HB_BASE_sources = \
25947 hb-ot-layout-gdef-table.hh \
25948 hb-ot-layout-gpos-table.hh \
25949 hb-ot-layout-gsub-table.hh \
25972 hb-ot-layout-gsubgpos.hh \
25973 hb-ot-layout-jstf-table.hh \
25974 hb-ot-layout.cc \
25975 @@ -275,6 +297,7 @@ HB_SUBSET_sources = \
25976 hb-subset-input.hh \
25977 hb-subset-plan.cc \
25978 hb-subset-plan.hh \
25979 + hb-subset-repacker.cc \
25980 hb-subset.cc \
25981 hb-subset.hh \
25982 hb-repacker.hh \
25983 @@ -282,6 +305,7 @@ HB_SUBSET_sources = \
25986 hb-subset.h \
25987 + hb-subset-repacker.h \
25990 HB_GOBJECT_DIST_sources = hb-gobject-structs.cc
25991 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSet.hh b/src/third_party/h…
25994 --- /dev/null
25995 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSet.hh
25996 @@ -0,0 +1,110 @@
26010 + alternates; /* Array of alternate GlyphIDs--in
26025 + { c->output->add_array (alternates.arrayZ, alternates.len); }
26028 + { c->output->add_array (alternates.arrayZ, alternates.len); }
26037 + hb_mask_t glyph_mask = c->buffer->cur().mask;
26038 + hb_mask_t lookup_mask = c->lookup_mask;
26045 + if (alt_index == HB_OT_MAP_MAX_VALUE && c->random)
26047 + /* Maybe we can do better than unsafe-to-break all; but since we are
26049 + c->buffer->unsafe_to_break (0, c->buffer->len);
26050 + alt_index = c->random_number () % count + 1;
26055 + c->replace_glyph (alternates[alt_index - 1]);
26086 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26087 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26095 + auto *out = c->serializer->start_embed (*this);
26096 + return_trace (out->serialize (c->serializer, it) &&
26097 + out->alternates);
26107 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubst.hh b/src/third_party…
26110 --- /dev/null
26111 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubst.hh
26112 @@ -0,0 +1,51 @@
26136 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
26138 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
26139 + default:return_trace (c->default_return_value ());
26149 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
26164 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubstFormat1.hh b/src/thir…
26167 --- /dev/null
26168 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubstFormat1.hh
26169 @@ -0,0 +1,128 @@
26183 + HBUINT16 format; /* Format identifier--format = 1 */
26185 + coverage; /* Offset to Coverage table--from
26208 + | hb_filter (c->parent_active_glyphs (), hb_first)
26220 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
26231 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
26245 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
26257 + if (unlikely (!c->extend_min (this))) return_trace (false);
26273 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26274 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26276 + auto *out = c->serializer->start_embed (*this);
26277 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
26278 + out->format = format;
26283 + | hb_filter (subset_offset_array (c, out->alternateSet, this), hb_second)
26288 + out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
26298 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ChainContextSubst.hh b/src/third_pa…
26301 --- /dev/null
26302 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ChainContextSubst.hh
26303 @@ -0,0 +1,18 @@
26308 +#include "../../../hb-ot-layout-gsubgpos.hh"
26322 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Common.hh b/src/third_party/harfbuz…
26325 --- /dev/null
26326 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Common.hh
26327 @@ -0,0 +1,21 @@
26331 +#include "../../../hb-serialize.hh"
26332 +#include "../../../hb-ot-layout-gsubgpos.hh"
26349 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ContextSubst.hh b/src/third_party/h…
26352 --- /dev/null
26353 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ContextSubst.hh
26354 @@ -0,0 +1,18 @@
26359 +#include "../../../hb-ot-layout-gsubgpos.hh"
26373 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ExtensionSubst.hh b/src/third_party…
26376 --- /dev/null
26377 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ExtensionSubst.hh
26378 @@ -0,0 +1,22 @@
26383 +#include "../../../hb-ot-layout-gsubgpos.hh"
26401 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/GSUB.hh b/src/third_party/harfbuzz-
26404 --- /dev/null
26405 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/GSUB.hh
26406 @@ -0,0 +1,58 @@
26411 +#include "../../../hb-ot-layout-gsubgpos.hh"
26422 + * GSUB -- Glyph Substitution
26423 + * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub
26435 + hb_subset_layout_context_t l (c, tableTag, c->plan->gsub_lookups, c->plan->gsub_langsys, c->pl…
26465 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Ligature.hh b/src/third_party/harfb…
26468 --- /dev/null
26469 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Ligature.hh
26470 @@ -0,0 +1,135 @@
26485 + component; /* Array of component GlyphIDs--start
26486 + * with the second component--ordered
26502 + if (!intersects (c->glyphs)) return;
26503 + c->output->add (ligGlyph);
26508 + c->input->add_array (component.arrayZ, component.get_length ());
26509 + c->output->add (ligGlyph);
26514 + if (c->len != component.lenP1)
26517 + for (unsigned int i = 1; i < c->len; i++)
26518 + if (likely (c->glyphs[i] != component[i]))
26531 + /* Special-case to make it in-place and not consider this
26535 + c->replace_glyph (ligGlyph);
26552 + c->buffer->unsafe_to_concat (c->buffer->idx, match_end);
26573 + if (unlikely (!c->extend_min (this))) return_trace (false);
26582 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26583 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26587 + c->serializer->add_virtual_link (coverage_idx);
26594 + auto *out = c->serializer->start_embed (*this);
26595 + return_trace (out->serialize (c->serializer,
26606 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSet.hh b/src/third_party/ha…
26609 --- /dev/null
26610 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSet.hh
26611 @@ -0,0 +1,118 @@
26692 + if (unlikely (!c->extend_min (this))) return_trace (false);
26696 + unsigned int component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0);
26709 + auto *out = c->serializer->start_embed (*this);
26710 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
26713 + | hb_filter (subset_offset_array (c, out->ligature, this, coverage_idx))
26717 + if (bool (out->ligature))
26719 + c->serializer->add_virtual_link (coverage_idx);
26721 + return_trace (bool (out->ligature));
26730 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubst.hh b/src/third_party/…
26733 --- /dev/null
26734 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubst.hh
26735 @@ -0,0 +1,59 @@
26759 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
26761 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
26762 + default:return_trace (c->default_return_value ());
26774 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
26795 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubstFormat1.hh b/src/third…
26798 --- /dev/null
26799 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubstFormat1.hh
26800 @@ -0,0 +1,165 @@
26814 + HBUINT16 format; /* Format identifier--format = 1 */
26816 + coverage; /* Offset to Coverage table--from
26848 + | hb_filter (c->parent_active_glyphs (), hb_first)
26860 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
26873 + unsigned int index = (this+coverage).get_coverage (c->glyphs[0]);
26884 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
26899 + if (unlikely (!c->extend_min (this))) return_trace (false);
26918 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26919 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26921 + auto *out = c->serializer->start_embed (*this);
26922 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
26923 + out->format = format;
26937 + if (!c->serializer->push<Coverage> ()
26938 + ->serialize (c->serializer,
26941 + c->serializer->pop_discard ();
26945 + unsigned coverage_idx = c->serializer->pop_pack ();
26946 + c->serializer->add_link (out->coverage, coverage_idx);
26954 + | hb_apply (subset_offset_array (c, out->ligatureSet, this, coverage_idx))
26966 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubst.hh b/src/third_party/…
26969 --- /dev/null
26970 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubst.hh
26971 @@ -0,0 +1,53 @@
26996 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
26998 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
26999 + default:return_trace (c->default_return_value ());
27009 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
27025 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubstFormat1.hh b/src/third…
27028 --- /dev/null
27029 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubstFormat1.hh
27030 @@ -0,0 +1,120 @@
27044 + HBUINT16 format; /* Format identifier--format = 1 */
27046 + coverage; /* Offset to Coverage table--from
27069 + | hb_filter (c->parent_active_glyphs (), hb_first)
27080 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27091 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27097 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
27109 + if (unlikely (!c->extend_min (this))) return_trace (false);
27125 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27126 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27128 + auto *out = c->serializer->start_embed (*this);
27129 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
27130 + out->format = format;
27135 + | hb_filter (subset_offset_array (c, out->sequence, this), hb_second)
27140 + out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
27151 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh b/src/th…
27154 --- /dev/null
27155 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh
27156 @@ -0,0 +1,36 @@
27180 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
27182 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
27183 + default:return_trace (c->default_return_value ());
27193 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh b…
27196 --- /dev/null
27197 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh
27198 @@ -0,0 +1,228 @@
27211 + HBUINT16 format; /* Format identifier--format = 1 */
27213 + coverage; /* Offset to Coverage table--from
27225 + * GlyphIDs--ordered by Coverage Index */
27268 + if (!intersects (c->glyphs)) return;
27274 + | hb_filter (c->parent_active_glyphs (), hb_first)
27276 + | hb_sink (c->output)
27284 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27290 + if (unlikely (!(this+backtrack[i]).collect_coverage (c->before))) return;
27295 + if (unlikely (!(this+lookahead[i]).collect_coverage (c->after))) return;
27299 + c->output->add_array (substitute.arrayZ, substitute.len);
27305 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27310 + if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL))
27313 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
27329 + c->buffer->idx + 1, &end_index))
27331 + c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
27332 + c->replace_glyph_inplace (substitute[index]);
27333 + /* Note: We DON'T decrease buffer->idx. The main loop does it
27340 + c->buffer->unsafe_to_concat_from_outbuffer (start_index, end_index);
27350 + auto *out = c->serializer->start_embed<Array16OfOffset16To<Coverage>> ();
27352 + if (unlikely (!c->serializer->allocate_size<HBUINT16> (HBUINT16::static_size)))
27356 + auto *o = out->serialize_append (c->serializer);
27357 + if (unlikely (!o) || !o->serialize_subset (c, offset, this))
27375 + auto *out = c->serializer->start_embed (this);
27376 + if (unlikely (!c->serializer->check_success (out))) return_trace (false);
27377 + if (unlikely (!c->serializer->embed (this->format))) return_trace (false);
27378 + if (unlikely (!c->serializer->embed (this->coverage))) return_trace (false);
27383 + auto *substitute_out = c->serializer->start_embed<Array16Of<HBGlyphID16>> ();
27393 + if (unlikely (! c->serializer->check_success (substitute_out->serialize (c->serializer, substi…
27396 + if (unlikely (!out->coverage.serialize_serialize (c->serializer, glyphs)))
27404 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27405 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27414 + | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
27427 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Sequence.hh b/src/third_party/harfb…
27430 --- /dev/null
27431 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Sequence.hh
27432 @@ -0,0 +1,103 @@
27460 + { c->output->add_array (substitute.arrayZ, substitute.len); }
27463 + { c->output->add_array (substitute.arrayZ, substitute.len); }
27470 + /* Special-case to make it in-place and not consider this
27474 + c->replace_glyph (substitute.arrayZ[0]);
27481 + c->buffer->delete_glyph ();
27485 + unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
27487 + unsigned lig_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
27494 + _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
27495 + c->output_glyph_for_component (substitute.arrayZ[i], klass);
27497 + c->buffer->skip_glyph ();
27514 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27515 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27524 + auto *out = c->serializer->start_embed (*this);
27525 + return_trace (out->serialize (c->serializer, it));
27536 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubst.hh b/src/third_party/ha…
27539 --- /dev/null
27540 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubst.hh
27541 @@ -0,0 +1,75 @@
27568 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
27570 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
27571 + case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
27572 + default:return_trace (c->default_return_value ());
27583 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
27590 + { return (unsigned) (_.second - _.first) & 0xFFFF; };
27610 +{ c->start_embed<SingleSubst> ()->serialize (c, it); }
27617 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat1.hh b/src/third_p…
27620 --- /dev/null
27621 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat1.hh
27622 @@ -0,0 +1,122 @@
27635 + HBUINT16 format; /* Format identifier--format = 1 */
27637 + coverage; /* Offset to Coverage table--from
27662 + | hb_filter (c->parent_active_glyphs ())
27664 + | hb_sink (c->output)
27673 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27677 + | hb_sink (c->output)
27684 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27689 + hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
27696 + c->replace_glyph (glyph_id);
27708 + if (unlikely (!c->extend_min (this))) return_trace (false);
27710 + c->check_assign (deltaGlyphID, delta, HB_SERIALIZE_ERROR_INT_OVERFLOW);
27717 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27718 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27729 + | hb_map_retains_sorting ([&] (hb_codepoint_pair_t p) -> hb_codepoint_pair_t
27734 + SingleSubst_serialize (c->serializer, it);
27745 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat2.hh b/src/third_p…
27748 --- /dev/null
27749 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat2.hh
27750 @@ -0,0 +1,120 @@
27763 + HBUINT16 format; /* Format identifier--format = 2 */
27765 + coverage; /* Offset to Coverage table--from
27769 + * GlyphIDs--ordered by Coverage Index */
27789 + | hb_filter (c->parent_active_glyphs (), hb_first)
27791 + | hb_sink (c->output)
27800 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27803 + | hb_sink (c->output)
27810 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27815 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
27820 + c->replace_glyph (substitute[index]);
27840 + if (unlikely (!c->extend_min (this))) return_trace (false);
27849 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27850 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27856 + | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
27861 + SingleSubst_serialize (c->serializer, it);
27871 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookup.hh b/src/third_party/ha…
27874 --- /dev/null
27875 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookup.hh
27876 @@ -0,0 +1,224 @@
27928 + if (!c->should_visit_lookup (this_index))
27931 + c->set_recurse_func (dispatch_closure_recurse_func);
27935 + c->flush ();
27942 + if (c->is_lookup_visited (this_index))
27945 + c->set_lookup_visited (this_index);
27946 + if (!intersects (c->glyphs))
27948 + c->set_lookup_inactive (this_index);
27952 + c->set_recurse_func (dispatch_closure_lookups_recurse_func);
27960 + c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>);
27974 + if (unlikely (!c->len)) return false;
27975 + if (!accel->may_have (c->glyphs[0])) return false;
27987 + if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
27988 + if (c->push<SubTable> ()->u.single.serialize (c, hb_zip (glyphs, substitutes)))
27990 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
27993 + c->pop_discard ();
28005 + if (c->push<SubTable> ()->u.multiple.
28011 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
28014 + c->pop_discard ();
28027 + if (c->push<SubTable> ()->u.alternate.
28033 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
28036 + c->pop_discard ();
28050 + if (c->push<SubTable> ()->u.ligature.
28058 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
28061 + c->pop_discard ();
28072 + if (!c->should_visit_lookup (lookup_index))
28080 + //c->flush ();
28101 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookupSubTable.hh b/src/third_…
28104 --- /dev/null
28105 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookupSubTable.hh
28106 @@ -0,0 +1,77 @@
28131 + SingleSubst single;
28144 + Single = 1,
28159 + case Single: return_trace (u.single.dispatch (c, std::forward<Ts> (ds)...));
28167 + default: return_trace (c->default_return_value ());
28184 diff --git a/src/third_party/harfbuzz-ng/src/src/check-c-linkage-decls.py b/src/third_party/harfbuz…
28186 --- a/src/third_party/harfbuzz-ng/src/src/check-c-linkage-decls.py
28187 +++ b/src/third_party/harfbuzz-ng/src/src/check-c-linkage-decls.py
28188 @@ -4,11 +4,19 @@ import sys, os
28200 -HBSOURCES = [os.path.basename (x) for x in os.getenv ('HBSOURCES', '').split ()] or \
28201 - [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))]
28202 -
28211 diff --git a/src/third_party/harfbuzz-ng/src/src/check-header-guards.py b/src/third_party/harfbuzz-
28213 --- a/src/third_party/harfbuzz-ng/src/src/check-header-guards.py
28214 +++ b/src/third_party/harfbuzz-ng/src/src/check-header-guards.py
28215 @@ -4,19 +4,30 @@ import sys, os, re
28228 -HBSOURCES = [os.path.basename (x) for x in os.getenv ('HBSOURCES', '').split ()] or \
28229 - [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))]
28240 if not x.endswith ('h') or x == 'hb-gobject-structs.h': continue
28241 - tag = x.upper ().replace ('.', '_').replace ('-', '_')
28242 + tag = x.upper ().replace ('.', '_').replace ('-', '_').replace(os.path.sep, '_').replace('/', '_')
28243 with open (x, 'r', encoding='utf-8') as f: content = f.read ()
28245 - print ('Ouch, header file %s does not have correct preprocessor guards' % x)
28250 diff --git a/src/third_party/harfbuzz-ng/src/src/check-includes.py b/src/third_party/harfbuzz-ng/sr…
28252 --- a/src/third_party/harfbuzz-ng/src/src/check-includes.py
28253 +++ b/src/third_party/harfbuzz-ng/src/src/check-includes.py
28254 @@ -4,10 +4,21 @@ import sys, os, re
28266 -HBSOURCES = [os.path.basename (x) for x in os.getenv ('HBSOURCES', '').split ()] or \
28267 - [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))]
28278 @@ -25,7 +36,7 @@ for x in HBSOURCES:
28279 with open (x, 'r', encoding='utf-8') as f: content = f.read ()
28282 - if not len (re.findall (r'"hb.*\.hh"', includes[0])):
28287 diff --git a/src/third_party/harfbuzz-ng/src/src/check-static-inits.py b/src/third_party/harfbuzz-n…
28289 --- a/src/third_party/harfbuzz-ng/src/src/check-static-inits.py
28290 +++ b/src/third_party/harfbuzz-ng/src/src/check-static-inits.py
28291 @@ -14,7 +14,7 @@ if sys.version_info < (3, 5):
28292 print ('check-static-inits.py: needs python 3.5 for recursive support in glob')
28295 -OBJS = glob.glob (os.path.join (builddir, libs, '**', '*.o'), recursive=True)
28298 print ('check-static-inits.py: object files not found; skipping test')
28300 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-def.py b/src/third_party/harfbuzz-ng/src/src/g…
28302 --- a/src/third_party/harfbuzz-ng/src/src/gen-def.py
28303 +++ b/src/third_party/harfbuzz-ng/src/src/gen-def.py
28304 @@ -19,23 +19,7 @@ symbols = sorted (re.findall (r"^hb_\w+(?= \()", "\n".join (headers_content), re
28305 if '--experimental-api' not in sys.argv:
28306 # Move these to harfbuzz-sections.txt when got stable
28308 -"""hb_font_draw_glyph
28309 -hb_draw_funcs_t
28310 -hb_draw_close_path_func_t
28311 -hb_draw_cubic_to_func_t
28312 -hb_draw_line_to_func_t
28313 -hb_draw_move_to_func_t
28314 -hb_draw_quadratic_to_func_t
28315 -hb_draw_funcs_create
28316 -hb_draw_funcs_destroy
28317 -hb_draw_funcs_is_immutable
28318 -hb_draw_funcs_make_immutable
28319 -hb_draw_funcs_reference
28320 -hb_draw_funcs_set_close_path_func
28321 -hb_draw_funcs_set_cubic_to_func
28322 -hb_draw_funcs_set_line_to_func
28323 -hb_draw_funcs_set_move_to_func
28324 -hb_draw_funcs_set_quadratic_to_func""".splitlines ()
28329 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-harfbuzzcc.py b/src/third_party/harfbuzz-ng/sr…
28331 --- a/src/third_party/harfbuzz-ng/src/src/gen-harfbuzzcc.py
28332 +++ b/src/third_party/harfbuzz-ng/src/src/gen-harfbuzzcc.py
28333 @@ -14,5 +14,9 @@ sources = sys.argv[3:]
28337 -# copy it also to src/
28338 -shutil.copyfile (OUTPUT, os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)))
28345 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-hb-version.py b/src/third_party/harfbuzz-ng/sr…
28347 --- a/src/third_party/harfbuzz-ng/src/src/gen-hb-version.py
28348 +++ b/src/third_party/harfbuzz-ng/src/src/gen-hb-version.py
28349 @@ -32,5 +32,9 @@ with open (INPUT, "r", encoding='utf-8') as template:
28353 -# copy it also to src/
28354 -shutil.copyfile (OUTPUT, os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)))
28361 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-os2-unicode-ranges.py b/src/third_party/harfbu…
28363 --- a/src/third_party/harfbuzz-ng/src/src/gen-os2-unicode-ranges.py
28364 +++ b/src/third_party/harfbuzz-ng/src/src/gen-os2-unicode-ranges.py
28365 @@ -1,7 +1,7 @@
28368 """Generates the code for a sorted unicode range array as used in hb-ot-os2-unicode-ranges.hh
28369 -Input is a tab seperated list of unicode ranges from the otspec
28371 (https://docs.microsoft.com/en-us/typography/opentype/spec/os2#ur).
28374 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-tag-table.py b/src/third_party/harfbuzz-ng/src…
28376 --- a/src/third_party/harfbuzz-ng/src/src/gen-tag-table.py
28377 +++ b/src/third_party/harfbuzz-ng/src/src/gen-tag-table.py
28378 @@ -329,6 +329,10 @@ class OpenTypeRegistryParser (HTMLParser):
28389 @@ -338,6 +342,7 @@ class OpenTypeRegistryParser (HTMLParser):
28397 @@ -462,30 +467,51 @@ class OpenTypeRegistryParser (HTMLParser):
28410 - all of its individual languages do and they all map to the same
28411 - tags, the mapping is copied to the macrolanguage.
28416 - original_ot_from_bcp_47 = dict (self.from_bcp_47)
28421 - ot_macrolanguages = set (original_ot_from_bcp_47.get (macrolanguage, set ()))
28441 - for language in languages:
28442 - self.add_language (language, ot_macrolanguage)
28443 - self.ranks[ot_macrolanguage] += 1
28444 - else:
28452 - if language in original_ot_from_bcp_47:
28453 - if ot_macrolanguages:
28454 - ml = original_ot_from_bcp_47[language]
28455 - if ml:
28456 - ot_macrolanguages &= ml
28457 - else:
28458 - pass
28459 - else:
28460 - ot_macrolanguages |= original_ot_from_bcp_47[language]
28466 @@ -570,7 +596,7 @@ class BCP47Parser (object):
28470 - scope = ' [family]'
28475 @@ -715,6 +741,7 @@ ot.add_language ('no', 'NOR')
28477 ot.add_language ('oc-provenc', 'PRO')
28483 @@ -747,7 +774,6 @@ ot.add_language ('qxr', 'QVI')
28487 -bcp_47.macrolanguages['ro'].remove ('mo')
28488 bcp_47.macrolanguages['ro-MD'].add ('mo')
28491 @@ -987,6 +1013,8 @@ for initial, items in sorted (complex_tags.items ()):
28500 @@ -1021,6 +1049,8 @@ for initial, items in sorted (complex_tags.items ()):
28509 @@ -1121,9 +1151,13 @@ def verify_disambiguation_dict ():
28513 - macrolanguages = list (t for t in primary_tags if bcp_47.scopes.get (t) == ' [macrolanguage]')
28520 - macrolanguages = list (t for t in primary_tags if bcp_47.scopes.get (t) == ' [family]')
28525 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-use-table.py b/src/third_party/harfbuzz-ng/src…
28527 --- a/src/third_party/harfbuzz-ng/src/src/gen-use-table.py
28528 +++ b/src/third_party/harfbuzz-ng/src/src/gen-use-table.py
28529 @@ -39,7 +39,7 @@ for j in range(7, 9):
28530 headers[j - 1].append(line)
28533 -data = [{} for _ in files]
28538 @@ -73,38 +73,16 @@ for i, f in enumerate (files):
28540 i0 = i if i < 7 else i - 7
28542 - data[i0][u] = t
28544 values[i0][t] = values[i0].get (t, 0) + end - start + 1
28548 -# TODO Characters that are not in Unicode Indic files, but used in USE
28549 -data[0][0x1B61] = defaults[0]
28550 -data[0][0x1B63] = defaults[0]
28551 -data[0][0x1B64] = defaults[0]
28552 -data[0][0x1B65] = defaults[0]
28553 -data[0][0x1B66] = defaults[0]
28554 -data[0][0x1B67] = defaults[0]
28555 -data[0][0x1B69] = defaults[0]
28556 -data[0][0x1B6A] = defaults[0]
28557 -data[0][0x2060] = defaults[0]
28558 -# TODO https://github.com/harfbuzz/harfbuzz/pull/1685
28559 -data[0][0x1B5B] = 'Consonant_Placeholder'
28560 -data[0][0x1B5C] = 'Consonant_Placeholder'
28561 -data[0][0x1B5F] = 'Consonant_Placeholder'
28562 -data[0][0x1B62] = 'Consonant_Placeholder'
28563 -data[0][0x1B68] = 'Consonant_Placeholder'
28564 -# TODO https://github.com/harfbuzz/harfbuzz/issues/1035
28565 -data[0][0x11C44] = 'Consonant_Placeholder'
28566 -data[0][0x11C45] = 'Consonant_Placeholder'
28567 -# TODO https://github.com/harfbuzz/harfbuzz/pull/1399
28568 -data[0][0x111C8] = 'Consonant_Placeholder'
28569 -
28574 -for i,d in enumerate (data):
28579 @@ -112,8 +90,6 @@ for i,d in enumerate (data):
28583 -data = combined
28584 -del combined
28588 @@ -226,8 +202,8 @@ def is_BASE_OTHER(U, UISC, UDI, UGC, AJT):
28592 - # Also includes VARIATION_SELECTOR, WJ, and ZWJ
28593 - return U == 0x200D or UDI and UGC in [Mc, Me, Mn]
28599 @@ -245,13 +221,7 @@ def is_CONS_SUB(U, UISC, UDI, UGC, AJT):
28603 - return (UISC in [Virama, Invisible_Stacker]
28604 - and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UDI, UGC, AJT)
28605 - and not is_SAKOT(U, UISC, UDI, UGC, AJT))
28606 -def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UDI, UGC, AJT):
28607 - # Split off of HALANT
28608 - # https://github.com/harfbuzz/harfbuzz/issues/1379
28609 - return U == 0x1134D
28614 @@ -262,15 +232,21 @@ def is_HIEROGLYPH_SEGMENT_BEGIN(U, UISC, UDI, UGC, AJT):
28626 - # Also includes BASE_IND, Rsv, and SYM
28627 - return ((UGC in [Cn, Po] or UISC in [Consonant_Dead, Joiner, Modifying_Letter, Other])
28638 @@ -280,13 +256,17 @@ def is_SAKOT(U, UISC, UDI, UGC, AJT):
28642 - # https://github.com/harfbuzz/harfbuzz/issues/376
28644 - (UGC != Lo and UISC in [Vowel, Vowel_Dependent] and U not in [0xAA29]))
28647 - # https://github.com/harfbuzz/harfbuzz/issues/376
28649 - (UGC != Lo and (UISC == Bindu or U in [0xAA29])))
28660 @@ -300,8 +280,8 @@ use_mapping = {
28664 - 'HVM': is_HALANT_OR_VOWEL_MODIFIER,
28670 @@ -313,6 +293,7 @@ use_mapping = {
28678 @@ -348,7 +329,7 @@ use_positions = {
28682 - 'HVM': None,
28687 @@ -380,9 +361,6 @@ def map_to_use(data):
28691 - # TODO: https://github.com/microsoft/font-tools/issues/1
28692 - if U == 0xA982: UISC = Consonant_Succeeding_Repha
28693 -
28697 @@ -416,8 +394,7 @@ def map_to_use(data):
28701 -defaults = ('O', 'No_Block')
28702 -data = map_to_use(data)
28707 @@ -443,7 +420,7 @@ print ()
28711 -def print_block (block, start, end, data):
28716 @@ -458,17 +435,23 @@ def print_block (block, start, end, data):
28720 - if u in data:
28723 - d = data.get (u, defaults)
28724 - print ("%6s," % d[0], end='')
28734 total += end - start + 1
28739 -uu = sorted (data.keys ())
28742 last = -100000
28744 @@ -491,19 +474,19 @@ print ("static const uint8_t use_table[] = {")
28748 - if data[u][0] == 'O':
28751 - block = data[u][1]
28756 - while end in uu and block == data[end][1]:
28759 end = (end-1)//8*8 + 7
28762 if start - last <= 1+16*3:
28763 - print_block (None, last+1, start-1, data)
28764 + print_block (None, last+1, start-1, use_data)
28768 @@ -513,7 +496,7 @@ for u in uu:
28772 - print_block (block, start, end, data)
28776 offset += ends[-1] - starts[-1]
28777 @@ -524,8 +507,9 @@ page_bits = 12
28781 -print ("hb_use_get_category (hb_codepoint_t u)")
28788 @@ -540,7 +524,9 @@ for p in sorted(pages):
28792 -print (" return USE(O);")
28799 diff --git a/src/third_party/harfbuzz-ng/src/src/harfbuzz-subset.pc.in b/src/third_party/harfbuzz-n…
28801 --- a/src/third_party/harfbuzz-ng/src/src/harfbuzz-subset.pc.in
28802 +++ b/src/third_party/harfbuzz-ng/src/src/harfbuzz-subset.pc.in
28803 @@ -3,10 +3,10 @@ exec_prefix=%exec_prefix%
28807 -Name: harfbuzz
28812 -Requires: harfbuzz
28814 Libs: -L${libdir} -lharfbuzz-subset
28815 Cflags: -I${includedir}/harfbuzz
28816 diff --git a/src/third_party/harfbuzz-ng/src/src/harfbuzz.cc b/src/third_party/harfbuzz-ng/src/src/…
28818 --- a/src/third_party/harfbuzz-ng/src/src/harfbuzz.cc
28819 +++ b/src/third_party/harfbuzz-ng/src/src/harfbuzz.cc
28820 @@ -2,6 +2,7 @@
28821 #include "hb-aat-map.cc"
28822 #include "hb-blob.cc"
28823 #include "hb-buffer-serialize.cc"
28824 +#include "hb-buffer-verify.cc"
28825 #include "hb-buffer.cc"
28826 #include "hb-common.cc"
28827 #include "hb-draw.cc"
28828 @@ -9,7 +10,6 @@
28829 #include "hb-fallback-shape.cc"
28830 #include "hb-font.cc"
28831 #include "hb-map.cc"
28832 -#include "hb-ms-feature-ranges.cc"
28833 #include "hb-number.cc"
28834 #include "hb-ot-cff1-table.cc"
28835 #include "hb-ot-cff2-table.cc"
28836 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout-just-table.hh b/src/third_party/harf…
28838 --- a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout-just-table.hh
28839 +++ b/src/third_party/harfbuzz-ng/src/src/hb-aat-layout-just-table.hh
28840 @@ -146,7 +146,7 @@ struct DuctileGlyphAction
28841 HBUINT32 variationAxis; /* The 4-byte tag identifying the ductile axis.
28844 - HBFixed minimumLimit; /* The lowest value for the ductility axis tha
28849 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout.cc b/src/third_party/harfbuzz-ng/src…
28851 --- a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout.cc
28852 +++ b/src/third_party/harfbuzz-ng/src/src/hb-aat-layout.cc
28853 @@ -108,7 +108,7 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
28857 - {HB_TAG ('h','i','s','t'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES, HB_AAT_LAYOUT_FEA…
28862 @@ -170,6 +170,7 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
28870 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-algs.hh b/src/third_party/harfbuzz-ng/src/src/h…
28872 --- a/src/third_party/harfbuzz-ng/src/src/hb-algs.hh
28873 +++ b/src/third_party/harfbuzz-ng/src/src/hb-algs.hh
28874 @@ -211,6 +211,14 @@ struct
28889 @@ -219,7 +227,7 @@ struct
28893 - impl (const T& v, hb_priority<1>) const HB_RETURN (uint32_t, std::hash<decltype (hb_deref (v))>{…
28898 @@ -439,23 +447,29 @@ struct
28902 - impl (T1&& v1, T2 &&v2, hb_priority<2>) const HB_AUTO_RETURN
28909 - impl (T1&& v1, T2 &&v2, hb_priority<1>) const HB_AUTO_RETURN
28916 - impl (T1&& v1, T2 &&v2, hb_priority<0>) const HB_AUTO_RETURN
28931 @@ -476,11 +490,15 @@ struct hb_pair_t
28943 - hb_is_convertible (T2, T2))>
28948 @@ -874,7 +892,7 @@ hb_bsearch_impl (unsigned *pos, /* Out */
28949 #pragma GCC diagnostic ignored "-Wcast-align"
28952 - int c = compar ((const void *) hb_addressof (key), (const void *) p, ds...);
28955 max = mid - 1;
28957 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-array.hh b/src/third_party/harfbuzz-ng/src/src/…
28959 --- a/src/third_party/harfbuzz-ng/src/src/hb-array.hh
28960 +++ b/src/third_party/harfbuzz-ng/src/src/hb-array.hh
28961 @@ -412,7 +412,7 @@ bool hb_array_t<T>::operator == (const hb_array_t<T> &o) const
28965 -/* TODO Specialize opeator== for hb_bytes_t and hb_ubytes_t. */
28970 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bimap.hh b/src/third_party/harfbuzz-ng/src/src/…
28972 --- a/src/third_party/harfbuzz-ng/src/src/hb-bimap.hh
28973 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bimap.hh
28974 @@ -33,20 +33,6 @@
28975 /* Bi-directional map */
28978 - /* XXX(remove) */
28979 - void init ()
28980 - {
28981 - forw_map.init ();
28982 - back_map.init ();
28983 - }
28984 -
28985 - /* XXX(remove) */
28986 - void fini ()
28987 - {
28988 - forw_map.fini ();
28989 - back_map.fini ();
28990 - }
28991 -
28995 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bit-page.hh b/src/third_party/harfbuzz-ng/src/s…
28997 --- a/src/third_party/harfbuzz-ng/src/src/hb-bit-page.hh
28998 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bit-page.hh
28999 @@ -86,6 +86,72 @@ struct hb_bit_page_t
29054 + // Emit all the missing values from next_value up to value - 1.
29072 @@ -179,6 +245,9 @@ struct hb_bit_page_t
29075 static_assert ((PAGE_BITS & ((PAGE_BITS) - 1)) == 0, "");
29078 + static constexpr unsigned PAGE_BITMASK = PAGE_BITS - 1;
29081 static unsigned int elt_get_max (const elt_t &elt) { return hb_bit_storage (elt) - 1; }
29082 @@ -186,7 +255,10 @@ struct hb_bit_page_t
29088 static constexpr unsigned ELT_MASK = ELT_BITS - 1;
29091 static constexpr unsigned MASK = BITS - 1;
29093 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bit-set-invertible.hh b/src/third_party/harfbuz…
29095 --- a/src/third_party/harfbuzz-ng/src/src/hb-bit-set-invertible.hh
29096 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bit-set-invertible.hh
29097 @@ -323,6 +323,14 @@ struct hb_bit_set_invertible_t
29112 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bit-set.hh b/src/third_party/harfbuzz-ng/src/sr…
29114 --- a/src/third_party/harfbuzz-ng/src/src/hb-bit-set.hh
29115 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bit-set.hh
29116 @@ -203,7 +203,7 @@ struct hb_bit_set_t
29120 - if (!count) return true;
29125 @@ -222,7 +222,7 @@ struct hb_bit_set_t
29127 page->add (g);
29129 - array = (const T *) ((const char *) array + stride);
29131 count--;
29134 @@ -700,6 +700,99 @@ struct hb_bit_set_t
29160 + // The export-after value was last in the page. Start on next page.
29172 + size -= n;
29175 + return initial_size - size;
29200 + size--;
29202 + return initial_size - size;
29209 + // The export-after value was last in the page. Start on next page.
29221 + size -= n;
29226 + size--;
29228 + return initial_size - size;
29234 @@ -809,8 +902,9 @@ struct hb_bit_set_t
29238 - unsigned int get_major (hb_codepoint_t g) const { return g / page_t::PAGE_BITS; }
29239 - hb_codepoint_t major_start (unsigned int major) const { return major * page_t::PAGE_BITS; }
29246 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.hh b/src/third_party/ha…
29248 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.hh
29249 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.hh
29250 @@ -478,7 +478,7 @@ _resume:
29252 #line 58 "hb-buffer-deserialize-text.rl"
29254 - /* TODO Unescape delimeters. */
29257 tok, p - tok,
29259 @@ -535,7 +535,7 @@ _resume:
29261 #line 58 "hb-buffer-deserialize-text.rl"
29263 - /* TODO Unescape delimeters. */
29266 tok, p - tok,
29268 @@ -635,7 +635,7 @@ _resume:
29270 #line 58 "hb-buffer-deserialize-text.rl"
29272 - /* TODO Unescape delimeters. */
29275 tok, p - tok,
29277 @@ -645,7 +645,7 @@ _resume:
29279 #line 58 "hb-buffer-deserialize-text.rl"
29281 - /* TODO Unescape delimeters. */
29284 tok, p - tok,
29286 @@ -674,7 +674,7 @@ _resume:
29288 #line 58 "hb-buffer-deserialize-text.rl"
29290 - /* TODO Unescape delimeters. */
29293 tok, p - tok,
29295 @@ -701,7 +701,7 @@ _resume:
29297 #line 58 "hb-buffer-deserialize-text.rl"
29299 - /* TODO Unescape delimeters. */
29302 tok, p - tok,
29304 @@ -733,7 +733,7 @@ _again:
29306 #line 58 "hb-buffer-deserialize-text.rl"
29308 - /* TODO Unescape delimeters. */
29311 tok, p - tok,
29313 @@ -820,7 +820,7 @@ _again:
29315 #line 58 "hb-buffer-deserialize-text.rl"
29317 - /* TODO Unescape delimeters. */
29320 tok, p - tok,
29322 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.rl b/src/third_party/ha…
29324 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.rl
29325 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.rl
29326 @@ -56,7 +56,7 @@ action ensure_glyphs { if (unlikely (!buffer->ensure_glyphs ())) return false; }
29327 action ensure_unicode { if (unlikely (!buffer->ensure_unicode ())) return false; }
29330 - /* TODO Unescape delimeters. */
29333 tok, p - tok,
29335 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer-verify.cc b/src/third_party/harfbuzz-ng/…
29338 --- /dev/null
29339 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer-verify.cc
29340 @@ -0,0 +1,422 @@
29371 +#include "hb-buffer.hh"
29389 + if (buffer->messaging ())
29391 + buffer->message_impl (font, fmt, ap);
29407 + if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES ||
29408 + buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
29416 + if (info[i-1].cluster != info[i].cluster &&
29417 + (info[i-1].cluster < info[i].cluster) != is_forward)
29435 + if (buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES &&
29436 + buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
29442 + /* Check that breaking up shaping at safe-to-break is indeed safe. */
29463 + (info[end].cluster == info[end-1].cluster ||
29464 + info[end-(forward?0:1)].mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK))
29485 + unsigned int cluster = info[end - 1].cluster;
29486 + while (text_start && text[text_start - 1].cluster >= cluster)
29487 + text_start--;
29512 + hb_buffer_append (reconstruction, fragment, 0, -1);
29522 + hb_buffer_diff_flags_t diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
29525 + buffer_verify_error (buffer, font, BUFFER_VERIFY_ERROR "unsafe-to-break test failed.");
29530 + hb_buffer_append (buffer, reconstruction, 0, -1);
29547 + if (buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES &&
29548 + buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
29554 + /* Check that shuffling up text before shaping at safe-to-concat points
29559 + * 1. We shape text once. Then segment the text at all the safe-to-concat
29565 + * 3. Because all these segments were safe-to-concat at both ends, we
29569 + * segment boundaries, and that those all are safe-to-concat points.
29570 + * Moreover, that there are NOT any safe-to-concat points within the
29613 + (info[end].cluster == info[end-1].cluster ||
29644 + fragment_idx = 1 - fragment_idx;
29688 …nfo[fragment_idx][fragment_end].cluster == fragment_info[fragment_idx][fragment_end - 1].cluster ||
29695 + fragment_idx = 1 - fragment_idx;
29708 + diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
29711 + buffer_verify_error (buffer, font, BUFFER_VERIFY_ERROR "unsafe-to-concat test failed.");
29716 + hb_buffer_append (buffer, reconstruction, 0, -1);
29745 + unsigned len = text_buffer->len;
29763 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer.cc b/src/third_party/harfbuzz-ng/src/src…
29765 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer.cc
29766 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer.cc
29767 @@ -102,7 +102,7 @@ hb_segment_properties_hash (const hb_segment_properties_t *p)
29771 - * Since: REPLACEME
29776 @@ -295,7 +295,6 @@ hb_buffer_t::clear ()
29780 -
29784 @@ -405,6 +404,7 @@ hb_buffer_t::sync ()
29792 @@ -572,33 +572,6 @@ done:
29796 -void
29797 -hb_buffer_t::unsafe_to_break_impl (unsigned int start, unsigned int end)
29798 -{
29799 - unsigned int cluster = UINT_MAX;
29800 - cluster = _infos_find_min_cluster (info, start, end, cluster);
29801 - _unsafe_to_break_set_mask (info, start, end, cluster);
29802 -}
29803 -void
29804 -hb_buffer_t::unsafe_to_break_from_outbuffer (unsigned int start, unsigned int end)
29805 -{
29806 - if (!have_output)
29807 - {
29808 - unsafe_to_break_impl (start, end);
29809 - return;
29810 - }
29811 -
29812 - assert (start <= out_len);
29813 - assert (idx <= end);
29814 -
29815 - unsigned int cluster = UINT_MAX;
29816 - cluster = _infos_find_min_cluster (out_info, start, out_len, cluster);
29817 - cluster = _infos_find_min_cluster (info, idx, end, cluster);
29818 -
29819 - _unsafe_to_break_set_mask (out_info, start, out_len, cluster);
29820 - _unsafe_to_break_set_mask (info, idx, end, cluster);
29821 -}
29822 -
29826 @@ -691,14 +664,13 @@ hb_buffer_create ()
29830 - * Resets the buffer to its initial status, as if it was just newly created
29831 - * with hb_buffer_create().
29836 - * A newly allocated #hb_buffer_t, similar to hb_buffer_create(). The only
29837 - * difference is that the buffer is configured similarly to @src.
29840 - * Since: REPLACEME
29845 @@ -1817,7 +1789,7 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer,
29849 - hb_buffer_t *source,
29854 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer.h b/src/third_party/harfbuzz-ng/src/src/…
29856 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer.h
29857 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer.h
29858 @@ -76,18 +76,72 @@ typedef struct hb_glyph_info_t {
29861 * then both sides need to be re-shaped, as the
29862 - * result might be different. On the flip side,
29863 - * it means that when this flag is not present,
29864 - * then it's safe to break the glyph-run at the
29865 - * beginning of this cluster, and the two sides
29866 - * represent the exact same result one would get
29867 - * if breaking input text at the beginning of
29868 - * this cluster and shaping the two sides
29869 - * separately. This can be used to optimize
29870 - * paragraph layout, by avoiding re-shaping
29871 - * of each line after line-breaking, or limiting
29872 - * the reshaping to a small piece around the
29873 - * breaking point only.
29877 + * the glyph-run at the beginning of this
29883 + * layout, by avoiding re-shaping of each line
29884 + * after line-breaking.
29894 + * layout, by avoiding re-shaping of each line
29895 + * after line-breaking, by limiting the
29901 + * happens at line-break position, in the following
29903 + * 1. Iterate back from the line-break position
29905 + * NOT unsafe-to-concat, 2. shape the segment from
29907 + * resulting glyph-run also is clear of the
29908 + * unsafe-to-concat at its start-of-text position;
29911 + * back that is clear of unsafe-to-concat and retry
29915 + * the line-break position until the first cluster
29916 + * start position that is NOT unsafe-to-concat, 2.
29919 + * glyph-run also is clear of the unsafe-to-concat
29920 + * at its end-of-text position; if it is, just splice
29923 + * of unsafe-to-concat and retry up to there, and repeat.
29928 + * start-of-text, there is currently no position
29929 + * corresponding to end-of-text. This limitation
29931 + * and looking for unsafe-to-concat flag within text
29943 @@ -96,8 +150,9 @@ typedef struct hb_glyph_info_t {
29949 - HB_GLYPH_FLAG_DEFINED = 0x00000001 /* OR of all defined flags */
29954 @@ -305,7 +360,19 @@ hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
29958 - * character sequences (such at <0905 093E>). Since: 2.4
29970 + * glyph-flag should be produced by the shaper. By default
29975 @@ -317,7 +384,9 @@ typedef enum { /*< flags >*/
29976 HB_BUFFER_FLAG_EOT = 0x00000002u, /* End-of-text */
29979 - HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE = 0x00000010u
29986 @@ -471,7 +540,7 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer,
29990 - hb_buffer_t *source,
29995 @@ -568,24 +637,24 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
29999 - unsigned int start,
30000 - unsigned int end,
30001 - char *buf,
30002 - unsigned int buf_size,
30003 - unsigned int *buf_consumed,
30004 - hb_buffer_serialize_format_t format,
30005 - hb_buffer_serialize_flags_t flags);
30016 - unsigned int start,
30017 - unsigned int end,
30018 - char *buf,
30019 - unsigned int buf_size,
30020 - unsigned int *buf_consumed,
30021 - hb_font_t *font,
30022 - hb_buffer_serialize_format_t format,
30023 - hb_buffer_serialize_flags_t flags);
30035 @@ -597,10 +666,10 @@ hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
30039 - const char *buf,
30040 - int buf_len,
30041 - const char **end_ptr,
30042 - hb_buffer_serialize_format_t format);
30050 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer.hh b/src/third_party/harfbuzz-ng/src/src…
30052 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer.hh
30053 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer.hh
30054 @@ -67,8 +67,8 @@ enum hb_buffer_scratch_flags_t {
30058 - HB_BUFFER_SCRATCH_FLAG_HAS_UNSAFE_TO_BREAK = 0x00000010u,
30059 - HB_BUFFER_SCRATCH_FLAG_HAS_CGJ = 0x00000020u,
30065 @@ -212,6 +212,20 @@ struct hb_buffer_t
30084 unsigned int lookahead_len () const { return len - idx; }
30086 @@ -385,15 +399,87 @@ struct hb_buffer_t
30090 - void unsafe_to_break (unsigned int start,
30091 - unsigned int end)
30094 + * The start index will be from out-buffer if from_out_buffer is true.
30098 + unsigned end = (unsigned) -1,
30102 - if (end - start < 2)
30105 + if (interior && !from_out_buffer && end - start < 2)
30146 + void unsafe_to_break (unsigned int start = 0, unsigned int end = -1)
30152 + void unsafe_to_concat (unsigned int start = 0, unsigned int end = -1)
30160 + void unsafe_to_break_from_outbuffer (unsigned int start = 0, unsigned int end = -1)
30166 + void unsafe_to_concat_from_outbuffer (unsigned int start = 0, unsigned int end = -1)
30170 - unsafe_to_break_impl (start, end);
30175 - HB_INTERNAL void unsafe_to_break_impl (unsigned int start, unsigned int end);
30176 - HB_INTERNAL void unsafe_to_break_from_outbuffer (unsigned int start, unsigned int end);
30180 @@ -484,36 +570,31 @@ struct hb_buffer_t
30184 - {
30185 - if (mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK)
30186 - inf.mask |= HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
30187 - else
30188 - inf.mask &= ~HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
30189 - }
30193 -
30210 - unsigned cluster)
30217 - void
30218 - _unsafe_to_break_set_mask (hb_glyph_info_t *infos,
30219 - unsigned int start, unsigned int end,
30220 - unsigned int cluster)
30221 - {
30222 - for (unsigned int i = start; i < end; i++)
30223 - if (cluster != infos[i].cluster)
30224 - {
30225 - scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_UNSAFE_TO_BREAK;
30226 - infos[i].mask |= HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
30227 - }
30228 - }
30232 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-common.hh b/src/third_party/harfbuzz
30234 --- a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-common.hh
30235 +++ b/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-common.hh
30236 @@ -217,9 +217,6 @@ inline unsigned int OpCode_Size (op_code_t op) { return Is_OpCode_ESC (op) ? 2:
30240 - void init () { set_real (0.0); }
30241 - void fini () {}
30242 -
30246 @@ -245,7 +242,7 @@ struct number_t
30250 - double value;
30255 @@ -380,10 +377,8 @@ struct cff_stack_t
30259 - for (unsigned int i = 0; i < elements.length; i++)
30260 - elements[i].init ();
30262 - void fini () { elements.fini_deep (); }
30267 @@ -523,9 +518,6 @@ struct arg_stack_t : cff_stack_t<ARG, 513>
30271 - void init () {}
30272 - void fini () {}
30273 -
30277 @@ -553,7 +545,7 @@ struct parsed_values_t
30281 - void fini () { values.fini_deep (); }
30286 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-cs-common.hh b/src/third_party/harfb…
30288 --- a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-cs-common.hh
30289 +++ b/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-cs-common.hh
30290 @@ -94,12 +94,6 @@ struct biased_subrs_t
30294 - void init ()
30295 - {
30296 - x.init ();
30297 - y.init ();
30298 - }
30299 -
30303 @@ -128,7 +122,7 @@ struct cs_interp_env_t : interp_env_t<ARG>
30307 - pt.init ();
30312 @@ -841,7 +835,6 @@ struct path_procs_t
30316 - d.init ();
30320 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-cff2-interp-cs.hh b/src/third_party/harfbuzz-ng…
30322 --- a/src/third_party/harfbuzz-ng/src/src/hb-cff2-interp-cs.hh
30323 +++ b/src/third_party/harfbuzz-ng/src/src/hb-cff2-interp-cs.hh
30324 @@ -35,18 +35,6 @@ using namespace OT;
30328 - void init ()
30329 - {
30330 - number_t::init ();
30331 - deltas.init ();
30332 - }
30333 -
30334 - void fini ()
30335 - {
30336 - number_t::fini ();
30337 - deltas.fini_deep ();
30338 - }
30339 -
30343 @@ -202,7 +190,7 @@ struct cff2_cs_opset_t : cs_opset_t<blend_arg_t, OPSET, cff2_cs_interp_env_t, PA
30347 - /* a subroutine number shoudln't be a blended value */
30352 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-common.cc b/src/third_party/harfbuzz-ng/src/src…
30354 --- a/src/third_party/harfbuzz-ng/src/src/hb-common.cc
30355 +++ b/src/third_party/harfbuzz-ng/src/src/hb-common.cc
30356 @@ -29,7 +29,7 @@
30358 #include "hb-machinery.hh"
30360 -#if !defined(HAVE_NEWLOCALE) || !defined(HAVE_USELOCALE)
30365 @@ -41,17 +41,18 @@
30369 -using hb_locale_t = _locale_t;
30372 -using hb_locale_t = locale_t;
30380 -using hb_locale_t = void *;
30382 -#define setlocale(Category, Locale) "C"
30383 -#define uselocale(Locale) ((hb_locale_t) 0)
30389 @@ -433,7 +434,7 @@ hb_language_get_default ()
30393 - language = hb_language_from_string (setlocale (LC_CTYPE, nullptr), -1);
30394 + language = hb_language_from_string (hb_setlocale (LC_CTYPE, nullptr), -1);
30398 @@ -1064,7 +1065,7 @@ hb_variation_from_string (const char *str, int len,
30402 - hb_C_locale_lazy_loader_t>
30407 @@ -1127,9 +1128,9 @@ hb_variation_to_string (hb_variation_t *variation,
30411 - oldlocale = uselocale (get_C_locale ());
30413 len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%g", (double) variation->value));
30414 - (void) uselocale (oldlocale);
30418 len = hb_min (len, size - 1);
30419 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-common.h b/src/third_party/harfbuzz-ng/src/src/…
30421 --- a/src/third_party/harfbuzz-ng/src/src/hb-common.h
30422 +++ b/src/third_party/harfbuzz-ng/src/src/hb-common.h
30423 @@ -130,6 +130,16 @@ typedef union _hb_var_int_t {
30440 @@ -481,6 +491,7 @@ hb_language_get_default (void);
30448 @@ -697,6 +708,11 @@ typedef enum
30460 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-config.hh b/src/third_party/harfbuzz-ng/src/src…
30462 --- a/src/third_party/harfbuzz-ng/src/src/hb-config.hh
30463 +++ b/src/third_party/harfbuzz-ng/src/src/hb-config.hh
30464 @@ -55,6 +55,7 @@
30472 @@ -84,6 +85,7 @@
30480 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-coretext.cc b/src/third_party/harfbuzz-ng/src/s…
30482 --- a/src/third_party/harfbuzz-ng/src/src/hb-coretext.cc
30483 +++ b/src/third_party/harfbuzz-ng/src/src/hb-coretext.cc
30484 @@ -481,8 +481,8 @@ struct active_feature_t {
30485 a->rec.setting < b->rec.setting ? -1 : a->rec.setting > b->rec.setting ? 1 :
30488 - bool operator== (const active_feature_t *f) {
30489 - return cmp (this, f) == 0;
30495 @@ -677,7 +677,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
30497 active_features.push (event->feature);
30499 - active_feature_t *feature = active_features.find (&event->feature);
30500 + active_feature_t *feature = active_features.lsearch (event->feature);
30502 active_features.remove (feature - active_features.arrayZ);
30504 @@ -897,7 +897,7 @@ resize_and_retry:
30507 buffer->len = 0;
30508 - uint32_t status_and = ~0, status_or = 0;
30511 /* For right-to-left runs, CoreText returns the glyphs positioned such that
30513 @@ -918,7 +918,6 @@ resize_and_retry:
30517 - status_and &= run_status;
30520 if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction))
30521 @@ -1140,21 +1139,6 @@ resize_and_retry:
30522 buffer->len += num_glyphs;
30525 - /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel,
30526 - * or if it does, it doesn't respect it. So we get runs with wrong
30527 - * directions. As such, disable the assert... It wouldn't crash, but
30528 - * cursoring will be off...
30529 - *
30530 - * https://crbug.com/419769
30531 - */
30532 - if (false)
30533 - {
30534 - /* Make sure all runs had the expected direction. */
30535 - HB_UNUSED bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
30536 - assert (bool (status_and & kCTRunStatusRightToLeft) == backward);
30537 - assert (bool (status_or & kCTRunStatusRightToLeft) == backward);
30538 - }
30539 -
30540 buffer->clear_positions ();
30542 unsigned int count = buffer->len;
30543 @@ -1213,7 +1197,8 @@ resize_and_retry:
30547 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
30548 + buffer->clear_glyph_flags ();
30549 + buffer->unsafe_to_break ();
30553 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-directwrite.cc b/src/third_party/harfbuzz-ng/sr…
30555 --- a/src/third_party/harfbuzz-ng/src/src/hb-directwrite.cc
30556 +++ b/src/third_party/harfbuzz-ng/src/src/hb-directwrite.cc
30557 @@ -762,7 +762,8 @@ retry_getglyphs:
30561 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
30562 + buffer->clear_glyph_flags ();
30563 + buffer->unsafe_to_break ();
30567 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-draw.cc b/src/third_party/harfbuzz-ng/src/src/h…
30569 --- a/src/third_party/harfbuzz-ng/src/src/hb-draw.cc
30570 +++ b/src/third_party/harfbuzz-ng/src/src/hb-draw.cc
30571 @@ -25,237 +25,313 @@
30575 -#ifdef HB_EXPERIMENTAL_API
30577 #include "hb-draw.hh"
30578 -#include "hb-ot.h"
30579 -#include "hb-ot-glyf-table.hh"
30580 -#include "hb-ot-cff1-table.hh"
30581 -#include "hb-ot-cff2-table.hh"
30584 - * hb_draw_funcs_set_move_to_func:
30585 - * @funcs: draw functions object
30586 - * @move_to: move-to callback
30587 + * SECTION:hb-draw
30588 + * @title: hb-draw
30592 - * Sets move-to callback to the draw functions object.
30593 - *
30594 - * Since: EXPERIMENTAL
30597 -void
30598 -hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs,
30599 - hb_draw_move_to_func_t move_to)
30620 - if (unlikely (hb_object_is_immutable (funcs))) return;
30621 - funcs->move_to = move_to;
30622 + dfuncs->emit_cubic_to (draw_data, *st,
30623 + (st->current_x + 2.f * control_x) / 3.f,
30624 + (st->current_y + 2.f * control_y) / 3.f,
30655 + if (dfuncs->destroy.name) \
30656 + dfuncs->destroy.name (dfuncs->user_data.name); \
30659 + dfuncs->func.name = func; \
30660 + dfuncs->user_data.name = user_data; \
30661 + dfuncs->destroy.name = destroy; \
30663 + dfuncs->func.name = hb_draw_##name##_nil; \
30664 + dfuncs->user_data.name = nullptr; \
30665 + dfuncs->destroy.name = nullptr; \
30673 - * hb_draw_funcs_set_line_to_func:
30674 - * @funcs: draw functions object
30675 - * @line_to: line-to callback
30680 - * Sets line-to callback to the draw functions object.
30688 - * Since: EXPERIMENTAL
30691 -void
30692 -hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs,
30693 - hb_draw_line_to_func_t line_to)
30697 - if (unlikely (hb_object_is_immutable (funcs))) return;
30698 - funcs->line_to = line_to;
30703 + dfuncs->func = Null (hb_draw_funcs_t).func;
30721 - * hb_draw_funcs_set_quadratic_to_func:
30722 - * @funcs: draw functions object
30723 - * @move_to: quadratic-to callback
30730 - * Sets quadratic-to callback to the draw functions object.
30734 - * Since: EXPERIMENTAL
30737 -void
30738 -hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs,
30739 - hb_draw_quadratic_to_func_t quadratic_to)
30743 - if (unlikely (hb_object_is_immutable (funcs))) return;
30744 - funcs->quadratic_to = quadratic_to;
30745 - funcs->is_quadratic_to_set = true;
30750 - * hb_draw_funcs_set_cubic_to_func:
30751 - * @funcs: draw functions
30752 - * @cubic_to: cubic-to callback
30756 - * Sets cubic-to callback to the draw functions object.
30761 - * Since: EXPERIMENTAL
30765 -hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs,
30766 - hb_draw_cubic_to_func_t cubic_to)
30769 - if (unlikely (hb_object_is_immutable (funcs))) return;
30770 - funcs->cubic_to = cubic_to;
30774 + if (dfuncs->destroy.name) dfuncs->destroy.name (dfuncs->user_data.name);
30783 - * hb_draw_funcs_set_close_path_func:
30784 - * @funcs: draw functions object
30785 - * @close_path: close-path callback
30789 - * Sets close-path callback to the draw functions object.
30792 - * Since: EXPERIMENTAL
30796 -hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs,
30797 - hb_draw_close_path_func_t close_path)
30800 - if (unlikely (hb_object_is_immutable (funcs))) return;
30801 - funcs->close_path = close_path;
30802 -}
30803 -
30804 -static void
30805 -_move_to_nil (hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, void *user_data HB_UNUSE…
30806 -
30807 -static void
30808 -_line_to_nil (hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, void *user_data HB_UNUSE…
30809 -
30810 -static void
30811 -_quadratic_to_nil (hb_position_t control_x HB_UNUSED, hb_position_t control_y HB_UNUSED,
30812 - hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED,
30813 - void *user_data HB_UNUSED) {}
30814 -
30815 -static void
30816 -_cubic_to_nil (hb_position_t control1_x HB_UNUSED, hb_position_t control1_y HB_UNUSED,
30817 - hb_position_t control2_x HB_UNUSED, hb_position_t control2_y HB_UNUSED,
30818 - hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED,
30819 - void *user_data HB_UNUSED) {}
30823 -static void
30824 -_close_path_nil (void *user_data HB_UNUSED) {}
30829 - * hb_draw_funcs_create:
30833 - * Creates a new draw callbacks object.
30838 - * Since: EXPERIMENTAL
30841 -hb_draw_funcs_t *
30842 -hb_draw_funcs_create ()
30846 - hb_draw_funcs_t *funcs;
30847 - if (unlikely (!(funcs = hb_object_create<hb_draw_funcs_t> ())))
30848 - return const_cast<hb_draw_funcs_t *> (&Null (hb_draw_funcs_t));
30849 -
30850 - funcs->move_to = (hb_draw_move_to_func_t) _move_to_nil;
30851 - funcs->line_to = (hb_draw_line_to_func_t) _line_to_nil;
30852 - funcs->quadratic_to = (hb_draw_quadratic_to_func_t) _quadratic_to_nil;
30853 - funcs->is_quadratic_to_set = false;
30854 - funcs->cubic_to = (hb_draw_cubic_to_func_t) _cubic_to_nil;
30855 - funcs->close_path = (hb_draw_close_path_func_t) _close_path_nil;
30856 - return funcs;
30862 - * hb_draw_funcs_reference:
30863 - * @funcs: draw functions
30868 + * @to_x: X component of target point
30869 + * @to_y: Y component of target point
30871 - * Add to callbacks object refcount.
30872 + * Perform a "move-to" draw operation.
30874 - * Returns: The same object.
30875 - * Since: EXPERIMENTAL
30878 -hb_draw_funcs_t *
30879 -hb_draw_funcs_reference (hb_draw_funcs_t *funcs)
30885 - return hb_object_reference (funcs);
30886 + dfuncs->move_to (draw_data, *st,
30891 - * hb_draw_funcs_destroy:
30892 - * @funcs: draw functions
30897 + * @to_x: X component of target point
30898 + * @to_y: Y component of target point
30900 - * Decreases refcount of callbacks object and deletes the object if it reaches
30901 - * to zero.
30902 + * Perform a "line-to" draw operation.
30904 - * Since: EXPERIMENTAL
30908 -hb_draw_funcs_destroy (hb_draw_funcs_t *funcs)
30913 - if (!hb_object_destroy (funcs)) return;
30914 -
30915 - hb_free (funcs);
30916 + dfuncs->line_to (draw_data, *st,
30921 - * hb_draw_funcs_make_immutable:
30922 - * @funcs: draw functions
30929 + * @to_x: X component of target point
30930 + * @to_y: Y component of target point
30932 - * Makes funcs object immutable.
30933 + * Perform a "quadratic-to" draw operation.
30935 - * Since: EXPERIMENTAL
30939 -hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs)
30945 - if (hb_object_is_immutable (funcs))
30946 - return;
30947 -
30948 - hb_object_make_immutable (funcs);
30949 + dfuncs->quadratic_to (draw_data, *st,
30955 - * hb_draw_funcs_is_immutable:
30956 - * @funcs: draw functions
30965 + * @to_x: X component of target point
30966 + * @to_y: Y component of target point
30968 - * Checks whether funcs is immutable.
30969 + * Perform a "cubic-to" draw operation.
30971 - * Returns: If is immutable.
30972 - * Since: EXPERIMENTAL
30975 -hb_bool_t
30976 -hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs)
30984 - return hb_object_is_immutable (funcs);
30985 + dfuncs->cubic_to (draw_data, *st,
30992 - * hb_font_draw_glyph:
30993 - * @font: a font object
30994 - * @glyph: a glyph id
30995 - * @funcs: draw callbacks object
30996 - * @user_data: parameter you like be passed to the callbacks when are called
31002 - * Draw a glyph.
31003 + * Perform a "close-path" draw operation.
31005 - * Returns: Whether the font had the glyph and the operation completed successfully.
31006 - * Since: EXPERIMENTAL
31009 -hb_bool_t
31010 -hb_font_draw_glyph (hb_font_t *font, hb_codepoint_t glyph,
31011 - const hb_draw_funcs_t *funcs,
31012 - void *user_data)
31017 - if (unlikely (funcs == &Null (hb_draw_funcs_t) ||
31018 - glyph >= font->face->get_num_glyphs ()))
31019 - return false;
31020 -
31021 - draw_helper_t draw_helper (funcs, user_data);
31022 - if (font->face->table.glyf->get_path (font, glyph, draw_helper)) return true;
31023 -#ifndef HB_NO_CFF
31024 - if (font->face->table.cff1->get_path (font, glyph, draw_helper)) return true;
31025 - if (font->face->table.cff2->get_path (font, glyph, draw_helper)) return true;
31026 -#endif
31027 -
31028 - return false;
31029 + dfuncs->close_path (draw_data, *st);
31032 -#endif
31035 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-draw.h b/src/third_party/harfbuzz-ng/src/src/hb
31037 --- a/src/third_party/harfbuzz-ng/src/src/hb-draw.h
31038 +++ b/src/third_party/harfbuzz-ng/src/src/hb-draw.h
31039 @@ -33,65 +33,292 @@
31043 -#ifdef HB_EXPERIMENTAL_API
31044 -typedef void (*hb_draw_move_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data);
31045 -typedef void (*hb_draw_line_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data);
31046 -typedef void (*hb_draw_quadratic_to_func_t) (hb_position_t control_x, hb_position_t control_y,
31047 - hb_position_t to_x, hb_position_t to_y,
31048 - void *user_data);
31049 -typedef void (*hb_draw_cubic_to_func_t) (hb_position_t control1_x, hb_position_t control1_y,
31050 - hb_position_t control2_x, hb_position_t control2_y,
31051 - hb_position_t to_x, hb_position_t to_y,
31052 - void *user_data);
31053 -typedef void (*hb_draw_close_path_func_t) (void *user_data);
31099 - * _move_to, _line_to and _cubic_to calls are nessecary to be defined but we
31100 - * translate _quadratic_to calls to _cubic_to if the callback isn't defined.
31106 - * Since: EXPERIMENTAL
31118 + * @to_x: X component of target point
31119 + * @to_y: Y component of target point
31122 + * A virtual method for the #hb_draw_funcs_t to perform a "move-to" draw
31138 + * @to_x: X component of target point
31139 + * @to_y: Y component of target point
31142 + * A virtual method for the #hb_draw_funcs_t to perform a "line-to" draw
31160 + * @to_x: X component of target point
31161 + * @to_y: Y component of target point
31164 + * A virtual method for the #hb_draw_funcs_t to perform a "quadratic-to" draw
31185 + * @to_x: X component of target point
31186 + * @to_y: Y component of target point
31189 + * A virtual method for the #hb_draw_funcs_t to perform a "cubic-to" draw
31209 + * A virtual method for the #hb_draw_funcs_t to perform a "close-path" draw
31222 + * @func: (closure user_data) (destroy destroy) (scope notified): move-to callback
31226 + * Sets move-to callback to the draw functions object.
31231 -hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs,
31232 - hb_draw_move_to_func_t move_to);
31240 + * @func: (closure user_data) (destroy destroy) (scope notified): line-to callback
31244 + * Sets line-to callback to the draw functions object.
31249 -hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs,
31250 - hb_draw_line_to_func_t line_to);
31258 + * @func: (closure user_data) (destroy destroy) (scope notified): quadratic-to callback
31262 + * Sets quadratic-to callback to the draw functions object.
31267 -hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs,
31268 - hb_draw_quadratic_to_func_t quadratic_to);
31276 + * @func: (closure user_data) (destroy destroy) (scope notified): cubic-to callback
31280 + * Sets cubic-to callback to the draw functions object.
31285 -hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs,
31286 - hb_draw_cubic_to_func_t cubic_to);
31294 + * @func: (closure user_data) (destroy destroy) (scope notified): close-path callback
31298 + * Sets close-path callback to the draw functions object.
31303 -hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs,
31304 - hb_draw_close_path_func_t close_path);
31314 -hb_draw_funcs_reference (hb_draw_funcs_t *funcs);
31318 -hb_draw_funcs_destroy (hb_draw_funcs_t *funcs);
31322 -hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs);
31326 -hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs);
31327 -#endif
31361 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-draw.hh b/src/third_party/harfbuzz-ng/src/src/h…
31363 --- a/src/third_party/harfbuzz-ng/src/src/hb-draw.hh
31364 +++ b/src/third_party/harfbuzz-ng/src/src/hb-draw.hh
31365 @@ -27,113 +27,205 @@
31369 -#ifdef HB_EXPERIMENTAL_API
31370 -struct hb_draw_funcs_t
31371 -{
31372 - hb_object_header_t header;
31374 - hb_draw_move_to_func_t move_to;
31375 - hb_draw_line_to_func_t line_to;
31376 - hb_draw_quadratic_to_func_t quadratic_to;
31377 - bool is_quadratic_to_set;
31378 - hb_draw_cubic_to_func_t cubic_to;
31379 - hb_draw_close_path_func_t close_path;
31380 -};
31391 + /* ^--- Add new callbacks here */
31393 -struct draw_helper_t
31396 - draw_helper_t (const hb_draw_funcs_t *funcs_, void *user_data_)
31397 - {
31398 - funcs = funcs_;
31399 - user_data = user_data_;
31400 - path_open = false;
31401 - path_start_x = current_x = path_start_y = current_y = 0;
31402 - }
31403 - ~draw_helper_t () { end_path (); }
31406 - void move_to (hb_position_t x, hb_position_t y)
31459 - if (path_open) end_path ();
31460 - current_x = path_start_x = x;
31461 - current_y = path_start_y = y;
31467 - void line_to (hb_position_t x, hb_position_t y)
31471 - if (equal_to_current (x, y)) return;
31472 - if (!path_open) start_path ();
31473 - funcs->line_to (x, y, user_data);
31474 - current_x = x;
31475 - current_y = y;
31483 - quadratic_to (hb_position_t control_x, hb_position_t control_y,
31484 - hb_position_t to_x, hb_position_t to_y)
31489 - if (equal_to_current (control_x, control_y) && equal_to_current (to_x, to_y))
31490 - return;
31491 - if (!path_open) start_path ();
31492 - if (funcs->is_quadratic_to_set)
31493 - funcs->quadratic_to (control_x, control_y, to_x, to_y, user_data);
31494 - else
31495 - funcs->cubic_to (roundf ((current_x + 2.f * control_x) / 3.f),
31496 - roundf ((current_y + 2.f * control_y) / 3.f),
31497 - roundf ((to_x + 2.f * control_x) / 3.f),
31498 - roundf ((to_y + 2.f * control_y) / 3.f),
31499 - to_x, to_y, user_data);
31500 - current_x = to_x;
31501 - current_y = to_y;
31509 - cubic_to (hb_position_t control1_x, hb_position_t control1_y,
31510 - hb_position_t control2_x, hb_position_t control2_y,
31511 - hb_position_t to_x, hb_position_t to_y)
31517 - if (equal_to_current (control1_x, control1_y) &&
31518 - equal_to_current (control2_x, control2_y) &&
31519 - equal_to_current (to_x, to_y))
31520 - return;
31521 - if (!path_open) start_path ();
31522 - funcs->cubic_to (control1_x, control1_y, control2_x, control2_y, to_x, to_y, user_data);
31523 - current_x = to_x;
31524 - current_y = to_y;
31531 - void end_path ()
31535 - if (path_open)
31538 - if ((path_start_x != current_x) || (path_start_y != current_y))
31539 - funcs->line_to (path_start_x, path_start_y, user_data);
31540 - funcs->close_path (user_data);
31545 - path_open = false;
31546 - path_start_x = current_x = path_start_y = current_y = 0;
31552 - bool equal_to_current (hb_position_t x, hb_position_t y)
31553 - { return current_x == x && current_y == y; }
31555 - void start_path ()
31558 - if (path_open) end_path ();
31559 - path_open = true;
31560 - funcs->move_to (path_start_x, path_start_y, user_data);
31570 - hb_position_t path_start_x;
31571 - hb_position_t path_start_y;
31579 - hb_position_t current_x;
31580 - hb_position_t current_y;
31583 - bool path_open;
31584 - const hb_draw_funcs_t *funcs;
31585 - void *user_data;
31589 + funcs->move_to (draw_data, st,
31592 + funcs->move_to (draw_data, st,
31598 + funcs->line_to (draw_data, st,
31601 + funcs->line_to (draw_data, st,
31609 + funcs->quadratic_to (draw_data, st,
31613 + funcs->quadratic_to (draw_data, st,
31623 + funcs->cubic_to (draw_data, st,
31628 + funcs->cubic_to (draw_data, st,
31635 + funcs->close_path (draw_data, st);
31645 -#endif
31648 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-font.cc b/src/third_party/harfbuzz-ng/src/src/h…
31650 --- a/src/third_party/harfbuzz-ng/src/src/hb-font.cc
31651 +++ b/src/third_party/harfbuzz-ng/src/src/hb-font.cc
31652 @@ -29,6 +29,7 @@
31655 #include "hb-font.hh"
31656 +#include "hb-draw.hh"
31657 #include "hb-machinery.hh"
31659 #include "hb-ot.h"
31660 @@ -501,6 +502,136 @@ hb_font_get_glyph_from_name_default (hb_font_t *font,
31661 return font->parent->get_glyph_from_name (name, len, glyph);
31690 + float x_scale = adaptor->x_scale;
31691 + float y_scale = adaptor->y_scale;
31693 + adaptor->draw_funcs->emit_move_to (adaptor->draw_data, *st,
31704 + float x_scale = adaptor->x_scale;
31705 + float y_scale = adaptor->y_scale;
31707 + st->current_x *= x_scale;
31708 + st->current_y *= y_scale;
31710 + adaptor->draw_funcs->emit_line_to (adaptor->draw_data, *st,
31722 + float x_scale = adaptor->x_scale;
31723 + float y_scale = adaptor->y_scale;
31725 + st->current_x *= x_scale;
31726 + st->current_y *= y_scale;
31728 + adaptor->draw_funcs->emit_quadratic_to (adaptor->draw_data, *st,
31742 + float x_scale = adaptor->x_scale;
31743 + float y_scale = adaptor->y_scale;
31745 + st->current_x *= x_scale;
31746 + st->current_y *= y_scale;
31748 + adaptor->draw_funcs->emit_cubic_to (adaptor->draw_data, *st,
31761 + adaptor->draw_funcs->emit_close_path (adaptor->draw_data, *st);
31785 + (float) font->x_scale / (float) font->parent->x_scale,
31786 + (float) font->y_scale / (float) font->parent->y_scale
31789 + font->parent->get_glyph_shape (glyph,
31797 @@ -1168,6 +1299,26 @@ hb_font_get_glyph_from_name (hb_font_t *font,
31798 return font->get_glyph_from_name (name, len, glyph);
31819 + font->get_glyph_shape (glyph, dfuncs, draw_data);
31822 /* A bit higher-level, and with fallback */
31824 @@ -1190,7 +1341,7 @@ hb_font_get_extents_for_direction (hb_font_t *font,
31828 - return font->get_extents_for_direction (direction, extents);
31829 + font->get_extents_for_direction (direction, extents);
31833 @@ -1215,7 +1366,7 @@ hb_font_get_glyph_advance_for_direction (hb_font_t *font,
31837 - return font->get_glyph_advance_for_direction (glyph, direction, x, y);
31838 + font->get_glyph_advance_for_direction (glyph, direction, x, y);
31842 @@ -1544,8 +1695,10 @@ hb_font_create (hb_face_t *face)
31847 if (face && face->index >> 16)
31848 hb_font_set_var_named_instance (font, (face->index >> 16) - 1);
31853 @@ -2042,16 +2195,20 @@ hb_font_get_ptem (hb_font_t *font)
31857 - * Synthetic slant is the graphical skew that the renderer
31858 - * applies to the font at rendering time.
31872 - * Since: REPLACEME
31877 @@ -2071,7 +2228,7 @@ hb_font_set_synthetic_slant (hb_font_t *font, float slant)
31881 - * Since: REPLACEME
31886 @@ -2264,7 +2421,7 @@ hb_font_set_var_coords_normalized (hb_font_t *font,
31890 - * @length: Number of coordinates retrieved
31895 @@ -2275,6 +2432,8 @@ hb_font_set_var_coords_normalized (hb_font_t *font,
31904 @@ -2290,18 +2449,21 @@ hb_font_get_var_coords_normalized (hb_font_t *font,
31908 - * @length: (out): number of coordinates
31911 - * Return value is valid as long as variation coordinates of the font
31912 - * are not modified.
31913 + * Fetches the list of variation coordinates (in design-space units) currently
31925 - * Since: REPLACEME
31930 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-font.h b/src/third_party/harfbuzz-ng/src/src/hb
31932 --- a/src/third_party/harfbuzz-ng/src/src/hb-font.h
31933 +++ b/src/third_party/harfbuzz-ng/src/src/hb-font.h
31934 @@ -511,6 +511,25 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void…
31960 @@ -770,6 +789,22 @@ hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
31966 + * @ffuncs: A font-function structure
31983 @@ -850,6 +885,11 @@ hb_font_get_glyph_from_name (hb_font_t *font,
31984 const char *name, int len, /* -1 means nul-terminated */
31993 /* high-level funcs, with fallback */
31995 @@ -1056,11 +1096,6 @@ HB_EXTERN void
31999 -#ifdef HB_EXPERIMENTAL_API
32000 -HB_EXTERN hb_bool_t
32001 -hb_font_draw_glyph (hb_font_t *font, hb_codepoint_t glyph,
32002 - const hb_draw_funcs_t *funcs, void *user_data);
32003 -#endif
32007 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-font.hh b/src/third_party/harfbuzz-ng/src/src/h…
32009 --- a/src/third_party/harfbuzz-ng/src/src/hb-font.hh
32010 +++ b/src/third_party/harfbuzz-ng/src/src/hb-font.hh
32011 @@ -57,6 +57,7 @@
32016 /* ^--- Add new callbacks here */
32019 @@ -140,6 +141,8 @@ struct hb_font_t
32028 @@ -373,6 +376,15 @@ struct hb_font_t
32029 klass->user_data.glyph_from_name);
32035 + klass->get.f.glyph_shape (this, user_data,
32038 + klass->user_data.glyph_shape);
32042 /* A bit higher-level, and with fallback */
32044 @@ -625,7 +637,9 @@ struct hb_font_t
32048 - { return (hb_position_t) roundf (v * scale / face->get_upem ()); }
32051 + { return v * scale / face->get_upem (); }
32053 { return (float) v * scale / face->get_upem (); }
32055 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ft.cc b/src/third_party/harfbuzz-ng/src/src/hb-
32057 --- a/src/third_party/harfbuzz-ng/src/src/hb-ft.cc
32058 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ft.cc
32059 @@ -33,12 +33,14 @@
32061 #include "hb-ft.h"
32063 +#include "hb-draw.hh"
32064 #include "hb-font.hh"
32065 #include "hb-machinery.hh"
32066 #include "hb-cache.hh"
32074 @@ -380,6 +382,7 @@ hb_ft_get_glyph_v_advance (hb_font_t *font,
32079 return (-v + (1<<9)) >> 10;
32082 @@ -565,6 +568,82 @@ hb_ft_get_font_h_extents (hb_font_t *font HB_UNUSED,
32092 + drawing->move_to (to->x, to->y);
32100 + drawing->line_to (to->x, to->y);
32109 + drawing->quadratic_to (control->x, control->y,
32110 + to->x, to->y);
32120 + drawing->cubic_to (control1->x, control1->y,
32121 + control2->x, control2->y,
32122 + to->x, to->y);
32134 + hb_lock_t lock (ft_font->lock);
32135 + FT_Face ft_face = ft_font->ft_face;
32138 + FT_LOAD_NO_BITMAP | ft_font->load_flags)))
32141 + if (ft_face->glyph->format != FT_GLYPH_FORMAT_OUTLINE)
32153 + hb_draw_session_t draw_session (draw_funcs, draw_data, font->slant_xy);
32155 + FT_Outline_Decompose (&ft_face->glyph->outline,
32165 @@ -596,6 +675,10 @@ static struct hb_ft_font_funcs_lazy_loader_t : hb_font_funcs_lazy_loader_t<hb_…
32176 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.cc b/src/third_party/harfbuzz-n…
32178 --- a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.cc
32179 +++ b/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.cc
32180 @@ -90,6 +90,7 @@ hb_gobject_##name##_get_type () \
32188 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.h b/src/third_party/harfbuzz-ng…
32190 --- a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.h
32191 +++ b/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.h
32192 @@ -48,6 +48,10 @@ HB_EXTERN GType
32203 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-graphite2.cc b/src/third_party/harfbuzz-ng/src/…
32205 --- a/src/third_party/harfbuzz-ng/src/src/hb-graphite2.cc
32206 +++ b/src/third_party/harfbuzz-ng/src/src/hb-graphite2.cc
32207 @@ -439,7 +439,8 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan HB_UNUSED,
32211 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
32212 + buffer->clear_glyph_flags ();
32213 + buffer->unsafe_to_break ();
32217 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-iter.hh b/src/third_party/harfbuzz-ng/src/src/h…
32219 --- a/src/third_party/harfbuzz-ng/src/src/hb-iter.hh
32220 +++ b/src/third_party/harfbuzz-ng/src/src/hb-iter.hh
32221 @@ -90,8 +90,8 @@ struct hb_iter_t
32223 * TODO Use a wrapper return type to fix for non-reference type. */
32225 - hb_enable_if (hb_is_reference (T))>
32226 - hb_remove_reference<item_t>* operator -> () const { return hb_addressof (**thiz()); }
32228 + hb_remove_reference<item_t>* operator -> () const { return std::addressof (**thiz()); }
32229 item_t operator * () const { return thiz()->__item__ (); }
32230 item_t operator * () { return thiz()->__item__ (); }
32231 item_t operator [] (unsigned i) const { return thiz()->__item_at__ (i); }
32232 @@ -289,7 +289,7 @@ struct hb_is_source_of
32236 - hb_enable_if (hb_is_convertible (typename Iter2::item_t, hb_add_lvalue_reference<hb_add_const…
32240 …static auto impl (hb_priority<1>) -> decltype (hb_declval (Iter2) >> hb_declval (Item &), hb_true_…
32241 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-kern.hh b/src/third_party/harfbuzz-ng/src/src/h…
32243 --- a/src/third_party/harfbuzz-ng/src/src/hb-kern.hh
32244 +++ b/src/third_party/harfbuzz-ng/src/src/hb-kern.hh
32245 @@ -49,6 +49,10 @@ struct hb_kern_machine_t
32249 + if (!buffer->message (font, "start kern"))
32252 + buffer->unsafe_to_concat ();
32256 @@ -67,7 +71,8 @@ struct hb_kern_machine_t
32260 - if (!skippy_iter.next ())
32266 @@ -125,6 +130,8 @@ struct hb_kern_machine_t
32271 + (void) buffer->message (font, "end kern");
32275 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-machinery.hh b/src/third_party/harfbuzz-ng/src/…
32277 --- a/src/third_party/harfbuzz-ng/src/src/hb-machinery.hh
32278 +++ b/src/third_party/harfbuzz-ng/src/src/hb-machinery.hh
32279 @@ -194,7 +194,8 @@ struct hb_lazy_loader_t : hb_data_wrapper_t<Data, WheresData>
32282 const Returned * operator -> () const { return get (); }
32283 - const Returned & operator * () const { return *get (); }
32289 @@ -244,19 +245,19 @@ struct hb_lazy_loader_t : hb_data_wrapper_t<Data, WheresData>
32293 - p->init (data);
32301 - p->init ();
32307 - p->fini ();
32308 + p->~Stored ();
32312 @@ -272,14 +273,19 @@ struct hb_face_lazy_loader_t : hb_lazy_loader_t<T,
32316 -template <typename T, unsigned int WheresFace>
32319 - hb_table_lazy_loader_t<T, WheresFace>,
32325 - { return hb_sanitize_context_t ().reference_table<T> (face); }
32335 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-map.hh b/src/third_party/harfbuzz-ng/src/src/hb
32337 --- a/src/third_party/harfbuzz-ng/src/src/hb-map.hh
32338 +++ b/src/third_party/harfbuzz-ng/src/src/hb-map.hh
32339 @@ -37,13 +37,10 @@
32343 - k_invalid_t kINVALID = hb_is_pointer (K) ? 0 : std::is_signed<K>::value ? hb_int_min (K) : (K)
32344 - v_invalid_t vINVALID = hb_is_pointer (V) ? 0 : std::is_signed<V>::value ? hb_int_min (V) : (V)
32345 …id_t kINVALID = std::is_pointer<K>::value ? 0 : std::is_signed<K>::value ? hb_int_min (K) : (K) -1,
32346 …id_t vINVALID = std::is_pointer<V>::value ? 0 : std::is_signed<V>::value ? hb_int_min (V) : (V) -1>
32349 - static constexpr K INVALID_KEY = kINVALID;
32350 - static constexpr V INVALID_VALUE = vINVALID;
32351 -
32355 @@ -64,36 +61,38 @@ struct hb_hashmap_t
32359 - static_assert (std::is_trivially_copyable<K>::value, "");
32360 - static_assert (std::is_trivially_copyable<V>::value, "");
32361 - static_assert (std::is_trivially_destructible<K>::value, "");
32362 - static_assert (std::is_trivially_destructible<V>::value, "");
32363 -
32370 - void clear () { key = kINVALID; value = vINVALID; hash = 0; }
32384 - const K inv = kINVALID;
32390 - const K kinv = kINVALID;
32391 - const V vinv = vINVALID;
32398 - const K kinv = kINVALID;
32399 - const V vinv = vINVALID;
32405 @@ -132,8 +131,13 @@ struct hb_hashmap_t
32409 - hb_free (items);
32410 - items = nullptr;
32421 @@ -177,10 +181,15 @@ struct hb_hashmap_t
32437 @@ -192,22 +201,22 @@ struct hb_hashmap_t
32441 - if (unlikely (!items)) return vINVALID;
32444 - return items[i].is_real () && items[i] == key ? items[i].value : vINVALID;
32448 - void del (K key) { set (key, vINVALID); }
32452 - static constexpr V SENTINEL = vINVALID;
32459 - return v != SENTINEL;
32465 @@ -262,12 +271,12 @@ struct hb_hashmap_t
32469 - const K kinv = kINVALID;
32475 - const V vinv = vINVALID;
32478 return true; /* Trying to delete non-existent key. */
32480 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-meta.hh b/src/third_party/harfbuzz-ng/src/src/h…
32482 --- a/src/third_party/harfbuzz-ng/src/src/hb-meta.hh
32483 +++ b/src/third_party/harfbuzz-ng/src/src/hb-meta.hh
32484 @@ -29,6 +29,7 @@
32492 @@ -85,30 +86,13 @@ template <> struct hb_priority<0> {};
32496 -struct
32497 -{
32498 - template <typename T> constexpr T*
32499 - operator () (T& arg) const
32500 - {
32501 -#pragma GCC diagnostic push
32502 -#pragma GCC diagnostic ignored "-Wcast-align"
32503 - /* https://en.cppreference.com/w/cpp/memory/addressof */
32504 - return reinterpret_cast<T*> (
32505 - &const_cast<char&> (
32506 - reinterpret_cast<const volatile char&> (arg)));
32507 -#pragma GCC diagnostic pop
32508 - }
32509 -}
32510 -HB_FUNCOBJ (hb_addressof);
32511 -
32518 -template <typename T> using hb_add_const = const T;
32519 -#define hb_is_const(T) hb_match_const<T>::value
32524 @@ -119,14 +103,13 @@ template <typename T> using hb_add_lvalue_reference = decltype (_hb_try_add_l…
32525 template <typename T> auto _hb_try_add_rvalue_reference (hb_priority<1>) -> hb_type_identity<T&&>;
32526 template <typename T> auto _hb_try_add_rvalue_reference (hb_priority<0>) -> hb_type_identity<T>;
32528 -#define hb_is_reference(T) hb_match_reference<T>::value
32533 …template <typename T> auto _hb_try_add_pointer (hb_priority<1>) -> hb_type_identity<hb_remove_refe…
32534 template <typename T> auto _hb_try_add_pointer (hb_priority<1>) -> hb_type_identity<T>;
32536 -#define hb_is_pointer(T) hb_match_pointer<T>::value
32539 /* TODO Add feature-parity to std::decay. */
32540 @@ -137,8 +120,8 @@ template <typename T> using hb_decay = hb_remove_const<hb_remove_reference<T>>;
32544 - (!hb_is_const (From) || hb_is_const (To)) &&
32545 - (!hb_is_reference (To) || hb_is_const (To) || hb_is_reference (To))
32551 @@ -153,16 +136,6 @@ struct
32555 -struct
32556 -{
32557 - template <typename T> constexpr auto
32558 - operator () (T&& v) const HB_AUTO_RETURN (std::forward<T> (v))
32559 -
32560 - template <typename T> constexpr auto
32561 - operator () (T& v) const HB_AUTO_RETURN (hb_addressof (v))
32562 -}
32563 -HB_FUNCOBJ (hb_ref);
32564 -
32568 @@ -176,7 +149,7 @@ struct hb_reference_wrapper
32572 - hb_reference_wrapper (T& v) : v (hb_addressof (v)) {}
32577 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.cc b/src/third_party/harfbuzz
32580 --- a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.cc
32582 @@ -1,177 +0,0 @@
32583 -/*
32584 - * Copyright © 2011,2012,2013 Google, Inc.
32585 - * Copyright © 2021 Khaled Hosny
32586 - *
32587 - * This is part of HarfBuzz, a text shaping library.
32588 - *
32589 - * Permission is hereby granted, without written agreement and without
32590 - * license or royalty fees, to use, copy, modify, and distribute this
32591 - * software and its documentation for any purpose, provided that the
32592 - * above copyright notice and the following two paragraphs appear in
32593 - * all copies of this software.
32594 - *
32595 - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
32596 - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
32597 - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
32598 - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
32599 - * DAMAGE.
32600 - *
32601 - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
32602 - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
32603 - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
32604 - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
32605 - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
32606 - *
32607 - * Google Author(s): Behdad Esfahbod
32608 - */
32609 -
32610 -#include "hb-ms-feature-ranges.hh"
32611 -
32612 -bool
32613 -hb_ms_setup_features (const hb_feature_t *features,
32614 - unsigned int num_features,
32615 - hb_vector_t<hb_ms_feature_t> &feature_records, /* OUT */
32616 - hb_vector_t<hb_ms_range_record_t> &range_records /* OUT */)
32617 -{
32618 - feature_records.shrink(0);
32619 - range_records.shrink(0);
32620 -
32621 - /* Sort features by start/end events. */
32622 - hb_vector_t<hb_ms_feature_event_t> feature_events;
32623 - for (unsigned int i = 0; i < num_features; i++)
32624 - {
32625 - hb_ms_active_feature_t feature;
32626 - feature.fea.tag_le = hb_uint32_swap (features[i].tag);
32627 - feature.fea.value = features[i].value;
32628 - feature.order = i;
32629 -
32630 - hb_ms_feature_event_t *event;
32631 -
32632 - event = feature_events.push ();
32633 - event->index = features[i].start;
32634 - event->start = true;
32635 - event->feature = feature;
32636 -
32637 - event = feature_events.push ();
32638 - event->index = features[i].end;
32639 - event->start = false;
32640 - event->feature = feature;
32641 - }
32642 - feature_events.qsort ();
32643 - /* Add a strategic final event. */
32644 - {
32645 - hb_ms_active_feature_t feature;
32646 - feature.fea.tag_le = 0;
32647 - feature.fea.value = 0;
32648 - feature.order = num_features + 1;
32649 -
32650 - auto *event = feature_events.push ();
32651 - event->index = 0; /* This value does magic. */
32652 - event->start = false;
32653 - event->feature = feature;
32654 - }
32655 -
32656 - /* Scan events and save features for each range. */
32657 - hb_vector_t<hb_ms_active_feature_t> active_features;
32658 - unsigned int last_index = 0;
32659 - for (unsigned int i = 0; i < feature_events.length; i++)
32660 - {
32661 - auto *event = &feature_events[i];
32662 -
32663 - if (event->index != last_index)
32664 - {
32665 - /* Save a snapshot of active features and the range. */
32666 - auto *range = range_records.push ();
32667 - auto offset = feature_records.length;
32668 -
32669 - active_features.qsort ();
32670 - for (unsigned int j = 0; j < active_features.length; j++)
32671 - {
32672 - if (!j || active_features[j].fea.tag_le != feature_records[feature_records.length - 1].tag…
32673 - {
32674 - feature_records.push (active_features[j].fea);
32675 - }
32676 - else
32677 - {
32678 - /* Overrides value for existing feature. */
32679 - feature_records[feature_records.length - 1].value = active_features[j].fea.value;
32680 - }
32681 - }
32682 -
32683 - /* Will convert to pointer after all is ready, since feature_records.array
32684 - * may move as we grow it. */
32685 - range->features.features = reinterpret_cast<hb_ms_feature_t *> (offset);
32686 - range->features.num_features = feature_records.length - offset;
32687 - range->index_first = last_index;
32688 - range->index_last = event->index - 1;
32689 -
32690 - last_index = event->index;
32691 - }
32692 -
32693 - if (event->start)
32694 - {
32695 - active_features.push (event->feature);
32696 - }
32697 - else
32698 - {
32699 - auto *feature = active_features.find (&event->feature);
32700 - if (feature)
32701 - active_features.remove (feature - active_features.arrayZ);
32702 - }
32703 - }
32704 -
32705 - if (!range_records.length) /* No active feature found. */
32706 - num_features = 0;
32707 -
32708 - /* Fixup the pointers. */
32709 - for (unsigned int i = 0; i < range_records.length; i++)
32710 - {
32711 - auto *range = &range_records[i];
32712 - range->features.features = (hb_ms_feature_t *) feature_records + reinterpret_cast<uintptr_t> (…
32713 - }
32714 -
32715 - return !!num_features;
32716 -}
32717 -
32718 -void
32719 -hb_ms_make_feature_ranges (hb_vector_t<hb_ms_feature_t> &feature_records,
32720 - hb_vector_t<hb_ms_range_record_t> &range_records,
32721 - unsigned int chars_offset,
32722 - unsigned int chars_len,
32723 - uint16_t *log_clusters,
32724 - hb_vector_t<hb_ms_features_t*> &range_features, /* OUT */
32725 - hb_vector_t<uint32_t> &range_counts /* OUT */)
32726 -{
32727 - range_features.shrink (0);
32728 - range_counts.shrink (0);
32729 -
32730 - auto *last_range = &range_records[0];
32731 - for (unsigned int i = chars_offset; i < chars_len; i++)
32732 - {
32733 - auto *range = last_range;
32734 - while (log_clusters[i] < range->index_first)
32735 - range--;
32736 - while (log_clusters[i] > range->index_last)
32737 - range++;
32738 - if (!range_features.length ||
32739 - &range->features != range_features[range_features.length - 1])
32740 - {
32741 - auto **features = range_features.push ();
32742 - auto *c = range_counts.push ();
32743 - if (unlikely (!features || !c))
32744 - {
32745 - range_features.shrink (0);
32746 - range_counts.shrink (0);
32747 - break;
32748 - }
32749 - *features = &range->features;
32750 - *c = 1;
32751 - }
32752 - else
32753 - {
32754 - range_counts[range_counts.length - 1]++;
32755 - }
32756 -
32757 - last_range = range;
32758 - }
32759 -}
32760 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.hh b/src/third_party/harfbuzz
32762 --- a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.hh
32763 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.hh
32764 @@ -52,8 +52,8 @@ struct hb_ms_active_feature_t {
32765 a->fea.value < b->fea.value ? -1 : a->fea.value > b->fea.value ? 1 :
32768 - bool operator== (const hb_ms_active_feature_t *f)
32769 - { return cmp (this, f) == 0; }
32775 @@ -77,20 +77,153 @@ struct hb_ms_range_record_t {
32776 unsigned int index_last; /* == end - 1 */
32779 -HB_INTERNAL bool
32784 - hb_vector_t<hb_ms_range_record_t> &range_records /* OUT */);
32802 + event->index = features[i].start;
32803 + event->start = true;
32804 + event->feature = feature;
32807 + event->index = features[i].end;
32808 + event->start = false;
32809 + event->feature = feature;
32820 + event->index = 0; /* This value does magic. */
32821 + event->start = false;
32822 + event->feature = feature;
32832 + if (event->index != last_index)
32841 + if (!j || active_features[j].fea.tag_le != feature_records[feature_records.length - 1].tag…
32848 + feature_records[feature_records.length - 1].value = active_features[j].fea.value;
32854 + range->features.features = reinterpret_cast<hb_ms_feature_t *> (offset);
32855 + range->features.num_features = feature_records.length - offset;
32856 + range->index_first = last_index;
32857 + range->index_last = event->index - 1;
32859 -HB_INTERNAL void
32860 + last_index = event->index;
32863 + if (event->start)
32865 + active_features.push (event->feature);
32869 + auto *feature = active_features.lsearch (event->feature);
32871 + active_features.remove (feature - active_features.arrayZ);
32882 + range->features.features = (hb_ms_feature_t *) feature_records + reinterpret_cast<uintptr_t> (…
32895 - hb_vector_t<uint32_t> &range_counts /* OUT */);
32905 + while (log_clusters[i] < range->index_first)
32906 + range--;
32907 + while (log_clusters[i] > range->index_last)
32910 + &range->features != range_features[range_features.length - 1])
32920 + *features = &range->features;
32925 + range_counts[range_counts.length - 1]++;
32933 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-object.hh b/src/third_party/harfbuzz-ng/src/src…
32935 --- a/src/third_party/harfbuzz-ng/src/src/hb-object.hh
32936 +++ b/src/third_party/harfbuzz-ng/src/src/hb-object.hh
32937 @@ -53,7 +53,7 @@ struct hb_lockable_set_t
32941 - item_t *item = items.find (v);
32946 @@ -76,7 +76,7 @@ struct hb_lockable_set_t
32950 - item_t *item = items.find (v);
32955 @@ -93,7 +93,7 @@ struct hb_lockable_set_t
32959 - item_t *item = items.find (v);
32964 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff-common.hh b/src/third_party/harfbuzz-ng/…
32966 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff-common.hh
32967 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff-common.hh
32968 @@ -68,8 +68,6 @@ struct code_pair_t
32972 - void fini () { SUPER::fini_deep (); }
32973 -
32977 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.cc b/src/third_party/harfbuzz-ng/…
32979 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.cc
32980 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.cc
32981 @@ -442,13 +442,12 @@ bool OT::cff1::accelerator_t::get_extents (hb_font_t *font, hb_codepoint_t gl…
32985 -#ifdef HB_EXPERIMENTAL_API
32989 - draw_helper_t &draw_helper_, point_t *delta_)
32992 - draw_helper = &draw_helper_;
32997 @@ -458,14 +457,14 @@ struct cff1_path_param_t
33001 - draw_helper->move_to (font->em_scalef_x (point.x.to_real ()), font->em_scalef_y (point.y.to_re…
33002 + draw_session->move_to (font->em_fscalef_x (point.x.to_real ()), font->em_fscalef_y (point.y.to…
33009 - draw_helper->line_to (font->em_scalef_x (point.x.to_real ()), font->em_scalef_y (point.y.to_re…
33010 + draw_session->line_to (font->em_fscalef_x (point.x.to_real ()), font->em_fscalef_y (point.y.to…
33014 @@ -477,15 +476,15 @@ struct cff1_path_param_t
33018 - draw_helper->cubic_to (font->em_scalef_x (point1.x.to_real ()), font->em_scalef_y (point1.y.to…
33019 - font->em_scalef_x (point2.x.to_real ()), font->em_scalef_y (point2.y.to_real ()),
33020 - font->em_scalef_x (point3.x.to_real ()), font->em_scalef_y (point3.y.to_real ()));
33021 + draw_session->cubic_to (font->em_fscalef_x (point1.x.to_real ()), font->em_fscalef_y (point1.y…
33022 + font->em_fscalef_x (point2.x.to_real ()), font->em_fscalef_y (point2.y.to_real ()),
33023 + font->em_fscalef_x (point3.x.to_real ()), font->em_fscalef_y (point3.y.to_real ()));
33026 - void end_path () { draw_helper->end_path (); }
33027 + void end_path () { draw_session->close_path (); }
33030 - draw_helper_t *draw_helper;
33035 @@ -513,7 +512,7 @@ struct cff1_path_procs_path_t : path_procs_t<cff1_path_procs_path_t, cff1_cs_int
33039 - draw_helper_t &draw_helper, bool in_seac = false, point_t *delta = nullptr);
33044 @@ -530,14 +529,14 @@ struct cff1_cs_opset_path_t : cff1_cs_opset_t<cff1_cs_opset_path_t, cff1_path…
33045 hb_codepoint_t accent = param.cff->std_code_to_glyph (env.argStack[n-1].to_int ());
33048 - && _get_path (param.cff, param.font, base, *param.draw_helper, true)
33049 - && _get_path (param.cff, param.font, accent, *param.draw_helper, true, &delta))))
33057 - draw_helper_t &draw_helper, bool in_seac, point_t *delta)
33060 if (unlikely (!cff->is_valid () || (glyph >= cff->num_glyphs))) return false;
33062 @@ -546,7 +545,7 @@ bool _get_path (const OT::cff1::accelerator_t *cff, hb_font_t *font, hb_codepoin
33063 const byte_str_t str = (*cff->charStrings)[glyph];
33066 - cff1_path_param_t param (cff, font, draw_helper, delta);
33071 @@ -555,16 +554,15 @@ bool _get_path (const OT::cff1::accelerator_t *cff, hb_font_t *font, hb_codep…
33075 -bool OT::cff1::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw…
33083 - return _get_path (this, font, glyph, draw_helper);
33086 -#endif
33090 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.hh b/src/third_party/harfbuzz-ng/…
33092 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.hh
33093 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.hh
33094 @@ -1144,8 +1144,8 @@ struct cff1
33098 - fontDicts.fini_deep ();
33099 - privateDicts.fini_deep ();
33105 @@ -1245,32 +1245,32 @@ struct cff1
33109 - hb_blob_t *blob;
33114 - const Encoding *encoding;
33115 - const Charset *charset;
33116 - const CFF1NameIndex *nameIndex;
33117 - const CFF1TopDictIndex *topDictIndex;
33118 - const CFF1StringIndex *stringIndex;
33119 - const CFF1Subrs *globalSubrs;
33120 - const CFF1CharStrings *charStrings;
33121 - const CFF1FDArray *fdArray;
33122 - const CFF1FDSelect *fdSelect;
33123 - unsigned int fdCount;
33140 - unsigned int num_glyphs;
33146 - void init (hb_face_t *face)
33151 @@ -1295,8 +1295,7 @@ struct cff1
33155 -
33156 - void fini ()
33161 @@ -1348,9 +1347,7 @@ struct cff1
33165 -#ifdef HB_EXPERIMENTAL_API
33166 - HB_INTERNAL bool get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) …
33167 -#endif
33172 @@ -1398,7 +1395,10 @@ struct cff1
33176 -struct cff1_accelerator_t : cff1::accelerator_t {};
33184 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.cc b/src/third_party/harfbuzz-ng/…
33186 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.cc
33187 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.cc
33188 @@ -143,30 +143,29 @@ bool OT::cff2::accelerator_t::get_extents (hb_font_t *font,
33192 -#ifdef HB_EXPERIMENTAL_API
33195 - cff2_path_param_t (hb_font_t *font_, draw_helper_t &draw_helper_)
33198 - draw_helper = &draw_helper_;
33204 - { draw_helper->move_to (font->em_scalef_x (p.x.to_real ()), font->em_scalef_y (p.y.to_real ()));…
33205 + { draw_session->move_to (font->em_fscalef_x (p.x.to_real ()), font->em_fscalef_y (p.y.to_real ()…
33208 - { draw_helper->line_to (font->em_scalef_x (p.x.to_real ()), font->em_scalef_y (p.y.to_real ()));…
33209 + { draw_session->line_to (font->em_fscalef_x (p.x.to_real ()), font->em_fscalef_y (p.y.to_real ()…
33213 - draw_helper->cubic_to (font->em_scalef_x (p1.x.to_real ()), font->em_scalef_y (p1.y.to_real ()…
33214 - font->em_scalef_x (p2.x.to_real ()), font->em_scalef_y (p2.y.to_real ()),
33215 - font->em_scalef_x (p3.x.to_real ()), font->em_scalef_y (p3.y.to_real ()));
33216 + draw_session->cubic_to (font->em_fscalef_x (p1.x.to_real ()), font->em_fscalef_y (p1.y.to_real…
33217 + font->em_fscalef_x (p2.x.to_real ()), font->em_fscalef_y (p2.y.to_real ()),
33218 + font->em_fscalef_x (p3.x.to_real ()), font->em_fscalef_y (p3.y.to_real ()));
33222 - draw_helper_t *draw_helper;
33227 @@ -193,7 +192,7 @@ struct cff2_path_procs_path_t : path_procs_t<cff2_path_procs_path_t, cff2_cs_int
33231 -bool OT::cff2::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw…
33236 @@ -206,10 +205,9 @@ bool OT::cff2::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph,…
33239 interp.env.init (str, *this, fd, font->coords, font->num_coords);
33240 - cff2_path_param_t param (font, draw_helper);
33245 -#endif
33248 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.hh b/src/third_party/harfbuzz-ng/…
33250 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.hh
33251 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.hh
33252 @@ -397,7 +397,7 @@ struct cff2
33256 - void init (hb_face_t *face)
33261 @@ -412,15 +412,15 @@ struct cff2
33262 const OT::cff2 *cff2 = this->blob->template as<OT::cff2> ();
33265 - { fini (); return; }
33269 byte_str_t topDictStr (cff2 + cff2->topDict, cff2->topDictSize);
33270 - if (unlikely (!topDictStr.sanitize (&sc))) { fini (); return; }
33275 - if (unlikely (!top_interp.interpret (topDict))) { fini (); return; }
33279 globalSubrs = &StructAtOffset<CFF2Subrs> (cff2, cff2->topDict + cff2->topDictSize);
33280 @@ -434,49 +434,55 @@ struct cff2
33281 (globalSubrs == &Null (CFF2Subrs)) || unlikely (!globalSubrs->sanitize (&sc)) ||
33282 (fdArray == &Null (CFF2FDArray)) || unlikely (!fdArray->sanitize (&sc)) ||
33283 (((fdSelect != &Null (CFF2FDSelect)) && unlikely (!fdSelect->sanitize (&sc, fdArray->count)))))
33284 - { fini (); return; }
33287 num_glyphs = charStrings->count;
33289 - { fini (); return; }
33292 fdCount = fdArray->count;
33294 - { fini (); return; }
33301 - if (unlikely (!fontDictStr.sanitize (&sc))) { fini (); return; }
33307 - if (unlikely (font == &Crap (cff2_font_dict_values_t))) { fini (); return; }
33309 font->init ();
33310 - if (unlikely (!font_interp.interpret (*font))) { fini (); return; }
33313 …rivDictStr (StructAtOffsetOrNull<UnsizedByteStr> (cff2, font->privateDictInfo.offset), font->priva…
33314 - if (unlikely (!privDictStr.sanitize (&sc))) { fini (); return; }
33319 - if (unlikely (!priv_interp.interpret (privateDicts[i]))) { fini (); return; }
33324 unlikely (!privateDicts[i].localSubrs->sanitize (&sc)))
33325 - { fini (); return; }
33328 - }
33330 - void fini ()
33342 - fontDicts.fini_deep ();
33343 - privateDicts.fini_deep ();
33349 @@ -484,32 +490,32 @@ struct cff2
33353 - hb_blob_t *blob;
33359 - const CFF2Subrs *globalSubrs;
33360 - const CFF2VariationStore *varStore;
33361 - const CFF2CharStrings *charStrings;
33362 - const CFF2FDArray *fdArray;
33363 - const CFF2FDSelect *fdSelect;
33364 - unsigned int fdCount;
33375 - unsigned int num_glyphs;
33386 -#ifdef HB_EXPERIMENTAL_API
33387 - HB_INTERNAL bool get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) …
33388 -#endif
33393 @@ -525,7 +531,10 @@ struct cff2
33397 -struct cff2_accelerator_t : cff2::accelerator_t {};
33405 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cmap-table.hh b/src/third_party/harfbuzz-ng/…
33407 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cmap-table.hh
33408 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cmap-table.hh
33409 @@ -369,7 +369,6 @@ struct CmapSubtableFormat4
33413 - ~accelerator_t () { fini (); }
33417 @@ -381,7 +380,6 @@ struct CmapSubtableFormat4
33419 glyphIdArrayLength = (subtable->length - 16 - 8 * segCount) / 2;
33421 - void fini () {}
33425 @@ -716,7 +714,7 @@ struct CmapSubtableLongSegmented
33426 if (unlikely ((unsigned int) (gid + end - start) >= num_glyphs))
33427 end = start + (hb_codepoint_t) num_glyphs - gid;
33429 - out->add_range (start, end);
33430 + out->add_range (start, hb_min (end, 0x10FFFFu));
33434 @@ -885,7 +883,7 @@ struct DefaultUVS : SortedArray32Of<UnicodeValueRange>
33438 - out->add_range (first, last);
33439 + out->add_range (first, hb_min (last, 0x10FFFFu));
33443 @@ -1607,7 +1605,7 @@ struct cmap
33447 - const EncodingRecord *table = hb_addressof (_);
33452 @@ -1665,7 +1663,7 @@ struct cmap
33456 - void init (hb_face_t *face)
33459 this->table = hb_sanitize_context_t ().reference_table<cmap> (face);
33461 @@ -1700,8 +1698,7 @@ struct cmap
33465 -
33466 - void fini () { this->table.destroy (); }
33467 + ~accelerator_t () { this->table.destroy (); }
33471 @@ -1863,7 +1860,9 @@ struct cmap
33475 -struct cmap_accelerator_t : cmap::accelerator_t {};
33482 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-cbdt-table.hh b/src/third_party/harfbu…
33484 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-cbdt-table.hh
33485 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-cbdt-table.hh
33486 @@ -360,6 +360,16 @@ struct IndexSubtable
33503 @@ -809,15 +819,14 @@ struct CBDT
33507 - void init (hb_face_t *face)
33510 - cblc = hb_sanitize_context_t ().reference_table<CBLC> (face);
33511 - cbdt = hb_sanitize_context_t ().reference_table<CBDT> (face);
33512 + this->cblc = hb_sanitize_context_t ().reference_table<CBLC> (face);
33513 + this->cbdt = hb_sanitize_context_t ().reference_table<CBDT> (face);
33517 -
33518 - void fini ()
33521 this->cblc.destroy ();
33522 this->cbdt.destroy ();
33523 @@ -978,7 +987,10 @@ CBLC::subset (hb_subset_context_t *c) const
33527 -struct CBDT_accelerator_t : CBDT::accelerator_t {};
33535 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colr-table.hh b/src/third_party/harfbu…
33537 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colr-table.hh
33538 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colr-table.hh
33539 @@ -71,7 +71,7 @@ struct hb_colrv1_closure_context_t :
33542 hb_codepoint_t delta = (hb_codepoint_t) ((uintptr_t) paint - (uintptr_t) base);
33543 - if (visited_paint.has (delta))
33548 @@ -1270,13 +1270,9 @@ struct COLR
33552 - accelerator_t () {}
33553 - ~accelerator_t () { fini (); }
33554 -
33555 - void init (hb_face_t *face)
33558 -
33559 - void fini () { this->colr.destroy (); }
33560 + ~accelerator_t () { this->colr.destroy (); }
33562 bool is_valid () { return colr.get_blob ()->length; }
33564 @@ -1535,6 +1531,10 @@ struct COLR
33575 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colrv1-closure.hh b/src/third_party/ha…
33577 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colrv1-closure.hh
33578 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colrv1-closure.hh
33579 @@ -43,7 +43,7 @@ HB_INTERNAL void PaintColrLayers::closurev1 (hb_colrv1_closure_context_t* c) con
33580 const LayerList &paint_offset_lists = c->get_colr_table ()->get_layerList ();
33583 - const Paint &paint = hb_addressof (paint_offset_lists) + paint_offset_lists[i];
33588 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-sbix-table.hh b/src/third_party/harfbu…
33590 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-sbix-table.hh
33591 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-sbix-table.hh
33592 @@ -202,12 +202,12 @@ struct sbix
33596 - void init (hb_face_t *face)
33600 num_glyphs = face->get_num_glyphs ();
33602 - void fini () { table.destroy (); }
33605 bool has_data () const { return table->has_data (); }
33607 @@ -407,7 +407,10 @@ struct sbix
33611 -struct sbix_accelerator_t : sbix::accelerator_t {};
33619 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-svg-table.hh b/src/third_party/harfbuz…
33621 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-svg-table.hh
33622 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-svg-table.hh
33623 @@ -79,9 +79,9 @@ struct SVG
33627 - void init (hb_face_t *face)
33630 - void fini () { table.destroy (); }
33635 @@ -116,7 +116,9 @@ struct SVG
33639 -struct SVG_accelerator_t : SVG::accelerator_t {};
33646 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color.cc b/src/third_party/harfbuzz-ng/src/s…
33648 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color.cc
33649 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color.cc
33650 @@ -116,7 +116,7 @@ hb_ot_color_palette_get_name_id (hb_face_t *face,
33654 - * the specificed color in a face's `CPAL` color palette.
33659 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-deprecated.h b/src/third_party/harfbuzz-ng/s…
33661 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-deprecated.h
33662 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-deprecated.h
33663 @@ -50,6 +50,21 @@ HB_BEGIN_DECLS
33683 /* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */
33685 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-face-table-list.hh b/src/third_party/harfbuz…
33687 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-face-table-list.hh
33688 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-face-table-list.hh
33689 @@ -32,6 +32,11 @@
33701 @@ -46,7 +51,8 @@
33705 -HB_OT_TABLE (OT, head)
33711 @@ -74,6 +80,7 @@ HB_OT_TABLE (OT, VORG)
33719 @@ -138,3 +145,7 @@ HB_OT_TABLE (OT, MATH)
33727 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-face.hh b/src/third_party/harfbuzz-ng/src/sr…
33729 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-face.hh
33730 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-face.hh
33731 @@ -63,10 +63,13 @@ struct hb_ot_face_t
33739 #include "hb-ot-face-table-list.hh"
33745 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-font.cc b/src/third_party/harfbuzz-ng/src/sr…
33747 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-font.cc
33748 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-font.cc
33749 @@ -131,11 +131,25 @@ hb_ot_get_glyph_v_advances (hb_font_t* font, void* font_data,
33751 const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
33753 - for (unsigned int i = 0; i < count; i++)
33757 + *first_advance = font->em_scale_y (-(int) vmtx.get_advance (*first_glyph, font));
33763 - *first_advance = font->em_scale_y (-(int) vmtx.get_advance (*first_glyph, font));
33764 - first_glyph = &StructAtOffsetUnaligned<hb_codepoint_t> (first_glyph, glyph_stride);
33765 - first_advance = &StructAtOffsetUnaligned<hb_position_t> (first_advance, advance_stride);
33767 + font->get_h_extents_with_fallback (&font_extents);
33768 + hb_position_t advance = -(font_extents.ascender - font_extents.descender);
33779 @@ -163,9 +177,19 @@ hb_ot_get_glyph_v_origin (hb_font_t *font,
33781 if (ot_face->glyf->get_extents (font, glyph, &extents))
33783 - const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
33784 - hb_position_t tsb = vmtx.get_side_bearing (font, glyph);
33785 - *y = extents.y_bearing + font->em_scale_y (tsb);
33786 + if (ot_face->vmtx->has_data ())
33788 + const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
33790 + *y = extents.y_bearing + font->em_scale_y (tsb);
33795 + font->get_h_extents_with_fallback (&font_extents);
33796 + hb_position_t advance = font_extents.ascender - font_extents.descender;
33797 + int diff = advance - -extents.height;
33802 @@ -257,6 +281,23 @@ hb_ot_get_font_v_extents (hb_font_t *font,
33814 + hb_draw_session_t draw_session (draw_funcs, draw_data, font->slant_xy);
33815 + if (font->face->table.glyf->get_path (font, glyph, draw_session)) return;
33817 + if (font->face->table.cff1->get_path (font, glyph, draw_session)) return;
33818 + if (font->face->table.cff2->get_path (font, glyph, draw_session)) return;
33826 @@ -279,6 +320,10 @@ static struct hb_ot_font_funcs_lazy_loader_t : hb_font_funcs_lazy_loader_t<hb_…
33837 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-glyf-table.hh b/src/third_party/harfbuzz-ng/…
33839 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-glyf-table.hh
33840 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-glyf-table.hh
33841 @@ -207,8 +207,7 @@ struct glyf
33845 - OT::glyf::accelerator_t glyf;
33846 - glyf.init (plan->source);
33847 + OT::glyf::accelerator_t glyf (plan->source);
33849 + hb_range (plan->num_output_glyphs ())
33851 @@ -233,8 +232,6 @@ struct glyf
33855 -
33856 - glyf.fini ();
33860 @@ -595,7 +592,7 @@ struct glyf
33864 - if (unlikely (length (flags_offset + 1) > bytes.length)) return;
33869 @@ -823,8 +820,7 @@ struct glyf
33873 - if (unlikely (!glyf_accelerator.gvar->apply_deltas_to_points (gid, font, points.as_array ())…
33874 - return false;
33875 + glyf_accelerator.gvar->apply_deltas_to_points (gid, font, points.as_array ());
33879 @@ -920,7 +916,7 @@ struct glyf
33883 - void init (hb_face_t *face_)
33888 @@ -933,14 +929,13 @@ struct glyf
33892 - face = face_;
33893 const OT::head &head = *face->table.head;
33899 - loca_table = hb_sanitize_context_t ().reference_table<loca> (face);
33900 + loca_table = face->table.loca.get_blob (); // Needs no destruct!
33903 gvar = face->table.gvar;
33904 @@ -953,10 +948,8 @@ struct glyf
33905 num_glyphs = hb_max (1u, loca_table.get_length () / (short_offset ? 2 : 4)) - 1;
33906 num_glyphs = hb_min (num_glyphs, face->get_num_glyphs ());
33908 -
33909 - void fini ()
33912 - loca_table.destroy ();
33916 @@ -1157,11 +1150,10 @@ struct glyf
33920 -#ifdef HB_EXPERIMENTAL_API
33924 - draw_helper_t *draw_helper;
33929 @@ -1176,10 +1168,10 @@ struct glyf
33930 { return optional_point_t (x + t * (p.x - x), y + t * (p.y - y)); }
33933 - path_builder_t (hb_font_t *font_, draw_helper_t &draw_helper_)
33937 - draw_helper = &draw_helper_;
33942 @@ -1189,10 +1181,6 @@ struct glyf
33946 - /* Skip empty contours */
33947 - if (unlikely (point.is_end_point && !first_oncurve.has_data && !first_offcurve.has_data))
33948 - return;
33949 -
33953 @@ -1200,7 +1188,7 @@ struct glyf
33957 - draw_helper->move_to (font->em_scalef_x (p.x), font->em_scalef_y (p.y));
33958 + draw_session->move_to (font->em_fscalef_x (p.x), font->em_fscalef_y (p.y));
33962 @@ -1209,7 +1197,7 @@ struct glyf
33966 - draw_helper->move_to (font->em_scalef_x (mid.x), font->em_scalef_y (mid.y));
33967 + draw_session->move_to (font->em_fscalef_x (mid.x), font->em_fscalef_y (mid.y));
33971 @@ -1221,22 +1209,22 @@ struct glyf
33975 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_off…
33976 - font->em_scalef_x (p.x), font->em_scalef_y (p.y));
33977 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_…
33978 + font->em_fscalef_x (p.x), font->em_fscalef_y (p.y));
33984 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_off…
33985 - font->em_scalef_x (mid.x), font->em_scalef_y (mid.y));
33986 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_…
33987 + font->em_fscalef_x (mid.x), font->em_fscalef_y (mid.y));
33994 - draw_helper->line_to (font->em_scalef_x (p.x), font->em_scalef_y (p.y));
33995 + draw_session->line_to (font->em_fscalef_x (p.x), font->em_fscalef_y (p.y));
33999 @@ -1247,24 +1235,30 @@ struct glyf
34003 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcu…
34004 - font->em_scalef_x (mid.x), font->em_scalef_y (mid.y));
34005 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_of…
34006 + font->em_fscalef_x (mid.x), font->em_fscalef_y (mid.y));
34012 - draw_helper->quadratic_to (font->em_scalef_x (first_offcurve.x), font->em_scalef_y (first_off…
34013 - font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y));
34014 + draw_session->quadratic_to (font->em_fscalef_x (first_offcurve.x), font->em_fscalef_y (first_…
34015 + font->em_fscalef_x (first_oncurve.x), font->em_fscalef_y (first_oncurve.y));
34017 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcu…
34018 - font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y));
34019 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_of…
34020 + font->em_fscalef_x (first_oncurve.x), font->em_fscalef_y (first_oncurve.y));
34022 - draw_helper->line_to (font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y…
34023 + draw_session->line_to (font->em_fscalef_x (first_oncurve.x), font->em_fscalef_y (first_oncurv…
34026 + float x = font->em_fscalef_x (first_offcurve.x), y = font->em_fscalef_x (first_offcurve.y);
34027 + draw_session->move_to (x, y);
34028 + draw_session->quadratic_to (x, y, x, y);
34033 - draw_helper->end_path ();
34034 + draw_session->close_path ();
34038 @@ -1274,9 +1268,8 @@ struct glyf
34042 - get_path (hb_font_t *font, hb_codepoint_t gid, draw_helper_t &draw_helper) const
34043 - { return get_points (font, gid, path_builder_t (font, draw_helper)); }
34044 -#endif
34050 @@ -1291,7 +1284,6 @@ struct glyf
34054 - hb_face_t *face;
34058 @@ -1358,7 +1350,10 @@ struct glyf
34062 -struct glyf_accelerator_t : glyf::accelerator_t {};
34070 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-hmtx-table.hh b/src/third_party/harfbuzz-ng/…
34072 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-hmtx-table.hh
34073 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-hmtx-table.hh
34074 @@ -28,6 +28,7 @@
34077 #include "hb-open-type.hh"
34078 +#include "hb-ot-maxp-table.hh"
34079 #include "hb-ot-hhea-table.hh"
34080 #include "hb-ot-var-hvar-table.hh"
34081 #include "hb-ot-metrics.hh"
34082 @@ -98,12 +99,12 @@ struct hmtxvmtx
34086 - unsigned num_advances)
34092 - if (idx < num_advances)
34097 @@ -127,9 +128,20 @@ struct hmtxvmtx
34098 T *table_prime = c->serializer->start_embed <T> ();
34101 - accelerator_t _mtx;
34102 - _mtx.init (c->plan->source);
34103 - unsigned num_advances = _mtx.num_advances_for_subset (c->plan);
34104 + accelerator_t _mtx (c->plan->source);
34108 + auto& plan = c->plan;
34109 + num_long_metrics = plan->num_output_glyphs ();
34111 + unsigned int last_advance = plan->old_gid_for_new_gid (num_long_metrics - 1, &old_gid) ? _mt…
34113 + last_advance == (plan->old_gid_for_new_gid (num_long_metrics - 2, &old_gid) ? _mtx.get_advan…
34115 + num_long_metrics--;
34120 + hb_range (c->plan->num_output_glyphs ())
34121 @@ -142,15 +154,13 @@ struct hmtxvmtx
34125 - table_prime->serialize (c->serializer, it, num_advances);
34126 -
34127 - _mtx.fini ();
34128 + table_prime->serialize (c->serializer, it, num_long_metrics);
34130 if (unlikely (c->serializer->in_error ()))
34134 - if (unlikely (!subset_update_header (c->plan, num_advances)))
34135 + if (unlikely (!subset_update_header (c->plan, num_long_metrics)))
34139 @@ -160,56 +170,67 @@ struct hmtxvmtx
34143 - void init (hb_face_t *face,
34144 - unsigned int default_advance_ = 0)
34147 - default_advance = default_advance_ ? default_advance_ : hb_face_get_upem (face);
34155 - num_advances = T::is_horizontal ?
34156 - face->table.hhea->numberOfLongMetrics :
34159 + len--;
34162 + face->table.hhea->numberOfLongMetrics :
34164 - face->table.vhea->numberOfLongMetrics
34165 + face->table.vhea->numberOfLongMetrics
34167 - 0
34170 - ;
34174 + len -= num_long_metrics * 4;
34176 - table = hb_sanitize_context_t ().reference_table<hmtxvmtx> (face, T::tableTag);
34177 + num_bearings = face->table.maxp->get_num_glyphs ();
34179 - /* Cap num_metrics() and num_advances() based on table length. */
34180 - unsigned int len = table.get_length ();
34181 - if (unlikely (num_advances * 4 > len))
34182 - num_advances = len / 4;
34183 - num_metrics = num_advances + (len - 4 * num_advances) / 2;
34186 + if (unlikely ((num_bearings - num_long_metrics) * 2 > len))
34188 + len -= (num_bearings - num_long_metrics) * 2;
34190 - /* We MUST set num_metrics to zero if num_advances is zero.
34193 - if (unlikely (!num_advances))
34194 - {
34195 - num_metrics = num_advances = 0;
34196 - table.destroy ();
34197 - table = hb_blob_get_empty ();
34198 - }
34202 - var_table = hb_sanitize_context_t ().reference_table<HVARVVAR> (face, T::variationsTag);
34204 + num_glyphs = face->get_num_glyphs ();
34208 -
34209 - void fini ()
34220 - if (glyph < num_advances)
34222 return table->longMetricZ[glyph].sb;
34224 - if (unlikely (glyph >= num_metrics))
34228 - const FWORD *bearings = (const FWORD *) &table->longMetricZ[num_advances];
34229 - return bearings[glyph - num_advances];
34230 + const FWORD *bearings = (const FWORD *) &table->longMetricZ[num_long_metrics];
34231 + return bearings[glyph - num_long_metrics];
34235 @@ -217,7 +238,7 @@ struct hmtxvmtx
34239 - if (unlikely (glyph >= num_metrics) || !font->num_coords)
34240 + if (unlikely (glyph >= num_bearings) || !font->num_coords)
34244 @@ -231,18 +252,35 @@ struct hmtxvmtx
34248 - if (unlikely (glyph >= num_metrics))
34249 - {
34250 - /* If num_metrics is zero, it means we don't have the metrics table
34251 - * for this direction: return default advance. Otherwise, it means that the
34252 - * glyph index is out of bound: return zero. */
34253 - if (num_metrics)
34254 - return 0;
34255 - else
34256 - return default_advance;
34257 - }
34260 + return table->longMetricZ[hb_min (glyph, (uint32_t) num_long_metrics - 1)].advance;
34264 + * well-defined answer. */
34268 - return table->longMetricZ[hb_min (glyph, (uint32_t) num_advances - 1)].advance;
34282 + return get_advance (num_bearings - 1);
34284 + const FWORD *bearings = (const FWORD *) &table->longMetricZ[num_long_metrics];
34285 + const UFWORD *advances = (const UFWORD *) &bearings[num_bearings - num_long_metrics];
34287 + return advances[hb_min (glyph - num_bearings, num_advances - num_bearings - 1)];
34291 @@ -251,7 +289,7 @@ struct hmtxvmtx
34295 - if (unlikely (glyph >= num_metrics) || !font->num_coords)
34296 + if (unlikely (glyph >= num_bearings) || !font->num_coords)
34300 @@ -263,35 +301,13 @@ struct hmtxvmtx
34304 - unsigned int num_advances_for_subset (const hb_subset_plan_t *plan) const
34305 - {
34306 - unsigned int num_advances = plan->num_output_glyphs ();
34307 - unsigned int last_advance = _advance_for_new_gid (plan,
34308 - num_advances - 1);
34309 - while (num_advances > 1 &&
34310 - last_advance == _advance_for_new_gid (plan,
34311 - num_advances - 2))
34312 - {
34313 - num_advances--;
34314 - }
34315 -
34316 - return num_advances;
34317 - }
34318 -
34319 - private:
34320 - unsigned int _advance_for_new_gid (const hb_subset_plan_t *plan,
34321 - hb_codepoint_t new_gid) const
34322 - {
34323 - hb_codepoint_t old_gid;
34324 - if (!plan->old_gid_for_new_gid (new_gid, &old_gid))
34325 - return 0;
34326 -
34327 - return get_advance (old_gid);
34328 - }
34329 -
34331 - unsigned int num_metrics;
34332 - unsigned int num_advances;
34342 @@ -323,6 +339,8 @@ struct hmtxvmtx
34351 @@ -338,8 +356,12 @@ struct vmtx : hmtxvmtx<vmtx, vhea> {
34355 -struct hmtx_accelerator_t : hmtx::accelerator_t {};
34356 -struct vmtx_accelerator_t : vmtx::accelerator_t {};
34366 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-base-table.hh b/src/third_party/harfb…
34368 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-base-table.hh
34369 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-base-table.hh
34370 @@ -41,7 +41,10 @@ namespace OT {
34374 - hb_position_t get_coord () const { return coordinate; }
34377 + return HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (coordinate) : font->em_scale…
34382 @@ -58,10 +61,10 @@ struct BaseCoordFormat1
34386 - hb_position_t get_coord () const
34390 - return coordinate;
34391 + return HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (coordinate) : font->em_scale…
34395 @@ -87,9 +90,10 @@ struct BaseCoordFormat3
34399 - return coordinate + (HB_DIRECTION_IS_VERTICAL (direction) ?
34400 - device.get_y_delta (font, var_store) :
34401 - device.get_x_delta (font, var_store));
34404 + ? font->em_scale_y (coordinate) + device.get_y_delta (font, var_store)
34405 + : font->em_scale_x (coordinate) + device.get_x_delta (font, var_store);
34409 @@ -120,8 +124,8 @@ struct BaseCoord
34413 - case 1: return u.format1.get_coord ();
34414 - case 2: return u.format2.get_coord ();
34420 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-common.hh b/src/third_party/harfbuzz-
34422 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-common.hh
34423 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-common.hh
34424 @@ -37,7 +37,7 @@
34428 -#define HB_MAX_NESTING_LEVEL 6
34433 @@ -60,6 +60,10 @@
34444 @@ -105,34 +109,15 @@ struct hb_prune_langsys_context_t
34448 - script_count (0),langsys_count (0) {}
34449 -
34450 - bool visitedScript (const void *s)
34451 - {
34452 - if (script_count++ > HB_MAX_SCRIPTS)
34453 - return true;
34454 -
34455 - return visited (s, visited_script);
34456 - }
34459 - bool visitedLangsys (const void *l)
34460 - {
34461 - if (langsys_count++ > HB_MAX_LANGSYS)
34462 - return true;
34463 -
34464 - return visited (l, visited_langsys);
34465 - }
34469 - private:
34470 - template <typename T>
34471 - bool visited (const T *p, hb_set_t &visited_set)
34474 - hb_codepoint_t delta = (hb_codepoint_t) ((uintptr_t) p - (uintptr_t) table);
34475 - if (visited_set.in_error () || visited_set.has (delta))
34476 - return true;
34477 -
34478 - visited_set.add (delta);
34479 - return false;
34485 @@ -142,10 +127,8 @@ struct hb_prune_langsys_context_t
34489 - hb_set_t visited_script;
34490 - hb_set_t visited_langsys;
34492 - unsigned langsys_count;
34497 @@ -643,11 +626,14 @@ struct LangSys
34501 - if (iter.len () != o_iter.len ())
34502 - return false;
34510 - for (const auto _ : + hb_zip (iter, o_iter))
34511 - if (_.first != _.second) return false;
34516 @@ -732,7 +718,7 @@ struct Script
34520 - if (c->visitedScript (this)) return;
34521 + if (!c->visitScript ()) return;
34523 if (!c->script_langsys_map->has (script_index))
34525 @@ -749,15 +735,14 @@ struct Script
34527 //only collect features from non-redundant langsys
34529 - if (!c->visitedLangsys (&d)) {
34530 + if (c->visitLangsys (d.get_feature_count ())) {
34536 -
34538 - if (c->visitedLangsys (&l)) continue;
34539 + if (!c->visitLangsys (l.get_feature_count ())) continue;
34540 if (l.compare (d, c->duplicate_feature_map)) continue;
34543 @@ -769,7 +754,7 @@ struct Script
34547 - if (c->visitedLangsys (&l)) continue;
34548 + if (!c->visitLangsys (l.get_feature_count ())) continue;
34550 c->script_langsys_map->get (script_index)->add (_.second);
34552 @@ -849,7 +834,7 @@ struct FeatureParamsSize
34553 if (unlikely (!c->check_struct (this))) return_trace (false);
34556 - * Adobe tools calculated the offset of the FeatureParams sutable from the
34561 @@ -2930,8 +2915,6 @@ struct VariationStore
34565 - for (unsigned i = 0; i < inner_maps.length; i++)
34566 - inner_maps[i].init ();
34568 for (unsigned idx : c->plan->layout_variation_indices->iter ())
34570 @@ -2939,18 +2922,11 @@ struct VariationStore
34574 - {
34575 - for (unsigned i = 0; i < inner_maps.length; i++)
34576 - inner_maps[i].fini ();
34578 - }
34581 varstore_prime->serialize (c->serializer, this, inner_maps.as_array ());
34583 - for (unsigned i = 0; i < inner_maps.length; i++)
34584 - inner_maps[i].fini ();
34585 -
34587 !c->serializer->in_error()
34588 && varstore_prime->dataSets);
34589 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gdef-table.hh b/src/third_party/harfb…
34591 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gdef-table.hh
34592 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gdef-table.hh
34593 @@ -585,17 +585,16 @@ struct GDEF
34597 - void init (hb_face_t *face)
34600 - this->table = hb_sanitize_context_t ().reference_table<GDEF> (face);
34601 - if (unlikely (this->table->is_blocklisted (this->table.get_blob (), face)))
34603 + if (unlikely (table->is_blocklisted (table.get_blob (), face)))
34605 - hb_blob_destroy (this->table.get_blob ());
34606 - this->table = hb_blob_get_empty ();
34611 -
34612 - void fini () { this->table.destroy (); }
34617 @@ -715,7 +714,9 @@ struct GDEF
34621 -struct GDEF_accelerator_t : GDEF::accelerator_t {};
34628 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gpos-table.hh b/src/third_party/harfb…
34630 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gpos-table.hh
34631 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gpos-table.hh
34632 @@ -706,7 +706,7 @@ struct MarkArray : Array16Of<MarkRecord> /* Array of MarkRecords--in Coverage or
34636 - buffer->unsafe_to_break (glyph_pos, buffer->idx);
34637 + buffer->unsafe_to_break (glyph_pos, buffer->idx + 1);
34638 mark_anchor.get_anchor (c, buffer->cur().codepoint, &mark_x, &mark_y);
34639 glyph_anchor.get_anchor (c, buffer->info[glyph_pos].codepoint, &base_x, &base_y);
34641 @@ -1235,6 +1235,7 @@ struct PairSet
34642 buffer->idx = pos;
34645 + buffer->unsafe_to_concat (buffer->idx, pos + 1);
34649 @@ -1362,7 +1363,12 @@ struct PairPosFormat1
34651 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34652 skippy_iter.reset (buffer->idx, 1);
34653 - if (!skippy_iter.next ()) return_trace (false);
34657 + buffer->unsafe_to_concat (buffer->idx, unsafe_to);
34663 @@ -1555,7 +1561,12 @@ struct PairPosFormat2
34665 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34666 skippy_iter.reset (buffer->idx, 1);
34667 - if (!skippy_iter.next ()) return_trace (false);
34671 + buffer->unsafe_to_concat (buffer->idx, unsafe_to);
34677 @@ -1563,13 +1574,89 @@ struct PairPosFormat2
34679 unsigned int klass1 = (this+classDef1).get_class (buffer->cur().codepoint);
34680 unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint);
34681 - if (unlikely (klass1 >= class1Count || klass2 >= class2Count)) return_trace (false);
34684 + buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1);
34689 - bool applied_first = valueFormat1.apply_value (c, this, v, buffer->cur_pos());
34690 - bool applied_second = valueFormat2.apply_value (c, this, v + len1, buffer->pos[skippy_iter.idx…
34698 + * Disabled, because causes issues... :-(
34700 + * https://github.com/harfbuzz/harfbuzz/pull/3235#issuecomment-1029814978
34708 + const hb_direction_t dir = buffer->props.direction;
34727 + hb_position_t *dst1 = &buffer->cur_pos().x_advance;
34728 + hb_position_t *dst2 = &buffer->pos[skippy_iter.idx].x_advance;
34733 + hb_position_t kern2 = kern - kern1;
34744 + dst1[i + 2] += src[i + 2] - kern2;
34757 + applied_first = valueFormat1.apply_value (c, this, v, buffer->cur_pos());
34758 + applied_second = valueFormat2.apply_value (c, this, v + len1, buffer->pos[skippy_iter.idx]);
34762 buffer->unsafe_to_break (buffer->idx, skippy_iter.idx + 1);
34765 + buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1);
34768 buffer->idx = skippy_iter.idx;
34770 @@ -1799,10 +1886,19 @@ struct CursivePosFormat1
34772 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34773 skippy_iter.reset (buffer->idx, 1);
34774 - if (!skippy_iter.prev ()) return_trace (false);
34778 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34782 …const EntryExitRecord &prev_record = entryExitRecord[(this+coverage).get_coverage (buffer->info[s…
34783 - if (!prev_record.exitAnchor) return_trace (false);
34786 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34791 unsigned int j = buffer->idx;
34792 @@ -2066,7 +2162,13 @@ struct MarkBasePosFormat1
34793 skippy_iter.reset (buffer->idx, 1);
34796 - if (!skippy_iter.prev ()) return_trace (false);
34800 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34807 @@ -2089,7 +2191,11 @@ struct MarkBasePosFormat1
34808 //if (!_hb_glyph_info_is_base_glyph (&buffer->info[skippy_iter.idx])) { return_trace (false); }
34810 …unsigned int base_index = (this+baseCoverage).get_coverage (buffer->info[skippy_iter.idx].codepoi…
34811 - if (base_index == NOT_COVERED) return_trace (false);
34814 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34820 @@ -2320,21 +2426,34 @@ struct MarkLigPosFormat1
34821 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34822 skippy_iter.reset (buffer->idx, 1);
34824 - if (!skippy_iter.prev ()) return_trace (false);
34828 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34832 /* Checking that matched glyph is actually a ligature by GDEF is too strong; disabled */
34833 //if (!_hb_glyph_info_is_ligature (&buffer->info[skippy_iter.idx])) { return_trace (false); }
34836 unsigned int lig_index = (this+ligatureCoverage).get_coverage (buffer->info[j].codepoint);
34837 - if (lig_index == NOT_COVERED) return_trace (false);
34840 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34849 - if (unlikely (!comp_count)) return_trace (false);
34852 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34858 @@ -2517,9 +2636,18 @@ struct MarkMarkPosFormat1
34859 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34860 skippy_iter.reset (buffer->idx, 1);
34861 skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags);
34862 - if (!skippy_iter.prev ()) return_trace (false);
34866 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34870 - if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx])) { return_trace (false); }
34871 + if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx]))
34873 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34879 @@ -2544,11 +2672,16 @@ struct MarkMarkPosFormat1
34883 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34887 unsigned int mark2_index = (this+mark2Coverage).get_coverage (buffer->info[j].codepoint);
34888 - if (mark2_index == NOT_COVERED) return_trace (false);
34891 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34897 @@ -2973,7 +3106,9 @@ GPOS::position_finish_offsets (hb_font_t *font, hb_buffer_t *buffer)
34901 -struct GPOS_accelerator_t : GPOS::accelerator_t {};
34907 /* Out-of-class implementation for methods recursing */
34908 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsub-table.hh b/src/third_party/harfb…
34910 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsub-table.hh
34911 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsub-table.hh
34912 @@ -29,1719 +29,14 @@
34916 -#include "hb-ot-layout-gsubgpos.hh"
34917 -
34922 -typedef hb_pair_t<hb_codepoint_t, hb_codepoint_t> hb_codepoint_pair_t;
34923 -
34924 -template<typename Iterator>
34925 -static void SingleSubst_serialize (hb_serialize_context_t *c,
34926 - Iterator it);
34927 -
34928 -
34929 -struct SingleSubstFormat1
34930 -{
34931 - bool intersects (const hb_set_t *glyphs) const
34932 - { return (this+coverage).intersects (glyphs); }
34933 -
34934 - bool may_have_non_1to1 () const
34935 - { return false; }
34936 -
34937 - void closure (hb_closure_context_t *c) const
34938 - {
34939 - unsigned d = deltaGlyphID;
34940 -
34941 - + hb_iter (this+coverage)
34942 - | hb_filter (c->parent_active_glyphs ())
34943 - | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
34944 - | hb_sink (c->output)
34945 - ;
34946 -
34947 - }
34948 -
34949 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
34950 -
34951 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
34952 - {
34953 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
34954 - unsigned d = deltaGlyphID;
34955 - + hb_iter (this+coverage)
34956 - | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
34957 - | hb_sink (c->output)
34958 - ;
34959 - }
34960 -
34961 - const Coverage &get_coverage () const { return this+coverage; }
34962 -
34963 - bool would_apply (hb_would_apply_context_t *c) const
34964 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
34965 -
34966 - bool apply (hb_ot_apply_context_t *c) const
34967 - {
34968 - TRACE_APPLY (this);
34969 - hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
34970 - unsigned int index = (this+coverage).get_coverage (glyph_id);
34971 - if (likely (index == NOT_COVERED)) return_trace (false);
34972 -
34973 - /* According to the Adobe Annotated OpenType Suite, result is always
34974 - * limited to 16bit. */
34975 - glyph_id = (glyph_id + deltaGlyphID) & 0xFFFFu;
34976 - c->replace_glyph (glyph_id);
34977 -
34978 - return_trace (true);
34979 - }
34980 -
34981 - template<typename Iterator,
34982 - hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_t))>
34983 - bool serialize (hb_serialize_context_t *c,
34984 - Iterator glyphs,
34985 - unsigned delta)
34986 - {
34987 - TRACE_SERIALIZE (this);
34988 - if (unlikely (!c->extend_min (this))) return_trace (false);
34989 - if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
34990 - c->check_assign (deltaGlyphID, delta, HB_SERIALIZE_ERROR_INT_OVERFLOW);
34991 - return_trace (true);
34992 - }
34993 -
34994 - bool subset (hb_subset_context_t *c) const
34995 - {
34996 - TRACE_SUBSET (this);
34997 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
34998 - const hb_map_t &glyph_map = *c->plan->glyph_map;
34999 -
35000 - hb_codepoint_t delta = deltaGlyphID;
35001 -
35002 - auto it =
35003 - + hb_iter (this+coverage)
35004 - | hb_filter (glyphset)
35005 - | hb_map_retains_sorting ([&] (hb_codepoint_t g) {
35006 - return hb_codepoint_pair_t (g,
35007 - (g + delta) & 0xFFFF); })
35008 - | hb_filter (glyphset, hb_second)
35009 - | hb_map_retains_sorting ([&] (hb_codepoint_pair_t p) -> hb_codepoint_pair_t
35010 - { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
35011 - ;
35012 -
35013 - bool ret = bool (it);
35014 - SingleSubst_serialize (c->serializer, it);
35015 - return_trace (ret);
35016 - }
35017 -
35018 - bool sanitize (hb_sanitize_context_t *c) const
35019 - {
35020 - TRACE_SANITIZE (this);
35021 - return_trace (coverage.sanitize (c, this) && deltaGlyphID.sanitize (c));
35022 - }
35023 -
35024 - protected:
35025 - HBUINT16 format; /* Format identifier--format = 1 */
35026 - Offset16To<Coverage>
35027 - coverage; /* Offset to Coverage table--from
35028 - * beginning of Substitution table */
35029 - HBUINT16 deltaGlyphID; /* Add to original GlyphID to get
35030 - * substitute GlyphID, modulo 0x10000 */
35031 - public:
35032 - DEFINE_SIZE_STATIC (6);
35033 -};
35034 -
35035 -struct SingleSubstFormat2
35036 -{
35037 - bool intersects (const hb_set_t *glyphs) const
35038 - { return (this+coverage).intersects (glyphs); }
35039 -
35040 - bool may_have_non_1to1 () const
35041 - { return false; }
35042 -
35043 - void closure (hb_closure_context_t *c) const
35044 - {
35045 - + hb_zip (this+coverage, substitute)
35046 - | hb_filter (c->parent_active_glyphs (), hb_first)
35047 - | hb_map (hb_second)
35048 - | hb_sink (c->output)
35049 - ;
35050 -
35051 - }
35052 -
35053 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35054 -
35055 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35056 - {
35057 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35058 - + hb_zip (this+coverage, substitute)
35059 - | hb_map (hb_second)
35060 - | hb_sink (c->output)
35061 - ;
35062 - }
35063 -
35064 - const Coverage &get_coverage () const { return this+coverage; }
35065 -
35066 - bool would_apply (hb_would_apply_context_t *c) const
35067 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
35068 -
35069 - bool apply (hb_ot_apply_context_t *c) const
35070 - {
35071 - TRACE_APPLY (this);
35072 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
35073 - if (likely (index == NOT_COVERED)) return_trace (false);
35074 -
35075 - if (unlikely (index >= substitute.len)) return_trace (false);
35076 -
35077 - c->replace_glyph (substitute[index]);
35078 -
35079 - return_trace (true);
35080 - }
35081 -
35082 - template<typename Iterator,
35083 - hb_requires (hb_is_sorted_source_of (Iterator,
35084 - hb_codepoint_pair_t))>
35085 - bool serialize (hb_serialize_context_t *c,
35086 - Iterator it)
35087 - {
35088 - TRACE_SERIALIZE (this);
35089 - auto substitutes =
35090 - + it
35091 - | hb_map (hb_second)
35092 - ;
35093 - auto glyphs =
35094 - + it
35095 - | hb_map_retains_sorting (hb_first)
35096 - ;
35097 - if (unlikely (!c->extend_min (this))) return_trace (false);
35098 - if (unlikely (!substitute.serialize (c, substitutes))) return_trace (false);
35099 - if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
35100 - return_trace (true);
35101 - }
35102 -
35103 - bool subset (hb_subset_context_t *c) const
35104 - {
35105 - TRACE_SUBSET (this);
35106 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35107 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35108 -
35109 - auto it =
35110 - + hb_zip (this+coverage, substitute)
35111 - | hb_filter (glyphset, hb_first)
35112 - | hb_filter (glyphset, hb_second)
35113 - | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
35114 - { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
35115 - ;
35116 -
35117 - bool ret = bool (it);
35118 - SingleSubst_serialize (c->serializer, it);
35119 - return_trace (ret);
35120 - }
35121 -
35122 - bool sanitize (hb_sanitize_context_t *c) const
35123 - {
35124 - TRACE_SANITIZE (this);
35125 - return_trace (coverage.sanitize (c, this) && substitute.sanitize (c));
35126 - }
35127 -
35128 - protected:
35129 - HBUINT16 format; /* Format identifier--format = 2 */
35130 - Offset16To<Coverage>
35131 - coverage; /* Offset to Coverage table--from
35132 - * beginning of Substitution table */
35133 - Array16Of<HBGlyphID16>
35134 - substitute; /* Array of substitute
35135 - * GlyphIDs--ordered by Coverage Index */
35136 - public:
35137 - DEFINE_SIZE_ARRAY (6, substitute);
35138 -};
35139 -
35140 -struct SingleSubst
35141 -{
35142 -
35143 - template<typename Iterator,
35144 - hb_requires (hb_is_sorted_source_of (Iterator,
35145 - const hb_codepoint_pair_t))>
35146 - bool serialize (hb_serialize_context_t *c,
35147 - Iterator glyphs)
35148 - {
35149 - TRACE_SERIALIZE (this);
35150 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
35151 - unsigned format = 2;
35152 - unsigned delta = 0;
35153 - if (glyphs)
35154 - {
35155 - format = 1;
35156 - auto get_delta = [=] (hb_codepoint_pair_t _)
35157 - { return (unsigned) (_.second - _.first) & 0xFFFF; };
35158 - delta = get_delta (*glyphs);
35159 - if (!hb_all (++(+glyphs), delta, get_delta)) format = 2;
35160 - }
35161 - u.format = format;
35162 - switch (u.format) {
35163 - case 1: return_trace (u.format1.serialize (c,
35164 - + glyphs
35165 - | hb_map_retains_sorting (hb_first),
35166 - delta));
35167 - case 2: return_trace (u.format2.serialize (c, glyphs));
35168 - default:return_trace (false);
35169 - }
35170 - }
35171 -
35172 - template <typename context_t, typename ...Ts>
35173 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
35174 - {
35175 - TRACE_DISPATCH (this, u.format);
35176 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
35177 - switch (u.format) {
35178 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
35179 - case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
35180 - default:return_trace (c->default_return_value ());
35181 - }
35182 - }
35183 -
35184 - protected:
35185 - union {
35186 - HBUINT16 format; /* Format identifier */
35187 - SingleSubstFormat1 format1;
35188 - SingleSubstFormat2 format2;
35189 - } u;
35190 -};
35191 -
35192 -template<typename Iterator>
35193 -static void
35194 -SingleSubst_serialize (hb_serialize_context_t *c,
35195 - Iterator it)
35196 -{ c->start_embed<SingleSubst> ()->serialize (c, it); }
35197 -
35198 -struct Sequence
35199 -{
35200 - bool intersects (const hb_set_t *glyphs) const
35201 - { return hb_all (substitute, glyphs); }
35202 -
35203 - void closure (hb_closure_context_t *c) const
35204 - { c->output->add_array (substitute.arrayZ, substitute.len); }
35205 -
35206 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35207 - { c->output->add_array (substitute.arrayZ, substitute.len); }
35208 -
35209 - bool apply (hb_ot_apply_context_t *c) const
35210 - {
35211 - TRACE_APPLY (this);
35212 - unsigned int count = substitute.len;
35213 -
35214 - /* Special-case to make it in-place and not consider this
35215 - * as a "multiplied" substitution. */
35216 - if (unlikely (count == 1))
35217 - {
35218 - c->replace_glyph (substitute.arrayZ[0]);
35219 - return_trace (true);
35220 - }
35221 - /* Spec disallows this, but Uniscribe allows it.
35222 - * https://github.com/harfbuzz/harfbuzz/issues/253 */
35223 - else if (unlikely (count == 0))
35224 - {
35225 - c->buffer->delete_glyph ();
35226 - return_trace (true);
35227 - }
35228 -
35229 - unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
35230 - HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
35231 - unsigned lig_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
35232 -
35233 - for (unsigned int i = 0; i < count; i++)
35234 - {
35235 - /* If is attached to a ligature, don't disturb that.
35236 - * https://github.com/harfbuzz/harfbuzz/issues/3069 */
35237 - if (!lig_id)
35238 - _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
35239 - c->output_glyph_for_component (substitute.arrayZ[i], klass);
35240 - }
35241 - c->buffer->skip_glyph ();
35242 -
35243 - return_trace (true);
35244 - }
35245 -
35246 - template <typename Iterator,
35247 - hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
35248 - bool serialize (hb_serialize_context_t *c,
35249 - Iterator subst)
35250 - {
35251 - TRACE_SERIALIZE (this);
35252 - return_trace (substitute.serialize (c, subst));
35253 - }
35254 -
35255 - bool subset (hb_subset_context_t *c) const
35256 - {
35257 - TRACE_SUBSET (this);
35258 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35259 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35260 -
35261 - if (!intersects (&glyphset)) return_trace (false);
35262 -
35263 - auto it =
35264 - + hb_iter (substitute)
35265 - | hb_map (glyph_map)
35266 - ;
35267 -
35268 - auto *out = c->serializer->start_embed (*this);
35269 - return_trace (out->serialize (c->serializer, it));
35270 - }
35271 -
35272 - bool sanitize (hb_sanitize_context_t *c) const
35273 - {
35274 - TRACE_SANITIZE (this);
35275 - return_trace (substitute.sanitize (c));
35276 - }
35277 -
35278 - protected:
35279 - Array16Of<HBGlyphID16>
35280 - substitute; /* String of GlyphIDs to substitute */
35281 - public:
35282 - DEFINE_SIZE_ARRAY (2, substitute);
35283 -};
35284 -
35285 -struct MultipleSubstFormat1
35286 -{
35287 - bool intersects (const hb_set_t *glyphs) const
35288 - { return (this+coverage).intersects (glyphs); }
35289 -
35290 - bool may_have_non_1to1 () const
35291 - { return true; }
35292 -
35293 - void closure (hb_closure_context_t *c) const
35294 - {
35295 - + hb_zip (this+coverage, sequence)
35296 - | hb_filter (c->parent_active_glyphs (), hb_first)
35297 - | hb_map (hb_second)
35298 - | hb_map (hb_add (this))
35299 - | hb_apply ([c] (const Sequence &_) { _.closure (c); })
35300 - ;
35301 - }
35302 -
35303 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35304 -
35305 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35306 - {
35307 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35308 - + hb_zip (this+coverage, sequence)
35309 - | hb_map (hb_second)
35310 - | hb_map (hb_add (this))
35311 - | hb_apply ([c] (const Sequence &_) { _.collect_glyphs (c); })
35312 - ;
35313 - }
35314 -
35315 - const Coverage &get_coverage () const { return this+coverage; }
35316 -
35317 - bool would_apply (hb_would_apply_context_t *c) const
35318 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
35319 -
35320 - bool apply (hb_ot_apply_context_t *c) const
35321 - {
35322 - TRACE_APPLY (this);
35323 -
35324 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
35325 - if (likely (index == NOT_COVERED)) return_trace (false);
35326 -
35327 - return_trace ((this+sequence[index]).apply (c));
35328 - }
35329 -
35330 - bool serialize (hb_serialize_context_t *c,
35331 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35332 - hb_array_t<const unsigned int> substitute_len_list,
35333 - hb_array_t<const HBGlyphID16> substitute_glyphs_list)
35334 - {
35335 - TRACE_SERIALIZE (this);
35336 - if (unlikely (!c->extend_min (this))) return_trace (false);
35337 - if (unlikely (!sequence.serialize (c, glyphs.length))) return_trace (false);
35338 - for (unsigned int i = 0; i < glyphs.length; i++)
35339 - {
35340 - unsigned int substitute_len = substitute_len_list[i];
35341 - if (unlikely (!sequence[i]
35342 - .serialize_serialize (c, substitute_glyphs_list.sub_array (0, substitute_l…
35343 - return_trace (false);
35344 - substitute_glyphs_list += substitute_len;
35345 - }
35346 - return_trace (coverage.serialize_serialize (c, glyphs));
35347 - }
35348 -
35349 - bool subset (hb_subset_context_t *c) const
35350 - {
35351 - TRACE_SUBSET (this);
35352 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35353 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35354 -
35355 - auto *out = c->serializer->start_embed (*this);
35356 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35357 - out->format = format;
35358 -
35359 - hb_sorted_vector_t<hb_codepoint_t> new_coverage;
35360 - + hb_zip (this+coverage, sequence)
35361 - | hb_filter (glyphset, hb_first)
35362 - | hb_filter (subset_offset_array (c, out->sequence, this), hb_second)
35363 - | hb_map (hb_first)
35364 - | hb_map (glyph_map)
35365 - | hb_sink (new_coverage)
35366 - ;
35367 - out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
35368 - return_trace (bool (new_coverage));
35369 - }
35370 -
35371 - bool sanitize (hb_sanitize_context_t *c) const
35372 - {
35373 - TRACE_SANITIZE (this);
35374 - return_trace (coverage.sanitize (c, this) && sequence.sanitize (c, this));
35375 - }
35376 -
35377 - protected:
35378 - HBUINT16 format; /* Format identifier--format = 1 */
35379 - Offset16To<Coverage>
35380 - coverage; /* Offset to Coverage table--from
35381 - * beginning of Substitution table */
35382 - Array16OfOffset16To<Sequence>
35383 - sequence; /* Array of Sequence tables
35384 - * ordered by Coverage Index */
35385 - public:
35386 - DEFINE_SIZE_ARRAY (6, sequence);
35387 -};
35388 -
35389 -struct MultipleSubst
35390 -{
35391 - bool serialize (hb_serialize_context_t *c,
35392 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35393 - hb_array_t<const unsigned int> substitute_len_list,
35394 - hb_array_t<const HBGlyphID16> substitute_glyphs_list)
35395 - {
35396 - TRACE_SERIALIZE (this);
35397 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
35398 - unsigned int format = 1;
35399 - u.format = format;
35400 - switch (u.format) {
35401 - case 1: return_trace (u.format1.serialize (c, glyphs, substitute_len_list, substitute_glyphs_l…
35402 - default:return_trace (false);
35403 - }
35404 - }
35405 -
35406 - template <typename context_t, typename ...Ts>
35407 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
35408 - {
35409 - TRACE_DISPATCH (this, u.format);
35410 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
35411 - switch (u.format) {
35412 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
35413 - default:return_trace (c->default_return_value ());
35414 - }
35415 - }
35416 -
35417 - protected:
35418 - union {
35419 - HBUINT16 format; /* Format identifier */
35420 - MultipleSubstFormat1 format1;
35421 - } u;
35422 -};
35423 -
35424 -struct AlternateSet
35425 -{
35426 - bool intersects (const hb_set_t *glyphs) const
35427 - { return hb_any (alternates, glyphs); }
35428 -
35429 - void closure (hb_closure_context_t *c) const
35430 - { c->output->add_array (alternates.arrayZ, alternates.len); }
35431 -
35432 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35433 - { c->output->add_array (alternates.arrayZ, alternates.len); }
35434 -
35435 - bool apply (hb_ot_apply_context_t *c) const
35436 - {
35437 - TRACE_APPLY (this);
35438 - unsigned int count = alternates.len;
35439 -
35440 - if (unlikely (!count)) return_trace (false);
35441 -
35442 - hb_mask_t glyph_mask = c->buffer->cur().mask;
35443 - hb_mask_t lookup_mask = c->lookup_mask;
35444 -
35445 - /* Note: This breaks badly if two features enabled this lookup together. */
35446 - unsigned int shift = hb_ctz (lookup_mask);
35447 - unsigned int alt_index = ((lookup_mask & glyph_mask) >> shift);
35448 -
35449 - /* If alt_index is MAX_VALUE, randomize feature if it is the rand feature. */
35450 - if (alt_index == HB_OT_MAP_MAX_VALUE && c->random)
35451 - {
35452 - /* Maybe we can do better than unsafe-to-break all; but since we are
35453 - * changing random state, it would be hard to track that. Good 'nough. */
35454 - c->buffer->unsafe_to_break (0, c->buffer->len);
35455 - alt_index = c->random_number () % count + 1;
35456 - }
35457 -
35458 - if (unlikely (alt_index > count || alt_index == 0)) return_trace (false);
35459 -
35460 - c->replace_glyph (alternates[alt_index - 1]);
35461 -
35462 - return_trace (true);
35463 - }
35464 -
35465 - unsigned
35466 - get_alternates (unsigned start_offset,
35467 - unsigned *alternate_count /* IN/OUT. May be NULL. */,
35468 - hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
35469 - {
35470 - if (alternates.len && alternate_count)
35471 - {
35472 - + alternates.sub_array (start_offset, alternate_count)
35473 - | hb_sink (hb_array (alternate_glyphs, *alternate_count))
35474 - ;
35475 - }
35476 - return alternates.len;
35477 - }
35478 -
35479 - template <typename Iterator,
35480 - hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
35481 - bool serialize (hb_serialize_context_t *c,
35482 - Iterator alts)
35483 - {
35484 - TRACE_SERIALIZE (this);
35485 - return_trace (alternates.serialize (c, alts));
35486 - }
35487 -
35488 - bool subset (hb_subset_context_t *c) const
35489 - {
35490 - TRACE_SUBSET (this);
35491 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35492 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35493 -
35494 - auto it =
35495 - + hb_iter (alternates)
35496 - | hb_filter (glyphset)
35497 - | hb_map (glyph_map)
35498 - ;
35499 -
35500 - auto *out = c->serializer->start_embed (*this);
35501 - return_trace (out->serialize (c->serializer, it) &&
35502 - out->alternates);
35503 - }
35504 -
35505 - bool sanitize (hb_sanitize_context_t *c) const
35506 - {
35507 - TRACE_SANITIZE (this);
35508 - return_trace (alternates.sanitize (c));
35509 - }
35510 -
35511 - protected:
35512 - Array16Of<HBGlyphID16>
35513 - alternates; /* Array of alternate GlyphIDs--in
35514 - * arbitrary order */
35515 - public:
35516 - DEFINE_SIZE_ARRAY (2, alternates);
35517 -};
35518 -
35519 -struct AlternateSubstFormat1
35520 -{
35521 - bool intersects (const hb_set_t *glyphs) const
35522 - { return (this+coverage).intersects (glyphs); }
35523 -
35524 - bool may_have_non_1to1 () const
35525 - { return false; }
35526 -
35527 - void closure (hb_closure_context_t *c) const
35528 - {
35529 - + hb_zip (this+coverage, alternateSet)
35530 - | hb_filter (c->parent_active_glyphs (), hb_first)
35531 - | hb_map (hb_second)
35532 - | hb_map (hb_add (this))
35533 - | hb_apply ([c] (const AlternateSet &_) { _.closure (c); })
35534 - ;
35535 -
35536 - }
35537 -
35538 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35539 -
35540 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35541 - {
35542 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35543 - + hb_zip (this+coverage, alternateSet)
35544 - | hb_map (hb_second)
35545 - | hb_map (hb_add (this))
35546 - | hb_apply ([c] (const AlternateSet &_) { _.collect_glyphs (c); })
35547 - ;
35548 - }
35549 -
35550 - const Coverage &get_coverage () const { return this+coverage; }
35551 -
35552 - bool would_apply (hb_would_apply_context_t *c) const
35553 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
35554 -
35555 - unsigned
35556 - get_glyph_alternates (hb_codepoint_t gid,
35557 - unsigned start_offset,
35558 - unsigned *alternate_count /* IN/OUT. May be NULL. */,
35559 - hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
35560 - { return (this+alternateSet[(this+coverage).get_coverage (gid)])
35561 - .get_alternates (start_offset, alternate_count, alternate_glyphs); }
35562 -
35563 - bool apply (hb_ot_apply_context_t *c) const
35564 - {
35565 - TRACE_APPLY (this);
35566 -
35567 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
35568 - if (likely (index == NOT_COVERED)) return_trace (false);
35569 -
35570 - return_trace ((this+alternateSet[index]).apply (c));
35571 - }
35572 -
35573 - bool serialize (hb_serialize_context_t *c,
35574 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35575 - hb_array_t<const unsigned int> alternate_len_list,
35576 - hb_array_t<const HBGlyphID16> alternate_glyphs_list)
35577 - {
35578 - TRACE_SERIALIZE (this);
35579 - if (unlikely (!c->extend_min (this))) return_trace (false);
35580 - if (unlikely (!alternateSet.serialize (c, glyphs.length))) return_trace (false);
35581 - for (unsigned int i = 0; i < glyphs.length; i++)
35582 - {
35583 - unsigned int alternate_len = alternate_len_list[i];
35584 - if (unlikely (!alternateSet[i]
35585 - .serialize_serialize (c, alternate_glyphs_list.sub_array (0, alternate_len…
35586 - return_trace (false);
35587 - alternate_glyphs_list += alternate_len;
35588 - }
35589 - return_trace (coverage.serialize_serialize (c, glyphs));
35590 - }
35591 -
35592 - bool subset (hb_subset_context_t *c) const
35593 - {
35594 - TRACE_SUBSET (this);
35595 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35596 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35597 -
35598 - auto *out = c->serializer->start_embed (*this);
35599 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35600 - out->format = format;
35601 -
35602 - hb_sorted_vector_t<hb_codepoint_t> new_coverage;
35603 - + hb_zip (this+coverage, alternateSet)
35604 - | hb_filter (glyphset, hb_first)
35605 - | hb_filter (subset_offset_array (c, out->alternateSet, this), hb_second)
35606 - | hb_map (hb_first)
35607 - | hb_map (glyph_map)
35608 - | hb_sink (new_coverage)
35609 - ;
35610 - out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
35611 - return_trace (bool (new_coverage));
35612 - }
35613 -
35614 - bool sanitize (hb_sanitize_context_t *c) const
35615 - {
35616 - TRACE_SANITIZE (this);
35617 - return_trace (coverage.sanitize (c, this) && alternateSet.sanitize (c, this));
35618 - }
35619 -
35620 - protected:
35621 - HBUINT16 format; /* Format identifier--format = 1 */
35622 - Offset16To<Coverage>
35623 - coverage; /* Offset to Coverage table--from
35624 - * beginning of Substitution table */
35625 - Array16OfOffset16To<AlternateSet>
35626 - alternateSet; /* Array of AlternateSet tables
35627 - * ordered by Coverage Index */
35628 - public:
35629 - DEFINE_SIZE_ARRAY (6, alternateSet);
35630 -};
35631 -
35632 -struct AlternateSubst
35633 -{
35634 - bool serialize (hb_serialize_context_t *c,
35635 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35636 - hb_array_t<const unsigned int> alternate_len_list,
35637 - hb_array_t<const HBGlyphID16> alternate_glyphs_list)
35638 - {
35639 - TRACE_SERIALIZE (this);
35640 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
35641 - unsigned int format = 1;
35642 - u.format = format;
35643 - switch (u.format) {
35644 - case 1: return_trace (u.format1.serialize (c, glyphs, alternate_len_list, alternate_glyphs_lis…
35645 - default:return_trace (false);
35646 - }
35647 - }
35648 -
35649 - template <typename context_t, typename ...Ts>
35650 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
35651 - {
35652 - TRACE_DISPATCH (this, u.format);
35653 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
35654 - switch (u.format) {
35655 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
35656 - default:return_trace (c->default_return_value ());
35657 - }
35658 - }
35659 -
35660 - protected:
35661 - union {
35662 - HBUINT16 format; /* Format identifier */
35663 - AlternateSubstFormat1 format1;
35664 - } u;
35665 -};
35666 -
35667 -
35668 -struct Ligature
35669 -{
35670 - bool intersects (const hb_set_t *glyphs) const
35671 - { return hb_all (component, glyphs); }
35672 -
35673 - void closure (hb_closure_context_t *c) const
35674 - {
35675 - if (!intersects (c->glyphs)) return;
35676 - c->output->add (ligGlyph);
35677 - }
35678 -
35679 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35680 - {
35681 - c->input->add_array (component.arrayZ, component.get_length ());
35682 - c->output->add (ligGlyph);
35683 - }
35684 -
35685 - bool would_apply (hb_would_apply_context_t *c) const
35686 - {
35687 - if (c->len != component.lenP1)
35688 - return false;
35689 -
35690 - for (unsigned int i = 1; i < c->len; i++)
35691 - if (likely (c->glyphs[i] != component[i]))
35692 - return false;
35693 -
35694 - return true;
35695 - }
35696 -
35697 - bool apply (hb_ot_apply_context_t *c) const
35698 - {
35699 - TRACE_APPLY (this);
35700 - unsigned int count = component.lenP1;
35701 -
35702 - if (unlikely (!count)) return_trace (false);
35703 -
35704 - /* Special-case to make it in-place and not consider this
35705 - * as a "ligated" substitution. */
35706 - if (unlikely (count == 1))
35707 - {
35708 - c->replace_glyph (ligGlyph);
35709 - return_trace (true);
35710 - }
35711 -
35712 - unsigned int total_component_count = 0;
35713 -
35714 - unsigned int match_length = 0;
35715 - unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
35716 -
35717 - if (likely (!match_input (c, count,
35718 - &component[1],
35719 - match_glyph,
35720 - nullptr,
35721 - &match_length,
35722 - match_positions,
35723 - &total_component_count)))
35724 - return_trace (false);
35725 -
35726 - ligate_input (c,
35727 - count,
35728 - match_positions,
35729 - match_length,
35730 - ligGlyph,
35731 - total_component_count);
35732 -
35733 - return_trace (true);
35734 - }
35735 -
35736 - template <typename Iterator,
35737 - hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
35738 - bool serialize (hb_serialize_context_t *c,
35739 - hb_codepoint_t ligature,
35740 - Iterator components /* Starting from second */)
35741 - {
35742 - TRACE_SERIALIZE (this);
35743 - if (unlikely (!c->extend_min (this))) return_trace (false);
35744 - ligGlyph = ligature;
35745 - if (unlikely (!component.serialize (c, components))) return_trace (false);
35746 - return_trace (true);
35747 - }
35748 -
35749 - bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
35750 - {
35751 - TRACE_SUBSET (this);
35752 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35753 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35754 -
35755 - if (!intersects (&glyphset) || !glyphset.has (ligGlyph)) return_trace (false);
35756 - // Ensure Coverage table is always packed after this.
35757 - c->serializer->add_virtual_link (coverage_idx);
35758 -
35759 - auto it =
35760 - + hb_iter (component)
35761 - | hb_map (glyph_map)
35762 - ;
35763 -
35764 - auto *out = c->serializer->start_embed (*this);
35765 - return_trace (out->serialize (c->serializer,
35766 - glyph_map[ligGlyph],
35767 - it));
35768 - }
35769 -
35770 - public:
35771 - bool sanitize (hb_sanitize_context_t *c) const
35772 - {
35773 - TRACE_SANITIZE (this);
35774 - return_trace (ligGlyph.sanitize (c) && component.sanitize (c));
35775 - }
35776 -
35777 - protected:
35778 - HBGlyphID16 ligGlyph; /* GlyphID of ligature to substitute */
35779 - HeadlessArrayOf<HBGlyphID16>
35780 - component; /* Array of component GlyphIDs--start
35781 - * with the second component--ordered
35782 - * in writing direction */
35783 - public:
35784 - DEFINE_SIZE_ARRAY (4, component);
35785 -};
35786 -
35787 -struct LigatureSet
35788 -{
35789 - bool intersects (const hb_set_t *glyphs) const
35790 - {
35791 - return
35792 - + hb_iter (ligature)
35793 - | hb_map (hb_add (this))
35794 - | hb_map ([glyphs] (const Ligature &_) { return _.intersects (glyphs); })
35795 - | hb_any
35796 - ;
35797 - }
35798 -
35799 - void closure (hb_closure_context_t *c) const
35800 - {
35801 - + hb_iter (ligature)
35802 - | hb_map (hb_add (this))
35803 - | hb_apply ([c] (const Ligature &_) { _.closure (c); })
35804 - ;
35805 - }
35806 -
35807 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35808 - {
35809 - + hb_iter (ligature)
35810 - | hb_map (hb_add (this))
35811 - | hb_apply ([c] (const Ligature &_) { _.collect_glyphs (c); })
35812 - ;
35813 - }
35814 -
35815 - bool would_apply (hb_would_apply_context_t *c) const
35816 - {
35817 - return
35818 - + hb_iter (ligature)
35819 - | hb_map (hb_add (this))
35820 - | hb_map ([c] (const Ligature &_) { return _.would_apply (c); })
35821 - | hb_any
35822 - ;
35823 - }
35824 -
35825 - bool apply (hb_ot_apply_context_t *c) const
35826 - {
35827 - TRACE_APPLY (this);
35828 - unsigned int num_ligs = ligature.len;
35829 - for (unsigned int i = 0; i < num_ligs; i++)
35830 - {
35831 - const Ligature &lig = this+ligature[i];
35832 - if (lig.apply (c)) return_trace (true);
35833 - }
35834 -
35835 - return_trace (false);
35836 - }
35837 -
35838 - bool serialize (hb_serialize_context_t *c,
35839 - hb_array_t<const HBGlyphID16> ligatures,
35840 - hb_array_t<const unsigned int> component_count_list,
35841 - hb_array_t<const HBGlyphID16> &component_list /* Starting from second for each ligature */)
35842 - {
35843 - TRACE_SERIALIZE (this);
35844 - if (unlikely (!c->extend_min (this))) return_trace (false);
35845 - if (unlikely (!ligature.serialize (c, ligatures.length))) return_trace (false);
35846 - for (unsigned int i = 0; i < ligatures.length; i++)
35847 - {
35848 - unsigned int component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0);
35849 - if (unlikely (!ligature[i].serialize_serialize (c,
35850 - ligatures[i],
35851 - component_list.sub_array (0, component_count…
35852 - return_trace (false);
35853 - component_list += component_count;
35854 - }
35855 - return_trace (true);
35856 - }
35857 -
35858 - bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
35859 - {
35860 - TRACE_SUBSET (this);
35861 - auto *out = c->serializer->start_embed (*this);
35862 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35863 -
35864 - + hb_iter (ligature)
35865 - | hb_filter (subset_offset_array (c, out->ligature, this, coverage_idx))
35866 - | hb_drain
35867 - ;
35868 -
35869 - if (bool (out->ligature))
35870 - // Ensure Coverage table is always packed after this.
35871 - c->serializer->add_virtual_link (coverage_idx);
35872 -
35873 - return_trace (bool (out->ligature));
35874 - }
35875 -
35876 - bool sanitize (hb_sanitize_context_t *c) const
35877 - {
35878 - TRACE_SANITIZE (this);
35879 - return_trace (ligature.sanitize (c, this));
35880 - }
35881 -
35882 - protected:
35883 - Array16OfOffset16To<Ligature>
35884 - ligature; /* Array LigatureSet tables
35885 - * ordered by preference */
35886 - public:
35887 - DEFINE_SIZE_ARRAY (2, ligature);
35888 -};
35889 -
35890 -struct LigatureSubstFormat1
35891 -{
35892 - bool intersects (const hb_set_t *glyphs) const
35893 - {
35894 - return
35895 - + hb_zip (this+coverage, ligatureSet)
35896 - | hb_filter (*glyphs, hb_first)
35897 - | hb_map (hb_second)
35898 - | hb_map ([this, glyphs] (const Offset16To<LigatureSet> &_)
35899 - { return (this+_).intersects (glyphs); })
35900 - | hb_any
35901 - ;
35902 - }
35903 -
35904 - bool may_have_non_1to1 () const
35905 - { return true; }
35906 -
35907 - void closure (hb_closure_context_t *c) const
35908 - {
35909 - + hb_zip (this+coverage, ligatureSet)
35910 - | hb_filter (c->parent_active_glyphs (), hb_first)
35911 - | hb_map (hb_second)
35912 - | hb_map (hb_add (this))
35913 - | hb_apply ([c] (const LigatureSet &_) { _.closure (c); })
35914 - ;
35915 -
35916 - }
35917 -
35918 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35919 -
35920 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35921 - {
35922 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35923 -
35924 - + hb_zip (this+coverage, ligatureSet)
35925 - | hb_map (hb_second)
35926 - | hb_map (hb_add (this))
35927 - | hb_apply ([c] (const LigatureSet &_) { _.collect_glyphs (c); })
35928 - ;
35929 - }
35930 -
35931 - const Coverage &get_coverage () const { return this+coverage; }
35932 -
35933 - bool would_apply (hb_would_apply_context_t *c) const
35934 - {
35935 - unsigned int index = (this+coverage).get_coverage (c->glyphs[0]);
35936 - if (likely (index == NOT_COVERED)) return false;
35937 -
35938 - const LigatureSet &lig_set = this+ligatureSet[index];
35939 - return lig_set.would_apply (c);
35940 - }
35941 -
35942 - bool apply (hb_ot_apply_context_t *c) const
35943 - {
35944 - TRACE_APPLY (this);
35945 -
35946 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
35947 - if (likely (index == NOT_COVERED)) return_trace (false);
35948 -
35949 - const LigatureSet &lig_set = this+ligatureSet[index];
35950 - return_trace (lig_set.apply (c));
35951 - }
35952 -
35953 - bool serialize (hb_serialize_context_t *c,
35954 - hb_sorted_array_t<const HBGlyphID16> first_glyphs,
35955 - hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
35956 - hb_array_t<const HBGlyphID16> ligatures_list,
35957 - hb_array_t<const unsigned int> component_count_list,
35958 - hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
35959 - {
35960 - TRACE_SERIALIZE (this);
35961 - if (unlikely (!c->extend_min (this))) return_trace (false);
35962 - if (unlikely (!ligatureSet.serialize (c, first_glyphs.length))) return_trace (false);
35963 - for (unsigned int i = 0; i < first_glyphs.length; i++)
35964 - {
35965 - unsigned int ligature_count = ligature_per_first_glyph_count_list[i];
35966 - if (unlikely (!ligatureSet[i]
35967 - .serialize_serialize (c,
35968 - ligatures_list.sub_array (0, ligature_count),
35969 - component_count_list.sub_array (0, ligature_count),
35970 - component_list))) return_trace (false);
35971 - ligatures_list += ligature_count;
35972 - component_count_list += ligature_count;
35973 - }
35974 - return_trace (coverage.serialize_serialize (c, first_glyphs));
35975 - }
35976 -
35977 - bool subset (hb_subset_context_t *c) const
35978 - {
35979 - TRACE_SUBSET (this);
35980 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35981 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35982 -
35983 - auto *out = c->serializer->start_embed (*this);
35984 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35985 - out->format = format;
35986 -
35987 - // Due to a bug in some older versions of windows 7 the Coverage table must be
35988 - // packed after the LigatureSet and Ligature tables, so serialize Coverage first
35989 - // which places it last in the packed order.
35990 - hb_set_t new_coverage;
35991 - + hb_zip (this+coverage, hb_iter (ligatureSet) | hb_map (hb_add (this)))
35992 - | hb_filter (glyphset, hb_first)
35993 - | hb_filter ([&] (const LigatureSet& _) {
35994 - return _.intersects (&glyphset);
35995 - }, hb_second)
35996 - | hb_map (hb_first)
35997 - | hb_sink (new_coverage);
35998 -
35999 - if (!c->serializer->push<Coverage> ()
36000 - ->serialize (c->serializer,
36001 - + new_coverage.iter () | hb_map_retains_sorting (glyph_map)))
36002 - {
36003 - c->serializer->pop_discard ();
36004 - return_trace (false);
36005 - }
36006 -
36007 - unsigned coverage_idx = c->serializer->pop_pack ();
36008 - c->serializer->add_link (out->coverage, coverage_idx);
36009 -
36010 - + hb_zip (this+coverage, ligatureSet)
36011 - | hb_filter (new_coverage, hb_first)
36012 - | hb_map (hb_second)
36013 - // to ensure that the repacker always orders the coverage table after the LigatureSet
36014 - // and LigatureSubtable's they will be linked to the Coverage table via a virtual link
36015 - // the coverage table object idx is passed down to facilitate this.
36016 - | hb_apply (subset_offset_array (c, out->ligatureSet, this, coverage_idx))
36017 - ;
36018 -
36019 - return_trace (bool (new_coverage));
36020 - }
36021 -
36022 - bool sanitize (hb_sanitize_context_t *c) const
36023 - {
36024 - TRACE_SANITIZE (this);
36025 - return_trace (coverage.sanitize (c, this) && ligatureSet.sanitize (c, this));
36026 - }
36027 -
36028 - protected:
36029 - HBUINT16 format; /* Format identifier--format = 1 */
36030 - Offset16To<Coverage>
36031 - coverage; /* Offset to Coverage table--from
36032 - * beginning of Substitution table */
36033 - Array16OfOffset16To<LigatureSet>
36034 - ligatureSet; /* Array LigatureSet tables
36035 - * ordered by Coverage Index */
36036 - public:
36037 - DEFINE_SIZE_ARRAY (6, ligatureSet);
36038 -};
36039 -
36040 -struct LigatureSubst
36041 -{
36042 - bool serialize (hb_serialize_context_t *c,
36043 - hb_sorted_array_t<const HBGlyphID16> first_glyphs,
36044 - hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
36045 - hb_array_t<const HBGlyphID16> ligatures_list,
36046 - hb_array_t<const unsigned int> component_count_list,
36047 - hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
36048 - {
36049 - TRACE_SERIALIZE (this);
36050 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
36051 - unsigned int format = 1;
36052 - u.format = format;
36053 - switch (u.format) {
36054 - case 1: return_trace (u.format1.serialize (c,
36055 - first_glyphs,
36056 - ligature_per_first_glyph_count_list,
36057 - ligatures_list,
36058 - component_count_list,
36059 - component_list));
36060 - default:return_trace (false);
36061 - }
36062 - }
36063 -
36064 - template <typename context_t, typename ...Ts>
36065 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
36066 - {
36067 - TRACE_DISPATCH (this, u.format);
36068 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
36069 - switch (u.format) {
36070 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
36071 - default:return_trace (c->default_return_value ());
36072 - }
36073 - }
36074 -
36075 - protected:
36076 - union {
36077 - HBUINT16 format; /* Format identifier */
36078 - LigatureSubstFormat1 format1;
36079 - } u;
36080 -};
36081 -
36082 -
36083 -struct ContextSubst : Context {};
36084 -
36085 -struct ChainContextSubst : ChainContext {};
36086 -
36087 -struct ExtensionSubst : Extension<ExtensionSubst>
36088 -{
36089 - typedef struct SubstLookupSubTable SubTable;
36090 - bool is_reverse () const;
36091 -};
36092 -
36093 -
36094 -struct ReverseChainSingleSubstFormat1
36095 -{
36096 - bool intersects (const hb_set_t *glyphs) const
36097 - {
36098 - if (!(this+coverage).intersects (glyphs))
36099 - return false;
36100 -
36101 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36102 -
36103 - unsigned int count;
36104 -
36105 - count = backtrack.len;
36106 - for (unsigned int i = 0; i < count; i++)
36107 - if (!(this+backtrack[i]).intersects (glyphs))
36108 - return false;
36109 -
36110 - count = lookahead.len;
36111 - for (unsigned int i = 0; i < count; i++)
36112 - if (!(this+lookahead[i]).intersects (glyphs))
36113 - return false;
36114 -
36115 - return true;
36116 - }
36117 -
36118 - bool may_have_non_1to1 () const
36119 - { return false; }
36120 -
36121 - void closure (hb_closure_context_t *c) const
36122 - {
36123 - if (!intersects (c->glyphs)) return;
36124 -
36125 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36126 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36127 -
36128 - + hb_zip (this+coverage, substitute)
36129 - | hb_filter (c->parent_active_glyphs (), hb_first)
36130 - | hb_map (hb_second)
36131 - | hb_sink (c->output)
36132 - ;
36133 - }
36134 -
36135 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
36136 -
36137 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
36138 - {
36139 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
36140 -
36141 - unsigned int count;
36142 -
36143 - count = backtrack.len;
36144 - for (unsigned int i = 0; i < count; i++)
36145 - if (unlikely (!(this+backtrack[i]).collect_coverage (c->before))) return;
36146 -
36147 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36148 - count = lookahead.len;
36149 - for (unsigned int i = 0; i < count; i++)
36150 - if (unlikely (!(this+lookahead[i]).collect_coverage (c->after))) return;
36151 -
36152 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36153 - count = substitute.len;
36154 - c->output->add_array (substitute.arrayZ, substitute.len);
36155 - }
36156 -
36157 - const Coverage &get_coverage () const { return this+coverage; }
36158 -
36159 - bool would_apply (hb_would_apply_context_t *c) const
36160 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
36161 -
36162 - bool apply (hb_ot_apply_context_t *c) const
36163 - {
36164 - TRACE_APPLY (this);
36165 - if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL))
36166 - return_trace (false); /* No chaining to this type */
36167 -
36168 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
36169 - if (likely (index == NOT_COVERED)) return_trace (false);
36170 -
36171 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36172 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36173 -
36174 - if (unlikely (index >= substitute.len)) return_trace (false);
36175 -
36176 - unsigned int start_index = 0, end_index = 0;
36177 - if (match_backtrack (c,
36178 - backtrack.len, (HBUINT16 *) backtrack.arrayZ,
36179 - match_coverage, this,
36180 - &start_index) &&
36181 - match_lookahead (c,
36182 - lookahead.len, (HBUINT16 *) lookahead.arrayZ,
36183 - match_coverage, this,
36184 - 1, &end_index))
36185 - {
36186 - c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
36187 - c->replace_glyph_inplace (substitute[index]);
36188 - /* Note: We DON'T decrease buffer->idx. The main loop does it
36189 - * for us. This is useful for preventing surprises if someone
36190 - * calls us through a Context lookup. */
36191 - return_trace (true);
36192 - }
36193 -
36194 - return_trace (false);
36195 - }
36196 -
36197 - template<typename Iterator,
36198 - hb_requires (hb_is_iterator (Iterator))>
36199 - bool serialize_coverage_offset_array (hb_subset_context_t *c, Iterator it) const
36200 - {
36201 - TRACE_SERIALIZE (this);
36202 - auto *out = c->serializer->start_embed<Array16OfOffset16To<Coverage>> ();
36203 -
36204 - if (unlikely (!c->serializer->allocate_size<HBUINT16> (HBUINT16::static_size)))
36205 - return_trace (false);
36206 -
36207 - for (auto& offset : it) {
36208 - auto *o = out->serialize_append (c->serializer);
36209 - if (unlikely (!o) || !o->serialize_subset (c, offset, this))
36210 - return_trace (false);
36211 - }
36212 -
36213 - return_trace (true);
36214 - }
36215 -
36216 - template<typename Iterator, typename BacktrackIterator, typename LookaheadIterator,
36217 - hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_pair_t)),
36218 - hb_requires (hb_is_iterator (BacktrackIterator)),
36219 - hb_requires (hb_is_iterator (LookaheadIterator))>
36220 - bool serialize (hb_subset_context_t *c,
36221 - Iterator coverage_subst_iter,
36222 - BacktrackIterator backtrack_iter,
36223 - LookaheadIterator lookahead_iter) const
36224 - {
36225 - TRACE_SERIALIZE (this);
36226 -
36227 - auto *out = c->serializer->start_embed (this);
36228 - if (unlikely (!c->serializer->check_success (out))) return_trace (false);
36229 - if (unlikely (!c->serializer->embed (this->format))) return_trace (false);
36230 - if (unlikely (!c->serializer->embed (this->coverage))) return_trace (false);
36231 -
36232 - if (!serialize_coverage_offset_array (c, backtrack_iter)) return_trace (false);
36233 - if (!serialize_coverage_offset_array (c, lookahead_iter)) return_trace (false);
36234 -
36235 - auto *substitute_out = c->serializer->start_embed<Array16Of<HBGlyphID16>> ();
36236 - auto substitutes =
36237 - + coverage_subst_iter
36238 - | hb_map (hb_second)
36239 - ;
36240 -
36241 - auto glyphs =
36242 - + coverage_subst_iter
36243 - | hb_map_retains_sorting (hb_first)
36244 - ;
36245 - if (unlikely (! c->serializer->check_success (substitute_out->serialize (c->serializer, substi…
36246 - return_trace (false);
36247 -
36248 - if (unlikely (!out->coverage.serialize_serialize (c->serializer, glyphs)))
36249 - return_trace (false);
36250 - return_trace (true);
36251 - }
36252 -
36253 - bool subset (hb_subset_context_t *c) const
36254 - {
36255 - TRACE_SUBSET (this);
36256 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
36257 - const hb_map_t &glyph_map = *c->plan->glyph_map;
36258 -
36259 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36260 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36261 -
36262 - auto it =
36263 - + hb_zip (this+coverage, substitute)
36264 - | hb_filter (glyphset, hb_first)
36265 - | hb_filter (glyphset, hb_second)
36266 - | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
36267 - { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
36268 - ;
36269 -
36270 - return_trace (bool (it) && serialize (c, it, backtrack.iter (), lookahead.iter ()));
36271 - }
36272 -
36273 - bool sanitize (hb_sanitize_context_t *c) const
36274 - {
36275 - TRACE_SANITIZE (this);
36276 - if (!(coverage.sanitize (c, this) && backtrack.sanitize (c, this)))
36277 - return_trace (false);
36278 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36279 - if (!lookahead.sanitize (c, this))
36280 - return_trace (false);
36281 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36282 - return_trace (substitute.sanitize (c));
36283 - }
36284 -
36285 - protected:
36286 - HBUINT16 format; /* Format identifier--format = 1 */
36287 - Offset16To<Coverage>
36288 - coverage; /* Offset to Coverage table--from
36289 - * beginning of table */
36290 - Array16OfOffset16To<Coverage>
36291 - backtrack; /* Array of coverage tables
36292 - * in backtracking sequence, in glyph
36293 - * sequence order */
36294 - Array16OfOffset16To<Coverage>
36295 - lookaheadX; /* Array of coverage tables
36296 - * in lookahead sequence, in glyph
36297 - * sequence order */
36298 - Array16Of<HBGlyphID16>
36299 - substituteX; /* Array of substitute
36300 - * GlyphIDs--ordered by Coverage Index */
36301 - public:
36302 - DEFINE_SIZE_MIN (10);
36303 -};
36304 -
36305 -struct ReverseChainSingleSubst
36306 -{
36307 - template <typename context_t, typename ...Ts>
36308 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
36309 - {
36310 - TRACE_DISPATCH (this, u.format);
36311 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
36312 - switch (u.format) {
36313 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
36314 - default:return_trace (c->default_return_value ());
36315 - }
36316 - }
36317 -
36318 - protected:
36319 - union {
36320 - HBUINT16 format; /* Format identifier */
36321 - ReverseChainSingleSubstFormat1 format1;
36322 - } u;
36323 -};
36324 -
36325 -
36326 -
36327 -/*
36328 - * SubstLookup
36329 - */
36330 -
36331 -struct SubstLookupSubTable
36332 -{
36333 - friend struct Lookup;
36334 - friend struct SubstLookup;
36335 -
36336 - enum Type {
36337 - Single = 1,
36338 - Multiple = 2,
36339 - Alternate = 3,
36340 - Ligature = 4,
36341 - Context = 5,
36342 - ChainContext = 6,
36343 - Extension = 7,
36344 - ReverseChainSingle = 8
36345 - };
36346 -
36347 - template <typename context_t, typename ...Ts>
36348 - typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type, Ts&&... ds) const
36349 - {
36350 - TRACE_DISPATCH (this, lookup_type);
36351 - switch (lookup_type) {
36352 - case Single: return_trace (u.single.dispatch (c, std::forward<Ts> (ds)...));
36353 - case Multiple: return_trace (u.multiple.dispatch (c, std::forward<Ts> (ds)...));
36354 - case Alternate: return_trace (u.alternate.dispatch (c, std::forward<Ts> (ds)...));
36355 - case Ligature: return_trace (u.ligature.dispatch (c, std::forward<Ts> (ds)...));
36356 - case Context: return_trace (u.context.dispatch (c, std::forward<Ts> (ds)...));
36357 - case ChainContext: return_trace (u.chainContext.dispatch (c, std::forward<Ts> (ds)...));
36358 - case Extension: return_trace (u.extension.dispatch (c, std::forward<Ts> (ds)...));
36359 - case ReverseChainSingle: return_trace (u.reverseChainContextSingle.dispatch (c, std::forward<T…
36360 - default: return_trace (c->default_return_value ());
36361 - }
36362 - }
36363 -
36364 - bool intersects (const hb_set_t *glyphs, unsigned int lookup_type) const
36365 - {
36366 - hb_intersects_context_t c (glyphs);
36367 - return dispatch (&c, lookup_type);
36368 - }
36369 -
36370 - protected:
36371 - union {
36372 - SingleSubst single;
36373 - MultipleSubst multiple;
36374 - AlternateSubst alternate;
36375 - LigatureSubst ligature;
36376 - ContextSubst context;
36377 - ChainContextSubst chainContext;
36378 - ExtensionSubst extension;
36379 - ReverseChainSingleSubst reverseChainContextSingle;
36380 - } u;
36381 - public:
36382 - DEFINE_SIZE_MIN (0);
36383 -};
36384 -
36385 -
36386 -struct SubstLookup : Lookup
36387 -{
36388 - typedef SubstLookupSubTable SubTable;
36389 -
36390 - const SubTable& get_subtable (unsigned int i) const
36391 - { return Lookup::get_subtable<SubTable> (i); }
36392 -
36393 - static inline bool lookup_type_is_reverse (unsigned int lookup_type)
36394 - { return lookup_type == SubTable::ReverseChainSingle; }
36395 -
36396 - bool is_reverse () const
36397 - {
36398 - unsigned int type = get_type ();
36399 - if (unlikely (type == SubTable::Extension))
36400 - return reinterpret_cast<const ExtensionSubst &> (get_subtable (0)).is_reverse ();
36401 - return lookup_type_is_reverse (type);
36402 - }
36403 -
36404 - bool may_have_non_1to1 () const
36405 - {
36406 - hb_have_non_1to1_context_t c;
36407 - return dispatch (&c);
36408 - }
36409 -
36410 - bool apply (hb_ot_apply_context_t *c) const
36411 - {
36412 - TRACE_APPLY (this);
36413 - return_trace (dispatch (c));
36414 - }
36415 -
36416 - bool intersects (const hb_set_t *glyphs) const
36417 - {
36418 - hb_intersects_context_t c (glyphs);
36419 - return dispatch (&c);
36420 - }
36421 -
36422 - hb_closure_context_t::return_t closure (hb_closure_context_t *c, unsigned int this_index) const
36423 - {
36424 - if (!c->should_visit_lookup (this_index))
36425 - return hb_closure_context_t::default_return_value ();
36426 -
36427 - c->set_recurse_func (dispatch_closure_recurse_func);
36428 -
36429 - hb_closure_context_t::return_t ret = dispatch (c);
36430 -
36431 - c->flush ();
36432 -
36433 - return ret;
36434 - }
36435 -
36436 - hb_closure_lookups_context_t::return_t closure_lookups (hb_closure_lookups_context_t *c, unsigne…
36437 - {
36438 - if (c->is_lookup_visited (this_index))
36439 - return hb_closure_lookups_context_t::default_return_value ();
36440 -
36441 - c->set_lookup_visited (this_index);
36442 - if (!intersects (c->glyphs))
36443 - {
36444 - c->set_lookup_inactive (this_index);
36445 - return hb_closure_lookups_context_t::default_return_value ();
36446 - }
36447 -
36448 - c->set_recurse_func (dispatch_closure_lookups_recurse_func);
36449 -
36450 - hb_closure_lookups_context_t::return_t ret = dispatch (c);
36451 - return ret;
36452 - }
36453 -
36454 - hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const
36455 - {
36456 - c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>);
36457 - return dispatch (c);
36458 - }
36459 -
36460 - template <typename set_t>
36461 - void collect_coverage (set_t *glyphs) const
36462 - {
36463 - hb_collect_coverage_context_t<set_t> c (glyphs);
36464 - dispatch (&c);
36465 - }
36466 -
36467 - bool would_apply (hb_would_apply_context_t *c,
36468 - const hb_ot_layout_lookup_accelerator_t *accel) const
36469 - {
36470 - if (unlikely (!c->len)) return false;
36471 - if (!accel->may_have (c->glyphs[0])) return false;
36472 - return dispatch (c);
36473 - }
36474 -
36475 - static inline bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index);
36476 -
36477 - bool serialize_single (hb_serialize_context_t *c,
36478 - uint32_t lookup_props,
36479 - hb_sorted_array_t<const HBGlyphID16> glyphs,
36480 - hb_array_t<const HBGlyphID16> substitutes)
36481 - {
36482 - TRACE_SERIALIZE (this);
36483 - if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
36484 - if (c->push<SubTable> ()->u.single.serialize (c, hb_zip (glyphs, substitutes)))
36485 - {
36486 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36487 - return_trace (true);
36488 - }
36489 - c->pop_discard ();
36490 - return_trace (false);
36491 - }
36492 -
36493 - bool serialize_multiple (hb_serialize_context_t *c,
36494 - uint32_t lookup_props,
36495 - hb_sorted_array_t<const HBGlyphID16> glyphs,
36496 - hb_array_t<const unsigned int> substitute_len_list,
36497 - hb_array_t<const HBGlyphID16> substitute_glyphs_list)
36498 - {
36499 - TRACE_SERIALIZE (this);
36500 - if (unlikely (!Lookup::serialize (c, SubTable::Multiple, lookup_props, 1))) return_trace (fals…
36501 - if (c->push<SubTable> ()->u.multiple.
36502 - serialize (c,
36503 - glyphs,
36504 - substitute_len_list,
36505 - substitute_glyphs_list))
36506 - {
36507 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36508 - return_trace (true);
36509 - }
36510 - c->pop_discard ();
36511 - return_trace (false);
36512 - }
36513 -
36514 - bool serialize_alternate (hb_serialize_context_t *c,
36515 - uint32_t lookup_props,
36516 - hb_sorted_array_t<const HBGlyphID16> glyphs,
36517 - hb_array_t<const unsigned int> alternate_len_list,
36518 - hb_array_t<const HBGlyphID16> alternate_glyphs_list)
36519 - {
36520 - TRACE_SERIALIZE (this);
36521 - if (unlikely (!Lookup::serialize (c, SubTable::Alternate, lookup_props, 1))) return_trace (fal…
36522 -
36523 - if (c->push<SubTable> ()->u.alternate.
36524 - serialize (c,
36525 - glyphs,
36526 - alternate_len_list,
36527 - alternate_glyphs_list))
36528 - {
36529 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36530 - return_trace (true);
36531 - }
36532 - c->pop_discard ();
36533 - return_trace (false);
36534 - }
36535 -
36536 - bool serialize_ligature (hb_serialize_context_t *c,
36537 - uint32_t lookup_props,
36538 - hb_sorted_array_t<const HBGlyphID16> first_glyphs,
36539 - hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
36540 - hb_array_t<const HBGlyphID16> ligatures_list,
36541 - hb_array_t<const unsigned int> component_count_list,
36542 - hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
36543 - {
36544 - TRACE_SERIALIZE (this);
36545 - if (unlikely (!Lookup::serialize (c, SubTable::Ligature, lookup_props, 1))) return_trace (fals…
36546 - if (c->push<SubTable> ()->u.ligature.
36547 - serialize (c,
36548 - first_glyphs,
36549 - ligature_per_first_glyph_count_list,
36550 - ligatures_list,
36551 - component_count_list,
36552 - component_list))
36553 - {
36554 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36555 - return_trace (true);
36556 - }
36557 - c->pop_discard ();
36558 - return_trace (false);
36559 - }
36560 -
36561 - template <typename context_t>
36562 - static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int loo…
36563 -
36564 - static inline typename hb_closure_context_t::return_t closure_glyphs_recurse_func (hb_closure_co…
36565 -
36566 - static inline hb_closure_context_t::return_t dispatch_closure_recurse_func (hb_closure_context_t…
36567 - {
36568 - if (!c->should_visit_lookup (lookup_index))
36569 - return hb_empty_t ();
36570 -
36571 - hb_closure_context_t::return_t ret = closure_glyphs_recurse_func (c, lookup_index, covered_seq…
36572 -
36573 - /* While in theory we should flush here, it will cause timeouts because a recursive
36574 - * lookup can keep growing the glyph set. Skip, and outer loop will retry up to
36575 - * HB_CLOSURE_MAX_STAGES time, which should be enough for every realistic font. */
36576 - //c->flush ();
36577 -
36578 - return ret;
36579 - }
36580 -
36581 - HB_INTERNAL static hb_closure_lookups_context_t::return_t dispatch_closure_lookups_recurse_func …
36582 -
36583 - template <typename context_t, typename ...Ts>
36584 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
36585 - { return Lookup::dispatch<SubTable> (c, std::forward<Ts> (ds)...); }
36586 -
36587 - bool subset (hb_subset_context_t *c) const
36588 - { return Lookup::subset<SubTable> (c); }
36589 -
36590 - bool sanitize (hb_sanitize_context_t *c) const
36591 - { return Lookup::sanitize<SubTable> (c); }
36592 -};
36593 -
36594 -/*
36595 - * GSUB -- Glyph Substitution
36596 - * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub
36597 - */
36598 -
36599 -struct GSUB : GSUBGPOS
36600 -{
36601 - static constexpr hb_tag_t tableTag = HB_OT_TAG_GSUB;
36602 -
36603 - const SubstLookup& get_lookup (unsigned int i) const
36604 - { return static_cast<const SubstLookup &> (GSUBGPOS::get_lookup (i)); }
36605 -
36606 - bool subset (hb_subset_context_t *c) const
36607 - {
36608 - hb_subset_layout_context_t l (c, tableTag, c->plan->gsub_lookups, c->plan->gsub_langsys, c->pl…
36609 - return GSUBGPOS::subset<SubstLookup> (&l);
36610 - }
36611 -
36612 - bool sanitize (hb_sanitize_context_t *c) const
36613 - { return GSUBGPOS::sanitize<SubstLookup> (c); }
36614 -
36615 - HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
36616 - hb_face_t *face) const;
36617 -
36618 - void closure_lookups (hb_face_t *face,
36619 - const hb_set_t *glyphs,
36620 - hb_set_t *lookup_indexes /* IN/OUT */) const
36621 - { GSUBGPOS::closure_lookups<SubstLookup> (face, glyphs, lookup_indexes); }
36622 -
36623 - typedef GSUBGPOS::accelerator_t<GSUB> accelerator_t;
36624 -};
36625 -
36626 -
36627 -struct GSUB_accelerator_t : GSUB::accelerator_t {};
36628 -
36633 /* Out-of-class implementation for methods recursing */
36636 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsubgpos.hh b/src/third_party/harfbuz…
36638 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsubgpos.hh
36639 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsubgpos.hh
36640 @@ -125,24 +125,31 @@ struct hb_closure_context_t :
36641 hb_set_t *covered_glyph_set = done_lookups_glyph_set->get (lookup_index);
36642 if (unlikely (covered_glyph_set->in_error ()))
36644 - if (parent_active_glyphs ()->is_subset (*covered_glyph_set))
36648 - hb_set_union (covered_glyph_set, parent_active_glyphs ());
36649 + covered_glyph_set->union_ (parent_active_glyphs ());
36653 - hb_set_t* parent_active_glyphs ()
36658 + return active_glyphs_stack[active_glyphs_stack.length - 2];
36663 - if (active_glyphs_stack.length < 1)
36664 - return glyphs;
36671 - void push_cur_active_glyphs (hb_set_t* cur_active_glyph_set)
36674 - active_glyphs_stack.push (cur_active_glyph_set);
36679 @@ -156,29 +163,24 @@ struct hb_closure_context_t :
36683 - hb_set_t *cur_intersected_glyphs;
36685 - hb_vector_t<hb_set_t *> active_glyphs_stack;
36692 - hb_set_t *cur_intersected_glyphs_,
36698 - cur_intersected_glyphs (cur_intersected_glyphs_),
36704 - {
36705 - push_cur_active_glyphs (glyphs_);
36706 - }
36711 @@ -186,11 +188,11 @@ struct hb_closure_context_t :
36715 - hb_set_del_range (output, face->get_num_glyphs (), HB_SET_VALUE_INVALID); /* Remove invalid gl…
36716 - hb_set_union (glyphs, output);
36717 - hb_set_clear (output);
36718 + output->del_range (face->get_num_glyphs (), HB_SET_VALUE_INVALID); /* Remove invalid glyphs. */
36719 + glyphs->union_ (*output);
36720 + output->clear ();
36722 - active_glyphs_stack.fini ();
36727 @@ -409,9 +411,7 @@ struct hb_ot_apply_context_t :
36730 mask (-1),
36731 -#define arg1(arg) (arg) /* Remove the macro to see why it's needed! */
36732 - syllable arg1(0),
36733 -#undef arg1
36738 @@ -520,7 +520,7 @@ struct hb_ot_apply_context_t :
36742 - bool next ()
36747 @@ -543,11 +543,17 @@ struct hb_ot_apply_context_t :
36761 - bool prev ()
36765 while (idx > num_items - 1)
36766 @@ -570,8 +576,14 @@ struct hb_ot_apply_context_t :
36772 + *unsafe_from = hb_max (1u, idx) - 1u;
36781 @@ -712,53 +724,60 @@ struct hb_ot_apply_context_t :
36785 - void _set_glyph_props (hb_codepoint_t glyph_index,
36791 - unsigned int add_in = _hb_glyph_info_get_glyph_props (&buffer->cur()) &
36792 - HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE;
36793 - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED;
36794 + unsigned int props = _hb_glyph_info_get_glyph_props (&buffer->cur());
36798 - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_LIGATED;
36806 - add_in &= ~HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED;
36810 - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED;
36813 - _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | gdef.get_glyph_props (glyph_index));
36816 + _hb_glyph_info_set_glyph_props (&buffer->cur(), props | gdef.get_glyph_props (glyph_index));
36819 - _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | class_guess);
36822 + _hb_glyph_info_set_glyph_props (&buffer->cur(), props | class_guess);
36825 + _hb_glyph_info_set_glyph_props (&buffer->cur(), props);
36830 - _set_glyph_props (glyph_index);
36832 (void) buffer->replace_glyph (glyph_index);
36836 - _set_glyph_props (glyph_index);
36838 buffer->cur().codepoint = glyph_index;
36843 - _set_glyph_props (glyph_index, class_guess, true);
36845 (void) buffer->replace_glyph (glyph_index);
36850 - _set_glyph_props (glyph_index, class_guess, false, true);
36852 (void) buffer->output_glyph (glyph_index);
36855 @@ -948,7 +967,7 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36856 const HBUINT16 input[], /* Array of input values--start with second glyph */
36859 - unsigned int *end_offset,
36864 @@ -1001,7 +1020,12 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36865 match_positions[0] = buffer->idx;
36868 - if (!skippy_iter.next ()) return_trace (false);
36878 @@ -1055,7 +1079,7 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36879 total_component_count += _hb_glyph_info_get_lig_num_comps (&buffer->info[skippy_iter.idx]);
36882 - *end_offset = skippy_iter.idx - buffer->idx + 1;
36887 @@ -1065,7 +1089,7 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36891 - unsigned int match_length,
36896 @@ -1073,7 +1097,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c,
36898 hb_buffer_t *buffer = c->buffer;
36900 - buffer->merge_clusters (buffer->idx, buffer->idx + match_length);
36901 + buffer->merge_clusters (buffer->idx, match_end);
36903 /* - If a base and one or more marks ligate, consider that as a base, NOT
36905 @@ -1190,11 +1214,16 @@ static inline bool match_backtrack (hb_ot_apply_context_t *c,
36909 - if (!skippy_iter.prev ())
36920 -
36924 @@ -1203,21 +1232,26 @@ static inline bool match_lookahead (hb_ot_apply_context_t *c,
36928 - unsigned int offset,
36934 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_context;
36935 - skippy_iter.reset (c->buffer->idx + offset - 1, count);
36936 + skippy_iter.reset (start_index - 1, count);
36940 - if (!skippy_iter.next ())
36951 -
36955 @@ -1284,22 +1318,23 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
36959 - hb_set_t *pos_glyphs = nullptr;
36965 - pos_glyphs = hb_set_create ();
36971 - pos_glyphs->add (value);
36975 - intersected_glyphs_func (c->cur_intersected_glyphs, data, value, pos_glyphs);
36976 + intersected_glyphs_func (&c->parent_active_glyphs (), data, value, &pos_glyphs);
36979 - hb_set_set (pos_glyphs, c->cur_intersected_glyphs);
36980 + pos_glyphs.set (c->parent_active_glyphs ());
36984 @@ -1313,12 +1348,16 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
36985 input_value = input[seqIndex - 1];
36988 - intersected_glyphs_func (c->glyphs, input_data, input_value, pos_glyphs);
36989 + intersected_glyphs_func (c->glyphs, input_data, input_value, &pos_glyphs);
36993 - hb_set_add (covered_seq_indicies, seqIndex);
36994 - c->push_cur_active_glyphs (pos_glyphs ? pos_glyphs : c->glyphs);
36995 + covered_seq_indicies->add (seqIndex);
36997 + c->push_cur_active_glyphs () = pos_glyphs;
36999 + c->push_cur_active_glyphs ().set (*c->glyphs);
37004 @@ -1327,8 +1366,6 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
37005 c->recurse (lookupRecord[i].lookupListIndex, covered_seq_indicies, seqIndex, endIndex);
37007 c->pop_cur_done_glyphs ();
37008 - if (pos_glyphs)
37009 - hb_set_destroy (pos_glyphs);
37013 @@ -1343,15 +1380,13 @@ static inline void recurse_lookups (context_t *c,
37014 c->recurse (lookupRecord[i].lookupListIndex);
37017 -static inline bool apply_lookup (hb_ot_apply_context_t *c,
37022 const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */
37023 - unsigned int match_length)
37026 - TRACE_APPLY (nullptr);
37027 -
37028 hb_buffer_t *buffer = c->buffer;
37031 @@ -1359,7 +1394,7 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37034 unsigned int bl = buffer->backtrack_len ();
37035 - end = bl + match_length;
37036 + end = bl + match_end - buffer->idx;
37038 int delta = bl - buffer->idx;
37040 @@ -1378,13 +1413,18 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37041 if (unlikely (idx == 0 && lookupRecord[i].lookupListIndex == c->lookup_index))
37044 + unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
37050 if (unlikely (!buffer->move_to (match_positions[idx])))
37053 if (unlikely (buffer->max_ops <= 0))
37056 - unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
37057 if (!c->recurse (lookupRecord[i].lookupListIndex))
37060 @@ -1420,15 +1460,18 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37064 - if (end <= int (match_positions[idx]))
37068 - * lookup ended up removing many items, more than we have had matched.
37069 - * Just never rewind end back and get out of here.
37070 - * https://bugs.chromium.org/p/chromium/issues/detail?id=659496 */
37078 + delta += match_positions[idx] - end;
37080 - /* There can't be any further changes. */
37081 - break;
37085 @@ -1440,7 +1483,7 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37089 - /* NOTE: delta is negative. */
37090 + /* NOTE: delta is non-positive. */
37091 delta = hb_max (delta, (int) next - (int) count);
37092 next -= delta;
37094 @@ -1461,8 +1504,6 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37097 (void) buffer->move_to (end);
37098 -
37099 - return_trace (true);
37103 @@ -1550,17 +1591,25 @@ static inline bool context_apply_lookup (hb_ot_apply_context_t *c,
37107 - unsigned int match_length = 0;
37108 - unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
37109 - return match_input (c,
37110 - inputCount, input,
37111 - lookup_context.funcs.match, lookup_context.match_data,
37112 - &match_length, match_positions)
37113 - && (c->buffer->unsafe_to_break (c->buffer->idx, c->buffer->idx + match_length),
37114 - apply_lookup (c,
37115 - inputCount, match_positions,
37116 - lookupCount, lookupRecord,
37117 - match_length));
37125 + c->buffer->unsafe_to_break (c->buffer->idx, match_end);
37134 + c->buffer->unsafe_to_concat (c->buffer->idx, match_end);
37140 @@ -1828,8 +1877,9 @@ struct ContextFormat1
37144 - c->cur_intersected_glyphs->clear ();
37145 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37146 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37147 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37152 @@ -1838,10 +1888,14 @@ struct ContextFormat1
37156 - | hb_filter (c->parent_active_glyphs (), hb_first)
37158 + return c->previous_parent_active_glyphs ().has (_);
37164 + c->pop_cur_done_glyphs ();
37168 @@ -1989,8 +2043,9 @@ struct ContextFormat2
37169 if (!(this+coverage).intersects (c->glyphs))
37172 - c->cur_intersected_glyphs->clear ();
37173 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37174 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37175 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37180 @@ -2000,10 +2055,9 @@ struct ContextFormat2
37184 - return
37187 - { return class_def.intersects_class (c->cur_intersected_glyphs, _); },
37188 + { return class_def.intersects_class (&c->parent_active_glyphs (), _); },
37192 @@ -2011,6 +2065,8 @@ struct ContextFormat2
37197 + c->pop_cur_done_glyphs ();
37201 @@ -2183,8 +2239,10 @@ struct ContextFormat3
37202 if (!(this+coverageZ[0]).intersects (c->glyphs))
37205 - c->cur_intersected_glyphs->clear ();
37206 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37207 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37208 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37214 @@ -2196,6 +2254,8 @@ struct ContextFormat3
37219 + c->pop_cur_done_glyphs ();
37223 @@ -2452,25 +2512,38 @@ static inline bool chain_context_apply_lookup (hb_ot_apply_context_t *c,
37227 - unsigned int start_index = 0, match_length = 0, end_index = 0;
37228 - unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
37229 - return match_input (c,
37230 - inputCount, input,
37231 - lookup_context.funcs.match, lookup_context.match_data[1],
37232 - &match_length, match_positions)
37233 - && match_backtrack (c,
37234 - backtrackCount, backtrack,
37235 - lookup_context.funcs.match, lookup_context.match_data[0],
37236 - &start_index)
37237 - && match_lookahead (c,
37238 - lookaheadCount, lookahead,
37239 - lookup_context.funcs.match, lookup_context.match_data[2],
37240 - match_length, &end_index)
37241 - && (c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index),
37242 - apply_lookup (c,
37243 - inputCount, match_positions,
37244 - lookupCount, lookupRecord,
37245 - match_length));
37246 + unsigned end_index = c->buffer->idx;
37258 + c->buffer->unsafe_to_concat (c->buffer->idx, end_index);
37262 + unsigned start_index = c->buffer->out_len;
37268 + c->buffer->unsafe_to_concat_from_outbuffer (start_index, end_index);
37272 + c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
37281 @@ -2802,8 +2875,9 @@ struct ChainContextFormat1
37285 - c->cur_intersected_glyphs->clear ();
37286 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37287 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37288 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37293 @@ -2812,10 +2886,14 @@ struct ChainContextFormat1
37297 - | hb_filter (c->parent_active_glyphs (), hb_first)
37299 + return c->previous_parent_active_glyphs ().has (_);
37305 + c->pop_cur_done_glyphs ();
37309 @@ -2964,8 +3042,10 @@ struct ChainContextFormat2
37310 if (!(this+coverage).intersects (c->glyphs))
37313 - c->cur_intersected_glyphs->clear ();
37314 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37315 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37316 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37322 @@ -2979,10 +3059,9 @@ struct ChainContextFormat2
37326 - return
37329 - { return input_class_def.intersects_class (c->cur_intersected_glyphs, _); },
37330 + { return input_class_def.intersects_class (&c->parent_active_glyphs (), _); },
37334 @@ -2990,6 +3069,8 @@ struct ChainContextFormat2
37339 + c->pop_cur_done_glyphs ();
37343 @@ -3216,8 +3297,10 @@ struct ChainContextFormat3
37344 if (!(this+input[0]).intersects (c->glyphs))
37347 - c->cur_intersected_glyphs->clear ();
37348 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37349 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37350 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37356 @@ -3232,6 +3315,8 @@ struct ChainContextFormat3
37361 + c->pop_cur_done_glyphs ();
37365 @@ -3706,7 +3791,7 @@ struct GSUBGPOS
37366 for (unsigned i : feature_indices->iter ())
37369 - if (t == unique_features.INVALID_KEY) continue;
37374 @@ -3839,7 +3924,7 @@ struct GSUBGPOS
37378 - void init (hb_face_t *face)
37381 this->table = hb_sanitize_context_t ().reference_table<T> (face);
37382 if (unlikely (this->table->is_blocklisted (this->table.get_blob (), face)))
37383 @@ -3861,8 +3946,7 @@ struct GSUBGPOS
37384 for (unsigned int i = 0; i < this->lookup_count; i++)
37385 this->accels[i].init (table->get_lookup (i));
37387 -
37388 - void fini ()
37391 for (unsigned int i = 0; i < this->lookup_count; i++)
37392 this->accels[i].fini ();
37393 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.cc b/src/third_party/harfbuzz-ng/src/…
37395 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.cc
37396 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.cc
37397 @@ -54,6 +54,8 @@
37398 #include "hb-aat-layout-morx-table.hh"
37399 #include "hb-aat-layout-opbd-table.hh" // Just so we compile it; unused otherwise.
37404 * SECTION:hb-ot-layout
37405 * @title: hb-ot-layout
37406 @@ -361,6 +363,13 @@ hb_ot_layout_get_attach_points (hb_face_t *face,
37410 + * Note that a ligature that is formed from n characters will have n-1
37420 @@ -382,7 +391,7 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
37424 -OT::GSUB::is_blocklisted (hb_blob_t *blob HB_UNUSED,
37429 @@ -999,7 +1008,7 @@ struct hb_collect_features_context_t
37433 - const hb_tag_t *features)
37438 @@ -1026,7 +1035,7 @@ struct hb_collect_features_context_t
37442 - feature_indices_filter.add(i);
37447 @@ -1491,10 +1500,9 @@ hb_ot_layout_lookup_substitute_closure (hb_face_t *face,
37451 - hb_set_t cur_intersected_glyphs;
37454 - OT::hb_closure_context_t c (face, glyphs, &cur_intersected_glyphs, &done_lookups_glyph_count, &d…
37457 const OT::SubstLookup& l = face->table.GSUB->table->get_lookup (lookup_index);
37459 @@ -1520,11 +1528,10 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
37463 - hb_set_t cur_intersected_glyphs;
37466 - OT::hb_closure_context_t c (face, glyphs, &cur_intersected_glyphs, &done_lookups_glyph_count, &d…
37467 - const OT::GSUB& gsub = *face->table.GSUB->table;
37469 + const GSUB& gsub = *face->table.GSUB->table;
37473 @@ -1803,7 +1810,7 @@ struct GSUBProxy
37474 table (*face->table.GSUB->table),
37475 accels (face->table.GSUB->accels) {}
37477 - const OT::GSUB &table;
37482 @@ -1961,6 +1968,77 @@ hb_ot_layout_substitute_lookup (OT::hb_ot_apply_context_t *c,
37502 + /* Unicode-1.1 additions */
37507 + /* Unicode-2.0 additions */
37509 + /* Unicode-4.0 additions */
37511 + /* Unicode-4.1 additions */
37513 + /* Unicode-5.0 additions */
37515 + /* Unicode-5.2 additions */
37517 + /* Unicode-6.1 additions */
37520 + /* Unicode-7.0 additions */
37524 + /* Unicode-9.0 additions */
37527 + /* Unicode-10.0 additions */
37530 + /* Unicode-11.0 additions */
37533 + /* Unicode-12.0 additions */
37537 + /* Unicode-1.1 additions */
37542 + /* Unicode-3.0 additions */
37544 + /* Unicode-9.0 additions */
37546 + /* Unicode-10.0 additions */
37548 + /* Unicode-13.0 additions */
37560 @@ -1968,7 +2046,7 @@ hb_ot_layout_substitute_lookup (OT::hb_ot_apply_context_t *c,
37564 - * @coord: (out): baseline value if found.
37569 @@ -1984,13 +2062,231 @@ hb_ot_layout_get_baseline (hb_font_t *font,
37573 - bool result = font->face->table.BASE->get_baseline (font, baseline_tag, direction, script_tag, l…
37574 + return font->face->table.BASE->get_baseline (font, baseline_tag, direction, script_tag, language…
37608 + * See https://www.w3.org/TR/css-inline-3/#baseline-synthesis-fonts
37622 + hb_font_get_nominal_glyph (font, '-', &glyph)) &&
37629 + hb_position_t x_height = font->y_scale / 2;
37638 - if (result && coord)
37639 - *coord = HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (*coord) : font->em_scale_x…
37659 + *coord = embox_top + (embox_bottom - embox_top) / 10;
37661 + *coord = embox_bottom + (embox_top - embox_bottom) / 10;
37672 + *coord += HB_DIRECTION_IS_HORIZONTAL (direction) ? font->y_scale : font->x_scale;
37688 + *coord -= HB_DIRECTION_IS_HORIZONTAL (direction) ? font->y_scale : font->x_scale;
37704 - return result;
37708 + /* Unicode-1.1 additions */
37713 + /* Unicode-2.0 additions */
37715 + /* Unicode-4.0 additions */
37717 + /* Unicode-4.1 additions */
37719 + /* Unicode-5.0 additions */
37721 + /* Unicode-5.2 additions */
37723 + /* Unicode-6.1 additions */
37726 + /* Unicode-7.0 additions */
37730 + /* Unicode-9.0 additions */
37733 + /* Unicode-10.0 additions */
37736 + /* Unicode-11.0 additions */
37739 + /* Unicode-12.0 additions */
37749 + *coord = font->y_scale * 6 / 10; // FIXME makes assumptions about origin
37752 + *coord = font->x_scale * 6 / 10; // FIXME makes assumptions about origin
37805 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.h b/src/third_party/harfbuzz-ng/src/s…
37807 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.h
37808 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.h
37809 @@ -332,31 +332,6 @@ hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
37813 -#ifdef HB_NOT_IMPLEMENTED
37814 -typedef struct
37815 -{
37816 - const hb_codepoint_t *before,
37817 - unsigned int before_length,
37818 - const hb_codepoint_t *input,
37819 - unsigned int input_length,
37820 - const hb_codepoint_t *after,
37821 - unsigned int after_length,
37822 -} hb_ot_layout_glyph_sequence_t;
37823 -
37824 -typedef hb_bool_t
37825 -(*hb_ot_layout_glyph_sequence_func_t) (hb_font_t *font,
37826 - hb_tag_t table_tag,
37827 - unsigned int lookup_index,
37828 - const hb_ot_layout_glyph_sequence_t *sequence,
37829 - void *user_data);
37830 -
37831 -HB_EXTERN void
37832 -Xhb_ot_layout_lookup_enumerate_sequences (hb_face_t *face,
37833 - hb_tag_t table_tag,
37834 - unsigned int lookup_index,
37835 - hb_ot_layout_glyph_sequence_func_t callback,
37836 - void *user_data);
37837 -#endif
37841 @@ -411,19 +386,6 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
37845 -#ifdef HB_NOT_IMPLEMENTED
37846 -/* Note: You better have GDEF when using this API, or marks won't do much. */
37847 -HB_EXTERN hb_bool_t
37848 -Xhb_ot_layout_lookup_substitute (hb_font_t *font,
37849 - unsigned int lookup_index,
37850 - const hb_ot_layout_glyph_sequence_t *sequence,
37851 - unsigned int out_size,
37852 - hb_codepoint_t *glyphs_out, /* OUT */
37853 - unsigned int *clusters_out, /* OUT */
37854 - unsigned int *out_length /* OUT */);
37855 -#endif
37856 -
37857 -
37861 @@ -431,15 +393,6 @@ Xhb_ot_layout_lookup_substitute (hb_font_t *font,
37865 -#ifdef HB_NOT_IMPLEMENTED
37866 -/* Note: You better have GDEF when using this API, or marks won't do much. */
37867 -HB_EXTERN hb_bool_t
37868 -Xhb_ot_layout_lookup_position (hb_font_t *font,
37869 - unsigned int lookup_index,
37870 - const hb_ot_layout_glyph_sequence_t *sequence,
37871 - hb_glyph_position_t *positions /* IN / OUT */);
37872 -#endif
37873 -
37875 * https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#size */
37877 @@ -487,9 +440,11 @@ hb_ot_layout_feature_get_characters (hb_face_t *face,
37882 * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: Ideographic em-box bottom or left edge,
37884 …* @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: Ideographic em-box top or right edge baselin…
37885 + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL: The center of the ideographic em-box. Since: 4.0…
37889 @@ -503,14 +458,19 @@ typedef enum {
37909 @@ -519,6 +479,14 @@ hb_ot_layout_get_baseline (hb_font_t *font,
37924 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.hh b/src/third_party/harfbuzz-ng/src/…
37926 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.hh
37927 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.hh
37928 @@ -108,13 +108,17 @@ hb_ot_layout_delete_glyphs_inplace (hb_buffer_t *buffer,
37932 - struct SubstLookup;
37943 - const OT::SubstLookup &lookup,
37948 @@ -485,6 +489,8 @@ static inline uint8_t
37951 uint8_t lig_id = buffer->next_serial () & 0x07;
37957 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-math-table.hh b/src/third_party/harfbuzz-ng/…
37959 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-math-table.hh
37960 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-math-table.hh
37961 @@ -369,6 +369,37 @@ struct MathKern
37978 + *entries_count = end - start;
37999 @@ -423,6 +454,24 @@ struct MathKernInfoRecord
38022 /* Offset to MathKern table for each corner -
38024 @@ -473,6 +522,22 @@ struct MathKernInfo
38047 @@ -545,6 +610,19 @@ struct MathGlyphInfo
38065 /* Offset to MathItalicsCorrectionInfo table -
38067 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.cc b/src/third_party/harfbuzz-ng/src/sr…
38069 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.cc
38070 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-math.cc
38071 @@ -184,6 +184,51 @@ hb_ot_math_get_glyph_kerning (hb_font_t *font,
38083 + * @kern_entries: (out caller-allocates) (array length=entries_count): array of kern entries retur…
38085 + * Fetches the raw MathKern (cut-in) data for the specified font, glyph index,
38112 + return font->face->table.MATH->get_glyph_info().get_kernings (glyph,
38123 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.h b/src/third_party/harfbuzz-ng/src/src…
38125 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.h
38126 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-math.h
38127 @@ -50,14 +50,18 @@ HB_BEGIN_DECLS
38131 - * HB_OT_MATH_SCRIPT:
38134 - * OpenType script tag for math shaping, for use with
38135 - * Use with hb_buffer_set_script().
38138 - * Since: 1.3.3
38146 -#define HB_OT_MATH_SCRIPT HB_TAG('m','a','t','h')
38151 @@ -204,6 +208,20 @@ typedef enum {
38160 + * Data type to hold math kerning (cut-in) information for a glyph.
38172 @@ -280,6 +298,14 @@ hb_ot_math_get_glyph_kerning (hb_font_t *font,
38187 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-meta-table.hh b/src/third_party/harfbuzz-ng/…
38189 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-meta-table.hh
38190 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-meta-table.hh
38191 @@ -71,9 +71,9 @@ struct meta
38195 - void init (hb_face_t *face)
38198 - void fini () { table.destroy (); }
38202 { return table->dataMaps.lsearch (tag).reference_entry (table.get_blob ()); }
38203 @@ -119,7 +119,9 @@ struct meta
38207 -struct meta_accelerator_t : meta::accelerator_t {};
38214 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.cc b/src/third_party/harfbuzz-ng/src…
38216 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.cc
38217 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.cc
38218 @@ -238,6 +238,145 @@ hb_ot_metrics_get_position (hb_font_t *font,
38304 + *position = font->y_scale / 2;
38312 + *position = font->y_scale * 2 / 3;
38317 + *position = font->y_scale / 18;
38331 + *position = - font->y_scale / 18;
38336 + *position = font->x_scale * 10 / 12;
38341 + *position = font->y_scale * 10 / 12;
38351 + *position = font->y_scale / 5;
38364 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.h b/src/third_party/harfbuzz-ng/src/…
38366 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.h
38367 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.h
38368 @@ -110,6 +110,11 @@ hb_ot_metrics_get_position (hb_font_t *font,
38380 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-name-table.hh b/src/third_party/harfbuzz-ng/…
38382 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-name-table.hh
38383 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-name-table.hh
38384 @@ -256,7 +256,7 @@ struct name
38388 - name_prime->serialize (c->serializer, it, hb_addressof (this + stringOffset));
38389 + name_prime->serialize (c->serializer, it, std::addressof (this + stringOffset));
38390 return_trace (name_prime->count);
38393 @@ -279,7 +279,7 @@ struct name
38397 - void init (hb_face_t *face)
38400 this->table = hb_sanitize_context_t ().reference_table<name> (face);
38401 assert (this->table.get_length () >= this->table->stringOffset);
38402 @@ -288,7 +288,6 @@ struct name
38403 const hb_array_t<const NameRecord> all_names (this->table->nameRecordZ.arrayZ,
38404 this->table->count);
38406 - this->names.init ();
38407 this->names.alloc (all_names.length);
38410 @@ -318,10 +317,8 @@ struct name
38412 this->names.resize (j);
38414 -
38415 - void fini ()
38418 - this->names.fini ();
38419 this->table.destroy ();
38422 @@ -373,7 +370,9 @@ struct name
38426 -struct name_accelerator_t : name::accelerator_t {};
38433 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-name.cc b/src/third_party/harfbuzz-ng/src/sr…
38435 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-name.cc
38436 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-name.cc
38437 @@ -52,7 +52,7 @@
38441 - * Returns: (out) (transfer none) (array length=num_entries): Array of available name entries.
38446 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table-v2subset.hh b/src/third_party/har…
38448 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table-v2subset.hh
38449 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table-v2subset.hh
38450 @@ -76,8 +76,7 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const
38454 - post::accelerator_t _post;
38455 - _post.init (c->plan->source);
38456 + post::accelerator_t _post (c->plan->source);
38458 …hb_hashmap_t<hb_bytes_t, unsigned, std::nullptr_t, unsigned, nullptr, (unsigned)-1> glyph_name_to_…
38460 @@ -128,9 +127,7 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const
38464 - bool ret = serialize (c->serializer, index_iter, &_post);
38465 - _post.fini ();
38466 - return_trace (ret);
38467 + return_trace (serialize (c->serializer, index_iter, &_post));
38471 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table.hh b/src/third_party/harfbuzz-ng/…
38473 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table.hh
38474 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table.hh
38475 @@ -111,10 +111,9 @@ struct post
38479 - void init (hb_face_t *face)
38480 - {
38481 - index_to_offset.init ();
38488 @@ -132,9 +131,8 @@ struct post
38490 index_to_offset.push (data - pool);
38492 - void fini ()
38495 - index_to_offset.fini ();
38499 @@ -254,9 +252,9 @@ struct post
38503 - const Array16Of<HBUINT16> *glyphNameIndex;
38506 - const uint8_t *pool;
38511 @@ -307,7 +305,10 @@ struct post
38515 -struct post_accelerator_t : post::accelerator_t {};
38523 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-arabic.cc b/src/third_party/ha…
38525 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-arabic.cc
38526 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-arabic.cc
38527 @@ -321,6 +321,20 @@ arabic_joining (hb_buffer_t *buffer)
38528 info[prev].arabic_shaping_action() = entry->prev_action;
38529 buffer->unsafe_to_break (prev, i + 1);
38536 + buffer->unsafe_to_concat_from_outbuffer (0, i + 1);
38542 + buffer->unsafe_to_concat (prev, i + 1);
38546 info[i].arabic_shaping_action() = entry->curr_action;
38548 @@ -337,7 +351,14 @@ arabic_joining (hb_buffer_t *buffer)
38551 if (entry->prev_action != NONE && prev != UINT_MAX)
38553 info[prev].arabic_shaping_action() = entry->prev_action;
38554 + buffer->unsafe_to_break (prev, buffer->len);
38558 + buffer->unsafe_to_concat (prev, buffer->len);
38563 @@ -614,6 +635,11 @@ modifier_combining_marks[] =
38575 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-hangul.cc b/src/third_party/ha…
38577 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-hangul.cc
38578 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-hangul.cc
38579 @@ -140,7 +140,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED,
38581 * - LV can be precomposed, or decomposed. Lets call those
38583 - * - LVT can be fully precomposed, partically precomposed, or
38584 + * - LVT can be fully precomposed, partially precomposed, or
38588 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-indic.hh b/src/third_party/har…
38590 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-indic.hh
38591 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-indic.hh
38592 @@ -368,6 +368,7 @@ set_indic_properties (hb_glyph_info_t &info)
38600 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.hh b/src/third_par…
38602 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.hh
38603 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.hh
38604 @@ -69,7 +69,7 @@ enum use_syllable_type_t {
38608 -#define use_syllable_machine_ex_HVM 44u
38613 @@ -92,234 +92,449 @@ enum use_syllable_type_t {
38621 -#line 99 "hb-ot-shape-complex-use-machine.hh"
38622 +#line 100 "hb-ot-shape-complex-use-machine.hh"
38624 - 0u, 51u, 41u, 42u, 42u, 42u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
38630 - 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
38631 - 11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u,
38632 - 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u,
38633 - 24u, 48u, 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u,
38634 - 22u, 48u, 11u, 48u, 1u, 48u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u, 41u, 42u,
38635 - 42u, 42u, 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
38649 - 52, 2, 1, 38, 38, 1, 27, 26,
38655 - 1, 25, 26, 26, 26, 27, 27, 27,
38656 - 38, 48, 1, 1, 38, 38, 1, 27,
38657 - 26, 24, 23, 22, 2, 1, 25, 25,
38658 - 25, 1, 25, 26, 26, 26, 27, 27,
38659 - 27, 38, 48, 1, 1, 48, 38, 2,
38660 - 1, 5, 3, 4, 3
38673 - 0, 53, 56, 58, 97, 136, 138, 166,
38674 - 193, 218, 242, 265, 268, 270, 296, 322,
38675 - 348, 350, 376, 403, 430, 457, 485, 513,
38676 - 541, 580, 629, 631, 633, 672, 711, 713,
38677 - 741, 768, 793, 817, 840, 843, 845, 871,
38678 - 897, 923, 925, 951, 978, 1005, 1032, 1060,
38679 - 1088, 1116, 1155, 1204, 1206, 1208, 1257, 1296,
38680 - 1299, 1301, 1307, 1311, 1316
38701 - 11, 12, 13, 14, 15, 9, 16, 17,
38702 - 18, 19, 20, 21, 2, 22, 23, 24,
38703 - 2, 25, 26, 27, 28, 29, 30, 31,
38704 - 6, 32, 2, 33, 2, 0, 35, 34,
38705 - 35, 34, 37, 38, 36, 36, 36, 36,
38706 - 36, 36, 36, 36, 36, 39, 40, 41,
38707 - 42, 43, 44, 45, 39, 46, 1, 47,
38708 - 48, 49, 50, 36, 51, 52, 53, 36,
38709 - 36, 36, 36, 54, 55, 56, 57, 38,
38710 - 36, 37, 38, 36, 36, 36, 36, 36,
38711 - 36, 36, 36, 36, 39, 40, 41, 42,
38712 - 43, 44, 45, 39, 46, 47, 47, 48,
38713 - 49, 50, 36, 51, 52, 53, 36, 36,
38714 - 36, 36, 54, 55, 56, 57, 38, 36,
38715 - 37, 58, 39, 40, 41, 42, 43, 36,
38716 - 36, 36, 36, 36, 36, 48, 49, 50,
38717 - 36, 51, 52, 53, 36, 36, 36, 36,
38718 - 40, 55, 56, 57, 59, 36, 40, 41,
38719 - 42, 43, 36, 36, 36, 36, 36, 36,
38720 - 36, 36, 36, 36, 51, 52, 53, 36,
38721 - 36, 36, 36, 36, 55, 56, 57, 59,
38722 - 36, 41, 42, 43, 36, 36, 36, 36,
38723 - 36, 36, 36, 36, 36, 36, 36, 36,
38724 - 36, 36, 36, 36, 36, 36, 55, 56,
38725 - 57, 36, 42, 43, 36, 36, 36, 36,
38726 - 36, 36, 36, 36, 36, 36, 36, 36,
38727 - 36, 36, 36, 36, 36, 36, 55, 56,
38728 - 57, 36, 43, 36, 36, 36, 36, 36,
38729 - 36, 36, 36, 36, 36, 36, 36, 36,
38730 - 36, 36, 36, 36, 36, 55, 56, 57,
38731 - 36, 55, 56, 36, 56, 36, 41, 42,
38732 - 43, 36, 36, 36, 36, 36, 36, 36,
38733 - 36, 36, 36, 51, 52, 53, 36, 36,
38734 - 36, 36, 36, 55, 56, 57, 59, 36,
38735 - 41, 42, 43, 36, 36, 36, 36, 36,
38736 - 36, 36, 36, 36, 36, 36, 52, 53,
38737 - 36, 36, 36, 36, 36, 55, 56, 57,
38738 - 59, 36, 41, 42, 43, 36, 36, 36,
38739 - 36, 36, 36, 36, 36, 36, 36, 36,
38740 - 36, 53, 36, 36, 36, 36, 36, 55,
38741 - 56, 57, 59, 36, 61, 60, 41, 42,
38742 - 43, 36, 36, 36, 36, 36, 36, 36,
38743 - 36, 36, 36, 36, 36, 36, 36, 36,
38744 - 36, 36, 36, 55, 56, 57, 59, 36,
38745 - 40, 41, 42, 43, 36, 36, 36, 36,
38746 - 36, 36, 48, 49, 50, 36, 51, 52,
38747 - 53, 36, 36, 36, 36, 40, 55, 56,
38748 - 57, 59, 36, 40, 41, 42, 43, 36,
38749 - 36, 36, 36, 36, 36, 36, 49, 50,
38750 - 36, 51, 52, 53, 36, 36, 36, 36,
38751 - 40, 55, 56, 57, 59, 36, 40, 41,
38752 - 42, 43, 36, 36, 36, 36, 36, 36,
38753 - 36, 36, 50, 36, 51, 52, 53, 36,
38754 - 36, 36, 36, 40, 55, 56, 57, 59,
38755 - 36, 39, 40, 41, 42, 43, 36, 45,
38756 - 39, 36, 36, 36, 48, 49, 50, 36,
38757 - 51, 52, 53, 36, 36, 36, 36, 40,
38758 - 55, 56, 57, 59, 36, 39, 40, 41,
38759 - 42, 43, 36, 36, 39, 36, 36, 36,
38760 - 48, 49, 50, 36, 51, 52, 53, 36,
38761 - 36, 36, 36, 40, 55, 56, 57, 59,
38762 - 36, 39, 40, 41, 42, 43, 44, 45,
38763 - 39, 36, 36, 36, 48, 49, 50, 36,
38764 - 51, 52, 53, 36, 36, 36, 36, 40,
38765 - 55, 56, 57, 59, 36, 37, 38, 36,
38766 - 36, 36, 36, 36, 36, 36, 36, 36,
38767 - 39, 40, 41, 42, 43, 44, 45, 39,
38768 - 46, 36, 47, 48, 49, 50, 36, 51,
38769 - 52, 53, 36, 36, 36, 36, 54, 55,
38770 - 56, 57, 38, 36, 37, 58, 58, 58,
38771 - 58, 58, 58, 58, 58, 58, 58, 58,
38772 - 58, 58, 58, 58, 58, 58, 58, 58,
38773 - 58, 58, 40, 41, 42, 43, 58, 58,
38774 - 58, 58, 58, 58, 58, 58, 58, 58,
38775 - 51, 52, 53, 58, 58, 58, 58, 58,
38776 - 55, 56, 57, 59, 58, 63, 62, 3,
38777 - 64, 37, 38, 36, 36, 36, 36, 36,
38778 - 36, 36, 36, 36, 39, 40, 41, 42,
38779 - 43, 44, 45, 39, 46, 1, 47, 48,
38780 - 49, 50, 36, 51, 52, 53, 36, 0,
38781 - 35, 36, 54, 55, 56, 57, 38, 36,
38782 - 5, 6, 65, 65, 65, 65, 65, 65,
38783 - 65, 65, 65, 9, 10, 11, 12, 13,
38784 - 14, 15, 9, 16, 18, 18, 19, 20,
38785 - 21, 65, 22, 23, 24, 65, 65, 65,
38786 - 65, 28, 29, 30, 31, 6, 65, 5,
38787 - 65, 9, 10, 11, 12, 13, 65, 65,
38788 - 65, 65, 65, 65, 19, 20, 21, 65,
38789 - 22, 23, 24, 65, 65, 65, 65, 10,
38790 - 29, 30, 31, 66, 65, 10, 11, 12,
38791 - 13, 65, 65, 65, 65, 65, 65, 65,
38792 - 65, 65, 65, 22, 23, 24, 65, 65,
38793 - 65, 65, 65, 29, 30, 31, 66, 65,
38794 - 11, 12, 13, 65, 65, 65, 65, 65,
38795 - 65, 65, 65, 65, 65, 65, 65, 65,
38796 - 65, 65, 65, 65, 65, 29, 30, 31,
38797 - 65, 12, 13, 65, 65, 65, 65, 65,
38798 - 65, 65, 65, 65, 65, 65, 65, 65,
38799 - 65, 65, 65, 65, 65, 29, 30, 31,
38800 - 65, 13, 65, 65, 65, 65, 65, 65,
38801 - 65, 65, 65, 65, 65, 65, 65, 65,
38802 - 65, 65, 65, 65, 29, 30, 31, 65,
38803 - 29, 30, 65, 30, 65, 11, 12, 13,
38804 - 65, 65, 65, 65, 65, 65, 65, 65,
38805 - 65, 65, 22, 23, 24, 65, 65, 65,
38806 - 65, 65, 29, 30, 31, 66, 65, 11,
38807 - 12, 13, 65, 65, 65, 65, 65, 65,
38808 - 65, 65, 65, 65, 65, 23, 24, 65,
38809 - 65, 65, 65, 65, 29, 30, 31, 66,
38810 - 65, 11, 12, 13, 65, 65, 65, 65,
38811 - 65, 65, 65, 65, 65, 65, 65, 65,
38812 - 24, 65, 65, 65, 65, 65, 29, 30,
38813 - 31, 66, 65, 67, 65, 11, 12, 13,
38814 - 65, 65, 65, 65, 65, 65, 65, 65,
38815 - 65, 65, 65, 65, 65, 65, 65, 65,
38816 - 65, 65, 29, 30, 31, 66, 65, 10,
38817 - 11, 12, 13, 65, 65, 65, 65, 65,
38818 - 65, 19, 20, 21, 65, 22, 23, 24,
38819 - 65, 65, 65, 65, 10, 29, 30, 31,
38820 - 66, 65, 10, 11, 12, 13, 65, 65,
38821 - 65, 65, 65, 65, 65, 20, 21, 65,
38822 - 22, 23, 24, 65, 65, 65, 65, 10,
38823 - 29, 30, 31, 66, 65, 10, 11, 12,
38824 - 13, 65, 65, 65, 65, 65, 65, 65,
38825 - 65, 21, 65, 22, 23, 24, 65, 65,
38826 - 65, 65, 10, 29, 30, 31, 66, 65,
38827 - 9, 10, 11, 12, 13, 65, 15, 9,
38828 - 65, 65, 65, 19, 20, 21, 65, 22,
38829 - 23, 24, 65, 65, 65, 65, 10, 29,
38830 - 30, 31, 66, 65, 9, 10, 11, 12,
38831 - 13, 65, 65, 9, 65, 65, 65, 19,
38832 - 20, 21, 65, 22, 23, 24, 65, 65,
38833 - 65, 65, 10, 29, 30, 31, 66, 65,
38834 - 9, 10, 11, 12, 13, 14, 15, 9,
38835 - 65, 65, 65, 19, 20, 21, 65, 22,
38836 - 23, 24, 65, 65, 65, 65, 10, 29,
38837 - 30, 31, 66, 65, 5, 6, 65, 65,
38838 - 65, 65, 65, 65, 65, 65, 65, 9,
38839 - 10, 11, 12, 13, 14, 15, 9, 16,
38840 - 65, 18, 19, 20, 21, 65, 22, 23,
38841 - 24, 65, 65, 65, 65, 28, 29, 30,
38842 - 31, 6, 65, 5, 65, 65, 65, 65,
38843 - 65, 65, 65, 65, 65, 65, 65, 65,
38844 - 65, 65, 65, 65, 65, 65, 65, 65,
38845 - 65, 10, 11, 12, 13, 65, 65, 65,
38846 - 65, 65, 65, 65, 65, 65, 65, 22,
38847 - 23, 24, 65, 65, 65, 65, 65, 29,
38848 - 30, 31, 66, 65, 68, 65, 7, 65,
38849 - 1, 65, 65, 65, 1, 65, 65, 65,
38850 - 65, 65, 5, 6, 7, 65, 65, 65,
38851 - 65, 65, 65, 65, 65, 9, 10, 11,
38852 - 12, 13, 14, 15, 9, 16, 17, 18,
38853 - 19, 20, 21, 65, 22, 23, 24, 65,
38854 - 25, 26, 65, 28, 29, 30, 31, 6,
38855 - 65, 5, 6, 65, 65, 65, 65, 65,
38856 - 65, 65, 65, 65, 9, 10, 11, 12,
38857 - 13, 14, 15, 9, 16, 17, 18, 19,
38858 - 20, 21, 65, 22, 23, 24, 65, 65,
38859 - 65, 65, 28, 29, 30, 31, 6, 65,
38860 - 25, 26, 65, 26, 65, 1, 69, 69,
38861 - 69, 1, 69, 71, 70, 32, 70, 32,
38862 - 71, 70, 71, 70, 32, 70, 33, 70,
38863 - 0
39211 - 1, 3, 0, 26, 28, 29, 30, 51,
39212 - 53, 31, 32, 33, 34, 35, 46, 47,
39213 - 48, 54, 49, 43, 44, 45, 38, 39,
39214 - 40, 55, 56, 57, 50, 36, 37, 0,
39215 - 58, 60, 0, 2, 0, 4, 5, 6,
39216 - 7, 8, 9, 10, 21, 22, 23, 24,
39217 - 18, 19, 20, 13, 14, 15, 25, 11,
39218 - 12, 0, 0, 16, 0, 17, 0, 27,
39219 - 0, 0, 41, 42, 52, 0, 0, 59
39242 - 0, 0, 0, 0, 0, 0, 0, 4,
39243 - 0, 0, 5, 0, 6, 0, 0, 0,
39250 - 0, 7, 8, 0, 9, 0, 10, 0,
39251 - 11, 12, 0, 0, 0, 13, 14, 0
39262 @@ -330,7 +545,13 @@ static const char _use_syllable_machine_to_state_actions[] = {
39266 - 0, 0, 0, 0, 0
39277 @@ -341,18 +562,30 @@ static const char _use_syllable_machine_from_state_actions[] = {
39281 - 0, 0, 0, 0, 0
39292 - 0, 35, 35, 37, 37, 59, 37, 37,
39293 - 37, 37, 37, 37, 37, 37, 37, 37,
39294 - 61, 37, 37, 37, 37, 37, 37, 37,
39295 - 37, 59, 63, 65, 37, 66, 66, 66,
39296 - 66, 66, 66, 66, 66, 66, 66, 66,
39297 - 66, 66, 66, 66, 66, 66, 66, 66,
39298 - 66, 66, 66, 66, 66, 66, 66, 66,
39299 - 66, 70, 71, 71, 71
39317 @@ -366,7 +599,7 @@ static const int use_syllable_machine_en_main = 0;
39321 -#line 179 "hb-ot-shape-complex-use-machine.rl"
39322 +#line 181 "hb-ot-shape-complex-use-machine.rl"
39326 @@ -385,7 +618,9 @@ struct machine_index_t :
39330 - machine_index_t (const machine_index_t& o) : it (o.it) {}
39337 @@ -397,14 +632,28 @@ struct machine_index_t :
39339 void __prev__ () { --it; }
39340 void __rewind__ (unsigned n) { it -= n; }
39343 - { unsigned index = (*it).first; if (index < n) it += n - index; else if (index > n) it -= index
39344 - void operator = (const machine_index_t& o) { *this = (*o.it).first; }
39345 - bool operator == (const machine_index_t& o) const { return (*it).first == (*o.it).first; }
39357 + if (index < n) it += n - index; else if (index > n) it -= index - n;
39369 @@ -420,7 +669,7 @@ HB_FUNCOBJ (machine_index);
39373 -{ return !(i.use_category() == USE(CGJ) && _hb_glyph_info_is_default_ignorable (&i)); }
39378 @@ -449,7 +698,7 @@ find_syllables_use (hb_buffer_t *buffer)
39382 -#line 453 "hb-ot-shape-complex-use-machine.hh"
39383 +#line 702 "hb-ot-shape-complex-use-machine.hh"
39387 @@ -457,12 +706,12 @@ find_syllables_use (hb_buffer_t *buffer)
39391 -#line 263 "hb-ot-shape-complex-use-machine.rl"
39392 +#line 281 "hb-ot-shape-complex-use-machine.rl"
39397 -#line 466 "hb-ot-shape-complex-use-machine.hh"
39398 +#line 715 "hb-ot-shape-complex-use-machine.hh"
39402 @@ -476,7 +725,7 @@ _resume:
39406 -#line 480 "hb-ot-shape-complex-use-machine.hh"
39407 +#line 729 "hb-ot-shape-complex-use-machine.hh"
39411 @@ -494,55 +743,79 @@ _eof_trans:
39415 - case 7:
39416 -#line 169 "hb-ot-shape-complex-use-machine.rl"
39418 +#line 171 "hb-ot-shape-complex-use-machine.rl"
39421 - case 4:
39423 #line 174 "hb-ot-shape-complex-use-machine.rl"
39427 +#line 176 "hb-ot-shape-complex-use-machine.rl"
39431 -#line 175 "hb-ot-shape-complex-use-machine.rl"
39432 +#line 177 "hb-ot-shape-complex-use-machine.rl"
39435 - case 8:
39436 -#line 167 "hb-ot-shape-complex-use-machine.rl"
39437 - {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
39438 - break;
39439 - case 9:
39440 -#line 168 "hb-ot-shape-complex-use-machine.rl"
39442 +#line 170 "hb-ot-shape-complex-use-machine.rl"
39443 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
39445 - case 6:
39446 -#line 169 "hb-ot-shape-complex-use-machine.rl"
39448 +#line 171 "hb-ot-shape-complex-use-machine.rl"
39449 {te = p;p--;{ found_syllable (use_standard_cluster); }}
39451 - case 11:
39452 -#line 170 "hb-ot-shape-complex-use-machine.rl"
39454 +#line 172 "hb-ot-shape-complex-use-machine.rl"
39455 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
39457 - case 10:
39458 -#line 171 "hb-ot-shape-complex-use-machine.rl"
39460 +#line 173 "hb-ot-shape-complex-use-machine.rl"
39461 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
39464 -#line 172 "hb-ot-shape-complex-use-machine.rl"
39465 +#line 174 "hb-ot-shape-complex-use-machine.rl"
39466 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
39468 - case 14:
39469 -#line 173 "hb-ot-shape-complex-use-machine.rl"
39471 +#line 175 "hb-ot-shape-complex-use-machine.rl"
39472 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
39474 - case 12:
39475 -#line 174 "hb-ot-shape-complex-use-machine.rl"
39477 +#line 176 "hb-ot-shape-complex-use-machine.rl"
39478 {te = p;p--;{ found_syllable (use_broken_cluster); }}
39480 - case 13:
39481 -#line 175 "hb-ot-shape-complex-use-machine.rl"
39483 +#line 177 "hb-ot-shape-complex-use-machine.rl"
39484 {te = p;p--;{ found_syllable (use_non_cluster); }}
39486 -#line 546 "hb-ot-shape-complex-use-machine.hh"
39491 + {{p = ((te))-1;} found_syllable (use_virama_terminated_cluster); }
39494 + {{p = ((te))-1;} found_syllable (use_sakot_terminated_cluster); }
39502 +#line 169 "hb-ot-shape-complex-use-machine.rl"
39508 +#line 170 "hb-ot-shape-complex-use-machine.rl"
39511 +#line 819 "hb-ot-shape-complex-use-machine.hh"
39515 @@ -551,7 +824,7 @@ _again:
39519 -#line 555 "hb-ot-shape-complex-use-machine.hh"
39520 +#line 828 "hb-ot-shape-complex-use-machine.hh"
39524 @@ -567,7 +840,7 @@ _again:
39528 -#line 268 "hb-ot-shape-complex-use-machine.rl"
39529 +#line 286 "hb-ot-shape-complex-use-machine.rl"
39533 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.rl b/src/third_par…
39535 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.rl
39536 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.rl
39537 @@ -73,9 +73,10 @@ export H = 12; # HALANT
39540 export ZWNJ = 14; # Zero width non-joiner
39544 -export HVM = 44; # HALANT_OR_VOWEL_MODIFIER
39549 @@ -106,12 +107,12 @@ export FMBlw = 46; # CONS_FINAL_MOD UIPC = Bottom
39553 -h = H | HVM | Sk;
39558 -dependent_vowels = VPre* VAbv* VBlw* VPst*;
39559 -vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*;
39565 @@ -134,7 +135,7 @@ symbol_cluster_tail = SMAbv+ SMBlw* | SMBlw+;
39569 - h
39574 @@ -152,14 +153,15 @@ standard_cluster =
39581 - (complex_syllable_tail | number_joiner_terminated_cluster_tail | numeral_cluster_tail | symbol_cl…
39587 -symbol_cluster = (O | GB) symbol_cluster_tail?;
39592 @@ -194,7 +196,9 @@ struct machine_index_t :
39596 - machine_index_t (const machine_index_t& o) : it (o.it) {}
39603 @@ -206,14 +210,28 @@ struct machine_index_t :
39605 void __prev__ () { --it; }
39606 void __rewind__ (unsigned n) { it -= n; }
39609 - { unsigned index = (*it).first; if (index < n) it += n - index; else if (index > n) it -= index
39610 - void operator = (const machine_index_t& o) { *this = (*o.it).first; }
39611 - bool operator == (const machine_index_t& o) const { return (*it).first == (*o.it).first; }
39623 + if (index < n) it += n - index; else if (index > n) it -= index - n;
39635 @@ -229,7 +247,7 @@ HB_FUNCOBJ (machine_index);
39639 -{ return !(i.use_category() == USE(CGJ) && _hb_glyph_info_is_default_ignorable (&i)); }
39644 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-table.hh b/src/third_party…
39646 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-table.hh
39647 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-table.hh
39648 @@ -53,7 +53,7 @@
39652 -#define HVM USE(HVM) /* HALANT_OR_VOWEL_MODIFIER */
39657 @@ -62,6 +62,7 @@
39665 @@ -102,7 +103,7 @@ static const uint8_t use_table[] = {
39667 /* Latin-1 Supplement */
39669 - /* 00A0 */ GB, O, O, O, O, O, O, O, O, O, O, O, …
39674 @@ -127,7 +128,7 @@ static const uint8_t use_table[] = {
39678 - /* 07F0 */ VMAbv, VMAbv, VMAbv, VMAbv, O, O, O, O, O, O, B, O, …
39683 @@ -135,7 +136,7 @@ static const uint8_t use_table[] = {
39687 - /* 0850 */ B, B, B, B, B, B, B, B, B, CMBlw, CMBlw, CMBlw, …
39692 @@ -153,102 +154,102 @@ static const uint8_t use_table[] = {
39696 - /* 0980 */ GB, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39697 - /* 0990 */ B, O, O, B, B, B, B, B, B, B, B, B, …
39698 - /* 09A0 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39699 - /* 09B0 */ B, O, B, O, O, O, B, B, B, B, O, O, C…
39700 - /* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, …
39701 - /* 09D0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
39702 - /* 09E0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39703 - /* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, …
39715 - /* 0A00 */ O, VMAbv, VMAbv, VMPst, O, B, B, B, B, B, B, O, …
39716 - /* 0A10 */ B, O, O, B, B, B, B, B, B, B, B, B, …
39717 - /* 0A20 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39718 - /* 0A30 */ B, O, B, B, O, B, B, O, B, B, O, O, C…
39719 - /* 0A40 */ VPst, VBlw, VBlw, O, O, O, O, VAbv, VAbv, O, O, VAbv, …
39720 - /* 0A50 */ O, VMBlw, O, O, O, O, O, O, O, B, B, B, …
39721 - /* 0A60 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39722 - /* 0A70 */ VMAbv, CMAbv, GB, GB, O, MBlw, O, O, O, O, O, O, …
39734 - /* 0A80 */ O, VMAbv, VMAbv, VMPst, O, B, B, B, B, B, B, B, …
39735 - /* 0A90 */ B, B, O, B, B, B, B, B, B, B, B, B, …
39736 - /* 0AA0 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39737 - /* 0AB0 */ B, O, B, B, O, B, B, B, B, B, O, O, C…
39738 - /* 0AC0 */ VPst, VBlw, VBlw, VBlw, VBlw, VAbv, O, VAbv, VAbv, VAbv, O, VPst, …
39739 - /* 0AD0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39740 - /* 0AE0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39741 - /* 0AF0 */ O, O, O, O, O, O, O, O, O, B, VMAbv, VMAbv, V…
39753 - /* 0B00 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39754 - /* 0B10 */ B, O, O, B, B, B, B, B, B, B, B, B, …
39755 - /* 0B20 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39756 - /* 0B30 */ B, O, B, B, O, B, B, B, B, B, O, O, C…
39757 - /* 0B40 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, …
39758 - /* 0B50 */ O, O, O, O, O, VAbv, VAbv, VAbv, O, O, O, O, …
39759 - /* 0B60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39760 - /* 0B70 */ O, B, O, O, O, O, O, O, O, O, O, O, …
39772 - /* 0B80 */ O, O, VMAbv, O, O, B, B, B, B, B, B, O, …
39773 - /* 0B90 */ B, O, B, B, B, B, O, O, O, B, B, O, …
39774 - /* 0BA0 */ O, O, O, B, B, O, O, O, B, B, B, O, …
39775 - /* 0BB0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
39776 - /* 0BC0 */ VAbv, VPst, VPst, O, O, O, VPre, VPre, VPre, O, VPre, VPre, …
39777 - /* 0BD0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
39778 - /* 0BE0 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39779 - /* 0BF0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39791 - /* 0C00 */ VMAbv, VMPst, VMPst, VMPst, VMAbv, B, B, B, B, B, B, B, …
39792 - /* 0C10 */ B, O, B, B, B, B, B, B, B, B, B, B, …
39793 - /* 0C20 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39794 - /* 0C30 */ B, B, B, B, B, B, B, B, B, B, O, O, C…
39795 - /* 0C40 */ VAbv, VPst, VPst, VPst, VPst, O, VAbv, VAbv, VAbv, O, VAbv, VAbv, …
39796 - /* 0C50 */ O, O, O, O, O, VAbv, VBlw, O, B, B, B, O, …
39797 - /* 0C60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39798 - /* 0C70 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39810 - /* 0C80 */ B, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39811 - /* 0C90 */ B, O, B, B, B, B, B, B, B, B, B, B, …
39812 - /* 0CA0 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39813 - /* 0CB0 */ B, B, B, B, O, B, B, B, B, B, O, O, C…
39814 - /* 0CC0 */ VAbv, VPst, VPst, VPst, VPst, O, VAbv, VAbv, VAbv, O, VAbv, VAbv, …
39815 - /* 0CD0 */ O, O, O, O, O, VPst, VPst, O, O, O, O, O, …
39816 - /* 0CE0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39817 - /* 0CF0 */ O, CS, CS, O, O, O, O, O, O, O, O, O, …
39829 - /* 0D00 */ VMAbv, VMAbv, VMPst, VMPst, B, B, B, B, B, B, B, B, …
39830 - /* 0D10 */ B, O, B, B, B, B, B, B, B, B, B, B, …
39835 - /* 0D40 */ VPst, VPst, VPst, VBlw, VBlw, O, VPre, VPre, VPre, O, VPre, VPre, …
39836 - /* 0D50 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
39837 - /* 0D60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39845 - /* 0D80 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39846 - /* 0D90 */ B, B, B, B, B, B, B, O, O, O, B, B, …
39850 - /* 0DB0 */ B, B, O, B, B, B, B, B, B, B, B, B, …
39851 - /* 0DC0 */ B, B, B, B, B, B, B, O, O, O, H, O, …
39852 - /* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, O, VBlw, O, VPst, VPre, VPre, VPre, …
39853 - /* 0DE0 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39854 - /* 0DF0 */ O, O, VPst, VPst, O, O, O, O,
39863 @@ -259,14 +260,14 @@ static const uint8_t use_table[] = {
39867 - /* 0F40 */ B, B, B, B, B, B, B, B, O, B, B, B, …
39870 - /* 0F60 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39871 - /* 0F70 */ O, CMBlw, VBlw, VAbv, VAbv, VBlw, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, …
39875 - /* 0F90 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, …
39878 - /* 0FB0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, …
39883 @@ -277,7 +278,7 @@ static const uint8_t use_table[] = {
39887 - /* 1030 */ VBlw, VPre, VAbv, VAbv, VAbv, VAbv, VMAbv, VMBlw, VMPst, H, VAbv, MPst, …
39892 @@ -291,22 +292,22 @@ static const uint8_t use_table[] = {
39896 - /* 1710 */ B, B, VAbv, VBlw, VBlw, VPst, O, O, O, O, O, O, …
39902 - /* 1730 */ B, B, VAbv, VBlw, VPst, O, O, O, O, O, O, O, …
39908 - /* 1750 */ B, B, VAbv, VBlw, O, O, O, O, O, O, O, O, …
39913 - /* 1760 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39914 - /* 1770 */ B, O, VAbv, VBlw, O, O, O, O, O, O, O, O, …
39920 @@ -315,23 +316,23 @@ static const uint8_t use_table[] = {
39924 - /* 17D0 */ FMAbv, VAbv, H, FMAbv, O, O, O, O, O, O, O, O, …
39925 - /* 17E0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
39926 - /* 17F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39933 - /* 1800 */ B, O, O, O, O, O, O, B, O, O, B, CGJ, …
39934 - /* 1810 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39942 - /* 1870 */ B, B, B, B, B, B, B, B, B, O, O, O, …
39946 - /* 18A0 */ B, B, B, B, B, B, B, B, B, CMBlw, B, O, …
39951 @@ -339,43 +340,43 @@ static const uint8_t use_table[] = {
39955 - /* 1910 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39956 - /* 1920 */ VAbv, VAbv, VBlw, VPst, VPst, VAbv, VAbv, VAbv, VAbv, SUB, SUB, SUB, …
39957 - /* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VMAbv, FMBlw, …
39958 - /* 1940 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39967 - /* 1960 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39968 - /* 1970 */ B, B, B, B, B, O, O, O, O, O, O, O, …
39976 - /* 19A0 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39979 - /* 19C0 */ B, B, B, B, B, B, B, B, VMPst, VMPst, O, O, …
39980 - /* 19D0 */ B, B, B, B, B, B, B, B, B, B, B, O, …
39989 - /* 1A10 */ B, B, B, B, B, B, B, VAbv, VAbv, VPre, VPst, VAbv, …
39997 - /* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, …
40000 - /* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, VMAbv, V…
40001 - /* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40002 - /* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40009 @@ -386,16 +387,16 @@ static const uint8_t use_table[] = {
40013 - /* 1B40 */ VPre, VPre, VAbv, VAbv, H, B, B, B, B, B, B, B, …
40014 - /* 1B50 */ B, B, B, B, B, B, B, B, B, B, O, GB, …
40015 - /* 1B60 */ O, O, GB, O, O, O, O, O, GB, O, O, SMAbv, S…
40016 - /* 1B70 */ SMAbv, SMAbv, SMAbv, SMAbv, O, O, O, O, O, O, O, O, …
40026 - /* 1BA0 */ B, SUB, SUB, SUB, VAbv, VBlw, VPre, VPst, VAbv, VAbv, VPst, H, …
40031 @@ -403,15 +404,15 @@ static const uint8_t use_table[] = {
40035 - /* 1BF0 */ FAbv, FAbv, CMBlw, CMBlw, O, O, O, O, O, O, O, O, …
40043 - /* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FMAbv, CMBlw, O, O, O, O, …
40044 - /* 1C40 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40050 @@ -420,7 +421,7 @@ static const uint8_t use_table[] = {
40054 - /* 1CF0 */ O, O, O, O, VMAbv, CS, CS, VMPst, VMAbv, VMAbv, GB, O, …
40059 @@ -432,31 +433,33 @@ static const uint8_t use_table[] = {
40063 - O, O, O, O, …
40064 - /* 2010 */ GB, GB, GB, GB, GB, O, O, O,
40065 -
40066 -#define use_offset_0x2070u 3072
40067 -
40078 - /* 2070 */ O, O, O, O, FMPst, O, O, O, O, O, O, O, …
40082 -#define use_offset_0x20f0u 3096
40088 - /* 20F0 */ VMAbv, O, O, O, O, O, O, O,
40091 -#define use_offset_0x25c8u 3104
40098 -#define use_offset_0x2d30u 3112
40103 @@ -464,25 +467,25 @@ static const uint8_t use_table[] = {
40107 - /* 2D60 */ B, B, B, B, B, B, B, B, O, O, O, O, …
40108 - /* 2D70 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40112 -#define use_offset_0xa800u 3192
40120 - /* A820 */ B, B, B, VPst, VPst, VBlw, VAbv, VPst, O, O, O, O, …
40121 - /* A830 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40125 /* Phags-pa */
40130 - /* A870 */ B, B, B, B, O, O, O, O, O, O, O, O, …
40135 @@ -490,8 +493,8 @@ static const uint8_t use_table[] = {
40139 - /* A8C0 */ VPst, VPst, VPst, VPst, H, VMAbv, O, O, O, O, O, O, …
40140 - /* A8D0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40146 @@ -508,9 +511,9 @@ static const uint8_t use_table[] = {
40150 - /* A950 */ FAbv, FAbv, FPst, VPst, O, O, O, O, O, O, O, O, …
40153 - /* A970 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40158 @@ -518,22 +521,22 @@ static const uint8_t use_table[] = {
40162 - /* A9C0 */ H, O, O, O, O, O, O, O, O, O, O, O, …
40163 - /* A9D0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40167 /* Myanmar Extended-B */
40170 - /* A9F0 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40178 - /* AA30 */ VPre, VAbv, VBlw, MPst, MPre, MAbv, MBlw, O, O, O, O, O, …
40179 - /* AA40 */ B, B, B, FAbv, B, B, B, B, B, B, B, B, …
40180 - /* AA50 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40185 /* Myanmar Extended-A */
40187 @@ -546,115 +549,128 @@ static const uint8_t use_table[] = {
40191 - /* AAC0 */ B, VMAbv, B, O, O, O, O, O, O, O, O, O, …
40192 - /* AAD0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40199 - /* AAF0 */ O, O, O, O, O, VMPst, H, O,
40202 -#define use_offset_0xabc0u 3952
40210 - /* ABE0 */ B, B, B, VPst, VPst, VAbv, VPst, VPst, VBlw, VPst, VPst, O, V…
40211 - /* ABF0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40215 -#define use_offset_0xfe00u 4016
40223 -#define use_offset_0x10570u 4032
40227 + /* Arabic Presentation Forms-B */
40242 - /* 10570 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40243 - /* 10580 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40244 - /* 10590 */ B, B, B, O, B, B, O, B, B, B, B, B, …
40245 - /* 105A0 */ B, B, O, B, B, B, B, B, B, B, B, B, …
40246 - /* 105B0 */ B, B, O, B, B, B, B, B, B, B, O, B, …
40253 -#define use_offset_0x10a00u 4112
40259 - /* 10A00 */ B, VBlw, VBlw, VBlw, O, VAbv, VBlw, O, O, O, O, O, …
40260 - /* 10A10 */ B, B, B, B, O, B, B, B, O, B, B, B, …
40264 - /* 10A30 */ B, B, B, B, B, B, O, O, CMAbv, CMBlw, CMBlw, O, …
40265 - /* 10A40 */ B, B, B, B, B, B, B, B, B, O, O, O, …
40269 -#define use_offset_0x10ac0u 4192
40277 - /* 10AE0 */ B, B, B, B, B, CMBlw, CMBlw, O, O, O, O, B, …
40280 -#define use_offset_0x10b80u 4240
40287 - /* 10B90 */ B, B, O, O, O, O, O, O, O, O, O, O, …
40288 - /* 10BA0 */ O, O, O, O, O, O, O, O, O, B, B, B, …
40292 -#define use_offset_0x10d00u 4288
40300 - /* 10D20 */ B, B, B, B, VMAbv, VMAbv, VMAbv, CMAbv, O, O, O, O, …
40301 - /* 10D30 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40305 -#define use_offset_0x10e80u 4352
40313 - /* 10EA0 */ B, B, B, B, B, B, B, B, B, B, O, VAbv, …
40314 - /* 10EB0 */ B, B, O, O, O, O, O, O,
40318 -#define use_offset_0x10f30u 4408
40326 - /* 10F50 */ VMBlw, B, B, B, B, O, O, O, O, O, O, O, …
40327 - /* 10F60 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40334 - /* 10F80 */ B, B, CMBlw, CMBlw, CMBlw, CMBlw, O, O, O, O, O, O, …
40335 - /* 10F90 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40336 - /* 10FA0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40344 - /* 10FC0 */ O, B, B, B, B, O, O, O, O, B, B, B, …
40345 - /* 10FD0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40349 - /* 10FF0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40354 @@ -662,10 +678,10 @@ static const uint8_t use_table[] = {
40358 - /* 11040 */ VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, H, O, O, O, O, O, …
40359 - /* 11050 */ O, O, N, N, N, N, N, N, N, N, N, N, …
40363 - /* 11070 */ VAbv, B, B, VAbv, VAbv, B, O, O, O, O, O, O, …
40368 @@ -673,9 +689,9 @@ static const uint8_t use_table[] = {
40372 - /* 110C0 */ O, O, VBlw, O, O, O, O, O,
40375 -#define use_offset_0x11100u 4816
40380 @@ -683,14 +699,14 @@ static const uint8_t use_table[] = {
40384 - /* 11130 */ VBlw, VAbv, VAbv, H, CMAbv, O, B, B, B, B, B, B, …
40385 - /* 11140 */ O, O, O, O, B, VPst, VPst, B, O, O, O, O, …
40393 - /* 11170 */ B, B, B, CMBlw, O, O, O, O, O, O, O, O, …
40398 @@ -698,50 +714,50 @@ static const uint8_t use_table[] = {
40402 - /* 111C0 */ H, B, R, R, O, O, O, O, GB, FMBlw, CMBlw, VAbv, …
40408 - /* 111E0 */ O, B, B, B, B, B, B, B, B, B, B, B, …
40409 - /* 111F0 */ B, B, B, B, B, O, O, O, O, O, O, O, …
40416 - /* 11210 */ B, B, O, B, B, B, B, B, B, B, B, B, …
40419 - /* 11230 */ VAbv, VAbv, VAbv, VAbv, VMAbv, H, CMAbv, CMAbv, O, O, O, O, …
40422 -#define use_offset_0x11280u 5136
40428 - /* 11280 */ B, B, B, B, B, B, B, O, B, O, B, B, …
40429 - /* 11290 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40430 - /* 112A0 */ B, B, B, B, B, B, B, B, B, O, O, O, …
40440 - /* 112E0 */ VPst, VPre, VPst, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, CMBlw, VBlw, O, …
40441 - /* 112F0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40447 - /* 11300 */ VMAbv, VMAbv, VMAbv, VMAbv, O, B, B, B, B, B, B, B, …
40448 - /* 11310 */ B, O, O, B, B, B, B, B, B, B, B, B, …
40449 - /* 11320 */ B, B, B, B, B, B, B, B, B, O, B, B, …
40450 - /* 11330 */ B, O, B, B, O, B, B, B, B, B, O, CMBlw, …
40451 - /* 11340 */ VAbv, VPst, VPst, VPst, VPst, O, O, VPre, VPre, O, O, VPre, …
40452 - /* 11350 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
40453 - /* 11360 */ B, B, VPst, VPst, O, O, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, …
40454 - /* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
40464 -#define use_offset_0x11400u 5384
40469 @@ -751,9 +767,9 @@ static const uint8_t use_table[] = {
40473 - /* 11450 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40474 - /* 11460 */ CS, CS, O, O, O, O, O, O, O, O, O, O, …
40475 - /* 11470 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40482 @@ -761,10 +777,10 @@ static const uint8_t use_table[] = {
40486 - /* 114C0 */ VMAbv, VMAbv, H, CMBlw, B, O, O, O, O, O, O, O, …
40487 - /* 114D0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40491 -#define use_offset_0x11580u 5608
40496 @@ -772,11 +788,11 @@ static const uint8_t use_table[] = {
40500 - /* 115B0 */ VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, VPre, VPre, …
40503 - /* 115D0 */ O, O, O, O, O, O, O, O, B, B, B, B, …
40504 - /* 115E0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40505 - /* 115F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40512 @@ -784,31 +800,31 @@ static const uint8_t use_table[] = {
40516 - /* 11640 */ VAbv, O, O, O, O, O, O, O, O, O, O, O, …
40517 - /* 11650 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40518 - /* 11660 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40519 - /* 11670 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40530 - /* 116B0 */ VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, H, CMBlw, B, O, O, O, …
40531 - /* 116C0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40532 - /* 116D0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40533 - /* 116E0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40534 - /* 116F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40544 - /* 11710 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40545 - /* 11720 */ VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VBlw, VAbv, VAbv, VAbv, …
40549 - /* 11740 */ B, B, B, B, B, B, B, O,
40552 -#define use_offset_0x11800u 6064
40557 @@ -816,31 +832,31 @@ static const uint8_t use_table[] = {
40561 - /* 11830 */ VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VMAbv, VMPst, H, CMBlw, O, …
40564 -#define use_offset_0x11900u 6128
40570 - /* 11900 */ B, B, B, B, B, B, B, O, O, B, O, O, …
40571 - /* 11910 */ B, B, B, B, O, B, B, O, B, B, B, B, …
40575 - /* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, O, VPre, VPre, O, O, VMAbv, …
40576 - /* 11940 */ MPst, R, MPst, CMBlw, O, O, O, O, O, O, O, O, …
40577 - /* 11950 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40582 -#define use_offset_0x119a0u 6224
40588 - /* 119A0 */ B, B, B, B, B, B, B, B, O, O, B, B, …
40592 - /* 119D0 */ B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VAbv, VAbv, …
40593 - /* 119E0 */ H, B, O, O, VPre, O, O, O, O, O, O, O, …
40594 - /* 119F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40601 @@ -848,7 +864,7 @@ static const uint8_t use_table[] = {
40605 - /* 11A40 */ O, O, O, O, O, GB, O, H, O, O, O, O, …
40610 @@ -856,50 +872,50 @@ static const uint8_t use_table[] = {
40614 - /* 11A90 */ FBlw, FBlw, FBlw, FBlw, FBlw, FBlw, VMAbv, VMPst, CMAbv, H, O, O, …
40617 -#define use_offset_0x11c00u 6480
40623 - /* 11C00 */ B, B, B, B, B, B, B, B, B, O, B, B, …
40627 - /* 11C30 */ VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VBlw, O, VAbv, VAbv, VAbv, VAbv, …
40628 - /* 11C40 */ B, O, O, O, GB, GB, O, O, O, O, O, O, …
40632 - /* 11C60 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40639 - /* 11C90 */ O, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, …
40640 - /* 11CA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, …
40641 - /* 11CB0 */ VBlw, VPre, VBlw, VAbv, VPst, VMAbv, VMAbv, O,
40646 -#define use_offset_0x11d00u 6664
40652 - /* 11D00 */ B, B, B, B, B, B, B, O, B, B, O, B, …
40656 - /* 11D30 */ B, VAbv, VAbv, VAbv, VAbv, VAbv, VBlw, O, O, O, VAbv, O, …
40657 - /* 11D40 */ VMAbv, VMAbv, CMBlw, VAbv, VBlw, H, R, MBlw, O, O, O, O, …
40658 - /* 11D50 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40665 - /* 11D60 */ B, B, B, B, B, B, O, B, B, O, B, B, …
40668 - /* 11D80 */ B, B, B, B, B, B, B, B, B, B, VPst, VPst, …
40669 - /* 11D90 */ VAbv, VAbv, O, VPst, VPst, VMAbv, VMPst, H, O, O, O, O, …
40670 - /* 11DA0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40675 -#define use_offset_0x11ee0u 6840
40680 @@ -907,7 +923,7 @@ static const uint8_t use_table[] = {
40684 -#define use_offset_0x13000u 6864
40689 @@ -978,21 +994,21 @@ static const uint8_t use_table[] = {
40693 - /* 13420 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40698 - /* 13430 */ H, H, H, H, H, H, H, B, B, O, O, O, …
40701 -#define use_offset_0x16ac0u 7952
40707 - /* 16AC0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40710 - /* 16AE0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40711 - /* 16AF0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40717 @@ -1001,7 +1017,7 @@ static const uint8_t use_table[] = {
40721 -#define use_offset_0x16f00u 8072
40726 @@ -1010,21 +1026,21 @@ static const uint8_t use_table[] = {
40730 - /* 16F40 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40735 - /* 16F80 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, O, O, O, O, …
40739 -#define use_offset_0x16fe0u 8224
40745 - /* 16FE0 */ O, O, O, O, B, O, O, O,
40748 -#define use_offset_0x18b00u 8232
40753 @@ -1058,9 +1074,9 @@ static const uint8_t use_table[] = {
40757 - /* 18CD0 */ B, B, B, B, B, B, O, O,
40760 -#define use_offset_0x1bc00u 8704
40765 @@ -1071,39 +1087,46 @@ static const uint8_t use_table[] = {
40769 - /* 1BC60 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40770 - /* 1BC70 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40771 - /* 1BC80 */ B, B, B, B, B, B, B, B, B, O, O, O, …
40772 - /* 1BC90 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40781 -#define use_offset_0x1e100u 8864
40793 - /* 1E120 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40794 - /* 1E130 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, B, B, B, B, B, …
40795 - /* 1E140 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40800 -#define use_offset_0x1e290u 8944
40807 - /* 1E2A0 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40808 - /* 1E2B0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40817 - /* 1E2F0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40820 -#define use_offset_0x1e900u 9056
40825 @@ -1112,11 +1135,33 @@ static const uint8_t use_table[] = {
40829 - /* 1E940 */ B, B, B, B, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, B, …
40830 - /* 1E950 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40839 -#define use_offset_0xe0100u 9152
40862 @@ -1136,11 +1181,240 @@ static const uint8_t use_table[] = {
40866 -}; /* Table items: 9392; occupancy: 79% */
41098 -hb_use_get_category (hb_codepoint_t u)
41105 @@ -1164,8 +1438,7 @@ hb_use_get_category (hb_codepoint_t u)
41109 - if (hb_in_range<hb_codepoint_t> (u, 0x2008u, 0x2017u)) return use_table[u - 0x2008u + use_of…
41110 - if (hb_in_range<hb_codepoint_t> (u, 0x2070u, 0x2087u)) return use_table[u - 0x2070u + use_of…
41111 + if (hb_in_range<hb_codepoint_t> (u, 0x2008u, 0x2087u)) return use_table[u - 0x2008u + use_of…
41112 …if (hb_in_range<hb_codepoint_t> (u, 0x20F0u, 0x20F7u)) return use_table[u - 0x20F0u + use_offset_0…
41113 …if (hb_in_range<hb_codepoint_t> (u, 0x25C8u, 0x25CFu)) return use_table[u - 0x25C8u + use_offset_0…
41114 …if (hb_in_range<hb_codepoint_t> (u, 0x2D30u, 0x2D7Fu)) return use_table[u - 0x2D30u + use_offset_0…
41115 @@ -1178,9 +1451,12 @@ hb_use_get_category (hb_codepoint_t u)
41118 …if (hb_in_range<hb_codepoint_t> (u, 0xFE00u, 0xFE0Fu)) return use_table[u - 0xFE00u + use_offset_0…
41119 + if (hb_in_range<hb_codepoint_t> (u, 0xFEF8u, 0xFEFFu)) return use_table[u - 0xFEF8u + use_of…
41120 + if (hb_in_range<hb_codepoint_t> (u, 0xFFF0u, 0xFFFFu)) return use_table[u - 0xFFF0u + use_of…
41124 + if (hb_in_range<hb_codepoint_t> (u, 0xFFF0u, 0xFFFFu)) return use_table[u - 0xFFF0u + use_of…
41125 …if (hb_in_range<hb_codepoint_t> (u, 0x10570u, 0x105BFu)) return use_table[u - 0x10570u + use_offse…
41126 …if (hb_in_range<hb_codepoint_t> (u, 0x10A00u, 0x10A4Fu)) return use_table[u - 0x10A00u + use_offse…
41127 …if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AEFu)) return use_table[u - 0x10AC0u + use_offse…
41128 @@ -1222,6 +1498,10 @@ hb_use_get_category (hb_codepoint_t u)
41129 …if (hb_in_range<hb_codepoint_t> (u, 0x1BC00u, 0x1BC9Fu)) return use_table[u - 0x1BC00u + use_offse…
41133 + if (hb_in_range<hb_codepoint_t> (u, 0x1D170u, 0x1D17Fu)) return use_table[u - 0x1D170u + use…
41137 …if (hb_in_range<hb_codepoint_t> (u, 0x1E100u, 0x1E14Fu)) return use_table[u - 0x1E100u + use_offse…
41138 …if (hb_in_range<hb_codepoint_t> (u, 0x1E290u, 0x1E2FFu)) return use_table[u - 0x1E290u + use_offse…
41139 @@ -1229,13 +1509,19 @@ hb_use_get_category (hb_codepoint_t u)
41143 - if (hb_in_range<hb_codepoint_t> (u, 0xE0100u, 0xE01EFu)) return use_table[u - 0xE0100u + use…
41144 + if (hb_in_range<hb_codepoint_t> (u, 0xE0000u, 0xE0FFFu)) return use_table[u - 0xE0000u + use…
41148 + if (hb_in_range<hb_codepoint_t> (u, 0xE0000u, 0xE0FFFu)) return use_table[u - 0xE0000u + use…
41154 - return USE(O);
41161 @@ -1245,7 +1531,7 @@ hb_use_get_category (hb_codepoint_t u)
41165 -#undef HVM
41170 @@ -1254,6 +1540,7 @@ hb_use_get_category (hb_codepoint_t u)
41178 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use.cc b/src/third_party/harfb…
41180 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use.cc
41181 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use.cc
41182 @@ -206,7 +206,7 @@ setup_masks_use (const hb_ot_shape_plan_t *plan,
41183 unsigned int count = buffer->len;
41184 hb_glyph_info_t *info = buffer->info;
41186 - info[i].use_category() = hb_use_get_category (info[i].codepoint);
41191 @@ -257,7 +257,6 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
41195 - case use_symbol_cluster:
41199 @@ -269,6 +268,7 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
41207 @@ -350,7 +350,7 @@ record_pref_use (const hb_ot_shape_plan_t *plan HB_UNUSED,
41211 - return (info.use_category() == USE(H) || info.use_category() == USE(HVM)) &&
41216 @@ -363,6 +363,7 @@ reorder_syllable_use (hb_buffer_t *buffer, unsigned int start, unsigned int end)
41224 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-fallback.cc b/src/third_party/harfbuzz
41226 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-fallback.cc
41227 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-fallback.cc
41228 @@ -446,6 +446,9 @@ _hb_ot_shape_fallback_mark_position (const hb_ot_shape_plan_t *plan,
41232 + if (!buffer->message (font, "start fallback mark"))
41238 @@ -457,6 +460,8 @@ _hb_ot_shape_fallback_mark_position (const hb_ot_shape_plan_t *plan,
41243 + (void) buffer->message (font, "end fallback mark");
41247 @@ -497,6 +502,9 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
41248 !font->has_glyph_v_kerning_func ())
41251 + if (!buffer->message (font, "start fallback kern"))
41254 bool reverse = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
41257 @@ -508,6 +516,8 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
41260 buffer->reverse ();
41262 + (void) buffer->message (font, "end fallback kern");
41266 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape.cc b/src/third_party/harfbuzz-ng/src/s…
41268 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape.cc
41269 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape.cc
41270 @@ -935,17 +935,23 @@ hb_ot_substitute_pre (const hb_ot_shape_context_t *c)
41271 _hb_buffer_allocate_gsubgpos_vars (c->buffer);
41276 + if (c->plan->apply_morx && c->plan->apply_gpos)
41277 + hb_aat_layout_remove_deleted_glyphs (c->buffer);
41284 - hb_ot_hide_default_ignorables (c->buffer, c->font);
41286 - if (c->plan->apply_morx)
41287 + if (c->plan->apply_morx && !c->plan->apply_gpos)
41288 hb_aat_layout_remove_deleted_glyphs (c->buffer);
41291 + hb_ot_hide_default_ignorables (c->buffer, c->font);
41293 if (c->plan->shaper->postprocess_glyphs &&
41294 c->buffer->message(c->font, "start postprocess-glyphs")) {
41295 c->plan->shaper->postprocess_glyphs (c->plan, c->buffer, c->font);
41296 @@ -1034,7 +1040,7 @@ hb_ot_position_complex (const hb_ot_shape_context_t *c)
41300 - * this as it will be overriden.
41303 bool adjust_offsets_when_zeroing = c->plan->adjust_mark_positioning_when_zeroing &&
41304 HB_DIRECTION_IS_FORWARD (c->buffer->props.direction);
41305 @@ -1120,7 +1126,7 @@ hb_propagate_flags (hb_buffer_t *buffer)
41306 /* Propagate cluster-level glyph flags to be the same on all cluster glyphs.
41309 - if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_UNSAFE_TO_BREAK))
41310 + if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_GLYPH_FLAGS))
41313 hb_glyph_info_t *info = buffer->info;
41314 @@ -1129,11 +1135,7 @@ hb_propagate_flags (hb_buffer_t *buffer)
41318 - if (info[i].mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK)
41319 - {
41320 - mask = HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
41321 - break;
41322 - }
41327 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag-table.hh b/src/third_party/harfbuzz-ng/s…
41329 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag-table.hh
41330 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-tag-table.hh
41331 @@ -6,8 +6,8 @@
41335 - * <meta name="updated_at" content="2021-12-09 12:01 AM" />
41336 - * File-Date: 2021-08-06
41337 + * <meta name="updated_at" content="2022-01-28 10:00 PM" />
41338 + * File-Date: 2022-03-02
41342 @@ -54,6 +54,7 @@ static const LangTag ot_languages[] = {
41345 {"ajp", HB_TAG('A','R','A',' ')}, /* South Levantine Arabic -> Arabic */
41346 + {"ajt", HB_TAG('A','R','A',' ')}, /* Judeo-Tunisian Arabic (retired code) -> Arabic */
41349 {"akb", HB_TAG('B','T','K',' ')}, /* Batak Angkola -> Batak */
41350 @@ -66,7 +67,7 @@ static const LangTag ot_languages[] = {
41352 /*{"ang", HB_TAG('A','N','G',' ')},*/ /* Old English (ca. 450-1100) -> Anglo-Saxon */
41353 {"aoa", HB_TAG('C','P','P',' ')}, /* Angolar -> Creoles */
41354 - {"apa", HB_TAG('A','T','H',' ')}, /* Apache [family] -> Athapaskan */
41355 + {"apa", HB_TAG('A','T','H',' ')}, /* Apache [collection] -> Athapaskan */
41356 {"apc", HB_TAG('A','R','A',' ')}, /* North Levantine Arabic -> Arabic */
41357 {"apd", HB_TAG('A','R','A',' ')}, /* Sudanese Arabic -> Arabic */
41358 {"apj", HB_TAG('A','T','H',' ')}, /* Jicarilla Apache -> Athapaskan */
41359 @@ -86,7 +87,7 @@ static const LangTag ot_languages[] = {
41360 {"arz", HB_TAG('A','R','A',' ')}, /* Egyptian Arabic -> Arabic */
41363 -/*{"ath", HB_TAG('A','T','H',' ')},*/ /* Athapascan [family] -> Athapaskan */
41364 +/*{"ath", HB_TAG('A','T','H',' ')},*/ /* Athapascan [collection] -> Athapaskan */
41365 {"atj", HB_TAG('R','C','R',' ')}, /* Atikamekw -> R-Cree */
41366 {"atv", HB_TAG('A','L','T',' ')}, /* Northern Altai -> Altai */
41367 {"auj", HB_TAG('B','B','R',' ')}, /* Awjilah -> Berber */
41368 @@ -110,10 +111,10 @@ static const LangTag ot_languages[] = {
41369 {"azn", HB_TAG('N','A','H',' ')}, /* Western Durango Nahuatl -> Nahuatl */
41370 {"azz", HB_TAG('N','A','H',' ')}, /* Highland Puebla Nahuatl -> Nahuatl */
41372 - {"bad", HB_TAG('B','A','D','0')}, /* Banda [family] */
41375 {"bah", HB_TAG('C','P','P',' ')}, /* Bahamas Creole English -> Creoles */
41376 - {"bai", HB_TAG('B','M','L',' ')}, /* Bamileke [family] */
41381 @@ -135,7 +136,7 @@ static const LangTag ot_languages[] = {
41382 {"bea", HB_TAG('A','T','H',' ')}, /* Beaver -> Athapaskan */
41383 {"beb", HB_TAG('B','T','I',' ')}, /* Bebele -> Beti */
41385 - {"ber", HB_TAG('B','B','R',' ')}, /* Berber [family] */
41387 {"bew", HB_TAG('C','P','P',' ')}, /* Betawi -> Creoles */
41388 {"bfl", HB_TAG('B','A','D','0')}, /* Banda-Ndélé -> Banda */
41390 @@ -203,7 +204,7 @@ static const LangTag ot_languages[] = {
41391 {"btd", HB_TAG('B','T','K',' ')}, /* Batak Dairi -> Batak */
41393 {"btj", HB_TAG('M','L','Y',' ')}, /* Bacanese Malay -> Malay */
41394 -/*{"btk", HB_TAG('B','T','K',' ')},*/ /* Batak [family] */
41397 {"btm", HB_TAG('B','T','K',' ')}, /* Batak Mandailing -> Batak */
41398 {"bto", HB_TAG('B','I','K',' ')}, /* Rinconada Bikol -> Bikol */
41399 @@ -256,6 +257,8 @@ static const LangTag ot_languages[] = {
41401 {"chj", HB_TAG('C','C','H','N')}, /* Ojitlán Chinantec -> Chinantec */
41403 + {"chm", HB_TAG('H','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> High Mari */
41404 + {"chm", HB_TAG('L','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> Low Mari */
41405 {"chn", HB_TAG('C','P','P',' ')}, /* Chinook jargon -> Creoles */
41408 @@ -297,10 +300,10 @@ static const LangTag ot_languages[] = {
41410 {"coq", HB_TAG('A','T','H',' ')}, /* Coquille -> Athapaskan */
41411 {"cpa", HB_TAG('C','C','H','N')}, /* Palantla Chinantec -> Chinantec */
41412 - {"cpe", HB_TAG('C','P','P',' ')}, /* English-based creoles and pidgins [family] -> Creoles */
41413 - {"cpf", HB_TAG('C','P','P',' ')}, /* French-based creoles and pidgins [family] -> Creoles */
41414 + {"cpe", HB_TAG('C','P','P',' ')}, /* English-based creoles and pidgins [collection] -> Creoles */
41415 + {"cpf", HB_TAG('C','P','P',' ')}, /* French-based creoles and pidgins [collection] -> Creoles */
41416 {"cpi", HB_TAG('C','P','P',' ')}, /* Chinese Pidgin English -> Creoles */
41417 -/*{"cpp", HB_TAG('C','P','P',' ')},*/ /* Portuguese-based creoles and pidgins [family] -> Creoles …
41418 +/*{"cpp", HB_TAG('C','P','P',' ')},*/ /* Portuguese-based creoles and pidgins [collection] -> Creo…
41419 {"cpx", HB_TAG('Z','H','S',' ')}, /* Pu-Xian Chinese -> Chinese, Simplified */
41420 {"cqd", HB_TAG('H','M','N',' ')}, /* Chuanqiandian Cluster Miao -> Hmong */
41421 {"cqu", HB_TAG('Q','U','H',' ')}, /* Chilean Quechua (retired code) -> Quechua (Bolivia) */
41422 @@ -320,7 +323,7 @@ static const LangTag ot_languages[] = {
41424 {"crm", HB_TAG('L','C','R',' ')}, /* Moose Cree -> L-Cree */
41425 {"crm", HB_TAG('C','R','E',' ')}, /* Moose Cree -> Cree */
41426 - {"crp", HB_TAG('C','P','P',' ')}, /* Creoles and pidgins [family] -> Creoles */
41427 + {"crp", HB_TAG('C','P','P',' ')}, /* Creoles and pidgins [collection] -> Creoles */
41429 {"crs", HB_TAG('C','P','P',' ')}, /* Seselwa Creole French -> Creoles */
41431 @@ -431,7 +434,7 @@ static const LangTag ot_languages[] = {
41433 {"eto", HB_TAG('B','T','I',' ')}, /* Eton (Cameroon) -> Beti */
41435 - {"euq", HB_TAG_NONE }, /* Basque [family] != Basque */
41439 {"ewo", HB_TAG('B','T','I',' ')}, /* Ewondo -> Beti */
41440 @@ -620,10 +623,11 @@ static const LangTag ot_languages[] = {
41441 {"ijc", HB_TAG('I','J','O',' ')}, /* Izon -> Ijo */
41442 {"ije", HB_TAG('I','J','O',' ')}, /* Biseni -> Ijo */
41443 {"ijn", HB_TAG('I','J','O',' ')}, /* Kalabari -> Ijo */
41444 -/*{"ijo", HB_TAG('I','J','O',' ')},*/ /* Ijo [family] */
41446 {"ijs", HB_TAG('I','J','O',' ')}, /* Southeast Ijo -> Ijo */
41447 {"ik", HB_TAG('I','P','K',' ')}, /* Inupiaq [macrolanguage] -> Inupiat */
41448 {"ike", HB_TAG('I','N','U',' ')}, /* Eastern Canadian Inuktitut -> Inuktitut */
41449 + {"ike", HB_TAG('I','N','U','K')}, /* Eastern Canadian Inuktitut -> Nunavik Inuktitut */
41450 {"ikt", HB_TAG('I','N','U',' ')}, /* Inuinnaqtun -> Inuktitut */
41451 /*{"ilo", HB_TAG('I','L','O',' ')},*/ /* Iloko -> Ilokano */
41453 @@ -638,6 +642,7 @@ static const LangTag ot_languages[] = {
41455 {"itz", HB_TAG('M','Y','N',' ')}, /* Itzá -> Mayan */
41457 + {"iu", HB_TAG('I','N','U','K')}, /* Inuktitut [macrolanguage] -> Nunavik Inuktitut */
41459 {"ixl", HB_TAG('M','Y','N',' ')}, /* Ixil -> Mayan */
41461 @@ -667,7 +672,7 @@ static const LangTag ot_languages[] = {
41462 {"kab", HB_TAG('B','B','R',' ')}, /* Kabyle -> Berber */
41465 - {"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */
41469 {"kby", HB_TAG('K','N','R',' ')}, /* Manga Kanuri -> Kanuri */
41470 @@ -805,7 +810,7 @@ static const LangTag ot_languages[] = {
41471 {"lac", HB_TAG('M','Y','N',' ')}, /* Lacandon -> Mayan */
41474 - {"lak", HB_TAG_NONE }, /* Laka (Nigeria) != Lak */
41479 @@ -876,7 +881,7 @@ static const LangTag ot_languages[] = {
41481 {"mam", HB_TAG('M','Y','N',' ')}, /* Mam -> Mayan */
41482 {"man", HB_TAG('M','N','K',' ')}, /* Mandingo [macrolanguage] -> Maninka */
41483 - {"map", HB_TAG_NONE }, /* Austronesian [family] != Mapudungun */
41486 {"max", HB_TAG('M','L','Y',' ')}, /* North Moluccan Malay -> Malay */
41487 {"max", HB_TAG('C','P','P',' ')}, /* North Moluccan Malay -> Creoles */
41488 @@ -936,6 +941,7 @@ static const LangTag ot_languages[] = {
41489 {"mnw", HB_TAG('M','O','N','T')}, /* Mon -> Thailand Mon */
41492 + {"mo", HB_TAG('R','O','M',' ')}, /* Moldavian (retired code) -> Romanian */
41493 {"mod", HB_TAG('C','P','P',' ')}, /* Mobilian -> Creoles */
41496 @@ -958,7 +964,7 @@ static const LangTag ot_languages[] = {
41498 {"mud", HB_TAG('C','P','P',' ')}, /* Mednyj Aleut -> Creoles */
41499 {"mui", HB_TAG('M','L','Y',' ')}, /* Musi -> Malay */
41500 - {"mun", HB_TAG_NONE }, /* Munda [family] != Mundari */
41502 {"mup", HB_TAG('R','A','J',' ')}, /* Malvi -> Rajasthani */
41503 {"muq", HB_TAG('H','M','N',' ')}, /* Eastern Xiangxi Miao -> Hmong */
41504 /*{"mus", HB_TAG('M','U','S',' ')},*/ /* Creek -> Muscogee */
41505 @@ -973,7 +979,7 @@ static const LangTag ot_languages[] = {
41506 {"mww", HB_TAG('H','M','N',' ')}, /* Hmong Daw -> Hmong */
41509 -/*{"myn", HB_TAG('M','Y','N',' ')},*/ /* Mayan [family] */
41511 {"myq", HB_TAG('M','N','K',' ')}, /* Forest Maninka (retired code) -> Maninka */
41513 {"mzb", HB_TAG('B','B','R',' ')}, /* Tumzabt -> Berber */
41514 @@ -982,7 +988,7 @@ static const LangTag ot_languages[] = {
41515 {"na", HB_TAG('N','A','U',' ')}, /* Nauru -> Nauruan */
41516 {"nag", HB_TAG('N','A','G',' ')}, /* Naga Pidgin -> Naga-Assamese */
41517 {"nag", HB_TAG('C','P','P',' ')}, /* Naga Pidgin -> Creoles */
41518 -/*{"nah", HB_TAG('N','A','H',' ')},*/ /* Nahuatl [family] */
41520 {"nan", HB_TAG('Z','H','S',' ')}, /* Min Nan Chinese -> Chinese, Simplified */
41523 @@ -1039,7 +1045,6 @@ static const LangTag ot_languages[] = {
41524 {"nln", HB_TAG('N','A','H',' ')}, /* Durango Nahuatl (retired code) -> Nahuatl */
41525 {"nlv", HB_TAG('N','A','H',' ')}, /* Orizaba Nahuatl -> Nahuatl */
41527 - {"nn", HB_TAG('N','O','R',' ')}, /* Norwegian Nynorsk -> Norwegian */
41528 {"nnh", HB_TAG('B','M','L',' ')}, /* Ngiemboon -> Bamileke */
41529 {"nnz", HB_TAG('B','M','L',' ')}, /* Nda'nda' -> Bamileke */
41531 @@ -1093,7 +1098,7 @@ static const LangTag ot_languages[] = {
41532 {"otw", HB_TAG('O','J','B',' ')}, /* Ottawa -> Ojibway */
41533 {"oua", HB_TAG('B','B','R',' ')}, /* Tagargrent -> Berber */
41535 - {"paa", HB_TAG_NONE }, /* Papuan [family] != Palestinian Aramaic */
41539 /*{"pam", HB_TAG('P','A','M',' ')},*/ /* Pampanga -> Pampangan */
41540 @@ -1308,6 +1313,9 @@ static const LangTag ot_languages[] = {
41543 {"sgw", HB_TAG('C','H','G',' ')}, /* Sebat Bet Gurage -> Chaha Gurage */
41544 + {"sh", HB_TAG('B','O','S',' ')}, /* Serbo-Croatian [macrolanguage] -> Bosnian */
41545 + {"sh", HB_TAG('H','R','V',' ')}, /* Serbo-Croatian [macrolanguage] -> Croatian */
41546 + {"sh", HB_TAG('S','R','B',' ')}, /* Serbo-Croatian [macrolanguage] -> Serbian */
41548 {"shi", HB_TAG('B','B','R',' ')}, /* Tachelhit -> Berber */
41549 {"shl", HB_TAG('Q','I','N',' ')}, /* Shendu -> Chin */
41550 @@ -1329,15 +1337,17 @@ static const LangTag ot_languages[] = {
41551 {"skw", HB_TAG('C','P','P',' ')}, /* Skepi Creole Dutch -> Creoles */
41554 - {"sla", HB_TAG_NONE }, /* Slavic [family] != Slavey */
41558 + {"smd", HB_TAG('M','B','N',' ')}, /* Sama (retired code) -> Mbundu */
41563 {"smt", HB_TAG('Q','I','N',' ')}, /* Simte -> Chin */
41565 + {"snb", HB_TAG('I','B','A',' ')}, /* Sebuyau (retired code) -> Iban */
41569 @@ -1451,7 +1461,7 @@ static const LangTag ot_languages[] = {
41570 {"tpi", HB_TAG('C','P','P',' ')}, /* Tok Pisin -> Creoles */
41572 {"trf", HB_TAG('C','P','P',' ')}, /* Trinidadian Creole English -> Creoles */
41573 - {"trk", HB_TAG_NONE }, /* Turkic [family] != Turkish */
41575 {"tru", HB_TAG('T','U','A',' ')}, /* Turoyo -> Turoyo Aramaic */
41576 {"tru", HB_TAG('S','Y','R',' ')}, /* Turoyo -> Syriac */
41578 @@ -1593,7 +1603,7 @@ static const LangTag ot_languages[] = {
41579 {"zlq", HB_TAG('Z','H','A',' ')}, /* Liuqian Zhuang -> Zhuang */
41580 {"zmi", HB_TAG('M','L','Y',' ')}, /* Negeri Sembilan Malay -> Malay */
41581 {"zmz", HB_TAG('B','A','D','0')}, /* Mbandja -> Banda */
41582 - {"znd", HB_TAG_NONE }, /* Zande [family] != Zande */
41585 {"zom", HB_TAG('Q','I','N',' ')}, /* Zou -> Chin */
41586 {"zqe", HB_TAG('Z','H','A',' ')}, /* Qiubei Zhuang -> Zhuang */
41587 @@ -2607,14 +2617,8 @@ hb_ot_tags_from_complex_language (const char *lang_str,
41588 if (0 == strcmp (&lang_str[1], "o-nyn"))
41591 - unsigned int i;
41592 - hb_tag_t possible_tags[] = {
41593 - HB_TAG('N','Y','N',' '), /* Norwegian Nynorsk (Nynorsk, Norwegian) */
41594 - HB_TAG('N','O','R',' '), /* Norwegian */
41595 - };
41596 - for (i = 0; i < 2 && i < *count; i++)
41597 - tags[i] = possible_tags[i];
41598 - *count = i;
41604 @@ -2623,8 +2627,14 @@ hb_ot_tags_from_complex_language (const char *lang_str,
41605 && subtag_matches (lang_str, limit, "-md"))
41608 - tags[0] = HB_TAG('M','O','L',' '); /* Moldavian */
41609 - *count = 1;
41621 @@ -2813,15 +2823,15 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41623 return hb_language_from_string ("rki", -1); /* Rakhine */
41625 - return hb_language_from_string ("ath", -1); /* Athapascan [family] */
41626 + return hb_language_from_string ("ath", -1); /* Athapascan [collection] */
41628 - return hb_language_from_string ("ber", -1); /* Berber [family] */
41629 + return hb_language_from_string ("ber", -1); /* Berber [collection] */
41631 return hb_language_from_string ("bik", -1); /* Bikol [macrolanguage] */
41633 - return hb_language_from_string ("btk", -1); /* Batak [family] */
41634 + return hb_language_from_string ("btk", -1); /* Batak [collection] */
41636 - return hb_language_from_string ("crp", -1); /* Creoles and pidgins [family] */
41637 + return hb_language_from_string ("crp", -1); /* Creoles and pidgins [collection] */
41639 return hb_language_from_string ("crx", -1); /* Carrier */
41641 @@ -2838,6 +2848,8 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41642 return hb_language_from_string ("fa", -1); /* Persian [macrolanguage] */
41644 return hb_language_from_string ("gon", -1); /* Gondi [macrolanguage] */
41646 + return hb_language_from_string ("mrj", -1); /* Western Mari */
41648 return hb_language_from_string ("hmn", -1); /* Hmong [macrolanguage] */
41650 @@ -2847,7 +2859,7 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41652 return hb_language_from_string ("iba", -1); /* Iban */
41654 - return hb_language_from_string ("ijo", -1); /* Ijo [family] */
41655 + return hb_language_from_string ("ijo", -1); /* Ijo [collection] */
41657 return hb_language_from_string ("iu", -1); /* Inuktitut [macrolanguage] */
41659 @@ -2873,11 +2885,13 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41661 return hb_language_from_string ("kpe", -1); /* Kpelle [macrolanguage] */
41663 - return hb_language_from_string ("kar", -1); /* Karen [family] */
41664 + return hb_language_from_string ("kar", -1); /* Karen [collection] */
41666 return hb_language_from_string ("uki", -1); /* Kui (India) */
41668 return hb_language_from_string ("ku", -1); /* Kurdish [macrolanguage] */
41670 + return hb_language_from_string ("mhr", -1); /* Eastern Mari */
41672 return hb_language_from_string ("luy", -1); /* Luyia [macrolanguage] */
41674 @@ -2897,9 +2911,9 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41676 return hb_language_from_string ("mnw-TH", -1); /* Mon; Thailand */
41678 - return hb_language_from_string ("myn", -1); /* Mayan [family] */
41679 + return hb_language_from_string ("myn", -1); /* Mayan [collection] */
41681 - return hb_language_from_string ("nah", -1); /* Nahuatl [family] */
41682 + return hb_language_from_string ("nah", -1); /* Nahuatl [collection] */
41684 return hb_language_from_string ("ne", -1); /* Nepali [macrolanguage] */
41686 @@ -2926,6 +2940,8 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41687 return hb_language_from_string ("qwh", -1); /* Huaylas Ancash Quechua */
41689 return hb_language_from_string ("raj", -1); /* Rajasthani [macrolanguage] */
41691 + return hb_language_from_string ("ro", -1); /* Romanian */
41693 return hb_language_from_string ("rom", -1); /* Romany [macrolanguage] */
41695 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag.cc b/src/third_party/harfbuzz-ng/src/src…
41697 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag.cc
41698 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-tag.cc
41699 @@ -41,6 +41,7 @@ hb_ot_old_tag_from_script (hb_script_t script)
41707 @@ -63,6 +64,8 @@ hb_ot_old_tag_to_script (hb_tag_t tag)
41716 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-gvar-table.hh b/src/third_party/harfbuzz
41718 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-gvar-table.hh
41719 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-var-gvar-table.hh
41720 @@ -399,7 +399,7 @@ struct gvar
41721 get_offset (glyphCount) - get_offset (0)));
41724 - /* GlyphVariationData not sanitized here; must be checked while accessing each glyph varation da…
41729 @@ -498,9 +498,9 @@ struct gvar
41733 - void init (hb_face_t *face)
41736 - void fini () { table.destroy (); }
41741 @@ -577,10 +577,11 @@ struct gvar
41745 - if (iterator.current_tuple->has_private_points () &&
41746 + bool has_private_points = iterator.current_tuple->has_private_points ();
41750 - const hb_array_t<unsigned int> &indices = private_indices.length ? private_indices : shared_indic…
41755 @@ -698,7 +699,9 @@ no_more_gaps:
41759 -struct gvar_accelerator_t : gvar::accelerator_t {};
41766 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-hvar-table.hh b/src/third_party/harfbuzz
41768 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-hvar-table.hh
41769 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-var-hvar-table.hh
41770 @@ -177,9 +177,6 @@ struct hvarvvar_subset_plan_t
41772 inner_maps.resize (var_store->get_sub_table_count ());
41774 - for (unsigned int i = 0; i < inner_maps.length; i++)
41775 - inner_maps[i].init ();
41776 -
41780 @@ -229,8 +226,8 @@ struct hvarvvar_subset_plan_t
41784 - inner_maps.fini_deep ();
41785 - index_map_plans.fini_deep ();
41791 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-var.h b/src/third_party/harfbuzz-ng/src/src/…
41793 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-var.h
41794 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-var.h
41795 @@ -109,7 +109,7 @@ typedef enum { /*< flags >*/
41799 - * @min_value: The mininum value on the variation axis that the font covers
41804 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-repacker.hh b/src/third_party/harfbuzz-ng/src/s…
41806 --- a/src/third_party/harfbuzz-ng/src/src/hb-repacker.hh
41807 +++ b/src/third_party/harfbuzz-ng/src/src/hb-repacker.hh
41808 @@ -37,31 +37,17 @@
41812 -
41817 - vertex_t () :
41818 - distance (0),
41819 - space (0),
41820 - parents (),
41821 - start (0),
41822 - end (0),
41823 - priority(0) {}
41824 -
41825 - void fini () {
41826 - obj.fini ();
41827 - parents.fini ();
41828 - }
41829 -
41831 - int64_t distance;
41832 - int64_t space;
41836 - unsigned start;
41837 - unsigned end;
41838 - unsigned priority;
41845 @@ -153,7 +139,8 @@ struct graph_t
41849 - graph_t (const hb_vector_t<hb_serialize_context_t::object_t *>& objects)
41855 @@ -186,7 +173,7 @@ struct graph_t
41859 - vertices_.fini_deep ();
41864 @@ -309,7 +296,7 @@ struct graph_t
41868 - sorted_graph.fini_deep ();
41873 @@ -369,7 +356,7 @@ struct graph_t
41877 - sorted_graph.fini_deep ();
41882 @@ -871,7 +858,7 @@ struct graph_t
41884 // According to https://www3.cs.stonybrook.edu/~rezaul/papers/TR-07-54.pdf
41886 - // (such as a fibonaacci queue) with a fast decrease priority.
41890 if (i == vertices_.length - 1)
41891 @@ -1111,8 +1098,9 @@ struct graph_t
41895 -static bool _try_isolating_subgraphs (const hb_vector_t<graph_t::overflow_record_t>& overflows,
41896 - graph_t& sorted_graph)
41903 @@ -1160,9 +1148,10 @@ static bool _try_isolating_subgraphs (const hb_vector_t<graph_t::overflow_re…
41907 -static bool _process_overflows (const hb_vector_t<graph_t::overflow_record_t>& overflows,
41908 - hb_set_t& priority_bumped_parents,
41909 - graph_t& sorted_graph)
41917 @@ -1220,8 +1209,9 @@ static bool _process_overflows (const hb_vector_t<graph_t::overflow_record_t>…
41923 -hb_resolve_overflows (const hb_vector_t<hb_serialize_context_t::object_t *>& packed,
41928 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-serialize.hh b/src/third_party/harfbuzz-ng/src/…
41930 --- a/src/third_party/harfbuzz-ng/src/src/hb-serialize.hh
41931 +++ b/src/third_party/harfbuzz-ng/src/src/hb-serialize.hh
41932 @@ -36,6 +36,9 @@
41933 #include "hb-map.hh"
41934 #include "hb-pool.hh"
41937 +#include "hb-subset-repacker.h"
41942 @@ -70,6 +73,24 @@ struct hb_serialize_context_t
41967 @@ -95,6 +116,20 @@ struct hb_serialize_context_t
41988 @@ -279,7 +314,7 @@ struct hb_serialize_context_t
41992 - /* Set share to false when an object is unlikely sharable with others
41997 @@ -381,7 +416,7 @@ struct hb_serialize_context_t
42001 - // This is useful in certain situtations where there needs to be a specific ordering in the
42006 @@ -510,7 +545,7 @@ struct hb_serialize_context_t
42007 { return reinterpret_cast<Type *> (this->head); }
42010 - { return start_embed (hb_addressof (obj)); }
42015 @@ -548,7 +583,7 @@ struct hb_serialize_context_t
42019 - { return embed (hb_addressof (obj)); }
42024 @@ -595,19 +630,19 @@ struct hb_serialize_context_t
42028 - { return extend_size (hb_addressof (obj), size); }
42032 Type *extend_min (Type *obj) { return extend_size (obj, obj->min_size); }
42034 - Type *extend_min (Type &obj) { return extend_min (hb_addressof (obj)); }
42039 { return extend_size (obj, obj->get_size (std::forward<Ts> (ds)...)); }
42042 - { return extend (hb_addressof (obj), std::forward<Ts> (ds)...); }
42047 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-set.cc b/src/third_party/harfbuzz-ng/src/src/hb
42049 --- a/src/third_party/harfbuzz-ng/src/src/hb-set.cc
42050 +++ b/src/third_party/harfbuzz-ng/src/src/hb-set.cc
42051 @@ -256,6 +256,29 @@ hb_set_add (hb_set_t *set,
42052 set->add (codepoint);
42072 + /* Immutible-safe. */
42073 + set->add_sorted_array (sorted_codepoints,
42081 @@ -591,3 +614,28 @@ hb_set_previous_range (const hb_set_t *set,
42083 return set->previous_range (first, last);
42108 + return set->next_many (codepoint, out, size);
42110 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-set.h b/src/third_party/harfbuzz-ng/src/src/hb-
42112 --- a/src/third_party/harfbuzz-ng/src/src/hb-set.h
42113 +++ b/src/third_party/harfbuzz-ng/src/src/hb-set.h
42114 @@ -110,6 +110,11 @@ hb_set_add_range (hb_set_t *set,
42126 @@ -180,6 +185,12 @@ hb_set_previous_range (const hb_set_t *set,
42139 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-set.hh b/src/third_party/harfbuzz-ng/src/src/hb
42141 --- a/src/third_party/harfbuzz-ng/src/src/hb-set.hh
42142 +++ b/src/third_party/harfbuzz-ng/src/src/hb-set.hh
42143 @@ -109,6 +109,7 @@ struct hb_sparseset_t
42151 @@ -138,6 +139,8 @@ struct hb_sparseset_t
42160 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-shape.cc b/src/third_party/harfbuzz-ng/src/src/…
42162 --- a/src/third_party/harfbuzz-ng/src/src/hb-shape.cc
42163 +++ b/src/third_party/harfbuzz-ng/src/src/hb-shape.cc
42164 @@ -126,6 +126,13 @@ hb_shape_full (hb_font_t *font,
42169 + if (buffer->flags & HB_BUFFER_FLAG_VERIFY)
42172 + hb_buffer_append (text_buffer, buffer, 0, -1);
42175 hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached2 (font->face, &buffer->props,
42177 font->coords, font->num_coords,
42178 @@ -133,6 +140,17 @@ hb_shape_full (hb_font_t *font,
42184 + if (res && !buffer->verify (text_buffer,
42196 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-static.cc b/src/third_party/harfbuzz-ng/src/src…
42198 --- a/src/third_party/harfbuzz-ng/src/src/hb-static.cc
42199 +++ b/src/third_party/harfbuzz-ng/src/src/hb-static.cc
42200 @@ -33,6 +33,7 @@
42201 #include "hb-aat-layout-feat-table.hh"
42202 #include "hb-ot-layout-common.hh"
42203 #include "hb-ot-cmap-table.hh"
42204 +#include "hb-ot-glyf-table.hh"
42205 #include "hb-ot-head-table.hh"
42206 #include "hb-ot-maxp-table.hh"
42208 @@ -55,17 +56,43 @@ const unsigned char _hb_Null_AAT_Lookup[2] = {0xFF, 0xFF};
42218 + unsigned indexToLocFormat = face->table.head->indexToLocFormat;
42223 + hb_blob_t *loca_blob = face->table.loca.get_blob ();
42224 + ret = hb_max (1u, loca_blob->length / (short_offset ? 2 : 4)) - 1;
42234 + return face->table.maxp->get_num_glyphs ();
42240 - hb_sanitize_context_t c = hb_sanitize_context_t ();
42241 - c.set_num_glyphs (0); /* So we don't recurse ad infinitum. */
42242 - hb_blob_t *maxp_blob = c.reference_table<OT::maxp> (this);
42243 - const OT::maxp *maxp_table = maxp_blob->as<OT::maxp> ();
42252 - unsigned int ret = maxp_table->get_num_glyphs ();
42254 - hb_blob_destroy (maxp_blob);
42258 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-style.cc b/src/third_party/harfbuzz-ng/src/src/…
42260 --- a/src/third_party/harfbuzz-ng/src/src/hb-style.cc
42261 +++ b/src/third_party/harfbuzz-ng/src/src/hb-style.cc
42262 @@ -46,13 +46,13 @@
42266 - return tanf (a * float (M_PI / 180.));
42267 + return tanf (a * float (-M_PI / 180.));
42273 - return atanf (r) * float (180. / M_PI);
42274 + return atanf (r) * float (-180. / M_PI);
42278 @@ -72,8 +72,7 @@ float
42282 - return _hb_angle_to_ratio (hb_style_get_value (font, HB_STYLE_TAG_SLANT_ANGLE))
42283 - + font->slant;
42286 hb_face_t *face = font->face;
42288 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-style.h b/src/third_party/harfbuzz-ng/src/src/h…
42290 --- a/src/third_party/harfbuzz-ng/src/src/hb-style.h
42291 +++ b/src/third_party/harfbuzz-ng/src/src/hb-style.h
42292 @@ -43,8 +43,10 @@ HB_BEGIN_DECLS
42294 * must be greater than -90 and less than +90. Values can be interpreted as
42295 * the angle, in counter-clockwise degrees, of oblique slant from whatever the
42296 - * designer considers to be upright for that font design.
42297 + * designer considers to be upright for that font design. Typical right-leaning
42298 + * Italic fonts have a negative slant angle (typically around -12)
42300 + * Typical right-leaning Italic fonts have a positive slant ratio (typically around 0.2)
42302 * Non-zero. Values can be interpreted as a percentage of whatever the font
42304 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff-common.hh b/src/third_party/harfbuzz
42306 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff-common.hh
42307 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-cff-common.hh
42308 @@ -275,60 +275,36 @@ struct subr_flattener_t
42312 - subr_closures_t () : valid (false), global_closure (nullptr)
42313 - { local_closures.init (); }
42314 -
42315 - void init (unsigned int fd_count)
42319 - global_closure = hb_set_create ();
42320 - if (global_closure == hb_set_get_empty ())
42321 - valid = false;
42324 -
42325 - for (unsigned int i = 0; i < local_closures.length; i++)
42326 - {
42327 - local_closures[i] = hb_set_create ();
42328 - if (local_closures[i] == hb_set_get_empty ())
42329 - valid = false;
42330 - }
42331 - }
42332 -
42333 - void fini ()
42334 - {
42335 - hb_set_destroy (global_closure);
42336 - for (unsigned int i = 0; i < local_closures.length; i++)
42337 - hb_set_destroy (local_closures[i]);
42338 - local_closures.fini ();
42343 - hb_set_clear (global_closure);
42346 - hb_set_clear (local_closures[i]);
42352 - hb_set_t *global_closure;
42353 - hb_vector_t<hb_set_t *> local_closures;
42362 - op_str_t::init ();
42369 - void fini () { op_str_t::fini (); }
42370 -
42374 @@ -416,16 +392,6 @@ struct parsed_cs_str_t : parsed_values_t<parsed_cs_op_t>
42378 - void init (unsigned int len_ = 0)
42379 - {
42380 - SUPER::init ();
42381 - if (unlikely (!resize (len_)))
42382 - return;
42383 - for (unsigned int i = 0; i < length; i++)
42384 - (*this)[i].init ();
42385 - }
42386 - void fini () { SUPER::fini_deep (); }
42387 -
42391 @@ -496,7 +462,7 @@ struct subr_subset_param_t
42395 - void create (hb_set_t *closure)
42400 @@ -526,19 +492,9 @@ struct subr_remap_t : hb_inc_bimap_t
42404 - subr_remaps_t ()
42407 - global_remap.init ();
42408 - local_remaps.init ();
42409 - }
42410 -
42411 - ~subr_remaps_t () { fini (); }
42412 -
42413 - void init (unsigned int fdCount)
42414 - {
42415 - if (unlikely (!local_remaps.resize (fdCount))) return;
42416 - for (unsigned int i = 0; i < fdCount; i++)
42417 - local_remaps[i].init ();
42422 @@ -548,15 +504,9 @@ struct subr_remaps_t
42426 - global_remap.create (closures.global_closure);
42429 - local_remaps[i].create (closures.local_closures[i]);
42430 - }
42431 -
42432 - void fini ()
42433 - {
42434 - global_remap.fini ();
42435 - local_remaps.fini_deep ();
42440 @@ -567,21 +517,8 @@ template <typename SUBSETTER, typename SUBRS, typename ACC, typename ENV, type…
42444 - : acc (acc_), plan (plan_)
42445 - {
42446 - parsed_charstrings.init ();
42447 - parsed_global_subrs.init ();
42448 - parsed_local_subrs.init ();
42449 - }
42450 -
42451 - ~subr_subsetter_t ()
42452 - {
42453 - closures.fini ();
42454 - remaps.fini ();
42455 - parsed_charstrings.fini_deep ();
42456 - parsed_global_subrs.fini_deep ();
42457 - parsed_local_subrs.fini_deep ();
42458 - }
42462 /* Subroutine subsetting with --no-desubroutinize runs in phases:
42464 @@ -599,11 +536,8 @@ struct subr_subsetter_t
42468 - closures.init (acc.fdCount);
42469 - remaps.init (acc.fdCount);
42470 -
42471 - parsed_charstrings.init (plan->num_output_glyphs ());
42472 - parsed_global_subrs.init (acc.globalSubrs->count);
42473 + parsed_charstrings.resize (plan->num_output_glyphs ());
42474 + parsed_global_subrs.resize (acc.globalSubrs->count);
42478 @@ -615,7 +549,7 @@ struct subr_subsetter_t
42482 - parsed_local_subrs[i].init (acc.privateDicts[i].localSubrs->count);
42483 + parsed_local_subrs[i].resize (acc.privateDicts[i].localSubrs->count);
42487 @@ -638,7 +572,7 @@ struct subr_subsetter_t
42491 - closures.global_closure, closures.local_closures[fd],
42493 plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
42496 @@ -662,7 +596,7 @@ struct subr_subsetter_t
42500 - closures.global_closure, closures.local_closures[fd],
42502 plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
42505 @@ -687,7 +621,7 @@ struct subr_subsetter_t
42509 - closures.global_closure, closures.local_closures[fd],
42511 plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
42514 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff1.cc b/src/third_party/harfbuzz-ng/sr…
42516 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff1.cc
42517 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-cff1.cc
42518 @@ -362,43 +362,11 @@ struct cff1_subr_subsetter_t : subr_subsetter_t<cff1_subr_subsetter_t, CFF1Su…
42522 - : info (),
42523 - orig_fdcount (0),
42524 - subset_fdcount (1),
42525 - subset_fdselect_format (0),
42526 - drop_hints (false),
42527 - desubroutinize(false)
42529 - topdict_mod.init ();
42530 - subset_fdselect_ranges.init ();
42531 - fdmap.init ();
42532 - subset_charstrings.init ();
42533 - subset_globalsubrs.init ();
42534 - subset_localsubrs.init ();
42535 - fontdicts_mod.init ();
42536 - subset_enc_code_ranges.init ();
42537 - subset_enc_supp_codes.init ();
42538 - subset_charset_ranges.init ();
42539 - sidmap.init ();
42544 - ~cff_subset_plan ()
42545 - {
42546 - topdict_mod.fini ();
42547 - subset_fdselect_ranges.fini ();
42548 - fdmap.fini ();
42549 - subset_charstrings.fini_deep ();
42550 - subset_globalsubrs.fini_deep ();
42551 - subset_localsubrs.fini_deep ();
42552 - fontdicts_mod.fini ();
42553 - subset_enc_code_ranges.fini ();
42554 - subset_enc_supp_codes.fini ();
42555 - subset_charset_ranges.fini ();
42556 - sidmap.fini ();
42557 - }
42558 -
42562 @@ -672,9 +640,9 @@ struct cff_subset_plan {
42566 - unsigned int orig_fdcount;
42567 - unsigned int subset_fdcount;
42568 - unsigned int subset_fdselect_format;
42575 @@ -686,7 +654,7 @@ struct cff_subset_plan {
42579 - bool drop_hints;
42584 @@ -702,7 +670,7 @@ struct cff_subset_plan {
42588 - bool desubroutinize;
42593 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff2.cc b/src/third_party/harfbuzz-ng/sr…
42595 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff2.cc
42596 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-cff2.cc
42597 @@ -233,29 +233,6 @@ struct cff2_subr_subsetter_t : subr_subsetter_t<cff2_subr_subsetter_t, CFF2Sub…
42601 - cff2_subset_plan ()
42602 - : orig_fdcount (0),
42603 - subset_fdcount(1),
42604 - subset_fdselect_size (0),
42605 - subset_fdselect_format (0),
42606 - drop_hints (false),
42607 - desubroutinize (false)
42608 - {
42609 - subset_fdselect_ranges.init ();
42610 - fdmap.init ();
42611 - subset_charstrings.init ();
42612 - subset_globalsubrs.init ();
42613 - subset_localsubrs.init ();
42614 - }
42615 -
42616 - ~cff2_subset_plan ()
42617 - {
42618 - subset_fdselect_ranges.fini ();
42619 - fdmap.fini ();
42620 - subset_charstrings.fini_deep ();
42621 - subset_globalsubrs.fini_deep ();
42622 - subset_localsubrs.fini_deep ();
42623 - }
42627 @@ -320,10 +297,10 @@ struct cff2_subset_plan {
42631 - unsigned int orig_fdcount;
42632 - unsigned int subset_fdcount;
42633 - unsigned int subset_fdselect_size;
42634 - unsigned int subset_fdselect_format;
42642 @@ -332,8 +309,8 @@ struct cff2_subset_plan {
42646 - bool drop_hints;
42647 - bool desubroutinize;
42653 @@ -473,12 +450,8 @@ _hb_subset_cff2 (const OT::cff2::accelerator_subset_t &acc,
42657 - OT::cff2::accelerator_subset_t acc;
42658 - acc.init (c->plan->source);
42659 - bool result = likely (acc.is_valid ()) && _hb_subset_cff2 (acc, c);
42660 - acc.fini ();
42661 -
42662 - return result;
42663 + OT::cff2::accelerator_subset_t acc (c->plan->source);
42668 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.cc b/src/third_party/harfbuzz-ng/sr…
42670 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.cc
42671 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.cc
42672 @@ -40,6 +40,8 @@
42673 #include "hb-ot-stat-table.hh"
42674 #include "hb-ot-math-table.hh"
42681 @@ -111,7 +113,7 @@ static void _collect_layout_indices (hb_face_t *face,
42685 -
42690 @@ -228,10 +230,8 @@ _cmap_closure (hb_face_t *face,
42694 - OT::cmap::accelerator_t cmap;
42695 - cmap.init (face);
42697 cmap.table->closure_glyphs (unicodes, glyphset);
42698 - cmap.fini ();
42702 @@ -239,8 +239,7 @@ static void _colr_closure (hb_face_t *face,
42706 - OT::COLR::accelerator_t colr;
42707 - colr.init (face);
42712 @@ -252,9 +251,9 @@ static void _colr_closure (hb_face_t *face,
42714 for (hb_codepoint_t gid : glyphs_colred->iter ())
42716 -
42718 glyphs_colred->union_ (glyphset_colrv0);
42719 -
42724 @@ -263,7 +262,6 @@ static void _colr_closure (hb_face_t *face,
42728 - colr.fini ();
42732 @@ -294,8 +292,7 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes,
42736 - OT::cmap::accelerator_t cmap;
42737 - cmap.init (plan->source);
42738 + OT::cmap::accelerator_t cmap (plan->source);
42742 @@ -343,8 +340,6 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes,
42744 + plan->codepoint_to_glyph->keys () | hb_sink (plan->unicodes);
42745 + plan->codepoint_to_glyph->values () | hb_sink (plan->_glyphset_gsub);
42746 -
42747 - cmap.fini ();
42751 @@ -353,13 +348,9 @@ _populate_gids_to_retain (hb_subset_plan_t* plan,
42755 - OT::glyf::accelerator_t glyf;
42756 -#ifndef HB_NO_SUBSET_CFF
42757 - OT::cff1::accelerator_t cff;
42758 -#endif
42759 - glyf.init (plan->source);
42760 + OT::glyf::accelerator_t glyf (plan->source);
42762 - cff.init (plan->source);
42763 + OT::cff1::accelerator_t cff (plan->source);
42766 plan->_glyphset_gsub->add (0); // Not-def
42767 @@ -369,7 +360,7 @@ _populate_gids_to_retain (hb_subset_plan_t* plan,
42771 - _closure_glyphs_lookups_features<OT::GSUB> (
42773 plan->source,
42774 plan->_glyphset_gsub,
42775 plan->layout_features,
42776 @@ -419,11 +410,6 @@ _populate_gids_to_retain (hb_subset_plan_t* plan,
42777 plan->layout_variation_indices,
42778 plan->layout_variation_idx_map);
42780 -
42781 -#ifndef HB_NO_SUBSET_CFF
42782 - cff.fini ();
42783 -#endif
42784 - glyf.fini ();
42788 @@ -474,7 +460,7 @@ _nameid_closure (hb_face_t *face,
42792 - * hb_subset_plan_create:
42797 @@ -483,17 +469,18 @@ _nameid_closure (hb_face_t *face,
42801 - * hb_subset_plan_destroy().
42805 - * Since: 1.7.5
42809 -hb_subset_plan_create (hb_face_t *face,
42810 - const hb_subset_input_t *input)
42816 - return const_cast<hb_subset_plan_t *> (&Null (hb_subset_plan_t));
42819 plan->successful = true;
42820 plan->flags = input->flags;
42821 @@ -530,8 +517,9 @@ hb_subset_plan_create (hb_face_t *face,
42822 plan->layout_variation_indices = hb_set_create ();
42823 plan->layout_variation_idx_map = hb_map_create ();
42825 - if (plan->in_error ()) {
42826 - return plan;
42827 + if (unlikely (plan->in_error ())) {
42832 _populate_unicodes_to_retain (input->sets.unicodes, input->sets.glyphs, plan);
42833 @@ -548,6 +536,10 @@ hb_subset_plan_create (hb_face_t *face,
42834 plan->reverse_glyph_map,
42835 &plan->_num_output_glyphs);
42837 + if (unlikely (plan->in_error ())) {
42844 @@ -558,7 +550,7 @@ hb_subset_plan_create (hb_face_t *face,
42848 - * Since: 1.7.5
42853 @@ -612,3 +604,116 @@ hb_subset_plan_destroy (hb_subset_plan_t *plan)
42873 + return plan->glyph_map;
42891 + return plan->reverse_glyph_map;
42909 + return plan->codepoint_to_glyph;
42931 + * @key: The user-data key to set
42936 + * Attaches a user-data key/data pair to the given subset plan object.
42955 + * @key: The user-data key to query
42970 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.hh b/src/third_party/harfbuzz-ng/sr…
42972 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.hh
42973 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.hh
42974 @@ -198,13 +198,4 @@ struct hb_subset_plan_t
42978 -typedef struct hb_subset_plan_t hb_subset_plan_t;
42979 -
42980 -HB_INTERNAL hb_subset_plan_t *
42981 -hb_subset_plan_create (hb_face_t *face,
42982 - const hb_subset_input_t *input);
42983 -
42984 -HB_INTERNAL void
42985 -hb_subset_plan_destroy (hb_subset_plan_t *plan);
42986 -
42988 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.cc b/src/third_party/harfbuzz-n…
42991 --- /dev/null
42992 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.cc
42993 @@ -0,0 +1,49 @@
43018 +#include "hb-repacker.hh"
43043 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.h b/src/third_party/harfbuzz-ng…
43046 --- /dev/null
43047 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.h
43048 @@ -0,0 +1,80 @@
43129 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset.cc b/src/third_party/harfbuzz-ng/src/src…
43131 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset.cc
43132 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset.cc
43133 @@ -55,6 +55,8 @@
43134 #include "hb-ot-math-table.hh"
43135 #include "hb-repacker.hh"
43140 * SECTION:hb-subset
43141 * @title: hb-subset
43142 @@ -312,7 +314,7 @@ _subset_table (hb_subset_plan_t *plan, hb_tag_t tag)
43146 - case HB_OT_TAG_GSUB: return _subset<const OT::GSUB> (plan);
43151 @@ -343,9 +345,33 @@ hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
43155 - hb_subset_plan_t *plan = hb_subset_plan_create (source, input);
43156 - if (unlikely (plan->in_error ())) {
43157 - hb_subset_plan_destroy (plan);
43184 + if (unlikely (!plan || plan->in_error ())) {
43188 @@ -353,7 +379,7 @@ hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
43192 - while ((hb_face_get_table_tags (source, offset, &num_tables, table_tags), num_tables))
43193 + while ((hb_face_get_table_tags (plan->source, offset, &num_tables, table_tags), num_tables))
43197 @@ -367,8 +393,5 @@ hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
43201 - hb_face_t *result = success ? hb_face_reference (plan->dest) : nullptr;
43202 -
43203 - hb_subset_plan_destroy (plan);
43204 - return result;
43205 + return success ? hb_face_reference (plan->dest) : nullptr;
43207 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset.h b/src/third_party/harfbuzz-ng/src/src/…
43209 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset.h
43210 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset.h
43211 @@ -39,6 +39,15 @@ HB_BEGIN_DECLS
43227 @@ -124,7 +133,7 @@ hb_subset_input_set_user_data (hb_subset_input_t *input,
43231 - hb_user_data_key_t *key);
43236 @@ -145,6 +154,41 @@ hb_subset_input_set_flags (hb_subset_input_t *input,
43278 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-uniscribe.cc b/src/third_party/harfbuzz-ng/src/…
43280 --- a/src/third_party/harfbuzz-ng/src/src/hb-uniscribe.cc
43281 +++ b/src/third_party/harfbuzz-ng/src/src/hb-uniscribe.cc
43282 @@ -878,7 +878,8 @@ retry:
43286 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
43287 + buffer->clear_glyph_flags ();
43288 + buffer->unsafe_to_break ();
43292 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-vector.hh b/src/third_party/harfbuzz-ng/src/src…
43294 --- a/src/third_party/harfbuzz-ng/src/src/hb-vector.hh
43295 +++ b/src/third_party/harfbuzz-ng/src/src/hb-vector.hh
43296 @@ -32,11 +32,14 @@
43297 #include "hb-null.hh"
43300 -template <typename Type>
43301 -struct hb_vector_t
43313 @@ -82,16 +85,10 @@ struct hb_vector_t
43321 - void fini_deep ()
43322 - {
43323 - unsigned int count = length;
43324 - for (unsigned int i = 0; i < count; i++)
43325 - arrayZ[i].fini ();
43326 - fini ();
43327 - }
43331 @@ -152,24 +149,24 @@ struct hb_vector_t
43335 - hb_array_t< Type> as_array () { return hb_array (arrayZ, length); }
43336 - hb_array_t<const Type> as_array () const { return hb_array (arrayZ, length); }
43341 - typedef hb_array_t<const Type> iter_t;
43342 - typedef hb_array_t< Type> writer_t;
43350 - hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int count) const
43353 - hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int *count = nullptr /* IN…
43356 - hb_array_t<Type> sub_array (unsigned int start_offset, unsigned int count)
43359 - hb_array_t<Type> sub_array (unsigned int start_offset, unsigned int *count = nullptr /* IN/OUT *…
43364 @@ -192,6 +189,7 @@ struct hb_vector_t
43372 @@ -204,6 +202,92 @@ struct hb_vector_t
43409 + memset (arrayZ + length, 0, (size - length) * sizeof (*arrayZ));
43421 + new (std::addressof (arrayZ[length - 1])) Type ();
43439 + arrayZ[(unsigned) length - 1].~Type ();
43440 + length--;
43449 + memmove (static_cast<void *> (&arrayZ[i - 1]),
43451 + (length - i) * sizeof (Type));
43459 + arrayZ[i - 1] = std::move (arrayZ[i]);
43465 @@ -225,7 +309,7 @@ struct hb_vector_t
43469 - new_array = (Type *) hb_realloc (arrayZ, new_allocated * sizeof (Type));
43474 @@ -246,7 +330,9 @@ struct hb_vector_t
43478 - memset (arrayZ + length, 0, (size - length) * sizeof (*arrayZ));
43485 @@ -255,48 +341,38 @@ struct hb_vector_t
43489 - return std::move (arrayZ[--length]); /* Does this move actually work? */
43490 + Type v = std::move (arrayZ[length - 1]);
43491 + arrayZ[length - 1].~Type ();
43492 + length--;
43500 - memmove (static_cast<void *> (&arrayZ[i]),
43501 - static_cast<void *> (&arrayZ[i + 1]),
43502 - (length - i - 1) * sizeof (Type));
43505 length--;
43511 - if (size < length)
43512 - length = size;
43513 - }
43517 - template <typename T>
43518 - Type *find (T v)
43519 - {
43520 - for (unsigned int i = 0; i < length; i++)
43521 - if (arrayZ[i] == v)
43522 - return &arrayZ[i];
43523 - return nullptr;
43524 - }
43525 - template <typename T>
43526 - const Type *find (T v) const
43527 - {
43528 - for (unsigned int i = 0; i < length; i++)
43529 - if (arrayZ[i] == v)
43530 - return &arrayZ[i];
43531 - return nullptr;
43539 void qsort (unsigned int start = 0, unsigned int end = (unsigned int) -1)
43546 @@ -306,47 +382,25 @@ struct hb_vector_t
43550 -};
43552 -template <typename Type>
43553 -struct hb_sorted_vector_t : hb_vector_t<Type>
43554 -{
43555 - hb_sorted_vector_t () = default;
43556 - ~hb_sorted_vector_t () = default;
43557 - hb_sorted_vector_t (hb_sorted_vector_t& o) = default;
43558 - hb_sorted_vector_t (hb_sorted_vector_t &&o) = default;
43559 - hb_sorted_vector_t (std::initializer_list<Type> lst) : hb_vector_t<Type> (lst) {}
43560 - template <typename Iterable,
43561 - hb_requires (hb_is_iterable (Iterable))>
43562 - hb_sorted_vector_t (const Iterable &o) : hb_vector_t<Type> (o) {}
43563 - hb_sorted_vector_t& operator = (const hb_sorted_vector_t &o) = default;
43564 - hb_sorted_vector_t& operator = (hb_sorted_vector_t &&o) = default;
43565 - friend void swap (hb_sorted_vector_t& a, hb_sorted_vector_t& b)
43566 - { hb_swap ((hb_vector_t<Type>&) (a), (hb_vector_t<Type>&) (b)); }
43567 -
43568 - hb_sorted_array_t< Type> as_array () { return hb_sorted_array (this->arrayZ, this->le…
43569 - hb_sorted_array_t<const Type> as_array () const { return hb_sorted_array (this->arrayZ, this->le…
43570 -
43571 - /* Iterator. */
43572 - typedef hb_sorted_array_t<const Type> const_iter_t;
43573 - typedef hb_sorted_array_t< Type> iter_t;
43574 - const_iter_t iter () const { return as_array (); }
43575 - const_iter_t citer () const { return as_array (); }
43576 - iter_t iter () { return as_array (); }
43577 - operator iter_t () { return iter (); }
43578 - operator const_iter_t () const { return iter (); }
43579 -
43580 - template <typename T>
43586 - template <typename T>
43591 - template <typename T>
43596 unsigned int to_store = (unsigned int) -1) const
43604 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-version.h b/src/third_party/harfbuzz-ng/src/src…
43606 --- a/src/third_party/harfbuzz-ng/src/src/hb-version.h
43607 +++ b/src/third_party/harfbuzz-ng/src/src/hb-version.h
43608 @@ -41,13 +41,13 @@ HB_BEGIN_DECLS
43610 * The major component of the library version available at compile-time.
43612 -#define HB_VERSION_MAJOR 3
43617 * The minor component of the library version available at compile-time.
43619 -#define HB_VERSION_MINOR 2
43624 @@ -60,7 +60,7 @@ HB_BEGIN_DECLS
43626 * A string literal containing the library version available at compile-time.
43628 -#define HB_VERSION_STRING "3.2.0"
43633 diff --git a/src/third_party/harfbuzz-ng/src/src/hb.hh b/src/third_party/harfbuzz-ng/src/src/hb.hh
43635 --- a/src/third_party/harfbuzz-ng/src/src/hb.hh
43636 +++ b/src/third_party/harfbuzz-ng/src/src/hb.hh
43637 @@ -447,6 +447,7 @@ static int HB_UNUSED _hb_errno = 0;
43645 @@ -457,6 +458,7 @@ static int HB_UNUSED _hb_errno = 0;
43653 diff --git a/src/third_party/harfbuzz-ng/src/src/main.cc b/src/third_party/harfbuzz-ng/src/src/main…
43655 --- a/src/third_party/harfbuzz-ng/src/src/main.cc
43656 +++ b/src/third_party/harfbuzz-ng/src/src/main.cc
43657 @@ -42,7 +42,7 @@
43661 -#if !defined(HB_NO_COLOR) && !defined(HB_NO_DRAW) && defined(HB_EXPERIMENTAL_API)
43666 @@ -129,48 +129,60 @@ png_dump (hb_face_t *face, unsigned face_index)
43670 -struct user_data_t
43678 -move_to (hb_position_t to_x, hb_position_t to_y, user_data_t &user_data)
43684 - fprintf (user_data.f, "M%d,%d", to_x, user_data.ascender - to_y);
43685 + fprintf (draw_data->f, "M%g,%g", to_x, draw_data->ascender - to_y);
43689 -line_to (hb_position_t to_x, hb_position_t to_y, user_data_t &user_data)
43695 - fprintf (user_data.f, "L%d,%d", to_x, user_data.ascender - to_y);
43696 + fprintf (draw_data->f, "L%g,%g", to_x, draw_data->ascender - to_y);
43700 -quadratic_to (hb_position_t control_x, hb_position_t control_y,
43701 - hb_position_t to_x, hb_position_t to_y,
43702 - user_data_t &user_data)
43709 - fprintf (user_data.f, "Q%d,%d %d,%d", control_x, user_data.ascender - control_y,
43710 - to_x, user_data.ascender - to_y);
43711 + fprintf (draw_data->f, "Q%g,%g %g,%g", control_x, draw_data->ascender - control_y,
43712 + to_x, draw_data->ascender - to_y);
43716 -cubic_to (hb_position_t control1_x, hb_position_t control1_y,
43717 - hb_position_t control2_x, hb_position_t control2_y,
43718 - hb_position_t to_x, hb_position_t to_y,
43719 - user_data_t &user_data)
43727 - fprintf (user_data.f, "C%d,%d %d,%d %d,%d", control1_x, user_data.ascender - control1_y,
43728 - control2_x, user_data.ascender - control2_y,
43729 - to_x, user_data.ascender - to_y);
43730 + fprintf (draw_data->f, "C%g,%g %g,%g %g,%g", control1_x, draw_data->ascender - control1_y,
43731 + control2_x, draw_data->ascender - control2_y,
43732 + to_x, draw_data->ascender - to_y);
43736 -close_path (user_data_t &user_data)
43741 - fprintf (user_data.f, "Z");
43742 + fprintf (draw_data->f, "Z");
43746 @@ -218,9 +230,9 @@ layered_glyph_dump (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index
43749 extents.x_bearing + extents.width, -extents.height);
43750 - user_data_t user_data;
43751 - user_data.ascender = extents.y_bearing;
43752 - user_data.f = f;
43759 @@ -232,8 +244,7 @@ layered_glyph_dump (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index
43761 fprintf (f, "fill-opacity=\"%.3f\"", (double) hb_color_get_alpha (color) / 255.);
43763 - if (!hb_font_draw_glyph (font, layers[layer].glyph, funcs, &user_data))
43764 - printf ("Failed to decompose layer %d while %d\n", layers[layer].glyph, gid);
43769 @@ -269,11 +280,10 @@ dump_glyphs (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index)
43772 extents.x_bearing + extents.width, font_extents.ascender - font_extents.descender);
43773 - user_data_t user_data;
43774 - user_data.ascender = font_extents.ascender;
43775 - user_data.f = f;
43776 - if (!hb_font_draw_glyph (font, gid, funcs, &user_data))
43777 - printf ("Failed to decompose gid: %d\n", gid);
43785 @@ -300,11 +310,11 @@ dump_glyphs (hb_blob_t *blob, const char *font_name)
43789 - hb_draw_funcs_set_move_to_func (funcs, (hb_draw_move_to_func_t) move_to);
43790 - hb_draw_funcs_set_line_to_func (funcs, (hb_draw_line_to_func_t) line_to);
43791 - hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) quadratic_to);
43792 - hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) cubic_to);
43793 - hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) close_path);
43802 @@ -512,7 +522,7 @@ main (int argc, char **argv)
43806 -#if !defined(HB_NO_COLOR) && !defined(HB_NO_DRAW) && defined(HB_EXPERIMENTAL_API)
43811 diff --git a/src/third_party/harfbuzz-ng/src/src/meson.build b/src/third_party/harfbuzz-ng/src/src/…
43813 --- a/src/third_party/harfbuzz-ng/src/src/meson.build
43814 +++ b/src/third_party/harfbuzz-ng/src/src/meson.build
43815 @@ -29,6 +29,7 @@ hb_base_sources = files(
43816 'hb-blob.cc',
43817 'hb-blob.hh',
43818 'hb-buffer-serialize.cc',
43819 + 'hb-buffer-verify.cc',
43820 'hb-buffer.cc',
43821 'hb-buffer.hh',
43822 'hb-cache.hh',
43823 @@ -54,7 +55,6 @@ hb_base_sources = files(
43824 'hb-map.cc',
43825 'hb-map.hh',
43826 'hb-meta.hh',
43827 - 'hb-ms-feature-ranges.cc',
43828 'hb-ms-feature-ranges.hh',
43829 'hb-mutex.hh',
43830 'hb-null.hh',
43831 @@ -92,6 +92,28 @@ hb_base_sources = files(
43832 'hb-ot-layout-gdef-table.hh',
43833 'hb-ot-layout-gpos-table.hh',
43834 'hb-ot-layout-gsub-table.hh',
43857 'hb-ot-layout-gsubgpos.hh',
43858 'hb-ot-layout-jstf-table.hh',
43859 'hb-ot-layout.cc',
43860 @@ -276,11 +298,15 @@ hb_subset_sources = files(
43861 'hb-subset-input.hh',
43862 'hb-subset-plan.cc',
43863 'hb-subset-plan.hh',
43864 + 'hb-subset-repacker.cc',
43865 'hb-subset.cc',
43866 'hb-subset.hh',
43869 -hb_subset_headers = files('hb-subset.h')
43871 + 'hb-subset.h',
43872 + 'hb-subset-repacker.h'
43876 'hb-gobject-structs.cc'
43877 @@ -486,13 +512,15 @@ if get_option('tests').enabled()
43879 'test-algs': ['test-algs.cc', 'hb-static.cc'],
43880 'test-array': ['test-array.cc'],
43881 - 'test-repacker': ['test-repacker.cc', 'hb-static.cc'],
43882 - 'test-priority-queue': ['test-priority-queue.cc', 'hb-static.cc'],
43883 'test-iter': ['test-iter.cc', 'hb-static.cc'],
43884 + 'test-machinery': ['test-machinery.cc', 'hb-static.cc'],
43885 'test-map': ['test-map.cc', 'hb-static.cc'],
43886 'test-number': ['test-number.cc', 'hb-number.cc'],
43887 'test-ot-tag': ['hb-ot-tag.cc'],
43888 + 'test-priority-queue': ['test-priority-queue.cc', 'hb-static.cc'],
43889 + 'test-repacker': ['test-repacker.cc', 'hb-static.cc'],
43890 'test-set': ['test-set.cc', 'hb-static.cc'],
43891 + 'test-serialize': ['test-serialize.cc', 'hb-static.cc'],
43892 'test-unicode-ranges': ['test-unicode-ranges.cc'],
43893 'test-vector': ['test-vector.cc', 'hb-static.cc'],
43894 'test-bimap': ['test-bimap.cc', 'hb-static.cc'],
43895 diff --git a/src/third_party/harfbuzz-ng/src/src/test-machinery.cc b/src/third_party/harfbuzz-ng/sr…
43898 --- /dev/null
43899 +++ b/src/third_party/harfbuzz-ng/src/src/test-machinery.cc
43900 @@ -0,0 +1,46 @@
43926 +#include "hb-machinery.hh"
43947 diff --git a/src/third_party/harfbuzz-ng/src/src/test-map.cc b/src/third_party/harfbuzz-ng/src/src/…
43949 --- a/src/third_party/harfbuzz-ng/src/src/test-map.cc
43950 +++ b/src/third_party/harfbuzz-ng/src/src/test-map.cc
43951 @@ -25,7 +25,9 @@
43954 #include "hb-map.hh"
43961 @@ -76,6 +78,14 @@ main (int argc, char **argv)
43976 @@ -108,5 +118,22 @@ main (int argc, char **argv)
43999 diff --git a/src/third_party/harfbuzz-ng/src/src/test-serialize.cc b/src/third_party/harfbuzz-ng/sr…
44002 --- /dev/null
44003 +++ b/src/third_party/harfbuzz-ng/src/src/test-serialize.cc
44004 @@ -0,0 +1,51 @@
44031 +#include "hb-serialize.hh"
44032 +#include "hb-ot-layout-common.hh"
44046 + c->serialize (&s, hb_iter (v));
44056 diff --git a/src/third_party/harfbuzz-ng/src/src/test-vector.cc b/src/third_party/harfbuzz-ng/src/s…
44058 --- a/src/third_party/harfbuzz-ng/src/src/test-vector.cc
44059 +++ b/src/third_party/harfbuzz-ng/src/src/test-vector.cc
44060 @@ -26,6 +26,7 @@
44062 #include "hb-vector.hh"
44063 #include "hb-set.hh"
44068 @@ -136,5 +137,18 @@ main (int argc, char **argv)
44087 diff --git a/src/third_party/harfbuzz-ng/src/subprojects/cairo.wrap b/src/third_party/harfbuzz-ng/s…
44089 --- a/src/third_party/harfbuzz-ng/src/subprojects/cairo.wrap
44090 +++ b/src/third_party/harfbuzz-ng/src/subprojects/cairo.wrap
44091 @@ -2,4 +2,7 @@
44095 -revision=1.17.4
44099 +dependency_names = cairo, cairo-ft
44100 diff --git a/src/third_party/harfbuzz-ng/src/subprojects/freetype2.wrap b/src/third_party/harfbuzz-
44102 --- a/src/third_party/harfbuzz-ng/src/subprojects/freetype2.wrap
44103 +++ b/src/third_party/harfbuzz-ng/src/subprojects/freetype2.wrap
44104 @@ -2,3 +2,7 @@
44107 revision=VER-2-11-0
44112 diff --git a/src/third_party/harfbuzz-ng/src/subprojects/glib.wrap b/src/third_party/harfbuzz-ng/sr…
44114 --- a/src/third_party/harfbuzz-ng/src/subprojects/glib.wrap
44115 +++ b/src/third_party/harfbuzz-ng/src/subprojects/glib.wrap
44116 @@ -4,3 +4,7 @@ url=https://gitlab.gnome.org/GNOME/glib.git
44118 push-url=git@gitlab.gnome.org:GNOME/glib.git
44122 +glib-2.0 = libglib_dep
44123 +gobject-2.0 = libgobject_dep
44124 diff --git a/src/third_party/harfbuzz-ng/src/test/api/Makefile.am b/src/third_party/harfbuzz-ng/src…
44126 --- a/src/third_party/harfbuzz-ng/src/test/api/Makefile.am
44127 +++ b/src/third_party/harfbuzz-ng/src/test/api/Makefile.am
44128 @@ -30,6 +30,8 @@ noinst_PROGRAMS = $(TEST_PROGS)
44130 test-aat-layout \
44131 test-baseline \
44132 + test-be-glyph-advance \
44133 + test-be-num-glyphs \
44134 test-blob \
44135 test-buffer \
44136 test-c \
44137 @@ -76,11 +78,15 @@ TEST_PROGS = \
44138 test-subset-gpos \
44139 test-subset-colr \
44140 test-subset-cbdt \
44141 + test-subset-repacker \
44142 test-unicode \
44143 test-var-coords \
44144 test-version \
44150 test_subset_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44151 test_subset_cmap_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44152 test_subset_drop_tables_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44153 @@ -100,6 +106,7 @@ test_subset_cbdt_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44154 test_subset_nameids_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44155 test_subset_gpos_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44156 test_subset_colr_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44157 +test_subset_repacker_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44161 @@ -123,6 +130,9 @@ endif
44169 test-ot-math \
44171 diff --git a/src/third_party/harfbuzz-ng/src/test/api/fonts/base2.ttf b/src/third_party/harfbuzz-ng…
44176 zc$}?Q+ix7z8UJQ>c72U6vDb03PB@$KC3t5yjuShEm|$jhy>U#)+D>3LKr-v~EyZ?B
44178 z)E#-x@B6;rIp6J^Gi%a_s2N`dHD%M8QEDWeNE?B+HJdv=MNz7Sd;oHNcIu@4hmSr6
44179 zSvvuF*YT;n{m=h>-X_woK=z7Dg%zr=`3LNOg?ylRaaBa#Y5EiFX~_26%KXyXgIhl$
44180 ziabNq5S=evSb@F?{7#J3^NW|~dUm}2E>Y+$$e%9E7G_$WyIjQlddPzdP(-c~{Auq&
44181 z?p#<}y%c_t5Q}E<{Ka#{0=)o4S_i%&ONC1-+Rqz5guDt_EEkq$yCx4`M6!ri`}4}V
44182 z3#+$&LH)o#WBbba*_AUl{_;!sLk?8tmDG9~X}4}sqwdn_P|vN;h-+4>9#XiTf{(WG
44184 z7l^`t{QSs&>%*U@6*qtM${(-Ps@CMuAVJ(|gXNm5$Vq*Fwpf`T#ASc{)3Sc1arj?U
44185 z72-P3CojGGYaajhn^)ib{K(D4@F$_GTwmqk{+|gvS;~gq(3kaPiiWNRBee&QuG1p_
44186 zaa8&Z?G03e^b+b!G#-rFY3kQ_ht-93BW&opac8dC<HxhwNX^xnt3gddSG6}Qxscut
44188 zo&7$I;9=<oS2yi<YF8#)Ida8ic_!`eVflJB1qw>%V}1{-epme>X~xKv;)!(wf3EG+
44189 zn+?68_qulLWof+T>y%y#&qOHACq~C!qtHI&&_#W8a-=rZyF1q2TvcU^jm!3&JF=Y<
44190 zMR%7-*ISQ;wNS|L$S}4VPsCu;gLA0}n{D}#n&#&1ZJqlgRUHYfH4-s*clR7@Yun#H
44193 zY)|bY&sw!Z6MfCy+yA-kh-zdNo#LHp)BvB>c2uxNyXoH*tm6!QTEQVo(>oPx;GC>h
44194 zaF|9ZRlyM;q9^DatmkNo3bafYaDU8VoQJeXXDLaOkmqsE7oj;%PeM8m)>+J0#?I--
44197 z!<Cn02}vj2OkM~azlMo%8JRle$^$XEC-2RP(n(k9U4`H<7R~8cJT56O$uZMq^xg67
44198 zq|_`ayt$;*Ei-P$lQLw9nYB=Blx#<~IKuO6UvG76zboWO-8ped$a)jNDa=SCcd4xF
44202 zX*!>uDd4J0<nxsb@?r-0n07uX!<Ik<MppqjRXI6VR++Y}Hf?kOQ@o^%sB)tcV#cqU
44203 zwgnqG-B=Jle@orV6lJ(K4x=MVq6A-lU$_eunsB{btT35(&3rsB<j9l@Ta4>c2_-43
44204 zELr0u$~e-h>eUcU+r)M;?Sj;&=cHCdAhN1ADQhgj(KaA0gQf+qAV<7BQ@pf_w$>`w
44206 zi(+4-ws}&6r4m}(Qcs}_yu{3Sz89Og(eiaYBWDWfq-?T46+$*TM|lANbVxR_GzqCm
44209 z0y|H^NoGwRnPd@v7TVjJb&nSML@g%j<w!bQ)-+9ZD{7HXdgg>Hx0<%d$Ode`EjZX7
44212 zfibzs*u7yq9~gy2vN3V5ggMu1L9U$W=KSKwPav+{$d5-8`SI9^{CMm_emr&~KOTFK
44214 z&BBn$H~f7WG0wh!z1Mz2B*R-z?(6l#S~TP0cH}JgZz|8dI0q~-pduf@Y5^znWuG{|
44216 z$nxEQ(vFo%Su=~v#KjvB*Dqd8Lz)(CMTH;6CDtalfo9-d?NT(qo@`m?BxXw~Q;6Xb
44218 z$#A?GQ-<+&h1qZlF<_6cygTO<5E@<t<|uk>!ow)Px@sNe1?%0#i5Xn35gcMPBa96f
44221 zT*Xnj&2e)vyj;a_KIQjmtvI)j-DaJP<!-aucb$8`8IC0%PTbF7+LDJ7CB(*i3`yOS
44222 ziiW0SA7*4!%Dg|jgUT21OU({a=M8G&_@r?1g7rr&zZNf@^(kL-OK1OIyO?w0du-Um
44223 zRkdlq#PgLnv$%jCPOMku2&6-axLK)7C7X>BjG+Y4;Mn752~K!RN)F<bAH9cu9Ls5~
44225 z7@TAdgD088;3;bjccBC10%;26tu-ysodODUPcu(r^bGS9dX{+#oo1dwXV_;3z+;~b
44227 zWfd2rbExs~Mgv!rBu4<B58z{f=eg)gvLRi-ySBnv4Ipz~P#mqoxroV+Y^?fCC8-&g
44228 z0?0Ei2axIC!a5bgw*$z8?*xzu-v#&Z#(LjVlA?b<fJ}cefK2}ZW>yG43?LI;3Lq1H
44229 z1n#37>%FWbMgMUCnf{XiGW`l>RtT>IkO`##GT~LLT&I5G%1Eqi=%Eb$d%`uCw-d5@
44235 diff --git a/src/third_party/harfbuzz-ng/src/test/api/fonts/notosansitalic.ttf b/src/third_party/ha…
44240 zc$|GyUu;@c82{aKFVM2Wu)@|ctQ1->k*>EFxKR3M16r<ZQ?{`-wboij8PwfEL#tWi
44244 zj@$T|@HTCa-l|rxg*OQQLfg4gxw?uBqx{&R9c)%sYJOjw;z<`N#--KP+PZNI3gI5E
44245 z2VWWTze5$yVu7V0vpfRAUC7{lOZXl=!XSJmd%Qa669I#&G(O_-p0LP68hp4#W!>Mc
44246 z@7A67#BKa|z(OJ$hKR-7#3VYs2R6^k=vSb8g2|kePk}U9IC~Mj)s40ef4yD10>55a
44248 z^K<K)S03!vAHL<hCykMv-OOO-Wqra2u#xloY}UAsGyKG9VF8MeBk3U<lWbBaldK&3
44252 zuEw%Ob$;ZTVc*c$@U%Xvs=Qjt+0Ay)gD7ANMWSIx`02RA%^Y!6rQ|-Zn?;ogmP}YF
44253 z1(%xl*!psJW+RTLx&*0zI-NV;Ke;&hTyE&tbl+4atT<Bx7ue3{q3rW4mYts~USA$B
44254 z#%J`j&a=v6)Gc)?{6L)s4)p1WP+xXCC5bC)%4fI#`EoN_Y@7-g0>`|m;K+=8G8I1g
44257 z-1iI~@O*4J3JoRtG(!KM?VtF+@$<x1u|f4LqmBk?c|9_QktC#%wncKCD(00mDaHvx
44258 YS(4~<UfB0qGg*yJ-rJk>yF`}w8&omq3IG5A
44263 diff --git a/src/third_party/harfbuzz-ng/src/test/api/fonts/repacker_expected.otf b/src/third_party…
44269 zZp-KtQHDd%`o{!>DB$9jK!8k~Gny?vvn=?R{AK2XUf8##o_pKOWqvp3oZs(v&UerG
44271 ziwm?+hnz*8V-qZuU**lIkmn*d+E7SbQN4+H3GES^-PgeFV9F3rqN(kc1{bg|AcRpg
44273 zd`eOttUy!9QH$@#KImDQ=S3puO_4}sHnuNX4fXTWkCrDq{WlQhbxCf@nm8%N-)643
44274 zK_5BA8kjHS>6lm-CT@X*KnYs1LRR257~}|O1}QRXl|rS|Fbo^(ac`N-d3)g*FhO4Q
44275 z9Fkw!Ln6{-aSO;y_(b<?f<(Ma2K0~y#3y)tcotG?@i`<e*CgWvQrska0vqM1mvOR;
44276 z0N+buSq4olqbO$XO{Rk9r7y<Dp<;%N7-k?Il44kKpU&Qgl~@5WtdjK?K>!bU;W#+K
44278 z#Tz9=Ras}ZH%jPW3V9t;NC!zFoeY{Hg|xDCgI19?1U-R3)N9wJ0(`czeweCmUs~Iz
44281 zpRVR5m#&V_kenyHmKCNQVbT2lT$uKSRpNN~&V2Y<_+WV5gE{WMT-=CyNi(9=E`_w~
44282 zQ>FhXN%lHC*+ale_uL5)QbG<-uIY8buAtwa+}hn5YEL^;V9r=Pa`muS{q+UP_12&A
44283 zcGkT?lgeyV+a~xAwY$e0!`04#>d(u53S8>G5&C)P;tyPSJaD0JYVg|8Y0LRT-_yrE
44284 zdp@b3{&K$UyPN%gwcqkjyd9Xb^-&U}Oo+k>&L0c}g2|rIBkr>TxBA%KojT2G=GqpW
44287 z`j75%|2IwFc5%ZW1-pkI_Et9tb%K#*@21%e)YMZo-SOVop!md(V%7~YV{9S3I6pr0
44288 oar3#FF0SpBms(!lZ0_EFX77oL=7F-wceqvK-EDZ5&VWwyFFBNnr~m)}
44293 diff --git a/src/third_party/harfbuzz-ng/src/test/api/hb-test.h b/src/third_party/harfbuzz-ng/src/t…
44295 --- a/src/third_party/harfbuzz-ng/src/test/api/hb-test.h
44296 +++ b/src/third_party/harfbuzz-ng/src/test/api/hb-test.h
44297 @@ -52,6 +52,17 @@ HB_BEGIN_DECLS
44315 diff --git a/src/third_party/harfbuzz-ng/src/test/api/meson.build b/src/third_party/harfbuzz-ng/src…
44317 --- a/src/third_party/harfbuzz-ng/src/test/api/meson.build
44318 +++ b/src/third_party/harfbuzz-ng/src/test/api/meson.build
44319 @@ -6,6 +6,8 @@ endif
44321 'test-aat-layout.c',
44322 'test-baseline.c',
44323 + 'test-be-glyph-advance.c',
44324 + 'test-be-num-glyphs.c',
44325 'test-blob.c',
44326 'test-buffer.c',
44327 'test-c.c',
44328 @@ -30,6 +32,7 @@ tests = [
44329 'test-ot-tag.c',
44330 'test-ot-extents-cff.c',
44331 'test-ot-metrics-tt-var.c',
44332 + 'test-subset-repacker.c',
44333 'test-set.c',
44334 'test-shape.c',
44335 'test-style.c',
44336 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-baseline.c b/src/third_party/harfbuzz-ng…
44338 --- a/src/third_party/harfbuzz-ng/src/test/api/test-baseline.c
44339 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-baseline.c
44340 @@ -41,6 +41,58 @@ test_ot_layout_base (void)
44399 @@ -51,6 +103,7 @@ main (int argc, char **argv)
44407 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-be-glyph-advance.c b/src/third_party/har…
44410 --- /dev/null
44411 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-be-glyph-advance.c
44412 @@ -0,0 +1,101 @@
44437 +#include "hb-test.h"
44459 + "\x01\x00" /* FWORD maxExtent; * horizontal: Max(lsb + (xMax - xMin)), */
44514 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-be-num-glyphs.c b/src/third_party/harfbu…
44517 --- /dev/null
44518 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-be-num-glyphs.c
44519 @@ -0,0 +1,71 @@
44544 +#include "hb-test.h"
44591 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-draw.c b/src/third_party/harfbuzz-ng/src…
44593 --- a/src/third_party/harfbuzz-ng/src/test/api/test-draw.c
44594 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-draw.c
44595 @@ -23,16 +23,19 @@
44598 #include "hb-test.h"
44603 +#include <hb-ft.h>
44606 -#ifdef HB_EXPERIMENTAL_API
44607 -typedef struct user_data_t
44613 -} user_data_t;
44618 @@ -47,8 +50,9 @@ static void _hb_reverse (char *buf, unsigned int len)
44619 start++; end--;
44622 -static unsigned _hb_itoa (int32_t num, char *buf)
44628 if (is_negative) num = -num;
44629 @@ -95,69 +99,81 @@ test_itoa (void)
44633 -move_to (hb_position_t to_x, hb_position_t to_y, user_data_t *user_data)
44640 - if (user_data->consumed + 2 * ITOA_BUF_SIZE + 4 > user_data->size) return;
44641 - user_data->str[user_data->consumed++] = 'M';
44642 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44643 - user_data->str[user_data->consumed++] = ',';
44644 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44645 + if (draw_data->consumed + 2 * ITOA_BUF_SIZE + 4 > draw_data->size) return;
44646 + draw_data->str[draw_data->consumed++] = 'M';
44647 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44648 + draw_data->str[draw_data->consumed++] = ',';
44649 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44653 -line_to (hb_position_t to_x, hb_position_t to_y, user_data_t *user_data)
44659 - if (user_data->consumed + 2 * ITOA_BUF_SIZE + 4 > user_data->size) return;
44660 - user_data->str[user_data->consumed++] = 'L';
44661 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44662 - user_data->str[user_data->consumed++] = ',';
44663 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44664 + if (draw_data->consumed + 2 * ITOA_BUF_SIZE + 4 > draw_data->size) return;
44665 + draw_data->str[draw_data->consumed++] = 'L';
44666 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44667 + draw_data->str[draw_data->consumed++] = ',';
44668 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44672 -quadratic_to (hb_position_t control_x, hb_position_t control_y,
44673 - hb_position_t to_x, hb_position_t to_y,
44674 - user_data_t *user_data)
44682 - if (user_data->consumed + 4 * ITOA_BUF_SIZE + 6 > user_data->size) return;
44683 - user_data->str[user_data->consumed++] = 'Q';
44684 - user_data->consumed += _hb_itoa (control_x, user_data->str + user_data->consumed);
44685 - user_data->str[user_data->consumed++] = ',';
44686 - user_data->consumed += _hb_itoa (control_y, user_data->str + user_data->consumed);
44687 - user_data->str[user_data->consumed++] = ' ';
44688 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44689 - user_data->str[user_data->consumed++] = ',';
44690 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44691 + if (draw_data->consumed + 4 * ITOA_BUF_SIZE + 6 > draw_data->size) return;
44692 + draw_data->str[draw_data->consumed++] = 'Q';
44693 + draw_data->consumed += _hb_itoa (control_x, draw_data->str + draw_data->consumed);
44694 + draw_data->str[draw_data->consumed++] = ',';
44695 + draw_data->consumed += _hb_itoa (control_y, draw_data->str + draw_data->consumed);
44696 + draw_data->str[draw_data->consumed++] = ' ';
44697 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44698 + draw_data->str[draw_data->consumed++] = ',';
44699 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44703 -cubic_to (hb_position_t control1_x, hb_position_t control1_y,
44704 - hb_position_t control2_x, hb_position_t control2_y,
44705 - hb_position_t to_x, hb_position_t to_y,
44706 - user_data_t *user_data)
44714 - if (user_data->consumed + 6 * ITOA_BUF_SIZE + 8 > user_data->size) return;
44715 - user_data->str[user_data->consumed++] = 'C';
44716 - user_data->consumed += _hb_itoa (control1_x, user_data->str + user_data->consumed);
44717 - user_data->str[user_data->consumed++] = ',';
44718 - user_data->consumed += _hb_itoa (control1_y, user_data->str + user_data->consumed);
44719 - user_data->str[user_data->consumed++] = ' ';
44720 - user_data->consumed += _hb_itoa (control2_x, user_data->str + user_data->consumed);
44721 - user_data->str[user_data->consumed++] = ',';
44722 - user_data->consumed += _hb_itoa (control2_y, user_data->str + user_data->consumed);
44723 - user_data->str[user_data->consumed++] = ' ';
44724 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44725 - user_data->str[user_data->consumed++] = ',';
44726 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44727 + if (draw_data->consumed + 6 * ITOA_BUF_SIZE + 8 > draw_data->size) return;
44728 + draw_data->str[draw_data->consumed++] = 'C';
44729 + draw_data->consumed += _hb_itoa (control1_x, draw_data->str + draw_data->consumed);
44730 + draw_data->str[draw_data->consumed++] = ',';
44731 + draw_data->consumed += _hb_itoa (control1_y, draw_data->str + draw_data->consumed);
44732 + draw_data->str[draw_data->consumed++] = ' ';
44733 + draw_data->consumed += _hb_itoa (control2_x, draw_data->str + draw_data->consumed);
44734 + draw_data->str[draw_data->consumed++] = ',';
44735 + draw_data->consumed += _hb_itoa (control2_y, draw_data->str + draw_data->consumed);
44736 + draw_data->str[draw_data->consumed++] = ' ';
44737 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44738 + draw_data->str[draw_data->consumed++] = ',';
44739 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44743 -close_path (user_data_t *user_data)
44748 - if (user_data->consumed + 2 > user_data->size) return;
44749 - user_data->str[user_data->consumed++] = 'Z';
44750 + if (draw_data->consumed + 2 > draw_data->size) return;
44751 + draw_data->str[draw_data->consumed++] = 'Z';
44755 @@ -166,7 +182,7 @@ static hb_draw_funcs_t *funcs2; /* this one translates quadratic calls to cubic
44759 - g_assert (!hb_font_draw_glyph (hb_font_get_empty (), 3, funcs, NULL));
44764 @@ -177,17 +193,17 @@ test_hb_draw_glyf (void)
44768 - user_data_t user_data = {
44775 - user_data.consumed = 0;
44776 - g_assert (!hb_font_draw_glyph (font, 4, funcs, &user_data));
44780 - user_data.consumed = 0;
44781 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44786 "Q404,90 427,128L451,116Q431,54 384,21Q336,-13 266,-13"
44787 @@ -195,11 +211,11 @@ test_hb_draw_glyf (void)
44791 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44792 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44795 - user_data.consumed = 0;
44796 - g_assert (hb_font_draw_glyph (font, 3, funcs2, &user_data));
44802 @@ -209,15 +225,15 @@ test_hb_draw_glyf (void)
44806 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
44807 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
44814 - user_data.consumed = 0;
44815 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44820 "Q430,115 451,137L488,103Q458,42 404,13Q350,-16 279,-16"
44821 @@ -225,7 +241,7 @@ test_hb_draw_glyf (void)
44825 - g_assert_cmpmem (str, user_data.consumed, expected3, sizeof (expected3) - 1);
44826 + g_assert_cmpmem (str, draw_data.consumed, expected3, sizeof (expected3) - 1);
44830 @@ -238,16 +254,16 @@ test_hb_draw_cff1 (void)
44834 - user_data_t user_data = {
44840 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44845 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44846 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44850 @@ -261,18 +277,18 @@ test_hb_draw_cff1_rline (void)
44854 - user_data_t user_data = {
44860 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
44867 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44868 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44872 @@ -285,33 +301,33 @@ test_hb_draw_cff2 (void)
44876 - user_data_t user_data = {
44882 - user_data.consumed = 0;
44883 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44889 "C43,83 129,-13 266,-13C360,-13 424,33 451,116L427,128"
44891 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44892 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44899 - user_data.consumed = 0;
44900 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44906 "C25,70 143,-16 279,-16C374,-16 447,22 488,103L451,137"
44908 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
44909 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
44913 @@ -321,7 +337,7 @@ test_hb_draw_ttf_parser_tests (void)
44915 /* https://github.com/RazrFalcon/ttf-parser/blob/337e7d1c/tests/tests.rs#L50-L133 */
44917 - user_data_t user_data = {
44922 @@ -330,20 +346,20 @@ test_hb_draw_ttf_parser_tests (void)
44926 - user_data.consumed = 0;
44927 - g_assert (hb_font_draw_glyph (font, 0, funcs, &user_data));
44931 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44932 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44935 - user_data.consumed = 0;
44936 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
44940 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44941 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44944 - user_data.consumed = 0;
44945 - g_assert (hb_font_draw_glyph (font, 4, funcs, &user_data));
44951 @@ -351,22 +367,23 @@ test_hb_draw_ttf_parser_tests (void)
44955 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44956 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44959 - user_data.consumed = 0;
44960 - g_assert (hb_font_draw_glyph (font, 5, funcs, &user_data));
44961 - char expected[] = "";
44962 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44966 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44969 - user_data.consumed = 0;
44970 - g_assert (hb_font_draw_glyph (font, 6, funcs, &user_data));
44976 - "Q254,693 233,664Q211,634 211,571L211,536L346,536L346,468Z";
44977 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44980 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44984 @@ -376,15 +393,15 @@ test_hb_draw_ttf_parser_tests (void)
44988 - user_data.consumed = 0;
44989 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
44992 char expected[] = "M0,0C100,0 150,-20 250,-20C350,-20 400,0 500,0C500,100 520,150 520,250"
44994 "C0,400 -20,350 -20,250C-20,150 0,100 0,0ZM50,50C50,130 34,170 34,250"
44998 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44999 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45003 @@ -393,12 +410,12 @@ test_hb_draw_ttf_parser_tests (void)
45007 - user_data.consumed = 0;
45008 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
45014 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45015 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45019 @@ -409,7 +426,7 @@ test_hb_draw_font_kit_glyphs_tests (void)
45023 - user_data_t user_data = {
45028 @@ -420,26 +437,26 @@ test_hb_draw_font_kit_glyphs_tests (void)
45032 - user_data.consumed = 0;
45033 - g_assert (hb_font_draw_glyph (font, 37, funcs, &user_data));
45042 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45043 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45046 - user_data.consumed = 0;
45047 - g_assert (hb_font_draw_glyph (font, 171, funcs, &user_data));
45050 char expected2[] = "M639,-20Q396,-20 256,128Q115,276 115,539Q115,804 246,960Q376,1116 596,1116"
45052 "Q477,125 645,125Q822,125 995,199L995,51Q907,13 829,-3Q750,-20 639,-20Z"
45056 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45057 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45061 @@ -457,8 +474,8 @@ test_hb_draw_font_kit_glyphs_tests (void)
45065 - user_data.consumed = 0;
45066 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45070 "Q343,138 365,111L468,-13Q470,-10 473,-6Q475,-3 477,0L253,0Q225,0 203,8"
45071 "Q180,15 168,32Q155,48 155,73L155,269L50,269L50,73Q50,24 69,-10"
45072 @@ -470,16 +487,16 @@ test_hb_draw_font_kit_glyphs_tests (void)
45073 "M360,-194Q360,-216 375,-231Q390,-246 412,-246Q434,-246 449,-231"
45074 "Q464,-216 464,-194Q464,-172 449,-157Q434,-142 412,-142"
45075 "Q390,-142 375,-157Q360,-172 360,-194Z";
45076 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45077 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45080 - user_data.consumed = 0;
45081 - g_assert (hb_font_draw_glyph (font, 2, funcs, &user_data)); /* 2 == arAlef.fina */
45088 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45089 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45093 @@ -489,11 +506,11 @@ test_hb_draw_font_kit_glyphs_tests (void)
45097 - user_data.consumed = 0;
45098 - g_assert (hb_font_draw_glyph (font, 5, funcs, &user_data));
45103 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45104 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45108 @@ -504,12 +521,12 @@ test_hb_draw_font_kit_glyphs_tests (void)
45112 - user_data.consumed = 0;
45113 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
45117 "C73,419 103,390 139,390ZM139,-13C175,-13 205,15 205,56C205,97 175,127 139,127"
45118 "C103,127 73,97 73,56C73,15 103,-13 139,-13Z";
45119 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45120 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45124 @@ -521,7 +538,7 @@ test_hb_draw_font_kit_variations_tests (void)
45128 - user_data_t user_data = {
45133 @@ -549,8 +566,8 @@ test_hb_draw_font_kit_variations_tests (void)
45137 - user_data.consumed = 0;
45138 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45141 char expected[] = "M371,-102L371,539L914,539L914,-27Q914,-102 840,-102"
45142 "Q796,-102 755,-98L742,-59Q790,-66 836,-66Q871,-66 871,-31L871,504"
45143 "L414,504L414,-102L371,-102ZM203,-94Q138,-94 86,-90L74,-52"
45144 @@ -571,7 +588,7 @@ test_hb_draw_font_kit_variations_tests (void)
45148 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45149 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45153 @@ -594,8 +611,8 @@ test_hb_draw_font_kit_variations_tests (void)
45157 - user_data.consumed = 0;
45158 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45161 char expected[] = "M371,-102L371,539L914,539L914,-27Q914,-102 840,-102Q796,-102 755,-98"
45162 "L742,-59Q790,-66 836,-66Q871,-66 871,-31L871,504L414,504L414,-102"
45163 "L371,-102ZM203,-94Q138,-94 86,-90L74,-52Q137,-59 188,-59Q211,-59 222,-46"
45164 @@ -615,7 +632,7 @@ test_hb_draw_font_kit_variations_tests (void)
45168 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45169 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45173 @@ -638,8 +655,8 @@ test_hb_draw_font_kit_variations_tests (void)
45177 - user_data.consumed = 0;
45178 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45181 char expected[] = "M371,-102L371,539L914,539L914,-27Q914,-102 840,-102Q796,-102 755,-98"
45182 "L742,-59Q790,-66 836,-66Q871,-66 871,-31L871,504L414,504L414,-102"
45183 "L371,-102ZM203,-94Q138,-94 86,-90L74,-52Q137,-59 188,-59Q211,-59 222,-46"
45184 @@ -659,7 +676,7 @@ test_hb_draw_font_kit_variations_tests (void)
45188 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45189 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45193 @@ -685,8 +702,8 @@ test_hb_draw_font_kit_variations_tests (void)
45197 - user_data.consumed = 0;
45198 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45202 "C65,149 56,141 52,126C71,40 137,-13 244,-13C348,-13 436,46 436,156"
45204 @@ -695,7 +712,7 @@ test_hb_draw_font_kit_variations_tests (void)
45206 "C395,65 334,15 246,15ZM267,331L267,759L240,759L240,331L267,331ZM240,-115"
45207 "L267,-115L267,331L240,331L240,-115Z";
45208 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45209 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45213 @@ -709,8 +726,8 @@ test_hb_draw_font_kit_variations_tests (void)
45217 - user_data.consumed = 0;
45218 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45222 "C78,167 61,155 51,131C54,43 133,-14 247,-14C388,-14 474,64 474,171"
45224 @@ -719,7 +736,7 @@ test_hb_draw_font_kit_variations_tests (void)
45227 "L289,746L242,746L242,320L289,320ZM240,-115L286,-115L286,320L240,320L240,-115Z";
45228 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45229 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45233 @@ -734,8 +751,8 @@ test_hb_draw_font_kit_variations_tests (void)
45237 - user_data.consumed = 0;
45238 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45242 "C89,174 64,161 51,125C52,36 124,-16 258,-16C417,-16 513,67 513,175"
45244 @@ -743,7 +760,7 @@ test_hb_draw_font_kit_variations_tests (void)
45247 "L318,616ZM253,-115L319,-115L319,14L253,14L253,-115Z";
45248 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45249 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45253 @@ -755,7 +772,7 @@ test_hb_draw_estedad_vf (void)
45257 - user_data_t user_data = {
45262 @@ -769,18 +786,18 @@ test_hb_draw_estedad_vf (void)
45263 hb_variation_from_string ("wght=100", -1, &var);
45266 - user_data.consumed = 0;
45267 - g_assert (hb_font_draw_glyph (font, 156, funcs, &user_data));
45273 "L150,1158ZM1815,-122L1669,-122L1669,642L1552,642L1055,-117L1055,-206"
45274 "L1569,-206L1569,-458L1669,-458L1669,-206L1815,-206L1815,-122ZM1569,-122"
45275 "L1166,-122L1569,494L1569,-122ZM609,-79L1639,1288L1555,1334L525,-33L609,-79Z";
45276 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45277 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45279 - user_data.consumed = 0;
45280 - g_assert (hb_font_draw_glyph (font, 180, funcs, &user_data));
45285 "Q701,-33 856,-33Q1010,-33 1144,24Q1277,81 1377,182Q1477,282 1534,414"
45286 @@ -797,17 +814,17 @@ test_hb_draw_estedad_vf (void)
45290 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45291 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45293 - user_data.consumed = 0;
45294 - g_assert (hb_font_draw_glyph (font, 262, funcs, &user_data));
45303 - g_assert_cmpmem (str, user_data.consumed, expected3, sizeof (expected3) - 1);
45304 + g_assert_cmpmem (str, draw_data.consumed, expected3, sizeof (expected3) - 1);
45308 @@ -819,7 +836,7 @@ test_hb_draw_stroking (void)
45309 /* https://skia-review.googlesource.com/c/skia/+/266945
45312 - user_data_t user_data = {
45317 @@ -829,8 +846,8 @@ test_hb_draw_stroking (void)
45321 - user_data.consumed = 0;
45322 - g_assert (hb_font_draw_glyph (font, 6, funcs, &user_data));
45328 @@ -842,10 +859,10 @@ test_hb_draw_stroking (void)
45332 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45333 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45335 - user_data.consumed = 0;
45336 - g_assert (hb_font_draw_glyph (font, 7, funcs, &user_data));
45342 @@ -860,7 +877,7 @@ test_hb_draw_stroking (void)
45346 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45347 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45351 @@ -870,24 +887,181 @@ test_hb_draw_stroking (void)
45355 - user_data.consumed = 0;
45356 - g_assert (hb_font_draw_glyph (font, 4, funcs, &user_data));
45362 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45363 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45365 - user_data.consumed = 0;
45366 - g_assert (hb_font_draw_glyph (font, 5, funcs, &user_data));
45369 /* Fold consequent move-to commands */
45374 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45375 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45402 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45425 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45438 + hb_face_t *face = hb_test_open_font_file ("fonts/OpenSans-Regular.ttf");
45451 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45456 + hb_face_t *face = hb_test_open_font_file ("fonts/SourceSansPro-Regular.otf");
45465 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45481 + hb_face_t *face = hb_test_open_font_file ("fonts/OpenSans-Regular.ttf");
45496 + g_assert_cmpmem (str, draw_data.consumed, expected1, sizeof (expected1) - 1);
45506 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45513 + hb_face_t *face = hb_test_open_font_file ("fonts/SourceSansPro-Regular.otf");
45524 + g_assert_cmpmem (str, draw_data.consumed, expected1, sizeof (expected1) - 1);
45530 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45539 @@ -900,22 +1074,70 @@ test_hb_draw_immutable (void)
45560 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45566 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45578 + char expected[] = "M0,0C100,0 150,-20 250,-20C350,-20 400,0 500,0C500,100 520,150 520,250"
45580 + "C0,400 -20,350 -20,250C-20,150 0,100 0,0ZM50,50C50,130 34,170 34,250"
45584 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45595 - hb_draw_funcs_set_move_to_func (funcs, (hb_draw_move_to_func_t) move_to);
45596 - hb_draw_funcs_set_line_to_func (funcs, (hb_draw_line_to_func_t) line_to);
45597 - hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) quadratic_to);
45598 - hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) cubic_to);
45599 - hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) close_path);
45608 - hb_draw_funcs_set_move_to_func (funcs2, (hb_draw_move_to_func_t) move_to);
45609 - hb_draw_funcs_set_line_to_func (funcs2, (hb_draw_line_to_func_t) line_to);
45610 - hb_draw_funcs_set_cubic_to_func (funcs2, (hb_draw_cubic_to_func_t) cubic_to);
45611 - hb_draw_funcs_set_close_path_func (funcs2, (hb_draw_close_path_func_t) close_path);
45619 @@ -929,17 +1151,17 @@ main (int argc, char **argv)
45623 - hb_test_add (test_hb_draw_stroking);
45638 -#else
45639 -int main (int argc HB_UNUSED, char **argv HB_UNUSED)
45640 -{
45641 - return 0;
45642 -}
45643 -#endif
45644 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-face.c b/src/third_party/harfbuzz-ng/…
45646 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-face.c
45647 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-face.c
45648 @@ -131,6 +131,7 @@ test_font (hb_font_t *font, hb_codepoint_t cp)
45656 @@ -162,11 +163,9 @@ test_font (hb_font_t *font, hb_codepoint_t cp)
45660 -#ifdef HB_EXPERIMENTAL_API
45662 - hb_font_draw_glyph (font, cp, funcs, NULL);
45665 -#endif
45669 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-math.c b/src/third_party/harfbuzz-ng/…
45671 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-math.c
45672 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-math.c
45673 @@ -312,7 +312,7 @@ test_get_glyph_kerning (void)
45675 g_assert(hb_font_get_glyph_from_name (hb_font, "I", -1, &glyph));
45677 - g_assert_cmpint(hb_ot_math_get_glyph_kerning (hb_font, glyph, HB_OT_MATH_KERN_TOP_RIGHT, 7), ==,…
45682 @@ -332,6 +332,87 @@ test_get_glyph_kerning (void)
45697 + g_assert(hb_font_get_glyph_from_name (hb_font, "space", -1, &glyph));
45705 + g_assert(hb_font_get_glyph_from_name (hb_font, "space", -1, &glyph));
45713 + g_assert(hb_font_get_glyph_from_name (hb_font, "space", -1, &glyph));
45721 + g_assert(hb_font_get_glyph_from_name (hb_font, "I", -1, &glyph));
45770 @@ -707,6 +788,7 @@ main (int argc, char **argv)
45778 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-metrics-tt-var.c b/src/third_party/ha…
45780 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-metrics-tt-var.c
45781 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-metrics-tt-var.c
45782 @@ -80,7 +80,7 @@ test_advance_tt_var_nohvar (void)
45786 - g_assert_cmpint (y, ==, -1000);
45787 + g_assert_cmpint (y, ==, -1257);
45791 @@ -92,7 +92,7 @@ test_advance_tt_var_nohvar (void)
45795 - g_assert_cmpint (y, ==, -1000);
45796 + g_assert_cmpint (y, ==, -1257);
45800 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-tag.c b/src/third_party/harfbuzz-ng/s…
45802 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-tag.c
45803 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-tag.c
45804 @@ -140,6 +140,8 @@ test_ot_tag_script_simple (void)
45813 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-set.c b/src/third_party/harfbuzz-ng/src/…
45815 --- a/src/third_party/harfbuzz-ng/src/test/api/test-set.c
45816 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-set.c
45817 @@ -1067,6 +1067,130 @@ test_set_inverted_operations (void)
45865 + g_assert_cmpint (array[n - 1], ==, 6099);
45899 + // Single page.
45948 @@ -1090,5 +1214,11 @@ main (int argc, char **argv)
45960 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-style.c b/src/third_party/harfbuzz-ng/sr…
45962 --- a/src/third_party/harfbuzz-ng/src/test/api/test-style.c
45963 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-style.c
45964 @@ -147,6 +147,34 @@ test_face_user_setting (void)
45989 + assert_cmpfloat (hb_style_get_value (font, HB_STYLE_TAG_SLANT_ANGLE), -12);
45999 @@ -155,6 +183,7 @@ main (int argc, char **argv)
46007 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-subset-repacker.c b/src/third_party/harf…
46010 --- /dev/null
46011 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-subset-repacker.c
46012 @@ -0,0 +1,225 @@
46038 +#include "hb-test.h"
46039 +#include "hb-subset-test.h"
46042 +#include "hb-subset-repacker.h"
46238 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-subset.c b/src/third_party/harfbuzz-ng/s…
46240 --- a/src/third_party/harfbuzz-ng/src/test/api/test-subset.c
46241 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-subset.c
46242 @@ -155,6 +155,44 @@ test_subset_sets (void)
46249 + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf");
46250 + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Roboto-Regular.ac.ttf");
46287 @@ -165,6 +203,7 @@ main (int argc, char **argv)
46295 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-var-coords.c b/src/third_party/harfbuzz-
46297 --- a/src/third_party/harfbuzz-ng/src/test/api/test-var-coords.c
46298 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-var-coords.c
46299 @@ -31,7 +31,6 @@
46303 -#ifdef HB_EXPERIMENTAL_API
46306 (((a) > (b) ? (a) - (b) : (b) - (a)) < (epsilon))
46307 @@ -66,7 +65,6 @@ test_get_var_coords (void)
46311 -#endif
46315--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-54…
46322 zdaOzj_ynOCz+Ol3gcuG0QtHXh@Qj^-aRnIYrse15B^D$yz<s)c5gcM*Aj8bSycHM@
46323 zj10`oY{YmG%^9V6nT|##uHdkI&cFzdBV&%V|5(Al|H2H|WoQH-&W6P~x-2B(L4Xw$
46329--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape
46334 zc$}?N&rcIU6#iy*DL+C@NjNAmq)1JuP_qbasdA|Nu$mYlAsm$!EQC-OQpyDrQ~U!6
46335 z@n)37n^zBpvx$i(JsA=Y9=Lh&q=`bBbbW7T*Oj(lVtkvO-JN+qzWLra3jx3g18;u7
46336 z1R~LB^x)t-%u$rXndzw+wBZ(cq^m(pWM*c^K0e)f&)>jfr*gJpfaBZHjRA;4u4JQy
46337 z)1XxRrdGsCzQ}XHE<&^-5umY!*8F#gA-V|yB9vIFcoSD>3_FfPApWR$zEQ<Hr`T^a
46339 zh)uE}n(5-a=|Gmo(IrAH9yuQ*2n)?`hFBT6ib;Fp!F;~BzPx0&tK^2nd@;AMk_W1o
46340 zcH~1fYjrl@$87K}AlG6ZQF}}lqX^(KjeVJk$s3g^+*6*NUy)@IetPwVM0hP-1#Ytl
46341 zV~eXc0~d;(*Nx~AZmA~0O}OatpxI@Kz1a4fr3KEpB?l!uz-2IPDo?Z9Ya%3|a&+kQ
46342 zl#BJ`{Pcb6J*}a{NPIY%jE`6&@1E`KYS&mQ9#5rG!`Q-p6R=+{mvif-d@%@LC4%KD
46344 zFBVElf70&d)kEkWh{EbZf$B2?i3W#|n`!6Pa&>3uN!@=UfeT%u-EVEQs>9+$mM_t^
46352--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subse…
46357 zc${NkWME)my2P^nh3+k9f1e-*w*a63gEspM28P_kiULsvH6svTlRu0Bq|^#XfM^hq
46359 zGi-9=VJJ>5OJ!jAFUmKKm4Stcft5j67AWVyqtXLW1u+L=FNoxSRL{ZuKi`>!n>mF+
46366--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subse…
46372 zSgmvK%(}Ci4P@ivz`X9A`#ST00nkkym?58qI2&G^$_N-#Zder6?rUQ*x|_-fG?w-O
46375 zVR?+Pg+6w(+QdmVw|X|(7*ZK<T4=Ak;x-53)9{<)eG0QeRM_%s`pmZyE$~Gl^81a%
46376 zb@Pxk)kV485!b0_pPi&b5Ese44SddtXuISC%b1tv6-PW_lTWf|Z<{YNHhcW6%oCf+
46383--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/crash-d223bc42a8226c4d655c417d63d9a7676…
46388 zc%1VO3Grv(XJ}wxX6SHsb2CbEj5)->!0?BGfw#y#z(063BZB~t&%pPabDsxC+&a!{
46389 z$KI8)u=PJ<FpSAKFOtf_oH+Th@c)1H3=Tj3{Rabg1_tKO@vK*Yx)c~$nShkwV-5xe
46390 z76z$gDMNpi(ijHje{l-_Y(R<B#OU+PB0O9S3_K1DvaC6^^OxHQ?qgu!`~Z~X%1x{&
46392 zV9QHPNnP>#KNrw)petCt3i6Aa{$B(t7UB0{`2SLYiIJ5-SQf~a;86ilN`kU$7}#Xo
46398 diff --git a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-draw-fuzzer.cc b/src/third_party/harfb…
46400 --- a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-draw-fuzzer.cc
46401 +++ b/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-draw-fuzzer.cc
46402 @@ -5,77 +5,80 @@
46404 #include "hb-fuzzer.hh"
46406 -#ifdef HB_EXPERIMENTAL_API
46407 -struct _user_data_t
46410 - bool is_open;
46412 - hb_position_t path_start_x;
46413 - hb_position_t path_start_y;
46414 - hb_position_t path_last_x;
46415 - hb_position_t path_last_y;
46423 -_move_to (hb_position_t to_x, hb_position_t to_y, void *user_data_)
46429 - _user_data_t *user_data = (_user_data_t *) user_data_;
46430 - assert (!user_data->is_open);
46431 - user_data->is_open = true;
46432 - user_data->path_start_x = user_data->path_last_x = to_x;
46433 - user_data->path_start_y = user_data->path_last_y = to_y;
46435 + assert (!st->path_open);
46436 + draw_data->path_start_x = draw_data->path_last_x = to_x;
46437 + draw_data->path_start_y = draw_data->path_last_y = to_y;
46441 -_line_to (hb_position_t to_x, hb_position_t to_y, void *user_data_)
46447 - _user_data_t *user_data = (_user_data_t *) user_data_;
46448 - assert (user_data->is_open);
46449 - assert (user_data->path_last_x != to_x || user_data->path_last_y != to_y);
46450 - ++user_data->path_len;
46451 - user_data->path_last_x = to_x;
46452 - user_data->path_last_y = to_y;
46454 + assert (st->path_open);
46455 + ++draw_data->path_len;
46456 + draw_data->path_last_x = to_x;
46457 + draw_data->path_last_y = to_y;
46461 -_quadratic_to (hb_position_t control_x, hb_position_t control_y,
46462 - hb_position_t to_x, hb_position_t to_y, void *user_data_)
46469 - _user_data_t *user_data = (_user_data_t *) user_data_;
46470 - assert (user_data->is_open);
46471 - assert (user_data->path_last_x != control_x || user_data->path_last_y != control_y ||
46472 - user_data->path_last_x != to_x || user_data->path_last_y != to_y);
46473 - ++user_data->path_len;
46474 - user_data->path_last_x = to_x;
46475 - user_data->path_last_y = to_y;
46477 + assert (st->path_open);
46478 + ++draw_data->path_len;
46479 + draw_data->path_last_x = to_x;
46480 + draw_data->path_last_y = to_y;
46484 -_cubic_to (hb_position_t control1_x, hb_position_t control1_y,
46485 - hb_position_t control2_x, hb_position_t control2_y,
46486 - hb_position_t to_x, hb_position_t to_y, void *user_data_)
46494 - _user_data_t *user_data = (_user_data_t *) user_data_;
46495 - assert (user_data->is_open);
46496 - assert (user_data->path_last_x != control1_x || user_data->path_last_y != control1_y ||
46497 - user_data->path_last_x != control2_x || user_data->path_last_y != control2_y ||
46498 - user_data->path_last_x != to_x || user_data->path_last_y != to_y);
46499 - ++user_data->path_len;
46500 - user_data->path_last_x = to_x;
46501 - user_data->path_last_y = to_y;
46503 + assert (st->path_open);
46504 + ++draw_data->path_len;
46505 + draw_data->path_last_x = to_x;
46506 + draw_data->path_last_y = to_y;
46510 -_close_path (void *user_data_)
46515 - _user_data_t *user_data = (_user_data_t *) user_data_;
46516 - assert (user_data->is_open && user_data->path_len != 0);
46517 - user_data->path_len = 0;
46518 - user_data->is_open = false;
46519 - assert (user_data->path_start_x == user_data->path_last_x &&
46520 - user_data->path_start_y == user_data->path_last_y);
46522 + assert (st->path_open && draw_data->path_len != 0);
46523 + draw_data->path_len = 0;
46524 + assert (draw_data->path_start_x == draw_data->path_last_x &&
46525 + draw_data->path_start_y == draw_data->path_last_y);
46527 -#endif
46529 /* Similar to test-ot-face.c's #test_font() */
46531 @@ -135,24 +138,19 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46535 -#ifdef HB_EXPERIMENTAL_API
46536 - _user_data_t user_data = {false, 0, 0, 0, 0, 0};
46540 - hb_draw_funcs_set_move_to_func (funcs, (hb_draw_move_to_func_t) _move_to);
46541 - hb_draw_funcs_set_line_to_func (funcs, (hb_draw_line_to_func_t) _line_to);
46542 - hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) _quadratic_to);
46543 - hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) _cubic_to);
46544 - hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) _close_path);
46545 -#endif
46555 -#ifdef HB_EXPERIMENTAL_API
46556 - hb_font_draw_glyph (font, gid, funcs, &user_data);
46557 - assert (!user_data.is_open);
46558 -#endif
46563 @@ -166,9 +164,7 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46567 -#ifdef HB_EXPERIMENTAL_API
46569 -#endif
46573 diff --git a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-set-fuzzer.cc b/src/third_party/harfbu…
46575 --- a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-set-fuzzer.cc
46576 +++ b/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-set-fuzzer.cc
46577 @@ -8,7 +8,7 @@
46581 -// Arbitarily long input sets do not trigger any meaningful
46586 diff --git a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-shape-fuzzer.cc b/src/third_party/harf…
46588 --- a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-shape-fuzzer.cc
46589 +++ b/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-shape-fuzzer.cc
46590 @@ -33,6 +33,7 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46595 hb_buffer_add_utf8 (buffer, text, -1, 0, -1);
46598 @@ -50,6 +51,7 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46603 hb_buffer_add_utf32 (buffer, text32, sizeof (text32) / sizeof (text32[0]), 0, -1);
46606 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/Makefile.sources b/src/third_part…
46608 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/Makefile.sources
46609 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/Makefile.sources
46610 @@ -128,6 +128,3 @@ TESTS = \
46614 -
46615 -DISABLED_TESTS = \
46616 - $(NULL)
46617 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/hb-aots-tester.cpp b/src/third_pa…
46619 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/hb-aots-tester.cpp
46620 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/hb-aots-tester.cpp
46621 @@ -258,7 +258,7 @@ bool cmap_test(const char *testName,
46625 - fprintf (tests_file, "\" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;");
46626 + fprintf (tests_file, "\" --single-par --no-clusters --no-glyph-names --no-positions --font-fun…
46630 @@ -388,7 +388,7 @@ bool gpos_test(const char *testName,
46634 - fprintf (tests_file, "\" --no-clusters --no-glyph-names --ned;");
46635 + fprintf (tests_file, "\" --single-par --no-clusters --no-glyph-names --ned;");
46639 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos4_simple.tests b/src/th…
46641 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos4_simple.tests
46642 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos4_simple.tests
46643 @@ -1,4 +1,4 @@
46644 -#../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U…
46645 …os4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012…
46646 …../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+…
46647 …../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+…
46648 …_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+…
46649 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos5.tests b/src/third_par…
46651 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos5.tests
46652 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos5.tests
46653 @@ -1,2 +1,2 @@
46654 …s5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+0…
46655 -#../fonts/gpos5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+00…
46656 …s5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+0…
46657 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.am b/src/third_party…
46659 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.am
46660 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.am
46661 @@ -14,10 +14,18 @@ EXTRA_DIST = \
46667 -TESTS_ENVIRONMENT = HAVE_FREETYPE=1
46668 -else
46669 -TESTS_ENVIRONMENT = HAVE_FREETYPE=0
46681 TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT)
46683 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.sources b/src/third_…
46685 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.sources
46686 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.sources
46687 @@ -13,12 +13,15 @@ TESTS = \
46689 tests/color-fonts.tests \
46690 tests/context-matching.tests \
46692 tests/cursive-positioning.tests \
46693 tests/default-ignorables.tests \
46697 tests/emoji-clusters.tests \
46698 tests/fallback-positioning.tests \
46699 + tests/glyph-props-no-gdef.tests \
46700 tests/hangul-jamo.tests \
46702 tests/indic-consonant-with-stacker.tests \
46703 @@ -45,6 +48,7 @@ TESTS = \
46704 tests/myanmar-misc.tests \
46705 tests/myanmar-syllable.tests \
46706 tests/myanmar-zawgyi.tests \
46707 + tests/nested-mark-filtering-sets.tests \
46708 tests/none-directional.tests \
46709 tests/positioning-features.tests \
46711 @@ -57,6 +61,8 @@ TESTS = \
46712 tests/tibetan-contractions-2.tests \
46713 tests/tibetan-vowels.tests \
46714 tests/tt-kern-gpos.tests \
46716 + tests/unsafe-to-concat.tests \
46717 tests/use-indic3.tests \
46718 tests/use-marchen.tests \
46719 tests/use-syllable.tests \
46720--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/190a621e48d4af1fffd8144bd41…
46725 zc${ri&u<%55dPl&h+VsJ5{RWFkakl-TPxVLoq|J^Lx@wSNR^y6fkS{&hZx&Z99#Cb
46726 zX)nk(q6SbTgh2cU1Vk@@a_FHP-~tB@oDfu{s3;dCkW$vEqdva3URkNc8_mu)GvCge
46727 zeLpt4u#m-JG@xTDoyk~lWX?AL{0xZv?9AB=`e6db3S&dFbJ=+ek_}^>e(&u3E7Q0B
46730 z3=KjE-?{1W(-RX4KHEHsrX`vqT608i4j7NdJ{%@DwfC9noaotfa!)v8eeen4?|JIP
46731 zb1!GFtd`=_FFx;@biy;SYTd4TnOMCZA5X;Mv3R;ty<RI7inf)ECzIAp?rLe-N>^%2
46732 zdE1V89k7LWb(lgJ-2+x^e>n87Gv;iCtw89}*j_n&Y46^)Pr<41NPxK|=kxHfz`_kh
46733 zc-R--d=k14&s5%TMVx4>+qpoAI^9mhiL_{27buLkB1eK!@7=oHB@z6pA?5Gu4T+}*
46734 zi0-cuS?g09{%^j#xxHPydHJZ6ck+!5Det{ACFLJKk+l2Zwv=~IHT-h_pW}_Lpkp|L
46736 zVwXF(gO34bsV-(6viw*yf88(1zs;0e{opWR=sRLl?XY%3yT!<RZ7c2~Ay`|3se9bs
46741 zLM^w7QM<g7#3(d%2{ELuAN$tHu-M(nPE8!pW9qEXTAt581UuI}X8Zd>E)qO3q9XzK
46747--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/23406a60ab081c4fb15e1596ea1…
46752 zc$}S7-)mD>9RHkqZ*J3CJ4>6<LBwRXP^sI@kCw6uvx!zHRD;o#7R22qH4P+9mb6>@
46753 zCQ@H!9|ZjaBrgW(OHmP}Fdri9LCRnghKwQW7-GQ}GZ@0|-RGQptD<{a$T#2b=bX>^
46754 zp3gbo?+FBe-M9c9spF}WX?%osz!&7`p5y5=iSdo$D)B+$@ssJ#qF3WH+km!2{8grC
46755 zl{fF5y-EBF@y|J{T6P>}g0Gv{pDQe%pSjtP@vpQ$=Vq;J@aprIfcTquXpRHEZ}Ecb
46757 zxRP20jO)Z-L)bOF>D)CYq$Uv#gzcIL*xSa$6e055XFxnb3#G(|q91mfALm!@udLj^
46761 zm~UdcCi5B-&IqQpRp!{M4ZNqR6^7UrSKwm}zSA~1vg&&A6cNF_H2Cy4bPXXl@B^vy
46767 zT>9u>GAaG&@Tlh#an~o~=3*ogiw-Ln8&fWR)N6D0fTpV5#wvGsd%3umO0-<Xnny>~
46768 eTC8x^PzoLQO=U90vZ|H)!VJ&*X{L%~weT-Lc>4GN
46773--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/34da9aab7bee86c4dfc3b85e423…
46780 z_nhyXJA3bd0Vu(F$QVl|hKA9MAfRp#Tb~?Dr4wr-tAt-8989L~A4qIXoF)7b;j5|i
46781 zJ<*FV?6d&#D}*1NUeK00*>6_}-z3~UGk@mP`sYQ*$=?Ln)@)YG#7@rqOzUOD#b=2K
46783 z(tmR)x00W5c^3f-)x#xSM?i0q-)1jLVW`AdVPTi_>jtl^vo!HmlYdh1(EIVVh%X>s
46784 zh2^eogJsV$FR_INJGl)8kDkCe{S6cWm7#E3EZ!P*IUVYV)9-gW{QeL84o4v1aQLY;
46786 za-lX|Tj3h?#CrX$L*Yz^w`HlRD;;wi%6umX->%#v-ST;7)uC{ms_d_E^ujY|n|ljY
46787 z*U=-+3ZHA@G)wQ?{8u@9T_RRn=`FH*%PY&uys@snUcMjbfAjYQJK$`O#*IA$Br0NS
46788 z>GV{)?klM*d(1LkTw5Dn=?DbJ#{!uXW*&c&I4tt+*q~}_h#W328CC7&-95ak)JSPy
46791 zwWP#ZkPJy_0+aF&2q;4cuo5c&AdxS_a~lW!2CqR!C;<3kdd-&RvmWS=I)@^Uv5T;f
46792 z@^hpO95XDNL=@i>TV#<Giy}$Nd46H{jbtj7WPNIVu-K?!nUsDcx{t51H70H{*A<=f
46793 z_u!zJ39F!9>`5UkaRq+%4g1$u-|g({(u$KjOX2rnR_Jh_k@BqRODM$!)0Z)TmrP$l
46794 z1lLU80uL)NeHD!?ghAx6gfm#i9A-!>Pl{2>Xh9pAgcl`0h$O}3C}JL2LL>AHiZ53`
46796 zq9;k-uEwsy{`{r`3jb9vcp&}((d`PY<tRG1uY><n)jXT}tCWAIL0>K=F_|gM!c=Bu
46798 zvY9y^9*sl>`B4-n#29Y!89j=aC2=$PkHNUdHu`P`z!JkFC+NGZh&}0MuCd;Lhaidd
46805--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/5bbf3712e6f79775c66a4407837…
46814 zh#A23pd<gZb-78G3{L>_!vNQJbM^52A_9c~`%nk-(1GoA5EDcL{S*TIXFH(4Onnn&
46815 z=cTQWDu04ln0}JGTL$hP+y}buJ%ym}aONGx1AqP@2RgLrUose-zr+7Q1>=9}fkAZ4
46816 zJFsYo9)jp)>5~9K@bFGM1l^+H0M<eb%>T`{pH2J96>UiE2WW>n7@c7s|K-U~s}8+{
46818 z32B1S8FVawwICM&IYEw)F?18U4c!AXwqS<#P}vt06#PHN8E6X#hi--gC^Ev(K%4al
46819 z-+{5LIvBJuxC1&Az;qyF>3kpSfdmg@Z4IcnhkpeivWEJmTKbOeYE4W3r;8+EWCWHY
46820 zJdF)ZpeKeDDFi-1jp~M+$|$i>V>{&y)U4^C)lKh@Zj6%tBp~7Rh9BV3+TVUykNv@I
46821 z#%NFb+~^)vaE&0;gQjH<LNWy*i6V>69WNg|HrtY9sq`3sdIleLykJ_1-iZ%)ZgY^g
46822 zptp|W&(`SY7C7xQo-F(U5DgRZe;bJW1ZwD>EoOv8G{89s{xvuKnEI@9+V^;ZEz?FQ
46823 z0_lZG<d2-_<Nqys{Om{KTE^slQGjwRBW86z6yEr0c6`oXEI2&Ock^cS_caS8)PPEM
46826 zBgNW)P$0A<NG!l%WV;iJyot{VF?Ip#cOr6yu3OqU5pfB_e8PCjV8kWj>b2P-Hr*lJ
46827 zj(BqP>o2c+(c>cHJfG)GVx^X%Rax7oY8^Q=+#_->WnYOdax03q(&ImgCvRA*Qy=^-
46831 z6S-TL?J%nLNL9f%<5-gT!Qd}`Q#Br&SFvMWg7<Ctdd@+0+kRC%-9TA7qx7p-O3_W)
46833 zo5!6|f1bCSu?VRbpIt)o(wbs89y3W|*`R8xp_MU8mB&zX$d~kEHhB5S-;9~H2!W`|
46834 zJdqq_+oTh2MQ6F!9^1<yn&(zq$YuLUd&EA=0%)}8lERAktDP6m3*Iw-nT18uRW|Ov
46836 zs+UdwkWip2G^-Xg^ddo&ja_7#-LYri#nPb;AF=}<^v=m{Fra>9Zx$E4qQ)i_P&Rbc
46837 zfaevxdrmcDrU?)|y+2t`{RnHuq3m2O>IR9zv-!VOH~K5yxPx9tO1Sy`7+upiX=fk*
46838 zRBL_zD?&ngYd@;wVvSGPUGI?OioDB@KB@#S`30_hVKfa@ChdQ=%3LgRe0vPWemn-A
46839 zdijD#rx^0UvfW)P-SA<jvjeGq@l-Pn0^2;>(C!<j*LvZ@(d7Gn{ta6dA>ph#UXlw+
46843 zjUQ0#wnDb9%x-7}%&;#f4Le&5@9`gJ!`-5t32h1yOpMI;pGgX}sL61&a`Le=#GoT%
46845 zWWqD$AI0>lDH_KiOP-yi8RgFjF%Gwp4~{WpV<+D-;^4z*|IIP~35!Oi1jiY2uoG?>
46849 zi{k#hM*#;9>yPrUFoCGk@Z+|xuKf>35!>Vc>rq7W?blJ%($dn?)6?DE-PzemBoec-
46853 zK>=7>Sy2IaAoqHpWqo~pdwY9%d3j@FV{2=RN~Nx>tgNlAO-@d3Zf+7<TNf4<fE-{4
46855 z3Wc(?wA4^v-$oz|4h~LDP1V)bb`m>#dwYk6hv#Nz$41BAzkmPk-8+0^WA&RiLqkI~
46856 z)zu($18)cLczk0+!`RqZds{oOxxTIrI0C#Tb#*N+EOwK-NnNDc+FB5B5QNc@k=2zI
46857 zU<0LxQc_Z~wz@VuI}0KJLb1HGH1PH<a6CON9oP-hlaicVRrz{$W(K6-MPA<A>>NlX
46858 zh;v(88wfIqL;`^t7#J8H8p1c?TU%Ne7ZyO8a&vM()*9;@+6ZkO?d|n-^<$$z?FdL;
46859 zMtTMaFW4bDIXTo#YI#}NtD>UUuV1GmB^SSX#d;t3(EySTG6gaYG6J?uc2-vYix)2o
46860 zUy9;d<sT6gqdI;MZVoLaYeW-{KWxfupith8fvhz*HD_mLkx68SoF11v(xo_}Npfd?
46861 zem;>hPy@W4Sxj#ksUnT!wG6hC`)WJ-ItC_-nklwfB#)PUq>;JOwzvHL%}KSr*V4N9
46862 z{O|?|ZS`FPPT9nU{^^$9(c-R&sLGz8iUI#3l6QV*K_mIy#LVr?wmX^ay&2*M-<_DB
46864 z51>%o@YD=E#inHH31x~Jpj!NZ3jT7e{(2dY{bkBE#0$B-BxGmn6zR#`GT}^lHA3!}
46867 zo4#xwcj(xT-JYYK*qiP?&*vUHL>pXW{&GUVK$PLJ|6X&-pK-I_Ph4}qBcPp@BE;}*
46869 zkvYq9Z_{J#7(%At7sFSYS=MwNFn?-kZM+)tx2;Fv?iw`p=jw4q@e;SIrcMauUCH3O
46874 zjEqc7N=jH{GO-ta!k0SX;xgRKY%6jatqaGJExGvl`Pro<l`G$E+<CZ^2A&HMT%?av
46877 z)ksT44^=fbtlHiQ1pHe4RX6fACdoX3Q$0bq0)9IdbW&^K_lX;el@z)T-2i7h^~#99
46879 zDc)=ocyuf`FYk0SW=2`be{;OIH;2Bg%)iQ#zC*V|oh{tf&LBha9n5{UKS|K-caAx)
46882 zY<aC{e6&2HVDOe7!Cl7{5%|eQ8L1#GT{E4jzV4MyXrjfowS?!9f`SuxJ_h7-aB?!R
46887 zc<@-hULBLQP*p!AjQ7AJ)8h<wXoW>if9a-k8z>c05;s$Xe|m5)JD3L-#i`fN!serQ
46888 zj~JoDWT&yO0H5)m;C7gaX36Hqg(O(ol8W`2XfUi?v-26oCkIT<RPMCO<V=)eD>xB3
46892 zV;q?kKL!j^MMfv)V^lCFcAquqYQLz%u85mq^c_$N!-%w4p`GvVtF?G7hFcBgi>)e=
46893 zPp>B;(h~|NtkYGBuvdGISDLO5GepsvGTqkuqsX~{Tkh@b?MvcjZs=P9bI?h-Ti2cL
46894 z-`~@DJonZkGNJIkny@Tl{)8u!wVs)2v6o7+1W%QzkTh>eustn3cA(%Q-019XQKP0D
46895 zT$JO3&-*~y<MM_UIY;BiiaSa4?cZaZ3x=P<Su{eO<yGLJyM+Q_JrS=W<=_z!fttPZ
46898 z5fM|3v25-Nk(|%@a0!TL7KSf+<+(>9BCOTJnuhc$T6<%ZM%=GXwlA}3f`_<5K>b~r
46902 zYrvZdH#)=3|JiXmQ-g2stc6wdjru8<{jdB}QfSoai+CwkemK(*fZJ6v?xovPB@5zN
46903 zB6RH4`S|v5LN(YD4&OQtAaDjlt6g)9#=-<pKg*7=zh5Aohu3h@M*Rj-GfiALj+^f~
46905 zn{W^`wBCmBvk+IF7*3NbVVNYW2d#+DNkt|wA<kAl+&p36MX-GaLy&~WHvfp|#n`lG
46906 zSGJTs<AfBY2gSm>+g0G58J#_KL-WZG7tUA~Mkjg(tY3c_+H_IQ<3rQ8;<_DCRZi)*
46907 z#-RkrVaigRZlYXP5w1fWcWwMm!Q*EHa42m#wVghsJgommYxG_~CcO?LBa4Po_L}Y%
46908 zMXfdRo>>wfu3S{y%&3OA-DL@0cKV(X6&%)QPD&cNTy_ho{XS$%{1%XdZ^1FO_U_*_
46913 zIy|yFH`dj5jd%IQx_vY3d4!KS92JmxE%`&vuGCG-+%2=t>hWMV{e$@HmbG_pOLM(9
46915 zS=D}9pF*cm-wZsR(Ni8%qvZu<uNrSC!Z*Z~s@+9=mh3v7xYlgKrFHBx2vK|=M-YCG
46916 z12s4KKHg^9J2|Qvrx)e^t-VQly{cn7D4fkRB!bPMSJlGJhIkTR`(3AxFkL6;`+j#>
46917 zmbXnvj40_pihq<9ejTT>vwl)$-i%#l^Y)u7)v&wj*HY^mB|Acxe=r99^DFc9o+Qz~
46919 z4-3Na5X6W)q%oonX>18UwH$#2Au$MszNBvoF&*;%_;Fa{wzqe2gP0C0*+422#1HBJ
46920 z)B*!A3^D-lk)Ks?`d>5}NC|@f<TwT$S_J#~qXW<({HsR(PyQpIA6R_I3s(LYuZ%+J
46925--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/FallbackPlus-Javanese-no-GD…
46931 zThZE98}%Tjf)$|(Vq&#TSv05tqSAm`s|csIQG_abh|-`zos|L8-|Xd>yY|@Af4g($
46932 z{=UEan9tmqz4!Oq%`Ym-2L_u#f_QIscKk=xN*I8C3ZU-KS+v;Gefr%@fNS;ufG>a1
46934 zWAY|m?;QGvY6BbUVMPH-G6)N~E>K%B{B+`j=-1<UWBuBj8~YDH3SJ+_Ks*quD}ej0
46935 z5091(P5S~Q$+`}7`-`8n>^q5@w!vUfX@S&jT@NVm500_5S%MbB;45vkAbKV7gFW#+
46936 zR-m%cVzLG7Xn&2p0p@c{RzeDy0RQEam!FpfnXQ{!Pe<?Sm_;lbO8WczarEc3<C_`C
46937 zkcUs3*ao9_9r|2TP|@RBf^-;rRoh@3lwZ|$_#xbLRm)hv7qTG$Av{*04Z<3nL<rWw
46939 z2b>?kaBG%PYs2vXgYdw%*4JDA(R$i?qWGNOXnn80-+zbycK=U>_bGAH|BUs$`Ogo*
46940 z7Yl?CEjthjtqKI!6ol5@oK#q`dR-{cU^OI1)<a|iiEJ1Gk&QI6Ny;1|H9r(Nd#TQ@
46942 zv_c!S!y))H`~^-xH~bUM!3Fpdt`Hkh$S`s}i6;ppnM@;T#7pLpg`}92l1frb8p*BX
46944 z=rX#BR?~XAp8kyfg5HJ44%)Ihw6VTw(&Tk@)oxenByO&HDcnrqW-2$+xS7t)3~o}n
46949 zYc`B0!$8Bm@&*_MV{jKt#C>K8q{3|Q;JRA?3!w;>z*5}J%W!w8!QH44Ho{ME4c-ZN
46951 zO{S7rB%Qd4kL2Lm%q0b65m`!BlTD<F{B|-^jh<f3Oi+yTQ8R_9Gntx>)#tk`e>zhq
46953 zajV}8zSX*MJOhivzAAkNQxoulozdnlY|hQ9(2WjkF%Fv&mS?(<a^&_(-FW}@GTmqn
46954 zm+BFFIH(&hwqo5~riR@QnG#;k3<s=syt5<N)bif%Q(O9E#Y}fHC6W-1POW)=xgOE$
46955 z%JikkJQGITA-o&&CG$!xQ?!J>T4&HmFwz~)d~H|PdWWLb>58@n&k&xqcuvG_$#@ns
46956 zZ5dm`)Dm4?rmIVJb&0OlFtwVgwM-2$wOCipUUPR1Q?d$<mzuOMza1~D_~ra8dxDX0
46957 zA<1ztsI4#9<xtG|?Z$jZa-&x1=y=TDh807D-Ez<z-QE;7M%xuaezgo%@bAwM{O&k$
46958 zpH7E)7_(MktlEUT^H%&$JOu}!3r@lrI1iVIjC=72GM-E)9+HRexDxl@&E!6^gS3$S
46959 z<R$V~(oH_X{q}3hXdE3ylW7{ALyKu8ZNT029=e_Gp>4E-9-}Ae8G4>ZBv~3J#Y@Rj
46962 zyGa<aIHqMh6TQT5ydqX5=nQ>8j}_)o#7YIdLeMJ(Jy{s-6?B%MCkomlXrG|n!aR!D
46963 zyqK2pO!Nlkv4oA+2lP#XPGS>;UhzUpf}qC<dWxV^1nm@bnxMxBdTI=Ly5P->X(?pW
46965 z-oP7~#hlC=<7LHonZkRqd|!+=C&pV4<IRon=Er!sF<xGbmmlL5#CYR`8Cw3rZ?z80
46966 z%dgMX2Xv933xxOM*RzF|`GQ^`=o~>W5_F-U7Ycfw@U$&2kwwlA-|_><v$of3VP-V>
46967 z^<((0#8kf?)BIba;rHjb#Xbs8V9*W2b8r~b-`C(cybY(|15AK>;R`S^{T@WVhuiLT
46968 zL?@%jO_&5v!GJp(H{cwyfaH@xvN)Oycahi0N%AiF05{-&k&EO@Vq(&3$BlR>9Zs*O
46970 znPH49m5qKgN!xe$@V+IT<$iy8r>q1qqG7lRJ9k-;aEtj`h$)u)A-a~$)0Ork-G5AL
46971 ziw4TEOvz+sy5eN&7^aS8>L`qo{XJIX4EC*c2K&}s4UY;2wDp$0;B4&+I}{_-vs|~z
46972 z6<8kVS%&5Qx2>`)6C<FJw0{Ze6FntXpN}nls%I&dZ||wb)-U#~VT#}48r$oviU-U%
46973 z>o(uYu*!=)#n`hm8otNs*lDCy7$c)`KM9ioW1|(ux0-Pn!AC{gnyoxwC#DDmQFnj1
46975 z5&PQvwYu#s^0`^sUb*43@}`C{dz-fGw(piVKC0dS#MZU;i@UV?ZF^-y*{yk;CwH&d
46977 zcAS3XhA_@J8K3+-D--JM!pW3$t+Wc9>=`TP@<)@bUd(~sZ^e}8v{m@6Jgme@%Z^$N
46986--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/NotoNastaliqUrdu-Regular.tt…
46991 zc%1Bg2b>$l`S#3gRoAMmdM_vGdM~!m=iYn89b+&CY-4P|RMSEay?2rjdJDY<LLjsx
46992 z5J-T8l0XP8Ktck+*r)HAm2|#yA%y%(zVG*$du~^|JM;E;-kDh)gc3q*WD60<jPYZ}
46993 zj=TD$Bd#NYHjI!o89!tC>@}uyJ|aRJKCirb{Oq}-g0DUkC&I<QBf^T~r_XL^zU9%S
46995 zUyTd;O^z(ud+<5E`k;-6pRa%a1$@4b5bfFn*R5P3O&Q-zh>qLZa|f+Be7$%c`w;g*
46996 zlf>7qIB3<m7d|Wz_Ooq-$c6Rm4%v9*K7WZ3_KO-qMtKOAjS=$V5uKZtIfnh62*P`~
46997 zLSCM{CCiVmzWnpe{U>d`RQr))!$%p<@)m^uR@QI7nGlzy|D>-R+K(#N2mXo6_!V&j
46999 zgR-8@!R0=FkNMd%TykjlL^9rZ{KP@nNP>iv-YWM~8d*N?KMBVhfaMib&zDwkLj{W~
47000 z*RKKApaXvyrLW59--;t_R{}Ssqkt1CxTJz}fKMto12`Mlw{p&L3UFlQ{1{+f<^JjA
47001 zwsZxK4*~0dD}YVFUBC}3=T+QZ0jHg-&^uvJ|2I_Rf-Gdo4j6K*sNkJ44EZjp^tY*^
47002 zw?Vqvt;~aE-JP6g>?)hlt}4@to#e{xWRoh5PX@_!X$95(zZxXZ4=cEFkWJpK;DZX@
47004 z(97D$5*()k^+33S<-jsvMCIPh%Kb)QJ}Z&=!t*$GATC}dqgX2$LC+*-v6yj;)1ycV
47005 z;Kw{*;m;V)(b9HyAAok1KAVj`BBY(3K>BcOp{vMVl#v3vh;-A*#7|pGZ{ym2bU2v^
47006 zjN|uc3z-f~VRrClCsSw>nPcGhWiW<*en%EC$jfYGe<4Z2;$jk}lgKJ@GU;?#$O3ba
47010 zu^YP1lY{6zX!}v=Wdrw@enz&H-X^D`?_)~c<YN*cuYmWdc&3kp27?`oYri8Nx)S>E
47011 zz$aTkpSN2`yySB9Q335lzXj;!-O@|sHk`i#e2IIX;a+3uJp)IV-eYmdcpYqbQ0YDL
47013 z%~nBQzeG%&T{@jQN>9==O5OBlr5D)CcrJ<0hgYs02wgc!w-|W2^ftSww3V#~Kl3Vd
47016 zc(U}Wu)g#vdm7jPSWE93$2QzwTG~o}kK+~Sql&kIncyP?-hK&r8^QaBc!vAMIvg*9
47017 zuKNw0eZdY!U)`nGA&c>uh@}%a?*{+4#{HBZtM`q2d!wIoA=6(=+vyk3$=jt@X-nxz
47019 z{v)9AIr@9I+#fpz0I#eL`r~ci!m-lUuqUTip~1YkhyGX!*U(mYm<%)Mim)qqVPBws
47021 zIIkyyZiOGtBlF-Hfb(JSvIx(7hHHnF-V~hZyT0@y^W(TLa64!m1MFX>&yNOd2JO$d
47026 zx6-E&W6$IIT*T`<$aVz!S_?jo$1`E*;OBVeLBIw1&%$vL=)a3LW8kwz(El->e+2fP
47027 z2%r24G4un-4^U@W52U{I8)8BZIUe-VXuk#hTv~dJEeAiG*8BMUDtH=!<7vPIz>HYE
47029 z#-7D-4e$nNwn8=s=uJl3<4e~G*TWZ*kn?lsd?NUs2Ks-4PQBn^6)*?S?vMKm@cdHH
47030 znv3>m!(!m!9z2_djQ65%<Qy^yxdCx1JPqIGd{%M-j{)xgMjV`1TEJtK3FUY+;(+HP
47031 z<PhY!w|PwPI5cw0?~z+}lSg>`SL4jcT|Djv<&}Zlf?QP1FGe4ilw;Po#-BqUM!wli
47032 z|NI$)XZ}nzFM&tH?i@UaRC(om^Kp>p&2>h;9wJATPa`+-KB{tY49ZtkzB!LZUgCW6
47034 zn#VVMpO4vw{~_OTdmH|R_&4$};>3_2G04Xh!=ERV#~CB$0Um=!F5*6!uEfKjd)51-
47036 zqaNcxJvLC2EiBh$)w--wn}v9N#%nWPmsM*rUXK~|T}$a%PM6c<FzC!T=+6M!z|S*-
47038 zP~mkzN3WK3QRR7n_t|BAaFqEh-EY_dGRO~+&#QeI^5NX*tIYpx)pkbPLA0v;@pFF7
47039 z;B^x50`9@`R&`U+OQ_n0^MwBI-DQ6M@BT9p!skE+o*}1Hp=>87a+p3K8#v6%hJx#X
47042 zDji#{>nX-zb~bWd5#z;5<j&t9&I?9;`ZmVa_t<N=w;K1ZMQ)1X-WuHdH`=m~aO_4d
47043 zTR<MbSpONz0H0wFfOCwQpRrGH`~!{!5(6d!vw;E-1loWGpciNb_+0&r(j%p-OP80v
47044 z3!GEBqI3a%uPptrbZlvJX+K~Mu-;ffF;<_50C@158b?t$8^;UD79tZL;cIURk|zzM
47045 z3vn=<EFnjetI18|Uh*LM4f#SAWse+|<8rq=Ql2C)l$Xi-%ZJFv$*0I?$>+%D$rs9(
47049 zd|Be|xIZ3_cNu)$xqXDe*H-XFOMeGv=My5Pp}|uKU$NSU)WQ3rrH@L_S3`4q5(x9N
47050 zt$md%mThltSGUVJquXBC_KR&>w>`TJF}Uq7+djtc`+<A5-G$$;Rh}P(^V_%0-!^yK
47053 z4-g5KyP8~1t|V6pACNoAkH~Z6=a`{iK`tZBBu$!N=|1ucatV2j{8kt#950+GoFsfl
47054 zIGMZ)FUUj7-1}=u3+Y5gjl*lR@Q-?O9xQPTnMUp)sHMp3!hRSjGs6DD8sPxpK;abO
47056 zy>P5>gRn(7jyx;eB-|_(;Da5)EyAs$U37>}Q6slPm$xCqxJ8d}mvFamkMImp5K$`f
47057 zvY9+W9u>V}Nc4$e(JuzXm>3m<Vq8p!x)>32Vp2?zw~^J}A%Cc-u4XsjzOz>a7XUv2
47060 z2kZ;L6J6-XjW+HRfv1szmI5CT;>DQa8%v1p0se&4J{9;b0Iv%)0Y3yVJ_W&Z@Ij<|
47063 z_6z{e)nPoU!?k+k-+Jh+9(_09yx|xC{4}C{<1YwlT0r3Z0BqM12N0#LtpN1aHiwXQ
47064 zWaxJE-;Tc8`w8hl#_4#MkWT2o^DRQUAY&Kw)U5!B>mEd4&jbMD^RO`hY(DH0LWb9r
47069 z<H0yT82+>Yv^PL!hrmA$f!#Mo0qA2R=x%ZY*Aa5)EJ6-b0n|i?&jwy4Wb;0R9D(uo
47071 z=mcPc6A||(La!&GkCToC5I^6+nDHIx>g34)eB>1Hek$~EDwKKZ-2h_vG{}D%;^#Ej
47076 z!@~d^uZNDWhs|$5-nn5F@FXEO_5i4DZ-jntLJZ%8JaRMQ=H{b-e-LsDWVjXWZiSED
47077 z2HtOj47VW`Z|?=b)9v8(j$r_N=njmqcS8Sn!gfDG-na`n^DgA8yWlr><C(jmzk49p
47080 z7=H>r`m;s=dG=?Bp{Jpfr+-bzGw_*b&LiYm`0lgt^Jii6=MDnkx6dQ5J`Z_*z8Zi}
47081 z{{pf4OA&zI{1VT-fZX^ZuKfyndI>)G62_#Lk&j=7-~Sr6{!Idaj$c81y$ar6gUr18
47082 z`7QkIcNlM8M_zpc_Iwku@D|2_-(wv317!aL_;?#M-hqGo5xRXBw*3?Q@K5le_mFqr
47083 z$9V7o?D_#de+b|D2tM`^`1~{Y`50r>$H@Pmz$ZUNtbU64_zPtG3&yp-K19f8u<hR<
47084 z@82;4`yBT80(^gg=l_A&_!4ot6+ZG6d~+LW^=-&S+rA{EUq_`_5A>s6yOmH{13XJ8
47085 zn*sckP~l)g#TMXigi7BbRQ3Zm5~>UXZYETn2Yf)N3D29JL-BP4p_T^V9TZ*X5o$wQ
47086 z+Ybq~PXhi-sAE3x3Zc%!3DqLN_X%~?0(jQ#1+F60GY$BhQ18)%`efiqLiG{AorL<)
47087 zpZ{_~13ut*;1fcFOMzby8X5=un$Yn6!0!o-ECAjlG`bx43!yQ{61M_4Cd|M&0O%yq
47089 zLhFwuv>^ffhR{Y_YqA3`650&jS`^?1gtnre)}IjChWl;kuO0er-%e=96@+$n0ie}&
47090 z6rtTw05<8_m(XDr-~mF1L+0UM5jp~T>&*i{CUhj^9f|gRcM&@3076H{0mw22Ivu+o
47091 z0KUeZ4E%}E@p}Q_cLMY|;dMeMUP9=kAOIUqMxRr_<CLEhIu-4v{*lmWYYCl>`_s|)
47092 z478a6+s~W};F($AZ`N4=<{`7U0DmQP&JqCrGZ+3e_jE$%!Cv#=U-L%;@Ph?+6S{CE
47093 zp?jqP&|CytFCGKH50^Ye=u-5z6z9v<5V{<?SOGs+aSfq+F9RMUbR}r6ge?0o;7|ZO
47094 zu7V9#Jw)ifMF9S_FZkK-w}h^S?e^~go*{J2MnVsOe;%-n&;utDdQc2Fj?lF$2wexc
47096 zlK}WR>NY};-c0B*;QyHS2tD=|Lbt&Gx4_oN;okAE`w8gh1o-NS;Nheu06zDfBMCh@
47098 z$Z$SvaRGF40r<TTd|d>aU3?v(7|-aXkma)VgkBE$uK;gX!mqA^k6sNuT?3x3MceN!
47099 zBJ}%+p&xV-dL4B4L&WR#ZG_$co!*!t^d`jAP2lTh*!X7X`WEzgE9`nJc)RUH0DgRX
47100 zHvqfeaVDX6QUH4V(J27p_pXHibbL2#fw6_&177ce-1klekVo!=p6=HG$az2HdH|mv
47101 zfL$L%u6YPF9|Dbs-X`>6*#BYZ`4N166!v@c210)fnI3Zixb_(6KaPHX0v-JXKKI07
47102 zg#Hw^`YHVXN#vI&VIK@D^eNcvDde=DZ2-0s`t;likhh*eUU&w6`7C1oIkb6xBmkfP
47104 zYw(rVVE5lXLFn&pBJ_3SwAXR|2I#(-1;E=|===9Na1x<^5CQ1!ZP@P}_~$#|?T^sG
47105 zyPp#JC&>8TcL{wT`SgAG)d$e!hc6KN5$yhF_}8BwC-h_FsgL0kpIl4mr?B&1V4J_(
47106 zOXy$W@1NoPGvuVdq3^%L5B`pP@j3Ya0(tBoKO^+Zj|ts+2ccg<-fi&NZJ@UuaorC+
47108 zBFr&`FlQ}c+DyV+mlEcFo-oYOm>2N<j4*v4!u)lF1&Y8qgoR!pEPOO!5jSB`6JfD7
47109 z!s5pfmbjj<<T%1o?Svu6v&<~uZNjqPC$}$QH5&-aKTB9~0%5i2v+fYW>dgS?H2{s^
47110 zxmf~kCamRn!djOT)^-qK?P%MvhOo|F;Nbrrbj5*R5Y`PH_JH4ElYy5A8@`0F5pxLZ
47111 z#pjW;G38!F*r=6+jXr>|u{RMm{zJkhgn`w-tAtI&^@)EYY|;$i3Bo2rH<N!w*c9k^
47112 z%AX0Fx*qtPuxUpC{~&BS?oU4v_=>O@rx7-j0t*4?cvcVa7-6$vo7vFMoOu9voI4%3
47115 z_}>IQ9130zgIy1UFCKm$VVf@_><G|3@>s%-+DzEdu;($*!?CdcmbHW(2j4j!GMw-n
47117 z?+3segq;stoR8-&fFE9felLWbF9eN?aJ*OsV3UiXpNl^s>=MMqC9v0}BLMJxX+L3?
47119 zp(Vz%&$lmS)3)C!-tyJ#IiiFbFj!hd_7XSpwOL(j(Sjp?AO*IfU?{yst|4*hetsi|
47121 zef3GXPkIEJnt9U%8lrhhi_`q(;-iliH-B)Ac;trS!w(e?`3gf>|4ASet3I9L&+1A-
47123 z$YRW7%V(rWPD^8eDlHc}$+g0EzA++X2O8-EZBw`?D^q=Wk2#f8P5zY05)R60O>Txs
47125 ziH=lMRBDpbrd3G?6DF<JJc#nUrg%tDz1a{8Cmf-Xw^kW(hHTyjc@Q7aOld5cU-}0(
47127 z8`rex2-<xOlEF^WA4lRYE$zRNVB$hTTr0}%wT_<k0eyKrvNE01Nv9M}#~KdE;J8d^
47128 zw3>>Gj&xK~$H(i-R10a*8MHZK0bzjb+2&Z7sh(^|Xo@+qNzR4PN3Iqxgyn0$*7o0k
47130 z?fI6iSZQ(TPvlBEtSoizn@T;iDz%<64@m8dI~-j5F)p=e8lTS|#)Y;+`*tH12852)
47132 zX6_1?0X+`Zj;xe_E8c)lv!|Voyv>wJ$)-X&9FB+Tld4yD*-W0i(~&Y8q6D)ZXIl3q
47134 z7mE06JZc~y32D8@>~U*;GxG$49>o=K$nm%%VwN3=0CW1xN+>AmVY?-!yTW#@VAplg
47136 z)<7uh2{rhVn!7o`yG8K+tn?|@ulsBCyWSV{Ifrx&{i5&w8@+zFrK(^@A+@uDzk-5G
47137 zP;ilSaK?A${F`XF*BNnHf-bJ&P=Kpgmi&PoDpmp^v7%zP&rH3Bii3998Fe|s13Fei
47138 zL1BoF{ld;V2DAN-lTzuGGPCY)$!yGN4!ZZqtTUnP#BBfLTG%GrqaJ(AWN@o_&1yKn
47139 ze1o{P$A@@?&*{Zzx>eXnb+MLsk?(Tt?Jdo|mge>j-Of_UY&MmY|LO^i$@!Oz8?j%(
47140 zR=e-2VpC6EcLjuvrp_52f6CI+7c`kL(JU3vk3~!j>Ss_#=;v`ya7@nHJ=#BPR@_!Q
47141 zb7pPr^oZMU^kX)A!seb~UKj6Yj<At@D#nR>C_l1X?&e}oq%Rhnl<e#YTAP-SDfR>%
47142 z9$}+8womg0O;dYaP8i@Q;Q;a-F#u=JRy*N2g!ct~qoW+}siV2Qy{(m>DbV<lCQHg=
47146 zB(iO-BUq*T6z|>ZsajT%<>iW+wou7r3S^5etKTe1c0_J6?5VSvRDVNVv{h(Qf@wv7
47147 zx;&m@)^By19n9|axb%ok^2b6RTa44~e~_G1`Vrq&tkC^tgqb4knR5Swaxf!{f-0Ik
47148 z?qUw4Eg<bNNX!0c*kg-=^f@TUE)Wmosawd6U~ma!@HS)2(S7<3CI<6R@#`GCX`z`?
47151 zm@R0%-GOAvFDi|7T4Ew^-T!w|gQ0H^t*LCcS6cV~ooOR`^jJD1C{1-*5>v_28Nw2B
47152 zkT{LFNYqe`0HeU^;A%XII;znFjjWR_xnfebs2C8k-78nAcAILmDZ&!PoJfa6TR?H8
47153 z1GTwP!#AidtHtC{Wh?qWTUbigi_?)Y65OA8-yMc#g>qt)+nPH#4WvY`XR_Cs3umWf
47154 zL8&$&sTN<-tf&r?Y8RG<o$+>GB=43j$y7)%1ua@8kd-By>QWV#4HLrBzQQVUir7Fh
47160 z6>~L{o6y-Y!tLZxaW;PmNicFiIm5y+D#OO{EHkR8*T+Q3=&!58B-~yzsYxr=*h5;m
47163 zE-B(+s@W{sbkSosyG{L1Fv%H9_2_z3Rx&nsK5vQ)D|jsRU7ezuEXE~^6w20mU3CFr
47167 zD0P&7R|*t)QpRKxY!;8->@?|ar|7aLqYiUWIJgjSf|@Ow6<mpgVDUGn)Zv8E74#%l
47168 zWRH*lAv6am%A;q8uJGik8*V1k)ylqhdoY`KsCJ*n?##8O=t;I-zp80=t*#+!R%;zz
47172 z64s#*jA8_<Buk$jWxA5hL5AbZ)Ysl*O+^9`49vZw6XAMc9rM-?FEXF*iNyV4Lm}iV
47173 zz>V(0=rIWusf{bQJbJWOvH>D-U=TD#vhGaK8`Wy#S}dx$gHB;pE*We~MT@?g)@I%3
47174 z@`l{jAUgb^u#n6b#}ErImfc2&<zdL^&ghL68=5n9wGBDV8h6@-g(HVI4;$0j*z1qP
47175 zwnXB`qLWR+IC7kL2}xJRG(*iD#u#6XDp{$HZ~Oz|t;}ma-0WfIm^Y~i0+S>O1G1<J
47177 zr^jqE$2e2{hm+$<&tP=o%O}a*@HCjE9UOJ#D-1C~l0=)z8DbWLpHR`Cj#t^~KU{V*
47180 zs#_2>ds0+vvJ%)XSOpePJzAZ~5^xAgP0H-HSbR3goKFU+*`Z3Z`$9!iL{pe4xawwB
47181 zhshR@ZL-z<|DHG}2pMFck1<Zvk+GFvYBt2#Q!wS)JK6_{WX$OG%6P7%AWk}1=VDqe
47182 z#$?JU+{mKX1X)BN*^6P9)1URlBNlDCL-nOwZ9%)D`$RcqwxE(|Zj*|ZjPQuST&A4b
47183 z;LO+f>}H=$u=KWRF{hUFsNSZ$$(E;*-)A!AesA+zC38?`KFuB#W4b?+^MsN4a>7yM
47184 z0Wo6C6d{cv2WG)L=F)r$Y-I8c3+-a-{tJR8^kcD@EnYK*ny|y^6lKj6^VJDQ1?^xv
47185 z8a7!i7N=isYPMN56MTHo{K8qCwGEzN7@`lEVOSe7wS%V^d_wyHCbW<LD-&AHmfCqj
47186 z`$1(wYxA`3GNC=CG~TE`oxJ)q<`+8(<n^khF*PRX^@}Do;5#`GxL?jkeQCGFDM-GA
47187 zb)wB>6tHhsI!NrMi+|py`=1gya2KlIZf*WQV-5YkYlnc6CH+n0!_wZo9xo4?#w;Aw
47188 zO-E%)dQmj&jyR)=(_-_AYFf+mH#Nn>)8{12&X&$VUQCPiT3zx#vZw!=RYP0UV-C7)
47189 z5m$B9Q1<)3c8Rn9aeLTltQv-F)m1}N*gs^|aK{>_%UxYHEUoCjo19izuQBSE7GwIn
47190 z=k*%pN}B7mQQ26nvH8ui=yW+Vsj$81F*(P~%8s@6-z}@DdO@<;-Nmfm;xs!1zE<Pc
47194 zBKcfjSFyx)s#g??f_mjYsj~h5+v|JWUjJqrE57Aps~angJ$e7P-dM49j~dumsh|4o
47196 zQt@S)jU5$dWkaRO@oo20b}bGE_EUCO9R8Q@c0}5~(QZd|%b|71vXtSL-)P5y85<6|
47197 zBuJD-|H*!X=F-aB4PCsN|7N=ld#>k|!TSx?`gHB!4To>NWze^3E#ES*TX)_vD2(mi
47200 zT}eG@kg5&rAa&rb#CNR2`-ZN=f3szH)vOMz!v8O<ojYV>xmR!NitKsqJl3An)jh18
47201 zGk>tW7Ho++`C4#dSoYhlows77_-2deZe5Ch!?klNusy7ugR8-7=jVu<NQSiRoTM<j
47203 zn=>;-47O)H7QHFjB`K*w{6bf#qNM+}1@v#V2sC6_>ucA5D66aiDZ-F7Ag#IPpRNHF
47204 zJ%iSO9Em||K+LIIj5VNuWp`^p-*{m?(drz!u%6dq@#@05#r!o3>z?YudX$w{)_L-+
47205 ztgKs|9;dOk?wDLt-(6i>S1fj$vAS+)3#425luoEcvMZn_CqnDLKc^czD>K$A)WU~S
47206 z^`eA<-k1(l2VtK_s%`aA*6<&{tRFXWz@TM);p-~<9V_~bDGs|slqJDjUd}HDb`<u5
47212 z?fJ4_F$W~v5w@x>MRfW_pVJjMMb@KQu-4Dt@<`aG1e#Q@DB6Rf-|h<h=P<J44b>X{
47213 z9$EPf)s8(Z-x@(yUAwIpcD(Va1#Aw~DCIYRWic2KjkVkMyhrH})4m>rmS&eFwfq7w
47214 zf8R5R7K7dZ4p-k!O$N1sy}7b%>$HjDPA{jvTISRJKfq`C#ngY5(f_8UUbFc1OTBy$
47216 zYsn-fQ!$mP7j=8c?u<HBr$|k@y+=zp(vogUYQ3*`)0)XyNb(n}9S!mSAWmrMMp3VD
47217 zvS&V&ucN$YVn*RThHR9qm}xYU-fH39{<W3&j><<EQa5CRbs9B=-7!I;jQ{m;i((g1
47219 zMd_-llDGezp<kc)zh44cdJ{$X31Zr)=i935ce#OjSWe`-lW|?3TF_Bb)S4y>wLWuu
47220 zcRoRVq7-Y;i+$Pus!l$jFOW^_QDgU^JnJ;PO&?r&^3EhXWuhW6*=&-fs3&N0nldQE
47221 zP(-{Spa#|2I^3$}r+$woz*=jBR4g0%Z}0tm`b%;ldju0m-g_&bF&n)jP|8!(7R93s
47223 znzWEtl}(-iZON$?W|DGs;r}R3s(V=JZ?K2;^*dOyT-m=0#CGgodEDjwD`%u8Ro*kJ
47226 zkd-bMmXM>xY4F5!xuP?E%8L&M(Ws#32CcjwZcEzj5qndc!{<u+Flo=`Q|b*?tEQ?p
47227 zyRbyT(P2vTX6(^G+GX}z)MzrQo@T)$+-$NKGpPS*ij;H{l{`r<;xD4^6bDB;lbRZd
47228 zh)OCPOQ~AKu2>Uc!5eehGCYpDOAE-8r9bh8`qwnPey4_3ayyyLRxuS-y@Lddzd+eU
47230 z(*I^85~qb|G}3<@KU)}y#QL`kTziv07{_x*q7{869*xF*QT(%MPJ1*uK8B|`mPTW-
47233 zH(;56`rfUnSZ>kk&Ex9lbc{aY`^$Uw$x%A-m}Tt^Q)@@8Upih-FYZ4`_6+Nauba2=
47234 znHiSueBY{lLNRm7LhYv3q@HjIq9-4=m{W13W%2S26I*7+=3KOKblu|dtFJ$NWHhiL
47236 z=V){W(_TG*!0qmx`n^j>wAR`L-IJ{A?|*)5msyi69#5hpiway07jHE^s=EB4kjaxB
47237 z*OZTmroOnE{)JzXyn#Z!qM-gK8win}q?<^HPizy(dREar&n@lg%B)rv#av4{(2V!I
47238 zee|-uHueRVE}h;zIvP5cS~vgYUNf^hF6_U#|H3V<Wz)mM@|o5x?nKeQ*Q{Cf<5C^H
47240 zOscI_V-x8nvlLv@-~Unn`=dPTGaa!RtCCa46vwtVHu^4Q#pdR5wcge8adk0Q$PPNI
47241 zOTQMcrne%S@c)xhvhuznAG0e1kg*C?Q8msg4#hwCd=I+wy1e@7yT<BvTiUkzd(-l%
47243 z9J|+-D!ASLNptz|KsJ;<P|js_2zw$y{W&89I*{9<thuE*-BAsT>fTmmo3=c3;zwjl
47244 zh8=U*-tkV<k*;wI<|o@nrroBCY3}T^U!M|iXZvcrg~oJOG*--qB<8WCFWR{A%M<(m
47245 z;S*F8ULB}2G2|(H9zY#-d&(W`4Yw|x8uZ2Ib!J;bvfZls8gyqd7%VuVV0Sfnf~M(7
47246 zd^8(cgFI%hjXClu(UhxO_=HyDH~Z=mEKu-g`q1i+rG7erUCEcMrCfWpQ0!=l3S8}|
47248 zLav+@Zu81+iydh|vPv?ujHnqlJK(d{&7YF-iGo2RKYjI$y;D7HO;%UL9Z9rK5ofIH
47252 zi~IKK&5h|<Q-(W4TW_>0?+gbuZ#cWOHWpAtQC)<PnNIxlT{a8Gj=|h~=&9sfr?J^k
47258 zWKQweG-cRcG07LOs9J4(KB~y(cs8F7E9RQCIBmm%X@%K)DgH*!)qm)7Hr8vY{SV)`
47259 zBoLarYQH68ov_q$sPZO|^p};%i^5cLU?r=(G%E|u<-J}bi~H!2R<m8oO^6T6>2-bi
47260 z);6EO9A-7}-4I-%==10O9hm9ga7L@%-k4uFy=lw|%i0f}9PXoQO-k1YJ)HNX`P5_?
47264 z)BH8gRC_L-v&9>_b2d+VJl;GdKYEsy9g&`R>Ua87HI=imMYk@lSvt4Fp*0*moVL_w
47266 z>P_)zV=y<P#^j5&-A$$GM=y@p$LEXFdovc@6^ctVV2uR)IX#&a$24Y+1KpXWui%mQ
47267 z^O?GC%+&cnQ=wg%vMPpW3aO-0dCl`e4`s4NwOBp5uI%c9k{B6NLcUZ(!eJM^iTX$j
47268 zQxuC;Vi-n(#isG?lb1Nt(?%E0X`3697Pn-3T4UZ(eRYkd=6v6g!wwh}?wNlY?(FNs
47269 zoys=r*G7BqUUT-DU<7+3vC)s%@qE0<B<qD-^^FF;JZ3ECmfxk-ku2}irtQ7=R80}x
47271 zHj)Tre(A6DRfM7$6@A{Yvk0-+&=olMkT(V|DAtYXY#WxVn{e$6d&*~yh7~0f8~=_e
47272 z5|VAPpoCf5c)Pah{6i1iG}(4~{~ff+k<e6oDk}Qpu1H(I-xAVA)s+egzJwNUAtGmj
47275 z`26$5pX0ev)J-p<v-lspa(5(@Q3{==P<L-HZjC6N!>oeJOD=uT_v>YOb)j{?#_ZU!
47281 zEDK!-R(mV+gYq!Ir$kVBTRC4=U)HWJI2&B*x>qqy_$t;^tFB5mZ(RoyndGU<ceUfB
47282 zwo~!Sip6hknb#@^LaJb~29lboecr>2ro<6rO<iNVRJE?XsEC&N-QLcwT2s$NisF+(
47284 z%V)gSe%-GQpMCAw8#AGn%N{@Qkms&xK?fFeFdH2>%fpc|<aPL5T#B$ZYef+aU6)=m
47285 z<&4)ttyet0|H03FuO&3A|E;^%{_;ldvBW|zB9pntc2qsqGIHeC-6?ISCMMA~en)6a
47287 z&C#20iQT+5dh^ZIA9T=6#vv4o#6~ne)ue-yg@V3^z8yk+8IKy!MJ4L*`jEc#sXJma
47289 zv3R2)LVIZ~d5=88-!rI`PCFLyHn~Ec`g%t;E}5n`oNKGC^M>jZs;4%=8pkHrp>bd7
47291 z@)G-mH+ScTl9mtDiur;g6&BU;$tL=kb!1A<$Bfs}Ylo*M^I>%_aNbWI=JUBS=ehFh
47292 z9md><cX77M6Sv4=-80i%Fnhzz=h|Y!+zy)(@VMNW?u0FrO3avnjtay>ULjBII-NYa
47296 z4(DsEVa=6~*aJ>`Dp0$0!qN-p_a7lRTSIGtqhf;EnxB*8e{$t*LdaM2FMJNuv^#DG
47297 zcpbuyMU9l18A3}-xQ3T0L9_c254F&h{Pq2vmK}__<?Wetv^nYu`_)LyGt(0;rc*O#
47298 z#BIe^he->ET<%m4oPQ#0`USfa&QV^t9n_0n{sNIQbWFcEACEN0-2Sjh%d56boy={Y
47299 zPV$Y0S#<AYA)cB!Jz-0CxUDWnTG4Fwrg;CIgZ7W%6O4>AsQO^i$SwvQ^68SYXUXua
47300 z*#nf|Wpr=8Us-Xp)UX{Cs$N&1X7UPsnER@GkG@LHo@}`nJy&ivojpL_5#Hk}9iohK
47302 zw>24;YD1>c9qcM=s^D|#@vzC!?9L1?9Kt8^>;d{Hc<}IwbSIOP*=X6_#R1+tKF-{)
47303 zQZfE9;Pd!0dSWQA=8!X_b7psU4IDrKaPaf;`%rWj5u{zN(8Z9-mW<2AusXWE|BF4y
47304 z=xlPQM-&ce9DKnLnvywW7<rwgj4Uze?QlK?zpJ^vyW5#aPhxgE8<sevyYJ$W_PVtV
47306 zFNo7K(1G!V-prtP(>Zx%CwAz*dyi<-QpsqMT5ZCEgPB{>w|V@T-L|Iv@=deSrgU6P
47309 z_iu&-q9^UDe#mq|_66W%gRlT2dLwtNK@;1`_E>e%8j=e`H)m+rEqiNH`DD0tT)wW}
47310 zXR;>r<j9(?Rf2A-2|7{{(Ui^P@<@o8VSTl2)9Nx4hoxh|L|77C*+^>G0mnOI{a-p$
47311 z9+NK@X8yFtm5&=Mx?j-?=`}py2aU{?_1cr%&f!z%WSth(Bs#5`4qv2Rl1CkP@I0T{
47312 z+!9YX9crLKkBuiP*`Lgy-=nAD%uA9`avK?qqGu7`6Uvr%ZuDgJ3nK6#qqc5o<|f~9
47313 zy}Icm>&D7{`L<G7W9Q9u;{mP?DoAdJ*DD6%R;woz7-K6W?WSNzJAQaH?}+vPG1lEv
47314 z_^~MzbV+J7>V4Jb2?r#>q3bKXR>`7LPhD-Kdze|W8qM%jFkvyCkrGzfqS$@t+#<VX
47315 zxWfTibog|WO|zTAL6>ZbM!bp6;h`FD#8^68Eo9go{5wm=w-2h{=fH`_TiF6anW2}b
47320 zZp`R;y{c!`%>H*ro<<+l-MX8K(P&oC;t9d*Z%Ikwi0xbdCB0Iz3je(?tl}eE$4(kN
47321 zau*R-?aBwb=q&wKY!p60Dk!h2RWob3F6`jnZYf_br`>^9h05P@X>R9Xp_gAmR*Y1k
47322 z>t#D-+fw|YZZ>k=Y<DOgRg?xxN25Nzd5(4cq@qd9j;!lh=C&oGkyxO+kZSeYYl8Q5
47325 zU$E^c?MLE1$T(TdvtOn%_0kqPlRie@U|nnzJBeM)ZeUNb->~<&-|~TgYnhKkvN7}y
47326 z{an2db(A;7Xyw~g3isOb4_}86tA9w(@K)nTs3tl-moIN@wsj2b-Bt|3_YEpjXs&qf
47328 zmg?hP-=OW<GJU&XgtlD$ZHUP?5B2iqV)>^ktzy_=ci)zwJ7^mODzq!_&<|dIFjg*&
47329 zHdT#PM*M-FvW|vin|34JRMz47TJXSbVp)Jn%CWP|(9yE`w;gv#EDc_LlND*l7nF8f
47333 z6DN1usI$)R9X)BZuPNY)S-f_COtS@}UT;@4KdxC63e$%j#_nNS=a|tU&7*tuShOaV
47335 zE3+qrr(JH7jahBwZ=7ka>Ye1ijH-!Lux<2$VXme&pQ(1llzbrU*HQ(OOAWdLVc9Fl
47337 zU6O5PvmhuU`;w)4i(;}{wK^oTE$Y=KwF@kiNn6Bx?Wg-tYKo`)Eq#l6Bg@;0%UXl+
47338 zh_|M%GceUQqQ@Ke=_zX<HmNB!V@lZO!CW}g-V@G`AD0hABY`RVWCI;F&XDGgXmidT
47339 z>5W?gA*(DYFr8U;MrX{K=yOt9A8i`t_R~Z$l5tb!Pr4<EiFUiF*YxDWwN6u-k7E(Z
47342 z?U*rhhO4eIhb(-2?0Lf_`_h?T){Y)McZ90-Zdm^K=yOI6eoR|A&m8I6ch2bZzPfMH
47343 zp(7XGvxezPB#Zfz!<$WH8k1qCR+qE|vZL0_oOAYQ)m}4l->IF8=C_)gIz8!J#HZ<@
47344 zx?H+DEV<PaR*jzD>}_oCz4-1mvLMuUr<yJKg(-i`(O|Kwo}gvyNUO(ZQerJmdomTX
47346 zqOkFZ0~6_NMAzey(V5PO$s;@==`~Kh5EG<&?_{&H)$i6_<*z_8EuJiY1u_w-D_^!b
47351 zMbRRqJN+pKs^;8^ZpG6WnZCZx*4~r%=%|9CjX`@`&v;J;Q=EKC4CK7-R=t1z|6%Vv
47353 zf^A@p4LB^eaoA<SHoG<$J=>UPzqP&g+J0b!X7-$_y0>rl%wYDt-|l<6zXdUpn4Xiq
47354 zbH4BY{l8Fz77=(6yz3Bw2Sd~{!%z4^L9d-;X`~dTrnl6X=z~6zrO}Z9tTB`8I%iQz
47355 zmVGm!g#|7a)(I#IhQIO!$RJG{rB({}W-1w9W)VPzLqB}M_v<7BfNf=9X5do;zcTRk
47356 zfxiL1ZwL7-@>R5mPM~|yE%YAr-9Vjv)%7}V1ZN4?Hf&c~?M4}h?SS+!K*Np0Idt`Q
47357 z>6zBGcy^URFB^w+>}lGzXgz3wJ2sQpHYcuKx~8~_i2azg!=bRI8yE-X+FrW-XS?=N
47358 z=~c(s7VBD5iS2|7VCM~YjP2#R8+4OL+S`ddPU?tb+Iu^7kU}3$-C@qJJ#7cp+Cy&V
47359 zk~u%qJLesTn@;sdo9&IkjI(sN!-g}X^UsKTpnXSt!%9}-`bEGoPj?hZQ@Y6s4pHf1
47360 z78dQp6TP%ww>XIC2On?&o>^!JZD$9(Y?<phJIG<L#|Q-DChJc`Jdm>oYW_#Zw}FF$
47365 zz`YW3AswtrF<N9OnWTI^HkbxlSMjL<0T1h|C0;JH7)kQ^JuFwYM&w-G^dWSjodv)m
47367 zIEoS;jI?M4EXc?bg-CX@rWa|^OIvcVVMQ|xJJ{hxasJfhv5IN>gZo;+l%Mc1d`OIp
47368 z1IdW7>Xk3R8auTbjaeM-qk`g-Z1}aiLP;SJRKh|wAx6T27~t@KgEaS(Qb&i?=-!9{
47369 ztI@GQBH>5UrPt;>+2fVLIL0JIF&m`ls8$Te1%l5c_`S!_zwLpAK-8zDD1aG?ao;$V
47371 z+DimGwHk&P;eZPpW}dzBkXOycC+@yE;g2%3AyJbD_m7h0%c~y$;g7y~{QRgP7g--e
47372 zhDL)2W|M)~eD=@<UE{rT!E&P2QDP-isSk#IisXm&ZX}Kn9#u?40y2#$&>j>t02eWT
47373 z+Y+tC-$woAM6tw#ro%Wnx{?VlbaJYM65)v5zrbDl=$y|-06$n1Br?B{N6{;Ld80I#
47376 zXR9sM0G7C1F1+=4bn9fnw#1%G&<^Svg~}4Rms->hY~hbiQkNSwiV6i~iICfS6Vbt`
47377 zQebt}7&#ua4|eMgF|?2@&juq@oI)r@O&fu*-z)~{%CVKAp=Y<2bdRWJ6@ZwdSQ;8?
47379 z>cw%272*by(x%E*qoc>Sj_2u^b<rCNdF{FlAwZis__Z0SW_F~s_-U{m9&Sz2JdTkc
47380 zzy}Up`D^@-vG)%|2KEe`7<drcY}e>^Bg2j*0{R$<?FjC`@DbFll54Or#}Rc6Vb9Co
47384 zK%TD6cLrm)GIRT(E5F`)<C|ZX(~DtbuO<wQ$b4gvk4bpu*w%vNQ-mvD7s3q5M1w>?
47386 zCeFqYeb9(>%(UcKS3B0$HPo7IJZ-3fA-hc=ajipsV@?AK>DoWAvu%!Z4d7B5F1m2D
47387 z3BYe860P<Q^1;cPa>xwahCvP+gV<=Io4Ssqo%A-F0BU#F-cMP0q;4Wyf8k=g)oo^>
47391 z>p@i9<0S}65*0#Z#Ieb-+n+>4g#5vscWP0^uxJx_%h9<+bUc6tD(0cL+;!X7GgrR)
47392 za^tpxvImbe7Rr%*mvDn>-gzQaGMfP@&9z?*E76IWq$%-ACPRAx-pGbjNUMmd;^Qh)
47394 z3PBvU9RTX*H4iH4J_!|1E&{i9dOvV$NAEiI>*G(2QOOj=M@lJ#S-ay<!I$}k=Sv62
47397 zM#iTec;=Szn-_F-<?X+EIq&mIB5?RjfeR3fTF^J&aOObn#I0sMac0j;?|ef!G8iXF
47399 zk`_aur@W$HrWt~L#dheRa#u5&+*Gc-&*y4;Scs)IU<1@w1_lN`Kk#1I_pt5+b(|h&
47400 zaWrnV!sBtP5sAiz;!&#;A3z4~2O8%zHZ-8a^l&FLyq8hw{5izCG)q!`!mlf|pU~>X
47402 zgpuJ#Z<~I{(+`zfBNik3D-r9?XWsWSLTF`vbU#7zzGjo>Lm55TsGFX~t%cG;Gse4<
47405 z`y>tV2Q`HNzoC@g`u;1Qn7Di8*e~BfKXGE}P)!*>)fl})hzZ5bBOOoR;+?-R_1x$7
47408 zmuSj{HnN!4CT50tgv$q}!0GRK?7&-ob2gGX_s9!ZKC$}L(NBKx{f}V;j&dpQ+=NI_
47409 zjF*g*h1|tQp5C*1$MDln`%b+4z%01czkl^hh>ZNM-CHL;hTE}etX+4L|2%orn4B3(
47410 zj4k7eY53@1-I9~#Kx0~EQl(Ok*Y?DjQnTb2T1%DWzSR-d1Veu9>bH>JLf+|o{-tMe
47415 zz=dhOcbM)*IPB1jzH--S_d#sE{kY`!dk{VpD>r1HtW{aycN+|!lO>^Ar6iv|6~ji(
47416 z&z{-!P?jFuUq5`yGQs4M+&tp-YJ4o_pC`TH(tY3kLTA5SEcglhOX$bJ1s=KnOSM}?
47418 z%**XsZ|3yjOMig@H#&J_V=-kW*GBgo#PIw7;6sfS^p$ivBN{84Ffl{E`U<*^{;kt)
47420 zsjQaooDD7Soyx>RhYwk}2UAhnC&a*AIXW|W$Y@_&B*i0(&(?2gE{!T-Hh21HSWvu+
47423 zVmeM!$tW@Y;IlW)o$oyHyzk`856r+%1%ve+0Pm-`Eq+*O;;s%@iS6s@>0j9X<4>=i
47426 z|M+c|>I+%Xwj9+9@rr)wmceIUdP(rd=Z9T;+4AC;-$*xOdQkRBxmYweRjw}Q?)XY4
47428 z+KjVwuw;(DeEw^wHkgV^DWfUS@%a(BGLD)Jn2eFq!-J8<soZ>VYE<$k<i`H!I5KX<
47429 zjiMBlqjC2>`B56SmASrQz2=-e<W61Je&Fsxn~5c2O*yI+6BT{zj^#Ud={IY0>FB9~
47433 zm1OGw-gy0fQ`ngLARA%{b87u!Wh<{nqUM$FkH7tabf&DhhaSey^*@px{_AR-T|U0P
47436 zd4-@!sol_}Fo1mpKZb~v@{e8Q#NpYAwAVQF_Ve?nYEc8&cG<rXee`2n?qXm2IQj+@
47438 z^Yr+h)%NN{WOBnN=p5G^Qh5P4HijF&@K=w|-3m)E0$0C5WRbsj5U@?xw0nlZVeNbL
47442 zhhQEb`M+27ztXCpnfea$aoFklIv!rj%~kLDcs6U)=jBa4c6Ro;C-2SWmt;#c<haIi
47443 zStSx<DOp%P-hAvG&$*7Ck0%EkEFS`%^RQXaWu3EPnjCzj5y}S`$CE~$Mb=<8ZZ+2B
47444 zM4g$po7_8xWQAJsKs>I42ODLIa?oFFXjF{$_-G@^MC#GdP#Qt}$%N@$B4$>?G$|y@
47447 zQx-;0vf0XcS&zUskF@O({|f!%ftO%?GOTZM#|&eRB%CqvpP4u*8*or>Yvo`rd+z)J
47448 zHIeiNs4M?Y6McTk9+>n~gpU)v3}-U<{q9=7Iq+X#Jwo5eJulw1xE{|Zn`fg@I5_*d
47450 ziTxE1F4`hJC>N?nw7u<YnF<H33hfIk*-TO1v%fu^4RU;mp&L_Stz{W0jT4kykhi4K
47452 zSzNhur9uZ~J|2wcLadLL={l#PQW-jBWm)J16j7Usq4Cju&2u)mI`f5FTyRxcTnWwp
47454 z>WN1u9^AgEMmg%`2v*vt8L(+@`RZ>BJOf@5^yeXE-lfQ~ZoZ+%bA+oDXd<w>8l)%!
47455 zp-~SP)L|YOiD7CXA+?4PQKuwK$fZ~_pGK6*!p!;*Db&{=JhJ)m=PG8=nFcYzG`VZ1
47456 z>3R|BHh;crQXFM4iqm+76x4Q2mm)bSJ_$g8tTcAbtxjysOr*)!XWp}XG-v6lq8Nzh
47458 z+_6gX8ST>PPdprJfieF8DmyS{Y+xYnjM*Q*x1BgQ(-HUt2pqgP=!Kt^rc_ZTJk9w$
47461 zPb_hJf)id31}u<5c`D<Y9L`I{iWkek32r-D+1wf;8y6az3*hJr(qQyi7n|15`ylrr
47462 zb$bEyaH#uzZdZfD!{X4C)9XU(rDXhY>hxe}e%vfqh2pWf+1vN#lC`#E<<!E-Qjw_m
47463 zyqex=#pc3+&`5FgMewvPFSVZe_z`a7?gOdT;YMk820Uz89ad-7R%0`Vf+TYZ^;(S~
47464 zEgzt*Xy%?bbyoMoQnjn!L!Ut&1NS2Zo8*Hx7H{`d&-M$0F_UhyM~~)Gmv-;$6~<(d
47467 zq-ZuA2z06wFStkcv7_B1E6+~DBhx3cTUAB$2SP?rU?S1@-ESV-*ciaBesf>|#gSJA
47468 zLIYXYced*0sMOuB2=s-Q$o|7}{|WrxvKq?Eo}f0hV8x^9SUVq@8_ArToYNAsZOhc6
47471 z@Ws}$J@4Mlm`=OjBmsxK6))_?dEKOgBZ7|#x8{*-K3i@^$V%*%BRK6(rvv$zSP2*R
47472 z&tx{T5o?MXoDIO*i`xc#1AmYC+^Wj{O#DYx!iP~P!C4{2M-x2hBh=%I|D2tiJ~ZK#
47473 zZ(hCfXK%W`2i4l;KSAA%IsOwa2+0pU8mNZ-g_7$$U3mMU3hnh%Ud;8MF8|!qV~>8N
47474 zy|~opJjspOBc04$Z+i3a+=Zm8KR-9{!vTN4{sha;10@g|G!^6cP_iJWo5cMO{x|>h
47475 zSFc_fcwyi**lQHNyIv(|x5~B6n{-UK@_f`sV~IeZh@vqeJV@sTNi7`?n&Tx`N&W`%
47476 zC$KEh?Y-8z4*S8PxRuuQO4J{Ug_<(J4)Ky6Zp@`42{E6Hic-=Fr$!3p)oSPBftqV~
47477 z-!$+m*TTadW7mU+zU7Vk{$dOF;xx^l_@xhbjV`H`@+itvL0@AAHsI}CSwen@R3UoB
47479 zxDp|oRQxXNxYflocHAMJcHn`c^kNT=Z?erNo_un#-M;-du;T1`2J_+^rHCpWS>K$K
47480 z5I$#q<ox+Pj~#g1S7u%IZuP072R^p(@*6Oc#C?pV<^>%5-A6{t{4I|@`UWTbU^9u3
47481 zl>Kv?l+6t^-9rB!8+#p2*5;DIt?jnbCI92}krd8Pl$B=m8bWsdY&9E*Cu7reWpq^D
47485 zb~-&cQh(-ceo3QgzyG0kO#Fv;ZSxlIz4FhcW?N}iqO^xJ>1Y@@OO8vas`~$)<iB;2
47486 z|F=}^zWm^Wm-AgJRxQOV#>gEjckQ|&*5=aj6WdhmM*hA(|KiBjHB>C#z8(>4%r1=Q
47487 zP@@v7b*Wfk_1KKcmD-&_jZa5=RIJ~My59Wz5oqW8)Ofp__To@xeZbxM)rvH&;W{sR
47490 z!Hgd~(-=gBm{=H#MuyiQ+^>Yytl5gnjK-SG%%h#=*;?&lNr>_YPU33KYwo-F`pH?8
47496 z_{@byHqbgce4vv&vagj09NHQR7`T6`t=)QHX)Pa8&6zAI9^3Qyg*#Tp3QFzX+Y-(9
47497 z@_~dR7`KBJL4WfT*!n=CyQ1xIh`S)ynz~Ikd*GWam`Py<_CR;-s895u65l@6oHm>L
47498 zhN|bR%#rnaEKu0W4Ow{=y_reRbSAg-=50%4=mU?JPt~So<|11s4}}c#XK=;JYOFRq
47500 z@R{?d$1wAYL$x|~0!bL{t%iF)ejfP^c!hiSqn9(!V(^-%I*lU!fT7?x>IoMI;e`q8
47501 zT?&_)X;MzhdmcO6aR>Sj1K$~-`g~u_zGiQXDmwf#cVpiIKlhj5=l%kD7`{UHPQf$p
47502 zF$Xpl@Cb2EtQNeqPm>jlKrz}%4YNYPL=Yw*2PZ@Me30}P<m|?3YWTn3n8-Zx{eEBG
47503 zzL3q`?MlG46_QMHbFqW~FR(^I3a#1LSX<`!plMcTvX}>zGZ79lXNPBR`cNTfH-iz7
47504 z@1Z!fZtZRp;a&^dUi)CDfYQB+;C~COP)Mdy`!>f}OAC`sLP(BGmpC&Oon<^CO-TIB
47505 z)AtEfb1uw|gcjD<C{2!u2<tCIt*l2@iZmbPNuC<X+-&zzhcNdp*a^WluzX)=+Oso(
47506 zX$QtV_V%@J^9_U0A8n0>qVgI{VaiWLj;t@dar3#~-Q!~0m1j;O{@+wfc4Ru3)%-Ar
47508 zaBGv~a-qr)ec^65_3Rr1{|R<Gsc(BqEQZE`j~c256e?byiNuBy(IOe!I}h2kSFT<`
47509 z;>dTQoV9L!$aV1riz;E=YK2?lB8Nxvk*XNhGVzjD*?R)zq}WhgG-TCBE17UKF;XZj
47511 zsRwqjAo-cWF$04vNOQ34uppjPJEDp75tk+YbL2CSsO+-DJIl;n77X&k@v-diro>p0
47512 zP*@+%$+48kX3SsdKx%k+DN;-bGAmD{5@tpbN~NTa<bBh(hW`i7@htKT^ith9u2(E?
47513 zPmw-2&q!e_9M*>Oky?;aghPi_FoAF8M4i?IaUz{C(~3Mg#1k}`Sj@xWzj^f=1D`^^
47514 z-W|SujSJk3P@&vZP{H&>v?_te-)L@9GRf&BMmnAAL|Br~1;eS)!jYxR5Aq>4EcRHa
47516 z+^Eb>%W8lT3fcI`lEz@VNg9@_*Yo#2GL&70-*W%{)jvj#Bhz*dkXSbp6H*^=i*#gg
47517 zxwtvzL3mlj-gl4}QZ(J(vyq%pePl9c;o}c!q9YQNL}p#~p)Zdg__#n0I2{=;)!y*-
47519 zMUdLQpb<$?9;VJyT4yqvss`SJh1cVa!-pFY$=MYc=%5YKpcMN|yemE0Ckh?}@sgy<
47520 z$Q~TPW^XJ-d!=N(77r8zA*+){>-fVlHUK0yJFtrAj$N>u3&Umsjq8P1Jf3HK3}z%`
47521 zM6s+24IxszphQhRze;&gjH!-=2?__w%f?ChnN0h9A(*pq>bH=eLmq%Lkm+tcy-VqK
47523 zT9Fu6+P5L6pz77O<9=PT3#Frjd-9pJEQxTkh?nL%?I@HvHM)5)8EXhWPa+?~rF3<&
47524 zY|H)cu6}*sBC-dbvf{jz?Nmei0`WXgAqZs}z->Sg9QVp%pv<wNFf*5^H<BKzn#v9f
47527 z4ax#)U)0;LyMF|j$eI16(&^Cf-Nj-un%P@Y!ZgYGaTLX2QnP2zn^se1^2qUxK)`&#
47528 zibR8gnQ7<=#{R0tUtPU2@CyTf?>sQ)h4*j-iza*`P;I%+Am$ZBG1-Jo0JKQ3jNF2o
47529 zsy;Oi@5YnhG9N)!w>6&gQRiKk4<@3>GKzXra-iv@B3c66JX(#U7&em=NgDSs$rzmk
47531 zK5{WUbYB|BZQ)HJ|A54Ml-zDU&Y|Q!xUYEZ;*_At#Z-Q2V<<B&7fxK6G7o(Btqb?e
47536 zjruJ-OHynmVk?*2bh^5)nHkffoHGqFhP(qhd9I|dHJb1+3v8%58p%Z?VQ7`ZWy2c?
47539 zoSZysw7s|)yLr5Eq88Us1{1>hP!)Qs!>>D7S)56S8nV3B=^QrNgfX2x)-E0{TNBoY
47542 z1az9SqT7IDKV`Sq8%Ny)KI{hT>$iI>PJ-oi*LOe5)xT6GF*<N?Vc%nLwPq_>s&`jg
47543 zo?8r7H?7!+=@WRmHa^i{5BMbS@J#y@TJUBopQ@p{kzASB``T~94S-WO3(f}0$M?@0
47544 zg@s6DB!abrd~JBB=wHM!bh5qjFx&%-m%fMvyQF}7&7m8PUoXeF_hmTJt3=qAheA-4
47548 zo5^R<u4_O-XDB?KoFRM&>czYXL!o#N5h@&?vZ_btnomFfQsv}oB_$u<;P{Y1l4nC(
47549 zBWLcD3g??-^5sWvKQTO;NGv>*3Fo!jsYo&-iSj*QK@hZ=*nL2~4)%iq_r_c=v;c#V
47552 zoIeeA&$pF&svBk8_8;24$hYkQ_`{qT&M)M%`-_EfOS<L!!R4_vF`lW!7RFLVG@fR}
47553 zTqv_R#Ik%elAKDOE@$4Z#u=061X2j85}fyoVBQN@-8m#MZ<B;Ta%Yl5f9ayT2zwp&
47554 z5&6R=rUVRFgN=JI4;wOJnLP=PsD5@hlZaPUbx-p)Rfr4exya~PbWbRP#tGS59IViM
47557 zA-`;YvmoZCc3tbeb+ZfYS=z(06w2^^ObG^>BCx2<dL-}VNCr$c$#H@<GpmV$4+qdG
47559 z;9PP@Upo-x!pck%c2tumBdkjK(`B<a5%hZx4}7)H?}hQ*9{6+EXWK8;bAiI5OwhDm
47560 z4zqexq|J!DS|XJa<1Gyb3TXs3i=pi{I-B-qn12XfS9RbYq1#S$KU4;<OV@(HbF=R)
47563 zYdxyJi*mX_9J3s&*^?|&xWy2Dl9#d;ku2>D=-6{Tj7kxYNR#=Nmb$CC9ojjBywINy
47564 z)pp`lT3<xR3b*1jELu}MlZ8-030dCoYBbVGPV75R7|I%owi89!<X84V?g5OrgmC>#
47568 z7}&&&W=Q{ICP8fxd=~itz_GC%`M2;Q**)ygw2l6qitwBSzg-ko!ejZ?V!Xy+Q;$5~
47570 z>`&zE7QN{eDOCxjOrNghgTdS_UeQ-<!HYog^7ci*2|8Xv>4W4KQ50MB`-Nzv9diO9
47573 zBbf?o@t7Q@1D)8$`B&csQ~j`8nbEaPt9m$d>BY{04{mZ6kFymkbN9-#xyHrm{r46&
47575 zfV4RT?tX}o>oBY5J6Hb{X(PBpdBS0vHu8qeYPX9!oj3N!p%#)l9Ac-_vjWNZ+!q!p
47576 zv^;*Y(PW29`J50F;rm*{fLbWHb=AlzgmoekJF~(2^U$4a@Ma>Ah--o_M@@!LYrzam
47580 zIo1{l-*hl1(Hc(ry$XhRh7B>CuT0N-lT`qzhf6Z+jk9uuBY^oY4cisB?v^-YsK34a
47581 z_7poJ`}V<Qz~6Wk#ims-xE-6ZQ%kdv)P#jII<;Z%#IS-5J4o^Bz}E)e>k>yj@~XS=
47583 zP$CJMl(cw-WdpLV>Aa^roiJpbi&?r7F17uP&vBfPQv<&?5O5JmyW0WO9p81E1OR<f
47584 zH;-rmm1p_1VVDvh7;6dsq(G-)gG+*_gBvLdfl^p;2mLCNaT4@<d9Bxu3WhcF%|PMi
47585 znrW&6%cTs%kmaGx$&e-{1+p<Wt7lqZY%UDO&Mww6nu`;D?;4!o!UXWE>v`>j33jeW
47586 zR4*=5#Wd|>fIy2HMix`M^FAgk53?~J!jL|1z9^t0w-+36(oJe9+%Tyn=J|=zT1Y$`
47587 zrK}dLG5j%!EvAa$`Pi<^7PyA{!5Z2>Sz?WI7+M#-?yT+Jon#Zq=tL>$qy6CLf^`8I
47588 zxwN<Q(2q^INi|dko|K33#v06>-}%C5q2w;|<WIWDFsk+8I=h(Qnk9O}R=on3XeJGy
47590 zyFh;@{@?{p_a-PG=Qm;jhR@59Ou!>3g2wx0G30Ofe4?oFaZBSfmYaZ)K%Ri_C?4CT
47592 zf42s3JO-OzXk-~GXpnwJiK{H1GL)c1`Q*kSjt?3LVkUThI)-~>jSnaNv_1|KjQ(g~
47596 zHEsecVp%rkeMvYtxA)XoEj%<y#^3+Y=pD_8iBvRu`edpZ_6rp8d~Gc$FejW-LZ3r@
47599 z68fM<(~=NB8fi#zno@b_Pt-zFGrR|f%=q`NUO|_Dc}aG0PtU%(0Jd*R8!lRLJtFS?
47601 zZB?*EIlN<wIjgtDgg9Qh!4{!w|0;4G-fwODlcGDIdEdRZU3}={gA1H)j>iI~EQHdg
47602 zPt)^(Q0`Vv&JC-kD((prxEf%^NhQdR%unS65nOElLC+UaVo?+ZDZvXoep2Ej*A~7s
47604 z9YzQKrkAYW-C@6}bt_5Wwld9e3vLUVabV8Hbj?uXI@k$6GCz^)8uCz17X6Yeba(LW
47605 zfgg1tf~$XauV2ujoxP>iS<_HNIJT)t%D$f}fQ3`d**UWyh*0f_!u}QIf37jn7-B*o
47607 zd^Dl>yi{gT7ZQ@+=W++nBJpiUVY`#-HP<B<&P&-k7Z-FviKPP&@P%?wK`_<)46Nx)
47609 zB(P~SqLterMWSh$m9n)ii!qG^h7rsQRuW12!Rwju`-2K}V4Z*#H}F|VhmqSjQQK{b
47613 zGNoJ;ll)OF;187oeukwaMs}0-zKX?QsCK&+uE(O=Xb(EUB?k9l*o=aEP|Cx~LU0V`
47616 z;eMaIb`oZbr83fR_S>`1Eqk+D`|gjI4rUJDQgYKn-hn>eO@r7Tw~PK^eu$wW1RN87
47617 zdW4pE9%wX}AX42J{K(AnD_&`;bkn<D-)`m^_9q=t)2};XZT)&9LIX=+!)~Q=PfWd0
47618 zF_(i$B?Gef%8_Cf!H^^vn?wnqDJU(Ox_My*rC2678^5&jOEb^zffJm4`-z#*Y`)l$
47620 z>Vdl+#z=+|&D_3;#LR)wlS5nUc~9pL-qShS97+|XOvh}mH4Nv>(2MwSCqHBR%v$~V
47622 z!vbppC!iF|9BaoHrm8fToEbg#@%e2T+Uu!ZyB^|3>)E-acFW(Go*&EMU><u>CntJ~
47626 z!Kq>%@`cHwPO>#ymt0cz-hAun%%u;skY$$=Tzz45vr{pR{ck?im=W@J0zfD$77q-%
47631 zdq*OkyL6}X5cVB`RMXRq)-)3c_;4@DE_Jrfytc93kLbB?FNI{-k7&ryKKIfM+7V&j
47637 zKsmL*80?Ky_y3Yxa#Yj%{>2DQ?b--US1VjcWsUG;c6o>u6^=F;FG65^ExLUC%IBae
47639 zzhUb+edXX<VEBkNc_F9$(mNbYm%e-N?5VImw0ifx;>KihhbD%o^q&AKHLt;YJ-B1T
47641 zFcuoOn&CoO2HJ2=!M!-CaFLNwnAcg_b2$I$Cto7vi-+F%dxMv!X59?sN6{CY#Nw38
47644 z;d*U;uw{*0Dkw=-O>kBz>{2TCV#l_rsa~U_{>fP^&B*l!9=a`AEg`szUp)Y0da1CS
47645 zxaaAg(kQ<WDFl<}H-3KM`DF;>?|AM=$BcB0(o|k?a~yvQ{T>YbkpIFa3oPnq=yH^0
47647 zv2IG&j>)=zbvtCVZzf5gg~3yZ*|UNF-~!{Nl$fqfr@R3*kSe7gb2nBQ<=Urfu>!66
47648 zC0+0`ZVA>8vAE+-_0j-#K!5nSmQ*i}&D!z;6VRzp8+zI&tUrCq_NJ1xYVzKHJ@K&H
47649 z6Xh}N;epIGn52uzZ-7Gx@E&lC(Pe<hak-G$jg5ly`NA#ZtwWn7Pv<L76!y<%cfUa7
47650 zF6=a%cZXki!+GIzTn*x2THq-94GA`jR`Myhnq*1$_%jpmVZK!uE0yn>Z5`ZKB0InR
47651 zOmSnP`|vZ171z=GF!qqc>-Aia9rN~K!!%4$NHT?~f|JFCGX``({G}Rn#~TeQehE5$
47652 z)y-P`VBzk?p(E=#&+u<QJ$il|PC67h+tmsmbxycnWY?Y0sZ@u_;73HC2lF5}qf2nc
47653 zVyyr+nkpL}Pq-M)N8>}WOM?%NA2iyBHjD6pr!G#yIl~1>930UhXYof@zl{DpW<o+y
47654 z>AkmJCfoIA25+zP(7mT3xsr^b0MS8*i-xnqV=mP-Jaqc?<L9Tq8x$iMH9WPyQ#{q^
47655 zY^~)8d)pK6mK7(%^|>MkeXhU0dIjj4@-`{uym@DSp<lw_q$x_yXmTbQ02Y*>byL=X
47656 z2}nXuuhXW2Tc{*Ol0xP1!c=YF{kL?8d#-#nK0lm*n_g_M&AYVPKVdvPXss8$zTRB!
47657 zLlLyZNPK)MfH3wxb=(HfIcatnrK7E4GRygsf`4d2&D3-HpV-2E-Ic#7?w_%5@~tN&
47658 zD;3l-!7lrD5L<WnmR<!&uNm^LlkR0S2wF3=uqQI#Kv38<7iToty<XrkRhk+mjSsgv
47661 zAe!o0IU3K^BD@`-{}Q5Mx4Lz4t~qFSKjd)Tv*_vSLXj~QmBt7H!5E|O9VUyK2N5WL
47662 zNanTape$rZ%hjWKW^!{Q+&;7cG|#^QCov9BBA8-{j2>1Lkr8=YgF6a00rLj8n^5(g
47663 z#`V-~anOt6!1E<Sn&P9barEq7R9t5A^q!U5+Me1=x8&BR)4P1TZz54l={}9!#K(0G
47664 zfna@-fs>S75bYsl#=Z&F0+=^m)IA=F=W-m)$7;N`fBe?BtT*-0NXP?J?%4S;s09KE
47665 zRw$Y<U2F5|ED}P00QC^rm*TV|Jwm<aalV)HNRmHNO-F(#Dbn2qK*cLpnk=rB^SK;D
47667 zUk|LGIOu+!^xCUx|1nh{Gkb>R7-uITc_7H$d*sSz;1yO46!(xgJu{3X?F1x}CffVT
47669 zEI|~^HbTt8$@;=EB{aG9)-&Ms!RudJFIjP=XoCBXLhFO!#K!=z-{^CkuLta}6^u(o
47671 z1x@!3i-uc1Ihq}-0#6z^oR}Q)YYV`WdG+hIsS9qjPyVadRr71<(I;+VL$)KcesO9(
47672 znhwPR<!4WpTsz-0e|F|S`el>>SH86~1s+BW`%ALy*hoAEq@3*Q5Tio8Vdg^>(G;Te
47673 z(4Ch%$#kSt74vruhbMv(!-s;UJhGhMS}x_y_PG%s58+2TJ+5>3@`H=XV0?LDh)Yy>
47675 zc-gp7J1!fm`~mXe9SuafSf%d72RyxClJhQL%BfY#8fG!*)d3C@6+aUxs;uGn8>}3X
47676 zYc+*S!yHsD6Hn9$HWng^AwlHS!5obfWJI0p&|V4%3=;b_<f8-8zDk^WU$<^In;oVS
47678 zVNdR4IF{_SX#naN+RJX6hTUHKjoUPkHZ-I{s!Xy3D)F_`gS)yk9Cy1kn8yy*riI*k
47682 zt<NCOIfB@kb*uG%y-9O0;|)@9gS18~bU0~Hnyy<+sBqpVP=(gcjNC}Z&d8;3GMUHx
47684 z_Y0%h!51#GLDnW7dz#a=fiU_(#O6nD!$nHAa-$Vn2$&q9fDn$n`fWQXlHEU{4;`3T
47689 z5^Su9GmxwUU~vK(Ib06fM(*gV9|+1)e7I?LBG2n_YW~d1q*Y!?hZ^Gt#-Xw63Cs$X
47690 z-g{?kZY1GCOI*o^)oo}A1@~d30JCIv8$7kY#4Od#TY*xluE%10gqCQUp#<OoDw%*3
47692 zU;m-N-}#>4mD5wLwj%+;XG`GRU$fxVG6V*^6WkX7ZzQ{(&Fo7-WrcFAb#fxT47HUP
47693 zNPsTYdT>=?S?m{mvXvdLbPqqk*oXfk9>CblP-~_!GDXavwWg->>*>^<M0_dk01X(E
47694 z=<2M>vnQc*@8a7+0215)-=eQ45<pWNy&fBk?83Y^$Z)^jIdrk`cLCDMOgAnDpu&LX
47696 zQY<%CJ{1J&+u@E^j=uVm1F55yCN7V}j}9-MT^xxN*3zlvc<)SNnG?<EOu|YBfev}c
47701 z+?dYY)G8m&OHo=sG&!+f-tQ1sp3i~({_yIzusQtG;C-+EIM<<9Dt{g6?NYJb3yu67
47703 zvB{fkqZmFIKR30yl6u!2@b-c|A8)&RKC`#DF_CiVoM<wvXHCW3`A6};1Cri<?asR!
47704 zcVKaIr=V}Vcjq&05CDjR7hL9gYno-@W%UsdhQ0QWnh`8sE?1hG2W&pFW}b3{jq;4U
47707 zgVEwF#9f8qOhLw3E9B8rjG)l!U={(Wy<wH=u9N;U{xP6TSGM2SwJv)520FC+z^-MK
47710 zPMw;Xx^w$q|5|_g{^VxbfD-*#HZ_wi1%jv;5!$)jkG*D)XuGq}yXkTK5bzYRJa$iL
47712 zkjI#i;-9?`OUEFKaaxvHQcR?HmX2gOvXE+=<M?RwIj5uqm}DHQ8-h&pc}EXXl$~z1
47713 z{Mh0np)Z1$y?-1CG8tWrB{IkJmxp7Ewtzc3vqD0pBLfuV<mHz?4_%DCL?9HvsSsuI
47714 z6>GisY?Fo66(p|TSnq9>bpoft2cZ1m3<0~b#AJ-KJRGE-KKIZ!e%uW$*u}<kKaf9n
47716 zW;*cO5Dr;wjpg09flB-4wbGT{O2kBvnMXJBcOJfOw>t=e$)b5O>I=AAPPEj$leY;H
47717 zhmcUBAg|6M=CxOJ?*?8;O3-Hk&b@252Kn80!vceu3qedEx=ohSl8U)gukG#D_ILEl
47718 zuU;8EJs{*)3XT@Jw6ycIn;v-l!MUq*g5|5Y*M)u*JcKj%LBsri*`370MvveK92qD$
47720 zyS;fzR^m-B_3NTypAzv}ys;z2Z0*wZci!GF<oE1hA&&nXjM%xi+;a0VBUCz*Q^uxS
47724 zAHif!^UUqqrPp2FE9Ca<vp>26@7BAx&1*_x;mUg+E1&Vi*v;>_-LmNCQ3hC~_Mslu
47726 zbkpN-9ttyUK{fQ6`zh6l1n0LFCeKkqe^S8gop~Xu1D%Qku>m@D@9H<_vyA-Y3-b@>
47727 z^9A7cLrJPwNY;gy-FxWo6eF-?&4-t#`(*aUYqslm1AmW4XU?xki3Cup0V&RSckxpi
47730 zLd%KG89k}y6`_jq(x?8eoe(nxX=B?^4K@%IxmT#G8xh8+-`Ni0A+AthHHoh5{ePJ>
47732 z7Wl4TxZ1u_(Nm!Sh9HFnYcA0DBBNU|-*<!t=ITp7&GAO8b!qzI$~zaf&%y$tHa`s=
47734 zX`afbNHUC|LEw1dhA7K)FjrY$%H%VVZY_Rke(|IxitnqgN49n{QD<$YT*X7#R-KcV
47741 z^rlNPpf_iric?9m90-66F$p}KXyw{P5ajZOJgW=L<?m3cz2NctkxxyfC*FeN=Z&(R
47742 z0Ve5XSK-AsZr1jwe7x3*H6=a1(TQIzSykZrU){*BZNaN9=2rq7C5blPT}r9EfYSWM
47743 zt-`DYc=QMNzJX?uF99BvJRUjO!I<6VVWmHoz?sCX3w#N~t&SNYf+A4;79bWp!CdC_
47744 zDJ!+xO)hn;s8;Pg2$Ac)VGB78H&dZ-C@d$ZGf4e!fdNPt<&AA!1)jQYeJ)^Csv;h{
47745 z{d|xJviSl;uOqX)?=*7VX;{e9$RB#M#0J#^hx2kk-K6{wKpG|IP_Cjar%FnG#;LSn
47748 zkb-vZ(W2MezqY13JprRukZ2zXhH1F$&210EN#W8?PV-TVPlt41(l?IBi^l5^2Z6OV
47750 zUL3FDhOj404!zXysv1|Tay%XTSMBfF-9C5rbiTt+ha#)F>zx!V50?82&wrw6^^I5?
47751 zRyleV!e0(um=dS9k3eRI16;<?u!B+aVa#Afz~t;o=Wzqp;JYc7f9-*~SHutz4(V*P
47756 zYqlEZg{G*-fV#d`T#h5TQ~4X)*)0e{6_-Ru3dpK}1Z<+Slv1n!?VQNpObU`8F`Wpl
47759 zDR==)IR$TEHIvB-%DGoO(@t&7+J2>Ev`8l^7VpRLe-^p|<m<$d^5ymP29B=3Ka9!2
47760 zDE^d}H5r3EfAZxYgfV=!5o3bDTMY-8-POXWT>hNxzq?xtiQTOhP?XF>7$5kLgD3&!
47765 zq3nPDrh(RUlLrn#;BGnX2xARAPk4m`e#MoGEq?T+yU^KMUT0d@whMP%DEq@t4e-S4
47767 z2r|OcFakkpD>_N0%P4gr{CPBhZZQ-HK>SeXS3|!$B~9%@HXr8VSS<Z*0x#gdxyzH6
47768 zPK!x_i41yHPF#KY1-B4<sZ0gK!4ScCpo_z5G(HYrQsMF1@ZdQ-|HMTpFS#8naoU3|
47769 zKLV3+)zb~(-12pZw;Y998Yka)d*$&_6}gAk>Y-Nv({%2B4LaRX{o?4X$7qN_GVZ4!
47770 zTssT9bZC9-#JeyV_moVrXeb;G(&q5MZkLXK-q3hH4i-(reB7VAm>(zW9$q^*_#e3W
47771 zxUC4A;KQw*GrPvwQ|{S$w_Rs&bO<$#l5%1)8}pNLu-srZ^t5-`(m2ZIF<{Vk_3d4>
47773 z|F&Ns`-+QqUbu5A4-dQNWh+v-SMANar#<`j+hY|4Ud1f5$-j$CPexB}_08cT4%Z~x
47774 z%;vMJVw_i1Rt({=ghNbn0!=35eB%auZZ~i0yc8-2VF3q2F_KbjH~;s2$jiUHI`mGU
47775 z53e7i4=2+vok^{Kw6#;m)97vv<|}-7%x(6|1ira3mV%ji;VtFbJQ`$zA(4UABd2q~
47776 z0bpaWcqerm7{AR{7#C<Zq2(s>FfaR#^hEu@H~#xX8b-|;vGwNdx2MueX3=v1Hl3j@
47777 zG**Ev<o4e8s`IxK+C(nK<<5NQr>E4Z8@?KI&pNC-#t?77Y*&-Vwq6g#-TTx2V5+f~
47781 zZFdpz6L+>Bnv42I^jCvF161D9ao+gED4?;ZYJ`ViE*6HgCbDxO+y_d(<Tm-W!zhNJ
47782 zPRx4X%C*Wo-}8ae-rWs?;1Sx$Cz^rUWFjt3dx^L&L2Fsgv8Pwo-Z!^--V3Ar*819w
47783 zZH~Xbk-dHQs@Vo{KeSdqgZ$Q1YO3Nj){o)5hfC|&z;QSkCO9<k(jxYSM<a1I>y#Qs
47785 zbe$uO_MNo=5#sU?sHPHrF)%uZycHG$k5(OZ4o(amgxP+Cji#+mGTAaEJtR|-2B&RB
47787 znMn4y<0;eWh^X*ss`tug`k5Te_Bc;3u686ABXHej%qDWZba|(ejW-`!!g(v+&my#)
47789 zTglBPsw;Djkk63abtNsUY1){5K%SjW&&CkkvJ+V2fh!fgjU-dkDay_YrCdM(_J&jN
47792 zprJO`200f<MY3(i%cWL2-pi;-ld$IEa)D&AXe>9Ms)*54LS-G9C9_6;u@fsdEy-Mk
47795 zPNn8n({X#PU#T$Eg2lvjtZ<%PIcqPR?N_7GB?r?!`hn)-)2$i3qUt;Qsn}dnN>M>M
47796 z@ns=SD+PtuGt&$H3C;$-cd9<MFt+Au@awol1zd)7@B~^mV$M;e1Q`Yf1r3BJQWbVC
47797 zqjl@%wfPg5N;J>>J9&4#zMYBMYct>g;rd*}OeyOn#*xqUmiF64Z~{AAd-=cJd8XCZ
47798 z%UXPUFQsN>J?%s@iT_DObpfU;($kCnx~6I5wg(<M!@WJ=r-Hg-;?1ej2G7G?4Fp^-
47800 zMl#6cT#k}d8Y?yAkgO1~lBI-s_W!5oJC`Elw~$rns}2R(r=>I6mhJtZT&|J4`bdLY
47801 z*h#0Va%A}lV{;o2z}qptWj*|ARRU7El-BYY7UwA0px#c4DutN^k<=)AE@S$MmmA1m
47802 zOqo-q!5WBB)@34}6;4m83(sD6d~=O*iRDi2!lUV=<VY?;A6w1aml}^6{HL95HIa6$
47803 z_38CjSSer_)Odv<+MDSo|E`lD$V?F$Y9WeaM6;dv4G9Jo3KebN*(Ot_6*XY81%->T
47804 z&{N3kr))U7MHxjwuKn>z9hys*rtX-j<au5rL^VXwoQ2>0!IQaktlBmzPc>%Bj6rak
47805 z^vBgJTcu30^Wc(D<v2k|Foqe#W%Px26(Z*L)`D#3G)&AU->qf}l3?td4S37C5P9mO
47806 zuqXZ?MF-6i7Up^2Yl>P3s8e2~xg-`YYDLqub(~klDtH$DH*p#dwL*QZnbNpy(*MeD
47810 zx36nh^rfXehw-zBJ?&5y@zPg^S;Ulp<4An5$}>nH)-I<BDq6XEDMVthRN_GH^M3`=
47811 zZtC+e(KocP`nBVTt}i5xB6_Jx^Y<rupf~#eFZ9MZ(aXIt#nH-pisNo<LUCAK&26M{
47813 zV6TsvfxSNBc&iUq?6r8xXgshR7-k<~tB;pS{w(sE@%%)$d$1odI~q;uRuSyaX7fo*
47814 zb1P&i+AOI8p=MY$7mZ~I!Gsi?Xtsk)DvmWHjK(UxLXf2GSS%BE>zd%4-;W`GGnD{}
47815 zr8_>Y<Z#YC9JI$Oh{ohP%gD(`-t@Ma?D@x2Nhj;FrT@vD?|S)V<mtsr)tHj16&~mn
47816 z-Pe}W@U}+Ml$Oz-`1_XWGbR&9Tlw#g>~6`l-g;;QXZU=c1$@!3eJ7CU&3n1wRxV7=
47817 zdzpv^+}|)Q^ZGYFY3o@m5I|7Vbhjsm8CE@8ai0IAn_Q{J<%Y>*jpD@;#-~!{rB<|j
47818 zE&|bZZ!~lr4GsH72VHq?8tY&Ziw(MCE|y<>XEW8G%Np%ych-tXEzvNy8u4qTr5H-B
47820 z50la30V|;B^ao#i#b9|{q*)8U^O=3eiI%&u%9D-!wnm09f_?l?QQfu0R`<>l2S~GO
47821 zErnu9RYu?bUOQ@TZ7-^JHX;F$UtRxQ5Uol=bo*SuXV7W%<ka-!*y>|fLJv_CKg|Mf
47823 zK6wg|m=Y0=EF{fRAjFz{ilky3t=Y?+Xwgx0Tk?sFBYzGDG&T>UM-KKJ_~o52`4bTs
47824 zdG%duv$wXj#+-piA{gy89+Xr*nUX0xp3KDLr5C@OAxYYZC~G_M`5FehkRuMmE411x
47825 zuuLLqCKa~akbN>F<m15P93tcBsCt}`cdpOg*o<g4BPJ!4;xQOot2rZWN(32Iv-PyR
47827 z-8)-J$HdWjB@jk~;ULqD$M#QUcHEhqnie&u`_{#aI1ruI3R^j8=na)5{K2399{HL-
47828 zlyl;^(7X0!#}yvGOu-$kT|bkoU$`-Aw2kSdg5DDK=w?@&pOY37NJwj3-rj!q?7ll;
47829 zn<e@BdPOcslEK(Sds#LJAUz=|x6$ukG149d0SEaUWVkk-t~ro9n(*PmBT8o9_5N*^
47830 zXJ}E=5)SP6b-^aMpQas+$T*Itmh?zFyWvt3J#$td2-+Kh4V^iL!i*}<M+FmzF{I=j
47831 z$nSv{I5WodVf(Q*#5Tf{f;?Gar-J*Cq+fg&FUeeppcRY^-u}$#d^(>>Re&^Sw{;u~
47832 zv7~*va1QxAl;><5$TQA^o1zj|C|==0bTEj%?R)ZC@m!-}XL1o4!!aYv#(y3PwG`Pt
47833 z=k9uiSNGRw6-xCO<0ke~W9cKM8Xdr+E~$@x_?b?snJfB&&87u=X0b&A!7j*o8VEKn
47834 zB-8OrtCg+2)(Mx&(q;jlwKID;cmKP<QN^TLL|wrqs2ER)QC*p@m=#-!`E-5)`MKd_
47835 z^ZN+)7@X&l_T+nNT0|0B3rbkiahe*n6qQY`TGSL__FX8!QHgp5E)83%hG-B?!p0(*
47836 zb{mV-LS7ZwYRM<#1IQEpg5HS@0!Q@79;Br8*qy9URDl~In7lyId`Q5<j+%`olOn<B
47842 ztXYY^LlUX9KgC)rMgtOUMr0(_jCvVn<Oh&{4MLFe_$H^L#!^5WeC)iiP-gB*wCtC@
47845 z!&iP|2OTf-8#^cTw|5pwDmZ4No(9T+O2`<Cz2n1PZ69>DQ`R(`zp+tX?TbtkE}eer
47846 zm)v_b)0x32IONns3*3EYmBUY7KOtpxI1<S_rji1e%II-D9eOkTWH)b(%_Wy9aHD~T
47848 z-22+puOeaiF?aIO5s!83TP$j2`#B;Nho@4`*W6Qu7z}<ZmS#xDA*xn_5K^OqApsG-
47850 z1Ofq(d)~@Gfy`ul5C6B3Ul~q|ah=}#-kj@tuYBaA@0;fH@q@P)HRQPPhVS_h^lWF(
47852 zjg*P<8$S9kP`bw@BBEo!Z5>9e*iH2Or#mCkwGeo^M!#Ww-O6xDO-RUq4X)dOo<{x}
47857 z#(npj<7O#HCGwo1!Pnr;4}ulSvQR8B?7O`QLg4#!qsa=5C}jIub)yT+QxHW0Q9Ba-
47859 z0HDDo#@VY_J|8}d{27pp`UrW-9yvqFEttT<$atxCe0_EvDF97w*IMo*B{fS3xVF9?
47861 zZ_NP8MR&I@F`4K=1!2T22QPIqak0qr6(-y}Q<*l>2lRXt*G)xYEHmL(rAg@KXvmgp
47864 zPpyHtt5988ou4(GIAJ)kmQ~LI1G`$3gpFIzOfN*Or&nez!xj-u%NlVf9Ei@7wQGA7
47865 z-?aV@<WCNr|LFL@n}|4?AO-F0`i7M|yT8OHVaT86?b*c^@WQ!bRbnxT!jri>`PQr@
47866 zQ7)=h;##SV(;z62QX)rr(LQdNG$~j-Eolp}bWSEhw0|)b<Yg$YlZzma#Ulp$LconI
47869 z*}n%67Q~%`L+!tD%NK&LqQPMn$$e#Rz0;9rh3m6N_04c#1eeOl?No@)M9-dC;NYS8
47870 z44au-sZ%mRaC$Y*gheVS3(c#=^yZwDs4)0qK`Tdt!DuNq<N!|=QdR*@is2GbinsW%
47871 zKqh(-sW%rZeaBGw^?SdMnrM1Vzd;f^N76V1O1$+YO#a3h+Kv_T`%44r?AfK3XfO1c
47873 zN}cSn&v+nU@P`I69Elod&U(BelNx-+tO5f4Yy`4Oee8^>qBKj8cr2FPJhksJh~fZ)
47874 zilHE*s654|*w|u@qx{a8e}TMxFyiw-XUs4WHdcS@cf;gvcM=NAlg%PUX|$DOVwHys
47878 z9*k=FT3QyBD<@a;v@H<rwe@I8An|b~)bd-3pY`dZ65xJoYJMm|eyHgF>T0T%KnHzE
47882 zj39|+L@L_BpOqIyLDxu28_X%*Ma;1;k6+g0mj}2XT<}_{*ZT>X;ps+!)-?F#>Vt-s
47883 zuV+M3BFhyu!!ho@*HzQx;g`jt9fG$-VlgJG4JQ0Fk#B%6cPHLSr+dU`&;iCb@pipe
47887 zPD2VVoh93)bI|Ph-UDOjDuJw9B%&yZz##SFrV5)kt9^N4ZC=8|QiRsn-ujlQi4&ck
47889 zWXy%_r0u}_t30;YaAJ|c-o*cF<K(HLk=-iDCN*3=Nawo3>}u38!2R|3Tv;1mq=-=Y
47891 z@{$eSp>rK^VMQO_q9zzB6u)1~=dyy4Df^e`t)l;N?-GagjP51EHI3jFf!%fQ5bpD<
47892 zK6X15+1_6jaFiAl65|q=t|s%S-bxg%KMRYSm1YScI0@J;Ga13~ASrXf5C~J8)}^-3
47893 zl`kS+1c6F>QuL2{+I|oF0hV}Lz<}?%1Fp|;AV(^X1M!n0M&??YL2dzlWaIXB(UUz-
47895 zN~toVASffVTtSg|HmAq+YB#2+hi8+9L&5M0V)PL-9H1gxD#fT#xRubGQ99_|`{?+H
47896 zE?5-h3!Vn9O!IrJU27wxx%SO7%L;hJOEMmoBea4_XKoiLg+y}u+2W<_9t>eJot}*1
47897 ztU!_?kiQ@%31K9F(AnL5d0Dc3-~A0pV>DNJ1fpwWyg7D3W7zHdQM#s_SEUFq%j%pl
47898 zTG9yDw8|XkEoqD?3K3%X{&j(k8VJJ6tR2%yav3rufCHW+-B#Qs8hBIn_As6GXI{WL
47899 zNZ<s4lQ`r_U{sRp=8qoUvRbX>t4rxqYYH9`bw)wC-uh;ORtSXOd-#d^<})|E+!3uO
47903 z^5th%k{BLy>-(f?Gs1vB5h8;@k_aP&Sc)h(5e(8aIBN(C6&rCjT1>?`x5y7BU%!Za
47905 znT{$df#VS)SXs{P{Se#)Z3;=r-33ijPzKRZfR3=5$@(&g$r2iK1S{=_PXB;x4^|5f
47906 zvr0bn<GU8h;VMNj6BTFjxpNiz@l8^r@Q|!vR7eatk=30Q4T<ekU-y1FOaw*X-ldBo
47910 zd#1j?#*LU9$!tG<;jF65>{CG1#-Q7r#ijWUZdDe6e2B{C$)r)AUC1M$!~$yOv<#&+
47911 z%=`i`DcNS6r5U)&6e$XcNIDnIO3h>>k(c`AP}uii{|cGA-#mh2^q}v|LMPJM&O|j*
47913 zu`&1dIG^Kyc`dPOrmW^lz-_GXJ>YNv@2FfAtB=n&fy0qnj0h~Uy>aSf(QtP1(7aah
47914 zP-SjLFrjY*d`8#2Lf=*sicXaIA~3IGKG8p&Iwezz<cmjBXU^*qe~7yB?2Kp~rY_?o
47915 zgbC{0-MMHLsd)aHGl+-2ohzMK%bkd2_meS|V`yOAT%!-K73y%A2PzyWot~-4e7U6z
47919 z+k$6bf!?er!%%X?Gjb~L?rByQU_?oo!-(=Z1RZQuJrq&i$7dUhEn_N(El0i@D=~ad
47920 zlLpsj$)W-s%wdR0knWv969H**ErbZ&O0Ps24NZLsriKm`Lf?00$)H#nR%g4V(VP^G
47921 z4_O5#miVlK3L@?3IHyTt_1Of)kMx7T&)Tn={&)9&10j&-2J3kI#LzKGbXO9~Or$uI
47923 z2l(;&!2y2B`KZKzKOd3v^>01GkCzxU7`DxBYI2I-|Eh%{lFp^ciG?99eSADtE+M<H
47929 zN26yOu_Mv5vmdI`$Zs77oh?Vlp|kz{<8ZSHZ129{!u?^h-o;7SEE08L@ncc5o-nr(
47930 z9pWv3L<p2mf@VjeSod*)u=~JRV!CcRX;V20$C{4Ej)Jk6?#famei+9x<L0-3v2r8B
47931 z@5a;r7!WHOt6tvIJ;3ea_P2{+wPtmQ*^C2`M?zR5P-*xi$3Uf{OR(<;DxG>w{oBWs
47934 z$z$;!ct`bCV|n%93Zxl-1rqY{K+G#-@Ij{WNkDEg*e6W&D<!jo{aCnSvK=NE1eB3j
47935 zI3~#$9l`^u(0FiOw2k7Wjce8F^^;XAe)F2B#Ldvz?CtZ9Sh-@tSj}PLwe9z`9_g%}
47936 zVlBhD`;c9G42>7c5~qI9H^ZGkd%&!*A(vxx`BXtKd}4tY22<CG6?-*AASfQdY+WIR
47937 zP$*t{U^!XOX3w5|_Sv`9Zl0_;a^-T4<KsGpJrut@``~j@>24ddf9Oq5-k4d-WctfX
47941 z@EezD`}7KXF-XF0W{M;toC@4zJe9v&tRyN|mMhO}G*`+FQhw{J>#gfBe<<QQilV?q
47944 zFKJd7wp1%Ik%c^0Tz~3pV}+l6B_>_l{#fN^du6w#-F~sHSL2vSCH{ku<aNtnxkxT&
47947 zC+YaZ9Pf9G`%D{<w1_l0ZUCM_k^O-Ky&4=iaIwe;+%KoLQgAr(_`m_vvEz&*@AQ_=
47948 zPFLKC1O6$-M-F5hBa`@_f=(Nwkputty>B2_koIufsXHyFJs3Ufy9D5uHkiDr)-usb
47950 zf-``HKY#CK<dHzr3)Db#-Npu^xM0DI*LX461?pK3S4m)DI$;Fln2r&6FdRffT*8ns
47952 zTq#jM55j<=T6)?P;(RimDp@IiQSzTn-Sb+De7w5Z^iAn#-w2?GSDmG7^;L`D_SCAy
47954 zH2Ue(k_j9ujIcs@QOoIaTu|iPmGddu7Q!5vT(qWDH9}HYpcU-vjU+~M&fbjTm&v~!
47955 z=?}}~y};>6M9k%Tv6pey<LRPVun|NENf{Rk<E%<1)}L-PZKsm%XM<!IW$}=?Q-vVd
47956 zzSM5#-~f~_-TO`C2J-&Ff_X3H<{TQ934cm#Y~k)MQEKGEJl~M@_+~49wY-=>!9jPQ
47961 zTCzTE&c{iGL<6WfhjJ-JPg6?MEX)fcfiKp7Q8ZQCiDt!SN{{E1=?d*(zQ~UuAM(23
47965 z_67|i_uPnZWmI+TOWlD^cXuWkAW@MALmEd7$-_6=?UZ6!wo<&^veL3QD<dCW%bPoS
47967 z&`2brl-|0v6{aK0sv%Gh_>4b=Si_3-L6-k;C)gOaA1yW_`H~Xl<3O_XypfazH8rQ=
47968 zm=EO(D|@SwB~Z0s-)LA8@1z)&93c4r1lEn&*u$)IxZ_zDP$Ozqh?S3E-Rz9?mgiqv
47970 zZT*~^t?OlyLN?lVb95UgEvxC(-w)=42du_0JC}w1M0{Me+(xl`_mICvetcL~*6|x7
47973 z)3=MXOrS*X^tE#L>{@#L{UGjgBK_?e7iWVs2fW$|D)8#kW-`|VEHuWJGMK=0^uN_o
47976 zF$P$;%Ivgg@l1G>aZ9CW+0D2WERqRRm|xxY4^uD0?$u!leWyD?+ELjXmuY>4pt-Q7
47977 zx%Dluh=W#OCP@(88jf-|$K@fb8XAwN;xJt!m^K4TH!^2D#sFWcI+m;%W+RUq!3UGK
47980 z)rBV-VksK^$m545n4iDnjn5oTF#oUj{vMq}5|Bfo@uVlDW8%SsE0TR*5c#_Vj#px4
47981 z)S>6zxe5XEC*Id?l*)>gW>Fz1rx`EpsV0d^88-Dc>(zWZR?>r1D8RtHDERPyx_4pf
47982 zC#PPV(t(<BKMc*Yj}9pAmjD%a<DpPAD{*?aR__LQ6wQAwD4BG&EU|ojsbAz-gbiYW
47983 z75LKb{R#3c!a=ura1f8b>9JhExJ!%Vq0=g5biF8~9Qfc$3-NTxgy~%&l#97ut6`cY
47984 zN`=p?YM1O@-aP>xT7ZRI_r8MsON9D1KIroexdqr(R_u798>zNnPN{dfk*X$h4l0Bk
47985 zD-3xi$6`e`2Gd9Fe$MO^T_-w>_5B9k&m%Kq``vx`SR0)Qn;^t3MFG0mUMnYTOU}r$
47986 zdomN8yTZhHzL`{Pj?cm7VI*0zEXpuS?g24u?uvVb9L+SHNP-}6KQQ?+Lcl2Da9}d}
47991 z5grRxL;Y+zg_A(-CItVU{^iuK!%t|3KXD**bh)&UiV(Pkg^Ow~sze1<GPjl#a6ulM
47992 zlyI;Wnu*j?AYc@8mg1k{8uB!>(t}fY{(gE`uhr-bE4BuYvBb)D%bHondS~mT>J@C^
47994 z2<5#!WnMgq9^aw{qrc%02jG_%Ix#jIj}}UNsU#O7n4a(&)U+5wuu-GMGNyIo^(SK@
47996 zjIDmD(5hY4V|gV%>vvWrc$39w%&h3N&SLx*-1f?LjlfHD%Q0d$1>L(<zo8IC5Tj;s
47997 z8I2(j(`yz7zTN+pc=&TmTXQirSu1>-@$es~v*!)UXx`qPh=(EjK7%sAahQf){(yn^
47998 z4~7RjoJI}Hqky<dX--|=(F{T%krEMZ<mw<Ej>Kdon?6@Bbn+U`|AMJS(!7uvl(?B!
47999 z0edU+D=}@&T!?|F7=ckS;zh-3!^$lPAS_IGdk)~UB_&inDFAcTNa=~3+%MB`T@ldQ
48002 zfM_^TAxwoNO%Dh{5GmqVJ@4`zlAheJ&RqGvxIW-HA@=(LnZF7PPY~5M=i@;^2%w>H
48003 zAfh<Wg9G%szaW?q-4X!(9ug62X|(UP3;vYo>B&h9fZcvo<OJzQGuy34S?pwipH#%z
48004 zGdB})JuazE=0fYu?+12cz-jnKDhtp(h!{<Kt|o+&Gl-e1M6|k9m=h$Dc<86Vv+ye)
48005 zA)lu!p)jEHpWpi$vWdJnm7c1>XEB&J0GzFFf%A-0nsrIFvQ$Ee=8=-i+j-8?;*y+8
48006 zovx~l-IyLpxx94<NmaIR>nc$d8KY<}M)PO@P0XW%w`}I;1&P2p<8?#EHqyE#%Tb8&
48008 zeiX%G#z-C^NL5+XC@Na&M2()Y8V_j<5XeE*DUip)0!NTye6D37Q$iv#kj4mjA8y5I
48009 zz^!oq3sjrR0<F9-+1@{_o}Cm(IBwwZ3-L=uWHEdD?)6kJUJ&64PS5V=<1&0E?bYvn
48010 z5qUnY*9R|Uwg+BzWx*Rm0D>)J#sSX-3AyhjUh5Vh|4E{8qWIESsjT;~!y&In4*7ZH
48011 zm)v^aG1%jH_7Akl5&9(Scp4>0#mf53#05afRGswsM!G~PB>Tab-iY`Ypi<QgctMpg
48012 zMmDBpW6qpQcsBsFi+=-Vae)&FSj;R*(f{bR%eh!#L?Sh&=e{JEC*go*hZbmgVkcT>
48018 z*a^rQESWWQac?~xvsY&-OS~ahi&j|PZi_cBE}ZFCqp>9$Q(-Er-<UOELT)c9*}O@q
48022 z@MNylH$Ae9++Mj<Hnddzh{0S4PK0EgJT#drErdU6>}^Su-g$U+VlbBnRec`m!?0<*
48026 zj!xr**r=tlypPZ_-gKPNh{q8WF!8O)F_V`Ut)|#qF%yjh7fJApCh3CMP4khcviRZ)
48027 zu!3IKll^#0U8->k!8i`giq=!SqHvXl<oBn&4S5KTvmLYCV|V0?J{$HX&uu?>e%rQN
48029 z_xiWy-q~1wqhN65x*DJ<wPLxSWHeJV(y;f*&2JbNih9c?z}KX1o)+|oCXM<Npqc+}
48031 zE!N!WE--M8P5nB2FxYT2LbIkF{jCxks{+5#!on0e`WD4U*honxWC8^2cxN?M5kwUC
48035 z=^kC%w^x2`CH>G!*vvm<pDb=|9#PeYxO<Ks3;r{>K-504@M&b7(c%8kgS+t5afI28
48037 zLMFAPvy18d9sS~~*9P0~9_Ustl^iW{X=(Z5v^=rH$%D&(JNPA-Xc>pgM~9j?k9VMh
48038 z%l&-7oJ0^=<GVS-rys5>yuHx9Rg%;Yi62-9>O<zwTr57^&+TQ63qHM-WZ`<JdZi$l
48039 zROI4P>*~hj+D~r-<0ppub&gm?=>1GCTpVO1-Q9{SD^H)|A+;Dr#`q)lE3TD+xP}A4
48040 zSUkFu^#(cflGNCnmKH1VIV-=HIeM8Q=d8@1ey&+tlfC)Q5cBzX@Z12a8><LAmP81R
48041 z$;}GQ5+MZ5n8|DIrrb%=@K6ZLwl!Peq$(aPoLv#(cE7Up-j$8f9w$gsY8%pIugqQk
48042 zzJ*vluB(0z^w)x49FNeCc)!P9cNX?Q`}+i8HK-(5C!;sL>kb;;%0@{8w;hs8+2KAx
48046 z*l{SpU4~}4ZJ;Q)^gu{vgxUP`$6htD_BG{5-~_~A?d#eMN}H{!o#$v<pnD4u#mr?5
48050 z6}u}g<z*8*&qys-C@|R1@tBxND#@gpd`0hi_VR15mi!gCTNyU)vFJwITFoT0u~fAB
48051 z{u}dm-Q|{TF`~^+OHxv!egE}W5M$hbok+EIM&n>6(yQ$pt?JP<=Z)-XrNptU>M{b}
48052 zV(@2WH=FA3AuPcSlE+%0!wPVyTn@jjBP>vfrNU?k4~C?{g2B_--q?CULZH0ey7#p~
48053 zWnG?2Zaf%w)-8XR;6`?OY?Gj{|H-#n>vPV874kO;J~y=m&-d-^3>-h*fvtha-2Jx$
48055 zD8I$35<(Ftk-WC^$=$&++*=Fn+Z9QnLSdRpXKGc*zVh~^@{eu4dui+3+6!xJf`z6C
48056 z2z2FgMKYpl^eeyis%PE!1UR;VJ0X5-tH&TNJi=av2iq9O(h(?Ulni;NtLQ9(p~<AM
48057 z2u)^X-nUCP7CU!JlFnf$5(d#9sk4bjZbrx$e1#!v{Rjv&7|pT&{rr13oD;>;nOwf@
48058 z*{Iz04j@)e6gC%({R^9Xx~G(*YKF6_34fT$4+g(J>ZI`cg%1-wVBzQ=ppaFVARa{H
48059 z8DVK?-vJ|6-qg8WmSr-GhEW6oF|{m2T@?A6{;@ZA-*dt_IZojI<A6RTYRGt}oVw82
48060 zynU*)x#*Mj8-TRpfu_dc^-jzqbeZWcZ0updAjC~GscXC6duBusU|twSF^Z?mTW-cX
48061 zr|i#tWad4);A-EwH6Z0mSuzVdi|1c=dCj_V&NJo#B>1<J!w3&i;ostDc)B|svUo~W
48062 z0vMXMz%%>snSp}=9$6X-6Ct2agF(@Z+P9(Y&Sstc-|N43bNk%dJGQ4s&n(Tc>3*|x
48063 zq11Tg-E61hg~EZU(6+Y=;qa?J@aBC6q3L8hQL4(|)u&RE<lF+>2l5;YhDDan_qX97
48065 zu&*<E^c+S7!bA|m5d=koNt4a3Jih;WAdOHV-dqHCCTKWG03R}l$v8*RO@`qKsh|~Z
48066 zca4tTf7eQ)w{~;$320|s<p*w0h$+#t3&pMM$qln!Zu-vmS3)OX_2jtoJ?<z>PPRPW
48070 zX}+H`IdpqVbeIm}wBWj7KltdF8@4y;WlT7}#&50P*_ns-u>FDS1GfTrUMs+@h$mx}
48072 zW3lJ=79^*thr@|-qG+Y3Q%@w<vrdh?@|p_;KyzYt`E1937t0$ij{(KYk1s)r6D3LP
48073 z%|>8#{+I84A$TJAR}i>XMyq5FaCwZ;F6jrJhHnO8Wnt?LZ+aqAQWOI6n|3|-T>h*x
48074 z2rO?c?Cz#)a0GGS_g0!(NG~eW-6uLvEyLYAW;KziH$J=h(AKP38sBTolv6+=!CAl)
48076 zbT~v(96U+y`(FY5)382%51w;cY(zq6I1s(|)UyGMAw?s9cFB0=(%vImy%>By-*d|=
48077 zEQ43!N$9&DScZ?MEamz}m=1Tg3J}ct>w7Pwe-@e=)nyMH#Y2AfF-~GQOp<a=lL}50
48078 z5QGLPnfK+?yMwR}t{}0y)dJRp_WZ)4-0zaH%cvxowotpYncOWd-8z#6y5+!1X?+bi
48079 zg6!@GUt2!o3F=n&)P^72?}ysn)Za0hkMV2$-<TiR*I)OhS7z&3B#1_BaiI!56kznB
48080 zzP`0k*k37yNh%P;37W`kh_i`TeGEqRX4T9-y7d#&FYGz{MHtb;=-H()v$a&Cq?!3E
48081 zZ}@-Mdk;8C?&?mwE2pkpUDZ{cbMBtlJ$Ys)?9R@HnVs2PZI-ms1{6@XKoSxNi6jYx
48082 zKq7->OcE9uW0E-=+xU+Shm8$37;`=w8~Z-?-^M-+?9S}{epS_RdeVx|`Fw}97Glv(
48084 zy&Xgm)~;8$VF_@%EG}_kHJ!QRZu<?Ky-LB~xAJR~Pw%d$_kf8@x0X+ow1DN~=SQ9$
48086 z=EI^+i|*n6u|oR3cTL-D?TM--bKvdSv%3}#rr&v!ZS$N;)QJMD?A(1Sz8km|pme2O
48087 z;na}f)JtIAyc=I>EF!Ho2e`ITnrKa#Z`U{;!AMr-!%Kk+uRF-;EZth4pl}sdqwHjv
48088 zjZ`bCj0}_I;VFHOC4{Bj*NhIt7Y|sc9+(Gz64ohT4b81n^q-v1Ia#tC&4m5Qh+AdF
48089 z?k8T{e6F`Cvg<5gOVZL-tZ<KS21|EU=KBy*B)EuFi7q^~AQ&8jFpPQK?%G1hqAB2o
48091 zhaSBE3l`~;(t98mFIq-INo#cyK1swN#-N3S!Pc_HBx-Ep*E?yL8O8{b!W#MHuhbaa
48092 zazYZv=GjG}^;B>LNJTJdFjL2`T{dCO!VXW~IE<UKz|l9|X3x>-^#9eAzzX8W@b5r%
48093 zrdl*&<HW6tLv@OZ@v(Ff1Hp?+!xAK;)>1>VT`8dzGEgfjRX--i)ugB>6`GzoRT`MQ
48096 zJ10N(@pD5x2lwV@bXFx5Q>Gzy{4c?A?;=JTD36Bzy1o;yZRYUp-*Jy!Ea{}mn;_dG
48097 zNxLqUGjrwfV^gr8vOfAsluR-}QXyG2W`bI#=*@+zBix<mPTYH}03sJ7ldCNbLC55}
48100 zwhO$0oK`tnbu)?I!9M^2q-~i5+9iFpS-UQY*dM_u6y;PgvY7qALylC~Mm|f)tZ#p3
48102 zMu1H~QCPnvfdH2yazgoUy)-J<jk&-QYBA&bBF3x@rg9<&d{J%6?~7$qmaZ&Z*FSl0
48103 zCbO8*^6I52JiM!J%S-Qlw9eC;uNOnPn2`<Et;VzXZ$b&6x)pp{GGC|nptbZLY-@pf
48105 z*z6N?iGzj1%eTR>&p(^Jwi=(G?&XxyOh3&V<y>Vk8XYwQ)sT&xhMIQ~|A=Q-8%(5Y
48107 zE=)Tz0!>E#bgk!D5k@V?cU6<SM-x!%f@x97mSvwpc?p)c^$tqR2k|#MA$Kzb=xXWe
48108 zM0AM(8ct{TfK7l@%Vul}Bv-U;3WQQ`o4*;;y^gzC(83A*-I)s$*#j9z$^iu}(MxsU
48110 zG0n(!xYe2<BoTDJKRO>xojRS#97<-M1}6<n!vOJQK4}(S-S0O3+{^$<^!xAw?GnAQ
48111 zbZq1UM>9SX<OiDGVlLJPv+dq*_EgbdjhruB7-=yZXMjl9487}Aa?eO&o!^6&?JdO1
48117 zw9~Q9>ZM-uVD<Pb&K}BV52Tg>8Izbp#?+DFl4%}!^sG&WlZTmkkun4^6?Cf~UmzZL
48118 z>j#~$PHs&|v-I(%n|u_9(mc*hkJiQ57LUCp%NAp&Q*2j0INy=m?|17SN2Ywk$(O$`
48119 zed?EIY*EHq#bo8tbB-w6We<OOcaPt8BEN}_60d0m>DEQ1<H+46|6J422;kU&0elET
48120 zPz-M8VNJ=ocF)66H7L<y$V@wK#2|6b>jZGqK}}4L4_M3b%xy2dIlgizdoXp#<$N3v
48121 z@MPW^J^t9u$8HQ7jw2Dgflylj2Rq-hL|?sM(=1qb<@*L*Zxg2}gkVKoksb5V(=;Cz
48123 zI!X)cA|%~&cGq`g`a(QP0uh-R*<HKC6_IOqPal%98iAp9TGH-4kn+OO+^tWhPQ80}
48124 zdDs07>6kz58@Oe*aDBDs$V|G$f55);G~t8d-1HxAM%YC#nn&ztHY-EJ;}}8FxN*ns
48131 zd2o#9v7zQdJ!tY>j4(yI6PYc-2XC)2y9PxlJQ(jUXG$uH$c)BVX>ESsVtghz$cT!*
48132 z@~U%+Qr%lS3*}r2YtgisQf1k11r82}_xD^E8H<i#Q>oCQmmbH->CuBPTX4guui|Im
48135 zfx?jdWOQ7VtYH7~;e)&0Fgt&A)@}JZZA~>?*f(|J$&1lZmm%-MZ|uyN+v`Hzx~ydV
48138 zEJYd3)y^cjS0<--tCpDzGNe!mJ#(#Xwk9G2vEC7u)Cd*F&AC!;C7WAG6&VB(h{zp@
48139 zV|_JLjw{89XfzU8MBhgx&MoVaM1K~GhJxeC-&h@k0@)MRb5=E~@rGdWdtN>=c)qXi
48140 zhT1L!r*OTG9)7HFabgZ->Fi8y<ffjU{{LsFbWkks^JuURf@B(=z24tNwr=t}e<AZS
48141 zt!JhOs<S)~>j(@Hz3ce-wdb3FmvAa^%5MF4gS+5CR*U7wd-^5>aC96P{?d&HPhI*}
48143 zAG)9u2I8iffb4)|+HfbT$x|4Chs?kv_BBS0<tKX21_KtZ1-+1*%P9wl@|K6fld;_X
48146 zEde3GH)QN}EpV4u%oVZ*+(iR-f})(p29(qd*q2!?o*%E=5CBq!X^xa#uGBFwe>U;@
48147 z-JKX1EeeR){oJAKj8&~VOT{ryyT-KDTsPI2mI^p>lS~5{8+2)5acS?!iF0dD)Uh%M
48149 zKlI7_3v<qHR{Rk0Mvo5~xK7n?P|~$U+pHHkPOvU-=of(AWM>AeGdv)Q!C69@2Slw7
48150 z!*1jK58jsUDIhq)5KK@4&S`xEm!e5HsV?>9)Rp_*hSMxmp`P9;-lj3c>wEhSoVxT6
48152 z^+*Io_ezv6Gc!<g$R)rX&X1ftxBADeePA>dRHn-9jbK&ffD=Jb48y3zP_}sI9oXM8
48157 z6sN&Im_l%%e^)`3u)hXgAUE05=ZG-y1IFH7pr(J-hMNSDX=Z<_9hnHBlP61YSxC-K
48160 zPrP|<;V>{g!wqDd7VlZyb@a(O8y1JUu(%Ha8+v#%8@k?Cclx((-K~AV1_5vPVzYjY
48161 zdxwFO_z(<4O2aUXq6OT+*>3=(tGB*j-Bsw@gU6gZbbUt13oPxylb8O;Zix-nq<r8_
48165 zZLEM526z3(ZdqFhl$YnO`K1#@XU1Z<1Lp^By0y0LJovCoi~_2UZfdZa@7-;OYS(HZ
48166 zz}eacYr38E1tT>UkCdtwf{`@Qm?&w*0yyAHZ@IVLl?>H-Q(4K2ebNqEd-`1ZLtdNy
48167 z%a-gNnlgNmT*mCb^J1bgWHQ__Vp4wm^vtc3E_NoAjhg9T{Y~3X5)S}rKen;7*Ui;t
48168 z7>@3U8Z<1oxnYKg-EsW<>JOXH4qy>ChIVvA+F<_%1feidhM|XP2a4qzfE@gJ9q^Gd
48171 zPLI5F&kdUbX-<BAeO(oGCka0e<YKNXGmv%Th20CSHr<4iS+vppiM7u-bBB~$9olg6
48172 zFgIu<WKqSkj1~n62BfqRk-qKnW6goY;AmuN--aWJ@0bjh;YcFtLKZ&@E_!9ViAHUE
48173 zJzo%lKMw_d)+swQjo|7$%s3u==*7um9w$)6A3C(OI@Hk)u6Nc7117<SgkmUt-@C9L
48174 z)(O~J?-y9WhalcKS`H;n&EJr?uxs()f$tBuBOZ@C^NpFJlAB6sQ7I-u%p>Xm9|#r%
48175 z<3~FKH76Kv-I>uP{q0J;^LtK&{>P37tid3TaOr=)gOCs~ghUagJ4T}36m4s6VJ~Ov
48177 zX1W6YskM*Vou=NPfTN5mMGxlQU&koidNfP5Llm$%_ns$trxE}H^S-xVeuvY0>e+v?
48179 z15z!iFM9CQ+H2f)H;v*PK^PtVZo4B-b7UvxA3sV5My{FRRZ|DK1hnDSXngtNrDvQz
48181 zhuifCT<VSPKfU_JMxUACKuF`&<a)EV-f6bU_7bg~W|YK&r*FR-pQi)EN9PvBsEBGI
48182 z-W*9BK7Z-idILIeaNz8#u3v%;uyrly;E{*VwzQxj@_xRcx(Yo?d<7`<F<YV0hAel}
48183 z=q}y7ty<H6E>p>cDJ>zuo5x6S@%ztwtkJH<5uEn=<aPaO*y)pk&3-k(Gmc8*Gjw3=
48185 zRO-W5=Fl192vF)H9gJv?Ze6>+5huF!V*i^2rC&|*j_^Z4IB;t1ZhIU!(wm6{QJkQ8
48189 zRHrlbC2-q&H^|v{+^#|>$93HjsK+Tbt^c(1HWpTM!m_i$*1YZV=Xc)Tf?fI7dR9H3
48194 z%>@Oi%yR?NVWS!|(}pPf@<A!4ju-p(XAb{TU$mG=TTsk?eC0dn%^+CRJoC+PsYTAP
48196 zlT{EHI)PC$FkI*b;V?(5eTRnfD|rwN=k}-Oj}}(4Ee+;`txc)f@#sWo{Cv+~ffw98
48197 zeZPu&?Nyp%t<3FQ7u)!y)<FU7%e+uA*q`**BGDta#^R}LddM2c1!wc=Q-ceqP2q>p
48201 zJ}~>H1GG9_zV?~>YVJ>j`uo?&$6B9LviBrco14pA=Yxug$?WKg%15J-pno*4#nXzA
48202 zwZ1q8m3DL?QcB92pzTT}t*lQjms1QSG1Iq%TV6&h)X{8hQ;4-4y^Iz!;2xx|52IZl
48203 z+3;bs>9jcg%G<lXi`Eld|1R1KH@m@^k<hlx?)<nK1!lK)sBHX)nB6KcyW-|%w~$B&
48205 zSbVy*ZMrJ!L`RHD;_B=ZE(?Lk#ulosvC%Cwc4L)2bAMFXSZ8C$2E*>kxKoHx--Kt&
48208 z<l&2i>02I7mNZLZGdVtCxIg?XB6RF!bYHM{-aSdTJjD_VSCiRFR55^2Pz_$n7`(~p
48209 zG|6!G6W;LE?rhn@Vf!wUq6v<Y?bo_pjQSnOUO45}-})g#@AlRTl&$7FF!k6T?ii27
48210 z1|q5{X}UUTx(~1LnjmHjR-x^eS1PrjPX`%1CvyfL=!-^&Q%1pL*=fWYL2!!mi;)yX
48213 zeZBV9eJ-p~0`;nA>~;IY@T2kQFx<7jr!+gF@cke>LvH_FXUBdb`Jd)N_isYv7&g~@
48214 zxwu9-9<ja=x6LDh17@1%D{@|MHBSKbhVFr)gQ_Mn3}(o)FB-@Ns;5Sej-*Z=t|kM;
48215 z6UE_xiF>DOQhxXFfl~uX-I~o&$!8w#e^KqgMA6rG@2$zfcT0h!Pd2MV|G|$>Vc_eR
48216 z&<yfhw%Cj{->bDZ;CJ|#b`)%@XA#i6RHSHdEP}z6V=qcX!QqFj!EADQDH`8ji|wjL
48218 z(UQFWv7wfgukr3HUmI^>lU-K6ni=1Q8(-CGzIEa2fB3^Q@Ku6c$n}lqDP7Ca)ouVo
48221 zU^BjGr!BP>8aFf<HX5YOVB|vuZ7dm=OgZWuzT>XZWCq%c!kweBiGa!jCG~5$USzg-
48222 ze1ExM)h>)N5<FD7q>Hw-2qq2yYmur*Di17Cq!#}lz*uOSao~_`Eb7mkXC26IvmIQw
48223 z70#t^^PzK&!$@@dPn{<ph_Cc)^w>E9S%-WISd3Jgv9(`|gWK1Az+Oa9TLbdomMS;j
48226 z`8~uMD{b}=Yjq%70LBi=9FBb769m^fSoe}Z-kr_7ZO_5fnu&dV{(vMk9mpIR^zWLF
48229 zS;*L7OvtBlG>MB|pc}3_-~=~=1V#~z=HN?mUft5Cyj~L5RG<`Y?0W}tH=G4%=8@3G
48232 z^m;Qx3P>J);6y!k#xQP>a<3VhpDs-I)gO^WfWOU3FjWY~68>^BoN#kjv>({(k@^CI
48234 zERC6?drHf<#!CsB36x2S*VIbCpHT?dG-q*~Wk`fkihdu>;5fKPiX<qa&>I%ajHty$
48235 zNodO|ds=tCtj{X1uF_Ro%AOufjT%PUEBtWRfi&-?ltad5DP>#+8KoGIrL+}Bu;5@R
48236 z!GMhN)Nzneiut^gQU3g1WGkG^8cBJR7uoU&tuNr)d_8&NX|cxV+V_*kfDNP+FK-Ev
48237 z=@hGY+qaXeaPc}#=c__OYc1K7>b1wtogF)?+QfB^#ZVN-$elfCKb=;`$KxkPxBa4h
48238 z(?pcEZ6da5Af*0X*{#e2ZI%1lj6<PbL9!(}v&9Q!-OK}~80+i<#gW-s7XyJQxlo6N
48239 zz)9SUZ)hThw__q~an^TeB24S<DX!wREyVRNjR!4iOA8_Lz)u4E&=(RyB~=P|CE-8Q
48240 zQUCXtvci<9hPj=ZGC8ISF=G=`2E(}1$i2??;)c_A77Vw-Dw^Ki8}p&qR54WWMal#r
48244 zBuqgvO^qfUNW4+6!TrV9&@kymtQX%tzgIGYJSh_dV@R=x6{;QRJ-PPbU@#b{EFGH4
48245 znAU7)ZZb=8IL|14-K0e!63O5F;GLPhjSs&bvQC9SfaZs*&f~C<90&|>Kbu>u682{o
48247 zLi>03><;u!rDjLGib(b_w9z{@J{L1P4v_Ktr~Jomeo=NGfvdFl#V9>CUd#vhc=-Rc
48248 zb6oiW5GD$_-4kkka>d=gZ8RJ&xc*qmh$si%b7a5~*`m)#b4v#nIi5@8Cy%`d>ctX<
48249 z)__R)jnODj3lO8p$ls#4C-3ppGF7LL+qKEi>^p(~pBLm}DxE&OG6}Vs;*)Y}Y^E$)
48255 zvD9nveGlwKWAVg*7V{U6$+?8Ma0U&<>_hUrHrPBQuk{bFzDF-zzid#5QHn(K)0GdT
48257 z-P4LHh&x+Z3iuaX`!Lprz60Fsscqb>>Y&4H39N6phfSAs;}LOJ^Wp#ObZnq*e8!ak
48259 zd|8qmT7*{d;8h?VKb*R2q56jBPKwKSA5B+}50vL-eOg%4NA=mI#rW*8AjJbC5*rvc
48260 z3IQ$_&HmEEBa26Xs-FXYIrq|eE9<zvp0|L5BWoYTPb2RFu|Loa!e$Wo^IGEp0PxFb
48263 zJf`!QrrP*0jA)$iC!l$>Z@tk4aP4)*9+1vJD|eunVH0th@h2F$$kN&L5*-hVlSHC;
48265 zo^a{NY<4*piA}RZbAb@#<dy#)KaKt-I50?VkOreVj*D%@VwBW#ntkGaMJ}*RCbPtV
48267 zP02nw9>v9E2&Xggg9qzmS#cU%#5U<d-_Jw?80||3&_G-aOnszIrWD|JMyF#emeFr`
48268 z%5YbUgA}c~!9HcTA>5a(>l;s;A}H1_@`uj8Ztu-E{~?+l=ogcNnrV#fEf`a?qY@$(
48269 z0@IJYcxK-tM_>JWbCGKvePqy=x8<KHN0-+=y!iO3=imG6BN&0BVw&DPrNHHGRHP#3
48270 zZ+ZFa_buK&`uf*1e{uIc$af%xP!U3DIW+<_ym{>HA9^Rp-1gDxEW}qlg3ZD<&S2X<
48271 z+k3SJUsg_T|D4z_1I_>wk%XK{j9uckdu-&&H?MpV(U3m?!H5SO42Pxxn8|+lAS{gS
48272 z3aGhjb~rh)ANN@%!+{K4OH~2`GdiCxm-CXbFTs}w%U-#<(33j6I3~dN!{Cn$V;2D@
48273 za?m)naiYs7e!GR{A9w#8`stRNPmZqA8-E_T@<&&`i(HSq59lnUsO7!O0v=sjoRo~J
48274 z5l){j25w6k^61RC8oGCic-QYF1Xx9YfA%R%14j>cULw-=vyd9J;Bi-ipYHg{=ylG0
48277 z{v#wwT!VS5{p20jkqgSo2jBUM(h*?t?1SM)f!8c~uIn&)WSh-vuqI)Te(aPC?A3H4
48279 zfN7LN-bm@vbK7T)t>X9>(dWROO?J68dy2qu1<ev2)$;gHU%i7y>3!f1?;Lk%I$RjO
48282 zzg`b$%CVKz<5x=?CbrwLcU~Q-FnRbsdI<d|`|)Tybj!5h-x|=>Mm4qG;&!YPNN*8!
48285 z&Z{{3yIU;p+Q06c4zya2Ore<@T~nKMA)bKkoBs}$5nbQxVx}BnqB4zC8-_;ih6A$Q
48287 z|LS>eBo{k0R_KkHSqU-v6NwD2WD*>kiW1cmOS$-=^6rZxuX_{oy}Rmudj+2ZS~1_L
48288 z6Y5o-d$J|EVRuLa_EftHm{&m(j9OoV(}1Lj^=j_EW2QOFB<wfSs_m(BJ-Y*B;g~HV
48289 zaR!RW>Y1tAR>~kC9h-`toBOTb_}r|{gksT}7S+p%9)I6;yU)LS@mcJMuf_L`UVghb
48290 zv1il`KdUs3l}da4L5)!%+H$(myFb70u{+bXs3g^MR_s|%5I$9h?7-D*NCP@skF7zH
48291 z)9zN*{;<WZ)b78#SmWc#_@EXwO35Do<n8-zL%$2}!p(Rb#{p6v;5eeCOW$a79I=&!
48293 z7Ysf|izoJ1z(rIp9C_+{dxJiN#_}V6<J0e~+0UB{-<a2Z6e{7_z17<5pE2kQf?%a{
48294 zA}xZ5OUevNX$3wZ2QGz{=-vT!u;xppf3*C-HJ0_>$A;~9PI^uh^hnfN`}fHw?$2Z^
48295 zKIEPJltHSpAeSl`mM)6A!0@7Mj91|DO#9-(_yw3KH}9qy2e@WTg$cM#pS$b=@gKRp
48298 z|1*M-vZR%w3)fHjdt+R&5>rF6H>^DR@swstG)v<Yw)))s!*_n{^^^M+Yl~BnUCWH@
48299 z7sbJ0U6S$O!LiuEd(J%c^zNHejzpuE&|yys_N=>$ty_0-57A-Oo1xy}!s$m2s|Ml?
48300 z8gOx!-&cOkv*A_)-X0fBo*fv!U5?A8m6Ic6;Fdc+IsMe94<p}fi%UJ&l|S$lPzJ@p
48304 z)y00cqv991x~r*h0qI(On|sisSAEoG65ncNfsx%A4X@Ol0FddIy}-=6#Ux?s>S$a0
48307 z%=$Q1zFDp$OhSzr3dt_6tJ(h)k0fxv5EMe-Pwwg=aGJ>p2G3ElrJ>m6!ERO4L2%+T
48313 z+bF%R39gz?z-)CV_4oE_EJ+!S8V0<>Eo?#!8nR@9f^`VF$S_&E7)xcMGq7ACq{0Nf
48315 zJ1BWRtY@7>-bk|brhp8?<ryjgE7p+wY<l}O+i$phzy-Hy;7bq5L2sn=q+6u1u)eU8
48316 z4}e$%)(v-KU-l$D6}SvgZ5Q!+<*mDrcd0ABb2x{xEn<y(84)K5gd$r6J5vZl!T!+(
48318 z8A-$$6rl*Y9BnFVSO7Gwy|uF{c?+o`BwnC1k=~*q>OqX38&#9Cn)a~{EeN26gZim<
48320 zZ>{P{DP#2&>kF=SQjFdYk*vhdl3?Vf?c}}kw)0%an12v|)+2ffo|D^bD>-@Zjt-8k
48321 zt?x1cR=Zs$$Z9z%NE53c+*V%yvj+QvF}vNAbaG?2-IUSN!!R{2UViTmGX8pgJm6W}
48326 z7U+09Y*>=Fya<lQUHK^z#(F#vPZhqgwIzyWi+=r{cpbhH*T6sOb)-l<EpF7ZKNjnP
48329 zBZL?L5O)ca$VTU$bc&M+LbQaY{|kGgrPa@Eb+-<<>Qg{x2AyMPoJO5t^t)k6zuj}#
48331 zbr{S!B}RG-Pr_y|w3umkK+%rzpiVo}K{gU}!_(eOu$f|<U>Q9jrvsTRpOYeQp?M!e
48332 z)6@^T9@j^)u|xnDOiD?bMXQ_)PzEDEMk`+M6TO6YmDmUlW}o_{=y#gD-2fx9(P1BJ
48333 zsaUtda_;Yb(7GG$1m%3-KYMu#@dU2?F_A<51=e1i(7-JvJ6#udU02;q*a;Gj<WJu^
48334 zDDiyh`$O|l+1j-yv2-F;o0>R2bko4McRjhZ=iVOV<WJtc_B&-gS@8L${YUN$^~Bl1
48335 zJ!LsliOFVwWe8j*NP;k|UZVuA(}agWUkeP>!q(<V-R3dJnkYXlW?OQJcP#nWwt0T!
48336 z<K3`-5HGhD+b(I%=ETZQn-ef(wO7nJrmoh^0_=oyXAKJEy}_`;VkqN<Gr=OlawwVW
48339 z$p<}WcFJaXeOg6Q3A?7z+9%jC$9*}UUE}Ce0v1m&>1-*%OtJ-YT2J`IWCW+JQnb8d
48341 z!}&}Cx}U2wPoLwtkhfQ4Rn}{Iagn4HCWm?b-uTGQFsa`QdQ0jeA}2tKtZ5>`g`@>N
48343 zSGQniyBBtl?Or7t5N`{vs0CXYYcR#mdh<Kt3i`-q*)Mdv_3ZaguTnM~jO<T5A^SlV
48345 zCM69$E~)+I+W6Ke(vh{}Zpn6hTLs&7B)SxCQK5bLKwL<Pkhqjh+)&gi#kVZT-qdT_
48348 zdo^7EE*-v?&8j?H1O8FuH#|$|1rP5rJsx*=s+&nW6gh1WJX}#Tkzmm<;&LJ>Dscn(
48350 zDIOG3wkwO3ezbYxV%is1ZK;SFxgc&d-If&79k*3brBr-t9f0osysHC?P?EOSwrEoW
48351 zqf_A%z!-pk7e)w~wA*Ljs)?Z(1{32&Q{#euoU}l;1q08NUk`-*S#XP{j$uh-l+{!}
48354 z4N4$U4bc1#n_I*$K?*1#<P!rNAlZ*fK339AKrt6Kk|rS7Fz`-#SHHeZygh!WC+n=)
48355 z2V@SW(`}QD>pG3(_EF?}C_2d@6k#_|TbhtsiDzhkPcb~`-2t}zKGI5oxR$~J<J#Jj
48356 zA)fGu13n>qDYiqHyxr_NxRX{_GiGoAsckl6C;hEQHSp(bd!c1mPVp)<)(n5Q-`4sn
48360 zrUY8d5~R-$5-ZD#kikGHpw~#-7KY40T2XW_hbn$U*}kCMEYP?`dJXUaFG=tuq33Zy
48362 z9k!tdjQmQd5?C2p*R&0pW(vk4@q{R{xIkjY4Y>rtnnIV>Z0SM)FC?-cOi^`(Cvc7+
48363 zX)la@zPa`*?nF$k`%FwbL~nx$nZ-IZFP&Z4cv@!dcj|yVINLYo!R@cl;$BYz$kbkY
48364 znSFb!c*kw<_S3%IZ69N#-99F~bZh@OSn$VV_5SfcZ%r8bIj29)r0tG!y*=)>l&eJ!
48365 zw#P-grF{7V+h&3@L39zj%M*m~{mrWCUFf}UL%{Fz8#MW!ulJEfXbM`#Lsq3t=bYBw
48367 zhIzVi_DgN^I<1NIw)l*l-1b<`W_)*ux`6%A&L!qHtE04|V7ig?lCEGMz;35;?qGfX
48368 zeFJ(Db`1b{N6F%S4Tw*)=pb9PR1oV6i|P1kelsEZqbqN-r`0S7P<Fa(Wb4>kr~L!Q
48369 z?<3&~Rz2QCM?~h6s_CX+sw5j1atWT7v?c`N!H@MY=}<i*15po5$-tMNMjo^0<RWn4
48370 zL;I{;N993n{V$z!bh;E%=unWL5`jo!ZN~Y>U?kBwU-zd{NTj^6Am)pReA-<5<1vzp
48373 zr+Ly&4E$;{F}MaWWOhtdXI2VzSdBAohkec-%39iTC~K?9!1iIw*S1WVufD2%h;DQ_
48374 zxaklbiq?l%GMQzJY_rgp-q$%bcX)jM|LZz6heR90>lrOI;=!FMH2g3yNd*uz-P{F9
48375 zv@!bS1&yeEvVGhzpMzi+Tk%`VFsr|E)x&Gg+sHm&+Cl>{Q7XiqcgN-1ON5cqrK_Ic
48376 za|U~IKwU@daI=es*d2_m)nkW1qTe6{E=K!V9t4pQs6bSi#YwWz%&jSj>P)Uz@7@-!
48379 z1F1Wl)1z@~?Pv8S*Ixr$&f^4IudmgiMJt}`uM%9eJ*uw?b+j#J>;Q@MljWBl-hfGw
48382 z;OEA<wF|NuVm7atypxRBk@&S&H&(y(JRSP4-9z+sBlT-%cQklMyu=CJGuD=&`%nLB
48385 z=9UdeANj;Z#xO=2qx;e2bG9*-8QECt%_S_q`05Lrk^1TX5|GTSWubf9hL%_V-Y%&S
48386 zv<90=jS0Op1VkD2rE3lvrdsWafvUk}h|P@0k9+-`po&qyo<K(Sbb_G5tk+A0IN8f9
48391 zy1r$=Fkn%*p$p&-5mjfqE>)kPvn>H(rvPwugx=q<0J@I#ISU+}_37}gYw?V`@z8K9
48392 z3-y1)`QNc?uXsNFsktX^8LtHx2E;HlN|uAD6!C{Mc%(pJ6b-@;HODZ4(HeH@4a*<@
48393 z#M)1B+|YSL1iy4+Krty?5~C55#P!$%AcAMiNK}+?LSOrK>Rc~B5aI>VC-54I_n8S6
48394 zl`t-11z8Yhh>E0!_(&gLJ^yz<e*V{<|FxgJ=*#cvKk(t_e)jFRJoDx^eeYXueakaX
48395 zf9DUMc>E1-_{vuwf8z1S`Hy}CA#VMH509w>F<cV7mPHT}AIqAx%v@hC>J=#*F@cAY
48397 zZ-}HcK>%SyR0@K4PcRjg5?GWHd5s^fFp*35JollsAARH_^N*f*&HI1y+z0nP_0(Vd
48399 zfz=?W31#R8s!79X^xYejHop+^78?jATBRX`X`hi*BNT(LBAeHxzKgsci-NNjH$Q9p
48401 zV^=&o85BUiy^gk^T&HbK-2NB=><I|S0qnE(@YuZPylvmz;HR}Gu>F?6W_JF)p*{`e
48403 zvO}Uw+#aQ?mRd*YE^S=x?ol;sV^2`8r~SEIBDw8_l}NhP-ZrbgVaaY)5{iIT5<OVW
48405 zRM;UxxFt7+Og36l<<>;`ssO`p9tTQ<AsmmA#f-$#dS1s+){9X_geOTaLgsp9hMHEG
48407 z^9;W1QS2SMc0)JON_dkIM!jU&q#P&~=MA9_Ev2-?&^b{Oa6k-BmJ9?(IEu>kNPrlX
48408 z!M=r2@DO|k9!}KZ;dlbYC~!Io1Bo$D7FipCTvTxtl`9HVh}E-=4J1ofvx8)lG2<Pq
48409 zC;7a+A0i2-5A9A1?BP49=+5_+T>hK-iXqtYDm$GQJNtC%%Yfbko`h$w=dkAno8nBZ
48410 zZ(Rqq)mmcPVM@cIwwLH{GD`}=2GuY|AP5EwCP(q$KQLgNLb3`H<H$=kWfDfjGa->u
48411 z<5bH=LF76NQ4u6eTfSISW@(wl=-!;==Yl*fXCf54x^HW)p?``{oIulrZ|!gD{0pb;
48416 zoK`z(ZFMy7rGMU;lWRhFmTWN7wjn(2G1w*{*iHaD*9SrL1-BLeLyr+Sr8vQt)VZ-B
48417 zxqXbzJL+NAcyCb`ji4KK!8%lPfdQ;T;Vrya^c?s6(p7Q8wjArLahb*wHT8(B-JfI}
48420 zL<PxhdXC}03L^N5XTRqa?gEI-ToRdSO-!gvrxR}B+0OOw;$RX5ZUluMi^MT6#p5{e
48424 zB+IojcI`Wz2K-wXs(`pNLni>|4Bq8jGzvNA>&*ezj^dojvVd{HZ#j&!4AiFxVLW2^
48426 zgKW}XX0kzjos0hLbK6HJ`|KwJ-rxz_{y0+|fT=UgZj7c9r8An%i;ksLJs|6$F@j-9
48431 z!2MkQ-4`_a_j^FiUgT7*Y{{zDB53#fYhK{hazh6<O)?m`9~`sqnUYY9<OJEiX9*@1
48435 zRtg|xjMLf3VvOV|XrDAF{TLMfwFfs{dT<;K+o0v0TBr>VzN@>f0y1pdDov`}s-CWN
48436 zRBU@SEH>?x6l}Fu7;W3DO{lUL5TGA*Xa4~?1FqJ#bKms`+noJ>6Qqg+WI-zxQ5{!7
48437 za==r(al5ns{{_UECT>kefPHGX5X|u)Yv^{z{~hW+0-~amop;uHY2*feWt-%_v3`jl
48438 zF9&y3w?qg+)J>7dNeT(C@lD&M|4a7GjtKV6f{?<!TAao@?-t)KGn%Q-(Ve6{8QUDS
48440 z^+tVjf@@%6^>iQmM^6$qj**OOURzA(dSZ5-a2ydpWW-sn`DAHeN?8UNPaGs|`05vT
48443 zDqa-s-XYo-UtjsmmCpcUyw}4)Y<DeFGr(OMK$h9@33hUVn*e{`%T7+R@E^e60UPeT
48446 zh=Pz%t;yiPnFE#{Jvx*g2#|u8)+>fou&lfo{?B*Z*Iaoi{bJ-^xZ2*RKcK2N9y~Xo
48447 ztR<6fQ2-t??jF<zGz0R=s5}1zN6&#-db^?({Jp(&BuXcHHJ{8;kzj3QrS=tM31LqD
48449 zrx-jw80hH<Gb+kj0|E`yzBf3OQdOLyap0~)Vvx6hz4--A|4C><J&ynz@E9`V3Bg@T
48450 zvADYj-|2`~0WnEOEpXs@GX3sycc?K)>DVE)nCvOm`sD8*U;4ohkby-O5yc~Gzq)n_
48451 z{5AT38to6oM?y>0if?jvD6?mvr-x3M)?g5oE1~Qz%L-g12WomTs#xOxNe8*}%6FOD
48453 z<nnt?j-6UQKJpD@;`ZA=SQ{Dyc7_BoidT{ehEfep*nQt{HsMd_6yMzGk=?am03-ZE
48455 zReZhikm%(C{$RgRLRdYSQzeB7&5a|-|Epv}SMlGOe?)&D2D(H%-S8BymuM*k+JG@T
48461 zcnM6%L<UdxSq5%YM1-qOPilj6gWzYq75uDMfuEJI3kA&|=GFn5_TDM5PpTM#fC!8d
48462 zB@V?9oF7Q_1DYo%d|nhG!FR%(!Dp89`4ZljKroi@C*vjj_-<T^%0qKy@WH#l2Y(rS
48464 zS&ZNbOwI&D3v)g$N^q$HLg;cl)Qjq-K+%~jIx%C3zM#K<PYs;twO3X>4<OG$SP<nr
48465 zm0o}JuU3D1k*s?;M;r7Ah-%5vN>8*J)1=HqmWKE{jKcDncs^Vz_4tdLMf&z&34e0R
48466 zQX{64k}^dRXC>MPf?+AddA%a5=$VW^NP-9#p_H5lz48hV=Xp7Dn@0c{k|z^)6|!{+
48467 zfYXwOLovP8a;4WANF-C^wQMl&i}<~Ko~srXPMyx}>pxTJIhN3kk$lCU5kv4{+<UHE
48468 z_S}xV4Q^*QGEVW<zE;QUyWG}Dr_Kk+Ugk-LKyj%e7ZOQ=V&tBjSW{&L$8m503XaHA
48471 zZL__1_3i3))$UHZBHf+kcGlg=C;9HAv!rv!22AJ>FkqTZCj>$-p(T_A2n0w1fe=XO
48472 zH6$SrLXA)NeQ#!VcV<^M*x~oj&*#;=&zo01@AE$O&6_t1H=GEJ-ZLfytVlAlR_?uG
48475 zuAD1S36SZ14w-`M33fsGw1-R&D%VdER6gxVl{#fOGS$_RqUT4=bO(?%WpiZw{(K@7
48476 z6Bz^;4sy(@-D9dqp&$lAeq`7!3YJ7Pey|)nGTRvlm5na*KVp0=ZWld-EYBt)_Y&|a
48477 z<)ji-<m9zX`3rB2Q^%Sgw^Ri$tqT1iCq#^q;YEhS0uP`SrAh&7K;Ssh;fO_@(G2Hc
48481 zPXCsgN*fJvG-_efVd{xwyq%LV-pM<y9LI;PQY!28_gQ#>a|$7;!zFcKJiMOd``pQ~
48482 z3}#GrQNqB;*<D_rB$yZ}XLVS!-rzLB;{L0@B@Fxy1q=Pth30~@d?=u@B(JQ=FFIJG
48484 zzyg<!AL{gt5*#)S*zh#)TtnJmAYMU+o{wB#;wLD$Id$x+Fj?Ul-rX6V8!%$J6^n5U
48486 zEE&2D^h+}hW2o9gmcwQbXC!d|(Y-mBXGtKEELaGLeGcA3BATn;Cyed|U0TCPcUq~E
48488 zRn1)?-6Ej@#4JawlVCv%%bP_K)i{LiZfs!yCViR1R%6bY4=0VHDGaP`o?$(4G*yJq
48490 zv^%X%9}57vZHw5#UHyGx+ycx&&g6{(&cZq|8w`P-f{V8zo|6U#2|90<)mEAEgVsFO
48495 zqgrDq@1~}E%Vhqfl4XUQ(;mqhk;7<WU6u?o$3h$-BAG@bll2kvg1eS(60s#=5qh$_
48496 z$&&{}K8P@>#b4K7uydN8I;a(t-T$((38?5%EUs(>sTM(*ge=Zy0e~g|Tn-nsIqk@5
48497 z<ZUKaV0k->M8Rm32t81cwQvCpF%Do1I<mb?qC3qxq;APdDBfYl#)N38jt@B&h^IG2
48498 z=I<?p&NYICTYf83-Y}PFoFyxpI@!?G^=gkm96NhZ$~u$&xI`$+0De}mGeELh-F61L
48502 zYuGCi8zZqc7b}?DR+G=;l5#wXhjYiP$Y`-5;vQ6{GrqwbLp0@>!{qVswvtbhrh>ee
48504 zE?;k$s6HF-ghWvjJ1-hJ#uhd+fy1QZHxR>i3G~Z6x!+@Rw(gWc&9mmJjU~ETjC$=U
48506 zLuTL<2vNtnN}tnYN-~GIT%=pYoDp6jLNO~8275Ue?3AWCfB}le^Ngd*JC6m#noN+h
48509 z)<bI-ddIGx8z)WelBRwF<w(wxQ8-B5Gpw~0ibM4dH|rFvjLStrLlz37+2JLhWbQtB
48511 zs)>r%`@Yl7(gS@Mmy?K#NgODZ91>y~G4Jb0SR~WXLb@}a8YLzg)-jp7Z#{CHq7oSF
48516 zDl}J#ToSn3%v+hvTy!|&>7K}y%5Ds8ywUgkKu#n~?ag_s0EFNC+>)o#ms>fUpLpt-
48517 z^6dwM6JXQC4UBq%Iae}92I>dzH+%-3H(2Q2APp~H%ybE<I7^Rz1n*C$O!NgCZ$?TC
48521 zJ{)B0Z?uK_C^A>Bg6pr+6VrMg2Qt4eHuO`AZ{s7)lNoKDG39VvLKSz2F-3xG{dgB!
48522 z+C%UOgO7qS_zOdq{Dt4f3%2?R|DEsGZUDiR7Q7Z~EG|TXm<tA35@7amiI^`u-0k5)
48525 z4pG+Ldk&d|qg3wo^&f@3l_np9#rK}0_VU<lzQ-FrP0$WK3Y)W!%ICo#W%NCMpEuI9
48527 zv~1@K2-XZeWgpr*)sMp{;%E8)7AZKZK`P?y`CUi__6%V7YQ@m4XM648l=3?hdd_F{
48529 zJJ;ZQffq>htZ;rROgO*amQ>i@$}3zC4T-&L3}3kV8lpO6m0Ycq%4Pb7Aqj2hgNAyB
48531 zX~fHC7C*|_1pB{3@}zyw8mPY-66o|QuZGaW2EhAu?|VG@fl2~>hta?HR*=5BC%@Lx
48532 zJVE*QKxi=cnD{ggKiGS#a`bTn9qq}-x{v7+*K-wh8J>+h=z-GccYG1OqJCHWRjuDZ
48533 z7ad|M5wv!?l<$a}QJ4JHaLkz7zZ%|Ek^rR3uipb-Fx(G6L!Eu+@3~bKKGybAh%op<
48535 ze7K~$J1Kv+BqlY!TaqoyhvYix(N(PBoqKnqpRsPkgN6?qzG1iu%pfnnyC-X;#v=ma
48539 z7R0dK?C#2SXL%BVNalp6S7KehpxI;`KA70NZ{T9e1_IWOP-rwBFS&RdE|>h4h$CsS
48540 z<hqhZx5aGdJGweM-GVI~?Cz9I?r6;H_ggYSW2#v3M*6+JIPcnH&76_M$0osup;L^y
48546 z12$2F3`<b7i^L`gnDNuEwr4}U&nc2Wy-r83U(7iCd@${ec`PLKHSxqvB8AOH1RS<-
48548 zhvAEcp92HPP~j@eJMUFaq-ni?rOT>_$q&+1`Ks^!?U9cnkVQ?EK9BNI3M<q|mMT}u
48549 zqKjOiDO&Q2C(6;ml)Xtf$I({mLR3^GjoC+-(i!zbPqHj|82Tu+q7f&(G^xT=f8qj^
48551 z@?0iT^%d<dF?~z<Z1=StvlB!n5<at;M4-IiZgEjD6o|{@w<M)*iF1d7oI@I_#JBDp
48553 z`6CPmeq-XWC&F`a4=2R?@|=l^kj327^EDzpzG$*9zjyK47w;@M%Vmp`*i}rwQ{lE5
48554 zISXc-yw%SM4AYmj-S_0%_U;xL6bzj!-828dnlZxhZXxL_c$jFX!x!!In(Y~@xl=5R
48556 zd-`I2Ye<YSe6}}ja+^&aJAA?S-q^Q-D;>EJlLJq`@}U>po?#Y$_`~O6$!HrQBP0^#
48557 z`;9edvDhKzsVF!(qnSg{Zj1OV-En8q7BIVstL?Of{U)Ew9yW$LUExp!0HfJxbWkZX
48558 zvP>|T%EyylUpX4jKk|a!m;dFbug9X<I~4MAL~6WD*x^VJN0x}v3x4?HdE(0b^y-h9
48559 zf5+c9tQyu0+lFTtUS@cc;q8X^89rtBs^Q-ZKQ;V{m?|g8fif5Zi{K2n13U%16ub+3
48561 z+_LC+GFF%%tjj6wW}Kt}x-+FDUzAOy>cLxzMUh)YvLR_^D(B?X*Y`Q<xmAf2Fhn*y
48565 zAQuNe9dUY{f&MIWz}!D!S*-XXf#~p24u>ik-wES<Uo>K$vXnZb1D<ju9N<FLG&*D{
48567 z=R6e*c0bu+$pxz?!vm@Q;8gbT7kZ9ok8}-6H}d?@v2O%|jv>Te@rYnN;P8Ww9e?e@
48568 z%frQ3CFLCHI#Ig^a~-GqZ#|GMcn1dj%l)^$O>}wUQGbj+^u6*4N0N8*llZ~>B<B_)
48570 z5<Oo<{lmvX0ZV^(f)f*g-dx4v%fhhR<t+FXD?JQgZH$R=^-t|}rAH97S%~h$9LnEZ
48571 zxzN!8HUw;BiDV0*!G0s}4BNa$`n|M>GhW%-;sZ9jV6~0_jBM$kRh(QK3>Ftj1x8>(
48573 zwOiqpZ>9vs>IK)(6Jab8nZ-b*!+*kfpqGjI?KOKjB~PQv>m;*Arm;FnrqPk16E1*I
48575 z7VGl_)6Q~S@<;c+!!5sd;T7Rhw3>Df<&GuOCwotgXY-yr?|kFn+pKURAW57r>=-ib
48577 z>8TDrBH*{WcoGD=jY*Fq>YOMK_T$n1&Vt*?du=w4(Ii;oVb@gD=?w%uQmBh~W-iCS
48579 z3F6X83>?{uk7sRBd;FI2_6Sa_U*5{~4f=nMd9%^$n*okgz#1VA-B8vu)bTM{0vL1e
48581 zs(8bGaeRWci!q7%Oa?!GI&-U`(=cneUe*1Elzebd)h-{;R#CR>DyzdD^|6j!39%BX
48582 zSjMitLQOS9LfzLyirPJPRpVEx^7cboD;2X>8gT-3i>NkrK4w8h8+yRYL&OP9PIt%R
48583 z&ziZ$>2}$8fkda-XFV$(J60p!so8$z9dIU;t##aZq_h|)266nZBTLtHOlKksv#F!w
48584 zcPt#fZTx6@VQy~@yl!do%-O+k!R?#4zIJ}@P~_NHaC-Q3ZR*U(ba3Y2-n+oSv5`x+
48592 zjueYS9#4O4>D-_V*=G+f9iq7Xh~Oq+8-2*zz)dxU4dm!?piSg7__35tExiXj69uWu
48593 z<wQnD(Br)O=JerMAY=j-3k1YB9ZDuALj5Ct=Gtq9&fCP0FFBk{kM)^-7~69L<yheI
48596 zE`%H}c~*BhDkR6_0}UjrkvfvTyAIs-<~&^)`oYybl*LCWmL3JmiUvvbAg9K=-7=C|
48597 zQnGBY;&R;js_vC^FzS_%Y5CwQQ->3Ri9`jg30N%v^h(3Yr}ht1GzZU&7H@@KYakV`
48599 zl)y>e@wy*VYPeF7A{Gh}+el9)d^Ao_<WqS|q&w=EuckV@PMJT6^!WY0f#_Z1V{SY-
48600 z?{d~+T^65cPYaG-PtoW0+Hzjrio4DZ*g_pq$3#Ask{s4BL*xkKu-{h++|oZDF(PrS
48603 z;RT<~UyMn~fYC<S`9&AX$K&VhPQM>pDlT~lp-|P|S&h3`>>8PgPF|CU#9~ppe);9A
48604 zAB7oofu4e(9IoAneu=A0tU<N;l5~T$HJmLEqrRRb$y<fkYG>7B&W1v1-qA4<Kt|pa
48606 z>R(9D#bc9k!c>ZgGI?LMA)#C(pR{yz*#)=YwqcI7i9X(>QF$|uN9ENQ-;}jQ!iv4n
48607 zihgemD1>X-Y{eE1SZ$q7Pboaj0$=Co<Iss%=#E6vtl4Wz#QeTN96vnMrO}Y{kEtOa
48609 zDs}%+d2~aPT#uq;2jaHOp#)DDr(MsEEgug>JY-0&$b1g$uXBqLYic}ZGHV9aRJ-2E
48610 zDPEu>>PxXa)1rar_tC(rQc(49s|NO{8#;7@YSqaW9y%V(98M*VBm(U^IWphTIbgH-
48612 zX>YU7Z1Rm~7K?Pod?TaC<n78%guRYO*X3!i-Q2Frk&(edB2e*?A$H`TClYeSx|4Q|
48613 zRzLDYw0fKB$Yj`tnR=XRo(<1ub5&c!O9d`g>xFRsNP5Cwve}-9+DEorG@4;#R_*S9
48616 z$ixYv-O}GvjE+V`#C-K}`uOl0yfc;^?8*-qjglC`;h@`Ptz<d_gCQGauSA|m3;<Pw
48617 zc*Wq8Kf|bwylvQzFF1IHI_y#Ikcs0(M{~^2dR%b>+~r-$h`EC(9Fm-tYFZvHVy-;%
48620 zfc*^c@1O$JYj)0^9LrZnIl`!6BWJQXEd$-f=t$I#ul%ab9>0Xk9!OFj<58j>G~HkW
48622 z7TLXLv;|Y?#r@2-8cLx=lLut6uk%2ESY#gga(kea7~R)~H^VHbTJ5iqp<nkHa)6$A
48624 z7W`l0IxxF0S&EU-s2wtUAAG`LAN=h8qzMiLsh&Xp*QgMxF2Sb>$DDmsj!_lo<M9^u
48627 z_FYljCluBi>6;%_C$ak&=_eE>KZez|8n66XXSJ<7P}eGFvcG2-{TN2v!aed{y%C32
48629 zF#jZoC-%RGkS#V9C+^SV2;{Xc!7YD4m!L%~n?e2`%t6pC0NA3vNq2n(;1BCBXx9h$
48630 zP{`g`AkexF7ax`Dtnl%B4v)2V@TjiDcvvu^z4!m0mKMgs-p10xqq-LTA)dom!2faO
48632 z-8v2-kGuy)ci1hbVL!<57SE|uy*KuE3~@u2!2{WNuiI<S&-J+{XGiTIcyjX9eTUQ8
48633 zqD>^GE6~Go7FTjS?Tk6BcI0MkW~ZNzjbsIf$IMj+rIHvH?S4UUaH3U3>jCf-!%!V9
48636 zSUI!F%CZJ%_>jQ`R?*GGoy)1;n4{aL==-(G3vM!BwtN)H0vXQ8u*l(YGbY9a={J^5
48638 zV&8&hL)K6+)auKS^(ABFi-+pTAquyvqynl>An&L2Gy$1}?yh9~`oU=SbiY4rwq+!H
48644 z<2^B-soF>6K^9-|V>oUoHm6P&V0x^(=3Mt?XxE%VGEvTQ(VeMwO-{ObOGpfrTwy62
48645 z$$5BNM`vhhGG8TfX=bpArH?Y1j?sk86PDtgVXM<(GG`-!>_}I%FyIf*AB=l?qTaBR
48646 z=WIk<W20(^gWwm2Uc;b{t2A$4aLRe}l>S<;m`p%p*B`-ADtAXu9X2~%nc-}2DS;$w
48647 zCT$drTxZE6bvm30TO{eUgBSLvqmkk;<)7}ch^IRuq$B>>TK9DC%s?dIp@-EI#v}Di
48649 zij0M<F^`Mq{Ml60YV}0TX20MHgsgtEC15r4nP_<Q<g{n{@PU3a7b2+h-GhPPa9qem
48650 zd#_FVqrAuE3NXO$;X_up-^MbKw{SL&6OCr6Y8ON4Fdxlyb~yN$I)(_ipS}pBm0_8W
48652 z@&f)EF%k6kI1#X0yb-@UKjk<1>|vs#Bl4TNFExnt^nsXiT75%@WHd*Y%IC{U<2Q_i
48655 zD*A?-C!-3Bj1O(1q3T%mJtb93&=+Rb-Ar(xx3B23cVy#3QD5)%y+emm;X~7%J<iU_
48656 z?(}rfN%v+C-+mD=xx?31Du-(cUnLVx2FtPRRHozbbtCD4q?I>WO&+@#^?C_19b^=r
48658 z>CR$4ni-ux7LLT`j|T?3u`SJ;Q`J<Zk`L$np|R3U1IW`cnky~jz4WymGFc{qfQP=Q
48660 zj^BUb#@@YcbP#}3o!u6|vrj$T6FG4c8D^Ob^DFR`R81A-jsNwL%4By|)lVN58ycAq
48663 z_0Omk8YYf@qBcGf3{{g8_uWt!ktA;}6&%RNP;8-R<?P_vL|-5<G!Pneff8_tj+x!#
48666 z?PTDWWQ+mAYE>$Z%0~v8XDm^Q%XCJK-QBWeI+X!u6e)FH>>u=w4=t2SH%+XaJ}@*o
48667 z<-2z}ZL^8lRJ_BH&y+%;`GuO)m(7kPhX+HMYkRupyN~q`&cwsxqmkp+fv3enp-!nc
48668 z8pui6sl9tcp`PBkRQ|NTOyBUNub(_ZkWA9k!-{m^8JQ)Bbk>jQqBcW)O@yUKC{`Os
48670 z?DnNIOA`aj)xe<x5B1%8K2rcWuQxS+apZ=j!}G*~J@@Kw4ZEPnAkYIM-0B*b`aYY&
48671 zxo+3cz(lDyK2~<SxxRphy?%1`@Zs4*$NZU*=-uN(Pa}HyBczoHxfO$_tSBj&$A`_X
48672 zp^QcJvwJa*G3H^v9E#JU;$B0F-$aV1)k8w+-$KhY=8A2;Kq+gbqc#){hdfSVSRBsI
48677 zMyQ4dvYc@$LD5j!<_^0HRncM-Z4S}vu=+#`!oGxE@LCwVueUVB=3Js>bd1CkuL2B%
48679 z(QJ1_l1wO-Erj~Qyp<JvlGh2{Y&JVPbCNf5b|W`XviD>HeW5UKv_--(afp6+;$hPB
48680 zS<<tMjJZ-(G)Pl{a9k}q?@GHnNpxuo<onWME!@kVem=(uMu*L8vIwuZ6d^wJOGqo{
48681 z<>^Vt$6%@F6gK%^VS-E@dHQaJMpuA*FcgaS4|a8xe9=T?EGjarWOF*=l3<R80$$eX
48682 z3I|e-P$AKo3QG}}GwaWFe9&q(+dU4KnEZ2rxO!omqf_$gXql3|`KIZpswWyX)w7C=
48685 z{>WR;9w+nhCeqkR@OpZln#WFk#HNp8_F=D|vn7u9Sjp_N;Ea_nrTOh$LF3-nLg~0f
48687 zaqr>I-cjPT+kF!8V|qImiq53nNWx^^<MY~#r1LvT=T8T()hdO$PH0gHijh82b%fHv
48690 z%#rjj0H~7x!%pI`z8xJ(L{jsO5xs^=B^TE_AWfB^y2f=G#Yc+vKxZhCJ}mjI4wu^-
48691 z^9F-1(b!jU#O+3ZVs!oxTk$zv-CZX*j`<Si8HTe;!3e@9jFW?dvt(qqkZvC&-TJ9c
48693 z_{NLr@l49+>*(n59yz2A^_gVy0#p&ur8w1{(5eHX53aYwT)9qXhhL04ohFmX(LFp-
48695 zNtEK93&R6*k^Bt{1&`4f_WFY{M_6<eNQ}k${T-2hzpI?;8S3o}b_e^WOQVmt><&*T
48696 z9P$RzKM@^)P?s|_5KU;P8<vl4th<&T<@h7bp=WgxH_kkZCY-$6>|}f<vn|=<1;OIj
48697 zZ1-er;c&;%u;g+W0TIGrgf(J|(F?2)6=oxmsY>5ibp5)4^~sNuaBlWcrQAn)H5hD$
48698 z4-robU=vB-NPbEh5DML>rXdMao~oviVaD(RHI0dX_D^b>G57(mrddNDNUCYhPy@?q
48701 z+PaPWJxfY1lG?lE7bU4xa&MRXy+G>RN^*{qa%T;f<yz;+^#ZxKP5SO3z0-d~r1!(*
48702 z-z-Vh+i7j3-bQyzE5A>_(Uv+VWXyL+sVy?js0NcK-us43msRrHCHbqQ^qS$KT;@E<
48703 z+cMnzs5D-Xv7qhTN#;knLu;NRZEljkk5#fJ&jXzqI*w%mt&+OhTsk{Z!)a0@x=;PH
48704 zy863n{T_LqcS)H+;uG{5ZkPY{kWx+jdk98bq--yN*GSo3wdF06+Q0V2mfo8!P)c7W
48707 zrVz#BBuOnB<_Olu$(6zrg!hh-zl#K(H%!ZQ50jiIk?g}Hw<gz^m($9<8CiZ84J+h&
48710 z<8WEUNs-Cj-(yx=<za_lOlS6ztPOi)+%AwS9pgE2pHlu1u?)~4|9ABv8tAtFhqp-}
48715 z2c8U`0-g%)2Tuck1fC9_0iFq-1)dF_1D*?>2c8f97`y<y5Ig{01YQhY0v-e}1up|H
48716 z2d@CH1P_6S!K(mqBEf6H>%i;58^9aEpMW=kKLu|FZvlS>-U{9Z-VWXY-U;3X-c2l^
48718 zhQ9_M10OfM*YG~WM+_e|yxH&;@K@lk!6(2c!Kc9AfKP+ZfWHNw1)l?-2Y(0t9{dCN
48719 z0{9~MNAM-^W$;hnE8w5OSHai7zkq)QUkBd+-vr+R-v-|S-v!?T-v>VcKLkGl{|0^x
48720 z{vG@W_)qW?@L%Ak;Ah~!!Oy|}fM0-Lf?t7OgWrJPg8v1NfGc1RT!jV*Af#WXgbY2W
48724 zha2z~cphGW7vUz{f|uZ}a2xKxU3eMZ25*OVz&qhx@NReyd=k7D-Upuyp8}r>?}tx=
48725 ze*~Wnp8=l<p9P-{p97x@p9h~0{}{diz7ReDUj$zaUqbw!m%^99m%~@USHg$j!|+w`
48726 z)$ld&weWTD_3#bwjqp$4o8X_qH^aBUKZ9?DZ-Z}#?||=w?}G1!?}6`y?}L91-w!_k
48727 zKL|erKMel@{w4ef{3!ew{5bq8_}B0g@RRUU@NeL!;b-9A!q39b!Oz3LgMSbI0e%5~
48728 z5&k3m68tj!C-@ck&+x18Yw%y-zrwG>Z@_QDZ^3WF@4)ZE@4@fGAHW~NAHjcvKZgGf
48731 z7wSems2BC2JSw0fDxor}pepJ|185Kpp<y(FM$s4=M-ylgO`#f^Ml)y@&7pa803Ae!
48732 z&;nXShtUyq6dglLXc-+xC(ucB4O&6hqU+H0=mvBnI)!dRtLQX3gU+HgbTc}K*3kyK
48736 zLLWwdf&LPG1bq~J41FB^75Z!R3G_+yDfBn!)95qkZ_#Jb=g{ZT-=V)p|A4-LzKH%2
48737 zeF=RT{S*2M`e*c2^fmM^=wH#-(KpaH(YMgI(Ra{y(f82z(GSoM(T~u-p&z4vNB@ET
48739 z3)qY;*otjf#CGh!PVB;NEMX7!VjuS701o014&w-p;uwzO1Ww`<PU8&D;vDY4owy5k
48742 z;|usA-o#t@62290;~l(<FXP+r?f4FSC%y~cjqkxv!uR6)@RRXV@Kf>q_-Xi$@YC@#
48743 z@H6qV@U!uA@N@C=@bmE>;}_r;;s@}H@Qd+F@PqiJ_+|Lz_!an-_#yl-eieQ-ehq#t
48745 z<G;Xvi9doria&-wj{ge(HU0$tB>ois8~kbf8T_~Sv-orP^Z4)Z-{XJ4U%+3)|A@bY
48747 zg8vKu6#oqWH~u;PAN&jaOZ+SRYy2DhTl~NH5qt&j;j4^+0SsgigBgZl8IF-peP`&|
48748 zoEFB)*cg$qGY-bdxEMDhF&@Ut_!vJEV1i7D2{REU%EXvBlVFleib*pWCd=fQ4yKdo
48752 z=xUU&ZQZ`PZ>HLeS!rf^^UQ@tn-o}HTypBlt0mNa6v(bZC)T#r7OXQ{m$#b*9GU`+
48753 zp)|8p#BB9SYLN!4-scup&z@Z+oy*sro%OBlT~bN|t!<N1Cs%hakW%Kk)r)tn)`uqp
48754 z^?sUnCT336Vfm&ETPH58-nqW9v$J|(^`Z=}-Mn=9(%SaM*0u`HZ{DneTy6E@MbaIA
48755 z{KD?)rL~=Pl9aP{S2xMsnbqBOdRM+GSqE2lwrQ4pm9xaft*y=3^~;-^s|%~!=NFgU
48756 z`iz4+>laB^!m-t}8><&Ctdc$~$5z)#AD0zKSfbfV+PJi?kVznk?X}&5t2dJwQqn7H
48762 zl!0kvL%H7&4;d5`2~kF&<3y#ux<IIP>oTEq-<Wp|P30n*(o|ZMrs}h&+-z{Uf~JOZ
48763 zb#vIv@wBtEW-gkrL&rr;%Gbq6K~okQ1+TjNC`G3>w$EI?II+EYdgF|OsWyiyVmbqb
48765 zw_i{vMTJN`xqd-A!_AEP?PBZgqI%oaBF1tNSBtc(64zqo+Hy5x*U7ok?X|bBZm*tS
48766 zy;H%z4z+TD22WXHj;-CM5i9~VI7{I?THK+@Q1um>IJ6-99ObDgW?_S{1GBWcxw>v5
48771 zu+FTl-!Z?r(X(}Vce$`AD8@-HO+@43#+j`PTPm^KM=z7PS=!h<cVX?&+RbX$k|y_9
48773 zym;zT-qZj%S;eni!VBvc&r;&e)Mjexbwa&Psn<zvd3E>pwY3X!rJ0RQZjy|bRF<y<
48775 z+|kvWDa@W+y`5f&n?x^%Rxhd-T4rHwje=(4H%+c?6AJ18Qo^bQPL=gwNe>py>L7b|
48777 zNs~&X9({8Ya#fQu?w&&vCS~X(WhN<Ff9@Dj7!;sY8UVdRk_Q*-cVvKDQK)Pru2gM{
48778 zl6ys+SUH1KVo5@tR(S?_m3c^aGO_C{K?<7GYtMv<-jPXV(TRs{91002W2j6+FU!h>
48783 zJG-R3rlFFpt`C+@whMDvN4K&?gTTUqS!F(1H2DT_o}X<b%?f`g({52QRp_L>Rn!2r
48785 z<g&v1+8o;2a=x|9a<Q#U!O@m;kW~iAsS{x&<f8>nv^A%ztmG`V_OO(9w-ut|?rY1X
48786 z-JK+Nr1nN>h4yA>1x<HL3K^U&2vDYO9V8)id)9(gLtY|Qf~w>w<!$w}de5wd+j}Gd
48787 zx|-KU@S>&8-?U_2%Rf3@QEQveTD}eEd|qnLqQtUkJE5G`hGMN9>-~z&wHKS4*(YzQ
48792 z5R0G@8v-?N5iYUT9XHiM(cGlW*|a74ievy9sAQhi*r<9NGNUXPMJ-6FY1d~E3TlVb
48794 zxb$8cnKzBnD{JSi=+G0H>I!|^1yK*`%rP-Yt+*}e=Z#p&nWoB7G)u!TZ7M>o$d>E$
48796 zq_C)GXPs5j$r1sY<D|fv1|UkhsiU-B(wq)j(7H?o>zvM=vS`7Y4w}<JE4G%Yw>Ghq
48797 zoo1~&w=$_Wfh&`3tWoDSodf1-&sv#u?vvTxT*0an&h`##dR`><Uh6Mv>0Hy!Kut?$
48798 zQc3GXYUhJAuWK)_r5@2=I=>@t(RPrxXnV-(!VlVxrjNXS7V>QZwUih2w!2;CmW!-X
48799 zr0qtbrEYshu_dEcY?J7=BJDz-ceLf??X9)ia>%T=X^)lG&I-=<GLvoY3}M$M$(M^n
48800 z)heK7s)<R~77<i{hOb(NC|I??%A}|TFKlg|(-tmT^^PHp+T_4ppFbxmQ$8`%5H8*Q
48805 z`U6@Eyr9z(3U6s_DY>ufZebrgxUkT!*%n&I)-F?dsohdizphQx%2Jz{%THi+0dv`W
48806 zP~(ENu9gtiYso1dYmuVmLTg5`C1WYyDtLvqRT<g*>vJZxrnsz|y_Hs)l(jm!+-9B1
48807 z?XH7<c3VJYT~P-0Oi<9*D(XSmlxx5im^fH^xNXctWVJr9JX^ZOGNK6Egkizas!<7J
48811 z&u9d_I<n5$bPy3`4P4f(2oXi8n}P-YU?V!z&s@QFP#?T$(J!}RxM0_35F}cPkT_D8
48812 zQMPE>SEi}~6}8Y(UJKP4v^t>*y&la4-E9(d>A;gmb#0Y&P}!zm4x8gu;iti}nry7i
48814 znRRP;tb&TE5!Gu~l#2RgqMB}HXwEj<!gjM-wwu+f1>IUtzICl=p(TS%)U1{TbSnpB
48815 z()9}q3%V7al5VYlK0?y39kiOqvNn1ov4QTXM@>hqT1yOHYcV-BohGU2Ryu3?r(!kT
48816 z5<^Xg!<-(6xt3n%T6&$+x2$))YG&<&2Q5%AYaJFr<6@h&7G2P|tb)cI3K~0T(HTIq
48821 z<pE}Co%}_F??{2Oh)fE)mi)+6Fth8V5F%56j;`K}h-f1s(3s97rrTN&Au=NP2@3MJ
48823 z*U}+U4nZf@)@8ql?omQSWAV-1m5OYxo>^brxwy7QJ#D!^jwI-gC38K40@fxC<=sql
48824 z!+T|_qF$@&b%GLK*~it`S<&2-p|mcSEKb_A+gT4TE~)ub>b0g`r`79>a;;9N*Gcs{
48828 ztJi{hEvna&dM&Hhih5Q1t*ZT2)qd59uc{MYt*ZT3>-|sQJ5Mj1M?07L$S+TR1@bGB
48829 zUy1z6<X0iTD*5%3-vB0M`sklL{ZpWSiu6y3{wd>?$uoKSr$GM{nLAG(*<RyLukNfZ
48830 zUcP8+Zj$UF+O5z67kPP;rF^TI)Z~^d^<9^8868ATD&2@F-_fLt?9%GR+g5i4<x;<0
48831 zPZu@ml3C>hxsVnpip@QpJv(%xsI9THQ-vG*I~CZj+2yI^h|Rs8^^C@jPqmH4zE8Cc
48832 z&F)V%N3#c1ZDety1(C*n&^lb-6{^72`rc3#tnU!5qfp-;s=}IauWg>WU~LXt2AiX%
48835 ztJi7uI-p+r)$62sRkn>zPW7qRyr{Q?^}XBjK5X?>q?V1@ipC;s&A1P5Z?5jjTV;=|
48836 zZm(_buCMKE>_|$kyj50{Eu24f?DFa93v(NHoi?67wX}N6+12&>F2BXPx4x)bEm&-X
48837 zpmnIZ$e}=a-OYmTrV@=eK@yy(;bOCw22|8S&CqsHAKEUqtO6|71Fn_=3-$PNu^zN6
48838 z>H<o&%URvPX7vM`)eUS`Kd{-Bfz9d$Hme)htZrbl`hm^13~aV_VEO{ub-Mb-oHj3*
48839 z<~myfC7S2i#}%%Z)do>C&!LaIXqMFOfy>Lkx_C{-sLgq&xu&~_u*za<+}d1I61%r6
48840 zIs7gaRz;?7CIYXfh+a_2?QGnkl-r?_tR&YcgDV9$H`E4sxer+hnrJ6ViuNL>1f?4}
48844 zgM=VKB!nPABm@aTf`~|vAR-bZNC*;`e$V%G&+K5HJkRg<em?I%@ARimcUM=}<<z-W
48845 zRo4()u9s8HoBB<<{)7Gt!GoIK(x2)tgwn_KF}nUze?`|PjkwT8Goy-NE8`X+ja!X7
48849 zH&fP0lv6&#FNxaVx1%}bQ_Xejk$XDPG0_q2NFK3j=@?GOXlt}R$DWgSAn$-RwtSvd
48850 zU$DWNV$Gmq4&uu@m3Oihl-FA;%7>KqwpK-5Yh7%LwK;FSwS#irXC1OmM2=bKbGAi{
48851 zygd=OY-6Hh*^1H`k>W^Iq;;fy*@{S~NcTv;NNr?<T^*@&EXRsWEUk`Ai_D^{d66ZN
48852 z)sYR6?U6l^Ly=>VlaX^#6^%yS*pz5dv?{tK+Rm|}ouj>@1ERyCqoQM@lcO`E^P-EQ
48854 zY({KuY*B1^Y)$E$*v8n-*uL1|*s0jL+|#zQZM)cRZdaGiu-n_+?Y?%cJ*sq$J>H&5
48855 z#~gcsy*zoOEM>2;H`?3m-Sz?dgq?~f;>Gc*cy&&%c>8#d_<;EE__(6t_|*8^_~Q5~
48858 zx2@aB?d1-1hr46TH@K7CS?)r2g}dI}R(jUmRl2HZmb=eA=AOzuoFj4)IR!b*a@yu}
48859 z%ITFeFlR*0n4F0@Q*-9#EY4X~(Jl9Q&W5szoNYO~at`L4$T^=IDy`3TbBpr&=j|x7
48860 z^E>BO=C;o5l-oPEf9}xSF}d}*GjiwVF3DY;yD4{j?%u|Gau4Sn$UUBWI`@2@k!P0<
48861 z&a2ET&Z{h>9?08~*D|kdUWdFcWfgh7D8Jggk$H7_6Z59#&CZ*jw>WQk-fHTxE%_Fu
48865 z!MK8{MFR`w7A!4TQ+lFcL&25;;*8Szf&&FdD;Ad|3r-fCFSH7ig=K}!3#$t|7xpY&
48867 zs-o(m4n^IHdKV2W8dg?QG`gt1Xll`{q6J0Eiq;lwF4|dipy+tfxkg5#+(yO4{Tnqe
48869 zJhpgB@$BM-#VZ<D7jG!uUcA5fSn=7$p~lI^m5r+#cWT_L@xaEz=%{Nvsqu`)^BXT~
48870 zyteVy(xS$D8XszWvhn#6t0Y-cQPQfUeMyg!{w2do>PjY+%q&?@vaDon$(EAcC5K8*
48873 zc9rcdJ6Lw4>_pkwvQ&Af+%8X+7nPTlSCv<n*N|-MQr?~9TF>$k^xmlQ-sOYK`_la+
48874 zx|>wqzkDFw4=Eo;Pe+xHp}4W-<IC&$>9q10q#NdyFDhSIzM*`3`QGxw<tNL}S6CHA
48877 zXh-!aw4*u%?Wq0=?WhhzJF3t0etke4(VrS|^#!z`E+8#<vu;EhHcp`vY2zYMD$3{_
48881 zyRhS6Gb#<`=Wwev!z9OF!u1Ffez5;xXK{nT-qdJsSALEh&@Pm$f?72S-YN`m@6gk0
48882 z7z;L)ujwhU5Ec*c{%*r~FT#hY#iiWx5;_~yUVonogX($-_nAp`s1QvUM?Qv<6lZfw
48883 zP)>;3=3^?Cad|bBYf?$A#O0zj;nJYmw&Z&==m|XW^SY9rUdek(-9YW|vD1i3YDM|t
48884 z?AM_=z3ImyM<aN0IbD@9CR)<-oXidzMrMZ%O*L=IJ=Byi(ScH-Ohxy|KYeY`6NB#j
48885 zy*WbkCfZfbtv0AleqJW^gq!K{LZXkh^fuaJP(Haqn-T%#xLgwz^n{O}5ZkSB-bpJb
48887 zGp02^=W3>R9bhv=Y0~`*+!_J3nw(1xrvhG!gBFA-W%I0lHYta63k<qWzb%5RBwsi5
48888 zU7B9atesK}it*cp`ucg}DqX_{`paW{G-jG^9MCi<*6*iuDkD?2K{=$$FoIfyv-fBT
48890 z5PlCLw}zg_-Bp=fkS_f!MD=aJeTZohG;$TC)d3fWvib(RRFc7Lx<2Ud#z9;I4$}FC
48893 z^nSCT7n1yrk9qWe1>@bXO^on)8NF8;l#TMzvCs+C{B9@<!@yy>J}s#Jh-;9HVM^!6
48897 zM9<5!D6WvHBFz^z<>9A<9B-B-^NTZ>Ysvk9GwAz@%w1Y4puF^(p)Bcf3G+>9mNd~>
48898 z5&(SABEZTGbXP@rU7xWybf62&fVZJ_J7qmjaxTab_gzIdvW-HNYfo{D=p}9yz1arz
48899 z+XWfYP)?F8s2<{GPU*|KG_6%q?b3Y(-H|S>E0tfBRZe%x+t)3A8`8b216dcoD7G{6
48902 z27H7lT?1xAY&~8RlndSJQ;SJ-35@wzYQ;U;N8HXm@9VG-<3(p=t;xL&sn=WFMo-&j
48903 z;YzctY8ITEvcB}~r5uWB!f%0k4LYZ5a#es^BTM5YGd0yLB`#qZnx-w--Do4UO`1<(
48904 zkpT;+r(cs6LA`x0z}dG|)4ZML5uK@fn}8S6_Uq-`&uPjxGJ4gwVf=R30e70**0i*;
48905 zgHjP2$=F8V6!5u0HAu%@nz3&+Ydc?NCo*!-2)v1wbkz`-ALxC9F`M><e5y1u7>NdU
48906 zq!qMNbD!%#1{*9reJeN2eU;XTg#qUMx<Lvx=o@fy1J2X-e=fBfScF7vka<y(rD=|8
48913 z^ALd-Vg^#ux4GJ9q$e~&Lyh3+Uz+7lH`o$QGgd}*pvTkn8KNiI+ONSX)R|JQV_ykv
48914 z2oY~K-~(DU+eRtRvY$-W56v>#y@B`5jGcZdTWbw|$0Zl>O_<_ZWyRom_C08<b=Do|
48915 z!?!zY*g9z79Z07Ju0ze5XC!g9w-qKFAzfNtWtY_~i&KHK_G}RV7yey`%w4mf9)4Nb
48917 z7s;*07h&Mii^?##o$2?QX0;<k8ZkR1u-!nR4O$|UMbphQ9&$QewxwP6El;m$7G+!f
48919 z%P5`CFX*S%7d>qeSi!K*Kt(rZEL#6AZD0E|m3|YPo!!C~SvF<!i*jsw5wBwOt-*S4
48920 zev!T3GRu}n|J|6ev&}5p3T0vNs$h(yF-xol>%q4<eA+j%c-{y+&f;KHqrtmQOVf(L
48921 z-_@DXm9&MJ9t%v%#}JQ#Rk6Oe0^2&4#mNTa#izw=%fz>B{F)kpuUs1Fr6wGg2x{hA
48922 z7rre}orz1+osq$a8H{)Mx-4DO@I@`G;U|{{mSJ_qercM~1O8R>jIG>(ZL6jk+}W%J
48923 zO1TC8bw1m9zMZB5z3o3i4HdsB#d->DdA40Kmuntvxt#8NUFg$>k)dW4jE(vjQi0_6
48924 zX-1MasF)&j;29bjno<0}09yQ-O8gC_ba=#0Qr+-(pOQ+Igb$3dN~$^jB}h^|B$Xuv
48925 z{t~nag>ni_c|2JXMPL+PQY|Ept^qs9r#X+%T*@|U=|wWF<RUp+c9Bjj%eqd-x5?sK
48928 zqb&o)Jz|i!R}7|fn6v0kPX~!wF-lAl)5Kh{P^=KE#741O>}L-XD>?+P%JA1?L@72z
48932 z05ZiQs=StBI`Rw}XhBlH_n^A^9C-_KXm2_c|F4umz14@(+)h1ci2h;>T|Xwq)6*x!
48937 z+i+L%u5)+S4(?gop|)r3z}gYD<7=nY&Z}KkyRLRy?Y`P$wdd}S-e1fkJv<{CnWXL$
48939 zg80!C#s+Z{D9t4QIy*!+QkY85W>A<-VIGBr-wI18te~(ucxRpe-oNFw<=^8PLZXt>
48940 zY`?e;(Ov&do%Vh^&Q=_MFdc8J=n-5e2s=)%Aph~v(^SV3=`>C!e&=*{Ug@;|dx)O9
48941 zuOLR}m?cCkK_N-k#S|(jH1|U~tuu)3@rTRpD0HCEnF94wjQS}?{S+Gz8yp)(=aCe~
48942 zP#8z~)l-;EVH$;*vAMAY6u<c5I>c5|SmvMkehr276gFjrtrT|NSKu0S-s5y~PSJV)
48944 zbjAgthU&B|NLy`39cqhH@6K@M`}J{BL0<cUbJCBubA$V3!MWNlc2@draYj-I%HU^|
48945 zU;5ny(Fm8@-L6DkIIk|w47+6mF6?Twp`jhw!LISoZY#R(h-<3rAoQ^_G@X~9FV!Ka
48951 zSE5^@mqTT{#1n~r6b1r^KK&+!`(-7lO^LeyzPxXT#H6fi>iYz>Jwa_xP`@V@QdmM^
48952 zIfYde)>64tufzrln<)f1NRZrakQ>C~kO9?+z2F0G!^&^-!GEex;>f?rkrPfRK{!hD
48953 zFXsc<k}X#P*^-tKnLNe>^;s6AnG?vMto)r~r_yO2yjSf;InBzf{Eh^n`@hN2UQT!D
48956 z@3iL<y}8t0mt>erxNu3IxunP3i7ad9124gO{=dKL&T!|r^WDYna(8vsyIc9)o$g-u
48957 z0H-^W^-ds1Txu_`sKQz~AwH)=iZAF;;!8TTI6;RY{!WJ}{y|4b{F9EbI8TQqJaQ}|
48958 zG9hzCq0E<sqC^(U%SE}oLS8Gbl-J3hiq7(N-AMdQH`AR|39q)h8f(Z^d#oW>1B8@3
48959 zM{g{myrue^yiF)Mf-PQYxbi)^dq@sruVs$-NGRP$PQ)|$0Oc)>g%URZS8TgJ&7ScZ
48960 zwwNc9*C356<sa$#`|K_MUff4-T`3;m65CT*mVAQZk9Y?tW{tXzU_DvxQk+mb2=4X%
48961 zN*-1(2@kxp_?=MdDXH00`Ix+SDTnaNd(5aw^4b#Yw^Nz&bxD4M+$F22=4a*i;K9q;
48965 z{43!dCEYF-(UYA#DshZ3u2cv1g#Efy1?LvQ`MTho7o01D^rgXl@8FE_kblU*1Ro$D
48967 znM<O!kp%JIo=Vp6oUWAjla~lj4{J9^kvEERw-TH$UME-}7BhUFo_@lf>H%O*J}h2C
48971 zBYz`^f@BY-FIU{nSU}5#1pi&mDJ`bar$vh3O>#NG2xILPN!%n4%D;d%<wFGjBI>Bz
48973 zdVUr>LI2)L{=XCtis1zNNnqw7`2xk?C9eUcliZN9A2?ermBhEIOg;!%BSS24-lv>j
48975 zmcZBl^uEgUh30XW^#8}Y!MS~qU$Ib(!6fB-vlv2fu1C^Vo)a}eJ{3V(7#~GFkn(bd
48977 zXG{m6+G6pSAeT0j%Wm-$WUXu}vC4We^W|0IF@iN>F2#Hxdj+XMZJ*1xDb5r9Shn9z
48978 z^>suC#^NrL@k(xDIjrQ*sh5HAeI#KCb85J3f-`aGAa3iuVoZ>0A#+Q*M#aH9mjw5X
48979 zf_F*2$wed&q$(x-;^&jbMRR&~4M_n1j_5}<Biw+lLG_;!kA?$|P`4eRR^*HS!=IW&
48983 zDfh{J1V51n2p%Mjl9Zpx&j@}lKPPxh9wYcS`8R?mN%ke>DS3+E8Tn6w=cFf+N-9mz
48984 zR2IP;l|wL3H6hrJBx6!tOPW5Zt|zIRR5z$@1iP!72;Qu2CU}RUwyXZCKfzII6v44-
48986 zDQc<uP<=@7h&n>>n4-3*uhdzQ#F7+(mZpBxF|wMH`h86nf!?8ako^Cn{-e-(r`{<H
48987 z{U`k=Vd`Camk8+(^amoWckA84(tp-}77@Ki?-5b`q5e?B^j^JJ*!m;=k%;SkdY?$>
48988 zkM+mGAsg&Uku<I~hz3X+Rgko7N1CFC=u0#_OpF%eN#D;PURy-;s)$Y{YhcAAh`z3t
48991 zQhc(QBBqkXHC?<Q<`~U*)hfO*5y6+1_^w2W&q+6HSwr-CyF5sJc8<R*X~&jsAO5c7
48994 zf?7IB07|_dRG@!?{x%*_-#1Ph=S*RS%$cTb=9)!jnc2*2X;zyx=4!K}*~RQ(_BQ*O
48995 z1I=1<m^soMV~#WH&B^Ap;FxL7G3T3$%%$cEw}ab(-dSgEG`E=B&0XeRIu4kJ&12?C
48997 z9-0-J8(KieVs}qyS!iWwO=x{+liS_x9@-k(5!xNv7djX^5;`6_6*?PAg^h4DwmR&F
49000 zGOL-@(yF#<td3R}K6+Ta-KkbTcdRwgs<nn$Bi+_+Yio=(&TZ~Cx9Y9Q)--FTHOHFo
49001 zR=SneB5SF&!dh*uvo=~=tnJn=Yp->{I&2-YPFiQI^ASad6-h*rk>W^2q$<)XveKOt
49002 zY3mM-w2yR(bc^(i^ojJ342lei438R-QIWdH_{hY_l*shRtjOHRg2>{?vdGHFn#lUd
49003 zrpVUFj>zuFzMO$M10x3`M<U1Fg^^Q{vyoKPz_+K-f@n#!GTJ=aI@&JUA=;Ua?$KV+
49006 zxLAE`a%@^`W^7JuzT3`i7h4ot8e0)t9a|UM7~2xt9@`b$8#@p?96RQYj-8C1iJiBV
49008 zguU2aX0No@*z5BL=MT0w*<0-$_HKKhebAj?AF+?yr|h$KDsIH1aW`HNFNs&io5x$n
49012 zoOhICISD7}6gw48mD9>;>$G<|Io;f-)6?nW^mhh1L!9BxD5uUDPsc=OiZk7r<;-;!
49014 zo<A5deBa&eMYtK@4t9sSBizyMSa*Uu$(`!Xa~HZxh-PNEvnjQIhx=9TT6crHnT~Dl
49015 zPIr&H-#z3Wb<gF9oKTLPlk1*vPdD7<6y-F_Da)zOsmbY>(<P?|-L=fR>z&h&D7`jk
49016 zSkB0tF*)OM>dA6@mTUkiUe=gl{Xl<4@Q)h4*X`<V_`!<2LOGw|>-ro$ovh#k7AW|5
49017 z9n=p<ir%j8Ah=e;4j)09TFTBEbFN2q2a5ldzMbGPP5!$Yp!Q-ULcw<%tf(xx-l%|w
49019 zjGF+;$;RgdzXvEhO*Xd7RW$@(Q!ny0`7yGm`huR`L*B3yuPONWD>deY-%)t$1qI!F
49020 zi-N8gpjKlnf-E{IekSK|eNf79vPq<#fVPVk>NcwLG>uV&U!si!;j8`zBRjH~{4?^^
49021 z7(R#*6Yop;7GGZhpG(akxYTG(DPu-Hdyt0+{zzeVc9wE6Dx#(e?12!6AE74`EKykF
49026 zj8L>z|DraYl&^8E{z>ovuuax4^_qIXz?e({@JVmo!~6noaG?U-UQKp2T1_cM71#VD
49029 zPoo#bG~rU30;)$01D>rxKB@dJ)ALTFBTIm<2|jP!2|hAGC-ZfRrNkkw{}HZd2|Qi}
49030 z%kdoznK0X=o|U5%agch-L>n(5PeF<cCj8jPLE$oFV5FqLIE1<xpwB-UL@lb^0FTsz
49031 zPGq$)3@rsk$x0J-{tGBj2@@lclk^5i4->8USdm0hn@z}vG3qGO13@{#z)Fy>42mc3
49033 zHZmVUHa=mlBDl@OnBv!FPslw5FL|EA2;vll+TLkE)*V;JkiUAA;7J8MmxK1?+v;6-
49034 z)#?IdtZ_f&r-8Aq<_e>%rn-yZ^W>CBIa1w7rEHauu_1X7Ez+QYCc2FI>o8s4r7)H`
49036 z7LgbEDe_daSQ>-hf34OKe1mHq1r%SX_n5Q5<7XIFs_zoa1$UDkAz7h1EA;yx)z1mO
49037 z2h50W3L~;lvo>*o6Y;Uaxa@WMCc56HUZ?9a))9m8uGq~wsFMbl-KxgZ^$wOKM-=%=
49038 z^0Wf}D<H$=o6sQg8At=w2lSw>(^!vIr_NLS3yLHm`O&{(x>`Z-0rH5YSgxDV^}~wr
49039 zBY&bX%F|!<rj&1}SLo>`wVAH(R!_3*#pvLNYB0fO<WqwS7ICkE-fji<<gZjKj&DQI
49040 z!6=~k4%6Fs$N{+kdCKQG&z}Kf<hj2@F(-gqqH46dMlB(@QauBD=Jv)Fcz>mVUc1F0
49041 zX{Lr64-;%-^utIibL%SxDC8kf5$Pky<cS7k=DVN@xe1g>k{me?&?M#L56D|5&kr#q
49043 z3NorCB)Pak9%I^W%cZxYn9H~hZ$qz%ht-#$D18M(jF@!=ZHu$&$4ue-S+0`)RjV}F
49044 z462o;))DzaTYbXP_-~*S;(d&(Kgl}rEcl&r#tN-@sHd2%$YN1lKou&6_Ih7IgL^6e
49046 zpgUwY^&8NnNxE1?4U$^&CYGXO4fORAV;{lS%_~_N4+3V)_K=w-aku;#UoV5?*ViDu
49049 zg_+0oM9+3J9eS!+@9cm)7n_-GpVL1g_^1JmHWzd&yBK6Ok?w<iH3Hg7w&ptD!|*vX
49051 z_l>cv#Yk$&?-<V!tcN65BTbSy;!9W>(gr>W19L#<2HDACs>00NKaFvW`F@aH*nx^D
49052 z{9Tp_m}%(GymPO50P<7S0jp{i+c|VC=0c~CCW0mKCrva%_90tYl4Pv-9xMm(t~$v4
49053 zLVO{IDY6p9VD&Id*N<63!mfJ<T2&53=_Gq01OKijP|P=KC|&;?Hmb~J_ySv5n-%8w
49056 z8Esy%D8v(Vl!_<mC=*Z7Q7$IYQ6YXnM-%ZZ9hKsT;yKZjS1&dfv*>6cW{Vd^OZ|!d
49059 zdGZyxQ2tyllm8``%Qxf-`3w0=xk|n%SIaf>ExA^{E!W9k%iqWia<lx4JV;iHQn@Or
49060 zE>o@4Rq967L)}7}<#shfJ*-BmN7ZQcT{T8Mrs~wwYLfb)nx%e1di$qpsrtEEu6FAj
49062 zRX3x!P5!wWb7ouVOfOZ}(De>Fcck-fKX0)wDF2`kS7K!FIE5qMI-jC6UHtl0_Yk56
49063 zKB>_2817{FV}>&sF2M|v-Uc4zkvySaB{)-qD}^EnAjSsqFH?V?5@%(JNJ&FRr7H`l
49066 zk<@$RRK1$4`>1JZrkbPXQ~xbhE7WSWPHj|M)ONK??NtZVVRcLo(L>Zpbw-`nN?SUi
49070 zcD5-Vh6OEdP#CNDAuJTKfE09&!W`O*61Kxf>L%DnfZ}Tf+k677V6m3Rc~7HtGRb2J
49071 zKQouYendP;L`dH{T}0R8HTmUgIFAm$r5|K_6SkXx1SRX>uPpD$Ym}ET3~5-A-_?+F
49078 zTbu37g>=`!>`X^@bFA6R>}w7%2b)995$5PnS*RHT#ZNFNnN!Uf=4@xFInP{ZE-{yz
49079 ztIW0LhWzUMYIC!>&D`lKbC0>-JY*g<PtbANJQot7P{<DDQi(xMp_btxp=w8jYC;`D
49081 zuF&4lfzaX5vCzrTnb7&L3R~esI2kSuSA?s=t-@_1HHo8<k@hfWuRSu{o{moT{BXB$
49082 z&v2h`|L~yj5ITm3M}_Oc<HHlfQ^L~|-NUoObHfY5i^I#pE5mET>%*JETf;lTyTkj!
49089 zDrUr@F*jBaD~VOcn!9adtz+$C9b%nh-DACCeVvWGdVOeYL~L|yY-~boQfz8$Mr?L$
49090 zUTk4(No;v+Rcvi+Lu_+wTWqJBjO~f-j~$8~jh%>{j-9iG9kOjZ*DkWloRfAlyQN)i
49091 z*VrBHE_M&Qx82VkXxBPt>|ypudyGBKu6JA6lkI8tOnZ(!-(F-d&2MS1uvgpb?2Yyo
49092 zd%L~M-fJJQ58KD=llB?=d|bt?cp{#R7so4{18zmUD&8vIHr_toDc&vKGu|iOKRzfv
49096 znmCa-ojB)^ICMge?c_Q|PMOopY3WouHBLvTi_^pD?eud7I<?L)XQVU68RyhHlbvbK
49098 z)=jucx7e+4tK3$+rn8gV&F$&-ar?W2+#z%fcSpH(?)dy_cOqKoPH|Vd)7@F_T)taI
49099 zcWeHar|aEK?pAk)yW8DI$3Yi<?Xw=nghr(B{o!{!j1s-%Va%zs2XEuL6#S1-7ck;G
49100 zD}`Bwms8L|pLwM5^+K#TlaHs^_COld32(`koPMzfZ}`I$G}M3#@ND{Bc!%KSsqF-h
49102 z{{noP`%-{OT#K$A)<?d=a{l2I#@?<-!TY~C1<hEMg7&}LgB@}e=iDp>&wdoJA;+d*
49103 zOSI><^z<;|ephNVw+>^aTRe<iDG%coZBno|-tw?w=qZ%t9ZkJK*E2lWY%hBq2!7yU
49104 zT&IPH5&BC!SY<bP;|aD%VWy(%g%23>k24-xzyjoQ*LX!7k5yJ{Q?N$v_uvRUmBJ|6
49105 zP!B$3-wP3LJL+&cg^}F@9(wbw3m91$c>yDKpQSKo@?#HUlZR3mv97y-@#f1@S0iPL
49106 zJVkMhN7j*d@B&7Z-}Ye1<fPg$hN;eSpoevctI((7*W9AwR3*IR6vm2{c(CP9rQr2G
49107 zpZYb$H}>F*e{}(#^qbsMPxHHHyh6st&3Nj;N;&6Yv}~-0wR7FP!Q4jF?PK(#n0x_a
49108 zLZ`isTne!9ixjNT$tlpx)D%Xf+NLlXSK?t-;U5<;>iKC3BbRGZ@X=eKzhrZ!z2=P7
49109 z<OPf#y~lZehMraXJd7*Uc~4`+(If9%{seuex_Fqq>EvPc-=9;kir+|Kw0mmmIc__=
49110 z;V)8m5WFjek?D|kC#88dbsTn@hw<!~2U~qI$Is{5-gg0GmXo~eVZV7;%h>b6{ahdP
49111 z&U5H%d5p2$n|pAfcM10<#_9j!VZ7nA2W#-ZyzZR-PNqgs)UUkh0_%zq|1O})OJQc_
49112 zn$({O-kbs^=cF*QxZcBT%zY{BO8HU>Biyff7!SM0L+kRrzMK!{H)eDEPdtp5-->mX
49114 zWc(rb#gCY-UP+x0SWP^Wv4?T558%tl(Oy^10VDdiaQ!cMm~-gE_58$xrTufp+iSp>
49117 z1d5V1scV?)G3VJ9C8{wV)`4zfIMmxia2q&XE%m;{m><@MtLFr`tgly#`4-4+^|-eL
49119 z2W)Qv6mMR@oZ(79s`&thpya1KVEE4{U6y$mVY&@?ka4DpX(^2J{S-A9PkI<7J>@Nc
49120 z3`zZlN--HflTx7V%^t?Ip7*X~90Ct{9z52~kQH*6H;T0e`ubM%om|awsh;ch6<_}f
49123 z??T$h3m!&fQ|KLe6*L`jH%fUDeJAcoeZq2&xI-QUW@H`KfD>Q9`|Igp&Y=U-;gudn
49125 z=#H~Y$<<s|8RU=1x$pv0EM{hUffvLIkLSZZj4J$sdqH|=??)^>S_41QLch!I-dz;`
49126 zgqKG(dCen_UKM-un65@J6%FA29mh3az!2jSUo$Ovz?C@9GUpF0_s&9VsOBC<_g`Uc
49129 zbmaw>S5+*%F%xx7>O;C->h<8KnCICByG6Xu7Rwr>5nrM#D&=jK%vGGyV>y<~<(_5v
49130 zypg5-E=tpg+g=DrvKLQ>!_Fan1U=P*b@v$74wD(TpLpos5!}+3S!aF4e0>@ilh1fq
49132 zHRu{@(RuERja&-snWtHg^zg8j`#RVd;*k`-N_iE%OtKp5S-zk8nkCZX3^7uUodu=5
49133 z!Na)9P7n2b9oUm^Fqbs~-HPMPr&oghWi8ttCsPYqN(;^ha|?rfK1%%;%NFRkttree
49135 znU8?mW!$3E&|Ji`WHX3=aC`s4(rF7)s>@j3e#6>oJG7pBo#7J3!-FjMrh2auoJ=r#
49137 zFO`>Jtv8RsUoEeZ9ptt0df8dtBL@ZJ@Y$pA{>c0DJoY{(7=2$T7s;hO-o9F{mz(7l
49138 z`6u~jc|d+D56REum-4v$yF7&z*UD9ws7uwg>PFRzN89gHkE<uuQ);4mMm?*RtMzJw
49140 zozd0khLygBy(#nv0>->MQRpT_(QqNkTl%38d%^dl^FRu<blpdYGWbaXdYIrH40|)Y
49144 zvmNwopE`)u<W$Znb(T^iWUd6PETVS39lo1-fpuA3s*d>=5@sO07?K;X)yFbC!CHF_
49145 zQmXUt0m-%;%yJdlWHNtYw+1?eq$M~`u%`1aG-fUy$a0&ldX}q4SbnM$<`}!N$8iYP
49149 zNNj*5Cib%=JaPdmq1JlyS@yolb-SMH*@8>NK0+zh%ZFjH&{KRvc00?rDC`H)8jwF1
49155 zXC2pZaYnm3NBmQF&>h7$7(*B5@edH<0)GpE?-#J%P)Lk32o;iziKB<m(TVw*xLOa;
49156 z8#0^?-UfGrw<oG8dVpC$ygfa`-~WljkNX^MCXC+dEaf;rrL>`=R5#Z+rVDh5uGGzS
49159 z#h7f&G<q2I#yaDGao9L!j4?JEy-j8GGmDMA=0szpvD8>?j5D?yCyiakd1H<--%J_<
49162 z{>ZNnl}F{6!>OFQAm1tGbaR$D*Ia;HD2FxlCh)e^++prE_n8OHBj$1QlzG-ng^W-%
49163 z<c11DC85et^HA$hyHJP!`KiE4NLcy(Q&U;GVI9$1-e+uuz{2=aw`913pyR=YyNg$j
49165 zfp1|+%EMp!t%tFs5Adz1s23O)c!u-58{fB)UxB9+5u=*(I^HMoHJsQgu*P@`zSk44
49166 zv#dPA^UF{2zGjc`*NUHTo-Ya5Qe*fF?K;*g5AnWcmwQ-EVe<Y;@1a~`EPN+AfpfTv
49167 z(>x<E=l6wxFSmied~L~lxE<y1qhAxS?b->*<+}v%d4NhoE1&}wC|G#Auv$!<!K|m;
49168 zhZuPr(AcA4ZFeP}$68Z(6x(=a^bA(GiQDkCp}Y^P4T-zif56IW(N0e0l)%HsobxuU
49169 zLlY^?#ZpQ?9%bFi>s3}D2eCw9zV;!kDx~@#|1n(F7^GL<)6k2xyf*TrfpxY5-#W=j
49170 z0$Ol7Y;pA{(iq=p@_6+@K#IZm(P>RSn0MO43MB)x|Hk`Rm1_LOpd8e_Sh-4kP5MlK
49172 zIlk0@pWF}iSGVYaTsPqPTFie_8l-H4TB%Xox>;O@M-8&M_4_EDWEjT2x1lT@N4)$@
49174 zqGWiUUuyJDEzjKloWBl!U0{Uqr`ShK-T|6aWjx=1idXC$RK!iXKd`6HVFp@Vso-@i
49175 zQm_&Z^DO&bUU&3Iw4K^Ty{t>|Edbfj_jAhq=qYvgw{^2vEil)w^fUTR-WLsDeG1mK
49177 z9eFux#A@gv(MGK$z1W`g;s@dyvg414J6JnD$l7rVG>~|fHR9BZG-4}_F{aC?kCwoS
49179 zZPKOF)o@td)Yk3U_BPwvzNNi`G=17WF4j@CgY;y<x9o0M-F?jC4VJg=5NKzzxpnsj
49181 zE1+gE4HPWKL0ah;^V^ray5x3VnbMVI*&6V_OfY5N!;+%4=D7}DE%Gw+d5-Zrf;Q*8
49182 zkon<KPE&*R?v!&SLrADcbZ1UaRI8^TjeOJS!x9AP-_Vd{J9)j)ohV&i#&vj5AExwI
49183 zb3RqbN47z^BFX$*jS}T@mbR<7^a!5Hh0M<-8Y8|1T>pDn3QRO$m4|rU$ECaqf12hM
49185 z3$wVMcS2gxb(k^yH@-%lzhXEAHTS+m4P`lEyl=P;)9|jG$!qQxbGaU4>0WNpqx|K-
49187 zu7Z|2$SWf&`8$?;tPd7(UN`?^mX-Httaf>j*Bl+>Z#-^L(B*^pIv;t8GF}hen{zJZ
49188 zoI7GS7x6CSoe1-KA_F;ir+9t#<NSSvt*bdVj25rPmj;yEO&7^K(BmYrUEmAh^nZ;M
49193 zDZZ#7d+<YyPVu)QV|Xq8EBFdRcIPy+c>VoaUah`Xw}58FcW9~|w6*-cI*Bn(jjw+%
49194 z*W|mawfyu!@`OmkY0S6u0FTJG^)-x(u1vk~_+P-cE^>y#da;)^S$OiC?sidMW1Msl
49195 zf4ePtXPu^mov(x5{J-zZhF(Pf`1@vlM0xh$eLXR+R8Lmzb~=`dT7g|&#)xrZ5!tDT
49198 z;oq!-R<H$0?_S0BZB%?E^JG4G<=x?Llb*d(-pyLMEo){eejxhLxq$akEuqkyXte`z
49199 z7_9s6$r#b{ex4`#2w%@oT55&&sfRC_1`|Ev`pbW-LrZ>JiMjd!bM9A!k_vgrw`xFk
49201 zXw1Y=Z_gJC$mU;28uXaJKcrFaatL7=d-dFp9hG#x#J7GEWt-rivHaSXFb2<4{rvwq
49203 z3#mUYlZCw3Z-PgPwjoZ}@{@l`?C?;{{}~ZHSIeolrO^%0+$Znm-N9X=H&`YI5v#}X
49205 z8jS(XUlPo&*;>TvKAhqRVCYGLX*}$do9XFMf(^Od$Z>-JjXHuMqk*d69rq-;uBZ&`
49207 z*9i)wwZg|(8`Uvfz!2k$ukw22Ngl5kXHR}CJ<YW`iYnfBpv-D%HM4T9-c~<rm^IL<
49211 z{3}D080B{j-ZdH0u7cO|O7alyCHi>-BN58wFWg@CP=_TFvu$sAr^$<Jz%uY~N_XO&
49212 zvSYj-N)G=^EB4AZc$aLG_s0$~_G7%yiOsuVCwL$1Jl^}d5$|nM#`{`V@b@82crWWt
49213 zl>alLD`|!2#EtwNNN?W1`ZnH)x}U&5)c$`{>T^^o%Daur>%-;UNr#ZbDU9-i>Og0r
49215 zDIB4&mBMj)-u&V^{J$>u+huNTD3>h6i_4~R<tYkhDWv?MNT8@_5ZoXX1fe7dl|i67
49216 ztJZ!w90+f!a}Y3|^eB(>O=7!9>Yu`5)z>qnk}u@_1K*hmmtkW-@9%mvKfQ}#7lx$c
49218 zp5!lG&-Lua{sv~8O^L5tH1F%E_<EebcbbN$ai0A&i$@&<`5XPodL!FS&Z1shA$F0i
49219 zyq9FoVY2K_iZetN=cSUCOvt2ICyU8msgkW^d)Z0$k=<lZ*;Zn&NzNhb-DBT=H}hs&
49221 z7*1e#3qwCW_m1%>!&MAlWyo`%2I~O!R|URVB*?R&##x4I87^dqaZ_RPe_-G%LxMvX
49224 z5l9~J7h=o4^-enN+^n>VgLEVd#LD13`1GSZjL?*L=n2bX%Z#sumtreT@bz!_ns?yx
49226 z#Sk|7%NH>I@%QumO<9WTgEbHYA7J<?!|e>;;L;oOHRx#)uQCxSP-I<@o~a=<Cg^K~
49228 zXYL2k{gABt9(4a&)_r@r-=B5gTp0Wx@acQfi@JZ-y+!w+@~_1E<hvU(A{|-4D>X`G
49229 z8L!f)=I<rj1#30h2dgzY@p_Fe*qKk>Bzwr4Nt)auZzYLxyX-6PAh~jv93ThsijI5b
49231 z$X#-`+=t!w$Wq68kH5;#<md93{F^-KulbPY<iF&3c|oS6#~!&>rV6RBvQ&=BQ%RMt
49232 z3REHawT)D<YOG3BsVY<DszNnU?bKDOMqRDit83J?s-wD2U9WCXT~t@q4SVpZo7Ekv
49233 zKl$}z)j0KiHC{cTCa5P>y_$j@_tXn&j(SPWRWGY~>J>F#y{Z;q-#zmCSE)DETk37K
49237 z^#6Qd-@S&|!~+jJGFtR!Sj%uE!|@EK4tr?S{bCNo`45eHs7@>n;A4-D6w4T{eB{BQ
49239 z7V$q=JNz%j4gXS}{+Fr+;wNH}_$f))*U1-HCVoY-^({Ht*b%A=%?$64jEhypy2M7s
49243 zUDwC8))JQ({GD^=-a9jAj@fLtec$(aey==py!U(0J@<3|eZQac|3`H<d;YcSXWsuf
49245 z=>KBJ7YDvL{>8a3u6=R$iziQR{lff<?Y|iP#n>;-|6=?X_kJ-sDNe>srcY*17EM-7
49246 zIwpH22PSt;j!uqEo}V0_yf-=drTAssm+4<-e_8Zp)t8Phd%hg_a_5($Uyglw{>$+%
49249 zsmW*Jv$$vJ&$6EtJ*#@=c-Hf5;MvY+qtC{koqski<rUU=N4N^4q5QnZP8d&*#Bwml
49250 z*^M;NDAG8`zzJ{~oI~0M>zbS34!DnZ@dQu66jVVGwTPmT-mt<nI5%u9uw9usu@Mfz
49253 z$bZ7k=7;%V?nQot|2-~)KfwPXm&<>TKf>klf6D(ESID2>PjT<?XHcuNl>b})JRXrp
49255 zm$-KF*4ub*P5y1X&n3DpA>q71Tr&yh4HAyuHIjF++f6WZlMw0=o51dD;$q1<@^m%-
49257 zmq+;U$x9e#9J*VM;)vf_A)$^Vh;W$gl8e!`<6TKnn+E%-C-M)u*NBV9zPia5dP$hr
49260 z`_kI|2D*-Ncsyw#{}%r?U&1fNJJs>a`4xO6zmi{tVpz++&)4xEpcML$Z{QnwJMZGX
49261 zybq;e2j9te^B?i+`0w%?`Az&b{!{)len0>F{89e<{4suv|8xF-@u&H};?JS<#B<#6
49263 z`{dyMNjys&_oq*hcY29yAg+<TH=VfA#C?H;j!*YP-@v7Zd@F)THxl<_;_pr3=8{kb
49265 z@~|JZ49=t9VPwq?Bl&T3eM%Y`x`y)mt~7U*L#<D|JA;33hIzQ{i4c*tJ6`n-JQxMQ
49268 z(-~Ry)Sz^(Luq*$HlS9*MPw1WP@TBSjpO<NR49$^<5oJ{0}QBjZa}00r<V$)m;t4k
49269 zzr`-4nbcOV44U1$4)o()iMY9_Cj4jX!7r}`5PXdF3@pU?1o3Rs&+x1qBzceIL=%~3
49270 z3IJXu@;UZRq@CmqoHuwcEIeM1cSZP^jPgPB^ljo3r`^X=-h3?O&By+{L2vurSmMqg
49271 z{@)<a{dx1Tls6xfy!jaC4f2;m+;5ZT15$YYy!jaC3M>rCn|khL?kv_-+!a)2{aOl_
49272 z+eaV~YbkCDrM(JiBiw&tA!RsNM=c1<yOw5MyZrl$;C%7#EP}rA@~@FQ-%Ly4w&_n$
49274 zp5fI&xSjtqJi3Q|cz++fhvhT!PA_o{#5I!lrV}@sxG#_|V2$-NNn`y?(pWzu8tZ4I
49276 z;9ZA!5R2C%5H|l4$-n#*hxGd@5)$`ENV5f=m{6F1$bAnz`x_GeA@cleXvpM@)z?YL
49280 z6kgTnAr|0cfXl~cNZUa0IngXZsepJn(j(vu(k_tf#E*0k(n1im-0@Cqg%F=f@gC7q
49281 zO-Mr_jYBlj4s172`y1Pezk>LzoS$Qx0e^wC6C^qOjC;oXcGy>??>+BJ{?Ps5@`w-R
49283 zf5xd$pf|{Kxh6qA7c*Go`vB655NThWBK-e#d4<z1ikvF#FaHqP8kLm3_;`Xyl7?zY
49284 z;y)?WBDLVP#P@vEcJQA=f_n}lzNR;}gxCz#^GY<S_a-urFqVuL&LAg{B#~2|lF1C<
49285 zRC2-)4iTU1if2K5o6IMEo5Ldsc-99{rIKD@aw@Hq$N2YcrQaFiQ5*D?`xrABU$#kS
49286 z)cQ}M^`AfMKY7-F=B)p;S^qh+IpiGZZ<AAH@mHb$4B2mxuYlw$Ao&V{@)eML1tecV
49287 zP`-kod<7(50m)ZD@)d;TD+tP0e=6YoGBUm$_EqV7&-;=;bP_Jnn^7dcq11o#ZRvl1
49288 zT1N-fkQ|hf^h_va_LDOANuKp2&vzoTowymK=Tz=1#eJL~qd0tyZ45$w28<)juOY<m
49293 zF%SWK2XPz?DQhb7RWm7TJa~dQkV(>0xMZo}7-AnLf+K<;h#)gG@M+}>q<%ra`=K-z
49294 z133Tb>47_Q$X%p#heL@$wKg-PY&M6yBj1@q?joc+xts^yZV7q21*J|L(h0e!-Cl>j
49298 zo&f_1yT(_MNONcL10bEt=MO?HnBvd#SNL1_baj<M6|G9-9K>S%l*9|KG~u{bk}v-z
49300 z@8%B>jF_d%sR;-Uf9P+8g#K1Y=mk>fW*7(4I4isWZi6)V7~TV8un1Pd2Gjy7f<6+1
49303 z1g?doZX-?yDcA5F9)ZJ>v=E8E7VuJxIJ~+CVKf7g>*M;t32+u%0@=7MfCq@7<@>+P
49304 zm62G)kyyy_DGy2I(vVd4mzzXV-p#1Rfy1i>4jdv^0{T%cspCATOy2-^f&bJae=H!;
49308 z<lDOn`sD=4bgABv7?4(ZUQm4eckhPOP!fU^A4uBjoK!-r(p8{_z01k1f`DEK*xxwL
49309 zquQ_b;1jHb5luE~AlRm7O~-o)&EcL&tML6}y0}Ma4wIqm0f&*6J3)BLUo)A?Psn<B
49310 zY`g!2Fh`NBtQA25!1J{6Iv)|djL*FwTv8-lQUtF9d@|!3;0@$128)qpF9e0i#=Z;Q
49311 zMfP?Ds6_62cwPpmLHa-iR)f{ZXFX^@HrWpBNa6%e6iy3hL2?%!J16{91Z|*AVyPn7
49312 z05+hf-$iwTC#Sv%c+Lv?)>g0;T@QgF6b@dYs{z}=b|m>t@S75!6~S+T-$L*10ejH(
49313 zLBv~B;CtYED4av!5c2;=;E#}hls4$;5rEGI_!ICa$p81j_mQ7J1%HaZavU5-Z~Yng
49314 zGsG#zz!-Y#&%vLgw@!c)=&h6BBxfS$%=!7NNY0rPk&eLYt?@Z?fUJEI$Z2x``~ds_
49316 z@Fij{r~n|oq=u-44+SWoYXih*3!0#b(<0rCSF%`OEMi$UXhZT;e5MFYLmC~zIWV2m
49319 z0pEx3qo*Ih571j5!Vi)E2H1dnI`Ek;uo)sAg!ke_emu~F(6+)><g*RgAU#<{t->Ss
49320 zD9j$%gM6-mh_}M^a6R(B0d7EYe14t=ZibsVBOHJOD9kMo_knJM+mL)1ZbvR|$B6K^
49323 zhx}iHmr$605C0y8e;NJ|eG8x7r@`|H(7O-G`iMsml?r5;AEUP>-~{sX1^hx{(IWg3
49324 z;&Sp7K1F!G!t?jx6r4g~K7-FV4KMN{a`pT)PR&R0cn(P{AB(P2_?I{luO36!ukqhP
49326 zniksEfa@6ewR#+W0)K+s2k=2yPtm-f6R0Ces{@i&2OuX<LvjK&PfnobgW4exq#XiC
49330 z_kUp9C$}r`-D;&x0YcgnAfzn;g4!cwuBFlz5ktOb4r(9l1qGlA*_8FjDvTmMeHq+A
49331 z9MS}>NVgRso#REiU?-}nr{Pt24^HtG#P_rL626Y_;0F+EKEj{n$N2{;h<JOtDpyse
49336 zlhJC-G8P$Yj9%kL<4)rt<7wknrL_r^lwB(2vMei>WPFh9JCaNlB+HXzYKBZ;$TUH+
49337 zLP@4&_!EO<MUu?_X9+3|GG>c{d5MDAqF`R4V74gVSfXGKl?e=)CP-E&$+QfAVvwvz
49340 zBrB9;T82N73)Y-6-ax-hnSxiP;4M?|sua9s3SN~Gewl(dR3<QFnjl%BB-1kdi9xa=
49343 z)+pa7S1^al1cpo#BrB9;T82L{NLD1t{C|P|!3qVlR>54MVAd*_D-_IH<r@_W=1`fy
49345 z#2{IbB=i3T`d9;YLS)zpkzo@=hOQ5l2@IJgNEWKYL;Z<CvQXWuS1_+oFzXe}D-_In
49346 z1@j68vtIee3I%hhOkl_~L9#+gre*jOgJeaL%>QRlFjp#=4GQK;1+ziHT&Z9-DBq}5
49349 zD416&m?IR-D;3NU$~RUjm_ua(L#7Fm6-qKK!=D%=E0SdXzu=aXjM=PU4sd6)f;qsQ
49350 z&B`|d+&NSxFl3q_Stxf7^(O|&ih{oDZ+YUMJ!rH|9#g`<d{PhOyG5jg$#-va^0*uR
49353 zD$=hake*Xs>RrJ-Dgx<65lC-|K>A4p(jOuqG)PW*MFi3-B9NXC0i)vtgzqKf;$9v|
49354 zdU@1j*Fnsg3P}$MPkKlI=^Nom--w3vjR>S~L?C@5JlU%ekiHR~^nM6<Z&MV9SHY|3
49355 zx(PHP+&<t#SaI)%n)H6CN$-amd;~s1PjMfJn)H6CNxz3$>gD|(;D4YnaqkC?;YoCT
49357 z!#gJ;7x!ywU@<I4ZV4<wF7Dmbz%p2dT->{<fy?1?<P-O9YT!z^3c0vnQ-C$lj$8+9
49359 z_r?gMH-?8_!e<<h@+qFvpt6*Raw~;TL+(o`=QR9W{$+HX$)i%j<$`KdItIWYa0RMh
49361 zwb9yaZLM~j_Oy0f`&bvF%hkDbdvwQi7j+NCC^1j05FO$=al3d-yedA?$LS07Ui}`9
49362 zBU+LDCu=@D`-Vq9HTr4LPltYb^fOA_1<z_xp`U<$TJ#gq&wzeL^vmV?xMA)fcZr(-
49363 zsh|>-lFKj-*2CkxiFffE_+9)-{+7zDT8QF#O!ZWqk7DUk52+8UuM47(C-e%ZG=e5U
49364 zvp`d=S+6-l#q^r?q0XYq($(v_bc4FRy5qWQx+h|sm?PT75%Dy~DY1Yg7XIESUXkJ}
49366 zbhVVu9MN|4JG!vEqVq>X-qkU4S{L#~E%jB6l)D_^g{=4W%#y+?AvzL{{<&pNABIF^
49367 zpwUTXjUx=|d0`o!TYjHccJ(Ao<JZ;-BNL(FIVkl~jo^qK`|qo5fwHX$De-}F?JsA3
49368 zl%Zu=L#%3OiKol4hJ+Ma-owkThHwaWX=jyN4fzVYth39ihFJfvFX_)Kry7Fb>&yA`
49373 zi4cMhl5`D~@j*TVi1{GDv?lTUX2rt)T>aeV!MP_e<0$)3Ki5ZS-U?rv1_8h7U+R}G
49374 z1H#wptzh5kU*g-pDqUuLc+Q|8&++GMTs?Of;Ptc|G?5j{1E?)=kB{Sv_#XbS3j0d{
49375 z3E*4cJ>Vkea14Rp1V_OC!ZTLL4h)yUzd|#fBZArqi^xc+1BLNh@b}<Jcm_U1-!K3H
49378 z#U~ZDn`Xn=oR-XO;mI5pUYfUpXQ1$8j)|Jg3Q>{SAO5)>{`ne^%+Y{kwgtvLgS2=7
49380 z1h5UF);vBjoXlXs=O+)tVRZew@OP!QAK>SpwB$*v5ATaT4_$wYU%>IC7sSfhm6^-I
49382 z{3m^le=Ebk^=temGyErijei@%zm3DIR-(yXt+HQ^^K$-mL44S~e{`>n%we{2SzI;g
49385 zjN+*iL3g=Rw}S5GP5njCofV&CsN6-7b1RkAc;sA25EL@xI#4aB;8t*z((X$m+$Y>N
49386 z?jvp;w-VXkRVWAELw;(wPHr_<%XOhNtm8gF>GmPnp{apuMD?hNb8t?sg>!Qru9f?g
49387 zYeqR*#Qg@hm0QED<<@iG<u-Afxh>o<_c`a{@cP{aWTz3Mv;rwIX!nqrC?98$b%c0T
49388 zA>O%8-cKZ*dy%Z{naj=NUg73*uX5i);k?deb8m3p<`#0_!RwZ|Qm&Wl<M0aEer|vp
49391 z(D3dyYQoP*e=di)xLOJUx6cLg1h*d5C`1E#swY0RgiVB^m1Cp-rKu1@+(=X=jA1bi
49392 z{U?yNq?+L3g5s~1(!?JtEkS2|4yKvZy-E5WPIp7lbs+Uc3Xw^QnU=^+{{4W+J9-Ia
49395 z{{H;Xkrcw%%_wYt$<jTyti&tt8AIxW-#-r5Uz)Tb^~mo(P-bUJZ~6ayy-tv8u7=bH
49396 ze?61Gfx}cGAHm<6$p}$LBqH%?B(+aX;w+L9t*1)Jul_HF%vVfBRu-?SZa`XoBe$K~
49397 zPponb(M0L!w@tc-(*5V;K2~}DiF7YNA0hWMl;>Ned-?e=xsO+#4@&p)^H0hBOy&6&
49399 zdK-m$fI|HVg?clEdgvRW-b$e!rce)3s6VAp4^XH-p-^w8P!Cb4`zh30zY*#|3iYQH
49400 z>Ma!NZ4~Ow6zU-gbw7oAD}{O!g?ca?wQ3>49g2Djg?bx>dVoUx35B|!LcNtjy@^6S
49404 z9E#0tl&Virs8Jvh?*dGPN|$-MX5vuRqfmCEP>yk@xr^L5cZYjKg+iA}oQ}olEjxM(
49405 z@B6ib+s7T|PEc>rWoDCfdc%Cwnk+&!qz<)rdPw~MO6rG(u!%g2Rh|JQG<-cHNIoM-
49406 z9v>u+50cLelFPZH>~q1*1$P21AMJ#grFR;(8;_VSMBI-QEQ!;yqspTbUf3UVDi*g&
49408 z))a(2kvx-Itcm}dTCB-j8u5vH9q`Xa+7&jbA0nB!R)i)6{hz8}k3lk<)MA~3LP$d>
49410 zdc#Iew!r<GI`ULQdQLd<RFraJ7TG@~o%q+HG!AaDrjWR%qwnHxisXw%5-JYI`YW|q
49411 zXA`8UBn4mmB`sEe43kN!rjRm(_kv0zsfN?-c`a6JNQ*Uzv{;kSFAY7JLsH$!%_V)F
49416 zdu!~iOK;tI>uJ6vKP^8uzdYZOzb=1!{=xjy`PcFvEK)6sTQqM`!J_I#-bMY3b}u@*
49418 zEFNF{uuv$BFPy(dTUfXzqp+sXS2$3(r|{UC9fcRxoG84t=4RoOw@q)`-p+ozw72-}
49419 zhF;Ixy}cuE55Ilj?UTLN-@dYzd;8v6TM=g|DvDm~EXr8BttfBp(V|LAWs%F$&}ZsP
49420 zEZWeQU$oQWD>`gh-?!Vct?zW-m7=qKPl~Qvc7HV2a`2-v%h*R9AN3bKvYdNIYq|Q-
49421 zEz9k7g5}Y=^l99>l4+)O-f8jE(x)w$Rxqu6T3y^xV4HDn#?2W~#7g4&7elNtK4I}i
49422 z&VRPvW^QNElXpz-*xt#0r}UkMcY5C$e&@hDC*Qg9&b?x;IJ!8aIIp;}*j2otcxUn9
49424 zx}!?2b}uNozZ5QwSvq%Ve)qnmRo&;7db;l~-MDnu(j!aHExplGx%6>QZ>iX`r!=uN
49425 ztF*Z1ZfV^bLuuEVd8I>Z%1igH=_(ytv#a#dnp35B*4!?A8Y%Y1^=2%y^p-A5>-8<m
49427 zmmQ4k@9T@)-nTb$U*FltBYpQGPkm&Hy!g@l$m@~!BA-|UOO(YL>x;9;^~ddrJ05F}
49428 z-4~k{yD%;@t~mC7oGLD!8(Fr0*@<PBm)%`9RTfp2Ube8TqRd&gzHCR?p|Ue&<7E%u
49429 z72b`1cmBJD@7BEQdw1a7J?|cS_rklk-hI-sv)oi}E6*-3EpI6AEg$YoFF(*(Qhu`h
49430 zO8LFz-16wovE><^H<ssh!R3|9UCTEt-?{v7muvaiuHog^yN)e?RH3a%=$fj??6y`E
49432 zB6UsNikvmMYf2+-t?@-XT(e`%=!&v67gyLLrg~LoLvNZnuD7_iW<_7``rZ+9TJLdl
49434 zj@b1v6)~=ujWN5qtt&RH*tz2HinA-OuXt3ctxTxQtSqXmt?Z~AtlV39yz*k@?aE2t
49435 ziIwJ+sVj3<maVj}>{~g~Uc7R&-Lvx4%Bw5ySHY^7_Ul!1JGiR+4qH`Km8WWB)vl@|
49437 z>?-T3Uv;Oef7R2jgVmO<OI^3R9(N1fG1Y0^In}w{wcXzC4c*&KqupcO7plv<A67eh
49438 zqIyzI$9sxQXM0>d>#EoF?CUvZy3#Xly45pfdbq~ACUZ@}n#wf})6|-w2*a8q5pip-
49439 zuDQErG9s-vAtI|cFCxFUA)>5zAfmSSP=u@Zazt;$K*WxS{SikaPRD4u!RnFf(dtvx
49440 zSF7*82j7c%Z?5<5d-?BGz2|vv<9oZ_JM!MSw%+${wC#ECagA7$Sd&##>@(EV`R3Jh
49443 zt@B>z)7t*7#M<3m`CS!V_O2e|P}lCR!?j1du5{h$deSW#cXiJ-j&_%I*LQbx_jm6!
49444 z9`8PBJllQCc%?_^iRnr2$>}LE-s<rhANFiFPW6oST<E!BGOU57xHYM!v^7PhtTirE
49445 z{+eM^*_vafT9eDvYZ@@^Fzx3)sXbqNvv%Tr!~53v7qpJPU($N<{rdNN-rx5A{`XIK
49452 z9BIA$;b`l`ho`)8A71t5et6$o*8sg68)Cep4RgI0y*Is&8uHts8>-r}8$4|_ZJxIE
49454 zbu84Echm=`pT4f+vECC%KYd^42K`{?0sT&Y`gOssDE)!11^Q!M)%r7C>$--!_USKo
49455 zozvg!y03rGZPq_U=_jJ}i$Up^YREL?8A=T`1}8Vz@VHTIOl-_@7dIBWJ&kqlk;bmZ
49456 zp~ijgn~h^0RpTX3TH_s0apO~u$8PbA*wZ}6?YW-o_VQM))zWISJ6a3v>sp=m?XBBd
49458 zM_Yf}&bEVXC)+Ny-D-R66MQkgbYG6I#8>O{`ZoBs`wsZVd>4E-d=J}UdsKU>nB88~
49459 zUfu3$U)Mg|zOVh5SlB);R<uubm^-W;nH>dUeTPHzb_|K@I*xRl>A2c)w_{Qq>P!%K
49462 zCmzwUz%$oT;wkggdpbP*o}He9o|BGx&n-t!tI!(Ln%<hzTGCqE>UC^u-QIejb*%M5
49463 z>y6fjUg(YTrg|56i@eodmv^0a*t^er%zMr|?!E7wYBRT4+cMh<+A7-|ZM|(nZF|~|
49466 zYbG&XOcxh$gU)k~{mzGu6D={0%Pl#MyDhaX-j)rHsg{GyQ7xC6(_0?91XqkJ-Ide4
49467 z&{f-9;o9KZ?mFNab6s%Va6N2xx}%!cyBD~N+|_QEd!2jOy{~zP`<#2+ecwIhF?+0@
49468 zOizKQ(&O;-dWJlEJV!idJXbw;J(I15)`Zr1t$D5GtqrYRtplyQS`W3JYQ5ZgyLG~=
49469 z^~QNKyt&>|Z=KiY-RRxn9rd2@*Hx|17TuQCmfcqDudCXqw*6Xb+xfQZ{<^B2=gZRO
49470 z`l__WzCPbJe_hp9`R-}$?Ivx9zpiRGwD)L-+jndCw4c@<YQLjB(IINjcg)pZ)85fO
49472 z;%Mn@8EV<na-`)<%T;i+WzuDECAj9f@?7Pv23MDBz_rVD$aTtf*>&4B;nuq2+!^j%
49473 zcd5J1?Q?H*?{JU0Pq;6-Z@M3ORGw&0nkU;+?5Xj1JnKCpp8cNVp7WmTo(KNA+M3l`
49474 z*jm-<Z0!rwRpEZ?Q?DsdSA|LMphoLG>^<$TtD5Mxc#W-Xp=N%du4)#xUDA}aJ=RqF
49477 zV-F~BoCDR4`;Mt*bF;NMv$>$T5_p??n}?eBG#_a`(|oo0Zu6wm;7oANbLKhAoej<|
49480 z-&5hSdwM*Bp55wsp3~}F&mGT`R<Sj{b*{R&wM<>r+M%|$?rc5Sdb0IW>n(MMS5R;8
49481 zrmKg&CEi-ESG~u(U46(qras}lp+4UR)z{im)py#8)Q<%yn1uu(L&#?4<Ys10_A~RW
49483 zR?}mL;D~XgJ8~Q)j#`J;vB9z3alkR=xZt?qc-Rb^qncBj7c>_&S2w$w*EJ6}?`uBR
49485 zTW+^ZxU{Y~SB5LsRqCp9`CJ?Movu;W3D-r}P1hs0${o!gaA)(!+%;~Gd%b(ay`Mkh
49487 zHLa&rPF0VpU$tGePj!SFY|I03jSg7dINZ3e@mS-z#_`7cjZ@HNPqi<w7m;*ZXCJoj
49488 zvmdjcvya>F+ozh$P1dH&rh=x*CP!0m(@@i%rXx*fnyxn8ZJKl#90`tjjyy-XqruVT
49489 z7;x-z9CDm;Tz1@cOf+ko<C-&?bDK+>>zaMd8=H4Dk2arZzSw-T`H@rQjCQ6uvz^7x
49490 z8mGs(-Z|pj?>z22@4W7O(89G?T5K&@Erl&rEl#+uWn0VMmZL3aTduX-Yk3NXT#0a(
49491 zE8kV&vb%a*gK*S!7#??BfoEM$+@d?)J=eVuUUApMTkd}N(0$N-(tQa|xgYZePYfUD
49492 z$>GyHwS1Om1E23Xz?bp0yo>MU2lyS#5{gPvg9XGjWP^-`x&~jv#)cgYqYWn-E`r>K
49493 ziAHT>Tw_LKZewX<U8ApYW8;p-(Z&;v7aMOjKC-Lq(e^ZZw!PS1WB1tC+ehsC?Z@rs
49495 z4m(aet~l;Eo-~Wi@y&Ca7dDqQ*Ee@G_c!lsKG=M+`BL+(=EqLK8RJZM=73UXt<&q=
49496 z;N0#!;2d*a05#5sz}XVjlG?JMrKqJE^t7x)R%9R8-g2&Gyybq&l*<hExiY~KS0y;*
49497 z>U9md_JE77GvK=GF1Y75fG6&GP;i&SD0dgM!g(+k7Q-rNC$rr{)5|Z3r6h@zA3*v&
49498 z0g>RlG%^ksxC?$Zhm73??&3r4f_<ik_)HJ+nI7WvMd@s2`EEwYU3|!0@OyK~*kj->
49499 zHso#wbq9m);zORrhdc}Y!c6H|V6?FkoDJ%!{WbmxyM;5FL~_bD-i`kIKm*Jm9W;Vw
49500 z-~=te1>C?(X6(0v4$uj@KsQ(edcntF0~iEb!KYvtjDXL<cJM#JUT^^K2nYTI90kX~
49502 zW>lV%p$(>xdA(_H4tyDvuUAkBdj~FoOW`uO9Ik-X@I6=qSHoKP0sIg)!e-b4-LMsU
49503 zVLR-EAHj8a{yN+MH^I$t0B(gN@N@V(@b}<;`1^1a{vkXF{}>*H--pNXzH{)e;aT{%
49505 z{cGy|E9(8L>F4q<^Yi#u`1$;+d?x=IpT&QRf1S_f-%#P5mM@ZB`~VPuz$KxS*Kk&#
49506 z1zL2CS2-l1oG^1XveqF9*uZRQ&VLGc3A}_Pji8ZBCTsDN$&RKrvLZhj=NY>80xxp$
49510 zU@}>iVIynrtz_-J6_v8TLr*V(ODN<Yf*&G3{{a30`MCzJAw2&G{t;c{9Z-|WD*Yr>
49511 z7VjYcc&)w-mr3OQ9Q+)){|5dIx&IFS9X)*v9;49y1N;YP#buS7P4+vT2_s+xmr7QB
49512 z*l_7ZF5dMth3tNqOxA&<kaZw7vIA-gD${dN2<b4LOTwia`FRDtf}Y~tP-l=`0IXz9
49513 zM-tgNF^R0{u#z<$bI6*G6tbGbO4e~$$zA}-WCh1;vd8HhxC*X9sPK*e$*7*xBL8@I
49514 z)7h{d)+3yFk5e1j<1`i3oJRE2jx={H+3D0ub~;T(wW$Tk-O!CBc-PYyvg@f0)h{m!
49516 zO4hxkz%6hP$+yC-$j=Z&<qCcRKS6l#s*_n{w}NC;dp}1$@t&wDa4-B_lqUP&J`~g6
49523 z4T62BZbxwkkR+e@wILor`^9oRB8)99El)+<VkYI^$i;(spb*q@nOref&-HR6+(GUP
49524 zcb$7o-oay@^gI4<r#|P~R_3=;p5s52v^~Q8TgjMvxPR+&!oj2MY<V)_87z4`<=?-;
49526 z$&+Q5ms?gG$4^({^H-OWHGv$lmOQbRDq=0w#7+uieV~8W7ag*ec1}dr(#;u=ZCuMm
49527 zVh)4sOg|Vv)&TGHVnx<$JJRuZkCzN&wf1r^5qmWc*{kE+E65_9;$9~<XCbjU-yt?9
49528 zkL>#L7O_0}#PTdcmgf?;nAn`RiOnfOHs>F?cfgO3wOK-}%~E1*N|CksDYuMRn|H~c
49530 z7U}**?l)i)(&Af*79U3XyPf-tXzLwFTYs1PEu@KuxIIM69>DyF`van1{}AcdgWN%~
49531 zpY)#+4SF1D&|}=65v_TG><{x7@B-45XNaaeOLXMlART#?J4f{51*8}MmHPqw3DS1|
49533 z!g-%4F(thBd)j{iU&6ZuCH@MmX)`KeY2S!D;eD3V7z_%R$h2R=qwwzW>Ho!S3YYA(
49534 zUzt<=2>b{kc^<RE>s8YweuejzPybJ{EL<O6{FS*D-g7=3z69rTY2S!<;T5%M4EBXr
49535 z)TT)s46mr2D={&=mNq?vkKvu?UzAu`6{?wO3~q+^pHGK%uns-_COoYPI=ICDt!%9y
49537 zZ=&#@$MJpw?;^~<D$@fzYT+~Zo|;#4Y0qVScrA8X2=`0m6S>4+!T{6wG~_3o2jbP-
49539 zLbw+46}*#Q&+p(5@n`sP{-H`x#jED43RN{KpK3t0M|DhfL3K;@L~T;r)Y<A%b%VNB
49543 zW7SpF&g#DEZPk0Lk1G9(AgF(FnAz+2n@YcUu-{Laz2)1LagSiXpD;&5MkHx`h~FVa
49545 zXxs)BDGZB65*4>?%yEa$m9e7myr4&rMkMJB2HqqpZo`r^o`E-sikpl#G;UiIDGZB+
49547 zOvP=hA`Q=rWGZf36lpl#WGZe0ij;*nG;W&}DGZB+jf&e=MH-IRM#XJVk%s4mjf&fV
49549 z#%+@#g<-KsrQ)_lk%r?<rQ$ZANW=3Ym5N)xA`QozO2uuHB4yzXjfEfYY$_H5iZmSA
49550 zY$_I;6=`^?&!%FrNs)#ln@!=Bk%i**BTJ+3ZdRn>7}6-b{faa^CDSNmTO?^b6GJF6
49553 z1g*IwU7K1`f|;$>j#+KVn0B<}hW6A_sJ*JauY*gAbTLa^y17e-b@@w=>8h5F>pV-R
49554 zbQ?>px?QCOx+A5I(%#Y`-MP{ux*Mfeb&pFYml>8NEStA1PZXCmEbCe}ux!_|L(5Jr
49556 zn0$7tB4u$@7U!e+tc;h%`Di{HV6H5V%Hn)9pB-ZI+0U4Kc2JSBI4X<t(R^0M%i?@A
49560 zi}TSOHNZw$ypzTGXpY*?<fvPjY*gl*EY3%>(E#scF-#WcquJ;tCL0}OvQe3LvN#{j
49561 zMgzQ)#V}c%kLI0Qn7mVFm@Ljm^G-Iyl({5}^U(}b=8`PVM{`M;HL_+B(_E6x8vhUR
49563 zd;TqL-y%UfvM60Ux~N2ZYLQoab<y@k2NsQK?=QNcg9T6*Q;=G)prELrx&ZOV0>mE+
49564 zjuo6M7%#YAFtymc*t$4#alzus#g4_ji-#8PS$t&i874p6rbt<wkHw*Aekk{0vN#mY
49566 zWN|(ghobr6Rz=F{!(?$NnjgxXkHw*AekkK*aVVM}2ACj=^RYM-%?}3^DXR~Y#i3|^
49567 zD04m*hobqRjF-isXnq)Af-KI*;!rd{+@eTXeV8l`Me{?M^RYM-%@1X~EDlBU!vGUx
49568 zaXuD@qWR%~B4zbqvN#mY4`t5B;!rd{l<~4S6wL$&6e)|{u{adX1m)gJ7Kfslpv>-A
49571 z(0@C#TA&K$RtrYdR~8%(^uN7s6DnUX6kM-61HEvsUlSg^{#2vQPW1Q0W!p8i*@K#n
49572 z?8BPD>?@kR*-tdb--y>-d}E>J_8aw@$v67n*!jjmt@({h+SE55Yjbj9a?*2ha!PV)
49573 zwPiUQwDz0>Ib%5&a&F{2d=tJIrR{rjfp+B0>Nj0)u6uL%&3$hkd-L3z<8R)7b1K)I
49575 zW>#AjDXTY)#Xe|eC9@?K`=FVXjF-heXl51QP%O5@VjncK8dRjL-ZU2bpqZ7-mRRhA
49578 z5sLw_*ayv)`V}dwFO0=LXkH{^V6hLH7xgPr7T00151JRr{aY;dLGvOR1B-poyl9gm
49581 zSIUILuXG4!U)d>Kf90g`=#^U<?R-I#Fh6~M&ioQh=6tWFX#RFh?fkL%7v|rX|L|3)
49584 zvk#Uvr<sb(p;*?OW-0+r!eSpRYfdwjK}E{y*I`+6nyJX_gJsQWrXu5IS#z4H1ULzc
49586 zeXy)K%~WK(ENf14k^x1^;u$P!PID5u2Zv?NX-*>Z43;&g*++n9uowl)n$zr~Uy-tU
49587 zWmwjn<{2^umNln&M!zCuaR-()r+J3l)55amG|!MRu&g=FGd3ww7I$D-bDB}e+<|4y
49588 zX-2{34l+w%S#z2@$Si?n&1se(^8uDMr&$7<56G6EWzA{JFH2cFiqMw-*Rb)arcf)N
49589 zx?2^WdOFZ2F?+6R&+IbQvDqDgo{8DF)Y)l*x->1_-#d}!RUb&(u0EMIroNJPLw#=!
49590 z6u3F5LiC&>A!Ck9$eS}fXWyJ-Lgk!s!8K<}*pO~b&rB~!uS|CcJJW}R!|6xT&!k^X
49592 zWQ=B<$heqsGvm=qs+Xc)N_#2$rQ(-rUh=%O{-u$Z_P=!erSmUcXWIC!ij-xyS$2@N
49594 zmt_ZO8y~RdEW6FJgS3qwP^7FL29_P9ZM<x^S$2@N@iJbP9i*-KfFfmCXqFwMt-0Kn
49595 zz_Nq1HJ2?k%MQ|ZJ7A$%wwPrHX}jI8NLl>@EIUYBXc+^`4$>C7Uy-t`F3S$m7Fure
49598 zB9$-E<!}2YqSkNXxawBol<G;6Rc%TtP}`Cm>g=Q;b!pNObwkqCq`OIz>RxMtdf1w$
49601 zR8wkV>ipFF)QVJlYESB5>h9FTsi#w~Fzw)=B4yb&maU-epxl0C*$UbY23B&hY#Yl~
49603 zS+;_<c<eP>?A2KTE5@={EL%a_wthv*YJIY71#QLHYpVkGie;Htwt}`|n-nRlMai-i
49604 zv=w8oj0)H*mStku3ff-DZAX@^pzRfV1ryscu~#L@?Ln5Upe+;I2C-KJ$!$EAt)Q(9
49605 zdo>PwMk0G947)AHuoW-3Lajv%g!M70ftFLuFuWUc3{J(22ii}u1^oJ02frhB$lr#F
49610 z|15n<+ls)dUzYx7=~LQPY*M7*HHEec0sYU?^elZ!TLtz$tbz5tEKSeSr?mcOuY3q-
49611 zdX`RS=~G(&v-g5!ui0g<W?-*d2<UW{_Gal*TGMY*q^y<+OP|u3p1tZIpwn5}o25@_
49612 zoz7kv%U(0UULC;J-s~Cw?6s=wS^R80&7N(~UMI@d$n2T!?Ab}|S>|j`PwCUhNwC|J
49613 z5a8dIA!xN6feS2G1HDnx^5BVS4e;``0Y4L;c9~C~Ho-59isLJya(QP|9lt(mBfleR
49615 z`&5O|dsQ{jXQQu0--~|wg6W0C7v`&cFI2o>f1&4v!54PFaQKDOFI;)y&I?as#F+S)
49617 z#=*F#xYW1>aYb>}ajv*^al>)@;*Q0giyM!-A2&6_Ji|I8b4J08N~S&?P^2s!$<jo$
49619 zmL{TgBzx{|KpV339!nF^+K|0oi#_v}J;#=<_t^7h*(<2nb79#Ujy-3Uy?TkQ%h>Zp
49620 z*)tW`b2ZtFF-Q{`i-FhZ0sY32Kwp4K1r4S&Xf+l4djw1)u*Y;9ZZlnn`y)7bBEkkQ
49621 zM-;-l5l%Q2v5k+4I2v&_;u@bG@swX^PUI`h`Q{3<-P~gy<elcj{Ce{h^Bwb(NHH=#
49622 za&F{8en(_Ie<-p)a%beh$di$mB5y@L=FeDSEa{dUONph{;<aqBY_}Y+j9D&NZde{p
49623 zgVUm>rA}Kgt!P^HG}p9s(}t(*n|5s4xoP9m?oXSFGDlgXGNTHjDx(}xy-`C^d!mj+
49624 zor$^{bvJ5qx?y_4^m)_srk77|nBFygVEV4<ho+yJetG)s=@Ze~=(y;N=-lYi=(=cM
49625 z^v38N(WB8PqAxNv(Pl-;(k`r;O=}|d`UduVJNC@FfOcW&5mwEnb<QS5%3@%wnoa8*
49626 z_Pn@&c46reR?Vih3wsp-dsZ8J{u*14u;-+)=k>GanXxqndp;O@PCZ*Uu;*g2M=ja&
49628 z?}GdF!|;UunEsr8Tz_9b1uq+{@UEf2P-$=&dJRK{J%%H2%5asBGE5o`#suR$W1g|x
49629 z*ubY72aLOnhm5C;myNfL6DF-G&Xi%wHI<s`Og_^_(+<<9>4fQ`>89yXgeoFBA}u02
49630 zqBx=^!V|GRVkBaJ#PNvp5!WLgm^rh>Y%^z>3(Zw#r@7C(&Aiuq)O^-_&3w=NG}08A
49635 zqf6K2=t^|8IxpO&+pasH8`E9T-OxQ0p%^8miVMUdv08MA>%?JkpLk3>CytBv#VNg6
49636 zZ`Eh&3-pzGhrU-oq~D`IqCca*s=uqBG#CsChIxiOL%E^B&}A4f>@plOoHATC+%`-Y
49640 z?5ZBsplY}3FgU8Z0?w<Rs6}<Wdain*x=dXUZmRpig!-WRr23Njmin<E2r<wg<On4~
49641 zt>6_l2-}4N!kBPDxFI~$Kuwe;RkJ`-q^Z`pH0w0OnthsMnsb_Q&3(<3)~vN^GqnZU
49642 zO07fNs~ytr(H_yB(O%Ww)lTXRx&+-kU7oI7*P!dt4d{014(U$mF6(aVCPb|mCuWGb
49648 z68-vAW7qU(1~t1ihXeXl8?T+KT^OoQwU@NFw2wpescyqJ)u)_%?nyw8vC2$8C!dBw
49651 zhGDjbVYY^0wuWK0hG9+)!<-z3IXMh-av0|1FwDten3KaWCx>B94#S)rhS?T|*%pS`
49652 z7KYgthS?T|*%pS`7KYgthS?T|*%pR5B@A;)80M5P%qd}*Q^GK(gkeqz!<-U^IVB8p
49653 zN*LzUFwCi8m{Y?rr-orp4a1xohB-A1b7~mo)G*AcVVGx!VV)g^d3G4)*<qMxhhd%_
49654 zhIw`v=GkGGXNO^)9fmnA40Bo-=Cm-(X<?Yt!Z4?WVNMIfoEC;TEevy780I-)nCFCH
49655 zo)d<7P8jAnVVLLqf9%}}xExiv=>1x2RS$b7Bw-3u2!j|UKp-LW1Ox~(GKm~SR74IU
49656 z<{)Z5MMOo6o+EM)If#h4D9Cl-APxu6ixCkJ5Ne(a5m6Bl0wRVP?pyz^y|Z`kPSERj
49657 z_@3{%O+R^8Rdsc(RaI-P`mOF=)R;2wI;PCKjw$o5W6Heim@-cvQ|9So$~=8cnWv8_
49658 z^Yk%go<63`)5nx~`j|3LA5-S(W6HeSm@@A+rp&vIDf4b)%Dmf{GVeB~%)5;#^KN6x
49660 ztV!~|WuGknE|WEGvX)r~TZ7hN))5llB(Fj1XzMtM_sL7~Bnw-~i|1LiEu#k1fJ}Fu
49662 z*=m7IFH(ynE>-(VT&9*uJU|^N@gQ}W#3R%Z5|2{HN<3bjAn`=?4vD9z(<D|;NijSn
49663 z#i+B?`(;V>tQ5nuEi_L|G3wLmGqSvTZi-Q#Q=gOR>gg$lr>7Y8C3S@?xl&yzv3hQW
49664 zQLEKznXaCvV${{@YMK6qx>jQK3=5;arEZYv>Io}`XH{sPvtrcG)X!vj^-Kz*ey)Bl
49667 z>FU`nMm?$?mFenv7Dhd;9+&CrIW9&$sh*VS>Zuk+J*A$K>FSv-My*rpWcqpailwyD
49671 ztuNMJkR{c#A&mZ_{-R7*&zmv&GA(t3Cqx(-FMds?t7p#`p8lYD`h(Hm)!&un)iWTB
49672 zj3|E~)78^xjJ`?VB-7P1AdLQz{*g@IqHmK}J)g$td$iO6o>F6Y?t|gE51Qvb7#(P-
49673 z2|TgJ=v1dNT|M`~@Z1`sAJz}clIrO-Mn9_Mobnt8qo2^v%5?Q48^g03G|z4@Mg~ik
49674 z;;A;qw2icDp44E>I3s-*Pq;BWD?wM!xsmDW$q2^WZ|=96=2zxdR>M4C9<W+GE5S%_
49676 z`OZ7t+h`7da^&Y)BR<#bQ^WmYV?y08o+1CPmvw%$!G7`0@*3#(j{V-T-#hku$G@d_
49679 zo@yt0s-5YncA=-*m7Z!kJ=F|)s+rPLoo>ySKI&uEKGGvyWE~?t&lT3m(&wzU-Xs0Y
49680 z)z+ExFlR{*bF+1}^e3M6DQWw$b%nI_-&(7sEw8h_O&h$0Hh3Ft@DAGG-O~DITEC=y
49682 zp47BVeOzkPOX@TF6*EtLhiAb3j%UC<!ZYChC`a(-{`I4O{pepm`qz)Y`}(o5E5|Na
49683 zw$rbV?AwR>{c$7u{gLl)u;(8<+gfOCWA*q?|IVCZ9<)!k?{A#g$ePDDqt-DkuYF|u
49684 z-ho30?vky&UwXJ@lGpz78Yg-`z#4BID6dVd<?@<f9VD-b(gz+avOY{+n_7p<YcuH&
49685 zkFd6;N8Cbs#G|dPtYhT0xpl0(wv-<7IBRm<M|OJ0PQSSRNvWns|JUjHI=$V<zG`eQ
49687 zeM6^L==2Bl1U*`Or>&1{<(-z@Y0aH>+-bp`w!86GJGQ-cT56|_j%=NscG+o>owhi(
49688 z6?WQRr{#6pT&JCFsD*Xf*2q@XX-}P&G`0<OT2H6l{GW-dDRps*wY#-cYT4=19#lOF
49690 z=03A$?lU)%`>d|qXN}2yR*&3g^~`-%&)jEiB=^0$a^HJQ?tAyheea&R@7*)^y*HBk
49691 z?5^BrkI8*@kKAYX%zbvx+-Gkj_c>j;&l!{ZoF2K)>6!bSp1IH2NbYmHa-TaU_qjcC
49694 zNA8Py=Dw(B?u#~(`{J(L7mvw(agW>=_so59&)gSpB=;p<xi1-$`;s2HFX@^4lAgIQ
49695 z*+}k7yK-MTCikU1a$njr_oY2^Un<LnzDL+a#P{ZnzN$}EBV&t^acjiLc%0R$RjMRE
49697 z%^%k_f98mJIilNLFk)T~%yvKSdjILJ`R7N^Pnpy;Ke=muv#$9GUGsxo^Ubb#-If2#
49699 zv-Owd-x__pep20O?=Neu5CgwKPtzysGepLd^f&asjhL_ICh0@f2kbrU#ggk>HCb(^
49703 z^&9mr`tAC?`Y;(oT&q7P+t{AH9NNcf|Ej(Fo+@OIE+5*P-up6K3MDQ7b=5gj+l@Yh
49706 z)m`&fbj@GcHGg^6{Ky`*+4XsufBn}-&+q!}(erzJfAsv!ACI1&bKB_o1^0}eUlNU;
49707 z-|vCZ^9MdMdj627M$aGd;^_T3rui!KyL8Pj`#a|K*!dH096kT8>7(c0yL$Be2R9o%
49710 zY+vS|dwKNy3tL#N_WJdenKkNtW#2ezduqZXqw-UqyJ+<MEtib`{6i0n{`|w|j9&k*
49712 zX-%@GSw~vuS~pmas_Akqx<yaWr|H|}3V4aF?GM{e%NjddN9lXbTyw2G#lF0;t#yI5
49716 z=yg7??$WdL*Ui@EQhRd!`F*Vmtq0^9eyQ>KywB%-KJWASDtbh}-pctRmy>j0j+E^V
49718 zZG~(rWLs4Xh+$`o*6-AjYK@+)Z;*B}a*M}UH<*YmMr<)+ixFFl*kZ&MBeqz@kQmk5
49719 zz0g{xPE+^m6LitF-4jgAc4M|1v)!2O#%wocyD{61*=`jhVq9;1hIP4WtMk<J`rOgm
49723 z1-VwSAUZ^s=n;KlKn#fyactgQIa}wNlDtduF3Gzj?~=Sr@-E4{iY3t@x<rrY69ZyM
49726 zu79Up{}!~dQp_AvikV%dnAxKgGkca|<_1bJ^HobRYfLF-b(LaPk5bI)S&CU3D8;N-
49727 zEydnrO0joWDfaGBioJW5V($%<V((Wi#q2SqnB7&1**!`zyJsn8Z=e*jU$qo-#*|`C
49728 zS1IQ7D8-zfrI@pUQp|bPQp_Dwin(2-nA@Wib9<Iz?gmOR_f<<VZ%irXb(LaXk5bI*
49732 zmSX7!N>TmxBqkIsPLZ-G9Plf-`fJg^GKs$;J|J<!>+R2a`?KEu8(HrF);oap4%o<g
49734 zhi_!PV_5GP);ne+>%EEf-o$!u+Q@pxvfi<*ckD*iJC5~^W4+@xvfk0GcQorAy^-~f
49736 zhqTartV66L?P*r^H+d6fOB;Jt-<4Iri*Ee4QC*dr-)DBL%B|lflK+D&-NI_A<?55_
49739 z-Lt6G?fUhyWSKQp{Xy-c_EoQ_pR1SEi^i7m+qd-t>WAtjZRs!RpXodGU(~I#^h5ec
49740 z{W=*7y+iG-KdBzp|5INmTbf$`);07?*U&F{f7`EJTKbYHdUL&n`ixqox6xbcE!C&h
49741 zf2#k|ll4~mEBYS&3;ncOYZj}|>Z9~-dUyR!eWpHN#%15sCrIv7#{AOuxBkvn-Fv*L
49742 z`mGvJ?@-IMQCH{%dbL`uuGKTuBQjEZlioysM}J=O*i`bUa;Ua{dA;Q)*xtykEw;8Z
49743 z6VyRwyxH7rV>Z(by`R}s-J}mP<IF@eN#AHT(J!hC^*@;zW>0;ZnQitmGtJ&+mgKPA
49744 z->?_G_o2#lvO3sosg*j}Y^|GmA9bC&S?_PQFk9)L$SCj`{gS#!A7|#6x%yrD{brt7
49746 zua+_Hw`CmrkK{Vt+DsjxwO*;0$Z<VD-zdlPW9pBbuT%BeBhJ`nl0&uq_p{}nZ*YtA
49747 zt!;E$9ik4@Ur-0=mR_d5qkf_f(O=cK>HpHts(aPB`b52_-b??p)QF??MD@=yMpxE0
49749 z&ocA%1R3-Hd(WEQ>o?`zId5$Zs6*9ZW|8`+x>3*8cdI8%_3QWmTYR7N9N&|zRL5ys
49750 z`j{sD%^dmURBOEYm3o&tMK9J@=w0=6{XzW!b-%t|S3S&lDbs9qR#k#A?O~GD&^M`L
49752 zeW`x4`nA49|A)TL4E{qkXt}kc-brt(w^g6fEA)<f2fdx1Qr#U<eG?^1w%1ejmHL<Z
49753 zF8x<^m)TGKt3F20(0k}p^!xM?`WpQ${aML>$F9F&=#-%ImkW3NjeXB%a*Xd&^VJ8{
49754 zxAaf-pXtq~sy+Fui#7Vm^=CnSpwn-wnd)EYxA#;lWXYk{&h|`uUweOhxqXOzpgrH-
49755 z-JWIdVb8E<+jH!>_B?w}doO!|y!N&i+KcSP_7Z!ky^p=j-p@Y3KFB^;Ui;cJWs5sk
49756 zeV)2g-6bt{t+c6Iq}N!ZZ`HT!JEZTutNP1*=|wzR^%MF@{gi%M|5dM(e&q%IqJBxg
49758 zQy-B1|A_imb&>jab+Nizdap^+Z*6HNo2{z;s_Lsa5>u-qVf~>#67%%@&XJ&oN<Fi-
49761 z@`)AJZ1q-kwf>{}Ms@d={;vA7sctZN%qU}2qVLl;s1x<W`Z4{e{*!zz)<4wu>Oy~C
49765 zYyF`9t#<V9^>5^eo-J$sMLn%j^;6o{t#y68SKT+f58sm>`9^)S>`ABmcTzj=ru<du
49766 z<)~9qDW{ZVcWZNXwAx<T>Krv)tx-qmrBy$qrqhQl9o36%PAjhZ(=XDGyp5i)*I(u|
49769 z^sL8A-+F>NQR?7H>TT*|^>%U2Dbkb6Ra>1#pY>_AO4Ri^^(CpjUshLCcl@cV)iu@q
49770 zVCq}y+j1?uP9%1{T-k3>KNB6^A+73e^-JZbKt-yk?#faRs^6%GL{YyNMLwz?m-_jX
49772 z@z^4{>MYUw=>7CEy}w-Xm+OP%>U^wRC02+6KCC~Y&(R+hb9_vnr&m>XHF5R$lJvh{
49774 z632~~7BHdGoY~ZDCe9n`tF|`VNdH^)zE!U~Q+ndPNA$V-N}ns^VHr<!?mm28UaG$P
49776 z?(OT`)z`V7uX86~=N`V!-Fuz;_B!|Kb?(v|d4FE#&b-b&d7ZoQI``pq?!a4D^|n3k
49777 zz3bd**SW`T<b8D`@2KnCOV_!Ju5<rf=gzs#y>Xp8;X3!gb?$!a-0{}A*R6AxTj&0^
49779 zQRbIbKVen(l5N4?W+?gx%i4-x33a{fll^|7-!Jt0g?_)#)i0di?-%<0Lcd?=_X}P9
49780 z!l(NELcd?=_Y3`gp{rlGpx-a_`-OhL(C-(z`h`#T`-OhL(C-)e{X$p2u&UoL^!tT=
49781 zztHa&=oidz&!GFiNc4M#e$UYF8G7^#{of?|Jwv}|==Tg`dxrk668)Z`-!t@khOs?E
49784 zC(J5yp}E9dZdRLX%(u-A=0<aixy{^F{eRRXuLsS;<}ve>dDgsa+xDP6$)0Rav3IuL
49785 z$X#0trBy7q54Vr8Pq0t6Pqojm&$3tA=i2AnpS3TtFSW0*ud=VTud}~z-)yh3Z@2HU
49786 zJv*`Qw;!?}vDey9+s`+wMzb-#u~}p5#?;0xjp>cO8gm<q8_OC8H;!x^*Eq59j>c(?
49790 zTC-aVTl=<_w+?R|(>kGba_iLA8LhKgD_iHb&ToCTby4fm))lR*TGzI&Ykj|Ub8AiO
49791 z_SQWuua&g!Z#~p{q_wv7bnE%H)o!-Ow>N8V-JaUsr9Hj9S9@-IaeG<&;P#R2<Ju>-
49792 z-_bs;eP;XY_J`Zm{n)v6U(ajH=<CXV-&N%wzoz_OcSVtQcVG2?msB=!fH;vjnYbNs
49793 z3UPblRN`*LJ&Ci3vx#$vbBXha^N9<Hi-=2!`w;gfE+Za5Jdk)0@nGU1#6yXP5sx4q
49794 zMLe2#4Dndv@x-?fPavL1d@J!J;@gNP6W>mJ2k{i*yNIU}-%UJ?$p4R1y`T7L;ws{2
49795 zh@T^ViFi5j%fu^)R}xnfuO@zjcrEc;#BUS7L%fdopTz5l-zDBa{2B4*#5;(;Al^;<
49797 z6AiIJY!X|<HgQwp=EN<CTN0^_dMo1A#BGS%5~-z{TB@m~np&!NAnr)qiAXKg)KX0?
49799 zT;j)w=Mkw_`eNc2h+iaLMx>5u>X@dEY3i8%3Xz(oze=RO>8preBT|d>_lZ9s-bDNn
49800 z@fPAwh--*HCEiM;*6G`b_YkRRnmVRa;=@GhjQ$hxF(UOxKS87x=|2;xOZqRwr-^?h
49802 z)vLZi`UdG6<h3-2gFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue
49803 z91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&;$RR5gE$z(!5|I>
49804 zaWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m
49805 z#K9mA25~TmgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M
49806 z5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&;$RR5gE$z(!5|I>aWII3
49807 zK^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA
49808 z25~TmgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e
49810 zU=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~Tm
49811 zgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK
49812 z4hC^Bh|@Pn-ynU1yru?mF^G#nTnyr35Ep~E7{tXOE(UQih>Jm74B}!C7lXJM#Kj;k
49833 z4B}%DAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21
49835 z#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%D
49836 zAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>r
49838 z@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9
49839 z#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a
49841 zL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9#K#~$
49842 z2Jtb7k3oD4;$sjWgZLQ4?;E6VkiJ1)Q-cH;B)}j61_>}ofI$Kb5@3)3g9I2Pz#stz
49852 z1Q;a1AOQvmFi3zw0t^yhkN|@OeS`E3(l^L!YLF0vgcu~mARz_`F-V9(LJSgOkPw4}
49854 zVvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1p
49855 zh(SUO5@L`LgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3X
49857 zgcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO
49858 z5@L`LgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELC
49860 zARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO5@L`L
49861 zgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~
49862 z3=(3H5QBsmB*Y*g1_?1ph(SUO5@L|BZ;-x0`UZJT4H99H2!lizB*GvO28l38gh3(<
49863 z5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7c
49864 zNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(
49866 zgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7cNQ6Nm
49867 z3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+M
49869 z!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7cNQ6Nm3=(0G
49870 z2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!
49872 zi7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`BAs4bnGA-ypB4L1GLNV~`kw#26&TATb7s
49873 zF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl
49874 z#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I
49875 z7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-
49876 zVhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~U
49877 zi7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$Z
49878 zB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>v
49879 zkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lw
49880 zL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y
49881 z28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+
49882 z7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6veQLHY*i8{{=LNP<BU43c1w1cM|P
49883 zB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`H
49885 zK@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U2?j|pNP<BU43c1w1cM|PB*7pF
49886 z21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy
49887 z7$m_U2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-
49889 zf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U
49890 z2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZ
49892 zl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi6rjNZ%lRgS@5&Nij%@K~fBo
49893 zVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21zkU
49894 zia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6Y
49896 zq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21zkUia}Bg
49897 zl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~
49899 zASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21zkUia}Bgl46h)
49900 zgQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH
49902 zF-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21)w{=^LbPkk`~883xHP
49913 z#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz
49914 z9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<
49915 zatxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd
49916 z$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-
49917 zB*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAV
49918 zkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTd
49919 zL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*
49920 z2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L
49921 z7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|
49922 zV~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B<~xfZ;-x0
49933 z4bnHrYif`ZgOnJg#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?
49935 zlo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{5`&Z&q{JX41}QN}i9t#X
49936 zQeu!2gOnJg#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)m
49938 zASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{5`&Z&q{JX41}QN}i9t#XQeu!2
49939 zgOnJg#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps8
49941 zF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{5`&Z&q{JX41}QN}i9t#XQeu!2gOnJg
49942 z#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{
49945 zX}9dQJs`FjXOFix8Gg63{ABy>_B-r%+Nap>65qVrKF$8;jpm@L9IQ*M%dOScHP$KC
49946 z>DCJC+p^Y;)(5R~tWQ|0tP6+V?JU2=y3M-Fa;(TItOu=!t;ejVHogyHvZslEC9Wer
49950 znkS`}8Yf$onq3`JEv=;5l9DZ5C9yg-n(b+}XV{)%dz$UZ{#i|HTglrnE&DE?yIkTG
49951 zOjk=(y`(8+SG+9#T|tgRb6@GXr7uhT%BU@US^j-p*4)gRC3WCLIq&DoC)zT<t@*v|
49952 z+k?D*CuObD-&V(sEl)6isFyuFV%Z<-Wsi(l_E5d-HzSrkQ7>D|vZ4GQAI|Tw`u#ug
49954 z;OUW)-ngUJEBcwr(c<Tho?lJQqupGod4I&*@$y(LS5{sx<=4o`_U`r`GN#<q-pih8
49958 zRQ3Poj8yf1rzli47MF7@@j>-liN9CBm-wiXHZAA+afwf=CnY|mo{}i%U80<Mxn|1C
49963 zJ=vaWPm?+}S8COA`$+qE>1$6DH>|YJvsc*{*_YX??Q8Ap?Hlbi_MNt4C-wvO!}eNx
49964 zo&9p7*_hCn+?d*!)|k<l+gRFI-Z-*xeB<QCX^j<)m5uWns~Q(IE^DlAT-&(5absgm
49966 z&C8mro7Xn4Z{FBk)4a3kG?V57&4-(7o9mh{x0<a9t;wyat!b?pt+}nGt>vvFTgSIf
49968 zMtg31X?uD5$oBE=liR1YSF~5Q&ug!0U(~*=y}EsE`}+2c?KSN?+fF-aKhS=-y|%rs
49969 z{qjI_V8X!UfvE%224)P*9auWBeBj7|;|ES2IBj6Xz{-L1238GRG;rC#>Vazqt{=E@
49970 zV9mgt1I|D)@W8;s18WD?4ZJ+q9GoyXd2s6Bw80sJa|f3WE+0H{@c6-#2TvPZF}PCB
49971 z<*%*#q!;e>-NuId;s1_rIIj7B;X96J{xAHN!&vv3d(FL)KHo`|U8e(eI<ZbC*Xee3
49972 zI;BpxuhXe@x?7#@S*Lr|>C8HvRj0G-bWWYlt<!mRI=@aA)ak-HT~wz_>vW$w-M3Dc
49974 zwmLnzPTyXq@2JyL>hxW8dTO1%yG~E5)3fUI{dM~3I$c$#pQ+Q&)#;b&^zu6Wa-CjL
49976 z?mGQtojP?I)M-?wMV<btP9Lb#2kZ1Vb^1`9{<cnkU#EYl(?{#{@j897PM@mNb#?ko
49978 z*XcHOx^11-?N!(9RoCrR*X>pBP^UZA=}vW8w@+QSPhGc9UAIqNw@+QSPhGc5y|_-7
49979 z)M?#5^?r3)w@<x)o!0GCFR#<Oo$9)M>bkw@y1nTYb-J=nKU}9Dsnc`n^rLlpZk>Lt
49980 zPS2~;y1nR&>+}nC`o%iEtWN9pqwDsg>-MAT_M^X2r*%8hU#-)+J?X3J^lNomw+H?G
49981 zI{iVN-c+YQs?%HQ^e1(?rcQrar?=K=-JbMqb$U;o*6l~v?MA0{`f#1r^<Mv}P9Lk&
49982 zx*g~z>a=bT`p<P*w+sE3I(@oM|5~SYd(m}!k?RntT#Y(uUB69zeUa-^Cmmm>o7Cxq
49983 zI<2oia`oz@b-R!&StqUAhpF3#soRIC+lQ&!hpF3#>9h}J?P5)|W>~YWh1R|@{yp3}
49987 z>Qd=-h7>T(%rSG#JhMQ`GQ%2YZ6X%fR9?o~T3*K5R$j)MV(ln#XL%Vpa<7;81}TS;
49988 zPt1_Gm$kRVdDbF{`&#=+JW5{1I^H^4;zzBIOFZBDl*CV4pO^UW@-o&X)@79^hR1#l
49990 zo5Ty1jDlo8FR_~HQgvxPLaQv-v<Ag#bFG#>P#-8us_{=-j=?m`mSZr_8Z@6WQcm*&
49991 z^8?G+yV$$%Ey`SuOM~Om;J7q6E)9-LgX7ZRxHLE}4US8L<I>=`G&n8|j!T2%(%`r>
49992 zI4%v2OM~Om;J7rbwelJ-=Xon@us%lXkIuOI=<FjS;{iGMhg%cn{J&R@W_7%p951`7
49993 z3$mm-UbfVTkI1yt3Yk7vooh{yy74iYu8y6}v9qgsB2j9J#EaBLR!i#3zss6ZXJmT)
49994 z(X=^^n@J7Ysy=p`RCP$Et0TCXSs-<(&2emS92*?Rh8)Lt{(o>B{~)h%)?ekdiS?qq
49997 z@=f(kiQiLeWcg3ktulS5x>Mp^>Mn`*sCy*dtL~E+t5{;HQi-|BC6=m`_$T!ziEGsp
49998 z691z9D)CwMtktI0+xjqln8YLW5fa~|-z4#9eYC_k>o;2i`ec2&#1H5X$dXTLsUP|h
49999 zeTl@Y_0<ypOW!Elxmn*V@yGhd5`V7mmgs0-VyGjDiB2TmuYWIbtzIi_?m7LOOuwLC
50000 zk(yzfmc$**4%UEqgL#9*UCpl2{`N9^(F*5F98-I$zgn=`_Wt%ER-11PcWGQ>&2JoT
50003 zxln7hEu+g>GHyIUpQ+E6QQ-~xc3tQv*$-R(4YFOsb`7OCwJz0$-tClV!|yBhtkLzZ
50004 z%^E}7-thZFTi@^+)%FeVStE{I_p+hwj9#iZ=G75zjr#29Wka7Gy>uwwv7hc<Ix_F>
50007 zt3KWPoz7N9zBhVHrfw6xwl(&>p{<SXamF66_6CkjyXV^DHn8^4a$9-oAvvns*1eUI
50009 z+Wz`hFnZa@9(Lqf%`t1)J=U_j)~fbvXn&g{j=<1SS-;GdeVQWIl~rt8_t>`XvF&Qz
50010 zc8_(tm$hZx>C9{T<j%1iD%r>-LnT|kOv@3xQk|ynw6>5D!&QU2d2Vx+Wwo-_1MQOs
50011 z^`LHFRE-qc7qy-C^8?cclEJDz&Jyo*ek0qn{zkU?KDPQUcI3EW<wi#imx@uor@k-O
50012 zsaxbqb+>v(PZBr$T&_-c$W{J1{eqNjCppKHq|}?q%UD~<%UIi3)%T3s$;-(5J4t+<
50013 zyo@zXUPgL?JtQucm$CMdm$4494wZPMyo`*<PL}uqxoR5g6V@jsUL-GLU2J_}c<eAo
50014 z&FL{x(Dg{6*BIen86$i_BBKMj-ikr7QPY0C{d&&sLiVJ=o;28#27A(APa5n=gFR`m
50016 zlJeF5-&gG`a$N6!yNCZPtD50az^lo>S)Ff@EZRq=ld3Z>W&5G}p~PF%EfOn}PUN?;
50017 zP1Q5%8Eb;nhe_6^Sh7;#9o9tjHwpbs6#czmO_bw1jT-%t5y!XsMSBa0|9wZf8U+k?
50018 z##Gjy<<%JxOk_mRIr@Vf{Xs?qgKA5)rR;w-`kKVJz*hgP{#lOr$Pqzxlsn^sL2BI4
50024 z$e_Mg#v_9=9!Vr-G7=fof7E}JI5Zx4MaKF{Mk0e|ikV`KGq0C%Y@3mYG1JX-Yl7Ls
50025 z>><l%m_22AH8wHBqulwHp`YlCN(LE~4BAKAQtzdHZ7X$jUm2gCVtrU@-`DNa?Q_I9
50026 zcl}*sl=TK&e;r-Fq`Df6x7Lp?3`;xy9=Y5eaeW``k?Ww<t$^`8)>^;JmNCg0=0dZY
50027 zy_{toZk;CM?klVxT8{Oo2yTk>Q|qtTmH0;csX4-ey~j(v-|6+Kk@<|@U_RqFm`|^F
50028 zdVOkSKAUVXpG`KHPp@}+eX9D4q-i~j^y>Cl?}p}>b2oC?-!`JHoVea*-6N#2OWU&k
50029 zj1eR2v0ERx%x2jpwS9V9bHf%KTDQ?--O<ac<2X%P;fdBt>k`Uh54ST-&K+Obb%}bt
50030 z(-`#`GyG1YerH4PjsBcH{9d!iC+*?0Khmb-dK|^|%SNxOd#pRs@|(%>siGNURe#s!
50031 z$x>V2B7Ni&a!uAu-y#C~x&C?eH>mmvnSPFUv|RaamFtb>dZW4CXs$P!@18VQ4$aj<
50033 zvg#8%%ibJ3;uF=Ly|>4wx|b_!=&$C6=5#%$t-UNyP1aX%v@H9F<{^8~-q}9XUTI%w
50034 z|Iogxc~5IcG4@jVcY3S(+rT61zjo+o`a}`I`$YnuQkSc*sT;&cx5`obg&ebcs$-=b
50040 zrr)k_mnC<IQ5$m9@0K-P?MiF#v?tR(-(^;R12u_S+vG2y+Hx+QtbPI0Psyj&>2>n%
50042 zSe=P+oP%+kgK<{%+ryvaHLg}`=Ns%wr{mPNYTNo->v4Q*Jx(oAOC(lO9bcdS>Ko~C
50043 zeCIs)Dy{i`b-##rWSbtZ$ICuU&=bW}mF!!3Grd{;%gJ~gI3D$l$9v-u-FW>W{UJFk
50044 zAJ-q3HP08<jn|*jpOWdyZ{zhh^*1GcM}J4+f9mTc{vY)m^)EJ6oo%DFhSdGttftie
50045 z-L00HD^454Y2*1dqE(N%llr=2M)d=ot88b!>R%4GPU3Hwt98cJ%R8UHY<SE*`t$bi
50046 z=NsmYRj$?)YXv=%LKCX)g*x-?;a;a{EgN3i8kN)T^_H7mIW>oKQsk<w^?wJv!rD?k
50047 zca-%(8TWkCy4QMA4XR!AN$OxNwLwo)7wdgx^nRNP)I;hit`_6?MytiO$dd7s;+yYN
50050 zzX6Y2uJ|i?J$%$gziadT-*Gb6siW<>PQGh+Uf1)THK$wi>vtMmwYxD~yRA_z#~Rgc
50052 zUT4WWJ95n*y5e`P^y{zky{_-!=xe%ccT29TifgIiw?M-;0!IB*{j~a9DE=0?8r2(q
50053 z^E3SBXBgWXu9J!}yx|I|xHc;7Xh)V*zsVVXlQUeY6u-k6erePE(pL2*oBbW;tF~_b
50054 z?*6;V+tmK6zWr-s`c9ub)Q_oAb5#wWJf^Qxqvk5XU0|(MmsWz)gZk_GA#<vE*1oi{
50055 zd*hboam}Q4Mr&RBqJim_HL!SKjeP2j*7FE%H?`OB-=|i8ox1)WffLngb&a}KIeH6y
50057 zc2&E|^6Gc|mU@$VlPoz-9VhY4>dms`pVU9e^n279vd($xJo>fm_>21LJKgQ%y(!|e
50061 zhco1OwA3fnCna`%+veA3dWY&a-0CWRmedI~{Hj{_|CE2<v{YS}MlWmhSZ0PlT`e2x
50063 z-J=8}myJBKXIh^aE<>|N8Ja!H(Ckr$W>*>3&o_H~#vZe5eVN`N?)mI+nOZ%{)ap^D
50066 z34*9)7=|SXmc<xjj4>t{f?!$9U`%5Mvjo9zzWa2Qndh8W-EFsf?TF$=-I6}#IeG5M
50067 zpPPR-Gl~3_Wb8^Zb|rs;bWAaJr5L+Xj9n>Ym;F7?$Y?K2H9rN6Jpp4+z}OQYdjiH!
50068 z0b`TPY>8WBS{ad5X~wEFV^x~TMQO&0G-E}jr4psocrneiH{6uUFg9fRpE!no2Sz5r
50069 zusFjsVb-R0)B5V}w<*imltngWkxlmZ1o}PB=+uN&%Q<<*mOPV2c_!!NkxhBVM|sAs
50070 zJZqO<E9Drwa*SO$#;zQbemTar9Ag{DqPEljT;<K87+V!%t72?b$cKutQ&r7VYx-@7
50071 zF*d|dp0d9K`aOYukE7qU_q#H&cgl5Yz3IEN|Dawc^`V+fvGdEX-tL(>`db(0l;-dG
50073 z=FVj}7b?TKP-$8d<@Usv`)1H9bLYQe$ShI*>T*ul-~26eDdW?%=6Sos56#c(%%x3j
50075 zT-ZLV3EQ!SupL_n+p#raJGKzEV{>6UHm93)bC|Ag{^R#Z*wQY9E$u;J8#^7gu`^*C
50076 zyBM~yhlFkH%B=i=u#G)1Y-87lZR}Fm#?FUr?3%C@oef*jwf$Zg9L|WB%<~U2_wsX=
50077 z!sjf7&shqevlKpODVzl_g-=)t=f6wgvz5a6?@~DbT?(I}6h1>Ke1=lk-j0Xq7BlVY
50078 zCe!vVj~gb!wsa7-r7I(>>98%G4lOH*Uv1yo-rZJczuSJPt@%5R-x>Fv>EBuKo%P>Y
50081 z`Ka^t4~h$Kb{^|I*LmXy%|Dp<gV{5#&A2z?`OH8Z7w5&z?~VK3)bF)_uk(97-`o1V
50082 zeT!RHo>_Ty<^7c}e>3x&jbVSXAnaH1ABMF9Wk6WDE-KfCv&9mVJGPX|bYHkAgko5w
50084 za%z;Cq}tVTwL$GxN7V&&M?HreG{YolhZV3McES-j54Yf%&ge!xLC?|4bdTPl59`zV
50086 zVq$J$S)w<wGjS+!CUGP2BpFXOBqt<iB^M{VliQL9lBbi`lMj-wQpHq@>5I=xb*6e!
50087 z+f#>9XHz#)Pl9AHG#D4m3YG-j!M5OFa4NVOJWQ)}ZF+QiT6$r6Rr-_k-t>v|#q^!@
50090 z_Q@*tN!C8Bh3AsxmA(V@o)VnzFqI5djLyg^Do<&-mBG~%lvcEIT(Uf3xQtWkYNn;L
50094 zXof19foKM#85oMa;cDi%n-8dF><yj+%VpSup%yFFUQB_ZzcFLXjP@B*W^~TjI%D0$
50095 z?ziW@J*i>u+ud(3{m!emx4gag?PG7BfBVMUkKP;i-qiQn-|Kv@=e>RJZC!eL>E)$&
50096 zmOlIS<gbtU_4=i4OJ^-zxOCOhjY|(L-Py6Mqq}2E$HR_Szgp<{bk4bsvmMvxT>sSx
50097 zzdCC{*Mdz8_AGe$-OP6z7aU!1X2I13_rE*-yVJkBV9twof_EC;8UN0#cNV>~=AF&&
50100 zyF<S|YFPWQWy97%EwsWE=zvwQ5q85dxLDrfPZvxte6pUem+SR<mp-b`>)ZNyEQmG6
50102 zuU-GO`|aKBTiTDdUvEFVWWkc<OL~@Ui{FkvN$5mfVsv6^VnJec;*-Rl#PP(X#NEWp
50105 z9Z%P%$Amq+HR(-Z5ASmNUiww0lxfXO%`C{Q%xui;$sEsI%-qeq%;vJAvXipy+2z>{
50106 z+1=U0*)!Se*+)5%tIdthP0r2Bb>@0=+j9s1+2!2n+?CwDkz+^BA31eO-IOI$)=b$n
50107 zrDe*TDQ&qI`Aohk-<F@3UzYF5@5mp{pUvOQKP@B+jfIJY*@Y#Ab%pJPgM~AN8-+(T
50108 zs;0hXT+Pgy#WmeEn``#g9Iv@pbGznQF(?i#jxA0vE-bDpellgxl*3a_Pq{jB`N(Y}
50109 zd%n^5jj`XD`i=R;J;fu%v&HMhhXcfbx&dPcOdqglK-YlH13n#aa=?`V_XoT#)s|XI
50111 zc4_Up+O4(wYfsf)t9?-WdQk14F@vTIY9F+G(E33;1|1r7X3*6^_XoYIE7mpFO{$w$
50112 z*IBo|Zdcury7P6n>z)nH3?4POZScIo%Ln%k-ZA*_;B$j-4t`o6)Hl?Rub*ANw0>Rv
50113 z_WDEhr|PfN->-i)q%fp;eB+QwL+1VB)*+okdgt!@=9+IVo_p(itEXkAHGcEVH}8M*
50118 zRM7%eLi1d*ywd-pd4#J0C<Rs?5bNoWovQ&bwLMbbUtA49DX{XuhUBPZs4ZQ#28eQ^
50122 z^R{rjVjnHtl-j4{N;jtks)XjbWO<|+=N3v``)H2kv_O^6JeMplYo?_ev&c5CbW?d?
50124 zseMqzKB!_Ju=ZgsJO`G$qr=!fpIZAchbmg2N@$)-mb>HP)IQ#Sm_rpUP$e|aCCg>s
50125 zDjvUdV;0%Qm2N5ztUO17p>|Z>_m?8i!%<-6ftBYdFx1Vxf#)Tk(peMBf#q(wrJ7|G
50128 z#XhKFAF%e}&^(tcudExV)+yFDOo5dLR-U6!C9KW6LSQfW)XlkESWB-D+0-z*Vewm&
50129 z-kS5)5_zOyO~WR6MqZWo<x5piEow@5cEcxXk2<a{sk`bW6k!xhggLMjx?wBqhZEs!
50130 z-E$r2#_3b1&zrt<diV4#UmNqasngF-zdrrJ^j9+qGn!^h&=d4*y;S$;?fQ^Dt8eHh
50131 zv1F_vHX$}Awlvlg+YvhyuCII&uCJUBuCMHlZ;9`VpNwCM-;KXW1c`>k_{6NlqQsgR
50132 zJ7yf1@!5>aGj7j#GE>j2o7p;Za&dfddT~K<Rbq3^g__%MFMGS|?M-j*N$g1+Nu2%a
50133 zxvyS(`|8{Gzj}Yt^hpa!J*BOseWjD5kCh6g=C5~s{gbcn`ugF-^~8h3tFONJ`jxNW
50134 z{rdCC(<aZKygXS*j!L#A=OvdXdy_kohm+@$H<FK2@l-=<Txw=&ajHADIkh)+JasX3
50137 z{IH+kHY%NW!pxszihFs7<G^x%Cdk#ob6~kYE5+F&tJor0Td)?M1Iz7vM!et0lts2-
50140 zR-U84P&-3_EdtgeU@Zd1BF;}-nZneLvAcCU9dV=#2(#lez9eQqnA^v3^CP7dTR9Fa
50143 z(zn!SeqO*<QhD3A^m7x(f#rUW)~{uGEgbiI*PJc1wx`_h7jw4II-hdeFY~SAN*$%Z
50147 z!V>6$EwIn@>@LAw)3eL8mD-xy+P-%4YmeGQ+nlyVZL8Wgw(V*=)OK1o>G67|UZmIP
50148 zO?t0BuFvb6re_zA)yKxhrpG#BD`Fe^zMZ=fdl-8iFU4EqljH4U#*UeiJCZv)=6LRU
50149 z?qPg+yeGabejt7-ekFcC{wk46G$ke`<|LLRx)WOypC*ncE++0Io+X21V{%+_dU9cM
50151 zm=w$lI)in=)?k0|S#UYH7rabo(v9f}>DlSU>8|va^xpKb^o8{8^wUf-(~udPnU-0Q
50155 z-zWuE9$0yf0z>VJ25J%Z5v9P&11rx_V5nUqfGwi=h*DtXftBYdFx0LJpcZjHqWOr*
50158 zR-U84P&>m#E#iFSQ()zRmFFlh^f$zf@WiS*Ia*GY9eSu9J1jG-Vc57~>xXS0c0ev~
50160 z>j$kEv3|rh`C1j5v}#suBe$tJYOz|QHmTj}$biy-<^gR3=GHB*>#5sTcR-yry_|dM
50161 zMf17l>&*}AUJcF-ZW=ss@SMR*26saS8ekmEghj9#Hq|%QkFB3tKfiu?eNX+i?7I5>
50162 z^(X2t*59swGDK$|<tF52<`!mO<#M^E(64^GJ}RG-0z<7lF5i>_Lo4#`%uY0q;I?cP
50164 zUiKLfhHGhmT~NfhS{|<nvhuj*#_N7uc}gdn|F(+*;xp4<-H_RtIg~k-xze(+WoOHw
50165 zmeVcwTCRx8;*NMGld@ipd1K2Pd*3+r#`!lMy>X+p(Av~Gp><a4s@8?W4-P*${NnK2
50167 zC9ePQ+-5X$<);j0K$xB1^7T_~nE7e^5y>5PB+_R%cYGx5Y8y8cWs)%ei(7Z~6wXsV
50169 z!c=I7rO*YNVJ{qkGjI(az)PKbGxO%0Hy6FR>dpE$Ti=|doAfw6O?T)Ox<_x-`}7HY
50172 z82`q!H|8g{C-x<dCoYsuC2l32Bz3ZsY)-Z%=Oh;=*Py(+mekYkcb+&uq)C3Dl9b_c
50173 z@R9Jp82zx{2Am%-1H$lXfnLW3oJV}-zm4n{b@*v81H$~W>VBK&+k_b|zrCb>@V^Q4
50175 zkbbj-TNPR6X)puA{MLi}r3Tdmj3!qS>!K|d|N9VYLk)TwOl->pr!kiF=TzNQ<Jb>1
50176 z$PYE-Y3TZM%5dw5u4eCbY{2=!XZ{;xJ$Zwy7xZnhUeLG7dh*s<FX&rqy`XQc^#YF&
50179 zNot;2W?CWJ)d6+N^bGH-R}IY#6B=eVENocSu%Tfm6vJH~=fN`Qf$eYrPQg{U53iD+
50180 zCXXi1Ca)(SCSRor#q-7M#RtV#0~QQeF<^aaRBHTyaRa8OrVltU;4@v+qx3{QM=#ag
50181 zdTXj<;Mjpv2hJb3f8dFM7xjMAYPqQIRCXpwy$muzV=y6@9V`yIf-S+`;8<`WxE(xA
50182 zC({k-vFT~)1?g4kjp^O#qv<p0tLgjcmzhkaF>`Rp<RNp1EFIE4Wb=@{g6nxk?|p8>
50184 zsg<Wa5gI?G(R>zteoBF%Rvte;rNGc=K8rp-7eA#|9zQ=9Kc#pc!vEsYe<DhOmB(`v
50185 zb~J%|B24Yd7Pr2`%zfYBdY8%rE6-72=(g0&)T2P8mZiE=TT-J_lT-6jpQetb&R2GZ
50186 zl8a1D`ib0aYSQ!arhKB}s$Pw)TT$0jx3z9x-IKv$aB*;R-HEyjb+-n$4W2!CvFYn|
50187 zs1<61+NBPu)9RXfs9r+}T46G@4_-5P<KUfx55aO+2V3CN!KVjb8GH|p!+E%w-Io0{
50192 z_#}E7+S0+2z(`Vt`*4-HW^4l{fQa8?a93x#wJK&@9p=yK`L!x1&rw>3x$7Bet%|)%
50193 zDX{XmXW-YW*vpvWc|v!sqGi@1p8_k7=MFz|EW+}X;t^zj^(1Ez?l)3-JgV$lg!|u^
50196 z>BexS-2(GY+@QCcUdKs&N#E8_Yn~QWu~cj+b`?J<?kXNGPAbkRE-9WVUM=2_#myVD
50197 zB{nHGH?}0!726!!9XlL56T23>AHFji;$!2};vMnMaL2@b@#FCe@mul736-c#G@G~P
50198 z?8M@5N5tKULy1#~D~WrF=gA=1kQ|eol59_QCcBfHlY9GC-91XaP8CzlsR^l>sfDRk
50199 zsSV+}yU$XWQg>3%f_P9Lj0vU$?ZNV3eXt`q6r2gJ2KR$k>0-J$Jt;jey(HZGa8LS3
50202 zxW5mB-)NWtVYv6>O5(hoCV892Nf{mswvxD1&^R%RtktMqzzhhB;`Ajc1Hz&>72_er
50205 zW<VI8X~%6nR}-#-_%<Pa*HIfV!>vhfzQ4zj#4T0r*no+(UNhEfV!ba(84y;{<mU&U
50208 zvfq5so`uV}-WUFkj9SF?EU-MK{(Ok-S@>^f%7BpsMv^ih%<rSv)gja)bcPN~0wYNo
50209 z?%hOwi1M#p9b$>K!DYZm0wYNo5LQWD>lwT9$z?Wo_!L-qVC6Xq42?7bV-c_x0c#O3
50210 z76EG!uoi)55w2H!V$%uND_9a3Ny>mQJn!az+vdMle1_-x{IA;lw}H<pnl!Ni*Xfu6
50211 zBMFQoWk6U(lmCwQiM0X0<FO<#l9T~q6UAz=UThQl#Bp&>To(_-3mM1;IZjTK9dd>2
50212 zkz3_Hc|u;0x8xHeSf0ylQ?tW$uN&3QaGd>0d7Uf7p%z-84Q9bYSP4C_1@^*GI0IMV
50213 z9z4}bmvpn9pl6Ec`%nAK?(b30OQPrXWq`<F0*Ls%D0jCEKW5Bu|BLpw{9Q793w-AH
50214 z+}!;!{5*#lFp|JXQU-+it9#rX4tzgg28<*yl9T~q{+P16rvbHr&hz2&PbDb>!lJW`
50217 zI-<^0R?$NaM!^JAw=9M(*aUmv7+ipx@K|eIuUqs)JxedtD|D~kruXV2`i#D+@9Jm5
50220 z_BLD!42_6pG-_6(W;JT05f~eRwGmhwf!GL)jlkLntc`$d^vj3)JFbsx&%`euSOyb7
50222 zm&SZ)TJ!PpU%z~@tj{^KoI9_4mZ^Qp^-m`Jnzklf`B7&sDeBDyVyI{^_u-<^kS23U
50223 zG0I#ZzGN;benGUD`y1v0(JJ0FKaUY#G54`zoFTtxE-Bs;ZRY;Axj;-YH9Ls8=8|H*
50224 zxs>?l;=3kw7m7vZ=kJ+Ii^XDz`T0F_X|Yr+Ge3V{{J{LY++0fhhPkv@Ay%26-#6_~
50225 zZQd5;cT7)MpL}F4ZAx3Y1b%ETEjE}-i{CL9h~G7r7N3|4#J@C`5}V8=#lJF_5}VB>
50230 z^c(lyc+onhyq`;JPiyChju9({uO6{}#EuaSBgT%HX6)Qxe0@-y5|_o@=9SGmn%9fx
50231 zfez}L@BTuvx$he-Id#O95%*;Kh!;(nz7~@^PPbP0<H2hM9!Xx?|NiwE9!a*6z(@ik
50233 zZShQI<S3Iz=g6gUo!l-D$ushX>0|5iDmOJvEl{h~X43{P?`V2YJ%<1qO$&H7EDhHO
50234 zAA+-R9Uhr}b)6m??rqZ*ew%bsU)J~Zt5_-48k-th5L+4B7~35?8oLm?6MG)d#hc@8
50236 zopQ-?t3_7PBCBYTM2liA!BjHT^>UJU*`+wGESD^IJx?{uDw<^#%@S!=jKzwz7gNc~
50237 z19^g|WO7`x+)q(Xi>#tW5-p0g1XIb-O5cu4J)TRJTP--HcrICP$C0QGnl6-<M>Fkt
50238 zDsEWHD_-Kb)q-v2IWRoZqF5c60z)G!XkOwuu-t0Fd5P!1^5|JOOK8rcw9+Hya{<SJ
50240 zX2L@AUOg+Wi~HdS_Ryy8rY$2^jojFDtm*v7LnBWQyIO9i$oX=4-OIr_xNq9y+jPC$
50241 zCy)2%?WmOzm1m!nTY&CZYQ<j4%Be)dVdjsuL>|c#8}i5oiKKuKJVzM$6*D{o7-_?-
50245 zsp{%~H~F5&46mZI?|~?c`v$knzAY-G+X>||V8bbI2Eom7zW4oH*u~_`sQ#e(D8o6p
50246 zOVAt~z1?WLn`Z?QYYvqMnx|Y6rHV@w$#s4{jLMKpu9y;kGJjBBmUraSK`ZkwRXqP-
50247 z&@)v(=x*J7HOAzM`KnWOhb`}8>YTdKw_8AyX?vSGX6T-}?z%0*3d0)f&emNYdVS~v
50248 zSXC?)+ltMw5q6qZ`DwTU_uz$2>Uup!Pu26vU*k2*YgpRQ-Eh6(LBlJ(Meo(e^m%<l
50249 zKN?;b-c-*0!xs);Wx95ySWB!eHYc_uwkEbIwkLKZb~biB_9(96weivMsqqEz)$vX7
50252 z(S$qGRCc5(d|EhGIG>)GUXWgy-jLprKA1k0zMQ_Bex6BYhGxcQre_vqx-wfb`^&p}
50254 zTta+`zY6@IpWs@PmT+2nZF`iKXz;>ehD-Se!e1$BTfmC3O9?-ZyUgnLB`E{K{1vjc
50255 z4%3Vcn(>1sHblg&#asqeSVs7DslNg<dLqn#ut-uflA4j!jxStImGq!CPzHqgYhSG<
50258 z|16q)7985Hgyfz@GtZ(~D=MCj6Du(HQ-BNa=Ns!k9G1@^TyC`eRyQ=yZFsDm=auk^
50260 zb1n7XNbdSYR}#Nld=^=V-x)4*$F>!b#P3cTCuVr9TJ%hq0bzKhohyl--Dj0KTl&7F
50263 z(Id8qz40yaZsD&JvTbziX&lB~_Y>uMm-s7z>^Q71<CAYxPN5SU%X3Z1*Lu4?AkK*!
50264 z;<41SR<_1;d541R#q90eq}1)y)9lln&eg$Km=9A6lMC|-%L?6vEzk?gVSj8(th>Cs
50265 zUTiX4fLn5z?2?=0E_o=uD}7j=GQH@#TIpKdswe5WnY)>1*<^NTc1(7vh-MOO-^`sa
50268 z2kBRtrc5p~!SviaGAm@8oGlmUR^>M2cFHv-wfDejI3$n22H06Sb1}6qbwa)jN72TY
50269 zcUN@M3Xcv^3Ji7UWvIMQfuZi~5GT*Y4=8>*-bEQ+VH=GK(^+fG6v{nr3k-+Bqi&c<
50270 z!lK&L&uNqaVR#<ff1l7A+_Ic#(9L?Ho~;+_)%ufIPVW|D#8mOAI3~^uydPy$^66-^
50271 z&w_9T=YAcOcWe%K(^@1~i@{-iy8xc)xUNq%rN*abrVgY|rY?z<VtwE0gexY8zX<o>
50272 zD(@V#u)qA%96{3=kLzlIM=-I^*D`72x0Pvb;PgpGAFVIA(Nu1Xo_ZHE{9d;s^)6c~
50274 zMcthIEO{w;Cv_}!PPZkWg`<*>Qm=zzYD{WMsy%29CI++h9FwQYC-v;sNAy{JO+V1D
50277 z*BVr>ecX{&I-^6Mm6jNv;TZAPCGMD@L^k+LqBjiwM#R;Gp9V|faaa2W!|Cob{674^
50280 zERw{}Nn1RawTOA;RR>~|*yF4;D7QE&bJfdbkK88r%M;;Svb>J3PPK;T-Yp5wh}ff!
50282 z89!hKj3h9UlmTJUtc5R084woDC-{<-0b%~vZ1%aa?=b^L5*SI!aP4fL8@FPqBxZIV
50284 zvbfij!vpfNI;H-DX`B8>bw>RsQ}!;Zzfym#o~R$Gr|NIiGxfLXg|TIl_+s__&*tli
50286 zv-XMxle_jCen1{DKVO!Y#W0i8PKhs>-1Z;DaFgRsi#n6*{-bCzIq!@ZYI5Iy5{)JY
50287 zo)sfaF1#p4n4I`mVz9}Le{H0ms3#`;kJOJ$_^0Zr3I8|hZ%p`S>X`}ox9V?=&KD-H
50288 zj%0m0QvCeCO8Akv@;}kH3Ez<4==&z-r};u5*?4yN{Nc-ncMqIqdUB6OOg3q}#I!HB
50292 zwow053WQoKsQ)PiLT&um|Cj+{HfHR9%mA@2Q!6Yo<$sg-RGbu-P22XhEXYx^P0kI!
50295 zz}8U@QVOg*u<{%QhDK!r+anokBx8#tmPp19$ymX~AdoKHOR^+m-rlYCTTRP!wkeaV
50301 z^n>*4Ol@XNW@@G*vof<Gvnz8Xb0%{w^C0swn?to-O7QKA6sc2O-i2yA8(K2lopW~i
50302 z2VUJqEm5o;im^hmHYnBt#l$a}*d-IUBr!`SUdhBNNt_i=1YY^Xyh~vJ2Tn=gLQ95!
50304 z0CQlt-@c}nDAo?eSfN-O6l;NE;+IV9l8IZAm?aahWMY*h&Wa}rRq}tqNkNYL{x4L?
50305 z|E?Cw{rpcYQLG(`u|lynV0ld4{7++-Ox%*hESY#E6RY&%w5=w;-ou=>)lyFUnA({g
50306 zzW(R5*wz-cgx3E)wN@zB23r49`KX0OW5@Ns%WTY&i5J)ZSkm=pP{sd#-G_NM@_#^V
50307 zpjs&J_WVyRq4mE{yFLF?8?Zd4-H!ih?704SS-0bV8n0wxl_XBC{^vL_9QRfHI*{YQ
50309 zA+7&?it|6V0?T8H^FNLs*Z(f_^FNMRGVw|#R$Kq)L_=n0`j!}--Y+JLxnha9lNlve
50310 zWoBkN#0KH^;@p;(KTG-f>q*@{n`^xwRz)Q2X&NggmDm1>*_m}>VP>ybnK^@cno*z7
50313 zuN-<Bt{fU0pBY~q?}~4YABcYzzY@Q1`i=$nToGYcqEzy50;LG|7pU?Vt4meUq^jsq
50314 ztQN`YkgNvj$Vcl{T<iRGGWai0<u7*4jLZEmC-GmP%3rKqs)|*ricN~ONL8^%Rk22~
50318 zpSd<D)&iXWGfwVwW0y?alEf^TcqJ37m24DKMTb}=Hi^CBM0xKw@j~XpG2S_Harj-p
50319 z?(!%vOp({Z)5DUgQB72H`)7haLp505%Q+kehU4)bR}0U9;r?6>wM4OYD8>pb&ru-M
50320 z#xI%JB@?$KF-s<1$;4_Uaf{9B!mC?d;<qVj$;$R~zYJwP4P1D)WKb=N)uC7ol988;
50321 zv<(-?R#7Wj#741G9F+UTC2>nkbo|Y?X=#hO+w^9Q9;roJ-`vawvE8&`v9D<h-oE{P
50322 z-}-H6Tdu3MqHPZZuj;LC^#_%9zL+HDI5wXU=fw@w&hH{m@&S1gJjX<zteZTUt;6uD
50325 zg8YG8ZvI-{_f;EBD?_~?{?c3!uA_l)pIHc3(?GbI2E^Z*3&J%uAkAg&<ygV=kCH;k
50326 zv`m|yGcsd-&dHp)7i7WQi?V3$1LZ*T*Fn<M2gb^Jb2m?JY#lC#o4+>7k%qJwi$S)U
50327 z@}T5s`DJq-BgYu>75P;Y@)zYV8uFHGGe3V_e%<i$zNs=?#RGD>oNn$j<SawnXMR_{
50328 zYl!>gOXX5SzArnCwz3yM{)YTb^Yd!?k-7KE-!^1}+-QE@BsZJ;7P-^h|DF7I=KiVN
50329 zXYL2(L396oX?mijFL>76&&hM<eqNq8_Y3lZxnGnQ&Ha-6Lv#Nl`N!t|C-P6s{ZHke
50330 zn){#0KR5TkkhjeJKg<7Y?)T+=bAKTJ(%k=xd}QvA<zJiokK~Wc{cq%d6-s54@uw;(
50333 ze*R4TZ|1N6yZS%O&zF>WM)fD^y1Cy_|ChP{-^x6TdaO)NRsWCre}ytxCSmRY1m<23
50334 zlg#}a@C~8#c-?01-_*Zi?%&eiGWT!mZ<|~hGo`1=)P-}z(y&BEr^A%LoBciW-{G(p
50336 zl0KBamHEWzERmA!m+N??Wb0WbrZ+_{90|*ZyO9^gfU>-~KnygOG_`uI`FW7Jq_JkO
50338 zYo&GO(qg^2wD@gvDY4aDN^BGVgCV=jrO-aqk4?&a-VW4RX9wzRSQ4{g8O(-dFdLS;
50339 z%C6Hn-K?9#bo?jag>X0Lf#Gh>>2lhdpTBDArt+T7Uo-b|eKfF~%3@GCoee41K6PP@
50341 zfVm%3rUp{Kr+&}ekCaO)v_g3W#-LzPuqxOX><W$qXUb>Drh{~SdUSe9dS2>K>XaBO
50343 zD^2Fz80|-VK%SCU<wN<}__H<KEw3|d+aFYC)HU_c6#w$6z~wa@t6(GShNI;##Nnw<
50344 zhGziJ(u;Ms-W=|Ac0u3P&tpNXF*YIG-K;ydHT-_>O6-2@b-WaBiBE~okFSWY4_9!U
50345 zj$eu2i$6~UiN?g(#MD41<|jH6J&7%ey@_LqbBP;?hv`DPDe*d45Ybm-l}m*AHu?t7
50348 z=J54$Jn{q9OKIc>s+Z%o7V-5`>efuYUXEA%sQO8iYq%2WhI4a`OBEyE<D`Pmqg23p
50349 zDUDKr>g9Np3Ro|tQ7TZq9FI}~>!mbG1*}(B(W}_Juh=rhg|%J-#tN)gvwFF(_UYWv
50350 z{&&K*lt#ooFWfSl10tdb>lJ=piD;D5>|50*Zj1`)w_iQEp}?~XpFHi7Ug6d_5yS0-
50352 zp$MZ)3$sy-FYn$^9w{_!!iDmld}dl_tJLUl6vlniy7p0uJ^3NyN&ijgGc1YOP|+6l
50353 ze!5Ld^i$I-xgc(fCsNCjY&NZ-S#qIV74AZO(6ooHm_B5A)q9hgQ11QpTN`QX@t(m_
50356 z&#>>!ezW&QYW@9BeEMm}2-2TFMnKc4f4ra|J7uQ;xk9e!A2nDj*P5RzV+ZTxI`i|!
50361 z24e2_7HMeBhE`QVD<-u2WHzi%-QFz?shN<94XGGgWffZ`YbzJlr+$m4%ds7==Ho(r
50363 zTBx1spgN^4soUx)#PtNIgI1Ufb785eUpB)YI2vno@-yzMyUfq|en{Nc$8`kOt605w
50368 zY~)Wr8`=7g-wQusPva--WBg3#A#Dv%-iLZy-_EPoO?~kyT&Xu+_`8Hv#%Fv|DG@#^
50369 z|4zq{+%r&IIpxXuV>6goDR&IXJrm`lekp%!lZFE3Nid5-;qgD8y;c6g-t;pMguBSv
50374 z`s8CryDJHdBxOKYd5vhZm>8}Qjn2>h45f$7L6*>z>>;Vv!=zdd@eHne-CW{^!rr6x
50375 z<42V?k*bHY)!Iaw*~KruwNzgB_0zP8W_~dy`ZFBC{ww3h^6Jw3Kj=92^e@uv=P-`_
50377 zHT!E$)Lg8&UGt=<v#;c#TtjYLv93JVnje#&l5Y>cE-CLgKejyXU8pUz6egisGI~q?
50378 zEKc{M?-_btp}Vs!K6eP);lCT)J-C08^9p|!rwsag<W^dj^kl!EW|vvjudDJjm;qst
50380 z_!N%AMYsbmbf6pbSUpY8*UNQJc;3Wk`bv1pKrz-5?lQGJwm!Bib~tu6b|dyAuKT_d
50382 z$<)x)xYW$>6rs(jPs`_5r0%9(1ch9CZduS6p29jm=nQ&-t--$FSa2@55j+fDSI%Kg
50383 zPtQ-v&&e;zcjY(b_oNr3SESdccck~HPoyuVZ>OJRbfzxTnwgxLmsy(W&L7R6&0o)K
50385 z5se7#-Tb(AFYO2TIo?vP&2PhEPWx7C`!z_9ay_oKj$X;=a6M-A@*4cGeBZ&{kDKa+
50388 ze|b-G^F%as<X=S?rx%A^>-ZO!S77u)6}>p@TF1XwuSQ|J`u$7G6%A|si)VIdX^8ym
50389 zmj}0%!1>n?ZTFR@{-t_xSl7R_-ojxc|I+%9hPD31dZQERG2`^&uwDJs4{iO6=LTs_
50390 zV*RU8Y&5jpw_g*6Lt6jh`kRKfXHxrmp^9D_*7_IQtBDO!{-y658rJ4tKeXQypeJE)
50391 zr{3Vxz-_C*pP|DH_XD~e-In>i2YR9ge}WGli}}FO?Vd5?w(URY*X_?gVupJmKXi0k
50393 zyPwzLpQhoK7ytYkdg_LM-g=jCYX(;mGu(S~eT#dsSkmvmxqVH1*6-(^1@ESce_AVM
50395 zPUEb8&Q7(HDe>62O^wJ3zfJ1)-|3hEFp`u3VYYoi;{+y7AaMc{Coplkl7EL;d_6Sr
50397 z?3cpx_&5|Wp)m8$th2iDS2{lPPjv6;m%?9+;86Z)b*@E{*o|lVefD>p?T1%7qZ{-%
50399 zM}EgNlE+-4ev6xKR2t9r<KB&p9je3*Oze2JA2T-xSX$9XXZtC&vE$kPN)C=lPhTk4
50405 zJJn%zPTf*ZAPz%e9L$0x&}~|N2jLW4g$M9j*Xl8PnqC;5X1`Y-*B49+v3#0QF*YhT
50406 zF*Yl<D7G@TKDHy=4d-I)RyfyO8*lA@-+W%%&oV#^&w$}Jie*@m&Vl9FP?`y)5ut6|
50408 zp_FT9yB@{!0>E;sg-;hvEa5oqF}UfX84YwUgNsd8;lOgMg-;ji5sus1i%S>$EIj>5
50409 zPKw8^RW}yPa9xgT{4Phg|2-lNg;})|?(yg+{|@;4GwE?nj{6<1-TufiX83K=?WKlg
50410 zxZhEpVfj0ZIL35pjQC>2@rx11pYMp{NHH_~W+)nMyu`1|l!xV+zP-KsR$s<5@%ngc
50411 zd{TT)d{KOrDDST9kH2A3DR-CwBMFQoWk6U(lfO5UPpl0t14a@UNy>n*iY6d7;P0L=
50413 z&K?u)VX;bmqIT(-x<fD5y?VReuTPp5^(l2(-Br)aX9(*{eeLDiSW9dYjD;yM50=3?
50415 zp_8wuG#;tV3T~{FQX4xSE6sXs4L3(w=H@9&qmmVop1v69h-x*;jkD6QZpp?PxHP7@
50417 z+8fv1wC1Muwk1Dql-8}|ZJw}%zE|A()RhEAk}~{W!F9UL{dklXGhC<J`V^1SQc27z
50422 zo>-Jvo!FGvn>dlUn7EU8p3Ehik`t42lFO3olG~C8lBbhb`_6c8O-)J7??2=HeClTE
50423 zNe~Yjf^osjU{TN&Yzp=SM}zaht>9TYnQlmrPtQ&-PIslZr1z&!rZ1=OrC((VndZ!-
50427 zTq0zc@_w7AfZC~*HnATrdh27V7<n6(ww3{D=yCF+-{J!zZ^L3<&ZYRdAgmQJt%StS
50428 z8-=BQ(5zlcD<L_(9IyBh5WyqdiiC4h!P1`oRN(p$nD_Ljf~&!%f~6nzr-CnUQ^DmQ
50432 z@-;K&l{X2em(of|PA|u!HV!UnlvYA=Z$6Gk{>60|rXTkEm)2pFf7tI|{EnbB@-KZy
50434 zZ}B;o`x?>L;HIuiqtvB2m*cj*&*gIe-J`4MrM#!#zjPMXr#6>!bH|w5Tu#qM!8Gy%
50435 zt))30rJHM+O*ect3bo6o8`i5?dolf}-@nve%I&C8`M2_aQEv`2JaX05|DMB=m;qr?
50437 z@eUohSMK-IKX9z@XRI-^Z!y|a_fs1)TSNLY@R$K%wyyF$iy07RYfs<XR1z~hZt;O|
50439 zR`v5OmBb8>Fm-#ire#2w5~Ia<*(RTwlED5`s_*~h^~&XW_^*gB)=gB_O*H)D_d+;2
50440 zTOODFipcld?X7eWNzvMOVo#SiBd&<M#$R=!#n>?~JjG{|*e#BT)8;S!-p1UiIqoTK
50441 zE>%eOAMVr~dqNMMtH-A~jS{2fO=vUug8c`xoc#X9>id66tMA*sNUgv3j83J_U}j}V
50443 z*}t8>$$cin+By*BH>-xJLYe={-fT8+gK=V_m~6Z{%jB#1CNC`!onoa}1Ak~j{UKa8
50450 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/meson.build b/src/third_party…
50452 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/meson.build
50453 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/meson.build
50454 @@ -1,4 +1,4 @@
50455 -in_house_tests_base = [
50457 'aat-morx.tests',
50458 'aat-trak.tests',
50459 'arabic-fallback-shaping.tests',
50460 @@ -13,12 +13,15 @@ in_house_tests_base = [
50462 'color-fonts.tests',
50463 'context-matching.tests',
50465 'cursive-positioning.tests',
50466 'default-ignorables.tests',
50470 'emoji-clusters.tests',
50471 'fallback-positioning.tests',
50472 + 'glyph-props-no-gdef.tests',
50473 'hangul-jamo.tests',
50475 'indic-consonant-with-stacker.tests',
50476 @@ -45,6 +48,7 @@ in_house_tests_base = [
50477 'myanmar-misc.tests',
50478 'myanmar-syllable.tests',
50479 'myanmar-zawgyi.tests',
50480 + 'nested-mark-filtering-sets.tests',
50481 'none-directional.tests',
50482 'positioning-features.tests',
50484 @@ -57,6 +61,8 @@ in_house_tests_base = [
50485 'tibetan-contractions-2.tests',
50486 'tibetan-vowels.tests',
50487 'tt-kern-gpos.tests',
50489 + 'unsafe-to-concat.tests',
50490 'use-indic3.tests',
50491 'use-marchen.tests',
50492 'use-syllable.tests',
50493 @@ -67,15 +73,3 @@ in_house_tests_base = [
50495 'zero-width-marks.tests',
50497 -
50498 -in_house_tests_coretext = [
50499 - 'coretext.tests',
50500 -]
50501 -
50502 -in_house_tests_uniscribe = [
50503 - 'uniscribe.tests',
50504 -]
50505 -
50506 -in_house_tests_directwrite = [
50507 - 'directwrite.tests',
50508 -]
50509 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/collections.tests b/src…
50511 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/collections.tests
50512 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/collections.tests
50513 @@ -1,6 +1,6 @@
50514 …../fonts/DFONT.dfont;--face-index=0 --font-funcs=ot;U+2026,U+0020,U+002E;[ellipsis=0+723|space=1+2…
50515 -../fonts/DFONT.dfont;--face-index=1 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+1000|gid0=1+1000|…
50516 -../fonts/DFONT.dfont;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+1000|gid0=1+1000|…
50517 +../fonts/DFONT.dfont;--face-index=1 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+500|gid0=1+500|gi…
50518 +../fonts/DFONT.dfont;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+500|gid0=1+500|gi…
50519 …../fonts/TTC.ttc;--face-index=0 --font-funcs=ot;U+2026,U+0020,U+002E;[ellipsis=0+723|space=1+250|p…
50520 …../fonts/TTC.ttc;--face-index=1 --font-funcs=ot;U+2026,U+0020,U+002E;[ellipsis=0+723|space=1+250|p…
50521 -../fonts/TTC.ttc;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+1000|gid0=1+1000|gid0…
50522 +../fonts/TTC.ttc;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+500|gid0=1+500|gid0=2…
50523--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/context-matching.tests b/sr…
50525 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/context-matching.tests
50526 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/context-matching.tests
50527 @@ -1,3 +1,4 @@
50532--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/glyph-props-no-gdef.tests b…
50535 --- /dev/null
50536 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/glyph-props-no-gdef.tests
50537 @@ -0,0 +1 @@
50538 +../fonts/FallbackPlus-Javanese-no-GDEF.otf;;U+A995,U+A9BF;[glyph01=0+600|uniA995=0+600]
50539--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-decompose.tests b/src…
50541 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-decompose.tests
50542 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-decompose.tests
50543 @@ -1 +1 @@
50544 -../fonts/932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf;--font-funcs=ot;U+09DC,U+0020,U+09DD,U+0020,…
50545 +../fonts/932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf;--font-funcs=ot;U+09DC,U+0020,U+09DD,U+0020,…
50546--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-feature-order.tests b…
50549 --- /dev/null
50550 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-feature-order.tests
50551 @@ -0,0 +1 @@
50552 +../fonts/190a621e48d4af1fffd8144bd41d2027e9a32fbf.ttf;--features=ss03;U+0B95,U+0BC1;[uni0B95.ss03=…
50553 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/macos.tests b/src/third…
50555 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/macos.tests
50556 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/macos.tests
50557 @@ -141,3 +141,6 @@
50560 …/System/Library/Fonts/Apple Color Emoji.ttc@6b0fa4926a1c8a32267e93e18c5eff21558de83a;--font-funcs …
50563 …6ac4564651899da0b37d310d980db4de967d6;--font-funcs ot;1FAF1,1F3FF,200D,1FAF2,1F3FC;[u1FAF1.5.L=0+8…
50564--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/nested-mark-filtering-sets.…
50567 --- /dev/null
50568 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/nested-mark-filtering-sets.tes…
50569 @@ -0,0 +1,4 @@
50570 …NotoNastaliqUrdu-Regular.ttf;;U+0628,U+0628,U+6D2;[OneDotBelowYB=2@764,-183+0|YBc1=2@764,-282+0|Ye…
50571-Regular.ttf;;U+0628,U+0628,U+0628,U+6D2;[OneDotBelowYB=3@764,-183+0|YBc1=3@764,-282+0|OneDotBelow…
50572-Regular.ttf;;U+0628,U+0628,U+0628,U+0628,U+6D2;[OneDotBelowYB=4@659,-192+0|YBc1=4@659,-291+0|OneD…
50573-Regular.ttf;;U+0628,U+0628,U+0628,U+0628,U+0628,U+6D2;[OneDotBelowYB=5@659,-192+0|YBc1=5@659,-291…
50574 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/spaces.tests b/src/thir…
50576 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/spaces.tests
50577 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/spaces.tests
50578 @@ -15,20 +15,20 @@
50579 ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot;U+202F;[gid1=0+280]
50580 ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot;U+205F;[gid1=0+455]
50581 ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot;U+3000;[gid1=0+2048]
50582 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+0020;[gid1…
50583 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+00A0;[gid1…
50584 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+1680;[gid0…
50585 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2000;[gid1…
50586 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2001;[gid1…
50587 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2002;[gid1…
50588 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2003;[gid1…
50589 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2004;[gid1…
50590 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2005;[gid1…
50591 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2006;[gid1…
50592 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2007;[gid1…
50593 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2008;[gid1…
50594 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2009;[gid1…
50595 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+200A;[gid1…
50596 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+202F;[gid1…
50597 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+205F;[gid1…
50598 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+3000;[gid1…
50599 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+0020;[gid1=0@-280,
50600 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+00A0;[gid1=0@-280,
50601 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+1680;[gid0=0@-346,
50602 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2000;[gid1=0@-280,
50603 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2001;[gid1=0@-280,
50604 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2002;[gid1=0@-280,
50605 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2003;[gid1=0@-280,
50606 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2004;[gid1=0@-280,
50607 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2005;[gid1=0@-280,
50608 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2006;[gid1=0@-280,
50609 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2007;[gid1=0@-280,
50610 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2008;[gid1=0@-280,
50611 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2009;[gid1=0@-280,
50612 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+200A;[gid1=0@-280,
50613 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+202F;[gid1=0@-280,
50614 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+205F;[gid1=0@-280,
50615 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+3000;[gid1=0@-280,
50616--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/unsafe-to-concat.tests b/sr…
50619 --- /dev/null
50620 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/unsafe-to-concat.tests
50621 @@ -0,0 +1 @@
50622 +../fonts/34da9aab7bee86c4dfc3b85e423435822fdf4b62.ttf;--show-flags --unsafe-to-concat;U+0628,U+200…
50623--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use-syllable.tests b/src/th…
50625 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use-syllable.tests
50626 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use-syllable.tests
50627 @@ -3,6 +3,7 @@
50628 …11f09b70890289c8fd.ttf;;U+AA00,U+AA35,U+AA33;[a_cham=0+1121|laMedial_cham=0@-32,0+0|yaMedial_cham=…
50630 …../fonts/074a5ae6b19de8f29772fdd5df2d3d833f81f5e6.ttf;--no-glyph-names;U+11320,U+20F0,U+11367;[3=0…
50632 …../fonts/373e67bf41ca264e260a9716162b71a23549e885.ttf;--no-glyph-names;U+A8AC,U+A8B4,U+A8B5;[2=0+3…
50633 …../fonts/59a585a63b3df608fbeef00956c8c108deec7de6.ttf;--no-glyph-names;U+1BC7,U+1BEA,U+1BF3;[1=0+7…
50635 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use.tests b/src/third_p…
50637 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use.tests
50638 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use.tests
50639 @@ -9,6 +9,7 @@
50641 …dv.alt=0+208|Candrabindu=0@17,-8+0|E_dv.alt=5+275|Ga.icd=5+367|Gha.diag=5@100,0+386|AU_dv_part.alt…
50647 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/vertical.tests b/src/th…
50649 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/vertical.tests
50650 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/vertical.tests
50651 @@ -1,4 +1,4 @@
50652 …1826b9643e3f124d865d617ae609db6a2ce203.ttf;--direction=t --font-funcs=ft;U+300C;[uni300C.vert=0@-5…
50653 …57789a22cb4241107746fd3d0.ttf;--direction=t --font-funcs=ft;U+0041,U+0042;[gid1=0@-654,-2128+0,-27…
50654 -../fonts/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf;--direction=t --font-funcs=ot;U+0041,U+0042;…
50655 …57789a22cb4241107746fd3d0.ttf;--direction=t --font-funcs=ot;U+0041,U+0042;[gid1=0@-654,-2128+0,-27…
50656 …s/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf;--direction=t --font-funcs=ot;U+FF38;[gid2=0@-500,-
50657 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/meson.build b/src/third_party/harfbuzz-ng/s…
50659 --- a/src/third_party/harfbuzz-ng/src/test/shape/meson.build
50660 +++ b/src/third_party/harfbuzz-ng/src/test/shape/meson.build
50661 @@ -3,60 +3,52 @@ subdir('data/in-house') # in_house_tests
50663 subdir('data/text-rendering-tests') # text_rendering_tests
50665 -shaping_run_tests_py = find_program('run-tests.py')
50666 +shape_run_tests_py = find_program('run-tests.py')
50670 -
50671 -in_house_tests = in_house_tests_base
50672 -if conf.get('HAVE_CORETEXT', 0) == 1
50673 - in_house_tests += in_house_tests_coretext
50674 -endif
50675 -if conf.get('HAVE_UNISCRIBE', 0) == 1
50676 - in_house_tests += in_house_tests_uniscribe
50677 -endif
50678 -if conf.get('HAVE_DIRECTWRITE', 0) == 1
50679 - in_house_tests += in_house_tests_directwrite
50680 -endif
50688 - test(test_name, shaping_run_tests_py,
50692 meson.current_source_dir() / 'data' / 'in-house' / 'tests' / file_name,
50696 - suite: ['shaping', 'in-house'],
50697 + suite: ['shape', 'in-house'],
50704 - test(test_name, shaping_run_tests_py,
50712 - suite: ['shaping', 'aots'],
50720 - test(test_name, shaping_run_tests_py,
50724 meson.current_source_dir() / 'data' / 'text-rendering-tests' / 'tests' / file_name,
50728 - suite: ['shaping', 'text-rendering-tests'],
50729 + suite: ['shape', 'text-rendering-tests'],
50732 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/run-tests.py b/src/third_party/harfbuzz-ng/…
50734 --- a/src/third_party/harfbuzz-ng/src/test/shape/run-tests.py
50735 +++ b/src/third_party/harfbuzz-ng/src/test/shape/run-tests.py
50736 @@ -11,7 +11,10 @@ def shape_cmd(command):
50740 -have_freetype = bool(int(os.getenv ('HAVE_FREETYPE', '1')))
50746 if not args or args[0].find('hb-shape') == -1 or not os.path.exists (args[0]):
50747 sys.exit ("""First argument does not seem to point to usable hb-shape.""")
50748 @@ -91,6 +94,18 @@ for filename in args:
50752 + if "--shaper=coretext" in options and not have_coretext:
50756 + if "--shaper=directwrite" in options and not have_directwrite:
50760 + if "--shaper=uniscribe" in options and not have_uniscribe:
50764 if "--font-funcs=ot" in options or not have_freetype:
50765 …glyphs1 = shape_cmd ([fontfile, "--font-funcs=ot"] + extra_options + ["--unicodes", unicodes] + op…
50767--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/Roboto-Regular.default…
50772 zc$}qIc~nzZ8vpKlFE0xbUP2(4RCyr+B0-Qqu#_rVz^w{`OTvhN><T6dxU}Pp-IPh8
50773 zbaAYs-DWvG7JBMSx=659=d`vRXWFW@J>#6(Y0sHyt>bjM&S|YA^WB#Of_DCxGmrDW
50776 zyxi8<?Ew`eqHe=}ZCmHgR!3X!N&vMA-;ws_t{sWS#B}VRi~T9>Esf3BHlD-%8Hye4
50780 zKl0!VWoJ-}@mX@!99*i-i>xv6#LGOVPeK@7`K4oVD{SNN)xs3H4`fMqHlQSOi}e7s
50783 z;DsG<9wV~?YGE%lz#1rEO5kPi!vpXd<sEDQ19J#O)&g-{F&MZ35EK#^_!LMYPlJv>
50784 z3Gw^|IiW~~+k=@_04NSB?C4TzxMj~mD-#JyY}_ZFMU|C{pcEQm6AwXvR^>qk!$qE?
50785 zeOxi_C*of?k{Vc#^}v-?+`bByHtpQn2^DQyTQ)&OXJgN1Fu@GqDykQVaMSY2+flAq
50786 zum)vy<#Lo*1)=c1avNsAMKIFq>}YEQgDm6688Q*JoIH|Xy%JoBwhZQ*$CtruOhI-$
50787 zwsciK!ZQ!%MR=NIo+g>6DZ-N*=YgwkYT3FORFOUDUg2<U#8nuWEsw3joGGH!{9hj;
50789 z%O!a~CDskD!QmZ%d07|H=}D-H=nSsEFru?Db}mL&KnBJ%tn)NaPz`RpIo;5MZw{gs
50790 zXoFtp#0uGpHQIu*8#=IWGuA~uMraP$p$Kk~Q68eA>*mC+cN@MQ*ooE-9MO)p=&U)Y
50794 z%$synODHYKnkLT`suqM<fnOh|L<hw3T^%W9{`n@-?XRce=TzjHNRPjg3O5ylR2-oq
50796 zQdc>BggoFHA)))Ed#Cx-Z2kHiiP%K3yrWDa4LK5HlgKPfj>Ou;3W-gxsCHUiqF3}T
50797 zY4(a0VtZq=#HGtEcC>h1xuOI$&JL8ToEE9nWgb^sT(06AiKEMK@-ki*F0e7Oz(#oi
50798 zoIjQ$DQwF`iOr~Tu5?Pf%gj<~nagakh~?7BDyMX^%xrPFawLA7qZp2-%vNcW_*prU
50801 z;^Jc8hydd@>g5!hRN6NpLao!61!d*{WU-gZTse5|yFypk%iIe5<(vsW^&7Kh>GU^C
50805 z9{XJ|{+CW+pmy<xZ>-%w@6i6x6;9;oSHe_i_3KS$N>49HEc&d<m7UX~bK0oeECM#_
50808 z`Gx7JxOq5J0umFVlvM~+$kGQfq*T;JNf0Chm6Hk5_}b%<B<KnwVYg<;S-_Ap^P2Xl
50811 zw3e7cqX8paq@!-sUpaBy9T-x(Uw`?ZfdhM_l{L@y9bhuPC%Jbs1y`Y`j}&~T969p@
50812 z`SMriDEm5O|20NA3FF-9SIKdv0ZfjZ3z?wl`lDb{0Uc+`ec^=Z9TQXM)5fp`!6(EV
50815 z*NyCn7+dO5w{!?}*ZW9=P9_zVZ%Pa#f|Pg$3oLIAW}y&IGCE>Zh6~A_WYv8-JUlv7
50817 z`7B039D+DQ1jyG`xPGXo{sd#3d^rg|T}%p+<W72DO`BX*X*X6?kzHq?7gS~uO-W%P
50818 zEwG}A`f9lR``6v-XTCqz`_U~8+n?S0sQcvce~j+md!%~x&|WOGF_PWC<A;yVebv0y
50819 z{m21t-ENZq_0h9WlFtvF!`$@aN8VrYtmt5=U!zZyb0dV$2!oz5Q6Ciu6wxyhk074<
50821 zc=-!+0E?wv@tXV{IN#4tiKlDxf<z)2m_%s2Di}f1oRKuSK3)-fspF<>fg?ZJz^7%9
50822 z)q%j9MV)i!b{28PBsFK=yxJ04l%W&BWyFO$YVq3^?=)iy-4U-Ti0pXdWsGU|sbW&5
50823 z6{MsyQc|u@h~1s&1WQ_Gp`0%rODi$VV_ER;w-$&6^A;o)6*`cPgDd`FN$^emKGkhC
50826 z^6k#xy*ym2-%gr?C1YO9Tq;)4Tk;8?3itU{;omj9vy5l{r<0z7AmxSxQ;>`x`TxHI
50827 zXjPmZ9)9N)&v5FlE!#UTUSyVxj^bUg?#0u$K9;{}(|WuM@c&qb-dTJ;dX$M@>rcW2
50834--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/Roboto-Regular.drop-hi…
50846 z!jI8)7)f-!zDN2jJX<g`edUM?0pln12E<0>i^XDF68>}~TgpJ|l3y!^=3Sr>Cf)qW
50847 z8FhkKzhWi7T^ber%A8|rfoe|pA-SDucsVulR%+)tG@m~~6?`%+koHj?Y?Zv8+Sys^
50848 zU_Zrn^JMDaO_ZU0iHyp86?+yLBf}<x6YewOt9+OiNr?ak=jhr~SX5L<cao196w-(m
50851 zbJv5Nf>od@37$EWpWr!C=Q&d6IWobMU*!SRhT7&PG9`QpU-5L!0E$GzbOsJ|i$TwU
50852 zLGKnBt4a4~)K9ZSMDaC#hU*=}5DnMy#-gKzT|sAYl4AqJF$@?+A;WSCmQ%2tg5?zM
50853 z7^z$!a5LnEG(RDWt}IT-640k6WO<OC50VXJN6zB1BI-aT6vWpiNMVfe&}ylUmQny6
50855 zx6(9ts0O~3roa-wT5|PPi>}pT6?~RquE9x(8e;?UX+8_}7)z9C&sJ<%cDHMc)9H5E
50856 zZCOgH&E@ep9ck&RB|Y_KhsW!-SyL@(^4MWR9(!xcLB@W1JG`WNRZq*_WxZc=yLR2&
50859 z`&x?{J~-5+-P&~swVaQ51`y9pM1rm}8OWr%6H(agdQgZ!%CBB$+HP33x9OO6Iec{8
50860 zyJt<?O`ZOZ&6}QBQNG}f8kWr{<K^GmzS-tq{n;K{Zyz{U0Q(F$4@Jk*a94`ckq*W-
50861 zku%AiZUJAfD)1`?cJB&Cy3D~(-~T1Dan+95rCZxJO7=h4#K$GqB?`AO*G1!dU%brD
50864 zKGKcxgg8@e>dEfzo~}FZ7&6gaUUl-M+}#=6wo6@a_E$A`UMUkiE44ZDIq)2T?@}Uu
50865 zuT!;%mdW-CqHecHh4)$}Do=m-Y0&)UAN@;D++MkS>*@``J-dGHS-*OFNm<uwq$JA5
50869 zJ%I4=NtdT-`%~7L?keTIEaTQYbTlUX^CU(8FJwAv)ytfW*;r3F5~*ghzt<jQUms-`
50870 zR%%ZwbfscBtI_hJYXtKQ#C}k()`<VBmx!mYyZiGGLfsjyOP2eO9h0W@^q_9@-|3tD
50877--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/SourceSerifVariable-Ro…
50882 zc$}?S2XGtLnSO6~v5Q_8009CZ2oL~^zzPr~MX{+%l&EIfC)<i-S;eusbaryd+z7Ii
50885 zq231l&u{8(-xdG&kuSq!Eg8QJ>Sv!h^(;cn15j`7+Fe!q@V1YygL)6t_wU}*zUTbF
50889 z)XB5wvR6<o^gl%U5y4K2o<?%?U3f@snOH!S%@wnk$(%nzkDwo-eq4$l#Xn_=nJ1Z_
50890 zFe$d3-OT=sYv%|G#5BsxPZ5&d$r`eD>GSW{he(iX!AN)!y@>9<+H0cKZsuRDN6dfk
50892 z-0COq>%Vy9)vO`&Q|a^UTTtcc4vX_ZXn2cf&z(8B)TX4|2Am<%5~9-KymUAtWzM4=
50896 z0!#z5F+qq$XI6-%r#tS*<7Zz)N-hDfi^_orhX<<is9ZuTJ5UsU<0zSwjH7$vJrPBt
50897 zQNW~Bj!^Pl=o4KqQczB)f%?WG89-YeWKw`V)le5;lnNw~!+J_2gV{On3FIZzpxlZ`
50900 z>yfc}|B-`jK8m<?8#?!(rh^|pa||^dIdkZ7)O75?xf95WN)X$=cfAvt*6!K^e9x|}
50901 zz#%VWb9O|;4@r&2z_G`U96%!ErehTA#V7=<z$!e-`7A-HguYq8N)2xn^vj^cz!(j*
50902 z@=znQ_*?|j89en}3_Xi-SEH7^+*T^LmC9|+%e_)A{P>|WCt#I)Mu0vU#ll82A46lE
50903 zL7zvE?a>T#4*I2e?;%-iC>uq6`Fiilh|5M$4}C|Mnl2*;*wlf3y<!-_`uY60pXA$q
50904 zNbBS1-{AEv^j?I)KM4|Ya6N*h?L28Mq})omh4KQ*&6JxcH&QNAZlGLGxsGxz<(l(|
50909 z-jFXds2*$cWfsXXpD%N06+}v|ELq+c`m4e7b7cYY@;CBjDcmuR=F2ibet*6!N9B+=
50910 zb7cisXH~weM8pGjqm$@wA)_8dhoF22N{^w#Xcx2|hg0wb@}mxP3`z&l<10!ZWY$R-
50911 z{piyB{b!KY<IwuZ(u{Z3-*1Io(0T;M5Gl`mfbpHsas)6tx1#j^v(}@J!MHO}Tb}h^
50912 zZTG|MKfP)<mGd#+kATdFs0NGsbkk91q4y-zoTvs>g57K2Sq*2+?xmL1u>MKd;UFFN
50913 z1Z}T}9`Xd?JYG%LdmL6HqYgvsF^Xv|?I+`c@N1-NFYnL}IjaM8LFvOwo}1kT^Vk0g
50914 zi#S)T=6u(BKY+GcDop@N{-s(7O6}kaCt+M}jgJFH=cuQgh5BaLpCEAtoud2z?Ryk@
50917 z-7a1T2|Vw1`ReQIYE8!6z>t~eE3F&X8iNfM*EX}iTvg@L+kH+^ZFf{vJ3?LfOj)g=
50918 zyjbVAm0E=Yv7A*O-MXz))T#7RQD1h-R$E;l)vCD?p+KfDaj8pPa;r&Wv^#u;*5-!F
50919 zftsKwD2lpG=F-NFu6;eOLZ#efHxV5y*;z)%3?Lm~gX)4Ip@j+Rd_j=gXx0fK&;i5-
50920 zsd*tMu*oPA>Ak*?$>cazj4|H*6*b4oFP5zFY--e3HhN^M_SXfw>*^nFs@z*D^L4q!
50921 zkg0QL5&nhT?U#P`MOEhV-vr9{v>!OE_ImUk%}pn^Z9Cf<+^(%HC;7etF#Qc+S^^c=
50923 z%l|-I>;3*xud-$Bnp2(IPdB@oJRYmz0gp<Vvm)aK1RNx1hW^NY0yP~kF&hP+E)=8y
50924 z>7Memm3o_9GJ9v!nuqE_2iDjFbyj&ro88mq!)*t@E@!*HuI9$p-dE;XRan>5dSY|u
50925 znKu0@pS9dkc7IyymLJ9*Rf@urein2m{`6bWy_B5r6ltM22-4&o=iOkmFjybhUCXhV
50926 z&rOz??R7=Yw(`;~wbku~=ED8!)*cL%wC={k{_bX-U0&`m+G~n@_irRn6zPMlt50+`
50927 z?pp`9SNNtv`1{NxoNhAmEgLc$i-RFUozX1>-QW@6#uSCzwmx6TobzKfV+M)L?)v&4
50929 zbRRBpTMO(4i$>)U9h}r*6`LPeb2sqOKmhLC$dlFL2|%P0Zn9e-?;tZp!%gG}Qu7cn
50930 zNDQrT%@xgT;B8Lp4Y~MSz`-JB(9<2;-CY@aLS<EWeWi6KvuJi-tl!|OKfZI*Llq63
50933 z3URm?dG25xgr%Vl<PG`=3;7m9ba5;`-QEJR*bR@*Z>g-Y8SDJ!wOh}Mj}HCp(V-Jg
50936 z-zUkTsx0J?xtrymz6kpj6A=KI?2ofN>ZLo@y?sA+#a?QLrc-Y)=c8sJm<y5?W^wnm
50940 z+bwSshNs_a5)#SGCWvGYs(^gnfi^)-hYU``7|y2Lk&_Q&^NJ7-hQPVlV6l;Xry=uw
50941 z=NJsJEzuR(+`G#<_Hq`{U{?psW$VlaGl}c(o)$lG3Aa>JJMW-&#{Y6cd=vtign8qh
50942 z7K_sos?-`q!$z6aEUvkq203vz{M|qxvzK^5ZD5m^b6e#Xo+e&L`p9jb==28YR04P1
50943 zO1LvLz^S~f)w`0@due6(&>1bK?>lo@yLpvbsae+7<X(~Zq;@(uC}8Ju;xkvOm0F%-
50944 zz|c${i<K#laazUI?||Y9A2>fs2{!DLOW5o|d(l308g4fq5+C-j=p*lonI1FLm7Ik+
50945 zSF#!m4i&i4dXs1(NUd-s2;6tM()+=;_b+w1+`oX3FUfkOrQeQClz$yd@IL%9<72+e
50946 zZe(BJWL%i*=Vm0I=DUP7FQPVdo`LV-FTltz!u(c+!k|vEJjZb;HZp#<r>E!E$c(~j
50947 z)v;!i8opE&GIg=T;V{YBNZ*~`U%xdntCTBK)8nH+)3LdECK-u^Q95jkLkz?hV)HSX
50948 zAZ2+zH9dOc#*Kj}i&7c|cfp-Wr?Ud5&>M|LNo<Bw7Zw)sl2j@sSmcp=_wL=kJs3@g
50952 zTgwB1fL(>-DV|465;NIsmXk`Pyuix@Bnh9#k%5c0j)pR+RJxE(^7rnIEXed$tJNf$
50953 zMFpS`U%13YZ{6s-7lv=>noMT&4y9yrb0?t?j^Dd__3BtEGR4ECqN1&1!=_D}+M1dj
50957 z>wKa*GApaBZbqJPi6H0-3|3EhdAVH?nE?^wNnW7=k)`PcP#{sJSIPup3Mw(=Rj>x!
50960 z$z-<Ls)p?k^F>7ieSIKbV(a$p+fiw_f;V}}%E}rl*BC*GSb|sSL5a-pn<H-y4-b#U
50961 z9a@wbcNO(h8(mnmz+TYjLGo`rv2<c)W@Z*>OO4y@cBoUs*REW-(l;?W8c$A*&+>XL
50963 z{oU^_U%q@RF1NHj_~3)x>+8yjEM+A|jW7?|&0sasg-f+sW^Qgi5sQ({Og0e$M5Wh>
50966 zz$}6L{Qg+1UtusPu3nv-j9%>-8;)SLxw5*p%xRYMrK`*RH8rd1n;V+jfjZi+{^2T8
50967 zfUw%IPpeg_qEQr$s#J-@^w7w}#6<tqm!Es?xy#ezQ`3O{%tT^-dM@=DJb`j?|0B@t
50968 zM<i294K|z2Vb&?p!h%GhP^i;0<9&U7^PGl>!n`;u(;HMOm3b~Y-rL(drBVqflbVl2
50969 zBJ-&%ma5XancKH-&oj#6;$qqC<mBWmN`za7hN283kQ4;r#-;i6<m~uR|6Ks**4>e@
50970 zsc15p%y5FvBxPmtOnfLAi-XHXA%Ue978bHttI<kQvx9?!({WZSnV%O$Ft?;NGdDCe
50971 z6jwT!-q&7x4T5_3?r;n;yp)?#m)F$PIPv)Hn-B<hU%omNkH;f@eYYoMo*?9~dar!)
50972 zPM=g~Yiw+^s}e-u=K4^G1ZgYWkMVRr(AeBUR$#<pv(Z%*Y-|OpFZUK2^m@HfuTV&1
50974 z+3dx-*jrOmmm`df5oIjvaHL}~y<WPUeF>3ljAUUJa**<Aoe?h6-eTqa{O#LgDJInq
50976 zj0(amWK`GFQaggAcCYv5%`iWsGK0$6Fhdw<k8**I@iR-_v<)<Eb3(RF%I$W$JUI@B
50977 z<oJj+N47$ZW_);rP<&=arD72uR`~seYBV)9h17-qOHxK!)mrb1CDk-+aHKzsr;uoX
50980 z0HY4&<a8<%v1Do<{P^y*-@WwGORx5fMBeD58qTGnAiX50zz`%@VT8lOc<tJ?o@-N6
50982 z^u)A9E-iRtfxB_nu3ar<g0sQ}YB-C%t8{R_=6&wLeAZ>LNvRB%NJa#qV03hR*`de@
50983 zpB*1Jo8`T1B2l1x3uVK4OOZO2f<Ld6_z_~$(O6g-i>6udEHDTME=KHPoF)f(`KDbP
50984 z;GkankWRPkK6mm*d(h)ynBg71&6@|^r_k20o>y{klBrbF^TcW7N;ESQmd-@d5^y8%
50985 zCk`y-f|R=u2rqdP`M(_U{~cj)lndYpVN@6<2Uo85v(WollDQzu=F+iT389lo^!@j*
50986 z|M&Md-n@5nVJ4o4&5h@BF(htC-_hvx>jjIXP>l4$`70-n9L<Am+3-_#nxr#~Oep~f
50987 zyz94hcX#jHZiWk;rNC-6UX(^4;!pwP^NZ3fV=53Ov83!0OInF+t&oj#Y5VHH+*DMo
50988 zD$*4e>6rLnZ#uAH-$UKo*VCL03BFkr6^gE|-!IbW=;{_AIXu(T*FD9>NDtD`RGyq0
50989 z=^un#&ae^4z0=B}G~~%RD@|RLl88hwCVEloFffU%M61bMVoB?TB^-YRNd4+<NJ$L_
50994 z-kc$LsY=ZyqPH4<{>xvzdhO<$Z_H25MQ3M5a#jGFf#qgqdV0h~5`=*_`zXPuOJr;e
50995 zV*UNBwCv}9y^#1|RvREh%{9*<!P8dV=vr0nHppUQ>h<@ZI)3yc-PBfK*=-(=&9;C4
50996 e-5mAZO(r|La)j|)^|iIg{l2zb4xqm{*8U%J^xc~P
51001--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/SourceSerifVariable-Ro…
51006 zc$}?S2XGtLnSO6~v5Q_8009CZ2oL~^zzPr~MX{+%l&EIfC)<i-S;eusbaryd+z7Ii
51009 zq231l&u{8(-xdG&kuSq!Eg8QJ>Sv!h^(;cn15j`7+Fe!q@V1YygL)6t_wU}*zUTbF
51013 z)XB5wvR6<o^gl%U5y4K2o<?%?U3f@snOH!S%@wnk$(%nzkDwo-eq4$l#Xn_=nJ1Z_
51014 zFe$d3-OT=sYv%|G#5BsxPZ5&d$r`eD>GSW{he(iX!AN)!y@>9<+H0cKZsuRDN6dfk
51016 z-0COq>%Vy9)vO`&Q|a^UTTtcc4vX_ZXn2cf&z(8B)TX4|2Am<%5~9-KymUAtWzM4=
51020 z0!#z5F+qq$XI6-%r#tS*<7Zz)N-hDfi^_orhX<<is9ZuTJ5UsU<0zSwjH7$vJrPBt
51021 zQNW~Bj!^Pl=o4KqQczB)f%?WG89-YeWKw`V)le5;lnNw~!+J_2gV{On3FIZzpxlZ`
51024 z>yfc}|B-`jK8m<?8#?!(rh^|pa||^dIdkZ7)O75?xf95WN)X$=cfAvt*6!K^e9x|}
51025 zz#%VWb9O|;4@r&2z_G`U96%!ErehTA#V7=<z$!e-`7A-HguYq8N)2xn^vj^cz!(j*
51026 z@=znQ_*?|j89en}3_Xi-SEH7^+*T^LmC9|+%e_)A{P>|WCt#I)Mu0vU#ll82A46lE
51027 zL7zvE?a>T#4*I2e?;%-iC>uq6`Fiilh|5M$4}C|Mnl2*;*wlf3y<!-_`uY60pXA$q
51028 zNbBS1-{AEv^j?I)KM4|Ya6N*h?L28Mq})omh4KQ*&6JxcH&QNAZlGLGxsGxz<(l(|
51033 z-jFXds2*$cWfsXXpD%N06+}v|ELq+c`m4e7b7cYY@;CBjDcmuR=F2ibet*6!N9B+=
51034 zb7cisXH~weM8pGjqm$@wA)_8dhoF22N{^w#Xcx2|hg0wb@}mxP3`z&l<10!ZWY$R-
51035 z{piyB{b!KY<IwuZ(u{Z3-*1Io(0T;M5Gl`mfbpHsas)6tx1#j^v(}@J!MHO}Tb}h^
51036 zZTG|MKfP)<mGd#+kATdFs0NGsbkk91q4y-zoTvs>g57K2Sq*2+?xmL1u>MKd;UFFN
51037 z1Z}T}9`Xd?JYG%LdmL6HqYgvsF^Xv|?I+`c@N1-NFYnL}IjaM8LFvOwo}1kT^Vk0g
51038 zi#S)T=6u(BKY+GcDop@N{-s(7O6}kaCt+M}jgJFH=cuQgh5BaLpCEAtoud2z?Ryk@
51041 z-7a1T2|Vw1`ReQIYE8!6z>t~eE3F&X8iNfM*EX}iTvg@L+kH+^ZFf{vJ3?LfOj)g=
51042 zyjbVAm0E=Yv7A*O-MXz))T#7RQD1h-R$E;l)vCD?p+KfDaj8pPa;r&Wv^#u;*5-!F
51043 zftsKwD2lpG=F-NFu6;eOLZ#efHxV5y*;z)%3?Lm~gX)4Ip@j+Rd_j=gXx0fK&;i5-
51044 zsd*tMu*oPA>Ak*?$>cazj4|H*6*b4oFP5zFY--e3HhN^M_SXfw>*^nFs@z*D^L4q!
51045 zkg0QL5&nhT?U#P`MOEhV-vr9{v>!OE_ImUk%}pn^Z9Cf<+^(%HC;7etF#Qc+S^^c=
51047 z%l|-I>;3*xud-$Bnp2(IPdB@oJRYmz0gp<Vvm)aK1RNx1hW^NY0yP~kF&hP+E)=8y
51048 z>7Memm3o_9GJ9v!nuqE_2iDjFbyj&ro88mq!)*t@E@!*HuI9$p-dE;XRan>5dSY|u
51049 znKu0@pS9dkc7IyymLJ9*Rf@urein2m{`6bWy_B5r6ltM22-4&o=iOkmFjybhUCXhV
51050 z&rOz??R7=Yw(`;~wbku~=ED8!)*cL%wC={k{_bX-U0&`m+G~n@_irRn6zPMlt50+`
51051 z?pp`9SNNtv`1{NxoNhAmEgLc$i-RFUozX1>-QW@6#uSCzwmx6TobzKfV+M)L?)v&4
51053 zbRRBpTMO(4i$>)U9h}r*6`LPeb2sqOKmhLC$dlFL2|%P0Zn9e-?;tZp!%gG}Qu7cn
51054 zNDQrT%@xgT;B8Lp4Y~MSz`-JB(9<2;-CY@aLS<EWeWi6KvuJi-tl!|OKfZI*Llq63
51057 z3URm?dG25xgr%Vl<PG`=3;7m9ba5;`-QEJR*bR@*Z>g-Y8SDJ!wOh}Mj}HCp(V-Jg
51060 z-zUkTsx0J?xtrymz6kpj6A=KI?2ofN>ZLo@y?sA+#a?QLrc-Y)=c8sJm<y5?W^wnm
51064 z+bwSshNs_a5)#SGCWvGYs(^gnfi^)-hYU``7|y2Lk&_Q&^NJ7-hQPVlV6l;Xry=uw
51065 z=NJsJEzuR(+`G#<_Hq`{U{?psW$VlaGl}c(o)$lG3Aa>JJMW-&#{Y6cd=vtign8qh
51066 z7K_sos?-`q!$z6aEUvkq203vz{M|qxvzK^5ZD5m^b6e#Xo+e&L`p9jb==28YR04P1
51067 zO1LvLz^S~f)w`0@due6(&>1bK?>lo@yLpvbsae+7<X(~Zq;@(uC}8Ju;xkvOm0F%-
51068 zz|c${i<K#laazUI?||Y9A2>fs2{!DLOW5o|d(l308g4fq5+C-j=p*lonI1FLm7Ik+
51069 zSF#!m4i&i4dXs1(NUd-s2;6tM()+=;_b+w1+`oX3FUfkOrQeQClz$yd@IL%9<72+e
51070 zZe(BJWL%i*=Vm0I=DUP7FQPVdo`LV-FTltz!u(c+!k|vEJjZb;HZp#<r>E!E$c(~j
51071 z)v;!i8opE&GIg=T;V{YBNZ*~`U%xdntCTBK)8nH+)3LdECK-u^Q95jkLkz?hV)HSX
51072 zAZ2+zH9dOc#*Kj}i&7c|cfp-Wr?Ud5&>M|LNo<Bw7Zw)sl2j@sSmcp=_wL=kJs3@g
51076 zTgwB1fL(>-DV|465;NIsmXk`Pyuix@Bnh9#k%5c0j)pR+RJxE(^7rnIEXed$tJNf$
51077 zMFpS`U%13YZ{6s-7lv=>noMT&4y9yrb0?t?j^Dd__3BtEGR4ECqN1&1!=_D}+M1dj
51081 z>wKa*GApaBZbqJPi6H0-3|3EhdAVH?nE?^wNnW7=k)`PcP#{sJSIPup3Mw(=Rj>x!
51084 z$z-<Ls)p?k^F>7ieSIKbV(a$p+fiw_f;V}}%E}rl*BC*GSb|sSL5a-pn<H-y4-b#U
51085 z9a@wbcNO(h8(mnmz+TYjLGo`rv2<c)W@Z*>OO4y@cBoUs*REW-(l;?W8c$A*&+>XL
51087 z{oU^_U%q@RF1NHj_~3)x>+8yjEM+A|jW7?|&0sasg-f+sW^Qgi5sQ({Og0e$M5Wh>
51090 zz$}6L{Qg+1UtusPu3nv-j9%>-8;)SLxw5*p%xRYMrK`*RH8rd1n;V+jfjZi+{^2T8
51091 zfUw%IPpeg_qEQr$s#J-@^w7w}#6<tqm!Es?xy#ezQ`3O{%tT^-dM@=DJb`j?|0B@t
51092 zM<i294K|z2Vb&?p!h%GhP^i;0<9&U7^PGl>!n`;u(;HMOm3b~Y-rL(drBVqflbVl2
51093 zBJ-&%ma5XancKH-&oj#6;$qqC<mBWmN`za7hN283kQ4;r#-;i6<m~uR|6Ks**4>e@
51094 zsc15p%y5FvBxPmtOnfLAi-XHXA%Ue978bHttI<kQvx9?!({WZSnV%O$Ft?;NGdDCe
51095 z6jwT!-q&7x4T5_3?r;n;yp)?#m)F$PIPv)Hn-B<hU%omNkH;f@eYYoMo*?9~dar!)
51096 zPM=g~Yiw+^s}e-u=K4^G1ZgYWkMVRr(AeBUR$#<pv(Z%*Y-|OpFZUK2^m@HfuTV&1
51098 z+3dx-*jrOmmm`df5oIjvaHL}~y<WPUeF>3ljAUUJa**<Aoe?h6-eTqa{O#LgDJInq
51100 zj0(amWK`GFQaggAcCYv5%`iWsGK0$6Fhdw<k8**I@iR-_v<)<Eb3(RF%I$W$JUI@B
51101 z<oJj+N47$ZW_);rP<&=arD72uR`~seYBV)9h17-qOHxK!)mrb1CDk-+aHKzsr;uoX
51104 z0HY4&<a8<%v1Do<{P^y*-@WwGORx5fMBeD58qTGnAiX50zz`%@VT8lOc<tJ?o@-N6
51106 z^u)A9E-iRtfxB_nu3ar<g0sQ}YB-C%t8{R_=6&wLeAZ>LNvRB%NJa#qV03hR*`de@
51107 zpB*1Jo8`T1B2l1x3uVK4OOZO2f<Ld6_z_~$(O6g-i>6udEHDTME=KHPoF)f(`KDbP
51108 z;GkankWRPkK6mm*d(h)ynBg71&6@|^r_k20o>y{klBrbF^TcW7N;ESQmd-@d5^y8%
51109 zCk`y-f|R=u2rqdP`M(_U{~cj)lndYpVN@6<2Uo85v(WollDQzu=F+iT389lo^!@j*
51110 z|M&Md-n@5nVJ4o4&5h@BF(htC-_hvx>jjIXP>l4$`70-n9L<Am+3-_#nxr#~Oep~f
51111 zyz94hcX#jHZiWk;rNC-6UX(^4;!pwP^NZ3fV=53Ov83!0OInF+t&oj#Y5VHH+*DMo
51112 zD$*4e>6rLnZ#uAH-$UKo*VCL03BFkr6^gE|-!IbW=;{_AIXu(T*FD9>NDtD`RGyq0
51113 z=^un#&ae^4z0=B}G~~%RD@|RLl88hwCVEloFffU%M61bMVoB?TB^-YRNd4+<NJ$L_
51118 z-kc$LsY=ZyqPH4<{>xvzdhO<$Z_H25MQ3M5a#jGFf#qgqdV0h~5`=*_`zXPuOJr;e
51119 zV*UNBwCv}9y^#1|RvREh%{9*<!P8dV=vr0nHppUQ>h<@ZI)3yc-PBfK*=-(=&9;C4
51120 e-5mAZO(r|La)j|)^|iIg{l2zb4xqm{*8U%J^xc~P
51125--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51130 zc%1DzYmi%4dEdEDy;jmnT1hMI<7%&@-IcW3_rvyjtw{TDyiT%yM#^*L-L<p9uh@=p
51133 z`3Cl%pE+<Se`fT9E&$tA0QFz*InX=sd;jog3_vI%m-&Sg<<sg%6bbt+*dJdwe@?Sy
51136 z#mB<iuph_1cCvh8DgD{WF#zQOq{*B<b@trq$6)~HCu#olnWfW<6EA-Z^(T4$2pF){
51137 zRqz1WC@OpbG@zdV7vK$e4uQVFH9jKpC#-&qc-`jjUc7z;KN25b{SUm~qBYdhzd}9z
51139 zJIfO6N%jL_M)-{A5f6wT6u&KfSS~0X%GcE+wkPeE9QQek&TqH|)-H23u3Z41jJFbW
51141 zbI(09Oe2n_J=D{}K^(q=n?5Xj4LE`L6wF93flqn{e2NPr_~`l@KD7EpxW4*DQCt0-
51142 z@cQbT(#-0c!qa&F`RaG1bE`iUK8kG|`+W$12H}@XKI=r8eGR_4zgS`H`I5oDU;`U0
51143 zoUVYHzlK_-2)OQ&n8Sp;0*7q**To!8I}x_$Uk4NZ0vU0#5@%QU6^-20BJ~$1D_zuo
51145 za1gDoqJPXQ3r+BC_#5~td>O96r{QDpLA+Mry>Jmu!y_;chhZ<|VS--*UJQIZ+M2N?
51146 z&JsAF9r`i0C7g}J5DX*aLueRAP`n@{p%dExWT3~wHfQ44&tlsI-H^gIj65TV5voDW
51147 zphE(&WDaFGzG96M*Dj<oX9Rr4vDX2kFowM}A0uh~T<3@tp$;711LEZL-h&V*pD7=K
51149 z=$FH*4yq6+J3X80FjE+z3?4#E5qVSGFfn@L-+&2~8y9g#L>dKsM0BA#x(u}8Gl_Hp
51150 z-U`OR^6C+!eQWh7myW1Nx({&5F!E`zD5tTCK94h3H{9=qcf)zSq3%9e2Oq`zA-oUc
51152 zKC-N2NBALj&Vm`l*_;InU}L*2ScDw2SujQJcP&^3gU1iS3PJ#P!znn2_uWv2vj~;Z
51154 z9wR=Bk(Px)j9v{n9>?bxhtA-07&#C;!+G{uy$ks4$G9PQ5}#$nEyEGsKZ?(jT#6;$
51156 zmgfDKks7Xh3a?{GMcUnoS}ve$8rJRO+;aPCRA+f_30v~ad3-J+rkT3~@boQnS2lAO
51157 zV?hG>=<>-j+`W8q`5f$CK6~mo<WDRuF2nel<IBhRrs6^@8#u9Tz{>8!N)f<X)QmA~
51158 za)Da(GX4~yMV(ONs#p2Ba-TAxBo&wZC-QOmZn;g$h);{>#3SO}!VTe^5M(d16m!Fm
51163 z5qFY8;+z2Nd|i7T_wz8fj=Nm5oQq3pdRF4JRmfI@)Eabqt2_AWjPKZ#BW~=wEJ-GC
51164 zw=-?y<vb+rImz0EB))e!@S-?%@~ClhTlhGR$T_;L2;_0I`ZkxsTN@MLbsll{x{;Uo
51165 zzSqdDZ;pHf>%m2MluPVI-g(?3!$<`+y@2mDg4H8DH($pb6Rc6j_xS3lcoTMY?<3gH
51166 z=iJtLg7I-1IQX2`qN6NPYS#KLd<A!?7rBkD@`yNs6)ulet&Q^+Yf=E;H-!!Tsx%}|
51167 z&>9nAO~X))X05+QWzvK!-`8Ua+~Z~*QDisp^MYADRm*pbj}ng4iV&#j&G<RrJgYbn
51168 zs~R8X?dI!{_q}x)9JcIku5bCDy}+>?T!sj*E)h@!%kS(W;-zr!Grhb~4+oc#S*umO
51172 zdu}zJF-<a>0f&lHB~8QEEBC%xLpg9?(HM#vU8VV>+RCA#AtcJ?%hrN^BpQnuP%@yP
51174 z9f3l5(U9gYToVKV*%+~<mKcp*b2qVki-w?{zvgFtoYM`MD=w9;1)0DXlrn~xHkt}W
51179 zT4-N!elA+xUn=UQSV=Q-2Z}fsCA(On^cZT!uou$TFl4yZZP?ZGI);m$FB`&<qXt{R
51181 zHnpOc$*J7f5G98gS`>w>N{O!3%ai634O@^KaioIinrih#?hIGxdIJ`!DO@G0$4V&-
51183 z5zW?P_%gExixp{cvJ^KOmh=lfhCegAuQ+?a9E`?r+|S1YnF{y{hl&-S4_#Q!8;xm7
51184 zISj3Q#X}D-J`5H_Ux<mhVuj3y`sP>A!?>(B71NQd3P;U(BEd|ikrHY$gYwVd=z3>u
51186 zTnX6H#<S^Y2bwF0IyR+yj8LY+s12jNscp_wL~0|MibQQRQ<14{$y5|-TQe1v+O|x^
51188 zQ&rNlUcVUXr=eUOs2{aD>PKxH^`ka{`ca!i{iy9k{iy9i{iy9m{isc$e$-|&+Bgr`
51189 z-V81qp4SQ_LV>#!lQ2s$+m|tV(?&1mV?U<CjJAb0_41fbh5eQoQPO^(>f(x9nWBg@
51194 zHqw+)G_3#nH2PS_6{cy&auoO~$ZwNHbhD-^SVYhnG6tM{6IbL&LL^8C5ua8iU0VwS
51195 zVZ3S!4M*jqWea^A&9t*NWjOf!v_3<Nk{2gxCM0D{OB-;onAOH{LnrC2L5<|HTwy2)
51200 zyj5%6ouPm>?n3aM%r$^%1m+N61nkRPV|-*k0(|5E;mja#kZ=e%L^uQ-CL99p&0NP?
51201 zSU{+V5aUoObDf!E_aS7C-A{Oopa%$#Lk|)jhaMt44n0h3P9ZQ)YZ6eVH3>LEYZ9<P
51203 zjmK*aJk5JX4#CGv@D2pekkNTBkG-?F*IGE|OptIM=Qzy5Igi9UYh2&Sdz|8e2@=H<
51205 zYW%M79!G!L1PT2a6D0JjNNFMbwh0o#iU|_Jvzcp7ezG-`=ru_Yr|_i-%U~&=Hf&3V
51206 z7@xaP-K=}iXTBTHNgolOgaMe%?G82xf|z2GpfXt!_r_ZVaSy$j%c8VQ@99jCm+2jn
51210 z!YSAZ#;oC)E9U&|Oq9YQRCkams4i2by-_|YZx}6^1St?iMHH0FGLt}2C1n{6qcTyg
51212 z3ZP9p75-2aL1E!{uk??0w1v^C^H1&fdwdR=g&V`+SS}KBM?%qfQ0nl6d`@3SYoawg
51213 z9q(+-9`>Al<HmC@KK;-ek2+@_??vn0u{7L$SMluKicM`#%WivHCZMWfymv>RC)w@W
51216 z>%qy+_k8k|&;RkWS#j~L|NO~6&9<~2%pbcio7=W+m-o@9`tzA)kD`bYDxu09$--z?
51219 z#0AvipGk}H<<UT5u-o122>A4UyF<;oHyCreBw6lA6vj}E-{|ohJ^p|6SpDMae+e%$
51220 z`YUu-E)li~DE3~!=M|p9B&P@NW)KWCIH8TTk(i;5Bo}j(@|E%z1*6KOlB@^xnQX}K
51221 zbxj?NZ$CA9A{Fm&s|{XBzI5(~E@#-EJk%pQ8XX>YYbfAX+zy*+FU~Dma(s&&hbVOB
51223 z+txak?6TQgV-HU(Zo}0-hpYdD{TSMzJ=YSj3v5rdf|={OUC_?jMQhcyW#i<ikXzuY
51225 zLw&e+e@BN--guM#FAw`U^uXJ*h7;q+8RMpi1_WtOl=nodS27XWK*FtDk>q8O(cjes
51227 zu*7%6?#_hX-Wm=zdK#QI1$tNy?S}oPTX|#+4um#6P~h&D)H}%NA*XXFHFj4^Alld*
51228 ziNw;)9%t0wlJV=|hj-cAJx#rOT+^JMP%sgXwq);^=pKx_T%9RVb!T@<&p#up@k}VR
51230 zX5EYgPZ+-rd*ca%8#SHkN_J?Gu)opkR#6q!Yd2HYwCRXdS=O1=EmX~#<Yra!qhpEG
51231 ziNE-Rk=B$m81lDAw7y2SU2BYGUGc`=ok>SaV@oci=^?l6uB9J|c3;5NUmR=CdfR<E
51232 zW{J9OKw7#uEGvUrQ(*hv*=l6}9s33hvraQ4eSRj%Nj!w58J?K-HZvJbTpbkG21_P-
51235 zsgXS`p>}^b9MMyOkT21ZmLn2#M}od|yF1z#8f|WmHBYo8TiczDz1i&O9TQrAr_-5E
51237 z*rYr~)@Q~#8rY1aJ~P&1GlfjPfu@!jm>6-b%`7))<yyHht;{#E&=zT7npSD@XWEWW
51244 zwYX_r+P;AnRK>2S_RC;rik)4$C5POu+azW-N}UZX%qqpp)W}eOZzi=afp)MR^<`=l
51245 z!(c-YY*DC^RywIxLWP_@cSAVb7VGhcoX!3X<tjWDYLB(-ig;VxEe>zAAs)&Ov|)0^
51247 z6xFug-|Y7Ny^fen&2IL0`z`%#Q|z`&x8!gOe{VrtJ4CG8mBvPg2m7+LFSSIP{2n?<
51249 zpC2@K_BZcJBr~$Isq+)v_*&5x_hz&0z^m-5!bSKQZmBJ^MiY5I!bBy@RB4bgRook6
51251 z&10(;>;bH~q9WtLStQC!w?mm5-bjS!8kO0$UY665Tbmis*QaE>uAJjh!*M(1d{ei6
51253 zC`_g7rTn{8J)YHy_4-;nvN3(OAg@-+HR>o*@BB5?4*HKfPvgswO)RZ(5^ZI$iMD;w
51255 z?IFM2=4toFgPDPru3U2G_?AiQa=VnFNY<aM`(8al->W0df*@v@Bslo@>aN)BeXs7v
51257 zJi7Mndf?>tO+Q|L@`3y7zN@CH-&NiGyK3BhyWdsgVMwu5-FMZ|x(}=T(`s;Va9~0h
51258 z9j*I@)Ew&F&%duW4(Zb`yf88GM8SXmJ1_QqkAFm}ePSIx+%cKs-&m7-;&<lhE2~Gq
51264--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51270 z0yrkb!H6cLb%B&JC1rr71u}1K0wzGA41-(9w0sJsosiI>q3J+72?HI5g4J{Gd%If6
51273 zUZ~GNJ+|-2{)2nd|MLbyf)@#KI`$WjAA$B-=#M~Y*?-`^eLY`#-xfmp&H~QNowLOm
51277 zM}7`+dVYHO%unz2d=y)%AK^jX!U%a_@3A#^xQ2dA6yYW8`NqWQ1eVYJWXu7yZqG-R
51279 z>7iL@wOg1diHwQFR8RRC-@0|2syLz{mvV&dgytJKJ3;m(Vh~JRB!9a-U!wHUf=)ka
51280 zAr>-yq(qeLdElTOfeQ|i+6<_cambQ=M#w<79bjwr8DhYnL;*)iF?x1eUeBD(V|`|%
51281 z)Qa_s7GgAzkwUoCf=$m@P7^9-&Q9+vci?lu$*8maB3(G6i;t8T8Mz?M$YccE1N1@t
51282 z1pU+j+GN7B!n2_N=Y$tPgK6R;KO#RM-y_eHuaGa0XNV5(ljI5VIC+#jOiqy#<SsHr
51283 zUdLYw*e{b;$Yrts4n`@XGIh}1^e8<;&(TZF&Nj12wg<-kw(vZ+gGg+oiFAW^i7<DJ
51285 zW-E@`3RFf9gKrFK&18TKLM_SLYPl?wT&4_!k*N${2X(-AH{A{2qx2|z&(JgQJx9;M
51287 z@x&qS$ryVJ+{eL}r|&s-oCFURkKIk2-0PvOGKxq(L=J%dY@CXMw^6XEAHHY7t`ws|
51288 z3NF|%^3mYH$@5j1?clML+zyxmjE%lZh4AHn2i{AU?}r}2uqUT`u8J;28sVGZp5p-R
51291 zh1`nT7Oeo^PEVLHB{4c_!i-qxCKDD&hFVM*Bj{gDSc1rDH(?ndLT)C9A$|@+StQ2+
51292 zDuM;)$WgKjB%C4lfX8N`_W;1V$t<)Thu*{F5ZI~*#_i(odZ?X%cOOvS!$-RlunqyF
51297 z-Fp3fZC`u-H~xP0*YP@fez#vz-jnyh>E>#Ca*1Q&{#zu{zPUq1a`W7wxf5j5-0{N)
51298 zNcQ0D%p4gyc3^HlKMOhl%R=l>){r_l-*{joADlkI<|w4H1Eu^ckcje4<<rWO%A@js
51300 z4mj8GJvf~0D*ZSwl<Xy-Nx&}I4|{)sUNX)o^o&^^HOt+`$*@8#acai?3Qk*$%Sibt
51304 zTY*<H=azXJ&TX%nTjp~s+-?H58{>8}xUq2SG0u~fb0cwXtc$b58E$gP>{3O~4z4#F
51305 zpA{i%1+r8ir2>_?bNrIrp~h@Wc%<AP@qBm*#&($e4#O##$26QJYx&#)w-U}RnR8dq
51307 zq`+@%W==4C-DUbIHDlMwPr$_VA!>e|d<3IaxB?rcdIj$_R=c6VJ0SBWW3v%;ptmb-
51308 zKg>RA#-?1+=S$>^aL#=X*Wy|3d3)iUl!dcVBj-S<@JaaTn=PxC`9+TXW}843br7h~
51309 zEY=sP44Q!HL)BQAskz+Trp&mp;jLH~%p8TSIJd;>0{5;Z+Ti-a`Q^&J!%>V=Q-0&e
51310 z$+OW>eurdakp(UZLa&(InEpba;8>XB&IvE@4EF-WyXhzNLBMN=^R(d=%cZjMoM-B*
51311 zN&;Gy4Ki?o7kD%xS9rgZ08T7sbTM-UQ%sL%JSWMOyCueRALt0)<vJ>R{5oEWV5aAV
51312 zZwt>=^{BiQC|%ZG(GiTwD1$y(EJwy;;58@Vge`E%-B4P<d%CJ@OnL4Qpf|`ft-&`n
51313 z+l|$8d5dVuT5dxaWm=SmEs>6b70mg#eHVG(4zLq7kJMnz#h!?1(Q_+FD(o^nqTB-(
51314 z2Vcb%nhCpv(@<W9pO*;)PfFFvuKZ|0RVOYI=e7x5-f?SQUlZ0_3sd{l`CWOP#f!#;
51315 z^0c-$9F6Lvpp%?7f;Y>#sceT%Q@T2}uR~`kEviL3bRnhAToAlIlFjL!oH{j?EirE{
51316 zTZ#)go#l3(RCR|2K(08Wi<2kMGsa*TJvtkSV(WRQk7gq(fLivvhkBq-)5&Chws780
51318 zlhBj_Y<&=+!9qbT8Q8#4D>RukRqw+7F2wxYWL^br%okPNHkqG-78Uz!2=yb>KNX%T
51320 zhc2a5;6RKQK_(?Pnb#F9t6Q`zSO7?-I&_(<8#JNLl$5<$6+2Pfu)#il0dI6#m)fJy
51321 znN#Q0d6=uzCB;EQ+wxPB;o|l}UMoZks-D@AhrTfC#bl*JS5mq)mpl)y!?kXKs+QHj
51325 zgK3yqugguT^HZu`2Wsok-KmM4`I0y@Qi$m_v)aiH-IJQwmY>*RG=`(l?&0m;REfBA
51326 zyYeNs8%$Wt>UBvBIdH9P$%UU<_~_IRwh-cz`4XxR<ju~5g<;y-_NWGAWjJi~BMC$@
51327 zwiG~;ao~R(T9+DY6%&>S@o1p0oKA+%!!pFJ<x7zgVWT_qx?9Vtqq-B^uLdTb%BoYJ
51329 z3Cl>TBxBi-Dk)etrb-qpn^Gk!mdTV>*1s-Kfu=Pzt<&2uS~~PpRj0qwdDQ6asOn5q
51330 zI*%EhYKrKt<f?LlP){48qMX(8ML|9l_-Y3Eu+%_4EMp)amT`~|%LK@WWedoMWh=;s
51331 zWgEzcWjn}+Wjdt}afj_p!L-3CHHR$ZxJe-h)9ABZDZMkPcS1aNLnw@^t5{Pj4r-X#
51332 zuZj^y>3hm1E;;2<^f<k{y(CfJXdaRxO4(bbp4D*Hq|`pnc^`~s;EY~5Cxq>aykI-=
51333 ze~j;$M~1b*(i-YRS^GgBAi&D}L$DMFJM@86Ixy6s555{IIQBH4uLTnke_Tzg<Cqda
51334 zwKvYsk89(QL-MfjLDq#8X^>K%7c{&Ma+hBZ0GbHtG|tgV4wBXFx#aA8T2s}bc^Gs3
51338 zr_~`?(2;wyQANH?Q|NLWYByHzT?`|x<n5-lG<5lmRh;C?=9<C{&T^5<CeA?qNTU|V
51342 z0K6rouZ7|!)Z!?pTOEUix2&z3Q|Qq8O#p69ohM`rfJp!-0^3sODR0>h0B_lWIO729
51344 zqX10doCp+gP6YPioCr)K&L#k65C?%-#6e&m;vle}^ECp{ot!U(<~Uyn-NpGr=x)vz
51345 zLI*fs2p!~nA#{lIh0tNp@leHpM|e%o0C>~@ZvgNZDxKG|P&*E5t%-BO01@XNjzdkH
51347 z1Eq=ZpaCMnTMQ5p9s=BrmGRE-8b^QF01^GI28ifqfzm{Hn*k!iya6J@+f(Q5d}pi6
51348 z;qxLBM&Zx|X|Rw@>Xunuh)td>FV-ExLu8y>f382*pWn$xe3H1uw-Wa+N+&x=9o@I|
51349 zX9>c&g-@+Wcwv?H>(7!$P!~S_o0^L~v+(s_<#^)wFE<{0_*cuvYyGg#E_~~?=Ha*L
51351 z+?O8_-^CsvJ!B%Y$?s!KXs04ms3ZzoVhv2#jQ<BM3E~|8pLZtB;s4Uo0{-zpQO5s-
51352 z-9|}Asx=X93I$y?q=)t>ia$x46Mbv?2LiI}^ZNb0J^lRy{TmsF1_q1*`n2Xmi!3X$
51353 z;$$><^3ndD=7#!pcaPt3X1hm|q<U|})3YPu3WRDCX-CvMHD+sYHt*?{*F^9A;N?f&
51354 z`S$(K7VTq)`?uWIo}KNVe*Kd$Qcs&uW9?ldo;f2*=}z{}C+_^y-DN4i$PSYYM4!-I
51355 zllhFNi3(yc0OIyi8N{WExFyV6rDd%JgP@%-K^B;NTB0J66;Yl8#VAxzsug143JGVr
51358 z&t87yJrCdh>|OTpdpbe8H_Z06-IPCmvushCl9JQfnDQ!$5bIpu<w~@<H(9@Y`CESu
51359 zLewohE&Vl{AqkS1&>JT67iuWo9R8SE!^q|WZ^_hg!EfP$GecJ&gOc1^$k-`S{UkvX
51360 z0>~^ix1iAAGy`061!NC2vfiFysW;#h>8|(e+}*l$-S)$W);D&4@W|uCp^dkVw7mKK
51362 zH*yZcPiy$=AzMs-0fpgjnLzfvg)m0;3it~R+rt_Dw>oD8gY_Cpv~Zn^w9z(kk@<mP
51363 zHh>cJ_JCDD0yJN5Pb@ynDk5k-?yj9<^{S=LQqyzG+Kod;AG(81P<hjP9vc*<L5lC7
51364 z6hm_Z-gs}Dv)<-)Yuh#j>a|*b)b0=^sX3k-1Tn75ab1pIj~ol1TKEzBD8;|hYR$xh
51370 zH#ci&jj!Y1!_xmI9ponyx*hz;9_6YCdzrX7%xi*KD;NlkM1-YW7Nt3XGW>lvScA+}
51372 z+gjpUQ$x^S=c=(=WYR%9a5d~U%*s8hw<oaTh5}Z<gw~8o57_N%+6Qlnc*Aw|p-?ng
51373 z@3MzIk(5UZ-m%fz<nncDF;%s@0{(a`97*3W+}0a&I9l2T#hKn9KKfQkiKPO8wS&nd
51374 z*Z#uK#Q>8?C;5j7-HF<dQ3<r);5W1nHNmVE421Y{6>%fbD~-?u$VnnFi3!K9Q0q!0
51375 zu)}yY?BzQQuGD0EYob{V1wD1OP6b4vomL}c4W0IznPrJuovf_Z1Xrt^9T<$aAN-p?
51378 zOCYysrHVyVxT-CLSq#0|DysH#7lut4DsMRvS(ygizPC(cRUj)_PA}3D#kv}4W^gqs
51379 zsu)4ABCQz&VM=<tJ3HE2W6g~bzqi)uuz}6`XrG-2!U}O<d;^uOpcxH|A>j$FY46`0
51382 zOCw_m4Oxk#Ix?1G<F82<meW)s0|FzaHX7*$v|LFyhL-sv7FZ=L4Asg$Ppa|2n9o<|
51384 zmZ%yM1W;*JmB&DkZz|y2#z5Rzi3$RR(;1~Mic0K(-WU-iJjb2pfBDS_&-I8*Bxw;B
51390 zR!LL|Gn^DNpaOQcvnCj9jCObe_Il5<bQK&7G({sDL$wiS#8w-wi3QR<jSyThx6|QB
51396 z-2*vSkR{kS3rKnDS|~Gp%ZXrLqfpE0({egAYds}+`;>@PrE}P7*sdj=uV~iiyAyF2
51399 zJtV~NDKmzzK8hK@1AW!`+HQmM)es$8%-5K(uQhlfUzZcM-<=xK^6^CY8Y0)<6!2Ir
51403 zxt-sy)~(UT9)Emz_`aNH&+G5+dY)e*Rjye3b~le?_#JCvbL_?}-m<zF_^A!Dka5fU
51404 Ezv-jxbN~PV
51409--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51414 zc%0pO33OanmEe1St>xEVzjmp9sWz!L?YnH3RFY*&N-WDuRCX50lDBw?V>`hibYe&x
51418 zze2tZ?Nw-}j-5Mx<|6~1uMy&h`JL+V<qPMa-woq2s4d4&KXmNc%OAaskhXbv=T015
51420 z%<`pk{8!a~0Q?lRwX@4-j&{~|CIJ5jfHQOMz6%#?A0<67K8fS!&L2Iuy8REI1zwk+
51422 zhJ5aqz^B)K{mMVMJlEK&%|8RI2i7|G%)38-k8A8_MCShz2VR}MoWc5gfxn%(e&zKK
51429 z)yegCY`<tBMhBU!M%T00^^)Z>p+fn|mHqVr{JG}js5AE>tzFTDr`9<#c}-lE$mAs9
51430 z9|wCRwa4K7AmvDo&XA+jLLTCelNi4b-gy$^-bZ5Or{p2>pK6`ttF=zrLC(<Uq3<W8
51432 zwz-qF*YG7PwQrMGV2-!J_+P=d`{8{azDdD2%uSxHeV-nveIM~~eug^(wgE5DNq|lQ
51437 z2IyCn(&pAbhmH!2p98Br5B<kMau-cmbdy1t9ibk0G@#}_c#gyO$oX!NzzR^TL4-KX
51440 z?Phd9o1b9i9c*n1vru{(Vju-;R=|f#w4Jum7!6Q2wNZgwCx1`=j{KPXi2Q(jm%Kv0
51444 z&!2FA0j18rgMEuVms$Bu{wsjLpT7X*OF|mTKNd77KgPcfqu=0RHu9hO|Iyf+2-};|
51445 zY*%W(LFVsg<!2gu98au<?8%2nnu48B_@1^ISq%-Cu$yg~w&s@#o7;`|I=p`m@87}u
51446 zW3yc!`w_f9fcLv*`xSV<4)4nw<80m^nC&mY%YhAvxTgY@$b$lp0K0ZO^dX-b;}hgf
51447 zhbicjCTSS3o~LMe`{|odGhjO)Avy=;3VjyJm&iQyzm8c6{Xp$!P-elODD9%-W~P9;
51450 zfR)d%@<~>{?byk)%j7N1<;k-rFOmmOUbycxIoDjCIl6k1+<X4?$>ZQXsDT*M0IUEu
51451 z<sn`sgD5K_tPHa<#7ZB_-Fzfq)~Z<t&Du{|EQjQOl)ooGCx1wOTs|ky$X#+k`b+6s
51452 zQbha~zs9}7ouJRq6Lb<H0ei?_gU7!YBs<2qH7wV#4Jz-1S#8WlFt6oUzo8?!9$}a_
51454 z%ojUZ{!Q7pIPPMc-Ta-!#Gz(Z`bHQf=<8$@*Kq_B$J=Q40!}Z(?j<s<<4FvUBma*4
51455 z8<6*cVP|FzUILmeEGMUC456kckVaJ5=-J%nn0`3Mn+Uaqtzu&%3fnUxuy=55ALk*4
51456 zrJ>Bj!-J<6p~QUO_}&c<2lCUJ#<)#mnAf{mX0XA(VJkcv9Rn#5kh38}7vs(kUmyh@
51458 z*wo$NPq)L~xgEwGZ!jMZuW`mmnYCutakCDab;zuPW*snV)vSGH?KNwUS-V*+f$WiL
51463 zD-4)^h}Mn%DzTYe=B)0fw#*<WgBtb-w)A`8Hw$d#F2<X?VUN`0jW^rUCTlgu#ZA^~
51464 z#GK~XbE9mfO|nfeo-pd*H@q2HR2JC{3?n1P5tX$!BB&w%4w7Rua1cRkrmhueTN$L?
51466 z6rkS=(I*7w<TS}Njd)?C9q0-IXGP4w*g3$*zHeTQW3~`A>EX>$(cG&zh!L%(T{)TU
51467 z8Pcjh5|cUZqqvizZkpxKHSAt$*kWXpJaBCX%ZqSr5yy2>&~$QOajL3mvo8|o-dSDR
51469 z&KI=RYrJ126BXT8(Uz7b);WJ=Vm-}Qbgr`hlBO$304mF?x-fs~D#vj!jh;9fOJMI+
51470 zr%ESc8i2`(t3K+3v7}Ds7mrr21}MiC6bd?@*VW1*uBQho6%!$<t!nxg=XD`-=xRH4
51472 z18J-+Yr1WIaS3`f9J3)bfY88Fbg5dcMnPJ-Qd!Z-!lF)Q5jg?v=&as~Q0wgSi*B-l
51473 z7%z(CNVU4UT-9m5S~WSSYOBCca-v$)#exPD2<c_uNv_N<>T+^Iw<IS(1MtaGQJ0vw
51474 zK@!^Px_o3p!$D*>YLJg5;7zUQVlDxL6>UvhgSFPX#571~@8Z&Yba|n=n5-tMnqJ<w
51475 z2xC!{i%CjRmkYYJlD`Uu!=!G3W^y74=8~LP*103cbh-iy=yI;8TMHUe>jbt0azw)!
51476 z^zu>_QI;kdwYI`ltCLiwCUS{};n)kC4M{O(p?M&o0<14-Q)|g(R4NlTiK0SuEeb@|
51479 z$I;}aqV6lq?p>VSXLLpr(C=gY{=z!(Rt_w#d%d8-<q6%BN0$TBnpk&X;f6w|0ni1X
51483 z*7-uRt_WRP0+A=Rl1}eJw<+p{roljC@P1>k*ff}F44yXzwF1#y`CBoJynfc;6&Y>j
51485 zv<i|?VY&rxETQps74*)$-U*J`4L&ig-9oL&<)I`-_&3CeBKJLYU9UT(DKtI3JGU-U
51487 z`oU|Khl=`Op%fe|>O=n&Dp>dmpbvwJNFc41v}ueDAllt)YtzYT2qufL148(Pt!ao-
51488 z)ejOLfgl#pgMcPLTun2yb%jjm_DcTfS}Cb%V{0(y=w>vnWXz{a;0-3WrY~V|Deqmp
51489 zCTOA-y(VPDNOb~3t_`Ahl6{ffxui>#8~t_(!=AA{36-VQq%Okl3d2HWISTL+hP)fU
51491 zSX~wx^oki%7RfOX)3(NtZe!y+lhe2;YH@o*gvg8`X`Sp}ENNq~vm^Cpr-pQys?eo0
51494 z)Fuqp(Lj^nJ|*xxWB#3mbsKCt^-q39lb-%{Suyg2acnFJp{mJV5>=DVX$Zh0`MOkg
51497 zSXcpQv4DSOMyOi2MvcBh02zIU5sxBtC*m>aF2rNd-H6AadvMJu0G4n~1eS441diaE
51499 z(0w4|v4#TAv6fy2@O}dv2k<-!owX*QbpiHT6X&7<BF+O0hnhGK!pGYhv%ZP7*cX=!
51501 z;c>v-(U|WFYccdE3=q-ZZh(mXBz$Qiyu$zyVa)&$;hlx6c9!DmQuM08@l$Ymf-qQ}
51502 z$m^D)I-i=qRNt(N>|Uex7(Y+mEVRQ3a{IcpI$7=w1|(6SJe?yP&s`xr<*(r3l2$=?
51505 z-Q<eU0q5ylIjgB0N9mkEIc_)MDE9>Zt%6jMon<`Z?@eWkyd2K+*#V#=lg;$^ZRbpK
51506 zl1Pne5E*oGK-ZFNN!h7rwT3f!uM)C}qSNnAwZ;5Jht(45EVlOX-Et%)^A?N6@6TsK
51507 zirePmoT}d&Y;lO8c+~HR!>TzriGPRu2RPBE%WVSB0UdLUt~-#fdw^g<_plScGsH{5
51508 z{9q=N?cdG~_6C41`8U)K)t+t>t(o=(znbz`-MKa)lnJIr@Kk>kp1<OcLfR=^vk}^p
51509 zA7q?u=LdrzS6-4H4v041%8BkoOtsiWkB~Sj23L3ev^ZHgxWnQ<y7&5z%4;~&L-^l4
51510 z{4fcT(Q9@}XJ+--{9;*Qss)mXi`*V9dz$pkF@0Cdc1rwS5~3j<)SYN!A{`vS^;Lf>
51512 zq?Zhp`(u=HogTME;3+qUmm46zlXykKR|(HEtK-q?3b|0gX(zq37p;!AWq=N#qQs+#
51513 zp-j;1TDc&K1%90zXxdaYPxl^K+kNWPf8;WKy{=ThKkQ1W(H-evd2-ZEUHNE!v1912
51514 zf!W6ozWpmx@yzkdAG-eOJ@2~n4}br6ALm7Zb7d^05w~g=Z4QeZ@ASmRGrbR7p4@Y8
51518 zX_TA6n?}m<C$|UyU8RmJurfkN#I0Fj+8Fd1ycl{w50sK^nJh516<_&+D9VD$TipS-
51519 zD%xe=U|-1Bn)7P~g{R)G&Mnz19@e7!7w9j_)v0pU5?*}j#PpFKEevMnR~EF#K6wb(
51520 ztkp>Dm!IMu<sKjsyKgl-0snR#CViVdfzT@rPp~zb4>A`}eI!i7sJq@a!vjo~13}~u
51521 z+572(vK2fr<n=oovfG}H72^5tFZ|ZS`&}J#1#!=J-_?0E6>b^M7Q7gJJ8NGi?*=Lo
51522 z#9emy1&+)BaSysF1PHmrWzins*AOBv8&)kzhh1F-yBOWGCuXyW)Xqt+SSTRK5DGZ2
51524 za@?Gs;{WJy<Ou>1mZ_av#yGn-nTSQ){1&t^5i~3KCNc%i!P{Ixw<>!AgFPW%Jm*V}
51528 zwd-vc)}P*f`oOk(5}p=Ep<wldT(17%fZHQTPD^C>k@4)=?GtO;cAiWlVJ+aB`?x<R
51529 zJ>=0@-3|uoXbrlpu=ABbSKM5*><)sjwz{pbO=A~7S2ge=;J1Vd7)Av`geno>93<jp
51530 z^Fp-TYHsa-z;A(2Eqf@*cSOShze6ECv`1?4@PWaMlgngTumy`(H{z`<HAmZp<#+BL
51531 z9K7$#T(W=rwy<4r*;H@99^bofr;oaGkx!gB0ipICe>xS<9>4rS7HSWEa^Yi-a*~z0
51532 z{8mRIkoO3J)nS#jPWQc!J@%*(X_r6t@Fe=ptDvjjr+D{2VK}Y_4fG0&P<-8c17=?%
51533 zcJbzB=AguG69wX?ZUI>9#>}O+XK>KWS)}}M5(-WVNAkOedwTgLnhFmd>VtJ(t9^_9
51534 zcdC;(X)Q-B_}@Qs8zF+l_Bf5B{RG=g`!S^kGsD!T)yNX(N^b8M-RE;8;w`PA(VV|6
51539 z5A06%IC#5iAAaD8yk+#<T`@;QY3Wm=d3QKA98dc>=g_WHPd@5!35q-6-v8+IN1}u6
51543 zLKP&=E(UzwzG+POiZj(>VKIN(`*zCy@zU3heROo>=yvqupVz)i-UA7Igk+ynzzl$_
51545 z{^o5K-$bdm+A;k=e?G5Bn29o<UgL*IhNxw)my#K3xDv_G4A<n!%m(YrHtoiSKSv8;
51546 z|LmX|c2b#3CRIV^IGzU*TH>y3q<z$r4!cSYTh~a)*Pn6(GwE+kzZ-}dFZE0h4J5|S
51549 zgE5Z^b%Vj3)DWBz0?}G#0+8@eF;M|^_DstlrbSDMKYQ12qh!)O-RU>IP<{ldc?F8c
51552 zyQRZhJU9g0yk7gS^k=-A<Vp3pq>stghI_jqMxLujmI&L}jP#3h-PYLHJUlhhGjoKy
51555 z<iutCPXc#xV}q{qu{q6Tyrh%y7Sc_->%5ppBZHN?dg@6xQ;*?^jHCXRU9<7&J_tn=
51556 z<AC4@qNbEm4=SpwKgj!bj1G*nwkwXbH@H19n0Lh60-<(qVz^waYi;uM_F+gqyKn1g
51559 z9{Kmc$PQ#AmT?Llp;lG(I=pVf#|^Jakt}*uig}gyU+7h6g5XtInr-qb<49XSD{bXd
51560 z#UTqPKw2TT1XZg|WcHW$rAi^$)3<XtllOD|gRb`R)!Ez53`#xE-kaN7$)e%KI{f_y
51561 zddw)!4bv6;|M7BX0tgBP-QY>w945lB!)(MU%&YgZ|E=k2iK@PaRyJ&_#IgGXyfiYC
51562 zTRg8~#D`<I!!<b=pT9jKri*U-&|FUI3WPk}ySjpvU1Kg9*w$ei9uM!mr{w0X(UK%P
51564 zOa=px^YK?U^7MvDMVkk1xM*NT6%05Ot4um*M<XF*3DE#v{baM-dCc3@RxZxfx51oZ
51566 z-zA8S%x#&D-O+H&)JiX1Cd1?*<7}nm5@GNGH#h<w!CVP&oLm?*gguQDSV+Lu6L|3l
51572 zL!wKyDVc0Uu}fjUzdNj&C$WD^-$zQMx7>v{m|4}Y2%yY4cFsgfDLdTYtu#krBM1fH
51574 zw4-D3xYOck^*hH!uP>M#-<MT_itMsWwpRNU1<u`af15Yq&5Zf&4vWie^Ev#a!NF5t
51577 z_gO+yvy%ZDX%CeP-7^tik%>l8yuoat+#j)et-MX9HqVgTVs%PX0B?|c623OSnsM2a
51580 zVt0U7?17R-sp__c9FAZ-7)d%E-ni2{uErvF<imYwE7-fY+vjjAo^UAWv-&);&(%0B
51582 zutWAL?vNug6n8~^UO2T?+C6RVmcg{usoFiAeuqbtt#Ul=?TWWH-3cXbc_#$1=+<{a
51584 zAG5u8@`Z%gjvfkoZ%fnl7?9P-zFnL99%N}Z>>(m<v>QhVcKcx5vt(I15rm!AxP~$I
51586 zxp~>=kwBkHd#QXVqNSXS3n*Tq^I&0*8^#pEloLq2+_-_+eEAY@+^#h6$R;!}r5iAC
51587 z<Z+m83sY*1g@Y~!NWnCv<~x{Xoz-^{Q+bKjfn;tZ5y@CR(MXr(aVjyVBj^gbtkGiH
51588 z-Qx7+wfIOnT1pozZl`K<=X~yfVzGLAy41McsWfFy*<XL=WTxZ)MCRn=azT$0b=*2_
51590 z@>tU?nr|Ryx7eadi`Ra*DIXlcd{ANeU@{6Dq_>_ACNUq3LO$rN=Yz_xAs-weBbjs}
51594 z`Ad~EzJ%B5;Z@P4nCBZW<WOy09-G(Vh&XJjO|*-ih~4g$-Ol=n^S$(~WRRR=8h#-a
51596 zRP;{n*%h$Z<4*kZq<4D%-WcVR%YB`bNo();M4!!K5iJgd3B{8tw8+uc7C&dPOT0DH
51602--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51608 z)B!?i9!YtGP@1F-AzdSz1e)^l=vzr1P1C%r_Y&IGvO-F-@<>+}X_J;FE@<A~``$a6
51609 zkz^89vbvszIrn__*}t>T-us+8hH=K26AFnrrb^{WUgkl@gf{5iH#NI!&+C?4nKAtd
51612 zdt_-j@xsM-Vf;B5@4ps0{GT^Nl|P91uD#*RZTsJT=Qdy-=5y)9jfa;W9)BE$gzrP~
51613 zu^X0dJ0-s6{SO#xfp+ZV(hWyCtCMlY<QTy0ICbOAXR4oK-7sFl@l&UdoLV0H!jp`N
51615 z;TLJ>PrVCry3DKh|A*aqk*L=H4N(u!`uETL^7d=&qyNVA;+r_|-JR#s`23#lUv{kC
51616 zf9VP5MLp=0>3}osPf%tu50spq66->p!w1H6ZMqI!31nruR;6~ya>?+^pVjfe0dAOT
51620 z^UdZjTjG`vTi&)Fu)b_d*dDU|n|-hS$Br4t1!vj$>AKI$zv{zwzQ|sgn_uDlk%bEX
51622 zy<A#p!}f~?rgX5<LU^SWyS{8V2iv6Z;NiX60RCOH3EY->kyr1pNDr?FtaMRc*0EBF
51625 zt{b8M-(k*Cc(zu*!+p?q3C6Mh*MRSM_2+CC%s&jcE>&OWE!Ee7&g<0v4vbX+&kiuP
51626 zkHaQ72H!nkA@j6jU-&h4s-Eq~T_b^CW7mS`QR<wvfLBxM0<-abYF%WL+@aPb*2`W~
51630 zldoQ$DYgqfQ&4-qT54?lI(!si{1jO4Y3M%&nmeQFVhbAp?A_$Ax}k3h;BEwn6D0X|
51631 z(7<8fI0hc)1Zj1yHveW-wwr0i&O*5ikc_;e32O69EKSbrWuB$eONW@}#L}6Q<dM-L
51632 ztK=2QUmm{Y^vx`B!_w*NS?GrAZ@3;{aKueM*2!G-L{IOLXXH^iCr4z9^p5ls={4z_
51634 z#rYYqc`iHvb2`A6&hSZI;KRI^=Xo1X@Cf&D2YgIi;u2eBzhFOOKVd&&-)Dc%zQex7
51635 zUSa=(y~Mu6DzHPIWuInGu}`qa*hB0Ah^Tjf-cEw{4zUA3>*v)IK<$^+KB)hsIt%qH
51637 z2g+MlA-?hlS09Ga|5+V{^0QUc#y_mS1O27yL8xD<V#NJFNRfZ93Nfqt=IR%q=bkF)
51638 zg`Zr-D7Jm|7f@cm`a>wEt6QL)tDc5(yt)s{ZzAWy*lHEv_rCj=P|m;m-*N7{FGK%U
51639 z>=z1E)a}O+k{zpljp8N7Nk(>;!5joWYb)SjZ$c@-3S>8Us#n>!8OFV@!uKoeMJO*&
51640 z|8rD+mOTyS6YOK`5%wVa5W9<d&oa!xt^*4_NbPx`^D>J-`S$AHLitN7zqYyysIqrI
51641 z45j=oYTQ&^f&Ra#-Ua1bs6qZu@BAUi^Tay`P|NS`gi^oy0T}(it23li&?9@3G<%k$
51643 zC8%l|zK}ieQTX=5w~JDk3~%8Xd{Vth>8rH^@O7zm3w(9(#j#6u-+x_$uYKQw@0;*_
51645 z;<thxFR^|oy^uX|-U=Rw^W7jd=bwb#1GWqvh%?;l9M*pv`rFxgD9!Bmah-&3;i`cD
51646 z=W0&(SL_-ne~NYKX`W?VoaLA!JOg_dAr+rRx)mmwB>q8NyC2&7>e^{&2kY8C$n9RM
51647 zYlGy%r`Fp1ZD=2=YySw^sk-*7OyY0WwZ9JS&)2oT1nrY`?axAcOI`bM(DT36wI6`?
51650 zB&r!0=KTU$nwFV6NJ0+wHb_sV`WU9JcKsi(8`IkF{pSEm2H-#kyhudb4pLb`J~POJ
51651 zQe))uFfa45Ad5q;kOX^gM=e)aE>>Yz&6gKqF-VbZyLVP}d-l&)dc&2rg~g+>^H<GR
51652 zgw&FfFdt4H3diFWwoqZkWC=6p;^IU{h36`<#iJb+A(xCN;~f<-7hAq4dc16+SaBC)
51654 z#*!5_JAY*1f{zPCP|8)rY{grgM|u@sv8V!sW6QD1%d-_Jz5hZRw-(EX%N1RDK3)-1
51655 z3v(Zw2jKAe`B-Ik7P<-mT^YpM;KD*|MS%v6+Mr8q#VTDm-i44a&(6m{8|Rl|71Qke
51656 zBJ{*?%!IXmto1L37a_3^gSIM`;^7LLo3F5)2porYcxR;vYfU?sUUaa-2=SuK4lOJ!
51657 zFTrsnyRe{2un=1Yd6E+g9Thnj0}iCr63C=4&dyi#$%%>~IRPsGQx-caI#M@iBDTDu
51658 zKQs};K@>Nvu#Y9cl@C|sOdJM_vGcL>Kx?H-PJxDY&o9n~m*y7clMC^MSf#LM9>&6`
51662 zUfh8QpaLsYabRl>S`Jz-Cm?c=QevQk!$7&>EH1{*FUBfPP+LdEmD{;@enna?Ewogu
51663 zN0PU7RNT3pyXSZAQ98qM=yy}UC%3{}#jEC5TrOC`rHP6&i(3v%YhuNYg#(HT_rY3-
51664 zsaZJGg8D$-iSw|+K-Q6oCt;da4=dw11$Hv_EPy0a!2cBVHZIm>mT-kJcM|kftgx{Q
51666 zk!&~tdh>y>-fTz3pIhPh41nVC8O*JS_zdM%Bz%T*D>6PKxfLBgqq!A5KAUnY27ET>
51667 zR*d+}=91b%RCJ4=@?<Pu;aB6f>8RxD27R@`o0P$hy1{g9@U$`*%dv_*dpUto)-Niu
51668 zqM-Hi#X-Ip@Rb1h@R<bp@Yw?L;WGvD;WG{L;j<Ow!)F`FhtGD951$#351;v5Y?Lgw
51669 zGY4b?i?JfIP^7hm-Izz??aEa;vz1QRm|I{^OvNs<tjVRpBzpMwgb1Vb-P&5O*mPwy
51670 zy~>u%ip;&`dGL-XWlx=YE(g<_i}exbeSl4YDQ~0+`*%}bu%G#!r+`-)OAfB|axco-
51671 z5BdNBHs>F9&C*~;WgwULk9JfBe-$WL_+bDaf+b?UR4gBxLf-(Y-G2W3RB{TO$vi|r
51672 zaK8|m1|cK#fQE;`iTNsi0F%J4rU-1s!X_%_V)n@Sd@>drJr6iX8o^?D1z$x6yFrDH
51673 zRTj~?6n4*Flwxu$d{Iivp@j)_xhC-5Nt%(IT&(Dd>-X&<x;-U4NyWwGWJQMP3d2%y
51675 zs!Ls?1%@!H=^_Tba$40zaun3GwKh~S(fDL?3W?$>j@49%!YG=qu)Xv7*eFDH<X-KJ
51677 z(S`g<7x%!v9d8(&3(q!;PHZ~&y=D}1mEr7r5iI2@BiZx78`>BMby-kY(0ru}W|T=}
51678 zw9mAn`6bBICKS=pK$Eb2^04z1{FAvA69gS?%KJ3wso$0rqfF?>Mw8&G>g*-Hpz=8d
51679 z4tO}LX=NH(BiVRT)r%@kO$FOQ1zu&_U%)e;$DObA!!F-(nf{%Cj(gmd0jSU9DnszN
51684 zwTAUpYSE0_lq$}+U8y4Y9e_s#xKpVjz+Fle0e%Ny$7=ZQrWS$Uqf`<6oKi*b--Vef
51685 zz=xD70^F-q5#T<6-B!bQKeY(_0i}xIA6BXe{vga$0e(-ZBEWg2iU1$UT`*IMThWCt
51686 zNP<{~(-XMCg^6s%aHJx(%-*I2>kjQyYJ$`B<L`NIs$=TCDfGxpclhuPr`Um`$4@S?
51687 zeaBB8Kf`8^-+bc<w&R8)%g0&i^oirgSej1YU4T2p!Ysm~tO-t}NtR-5%83;4byBI^
51688 z-gZ!#qcY33G>4jnrhjVsO4DOacQhrMr09>LuSBnl&P0XC-$lL>c{cKR<U^5@k-ZUJ
51689 z_-Enog<lRo7k(=ArO=K*#&y8?s8euUXMfZFP0J_DIn!z58~R7|dEJxz6rbTP_Cxk%
51690 z_9$D1bF@Ld*^=q(&m#vwLKB^&CH38!rXlU-Lb)-(=c6$Cr*O`8(HlFw(@PQm8zJ%T
51691 zqf~>G)lvN>kfQ(@szEy8n}BbSZYMTE+W<NZ5KS-#IqqS7te*|gZ3U-WJ2&-joT<#l
51692 z`-WcV8&GdGlzvIo#mmeg{j2m%=_%<tsZ0E4@mcYpXc3+l_VJ(b2YG-!1GF7<!>QbF
51696 ziC&rLm5E-N=#`0Hndp^?UYRJBiBg#;l~qba2iE!1;#1-$#K$&JDiNg;Q7RFo5>YA<
51698 zMHTxTn-Sg;-W1*tUK3swzTJphcp5Mx-U-4xL3k$!?*!qUAiNWVcY^RvsCa=(;c?+n
51700 zZv!^ORUlji!c`z#1;SMzTm=;uaKnEAyYeUeNBsNz?=?*PCH^H|;m-md#IlXBY$Gh&
51701 z2+KCYvQ5PT9PkVLIsRGxG=GABOvP~*KMP*-I=&1TaQ+z0AEWtWG=EH;4^;VSeu5w6
51702 zi+n%dOS32VDDUT8_-+8^;>@iyb1Ti<s?G#Te2{nZ98dEY55YVeH*kTy!`^29%>D^x
51704 zp54dpX1B4^>;!o6MSwxL4ZhO<9JTFrZ`t;-S+)bLevA#WZiotL79(q#APX3$wJVVB
51706 zTvxko#&5cz)ygp1;oUI@NFR;Jb$7{nku~BMdIcB%q5Ge)%@-+3&awcsT9}PL23B*O
51707 z^3I+jmq^$ZO3H2e`aUZ>-hvf;1@!+EtjJxU#eJZwE{Ln5ns*55yIV!R^*w7)^_154
51708 zXdE@-THn*y*4N1))^HhXa@6;&?=jR-6gE&4)=^yJQwJ7z5bUQHEYh|K*ZK`yZ_cHD
51709 z6E5|e@TA+o6ZYtt@&-`RqZ2+7ScGCDUa0%vBSR*aAt+h3C=DLpPnh8&g8k8NHUQ_E
51712 zbIml%LBBZIph-T<d%1-xnIHar2mIM2WQhWNbu~S%X-ubTvAzd$)-K2`O?B{%cGcLk
51715 z`An5!tw&VtMAHKH2^)G0><+NdS%@-e;P6@YcpY}W0egLqvR{pitD_0PjQ!HOUXgk=
51716 zoVpD-*Loy~;DL1#iW}h9dJGVcE5Pv`5HY7A3vku>Fl8-dvM*1aKD62OBf@3p2$z|$
51718 z%$%j)oo-R>S6OSEZ>0H3e3!}V8ERO<03C&o9@ecHFs8tc1i;ruoM^icX9_e&Aj&wW
51719 z8R|$ArNej7if>04#2O`hh^?(IU(&p@wkMTyr@*eHGq<cpOr$tRZ|j>W3Nd<zZ->2T
51725 z0&+~&NpDCmNe@Z;r6%$Fa2mc+xFmd<;aSba-{P-8K5`VI>>&5S`2&9uW>d4QjUUA~
51726 z;4e-rv>$PwV`hZEGQ<6i-00zHfTxju$6=veYk`jyp7`sIfb@uTMw*o};wAAF@gea_
51730 zS&Zgin@ba6GF=wWugjT{@EAA6V*Hid7-+U()49Kj13k@MzbnP}w0X;hohiPj&0E&(
51733 z3oXJ})RuB0!+rENdxL$8eHr}bW9)8-_IT@%r~CA^Qv;qv6*<MaK9|}j)b(k0sGTIV
51735 za$23WwZvPbHd@gfd{7R9nkxn=nk&!=%5GcWBd9C7HV3(I(pqz-{Yxq>Ltv^`Rbu;^
51737 z9qMVv&6Ho4is}f1>`6JTtF{QS_}lEy*aH+L@$S?EeSw-auC1E2W|3<>^>(Z1#ZDTK
51740 z${IrIS!7EcPq^MOIHhok;h_fF3Wi)mpOW3`8v68X?H;F*Z|6EnEvnC}*PH-$s-t_b
51743 z;QVruDW?Eg9bK-Co@BG|QAQ<obh0)&OEExu53P*0)keEXN7_9Zaxz3GH06fW!+33f
51746 zUh-x<#$?i9Y;E217rvCkU~Nyy!B$Vp$Zrh`I|82{i$~BmUW7A#cXpt)zkgt0OdRm*
51748 z-?6h2nVm0K@L$d>2^_uRmEi(yJ-(oIa<+S+V20Iqu>cQ<dS5o4NcZ&u@BK*M>uC~t
51749 zy1gEqjvIEA^(KpK33$yG+27NVZOYzsa?exuFZsGhbfxcnG`(lKV<??-BPYYvpGsHr
51752 z(0KVr;3da;3SBASMHKi<C@2U!aFcLBJWi}h8f(dTH0-dk9M8$?*sJGG4^>!OT{4kw
51756 zmhu-$BMxrQhO_hSgID+Oyl>x!zg})mA3OKN>gRVobl?kr{73hRvLx8khWxO@YnDw`
51758 zsC$qCH-}9i2}BTr2d+9bkm-v=B5lRJ+3ojs^kq$gY?1||J>>SvM!h7037SJ4$=2&X
51759 zy!!d+TS`~|#VK>?=AMc9Zf{TL;Ei`q-Tm&}!*ivnydiwm`4fk}cBpyz&JP!N++5JO
51760 zeh#=EW<!PkZcx2}LopNM^(IskLsG@)%D1<ID8qbM-dq$~jRChJi?R-AQDjme)Mj#J
51761 zbFvKXL^L{l4zFz1y9as$?k2FW9QYqsSLdeUb$l=u-aE&CSy(6+S`ESZhp(MF)Ex`L
51762 zR`posV)uS-KZ>dBlkf3o!QLL<SuxMfe@U+sB-kops>pn1fw~Jm5Lo6C7bIol=v2?L
51763 zvtotOD3f89ES&==wh^cRc`j_gQ%n{mu$pt|mANQgR}ZwXP;f({($<=aH#bGVQ-C$=
51766 zHPxDD$;o=%EXads**yux$EpUQh=Ys&)3bUb`1*j$W3}oX=2RrtoPB-n@jLh0+h=m}
51767 zuD^e%^GHiDI@FqTVFc=|evN$;xQH`H!RnFlH44yja2<r8ywEzJI4i}(L`5a=-v{ko
51768 zIkOzzwJTyW$=odH?2&*^0-cG1%V~-G-Tfon6)?F)XC`e6Wm~zoYr3?1Nbl^~eb)!4
51770 z)SLeXHYLF-n(TguSMT%<bO+qc8FzBrX=(C!d)M*mE9@^7TJ?#_Cua_1;(>IBE1b-h
51771 zL*X3i>j$8o*M;qndktUoa8_G27z6jixt&vlL~C5oIvIxui7#v*p-YJn+_zwW1d9W|
51772 z+USdP25*~h*dG8yTsE4FHmet`T#%YWeJ*b-*&N?F7V7u4wnvh2y))L|bM+sN+^TZL
51776 zt8aV=^zdC^`-|)n<ZB}rP46>*(ZeB@TX1V_fvts6j<yygDemZC$QwL3l*)Np`{dj2
51777 zV*i<xSQKK%9^r?O<=&&XPivFkVFbsRM;AI1E;#%UOPU-;P&;;snwt%w1LYEic{tTd
51782 z1^k3V*?_9YQ2rAnbMv-*_dO4nWx?yyyINekekY&mu{-iQy}5s?rL{QZH=0^fCY@Oq
51783 z9BK~qhMSNc{-2F@a66pK{+nVmaO}j8O~DsJG=u2d7@eCLmm!ox+=a8N#O_8LlL594
51785 z4Nx5S`)Z-QRf*;JUnZLMjJ6~kL6bvo_SvkCoIB!mn=Briv&Cym;-1TQ_#mq=1Z>H;
51786 z#S->Kx}9d5>RqqpM%K!nQ?wKiQA_t@4kO*aE`_nccm%Zvy9*?`pKStz8j7hKP!=x-
51787 zS4eFRQgbOf#ib}pNyM5Ws1~E1wenU)DXnSE<S<j%s2NIfECxw#^+zWYI-T9=449op
51788 zlh<m6BS*yRHJChIk!YV;wi%mSn%eb7UofbXBz?e^NPvb){-B!)WJS;OXCRZwK>RVe
51792 zf@)Cp2$X$-Pw;w_{0)PtO+W_`PU>}euWlk6%|e=~*T?eUERvjeG|gTkh249GT5{f~
51793 z)zgzwIW6!{K+rx|Fvr130jtg$t3gU5l?z?*TqD0t>&A%r^-M!9km{^s8f_}A_#*%M
51794 z)C-w!_xjuQg6QxXy}FkEFr-^qccRawYwE^4Ak${{TLa~SLk_sx^RA>1ax8BoQS4A7
51795 zD{tZFSr~080JelW7iv0J_-r_FlP!t3E7lEi)t3BTmqRD9Fb|_GB@?OuTJG#ucLW@l
51796 zG6Sh-T9g7luON;?qsL=P_YQUUv?Q`u<YlYhxLe?ZTY7WR@)qRvQuQDBYwR7?#P;s2
51797 zgn&Q1^n-vZ9oJZqH5Qv>JYYWn9#s?;)}RD&33dUh83Jz5?{(X)W+Q|1hK}65W*?y5
51798 zwd09)K5_aZ!RVeXyUL-U*JX3G219<gcl^$du-lSy8atblS4MJ9m*3HpayfguqH%8>
51800 z<J`dQP@kW;ML+l`PqGC20{y=V-s7Na`PBzq#o*&g3}`&;t~(K@F9WlAplE{d>2W!1
51801 z5Iqw-p>N1S)$5%N+R$YnH*N2+8=XdH!0Ao2hB16bGcl(#<ja=uFxldUW3I<$Hv60{
51802 z%~newIXR-`POpdw*v%u)d!6q$cM7xcx&u@HfVOY-ddh&%QRb}@WWP>h*y)vYf=Ord
51803 zI3r`2SX~`_;&&&f(^sSo?(zJOrw`BOrVE;n5yhLp7mr+Yz5nbz!Xx$B`<T$z-&^B~
51805 z2-%-Y%l_b-=4nB52igHlqgQt-N2?X=;at$ObHE$4alMdCdL=#V0Z1Wq(Pn#VsBOfV
51806 z3fl8lQ`d07-PdCEr&IrH>Z4bndb+0u`{Sc0bKaEA*J6+7o77XzB{9hYZ1j1nMR?ze
51808 z-K-5GLyB{O&$xfX$dHIdLcnJmZ>vQH&CJ%0x!MIbZU+n!$o2<avMdOCNwfw$9*b4-
51815 zp>)<G^bOeC#+P?qal?SF`^oDvyNj*3P?2^|-&Nh(P0`c*DVAb$1!L6hGD&E7YofsF
51816 z@C`;+>lQc54O1-DkkDcv(Nc1JW1yTnv=;`7$L?P0y29KZ?dpy6xP#HD{^)^RtkW)d
51817 z4otO-H2Zte=CbWY(QbCTQig%?gwNp=EROl@seY%`s-2XF_+fnaTIh^}Vgr7MC@^6L
51818 zgQ@U9okzkul-&&fZ**PJu-7eV$LKY?$_w;vV@#-BWZ>O7`c*+TS?#5P=GiMla;n2&
51819 z9-PU<x_klWmgz2kaeCCweOud2L*v2S*W?|dF${-otH(bSw8fkBg2k?r>{fTk6yMrr
51820 zcKa;)T(?K|c#V-<%&T+QYHRT@>{?J{5X>s!wupHDsVs*NHVGx>5ZfCTBwRnR>5_mS
51821 z@U2hRwR2J{3F`GWiGJ-Ag)7pt)M;z7S(2XIV#uI#2P}Tu;N<pZzY7<oy}Vsn5^KN;
51823 zqNMLWs|Aj=?YzBq6r?nzA74v>I3i{%-X@`0&`d02G1*$3o!1{u1a|B$ISqov={4!?
51824 zO$!I&?Lx4(DL$QP-9O|{nw@rUPmUYyZllT291rLXlF4J2WGkc$?c2k_2uSogur$w~
51825 zfE<6ZU<num-2P^hpzVLiNCiB`p3}B^O|B+wL{c+TF48f#mXU&JJ`W{gknh)>ayL5<
51826 zf>7~je@odabbEE<xhS0c;s(JTFh#~=%|j3jx9z=F4tnQ?S~@%-hpDyQn)EZ3`$HUm
51827 z&G6!{eZwOQICPHg4kfzbSqFx4C$*%LiwZ2{+jr9|a&Zl`kl74MhgXabFi2ME-J`Sw
51828 z$-1Par_E7JPi<Dv3Zy+7(^K*$Yi~~1?swu%{Vj=1KsL%Qzuskb`>l>vzcpy~8FWT-
51829 zFlBA-iA9H7qs=<2J|yW(L0famAe;5hRHr5CLQPex{3m3&r5EBZvxw`wvl0bSotka(
51830 z`)hH`-q?4R0+`<mT!WcPwPcOBuHScluv5hwDv6>sAM0=KUmS?HdwOG?<1W~GL5o*#
51831 z?LC|^dyPUiUsz1Ej}G#9e5fVR;!O!4jnim!;qKGBojR~7OIyCMKNM@R)$hO7-~Rqn
51832 zgVnFte>NfGcUr>M%WuBSHMb1K+sy{UWw&1MLZ9a2d-xI?X16ORCQBw6hN$WSPlp%Z
51833 z_9U!PCJcTMd+6R9p#tOyAHZ`22!m$~H3-nHH;5&$a|#Gn>!Son3(j+x4X0D_=Acim
51835 z#llX97#wNw?%e6WCJR}p8a~{eJprRjmW+~Yk|dK+$BnLBz-ur{2D{6wm$O?O#-Ps-
51836 z4>-aWiXyn;SMyup)Ct*1gt8OcZ<w9n4pfeZazpmsul=NB%`+)0PFJf2m%$SE3SuFL
51838 adOt*D)7CN5wlVV<l-o_)wwbU3<^Kb@dNbkx
51843--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51855 zy(dP*v*O3%zqF&;9qr%s8RsF6VWajDnRFd-)aV8JJ9-To9&i3zMeAw>+I*dL{epi5
51857 zD0+D-b?V8+v7eGp|5u*=(c}xg-2X%PClhz?{Or5U8$Mpe>!d>cY0gXvq7|z5P`{G#
51858 zuqEC;Zw}ETr~mk$KYoA9V*O<*hzVL0etJ%yrA~c{I_a-B2kHIIL9vf6i>sR-i6y*!
51859 zn;)uo0&`|vtsc!5-ys9)*R&$&Nv9W2P*P+tT5D(?!=q^)B=p{Zo;p<!X|~3Rqi;n!
51860 zjp1X;m3Hj|-T^9xL;)J05z=$xCr?wbvRav=;HAoqE6PL8<ED}l^G~l{C%+p*0iI4Z
51861 z=>2%R$VVqJI*vE3)Q_t7p!*8&HO%lrx(51?5z$BUZiEEAPfwE2r^E{w_o*?I-CxcW
51862 zt3rIMB*hQ?m^Z&tC0}M8(gO@O>O3Ogpe9Wrf9731&FKcN$-GMr{vjtVSM3(BP8VhR
51863 z)gsdixoSVt@A%0Xpj;_Z?c<?${jkB4es%uz7K8sb8Z^-`@Q&ELBR#KGHOg%m3tq}`
51864 znZdJjydyj{z!$}<E*8{{Ds!+#4dSeebs85<F7_ZcfA3<0-l8EFdx3}^qpNfS?_*R!
51865 zo!vltiI(XaouO4)pr<KLGqgw-fG&ZzN@qc>LUI{%t{}HbN?@HK+D}J7-N3U1xu?~d
51866 z7a?^8$ixnQ1`-M6e;=qg)-r(^t)e}I`HTx{y&;#niFQA1XPiUJ+AB1t=q0pQlm&~5
51868 z%8p^I&M1k;gf&<3T)=$x`~)H}4~tDy+$9y&neF-4UEi*&j6H*P0g~j_Vv?T!+*&l0
51870 z_1cP-()z`piK6JG|E3?)@6*f3<#C);K2_oTvS#$!7_<lQ2zA<P?indmEs!g#IkNCq
51871 zgU11-@w40sAX{<uUAQ(^j^Z*Uc994Gg{ei2)KR^%i1DYA9#^tun{H663Uw!ZD(Cp7
51874 z7TXaRQ8Dwong?jFd+RqS-wgNe)m%IE9UA@Hp88eRIP(T96-ukaUBvTm`XV)xcLQ`X
51877 zy@w7S)rM27KNQ@n9Y}_PUa#;^<b8oUqpm$vTW7Q#h{yKEu3ee^-knM~dBmIh@Y}t!
51879 zLHFTaYCp3wJaDM9v$H>YI(Fiv_@P)pGXjQI)7a4(GHQGt-K&e*j=0tL)mQGmdHm_z
51880 z<A1tRo4bA>Q%r^q431pARk;1h?a`TBA>oglS-Uj%-rU0rw_eFkTu*OV{T8eqrNik|
51881 zQs|mrpgCy@jcZpIn!dcl4Ug-_P-0&nTp1Ok#_q19)W258mryVqK9CG^M6IsgJ~*|T
51882 zUoqP-e4dbA(-dwB8MVIF;e+k1dk2E1U8jqdp}}3<i=Q_mr)R{+=~6!3=igI&?P6gr
51883 zY3@Nvf^{?IOMi5Z-4vUHoA1%L^>K<)Q@TFr(NIQ2&ol{dTg;cx`Z)6V=a{Q==+(dT
51884 zjYD>=5jl0LGY~LDt>$g)Y!7>U*q~ZVb6vEpHFZR^v<F)C=7HXZj#!@v4IR%-ANDmL
51885 znEu-N<G-01n%UbCceINRXdj?NI@TjJfiP;?$)MmbL5;qFBUe)a)+(e4ZQ6=<b~Nd`
51887 zz44Za70Y)-Y~B@@ac=xXufZv^dwsqXHfnTi!^Y@Cp_*Ew$yZ~9pE&XHzGK;9+8>-h
51890 z<sKPZX5q|mOmb@0%Qj7f{T@9Z^7u6Td1`wf8a~`-x0Iv*_^ZF|Z#|aiN$&4?_U-g-
51892 zPHWpvRg&0B_Z)H9MZJBfMmGC=i(zOQ4wU-#V6d*<6SVtd564=2;_beMqzdYl&O*$7
51897 zEJ)AP&2?-YEF+_folzcLZwQG@rwM3f)>}m@c$TE8;$mq%EHtIiV@o|IL)jwhli_UE
51898 z6^NJ%ru@;A^z@!v?-%vi{Cr+|^TnvtdrC9six7^i6-_xcg`qU0<p`sZQpv13(y*u>
51901 z1DH~dORowyB4I96eRCO;ne1-FF`rw=<>#d_5Ct=9u9<7lRUI;V5TWT}c`8zwDHW|!
51902 zv}DTkY!SQ&$Hg@zE`7GF$;Q^PVO7-qAgzpr?P6srQkz?nVjc>lZy+vfY?G~RfLk7#
51904 z$So_8TC0+CRMbCUy6na*ihSzY&Pffna%iI-A8>hSiCEFn05)->UDdR_T&U#YvdM<1
51906 zv~I>_t35egoSbzABT<aEs_~#*rIzfOVzs3ODXe5<bBs$4TPss-<faLY6k+5-@0luA
51908 zl9oSRlr2`q%*zIBzj`PxV=D$RQict0x3}Y4kXk8|$#5isFa*46&>xfEj77Q-w=kRy
51909 z#p1Hft_tqk5qR$R*j1hT4!i2%K4Mo5?mO+Om-~n8s*n4<cGb`Q!*;cX`<QKQB|>`3
51911 z7X0JB8~$<M1OK@1g@4@l!9VW%;UD+=;2-w`@Q?e1ZH}p(J7_~~d)dsg30aj}RAYiS
51913 zWDeTqA!Yd?tmeq%KdTe<yQ?icPT?P@A7{Cv)=2fB2(hmz!~+iOZa=D~G7^`=cA{-8
51916 z!0BzN8P<4Ndb9V}ZJCcf=X&yF%L|q?aJz!-$yOr3Wj^xmpHqQpxCpFq<k*6SalX0&
51918 z1ByRx6<8@}@#uC4*%>F&l1>*B<``~vw%#2y*)BH~(%S>-#LkZxCyBf5b~jrVZ}~@d
51919 zSd!gJSDC+b?ss`B#c7-$36A2pY|9p>BDh@5u~MQsB!Z~hWA|`pB2)KpGrP|Hyct<r
51921 z&eoJKxTOpKU%Qxn;&W`w!cnzjzeG!}odq1gqp_{190zqI7PZ{CxZZ4s-~>Vta>^c`
51922 zC8+S$giN8zCmt|9iRDDFRSpB6wB=!Rk8%|A2)8+o8+a>PkJ-GT<)eV7>~*4XfGGgM
51924 zVL62!XE}wQU^#`JWSx0{GV5eeVVw--SSN#dmN^cvz%mRLS%$$9%P_d0?8*UMRCY01
51925 zR(3IZO4-HetI94$my}(ME-SkjT~T&1x{4T&Z6|O=Q8Ep9&4I@NS2^g4%7D6#yVjMt
51926 z;XsyoTFD4k<{3=>()Oy)DoV|`=|G<GoC8_>d933K+;Sibe9eI@@O8)@-CpmuqLlbA
51933--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51939 zK~u2O$&!O4+gE41BujF+7oe$NNmi9@ous?-`E;U=l6+R#bh+fJJIgv-wnbT-d;fRO
51940 z>}&vo<dVx(-a+?I@BjbufB*j`5k?59@Zykner9$KYv>w6_%ES$e17rJ(f|I}Uq1_t
51943 zR#wxWy!j(&{{*y;o`s6w#}yIE&yw-Z-v7{*N7sM&1%z0FA3FcQ>6Ksl^7Y*?|DQnn
51945 z?--On0z=|f3waRXQH^;48R#<bi9uJ<i|Ac2!ky~>qGcA*zt)GzSg-SM9)35`O?IvI
51946 zH{>C6h!=kZbo!K6uKm!X-lVg3|J7&>%=I^4{HE(}&-C|^$bN@3ys&UJPtrdNeDA<3
51949 z)G9o~@f^c&Fx;k|^M?-2;~LB{Yw=0E$Pg**C2dTI`3jjIWM%#3(7otS@%!<2nN!TY
51953 zKeL|2&mLYfYtJr`^6Jcb4=I1jfvgHN(~PbcNY!T?R}toF&z?TkZXka*-3)dYKZRS@
51954 zOzvIl44S#guL@{p2C+|r4n7UMKY-S-13ktyQH)bjj6Dj^B8oBZM=|tW^cZ@w^;Ps3
51955 zJpZlLhrZnE!=tU2umhf6bU%I`V1}UW#nuaqfhHN$`a9-@)>m;8%6GTE&VI4=4Q2%L
51956 z(bm^-f9nO>_kq?6=#|z#;!~}cn3r1LKwoNo4WEIw0;B<``#|d(_?KHRqu*=&8L4BQ
51958 zKpO(O+IE4EjEbQ1?9AN3V@O-Mv~mh*=T{!OKsBA%bc;ga(+^*|405#kU}$5J1gQg_
51960 zkY=sAPJ5y&AA-jRj}smN9#a1@Jb!P^L*@fp7J(vS={)=}loY6Qfjx;xMSkFt4&K29
51962 z;a}_XQ2znK6s)6t@GhX!@b1TZp+17X4KRbm-(V5u!|2QCZg@Y2lC~$o=<O&4@9)wP
51963 zo@aK!jEk6Pz8C*z+ROSA(FrmNCqe!!tQb}vqb#gOR-Qp_e7l`z(H!>Lc@7PuKeh8b
51970 z={KaeNUPGKG$<t`&aou^Gk-f@=6&2N+}|>v#eagAa6kGd^cD18koP25fW!7tJe?6s
51972 z33N6LoZ8-V8d@TqIsEV>DCL-Xq^;0yfX)K<VgNyAnX+e5smH?9bFp3hIJ=*(Q{Dsp
51973 z_K>&^-WzZhcUU@R9cCeM4nw`Y3my-}PJ^EhsE+}b2K;ouq!%zR!!HI}vIoT}CT(d3
51974 z0mm@V76*!w;IGms11n7lG;=#$MHu;O=)a;rM4v^^fxr0;^kMXV^iEit-wIlJ9<=by
51975 zz}<rY&%@|`=%vHR7{<=PXk=73j9W#-e^u?+tzxGoJ1yF2#!l0AnzB>FPLp<;u+zAm
51977 zS!zdC1nQxjMRe7*YFRsS^+3ByS1q>F#&voykg~L0u-h#Nep7E2QjS829ViP<*ftUe
51978 zDG#XtUi~jXSJLR0Y}{F@Rc&m29c-<7u2XM~v=fECThQU_%r2lOK^vA}9Z2suYkSmo
51981 z2lEKvdo9hp&Wth+{Kr(MhAFo-DtS!33AXj1%~3+NhM&QY;8PGe?S|+p0#VTa18w+Y
51982 z^m+6#^b6=2SUXO^x-|)NVf)9?p1hs2yf0Z(tU7*&I(ADxrVEC#>+mKV+henxafHs;
51985 z?<`&aENHS;6;OMBYSB&O0Go0|%NA}d)%-ROSlezn`;F`s7*lQZ!`x)%1k6a*7v9!V
51986 z5-G4$qXKj;0!J_tpoXFA0<!%g1D;%<SXkCd?0=&y(VPX{u>kZz(Au{^<U?@lrxxJt
51989 zXpB+?-6+#JIe^&;5dj)XAh$Tc=D=_EQNKrgmu!z|$)5BYr~Y#TH_HOzJ5U`3yzR9X
51990 z)nE)OvU5`$cq+m6&x#>1)pJa>t()^qhc-(OySd<`tA&$Flch02)<k8)M8}tAn})IQ
51992 zlPPCXnN-DO%f{+WR?|_vVfq`!@^XEh(Hiyj9NRFN#<44g>C8Z;v9fA%i&t(i3<JZM
51994 za`_WCda$c8dwSLsW|vYXn`<69xdgz`>q~~YxCm7>fHucTZoJtv)-7njs0XU-l416f
51996 z<Pr-jpYo#91maUXI@N5ht~5<tYBp^On#L;7lc_f=CSNuH11`4$G>MJHB~#4QO-H5<
52001 zb9H5=VtUH}Y8a-caexc}8IX|aC8Z-!@=|%JFp!rr#Q+|hhM7&Zv20vlHcS=RRxy3$
52002 zg=0(W-0Dm-Yr57lS1P8zyl{AF;iy#^O+me%)@$W;<ZB#XTKD-tge!GZEfJFg)vB+1
52003 z$jb{a69+&RY;JLBov;t+tzQQT!?fOFDg)ix`KZ-Sx_~8<nkG;(5BSeR?Pg)!LWJuG
52008 zWn-FZZeJOu4J{iDf<lAJ7Ob&Kl()ZZ_La;&Fw6n4iFxA|V$H0KXNZS?Rfs5|ey}a;
52009 zb+<4}RL>kJuJc%*T>|e&s2u8I&#hpF%f<-Bd;~_bU}m?^3HG}qE~Fj>o}<g+%<jzi
52015 z6YT9ugWzS0!W42)+TR_-SVG)M+ihuOh|2Hj!lcm_*D{H8wvyZyaSi-Om2h#+3^tY)
52016 zqp-Ld)6MF7Ki0r*_ik!E5?$QXTHmqntMzD<&B@ZMO*m6Fr%KlWH=<)e)Ga|lpjERU
52018 zHElfS!2wT}+FaQOrKwUXWAnwPro)2$zyjSe`y1qbL-SY7QLyp@x2Ru$;jrd6#~^>O
52019 zY)(LO8{y(Cu-lk}6}Zi<H<gJ(o3}ysQ27QzbC6kt3?`Yw<r|pR9Dxk2IZ9yWA#;qt
52021 zZZhXAWR}UCB(p;1B$-oWPLerIVD>>~mB5h98i661GX#cY?xA?iK<+HXi{#Exyh!d|
52022 ziWkY<NAV)L^As<VyPx7kau+CGB=-RDc)BCNi?n3cAp4+|-3!@Egz2<Yhtg$OYi*c^
52023 ztSo_fn8IKi<`L+;t264Ov_yMcv9hGcV^)@czXisz0Uo!q1mLY!mH@mBV0U-MdxDlI
52025 zxNc<$z|WO$C^W=1h3E~AVP|3Y1a7cdFPV-tlg%z(X)o3l>qKJ>et*rbk#ozNGQxwU
52026 zvBK!+*w}7%EGP&fD+rGVc$t+L-kXZ)4uw~_)EXaL-S^$fOyl-F4sGr5D}PlZm#XM7
52027 z@&ySy0ejM^n+nDU7R=b<Qq2h>M=J~_XOM4-*2pCQ!p(LiMu(d<1tZOeLO8^Vfl?}+
52028 z9~s`wjE$1{buGaR4eFX8V8?-3QFijqkghoS;83NMC_Q-L=&xQ|2@FmNGhcg8{^-8S
52030 zA#KE?UN;)TLjquh(|JIP;AEjRIyOrGjRgWjgYYIbfNv&U5JWdC0=}W!9^73ViH-L(
52033 z7zf4@cQAxSybz@=+zu^Gt7A#PJQ5jRJO|uB4vBS~BPVp2k-9k}Q_e(dqe$RcUbuu<
52035 z05pNHIFrs7fZ1+FBz(TK%i{B~(usH7<###-?2V`UhBZkG4!8rX7<PG!nqM6lko{7q
52036 zo@S@d&aQQHdudQV@YM04=Di1bS25?A#|}r(n@&6DMMt7~<u5-ydEDkVo8az2eJEQ?
52037 z8K6!FwrMi#3p}U~_pzG@>Szp6>QQP~1aYb-ZU%>rUmOGcV=+R&{--J<C7I!6o{>Be
52038 zzs^e{#|kV~B9%<xzMp;N<NF?-Az05`9wKND^^HI9`1}(;dSdd(%zV`mJ%0WCsXscE
52039 zTz&j!8wW1e+E{-Au%1K{wb4P$67jRlK?5@f$Y~*F*ltmAHW~fZ-U5&^i6{A;NwJjQ
52041 z*;>I7UV7Kr`BQ^N7|dLA9x<N!trI|ItA%1e`WW*w%)>~ar>B-DI>^qUFdE+Mi4eZl
52045 zl^t$D^^TkzYh!UY`YMVNETmgu;a6P>isGn+MWGvw4hjM&?L~-M2o}oX!G#Y!T~HLj
52047 zrAowcTK`UZ`pXI*J#;80%RE*X!4nGwI6#4Ae5x}Q^p8$qUr6?|YBBGQlnPky-#2r3
52049 z%kF?1RfKLe--af~xLDZ}^y;D-7#j@vlSO}Kuj))_`tTN91GN(~wSt&7f92qti>Xk)
52050 z;)`ZVvyo_-$m=Cw&$pTVD266)Y8Z8N7uvwhVC=zk6(!<pwkr_^|4Oc3Vknkl#b9ZG
52051 zDiXL&5aK4EBRKS)z+^B417Tj0CAUkbYhf}n;?s>xGPSTfG8!oK#xf~UHAaW-{N<@f
52053 z2nTcgW{fT0Z*jbf;TekiU^v3UXsoPjx-9hX32KRwztZnudkFrq*hsJ%>_2*9LL5Ff
52054 zd~_c$x9lG`-U}$)k0kUxRw8#MJH|Or1$c=C*Xv2ebxGm9qQnR8+W&*zy^W=sLpy!w
52057 zo{@=wSLFn^BeMV0-ol05_3OLl&gI&6A4cD@ypMb<yVw10XP5UWZ1q2s{{-WUJu`aT
52058 zw*3B;@|%YoE?KG`JW)9ka>-uJwtb&BRdskosX9I8OA#zy0M7h6CO1`eOI6fuNJMJ^
52060 zLuFK~71AmgIX=jNt?wsOJ=0}9WDz)=?I}W-U}*$d>*xf;<rVVzOxn^zOPWDTZt(1L
52061 ztL0oif9&WUcPf|=U0F3Z-KcsZc|*;pF2Sepe(&kV6;&RYOSq@w`wlP4K`rgWZfDs@
52062 z^$MD<1Qo?=ctx)~-E*4o>hD@##V=tKB~hXlbx<4ISfXfbk;F-s3d+_nYhAXHwe?CA
52063 z7*A$*@6=JhE0v5VLQ_R8o%gwWBELWBt-6${1IbEO)!bSwpN;hBYPFh^M6cAiFF|$Y
52066 zOKCTUZ1dAKSkQw|9_yLRPGu{xWIP#~EF}`IV$_((21J)=?A79-#oG-}LZ8WHq6JOc
52067 zn{)?cXQ40Rb8;f*3zB_C>+9g)a`=M~6aK@3=^~s;VIB-E77eo8fhaAq?IJ|m3V@^#
52069 zb_2XtZ9_W972-1pf_b*Ny%#I2Ab}MQH=E5`5Tl-aHl2t^LYmL*l0*{aO4K4PkI@Me
52072 z1PogOfei^H2(dzk^B8zZb$NrKWS|@pK~CZZLn-5T04CfoBZgyPw|#YMC&GQqZs}7S
52074 zn%nDA)8Tj_EbEbA${jDC^JtZkKunVy$)x<hgR-+&PivK+D(RUDtMpd*&to2#ABc$W
52075 zu`Th3_$;h@2Ws<C*j(d-!GI5T*CP3H;TfQiXPRV(Em%8jqVu3$48MYShKEf?+DODA
52076 zA>HqBDH5vSilc3{uqG3G-K0ou62x{u4%S;4(VT_Bsbn;wsqsQY3WiG2c=0}uR-6h%
52077 z0=|U=&-s#W-(EeYSK@movZ@d0aNZ$&mf`pN)NxsLNPboHd;GQ~H}NtWWA<CtC+A_W
52078 zT*8urIT)n{)+*RKR1q;JFamdpd^;xzuwy3M-V;2_Fbb9tBi~Df=iH=H+d3(@(+lm?
52081 z2K%e!VoxrUj7P#DP)V|j5_vR+$6Rf*>~@Xqqat{9pJv!c8kU=MGez4&s$tpZkTus-
52082 zRMk>tw+@=6ySxRkeRm;}4EBx1b-$u$Zh!CKgzYE6)WimkPGQ!e1k_{>Y&B4GI%9fr
52084 z-A~yP!!e<oEtacl$M@DEQG#fGVm=%1cZaIUa6xxR5?Zh)zl%^fJXnC;mE;>Mdfdf{
52086 z**n7@eEZzK{B3!Me{c1#_nlrW@2j=B%(4#xm#1#}-rzZ?#U{3kO}m+q(cunOG=M3=
52088 zRCvzGP+o->m!8KqLeF9AAVh*Bf+LI_X3{gxjkve{k5Qy>02bOznoJLtB=}%8QTRw+
52091 z1@kC-CrbSo@`FV=g;VUtqHLWbwUM+=INU6(!b6Y0?f%?A6%ezSC^#giLr!SfN8bI5
52093 zo^^=2MSL{;1*01~EsByPKzx+8q{uLw>T<|>IuvZ=9nnBEUoAXs&)>hxGqyUIE-OK&
52094 zKcqTb?Y-U0YzBp3x8QOzZ&=ao1OK+76Wg<xWNl=KmLCW>ICfU&M2ek~kB^bVwdK^G
52097 zAT`qqvH4Q@-aVsBN2|i*A6_pXpY0{p@m^o$_Hp~X<r2FJ)Ep<&kbRCH|AfaaJ*bCJ
52099 zwVX{$&;EX5Pp!{0-(w@N7YAAjm<7oMI+B6li*kGoLPK^1bx66@;WQNtY(-*VX=Pj{
52102 zroEO%=&^@&#K?GV>l}NiEVhmy?H1-uO?u>!N=CyZwCB3E`lDUvVrsXT3bwVV!R&Nq
52103 ze2-USSka;^1Zr0xl+8{tiZNQr^?IB+)j3fMWcvN##Q24=iIazm!o#op-^%eBs(tsZ
52105 zdB-1>E3Sy{bqFlW^O$vkx;cq(%0$~LK>@3>Gp>1qjhLqP?&{0s;$sol-lInnV@pRs
52106 z@&4fY%=tYN`HC-=cXPd=gs%HsKCk7eEZ>kt1>zgB)HnEkLf=4y1iqnw3thg!I%;j-
52107 z8|>s6D&r1@<6x^759*T4Qwf#)*=k5shvz2pC5;&w^YrXpUAXQ3F=6n-_ZAN~3Pd!q
52108 zUTx&~puL7NGx&X|ue0OL&>e3g9<p}48M@=OivRX^yv3e;mhf8ld)>hA&bfo-zN|~N
52111 zp1FpA1J}?tkeacrb;me5lS)K=s-<(nRvy5=p@6k7w%mdpPgBzKYo$asu8N_M=#u@i
52115 zL9W5AA<lITQJdcA&9mGSZ>+nu<&0xA&<8utd?po-hJpdj?^8Wa8RRnV?1X&w8PKNf
52116 zroMf<neRH5Q-hI!J`(L+>rVz{pL06m(~OE+XWf3MTJrl<Pa&KPR>!>&Sq&b)w<JiM
52117 z)0I;l!|C*FI6tn63T!$jF()_!<ldZYIvujwT#&tj-)TqGY#e_FeAZ9VUh-KZp=*}U
52118 z5a_LLx6c^8mC4ZCYbK<+w3%mTr%xRS4(^ILz;c|H<&*>9KU{IIl8dLZF>UXA-{F#F
52121 z-w|!p$%;=7@dBFHtw^Ydiw;{0DTg<7u;Z3Dyt1u!rIBdQ>CuGl_R2#g1$Gxk$`z}g
52122 zi3EE_lA13tP^`=(g1($84$sbpvy-YK*0Jm;=D1I5dwr_vUl{2LwpYa~pafHl&sxmn
52123 zB6cu+?ejY*uzjy_ekX67-{IGPekXU%?{?_)+9z?cefWi6|4E!IDe{g7XgiGYswZ)8
52124 zWT3%UJBfRZfjZXt+9z>uY^05YxY1#96xUk-zZi>#iD#tI!W5oz?GP<&K8oAPIc|#_
52128 zdQX02Cc7sZ?IU+SUM=9G3w)KRu-otU=n1Fa3rl=FT%CyO0m<PAMYw9c=eFM@cR)!s
52129 z<)^nmvO@G2$aRL?!KB;PV^Q-nvAk+z?AuxJxmAcqay2;(abkhQiFS<G-;NRAK-~5d
52132 z9G-;T&3ouA!SCwy%q9vcx#esA^sWw)@kq$$mBfuLkM&_e#~jH0LD0<*_OydHL2yFc
52133 zMK?WeT?%Fbkv;?CP(G-HToJc39CqfiuE?;$yCvB6O#0$-T=VF%Z?xocINU)cms3Jv
52137 z`y7yAZI;9$p@7>dOKlynZDuz!G-QdNI=RkQ23;0XjCd*o0oJJms-OY7R}Q&c!DKL!
52139 zZQnMYY#alSuY$5MCF%-KO$J!SNm-(Kl(0+mIlW*R<4I4{@2k4xMvt2I#>aA!TUXRR
52140 z&8709Bqnpd{v`QA=-UuyKZy6EaVBQplV>4X>1{_VP+)tzqm@1+aGY=vLA(Io@hSub
52144 zFvKbTJz-T#!OF(E=)xxZ9I&#Ht8Wr&I}}A#g0ASGVNB$LrLZj5Nu14z5N0QHqM*eB
52146 ziC8%3aRHBPv+ceI@BTuq?c8mSq!Oc<;$$k4m(*ya-%#DonA;WfggjETlJmyh{*sZL
52147 z%tfoYvcv1vWpB~%4LBW=Z?IoaDsE@jt-tZpT*=6nJ@nS!z{ag_{k!}Vz4@QZb#DHh
52148 z0Z&Nv8)3mIPIuk@`$vn4Lyl$~KILTBcRN#^?{<2?A644^2nuZF-@n`W_wRN#f44J4
52149 zKinzgQps2}0vj&B>T-4;7j#|p+TS#ejlM=~Zhe11zTKJ5I(!Z_Ec)euZiIZ!SNVF!
52150 zA#fh2);mD-yQ%~g@}Z-y#<zdLBXFAE`i7_TWpjmm*_`pwFPr&S`LelWf7v|tDxWsf
52151 wPZYX8ZFYLX)otH4yTd*uqRzSm)!F{GIUgIyZ~wTNmv~jFDBhH({c-dE2bAn=761SM
52156--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
52161 zc%0QbS#V@mb?4r<b-&*CZgop~t=8U)wi!v|k;m<BEuPWXmS?fMZESasG>goPN23|c
52163 zBaJusiJto1bMHOp+_T+t?rjMe00i(QgMVp$VG(`-Uk2c>!_mV_D|a9D{2<nklW_p{
52164 zlcl4_OHcgQXYv4!75x13-ABhJ-}}kay@>xY#ILQMt8Zw3smh4^L+sD3K6c5_z638|
52165 ze+~Qnr#4QX``~ootGJ*6;EkNFU);cPKhCGHb(}u?rc=Lu{rUxf-dTY7ht8a=uk}59
52167 zH;9iqfbnSk+{v-6#WVoP$PaCtzj$fuuV51A=V^Xp^W?_bflqz_`H@^71qN(u3w%H}
52169 z-}nO8#j5Q;F)@N`eZJoKkB5D8zW`18F-?49`N|-*-;MtK(2Gz1`h9`x8rl?8l&tx~
52170 zElLREn~7G2VSyuKpQ}^q^Qb9U?XSN7t8&Ncn{1SQm^-+i$GO2*`G@&`OP`iEm48=1
52172 z0-5L7dq6=|uJQ^}E?X^o2qswxM_me+6`6DNtkG%cyYF6NMbgZ&ueQOD;qdLkEOGu-
52177 z{nDc%dPuV^5m)Ht)i-Qjgy^~Y=IhbVAa;Z-TAEkb>)2s<4o-kuj55@j!5uJ*?-Gs$
52179 z;rG7y9T9&D?gC9n`flvMTSP6zqy)|uS3kTR=daxGc{5ysNAUw~pEGUn3H-bcKlkE?
52180 z+Ye=0ifYEbM2?i6gx{hp`!J(0-UZ*onKwbNz55tE32DS!WgkWj{Ors2o^c4v$?z=7
52182 z%kH&d2^N{(hGp0T|7ybud;-R8SVainE;x_6pU1Y2x$_df&%!!ffa9<UYw!lh!x1<M
52184 zWgtw@CcgI~J;6(Y-?-hojPD7Qo#1(V)9Q8f81+x#`%xjmNzt$4`vOXJLG&v4?!%|4
52185 zo3TSXqotp5gMRJ$EWzFQEFtu2t<>3jC32K;egh+G6UR@B7`1FM0W-**ph<iTl;%7>
52187 z*Dt~1`o;5Sp?L1(+B)2_d3OD@NailY(?qQLApjxd6T=uz2p-+yof7Y)cy~dMBdGmE
52188 z`<gbZr8HUnPxUeNjCz+kr@ECc1>~Q~-<JMOdZz^ZDfV6VA@(>{Hx6Hc55nWP3l6mQ
52190 zvmEW?n1IJc8xvGyo1K)wR-dTiLY}C=qkKv7D*{uZ+@StMWQ7RAL{C}4gO849p%`jF
52202 zCoM)r)^uPbjNcFiB-5zS18iS%dmL`?HMi}+I>sz($Q}Na>^Z9GBCASZ%TMhnu$D)d
52204 z_nu`_J$iq|+><nitF=?c)#DYD57e!T+-l}TGMzS|YC<_PPdB=9t&}%e&NOPL@+Qw^
52207 zVdg0>tS*@9LM3fV1JxrBR1i6NwPKhnD>zg{Y;%^N*=p5jSlB4hFb>&0!yKpial-uK
52208 zO2t5HT&)|XzEY{-h(U8YLDK|H*OE27a3;}Orn|gq!jXyz%Y>Z9esbCDA*g4${+u6H
52209 z3FA2hPE@OFb-X5Lt5sWrs<DRpWJ=Y%spJflKpv>0PFi`TVrrR^>ByAO14vTKo2oE3
52210 zTEbXsXeUYrO_I7vOMH4G-omP>jHYq2Y+N<2;#!SyWdJR7Po=h!tRJaXGSzg|FpEbk
52211 zIF}^5*rMc3EoVB**=ram!s-s}W=a_hmrSW{@)M^_wu%dw+GyT%<_wb7i)zVm!XOT2
52215 za^4K(mhY)7AGHRPX&euU@o=sI!SeA+BN#*%)=Op}OIr>@tJLt(%a1RUMbQ`1z)Gb-
52218 zBiXze%QYCaaWp)&iCjaXwky|=sZHh@3bm<RL#4Jm*U+f#$u%6*_U0N+YO}da(-Edx
52219 zLz8EWg2^7FZId^1ZIjW~<OORo-!?hen%uM|jU1T1?9CJ=T|aH<N{Y7Ymqz^zl&cT*
52222 zZRWWd&YqmHS4h4Wxmh?1JJ-bhyQ?fT4$)7E1M>WV%xq&1i;%9<Xb)6iclmMG)MxYN
52223 zOs)`{%bT+=hl&xtis<{$MGze@3dR!U1~l!#t5=sYOPEY5SOGEpVriOXED}Zw--1aj
52224 zYQ_*v#=JTp&>C(inXYp7<kdpPFy^iz&;6ZfM#17|s<<0$Y{RTkaw*<Zxh@-uk-RPs
52226 zoWT_qsdVXOu?q6rWs!`PTvgn}=nMq|PT9c~Ig$_qB!q--JEd-~g@G{Fw1t7A%AjqF
52227 z%p98O*4C7%i}}UO5-mzzJkT;BDPvjMgkzP0F^83%q_+nRlFN35sSaT8VEZA)a^h~$
52228 zZhI?3A%9z&B;}^NYIM@MQRSwKi<mzOWW_}@R<5ihvA7y@)k0&Og>m2B-Z6V5xzaIP
52230 zaOYY47jq3Ai%yf|RfhD^A1aDTC(2`U8BA4e@sh6EaxP&4z9rkV${pC-pG{|MyV%;a
52233 zs=4dT8oM7MYwQ8SV+6g9@C5WA;R)y=!V}QLwB`Z=HCmH^I;}~-30jkYRl>Ogfi=P*
52237 z`r9p#(Er2&3H=$Qv=RQ)0tw-&1rowLa@Snqh-<3JYciJ>@b-jhuv*HRj+3U;zjC=*
52239 zy57TJWT?;RPWrtt#imp(nq_^1gM0T(&&1S7xQ9<oPR~q>-<fE1Y7*Zx5>wSo-;k<#
52240 zB~4XX{LTvpM)#&>hs#HE=RTZ^##KpTes7Qep?%J-K)5fIO5Z&e2u?l3`))nHck1Gc
52242 zAD7L*N~IVpFinavu1zrqcQEFZ5679tmXl&e-esn05oT4UfW{SV9jyTlr{q}2i<6Ua
52243 zXS-!|VVPuc8dOD6)J>3NS=s=b60hqHr|fv-ri9gElEL)eiLrckXdu&<?(OMLCeXh7
52244 z*?!k<_MM(Nz-_xu2@}Wg9gT#Ai8FnJLuhO-*T~MBw_0{Smc9R74~5)rmHE5-#`c7r
52246 zqo;8Bho8OWxcCdk*7M2;`#I!cb=h>TR6ad2?3dV~WYIUw7-xq^aLX_I89!7N)5Q>H
52247 z!Uou&5hUAsQQ(X}-DVxhwvLCvP{v3?p5<k<hk_awI9Wu58HSeT<&khSM)8K0nVv>#
52249 z&D}Q~ij?BVE_RRi=_^MPgX8HyqT3-WT-6<lswlCpiCBJH<4@7w;))ab9PT1^7?{MK
52250 z28l~g(-$|q3Y^0UnZDOK!XP`8=|z`Lun9$|U@IVWn3{})aa)LAp$DoVb*k~;xxN00
52251 zLeGKp!(NXsFc8Xj-Fn#DJySeT?U~wt<nnz@MgEr*iS}nB2ky_ra-r#f-xHWfWIR1X
52252 zdL*1k>P{x9POYWN)>cy!PT%6e%k_b6J-_v1eg=LB-7r+_cL?{|ezQCVKDdiPH0;))
52253 zn{|`FVto|8c0RD3HZ1}c{kBnl!0ll{_sa6v`F(fX?(6Zobln+U{K((N(_P-dw4~_a
52255 z8gjW%g4)}PkH-W4rVNQO!{JlBp(B%txLE&}{Qc}n=z+OUMRd*%Et``V*lw{tx7JS<
52257 z4pj-eg>de%V>5=~ll8s{pWGF`I5$TYdI3XlfV~gK;D44)56PBh3YsaEj7c(XP3lU`
52258 zF78VgqNIUgXfX8(eIv_cWnIF=$W-9!y2IAV;xz~i1+)=0L<9{ntB4LaV5bm!Xa_bI
52259 z`0L{9U1=M=SZHE8=nL_;113|cx|2#$>!3>NJ=JQp7-KLz*x%RF-4zc9y&k6qV{FWc
52260 zww<sY-g0(KgdZ6iZLCq6#C$oJ>9fqOMqSSCY&blS>-Kj!f_gO4J=o=p$Fix^=p&Ax
52262 z;n&Nin>=9H9*9~VFl-M*w>{89%Bn5PGqk0Mo^68?qXD2TtZf@q7=9OIvVIP@EaA!E
52263 z%8f*1eM|?PG{uRRM{mWn!-{Fk3xflhbZ>Ve77F;istj3{wY-2nuv{>0rL?9KriB+o
52268 z9V0Y8hT0A6#9?7+n-Ol8CtfqBs`XRsWiUBj$c+vUWO}>15^*dIR6R5WX4s6U8OZI)
52269 zq<Of-SNr+PK7?6`#mh(SoDxXrL5Cjp>`w;5>6|x$krnayhj6!ehq`)WV>8{6kjoYJ
52271 zjL0um_y2!>8O1c8?oB2lA-@;h(#rCKR)V3@iES*}kzg|0X<k%%Jv0>SUc_wU3j|WG
52275 zb=~Xm2fKQ@hq|1un8!-7Smd%ZeS-;yKN=eI`2v2!y~pWry8M`8Rb?cvegO+y%r}&_
52278 z**#l!>`%?-_a}5bZ$(`DyMm#<yeGoAC+zi&()J%tbSK7UQjzG+jjG}fDzmOzFj+~i
52279 zxUa9z6HQXqv^K1LD*GaP9Ev<*M{X7)cf1+7*pbF}MlOFXk;`98<SMT|a-*%tRerC?
52280 zEm?6QU-`X5cj>iq+7Y{Vv~l`F1@GReiLw0X@OJP9{diz4vZAN$z&f*iWR10=cWOI&
52282 zl!ov82%T$t1L=@B+3GHeV^r52_r`j?b{uQr5Kj#Tj0{-Shb!<8FvadH>H|#Un0GaP
52283 z*oufOR#OE}0GlrQ7q_?5w^0u9Jr+i-!^!CTDDJF-)9G`P+lG;3y!HJRW75VeqbnfY
52285 z;9)Q5cf05tO?P`a-L9w2>~+)R<@ftz&R|Tz%IXUxyUFEr&Xc?$cYuz0zCk?Z6=pM7
52286 zUwtuAUjsd!u3ni6ES~ai!R_mg`t4JmU1h(ARrUfq2(vt8-(&hQSB*4t6?UYN_FOfF
52287 zCkR<ZJL2A8I-Vn%-#p%Uo$1V0HzV6|q3OKKjNfdv9aoypB73V%*WAf?V0SVX?r7T3
52292 O-v{;EZqo_C_x}MxSFwr!
52297--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
52302 zc%0>Y3wT`BdEhzc-aDgtzuyntd5<(B$&zJBmSt%?qX+nbW!X5Ac}ad@gKdm)T!&EN
52305 z#*AkeGtExzys})~*>NLd@t-iJ{@wPSJ$)a4^5E|Qd>-KE_Z?k0Za8lXGRA)Z?eTr5
52309 zBaBJ+K>KsBB(K$&gQ1Kr6W?Siy9MMV*ctXM_EA{j8rOfLw#4XP?Gaq-m;5&c&v|xU
52311 z^Tj*ge%N*12r^{`psfB+Xfv4?N=|Q?twEW?17n6>!?0m9@Y<-oE&lE2|Mq$l4YDZm
52312 z`<VhuofWgt-lDzvwXBbqq1U1aS&@a1L6EJCZr?t|OR(-{jX&dYu?xC45m`a;Rg^r*
52315 zb0&*v-t@G2#QdV=8p|8jJFWj>+i&|v`<VR?9XZG6oPOu;I$v<LyPk4q+)sOaji>h)
52316 zJt)&>*;i&}7dgLouFAiNy4iPpkr~V9fa*@HoVUu{tks-?YHj7`q!J8Upl&KZ$F%wv
52317 zk-_oBG{1YtY_)XvEVlQLFXplRY#Y-$*!WyzF^65xwVh#HF5SIvSA78gowo~a?|hcm
52318 z?ySlmT@-Bmyt3cG#>biTVUQrJ{V{yz>u>&0?Qf++EXohFuyi$x3KNU6*K6P8x7UW*
52320 z4~%7NZ?mt!dfhO-qxP~m2z>$gD9|?muzPE-vHNOYWZ$X%j6V+Ju!cBPdrfphdvEQN
52322 zOKg%m^}5XZ*(-WoVV?&t)anNE$1B)P>?C}yU<(jyPC|Kv9cDMPE7=LQpS>5Xc!nKd
52324 zb-`LH)UkE~%5^Xw>r=Ge8ohNI%3h!y>*G)&_64?=+6SRLMid;N_5zeQ164OuYZl5R
52326 zYHot(dYF%#Uk(!32NbIi-Hwn{XBzWw(RsUtG<FKg{Q$`*l9{1)HIv3Cx9(!zg%b;V
52328 z;}PT4#;wK?W6>BjS`F_QUN^jA_?qE)!{-f;817M2>5LE%1CbU3#aS~(SpH@3QVtYb
52329 zp=E#vsJ!^IrYOv`zS_mcEQrIBb>%F1eM`)SzS_^FG2)9ueB*qN_!5-6U`~OT`3O7%
52330 zd=2m9X&&c6c--8|4KVd>_6GYgdyTyc-t#j1I{Pa7GW#?3EIS82^f>!8@bDnJm)*_o
52333 z|KDGH2g<i=D2e}7!#(T2)-H$g%~}A;u8V_E-dCG|@|g?Q!pgo27oh%oHINv;@xlvK
52335 z0A)YF7s_qoR=_8V{{rQ;;v&jf{1E!TDn1M4xUfQ*6gQ(B#IsO-jmqc6NhrTSv(^ig
52336 z!$$?koP9^2mHoN+S130@HprP#pv~PP9)t3nKz=_UVo+`nDJXv=P#XV{U!XNndSB-+
52339 zKg#`0P);h%TxJ*9TkNOob?W{R`yTr?`#bg$`wFza#GYqQQ-2jcPq4?>qwxL&djQIN
52341 z&`XRL--8}Q8hE4jA(S8Fbe#Re#jU6@vcy*}UXLCoZUgvnvi;|!B>EQhKZZJC-{GHz
52342 z^7R^6DXU$Gz$mNz4%A-~UZkpaE$W#+2jxH4rjdSe7fD{BEHTB>z)v2YIOw8_wd?U2
52343 zBaf3JEJmwOk#BrLi=>nnnl$}@W#=K2Wqg(-Jj1tYZ~ZgLOM3sX{>JkLL~ovldJ;ZS
52344 z`1s-DgpV0MGR(UOpSR%iQ~10NpC9S#eGfk0hR@%@=Oy@j1wLPD;9B`X*yrJcG#lZ8
52346 zbC6qsme@Rc0=p0D&%zGIc?Ua-F$;D(&MoX?7{$QnId}|4p9lGADBt401?6Y?G@X^u
52348 z-lq2J(9SfqUtuzTt*QMrXg}H1ejeJ#n%bX-c5hSr5wMgun%eh3`<bTpZP328seJ_6
52349 z8%a;t7W``PPdtBh{(_v+0TK2y;Hme5er|=xdJuAg8Fm>Pg{-Snw`DWIVa)<HJJqaE
52350 zvr)|kH7nKZP_t0YLDnzG=FxJry_nItPm54Sswqr6F>)y3fJ`;yL8e+8Wfxd8QFc-H
52352 zn_$&4JPydiDzNG}JT^7~kCjcrW1-WthSLlm8^AaLV;<sfCo8Zb>#DM%T4h(xPRyw)
52353 z9INa*wp0x}_smxNBh~!e{6Y2Xm9tfmS<nty`%-%&iA0snRaqr9j;F24e7UR2i&b_0
52354 zU{_TXQ;Afft11=M{pTgGkCiJ`Peq-dFE0vjrM#GtDpgV0by}@jQ&6ca?61nxr_Tu?
52355 zV3}&-Ks159=j=XSj;c^imCt#&2gXuWHa&Y_?wp?sLMRujQlaXr%p$(3zf#cwBI<s%
52359 zsdBX~RR#^fl=-fzfy51xQ1>qy_m)*0M0O(@`B(zn#J;N1nSjBHdR9FPxE9wa8IaJ9
52363 z2}bNFE($SG-M=v2Rdp5tR8^~v%4S>uDxjgN6I(OTa+1DWu#l64qJj+e0p_Z!GOwPU
52370 z5B%Y~1Ng&tC-8^w?xH$EmfKSVw843`f+SQ(x8RN4XuNBR)t*AN2OP5(d}2zygj!Pz
52372 zl@{!0{--Df7#~dyE%tLC@;U(W00vg4AG~H^sH-|y><)}{Rfm2NC|LMD0ACL(V*ZTU
52376 z08R|bP{81n6|2IENJIvSkf78<>Jlz6gps-|ROnT*x-3#7Af}Ctp{kk2CsR|16ty_o
52377 z5Fs+7NxI5*&33CJu(KoedZ&tX>8hw2GSIrbIf>DfxSF-=+Df6xk2O(JsjF)qGo9ru
52378 z*Hv7C_|c70oU8^av(pjST-A}e?!`6S3x2z)WppMo-7;EUb?&>(s1&Qig?B?ZUaW2?
52379 zoCVs@#(=3yf`UT3t7~A!1hI_vnbjn}0GV1@V;v1N1@6-go~NxpSzI*3rc<BtE1LAw
52380 zZ_0|1CyZkwDF{_f_L7*>>70T9JY1+t<uYh(C?rz4Ty$<4BDfqx;M3gx9NrmuJ>As-
52381 z@bb-<=-&d%aj&O32=%SS>Uwx>Ln%&xxYbG6f$P$`qKF1v-3Ha|#dC~JLS-5%94kAD
52382 z=Q#DuK!tjCBFq$2b|DN_u0$BD>_!-@yr*~`Vqpbpvqk(G3~O`6^IYrO12wJhDum-$
52385 zRfg6ru-ED^C$%cVyq93O4s!}7Z)~jkThyW%r?o21c%N29@LORW9pL?16#;J3stEAg
52387 zGj)L9)v5?^R;wbwM~dexl;Tzmk#n+;CgAi0VQ{WosJ0!bO6lp-_077A?j-0u+|M3*
52389 zORyx}MrGhMif7Sox~Ex7>kUykNaX;P>!|E!>(y-g+wCv4Ki&Rl`(5p8+P(2N<KK!u
52390 z7k?yvdwf3bj=dIpF?N6KRBSdj9$ORh$3*nC=u6S3q7Oyyh@OnjN4G}1BQHj#gP-=_
52391 z>(Bch_6hG}-n(3nIJ4F@mNVwfrmXRdkr|HhGLN%=WG}FX*~!KYg?2N5?>m6shu|EI
52392 zcL;Gh<EK`Ex*DKHbf`A{#$YAX06_V5DDD0sPqz#!A>n|+R2F4^x|vuD(ing-lYRq%
52393 zHytbIw9y?0CkYCe!JA-Y4JP(BbINbXUy~n|Z;;nWKarl0u9d9fDY2XXl;6#R>@%P<
52394 zXVV?_ESpiTWn0-KE3si%vl}Q*vME@96O|<@$EX~oawC-^RBoVhn94~iC#W2!vO;B<
52395 z%JozZ0q!Qu@@w*|D{xN|?n%NuNw_Bo_axz-B;1pPdy;TZ64pt=I!Rb33F{<boz$@|
52397 zeB*>~obZhkzH!1gPWZ+N-#FnLCw$|CX`C>P6Q*$;6X5|pKPEjYeL{L*1*QsNst~3M
52398 zVX6?O3Sp`crV3%I5T**@s1S~djsr1ll_sT<G%WQ?-79dE2}hZ5lnF<faFhv0nQ)W|
52399 zN11SxY4x(c`V8ADek@)SuZma1%i`;;Yl~0Q%~*-bF)Bx?+(_jJl^duWrgA-%xGqpB
52404 zX9LaIpwGe8m%hho{tid`24|R{hjr-WFZecYeFN?(_9yI*AhtaMk^FvkmVKDr&Q7xv
52405 z><Bx^<^cxbR>aESkErc{UEvrz#P&jr-_54kX7H?0fbU~Ph?Oc?(<ZWj66tP?WIsw0
52406 z+(^<GA^tWH-C8W1qPR0j(O`l+b)0;uLN;F}%GU!$^{8&p@20P1m$9tR%`oCSiBj!5
52408 zbU63Jo^%}O+6<iKVV$Qz0}s-zxX>|a*@bnL9=@!-G)pvcl9fGtS=$5}zn9$#5quV;
52410 zIV<&M<jb@K9`p+PBlqj1C8lf12zd--YoMnA$iwJ&H;q*_%8WWq%{>y+zOh~E)4mO9
52411 z?a`p5Wos?(X>A)w4qTs!Bg^F=HOWCDIUtmwWsX7*N<#u^cmUd~|C-OB+p=!S%RNbX
52415 z$E);B9R|sl#4dgZoIs+?Ao9WwyYf$A|G$m7`DL)9CAk-T=cnvd*i)W|9ph1U54#QG
52416 z%5I3dLl9T$+HQ_2t?ky<l6BPkY>nu!)U&+Ztk)$hQVSMo1s17k4NJrOmU>#-=7wjt
52419 zJjJY5o2*NtRT3-ZQuk5o3VW+tPpj=Lr(RwLFSo$Ajv96TWs)WOx{=~hbA&gL$1CLV
52420 z8Z<^FnLJ*LW)gY4cCt3VTb9BnxfOE4)AX%8{yPTQSQ?%<p5Mi1#Jx-s7sWqPRM0Xg
52421 z6Vq-sI-nhAW^so&##lqP^(?CcL&&loS$tc(C}srae6}V&aZUU!s}CL-^n{uU!XvQ|
52422 zJTiCy`aqP$plpXMQlejj3ZOCvWiLD$rg%e=Oy@`Yb%KF*E<LU>?RN-_bSoM$7)w(N
52424 z%%6d!YFV=2r};fl-o;PA>fuJ#pfs!#r72eQ7$9Fi1^MMTSbN>yj4R?mglYF8n&s9<
52426 z#;s-wR_k5DAXZ>l>RBGg>gz4<F|noHn3HWwx-~W1Q3M_t>?GP`P52AgB}=aVlbdW<
52428 zwdq_~-xm#y7+a_9GK#F4M^e-_KSjSb$`aigZy3qUaGG?$8*?-(V9Nn!{Ka{4+3Ztr
52430 zgLHx&q!a8QonQy)1UpD4*g-nM4${eV8C|9qfS*$kX%7NLyV(_haTHD(-5`NDW$#1q
52431 zNDvFOcR_!5>hBKyo!8%P{q5A>cKvPB-&Xx?rnf=Q?gdDq%(BW)wHs^3D2rV>BiDUf
52435 zlGi86yKrCS^tTF};+S^g&|(M1F~I`x$Yc|OG6hMu1Z@ufa#kWQ#YmB--iAephecVa
52436 z{71yW)pP^F^}n*J+g*Ux3sbbK?-BG@e)L<!r5w(sx3rAQ4=0mTd@sL(5A!VdbHRSh
52437 zzRg}_=iqE|mUe|Jz$de;ep=L4jnk_26QkDGuJ=hRu-E4*jk)f|T%|GB-I%L1=DHhm
52438 z<;Gl3W3Jqo>uJoD8*@F4xuP-G)tD<9b6u?Ul<m~}nor06#yqJp&(D@l$n|;t#ysA@
52442 z=x(+X6RZDiqhLb6+oW8c30)fIMxNY88G!`e>L<UIU=QlS-)gg^eAPx6QZ0Q>>Weq^
52445 zNPB3A@R@<vIN;EvuKjIkeU=?8wH=^)$P;CtIs~xI5N^_hk0sy}rnqe&-PYGr8aw?k
52449 z@mmZBeP^_hz6&eSH-i=Wwsewy!#>pn+Xt}2?+V?FkL&pGZ;5#AkEIfOkMuLV1uoen
52452 zEf$UjWn-{l%r@u<3=HVxq_R1Kaht!xOGJf|CU?=)md{O_l5zXki~fug36vdSyT3;X
52453 z<-FPT$)MWx|0BPDTl;&yz&{HXYd8<y-d8Z@Mx{YmK435y4TgfOZr@&VI+H0!JbO(s
52456 zeHv*%oY5|zlX?SoiO=l0XZo))eVs!cm*wNxs439VU7jpD;&IPF-X^&%PHVc-zUAm}
52457 z<@EG@f4#Lmcm0`9UVQTMkL>*)U$6{!BzBAxdK00%lLywOQaPj3l8RVNs@-q&=DfYv
52459 z^$yOm=~yJ-vs+mg?^@z|0NBpuG@hZ?uT@gXoWan{=atvqyZzwJ_Ci1jerVms_M+@^
52461 zgs#0laT?;oKxu6TxiA3(pgah|z{X(=4tx$Rb^+}e$uD-MlWr&5z&9vByhkG*iPQBl
52462 zD%SO9bI=KPggW$j9RgH{!vQo`GOf4E`-fsvW8t1&SJyR@6E|Janduw!Bs%@Yh3+n8
52463 zjj1gV93Dtc#v`$ju8qHc@yXIHn+NWD;ws0?$=%t3x&H2nai2Ht^>6TxPj63-&qj^5
52465 zA@YPuxfDB-H(k+@?H!JWEzW>P?TAMr!@Z@4bteA!>N*oW6BT44SnAl*>vLNpu~5`y
52466 zYgbbz?;M?(0q^`KIR2lqw_#V=aNf*0#E&S%4=WK3aRcJ|6_Jvwi4#GbK*WGt6H--f
52467 zm4KDrBr-zg10EeOcw$3gU+CKPnW8thPI=#L7zc(gZsu?EUI;U;k{!hc^5Lg4odP0`
52468 zlp7$w8x@*Gf=QD584Q0C-22#0Z>M+7j?2^bP--X<UlT}dDr|o6;^xTiAKa~ughxw$
52470 z_a;#hI!|rBTp*sb`8-o@Uwb+jl6Q_HPx${Z`60g@^2d=s^}3wWuZSwbB7`bMs4ylD
52471 zXa-@>xi=cP!Ig5jdy8!rQ^4z!6v1WLsAe|UU6C;7wum>nDOM;%jn<;qU-0F(Wj6e~
52475 zd8+O&4(>pIS=;O{AWxA}*Qv4Ih|gL~1~;@P*QeDkWB$5KsC_BE+zS~~SE(}%=-ws3
52479 zY;WXKQhZ0Me{Qb7-Gl3Y1G0`q{(d;4nDKv#a;h8iE6O~yNTY2Uu)#}pi#Bx1;Ywx5
52480 z=?q!g2RgiA#og{qc1D5@Pr`1?`Z{-K{I2f4E~hi&8y<4DwS@u+gVi4^rVAr3qr+(P
52481 zX)#U|`PFb9Yr-n!Xp<UjY*iXQ$Stb=%FQ>G!ad&XRkNzmrl_j5a7F6G6%)5y58-X-
52482 zgMWCiqZ}x1UfU)_k0+*his7BN9=(5`Zh?H3KMa__?1F7%6BckN-4eZYz@fcW+f_A-
52483 zgcMLhi&-{E0UfeOzt?F8BaQN?(iGGO(MoY&)dDlRmeG)i52VKJqR(g8RE!mUu|%6a
52485 z`LIDJQ_ErDl&;7yat6<hGP@m9RRv(1z>w1{q=1T$lrzh~*)r%-@e+Ut@L`aKB0w%e
52488 zpg+#zno{+=m$cfdRv_KvNIBMy+vFafkV?f^!PlN?v-zTzyX+9wMKQ5`UbY3y+ado>
52489 z7kx>8%oinZh8>q5;wF}3pVzb-lu)~Of|$8{CsDMdH7krqQR@)EKofVeRbY@^6}SNq
52492 zAs`CX${T8}A70?t51NxCheT?HUf7(M4KfMTYNb29XgZ%!jG<*Z^?9|hjw-baOk5%<
52494 z(`8`DWg6I!#BrubT+)Cg0H$v>B>9GhMhmNg888L73-l~Yb4-%ty$p`LGrC@b0gPKV
52495 z3mCb|)g>pbtF)05G#oS$TbGWcQvp}dtA=gPTp*ga7)+L6*4DmOjjhi?0+UXMy&-#h
52496 zCTMhJdaO}T-O5Y+6D-ZHEm;zfSb`c|4K;>nx7WS!Osg*A%f?8t%N3et=}b?PLeVPg
52497 z8@Qg#_?s2m;R|#ah2->^e1`NuB<N{}9e<tM5btyQ)Kq8Q60ij)N=_x{>F9Q+{MjzI
52498 zFPf~-nf$x8pR>PVk1`M2yQP{1;vq#6f-Qgs>pJU3%S2r=F}E}**p5gk43QLBID-X6
52500 z@4f6VAQj!Ur5XlW@P9ajws5!}=ajn1#1*_2y^G<6z}ym)kQRVW6t0W2fY0NyS-|rn
52501 zJYpc48mIpy`#=K$^Kb<M{_MVyK*aB~J9D8>*yD_h4!EotmnEAV+U#-%!7kjcNO#=F
52505 z4SadIJ5zWzfPdQJ{T()QG-R~ed?~-(nGN}(9<#~YKkINtL!5`xPHQeH8@vH$JY%&4
52507 z#p*DtZ(4CkLA-8C%aS~4Y&mNWtZKoSfWQg7W39vFGP!~-UoscL6eQNEx?Ev@VSIhA
52508 z=uUeqev8*`vG`r-cAGVrn%tmgm7*y2u`%|(r@LdoE#Im!mVxb6$ci|FKU@}YvIIBd
52509 zjKViCa=0mcuL`H-Sdy%V?*$CsJBYu0HqjpRTQPW#@v&z9K;3kH(bHx+o}~0^Iy}lO
52510 zUDRPJjsHPlhlmpED)y&hLur4a-K1`ec{|N^V<eg%O?JB@$++L1_1a~N(HwDhlm?<*
52511 zYgJGCIEEhColi&m)bP6AtT~<Vs^)l`r$-I9+buq)xx;I6ge|VPBRe`2?_C$O2Yvcp
52512 zIRn{#9`{Q07l)GziPE+-SGcq_Qu0s_h(hZyfq8A2(||FGLfV4oIGN*DfLys@xix7J
52513 zGM@BgP=-P|D~Nn)zs#?MG2mi%f!q~3Kr4GOHJZ`PDV2ytyly*+JJ0j2=7iRhH0Csu
52514 zYB^2kAk;v@p9yw&oavZslnnm&^hEm-p_s{Ou|~qFu*i%}sPW;f*_2Fib5FN35e^h0
52517 zxDo}M-K^&qC-^jE(ML;m2j?OL(YFmEucUinTtD?o5KDE>YmKw1CIA?R;JOS9gDi#E
52518 z9LuG1Sx;su#A?hX4Xd(8rvuC-ue-vN3&}=V=g*e}3$TS^p_J0!cRAjT4R)xy0eCu9
52520 z@L|8r<g)Dk9fva#$#f>$HRXjm!!j@zP$X;HP!DqV#oE8JuW|#+ut&C3-53oZ#TR}!
52523 zX7uA%Pqm-bzQIF00g6~#T4RU(474ra2n}AiRZE2-2e^|`eM}#vz387aptFK(4C_}v
52526 zQwFu0{l+&=jjx>WlCra>GCn%eo{gEp*=WDon>X5x;{}gvYVXPQV-fX4Wkd~U+&mD-
52527 zg=1NR6d5(Ixn^6p9yfl%f56tW10_oyGC|SS#6omA3*aE~0wg-JLk2z)D~Dy7vN8f<
52529 zGm>-U0v3<iQRwm5jUG!|BEP@G8L<{ReYSRtCq+kpa%yJU9PlLF4ohbu<83obN?W+y
52530 zYIdnkt0yoPHGA5kQHx^LV~ptL7g;~aA_%gu{N`oR&-&B(&K6mq4qL>L%dYa3V*NkJ
52532 z-P~?1B-DZ=JM$5%eWO3KIpdC7<H5S;y&+`$Eof;d??+nz&(ppsy|lUF7gLdt%fSZu
52533 zpwe_a8tfLAVrf)rVhOb?9LcnIFk?+ecI_N<AWzP;J-xBgYw?;)j!;jB&EU4kUf0^I
52534 z3#rRCdg9%-wo+%HJ1$3x(FSKub7xZRlw_sN5sz4$s?*>y$A^NRp^Z_zMf_y#BG2>p
52535 zvo1V=r#--(qHDMP*L7CB8`8cmRVYf*cf`3%YP9kFHQo<_qXr}4ox3!)&4~c2((W^c
52538 zNu_5?B<pdeg4U*+<T#sO?Isz{-5_SZbZTn|HC`W)_47B^qj~+@y>z48xO}ABjMeU`
52541 zHiO9$%Fxx-a4yzvuo=U$!HkzzZHk4iuVU_|>@xp<A-l}8eCC(UE{(r1y|mgezwGF^
52542 za<%+2X197JHPCbE6GpQ6gpvGz<AjlD|J6<yMml0#`h?-Mh7zG|J-+NJCya#E<eCat
52544 zjz0Qk#1gQKl<`{z^mSi8Cwo2WU;=&pnc6e#a(FDva9-AaNi>)n3=9U00b_2|ym8b#
52550--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
52556 zkq31G$|fozA|fIpA|N7yA}S&RDk7Qw?sIw)0_yWT-}k=n|NZ~<XRiBnb#-;ssZ-}Z
52557 zRoy+)Aw@)92$MYRa@(~1IAR}m98Hi>tzFk!dTc0ucO+3eV8Q-&J$hxI+;cLD%&xDJ
52558 z@k`*A9(C%y^j7~4MCxnQQZR5-;n<6d2DBs!>4)?C4V*N==h{IBaJ&e|s|_AIWYqFT
52559 z-d#iy8;K(0h7^t;i+m4`r()|KGV-p$r?+)$OLVXm8Ivar9aLCUb;G&<j<3P-MnjR2
52560 z@J~-O?9bu)hK`yrIji6JhD0fQiQ;yT95b*mbm>dOh;CSh{k@|KCyxzr#{Gfv)ll9y
52561 zx^UE>I#$~%MEW$)VeFXk6RfAG9**bo@v-9ujV)^V63*4U{{ksemPJv-78$QUB_EB4
52563 zOAgxFGVaY<w?{Sqg<QrdKJsbD={0zJH2&uffmxT9de^yNQ*uHxyAD%lss-eL#>F}h
52565 zXZO4kr5?)nt4(fl)4;JM<jP))_R~4BF5Fb1cFLnA<<8!0w8G&qq(ibdlbzng-ODYh
52567 zC7N>AIf|T=%R@>o>VtyH3_*G*yvR-~ss<0W)0!ex?_k=Xw#pMso78}g1k(;$Lv@2`
52568 zCsIURXbepNx=<l}WCG+!8b)_eFB(ThG?8jkcN#=PkQ#|&<ES_G#-ZdeoHH6WtVda>
52570 z0NpvA3(2h)(g4{X3^`gf7$p0Jkas|<J7g~pvMN4hee?aPcfRue`L5|-#s0LTTkvUz
52574 zo7>Fy%$?>(=3ett^MLu8dC)v=o;1&!7aYAEeI2(u3LJ&-;mQ<75ggg^F(?TilTz?;
52575 zP$jAYpH0IjjH*)&3Wrx^Lf1O*kr-I18Oq)SI#!ZVyAGCR`%a;$=+V9O0FKPX=VqEm
52576 z3#fxx*{n>rK+~70t65^cN_pl6a|`t|-!XU40P}rw4-GayHuuv=^N{%!jWxe9zoEO#
52578 z+%3{S1-+S{+)IW0XryECQ4~vw!G0@@Kr+(Ydxfz`MVf7(#J3Hx1o)4SA@)!hsq2wu
52579 zt0);WLu{j{5k3yFkdkpU#7;^yHf2-|(c8r6c1D`DH^qtyedvia+frfN@4`{GsFE=^
52583 z<n#C|$6&``^jc$d!q8`f7UQF62`z<u4<Chj_YjUB#z!F<e}VK@2FBY+HBuof8%-f^
52584 zG;V}sdl^OxqXp7zHAAds7%PpH$YI+Vu-zfZ&y5qX;Md02$p6Op4r#Wd0Xwn<YnW}&
52585 zpLS+vNVcW{YaWL@VSX*P_yy@-9lfNV+@AsHk3xS2%c?-zGdBFukhwUPOtU?<%dv)V
52588 z`JMB3r{(JH8t5ACy2t&hd$apJx8?KtVtq-zO1>JtW>urB@BZWM(wj=pm0l<<#ma|7
52595 z+Ce+9c7Kc>rTU1B^)QFFqW9?^w4XjTni*4#X~w<AbmKlchDe!?IGF)Isf|e4MB-~z
52596 zj05}ie8ipA7@fNj6aPtDX&ZfJ6dD7lhB446G6orgjTy%M#!O?jF~pc-JYdW<ij4=2
52597 zdB#v<zA?-gVLWCmF~%6nj3<q;#tP$U<1XV_^D$$JaW}ndJa4QttHCcD8!s5EOt%?g
52598 zhMHltidNE#wAzd?Bh4x1-NtJ39&?8APxA?Lnfau-+<eNMXRI+^HeNCO#&&apImw)A
52599 z&N3e`=b8_jkC;o$$IbiAMdng-u{q70X+C5=YTj#3H}5m&n8oHobENqXbE0{dIp3UZ
52601 zn_rk;!ed>C0&WVyEVq$1nJdlb%_uX@^qBExv>9V2nTcksnQW$*UNgb0Vy2pv5c9r-
52602 zmmKj^rq55k^4jG4d{}-*cI)VO_UM!6Z;;}znO`v2SKKSlud5f@i}8VJ15&C~@l(E^
52603 za?)~nRi0CjUE8lR{l0?1wf#CXtx8&z+I}O`SG3NEjic-we@u?Apdh<M$L3_0R5x<`
52605 zOM_;n-^lRC<>YaD{`j1nV1X20k<Y)itKY2AXKhUtk<(^i8^5znUKPJlJ->V3JQPkT
52606 z&hz=Zc12bzl=e5_RFnLCUx{5B8r4KraL?zj%g5_-$*o=Ue6U7wq0b-MHLn0UK0X%8
52607 zsYaY?RFG1Di-r_f%O9RI&`;g-{M3;PSHXTtM}K8bRqj~0(L)2d#6|}V$j>h-#HCI~
52608 zetxhA`Mx6bCoMa_w%?KIg9c{xLiEX%(>2fUO3U`U)3PxFIHjPr-znyXC45CCt^wIT
52609 zKFHlovDIgZa%~3s9qCnYFvnNyD@I!-bsg1Vp>BBvT~i9X=jWy6SIPJJTlL7pu@tsT
52612 zmT8HhO)Jc`n~3<E)BV+O7NuP2TE&whGo?f8BErdNgH}?~s^q7`iK8-0v~J@sD$K3z
52614 z60;~bznVW{P}=0${+P^;-SRs2urpJtAU{U(V>3%AI;U4&Npv)ZurS;2&0xyGwX#d1
52616 zL@{ZwSB{@ru2o9OXvJkx3F$UH^Ze0i*}gXZNVs1F8ZLk<#v-QxI&4TxR9IBUP<D1U
52618 z-d4&iaq+ftW{I1(*JYN3@HQhet!yCt&H|V`&6nj@w=r#M`!g#Xj4wZUhkdYig@ZN9
52619 z500}B`ZCEMmGO5S=DxmW_mw+Zv42(2KOgj}ivIC74gKS7HS~|S)zLrR)<FMwdp-Kc
52621 z!<tsuB#k5dzbui$y{}g`)+Le7Htc%-8`4W0Dy~f)q9gaReg*UVU6}@%zJ{WCL)2!M
52625 zMDH{?Bdu+L-<fkQZwol=+0&DmQ&5!VcVKqKVKb*N1?d6~dDos(2-PqVq_xEur=f+m
52631 z?A@4AB`s)|U~kGza5GF0XVV_b5->a_%ijnr@9;PI9Z{W%jqx`|x>KgVDK?$iifv$S
52634 zlM@5DO->BtGVPHl;xe2V#AP@!n9Fcti0GAz)KJljQ^Q0rP7N2mI5k4_;?zjdi&LXS
52635 zFHVgXy*M=nHf~-%fMaFP-wMe)>||>s$Fb36FB^N~G1msmOt6z&W}=i)!7`I@a*Og>
52639 z2&Q@4KZqBD=oidqJPiy-C5b>1(tp?pT*5XT=m|^(?hoSeARYmJ3Su6x02mxh&j;oJ
52640 zcL(>U1$E-%58CIdLTtAHPXZGGEGMiNf@y|72yXNGU_19$sQ1NSpU?-o?FvNy!XUo3
52642 z;`<=J3!*|FrJvl#p+WSQCzt|i76ch_<Tr*=s-qzdbJn48j!$W(qdpCFd`aWg<1|z^
52643 zrf+}=z)iX#-G=QgKo*c1L;-L+&@y<eTkv>Y;8tzXt;UDgHl}*&5M}EI)Kbl-hxK)`
52645 z)q-vY+VU|~pKbv<=}71nNuAUU)Kl=44Xshn5z5nE8mA*@m{FBd&5@L<I?y1qBQ=Q*
52647 z$LCWl+gJ^wWb<vDw;1Q$iv5)oYd(N<51ii><rZNa?xPe{bT!Ns=-)1k_fK>e&9L^-
52650 z_0c|`mrrrD40QydnxNiv=yKB9Pp=?-5cnO(&f{2J>y+Rg>y-APk1H{TqpVZ(1M2Jx
52653 ze#cs?^0B>Oo!6PxCFMo`>ryOTg05k(>sjcL4t*GBtONRX=zBf-y$St2Y#mkApwkJY
52654 zzs2!z>nN>7x)09nNR?F$)K?5>*c-OhuK>qj<Mq~A+6f)AtW(Ag>yR<lI;7tR#sT5h
52656 z-^jG?XWd1A<guUfw(PhZ8-RKiqEF|nQuP~ba>6>K>RUUY?|wBH^>dkcl<5Gwbh5tG
52657 zkK%Z3>$G|tdR?+XzoGo=uno8K4(i`(_24`ye-Y=lhi;Y7#;>UFq+Oq$20&L`8}{RK
52658 zk6{};SH_du3$~%-a18b7H00r2;|*#q?V1=@=%Rl^{m_ekvEEld0JC9}fhZqi?J!c|
52659 z2lt|_qd{Nz0Q!u8UWFL5M(FQSw1NJrwYHsf0?G&bD7Ii-XQJJpKCGjTMHztg5MBDB
52660 z%z5P9X?<yUP<NKKPbXqK81SQwX}~bMeclQpr0w(U>t#@-XyX)gWIP8nhOR$|?uU&1
52661 z@R9l0j<61yHL#rr+zE6>eu{O{Z~z6sR-gv_;8$Qb(zjbD6?B2`e~Ixtr5vzrThz<`
52662 zGXQpa*xE#6tX0tEkbV+~$9Vw3UJSMo#^XF}c3yYJ`72>-a6=D8`c<T}g8j;e9S2yC
52663 z>yu)mFEJ*UB!4r;Z?<*G7zOmfv0HF%iS?<Gh4et2&*R$^<2xVrYlS-RM*H>QEBj%a
52664 z`!J?YV2l2tkDuz7(1yaeuE2QxjQvf}ceI>;NxcV-eTe*C;A?O6Z3^ld4LxR{Oe$=!
52665 z2W4IdqS60{vF(fYPvV?h_-qE+--_~YV!UsLPyPW8J&*na%46GsvaHW21Tka=+N*~1
52669 z^$f-Y<^cP@@ZcX-9&=S2HXnrt9FGt~5a&)XCzyv4TfRbU`HMKh{4e8~#4hGtg}724
52671 zja)}rzZezbRhizbqr@fFlVc|9Ri+cixuC5um+oL5@mhdmGsh|(Ly6Uh?L2?-Tvk@5
52674 zT1K`Eti#G7&q*1JZD37i<B$zK-v-uZ0<6slb1z}8Bdo~?>oLOmj&yyyU2c=X->u_v
52675 z<vMk^y8Wx#d^?B-g7tEJ58FClg_T#pZD1WJ;B&BM-z4YuyMnUz7&!h)#r=vl_>(RE
52677 z2->F1E@kJiPN;ta{dfO`5V<zdc=thI7tJYytCVIkLcXVQjL_S!2HSxFowfmA084=J
52681 zt50Lw46!VaHe;?oud4&+aSebp=FIc@Cv1;nn@-mO9f2M|I*<%B1nK}c0S$obgV)?|
52683 z@vAI`mElkPtq|8FcCNI)*T~nq75SzQUWtnp>#nG;=)+}S!FBd-N)P(_lAvF*uPzSa
52685 zJ%U&e#N9y%@6>Cyoq~ORCfLU@#NSe~@2i~-`p64GAL1A=3g{Ay15GG+4@j;-u@?BN
52686 z>#VZtA-SHYurB$l>z%T-%%84vczwick^1)fQPyVHT&q;PPN{f(Qns#<HQN7E>l*a`
52687 zzZ4fHQcb<V@~b~Azfs%r>$iXedkcTBNmGFms;OeIeFnHPPR~>rm(>-<txJXc7u05~
52688 zXYFz4@#K4J6Q$3%22f*EW4c6#bu-;rwNbIUvYJIEy>Gl>e1JIBL`BgEq|g3~*@wS#
52693 zY?9F$fNq)36V<*2xE%mLYlGXhu}Z0ZfGF!G0LSW}tvZPRbs7V&0B>O!?g7x38!-Rf
52694 zfcSF5t3>r20CcYR9#MTn(fTOU0D3im?hT=1qn-fx-xw>1#$5r7VPnh%jWK>rP)`%o
52696 z-V!nMrdS)TJ|xO+K$HW0auF-rz^B_jP1Fv4-0nM~_T7O?L>)qb%|sos(&~t@>V&zi
52697 zGgi8t5wp4+CF+W?>5B2{hOy`#4Zzktpm)z0qF(U;{Js}vk6tH<de;Fk#=Q|cZ-uS%
52699 zx*fiGJK8U(1;F15s{&Xf6~bPHXNU$kf%X8#a-a#oH;S-72z?p^y9}F5G#vB6aM*tM
52702 z0XM_HUjGu*hM#P~n7jc!-+(>dMC^GB`eUM{x1saf;Nv!weFy%&9e%eRe*G@EvIFDr
52703 z9(;Kx?E60W_CCgM7sh87){Gxuz48HkXE*$AH`@3Rw*L^k--Gq$N9fyL#Ey@_t$nSC
52704 zK7qe{0{!=6Zru-`+K;{-K)KHlV?KkA9E9x;AvPYuxE#X%VfgCjhzXw~h8)2-eSvzu
52705 zz?$$V${$7S`4Toc20f1<zI=r-J`TS){w~ppdI0S54UT;Sdz=I}PQo_dV$8pVPn<%%
52707 zp2N6Z0DmrEyncbN{sJ5R3VZy9{#`^Hzhj+z3Gwa^l>GxfaT#M=it#Ol&j-Ngz{kYv
52709 zfp>sUNO|8R6+H&{gH+5)Qn4kZ;xkAkv;mNpWRgm*N-CwE{9I0@zDBCj%>a&7ev#C5
52711 zCROJNQgsV~Spe#-`yuc%sd`O;qonFX$NDEoHJC`MVIqLOH>v`>OserzQcc>EYKr!o
52712 z9>ay-Mp8FEL#p|7QY~&H)v_4?eQ(-9s?{T;T7N+*djqLl*d;fMRGS`HYz`*X4*Io+
52713 zJ#X#<z`h+dkW8vmZJ-;e&b@&t0NU>I2JjWBThPZ_YLV&+8+2_!svB(8tt~Jdc!*T@
52714 zkAU-}de#6skm@y%RBzPL8+F_YUGkuNKJ4BHI``c~svqoh+k>R~W51vhaDmjo`T*=a
52716 z)MyW>F~C^(#~lqxjYA*D!QSIBz7y^uH4%N8_#LT9(0ww_pNzWh`k2(+2C1pA+db&-
52720 zvlg6Mhp~9oPwKV%Nv)qrY6He)Bm7|##%T-2?hTCLTYE`ug^k}q|F+L1^<Ga>JK?t<
52721 zVBB}Z&-cK_AEB<j@W*`-0DSgS_|Rt|qz=NKhtS^PBcwhLkop34KMGra3C<n6OzL<7
52722 zsS`P*zP^dnH$|jQ!hYW_A$4jVsqcXAA0zbxZ21G)KYf7IkJ|u@^_kB|{e=Cq-;(<I
52723 zG^umPNuB?O)CH9L1%C5ucT&H>UoLhc^?O}Xm!Rh#siZE0=cR}Rr5NJ?Y-4>zTD?Hp
52724 zSV-FJN7^x*w6h+tgS2Z7X?I)FA=Lns3w@k)SQ_vn>F}eZBfcaZ`8w&SMWj88Nqe`D
52727 z8{JI0aS`bz6G=C1MY>ry@Ga>ZH<4}*eOjQ6me-NKsWItRH<50Q{cQ9-2gh>XAl(+a
52728 zxBZ%QySGTU|Csd6-;?f`O1e`c(w)1L?s6OHTN;q=3jMqFAl*HebdNryd)6Y|s}AYj
52731 z4V)!C3S%&;34p$jnhrb%>;zy}#0ounE$K1Pacq6yR?>I$COr-|9gqHv$FT`5a0vi=
52734 z9*51A&L#Z>?6(YhJPF$@haWzLb60qQ*GNB&F?)KHjc2L{@%jJ1@oa~GjpwTW-^UAs
52735 z{vNBm|HHWXe+DnMCcU~L={1=E__?MN>6gH>my=1q0{-}aA-xtHT6-UW*tizH{2F5L
52736 zrYZp9;ih$@H)DKWM_pUO0Py7v)b|Er+?$BSZ?z-675i_)M%yZreg}Mh2ON0kBI)hm
52737 z#JiyYII;tE?u-P$oA<%(UC`$P13>Kf5V88hOQiQ89(*(nKz#ZLKJyV`@JD};-ivnk
52740 zU#-W;p#5a%NHUDJz;NIpU@dR}xWvD=1hRp_Kr!$#u#bOTNrodCXvx2>B*U3QhN~AD
52742 z_(b3pG7_LyVia(YjHD;XNI^Ok^;L2Jr^u-M1sT`f4SY$4?^`meyhBFSIb@_=CZpQ-
52743 zWK{ovj2f?!asA5w58=%JIcj3;Y8k)-0LHe~A7rFY0p2Gg12)ar4q&`9s{@nBsO<#e
52746 zXOYny`7NMN3zTh%ZOcsn`qc6e@H-i;&_=7xz%Bse-WvUC-3~xIt&fwDoe4Atz9J*1
52750 zt^3{yfIEHP0#1<8&jn-v9f2{xKY$Hn^iLz>_NM{ZwGcckoCv@#3f}-e1z_g^m4G(D
52752 z0DNjxG=Ta>!*@r6)1wg&Mx)L#5dhj816z%O&Br1J-GTHSoq<unJ!Fgn-^VQhRskq8
52755 z@suF>(Zs(uPkH#*!+VP>7e~$w%sn&r=-fSX-<<pM+~sp0nmcXo=(+vpcA499Zq}Wr
52756 zay(ToN1h4U6VlsVL-(X6<dnBogz`IM)Gk^E8BgJK<AC<=PVVmREO#p^cGq+dclUSa
52757 zxl`R$aRoBd-OOFnK2FohkF`Q>1C*}{nTJn*$+fp-pFI0Bp#7B(O?G$ZE!T!USSnzN
52758 z#Fah$e0iy)&&it?{!iYk@n3(ZMpan%WndN21ADRM-&XTCWfv1oI6yQp+TIFw0Vp%!
52759 zl)X<2fMS$!Rw(mtAZ-QPyQ*DWNz$vvEXc*iU2GK#*X1<BItV%1Ix9H=kr(A17k_6h
52760 zw$%MJtK2591%I(@TY`V3TyBGM-%z9+sk#9veG<MgTUXVoI$nEps5VtVT~z1PX?0Q^
52761 zQ-{@lwMXq#+te1dUisB(^_*I+mZ*hlo|>(ut0`&%<Y@bRHB=42htKTyr!&jWn;>WQ
52763 z_?F;j=ihuXRV0uJ4e-&avfa;Hjca)8yzwgJQ|2Om--o%E$AI4&0huB40Hj-vlIeo1
52765 z-9zLmk!?guR5EWDY3uf+$h9Inh|Ctr8Wx$orFSfAidHj3^Ra5NlsO`DpU7O1SSeDa
52766 z|M$O*M&3zspS*`;CiO%htqY_FQ4OffZ@dD)a~%#i?U#F~OTY!-3;@2X<G_(1jt9YS
52767 zKm&IXSLF$vdK1_PthL{4CePSc084>Iz(c`0=KwQ^#-__#hDc2co;Ma4UZMV?Adde9
52769 zI$$eh{b7jz80`OA37d=uMGBh?aL4-17$oU|BJU7sGo`D@LXj;wZW+&_{8?k1<P?ZR
52772 zb98>uTrF>yco|;3)?8=43cucHZZbEUubW%o-P_G~%^mRXUFHYoZu3KP54?Pz`H8u|
52774 z&@^lMY5w$)KOE;7xvofwV}ad}69O_80kLy{BiM|<49LezPf5;sk#-r0PF9MfkBNNg
52775 zKYjyL4AH2Wz%*cT5aWQ6!R=t60O$jN&7-h@9@QSm2AT)Uj4MA!BNF{htI}Q+zdMh;
52778 zhmo8>y)j-jf^Qw7{2kav;`|ASJW98L<gn$Dm8ddKN$y@qUVZYfg81!3uo7&nocE~F
52779 z&}<`QS#9I&+8iZ(MBfitp*Hg*=Nesu<&*7mr2ONmA&wg?bs=QMv-WVV(FF3^v%XW{
52780 zuGyWX-U3<SEJr2IH6DO0)4WSid)EAUl@HC2L0((uVLoE!veauJE7lpwxyIzbIO{Ey
52782 z%Q)Yo-^cl(#%*ZT_6)M$eI;+MGUc6B5r`Kw9P`w0%u~Y?Z4AR4(Wp1l(G`HXYdGdE
52786 zx?bL-R#VnxZRPE0?f6|u)R*TnDv&kW09m6AmNnW)S)+}WHQFT1U5982=C9A`Zp>j{
52787 z&{Uqs=pK2)+`aN{xmm(}iI34+y=NesQMf+pJ>os!-Rs@u-R^x8pN-zN-ZkEp-WA@Z
52789 z?0uy75l_H#(R0po+H=x#%yZbY-?Imwot|x;EuQrrzh^aC2-f6z&a>RJ#Iw*d&okRI
52790 z-802A!86)3)HA@-&(qt})ziU~>uHHk6Hh%)rl*F-=SlX&dLlh;kB+(=^=s7GsPCh`
52791 zjyf83Flt}a?x-D6Tcb8dy&Cm$)T*dwqLxK1j#>~^95pj)TGZsIaZw|q21gY{^}(lS
52795 zT*UH-B@qiF=0(hom>w}DVnW2|h@lY!BKk%2j_4ZEAtE=TrRQ`+lZbi|nGrQ2d=bfc
52796 z%OheVA|u=pI%-<@<?vs_&xU^={&o1#@Ppy|!goiF3*QmGHGFgUtKlz)uL^%Ad|CM7
52797 z@CD(;;WNXhg-;G27d|q4aCkv@pYWdHUBcUkXNNZrZxmiPJRS8^3$Kh%Vt8W2p77}K
52800 zlcC2#4~Om#-4nVqbX(|_(DkAI(AA;Og)R?W61p&SUg+%5>7i3XCxng;9U3|yv|niN
52804 z_e%E)_fq#F_e1VE?iuc>?n&;k?&0ntxwF&V-O1gy{4P*UcU5<)JKpVahq_Hyz;)4e
52806 zife*vbi`=aP}cxgKUZ&8S62tuxrkU-Zp3s~OIH(DJy)iyhRf$lcE!3PU2d0lUUvTK
52808 zb}op>buDxjJ7+ql^*-X99P0Phj5r)#>>leJ7n$mb3_*@_B=377qXs(%yN`rbji`qa
52809 zSl}#h_UYHmb2_qB=&|sTp_yT8V7IC$f6Up_*~Qu3neA-uY~-x#Ovk61v$Ch2YiI8x
52810 zuJzo<h-1z~XS6fi>Et~pITIb1{`FDE1;?52V#g`RamNvS4mkEYb~(03O^&$e9UF0)
52811 z`51A|rD4bCTnoXm-mb$@(_E)v$y~M=#$rO$WZ0^P^J|Pq@9>_m_dJYFSJ<)xtcY=O
52812 ze$RGu?JOG`8H)j~Z8Amy*K)R-jLA9IbntXK#(+n_4a**Nj{DczdslkaBd%?gST@r;
52813 zi6fO~dE`dNn^-lqvR3jps{*(xQPF{CAZJ=wL8&<+2U)nbP%Ev8kk4C>LjG<|!zwAm
52814 zx(74Cj=&F)zXbSx#%j6Rc*UyE*B_j(zO-(DeA2>Iqv}=q7V?jlZo|2T#aDrUSi>OC
52815 zTO)C_#Hs<A9Vn3cu|8FgS&HwuSxq2MTYP;PusS3EE@@>{pqTICSQ*j^-=XOr*b4bb
52817 z56GETPssKbUv(`DoQ514K<`w7)dez1<d@Rl#R0wtQy@C*4)7hI+e)KFALyW-=HBV(
52819 z1P-BQFW0Q5TQ^DTzassVRa08zYrgNK#gkSi$O{(VJzCFwN00a|=)<_b>RoFG(zC2y
52820 zNPli6K}PZ@z^Xh(;ejH~39J##b0AlVRnLpv-nH5xeZa!nS|zegtmA>^NVgQPD6wiG
52821 zZ3O;_baCJlq@S?vg>E%1uI-{+kAA@I(q*=`vaCDAD{^_%tQ8`cLw2?%BmYwi>soa$
52822 zdn5TvhohckYboSY*3-zj+ls-_w$`nXZaFJU#`=)OzOAfT;-7<&4zq9_MlV}gNO!W{
52823 zX1iIhL3&Fu?y9oIHtA>0<tt2!U%67(x?i-N4cRF0J94&Kiy?2cYKtesS5+11>2zxf
52824 z^tsn6LAseWocnHhq!;|2;WKj8THAU+<YvhF)+#Ca2xJFt1-iWpIe}97ib}kzZ{Q20
52825 z@3FRuuP%UW7(l<&oz^1AfQ9RRRmyhLcknkQ;hE?cC6vw*W@SU3U<Rq-7GFiiSTFE3
52826 zvvoJ*M7EFK#cB1v=&;{n?^-Ucyu^}T;v9-Eor#>gh0%Tst8(4i0+&^hl<#TX2$?U;
52827 zJu2fEZ9RxG{Umyf;_=e2TkNq-EfURPC3VT#1^F6}2>m2_PP6zr@>NN9wuVBUv^qi#
52830 zeJmG_YUTx<Wv0+xi=$0*Ya!C#u%GBoJZd_E9+t7#%J&Ma_aG-(x68P!<k!)PCv;~E
52831 z>-qFL<kQv($W`1Ij2iQ(NcwWY8jtig>rTjVELA<W54^e&(v1R5r7r`dcZ+2d*mIhc
52834 z!7~M&4X{>S*(<1&W18w{Jty&yM`X9mP-8hpsZXpzVH0ew!o`!HkcjsndoRtknzJu)
52835 zgoHoOm&kcZ>R~@W%$n0WnP0kCuOR(s;A5ooq+cHfzF|EjR-ckcUJw{6ee|;5Qm#b)
52836 z0CD6;99D}s{*dj-aWeNk&oNo`<(d(zACh??SLOn=LbprQ?Z>sz7VaHtE0tLWzM*aq
52837 z4R4k>-!$;4%y$>1FPkJ9x0SZq$~?kPEp{;9X}-kRB{GZsQ^xCpHHmos;`wevX&>R>
52838 zD47v>KJ8N4AF@RNUPsG?3*Yl7pdLd;hsWhTnOQoN7D`Euu`8_WnTawJ-CoLZ<4KtX
52841 zx*qwdRx;A{0!Y&wTjxM$(HXp>mEsi_q|TY8us?k+eR)s3x=?zNYq8xX$-H*SYARNB
52842 zKz_opi+;5dP-dOPsGmyN+f#(6kBFVm1%8%Rnv1L}7H9!Ek!MwHP<?5g?*!M96;3T#
52844 z1MHs<%gBBstB#SSzl(?Tm)Op}aUpOodvYoJWcSh#nFToK-arS5FayOJynfrrOrgib
52848 zWxj52Rg)Zk=3hH-l6d_PEp}iJJkIM|x>eSD9mJzfTBelT%~4eRHjh`)>a)NvDDzyf
52850 zAFPM#k*09@e*hHxPXPQs05ty(0Ns%P2Y_zG{{ujG=ePgs9{dJ>-IL$ouP5+Z`}N)Y
52852 zYuZFih8}<ay@t-z?LT@>Uw${t*Sqp`GAi$*aQ#K)(fqxV%0opC5ZO;;Z;@R^b`UB5
52853 zBBydokxfL_12QYie;2Ck6PYYBwsIt-Thj8D`bw8Y{wh*_xmZcwkYDL*kw-<!Z(%F#
52854 z6S-UDjxt$k>y>nwhLtvplvl@AdRe5r$-a`j*S^xSE7I1j(qfSdL>7yjDRP>~$ra={
52855 zkt0P87Fi%t{-aB!o+7)5Y%emqf^06bk;u9t(}8N0DoZ+%EmJ94(&1&YlJiO$k_Dy8
52861 zLb7lnS-6laTu2rcB#ZwiFZh!bE+h*Vl7$P&!h&RBL9(zQSy+%<AW~S6+_QodE+h*V
52862 zlC!T!+i#PF5y`@cWMM>dy2xrGD_4+-B845v!i8j~NEVbNj7SnjBuULl!iXecM3OKf
52863 zNf?nNj7SnjBncyu-W0j9f?O+djY#20(h8BnktAV9lCUF5*pVdcND_7=2|JR;CV?4A
52864 z!iXecM3OKfNf?nNj7SnjB()MLj7SnjBxQ-LDN=ZmB)mwH|3i`_yhsvWBndAPZC;3<
52869 zM-qf13Br*C;YfmTBth7bAnZsGb|eTp5`-Q6^-iLAVMn~MBVO1MFYJgHcEk%i;)NaY
52870 zdn-ucNW5?)UN~aM<apsoyl^C5I1(=$iC-a7I1(=$i5HH<i#Ns#N8*Je@xqaKnL*-Z
52871 z28kD@#0yj6g(>mElz3rEyf7ucl}KSqym(!_FeP4?5-&`N7pBAuQ{ruHg(>mElsI8Z
52874 zB2E|)Cya;_M#T9<3M1lV28ojyB+i~e>|V$`5-W^|6-LAgBVvUSvBHR0VMMGjB38H%
52879 z$B5_0i08+M=f{ZWM~ml2i|0p+=SPd@M~ml29}_8_A1$6AEj|-1o*%s}8r~kgo~>%H
52880 zsiI|eh?dzQT4smn<rSpN5z#V7M9UlzEwe-PbdfSUL<<+9g$2>Vf@onuw6GvrSP(5N
52883 zxhcrg^eg)Oxn#xiUSYadnC=yQykA$4!gsIm-CpN=?X!gSUSYj=t4LwJS6J^A)_aBZ
52884 zUSYj=*?&+{VuDv<f>&aKS7L%!`s<aL;1z3lM^-2~_&+FFAX1`-JtAHiHLt`Fuh`!!
52885 zqv@3x;*}WUt$Rh<UTv>M?W@k<TC~D?)n238ya@8zX1dL5o11o2kw{`k-C(q_*==*P
52886 z0xRtpWwSoWESrNiLxo>Kb~mU{ryWo1NMc7ei3T>u?U-OQx?&u&IUBrMw6(G$+uy~s
52887 ziZQB{NIM2rh;_l}YR5V|mi{?**-_Vya(0Z8=oE}a6{C>NQ`-&_Rcy=u&-r9!i5``N
52888 zO{rqTR2icb(Je(rAw{&Z??~9!-4(9^?JF{Swk4%z>o~{>`WDFEn(z2Ns`o>-Ho_tA
52889 zG5C&YiT;T1-Rk*}YovUFnF*O;%q6AW2H%GpXz+8GTIMLoC(MVX4Bx-M&furqW6bL%
52890 zha_i_oO_#`yI0N~Bj>i3bNT*df?-KXejYf+;5&=|(EMB_TJasq7g?&`HQ$T<S@U<G
52891 zzti_ZeyjPp@f^+V)-?G^$hRhcQ~w9Y)BL2!@jP;-Iru+g3^Dnx_IZ<^`Fv>do%k9i
52894 z<`BMf>4@UzCnj5CHUAbu)p77sR)>S1H_mcEbA8TH6*-SN__@Sl#|+2;4u104!E7oP
52895 z;ODeY^RFFLPxEoU56ZuYP~SM>Su2yD&wOMag-mwvQ-!0Z59tl&L7ep_Yp&Zm_=)Zr
52896 zlfRexgV~<jWqtH-4lenid78iV>8MT0Xv+U96?$^JFF5%A=tKuU{hK9ehsk$gpJ!XC
52897 zmF8i-A1vkDnI}<0s95`c2S3Bi)%^UhrRMwbrQ&au*lyH7@l%eA<_C~f`8Ox(NplV4
52898 z-J;b6^8v`m#a4@S74~7xPo+khKa#Q@)O?5dC;nB570^48?ypB6{gZ+5(qZi9I@^dv
52899 z{vyr48(FIP8Nvw7&y+4|zMp-M!B3AzvR07%+oPXMe%kP()b@qu`^~+DFIw+GZJ9<T
52900 z$h8Jrb-w23ez$7=#mGg??8wo4Z~Hs`f3A>qq%Hn7$0mdS({G0Uk?qF6K2i?N_si?3
52901 z@A-bS<|h(^H9sG2ui29uYaVe^^HZ!GZ6N)g=BIF#S$`GDztsVA(J$rH@NIS3;3q=c
52904 zGgb35YQN@Z@{L53&-t6f>Wt=Zj<?p2LB62*`QamaJLGbW_@k!qw};i8ENO`5rwvi+
52905 zOUUV(pPav@5w&z@y-RG;S@QWCH`O$A|1-_cSkesk`Fzdaui3^m>zBA@dRuRk2+16O
52906 z+TbU0BXl>mp}|iT25Nblr}?Q)iHyEiza~-Z5I@_|{LSVT>|MI6KE-~nlOflMm-<A9
52908 z1(~bE#UJ?F2OnvEZr_S)(A_lnjwK~O`KhY;8y~;2C2_8NV@31-9^RrS;H*$-{UwpF
52909 zi{*Q0=6*koxS?;>UqPlAS&+}LRdpZD-)qnYkLd|L59yydt>59_sOV`%H~wz7X1-72
52910 zU&!bVnxCESHXK|h`w}?9zvg<4*`cZ!96gE*j>dNyq3pwopBe5{1B8S86!#JKC2-_c
52911 z8B>lG-!P{T*=%oQpI>J3v*@Op=aEg^7j>QH=gDW;V(Jdf-{3gSTu{ACo@Hi>#g?*%
52912 zt5%wySDbh7=<IUvliRyx2ALqSrHjc=Zw{M0*5e&XNPp%)UsSZ_r;B$;<gd-KR2|f_
52913 zWu!QI<jEMFl&Eq}&yk}aiQn!+4N89?-gR6e414KteL~Xw4VS6rbfm|#7tuJDdb@+m
52916 z&z|IGUk3MRnZfnX<XMs);mANA85}Y8n*6P$I}9EXhsl;4W%Bd4G?Tx-R)r;<G5K3m
52917 zmduRz@q9|1<o8q?3|LPO=2<}9Y4SH0#v2?J<IH@vv&o**mS-jUjo(|QA`E_d|F-6t
52919 z1`_Rgr0Qt-_7g`-s-an{SJbmohG&WunrF`kG-hG#)O{i2B|;uE(25=?>!?>`&N`|+
52920 z5|e-9-*hQhTW9G%Agizs<J|qiT=uSc`Z|8{srb8H?`V$XF3o!O()>(&496TAuE&c1
52923 z;F;aTZv5S!z3j=<UVn?D?G?}RVe&1u<%*-(V``ktQ2bl9kJ$fds*LYR&EE~#s}PeZ
52924 zOZ3^S`MU{w`58Fo$3mHN*;ZpUe9}50v*!ej^(w7bh~Aja8_L|u;~OLVy-o94u7>8{
52926 z{N1tj!oEQYs{-o>wL#MS4Vn)WKa)>pNpFZR4H90Ih$baG7P^@K2fU+_6(aL8)|tjs
52927 zUg4;r2G6j2nP2pd#jJdRf5oc8WksE*d41JU^KWtgp|#9+urv92g-=iM3`Koaq4>sk
52928 z65n{8_LSHvS~p@=8cT$IJUTO3f;HUMbdlc+JJRHuqNX|nSx@o0B34}xt#-)x@_(Jb
52929 zB$`i>-$pKw`LU-l9&)pZb(Gp7tJD5610IzA=CP+4-y5)@@fy!Bbc%o9s9G63&wisv
52930 zar`u3XJaGV!MIiCpl$|#!zIbWdQ3Hwl~24b!MQVe-c-*U9J`juockn8%$WHy_w|){
52931 z#UB2N@r}eZlQczK{d`_!kydpv3w4#J^bO=GeM5Ol-%Xy<cbBL1J>)6<czH@cMV``6
52935 zew)B7{-zy#g4gCV2n?{^CSJAWm;b&shT{Lbe&b3Djf4M<zjHlx%`aWczY|e^M&?Cw
52937 z((u7dxl@}dcWN`ih0NK&blICyUT#8gJ36=>dQF`J{?v-x!_Djsz;81<l;`JWw!Eff
52938 zlWX?tm8UW@Yg~22mzjL^{<W=2Zn?cOW3RSnX5=*`-I<tVGA@_xXZ)IRw&H#;_xtkH
52939 z*H`Z&eH1uYzPB%9H>BL1s-JgtE!XY`&)9m+{^qOpUd?zJa#i{MGuP}d%UE2VUQnJY
52941 z8I2(8Uej`g{fzXA`x(_TDhE@E!EJPK8-A_+lIzU4YCru_`h~0Z<&J0isjJUQKVF`a
52942 zXF%x(%J=tPv%jk>^=E&tP~Z0Q)SKxWA=j4guenm{ul+$vt-NM`#Wnj&ui2Nou<3Fi
52943 zI(-f><C^1Bui2M-)#+o)_lK9KivCg`xoewVu5Y^BsZQ@yzTft*j+gJXN^e%4#>|?Y
52945 z_kCZcXC|{{W-^ndvu~3f2!Rk1AebO)2#X*X1R^3LBD;u)$OS}1b`cO!5fKm(y~ss2
52946 zxq!e^<Z`(RGX2h}{->wAvw&XTyYIgDCaJ&w`qxucr@nLQ)T#5!V=pxAH;}l_zvZVU
52947 z_}9!o-ptSChs%H^<p$Q4?<@n(mK)ewzP1ebS-!08eHZRIUp{Xa>UNfQH1<y^Lq9Da
52948 z-N<h#1D}=GH}d<Hfwpo3OUv`hfTiUIewO>no%MM2EpJFQornHh_BEXYL@et~dBDR`
52949 z1OH0zmH-b+O?W4dN))WuSLwOt`hxt^WS76vlWqA&8+#HdOAkOYaj$fH+qE~h<pKLj
52950 z*R&nGvMt|qz6AJKx}fd+xsAQEN`Q~0lN<SMZTTZhhqvT6%IyJ-{63}Sux-LSd9;Cf
52951 zrRk-?mNRY0SL!I`V4G;<LnXksQUlvcDt49Pdy{t*0ndtm*mGVUYs0tVOD(x)i@)Ae
52952 zzW78tez)>x5%910qvHK7_upLvd@DAPt$1Cld@tTwyt*ZSMcezE^2LkVpI-!2E1uKH
52953 zeYyx(Ry?ukJfK+dh^9OsSaCyB9#E;+ghxd{t>S{Fd==6NY56M-H1@iS&;Z3uBOfaQ
52954 zRux@M*8*M@#YC<!Uifo!-aPtt(>~x-p$Vf3FF<P24hw)sg~#`j2Ysf{qz@JVn+kVM
52955 z<m&oKp-C4k09F;6^t}S$RiOp13KteyFsZP!u%oemO2O0{3P+RO{1re8EF4l;-*Rlf
52956 z!pfHXlES=}{LDg&zE|igbhhLRg;YyEQt-9p9fby76#%XBf6c$!d_MnHzJXVHsE_<}
52957 z$iMjpF6E!hH}EG9_>+Gi-=cHX<x$h~ZqK)1Q2zRS17GrhJo!uVfG>FyQ}U+Xl{fXS
52959 zc~8E9FL@Ob$u;n0Qoot}%e|9p!I#`?xfVRhJ)3Lv-`o>z_corFYv@F|`*WZZ<r+Fs
52960 z?xtLezLUE;2l`F!A~Scs`D<c8u0^-WwP`kR<ixf-;6v_+wqp$~C%2*P%>KF6ZAZr1
52961 z@(bGX)s|cvlH>+*-EBuoZTU=duD$+qv0Mu;=3F^z+Z8QXGkJg3)SI%Vo;0CfWlbz<
52962 z*RLkzZ`RbKvTb@)dwxRy%D%AseAdLYtU1!nni!UC8{cM4EZe>QmX(@Uwt;W$@-ur&
52963 zTfS}7o4uB_{bjFe%eP=*woP-(Pe=W=xqoHb^tbHJmfVi)DQ)Msx8>V#G;5Bdv*vgr
52964 zyS^>IU)%L7+wx1=@-0}KotZVUHrv;BT?2Eog-JY=`Bb)L%$N1$TgF;hM^<mivsQf0
52965 z{IwO|Gw){FzC)F1(I@NppLw})_Bq6dru@^B_>g%L<xQrA-poUp2O9gp#hKePEqI-|
52966 zKGVSK4B&O<l1xJ%%$$q*M&_)R>rc-#FgpWyojEeoK;?FMm)Y1VFXc6D`OE>Wc-$@@
52969 zqn7;r>APF<x2A7u$zPYgx+Q-_uI2sdi(2J>`uy}cE%{Hk>QCuUra=a!k0mXC?fq}^
52970 zuX#Ky?>{2f7~fCo7v?#TT<Hzz#z-6OE%|*W^>x(WoAaemYk&E${*hkY+CS1`yY`Rt
52971 zf>!=aS6lfrJ<`fQ>4C}qDf8WX?qBkJX%c_ZnO*x+I@XFO=|C$#?~-@5@^{+WieG8b
52972 z+Mk;F6aP}<t^C-|U#UO0@>A;VHhya77s(&ywIKCUuS~Wl<X&jLw%uNdf4hvITE=q|
52973 z<H2@$y!+=(>h}}+LaNPDoqDP*Z_4rAKR+d<d#cS|ow~Oze`j01O^U;jHaVU$<#-CD
52974 zcj~fKLrSNh=cRV0c1+|E-&3cgT4ZkO=v0fXI(0~@WxSHwFV%v_sU@iv8Je1zYREJB
52975 zzP?mLcFOk^QmK~fBdHd7m~y0A_$|efE%xQ)yU7-QPQIRO$iCf`H~HM&%bR?<wY<qE
52976 zTg#h#w6(m+hg!><e4w?w$$MJMo4mcXyvdte%bUEuwY<q|+RA%nTX`>;EN{Dg5dZ4-
52978 z>>_X4<y(`yY?nXsSo3(aO&{1*U*1*!Y1em}^~>Gr6CX1Etjp_<ra#K-o8)Wzd_}wc
52979 zt6ksxTlLH21-sENKTN-C)4!VaTbbXBeu{t1`upzm({_FQZ`BXm_5XH#v|WC->vOy4
52980 zXCJ1I?L~gJ>qGe0+~5CSlNXcox6OZ*b0_zAJ3rKBAL(ebfpjd`^ZAMS-3B%1w&l-i
52985 z#+Qi7Xv*s`LNi@M(1Yje1by$mLC_of27=K!9>Azv<TdmxBs(z@IeC&}w4y^f#-m$<
52986 zvCPR!GIpGh-h^Ke%VGbU9KELg!cT?$b2-N3IY#;*9wY{&-x9`|d37B9dM^+=WYl(y
52987 z!ju#p=zS&2vQwb9?jP|8wPHLm@_~$dR^nI>N6GiTEF;5w5u>EjFQFeKd!3&ty^-)O
52989 z7WP?L_8-gA9Vxe88b`mwH~Edyx8+{gzA}!nfc}KvJ)j#D^h13F{lkcg<>LLaTsyEH
52992 zE8l*Me9N=QGrS;cX-MGuhv(T`Xs>tV(;nd%>8>K5zpvar!O=T;uB7K%$OG&!yoQa)
52993 zdb>@mgy-y(cRk0@pZk3FHF(-h{D*M;{W5CVxFRDgapdYtr9bpra{n!kJp5gb-ld<C
52996 z<vfWT#nFrL4vs#-Ysb;M)FwTEZ^EcV<T`$Z<m7%?B0Tag#@Awb;*-4|>VX}BJj1qf
52998 z@w|Y0xeeQtxzM{*JcgVAN1%P#Fs|*P-VZQl;J##$q#r36l)l2(%WsUlYxa~avZvsh
52999 zoMqU)(ChD(eY}c&3Xia&Z2iL|k6n#-@t1I)+2s?C!JbPG7QZJL-RmpzIq0pZC>R;(
53003 zo3N*|gYXFSTp8u^1N2F~5LW__%h0o*ypFuVcF42W;*~5e5W`n-TtBl-`WaurPmufQ
53004 z$$cfR4I@wDDhsj|*AI{jIkv)eEF*jIPI&&!(%1h<j&VDe$rUokag;Crf={3-2jpS%
53005 z<T{x=e;<xtgc143xb#)c$|H~9`U+@~-@y^`!Dr;X*y2R4G*dpfR$ha&4N&yuT_*kY
53006 zzleUT<SzUQ2Rt7Uatrzl(t{;Er*QPsT|v=jdOOERW$((hB0-L;WfB;<4xTBa!*Pt3
53009 zg47~of1NJB)bJd+6t@2+OYsMclSbDPT)nXG2e`UyDQXM!^}iwlU-4I5>oq_yqTO%g
53011 zB&hSOB^Z5fk;LK8O8;F#z6kq2LCpcQAc4630j{Y~2=d0qag7J*s^OPa`WQwW-HJ~j
53012 ztB@<mcKMx?Z3MmNkKo8@-x|lWmlBkoD>=rK)W)&4e@l>;4v>EH@5rd6M-hy!HVao<
53013 z)&BAUYB;BnUhF}#7rZ)-Xi$<p`dlg5nOw{93i_FXZiDFheU49iY5ZfbeTZN@#$TZh
53016 zaOKGkjQv=95hG!ebp%()%o%rJ>zK!1l01WL@k?1_-<S7ZD|OM81ix%{7C|5VQwhes
53017 z>?QbZulotEHgU-Kd*|RcXUKCDJ#*izp^Uh+2GW*}$bMA&ASzo2Bf=4k=1M+Z!+JQ5
53018 zV9nei@%dSbYq9Q>(H&30bx`m|l&W9GHAUolj(X-cT<b;dkbUhZGCu7!^akXv8dCT;
53019 zu9_pS$%ul-OV9gJdF7WSuKts9y{tFHlbyI`iT@rWsj@pUTC8}fhHFla;21OWryS$Q
53023 zaV#~f;OY+ksEmO3lpGU%TbB9(xl-jMY9kmq5X<#1az)BxHPnlw=QTYK>x%9-j@a^f
53024 zf-6y-_$3+gxLn(F4{q7L_#G0ugQ9-um)}g;MCTF)+;|CorH))iP@_SQd_i6W1X0MF
53025 z<d48H|3=;=9`YXffCNYl{zWLKoJ6Tc4HBbH>Lgj}rf!m>Ug{-z>ZbuxpdlI}B^se|
53026 zQl?3oCS5d3v!sXSX`b}b5}iu==nx$tRa%8n-#og2E+&iVQo58Zqs!<DvYf5~tXxIc
53027 z(F4hT^dP!{tfPm}BgldDNP03kjGjVIA;-~A($mQ{DAQTw1iBMy;S_p4@WL7Ne)<5p
53028 z8NcO5zC(WmBcxmDL-c3lHu@NSjC_~=oc<Cx<X7}p<oon#X#WT3^YnT0WBM|Eg*-%G
53029 zqwkQP()U4A_%*XKD|wpPp*Q@7Ihcby!+gNw|H6_iNuFhCmL|Vtc~&6Lu_<f{Xnj-J
53033 z1u>VNglj73#mXVdq4eL$J@QL)t?4jG8zAkE-`#=VF-Qvt6IDnfkOs`u4XGr5Iq0HH
53034 zrWm9EBo`zrBtaPTOa_{`;BP~E6VfY?UT8|di_jMY^ew?3hV&q$dm-Hk=@v*gn(12e
53035 z{8i?&E`xNT`FkFuosf1wIt9{pNJj%*-DWBg&bL511k!rQ56D!1?|!f!gX1e<e+i^{
53036 zkY+X#hq4G5XK*MF=Y6o>X_f)-f~SbWBQS3C!LNhxz&H_*G_L=bB>XzyKl+*Vdb&}z
53037 z$>jbm=KkA_G*PF!UUP4w4eR+kWtwQ4iF_lmzse-*mAxwy0m+Pcd{3S4x*Pmgf5vu`
53039 z;ClIOLzE7H@A3<c4CC-8aJ4g>m0z^OxVYpDd6r7KOltCri#7RuMbxfgd!5|gBexI9
53040 z?FDlCbGiM3-2PN<AC%krx9{pSz=*i^2i&iXn@8@HTlw`xY5gGlCb@k~ZhtAam&>jE
53041 zhAOT}BRa-8CyI=xN@`C@X?vC2ACp^*Wcz6uTmCDuyu>_PFXPQ}i;?zY@*ATBqYBsF
53042 zm$8C>BiA8652IuX`pu)VZr_yK-+&|<0y%>#0DJ^T15?Q$=pWO`45)ql`kIw2CS#zl
53043 z;Mdpu^6P5>vM)J>L_oTJid3Oq&mi+a+dY%ahn6{;EFhmD=fQpFlP{2EpzD5-tl+2d
53044 z(?B~to1YEisc-Rbk=6Xy{GZ7h`5mHtMN%Zm@$x%F+r{<bdUB4qN!&y}D{dAygD!fD
53045 zxP^R9+$wG*=ZV|J?d0>~PH`tWU)(M3CSMTuh<nHd;$CqtjHB-t_rvJp0r3F&l6X)&
53046 zNG=jT5<emri-*KR<P!0)c$i!&9ubd_%fzGNQ5d&AE*>XWh$qAo<jdko@g%uYJSCnY
53047 zUlG3+zb03Sr^VCctKu2)42-*<70;5diRZ*~<QnmUc#(Wvexvdm;#Kh`xlUQDY$7))
53049 z`!b~G+{1WG9)B8+KMB8&n%6yK9)AGRJ?637>(8FJr*ZGikgkXOuYq(WB+x-z7qq2w
53050 zA)N*3bn~8*A#H<n<ZhmKcx%2jxi-pc4rsm4wa;#zvwYWM^7x|3<E}Zoxo<kWWw7n}
53051 z(|7-@4@<5dNF9)J@XQ3H5bS#(*&(U*)VLOs^F2uKK>7ou*C4$F=~+m>hV%raM<D$O
53052 z(*2O`Cd7Fwq?;gJ2kC0(70!#``1!3gIM0Ff>H4qCe-hG(kdAFiM?g9Z(gsNTLs|`K
53054 zydIz7c+>oS#iVJ#{59#sdr8y1@?7`iJ7iu=-s^Y)N@}f_4QY|bfiA~0lXN?t+H;v4
53057 zNDfFkB<3DA{tD?`NN?4zGXNWnm(6{^N8@QofQ!bXkN^{n2O!-8>2^qfd&c#Uu7PwV
53058 zq)Q-O0O?#vXF&q2GXUodz&YbcNPug`Mo0&k&)>&P%ONd-G{=~348m`ZdA?)sbztNm
53062 zPlzGywC?WM-pYk-*^F1sbW2<sH)$-@F;CL;c2oQ8|DWsM_SJRXk$w9Wvkz>m_b-$c
53065 zjAnV!-ar0!{%WJ^Z{)9!#6x?ja~sfZdj`@|kRFHhu=)ESq<bOV3F#I{D6bfd6zWkY
53067 zB`G>Yze48FuW~QBLB_2}@B|-bNg20dL`JL_l@Tir6u%R{V~2=$#ec9v#b1=gY_qad
53068 zS;_8HRxA6mdu0p@{IbP81nunC5S)MgDS1j-<9;r!hZr*{h!IWL_sN&g%1>~n;eGlE
53070 zI*8ybzVsWQ4^oU$^CZRCR8Hwzph>HGO<J5c$>=hFCK(vT)oL)#gz+dwhgeK-PUtHX
53071 zZOwO*$8h$DhH;-_M5_eFd7$el#?RY_V$`LBD9+NYrPFW*l%f~HKKNd;8RtalGD*o1
53072 za&G2l1jne1;@9B*Si|T?m*D&geTraQrMt-uu)Q8_;`CT@nzWq0g)^WyQ$p{=BTy$e
53074 z;EeJjg7F3KliyEz0KY3uI^^~92#)z*K?^%QkW7K?`2-`hdE{O95cCvz9IXH>3ZqoY
53078 z5=IC+oZviqK-NYG=QG%EDbC^#QS{XLI>p(7S8-mD{uSB;pZuD9&SjDxaE9zq`HilB
53081 z2N9eNvXQG{dz`e?cN3f+{Ry@>Jbi)eDaijX&;)G1O-EsSJH?p;hB!b!i&lABkes%Z
53082 zpiOF>EZ40BV<6dUh!3wwUVTZ{Ko-ByMt)O6gu5GO4QWx*Tqfx8^GAZ788$id_nw@G
53085 zIk;X&`~l=aPmX>p1>hH2%07Yfj-p>iJlcWpC3g``TGrCCj6jdLnxc2kp)%&voj5bi
53086 zS0XQoOJpl-1s<frMSmjs99#K+P~cK=jV!5F@Ac+ZT2aK&L||;yMt*~|4o~KnLq6P;
53087 zpGkzAt(wSpL;kBx`2^$-Y05hwpP$V0aU$qzP5D1S{+mtt=OBM{Q~q(t_crD42kw2R
53088 zDStEM?`q0l1^H8&^5;W-2GPts<EN7s<X7xF$lm{)AZxCHo_Rj-^(o|7ayUqu)zEup
53091 zZ-C*P74#sA5q!HT#_<}aC=;hs`Q1=D3%0ZAe2G6ebH9Y5<XTBrOG$?wJnQL3iCrj*
53093 zKc+vH{S;CCQHtN(dK_c6(Whjr-+!j)yY>vlnbhZHM9&v7>K=WWzAVudeQREq5mMiz
53095 z8C!-i$=FJq7iU{Ak{ml0XDit@b~5_4FvRn78OpEEqmLuIKzcA-fqr1@1{rblCI%9X
53096 zeFvk9vD+}dGP@I_#IYZt?*e<2K}p#!WF)^AFm57y8RM?8-(%cL_8xjVa>k(@xq?wG
53097 z`A_&yh>JhWA0`(5Q_xd%{s@1BX#8jVXGG<X@<)lnALEbV924{*&VSB-4&46)e}Xvq
53098 zFZeHrgQMS!!GFnrN$mV7{uHtCU-4fNE9iG!&~K-rkB*opKnDO_4_aR=79jP+7)D+M
53100 z4bl+sVVQQ&3he|goB~p)m-f+qIzXoaKTe|~z>mO-z=?C{Tsn`=2X0(Km(nr140v%B
53102 z0@hzg|A}5tZ=g2<U)~4&_ygd>9|QkA3Vinz@*8m5ztCstZ-L)l1U`Ee`0GvNE8wbs
53104 z?*`cr@ZBhz&StQg$aTPT%YfIm0FP~B$FuG11a=}jiJc6520R8Fb^-e$yO4c}UBoVC
53105 zm#|COWyop3XTW2?VYdNi-No)^-(~l(@3DK4!+^hj0etl``&ae~dlk6qb@m2(ll>3&
53107 z7SqIt7!}ijUlt;t0GGTA-0>Ij9&iV62Ji*&1aL%3Nh=v8tK^itQc#LY3HW1JnWl^=
53110 z=1A>8a)8(l$AeWLUU)VGh4n;<!%$snuo86lyCc<aDB<^B#qT|WmXlJxyO-;WaDA%!
53112 zp>oM3m5VRN?FnBK?vpAPU4;9vJ?Z^F)@h-qz_YDnpxUdz!!(rv<Bq}8$r6r{XLq9N
53113 zNY-KvplSkI1WGAuz%A4eye<tdgI8wVDO&zS<@?{SeB$-5iBq>#?z^{g{QH37<7Wf)
53114 z$;meWT5!N!HU=-E_y!`qKL|ySIZ%F3M{j*Y7M~x~((csj^%v0c*TjtDEBD@4+4erj
53115 znA#1zO4jm!1Ig;D8u;+V@PHG8R0~#kp*VFW8|n`P{60-|lr7n;Zs|^~;nhmgVwCer
53117 zvV&!bR;;U{A`m07ct~g=AfrJ?ut8214yxMPK-p)_W^_v^Yq7;5s$MFtw763a*GxVT
53119 z09sKd0UTisvx5~Rp8@sh$+HZo=J?rDE-&H-E2t_!DZDOFCtMX*rH~JY;9X8t3siVF
53121 zPf?pn4NYB}PuAA{jGv0E+BvPabO>9zi41INe}_-Db+NeSdx5-5$F_zi<?wr}8*3v3
53123 zD6+trP^t@BdBgaPFtj2t1gMZ>>(n_5VIWz-wyvZZTO4gW!WXZrU+9BEKxbHs2*D1n
53127 zp)Zh(@5{${Z^~InBY(qiZ!H}F{st&R44!20;_ew7z-))fKN8GF|3Ob-we_`E$yG1_
53128 z_%CUN;zw<TRTHfc%vu|*;7U22$bCs{1z}lOE}Vpo-~jG(NGxqMLbB@uOEShK`}HL}
53129 z9no41@ZlA54ISm0cn3QBG-CM<VRzGMw@j7M838}YNpOC;i61u3Bz`#lbFu>QBZ&A>
53130 z+#{SW>nygzhh(>tP?mK_F@f;WU@su`Yk-xj=}b_E=2mS%yG>Vwio`Cxr4I<TOA=A}
53131 zaMI<`s=JA9I0$6dNsE)X+r<I+HLQ6cs+osCAjqxe4+q?ioXc4@EcvWz>Bz-msc3gb
53133 z>va)?9r-))>Y)5p>oo*Bsy0-=Sk{<Yzht%M)EvHGO0g?ek5zN&cAroqVMP!6EUIp(
53136 zs|BCcqH-o%XP0)U^GAY12OcWy(gbD;96OM4<ekpaMEwt^B3&74Z`k55xtzIr<wpy?
53138 z#jLu2k_)2w7A|-nxS$4HP$5IW1$~`C<bt7H-V|(qq1o&c4UUIrx#AvM#N$jjZP73`
53139 zv#Nx`ikc4vqVZ74r-h?}=YpeFpVu3(Qhy}k(>xJ}>PmQAF{|oKhp|2NXoLr24rokI
53140 z%;D~E1Vh}FcCYb-e9(l}px+fhqQ@U3wc68UCRqtYFPfD?qP;CFTW8}5rfqO>Gxs8s
53141 z?ty#d6|;a}b(gN#HO*-;ybg!%wfd}BE=$1T6spCkdW=BS;!s0Aiyyc<tx>CP3D`#!
53142 z<X;_2>9P21PQ^L?pzhK%LsNC9t~;#`k5f}^AzM&&`>l?U#Yq*bV)&4SVaM-<dT{HG
53143 zlmG%OZp#{*Q&$ZOl;3b!+?q|XgL3~K-!4D=<R{y{qaHS|YOz@vj!D?!x(?#4%Yk)L
53144 z4s4Qmw<=mk$)E&6jG@jbu5^{BDV(l`(82-7q)R8ROoDSbnqIYT-JO|2IxDnD<vS{w
53146 zh{Xa!w^|2KZWC#s{D`W>Zu?(Lb-Iv|RGSnxkqi_+=!?uN+DGPwrms#JovT)LcCLtf
53147 zLy}^v6}rvnbiW5F-iL1|Z;2G~l8?32vt!Q`J55nsC#imt$a8xqH=k}MS5m90b!sp3
53149 zlPX(P7^)z-_}fgc8!k#TUsNZ~yv(FL)3^YKlA=)r$O^njU>T~;NI0Dg7b1mBKA+VZ
53150 zg+ZB$WrF?(1u9~RhWZ8vrw-tr1|9BHi!JN3TSGB_Chv6?=2qNZx6|rA($k#@E54$~
53151 zrC9jKMIxu9lAf5`7M<Or>w4K4u-mne--{N-+L?SMIYpF6n#`1)qCXgb;W~_{#z5_1
53154 zznaSNHzuh}g?6Fxa^6eM7G+W-9o1sW5510#3Fv%_Ny9XO41nLEAaqr(*u_zWho&Av
53155 z?43F=lbPgXks7~mqU!-&8#O&=ql(26E>t}BkX2C}Ad@mNUzcIgLsPmE1H4y@<TMTq
53156 z?DJI$A-l`!WDdX26O0>5C>iw`Nu+T6d*tleZD>uZ7Sn+brLen+!jDEG1Jz=WG>(5y
53159 z*%X!Y7!T%(E?dYc>^@hz;CG~As^*<NCzx<>3m;}Y7-HGcP%sYqRNT|qrRg?LDHpIi
53161 z;qF-@;Y=1r?LA%Y^kRI*_`j19sLXqP22~vn^BLp+&fL|}U@{lwT5p#-vlPJZJbn;4
53162 zN-QUC(3x_wvO%Gwi`y%-qryPhpAcin3($+8?;tP@O#l*9;W3K6C)j7xL1`<D9J*O|
53163 z7`kC-{2<L%@|KLS=E;RSi*sgd(>->Z1thc`NVtG+AjgUoAluTUUy@LYN30ypZL&ji
53164 zoKN4xWRDI8C<&y4APA|y(YP5TW=OUjuWMTB)V?7k3e*(8Z>ir^j1|TTimlk0R&-k+
53166 zLN+T0?i(Y5C`>3@aj*meYAeo)@pZtGWRr@fSAd|-j#MJ(hl)^1p60byq7ie76CmXG
53167 z_4hT`tX8kuYz8Ve9xf<CF;WiA(c@8UY9&=Rbbr#7kHm*Zb-N#mzByj8MO=2P?n$c_
53171 z!|s0n%=!&jh;8I75g-9FRklipt^t6dG@z_m5O7lvcs)*o1Zbd%X=DQg)ke?ncQ99|
53175 z_Tq)Jm(N+=*^$pSB%?VHs9P#{oxo<uoWM)etq>uHiZl5H)2PK}y`-;4w>vCBA(CFl
53177 zjG*v2tX|9bkC@_0W=Dg;gsSBYZ@FxVPw(*Ax~B~bJyS_3HYHl<^n1F(eD!9-^(jvT
53178 zbewR?O=TxOkbFxVM`AEy8<Dj(rRakmYuE)v-EOSOuwQ2zH0-acn|SgIL^Jetv+QK2
53179 z4Fvslok44<i_bZID_4qefQQ3=-Qnsi1$&CBr|9d64?8zAOR0OZ!2Cd8-==<m4y#M)
53182 zF|Wbc5<piJ^;>tN;Dv)O2Pk+^8f{kahKBt0Varf`YwFMHlDx&>hRqkUx-3DjOL!ca
53183 zgwq<~$905VK&+7{a8EkTZK1xbj`0^Z(X&~F-49f$x7iUYX%VWTt_BSSHN=hyla5Na
53184 zXoou-kwV$2I|4q3%jNTDvh-|YR!Dcd9qz6v1*_ia^gDndT&`RwlypO}?<KdB-_p}S
53187 z0!H5f-{JwmqNNU3BI)8sJDq8bTkM)p!v!Pg6yZdet7s>xoxqQQaaICU4fQs)A$NuX
53191 zCs-@y5gUktX|gr&D|x`*d@GVe*gE)Ok`P8#8ForMF1z3GYYMSZn`&~lS5i{f6(k*!
53192 z3|g7em+$JFQgqu>E(c#%ozXXa-f+*XP&~OKp86EL{e<z8$r-grK!@oiQ>%SpsD}!g
53194 z828$pTn9Z)Q{3H2pEp_w<x+aFl5p6(sp$C0s+TFk7O;AzcU0`YE-$x^_Jmw{H}e*J
53196 z&Kl|OR>|T$6|`K8hCzU)u%H?gv_38b{jsT-jZ)SJ5?IEDwA{t=9n1u&0_r2f5sFRM
53197 z@q4l$XRKkb-R7yJ^>oat*aJD;tt%114TI}mF5Hfc(178>A8<QoVcqBMve?2-E`siY
53198 z)oZf_48>Z`M5xuNE2{Sr&8-PbjA?Mx%j`~z5mpV=?uFVhYXfR$hOC`4c^+`!51^s-
53199 zkR@bMb$%28Tz;c-ECeJjS+Zzeb^6GFMiyg_;23HFFySm1R&%xvm;|&%5GSh`Fhnx0
53201 zRX8d!k1JFNq~bRB3a1{(4HyxJ77PeAYqf#G)HhYJ25h!Gzn?RY#p<={Q(Wazz+nv-
53202 z+}c-;xRWk-#;5yx%NC<dl~BN9DZXfg?20uKWC6D$A(FvR9`5tS0HBKeljI%|CrNU#
53203 z?4vdYtwzT@ZiaIu2s1D?5=`vez4^)x7o?;!hC~_jLf*L0Gzev-55*)J;dQ2UtI4WW
53204 zMK`=8NoMkyvN~Zwgc_GM-4EE(Fms_*NXmn4>l|WW>;4f76whX}+Wb}!Z!xFKB~-U1
53205 z8R+7lj5wf56ETb3W^;wq-af<bwm=7K8cMnVn=Or@WXo7mwoc1n(mo~M*)*C2-ZQN<
53206 zz<U{~rJqw<D7E^=W3^%%fE=sadSIO44+)DN4typY{;pb11ae-Riz|V&eX-#I06TU3
53207 zcjjZ#M86~AwxH>Hmq&g0v%MesvLknS`#)qB|NqUY@&87?3zQr*-b>!79RdT&Y&GRT
53209 z`=qU|{^4+0<V3f-EAxNv%K!n)StdY$m>kz{8oz^_Te}VN%OoP0d63kmH6@ewb8LD=
53211 z#bJZ0(n4v3tg3K%T={IwQSn)99g+B)#C-es9jcz~=8EC)Rth1T%j)E4p$r9mYO>;R
53212 z8jRy-jb9$Whn!ivm6XYpYNvyu?ZNAjvmBtlLvAOLGJ-UaKb45bI&e<ZTf`y6gi;yo
53214 zsNCVO*i-)b4!76o0d))QjW5$*kTcm&Nr`k-J3b1z>0}2E1a?boGp)Wo&<ZWuAQgvl
53216 z@=Q$hJ3F#16aB!qrkx!4HYfRbQmdLN^Q}7QKgO$1I?3@5{`Y(JE!(qK-|+wU>TC1r
53217 zYnnwq;(y-^@}6gp0~_a0%pUiQmP7vyW{-`LIgQ!l?q&bS&mJ$#o3qEA!*NIJ>@fg=
53218 zIeQF1kdnY)PNzaXE%WA-Amp<$Z_aH&J}-e|Vj}3nG;ghWD#+fQ>ujD2YM#f5A_7Gf
53219 z6M-rcfp(p<>B(eO)ju#e)H-8xIHiWoX6!Oya}#ywx&xP&nzJ=Pe;Ki+F+q|e-DK|H
53221 zn{ep*n<g9n_K61Fs!vQb03D{)AL!^c>wD6c-S;=yv4^A-Kvoz4^!R8-Y;RCWeMB2J
53222 zH1Qs6*q*Ms4I4^h+OVNC{jydk&Avl_r^)vpX6}`JSDH$Ix>=ICNfT=K-)27DyXiDN
53223 z;A%CUmfgwJgy|GDo;{jQeXXX`1gqOln~bM+m(L~5r_QCN?vV-msb+H+(t>K68qN)%
53224 zTFyIx+dG&l5|XR_dz(~OExn}!DE3d-RD}e8G^sks@@O@>7h5Y(xI1&}-(_k=wU93$
53225 zXNb$VhH9aByzY!E9&b3~PMDYy<nt5eCAaIp%Dj{yiA+9ILh}-umZWia&!(k|2L@ek
53226 z%bqPuc7MR{-^H->|Cd1gUvKBxjot6Rg_qGk$mVH!HbB|CnmrjH-!1d!@iBnfrI0^W
53227 z+T+bUv6CdI7S_9psgR)&-dAa!f7i5Kd@_Q~r+c)3ZVL&K&ClM|RpU}Mq*=oXoaFE6
53232 zXFlS~6{L1H)tqXdP|dJ->GDV>739<%ah59X-le=VU>zJOr$N6|l2d|}*@c!@nzOxs
53239 z0<PU!{`?`YZ7-(3c2nOLej2%)qj3AYWFIpRa$_TQwWYU&fLp9q>AV5Nf_!ge7>ag0
53240 z-LzO~lPm^kYJSqXUb)^O*4^Rp&Tn$Tm=FSWo9ma9P{f!&EjAQWdIygjw7U6eT3#1A
53241 z4o58=LQyG>(ajZ!K(Skv;7WcFIZZ5w`~_0mH}f!-&5)vmix_CueAnKYh;=Y%XX$*<
53244 zZGZAm?bXTKgL}FC`nKEc<QB4qZDu-%KPL=;(xeQ7?P+8-XsfHp0pt*JZ}q!`hR}XV
53245 zU=YD0BFve_*;WhHVtSOTHcj1XP+P(t=T@i9y46jcDOZv^VDz(<1U-S^IzRPhd};0p
53248 zT22jAD2$M$*~I+qH^(-9pJE<Ko4+45-=8rbF!4zGxnweaS}d0Qsx{!V$H$+K$5XT;
53250 z(?WT|?MTK$cs(c)vGJpLp1n%O$U)@5>i(r5sG3$7?HoAF6m_vckw1oz-f$L|g8^xZ
53252 z631I+a-_W{IFr}=i!^{1;b6W`dXT_vpv?vXTSAJ@mz#0q!TG**`!5N0+1wUK&e1(5
53254 zhK0f0`thSw-}GszWA@wr$V%HtdG_YRqDgDkMje)cOfc=?!dH&jw1~s*Q@U4o4xF;G
53255 ze^qjyOSjMMTEB41^(R*o;Sp#2>HO?{dn-fH(Swif3k9KjZLO^qKLg>=OWr`ZxGMt6
53259 zuJQ55=1;S_6`RkO9xB-K88ue9*|Ja9Ox+WTMlHU=g5GjcSZ1g6+|NUb;tzLpYZ``Z
53260 z+D3@-5Iq63@-jK-4nJr@xF$9R)q?>)1fycBihfp7i3SK;9+iui8Yj@`F?oTsdidip
53261 zN;0WfISvB3ZcRh$YdX`-O!h`$KA0OaSz3r<e;w+j&trgo`GD=SBO5lX7@3=hUP$eq
53263 zEE^t-8wF~kawwe(;wVjSsEgE|mHXe}q5=jF(W<S!W8f$P#A(1>nziTBMdkff{Ky68
53266 zU*CdG{}%O(uB0c5;kUNbel4!1H^UHmkgSz58frkr^-dg^j{_?U0z9mN3{r^#3L~1?
53268 z9|(NUTMnvQetP@-pu@-+TfV-$oQ-$&_@*2)vwwlxCWK*gb|x3!$&x(>F0K^ggPUjT
53270 z6&ObQQ0_G4OQd6SyVZTdE<7?kwclmn7i=b6ffXnQ@-rHSq4U;_+l~Kqi>&14IzF4-
53271 z*}>@(b1s-#$U|wgX+Ql`W&0Utp4c5JIo&}`OSrSkB3A13dxSj|jN}vUXx8J1dNa;I
53272 zCOrQ$7vCCoS@lT9<?tK2;a817%5M)l-99a{C^h@ApwK(}i;68<^7$Ozpx@Ei8F$zm
53276 zK9_}j5;fdlgNVVVwZ@J4!eYH$zU^1NHb8G-*L0__D=M?iEKOe%4%oZaj^zVTNl0FK
53277 z#g-dq`3hb~&g08jJ#lY5JuoI#9y6k)``q&nnup)ynpGQT8K8539A6hM?o2eqDJkKI
53278 zlF3D7(Or%SRN?XB&_wJb&gnXgLcllS`a`}-TIlMh2!}&k@g(}HP_b&=U46x3A*N{2
53279 z=F$#HNBhY!uGYNt3_9OL(Ldo=-F7It?ugnH&K2gGHZb4`a8+^jhC8xGz%sh5P|4(H
53284 zoz-hXm1%Qxl{JI^yk>c<dnlUd&3bbqq5bBSK7QQB>GMxsG5+LPgI)23)sDVJ^S!w;
53285 zj#;{EHF_Vr6k~H$^A>69ibnjLF3F*tyUpHGmMiF#VmHTnG9eaK$)O1@@cR-Re&~5N
53286 z&2E9ATzq*VvoIV9yDh^f^)2`NLBa{mrdvXkh8C_`7GHW&r_W=z*<-=ZUN$`uQf$+@
53287 zNB3VaXRI%V-9HAEVgqh3kdeC*UJ#IELTND2&P>h*{$@@FEo__2pIEnz7f2x*L(5Qq
53289 z#TAaM$CI+=KYsGI14BJGo^rW8Xv<gw9sbo<Exp#&M05x7RGl5kpjXsUD~2-${eb0l
53291 zwUiUfx9z{YW6c3tsK<BpOS4@)-R|<I<_>ON9q<mOaw|*y2QS3%m>Z#?zbTQlM24$V
53292 z6CjU}&)8U~-q7ZxlVn37*^nR?#-iDDv=l3q@``MFoTtlXCOQhvw8&DZD(|b$$x7ua
53293 zKu@(>9ZGRgYI-q~@(-m3;t?NbprnP*k3zSo1VZJ|5T%J5&Kn30_VgZ8ilhpePp=<5
53295 zi&e#3u`_8xSKT-V|IO(I_#d29e{dkQ%Np7`hF#%j++v{mt$2KzP1rPMSe1M{GCLh8
53296 zxom1Un;ag<<_5D`K%aN`=!_U=!s21VJ-xEusRtAQ$~^tOE@PyuIW^I_A`wY}W}Q}O
53297 zAd<=SWcq?^-sa&zuqQBc{i4}W=`)F&zRfNtaneI>tS`~G$8g|2)|qm0wghy;X#E(S
53298 zJl34$OV+Kc-xmPDl}(Djs8k7NYM1zgpgfCD-fEt&Ll3BwimcXk^1GUxZf%)vTvzob
53299 z6O`mKiJoLnBt+sgZh}+Y?Q+2MzO0)q>M)@e`-Y^fFy#kw$xY>6U-z;e>Q5M!wMV#p
53300 zo`HO-Xr!i$6b;{CDpl=tB%E_sy9+aOi$A+_HWN(G77cdb&FechR|<Vj_mtCS(Ejdx
53301 z|JFWN%DLd;VT_%-0@(a%_6-<hbX1F3pPaQ(_Bd-(D0S9_IB-P6?{bnC8iQifUGPw!
53302 zy=Npmt-myPWy#x-2w3&haIiO(=!q0pmMnp!o^;$nl@+J0k2@BYD=TK@Z9z{orO>cF
53308 zYPB(=3SDMx?QQxDV6BrRpn<J-6_X*C1*gY?&CV%p^E}>`+{KmB%>F51|CCr)X`inA
53312 zBRA5XOZpSMDj8F?boM`2YFFB&1Fv&`#+|^g?e>v<naZNXhL|Epm?~9>va>!3v{uF-
53316 z8pg1%{w$;~Jb%U+_X%6>uQT(KkaOwl+$m?tH6%o->j5yL4uU>N@9#UbxA)+Vj;{5+
53318 zr*`ak{=PhaF!w%wS~v^ES`QDJL1t7(A^`Ry9Z@@sjo2uNT0S<Z$uv9-h3RQHZ72~7
53319 z2gwXNLs4P;TbH*eP>WOR0W3_Hq@Y&UWD-o;Lj3h{vD9p^?&*}?wS#)LWV3Z8gcw}g
53321 z9@LHQ-l8V7@<6xEJv3v$xpY`$v8AxW=sGCpEL7a!5FhCG3W0VIjMa}`K+t}>bB-(K
53323 zgRs*%toc>V7P9v5H^4d1cG&FUjN3A}-+hc`#mxDZY4fM)de>k@6SlP@{^4nzmeIu&
53324 z2Hg~D!sr?3vQMvIT`+G~Wy*ma%Qsel>T<0>kK-Sg@hGGphGNnhtPjqDbp7Gy%<o)%
53325 z`~vsNLpm!PS3Wa%-7imGbIk?Y^U?k<KX~NvkAAHm9%F;YtbxZMqgv}drfzA68t`C=
53327 zeYFp$g(-CEhu_Dirv04h)Y92$-gfUtzwP_=+ejbHGL<g>2v`KS_0gwjwo;Lv0!PEB
53328 zn*rvjw+T5j*A%k(nD{quiht{-#7*By-gI>0rkf`I!?XIx0zlLXAeaYd)T#vw25F83
53329 zm^sbZ{Boz$>2Z48E{@YxEn-3gT3S8DXuun{=;5Hy;^Ap;(5K#N%F>&CVNEk)LFSD(
53330 zLLHy0RDRoX0HCLj{0wU0Y9LUPP)`JH$3{hBqY!WoI;X10ic!sqQR<a5-U$_SLZxz}
53334 zSNA5Trr(~=OVxl`Hq&+}C&TK2Bk;i&czh`vQ-mIL`r_7z%i3Y}$NDZblGD9TT-2-k
53339 zDqE%^Z~vd%y$OIES9u`(UfoAmciq+Zec#j5$K2C%X-1<N-PcH#WXY24kuUkgU~J3y
53340 zz<|MESV9b#u!L~MU}A7K8wi07Y<3ArAb}7_Lb5;-em2R5WEUK;^uJft-P3bOSezlY
53341 zMw+gwuJ?W4d+&SS{TWUeBUg^@eUvjYR(&!mBJxKDXqJ^FBR|-fywxX?6r>5$Ba*D$
53343 zaa^A2>uAot5C0j-lsi8v*;<-IB)ua5VE3DCLnS@rPHaT&T}J2jO7|up_c&pWVGzz_
53345 zj%Aa5CY21=!fMd#3NRi{H?*7{EF=?qc1NW`-Q&`|w2M<U)oX<Sw!Q1%yTpglJJUGS
53347 zx&(|Dextj20%;v>9s+E$K{nAU41v-1ki9cC6-hV5(xthky@ErYkk_*JtIajnFW>dR
53349 z4f5}Sv1vsZz`$(_)=h-fVSVfy;!$5Qtaz=w%DJq#Li|^&5DCujh`3S(Q;&IgNpeNQ
53352 zZF*@c*s%JMT6ttdjwKffx0@J?-99q)mbSZebLFmWTqXwXH%y{8q}IxawVZRoNld^L
53353 zS(T%yMd<brd?qKGwMqQ-JLj2H5)%ITrC9RnYtbr0fWXJlYn<GEOQCUYf2uEK1_Q%x
53354 z01jSzYNDYe;^6{xN#t+$gL-W0rSq>Hkp`~I4eU+w$tacB1pC^cDoCI~BbsOrx)J_P
53355 zjV`B34Y~k*J%rK-p~0`niFlwwh!V+PGr1AF)X6hd3`Kc=N{B~kqW#i^#}MluMBL^J
53357 zn7zFo>f366zxMmSZ|iA=Q*wAKn5mIJTes=-q}u(E8b&lcj4-*4JPhJUq*{HhR?MU+
53358 zu-&nZD%kw}2-&GT1>MBXz>a6qc19sV;*<p(hw~6(^UiI|{e$c7*giI#1bPw|_O$aL
53359 z^^%O!^k7%+SXaNX7ngu$X&r-MSQyl3#Un<nTs&CcmMfJ_-W9Xr?d<Rw(vq@%Pa;I|
53360 z=~O0%4uR-kP_G0VJ4>nUW66j=7NjXP9ZHPd@CrF{;dwcs^JXSUc$2!Ci=rKH+r{t0
53363 zSn@W*rIUgvF~V&CD3nZiXoysK9KEJ-svW&{)(u5L5?9baqIA-Pk|=evKxfyzg_F1q
53364 zZvm_dyRYETD*&%SPT;xK4e!GFnRE8L(43zCF<*uWu+)2*j)>sm1lM^3u>;N}-S;EC
53365 z6US+uKwA{a`#5e0qCfX3kYah3;?Dz-;TVy_L%Ch<&QNZ9C^Qhcejs}UH_x2~Zb5Rd
53366 z0Jqy7#%&K%-f9?1Mn@P63HEXWd7u-!_9BL9U%O!h8Ft?PVlaB~1FhKqwc7{w&u<$Z
53371 zQ%C}=<Fw5|T!0HMg+nq+!9_d4XJxJ41;Bg{3BJ{GKASFLKdhaZ*-aruzvxCM;1H=_
53378 zwj#Ew)_e`=Pp)%|1)h=weX=xqLX%?QP{cQq*FADhtKU#dwG>`ut%X!-#(>7yVqxxx
53380 z0vTN?npTz%Btqsu08%vN;n{pEt4AtwEahi-mP>7~6sBU^CIvUcqM1AVgO@AMQm1U8
53383 zM+Pcx)(A|X5PRU;(D#rUM=aR+3>FgZaF_;(4%8I!QsNHcMj{E{i^fZ%D-YZ0fixHe
53384 zSl7t`mUzy#MdXN25YG}HAl^^Bm3SE7Z16nsDeUk>zbRk|H*-Wx>mmEw1lR$0zzWQP
53385 ze*i~732h4z-4g)zG8_Lvur6K^)^UXO%Q{%c5X3=*a}yh9LGTw6cl8Qz&-`3*_x&7k
53387 zyxG)wkYn>~E`NR?Q6>Gr{|I_q<OOjx=qC7pr%ZBDB!nVrM5t(F72!)FC2-Y%Dlje8
53389 zq?16B+{@@-V^0E>^{`k6!%619wh2roO{W?9rv@(LfD5k}T4_sYX@+2E;-?NRLnoOl
53391 zRsIQMU?2>z5zsPz8VE!X0>AlFKtMtxMkLoy9+UOpqm#b<v46+l6M)STY(E-ZU-_vL
53392 zX7PKS6TAJ%p92oS^2yeUjS2L5W#5mD2(~GFt`8B-P_-*S#O+x_1h@mxBe^}RfG@)z
53393 zf{qgQDl0vtG=!FBt%hJ1D-gy=g?}`p+JCqipI9pPQ^n`fm?*#-!?P0xv1~Z@qad`>
53397 zlwcYrVGwC~A=m<+1^*NLH}FaD3Gi|7F7Qt9Ht-~P6?i4M54;=<g3lvdK9Bxofr$&|
53398 zca?jr+tZi*2s^>iY)7|7H=Izj38K-gujTA?|Bzi}8;9#SS$d6DFBP-*2gmt$VqL<7
53399 zWt&S#w(CRdq-L&VJ0%iWU58x|h*mdksNn!Wu&e__U#2I1eq+53`Z9&7E_bi%T*AoX
53400 z!Mio|2D?vpzSf^^+DqD6``bpkujgdPM$`-6M1R>ZZ&jrVu7S|(#CSV_-A;$g{?cJ)
53401 z_d8u0c3dYL{-8(T6`HWtyEZoWsG-;0@B6f&h!4H#o6P+tEfO6Ilg!Ihj9uAy<p(d_
53407 zT?)%wv8K1K+oj8Hnw4mgAz6xeo=8j<sQ3uy^3Z}5Hk8FCNd!_!k;)bS&uIwxXu>-<
53408 zb#yXxb)#^i?vI9y?9`BNS(+F%qNbH_`67!0iQP*<NoNT<)f^4x=C|d1;gE0XblTU-
53410 zo}#Ve3(uFPXZBBWnRj6u=;DjG^8Ke5?`p3+cb2di!>!l-g2zb5Qq_1+R!VWnmyX9*
53411 zckh4w4Cl_auU#HGdZ;c84C%>C$W*LADU%!t(i->RnVCa1quQK&%SX>LBv~9u)WqCM
53414 zTh;NaY<2PZR^w#-wm<*G_Qvk^aHx7>Pe3eHV~U#d3v$#Cag<l6o*u0&lv&=ZDhVaJ
53416 zMMt78OQyX+i-H{c{M7^3G+*&&AKpH=b7~~A>ut@#kZuHW#x!kO94{OE#Bd}nPz;pF
53417 z#2{Lj?S!uH9HC{eDpi|azd~}Rthbwy-IbZQ?mc?vwv3zNuEby;TUSr*!m-VSoL%?C
53418 z&?U;7J-GRcNK`ufZ%^`{Vr5(;5ln&)A(`Nhz_-B#BsDw-{|8Y*Qp!%^2yqwjM&g6S
53420 zP?699fdt&(2jCX42R)$x26}8m4GkIeuMRj^gE-R9g@Ah>crU=Aiv|v@L2oeOKfvEa
53421 zS4w~)%J3feGW3QDD8bv&T|cP6Z`z^YMTm2v0-#3R4Bw2Nu7Ut@0{aONd=_z(PzV{m
53423 zzxlutcpdtkNAJgQ6JQ5|Sh9^x*q$i<!qF-9bD@*;3rDBW&xKCdBk|gQuXI8bA`pd&
53424 zKSc_)fcLT#`UP7=KMkhTy8I$qvvvQAT`Gz7Am!X6d$84nkrath&I4Yd6`np1T$-V|
53425 zjPsyU@)s+&0jnCUTEX)m9SjH4;qxF|4~FaaflNFa&qU9U!ALXGR}^pvA`*jDG=%K-
53426 z$Vi7DffD1ER!5-%I9)+HJPibm7FH32hNv4@Wj84esqW%1q)H;S3QFU!SSuA*C(215
53428 zRy_%-RZq2RKmSETJryE;bj$}}7j<+RwZC&EsFy1K^T0|4Q$H8nL2aN)q^w$MHR&U~
53433 z7dsDP*=Q_#-@hMvwbN^h3|x*}KNh8uesA&@hEgDD(<&J{3mj6d+N5e{5-*NaYrdK{
53435 zN1P!}6Q_uS#D4UKBj`Oxi0#BYF-7b|@7qZfi9C@bGDMV!*nS*~Fl=8AO^~)P=da*j
53436 zz^}qThkpV;5C0hcAsYWV`{xPxdiWT8HGBj<1n-CU+MXQj#lb$Dlkfzrz!J>C3^bqy
53437 zB`AXD!FLhV7ZB_hz_-BPfxiZS1-=5ljIj7N!sXlGJ>Wlsr@&jmtHGn-LGS>$AKVM>
53439 zz<`tg+jHkQRqEDi&h+Xo+Kz)Vky$Ie*>ML^j!%PzeaZ7|$L-Yj@p7=^*N}})bsp9<
53442 z)Ys~EA4Eu9k$-1)YmWuIdb3&m2S+#hdEgz@t22e>V8NJKn)jIrilk`@QhHn`BtfbS
53443 z#7i=#a-t@QQQ2Ga@4TaxPKSJrcV3m7%yEL7PBhB?{D6-ql<ASgLMWK@4BmWvXti<p
53444 z-eb!<%Hwy9!ijhNmrwrodw=k&E|Mk*rq|brc>9J6FMzG_pno;q47tnYs4pt!m**m)
53445 z{Jqy)S-kht5c_Vt_34#K#A(dhTy>!CqOs$Mrb#X$VN_|om<bMO7*|yibQb*`%=iV_
53446 z;LU(Sg}uAVvM!h|Ur5q4-o>~*rHQPRAN2E3Otx~o%B9C0r^@~}PL37@l4D8RrNULV
53449 z3N{X~+K3l-=iwqg+?|IEB$F<fDZj9tDlEsEQ$#GDsOvFr@vxFhcovTn-@Jqm=Y@aV
53450 zJSKC^R=$b9-fUKX;VqjSITvnc1+kDEUM*XdV%jD8G-2w{fpNBS`!2?{^4^ChuOIj6
53451 zq9wX{i4Bbh56-0m@%h~0Rj(y;&B<W0Iby`iemSM<1(QdIJVmhrOF^13)np`~i=;^^
53452 zlOugi#Xd)xyLUv3g(%HW44e7mLtDW<&-1hvh^mUl78VKwabd@mI3~WA?stsP9M#(0
53453 z4oC6^=WRCV`nDN;^hA(x9e(d4**!B^-DhJ*Q#6CPA4^4Y9%l6*qXc+^=4slR8<#T^
53454 z3sEhSj<6yt_`U9drs-2iPo+|P^mz2h$)fE#VQ!|)xNkkVe{fQ`y<QW9P*B%sy|ptL
53456 zzj=V?ifOABuVzcZVAJra9#eN)f8zGUIK-?Oiq=YQ%guO$Ce5)gyw>zL{ly(73$0Ql
53457 znxC$`Cw25#PKd^Dzl2-n=`Gwc6gYh0e^Xx}-w7gM37ka7`Fwl!+}SKif_q<f*G*?|
53460 zZoY8(y4%c@8Sv|^L)FQv<B2Sb#!v~?Wyl6*W<2y3C$d(14^g9{JLfb{+G1Tyhz}-<
53461 zUTxd_lpIsIK#*nfk~_&WvG5cl1w}5SKu(CwkL7n=yOds<^iai@-B%0FjHc5m%9@!f
53462 zyzq@XubH{_sw&sMDlxw+k_|_9#>E{A@O8EMk)b$c%-(YN!l#-KJbY)~TMEOSmNGo1
53464 zli+D6!zf&W$B}&ZQurwKl-&$!Y7zW0c*rhhjjLndXoo42;EQO!3H%yp+Gbn{Ho*75
53466 zMZdYg65MMWhauPjo&b-5Vcgr$hGNk%6a9o?(|%&Gd4I;RDK8qfpD|dT7YCMY@W-9U
53472 z4wcQC#g#?cZF+irL(Wcd|Bez=cYf>F%90yn-khR`P7EPs>v&E)AhdO)-ouW<)$4$}
53473 zt|SZFA2HV{*s`uWYhPQH^<i%7iz5-=+9FP9r!tV|X_*p8fnell&_Hq?BT@-}Yd*_}
53475 z?7ersTn&W+Q+Mo~yQNSXPf!%cK-xu93`f&~rW&*=RSw=Uck^GIeJ89w8XO8)QNtG#
53477 z{jibFg~nojO*XPwk%I)xg-l$%gdhY;H4WZVoi1oTucn40(z+(NXE?XSNfOJvuRmDp
53478 zANoE}_irJyGlc5pH9|eP{rTeT%z<%E8Ncn+rzRhp5K?JDj+E0-+I{YDk<UK+#`2*F
53479 zp?D-w$+$c|Mp`<5)u1mmv%jnok8gf&bn~UcR-*WaHb3`okIdaMfBmPf6Sv(nFn^|z
53483 zUAXG&pp!W6?5zZmh&98LiC8@njSnZHv5^G&%1hB3PLsokgN;5b!YiwUuB*Tcy-p=`
53484 zyDCLDUpP!SLqcwGjul+A%WH@(+8Qhs!i8IJ-uKkQC(YU@GyA8Hr}r(ChSNn2;6_IO
53485 zL>+@~2XPQ>hx{x<V)=Xx2y}G2K^(^MXig17+XUqlS+8}t7iLZrT-o)CoxU*4mXoUs
53486 zGjDj^y_M!zOwwJ|NbJ_f-|;I-XnB780L{vLspjGtIh6GV>w|u#enYXm(1^<&Q2qvi
53487 zQUrtTY6^jZoAdg8>zeaAl?NTj60uM~c7q};(i@=b2M*V|$JQk$P8l~_=m46E-hZ6~
53489 zkOIkeEW{C*fE%U_$&Bu9^?KMl4mvC!@#;pm3UkMz2EEI-PUIWGq3q25!m)?;YZi0`
53490 zErUikjPj%Jyzqhc9m~gl`<(ddtEUgwjLB2=@pDRCDeXHt!US%-_1WnsKDyrlj4Z<6
53491 zMSwNigB*k;Tr!Qzw>l1oaI<3!D!mn`c2Ihko_5$eV}qI=c0j%9-Nl3{CxVikGiY-3
53493 z^6r+`EattYTLgn}a1Bzl4{%LorW4NJi@vvM+A9x@R=}Q9uik#c4SztS>w}(TL-%=-
53494 zMqn~!wP#0V=qUsWhjT;6nmZmk_{z`BMbg)ufAYcyc0G30)9-rcLnKWRo-|h;kqwa+
53495 zB#w<#l;Bi)@XqtIyUvZi?sfdt@4jaav5-Hx_;IMi&jLU0LMwEt*+uLww3!LYuJJ>*
53497 z@vHE^!#5#yd$=w5?DlV*-Jcfo5wTM>8+ssOBl5;d+AAMPm2ko5ZrVfFx@;P2wE{5J
53498 zD#VF5M?FC~#4*EluO2CA#io~#3L*1&${f6DTlDI2s-6|wI}#>hCWWb3d?xBaTjJv9
53502 zgT^h#D|aoV_m`2xc!+d02bo*1W){_b?|thlN`-s}#a+ZS7zO{$sW4-eAxm12U<V;b
53505 zO&hUOU%bn=jd!`-k=GvATrLL6p?IaP^SU+QHc8ee$$4E<1_lI;_fE&jvFqo~Y~X^6
53507 z#->+UNFmlptz(Uhjr%|qf}v)0Y+y8(j)V}>6<Fae!Oii4vNpPnZ0`xIwVK_=MzwWl
53508 z58rchqDZTBEa2NYfA?@Y9nTFuxi?a`#F^`+Ps1-=y=!+S)Vg+p^K3vndwS*OZ;}K}
53511 z-RYs!>54m$@UsFzFpx~fb=F1mq^ZnaTMvfB%yiBwj9i<zsxYuE5n4GMqZra8L|%y(
53512 z<JMKPQ-^)68@IFS(e1AvJlj|tH^T1x>8rwu!ENWfvYIz!-_4z)Wgqc(Xu_x36A2wj
53514 zZai=H9(io{XH&KOP;Ma`P6v4_SDxNh^n}A&Gb@p*D7%s~ksUXU%-p^E@y{(qGS{8|
53515 z<qIF!{+d&N^RzgUi|rXJ48(j{8CrvhM23~cL_p-DZj;qB`oMK}@7Q+z$gAJTpM3W{
53517 zXreRS1#R~2W2PU^1IJ&t>)Ko01&j7R*cgu#DMb-oNp~ZBaCzpwBai=K7qz`_y!z3<
53518 zI2%Y&!nH_XC`3t8bA|l5sV7b@-#+=8CpxF7Ef79R+ykn(`%VA>&e@eh`^r)Gi-YN8
53519 zIH-C+6;>T_&~7Z(FRYTS4X!??ehz~BZ2OjdWh4@gwWDX|+OL1(BR9oNJ`{_#^r*L(
53520 zsCsWcJM{S5-ln(`^P`Ro+h`&I#pTO1;@+UnYxy{~n-47I&;8y=q!hyK)G+K{AYy19
53522 z4TxEenA=yHuI4oINZ1EBZ1y_nnegny&HJke$NJ!x=HB-9*N>!(+(>euk>F{D4wn7n
53523 z@4o(z2x}-E)zZF(A|~d?Fs2@1F5s7ZX>WKavVA%~Uz#4LC=Zv^>j$Efa59$gm9(fH
53524 zO?0-Jix5E`mz%OUg0Nf1U9xU?JnHu%r1CJorKH*1a;_M5{h8dl=Z<1aiYMa@J!+Mb
53527 zcC?0GQfBv8I9fciR6+Ayx$XeWydh{HxgqQGL?zFW?d2n7Pe9@s-^}^p(|OZi35uiW
53528 zkTF+jz3$B_A77Y6bI-}#KwZ1hNTvVZ@|}5K#-r?=&h5>*LvGqXz30a2k%AeC`llbB
53529 z-g#*3Y$97RI%^<IU58FsqzXkZp$aJ;e0Z)`h58a|J9)UB8di>_%X{El3(a{jh>yzc
53530 z50)AQfuIGN;5~lLpm~-ek=`o$ONq=4ue|Vqg*#{Q^v~Wth!4oY%Fr$M%-{FIeIt8k
53532 zvd$IdFv+fbopFLTHlbB0;v_(W<YiMfXpz-gb*~miN@>wWLbY1i61&pTXkh<d_<Vb1
53533 zuASk0hhKaB{Ha>hhXiunwKw|U`;H(iaRs#(-cQ_5+zA+{+x1uj7r#K~;6Ee&bd4Qh
53534 z|Iu7lM!G*b^s{#9<Q#->hm2^@3BcC~yD^2`hz^`2JCdZiu{R>wkrX9}gR=sdX>|mJ
53537 zsp#-0bR0h1>G9aD%67_boP^H*LM9PG8*u;*teq#F3T#d<;$AMeX?2@D_F-}CriMIF
53540 zY>TH>yOOUh2RaeyAwc8K4AgnM+wP`^aQ9P^B+g-n0!jDuva|gU;bv42<g=L+(j9_|
53544 zxEC5hp}kc^3zH_Cikj#P_pSQ^R)6jF+If7%p>4qLvsBq5u{21)1g7nPZHrt-O{ZPj
53546 zv1Bfh+kg+$*IP0He7I-H6nY=;vQ3zV27J)hwUu@P!nzd_oU`?x?qYeKpuMUtNl4~R
53548 zcL}%wnq6nH6Fkr@-_Ruw+ShL4+{{sz1Xb7W9hF;#7p6R6w<rj_x$WKW_s0D0bd03Y
53549 z+LDbJrwE*zQRK$amJP(Wh`$9-f(R(KbA~`*D0KT2*#wEtk|iAA(19e=fhA1ZOW*3n
53551 z-vMDv6X8-cv1NU<k2XNkGoW?^9fo<jacwk;A#vY%s{YcuuZ@wqNgIu$!+SsE^$4P6
53552 z!y#&NDDNjdl7}DL9?GW?82@td3-C#z4KkQ2ZW|2ykU&cqeZWf?Tcrqy&Q!k_ov0a@
53554 zQH*?0j%nk?+EQlU==eai5KjlgeIRCEB#2p<eGwosmxocel6!s#ki{L*W~B?IZN9h-
53560 z2iq_ADsq=I`6^M)L%X%THJ=xaU%B{c@Hk@7G2B^2r-*K^J;o}q*iYW|i<5SER5z~o
53561 zsHa*K>A<dCK|!FQNHCtD*Q9Xs2SQa`F-vQXLe(p1q>@j&{e=uPstdDwhFN8B&&!W4
53562 z{HN*a-mt&qj1K*1^gJlH3n_%W)5uhZb`@f@#Wu8RPQ;M1OKt&M*V51vqBns_5fUkQ
53563 zEZJZcvsLqIk-V0eQe0u(sBeJPY#*6zXV~~NZ(q79AM>V5Y9LXV^9OLVqc0-re2;h^
53564 z?m_Xaa)q8bbnK$zh3p->_Q}%d2C3N!8veh4AWJqRq)0^!ibV1qO-a6RVGz6I5~<8e
53566 z+TeO1!1gT!ava97gqv_cZg$HMb-e<e$c6+Gx-j6SAtY9lq+qH#%{1l<NIy9qCL<??
53567 z(*>Pqw896629~$ynb?g>r_T(hO4{KQS9N-`e2v(Sl<kpc^`4)?W&0$sN?|)Hls-p=
53568 z-B1I8DWFe55KNJ*)$7C332s=^5*g0Onj@AMy$I60z`G^G_6|h+4b_MyBC#D4{-&A9
53569 z1rsq=i8cq1{qpEb9H8K71XL1{RE*m_GF741mRbk>^|AZf#%wO0-EAA=MxT-(84dfa
53573 zynV6x`1_A~_TF(Y-CU`c=VlQH*UeFLcK5FM?BO6Q-Ar(?`mj|9h_Pt)u2+ogI)M8i
53574 zUHn_(arhA0izTF<-?8Hv4b6)nAx4X^p>Z36&Ib~GSaEK9af&;V&{ypetOUJEGDK%P
53576 z`Q32Op5(zBy<sVxP7mkvR}Js;wL;P5+pCK;zu)p1{-PgJuWViy38dwW<*xamsYK3v
53579 zp1tkdkpV+>1wy`{B1NK!J070cyBClbzl8P@1;1vuCK(22+ky-!GK}^x(W#~$L^Fj{
53581 ztec^N&IGOLg;*k*iMI-&ZDZN%rnXth*+4Mvw+gKo$=qiyEYu?5q{<IQe5sPYd-~?7
53582 zX2?_YTTA=mW=d-OnppDr2i-z&{|c{W*+{;Oww4&dECpPAH#`bn2@G)8vuG-}J5n3&
53583 zhX#m~-TvuLB%xw2Ugr+z-iUQJ0OI=OdHVs-cfW1)ZsD_+IOCM3N4n#4v1BZb+nrcl
53585 z8&2(bri4IJZAX&Rsl4Z1@^&w-bulNMp4Dx|Yaz`f=8Ykl$b=@{)z^BK?oJ&&C(S2=
53586 zSL%^OaVI5v{bF!T;e~K>9_9+UN+ZHn<7bajqAQaL6yj<%TsknD-J6TVriG!o0B)0T
53588 zsEjT=j88S(!l?vGPA_Q9*>7uxTc?dge<D@y_XtTTN_f0@_cG&R^o->ymSb87$ueqe
53590 z>hW!>sg8K_QSfiTg~S`-%EcR(6XCQb-XJ0s&|wuC@*BS6!>OX4Y0xiy`Ok8o-@kYP
53593 zSRtpofn-<%*vfCkFjOpKd8<)ZC?0C)NUKbgy{V{gG80Lvg;Z44Qn7G)tXSDKFm-n!
53594 zp6#e2-vr-8TQu4ZX{xv>*vli~{YG|e0qeC8bW)rf*r_u#)<5{Ay$^l*wbhX~efuL`
53595 z%|lD9V~4N`6aL(Rs}g9ikqe9P-{1i7<ECTwmOx|Om9jl5WUty~PZsJd{SSIi{pvnF
53599 z&%SLMl=J@gTz~zJhYr5#_vSi&(_N2Ub?|+A-+e#9@X(|4Qp_wU6vazC8?DG^AAInB
53600 zCkV-Q1!I^0*KL=79yGDbKS0_pf8E}TwJUM?HwGgikSFq88_{M5RG-JcYxwB*_<wok
53604 z@;G<b(EDyBX<BQScJE00<9pgm2T1D9KY4FsnfRKS%xRhzM|n6-jvDwfh=N-jw~c^%
53606 zu0MpK;Nau0a%q+*x?K0Zq5WrXUUTC-b>aDPqh&OzQITQ&Vl*sC9dCzedjEstl)y?2
53607 z23icc2pp;5Amw%;I70|Ae1ZH)Aci!34I!3*iFJr|YV}?QH-X}5g1#hri2G13*2P~2
53610 zE~pd@2?{YY@_hGkyQws}>0vB>6mUcvg{zihPZ4?FWxs-ryz8IFRpeGK^&Q((yV6E7
53613 zV2KRV3*)ug4G-;VkDG39h#|Gl_{N~FBHfV&<8Ykm$F5VP!RGy4CsyY`>_!%`tkvuj
53614 z*s%SqG7+iA21W!%r?qgUrswu$a|h#+E+XCCO-qx9&eVqpC9W1HqP3#0jctO}u$l8W
53618 zLF3{V;75@HVuBkwnzYyz%F(o+-=H@KZ4PA1sEGF<Vex#&BJJqSp$)glbtY@vEi{=(
53622 z6sUruZP9N->(zT!XS4sXBl>{;p{HP_lu3t!-Q10VcsE+5TMEXJ(tAQWgR7);L{+w^
53624 z$96ojdTx25Xw+VEQ?l`t97r09@0Jd-A0YSG8px6(0dy4*jH}1aIfle)PyH}$3(zK~
53629 zPXiwqe@<7B?tO)O-3NRd_Il4>;!Gpn_kJ&hZHlgd&!8xR4qN6BW&){UrQi#f8yOrA
53630 zz4%aVaI6E+pMk#u0vLIgzfymb0EG4aCd(fGfvDld1KvS?6^-!s=)rHo`#=DUeH5Wg
53631 zUf~!45U|JS@Dsd@dw#-hiw{Ogc+`O+C-RnVkTd})ijAg5-Acd@p%l=AQ=vj3$hwNU
53632 zSunE8snMSoSR@<U5-cNcWOsGJg7fgZAO?0K4vi&&HOD2|@^F)rt#_FuZ7|oIY#5Um
53633 zh-Gq!&-vD^7@S78fk9(igp!i7M^lk3jOM~M0f%2S>U(!DdE}r!613WBk|FeL#Djw_
53636 ztI+K#Mq@cfH$<er$WfV<g|X~42n?@n1-lJ_Jl&pD1q5=4AxI+YME-ZoI#{~jD%l~G
53640 zVxSEy%Dl)hHzY-Ppr<b-xYmV(NJJaa&_KX&731E~NPIXMEwR}XDPIH+cJTsCz;A#!
53641 z5@$ReaVGL3i!*+&iftMlFMn6Uc0v=jG%FiHNs2YY%}LcmMGBDtHEd-QWvf+89U)j&
53642 zj}IqQpKkJ^kqt+aW5wb^;phX|c&yJ~8$pY(g-sjE<^8qFkL#~(4CXR8#ZTZsgp6F;
53643 zU%OVXuFqp@b)}!4ulCRl-msKQq=$2XL#@DY*f-#hE#E${So8U<sMnXjW$4s+LQi=E
53644 z>m0R(+2WAGifEhJuG+>>#U%uNzH7EK=~l#2#iN}Nv#-Nv5M{#c00%p{2A#EH$HYfq
53645 zgzO6{Ti@lm7urvF5)--6eVP=Dgu>p@ydF=h?yUb4BRGm|bTLv&D!N;5r<4Ayp_I!h
53648 z0yYVDWBxX!g7hyj!ZRH-NN+MaprM1N-q?q0h4GZfTb8ub`H_g5mGi-Hdc1ga@%ERq
53650 z&EK5K<YLimQMEYDLsId&TW4jTH-5wR)PXg({_<@{a?O=`H6EMO&48p7bBVD<OCr5~
53653 z??x=!5Bx-5u&+~UrGFJsVq~&hyZ^OwG+~&mnpAh)TTTsn<TAsG&G}?zX4v9|WJ+K}
53655 z3)aX~G(8Y_I~m@SsIRQlBU+y@?L{Y`?77kt&<nilPeAO<-XKXEmTOIrX1ap3)gFs>
53661 z6#PDo!np+$r>lXA$E}KnHd;y!)>Diykj{-NsZy@v(ItxTD%^2<jjr8BdA)G4&imcO
53664 z96yB(#A{EX-Lz~!+6yX5u04cR5OCkRH}+ClR@xRWSD4F0tFbB;ozeP6Cn(qRop<6X
53665 zYa9H8SO%#zTWj$}tZCk*C){qI5JOUz>eUP8)T1-$^u$1LDqcPv8oi@bN=36f%SKpa
53667 zTs#LfLhD(F`xPrUk>pi$w&zENNKR4JR0DG+D-x{0vy|WTPER5=>f&oIegzzbyFeJs
53669 zX~~_<t4Ky;q*Po?Ax$s8t&l&HP)!8nXVCunBJ|^G-)&Xw+dn$g@%~}g_NnfK@G?cW
53670 zzt{@;hr_fB>DWhhaC(Jf>WfR^V9t$CrZ^S4TZ-FTW*YtrOkl2T#|5oZ8&jEHEJS}G
53671 z#9Ac8yY`ok-8ijSdMRC4+&i3|)QeYNnD!t1#-j^&&3iolMk0UBf$;;r))}Yh20_Cw
53672 zfC`Scz-BbN=!l_1j6%kVr0!`$-3*i7Y3OhuH&KS(nOQTN*Eye&HpO5(BZ$z=NS2_4
53673 zLR!=<2Sh%cOnQWj<!LojmMfKY`;#G0H8-m99?g{8E{`W1cYA$`sEMwyt~Q3N5>D1+
53675 zKng1FNt@^Iy@z9H-DSHBT$TN;Xw*Xq@c|Fz*KZ#i>nw)n;Ahd<QEiv7;{=P!#3f}z
53676 zduhgCjOwhDR=-xYVQJ!J6ArC-NG%%~z^3ASvg!@iQVqAJR5+<Vcvg0^f;$_r548MD
53679 zi+IP|&<fuF_m9My=H!sa<35R&@VVb{Y?s8JQ@4OJS{f-oam5j1WmxWy7_()I{wS4B
53680 zb)~g<JJPY<j|6-!Psmi_nznCh>RMlmqx|t}ChJ$%5*9(SB&mc8p#eKKKYZK%>h{@8
53682 zlC>)K-XXk);V`qoPm%7BKjEy%p5W7?09K4GM{U6*2sh$`<xEK<pu+3CKP^OBho<5)
53683 zxN9cwQKft+fA5N_P9*{h!5y~4Dy&D-zLcgYUVmWcuqQRNcPug*^MpNQJEayv*>gK7
53684 zrVy<?v@?>tc=6(|Blv%vya}Y?fs24(=vx8)kFewK-%18S1~hR}L%=q5tYrt_L}iiy
53686 zpm`-=Vpj-9no8}=gqrdfR_2dYDkpYTqM>SKpiFV95sJ`8-q7Z1L$fCqCg&=wdTjBr
53687 z`f77_w>#=jUw>_?dIJ&4mo$%=Of9lF$MoM2tG)_ah{-(sQ5U4_V^OeeAtVJT5}d~Z
53688 zJw-xlwYw^IJmYu5q48<mc?fKH2B+Zm-Nu(60!XT}*AC7Tg*Z<XuN}YF)Ma!~Va~;L
53692 z8n1if+o~sbRnz+My@KkILq3-E5Bfq!#?IWW6|ZlwV;?rlzFV#yol7Pc?#+e^)-6IL
53693 zmDN=JE_Vnaj&)K$c{gHb<M=4SAxe(#Yik!51S3O{5N2Z3I@O@#-`W^s$Mz08Ctkf5
53694 zbB5CmixpLjo4m+T1WUPV29mvbQdOF#M+&j&`0AV-av!XCB+rwP+0@9SHy%hW$0B9P
53695 zU91)*?{wNT{ouLUj68NL4!C==e6lgKRJBelq}u_;#ir9PZ}^XtnCy%C-5zf?o9e^0
53696 z0w!J@uA{>U*9xp$5w2H`>{$H91vM^bCaf#O_UK%8Cd9fqHK}fa?$Z}9z?1MH-~%Nj
53697 z*HSjNj);9_9?f)8@!&k@p74-fV^(XJcb9ZeVK8*l754bUv7kN>%pE8dCu7>#>klm<
53701 zV<8=!MZ9_W)wh&SHKq>~!-eIjnRICd)1%S!ZJf+{B62JgFXAFC7r%J%6X0tQ_u@3$
53702 zn!n%16NJGv8_zoJ-8QlzY+9-DxG!^NoPjP`rV@i{&{QK)eM*gZcjTsyNB)2I-ULjR
53707 zI8#x0f+7@CjY)#~=!cNvb#2fhTEr*9ZBs@lm0*4hAE~lZTrD<T-}5so^=wwCIl1Lx
53708 z{5+bMId^j|oz-{4z$t6mmM<DCUvAqI4+DeASCP*nKJw(VSfo^jb%a1~yc5t3$78UP
53710 z=mVc01<OaXb6`X`Q*#<8G?L>o?W~x|DU`x;wsf{d=`De7tvZb|3a4^&rLw~iDfS|-
53712 z;Ee1-YE-ZWnI)1l=pSUM)I!ksrUxpXDu`xy;?>8F@64Z+$y$rdb){NasTJ*<E;DOq
53713 zP8jA=k7Oxodjdr%a!i;ZQ%r#<mFqExQf!6-%VHcz7=b9c`}->rC*n$jD>Yd*0aB9B
53714 z-mz=QoyDG>23L?oD_J?z5-cS?pPTr4XNo7MF`TN&*AxBJQTR>PvE!RH4Dei`t4)4y
53715 zy47D<GHJS;8{s!a-x*bR-hzG*hz8)DWaubV&#~Cc>&1lz88GI7a3QChn5gR9oN9W`
53716 zXBUHA5$o!yt%ldoy*w@EwMNcg2?v)RBrW|MhV_e0&6dJd9d<N-5j^inG>rtvXX7fk
53718 zxWGtNB%YmxG8q=6j0#E<Lp6!xdUb8BSdc7MqBuhoq=xG1D$8r4T-3z?*2}b-28k1N
53719 zMhx;i?-*`Z=ENk@eFnV<82QS8v*QE||1uk_;SMG%$wuluZUmk<R`BRB;yu4B5N#d9
53721 zJT-&k0|zU(@X(W92;_)0aJRXn^@YT*w{8#~y=1oiGCs>f4z`*{Y3MRqj?Xd<;0!Up
53722 z4j*XbjPW!<mQ8ODh^;hmHaVGLbwNniG*{PYR-1FZ1&$OMznHC3jA2<Rf}k>Dp#Tnc
53723 z*R<6CztM-4Y0kJ2eMkZ_{+K>kBpg1CeiYcUHRyw@Ksoww7SHJk_Y6bvYtzMu*7(my
53727 zxPZ*8b|cWI+0|II9#+<;5PZCR&>F4;e@Owe11D4X)x+<?Q}-Y#JT)xCuat^~tY>F5
53728 zMHB!J0mq6-cxV_CN;qgZumXC=Q0z>}PJ?5B^wh$JC)u>Z8oF1qnT%O?-P%L6!Za75
53729 zB!$)9o-9`s(E_qmESC&|<boE)U7>ysSVt##Ue1{{S=Qt7PweC5ZzCphI~1x{qb&P^
53731 znX?22FoMv_t(-Nb=YKMSz;GP~hdwGv8iLk!Pk!$S!Q>f~Vc3l1>@}87G;NyVa12Wk
53732 zY_neX>uT7{P-1tVxS96WFAoIO*2TPpYgx`&DXd*})UW*zjH|g$U%%<TSKnW0oiBDT
53733 z_!mERF`btPaW0=OXoU-N>lat%Z1dDg@%H83u3V2|l3rD5-n^6uIs<(GSS1%BAUL#y
53735 z&hi9p9=0I=$AjNP`@rn*k@rR-_ov`<IzPq7V1rNwiwVjgG0NVFk=YXUh(~`sgUl=_
53737 zdy8o4svxem>NUBbKm~mc2i8|ZZ!D&Gs<)7si}#`;Fyw#cMVntQ2qgy(wKziDL-BYq
53748 zNzf=5Pfm%c%rKM!vlTP1$9b-(=$OD@80E>KIv-^#f~l8DG!C;6Ghvn}U*X!ZJc6EJ
53752 z^bpTZriaF1>FGy~sV$oYM{Amm`?|Jm$YQ!=S(c`)T*^zHXeyyh?^L`Mt+EInKb-}S
53754 z1a>lm-E7dsthqv0%VnCU*=89W0!ydDmVr~vQWWJ8>+?=--I8FGXKU^WvB03fu;b}^
53758 zJ-=@VT{l-7bh>97um6L8y?HCFh6C=#Un8FfwrhXTdl4dLg56!zg@>{bWkd1)6tl-J
53759 zw<Oc9Z{kdvw+fCR)iuB3q-0$-C0=8~s*f>>VoE{Ylq&h8FR_SzCy*n+wax%x`SL?b
53760 zrXJa=K$46w`wrQw(KL9p)(^cBPGk&Vt8Rf`<~6p|Tkg&m3-vQCQZSkG7`oKyHN0b;
53761 zB>eRV_~tzF@dOQeEcW4W&U;cQNv6p$8uYB}pIPL_-t-X)U}_<Bq>o%fl95J_Rw8jw
53764 zAp(KCsc{@2iWeNQ7*el+47>ej-UNdNC_eL^LFa{+k8bN!4}U2P^1f%8sw|0sv+8Jl
53765 z)WbjQT1xDP;jl{>JSb1-tg@ip^@*oDE->UIK`vNc*<y9u%!^**T3Tx^7_P?9zR!Ny
53766 zWck{50VoQY(Ss(=Rh#7JQ1S%N8#eVG1dAv?kAEA|LpEV^Y%waF$vRQMz=|BaIH-o=
53768 zjtrJ!Xw}n!bpfN?hTM3t(#W-L-MRDWl{;^~4gHD2a^_uybnh;(eNhw(bor*Td}VL#
53769 zVm9BZTFYCMd3hsuy1xFJg~6bdtKNT4X(7wYEcv}chTrVV!rd`XV(-Hk2(9+4@UlCc
53771 z*^k<R_R8OO$L#^dBv1WG@bv-mBQFFo53h$4O<}rvG{F2A5HK3mG@ko43kW##^3f4j
53772 z&xO&lhzgV0g-IxI)0oaLh*()v`>$Vr%RRX!tNMars1PUE(RG%t=T7|4M@)`W<=}R|
53774 zt7({r3ek`nWpYP1C5a(UP$kMH=7Wr{-1Ng2V*!v#GmZ*d06jxxNGFgkoj;3l0vFUa
53775 zb$Ihhf`=h!fm0lQvyh))lklH1n<Nw&HbpO9k4+-!0XXH+x2`|Z0i2>`r#PjS4^LP2
53778 zwc4s-8_KCHNhrRkZ0WAv^tP6ZvI4|8e<k&E7<odGmspu*RGCuKYT~1O2>G{&|H?R1
53782 zGBRyHxXEqE3bdmXxi{zK^@%6;UYREz(b+@2;S(pO-%-z-Te+z<{kS{tXaP$-l-Y%2
53783 zd-mvQ`#szHr}(tT-qF(JLr=TBU=E)aE1)(~d}W?C4zU1kD5Av?569))S!^c4GIaVW
53784 zsa2?6d+m~)vn*MVtA=AqLRQ?nwy%jMN2NoW;ZIcN&d-UeXiB-F&d_XSDI*tEo=NHw
53785 z-iroE0V+lI<ts(^8>18x6%YfZPu3yaAS6=D*465KnvoefBkP5-0|QWAEho#iQQw6_
53786 zONuIIaGJ<*hFtUoJ`?P%COONi=-o&k0v16(i!GrvR!12+YMuta;PEes+tH*@B88=h
53788 zb#3NdFlDnadKX6GBy>(@-wnvmBKV;<!=A3SLvQ97l;O~c4?!62`kw*$VGE&BM2dPG
53789 zAxM&V&DZ%sbKryaUfKr%;-gn*KQ0=Mu|NJG;4eP$b$`;;_&)<5wgR*owF<;yvn}B6
53791 zo9(`*s~q5Dwc1@yGQz+tp>|Mb6~$@5-hK$&J7d7}uI~2>NiRzp`81HT51#sDF-~Mf
53795 zT3W0v-<DWACG>uzjqD5t5{hCr16<5-I5QMB2;%5dWRfx@rc#FS9Cl!(aIo%RLUly7
53796 z9pGVt@)!bd7DFVmh89b!K!L0{QeXprI%QmGyWPB=XC#hy>}-`?KcU-ddP}y<-CVvc
53799 z-lh#~VX-&H^n%wl!XazxB-me=htI^3hN|@TVU0lZ<ke>5min3R+oQCt))!v&L#rzf
53801 zTK%2nH*N@yKv!?Q^yZ*-rBdCoS2}THHS#^!J0XnVr+Ey!QD?P{+QZK3;p3R8sfWQh
53804 zV{|olTd#JpR=rfuZu;<P_TM-U9?0=|-T?=m1QbYo6*yJHDK-8};inPQ$9O);h*$~s
53805 z0+lL-;9CFgZSxse6cz${Q5Xp<I@SzJ_Z>fjv7+D}D{s$l|IF@tPr-+L)py^$>m92%
53807 zMuUPz^*j;n!(uko>pXg8`I0KoFiwgRVn)$;L2ftdFh$<Ykm{-S>UZOmz$$iNp6M5N
53808 zZ(h%IGRwD~ucuai>%%LzFD#duYGuXloV0U(%$V52#GS|-V9d;o8FLPun`O)+s*)yP
53809 z0HU8EvxZrDqn+E$t=?yd8G*smLgC)c%K6<ENzgc+!U#>5fR7ll@TH}X?mx2;-c-+S
53811 zHaI5Da$LNP{-UsS{AAV+2-sT)H*(J)+6cu^FrSbD{&2Dr&+*sGKMM9z-0Si4gKfvm
53812 z5uzLK=FY{!39y@VxVxU)@YY{7muzPe3AU3U!P>7_%jIJ4MIph?9PLE^?-UyB7z}om
53814 zUAfk|CmtPzeVqJ3WEZBPwxTLL?`5W;HrAFF0U>tL-HFjrUw66P%PXpTxs`K}JRc$N
53815 zLi&(Ay@)*a%Op>yU9ZL#_zZat-Fqs|FU0xLLo{(*h6HLukd#JI`@!!JGCYmRooC)&
53816 zQw*LUwMH3|q1eh$a&Hgr$#MJch5o%iv@&>A!~Dq)rgIXJ-MZ-q-@Rt7oO|ts#)Yj?
53817 zM69Z|aJie@{%iOjA@fM-r<@x?mdvB`@#Qb~5;>a)TylQ$jIk+o$3VjfWmw=3q+KJu
53818 z)#4V8o!BU&eFjU5K!Ppa-_Udx`ah_^^J<zZmbjFW_6egt=&fEl-z%Q2bM4K+Qm{e_
53819 zt$g*)#n!DY&9QZ1xlzB`Zfz7q=infjr~MdKLcRiSEk$0#-hc1~g!xGn{mj7^KDkgw
53820 z4i4g-65Ch_{cybI;OXZ-9Itu)!xL*BCO!k!{Ig`uGY4w&IqKA!p8;z=Fj}K0Yjn6K
53823 z+|10l4Ps$RPYrGPu4e)c#efD-8B5Yh2Dq6R&ZRm3UTD#KW*`mDogGLgP6hi#T6^@C
53824 z&iTUf#V!A~%Sm--2n>7s>l+sc4Ax0_z{Iehz_P%C{6e<T)}Ud(rxP?m>1ls$9U{QA
53826 z434G9RGOt#isI%4L1Omb9iFZ4{lHnKeEZtN?f&hh>~_{QlV-f{#Fvl~{7z-!J4<M3
53827 zXfuqGtdn-;L}M?Ob{dv;s;^rj@DsrI19KC@abTc(e!6T|R^`x2w*+=>C8I7B1+x_X
53832 zM<I5qFpQ7|n$-&#bEiZ*hEr;lzda$s+<Llyf49)!OkT~%w2*)n{~Zo7a@IaA@Gl+s
53834 zQh~-m7>RE6Wf}v8oNI%}te}-?V_<l;k;ihB`oB#fNerV1T*zp^Qz5iQWyb7z)ZMQ)
53835 z9@<>I<zg$f@=M>@xO}X7s43ua{C=>T%WyZaE?Ip!O#!e3r-D@Aj%Eg2-e@yW$ewix
53837 z?MOL38R$^z(<k$i{Ye<P0w+^O%M-A4QE@eKlq*?=O?siw*lqxCCY2&FLa?9<$+x;N
53838 z-q!1}!J{ym(Ye^ARxaIs*;~Htd@Z&5YtO7dxCyti?7wQLGCm%$7_bh4h{cqbXC0tO
53840 z%f%*SvF(Sq;8wB?Rasigz;N!D4nBwd1#Tk^$YbT`T#V7Vs0bQ8<pWdw7%y-v#X{Bv
53841 zLb!o8$OOJ_F_}hw!|ecpyz=%p-s{&|8c<z$<ll2}OOVl8^Cscl|CY@Mw}D_*{ECs?
53843 z?^tp91xd}8U&K3?CvO+vNS4(qrqxq<g-GEfm$9`>N^68Lrm@mz-CHqL^+T_2pIX@N
53846 zYMKvaetBR7bE=hHdbA(iv)4cWXU)sIk^Fo0J!-z>niY4LD7}K8M>@#<vlUap;r8s8
53849 z7jYH{%45$KWFgud%(f_#rT~t`d9@>$5N-`tHbSvTOjuOoff%#9O2GXJYo!K`5(JK>
53851 zv#5!`8u-_}L8lA|)QLu388<-2fwB*J+r$KpMpT#AyU|gMOtD5&uyu(}0mGR@alx7p
53856 zt$8V6lx;k?0kx!46y>H3;Rh}r978?qZ-Mf^Fc2Xvv53R9QA*;aYzgiLnwC)WPu$n3
53857 z$y&1}S)w&Ql1`~A?{~_+i%|+U+!D0Qw7CV5Fx&N7O`v{OqLgA@&*u&K<mNAYu>-fY
53860 zfwJ_Pr8yW=<#L)eC~u#WbT>`liH#J?H?^2n6#VyTckSjaqo_-M8q<8vS}k07@N2(K
53861 z)5|4$$*HW&Uk)!kc5}0GQ>az7!P_=Bad9rM)GhyH?f4zKw|UF%-Zve4czq-h^``Ah
53862 z2M5sj#R>8gSPA>rfQBjZT7^L9pG4755-@reVFF^G!vw%kE67`)TavL9I;?dLNB!?f
53863 z2@}{XEN)L)3g}@=LG1?XMr{Rj+*U9!T1^C5>@`<fE8sgDLA6v0*->-B(DZ_J6G@&u
53869 z5V~hR=jH9DOJ{)RtLVJoHx1F^c}vtht=rYpWr*ZsXmiDRQY?66)0367u~g#-lJbqM
53870 z6^>@XHG%a6UG(EffV7Ywj$IOnYz4e6*c%$d??5X6o+vf7@e-ZFa1wT~JURJ>XuQVc
53871 z>OuWR3yC4SP($a%Di(qD(kixUmAsdr83kxCF%NRSG-`X)H7csaf&B%rjXaeac2@uy
53873 zRx`{N!qM<C1o&?qIDE{SQ1mZ-_*lE?InXPc9zHgk=86H(qmw=~cZ`Yv3RyrJN+dB=
53874 z>fXP!V=r7<9*-Qmb2M_yzT--FN3NakQ2JB1w(jk1oY?bkz2_EhJZ)@i1ISV+D}SAQ
53879 zU!0WT!y!3w7>{x<Kb*;m<*>A5_o@p|ZLIR8J;%<WuF+cZaO!C-kh-gONv@bFAjtJ>
53882 zNI58$OCfcn)nH5_>XwErB9N4w^95R=C7)9{PGDs!Rn{wxnoBF3YMc3+p-HgR6Kug^
53884 z(@C;2M&14bl0o*7jpsJz1%!Ah0eIWWWvzXCACJvjeAc`jTDXfZ5|A6+ktn0G-CNud
53888 zfqJ&+$y6po39QPBEHGp!A!U@(@=~sO49dmEYNeqOV%|$-N`kC&#!?l<Ij)y)%>$Z1
53889 z59^;39|tt~cS$b&R}S!mCU`;<81(-#`fi}a-!P=fa85Yb9D)#FGX#+)#xy}Erlig+
53890 z0W_I?l^~)k9j!qkcx(ZICPNrhtuRH|;|#};9Oe+<b3_bEE=aGx;s!3H1<h-k$ST=_
53891 zB=VVZnynSOm(!Btys6aCaUt(f9b49Tsamo~jthfcFVW-gCx0Fg;)@X>9{Yz|5GwYH
53892 zsE7^+2gn-2k*_Acij=S)Pl_DA>)=8{tP2xN_Ez#=fY14S{5j8W9{f$R=5Lbw9wXB~
53893 zf=J-LUmI|RC|=)Vu~!nDUXiy4rD8N0d|%mzT&0$$3lUQIb<paMEFIEEy|`}{)AQ}S
53894 z+JeDTIOkkBe(BqxP_P%n*8C8@K5&Xx{mz9#Va;Y3iMHN#w_ej3m0sQL--|Wq>RjVW
53895 zowo!mV})l1H~qt}KzRTpirt9u>?`NO?iIIj-1paf+$~GNn=dM%Lg3g||I8C70g?ao
53897 zQowRUpM*Xtfux8-hS1T=V+;Jyn<Dx<%?6xW-dJufmx_g)sYf+yb+pb-k4G4~waLha
53898 z#H}6H|4%u!F{~y~SBfd;c-xx0=iY8{=+tg6>5QNWYGoeXZCoAsv=P=Ou%3)G5%_C&
53899 zECQeQ%<-jk*bW3w%l3l_mllxqO9!7L4DyYDtY1oa_un7<d_vZrkI0H2{My0u=ue_Q
53900 ziTHr9E6BsovJlEDLEeUtrNHfpe3U8Ib^?(xSrMa-;sl9b9WTaV^CV8jj&FaVQW7{i
53901 z1=PQfMq>pb&QTEK<t~m9mI28UV;>t06`U}cQYoHQ#pPSB1^H5`v?R-7%?mDH3P?B0
53903 z{ig|<OxJ3nsq(Ee6NK@AA-VjGBn&hq6T*0?cSFKN=HwWu{f2~5(p47{hVICW5s^j9
53904 ziF)~)uS1t5KhuinLS#~SLKQ`J?%bIqOQO90iufhKQ-6>sUE{z{c*;+%D$Fr_34Z|T
53905 zA=^lGP|8MN?it`E4kxB!PvLPr#O8XCM|x;)6qy{SNG2+=fOH$p@|m=5CZZ!E)(|-+
53910 z1x&_k!*I!UByeqZ-3>)=y9K33Yo)ycVKp*FS^%QAi8k3O(`qDpXJd-v7V=5)3z31n
53911 zD>YiC6iar~YDwLG>R3?m+jC0o@wLH<%8|URhVl-2a~;UvnmzxjEeTG^D^+QgwbFz=
53912 zXPmh&bb_0J{0-&;o|I&dYkn38U|lo!Zy{n|6g!6g91tN*U~Am_tQ57Kzmjg~a=#pc
53913 zkN1Kwq^6M75*kc9q7$P!W@QI-p5%t*Htt&}6v8s_L>H>vckSHLXdIt+9V2wpZkpu3
53917 z*zTsM1@fK$73@7|XkhOZ8{>3NZRW)^Fvo2rzh-bw#=QL&Acv${RkUQ`)(HX>ka=Va
53918 zIX2ja1PG$py)Tjoo9oSbLWHDu_J%|_iUu!|42z|pGeL#2EBh)&-uJ?UF!UKZgvRj>
53919 zB{-9$h+VTEMn3`^g9`)3Qx%p#(3d&F9QYVh*s9S@NWhS(^5QUfFg3Tcd(Ye%uIkP8
53920 z+<DdV_7}a|8@YBG({A4{uKH#Va(TVFgQq!F3F-b;!H{H(mu@)`F3N%cPV{#VzJ`_2
53921 zUx26vK;1nwU=?5}R8W$D0jJU{mN(c~Yt&!>j)@QvsNwj)#NwZyIr-Rvy3wJFSWRkB
53922 zbZ*fn8A1V8Lk>_0-1<uK!ns`GbU)a0OwTc0!zh45|5g}+TCqd9V$yzrOpz%qzg$E+
53924 zn}EDaVdJ1Afli0pOHpqt0W5YnOmbo|F${Q)g6-AoFGCK6+Vz;kL19c}`WsH<+_r5O
53925 z95ZJr*))-Q^2HJv%NypLLc5l_R%MjVG?AmpLFnV??;#~1WcLO;ROF6QBsL8H;xGi4
53929 zp_6r2EhGi3@YLf7j-vQ$Ud+27i!MyP3%tfa7zm01;`)eBz?gdw24f(4Y8kwF<ptl2
53931 z)G8%d=?PJdRYgwoEF7NA&jMRcHOA|Q8{<o3;|zkz82W-!ePGTvS%qH%rfjY$>bR)#
53933 zNo4FtNDDYFznMhFe&OJCiR1FRB-jJHOuj^3K}y*F9w&dk_NipWr{d(#a1HTm;B&qu
53935 zlqAn9mJ5{I9rbMwt(>dgeX@K4hS2I;N=d~vLq_qCS==h<Ih-%uRJ|uJt4RRiCUO_-
53938 z6aJ|t-hx6d>sT?6W*kkPNW8`V&JD&7MAN>%sizt;5XTU3Dq}V+ul5ilv#qX^(HKII
53939 zACKmK&+S+&8#FQQO6s#1j-3!VQhHV5>wkg#GB}d|D+$Xz15B(ah8iX@)F?h`k&l2i
53940 zzmcr@?Sp5NV|#Yg;PpjpmwXLa^E=5J^58Scn$JvJng4(;gQNZKXVr-Wlp8^24rA^J
53941 z{?rlqr(A-kaQ$@=&czW+Zj^lrXR}Y&Pd-s`L;m{xi<+T$Y?@+KK_O|Fd{XjhnP;<F
53942 zwR<-#W8Xby`xZq~GSMVp@=4$XRj)71Pf(x&D4_i}ra%R$yu|!lLV}HN>N5(fcpRXC
53944 zCCC?up96pYPl*Ki(*rYkubG59Axr-&^tS*TFCe?fYoC=P`7y-)k752{c9I0-fWCJ$
53947 zsY<yF{WUL3q8LgFblU!IX@0qrX6>}J*-~pd&XDOUjQnxgq#6iYN53tGaGemoRz{l?
53948 zzVWY<!gqS+%hAFY2xe+(LJV@$;u+yP{ifmEm+K1OndK-Ig8)svX)Jspf~#wrx}4_N
53953 zgw-<6-5)x^nd8f8zZdWV7q)p%`C}M|Q>?wK7#2-PKR~~Neig9p?E@xf8Ulev6!enh
53954 zCj>_yL5z<|t-awZL>$A%un40EmN4O1Ty70v%wpykb=52m0e(kAn98HL!w|-yRawin
53955 zch*aCwaE7O^guHL-d?*?TU!p+T$Ij*S*m;IZ7pj7%@>vnTv(PH6<oJzI<3=hl5EK(
53956 zd8SY)(94gV7b55qSgH3P0XLVCr-AN>MOvgg4iDZ!(5GexZ^gOW>#qaX_(n_KFgb85
53966 z;jvY)?Nnzy;}`V3hEUQjFKwM)s5{P9n3{Y3zuf=2-ip;Uy_07OMp+YdRtarJVX}Y2
53970 z_W-UxrpPP~M8N6m4Ty%AzAzFx7J_l?1siJj<nbqP7b@M_pn7XPy?H7qw6)CkqxSKW
53974 zxm+&$8){9pS9Q+GWNzCcS(+{QImd?SBJAML4}KFnhrS)SrVGeZ&-Kz68F|QD<PrdD
53975 z6?kI6wkP2XTo~|=VmCAjej~5KE*9h-oPw#;^Dz57UJhrqJxL`{zN0sh!?x<H1FKer
53976 zV4&57+5)VChDI-J3}X^=Z>R>ZWAjGT>QC6ak|ddoVvro4&e29qJ^7A}O5nB^?AB|#
53977 zt4+aX(x&=<w{JVqDCQR**pl1nv@B-@+b3uZ^LpmZmueaR<cUo!teBKi&OdDwYpQIY
53978 zx`e|iEeF4eYRCtGvw1$Ii#gG$0kzvZM<r*@OdH1Jt5FGK-q%!y0_+u{VJex64)+qw
53979 z?Ae%#2K<yCTC`*+V4LX-qnIR6?UF*WBu1clDpfb@f|)Mo!SzfwMe`7-2t|A3iaB3M
53981 z`*>}X_9+8T&jXe#bo5~F2|anVQ*Pc-rR|a=+H{ePHfm>Kn2j@qcuWVaFm+%GLW-#H
53982 zAf+7NV`zqxf+n6KtIgEsF#H6h$5dRR3-0-ApOwDhafyw!BrXvg9hWc<hb2U8A}nz@
53984 zJOrQObYU2gFf$LF9ET&kD-)UYFtX=fYAFGX%6M*+MIVi2xLy{0s+i#VaTzS__JT~`
53985 z&s}--D2v`dSGi*$w`h1ZfpY$S>r6>-4B&s3GAMR`Zpl29N5A@&Q69Y@(=;krqFT2l
53989 zD_()rUwDa)Fk=#3w-W}|FD9KZoWE)XP1h(`dZ3ZtInxQ_7Y}v9r1C~~OW|zSxM@)`
53991 zFl5Fkibln8i;V2U{of>5!U7=_JZe58n4-Q^BUnCk-C~O4!1=@BPaj183_Jm>#eDKv
53992 z4W&k*krL1m;99{5AdXNp9%p_@g1#0{3TB4JLgPjYp}jv^9~G-u(B|y4gF-$B2dgnO
53993 zML>&b6eJwBj4d8jvK7P;!pYj-2`y6=G)Cv=pZVY}pv=t=7xJZY#3_x}tto-rx~qNe
53995 zgBGM}RRk<!-7!JIFsfL4<FiT><Q^*KSGo=b+9PW#tw!F5Whn849C{Ws?Z`^E8&fTR
53996 z?a6Onou*m!p(UfC-*wm7kD~umM6%E^DtAwlj5CYY6v3=)3dhj0J|bA&xo>-tU@=PE
53997 z-BF3(+NTZuB_fZ-qoWSN#3ery2xKA#q2k{Dj>kf)Ou?31noj3*i29!rMB`Gc^p+1p
53998 zu(({?)4IM;w)MJEZ&6aA(A?@d&C40B<|b3=Iv9yGk;?-nuq`=>3xEAnz+eb8u1+0d
54000 z{2h}cQ|_Fvmz!Cws)`E5(M5W7J<xrE=lWg0VrzQ(dy>g-e~Nw$c;M^Ed!JiVCejAY
54002 zrMuwdFMRKtZ?i>-R(LT-^BMl)d-n61=`{Op>#=V2q{)&LBTByXIrNt!XDZjfe=7|b
54003 zA~)C5IgvFqOwNiAK9W{^|HR3G5tcJ*<b=`>{0Acd9+h+QGM@0q1?((Po!16j-NFbQ
54005 z6h$u6wEV_De@LoYVdvuI4KZhCsdOk7*Yf^6r!$$lS`l!8XUz8P=PElpmF}C~Ve%w-
54006 zZjbY1eyMcw>^VS|f`X>mT0XBCI4Sy4f#uvZZ-(28PQ9dCp_<UdL;nbA|6_L4L6CAl
54007 z0dhDFVScLlc=38obrE5(j4Wuo-*Ig1-jil`-KH}cijRBi8U|-_f+umImoK{7)_dPA
54008 zuq<z9^kb*IjX4S;1!PKsr1Qp7jV4Go>-c$HY<9JT3@ZAA;Bq}P?34x85($nQ8WZs#
54010 z845~XH8_ca=@+A72foTMG_8r{PM~eQFQSfPYR68xc1yK1mO&fjf-|2pMT%6#QqvP#
54014 z<kM^Cqe*}wD|Pl-T1{oslpuu6!ZuH*bW_22$_cdf`pRu~5N{JNp`QTO%n-Yv5QQ2%
54016 zPLu>*G0kiV;ul2ud|F|e3r<F(X}YjwWfsc&(UItbP0kQxhT-E$elXr6aFpGaBuDmv
54017 zhK7gnPV~2<UV!h23G<JmnHPGno1(Y1FsN5cMaPPWGmp-*)3<Jf>@WuEiA~M1Za$=)
54019 zt}2&R%q}PCX_6-hY_5FUJyo-Qx!Vnkm5fHwlq!fO>-`+m(`x4AWw5XK^8P8-1{OL{
54021 z%oOG;^+aWhfgG;Z#n51Z&aP=y9_VaZ&IjJr-PVaSy_+zckhyGewMYpRy%rYFRL-%c
54025 zWR90enNF3AvXjp%j9?k=s+$ldT@B@$V>dL5Wntk2*>mS}86ji1eFKmM2V^<GL-Y@k
54027 ztFc!e$^|HFXR~^>r3=QK?PPa$_Pzz(o;%sItxO5Jyk5ruJ}-<$vwf5mI72j8TBh8-
54028 z`<I<SE!NcilXf5xG=^fXEN4EbEUa|Xv>UkhZIX1<&}6E-eMelUg<eAcIg$fB_Wf~b
54031 zf^7-PBCJ2rbHSB-#y{5HTULY)xJs3>@F@rxm1ZnCUrvgXE}*v~7361PqNF7h!)*o-
54032 zw1|=@e%cwR(O-bXj{m@*1bXV~kb-f14TZ7_CUQ{np(BmzNFbpExPoM49)SBeS~#d2
54035 zGVb9aaRgQ=0o#q7Nd(nyu#T9`1nI>hl0b}suM8H7)sPv*DX-V^6L<Vfz>C3lgZ0~-
54038 z5nP>9LMKfcH@DsSyzS94<d3{n?3-2%f;^Z(ftiEsk*PU^BKW49uL~j@gE^w#ivBcG
54039 z0G`S_1{@6xYzW$(LQf631j=q8fn&9X#iyS-f=jNy?l6}G0fGeWpj|D)DIi-`Wr9oK
54040 zh9{XM3gHa<!lon&jB20SYy<_R<#am%o#L`wR-;7foj<T#EI5X!F2kU9A-7z*yP%r;
54044 zz`%yU$lT5Ef{jICt>DKTY}IT6?9C)`o?dE$&Hbx`uOeRn-bsjj=+q|_s1JB>fCi9P
54045 zXdya5XX-C-VCL0$p*gv69J!YuM>y(6Y_d+g3}<N)=`)k~lao{f3ihF4#Y1GP!uu?V
54047 zaG5_2Nb%$7{YVy=U)zICA{wtIL&=r``-WgZky8?1PT-=922lGxiuhH(8U~IfaB$o>
54049 z$CdP3az(3I%odADnE&6QzlPM1*ACJO(B3YP%w-NEiSZ2_i_=lf{iN9(9JS!6-e(A<
54050 zZfGKeeW;-|Y9dGq{D&8~h~R(P&ig;`%(7JVX78e7Yo7eXd%n-)2r9RBd7)IBnS#pk
54053 zj<el*Kf6@CwP3hF+^#D89IU>uSGu{s%N5gkQ_gDOyrWPBb^-lUaNd37wa@ZXU^p0(
54054 z!m-pfhJx6pV;YQN6vZP~9F9uV>nKw1*ZZAzsgTckj-kaT&QddD8%mRuNKKFeUdeD$
54055 z<3!Ox??id??RCp67L=ylT96fjV?92ru`09kz0aUe0Nvx+e0mu;OoA(LYTwmre)-<K
54056 zVr+K{o1V%?QwGq^>H6R20;{DkRytBbF-_hF@o~p@pftP#{*ia!p%=OX553?W0N&E1
54058 zwwcsST4)~Jfce3k2<tu>3_}7~XmvWSAOmL%_JQM3=_GzH+}8!5TIvL_6Q-sYUw3vf
54059 zmBI*4*X3G9E?QzLxv6<tg5uOKvq47`TVPe)GfQgTV<xVuZ)OA|beyF7-A125ioibV
54061 ziNJN^R(DOVHw5wN7+e=THs75W<*rk_S}@&X?fpJ*mf%A<VaEAYz*Ru57Q%$k-;BNv
54065 zqs+*(xwn_8$|*)b%RukhW?Joo-PJsE-sUtmznnjxcZ$c_Kqv}r5=T+7QdRt%K(S~6
54069 z9doL6xmnlh7G?T&+w+@-1$JAK7?lyJAm85?t$B0pUTCMj7u%{k8>@3dQP28{Y7})d
54070 zmrgNqUSbuN_2>QGuH<&i6*&0|B1t}s{wVN(?i%n}PXydcOqk^+G}N#d-8LHYHPK0y
54071 zyb^bk9RkBnqe#Y7B$kGdKBK~cB%B;&ev^I2c7Q43wf4^L#+qO97`x>5a-9lrqIT=5
54078 z|IBi6o)(ncYqt}IHp-4ys+G9&?>Lc&-mhQ;kR7XorHTQ$84h!R#hy2K#CX1ooF2{+
54079 z9*Nr)cD+;Cz-LDCV(CIr>xX>NxpZ+e4Ua`CipBMv4yQ3p+G<yYl)@33Jb!yVIKHlC
54080 zfo2)h%vP3g8t&+DB(_$_)o_BO(^-d;a#BiWvr8FuY29u7e|~p=ckpG*#{#fBz<*_P
54081 zyt`pv?#tl6XqJR@Bn1{<#I=j`s-R`;n+JU8)~n~YhBOG*wt9jkYfDWbB?*M8bnfjG
54084 zfiWwv0o%Z?*Vu;IT9-vp1(@FNJLlZ=-s_%(1Y5YOYo>4P`~AOv4!^&Y1tj>PJAa9m
54085 z&<`VZ<iQbJP_d~5x^I^Pun|q*#*JuHFnQ${@2Yji8W{fJfGx2S&edz-%`;gOsvAM4
54087 z3Y)SCESx$`oOmX780C9x;B~<XkC`syY4OAg<11JILGJ!8Cx}qTqaP?j5-54<Z6iM#
54088 z5ed7(PrZBG9ex}Fg%#kavjZzDY#hd?V-Gc&_#J~DO~ys$n+asosrD14#|CL#keF_j
54089 zWlb)V<&%vk9kbMTHN|LG>f32k@novEvtt*QWR}`Q8M@-(|C6?%$g+B_Uov66>CRWN
54094 zDcIy9^1z2IqQzN`yeC7#WrLZe3yq`wgbBE@S7BKTa3hy&JdrTVt-Pk_H!p6NIZuxF
54096 zG5B8$PFcp#%d0CWvU0Gx-|OTu({6#utfe1$5JNMZISU8P#}$<@>>I<L2X3X=fe#`4
54097 zKKuX(knGZ~nI?NZ53SPN_0FE*ixOXSwjYyQsZ>WR$r7rj?5-u}EuT&QD~Vkll3BoV
54099 zVG|2PG32&a&=OKb{`I-fsgT>!0e?AK$ZeBH0k^5I$8F9V;x^dm;Ef01g7-#~FOyG<
54100 zS?SI4oEI=1Z1Lw9h=6e-P7iw+BJ{U;whONe=)qKe+s!QKqQh`93pAl&O%&lErE7BK
54101 zR!&N>j3=`-*Y8QPK*gE(CaP9F{Aab1BHJdDF~=)Ak5CsWAzumQluHD}Gz~chX*=`q
54102 zZ@wr4+hS=-Aj&1QM9&JsETY~lO~=MXHcg|^ZZD-ZUgA0x&NLxGn@>1qxm{2gm8mz3
54103 zg2)4c`nhe_l^`{hsz*R!W~d}zG$B3&#PsT-e-5ZQL|%GrfQFN{PB4EN0Ope@`LXc|
54105 z44*R-p*lOilUA2<OAqX2@}+dGrL^9$X4e%f(R;XN*AyQ8&Ap2kD^BfPUd^x;)NQ-F
54106 zPK~>eU)^%@soc@-qFAmmyqrzTgQWhK<&v*iRbMYi@rXJZtQcTAe`Lfg!)kQowSA39
54108 zeaEI<S2>ft@O+nK2!=<0W%m-GR{b!qWmw0P>77z)K`RZo;!s%&2zG9FQSw?WN5{_{
54110 zL3eF2z!uQ;bZk6n5loqNA886{fy-;PhaH+!EzT4cb`M-rfuO(Tor4ham$!HfkI_2M
54111 z$n~5QBL$HIUIj${t*pQ-=WpKmdF%t|9|PBG4LKSetOio@#;>*ALXm|*YpuNook<ng
54112 z)$wAj5G4Wr^3xYu949u-sB2E0ztmy9pHLTe@>vyL>HUXU&xh>ac*m&YC#`d70yik0
54114 zt4-wq`zrdsA!TF%Xo=z1R!dYXa0<V&P+fplM^k{~T}I3EB5*f?-9=A0DR(Ws-Akz_
54119 z9-2l6YP$gt4c~|N-FOaI2Gw#3xAQ#uD7fun$~&xvW+60^@UmC8#$plJh4w)IWpLGs
54121 zFpNbR6l20VAvf1yf9gXlI{6fG)`#FK<v#on0Y5bE2^;^51pGJ=e->N>gT|O=PJ9@~
54122 ziz}x-%mNRLWoEtviL-bA4#?{p2u0!~^&)~31pdNX{Gtx{qTRRnMH4aN0x?RA_NHG%
54123 z;>62u`J1AB(Jr*komQh(E<z-UgbhKF101wvbeTV6RpN|e45P9$aFI`~O{7FgvVs4`
54124 z=<KqisJS|?qZqFVVgL$XvQu_*nADBa`x7CI-xlgDp%@usEisqljf63Z_9#xEihl^0
54126 zf_|d<HP7F$Xr5HBR-C3tlbXfpn0ocG3ac}yR?*awT0JhFhb5bYW^{lVBQTC31&UFC
54127 zc?JebCP5g<X+=%-wfd&&MG5|w(GD`i*szzB@qtiQ$3h7n#HwF^p@cuAF_Ej2!Uzcp
54128 zKlR_G@vTc^8^|J@ICWEwZ9ykV4pznt(cx4Yryb_zj4YaGi(-&qfOyLK(ACO@YDt=A
54129 ztU9umtqD3{4jss$rio(FaZM<PdYs^;<!)UT5)O(=n&2gEhS`K-7^8s{W&?ck4UVIP
54130 zo?}gh&;Af;A?Lp6t3qr#dL~bugy~Y<lm0<0@(*~3NEwa-;xip0!!>-^z>39joS++H
54133 z2#Mq53kZ;iILf>Nn^5UEM5K?SQ*lIqWX((B-982+3!Mn${Kw#rY2EE#gCdEJMG}1O
54134 znR#hkjXpQ#S2WJXQ5NtmWZRc#z6J@t1@bKtoBa|fj#~(XPJRKwDIi5J-sQXC;=(v}
54135 zudjjvdH6=Y3VeitnIM{p9iRT%81o3i#26ry=cZpq;lwL%>)WP+8OWs%i!-L7tBM=}
54137 zoB}fGdK9T8p-`qYDajgIgm%|OA3+w84~3k`RkAiPkrD_%gLd>R5Y&ndOdxzFHs)U|
54139 z)n`V_0{A?xedEw?)zU(OWx6|u8ImPwLYD+SE->4Vc9RZA$L!_3x=~i{d#DnplL3gH
54141 z#-a@##9F6KEcRAREcRCXUgFLBy~f1S5^u}WZiaRZf8}kP+P$~>O{Z+_{>(T1Rk^<X
54144 z6-)YZCLdMX{{%e*Hu!@f+wnOS*fNE~0&vJg_&7Fxd>p>X3JV(0Vx!nGbd)35$PhI-
54145 z*z1Z%xRS9sT*)Au2QG>w3(#Os3e~fXUqQQGWVBDhOa^^lN+F>vmrK_h+;jVk$<l-v
54146 zCv{#Sd~5sMmI;0mn%r;n?#op-9i_q3`KrRDR3$6m0?M$S#JM7Y1C2moIM!~<YEDqH
54147 z<#aSAegl0MvNDnDGLY-WSgyf?SmSS@T)TgZ<hlpMx(cmz!m(k&O$kEU6?BC^*^YgN
54152 z>yoM$yD3_f7?s!1s+_j+r9@G6K-kQ2>9V?12ZA1p3TA(Vt|EQ(2cZKVEz|m2vq-Cb
54154 z=t{Pua-PgA<g+`rZqDt{%4Y+aQslnAkkP{xx7d^D=Y!nu(deM}CJP?ZZ0@As5oL3!
54159 z#@aw)X<+CUp-ftW>+yOL%4D`G##I?s<)Tr%FQMm<8gltHV7TWt%>kD)b_%s<^7L5+
54161 zsmxYx`|-yhh*U=&mYY4`tqv<VOQJ#?caIuGrf*zwQeCs=*pse74jDoV<pI{L{H?N3
54164 zM{M)guK<HP53byUX}TE=IPaAVPinx|yYaC2nlyNcn-;JHm6uAUI#z!fP0_i8kXkmU
54167 zGaGxt`wVv*1fc(-nn+Eg8ZK~+q#AmjdEcf*Q=M6D5ND;S-x-LsF$!?;QQ(UGIvPhm
54169 z$|X#vl4PB?s>?aG=-@PtN0YPJ5YDBXNma`Za0_Xn6{p&}=L_ZR+(2E%NZFNs38!!#
54170 zx|P2L?KH-Nvn(R7d|@ce;IVpR)V48P&}47h{3Lbd<om#_0~>zo-QhfSy@n$FZf&u?
54173 zW}d$cH!=mS6km?W^x-cIMT|tJWWo>%#i(b-UN<~=3?ZY*LwY=USh>ghCbNfhG<#^&
54174 zYe+;U@NZW0KqNe74i4iUBnqqab0mT-W==KLQf)EMn00gQ<&if>BPmtN%31UZguRPM
54175 z1Y6FE#dS->-9>xv7|`fwe^D&70FBz)NuK>9xaVU+Az0V`KhfU{25dj|g$4O8z`o&j
54176 zzmtmq?+zb0_x^h_R<sCkv9aiT`K)CG<<-d|z?17j&)AC+l~iZx2Ft5jH)%9X)fO_m
54178 z`Bt7Iq@q>)5?lkQnR^f5GiwxKO6Ui^u=v-uMiI7i4*QMe=JI%>Oo#<HE0%Yq-7G}j
54181 zG&LJ&aJEqRBKp6~p-ERZbF85ejD~&elU^csX=GOwuV^qTi1oFHXON_)NS_cy{<~h&
54182 zP;ye>|N4-v+d+}##m;(ntyY16pFxb*M%(j%pL2wp27434&$DP3;(dPOlZlS0sbXB9
54183 zXw$Un`p!43P4GUQo~_y>#j+Q!+>d_wB-&?@aU?+z;~c|f7VL{xCupAx&nOh#OUz+?
54185 zv%Tp9t)IVJYdW06dFi#KuPteyB=)=Y<;JoXc^6O)-&j}r-J8<=lv0^Ar7t`%-;{18
54186 zc5Zudg*FxRpU?NC$M-AAo(g-?7v$Bg#H2G95NfH*C&ZFD-;zG<--d1cz_(m}lS#g5
54188 zTkCcOXz`a`Tlm`YNv(<^-F9`cwg~4Y13sysl{dgA_vqbDB;A!{Va*8p+#fi6qs`m7
54189 zmZU4Np?7v};mq#sX|J<~^Z=2%Ut1y-eVBOkd&S;F&v>YJMz8bP-oU+joiBZ${l;6J
54190 zhw|~}y*izzd-!~$i+t=0ov+&-KA2T+HHzI*w~%vFs?4+FtorFad}rAFyRG39a@5m5
54191 zcCnN%=9MC__T9C-Z4>uc!uRoSD_Pa+ZMz06y(S2AEBLTGUjdf)AH*&PC|MWaMsx^1
54192 z<d|A)yaq*t!?GY~eP-Is7lY4y%jqF*9z}YctP6z&pLmADpc5!IKdufBJUQ=lMH^KE
54193 zOuvm&1c;1@I7KH^jg~+#g<`5Se6+viBokK_+fQXnH!pW{iQyoZUCdSu>@lIZv#@)-
54195 z$l*8*jlgmB*fT-v0}lRu5e?GNlcy*9HgPm+j6mS9M;Q+HWYWZZ&*sES2?#Jgz7atL
54196 z7pJF(OO#weNbo$40}?P4nN&53Bj}hRcb-^NJg0iRce~kq=wdUID(34A3WQ-Pm(VME
54197 z@v-}!$&{*TXS+lxw+}zjduFhGNys?<(@%P>cVMYXT@?+(S*PtN8XLs=!G^742u2x0
54199 z2tZHB9-rRw<eVHMA&+5njPh)qkqIJIdvG(`E*7s{d*A!Mx%J4!map~OP9nw{qLi{J
54200 z%IVs2)zO;H6CYG-PxmSBCti8i!^=B`!qVnOt7Td5VqCAJDw?NeaWNZ32i@2=Ax&Uc
54203 z@x=>8`TpIl2i(dqzqmo=Kl^t+^vr1FXZ+js?p{M=WS0CM!`L3m{KI$d-1)b6{sQ}Q
54207 z+-LvJH$1trRZNfe{KJ$}6Bv$)eH$&&{)U@=I9kx{#6E~LkX58Ls;7dz<OYzUvsENq
54208 zE(G*r18v|l{`e_|n5c;9i6iX!vBkv1RIRD7o=U}mro=G{7dkq{6Y-cL4<28tX18-s
54209 zZ;u|%Fq-+}?zXqIZsii*`K;UEg<7k|TkB=9oGZL=UuR2Nc{iorKKxAMk^a_E%Y692
54211 z??FwJ<D7Mv-O3L4Oifl54rjNrn`Ko?b6h1E4>y$KO#I|xcEuDbDPduEZ%O<_HqJ<Y
54212 zp5MzKr_wXK*+q+{Mci1g3ch-7Vg1@tGZCz3|Ln)d>)D;%yirx-cGA&_jzKEv-{x&T
54214 z`$EgTy*50wlW7L03Gr8Q2f2fD^K05&-%Ihnc5Y$g+F~Qv(;l6FW>LGG5QK~#ENYi+
54217 zVX1#@pC$!SmLvj;r%}_FK9xs_gqAwzCmWJYRPz$2sC-H$NRE+G36}+$BZkE?lvFWu
54219 z_|-r`QY4plVz$8MNgQV2V;B*qQ?^C{9Sqb(_sQi_L13+|`v&hc<h<<fxvOiLb14_g
54221 z50N`a7Wq`T1X%_~0Je`$(SW0Br4d9H&_*C9UWFwphX~wj_-YV<KvM$!YcvLXRf)*=
54224 z%H%Nfgh+-1GSQom6YqiX+sw;Eh@phz0l&aBEs96$OR_G6`2oUEM2jZ?NyZEOraL<P
54225 z*>WdM$X#bCpWARjd_~1G1YI>tww980t#G;Mw1IJzNs-BpGK+>`F)S79;Y)TWOL1b_
54226 z)fe-6goXbxbO{8YH%5X0E=C0xW(UoSZ>Pb-O>s=PS#rjex@&7k*x6BCDEPaneATUZ
54228 zwY09WIBZghMP1S8Tvs%TK=@-A+Tjxn?oj?3v7&!+bz<<R27D3_++-fxjn_IQQj$8F
54229 zo!alEZq-L=4BWucyYi~sq(RgpRjl&O5-zKNntps?6zoh)G_=mc%dUjPg2pc&{WByN
54235 zSW3Y}{kSR%ojl;Yc;XfuDa~m1qPv!2bOu-<cNG(Jx}9hBu3K4?l{h_W|FYs5o}VZx
54236 z-JGqdg2fXoQTMp8g%150^m~ER+8wok!-f@gjl-dZz8izXRr6D?)%Pdaiv||NY{fy;
54237 z>OZ!tlO{5?kySI#-AWFU;_6}E(K42``Mk4#xFVv7DsV#|cuJsQ=kNxhsAh5FYLPQJ
54239 z-l{9I1=}jat(95Rr347|IqJm~Ixafx3NLzA^>*`8A{87>a*Xw))|S|A0q(3c)vPMA
54240 zRbWpr9H+%hlJjeV-EykgygWW*&<&2^=$#<pxdYdNOTn(0H?bCcYh%#MxS9ftL4-j+
54242 z?2c*)BX8Nor@G$Zswd|yYs1tzS56M4Z+hv2om{XNeD}bS6EsO<F+HtOvaFcuUr-V)
54244 z#;3M(3gvsoW~-S-$wakdm1}xJN&y{cmz}I88@W}3rlP(`dF%YPnvvNSzT|W=s^sT*
54245 zgBiC&&ffI`vi+9sdUMq8zMZ?C)#r0}EwX%?yZc?ooK-JbPZ%jPQGIgus>PCS*2Ry$
54247 z(xT6rf;fT39ig&K#~@|^x#8dg2n-fWStW1FWwRLoa;J<<6Uh5;Bba+wC}d4jH2QGX
54249 z>eS3MHG+O@5;2JL&%HkyqmEOvnT7C-k$#&2GnkpA4%vWjfN-{CEIhg><rJ-#X>KSq
54250 zsoI>5iJK*NJ;~~EtlAhooGY&^pjoG-NQzx#6B0&~aXB7W0<0mCCK=%2V_c~*y5VFB
54251 z<4Mal`c-hKb6?D>d~CX@`pu4r+a_@TqO(mmvd04am?*p(gEWN8g@Y-)r+@9TdvtNj
54253 zn;ZMtQa8&xz>x@AeRj~FL)-vG>CxAuz}*_-FHa;h#8V5PpU5#XRQB}C6MQH#!iSO&
54254 z;FFb$;OpJI2OJH1uBYdOOEyi7jJcIMxm*r*_Q*9SQF)@D%fYR3q5QTtAE+-}wOpX1
54255 z9p2(-`6GH!?kqVz@W;3gZ0#Y53om`7mr)B99g40UXNdYM^2jZjoRb!-DZQ1C(S%qj
54257 z$w}Mw#f+wEhG>;!ioz+rN%Nh|o}Q6-a@v}o%W+!JnorRMli^90ieS(F1o=y(gWd=O
54258 zR|Rf#@KF-2q6papSBf7cf+u71PacPF_hHi!f|Jh#6Oj}hcC^9!fzl9vgh9uxq>wFY
54259 zz{!SNa$g*O3U-FjG3wd7d?p$6tr9q}gD(b~J6?E$AB26YgR?(~Q1M{f)R`YgASVo`
54263 z_Oz_%tz;H(u;Y|cve=}Fb~?2riL%5|xdz-z{PSeqS7c6Wrg(6YufSzT_`5&=eBX#!
54264 zf)%-=6p9_rq#TelQVuX5b$s&0amr!XZ#RKGT}4-6sF2T{uI0^?v&O0F(0`a@SKxvV
54265 zv`UjgT^%J!Iz|vAW+={9Dfv?$5)*u!v~!P)q~U0#O30*;Hp^AFs(N*c5;}W}N|H4-
54268 zM$%3A-0HUmdtSTkW;vg%**HtY_?dYcBO7nP1wQ}!&i%-%$fpn+*?v_A!T3RVpXwNo
54270 ztgC|5-dL(i0t#+7wguJWoqvzM4;4WWat;omf`94=L>iM{7DHh8`Aif#hgD;1`s{pI
54272 z-g0ZK0kuHWt9hE!4M<EA>kwh;&hMlD2xSo;o*@6WPf+mZPH?vaL~MdS3Yeg-d#Uu$
54273 zYW86N?81#su9+?AGA0v#hJ*~DC6iSl2^(emOC>k$l!GK4Ni9W-S-*rXBUR+~h%tZ>
54274 zN(5EO@%{(sMWI0xN5IoF==0GlVPasi^C?OdLr%}S0jF2d>LkYq%LO5-<@5@uxq}9y
54275 z;hBN!?bOp=Mk{Dqa1AcFrUsvsq;6LCM5zRq&Z5~?Cc`>TEw~GcTD=)?yU6if-%7{h
54276 zbd*8<ZD2YI;BMlkB4Id!jXQYWT-_j@1d(6?E#POSfTssJBmX;cmk+=p%IP#k_Hwlc
54279 zBX`M1C0x%xPX<3yVA-s$$A~yxbL_V48Z95^;&|qKFpqN+`6?h|4gp7pKlscaR?d4<
54281 z2Dy&>Dw3JWa4>(R8II6e10OVlW@d&;0wIku9Mo)GU_7*(*5YJ}CaMX?lah>V<kvM-
54282 z8V@K-6y7A3iuoMP$dyc5ju`nLA-{%XVJSrTYbu4L5*D}vHa=JSnRwi%${^v)m!=J~
54283 zOY1o+PG=~xYLpUsLN-+QU_%EoKv!(1qqsVW_lRYyoufEWDP{EN>TaVif}rrdAw(CO
54284 zSHRC?(69^|Jc@;nq9xI97lkEhn=%gpc!_Z=5tNc)LYB-Iqf6C0g9!#pG#*qF7{=>m
54285 zmN%(|Yi-70X+qN}npOx#rLEm_TLvnY6I&O`yjs^-aK)y!xMnx=c$`8Rq3RKoK%zuk
54287 z<SV^|P)sE%HK|t9Di&p@!xdU)l8*}srzh}kX7M=R-?0_BNwc=KvE>j>HJw;pZVA&Z
54288 zTCPM;1Z(IOrrI+6QL=hiPAS1~{jZ}G`UglJX+c++nrw%InI{;&1Y4^CH@-}s#f^mm
54289 zIA^QSs+7`6D1JyD&C}G(MAunM`vRw*oXbNsIKyk&$#T-x2H9|HUz*8fnOm!r^kuk=
54290 z*c6n03#ho&&18Hfm%EyCvfI%vIKVd-p5)`G8>~5}6LO|FQ#|sJE;4%4#iO;ARwF7N
54293 zejx{QRI|f+uU8rh>7tGu)7eE3L6L|unyl%!?Q^CR*BP`HCp)F~x|p_-nqJIbZ)Y2-
54294 zl#*%bmt51zOLD==aM|CHSdQ=ew0jHiLSt<!Y3{h|Nk)fhRCg5(>qJH;Q(Bi5I-aZ<
54295 zY7N99XhuyNc2)*{a8f4XHqR-d><CMB4p0etU4MrD4)7U!fKUEGn3|E+R{@oBfU~e8
54296 zMZjW*iQp-G_Nn90F|)%qIq1F|lQ=fpE*5@QGI#@gDfDrsZwj!2!XjPh*~3yDhTvEj
54300 zedAt)p09<@(J-{EZ-mTKh@q0tP_Q*+vPM44H+KW351IcS<<K*T4F!j11YaguLN)D}
54302 zp#8$|mt@znGcq83TI3TvXG(&_CwnFrWp-usE5HwI17+~;k+!k~(e#1h%fjxIBUw1B
54303 zqKw_8q8vE8$EV&BR+PIP1nI1G*D59Gb-Jm!igHw-h&XkQcEd9k#zcG?%y5nd#Z+0T
54304 z(!$k8(kVNo8h+va-Zy?4xVw-?HLm!363g>_k9HgDFgmoHuD9Bf$?P)fmKv7X&Qw-q
54308 zsyl+80>3rAhK-e}TV9jZI31Tr=ED;fOUPWx1`cInu>tuDRzsf0(t)WthrBqFfT_WO
54309 zPl(~zk*!U5D>>#Z44*;UpU7zT^vjdH&A7)_-+(6R+{U?Kzg!FpCloc?g6tPhkZy)@
54313 zdHLxo_xZ)%A*k9(GL9E}&kHQ1qCZx4;im7*`SR)q$_uHA0?Bx#vu~(sN`sQy-~PT&
54314 zp)aNEHWc0jm;X0$g=K|S2B^Enda(Xl<kY_7Ec-x)Q6dmxt7s^d6y!!G-nmfyi!q#9
54318 z>>}Hvjh!tZ(q7>By^-Bt%P6wEySm%!<g;Uh1~WHtG6qv;<1DR2opkwT#S0S~{+iu#
54319 zjL_wn_4so4b;^gSf+hdQv=zvfnX~>lu4qCl2mFo(FYhk&RA&L0K&YXJ(_KME-Eo^4
54321 z<rF1ss5C_itmUm;Fi4)%gvOGl72M4AZl)t;V8-SMW^A-Hqt}uG7o%dZSk7^ZcCl1i
54323 zCk@`UBNtSzoGJ}+UByZ54N|wOn@P-g>cYx9V4K$VNXn@(o|APyKHSLZnHaA=er<FR
54324 zwK@E5>^*=14<WVPpnu*zt8;vB2ZR=r{&{~gH2|k(W=3je8^?oae|j5Xe|gk8KJ-?B
54325 z@+Fyifgv#h2cbHQ2=$<MUajwJdgX#SY^zI;U-Q!8Em7H`V=L!(^GR=exv?QRTC<uV
54326 zwZpzt6t*sI^R*k@<c3EXuyK5;v*I+2)Y17YpDZ}6p-!&xKXD=xCzBOTwhIfR(-cSt
54328 z|KKR;_0wn3Af2)(26p70O@whb-Y0<}8-w`zIxy@VjUR*f!pE`k<G&gZ-@Kc2R0&x`
54329 z7l}!C%owg4n+Nfoq>v^lmr3IjkX=<@Jzmu-I=OJY8)TE<rfOP^u_|rtoZB`~r(}(4
54335 z57R%#Vb4DB$ANB~R1D|i$Rr32W5DBjWv;3?<E5T@`J{6dq-Y_Qv?9f+v0LAUo%r)8
54337 zRi35=ll45-vLpNP%V-bDBHs~GK@LV=6X5^A+E1wfX@Hzuratl2QRpzdGOo>>TDX4l
54338 z<&z87!;R}%B%3dJ^ULQam5viIAc5JrIFh`4qvEt&6qN)vDe@-g$JlDFa~&F;o>1v*
54340 z>-cdw;j}WE#M(S>ik28p)V)-~%eYHkqT$tONzfUosqrdD$CXa2sHdX7GamhJr1bSX
54341 zXTZv0SSu%IU?`)3#%}k-tVyuLB!HjX{<fXvhtJvFEtjgSidI_UO%U-Y!@OiA^wFn2
54345 zERt$`D%JL6un2hc$KhB}K$y$X{@Dy1VMW2MPu_@6-Wbgvc`&mBBF9$%Q2>9uJU5Os
54346 zGlmq_-Qa3-X1=pHAV~LwkOw50=`5}|V!ds|IM!$YEvHM21q8u0oxH$Dy~WP`RlDcK
54347 zp^9s(yu``2WvWxCRT$-cJ8C2Tm>_CI5cRK<AeppnNdgxDBFxq1PLX7mPcX5NWD~r-
54348 zykx{!E})1e0@Xk%oCK8rf-5FerNJ{>C7>fyLoY7qtPHe+40wccJ*DNQqf%88`8D9}
54351 z`*nuytnpo*8oPV_Yo1=8EV4o2XLiagknq{Ty2<Uq;%cMd)mjf7$$-cd6%5y<;pSB-
54352 zm2W&&?<W{f7B>7+-fx*04sMPs`VKr_Ia}((1O6#+Tz&@mX2gl^4VccL0~(v#1V7mU
54354 z#VX*QIHf2h1<Oql6h)yJC)8BMW@(XwQ-Wid4eaAUFZGb~BQ_C+Ix6<oP&V34HwAUc
54358 zRYfumE=J|ui-||S`Mi+i<1vxXJ-RV`yzIppnou>fR83d3?G@C${m$XjY&^HWzI;DU
54362 zs>@mrZ1isJmF7AVfn$bW#D4@?K$btBnLv$j!SS&1+2tA60*lVfq99y@v-7dJ0e}<O
54363 z31R8koYb1ffT-XvMP6HYd28#%OA<UPMKMW9UT-vSHtOrrFgWd_>!r&(bzmsS7@kZe
54365 zj9TG;7{87*5q+dsC}8a{ivim;u$k8HaOgj}xU+sZY;Pdr-7Y7@2^1^1+1od7pZdi#
54368 zAz$K7?y=GE(W+_!wj{J#v6`-`y&jW)UX+r~g{96rdt3J()Gi%454<m6NqY-&<Z*x*
54370 z*m%#+nV%5v_6hxNpYYHA#9a+S2z(xZ1$0`-I=YU}B%=X~&5FrMl|YTv>_jWT=RoMJ
54373 zYnxd<fS_VRLl2cf44d_0&Y;~HWD6-XT3cFx2Idq1$*?ykgL66)rVmfCW+a-j=@@d=
54374 z?DvEmjsf|L5gKpQ%+%s%-UB<kL-F*F{G6}S1Vf-GsaHLyZFiP2&h0h5vIw`B)NQRO
54375 z6+GT8VXecfho--s9rP2){>PsR)oHHu;4r&g$P`oA#QOW(Z9liSQh*Hnjz@I2khaPW
54376 zbc`OjbA%it??-H?ZloD?W25%0x|us-aEu=Up_(E{389wOtavJJXilSC=g3z@M&`0s
54377 z!s3!Lo68Z+a|vIS@)j%+T)ne{y@dY?a)4YJ2^-KOMq$AyJ3+X3GrS8gXKiI+fE=I)
54378 z_|#7hQBkIbZ2aTz&Ar9R_559tQWY-UDcW!}2HX&*$?{62e5G{xvKSfuhc}8xp6@e&
54379 z-2odnIzW?Xn=a5QR;yI0@YFw(D5a3qvspuM{L#Wg#Ty^GRjXYr70>1O4un*AJrDOY
54380 z+Xb&I^J%mB>4(<<LxaodE0(#osH$0$i?VJ1E9xLQ<UgMKTpGH1(D`#w0>_R_;G-WV
54381 zPCPSdn@PpcnTatHBc27WDftM6lB7sNF-Ql<eh5w?$9H`zLc$O(1KwFeg2uHM!w<lY
54382 zH6nKQ`$uK?R-ocvdENIy)dLqm=8#;jkk6?eO(kcNSTnONgJ=X~cAh29!C97mi8Jg(
54385 znfvL)-Mmbo6;`u*Po(_aO!ZRHKg#F#ii_dYhqJviV7Z!K`_5-GyQ@Crwzd9)k*gVy
54386 zW{vnDavqZApp>9rk2Iq-SwPOC=R?wj1v^uVjvFPer_u+AWzM$qjfaSh$wEXxni#tJ
54388 z@A;1JW$U$L?=X+Y47%0^{->pBy(_D!Wq0SJ_4hy6d~s{IlB95<l8X_k@~ySfirMHG
54389 zg(tt~+3iRBSqqTl`Nt2RTup>{B-p<r4k3Q_=j}J?aE1uiv6CswQ;IaALkNyRkx<F!
54393 z>3jeC+9&t?3)R}yQn?>`o27>a-~?K_vcK+JzJFiJFX;7zQ4llDbf^-sAH)9)=^{&?
54397 z(2oH_?-ZStpzq5pv4yR7-@p8cBfxgwdN4lG&AOT@=B-P&Z{*hRD<0HSsW3u_q4<A6
54399 z81(-+o^fRV^6xHva{uu9&bJ&cPK7BiDtWo%*Y2-%-u-lOFbK;bF@%8IQ+xBu0YN`D
54400 zQ4Y-H;rqv0p@p_$^Shr1{Xy@nBTd;ahUK&UbiYLtkYu^s{AnHqoCFjnj+2VOm6r}P
54401 zxyAfWC$p2SUaPKs_W`)0Z#h^RpXF9fFDx%5t}oyC^g`o!zY0$B-|qY>b{l^;GK9Jz
54402 zJ=P6?{6l1j&EY%Grw9UclR1Yf@_8vzq}Ui4$0-_xIHbDBr7UCXvAw}&UZJ2#dt?N7
54405 zI};~Bv>j(<PF@KN{N>UD2)Tiz70-KFPX#YCq+au8lO;}`6FD@<mwe#nrKfj>ZWTC@
54407 zi{q0o25l|^c(jVF!tvHQkk&U#5~y`9CSx>ErmVt4-}-W?eBF!mPVpRwd=x;9c;M~;
54408 zljt=pk}Hj%_W3s91JCR|cCePMUMhj$u&`4McpK1RCl4Z>T%!5uN9tEbV>*-$T9Fot
54409 z5$BOD$R8U)o+9-&^Azi=i$fsJTj<uQJjFaM%##vwDr}B27WtvBCTNnwX-)<-DKGxm
54410 zvr#n27<~Gu<^v}20h17MpasH^W176kB&_v<^OfDl&#ghXum9Z-ML`DKqPJ7bZWXd1
54412 zjQl800by7<vw7`(S3<G5a9AwHNeYh=2^H0E+9a8-r>mL#V($6uZqaWsH$QNH1yCft
54416 zb3o5-?qz^ZNlInA{=S3U?n(isT520^edwed9tNiW_RfEceU%s?dys23XXuoDTOvi1
54417 z$R4^!OpwB65TNIUiaJfLQ<*5zE2PO@yLQ#vdD4h;B*CyEB-g^<f2Wub;-nqdS@)=U
54420 zj?Grq-@F7)xDJTmHo8rmtfUW4CBMyCZG9?Yg~VhStz<eN<_69P@SIppinR7MA7)lb
54423 zcd=bWaV+5}>rEKq0KXslF^{fSE^pOHhK=E5jNsYAp0bjD&u3uf-)*|ZXAl1A;>XYX
54424 zm#Z-A4>Re34^ueUXtC<@+PQa?mk-@%dwfRn6VVF#-y>Au^)7$jndHOXaJbn)JF%0?
54427 zFyLO-(e)EbbsS%xWqr?5slg3*|IRnQ;29a#jG?NPx?K91_e1>vqwdGoVZ8vBv1Sx0
54432 zQbl*j`g@xD9h4La)|Hx>%GF9{JtLTG9F51Bv|?|S-Hw*6STqGO&7eU6{(P<>NFt`L
54434 zRao%w>x!dWqfD;mn0dt?w{FBfPh^25-hFlLtx{}p*lk10d!okC@6B4>v86cEK{-Ju
54436 z``g(t@aa6+!R_tK&q+&LD~gm$0Vl3?-=+^KqlnglcNS&#0cF<Rw@4Wn2tw!W^(YgO
54437 z2EUsHy*FimDIEr+5j)F^wRoJKp-nN7aoz}N3I~P7fHqvMKWGSIHZemS)woidr46hy
54438 ze-8g0WE0tbb=k(obxUQ|zQnL_g7yquGpQJEqMP^`Rie;eJ01L-RKVjpH7#t`YB3P}
54439 zgcKQEKiI1T84fNfCwEJ*7zSNhh0v-+sBfABD<<aDf~Y7>8dp=#^?K_seSbQnMeo9B
54440 z-3!t;Vp>kE=Yt|xGM9Ytmugo={t{3*?Mux}Uavc@1hWTszJv|&0f=m^k-l7UFnpRH
54441 zT}4+X`O!042F^;?z&~LRo*A^K4j-c^2B-pz9XAf#2pov{tZod);aHx)Dh$g=q{y0E
54443 zdkJ`*J3*-}b&vfLFtDF$fpJ&=Owfjp-H3Y?fWxT?c=B4^Aaot)V`z*dgDP6tE;m*m
54444 z7{S5@jNft|!$4M#;<tR=CMmd6H6^R&R#Ge0;*B<6sIV_SapMCIR6(3#7R$qn3(%8-
54448 z&?jpLxgq22=7xGmuTd-cr*lKtSqWRnCa2OuM=p%RSXFc{mVWXhp^yabMv0Oc{pe&i
54450 zslSz9DY%7}V8=-CCZH%9ZtB9dqePp=Wc%UW;bGmO1%^;-#mL`^+rz$B7FpnL4M&!4
54451 z=S17vczJjI1I6M+FZaNM_oYX8dZYB-^Q%{vT2B4PJ~n27cRV7d%2~6N9NU4<;$KEq
54452 z5ObuZ1wJ;_eJkh+Hm$19*M^2`#Pmqu2-=+b0}37Ec($1l1QKJ3Y(`#d+`OI1tGtp;
54456 zlhT&l%s6|E)<doQQ=1`YLzQ2-J#0NtgCWK7#-Ma5WhSA@OZuXlV+Ebj6^bJmK2Um)
54458 zGjw-W3@-F`4z+aNC|xKOpIR%OFNUHH2r?5(40^W~AUWFS%Ym0uDCtq=<#+M-AVZjW
54459 z=?BW+`kH56T8&Bx#N!bv(Hvt<9EjNj)>&?JkZx)9d74ErT2YjKvGNliS%8xB_-OcW
54460 z&5z4L;FYdw$%-H;M3`YIpxAylv!C&9-7Xd{7mD8p=#<!mq3F#@!LEL5H)^R=CApOh
54461 z(kf8;e*!-bT%YY%2l`v`0=w;c6}m}tUf^Adba#our%vETUAKW7q!}~Xe;k721ct}P
54462 zQTV+7r>CFoS_AjV>QhTImf%4kFOWTGM|N*47xtF&r(8d11b={dWwt<){8|-ACMnDr
54464 z$zV$)0|H?%#^6AbL=s4_#%r(%_HV%0*x1;+{=s1E^{$PLZ9?~7b?<$zU-twJ0`u?x
54465 zFB;8s-*@ZQt2(#pobQA>XFSEpXv!4B%a*3KGJ9`2QXJ!<z#&;My|3x>oX8A>!H7Vd
54469 zzXj~V<md-nBk^NG#)Y}wBqGNyxNECJWUwekNih<_d&bHLJtA`njiDKm78FZO^@qd|
54471 zTOS~XZT=C5?jho!9kX~2|HySuXUe-OXm(LRoB7$P35G(n*?ES4<UC%*Gq(*wO=a0y
54472 zc<BqTP0rY&MAE!uYg#*P<c;am(;c*Tcr6y+-<~~C_qdVWgAIDA>woTnr8+j~nVFi~
54475 zyqLE9rE+=BDVIb{sW4PJ@QRQ$X&>+PelB#3#NzJGmOWFr?_H(UUG2-t0l&ed(rbQt
54483 z+kUnu4DcnaWr|nSSKj_B{p7;&rKP(=z9=QM;-#0Y#+&=Z+`d}<nyJq5l_0uwUoSwJ
54486 z(pD7<5+rHcIfOovT{~Tq&9a-jb~U}LI*_!JhG#9zTT%2khUYJ!OJD`;`tW>0AfE|7
54487 z4=npDaAj+Gx$REiGaVt@x84AxCq2F7<wb%fXxTOpG9AiSo)<Hg-!Cs8*6f5zky5jJ
54488 z22|%}O0ns9Wp?~{@#t-rG!cUg$r7w1qmG0|ZSNI!a`CdAyKmg}oP{$0I}T*Mg1QGx
54489 z1E+5`lEkL9Vj50wk7S*UQdgfHT@9v-qgdnC>ZBJ(TfofeNpJP!<%i=zXx6|`!3qpg
54492 z>!-J#;w)9Vo!}IwKjvGN#F3-%ozIzN?HAq9x^`m6zU^l?-Sp0%)_K)|Z~H>dtHx!4
54493 zAt(szJb&)<s_jO-7M@ovn|9M$=+CTK&UwzOrjrY3MZOQs^?l?tk_I>R1wDX#Wk_x2
54494 z;|sIt04k{eaYlNGGj5-eMoz~TM%xVX%OmE$B@4zNBO1#@3B}JE)q(!E!+IJ)7A?Fd
54495 zQ<J&zR=J7Zh|XJltYqz-h)u+DD+whg^Qz%BinkpWT+uLQvbr^wIEq=5ma;M>zi8^Z
54496 z7mFX7Nv(Fgj+dU#s411~7gLSG^?L+UpqQ-IO5Js+)QHsU&rw%`Hkkcj>_?6MZG-k%
54499 zNq2NXWfDQcfP6Z0<^G3{4g5y-+>WUNDToXSYm1o$Rf{EDO>l(nGFrY%uim-$lATd(
54500 zcIC>RF*Q3`q}0Zqxs$KCDKi(nnzvHdqYe5DrZWL1wuPE+_kf(kF&5f38Y-?M%&=x&
54501 z-_dU2a2j=b5Y2pj)37D1Wk4FeLd9;@@O!#Kxo9anpE!J=aM3WBCOqKQIuRUokatZd
54503 zIBP&3CrZRe(UT0l_Nm7J|2Tvn-FWP=$vPOe`9jd<V_}<rI<rj>22USAZJrF<<bOSC
54507 zw}Up%-q3&<_F@J^Lv4aHpY$AR^H|j8s*Sft{k%QuCyWAk32O7%U@Xu6-M@`m{OyqT
54508 zVVf7DHlGXI{La^-HeVmM2|VWX6l(MN@VnMOzVVi*)mx(P3eRqT0JV8vG_Ox=$Wa?P
54509 zY7+)SJ&D@<Ui7YR*s!BEcGM<tW6%<6^QEYthc<4E+T0km360x-gxY*LYV*U5TGXZ%
54510 zwFymGe~H@sS<vRTAHE6{LK+qZGz@JPpGR%J8n#*gxijb-D(as@ZT=!`^Megwgl&vL
54511 zn-Jw6MQ#2n`Yv+gk!U=RjI6IKsIQ?m|1DZyFWs1q+Du1nLeBI_)aGxad3|yt9<_-F
54513 zj?0yHyGZB+VdbBX>&#Rtr4lRB3dhmanYf-7($l!o3{)wGOsz(lbN+>(Ko93etvCpA
54514 za5xndv5HgLAenz3wkN-Qgumjk9|=!g6e?|;MlvcpITchi7*?1qpQFNT$Y=?cq7oM!
54516 z45$gUT&6}+G^eKGqL$GZT}VxP=IlbO5l!t8qK}B*=vS3M|2<df-<YSXIGfY<K&;7$
54518 zXjyZi(OoUK4rV5rnMS@8OQB`-ZyR4Fo`bg;DMZWY!L8dY%H#S@LPA?&3@qXj2I`Me
54519 z!eC*p)kq}`O%`!_GIq-px7RQju|}CgY`QhQAE7433tlgsIetqvSFDt#V-wZH&RXfz
54521 zl1i~T=8JLPJ#{H91iActT|POI#<qeM-3m@)yWB@hG#93^)ug9OV>>$y!Su@P%2+#-
54524 z=F0Zv&5=-`$`Pz;@+{7w#A=FW>1Ijf%<hrt>d`7fsnylu-b?DoDkC^GA847yoeP;A
54525 z$%SWiChM{iP6fP{cmTxERFv~iB?e<>PG!^-w>fAcpR*~3AX!@QN5)n=R@?bY2RU=O
54526 zwRF03`gk-1%q0GA_!!86R6ouIp0&-xa1bE2kb^mLG)OfnWim+rw7F*pHNRMyJ7&t6
54529 zJZb1t*U#3oz1*z_;$u#-qq8cby(PV~IJ@ZO;>Ckmw6&E+ry+aGC0gdvuXtH^MVr5!
54530 zHLuwJNb8!(mDP@Wd{=ExQm{oOsj-Hb`XfE7`I(radX-9XL<Y^{O6Scunx=eVGH4#m
54531 zmkODbV{PVl9Zdd5kwr93dkMXp;}rIS1k&CGGt(kTmL1Ex-54V>|JzF?(=HvILQ+XR
54532 zw^XX{&CGN%^?WIw8j(09fL&-ms>E4Y8f!-qCn{0$bP^}}-;CyW_CmkskUYhc(_T$4
54533 zPFS4v-Pokxs>hv_>y}+eUVlOIM=*J-l~*)KioThfbHupqT->KP@9a{jiI&}7u+s1E
54534 z*@cs-!wbu$zGDFi;=McePEF*q_{cr8m6<)Q96D1Hjn;2Ll4z<#FvMAf5tnw``B8C{
54535 zb^lQlRe8KP5J%Gqf`aFiNR+O`(_3XyQWq1lWNS(+5=sL$nms2Q&BE-t+34sZ*v>}F
54536 zG0_zfAHDMKjBzFxb$2C1lSXVbd)Z_vN)UJox`?0Ozoop~Ppcjqf-hn5IV3i=yyI=<
54537 z*ap?uf}o@Q#pA6jPjs>Zli`?}SB+<q@oM*mOVVCWmWz7)aAm=1I1D*X&-vY~p*uz2
54538 ztOViFINR-I@DY##SNA24!!C<eQ6L76ZWrKV5irc_3Py`XrUrMYvnQ~`t{lhG6qW`l
54540 zIqyb;zZNQp$$WI+lZujSBCd~f2NTp9Gki;OP$ZBh@GbO$aJzeP*5Yl=@U-*6Rz#c%
54541 z*W<=*(Yw4C=XXIbaM-k8J6kJsmqO$qX^K37^m_bmNh(MHV}|K(Ed=B?OD~;~=y$WQ
54545 zUgV*89}opz6z(1A1_ZsJ7bpO7v=jWUR{+L1rvb&%G<C;0`T{KKialRfxRm<-3+W0y
54549 z+oz%uKP0?=n1cxb`Wgn(v`V9mnjdL^?vJEuikbmBifOBWO0irri!2)-DK%9Jszpu>
54552 zNTpsoPrG4GbvDeY-nUC707{)wr%^*+TwID(%KR|3dT&r-tG8KlF{&n;&*gB9tq}Jk
54553 zNX*$1Z#oAS8<uG;RJvn%lA@H9n6g-fec+8Vg<N84#;_4m(sG%Z<nDB?wWqmrmSEg*
54554 zY<@reX<Tcukj@tn9Wa;rQ$oavh`_@inNe|;ndluOGNH9bF!$m4Fd@5TLZ-|jO>K>b
54559 zu|p60FlFV4%81EO-lRf9l%%N|jX)ZXDWy4vOPH3*^Q5cqT$`xIr%ugXGF!a-;;BNs
54561 zAK>Gl3U)q`HAL)ALhC0Pg!x2ez~KEuU#z<Iv*!g)Sl34Hx(chCI#U?V8I-pvmxDsr
54562 zc8b6lJ31FY$gRv&dg|(4wrWje+Dit<n7(8a#>LmwM4Kn-t^U=y>ijg!W@ids!7dU=
54563 zXzM(0G;<osnmU7!lT>N-PsTC@1=o?>_&!mFzk{G~7p#DH^aTUbWCic+)vyj^a<o1N
54564 zBpC$C;7A>hFnsAJU-Kg<`mwmssO59EsVO{%A$e5vBQ)UR!iL+_v(QU@Hmz(bR6o#1
54565 z3Q^M<EQg3l^OSMfT0Vn5pN>sd3P%rTa;v?}qMyvi-K=M(HIjZw@<6(jQ8-7axLi6%
54566 zGc;r2%Hd=GG?_B;b!*Rl--*ejpZP5!ZM$8QOT^5jI;*s4TertF3yC|)o1Y%3^iTpX
54567 z55rBo&C=*mC4{X-5Yodc2ir=h4`F_BdkZ>JbkCCAeOU7$%I<yvH6J1<I9l~VSEPh8
54569 z`V#SI-&|mkcw8fN38~H{@PQD~iY``ea*z(H1*tB=|KSCPl)M8G?2SdN4`MwWiB16N
54571 zHl+X~kF(>BAWR8|fX{V|VqA?-M=Z(dqNGWF)<4*`OEblW<>qsI2ZIi;7N-n3EAjds
54573 zToE4`X-=c&V6<_+cAj?RfZs3!e&cQyh0Z1eRWd3HJ+@h}b`+sF?f{nMnE^xzgDWwq
54574 zBqfu!I!Rm;8oe4N<(s_8FJAl>1W`Osv8FM({B-eD&W_=N&=4~27)ip}@<%X4k@<w4
54575 zD<Zo6DUyqy2+TNh;FTYlQAR*Y1+5os%errXE-+I?V(u*Hq%&xGRyZ>9+*x5sA)iUv
54576 zX0T+o!IIwjPzifBSW-*Yt@%Pu^Yx5mRjj3#uN2A{mDKN;%kGGqGR?7`oKTG#+}}8{
54577 z+N#HTH_r1KCRVHIs8oF1UA?-P$R9+gq}bL>8Fg=0G}HTg1WPQ-J$NL5C1Et!5l{ou
54581 ziQox|Upm4kX(AB5HCLD7a{JlW<-GkzcIq4<>9)YCsS~HNRl=W0)vmg0CR-Ib&K_?-
54582 zUNw1vOJ_ZnqXbK(Xt{K-G;v}wVyAC_%OLa9EEa@Iiv`d-12fwNWW*A;lza*p;>_-1
54583 zvZHvdv|qL*NA+|w<1-RFj~DDjx9n;*Z%)-jPKf6@L%cki+x<bIuakX6L14^8BGC`(
54585 zwequNN?-_uqtgf4SoR%JD`i&WDs==OF@K`qUxNhVPz&JZzMw%0Nq9&PBz$7Xa!JHx
54586 zNO~KK&YpQ2Y~##WYE4g-izWgeECUiS!43~UA+8)2IN4Iz{+tMKz?Ccqu^}emE$z)B
54587 z_?PR|Q@iF5-?!V%Ecn@4%+32|&LWr>`<E7zrF5!bsMD;P_KQvHqUBqcr;=(T<{mhf
54591 zvAw$>Kzz?;M+`;Z`;2=!v1v9N?_$GQxtL8S;xW&4OkKuts&jBo-k$g`vf<*SRH5x`
54593 zMT@qcgz-5@a-yTBi;@#_`jW&@mYMG5BG1b0@VQ8t+|%EwBS9J$kRYldra&O*L9K4u
54596 z9dWu@u-sqtFqCKT%t(p|qzeJ=jeIS*Viy<|XlfxS)tYV1PIL<y%fKLt-R4g_kMWBg
54597 zM0N~qU~b?+o5>M0;hTwsHJ)ir=1G#&l3G?~6-JWE(?-G5zY&<jL_QIC%@$nrBJ?po
54598 zcWKT`FLx2-q`ff;0V9qvD;jo~C9-+1RY)lw?}u-a7)LtIJWgC*&&Ls9HV|hZRxy7d
54599 z9vI=%059Lrznx9{&ek+1Lk~9@nKeU|-F6%|MY#61P*#E#WNGZ={`j=1q!cAC3gf%>
54601 zQ>3V%-f5O@j%l1@v$7{xIaO1(1S^e$C9tc%j9te?B#DR%bssM-v>M68g#|2)I1Wbw
54604 z?sBv~9-GbQ`sulS2#8cuDVCYY)i1BO1zj%cj4EXNnHk6NrYF&;+5Tm8W=yM>YI&<0
54605 zx3^T(d*FYg;(3E<k8iQBl**&k^D+}iP4ujy8dT5Anu-)tSVNLyN_x2{7?RPF`T2_q
54607 zC+8p;ND~B3C9pjbr&`&4cmL|ldBSjHQ=cs7PR^YXh%<S4dAaSkljn-U!GdOdi=e4L
54608 z6G1Z$$1hyalrB`#$YN4<d0u5Hjv8O8oKMuGBnheKB8ygAtkvBjYwAdY-P_;A;tU^1
54613 zQwfKy{YX>_LW1nAF`5@ZsMvG+Vp~F#+S7C@#*T|)7eXpkMv5t-RX3@y5@Y3*kXWN~
54614 zeF7~1$RT0<9Y4NIzd)g0@B3y-90>KSXBQnvU654Qk+jIVn^N6(jx11uw^giTv(Odr
54617 z=v@M(xNn=(z;-b3A)aN(;ala@F2e{~XUdb4Hc15I&UOe|6$Fzj+cC?_n}`u}o#o8<
54618 z0*!e6F&r?|Y%->VrZQ$YVS;7i7I+0nhSVp|r2da=>G6?{hNz!}$)Qs;au9EgbSk5%
54620 z#P+~A%fzAt2gaGW|6ZXNxYe-ZCA7j|q%e}D5wn25oS&XyBpAE(bW)G))BJ?Y=rql{
54622 z1|DOKIb)2z3mUKyjxi9{qoWKmC=Cp?L0sZslwRA(wdr7-`}4XZvM#NnwTmR`-jv}+
54624 zMB*p07NVV)hG}|BdGo1WR8PxwhRd2|vPCy-w67WK_b0;j+_2q}c=+H&qAccB(`#S0
54625 zhBx71lIWo&;kk1ev<H!p)ZyPEWuOUa{c_$2$}-bv$L#}W+iQhN9Ulwol?OqSXOC(g
54628 zL!<~^qOlC2Rf?^4RFM%fo-UHp97hwZQYs4gc%{>2Ny_kzx<yeOOK5cm!L>)>N5Ns@
54629 zMj!(p{6ZMQnZ_>;kay6SM-it3mU?pJ1;#^*UuH`)97D6c9rgl-rLE7|2D|oD1p?bt
54630 zeAVX|AVV2LS~4<{hTyf_-LxT4skT{8CmODs)AI$@$hq*N)x6!xG)mQ2tZO;CVwtiH
54631 zc<|kg@6f-;#K8hs1*gEX!AroKz`Mbd;B!byruQ!s98tCi0sg|>gebi6wzb3KBBP2g
54632 z;Rs!&S3^_deis_1rWkiP5Q%2(^uYZ@L4t=IB)Bz(CZG%j5#ks(5vaPT-VAhL8oGJ2
54634 zy#3AZe&pS+f8DDde9;T;y!~0%A3wHdSF=&8<g)2x%r|v>V%$UIr8DJ{j!^-QhAxMj
54635 z&kZvP1?<obIU@SB+Y4U-8<;(8jb$MAQx5{99S6s?gt0uBeImYuIn}^m?KpI#m9XIk
54637 zM=-4fp{2c4nM&7blI4(MXI6PWKG!2pz53|mA6WknigF#<Rnh;BJ7M@NrKy>;&rnYG
54639 z``-J#wcq`f@q_Pq_xHZ?@Ec$MOJDobH$D8uH+=OE9(wTAum1hdJ^0Xr56X|eAJVsc
54640 z{yp>NM3zE2cPvKJnw+ipz4ESZH6tO73;J<M(Wrda>i+5%p1=P6#~!Dj<yTm1yp-+6
54644 z9aoeIrdiTpRn-)V5G0Cex=1k;S;Vt6p4GCt$&+8DNR}iSMlR<Wl2#q9_CA?LyF{<#
54647 z9!?-rC~Ql(5alIv2L<dS`w5!-&f_mUz7Q`JMG7(O*L>*8cfk&%K0OnwsJhFtDLsEM
54648 zCP39TC@JH{iYYywH<Y-UQ=OcD_;>#J&%WqV*f#GbHAR;>US{=lJudmGZn3ewnWgK|
54649 z?Z$YS7V{O$QcTxY8jYkPqCbs(-4}y-|0DMh@gP{j^A;~?-ntByh^27e!5SFOJ51R0
54650 zw9{rNiddL?>5HeQGHBL?hrjUrTfg(&Z~fluOHV)RZ0ud@*R9tLLJ-BGuUG=dNsM6l
54653 z<*_jY;9yLg`QYBCc@hV4Uf@Gud%Qh@V|#b+Twa))?C!GiHpj+-qtPMy8G2&fpoV8*
54655 zgq)B$Z>-h2``}x?cI$Uu?j5>#m*yo*q*017E!`A~IVMs2d47Dq)1WEO^#z_{c}mN5
54657 zr0LYal^?dFvn<shfDkFz1X8dW?2iP*3H*}?obLpNH!i-Wut#Cr36;K`PC-!2r)ue%
54659 zdqX|G{?7I9qd#-^n3?fpZZ>&%s%<asPL}sfbUIw#k4+{JOH5XlVzKy5%tX&=WQ>^l
54660 zf6g@T*!T<nHiAK*?;>#bhhvZ)x&jJ-WDs*>2<Cpg+3)8d9R!-45$So(W=L1KbTrbl
54661 z?=S9vVDIi77cE{i)-L7|#|d)s@Bxp+YUZFSaAD|1aNI!z@F47HlS78v35HQe14}zX
54662 zMYnwSV;}n^=IF0nK7Z=yiP<l}9j8zKW^a0#5hcT<dDe6-W%r9_DtWI|HSAqi%<k?b
54666 zhW{VLXTTNU*2kIaclNKFM0}oykRw(*?HWn#2M7`{Ja-@9Aj83Xalj=@1-VvmB8VVl
54667 znco_+EJVedj~rUvKR-J?HPLO>%f(zq6~Ptol!)m2I0JUlxq%5HMIw|lIMg0dH*(~M
54670 zOeu!QG6GAb)3LsR<q6GE{z~5(7dX9AA;fxvx$YFR-_TR(q#;o(rMptO6gN!>q2oAX
54671 zF~6p18WI{2?UB&<dLTs3d;K%r^Jlu}&vefpL-+jI{`uMd`Pu$?=KBY3{8w-nm<Rua
54674 z0n}p-RQshw;1P4BAYUuox7`*W_bnqRH8b+1LB<Am1Y(4N&5I^BZL_SZi3ABLd7?Ou
54675 z=(V`RmI%n8;bhZt`Dm@yq`G-X3ba?qHK`N3DJ`Q<?`ol8-HC?vb~LOGxaGiOWqbmz
54676 zf^F5SxwxkUb-##x@iRUn_ninEn-~id-~{$i6W0XsWk_MNf=dz*Yxox&*bo$h5bM=)
54678 zv%Qi)(lSlz<wSD-E?dmdVzCZsN6#h42*+1gu3RB@ti)71;f?R<q3OSJ<A>lL_-;@I
54680 z6^_(RrdH0?Qq5+^YgjSH-b3cSLO*7veWR$A8!E*n6O5J=B}o+wr(E_D48qfpHL8Hv
54682 zj5jvbYLCSx@`d6;uac<QX-|@C;#7VAsVk}n#;<I5F3UUaY_08;)g(>@e%Hniz-jnq
54683 zP{fN|<pLKU;@u?NpNC-I_Q=C(jbJ^rvqBSM==uy`cC-Mjfk%>Ij>-&A6O`80>-hrB
54684 z@_MJL_DmgV<P=&H1_ky0F2A@tD+scZV2c`|TarVmRej+S-_Kc28x8JS^sXO9OT7qY
54685 zKBBV(UeV!emIICM{-HNo+`N7sdcy!GCoU%96dEiW@&161q)2x>)CI;<#4tycNAYwe
54688 zc-m}*5lIc|Ud$v7og<)bk^=9?V<triwxCsYk`fG?oyfiXdex#}eQ|k=t<-dyqKbJ+
54691 zv4weC6Xkp+cVIGmcu%XWOme9&Qq<9$Zi)Ex-!CBM_XhZTpa=H%_uy5Kgd{Y0f*{9m
54693 zjuteevf`8d3R#?p%aSIttY#S5jF~C32HjaqD=`rgn8_*mMB(6WXRI#U9CYGIHaC-J
54694 zctf;lh$OxfYniaq&rmGuT2s3x(Cc{~V37oR1o)s1-WM8ZWjBa9EGI>zi|&tyOdWj)
54695 zM?TzgP3}K&B7D>#>Cjq+f1+0j@#*ovIg0ymgS)u%wdg(-S<~WlknSD_(xVjt*G4%M
54697 zN@_|LrL?0o-BhcN*7C~TJ1E-qIk@xYjz2e<V`RZNW|%OQRWf`0Z2Pj*7+M|oq2>HS
54699 zl;RW((}{ItL1axa>C`NzMp5%O6@-o*A2&^hqIq3&D9Ew8<;aR7^0ZS`45i{FcA<g4
54701 zp^}Mcj)AFZw2E>b8^cGdejYLy4j;+PNC{cA*jT~fc!uFf%8(>SP$)ZVC-F*w6vH#n
54704 ztaPS2ia-%0$s0UdZs$q1F*ny_MUkdRMiEJ#kr;Q(_U0DnJg7RjDvB*~t?7;kS&n0%
54712 z48l|K;F1_zBBorxtUC-6-K<c9pEI`vkdjesia&@T9f=(!2Qeu!1jRx=J4gyRifcDR
54715 z-bcfOVP=H96Iz02w;=B*_HGOCMqE=bmbFC5$&AP2jd;aI0zuc3Of_vU?x^jVSjp#C
54718 zZ$q23gpju-M98~vLC6~ie<laWdsK%H*xdLIqBkCnl*M7oCdJWqTBLb`#PY?GkxV6}
54721 zB2-f+6_KYnfe{%&XGl%tILvX#1S7Moj9v&u#VHEbDs4L7EHR#=xSoPmNll`-ye9Yh
54724 zk(v?9xxLEN!c0R%5<yM9ha!@3PZY5z#M8P3$)Xu>puaaJ5FvOskzPl3e-!ZEY1M0$
54726 z*|TD-K^EG!sBwY#<+AF`RcX~oLE4uPC#1-1#gG(MqeY4pHQm=?w&kIZS=uO#m(Y8B
54727 z3qs7-!77699q{?6R&xm78&x@i@40OslAG{7y2kJwKdNE&8{l?&SdGgI!dY<$48;)J
54729 z;hlgljrs9HSr9ma9V;s-PeYj5VN{C|d0XLqmlhBhCXp=8rK-n!Bqu8z38!|I{n;vw
54732 zpzlQ3{xqBhW8jLus0DA<b%Ko6wJmu#0T%DX+OSG%ax)KSkmDFz?Qo-Oa0TcntKAqF
54734 z6X{G%usb<{^-NiiU5Q4_xx>nw6xY;hS{Krm-SV9V-so>a>;5X31UZoXNG2U;C_Gv3
54736 z&aNVziKa3f#hZM2hl2JCT67o%+yp)a3-EpfPTao5Q{<pVI2woo6pVzii(nGVrogQB
54737 zJ4z$1R`V2JZl3s*UhxE{nI-(1S6tfI0N>bHhkJ>)5e)d{z?1r1bp4OP^;?7M#f^0$
54739 zRZz<2qJW&LkA)U?dYk1fbGW69q^4NRF?^|V3_ejpG~u;cj`GS*eja^o9NrGEAf_M-
54742 z)W3j_ks=;0@ljG76gL6>Isq@=xHP=KaXh@gaeR1x41O6-5`T}T8wXSH55xQL4~O>?
54743 z>u&|0+c=EwE8xzJ%R+K&TsFKPTYm_i+Bk;ptKi9vW6}L%o8(#-z-KlNBSo(pkgM!U
54745 zBFWL=l;ZH?@Cu{=u|Nl(Sid{Gzkc`deq&vMos9yzkJiA(YV`bSG-U$h*DnKK+;}_c
54746 zJp;H8dkBN!aNBZkYGQJ-hw%fhNy4y$4;=gf%e;dnVOc=D?Hw!yO9DPMynYLHiJG^r
54748 zj<ib--G6KX--a94kPYw)R1IOg#r}M;;FDx<K8?WkllvH)un8ZskE&r06KVpic!tQZ
54751 zM^_JQml0TU*D-f6%UfkbU<4o5BE~}>N(DluDTKFu%aBEuL?S^T5YFR7Ul6pIN)s50
54754 zvk)9G$vVRWCY8zHe2HnvHqy@@Tfdw9C&mVE1W$p#0vk|*V?-~|)t9>9{a_~|0Rvd@
54755 z5%61R2OY!9A6<VN{4x4mLcc#7TmkYpc@Wz1{{g-Uz7GBd{3ZBv@Tce*0)2WrVrmAu
54756 zkJE3~p#x3u3h*)@pg!<veip38FW_tBAOCAkgysjFErz{+klWA-PN8ZvrJdj)EkXjV
54758 zF<bjXEoG8AalzeE<Ta>g3MWQb>S0?EcoTRyupSg(9%f-0CSe@15DRSy-Iu_xAWZVh
54760 zb%?_lhu&Ze-zF!+ND8b*mWJm45Q{qF<AK3H3d;+l@N9N#;Spz0i3Fc)jso?9^d*?V
54761 zTH!g%Qa+Ds-$uvi*`aohu3>kW+<GcX>>B(mM{FbT#<NklB@XMr3QTxfG0;@PCRPwc
54763 z?`kPsvK!TAMKDFhk@9ZaVJtr(@!b4@{H-sZxuvMWxKc|dcjR&tmY`CT6EQh$6lA&D
54764 zC~&qc=|ZhhuiK)UN;K;ZZ)dVnEGCx|TycELOHX@#PO#P)iRF-z#fuz8m|Di-W)j@q
54766 z*YzYi<#)ec=rqgOj_1Iy5wmwM-fNV)jFZmLNE_yP#bH^Ap(M_AIc2t8z5AZ^yDz)s
54768 zp>XYv9WR_o_dGU**t?YXIyU2GGQ3ml7_wSXq?*37nM$Nnj8v=@B~M~iR-)Rs-F{PT
54772 z;%GF$XMSXWb%$R8uLZ}^-lP$ilfi!jzaQ{R6)88T&|bwg40Q01;A`Nk;49#dz#o9m
54773 zfls1+i!*ZE18zke)j_`@^$c-_4CDibE+P(E#*!E9ZG@=7YREWO0nO0&0}<U2!F@L7
54775 z&d$uRGhh;$xrU7|kPykOo%WBNr9TG9BqOgq-B`DGPZHPgSk=Z{bO!t@_!sah@KC@-
54778 zn}g5r&r--&BUT&WBFue8*l5H=hlv$O`Dm161G7)e%UV>K#k~wT=6J+b>9cT7{KWw(
54779 z3mB(MqXv-{6Y|cjtTW=A1CKfk(|QKx)={<@+ADAn3HlYrwQ^}+aaV4qHaY2v8M7>_
54780 z6O)E73%XcG|7n_z*`F!+`7G~rW`xPT<#f*<*DbAd^W^o-leIldhymt(Nh(zfLQIz}
54781 z%yUIU6k~G1X*#T(Ot6MCH<i2X-nm=gZ%e9L6S{NC)S+kHdw_V+JwK<VdYn?%Oqx<y
54782 z4zsoOZ)rsbb3)861v=@ECs-biscbAwv+zH7mU7bqn{!z)*BN7Z%r9lB)%q%8m42qs
54785 zqjO^1oazX)l}wBA?heFp)v6-7ooq}=YFS#Sv`f4#@vct1=Iih3oS>#^)dk+5cD?17
54786 zU-SGjedwFte28*5bq>uCu}}X$l!Pqn2qs~^XR@5cl7z0NeYuINq{k&2X`rT>itz}Q
54788 z@y*wK^V|E7e)+#PzD@r<^$l<hVt03-&Gsg={oW5g41Ny*!@mRn3;Y{`vnH&<NjL`&
54789 z!Rz1);7j1c@NxJQ{1W^#_-*)4@ZaG&L33{l616P77d!_c9?Ufv#Qi!*MIi!y`|M!v
54790 zc0mPkS<E{>03Jts{T8r>`0gy2L0mKkvWQo*=<cK7H_=o0_wRx4fPY4V_@4-?{swp{
54793 z__y#2sD~^_!tcWWiE|*L(I=3O`vdq7@J7U$jv$WDp+7#z6Es|h-vc;53yrvwkH~yE
54794 z)`!sVCxg#oXiTf%-|?v7DfF)m4x@kb1h#zmXfy{9hr?#$C?aL)(f<?Zi>*G0x?ey)
54795 zv%vd_P}#X)Dz^}oAOERSS^H0+@+gg2MB~g)lg98X=-<p1O4B2hUi#3FOymKHc{EfG
54796 zksO;ASoHgaky`ox5vkoDh14fbL|L?6fDHtYVAe>8=f^^BO@OQ-5u(hBYZ{ahCR1f&
54797 z4H3q%RcEaPZ4lS(_*&5{ka`BDTs^f0l36!-qT-cF7i1G|cCC@FlL?Ub6Zy4fu1fk8
54798 z1Ti11)nF`!b5R8ag~Cv{7ycx^zYJZF^xWiH1$t-z-h~bT$A7%+yaNETX2>UihDV{D
54801 zKL$Sv-wA&W_3$|A=W+Nd_z>#pVbtHlsJ9oOK3{-(ybkqy9qRQE>iZBJgKgCNB>Ij?
54803 z2@fC@<wf8HNHe$sT!u8cDWn&)Km(LP5pA*--i~#;90t;sS*!^lm|c!S6U&2Gp0XR*
54804 zRC;dc!9+jDaV&E$w4S)bA9euj-LgXD5wK>%e#<860H2eY2!4cNfT1lTGHwLDl7UTQ
54807 z(1H^*LT$*%Z;h{WWrf7Yy^Gi-j1{w7jtv8xdpJ{s<3s^-h_q;kgM$&}p)cHV@Nifs
54808 zJR2QqN^TiZqKHpHF)UrijgZEK^`zi{lEo6ANt>P-pRUmRrRgR4(3GE!XXcNvRC229
54810 znx~godi`IeHp7Y(C48Hgc1+j0jwM(EUrZ#L_Zf0E(YrJ?Q=Cq$R4)2r>v-jGW7fG+
54812 z&2n>@SQf|d{_s;qL9m5o>WyQ|tSzS3<4tFQl4<^jf03w|v!&9-t<_@_ciu6!yxb>$
54813 z*x#A!ILV^9cXHzN9GScEdAF?}^x|pDN@t$kBd6z&CgbvSGtX-Ic)L0!`xPQ(TV~fk
54814 zG}WRZqtZNWO|PssN(&^R%1E=LSaR%HQ_rc@;F?Hr4AMKq<m@yjm?_ocWLC|l&D_-b
54815 zZ9-htMMYVF6seXHine^iY-0QndVm(`WNeHwi(@f+tRA09Ykp2s6n5#xUtXH@ld<)`
54820 z)U-4`w&PMK*2=}0O78Vtfo2R%ueMp)<d2qCYC>A1-fIc2DB4`XH8SSX<m@!HW4hk8
54821 zO~F%Dm*Yhxm$FterWa4RPO`y@yk-1lTAe5)bb?_7-VvQtGK1shnj#%DHIAfA9PzQx
54825 zzxL<Wj?U3MyyL3N_w8=yS&pL%3_-DbS_DZ^t0B&r14ypk4>+17xI3_86R@X){Kuyy
54826 zND_cNjo=*vX^sz0!~^0o>@K@n#9--gR9awudlxi|gQhOH4<{(LIp~At*!!MACpf9z
54829 zwe-I4v-UdEGt)hq(Tt?gzF4y4O_puRmTlP<#Mr{fU^|95zCavSv&Q@oVu&CHJH$AI
54830 z2(Cj+AjC-sIKlsoLwJI39^b?yEVBBZQ+2whXEY=10RNNce|}`9dinY+-}%n@-m|@5
54832 z6K~zPU-RoS@0I*|?yYZ4#COfftRSeb{64WUoSQ3LzN4}&I3A)BckI}GurQyEZe2+4
54834 zow#MomRnA=_Sm-9&#J_YTz;`p8?PK3+L1^lJbWTKfAC;syta5idF8iMPWK8@Do(tM
54836 z#i{8LtCcLy&lTqui!JVz6T~N}k%V0wPfzXJGn1(ltW24FWnX~!1epqt%+4M-Fxwdo
54838 zVz{X5HOorG48ibf1Ru{?$;{2WGdW!n!X8o-Ny0LQ4(vT*TRze($sT?vlenarDQSw&
54839 zH&KWcybO<%YW`p)9!p)fDW39y-%&z7NmF5SWXs~gV9;hMPbvyVo!zGkxttpvm57iZ
54840 z#p<BqBQf7=tT@MDb-Ye42WwkCl$Xh(sEz}b9;h{3tra|6Q7eumH6h^j<KAecWS_b!
54841 zoX~w@*h7dCq%{gmXSQAw2?ptMb97AL)kM6NjpulVCn#lT+fvECb*~-q`NRnAEu<ML
54842 zY#5FB?7?U-?j_ZQExVVtf-3$1R53uwV7d(2Hm<$)DmL-v$|@otwtgMKYj-W2@p5!p
54845 zQ1Bvs--df}1QArtqKyN$zUx$$WwMf1Jk^=MJHH_VCdL7hvE`w#-x`}t3c003gTqAu
54846 zRXE*-6=pVWc=LOH3;1(I@zpakmkrPPbdvN{K_kY@K)D+8rrL>SztZ(+uhP~XoA3DD
54848 z_H4;+&8D{}y&jg67!NLqI6fR`rQY0V!P-t-Jw1L4VM@VtV($3xtmX%`-SV6B$;D)%
54850 z+t)jlltgS6pY2uBt&Y1vl0nyu)-vOMHQ64W8R3n}Q$yLv&IG6&!H|3=Ek?^R-==!H
54855 zQ({ebDjN>h?P5KlGn7;?t*Vu4+p%CY9*;$#SL*&TktL5~+p%Ojw&>jQY2-kwFSjp_
54856 zX+CT_zMbqdxz`5zZ6@i`64VA`K`a|G>bovjV0woTTx?P=)(s&S4rh2@K-Iux9W*%M
54857 ziA8qhw`Vd-X@O%yu5k|;lj)S(nUkG@$IF?jFJ}x%v1quXgsixlP?P{8_!OJ>iiC&p
54858 z`uX%^V{2wH5uZ%}i+6`Kdeo}-M>IA%ni7&e$p$#z>z667s#v^dz*%j>c7A?yC8bk%
54860 z&y>jw6B5b!d6u{MWxp1-q?ECiXX{)RO(&V+##F8*M}m@E)XcD8OY;nF6{mfEFrD%8
54861 z%kHkcl-7&JS`M$VJCZC4q%s_eW*EVglX02Ryc1Mn`^M6M|C_@uX$x&9a^mQKr~fbN
54862 zZVsE9ZZ&G@W!<ge7#-VN%UdjK%^^dDSoK0Lnc18P@aBbHa`;Gjt_Ia*496#Lkd?LE
54863 zWnwnr_gZVXOKl-pg(@=az)H8d83P0928YpoJfV}n7>{>nX0i!Sq~n|E^*w4|M{8)v
54864 zSfQeT-gB>|H*J`EV-C4j-@C?|2|2rz<Uv2W(7Dd+*&B`;Kv8;hQyzC6t*WZ^bl=hb
54865 z_FK#2Q7PSydjvMThMP5KH}GDlt&udt)2lo#n2NTAj-#+4U{3^cyaAVUlf=mjf>REB
54867 z1xax<<{3G<WtFogcu%+%tPSVm$&KmCp89HEEeyrt8HS-P394-Vo@0>}ZhI>R{IP3d
54868 zqlv!v*5N7Ddwa1N2Ja7ok0}(QXpLyeu=@emz7^j}ujkq?;@1bw%UPL3?r)`+=hLG-
54869 z7hkk}-V0p($dSypacE&uSXc5Pk_+f&u@f<Us~mpmNVDhdGo~tB=<S8NT{D5!1koGP
54870 zh(K6U0`YQ69q{}6uv&Y3$+@~q;KWirW0KhBwc|s8SNpJi3-g^B>gS?@e%Sf7V8L2S
54871 zazO%3(`$o-+Z5F&(IR^xN=R<b<?C|Pgd>*{RegDjAU5sDbnJ>O50NChE@rq+QhYK<
54872 zat+X+7Gkk1?Q~I|_a*{FdnZ6lYCJj!ANFCbc5?xk-4eW!x>QLy5Mo{9az`(pitWSq
54876 zf@HpeWL)p_4Iq<uWw0-H3$9GJfMnbO_fa5IKr)-VERtc7j61}92gnprUiX}@qP(g|
54877 z#_37aULaFK>EP$jAel2r#<iKJflL{tv-x}y$s||Q{Tz@PLNYVwFF`Vwtf>2qKxP=p
54878 zOrC!l$vnNH?tcMfMo@X4?B-Fu@+<2886Y!?WVUn#BqOY-`#%7gF_hPR=bI?6=8C!>
54880 zvv653LKrKCpn?Bjpe5sqD~2y`6eih8abj~WG3+<h(Zvz}?83B)`-Y;vqLtg8i-7^e
54881 z6m#RUB2XyKQmUQN;yy_w{j@A-HXonLd3}b!CPq}=$BDMc`+3?+s{m^I*nUi^cj9+r
54885 zgh^tPbGw_wUH?shnP@Tr#H=vI7)2c2@UFu9-M!d3F8%+&<ttnyXqKZH(r5T-5A7jn
54886 z4@-F{Q!4qnc!Kj}(%C%jUASvz`)Eh<O4)3fGWO@II~I2VhZ+7)B`5J>HbI+d&6kg%
54889 z+P(Mkn5=qKJZI0%D4JzznS!-z>!C4G6gb1HMWo0O+|9J)m~58KgSXrr&MKVO8&7D%
54890 zIX>FZWevAdwqU3coD@?-cGSm*w9djJAIoT(s_`66v-|%$tH-o~<6lEP{)MU1?c3K^
54893 zu4-sI9_@m-yYq0PJAl)?f1+VlH&p|AxZuN!9<CWRa%y!XCuzydW%=mNtX1~s3YNi2
54896 z5*-@LigEVt8J8Hr2}b9v$n?+@QVg&Wtvc?{)=RUqeqIbK;ffv!<f3_lmkY)4?%C0L
54897 z*vkqu<zYnFR|?Zf*@y%Z#fYSd9w8SE=B7%qv8El_v?XB-#mtDtv$BWvQXC378p3~s
54899 z(V4h$x?pRsSW1Bn-al#q>KUk(V^?e!G(FqO4Ofz6K#%4)h2sk2W}xWP6LK`Av7CrM
54902 z-Kqp<O3|6H6gOa~5<8cUNs<v0LNf`zSn>#rCi%?B^d<9w`E9B6B$%Otn)2m|V5pVw
54908 zjyH~-s?|;%d;MD~pb%St8SNuJgh_DW+Cx(~wUQSA<UOte^*AI`D(v|GGSSx6(p@_h
54910 z{ooB_g4!83OX(8L1dB!%4LPp!$*y!*Jz|#LZR4YUI@BB<8Q0Z9E-@Lih7S!-E~O(&
54911 z^Ti>pI9txlhctL$q4jGw;&gudrM24jxujLgMpB__JhvfR*nV&-(@aUcNAeh|5;ILu
54912 zJ~)f{Iw*e$vOy+oOO`~E;Be=%v=fZ^!bLS0gW3$RG>imDLxm;W;0CT^V6*+Ooc-#s
54913 zkcw9#&fT%!$WNCWOKLtfDTNcwRHM|Mw5t1tO54Zo)5b?*+38KYBGLG!y}^kxC1-dc
54915 z&WYL#`j2ga9~xt-8D|;07_UMg;DAGQ%mAn`2~|$k#(@uz2z+Gj>ZN4k(j7a>k*#S#
54916 zAB*L4e?EH~V|M1wk}PBGearF7htJ<iZo%;@ie(Y!nKy4Aitf7-=&A}-_qW9Rfv?%!
54917 z-jTy;GLI9CPi27Nfo=})&Sn_m=3aR9l_9}A2tZt%S)p<ksk~IkB*S1#mqpM^#_@5^
54918 zReUDX*S%vvniK4()+4J!Cky*-th-^vD*5~)o6^%$_eF|!AQp_IQ=wowW%#|eQJ4#+
54919 z;sL2Vo!&g19=amn4Qr8<v1`LSy#j-8rFfnsInE4*V_<5}(C?S^@|IflPy?uR*oo%-
54926 zjI^4o->f_8YBx3}bXy%uY^_$V>|Aqr^W^jf>#q5XEGxNmqTn0NR>I*;Tjv5Jx!g>=
54928 zP)8V8c(Fa7mkEky9I&%AXgmZMV+VT)<MfhD8pno8=}M*&vNhG~fzgHCegan*-7sK8
54929 zy~kVICwv9n1QNs72S}Cw-YUqEm|;ajTCr2M2z_q2a^+NhZhQL1xeexIWkaSIiHQEO
54930 z@{p;i<18Z>VL_xvcV1q$GTGgo=AL?RY4gJ)x7?5&!}F$@-gM(sB(QmG`z8SI9_aoQ
54931 zJBbfrUMzs^bSZ)UOSE-uO%!kp^p$`J2V*bpg&5zDwto;|fIBYu^~q+ZGTxr4`u*%k
54932 z&|nVDE^Obvu(Zq0PQ~tQPl9Py_bE`U4k(t06(09+V1S|#VbPi-#v&#<o4nPYuXIKm
54933 z03`%{GAk-JbDmQ<gNqx?UxyQrb^5~~`71&48SFRRGiYEo37w?{Z)3vv+6sD4z)<GE
54936 zYF;l;z{5ZRR|5s4u>)-}W*U+xAV=%gMPK%}EBCh6bHmQQL&y&3pz+gqnsyq0*%L!Y
54937 zyt-a4z071@5uyP*qWK~opA`!Dtf=bGhccy#mTxjSo%bgafhfUQ3>Wbm0ZUiaR6G}C
54938 z)A2$T*zbd&BCi7#F#xi=yzP}Cw;04x#8SUe!1zc*7E_>Y>=^LEZUDH*#htRV2o-ev
54942 zv0d<hqyeL!MZ-ow_bD<D+zKSZ_c*HouCXBGP<Jf{t%W&0i$y(voXp7nh<~ikX{sXo
54944 zjQ?!g=LNO^&v^O(NJs;aKq0EbBnC;s>099_Pg0OBr3W2IXP6&QSqh4hG<Eu-vhDo(
54946 zy^5gvqA5C@&W(jfBD}<St$?W!ekPY&SSXad5}2JgE9y`-I1-NVoE(kBl}Rv1>3#rc
54947 z>Il%3j@{>4kyj-gzEA~+oU)P%r^OCCB>VtTeJjqgFX&0fRt}N<4Nb^>v`jS@ya<Q^
54949 zvisYhE;l%XMFJbbE`7Y<V;#t{?Du-eg<R$L)<ZPF@1>GBmK;hAMZ=;OGjPLQ+j2q8
54951 z*K&5g@P~rsGkm&|`n*>F-^;#Yz#K4a6IAgx+rA($W*&fH3U@|8oI-WY4wxYUO#Cjm
54952 z2oIX^bZ>y~8*F(!NygzkfQzG-VvxfCb0`ejhHc?kG;Ag8ga#>*7|g^?&Ry?A{-BPS
54957 zfHTY*c*db-aG1+(_EDuwK4vDgxaAK{q{^MK$v}iR3zm^r17PO8DN$vp;qArY>4Y()
54958 zT7j4~JY3v5uBB9tW;x!lOc};!cmvSGefUQJuDP)-2mAoOiGr7e)9@Z32*Jpmz=JxL
54959 zPW2ED-LsGQg<toP4vmnG3Jg4Ao4U`%I?Mpp=|P=UNXMP;?x_31nb1<i%nE^}XfTrr
54960 zL~7~r))qMzEle?WL-SuAFHn4h3pK)txNZ1HOOr|59!iv&km33|P`3|(Ha4&*cDOCW
54961 zH3kueP#~Q(hF=2Qu}v551XKif*s2S50%#S2b!-x@LokedWUe&dNn1ur<i&`lF|zn;
54962 z<vJM|XYOG9b64-k{0PVE;J=8*u=J<NrDQa{soy{!#){a>h$K4+d~OOS7*(Mu2iRyh
54965 zFQIaFa(dGeBT2TU>E+TsmZhJic$#LVKv<SZY9BW{F|hy)=X#*?cLAN-V7_xlTk8Rx
54975 zjM~PjG0V@2G)pC~p^d9I-B@ln+9gikzw^fS+dzvJFda<5ejn%|3V^QOR&z<6r)X>w
54977 zpnHP`#rcvp8HlT~ap#?q2-4tPw4%fnPELhLe?pCbSvxEr{!vsuUt0!cBVTRV)-TOP
54983 zn87iB;Bl+yY-ZO$2LtWt?0p*7Qn}wY6kH&S*3`HV5OH#kDCPV+MIX-ye9n~OL00rh
54984 zzwG3Q?x)GEAh}^IjODO#M?JZ?%6q`j4$ppEaFE-vl2W#ipa4R0I8o8=JUl1r#{3*y
54987 z<*Tj=LX6}CLx{{k#i-t2eu9M4SPxR~00|Z_?sL(A02!LewGw65XvM2wMiuWsM(PFa
54988 z`ox-9U%yss0}Z0`01bWy9$x4^K;DGCp8724erc?YZNYwTnRM5m44OWbCW(!}t8Aza
54989 z4}swmF2tEh@G->@LEwnMS1kI9T0&tG5<Nc)91VbjGzq3iz=_ibFq(!_B%0b8Y>!|J
54990 zn3yr-X^aIBf^{Nm5sZth*8ItVwzrhc=Cj#sf@34D<>@`k>&-H<HMI4_qERXfl-N5x
54991 zVlWQO9GuGPeew+=8`ITbFgPAaq&Sg|Sz^j3d$tN*!5b2o)4?$#kp!Pd-OqDTAUp=X
54992 zfZtQIp-Nb?>!zjU!ahG4PV<Uv#92w^M87D$&(iWC@Np;uJ~p{fB_!F64HEc<=S0{f
55003 z%38R<353CmI4)76l`F!&ct8pIe6+}T46l-nP_%FvrwSSlW(5i;GAa%jME(q3rR<&p
55004 zD!rEqVKJb}3U-%MK-1I+0v{jF#07vzU?gIaTw<KSz8)tc7hLc=;T*vooZcUHruVzt
55008 zcU2cnp+jtd^O_WuOz&kG%g*n~tF(tRjo&DN8M=?96q5=lKI{FA5mD`u31-dyxVU6F
55010 z*8j?^@a~7mH(=A$C14C={=krcGt&I<(p!WuScU~Napzbv6U)SzWX6_pRSG7PVZ2-m
55012 zB(f-%RLIGNe2}HBP=F!<;1obE{*a~jazUwrT>i?*<wIQqo9_N-ITz#A)+M%1Ren{8
55015 z-Jo=DMWvg<_{STgu!Q8RE@5`Chu`yBiu)kzXIN38Vu{yY@J*bLBE6F0mlWfFk4g~T
55019 z{{+7YAi@f^9s6e6=K%nyiW44c>-^j_#d><EJjXKxiP7*F&S{LKXp*|iVG+jZW0;4-
55020 zSr2<P=5D5LIWq?2hu4s2J)DQ-PA~rs<2+pNXYJ-1zo0xc<yqs0Ea$ld^LV%`U<%ve
55021 zhGH(ac~hs|n#@&lm29Sx%2vH>2%gy|At+mMm&Uzek#KHUz}86*9-=keb@U{>HI-am
55022 z=r?LLzh567A2&6hNc;1XnX$1HDS1Leti-9cNPc%ZS;Y4=WO#+&ZfxRm*&UulM4Isg
55025 z@M&^Cb`AMM92f|Ix6V`qcfZ8DH)B7;?#1_lcJa4;06+I{TX--JJav)HB5=z*NEQ#=
55027 zWIs{1|BAV*pZ@p2t2e<{!ku`opVu3~D-ph;MNp?h-G9bDi2szxfNU|G#eAU1Uj=m|
55028 z@H1cS)$K(vg}RdbHuw%L-fGSoeiB~lsJquT+Pvx&!eFZ46$z%CQ9R@!k|jxo5wl5#
55030 ztrywJ5dC?-H=Uq8#bkPjGS=JH__jZ#I?*J98C@QZ!BdoE8T)nWBLE<W+qT2QytEu)
55032 zAwj}9yE0;J4+H(YmD~feK8Z!K5|(KvGYNyG94e-jv|>0Wda)=Tg^Wz(iai78kc{(Q
55034 z{DGWJ(0(=9^v_Sd!{?>BASFtiV1uFmMsg8*18rbIYzEtmb=uRVG?-7$k4H$z0}*uh
55037 zz-5aO$s0)1hRLUuSzHcDYD`f?++#{|R7u6yFnfNKQ3y6Ej|W1)g8c$TC(^t(Vk<Ep
55039 z!e-T~I=#Nvf=0g`ogvq`_F5lbZuk`hBLSaEhbSt*0(Z?QN}QG?CfLkRa{)YGA2}2Y
55041 zdL0-}@21}C+;axiDo03o;%~{o@y*UrAb1_0aO@V{<Rq|KB@x3)M2T_@H{0iL>eCdV
55043 zKkp5SV`HN169h}5gpCtwTw%4W-)mF?UX5lwLj<qryoV1&X)yeC8{G-)&%kh5>g}xd
55044 z8^O7Gm~=U}lY{=R7bCt_dn1=fEV3|!SJdJ_-jYz~(n&57WjTL@Q!*?|GK6ffa!Ln&
55045 zEZLH5K}qQ%5R8{f(Pei=6BHrnyuS!W)ho|`3i~MNODra0*w0?)E^qzpb-ie&-OEW6
55046 z`!Mw>Fi<tIqiuf~3>@`*JO+=WEukIT&0Ee$PRwRFusQ8?32dh;phj_GJ3Qs(d_&-H
55047 z-}1DxDg-6SE8u=6x&1&}3WvkZaI-R=Nnfn<y1jP*9Q3!}9rdx-t=(DO4dF8Y5b((a
55048 z=P{EWZ^&jGq@czmWt#fb@>X$1gImQRwZBz-{)RwG@ksd;Ee9njYEceCP{Ts31hn@l
55049 zP_s{w4I%@)H-<6vO)g02J`4VQf_^_X2TAQA=@h)fuxmcNlBEk<gQW|e7df!{%ic`}
55050 z$e_g1*c?6wZ!#nicPlh`YMG^DMc<W3_k~Ml<HBR-zMDkgSvS(us=kgFqXn%T3VKM`
55052 zy_V>~X-XN5H8<(30C`_S!McCj)i)f;4ed;g?TYUHAG_taLP;ZWIiV+ZjZE#H7_p5l
55055 z(!U-cHV#Ofxfu$$t^Gmz3apOpfUR9|T6?}>|AMVOI$X?y)~@6ARjpmCt!izD2@5jw
55057 z*hIllJ+!NS_(K!zYfHvw-Y3TtD$?2Z{<pTQi5<7?D(&iIoVL&F)xBe+zE(qSGdKY#
55059 z_y)>3HPz$1sMiL3L#-dvewhc#xxhD|z@EC+)?!Htn`*{PdI=h6(eG1+V!ouWaiTE-
55060 z`-wNETkY)Z4#gjmDN-npL7flROj3ryz<fUZ=z1C*=C~%9$^>&0<9pM)Zr)eUZA-%d
55061 z(5Gf*NYGP!MJu|wuy~n2JhOjp<8|}LrzU`MM|TXzlK!$CRY-F^1p`Y4lT|Ro+eT!F
55064 z&-P{Bi)7y0V?qLD{yXYs&_nk)GS_3T!`|xV_10cqkm2b+sV{+aK8<AFf&HB;^LIU&
55067 zNF37+KL9jY*R1=d4_{o!BG)H@=yw2z^a6J#YRlFS9SS~GI=D1sMsa-d`i1<F>#j&A
55071 z73Y75D6@WujH&O`9e2(U|A<`0i{10Y@6$`*w||cs?Y-x}j(+>~9z|I9DJnqMfz02b
55073 z_n@5Dp>z&)e-EYednlb}dmV$g8>MqQ_Mn^2gS~WMnYU3t1TueuI`g-?Uqb1838e$;
55074 z{?9Z9Wd0Q8b#wPyNakD1^k~#}>R}-BDC!vhiaq7#_0-_ta+dlykog8G&tdGWD|6QM
55075 z)r6y;uhH+rrm;()J8e1qlS?y^Uy$N-qEQ)hiSJ#C(@c-9v+o>g4v<>u77!EQK(AQW
55079 z62=jWr9-$fsN5Q2UtC6}D-cVMWM>`qsz$Pvil#;+i)6rWLkgIkg}3cl3XTHY0+d_d
55080 z3^1w0(;7rB1#Nzk@L2U~Ixl<iudb)yv?|owrr%1)R=RW7#+hHsX1Avk`!C-YX#)rY
55082 zuh#s9yxuST>-{3L_AlCjwWrw!od3bLotmsy;mo7gw#yA#>&-v<%{9mbwHi}_&$P80
55085 zP_vmW`GP4)E!#F3T^~_7Ui$TP2@GhDIrEBJU1#BZK26^aKL4ES2(aw=e?yMo-v)Ro
55086 zzXs<O#0xG;ICiHy6yE91E8YS=eJA-NYzoXPj<vlb@CMk@;tWBdaWDk$41&q@X^g_)
55087 zCCCddja~5dT9?ME<GN20z{og-PcefbL3)fk?m_cG<c#=sKo@3>f%Qt*ur63IoJ(2Y
55089 z;bEkaNZOZz9d9HO$lJA;E*h~t2e#YQYsbcp52-N)r&ua5#@Tz0-_e;TcrLdgKlj$*
55091 zxiVDiu8iP!)oOp>J}D?6wZ@`T2Y-%MC0krLJpt8vY)t8^b?7S}Rg<c#)`?@ISK-|Y
55092 zwTj^PKhT?jA%7mBgKOZC5NOJwLC^m?)K7uT6G*1eMd+#f^??rYO-JSrk<8xiUm%&k
55095 zomaYFCoZFI0WwdbbpEkBk7VWt(A@LR^zDl%o$D{C7nJ#H>Q8{o?;(VB3-&!%=6eHE
55097 zd=1G=bzed<FAbpGGt_s0%%7vY#=DOqnMVg?-Ve!uiBGwM<;1OSiEnkMR1n2(a0b(_
55098 zBJ}w^fOQ>-+XttlN2yN(nQtN8u-G?TnQ!!DAkzIVbsLa*7Rj6f6Gcbn9X*5!?2CAY
55100 z1`=uUk}gNueSFGuY(x()%-6iBLV#mM62~EuDuIzEGi)(T1YlYGvh`eSEZIy9*%`PB
55102 zHJlCX+vLs$;{WB@0Ms?dV2k)7J$RXZa7adT<qPHmFw*4;jrZ5p*4BDD6=5o)vv-UZ
55104 zk`;NMZ3m6HA%8P<`eT`;`QiQ9-LJc};H(y@1uMF_RGhVkrV{4vd#@?%oCT^cYq<%V
55106 zZDqbszj1I|ydUD|wct(&IcM9g2^cP*zl_&w7l1~{6~6PrIos-vk^Onoix0}I=JPe0
55107 zA=yXLEJrbhPc4Pil-jrjuITY_{$`goJMEDIoEPHHUPH}Bd5$uM3x%S{;vZVCq5eo=
55109 zEp7<pJ1^2+(9>K-odWIkJQ}^uVefO>>V1Qr_yg1tAoG1BGl89UWlk?I%%LT3lJ70v
55110 zb;r?&JU+1Kb`#}wY3Bj-J&x8%dQopO^zk$ACK*ULkIp*3yT2TdV!R-#d6~Yx`wI3@
55111 zW0zZshtP=b20B4h^9x`^e-rjf<0Ey#m3n2+OXsMah;AOFg^SoXdTD*bO$$Y|=+n&~
55112 z@BT;kB&yHJLCSUVCx~ty<cFQb?yi5oewCZj-M#!!n1Vj#{PFG=x`$C(hgVR}f3#0I
55115 zr}u|&d~>>gAUq5QWQ@GkiPLk!@r9Qz-(L*2qwsq$zMpmkAPLb*i34rV$WS4d%2BLY
55116 zq<aHzpS8tsHUyWubs%7*^?-X!9)NEAfS6E~xNHXX@p`jhmMxz@v#}}~H6xO_tfZ7p
55118 zN6wrNk>mI%P{I^;XIp6u`QTwHNO-X{+E+n#Af^mt;RN$V3d1R&40@F^@+&35NOIZ{
55119 zg=(Q!sm0rxs8!NKsWhaz9lT@Ya-$l(bzgMAp&vH7ucZF%jQ=TRlvpPL6=V!qf+?1-
55120 zt}GtXM|N&XNmjBEFK05FMvD8ZTFx)Wy--_bB^axQtl;^OT2_5J(A9)$@F6*R^PZFU
55121 z+tclUsKzGKrgeDZ%$uuPQqo71+bvU+;z@W&<qWVL6TcH1$7Zk-ZDnFaCrOHQ_`ApZ
55122 zN=vxRU69y-x)netoIC*)u~J{Dz7S5qgKW@v?piH&pv}WQ)ZtVPQXm*>nb3e+ap|9X
55123 zTd1q;>3<3-S&m9(44PBUE?c^uU9c6)8?EJaoAyQ2L?LL(T3k{~%cf<89n(_sD(fX_
55127 zdP=YCgnh)gx-({1cfoZeL05#p^0jouSF16%FPg(v`Lg4)s-c%Nk!mQsq4;V$V`@uo
55128 z@%0O`Y*&-IVeM_N-5Vby_Tb;b+Sn3yOIul(TJDYQUx{sbw``i<kV(VtXkM&4qQ$3r
55129 z?@sY5I`&uJHv<t<@P-mu-iu3&Xh?xzKne=}gh26hHhf`6y>;!5njedJJ+c-MB|(-W
55130 z3BRRFoXm-Fn-6#|jjq{ip*5;bul+T**Y>P&<X35pu<s^^f1Wjxj#gizTL7kLO>Vxt
55131 zr5e}O%CW`a*I<bGy^Cd8x+-DrU%1c=aR4YbU_ZnE1hcV3JIXi_3P7DUttLFk<lqr-
55133 z_jkMfTp1WS1C`<@zi25wpm}7$Ln<k6as-xQf3Fm=t4~~;An4qRQlMOa3~~*^5Ski8
55135 zg>@&}TS2y~D@=4h-kriOb=Yz(>}_s8h$5T_8NpTpMRx*^wn}0v#8$vXBnQ`PT|~LA
55137 z9Bu?GO*VANga?-0nh^}WZ}5mX!BF3K-lMaC;QhZl@6k~_@cw1@PQm%##IEYbNEY5H
55138 z_*o4dDX*cUdH?5Z@vA&r{J-a!+4b#b?W3Hl?a__1ivI|o!Q$8_Twd7#&<k|yI0<8`
55139 z(pNEH$dGBcYbZLiH{{JBDcM>=aN#rVUg@R4+y(mm-a_Y~U^}yp3{5*1d>l!PcKGUG
55141 z9Zg_#Ly4pfv#@z-joTdPG&*?ylJg#&f(7q?<h*~~`P;F(yI&(1Y|>FBI*I{+)4n!8
55142 z<tzt>@Ly~(7#&w=<L!ade=82}46I?X%SdRA^<d|`-$5VAFcfV`!D7nTIg#E!E(e`M
55143 zI>BUp+ty=dl%qhmCn>#@bB=Qko3vWl*vu4l@&;|{+U-}*rza*7#->VqTiH2+GZc>}
55144 z>$9CBR$Lb%0eh)l-Zz(XmURnib?=z7bbF3?io6YLU>mS2+ENA>58Napmf|=Gbdz#;
55146 z&E)|FmQxUI(XvhOm(zvxt_@P46rgwjsu+-oDF=9o;}ZF!#i7WswY@TQa$$T!IfIu2
55149 z+l8by8XudMBwM7kkXSyl?GVt^cknL~6J*Z0Y3ts-S#_8T{rAJwN3mE<(prsE_!n27
55151 z>+!<W2q<#UCiN&^KGNK7aPR<%PWXt8<W7f4tC#TV1N{sh7r8(=SKinwu`(A^-$3{T
55152 zf2@$sZ|D^_Fc*}r25AD9NIXuq9Yw5@rn`Xu&I^-mwpErV@C#EOswpgtT>oeIC-H}f
55153 z`<)w3oU3JY?xkN`=5HlVv#t^hfyG%y%&CER0skbYN6iDGDH4JuX<1ndfq{|ybE-mh
55154 z=_dgGLtJ|UwqP*KikT1joXS;;>BY2SvmUtOPI?4B8;%xKEvi!$HnBL8-<9_zd6Jbm
55157 z`H|8kMW_eUN^fm%14?*_Wa%AXa@jZB)u#~Ae-yrs<&x~WmJ7yf9*bZnF>-F>(jNTZ
55158 zuDbQA!}xz3zv|>o_`hM&)mPtmf@nK`mz=-*oxew%zqM<R-E<WZaQ;T%U;O;Bn~t3%
55159 zsAIR?e4NNQe}|mE{EgQfIYubA9zS*+z^{Kw>>&0NR}x2w6U6PrY2tq3?ZkVC4-=mt
55161 zEpaB7;7VML+)uupYm--!N68c9?c{0le)8?)d&m!ypCHeWPmo_CpC-Raew%!r`~gtv
55164 zXXq#BFVRoa-=x1yKTrRFeu@4ugE1VVFeVdYa?A+RVA|YKW|7&!>}RfIjxr~}zuTG9
55165 z%>CSE=IzXTm=80bV9qd4FkfPxX1>XMn|Yr30rL{`V-{mMR$)yx#^%@&w!ya9MRo_f
55166 zpS_Yj%AR0vXHT>Dvu|hL1O9!O{RDdk{Ck4^l3K$sbqu3AyE-v-ZewRxOx?F-_hL*v
55171 zXJyuX)?)6nejepdxX-{j_i32!Q+^3O{}nw^KIT&xLqUB!>%LbOFL=_hzS?1oarE{S
55173 zq34MER8czwZbiR8>OOS^y?+kL9Y*P)r_P|yzl_R@$|wB;diH)-LC?>ka-iR<sGPp9
55174 zq4b_WpCi3XA4Ts`x~h&oe>-|Uh(6zj+7Gp(jq0nv8Oa?-&+F0iC}<BbxNC<%`+#TQ
55175 zZRq_=?o&s4H&OlyvTvz|o~S+&(xZg*C=H=!3Eo-&>7e$M5*Vb6#x-PL{wI-roI%ge
55178 zy04`3%ERc@%gX;iul@yCp!@21<qPQ5-zaC%t7m}SF(gdo1^GXm5)tAV@d?mpFpO26
55179 zQy*4-pq^1)R?n&!v=2I0dARaO<<ZJxl_x7_E6-G(tvpwGq4Hwo<;uA#RTZjwHB?Pi
55181 z)pIqfCe-v=sFtdgYL!~6HdkA!?WrBA9jP6!ovfXz-BWv@_E7EN+9S0`Yme2Qtever
55183 zN9vE(AFDrEKU;sM{%rlZ`U~|J>o3>OHK>Nr&>Nvfs!?iG8m-1$W2v#Haj0>malCP|
55184 zajJ1o<AKIQjfWeLG#+g{)_AgUw((5k*~W8?7aA`%UT&OgQca<$H$%--v(&6KTg|!V
55188 zOg=jK*yNLwXD6STe0K7=$rmPHoP2rmT#IT6Exi?LrCOy{rPXT9wU%0YT8COkTE|-_
55189 zTc=w0v>s?Z)Oxt}NbAwoW34A!XIsy-o^3tXdZG1V>*dzDDQZfX(x(7gpDImNrdm^T
55192 zOg}sQ-1H06FHXNaeQt)D5oYw6&`fHkG*g*r&CJa#&Fq;uG;?I;_{_<fQ#1F>JTUXn
55194 z+Q-``+o#(1v>#|c)PA`ANc++DW9=u~XWP%TpKU+aexdzh`{nkz4%HDldMDILbxNH|
55195 zr`4J3EOqvD4t0)nj(1LWPId0-JkWWl^Kj>p&ZC{jI!|`acAn`x+j*|@Lg&TK%bjzx
55196 z)T}V8&xU4Gv!&U}Y-@IIc4>Cc?4j8sv&U!uf9BpjE~@L?|KDrv0g0u?8bSymgcxd#
55197 zA;uVDtRdFoh=}7bz=(**b+`}rxiJjGZ9v4~KA>OAu^tb#)=-bfQezDz#t^diF16M}
55200 z+N{~E-K^Ve*=*Zv-|X1jv$=P3-{$_!1Dl67k8B>@Jhpj!^YrG~&2w^@+*|G=50D4T
55201 zL*$|IFu7c=kgMfMa*bRo*U2q%o7^sU$b00y@;-ULd_X=VACZsB$K>PkY5A;tZi{S-
55204 zqA#L9VjyBDVkBZTVk}}jVme|rVs5K!tM^u)tpQtuw}xyD-5R!4zE!bRy)|j8W~+9q
55205 zZmVUhZL58&V{6aW-mQIG`?n5k9ojmwb#&|4*72>=TW7b<Mam+*BYh$RB7-ACB10p?
55206 zBIS{aNOfdVq$W}usf)Bk+9K_dj>w+K-pIbl{>XvIp~#WQ(a5pL@yO}O*~qzVvTfem
55208 zW822JO>djsHWwv}@{aO}3Wy4h3W*Ah3X76QDWcR-Nl}_8ZImv`5@n0BM>(Q;qI#qH
55209 zqWYr-qK2YIqDG^}qQ;}9qh_P#w#&AAZ}-_AuswKt$oA0fVcX@~72DO@leTNNYq#sR
55210 zTejP_+qXNm_iXRo-nYGf`@r_0?IYVqw~uWf-#)#4cKe({rtntyC;}A0iV#JpB1|Dy
55211 zC=_Z%l0u`<Ds&2q!ltk*9Eu)AucA-UuNY7aDMl2diZR8wVp=h)nA;)S;l0CWN5GEY
55212 z9U(hHcZBVb?@;Ve??~FA*`eK`+hN&Z+hO0~*wM42cSqlj{v885hIWkX7~L_pV|>T-
55218 zjSY*H$0}mgu}QI-SZ%B>))H%rwZ}SQdt!TI`(pcJ2V#d}M`A}~$7080r(<Vh=i+2>
55219 z-f=#00dc``A#tH`VR7;}MVvY=DNYlojnl<h;%ssDI7eJhTyI=oTz}j^+)&&|+-Tfb
55220 z+<4q{+-%&OTBi0^`=|rd!Rioos5(q7S1Z(Nb&^`6)~a=Ci`u5Ps~zedb+5Wl-LD={
55222 z>Dbw`vv+6T&i<VPJBN0T>>S-WwsU;v^v>CxbMdlx?|7g1fcW6}koeH}uy}dAB3>Pz
55223 z6t9Wb#_QrO@wRw-yd%CRzBj%vzCV5-ekgt<el&h8ems6Uel~t?mu#2!E}vZiyMlLx
55225 zcg-cp61)?95&{x}6G9R~6T%YY35o=DLQ;YzL7SjUuq4<L><Ny9o`l|nzJ&gSfrO!i
55226 zk%ZBNv4ru2>4e#Yx!tne-n)Hv2kZ{s9kM%gci3+EZpCi(?xfwC-P+x{-Im?9-S*v%
55227 z-95W|clYh?-#xH<X!pqO(cNRa$9GTfp4~l{C`<HC^hpdz3{DJ53{4D6lqV_@)rm=o
55228 znnZ1)F42-`OSC6C5_=MR6Z;bT69*E95=Rn86UP$A6Q>hr6X*8G_IU5{*%PoQcu&Zl
55229 z&^=*$<a-o*)O(WlX!dCL==NCl*!I}>IQI1H>D|+}r+?4Do}oP>dq($+?HS)Qy=QjM
55230 zT#_uwJIN<0ASpO0Bq=m0EJ>cENKz*yC25khNxCFUk}b)e<VfmC>P_lP>Q5R-8cG^T
55231 z8ciBY8c&)|noXM9E8FY6*Jp3Q-r&6<dqekz?UnCU>{ahg+N;^C-K*Pc*=yTt-|N`h
55232 zv$uC|-`@Vc1AB+|j_e(U|C`B^lR*^x4Yu?6CZ=$(uYTl9DFk+0i@%gY|E?7Or4$lp
55233 z`r>n@mM_?zF|L~3CvhiPEhNtB{LO~ATIbh}#Wgr<j-y;4sJ~O4Ib-LX=}ez<Dme(}
55235 zYmM!9W7*y~j<xUntmY<%M^8L@<8c`t{qVSuKNydz@VEw!+#lH!I-~gMJ8<O3vfxPm
55236 zS>d|=@DN^?x~|__;wpb@wd?x3E8&{dU38^iakj^P9IId+_#*-yXCR%wIpDhgLxt<u
55240 zEY3s4&ipyb`|(e(Ge4H5BA%`mF6ZE}klmT%c=8xoM7-Gf19t99ULd*b{60G`Cm9}b
55241 z?ED_b^H1{rJgYA@kdu*3#7s;cJDD8@a59y^eA$B-W`(g!*wvuwzG^;(*-|XWuKJmm
55242 zqcLo^8grLjos8jPJY$%B#*DM8qs;#;j#<jCuClA{7_XQmG0e7O1a@U-o^cuLHHkUT
55243 zu4-eJ#`v=5A~AjJ%EWx8e@qa&I>N3BWBg(QW7yorw6QA<^QOyVR&q3fOTF#<TEm!F
55244 zmXqyKV}{rh2XfEQpV7m#%6W$)zdX%Kg*fjHC&Uf0xrP5&PIhnjGUpkibhZ<-f_dk7
55249 zgpxlq%h?otbNBINUngT!t5t<;9!oi@I>h3G%dyk&{(y7#QRV6%Kd?--O0|k}(arUw
55251 zZB#>@-XwiM<%sT%KFr#4{>dy7GvYK3*Ln2Zm(I_8>AV=usp=@Vn8?W%{#BwUr|D|?
55252 z9{H4i)x(FQtmHTNP?E)ehku3-;-BT0^Uv`s_+b9q9NoP^Ihd03i?z=8_IvJg_+NBt
55254 zTOP|;-<aJ+M=Cceue<uk{2inz?<rR)hcRt2ru8X(m1i*R5soTOaF6l=FY*%qD}IFk
55255 zHGhf!4S$*cEq{gocYc)r9sfI)$HwyfH#wYncBQK$QdaG~=k&ZRlD-mslg$wuN7Z7L
55256 zU$inhR5h$(3{y97%gFyBJV_*B<a6Snuh2u}5IIU;Ah&5Q-9{JDAJKiX2P~(JdyH%)
55257 zbF`SgM*fX%q^IdUVk93y&Sa`x$m<cp=3|8O;kIyFxd=|hZRf(-vwff2%*Y?d#d1-c
55260 zx3f{bNu8r^+nF5gshn50sn11I^-bs1!ap|33hpUN$!79BdVp-CgocqHk+<k(dXNs#
55263 z{|1|z@ADq~Bm81|nqS1`sDZ}uEBWVXD!-av#lOJ6$cK1raL&@MRjm9{63#zL{zek`
55264 zWz1E7mmDW&=o|bJ{#*1dD$+mG|0Io6$-l&}p?hgQ|1$pyEh6b2-|=8Hil5@1re$OY
55265 zi6Pf%6N#mzw3?hC{cMVwX&e15{S_Ife<dx{O5<q@jV8aRcG^mh^D>X69xt)-Cs}zT
55266 zNhT@u2h>DTsh-r6pOBx^P1Hbl&=LA;IzxuYJ{m*XsF|kF9{NwToc7ZH<*~x~rxN2&
55267 zaDn6oi6k<zhswwsWS)8u3+W<1qdX0z8_55n68UF(pIGQl`XUXX=`@dDOTFli>3-SY
55271 zTJN#k;{}e!C2~Rh6#p4N&Hs_V!~cn&;s4Cv<^RIZ^8dl#<NuSt|L`uP%hF{TGL0-#
55272 zmL<!U<;Zend9r*~iw~>iulxi4Z~PqpIX};TA!EUZjLLYKOy(i;lr37gi|Gln-Lgd4
55273 z9$AuXuPj-XB1@H}F{{4B1u3s6uPJY^eg84#3FRr}lyZiVuU~myc|kd>9C>)xl|C0u
55274 zqrIY+MEgYhM+Zf(hz^Nf%W7%lf})p4uZ&(D9jd&mysw;(-VnVhIwD#Yy*PSlv~P64
55278 z@;v+TBfH4^WJLBIl0*JL-X*^w1*Dx`CEp-@#G5Xbts`&C-k@t_t7#|uca9FyDRM#f
55279 z2FsO0<@8w^L=&inevdAuKcu!VT|2K9Q#mP+eMh#=;}MTAkIf!IvM-p1apY_iH?#M~
55280 z-toOtduR6E+dG#`lf9CcB>N=$CkG|3NDfI}o4h`GW3oIsDp{2rpPZDOo}80hn5;`S
55281 zCs!voB-@iak`E;xN$yQPnS46=Z1O<z#bhD*Qu1i>_2iq$6Uo!bca!fY&!@;z7N;yt
55282 z@l6RxS)Q^oWpzqu%7&CpDG@1(l-QJnl;jjmN?uBFiXp|4Qk&A4(vspxIh=Ad<#<Y8
55284 zGF6$XPEAZrP0dQxrk19fQmv`B)TY$7)b7-t)MKe9QctD!r=Cx}kUE??l6oceTI!9|
55285 z@zkl*nbdo!b7?fqD{V=dPnv&PP}+*LkhHaF>(e%-$<w0JRB7>PNonb6IcbGyx-@fI
55286 zby`E3J*^|{P}-5S-n5fxr_;`+4WwO66VfiFjiy~syO}nTHl21i?S9&Px-5Nh`qFgY
55287 z^nmo`=_}J$r-!C*NZ*tmk*-LOO;1QqPS>R8r5C3g(k<z=>5b_v>5lZn=||I#r}w3w
55292 z>6;mlxjb`a=IYGQ%ng~FG9xk-nX#D(naP=&%)HFvOhcw6vo^CavnA7!c{uZE=JCwF
55296 zIoXBTx@>cHb#_CxJ-Z|OQ1+4R-t3dvr?byy4`g4=7P2p8k7i%bzL`CdJ)M0w`+oL(
55297 zjx1+!&e9y;oPeC=IV*Ek=Y-~L$k~(=k)z0o%}K~f&e7!L<rL=_ax6KuIgL3jIgXse
55299 z>vF?#!*e5ZmAUHN#N5=}tXyqwX|5^Pnrq8#%5BT-&h5!PmU|-iRBnIn`P>V+!?`25
55300 zS8}iA-pC!#oywiby_Y+eNAtY$mgM>5`R4`Yt;h?>Tbs8&Z)2W3FDg%!7oV4um!6lC
55301 zSD2^EGv`(3HRRdzI`R(X9m(s>JDGPn?`+;c-o-p2?^51q-u1kjc@ufl965c6oB8_p
55302 zGw*KR{k-{nS^nburTM=30r|`GSLUzI56$0@zbQW=Uy&c1pOBxNugTBLFU~jQTk>o3
55304 z!P-^YHQIIBFm1RtQmfRewTaqPZI)K6E!CQ|R;^9jq;1o7YkRcEv?sKuwEf!i+6&rY
55305 z?TGe@_L}yFc3eB9ozdRY&K1xCuYx57J_Y^-K?N%cLJHOvtS{JDATNk2P!+@%Bo(9=
55307 zg|foMg-Z*43j+$57p^Q^T^L%pp>R`SM4_TEwlJYExlmJ>S6EzVD6|yT7B&{P6gmnI
55308 z7alD<&XH4RxS6kiKMVT`&lH|394s6vlnO5wUM(Ceyj?h1c&Bi-@Iet*<XPlhw5-Ul
55310 z=zP(IqT!;EqANw$if$B*7flt-6x}PDE2hO>#Y>8Piv5d&idPhe6t68_U%atcUK~}d
55312 z>EgS^_lxICWF?DBmX`RI1e7c<Sy{5WB(!8h$)=Ks5=BXDNkU0-iKZm4q`1UTVkxOD
55313 zX)I|eag-b`Ia+eOq_5;m$+?ojlA#i*<Z{W?lChH8C6gt0N@hzQlyaq>rQW5>O8rU$
55314 zOM^>Sm98mWR~l9tUK&}dELE2#mZox~Z-krq`uDRmt5jQBT52k_mfA|2O4~}iOM6O>
55316 z+gK(qiz-u<#g`?OrI+QD6_)AB%w^SO4Q2MSj<Q2#N6LE3PL`c6J6kqTcCkz-yHqw>
55318 zokdrxYt*&q9J<50qq^g|KHVAJIo+UcNGIto>#pj?bhmYrx;wgA-2*+R_tbmqm+AfV
55324 zQ<y2-6lqeL)TTsJswvB)HI<r7CacM2YBIH%x=lT%W2O_PQ>K2?dD8{cuxZ3}#dOVd
55325 z!!&N1GR>IondZuAxmWp;a-VYl@}Tk+<ss#3%h#80ESHx@m8;6*%ah8}%X7*L%XQ`E
55326 z^6K)2a(j74`JwV7<-O%6%TJe|EgvYqST2-bDj(&@PdIMo>)+4v>*Y7gC(5VG@0Q;$
55328 zH6J(kna`NdnFq~7X32cneAPT=zHOc~-!adcA5?G^o)z8|%PRaT0xN<mR#mL2SXU8N
55329 z5nd5lp{!6>BvzzWWL0P@N-Ini)(TriQ$<@vcSTRdv5FHFrz-j@&R1Nh7_JzpxKeSg
55330 z;zq@I#Z<*i#l4C-3$=JzmRNi&{+1xi3QLG(t!2GsqeX6svZyTamLyBMCC5@|(OJxv
55332 zTwb}da&={B<%Y^ll@XPS%Gk<;%H&E-WnN`*rJ>SNSzFmy*}{<@`*Sm2|9)0FDi2p4
55334 z)^Ka2RcTdQ6RoM%EUVU9YBgD{R-3iS+Gg#x_E?WuPgqY``>p4#7p%k95$hG}HR}!Q
55336 zs~W28RUK7_s*Y6kR-LRmU3Io<pz30kP<5$lwCZ}*&8ms2>8iU`_p9csWz~zTmsa~$
55338 z^||W7>Y-|>`f~Nv>aptE)sxkCs%NVo)NnPPHQqJLYW!*fYl3T5)vT#mR})qfUK7cY
55340 zuGCzsxluD-GgUKFbFXHumezXJE~)jY^{)-8T~QlSyS8?H?Z#SpZB(tQHoi8gHoZ2d
55344 zvxVCtZAzQkmS{`0W!bd0Qk%(Uwb^V<wl-V0t;crEcEWbb)^9s+yI>o(jo7Z(uGwzb
55345 z#%)u!8QVSETs`H;zbLtxuYW)5z3P|L`_%i_2i32r52;^UzrKEBy}UlEUR57opH!b-
55347 zH^>?mH!N-NZ3t*s-mtP^bwg;whK5ZI5e<rl*oK6L<OWScUPEz%p~2En+tAq1(%@(~
55348 z+;Ftvctc;qnTB%>gAGFsQp4qjs|{lfw;LuK?ljCcJlMzW^W5jXZ`nS-eS!Oe_pREu
55349 zX5YGfVf(`OMebAXQ}0XMm%1-&pLSpAKGQzyKHI*geQo=?_x0>Mw(rEgQ~Ub&o!@t1
55350 z-|)VXeOLBf+jnE%_`a!qGyCrCn`@+vUX4o{eH#56gBn*fhBU5iT;I5{QQjEUsA`OF
55352 zz42z_MB{Yh-NyTk^ZRA{7w=!X-*<n&{^k2u?q9t>bpM9^oAyWSSL~17pRhl9zh-~l
55353 z{^I?H{g(Z;`y2PS?04)xy#MI_<NN#epV@zI|KR?i{nGx+`>*aF+kboi<o-MRXZJs7
55355 zo~C0>Cz?(*^*5bwy3jP-G}3gX=~~l`rtzk!rkSRDO>+n60j~o~4)`4KKM-_a#et9m
55356 zYY(hHu<?NWK-2-%f%pSS2htDZ94I`XJ77LgeW2lh{XoZoLkEr==sj@q!07{L4-6c*
55357 zctALC>A>iL>j!Qgm^d(f;O>F@2j=ZE`(pc2yRSXKzTCdjzS<sY-(cTlkFYE3vGxRe
55359 zN&6l9to=bV*X-Hs-Mp;XuQ{+exOr9cn&x%QVa?&qk<H3xb#r2KYI9bzwz;&~)NF0G
55361 zf?8IzgtV+}S>Lj;McxwCqH2k6Noq-N$!RHU(Y2Ucs#_Xb>@6KFhgy!b^tPOAIo)!$
55363 zY->Vma;v5_ueG?<&}wO|ZEb9AX?3(7Zavz1ytS|OOzXMU!PcQxsr7Q})z-1r+pUwW
55365 zZKZ9dHfx)$t*Nc8t-GzK?O5B1wo`5WZRguAv<<h7v|VYt)^?+9yltv&rtMzaTsv*|
55366 zYG2as)9&9M)V`uUq<wAs`u2_O^7g29ReOAUQhR!PPJ3ayuHD>T-QLh{Z|`V7)PAJB
55374 zyRLSPb=~fo?7Gu6+x4KE>-OyS?q1gI*B#g$+`X!MP4~L)u<r2g$Zln~x;wEuwL7a@
55375 z+g;ji>b7><x|_P&y1To3x{r0A=swlm-+jLOLicd@NcWZQYuz`x$GfMxXS(lo&mE)(
55376 zy$&up=yTBjV9>!82SX07J-Ghh#)I;MQ3q8A;}0esOh1@&u<)Snp!s0+!G?qOgB=GC
55377 z9XxWd*Y&%OAFOj7hw%8nS73Um>-fiH*YVeP@Hp=}zF&y>mtuZ@%pc{JpFGln`Kasq
55378 z+ea|pM!Y`dR*r1Mzoq+#4%3xb-&ssIyRNT~V0o<nkKvep$#on)is=zpz6HxCV7?3P
55381 zUH#%l8t~ZdI=<)nomlSoQ<y&;^B;H1PrN2D-<az<80TyHFkatqD@Wc)!g3>+eiG|b
55382 zV)_-V5Az2PVm`F9-=9GHp2YNHSRTj2>on#&>|SmJ=fMl@^Y;#{AIE391Mm0Y{g$uX
55386 z%##=9)47+Euzz0I-nBxkAMN8a<eeA(4*9j5uiSU73-Wr8>$qs4UL2>-7W$9t?OM2d
55388 zuH%PjZx_9>9pr#`7LRB@?;y87#P#*=UCf{CmY*y_o_vVU^&HyMXR&y_(XAYL-4Dwl
55389 zpFTtGh&WD*aK1lG#PVpTpCRWzOv3({Fg+2=<N8>Xiusi8<wRVUi?IJ6M!K$-<NE##
55390 zIlKt#|1kV3_i;ULFk`-0tQW`kGt9pT{ndv7?&YvuvK%?FL5)YWgD70ri!gmTUT-MI
55392 z7x*%D-Yq}z#PxeM5Bq`Tr|`L#7rK=r-$ibCj$%6c0|EV^C-UoRD3-^5O`XAXjDz06
55394 z>FBS1ch9{Xwo9J9f%RZq@m-7;A~D^w5A$8c`wP!+aBKJBeSBW>EI!|NH{mso^LNpH
55395 zBGJDM;`%<n3HynDZLkO1K|T*-959T}@iwm0-{CqK#Oo<vxBSEt<Eh`tu^(t}Q;YHX
55396 zh+8?b9^)s^5KPB7br|i(6S?-gC0HKqati0=cNpIeqF<O=hUJl$o_POv)V<s=^2Zae
55397 zN0H0V;yRf^f98qY9KGj$|5J?j)}x>I#QKL9?jy%Nv0tN?-OG6{JP#h%FU6y4{K?jZ
55398 z^&rE1=wH_3IDLA>t=)(B@p;L!3*(D^{8@~r*1P;FiNJL>fb)C~{n;oU2gb1-j3XD~
55399 z&i8RXe}U<v*q;Fj^Ow5iCmuN8qu7riT<@P^JQH-utsHp`<0lUrrlbFTAGzw`ip#iv
55401 zU$6OKKJ-&V82^8Y{>lUW)xV!~FXyo^9=PvXhdg@?{r?u^tp~>2L1=fcEyj9QyS4l9
55402 zK0YrA!tq;&b{>TNc@6Dv3$B~D(Vw4{V?WWay^Zrcc^jV#*ZmOgN8ehQ7mUB&#`-2N
55404 zwA1&H$1?OISI)YZdk^^|Lwmh~arrZ7&y(oSWCM8r<X7%v{jc7|eCUVXLwlJ-JC~uq
55407 z>-Cw{Zso|UI36;5|1pX8FXHpaFi!a`#_`V}-zS%2I?m5I?AIjP??qf+GC$1M=3ee1
55408 zt{)lN{cmx61JS-G7wp>y@7um|-?bh{C~`xF>-Hk9mq}cQGW1u!O?EGb?UF!@GeXhc
55409 zLS6PvzK`}I^TvF*F9=0@{$#?f-G}$_c}XC~KcN^;1fm^=N?1So`?qj@&$!}g?lStd
55410 zw{RVNg8TG$(O%xg`15DD&$*28<69VyeA3{SpYRw@UB);l5bfg=jKc$y-O7<rjGuTr
55411 zrXz>m#qs19+C}>aM0@=N{n=%VZ{Nar@e_Q`3pidp#^aas+{;}+{_wb-FT4B#c^dik
55412 z3Hmc$i}#biav$yZ6<h~A?u#y<eSU)RG>`u3@_P4j*e-b*Ir&N>9x>kh9>y#DLcef-
55413 z@Cv?H{3P71-G}$_dCAl0|6V~mc^b##l@nM$&f{6M-_yv8-=JSRi~H;e<i$J4<#&+x
55414 z|Aza>-?-k}a6d=CJ#pJDKcP5Yzrp!_8pnSE`}cH<TRHLya)M&~GJ)~UJ80h&+xd+O
55416 z9rNM%zJvRn37j8_{^~c&+{<CRBmm>fwaELm_?~4W#s_o&^PzpLMSGt(;@0lN`}n-%
55418 z`3XgyT*7^D0Q#K?+)o7zx|JhqF@B=>K4b#p+d;ff@%j?lO#rUH2^{xJ829`P{qzL-
55419 zmqC1f8ie@*-OCLke<-G3Le2&tza|#!6yvK)%f50S<Mo%30~F``m*`I>aQ{ltU;TR8
55422 zy5m-ktU->Eh4!(X0ptn6`hSi4uBULkKSn?DYvkP-d=L0BKHmUxoS;7$x$j<X0Qp1E
55424 zWCN~$qQ!i;KUjn7@8fv4b|2oy=Os^}J*~n0<x|++8uT;xo{Bq-^K%mSXCvs>PGfxk
55428 zCFIrk8Mk&H-pA)9{unpBgzMBF=jSEl$9i06|BCVV3G@rULeBjwets~H_I)1h@H}$l
55431 z@@X7-&7r@N%<ko|UGgOEBVNS*zKHwuh4%y;z88HG_XjWHdKq8h*6zdm_`KvvwBHwz
55432 zYfs|yzKHS4I$R$=MgM;s-%pFUE`N$~^hapt=kUGCIgIaqjB%%k=|4p~_~?{-{x23j
55435 zyOmpL*Y(}Z&U!Fz48eJO758^vU_9uDel=v_IrH4wUAVvSyu=Ur8-nrcleoS@@N?%^
55436 zaXr6@^VN&%P(Z)-CcdZt2%q;Y9Iv-<yncl9F5vt4H*vf^TI`<x3-k{H&c7ed>ut14
55437 zzf*4INC?jF{4Azp`L{6co5%Gapda-^|NRlZ9~Q9PH*p<)g#PL+tY;p_Pe^qy_ZH@x
55438 zM>`hqJ)a-)<u>}kdHh^OP=Dn<#v3o-{$U>9gPq0kyp0^0M}H-(b}P5gF7d;-@&$~i
55443 z@AJW!51)S(^6>U@w{{oqFFY@K0^`e77*{-j<Gl)h&*EjA=Mz}&D864DUPwp(eGAu1
55444 zKR#zauIGQo{te^%{1doexpmP!|K~Vg!`L5Rw7*;E-=0|FR*tMfzxz49XSs!T-;Z|n
55445 zIr4uP;~-yLcegNZ7{+n=F>>n`w%?C&%jb=l&&R!7Kl0~u^drOQkA3lZZ{hKC+>Z}?
55446 zedRvBPkbKz$>%tZKSQqELVNri{nh)o-O4SrOMKC9Jdfk`JibqQ37_+GTvxuhKX@Mf
55447 z(k-i7y9@Uho|pJy{m<k6(ii>P^H|SIxW11gZ;#;T`tPG(JC5%MZ{d4|pW%4@4DIKK
55448 zIF9e*I3Hi=SD<_T&ygqZqn-NV`n!euWZ#W$<;Y6h2hJg%ZsGi%K|A^!`96gEZC`Bf
55449 z*23p2Snfwy&n>jCGicXyxc?Zs<6iCz@@Ectg}+}#9>?oj=m+O;-!*jmEBDbKuf%mV
55450 zhw<4N9N$~m?>Y2WLj!K*7TP6`V;r>-`Lq&wu^QvtIsE+hag29Y;=b_ab+>jG?k_wq
55453 zK^oyGc^-Pkj${Om{vO-mI7pv?<GawS@3Vi-XWh)X_9k1{Kd0?(<y?CbXPFrGPsveM
55454 z@AsL02zm|lDl6+u35S$$NZAZ2n;~U0q{tyf4k>a-*#aqBAY}`rL_kUeq(nf<R!G?j
55455 zDO({W3R0pVB??luL&|nY*$yc&kP-taF_5B!6eXlEE73b66`s3AI>?*OGx9hap&U3{
55456 zPM-5{`Zu2Lq8SwCn17$+^+)uV^kW>=N9orxRe&l%RZfL((UXx!AC{MKYW^ylhij~C
55458 zt`+(;7f9YEpSUcEUxKslv=UFf&9K&R*|5oQ(-_9d*imUnGURbG<2pm3!D3*MiNU$L
55459 zDCPKXv7;wFOMgi}rGN2w#^ZVCH5-8t@+M3B3tY>%>&(8tAdj)Sx(&UCGX@wj@*e*v
55464 zOpWEe<*BA%&a?b%d6;Qc`PK4R(?)hRS-#pNH+z-KO$n@AYQ+Y#f4RbxY#d?bLdut!
55465 zG-gHlN|T9QC6~)gR<pI--_*gb+D!LMhs>wTy-jQnZ)ASjz!+yd41If?tR^p!HLQ=!
55468 zwETUxHaYkv!9{F!DY?a*ii_jE;jzmjk$co5!y|)x4Dvk<-%uIEJq!JGMvvDy=ihC)
55469 z#eOLF1^aRK@SCi4E$j6U;3>f->8$KOJ)ZY)#!)`p67ErMDd*1xaLc)1?mOIz+-mN1
55472 zwt{wmz6m-2ItV)IRQe1k)W+6`Q+I)8fR=zl4fHJNFF`*A{fkpQpazfUoyu01^VukS
55474 z{t0vjbQbhKK<|P6C+L09DbUYAr$PS+`e)F)pnq|yEFClhR0Em`ngyB-ngf~(ng^N>
55475 zHGB>_5Bde9^PtdYnFpvR=pxATSI`Hbe*>L^yBsJ1rJxC*yFn8{_kbpW?gdQ-O#w{>
55476 zO>?dx#x1sP*a}(gd|&Q-W6sto^YPB_Q)RlGf6f(Uur=&toQoKFBp=Dv;bI#ZWpsP#
55480 zo!vdbYSkJH%r6d@!c8huvS|tQgSErzOE4y~yBpa3YF0wda-A?Z%GZ@gmM0n~oc%D)
55482 z6NDSPo#l+ZMwU;1)40;O&Ux2aLO-Ivsy}52Fv^Xw##CdWvmZu_(fL-v2j<Z=i_Wp$
55486 z2X=A5t|h>$M}b$)ok<XjKwc)hNDj2!NZLssd7E5d5z~9lZ+0Yqpo?h`eU`4F-=lK)
55487 zc19cRq(5|hm!s?p59eRLTLOggU_E-A`Ap|3qt1S@^GX)iyL>5i`BK)q3@3dl+bys@
55491 zPQv^{-5%Q^R{VRq{nyj}fA=o%AF%QNU-`c;?epK3|1UfJzqe7sJ@Y^6|9{tmXTLJD
55493 z?t=c3p~tkme7(85BEllGT+{jLa@c-q#(2b}GAElaS6r|}>8|NF7%muN%X7*f=w|e4
55495 z+bd+2WtL->>B>!&_sT|f;d+%J(AaA_Z}u|_6%CfevO{H4tc6nM#jcd!G{;tiSB&Tq
55496 zbpvc4H)@(Hx9CcBR}EQ)2j%|dr*xc-QPt37;>!BUF0g)w=$Go(=+Ek}85Ks8X|;)Y
55497 zd+tf#%_8n&_T$A(vY&5p_c-TYmisF=$B5uXyqM2_lswAV<BaCLi4XB%`xk%W&nWd2
55498 zd5T*~UMH`!-GP%Pj{r?PfhON1cgbD0i*<73QDDb6Xg}>|DNce=APD7O<6q-s9{wKw
55500 zMXFI(tO9+az_ta7I{U}sS;}ho5>e@wh)TaiR0`jT?<6Y!HSeV#%n?sMA|J6F-=p7S
55502 zrUkTs-L0S&rdC?TQtZ^u&i{%26PwxRSR_dK@9^JYQQ<0n6+3^KUkiQu^2{!Be)sX0
55503 zqDtq;WfB%6v)yqvvoO~v7LWq;U9vBYAHgwmjh1Uv-lT83jm>}g#97u4U+7IJAIkRa
55504 z>-cqS-|;&CI<vfmF?0P*mgU@M?8lQ)(vR~Z!G!Iu882UE?d>AFSPycXZ)%`V-(Y^e
55506 z7jrVk+#qfd<L<MZH)HP_mi}LJ<-s`2B6h}N4a;exHnxU3X(!A7L;6E@evY1FPdG@O
55507 zzI)2~JAkq;WM8o72?AOZ?v1Z-Qq7{HFH?8H0}5<BC)jA#e8p$~Lw5eX-{wPQD`c-S
55508 zI?FtkxqP_C>ufYv07+cyggX1-d<zKlU_P0Rh;!yC%shqJ{zoy2E9yDy{QV`?+mjdp
55509 z5!UOo?y(Ew{yVsqD8?~P>!AOy(Tvk-Trm_yd%5L&=f-^gB-#$eSSQdU5Th#UihEq7
55510 z@`z;-fs8w5I$}Cw8a7=w-6^N#zU8aRH<rhiXO)}FTgs1>pDmZlZ<OCPdz$^ttIgr&
55511 zcypfFYVI%}H=j3OGT%1eV}2*FVr@l4MPfx^MQufQ#mS1niYpZp6%R};mL-<umUWgW
55513 zSyr>P#d^$o)+$+VSnpPOR{2-0t_rV;uga^kR&`VzuR33Ksp@vsz3Ro)fz@lPBdQat
55515 zz1C3MRC}cMOzm*(_1Zgiw9dC~Ro%wA*t)Dbb6rc_vAVN$Qr(TZyEadoziqWG+!k-k
55517 zT^``42>7YRU-DCrf~9=}82C*RK%REJUuElgC0WVxI6aq_Gg@b5i%1c(939bd-y#NL
55521 z&~VVrpmNYHpj$zsK(~V`KzD$uKx05-LDir;LE}MpfhK_N22BJ_0^JLm44ML(3YrI+
55523 z0eu(rJ<#_-1<(=DOQ55mAA(*3y$<@nLB~M<59l92Z-I`3egZlLIt@AlIt%(Ap!Y!k
55524 z6ZAglUqSx{ItThW=oe0<94G;$px*%fCg>8-M?t|F>9;_afj$Q60}573!AdDuDFrK~
55528 zDJWPG{R|XriT)Av4(Oji!Mf<5LGOY-a4HXW!UL&z4^U6gMW9}wKrntWC|DHl4GMO}
55531 z0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p
55533 zvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?
55534 zJ`2ES0r)Hcp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc
55536 z06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ
55538 zSpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?J`2ES0r)Hc
55539 zp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ
55541 z0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu
55542 z0`OS?J`2ES0r)Hcp9SEv0DKmJ&jRpS06q)AXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNo
55543 zECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS
55544 z&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q
55545 z_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^
55546 zfzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-
55547 z5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP
55548 z7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$v
55549 zXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gt
55550 zd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_d
55551 zz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa
55552 z2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>t
55553 zi@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_T
55554 zvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|I_$&dRCE&9Je3pRE67X39
55555 zK1;x73HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-
55557 z0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dR
55559 zSpq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x73HU4l
55560 zpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^
55562 z0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE
55563 z67X39K1;x73HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~g
55564 zECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x73HU4lpC#b41bmi&
55565 z&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd
55569 z_nhZ>&Z(+*6@~Yl`|z2A&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6
55570 znS;+9eCFUY2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-M
55572 zpE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9
55573 zeCFUY2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd
55575 z!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY
55576 z2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p
55578 zbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k
55579 z%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^B
55592 zd=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7
55594 zz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@xS%A+1d=}ud
55595 z0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*
55596 z0(=(WvjCq3_$<I@0X_@xS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI
55597 z3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@xS%A+1d=}ud0G|c;
55598 zEWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(W
55599 zvjCq3_$<I@0X_@xS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh
55601 zJ`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3
55613 z!e<dai||>3&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|
55614 z1fM1NEWu|9K1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-
55616 zOYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1N
55617 zEWu|9K1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326
55619 z&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9
55620 zK1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d
55622 z;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xf
55623 zg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^
55624 z2|i2kS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%
55625 zW%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5
55626 zmf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMK
55627 zS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^
55628 zXBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^Du
55629 zpJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lt
55630 ze3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r
55631 z@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g
55632 z!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}
55633 z44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>
55634 zGJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j
55635 z%kWu&&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5
55636 ztiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@J
55637 zvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?
55638 z&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdl
55639 zJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L
55640 z_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52
55641 z;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9
55642 zfzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ
55643 z1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs
55644 z75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwj
55645 zR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeA
55657 z&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifju
55658 zK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v
55659 z_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz
55660 z;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<
55661 zgU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa
55662 z4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;Ijsw
55663 zHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#
55664 z*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|
55665 zS%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-
55667 zpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%=R$
55679 z;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1a
55680 zfX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u
55681 z13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr
55682 z4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@be
55683 zHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@
55684 z*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%p
55685 zX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@X
55686 zpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xm
55687 zd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP
55688 z@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnI
55689 zz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13r_v<DXgAQ!&rh
55691 znv65CCgV)3$xI8=LaOHZSd(!k)?}Q6HJKS^hRL?S$^52c?(D$-8*`o9zroya%$|Lj
55695 z&Hq<bV9kHgIeUg;ob#LgTh_ex%gUscj-;fYPFjttv8*R^^X%J6Nt=>>p4{J>w9Ucb
55697 zm?hTPq<@-O#r!Pu^UP-E7wj`j{}QvE`8u<M`DJDo^Gzm$+0E=>zQcT%$z*<o*~k1U
55700 z$V@SR$~<EJ1M_Fhe`KC9f5}WUFPYcO-!N~Ozh&Msf5*II{+{{I%m?PbF#o`khn_(H
55702 zvfpBNv)^X-uzT6>vcJOqfIZBXvp&|(*0T+4BO73w*k(4&#@T*$kR4`^vm@*%dxHHJ
55704 zFWJ9hr`f+|U$Xx<`-=Tf>}&RK*coDvX^xXv^9eC#39;o<V#;UswNBELekyrm^3Nr2
55705 zO8)ue&B?!zye0V;lYcpRXYx0acO`!_IV1U7$-9%^CcjJm`{eh|Wan3$%bowoxyJcV
55706 zod49h&iOw&*E@g4xxx9f&W+BWb8d2ObMA6})0yG?mUFlB+s-}C?>P55zw0!w-S?V2
55709 zrA#Sl$Gi>zi*xQLQC9;<vd+sLVnXKUT_!@_4SJX!vTc-!lD>MGUUJ_&FaPZMx}A8h
55711 z9$Dx2ncpY9OfVB<t3P1=z_En6%3LK|{cGl5ldWdY1b&^o7k!E=0VG-Hs5j3}&zM(R
55712 zF|TCE{5vu?-<MLXs{;Hnd3XBMx;B8whz{$T5X=MSfg_E)YfX{%|CISt^Aj-hXJnmc
55713 z%rlbwCG(ef?|MN-^^$pMe)eTvo1c1_zcoMIGXI&3@E@3eaHN`-UT}QErm!jG9V3-Z
55715 zf64sx$$pcx`7QQar2TKR-zN9X>lP%DXZ>DB3VG&}$K878{8jSKIeT4+Wb$hG0jZkr
55716 znV*pN%)<^R-ZN9!Y&M%zf1UkxvX%MHIeX=UB=(0ad2X<|Y%Zzhv-xDJLbi~s?_ynK
55723 zp7eEc-@L*GgDY&zo~b^`$v7EDirJ9kQ)10>hm(BnAkR8e9P3IINkpCX<|k3-29j@d
55727 zQ>`VTH3l~arrFxuQp)VLcd=w%KbBrfww9Bz%-Y+1&1!G1)vsCWe}bi7v6fP-CC0JD
55728 z?(NqW^nDmVldv{RwUlhNJf9_5J+WAyHLq;EAWO!zIFqeylBrhaMo*7$-+~eDv-h1|
55729 zVi#HZ)dkzlEq!&t(rhdL9OFu|9sx6Nw2%AT_?&jj$=0@M_L2DknJ=}M%xlblW-sNF
55734 zDs{hRJ&)#kA-{JzYVZtnT9V9WwTrA*yU2RJMb`5zvfg5S)Ge}Y-6HGx7g^80$a?jQ
55736 zwLN=$Sn@LotvRh*3f7%F_OtbxAF+Mymu&C*lI?w8vV9G;{bKdHFKNH-OWOB;$@cy)
55738 zp1a4ax9_bW_m1G+Keq3Eh1~m|oz33+7Njwsng40Qw)0iovwSe`{k47XFYJ4NGq-K>
55742 z(FLs^U9hL~`(_@!?=LvA-(PTKzrWzf<}Nt0xeMC-Cbi$zlJ)$sT1ol_y@cMsx1jg$
55743 zE$IDw3wr<Fg2(lH3m#YVQ-^uHlBnKik6@B@Y#jKkV;<oo>-bQKb&RNldVVmta{TP)
55745 z+~)e5&spm;c9PvL<M7yf;argCENCZr(GjMg@7a{a@tfNtc0t8Mjo-PTGT+PWaY(jD
55748 zS_?-t`*@{%Vf1F7PK<7T-Py<GCtEk^OV|B`8pG`4@RP1RH|Edpo0I%ZS+wospSbP0
55749 zef-JVPWsZd7e4+eWa}R_4ksSv)CK!FcU*pw_Gh0LKdybx7amRLk6k}!kt3Oc-(eRY
55755 z-ASR9&5oJ=_G@m;OYJd#!yfZed(7Xk$Gp_;;~Vyv7iKAoWKJq`S=o|B)?=uw(8^}V
55756 z{E0p03_D9-kg?Qy?gd%;f-IR@uV_J*z99RATJQS{vh)R6>LTl<F0x+ABI~6rvYwM#
55758 zFiTk^b5fbh%9bp$-t732?D1vU<4dx~mt~JH$sS*pJ-#Hny)1it3$v6(GAEU}tZd05
55760 z?3m}j!{2L<`7?XWd+jlQW{-KVJ?78sKK9yUUYMmUk~yi&Wo1hiS&yNzLMxjcbE-Y&
55762 zF=yIiUS^Lu(;o9OyN^tJ%nP%WMKULqxvXr-BI_|!R%m6jW1jy@&3ElFFSp11U3<*S
55764 z$(&T?a?n06T#uo$g%;2MWo?f==C9ae-eZsXEB2W8*kk^R-Nzn#%nP%WMKULqxvXr-
55765 zBI_|!R%m6jW1jyD-M8&Ar`covwms%Fd(7Xq$DC&O@ojs|3$v6(GAEU}tZd05>oHVT
55771 z-%7?#<egZ1!u;mC*Gdv6vQ8`=eM6SQRuVa}YxMo-Q?k@)C4mzgM_-J}WU0kUyeC$S
55772 zJ{Y}4mO8AY-~>B*XY>+T3R+3_=<Csm(J`{rY9;$eACoc1$Woh?WQ_7;Ujk$)ZY5hs
55774 zl9^E#X)BE^^;yaD(L<xlN8XX8kd;i0?jHF#@|-O7Scy2gdF17YPL`q$^Dp4cNY?18
55775 zk*Se;Ba@`wY-PJglSl53TphVgvVJSuI`VpCV&v?|7|D9AY~9GCkuxI$BT<rttt_3i
55778 zxJt4vD?2f=;`oE(caGm8S+|u%Nn4Z0uN)sIS-X`rleR7&KYjcp$zoRKC2frzj~$PY
55781 zWB55q`>izl_`%_q$5#(O8op1ZyN@Ri-yOa>ylnU~m2Mn<HGE}weE7`pDJoq#{BU?|
55782 zI5PBfI6=~0D|HON89p&QIov($pHGLThc6A+4Cf798$L><`tZr&W5e0Q`-k^Z>7C*5
55783 zaOUvlq4@All7_AH^6=^5-NWADEyJs+^wjVXGLGb-f}xL88X4X*>==4K^lIn@mHLM_
55785 zL-NqbP%tqy6eVekm8K2792yw9G1NBXolg^QhRzR_4joBc9y&y&kB1UNhljF;_6+T!
55787 zP-)xHy2R7O{lw<P1Cj=<v~*~9;?YoAf=}F_(!+^2iED}TgC7%Ts5B$-IB_;HmPjOG
55788 zRJu8FFA-1p2h~J~q^(xEBJnKIotQ{8B;4~UY43ERAaQW;LSjFazDPt92NIcyor!H!
55790 zN~4KYgHwZ(gX;%HlE$snm)J3=C)mL|gA-JmGx&1w^5E%#w}U6Cbl>2E!Bc}HgVDh-
55792 z4sN2-r-S8#n+MYe{DW&r+GVBuVE5pL!R)~mgDjO^8{9qcap2{^{(<LIdUkN*z>9&W
55796 z(m&NN_TQt@v4Pb7`~4IB>HW7z+GnNR0~`A9^w0EP?LSAQHT{qJ&-4$(pZ7<p^jQDh
55797 z{#bvcKhW=^(gXch`u+Vm@f-c6Bn?^V_I|#<s(-9MuRn`Q*YtPy@9*CcPxNo4(iGC)
55798 zw*JliYx`Htr}4L>zt#P0+}*#7q&-&pq`#qmMSo_0a(sqL@Aq$szluMK?~Fg7(yRR|
55801 ziLa+}@*yL>J?@IHkFSX@r}AL@02y;~-@Cr-z8NZa$G7#(^u6rM=zG#PW#!~kc3)QC
55803 zI5riV>I=^2vDbameeu5QeZjtlzH%ym*mt(i-Iv#QI5yswMdi2qVq{GFVk3RK`nFp+
55806 znGzd|-HXLzetb@}$JzTP_O$m#?~T}%m_Ozs>xZrUQS4MKCw3r~*?TT_h|2H8!m-TQ
55808 z&R$RNOl)26)86~|>^eWr>{v!`dT)9xwfBDSb+Ue^m1p$6?w#m8+dCG0-+O_|*Y`f`
55809 z9qWxnpGKedMyNckccyow_jYfjx2@MVpGRkUFZOy#@5iDOz1dVg)jQmq-Fq-P*1NYi
55811 zWKW_Q<Tgd+<-J+a>E2b*si+>kN9Bim9ns0?&FGbAT6CPscST=B$D`+aW}>IaN8}Xi
55813 zG%LERXQXE&x}D1JlJ+yBzUcPomgqVvzZ^XlT^(H!P3>_<St>sn-5X_lKJ;YuyzZH{
55815 zc|x+`?&<F7o;a0n=y~5W)^o2X-qYRFOyx^^uJrhOs(M`AH+pjB^X@l2r+RXFj&z^v
55817 zQmA~aXBWv{bZ3&=Q!0=2WOvW>tm}T-{is`}a&J#+_x<iW-PgO*yC<kTyZd$bME9kx
55818 z_uXf^$E@5OXGZsU_rvb7?g)NAn;++<?wPLpUH7|hcSpL-=YN}(FYmtC?d?9+o!vFj
55819 zT`-?_z3Uz(eeCTT>l*9Mpz<fA{jBb0($9|WO;mob+tt0kdrkN9E^l`lm0#&T(4E$u
55824 zxf)?37bEAa+#KhT$VB8x<Xj|<->v7znHhQCsdlQ7dy#m=eExS?`R2%#h(F?r<aFMM
55825 zlu~(m<WwXla-j2E=ebDceBSw<w4WUbllFE;wo&=hNI7Y1Lu6H_Kax)6_alc%TT450
55828 z6Q1Zi)|qYP<~Wykx;uwEvpX~J9fUp3@W;;aFgXmJ&7B#Y=JUVZ%Aa?-I@gn}(!$=(
55829 zl~gWv9w6Dfa5lNkQ28~|KHIr1JQIEyenRDEI#-3K!g}~#czt-1%A=i*@MQRAI4yi7
55830 zJZ|M=oZ*`Ajqr=`cz6Wgi_DKRuaoVV>X-`4;gPWU{Eu1rzVP*MFkBvXcT9$BsC-NK
55833 zWEVSFayv)m{&0H7M8}hka~-EUhN(QK;~v?jyQ4XzcKE40v*SvKzoRO2qr=saW98;J
55835 za(hqZGHE}pV^`>X=uPMam0#~z7kV0c6p}-mL-(otY)5M7e&|jpJ#;-ZVdZ3;p;%}#
55836 z^g1*V8pC&5_Bca<j<oit?N37wLt`QH`QKyZ1)<xaNXQrRw%-p0sC<9uV#pgh);`fb
55837 z5z40Wt)zW-XgHJ|IvCnZ<tszYp^VUu(5CiCX#ITN{xReVtq-kf_lA~-(yW|}v;BE!
55838 zb?87St$haHv)SWp*F*01jP{Jsw)UBJ^Z9T6KGJ?Ow5olo{a*WI`}%f~%Fl-!B)ig{
55839 zMsDL&J`h^nexv<G`*{2L_ES{e&@Q)+v=6k0+osxsRG!y<y*=38&^Fm#-tM+?bDaCy
55840 z{q1Ml-R)WU?r(OSsSc*?25CK~J=UJpzN>AdeGh4)*{YmvuW8@bzP7EoeHEEDP?czV
55841 zw0$F{Bke2Oms6Fh_Nw-!?HO$!+TOP9Yn!Gj+3oAvp0+(|liTjMZEkx&Rd%(fwB2i)
55842 zY`fOBoZPNZm9=dz+b*|VY<=5ynoK9DN^+apcA_oO`l$6$TcoYcs-!sB*6Fr*+x50!
55843 zTX~xs-$pv;_O$f@>D$+Krp?uMsP$so5wcCcRk_*L-L}7NM{A;OE15E=%DJ}FZM!jf
55846 zG-&o6ZN1tWX!QhdwR*`my;kL6>sV`EYgX`l>pn6arYg5c&)Jy5t(mR6smgiM@2=L;
55847 z)=jPJgTB_4R3+Yeuyt8$YVbqwZSZI-OI3WW+k<a{uYym5yUFblRXN(aDmWF?gX@F$
55849 zgl8))Z-Q5X{-CSnMlgp=rBr2#^jwbVWbjxpo2uL<{T>Ro1@{DZwM2tksLF+)JGddZ
55853 zTx=<5S=X|<Wm$81b9qZDRY|n$Ye{KwG#_eyL#9_$rJ-eW^ULPv%{$0#s#&)xWKWxO
55854 znxD2TZ&sUcH{Zaw+V-9{?{C@Ee6RU!^Y!Kn&5maCwa{W!wlqI#KGQtV^t?GrrV*-=
55857 z8Q-(pd)nk~-a|&Qv`K8b*|f6Bd@XcXl><#PO;?-F1wJ&LCeuZ#vX%5aZca@Po5q?>
55858 zP?Z&=-{GcPP2r|s;9gVBd?oO{>3maZldI`S)1koSrW~sBq$%EXuxWo&M&Lx?MAHtc
55859 za<|FXw7qFdAlS5yOslENrKY1ztD4dSu7Im4rO9Dc$esp9nwB-~4txx}3_Qm-|Ms2+
55862 z;lNHZZKEpp0#$*nflZBp#z0_AV5L<dd)jz8upy8gSP@_wKj3c>_MSG5k-pOcyBgm&
55866 zR^@c#j)u1l&l>hLJSNjLRf&+EUt(I_@TlPdRVi=W-k>%*8YUZVHl#INp(=+Oo;O@<
55868 z)t_rP(2!|W$ez|eZ#di#YS`PbwP6$fUSscRy-NDt+2Co|*s!9$rontI#I4HphOCCA
55870 zU#L&1pP(v->z~%2uRl{i;(zIXSwBEkcGlmkkJoqm)%s>K`Kij9`pfmcdawVw|9X8v
55872 znO0Jj8}-fgt1#`aPpxOE%Gvq?|Ht|*{#X7N{+<3uR3%!U?$`aIf6{-`zs7%$s#N*k
55873 z`EU5I`Y-xfayv&=vi*<!XZ>S!FZ>BI#i+_I{~dqSAFdPYM1O<7#;TA#^{@4}`Nv6{
55874 zIsPN~o7ViErjfqg{$bMU-nucr`C90jt<=5t2S|$>>%#tZWZFVi9{3aft(fvi%d4o$
55875 zP15fQf2KdV?ql7-x*4i+&cCT{y6#!s!#cHYd);HI67w&slk4u+-KtwfZr7<wP2HQi
55876 zYjszAAM4JO=?qmlQa4q1y6&X!neSO$ysq1-kUg!-s2i!fT^FhI)p_w(HhWL&Hj=)Z
55877 z>n_xl*B$j;sWV>--Bx93-9X);y4}8$bvwzFIbZS3)Sa)}hsj^Jqi!ozc}V)*Tz9N)
55878 zb=?Y|yDpWg+^XAC=kUGvz4E>A9q_%OD(CAq_@4Wo_;lY^aucaaye`eh`|kQy_->Ht
55881 z^ey)#*M6)m@TF0e+rEt254CS=r)&3-+cT<i!MCpVY3-xh&9yR_?o*WkUrO!0+R57G
55883 zYbI;mWU8SmX3suMXKG!wIaI~$_h@Z*?f%-mHHq3C^Oc&nwcgq-wHs?!*RH5(s9i@@
55885 zy_T)HQ!`O>34a^4_p~NhySnB^&5N4xnp4#?HRfxf&#Jg;#G2unQ1!!_W-@hCmHnjW
55888 zJ&C{8+Iw1kvSwSgT>Y{7cJ<}z)N1p!5V9(5)z7LgRG+ANRh=Ny7*%nTo=;=CUp-JA
55890 z-jkj-RIjb7s!k`<QmXQV^psYeT$N33@2Y033fa@DyVZ{BtyQn99#=iY-;eD*t(vIb
55891 zU-i6tMb(3<J5_6|%-2GXRXJ7lzUpSxcvW)Mc`{w0Dk0MIggI3`sXAA6nyPq6zo)A1
55893 zq-qnH*3VZeKU5V|t*csHSzcLQwX7=Ds*pXcd`h<3SCvxvrt%g3qHXVKrC60mw%c6!
55899 zobzUq=@3=B>}~Vz@$RaKdbfBtlKFP3HsW=8*L&Agc)iOjykwq6)dJpq-W0E+;t;vL
55900 zA=4|X_KAb7$f<bmHK$D#(-r3Tzvka42CdqjipSoi6=KEBij@`DK37{`F<J4tVxr<w
55903 z0~Ki%$>rJP_KvD~Dz=orDt}S_sC;Mn12R3OY6mKom#gJ``Rel9<u}OuE>+u7{-*p|
55904 z`IWMd<>$*jlKB~`w!Hjd`B?dhvZrNF%VT7UST%CY%HEVGNPmg)o8_VMDu?-R8SLX(
55906 zy;dz=ez1I5*@v>D<o34gXgN#OYRcVZ8D$xyN49)h*-Y6>s+L{8zw9}g)|Ra;Us3j;
55909 z17&N-w9=}PV^*3dTTl91Uv{`Gz0CZ->wD*qXQ{s|rEEv(+tO#HdrBXFu6DF^x@=YH
55910 zRH<HiuXK{Cnf>i8+gh4JZXZf-m0lu0CrE!`tG1!^N$I)L;gac+>C!lvPExhh(zhjI
55912 zEcKOcFWpiSED4sbqiUy0kCd(~U0#}8Qc&`-q@Xm7s<oBwDtTY>rX;iEMafe#e?`??
55913 zrE5wampm-lSi+NOW652rwy)GtGFfu7B#qpzkZIhikz-b}spMMe%93j(&q^+ooN$=`
55915 z=YG;(r&YUE(onLqWP>N<36-oR(`Kr6t|abpd)%bQ%_YZ5R+p@xYEjbHvXUCle$W1r
55916 z-JXx0cT~+=lI@u(S?77`dE}8jn>`Px+M$x2o(Cn#p1Ypgo@L~Am8xy`yzq>B&U;Q3
55917 z&v-`2bcU*}^zfd9CszEx)8+|~d1Ss;{N8iL<M&h*-|)DKZ;*KoReS6?;W_F#TzsbZ
55920 z+TvTqFN-f1U!-d5NMGkXtb58mRV){e6c13fWYSNx_-b*W*jMav-zxUb*W52iZ{Ffl
55921 z#W}@C+~?fqiVsjVzPPP;Pw}qeE$(RXMlx-uYFCO~#p{dLxV^>8i_^$_B~?37ystQ=
55922 z*x^3penX~1?pIW;xp<R%+WpMEo!lOhNwsR^n7Q-ZkBj$^X{lRu-*lM&w#Po6?!E3w
55925 zb{}x3xs!|D6=fHFq-qg&LD5I|mZDchFN$`O+as!0>Rw)?7V$;5i&huiAk$r{mR0no
55926 z=vvVg*T<ssMQ6x-oT_atdRR18bi(ztDCT-f<`JrvUUai4RMhOc>$+Q1MW#}#Mvj^5
55928 zx>yu)9d#WoI#{&K^@02}-~WPEZJ=nIYsU4&l|gP(WO`23d`0_RYh7!}{CUv|*8`VK
55929 z)s7TxcHJkFc{=8It{bkaRBadO=d$aO>x}D^YoPGCYlNz;A-#>bZo49`w!-^`_gy}!
55930 z=5U>NmAYK6BZZe;hscyOUn_j(in+2}`wB-~yIkAJd=FK-=c;mTb!{pPxYiT~$b2PL
55931 zyW~3TN_Q<S%qh%qImrCIRU^l&aM+bX`b%-`D12M^%whf;EBkmBHWW^~RuxVa-YZ;R
55933 zVGWsrR4uJ=s$imEg7g?HyjbWh^vu@^UXi{E3U3vhEI3&>P<W{D098{-KbeKT!tI4y
55938 zY|>|T{^tD61?%#k=0BopRRufq9~30#-_5_Be>Hzu{tc>jxL|eujr<q+<N4?FX7Xn8
55939 zPf@iU`FwsNKbGH?_aHw&rU+GAm47AQpI?=CBj1&uL*}LPwY(4cC-RTxAI>|Izc23$
55940 zneU-$Px71dGxB%jMe-u~o5-}@s*z)scPD=<>2GU(UjEwrr4IAoy4lAw?_z#>{@#2x
55941 z?{!{Q-t^~c19@-rH{?Cfdy=Q;iB!$(FOZ*+m!6lNpPF|+?>f0>zW>FoT29`}yvuo~
55942 zbKmB^%{xh^b5w0lKASt0J4JdtmnY|q<PA`@^`x(8-t*jBxwrDJ<^}S6R4s+{<IOuo
55943 z+CGwZAopC}q4`?wH0kY7UR&Otyj{7`+-TkwswU>SNV{wDmgjo&(#W)us!inWBkekJ
55946 zITvzIlhzNCpXU2tWVV*`CO1sl-If#2iRW%6(@v`PF!!YSB_HW=XRe3zu#T$TBz>*U
55947 z4d!I$Wal2pP0LNDYG-o`az5s6$$6FYBIi-g&YY)Itvfd}=V|Wp95si}Sxs)Ysako?
55950 zFjf)!?JCyF4=Z*Z@<Z&e*4QDk%DRqKM65N|${54SSjVt-U99!@+{^iXxXtIh-tXsd
55951 z-_Jegc~0)R=N`D}hoQy$W_&%quFgB1cYIEO4QViDoo{^}=+EOD@mYN(81>HK$K%=g
55954 zgPr}}$DJ1#niP7w(0Qw~x3k;3;9cl+Gc=-etkc$M=`8n7b!q{|6AgOl>r{6ty%#zq
55955 zor%D5hW5DA*(vJedwrdl*9RrU&=xvNyl=dRUL%xUzzd|on0cqX`<*sGvN!0Z-hchl
55956 z$#{A%c%OLRd6&KOUXFJzO!Ik{yxZPc?+x#ycbuV7{aL(kI-Ybq@jmp9de4KU*1r*?
55958 z`cZh@-bAm^OLm;{@)+8E=#A$s?+A6g?l41n$<S_iB^@t1o^`BuC_2^vn+$Epi*>Aa
55962 zbda7k&k933*CF-<JTE<WJhwd8+mAdq8JY`vyXjf?T=9&xKW%^N8DwZW&!T6*)92}K
55965 zL!<h;=#jeLxZkuNv@f*Z086cZV@T_2-)Ns|A94rX!FE4jl%bj0_uR|wW$1CV{cih(
55966 z_I`$z1$~`uf9#%h&$eH0_qDqj8W;L;v=6o$+soTk?$LJbiRM0l-n8xA?ecbs`>gwH
55968 zbRW8x-1BXrwvc-UFpV@AGk3RpuASqab8oq?xv6V&>|{LM7WcUOzT59U)3)mF3DcDB
55970 zZ*#S|phvO0!Oe4%3~kwcs_i{M*QRr;+FrH2WN5Q)bK8zv*tXfW-nP;vZd+q$qi#jp
55976 zwT6H>3~k+2()y<Lu+`YQ3oy36U}%f3<kn#8R;wJ!Bfu)sV9Z*twmxyGTc5PPYh7-g
55979 zHL+F5(4Im+yw-AO$obm&(rI?SVrYR@hx1jd#QDPc%&CB~&d_eQV$N0P1LvZX=ez^B
55982 zxfW}S)oEyX-*NyoYW*8U+C!(TWv6AMB@fDDz*B~H+o@|2v<QHoI?0x`mKBCJ;S{$7
55984 zJT1-^i{oaC5ny9zl9r1t`j!&MaEr1<4y<NqSW8!nv?bZm+roGB0&`9@$8L+Mg>bxc
55985 z*q|H&_K^l-=6K|I)8YYSIrbb|81+v2$K&akcLZCwj>nGs4v}LiOq+BpI}RKRj@ynK
55988 zhYZ!>kTkz&e%7pjvQG0FQn?t>tZCkGXqvfD-Z!r_FJRO=?GflN$wafLd8v83dA51d
55990 zW(`AynC&yo)6IGsXPWbxv+M)SQi%DhNF8n-w8LVG*w)N%<}lRL&8O_|n^pE#_Lp{@
55991 z{W)NVp<0^-_6_@E`?5V5%6-5?hN`q5+L!F}O(FXXU>Y#TP<i%E`&Ijursqx1?Zfs#
55992 z;IR|6>A-&1e!<?~wA{38KTY!~q(Z(;PwZ#xkD6whX6)DOUOV;X*H=$QqiNA@vtP99
55997 z)3#z0LkWbb8r#FBEZaldk?pQ+!8RMFifnVXE!#EQq-~_}h3)c(YU69$nC+hJqHUmY
55998 z#nx-<W~dNz<8#|%+gTddZ9bd3an|O5n1_(MY@2T!X&gc9w;60YhB{-rVpH3?Y*Jft
56000 z2foixm5sZNbB!|%uNq!8UZwd8QmK4-jn^CBHf%I(G_Ey{HB#@t44sTd!$G6J@pj|c
56001 zMsLGX!&0LwOnuVW)%XA~-e_;MHtNIF#YSUeU!xlOmo!{xObk<}8fA@+Mqwkb!Q1e@
56002 z;Vnajm>c|!J&gnnO~X;cL4&?w4`TizQo9;04Uz^4Vo}3Z!xM&TY*aL?HN0-P*RWXs
56003 zzTp<&4nvhSJZ-q%Fx4<xzg@rGFa(%js6@m427kl(`qhRrfF8iP6SaP~VY;EK!Bc;$
56006 z*2DU1^^**hiaEJHR6kAQQT=%Rh;_66GQ|8_$Er0{|J-`ldKd8>h@+RGKCfS{KUF^g
56007 z{Wn;z)f)h2hPqsT4*Jfkms&4cFV-gmvKZ=2y|Z3a&$s&OF{{rS0?T2j!}VJ0YwIhk
56009 zZ5^xIsoSv*hp9a4g!KRrunt-;SkHc_)*V>SS#MZRS-n<!-JI1LrarMct(UDPtG;f`
56010 zs<tW_D#ToO&pKt*(&)Czt&+O4)<lT;3rM|gJzr<9vm-WJ$-4Ip)o=CGy|HH1?bU79
56014 zmNm-?Lxq?v?z%k7V+xkHmVo81g|I9@%zmWm>iD(0wY$e`30iJgt})bP%PY$j%LB`0
56016 zYWplA3m-U{q0U$=7LEn0bwGJd^DCr6zO}=(Z!O+hO|8bFsC`*Wedob{G8(m~Yl9YU
56017 z?c>_}wIV1>VXC$EfkjgLpmx7@zILv5I!sm8-mG1(y;3_?J7|7ddm&8a)ehAz)b`h&
56018 zHQ%p2RqJJ_5VQHHcD1&L#$>Il)^47zwL;9FN9tDXE%Tsx5b;25Nv)cp-m4w0Rn)p`
56021 z9<#INPR$*&?L)O@*X%am1q_=l(2F)qT{G*<r_BoJA-?9ESrDe)HYb~{X0Dm2an`)4
56022 zIb^61bIqjLR}-S4tl6*Gt<l!JfS3o7I$$=`#Mi_l=GCm%tT9x#Sz5DPb5OHTbKCT$
56023 z<_2Jvq3UX$)J)cl*IYI|Gd-)h2pD0g$u)~L12ui7KutHm2k1RfO`)2p8h4Gubi;I`
56024 z#$00nZeXa-YtBRK8q;Od<(e#-rAUQ*P0KaPnlV$isk_Dly-@#Ol);nHFwNBPYRXL^
56027 zhPq|yH7QMUQ(|?0b-zgnkTBGHrUnzwL{_`1-vW*R?-}ZKQ(pB!^<H%elwkE1@HRvB
56030 zHm+BXSLf02R*S3SjXl-W{&yIu3)Ou_xaA|(8{Zk<Fx1Ivhw)Xl#Q4Ja%&0J~12!4z
56031 zfbqR?#TYOy7`aex1MV_Zw{hDzYrIjlZ=3{-1FkVtopIGTV!T|nUbPPG^Z{RFsL94#
56032 z#$IE0)k4*R(M_`hsgQ3~$mliRubQlyG>#e@jMSU|!zZIr_1vg8o-yVbldA@*28^OG
56033 zb=fE}4gzdOzL8TE3R7pQ-Wyd_uc}^FJ+IPLJq=TbtG11Ts*S40RmoM$RreVx#9VdO
56035 zp$e<6Re7siRaV1{VW!Fiu%D=gqpFKl`l=GcaFr4u2dEk9R+X<xQk7^pZ8%-Ut0IAg
56036 z4E0`>!SLSjmU`$j9MHUnRLIwG-EdgtG$;+qDyd=HKz$47ODCgY@EbO(FvF^0(ZGXp
56037 zCrs@!+^vc?+%@bNZW(SGrovRC;hN#0Vbm~WIA8h1a4t-h87>;;3}*~Im5T<C!O2jm
56042 z5VL-+(xpG5A=B^ZpX>AV)c*GpQpYMw^n5)ZF`<8`UuLLhD--qi^t<{w{Y=Fx{Z+s;
56045 zf??|Qie0@0Agb7^cv7(%rur+^DqdIIt5~eKRsO!>W|-Plal7Ivv@lh^T`^iQ#89c2
56047 z;#7sKLR=vzKU03Df(wXesOuG`3Znd7xvl&Vun%~{P!}rX<-6rC%2iM{%h!RQG1SQl
56048 zvV5(4rCb2zF3k%_g?!5g%I{YsmmQWJmhY9{E~ozGgRzs*D0i1nmp>{WFTYr}S+-d|
56050 z=CYmg;c__*XSt}HU*;>P_P-w?^<nwxGDDdGv9|1W*(-)RS8graD~~UGTDDOpEqe%f
56051 z%uvV5-jv-hTPm9?!=TIn<{9eQvS($}Wmk1OWn+M0z!ipSFAJ0nmR-<2)I9{x)4=@<
56053 zwu~31Zk5HCod=l9NZotgQJ8v9_oggMx2N0IZRymyCt>P!-Lo=|?vZX)Cj`$$h6*w3
56054 zhRVdc00rGk-5uSn(jy(U|GkXV9^Jdrt<o*Tk98BeQHE;Kz0h6O&FjwT&XnHMbpd)9
56057 zhN%Ok^E!U%d}*-sM(MTE@i5h0dZqM1>E+UkrF|u9rM+RQuC%}OW@&e+ujF>AqqKpc
56059 z2r<-$rHYc5B|9ZgOEge60M8lfTq(EYamm9HQOSM45@4C3j+N|}%$Lj+zb<}VGF@^N
56060 zc!r^#Em<$QQZiQjwD@VsAk7z$3i+1UONL6ei|-fTFIgz*FFA!#-`D$iG)mMZJtdPR
56061 zt`bx6bn$eFK1>ysSW0dI21-i6Q~se^d{m++ahD{57g>C&_<fkVRl+UN6~8S$DmE4G
56065 zwA6o_Vd{eRd9eY&1HUzGAWWUqE^80K=eG7n(HrfxFm*sXqkRHC<3-Q3m$ereY7~YS
56068 zTlhu5*N`rU2mwWhMN38Vno!Y9m`)VU7Ht$w6-^WkX@Z(yk^e(ovr{x&v{*Dy)Tap)
56070 z8lT2j<SY^u@xgK!`Wa}SDAH(-GzS_zlx@HsLvJV&YBn|N8nI>tAl3u`YYbhfIn*p^
56071 z<_klGA<Yb68Zd`+Dt@kJwum@}W<xWjq2B-f>PdcuFEzuO9l)YyK+{(k&~%6Ck2F1+
56073 zP+zErUI>k*@Tl+rexmaK3ep`KbKwp^TqxEE3pWebp|-}*)f#!>YT;qwQsKNhqz)C%
56076 zZ9p(gcc^y?h3ZZ9x>^inMIB)1RQx4{@`6x7s8Ft6RUfLC)bj-)HI@Gm(&GyW^=u(g
56077 z5G)9)H`G(=39zFldckY;j(S+Vs2))F6$A<b>TW<UL*G(Qs$FV(!L-^`Fb%8+SQ+|V
56078 zb-!AxRu%XQ{Aw9M3{W5);xD+WmP7l;aH>UWK1O|C@8kRm&Z`M^4?t6JRB%wBFW3&#
56079 z-32>pVZmm>dcjJ87)l^aFDY0pI4oEym{)}gW&qP+dVIlb!A8MU!GtQP3Kk3%_!&CH
56081 zU*#{50Tc{<y1-c=D&VVp1(?bQB?L7NL-!YGR7a`<l^)7AAPCq)I>ZlW>=c+0gsM#y
56083 zbpw21dQjD)npC+|_WbGmX_ZN(XXp@r{)%cg-=FV?Ud*a~l~$#KI+g!#A$<ngm#c>J
56084 zefd6>QzcUI!EzY-5VTLIH2FvQ2l;v^+kicW-mMbmZ|1M(i}P0i;`{($jiH<J5A&Du
56085 z=kr2&q5K)ZG+++tRQ$61Sru`N{Ehsn{NwNco#cn*59jXy7V`)4`|<+$-5=_C+xb2D
56087 z@5zHrKJ-H5Yx0ir4&Wy$|1TiDH{YDM0}$tl^M!evdFxPHW9Zg=dERQ?Vct^Sd~PT=
56088 zls5yIW9W*!jl8M6iQHh`P;L;|4;W?WoV>-nfxN!lKyDzf8{h-<A|2w--OKBN_Kz`{
56089 z=gOn*e_uGsFLy1^oHq;T&(r3qa{YO-Fnumhp6ARH<?-{dTpyHBm_C|E<Y{t`au0I#
56094 zFH-L01abn(9p$icQ8}ROgF2P}=a2QABWS-zxtcSbGp(Fdx|DXXR))R_?VFYTO080r
56097 z6oH&>fbT<Hag@`OGYP%e71N6898->-p+o$NXF0P9zrqi_m~;A}Hx<;W{0EVKAKI7a
56098 z3@dyJUyc)c<Adce^y|<*k)u%@DGn5RDBFNNhJG<esMu7jE5wQwfLIX#tTA-2;!v@q
56099 zn9mMnhZHk_X}}!PsrbtkvpK{u6dQ^u1$F-$WaO8u7*^~678L`EzU+Xa`$IkZt)fRU
56101 z)@SRX7eb-QKFU6TpQ!xDk$zcW&fWotv&9Nw_Gb1v)YcgKDTO?HHTy7oDSJLEloiUJ
56104 zKrl?doVAlJ%-YOa&k{pf$qF!Zh(GIewmdVG8OoMtt!5o&EoIGThO(&qhmmf{CbDL;
56106 z&)m)G&(db8GX0tUEEzxyP#_)R&wQ9AhxU)*%o1f$_rKwj{4#H45m`L|P3BSNL8d-)
56108 zp;PhaW$wrW@<8TJ=5Xd>=0Ij2)T#WxgmfOX-;=p2pO#N&PG-6??O?4Zx_lqnH)r-|
56110 z89^xDlvDS=FP-EkKPz9&l*?D;hw>%)d`3t<6Q<kbv+@o3lzc)ylo8Ab%Kc$_o_tuo
56111 zC?AmbWd!8i0AHBSllRCc<u18BV>)A6Zj$R6I>euGD4)&nXZWEPv%Fufm8+mm<v)V-
56113 z-k))pv6L|{3&}zmGk|Hp9MU2F3}?oyoH$0tM#fYIb^jYV$uC2bF`TgjSj-s6=#vF9
56114 zy2Er~Mo-3MhAYFKVUkVDrZe;(>axQOGsK|HP|5rmGJrTt-^h?d45AFa%qR0@V6qTH
56116 zJ(M1j%>d>Yx<|Glo03hW2W3O)L0~^%l%eZni?RV(UwR-tAnOMB0KG`3;!l+IK>Np-
56119 zMo5FwVERV-RQd$iQHE|v-$@@%UrZlJ?~?|kf%I-bFGH84Po}%l?b7LVlXMzb53ru-
56120 z(s$|o>DqLa)Gzg?%K&140_hOH^m)1*+CPRfU6fAU|He-8lRii%(t7|J>5=q6s+Vqu
56121 z={KZ1=|btIbX~e46+;Px>4VZ$>7jH<I-eGj&H$#v^e*YFbVE8Nok$C&1*Jn$KSQVD
56122 zH%oWY0%-y1j&xYMC>@aYL7mF~Bc#ir{T}IR+H~5qbW-Y)+QC{GIsxsQrTtQ^RF&pW
56126 zi7(BWCQ9Rj<uLR|&_0o-ksL`5Bzh>@fIWtOJ54Crl&nj{k`;hh5&*0*^fAeyWJxlg
56127 z8cGdGW&qQGIiy4Uk~5OoG~yVN4at;*y8m51$xqTC8J6q-79|6czSMxEJ4{zfdL)w)
56128 zm&7hHrB0_#OY~tnS7Mg*OSBSIs$U`lh(FX*UrOW>r$i*-r}|QT5-c^u&>{ZRCz762
56132 z7^W|XcT$DoP4T*z`fo)XVCWFP_-d*=C6p3Mm5W!!hvFsid`d`6<v)t_^QnY*HkC*T
56134 zTCpm{pW+wG0Ahdw=@5U)Yq1>KKZa8*5>xlT(UbgAw#0<E2cStgN;yc;r)-DmcT;x6
56137 z>q}9mC^72$N|ETVSw!++iX??bvOC$GVoTwtaKb!%5IY5B@_zDevKGp-Fpu)&XDOWI
56140 zP)O=c>P_xSmL?~Mc?=};lluVrq<2Ygk}Od6!#tcx`^m{k!KAGudD0_*JZUw|Lk-8@
56141 zB;8M1O2VMb0cIE;R4$@qPU4Hi7sm`OT}zq-I}W*g<=7+f5Y9fIbT08h;)A3fn!5mJ
56145 z6REd=hEC#0c$nx)T%wRLo-m#`lxR*ggn7&+Y7!>_rxIm};)F8^XA%Wr9z%(OL_@;+
56146 zgtrOSgad#zVK2<%RKfwA`#j-kLKc+AfQJkZ$R)v?n3q5#5XTHH1rqLpU4UG^h&*I)
56148 zzmYJN;7)Lac?1&73A2Fy1Z{#U-XHHzkcD|%he#X=!USHtH~u}q8~--U;{rsYihmXV
56149 zGF}JeIp8V719FM?B^cu2Kg7KF_4qZYtUxZmg*?jP>^t$d;*R2u;;+*@1-OYks9qA|
56153 zlQ{TsV{tDjh*m@^(ALGcfe$@I`*FQ-Yk;e9o;auIrs!szCCuYdoF#4`t|U$^8jO>R
56155 zdO-6%z$)^fda;Tg#7Sab$G(n}fXBXQUPQeG>u1D~C7Kq6D8z2YZbDn*qLDBULUd8|
56161 zctiLO@K`t@9F5tE*%JE0JcL5O@V4-*@N~?Q&>OP^?E26n=9SPZ92GVQ%`uZPlR_Op
56162 z!|;GyVm5`>V$Q{!Lws7O5X!)cA(wIFu_!bP$(Z*sb|^<Q9{}DW52}|dF-JmIOkPYL
56164 zF@rG|1P^1*3LXNV4)fr|oQ=62<BM?%W(Bh`4FEI419B1U$J`bS35F0~h$)ZJf>l8-
56165 z!^q=Nj5{VVMkqKXI2A)uEO-w!9`b-*1amQD%xQr^V2C*lHLc*afO`LN_#_U&h+rqi
56167 z3<~ZD`UJhvccbqLd;mAYgUW>v1fr*+rx1?`Yyt~dBjoa>V~^-<L9ak5kVp4N_X`qf
56171 z(aF)&x1dK(;^5zn=0x{W;2ZfyXzLCCFwA3$zZ-1<i1=IlCwvK%)i95K{wn{Fzr>%9
56172 z3h`&6Lcr5u9uEEtoIA-Mk9rpMjDHz$k>Nq*qUFDcx)*g1@jU+={|wk3$mJ695c0?Q
56173 zcD^<0YSdM}p5_vO33)&-QLp%V{&dtp)Bt}PYG?R)eCk`Umrmk{TIVP8FH(qdMmhOb
56174 zK9^5~dEAM5!}kEPqV}S;qtsBg!aT;Jw)jNU!>Hvbe$*0xA2lE5(F@17qh_OS@b-E8
56176 zdEN+bBx)XN{wPBf^%m&ZNgTZ0sJy6g3cMa(Pn0)G92Fntu^PpVIs?%0-tvxkCMbJh
56177 z9y7eXsCeE}-Ud&~dkB#7mcu+Q!|@~DUEV_EyU2IES-=g32jl{M6OqBl;4wo>Q@jbV
56178 zqmau-$iu{2;Pvy)M&6IS&pSo47jPPRP`yZbr+CYe*CMa+mZ3JmbMUBd!F_ZR2lQ*;
56179 z-JlS8KJq;8EKkK#gn0ycVxAw+z~k}ANEej1VIKD*-|`fZFC%v%HIYvNn#heXk86=n
56181 z52_bkWPjua_cr%-<ObAkMs`Q~FzT)3lQ`ld9gzzZxTD<B$iYZsWci04+@nZU<OIMM
56182 zDTz$vp5~s8<b`=`MDilbxgqXru9^E1VCL?Gc`R^W!nx15n_L-`HNXnP19IU`MJgiR
56185 z9T5V!BVLDjtVM+2-2I5%2rZOnfK7%6<Pvd*TOJ{d5F+M8Jc?L_+5^aC6nTun*>e#y
56189 zAUk->oDI$tX9A<%5B=DOz00}GndhA2oMGQ%-{W-A><RN(<M=oM_7r;x@fbvC!Kn8n
56190 zPkd%MI?ic`O2$6NKF5itSrFzk!Vz%>*fzEev57;l-(l4If+s%R>{lEK`vv<MTLERA
56193 zBHO~|urbmB<u%Q(!h8nFBesjoBl8f;$Q|-IM!ipT;^QTsknhN4@;=FdGEehdn2(;k
56194 z!{)JeSUbl|J|m~es~GiO&52JUIZECoFOdDLW!5rzn&wj<`mo-TJ>)8Dnl+7hl5~-F
56196 zL)oJFNtn-h)+VWC@mM^>7;BaF0HfYFIPr0^7Ff?&H(A$-Jz|eFLGx&skCrvg+9y_t
56200 zzssHYa0n}Lp3o5*{4#!-$f8;Lp%4C&kQ2kW5BDK<5+Z_+QGcI0@p*{9Csg<={3Wh~
56202 z3Y<k<r=tuX6MhcAfuF*?*c>*8+iA9b?1N)0)>GC$v7TWBR)e{L%{152Y@xZ1W-HD0
56206 z^6|1e**-dhBzzG6bNqYw-xFLyMHCS2L=Rl09}#~-JR%+w|3JKDX~|;J%#L73vDNGb
56210 z{2$@EZ^r)_|7WZP-^RBwC%%LK5NpMMgzsT(FhBkSYsY_#{}}7Qe}exM^TG^_z<!B{
56211 zBzV{-2tLfKPZAO$AL}N{iE^x;`UecK&r<)S2R1-h2s`#U!a=lPgG4LL<jZgm`V=-y
56212 ze46+b><aO##IIt%OMHg-b?hqfS>m(U?-9R6d;yy#zDSH={|_-iOkm%Dd&X~LcZlC3
56213 zeh-@`ZV+?WpAxr;+t_{Lo5VM<zl8hOA{HQ)h$ZY>#J7lVW6N-#`VRKD#CM7BV&5UY
56214 zM|=-^M0}svz`jdt5}Vlfi7n#auqVV1h#z7>;wAAC`&Z&WiJxOHh+h!Dz<x;lHw(vh
56216 z;A!kwc04YF^)?01g69A!u4L!33-DZaA-fP)vy0eecp<xo-Gl33PcV=D9Dj|!BS;v-
56217 zco@MfxVlOR12txZo9H4=!(H_}F-VNSNL+>7ZxQow_kBP-B-SC1=fo~?K)fd2LA-p3
56218 zR>I0+saPc}1Iq$;eK)I%b(+-&>((G^gf#){$qm*m);#Mj>jCQ_YaLd(=d4}U0qZsE
56219 z9Z8aWGM<!>S)__AAq}L3w3BYKi#!dh>v?!G7$GOftK<#x7OeSq$p_>^a-G~FpOd@f
56220 z0X$8-W0R13JX^xfVyoCCYy&)N*x7D&7yC53kA0p!$R2^Gn5*m?>|5-4_FeV^_Ct8K
56227 zSsSuV$l8%@M%IaJE3z(R-N?2h>p`{ySue7k$oi1&LiQ8Lo<jDM$aW)p7TM1r`vqi&
56228 zko_XEUq<$Kkex#Icagn{>@{SsBl`!)-bD5fk)1*IkC45E>>ndLhwPsqdmGtrAbSVd
56230 zWDk%%MD}OMqIrV<7qV}V{W-F4k^Kd-|BdWBWd8@*|2?(@hAfUOfov4A(Z~vrjX@U8
56231 zM<Nzk5wdZ}#v_a7D}m-Kf#xfL<|~nctQgr;WYPR2(EKFO{3Ou)B+&dM(EKFOyd-qU
56235 zBa7w*@e^cUA^THg(R?A$d?AjI4INt+y1rRxePOYY<sch@EEid{{=gph*rIs>PZ-A*
56236 z%?}ouA1pLKSZIE*(EMPb`N2Z-gGBR|MDvwI^OZz#vPoo7du-Gm8_g%S1lcrX(~*@S
56237 zn}Mtx*-T`!kVWexTY+p2vPxvpd}E_^j*aFK`*@whv7ck#!CqtUaaf^oA)bII;z@Wi
56238 zo{i_?d3Zjq!qs>ouEC3NEnbY5;H7vuUV-az18&5t@fzHW*Wwnu4zI^;coS~Nn{g-J
56239 zio0+(-i~|l4%~}(!Y;K7{{-y*K8bhZXYtSAU%-d(FXCUue+PDszl&eRui@A6KfrI|
56241 z{%`mXV2Aqeuroiv5AmPDQ|Eu-Z}6YvZ}DH?|Bb)H{|EnH*d*ZuK|~SJu)B{TghVXt
56242 znB(BNG=WGYl89s?g%A^|gqkQMG(-`hC5nks*n^i56+|UGvsMvC!bH>%wL~-Qwa*a!
56243 z!~pR*czXQ};sWuT#6@C=7$?3;e2thSeutPMeixo+{||AE_&V(Gr-|Puz5!3Re@grr
56244 z@#n-n;xCB%#9tBt;;-l@-M@ur-M=Tc;aT@b#2)eQ#D5U`#E;>*_b0?F;-|zR@iXEG
56249 z^?+D~UFZ{Hi?v7uS@+?7v%-1=BXt1d@|JiHdjlSf!3HZ4_6Ks-GuAds$x_2ELC-R=
56250 ztgugTvAnEPuv0k8>StYGy<{E2eqk80Hvm3|5v*D)jphvCQ#99Na^O$W^-o~};7?$D
56251 zx_->jz>W0pv6^UZrn!Ya-iE~ix6?=ZXzroUs>Ng!lTy0gOtnKE(X9!ocIbNZG1Kkz
56253 zPjd{-v`U}bO#3v`=eDA#Qt2M4<G+rW>iyU09(}aWDf;*)F&)ifI=ee`b`*b><`&e>
56254 zpVIB8(40XZPocS*K0<LLJtno-2+gB(?jtmh(jzcJ^C*2*3l#(Tk{;Xtr1>??J2ZcT
56255 z<~^DZ=`lGT4LWz)r->fJPI^q5>2}(%MEVn?j&zbgrupCLUjBn-Dz;yuv;GwMUvyNz
56257 z%%ZQ!=;QOCEy_kg%hY*MFuE-I>Z5e(8WJ4)ldsVEuP_43#<rngEF;SdbHKu?$2cq-
56263 zihTy_!_Hy9&hEv&ik-zii#1}Gv9Dl$><iczu`gj?#wM`e#(oVOBX5&GAb&*8lMCb`
56266 z+!b=MJS-nmVFj2PE5wR0Emn+`U}ac2R)OiUO3VoJ$%Hk)y{85HJT`<4!`vCgzJ^Vb
56267 zQc_0#3Hc534*5;;Ps#t6{4?^;$^Vc13-T|?zaqay{x$hG<hRMcCBH*{m;4_2ee&<f
56268 zzbF5J{73Si$bTmPh5T3Y-^e}kC*&*gr{p2|GxCW1Px3YSUu+M23O6x3tp0yM{18_3
56269 zNSsG}1OGAcjtJp<#D5e2gKrSuA@1OASo!woweOq6-w_MM8nFc{<v&3AM>unn_#&*D
56271 zG3*3T%h`F<@3PntP`KnTsNbf-v(0sU8lE-o;P>F!Vg-K)tJjaH-v#1Fu=3nxtkmBk
56273 z|FUsdlVjO&?0B{q)@A9(D{~gTD(ABE*(!DcTg@({R%Xr-Rt>$*5-YHF&cQk;CFC$N
56275 zSo`qI5YIYdg-C)WCV4CwvBXlaR4gqiA{@{z_17dhnFlePqhsI@EBF(FM+o2(cuK6n
56276 z^VSRe2;af?SmpRWA;Lq%GdzU9BG&O&aQqF_-_tQHz|3C$IEFP+@No=JSWoE~Ua<C9
56278 zF@6PFe8&nvo&>bK4B79%6YXO-x=C`Oop{JdMk+`Z{Tn?kSxy>B3uz;rq=)PxcgY^|
56282 zfxQR#52z;qgc#0Fho9k2kADqp2jJ5HIEH@{@Y_)TEZAkR-vaz6)Gq-Zz<IeaOMU=&
56283 z2|tSgnQ*KLK>fuc2>5pZ^n<}UY#X2z9<URrnGaFIiivO0fAcv@t*Uq-+<8EyRzNs%
56286 z-=WrIh=`ADG_q0DS`T&v{X9zBv&U;XZH2U@*LtvgY7M9Ji>CcE{%<?S7M>s|dkOV-
56288 zf%;DYZ=fCz_J?pS-G%xQpb`)Zfb%fw&igZ{%i(%~YYO`jhLb;pQA@={z-iP7!ZE5I
56289 zLtiDSSUgpyo*Ll@pXO-#cp}Y7G$&JMQJ){2J4DxiLLWEKTt%NXLh~ry8g(V5lIb+>
56291 z7y**1?}FXMSX6e@CqidQjVP6QG;QPQPdpW}6oHLFBOilCK87B70%C#Dfk>#4+NDP-
56292 z8Xc$Nj;2Q{njWcWYNX(JBF#xOQzNxYkJK(bQoGbh!Epo4RrFaSG>_7)$^L)#-UhCz
56293 zYt0wl9|-~?#t11QLOymr2q7RwNRc8SVhCRW5fS++A|ghLh=_<3F~=gtNHIi2N-3q3
56296 zYSUV;Hm&t))2cind%=2bAFjYd!OA28kHVwDy6qr-2&@qj@S}Jlo&?qvDR?UWE}n*G
56298 zt%z1ayF$~@%4p@Z>ogs(;8nnK-=Q^<&vX9`92EXL@K8f>5d^q+=YKmN81Q>{(cEah
56300 zdH{VNJ%k=g-%sB|_oKf<_owd#2p32XrXQdyKnMVR-Ua-ydf<Nz01xarwdN=NuAViY
56301 zYk;~(LV8`K&qaD#v#;-rtod25y(|RySz9UJiu?MG$1Bgu7xXFv@x)fpKf(S5N6^2=
56302 zQM3X5GxSf<e?)7s32X#-E8n4av2pBw0Ke-0#-3n*femASiTycRi>g7+zXKl5Z_s;m
56303 z8QqG$o9<2DM)v_8f-QX$eLL-UAoUjAfxeOU&!9h^)Ljv>H$&*JUwf2aVqb&4bpXF|
56305 zU_JK&wL!V49F0WN(L#j!pcQD-TB;XB7&CR-L$G3a{XuKDh&T1x)FS`_z~wG{1n4;U
56310 zuvn-Q)(P8$eTX$@LfFlDE*$0}!pB?(;d8Dh*AGyKgp-_6;R0ty1e|iNE!UBJD+i}t
56311 z_>$8rvf+$zo^fV5OI#Y40jM=13r>@W#p&Zb;EZ!7Idhz4K-GvCoC;1Yr<v2q>E}G;
56313 zNy09gM7_&VYQ4)-+`B78QoJisQn4#n>a?p&+ULfSH0-LAbnfbuN_Rbwj<_XDCnZCY
56315 z_d*YYG~J`wZO)^|UF-4Cz0TvQG+$)xG4F}Fw|m;T4|ocsWg-Vpxk%ut^h|Ug^UQXi
56318 zaC4Fg+@vx;S3(x!s*q*61;~osVq|*BylaJPgRI3ZUDofGFB^BqTxZ-HU0=GD$!6VZ
56319 zc4O{#VlVeDaj^TaTdP~&ZU?uK-BR}_;zIXXw@LREw?&D??qGL;xK7HDI7qn?u~a7U
56320 zbC-+Tr6J-0X}ly-nk7k<7P%{>I`NpaUXm;AkZ7cX?umkV>A3W{#2{UkG<(>%XA4$5
56323 zTkLk)?X_F6J9&4W7~5Sgw%c95yKDEu-IKeQ!~$<yvD}+*8~670R(WT57kO8T6TO?=
56325 zOh{h%EVx^`G29*9xDsc%rMpD#?C$R-b62^AxTi@x-Sgx!_p5THd$n7Zdy6E9KknY^
56327 zf)MEg>4c;}5G$P%q<J8M91o_T*n<#gJ-h`q9tuITpi3|)7!^Dd%pqF-q)(#2!Y5ZC
56328 z_9+u}_|%C8fn~_`=@b}z9*D+$o{63d9*UL)PX+TnFNAh-8&?~l+|^mA6!!`fh1qhh
56330 z*M8SgQM`CTl;t+zI^{O!`a*(;E!}9MA_-HZlMrG@iMLoHQ2^~s5Y<c6Vt+}oSS6`&
56331 z6A`_V21%zlO)@0TlRS3wB_2p-h{uwb?zZBq?rd>2G41X}EV>8tG50w4OmT~Qp<6hg
56333 znDxo$GkmndYM%ySi%&N{-scg&$Y)B}>$5C;BxeYp@dx?iashu??k8N3$B1YGPuB)P
56334 zkRVo`DPqZsMIu4DYp0-A94BZK`O5X8aCwXCkYGxjDR?0+6eWvt<o%*jp`%zUl!)s@
56335 zdU3m`Nz^U$cYQ2Wi3dav#ABif@w8~pbw-#bUJ~ZHS-T=`POeNhDbUUU;Z?U7SHdmb
56338 zug#~IH|jIWd*Sn3P)s-qDhLVT@3TUr$?XIU#8p8jQ7srET8Lh`n0O`+5IpA71T%b=
56339 zsEjY-`^w`4FZszrTYiqHhF|LH$JYzl{3f9nzgyJGf8ZL)pKwhT1`Ff(bHYpk;+iX9
56342 z`EDVu4%`X1c<zi_7I(?5$W7-e=2^Ja^X%L@cwDzZo~PS5&)@AiFWhaJm%z*9<pVsg
56345 zi6v2%AXQW($Q5Y#*1|@<lSn5pi0TE+q7Ffiu!}Dh4e|p-<3NL-3!aLWfp*&PV_cmD
56346 z^RAvk3~22WPPS_-&{jLw0-?aQTsX@qa;@c*ySBOZ11%pFDmm4zQ=BH(7o1M9rPxuJ
56347 zD3%CUI0IsT&WKpWc`8m5=K+MC6<_5ni>tYo;ubDT+{-1zkGNjqXWRg8BsY<p#Vz1o
56348 zMYNnk?<P*2cQ0pvGe#&m(?lY`erxYhu9O=<WOHMP5^g$C$<61Macj7(+&-d_J3@4E
56351 zEdFz#wf*c^k*_G6zbr}?*obljqwF+MDLY4`7c~i-Mco2VcCqLITPvDi*8uHA1VOG$
56352 z!4$jMm0)+ddb0;z6|M<_7wl12HT#)sF?-Ing8kC9fn)93$#HNU;s`i0P7p`MN#>{#
56353 zEjxAhBesTZU^laSc%JNsydd^d_B;pU*l`5BSdN^R!BO%GIEkEWP6?-y)5t65bn$9A
56354 z!+c-P6W~Fu@Y=WxUO$)159iAGbKDT#C^w!r#m(X;bBhEBS0`ZdUJ#btdcu+0At1Pe
56355 z0&hYhP!RrviaXBF;XW565NQH6kq0#SD!-JwEU4hw04=TtTHGQS;_C&EdCr0vqF3;e
56359 z-A1t4{p?Zp6j#rF!ENGL5?&lfVvHl<c60o>4>&3!n3G0KbMlBKQcpQoc?hSPZ_R1p
56360 zJMox&De%<2IlV+2=Mg`Er{Kr%5`ZSFiA>Hjem-XbXmK&n;tGB%QONJ((t!3h@F#hl
56361 zKx?(mY=MQqfj1-&^Bw~&t#g(NBAxw6Jmt*@G`yG2N`b*SUeN5EA?Oi2By0swiFW5a
56363 z8rn6nYe8lybC$_uN?EEbU#68c$hu{ZWK*)`-HhD=PVjEO-7&i}cNg#0?{3-M&&k|9
56365 z&HEG(n2(OI^J(Nd`SkGod`1X?&om+Tc}Xa_F}z4QlSq_{h-|q((Bgce5@=_mJeKH^
56366 zXA#5P8lbhgJ1mG<VntrUXUGjeOEo*}__7^beh5Ea-pbG7PVVsJ7wz!p>vn|m>-inr
56367 zMgAbqup@y#z9W<Wd`CWiSzyC!-k}jV@2C`b?x+_8?PwFk?&uX{?06t3*ztJB^o~Vm
56369 z-d3`G-%e$Rzn#ySd0YE-!`t2L<hLKObKaifynK6^Tj$GQm--6WdS5@Tt#1ss-8Yjv
56372 zvLjNRxJ0g#C!rw>oX12nx6sL-=y3`s9y%ouPl<W1)+v*ZIpy>1oHTraQzc*SRL@sB
56374 z_LT3b-_y0{;hxDoOMbR~grBdU$}hvO$gk3`*{{!U%x~r$<Q>*Kl6QjMiGL^i9nCv6
56375 z@3g-&^v=XP3;ve=&i*ogrGF}?!9U+$>)+tt?f=Ms%72+Nw3oqoyjQT-Z*R=r%)P~&
56376 znZ0_>%e^gJ+r9mJ$M?<#U;z$XuK+1GI3SoC7myH;6L6JV7*NaA26S-i0)`zQ1U%&q
56378 z?Y>}bJrdZnT@g64J&w1yJ)N-Fo=Z4vFCoO+b%fvc+U+gdySEQ*AKN||xDv$jwe=MQ
56380 z_sRAt_occt?aSY%-Pf?Md*7pdQ~Q=(x`P?)gkV9iUvNxtW^l2~gJ3;d9o)h$4(<;g
56381 z51!qR?RQ{T?3c0|_6M^&_b2Sn*?-k#Vt*}rXnzO$@%~}<%>Jh?bNd(BFGH+3wjpc|
56385 zgggs*alqyP_kjFB<bm`9g$F7QG#%(YFnZwmffa?FLaYc-#3|H@Qbo0*O);o=qL>f0
56386 z2z3he3RSpxh9-yRg_eibhjxWN44rfd3SDxERoW^ErLR(@%y7w27P%BCD_zQ!&B{LI
56387 zm~tizaj6YsxwM5zT>8U;!s5fST}Hz+E>mGOE-%8`*_L5LY{#$(wj^wU?H_K*R)sq|
56388 z6tUCTdEqkl)o>-dIy}{(oZaG3&F*DC3eRUh3)ea{u@@XVIW&g>4vQlSZ{YZbcRP%5
56389 z!X2J+k{xC_Ih@k)M-Iyz{WeQZ(>4~TdmF)du+57zu`Pfzw=Hs8;<l`91>3G})9-DU
56391 zhWss<<zFLo>K8|wkrfbdFy}Zz&bt*t19Q(HpFX1G6PmZsw-9R}1r8uh{x-=L$O9jt
56393 zEB>fIvH{4@UO*2-13@|nC7*TfL-zqnFd7VM+mG%C`46B6z*QxxL@a=eg@LQ#XgIhU
56395 zPYRj>YD+~^L8&Y>i`-F<o&tG_&?1Bhr1gDd3y|0ngaM@XGHB~p=&t~uAEF<EvXy8h
56396 zD0K_H1!~iydeD{uHGs0!Xf;TGgnk5KAlV@P6#W$BY(yJD&d<=#sNe53k-Oy4&q1Bd
56397 zXfvqo3-k-XNekKna(;_`i);cKa39$SwBQHO;*aQ$<nDO%C(w(Z(Vqe37xWi$UpzVt
56398 z@;^i$0?H%w5&4Xne1Z!!<$sX7;nByS#V6<!K>u^}&jEb`od7lb1^O4D-M>WtlH380
56399 z{uSVP3Y`Kx{1*K!$T@?~fUC3UEXX;J&I8IKx(HhNC-k2H{RR30<o_M|J5U?YHgFZ_
56401 zR)qYmksT;&kJ%#|frhdG<t^+jPzq=&pg3ZVh$Yb1?SL-9+z~sVxl+UeXs-vd0cbG!
56403 zaCINH55y5z1gJrUsQ~>Db_nz(4NF6|0$Y#?u4Z9b2oqR^9FQj$%LOf-#m<7Z@~}LR
56404 zA6N-;w>fqmPztaDaJ2+00XeT>*FX*BSUKS5I(D7hX^!0>_nBiA<Suh^Hvq6Dw?HX9
56409 zgtUQHhy`f}0mTNl0eLpzn*hZYw*~3V_-1OaHv{C{f^PwICe8%(t@u{N3iraj5GJsf
56411 z&<T)}Pv;{R<S+3NYhY)E<c@8+2-Ga4OOZ{$>Ux4wa=M({u}yy)q<twHj3U3Lk-t9v
56412 zkN-HX1q9gu{+I}kFsT%orXCOhUfz7@uTvHvYz2SJ*OYB*f&5^AcYEsER_c%Zwt>n|
56414 zN&ZTfM*WI*1Nn{%(63brjY`{7V{G-BcV|FDksXK=Xkk03VI$xI19{0DR^%QKKv^wM
56415 zw!g}$4WN<#SyU?)Yh!|d^lFX`6t`Qc5k#rq@NTBsWFQWp9-QKX<O-vnv(rIp1E6i8
56419 zf$I#w3pqm$RBPDUxNbxk6sK0;n+up-dxUz6EvN|xb4$(}i`pka&MLWkVhiZg28tJq
56420 zng<3oFILnTlWmftwMuaTd~N_`H&E?uphk$~-3io9*04%rg0S6)o7LGRD5*!NIk2Y2
56422 zEJ{;W+aT-Q3Ua(^>y;#0Q#(4)wb8~Yu1IMkbJ|kcXF>IuPD!*4B_T9woK`uor^bt{
56425 z8PPWx(Ko%OW3SsnsNRv^ZP&irQQx<|zHYnr{nhoY)OWkr*KO9mzq-DK`p$a&ok4xy
56428 z{B1Si&%uO0rU`#<nefLj;m_WLzs)B6*_rTXYr@}F6aH*X_}gm2-zF3Om?r#~%9E-5
56431 z$8^3;_0e=bP3Ond-k8dVX?|1tZ8{&O@@`t*hC);l3(4K_H`n}NV%<06YumxP$@m+w
56432 z?wfJW&FgY*UYB$8x}0pVrZN7;S@(@t_szH*7kKW*-(1#x<CuKgX7r6%ca2zgZG8(4
56433 zudk7_=1kp}xCtm9zNTz5p}3gkaWTuoG0Vd-%R`t^984(oX8hQj@ndhskG&Z`_GYcy
56435 znpw>>vzk$}dQh`^P_ue4vr?E@DJ!!)R%Uq^5LqS6<j}!PT1;it-mH|pSt+JjDW+K|
56437 zGq};L)ONEx+s*Q9hUls34B}?<MKhZn%xqMx%tp-0Y%~~Vecx!-)6Hf)vmx4T$}<hZ
56439 zXjbz^vzj+TX3(_e?PfJ^H>-KO*}QKzt9iRw&6~|?-fUL$W{5<Y*1XxQX0}<)Y=|71
56440 z*334mnQc}x*Gzi3CN<+m-UUM4%XmZGwnp7*M0I(cchfrRtGrAjD(5woVMHZfQ#Tt?
56441 z9bQx4@L+Gm*`{?=^VaN*II~$teU*2M5tRes!QO~7V;<gc_J#+h5ob2*sOGIPjd)-f
56442 zQ8|#-m_|GpxAumIH?84Dtuc(KE|9+AMy+i!q7smLX-4&KHln&f_@x=u`=$oes0Ldj
56446 z9H0^f!xknKTbNL6VM4Km3B?vB6kC{3Y{8*c1BY4-9BMUisMWxsRs)Ax4IFAUXi%#`
56447 zgIWz5)N0V6R)Yq$8Z@ZYK%rIxg<1_1YBf-()xe-u1A|%(3~Dv3pjN{QYBd;8tHFR;
56451 zZiZm1uQ&5%y!s-bzQ!A=Hug0fpc?x|v$m`o2XlUnN5_8MT);dKm~Uhc^^NSIzL7oD
56452 zH?oKNM)pwO$k^A|43!eQb@B`IOJKec6Y3i=p}r9l>KiekzLBv9vfeK-=K+WMMmW?r
56456 zgz6y^s)tOd9x|bN$b{-46RL+eR1a~e9^z0v#G!hKL-i1c>LCrPhcu`j(x7@sgX$p)
56457 z)k74jhbUAJF{mD5P(8GQ>Y)`>4;fHBM3ME+B(c|Y^!L*LHN7>~&^K*vgX-=2yTh;Y
56458 zIzaUnes|5-b0VOg)0=rR_M9A`cIJ(&7<(el5Ppqy+`)+Yrf=)-FTcwB7SzLm-?cOL
56459 zoCv7rL_qm<fZC)teKYn?oFV)gTZy-fs4kGXFt!pbBPs{#PjMjpGL8BMzng8$uLIPo
56460 zz3H2=F9Y+sjqMD}hzj$%aj4ggL%nVs>UHB#uN#MY-8j_i#-U!fv6sbIM>Xe{2KBmW
56461 zP_LT?^}1<LubT$-x@l0an+El|Q7GD@P_##(XpchC9)+Sk3PpPqiuNcJ?J+3YV^Flm
56462 zplFXl(H?`MJqAU442t$vP_(y#qP-Oq?X93_Zv{nrD=6AqLD8N8MSBJm?HN$CXF$=O
56463 z0Y!TT6zw-c(S9Qo?KeWvej^m^w?ol>I~47=L(zUS6zw-d(Vh)Od$t+c)2X>&Lh;*J
56464 zvft2Ge{o{U2@Knf?-9T-f(6A078D~`P>f(fF@gof2o@A0SWt{$K{3J}iV^lujIf7d
56465 zggq1^?4cN855)+3C`Q;rF~S~-5%y4wU_vp13B?E|6eE~Wj9@}Bf(gY4CKMx>P>f(g
56470 zp@?V?MMQfjA~K<f$b=#y6N-pTC?YbUh{%K@A`^;;Oei8Up@_(YA|eh&L>!8UI1~|a
56472 zBBD@4M4^a?LJ<*#A|eJwL=1|E7!(mPC?aA|M8u$oh(Qt23W|tUP(-wXBBB)(5v`zz
56473 zXaz+?1{4t)P()-v5s?8!#Enoy+z3U)jZj3~4n@T6P(<7eMa0ceL}dRSL}dIP<b&TM
56475 zVAhx&f>~Lx>KP^IB;W!ePjN@5K`vzbQ}=ZAk@2sJv8M=zKDY9J%M0yVd$-9dJsfjH
56476 zFq+Cq@4bl5ue<V)@d#Y;-tFl91RXcNf-Xr7;7a2bk;^pNOTLQ)fAQ+tMsM5_Tq|Q%
56480 zP;S?<(H}3v8xV|cy>BLfMSo1a-{loY9r!FWWaBiW(?UV(**Z;+vtrS(t&!VWy%IqQ
56481 z1-Fyvwa`*;{8;-itDPM2RHucv#Eh516<+85A>UrxRCWh{*eBdCi=24`Q#2^D5W1pQ
56483 zt{|s0G&eLL^eXww0W=%UMo{!DdKTof43#ShWm#yWQXZ-Z?NWvV%CIsmG&}SO_!b#j
56484 z5;}*V3TFfjS0h;Ha|H|87-|u^po|O6Raz+3VGd!Vp{!7i(h;#%&W9PoUW7G=TPvT1
56488 zd7j^ZF|wfE1BHPRBu|YZ-`s>@|45!5MZN6^qq|b4N7;t1C>z6QQKQPPFo&q=&^cv^
56494 zViVneF!tb7j6OE!;ER~XSj&U`F`Wl9VjaPiu7k-3A4Crw%sE&ZJ$_Jsuqk@_V0SFA
56496 z?ZM9IWtB8`EV4UxAhzz{K#Zd*Cc-<iI%*)c9kGrbKBPHReJJrzPVAFIt%v##*&Jd6
56497 z>iD6)L!+^ShYW{W4mlt4ietnPh(p}i;qt?EaZ87v9G;7tKHPD5D6ZqM|KXTJBXL1-
56498 zF^8VUrN!kQnvE-stBf6u<HmUbS+l0zC5V#mkp%HhR0d-5O@JuiHW<X@8~jk}Eqo~T
56500 z_`0~3!}Ex391=Hpcq!f{)+Y98>;m9nJXROmaBw-cEA|265I=OpaK!h>$l;)PfvPiR
56501 zC@MiU9G4xB9brb)Mb4=v4#!3Z#oHYb93GBeIouUbo|9%vjkA~<W4X~79{}8bgV-m<
56502 zB^4f-I<k^fmo$*zkl>Xxt&k;KhY6CUVF5?`LSM$)#S`(e_~7_hWXqxSIMLz6!#M|Y
56504 zcBuKVUwnA@<4BQ;6{k}b9gd7oJ)$`B_(<ZBxx-kzJZ?Uod=Hfc@&W`J>V%S~rtLs?
56505 zAUL`}p7Vuuk|%!A9jSA@ct_e37)Py-Iwx?CdL0cp(w`tZns78bA>?T3QNxjug!rQ^
56507 zNSa8}CSpnHNvcG<nD&^#r23@Jq~WB3`26_tn8z`*2Ok`Kim;PjCdZ|yl5LZ-QZkcz
56508 zliA6WNe`2~l9!T@q>1F>B-^Cf<jUk=rKMs(>8O;Xl%!Orw5Qmn5GlUNP02mUkElBW
56511 zB;Vn={@tBIx(G2nkLVAdM)cp-&Lett8qx2}&LdiX8j<_zc|^b;u%-M}Cbi;WQ7dT&
56512 z>OKe;1hPK_h=m}ah&u=<q5uI!B0wNd6MO>d_$v@F<X=F*(5>iJ;J2`8Y!b1-ih#_4
56513 zQ#o+tx5#tg(f!TZ*@OSMRtBfa;Hcy3S%oMM)Di-G78DIdLqQygMuGSsdJx3NsF^H4
56515 zDXdiAlt(F3DdOaS{Rt@<q0f?^rW7Wt_75D8r1&TI1P|<=4r$&$b|4^mK1G-OFePSx
56516 z-2n$gl+u%$^{)Kg@FVd@Z4>%Z9;6n%%XpVKB1<qNl%~|Air!6qH!s!q-S&3}Q^VhV
56520 zo)eFvY0(wYjp^N))|t-7YL72x*rp|<H=UR~@ggNv#Z~E5jVe!7r)n^z?O5B1tP{m5
56523 zyicZ{%*#-mEIU~nQXLc%)E3ellpZt?(t9i~BjIHG$-xZu$;T&WL3{b{4ucUW%(TnO
56524 zRI87xGeud&nSNP%wdQznrYfr?Gd-(cU3<JDvmk3cQ>*UGntgZtnEsgE@rKO$%+BMT
56527 zkEJahpFV}0tUkp$C3#nQjCQj1_|nP#lVi%UP@Dbp%Bk><5YqZE(KIv-NH}SOR{dBU
56529 za8D5L!gm2p*+Aa_;xu|1XiXZv5b-2pPVJbSnOqd_e|RoAAUQTJokaC`ES{A$881Hk
56531 zDTxd~R^O9BT9wVz8x~h>iyieg#8nIP7ImuOs+}R<QHfD+AH;sI&5?qDQD-4z>+BC{
56534 z^3!vt8c$bdW2ZV#H)gX^JX2?nO`c3U<)^ManR9AT-FCA0)R?+IM{}k&r~ORld*eA1
56535 z*~>XK@7d-IWsBdN&B1aOv;A`%_9rC7CoBf~1vQ<T3QP^+21W+;1WX5c2a4b0X2;}6
56536 z108}Y5zo^B?-AMkz}q&2wVaN5PySxG%1)iA&Q^`8rn1MfpP!!3re(i;kCE+=Ey)^J
56539 z+<kWYM1h)pe*0AKX>*Fsl$_D$=*~2s=?(A<H0(>?R}k2|PrI-Fz1p1mGb3lFayrf|
56541 zpWm4`osZ<(oz<L+IoEz}FmEYel<#*o_MCOTDnI?4Q+`3dHn-(0Esve&mAiQMWu9$r
56543 zYqAw`!s4VTcRX?Iq&#=}q~e6#$@ml8gwn*x<oZ+I=bg^W@{-SopHDxTna>1$_dj2B
56544 zUY{*`FW`Kux-Q#4KlYU3{NVYCyqxok1vV!O^0V?w@(l$<fnRp)d+`Oa>W=KJ{MK^=
56545 z@f!c$0Pmoc!!P5j{U51^4rlv63sCwm1SFp<+e<q)er_h-Hoo=T3K*fc{ugOD=_lZn
56551 z!nVQzFjCv7S-_}Sz^Pfls9C^~)wiO)MZK5FfjT{woCTbk1)Q1%jG6_EngxuS1&o>n
56553 zt0GGhl6^pYz(3wH-sy1o`!7ovDpB;)XkA`n{&@b(5%v+;VLe#CB<3gQEA!;hUC|Bi
56555 z5_my*F{h}%X!K%9(Nxik3-K2#E?Hi3yjXupa>@TfTT#sW0q@5Y1-<X|zVt%I#r8|8
56557 zWbv}~h0=@j#iC;0BBVIHIQc?F5u-S#xU`5}tS@dt!b(G~wqG4CO}zT->QYH>X>Ms*
56558 zY262m4@9M%9|U|5Uoukqp!8YEROyQkay}?4S-N8LLH!5aCAF7ru5ho&uS9+@^1<^f
56560 zS!&eR*w^Hj6E&rpYE9cU)wN8`;I)!#)t7TLPc-vLc**RqCN$Y4D_3d18otcXl>Tb|
56561 zGFM~Jv>d95%Zw{3PAtxeECYVuTyF0<?{iAhYtr;-MoGU(Gp$)Z6dzX+*BI9w_wZ0w
56564 ztJf9j4CN|qt9GzFLpz~eEUPRpDz7YSDsL|DD<8XIbAu?Kx#4#swyftma-CK7=(^;3
56566 zH#%=Tygqbe>c-1!hU*j87p}EvEw#?SvcA@LZS+@8*QT#6lTTQvQwA_pjjDnC-$iQ?
56569 zH_|tPcoQ91W;&D31oXG)VAV<?2}YOEeJDT4<v-kZhk}5wS@2vCaO5nK2iAV)5MaBJ
56572 zouQ(wVz6>p*HZDMV!ra3uJ1#O51lHPfLtx>MnClWP;rZ)oBlBQ!@OG}-SUU!AJ*Rr
56573 zxM}-g*M|>p#eX<?lY1-Y!=*~wo8Gs|Dv7fXb+Vf?HyUp$D}8VH-srkH9^7<e_-67A
56574 z>l;sQ=H8gSdG*H1&6*J8fVYluvkf_-e_r*tYEJ*sKr=X=tvy$GPItE8ocNr7R*gFS
56579 zuCCs9xr|jB-FsO*=NfhghCJ)~H`H0z<T)<u?#7U(UE_ARJ<h_n;ZFDt+!^QK1kT3=
56582 zwCD-_L;W+ow|=q8GO97!F<Pp!j;^e7it36EijGq`MfXHMidu@!iY``3qbH+ZBuP^m
56583 zQ@ZsDRqCqvq=1xXDG&9ED$lCmTl0Z2LC!&5fdPRpf~*76gF=E50-Xa}0{isERU=hX
56585 zMff0)<pdxtLdd5UVh}LI4UvGf2Le{U$WCMzpvVyN-kcBO3*x;9xju~o0Yxr?fFUIy
56586 zU`QzlD53!YMXrK?A~!%lkqYF)wfkJJ?qV6;v!ZM=O4($L=1g-2Hu(!$3yA-Y_IH3X
56587 zPn!qn1sYf-(Ef?`Pt;vT;eYCW{vL1pkL~B0Uw$gPHK#78Ji9E%Hz%@6d4_cctI9s(
56591 zYaZ218D7*Z-(}pI(EC+&RXxy0Rz0m+@Gh1+RaASc<(?I-$f+u6HM3e&6;$nC9jnjH
56594 z^+5IGTO(CHcS7zY-f+61)5Yu5da)tFkbP^iYVuCqozAKkcOKk%cB`f;t~#r_q$;c0
56595 zP~Cb%a-&1ntn0los2kBu-ID1o3|@v1{lnYJ+sV>r9#=i4Wt|??9?P=f|4(Qk?cYTU
56596 z-TuSZO(dq#)>cm>rqL)&qf?khqcDw5VH%ynG#Z6zGz!z`6sFPEJRsKE6ErbMyRAJ(
56598 zLv(Ep4<Tnj43@DVejoV&#MeMT5iK=ue+_~q^0y$+k-rCFBlV2N3bjLl7ePI#p;1q2
56599 zEYLmZ9>f}r0;@`ldTN7HPi;0B%`m!dhX0E8S0Mgt+Fyfs7R)wkG}|aO+bBJX4r-&G
56600 z^5FDz`f-v^t?GK}?M6erw&;4^?H)sCmffiZwZ+N#Q(dPT48ylaZciH~ZojN%8s@7-
56603 zuhnKHswdSiva(NGpLV`E`(a-dR^@QJ;!fF}x(ddJ%T-saYAbE4I;w^%xRqRBkrpex
56604 z4b}!=4J(xfZ$o%xvLVe-a7}$}q5OII%W~Rv#&yDTYUlJWjTYHCwyRo8`fHN^W28O^
56605 z*+4!OU6XxFO7^Y(DA^bPFS>t4+AIsoW?3M=1;G+|4uTbRM`gn*-cq*Ag0f{6)IAp3
56607 zUPb0Bw*zk1-^r^DzTI)BtTz6(>h|EB+B@yH$L|c@d2Hyv{rt{s4PqF%y<B5gBdWHk
56608 z@vBi8It<UMovS^8P6SoQ-bSi3YSL>8ZZoP2YP2==)#WvvHN%;erv%wZHuIEsHj(Xp
56609 zJGHvDW};^PcFrADZF8;uj(@GXwj?PosXn<mxhJVT`C;<Y+a-6>YI|!(s@v|;?gDu)
56610 znJaCqovQA?E4dqxl%CX|JfDIkjilJ62yU~hNAJeo&8(ifTXeUg`o-PGkJul1-|hY=
56611 z{G+tno_8$oKD_(vj^o|MTFa!|q-QDe6lKzUN@7a3HusL?Bb(Z#8^N_swVonp(YUKz
56615 z(YevPPSY6Km{Dt6SJPPBXsBy%Y-=34n_kPU8>*YA^{!j^*s@mnv2)|o#uv58AIm<o
56616 z{Y>z&@-zR>;yzCOEc>&oALoBo_gUA++Rq++HvMtKXDdytkGq?sO(C_pA3thJZp#07
56617 zs!7+>RD1Q~<)*%-@p?wn+~*c|^J{DB1@(TlZS^trnY9D;#h*KW?p?3{Jo595+VT39
56619 zFj7$;(xz_Hv`n|vwsqF}w!Hk3`FZ)5qA&exu6|zkc}IQx=R==A`7*ZcVcXP~S#2-B
56620 zw)=eU%aSh*&DfW%Uk=n~HM5$<^+llOn0j4v#@CWBAAcSEbz-fuzW&R(=E7E5t7DD6
56621 zHlbNp-_hLA+|}y&b>7$7){w6ozwT{*(3;qq+x)b(thKIwuzBGNi~8{|9KVp(KmU5{
56623 ze$n(*`d5W}3%}_3;?XD0Urc`S;uFsn>vsKD745C<gSF+K1bx-i;`~+bSEDuUwKXkX
56624 zpTxF=v?P4>ynUj5@vD_@Y`!5{vfJ$1#4V+50c~-gWV9GsT0SXg>1!E9Dz156&%a)N
56629 zs(e6~p(`pIFCW)c>YB@EbbY$9vghS1x|y5Eb>>ahO-U)cwCPIimG;u^D}z@amn~lx
56630 zT=%`!ul3i)xK@j6ByvrsxJ(kR8Ae*Z>F@CWHWBn<;+xKIW;(*ZtLc8!J#|0)ySDD-
56631 zdyM<(-woUo-1EC%^xgQqn0uM`_213hE54_{-}>Fky_S3Z_XodO>PYOc=umgqbrf}Q
56632 zJG33O->SbY?qYVdep~TvLzkeV_uI~Ihq`<_9)A1y-uV5Aj)`w)zJ1vh*)iK`dvEss
56634 zW=}`2rmLf8xaVnaZP!rG;(hDh&aNl-+4sGBAAUHtv&Ku+S=crAtzW11d#tnWdzMD|
56636 zJL~SI?w;?QzVG_}foI1~#m@Neq~AaNej)gUXTRszcLCiN-HzYIbW6K~zANjF>(1J5
56638 z`$qHvdI3=W@Ke5VbR6L9n`eD=%mTAOXqY8tg;-$Lm^Db-U^XD$i|s`)Y(KUi#GzOy
56640 zSDzo^Y@Cf)Q@fF@Z~`ZQzs$$^h$Sw-1qcn_iF+X!wFiJ^_N0+cJ!zz`J!8axPyc59
56641 zhg0hU+-O~ZQ|mw6Z2gCut^aVd^&f7w{=;9d9mpL#aYzEdprc3<NGF3pLsAehTSyuR
56645 zSob*nAn%^(k@f`q5Pq(!d%58GPxAv7gU^0Q9dH`(8eF<(-4oN3{zKk9$DaJ2vLDLM
56646 z4c-&~P&=R)NdATKL;FD9K>07C{D7XCp4J}*^Ht{+J$*ksJ~w*L_lMbm`hl)r0{W1F
56647 zhXa$p#NSi)jPy+Q+1*P3`fkxDx|em|;l8-f?_S}+(tW>Qa_*JikG!ASr|L`p+4g7R
56650 zh6?V_|CIBSCNwu}C7gM0rWgBB@?$`+-A}Tg*!Px8w3o{-*Yyg1j1AR<3wq^0X7(z7
56652 z{qgQ9_X+p;9S%F%`_%yp!P4NM-r@d|etqwg{^tJP-r4?<{wW{}!T+Tje^@uD^^FC!
56654 z(Rz?3pBQeU_U7ACXEa+;XEa+-XEf8X9;^qT#{JhPHCs|AHE+azi~Sa{p?2}xQs*yQ
56656 z$QIQ3$aFfF&IM~s-s@A6H&Q1fTTv$?TOuRB9{Tk}%IHsX1IURCSFW<~M4`fPLicl_
56657 zt4vg))F~Sj%|EpbFn`wl+%Q1=-1YN=pZW&8e}4M&!hmAXV$jitC>kl6^49oxr%b0T
56661 zmmFDp<o%y_9A0x||B>clHN*E0Zyq*z_?6-J4sSVf<;cCmdp_`fP%v!v)83~GhAnw|
56662 z@YB^F4E~_{@X-$@e=z6pxeu0pu>SCk54L}B@YtP3_XlSh3mS(s?QUvntZll|^q_HC
56663 z<ATOjA6z>TJW<xT<;2JnlN<LnHaA}V;K7M`Csv-=a$^6{^u`Cr11HX$xN(x7%sF0i
56664 zyz*$#@%rO4j}AS)<oLRywa2#~KXknH_|2nJn|M?7=)9%@O{0!3Kf2-Y!vm26Wxq&2
56665 zP<5a_T61(~^h)WPzSVsvmu~4hr|;6zJ$={r-9DvdTKcr2eR&6F99Z;=!lQ?ewpJEB
56667 z+&xxutl}4=j*UAu{TB_#793moi<v*&_|siGmK@u3Y`5^_+TUlnugP-pm7DlFjU8X1
56668 zam80??Dz_e9bchw#aC#47r9QZ=-BZU9anrs$BwV)xZ*21FcbdXe*c*cF0sOBD=Un4
56669 ze1*|g*46F!+M*p_RkY))CU$&P(T=a3P}YsDFxvlDJ>c1&gnqK?C&L$&EpA-g{*#iQ
56671 zZCo_&?Fny>c<I5|(Ad&ra~l^n-8^A5t~?PsQF`p1#*HT`PmFKedE)gG3v1u4n^AY9
56674 z{N&=3YmQf)+<J0f{i9cRH54`sslWB=;f9)qDX-3aZQyI8UOn3|w_(}rDS3P5+&_8p
56677 zw3IYYX{l_fKYpiqZp+M;CC$rP*0pSJ3^ZBI?>6sfiZmZ;KAT&YcjJv2xfOYj-dNOF
56680 zb<=}W<3C(-cFEawr>1|n_U!hvhdzA&Z0p&ZAMXE%e-y1*IHr8eh?+BF7LQr;#-j0g
56684 z^{x9`Ti#f?VA;aXg?AUMf6M(=-l^u6?H9{0j%+#Ddad<g^Q|*SFB%skEoVLseq4I0
56685 zv*p^yRUc1idGPV9kKZ|Ur&n>W{U5JCo&NETj}O1Rq-S|i;H`l@t8&ZV8r5u_F8cV~
56686 z$G1)oJ!hTEX^xz(JvZ=N_35eSrktDCTzY!mxfSO&onC%!&$*`NinFuMb)LI-dc*nD
56692 zVz6dT&C*kOr>(XJ7XqgSTqwCv`JE$k=6<*3yH`)`I5Ydqr0<-av-G?7=cdkCH@9%^
56694 zOU;+AogQ)F(4|M6k<$|{v~~{YtUf*S!p+X9oeNIYpI+R~+oPw~v=8W9-TD6Mt?i>a
56695 z4|cYm-q$|4^VVh8>67hqFBe=Mdg}Glo$brpH=bH>`fmH~_Qv*(%i}K3Xuo@T$>sGI
56697 z{GDV-=V_;!C*A+0dGhzw?muVCVBD4&@uzg|_)|Jp{3%^Z{P|qMqMrEkIe+~5TzdTZ
56698 zoG<=-E;asqE-h}+K-`wz-|-3~Hzu+G3&fu&M#M3;ifP8)g%rowx`f&F>$7jOZ;Q{d
56701 zmH(?i4t1@TA2&Q)++>T-C-@1&#l;P|;ft@Ir|{GKv_N8OCeCWfZGO9Jog_8By6)|I
56705 z-^cXV-0R2Q-tffV-tfd%H@)%IO<#O<(-nVj!xMjR!_&1M5L@qb#a9K~XjQ<SSQTJ@
56706 z%>G!!M(ph-SA0!0<#!O}a)rRHtPr@nRtR3P>xI={wO<t;7JCoMWxr;>CO#{<fqiG~
56707 zh93=GH2B=^wyL)JwL5-PyQum|RpZ&l>uobSZe90YFKSzK$+})~z5Y_p^;y@KUK)6P
56710 z&y72udck!e=fZ%_ai6dJe9MKAov(ks|MN4Qi$1?`gLkgEk#l44g@(@eZ`9tH-g)50
56711 zq8n>3%<4RIWBZN6o!4))-MDkU;KGv5N0&nv)?O~VJmUPo3-4cUxIFv9{>w`*zk7b<
56712 zkCw07yYA%q2|wDf?#jCRl?Bh<oOA2D{M*;Q8~JY8>+gQE_FJKEm7bq*q4~m<3->PX
56714 z)ZCnWbKd!d?bTPNUYXxM`O3;Go6oOopL1pJm6PpDuUxru|BZ3yH@2^D-+p9#<HO^D
56717 zvG(f7tCQZC^XB+P+ZP=?GW~e*@!@YQnc6;W?V>a1&s>~(ao)w{SLfXF-YUAf>{i9C
56719 z{j}iIAs26aTKnm=^Y<=3`gFmkt2%<8ZuxXyN6DwnU#<LVOGm}0SHIf-)tNST$GA@)
56720 zTnltezgBXsvMr}$!L|BpGdosZTXJpPwe4TsxXrH}x}9@-@U_<4wYR5VyLo%j?X?}7
56721 zKI6By-#+|V^mg0rI~}_}8}Li-FN;1K^~;K1*0+^+9Q|zaXLCE+K3o3T#^ZIL?f$Is
56722 z__WVDKD+zv`-`qEdf;nGJ(Cjjb-IrD?xw_YRcv1@BmUp!`2Q#V8OD3vpVaSo*LSgf
56723 zB-JZp=PEUepBu48%=nr3Z<jc;x{;rX|8{osk0Jjc{@c;bKZg9h_;0($=kLUS+v1-S
56724 zlJG7m-|NO0fyE><j8O!wj`OZLnO$?}*^OA;2<yTU=Y6`)o$pKIvO+ErvlPyj$dQQ|
56725 z#E_zH#8MD_w9;<Gq3PRwm8o21#^2$Se9XA!_0c3I=^V>j-4;&BZFXC=Z<mdAsU&7;
56728 zq5DeDF5S8mO-O$;;x>tShZ(=3Lj3n*@!h7bk<{qX<EdAd4lST_3+UYHvavkpUFT3=
56729 zJ-ZP+DyCscB`Y#yrgAjG49a$xhngF7n@AcH(O3Xcc^476s8<&S&RI|+60<Z6YQ^Y^
56730 zEf=sN@3M$K2lg2Ll)Odp>vWy+E;`-Yp`J~ENZynTRQ@)RT<X=*3q5g3D&n4%;ARu~
56731 z!%#e)16|2)Jm8zeh?X*{+3o96VqMq0y5*HL`YcNcFX-FF2V+d(RMbtSj)raI=t{@1
56732 z<;<>H0O_DTB|lv@Y-JN+x@Y%M<_^b%*(|a9r=I<FJvxZAxXRl=aoPvjO4nvAgV+i`
56733 zNMD5F6xys0nn@ot-#&!rtJOfx26|gB1KPhBWDf()7)N>^Fpe`e9EYKCbY1Z-ZRvA|
56734 zh^|q`_brXHK2|RzkK^~2f#;3oksTrfw!zt@56~Z^<A!cmwRh^-jWG>lT|3}%pcjgt
56737 z(INB+9Hp>c!Q9uUYX&$zAm-?mswfmK#ewDv^E}i~5t>^O(tP56(4)*uB5HonX%a|E
56738 z7h)KRyE(T;k*I_ai|HZ-(P1ocKZEHY#*p-hc!C&1bCPuIG5mTG{1W*xrRz$gTNln5
56739 z1DY|38DmVPGXRaDXpVJ%ub(qb3VA&P*PGz_#5p4@uHT(Q-N&e1;2Ne~Bf02&VYgxd
56741 z5pXAgBZJbUdSz+1{IDCuHIAMYo`Z8=n7AuX-0ypg#5#w1?orND!1pQ2_lc~fW;&;W
56746 zyCh<cwv0-{9!ulI;n&kVo{zI;`}H*ZKSAS3LgVzc30a)pIC19WPF%Sm=Jc#M@51hY
56750 ztpRA9Y9QC;bQ!ramcxrHGA6jOuB^cnDdf70lta}5){Oq-70So8QB1?h8XTd$wCkbd
56751 za(<5NK43YYW;q7(6eDsdB?BioIrl>`Bn5o7;-5K^C&mFH9LbzwsB7mqv*J2Rk7A-x
56752 z@KyT#ucgV6u%=JpDkXEiW!-*^D-WezI3Gy|y~sz<LCm3p<3fxfy(g+5<_E2j@G(pW
56754 zmd8-Dy2ntf0n@%qjBXL~;(4l-Q=dD&7HfnfOsxzO!@5%|zDfr%XGKZP-6ruCOp2yu
56755 zC-T&{a@2h4Jl}J=?XqrN>fc-7dxyTCrb~~Z_h+i5^zTjZy|kYCeZrb>ebAYur6Eug
56756 zCh#}CgMn73ycc?d-gD{pqi8XzcSX>9l0^`ff$}xV1C#qDe8b5kFoyg~uI5>QPPd1Q
56757 zUFdhxuJS3SgGgU<5cz~y`XlUW<TGRGqp+(f>!wltmM8IK>6^MAB)pY(`!;1$-NV(Z
56760 z#WZmI;J&*|;iuEVxH1hKYm%Q%hcVrE)QIC+^r+nc^dp^4$BGQ-KWcp9F>uu4NQTiJ
56761 zyO+?{IpjT_>Mi<Ro$f=>vs6t>-*RYm?~->&s(-1rSG|sF`lc!!)-co)M2iePwy;hy
56766 zQ^%C6aID*NxWY@t)M#{8*YMg4#$tJedOAQoMS$K2JujhG^=@62)REmJ=3^-s?syz;
56768 zOd<ickn~GPOIhymvrut36J{`NeCJuU-gPqrcRKovo$f-vZ-iPf0V3t3H3PNaWJ0yJ
56769 z<9L_PzTv!Zcjw5c&lcZLIP;a5NoWB-IWFtAFQmg5));=$+fU)A(?QI6ngH*<a1~OY
56770 zf|~>_?3pO7IkdQsO0GHFy**yKWRk#9o!|L5c2CjHZ0*ca&N#R-#vPug0D5?C1A2H4
56772 zG&Z8Kk-U%wA`EEOM7oxD!}?gdJvh*~gXq8S@c<fVH-|?5)dS=Vt?BU5X-p+Ms(q4f
56775 zY6$MSb(yJ}&ywha#@S=__c)v$7j|6mt_0K5azdOv)*g?;)p6w-0DPl9F(ZsYTj*Am
56776 z>)g=uQ-B>!0)tt{xf8%^57567Gs8Xy*EjH*he`+E!H2$QlKzM_=-gXSJfUVKt&U1s
56777 zim!??!&3Cqx9i-=M$UQ^Ug<GORL+NzkpUSg&6xxW-?Y}(M4YZgokgP7>Ij^fL!%=u
56778 zZKOn9hhsq+J%i&KEq`an5Te&{9dSAYbskQS05LdUrvrf)wlCI<<fr=q)|b`wE?2_-
56780 zXmwo6sh&jbg&;o{k`H6f+~7Pg9rQS-lcnik|A9Rbdne_wre<5YLZoL*=_h>+z1Q#C
56781 zrA7UFc&_@A-ouv}dM{pP=>2<{q4(HMuF%hQ57a%<SqGDIO!RvC75cgU`yKh-215u{
56783 zUpHa_gd-ZR(7^jOnTz4vAq_;FRSi9oppQYX!+r?g;C3oM?y4~6(82zI>Z)+Y^&nXx
56784 z4UPc418~;LahHTKhT<n7EB<{N6*0J@pgR@0s;i@%@F0m<2;&4D<wrV4lN?8-wMbfu
56788 zlo$JFf-mj0j%F~*00->jYAwJVpdK8Qff?gCQSXdl^x(KP(P++$VXP&nC=|w^w1i$c
56789 z=%|Ajd;*%75ys#XP-o^;C8FL@p!NfR9iQ_?lhy70TtnpkA2On4Y&kLSbP7&?r)FcT
56790 z+df=FinZv``$nj3M~kpd<DCbnTqA2R#3emTLJzYOm2+g>hPb*8Les-6MdcnSKlDr-
56792 z%86E54^;LtNnEbCIB{5H$aNGoHaWnYev)<nznTjq=IjciX9#)6q0_-kBJVmNKRv%V
56793 znL?FW-f5_qd=jhDCCf!}9!1(1G9Ss##nFK}u0A)I%V2)%t=L1(q^Mgnx}DV3GRk_i
56795 z8_>dP)x-XQ=Z5_Yd!6bf>g;qs(fx<^D`{uw{hYvce@W&s$$Tc6*HHe5eT4ET)gLf@
56797 z%C{U)$GE_&O~VA|7T~V$<e~GkNNM!-9hD-Xc`TDIHAjdA5V%8G-|o3u2r&^Nf79k@
56799 z*O~+!o`-6uGQ}rMO;^w|(o<}tQ~3M?+DBSm$|A?Gh;gAGNejuVRo{m^sacyzIOw!I
56801 z$^4q4#s2Q-f%f=hK1Jb=^PptjlFT!bc|kIZC$nxcOD3}##;v55OJ)yB_xdwz=Ujc0
56802 zFa>;{0=~Dwxko#f^<Gv0IA-EWhJF>4L)LQ@NkN=x1Yd>UuEYCts+{n%efj1fq{A3P
56804 zY)RV}&)6jOpwi-Z5p)zjF~fUP>icLEbtCv~IffAR7Y_O_iV}CM_%}u=Xsi^(2R@Ng
56806 z4P(ygp{i-Q)~KWEN~5kZjH;`c6s<({90K1Uhi{BKdxA4SuU?;`ox?2UyweV8;3)bY
56808 zLiAbSs-adP_zo1NqpaitHo)1=snNRi65Jq$ZHloz-Pgh@1Z^$pC|RTjNLf^j@(U=l
56811 z6e{`R{uJv0N2$t})|re{Rc9(Hb*9r&D7J;p7w+sq(PA`l_XaZ;?w>j84-@{6Gn^aI
56812 zae|H$bnxA86@$Mz!u&8DJvR!YybfzYMe$p^l!sze(&Be~F<-1Xlhmh5i{A;R<b@hE
56813 zN&Ty|`1eYbycAywWrW2{(vD6)Ov#H;Mp)RX5nrDz^r)7o`o3!7Oz+OrZW6v*T-s$_
56814 z^?DDu-ec%7srE4ChJFVgdv{LX8y~($u6Op%s)ru)`uBL9)1^rWyE{pf{C5sz2CRmC
56815 zyAi#g(zWOKGPH?~FrZT>hE%O{pl7&7QD(rqY3Ds~c$G~euv1iR20PY-6;;nJ@4iY}
56819 zdl0(cl-9)hr>sKR%83!@jWzj8d=;@Y#JL+yXi?o!l^g1=sVUl7VodplmetMO=|&(1
56821 zfz^1IZOm>dbvvr`QXc(WUT<pGV{5BjEk-#>%K<GX`ErskC;9Tn@TI&7qnz|c%170T
56824 zA3cjWc|l&q5oa&r>{U3MNJ3MQ5Ym_$jY-nzc}kVgL=u`vLLJfX=B0g|XvH|4`&4>P
56825 z((@$zAx`H@l^*h^GO3f9DEX-ztJ2f_vHUbn=Vg^X8GkCXVw}$9P(Ltl<9x%C;K}ko
56830 zp?4u>H%HZOatxCgL${HN6>DRd#2C7b^xj4tSGSSg->75gHc~O!JwY2mOr4vw8|<QV
56833 zF-Xk<M;*4Cj>7vE7<)RZ&ke^Pwi`tYQCtOZ#9@o#xK*PLXHy(`MTkF+Cl&97_)B`7
56836 z%ZPFD+$E;dQS*ngBq-q3COJQq7QQ=!QAW(%B=w=vLcX+~C>bbJ(n1SUbHf@lNj<8x
56837 zkT3Q^m%+M`ge}!GQ#-S|&N#R(MY}HX6iYobwKJ8A^Tf*;!MV=yH<hc|btca_I5)w$
56838 z)qU=aCC@oHH^I3D&h>dY*K=?^2lOVOH^KK-x4imaH`D*RRWBp)#vGJK)rgau;T$0i
56840 zdMlohKzb^^AQ4kTin^~-<#9YhUS**j^mvz-Kt2|dS^p&jyh@E<9g|k=sb~#jriPgW
56841 zKNDOl-}9$@kn%aopLKt+6d!|Qs2*Y}J|wkkBaACisN2p0*QS8^CS=yVPF6{2XGteL
56842 zPh#-57`pdKI_ZBg40>Q<7ZHd#vCcI*j4|Y!lAk^g=&_O?+~HC8W62NxWmw%$CBMi0
56843 z{YK~aEtn3*h8)*2bbIL0Dfw{&+Y(2OzK^s-nS%CIIN%sF0jhcqrZtn$;+TYzsU8Gl
56844 zRhL1fh4H1<LhM~SY9iFBA9yr6nmG}>rWWCFG#uv?EsTGeJ7BbPt-fG?)ip`eCd(p}
56845 zh3M=;d78v&UrXj!wC<AoOEPOw<8owOsR0U4<_-KYHcn<w9apOXZ9RIvG(BZ4=iRHs
56849 zdjtK=VYPQv$Ab3{9Q`VpgS#|%w;)GX?<n*Rv1j)zq`mrd&qHFR-F`+zhi+}Se}sB1
56850 zjtF>f1@{+`wvm|R#|eHM@v{_Jq>U)~aLiCKLPdbC1IutBopM9(n)-CpL0u*De0^@*
56852 zT088zF&&INIWD{#!Fy^`n7)&#DzmNwjKRCFUW&|=uGBj>lf+=YlJ<pnH`u-u26IVb
56853 z4Ez_*VFs3WJdBV<j~czpk@1f+R3fr<TGfY5jaKi5AYVz_x0|n-gfA!f@+5q9S~CeP
56855 z)?rRmV^!tA(Y;HlGB=!Qby`(2-ELMAzK@H6Wd2TR4*RjXvk|WM*gsYNv@hzo{OuJb
56856 z|Kq%j@}0-|6oo&|gOYg*Jzv^}kMjcx$M%K4iR{^RF7t6>mlO4Sukw9@J~5_Tt=FHk
56857 zBsx`fltj-75je6#qpwGM5g#wOiXj??XcBwI=xf$KZC<g@kcKCrQ4zhK^)z5_FV~cH
56859 zeFo--F^A3~=-{fX59uCb4xL5NSsEQD_+gA8uT1n>m=5}?<Yy85EP@~Q^8~&0S?4bR
56860 zFo3})3T|{QCouUJ5FjS$<UKANSMSE0Sg?^^Fb4a7ef1mnmb(66<l-J#MzcB(*_XmS
56862 zWP*zJQ|j+wCQzEMMe?OlIAaPm4URlMp-GH7w2&`_nkbT-J4=k3M1)CN6VSr@7&W4>
56864 zbsb>&p-1YP#PUP`bH;=oh;d0zc`Suv%SvluT+*{7^eWD}A~lh(oP9)`9P9i#Tm9Yx
56865 zzE^Xjv(Jb6y}Hhn`1P>tXPk4c@V69xWnJg$^`<r+>=@-fA^LvHE{zLZvvuA@gM1*O
56867 z>p3*KJrh0%5p^dMXmy8=t{><L93Z$?arRw+7+m*L_i=#xaqE5~`I*|d(7z-<6UgT#
56870 zp*-Qdmk#M*_K^Hk%;BfgLCl%2nrWQ*>KK)OIKrfS(03u`$Or9)>0kzP-aE&>i|HsV
56874 zO#d|orsD)1_AQCwUw1%$m=614VqVEGd@URUW7v-+oz4$>cS57dFnlexMlwvl7RCq8
56875 zRQmockWR;NEJ->YgApb%eOwr24jmj9#-60p`N4>EdP5z<aq7_N7>-`2mxKIZOgnUt
56877 zoux26Tgfh0#c&Rj9jzYI$^2CHXXlQ^M59osq@{jArK8Sj3YMPYi!-T8OZ|ch%ZpJ-
56878 zOZ_qn%S-X4P)SSu>J0OR+1jx-L?tcci&1Bl3F`r)>YKorFV-2%{3>5+ZdeaAEvyud
56879 zH&c3m*+iv<dVp2Lxp$-VK+)1D?$cBblw{abVU42tadjsZNK2s(U$wSKzB=mgg|rkZ
56880 z`9jNMRPu#-plGSQlPnwIn(N#}QJD+oIF&EdFGWkC4qvQaj5>U=ekod9|5d(}ypT3o
56881 zw*c#`lRF`*?o)<oRn*D$dXL~_dx)w}hFqGw6fN#sBwr3>!2OKmi@O|34-~5Iw}ok8
56887 z&R=w1ON^!7$IITx?xK-hjjhn=Jty@ybo9S@;5_%&IeQRi58~`0IK#g*l7cv=0M5Ld
56889 zt{G@^weNN0bLgOcAf|S=avls}YJE^W0?)%k%)>*@1A3U+U#jzfey8?}`aGz=i-Ell
56891 z5BRqz7{b&#phl!VHwWVcogU3<PpZxXV>lByba-5*WCQ)LDR96~$2h?BRb`2BfW`D;
56898 z5alGQuD|KEB^h7!o>TILsCq9>(K0}byCb-+2YU#Z>)<+_K1bY9!F52`VZdGhuIs^G
56900 zn;e(YKh?wWq<FHPFL^JBJ0_>Ap!JV?DU}}UpXN{Fk{)-QG=Hj#lk!mdr*M`Or#e5C
56902 z68B+F<;HlTN>lVSF8Nbk55^^bs`H`fsV-3R$2ip=%5gDHb&e{3T28v3OV(?`?hWb(
56903 z_F1^EdtASVyCS`FfITYim-Oxd_P;cL8rRqTDSF&9<DN{)gK?^dljCBX>h4tjRCkuF
56904 zmqT5me{;rBBP>1-VdMBrbE&n_-s@^fx#6+A1-{`%{C}zSv18h7!$@B)KCJ3_w&#r^
56907 z-Mg`OM{Z;9ySX<@ym^6=!jhpSb$OFYrspj#S(vxEWOd$=lC62yOZMldmbBy#EV-6H
56908 zq2yuy!u*x_8~X(F5A`X{zuKp&z+I42P+m|~Fuu=(g86-B6}(%pz2HDWb3tdpogP-7
56909 zcY2ieS>L0s$J8Ekdo1m-uE+a5_VwA(qrJziLZdKPSX?-?u%>Ww;q1aCg=-486z(ZJ
56910 zT6nJTM&ZMr={*a34(>UsXG71KJs0&{)pJwNT|EyQt4g+&94t9oa-)yYC(@_9&&WQL
56912 zGP}BOefF%rGqYFsUD9`5-|c-5^=-|5(D!CeK^e~(Sr#oDP&O)OW!dDMon>=#&Xg_B
56913 zxmUI^H>YfOZdF-h?)0*b+~s9=bGPRn$ZhWD&ArpFFfY<?XkJBLUEb8Zxp_<b)#bh4
56914 zZ+c!+UVGlHd?P=YUz|U*-@^RK{Z{8M$zPMdC4W!;(fo7yH~MWYNG~WX7+f%_prK%9
56915 z!J>jy1)B<X6&x-&TX3!5eh+VtydDF3jObC{<Mkd3daUTNp~sFM2Ya;ixYFZpp{p=j
56916 zSXNkBIIeJ7;k?3Sh3gBq8LP@Rm+dV(S$3uDe!uj7#r-P!jqf+3-{O92`)%uYu;1B!
56917 zH_DCjNO^hr$nr_$bIO;MZz$hYezd&3{7!#&|APKQ`q%cK)_+0&RsFa0-`Bsn|JD8v
56920 zg1PqxmFDFQs>&NNXhPoWgJ$Ke81zowj=Y0;ErZtQ-5s<eKRW1eer5i+{Au~~@|O)d
56922 z)MHkU#XVLVs|G~|l@A&@XwslLgO&~2Flg7Hql4N9-5Km2TrhaZ;M&2{1}_-AYVel9
56923 z`vx};zB>59lYu8oo~(Sb{>hn7E_rg@liQy>^knOkH;3>c(IEqdjLMokWb%-?LzWNO
56924 zIAr&b#vvV9H-_Aera$F<s_?0yPt`p&J-X<rh0#q<t&SdkYU@+`pK5vP+EWj+2Mi5n
56926 zhYidv8CIQJJ8VksoZNSE*XC}`-8*bvZriXGxsUP!c}00c@~ZPD<;@zlDR1?#J$bwH
56927 zj^wrGUC(=vpPFAVtSNtF{)GG)iCE3wnSUt%O#apUdoorFrWedNRt-Hmw0-EEVeVlC
56928 z!-fp29X2gAbl8GntA=eEwr^PTu&cu!g!T*%gw72w8D2TOe)!DcOTwduuM5u{zCFBZ
56929 z_@Uvg!*4##pN@v_KRqCl_w=a9h^Hq%J@@J5krhvGjO=)NcckU%#>m~LJF=or-_5G5
56932 zlXEraUamVgC$~JeDtCPD^xXNm%X8mN#A<G5?wvd<FOpX(V>NGG-urp`^jOWW$)9Yj
56936 zbtvmh*43<gQFk;aS{|*6j*m`{&W|pSz8l>hJrHe<c1G`HTiKE9((H=ty6mahbF-Ib
56937 zugiWvdtY`_c6;`%93v-~Q=Bt2rzU4|&g`5eIcsvZ<m|~gnsYAaM$W_B^xVSS!MUSy
56938 z8**pnF3Me%yD4{9?%~|Cxz}><=Xvw;@&@FMFjhUY;+ahu+n(8zvHzK-jE-kIgZ!C$
56939 z!IH|<;PA?#;FQYY!FMXh1-AzG1{*7158kX?lo_a8lQ|@_I&)Iytjxug?`LkVJdk-L
56940 zvo-U2=7Ugbs30`3@=Rz#<@M0Q(8|!p(9Y1I(3#NH%12>$I44{lt_qJ2PY=%zFAu*P
56941 z-X1;>ZVq>b??kLfBvKlwh}1=<M&?GAM%G2%kL-&yMcN~`vW%=?R&mzQteULJS+ld2
56943 z`s~-U7i6!<-jKZ``(SoU_Lc0rIj)>&PFYT6&bXXuIrDOs<*d)yma{+SWFl5`L%AhF
56944 zGY={Ql_iyxmGzY~14k;C1g=-EtK43BsIs;4X2!^8dB%)qqZuoo9q{a^XD2^9_u1tc
56945 z_nzGt%z1Wqu<F^yXFHy~8(d!H4Q{V03^rE{4c@7$%ZyY_&#b6gm^rm-b>`Blt(os<
56947 zcvW~)cvtvv_-y#va}y%oNM2+>WJIJs@_J-JWJP2{WJly+q$P4CayQGB70oKks>~Xf
56948 zH7#pi*0QYiiCE3*$hsZn(NMHR#%gqJbZd049;?~a*^{zo>9LyqAScyWRW-h9M%Ch~
56949 zwN=}y4pyD5y78RxT;#d(=SDs^>A5-2EqiXmbGx29`ds^ScSg8J6pR=$qISfz5er7F
56951 zksC+u9@#juW8~czye|~KFf?<-3w19{e_`PZt6$jq!u}UpGFx7_mU;Juhogd{N=H?V
56953 ziUdaQi3}Ot6qz)-GqQN}y~yV3)X0%YYvg)$QC4d8@T`H=<6^OzwJ;W|)vsqAs$TSU
56955 z@{4m{T>j$57k9td_+rP4cWb;gg*8KK>T0IfEUZ~wv$bY_O-s$SnulY8V@k(VjhQfJ
56957 z{iQ`Ot$FGFmkzviCUe$H*E3hY^r$XWS5`Not|9Y5-Rw|7-O|v=x_9e#)*Y#9tGgZA
56963 z6E<X86Lw{mPB=QDeZrmB+^-d6u6u1r=DyczGuvOA_S%BiR=u|6wSA$Q*P27KU%MJw
56964 z^V)-kKtoCBTtj8(VMBemuwiC+RKt?+%!YO0RSnz2yBZFK&o;D%@5f@b;bvsSM6SlF
56967 z%0J#eec~1W@`?BT+x-Xp&HhgRoq!dHOiB+_1nL4)19JmQ1M33s2lfS;0_}lY8Ae7h
56968 zqc~$|Moq@#jM*7WGS*~l$=H)|G~-;xjf{uE^k89daBx(xAviO*D7Y%PDYz?mICwUA
56972 zo3=D<-Nc7!`_h`y+S6{O8|lIH;`E{EHR+SnXQwYoUz5HieNXz)^mFMq(jWTM{e}L)
56974 zL^H}VDl^7qOv{*;u`FYK#<q<887DJ3GHwTXFcd5a4iDA_rv&E&-wCcw)YV{H@MiE)
56975 zW+1aj*450_nVU0r>vc6WGBhDHBUV?9Ri4g<`<^=!)4i5A;w|-7c<a1Vy>llPdzX6G
56977 zby4c7)J>_oQV*w|O}&<SKh2w#mo^}6L|T2?>uC$pR-|o6+mUuKttIVB+TC<ldNjQ(
56980 zWL(X-7jy@6g5|-g;P~M5;QZk7;Jd-?!2`kOU}x}7rj;4VEX}OQtjnC5Ial1Pe}fr}
56983 z*+JuZc8DD^MzX`~u<-&r!j2fD*im-O7|o8eCgVkRik&jXun*aXMlCzT{*Unz`-rs~
56984 zW7&Cj-gudHvQA?>yTU#(USXfIYsRbWI{VysjeWtsFeb7u*;mFS?&2xNH@Js;jX&V2
56986 zGX9eP3I7vgE&n$EuJI%OJ^nr8UH%sTZ^mEqKjkZo&3qMKWo+ZC`Cl1-$N!rDwek0S
56987 zBY)r6!ME{k#y|1D=YMbP<2(5-<DdC%zS}s!|Aqg;_!oYZA2W{d<NUaBl%L=yjAQ&1
56988 zZ!sGA8Ggn%$<Ojj#wmW8e`1{H*ZFm$o&OvEwQ-UEhX2O6!vEc5#wVs_TE-1CWDYXE
56989 zFrPGsGLQL;`3y_5Ub0?d>DI5UUo*e;&^B4Xwrv-S+HTv!a_m$)o#ojXc8K+`BX&0H
56990 zWf#~5tdHH-?$1i?C+sI!e|wNUj191-+tb-o24^|OZ;XdVdi>Fuhl&3QU*W=UJaNDA
56993 zo5C+`wwNt80>V4r7BowQk22w-OASB!GvTQ&;i=07{SVm>1-BK#Yi;4RE5-3I*k2fK
56994 zwu-G1-~J{0OF_Astrj$Y#r{fgSR*{!ihH(8c=iUv$Non6H;el>6aKwJ9RGps6xaTg
56995 z{Zz!vF1AY`KVv@=oOcWFceDS^{<nynJ#3HQ^N;Kwg=~A-UP1FuY@hi2&+MNCzF$NL
56997 z6^|KDJZ89vnJePkPekOT#3P4^$hj^)e=g#O#p8#G`1w*$-eR`||F1+WnekY1bMene
57000 zd<-8W@LFDLg!oG$l1&lG;{^YgMLb&~o?j7?*YkQI=d1ixaqR>V;V%9fe@)D#fj0=6
57001 ziF~r)_6`0Gan%$)MSS}Q{13!cQ~6Xe(?8^YC}f+)r-{#hB=Q31)A@8GLu7~74KM#D
57003 zLGuIt198=2zF3U=Hh)`iTf&!!&;L#28e8O=KNU1f`BEX<pYcBvl*{-saqWNS%f+`p
57005 z|DS^MR=!nm{$KomiLu@nS<K{r%m3C0$8(uCp39iXWx~(-Px(*9x4T4Mv*UTq6nX8S
57007 zkq7N~9yCQBJS&io_(y`KmA8t|AM<m9|9O61aBJgjg8v2HE+{YZi{jf3-XT6;64}!d
57008 z+4G8!`4f>teeoRX6FKy*p!pU5mEdrX-xH(!T4Yr>zt8UrNn*Lx;{VS7U2uNL9|}JI
57009 z!T&?hKjM!B{crhi4VNiG&oJYe*AkgGB#vP-Y%nuoM#Q&SW|sIIHM0$F=9oE#*UU9@
57019 zjbyfw%r=tQMl#z-W*f=uMl!pR%x)yJ8_DcOGP{w?ZX~lC$?QflyOGQ;B(n?2>_RfT
57022 z%poLm2+15mGKY}NAtZAM$s9s5hmg!6AhW4-Xoi@Pil%j;SqhrbO`D;i4sAq1GrMX1
57024 zUS)2oymD@-8k&Y?;Zf!m&`>O|N12;nL$NJ9%G}a46wB*T=9a3Vl)Q2lQeIP;g<nIl
57026 zvNR3FqcKIYR1L-2VTxpa1r3ujNXeuOT#+nQL-A-_ks+X<nZ#&ZkwG0z${<IxmC*tU
57028 zM)Z*x(MM)PADIz-WJdIn8PP{(L?4+Ey<|r8k{QuUW<)QU5xrza^pY9TOJ+nbnGwBY
57029 zM)Z&w(L-iL51A1?WJdIm8PP*#L=Tw}J!D2S$&6@{8POy&qDf{%lgx-FnGsDgBU)re
57032 zM1D{+qMEq^guH4-j4G&{TTnyseSn$~0~$(Y+Ax`E!=${aL@rVDq?*sD`xZ4%W+^Cj
57033 z-=gNph=Nl0Eoz=r^DlMZ;vw%_JO*{&qUKaJ_fb{aB&)PZR%w&0(k5A@O|nXxWR*6_
57034 zDs7Tg+9a#AMOJBxtkM=)r7f~bTV$2C$SQ4-RoWt}v_)2FMpkJ?R%u37X+~CQMpkJ?
57035 zR%u37X+~CQPF877R%uRFX--yYPF877R%uRFX`8IlHd&=@vP#=zmA1($ZIe~nCabiY
57039 ztXU>mvrMvPnPkl}$(m)7HOnMxmPytui>z4|S+gv%W?5v-vdEfcku}RAYnDaUEJoHW
57042 ztl=ZGhL6k|J~C_g$gJTbvxbk%8eTGMc*(5cC9{T?%o<)YYk0}5;U%+%m&_U-GHZCq
57043 ztl=TEhKI}=9x`iq$gJTZvxZ4#4U^0oCYd!%GHaM*)-cJeVUk(HBD01?W(|wX8Wx!~
57044 zEHZ0YWY%D0)?j4TU}V-{WY*wh*5G8;;AGaY$*f_MS;I|c4L6xJTwj|t(lr$OuaER!
57049 z+-H*UW|Hw{lJRDe@n(|oW|Hw{k@04c@n(_nW|8s6$arI9yfHG~I2mu8j5nK%H=B$%
57050 z_t(Z-SVJA!95UYYD0FDm=T0)-=!&kcbIFdMjzaahlUxI#V^e*OLp>)`V>4Spspn*B
57051 zY^u+lsOMyA#H#CD)N?X5j#YW7=VWShtIu($HAgkNqY6r`IjYgEK6j$l9Mzat*SV-Q
57052 zM>P|u@=|M#YJO0k<4|jkYJSL4P-@Ll%^K=+Cu+@6%_ZtO7q#Z7W*AjoYRys2JL+>B
57055 zVHs?)1F^{t#3nlso9sYrvI9|{M$z}1K?S8c5I5O@xXBL0O?Dt|vIB7$R0pEo-DW5#
57057 zt|R*geI1eNHDt8tT|BODYX6|GBT~IaDv^KH{z0wXRBxpA4><}-^+sy{p!OP6Z{#I=
57058 zBQMz-dCA_$OZG-yvNuxu2feGn@~ZuVz7k3G8dPuOA$uba*&BJt-pE7tMjo;^Qu_zJ
57059 ztHAQA{e!-iN%b03Z)B3akxBMOCfOUAWN&1Wy^-2K=v@VtSM49@)ljw9pn4;V?2Rn4
57060 zH?qjy$Rc|qi|mcm{z305u)J#jK(D>3y$01AF|s#eWN*aC-iVRC5hHsewX4v34J@zP
57061 zRnY6dY6n8~Mx5-8IN2L<vNz&nZ>07bdIy3fQ+o}14O;C>sNTpXdn23djcl?vQacd6
57062 zFTpaX9SFS+u68R_Z{#L>BRAO_sT~OYZfH<JsoqHKOVn<K>Wy4vZ{#9-BfmlQMryZ`
57067 zcox~=S!9Q2ksY4e1?jyJmRIe9=-*$c9TU~zF|xyBWQWJd4v&!?9wR$EwF}aFBP_4l
57068 z1<}9uP&+27!{cO!$H@+llN}x>J3LNycxrE?cT8AbwKt-FaiaE7REKAi9iB~gcsAML
57069 z*<^>Oc1(I7g(XuvCi+(|YIj9-cy6-8bCVsOo9yt^K1%PduncM+MgQ_f?YXE9&qa24
57074 z8@r8Z;?peSfHA|EZL}FjjqAodW1*nG%U^d*^NmZ;8{?SE*vtxz34-FRvB;P#sAr37
57075 z7saoeZSeHP{sH2+!e1$ljsBD3cs~#{cpx?Xj`-Z>zZ0h!Y;gaGK#};oH%_zIUn7p4
57077 z{zk(UIGGX67?`mlV@uFwxYFnPR|M(;OVg+N=Nqn!@{G+H`-84vQE-O%Zlr%wU}RuX
57078 zU_xNE;ZCpiPfefXpBHG(sLa?GEHd1IcQYdX8-eZV)qw;4X&GfkYGx>NbLRfg#?11}
57079 zvzfO-`!Yv`+@Ye-StB)A7F?R~FjyIE$s8FR7hIoS?ym_>3vM^kf|G(<gC_;ufly(n
57081 zNNuDgJR-a|+!UD>SrEA%?ue|4Y{`oKt;7Dtb(X=xEW)C!FDqwHuz~DpR?WW2X0Vy;
57082 zJ8Ta7F8e;4&)#4Q*qdxITf&yIKV!?;57`R#=WHeW3$}`_=0e$~-wc=;W?^jaL35D#
57083 zq+KVt4`uFd-Z9RD*pqCC;9sHfpZnMmR<jMUJyh9FwwE1ZzhJ-QUj9;SKS}<t{5t<P
57085 z$BZiRj~O+_7;zjc{xRbZ#6Kqd_bqXJ+gKuwE5tu$tTg_@V6mAAzkY%}A&#-VYPp!v
57089 z!;A`Xe9jmljxURU%y`ZCo;WTt7K`J5Gkz$Je=hzpW0kR{TQ5--HB4dmzDA1ht8$?c
57090 z;Q@rE>@H2sWpl-6N?*(3`dTTDu^o65d+%~~iCr>GK9CPIJPF<LpYfj=ZsCEkJv84o
57091 z-!_=}59U7z?G#uA;`n#gPI3I1wMQKP$vPm8zp##q<8iB598X(k#qqp#SsXvLJ{8BC
57094 zF8>uO5qeKIGYm7X{nYsWqh@^nQFnajQS*0fk2;ZEQh-%n`W?r9lBhSn68|!d-->@h
57096 zZ4!G{n{nHiaod=2+oZ)ZrQwd-!;J4i?TYU^%|+IX?K>UYO`6B|i{>JO{zCZ2FWE0e
57099 zo2A5UmKwL2J04pp>@D_|xGHA3l(^+m;+9K^?=zkf-)Gzx-(fr@Zn>2B9^wi6dE<MC
57100 z^Y|X(T-Y+P5BUCWE5>&H=J8#>d3@Jz9^d1ev(xOfIL7w)=J7qg6FYia>{Irs_#E2>
57101 zpU3yV=j;v>9Td;wd4?6=n>(>9w-w)m+u|j>k2sdaci%4OB74VkY+{#fSA2i%#Ln8T
57102 zxc9i?yJ_2e5}z)P-{Id8NNnF~i~oQx7N2ALO}o1GoBlEXvH1K`zDtZA+Z&qmJ$#Qi
57106 z+og#6;ix#qvK^0SJ08z=Jf7`%JlpYjw&U?^$N#_5t_4hr>R4CR>C-*4>??p8QIVIZ
57108 zF-Gy37!i$8R6r&7Kh-@mJ+o&q$)&&jnNxH6Jge%QI$hI6wR9r#JDn%0^F(!?sLm7B
57109 zd7?T`ROgAxNxTwO(A&7I%1l;ehE--bdDDLtSAnMw;)4<mSEkYusD=wt@9!^DnTa)A
57110 z8KmVZe0FjYsGI~UCjsQ-`@r~J`|d6KMkRzbenjc}^&f)Ntxn#W|7(0+2WjEdJMvkj
57112 zrVsU<^fr+e_fC47$c%d@y-g&?y_4Q1@-tZ`<Fk7+z14TpTbV9r1Kk_wO-iCnB2f!d
57115 zN+QAbU^~ij>q-6%<reL+Vudo+K*rcwefxMfNEf^475bKOtQ@u%q${h^#gHzn6E1oM
57118 zJ{Rsuk3p{F!YJhKD(+3N&)yWbGCejqTIuL?-N$r~a&dNZJ&2=u`)lpotI|G1oklwJ
57120 z#L<7twA@%~((O#wpQEMgv-xsMOSY-8&V6H&w&Y4Gt<|-%v^}O|R$^*gdzh-Dv=*C`
57123 zYtk+EwKI25MVI$<?nCaLY?t?>zll>hxhcIP{avxHFYS3L-4xOH-TQs@($^d5veh}d
57124 zNm|^wKgC)iH#=S3m1{w_ypBwdVkyOTqLg*wfI>;qMOlR&ccxj-z1EYjxZcifu_d(h
57125 zXct;o$~Eb_OIuk?wcZk}H*aYhe6988-B&NtZ7ZdhwyvwvOX)6eK=E21>#JqDa+rLd
57126 zy870A7uTBp))Z;*&nx@$@9#Q?a8Id}mAr_)fbWLVJX%1*=|;MfYUmzXOB-klEVegj
57129 z7mbW2nQhUW=!)njq!*iQ=G|y{v?i*LUO;+V^nNDH^vVp)jLXcRC^I|r^~`r%p3D-n
57131 z@gP2ihwD>>QG5cA<#9ZoC-7-p$4hxRui!?E-Y?}*`L(Q*-^hA-OdgjF@}|5c+vRQ9
57132 zA@9h$@;7-u*cI%tfjz_?iV^E;``P|>fIZwEff+o2{)8*5)^4cQZbr}is_1XHV#}B5
57135 zhQGwH@OcVP0iMZcf-;?_<MUj!hWQ%42DMJIutn|Z_H<Z5t_8-PVUgdSX_4PfwNvr=
57137 z<9Hm#W;~ClEaq<lM(#8|4Wn4cbtq>kF9j~=<-irZ0@%on7_CaFq{{f5A9MUTC>sPe
57138 zJ?8gK;9K%85VMOB-4*Nt?g{pwZ-IrRV6G1V9%=^w-Ap?P3@En`S(T*XJrvQsl-qx0
57141 zbyRrjsPNQL;i;p-Q-|@?VLWvhPaVcnhw;==<)K+mz1CB&_0(ZK@?br6WIc6cJ#}O~
57143 z9-4S)?4iYVh^KGj>6>`kBA&L0r!C@Xi+I{n=4nfrr!8fkI?6odm3#7)d)iX&xi|E*
57145 z(LyrO9nk~P(-dYT>WCIcD>J>K?UapnM)RWUqC2ApGXpYp(TkZ{s)$~RE{+yOOEa@F
57146 zV=|XTyD~RtR%F&?Hf8>T`a9S?eHg$Os8`8FE><wl&-<2K&R6i2>Rs|JUZ{R0>a)VP
57149 zD{_%sB43mF@(sCM{zI;Hr~9%{zAZP%jq+U=H(GuyKa&-5x7;K5$}0JVtd{?gHHrVr
57150 zlkz)hk{0*8OxmSGw#aj`)kQ&daZlwX*(NW$xTf-<d@Q@=Q~6Bxx+tZ_#V6g*9N?mn
57151 znuA;fQg^Oz`kDbQ#;7~dH-lVMQ8UC0&H3|~<IITQ^x)&*)8MmUZ}4~PPT*Z6(2UL6
57152 z3K!?o_O$!k1MGn=hNm5DhuC3uxIGs3$Vhv<y%4;yLt{mE(}g=q#fpwJR&<n#6&-1;
57155 zj^Z50Z!Sb`4mD<TxkhWw7Da1z5t_q&Mrf|wXKdz*PO+IY|3GZ!Fcq6QEQ-zSkIEdT
57159 za@@YO!b6uX$}wG(W3iv`*Bg4vx3JEA<w%$PvR$;(Pj`1zdFfr{FYkgLz-I7`gY(xe
57160 z&d-oLp`)FTlf4h$PNMmA3q4F7w3GMeQ9K)K*mA51uZi>AnTY%opjS_YPWlcs%q?=K
57161 zER)GH4SSC{G7tLgGPw%c;%4MM7rO9b`MNBCE;~wwLl>VU6J(N1g)Xgz_6wv&#-OD5
57164 zZHimUcVeww!K<*kR=YM~{avE_x%+r^+&-z{Yp|l<h*i7VwGlgm1$-?pa(*Rod!<&!
57166 z_vBvOhX+a>_Il@IjhQc3$Te6Ms^js-Ug&+=MSD5WkzXV?LHpk!OQGYdb8|+UXe+%)
57167 zuVL<1K+8V}Exr!Bz75E6A9Va$Sr1LVme$jgQZKF0(9c8nz9HMijp-J7L0*wR%MN*;
57168 zmeO))*}c%BWv1Hf4^7#Rs!eFhO?PO}-q4MM=sN83Mw(hP&P+5@Or4o+YN07>O#`sO
57171 z{B4W&pkA>-u~D%}u~{+B)2h9!S8PyhRBTdgR%}s>b8gh}s8?)IY*cJgY*uVhY*mc&
57173 zCdGIr8x@-rn-yCWTNO7dwkfvjoYyNhC~i{RtQd1dqhga{vto;4tKvq*HpO=3oqELv
57176 zqa`(HNdjqUP;69eQfyXiQEXM*sMx01uDD5Yvtozhvx-|3oh*KUmBetCyK!~$i;cth
57179 z{6~I~U*easX1s}2V+X&-f5STSA%DW3@!zr9bdw6KE>&2cz98MD2iBSWuu>g>wdp|V
57181 z$r9-0W%3ibA3FFU`K3J4>G{$#(7&6ZZ{LtVLFX1fZThRc=blN(9wWvW3%whejLAY5
57183 z*=oC=J-Fl<)?s#_d%9tdwxjF`w#JUOwf01Nl0Dguv19ExaMK)c(g*na5SI5&4zOB@
57184 zv%ERta;`$^3s}3#`2bwiu*C-;J&=#!LwE?TK3MsV=e}ISqq#qyh*j}0K7~&Or%dG2
57186 zY~}T^=-s)?HO|K6Z#v&i>~3J`!a{fFFbkd6CU^-pF5jRhGB@&bux!8Q>{{67+i-m!
57187 zdx_Wi2YO0#yYt!v$HA^eo$tV!UBd742dMQU-UB=RQ(P-}FRr_VrHof%-%`#GVn;EQ
57188 zAHs@%96u??W4G}Xb}}{mJM0*0c?0$ZC-XC~Rwr|VOp!CW1NP`eyag8I<@`3R!|Qn`
57189 zEWhvZC-Prd*#kYv3FUTN8Tk>eth4Q~pZagC<=x}~SZ-g$n*K0&6}Fljg4O+3*s=UC
57194 z19HFV?B#yb9zb&jw*@zm36=zlgGI{ub-0|t0-dU7PJx~|Sv_+K^|UDhw;xU!$L&-G
57195 z?!Az@@mKf~ssImPP2JrYBK6kaB=rF&-%R~^G2cc5)h~I7`Xvw5Q=enN$!lmhujTbr
57196 zqbE0G_2g!pp4^OAkK_q@eshYR-<%4rZl;NPax+O!ZcfK8`B|Fmc$=o^naxx^vpI`j
57197 z<JW1Lp4rr?NAe6kvzetH$>-=f&AH&OGMeK!na&3%52g$Bl;v_gWw}C6S+2y+b}}t+
57198 z+)LjA_tw$%*vnr)H^^MMh;G%hkUQmT@(sF6&pehnuBM-Wt8b>2dRFm(<7)bao>Dvn
57200 z&kVMKw?C$r^=#k`^+NuWo&@XwhaW@lz%C!j-JC7XRc@{2YV!y42kztSa_;N+oclQ+
57208 z4O**?XG3ej7N$|)+^gwi@a)adGmH67n&WnBbP4$Mr!?Q~*yu8F>l(TOeA-MmV5inj
57209 z%fNRp(Q@q3-lGSwH``5*yWJT*js2O>Gs<60;IF~d0^9spdKWvf6KE%PVs*6JaS-<a
57210 z2VKI4f_H9)<-Ax{@dWV2{d@uV;t`&UT~`CocU-^=!37<BJ!bx6{;upc(6*`#-cW7u
57211 z7u5i7VXyQtZ+E*T-hufH`CZijyD^go@+a6i4H0)*RwD<w858##nejB1PQ(9`uoD-W
57214 zik-|ZP9*exmC#3kj~2;eEQ2a>rSg@?)JG~)yPY?Vn~9W6IXOBwksyqZooQ#2#1drZ
57216 zbv|;rvlHfWq-G%3I(kB9IKbRLN{<utEWL-+ICsKA^+>&j)F|ZIKp1J-g49stYNR$|
57217 z^*NlbyClZ_Y-i!`9Q@68eR6$)RBv@&lIHh{&ns?qyamd1rA$}KRHaN+%2cIHR?1|h
57218 zINXZTK~a2OaVzR_lyj7Fj#6eTWwuggD`loqW-4W-QsydUu2Saej;qdWHNQtau|GqZ
57225--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57230 zc%1Eg36xw{b>Mq{t$qKsch#@1t-H3~_m)(>OWkd&)mq#odFfWSBx{!~%Loj%z?Lxr
57231 z+u#^th;1eTo3Ra(-;y_+<UlguA)FcDFot269F`<Q5)OfrfFU?z_1ydZuj*>4W$fSt
57234 z_7b#H`%fG=`e?WN%Y-zf2yrL}7EYdkeiw{Kp)?&h^7j2tf92y>5i+=gkjCj7_bn_n
57235 zK6l|&82>bkci#vdfv22yXy1eL-FWnt(=&(u-`5Gr4+0UvBgYpPK6CgJPXTT-Fx`De
57240 zkccq#Ic^TxQ+i3SC+!q8gtLmAAPO8O0Ats@Ik9!?1TDiFV>-R^2@a%9h8UVb?#n0%
57241 z;Q7?^<V&-2%aq<%(dcJQfal_gWg-us2Rw3ExnL8hMX$LyRx=I10E$bA73${U7l>Z}
57245 z>4T6zP9KN-3HlV|%M`drpP|n}{wjTyP!1J?a>Lv(<XgBckRRucLw<@o1^FY~BanZR
57247 zE~74xPVyH<T_m3-twvpf8X;Gc<K!0jTum0h{%(Q%2sub@B0I^=WQm+2MKVkFkpoaW
57249 zRH$R^X2`qXeXLKg`C5(EX~^3EcdU;>j;k+_y{x?-@?#8xeXP9z`AvY;O{_Hsc_XAM
57252 zvT(~W=DE<<t}shOOX3$#-3&7wUAXx$2_HRt^f18aBbZZTJ{~;LICv2WER(|QFhYMw
57254 zNdAfZBl!{7@%O;4Um{;2Um|}-{+K*VH1Z_*BzcrPL>?d?fOI$PCGP-E90Pvr1?am0
57256 zOGL;I2|J<wH37ZEP5dv>p9lw_{%&y*>eD>zDD-UtdZ%~uBar`8*bVtRDSDwFbDxF$
57257 z8SZ(2xsF5l-=lvC`PbMyf6Dz0<Qo4z_Ad6EVfoj<Cs4YBKMDB@LK^Zv7F5U|<6nW%
57260 z%$tLMt^3g2+IFo!1)msvg7ER^?b?_PJ`#MY@UOt<XYl!P-FQxiVdH;`KAoh2D>_F^
57261 zzcx20?W3SKG)Y4+^RpB+d<T6SY5?dcNP<p7zDOU2`~@-t{jb1Y23o!HGUQpXTij`e
57262 z4F8Tg0UAdBoZJBUPq2qR%WZ(2V1}N-UF!9QKELwW4(XF`rC&3B{SBmF)F+H9jP&?x
57263 zC602paPPb%eeRNUk-ui$^bY>3^-0+Cy3_AoA${x3Nn(7R^no`m{S1?|3DUb?NBS}*
57265 zIkrIh;%ai{ogckYauwc6Z>3+E9&u-CXNiX(TG!7Kr|ZrVry=SVhGvK06f!<EtCI56
57268 ze-!XxD?lXdCLYFv2+PAP53xMRaxY%GK<+n6#V7+t=_3uMADHej9Ws?o8Iw)^C;990
57269 z^YWwe33-?FsI-g!8XxBFfynd_9f#PLCGtZ!={x|O9c0w%@wUh?qw?2bRtt;H@!pJs
57270 zSeF<wlB*{x7Q<utL4f(sfSCvHRoK18Q+QXg4&;7-9IZmKdy|*hJ<8>fg8&(>&53s?
57272 z;o$U@sDlv<7*Dkgrz#FlR(R_|WLkxj7#v6bg1iXv-mI=^M8D-LfgYIf+{>`wj1p}D
57273 zC3|Vl+BOH;lQ1w(8uwBh(ED@9@kWY+vk9yV=a8o$$6F<i-70bH4vA;?Mm(HD;Kar5
57275 zne-D=gm2K#O#G&*g!vcQt(K#9`dU4E;fd=M?-54Vk*NxNdz5^H+z03Q+sUnPs^3qp
57276 z2dliAjFXKpZol$;zz2_hqXsR#Bzj3-HOeQA@(H7S+$bM3$_I?{kWtPX<)BfvvQh%y
57278 z+kwvAKw&#r3N@0z-r$UPb!#U~A30<6(msBjKDq{%>RfycMySoTwvS(@kFKGlIu}=i
57279 z;cIiP?c>+!TTKMKIj!MZg|XJ=THD88*2lpfq2K!cocR+IyXp0Te-YSCFUM|ld1h&F
57280 z+Qyq(c3X@1m~<OqH@{rn%`XR9^`v2)_3z-iUgPE%?~FO)&RD-K#(QGWE&2p|U%xG0
57281 z1}x5lb@N~|&p^LE7qeP+Pt3D>VvgB62e$M{@KPS8%d7XqNHb!p-(cX~1y~>0u+6X?
57282 z8$e{hBl~q*N85k}RJPBee<e(guDZ6&YCcx0X)|czAAr@(GHq^U+U%-nvwnZU88?QM
57284 z7#<w>Zi}HUHfZCm73IjKJ$MUWKaX)2&oO_wc7+BWcPh{lrU%s#7ZJf9y-FVhZ}=E`
57285 zR-OM0k17;$E5_FS{@OV~md~;|*V0n}&dhVCK$D(9|5`WVArkKa_C8L}^KJMo1CjLg
57287 ztAFDHt9&2FHBwMDvU6^%qN-ER6UVkGP1?SDPV0<lO_llm>baeB8kb(szoc4B?u{f8
57288 z8mVYxBsq%TR*lRL7d2YY)cO5IjVmM*$wX1(3+mDZ-lve^5zRZI&d(1obH0(`<upH{
57289 zaU(lUtC}qdm63%dO_(`-p5r)}Moa9ACb0LsL!rY_6{^YM^IqzOv7|<3=Jr+2`zgm3
57290 z6bc%j*OZYtTu<|lj2HkBbxGAeKcfkm-RGOAePnELOq0gu5*nYb%<h>3;K;c-RhyZC
57291 zt};Mty;$q5RMcf18Zc^tE~BMttvKF_ke{EKQ-K@j7F5kLGdB-CDvnvO){V99`N({w
57296 ztW_kNJ`2qQ3L`-JygGI+xqw1t%q9^Oh^9sW$tsp0+T_BhzJ&b>uWKoIi$qpQtAEK+
57297 zU<6&TgK><(Dv@NOk^?1n7M3|~Oj}wQEo!a;fU2tI9GS!kpaK%oT-ch0mW#>D4HLN-
57298 zQ&ix=BCM>rN9NUY^Qz_swiPu`VQR<RvamE-Non?d$<sy6TbSB5H?>{wj3l7n%ldtV
57299 zW#SpxIk)WbfCv|cHFq9O4peJ+*@>A8GL8B{7JPbUZW-AJ^bVf`3B$6kTp|gtRqGLb
57300 z9A5!T#-0jLG6DEcK<`>%T|tD)gm{y{uMv%GJWnZQ(oza!nQ&t}<}^=oSRK<Gpni5(
57301 zcpg;I2R-wE!*jtPg@c-x3=a<@Cwzbij4k_2dF}oANF(sg55y|@q82DDQ!InPcq~JO
57305 zHZh@IL9EGz-XwbX*Mx{5_3c$zFFT|$R6VUNw=7a+Y!195QrS_*o-4t07St|=c^Ay4
57307 z`#?m*pH@ri1o{SG?Ur-rCXy52Oy*z*1osPDQ!k~84>;TpPRy?b089YCnr2|jHZrVP
57308 zNAmm5m6EDDcn;<qSPQ0>^!YRitiga*wRv<d<!y5p1XWZc7le!$t_-8gwSf0dvNw|B
57310 zx6UF--MLC&#2^e26i&QsR+tfyNFx$F<c3RKT?-Upu*wS+dc};vi{v1%X+v#Dv#{~;
57312 zam{0-b1BJH5tqS#l#q+#T3}>uCIXwQI#?+!w^AS2?a-Rh*~rYA(cyL9eXTb}3R-{u
57313 zwH6#LXao6kfE(%<5OqaR5NJtjg*V0+$*7+ho%0J2sSWF-qk<;Ed`e(>`uyXCWeaRN
57316 z3dPE{!g<PiW}(7*wj<00RCXW?R(2u`R(2r_R<0>r0ADx)wYdWRqz-G9!Ud}L?S`7(
57317 zw+G=U)~-c3R=W=2SnYa*W3?M_%`vFV<C<7mz%{Y57uUqfBEoEj$`Zn0Wgo&|Wk14T
57320 zz&rIS0=x@gH`eC6owXSF9eNeP&*)VIe>c2o0K7-9BEX$`6#?!7*iE(h&axH*zgw>&
57322 z;w~~le&f%|oksc5-z*+)J^#@k%8}f^%Dj_g-xbG9<n5RC@dxnRyMNikZzoZHhD5ms
57325 z>-eLU?_3G?tp{x2;3{wH>;Ivj#n-T}mwr2WMBh`V^Y#6I_r`qUzxlJ{HSl{D>^$|`
57326 z$?vzGD?hJmUwwGxyI9bjdU@FcHdw!>yzb{;XrB<1y=J@mKrHraKM<1<h{xV~-g@48
57329 z$L_Yt7LUDAQ9U-l$L_Mr7PsBxF{SyLgfC+kY<8!&BObE*ycvh!usOW;u)Pnk{3zc>
57330 z&I-*WOLFC`s&E{o(*otVErg@o-T3z{qylu&1^oTPwp6yr%b`4<?FLLT*-TgGM$SMd
57331 ziP$JQk^u(?c+JbEl$DBRb10Md*n$>ObogAU#;C7oH=BYj#aJibCWlipZ!(#DzI-NV
57332 zb6K36L-Bb64R$dYkNE6yf`29DBi|zbjW|fU+$iuI;4#hcx(4yO0T3p1E5TnvID)(s
57333 z$oFJ2*{+RTPlq4ylHa8?E7o+QXwEdv`jnL0?8-F?!Av04kH2=<2kGzleZ)<q3l>7#
57335 z-h3Ykl7S0WN++kZ=*(Q%#zYG!6DPSkQg+wLn`82>l&zHbJS0eiJcv8d$XMFbjq5AE
57336 z7%&%jD^b(rm~63$wxD9QiGhw{K9;}f*!D-yF8JFAq|uk|&urgZ?8_9qh)ML~Q~WIV
57339 zy{>!eu3hhaaV(xWaOPtdpW6C?Yd`ae-@l6&1<si<mHJ(ZRkYYma=gVI9m;f^Iy1WU
57342 z7@liaI$C;<-!^gktGD;hj!u+Jk)7v`?ET{2_|k3f9hp2?u44UZz`CFGmAl)4^(G40
57343 zv`V>2{3RCU_=D>>fYwrT7D(x*{o?whFlqF7by{>epan|F#!ME7T92-LK@?>{;mt0;
57344 zOA)QIx2H4cjpcl5!NyZhYs<Ri75Au-9kcY8<;qw&YYNTXd*j63b~OZQ=CjSJcRsNj
57345 z$Xr<=(N~}3?%+-liRyoIik5(XR~aImYb}A$vo%Yw)S9<46HvS)L_;XMjz--A43hl;
57349 zD&TL@rhOD+M2_4|z{4`Ja|`Haw<QzNu!~;@H^zc`0bhouz}b0=GvHEWx4)-7=#A&R
57351 zaX1qVirFf<WV7hMe#<YLheqbgCg0-Li+}kZ)ObS|iX>Q8a9R*CrMCj>i=^mrp?tll
57352 z&Y;1D8tZ-qsgtX&r6vtI&I@jLY(wGnRgz8eWdpWCDdBAZ;yj7L@U<uU?6O@HO}rrU
57356 zzon<=_!qfk*TxMYtKhUK9=|odZTq;Fx^m%9-FPFo+V_27ES^1Z=A+Ej?s{VOu{$`)
57357 zOr1WnJ>k#01;K1L%W8}3(4BYQp?lhe$8N*_$$_1oK0)z!k;A&-x=}&TG7rU9t=Dh#
57358 z)qEFkY-V;!tQJuqF6t71v^I=fI@)`BjF?5r_a!0Yq)<4&rLVn%pQou%&+blG_opjg
57359 zr+-B?5+|{8#DssDKE3K9m~W5MIO<QJ(a;}*YcMlRZD@@wan9t%=7H^Adm`Qt3l8Lb
57360 zjTw)lDg3#9SIKT2n2Z-wZlA+f&ZNRkin~-wn`M`I<ZuirU-=x3(}zh4F_16Az-cEb
57362 z>+=o89e#@~+Y<KJ1X=I|U>E1`Hi<q>{{Xybj_fL1ybw3WVZ-32b*bPVU%*xl8wkg-
57363 ztwR?~Xtf(AsZ<9!l#P>;Oez|7*wE98Rp}TzV@Eq89$-XdLDP`E*^Cij=DY!k0=}`0
57366 zr4)6gWJVVXC|<i&7D<#wr5f$}ZfZyn-K$P8L|5LviBv<YBUp-uvWg=d^97nR8~V}(
57368 zLJ=g+D*C;i&It_oij$RMVJ?5wgX6MqsPyIiA0O!7w-N357c1W;AA$frOtMegKn(z`
57369 z(9GPk)IjKIs&Bn!D8e+%8HR-mR~N7Q$63uGKNY!TBQDR0yyS7&-BvN2v6{SXv%Q}h
57370 z{hg~!-r-V5rFr61S3Yl(FcM`peU9%X8KRUu9!e&uZb~FWGhCf1GaalhTelnQ_8cjM
57371 zd{aG2$U$W;nN$Rs<9HrWXox$r;idt1I^-<bEv@}QZ&%75$fUnIaX%n4RBE5-?M@6H
57372 zD=2A)Kjlo6(8ga{`4h5_yAGm)K-m{}aQrGxaNw%pRF6;fA2V%Glb%Hx;t+|7e51|{
57373 zjuYUdWl<V~fsu?U;*VrX*}FFX&NK?7b%V2KslBma4cNRvx5-}hu&?k*I4KN1ZMSi6
57374 zSYeE#LRDdKC)F9JyFk>INk0VqV~kaRoi)?YgJIEp;`<-?UF1x<y)FH==gPMuHZMVT
57376 zx-3Mji1r?jC~_PG-S(i*XR`~wLQ_7T_oj<M+0o9_{aAD&UpTa>dv1G4>i@#I!p^Z~
57378 zuCB06EfJ4|NS@|}HCnq$kh`9qtRV?^AT^lm-Q@Cdyvz#@2wa0eQWhy48{n*JcQM`U
57380 zhm<(=zuDjpu5Qp(I@X4njFxmV-ay)DTa^~$Xrz-;6;CzjX5!H;kx|suuz4yz(Fv}I
57381 zq8||K0hE-j)Q*B`?F#VTO#|Kiu_l{6?Fnp5^yKaFMt`u$ljtiKt5O?1vat_>&$g?Y
57382 z8w=q;(v$IFsJQZ-l|P{Y{xF<dJIifZP{cMCGyB1%u1^gmsm53o&#Xe-u8fqh6T}rs
57386 zXS?CWxjwpx|F==OB>@Np11_*6ZW;q&*kM-v6voxt2>$I+YePiw)}*qkTP2R&C*Y-#
57387 z5!~W=6+J#2yY0@=p7_kwVKH5FS$n5*YO6o!Zrj`%7}-4Nr2Y-fmcF6Twi`+=-W(}O
57388 zvfUTx3po-onX@@1!D;t~Er|_HR<GYC7utQIPccUesv@}@|4wMoBf@3UOs;t@5%KUG
57389 zPmN&E4>2Eqb~R3~sZ^wX;F605rc?pH-DZ|aGi|N~ge)NH#;c!fb|a5*yAtE#Ty-1F
57390 z*({E%yXEj=V{mfYsN2NZ+=@kZ#wyn)nz>MCEU`J4-Q5>RTHQ{iqd?70ui0XXCxWs`
57391 zu=t#UXwO`gY2FeEMGdKR&;`;*-magmY`H`TY`_JEfJZQA0t_b?0tsPH?F1GSuyr?H
57392 z`~gXLz%<0h&R^`$#Lnm-Sgn^U&<vvOBYi3GfdQXb6Rs}VZsWo$X`I1;bO;RtAZ5ka
57393 zU0IG|wzch^%(NC_j)>LLF*d16R>>qPE{EOhu#E2Qh=y$@J~S{<^f!BU-H<bzqD<J{
57396 z%?_<rGrO6V>bJp;j@lV4*;qR>$db#S8OpYtEK3%XzeRNf<1VM-3x(Tf)p)^XNxQ9s
57397 zQ}J}K=u|AWOg3z@N+F-GEu<JHu|K2_k`n1Cx8e<ER`J;c5au*HXCkJQ9d7Venxn80
57398 z1pRP8EYXr-u7<s$JOL*eZ!isGt%h^@#S)y;yrqO!J#uZdJL=ppnGE~XU~u?Yc=IG!
57400 z!M&hrr>8U<Mj#mltgzi@=Lx%AU~RtIuINBPW|?<`PeS^5S|bn@8;*5g@n-~s1N<5e
57402 znY_H!YYL7{jrwW0DOfJFO@_Ti#u}T=6UY|IU177w%v)q?are4RW`{%tum-t3;cfIO
57404 zpil!e)H@9v5;!WH0mX)s;_Yj+y-v$f$)n+*-(j<uahsKDK?N|;P;&i1fNIXPyvDR*
57405 zS1#-<w)uIR)n8I6Ra};!-5!Vs!bykS6L)xqlxX;xe5f;R27ULmdF?KnI}{9f&0e?c
57407 z5}(r=vdbQuD`*e*#+?zb2TpAxP3}flLr>c5P^|72pWQ9WW;verw8mp~cS4CP-U)#(
57408 zy7HY+{SlUPCO0+VwUDaDqrrh(Hf#-89ZliuZ&N+>7ehm7yci0MMXg>@c9|1%T``o+
57409 zcUM;EkJ#Qj`dq?eMGJ+!x1sKO4A81Y-_Estx3aJs_7D*_+SMZjyM55_S+Xpg2*6IO
57410 zU&H8ojlHCH$Ghiy63xC&wPna-lDr|C!g+Qq=B$dD%a_XYjm?9-G?C~_1yf3zGf8H*
57413 z&5>f-)!^{v)p&n8Qc4$0E{9@q<-9Jx&1Ckpw<>X~!&VnLW#9bB$q2`PMdak*asjt3
57414 zV!v|Ol)K?nU!vJ+GF>rf>a28;y4y4L-}3e>95imvRH|P2_N>nS*$vuwx^{zR^E-oX
57418 zYtAzIzjY2X>-|IW0yo^ya(!=ZKpwF7Pc}8SDC}IL3{PxyQ%@=G$%mS@HmQAKd(ht0
57420 zCgJB&QH4kEA1Pa-paLm{!<&ION&G#eCk~sO&$IS8AfVv0YlI%CenllzFDHR7*6hrr
57421 zcY4px0nszMb+g}OjXUt`NzcTNZBfc67dl%;lje@0;ZBRmB%16t#uRs|&>%-*4L;6f
57422 hm3VWeRgtWMWb-;q;)Y(g({JZJ!Dz@L+aQXP{y&^G*c|`>
57427--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57432 zc%1Eh33Ob=m1r&R^}g?|?v}dMYHi(W$yzPh*lq2$ge}X)ksM<rTVAn^F?-lNY;hbQ
57433 z!0<_iPY6SnNr230*#sCSe|{#1#o#4gMCSiY&M-huKAF!UnIywc7*PLv>%DHh)?y%#
57434 znVdPia@VV>cdPDFw{G407MV~&h!Zl2IQqJKdYArcX(J)Lfe;$*8(OpOAHMqa-x6Z$
57435 zCq)12zI7LM{@*p18whDUMo9FTHS6jd|NJkv-%ALqhEc}0?j7H6`H3R}eSZe^?yXl}
57438 z1?c_jz2n#J*YEQFJHS@}e01OV-fi`{-WV`D2sE$Sf7umR=DtRNU)qh=_aE4{e`48p
57440 z+}rp=9Qyt51D`JQ^zHv{cOJzS?ZLN-7QkgX`NED%>`VWR==qy?<&}Yhm3aOq-@mS!
57441 zzWv<?ok#T`Q=$XP@&{9T5)b55oF&qLGKU1$bk({#T{rMbbX7{}{V*h-h6ahH=siS+
57442 zp$@YVs1GP-x|uZ6PG~jDOp+zWBoJgVqifdm(F}~+t?;Mc&tQhg3PDzYy^N9v84o-|
57447 zq&p$sO?N}Sm+pmpKiv=cjr2yy57EPr-%0O;{9bw=<lmy-g8VU9Wt1MFAaVK>eG2kd
57448 z>8pey$&fE+%OUS%fQ83-9P&kc5#-Ih8S>}(D?$=_vJo{*GD3MLtWu>+Nd;H{r3~_+
57452 zBaoLv%JUYT!(Ft%Uvw6KT7LS-8c2Om`lwPWu6-Cfy5RbLavjumLC>8+YK?-9HW(dC
57453 zjgX>1&1H~wK!4<XB}iZ^P#lF-zeh-QxX}L!mA5Ozj9m@+1VDb!5&tiedjE^1ON&yL
57454 zyhDdY`u_P6^TS@ENjwH=VpjS(e-D$?Cw;pp9hZ*FL~bdhzduiUN0<DFY3nDH-qF3I
57456 zraMLYw@=fbda|##|6(RN24|%s3nyofNZ<H0eL(ub2PHy;$7_O}dxY@r-of?6Gk#!v
57457 z3-Rn3zjB|5HsFBxf)mAq=3B2ia0MyfJAU9&QnL5by_W(EUU3V**-2dDj8Tk7$K+qj
57459 zO-~nj=b|n5J3$#G=wJU3d{oL^(5DV|tU=mKGqi&?(=@H7<upuv)B(vvB`T3=@;mZt
57462 z&U4^-liNgDC-PrRuY>%W>7(f7Pu~SsU(79q{98Gc#y?KK2kqUt%}{<f*ADqP#7O@s
57463 z*9dX$o73NgmYZ`R7rJj6TFA=j-$8!q^v@vg&w;N`hI1&p6}b(NpFqmlvT2M@*1!Mv
57464 zkdM6oKe6xoKY;cNu$^UcDBCY1B-xRB9`ZVn)@$T-h<1K1;+*$M4x<~4Z6LCNs0Lyh
57465 zh-V<0*$z?6Zirs?L)3DJet{l_hy|h*h*ch=kJBe0PI-#H3bDy@)(P>*B8);H*);RH
57467 z|8%pcj{u$@kTB%$O#cJqzZd!Q(`x`LdH?f}%kSg-nR1iRelm9h<Zt7A(0_UFFF-mE
57468 zzPAbI?EL|Z@TNZlSO3rSpqL?;74oK-r>lkR{#E2}PJa{fjnk_jzhL^$A-{6^O30I+
57470 zR4uo{uK|9w@T<`LN@w5;{Q~fF!Ox<U3++1i5#>kTh2L-CM@f~4sTFA`viP{#l_NOr
57472 zCikK~uv0ku5M?TNS}1vmTmtzou`E48lVFjCDBhuX6f6!xDwbBv0-GQb|8q@!J=8a7
57473 z>fKNeYU<5IVn5Z?E1>>0O&#ns+oGvUP*2R%>2HZd-_+E92KC1^^(m<D)6}1X`XWvJ
57476 zl8JKfjY3YKh9%@d5+wt{J8@VtiaicX4s}-ysP}cWcXX7yIK}sA9xJ{#!(Zet5(huV
57479 z&7o}d=-Bq?;fqGHEHSR!%-b5@5{kvLWHd{<;@x;xuWPKcE=yC{=-BqUEK9{>@mO7!
57480 zr=k-_xyMU7yRz=C=-622B=dB2P9}I)mUXSaHk!4>q0luxk(Gw7J;E4+VY0Dp;TX0a
57482 z)zsS6v$ZFy>luk<d17?<vm*c;Iy@514h=z52B5Qxv9x$}G&-q314Y%)q}HO@2E5*Y
57483 zkUtn2iGnl^k4Lknp^-6YiQ+XAmRhmYIu;rm9UTpUw6d12tywZWk|hHO9D{mjAX|#1
57486 z@!`>t_-Jf2n$4^mfoma@i%LpeR-eimyOKvhKZVo{P>pxSL0#gV<5{+4dzNkm1X+D;
57487 zUDlY2BDFSPOCnpMI6^ivHi{r)-GW+E>WI-sx_UZmV+F-Ar-~KHqKrb5KtdO=J{Ijc
57488 z93RI?6~ZPVoRDlZ1VrYkgsF{>cPl8Y3v|y`Kra%SVNKh~mJ$pdwOR=80W6_-Y_t}X
57489 z*q)kXtS37$-d&e<qyRJ;&Dy(G;Q&y88Ol1aHVid~m@g*`<PbuMf(*6-=B%@8EP8k>
57491 zW}Qh~a-dqBlXlD;kY%Y4=7J}NMkY~wz;EYam|;NcsEx&;TfQ7pu45Ni$=EUqob&<x
57493 z0u(|4H|gx`L`isn5V$t!F(k8JOoqxqZa!evo2<+FQ<D_W0T4W%gQ-c5=aST<gy&Fd
57498 zIAQ(HOAEFW-;=^Q=w23IJlRaW$ZIRe0~nZ}epof*i|ev&skDD-U3T#Yfr5r_1@Ly5
57500 z<hH}<cr?27FpRmR7%ZAr#>?tpHK@?h>=+uC%-WHoQdEwHj!Kns$!I5<ToYLDxabk@
57504 zbmgaO3_YFMEa#^<1NI}0QtZw8yGDjWu(?K;j;1FYs0Y^VilVE-p`oIyo%8lRUyrU-
57507 zdwhoK^|;g7R#@e$7HA)U;i$)*ZG-Y)D%%dH3sH(aAns@{?7(?xtxlmrXD@`}n$!_O
57508 zdZ91`1&W2WsUuXh3`0S*tV5VSD6B^qEL?;zSlECtSolopDA>X-D2=4>RRb)IrjAmj
57510 zupMErutU(*4W*reE-dX5bYW??pbJZv3c9egN6>|(y@D<*?Gtoi=`xV<(!vDp7qx5#
57515 z_&O5iLkstp9#Qf9l3aJ*fllV?$xHCd)7hGPgBo&gECfz#$X-!+EBA`{%|6~Hkq@GM
57516 z-s2&_`Ow06KZ%2_%l+n$IsQjIs5$pzajsSPrf(~Car})&7H|9kayd57+$==LS99;?
57518 zuw8#zdjB7KtkKAS>s-D5^!W7n^!SL!ySZ0sMefykuRXLtd;a)C*Wi@KhUNb7bqqcl
57520 zlMTD}?Yfc-?YiQ!J!IA1Z4<jl_klgTb`bos!b%!o>=F_J|2INPNsPovf>e_l@g$m(
57524 z-}9dbayvkF=OM}K1iw_kZx-f4E(OSv!kAw8;nVBgaOEfSK;t_*m82ZxT7newF20g)
57527 ze@W!WL_Q_*b0R-0@-reoE%Fyd{sQ3EV3yvLUY~<|O5mOnxTgf}DS>-R;GPn=rv&aP
57533 z5l@K`Pl*vvi4jkU5l@K`Pl*vvsUreqteY)ki&-N}u}aN&jJ`+T;U~pdC&gGN#aJiB
57536 zq)TZlZJ@QZg1;<!zASpaEPB4I_5@6HF>RzNT1lg{1p3*ifim(Q*sx!bf8j5QJ}-$r
57538 zw~?F3wd4TV16F(tU=VJOtqeRM>UPcBsvF1<Sp`;q8CgskVOOgpQK3yg5*lzy%-u;L
57540 z?||GR-bkeCJ7NUr(blSPXP^5H74D2PZ!r-)C&gG;2XoP%d8V+AZ!y9#L;_H&AU1j*
57541 z=+18Ci#74S7Z*FKf={Qu16JH-rFd8BCoqRkl80elZU9+sAf4btgvBUKz;hMeAo>=!
57542 z%s^=|&2Gt4R6N$~mg2fz!v`;nWi0TaZJXU<&|qY9FtS+~XXw;{-fadgY6iWu%|o?*
57544 z<Tc3gi%c%Q!bHrv8NGs@b2N)w%kCzdT%Qx386G}JGHC@#Sm?LGIw{mM^^HKSOlP-I
57545 z!H<?BNlT;3Q4Ot8v<K=nbJr7#f=1o~HUQ}vhE-ild}94mO(LN8+BP;%8=t35QrnQS
57546 zcM9LIN<v~xe5;BaNgCO6kXwG0GSM&pHSB97|Lv>z-gT~I=?2<NEnqwKs${3Y*7br1
57547 z$>66e$aO}7I#sIL7W8Ku!0$9^;ET1bxMl9B`Z=Q_R4ve8C_vAqV5UC%YFI-#Cv;BF
57549 z6D{N*@LB;9WKjMcjIauHdq%3Hz>V_mD+RqLDlaoFT-BbuEU=BuX)%z`f!+?mK2!;D
57552 zUF~QwWOdCO#P{xKG4$e#b}qhX=i*y-o%nv8i|^MtzN=sS&ARwbT@qiYOX3T4)FPW^
57558 zZuQ)$o@>=}je7Q}XRkQx)Loi^NB?cG5t|F%LUqyZtk`}03m(<rof-%!SUGGD6za-a
57561 zZF-D;1vGUC;wc|QM$ZYo<_jdnCgIl^h!wxput41ma<hOW&4L;|oDFa`!r268Gb9Tn
57562 zE1a!x4oG)PS4u-tEq@mxmOJ@su4CV4JAsxX5JeuOn;`zvfsgTb5O3WEy5Feo^jaF2
57566 zZ{H81Kri~vUX}d3I&Yb?GWmIR-ZE>I@_BXMQnXU}ygF~utXf{A^A?i-E{tndGXn`I
57568 zLo^Bf?xT;RcQ9k$S%yACZ==h^+H3~DPPs#)-FYl(O^FzBWxWHw$tm(ISkn8zo7pYy
57570 z*I(#M3w`~XojTvwFJ^mYM%9>E<NI>;Z#U)tYSYZ@DxNO>Ehgl{pn9G-uS|u;8D-*2
57572 zkAo|JH42hZ_>Q{)$9>|<+oym&S=BD($xtWkwd#{0fE7AOl&}1C5PKqmH`JMMiZ-8+
57573 zw9<xuK|n-pAWh}VPOe@d#4CCfG#U2x)8wzo9b(s=0PoKOZGnO=OB#L2>+?*DR_hgS
57575 zcs+z_YHCaibDM7y7K%61?ZUU?N<^UTLBA||+*mY<;0Sa{7FMkhBxg}qK@?its-^R=
57579 zp-Zg5h0qgd(TOo`5uO0f&Ychy?Neh5S-m<@xVn!FK~k<t>eb%D)gkfM!17Prm8;c-
57580 ztBs(G9`&l&?;sj_g(!cgP|;I$eQ^BC5et8ZtesCu9p?-o8Yyljc6?@oPml2V7CxE7
57582 z0k`&yg;TN;;I9r)y+5h1tgLET#@d>EKCeeFd22n!c-&yDs#^EAzJ$YItx3qiDo@1{
57583 z@=1+Cwn6#@--ed)sEN?VWLs5hYg^kg-saco^jxRA-Y1*5k;#r&*lRG$PARrc_D}Tx
57585 zlC`55Gt9k<1ZaTkeaTpPWlJ;A-ir9Wo>JD-==JDy)Uc{YZ?edifY)r1{Y`br(&Xj)
57587 z@BuE5*W>g1d`*pj8~!2lHi?d|xn*^*lvbxJcJ+7Nd-sj?txIE8kENk3cKMgS_J}ib
57590 z-{NTV{ZAatQ|vS>3HfXVf_<@oy}Ue8*)|-mTT$yly2I0t^I>+HG?B%bmN2EP-svz%
57591 zK=7bYbVhgKvgM<&VF>CuSxZT(HsG_FNfT{C;;BM>Yg?Mf%XNCxtJc=0#!}`-=_1(-
57593 z?l}11^y6#p-1ObA|K)95mYBWLknV7J&9cdA(3jOa!z(JAt~%JgX8)4A?>3Ho^ZK4V
57595 zCs*ED*OD|b*(5Wgy~OR6je3cL3Ytsm;#HS^e){qLtGX}#+x_P5E1Eh-8of>Ri!Zyr
57596 z@22-}>KN|sOB+HL9p1C$`7LD=*MGii)fJgM)lUG`9i%<e+6baIP{;<ORI5S-HYAme
57598 zYN(%=y}HjvL+gj>?=z!4nJPnY<gT54TN<N5SgIb&aP-#iY(zGdb@ET(y*7~t2D0X%
57599 zk*D-JCc#n(iGoZAM@4hS2Mo(pqD)d2j!v~K16eCvjSv}n$<jf9B6EQ<<=~Zawx7sc
57601 z>$&fX*VHCgc??d2E9i;)ZT1>(S-H*RaSm>7xnpJDed^jYI`ozGHoL(Qsr34ml$d?y
57604 zBaV#KBjLj!z~!Ji*n-lms!cIgii&YXB=GOE_J)*M4y{=eHko8<W;%N~;FCaRoVlEq
57605 znBU#Hgt`JIH+R-n+DejD)Z5VCy|!KNY+8H6XZ!zKXTxx5Nu7e7mH_rzlFlR(lz~!!
57607 zI4z|fZ}Ti#eVL8jnJRsG_N#-NYGZ-QI#(#3>?sMQP+k~`yvkORFzGnzp`<Wta1G24
57608 zrFJTINYuvBd?TT-L*iqnFbO9(Z0?J2g9MEOyIO3EbOvv=ufrdJfv9XW8EsZCXgQP0
57609 zN?KgrXuK>ou&kujS5*^^$Mnu<YtzMlvE&++DmnpFRgeuCb2)m)gDw-x>lAur3|7-F
57612 zeX@~*Nw&u#UZYud=#8>(^UB}Xtmqoa7(83oOuv2$$N@dK?~!-GXIpaA^b!3RJ%q5-
57616 zO<tGJT()*yubVn*Oa5x-PH+Xj@LW$>)sBOIAzXnC-x>bq%}i&cc8}2-^Cg{<WV9Of
57617 z(R#=3TW`Ht@dU=dd3|?&CEiN@JI=t9CL{ZZOVL6sMN3i4fWcekFD<uv-F+@^Sw$cy
57618 zt@{tg^qbsSrl&m+341dx3z!#*mLCQwAtelEz%Ry77NBY|lz&Vzmn}~>-h5Y&%)CCm
57621 z8-*P~9tWpDUOTF6?BSAt&*iX~U>(J2T(4P2ZDJqy`wClmm9m%PzuHLBv$Uez5i~jU
57622 zW}nUKNV&sax5?tMIV-%jIIg*Loe#VUL%<e~Su7!6xY230sn&HTHIgdwgd(K?M=9No
57625 z=nDpQlB5sV%F97Q-Tt7PFrh_H(nrCQsfGQ=<ffdKflJE<XSN>*Ho(PYtPmyP_ETtv
57626 zjc7D~k)e^aQ&L$GF0onA+mQ<stoZItjlhPmH#SxU%z-(o1WuKSu66r$)L!Z>U6yQJ
57627 z8E>?5v)9~y)g4L0lKmHlttFO7vp1A<1jFrR2@kU^?yqP}hOBnU;)prc-`w|bsI6Ky
57628 zNJf*(;qOvs-bc5=#=S0M3W|NzLO;f~YEhhkifY(YgQ`Uk-Y3`uuSfCUa5J?rG!UV<
57632 zTj&zURWa)#Rdvblbvbkr3DFShQoLMcAn!Z-)fEBZQf*rzQpu%&&&&7<s5E&@mCfyq
57633 zO%>(I3)8aIZ(Pgh;ziA=NY5gq_1)Y*(w~y|NGVxAkSziF@Sy>0sM4-HDRQ2~QW*p6
57635 zM^&)I@Aj^^zAogpB%H?jviRz7%IWeuN)s+;b3-KN)leMyWGD{!JT9BXWFQe5$y2P_
57637 zJAmg2bS)no=qd^yQ}%%3V0TtTT)6<u{2N6nY@Z&N!v?!&IW5;0d7<j<ojKCb)q-zY
57638 z(_}X~jn076TV55y?K4svbvjFY$!-iLE8Gy~dTeI1&skAswFKh5OY*+cF<uU<dC8Mr
57640 zE7HH{-#V1)&*W_k=a+*mUUJm+(Y^OD4QsvkWvr#Oxj>cJmy!@(ChNU2FqnuTQD)ia
57641 zb~X3m?ajJXqjjl~<c0V5>OCvcFK_?al8$Z5RPT=-=J>88cz>?E_Xod9TFLU}ARmC`
57642 z@oA!R)LLc_rGlP;HgC{I^(-FuN_toW;6mskW%jC)>Lt!Z(4MxM8ae{*mI|xCGV!Cn
57645 z0G-vey0A0k)odor&ELSr<$#+6lKokiEHkE;xHaJMSgevKRh@)AE>RcI+Zx3*?+f=O
57646 zQ@fY9j;u@TI-Wb6x~QiHn<F)@x($of9s2;E0B$ZqZg9hPe;nTeL-uM?jU3Gi+0Vxe
57648 zD0Z5ChOZ@yNZ<FW{VtAdpt-gy&sx|no}UjeiSymq8O>NJNyN({WD#8?sk+`)xI0(4
57650 zTFc6PfofN*JyVyTqwYP++QAiBbYV?-s>C06ReHQLdRGDdKj>YB&^y=1)Vo+&C<uB7
57652 z_|Wd!wOv&>QQ;a-%SDa(J4KJshe?7AXN(cI%Os)V&9H(`Q0FLJp_$L;8zxAi$f3oJ
57653 zB=3^r69Xmg$UiVpEOz5~!-eLWNJDeD$sLUJwMI6jqV;y>+0<9Dq|D!pI+v{J;&!v!
57655 zA+KA?htV^7m1g4E#xhp8k%9Nl(XKMtWVLs<l?|;fkrQ<e^WwqUXoD}{T-4v-@9JM_
57656 zr@jknOzkUzYcEMVxG@C5w$<Zr587g-dS<cfB)ipJVv1c*ZFc)C`c$Jw_IQoqRMe|;
57657 z*a~xT7pz(kWDwM<+->1_|5KR`A1o5#n8V&)G$A4Fg?Xn0?0|2!yPl7essy86Zz=cZ
57660 z+>};)ECuXv^j5s3tc>MVtkz<(RXOV~-C7=4wYJ-7U>2v>q_>xjZi>~gU~_4#zqV>)
57662 z|KO1_3}X-GmwJJ(()<-k^-L)jVQ#@A1=f5X;fR61uZeQ!iwA+JSfsV0$I2SLx)rGi
57663 zM1C;?a|cY}716SG*bJAi-zf*Z!|fGyo)U+ts>T}k6P5Zc)CNAqGavd6kIeAWL2>U;
57664 z5_foJfg#`Vywgd!0t^23P3U_PJ_DMmoexTfw;1mr;H-*gkJ30e>r&o5EsLOgYO{h=
57665 z!0nmqo(gL+^W=2q{!Xm4wW7Q>ARA?uU+*%z{Z>bn-x@Ug3_7DZn6Q>LMI#+mkusfC
57666 zUn1#DL0ehEAe;5hM7<^ALP_Ov^ev&e-A~6{W{&ebkc|MV&b)5Y+Y9@cy}0dav4Q!$
57670 zZ-fd6OLzyy5x@+_80sb<?s|(Cm<}o+Sk&$kz%3Zh4$@JXh?NC>a$&2Oc}%E236HBc
57672 z_%BI<7piU_?)s*H(IrbpNj6E6$*7}7S1RB&7$t+<W!B5dMGj-oXNUzHA&b~WaK<mD
57673 z*Fe+>-bq+^C$^92o!|;o!b7>pdvDFZ(lKM1lo=PdRt+wLCFW&3lfwH|X<3HdyQWdx
57680--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57685 zc%1E8d2C$Ad7pX5?s9o^57OK<{g#iHxNnyfMUj-m$g4fL5-D3eBxP6fvCB)Mql1!Y
57687 z-#71(A|=X^-~>I)8STt(=KE&8Yv!9JDaILNwP-X}lTBxaDnG1zg)zmz>;u`+Lld9x
57689 z_1J>pewY0K<7tdrX6H|w{%T+CdyLhCUKKb|yfBaX8qmY&Jts~*G5gsjW-?YLAmfiu
57690 z&J?Gc-&(#3`WvA4oy0`_<totmi?rX#(+d|HuC6@ESnGdbzoAoSr;1%u+xKJ3!;HCK
57691 zIbFOs?>-jzIrv+^Z=5Nfp6OZ{iojUNQ-<fyURYT98tVZ)P4xNmGxO7X|NJ%Bwt(@U
57692 zGS2wQ3aduX)W25VX9l|fKPl{4_V?^1?C@ai-^sDcWLbHQ_PWiIMO|jg>deZI=|eKy
57693 z^H*VKUHP?3Kd-J`rkV9ceL&7Y);C`M!Pg(I9{iBG)qf$%`y<b`QU4FYpA28S^s_&x
57694 zU3SB#%mvL>i(;>2ezaWn8tafe8pevN-Ia!=%<iv-uLjqogUXs6T!oQpN6h(fxpx`+
57695 zAu4AdpmO#h`-pMw<{q>@?nC=3e--WP{4&}%`J0TZ@2c-&Crz>VD@?~0i%JeVjo3YZ
57697 zc)mEv{HKZwXQT%xW-F45Pd$460`o|F>7zlrGW4(k*1Oq3%nsp`km7gCPp|Xgpnt$V
57698 z;vU!u8_7Q2&ZZm>a`s*JFf1PB&yrW<+{hL7H{-by=f9N~{M#N#nVK&#cXA2bodlLE
57699 zH14%gjUtgJ`L>z>xg5AG`8Kohw<#RyQVV}^EGH5#=4d>fE_KlOiig<~ES(RP+G*--
57701 z6+h}=l@0M42W#-nj~uMCH(0lWT|kW8&(5+1eC}sO+^Ge$r`Q}j$BwY`Y??jFVr-nv
57707 zV}HV)M=bZVFjje-TTYVED^EhY7nRG*uHa@fM|-!kAD7vb`jbEl#EZ;!Gj$lqk~@94
57711 zbxrJ%;*20yYNkldl=Yg)6Detq^wrtb_k!dlq{eT;K94gKXHCv`gDU9<-I3$eb$cm}
57714 zC{oSt4<%|zC7xfM<ZLXTDCf*y#~OHp>JCOD&22k-_bUB;BtPJ9Qg-wN{4N*w3}@Wl
57716 z-z1f@+G^ItyGSH&ZiCEq0{i+&fj;SkD#Z;yRH<&fYYj){`#X1r!{Lt9;pl<qVmqT=
57717 zMfd7TS#_f?pqIHd)ur<C#+cduxfiZo-v4O&!M~U<PhZ%P%=H9zbPb$+D*MdUXLgUL
57718 zvvE)8$l|HVcP8(de(HtP@P)*x)^9-T-E3E)uZOFOhod=YaAjDYR7IUzXNKmO(H-B`
57719 z4pVmX-TLOH^vQod+m?Vo7~IhlB#)ZSZS62>GrOXeuDi8>T2>RR3Fzf+Uw?0duc^~-
57720 zSQRR->+agryx4Igba<TqG?C9F+C6vWUOJhb>@n^_Nc<J!#&dsmjLhUKT`TXfm(?K_
57723 z3WpmN<)9zOl`hj4k+K!(V5Nu~q>P!7aAS?SiEiZI4X(UNO--p(z18(K0e5Y%zo)@>
57724 zPp8k^S6k8K5A@!kYcO#vooIJAi$6U0Kxd?(EmjvYqnXB#MW^C4UY?(*Wym?3-_PfQ
57725 zdYOu2SRJ`LP*$$jxXbk5LkE7kZC@&v@c5?=UHiu`!0z|4m8zb@8?|S-?hfy!TW4V&
57726 zri-$@8E30+N6%hmXJ0R!DpEmS4<!ooqFn)<bKV*WXfAx)4*KePvveh6!}*w%i{AI!
57728 zR^E1Z|E_kct`Pa)H-FFL+ZS)`+1~p2TZv~#oA0A}UVR4N^NuFGtvCYwpbvM?*2yoE
57731 z!rIB27HLi0C$uJVPv|aK)6U!1S!1WkzP?-A5*zR+n&#H@yXymGUfplClPN9n26t`m
57732 z(5|+qU)kAT-LY?a<i6AWuAbK(=^RV7lPTeC{+&l||3~1h^1rIIZm5skW_^bb{KEP;
57737 zm_v&>LyV4MDgkaWKxiPJH%c})H0r>VGcrUs(YuNBJEJ)R-dHRe!aJHPV8$Stmrx&}
57740 zfS58CjYY^Rb?dG0&{(c88Y+(Gb7nr0H$-A02U>{y;;0f6ZcCJ<qD%M!DZTE&&`g>*
57744 zs7)1&#eyMf;kKBlvqlc*O4@Wf-y$k!%!@JMvqr{pBNO&yD1v#PocCKLR+l=GE7jE@
57748 za#4S`RdQ3`WR*PB-(!`^sE=CaY9NHG0GFFaT<{0!+Qfvlju>1cp0kOub;Pzc;(42B
57749 zSWHw$Z)Gsq`Yqd5GIYIt5!h!yuV&asy$SoMZ-IT(x57T^+h8B{?XZvf4%kQiHrPjf
57751 zXEoNPDp!V%p4i@5(s>}0Lv|!9cdT>It$2DZW2e-7Cw8-WGB?Y_{oPa-nrFdp${$D4
57753 zi)50+3yAcKr)hxmfFB;-jU*Nn^<dMGS6d}pse&a%c`7=y7&i@La1nd%*~n(Z?frxc
57756 zos@cA77oJTsxJ)8>TQlM%t5&6GixN_mGmJqOF}7%d)Hh@#@L<~>~Jn_4B}-c?VU-3
57757 z^m0NWT&)-#SpOx)4&r8~-HDb-NB-V*nxt04RiJM=H=4W};so+XoV++B>QlMV5FS@!
57758 zFdr{<b3g9wz75pz(C7wga?`aRw<2YU-O-N|n6|{8=puBZGX|q>$%=r+MK@Mtq{(zX
57759 z+icGl@l7phn@$JR#Px~e=GprXStTzXoz*3Gc%-wxtW!)jQ63vKk*e06mq^~xGm8Yg
57763 zh-W{*H1QCaAszy=#6#eO)GG~iQtCx$PU=PI5vdoU&q=)qosxPHIxY1gbVlk$=q!9Z
57765 ze-isR3{TmR7@oEvG5i{M_pa^tj2ub!&)bmLpS2;e|2kGW3}3JzF+68OVt5|B_pa@C
57766 zNsc7@7i~!FFW8XSU&Km>;WunZ42w1-hA&x5<?<`8aD|pMMa|%+C#1oAGAcYXLTwqn
57767 zxcXSf5IyyImi-_2J>yo{Dxa#thuO?6X&(A3{4cMl6D+KbvhXL~=x<lL*mv={&BC{_
57774--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57780 z0cnI7qXSuB4%xgX*$*V)rFurlfH8)(je%wTc6r8&!8Q-e&krxV3#<*;9P0f)GON1!
57784 zM;DK@{NBZ1!1Is8^Zw(|5PZ?y3iprVc*k$M`~Lfue)f4n@@+8Q_EUEpUVO_B-nAQs
57785 zf;Rcd+ZOLXEg#T-2Jp~_7`HFpcC=%8Dn*ENH{d*T`i{HqUj7K_hUXLb{PdZlr;lv?
57786 z-Dlw02jKprgc7>EOgwNU{GW1PCkD9-=){q;<QwEMfVxrrAMBnd>{xyV$GXB}8qSO4
57787 zB7b!G|KJbjkWc>t*6DM+dhTZ)^&+-3AN-B11?JisS$ODX&*+bc%zqc3e0}z87O#I3
57791 zrNjYs``BlQS^qRHd}67UKDv9pR(W(D?~hC@wc-7zY{YCJ6V>Qa4x2t>J4>igdGzqU
57792 z`U5;Jx;g63e~K=js|k-Sab)76ctj!-AT|`}*J3Tr4R^dL(bkVL+ULnP;iTj{a8mL=
57797 zC_Lkd9j-th@<q}~zX*+>+w?Q=dkKF334R}=&(de$_kJ7)u1~@bpPi@A;{9en`Y`++
57798 zybR3!@H+#)Q}h^6{aJdzY->E<*Hpg_e%s+U2ES4G^~0|detB~qoDWvf2{Q0K@?+pW
57799 z@E$pje5V?4yc2rO!7R4|PtO4_pFkc02cHAZJx^btFVc?#-<FVHz^$*+SAatUz?m7~
57800 z$VY$^zy;s|P@kr07-o8zO2C_sF*&$_4ng??^1Hy5caWb$`w-YL%6*W07a%`FP^vz#
57805 z^=UR<r*(HflwE*3)+eCE*%!$nc7F`Y+ZhH&+5IAvcLG*-vb%XGTi~p(%~-cOqp?0?
57807 z016xij1AZgPBE(PY4pF#TH9TWWA{RN1R&oy{(T;qRp-fd=U?H@weI{rcZfT==KNjm
57808 z2P-Gv$=|_$2~WW<+`a1j4dH)X{uDblIB#t_|77KquJpL!GUsn?bjmkh*=dV4oe!-(
57812 z3+(z3&XXuWJBbS-EI-jnfc1{BGR(>lD}yBFXi@%HsVUDWhm?vEu>aitUHez;FWaB7
57814 z#w9Yl+Sm#hEctDK`7Ge&!x)goUoT=jwgIFU#?OOKmj#b5fwMuZG|unh5AX-!?k6lV
57815 z#269cz72Yh!aR}2JQy9KcMowO#Fy)#-2iRQ6Twxi%!4r|#2}PKqTgxiDOf#y^?Qim
57816 zIQUVF=9=J48u2g_1wYSCFrz?82f-}EH(^AKaevel<;W1{I5D<`IH#Y*HqWh!XI@zs
57818 zcapb&H+d5L@B`po!n!vc{ki7xAs*(r0W-GceCCyY)w+Jcy1rmtpSP|bwXV-u*Qc%P
57820 z7@s)CW0Ybq;}*~Eky4oFQVC%(x7ljuGAKOZ*b|XGF`o&I9vobG_FS@_n-Jov-aK3d
57821 z1|>J3OgL%XNCI3%xJnS8{Vf>-3I2eEJ7%wF16yAMTeDqgw3{Psv_jt|>+m&Zmq02`
57823 z-#^Z>KA7X-S&oNeJ$aVJ;jCN>%8>Tz-!|PzuYMNSf^%4HXc0Nk4+-a>Us(0TM<mdb
57826 z6AWjy(N#Fs$L1U3NR6>qxAANGaZNCs)kasXxIQ-57)NM~y}FHG(~oO{;jFfmlMqK^
57832 zmnP-w&xp0sr`Uay4FP(!A_VU9%@&6~j#!`!G@zZh-_fTr$83(Zx(D;3D3icu8}))I
57833 zFKcE-8?^wE@;v<{@bkCXjEoQT#Z{Pa=sR%(AS17^c~R2VLPUrHvhoFxI0wj;6Kx!v
57834 zXb}}_OveAZC$kD?A6w;nSFQZrtnD%2x3!y-DOj8NZpqDbR%BePpOU2srVgxVSu+o~
57836 zESfK54yO-AQ>hxM*2s8z0^iJxFN~FHv{*A1j+JU$F`Y`MN;SS{9J$DAIvE?U`Nxfg
57840 z&|=^-1#A6S>tBd2RIAk}P^;z~KU^bw=4)gYfm3iFovkIXmY7}ql$RVvh);>+P_=qw
57842 zV+KCN<wi~Pu>`ou!!<FVf`{YAdE-3HwbUtQfI_?H7v`did#dy4YN~3~DtqVQSrqAF
57844 zf-FohY?a~#yPJ$pj^$Gg!EqE<3zE|ug%$vXaaj6-F?l|{h)iX~CQ)Qa&4>b$bu59k
57847 zG<|=m<}c3fo}b-oHbzs>?q}^<af$fG_s=i+e89rRv6@;yl>^ZlTk>Gxg`!3SzzaSz
57848 zH@}4BgY}M`2M)uu-h3(z-RkwI`5e1|CSyw#Rx%CvPebc!W^Ka4B|`jZpx1bfY`s7!
57849 zW!%z>WQlN-`{rxD^q4VObA$M~VB!T3MGaaO0EgcTh0xLWld-Weq=W{Dz_TUIR;c}2
57850 zA=(0T3&3LaLa7!kE>XOOfbe(?7ngXvMv6-UUZce&5wEf0l7!cIaY@E&qPS$kYqGdx
57852 zX!H6~us#FuYJv6PH4W>-Yb&e|uNhb$UbC=1yyjqicx{9A;k6yshu1u;53l8-G0G&j
57856 z{KD2WNU5#?g@?h21!_S66Tq%!7}%1NjMW_Dg`?-oX~P&j4`Yt31~ba$cr^*M!Gbnw
57860 zfp}T0s7V>P+tKXAm`vPA+AVISQRJ^_!eqS8t_AdT)-Jiu;tJT0GE#A>795|Si^Aq=
57861 zj8@A_om2z8-L~rKp6J}Fr(+xTy;P6!Vr{r^sR<{FwUNSkzzt;#7PToTFtl9jgdUS@
57862 z$ta&$lk$t;sg0RSM*&TP`jkQQ%<-p+OA2f{^)6Q_($l{zDaJLS9UD!9scMp!RMo<B
57863 z8VvAop-z?Ua5qv&r7gNxt7(v62arHF)&2s05uy3ZwSLg@nN8YfVK}P!YXeZ<S*#7g
57865 z3|6j37_8h-ya={%9BT7L{Co^+)#62JwjF?)*>(`&DAwMDaIAJC!m-*-2*+wS<D8RF
57866 zS-?55vWRnH<q*z^mBR?L9V$l<1}jGq1}n!91}nEPye6P_oZ*GF6AUk`on&}n?N){t
57867 z)=n|Juyz~63v0JCys&l$(0H`Lz|-umR)OlBW_24>&mhs+-5A{61$(UpbGKPVn0puu
57868 zwP5ar&RZIz-pB4(kNeFk_IR^dMew)4I2OPIW)%V6YE}{8Z2-HqG2Vmhj)A}3tRnbX
57869 zvx?yFfSwk>JIyKrJY-f8;9-EhrZL_*cE`XUF{=pvF0+c@k3vri;N4~w0nVFM1o*Y$
57871 zpV`QpFV|nFl9-^9*p<x1?<FyQj>Nd9F9ZL5nD?E_U)%86o1y)`E_aYGFLyNX>|cI`
57874 z>9OUn(;Qp_D=^&q%;)rj%RgN;(C;t*4Z>dOyxfDE%k(-}{mNml_TWCWW*z^I4*tH4
57877 z*WW)du$3PON|MY=(gOie;q9F0O~rJZLsW&-Q89RA`}a!|<JVtf(~j<b_3ta^ailln
57878 zzbxd3NQjJFbWl1oTZ_%jSMXm^kwuQ;S2Nc|D=NP7q}6&OCA+H?2PK-1glLGD1BFye
57883 z^gC|qxOaPYUs;mG8+d1bk96mPG~?U*u@AqqRLIxYxQiPjBjk@}Ybp>rSf(-`q@3JC
57884 zZJdo#yRb7vWjY&WPlOGgRLzbBiHbz#MEL|zgV^l6?F4>DLOFXgWfVr4Xr-S>A}>m3
57885 z2rmfyX=3#x0(2B?CpYa_twbs5@9XL)6>^z$ODdU&N5eqh5jx`7h`#*;AOj{{dl-p>
57886 zPzFE}ki_YhYz~O+=47PvnJp%r_Z1F2c9Y-fl&Ck}($TBgwP2S!z{_EmH?R5Ct}exI
57890 zhmuDgc-Q#MU6nf49|x?5$xx-goASthp4(|qZU(<Vp&Z}LD#2PtXSqEGOBtra;>Jrc
57892 zFO}+KC1(rIKX!cjP`42VHP@VbjE9~-0LxrnCb3_<z`dQjhe+&;9Mcl*<fllO^scr<
57893 zgq~|yBBgPAFEc^9pM+@`dDqioS|Dr5fgr9Am-qd9Wjk2HkWX{DWUnI=D<%uy-t+zk
57894 z_IcWO7R6oPd{4*G)^L0%SM&h_%U@gmE_a;#9f^}%r4{JT(Vc{&+&M;S-b90vfaX+4
57895 zoW=#1IEc2dZdHK9jLwX-K+)6V2c0hJbI#3n+%dF$n<wFRD2hEW^*b+wQW1AH#fyrj
57897 z!#RfoFj#n~^45^*t>X~xFl-*t?cdWK4#E5#%YQ<i0A8esx8l+Sj^K8Eua`=}f?Vcu
57898 zs1@*MiV_-5^Y5Uiv*-|`yLQDCMWhZ+^29;`0Z`yMpXy8n{rw}<7gGGZn$Nl;g&fs8
57899 zw@>UIlGUEwZ#}sEePf+_5|NTQJB`5Xc~Y(vGO&0MagN)mQS=%(@(7_E$Aq6-M5^pg
57900 zr(zK=zX5Jc5Sqn&9hw5?;uTNOtIKL&pgZJG=KbkysxzVKy=!m{R1Qp3a&k-UH+Q}%
57903 zaO6G<D|!U5Y9-fK94+`|)J~tm)iq0F-;Po41fal!72$ag4_JnQ#5`cR<{{w$Tl|!_
57905 z<lYm#d$$8|i~d35NkHK?VkbZ3?f4zuhJMaN0nyHb>Gh=Iy4@jqWxE)-X~(~`ZyTSl
57907 zRTEo^_g^bHB`p_p7RxDr9E8S~8jZZ^^pHz-iK2}cWd0W~Y=7rnOOJ0owSUXaDK+jY
57908 z7VT=t<LMg;cvV4i+afy-ZOh%hb?p3>sS}yH-iOJzOzWd;ruVwv?QF6>xwZC((H}8B
57909 z-8P}eEzR#-EWWA7=2GnCod-&LLN3LtS-S7@rph*tY%h-v_)>@kMg`AN{Q7as6cu$H
57911 zmHs^^kRr)faxE$-Io&CMuJ6F99%<4Z+yr*Fw&lT1FeL)_IyM2Cyj(V$ZZYN1<Yv(1
57912 z8~nDr)nX=_-M9A|cPf~WU9D<nbiC||WDPZ~x+I@N^m`AF->)itQwjHIeEaS>C8)Ld
57913 zsM}dIQtgtaJAw{}*YL_-Wwh-u(&`_VzeZo7HIgKWO4P=5Y-NjLzD1HIdB!M9!pwcy
57914 zLe`QiS>inDt?eUw{jO9po(PTPwU(^U-4^-7VQ<;x7@0|yT2;-hRkE#-HeD^3Gj`c)
57917 z7ip!feA8CiOd(7CbPYE2AlwhM4Y!W8mSV|xGBjLBBwYEZG1MB6U9z!Fi-+c}H#`Y_
57919 z+W{acLPbfW(pmh1lnUYrFpV;m2q&GeSrj(M$`T6XvH)cOBr-r&0i3LXM!m|dgXS3g
57920 z2?%l|!mof=%5_K^e){?d0cW1CuJ6T5i$vn3-PLNf5~QRp+uD+dM?#v<?Xt`0<=UA>
57921 zniiwsCIp$`K(+(NW!xsgUq>A>4PL-uj~6s8Q;d5fHlGsE<JpKk6fDGI`I9!Ez0@Dm
57922 z{R*0sxT?1K+~G`7bLX-FL3E_coZ|-hvk=Pda5_~Zm{(ODIPjOSr@V*0ObX<uvo$Aj
57923 zz_2(FFgajY90;s%Ac2dO8kDC%OD4-J1jT_eL<T;|D+FbP-vAh?UnHEs3mkuTZ6~BY
57924 z<=6D7bX^|2p<y;t!%Qw@GigxjaL})M-I72Gv|wMci!1w0g9-hN3oKwlCIAa^F74*$
57930 zK^wiuMx79mGIkQ1XA-fSXg`SpiM>v&>E(uAeT`lmMC&MNYkLE06vD6TtV8F~b)6k{
57931 zYIo44K?t}=n~s4Rv5m-*AjxNlAd152*Emoo3^a9h0|D`Ab?tC0aWTCz5GenHuX&`Z
57932 zc~p{=ba$4E`L;|t8IOcRAd(nG$s!q`1FpJSHk-zJstAhaY=)K6FwLZ!%Uc#w4J$sI
57934 zoiRN*&|-OG^nG*;!i2ZX*6cuB9n_RsSpYNp)x^RW0TTs=>g-CUpa}*xvUQKwq|ty#
57936 zd))b<gI28cCB6k>+mV-amAlGdDN3Sif+fpqM_<Ks(`|Y#Sau0^o~rh!s)P0_l3P<_
57937 zTYY-6^~Ugr-Z8a3du`U{-&X#I?T6=z+beY{^ZcDa<&lfNtIUI%Wa691w3X}Y?`>ek
57938 z9GC)xmW2*ogau|&h?GMN_<g<8nEouyR7=JA!nIFN$=bH^SB`yTWccV-#Of!@-z4t^
57941 zgJs?EAgBU3{hZ$(_UfV?lfS&f<47Jt#>InaZ)I**#k*rRJ>6>4ZlCYk-7>UyTk;@g
57943 z@!x>GS4|dUnd5sdZ2$G0$jH-A9UP7%hr{Ku0*0N-f4=+&<S2(Y1}j?94Po{SHC<qw
57945 z9YLo*q}p8d*zTu%nuH))a5=fF7IZ7&Ul(-LJ(EagAcImq6R-*Vq%Oz|J4ZG?fXTIm
57948 zH&fHwW7CD=$!q%O_m-vMKR#dFKiQ7W@pfP7`avt-a)v(wtJ#mM!8pfHUuU|djkMv4
57949 z)}&i5wHVZ;T`_RvI6Kcf!+y=-67@nBmzXJsBxhR%)#*`nYq{ghWd9BO%JT4+pD69A
57950 zWURHc?dU{(TK*jOLp}nrIIJZ{dEiW-!5MJA7{!l*YsfE>#!@y*PBX?pC=vrrE7Bq|
57952 z7~4NwI@CLSU@k9?eEIP$$15m%rEQ6xsgegIXZfeg-=aU_y%2j;UrPI#{41~`mnrHz
57954 z8n4FjvbnMlh+Pg>HaWsMjQ&!l-Q&!t&Y?;m-RTb}25%o2I=DM8-Sg`IF72OS(s%2k
57955 zKb4II+hQ15{mt?p&>(*+=^?$9t{kXS7t5RmKnm-4uTGtsY{3_1&8cien`P5C<O*Wm
57961 zYqCwY2f|@RkTV6|S#Fm;$8!++Mkj({zh#~OJADG==`E(t2SG%*bLdL*=Qi-9qp*7J
57963 zWGNuKq(IiA4jQFNTySxut*8m^R9p&WU8?Q~47O9=;pk13drV8meS@ALgY=n-yOqjZ
57965 zQSGW;@XU^h2HDP4HyVMnFA_Uv-wmB}(0TZ>orw+l9)KZ;VyDXL5ik@TS@r6B!x01+
57968 zu8eByZE2YdX9rc;0YT?56(nZ>-<xC5X;akdtm2jYPRpa_<Mg{=vwns8l5I5-x@Ou8
57970 zjD+;b+4$B@+1(NsL4&-yGccI938IpSCR4h*)U6Rqk3LS%;r~E9Tl2v}J#mU*3K6-T
57974 zjq9lA@8E{-xJ>>|S;^ngE6?94jr`pPoi3k=Q>^3{z4A<)Vs|JTCeSt*<C2-Us~M>K
57975 zQkl5R4Ajuh%V*-QZlsk&Tz@a7;@Wdy7h};dT1MtAjL;F+2HwKzRNO|!ah>NNd%WH-
57977 z%Qk+VzLius-ICk_NN#6ca^Z&WTrauYYmr>;wMedb^^zNCNUr$0BzMe|6XERZ7TxLB
57978 zI?_7X-QG0PFH3m)db&DF`L-3|^?4z>t<Z|A>E%w-=LErq^!BVs?|SjIHg|}64}Nr_
57981 z?y{l7hHnVW5C*v9Q@tLSVq0<8%-7Rv-L=i$4m7{}O2l%zQ?Y=@<=hfcnL*+>Cm5t$
57983 zd4jzq_@vHqHc`0ZTfXYA?$tpu9trupc6lY_F+VJ5r~|$~2)a2WPu+QwBq#V?Ea-9T
57984 z_Fy^?=`bh_WrL28E8=#B!_G{rE7I!_-F66jhJA4*u6cCD*I#hiZ0?{VlW~N?mR)v1
57986 zda2=XV0<RIt&=9)u532qbVyw-US0Q;yZ!ZVE20#LO+IY$U4`W$-&G14R_A+I#Q&e_
57989 z$PI;XZ^n-7@AA96P8F=LzeyADi=21UFv->_;<qT`|F@)wkqC#pZl{A}X;x|u`_|E9
57990 zB@KXI1+~T;QCE0mIKVrcj3k=J5q8Nwrx!G1FzJc<ePx$2-ln#A;{zGHTX(1(noAXB
57994 ziqpd0d}r}}LNK8FVP69s1-k_so6Guw+Iq*^?5;E?BC_k9ZG5qqHu_Vk-lRVaev1E^
57995 zu&SkCXX9OLV^e%K*xB&aH@ez3heLG)UD0mC7|H|-VMQ53KU<K&%}!=yNs9%xIpGL<
57996 zV~&7k$}as3oda!t*i_sQrg(Wu&NeLjYNMWPSnUQJSp^1ay9NTEJdC-{^=g}lg@Ya!
57997 z(8yBT=J(*uU#QiMyG4;yqCcG<PDQeIH5%zORJSwcb_G2lk3Cw-c;jw=!AK5gqUB7{
57999 z5tf|tXw%z&e}CR#Q=(~`&vCHnyPc87cROuhk4klW1UG!?jqi5e_-<$QcRM}o!<}3v
58002 rot|)c-M7u|u+I@uCtZ^2tbf~_jdf+$f7~qEMb%MqcvGJG$Ibr_>=9vC
58007--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
58014 z^x;>;e&3!05Fja8cGB8yb&j$7?e6z|`@Qzt-D3(E0Qj+x!8bcKJ(K+7p&|gkguTBx
58016 z?a9T*FBsZO@G7>Ku-$!P<>Z;qj{Cm_(7F%66FONwzk>Zf9FJk`IC=WRCw?-wd=6mT
58018 zMOIk=?f1@<FRo~3LT@2{H{u&-%V&-ct<S^(lz%{(=T;s&e_{Q<!zhkV(fG>h@s*{$
58021 zbJw1E^V9yT8rl?8l&t!2ixPrZGEvLWFK}dRb9GF81vLe${z>fZ->J<m^A!6OD9B=s
58022 z7qC5V)$Ab{WjXA1DO^@$&Sf-Uqk;zy&ay0VwDi(e_+jk6Q;5^TzeN@ow&gG>2vXp|
58023 zmL;W#3jC22*eAUzeOLM(Vshyl(l@YtReDWW-UojJKSGSx;cZ}y&>2&iisb@Z!17V{
58025 zpDdc}D-LkL;z|Xy+!dT`kbtXhnduhf;{tNzzA9yL*oCk&_f@dquaIg}m2P(Vo`RXZ
58033 zunarkPi<I%FT$`5s|W$g{1{xo-`!BgTzLV@)36NZ;0Ub35_|~Ka0rgWNrX=0*ecwI
58036 z`qk?*3kUI?Md;mHsj+o4a^!J*1><ZL`%j|fF4(phfeGYJ&?vqJO7j@LCy|~s-;Wkp
58037 zM2QW|(x-)057p?;+q#_>9(x?iCB(e-{KtG&+2D2G=eUFWa0fT+cd_n$?gRM#!+Uw9
58038 zFW=lNuU`LE{_5Z6RX_K^c(ug)`8qCbyw1Pg?$uwt^}fHad&jN!U-4bI*%zw!g;99=
58040 zffi^LJlaJW6J=DCZP4NPRmW+^0qslLf732$C)6LSKTyA=zMx)KE-Po1pHue9Q_|l^
58041 z2l(gNKd~3sujAgs;hXSTJe42C({S}<Y@LFwlf7u;J#XvS-E^Wwjp?q)@J_N7gMJ=y
58042 z2RTS5>1{A{gu-~Ep*zJv=_6RbfxjQsVahgUm%t=^6(;Efj`vD}hpEONad-*)w^BA&
58043 z+k)z4A<s7i9*4t1enntPbgI`*i`zg5dt0#HdeeHgdK;0#Br)A@t-CbdZ5ugt;cbqg
58045 z$e>IPJfn7rTTb<M3c@-PbmJ@z@!diZBh*VJYiRLWizD_Mcn6ck_W>@x4{+;iK;0Jr
58047 z3CR>8nRSzs#7&Nio1CNW%Y|Ggu~SH_+7fU0q-xcRxJGE^akQ5Y+jM)DgohmVy-^a<
58051 z+S1l<QzD{&gfF+hVF`?yR+e?uYrjwY#YpwLK@2Gt$cwceog#}k6EDP7ZSQdSA-n`8
58054 ztg|g<*dv>4`=aF;%zNPt->{FcU%{EG(fTypXIt3^*7qF6)|p<4YY8)I3*v6{OQK)4
58056 zGUk|5LW@C>nH?Ax!<%A)WEvEDfbCgs_roU7bK4HAp^ponzftF1-k=>5I~jUZ0$T^F
58057 z2f^A&t=MG(v#Jw$vc=lPh4+y&@*r=$R)^(5NmA$m`tDf&^$fjB*$(%%mjw-#3)0Ib
58058 zqzn^|6sC)YG5-R1?wL2$dyf{(9Z|EtSUO>>9VwW+r)+&dUQ8T|#^WXwO~@yv=u2|G
58059 zluMf|Wg4XuX_KcC@kBgrN-1OMsuT=CE^h|%MyZsm@L)by>5=j#&mX>MnC=7u`SOw}
58060 zFI>FBIY%~T{CF%*y;nRTmWvq(CURE-EP!JP6BY``i&w&oiwWhFDJ9KNzCiPt;e6gk
58063 z?dZJOK~Tqh`2`;=62=P(94i)=%0-hUi$z<5qOpYfByz>HsiX{)K<+7{PFjAUU}}k+
58066 zDTAc-pjt8<Gl+wkEfoo+G$o|fQ&*fG$WP}6<F&wXr5XdtZE;~q6d{kQmyGGPM46l_
58067 zj15t8h-pMo$f}g++C+KEnxg4C<YqTgL3Bg4dLmCsD0H>S4bn8u5>3R5gBZl#RE6_t
58071 z?UgrS?-j<F@Kz`V72wl{3ubd7XH1(O48JCvxP+k?#GVq$@O(=P6IZHSE=QIKq98a{
58078 zesOEs#aJka7QPLWSlEmpnv8k1N1#>QkTYHR<ngsk!Z0S+kmsI8G$Uj2GgVv-Hnw4w
58079 zD7j?sDO{Be#fV;&dzH3gj#93U**hU95;G-J&2L_}B}#kN_9W*^O9@lK-4%!Bd^w76
58081 z%!Pq4S+#|My-Kfbi^L?F>Gs-?sf+QM#4JrpUff$VAt_^7+JwV}j4_EjJ4tVM8YGwP
58084 z`7)l=a+c~8pb1<)8C-c5|Cv-p$4#e7@-9Pq_GcBvq!Z<_$pogVx_F5fZ8>K#0pFIa
58085 zT4f)$_9Wv8+b*^?H52Sd6NIc~kH->R;em`fj;nm`I{ov=js*ke1i}YW=5DO+A}da#
58086 zxs4gzfveWKJ4FF)-i6@7)D?gk1Qrlr1l*Il!bHy@1Vqohgfol4VZtHc2;mTLAK?&i
58087 zf9fjc!aPES6#dx^LB-TnX7wFK$m)B5@EAcqM|c8yknjZb5a9{vVVZLqffCJ0K$+$w
58090 z6c;U!C_Zd~g#HoaV<Y^61rov&7Dx!ch`4)e{GJpof&NhoB=k!bNa#-?rH$}03nYY(
58091 zTOc7kjktHz_&p<90{xdPkkEhG0tx*xQrZZ=Vu6IPW`Tt8iPROBIO3XW^oq=-X}mpQ
58092 z8Z73LrsKFNbuV13Zq{k~l=L*r!ma1lbL;s)KXMUbvcL8n|E3@1DTuPA#$N-%$JSrj
58094 z!~6B{-P^~4^wiC-750b!dF^-Wx%JS)$JW39e#`K${otAG-_3*Pzz^uN{`^g&GKgLK
58095 zf;`DrVGL%oQ>`tWODP9uGC$DM-6=_Pz$IDY@+JB|(M*z;>Hn~@BK^yovO@o(^&SQT
58096 zeO*R-)aQXQHl}LfB<t$!-MM3YBBF+Z9eiwbd}3VuHxUkxjbceX5mile^{JXi(o~hT
58100 zmWgJ^K~*G0T?I*&r4_I#K}JH^@yK-vi`giH@tq?>>11C|qAT9n(H?C@`|e?TT-(`q
58103 z<+dZ@ul?3vQ3lxGLmC$6P3J=4%LDyBiOof`-hRe7J21c)oA)t3R}{n90B6DmSfLRl
58104 z+j?Q(j6YLn9m%#%6NA2l5rs5M%V-Y;HOz3bhzK(bEzQG2!El7)4J|W1j@F1!x6B6j
58105 z+}DvDa5pt2|KF~ChQDul=fcsRiEQVARL{N#o-W_{sfF2}A7&4{{@H7PkkK`FSAQUs
58107 zj|_MbIEQ00{XN4W2FboeC%SZmjVM9|TLGcN*k~w-%R>Ao^guPFMl~Khv(q<{>DU{8
58108 z*wf_o_XN^yw;%AdPh|HNJI3}Lx_Ez8k$)yd!rjTx-lK^~DlqQ%HTg$c6HOg`dMMZ$
58109 z)tyXIomx$m_4TSIoc>-0-l+|2{gw3}@>B2wXotRRw?nws_M7D~@WR~;!a=tV?W~>r
58110 z73rezwex}Pv~dxz=(m;p1MVi)>|U53dTjT;JG~tqm##a*Gr#@$mUx?|H!dl9(C-Vy
58112 zxm+kg>EqcaTKvAM46Q?k!>f1#helgl#Qd-G&#<SU117%|(m9)(H%BqB-C}-j%^%JB
58113 z>w=lv!R%syLUphX$rh?ARdr!U>`2hmnW46*kK{`A9{OLub$g;Wq)U3U)7u-q^ozgX
58115 zab3C)B@PTjgQ=J3Z<Uy=EK8Ue>2E33WrwYk#j6(>3TPv0hzJ^D77-mbVaE`=ZwodT
58116 z_{+G-s32{iXERky2mJxpF99Y~skoI&Qp=!9>OI9`F&kmf-`m~Q(cab)Z1yxcH5g(;
58117 zPPFZa?eLnjBO?6B&}d_g(j?}~-b9yWZZ+(3wkLzZo>aT9&C#rfL+!n7&X!0r78`uT
58119 z_aF&x&YN!XfMI(eY<a-2JrLgTKnE$S)-2D^mLhsK3`&f8fR?bfVNhZCZIH?ODd4gs
58121 z7sQ4|PCys*H3c93AD<YBWr7||TV1W~eXV+^EfV*%r<T3J^v-ZB=yY^;>VFo|-GjNV
58122 zU^?P=h7xJXHIP=m#uPMuxJ~=7cI+2f2`2b{D_-?p+})GR>EH*Vq9Iug+v;hJ$tqXn
58124 zAl1$q702@h`DQaUI!6a-3vmdEC$|v0oXqKBbxgqNx;_tzp*ulSWmQ`RSyAMb_sD1%
58125 z8O^*qMreEtwN32AVPSTI5iXY}-!rG8^<+C4j1Ff~gZ({;&i1y}7Tg+W_s|rWU=vN%
58126 zK(0?F)x#|o_2)195N0J74<EF1ioaEFcId&TJyCx!p7Mk+vO-P1K3pxHzP8TD&_sJE
58127 z;Bo~$fq~K8c4ko}S<AEN9ws?lVSi^2Mt3;tcE>`U6J3<y{}Q8oiv22P_-cMhi2Tyg
58128 z-eTpKgvc*e^WT4d8N@Un?~JyF0zMDArIzJ;tpr0`C)Sa0LxM?cq<OK^>w&&V`wV6q
58129 zuiqbYMO-0QM^CFBX=#Z!wWm%w{dx-1d<Y#i9BbbhYVPdr?AM&()>d8CdXkbmGoXG=
58130 z;+SZnQ<2sH`rz-@zs<f4Z@~aOLHS%p^GDl)c#pCUx?OlC#G@g<q|u+n<9?>%u1dEm
58131 z&XqDKidR943{;T-9fM1?h77XWh+E8t@F<LVwmsGo_Iq7A46p$QS|NnNSvySDHoEO>
58137 zH(ZNc<)@0=oE0bXrJp)<XWuKQEwQ_=j?>R7cz2GC45bJAH-fj>hX>Xy%Qn>=SSL1)
58140 z)q9x6G4E>pfE5u*+)Wic0j%PU(}~-O0-8g7$HJ&}I2nD9;?6QSon9xotshB-Yu~RJ
58141 zlU8nyE`xL<8+3T$c=F~5={Pvi_`wYKPZ{^YMtYEmTy7-K?%JTl4fV;JClyi9&VatQ
58142 z4fNr~F@_<4hrMQ>+eKeA-Syk)#(rAOUe`@tKA$h*Y>p_nvw8#3c5*qL^CVBe?Wbd&
58143 zw-=9jnOzCoU%e5rzxq3x+B#+0VDXf98!lgW*k_;e>|OTzxXYen`(YQ4+4q=k%vA%`
58144 zT!js3pgva(;R!-k(T=z_n2zU&>X*mO*O|s_bv?2z7n;Vq%<%PQ+j6C8++=UJ>8dLk
58146 zx3ZP=GU$?y`D%WH86Ijc{Z!mGQkJ-x^mZAswn#V>XvQ11TgUx&7u!WCYpi-TnP^B>
58147 z^}*V^b*shyc)}Qu$9HrFS}{un?r6oU32w9!?X!ImystF%i>nE3v<{cck0-_GsA25x
58148 zi6mQfJx9B&tl=ix*`uk!SolsiKCQl(D;&hweSZCU*pIIZ)T=VE(WKTl(Kiv9h-eY5
58154--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
58159 zc%1Eg36xw{b>MsN|JwJxy0-qc_EOcWTD?eZsnnaSy|vOUymV``Bula^3q^n}6hMw5
58161 ze)s!txo^4ayZ2T7&p2bu1&Pd@i-(3s7A{(_gfXd|G2Xp+bk$nV*FXGcjM=v^W{xag
58163 z&r;j=-nRQw-L6xN1rNiRzS}16+6(ngXpg|%c-yXbZnOUIfWp{@&oh?Uw0-O3mc*A&
58164 zT!Hp4KzsLgs0ci6Z-Vks9B=#X{Rda<{>3K%_Tw<#-d%TWp7dIb6O8FkGG_SF?#Y9D
58165 z4Lf|l1o#xdD|;q)Z*41%!~xmuu;!(E@3?D!@h?~>v=3qX-hEs5ZdvffhoKF}{~Y6t
58170 z{|c^a^WG_D7&s1VXvWM5tIW-6&M7Eo9C%8~L$d|)rh%uJn*RzSIy9ByM^}#(@<+$8
58172 zOgPYM9U<1q>`;=Jig1u58CxA7C3v^6^+Z1bRI|Xvp~V64>#6=OxFqQt(l?-8urxtP
58173 zRS=R2!Ttp<&VIyx%s97k8>9{n63Kns2Wg0hAZ_AJkj~*<koNE%Nc(snq<Ib`;e&h-
58174 z(h)ua=@PyK(ye?uq`UcUNblf#A>GgSLwbN8fb<@I2-5rbeUM(}ml+pP5rwo~)I%B<
58177 z4%Wifu&wMi$nAo*eQX1i_5tJ$=(7iS*U4I8oOag1=0j;eT-yNd9W>^4fZ78&g*CDR
58178 z0MW{NSre36U@QglnA->GT<DMa#WY^KRyqi22do|QLy+R^lWY@}w?VpxR<M=IlaSsC
58180 zdSG<Sb;6~<YVLsRHt3I-F98Z{h7~Jd5q1$(*OdF;rQvoLaqIx3TLALfpM-WD{7-Z}
58181 z^jlm%`Te=LyL^3s|LbpliAlKrw(5GVbV*Iuy>6N1dQAE`Uh+n`K3sGC5-(kru5EPv
58185 zi}o@fMKLbsW*(}+D93MXGzN`E!|R4u4S#QV&hVt+^M;Qbjv5Xcwj0I_HyV0%_e-aQ
58186 zfZY^*2R-@dX6VcL*THA!;9*#yq=ySudG%*i9z0X)idW0MARd%9%<Lui)%g2RSNx^4
58187 zknrLV$8f$;d=1id&?n0Wct2d-yq!1m6p!&BTyAdVdgywYy#}8CtLzo<c3)=a*eUjP
58189 zt}5OGX{-poK6|P7D5NK@?16M+(E#=HiVs36ii@G<T=DIYey@nJ#Np!KL8>pVr<x&1
58194 ze-B1tY(B<d?E3<#@!$Cs8WX8^j-Q1w?P3xn@H^taL7t1bQ2!+e@i|Wt#a<CdA>9hG
58195 zJZGQdAA|Ix0=2=7kdQ(Y$6l4@Ve}}yiV`A@Kus2+P>4Yx0(C&-8G?utqD_c3`yj>~
58196 zgxGQk#FX3kZG1aKl@L)vJb3`)NQfdYL-be=QDZ_RA!=+B?V<xB#%?hMQDPVJk$;W&
58197 zXsP1kNj}B|{}k{s4pk%5-F%pH9^JcmD{q8*LaUE(e-)IIQZtv?RrWgjDf=N+f1iDu
58200 zm$3eotGA)9in{@Rh_vWwDS=u_^^YKT*|+$oA^l+y<ee3-grSuc{{-@9g%?*<yagqO
58204 zgWU?LpMkCAtJ!BDZDpvJ&qB=0c?Ke6&c=(EQ4ZJyYAyQ^<e!A-nDZuf4DBmK(wtk^
58206 z4$2#<%0p1Dt15RfS$wmqoPzRSRFz>z7n`ceGL+MmGJlQ9{MD-RccJ`vRrwN>_f(a?
58207 z4&{!j@=351uT_;Ff%2ED$`3;MT~+1xL-__~(8_}E2Md7bq0QGhNx+W-c7xA=Ew~@}
58209 zNIA5D2FmG}dV<R#Wl+K#;viGbNS+YpOymibv=T=RYG;Ghr-JHvAe{tW^VIHH=~?EK
58211 zOBbXI%qCrwE;6fhNxH-=(o51yWGSq$CRM}w_+Yip6j)9vu=QiZ<BGEENoHTYte{`J
58213 zr6A>$Ehi+ej|~hKJcG)_#K4sB4h~GErNM$2Tz60@Sd)+$oZM27M-LtsLclPE_|`}q
58215 zc)XF@28TBf7xcqp@q&~dU-R}c01h7;QwpP_P?ZPhLNDfe$H$c^6&hC52vu51DYRpI
58217 zx!AJFC!K6FLOiKso5shtOpX_Lc6?mJU|iV(_#_9$TMD|I0xOWylYo<9aCEF-NDdT?
58220 zb4$ULQ*gC*Kuczu6da+DpBP7wi6L68Id|M-XM@87&GE9}SaP+3WK~DuSy;j#pgy4t
58221 zA4^UmQ;FCtj0`C#VOV5omB8BM<d8ar?Hb(+Dd@$*71XLb*>i-@37eHk!!S!Y86R&3
58225 zVyLZU)-_l-#h51v^cpO%1;@dwC2sk0Y>J8Dbz=p0azGg_*g^bkF!2P4q8Dl=U=3dm
58226 z1~~+b9yTyAfRymULZEHRYs?ltkPRn*Zhk=4mu)Eoa#I}dK_EQd>vB^P-b1-58SmlT
58228 z)tD(a?o%6;94k1o*FqR^{c9ChM6?>eIN+zix)OjN-jjeI-cx`d-qU~|-ZOw7-Wvcv
58230 zO-}YE(ZXLBB8=E~mUum7*AJuU6*`)yblf*Q2G$X=oKr=fYr%Bol)1F>xiFdvGdy!n
58231 z(BE0tg7wUQl3atK1<Bs2F788IyMZ2n!0hV>t(oj?DfHx81N|+9-ZugT3EvFheZV5-
58234 zADphY6KM9-?MWV-*pe*hV0VRPd2lie`3W?6)B8-q(qJP<jsTC7FvAFLUFJcW1;(3Y
58235 zlB8-}^`OMS3>^rZZpNrEA}%70i;y7IOloB=5QP2`EflELWi(nO`+-b1l$#1>Y9C21
58238 z-h@NB!u;$pSR2Y1AazYpU}$Th9eNBC$|#>1mGYC|sST*8qktwseOf{D)bU4hQ)bw7
58239 zN?m?UkzV{(NipJtcC0@Mrm9L_;^W#n7lQ$wmn~7{MkvkC#*-RdG;GQwSOO&QscL^5
58240 z&%L~!)<QRE`O<6DFN5K@*Hh?${PJ9(4{j@vio-x|WdwHM617(5P@oGdAiFAeoUswe
58242 zIkoQX2*)vZ6T(sMW`v{MEeJ=sTXD`|$V}jzn3=>mF|!Hh#LQ-dxe+p35C$__5e75c
58243 z5C${1(Yl5px1H97xgE4F%<ZIgVeWQX7v^@+x-hq!)`ht}v@Xou0W|I}GjK1J3VF!h
58244 zsb&{Jb{`U*N&`^33-($KX1|(6n0F8i*I*7n=NrnS{t=a^$3ZoVJ>IEi5&T^+jt1~<
58247 zFgo2`{08xP)u;GZ)5;TXzVGkTXF8q!!{(j%-OT%k&%ft~f2??ZdY!bLMfeUD`dzF?
58249 z>Ee}g{e#5|rMzIj#oB+9&*kDjaZB-K_7lLTc^2HiqSo;g;Pstp?Hg5Gd8T;zn&UrL
58250 ze2KSK==AG+_-a_!A3p!zeZ;nF>%f2XhX*tn)v0!ZcNf3IH-S8UsQ8sxJAAA7vsuS^
58251 zwD__B{Sez#Sr)AoI2i8}Z~4Oi@cGaA`Dk(McfEu^e6$blT`5h!yRW}*m-PQF{S^QG
58253 z$u{iRvtvIS-Er3)yV%m*Tes|BL;H5^xQ*eHIW}fzah707mSSnv$eLM}wXzP@$>z{_
58254 zy_EJ)+D++PO1oH}@>As*<ss$0%1&iX{jci3UH`TEN9ymb-(J78J{S8|>}2dCv72H8
58255 zu~f_%{Z;gp=-KGW=tI%N(M{2n(R?%)4Mr|U?vDiPHUx71XZ*dsPy4LiAGlt1_F4xl
58256 zA2Hu#>NVVFVER3LfXCPm*jL#@Y=8Nia`hW(yuTOl{TOrOciH?Nd>%^F&jNK5K=o@-
58258 zo{-ivOBIZ)!o;3oPWd(YwEQV~r`#_6M0!lRMY4*MVgvsvKgxsbGr%)v)$hK>*c#m}
58260 z_000C@+&juzC?3hqPZ{8+?QzXOEmW-n)?#XeTnA2M6+I^SufG7muS{YH0vd8*2<g*
58261 z<$dz58M9ubSufJ87irduH0wp0^&-uBk!HO}vtFe6F4BA#X}*gz-$iY{(rk9wC=2OV
58262 zGv>QM^If3%F3@}zXub<H-vyfQ0?l`U=DR>MU7(pR&`cM!nP?v1^CQxyq>oD<nK9FO
58264 zbDX0&&e0s_XpVC<$2pqg9F2ZX8+{F1E`B6l6|abIikHQ?+Ofr_>6aL1DLq5!X-Z$9
58265 z^c1DfQ~DgG&r*ux!Yakb!~^1(c)vI#4%UpiQrsw=r4i54h-YcUvozva8u2WRc$P*y
58267 zxA{MmM&eKNCwPHBCY`2HPSYr-X_V76%4r(qv^EN?fFI{y;E(c8^N09@+8B591AH&v
58269 z&+!abz+NS|og2AezhXaUKVd(Ro~J&~Q=jLxJ~(>i7mL-uR;1r5O3xAWa~gEw`oCb6
58270 zo-M<jWM5*R2ix{ASn>zhG4_6Th#h46*e<q>O#lqS&9Ieq$EoaqU11N~&NhLK-@r!M
58273 z%Bp81@z+*0zge1M28q?KMHKkE_=s-}{Z>o$z5L7s*83Kq&^+LzmpuX8c#wXnB{aW5
58274 z^)#%r)bMHLN-t6NPiEHeX=M{||9<u^pwk#|sT=s?Esw-CDC3MWuPM!3uX&alKCL`+
58276 z1O6Lus~bEsdfJp^qOv{%<!fss!lAlOul;tfx<-YPrj0edrnamnYN*c&<1@fw1~sHA
58280 zqSfhWbuz0wPp-nv#%URPU&CriFH0w-dz}x{Z%EN>o)zo(dm$!?FuiCLe%Pmf3Le4T
58283 zQg4GDH4nZ*XcpR-X3)koqg?7GF+Ob_)9Yrdk!Bf7p0NUX+6rpRdTqDq0zbn(3l^3c
58285 zPlK0h;A>kAOpRo5*Hd-fK=!EG!s|)nb>;nzlU0&Q<5g=Wk;c=n#9@r<_$vG`Kz|cF
58286 zK9gpp_J9YMf-44>fT-d*h_QR66j=q;r!q11tONEQfH8}w#pf9-)3)SyHK7TaRwGMZ
58288 ziQYmX==~Fd-ajGeJrgKJuIf3+;+v{=P6O?ndZ0}g%#GAF(h4M6fuI!#T7g6>5D*va
58291 z*KR3|C$2eKMbB!-nqFUxlYRzHwKXK2>@Y+!Y#Juj(pjm|0|hpL&Fu$D+NW8(>J`jZ
58292 z%WAA!?F^Ng=@zgw-t-z%)jrN^WOBMR%9=Em<j_&mvm)z8l5Z2)23^&N`dQ?&BHspe
58294 zgCGP%t!Ab^9izr6+!CaxYcf#VLblaGy(&+-g?JD6e{cGUF0frbDS*#%(V620X+ru2
58297 z-REfc4(;Bq-P_bVAJp!B+PzD=YyEhWcK6X;uSFUHC^5h?dPO}?XZRkf>IlAMEo71~
58299 zi=AR8$#Wl}-(ncZnyHtpSsnZ_y`ZSjg>Od#{=4W&a5cKCg=Nr&PhjC*B*9&VyN+OW
58304 z+}B<1t1I_)m;1`)zMgVlx!l)N?kku3ddhu8xv#6-SCsp@SnWxGQ>&|v;Qi%(Qn{a>
58306 z#;&w+k~H!?t4<mv@-$VCkdt(ZD*smNukMdz)g;()5|B@V)XS>ulAQy)D>^j)R(p?{
58310 z4SG$x@jZCuRhY@A*-Pu&hO$%B(t{^SNGm+CtZotA^sWYhmZxUbZ8U$V3i`XSsyX~N
58314 z>u{;9vex=kx%KPpQMlArNo#$$-1;ax%8qKSLTf!#ZaoTq-%hQSYpoOI)}7!BF4tO_
58317 zNqP1*>1WKwoOzoh1X}{t2Ljv>$V!=pxeG+k9KYY^HOS3PrexA+YE{-s`E0$()|A#o
58319 zcP(I}xK)CjST&xv&|slRP&Nd!hD>=Kf$nZ?Imt|e-mt>o<fTQ`B~0#|$=KL1YD&cH
58320 z3!m|)owz{R5wiQ+baf5hOkX0XwERBed%pOOe3E|__6q$8i19kJhK2=F4-6mB>kWE+
58321 zR#sN6$~&Ejq$8HOITyYo9dOMbyusrcT$|N>^6N=E?*5Uhk4tOCKf{i=D8C@-6_V)H
58322 z3t1A&VNaEXBp*i90GA!;@yX*%mf0p98k{wp&7BjA1pQ7s>*xJ?gFnj?natd-9!$D>
58323 zy1VCeB6ba#WJ2%r`sZ|Fow_twoWU-jl4=8XiLcps-{=eJ&gR~x8yjPph$+z2Ixv!R
58325 z$z+4UX-S4HCdKYIcpJPOw;fzIvVGpMkD4Yw`)+(MQwT8LAofA*JDeZzSPYWjF)oQF
58326 zE=$sKu=IeegjfUTr7El^3G3CIWm3^_z-PCz7T!|9x*O1LXi#y6TECh}CK~kmYCPB9
58330 zEjN!0-?6ee-Pz-bH~Vvwtu4BClQ9sS*PR%Ng`@o~H~jh4$MbhB?f%eXZ+EQOzai5-
58331 z-qkuh<nzY7{`vl)(N&3|v53L8M;PN>eSvJ)5?2}zym#KJ^-RT2JjOo^yLm3(Wa3<K
58333 zZYm+sHav((1oKTBJA7_yI9eBR+3J<#{v!+4tO4!Bz2>jkW$-cPpD=R{_9FuJ!%B+=
58334 zy8-dY%5dIQg^3_cz+!M_0C$yJB|xPkfrya!fJVo%o@j5#S9eQaI_GVet9$3&Xb0w9
58335 zT?!sU2bdXG-i~BDg0Ch{Hw&;hQbRZC-2$OXB#0!bpI-l^;HF2`dYirNtCytgb;;g%
58336 ztUVB4lwJDZ)urJL-#x1IhZf}hHkUF#?Qw_SzToz!@f}%!)BD(;BTgsHCc(-`!K|=;
58338 zVb=fGUYAq)HKz)*Fin-Dsn8~Ns{*0dus7(r-j#H?J90*gDd6=<I>BYxprq&9UEvVt
58339 zwy-y{D4NYi4Az|2pY=7aNYDSBtxGb*XI+=C+1I#=*2RKk$M=EHK9FDNHp9*o)q^o_
58340 zRIM5)&JnZ;vXEvo<mqI%&gZdNSdQn)Ce2xE(Mkp_GtHu{x%q>m-*k4>fkErOA*y&s
58341 z?T%(|Hedht)i?g}+K;@jOfzUJJ~YX#&-h!(phcPj)}SMih}92#c+=>e^Y8nxYMg<-
58342 z_<Q3E?Eivx%tZ;SQX9sPl-0&uE*>c93xr9iFLSE(1?VY~%3LMd5%yVgiQxSDL|;m2
58343 zF*M$quB)%um-`_uYsojKV7luVm}DFbOfT=9-N2xdk%_?_P_r?bkqHn1YYa_GhX)MJ
58344 z;yn!wO<?YF?tszbkmN*{-D_~x1rxU~Nw2Tin-%*uHi5lqPsE44{;<uJYfAPn4cMe$
58346 zPP579b9s79k-GYfS#O);GzaD_QZgOkPfD@X$*%G7u6hrSe*wIXDgJI2XJ-77@PStJ
58347 zugLRIEseTqzy>dsBwF7rhXx0Goz6N-eRq>Lq;uCh6V2hE!xOjLGQQ>wX}_zrv&HF5
58348 z`{wmJjmEk_TyOP9bE#~<%iu8Be5#ETIgZb(Rn00j&?ePW-m293z_%#)2k*QiA8PYv
58349 z-ae)nY&u1;W>+TntsK7VHZX6!fBcu*ng#;7rE`oB7kQ#OPcF3fUArIHtVtjr;}5}1
58350 zAa+3`$%F+IN|Qt{1vs>~s=KNxk>CPKC^6F-$)JPx==VD9Afyo<(N!7s9+XntS5?D|
58351 zs%6l}W8KLiyXf@k7v-WkUo>vC$GthFeqK7iZo96|H!4I=s>K^}rsw-0LdRdp^Q92!
58352 zCfWa3R<OVd>+ls~U^Nbd3!vi=g2+4c+A>ui79xM03@wK-Zj{*}bX9c#TLp%gX21p1
58354 z*@eoK_pIh<*4v*-IP1(#gT-&RIdh(f&ttZF?XHy1p2S_TwZ*TKWMj~tj9aZ?f27l8
58357 zsKPZXv`3KZV8DPAN7yVdh^_+I0EncMt_7D*&kj<yih7j{Dl-!b1_ExU$-o+TgUU>@
58358 zgk*?OJ7;o~q5!K=)-?p8BMH6U;c^8nE|b}3v%v-u@%fBqZ+j#<*P^qV>Qk{MgUMf4
58359 zr-v;%Xip@7vqOP8k47Iq-wN8gHgB%OGaq0pFSE52yg=9woRcJnL~Mmx*qo;|G6~pf
58361 z%{wQp*_BP)&J_04o7Pj<{Gkc-3gJjkr-31sDL_LKdznt+k_s#VFntFi$vev&&CUv@
58362 zM;G8;;Ik}^Gf9#+F$j6rXnYL@&~Di*Amj>HDoR>nY1t<zD`-4AHx*7L1FoP~3E7+t
58365 zAM14clw@<GC148<=bgHsr>WJQ^k-V!zDQz_V)B0~{*t}OKE*t2)3QPa77s3x5Nr}S
58366 zSmIeLN+$A>iSbIKV5`IV5Li+~;V>p-HOr0TWOD3Qi%BP#hkJDDP7b73&1MOQjpoLb
58368 z1NSmK5E!pO32746iNtkr7VvpoHVbHen1}VWrgHROkq;CQ5D!-%;LmLC4}|?ryR)IL
58370 zyUM|YX0pLP*#&RzNk=o19Q1>|UIc|XUUR0auX9c+kzLWMvjt461@G<X%0-7ew77up
58373 zzKF+c@^+0moRK=tLn)`VAtCF%0cR|2wFDOqGtDD;fG1gkeUaX$nD?s|4$R$-S$3=_
58374 zm^oSK$PTjEfK*!0egs=Pn5x5Q+_*Fi5NI(w%<P+13|tVeo7}PlPZ(-q?e1A67#$FZ
58375 zz?<ecOfHiv=<+2R!svoTn-!NU<j)TEHRRkWkHv5C+AS8pD^+i^29qQ6HLp_S#AddT
58376 zz4M9IC}7K%tB9pxdlj-y9LAqq3;G5H<dw`fAhM&%e9sD}`dE^zneRz7->V6~#!S3E
58378 z-4Kp6E=aVx!-<&Rp7Gjci@_XrHs!k`Eprr4{ScZS+1;3mbSj~_9T{^f?p4e&qo+*?
58381 z30<Q#syHR%(XiKTM{+mv##(Vg=}8zGRFSHQrW?T2fWw~-HhG+>sBDn*{<pP7I^%Uw
58386 z23f<;mjDT{)kW))x~|S8csAD4q-X-*X;vh!1q4894yH=G&nNkEn0sg55;TEZn+D{>
58389 zO*8twvSWp=;!4zz4V`JNZJazGlx3&gY+z}gM$gBPP`?J4uIp8-whN_UUZW`yMLzpB
58393 zxM-<Gro9b3WZJ&PB=SRxyaR5h*@*jg={TiFJ=rgR<5d322@ffo+Xjag^w(#ircfr*
58396 zdeB(<g3nOip~-%XELIxVtzKl02Vw?C(wXjWa5Mxg9<w9c=CK<*7Gu0|OOrEf%{KdN
58397 z^=MCWj;_SwHKXQ$C*gKjn&WA&(JbkVp?a&?r8upgz`}^xV~j*BI;&=5L@U3_x`-A*
58399 zCZ`g8`}!hn-p&zlVM8I0*Kh4j-?$pc;7z!>-I|RnSxI&_hOPD+{OP4>cgz|KmNf4*
58400 zA+sJfKi}KvM_B;PQ@<&_wz%RKQ{g(7gZ1zpT~&D0(<-io(gLXpCFHJfBvRg<v^5o8
58401 zw|1ceadM{YsT&46EMAkzQP<XF)4MIQ*EQ#+Z1Tn%Jh4`rG2a|$jmhC$q>P!<+?-IF
58403 z?}!_&$<gxn*LXeziW&@u)~-|0Hpc_VO1sYxYG?=|*8bbq*87FkZZd<QHrzP6T1D34
58404 z0A#Z|+2->*EzX2Jl5cca0L!uBauB)$td9BeZYQrCjo0xyp_y>?w5PlF+iLwM90r}+
58405 z?hM;=F>lZmHTk`v)}|J#{-nd~vc`kqpf%#MBoex|W#Np+nG9O1PLgA6Vz!fHh`WKz
58406 zyb`sQi5e@l$Xfi(HEUjqyDKNk<-<oh&6w?+icV#^Q^U6EBW2+Unj?#p`o1*h3+Y&S
58407 zO&=X9n;V*J$pEW5ugb6|-`ex4WGPIW<+!R6?=;T_HT|?o3wKoCvObCdo!vImw^Z3l
58410 zf4vC9Kq1DpBMhgtE?&2y&6k-a!iZZ<uEhb1QS)|g=6?j<&W5}>Lcdh7|CVP}D9!5O
58411 zMD2G*<u4d2T232<`sIkxZM4SA-!Zg;fLT0Eo%GF!C1B|vz;78)*L{r*ve%>Z#8KD3
58417--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
58423 zl02$Clv656k|aq&k|?P>5-Q2;`~6<my=M&Rd7k(E{eJ)V|Ns1Ff4<kf?sc!jwXV}z
58425 zU(MTk)@$(c+XFfgsc+Cq!JtuvV=pcm*qSJ~2=)69nl!;1w1W=dIQFT=kg-EYEpOu4
58426 zMHIf3C?a-f;rOx0cjI^pwyvQg?-_E7YvFRDg9T(vo-k~1VNvxB>-;#r2FIHWLq_~R
58427 z+%2&`hua%AYQp5q{^J`HB_AY;-9K{7pu&)6{`N7^O(-9Ga8%*svB9p`KTy5~%6mr_
58429 z(lnh8(tMP<!}Gc98zg_$GH&ZX{Of?<I$CE8w$3oPkD#$-;5#bRKkJW3&pOVj{O6b`
58431 zzq7qn1E_(@LT;!-n+{WJb2@nqpiKpnx82r3VXv&r<}GNf?uG2Od`u_kT`V=or}IYI
58432 z*(0x1sYmjCYLkmxG-zxo1!b*8|7o097iOvuJLT4ra%F8c+Td^~(!p7q$xd(L;pLRp
58433 zP;<KH`P$6M<NczX(%QVg(M5I!<>V)q-pE;-UDHXKZRQN>Repf~)<tL)k+xA;vwY_K
58434 zQcXGQ97RsbVU<!4^+iEt1|vNTR%E9Y)qsWCX-yHTPathjd*u$KO=?6(0%-@Wq56Te
58435 z6Dgu@G=?Ss-KY>YG68fX4X3-PH;tnrnn-o22Mwm7NR7m?anuKU<4|%q>WqdA8&D?N
58436 zsZTf2&DfiO-w>3WC~XcysnJMzsWweQiA-unb+A_#ZF!OA)Hu+_sL$yR(q8?*-el05
58437 zz&odNK)Lrq8YufiKt~G)gJr)E^e%99m+a+%R>!Y=Y~DYO&Ra1)?=|DAJf0488-5*-
58438 z`rnn()qDR5AK5rQmhQpcaMT<oQfnZ5G)3#2YJi^?+>F6*DC+abZ-oQ~fnzT$d!$IU
58440 zQ%CgImAZ@mCxGWkbT_ng58X%8=s}uAbEt$KHofMH<|^}5(`UYJt~cK_-!k7ex0>&m
58441 z+syaPo#w~pUh^~afcd$3&^&IQG|!tC9DN-99Ctbj9EGsqsuW7$9NF<RC=oxClJRp;
58442 z6{-fCO~o&iYEmr<gH>gK*Ltv#Xh^9A%H9HZtRh;w0g`3;PNAt7(f#xgj?BgHR+>i(
58445 zHW{A+-|U|}N`?F=q@(du6hjGtaVuyb327d^f-X{!W*I24Z9^mh|Hsb|c_?V=Mx<FP
58446 zN_1w3Y!o%Y&mj_0qDMpIq=aKrv}y?7CbZiXY3AM(DJqPi7t$<C1-;*cqbyM+IyXeF
58450 zj-igB7`298LNR887UQRA2`vSEA3ue8_YjUB#!n#{e~I+h2J~&D7%8Atjpm>?8#jZp
58451 zybPn2(F$pnnjum%jFrYp<gn}v$nFs67sd%l@EhYB<bP{?k2K5CfE-zZwaj)HPY1Ir
58454 z=cCTYoPTpJb}n@;cRu5M-nr8GlJg(VQs+A72Im&%Th4c#+nw(_cRBYs_c}jw9(8{0
58455 z{NDMy(+cVnG$^Pz=swqLuFbCZU6$A5jqxUWt9Wa9TU3v#x%-cI%5Et;S9YPS3@acK
58456 z{&@aLM+9a5`q8~t@kh>JXR@=Zvzqf}XIp1y=N--hXR-4h=Y!6<0sfX;#ow#K-)8W)
58457 z75wc0f4jloKIfOtW8m)$_{$BtJ!ojq2-gbNde<AS6W&m7v^T+<;;rdzF8r-6Yc2d;
58458 z0)NW-#g4qN`~@@vvnyFe@M1&(>!kI5`D&&NtIV=EPF=b=kmI;~s7#k3b@`9WA71|8
58460 z@uRB`@5JKk8~vUBPUZ>zTN(gW>|Oa=h<zWSF1-e9fn8%MM`y1r|CGL}{H03N{<{GD
58461 zN|y;MWdSL-stuX}^iaj>*+4t10^8>U+bwLBW_x;t-lbP*JGgia5$<*Hvlw3Y1UzC5
58462 zy-Yi3C)V(f)8DBfB4h*1rETZ~`Wx-1&x{tvRAZWPzcJl-fQ}(zrXgOY!%pfVVm6aF
58464 z*qCPwGv*t^jS<G<#u8(UvCMeN7;CIBo-yt*o--derWp6qd&UdKO0x#+vZ?W+vC4Fr
58467 zv(1OiyUoew0z`&?m@gy3mYVAjTQ``S%r_8M-^Q%{uK6CK>IdeB=0}LApO~Lw_Wm64
58468 z^b7M#^D9_v5TbyKf-&1|q)p~Z^93`~j5Xb6oEc?Cn~7$E8Dl1y$)?AQH>;T`W);M~
58469 zuV5ude3aq!QSZEV`Cc!U;St?C`<y-d=J^^W`)cPG4Dpuq&hzP-h4!L+Q0l<sYSny{
58470 z@1yM09A2Gg7i87-sSKaDU`Sn`&Pc76TCJ|n$nX}eGh$*XE87>H?JX$CD%COBS*10N
58471 zY@g2VHQDP6OGP5Pu*hfTPF}0EMl-%@gHx(;?%If0m6hT}GBs;$w2H>DR3GK$4bER1
58472 zr?hlvX84SBUu<?B_veet&JGkv_7-`4TXTJ8t-fn(tMKf0gWCC=?eePmjGFm9`sJZ;
58474 z;Zze&H7Q6gz{x{0q~#0C9^|7Qc|PjQg{xsdxwEe-r>b@?+~}r3Tw<ex2Il7%72=d9
58477 z5@4mSFDSzooSnWFlaEN<h27MwRG3R@R-sQ19O6@h(19-~t*$RP!^_-8U|1#%^l}Tn
58479 zljU4OwW)<Ub{FA)QQcPqwJ7<@&?;Ao$dCc83lAfs9ePPlt(Kn#BaX}{)w-Rps4%Cl
58480 z&z*syUav1QyAwBn1T^Gx^Ii|^xkX<dG~^bccp-y9=-KDVF7TEVczqs-t*$RBqjRsk
58481 zQnM&0zlJY-aO&i`zUYk3-Say4v@?^dAwOF3V=_u9D!X@HX;c(cSeWJWq_fMxw6aPg
58484 zL<|_gvC<e<y6@ri<m!-H90nVkUe_0&QL1>G0KxM%F{9MrZBj<5$=l?NQU`BSGD@Ai
58486 zIL<!k%^+W7`d<y0$NIWGRvu{O@m0h4yx^-k#>d-KjE}c9Fh1Va#Q1ny3*+PMjTj$q
58488 z*3`mgsT|?|Wr<`SeS>mcmqs|-vFZ74N-K4!*mik{jy%eSmBjN`Wg2C88w=-+(VAVR
58489 z-Jkn}|6Z3D&ZoH7WaW|5I<;A8BNfYIZ31~<0N3XqUQ^htuCHlEW_-)KzGnZfC@g#s
58490 ziZ_RfD6XbA)7yb#14MgkNlAy)4hSZBm;n)fF*P+)DmDfZZh;^c=Zi-%6LGbs6e|s*
58491 zEMI7L`rwkxRIj&X3EI5*>SEqZyFH&1-ViA5^%Zb%Y12J#o#}OWlh>KG97*|E9CAYt
58494 zttt-rLgaY+)DGM!Yq52O2zfBJq<z#YFVou+Gdpu1$n-K_0af^%HL-VV<wcCG#Oqmm
58495 zKwGJ7^0!ptB)eQ)1-#O^cF5%_ZiD!d$x>|Zi_gx>O~&NvZJD20T3^M$Z`)pVv`2F8
58496 zRY$X~TlZhp$j<P!NdH$I=4AM8PA>s(Y-1SIUlxTzGkx_@qn!+y?X#9G`9iGJvh1O=
58497 zfu_QJGU0i4`|UGILon%-SNY#G=??#0R?K7KIMy;1p{kO-RLc+W*#QB#MS8hZI%4nU
58498 z^lGUAxdcX2A%a^Wf>_(_u`GdyM`!w)z{@-RMSf>Ar(&XgO_A=B;cJdfSC(Qsh}+v9
58499 zGjO@Ix@E9I`??}|TLw<n+9Q#RgyKZ^jI~N~dLSV=J-JK=BzkcfPW0w7oan=4IB|Q%
58501 zAot0ML0qOI5=C5w6N9-7Cx&ntP7D>ka*!G(d~s^H@WrWO;fqrvgfC8w6uvk$O8DZ`
58502 zXyJ=fV<6*}6$%_Hd%iYE-eo7-A~}wQE_+$n8;`j*P-cRi<T4Ybj0%*QgvzZdTD@EL
58505 zvnPbX{H%1JYp~C#kvqA3vaZXg^)ux<D$&eJm_SKH)-n6+-)dv0{j;!r3E-<H1%Whg
58506 z2L$j^0R02`jAwviG?D-$BK?OA|0QhGfL_2<;K2Z%2;ec`rvT;w3xFYk^n73raBpCL
58508 z?6cbznU%|?;4j8nd5qT^-@HGMN$Qo4r|_CF-FS^Y%KP}~8d=S|q62B8T<%{5@IwIK
58512 z_Iyk=q}zZlIs&{!P#1L*^%8t-Lu<5igz~h9#_4bxZd9ifb0npxPBhr;OwFP~DK8|6
58514 zjMZ>TGT%YH#i(~X_E%Dj`4G}QQ9l>u7C{dWP_inz8s-X&Zx{6a6Wv2ItbMcrm~QP;
58515 zA6n-fVb*!G5v9;Q$ot5uM;}=A)F|sS$YQ^00(rQs6Gnfu{U{~qU~Dt319TD|*8;Mx
58517 zDVCO@jQ~_Lw3`NAPFnlvRiqCBzvI|>9IJ1g65MB<(q4>lC3HB-Iz>OC&3?eA;F;_(
58519 znrF38JFQRjXDC-4`;!BCBO$9u>t$e#`pi0^AGa>)vEZjqpx-$-_MEjv#e?s6t+gs2
58521 z(pseZqHbrZs%oLV5<o-Vkga|dI0hN7x6aZ|@R(_xGIm&pjIq`s{Q)oz2(wPgwlR(m
58522 zurATp*gl0e%5ehd4nC5>+g^;fK6w8TW!NspVEZIw?H8FH(08G&7S@*-3-A9%ru886
58523 zF8m{p?Uc9W$K}{Sw6hRnI%k!s-yo9{)*;o<+5vv|t08Eg%fz8fC&;CX^_BiRj@PwL
58525 zllu$wp<{6j?deqHp|0^JwUmBM=oP%^-_SnzqF<~J)Q`Yy$Yc=8M_W6L6xhN2=<8^}
58526 z7Cr<&BfwW7bk+ppU5Y+1UbWVila5FEz!*gq%<D|_8{mg|)G;UnFdxE8Ka@F-yt}Qh
58528 zA+r{?^MJd7uE<ZeP8trN0N4uDf*t${>_+-d>!boNu>G%~&r`|)*|tZ!Y(E1br$?<#
58531 zWBg3Nj6M|fx&r$88T*^S?`WxiNxcsr`w02H;jeu#wkc?9H29c-GAWS39+Y_lh{E_E
58532 z#kL>%KZ!ayu-SC<zZK=*g1&EsP5uENdI94Hl-rgAWm=z8Fk;9I^j8D*r=y*v);qcY
58533 z{BU32WB(9%YK?6P&=ClMuP%e!zec-r!P7DDw;toKfi2rwbI93e9YoAKp;n=djVQYx
58534 zZ6kgm4xLp)QSLjWHMZN~V;^E$3>-zDjWD)I^w$}6XILwZRj`HX80W8$`K{o)8~VQh
58536 z_`%<-JoZ&>*#0Pf!0`w%1aa;J`vm);#FnoSTdosF*#FD@Okx-NU8T5E5nB+8%HxZ)
58537 z@r3QOlE>xHhQyoew9jRPXD(A7m%yXwoxw4roLA<X=Rw3x_}pjLj-#AUiH+Pw`M4OB
58539 zg?WknM*N!n8@7)*`%|$$#5>lv*cbd?;xPO~#t$FlIYsQbqdm`v&jaj(5{uX-YXtnE
58541 z3dns@#$p>-li4_AL(jK?wV42GGs4_UnCl2@GQxU{u)ZVR(C(M}WbiX~T&{wrPFMGT
58546 z6s+IB#X5U3B_hqZ3HvG7CQ1Gjy9|(lQKYJNDANvgDxX7tiu0I@<TEcSm-8^4bv&Y6
58547 zs-3;ASD1(O0>rv>%ol?YJ3oh?r^)*C1m@OL`Y?_S!?9-(o2ueiF^>Hg>gv<jwm>Y)
58549 z?PG!S`M(F!g97LC_XGC;Lj&95z;-OBEBocY!}a|3+Bhb0>Y;!Sm0gKr<?*XLhLz(_
58550 z{#z-oN$gx{Ki|mbyOsS-AG{J5E4N*lU*U(#zKZkg-INxv^(6tjWLsSvz$*bf96)(~
58552 zh~KH#Z8-(T`fOl~V~C$pvahS14%o<x0UP2NFbe1vhy%?ia1BV#L9rIN-g#E}`H-AX
58554 zuzczd%V*TJeEMx5-rmCAYtvMqlxnMJY@Y?L=;_%?dRbjbZ`~^8zo<4_rvldwmj-mo
58555 z*ViVBzVOHA0&0wEN|)%cZlSxXb}B|!RkO&X4~#dB4-v1LsYn`u^x1zg3-L4P1p#b9
58556 zt5pHa6KXpw5B6h>0DSPqewY=zV;1fVAT~Ka$LzHiK-(_N55cX7LYf1ch(fc0i$r06
58559 z-b=j+Kp!=*Uo#$<3H(e{3v#Z7IkMI?q8mE^m}_gpck5uqSf>d9Uh4D-0J=$oOw!u|
58563 z5@VyyM?_hTh_b;?4q|3I*mnD8h&sTYJA6;nu?KL8s8a~AnW!^XT%Dn-E|}xGV#V7P
58564 zv8&rrqFm@E7y9ZBUG#_oAnTssyH_+(?>GRq-y5???~_D*>H*MkAH>kxA?rNYOdcX+
58565 zKE|7mIGT@`oR7Bhe<$h-+wO~*rLRTQ53=fqvGqGn)E|26k9z&l{~h3Cz;L2FVVifN
58567 zojmy+(Nmb`SC$gJ2wlFooM;vLSOvR$2{yYLvR-|G=pV49e?ZP_U=uGx9<LxCyb9m&
58568 zVQwjf&eviEycTx24(+{$`R{f3)9XJHtw-A%P;LWw*ogUR6Lh-?y4`dafVJRe*w-6h
58569 z!L?y0TcDFS!RMQh$6JU&Z-akKxbzNqeh2=z4Q1bjy>ExzZHHaI2VdC%J-iQF-U<1B
58570 z0Dt=c`r8Hl?84gdL#$gqgzfBx-R(vnA3^pX!SDBA-T5)bwimJE6ZqD?HbkGoUOol?
58571 z`!UDvhfVFrSP!7w=ZG<%!$uB5_J<H74?!=7uzwh~`UPUb7l<K8pr<d<&X-sl9!2@1
58574 z3((guu+?86!(Snf-!Q(5=;L>+moFjS{eiN7z$Pw3$7RrO8EoDUfA)Vuyk1xQzL*+7
58576 zEmBcqfImn@uOt;yN-8d$RD3%Cd5I>er0S%S8_4T(D&=)jRc-}vtm;doZn&M4H<47e
58577 z3{o}Fe+{%*^Epzr#*(_x0W2j|yDhMtRGr?yZ=})=lS+RIi^!3r>dqjQ`3$LgPm-!%
58578 z2+RV|ZvBsdpGh@n4jd)b5Ii<KL8{S2QjHS;jJ-)U;1yC$r;=*ckyLZ^-~1R(05_7l
58579 z`B_per;}=R2dUOA0PuUu4pMC%Bh~gxQdt{F<v=bunWWnF#G-QusSe<;BjkB&UjXv$
58580 ztbrs_UFrheNp<Z5Oaah$w>N>WN!^Aq-d2ZHE@Y6~id1*Vs(X8&7<hzKkB@=#q<Yl?
58581 zI+5x<h*Tf6(FbkZ4qo!Wdp_je7d-ddM5;gJbjQP_24KIS3UGncpoReCJm_BFX;MYd
58583 z`?#wysc{(NILLcE^gH1mQWG(jiQki&1l}j3{$#Xu&nKkrHAqc`-0s78r`0BPe={rr
58585 zFO&M)7o--UpT9#_k1GJWTmm^iv6IwNwDTlvVA(iQPt7K^{4P>Y!_J?EEv<kpJu{!w
58586 zvyj1alSn;}eqMn6uFN6zq6;`lY8B-A68c_^e%3fiy$n8Id6d+v7;h=~Sqq<92VK18
58587 zBlY@&q}I<QwE=qB2z%HBJ#B&R-h>X{-b-pLWc)71w|y?D_j{4r3A_CedfyE@-vb$c
58588 zjJEc|9`}U<u-VUGL!SqeItY0lLVt&kkov+;>PyJ|C}jN=eD2s~Qpe*-oyaEj%`K$9
58590 zE}+~mu$y0dkopbwa<L1k-|LgQ1U~;rA$1vkUWQmu1|9n$8|!P*>P6DVLege`(vD)%
58591 z&IZ5^(m``byV{cut^uH2$P=VPQ-Oby4m(OZ{43HCZ;*~$MB2TWv}X(H=$fQso*^Ck
58592 z0qJ-}I-wisM6{jsDCy*tq*J<+t`bGMY7FTc5=nbokgoPH>FSS>PJNJcjS-}4f{$85
58593 zN#8h`bnOz-bqYzRWdRoH^dCuQ{7yR41WuE#_c-bL=)VDYY}gM#zm0Ib$*rWD7Ljf?
58594 zk#zGmq+5gm-;us~6X}-Vrxp5WeFN!Rnv!mF3+cAl&%)TVaV+Oe((S=}`)^2hc$;*`
58595 zPe|YT1L@8wq`NdB-L(hlZg-Hrtr6*5@ZY^B=^i<xd-f&Ws}AYj^+@+YySL|&&I9rX
58596 zknTH*bU%!x|0>dVd`^16&!h|HlP-LV^uXUp7X<?!k{<jj=^;;&9=d__Fvw##`YNsu
58597 zbOZ_j$fS4~uoVD*#g|Es@B-+6#4unU-~;vo7f6px09pd5J8~v~{zvWx&XOJl9gJ!Q
58599 zo($RFGlTS$yGY-gNqQ>Ae?R)U|5wt}{iJ6=j}JoLGoim(kjd=9q#uH==0NXrpCesz
58600 zi1foBk)F4N^!y2=AIT>D=s?m7A>+TH-$hkO{~dJ~hXcDvKMp%x0=s(xGFv*A^plX^
58601 zGVt*fWV0N0_%!OS@Bpuqeg-;wW|WO*YX<Pe|G)8Er+<y-YyRKIi-Z3ft33b1xb=Sq
58602 zFSRATx-scB836oqO&8KH!_QtxBK<1-$M*~AweX>}4*-abYhlZ;BL;7(1|S}8T1R>_
58603 z^z#PV+7b%DU*1G}Zz9IMg;@M{2hv-y{|;odtt#nv;m_~F2j0C%dOLjLy$}FCvIA}I
58606 z7rsW!{^=m;^UX<Lz<l&eEKo-J*Yl)*J4X5<eEj#1NngSobQ#CW5R3g7tMxb;w4V$e
58607 zL59&DC<Yz@)&d8BOZ@&NkOd3@N`O~@ef+j18IB~NHNS01hBKRtpx$J-G#SCw$Ovge
58611 z0q+AA8TBFS`lEqqWZVS3-ZU6k27F3JgPVXy$!LhYMh$`60qCL8(*ShP2)bw-3M>Uy
58613 zvaPXgy$QgWS|0*_C!-DeXtNpE1wij@F|M{90QA%LI2l<PKuh3jGP3)VkrP5jy9Q*m
58614 z4+efFqr(i~Su#3q1z>BP;0vAL3!RYP2|DStgN!cdx9eD75wH<BLPj?NY5*O9k-!1~
58615 z_SOw;bh}8#Z7F2r-UYzsb6*BN0Wi+)i9jo$5Wx7lL-yT20>Dd;STcH!C!-hI=mVeV
58616 za~Oc%+zvm?LtFWfW&V$3^aVeCA^X0NeP77FFXYx2vhNF-^@HsD)dL{wes=@#oqlfv
58618 zM#doc{2&|~1e+K%7eHHs-Xo)EHyJ||8AHMAuzq9=hYpLsCu1b+Zsa@wHZ>{=KzpNM
58620 zi30%G$E0XrC;&gW8-3mlx!wIS8I$ArJ2&!<a0q2m5iF#AmtGW8IIeIY#f&VRFq+>K
58623 zS1sL(nvqk!W)Z^Ql2N;88E71Z(ai%py1KY}xH4UBsKiy<RqPtz%5$Z-s^d&#rmKak
58625 zGW?%>Z{xrIt&QrC?km75qK6J(%kNtAle3G7CLAG}m|$-OdjXW0aK_%J1waYPgjFi@
58628 ztyey^T0O6pt0iionx|%~>1v9a06N;PuZF3C_;Jntf2vttZ-Uh9BXx5@_u$t_<>1#E
58630 z2l(j}+3x49#<{$8-gpi4X>$>O2gKaVI^eHKfTjyQ0P2#XWCnp&GxOw&Q>{QBP<KfF
58634 z5m;+~@l5WyuK<<;i-1Q0ZO#E^5RI)bUmqehDNt`LP+Y0~q5zIx2LWDWJlDZh<p%sk
58637 zxE=XF8)K19mLA<qtzRTP1J<f&3<V?Sve8D$HxzDpT)kk$VX$-$tTq`oTNM`Tg@vbz
58639 z^;&bC`5Nqcqq)i4Y`$S`fpu>;-!pf>zIT})n!C-9%ssI3eded;{_-zRn8(b2nrF<P
58640 z%(Ldt<~j41iii#cDU%*SdObLggI`Ueu~gi*FV-jnD35wj7itgAT7c8c>F4;@SN?FE
58641 zXXN@qC64)bgHG^^F8m^AKS!_`{u!W8l%0~C^Fr-15}mAMNgosX@_+ngsA!^5m{CW~
58645 zA)@>p*hZlK1VkRC+ktY}a?46o8K)$7FDS1*`7I&-S`j1!87t>~YBV_82wL9SIJ-4R
58647 zIM;Xxw4C#90q&Xe7gRntKL&bjn}_*`nZs1C0j=C-1m_x)uT$%76^~lAnd*h0mHB^E
58650 z8IJjDIOeb6#{)n-Z;~4*bHHwU_}&08hYiO(G#vBSaLj4LF@Fu86lfD|567G}e5#!%
58651 zz}z%^0IA_^{;z<Bzx6-R=7j(n1#rAlUbzfU*$};42bIe;$+=Gba-8}1koMNt5F4mb
58653 zfxn$Z{dg{;0$HOClr`EAS)+}VHQHENqfNrxb%>^5{`!LM#T@n}P33uv?vpRi-7nvq
58654 zn<c(4@iA(v=L~2I3e!hDM?42Sdp)~6+dXgLx6!lKv&OU1v%<3!dy71e;5WxJ!!y-0
58655 z$urhd>?!gL@Z@=Vc)AE?c-ni~cv^TGc``k<J=IYs#S`aodqO;BpCf&axc%;n?sM+b
58658 zjocjhTI4H{t0JF`To$=FazSKC<jlxvk&`3GMUIRd5?K)07r$PS-6A_iW<|D)Y!X=?
58662 zJ$y>|gz(Yf!@>uK_YdzAo*UjNJSV)h`*e7-@CM--;kClO;YoSR!(+lD!d>Aya$4Bs
58666 z5!xlReQ2A|7NLzoGx4h(T0Jx+G;YA@P<LoZs2So9xfpUT<aEf%kYgc-L-vR43E3I4
58669 zcyaIoSVlo`N$||zX~C0&#|4iJ9uiy-*)6zlaIgL?g1ZHG49*H}8QdheesEfFjo_-m
58670 z3BggpVZqK|a$O4R<+|WH<2vO!?mFT+;M(ij<=XCg%eB$9*0sj9(zU|1)V0X<h-;2(
58671 zhHI*8l54E1*i|G~c6zwFxY}1-1*+|;?n-gRx!kT0ml@;_x)^jW=yZ6Wpp!wzf({4m
58672 z584x!5VSLBTd!AwwgjyY-x=f!S{?L!(DFzMS`xG{XkO@ypxHswgQf&c2pSzeI%rtX
58674 z=TZ3JLgzu}KId-dj_{q%t<KHit5M=L=PS-tK@Gxw4I1ryHmJ38S=eUhV&{VJoS=oy
58675 z66Z|kv_40ilS6!-+Tn-8N?c=|<04Yr5y8lDj^urJMC1_X5Z95=>fsHbfd$S2XW#xU
58679 zjp$-v&^FPLKWI72O>}ZDXgd6KI&{Dqa6z(1o#XyB_nwvR^@wX*C6>+fOyWr8ULLX0
58681 zzxerj#%ej+c-3mi=O3J}zOrrteagaFqv~DuHu8^_Z9`qd;<La%tl^;Nt&uodYSjYG
58683 zQMsbI+Ukfh>2g-I-QsiHpRN9&8_W73|3M3@T6MviAUyvQwAjzzr2W$R8|X}{7idR|
58684 z&$^cRPlFEgV{|Is>IRx9^eY+fVn1JlDG(lZ`}qpc9c59%4|q_|@aS}ue-m<kwD>yE
58685 zcf!efi@$~YIM-FX{NI2!_kWI@*CqdHu0=)uvBDelLNADXdI{a_e;Txz{}5XCaLa1C
58686 zb&K@=E7DI}wWUWs=lfoIJZW_Sy<qXxqxC#?jEKLEKAgv^-m`WfJ<IBi^cPklXas8k
58687 zQe_>5`HMKmzeYIE23;jmJuh;5&+35m0SjwumB2Ewj{938-CC@o)T)ED;r|EHCH_y5
58688 ze$u)hyw$e2wTp5-`XTpAms#4%vhEVA$YHHnD}*iw?P^U%{%01>ebxPJjpQpUMmtH?
58689 zQqZTZXOMHR6^*0qt=mCeQY%w*eaK?lR@N-B&ml;MS~w4*SFB8=yIAkA+^p9@J!R0l
58690 zs%o)J`df4P4AbIIu++C66mDmOHu3+CoUPVk(3`EgV#%;oRZT`Z-I@Y^?zc*jZebPk
58692 z7?--+S_JC1aNe)VSZ?|*eqs`qiE&YU*(~v_EYK6|L8{o|v&d-cMLuV??ggF5^3l6E
58693 ztv(PQ_FHUS%cYl>nbOOgLvdv@k#nzjw9jgRT5T=(vMQ4Dy{wx-^Tl(IiXNk^hf$`#
58696 zqr|#aigj%k>n#w<*IIV^9};_G9@a5cJA}{ond*_&lc0lH8gz@r-y!a61>vY>zo4`1
58697 zDYVz(Xw%YKi1fE?C%Ox3O^4H?qKmD3t-yL8bdq(a=w&5;o>nZO2TNGbr#C>Ku}*-l
58698 z;;}$$>_<g1mJ8N+q_<gjgN|dW8nAp|)lHCY;%_cv87QM$ELvd8X;#KphVsf-3%8ab
58701 zIHsx2*7Fh%StGk;h8oK;N_}b-iZ?;#DoiZ-Nr`w5v-Q$kt0mhKM@ZQ7e2JWwq#d^N
58702 z!^}CYlli5a^(xYT_kV(Po{Z}w|F_Ji#OhNL$qW3$WQ-oRTgs8h?<bD@h{I|T#~-pS
58709 zjQXjJtvy-%^f8h1IsebnOG}~kMFOorC-SVS4QeR8^OfK_vcjn&D-EBlQj+}DIqr#V
58710 zujN&f>MQzM%(0X_vZ~p{QQA7jPrp)gi|=f1@M8r?b^T32CrC6n?q~aaR5bgotU5-P
58711 z{Vo<VKw>-F#s&ZVY{_M8lRe6UWftI^`~96H!VD5=@cL~ddkQ@+HnU!$!3fbpEo+HH
58716 z;fekuq>M+%3%Y_SJc93nJ|UK~P-5L^DcMX~XeBMQ5otUw{0!yU2kYSmq$y1PPXGn}
58717 zLjeD80L}j!KsV<94WOIw{|3-K_`d?^p8REh-HX5MuP5-={Pn&39e;fvf5BgWN!5sY
58718 zX9iFk2mw-vdJO{x0{yYy$VSf}u-^db>e%Mm$9uc49RIf{@2Al<ee&w4+P`?Np(}O&
58720 z*P*Ijp-Dnxsz!jiBrRX9uX0)FuR`Sw#wzl~{3_oFJt|b*jjggz=x(7q%4wCYSJLGi
58721 zR@p36J|$b_6`}HF`zrFC`zp(>P@A_Zi-j%_S|W6&&}l*^SEA#DjubjXXn|1qPcKz^
58723 z&?7<*2;D1mm(cA(-%8mCx;AAE=t{|1Ayoe3K+2*@^bw(Rgw7B;Rp=z4V}%wAEviHZ
58724 z2+b4PLuePF?S-}xD&LDsX(SYuoKicbx};Nt#<5IN+>#CvD$h41%l|D%zQ{+D&mna>
58728 z#0!$d{*xB`iHa{Ii7zCHFC>W<B#9R!i5Db^7bF!36)#BYRf&o(B#AF1WnH1R-6n}g
58729 zB#B2PiAN-*39TWtY9*Q=RJ<ced?CpxlnEt@M<j|zBudMP;t`4B5sBgviQ*B7;t`4B
58731 z;t`4B5sBgviQ*B7ZG?(PB#K8QW(ut>RQw`Q{322QFG-^KMWXmcqWDFE?H6L_2^X($
58732 zm2ghzX`$jN3CDyUPJovr>`8!sB-pjK2wh)^`h>0)D*p>4L3|`(iO_{Y=Uw4BLHs3Q
58733 zx=`_#1o4*y@stGdlmzjV1o4yv@sxzzN>uzMLHs2_{3SvBB|-cpLHs2_{3XFFR1}{O
58736 zUVJ28d?a3cBwl<ZUVJ28ydz$`BVN2CUc4h-yn`R_B#IO7h!gLK6Yq!<?}!uch!gLK
58739 zB~CmgRy-wEd?Z%9BUZd4R=gwjm{6HVV&%&Vu`-Xu$~+P)o)Wty7XA_Ili5V(k=WI-
58740 z@Q>K#vG9!8g|YC7&Q6|FY#KW|b~@-3w$E6529a4NR{SDX{32HTB3Aq&R{SDXJR(*+
58741 zB33*iRy-nBJR(*+B33*iRy-osD^xrpR%Vb`nL%Rh8N?oi%p)=45i#NsG2#(1;t?_8
58742 z5i#NsG2#(1;tMh23o+sgF<XU-FT{v1#E37%h%dy5FT{v1#E37%h%dy5FT{v1#E37%
58746 zi{(d)<wuL<M~mf0i{(d)<wuL<M~mf0i{(d&<wuF-M~US}iRDL$<wqS8DwZE5mLDZH
58749 zzF<c=`z*j-W7u<_ZKZ*=iddt)vb8<Ba;?hc?K1WX(_?#?J=cg0+pB^=6p|QX$3uG^
58755 z9EEH@wdEjD#g_d4oK04h=ut(yDMe(MB05SI-jYQN$-<R=MZ!Msu6zz?pOM+KEh#ly
58757 zV~zrS(tK3P@b&u}48F@f#=KE-NOBfQ-8-c2Ua31q>b8}-eEl-su%sm44;*9gmBqhl
58758 zzONFc_zLAqOx5q2uf_hX`5EZ%_5GmVX})hfM{~cmO}-QIoykw?|LAyz?-V&+K+ZG=
58760 zNS|@=v#Z~ky>ayKj)tILIQWkA!~CBz)qF=N-(he>fo2LVcJR0c^M5E+S^V~bT4MGR
58762 z+`;!H7CUBu4s`IH&rW7@kpSPPeTLt5P`%72_&O-R5uv_y#4%SU-=F!|JPMlR;JXS(
58763 zO)t_L%!8=)7IUuKJNS<78Izw&{n6~m{W3rLHwTw|*gVZoeLCurGMe-MPz9gd?~4w;
58765 zQhb-=qWK|cb$;hWJ!P%|y;r!pU_J!;gve@<uEsX3`L5JR^Pi-whc#az{)yizvHW@`
58766 z(gXAeq<=D?FCEHuuCt67<S)|v-pEqT_Yg*CzNd6i^Y!fe48D6jlDPuqcaMHD`EJ8M
58767 zrL`|LUvKUs{-X6Bw3cC10bOgbROf5H?{~ZAH%2aM_Ks}L*S5ds|MLo3Px|7gIW`&m
58769 zzpDe!#kiDH!?x9BgYO7!m-h<RXtYV&48BWwBio*8%KX#Yn%}89rdJ9N%t@ZX_YYs?
58770 z9J*Wmgq&@f+j-C6I|Fqz-$@&8^8KF#eIDs2`7Iq?%(BuA#79O*`X;t{{WbqvX<cNF
58771 z;QJ?H`CT>N&HF^6LAYl7nX367wNLXs`6j~27yRU~I-~i?@wWPL&=)n|KYUDY2VJfa
58772 zf7BFydRX1fl!j`)+YqU~0-dh;&iU&aQA>B#yF?~kC7++TsiE2TKi7PZCDmY?&)58X
58773 z%{FdXzsxPuJ9?W$NcQn(489{bLU(5w8hlq_ke0i7n(ykAiuOJFb%|Ps_}-4@C!1Tb
58774 zb?IDvitSt{fvyuP^$HIcG~d11BXO*&jJ>syDw^f{0Q=d-)Bx5CG|P8&c4>}gtqi_%
58777 z%kQY@X-0Q`wp+8mPvSRZbSKUCPIns)Zj)^ZKC%LRz0TgDsu>(TiVTj%cN-yW!;0@2
58779 zahiQW^)`8ynJp4q$`-EL=-NC}I9NNo9DL{YUYS8ANNnk5^4*)mChK~<BN6G(9T<y>
58781 z&FM&wXDgy{O!amLml@y~%+D-1a>Wk$36AOxzCYhye6v2!DQX()SKnYF5~@#3e)8)9
58784 zTdK*=uT^78XH0&I%95G!0iI8(i@Z;@!GQGi5S|6p-6lV|Fy7#(7;EOUoK3cz_B<=m
58785 zZ~Xl-6>jj|`*$?YyuX<I^w2$y9>Og@Bk-`qsHP@AWz)pGnY~FYFrG_dEPSti6Sqmz
58786 zCC*G${MK$4^@T*^MiT8=Q}whw{lw9dYH8-`RrQ>d;hAEE=GpThjagVbbwAKJiIB$(
58787 z^r8pJI_g!KvyN)F#N^-joh}7w>rDLzXf?KB)ZH(h%hokd-@tc16+hecuI5M{q?ym&
58788 zn(t|k;h00kdaT$FKi9C9d#7fa-=e%<W42PGc%`H|@hn4UG(XX>RI!$C7XD9ae!}hz
58790 zQ}fDXhO8Lp^BZWe%<dvLe)eZCTQYUj-{ELS#j|{<JjJ$LaWs2ejguLQ-&OmV?VqNK
58791 zeotzCHe|0tOr}iXXS3#K6ZY~waLkW|GUu|a#%kE4bwXy(2^#BFTCWhjF`YM-xs~-B
58793 zP^igKE0w*TR+)TvbiH`rV1-qI^`qJ#X?}v{L&f*xlbF(*VoQU?FG_`zQr3ko;r|Wq
58799 z>Bq}m`YCdkeyZH1KSKFLjd4EO7-yr6+Xz%+UgJz7YP1lBHW_&>DgkHOjd3p680XQA
58800 zaqit1=d6u!R@fM4t&MT+-q^I!2xr^y5-HQ@qTNTMa{=Idwh_+c8{yos5zcTM;heV7
58803 zd#<OhdDFGxnTUpSGA@#<UIK-w-{`8pjFZ>wAG>D%@HPAUD^h!|IkJ=f^p~;i&-)o$
58804 zD($ZaeAn!+{&PDO$Dgm1hW%y8mD&usQkyXkfE{K`m%S+!<t7BSqXXMv*R(nCPrb-B
58805 z+zi-kMlR5)B0ndi^))4%U9;byB9)O*>#8H(jHIjgukBTGE98|CbG1A(BCaXv%D^O(
58806 zez|-<{nzxfmG=X=KUAc?xq2Vzqrkz6y?yDsLFMXH!vR;fa_xSg#@1{0H(#~)TKX%X
58807 zt19-Ny=H$|`r?Z8f{IiLFf)*z78q$jf9aD0`_uo#38Gl~$n+tV^Zu2*ZT+Sf*!m5$
58809 zg{$`Eif7uXt81kluSm%~ptJ)O`+Kk1-&LOav%ObpZ+k`Rt+b7xYb*BGTq$*ZdyrBq
58812 zlbI}?eVgn+NC+W8f(f#Qun2-dAR;0nvWtj_JU~Qb7ZDK^5djg=hdgAH2MGL%JRVO$
58813 zrvG!Q@APzc7SQMazyJOJKS|xbb=Ol>r@nLQ)TwjLBR2C_)PKw4=I@`)-?#RXf5ZH3
58816 z(4Wh`rgMOZWlK{Y@UYatztTG;z{64#-pQj91?%-ydbYW~ApaEE?XUDiTmF&8o<z#h
58820 zdw)~Dcv1WFi-2mya~io%6#>hNCpMi26e}Lllm`SWHX&;fP^s92M@2xb;)14p719W4
58821 z`6~`I_PUGE0L4rrA1eY@6^*8A0k4W;B3BqM{JA-A9(}86A8@MBgi(d(AvI}-1;C@i
58824 z=HF>PpMNvoz^gpeNB&vl-+Tj?@=xR&_>%|x$={!E(YfmKsOfpP=UXr+e|^4zFL^+o
58826 zuu#aiph~_YpKHk{@}ZWzC*Q!Ayb6ir8u&7)-%S4H-p;k)OYYTN3!dbj$u;_K?(w#J
58828 zv4)nDYtzAU2j*6{9T{uOFKEkGTXJnkk{if%w;d_9<ulE>_WIAoaxJ`=Gjg`JD_XE-
58830 zwrBk<D>bid1K--^XZDu1eA}oudo5}E%U;!%Z^6QBo933Ej{0kJ|H`)MZ`oZfxt-Zl
58832 zFYC*<jJ2}PtfeK-TJbsa*H(Pbypw7B9#y7ApRD75=B38jXAvKo@=s0TL*@yTH<=cC
58834 zW>c%Yl-IQ7GwWONxLrPG_G`uG%<@c&{*{@Nnck8g%(V1^Ovj`=%;a{LXPHDMw6A=#
58835 zJdx);nU?mh%WqTuOwXtpGI@Ra-B$U5f9>+2F25%K(r>35@+1wKYWl@i`JH|y-J%~h
58839 zfmVLrEpN2)ciPs9Uun_WpPKm-|5D?v{MgQ4sXw>!Q|hfYero3z$sgvmAoWr&PqruI
58840 zo^QUk-Cl`*yN#b(#&Z+n!FGAP=jTo8_Y?X;s?AcJda^BV%JDrvKP9Dms?A=Vy0<NV
58842 z)q=;VC8-t}nwptv$TRuAzEneY%J&sgsg~;_sTO&da;94NEya>8_T}U|$rgT2zLspr
58844 z%6ny7c`unPZ@YaE|LXRKz0V)i?GH`)ec3nmV83X`@0RiJ-!Z;z*MHi_x6SrY{M$``
58845 zYLe%Bl8<|qhkMrN_M{K&CU4s1Ta&zOmp}4Y^LVsPAJ|=A-d+D`*LRxr%RTB7A29x`
58846 z%j*xPKg#Qy<ZJtUMZ5j0UElm$^~>Z1d(baGNWW{-znb-1ncs(gihs@e`=0dEc76PB
58847 z)eqbC|8{+}U4FLfbGzwhAEb}%Lw>gFL-^O+-~V5e7nAe1&3~11C-?U_Kh$O)>1eZo
58849 zbh?c9<!9)-dAs!cse39rIC`0%fIe-tx1^7YklyW@yz<A=M|L{H7+i6V(OQ=C74kXg
58851 zul$mHZw8+L&-`ckOng^ALqGWA7{-2imt*XyVWfv2fb`I9a{D~PC>aU#8>VmJ$^p`Y
58852 z-d*GcjP1q}lEMv0A+=zPFA<f|ls906X1a!;2hZ0C`rdt=pf~mn1fz4@k5ReEtLRxs
58858 z-L)&F|0UM;x$;X3e|rCB^uCf2=zX|l#|ZTMFJW{bb|Ly-k~?M1kJm1TBS*{UT!>$a
58859 zV7=HnWPf?hB8+&(b$M^EeETu-Ezcm&@Pe$RA%W{3o?~;Nz225jdzfRSyNZ1N{&M>`
58861 z{?KpA{Wm%C@OL<Rmwr-uipTkh$gAk_M($x4?fmHXUqr7W>5Deb(a(7B{iX2sogDpT
58863 zes64xK<~Y8^DAZVz(`G(^CWT<M=!=ZIQj&y9Y^m{yYv9Q38NB`>-ZItllx_f@W?wD
58865 z*GtO(g4`mhU5ZEGy}-}nIRW=_JGLn^(7RMTiktvPpncgeuI-`T_c3PR{$!D)A1N7>
58868 z?pNgVH%Y9>O8$qM=RcF2KPXp993y-B<;d+khzI~kh5WyKJPmd77o?weOJ02vBc_w1
58871 z!&h-!KeJu>8DGIqko)M7cO|Y3BTwKe3$hK@50DEvw!(ERBYW{Kc>c}O*Z&EQaXXjE
58873 zQ{KN;UW2p^Q1s<pCjIrlfPSmwF8m4yJRcEqEBXx5LnJ+?aP-q%LD6S=2ggWd@5r?x
58874 zL5{0s5*WD-o++clag3JvG)7t@eNslu<!;I6xK`(v6noR_QX-#>$Jvmqy$fai|85-b
58875 zT_q#Jy)Na>TtsR52GT>H#x2<-{e#cIH5EVu)`<`OYbnKem{7O)#<#KlL6)J<>s9iu
58877 zzaj!(@mE~yH9#<;-EZXa-y`CYuMqTCewCo7_{9`sLf%Kv&%1-5=k$&2GKm|wPUbMg
58878 zG2SJ=n(}-63I$chv0ct2sPn8P7=3P$#Np3K|6M}90Q)~d%>lF^fw=uXuBlK6^2Wz-
58880 zOTYQIWmM9m2u4?%g{!S<e|aA@oYP1z_8{2{UKvL;D9Ijuu9WOduH|?c{Y*i(L3I5-
58881 z$EUqG{!!RINH8AbuTTf0^JL7rhY0#K--}dHCa?Jlas~Mc`xP9Sh2GfkM)Z&WB*#@8
58883 z4K$n?5*bj3{7ntl<836k@?<B*eyqKKkub?Rf-7X^j61P)%;PUgp24>GrL3{<%X_bt
58884 zy68%RUp707ppX8k1mj-z68yH;eFRsVIA#33bMTup<XMWIxo^}^MqFA0X-h|BKdQYS
58885 zm92vj;Rr@^B_FF{Jsd}{X6}&q{0zmlSa-_kj;G){D0m}E)i2?iB62-PJ##y*^&)r3
58889 zQHDM!d-RTR&<Vv7jMB;eiqY`+gOdI)BK_=j{+QfCuNS{Y{O47ajPwOu*+M=cIs7qP
58890 ze+ZHoSH9gY`|s@p*YAA{OU){{x`RI=Bj7zL$3)+frM_RTR5^*-2}TaYa{Y^3k@9E_
58892 z9l4C4MuQ&tg1i6-qL4SpAAw{3jl4rV<X!SU36L86i%?EEiBgT~Bt~7-MY7aQ-6Ti7
58894 zbSYUzm(dkuIb8!-xr(l%2ayBl!E_^8M-Qb(kb~%v^ki}vJ%ye^j-#KTr<3harnATi
58896 z{`b@8=yT-9^d<T-d62$J-zGn$?}4W9Yi46M@)UDGZ}<&!GADVO`GCj&g(X>%Jj2o~
58900 z@=>~jU&pV5vGYs(C3>PLh`ID6TvI_W#x)i6-<89Z!{|HY9{Ihw)^r%8jgSt+ukXO`
58901 z7^DS+i7KQKNCRf-hE$Tj95hlUQw&l7k^#vENe~A8lYu@i_*;<Pfb=q?=bI96B=iUY
58902 zJxuV2AUy!-UPyOBx&_jWX1dlqf0g;H%OG87{+<VE7o?q#PJy%o($PRyx0y<W^R18$
58905 z%HENQfPBV0zNgN2-3|V$KVyf<H*ZX~cjGu5lk2((M)<G2L2&IQp@^JB>UjN9e<Sj1
58907 zCN=rp#hU!eBI?+%y-sfLk=qC5_5!*6x!itUZhtDb56Er(3wU)JU|d}L1Mb(x%_Dcp
58909 zyu>_PFXPQ}i}Chj@=K!xV++^blM#b|BUd9o2V-RlTFxV~Zr_mG-+(+C0%?Qm0DJ_;
58915 zc!7LPeyQ^7;uY}*xlUQDY$i7;Ta=HIyFk-Mtq{L2X9FFcxQE?+u<e9YfRut1f#iea
58916 zgar8DW`r1jZA<m|Lc_+Ju>TtTz69x6_b?ul$De}ZPr&aZ=5-I6$M1)9k9q9&`m-nQ
58917 zY214=r0e1SYam?-2{aMog0^%nq_ZHMZr*b;r0tN7+{5z@Z_T$RW0SmQed~S3etUS%
58918 z^4*Wg<BKMb8*}z>-*kA(VB7Pj@A+9Dl#Cuo9guSH%mkzm?0X<NAgT4#xE7M@T}W?3
58919 z`U9j_A-xFc8A!i|^f;u4A^ix_eUR=Z#C0pAn;=~W>1x*%u8ZLK`K>g#&Vlr)`mfA?
58920 z0@8_)j%`XuKspT4Mo0%jS`BGzPi1l~kk6<#J%6N5yRoP8f0#PLXAD5<hE#%-am8E#
58921 z_%$He%p}~y&hh%S&ObwXt9}fx$7eX-Fn?b*X&NwpO*-*j(sZvp*FE_TnHQ7yI-iG<
58922 z+UjLPTI6w{%lY&q-OeZXUMA;b=I=w09+)hrVe;=p8Cz&I=|LJB&jC6x{XM+5N4oBX
58924 z8vYyJ*SC*zolW}%^EU-40?7x-3CRM9xrg<?LV5?%oAv8-z()Ngb06?ge+m-dqW%aZ
58926 zq(zYC=+pH<`0X*zckH_k^c<uFB)}9MFhvJU(E(5NM!zyPIRH-_fF};X69?dl1MtKF
58927 zc;Wy&aXdcxEXTv<FJOz~z7N+1j=P)oZ-sOdr0XDE4e1I<fJF|#A_w4(1MtTIxZ?oa
58928 zaRA;pjxg^#3_r5jgeBc|{>OeG+wH9n-w*bPBh|_N+vs=AxMG{^_Y?RcpJ7ZMlh*`H
58929 zylHv9V<SEvuaPtdCUHr&&-Qvk3~8rzPsjFEE^NzYylSRf;?lTDW2ugLlBTzs+ULOk
58932 z_+w9UXM(4&A2iDw<gMM>zfEQ|%Zv8@@wf9=8(n`Re|;z(+DDz+fp+`Tke-C}7^H{H
58933 z-v=Pw3+YZsw?IO9#bBgRk3I1M!6-DpgMW<tEBxc+Rrn{!>+nw@e}sQ3`4jxp$UEde
58936 zBPRtht_k}-`6Al-3C=gXM?Vfn?!qJV4uTP(ULg2Yt>@5}g5@a2jG0D1hSpVrU(bpY
58937 zjQDj8TEN*>nuhJubgrBu#JFDv6P(MJ-UIXjim_^*pctXbB|Qu@X<M&JyYprlW9H8!
58938 z1EaWF4aS);9<9QW#RO-DzD&{Ld?$Gn=a6U^_bJA;N>H2)x}IVbz5OW0UOJfKT-{na
58942 zFix9C-gOT_f04(~3c#W;N~P=!f>D}|LhC=Y=u+7t_^$n=t^W~u{6VZ?HVxaC9VO?1
58943 z?k3p2Z<24~d=<6@y9q7JJW4Q%(iL<7_Rk<V>-kHHGb?=rW3-$?F%r@&g0orY(KF>U
58944 zadzz^SQ})8tp6X@-jh6oG<=L;l$WV;uH{*zmi!j&)GUDY2HR_4dnNfgY%j;>18?D+
58948 zi^#sSieOy2-;tfj|8j=u1zFOA3C;=G$<?quPTK3c3C@!K1X~=QzCiXA<p1Ys0=D0x
58949 zqp-c5;`{+a9H5^;+dM5uPFqUQCbdqM>sEr1kQ_C{hnFR<z9?%Ti{EJ@zo{X@-HmgH
58950 zv?ysV6ZHG}BSHTRyPW@fSI$QCU>qL6H1xvhBp7Az-w1kFJcMXN&m$K~PX$Dqizvne
58951 z`?HA*_?)j}FRs-j&zA|tP~1?%`LJ_wwh1W42#bdj<g0%n--qXXlH&YdmHZG|Z4By|
58955 z8%_CVA%ApJ{xQh+Hs$XF?tQx{e>3FoYRX>)`BR$m=R<x5(ab#Kr<3R9x9mH}zW-bx
58957 z1$z#;hcwvb9)~@f+{1opm3xY`&Eg)$TGr$qmO+(!=x?dWJuB=9xrgf|IqV%HbpZ->
58960 zFBBuZexKs^w0=PG+gd-Q_;te{(;v%zim3hw#V>C?hLPLolQQD(KU4Hzdz#{W>T@!#
58961 z=L;BnkG@1-lIV&aHm}Jzsc%sHvfY~$qqV(FF{a>q7`2YpFt!=91A0-W<D5O~X6Pq0
58962 zl?|cPz{sO)6r-uJD#K{RbJ44eEyKuUY$eW)v#l6Ujvb40mTWsa8NFK=;`zA@<=5xX
58963 z(~(^u{TQx5Z!mU)jJtUg1Bu4IjWNd9Z5U;l-HEZ{*pJYIfjz>Yr0f?mp5OBrJ(0bH
58964 z(bw4TF?uC?7yTVM<Is*=!Pu7kC;TVG;1BVKh?V~o^b`w!m_JN3{xkkFqVh-hBShhk
58967 zh83LYr_=|$`8F8`j<f<N`e}d$X$bhROgm_Wb^;ep0V&i=`)EHMpi_Y#r_mAMN8m-^
58968 z#5r^>ok!;bH!h(|=@?xGyts<42438s9sv5*fpi^R4?KA=-AE6in~*PoD|gZ}fGfX1
58969 zFQi`ttiJ^K@yqlo`W1RLaO1Ur_1DpVqSw<K=#9Xa-vfU90r26Ef&U%>zIzh+4Y=)J
58973 zU%kZsmA%Yf0j_$Dz0TfX|AYO3{gJ)N{>0v5?;?Kzcd1<C7H-8ESnl9DcXAguxSM;p
58974 z7kHy6N}?<}L`8IpF5r?uF(ih?G%+GZ#dP48g~%tsCGP-t{6)MA+yR^cd;vTG9FbDe
58976 zdau+-0w&tyzc`%ZBm}w+el-@qqj+fJtRbVeVZ=5WuT92X`?k1E{80Q@{8ao*JSv}C
58978 z@Vl?zcOOB|Nh#mi$Mr?HK2`my5_%V8WUUI<-w)S2NxGWQ9d?`5qN$4DjOt_wR?vx3
58980 z+N;3BG?fACj=|H(5{?mQccJn~)?!IfIRQNa<&-Vp7HSAymxh<YE3@ttEq}c7{qI*k
58981 z{@Pc?soN{xySH-udw}EPX9M-g$u|IAa6n!*1}~!c1|q#c2u061P=8QMZ+$}+pC8oH
58982 z?$m4b7tr!o#f;-C_kORk{XLK}wHtVqtmXd(vel^S`0&N>fD?mM3s!icICUl)>JJ3`
58983 zK23C#t=X)_+MQa%tCgfxFXxqb(VYWXS37_YkjwaApw-t@^@u}ojPN>UP_ks{EzXq(
58984 zRy|F%0I$G$h*rZ=fCKEKh9yt3Lu83otgE6b5F@d8NN6D-qd`ZoK~5G9s@mE>*=NgU
58986 zkfW=va?IyNH@UH-P2toeI*Nq=T2U$iAYl!&Llh*R0rlz0vka)_`1w;VFXD$Ns4PG!
58988 zY)wVE#b1cBSlSh>-aJukBdYtSs7<AYrmoE=YiobTPexW9oYq@9ge~1f1~#?7!zbIi
58989 zSX}enK;E!mTf>ub_}$e_wGo1ApCZ`Sp^3J3$+p)2-nNdANKCf%Ug`s?V;R(dBr2S-
58990 zdOEGL1~LiftOtQWWJckNI0I7@S>Q}4)dj7*ar{OYToD)qRLHS)>Rg2|kgQ-^SJI3v
58991 zj<y})i`UgJ^g$t@Gpt2~V29Luoh%46H$e|ZZ1s;K>Kr0KGsNb0$X7-E!H}YbTT0Tz
58992 zwNR2^g9H3NRa=4O%4Ibymm?Ndq0;LGn`_CYge#X&EDKZJ^-^}^gb~qQ$uMse^8#Bk
58993 z#w@-<l=miGg$$OO&n8#HP$ot?vDC=Qu3}`OjGdW!sauZ7Qak_tQbSiYOTCZ2`XP!f
58994 zIl86X{1^Uu!4)Iolm##NbEA@>FOZDy%g1<c%2h}sf5U)pEgb;<1}H-eo@DUio*5j#
58995 zY^TXT63j;bK~G_|4YgOuRWJnjFKLD1hi!#b6Ri-;+8V83q+BlKz9hDSur4eYPQpfT
58996 z0{1y3mNpt8*>!<68RL@u`VyXwXsrhL@G`lEj&e=B4V`@&v3{GdyXmxBrphRdfFI-}
58997 zI6vLQ4?AZPKb-$LS%LTwMEof36;79R7Te)NvfD{0%Q~c(K=^2|7m)f@z{=HhCMZO6
58998 ztM;J7Zc&7a#4f$14+wQg5>feZ(dE&qyNPZ%2xQkui<7w9-~jv@);ti^%tIg$<W}>C
59000 za$>n-{`5FueX{l89r8{1GI(dbE`qQle<xlYl)q}dhG0k4hUyo~8dK|+tkztb(-%xB
59001 z4#noNX@<q&6KW)^Sb{#QYSC4nGZ0m*BI~rfJ(h4-p-#KzwT-HFP0=-X$i{WWu-lx9
59002 zTeCVf-KD1FlMGe0`fN@gGXgd}5YXTWF2CKL41($$4%z~Cw;l`%E4<KYSz|Y>if(cH
59003 zG>21hT2-5ZW}pzLIS<j5(DvnO!Dq9ooXOVNtsUz8k>JpQhYGtjf!PAb4rH8pm#Z{U
59004 z|HG+BSH{*Gw)#tkD_5`lXu%hq63Do{eaMgD@o$iy*8T(y4DUzo5X#<O-{1l7M1$;!
59007 zgvW^4R98BT?P-ZdcrfOK#`MIT?ha=##ErCjjVI)TCbR|pMgWN(e}L3#Pm!5qB@n%6
59009 z4@9j_HRQAUfxFWhwOOnI$Ebq*Yr#@_tUkL-ag9G<F*HrrREx`EaoL<6m!{f7_Mqza
59011 zdf2?G)ox=rCSi-~I*7L}2i8eBuvy~Ws%RZ0gAxcamO7)j;#HoeaJm{o8wVVdPMx?y
59012 z3C`hodeyphcV-Idtk5ErZ>wY;FAfg&_XYa<28V)9mdz9j*^K&@FFLOnI(Wg%k9O#t
59013 zhi|F$j+TR-FyCPvUg-;E?W40JRx1qNY8^niU8I5XBdS)1{eLah=|V<QZBpDsGEn@0
59017 z6?l=rGE`lWa5@<-L<*UFKC3kfgEAG%1pN;RRKyYu^$iYA9l$*eI^3yNd)DW$g<}3p
59018 z-s>vNt+>5zm(6{or#ll?d_|9;Soz09BB!L1o|xMno!w)xSjw(|!=Z)zUbHFJ&g3h}
59020 zsCu7lfuTW@Zmn1+76D^@)}y-}n$4qU{3(wk;L#0Tv$=JP$CBqO)4qZ(9J<TfpA73h
59021 zZ^0>?4yRX-=;*O}=J@O6l-dvftEn7+eUi#lXg4Y^=e^`?Q6@#wQ7xwY(Cg@!fX=s=
59022 zG)xo70Qfx$LRaOAT^v<-XzC%v-l+pKnMqC-sqy<Jx*pKANwehaRIysag^I@!vMGua
59023 zWKt&P>(Z^3(3Gyk0PoczIgLXD`+Su`$YI!A%<1=ef^l65C8It)i4=~1mz-U@4ed$Q
59024 zVmk1F6m~aJ_~A%opjzye#_{i}k-RFnMOb~_N)d>(1Cc&Sq#8=Zd^&Wf+86jRxmX-Y
59028 zP#6HZG^k6(!4=T2T!8fo!-bG*xO>(}IFp4@dry};y%?V{{_ms&D)T;{K~<;Ie8%{{
59030 z6MzI&c#Puc3HI47ptKc6KC;E))GfNM@q;yc$y?IHnkN_TEY6v+-QscBtstQtK*9xl
59031 zBRN*A0NIu%{gQ-IJYwT$Zj&9F<Ba-dCVO-+KuI7S1VKpsjmFI&F+;NLcwN&{r}hmY
59033 z-3P=S&bN?r#1xVzQ^-<DT-6OCB4oF5;Jz^;h{A-j4F^jgptj+>7+(i0Nj9r!d<6*V
59034 z>_{boey9kQ<Y``OB^oiOH~~U_Uw>b7&1&_k&1Rrt<KcoL6g}nCoIM`Ju2xcI-QrIg
59037 z;u9b`E6_|Tspy9h<J*MZLSX><ZAx!B41VFdb83sou3C+1q*D9qd#~UqmEQf{EA>$-
59039 zf!E{GNq`2Lm_{~0P;K=5ekU_R-3dhmD9x0^y#;HK7H0G9p3Z_1b1`AnlUaAASX$Z(
59045 zESXA5u`AI+r{B{R=Bu~p#wR@y&~d^kH<g|EAo5Ld9Erh*ZA8}El%fxMtnLsLb-S@9
59048 zBn$1oNS0!TPC4;FtEXhs(+_C$e6F)2*PHK6#De}tqko8IZfV&=_Su{Zn%a-g-gk>#
59049 zI@v@h@{a?pEkUAWmMq#pL;*=p$GkdYO8{L_)Nk8^f)@@NPEhcoG}^4-4GsD0!<M1?
59050 z*3_TXC3&mPb-OQQGps?cAw14Z!exu_<2u3y5UVE&+>=god#EpK!8i<?>DjEp?gOgS
59052 z@;iYc3?ml`CEZZ$d&%wOxAZg+;hAbuL-U2%ifwvW4#jV=h)shnBYCdhUEZ`I6A1_M
59053 z-g0E%cKf{j3QnzDpw#Yw;Zp6({AjX6s6hLmtkH@Wo&*ffk>P<K7Lz^kd?a5)jjzG(
59055 zigu#f3H%rsXC*+@P;XNka%U(IOt7GaqWTOQ4Gi`=vhi>nRH|8X2Zs1D%-=nu!U92G
59056 zJQWgCIx0QT5pD;Wyaa}pIti1_OK-8kFf54-Lil!tqSf+Pg1#f`n;0cpP2&|%_?`7j
59059 z4!`c#6k?}#)#Pliq@=DZNIE1Lv@)eH-_<##=ys$GCtp{c(KmhGaL=qzJh?NT`Xs#l
59060 zgz=Nf8MTK&hv_9#t9@aphYFgw*_el-mId$J)np=&<7!GkU5}y0B4iyDO$A}FRZ-CV
59062 zz~-6WQE~XXyxcb06EgB{<}LW_p`lKjtDD&jpUq+qra@OQ%fnPMilgb;E#qG$OKT63
59064 zSjL95+|BYG%mk?d>LbGuirr$t@5+Llv4y=3yQh-2q+>S45y)BG79}FMu5*i*3%4^P
59065 zG+?;!``p1<*y3|{S?ysL7eRNy=C#`cx?(G5BGl%xD601o&8-P*jA?Mx%N#DN9#(bL
59066 z;f2~UYXfR$hOC`4c^+`!51^s-kR@bMb$%28Tz;!_ECeJjS+Zzeb^6GFMiyg_;23fN
59068 z%0;?7%w4n?8dHHY72pI-XDW0KRX8g#j}a;aQgOR`h07Ai4d@Z477PeAYqNvG)HhYJ
59069 z1?=`bzmGGI)#kNXrWoZ?z-bHU+}2l)xRZuE<FojC%T~Qil~BNHExw?K9EvRxWC6D`
59070 zA(FvR9`5tS0HBKe6XYHdCrNU#?4x!DtwzT@ZiaIu2s1D?5=`vcv-!#a7o?;+hC~_j
59071 zLf*L0Gzev-55*)J;dQ2UtI4WWMMu0ONoMkyvN~Zwgc_GM-4EE(Fms_*NXmol>zra>
59072 z+kp`)6whwA+5I*UZ!wo)2-R&(2D<nsB2K8%M9k{2+l`Rg+owC+R_I_&LrDX$+1eON
59074 zzoV8Dft=TFa3zp-EY>{$V5g4%&U{RoSni0pt!TR5?NJ~6Z0`rY?8x2T{tubO|9^98
59075 z{J)X!0wo8J_mbCZhr)m|TTMC9?QaZ+lo*Kylt6S_0-@~2A*7sFsw)L(EdmvA$h3r9
59076 znuvMhMnW^}x?fmw?)-RfZz{H8zqHNh9}bsAPISAwGXM9!3=qJaWda0<$#MPW@jJ-5
59077 zwc8-SOd^7r2T5&OQ!;5k$EH^VXr-u|a<WrJ|IA$`V{aow2&oK<%|sBfO8P-}lyb#V
59078 zPSc_$GNNMCFO4UAHc+bOIPEH09M-8SEtGo5rV7Jj<g+nn#b>p5MB;N2^Bv=NsFrLu
59081 z2WMjZ9%@hZMiMqxA?lB~V|GQT-08GBQvUf)x7XzXbqno{FVSC+Gucl`iF8#vJ`B0(
59082 zWCsoe_DF0qt-ig`3N6|o6^C+y{-T{y3wOEN2_+!_%7<!i0{fJ!g@E0r3BK1^W*D6(
59083 zWsUA@k~drkwoEj~VmQ-0eq%W0nV9Hzb!1y6`hjmvJ2~)ePV(`jRy9-RTXoQXj8~s@
59084 zlH>3H@Av9kws)_-;s5W|*XGsNG>d%1|GpXIz0V#8HqD=yJ?<GThyEMP9_u4>8negU
59086 z-dgiikfS@-**q82JdYDa1d1vq0#zge?LKGIlgX;8e_(K^b;jm!N_D$k-)+L?ChD|U
59087 zoVdW$oUH-+%ZN3N36dP?CUgJh$&pIAF*%Z>Ijv!C+2_Q_hng1|9+|m^X%RK%X-td2
59088 zTP9{jpj_sx2$ZWL+sT~RfP81$ghSWgG}-XCPc&F;mWhc5pu@EK10B6)eNWo5`~D_7
59092 zqt)m>Y^^}yp3JR(m#G!iLcV~UAui(@s)gdQx-+hLtl^A1VPZ;<&rO(@+{S;Ec_~2>
59093 znS7>%<|Q;ON#pL`O-mOK3>t3h-YrWGf57kG&9L<Umq7eqZ|B*A-S5AJm(f4S=4pC1
59094 zK-s&RJsBY1E%WE`F@V~okUv%0<IOyAkR+%Uw!4a{kggHlS81Mq*R<VyGJ?&gd$fSX
59095 z9ugv(pS`=Q#-(aVvxOBn$=|hjG+~59!0?1G-`#;DX7LN*jEIoagM(hvubH95BOheU
59100 z+u%q!4f>^$oD!_eF0{PTobCNvUMo##f8VQt3tpqYASW=?P|uQ`-^>GhL+6iL5RS(J
59101 zjtN^+Ti*|dyly5P_2ugevI_>$05&OwkP^j7nb2@Jp;-Y2m4q*1HLQ8SFzBPd;2@IR
59102 zQ-{2&L-$bCq56DbHc;Z(WC2&m{GL8eE@Afpfx9GuW}ZwTTdLk@7+|<S1yq!d!2+m&
59103 zVP+iAI8t{%JC;#te?&v6I27b55vu`{@uak#wx3&9b(M<wY&w;Qg@S&sS})r`-Nyn;
59104 z7X)3fuC4ZKKCP*kYBuW&1fi_l$y5cM4=tJoT#HO=s0QVV!)a)S=<vI(h6gU-8hxBQ
59105 zK-HdRXu4((>y%l2!s?FtEvnTQru{{WomrJ)R}3n_Gyp;+tdM=zv|oY-n3Bta|EpJb
59107 z(py5nEjF8U-T-1jzBe)qMLV8uTCB8L76UXjKWSaBT<;L;?(lf$H@RR;2!XoI^@~a<
59108 zqR*ce8;U8tgGUb9-25~xZxI$8j#@i}qEZ~An=2B5Vz(^8mHc3Gnph6`3#7Jh=3y+G
59109 zAw>xnG0?2}?!7Y+>tN8%()pm9*X_U)4s6&-i%qVdCu?cI#ono|fF~2M+6F^iwi_G{
59111 zLd(XIS&KXF)Ewy;hk?GHNA4M^9Y`Lmy)t=wa38l{-*&r$+(Oo{EzAPq&jkaZG%3Si
59116 zCX?~gVzJ~`YyqDmKK@)ho}wLzM11@V+*=oqC&za-jy;DLrr^3$;V$}cDv?M967Z+H
59119 z9gBDjiz%M!7AU!$Sd^g^3nuqV9B-M)k@lY8OkVFV(g0e7gZVz`K?1jdHX8_R4Jkff
59120 zZpM*^<onhgxFpzRcUzq~XZM`+K-?Ly6y_Fn?zCDwmKA4A8JU$$77yC`@de%c4b45}
59121 z+D)T}6{DI?dlsL5$l#P^oimT!xG<R8Fn*Nkn?5ad%mF(dUTGgG&)#xaG-=D)sna@;
59129 z=P^LPw0_6z$i|H;M&>4>7gEQ^|8$p)IbD~G-!y*7PR}7LV$;j{ft}uTCA5C^>h1;E
59130 zp;<~i(6y9#y5kF0X1A&btO=BpW!;03qd;v`K0@b$I7*Wn>LRsg<$-q?RKVaNTD8}A
59131 zbR0#1I1QLfv-V!PsJy?5pSj?iZEsvlrTrOxI00o1m|%6?HY9l4+0F7Sno0bjASJO#
59132 zFda%eb*qL(-3br=bf&)QpzbW2%gbredNrAlK)Y_p#G>=yIyYNPPp~PGBgV(y82|ko
59133 z-?90j<jO6X73p+k{$Ni};0jjh>s!$2->RO`mGne00N2*quf^5$W*9;blC@GsLk+07
59134 z-iZVAabRUZfQL1ZK`K!|VMH@Kkse!QGqo_Rh>kKPeLdyDj;XPT+hw<66c$pVC7W4<
59135 zV8-+)LIb5)5;?|3tZJ->nt&|K2Lj*qmV@fnpWZ${=+txi)~_uuXX9NxzA4Ad>|fxv
59136 z3!&Rxoyo;_vSiOeiz~(W;Fj4IcL%3ImRUN}=MkU%bUBz=x^SAi)S0wdKu--jV#&J#
59140 zP*^(qi;6v4^7)+Jpx@cq8F$*9R-;laqxEtt`4P?0vxyU9?N|kR^3$e>IZ&)tW%~!t
59141 z&ZMiH71m<cx*xeqAzPp;&B7g_JcdO4*V;H;#I6Eu-CcD$s5v3zHYhwsDVkp2=AdM#
59142 zKf$pQXvn96M1)r>ASn#pt~l&CpU*^g|0x?P9b-v<+3)VpC7fehj+`=U!=fs@Xa~IL
59143 z5AdQQPK`u>;FMKH<-sYtx;3)R=dzGbqJ|r65HZ-a*0?cWSgg0pxBRNt4(Kf$n#Cm?
59147 z4Gee!Tvd$Ta7R`TSVxx?Dw+ID81k}-df5D}*-#IO?0l!k7Bwovi+Hlf6Y~!ZuuVsl
59150 zlU<f8&o+cUD>1EX0A%@Ng^iubutf;VL4ao~NQl17Rzp`vlHPrKP#Z27PzGE{12Bd-
59153 zyE)dA39+b34oz@@-<RO<L(j8o4l4}h;>#16h2copZ5=+TZ@J$O5>9A#i#0@PXyK}5
59155 zZ{}jq!uHAhiFMm}ffS-Kv<&qZn)_!$NC%*LNA*v*RJ~(yIfvHggv)02s8&x`S2>}o
59156 z?rQH0t6~#Qo6lC5mz=A+^Ti8aSmDfiJSkiLV<&GvDAaS~DVIBf_KYpi;a`2#(rb+-
59157 zqC1GE>gq@ay`qj<F`O~z2Q05+cpWLw9*j;N-K?0c69WfkD25}~U(C2OMa`$Xwdw1V
59158 zN+4{v`1&KhTm-K1IrOCA%f~faDJPb1KX7@+n)O<!$9MIMvyGl^clncZ2e+&acn4Ft
59159 zm8Jee7Gi+RP0-NakVsl0!_}z?kVnX8Y%El7Xmip@vZ0V{NRSI-(QG<eij_)vMK(Ro
59160 z(`7Rg9R+7vWGPgY_tocQrE(RZr#fs-rMM_Hy_iY)hf)Lah>tT+(!%FQp<7e}p>k-5
59162 z!gc8NK~a-qj&!ucbv-ygkKo0{s$#C#nKYrRZk&Vv=JW#m4^FB-I1t)x4Q(C6uJAK%
59163 z)lvOcJU-1X>>AT;N<JQ$oeq=?yBf|WhX=B`!K@ar%sYH^MvOCI^)TU{UOC{@^#y=3
59167 z{6H?bsod-9Ue-hX3EjH(2)EBOkWUr$)Rd8;?i);{s-4b+Ywl`yVP<aeXLikIf?2Xf
59168 zogH-ZhK?<jLZ8b$<+K^JzdPT*t<Olg7F;}x(Q{V-n?J?A4ug!2YBB4Rvo^|JXKf0l
59171 zXOjt!v=;`YB^K~vg5U{<MnsZsp3P{cJL4rj%2d0>?(h|-6}EP0>1tAo2C`GqE~oIP
59173 zitOJjE7-ne1yyy&K1Ic>_4^&RNJ@$xqSH6nr+_v9-CWGj1X+ThYar<6Gu^y6;TNJ!
59177 z>`J>W&TK-2Ql9wK@o-BP##=xe`zMpOZh)F_H4yUJKuPZ}XQ?TvrVUfcX!{_x#dWd2
59178 zCATlqU$Vxds-BD}mTYR_gO+$y!!y?G2Nxt{kHW~qla25|+MVi`IU^HQAeS5<3YLqX
59180 zWl>^BOpzl@l`2HpRi6Y}D`OBGB1f7y0bwV0H~wjAw345io!URO-{0@g`l<5EUsito
59181 z>-`_AJo;$mF}QdR_0mh}YT)ZcHM*y%jENYk-l4QMN2AL%>Yat(Zk}2D0&{RsUK<AO
59182 zrq~Xuy0v5AqdkTB^9x<Q#|;l`KE`w6vxhDJ+-DX$H@&>$NQ}h(`Py81G+$0M#2eG<
59184 z0WhKtf<8#^>-$J=?;#x>T^o8GrS6`xe&W_=wjclE5yp{Eo)|x9+qQ$yR+FmDCA9`M
59187 zso7xN(<!}c2QAr>-QJZDVsLG5#H$+KX%)tq8t5z(yZq?HHoX+kxfc3f=ON3}2My2a
59188 z5Hw9i-_+2;S&kKlRCtDu4JRvkP&c}Ji<;2N1KoD_(2N1s(qWOsmck07>!6&oP;rAp
59189 ze4yVe1lmC`T0eRLLHq5=Ij)#XCp3l3qO-7=(!f*K9MBE|>@&44`Al<8W2#q{Fc|bp
59191 zHh-GM(luDognjLZe|TD_b#yU>K{th((0c~D9MdaU7tGsLnQ~Ca@=X<>x?C&J<M_v9
59192 zJPPTDp_sG=>w~i(-EjCh^E+1`zreln(9X)Hl}`^|_sf&lTyw#We6;^d4;*>?BVX-@
59194 z8?m<%JH3=F{ovj@G|^k_)#~4WU+sNrWeT18!T0g0X+LKcYVGVaZ@c%y-}e3bZKRK8
59195 znM#*`2rPoz`skB1Td7D-fumv6%>eV%+k~8%YYN$XO#B-+#lLw|;-+sVZ#p`0(@hiq
59198 zol{k0#i(Y*DD}!2?}Q3Ep;Ea~*3n??X!0t#PcChDOrSM_OT*{t1W(l0-R&x*6zhs9
59200 zJF=g%^l#g|JY-d~P9tf!-O)-1%Cdg?1M(#MqohU#c<~lniBXSqSIQl(Y)n`dW_sxl
59201 z9Mx>FoRq5{I%i~;qE5ITN;FQsSNA5Trr(~=OVxl`Hq&+}C&TK2Bk;i&czh{4Q-mex
59202 z^2Kct!`5N*$NDbRlheH}T-0mv=^n2yY4<zQI*g82;^$yGh>tu)egce=uVye#_+DoH
59203 zox~ZEov4K!PV<-j_IyUM7D}sq{+!!tbYw)R5X2QVWQ5FT8_2tpE?z?|YeeDSEG0BQ
59205 zw5h!UeMZo-5|I-JXHViY6`L{8n@cQ@R+H@~0npb?T!Oa3s^8@z<bQJaCIE6=<$>^f
59206 zbst^bRb5x#-PQNqJw1KQJw2CZG@8+UjburdEZH9Ul1~iAwu}!97z~Cb#DED)2v-ay
59207 z24}N@5ZJ(GmyiS!2!SLd3nbxZlWa(K!2wJEdsW>%J%@zF8DeXs>8k2_-}k-uzW3dq
59209 z$R8b`Syq<x{9t49R=-G6kR}X|NV0Y}0F^l1jl&G5mDI=!Z}aNWWGI()g%oct?Dos<
59210 zgui%v;rN>mU3eKO*MnyR(@~PE=k&ZD$K|QMj^^z9@Sl-Px$~ovt))3c(mDbFcE8y+
59211 zRMJE4#75NKWpr+@bZ-K3j}zt?0g+55g~J>NwxU1}|8)q8T-ZTx9qfwb9d{r{BVGqI
59212 zD8g%i35>SNvBa9m-2`UG<nHL?Ovjq(ST@;bQprdy;tly+LB_*rx|-8Mg=AvS?wC}l
59214 z1429NU`s&Oi{QV!2`m<Gkz^c)!0d&mE&=0(-{@|hU|K_)hXC7bkPWm7!(g;MWbaJX
59215 zi=-Q3>C#-&Ucq5c*k{`N)#jS(m+yLDo!!fz-Mf$Jf{AuAJcVQGI$Jq0wgy~xXXl{+
59216 zz6?M9qM3$zNu~h>E$s|tW}J8LBK|A*2Ko0u-?SohpyRd$>n6hNus-$;@tD6DQG90J
59221 zMXL+}0v|)KadP`jg~qx4slJpM3=F#gIC$-;iH4GhM+(p-k-yy!>anSp&cAj<8n`Yu
59223 zPM)b^D9Za&LOezj?Uyb*hFJd~;x=D^PuZKQ2-@v&tYF41)k``1igxxD7WL7_!p3Cs
59224 z1k>ADnRMUYVzG5*y|A?I(|UayLVL|y_V#+HZ>#<N+VA_mt)&%C$>FVFq(=U1-KNu$
59225 z-tLFgFrwjMgvo8>VGu_m)#`J#VkS+2?T&3!!RGHr$WG-c=q7dscRZ7}GYSb3r!3$&
59226 zoQDvbcWz_uA6j?E_Oan4(37~Zr=16>m1LZz2fK2|y84a1xCAsy>lh5f!jMWU9x-a>
59227 z;-UJsT&ZmEF3XI!v%_adQ_2QBi7>^dQ<)q(1Y(0BtrBYNETy)OC8Gf=L{r{$I5Bp^
59229 z^aHmZGz4KV77V%=f5nW>0}iZ$-SA!T)#x|VPNi#sIj|2LBmT|_u@M^?f?;<-K_r$s
59231 z-B1)HaRvP&N+%5{iBdNUbavfaIEmZv7QlL8_Z1v^1>jZ42|TyD;axaCbIyJjn$z<?
59233 zD7VYq8Om)Bg$5$m4`h$v=DD-LElBPa;C9=?xb0!eTMa|W=m=vW!Cr144|HPJUc@l%
59234 zYd4G_!_NC(3`Q@0pcVVScKg8o`EA2P)e2707I**-AKHKHz_D%n=J&NHhUSLn>a|L%
59237 zxkyC+b4d&NY0_hw*XS-<<e*k6hDXK(T8Mfi6@3vs7qCS8DcW)&^0*B&fXH}vt06x_
59245 zMbbGAY+2FNoN&QL!g+3lXy39=4aOoYTM=7TbH0Z3C)c^f0#8YTHdz`yp-NUH9QBXn
59247 z;^`9^Z_41kJmcoYs5f~aHISEew>F(j1T&gaG|Vg?OoWYrAf#x@!?XETR*P0-D-~dP
59251 z2WpCVDRBpJBawvfMdPK>m51&0KpKn!tn1_eOFU=WB67qhh-Zlp5br16N<0j3Hh7-+
59252 z6n1!`-xRQf+c_ep^^pB-0_=c0U<KyDKY$~kgtmo<?g;>Unf3o5SQoDd>o~&tWgV<7
59253 z1aS!A+{DIN5c-A0-FpSNXMV1@`+ttOPu;r(+U^Z#dwvA8e+fOKB0!!3xD%q<K|b;`
59254 zKwf>Z$Yc3u$1^-SYTf}filj91JjnV|zHI6|$gz1gmp?y{sFDE?cmzEz@`AV;aua;e
59256 z7=k8}^eV{LibMhC3)cZyf*=6F*$Q;Iq?16B+{@@-V^0E>^{`k6!%619wh2roO{W?9
59257 zrv@(LfD5k}T4_sYX@+2E;-?NRLnoOlf)+9S_R~KMT2ROr^M&G19coyF`QnQJ8VA$=
59258 z#uWn{61mVy7j!rLxj-I3kpET>a<4AyUil}CfsQc1MnF^lX&?|q2>j+x0Rah(7?oT<
59259 zc}&)Wk52mb$Nn9IPXIPYu>ELsedVW0n8ojPPVDw4e-1bR(=VGVHYU*Tll?z7BG{(z
59260 zxjsZx-K$;!B5uzbBETJl9?9)l1$-I)5OkD?Pg&_9r6ROcb2SXRSb+#eD)OTt)&9fH
59261 z_*g0Hr;5*|F;Rfe!m|?rRyJb&C<v|e{+qg!cn|R&-1{BwNB<AQAsB`sPzQtP`X}w5
59262 zj}spwo*_O&yp#A9;(p>j;#T4o;s#=sI7A#Eb`i_)8$=ub5OE?#M2HX}5h8&Ud-#3$
59263 zJp3;FzwpcOOYrmXkI>scWB<Gxz6<^ed<s4Z-vZwVpMdwlm&3c^OW>XGc6cj12XBTq
59267 zEb9Q#m+6V0-&n7MzD!}N%iZfbmoV~p@NNyg!S2(Yul1*!_L8>N{<e|s>p9u65%t11
59268 z(O)*qTUDuoYalc`G2TvKx6|RWzjT<<{Z5yL9oNZ*Kj;y7g(j@^u8qw-YUp+M`#x<b
59274 zQL7PFacN1@8|1wMNllkcv${NL=xJ}-r%4f+E7r8ub-Og#O|ud$G9*h8&l8Es0u>+O
59276 zAhCNXBxx)`r<$Xo-2AqjKN9vYolg5(Svja6$SQ|&jcY@)&I%$;vuG*>?uQvtGeiA`
59278 z=gtx)qr0_wK=9~kD^-n$WTh0B{ONdnb@%?)&v5Q+``YE9qlfCkz>t>Agbl?EmNLna
59281 zj+fnNCDUQkjD_X6k{SxrE}A1hv$=dxb*nmlm8~v5-)fw!-}dL9*xuOP9u8Me><Nmc
59282 zs-<{y0YQ!hAdd11*VCi5g)+<gyh=ietsJ(JRf-SkZqCe!l9-#YC>QJTd*&=7&XBxF
59283 zyNeTfD;r9^WZV7cN6zJ#cgVb<(uBmb6djGZOquqDObT-B^H&dC(|pCBeR%ue&Z&{;
59288 z8pM%)E(F~Bz<U7>UDR=C4SItC{{j9cx>5oZQHJ-xm!UUQKndQC?gl^we$x&GFG8FX
59291 zp9`I&UpP92e=c;w9*Nifd!-Yi5P>LE{3%kX1$>vK&@b2``e`tw*5wz`nyvd^>{3ar
59293 z4`kx8cqVp!3`U#LzM_Cb5Rn+Hq9J6rM@BmQ2$UGNv^okEz-bE7;b|bKw6KaG)J09l
59294 zD!W0cNOc#7AypEoRZtp-#agMjI#EvgDc?XUOor0F(Aflx=U{d)o?XQXcfLM&)`GDD
59296 zpkAs3&I2<QO8s1L2epAJkuqzk)uf;Bq22o8Nib0+x<m+e-4GYA6!QsK4)_9PA0k0G
59300 zG^vm<Qw`UuKZIoMSeIy*SyREEDWR-b&N>gQY|P5u_wR>Z?ey9r1D7M$k433uz?b}m
59301 zp%h5kv`U800*6$qHmTZ~#ET=<ny==K#GBCnyNO-IG%*G1unztK{BQ7i@W)^Z;M7lm
59305 zaQQZP5BSgEDezYCYVas{5Ig|x2ls-zz#ZTwa056EP9aP`gz)_!BBqJ-9XAk=W`hgQ
59307 z<I|vFU-CTLaXa;Wyd3QKHDsexorg7yD|KU#>wGB=A<*CTPAPMYq62IX#V#D3S~?CK
59309 z&@)?kzq&0xaEe-giw}D1-Y9XV>vQWR^|iX)2N6<N<lmXy+G7E)-fUL?!O@L=9(YIf
59311 zCmQ8Ie!$NY%JfKLAskA225&w-wAwg)@3G|_<?*{l;l#WC%O`*Py+8O>7fF)@)9dR*
59312 zynVxk7r@qd(7zgQhTY|I%pVi;%X3jt{@!b@EZ+NRh<!J{`t-^q;xtBWt~yY6(b#cB
59313 z(<B#_Fsigx%!CG1jH_1?G#33G$^-;i=Z&C3MSQ!;vL+ZVe^^pg-o>~*rHQPR9}MtN
59314 zOtx~omrIX3PL=&{oE$9*B*&7rONFa!F$<6C<)P-N*)q*oRQJe|Xhwa>ik~D&iXdo)
59315 zWGxYKM!}z>i_zS^ny(}xuq-W9w_;hzJv1VFz4NDTpQr``uF(EwDD5KkaEOmiqKWaw
59318 zOuIzCDoh<ZFwRzP-^I9A-uv+6_2Yg`G(|TrvElL1!MRj0KA$_h>N91oIT=beNA!3(
59321 zDVjmtkENnH53_oZQG&cq^E7SFjmw#dg_s&mM_G{-0zUUZ)9@>#r&1|CdOUXIWYKn=
59323 ze=y<-ltN<l*mBA5%N<$t`BMooX?kO1e)9m&71L%dUd@(5p{DNldJN5N{)yXTafn$n
59325 zz7s^j5;%#D^ZEAdxwBc41oyt|uA9!_A|*>JlR-DmK7qJK3YNe~g0QQm*u9fTVviMr
59327 z$p-K9<kEhE<7rK249?9_-drl0Qhk(}ZoY8(y4#GD5e#UpL)FQv<B2Sb#_$rXOP6)b
59328 z%y{T4PGrsY9->CYcFw7uw8^@dFds@5ed@OPDcMrEV2EY%k~_&WR%D8iLL!$@ASYP!
59329 zWBFazE~S?yJyh{!_tio(qv>>tGH0d=FMQ+9Yi6#!s>-#mO3d$yW+SnkadF22d|hpR
59330 zWGGJQv$q_+@Tukl58s*hl_GGbsSJ;4a(zgSt5o*bkp-34l?$I&A`&abLUhopq$w?;
59331 zL@JV>m*XxV0pW$;;r^9w0xvj>q_6wHli+D6!x&tG$B}&ZQurwKl-&$!Y7zW0c*rhh
59333 zX4_z`;Z!!Dqu-vhgSbU_uN{2thPan7i+*!~CAil%4nwd5JOLg9!??Gh4aK5kCi)4(
59335 z@U0@{fOiS}DsXwBYXx{!B*}Q;DuO_CbK<H8A}K{?-AK{H;_3=O65B}=BH6W@aC#bO
59337 z1(zBVtFSGkynPUy2lvAV;Va-B@OF4DJPnV)!*J0K_M5fC`?4?%!!U>xMg`(hrr!bo
59338 z2PuZ%0$&4v34RBB415sE;6v!=E#S@IaqwC@-0yzGoX(@4y<j((2XnyJ3HjTkdmwGa
59339 zE=khroCFw5NApk}HO#K_w59=>wyKfNphIP|W^rYacAK7F-;lFY+`pp))t%q^wX)>K
59340 zm^Y{Bp%X($**cyR4+w1?srRs>aP>Oit}DsH_D9Th3bw54&f3>jWqp|2`r=5$x3-8A
59343 zg6h?2uT(jB$K1_-arT|C`e<k<Y{qoIB?h941F>z%*kq6hRs)A$dD~4Bk6-xxch_$^
59344 zq%l;qzEFwoznSt2ja#n{i#{>X2&x%R>-!NsoePgy0aezsS&@ST%!LhHy@VhH%4_Jn
59346 zPJL?fu?ZoS7UXC-4W-@Z4j1|Cvu`XPnh=Ud5|xb0<7cF$^H&Y}Q#1R^UgGi1?~QG~
59347 zRM<)s|Ip^={_T;uJLa$d)OF&vdj{suG!mi6!a~?Tw-CJft2c3@yB2jlUC;8y!N<>@
59349 za20+~7Eaa@VVX{l=Wh7W!Pm`joas^Wf&Y2zp_LIWF_q_eJ_5hAp`-9^oYy7t9*%MS
59350 z_4@Fnw{PtJ_%*}@p94>!L$G-z1<E-Z9hNR!^>xrm9C!9sf=F1+$YjE*M`Q8fM9dmV
59352 z>&^R~dibPK8)aty^zrn*h0<`kr~=%`=%1)#@a-TDV(oB%Wk@WauK|IMZa0X-I3CTZ
59353 zVQ8D6oFePB4)?;$iGnM;Ua`|3f!T6$bz$ZWue-O>9J3_NRgGG=KK_nhQNqjf;|FL~
59355 zut;x!t{*sD>mFN|oH%9NY@q{aDt7;M4xFQwTVn$I+@8D^Yl+5Ctp287f3^#-!i@$E
59358 z`uI5|u9Ws29btku-umqH6Cd6007e$!?;^mO?LiJg5-u6~<y##`!noNn29@3lR68iW
59359 zOHVs&ov}ep4?CdV^zLH9kP{(E&gnEcdfj~eRt)RTeII{G2i6-;@BY{WG-D`n>+Y}r
59361 zn)b>=qZP2{)T_7OaKj%E>H452+0gu+q#m41neEw88F~uA!r|P|vF4744!-g;bJ6s5
59363 zE`A(p@UtL*yU+@qYIae(3vFhCvTOX1t-(&oPo_Zlr)Gzf6HAmH@bhA5(9%+sV134r
59364 z(&chqHg_bXa--~0nv2!c{#|4402<+sE`AmMclaixZV$Hwzuo?gv-{IxJ|cFiW<w7|
59367 z#o#R|QyHBZSJjz)1^Vs3mvG0NRY8prx1m)r-=6jR2!bqfxPkFfDj6k7w1`QHB&hQ^
59368 zkr(3DN^6Um?kwh9CLXgn1X?7_C6==-B;tj!R_Yo{aZbWU-!|M=yy;y<!-sehl-&{e
59370 zMX8YQpty^e2BYA=ITdEiGGs{;66_%42()8)YRLy#xFcxap|-fwDIH(H#e-RbW>;|q
59372 z8VLveh`gh4RNR`e*@di}ToO!Sv&V`v-Lw%q^~JY*+jy7T9eM3>)#YNK9FAA&8n2lH
59373 zZi8g~lAPC6Wne&1dEa!L9J_w*%myyF_~3!Tm9tB<luvo)ArcAXc-%G5a*^`g-}tSO
59376 z`ZWB~)w_0Q!mVp3IL`*Ov!_>X{w7J#Wa{YN?dd>j_xO%OB=yoi{nh$1@wH4Q>-8`1
59377 z!<xNz@oU5$;vbQ|-U174F^qc)p!2{MJ<@gwtxnw%;$gBYe|XkkyKAK_5ujPOqM$$&
59378 zsLq+2S#vY3Q+wF8uC9ptc0DcFodnh4)tw&7J6&-H69HBr2nLeLxW>9@o-~x%YwMw~
59379 zn3>L*g^_C$R}}`fCBiF*Es7xxLgbZrF>YQpJ9XIKx^X+}J-Yq%gJ&Cy<9fuMKYdk1
59381 z&=`z_d<L58F*vryK6-s;98XhU8;ZUnpBvAcy+<C~{n=D4Ka^X@M$#eP%$29N6+MxN
59385 zBBdyzE9q`T4ld8!cjWOu?4q{!jaNVV7iWVhO1KsY422j;s;+P#H}%BH<=ZD;^F-$q
59386 zwFSaQiF-g5ci#yjz&X28XkR(%esM6JjD)-%P=!@T9JCwD^$V+HYlExLsh@-3KHI)!
59389 z*g=PN&?%Q8C=Zv1>$P0QiiHAb8KMc{Hy~y@Vs2k)x|-9-BVixlu-WUNXTY-)H}9_^
59394 zcBGo(?226LbS~#mB{wc(V=!jREB(2q9j&34l-d0ijuwwBRnUA_t~&rTZwTo~ZpivQ
59395 zG0Aged-+J&6O?$yKXZQgbl%Weg5oGTtj|?iuY0qXk1tH3x#whVpswDir_%p#`OdsQ
59396 z<5Bib=k{jZVK*I^-g9I1NWqB40@Dvq?>sbiHj%C9oiz}lu0tm*QiWodP=yo^K0Mc}
59398 z!kx2t`e$z+#0TVHW$2cB=I?vqzLCAN^JOl0;MF&t`t+&j>3d!|vv_;E1N5&Wphu7-
59399 z-K;@e_8k4S6oZ%5l&a-i24OM+N9e6FS?7v!m}FPJ&Nx9Eo6ss0aT1_T^0Fc8w8*Nh
59401 z-cQ_5+zA+{+4We17r#K~;6Ee&bd4Qh|Iu7lM!G*b^s{#9<Q#->hm2^@3BXqgyD^2`
59403 zEyR?}YGe12RI43bDy9~WK6G;G^}FX^QiVsq_tb^oD+{bEo>lc}-~QXf)wr;GuRmS2
59407 zz1a?{e~v{m5Srqk{R<73R-9;i1Fdx$+v2I!uH<XWflfqv7|^&g19jf+w!7&e-2Id!
59408 ziF4SYK+-+E>}>x-xEU1$`D`YIbcc{)D`xDa3`@;kk@24W#x`?1WbYbrBGJ@c`{tf_
59410 z=zKj~a7&V7{e!QEyFmi{-bXZ*AQqiKVn33FaaY&#4v_$XJGge~gLUpG!1=~BPMX2b
59411 z-Di_&{bRVRV`jr+43@ia=~|?K;6}y-?uABBXm1tK!lVhOq9*#nee1q})n9wPb{=1G
59415 z3m5;MxE_21gh8gA<ZK4k;Y<!sa*kC)a|yTsnq6nH6Fkr@-_Ruw+ShL4+{{sz1ih}^
59417 z3e7%6HbLSyWeEp3bRfxeV2P0S(l>i?Y}Bu`PilS)3)fsel+Uf+e9EFll~+Q-lNbKN
59420 zZG&MS5@-pd4|oY<s}upznHun+6Ey=f4lHZyc4O6jrwTnb(GZ^SVAR~%%2k9&$f}Bb
59423 zsg0LcoO;MtWG8Y)sREi|=yQNU-(%RbFUG#q>U@PFal`2I-LHZl_RSUB!ZbcM+^W~g
59426 zF6U{No-|l~4@CS~G~{?(h*mtI%E71K{$TN7XCIybUjRY85BW>&LsgMP+!WneSpC~@
59427 zjWOYEcy3#vgm<C1duhj8AIgX#;!9UQ*nYWBk-MD9Ux{%Z+O6)b`F&{o%EeEE#}R|J
59428 zaAy^bBD%fy7_-1)KY7<LPTJv7-MHSPo@!B~gS&Qx1c8Pk!FWPGgTl=p2(RL@Otm=*
59429 zy*@!Dm3-PAC}f~sU6|c7%qoL>UVe1pKTTKnMgk>gbQnOR=Rvt$NFn5%My49Hs}Q3t
59430 zwxLyX!a~X}xdm)pOG8hH-UKE^NTlE~Wt~-wR?VkI^J-#BaYZz}z5!OFePp(sVdKxd
59431 zed(&a<x7{m!9-y$5X8-nzKE#vJ>q@12gS3>6?*2-v5SruvUlv-CrhInq-HB<`2PZe
59437 zY7O+)$L?zzv$=S7w{46YeM*94EaEp)^m>5T)3mpU6E^5Ie*l-xA(6zd3ruy=)FK77
59438 zROQGl20s*Pm}RrN@5nG)U#;(3Knu304#i&I(OqlA-Cz{E_)^%;$76%b(q$CaVm=x7
59439 z%GkbOw|MFHf$b@&b`P^m$FFQFIvyhJ^sP2~vH$-zeR?Q7KN+YDD5YcD=5E=UPt{tg
59440 zl{bnf%O$$XbEa>k8Q&HOhQ~_dZ$+&0_QmGo??39<d&j|abERIMn?)R4Ge(Ws-Miwm
59442 z2NHc)ac=u?iaV0fSM3t41ieZ!L}xpM`fu45H#DcqUFD>$lAzVdq=Et2EpQ-AhFM1@
59448 zj#lJEKMgvWDSEe;lRb}JiLRp|nQL>b8R3G)gv{v$D-p}YTZQnpvFvqI+sx!_Fcc4%
59449 zg_cD!_ZbTdwP+;i<p-nwR7u-Cee+Z^>?sD!rG0TDB{hCcEcpY2ZXvXPh4*IJXugcL
59451 z-`0D#@Yze8amv#p-SIgqX{B+y6SM0&?=gN%1x?ec!N6$T9M-H@BW4Vmsez;X;GR$@
59455 zKcAbLIo#&7Yj$1uU$4Nsuwz~;0Ux3=y6`YQ)o=@^5-2&npjBtTtr>2eHWK}bRK4G$
59456 zB&8^k@#5XfjEm7SrmI-C)G(4|yw+IYs&m5<E73HEglqDJ_b<HS_7A^q;>H8xCoCl_
59458 z6&?!c{^P@`qLyjUFMavXa-iS8cmXNhF8~dUI7MzHySV~720MdzZR6gd-c_Pwpp;xl
59461 z%s-ilCcTAJ%&VrXNP4VT*)=eAcOjnbs3PA4-$Yw9)()#)aZ|9DN5cD!?Aij>Ya!^Q
59463 z#=0wIdsN6?wacC?)LHr;^qu<EeOg|t?%AGn`x8S}q-t7Ig~c~rSPUNg#-p*Zz(m`S
59464 zl-OuW^#+el-0(5<;;`-I{RXIk`yETB6ftEUv6M2lW+Ev;HW9@mGLJ+oe2MH@JOkKB
59467 zeuCklN8=^SC@2)gOFSE^$Y&pX@O~!<$#w-}m;cvomwz5KvCBV5+Ae?1-ix&>arrj}
59469 zKTKeEzu=$Ft$F*^V~dXso^33T6!p~AjarIv@yxUmmCS^M-TnO$9^+tpd)vAQ4;sxS
59470 zP0<fuKE`9XRUQAKF&<9P(B{<OPK-yd+p!(vu@=a8{fEkipYXZ|rCN6Wr9<g-wAgs-
59472 znvu+@st-qbI8Kfl_%eurTO7BIfO}R4ZIwG{e;}O?9j}ga29wSiOxkC#?f%#kYzMb;
59473 zj&$zYtje#eGS7k-jCH~<dtT_ZfQYU?grVTz<F9h5rYO2x_r9V1XK!9}<2-fY`EsMB
59477 zj-UgDVJT)6X{7{U0WR!~`4ZQ29bp$#iiQM*m>GG#`?%dyn%wj-7C#C&qK(2;%dw}3
59478 zyzjDK!A9QoPva_bE0_9?ZK_>qBN;uFh=zTJBD-AzkA$`y%<=1lwpOpUfVshT=lpF&
59481 zoax7|Q>4M>{aq(k=RoX67O||^>=W3q{j4$(ty=>l0;ADtq*Bvz`?9%%aY+-A?(U|g
59482 z$wO!ALxd9d7AIo0qQ8x8g4KwT3p8VzWXATd><Tolt<`QUD>0-jvy@Te0{d@#+0+~%
59483 zaM_vM?5irlSVz+HgReRcu}eCCbk*(ZbBJX&y2R`m!-v|r>@1oS$Lw4^S-fhHlLWrJ
59484 zbfmP`Cke9FF+6)^tIT;=zC70QS{)$X0{$100Dq|EI{*WhvwS1Tb8j)$0bt>m-#ld~
59485 zg5clz%y0S(S?`SQ8_Y^RPEuM2a3w+g;uqjYkpg0X8#<b_*cHmrw4dLgH-~HvWXq_C
59487 zg#*XaEYITkmE~kdk$4ci6)Q|15qRPXZKN*XT4y7*r83-_Iue(3bso2)_W7xOv;QFn
59492 zB}W42Dj*nFkDYT2iPfI^Vb~U+O-><OU9Z=yD2^AT)<rd}%eHj>bg~-PTWA@!7)U8f
59493 zT%lOHr-4W~q=iuB)~Uvf=?@+l8@SHO9^Eq-4;GK)hpmD^_y_z_W_D!ih_7+eBC8)?
59497 z74+*AMbHt`7{W{-HLMi;k#Zx0<DnNHstt~H0QxiVS3m$G&+=F5ZxVp8-rr=}<3AA7
59498 zeR#k-$giRi{vJK}O?V#&g0YVxl*ua`BM5@_7#)6smvPTe*lqE_C<%{upvZ~5sp%w5
59500 z5?FIwqAd?MIoW!bNzw*$&B=x_v4EAyAwK6{w_<P_-3A7YZ4pXJ${tNcvoMy6)C3%U
59501 z(Wvj;z2uQYfoRBVr%8s;vQZBXx>%Vz@vB9gnll0v__qWFiXh+4#1-3?jcwH1@!ol4
59502 zV?tFjn<o)0w&mDKMC(MUIJw!52GY-^(9eQfDW=lt{re`}mKkBCq>>t&DSHCxn37N=
59504 z(kmd4!wf+ZSts(pW7fga{Z`2isRY_pDiXwsu-G$X$?K#3`|~K*8L^JNcK2V%bwBNU
59506 zBrw=3r3^oaR^sSKyvmgd4c+y-j*-|__wEXI7R27G1$6L2QE($>!jd#k7|SzwMKr2n
59508 z8;!<?ld%$;J(2Q9@n9D(zy$mTh$C^v(-CK)Ke9Lz@OiOKqvPf8O4v?l!j@)bJtRq1
59510 zhH`m-t@7jgYa4^P3{LSAI1nYHm-g4L)vN3C*qUAGr{}9Zbb~J<<r3-PT<}mUI2`d0
59516 z<?)pz^>ltD>SpD9D3Ts89$mcs<*b|KJY2-vbK}1b41rQRpX7<l`SBB$R|Z3HXlp-y
59517 z=OnbfH@!?1$Cux0&9&ywFAb=rW83C$&SY{{EL-%Noa!N|c-^hBvfmfKVSDPpnp=PQ
59518 zwj;UbO1&Dl<}@QHDaBl3Y|)fRUx4*n2JPY0Q1<Nb@?!-9rzn5-;#c5tID>@Y^s|C3
59522 zJUk27lF?bZvcT)QqPF;uKbjU8X;2o-k*QdEAozANvL{hrS*b_WK4IF2PC(gnr6-^d
59525 zFBCnt-RZ0F!|)y?B?`ZZV;#$##Cx*O_1>}1b*Yl40y8s1vg{Y5&72mXy-_)y5BfZ+
59527 z7kEjCv7sG>?Cu;3J(`yq*_|-*KD_XS@qLF<@w&n@$wHj+4J3?a!e0IV=i=wVjc^AV
59529 zxsFGdD8j37$L%$`b{pmO!o@o8cN5PTGq>K-4pg-C(ZeyMYsX@)!p_8PJLhh{?!sbl
59530 z=z(`$o0~R^i-YJWsHkCDEe7_z?55XW0|+Dl{VP#`A3<kT75s)1hHT;xAA+P;S)>GF
59532 zo48zIE)%O-RV+HA^^HzYuID@N#8cKb_zAHLQfs!>;)__rxJyg8-G0GBQkU1K6^yAz
59533 zXVU43fzVXEd^$XON2!#GWp|eKh{$?uj|DCy!-Sgt<<sdv`K3d#AuSkq(u&4HN+4VJ
59534 zC2_nEy!fq)7r?XNpB-C7^onf(1dv=j2UJ4sS%>=-D>sqkz36Puj|`EV;`OE)m@}Et
59536 zW;5HsQ8b!H5L{XdHaH<_CK1n2y@HvR+}XSr$!Ls}ii;_v>E*W-@@EoW0|EINw12(`
59537 z1Gw6E+bj0%9}Q}F|FCQORC7XjnW8&TY=r{D5!!`x>?1okt->+&#id9n=f)>foC@D9
59539 z(S^I_J)S@#k-z4^_yK?Gj8k-jpy3xl1;<-pGn!p=MAsljA>%|+_q3sIhDq-<bU2Wk
59543 z-99$fSq#s?&!V%V+Ad+o2^N)!OUj1!(zKvOb=FC%U#r@%H1V>DgjYPInvD)%Q*l07
59546 zRh-x=qNlTr(Hj1>Jz82BIIumUnAhP&yyI<X1@Hg+N35nXIpp!UPogD!?spv9CGqFf
59549 zE>9yEpC*UEFu1-gDA-@Ll!nyePtq+}t77jR!h0AFGaLLA=??i5&Wh{_K0OLx#n^Pz
59555 z`YLE5CiCz|U68VmMZva(kQAUua2^Zv6bY%-?yA`FOuz|;#;0}XA+X^YoPyhT8()41
59556 zAgRt?J2+1i;yh8jb^<;_lhHwiITzE_YMpoxv#T-U%KN>;NHG^HcicBowFD-{F?nAu
59558 zWm({m<W)ORnd*c%<II)rWh8a2bZ-K}$+8$6KrhT$(REoCo2w!)ef}=Q0Q;l$m6Q~j
59559 zNhxuK<`Iu4xujp0MLgx<;_+!~;Hqtn*S+y=)swrbY3=x4!RwL3ewGak`ol-Y&fKjQ
59560 zuWztpA2!PVTdp3ROC}fY%|;65EkZPvRlV9>?l3|e>!bnlZp6;U@lk?9lpNpJ)-Emx
59563 zw}Xs}O{ZPH$R8<|?2iT99$z+_>ch1HCSDw_qr(W-3anfau2+uiSp3EXZ(Pnym{*AH
59568 zp=7p2$0uSt!cihYYr=5UObK!|@Zj0TLOL{yc=PhBZz-Q@Odlvl3d=Dg=~4@ZN2Tf8
59569 zIGOcCWh)#n;vy{<zj*Nz;A;@~;xyW7px?$5f}u4V&pPehHnJgXTB-54KXYcBf&V{y
59571 zdj}6~Y=-GJ#u9G8rlDDkduD(c+S6`u^T9MUFwo6nFdqih+#3<OR=p?5l4*LT?Xu*m
59572 zyqOvI+;h)<{=-WW5zH&Dq4+s%OYt+Os#|yZz(c6#3C@$OmdL2GVy2){_%!&&ccDKE
59576 z0^%c2JcC6_WmrcD^u{{?-EcexD~S?^C_V(>_8}|<O28JFcpWiXheXQ;#UauI0$T|2
59578 zTa?}s=+>&!D5G#HH&-e<43T0l@=9bQ{2y2c`6`k_c7WP+psjlvJm!hm5`Yj>;5m_N
59580 z?D)?7Ntvv*$Xr*dm6cl2&gn9<cIJd(F7-&3qP8bclp@E388XEbh*G&8gDAyjD6lNX
59582 zntVOcPaTEdWF0%cS;GL&6}sBw_oiF@l_is=%efJLQ}mrtb>}VU2Y_e*-bsdzLiHSr
59584 z*wkz(T-9Mm^OwN$o<!3~fP5~lg1aG>i4a{9l!S@52$h~dA}kXKLNWt+QW_zYOfN@f
59585 zR!=~gOfO7DCMtL#;#u+@gv7`pl!*(BR7K+1StyfXLCUD0G%-|@IIdUM)`|tmVkL?*
59586 zL_un(uCB7YCdx%!3}C%Xt7(upL1)Au&-0Gqc4baXBHd@ui-3`@3^+SZ!0<1z!5Z#h
59587 zvXX41-s48#iDLzi4kO<4y8_YHF?`VQ>bf7&g6^J>MaM?5M*i&GgkZ8~acrsB&<lpA
59589 z+b`p@EaYITd6b4OqviN4;{eVO^Xu?|M$Q;d6J*)+_JG(*180+y8CDmBbWL-0oo2N;
59592 zcB8&{BIpV@r*q4%dq<sKef1r#VDny2cj}VmF8iT|iA%?e-MS;B30}%em)^er5vN}v
59593 zX@X%D$=r#>9u@*I-A4W<mTG(+CBdb39TO)`I?=EA@YkdvEDr=!ibPY9fI<lpn7bH-
59596 zY<QAQE3Bb=C7a2Zb=R#uL@P{l5lT{6?d{2OMG-9^OT}`@AV@A~VcZq!=YVx|g6HL&
59599 zpAbx*K^cb4NX}kk=|t0}DGtZ56u~y@b-%8L%?u@W_lcWnZ~gK>P;FhzOSqQhoRz}b
59601 z6qEF-O7rHWM9>-N1HdY|2m!&NCB&mI0n37qfj5eki88yP?$Wgpxd63bM%f9dR7+27
59602 z*P-4jP*kp^=zf5r&Fs0m2uHoR40M(!X!EcI`9B`~9@+<HhmX7`61hJGpVRp%J_Z|v
59604 z+8bl}PN-<G`-N0W6L-qTWJ+L$I@()AOIHPPwN<al1qCYTb2zZR8hT?f#Z$e7#9X`=
59605 z6@elDGcVZudR{0wc&Nn@;vR~}i-BVUvy}vb6Az6vQT@ne35*<05)rUIaWC+8hzp56
59606 z%9zj`jZ&I9G)GO#@I#1v@F(vr6rEyV${8(Z3sTv1D-b>|QyRg?3B{tVS)w0iBJ4PK
59607 zsGJArKLZ}+odYh<L={0}%pEK8E)y~E#5Ct-XI{gOsuC?C#jrh7B|5B@nMD(VY+TjN
59611 zWOm$|%9#Yk(>hM9tXc|qsHJ^-qc2d@YD*L8K-By+$r@a1H5w+cvrmT|E1_%}T?S_P
59617 zB&C|coG3b4#>_~m_D<2#GU-B|BM4H@w)(ul#Q7QYUIa!JF2&&%bC_#6w2SQ2gO65?
59618 zHUJ;r)M1YsFw7j(8Kzs381MMulh}-GnnvlqHPbO9Q7T)OtxC?uqRfXfS1K%>l$8t+
59619 zp^EIZvU>8MUqCBJ9=UB41$*hw8>feOb}~IQ4ogoza!hU6EI3-zY~0tiZ9^8*CCjoj
59625 zj|%Ia?1#?g=jXJXRS)Lu<yW77?5OAW4WaAiYJ*PqY~yu*@UJ&-h1GDt-S}(d3&3{m
59626 z4|*>^#7wZei@NYo7NTq@-k)Oj*yWaF+VxGGN%L005v022SDcir%cjI@Ojz|XMo~;D
59628 zmU_$G`C_4drbP-Sa~?yNI=zN>tdoSl9s%E+M?R6DL65~g9L{-93MI)jIYxt?mHjh|
59631 za!KI87zYku2S1q_1q@IuHQSUAKPW^XkT*4s14QwHBNjvIHIQMq|IC|U&;Z3}-ZSVt
59633 z%PU)~Zku`0Yg|if%>~2N7~1#Qub3=f+b#e_Av1c=#JOsd{5(pY;CaKQ-i=@p<>&G5
59635 zCc=pl@o=1h1-q@j=H%X^n$a)_3eJ(iQVgwnI<PKal-rOS4^|qv)~!2tKDBb^&9|XH
59636 zQCQBrvykrH1-37WVu3E-RF<#otzFFKTUBd$i!v{7<WASuU%fCGlycSk?<p;0d6^}@
59637 zU&!#AeOb6W=1J_m7z3fzo)KPhhcg^&1E>Mi`<NO@es*C-I7eYdu;tb7TKwo8owgss
59638 zejvS8Y#G-c{8Hr+uq9Myb4%WCsFnSw9cZuo9e3OwP)zdFp8{VWAV2ba5cBYQIMEcQ
59641 z`*BJ>AM^Y)-u?_dO4nI)G*RF@FI`Q;JXDB=)F_iXx+zHvae^vQHZdP$eC4Jez8DLD
59642 zRGM*A*aGMoDnmMfbm{zAj1#z^wyDFLPZB%~K?|JX@SBDF1e=8al-VSq$gnAT@p^0$
59643 zNe{p&kG^I7kq+P#Ejz_2wS0KGviD<vSBlDJYnoRI9VM4d6763{A4HnS$-%w@V?d`(
59644 zL&5Qr6pE0M1p^ai;L%g@qr-^xwQ&M1&L`LzaFoF7fFn5Q5rE<bJ{%A{3ImtN8gq#F
59646 zioC?iG^5ItnpP7Z<wMB7Mf{h?nX=4eUq0$jJ10l`CbDUJ-lo6Xb8KA}q;e)>>*@Kc
59647 zp5*e-sj3zVb8<;m4B0ONw@T-7hMpWj4*4@6Z-Lo+<EMh+6e7g1^w?i2CG~W({#}Bh
59650 zG5wBu-rUMft?9?zd3y_3>Y>ao9NV);PuuU=-ao~sJ@)pNCLem*<pp#2v{(VPk>bnq
59651 zv~h?9a6=I-j(9jO=gwj?5tgCTPf4vp_1bHe?3`uEf?PEmOA@l;-nD&AG&w3A(hPs1
59654 zrLj87&{6X=_yv!DN!*Smg%T+&MLdS25SmHR*P_V^w?Y^(4rLLHjpy(1Q-nP9CJr6F
59656 z$Dj;{PJ9T$aM%9~$PZfxl_FBqV+cW##H+u-51IoXwD;mZ2oN8=I{R_aaE$%&2LXTa
59661 zZX+)8=D6xmhdAcr5#_US@QLWgp*28c9eR1T-(#e&qjOEdRFh(87)TpQAczyRykGR@
59662 z#7xVFNK|%KGb^QactpK!*_3of>DSU?ZTYsu+9{#;BW+}7Fpy9bvl-xGhQpbmut5+<
59664 z^*keSyklpp?D`4aR?}OuW$xzkZPE8ow%wBQwpz>KDxWhQ-fKC$AhN2UCGFE+zzY$8
59665 zi2jlRL`HSXQBisndxiP#mOwB#Dl?9(16j(ZL``-#U=#Hn)(5_A?|A7<iB`8-e|-GD
59666 zbB*JJgky00TLH(c{*?0K(XhdhPxdx#U<-@AF{T&1t`QDdTPMN(!aRH?jx<!Iw-0Ls
59670 z&0nqVziy#k=TmBg7V%rrBZRO;R2#O4Vh9pqVca4LzOfV=1i(mIJmQPtcauIrD-}0I
59671 z(iocNX;XyHfYW43;%T0yf!D+~NQ}|d+-<$u#ai`JJ-g|{r`dnQJa{0-=XnPlcoI+`
59673 zd#t=Yzx^}2?>Pk@@)h5E_pW!W-ds`PHT=rKKVa{}UyZb2=}$F^<YlBNl9wL_ztJOt
59674 z-`5*llGK&uvUCbI$qcibqdPk4AQ=q`8rAbev=58fRIl^smE}vSK*KmGN{AUn;|00h
59675 zsKXR_H$$qY+N<A-Qv$2lfqAB1+`V}{)5$E~dcK}o`K=GH+`h0}YO0kLyK~ac`7vW+
59676 z4-<DHbAT~3H)hN^bZ(Y0kElwTfB}ephRhmf<&Ac3H@AA9A!Y;yPYZ>6H!J6NTO>i_
59678 zEPySzH{QYmx-j0t#3m-X3x}JS#@OJPG|O@EHu{Ug((#j7J0M_hA>7D4gJ>fZL&1DP
59681 z6x@Ge1){-T>q;Xu*w!z9Ob+B24R+;P=bm_U6!r=7gUBvSLv2M>c-~7)Lv5@rEdoO9
59682 zqPr8LqrTyCyO&l}_fjk8AbCDQ-i7obd3q6f?3YNMPP<->E$|ug9J=>ZoL`9ZqlakX
59684 z2hur-$Zp;A!FR1$E9YKwp>biW6cMYcEnMy<xBnXcN60)<`YGpzkR|ize0=%Ky+qC?
59685 z0+*bhJY#H1-7(NGLKznL18LVtZ?(9EV<$GsXrIB-B9LH<_ct`1h5ipJ@VuI)iX|>(
59687 zx0WJbiM{XOiwN_RDEirhFMevFjvO4sJ0-TU68hnI&B0U8eK=n8+=nODJWPBRtodij
59688 znx_xc<a5-iH9rH^ynnPtPuA#gO;Yyy5%QymiJXPH?{vgb-IrSSdSZWP%l9&8t+Owv
59691 z|6XX(duAXF&Yc}dCr$<XMOu6Gmd^RY^2IIxw#!L%X9x^?`x_e<2n^Oqc)-N4pTM%f
59692 zg8V|Z(bk}0zo!#4LFs9KZ5<-Ov`$^E1GE0A4^i5~xBS5Wy7ZduV+lCbcVHg?j?4@i
59693 zkb^p-zQz6|UyOg!K)&i6j-zN0=nRgf$W)r8Rf^)~1wmr=-xZ#%@BPqOrhNO_!|nd<
59694 zrR;XrHIrt%@5Yyq68uhO;yX)dX=pQylB|<<=0syJmUbGJcB-#iBJdNy_XBei!*O7s
59696 zcz-L-jN;>DPkhg&pIgMsf;Rt_w>=VeT7X?*cOnJMW17us#n(UmK9l8Tzu|@tUikF!
59699 zKL;Sf=<p_=VfZr~2-v@mq8KIxBu623sxXX@1)9|h8FQyZJBCwgmA^9~!rXege}A{o
59701 z_rB+Skb}Z*Cw#+C4<1j(Y<?&HI8uSeKp2T`^(7hug`8`H$E={0X=7k`wvoqjl={C-
59702 zAxR9Q2wcc$z*8Z#MrFqAdDPvnHy+wtyyapmwem~f-MD<LdZ;PjG5mh8o6B%Fur67B
59704 za;ZhF{Mx&l7Y1Rnm&%E`BwF!t{B1}%J{jmx>eDClqWwu2xdJCsM#~ehbWw3Nag-}r
59705 zhD~~*(AaJOZzh!@F+#AQ3(2>-Fy7YdvB9G-n$fw~rB*K8e%V{T?R+h@`fE?GKe!3E
59706 zvh2TNs4_kgu^6xpf{4YGmu4NHNG@w<#yr-UvICBEis9vecw@IIObSn-gpg6;PMX~Y
59709 za7&QUTJt91-T&sz2e*M>R{V;Q-M+liytlV<>$w^k9nk=agyvRuey^E^mFItY@ElNT
59713 zX;ac5_EL0)86vVWYwEF8jLR)H!)lrjWqx^J1aqpDU3#=1-Luy{_h-$^yOI2R<vnV?
59714 z<eC+Cm?*u1pGP{#{xcO*!QuAo7Y%6vvn#{dsR>-pSm<3h?3C<i!8?A+-|xZk#4zMY
59715 z2&R^Z4Is|v7ED~-TwPqrR(K&)%#D1%F8BqY!<GE<pgEN7yAN+HmzqlFOtsLk%|Iz>
59716 z|I{`IK^KS@xH+e;`u)xNjW-7qMHg`v2+Cv66l5XV9L%;TlcoTU#d)<Om=JCaRyIPh
59718 zQ!8J1HxTkGfcHA*+PR?C^`)q%=5wftzY_S@y+Nl82-Jy2UKuw)#(}aAdfUVVjz(0M
59719 z*SpbCj7+gcQ?PZ3P65N2L~+5I5b9ymOrbK%dzxhKxSCvDZ-=4Rw}q{X7qb0ZE&#3j
59720 zZ@@up!h>*2B2mp`bzKn@DKgSxyQmmz-(sw^UZP!;$ht)Pj>nHroX(L!ktG@<2#O#*
59721 zQ)k#iL6B$)dAhQ7|EV*N^i$mrJybitQ=W->d<o6rI$*2cfLp;vMiFzge2b;wVg5>T
59722 z+(*76eZ6<+*Lz3l=yzQA-p1MAp_ENHd>CI|yaA5`b|FPZwFruhhP|XHO^7aRrvc~~
59723 zG&8A`Dy3^_PAYUI^YZ2^-+6u^<E?oqV3ch<xB<1KQxxT<4dDka9vnkG>~Deczc3IX
59724 zEwPBhwNXmq#cT=g2AY;o^H1E@smWTiCRw62K9WwUD(`p7zKc-`H{24m%e1)#kucl!
59725 zT1}vSR-%+*UeD(Z`Q+v=e5nJswfcppH)8v2zM-wJX==gX5ey0+?2Y6r5DmEn*?abU
59727 zH#gn(+^0k@BbPD(hmja5=!(?JDS@)|>ZLgtQ{{4+H7IYNlXN#t;E9bC%Qv-{RuugA
59729 z$=dNdbZ_&P-Mw!)_VD^hBI-@smkth~@rx7WC$SRtuK^8H<SQ!#LjNR+eu{w6vj`Iq
59731 z(pmxE*$AqoQpk>)3x=i_teZ&k><JWpR1B4%FoY8$KaFToP2J-&ykg5aE}Px^-s54}
59733 zYm5B<V+1u#GtZm{X6JZrx(iIU(cE<Jn=m)M942$qUDUnt-1Ng^)5pJ3qsi%+t>NVK
59736 z29#2Y98Ww<9p!M%$E6LaQPEr+jeyWS^EoeXH(fddJYPlU1;1&C7SCIv=4suoo-RWq
59737 zA48if&XZ!nBb%PAq>ZH-N05|nY^`uK3$6*QC+MP|Kmw$N{BZ1&Kx8Z6ZNc8q7=8y@
59741 zY?><uK#xxP(A+U90w`nwX(*AzRH=La(vH1wX?Z+y?9S21G5d}y-5t4hzC-Cx-rBmi
59742 zw{c?6zxAG5yz#WLtqmYcp{)FM^4&m|em<6^fAJ?tD&kL~R0I-7fUsTky-0i1%oIe;
59743 zOj$1zH!}rMGgJKQfB(%)wMwZ74I*8Q7;uDyGL5BUj!WR-*#%=Llt`Yl>KIeU<xEcJ
59744 zvZ2MAnM_{r8V@ou+gKdq>*$JK^eYj%4ogsB9p_us)aP;RM1rvc&gm-$|A2p${2*2$
59746 z5jzQLw^9+-H5CJ$8n?91PmRc#249?%;lm+0aTt$sFF%~gisi7hWcR8IPj0O8r9H>a
59749 zMbAC5C-Eo<-PxYRqt_hjNsQv5WuzPw%cYPy(rPd!5p_$$77<9w&iMkZ(2~!o94D|c
59753 zYaVYN?{-d@qW1Sc^CEz}0SO^|@z+Qnknmr``Ci03cymI+Hz#ENyMy1x_lQq{HNTpy
59754 zxpu%MYq*IupCJA#So41-Yrc4JGFfwSg0FuQeK%mJHy>rf9I7ilY{E>|wB!z(Fh^CD
59758 z@Hrv|B^RXEU2y{!(t_qSO=Oj9K@#~)InCAz-OFjoao$*J=(v#gsE#dbyi_e&B*%q8
59759 zub1fY_mMvj2=S$e5a0R_w;)vP6;Tl#4i1ntgd<-`d<`jKKb{mhe9ys!gjg3QnCva&
59760 zzW|@}h4^!x+dTN2WX<0s_dQ0Ye*}@heZMx~3Q@ei$6_xhIK3io4@$*oGWfo-54lP$
59764 z&-NuOH5z!?K!B8b5}_~(uwV+dp`?K2hCTs(R02s6hYX>km&X?Pp*KbJcbW}2wY;(1
59765 zTrL$0Ia7~n*6L`TogR-cbZe854T)PjtpA^KYGYVUpso~C&hfT2ch9}u;?SwxUeXys
59767 z@b14q`1ypaKOd15KlrtS=g^--e-iNlVONlcpJ5@CRf4<?AxnYV6Zt4puI&UOW3nPf
59768 z9mNR}zdBxw!{$kxj2++pLZu{dbPA|{AC1NeLY$)@#>-tCBP;`wCB{BB8Y(zpGNn>H
59769 ztBT9FTnqB0QfWz+#hMpfz7&vdmM2n~-fc^O5SCSY#H=Xut5)8q>T(;C)Q|k-LRKl(
59770 zq{XZ?CmXhi<Dv-6oJWk^{fuCnnfp%@G?}i|L{sHkXC?^a0Yh^6n@JdGN+yKyQ16C>
59771 ziOk6{Qu_@Fqok`YBn;h=86zT#mJ{{zw_b-XOMa#m(S^vQ@PsOg?A*CCNtQ%;{}u5|
59772 zfT#W-QM$%~pYW8QTveE3_%i+g(nGe9>Y$X3z}z#yOB_y2#h%3DdWg;SAdmFW-Y7CT
59773 zPLWJhVgczkn&mTT-AqJBM64llOuDXf)dI@`TM{E#inbMvPLl*tY3*$ltHn%z&bzuX
59774 zIBQbCtKhz`y_Y$0s_2xCtv1^<VaeXMs%_7ww{EV#wb-s^ob8ZO-}2z82VUD-%`^?~
59776 zT)Luy{W2^L3#|x}rQwb>{?L9E<>{%-l3C4Nlfh=i^|Cpa*}Aw`ci?tg&;8k<-Dc&P
59777 ztwIj?ee`#cCXg3TJi9DU2;vaj0}7ao*M{Me>qy|*?7AC@-gXO0kJd_i1;T1%jI;nm
59778 zZxd~@Q>N8O_Rhu>$1UWO;uj(Vdsk|-OevP^rqz<V{p7Kr;<x9N+GA^j6_q1-Sq<eK
59779 z^yWH{zcqXQ6<ZRVl2@wIDr=<)d(Jp>U+4rk0r?xu1w1Lq9@qRF5Wu=-?%zVhz9@DK
59780 z{W%~)n!wh$_ZcZ_JAXOd(B*zP1Rw7OVMt9Ot0gp;c0?yeb<D~R=sd{{%Wd4ZP$-0D
59781 z;E66&yYJk&rO`M(?>a{4rrk8jf2UrSyDPvGEt^aOI#Vg~?3*9&<<w$L-#cOFJhJ(O
59782 z&|aJqc)Oskl*OEdL+MdXTQZ-!8BhccwfIqtM}p|0Yz;Qj5lIjn2upk@EaO)E(f-FR
59783 z`0J~!hGQ#I3|dA_Wx)G~_nZ8vQ$f?IZR3(V4{nKHxcQ-cA*@9H_u$8`*i9|yN|g0?
59784 z_JY-_J4P;JmQUyUnfcXBC|3=?C9vI1PYdKb|0~#g(9po%D>laIoZ8HbX<&}qN`B4Y
59789 zB2dHefr-UGKXdZ21$CoC7qObupy=G9Pcno8tcDz*61er1;)Qd$!s&jn=a`;jx`t5z
59791 zt-(-KW^L&Zu|5WgMFL`_qUc;9iZ=mym%_$DNdlb?x0j;cRsvY;aG2!8VqzHZ90l8}
59792 z*I$Ml3bpGoiG#wJ$n-az$hmFXE;we+QnG0x^~4J$GL|>YIfZsDb*;)MooOORlY`L5
59793 z(BDH!K*;V5cBsf5rATZT{>5PkE}0WBGs>!5Mv-!-+-cT*2j&}Ku`xZ71E0w@#N%{=
59795 z-Q87%?*NT}s%77A=TJ8vWLm{+5GG|g{~lcZCG<luEly!ol%_BgVQ|1Z24IV73XO6r
59799 zl`-@Mr~1I0Z?X!%229ypQ`B)$<>k7n%IUJ@o2@0uW@Yp8L-iCx@Iolly+YxbRf5Cf
59805 zc#Fmlcv0dlW2$lD&5IIm@vkp9@h1FJO}qt#T-LE-Ak8?MJdt>d{hb?(ABd)Xe@jm_
59809 z`xiAs@z^xQs)9n&F!`k9(=yLywQBcnSjN74%=Rscq-3H=z~qy_394RSn4h3P1yDfy
59810 zZ%ly-QhAa2w}b>6-_mCkR`EDM1LZn2*gwwOf(2BKG(&_WB>#Hyoq$z7lZ52ofAISW
59813 z6UmRo(In%eoYoup>XcmKv!_pF!YdDDJh5DAbb-Ite#3^~i9$8ged8ZBPxf5bur$4(
59814 zP|~-V6$Mz8dA+JLO-O!0rC#xuPDxeDW$3SYSrWxiQlQiJ_e%52oiuBwrOlRF({YAO
59815 zS7GFj%O=%8*gE<hF@)=c@U=49r0|V@ofN*)GhdDtzCbWjQxjs4qZZEy-|06E=e}H5
59817 zHDlJD2*6dJH+@*{V2V-};$$y}X5AuEu@t60PZr8NpH+=Kp9Kazr2LmKE~?*q-?K~U
59818 ziHKVpfy2`=u&r?tBNb1qhyrY*klKhK{p-AgPLOCu?<0v6jL4;+YmkD>?6jI_Qr1@l
59820 z9=)q^>#0`Rn}5X?E#<tGGRlWVTOzEMaqj-m3C<i}PW!!p7r3y^d&(cfIGkebUB$3y
59822 z$Ed4jaR~4`8p2c_#T|w)4z0>sw!O1nlB-3wzo!S95%Bifo!Z)Ru;!w4F3eKhJ8x@Q
59826 zv?n0W6^1?zBWfrT4Riti&p2OGKYHCTdy}9u-2*je9FM7#@_xqP;SJbCHz#)su0RB$
59827 zl3-&+>6;+&ij5(2jQgeI8piyB?=>5}z*{OBd7sIxds>YZDaWmB6k3W?$Qoiv6A6xD
59828 z9jQ84ber=z)!&6wA(Tqd?dI%-PKhn%wH%wJ)ppMIMNXI4s>Y;kPR^!F8%x>Ff+uG5
59829 zWVG-*@Ye$sxP#ONWj{(*SPFJTwqmeREI^c!QM*wL={!?D4!1H)S4?OzYC2<qrAr-c
59831 zbAo44wVTDAOX1RKH|%AdtrBIv|Go1MFZWh~BrrAuYtC@j^J;-3wCtB<kJoFuWEGb;
59833 zv)}RW*r;xr^(s%$gzzic>AlX$q7xol1=~(_)-!%V-)jgZ?efyr`GvaUY=x=0=l;w6
59834 zukEc^P18GhreKscL1&fFW)vp-H=JY1Fkurc58_U8Y#F@|nS;2id2nkprUXZxoQ^6!
59835 z-Z9~QL=z!^0W*ipd5*4*`envlOD!ytXfcFkGIK6&pvFj6NbmOjb2r&!*p#@X)3w~3
59836 zk&!#c=gghsYiZP2ud>Tq*7>_y63#fS6eVcpvL)uT6vn4hL|Ra7HososRD-7)U5(Uq
59837 z#%<*ElqCL-J^YV7yu5ore+%73N^lS0`eTaB;y?tPzTSXni0KO>p<^K!$6m0Zc26FE
59838 z0(YU(tqrQT*3+A(f<jx%Y(HurKM9^&3SFs}vl`l4d=&_^t-y6;518JZW^+&SiosES
59848 zUG~t9OBg<mbX13nfZqe07;>~Y0e2s-jnY14;OTk5a)pi_>^-3;k9Nw<JF2u@l0=&>
59850 zH$5(~v6jRof}`US=Hak}h)skg4#y<CQzxzP%0u})n#3gL-Z&6!K`3a!#j}4K2PJ&d
59851 zsy{l8NYJe)BB9W)_{#-92}oqK5SNGGQ=BdgBNArjfs^BKgm+~klO9I)+>0$GfKeIG
59852 zjk4&Yu?*MCqE8hQTt6;@rQKeT>HE1WuN-C3`{ycmEaVmquO?8=-*25M3625$&r$}(
59853 z?$0fmhw|uGzdFjJ7i5}71xr-xwj`jqyU+|6&M}Oew{XfJSqc_q%@h^<QzAuFP;iJ8
59856 z-mwD&DkKNEC3Z}XaW_mISw-%BMts>TkopTRvJqxXqU(0T!1~3c6Nd9wt)S@|1xpV!
59859 zhpt;paU3{*IQ;1Y=%0ZnfVG%UJfor1C^S+6Is#lP7y-l)ipJy2FG<kX;z_~G&{$~P
59865 z&?-}~C6}htIUS<@rv%Zs)GEFC!w@Vk*Y>ooFO+S)Zq!?pR46pJdQS6lMyt8WRJsmE
59866 zB2DD-fC+3%PU6Df_!KZ00*$LvhnP|Q#o=h-aZGqRUoR3=s+^+L?f1NMzOb@hwiler
59867 zg6uh&o?`nay51d)Ef?c<wkq=l+c$s5<j9me=j-KWR;#L_LUDAFUR@7#pWwNE*RR-`
59870 zw|dfKNs19AU-~@y%aJpc>)*eX1`Ls#>*<`x8X6{N#RnfrE53i?<iH5a88vc3=?DIU
59871 z5de?MIe8gR_~Qb07O2i^1Fmji1P-JKG43QKfCClZYnWm>JcD5N<)Z+Q!yxNMNrY8&
59875 znGD6py>$(PGdaPNxX{ZNU2W?<?-E#+w=?>&Q{KiL1(5<WB|*}8W2r_HB%5{oye>Ao
59877 z8-j~P9YLBS(=MajLrk1^?ycQ@JY$A}l2;8*qG0;PsMvw8G7L>?V!0D&Tknmi<Cxm9
59878 zldj!TEsbT+2D#wO=S-0zRk76c#8y{{f%MV;g8m6G!q=a%3>|;bQ2M~|o`uq%Rss`0
59880 zgJlx*|9^{q4e&M41)-IZ5?$bb!@9t8Og(1VY23LZRY4Y?3?W9-|2h}*ohx^**$cMY
59881 zkPB6-r&!MMzT7aR_CiZUseHpe(?9vt+WBY_pvX#{y_Qx}*)$~xA+xZ}(<$9lFrIP(
59885 zBI3-W^X&Ak8zDQ4fqG(7bF7;WX=ejmNL9UZ`p%P*s-;PW*D01L=1)JlQw^$xLJKJ9
59886 z@=1%PNRf4Hd(pj&eh#YWvIkT&ErF}bWfil_NqU;(2?Cod-*!*ctY7YS!(t_)Q8c9r
59887 zqRDzc2lcd?Ie8iEE55vcinW1-4it6U1<WEQirRnK6m_+n_f4Hn!F=y9Bs#%G@l@`i
59889 z;!N)*3@2nRTU;$t0!6Qd#WR(2tf>{`G*{1u21R3$-ex#g;uOI48!f*Ts%}D}51~Jc
59890 zG+uz-_Fpc&4b)Stw;O09b%YQ+thYxVaKuKh`kpy6qsqNaJ!M)n&y8E+n|``oH+6aK
59891 zyD%orWjifHH}tJG$>*~aY>e0Vs4?ECRSiXKHxdH87kv~M`!7^u``-+W4cmuZJJQ&|
59892 zOQ4RBMn@Fc&C;d!%KOW5-7t!x>`OAoOQcMvN=Dhq=M_e<40qK{2$Qaca?P<Dn#HoP
59894 zuS<xT=wssQUMCK%TZXC@FI+5Gb(PiFD-Y!Y6t=Tjz1q?RW6pN6J3D*dhHlTD?AcbP
59895 z1YKUQV*sBQMx)t2$_ktz8Z0eSZr}aOPM{WR>i$VPkO&$>F;|u|A5a!nx@p=C-1|03
59900 zDEZKlMs*~RPy$>*GBOXqeH<+uR1U96#aSWne~GIIL6G;t(xwaXC5^|giChf-JYCBK
59904 ztDu?NUBE7UJB6cz<}Xe(`9Rc?E%Y9wgnT--JvkFzygXnFIIS~n0v?Hfp%WhA{#)?~
59905 zga?O>FMvl%Xlas1Ad4J1p)YEaislHe&MBdjCXJih?tI?%Xc_WH-YWJ@s|G<H%%H%`
59906 zLH5Yh96}L%Q_j}~k&VF|(Qik88Yuuz<?REG1_m|+ZBL=6hFk(=H;}-wTEpVgPaVM}
59907 z*I##-OM(DFf_BiZmf;kTEvquYC2+%&OcI4~hJ9gE5(P%JPi;1Wg3@xjoq$epSuU$l
59909 z6tjRG1I$|-PcBP#JY#WK>^EHxA51KObpuytmqk#PNjpHXTvDfs;cq;Kk&5E?cip6x
59910 zEeNU`pR!&6Qb4dgD<FH_6L6pXYHnieqQ(IsfY&m`q!-}B=xOlP4-L3XJU9~Ou)aBa
59911 z3yL#^{@3N-80!{X_WD~ErIJ0#z&v1JLttd?=6AxzqOex*V-B`zHUai#k~mK<wZZ28
59916 zO-seR+h1nda@uQ0a(chHw~UgRE{@|$`pvnb)huR<#U#xC@6caEYRGE_X$5F+7f9wZ
59919 zvEYzFY*i{KQt4HC?PeisnW~&3#_e9C{-f)5-->uRoR<erw=Amb-*@>t?kM}7*2#9e
59920 zMW~KB*JL%O`S|;P0^^s`*^E-MmrRbc-FiQ}RJ^rdxIo;lD*PO*zOYxixxdR5(|J?Q
59922 z&v}la#V5{EGh-V{laxqJkOE%Ga8lz$(LwJ-dGl>`%Pba@rrlbQ6@p_uKC7`Rv-AB=
59923 zqmKjK<Jo+A88}RWD{yMx)oOnE-n?RLcMF@I%12WM(9Y@l-{%6Wr7%`HQbI9J-V5<@
59926 z<5B4(elOhD1)y5$1h5mPrWap#b}^O02u|1KT1GBfVk)_*d0K+v)GxC^M-*FNRoyd7
59927 zYTjceuBvZl1S52ur2E}QpGJznKI#oRR0L5A9P(jJ7>0f4L?r|4f;%6EVLNQs7K-iE
59928 z=wWA=Y=XziaV^8R)1Bb5)wFH;uGWdbb>midO|CZt@u?VG7d$rKofqY<Q@mO*-DB<j
59929 zK5&-cLpfo_`BlJGK&}?TgwWrLz83J*{$MvUZ0KZcGzNS>;suV5R%L-5;wX>GS8k}v
59931 za44Qs;H2U@OYqznbc0DOVi)-DXpRkrpKmr%q`BN&p6?WV*joeRMl?0mRDK<YBu1@=
59934 zVSG9@yWJb;w|J~DJh)6jTd9~0Lnu14TF!QJCA!fsdP-fQS*|6d=0l@viJoW&Gv=p5
59936 zW_H|26Q6T1)NsbAsc1SKB!|MSKhQhoRO@oHuGKBd^zF9iHw_Eywj?nsBT_-Wzb{(z
59937 z=Gwi`PJIuyRd+U4=Y*o3^%d19>SivTV&uHUDlF^I`@LPs?U*ZY@)tysd>H*v-~rt=
59938 z;Ip0xxR;nP%S~vgVKKUGH0EoflPq~9?j$<|hMh){jHyU04IzC-g#$@AIm-Md`;P4Z
59939 zQ^afSo!yN!zvMA?$?fGj72rhe)>V1`-q$W~I=RPo)^c{Jpr%>2y;2HyHrTm4&a@K8
59940 z>Ce&s1g_=-1FoWDI7Uxw!JXa0biq^p@XNCmPf@|sGO}E%l&1@xrc&86;qiC|%c#5%
59941 z-el-N?d|6(m(FjAd6>!$q;RdAE}NXnrt580q*RX1SMIM$4qvb7LR1aaNcRf+7tXP!
59942 zT2RtlEgxz$oX27NJS*oUUNtveR;68+Bl(2ATj+DZrh}x&08(%-KPh@huUM%~ks>nX
59943 zj!Ntgxq6nR>!%BWpKo8fIEYdNLQxJ^w>w}b-k=~5#lrGq%Whli?!j7GTh$DHDLj5Y
59950 z-IH^=;oNl2%{jgN?#rQH=kA$#9VTauMx#+4!DtYOAS94T1_8EJzyj-lY|Tiu7>Ts5
59951 zWp@jVS%D4M26ny1Hq_R-EQ%_?^nTwt=ce~w_ar3P!c|=}ePiG6|NV3L{b#yq+!_^U
59953 zwa!=r!#^CbC04?@dM&(pCTl`<Bj}V<EL!m5jdxsi4U7}w4A7;;{Y#g_`({OO-&F$V
59954 zbwgsMoRA!qL^c9$`iCGws35-+<$F?LQ#OHxQ>Td&&%_R+e2)#hE;!*a(}g@Oo>*ag
59955 z1q&d^-QVQ|5$bsK14T#zB~QI=<VPbSVORL6caOWnk3*oa0vvUAU}c4k!}xUUp+*zG
59956 zW6-0?xX64nfowX}exmf)Agv1$)2*_s$z`&9vhk#2min%y80|`ZJ8deSO!anl?81`F
59958 z$x2gz&ft{6w0rPA<ixw6>d(P<!Bo`rT_`G^58gV7Tnp1T!TI4}rh58~<T$f-JTfyb
59959 z9G7;RnI<#}Ab?Gy=?S))Ki=JXa(rso8PA&qY-t$p*Ybj3GjPGCVrBcv;Rj(4&Gz+1
59963 zWqAe$-GI)qBUQw(!>Hc?&R7yC#6LR*|BJyX%NTljbp=IM4p#Sjom^(xEijq2^dk>q
59965 z>S!fdLe-SrwdB0zv*~{&v8zKe3s_D|0pnJ8TTMyFjg{`j9ExXFv1G+AYWZQhr^%Ya
59966 zB_t^$rZZ_YFT1AiC44m_<CM+u>5@8ZVu2`z-1Z7uLaNBWKKD5la$7p!FGmZxZSpAK
59967 zHud$m&3QxI1{)o`@c>-#-e~e=@`*7ky;+{~0;Yp4{u~1lFiynjVGl!u{x;8c;gtbB
59971 z0X2unORo*kaMIQZ<}U-ld=e!;HeTTZm%hO&^K7@m<W1pZEgZv*5yvy12nK8kI6@T6
59972 z*S4GGVP%-hq!K|89L?9xD6o@&`g5J(b7mq`XXkg)>QZj$fxS$=l&-au);rehx?&}I
59973 z57+FP!lS>rckyDysh!KK8P<ZjZFkqHaToHdTTVWeJK9|o%Qc3VvuSyd)c>+v@-?gK
59975 zB%$&Nt!~sF>m>A4QyLy0xcPFr-cqXX*tF{^XR;Tb?~)9`@aV7XUINsrALg|T>v%G~
59977 z(BUwq037qEh>6)3&csD5Atj@E8W%C>t}O=G0=k}#jVCRFDYNb)O(89Cd9C)aLzAk-
59979 zN27z)KuX^DwYFO*vM^|^wb!6CsRFw?UaS?OB*0&O`a+B2#HJZ_&8hR3I;{5->cUPw
59981 z2*83=s+;lxBhw0pQ#hrHD$172zGiy0sT^QmMgKRXj4S{xG5p$UiE0H-;a3)_3()Fl
59983 z*0<~l=bN%)Kuh$i<x)|03iXKVVTR>Z^q&9<-T%dGLV*Q{3ByksR_0sE6SFUz)l_a8
59988 zj-@(?o=A+uUqncRj+68=NSwjqH;5R9u_%LLOjsx6<~r<8eTYRTpF+<15L~6)haV!~
59990 zUwDgO)B#_#`xd`wB1T*wMv2kh^ovNGc=;`VQ?xJIh1R*#YShX_h$NA)At-WygSLz=
59992 zLY*ZPBV(*3=5oA|Fh<cH#R*jL4*@fF_(jhUV^g4FIjZX-*dsA?yk&Y^>%{_79K3>H
59993 zktuE>&4lgYlz9R&bj})^KsTAQ82nVwPgK9=`5P9^lj_xq(-dh^vp5}7uRc~`bq3Wc
59994 znp#q;$HnuoWRuX04lrW`#xbNoF$yrxz(C0)2qQVIsHwhI-&DOQ!T&PaL53I`_L4F_
59995 z5X$OUD8YkR_3JN`@P{-ea&=M|Awl7%{<}23b!lt^S%ed(ZpyJO=p@O(%9tTKoJ!-g
59999 zsRfDC<0z>Kh3DSi-+%AJ!E{rCv$O4;HX$ku!{sDVlVY?H2Qe;C791h7>FYQA?of}=
60002 zUjoH(3xUwdFCaJtr0B)Fd>33?7^m*_RZt)g-^f>ik1#M3L^HAD(_b579zmEG1BCM2
60004 zpmi*oj6(CJNGuJAx67J*q7wn`Mly+0Kqg&}BDEwG%9JK0SwoA^?z-qB$RhHgkTbbT
60005 z)&?e00s&~yj-CaATCsr%gwMpr{A&dP>bK6JV<4fjgRQ#|R`!+fE%2|iczM9Z56kBT
60008 zWU`u<11vo_2K@`@Hy|TSkNn;$5bf4jw84W|>$Hi*-inFE-iqH#ym`OZm{?lkZCTpQ
60010 zk#HAz?dDHz7uFMrrY1-{kZ>i~4AOuOu%HT}p5|0ZECLU>v6#?}I89p)-q<Xi{|S@f
60012 z$HtG3!#7!BK?7QB6g!5Fas(S0q9zA>UGWH4GB$@R8HDq|MX_W78th4-dbaT^XxEF3
60014 zWCdJ68P=0HS0r$t5hx7D+HG0Q2}-t{j>g1qpzlIfCURW{a@`oqHFywf{4JDg_ivG0
60015 z_kdVep|wspHY~U)K}frTuJ9+@vCoj|(|)u+73;v+JpZHDk}W-$rFXQI1mL|oXMiYG
60018 z70Ka}2970-+Qn2w!EHS*Ty3ulDJQ8}g~R9Wzb2<O;RO)XC*{0l+kYalYXdr?7o-C4
60019 zPZTyS=PzcRc7ClZ@k1ALOJ;#JJ8pShQuSgtMT-)n@)}x|(^kHeD5?$!n>j9BR+s8P
60020 z&|^`-?2ph@q>ug}biku!T7PR6X|*r?%~+%rI>aXyY4y?my%%ZSB}$DdfVouaeBD1R
60022 zdlLP8ko!Fv9rWI0!DE`uofJHxY%VoZ=et|}{zNjjCK!dfQK}{MR6|-gK5#uhU2iJQ
60023 z=hnJj(#(y3O+^p)E?ulT{<$(t<~C`fvAQg~u*R{r<pjxGSmZP1s-NJ0p<F7?R5t!*
60025 zzAd@#{IyFZl*vFO3$TY08a-JG3h|TWc9ZFYHzJW!Q!uRe)5+rHY|;>UZq<>43@#K(
60026 z7^7+u2vLFmy5Q=XRPX7ED<~U!QaImO8%Qh-4BaA>NlS1&UQa@q%vQy?D#NN=G>Z2n
60027 z^c+${F24p0_uQsA;Bv-Jp%zV^KC8gw<rOIe>>y^)q-Om0a0nq7hJoH`zZYp9;EqBt
60028 zsc-$x=8Z~gsIVGS_EA*AwY-#~>1H~W*~)D{{ul(2>d3=#vj@D@VFhPNREXp5QG>|z
60029 zjZ03dYt|fl(ly8-LujEqz?zl6RTk=R&Z@_HwOlOZ(n%280hcD|_8FqXQx+;JYIIMg
60030 zY|hBoM77t<N;2&HfdL&fQZZiR<f0kasI*ldW_3-A3bCFXZ@|*4qQMrRtuSe0NUjHr
60031 zl)er-fmnCa3G_h}14i`vh{*%CDgFP5ZT|WdU~uQbm3uHvH=_aPy^`Tc4fuLD9u{Ad
60033 z(^{f>!hqe4_;E1~udWm(gHK=G>wK;OKG&Xpj)<Wzzp)QO86VDFH-h3Aj$*IOe;&c%
60034 z$MN}(j~3>y`i+0|9-_@c5HRkH-3Di7V^4UW;ckNf^j}mHsfkp>1+I})L(ens+q7t^
60036 zxWfr%S|BD4hDQ?-;COM^r$|m6v3o$dgy~e0tn*fNIj0sKoW}8JayA>nxs)@hYS{s9
60039 zYAc1DWXl;&t7sb^-6|B}wzlev%h|Pr%7af>TDgsG*N%@GRcH9rN?d|?CXKow;>n(M
60042 zE#?`sZmzvN^5$qHrAk>ji(Y}ScM*wT%UQ9wZi%?NXzv{Z8XfH~iiH-SQF}YdvwsBl
60043 zd`u_=>)QV(`g_5E?Wex5Am0VpH{9-bauML&;REO1e^17W76C3c7JV<DwTz&=I#~pG
60046 zgzcQeeq*`0Jl-f1V!_Rd<y~nv3z2tvkzyfl$_b{xs=m7UvF*ts#q3H-XBhe}n-uwA
60049 z*;U0W8jK2JeeK~HB<U&ACj^oI?$<PwoD}%KK4j~5P-J<rv))~+RUqJJ5aYGc_B`O{
60050 z9O0(H-URXUEZT*5pWpOkqGM{R7#AqoG_AV6^9^egyiccRt2Rlo?1d}$qhCIW_E}^c
60054 zTI%u%v1HD-q)+>|VH-d2EtlV9l5g6RKWRvw^yEid?(UlAqox&tQ|;TDya?Xn>Sy(D
60056 z4e-f5dbblvcO_X^Gr~Ui2M*t8^LDN!=?ZM<ot;}avwM5m>+B&tK&0;1mPkb(CLaA>
60057 zu{Y5(9_pRZ>wLC1aIaqHOCM;z@mA-de7t$DPUq<!J|F2KANxY*>$ZmvX4PAbVz<;S
60058 z<lK}h^XxdQetHkz88-iJYxsm5_4JQjEai)Nr3kEjcP($*#66bqef--?R`q(@t^rH0
60062 zHU+buY(;>SKO9R2(_;6-nOQjIpbHpsI8H+&a9ln1Owjs(gMVK{gEaKy>B+uL9E}<y
60065 zSgKN2MZ<8`X*-I>2C;syVe1%zQO3}8Fb@Vd3y(<vIU5baR1BOl>ZZ1*Pfr@E@u;C%
60067 z#cS8z_r7mwJ#w+-YyGy9h_Qw!rEH3Fy0%<(w5IdK2i4lseaicZSKjsT@=l?!w7Jo0
60068 zS=PH4*DI-t=BZg+%tp~cH}=g)6WEoTaG(`}*V-zE9flK?Mo@5{!imp}z0ACDR#jpF
60069 z_+P-$Z=wx?I(s?LV0eNS(K=agGDZ%({LY6y{B*{s890r>LO9E+ATZ)-DqnlLRLc~L
60072 zfHFD~fdhu!f-{Rcr_WED31?90H%FBc%fu;Ip(4ja^#OIpxDFw4W^~4sSt76tFL(<q
60073 z<d7BK;cdqP|D`p~yRs!fVli-OHTXv?(O?9c&Xu38HquS|Vz2Suz3x`sN9#sWKEBfK
60074 zJp>2u723uy3<L&5NVN-(u65F>l`NI}>^FYHlPg=r^k~mNOgS}y;i%ZR(-Q4(xao(Z
60076 zR2*nZ9HVfdqf<N)k16ut@ug~ZJNNYV=-~{bnLqAsdrRw9F5#Wex(!~awQ9VzUKY!_
60077 z!VC9xwxpGJQ|j%*&omzCZymMFhY!5<gxyTVGxoobvyz>01koy$JisH-S%HrbD22&R
60079 zLpjdGPcCLxOreqz7IycR#7|`7jP&REz5H=1J+qr#v}jtyjrFSFtLGNhuPrqb!Fu-3
60080 zetf*1-Pz3>RW)uW9i8YHq>}z^-sUr!uAJP^zJTn)4egn5L%VYp6}C3KJmmSg4eh~h
60083 zHhy><zC{htH-g5)sXjgTIsa0)wFV-ug@_!p^<Uts9G`p<3l<cJ5C_-L1a4dahO`an
60085 zFL8>>r(}ZU7%7!-S)e&$SS&+H6*ISO$`;K7e)zdNe~CU5>jv>GaHrC+cL|R1qvMT2
60086 zZ_b^9Mg*P<4=VtDYH-?`hI#*46GDz(4HP6ra%m@K3v8amVFo^i5pg<YYZTDIKwWg7
60089 zSfX->z`cgA1_1~(CD6Y{W3X41h<tA}hD|~gWP;0h96}@~Y?!T#(?}N0lC%A)-EQQA
60091 zKchLMh<tp+C@4Oev4^WmEV$7ak0Gy24l_@PWH=xby$Lz-9vHvPyi9}`N;n?y3ry3Z
60093 z7+0ATnd~UDXc!j5Qn4PsWOuR@C#GF}F|S8h_#Z=;KmdAUBnaSQRB&N-(7gC|8a&(-
60094 z$Ap_DXI!bfwswS_9o2<`znjWe-HL~zGNBfNmJTt~C>U05vD5YZMt-S?GbAR^gnO<D
60099 z&2*C{>#5YL@xp%zmUgPU=bXGm#ZfKkxP0#418=K%Uy^k!`-vl*rOXY>k@@3j0r?31
60100 z0}#2wH89VQ<n46~kCo!ElzL=91f-DX93VEakCCuC1Oz1vXozt@<DPtR64nq=Sfect
60111 zDLi-1DndsC4};FgF1|728TtyQE{kk@YCES;zGrN<nrW0wR6AC=rYEEn(1CW@$!fBZ
60113 z-*wDc^^*03kunq2Cugr(Ea_%l{OC&`YUl5I)p8=CZKN1Svz|Jd-gHpsKzGpJ2Ks3k
60114 zqH#08k0`!DH11{-MViaaWk`(xjT<N}`m8C46KLEKD%*4nVg`^K4nBauV6l`{^0r(y
60115 zn*ktq%Gfl4ybm{mxrc>9)-*+<4`&^OitTPVnQn4(%@E}Pjhk!Zu^3L{PR$-qIuzk@
60116 z7>-V=nPB16ojd3sqyGdPdHajLKAxsd%}i4x=*K1zgE;@(`=c@HI5nGD2+tVlw;3>l
60117 znMvx94fqBKXG_Myql;2b(R!KYhC-97&FPr9S#sBttRBazjnTuo^2!35by|v~*hMxW
60119 zEWnS6!n-j@L%3Wxn8JJd*Dkw97q^VW=31SIQzp+*I;LKEtjcL|EWU8%c71qlC%^k?
60120 zli`-@a(}5O;he}5ajh>fQY^%0z&N_Ov7aq<v%CWwiJ;YI2mLw34N#OGeN777tug-c
60121 zL^4A>wE+5w93w+zPrp3Dhaw|<C<y^RS-A+l-pzZ!(Xi)wdQP}x)6~eATd9-F<zQ!z
60123 z=-P3HsJ|kQ+>*&TX|bBpTlpAGh?TNv%Ut!opzrNpVrk@0kl}xC%)fVIe$<Lg<)$^)
60124 zH##a4#ttd9XO~JjO%|AyxxRde=)jkpv|V4!XsTw2R!OEPoZ_1_-^uLh8Hp#St@*he
60127 zg*W&?*ta@3`-2D-54KI6`Edkt!f^UQ9E-jDhCdl}tt#M&4${fx3wb#!S3H(-rwH>=
60130 zw4ESeWK)srhE~=yn#6M{-(hsS=A>#*%ZlDgW&sB~PAMgeO`2$@Q%jO4OB|JJz`evj
60132 zbQOjQ`P}JR-b^`boT?7}he>t?F8DyJG%3{8QIe!%1VLhk;%t?YKlLFo!N*BE_sB>Z
60134 z%I>x9dpvC}`ZYCGR_gaH1cT836<bBqNC~<4`6P-Qj2D8xmCQ>nBXHqH$@zug!*K;u
60135 zJ8P~c-1z$ZclA59x}M1km<&g1(lp&jx(T0K{kCAwYq#Aj=aV%XXNed;Gf!h=;|;jL
60136 z=U?BsA9)q|6k;RWuj(KeKM3zr9ph0%7!=_-tm(5S@F`x?3dI;Oq-O97VQ?1}oAltf
60137 zgP;3!iXak2RkVk#_An-4Sox=M)#ZwHRgl^nOI1lg!R^MjpnAOX@6q?6A_zjx!68)e
60139 zs&-Y*`A{d+)>HYKo6~HV<SHeDESAPwZjCjd7HE1kPjk8fiD_aTB23-+ee@rpEaJlx
60141 z<fff+kfbB2rD!qhm(XRTirgMC1~5X2pei}u{{X!xG-%=oczOnXK6)ig3`}-DMX6%Q
60143 zG~3E#SjVXacR^9BHv?`LIlk*#>3E!uGRVITOh*CSP25x@3`ekW2hW?U8>EvU5-gwv
60145 z1_J9LTO-z0p*TjI1%JK(ekv5rXU0sW!|(-m&LF{6Kxu{boYyM852clu|9Sao{1zyl
60146 zXkRCKDNRznTx!8_e1R9@MBFm8er9RpF8Qd0>-p!&;71B9o7MFg5vOa8-IiUW<>Oo&
60147 z&zukDac&}C1!T-2;OOuNpZUYed2gyjf?t&%`)|>Pkg+EG=|D!)lA%Zv#L2g9vr-6#
60149 znym|rhnCY?oJ`R~HQ{(tl97%4x~59w0cDB8o5WHvpQ9PMl1a-EBmX1h*N`kMg$RF5
60151 zv23+-6elXBj2>OxZS+MD6uviv=wkB<_?ZkEmO+C@vG7r}B>L^5uq16$<{<ztF^(mI
60158 zHRp6f&J<^gM;_8eMsK=!w6@Y}M8zWy^<KYt6fUW`XZ1*tw0`<j^~fkn5>K-{`(tuO
60159 zI#^8_DbuOV6_ALc?QYp83rK8I6cqu4$^Tbeju-E9SVy;>xHMNof>-<F7>_iNHRKSk
60161 z&UE5BgVy3?r_^2-(^gW`i}~yAY(te&GA;d*Yg&0pE?5~Z`#TcL@qM3mZvkFttZgOD
60163 z&(PliK4TB?$v+5FGt&Ahpi&NS7IvfvSnMznJcZ9bbsRcocGxBd-Irq$$7b8b!tY83
60164 zZ-6g_KF;(_0aj30qzgTJSgOMi91G)^sIBaHq!0Qi(jN^*janu>-ESTN^mU_()yZ`n
60167 z<fp@x8q(f2Aao_5s%3<P22bI$PmQ;4+>6ljwa_^lhL-h>ka-F*RPq@Lwx&$h$cOpn
60169 zO}e#c<~dnF4bNRm;j$dVh}oKGbxi`aUl{(9>{@n42Bc4me1hjpNwD~2&*Y-au8e*K
60170 z_<?Pp4BkD`R+b=|K2UsF*qw4D3ujf7vAa~1184X6)LX)ea<_vZowe>-r3AfBH#JvL
60174 zb~_%ai$fF{ZY*xJ8d-N-nwwo4elPWUlG(!YJN$}FkxlCfD5JH2$JWG*nNqb<?n;wS
60176 zp-e0`Ab-JX$n#h_Fg53p7e^8>H8}7IF&sOxwFz$}$GnB%Gidu08O@%4d6Kso_t@$i
60177 z&?KGPI5+H<i(%n}qGnr={o)DI%}_3wB#)sdP12-q0kB$8P}e^BT`xBPV^}s}@IWy_
60181 zUj0CMAyrWz8LxEq4OLBPP;&d*-~TD}rIg)<!kggo|0b@mtkB8;b=O!A)?bU9+IO5~
60187 z-_hXZ-G!d&EC3S-H575WE6AujZZm_X6gTws6jx$EAgKr@x6lk*gI-0iAio93QXct5
60188 zZ<540Gbd82mS$2lMSr{>H#qJzV-u#FqJ#~VrbvOcytNAk$&;GUSkknDo4MZ2bfgT-
60189 z*c`!(jh1HgT2kO*R16l&IZn|omP$*qkZQp^rh6e;1MsuxKLb(Ol~Ft$b}-H2NWmuK
60192 z;MB~_NX=~Hco6MRZzJq4k6Oov-YQVOBvUUiBu3yMREH6v9`w$u^_@+xTrh`ib?NbI
60193 zUOK!bDqD1H<@|0w>1{7JHY7)DRx_k_*q4gJ*2QhUcB7lz@F)W|jxTjqoQ9D)I-li}
60195 zA9p-{77cbT?i&U7E=16W0|n4PX?5-&93{Pe`YalxQx?U*j@+|}Fz&|tBrs%S5MN&h
60196 zhP|WlV-R2XI5vL#R|Ddkcax4PA&clDG3kyO!*yfxAik3n(j?_FX?y~*tLm%At9nHz
60198 z-%eJ|X}T}6d1KlM_aE-uiFxRM06`I)H2J`5Cd4a>1igUZBuc`Ko)|)qu%{x1ka&y?
60199 zP5orDwS4!tO^iM@Hu`X0rQh`mj-{(K1PO`u1o~sBh6vd_7~DMB9}E9@lm3fS{TR9p
60202 z$~m{A8vmEjCE&q-chH{ynjTEOCBXk-`sX<8*$4hO(2bLd;d~sK1fgLJcwDc{RTXEv
60203 z)Kf2?bgqIFEyR*mq&PKp>)Wsse;%b52=7dXexTMk8YhaT|3p>L<7VD)fJH+s-()S`
60204 z5jflCyaMm^SVD-qh1!ymVp5u@Gs>XK)3ji+p2u2tWIuix?IBs@J3}hS!RTuO{2y5R
60206 zoR*8ClE5ZK-sJokTg`Q@L!;9ZDxD2*X0fVD21jy!zSoP2XFrQxLJG)BU%x9(1OFlb
60207 z+bN(0auzOTa>7a2;rrv}{cL)WuPkL9KQ1SnRz{Opo99i@661-wmr8gUcgagMyc#VD
60208 zIwLhTUghYx(rFd-RMdCIqu+y+zMkg{SXm5f<>U+uWi-&(?Vgx533iwS@RQr$zO(%B
60211 zW-}6Ke`e+;>=(HDfrdBAdOcs#JW*6p)b@2sVMRmY{8Z&azj`ZZ8%QM0wQ{4a(iA1p
60212 z+MrBOaXOVOZP}U{S<?gx6bkagW2ufsQjJfg+MWy+0gwJT94iV4b2-{Sn}H*&D7f{>
60213 z8}Z2-qxmBbW_Cd2_zEBj;E$K*#*t>mkixnfTy4(GcNPZ(>7EesfFv`W#T7@aw~ZLb
60215 zleR5M-~vE|x!T+*lFaf6CKi%xg148Kj2O!W6wySW8YqR6fbw5(#e}LfcxI~vbYyDi
60217 zJH5@`O<6$i!CKF_vK7^eTjp8k3o3KTrc-q@6v;Bd*(9Dzia-J+OUSfyEZd~%!FIAC
60221 z4{^$h7QPq#Ts}7&%!0Gs02jk5BniA&1>6&-6s4qKxhaC8C=}y_nyT0=Epl*5a1677
60223 zE-XJj+;aNYrU)COrKA%eY-qj;J1Evh`6stXw`_ME?_%{}f7iY7$Sl0ZqT_>etRO7$
60224 z4*c(dpsq7&?v!W>#}4n>Z3pL6R+l9KIYbYkq<A@4{e{6?Sn-|00bs*1IKb>CzVLlB
60225 zU3WpM30<w-JZf0LJz9Qtul)E^4|%z&NXEg%sJweI@#wdl7m|EDCi1yQH-?Xwy*NV?
60226 zs%Dm|>58_!g1WcgIeeOp=l0i^@5d=QKI{stnboz1#bnKmYoq+-bM^!8-{I2&&Ns8=
60227 z2Zzn$nr~Xi8=DU-YC$*Nb5E?^T9q?VbK-B}zX+&u--uZZniCUmvpI3lYc;~f7L(@0
60228 zL3b_|K1HXHP-*N$bD~>OD|Ut<7@$c_X;^Y1%3u<odu)C9XiYT;hQ_s8X|^}fuWFc)
60229 zSWdq8f$CFBrSnDS{)iThY~`Ur^JYbLS?hs~-mSgTTxTM1%<zl&k01-k^5-)Xs1YtW
60232 zA^{FtesGZA-)OU<zqNMdgWcASrd5(rEBp`R*O4Zoj}!|9tQ}@CV7mr3)A}6_{YMvf
60233 z)(?m64P?CA<%BqaVg)yQ`{wOaznCTns@OL@SyY=eCaU)z$|-NDvGK{Rz5A|RDG#JY
60234 zJp8S>L-<?0t<@VpxSnjMY$IAY`KS0VfGYvqISAZFXP!IXbkAt7)2IRN1h+NC!I^k~
60235 zGctTv)+_?8Dti3zNSA@c(yE-fn0O@QOWeslHX1%!RZYN_gjOq7(^a+CWAe|7QqsAw
60237 z2?*FS9@>jQ=VH*1j4cf8Uy{d)IeHlz@A*0N6XM-Iq2KKj{@I_nt3e2X&jYZ4P77H_
60240 z)u-1Ni!~)t5ahb!gf2|%3jX`RaNKxpGs_1MR7_~-p)!bJvtG;@v^#@rA!SBuOAFAz
60243 zVk(<hf1kVU=k`_#kb&Rvi0&5BR@s4$(F1pmkYnWihz-?^G^1{8)Sgv0b4Lu0@k1a~
60244 zQv@j?)Y6(2PsI(*X_V_6`KrjsT-HihTvBFpIih(k;j2>Kf+d2hcXqIs@Lxd=kSil$
60245 z1A4?LEEr`c2p4aLcj4u%tt<?X1M~o&`pF?G%G8jJfBe0<w>Y_;zbjIz!lgS!8;-_+
60248 z9VCbR$8(=cLst(ve=bVk*pUf*^uxr7XC`eksTevlF-BqmHWT>>g_5L5LNQ1O$bJY;
60249 zBFA@qD?-8$E(6|KLW0J%7sC(0jx{27_WMU=_*S6eUwPg4Le&EoK<1EKu8_~E9!(`@
60251 zm+vQP$VKQ~9#&t^yWHE^SO?zaMfBo5z01>H#8?HK)B#1me-{t4Ca{1yG)|~IRGC*w
60252 z<txPnny`T<l|I_<kt9dJjh0m(dYSv_#NE71pcPiLdrzeN-AwgT(Lc)P_lk?*)Q7XZ
60254 zuBXxmh-J>U^NojyjmbhpK$;l3`U8W$z_^&ddA(VB;+@^@^-c^Ub-}x@`owa(t&{OM
60256 z*nDwoxRRuBp^}Rcsq(G0(u&#W7=<Ul_u1`7`&kQ+<oU-BpIl9ZcqG`rBMu>c_UG+4
60258 z+e_R2vxA@6|IUqr>pLIc5z+$mD}mN;+-Rsy!btr7ufFGfLGt#$-uaE#<Aj7PK_#D@
60259 zQSwXZ5;nJp5q8L)<q=1|Wo%lhfEg91=4j`Jx-Fm-md(l|=oB~BA{X=F(ctl#YKtI1
60263 z7yOH}2fX|oIG>(yG<s0a-9OlW>{4xi6dmo?!O_~_X!e^uS{rGfJle!PIdQD%H3m~a
60264 z=_Cn@m>8BW<Zd5*|JCW4R7=2PAkdEiL+=!wm7wp-EU|^Hci+GKi6g*v-*zxQ(apM=
60268 z6Od%N-27=C1)KyFCytYfz?GK{Gr7h5PA9XItzN6Hea`{7qi;P}8lUA>O)o4jC9W^u
60269 z`1C^Kc)tox^55?KDs~%xH!_5}AwAX&fc!&bh|S?U&!-3ibdx!UD)M<LQl!`z8OJFa
60273 zW|JjOo)bAV$d`QJ=B1~1hHe!&k%xuCz6a$lclkNs;b;9+F46eAFXZ-?y}6VL)F=Of
60277 zaw=?&G8Xxvt|n-b!)Z<iG$}9s*t1bI$QXS3sOAGE@d1+%ai9glkYk#>$Rw=wg7cN#
60278 z$Iq=nx3B*_4@E%++@iNr%x)F3APh{VuXOFD%+_=3GkFZC$#5V%Yk%b_#x-<pW*o9J
60280 zuBWS+{9^9;>~7I-F*iSOe+5t^y>|ZDqflZt_rjQ~@twCfpW6uhsG6!QtXL3z@VD=L
60283 zZKezD&QI+>d9dQvf;ho%di6ZP*K<J6Zti7(PDx5-yZ*j|-0n&NrdnznZhh#a93BRy
60284 z|Mt#*i+z<CA$yQ(HfQLReOn?$lgJ*rM@*2yW)Ps~g^D^&ty7sO(krCNUb}YH+j-K6
60285 zb0opAA|%(s-+!l=5aOgA*ID<ddEqcnH#h|@H45dc9g9%TH`hNEqj*MfSk}0@?!5Q-
60286 z{4)m&Nhn_5{b)E!4@Wfji<^6a1~!-Sxhu_0C|q^5wB)od*f|(S{PCT?#Qu;#kZt6H
60289 z_Ncn?=+z>yVlXt__d`17O3q@&-T~n$(<ql;xmCX!YH(W~WG?MR$^Xkl9~ppHEcxb>
60292 z`rji|;Pozl-kIdX-f+0tK|8UN%WcN4^5le5zjESa27Tmzcx<>VTs2q7z$!ry!V%8K
60295 zN?k7f%=@8!fKm73>#$w`%UCmt6t`BY{!2f)8QgO#qt@--XG)K5T)g1_$g_dj4Xb)L
60296 zs<4vv-dnj{;FbaXS>H%|3uaj4fywG!{3@Wxjn{_IegCUUR`<Kj`fM71h8C0h$vw*_
60298 z>Owbn@w{{M8x9N|)>B}$GpeU_Z|;}FbhMl)rmcb-H6p}5OgxXAM|NM`P6rk4HxFO{
60302 zIPA8e<vmg3==Wx=?$}bC>7bmTlbr-)+FFbeBo&*aGzae-#Bpcq6?N-ig=1m76I9^<
60305 zVn7?N)*mzkF`Jknj%r+~&C&)|nLmgB4zh`Czq)K=<GQ6XYhPkmI6-@cu9;K}H_=V}
60308 zSAyAtJ72<v_y9z<)<|EjI2b<7kFKJtll<rzEdytzYv7--2hR-JQ-_aH6a!QN#*P~Y
60309 zZUhd*d{#Gx<8UlbU=@aCBvNF}EuT*63BOT%<Yjl#JP=sguoxO9d3Ang!6+-`bG0pl
60311 z1Uz}IZV<YT^D#6=l0g-%Y?m9W4~$@81IBMTk6|FINAX*}Zj%(;shW~ib1SJ8Yw<>#
60313 zZx`KbJ~h-m8{G?#YP^hN;!d8C8>(}RP?DMnR;CD=!d>0!DfXq?w=Y<bJ(8Jg-R4nB
60314 zNyJ^6o#=yn-Jyi;?xLCHWD!Mkf@eve{^<D^%grUl+PiY?(197*O#VWxw40C;Ojb*M
60315 z^Ao^P4Vo7cWvzMNAj%E>&-hOwJ?N9QgWQnuc5_2Lq}QmG{L{H1?5u<>WRp{Ap(7W@
60319 zV;>u{z&johQ{}8#N{;QoXYns1D~LJL(gGiw>b@0p1)EmY=W9d5HDY=sa0G2m{Q-rJ
60324 zlroc0<t2U5&9Q>c=nBOV3?C>x$m&0Ze;;7=-B*Y9TXcM2C)ONapEQ1VA<s$TP*bmG
60325 zw-*sb8kULyRisF|1F8u1Hq>vez8ShZD+U*OJBM02Z<H>SichVT&KE;b2LzdkB?i4)
60327 z`aI2|7_BHuzgYQ+k1RmRd3-c{xaP;@An;08wPZz*6e7&96i{rxo7vBJw{91UmkY)3
60330 zRn@uh-e;cY@y_!+)ve*y*mbL_=dNygpn-0h8H7fG2E+jf;sDVEoT8!_jWL=*MZgIK
60332 zw}!ozo<2TT*fpC!4f<gr_z->XsDmW&pXDGKnlML_PzB8MjP8-~6epu8Qw%R#n%2tf
60334 z1+TiXc4)c0)jdLdfqppj0L%yGnbeQz9+{n<=#F{-hUUjn(HO$XEvw^9u94Pu#}Fx=
60335 z;(5l=^=7I*+icD?#yF&LBXV?B+*F!pC6e6g73nn!ZT;jWk1aPY!jV_q<?-(FSRd=x
60337 zkr3X~Rz~O%nM-I4&5*R9SZb<2B!<ATDJ!{a$COy8IUI{nH^eLCG{;CQR!SW1UH$5-
60338 z4%80r8=;9%j^&SBFfUhn^;qoq!PM^h05NRwk2rJ>5eMy<#k2TFu6ZU?-W5T!3j*5A
60340 z?7q6kjqDz5&`VwWbN4URu|dzw)ZFHne_-m^%db9EtL!gYHLHL3;v$I%<mYo2PxOz@
60344 ztHA-RqT*=K)c~!f&Y_|P@tz0Zfi0j7Z=f^rlu<p^J(r@&i%LP@35d-yRAAT}*;hhL
60345 zkL{?xA|sldpi)ToCH+!}-du(frBGj8PFPAdp1Yt@FU5~sdF7G#kwcXO#c+RNn&h;C
60346 zojuroeN9VSi3{e7CuT0WHsOXCPLbltO=>F+F5gaf!FC*6-VcJylm8zMF2{=)`=UmJ
60347 z%Qxg9wFxJj)e^fAUhY#I3u!@h484`f)zj%l-Yl7Ti*s_`?d<kzdSxue^Ae()(rOQ5
60348 z%uQ_&W1ie$-0{dOuB})17t7s3eynWQZ7e8rW;-!^FwwMH+s5LFYmX*&&P<$`*&Jw&
60350 zy<4Y)UC-K5a?k3LT^OfCo+OFD)`qtIY)=^AOIXVkFRQP->sR{8g`-PLcZGaWN@&H4
60352 zqR-Q;vzy|+jp><$YLGO`QH*Qojf7s%r*93#2f`Y$rWq^pio=O`Z4DSBj{K(FcCA(q
60353 zBEQW-Ceuo5x$2_2<I-y{&5a$ely;@9Di$P2(zbI5eI&bfx+a@tH+S`FdPj92X(tWO
60355 zZ6IVil&?H5W-Py7UOuSV36&zHX7@Cx&dro!)A7pe_|f9wTP|uM1{sniSVu-3360wB
60356 z%k1RhCEIsizvBf9rvY{x$a)!dH<$)a-)tm_4Qs_ToZcGAIvJ&|J~O%+OczJ7#;w&!
60361 z7to4)1kLpkavDj48~TDCK)y1hHuCX>*>nIE)c-gwJ;Z6ZPfH`GV+*5g2KnU?^WT&O
60362 zV~`PzWuk=QXN>AV|Jz|bjUbB_-jk`x+<2?pL~lgrEk0JVc2C46V!4%s5|eq=@EXNi
60363 z4hpVl7&BSjnoAtUtVv5*nUY^Lb=`}_56q-iJ6^|2&u7$>O7@GXM&a6Bf+<i;R%@m1
60365 zJG|1Md7dJm9IK|rvAW!>C<m953uyc9-Z<@;t6V-+*t^sgjcR|g`n(%Yq$VRJ`Fqs$
60367 zW<k|r30D&wp}UNh@6zkG@4jez6q{YSyk|_!P8KP(v1{)5>u<=+MX%-^)U{}XK8NW{
60372 zef=Mzr~d&zjoO5<L#I%i&qi&C^)E(kz8JL$-JGvOZT=u^vwm#tyJ4HP??!FHb0RmR
60374 z2^~lG-yikyZ|g6L`gl>)M;NsGLDc5AgElv<YrqV9F$1EZHo=)sdJeUDENXMb`n#fj
60375 z-WBx|MghDWwfTH7mYaU}Z=)7}JEVQs=4GhO7s58b^UbKuH-~Kkk2yVs+I%tmuC-6D
60376 zzddU8_UOC9v)dm+Z61l{^{I6^Y9mK&!eFQ;QJde3-qm&McGSj>+5~P4T0(8U67}=o
60377 z`t?zp>!UWIar=)@o3BP~o?fp-ZE8`Q(3JI;sLh`RZEk(~wV)8vurQ!uXtVetYV-B5
60380 zlGv!gfp2^$#qqwA+vZX%DM+khW-U1`SK93&p%a9ae=)8zQ>m0ntVk;yM^|U!dRj<N
60384 zB7UP^RRaC@Y^8r=p046-PFn-9CMU{KouA%F8m~Zx6KZli?H=e=+d?Xl?TCEJu2!0s
60385 z<CRu>+p7r$VQ+C_Ipt1e{gSKdb}gZ0&4osHwcOgDnP_Gj`BE%}meIehf1P*%-e#l_
60387 zO^g@3UOIF1rfjZQDNV;Fs)_Bj(uv7Vu{fzK-^r}Z7UE9Ub1M5YJ#T!@E9zAzjZ~5D
60389 zkCtdIOk=A_&y>b?b{c}|mD!cCb|$rvvTG!b?Q_pz>rS^i6UAptV4Lv%nKu-9yc8v{
60390 zEzIO%(_@D-=as!Sp~(r~)YP~fX0Htw%;jJlls^(f+yg-(|KKGbgArK&2n>&L@#x1m
60398 zF-7$%mEwpDn#YySn{hNv`TS(iJeV&PGAYN}$nQFs{IiioG);R6y_@3{_Phkr?gcZ`
60400 zD0wD{6a8;S^E-2)-?K=b;_+#(rWYqH&ia0A(r?w{PRe!5E+nr#FZm;wyw%Dp8YD&E
60402 zE{R6#w;)M0RU#PTjKYXZyY2j_ILf;JsEMjPUL1&{=>$Q+vq~gNSK{f-GAXHx30bl=
60404 z&+pq*Uhbz=j}5_>u=pGj8=KzomU3)^YHUH!(ca?G*5$`KS%JxLOwFstGs$?hd)-B8
60405 zFDJ`IJ$|sV;4~bD9H-~}Zr0G9qHk7$@MxUv_7eCoNP#Q+lE-0}#i}R}14p+D@UaLO
60407 zNGxU2GiZw}UU&oT+lOZgO)I7e<*J-_qrqPd6~tsdKJZCJ$u$wz$GL+E>LfFKOL9;o
60412 zn!gdhCj8vVjpwlMb|HF>z(+vQ8il;bL-Af93cM)XGtvzRdO<Hx0OV*V_+766jB!o@
60413 zilu4lwzKpFSkx7JuC8z?^}XlQ6?#O#3xpHU0y(W)Qn(5Tq;M$S-?z~jOVRiKSiMCK
60418 z{XAW*9>u2JUNr-Sc1z2~%vy%D#H1owWX5eH;Ereb3it#lf)03DUlbt0z*QGAa9=pV
60423 zx9|~>)?9n8RLG_sOBTa4N5UqbR8-qwNTNWDZD!lW?odH;oNRKk5HI9iJuVbPqoA+6
60427 zv{araU48q>iE4c6#N0)*#Y-=oD#RPd8#8gAl9qc~ZRbp9mtSgTtl0J{TX@R@<0pIj
60428 zw>9kUi*G7SzEg`A(DItXc|iVpeI5P-d>mB4_9wE2h}}tO{Un1hpQsENyl?1>RX2b3
60430 z@S2)v^F+PXzcN>ypN84&Ou;MIMFI(Jo#%~aP9s@UXAp9dDy{zUSf-%hI+E)@B+Br2
60433 zC-ZSP>zQedq+g!gmo8-#&Jijum(I})%~-f{_}D*9ri^^u+O^krVlwGxev3%kZr9`z
60437 zs*CV{c)=khZ(js^V-f3vSPw^{6F~aL&6+_rYJtl<K#Hayjbj>U1Sf_K`<2t%Fu1e(
60438 zk(x(S$B-zduLd+l9}bm*Y#Q5X0vNVMDZt3%%(x>6Q^FzOa~-1?S0mIBOLDp>X_BAy
60439 z_qXlROtE3P`5fQDpu?-hDMQXmyuQm7Ib2o>QK$=lGpN`6XfXYcS~wN{YWyP>BFum!
60440 zIEz1i@pwH@NV_`8(m}=4&15OEXl7`xh>wgkr%`h-+PGgkM>}%BZ<qnUaW{%WXOn>{
60441 z85M;d+bCE&iclPP0L${s0HTD!m6%kLl1W>gB(4dKUX7CSP2S`eFMK<KD4wTS)0kX-
60442 zx_BaI$8bSt2pM;bB;joNV;G{yd_vC^5#9b2$;D3vW}G?jnvcyWBOs-M)(f^}-8(=R
60444 z3T2E+>bK2hx5Z7F=2%Zos74L$Z5&%|)nmQu=XnhitJQQ=Dn9P6URg}!_ajtNY-^^B
60445 zy0<Hu>HR%|C6?vxKNP@{FdFO-sDWu54VDa|!R+T44K~q57^DVk8-Y@bM3|^;>a;Ma
60446 z=xQTSDvXrERT+^wMbSuMikp@wk_eKRTJP$~m25t~uR9EuTAY*PN)RnI-ciasrgt8j
60447 zsk-qM1Vir59qF{M?k;cNnScIdbx&*~U}{><V8sQk6!;N@M#|vgC$ez^=Zak&0I(sS
60448 z*&G}jAH8v=D0$bBrLYpz(4^9f;Ao3P@Px!K9pRHS5eVO!t4ndY{rqck-rhsob&im9
60449 zTVU1Hu@l)U;ZLM$SKKj^t%@9Hk2fH%n!LcJvmVP)f~8WlT-slnI5ruv(>KFqkojpA
60451 z#PggXUK-8qzM#<8@xG!UFlHi==m&Mpf1Hy+>7*nu)TTEz9QsfWZV19?oz|xdrJc!q
60453 zK>~581#n|u&>)2*JfsH_J~3puB;qn8y@f?*PrnVeaAqvErl-n96M+ww0STC3hligK
60454 zR}KrDY$|MjRs=ZUN|uAz5R>qhc4ra%%k}E19rFk8-RWi){A?}e=6y3~5zNc{i;Kxp
60457 zJcI|*!Vl4--*lS!Ys*vk#KYw9seyrL>(c{U)s}~`0d4-YhjDfn5sq{Mc=7Cg;N`Rg
60458 zScYQQ+t8w+sZ-CfqYmn5=d<ew5g#7g+FcMJzH6f+hNACz&OII5Fq@5cvEi&-%%&6Z
60460 zt-NTHl>_5h(l$kop;XDLjs@aZbVY}vMO#n8_#7lT(b3aI$%#3ANn$9=O!sn;XXRG-
60461 zLZnRY>TlPPAdL%15Y-S<AQ1GRRyS;8bOc4HO{QxIN`*A~ZdJmrVrG-87_;6%#n+Ij
60462 zjX=~v-YM*nam(GfUzF5h4BN=;i#magjFwqZmZYSmOC}OI)L6f&>n)jW&du4T$EMR8
60463 z1~W(+a#E5RT0sbsNVeMPOz823x5598INdB*?k{>6$}@OoBt-<$g#h<Nz7|}u3k(Z1
60464 zwGfnQ&9-JIx`m8oU=YP_@u!``_{9z)JBBteH}Ig%<OrJZ%|yZ)&$K4<BuQ#XEi1DM
60465 zBT40Hqu}Y^3d~_5p9s8W3od#Q`k0@)IOnC8y9jd9-WY{|5yzMn4Li&d*}T^(q!f?$
60467 zTzg9>D?tmgG<JM%eA-k}iV_!v@f~|JjEHlzYl_S(v!@mkp1_f@Z6$MM#i}j1%{<4)
60468 zTMR2(W_#S@4VvO9TA(O_XCQAhJe%VwQdCgyG)p(fG|sVE*%Pdsswta-mBzsm*wJ6c
60469 zuHzz-M8x^Jj~5qOjb!5d0+vP`ha&+?>@z!#dj~6*O%~@|w<IawS=wKc;|?Nq*@M?+
60475 z=S~a6nY^^T-1ghavqj-xK{LKd(A1xcpc#kb=PzhV=PPMsF)6z|ud)<JjW1QsC2CTV
60477 zu)K-QR4gx-Hroj-Y$!&Ggbgb)mEMN5G2|+iHkJ99RZSHy&sjbeH3Vx1qK0B9KQ}6C
60481 z?ZVjkkV=)2Vv1<hO)9L!SUDvm)~H;c0L#xhB&@&f$Cv5nDb(wI-%N=Ep`P{Zq64Y(
60482 zlIl8=7Fl;gs{78N1xoNXi*;-kx(vP;<Z$kUL=eEI{FrGsa8wCWM{+QCS|0MSiqGiD
60486 z|Ew)NKGM+;^^-6;bc#j};?0pxWi*vC$LW{-=7Zyu=R}cC8OLJ2<VrMMU(OW{HK@3W
60490 zYdg6%9gK5tUUx*+rB$?ckwo2{GTdmG0w))>V4#(_Z2Kj@<Lp&<8S1=XQtg<ayV-D@
60491 z>+2x;k6_4IycE~Jg??w@DUb#i_r-)r{3O;wv=h@XO>Zi1KGlorX}QjDS+h*G=%$VK
60499 zy~_kglr2Jlzi<~J3U9gP<iT-~QN@>Ygs#%7p{a4N3k_3KjN2TDM6-5k;C`YY!9xxb
60500 z+)0KepbP~O;utp(sJf`$2y|c?x_P4w6$M;v4R*w8(3xpy_u}4AxA*)Q-5u-Cee$Uf
60503 zgX3DlSRTwi5nsZbYGAN-96HiU*l+_yZYLVYi3BVTZ>ph>jqHXDFSPSxCeRCf<6)Rx
60509 zry15#6tuT9S^|jx#D`2)5eQb5EqSiZr+;|I`+jTfpFjA)-S-`T^{@Z?`+jrZ8{hbs
60511 zPd?&Ec$Gu}KiGsDAgL`JN?-+Dl#)ot6=i~HmNZyZHH9JsiDH^AQVc~F@hpvJwXAOP
60512 z<ku;ZB}s;n%Xx;RRY$8mBGYJ>=#@NTUjnHz4IyA-4HIK(LT}^1-6z(c0DI6M5phil
60513 zb4|9~EBD-<%eriNo3OA=SllLVL;vm(78eEl3;Gu^pxf8~j=h<<3#?#Up&WqBJS6v?
60514 z+3!ez`Pts2se%<^8H+7ChgfqfsA|~531kX|EeRK*ykzd6fPG{?L6hHp^rc4^;-#WU
60515 zA%^|>k6iv<*n!k%XJQpqcUd;2=l911sM-c4W!zXXrN{Gz5;t?Ilk*S$&L98Tmt6|m
60517 z084n@;(5(mm%$RT6wW(X1H*ZT37ejA+6+Yz3v;h{+4NKf&ARZ=mtK7H_rCv~-+NQ(
60518 znP;7iy?5=JwYotFqFD45OW-((5ez?-HJ*9as<3>lf#&?`^_OxtBZXoQOg&LR_ys~{
60519 zPbl$nXtD%N0Qz1)Qv^-j!$O8)?#J*P8(o5^(S48UsAVaLWk=0Pq>Ba3$zk)zL=&~f
60520 zrn<%%TLYG2D3-YwFwCnqKZAp#yJ56EHiiHkjEOTJ-17`i;vmlRd<blfw?}Yn_s;Fh
60521 z3v-j*9ai4v*jR8hIz&H1Ppli%@GNXP5tth)90;ccJ0a2^ae^T9!XGxQx;Hk)r88V%
60523 zH-%!3Nz{IxAK&XVXv%Yafu~rW(sJFEI;XO{NeHnCg+p+7EHPa)k(R_!3_~W>gdF48
60525 zJAvVii?1o{QP^@qrEjNG5ES#NTDqnx0*7>-!1bFAQB8EhoSj1Wz7V2Gil(UYcy#Uv
60526 zr&@x|OAeWhLZ{K|>R*Sy{jG1oi3`x)P>-&?XYGgR&)nT+W;~gjO&*+T+lxDs<y{k<
60527 z4wv_1lL^EUla-}dEPews(Q_IZBc}eJGtJx9|AN1TU=ZlL0NnM_7^H`;fC3;H#M~Hy
60528 zxessl`#4Akfo7*gdY-iz(iJWqjr8pMi`yXBy>r_Iix-Twi+RLxf}A{jz$3AmIj9O;
60529 z7`hQ0cMt(Q2s_%~kl}WMVbsyU(vDEkP2c~-Cw_@J{41BvpE!JM_DgWvsZ+n%n_gx_
60532 zxetyYIw${=>AbQ8!Rp?nBP&NHx|LGQLv-%L{#ogK-lQHsPg-{otUO<G>zzyY)DgWC
60534 zK>~*7?gboVICu{ZxMV3BN7vy*5JAW?zd2-Ch>ABKI<UHTes+3lqT8&Oi@A&{g3I6u
60536 z-_K8f2mZz%e(*1fPDzO&WXEOe&NNb`MOV+19l^J~oSbx4yPDOQ${4yglT5m-%w`lX
60541 z<@DsG-Iz<cZ54`B%Zt|J4jdZ&R@CGDsK*?r_DhMtBj!p$zE-$rt1Uk6TSic7X5>qQ
60543 zT1KDV(L%$z9S!SUXjmO^)4s>b_yk-9+p1S{aZd^Aei3`(r+r55ITkiHF%~AkG3=ox
60544 zt_tGIkiujImn0xg;$LuJLr@GttXIoL9JxVlOl@FC2|!XbH#XF}-2gE$`Ft?XYfXZn
60545 zS(;#FLqsTpDa5jPS(B8eC6l5-mpX3D_DTXt%QUH%6Un_hY%xQN#X6)NJ(nCK9A9C%
60549 z@VNk6O=?Mw0SZ*GpP`%^_4GuJhT(A-Z)~d79*a%n3&n+AB~i1}o+Q`Asrud%msR(T
60551 z^%=nIXaQIQk0iq!mKmNVD6Os6^97pa^-fjonL5(QDYPaG3hMnGesO135M(967Bxb*
60554 zeW^)lUDeos*+ubfcQ1-@h4Ou-dAzB0bKCim5!XPoFXTO3j4Fxf7>xS#>{V!-HBbxq
60555 z1|H;OZ!k702-rkxG2f!f`EZ=CA(43TwAl(Hk{Z;#m`NHsM?l>q1>TRxOo|X}L96N{
60557 zqH<Hg%MTVN6)sE)4ige46S+*HoGh0rbhsSI$uP-w<N<TSL$r8t_9mjhrfm|%AYNNk
60558 zjdCnDmQQ9i8tIoTAzrP!{FIY4H42Jj3-h)n%K1!g-(>dSu2xx@<WgUzsKYtk67lK3
60561 zVj?6klT-4E!v3AkSY5U`=){w3ZYIz0hG^3eNqi^PGGV8mp;*?nrgl!C*YhI4A_?>`
60562 z@If6s5*lb_H;6ebCq<--?u~~`9eoH#KHPLo?mc!aeAFT7&{~FnqE`v=>G8lhiu-Vb
60563 zySVd{(S0hirp4(X-8~MZM=JuJ9OY2h8yb%VM;+_&x@`g<`a>=?)eDSjL#sLt_`plT
60567 z=5@`XAjj&KBP))`(@s?}l!}+wfd>A{^&cR%@hBJv7xl%8fzQxKXXt9dp)w?zNg_x-
60569 zV+Dib8HOV%Ly{apq3o=k#480-49`F#y}MSM(=tnSUJ|lisbjDyTeC^pQq{cWPS@g;
60574 zcsQ1tN9-e^s0rDvn4&A@Tn18-h(_&n)#`Wweba~0H(i6ise&cB7{JwpeipczPWkRA
60576 z&#5d_Y=LIn9Jw-15ORzyb@OPPZ$smJ5gO+N&gs|S2nr1p4R<eQ-6T%I1uqW5ior1q
60577 z<EX3XAgxKOS+C;INY^nmW|U_~9NP(_;#?~-i$<3NM2gn6#q8A3=HNJ5VnmvxRnC_v
60578 zmee8Um82->Sm5hqvY?xa=`#?bMrvA3HKsdSPKHu~<qg)5AuBVKKvRs!x*BYCEkPkQ
60580 z{vd*MBzBY>#H7d&6bt$6ASvJ|uH6VR-vVsM(dSev<EM*Wc`nVN7tGTFGvlS)Ot$6Z
60585 znm{K7LK8%pf{xEL7A-T*W$<Cj2hmc#1#Qw2Lf)1TA@9O@A#WV~nH(VRQ5`;DbK~2H
60586 z-gr1t7KbgH6i3@>k>&{!%NI*VGL@9FNtUNM3f-&tHcL^WBTil5%O*|9d0A{#lC#Oe
60587 z#d|fu6HyPsrPE!V9T{{JaTc){$Gc@UjksSpatYJ&zF}nmVR-qXup~eeG}E{wK%_7r
60589 zrzlvfwCQ}a#CVS4dJ0-4HHqT#n%wKp8T*ljujO>KmEMO|$96Oi4-~+4_?Rz2QUNO8
60590 zNZf$K*r?N@-J($Q%m4vXrw6e`!RB(z&!qf9tWYe55FVej$md4!frZ}@hHC@YXG=ud
60593 z(g=t+IV*_-jTQl9sZ>!B9G0VHN#T*QXT?~9EVOM=;{x%^W!0H0(yEbyv@an}NRio!
60596 z$yg`e3Bf%(3hsLYbUz5^#>-`VfbN6CI{{xB^W%lGAaDdbR#sA;hA^|ks1_sgw!-@^
60598 zt!Kje_4o$XFK;aKaFLt_^%>@X#-$xwkW=j#r=UM9$J)H^i?X5T1cdlxp}v<U+k1Rg
60599 zQarz%A}B@`OacKyMds0xVbS83(g)E%--EFIDL4(rz-4_=3*M~j1R1SsoAPi1EZ&Ke
60600 z!z!)GjXaz|j$>@K!;P-O6`-T6c4J^H!1%aQD?5tt16DhXdpRBA<9Y97XqwS7p04pa
60604 zar+iek%JoHXdntuFcQWtf=Mi!0<+rhD2=pQ%~O22dF(TK#S@%nmhfv{acO-Wd~1CT
60605 z?k3(zFyNO1PwETN^*;vJ?+C6J*Vl+#aQ)8UI)PrA7+k-5%k{4X*H^Bu!}kZ*@4*We
60607 z_(TcOgx6|0$}2nhdGxh$cq_b&n1U>jz-QMM0RK3EA75JttA(IpcxV`(Bi7Jx$AV#$
60612 zEUn-=In5mR@sOYX5gPJgG-M5Ya{X{blEcF(#o;I6Wk>;Hfet>kc2{_R?XKbd#+m{<
60613 z>jiWlt%3E`==s%X$^^)-T>`$m{w~ye25=ws5C+5Hw&mW`#N=cT;|E-mgkc9CIQRpW
60616 z8iDO6_cAzP6Fy`gRl^=8)C5@Z43S}_P^|>HL&=H2Z#f>QR-u(}h%|;kV_;Z*CoE6P
60617 zkm3DO-H;?2!9z+jv|>J?)Gc19_^BPK9TM3<QX}7@Xh|{aWsjyrPEZNOwhRPj=u}P7
60623 z1AH5N6Z{SMOYrC5Pth|3`t(-B)C_bVr{AnY2b$p3;FUl?ec;plELe@7$JfX|{?{A}
60631 zHx*SFS8B=Rwp?z)5>#q(A||Jef-F}X1<sZwU8ptcbz4+ZiDup5?MzmR#pH5=D~?Zj
60632 z>1of;3Dz1Tu^dvec#)$BQ_EP~OoH3J?e06tcieerr#-9a1zw^)BbPis#fYxwxw2Ms
60633 zimJ#b5*(XMaBy8@U`ON7rJSoeaaQ(R*OTa!-~DEx(=2B@o&&!@%-*$lk5TF}PC7#)
60634 zZJ6g3hh-&(k~r7pl-YLmuDjRny5ypF?Ek>!L>4V>jw>c-4JKXH(%nV9E-DpOM%slZ
60635 zC-pqTHH%e)=R_?-yy08#X&=)VTIZXE!qwZhy>uqs^Vk$(?^53D*o>RW@J_K~$ZAEA
60636 zYWntODv?exQn6N)Jc(6ViE7_+>kYMuL-9nG<|U1q@;%QJ=!DyLd5hZp)a~CqNF9Fi
60637 zslTBV*;_#>{|}|Os%Zp`gG-QN#0w%t$CS8YSCWEnYUrP~X|!Wn*@y{=l9zR5q-O8}
60639 z-9_y|Joy3eDEJEa9@?p8_&=8B&>n?|qtO7L`H=zE9exG80USkplSW)l2LBEGe!wqP
60640 zq}-f9dllC((7``~Z-B3ZuYo@Te*nG!K8^M*&d6~$xEXO&2mOZBGsGD(kPjHTh&X5&
60641 zOJ20M5uygGA>&*HG(+D9M07(0_u7~<agbCA@)-Iyol^CaEM{p?qu@!!AtVbLgk+p_
60642 zp=R;~A!-Oj$ue^l=5{jXp4j@f|MWi3+L;-4224UTPh#T>Bt&v^r~M;m=#K$1$;c<4
60644 z@Jp!Wqp1C(;OD{p;7-I%UkGjk&jZ&YUV1r_ZHK`s*bByyqTa+Oy^-Yd5w-y6ZA0|e
60646 zVD^c5S&J&OxR(LP9FN#4eFn~nzc@f;0poOO)F9GgLf*NVbw-?X;8BNRTF=1TI?6Uf
60647 zdj$?6LBGPdRxa%+?#OM|CMR7nW0qxgV$$$sK^N=jKTXpy`!fYUpXHs-j4-*oobLJK
60648 zx}}wFoV>PqytZozF~GbpNu_E*i0QJ0d9G-PVoWYLO^3CU3D$7trgFF3Gj|jGZAn#Y
60650 zDK{;!IhPf4oiUcj{8E-$t*;|i>1PU^v9+6yzv=e<=H#SorW9;D<XBtfSec?tL5Z;<
60651 zO?N8l%kF*A+Fcq=CX&}r+`Z?G*Kui9u*HJkb?Hpq@G~7x(#wie*SgyfXihLvtyN-8
60653 zUE*ztcXi_R-+XW97&TR^F7O7m<L$rv`WKh!1K<AkgOtOmb7+Q$efs~QBxG4fFbVTL
60654 zljS6qBy=_H%S~J*JucZu12xrDj7O+E#U<-jDw&3mlQ_=6ER|#EM4~vBD|r57CO7t@
60655 z*SFvHsn4CDG|8JwdMsj*9-T6bJg+i{Z@&K9-`#`s%m20hUHb2-Z-J{2ySoi-wzs0~
60657 zsAcH`-~|ZrV6Mp^?$<#o3K8(z=LdVY3o3}qV&3^7@HpD*H-VFg@6Li5#6@!;i+ClA
60658 z?mh~B6Fr50{{i?O_-8bT|B0~bZ-7@I4AloQw9_$~6~R9sluIDQDuZRT;|au<46ug!
60662 zMzarbIBYhKB2tzf{Xc=e*y@9*`z7=<3%s8Qm7VjZatl%U@t-=Cwf__<kJ6Y$G|v1q
60663 zX$-%H{>^NnG(AG;rH?#oA`eK+qoHz$<k+;pqTkPt)XM*lNbNowQXe}OWzl*GHV{C9
60667 zBA_v_K#^JHr!*F{GL~+GUx$AVKLtMt-v-|bUkP6UuY=dZgYW{l0Ow&H)}W2BI<~I=
60668 z3;Z5x`CZihyYT;le*ixNe-}OV74+;^;3we6;d|h(p&lMb{X7m|3m-&1J%svu2=(?7
60670 zz3flHSCRhphe-SSFW@8K!{FDzuY%VhJ>h<&qTC5yf;5B6z$HkNn?ia)3p79(6wxMY
60671 z;q6$b%V8jGnZ=p_g4yLLG_gF0<te*?O{M3C9!&Ie9LF;ELhFe;{9y;c-YqLc9sz4M
60672 z?6+*94)8gdiQq>V1{m5hBI8ETD;d}{Ha-l~WDLSx*d9)qfiOCakh|M;;OI?^+4EB)
60673 z&xh6-w>Pz6u5{gQF=)clJ*+-->7YB-p}UbEu-wD0O5B$2j&{wk7MmiABc{)C4^M>+
60674 z9t=8*3^qYup^8#QLkf>#IIufN2M}hK3@tc8Bh-eB{MPt7S5`=T+`EWf!dNlO<=8O5
60675 zxrZ}FI8GEWhe(TtI5-$l9{R!^2M>pJ!n4t#rsS3pC5reI6vNVG+z4q*SWgNLC|NA=
60676 zxwPq-@#zY^SDIdu4@~*#cxL_(OC_hu{zcrLPA09d$P@L<j60c5#o1)9M6Sw{+oc0N
60680 zCDZ)Vf03w|v!&97t<@tFx8F9lyxb?B?r+a^oMh45Jvnh|j?7*EqFdJXd-1eor8Cd(
60682 z@T5p_4AMKq<m@yjm?_ocWLC|l&D_-5Ekaz?MMYVF6seXHine^+Y-0QXdVm(`WNeHw
60683 zi(@f+tRA09Ykp2s6n5$QUtXH@ld-kGR%?~`bYdns+cj4+6BAFrW0v9EH2H$K?CA>e
60686 zO_a>ZoD<8e{SABJukL?1HIeC+%(?2}Lh0i675&PX`_h-bclHs5Sc*Fi>!*x4e(kMj
60687 z6--~8oGJAZ+v`Wid3N%Ki5r@;c5#t}nwF-=wq5MRTDcfg$-Sv7(2Sw!)ix`e{Nd6{
60688 zO-PH>2Q0xAMVl+QM#fy4oSmk&P1n1&DR`>ta=fVIQr1ew^x_HENj6xKw~W6`s}qHU
60689 zPB4tXJED_HW^mkGQ>0_2#*vhXBR&?IYfnv2##SfBZ<!-#s&vKd?fWNEDfq%AO5z-v
60690 zSXj&TD{4m1-8gyM0+qkvj$5jo+1U3eLE=1rCp3z2B`w>Xxr#ei`*g4aXsP|#>a1_K
60691 zas<J#R?IJ$B)PEolwOobb?wDUvW|9^*-p;&E?WAH+it%qE?TZa&dsuHEb-)&mx^iq
60692 zB}Uh>4mRI`7<E5=E2tyPbt2SE;k)|jH~iem!*etbZ@c2sJv-ZZmgDFGLs0Cl7C}<f
60694 z+6B$xpsDlj!wHIQ4*H-u_TJ~v2~MiF?HM|uN#dS!_0nHFTL&~n-g6#31aX_i+i%~!
60695 z8-lk!^ozgnnpfZc^SA%}{rBDR!pkq)ePZ{C|A)Od0h8k@&qiyn>grm%s=Jon_kGr0
60696 zXL@G3M>Cp{G};$Smb}TbE!nay+kzNd7#VEG5XTpY!)n%;A3_Wf#9)UQhY-PahzW!^
60697 z2>~bgzi|jp@Xh0!n1n@E-*c)?_w<ZrgdO02^8C+_%v3L5pXEE>Ip2G>_bZnSKL%ie
60699 z)mnc`0WPXRZ>L>U5V1Jo?+pvAoSHAk6K~zPU-RoS@0I*|?yYZ4#COfftRSeb{64WU
60701 zVR0$CYbG?`Iy|@G>Z$qA#x3VRgEx0gow#MomRnA=_Sm-9&#J_YTz;`p8?PK3+L1^l
60704 zGn1(ltW24FWnX~!1epqt%+4M-FxwdorAar43vm<W#ip^T&y6MF5n0#ZUfoSUmd2*>
60705 zX>wJJnSOiL5Eu6}Sw~m@`lpZl%dxhZVz{X5HOorG48ibf1Ru{?$;{2WGdW!n!X8o-
60706 zNy0LQ4(vT*TRze($sT?vlenarDQSw&H&KWcybO<%YW`p)9!p)fDW39y-%&z7NmF5S
60707 zWXs~gV9;hMPbvyVo!zGkxttpvm57iZ#p<BqBQf7=tT@MDb-Ye42WwkCl$Xh(sEz}b
60709 zjpulVCn#lT+fvECb*~-q`NRnAEu<MLY#5FB?7?U-?j_ZQExVVtf-3$1R53uwV7d(2
60710 zHm<$)DmL-v$|@otwtgMKYj-W2@p5!p9Ntn)js;4(MsmK8q1}0Hq?pbH!ya4|3EVV{
60712 zfl9vR(84XVE;TLrKI%4X3e>ZjdaX9hQ1Bvs--df}1QArtqKyN$zUx$$WwMf1Jk^=M
60713 zJHH_VCdL7hvE`w#-x`}t3c003gTqAuRXE*-6=pVWc=LOH3;1(I@zpakmkrPPbdvN{
60715 z@@m#P#1THwy5Mc7ru%OBVEI5M1WHVL_H4;+&8D{}y&jg67!NLqI6fR`rQY0V!P-t-
60716 zJw1L4VM@VtV($3xtmX%`-SV6B$;D)%ll1c7H!Q{FQxsVNEqv=Js_Nc5cUd|N3HG1e
60717 z?+}N{H(|3_^|4CYxsPnQbwzZ!PF?x_+t)jlltgS6pY2uBt&Y1vl0nyu)-vOMHQ64W
60718 z8R3n}Q$yLv&IG6&!H|3=Ek?^R-==!HU}{dM1w)i=Tg})V?HNBcyGhsP;w8~i)Qs0R
60723 zSL*&TktL5~+p%Ojw&>jQY2-kwFSjp_X+CT_zMbqdxz`5zZ6@i`64VA`K`a|G>bovj
60724 zV0woTTx?P=)(s&S4rh2@K-Iux9W*%MiA8qhw`Vd-X@O%yu5k|;lj)S(nUkG@$IF?j
60725 zFJ}x%v1quXgsixlP?P{8_!OJ>iiC&p`uX%^V{2wH5uZ%}i+6`Kdeo}-M>IA%ni7&e
60727 zwry^9x|M?mn|pz)SGcgg($?`}=pGvi&y>jw6B5b!d6u{MWxp1-q?ECiXX{)RO(&V+
60728 z##F8*M}m@E)XcD8OY;nF6{mfEFrD%8%kHkcl-7&JS`M$VJCZC4q%s_eW*EVglX02R
60729 zyc1Mn`^M6M|C_@uX$x&9a^mQKr~fbNZVsE9ZZ&G@W!<ge7#-VN%UdjK%^^dDSoK0L
60730 znc18P@aBbHa`;Gjt_Ia*496#Lkd?LEWnwnr_gZVXOKl-pg(@=az)H8d83P0928Ypo
60731 zJfV}n7>{>nX0i!Sq~n|E^*w4|M{8)vSfQeT-gB>|H*J`EV-C4j-@C?|2|2rz<Uv2W
60733 zn2NTAj-#+4U{3^cyaAVUlf=mjf>REBv6j+irkZu2v;};DUdti(fb=^4*gc{(ptB3y
60735 zEeyrt8HS-P394-Vo@0>}ZhI>R{IP3dqlv!v*5N7Ddwa1N2Ja7ok0}(QXpLyeu=@em
60736 zz7^j}ujkq?;@1bw%UPL3?r)`+=hLG-7hkk}-V0p($dSypacE&uSXc5Pk_+f&u@f<U
60738 zwc|s8SNpJi3-g^B>gS?@e%Sf7V8L2SazO%3(`$o-+Z5F&(IR^xN=R<b<?C|Pgd>*{
60740 zc5?xk-4eW!x>QLy5Mo{9az`(pitWSq(QD$0Wmqv_T<ebSLqxWZEG_^SA%8AUa)O~a
60743 z$ax@>MKYc92awDGB;z{X>w!!T$<)t(1<8B`$++I<8$c%S%3xpY7F?Nb0m--n?xR4a
60744 zfMhmzStP?E8Fz^J4v;CLyzV()MR`?`jMI~-y+Edf(!tN4K{98MjB7Jb1DP^PXY=_a
60745 zl1Z+p`#B&pgk)yUUxH*VSyA^Jfy^+HnLPhAl6iVX-Twl}jG*#7+0CPR<yX}GGeBk(
60746 z$!zHgNJdyu_kRE~V<@lt&NoqB%@uV&1Z2ihI`sL+k<8;4)V;EH-O*_DS^RBS0}_PC
60749 zO^m3#j}vW?_w%%uRsq!ZvHh4-@5JxM>evZq{rK@z$WJ;q$J^cz7&KCT0$vjSC557@
60752 z#j}D(V&GwnFJL-;6?rXYxwk+$hx8&J36sPo=XN)VyZ)O1Gtp!Mh*@EZF^V|4;a!FI
60755 zKB6&)ei-h6<1{eVh533F{InEG53{W0Hb~!EQS`j!;Mptf6o-x!?eemQ`zDJhgh5;R
60757 zi%5|nxSMIoG1)Ae2XDDMoK-llH=fXjb9}U+%NlN_Y{5_?I4P!v?5K|qX`O{dK9<om
60764 zt(RtJ{k#}f!WBId$VKx8FBgj8-Ls?hu$L8R%EO4TuN0<}vJnX+iV;Z@Jwh%T%uSVI
60765 zV@*4<X-mQwikT6OXJrrTr8pFFG=%>M8^u~M5;E_s5`f-7fPouy1OU2^u{7ZX9)-_d
60768 z^(Ff_R^>bjr$*xf>%~XnNxPH@r%_~U;&Vg->tI9e;!uz$3AgFio=|kKPBc8=#+PeX
60770 zP4bzM=}YDV^V?GCNiahPHRa0_!B8vV&Bul>&Db&C&{avHaoga-lHZmYK~QMZrUfxB
60773 z66G}y$<okW(?ji8aLi!5OxVQv{Yo-q4rwH=ie}XI2eL{g=&@9qCk0UQsB`80-I#*K
60774 ze-7oP5A@TZrN(`6p2HMeVHg;l!C}7X58v5k4tzHxL!f=xRJeZguARs0%^SC8hfPno
60776 zY9%iK$a`D`>TyV>RM_$VWumRCrMq@2ayCiKMpJw&Fh9(l&zD-&BuH>~w~PNX@j+}D
60777 z8*h)O3aC~TrwAC{nj)Q12LP{Q7(r1^`@tK=1hq46meM7f2^Nhk8gg9clU?bsdc-Wf
60779 zjif@=cy2?su>IgvrkRp>kK{2_C1#qSd~g=?bx{5iWP?oFmMn=R!QswjX(t%-g^Ox1
60780 z2DKSrX&4ERh6+o#!3|u;z-IelIs4UNAr-GgoV#Pck)JL%mehP|QVJ)UsYa<iX;t?P
60782 z7K1$~42mo>V5o=WVXy}Q7|1{#vHMn-oD;Pf^dH*-KQzWvGtM%0F<ym0zyXKqm;q2>
60785 z;CW-5S)p<ksk~IkB*S1#mqpM^#_@5^ReUDX*S%vvniK4()+4J!Cky*-th-^vD*5~)
60786 zo6^%$_eF|!AQp_IQ=wowW%#|eQJ4#+;sL2Vo!&g19=amn4Qr8<v1`LSy#j-8rFfns
60787 zInE4*V_<5}(C?S^@|IflPy?uR*oo%-ZqOEGY^l9TmH;*}Kz)k<zd7TXd()nD;{Cu2
60793 zn%T5Zfl*D}!L`2z*QbYs#^RU=*+1FojI^4o->f_8YBx3}bXy%uY^_$V>|Aqr^W^jf
60796 z8pno8=}M*&vNhG~fzgHCegan*-7sK8y~kVICwv9n1QNs72S}Cw-YUqEm|;ajTCr2M
60798 zx7?5&!}F$@-gM(sB(QmG`z8SI9_aoQJBbfrUMzs^bSZ)UOSE-uO%!kp^p$`J2V*bp
60800 z6(09+V1S|#VbPi-#v&#<o4nPYuXIKm03`%{GAk-JbDmQ<gNqx?UxyQrb^5~~`71&4
60803 zjb|A$Hj#*xg8ookGxT&U+RR8MPg0t~YF;l;z{5ZRR|5s4u>)-}W*U+xAV=%gMPK%}
60804 zEBCh6bHmQQL&y&3pz+gqnsyq0*%L!Yyt-a4z071@5uyP*qWK~opA`!Dtf=bGhccy#
60806 z!1zc*7E_>Y>=^LEZUDH*#htRV2o-evax!kjS%_?bUuLTixR3kCpkq!rjyYQ!1D?48
60809 zElH@g3=NI`UW{U>i%PeP7Zbz~wFnf)v0d<hqyeL!MZ-ow_bD<D+zKSZ_c*HouCXBG
60812 zPg0OBr3W2IXP6&QSqh4hG<Eu-vhDo(Vl?Ii8gzt7hl#}q1#v8u2xdcBzoq~$jM=!&
60814 z5}2JgE9y`-I1-NVoE(kBl}Rv1>3#rc>Il%3j@{>4kyj-gzEA~+oU)P%r^OCCB>VtT
60816 z>IX+hGRj<Jm^u6)%X&GVEO<ok`%XkLvisYhE;l%XMFJbbE`7Y<V;#t{?Du-eg<R$L
60818 zVnEh>iGWv#g@Y!e>5*XC7amI%(~&?_*K&5g@P~rsGkm&|`n*>F-^;#Yz#K4a6IAgx
60819 z+rA($W*&fH3U@|8oI-WY4wxYUO#Cjm2oIX^bZ>y~8*F(!NygzkfQzG-VvxfCb0`ej
60820 zhHc?kG;Ag8ga#>*7|g^?&Ry?A{-BPSK9^B5(urx?n&kDX;Q|$i4b^5!W1VD6i%W*7
60824 z0*(!NB_N)W(c1wyqh18gWPUL?6DXuFfHTY*c*db-aG1+(_EDuwK4vDgxaAK{q{^MK
60826 zuDP)-2mAoOiGr7e)9@Z32*Jpmz=JxLPW2ED-LsGQg<toP4vmnG3Jg4Ao4U`%I?Mpp
60827 z=|P=UNXMP;?x_31nb1<i%nE^}XfTrrL~7~r))qMzEle?WL-SuAFHn4h3pK)txNZ1H
60829 zb!-x@LokedWUe&dNn1ur<i&`lF|zn;<vJM|XYOG9b64-k{0PVE;J=8*u=J<NrDQa{
60833 zY9BW{F|hy)=X#*?cLAN-V7_xlTk8Rxl(QNFq0bgq4dFFbMyLVol6(~_CkV78<H1ZQ
60842 zg}ny+`+tbv!_;2Dk9xM|^1ve+<vRm3jM~PjG0V@2G)pC~p^d9I-B@ln+9gikzw^fS
60844 z8C&=c7Y?#~B*c1>(S`3y$p9Y>F>E}!pnHP`#rcvp8HlT~ap#?q2-4tPw4%fnPELhL
60845 ze?pCbSvxEr{!vsuUt0!cBVTRV)-TOPO90I2JzX#MhVD5`1DVDgj$Hrhjo3mNMmm68
60850 zsQ$FBDY!SRXlc#JX<QOQvUibtu=}YJn87iB;Bl+yY-ZO$2LtWt?0p*7Qn}wY6kH&S
60851 z*3`HV5OH#kDCPV+MIX-ye9n~OL00rhzwG3Q?x)GEAh}^IjODO#M?JZ?%6q`j4$ppE
60852 zaFE-vl2W#ipa4R0I8o8=JUl1r#{3*y#m?$3!2uX5cH0#r5uquO(2Z=t&j+G%K(@z3
60854 zRR~ZOEIK9SD8nIP1G>1?Re}L#GX&wN<*Tj=LX6}CLx{{k#i-t2eu9M4SPxR~00|Z_
60855 z?sL(A02!LewGw65XvM2wMiuWsM(PFa`ox-9U%yss0}Z0`01bWy9$x4^K;DGCp8724
60856 zerc?YZNYwTnRM5m44OWbCW(!}t8Aza4}swmF2tEh@G->@LEwnMS1kI9T0&tG5<Nc)
60857 z91VbjGzq3iz=_ibFq(!_B%0b8Y>!|Jn3yr-X^aIBf^{Nm5sZth*8ItVwzrhc=Cj#s
60858 zf@34D<>@`k>&-H<HMI4_qERXfl-N5xVlWQO9GuGPeew+=8`ITbFgPAaq&Sg|Sz^j3
60859 zd$tN*!5b2o)4?$#kp!Pd-OqDTAUp=XfZtQIp-Nb?>!zjU!ahG4PV<Uv#92w^M87D$
60870 zceR$x0LL1*RvxYt4p70SY0@5Akx0sG%38R<353CmI4)76l`F!&ct8pIe6+}T46l-n
60871 zP_%FvrwSSlW(5i;GAa%jME(q3rR<&pD!rEqVKJb}3U-%MK-1I+0v{jF#07vzU?gIa
60876 z8M=?96q5=lKI{FA5mD`u31-dyxVU6Fw(jHw^8UJ$_x;@jcApai2j*=k9tRq%%5KGo
60878 zScU~Napzbv6U)SzWX6_pRSG7PVZ2-mveYa~n<0ZD4cjL&DisLYnvyP=EYKZF73l6S
60879 z9Z&g1@cz(XE+jnfR)y);>M$>WpEfwTB(f-%RLIGNe2}HBP=F!<;1obE{*a~jazUwr
60880 zT>i?*<wIQqo9_N-ITz#A)+M%1Ren{8ei0;kXfRRs)#~Hfb=2{zNtEcm3F!C%&~hd=
60882 zg#hbgX**&9Jz73kI>R<V>B`oB_tKHw-Jo=DMWvg<_{STgu!Q8RE@5`Chu`yBiu)kz
60886 zN4rnrEcHnY|JhS6*8AC0C`cH<I_JNS{{+7YAi@f^9s6e6=K%nyiW44c>-^j_#d><E
60887 zJjXKxiP7*F&S{LKXp*|iVG+jZW0;4-Sr2<P=5D5LIWq?2hu4s2J)DQ-PA~rs<2+pN
60888 zXYJ-1zo0xc<yqs0Ea$ld^LV%`U<%vehGH(ac~hs|n#@&lm29Sx%2vH>2%gy|At+mM
60889 zm&Uzek#KHUz}86*9-=keb@U{>HI-am=r?LLzh567A2&6hNc;1XnX$1HDS1Leti-9c
60893 zcJa4;06+I{TX--JJav)HB5=z*NEQ#=7NjDk^)sQ$g1$83g$tTTu*b3A#@`I&bu8OX
60894 zDb9^gn2^I91uuN!ujhFT<8@w#iNZ@kWIs{1|BAV*pZ@p2t2e<{!ku`opVu3~D-ph;
60895 zMNp?h-G9bDi2szxfNU|G#eAU1Uj=m|@H1cS)$K(vg}RdbHuw%L-fGSoeiB~lsJquT
60897 z+5uhS83x;2h(^%1O)3c|P3!Jm$i&L4trywJ5dC?-H=Uq8#bkPjGS=JH__jZ#I?*J9
60900 z94e-jv|>0Wda)=Tg^Wz(iai78kc{(Qcfvq1Otv4i8g$iAx~9mwTnv_mJTxJRGLG|1
60902 z18rbIYzEtmb=uRVG?-7$k4H$z0}*uhhBiC*y(k<f@eA&Ig+rSb>ebLpc*YMYezaZ#
60904 zp%)S?i4zn<12;j?G$@)!9g6CjU9h#Zz-5aO$s0)1hRLUuSzHcDYD`f?++#{|R7u6y
60906 zF98+|zfbhA1cxqOkhmK>kdUx#mYGUK!e-T~I=#Nvf=0g`ogvq`_F5lbZuk`hBLSaE
60908 zQG0hVtpzDIqy$vil1MczvkJ!ww3i3fdL0-}@21}C+;axiDo03o;%~{o@y*UrAb1_0
60910 zN8&V1I4x=Eye0M9Qj6LYPi`bB4GiU8Kkp5SV`HN169h}5gpCtwTw%4W-)mF?UX5lw
60911 zLj<qryoV1&X)yeC8{G-)&%kh5>g}xd8^O7Gm~=U}lY{=R7bCt_dn1=fEV3|!SJdJ_
60912 z-jYz~(n&57WjTL@Q!*?|GK6ffa!Ln&EZLH5K}qQ%5R8{f(Pei=6BHrnyuS!W)ho|`
60913 z3i~MNODra0*w0?)E^qzpb-ie&-OEW6`!Mw>Fi<tIqiuf~3>@`*JO+=WEukIT&0Ee$
60914 zPRwRFusQ8?32dh;phj_GJ3Qs(d_&-H-}1DxDg-6SE8u=6x&1&}3WvkZaI-R=Nnfn<
60915 zy1jP*9Q3!}9rdx-t=(DO4dF8Y5b((a=P{EWZ^&jGq@czmWt#fb@>X$1gImQRwZBz-
60916 z{)RwG@ksd;Ee9njYEceCP{Ts31hn@lP_s{w4I%@)H-<6v2^S=Ep9OzDLBAiHgQWJ5
60918 zapAFZ-%TR$tQ%=+RbR)8(SlYE1wAC}Iy4;+^|8?A-`XS^f(Q3_cvA^(EHyTjZI1PV
60920 zc13spkKJ-yp`?+xoX``yMy7U8jM&DOiPWKHWlk-Q!k>imzVf~XK<57R(1vk6rvcAP
60922 zoVpx*{vL-z<>a{+yCwAN(g0tJEAw6_{o??!aX{kC%}~H??GMsdV0CN<Z0(BE+Vc(j
60925 z?6_@LX;&xXw0&N$?j0lbwHk7p!3jW-U+w-SaXX#CHeiRag~xZ!wL&}%S;ydNvTqQ%
60926 zkc7+GqV}AF;}!^+*mj^T;#jjjK8kI?H&D*0sUGJ=y*A(*YW<k@%RErd1-=0V_SChu
60927 z7E4mtR5NDMOVB`zexEWF^Cf+a6O9qrPrNbRYG-G6DE^R4kwSS4>U_9nk}?bi=JVl4
60928 z*VE`Q$2GxJCYYNT-<#fb^S*L!TN(y{J~cB#f}Y|lTG7pg#moHRnf-GcubV$UH35`6
60929 zx??z&^q1|ZLYnI-7+5lxtb!TdHX=iO$+h-Z?t>d?(3Y*<#t39f`UYJAGEX6yeHi1)
60930 zFg=;S@4iC5Ot*o|mtC3jZvc~aM@H?*{6qJP#BKBhkoh|5S^o}0D?u5yC-a}(zadUh
60931 z{{&=yAIZQm)$M(sLcMQycb>R|dK$=lwlDKuB=g=L6A~!%-%&S%9=gYoIgY&!d#jt*
60932 zTYGsyhNu6ez68?wG?IA-_IIw#-}PjE+WjuMk=hMp{%<7n0(O%tbJL*AC#Z*j%wM@O
60934 z=)DTwo8Ld5<5-&5yzZERV;eeClZw<MaZEe>0MKMzv+kQdd~qR*T%QD@-vJ!b3*4Eg
60935 zEn7cyDEL(A;L?y8#qr7O7xG80yCR(^%8Umm1Wk-?4<5c}s}vGFq%0;5cj`y-X%ElQ
60937 zlaCvnJ?-SqE!O_m&x;X>5{KjY%j?4jN*TjE(3#!e)D1Yq9KUAj(3Bb@Zua<7!|C|g
60939 z{yl26_n!Yc`t8?y6k*+`r~q9DGJl8CKY#vnNak|`RAc`R>Dq{YLLKal-6_=gQ%D9H
60941 zd+ES3Z=-$)Wc~zo=5KeugwpvEN(a{cpJ@!p{3*)o=I*zU%(s^5(Wvdz!$9Uy)G_`Q
60943 z-@6p2nI2td-#OGAAhpshASS?pUa_u2@W^R#XfELMQXb0VVFIdJjua=#<;l`02Rwpx
60947 zO^rwv$$;O66fiprZ`-pJ90j-qD7U^DU{Z;vHHcga+WaKpvFg=yUiRW&T~EPjRj9X3
60948 zzm<@!bmy*(GryM2ZciunU%oHW1`q})*g>S_-?_K2b3+!Y_lB$Fa6WG2LjH>a8R*yM
60949 z=rITXf2&7g4Do*t&8(qSw+${-ZP1-wt@#Uiy<hm(`$cB$U$g^jPqPm=|ATEiHCeC1
60953 zXW@K4P2Uba|D5Xxu<ZGNLyq9z26!pI2Im#T3oc4HcBeZO-s#RO-U2>-C;2063d}2x
60954 zwY?+o2H4W#3_+oBFa+-mg30u0jKbh0$O|rwUGVi<m&U5&x=#|o$T)>hF@qsNdW<{n
60955 zLGwZ6jQDmy7iNut^-9>VE?6*}OIhIm4(gqbR^p=*JfqWEWOz)^@6P4-B}Cop0c}W&
60957 zsWAnoSSm2a*?W%P(U~WBF1H~+_txQHjKEnvIhLC?MpI-g9GXrR1LX@<Iy$IQ`<JHD
60958 zTIE%#bk#I2u)IdKLai6m>ZAv1m7?sqGF0oXjNo_GYJcE9DJUVe#-dXPe~wlqTU<Cj
60960 zNT$$5=&Aelfe!IaN9GTa%--%_Aep~dMo%P8{eM8_3rOaHE+VPz_DE{sGzW9a^G7`y
60961 zEb5jg+DAPAt?Z<$K;|q$J%0;+<j9ac8A#^(J-Dzyd<DrI>;4nU>z{fE3rutBR1L^H
60962 zgQh2c)b$`4&oY@Sd4yJg%;Ts$KfEBFSGr#(E~9P%GEbs({;@lcWabCZ-1E-#?TaX#
60968 zfsrONY%xp(U|IaK^;~Q$*-Q-C8Mq2`|5e)xJGKnKR6c7bcW-Zrxq8vIFWnJYEcU=u
60969 zq@?*8Ei*x0aS<p5ml~d=AHWvDG}zHKoDJ;T<jw}-|K-^L)HTOoi})fvc$t21NJewz
60971 za$d$+dW#hG;+RR3H0j@4ufLHftfzUB6?va+2aUNQe=~LZW0|G-;r-d&ue-G1tQM&S
60972 zE4sN<oVACh66WrEuPN-D1*$J=xe1#Qn4yiPX_7lHvS9QN-KU62`hL(Gz6-Rt0D9)9
60973 zu}1Yh?XS5#qS5OSaFJ$~_G4SIYq33TWxh|pad2C_AL8h>;7$lRXWOj_7%rf{jMr-y
60974 zfJVp_zVpI4+v<*y{dv=i56Z0O^EH|w*+<eWM=^#^ErryS+PDR-=<#s=W|uWP?U4eU
60977 z1Jn^9^L->Uft_|`PA@Oap(SsU?=9YS$I*y9KCtL^6XkVj=K=J+39Xa#qTXcao6fwO
60978 zWFX-@I_v!I{&GBu@q(!4W%_vc73`tLF1Hj9p%L8;bb_en7r==AChV2QN9u$t^~#`^
60979 z&QUuN-8@JO7qM^j()xy*7K&)mr<=d2`ybtts6HnLDc8xLAi8;wA9fbIyZ-(9Rc=am
60980 z_wqww3i_1uH+8?zJ&e*iyn=H6qkYQx+pt~TTanDID=6pXKIQz)-4+&f^9l~26r=-}
60981 za{e~_FTqIY$Shu1|53*?-n`|YD{*jj-N)ST?|U06$=mwvv0V3Yr!8+rZMj_63aZE9
60982 zm8b-C-dy(`L>vDYmc~W_rq)X^7!64}y+4HGo74RR;bAx+W8|$)oSqYoFT8a5{$j8l
60983 zh2Mkm{j?(hNr+ZT9B6w+h6=e<j$+Ls-5YrOtSyGKA-LSF0|6tg2i#-w0CeLA#DuEE
60985 zGwF-m-ljirHtDqltsvcDSvaoAp$NP@a^`%99LGn25~i>_+e%}|2M<$0!i%NRz6!Df
60986 zF=ZeNCw(iJN#GPv2E9rd`IVAjBsuMfLbcGV)Z%ST)GFzrR2ov<4&E_xxlxVYx-UB5
60989 zat7FriQkEhV>8%^wlXoIlO#nt{N3Yyr6pYEE=X)Z-3p)+PM&~@SgEg6UkIn*K{jYS
60990 zcdZsX(B|PD>ToItDG-dcOlZKZxb)AxE!5Ta^go4^EJr0X2F)pFmn~h-F4&6Yjn?wI
60991 zP5UBhq7XD?EiS30Wz(|4j%g`*mGzP|?V6Tq1!u!b+CR}yIL->hSs@TErHWIk*A}$A
60992 zYi2$<jLa-f9>5P_BUlS+tX}r@H8%3A(b#0OIzF6ALyfI(TcoQj=2co2=s)Gd)#)R#
60994 zmL<nr%L3gogD0^uY#RHuw$dD4?v7)9J*8K6!aibL-5Im1yWl#KpesUP`C7W-tJRp>
60995 z7tLX-eA)3?)zHhCNHrARP<*wWF|{SP`1%D|wyR0qu=cjs?u`!;d+={zZEOj<rL8PX
60997 zLZEm$8@{lk-nw>2&5uRA9$5>Bk|4{Ggx}I7PUgh8%?G@fM%V1M&>B^z*Z!K@YkSr>
60998 z@~gB)*msk|KhGLTN2{;VEdW!rCO2Q+QjP0s<=EozYcRz8-o>&kU6nBRFI;GbH~<tI
61000 z_Q$`-#jihkG%9$@(O6-2_~Yrz4#d^X`@7wKt_+NvflBd{U$hh-&^)r>A(fOjIRZ<u
61001 zzgLRb)hDh^5Oi)uDNwFI2Dt`d2u+P4USqa~9_Z!k)IO{xM`6BOJvgMCbn1Wfwris-
61003 zj9@E)qC0^{TP3j-Vk_Vxl7s8DE}~pl=D>lrCQFcBPqJi-V=xgH2jYOZ!wuxu>)$9K
61005 z@c!SO_vk1dc>l6{r{Mf=VpnxzBn$5p{H%tKl-JPFy#I5y_*I@Q{@?S=?E3bz_EFB&
61009 za^Ao0{O#D?-LDZ0HtDDm9mN2^X<wV4a+ZTb_%F5?jE*a`@%F&!zZHjf2G+3HWhAu5
61010 zda!fe@1T!l7>c%}U@>LvoJj8<mxInBonW%QZR;^J%2A-(layY{ImbDNO<JvNY-Wl&
61011 zd4o1}?e?qZ(-RX3V^bx*t?V4Z8H&e~_1Vr5E3ONXfW1^N@0-gx%en=%x_8W3x;;lc
61012 zMc#%runpK1Z7Bnc2X2xPOL3e8x=A^_a3nM<>X;jft-sM09QYjTM`|0`Vw-Ija$erU
61013 zVhy~3=ulC#d#5ulA9f;_mDC^3(F%IH=JJ37%PEMqXxS$C%jrUT*9Iw23Q#-%RSd|)
61015 zgj;bo@sT&4y0*0;8)+|OHizw!#0xBWKc{e+PBd~QX!kl5A|9td<`5i-@K89uB9=R9
61018 z;6LIrg$-mkR6vRCAV`^t-PSp1asuV!^>|@w1Qa=FlX{ddA8BqkICua>Cw#<4a;L+j
61021 zfPa$Hqviq86bZqSw5+U!z`#iUIaQ&$^b-L8A+EgvTQC@A#mt9%PUWh_^kQ1ESr1%s
61023 z=1nRyyHPa*;Q-Ck9!44tzl#=#kFm*XcIn|rKFY`}+y|aYJ;5p<%^Qdk{$cV)OzE+p
61025 zKMG&Ra!Gbw%LU^#k43PP7&*6bX%GHySKWHmVf;UiUv=^({NFI?>Z@-&LA0H}OU~c@
61026 z&fg=>-`cguZn}yHIDaGXFMj^mO~+0W)Un%cK2BtuzeCPn{>E#L93zxlj~}}Z;MYGT
61027 zb`blCD~Y4T3F3C*G;u%icH%w6hlx)RXNV_=FA+}@-z2_GJWu?9c!~HiiIE(skR}-;
61029 zJ>-YUPmpKGC&(|6Pm|vyzfC?*{s1WT#}r0!ltP(QjLK0XRD)_$i_{KkKXoN_l-om{
61030 zpl+v5Q}<JEr`|(-nEC{DhI)ef67@9oP3qg!^VAQhm#7~D$IQ_RZPGD1M~~1Ax=k<A
61031 zJLvuNmGn{i1bsVwn!cZYJN+K|!}KTUGxQVmm*}VIZ_?kUpQnF7zeN9-!5EHF7?X)H
61032 zIc9`uFm3KAv&igV_A^&9N0}4g-|ft4=6-H7^LFMv%!ipzFlU%2m@hF;Gv8#s%{<Ti
61034 zNv&a+I)+i5U7eUZx3RM;rtaIadoiXS-MtMAA9pyjzArd`zv%pZ%K7^zaDxkc{zvHf
61037 z-Dju<d3wO}Bzk@p1G7mW_p<vt{hh9yavDAFLeEpKeE2)=Gx~)4jK9l$CQ*9nUG6hG
61038 z;y&||`z*ZZK1*M7pF^K;pCk9V&#@!!voh;GYccm(KacV!+-KmN`!r1VDZhlC|B9X{
61040 zdXMyGejYth`K$~|59Q<kru&41X-@ga&~wCns;C_Tx1!%4b)UL|-am)r4x{wYQ)kfU
61042 zM)lR-jO31^=k@4$6to8z+_giXeZVvDHuU}__o*Yjn<#$;*|$_fPgEZX=}|&@l!nl=
61043 z1aB>XbWnRr2@Fz3;~KIr|C7i*&Y<V#(X;pYm(lZS^!y9-?AaOWAIkIS`F-?!5%g{F
61045 z3Hc@TYDE4qdX-Ty^eUuq=#@`V&?`<c-B;3i<ze*dW#xaMSN{Sm(0%p1@&)wjZ<Mp>
61047 zm1io?R-UW8P<gTPa^+l=stQ%T8mgwMrD~<xs?JrHs(Y%3sz<8Ft0$|cs`peMs6JGE
61048 zxcW%-(duK>C#z?x&s3kSK39FA`eOCv>bV+K6KZ-bR7=%LwMwm3o2xC=_S6p5j?|9V
61050 zS6`~{sUNBzsUNSOte>jiQ-7fTQ2pWhBlSn?kJX>7pRGSrf42Ty{e}9A^_T1C8dO7Q
61055 zCihGpnmjUjeDdVvsmXgLADDb-^5MxxCLf)AZ1Ty;vy;zEK0Eo`<O`E8PQE;Ou0^$k
61057 zz0i8G^>XXn6g4GG=~Do$PnD)BQ?04FsimnsQ-`LGOdX#(Idy94o~Z|>9-4Z1>XE5O
61060 zX69y=X7<b+nmICaeCFiLshN9b9+-J(=HZz~W*(h+Z05<Cvop`kJUjE;%nLIw&b&Nx
61063 z=h4n%ohLhIJI{2U?L60cq4Q$r<<7ZTYF3!lXa9fZ-aRg=>)ij}YwZDvrN$aU2qA<R
61064 zYK<Yr7-Fm;*5ZhW<1oO8h{$!g5BIq-48v_e#Nj@mU(2x`54F}%kH=DD4JF19viB~v
61065 z)<cc;%h#$Qgb-?}<#?<m<hSOT2TvyL@BGg9_4_B`<!A4`_PXu0p7nm7wTBD=;lbe{
61068 zWb^3evCZR~r#H`To|DVu-f|y#fIL_pA`g{^$>nl|TrE$MYvfwFPHvIg<aW73-Xrgo
61069 z_sRR^1M(sHh<sE&CLfni%V*_tTVz|jxA<%c*b=-YWJ~Clur2Z}iY@9bNn12qv|Dsr
61071 zHc%1jh@=Qjgf>DKVTrIs*drVfJrTVTeG&Z;0}(?JBN3w!V-e#K(-E@~b6aIwy|?;o
61073 zj&GgbI=gi)QWohQ=@S_c85|iB85$WDDUVb{sw0ykHIdp#U8E(_7HN-kMD|4XM)pPa
61074 zM-D^|MUF&{Mvg^}M@~o1M$T=MZS&sdvn^m-@V1a`q1(c?$+s!CskbF<(`?gj(`~bC
61077 z?ZMkawuf#H+b-X(*sk85v|Y1ZyIr^4vfZ}bzTL6CXM6AVzU}?n2euDwAK5;-eQf*q
61078 z_UY}j+vgNAg}1^-5ugZGgeXE4VG6lIp-?N56dHwAp;K5CHicc`Q1mEz6@7|+#eiZ+
61079 zF`^h%j48$y(~4Qe+z#0e?;Son0(J!N2-y+3BW#C!hhm3%N74?>4($%z4$BVP4*L$r
61080 zj-DO8JNkC??-<xIv}0t)=#H@+<2$Bz%<h;|%9P$pA7y|tSQ(-WRfZ|$N`+FbOj2r;
61082 zv?5v^ofNH!)<)~1Ez!1Ud$c3EC%QMfFS<W^AbKczBziP@EP6b8I(jyGP9;-$t9(=e
61083 zs$f-!DpVDwlB*OdwJJ%aQE62=l|^M!*;NizkE&PIr|MS?sD@M{s!`RLYFss~npMrk
61084 z$YQ)>d}0D(f@4BrLSw>W<S~jEbxcx>CPo{hi?PJmV(c-Fn4Xy4n7)|)n1Ps~n30&#
61089 zx-)F2e5YckdS}v3%}(u3-A>C++fMsV$IhOey*vAM_U|0nIka<R=jhI{o#Q*Fch2sd
61090 zi<iZF$NR(w#0STR#D~U*#mnOr@#^@bcul-EUKekPx5eAz9q~Q!z43kV{qY0wL-8Z=
61093 z+5}yKCBc?pPjDpkB=jcqCG;l@Bn%~tB#b7EC5$IbC(I_y?UwEK-tDtHV0ZBDklmrX
61095 zS)zBMPhvn~aAHVeXku8RJW-LTPE1PFBx)0NiIzlLqCL@(*pt|s*q7L!IFLA$IFdM;
61096 zIF>k`IGs3~IJZZ($9s>@o`5~UdqVbv?g`r?-=o;0-jlRPvq!r}x5u)_w#UB5v8QKG
61097 z@1DLr{d)%X4DA`&GrDJN&-k9{J+ph}l4MEVNj^ydNx?}WNufz$N%AB`k~%3VNt2{a
61099 zuY9j!uX=CNUd>+ZUfo{HUfW*#UdP^^y}f(;_V(``*gLd$WbY{a-%OsI45Hv~u${*@
61100 zF@=MD^&?+OA+Y0G{G}B7ccu6*rI0w&7oRh=e8KjNan<ZTi95+^A#qmcZ#Kl$I=^--
61101 zuEAMz9OVK*{hjK}89V1pXZoB|$w4^(>6g;kJ}>s3v$oiK^8-w0=5I5dn*Sx!@%i5|
61102 zy)i$?^xFJKPIcxNFTfdzz0UrPvVT`tYiz$8%l5``tbONaH8(x+=#9r^c=W^LLcU-;
61104 zXS?jju?psaKO*392GaSP7hU&%sBj&-8ePYu%OIcg<3Iv`JIWugr|`NBkMVd6cGdgV
61105 z1<ZF9j}v&j@5;vo<B{TV4IbrqOu(ZSkF{7{#X0|E6aOm%9!;+2Y;hg=-%a3g3Xd~*
61106 zeBjF0eb;sUhx@MUuIsMj!E{U?!F&;}ar{FAM`IG$b47bZvoj?-+vc%@orSWqm+4w|
61107 z#{Q92^c(DK4LghQP_VNV>`dvwa>oR)vp5eGJM-r#@5evE&iq)Kig>zOxSWH>LUw14
61109 z^JNcW*v>R|3A-9p-B-=WFk6b{*i}FCax{kRR%7n6tCKNYjAsn9)0lB~b(HzP#W73S
61114 z$>AU8eMuInC3P(AG$YdoWGyKq|3ZI3Kl6ANdQAr&#4Ljr3HKDHOgeu-2vPzt<*Moq
61115 zraX-)L#i=M3B;5$DhX4b!IYz_bC?q3N{JtgJA^5#U1JvC$Hwe7JnxIFkLx)vW(^fY
61117 za5;7w-XCzzKB`>(;|G?hR;gA&>lB}qe|ui#tMbLP08E=wQ5D6sr!nnn^quHCn1=Pe
61119 z()pP$ofpG7RUPFP6FJ$!ze@DvG+j;KBcJlGdiZdZmHY-DO0xLx@Xzo;{ImRW{yBaH
61120 zAIyK7qq{dK2UBu>vDW$Ce$Ral|BFsdGO#h#a^B=avX>;$b<{zhqrtS07Lcp-1a;cV
61127 zt8ANWhitoSi!72OJ8yH3#|b+_<7U);I~&!T)H&+5oypOj%6WC0`dl<s-*jFr{9~i6
61128 z;GUwCY$o5M2gpWBXc+ksd5dnQ2k8L)S9+HW69ZM#=jke%#>R6yeT1aZMvs-wKNc4|
61130 zmsM9;+j-p6ychXC@5z6Ye~kAgU(nb2Z?L)fKJURl!Y`($`9*Aw8fYB9l7F72@~in(
61131 z{0sbxe2B*e=Pd17#mX-w;ryfIZzO?V#$5Gx$#HUqzQHfyzeV4oBK<S{Ptr)0{7d{A
61133 zG@iE5X!3h%r>*ojFY{RH@e(V4l9e}-WRgOEKusi->PbEM3HdqQL=AKY9ihLbGh~SD
61137 zK9+X{EBP%}Dhf)+vU-oXYW8@{Bbe22jC+Rs2YH3ON_LYOa*2FGrb#yGBtIqpo4!nS
61139 z{xAG2{~!E4{y+Kq5AQ;{EM1l%)5tPqS+Z<djx1M}C(CEG_^?|3%0J-$#?SGe^Yi={
61141 zP@YmwDQ6h@`jzLE7nH-wk%xC(>2uLE+ADfVv`@5ubWrq)=#c2Otd>SDD0+GH%IMY6
61145 z`W>1?v*}iPg#HVy_4qb(xinG3y+Ph1&$AytvWvV=Mr7Y1Iph!IUGf`JK-%e5@(t2Q
61147 zcVz249`OkC*z6G``+{j0N6toZGkb6B9p5{(cV_Rsy>rPl*(-TTvQM&qa!~S$<dEdG
61148 z$?KChCd-qfl2ys^$w|rS$vMe|$+~27a&>Y;vOT#Y`B3ta<lf|y$)}UgCJ!WEOcs(a
61149 zC66XwPrjKvkvyGzH~D_@e2Oe(amvyZ-;{uq<tZyuR;PrfY)ILZ5|N@viA_mJNlwwE
61150 z<fRm+7*Z@LwJD7$Eh&za!zo8oj;HjcoJl#CGMF-yBBfkTxtcPTayw-*<xa|M%7auc
61153 zK5b)~JS{3sl@_0tl$M^BlUA6fOEafcr!}P6(>l@)r5#D@O*@%(I_+%QK-$GLA?;Gy
61155 zdU3iT-I89L-k9E!?npnJel-1fdSCjP^mFNh=|kyK`sMVi>0{})(<jsKq|c^5$lx+O
61157 z%4o~z&gjWFmT@BER7QWs`HTx0!x<wPS2C_;+{hTun97*RxR)`fp&BpE5{-|>UlXKR
61160 z%*!m!G-O&bYcm@&TQVJ)hcl069?$H{Jd=4Yb1-u#Q_8%Yc{Ot^^LFNB=AF#h%m-Oq
61162 zbu8;d)~T%itn*nHvWBxpvaV!Z%es*@o;8&<lXWj^E}Le1WiQG0$@b3<%3hHjlFb--
61168 zioB4#wR!9FHs;CmqViOE@p(yk>3KPMg?YL>b6#~`L!LdaBkxe&k-Xl#lX<7}&gKo|
61170 zoAM*_75TCG3HizSn*6-{;(SBCCBHVmF~23>k$*V<X#Vm1zWg)!=kf>hhw`QT%lTLH
61171 z$MSFIPv+mrpUr=u<+Pq!Z|yRzpEgh%tX-vDqg|&B(}rs!wMwm8o2X6IW@)wBQmsjA
61174 z0|gfggn~;2qXpLsZWc@wOc&fOxL+_|C@WlCxU|r>FraXG;mX3*g`tHT3O5x-6e<d1
61175 z3lj>H3pIs#g~f%2LQ7$7VPj!Sp`-9{;nBk5965D{oB8_pv#_u5OyRl0!NQ?Jsqk{)
61176 z)xxpD+l7;bcM4|<9~5y#o<-h8%ZmJp0*iu+Ru!!&T2~ZS6kZfrq%2YwB^IR?Wff_Q
61180 zY$}N;QIy1%B$OnVXiD-*ic1V7mXg|%#*&s2N6F!mqb0{n`by4}oGTeD87h%VE|**_
61182 ze?LpJO0}h>rKVDAsjalBw5_zew5Rk~>50-)rTwMnOD~iTmyVQPDZN&DqjbD<s&uCG
61183 zUg=yJE%Pc{Qsz_UUlvrhqAa9rZQ1&=jb-w(s4`Vqd|6UidRb0cVVSPXTvlDyP-ZXd
61184 zC_7Ykq^!5>WZCJmvt<Ki7t4gQOJ$>F*UN5}O_WWS-7ULcHm{TE7VDPke02f3<+_!+
61185 z)w)pK2HhrIgifK0)g|bXbsAlsu2^T#S#-6!MqP`}p*yTQsynXh)1A?s(+%o|bdv6}
61189 zIB7U-IBOU%Tr>!VONLRyb;C`=gkjon*Kpr3Z<HAq8<!e=jRD5x#+Am^#!%x1<0fN-
61190 zQDKZVCK!{A8e^WZ*k~|XjJ3u_V~f#YJZwB_JZ|hWo-v*?4jPAylJT<fs&UMC+c;^w
61192 z+tgz^W;$UyW$HJbH(f9dn?_7mOxH{|Oyj00(~Rk!X|9}>dzCLK_bK-;4=P_#9#X!x
61193 ze0}-Ga(Q`FxvD(AJgGdrJg2;{Tvu)`uP$#Wx0iR6A1Xgm-dldM{B-%*@`3V;<wE(T
61195 zIl-K4)|m6m#b$%qVy-nenp?~c^I`K*^Ko;Z`HcCTdC)v$mduyUSIuMQ+vZ909rLXD
61197 zSM*dIt2j|{s-nN*e8q)|;fj%pD;3u&Zd8m{OjXQO+^d+gP>YvkiN(j_Zwa!ju!LCF
61199 z*DW_K6P9VqUCVvTe5I^%aplrV-^zf><&`TdS67BsZm8T;8BwXIjIB(lOs>>a=2aF~
61202 zkM)@Kg!PoQ-+JD9!8&Xmv0kxWv)-_dTc@lu)_c~uDq7`LwWP|Y%D*b8YDHB@)!M4{
61203 zRU511RZ&%{s`#p;s`RRys=_K=mAR_As-enW)lqe*>PS^@)yb;URcEUPsxDRuRhOzp
61204 ztFBkwteU8ruDV-wziPf(R=v1-X|->4K=tzKmDQ`OL#sDbZ>o-{R#eAUCsZd_YpV0A
61205 zi>nRQmg?H-#_E=8NA=<Aqt(Z&`>M}WpQ|3M9;%kAFIQi!9;?1xJz0IHdbavO4Oin?
61207 zHElKBH9a-QYEIOgs_CyeUvr^mxMrm0O3k&J8#UuKQ#CU+_iE;9X{}f7l3Jfy|JtD1
61209 zy;v*MUaB3fy<U5>cA|E=_HOO{+W9(J-Qv2Xb-r~0b<68k)~&7!t=mwysV<^UQ5Rd6
61212 zdThsRCv2x|{kHSA3$|g~i0z8)n(c;d+%{#KvE8%H)l-iAi;|o9`uDTmtA0tnPrZMA
61213 zQ2mPfkovXt>+3hx%j=`+RrT@pN%iUVIrWA0x_Wbcb$vs<y}qOVQ2mkm-ujdEr|Zww
61214 z57b|*7wRw7kJewWzga&~KV5&f{(k*@gREh3!_o%dhJc3U4J#W~H-t89XxP*c(V%FE
61216 zPQz@&gMHjS&wbwemhJP~7q~BY->Q9U_O06&wl92N<UZv-^}fV?sr$0_Y4?@xGwrkP
61217 zv+Zlz*S4>FU(dc{`%dgTwXc8Q`F$7m4euM-cV*wTeK+=v@0;2;v+v%%xklRP)wrb5
61218 zr_sMLsBuMONaNbZ^^F@F<&9B|s>b-nq{j5doW{aNU8A|Ny0M|r-q_K2sPRZ+Z{x|v
61219 z(~V~v2RQQ2Io!<Gzn_g48->P8jiZg%8*esFG)_0(ZM@$&zhAb0@&2XzefJ0KU%r3k
61221 z5AGk@FYUj)|LXp+{kQi|?!U8tcK?GWuF12>yJ=aIUsGUHaMP-$HBIZ9!kWUHBAb*=
61223 znrXV%G<Sd=@H(*MfX@N{13?E?90)nE_Q3iB8xP12L>*8ah(C~YApJnjfx-j21LgzO
61224 z2O1984|E(jbl}K=-UBBOoIY^&z`%iv2ZRHc4vZeSe&FVTi38II?jE>*VBRjXFSakW
61225 z``QES%k3-etL>ro4faj;2)n`_YfrEz+cow)d$HZXkssD_GhhFH+Aa24d!xO@?yw)W
61228 zt@%dtc=J^AO!K|wxfa^u)v~0;r^UY|sAWY<NXy!m^(`A)<SkJxs+Rbcq?YuSoR-2C
61229 zU5mM;x}~AT-qO)>sO3mYZ_CM+(=BIP23jt*2rZXdMq948+-#X>nQpn;a=&H1Ro1$=
61231 zTl-qiw4Q4nY#nNqS}(U=Z5?a9-8$KNr**dVK^xcR+2-B0tj(`2ur0W4Rofbl{8JA%
61232 z^Y!m%+q$-}w(z#dHf5W-EwL@NEvrr2R@!E2v$omVn%dghy4!l%j<ua=JJr_TcE0UG
61238 zcaC&k>Aco?qjS7-iX%Tb%gucK``J0ud9QQMK^<O>B@Q2lzaz-8!V%(F>sasD=#V?2
61239 z94be=Bgv8O$Z-@pbPltl+R@;!J31VP97i0zj+2hlj<b#d$3=(Wxa1ghTzA}bOgN?;
61241 zwRAbU4tE{xI^NaSb*AfF*I?IBm(+E+>uT3n*X^#!t~*_`T@SjsZqIJ-?q%J6-GSY~
61242 z-K)CSbg%0U>kjXZ>{fQGyA!)pyR*8r-KE{8Zfm!#yQ#aaySuxm`&jph?o-|U-RHY6
61245 zJ9wOT9p5j+{7W&vKjx2e%TFF@!F<$p{p}-|ZzEoxaw|tR;@{GJM2G20tnVzQn_bt}
61246 zN3cBB|Hp7lzvMa&AI0<tEZ>6V6ENQe_j12(!29ud|2)=@?f-Ed-dE%O{;%9$>$-m9
61248 z7w{UN=Z))F|3#cv*Z6Z6*JD39Ot-j>)2@DTBMo@$b{*ey{Z1_R`zg$yj`@$f<tJVf
61250 z9d<7_g7e^o_W64U){o;e-GTS}@P5lz?&EdXAm+n%f3@&@O_+}T`+bgkIc%2%<8y``
61251 z!s8j&QHk^C)r<Ke@P0qmlkV2;!~6KWBpB^2Y+>B8@cNwVxZ?rN>#*y1VT0><?K-9p
61252 zVLQI~T!DCW**W*F0rO+N_i)~(sat;HwGs2-`hE`i^4UG?*AlmKBy0ng3&wPp-E-0e
61253 zrmw>Ks<A%g)@S%U*J`mpYcL(#lNRR53-jsR%SqTjFKq8xA=Z!f@fq^Y3x9|FTFzJQ
61255 z=OxeK`h4An*WGxHM}>=1+(n#^!7$hHL$tSx-q;RuKs<{_w4Zm7+xR>5+`D%%f3jPC
61257 zV^J#RQ@WQEaa}IL{(l(hx?Ya!`!nS5BCP+z@UPs*^|--|`C_qN9N*6{|048P9|pLW
61259 zUaq2FyMTUj3i&SJ_z5^(zeG-6#c^NY%hY+d{KOO2@6|l)2bQ10=U!guR*rlZx#2mA
61261 zdg6My8t|3-$m#E*zxG64et`aS3jf~|PxM#6yXRgG+a=H5z<MyQ_%6l^k(ln;hxxAJ
61263 z?{FOq;`NlTTYln+@zn3+*blU~sl|AG#H}1zkMWad2&QA4I*j(?iCp{L5-g8)Ife7`
61264 zJB)7!(JxFb!}7>WPrUy->RxUb`QwS#qsZlFah*(|Kl4Oxj^1;>|0%|M>(S49V*SGl
61267 zo(a0-R*t-e@so!Q)6xIFk6iU|#bw;TPhxrW-=8Ay{vG4n0gU56MgF{x?R%iT|NEGG
61268 zx%Y9rJhJdUuCE|0|0(j^LxcA(f8{><uh)DqANr{wjQ>AHf8~Mx>fcYgm-AQ{58QXH
61269 zL!P~c{(lSd)&t}1Ahf&J7GpiD-P(P4AD@>5;rOjXI}gJCyoUC-1=r2n=+Do}v7hMI
61270 z-o|;Jyp7L=>wXCLqi-$D3&vk>V||mC-0~9{^5n{W*Yz{#KPE5Y^}Jg-vJT@68P3-v
61272 zvH`q*@+<eT{#Wl}KJ-KHp}kC^oy*W)U9q{B!*<Ct7%#kv`{`Gavzw7`GTi4rgZA?(
61273 z?xQA~+}eG3AD@>zgZ|`I++RL}^}RZc_2d5d7r6fVk?X(3`TGUN-;>C@i?|Li;&}ZW
61275 z?~}_h9p~p9_G=RD_ad$@nIGnBb1!!h*N+VC{<k>3foR{83-;}U_ibOf?^+Ke6uBY8
61276 zb$b!l%OtKt8TzZ=CcBrzc1a+{8KG!zp)UI--$#3qd1F4@7lfice=_0L?!)`|yd)6g
61278 zPk4-{E@K=Ni1zUb#^Hg<ZskZQ#!tK*(~(2(;&}24?V^1IqP>2C{_HZww{Ky*_z6De
61281 z=kYAs?`h=4Z_uxu#eMb!^5Pxj@;k`;f5Uy`Z(Q$fxSylnp1AFnpHLjH-{5>djpILo
61283 zQCx4oK|lU9@@WF+iK0LH&HAt0$91;Wj`?tW-@*OP1kMjdfAyPX?&Yvu5`gjLTIBs&
61285 z$LooO{R8@yL0td;irlz_^U;rS|HMYO{DdM;F5x~n0R7Gc?xz9<-O7=*7(Y>bA2NaQ
61288 z*6zdm_`J^V%5>$&{bd01`(@-!82b4$xX$|)J}1EEJA>=~W1PQVqM!aHj@M6d9)68}
61289 z<_x}{`uMP0enPPPukpR(Q@CC~#`m;O-Ek{N)*#2oLi^ax0P=)j{lCV2*Hbv&AEO`n
61290 zHS+EZz6bmmpKky;PSBr>+;=ZGfczn7_ahh=K85`H7}pWOxN2njEB9-$|M(t@pg$VG
61291 z{mRG4CxYA>8Fnv+?UJW({@0-WtZ}UivH{mW!SB>~3ik(VaQ%H8@7C_a`}n-%DYU0G
61292 zxW9Y~+gpQv2H#V0r*VEx;{I#|{n}}a??1-4=xvMx-p086&4teeFdjRNpNEX!bIVWg
61297 z-O7>G7(a37-^bD4oJar1VVomjoa~SOdwd}s{q`x`Ka6AjzgQS|j5DP^_j12j7;hX8
61299 zfW!BqPvZXIMO-iAOWfLhcpsmaJc;)EB696XeBKu^URj6h<EQBVkK_Ak5!dBUF^>KS
61300 z?fe|RS2>6A-H$Qu6fym$Xa^sia?k(8!si|s*F1^seT4J=q}8n)d9fPH;rr2#a36mT
61301 z{l*u_B@sVwd=l;LBeYKu{Y>9AOviqnLqG5Z)-N`=mph03`U3kSVjTA*^6Mj9KVRVI
61302 zDx&!-_i_D&U_AW=zLz_P_WBX}r7zH5iE6iU3+=kTo7q_p#*HC3Z?EG1?hA|u{m`$5
61305 z!uP`hw)-Zo!;jEky@mD6<M;`w?&aRXeDi3>0>0<-L%!TbKRAz{s|f0^+{bw11>8T(
61307 z{E$B{;QrDNdG!MBM_$1={U_+(j^XESAE00R3HpKC$hC!i=~-;&Ulu+G!uJC|!F6#v
61309 zxX-_hanjF`1M~Pf_y-%@%l#bfbROpke;<fEf%9-1+nvY#%Ll8!av$G!ty-uD<Eo!y
61312 z<BRrp3;o*@OWewlRp@s=$M-C^(C+)uu0BWp4`UqUi|g(d#tp+bE<Z+Y-NN?!F>d+1
61313 z5%c-Dm+MFVe2#u(82zy?KJP6&evbR`VXv>;$M=cPqd)l^$MI*#m0M_!pQFEe|F&DX
61315 zapdh0{9ONi^lQiQ{opNpukbS*ub-j){1C_SeH`cG3;hao&;L2{<bAYLUtE8;aG&hE
61316 z(XAX=iTl7g<kKyj-!o`OpCjLgaKG(~?cG}Vd<Dz>2<y3p_H_pBdJgv=LwDTEok9N0
61318 zA}>~BoI8h~|2~fK?n>Mj-n{PC?!x_r=OvHh`df+n%f~UkT#0_~MdyBxaJN7|aw>hv
61319 zspN6cN=PYz^8!%#ZbvHTT;E7X49>q%Fvnko>%Tg`{g4;=-#Nc=j-3e)&pvo~Hq8I_
61322 z<d7nV6gi}9fs`$fvISBiASD7)A|Pceq-=$ht&kE0DN&FT1u5GhWjmy7hm;sdiGh?D
61323 zNKrzH5>l9z=$(-Y&)p&&<W1)pd7O<<4xB9~&v`ig8&7x93<`71zt8ddBl=7FF^=k^
61325 zwCRs<)DWpZ&NN<silyApPqXtWBeOU?TYY-h3VoUjB=3?>T$aQy!C7}&iKpIXSZla!
61327 zlcoIyu4UYHX5U|s$5>t6hF-%N1B@7XkAIYReu}h+WRn6?Nt*dkejWchr1-Hhbbe>j
61328 zIXdML#4R#}u#%UI%UF+A816z}efU5aCok7HkybK5!}-@>yu7&2xIeMg@PPXpH%DF}
61329 zGpxrKxy6QABQ-8H1{y<*8;p_0c%#O6j^m9<#yq2$)hXkrcs4ftUuBCp=Qm)bF-@1{
61330 zv--S^ZN_89e&ew5nsLfFXIf$kGG>|9nw(>|7@jtpSlJW5<a}n{2cCL~^NCom-XsIg
61334 zo9rMRZ06o%mhR;0qbxOx%~K&MW6xhl8p(drL>D{1Q_lH)a?X(>OIb^KY-Bq4CwM>J
61337 z^B&GP%7<IRJ<2WR{J8*bITy@*hkKD*&ArZT<RZBpvLM-Q*@WybvRRLK__pKkBf}Ix
61339 z=lqV@rK|=@9tRBpT@CsY=o-*G(0tHJ&}Pt9&<@ZyK?gtwK}VfRp8<v1*cx%_F3=3n
61343 zpmT7S10|poGy!xsXd>ty&?L~kpvj;qpsAo~&Nali#nug5A*-G5%bjn`**axD-uZp1
61346 zCWq-5%Xiu2SKh<C%^kyiBQ*>dh7CuI-o|31)o5q*3^i^v9yXp}`A!&TjPu48cK>q8
61349 z#@P<b=f&~_=%)-T3~P*j`g8h=`g#3`aRqyVaAUW#oUzx)^676HR~pwj?>bB9NAy?q
61350 zrwjo`xiQw5YAkg2!)P%&-zxaPJi2DlIo7*iwExjq`<RXzO~&h{D1)D2xqeWu(O=Pz
61353 zU(7FY#t;0rzT|Bl|2s={+2|;<yNs_`CiC~eE)LkW1bFo*@XEO}31Sh*%VZbHfwmh-
61357 zs-1Ap!x%pQccVB8Yxm8CF{HD9Z!ur`9_C>F+x!atJI;{?Px}<kjC+j_XXGEQbr(NY
61358 zKaAs?HTV*Li1z*wjSiEOtk$!@q<8)ym2S~Vn186-V>`r(e^0mndfNZ*-Ua>xHva!B
61360 z9n}XJOvaFMuX3ScaYe1Atum-GuX51pql?vD&|fn2n3k8XH+NS=SY(!KI$vE5+fU6H
61362 zjIW`Fc%x*zXX-Ou=QftvbjS1$45v&@<xysPh0L<da?CPaxvBDA*{CjDuQCK0drjxf
61363 zerBPf!ID^ZsBDV0P|Cd6mGYbB*oyFq5nZBgfbHW(O;hC-U8(M>A<OWf+`s&kj?*!!
61364 z8k$U8Szp-&*6$GgQvDkJS^YJm!e}zBHZgC{Jqf&7#C^<uytqmB^DXWk=lsiZf92*F
61366 zPL4bZ?Dz)lr~NF&Ne~JIq5Nz7Yn;r(-@~8dfhLr#u<dN8NjZNuyGxz#G@NfW9!4E&
61369 zW9Lycik)w#+u6B-vfT?+Qnq`cF*Js09No#ZfEKX371YAiN~>6ko!Z&?Khb|;Gy5Ei
61370 z1S$U={yQuxT*a?q=P&bXp-*3)*+tIpKK@cv=^VLC!eV5$JI-bn<{HHUQh>fo_NDP7
61372 zab6^tu-!G|<;$$SU1S&QL5}lH4fN?7%+D9H)zC;9neDfec9z~p*v^?T^=;PU3*-Vj
61374 z&RDErIc?O&)=($yWchzcf5^_y(R1tx2dUF{PdR@FQ1*rF3-&xgKx@Li@fA+0S#<Pe
61375 z>MnRdfsN+`8_k-p`0Rhk&cFBDe5h=N>{Ui*na47h5BGSTjphm<iEEuuXFr^80f8RO
61379 ztSGFgt>~^eSut2~rDCGufvLr^#IoG7&Jtxwwv<{LEQc+pEEg?TEmM~H%4L-+DmPRr
61380 zE7L0tl}(jLD$i67S6;8YW2IJK>niI;YpgZPYPPmmk6F)JCF>3A-73#2|Ekqh;Z^Zf
61381 zc~#b`j;iBT=c_JN-LAS<y|_BCdTn(?bz*g4b!~Nb^~vhN>MPX~)emZx)GV)AR})o}
61382 zTvJ-pP;<EERL#Yjt2I+K^R>%rSJZB(Ro1508fu$rkJO&29j?7zd#8@p`PQwf+gKM{
61383 zmsMx3YpFX{ceYNdyHR)7=4tb{t+s{R;%#|0tF6O!+;-k}$#&azuYPfTAhVX&z#lo^
61388 zpld*123-sK3h1k#>p{N@x&br{bR+2ZK)(+f4!Rjs4!Q+&D`*txc2EWA4p0?n3}`H<
61389 z8gwUUJm@aa1kl}}iJ(cKdqI;yQ$SNe^FZ@Kt3azkYe4Hk+d(@(J3$?w-Jpj+{|WSm
61390 zphrRf1+*9RN1(?+e++s8^e3PvLEi@bCFnb#?}EMu`aY-tIs$qLbQJVM&}*RALH{@C
61391 z80h~2{R8MN&~eaDK&L>bL1#c`LH`5v9_W99-Ut0F=-)u+KtBil!l{%4C7=}a8=&6=
61394 zpv|CdpkQMZY>a}9QLr)E1qzl%4}yZd(ZirW00k?eeV{)D{Ws8`fu03@3-lc5FF?<O
61396 z<-tyPAQkTc>Iu3C)C&{{#xDj1i{iaO!LE3)D<15M2fO0Iu6VF39_&g6mMjD7l|j26
61399 zSpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?J`2ES0r)Hc
61400 zp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ
61402 z0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu
61403 z0`OS?J`2ES0r)Hcp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyY
61405 z&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq
61407 zfX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?J`2ES
61408 z0r)Hcp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH
61410 zX94&u0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gt
61411 zd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_d
61412 zz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa
61413 z2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>t
61414 zi@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_T
61415 zvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!R
61416 zK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ
61417 z;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y
61418 z1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gS
61419 zMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlF
61420 zSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??u
61421 zpGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q
61423 z0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE
61424 z67X39K1;x73HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~g
61425 zECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x73HU4lpC#b41bmi&
61426 z&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd
61428 zfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x7
61429 z3HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmL
61431 zX9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9J
61433 zz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE{||Zh9~ae{-wD3Xf#M?9
61437 z&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k%)w_4
61438 zK6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ
61440 z;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k%)w_4K6CJy
61441 zgU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)
61443 zIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k%)w_4K6CJygU=j%
61444 z=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6
61445 znS;+9eCFUY2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-M
61447 zpE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6k}_{_s+9zOH%nTO9j
61458 z_{_s+9zOH%nTO9jeCFXZ51)DX%)@6MKJ)OIhtE8G=HW9Bp9T0Vz-IwI3-DQh&jNfF
61460 zfX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@
61461 z0X_@xS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq
61463 z7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@x
61464 zS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$
61466 zp9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@xS%A+1
61467 zd=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7
61469 zz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq(_$<O_5k8CXS%l9bd=}xe
61481 zCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xfg3l6s
61482 zmf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2k
61484 zX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xfg3l6smf*7l
61485 zpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|J
61487 z@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xfg3l6smf*7lpC$M#
61488 z!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|
61489 z1fM1NEWu|9K1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-
61491 zOYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm@I_$<R`89vMKS%%Lte3s#}44-BA
61492 zEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZd
61493 zvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-
61494 z&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9R
61495 zKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ
61496 z_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L
61497 z;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~
61498 zhR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`
61499 z89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%
61500 zW%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5
61501 zmf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMK
61502 zS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupB4D5z-I+MEAUx?&kB52;Ijgs75J>c
61503 zX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&
61504 zpB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?A
61505 zd{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh
61506 z@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5
61507 zz-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI
61508 z0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+
61509 z3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+M
61510 zEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5
61511 ztiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@J
61512 zvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?
61524 zd{*JJ3ZGT@tiop%KCAFqh0iK{R^hV>pEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U
61526 z!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz
61527 z2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;
61529 zYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(f
61530 ztifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^
61532 z&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifju
61533 zK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v
61534 z_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz
61535 z;IjswHTbN-XAM4U@L7Y;8hqB^vj(4a_^iWc9X{*uS%=R$eAeN!4xe@Stixv=KI`yV
61546 z4xe@Stixv=KI`yVhtE2E*5R`bpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR
61547 z27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K
61548 z8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{
61549 zY`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)
61550 zvjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH
61551 z&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&
61552 zJ{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC
61553 z_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p
61554 z;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1a
61555 zfX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u
61556 z13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr
61559 znPFy_Z2OzcZ#w4A4*b6{*U9}G%nirv*_T;nl9?p)JIoz2zsvkFng4s{-;*_;Fi*(b
61560 zJTG<<^B2rtko-CGS7dIUt(9fhnAezR*Rf=5>@IefdG$1QpCbw9%TB_XvXgL*>?E8W
61561 zI|*mUPGWzJ{Wa?x*-1D@b`pD(JxY>eteea|Y#EtXuvKJU!`6^_kPVW#dG72aHo+#y
61564 z@$7lnf5G`RGXHhwubWq#W4_|}W5*lEM<$6`Vx3L;r<qmE&oV#HY-WDJKC|>MG25B1
61566 zG3JL%4wJ{^GX+c`<HFggJD4!j$@DPCnGt4`Il-J{PBH(AIm7(V%vt7tVa_xED|3PQ
61567 zZRR5LJIpxqZ<zms`6KHZ2KN}A5gDENznBNiH1ns-L*_p)f5!Yr<|*@+%nRlv^P2e^
61568 z<_+_=%v<K~n0L(IGyj?S!2B2HA6W9x6X-u>KVz4%UtyQCUuDzTpJG?A|A<}5{xrLa
61570 zwt;PA18fu9%!b)G+s_WN!|ZW(gdJs1u>XQR$^IsLiXCJBCHp(<CH8mO-)H}Ty~h3_
61572 z<0RI6LX25LZ26R!@|k_Dlk}vYO5T|KbIF^Me?ED0@-HNBN&dy;Uryec{Eg&Y$=^)Q
61574 zyPV&2W;nm)-0l3fbC2^o&b`j>I?ZeMy(Z6)#hxDvpBw+*Jv09MpBMlCdse*tuX)Ug
61578 znTuro-(h}-tUr$P%$w)*Phx(T`CYR9?=ine*7<$r_en1k%mmr$512o2EMcxPSIJiY
61582 z-2WMNgCmXoS#~3-ZXxf4OROs`nAayrBG2|;GCzH?-z05*i~Sa9|J&@h$$j&>1xe&t
61584 zUil!2{UJ-98*DC{ORD*7KG~{}EhOu^SQlB-ye>i#Tf&x*bxPS%vW}PalF?SOm1NCo
61585 z@=lw^*0QzaK6&+#HXGOm^V2PP?@eLbSn`>IyaR_w9%jR2-o<t~KC`Z}(8KnapLE$c
61586 z$p_eBGM~N5gn9LaB=TDQ7i8PtVt<RY^Do(dMdq{DV>rv6C0m_i&ynhR_B_ciuouX-
61589 z&fl<qL$<|P<;iCU@;qVRvTw<F{*L`SlD}i$kv9LHe5P<FB_}15xijfAM=Fsc-SG+e
61592 z`HLjq>fGvB;`|!<oZ=+!NEsw|JKf|-{s32-{3@<|JCgL+VO|OE3Fd!_`E$(wBl%=B
61594 zU(Ve#uW#x&={V*1Eyq~Wg`}rso7wG?$Zb2-S`u1gaC2aqt<5c^%wBsJOXl@s>7`_A
61595 zIT_2Wz1`QW_U2msnzjBXSo#%fDaBf1982uper-YDhw(EBYqL~K$yUqrS(4Qgi}hLa
61596 z%Ek+_WL%3g+1e(VYGrQp^a%GY7~wv9-{~cGk)>Z<u-)9!R~IbJw(`$0t|aRbF!M(H
61597 zxX+ExX}6qgZJTBvnIDk(QhUj~#{6gYQa+h~YA@yDNF>>h{%l_<cH4}-|FcJp#aPX2
61599 z_gYJ-So)5&v<yp`*3xn;eRsj5ma(9RGV8g_eqnib?NV!PCzi~s%`kY~XWNgqc?5Tn
61602 ztmj)~J>MehE!IcfBHPw2vYvmD_56#hSHH-5^^2@my~uji_OUmQVu{1NX1UYejv?!?
61603 z_CCzN?#;A%!MaI!4CdCKH<q<p&9>KeI_6&6v&V-eKa<d!)4HW#-MM2wTd(;M+t+@{
61604 z_P#IK-uETj*HGIpR<HY#_Upc+egBti@BfnR>%V0C`Y+kO`b)O2rnXO6(1LTpBc4Ql
61605 zCZm;4?6qdsOZmc)OeQ~_SZ0`?ahQ^ld(P~+d(3+K-U@Q>2=4u3``%Z`z3<uC?7eS6
61606 z8uOX?pB8L8U&TGk2lL)v+xPy$zV|nC+a~|H-O5)X&0N3Vwp-p~k6<sh{d=foX8*)t
61607 zz8jeL*4Xz}J1mi%-=DjO-tz3;%zG@3Mh>Z&*UM&cMC>ITmH8#J#UGNT16cF>^pfSC
61608 zY2Lhv4#zPp{k6698)#*A?-=r~KiB)OJIt$c&-HFEp?7=9YGtm6zo3__N0e^m;DT1{
61610 zf+L%|pv`Ym`)w^*&kw7Wq;Jqm=>2;OdjH;n-oLk?_wOxuT)(&AaWy}6n8z!L>V5VI
61611 zCRxYEfzLYT5l*s>50zNQh)SsE2ZJle&widraj@2-y2~;9N!t7rv@n~0Cz;QZzL3p+
61616 z-A|}7%svi3>DqH+{`|f<$<LHU+fM$8+n(FUpRDbqFI{`#<DWvd{!!y_;!#dru%C0s
61617 z<tJ%>_IdH++V_0n(RBXU^>Y?Ek}3EdcJa}qU=Ke3NU=Y53(q3Q-}z&=$oaxinteW`
61619 zYYM(s`0-n&{)nDu_c-lKM{aJv1S9x#kv3+>|KHon+*rPBUzU)cX=r8fBbh>4|4B!(
61620 z1jl9RqNADHtDk&4KkC?|;G3<Vtd+Dc8BvPkv!8hH%(gxyKR-pApDo(ve5*g{2+h`(
61621 zlAlY_>ax$-@cDMX@?Sk#v)#|g&(Ey(7jOOlo%ZLxiJ1G=Zti>A`EQ#%j=66fXEV2z
61622 zB~w|Em3=~G-?y^VMY5DdGAEU}tZd05>(Sqx6k6HrnCWl7=El6#9`iTsF)y{p{0)1|
61623 zOYJ_sVUKxXma<6Zq%xP4Em>qehRO=9Y<A3_*kjJHv-AZSOReW#kfkrklBxBI7G&uQ
61624 zvQMb>zP}(#Uy!9PvR>*U>!mERUdkftIjQwr3$pYD*^))tTe3)d47Fb2f-HSOHutG|
61625 z?wB65k6*HV{0`d3D%n0(2kqmMZ1;Q6J_ZZ3ltnTpmAR~J$s+5`jxWg`UzR<-Bzt^W
61626 z_V|+Q@nzZLOS0R`vd6bDOIajyQkl!jmMpR!LuG|lHaq6|Z@-J}F)y*lTx^edi9P0G
61628 zuRZ34S;``rlgeCHwq%j@7%D5Yve_}G+GGBXJ?2z<%-^xcoNABxJNB4U?LNL^k9lF1
61636 zWrbEYJ7)Ut-E(99sy*iU&&pr5$2|X8`Kxvx^PiO$W+{tgPAYRb=+DXv*JG$`_Omj+
61638 z6SLogj!v8ipU6D1nJhJ1$%PX&C$^nfMV9)lWb8!ViM1!pZ?1c-Byl3^#M03>WGQSV
61639 zkrTT{-;X{aOPy8{II(f``KU~mTCBu-V#VnF(OYDx!%7NHu%mZIFOj97m1K{;9-SB+
61641 zmn?N#N!n;PX?-hMYM)I;K92fFcZ{wfOED{%8Fi7i(#TSul{_0gG`f7`9a#!l$@J*%
61644 z9yvUcMY0YndrsOqG_reSC&_|VHci^f7}+$ko@A|7#*?--j;t6lf6s2SvRkCB^byDL
61646 z<KrZ2x3Xr^*5%`;kDnx2%*wo^t+C^=;}MeeSy>)wD|)=)xcQgikd+-GZTXM8j^~i9
61647 z$IAASwhE3PJieb~=Ho$LgTpsSTUp1q504z*L)K}w((}j9AKyo|-*J3Bl_p3}YmYA-
61648 zE<K(?rOn6pA5T5b4!<3KO{L|>w++t>PY-7dKO<?sm1ZA5IQ;VX>fwjOQ&hV9c=GVw
61649 z;j6>ThA&g;#^G1PSBA%j&kUcU(v`yxhR22@Lr;biB<;0Q$MBos6T_3k-NXL*bm+zK
61651 z8a_hCkvvo|^pQ#<!+VAuL+^)P4Lzq)|L~@v7engM_Mt~4?X=Ro;eA6-htr4jp-C#;
61653 z)5M#h^FyUWM-rEZ4pHf&p~TSPp{$`jL%XO{9BLlQ7+Rl*3~eQ8hm~F*Ix)0k$UU@S
61654 zD4j~r4ILa>miUl3ns`g414BC#?-DbKXNkvD+BUQ<@gy;o*qpde(x8==4((1n97;>@
61657 zqtZ)>eTkI8H-m=;Us37F#MZ&rgD(aj4L+dKXkyji^x)*+`azMTaVzyDb`0tXcJR*N
61658 z1eN9tz8t(fczWRN;7KaoH+X;W)ZoZqbTCY%I|gqLMh3kDQ-cALMyz!0;KRYT!STVW
61660 zJ-A|!rP6DIy9YiFyd2m+@Qg~&4sINHKJaAV{(wxS!-LBQ)PWlVs|W6qwA)I9gIfmp
61662 z44fk^Wm9STzyN7wcmK(Oo%3n`hk?Mru7T|X8wb`=>B|Av!1{r-e(%6alE$p`{y^Kn
61664 zq5n?*O#jvXb5vT>|FHi||3Lg%f0Rm(_22D}^+);x{XQx^(0`@h-=7n|(O*i^kd<!l
61665 z=liSr$NKa7v#4}Ue|P`>{vGi||5hqZA^mOZ-`u~pf7N^%e@psX-Ot9|{mV$&W2KM#
61667 zS`)t+e-XbFAEVOdxE?<l@9ujP4^gQ*ek&f12jeyIaw{dDMf;}X(|r?t6Y-02Z~Pcp
61668 zui45c<HPan_}+L%-&lM<m5-CwGvb^2B7KqgdMYO$GUD6guK4=+n)q@m55^CWF(>!E
61669 z>&xz&p>lV8Ti;CI%f5`h$9>aQPCjM#W%a#?uj-rboBjNg>=?Ax-xc59m)4gScl1s6
61671 zo$Yh?<@FtojrV0y`R%?K8PmSlNZ+o$?N(048N1k*+2`xq-nSZ`$?S2)PWHuP?wGsp
61673 z*p1lL*u@wdJ4fYfV~=C!VyAmw#D-&WD>uiP5*v%%i^XGpd``5-+50B;r1wVejo6i#
61674 zKjtFqhpqf!>{Ki#b|9A7doFf}%J0O&vCP=E-gs|3wwcN=k@hoU<+07N4Y5^Jej;`_
61675 zmL6LgbM)r)zNhlG*sk99y>EImd!P3{v2rrbUQh2#Y+dh@-YI-`ogZg*ETcEQH$9fx
61676 zJJoxgtlw$n8NIK2CwkBJjz!=1UZC>zy$^cFdSlTi(I>qTDo^X3=^g34-5cp`>-Ej&
61677 z(V5<hy<XD$vFJo^HkD8J4)<pF9*mCl?(NO6ax%{7WN%h)GwFRjK2O`@j9%#-iF%{n
61680 zJsOOf&;O3uyytE7Y}6e+9L?$(j~=D+N6}a`E4r&^q-P|$oyzZ$_A{ft==SKA=sGID
61682 zb#!@;+G9TdgI0c|=UvZ@o{K%_df1-JRKC0CG0BFzUv$6diBtK8p7%XtJ@<OzJ>5Oc
61684 z8SD0U`+LfJHusp%|5huX=sDbz-s9+g-<{KwLgiyUyGZuDJCod=P<f;$yL+Z*UH6mj
61685 zhut!jdwWv5r@HTSU++%uo}lvV?$_ND-Iu!Fcc1MZvvPBs8QtUE54y*?Bl!Jnew>@S
61686 zXS$}krn+x;N4m}Df18yr@4ndW?LO9>-8Io&FrRn5>mDY3?Cl!s8tcxW^2en8tnOyg
61687 z&yMa*RDQ49)xExZP51IHZ+9A%U+F&3oz|V)mEHBOYsSjSIJ-`Dv)$XeX1b>FJEJ|$
61688 zu4s2w*ZQvY-K)B$yUgc*+{$aZ9bJ=MSGvZ#(z>ou`O&WDBs&$EiOh73Q2Cy2w(DG%
61690 zk2CVL>s%xl33mCqws)D&|A>|IUB|jsccpf*5qH-zD!<ybmt?OaS>*PD%1?LYMBaC8
61694 zlHIwvb8}=}=aWwJ`QL5ju}Es?ROj{1iO%%STU74rd`+^m;rHS9onusfERxna-ua+&
61695 ztn)-?jLP?R-tLTawsrc#Q=MKa-_&`r)7$9@PjnvZ%(ilKoXb1iox`2kof-HJ!X9V%
61698 zOo!$0NZ5S-$E<u`_<A@PE)TmqCc`yUz9oD%><%C981EPlXHoeI(tb`j7S1AD?wZd#
61699 zK7@VY?PRNU9l`KwDt{V27G51*(cuoKhFL2o<LuzW>EXR$w&Ml9tFgz~L0a$F-myKr
61704 z@3HcN(Cttp<O_M*r$PZL-ygad@`jGJPqa^jvZ;J4Y2O_h4rPZ9hW1kV%20DCBeWy5
61705 zsXY=}KcBaM47oz<Lu=Z-q2-}8D<|V@e->IDIuJ^0pTYNR_Bh-1kh?vjJtMTOeWu-f
61706 z{#(C~wBHP^YM*Yu*FM?4zFnm9^C1VxuC%9-+c=dEgjToTXn)>5-hRIQ6qPr$%k3lW
61707 z1MT6q>GmL%=e1vN54Jb7O}3Y}yRF<D=e~A-``LDPdltU?n;mDWgK4`#TF+^ZwP&^O
61708 zY8z?aL)vJzDrehk+PAf@ZEJ2{MWzi@CE6Zs--zi*`^xs^RHdrDs(opDM%#zBw{82{
61709 zUQm_n_H}Jf+8(yaZBuQV+wN19UF|7t_u3}guC*;Ew<}a-ZQIMX%WW51-?p75(@Cn5
61711 z*{0vB+-&P^+uydMHPN<}Oc_+=T-)ik-I%;>TiP~Kl^E%FecR!-^tPp~Ic*NAQq#7x
61713 zgEPUI)>Ew`R>j=Yl-9GYV(V~gsI?j2kJ@`0H2aRWUTqDudV;rFy=0qStMZ_AtTnGS
61715 zD!$h3!8gHI!6(7p<o1xN9Bo|{oDS;2^}%~&nxrbbgCB#pgExYy<aRlD(W;O=CF@-a
61716 zJ`G+7o(Rr<=R3cr%Shj+gHyqQV6a6GhRHVJ*-Fcs;FX|1=xVtU%pp@LRhcF|mt#5^
61719 z2h&?7S{}EYYZ-2S(PF+9I<3m`mb)#nmO!)I;v-Yre5Ls<={bbyQcF!sIaPT``t`Jo
61720 zv>a(U)O@-nld4R%G`D25>}c84vc5UevX!b_Y$<42*Rr~0S#x=Fc}pr)Nwn;1NojF3
61721 zA8LL>rdL#@p=ERP%jRdzJIHOiS+^==Pn&a^pR_D*R-11(-@v!p_MSHHZ`ss*ula5B
61722 z_2vuBj%M?<&|+1#G(T)U(>&1htT{@i5vr0-dOm?^vbnoCG+$|YNBRvmUu^a^dzvPi
61723 zk5QFJ&57p2%~{QRns+swYTidx?ld<v?`+=IyrC)76lz{eRmRD<*EFwe@-(NBDVeGa
61726 zSJRQELxIapIaK9wQ@rV5)BdK6z=^<#rX5t}Zj-NRd()OcuxTBcR#TNrO-GwnHKhk!
61727 z0asH>lf$ZzJq?UBEo<5x_!xK@c!qEO?L7^InvMkCG_4Oj4XA-F0rRyGv?`va)WB5W
61728 zdLTV8L8e<&C5!ZY+nfTg0#^d#RApOJO5j3351b4PH$Dn<Q<as08-cb!Am9yn8t(*r
61731 zB|YEAl-zi?@itXC7+BMIv++garN#>lZyLv_%JxRNainpeG29qzm~M<xl~s+`8k-ya
61733 zX3}ap{yJjsX~Q+r_qxVIjmsN8HXLg-Ukhzk<#gkYhPMq*8}>9jBGU`15+Oam#I(BM
61734 zVZ(i@Qr@_|L2Yz2Og7wXNNc!4RSq>gYq;2OuHj_EaQ*9s(^O?g1K*Hnh&8m;-><*l
61736 z#@^F<mGr%{!PBs@VMTpSgZWyBTb1h#Sq)3;-`5|he^Y;?!9i8dG`JgBOxx;b>R(co
61739 z-v{f1^}Fjg`@8GS*Fwaq==HAp_4UjB-ug5$t)wb9>YM9VVcK7xTF+9Iv-Ji3kM&#p
61740 zul&#bJN*x-O0+)Rulq&+r2nRWjsG51sq(+`-|%1cU-Yx&c8;oK`yctw`p4>?`x9h}
61741 zQI%c(JN~FYTqo9v{sw=IRUv!oU+Zu4kCQfY{73LNt@%AoBYnI5!=%-{bz^?>wa_(N
61742 zseA1YkQO)Ah5hTuw1ukN_b2>YG3Ak#S5cLlq~8_(On-9S$GU@cGgRfAe^cFyx~Fvy
61743 z>eRaJb&se@%)hKouA8d6Rkw=Vu2Yqox;J&#>aO@c)}1HQ8LD!mZo2Mt-AUh5-_yEy
61744 zUAI*sds>%KH&S=IE>h>K^Wv{;_MX;lBz-s6U8pOsJL<bqXTBD?t;*86fx1I=yL~6?
61745 zc9JP`zT%syJ72dClfQ09-Bzmdfb_e$?pWRGx)nZmT`E<%Rkx?k;d}3U<$LZs;Cn+=
61746 z&ev`5J@Y;G>AtPxCQ_AnU7C;g-Sw^T-5}Fds^as#_D%RM)xNKN?>p-ovnpgyeMfy4
61747 zefNE*d{JK*fA_QZ)R#&6PWW#6LcXfnyFT-^&~8;W`Of(~zU<mdzJp{sMpc%Po^vq8
61749 zPpQfU-@4i-wGV4I*UDs?qACNvl-hf>leNpq?ON>>t3vj))?a(8_GRtm+S9cs@s~(@
61752 zYo3wmF;%%(yQbz*&4Zea<i^+BwJKy!YZ5hjEn9P^W}@a2{x)jwX-%+pb<K^M=QZOs
61753 zr>bXa%-2GnRdLmbHN!Qb>IXH=Wa_3W`$^AHOjm0HH9o4ch4fohGggyVbF}(=O%_#2
61756 z$f~qeKdrt{eWL1Bb%IP|RK-ntK8<OrdZ0Q=RSuATBh^=`{nb@fH>zD!Woz}x>SNW}
61757 z)%&aWR-LUrNL5ylp7vDls@_r+t%_D}oUc^9Cp~SbURzaFold5uROK=0DXluWDx2Ki
61759 zs^qHkWV%9CLZs&jbE<k=b*}0(Rq>F1PgUKmid97_<*EQx$*Q_kRZ~@7l~;AN@>-Rf
61760 zs%)zosX9`1s4BDabmi%)-Be{|RdZEF)sD(Y)h05npRZJYs4A#hSGBsbyt2G%Syif4
61761 zA$wZ+glx61Dy8yG<tzL}+uqYku_}*jx4H6V<#gqaO7pc4wJKMumRG8kw<}jy-XPOm
61762 zsxn4;zGqIAZ!51?PEeI_)w0UVl@BY=RG#uas~n&zrInMF-IbwAe`S@IuWY6&2P-dD
61765 zWrjE1n@;A_m8sq-?;WbPwsNiaR^{4?w-s-_FTIz&7pWRc`Z?#7y(8WMZ@6OG8=bFJ
61767 z@w&Y0y=yAG-sKfuGEbvw0q;I<iq}zbh}_<g>6KOc#KBhNRJ`|^)250S73TN9=HDm=
61768 zt=gW7N8Y6sV#Uphl@-@MS6g2(S@F7JqT*7;*@`i$X7;z#n^OL${85Eoak8SD{EU<S
61770 zD|S=0)1;rB6`qQX73(Til-E?OrfOl*+v<t~6=@a8<=N!+j;eVowv@jre_sBud}sN6
61772 zV`Pe0HFC_#-jpXue~I#&<)QK_hxu<A?BiMXpxj@6w%lEQxNN*U>vOf6<wwiA%lDV>
61773 zE#FbTm8y~c$}W_TmHEs3<>lp@%U6+~Ye|2-RxMtBuzXqBhq9yO_O|S3IZM@Q%H3rd
61774 zWf`PLwtQRJOxa7SmR-KT>=~KXmaQ#cQFgyfrfNIOH<wM7y(_y>cD3wc8C!Ols;wry
61775 zT`qfAcBbr9>9f*jWdrlI(vM}g%OYiMWxmp>GB23|RP9OG`Lfb7SLx-lBV~ukJcp{?
61776 zEsK?9mF+7XDce;#Lgw44+IU%2+19d6rGe5w*%~sfv})v-l_tv8lm6D19WF~RGym`U
61777 z-udHM>Mu(v+fn+q^l9my(np`G9W8xPwyJcxR4=_(I!V>c{`Qt_ElnY}52d$CFOi=U
61778 zq`$CL+fe$r^jzt1$%~Q~rExNyq-v?9Z%f1yk@R@7^iFBCG(2A`c}e;TmQI&UluVRf
61779 zEcKRpsG3arDJUH%Jyd$2ba%<g(oCv$mGqWb>MPw|x}_vo5-eRu)lQWjDP38*yfnF_
61780 zpyXpoL1`LQYb)JV^1kFvNoL9Ok|$*TimJIv*OWXec~G*kgeTL+lDkxGU#X*HvgBq-
61783 zN!;W1xJi$jOOBPSE?Gg<qNJ~7B{iP?p8X}eJs&;qsG7GV+cQ(L&hy0c&?9>`d+t-U
61784 zLnS*s_e+vJcRjZ~%gF62Rom`)?iu%-_na!8@r;n^3{_j{;XMgYtoXjC%@ZK=$b7B%
61785 zz2}O@@2M)j;c*q;AoCom_Q-R>bJTOV_)PH`&ptBkv1;U)6;FDyNPk(LW>1F4{QGC;
61787 z*J9O<c~Xm~imw-^liLKDZc(+}p0)0`?zf(`#kY!I7GEyDNY&PnzRr1A_q2PuSS}tZ
61788 z9-wN;q@QT<)#5<0uh`?hRqUOwxu28Xyv3)AbBd3+&$-VPAE0V{aa-}8;$6jC+|lBV
61791 z)y)2uxnC4b7EQXZyMyj>^3#0(>zJ(-&A3my3)}~bE)-pG?<Z3>RlDz=D2f-wNsrm?
61798 z3P)VKT-(Wf4^_M8s&Z|0Z7K}7))WTFd?i)8<T~t1cP%Z<Da>&>$o#!kBgd?8*p)*1
61803 z_7^-YxKMC5|5g60f)iv)ST%CY3N{yvk^aUC?iIuf%+JWJ^T)GbSwX1aQbA2YUjDU$
61804 zqYG>KGX?H~;ezafg9UpFGN>BqFaKe|h5S%{sGy->XTb*Y(|rGHvud{sjuosfNX>WW
61805 zy9-z{Eu(7Z3u^NB=kF&yE-Tob|1tj^Rf`p5lRmTaH|K9ISeO4K{~=YYD%hESzaTmP
61807 z{HnYg`L6sNGB2I4<$cIMk$*J*aNe2xeR*fdd=FK7oZp<Ek-sA^k{8L}M5gstjU2PQ
61809 z0{Izv>3Qk-sd-a**U3He{V#6Sa`Im0UCuk5`!@G&-bpf@qiTEd+1%;eY0~4lJUMS9
61810 zZ-A<;Cw)cpp5@-ky_I)0FOcV>YAK{2Z{8`=_K~~;x##i@&DU~YklqgEwdL)}+m##5
61811 zjpl8kYGR&?w7Vv6d9F7vjZ7=4+C<(y(yk--Q0|-DS7iR4s-4W+l=~w0Y3}yi2V~lw
61812 zt5UUK-qKt#_g?Nwa=S^UYgUaMv)qE*$-MQslew>RCvwj^%zv+EAJ5#(+zYvS?#bNl
61814 z@!ZX1+DX+O<eoIY<Rd-q%=M5S)={;aq_5Sv!JO=z?A!ynX}QT%?QCvA&d1y>Ij?e_
61816 zKKXyRdLOv9zO#P(-kX~cLI@%J4<UpAAwUQr{0||75CVh{LI@#5)-kMDJFJY=S~JQR
61818 zeh&Bj+;g7i<eq!(ft!B3W8Puls|-!!ec&DRUhY`;_I9iT_b{|r?~J$G+u3oq<F3~M
61820 z=%Kqq*P-)jI*vPbphm5KUqsqfZ*0fYj)xsmC@X-+46War(?N6)z>hoLcKAE)F*LVV
61823 z$YX%A2Y7)r7&Fh5=b*z1Nc03e)cdbrJRMKZCC?MjJI{(|-ox?Cg=k*Sl4r*=>$&Nf
61826 zFB#fRkEH!Y`?L0qc18O-V2hy*d9e1i_6O~}_Qm$Qz{?EnZ2MmOT>FgsRr@vfE8wdP
61827 zt-k$H`*{0^d&|Amei_h@G#ImXRr?_HH`qSkexbb+qu%}ecs$#M?cME@?ap?id%9is
61828 zq2_+wZfU>RUec~<&uEu2H0aO$qJ7-m?e1>(w2RxhV5#-*3ewiv_3roXL$?LWKH!+4
61829 z&9yt-Iqn?b<93;Q*ZrKKjklM$p8^DKK|ASQcds(E3+-aJ-~G~k*L~Z4qwUyzi=jE8
61830 zw_ENF_f_{;+taqE?g55Y;$C$3yL;VTZGN{G(8JKg?rUzh+tGH*ZFU=gt*2Vsd-r9x
61831 z&Rx_t>{hl71IroOuDjDMbtks<wDq|801nb%%-Yu7BIr-#HoA$nBaC`~_2cnuyW950
61834 zLt9y!$~D@iJ=I)?(3`fct4-b}ah-RaZxb@K%{FrzrwwzxcG+F806~U!uTAMXaP7IY
61835 zu4k?-;1>+-MjPMt#P!G(?|J};cP%rt0oRdh$u-{^Yz?|*0Mkf=F>`gf=Gr)}IoG!9
61838 zFB#gb%hbB-61Hx&ZnUnpid)wi+Nev>y59P_b-8uX`QG`y^)^F0-}<a|y7gM?m~*#v
61839 z7;u%L*;^m94z^x)uDABK_5k-YG;QllYj<m>^KPrdc^BBq(BfN1S}m<c=T+y`)*^r!
61843 zy-u}L>6Elwa>fJXr&`NPr^6|7@>{%4tR)D{VQ3r9qLw!;M=geyJ%FL*1w&hOCbk4x
61844 zwp-*-9s$;n24mK8t>uYR-SVX6UCT<#JVw0>{qcCVTy9xv*=d<=nRFbqjE88QE!SHf
61846 zhYxx*we+=UTU4i-;~4r<w2V5=IL@@VTH;%T4DBiO!)qyX1Rbv(FC8YwD~9H8u{&P1
61850 zfTs-Yj-#Ym&@2Fc>L8ofn^zgyghSlycZluB_T%Q4&3Bt`GqgVF=T`GZ^VR0D<^lWD
61853 z-X3V?+8^8R+eP-J5N*=FVn4Jm*zeeH+OIP-9`r{*Z?hEaoAxRDL{q>%3UORMQJePc
61854 zdrc3T9w1(_U$kFfsO$E1i2s`1ZFe-?vYP=`hI+?-$zEpH+7(ShO+$7WK*dnU?H;?>
61855 z9^2Gy=K=_TfT8x<bxrS@-ZYt^95n3#A2C$BUDEWT=~<Hk$_CBrNabQglcs6Yu4&>z
61856 zdEd0!w183Xw1=U;Boj@drlqExrrD-R+kx$%Y5YUg_PXg>6NR;=k*2|>{t)$P)1{`{
61857 zO+8IrO)lF)lRZSe-{ff;ZK`iF*(RGxnlua*Vz$jRO*iRioNLNy%CPk}Ng?L1Aa%HD
61859 zZw%UI0MmduhRU;T*{<2HHa>5BZX31@0FRxjjfb{-woA6Y#+Aku+gX~=AQkd$d}2Fi
61861 z#`leH8xI>Tjr$?0yYa{-ZQN-LG%6dPG(KXeRLlmOwsDIF*0|RAppn<O3^9KhsWMxv
61864 z*4Sk&vz9fgtw&bs&9^U~jt1N&b{mD(E$gaP48<R!YOD_%GprA-$JTq+1?y~xDzeU5
61867 z8=g1hG;9JM1D-Nei<M}2*s#*ThqBZ#4}71YDjW71<{D<|U)8^AxJL6;q*D3v8g4Ya
61869 z-Uc=FFR8!O5FesWHOLz54Z;Rqy{G<t{ac0#G1vPVx*G@@n)>7V!+Kr)KE(V5q;@u#
61871 zdSCs;y0!XqfNsErQ?+ide!9N1-d%UQ?smPk-VE$usO$9u^@jSgy3xAPdKJwIq(Z)R
61873 zJ*_9}*6UX5?$rtE7D7}_-Tk`#x;u5VmZQ4sb(0L0iaD_^ST{}MQQdgmh-Is85MuuA
61875 z&QT|-<6FFSn8j-eg5@yO;X1A5wdIvX4`tW#9QY+eJzE!Rd1~3TNTEEWc?GGEuf<|{
61876 zRHw9HP~KSXTjnt8n-m|9hDB+)Yk6jwwv5&8*6vz{LsXt+!g2`kTLvtbEayK|YY#0K
61877 zEH^D@EFO!kcFtl6QJ+{GmO+crqN^RVs4Yr{3NhC%Tc#{p8eJB-MN)g-5)Uzd9;r7h
61879 z?QQdM?G3;b;1)xb)jqDBs2w$Lo40FywHJYh7%EXaUwfhUoO#*2T-!;r8>x`5d9Svs
61880 zcGY~te53Yit)rIu=HKT}N5i~cYpU(5)z-?)KC`b@9HQQ-&8Qs#IBR2T1+_$oI$q1E
61885 zR?SAu)ta%I0n^i(OCc(+W~gSNrmyC_>3+?b8V^H-m`%quYc<_8CTpBEHq&&C1!Ddj
61886 zQnzbvn+8k+i2G}bYSavMxn{IRQRAwKuMwKg)Q|ukL%mT`VtQ*jHtm~?P<8-^4AobY
61887 zXbPCNO>)yCz#8BQL+vyLO%F`VCKAeB({12IhH5Z9H{CMbsNS#MH%-tyid4wgBr{E#
61888 zj;bG3KQgVDhD_9(&!0OT4HIGNH_e#3O^)ij)pt$S57p{Dlgo4uFl;hIFWL}w-Be;a
61892 zW5zCHSG5~@q5i)p1E-^5oT=tjml=b`m(+)E+znBOjfd4XfY|ul_|*6~L_KSKVti*@
61893 zG2S=M8#%_g5Y=K_G`=v-7^kaV8m}717%COB+IVc7qOl6S3{*WfUV@m%kt#H9SIt+=
61895 z0mp#%4E2UFr|Ph3zp4mIplTa<hoSn6{HiBakE-IKJfL|QsgQ3~XVt1vW_W9OTlK1H
61899 z>kPHTux1!B3|4MbZa_P|z?T_nqT#lo$Iw-|P`O}m(QHR5<XagucntR|Co3lnqlS6|
61900 z_2&QZ>1b3wH|PxK3^|6x%KplJgD6B@F-Qyp0IPv-;8X@f)S1fn236&&%9oYTD@!V$
61903 zQVEa))C_gI(pxF1jMtylpRMFolE6ZSx?HK(zt_K|9{Ti$H18u7^3~taA5}W^O1-jD
61904 zs^8I5-vavL>1gPE`mIV#zouW*^Pt=fQ9JebDr5Ec^t<}o`dj*`5Y?c+u79W>)eq?}
61905 zRy@&P2vKGF%lbL}IemA<qTa1{FjOjLuHLWr(iqcQ_2!BxJ+=QGIZ-PP^fxOmR$N4U
61909 z;OlxSI3emvg|Na<f$4&}dfhACONI(D>*gw)x?>tL-LCGrE=Nc0f3F~QtfENA*YOb(
61910 zx`(<IhI+mtUbn2<)6MB-%3tZO0j3$MO}DNa(+%q`m2Z}B>iPf!3{|bWqdTuVTfU_8
61912 z6PCZnsPAokJR0T8Izp!@KQ7-X*Fgz{s5i>@bY_64e7pQf`C5qTD_<{vUA|ntSbn?g
61915 z@P?r-l*`NZ%3hSIplp?G06$}>ljUUDdf9530Lnd@7my11mi3q2FHbBzDm^OOFS}Dl
61916 z{mTbqr=wBkDw{5QR5o6Axpb>^tE@jnEh!r)dk(l;)?3z7<_%F3%g&Tdl-bMb%k-t!
61918 zrLRk0G1R#-OX+@DZ0Xa|%~EOUL%?H(I#&9o^nU45>0BuWWd<<MP|ue>E1fRAR<c_<
61920 zSZXY#zVrFf>1dQ3mugG9O68@(lJh0!OL-ycc4=(sMS!W4EO}pY9HK6lyeZ8n*)Q2C
61921 z*)CC+JPA>6lsqftlsqa~D-nX{B146kONL6tC4LGeFH7#0+%7&Yq4vLnNbN3pSG--k
61923 z#l8|5Knzfvs>KH-&XU*?L2+ksX9-dK4w%bOH%f|%-xMDe8=&mb`~s<vZ}CF$%aZzH
61924 zS+T4nzW7-&_06xr)6poNEPh=4w%A{Mr<i~;8>03X&zJCv=ZgcyH;b<qkB6wP;;Y3E
61926 zR@7V6i@3WuqgZ;X7VQ>aDvmEU7jufSB74zmK#-w6ELIe~EZQx4TBL!p33$#>=Zd*S
61927 zkBc4_iHhz6mH;aZb*$*1XufE!@O9zqqUoY*z%vZ>e9=bH)uOS&r-e_8257#7RLHl;
61928 zRy0(!Q+U7de$hfvU(p$i`o7-Bqfw+T>Moirauyj2rwgZxbRnv+$Xs+A&|g#pp7IaX
61929 z!s8-Ek*g>kyvV{ch3`Yu?ILbbN#WbV<3eNMe&G&7g_sK;6j=)oXe1T}3bza8h1C9c
61932 z6ebp4);hF~LQ5f6OMMG=^mH_|8`@x@QhT6%rltPd3Q-rd&kOYc9{8<m{UPe4c13##
61935 zwVHzCg2MtGlpR0-u#fa`j3_Wcg#Q=9f~^ATZ{e2#Uq!kcA_Np16)Y9ZYk~zcAv#eo
61936 zTd-L$RWMO7qzPyO1-=h;&2GVP!D2ywL9fPN&;{^@=xYVt1(OBN0-I)9GhJXT&@ps~
61938 zP<8<O486WUsM*qNXvCUTfLP-PtTS|_=18-ona>aA2Q@Q*X}}!Psrb2?*#hDOnoZ4=
61939 zhI;?^E2sJ8ztjwCb^(i;eob$_U(*$$Khkt-CN)ltO=HZT&Y#xkLi9TtlcrCj)u{4)
61941 zalTk1%-_o2fZ94kS8L??Yxzg{OZoHapgNd81DIpzg8a?=sr(6bAb&_50QLb!Pj&UH
61942 z{KfqK{9d(R?a%K5cmX{~hxpY`^1Gq^6HMki^KBUQ-M)|WQ!nJ3@@D~k`PzJy+Ltd2
61943 z(XZyq^Bwu3e11Nr_Cg7U=oj*de2w~8eW=!{cL0G9-LBrv7pk|^8)`9>Rkfd?Q}Gw&
61944 z%kzSH!F;)TO?{+ZQqSiF)l~jNNRQ1Y)U)|SULY@^-c(PiC%}%L>Upo#yXs-}qPkz*
61945 zo9EB-tGfU_41HTYsdlPudDCiR-ZZcdU}5O@)O~8LT9xO^^QmP3F+hQIh(GU|S`O`>
61946 zz@ZkY`55(my^r(DyQn7A-2hGAao%B`E^jA9cjfJ>g?U?f8+ogFVkrI)y(n)j?<j96
61947 zZ(bG5n*mIR=&^aTd7F7tc@wIDDv&pn=VRy)Kb*0v@~ixLyLrQTi+TNdy-=s}{{qqj
61948 z(0+H`nrd1#oi~~1%(H>DFmyk(Z_4Y-)8?sEK9w&|22e2c={!fCD37o5=3y!?lpxeN
61949 z4BeNfQ5~xeRXQj;fB;}0=@37hv72W?5URFR)cx-Zr}=^RTAp0BraDqBspfNos+ka7
61950 zteRDAs-{#Es-fIKZb0SxP=_;yRg0>ARd23e)dlc|=mAx?YEtD?*>b0Ir&UIkj-f;R
61955 zE<l_k&K2ft<!nH0ouOND<vD9PM>$J5^Vz}dV9pF+j-e}ZHgl$OCb9!LL)igfA7GTB
61956 zb8;4Q`g3}-{n`GUE`S%%gLH^Ldq1Ze+CRZ$jx&e4|9$>6zwGrKQ_d`)FGriB%J${R
61957 zLiD*Dd5$ATl*7-#vb|7(A^K<zk)z2z&OXf6W$yq2A$m{tZjLZ}D|;hb3}rRj&(I<M
61960 z9NIsDBU_YB-T!>2`6(x|iR^BGMtQ6}RO*yFA$qTJH(RLOQf??$m0~FV5Z$I+QywXo
61962 zj-mZ-<yzKs*0gd`=~UXlS{V8kv~N=ODYZ&fmM_bvlmQeBeM#wnKKNN)C6?ud5`-Fu
61963 zp-(9_S;tw2Svn{?fB;}0=@5Tbf7Y(jgdoh?%A)RnpF7Pj%bB&NlxMAF9c3+L%`1Xg
61965 zh7R#7o@LD{d<q}*V#?}+-c(Sh@*hC@eP~~vHLUO|yjc$DjSrT?&~HHdM3zQztT<HY
61970 z#mxT9-VA?+KeG$q1@s^t;?H=W*$wTVU^3I0N!|a(PxH%ok!i}D1@vWVGgTSBOj(G&
61971 zk}1!0WQsERnOKGwN-#vfl}Ti3GLAD2Gjtg{fIx^on6aBF%-G7<$PhzW&G0jHh(F_O
61974 zhxSk4$Pi^v_rKxO{L*h{5E<P7P5N>AVY)7TCqy4f-^~!FZ>4XfucnKk_(Sxw>1*jn
61976 zh;$yb-<`fDpO#OjPo_K5ZD1{@y8HmzH>LNbYtvP7pWK%&11K2!<8(*5D4j3&rekt1
61979 zZj|d7I>euLB%e+5rTL&2le|x^m8+mm<v)V-O=w>(A5Qb8dF2kdNX`e#Vd#s{J|Wkn
61980 z9j6_p>7eWY_8I!5T$r|%wvi@ITLp;I{D5_a-j{Ziwv;w63(A6NGk|Hp9MU2FG)LO3
61982 z6U3lRQ^|a3GJrTl-%OK345Bo?%q#PzVX`1Yhxld7Y27lNOb5L{EV5(SA^b$;e+B8+
61983 z(@e5mfLJC@6Uw$^8&F$k=$F#uvNhR}Y)Lks8cYq!W&m>x-7VXcP01!w1G1si0I&}*
61989 zolgl$X8_Y7dZ%<&x+$HKPNW1<0@5L=kD*iXo20ub{uIA-S2`?Rl=e$|p-$!h5z^(*
61994 zV4tDiNfAo6BpVX3WECKm_yOw-eN1vBS(3~r2a|)68Nf7P4(SlT<eX$Sg*bs^Q!*u?
61995 z?tg=)`AO;}!;)RVqNHEao9vf#h3HC2w`5Y{l-MN3<mu#Ti7rIvN=%YIiB_UY_DN&_
61996 z@rQcyONm_KkccGwWN)%pf+YtTI>ev+MADtCOV&XzghZ2koO}pBQTcxf=?fB5@-9G}
61999 zCp(fw$^2xD`ue^&7@|K(CXzMcWAUL_C*A=BLi7dkZn99kCEgHI|E-Gs3?1SZUrUxJ
62001 z`Nds;9)?~do)kO9wxnsXF=-lD2e2^oSaF|ND^?}>l6+zrKnzeI9pX=VEtW(3Cvb>G
62002 zV(R`kdYWI-wwMri12jp;Nry?gq@57`Uec~un6#C&k+hm5hT;#=uO+P|9VIO#%_jzv
62004 z*2Ei$H<AoAmjTSkgNG4`w~`D=w-PTUUP_{By-DgMB}RQ;DIEPZi%1+uk|fbcbS1iy
62005 ztV#SNPKbvWVyB=?JV@M2)Ixa{;!&3PEQyo&C~+-On79lOCN73}#KZBu#JR+ogjWf#
62006 z60ZTSGCUxcgka+9gpGs^#A}HoiGyG-LoQ!I9?ueI61x*S6YeJ5O?1#~1-Ow1^pdcg
62007 z=tx{l7)uyST!h+SqA`(r3-BwaaU@(zR3~1gkkFIRlh~OkO-u~&=uhM)_5ySX?-Jf5
62009 zo-he^9CG>ciAVeqoP9CjLi~gH2MOIYcLL5K59lTSNkVtRTKshUbix|cCKH?q)LUR*
62010 zK8+)OKEaqULm~ch{N;oT37UkQ5RdT$X~H1DmLN#r#=D`s3-LG?|1KdX{xE(&z9>Eb
62012 zllY4?UjX=!2lNuRAAd1^J8nL1K7Jc&v+-x+skeZJPUDDs81IZ<q7XM8Hy%F}Z;IE4
62013 zc+AFY;wJ%T;$`vTxN~vm;sqfdL-B%mecb!Fw{e!ZLx3f2Kg8oq+##I%Jnm^+29(Eu
62014 zhYSzMCC(I|6Gy}mCk!q5<L-f7fLy+SJY;b8jku}Uo!FhYQJRMU6UYO4iG3e88n++2
62016 zg?QY6NbGUKI9{wL_C3H8`!>Ym5=5ekeHHsMwgk#^z*B|?<Pz(R)5pSph<ULavFlJ-
62017 zg<O6cd6dD~cVlnI9LF5T-k^C3a0_`*y~M}fh<zKg8M7Jt7HaFUW3j^+^=*=m<A`|;
62018 zkvydkvk<codpou#wkyPAE7lcz4=@~Sjy1$g#7x9$Lp&B^wXt2X@>ogC`B-7hd0<|M
62022 zF<qiEQ5j;j=ty(`wLQqihdj=~*-u1|sEIFnK=U$S4S7(#SVRwEB+;*<U&lzm<3Kbo
62023 zqTYh_G2+M&O^bpQqPL>ApsjJyNQeg^x-5DIm=m27bw@8oFN)kBdPMJt+@cZa%NTuC
62024 zR1|#`SRLZAA}SJfLtoP9-soPD2*77}KrYd<qW)-Wv=y;YL`1)X+8fB_bI4-|&fbX*
62028 z{-%(63vPfBhfBB;Eu|3kCh85ewII9`;-MAZ6utvI7ETC9qqd{Ag}x9Eq0lG1BRnrW
62029 z8?_|#L@fb3KlF%tCG-eKh4n&H)MV78umqrCct9>uTf*y67osj8J}XoRWnjgS%Q*5_
62031 z@vufM2nA6KQO~1pMcokW3-+TXLOhgF6H)%Cfv8J@hf(JR4}s5ycyOZ5N8O0>M!5vD
62036 z@4bH<N94`O*8&#}Rip~q+KYS<;^B+j5@-Qf<XYr|NFJ2M5D!n}V&sd+naFAW%gC$z
62037 zm%w8o9wm`i;oQN<%lvizdSox4hv7lxB97eP-{#*&JRR8?=?3e7Tt-ej_-`XGN9rPr
62039 z;xWbFi!=j7{B8adz68ozh({lPjeo>n;?G9}`7;qg;OP(#JAVewo#c;4Jd1e79|T-x
62041 z^QWP9j-SJ)z6E>bG>(W3ej@)eg$PH4gKyz;`9z4v-H11QHy|ToKVm0B4P`sTV=Q8u
62042 zPeeS7Sc%|AECKit^C2ERaC|3XHsU7lfOilv2^eR1KrRv1h$G%3-Xp{-5knC^uooeh
62043 zG323)xEXOK!o!>6%|+N~wg8;SgX)D7VT+jOjqpYy=Aq_`&__^jfsUQV!P|?-i5REA
62044 z>*jSwcp}6Ru^}F75!{G#fD+zY-Z9SzWk1AYhPNLP%X`Y(<VkrC0aD&dh{qrtKjz)z
62045 zErh=df5)2z++=t_F3>j-9taPdFtjwqn*cisxqO5?jJyS2AMbql{qXy|Gc<buXORch
62046 zi<EbUw-SCm{5o$1Y7;y=kNOteN2hT>zk1$H3gH*SFY?awR6Iq9M}Q~h`2h7i9*+!n
62047 zLU|kFaX<VmPZ9nyd^cPZ{uH1I-wg4%9{v>0T@POk7eKiOSYUWSF5y02EccLmc*4-q
62048 z?eJS*Z$K`C$io9?4~GwMA9Ejv_tAVFa0z)(y_AIag>Q22aPNd~LhV*~SGX6W-by}=
62051 zxx+LM0LG99)r*}w%-s$1hxxg?P+R2ob9*uB-Qd$WRNOA^Duu8cVK=x}xel&1#Dm8*
62052 zaBl&6xoWO5>{8ezuH-|Hu$Np3*UIH{Ibp7_Aix#&I>ci=EC}ZwgzbfCp*#a@F+3ob
62053 zu)Ex{FkzSwF(>R%*c#LxKrW-mV+_uo3!CA*;=BsGM)Os`H1eQ&=?S|Q_L{T7*$8_L
62054 zwY9L3FlszU8F84y`op#;aPD&MhRuX^hjoT{$ip0Ai-5r}W0;OJ#u*D!hj?IN>afl*
62055 zX;>nsCyY=1L;Yc#4?Q?9!uW9RJI))98Oi}*kKqvk9#+mln3W^v$Pp)U0-SA(dM}pu
62056 zv5$hY&UwvQ<}9+`v)^-W(|jw$hs&7_BiI3U;DkAwoGH!(M!g^Uu@8HXGsv0eT;QBz
62057 zFSD09oiw{ceAYQ$j-Nfno<ckZ5t=dTJ;_s_SxyP(EJP(^UtnM0#L_GX@fqQWIQ?uZ
62058 z+ltu8A=vLQ>V3gepDy+*j)eV!{fw=EvO)8Dh>wZ=n3KaM*u)95-?IJedl>cJ+^LV0
62060 z=8_Pf6}FB&P4<)hh|jTe*cll09@VMOG&`PcW^>pWX@~Nf=2sy;1LQH=N#>9_h-Kt1
62061 z`5dF(Cpz`<kWa{W<O+G8<UpCHc`n39N8V-gSi7v<6DFUL)8sXbdavfxC!QQ7?~#|t
62062 zKGq6rg*;31nGbzfZ^>?QjWx}hMm$M6NgGDJUvlcRO&Z8vQcWsZmspob3C-~#KFg$-
62063 z^s$^QC*pdNN0J!zp2exp6zdI{!P;l-u+&htX?_yobCI=0YFRuM4>87CV?DsA_YF>c
62065 z(`@+Ahd5%HShIwW@FDJlmQ@(__vcfe4VIK;gVwl&8_GMH--P%q5J8rg&=Ok2O5%Xn
62066 z!>GT*p8AXvPgx|fPOK8}I8NN7c_GB7msnzn@B{qdgozzumbi&ge~&!%sVA-y4~RkH
62069 zzKrjI=M44=dxc-4`D%#IS$qmV#vWsj5wF5o)O9+_@G;^S@SFG<+=I<wbGVIW%f~)A
62072 zn$0xV(*Esq-A=QU=2n_5wAw+lmp)QQvx8<E#jK|^|1*8WMc1kEBCuaz?=TFP;%OKO
62076 zVJdtYzlr5ha|6@h-@uo!0{kBC$I9^s_yf#{uiz_KHC$b*m<eCQ*RUG6${%88m}}q0
62077 zYVq&jkFh%Zd-(UT2K?{wzsIcj7XFV|BmPft-8bR?g8vKFjPKw(m;>L%e}J{%Kg9R3
62078 zR+u0EiM8QB!heLd<3GlKf_Y#DhGD-%gcCgM69gaT)h7uFk&AT^Wkea)NBsi^*k`DJ
62079 z(gW)!%!Cd5EMX^_u>qn5X7V81gFb}~6TeLSDt49lHR9K>-y=Rv{04T7_zdwG?DvV^
62081 zOT-fPP2!uxx3CqsPkkHvJK{UUcd&00-zC0_JtDqGY+~Obwumk4d&D;J@7NRK`@|2h
62083 z^5^8waUuDR&BCMEY&Hi^VsqKycru&M7T_uDXm%_vgY`BE&w%FuDXwH^v-9w5c0M~F
62085 zx!)${;qLo@ct~tO9?ywA;*fYvyn}f85Uqrj!BVk`SbCNj?)olPC+jS$7uKx-)(C3?
62090 zm@2F&Ob^e}Hh9wS3_Bav8+I{l0G_rd;Hmp&*zK_SuzO(-!XAcggl)sFWH0Oxp2y#D
62092 z*zLXMz6&SA`LH*WglE9ct0-I_ZVtDFyTUue&xZHHzH}gb1omXt!f%G(hWq@tS?jEI
62093 zu&<GQe`0YKvf;=Ik&Qz(9@zwB6OqkCHXGR-WOI>KA*)6<A6X5u1;}cVEkw2m*<xhN
62098 zL-v1={ofNyV94Ug639j%8;Ps{*(hYud?ccg6(JjgY%H>9z7lA@5@@~>Xuc9j$cm9o
62099 zMi$La0?khX%})Z&PXf(P0?khX%}b&L*-~WD{3I%nMe~!WL>A3c!iX%Irv#dx1e$LI
62100 zns3B8Wc!fqNA|PGUPSgck-dcMZy|dbSu|gWab&-O>{pSUL>A2-0?i)+%^w2IAL9QY
62102 z8{!|3-9Z*z_rwp8-A5M91L8lCMe~995wd7r5I;ut6|z4;7R?s|%@^Vr+2Dy~q3fH4
62103 z))y8VSq`#c$a0ZI>ksU4Pb``j@Pu(<(fnYc`N2Z-gN5b?3(XG}njb7QKS(rhNi<(c
62104 zG+#*+C!0hTwZ}&7vC({DOOQ=LHWgVJvT4Z5kxfT716j0AvK7c?A*)0d%{Mk$=h$c-
62110 z!ydepC?_i5nYEHI5JsY!s3DqQuYHc_Bl?NY!qe+-5|@bIA}$j{#5nO4;;Y0Y@w>zn
62112 z68pq|5dTRW5I=(F-X9aMh@TKg#7~K1xYh|4b!BtlYUaWf%!8|z4_B%Hu1+Cbks?+M
62113 z`G$N;{(=m`vuYGu$c}@j)f9FrTgFaf%h~Dh<eJG=u(Q}owuW8CE@$gt-}n|AfX|zQ
62114 z^I_kg2s_6N_@p&>34Ep|ydJm1XXk}ast5LL{rF{k5Fep-Y49oCr1oa;xhzooGT4c&
62116 zbHoL>%ibY;FovVB6PSWAy9IlJyTl@l)&pV<cA-y*ZPp?YVBLrN%_{2=jMO2F%Uj|-
62117 z><xG@2AiyS*dNGQ&saMwB})yv1RcxBvcNvU$?~wyz)s;jtB-Yw^^$c2`-Nf1UJv*z
62118 zMzCtI6q?h3&(K_h$$>vf*FS{`fIorp>G}yr0yogV$7-axiRNbdcq<kI+(sYirMa6v
62119 zs|J%%OiJl`6V(oROt&Va+M(-BCrr1~OY>*x7(Pq4aEAOk9iftD>WGh4J6KmJrrY@x
62121 zd-T#iXXxXf#7bxu)7jmnv!nPkG&iGm{)}!viRLu=coNN3^bv|1=rO6mMra<Tb0493
62122 zlpcW*nn&rgnyDDbm-N{F7tOC}-lh5LH1E@VM32eIXwbRSK8^GkcF<$eM7Pt5#nYc4
62124 zx`Hud(N}>0Y!kFH1-2Qk9|1Zpru~G_GK;<@BTvqQwkR6`EmP-3!058*tB=yDYe;b7
62126 z)-SVu6%(<3jrD0Pf%WUGU&q9(epWx03_I}4n1uB?)&Q2q8e|P(>8xSa2$sPbWqpKY
62130 z!n&|eVcpm-V`s6;*l%OMg7sj(ik-uL4f{0Ki(SBegZ-=6SFrQgXRror5c@Lb!#<CF
62131 z0sA8MC2Ruw9qiY!G4c-iee#FoJh?zFl1t=0a+$nO`pF063b{(Ikq^mr@)7x%+#sKj
62132 zo8%U`O+F=`kpc2K`GVYG{}Oq~?qq+0{VVJ<SReb7>@Ic>`%|zUe-b`LKK%(s!F3r8
62137 zYu`7Bzb6)mbz&P<%729NPjKcI@da2lci{<Q3-)cWSArG)0CtcB@tXQgAO2k^--Fiw
62138 zko*NZo~?zoO~fu>7qWTe8#W(S!g5#zqu6nvma%iF-(|7Gpm51wP`^!uXPX=NG(2nE
62139 z#h2mPVikV~tJe>y-v#2wu=3nvtkmBmR*1hL{+9R_tk>Tm9uwb%HT!$8CjA5PeOR$y
62140 ze!OPCqSx#HB7R1^A$|_4(=TAX=8-}2f7v*!$<gc>b}U;A>$3FYl{tf6m9yEoY!y3?
62141 zt!C#_D>LU9tAbu<iB(uT=U^R_5^@+B1(5@5ry6!jW$;|GKv;-p03F1lgX1QsTVceW
62142 zvDR3RSzE*l7}W!KdJd3sh~^zUL2y~StOIyvh-DqKf+WEblRTD;SYjzyDwdWM5q4;o
62145 z<HHd3EqoLohx^AItlxK`^%d3<^zerD7{3ZFzGL|zPXbzAf$VqTiS{uZ-6FZrPAp_3
62146 zBNe2I{*9iNEF%r1nY5A)(oJ@fdt^6xNS=dh_5wadUW66`qz_`-#jjJp_hap|`4Go>
62150 z_#LQ!2J8yhZvy@c>Q?{{;Jj>@CEo|UgrCKLbU4-sp#EYJ0Q?64`oZ8FwiVC<57=?k
62154 zYdu&#wT9FAMbiFh|F@kJ3r`S~y@L9?g8I9H`n!VqyMp?=a?&3?I+4f<X-oG9_N2cR
62155 z)ZZ1<-xbu~6}ms1RSMTbGJN(w0-FMmK>a6xH&BlS`vbU^?m_(+PyvVrz<C&T=lv<v
62158 zSAd_<duANl1-u5oTL1w-1b}m~w}2x6i~vd1_rUI9EGj$d6QQ%DMwH4tlD4t*C!P#h
62160 zksu&qj1UnK^0D(l2mvudiWC76L--1ah{#tF5iwFkL`0;BITkTSiXkFWN-3q3Qc5YM
62161 zh?G)FIb5%=!(kY%ufsSFFT-&dhG7`S!^_WM?%ErwAzA0l@BC)w-g)mkSw9vl&t4zT
62163 z3-Cb33ncd>CsePdR(nNpxrzEu^$Pr7?bW8WUTs?I)uvT>LiU06+J0Pthk}(!1RjM)
62165 zF+hi}@OHct{}z9M_u}8<1GEdY0@_8|C0Y@!gm#stp_S3fX*Xy(V8N?^<-SX6B%kO0
62166 z8#pNZci^Fh;vxue@%I0AJ}}_-?xwlXd}(h31lmvA2XK=_P$9rGDa`{Q+Af+aO-#Nb
62167 zlI9N3Z4b?x<^vGxEr5M{0lo&3$0vZ&Zu9{9etHN!lzxD|m+nV@o9<8F2M{ih9!x(-
62168 zSAY-z`n((XVfDcO8UP;H3u?_z`dvM1KGy(skA(EPNS}-Jv}Rx58CmnQUVB*x@Uym3
62169 zz7_ZN9gkl;D__v748#*#LH`8%7aT$V9!Jpz^v}>gMgI}4#U`*3;H`X%-owVR{{j4}
62170 z{~LRX{RK9R{U!G2Xf3J+IsXoLIKM&f(`9rk`X0JBeLLL;cnG%iP4peK-+|ONx&wV9
62171 z?Vmw^JgK`PWN(JhU%&P!zrel%ed_>z<*GN?Pxb95%9|v8$$!Kasr~@3k+!nd7mSX-
62172 z_8MJ*2TS$^_=pI`G}sjZy+)8S;AM9r55aowC2E6mQ8^lkrlW-j^+7AprnOWrh%jdA
62175 z6V-rPNi+~0!~ii$OcD!xjL+nA5o^8^U&8m}hw~HpYJL%4%dh3P0%{Y#i$BC4=VtS#
62181 zGHIV1OVY5rPSUx%Q!3s4P&(q4ES;1LNuKO}E}7Z=Qo87-_pp$>@^Emsb!W?LqyaLn
62186 zt_`vlw{%&*TfS`E9dn&=Z*+a-RwkQutJ#CO+ljs0yTrln!)~o^eR~|-M)pYEpNb3J
62187 zXWb^<SKJmQ7JGu-1>!m>L*gLiO2kr`#LrzWZkL9L2c+?mNNJWNRa)e(l<LG|(t1g*
62190 z!ex;qqLl^6;$&)BsjOPoCL5GJb$uqA-(#`IX^+<)#h&Cnd17o&x!7(`{hqEpkM>ON
62192 zZuH3(cll@}{XR94QJ;3nl=!K5)@Mj!<1-<7>9gQ&>Bew(bmK~#<(BRexwE^!o6KG1
62194 zK&0UUTWPYuNtz=qbsLoGB^d&-v`HYBb_+tJ52X{50zs^FPLSq-2y#4_f?^Lsp!M(;
62197 zZlxlIo8Gm+wOqt?trf}KnnWRP-L7qJ4_*6RM@8}C1yPpUgzJ>soa;*oBDQp+iHaml
62200 zU24q-wt!zEmGX7KdbaSpf#n=Sv_49oRASaApU?2o3afn@ge^YZ{CJ<o{34$zVXx1!
62201 z@UfgBe9j-_kIM!8Wx1blK^`Nb2|QgJ1VMsWd8UXZFBXXe<*uEAT5+79P2?-ri^AnC
62202 zu0w(;ai-v<xKNZV%8~brN`;PMtxzJa6Y0h6q9#$d(BJimP$eD^Jrs|LCdAXCIoBCs
62203 zns`Z==VtASxH-8p-K0P}1BBPyVq6KgbXRY;e6cOB!L7`###Q0g>YCuzCuZ~7-9~tQ
62205 zB+m$?WS)q3$A}DfJ0g!LB`SzIqLt`Dw7fQ-Uf!tBDDS1u3qdjAD5xMLgul-UktVkj
62206 zG!WMWokX=@h-e{t<znKwJV5Y-PZP}WS)ww&i0><p6TIRl3vKy1q8fgws~=x4Wb>PZ
62208 z(TG6d`b?1EIxn0SW5Ok|ooG@l5U9m+k+oPUauO$s7P)2OY;lQ5Dy|d-h#OrkxCU_-
62209 zw^2MSekzI)&x+Ey9pV*kzZ--5*p2HZ6Xm;wxH@nr+~T=2Zdu$Vw<0&4tC(luR?o9@
62210 z>)>(S26>)t<2--27rbz{WnKa=la~+hypmUsXt{cy7;d*uCU=56$4}=W{CpmhNB9);
62211 z6h3->8Bfix;T7{+c@?|{pBCN_?+L$;H^U#{y%J^v<YyCJ{7E91zevOhONdMnmnali
62213 zJ;E-&R5ZvB5RC&3ej#`!S_ax_!;f)w7R<YP3NfIyPdVAHu|QkxTnmH(*K*-3r^vOI
62215 zT8dk^EO9TF5I^R6iJx-=xRKmMZWgzIdkxWY3cZ^+b>6+40nQkq<V+KZ0Q;@IN4ZjN
62217 zD?E*$fM*ao@|uMbK7-HY_3&l9M?!zzGogwfB244Q^RsyKf^q^A=JAV!*Z4YNHNRd^
62218 zOV|lp2!XJd-ywX=9~3?pv<VjoxroLe7qR#+fY$c2V@1BAaQ?C=Szsf|5sb3aM5XK;
62220 z*9!J4*9MNYYbVFSb%-P2$T&e96(^aaMzrkIJ&)NMwt?Nu?%{c|AMt|N&)D-EjAO?U
62222 z-V`^BpUf>1AY7e*$$Lpya_b34Zij&24hp;pi9kX46DsaFKZpB5kU*pf)I=W8<ZJv=
62224 zP|K$Y>-a2}bYZ(ou5iGmL^vj#=8J?&{D&?&k+n;$$jPNeBozhlCtSKkF)l-*beAzv
62228 z&-wYB1)#;nK#ME*twbTek4ppE+rXdXbpox`I<o~90teoZK+Jmrw6xAyDu{IUBk`0s
62229 zBhc_(IV%MQ=XgQ0bB3Tt@QAP#JR{nj^91wGr9#ZPLTD!x5ChJ2Lb-FRQ0d$wOmrR=
62230 zW;>4yOPr^KmCg$;h>NX@lZ)6zj@;bczI$l*#O?)|rOa6-lPP7XvV56V)*$PaJ(f+$
62231 zmiI9B2spue{Px7`$=p-CN57|KPd_Jf&p6Lw&#X7*?cgo-4(4dR6L=2ZIlLb4Yu>fq
62232 z9p1y<&v;_*McyMHYu+;-wvV?@IA_`?jW_R8Kwv&P!p^6W>*UkJ^Ya-Y1U}P*+~*ac
62237 ziu3BNWp14>gI($?VC#MTxVFAA+;-ng?f|=q-R)b<e(0;`j`_B5r`Z$SCH5Q#@$Kib
62238 zeaCs$9460+L-3>=Z?2c`EH7X$#*5)7c<G!3UOqRNSGL!ISHn^BS~<nMK5pEO8QutQ
62241 z+PBoV+PBSj(D$kD{9cQ_PJ6xfD)uJt&D&ePw|;Ne-bZ^U_b&O_`VoG<ek#8Vzaqa%
62243 zf4Bc*|0(}v&d@#v=gB_7KEHi2`!e?xb7uDGIj{D$aBcVX?;GDY8-N8kaJ>Sg+~9y<
62244 zZd^b@Ku*9lZec(zR~yj5tqT}-d>HVII}otQ9SgMPP6x6bp9Fe4PV=mJPJ!V(X<(Y;
62246 z@6Zu`J8E~d?C9Pxv}0_?WZ+5=%h%Rd5IBwK18oC|K;J-BU`Ak3U}a!)U|--^;7kw_
62250 z3(;}fLmD{)Y+`#SXKecbXPUDV(!;e58QDI<b=v-nE8RW|P&p=Knw!q{-oDJuceLb|
62254 zC01#xB$U2Nl`_L6Ls{ffpsaK$S2ipAlw-=7FvO)cjOEf6CUNNx3kr)5%XS$J)3{89
62255 z)wsM2YiC=A4Y3`=CfJg&1-5^<C0iBl>`=r`W9Nm-*w@09?CS7ThjMm{Lp8gX{Wv_I
62258 z`@e?nAT!-R_8+%<?BBk3?EjBD$NrdoV;J(cV3vQ4(5YV>ZAMl=z`>m32s!Uo2o20V
62260 zqq_lp54s1`DM#fXehYmI(0x%~koH6UKr8;JKe7SH&^|y9L<2!O2qm9&?nn0nN-!D>
62261 zYCC`)0QnE12f<Y(szfY+jD>-#;b=Ix8i7WDR#d18u>>*~4bm}a49Fjg#)9}TdKggR
62262 zQ1Yqf5%dVT-yV%etVnqT^#F+kbta?9AWsUK0%}V|Q$eXLG>hC(kDdm3iqIm238eKs
62265 z(Bcp159IE6^heN(pU|HG<!AI~a$h_;4Dvrh9|6i^^fCF2nS6o^H06JgyW!C%pv9-?
62266 zQ$YW7^v?l(0-XRg`~~_KpxwVj|B~DRkNy?lc?z8ZJp2~@Eyy{8&VZ}4=q$)NkIn<i
62267 zBDx4#`6u+B0R1KU66F6K`a4h?&^B-t=o`rS&*(pc^uJ)_Pt3pvvBE4dOJoz!zm4Sn
62268 zb!-!|h5Uskpl`-DBQ`)E8HhcplL!N7<yM6Jt&trlYmeC@8-a$h0A(At4U__!3Mh`4
62270 z8USQ~+V*05LD~=V1N;C@2XzAI2kAg85M14l?FVrL76EEdVJbjBj2#AjNyE~Rt-uy!
62271 zf~#3r7QzHpAqV8i#d1N5=dg32tvoCb<Of!Q+-;6s0F(l(09-A>N<hx**mY1tIaUt%
62272 zxq;mvcba22$$jQn1-Z+d+zkM1$!$<dkLf|4Dy#~Oj{!4)7Vltp$Q|WaHMm-X)sVZ%
62273 zv3nr@XV_;53s@ZTNpLIH3i|aW_9a3G*5_-)8d#uj$lV247pUz!>^pJ~Io1uX-pB3(
62278 z>ICRJ={o_%h3*2<Y&sjHIdl$41Ir5X6LbRP<kR_x1^G*S#2VOHA-Q9lE&?@6=~849
62280 z2wTA)^EGArS|C3d;N70Oww3xLzipuMlfjy*ceQp4Dn-@{W{HaFRLz!Dn*7*M-&e<i
62281 zd@F(_Rn8hA&xhRtuG&yJHvtM+iiT{Ya+1H2rBT14-9WzM0`zN@LZj05)EHa6=G__4
62282 zP-G|K1X|buYS;+4z(8IyhZVU81W;DXlkKl^Y6EEGe-_n>#oCx4AibJn1I6uDY6Ma0
62286 zR>``zfl^z*cP97)NI>o(rv7umA42to2Cg#zFXRk4P_1EW<GK-HP@GzUZ!TbV?GfrN
62287 zwxA{)%q=-@ENY(wIjiLEi7lW{8z^2dY91KWyjW3VOtwjm)+)sX@VNn$-9WXsff^x_
62289 zO4UgA&zc&IRoQ;i8onms8>qgss9LQ-U{RW~+6GzYR*>VDwtkUBYidUax;EN4#T6-S
62291 z|MmH=kNF4t-_5}Pksk{RPkzCyRolI40p8#a%?NWgQ#J*qQmd%4iYesB^50-<EdHJQ
62292 zwQ6Zd1VWHoRC?>WwC(G(oe|y6h|V&ivyAAQjOd$Q)3MiWAyn_k@3w2-?WpftUthOf
62293 z`~J)It<-nB*Vk><zW;K43-z7#`a6UAzUlS%%_i;JnY6#%r2VZX?K_yXzs00|)>`|U
62298 zv}b41-gcAmHl6QnCgW{t-&iK&ZEEjK`7xbuQ++g@Pt*A^wKt~nVVd96ew)sRsl1z(
62299 zx1kV~#6og+{H--Vm{|AC_}UJzZZiHxtovr1bMv~Ko7d&sye=mjtZ9tDan^k!)_pTB
62300 z#|56d@i&)s-#8}Uwi|sT)?FjkU0dIR!|QA0tT|KnC2j%A2d^pHO(-sAd0fo$aLn>>
62302 z$IV*D&05FJ+QQA+!p+*k&Dx@w)l4(1nPyfq&8%kBtRB>?9@MNJ%&Zh<R?5mOkCj;-
62304 zGph%K%#LY2m{~nmW~HpmN--ewWm;;Z*$i$pE49Nc&knOZn<08?I)k{`e9_Ei2QwR0
62305 zE3*-^G8+wsS>HFB^>nit&uoZxoAOM9@NAj~HR}axRthyMg+cmmS_(5OWd#`@(|WAT
62309 z;lbXBGh-g!aQ21=rV(d0>!{|fF^za&7*RQp)|f^-7`OI@hc~U^My)Z7s4kGc;YO`(
62310 zGNKZYdTB=WZZ@L2K=`E@)%&If)TjnqBdQC82h1q1G1Uc9ua!|=8w4i5n-G}%8p|Y1
62315 zsMWxrRs(}t4Gd~Ete{rI3TibNP^-a!T8)jr*J{9g7}z+lpyR-Tj)OgP9PFXvU=JM!
62319 z8wYcKjYr3R-CV#t5SVXd5A}`gp}vtl)Hkw+`bPFp-^ke4*bJ2tyLIvl^Gjg95fkbg
62320 zF`>Q@6Y3i=p}vu^2eRHTG3Nn?`bId^H^QO55f1f@aHwx&?18{77t@Fe^Nnaw--rhF
62321 zjc8Echz9kIP$&+eP#i*`ID|rR2!-Mh3dJD|ibEI_hcGA(VNe{hg4%T}s9m>$+I0rh
62323 zhxSlCw1?`UJyZ|vp?YW!)kAxz9x|bN$b{-46RL+ys2(z*ddP(8Arq>HI8+aDs2<`_
62324 zJ;b4Uh(q-dhw32>s)sbF9@3zCNQ3Gj3e`gts)s044>717Vo*J_g6g3aR1X<YJw%c9
62326 zoFV)g>$rmv^-bT_-(UVE?>4B11HWr$>^Tuo&xwHY>j1S$Z~A8JpEyJKHMSDljHoV<
62328 zP_G+@dfhnG>&Bs8x3QPSSVuMImj?B^X;8152KBmWP_LT?^}1<LubT$-x=|?FqfoR*
62330 zXm15Ydn+i~TS3vD0Y!TT6zv&Mv}Zuko&iOB1{Cc#LeYLB6zw-c(S9Qo?RP-Yeg_oo
62334 z2E_;(6eDO*jG#d=f(FG18WbaFP>evK7=c1D0)=7(3dIN%iV-LjBTy(tU{H*}pcsKc
62337 z$sUS`_E1E$ha#dq6cO#Ah-eQ*M0+SA+Cvf19*T(eP()-x5s?W+L?#pwnNUPzLJ^S(
62340 zpooY;5fOtTq7@Vot)Pf#1w}+FC?Z-x5zz{YhzuwqGN6dafFdFTiijJbh`14oh#R4Z
62341 zxC4raJD`ZT8H$LTp@_)-J&4HoJ;(>YM`~sAtCu%xul2tJFs2jG{Of;L@rDjZV%%gO
62344 z4d6=S7Lm&|+DpER1b_L<wT<4mCAe0`taN#Z)|1yPrhmC+yNp|dYif_lw-!*%+S^a4
62345 zk9CFEi9DZ<rm|UZsYElWI$yt4Wn&CF0Itb)So%-cSQ@`6VbfzP1@3?bfvYSB4L1^%
62348 znIRje8J!jiTF=&LdYl!DhHZ`9-s+VIN+`IUM6ZRGdgI61hgt39h^IO&Y!fqH30HWX
62349 z2ZnrmZByAD{9&JPzbta*5lqpb$U^9fUd3a@bHzd^Sn-E?g(?-LiVToKLhTd<ibMog
62351 zB$Q>LjY@f_BD6~x4k*LQw9xF(r{G&;Xi4ZCf-0O5G+d2fp)V9HWMimB=z=mXG*@Y%
62354 zo*p3&pO4gsKZ}fyz#{A-OTw}6{D`t}W<)q*8y*}H8yOxE5LT;DD74|35k=wJh>5Vt
62355 z2#bhe(ATZhTl-c|eEsF5*SB83pDzMUrq1*H8jO(z^&Th;j39Yx6#3>R4Esm&^eF0W
62356 zM;P6eIz7rZbVb=1MvEF%c7-`aO^41YOOz9l<H}0qeB=z^h7pk#MT>HX$cvIh1%$IB
62357 zu0_R0Wkys-6-8Ab8^YqlGQ$eO$|9bHAz`+NWu#a5Y-Dg`Tx3W1tH{jAL4*;NuF8m^
62358 zMb$<<S4~A`MzyI5B1WS6Ra#YSjDspDdLCh@7-6yD>B@z$jPQaO>qE^4YY%1}Y!534
62359 z*Ty&>>Wfeyn`0P<I%1|`Uq+Y5EUA`bdZQjkJ0G%%Ar9q6+r*3@*3q(v-YA{QFFGVT
62362 zu5=wrKJ+kp=upm~(&+I+`a@08(}%iafo+dbMJ*m`k9-#EcW5Ab;?S7NBBmrZ^3XK0
62363 z;n1_#gxJ#9>e%eqw%9?yhut6I1I+asPHYc#MlY+Rv15_lu>-MnhX!ICRWT9Xk=0QH
62364 zvF(U;?C@dD;p)SQhjU_|9&SC{f7s?Q8&Jm&_Z=RM9XxC}+;Z6YuvZ)-jzApZ#*UO9
62365 zsf$}W^7P1D-1L!-BSUc=NBob(93F`aii<h?EG{iB_wa07X<TLOXdE}r3&@%^^)5k_
62366 ze2*lEccC&6lWzh<0k^>*Cg0$PQg7iysrSO6Ywv#}-&%$u+m2Mk=S5?O?4p{ZSy2wE
62367 zrxCMJe$nD14bc@*V%6M{&iJyp>LbHPCgSVjT8_*kwsA<@;E|<xn^>FJXR!-_hw)fl
62369 ze&tA4Jb6x<Ej7+!YK-MZV|);B`!!;p6qi(Zbn56zQeDzOf<uB=(zHUBY#k;@mWBl!
62370 z>kEAqZx>I*%i@FMW05U~)8j-(5|88@%83n%jf<DZkHk+Nl^zX<&xv0=YH_saXeNp2
62372 zN9T@U@$$I&c=A0|7RXBwXs8oPo|?83-HG7n0(s6C)=8fDMR%mm_2M0EPhcFgKIWXj
62373 zJ?3>R<Y<3_>{!CF?1YeGrN<0MM-t+XwH)h9$T~K9Z2IW)grZ~1iM9#4L~f$@(T1b*
62374 z3H1pb2}r_V!Z@-$Mtw+h$S<b&km^u+q9AD^Nt=izr6;Kp?PA(v29xTOI+KQz3gYwQ
62376 z0i~l-l2VdVozk9Sn?j`cCO0MbBtNF^2#~$Bpn8c@y`-V(XgcWeCG-+PH}5e$mL5y}
62378 zl&8Ol^3hnd8m$8eJZ$#v&-HKn{0EFYLy&xj=lXYd3h5%m^gN<Jd>YYzTRV^Fm(z%T
62383 zpd`gVxhHtwz;sCSfw6-D$@3|?<VPtn2kH(wAfl9>)U0>p?}Q(XKW3ZIm+~;R=pDv8
62384 z#8Fv-A)z#-CROxK>N|O<zVEcZGng9w&Xad$Q*~)bnq5ju%ECKk@6@K&r-{=1QajRA
62387 zPKk{cL{CJ|M=N6_F#&1H<K-ttPfSP4PxhRA98HU^h;B^p&a}>SK3;obIm0$BA-(D3
62389 z$;y*Wh)>FNn*8`;#!RLr>xp{e#6)Iw)?8-mX_|WR#9U_oX~)d5)1GH+GLXy{r$aJd
62390 zogq#qriG-_0!M=KgT@aw29=$Xp9(*op5c8e^;BMl;#AqG+K}p?n4q?h=AiVTfso$g
62393 z7!(r{4(4L!RKTg&6R%EXo+?5-Pt=`as}r*-)p=@d+SrNqtmad)tiG(Vcl^?(PAS05
62394 zB%aDqb}C*(=#+!u^@`;aW2ZFg#;h52uX-$P@x=6L<W%)()@jK*%Hy<CttXaF^`9D3
62398 zBi*4MI&E>L@=Vidhci9u;;g0!--yVxv`9&00J8d?4AQD>rrxl)YFq56w;`@tm~GUl
62399 zhO2gld`Bfly?qe-y*5V*0!E#MjIFajq(#ABTN`^|FMGh4^rQVC9suhr6xdGSF_HEY
62404 zqB>hOs+!6k%YJcYKAV>P>Rm>*L$)MqTwS8BR5z--lKhfX6b7d!6##UeKV6p{kR6*f
62405 zowXco6U{zdtR7ZBJ*`vEs#g$ybz8Q@yXqWS&SEY*x96;7u6OQePRLoO-0-uWxoNpG
62406 zIq_$Ma|?2^&c^5J&Z^I0xsBO&?-m8H19SJ=?H2`V_WSKuy{pYBI$Ls9pQAh5e6}~h
62408 zI@f*f;koql((_Nw&*qJtFFRj*F7JFmetmvt-gG{aZ+A{}KIVM;`N6!Ud{MsNx!Cj8
62410 zq-6dPlJo`k1%m(4^0bI8f>M82s>F0Lg0IO|$VrP+qTKPsu~YKg=~If6cBkS`auZ4u
62411 zCzI<>dtY$6Aj?a>5Pl*3RAxRC^xgkL(FJ|B=-q$|t?IgL|NPj~iVK4mCh~GFEEd?D
62412 zD#*{uFUdC)5CwkOvG2wg#Hu^8v+`Td55#Nydjq_KR*t-iul9ee9y*fk|2#nHzYvgo
62413 zs%#(a{P_8qc-#2a^DAJ4w*4>CaMDk}DX##h&>yGJe@*8p^v4mu0?9?$MP)(kMeW6g
62414 zf`E&u7xOQu3MvYkE~FRq7K~mfD0oq@q7*5JP@7P;azde3G{-+WT6455y5|u4P)@ug
62415 z{@Kyoqu0*Q6%-X@9u*`!O_;kdabZ5g?vTx)#Pbgi$qp&bHx)P((85?@;`7}Xv={2n
62416 zPh9A{FpT&Yv5RCyilW4e4=*)e>b=->Nqs3kxAL6dIaRLw9FjYGapKa*rKyW^MK+g~
62418 zzo6z~a-nyj@?uV5a$#;k%f-^dYlSrz^@VMP17M`KQ?r0kvw%~xfKju6Bdc#k-A28a
62421 zV*Ysk%u)7H*%3Whza-`-=PUE%(OuCE@A+N!RI&1}<>y}PyEIbBE$X~98LA1bE}AYO
62423 zS#sI`Vp~zndjapo6a~HK^q%x$#-;Yls>^AY`Y-2QzIHM1(#YlN%Pp6lU+%s9`111-
62424 zc1cdjwaW`7vXa`8j$&GgqGY(_Suv|5v1IXz^~KUl^TncK-y)<qyg2z{MG>Por?|9;
62425 zU92x|Lc&TzuC-qqE=|1l{Mu4UZ)t96S!vz-jQ2&Qo$m*{A73(3`mpqQ$yDjf_jBGa
62426 zD_Oc~^M3vN-6geGY_4*z%CAPgKl1*ItLbG(nZp(K)xxV4SDVT_%M@38%Tmh<uE?&A
62427 zUVU+OrL3Z?Sz}k$U-smRLL=4$XyVG|uUl%=*V)(QR}wX)nrcnkb=CDu&EWNt>(y6s
62428 zG*312NO;NYuO>9vB`eoxzZ$;6(3Jja{t8!P(6k(`iOY;DDo!lUi7W$t-&}6*dGGT|
62438 ziYHH-ps(5blk}6|YLd22+oOGWQ+aEpQl))*Gx27&F65?Th271P%FLT$9rtFXE<szN
62439 zow+qoA+89hEYW3G#8s#(t97Lnr4`kc?K(q6Tg71Iu&$-zX~lfyb6wvD79TiOE&;h(
62440 z){TDP^?~9xLpS|F@&|dhMY`n=%0H;T9dOI`gRT!A-H!iY@)q}Y&Ie1Cwzs@*msJwy
62441 z9_eJaW^Oj#Qdauj^u5`2YdpB==J2iLo7Oj<-pai>d+XZGm0L9-$U$!%<5nATRR5yt
62443 zrk++WtEFd>&*a{g-JY&$uNu6asZZ1^ZqshJS23!H+jaVW{n%~0+XGeds_@%mRjE~Z
62444 z=h){)^Mmr^&Xoh7DC0J9ZVI4&@wu1zmHADTQ@7*vY`yGu@a-kNP37Y4LVb>2b6cyg
62452 zZr?(^*Pc9cfP5Pw`Tq5th|AhrgHVJA0*dfKAj=6rT7-~KEyN&Th#MjSX%7Ufe34zq
62453 zZa|SC<h?l`#23W-5ORGQ1p<m(0s%uxK){ev5Ku$|0*YJ%0Yz?tfFc#h2W$7aez}Wf
62455 zYkv9Z?ADyRobv3l9N(PCD&<+$S*$Aitp8cD-YL5;rvt2YM{?$Jo}OqqnV0FD>2=ca
62456 z<mAc6Cu&ZrG7Xt6C(|-VGy6_FJXwA6Wv2B>|IE_NY+Zi^yF#XGyESraN-xokRwybG
62457 zbyF2N6`JhHvoU8gvTJhEa`Lm;*^6fj&+6W_INNZxOK&h_-5t6+VJN=4P-CfYHdNL)
62459 z?o?6jt(JRMv?8agq}9x7QB_d2e|4-rH%FY~uh-n+-tpG^8A=U?+je?~JGpnR>6`D=
62460 z+-Xan%xKHB&E#gpo-93?eVe#lc4y$uxW4Dk%$=2+YMt|~7q?#Btk>yvCAVYsk%ksS
62463 zDDNaopL<;Mn3i>VRC_GThW|gIg|vScEp+=2UpJAMMq67wk(frKFpW-O8jZp<I)!O;
62467 z+FybAuW5e`;#n};sL^br)NG^lC_1Q(ddh>-PtY?+KDDYFsdpL;_1dBvd3SmYomqCL
62468 z7t|J~=1+H>ZZHhr8M!lUn7H$*nrWD?7FGM-p;gCLXT8Hsn@f*OPfODuZ#zD4$Dz8U
62469 z+Hglw-C8|xC!qRC_1vA<yR^HG*IUbzwIZ$G_2=dN<zv^2%0)NIZq$~uZpd$hU)PrV
62470 z-e|uuSRQ`k$&Fcq?oQ@i&$}UaitZ-f&Ancmm8hOnzs$-$V|~W?*6as;Ralk7or=3<
62472 zHyAev&#7J0yER&5*VyiAE$OdG{*RIRAY=piRCG=DEh*Wz`lDoD{J-e_6=}09D4S)0
62473 z{1yaD<OK*;)E$)#t9VP<G7HL<Sy1;_Xln>e-f5vzcUov@BpL}~QZwk({T3SJZkUp;
62474 zL^jaF=wS$r9!?KO==2CWC`D-iovxy*KzbFKuigo`Q-3$FHuz4*-Ll&FJE}W_cWdvq
62475 z-x<F<c=w5+|IUlMvo(le<j!)9U5%*PrpB*EW#}+GuXe8X1UeB^9eW3<&ZtSRDY(O^
62476 zE~wGg)K{0+bk+=KR-P7QBiYQ;-q}R9_np-0+M0=)`8zpxRkh8v`n&$M>e`Z|xTN~z
62480 z*abAe3-toBzZ;bSnIO+uw4n6EnmSLBL7k_#nL1C=hB{Ai6LpfJEu|k@D9zZoZhdt9
62483 zw{ECzqSm`^;Umjh<wwqq&l+FWCVwRR)b>-sN6JtAKaKk+_0#N6uYHvNY2Bw?A89{*
62487 zuetVF-De&3@t+NS_VkO`wnuGKUu3nt`pWLJxi3n-Ff?Odw0<#ApViE27S|Vnnq%s9
62490 zs$c%R`18t-ZQ5n+;a_sw)7y(`3%`_q8TonBm+4;??koJf=kv!OJAXd;`OA+zTddpl
62491 zUsklYwhz{pe;o8>Q;YMLy<d*jwAa?Oczqn(64H|J<%{--_Qfw(zP9<AXvuD~YZJGW
62494 z>uBldZ&!UC*-_k~Zy*2q@z+!BGhZ)vFpf?i>r7-O3QAM2GBp#L`C|!*<%xBr`m1?Y
62495 z%St^<Cp3N<RcS!!oF-jUQ2OxdtOmJ?XtbL8wD7c*6WJ$9OI61iCk!WA(z?=%(<_g2
62496 zPxPG_E$b-1c60LPQhANeR!5W#mbdAAb*l0KU52ixY`lD2SE*|*pV9T{#>!rlujpoO
62500 z?RfOfll$WjCORg*nfc~bS7gU*r|tdO2a6rAI@vu~uT584k3)~Nm-xn})2lPMEB_m(
62501 z&bXf7UcavLo`jy9-q^0Xo@+g|z3OiyotZryy_&9$p5dNny|rCKJ&O;ldpo<HK43ra
62503 zF3~P|=k#|O-xUUMJ3J3QJGjuf^quazhHtIAo4R|xb^5OByN8|~yA-?Pzm<OX?7M~F
62504 zm!AEeW8VgJTXZ{q8`CZA4*IsNJFYwHfThAh;rMNOcX4+mu&#2-uf!?85~n;$9Nmm=
62505 z1~KVZ;^+=^$J!1c9Q8qcK>QB+4)80<C+r*1i|9o_`NL27#?f(rvu~dD(J>3m0-<4+
62509 zy>=jX@Wder0E3PpNg$mJ0u4z)z-%FDAkdKG$O(|nKr%u46bKlS1p*B@jl2ueIbiic
62510 z1FMfh5R<D(9IQi%K>9rpXw=FQN3MYI%lh&v2-w;x^H(5XYirH-LBOb$3kFs$S`e?U
62511 zK6MCrZUwalrLcJQ6lA*5ssuM%m0;AW1Ouy*SupP8N)$I*o8Z*igj|n+e$g|)s)U9-
62513 zsRK>}UV}^bt$Sj6(!bBU@7R;yQ}%t?`N8|*?`sDX1Ia%#zHcAM8z}!-lpoMj)6@F>
62515 z`Q0xZSbE_1bI$$p2ayj_`&51DKiU37{9Jaw<|p3=xj)zU75t?7DdXqv`z=2eJ<$9-
62516 z(x?5Y@~7sXU$n8llHKolV0h5nSAYNEgPsSE`a1iDf9m^bYzXO__-SSk8FIM)bddGn
62517 z*^p=7{GenoXh`t`Z7_Z?dnok>he6F?%}~LE`5$wB)P&}St%Ni0&-7wHNPY<Dwfj-_
62518 zBm4exiS|nQmAYQR53!+|a6zy9hs<8(k2d{Fy@@{*{ZP@H{X^pq-MuS6Dt=7tE&1Wm
62519 z56^ome^~6d>}~9K>i7IQGT0*6vA3%~xIf-q<v!s)ztdr7d%rqhAy^t5)H~c?(y#A*
62520 z+TYyY+dJDo(mw@cA^5*^;}7cwwZ5^S);Fsw8#=X)p;IdrI<->y_s|(~1w&t_IT#Z1
62522 z)Ohgvq-IO%q~?v-Z?WGZHq<VDTk8B}3+nu3IyQ@e5ybxP^(o97sgswjsFRm1|JeIw
62524 z*F(RaNE!WcZU8x%;mTDOo-9-tPU?Otbd`xplsaXDqWQ<R0p?G-pBe^;pSpf}_+#II
62525 z_fOA$S{P6aS`0e+5Je;ZlfAbOkLtSah0osSoY8zpn$c)x^eu!CLI@!P#sbT-j4{YU
62527 zV~jB-ln_cOdH2ldXz#t&8r<i-dHPqv<C8hRS!eCF*Z0}y%+}(o70ZTIeDm5j9}Ef(
62529 zGW_1*Ek~{#xp#Qa2i_0zhs}Q4`*i-WB~K4|y5@r+AJiN^`oZK6<{Uov!O{=bAHMOy
62530 z_74soyVK<U;7n6~)6nMK&CN}9%~zTqG)-$-(6s7<YbSyyN}INv7<poH)4rybrmG)3
62531 zI5F?U$`e~o>_3{?^x$~l#F-N}PV$r4$BU0w9W6ZGaD3*`isMU;uRB_IeEac3$J>tI
62534 z!RF=78-I9U@%^`xf7tSN!P`TpTsg4%z?La@j};%Q{N<=)<Bm=LW#h30$5#Gw=Fc|%
62537 zb)zec_WxB6c=o5EpYHnU@I|GIn-+KcwD_k-ep>(5mBl5CtC|Ki*EdgV8reL*c}3HN
62538 z=8es}nr1W~X+BrC@U4SyXTDvw@J9WFv3tfgEgJXsgtte$^k8ggY{{{?O$(cEo-mqL
62539 zo(P>NIrdJ|#uHU1#y9Oe@%o8{b??^Cs6SGFu5M<1{@B;YF04-;TQzok{h+a{#%?~g
62541 z-@VB7M)eyF$95fepDa5$;&}GS2`6VBJ9ND4<l>WSj#r=DdU9XGqgQt|7BmiRxb^Dc
62542 z#@fayug-jJ&}*Y!J=-|9aoOxCxqIf^KY8-__>)~H?;dOIJEeH`DR<vF#qXTTJwE-^
62543 zpbw{gxZu>N4_AG-<@o$llRn({Vauu6A71_N!LhF6%TK*?YTa9{!dXJcZXbX5)V5Ox
62546 zwh!xtQ@r&1Nc-JJn(_qezbf9^zTY^nX5N(V&zd)H-imi>7tC9@Z{f-D-dC=_^6)29
62547 zHZ6W{-Fw@AGH27w_h!Dg<R`Z`?c3C{$=Y;v(}PpvKU{Kl$=P+MrhmBh?Dn&VK79Xd
62549 z9eS^AQ|5bt_lh@_y;t>K!>RcnwtQ6n(Wq0)KfLnM<d5clc<-a-A8l;)ezg0errM2T
62552 zi)9x_wjOM|*7mUF)|sOhjf;`iGam;(E;-fJdhO%tk0-P~_;}XG@0_~Rr>M{VkJq10
62555 z@1Jfvf8hL?mbs^IoWFkl(dkF+q4rXvZT^GtyT>1WBl*qkZytOje|-D+Tc<Xh8FXgU
62557 z`8ns8jh_5s(TgoFUa4tbSh28h^sE;vYS-6pujzR4Uaj~1hR$)FGtTeoT++Gz{L#*x
62559 zj`l6>`&w_ex3piaxmBBAJ7jd-i$-lt?c^7OwR38hp2|IKwLiEJI8}b3_(IipkIb3-
62562 zyQX$6IMr}^aR=|nJiVr)ylZvW`=_^djOser)pmMc$K<YCmtCh%cFet;f4Sn+>!-Uq
62564 z7ruGs&1>PZNO{J|xwVnpjIOy;L>SlqK12RaGNkjgQ_Yj^|I$49`)c=}vt=-5%e2^2
62565 zI(O_Toh$Z~E-ChWE^bjz?D?EO_Ixfi_I%D4dp?&Odp?&EvuGe@OYiS^g^?Q*S%3v%
62568 z-z7X<u7|VO+DLM2ZNym>iLQ`)`9XeAApgSuMIeW|SIdtZ9xiUO#pe_JgyG`ihTQPQ
62569 z*3XmpX?|KD(KQoiwd6Lx-Mvnd99v!YcE5f7YyNBT?LB@^Nb(#08^QBFzb|<H8~-=M
62571 zhQVy{Pu%J8*!p~Qjm5MBc0k<Y#oywVEA}k5-r}sZ6x+q!Yb?pJm3(jao8ANL0pi;-
62573 zy|>|sy|>}%UJr<_ce-M$0&cV_;Et~fus>pdBw{1_c9Sc%CYtm+h;q3?;8s=$+}$e#
62574 zuh<R3>aW_b3J;6E2j#L~vtJXRmE6F-yLQ8mD;5nox4XT%y<zQ+AJ;9aIa1wpw&{BN
62576 zk(X9{KKb)`=Z>`R6}{1(_U22?m%7fiwRc{+*OlCUr>n4Q__^ypp1N-8y7}iG{CM8F
62577 zmFqS?^XS>8Ih*F}{?6GsN9VLxr9RvKT;+4)&L>}RUC6#r-Zk#?m7j09FtY3Q&-Z_R
62578 zrfbpXH*WB*H8-+v47t$Q_5O{z8`HZE+*ovD?S)xgXKrl2ak%UHjrJRN&gWlP()H+a
62579 z=)&5|rI$yXA9UgU%Z-<3U)X<n>E(CNkNolSb$i#HJU`*b8`fP}cfTtC*_(52eUE?V
62580 z+V>*gD}DXlZ`FM}^zD-KGcL4TxN_m%<(*%6zbNeRUOw_g<rfW?+rOCg#nQ{Szu54_
62585 z)7CCJbN<Z5sTb#6Tz+-VE$^+utIKXx-fFnG;p&E4vu-WDy6e`4Te~mryn6Ij^Q|ja
62586 zJ8nJrDtPhm)jMC6el_w__g9m@ns@%{#kNoLKOK7U#;0|kPCI|^;-gO&e7dSL`018U
62589 z{8dAHS?AHuCVw`!v;DK>pKUx||Jm-(nvPHVtn;(G-?_i&+M)-(*5oruL0^~ai0^Jv
62590 zG*?CU#WG_5ZI1na{GVaG*YipJj(2|--A7WrGJ393v)H*2ZN!Y9i~n|sGph&rnfPyK
62591 z5C16g_u{`DJ^Z7{---XWYkdAz{I@OkIW7tBmh!zGj1gE=GQ$`}(CRqvo|D-<hu%Gi
62593 zX<i>qVv^3WywzjjxZGxsRr`0_SeHs-mPQ99i~scsEE^sr&drgwU+n+6s4sT6WX?I$
62594 z&VAr}ANbx4zISWiJAUSzd3s_%wPyeBb8bMJNF>hP(>>azo^z(1Cjn`aK-9@dbIu)!
62597 zF%gXg5S4c!k&F6tQ{bEhH6k%f!=P4-?$~kxEAnoO=yPC?;ZMn17`sl_DetD!y&dY=
62598 z1c>BK$w1|A6Un7sExphalcX}{S#fSQkv|N@<2lfk{Kf;miH~S0qnbUwE+y7=-KR%h
62599 zNu$rQgz$p?-Fz^{6i$UbRO)EhMvks@3|r3Zt_6?|+Een=Wy4lB5vF@~KV|N4Oqk8$
62600 zyMOB0U)Q69NQ<ky4HT#SkgarWMl*=5@PqV)C{Cfx`k|ThL-XxNc)nT<<ZPg~^)aCR
62602 zUHSq2K{{^ec2#?)-aQ!8FxI^TE(dy{`02h0?E<q8)SRx9Vx&jiSNekQoeXRfI-;zo
62606 zACD)9F*GMh#~#D4H^DESFO#~jG<tO5oH3volbA8aR5}CD7>edt&-eN{)1;8sGjP2L
62607 zu8*HH!s7bfIn;fW+6As*+BK4k&KGto7C@-%4yB3D53X$BSx_DW<&NtDVhqhj(m}gn
62613 zN$@iXeyX-j0;8;AA}pSR^r(Z~ltUxq+ObPK=4i{PH0-f7P8@zc&ExqvYqnoc!~YXB
62615 zaQ>!t4MSWLjiXlz%n5T>_3vD(T0vsYb?z9Zu01-Kb1kIP^#n(ODC_1-jl{{ZI60a#
62617 zd-qVn5mZFdaD<o$u?#rt`1sCBjI11el-U}9#;FE!T~3#gD`PplxFTbm8|%&*Op!va
62618 z%Sbs?Env;)PhO#XTpPtSoUFkS+DE${N-pQ;$nFD{^J$i2AWtzOhf*?df|GMU6h)H2
62619 zXDjxZBYC16Ai|N%Nrt+1jx#H+qx2{y8U<ga-~U>g9C2&<6s}S-=Udj}$GGxP+J*Cx
62620 zbkK`@1Rca2Iyf%G7}9&Z3SxfH8gU=PbWrDUpTTs{5^`MVb(jug3|UQ%tNNysL3}-k
62621 z2@si4CBgwB^P=wc9GqKV#?njVs*UvLcw~7DHLH6JwHh$(yZGo9Aupb%S~>N(<7=@-
62622 zIKtG*ATg{vwc@LE5OY?P)ZA?nZ^0yKT6Q8&eJe-Jr_S>|r`s;=(WU;q1-^Ia2WYzV
62623 z7<zxET1x-k1m8>Rso%$~3D*amSy~zbHDLmO(>oYwb;^68H|RZ=Za<0^qk2~ay(duw
62626 zEP@W&*@fi8n0}Xpqle0WG=1XOq~e8+E_ly@qeI7?-j^$$s@?^t-YdIEoeuhReAUpw
62627 zN)4xjm6-H&)%$TzEZ-^7G1z0P@1y8+Fjh<h#}DqiOBH@P9gHi}z_BLz>2w&=eMgNr
62628 zu0@a94M0EA>2$2nfc~S#CmsVwEskUu-O+mqeVs$z<Eh@F-__|p1U*aDwDc{9R`)J>
62631 zQ^c4<2k*`>2KDS@AGLq<A>R1O4#b$@tn^E-fIcHBoO4SVSNAGCze_LEdw1QZ)N?5#
62632 zH5VO&-YE5?Vl08~)LF~S<sdSTV8ld-r6B4PJ4YrjlE{Z>e1L`ldzuJgK$lK`1hoWd
62633 zbc7jL4<<rXi|g-D;P*-7%9pBRH8Wt$BrtVMxeCX6Jcld1R7{OVXLSv)y<jYwSE#20
62638 zk7M^F?abEBEai-YE2G@uc@m(9=Qf~+=Wskrlg4An92`AYJ2~fE{Z)WR`#x?vmxjPO
62640 z`yLOVfp&9f^j|$d&d{0;ADzZjvZLB3>9){$o5W0<`w2)#`w-@bF=t%(%N2+*q%o7w
62641 zqLdH5%M3AxAAE-g(?Jc(c|gomWN~_4^^T&CLZ@T;DvtUK6t$+ytEozFB3j%PP%93-
62646 z^av1x^L089h++F;%}9Q_A7Fi1-S2Y6?XUKAB?eQz>u;!iR;i(ORHcU6^TeO1Fhwh-
62648 z4)!0|6R~$v9&2j0l`BMg#*}{2-_U#g{@q&CzlZ0lFX=sesiF7crH0<Wml}GH?c@sm
62651 z^g8T^@C|OK^5d=wV-6kc52&sRXIu}G71H1c&^rKUtsHkr7-J}Y;<Do3r%@4uI|{l}
62652 zk*m5o$_WpWn1wJ-&{2M*b2Q0uR9cIqrTB7^FDLnOk}ua{!(%w>drq!$R$^R+VQ_`Q
62653 z?4d9L)~DMFrpAf&^sYL0JfaCO_5Mz!b0Pv`@LD%9EBJgz|4n6Kj~uFZ=+6O)3|R5-
62657 zZ!}pw-p@5e?*AbpTE><W^G>JW^ml4DwtDQtHKa(39=&gb+IF-E>oneZfXX$p218uZ
62658 zvjp@oJ5f1D)@_KZ>mW2e%u-bDf$~Go#8J)?;JW-UuV7r4pQ6WE3+EyyzfkhiS&AjZ
62660 z&;P5rKw{3WFnWfNcN{t$%p~%z1M<`Ji<2o-ndO~^ipeLjDqW&nB<E46jUn@q>|7ij
62661 zsN?E$gSiamx4w!!<V*^CG^5)|T`i-mN83-epfk2ktFEL$%|RbfSJ<#;=z4K1i8TZL
62662 zNc9isNtAz4Ugzi*+nN!c;#ddj0i$|tgT4VRtX4hjA9!xqzp&S-UZT!U_Y>WJXupzn
62663 zhThK!T=$nm9+Svt5_t{fkJv{jk5c^s(<j39%mMA6C^KMs>;-)ge{9=C8GxP_W#Px!
62664 zp0=iH9ctdRr4#vp^Zu!`vS4@HP@Y-JnW=os0d<rMyxKHOaBcza`c57?KZ}$`U*AzF
62665 z;+n@Y=~8oqSO9@Ll=bhKtA!8~A@VnEjz;u7C8!;TRL=39LZ5}c?%ls<rmEC&iK*E-
62667 z<)tig42u{S`jNDdyjt~r$dj72nSg^%%M;L29uViNzBkri(-ZU-ik9*io`9C}Br5?e
62671 zItHJPV}2NO=-@mc=Ew)<L0xMqm@^NEF~XL#eesM<QV%LEeiuPU;S)2wH>JLhMqv+v
62672 z-<D$tQGel}|Dq^<$BKVrl!V4gLVVy8Idyd&W7J+&tcRamYgaLb<X6|^^>t&PHitN7
62675 zK8~pG9F?Fv=Dht6XX-*@K|b(pp(ujo@gPK>1+E%u6@u?TVLHl6E?@(k?VK8|TQANH
62677 z#>I3LhWE#nD-W>B;mV2S!~U1ZCv{(T-eSVKf*2z)m^)-;hx{PMNDO;9)dA?VSUV79
62679 z=zQVM9uzG`<9BZ`bK(A(qy8}N|2V_B5gjM!I6(*B{Z=vft0T-0)6sLIFv{z&7E~0!
62680 zwM%&@MkOtN#~1U(nlnj#s<il>U`k%7L6g+KN{fH5M9E9>rBFs#%p~pT^uv_A7-fWo
62682 z@2q<0F|U7**EwC9gs{7lG>L!bP-?(x*uMwS`zc*}jxR%-=m-Nkbz(@>ItO}&YZRph
62683 zyqk931BX}HBmz4{)n>3`jayOm?6RJ#q-Ei1i`;Qc_ogILX8gnhYD~AG?BjF{S{C<C
62688 z-0PZiuC)Nh5yq4;<f;%y7$-6HS{dWmW*k_JciYD7ky5v#N-yQn&*k-|c0IPX+SOu|
62693 z<8)qD=@ap%GAqXETn_aE^ES>mECHS<|FZ-*oxz=KMEeiU!74rWADo>fJ>@?*Z>#iJ
62694 z|FrxxPS+5Xp5{;a4=q1ccU1aB{He-8`wvY|<8&2+@>Be=|0Ke3Es}jcr8k<M#wCC3
62695 zR}`+UFw^|8U*Srq-lxF&M%76Dz6RGrSUsUU6g`xO!kwBGMV*={tDlN-fXVm3bqv<v
62697 zSCJWGa$J>8$Kro0+wqkoZ49-$aOS3B&KP<ZV)k%U?Iy=Ci7|8=saTOVhDnT}+eq(i
62699 z-arN%X}WE3q!s}gaJ;Fs`e-=5bc?Edag0e6cIYt9pe59~;aJmARR$by5|t4L<3{bn
62700 zanz|6l754&32F7waP(oj>1Yuc4aXp~n;L`EEO69eyXh#rZ-KF=qx#%%{9(IMv=GHr
62701 z07o3QD2`h->Tov2kynWL<9Jf>K8U}h*ZJW1p)w%E3z3{SGN>#^(_<WGavTeZs!*az
62702 zMCqA|2~OZeh(C@1O3zdj=zOrpQ+kH}jpf9?oT#GcdWO&5OALA6tv-i^G#)?`l}3G{
62708 zdkN%YA({1GLcpuk_|-9K)!vHMFlK6)N$@klwemfG$_FW*qx@O-7fbOmIELyWrs6|V
62709 zyEekO5{0_$EO2cSm~UKW-RoqPly;VM((@z+e~Y1epQMxi7sa3l#&;2cm=o(<qr(_O
62710 zzA5?X^MD>J`N16?bw8H;;9rK-{Z#UM+~03>e&2%WU~I^7Ekn159-WdOH?S>n)ad(2
62711 zOOz>SZ-oPnF%zJw=U`eh0WFS6D4FU(FjjRLR9YBcYAwXxrK2W7o%(@CqobJ<v1@7(
62712 z4oAarPSL{nm$?H*JJ;$9_E%k#G;N|RLRpB;E|jN9oc6UuensmpvA-m;7BwzM)|DEd
62713 z@I>CgA7kT0_SA8;8qn6G=S$O5)^gsxil583g5&2=&r!d3YK~5CB6<_hn;Jd5-a^+~
62716 zYHt#+m#SyP^C(2P<}HOvbU;29;-mJ*7P>dk-yBwZS9L6S|G?3&k~z3bgLeyZboGux
62717 z?+|<U%tG3$U(Y-wR?_2VRCMUphWkgT*W!qP_f~L!5osHVNq(H*#}PkEkww~wk`KoW
62718 z6(dvx=sK_r7t$#=^scF24;|E1BG1?7#tj$Jl|^9Oa1lDtF?lW23yc-{3vIny)#Ig)
62719 zmhtp%T8|L<YjF!)3-4}B0%Hb@rg#^h=&!ZIt{c<A$dlv3yAiynHihXsnW{4DI=~pb
62721 z*wkqCZV2*~wEcVdnhE%Ff-g_NSEn@-&{A1T@4loAFq=tvF)c?~NsTm^3n;C_JHLL0
62723 z7)a#rl;*G>t2-OvdXN26<xl&fj?3R(QSv{|%P8M@oKI2s<2)#lx6t#YZTL7ppm1zo
62724 z_?yVy-RCkN$9FkVzxOKN$LZr^%GG-PIZM1#RY!^UoDhK{J2d)wv={O5f~y#!VTdNa
62725 zXN<mP?bGHJ{S0Y%0vZ+3>sfCD_V#j3S*L*r11oY4qW9Z)g;U?_+gVxFbuH=ON-d_t
62726 zn8Q!+3oyoz{Ukq#;hl7#r6nEg3v}B`I@o7mei(D;EP@WM%KDJ*G3L-&1f8YPae^Pl
62727 z81l+^uZ8KLuS$Lv!OtT2VLy-4OP_WA0ssRTe4^k+*Kz`re*pnvl1|>^!g2L(%!vgX
62729 z)bTgfqSE7Zlo8$}y$<^rT>X@&>H~3kp-0B4Xg{U?9%dY+`C24j8ig~aP}AVZ<Kvpd
62731 zGSbr=d(!Ljln<H-aEBhQvzrNUNl){qeN@*0mLGbgu1PFE^gm}z=z$oQ^pwX^IJT^`
62732 z7RDt#OF*yUtUFTU`O4Wx#L2PFud~(fJ>YvaH#+-#sNbvWOz~e2%YMc==L&yI;aA#y
62734 zMn`Nzw~)TGO#dE4-@60u+6OJgV_Z3Lm9(BiquVp?gAh@7GJ#fi_~`n9p1=WudlhHj
62735 z1&G0QKXo4mxF5IfH<F*JjSKxt@-u;aZbCkYIn@lxhv}e)N`6p2OouUeKcnt90_DSW
62736 z7<2eR`5@--gYscI7$qhVIdOiN4r8(|I`Jd<sTh3YrJuqNUW@m1=LmyQ+F!XA>OjXh
62737 z5zp~xffyC#9AQp%P-EYD?_9?mI=H6^#2CsG&U@*Q4rUL@PsJR5IvvEE`Kp=5nXisf
62739 z`J-+%$yY}mzL1teC0|bR#rqmzT8zqHUdwvx{MK6{9z^3oG|oFUI>HG=y~;*c+2|@8
62740 zU8QSX-A4u@>Q$yTR=*yE1B4?QuF*L6UM>ycJ&4?`PNnf^H2r!smRN`Vdi0~u9rBU;
62741 z|Eq}lq=I$NL0%=F`KsA9Nz=TOy;TJJi^TL_V_-T?&|%+_82)t!<cI07AI9gE2*cOH
62742 zF))VxSkmeIpm)bLnh3+!VrwMA^lM>!;7q0O-va4$49AkB(=ixf64S?pQRdLWabfI9
62743 zI-MVkNT)Z{F&w83osQw?b$U6-55}}Z2l-LHMn!fUQS*pg9ndj#47t}i1LIP;!Wn~U
62745 zg-TlL7gRdxtfpY;DZV(9s<hNEsIa^km9*3^v#`7rUka79)UVDkUzn{OYeQ7hLcSPv
62746 zR++FKFsi-@jQL`n!OXAnrRIk9K-0oX;dnEp2bfJ%TBrwDMVxy#N)Hq*jp9B{<v>Y>
62747 zJr&j{svlQ(Qh~G->hM)-i{z`L4qr%1p^`7OJVqs7s0WIc$~%d&5w5w;T@;nMV2)Gy
62748 zLj6*-6zcHB`o*Zj7weaz#r0q1OUVmq6Lkx)&N{ghqUt_nm{vudY_InSPPT`r`eewZ
62754 z4{=?7m~H4hhI5PF#o^pQ(bKr(kE<-5r|A4e=e77)>V3TIjqGk3+11zzjox!oe?v$A
62758 zsf?n=1D=OX%)=(;VUzQK5$41boJZoggZ6-bi-I9ctpjRA>T`22PSEMmtoEepJTQhc
62759 zfkTJKWlA>C|C#~^{B(>1OkY)&7zbEXFD968i6QUY_4vRTC+T1&f_LcZ^^mr|f-*z*
62762 zm#P4qK-D}B^@~yY<VB~YP=_zpFI7vZ3PaVM_-9JLu%_rwTqzXl7gr#M7VDR)Oq@WS
62763 zwHZpk7?n?~pnfS@T;U{Ntl!5~K7DSu(#11BMyU!YX>q-SmC>PvC|xl*f$D2Mx_&Vl
62768 zvHofPG%o3J$4T?2x;QBhrGE-%3300PQ~6UJ7Onq8y&~?YoUVh`Kkl_udaQq%KaERz
62769 ztbdw6)#XWfDE(77ONdjQp~|1?z-av^>Lqa>=2UKs$E!3&Pveq5)%9Rp@~1i<ik|8M
62771 z-JhbzJu~jfq&yg>dN?^Q#;NX3<xh2IiF!HICHgm~9W}z@^H4U9&oq}>8|}TW)}$LA
62772 z%bV{TZp8kV+z>sc%r=bF<>JGt-e-H?C^QNqg=K{!3nvxMDO^^#p>S8>(ZY_xJAK@J
62773 z^7{<!Q`cu&p9OtZ_1V&AU!RsfSNl9D3KSJ*-7TsrYABjnw4`WV(e|Q4*~^OBvbPo8
62774 z?92OR_AT!_Dks!;a?bF+b91KjUEX(N-`#zi`gZ0t^}U;Ov)G#(C@v_jD6Y?)R6IR*
62775 zaq+_3&Bd#8j}&jsy<WUOFS)oiZ&2~Iya~k*^A_f<%-h&6n0KgON#50d)%ouH?EJF)
62778 zy?6CKY^*BYR(!DdZ1IhLM!!hEvVJ4`P3kwN-?Dxi`t9m>v|mTRJ0<Rt{LJE#p(S-C
62781 z1H3tR1{CB*22|u$=GNy<&7GUObU=OX`va!uHs^Na-pVubf_X)G6$2LLO&+j1Z%N*o
62782 zye)Zq@{Z=6%eygPYkq2eLH>~ZQTdJeGxHbaugc$)zbpT6{@MI%`S*Kyd*${j?=_-V
62783 zL$B9+E$FqP*M?p@dL8W5+UrWMy9KU-%!1N_s)BI^(+cJlEGt-Fu+3Oiy18_3>B-V7
62788 z*1_v@?+)IPmpS-wURB<>ylHv!@|F!gm$z;3t-O<Yoq4zOd44FrIDhyMD}Tz6?EH7~
62789 z*XD1{-<#i*-=2Rn|52|%ufkqKd)4%s)N59+#l2P=s|H5~mkk~{c+%iGgO?57FnHJC
62790 zqk}sJ-x=Z_l0RhVkh&q$hAbGeYRHx$`-Zd(xjN**lYu9TpR9Va;mMg#E_rg@liQy>
62791 z^kmzUH;3|}nM2Emj>?!kbn?)-LzfTTICS^WrlFk~H-_HLOnu7xRKZgfPt`v)J#*1h
62793 zoIS4MT=u+*TiNS}S=sxCWoLJ0-_GH~2IUkFtI4SwHYI0H&O144bGGK}9X2ngeb|be
62795 z?`qyX8LRoz^XD6@DvnlkRNNWn9+p3B=&-tB(?S))77SZ8Y|F5H!&-)29rhr!XLulV
62797 zczR=G$J4tbtxq>a?mpd_k@@u9jH*g+#<a?UjAfM-8QU`UXPm68&$wMVJu_6fFmrfj
62799 z$=UhYgR)0vPspB;y)b)a_Qvd;*@v>vWM9p`m*dXK&MC{O&KaLGJ!gK-@|<_$v6|DB
62800 zb0^ozjpUZdSj}CR`+n{|Jy!E-^Clasp1$(*{mRtJqTt!e%HaLV@#(phGb$HXuC3fw
62804 zo_Qd%C9^B@PL`Dw$tuaJ%&O0tnl(3TY1X=|_p|n8HD`5X-O4tygV{yd71_1fle1@M
62806 zJHlA?%!+3=rEPm=Pul)xn$tR;=?d~^?gfjhl7qvm3WHOsh6mrN8W-Fe+#77FdOdiv
62808 zheBsUSF0X{-QnzTS-3hpK0G}<KfFBrZg_k6K)5B`6}}U(B9TZ*q%u+;nHrfJSsGav
62810 zGjmbqs?1H9yD|@Fp3S_Lc|XgWm77(bH6p7a>-DS!Su3(OWbMd0nAMtfCF^dsD?2m0
62811 zG`lK$T=ul=dD+Xd*Jp3b-k*Ik9;-Q_oMNGw2UUTp;;O2uhN_u?BUMWR*Q?f5ZLd01
62812 z)mC*gZRE2&ZN{^iX)B*Ce|FTflb@aY?DDjG&u$E6Kf60v{cO{-ozLD4F0b|mw^tVg
62814 zLtCB;hK`2Lg>Hl%hEu}@;UUkJgd3l$4lfF?3U3PU3Lg%i4PSe1Lc|-%jg&`5L>eNm
62817 z*>fA7+x6Vh=Q^IdGr~P0f5gxcbt9&YSTJJMh%F=bjc6Hhb;N_`1J4&fU-f*$^E01c
62819 zg@rGyeqrki`(J2HZ++of`rQ{EjtY({8C5-MLTK8kS)pa4-U)3RwSLr&QHMvJ8+9uj
62820 z8f}G#kIoKH89iup&FCrNt)u6Kn?|n)-yFRu5*WQFGIVrvWYXxa$l}rWBAaWHBS#`_
62822 zY8q;0)-0)6SF^q5P)%FS%@_HLnJ<>VIO@g8FV1~&`HLH0-2GzHi=8jtt@YLx)K=8i
62824 zH?M9*-KM%db<K5Mb@yIMeyQ-K;lcKo#=Z3VON(Aw^V0h-9eC+X`mC3(r>}nLQGKYs
62826 z`Pj|j?PK?bTgILY-x+%)5*d3xQaLU)9;@SuBJYo@j5LoMFJpDw3>d4%s<G3@E*!gh
62827 z?AEdS$F`2WHumAT;JA`;)#E0Nn>Fs8aqGwJ7<YKwxpB8%wqDMDdC<!>FHd=S-peaq
62828 z-t_XGmz!Vidimb?<ne{$hmRjO{`K*T#;+Ow{`dpq&y2r5{?RL;S4v+Q@k-+>vtL>I
62831 zeXrG}cf2<3wFR%OdTq;V`$Dy^wS;EBb~Uu-wFixX#^TVq#;VZ6#)fb~<IM1=#wFpI
62833 z8+Rt}Z9J0P-q@b}sPT46;Y3$T&BWZ4Srdn(te#k#vU}pxl(v-XDGw&jPtBjWGIiv{
62834 z&8ag|7pAUE-I%&_;@;FV6Hlhz^Sk}o{xW~Hf4qPC#4G;g6Yu-C`w#eA{9XP#0V@!h
62837 znBJOxCH-#570L{ihN?p2LeoO?LZYsQwuSbGPKG)|x5GRfir3Zfl<=JJJK?qAt;Q<v
62838 zgNa^W^27pP{=^F3$cgp78NP+Sl@q7?HcnjVJ2Y{%@2c-!vO76DxoqOr<na^tC(ln_
62839 zp8Rg|_T&S}Ey-OITT`rw*HTJSDpTrHrl!nIS(>tL;=`1EDa|PzDYsIM)L?2+YDH>o
62841 z2Fe2?0u6!J0}BEx0viH50tW-Ffh&Q#X|A-)w9>Syv~g+E(&nWtOIx3|Ep30=$+XV2
62842 z+d&=-1&f2jgLT0v!8yTqf@|Y-HP{}!8GMu;NH3IiHGOsZ=JefqT@8&4O$g11)>UJb
62843 zr>pV4=g!1bujP$+OT3lddhb;4+=)frrQUVk_r3eP&E5|0EuY~F`iguNzFOa8-)!F!
62844 z-x}W*-yYvl-#On6-^1k8<bvcO$)l1RlV>I`N?w(`DS21&;pDT)*OKq2cvEsy%2P(9
62845 zG^D(qvLIze%7&C3DF;(pQ?8`kO?9Park18wrH)ITmO3wWS?c=KZK?ZHPo{RJ-u82U
62847 z@E|QYEkA8g+Q_sCX*1Fmrmaldn6@+RP}-Tat7-Rw?qGJXELa^JADkYXA6y=MH@H1`
62849 z*g!VW@UTB*(+w~C7W-o(nayTz8folpw#3L|OW87`7hBF&7=>&lTVwQP|AYMxql|4}
62850 z8;yZ%3)^B0Vt>bW8-v*%w%>S~9bgBH5$qs4Xgtpju|vj4c9<PDUSLPq5n~iP%8nVM
62851 z*>TovyvR<mQ^pwfA^Xs%V`td^F<xRHu{L8YJI~G=FS9PzWsGN6*eAv->{E8lc$Hme
62853 zkK!*GKj7o|%f=7+D|~|SHgDvAX#5HPBmQmUFZdtxKQ`9#@9^&#Kjz=(-#6anZ}I<T
62854 z{1yKbzQWkdSMgQGHoltwrSZ4?ulQdXf5$iS_l+HV8{cO9BmX=8cg8-xlkYPAiSOpS
62856 zzw+N07x};Oe>1M|e>a)&iD{XZal;ImgN-lDC(R1xF`qG?VJX&2)=Mna`i=D)=C>Z&
62862 zp6wEzy}|IYzZU+@V*bs9fA0{-zh^tewLfD&6EU-k?Gnh(+0O;%-NO6b?0>WWEh1+R
62864 z#EBh?6Dt-cOvK3<A>02E(ZWQud?X}k6ES1OV#X7T87^Yxium>u5jjb*$YCOKu8Yr~
62865 zi}+!&_+cV`z7&+V*e${TD-la(ESB6{{4<h8M0pIGdqrHaSX>1~T;+++`8?m?ych3f
62866 zSiFE2h|j%wZ-E!`Lh-o|?<4pW@gl>+`|@HViTC3rhKu*-rGkEdh)l-I_&_5)7N2G;
62868 zSA^sZyg|tMDt}d6J3&Oai@(NS6LV?gje=$(pDeh2gMUL@HHA+R-~Ivr198<<K2^;0
62869 zoBW$XwrPBt`22?=FK|AcPdCy;c6i<J@^A5Pi4kY;8RFY-i+sUj`NHJ0_$(tJvc`AB
62870 zwX^wbG0J!O9K*-IC-Ml7<q<CO$XnvLh%XW}Kjc3YS1sm?#kg<tw*|K)e2Mt{-$bsl
62873 zmw98kjEP(({G9)c|4e+lOXM{>me)*?*A9wr|AikC-~NLCLhwAyh2QdDihRdJzB?+A
62875 z=jR2tcHS=dU*H{r@*=+|zU}0l;`1euJuQ(vuLzkx5joTs%b`AzL+=WjU-MrJ4)^#y
62876 zG0Ja5R(13H{JxMRnp-XY@BH5d=ZE~E;PW5+KLq_F{z%aOmjBjpnIiNIGnRQRk$FSn
62877 z7&gNOGb3h1e4Alrh|ig3mch+zGu!Z*IcAQa&o%P|l5gf4w%N-p5Lfj!dkdt{EEF_-
62879 zhZq4-1D+H#L(QRr|5N5u;@b+dLhun)!LXxM!Qj!VU@+^U^-vuD!}<@yvL0DtcGhpL
62880 z-x|y|Y{PKb%ofuWHN!Tz?Xq2lEh>lGuxyX*5j4qmvf;B+>=f}i)lM~%L@f!5&*^r$
62882 ztw3U|!S-OmZHPTYT=k^=q@W*a4;A!J*-r@xE9_wc7xl@AzhUDu0!FG~7$Q>}|4%oP
62883 zhLCguNdZV0(S#9AGNMTaG+rc+7s(Sv;8jpUFOtxUB=jN)y+}eYlF)-Bj3ST*%IrZh
62887 z>_#%Xk<4x+vm43mMl!pR%q}Fe3(4$4GP{t>E+n%H$?QThyO7K-B(n?2>_;;Dk<5N1
62888 zvmeRqM>6}7%zh-ZAIa=TGW(ItNl4}-By$pyISI*}gk(-aGAALKlaS0wNaiFYa}dcK
62890 zsdQ+Dn30O6bfXyxn$|;`rlAgPL_yPgX#E=M(1sK=+(VnHp$=`jf+qLSrf6sinuS-H
62891 zTbhPqdA-Wq0vhVjh7~lOkk_lsEnPvwguGs5ZmPU;Zpj*&f@a}S<`&RUEU!nIn_ok*
62892 zEj-HHQZy9H>rv*Gtf7>=au!lvQ<;TdL$PG0GK*9V#acI&StM&HmdsS-RV9=1O35rm
62893 z-c$|6GFXbdDH@73X(^Hg6f{iAASIJBFh#Ny4aK7|MY3cK#oA$tWPSw=lQKxjqzqh<
62895 z4yg*7M#$h-XjL?g;G3k-O4LVYL?4+EePl-Tkr~lPW<(#E5q)Gv^pP3SM`lDHnGwBY
62896 zM)Z;y(Mx7TFPRa&WJdIo8PQ8-L@${Uy<|r8kQvcKW<(E}5j|u^^pF|RLuNz|nGro?
62897 zMl{KcXp$MxBr~E(W<-<Bh$fj4O)?`|WJa{ejA)S=(IPXVMP@{c%!n455gC~g8JQ6o
62899 zhc=7Mi0K;Y&}NbuF-=3MOdBRMt<<lYX_JZkpk_oha|H-_)r^>_pmJ_O4aN5XYDNrb
62901 zQ`Ou@RcVu~(k5A@O|nXxWR*6_Ds7Tg+9a#ANmgl-tkM=)r7f~bTV$2C$SQ4-RoWt}
62907 zW?5v-vdEfcku}RAYnDaUEQ_pJ7Fn|xS+f{fvlv;k7+JFzS+f{fvlv;kI9aneS+h7<
62911 z)-cJeVUk(HB(sJ|W(|wX8Wx!~EHZ0YWY)0AtYMK^gOOQ-ky(S0S%Z;TgOgc<lUak4
62912 zS;Ho?hD~M-H<>luWY%zfZPrNDQ0%`x(tmxV|N2P(^^yMTBmLJ)`mdMtUoYvuUebTP
62916 zbDx*YeI7FRdC1)7A#<OH%zYj*_j$<N=OJ^SNyeK=#+ymTn@Pr-NyeK=#+yaPn?=T(
62918 zJAOI})#pxf4TO$O^*IjpoJ@_)ECr>Wlc}+(K6j#?lc^D_u5(e($<#Pj<)xmJsnM-I
62919 z$D!67)#%PtP-@Lljc)b16Sd~3#=N@DMXfoinLw47T60wMgZdnYT60wMLxzG<YmREx
62921 zRP&iCFSX{V-Vdoycc|3^H6w-<lv+Jd^Q8JTidsETv!}XJMy(#G_gSjE)arq{Ql>wR
62923 zDAj?u$qvL#b|7xD196ibh|8cl5cTdhO+l#+#6@->F0uo0ksXM-vKLTLssr(p9f+Uo
62924 zK-5)0zk*U7ND|qBsB43%3QBb#YX1<?P=|IM*+1y(h*Ym3qebuHaeY(!2Ynrp>NS#y
62926 zNUGPMdLs|n8+pjy$V2u<9<n#`kiC)GKj>WrmRIc`^tDW?*PwbMlkAO5vNtlx-pC|-
62928 zsNRT?y%8gOBS!W{jO>jV*&C@{h2CpmdDX6hUjJ1)5UMxgWN*aD-iVXE5hr^iwb#%)
62930 zg9=LZMrvQ8b}LkG<RW_`7ug&64XQU%yOlHrrFtVj*&F%E-pEh(MrsceP*AEjN+Nrs
62931 zB(gVBI~%`(QoT`-?2SUk*R7&tXsAQ`|B_vh{>ufbW0G;9KTV}pTx4|Xzg(a?CYibP
62932 zUoKD`2-V@KUC=rOr8+#d3sO5Ks>Ab=9iEr$@VsP)=OsHlFWKR#U69@zVR_XqNdG+p
62933 z)iF^Wo`>x4JY<LGAv-(|+2MJ}4o~fZ^xg=|t9C*9Zy%_RiR$o7vcogU4$mYzJd^D3
62934 zOtQmMyCA(c!t$zJkpAlls$-%$Jd5n`EV9G1$PUjUJ3Nc*@YF6y?~Sm$Y8OQR{zC1T
62936 zdn3JL!t$!U5&er3wU44YJe%zBY_h|%$qvsZJ3O^x()%bZnc6YYzj{%-E2_hDlO3L$
62940 zcRuv9Tl!63`q$+2TekF*SNc5=`ZvY&UJ>-~glTKizvrd*X`n4c|CW}1XOI3JE3IEz
62941 z5A>T`^xWboXGhH))&qB=h$-<uw%pjlf~?5cZA=rNW*G;J8OCg*-8gDoH|7}&1^r$A
62942 zx@($mT%6t*$6Ur{R$xpJ6laY^#$-V~TU@&+cHL})r!MxFi{lD^l{hx}Pm1IHK+xcU
62945 zb*g{9;Yuq@+nlyP=n57FXNd1c`X>cO1{MV-1XdgF)EfWP)Jgt%ftIwYw0*%s!yR}x
62946 zE#kis*q&MwIN+a_R%#@thtfBv?+<NEFH1k0ek-&ueN@ODDh!=9l7pqerD+d?Rl(Nu
62947 zk->4n^{Hk4+TgU{b|WP?DY!LwQqUa;6@=Qt-q7vz5uxGfjiK>IuZ+x$p&4^C8Zy>o
62948 z><W9s4dFZC-0+NuJG>~8AK4c!53deyi42X@MOwon!h6Hbk!g_yk?Y~k$g0SejOgDw
62950 zTfzQ}tz>`BR<YGwDBJX#0W-}ki0(aT4mO{(>jn1;=I-Gg<vf@@$%YF4l^XxKj~!t(
62955 z);V#!W?d7<f3@x!%x<(B#qk^VH^lLq_8*Glx9x8m(Z9bmOvH6cEK5e~OjhhpF-QDk
62957 zKN8136aSd8%2?B*mrRyvn8NP;jU?e$WkMsu0|-so-I|)q=8DghzLv%GwNf0TJMhN$
62958 z-sS8PyJVPr5FccC;=1EM=RY^x!ULmwXufT}Z7}oi&A%7g$+z;w@o%l2;`noGk2wCL
62959 zbwC_{X&n{E<5r6}p0>`4<9X|{IDTq<Dvmd;JL33j>(@e$Q|zhY_$_-zOq(zKS87w_
62962 z^LK2IdXZg{fK^`l9mjrxs5ib6|I&@$ihn_o-P}Su(ki}gtHkXwm<<+|dy+jVEHso2
62965 zwim9*NCp3YGg55lSRUKi)g>}?fAKlKvuol^wfw&{wl0f*rg2aFGh-GtV-}6?c5kv|
62966 zmMo5WEKk_-kJujx`$cW$j@c|JwikIks@yS~CB<x(9J84_7F$W|E%uhUDr&i;nB|gU
62968 z+vA(F)9kc3M)&yUu|2-yJ9=B}Q}(I&9Nh(<$M(PH><$wh6wl?kh85eJJH9Ko72AW`
62969 z;>En5IF`nC-!9`Kd&hEYe3xxkY=7<e&f2b+_qbxaY1@1fpDvEy<=+)Zbl+-=|Bx>h
62970 zpQHOtySn$A{t5qy`1~`zON<`f8=CVye2+LrcfRMmiJuV1Q@lkSqkBDb-o`I=`=z(X
62974 zVN^DiAR@wu$TPT2;u5|@jZb~XAW@$oyhM#Lgpe14d`et-Mu{QlGe&WCW?)1#CgL6=
62975 zqH#e5RPz3=bMC$8-swS;$NA>xcHKU`R#kWPse4LP+eNU4_W?R>C#vm4wVkN86V-O2
62976 z+D=s43DweZ$nSKXsLm7Bd7?T`ROgB6JW-t|Dkt$uR6%d!vMMuKl^Ir<;p9#KRa^z0
62977 z-jDZ7G+dcVOQ0GqNWH(mOl2n4aAlB|EAiRMNuY8PsGJ0llOF=(ckR2k>>HI3*7y;n
62978 z@7I3-QnxaBYyR)>c{QYkQ}4)Ul@^AyG~nAt$P9Bcw*uWe@;P}&{)YV9@mVFu=)3T3
62979 z{$2R#x8VOB=%gqMDe8;;M?V>syqP}KchcKLTHHJ7Z6Y)7o%A-59QRIoo5;@;nS#&m
62981 z8eM{=6OzXIPIOjzW60YMpo=IGzr{R$L%B($%e{%*>YK<-B4fFAA2Oyp*+}JzRjyd&
62987 zW<c^|RG{=o<;jg`X=y>e-#NM@V-iRIEz@#isY$mpU4M?2uFvMnEiKum#ya<nN!pSt
62988 zskBzt%F_0jl39tVaqVHMj?!9eQdZZ}a&0TEDd;kj>AK=tGWni|`7*kelAD<_57!n-
62991 zy1umMrF2t7-+k|Q*Gpe-q}x{K=q71#*Zvf1iQMdTcUP_jJ@Ps-J&L6i+l5lrg#!vD
62992 zNjGH`dfb&}J@;BqzT$ejw#Amv(xY8yVJX+7>n?3&G1YoYu-?3-ZSb|$pLch?NVlz&
62993 zUfR0uN-w3myaB~)eXOsR=*nU8ed_L8_g!3T`dd?^!M~{NFTTI~9KyY&QkL_4+5_JW
62996 zq;3wEhmRn=CTtI1Mf&5YEb2>9G$0xkO*WgOInm|OO-L^^o6Wn?(&(Y6A$kGn&Cv&$
62997 zFw-Y9JTpEslcLP*%r`UFyF8giW*5>+%&wpkmiO??%FL5UH)LMOyqlHmUfChp<0;CH
62998 z&(6$V67<c^%ifk<f$=#Sy>-tK4&otvB#+Ri2&4H}9>?Q(0#D?VxsDg}QeMVQ7`@-f
63001 z>8WhM^<0k`{tka9Ie&?5F%Dh}U}LJa5}$1bw$9e+s=p7tfGbc7JfJsmh1#-+-oj<+
63003 zVo!k;<XT|tsTTR|X%_kIG&>ESPq$}~)4Ba=8!mUwzb92=R`#MQ%*;Wc3}IM-dhQuu
63005 z%YaSXgwd*$N~(;{`7y_jfwER$(_?<$1imHj0x`Q7(e1%@;Lczt`W9G73g-F%;DL4!
63006 z(9N`yz<_f5kQGTP-a`@HMY;V~Mpv0T6PkEvoRa3d@>;7x(|6|6CZCRXcUAdxRFbwO
63007 zX;YGxk~Dkow<Y)6lJB!6>B^FHP}1J0q`gr|{<4z#3TZA$$K{omlviF-UU^A*rQdTt
63009 z)N4KUT2CF;BM;V7N7hqE)>B8;)3>ar-mItItf$^ePra3%dMiEkR(k5K^weAFsW<S{
63010 z8+hssJoN^idIL|rfv4W6h-N)B<DrR%#vWQ+hj{uXp1z5vE#hg5c-kVKwuq-KWuCT_
63011 zdD>FusiVwOUb!b<xu-4Vo_j-2TS8A;LeIE_o^c61Z3#VX2|aCLPg~g27WUN3o_g6+
63012 zZ<;1_h3t<qiDuCd8buSy?O}cYIGRT$x-GgldXmD7M4i#XXnCejw1u+Kwx~Y3Ho85!
63014 z+`MneWqdh*TfIxZ%k$K)M15BH7QWRzW8>xOUGf00<Olg7Ud6xVM_k-p_q2^4<Hz|4
63016 zD{_jQCa23xIa6lISu$I`D(A>~@-?|oE|zb|T=|w<CjTMVxYK=^C*PAB<VN|viyJLJ
63018 zB%jC*`Aj~ST`o$gaq&s_G<&;fq-H-Cfz+MroBn2yi!tg>^vw_#Rn!bK!*l*T=4dlA
63019 zI3@Tb_$>H5*cJT4x)XR82{dD~w!+2vw7u<Kc5l0{i{WX9+F|x^JHj3Xdt{V7#-0z}
63020 z*s8Ijd+5R)rD8=#8Y?<V#fpwJR&-esEBauKG#<x?{{KgY_Q!;-=n@mUe7Dh{!z3DX
63022 zcaFM5bgoK8bdEHlbCinZT%N>oj-xoo@tX^gn?sG+T&~fYvqjOGU4-Uvw-K5vcN?3z
63027 z{d9Lnm6zUK{_<|<0c-}}I5>ap;`|J`6FS2AIN7`L?PQuuH`9aEN!xfY9?i3{hAqXK
63032 z5vz8!Ya@0BSMW7F-}#lq?Uh;?&u8=bd=YXCmcw`oPv==YhwJ&0^l0!{J_$Koi9`4Z
63034 zBR^kmg7&{n7DLBZ=jM#o(<b^0y^6V81}%R-wD@Z5`qm=H-O%x?WDPX=Dq2HNNQ1ON
63035 zLq8AQ`?_oqH>Mlq1$kNiDqH0PT1-o!Wp_b~mYHg^7c}Jnsy3l1H$9<2`$9Jkp=+_r
63036 z8)a(Ecr(dNHFajTsfDJjHI2YV(*$fX*k71t(*kTUt-w~(25d9yfa^><u-$Y3JIs3E
63038 z+tQ%esMw?!(_6HS4T_D5O^VHm@wctog9gP$#U{mO#TLalPn-6#L9tP>NwHb6MX^;e
63039 z&bdy<qd~Dzu}QI6u|=^}u}v|~->&1=pxCI`q}Z(3qS&g~rnpWqzN<q=y+N^2F`kDe
63045 zcqX3-4SE*Vq_g>}(4^<^xqJzKgRg_${T}}(|Cn#%pFnpn;>G++tXjWP9sX-*?R)rM
63046 zew6>ff8?k5X=wg7ZpXUt9M*~#_|N<oevx0on(-!9jjjA1zmIk1BmR^>=YL?e=^+(Z
63047 zU8=A??IAs-7uK0Qu~O}gwP|1JBm2qW(Dp|{qaP(Bq4kfIF>)NV_c%EfE7(QQ&EJL|
63050 z!RX-Fpe7g-)CLoSkAv;O4t;i2WvlI;cK?!RSO?j`?&*d-!j87b+8R5?*4pFj@%98e
63053 zPv@WF`l|Eh1c&?_tM)m32j9gPz*b%Zi{72PT<vUJ{*LqA#O?-`E-Z9+4l~brZGx9z
63055 ze}-!r@4|J5u$1v~>|4tDe(WfQ^8;A%kLD-j80<Fwh@DIgKZPAbEw9DC-~@ge*6I{)
63056 zl&NwWcfuaMkT=4Dyo}$5b$A_bgXQ-F{#5=8D|?_PIidU*S4Mt@E9-1K?5F-4Yk3d3
63063 z0S)AZd@BuB@8n_XojhF6evSk`KSU#V6|bQhJ-->J=Qrc^{APmsB~R2-oD=mF=OplU
63064 z3r*7Vo5^~9a|-s#&(IXd;WSlGZl>wU&FTCqzedyb<fcyjl4t74%`EjxK1)w)&IXs2
63066 ze2adnCm%~3Z__Wp+Y4y9o><)Lc$@Civx*16&nsvpc=~Soy`Dy_aa>K0>IuZ->T~=D
63067 z@N*+I=&3`Ko;NhB|8a|+F|=dn`Vw_G4yQls$-!oD_$Ty|o)EmQzQ}LrdB9fi`H}Pv
63068 ztn*Ra!&&59<yKs-Hh(gI;(pFL=l+h{d4Ti8=Yin%kcYbSN*)HwyOIxgoX;biuP~2t
63070 zZ`kYA{t$4L`mj5`VdWdYKYQ%S-csVp-kEr^Zvr~LVdWcEzTxit*_Cft`G%EmSowyP
63073 zG1rc7^u(sr$2{j<jv3dpmz<Aze9{s>rM@Nq{N$G8geCqBN9>atQ(T_j?!=i$-xVOR
63075 z=&M?;rT%<8pFjh!dpnT^sn5lsJeg0WA=tr9ht{g&+0a_Bh-ox9_bNI8Ji7pTW+C5B
63077 zwDMOo_-iP&!a_fa-o<|GSlWjDSRL(f9K^lAK^OCZ;GG4qpBKsso(R6UhtC6FJj@qh
63078 z@72h29T)ICa6u<uhnfF`zb`usw5@7`*Hs(*O*Oz<*fD*=Til+Bw_-j+epfZX4$S1f
63079 z{3-TN!^EAL)yRHs#>D+nW&(|)lkxv#?8k+s;u5TTGk|U;I5iVFJ&;vB;AVn#CRk^J
63081 zSZ9KDCRk^JbtYJ6q9Ex`y4_5$&IIdB6l6J;Vkff;6A8UXCG=t7BSrEU%b-eJseC0e
63082 z^|8v-4(F5OW+Ek1PLB3ZBnabU&$P2iVhO^|qn?CvzUepP@2cc<v5*%0FXYB(BEFeN
63084 zOYb2y-kq~h15&RdH5$3r5=NRfA~hVjny8&vJr8H-E{SnJ+gbQK3xBg+pIl!c)tj8J
63085 zq<K#9dBshRw?LVplo?8yrj%()nWmH}N|~Y*hnrA3D2mT3ZbDs-a+XrgQp#+l%vQ>5
63086 zrJSjhGnI0tQtFjbuatV-an+ek<~h_8do`4)?~dDV32e9fbmU)&pW-?_<({B}$1m3J
63092--git a/src/third_party/harfbuzz-ng/src/test/subset/data/fonts/NotoNastaliqUrdu-Regular.ttf b/src/…
63096 zc%1Bg37i~NwfCvI)m6Rkd-wFd%uM%8X3NZEl1wJEWZx5#nXEHeNWvOIfUpN4fB_Vh
63097 zT~ts+K#)!XvZ|;&1Vu#!1fL2%5K#CO1r;Hg{{FYBdeV~x^*!HvzxTZ_dQ!J;-Fxo;
63099 z4Md-?&Rlw2?{8)e|CXe$+(wpNgA12VXu0PbYv+K)9q2#2;pCBROTX;?4N>4_^k2K-
63100 z%pD2k33{HWfX9?Me%t1gKils5E>X0H$nM)ba{4yZJ2BoMAAj>nXCMFkJ+FR-XgU$Q
63101 zFt%mW$i~zI`$xgQi0AEFP!agDb1LpPa(-J*-m$Z-`;0Ck(MaTb;iOYHjF=z12K);d
63102 z-2eRKk)7L2Cf^5We>vJGP8m6Q)9rtFvP|r;1d;r2+fF@whiDu5KC$meL`#-z+rDYr
63103 z#_oG=CaULnzC>JCjA-ZZzVJH7ls}Qe-r#~fH+NT#Uw`TU!<^CG@89IwuQ+illc@IK
63106 zm(WbL`6X4fgTh4Rmo+}+9<4mO8`nEQ%R$3>nP1oHbf-?M^?FXXf=&RFASi_L2O5pO
63107 zk83>$h|1@IF4pNrojw8jy-rtxt_B^im!X|9>{vcmzrR4o#GhZG^%X{NeG~*ADxU$m
63108 z5A-Fy%&DXkA2Y9yb8!{lJ9U{L1FbnkD*h3jUe$=preZE>yj7i5bTfPmS*v9{ntWFt
63109 zDU;f-BG1TSGUX4mM`euPAEv7-57|KFQPKNLI{j9s-{@2&qbettaf?oToSQYGE}e+^
63110 zsKmBV)G(2@$`fe2;W@g*&`MhjFVX43jkHDVpkIS_fToEPX$`ImL5-lOPQ##epl<!y
63111 zV*Pm&XoXm&73}-CcEJB%q+YR&x`nIg<6>OBCWP}S4dT~2kcGEV+X>}^;)5Xc(|NY2
63113 zztTt)!RO~RD7t97XrrwxMN#P_iVAaRlQfq)-4+@&hiTA|qd}9A%rw3Hl3=8>C5$P3
63114 zfx6fl=-_u0Wt-8bSpJD{LivZnb>$yPL*U~Ay@=;mk(cXO*h*pPo9K5P`mMnI?c|j%
63116 z@&tOSJV7|Q{2X-gtk4d97|XA))!_Yc3W_FN8_UnrYnX9e&~+W1EPNGx-zq<+(nIAZ
63118 zUMoLK_oDm)=&yM84xTlY-%#oN@*83TGTsgwo?L!|-UQE8pq~IUX)+3Tm*1h6%g+n%
63120 zkHqKDE`|G@dfiFTm7{zQ=x*V;@+;!?<@d#Hz_VN*_i{Y@Litf40Nmd$?-Pb_eYgCM
63121 zSS-IUxFCNMdFg#%wLq_L14ljZaQa>Od2t=^<{|e(koRZhUkVvudIjaz@!VSeCGA6b
63122 zCHl^#n2-a%Js=VKhHk}sK`%qcUoF2)PXc3O`3?3&`9-#^{G#|2XgkPSeoehj#PhY~
63123 z_vu%-eg-@$^a^M(a72LZ8OYlN>~EqC_lr|;{WNqvs_N`{@ig%2D*pnq@cX}zRKA#F
63126 z)%&XU<m2gMh(0_6KQWCu^krY8DeAZq><TR6U%(%@=uhRRgf~H#LMI#0-cx>pMd1e*
63127 zVys{4zVJQZIT5%<V6%3}dlSZhyuv<BPhtS=bs1G%aIBYLTpbU`D0<Nb#Br!tR-w&1
63130 za{pNmJ$=0V5S?1S16W=ZKLhfkABdnYPFzQ@$2-v3JK}uwza6^9+z_{*d>_h<x?Drh
63131 z<NETA;%lmoUV=^DSL+{!{VpxP&rSxd#IuFyySMxtYeabi`g8kEf_<-o{(8XkT#Vle
63137 zgV=z1%ASI6bDVli;B$cczd8>-RUYJXRb<+HRObPYM~ESabFc6@!RMhGTYiPua+Em2
63138 z=YM6Msj-XCyQ;V{7F!UDD)B|-aicb8)jHk|Jk)q|6#l%8ikY{m#3f)<?aqnEkP23g
63139 zo3De2o0xOY9WF-&ry3hMkBVHJs^V1zH^->PC61HFOpdF9iN`rzS6EA*;PZ&*0z5YJ
63144 za`uPRzN-&WWjs!JesA@CwGNKZ#nI@x!*ulGc+6wimumPqRqKP}mmj4+S9q!N6?I-3
63147 zzL4(~zW};P-*0ldOQ%nRJ`cK$k9EYJt!ke}zoxKo4)XV3BhTJRA(S~a<35UOSgk)t
63149 zyk5;uU%}e?hWIl)+k$7GM{J7W*$H^|ALuK-g=-gL*&scPwf-G33wj580F<$2z9aq~
63153 zsZw9*U(l&vr^-0z=~QWVxlW(c>1#S2et)4(OLe+hr*m~u=bdoBrYBw2&+9Ut3ff58
63154 zx!PO0k9<k@Asz!x1})IzKqu*EK<XY8xxmr(S(W{ex}T`ZOOCeRspK+8>~na2#B-5W
63158 zs-p=s2|hBF*3kKM3w@a$phxJZ^cPu@y>e7e$X#-eJV#z7uamdRr^^?~m&+fQKOuig
63159 zzD~YL{;Yhfe4Bi`e5d?nd9S=*en5Uy{<{3Q{2lqb@(<)^<mcpH%D<9-BmY${E6bG)
63162 zmx1ngK(|O)p=?%8G~QzTs__xyD+x=&lL#iFiELt$if-S*ZWZ18Kqr*{1bm3&QjD&q
63163 zkI-^;hUTH+VEMK3cPdN%LFo9PpO@aBtk)P0ym(MVn56?B9QfXWrw+V(;9m~Bjk`Aw
63165 zMEd)M8+4+vyF-7j#{E~QgcADG!}K%!{d4*qjaC{Q_KM=YvA^F}OZ+Vi39?|s)u^@)
63166 z3oZD&9kg25A>6HV*{5H>qF<lj-YCt$*x#mm>2V;qj|_A_-9*;`(T(g?x|{AH?62r~
63173 zed&kNkEEYS&q+U(UX=b-`i1lo{8m96Fd{QG(}VPobi4FL$sze9r{tI1l1B<jLCGtH
63175 z#O%mJMhviFLwbEAnJm#ziTcw0``|!*!@Uh9p;$@`AKy?Ci|J%K*-&D|#K!&1>!aSj
63176 zlBX{*Jlwli^!D}c&9c6d*tcwFqGU~@&^NNNBrV#xPZUM4DJ3^Wle~7H-6!-$6DX#8
63178 zd0;SEV%ec3s|L|HvS%<+TC@mNJ!oC(<fYD`p~POTH4xRJO212#n)vf3-tw_Ug9&J3
63179 z&q$(VUNkt2ngoAl=B0LCY9Eda4-E}PpskX%Z$pWe43=mvZ=A$^WNs<OOR>2l4?1ZB
63182 zIg}{%EFHwN2-k}arJ<x0OQycUJ}f}0){VGL_om@4>E4l&xc>N(umJ;<l=_B}shHqs
63183 z?GQ_%^$E_Q)H6K9n+*4>XwAiaCOh>F^wuZG9LG`|??_gSi%<ZBK8QY?7}%2@;YL-J
63184 zO%ZO8QX&G76_hY-dZb?)!gh@Ar3`ve<dA69o$N(bp#3&0u>p({NhgQu;lz&OUQrw<
63185 zZ5-)uC^?I0nn;u!eRDVi6kwr}liw}Dol~`!3yhqqQWDU?28>*C^$jQX3@1u1sI8&o
63187 zR_|U1|I3NLN`fD@VA(~3d%5}`Z|@#h7{fa2lWBCTlq1@6-UTz6*9<|DnZQ32wd0L-
63188 z3={4p@}!}!z7los69hrEmam9JNgP-<SaPR(69XkX+|P!AhvAA|)C>c|1Hqs`F7i-s
63191 zyY?_qq>`g>EP=VK_iM6pL969ULcRoWr63=_rXe4{W*{HGW+5NH<{%%x<{=-y)<Qmh
63193 z<`MowTSU0@EfrhuwaWwC^-9h4dkunbU=Y!fOW9hbo@2FXD<&qY$R~oE)@I<yF)@FS
63194 ziiOvc|2{Pf>F-W=?rjr%T-J8z0|Fc!KW5EHXG5u@*ch17Q0n|!P2u4i(0me1ME-1|
63195 zF)@?J2B>!So;@?uGZ9P%u>vCeVrl9W1fLfg?m`grmjY-eA+BcCW_zvFTe9>OHtlIl
63196 zClXWkfam1#%@U0ozmkmEptnwxhIw%5Sv<I3N*EH6{Zh^l9_r;G*No_$R(qsp4434-
63199 zLAe#X$5hCL(KKD6WrK~0DOlM#dc88iap|Tg$ywaZu1;b!BOcA$b!(-$%TKF9(pNFp
63200 zFwb-j7rA2M9>kAEuEiOpK;Ph^2o~4Gl%dAGO@bHmcKW!dOCpQLJ?%Ye-w*52S1ffE
63203 zmSBc^8cXe%<#UcvKNsu-ucy?3^1Nbc5-#((76+j2#0;#!6>Tjja)&O>M{!{ho2nTo
63204 zEJ8uxg~i2vf?Bf#1+``=Z!;5xWxNe99LL-6!gAh*7giLp(WE|<28;ZYG+r7i?iaMW
63205 zl_+U-t9Uzsmsaz3YH1B`r<T_8c4}!IA9DbOVLm1=jPNmeVLcy{7dG%VvryQ`+wj6B
63206 z-i8;B=WTdlvx=)9r7bEhUfQbS;-wQ*T)cFmii?*{QgQLp$to^hIz`3BOQ%A|Q^pLq
63208 zZ+;H==nc-*ioC&jT9G$6A8otG_+6mhsm(9cioE$Qt;m~Sgr0hXk7z~S;9{-F8(f06
63209 z)5iGiR`1m2muf}c{4%Y`n_rHedV`N@Mc!bKR^$z?DDJbUDQ-!Q?2|+`fZY?q;81U&
63211 zvZ?oB(#j9<!>j(i8R7E9n6#G<^81bbdu#dqgGSOS2>I{cJg<7#xQhg-=kg89Di8Rd
63213 ziBZrqMC?f-3H8#WL<Y2xOQ83NlpZ4E6wqoSlM!?`k@*fHODzcPtS1rKwh`HjpqGgp
63214 zR}wivt~L;M-R@mTsL|GI1uX(yL*xsB9whRkogZxi5-0-#&cL%o!C6Eh;0@0sihytA
63217 z=w<@iO@KTTz-I#ZG@(xuus1>WX2{r#F`C~cYJuD>SA$*!;l34p+rX<0d?upZ#G8rQ
63221 zwj7w2qyGx<S}_Q^1q2-q0?QEEt^}Wz;I|UGTnRs237xG1{#6)%6?C;4d{)D!Rs-)E
63222 zU|9nltpUHau>D%-Y8~(nLwCcFV+4M?9^<Ts|Ex!w4Y1_~VAz1?8-Q;E{Bk37w-LNH
63225 z<6-FWVc6>tjQI%aABA6h4eh=Ldwd;p?i;B425j{hZ2K6-{}wQR8#?(mu8%{;$1&Ew
63226 z0K*gL$G;)}4%$2g{XPYJ--T@7!?;gF*H7d6eYE*LWc&f}`~W<E2w8s!oX-HukD#+3
63227 z!v;TrJ)Z@iXVLdL*yeeR^E~=IkMaw6{vvq12%r2J`u+?U{}uB6D|GpD;QKkS`~v-c
63231 zV7a$~9wkA1l>~M(Vm``-pOYXzNCIN3fS4+n2T8EZBEh<m1X~m6T@vh9lHgdag=?1t
63233 zN%T!!O+xxM5^`vlUqnJ}0`xWsb(fP+k8=H!BoyX>UM8V<2?-5bNNB{^jR#0*@{-Wp
63238 z?q>AgjQ*R^eluj=42)Y*w-t3;QMVO!Cp<>NiNJp%<U0v`PJ(<VqyH&ryAAp}4Oq8>
63239 zP6wVH(9;=seg@i}3I8|?e0HLKCuBMs@|+8K&V7M|^C0U5;B_H%x(k>tf(<_ceO-*}
63243 zK;}oGmv3M`JO<zWHe`DoV?Kel-vO`hLf79z`3K<lLyY|+=<LVn^AprRhxX5d_Y1J?
63245 z^6#OS-@`U<V{ZNda{K}O{|LVCfZoMC`4eRRGp>IDzxNOe-h=M`3Y;InMjzmM0J0qf
63246 z?@^3XewIXfl0@Ma62%=Pva3ln43enylW263Xi9+IAklmtiIyG`5voM%%Ou*+-i~(m
63247 zS4nh~NOaytqU#P4-ItK)879%Ykwo8>B>LYYF$lh)n@J2~tZ0VBnk^*8K=EB9CW@f9
63249 zH;~u{YOf`+12{UKA#oBgcP%1uGWt(J|Eb{D9Ry*_X^_1K*r#Kx-Zl~u8^r!)BqBD5
63253 zHrQhubaxtLI}Kx=2Aro|4uZ_5VXV`jpY6b~9lG8QU7ijMr^EI;&}IkPoB=xXQ4-I>
63255 zJ>Y-E<0M{*^2dPr<FNJBkm(b^@d@DhB%XZ=K6f2#ay|Op0NdRNd2YhkpGMo8p|{VV
63257 z525@1lj*Jh9J&WS{T29h3G=RmIZ#53!P+G5dyK^U5X<hz+<5?V-~p5$=mgCo@nOun
63259 zeF{9E!u@wKpT7rs8qdFv81n;+^F#FeA#gnNG>OR1#UG>m6O^CDynYt*=vm-<7JZ)u
63260 z=4ZkGIkbNcvFJJQehzc;dGLN7Sf0mxe;#<BN8EcJn12eqKZU>j6!?A$49M-p7l88x
63261 zw0p4$1bzGr{r?qweueq@8e-eK823Fq`zzYMk1^gy?815`9>CZKfq4`-$}bZWg2cp5
63262 zV(cVh(k;Xcs8gcEjLSefK{taQ1HDSjWCRsKi$FU-H-H`mp^sSt)q>`Mwh^<SzjX^S
63263 z8~EG7-!Vwcc_lFy>fN)5d8QEaVjS;%#C+iEdy<&{5@G@H528=-ZDOHa#KIeiMbJKi
63264 zF`_-hYWj)AoS<ikB~YIPjuh(C8Dbgm%K%R{K`aL>d0@&vO{@;j>zjxbyu`3AV#Rm=
63265 z=TO6x{{a1*SR?e^_yXt+ViRDS3D8Fq^wb1<H$%_O&{Okypl67+41-|1R*c&Q-L+jq
63266 zY$EhJaWx3-C!+5}@N9?8+8+lUAlA_aLc0$1>BRF%@Rv#Omr3xKF4(mT_C!9xx?rct
63270 zr(xLBFzjg<_B3o6{CFAW)-vd9Ids1qyq5#pa_D_I>X-9+jIjb^tbm`cfGjI8?h5E~
63271 z1+WeQ&&tb*tp@hhz_%KDTMhhcfoC0ftOJjA;IR%ohQVVPJchwz7(9l-V;DS!VUH2$
63272 zZUnj>fgVP{YXrI*!F(CP+*%L4uLr;NkZ(O~y#e~#1dN-2eKY!PMnCMM81_+YGcarh
63274 z=<PJL-wyuBo!EAiPY3?fq01e3w&Ot%?7su`J0Rm3z;g!poC!ZV3-X?YG0uV=&H}HU
63275 z7-uK!vlFuKgwBv>v7O*?Hgs?f+Mf%1oC|#CA%>g>yyv0*eBeJHK6XBQ`vU0h0`$G$
63276 z1^#aeAm5(}#Y~m%Aw~+-_vHEaX(InVS`-9v1@-~LIte9VA(0{*;NS>x202h@btPTd
63278 zA@u(1*mt~4w^G9J(1*0oqkW?1RzvW8>{ZG=X#W`6+bP)-vso=>laYgCqF|#rf<VN(
63283 zpI4FU>rCmi(bSk&%6bZMldUdmsL8uBUEr~twb2diuN0-FJ+`n_ViK^<a|$$PZpprA
63286 zSCNAXbV`q-F6#A2fHN;{HZVcQ9pQ2SE->ORRn6i$1D8OA0Lep7MF3|Ppb=9Wv2_N4
63288 zO4Qd(i3l_LauG3_bVPc-Qjy#lvH2#*;{=Dj%LBBc{2tui(PL$TX6_(2cNGwBZ(qGv
63290 zp_Iv8G^uJx#q86b07mYVk|S*QPcW!br-F$FZtJz9chN0iAAzm6Y49Am5HK6K#S2MM
63293 z8ojv)YmPf|Db>f<vgve-bRDKrk;~0p+K~@eq%5X1xyRM0a@+s?a%0x&a(~FQ{W}C#
63294 zJ$szw>_<LLbb~W&S4GeHGLu!uzFM6C-fWaLCmgw?=I68v;M?Hmh-*A3A9D2k(H$L;
63295 zZI|vuYGj-IPvj$(SC?O>&k9ridu);adu_3}Vv9i9JZ1}L!r|av80WT-Of&0pXK_>5
63296 z;e~cJxQ>}3-f*=k9%ZT<w#3}^5uhlS5i4G!&kK{8BE1WhP9oD@5+4*Ml_nPSSVCvv
63297 z`4l~tSeU5B68nE_{ot`Az+*}NnDKRfF@Ja{QT^^LzP{C~O9u}nV}8c5-ip|{MChg(
63298 z>g%xttQMm|k~!MBr4}Hysu+1z;t&=@dR$e&Q3>1{wi>E&IT@A$g=-(Esyzuyg!;GQ
63301 zR)g7XR-8twSCYdagE8PW$wr&(wfiFmla#hwTyA41WDx8Y#bcf<TNHy$aRtrHW^h`}
63303 z(dAXFc7xp{n+<mLy_cDu6c)k!bv-$+*(5Vjwa*cj&|D<OFp)cQM;Jl3!M3)PJ?n7P
63304 zRxHq&2sfn6%^{Po*6GM->W}2SkqQ2k%hSSLGBo;SdaC>fm>A=8|BwvF8h*?RJQaf+
63305 z%?-A>JXtGu1Axekxj{pE^vf=9)NJ$}@`FhBFhBSJeo%%V6sQA!&{7O=Kj=7Otia(z
63307 z*%@;?qh{HW3~`GZBViVZ+F?$2)b6Uc2ZGF*bS-rUy)dFV;B)%5-0XwVZy{{FK;5(m
63309 zIb^rZA2HeGpx5MsizgMqY&7|;lMUR7ja*Q-$!l>K9HZYdIu*sH$VP|J=rG&e4n?*E
63310 zEdkl(GuwkEhhQ)pY+mliDEK^3h0AD9NC04RnU-1{M%iY93T#f3OR*TNJokT}?GOS|
63312 z35?fio42j%GvbeihQ6B0CDW1;F6@=5pXJ-zTU-3CE$tlvyO>Vpa_N-(M{lG*A6zq|
63314 zXkh-9H{74McJ&3PEJ@gkix(G*3u`<<6|>ol=`(qX&#hrz#&*!#Qi43Rd7Q58$Hwf?
63317 zgut!D8%bP>9!EHojE8dJTq>JQD`VpDC6-HtX$X<>T&9ke_V$Twyrf{>oolkBy;gHD
63318 z>Puxkj$B{C<#9R8u9Mu2sgS{&cRLLxcA^x^7!q-J)MbfGZ!#K<bq>GPssw!=2nAbR
63321 z9<q5oIlE-H+C8?gZIbF!7mvP4=aj$w-;Hzh%|kd7!K2{3ku}q9sgCmeWGCUn^b_Vu
63324 zeyZgdlm5Snv9Su{-v?4ewsB09qmRhptSm93Wb%3ndBC&)rdNe22V+sMEvDtNpJ1JI
63325 zt#lH#(+t(-lkGrOj01102S#V}1c7nP{KQ}vF?Pw}&|8}7^64ZN*^2G+-6EzB*1n1A
63327 zr^o_9F+DjLs6m!h<1RKRMvJ>P<F`6Ivd!)Bc--*YLTkX5u1|6qf6taut+bpRB=0wp
63330 z9-}%cu?adn)nIK3v{;PD<#JscHW}?Uqs^wUHHxLyQ)>$;?o6nd@145c=(bu+ShM+e
63336 zAE7-`klgSci{?9U94*1q-RERQO608R{*=+eFogqG1Osfu;7<n?Z_Z<oMT0M4n`d)s
63338 zcwO7a;`zCwukz=Jqv~_D-S0oRnA~IS!0f>fF4j75IkwX!lAruEQMF9HQ9&@{tAij`
63341 z8PtI%b(mPGc22XaP-~C4)L~PT>WHNBayFU%MfwKW)L*MFpoOaB{Zk?$qXc4NBb<}X
63342 zvl-!ma~$eqW`vbeWV;dV@ob0(eU3^L7WYn{J#+ek-UY?_Y<g^|)b|M5c?Q!ERtL{Y
63343 z<m4F_kCh$yZdP#|IbWTtv@{v5c2hu-;vV}Jvl>vD=rl-1K@9s^C&xX`)|P%-7!G!s
63344 zXv$A0SS=ot!`JHcelF3T49Wibu-%|YXBo|A$rg~jcC*Jc`nYIt#?zAnftajhZJxS1
63346 zOkA5)5_rZpuj-wE<~jVGz+&wvC_6){j)IM1`q13<2Ygx@p^VeU6%OyBMN-JmLLr~g
63347 z?kv^@n)0$c?`^8-bZin$wT*{FW~;m{Bdv%aW~ZScCL5WQ4p{RwT~kevC|~e-iXrj1
63348 zjaDsxy@E}rtEDq24Ih}L$}!a@Fml843Dx|<-!ObOQ>@Q4XPaZufN#w3e}}2ZS$Exs
63349 znsi2$4cYV$x7zj9W>Ry2(~!-@C_>Xz>Ds~uEd9bfk4+TkAky-+f9p{azfizwN8%R|
63351 zk$-wG2qVI7u^@gOxa9p-9yf(N^r0n39RY<$k;>VRENoGZx7)+HI)~Bj_u8FKuP>Dr
63353 z+(g_$s`s_J>V{XR!XbawQx|T#&(gmvXIJWSf?%-*Iq%P~Q)q`I1An`!*MbME;QNgG
63355 za3mFGvMQ1s%Gm-ADHIDaS=McR20Imdu^4g?dA~fi7IpXoF)^U<CHx|@;BRlXrfWhq
63357 z7HJYzRyj?iC&^nt1-rB+biomAhI%{>yFfmVJ>&>s6}JgC^)*yVU#Zntj>tEb2$^bf
63359 z+R6cuIE0I+LJ?`P%_@-FY4zEBih(SGMb`b?qhisr2o;G6L?}#X$u<-x<XzT;)6Rx^
63360 zrnXG!?`)bDtcmZcNnEIof5zxex~TkJ<TuSUv8N>jT@?8FxH!)(@FWbQURrgcpl-qi
63361 zLP{Uy*^H#>A+P5S?c;L@#aBse_{z}D^w3c^sZKP<eLTxzq9`(t)xnHN^Av-tG4Az5
63362 z3c*amm@mZa7EdBFx>NRu2Fc<#yQkC_tlkC>Gf!>`I<qd(lk-}F9YwRFQ8YWfW}_vL
63363 zL=K_LBg(|z8?bU|^j4Z%eu5HIPXjciXHtMmC(Ls?tVl8k`lfZYHp(>nSc2B&BO$D-
63365 z8?63}(PcD*C1$fRqlZZ@drDH^bfJUH%EXY->uNArLJlScTsgDHV)5Gy=DJi^FguI}
63366 z*>j!ZQY2GUR8Z>?tqzkdB->=GN6oQxeLz1`RsCGdvWN-4L+;i@b7)r2Km<{pCrskJ
63367 zAVAKUGpoO6N>`ggv-!NhgI(}Mx&#|=CJw<(kV;~WSuDaO;xz_|a$?S)O%5na_XjPx
63368 zJVIS?iuR87Dvhb<r~y6s(DjuGH@HPt-sn_B8NO+NFDN!q#srZidm-v}26O&Ijm5Rl
63371 zn-(5!uz!+7>C&U0cUjROfmIpth({Z}AscI`pC6^wFEb8BCEiXy4y!r_>#+e+oZ_i$
63374 zo~h>iV|<nTVPRyO(b9yCh%YFaj3NJJq0mEeUCf{HSe(q@Pg-Z&+&qq*JNk;wCrQTp
63375 z!!8p)^FD&t-)8Rlo1>j{<naHr?*jg}zH9%V^gV<?Yet*t&GLHeJJUT0WCqyw@tx-!
63378 ztvq{Wv`faF;Zohnw_>X-srj-rLJ~=Q4_8n1wV8ZvMo}VqwB#vMt9sya^utYA-_(6p
63379 z$amTVSv}pf1<kVLbUU-@sJ-AdS?a?zy|Dr7=>4)W-N+0!yQh!~TAXGF<ENX!fLD$e
63388 zhPrX@S~Ao~egE)#mO|awdzOrlQN~VaKJ*>S-}Q>6v#a|kZ&>80d+ZGhMyb4Dfn56g
63389 z706Ynem{cy;$iPC8vdbo7XSGB3ZvOrd0zn>`nv<*Xg=aRyyYJ{3-3@D1?~-Ph$DaB
63390 zLAWPiNc^4W;4twq&cWRcm2+^&qo0FAp4P+8jXVCGXU6};^I~-lt7j{~H;u-hzc&73
63392 zO+9|KOblh(wD~;3itzh-QI=x=Pn^dto?EI1W?$t%R#KM(ejaP51(BY}haA)b<I&D)
63393 z|DETwJZEGx=pyL`rtq9m`hoThu=InmZ-6UjQ!%=#axUd^{&$^A#VD4_rfT`Q6hD(v
63394 zPlk_uCUtFFyVGSl_K}p;=lA&zKau+Xzs2}pbUt*HbHo2B-!uKQ&Q0}iCm?@A^|unZ
63395 zZ&dHEWb+Vv=i>fc^;}=SCo9E~b(kN>CxSMGSWBV$1;3&k@!?0H`f-!uH(G*{l+I2+
63396 z@_Uf$<)C5?8Ss$3Z*(h?Gbs6;?$C`#ekBq$`XtF7mV$P-x<A&xs}^PTzs&PD&VST(
63399 z%N@)GoGFVTRa@g!+$p8%hb~f_iEcrN8AJYL!eutP%%Z6+hosUHwHckcB-ZYPfTh-G
63400 zH26ke9sjEsq5Klo+l!?P)^Ow#X08L_Lo+uoc{4dRbDOBY$giYrT)bpmS1J);f-CH(
63401 zEx4NJvZCMI-c^@G?rDfm2o$FC|EO8jnEE^9e`H+s*zMmrHvHhX!jI?-k>{_MsB=rd
63405 zWFi&~27De_6R%DCjDrgpK%%H6v#p9(sghJqr@j6F#AS9-Ht??<jfw)-<(})5odPph
63407 z9u{i%+PNok!-RHL_uu?Glge3P4fma@-ywbY4^2Mg=SJK7VZZaJr-i<t$8yZ$!lRuJ
63408 zZei!sjf}5#SE)Xv-(w9K=5uatDF~M_o7Im)02d4X*p0~7dj7cTr&A-UAjsf+H2!DR
63409 z+Qb;T-|ZQw`og2K9%zTPpE3l)wt-2}j;Nuz{iJrYi=D4zjgpaXT21wmLFSGN%=&L7
63410 zf!U?r-^|v~`O*U1U#;fV`aSl%DaxynBZ|D69XU^9(RvZKR=;X!WZDsO<$F0kUGr66
63413 z{&yVS-%2G~DsB>uSPdQ6A@Tn@QZr4W>BwUj(@I)TkM=x7LXaPO680D@EQOe;FmbC%
63416 zuIZDfcT8-V)QVNJzPZqx&!+0qb@7^TGLj7VoFP}pW-&TU4g(`aP%^T=AYd!4p0McG
63417 zR(<Q^^BVM;q<;N-?^{zkg9=OGig>){{Ae`(IkVqutr>l(rY0fO$6__37xB_iO-+1s
63420 zA%%a@u%6I*$%6SSj+?(`!J3%^-BZ%ZXxQyE>dTdOUZwtB`EiJn&*^hO4eI0G1*xY)
63423 zQzj)&UB2VHi!5Dr(>HC5#La1oU^lg;0!cTMyme8F61H2thQ=kuwsRJ>E{-p|en(%!
63425 zKN*yEA%+-a8saI4B#V-Iax0H0f=n{s;=0kcR{PP&_zp0KB(o#h$IyPlxb}opOj6|P
63426 ze#%%sQoHrEX+5-`|Lj69{QrVVM+j5ZkH)$UVb5$yWzxlDHkmOhF*Wi9^4iaUxNX&q
63427 zih9_mze7_bzJb<%x}qQCpX*NKT6-K#&Tz&T2q8`Enl}FnH+8oaZ7kqTHH?mae_)c?
63431 zS+qN@8@+q<x?S#d3!_u&vTeIO$wF}Dk|m8Z(jC(bHU5UVqPwwX#-j8VdHGU*UA)fb
63432 zHgWloNg6f?eOQ;0bf>nuHZ2;w-ziAgQABzyTEWJ*7Fb#R`me-}EnY<J-;*LyVocmV
63434 zR(-Xq=}C_YLc^V@Xrv$QT;gou46`A8!szH*qrd6(Zp(JW7i~%{OePBh?M+Soo5Vs(
63435 z%Z#FLi+oW-+#RuN@oh`_dFdA6E7)JR(+YLHh7x4{(<=rKWbkK+;K&LVBbf}yA^Fif
63439 zxS4t?-yd5L!G(EAfz44rs6PCxzH*k_)j6@%X`>#Yr}F)=0fKO^=7-6c!`hMf*#EUN
63440 zT-B$wIIYiWI}@Jiy?SCU3we}DPhD8panZ$RHil~*u7IM%T<Q5?v*7T#C2JxO&c<Ak
63445 zFkmN4>c1((-}-5Xmxq1dnajp`;u{#l(O&gS=&_fMdCffc`ecs<v0Sn$Mu%iI$fBjY
63446 zcFNL_-`cQZUe*s)afEdXx7;<&oAcN+Zg0lyuJP0)+vZ7&PVG{XEv|tz{ZoKrT6t7V
63448 zwUs~Q-@gdb;-Lpx^7&lUphT*r?NGn-KePo_s(%NESy&PMY@h71LUf}&Vlgmg5S^3S
63450 zCAcPe``7kQ<=-0t_Rq!rl%*;6ISe9y^&eILF$n#qU)r+bs+w`4{vyC4P&&y!L}uy&
63454 z(}t%E>|8kd<4f8bYG(G-x6B&wWa``)y|G*tz9wEzIjZf+n$)wfNZ7}OIT?N?e%N_T
63456 z1tB<d@%);(XBE9}tHl}(6r05<v7o^+sd4h)jNW-I(dp{E<o}%t3;aDtT@S=OST3oO
63458 zw`_7ZG}Ogp+11lL)nqVBcC*)<>yP)@T-p35f3?t_cDobi?1?+KuL?HZb<T~}fF))2
63460 z%9YA1UYkpqvNCS)hb%^KYuK9!qm9>Ui#xs98pT|jkrr$pTu{Gsr4nrN-tuqLolT9d
63461 zx(oZ-H!bmd+7p>YwXN%Bs=xoCVc7f2YD}%A&Yp=etWMnB#Cbu@-ulZb)f*+%8+otA
63462 z(MUQOsg2gwW(}$b@Rxk)RAs*K_cN*-vdmhv_quAr<rmJin(c=Cti+UjD&gx$wAF;Y
63464 z#6FYwGIjHB@te~D3vz-E{zG|fw^a45kNO!O|A7&I&CkOalNRSQ`C?oTV%jMl{;$7~
63468 z+Ld2<rX`7b*2y^p)Tf;DR{gmahLCC+RK*Ud|8-_2Y#sNma;V1>j|r4X#hT(x;ULur
63469 zHF}`ZzU*w%Kk(E}HMEc+=UY0|bwgiExU1Y<*X(Va-z4~AHq(j|TwZruHj%d_CUoU(
63470 z-u6VIr)ZBk`j)tI-I>`Ry>z-LiN<u^Ca(I*>iSKET#Lgs;ryvWYh$)`Yl}1Cm~n0A
63472 zZQ9jpS8df+)siL4E8DVc*~VaO%eY{`U}K1>Ht-1nOmku|;RizC2a^8@B$N;W1Si3e
63473 z<daI0PYhW4_r5nXJ6j}MbRub2^UAz?&UyEqd-}09bTlWrah)r(p{p;qLlLi3?d3tw
63474 zKs7zNJ*{Mex{V9>8-3wm*_+y)=JgO4a(o2R+ipJ?aLi<K+r|=t;qrxP=&=Vp?vxRY
63477 z-68s5H91rZX%pjxGGEDz-!^<r&%TjZyKlsP(tU%t^u7TZ(SFHoV{HGf<FjbjfM}(N
63478 z@E?hnA=nV_jr%2*0=S*{EfVIviD;2bbplM-6~hOswfO)8e^=gm?AU_LQc7liG_tFY
63480 zB*ESb--lmEJl6?==pEZWnhLok9{bab-awZ%ej#Pm(Qo9^qt%i}EBOoQU4_Ja*b&oh
63482 z5pf$&OLr?aB)L~JG1%U-2Ku2n*De9<s*uR)s-sJR{tO@RF=EI|bFuKuXSsln#aH;)
63483 z^CRLGd`KU0#k`~*k;7H<NQ(MsbQG!q8skOY(u3Cm@U`3)W-}8QH|A%7TlEFMq>E$v
63484 zNBFLgpJ5}hpAKs&B5`QClUh^`*73TlfZYT`_<(@<im7-qkOuU9mcwYTSsvktseocn
63487 z)>pq`v*U{I-gNDsqVGR=VG^Duw*nUPowi~0q?u8ME8&{K2Ly>>U;&Gep&1V@WUIx{
63488 z&x23jb=M~-A^zjhL<g2v!v9M;P5(NJVWBOd0O{KX5)$F>SFY^qJCe;74))p8#d1cx
63490 zB*;(4fApW$vtkIpgXmc!V5BwZMcjWd>$4-pi5NnAFFC&=+;n3YsdfzGKr`s~7+?gB
63492 z$PpyL==o%-pyA-S;j}K2tosxBBU>W}`p2>qj6kYVch8L3w;jomQF6XNluID_qu7^X
63494 zjHYP@vP21ND?#(9Zf%8aqfggQY+`5_nrSpK{l*J+gQG>Q&_u!ntrju^4fG-3&uR=S
63497 zzxCx?7yrjYHzj=4w|x5Avw!lADxMnxdd?zx4xX<zYwcKOc|-yiM#(SlJeot_cfI*d
63498 z^ACL8S9|o+%QyVVJFC8(=l}X6r~mA6bL|2Fz5#4`{<YietX-ki`pLg{;W@|?G^{`W
63500 z{dqklsjm;b@BM)fyg&H<4}{)-I{5zgcmAP=Rlp|1V{?d~xv&?mmE>^|YQIjjy_3D8
63502 zU#&WU^@a-g9HPV9&6?qu`vY7ed^M}2O;$-!=o(t03~iEzX_JPw$a6lANOW^9_jt~V
63503 z6$Fh7r@`NY-#2sa?H&G&xlA{L>t>fvEf$^0FwJi(JuK!6ny(n))O>^}Pe-rE&ltaO
63504 z7VZGw0!k--)ZBgzwJnG_$Q_bc+q5I=U?_^CDQ|8l8+$cZT|T<i%`-8F6q01wm&=-a
63505 zTorx_e1-TI6CSf3jgndo4s)%X%VeD~KgG>N`{1YSt(cJsnduh!k=Pb2FYZS;od=(=
63508 zOW7#pP8#t+%O^ce90WgHi5F|GN?ApJ$7uJo=jOxxH)SYs$X)!<r>42Nkf89i-Oe@#
63509 zXhCw}1>!#c5?Ce;1VagogEK9c-?U+KcxI0c)cYtLdV)<bUen)j?+Uku)KOfj&Pi?c
63512 zeD19-Efn`>(ssY>$^;x9$r1D956>QcWbgTxkW$Te$~zGvxmrfcYSGPRti`v{?;pW`
63513 zLlWoKkBFukXOT&5%LLeSXBu2dC%F|{T)U^yKEBks2*@2)>|_uGQ>g@wo$T9)23-oQ
63514 zLQ&uX7J{pwmm{tb3wAtDP68DQ@Je6+y`^w0v0|n-fYCP7TUtBQwtZT5Q1*#LJXi_3
63515 z{BFCCadN7rWK@4H9^0`!EaqxXyXvOxoJ(=Jjeu#p*o@}-4~XAJPfg;edcV)qz|8^8
63520 zZD@=ypxsh#Icz+d?k2YlKn!cAjL=FIsdJK{Xc3!(&inYuCh<0VEUT-50B`4=6(uo}
63522 z_QRFp;Gh(V&k+s>F&sHNIR3_#qj0)(%O)-rf$e9Ep=Tsk>Yz2Pox)0lz;s!b!ihQP
63523 za1wkfBk7ef{D7Nhm_!^B-kJGG{EDmad_%Cn2hek@+5?76<Jtp>o>UzS54#3Fc-67d
63528 z*Y6|SrL&-e*y`KzMAA%bBuJbifdhN)LA>9(jJE{;sw<|K4(FpD#pO!PgiN&{;aox3
63529 zkw{jRqwIz`pf|OO<1j4rE41tsLPjR)uWiZ{iaKwP7|~XG-~?%iX|FRDp!j4Wl|dUr
63533 z1d*}b2!KpUgp-Cy@5eE53g<Fo;!ZiBU=xKU^q(Le)uAYeopjWxRZrnWZp~8w>w=v}
63534 zaOe?$S0HEOx#cy_!fB$@=CjaSJ@->S3=?3!`!E#|!Oq$2=QP9@IJ<bqPxMS20(t~3
63535 zQ=|~!NF<2<-62DY<yne92Ly&=1P%}7ushmAIn1HZK;-Iy%n=+scM3RcqGJg-9Of_%
63536 zbC}{r!%!01(pX5amm0_kt#G&(Fih*JH6uu{{rne#(F-4F$^6r5?cO!BX`sJc!ujGh
63537 z9)Nv&cOBY&Xw%}%Vr#U2dSJR%DK*Q@d^S-`7DEAd+!J?6ykRrYeCOgw*UUjI+~EL4
63538 zqZ_7UnrTdPPPKyBvUz1yG$dn~@lV!e9N}n{c5@Jhc>`tvkfar-rcsjJW^i`Z=a~|-
63539 zQ3vn!$uAoTW}Kn(-w6#4W&eQpd0jLY3~GNVs(uemIt}AW%}xs(R15jQ;INIhg`A>-
63540 zzKHJgMg;RNI$}rUap-6OfpKkD{2qpK>IN^$4&Lu|F?=wfMfyj4X)Vz9jb2SAkX%^9
63542 zIx9~-#pI>LzFp%E8NyQFij)C~xojHEu|WmL`th1>PdDSkem>Dm7W)14wO7mW{rfk&
63543 z7*^tnsox-J8-1wk)ziw6<D60ojh)z=HEOY(GwuzS-3O42;Rh!uH>D#9_iG5+6i5>6
63545 z%xyYtBYA?BB7Th%Xqk$fppE0R|5BKm+%v|hCw83wZtInnT-AT!8&sM67jO*hZ@FS<
63547 zjvUerMZ#IUZQpt~greg*>-twJW}p`KueA3BQ-Cy7D+;k5v+f%tTGuZszHpFbOG2}3
63552 z<k7JRc=%=bCy4%Gz`;L)51>yWU?&a}D#7C*P!J-H5FES!-i<!1=;v+VG4KX-MFKAP
63553 z2$~E!kcl1et>}A5#Up0TlnDa~dN|;NMB8eDcrkGkaV-&t??K}w(V2VAj6@m?fkE_t
63554 z2C&3arm-SJe3E#QcpvdN@fPA<fRoa*#HX>l6n&DxJp2m!#9>hdJ0`&vxCNGA2K*D)
63555 z4+>~$2<Vy(U>~*i-vsOYWnmpfSihu=bp%1|M>sdIAs6_6Epc~U2JWd}D(;?NBJSh2
63556 zZ-BOA4cgA10PQ!RdlUr7W9WGjP};}`e*wrVFBEw!1#NkPM|;iNfJ%{+N}dC0cfy@c
63557 zoC6s)%Vx6Y`eJ3$3%vKC+XdbxEc+b<?{gMOE{sG`M2!#?4lN^mNu&-gYtRLB!=*0=
63559 z5JkrV+S%BnfMuO5*2Qpk`){oSlS$G^hW@#M%UIyT%Z66m5L%ic7@GLGL(9-{=CYtg
63560 z48Qe(=YtmHviWQ-|8s{L=3zGf0)WOL`oDA8K>G#GztjQU0e>lwdlBRx>q73*B+VuL
63561 zj4{v<2G}%cXg?1GLI{D6{u~ex(TE|@{<FtqHTY<!Z+-k%7<>Y-8G`LaqvKdVR=_NN
63563 zgKl}Li<E-UQjFyQ>|h0g7^&b-hE(ed>+y*sB0pDrE{=%|+!6eCf*_I(Mt%~6mb!n&
63564 zZzkSNyc<4){_aA52Vg%8KtHH~Dmwou^XC)9$B8G14-xMm-cH;}+(FzxTu)p>EE9W)
63565 z-NZIx0X{>t@DC9s!bFhp6CxoHNV$hUg3rPq!2g6_gI|STgnx>j{#o<qUGSao?eH=9
63566 zX81<<I`}ZW1HKgA3SR_ohG*do@C-Z+uZ5@J)o=&g24~?WI00J-szn6bBCNwIMhPZi
63567 z9Qu)#7l2LhIq-kL{{o)^p9G%(?*#7vZv}4#uK+IxcYv3ID)=J8<%{Tl7U;O>e@DT`
63569 zvK{YQJLhvHfhrcm`a0}@Kr}mfNOcPUf@LirdQwR7{cCH3(3hx=b*XC|mlH-F58f&1
63570 zSMA*0{#tJyYc~&U<+q7+PlL_2ov0i9iGG<dZ&WA?u7J>J$B0{j;Z{4(-U?=V=Q|x5
63571 zw%sUe{-ImoWty>8J2}=j-Jw@q?>SmiH;7*MP3BIW7KpZ$N#Z3c!Y-{n^Wzt<J@f3t
63574 zD<o(RcSsh!K}{P7${|TF1}HMSZTLmRQ-ravsHJ6DH8dj>Oow7&mPXK|LmEYs1PSe`
63577 z#N{h$^W-*Fa?q?u3k=Cp#Ir<fEJsBLIlGg#i9t=CYmkI55f`XT{$Gzn$cJO@>iB`N
63580 z9G-o)FfqAnj7z-}+d=1Ez?mO?VD6UI(o?4hgV7vn&1-XN$w;Cc^-FRgDteO9=<@bm
63582 zPP<_j9GvPErdxJZ=h;wIaztYxyFY5Ti7rN#?a7qS>8OX5kRT}sKKs$>`-vABLfP-|
63583 zilUK8Wh)`K<VvNCtoHq-2PQeWG&^v0_NJFy8;K_ah7k@(Q902cpzSnAes+DSr1D0^
63584 z1WOy8e70FXTD$QtKe@TSy)_UhAKBp(3gw9G%6M&3*b8wmSfG|1s>~Ky-tCfOa(HQ9
63587 zG%;H-RoyyBOKz7~Zn(WN$?1~XYJ|3zCf~C2z|EUd4vM=RqkUvm6}R(;))R7S)gAp8
63589 ze_<LS#vcM+K;wE-=;wcfKL#HI9|i}&An@aeVF19l!C!&jMpvDHHHD-93;rBQX%cWD
63598 zx$G==?B~C3s3!u%PmXyX?4XWzqt^E?2lYb9dkz>0f8v*dJE-)PiG)!}EXO^B8?DwC
63604 zw-eil31S@9U=92e_($+X@MmBg;4D#qu71$`d7OAJ@hI_D;#I^eh`WiqOn=Qu;skM=
63605 zI7aLtcA+QiN6*<$Y$j%iabhca-c}+{WQh!sBEm$-^y3(WX8Lkyf;4?O--6$S-++G!
63609 zx^t|;cPlk(y7e4Q$3c-utyJ`EyMrjpr$NJ>lzX=AcIr926zuphWW8PBht>7Vbz_jL
63611 zVp@S@HGNab-ZC(z^9@(sOSOA7b(~J<o{hX;o&F*?d9Am<2)%K8mMGKlxpg!Cnw|ED
63612 z2&v2R?@Vp%v4B^sH>>~nz*;{Kys3OeD%Ysyw8{Ayj~=5)nx-J7MpZ(ziKV`1LE>DT
63613 zpol_Pau>W?Z)zr!0Z;uM2Qy<C&gP(F^`bZ1=iv!?VlXxv@W-9i(}(+)>-%m$w6LW(
63615 zzCQr5@5Wu5SQ<l|Mz2hl`)YO?JC10Y<U%4wl~(g9f1iSJb%{2WMZf(iuT9c;-6vB)
63616 z_qL*>+H|`oASw!PXB^JLXj;rxy*w1+%?$72k|UN=W!LM*hVnL&V@cDc!j(373-@cq
63619 z8Fb?YL0rg#8w8QQc-#(C#pgCtxrIn$oQOnYH8tYS?~^kz=iFi9I~VccJonG*$7HVD
63620 z$T#uV>&@!Vy>Xo*=logLCgkD+%SEG<Puc~KVjJJPdxR~W-Nx9L-gEER)gvBNFa!rL
63623 z&fTcfwM~=i&=Egl-}j#T(mN*8s>j5Rrf3FnKb8t*oXqkbM)vU<&C|3oJtCz>XTwS;
63625 zw{4qe_^{t3?*22bz-*#4?GM>vHfR&|l*bpedkcP{d}yKIacB0=xjl)P5I0<5GP{0&
63626 zr}9ao5-q0-et$#rxSYD`Fuv??MmWT*8H!d44#UB?{W{ID&%IjrHoW;QItz_LD4d-r
63628 zzcl7^;1m>yE2>}-j3fxN#){dui6nMJ!Vr{;;rYnCTL&Q+!iCPDnR(ORKv%Xe#KU2<
63630 z9Y1-ap3r?>wYj%Ec11LnX3-cfg0*XshPfFJ-TBe9(b_>&sPNWl#hEl%I}_mj@w{8v
63631 zG&3$mWX|VjnXKrD^GqZ-&WL`2OUaP4MP`Px+pd~V&W|~%{7der_$P;w$pmFgj_00x
63632 z=H@FWuR2)fS_fk@+d}DJcxzPHG7Dc*nHlVlQrgt@`_6y5ao4>!XWfM$+-k@J!>Uy4
63633 zm!b-lKD2*U;WhdE7v-SHieW$PbID0c4a&ii=;5U(&VmObus!$t+<(vw-~#)Q1a=2_
63635 ze@5cpGf2q80-GK1a0u)|ce&8#91`mYBwa&z+B90LIH?V2=+jeXAh!T-Hv_O8FpB<X
63636 z(I-2YhdWIJF$7z{!{7lhfLkq^P|R7TqMtEr%Fhfo_b(VW`31xF3kJ*i!oV_({<!Vg
63637 zmFP(vRJn6N;{;9<a8+xX#C;}79rvj-)7L}<-!f7Vc)N{X26h*;F9DZ=q!|}nMi2-N
63641 z!K=-XzdI3gI){FCg6&`iOapg2>~Ed^fixDgYDu%b8DKCi?L)CtF|#n#iWX#;>P9k!
63642 z_LcS8#pOlYt-E`5Z_sw*fVLu3vp)4|X7ROgZ&ukvD~^yd^*k#k5Sn^Y_hw7!>Ne$F
63644 z*eF7zw6IG<QhhYTr8WOZCfJ{y4v^I&CvKjNj=PjfB?TW_|6oE`f9^-p##+kxtJmLq
63645 z*UsB#iseASH-6LB>FaZakr+jB45aNe#c(ujQ(PMD5=(n-nm+x_Q}2M~`~Cd^BdmEM
63647 ze-zY`nZR(wt4LZpEpU*4nShQ<n-GMJa_JiHEKlSVk6UpCL*lBIyeBw^$cZA$ytg-C
63650 zJ?0P2&IUZwv%b^cxQ-jzHm7OHTAJ7QJb3EJnSQxaoc`7;1>MGTiVKPTUfJoRMLq9c
63651 zyz|7K>=oB|tML<C-un7GOQHT4&3YR-v&^~8p8IjpcC-=;&~$PnbIphLyk?T)45ys+
63652 z{+~nlEDfr$@hs2tLHN}*{f%$rTy}wXa*X}2SBEG)x<TK`r_t}Hz+-41Y+O#obB;#)
63657 z1WO)NTjd0T1vd-!dR8?Hwkj4{pv58qpX2~}n5Wl(*9#pkppOkrR>(4L<j{sR5x(=J
63658 z1?W)3p)%e@hcl~&n}XgSuD$;KPj(=dxgnqK=mM-q+|Fn;k!<et7sj)ynRkEweZ-H5
63659 z0gwRkRwTd?n1pNI9g-a#otpTtyDhX?KjPW-PCe(gbq%@~ZWzth{r&05UAaT|>{1M9
63660 z_Zu3GE@;L3-*NtZt(z7O{oWbjl~+vct7v1#Y9nXls9ab)Fv$3>z2V7;hd;8bT`&Fo
63662 zj7F0~CueFmU~soCe&R)KaIZbS{o{Ahj4nqbw|@Kg2D7;~oI8m>165o-9aq^d$r4AI
63663 zZN}HP7w?qj%xB%YLjYA+U4ay>2V9_;X-D^WgYiwWc56+eS+L{SD>q+r&7Tm-TGbh^
63665 zk|xkLkz+$8**~7F-h6Iq+nJ%)yoSHxUAIkRUh?G&pMWa-9Pr{^xVCovyO7xnH#JI`
63667 z@~c0+@D2D!@byUl9%$J-X2&_sY?6yviqNjY4V@5i6lrZ`?xhbW3b=rDClR7!Z`QSy
63669 z#ZSM8;5!Q6wNhJ?O<5@i);q~j;ceSmk`#?OgULgA-}MPY9-16cl*z>${pcUY9ARs2
63671 zNo`7vczUc<&&Fb%mBrDs9vAc1y)&=75qE-;BPbmn;JvaMRs4}{CD~OyOhiX^*Q;lH
63672 zSLoiVcKzYfEwjm8MI=J*CGCwWbHf$PoNMttZ+TfEmu;_8Y8x>DhQR-_s?Qij$dU#m
63673 z*ec`*v~YQ9-VIr}#b;ijHn`F*N1wyRh*^SWmvPZMjwd;sH^f7N@1=~b-P*f>Tc6R)
63674 zjb>H<GobxVq#kfQ#htq77nfQ-2paXiQX!X0#G;W<FyQkb`VPS%VPh6&mb$VsOfZR!
63676 z*6_o*yLVTYPR-L|HsPFsNJx;PQTq(b1&g;n^RdC*R<F4CQJ)|l2PH6!XBFa!6wRU8
63678 zQe_q11Gk-y<!Kik@p-n++&Yj<Ml;nn?+n!pVe;g}aro6Mwrx)Znpcf-&NX<ak1w76
63679 z4oT2t;=s<$NpE8N$d<h%_2RGmW^I9ZI+aShJPV8MI%VpGr->cJKO-%^31(YD0QW3F
63682 z0xw7NQRCp$_&!hb+Rd!%z~+alr|NSfTF{X_elRF&+-A-#xw4w%Io;h47m2?^Z+*Nq
63683 z8dH&!-p>%Y)df<5Da1%t+FaoJtxLGQEA9<Oft?W4t3kh8NAG(W4zF;LZg(5Y3)R!&
63690 zVRt@OcAq}g|KMBSD%)c-LzY}yZy<Ta?n%|7ZokSa*(kQE_swU|{NZ4z5OAPngJJ&?
63691 z5kc=^0L-^Gvyh}!&YXN4Lm;Vw#?z02GzD=SEsYkkg$`?>Q!GMI94HRdDw$Ly?DwLH
63692 zh+YW41~J2ue0vJmRjei<F>^DAjc(gM9iAFJy{n9HtX01{{nkex8cb-J!FXRi#?uV#
63693 zFM3Dbb@iVTMt?G_Bt3Omh|LUROr5rApI7uG-NF9Q=85b~VPb@$oLpS3?GBH@u}I8Q
63694 zP{L|BwjzJp2?1nrO)7&U2(w+?MXQiU!(KPSD+{w5%ASo4Ul+r!-k+Pd-IQ;N(Rj43
63696 zfz>Q)oy=m%$+(0s*}btVZ|Y)>mySO6&-6{Sg5-cmD_Bl&X7R373YoRbl56L)UJaWP
63699 zcjDfOt$T-0#nL6MI~Rh~Nwnu8Jt=$<JxO-r?R2%C)RTGJPS|Z%yRyt-?%ija=-vDM
63702 zL3(3kR(Y)~mf4ZKQ&xb-I?Qr;oG_@7yrfGSEwD<n=2n78Yt7q9=qi^sM6hrm?Ax^y
63703 zKHFNFZlyTSzE@v8bF32fAW>bl?+oAl-u)(`xaQh(j}vziHv<N$Cf>daU!pVc-w?mL
63705 z+QLJ-FJpJ(w1P$2x_mo`1D&Q|c4$v9m$8dt?r-{M!*Xi5zI}h9*$U0)6SD{IIXeE(
63706 z_L&!z;er2p?ED`VZLB?-R<sHCuCsx1)V6)6Cs~fjo&cKF1Y_e6tD_BXpHTokIDZ)Q
63710 zG&bE+%N?oM6cDW-_5h%9=LhPX+4y(eO}Gs!NfKwU|AC~tTHC4Kn{f9l2(sx^0x1@L
63711 z*;L!ui&>x=-LmCfJCA7<w+P=c_5?$TTNbAue$|VzxjB`SIhRL`84hPg3q>6^Rh~aw
63713 zqK`dDOvVjn&sk&w1a2nVp%7NfLjWf!(>T)x-*<;esMWXOrjn^Ow=q~8!*y?wdV;$u
63716 zSKID6Pi_JpP+M*H1n}Oj-P6`Ryu~zlY6|c`Psg&_jw0)nRj@YOf4PO_d4hJkR8d62
63717 zaKfJt<(}U8$ZflvnfW}u?duPePQ*P3u)NE%Nqp(T-xF7ZXFvd?T5--~Wo;g1aVKk^
63719 z(rAK7T7;8roP&|2`hjK#j(;G&3*HPuAm7SpHUa~pnw!cxU_6E-;?RgTFsU{;LDF0T
63720 zMmGeGdVA}r>cQY}jfK70%<}1D5n51q*>8LE`EMF7-maJsv348H%evi8kPe4Pjg5Bb
63722 zHo-6f5fmwq^^#7}$q#Q1WRn<<f4}f0_-3L7QkX6d6Ap9FKvNkV;HiuaSOi3ytk;dU
63723 z*c41zz^u&Qwe|e1;`Z2-LpTG~kg>IyDcOSlNLk>6S|(jk6RBOz$&BAA6-A*o5i}YR
63724 zPttJ8TGlT`l#zU8KD9VB(ihG}lm1{YjOiB$V;ZJk0F2C~fmDt7j^}|gza`u#b---f
63728 zl~j4qr@4%YC=nakRX=HJ9Vb3^s;zaDH!lQAXQ$!|S=z3}b(Y@&5vvw-DH^qfN=|=i
63729 z&j%j8JHMyB7LR~00UutA{KeLyB8vj<)ox9#-le$0pzu;Wvnf}=D^b`!zvV6Wqyz!+
63730 zrz`Gmz0@sB9S-Fwg*hkfP<B>4ZZv-B!e_vPh*w8&?-rFJI-UL)BgbMNd&j3vn$cCA
63732 z(gU-<F;U(b^cGCsh{lIrG=3HoTe$>6-|D8SLbH}JT4rn7M#myZAtpC~u49epiq`7@
63734 z`u$(TdvS-0C*{lZ>!EEJ?KNa~8#cF@dMD7$RNwI590D$07m=D3(kK$id^9C`g1IVo
63736 z#m|@4UNpgVLVyin2;?Y?VyQP~f!yfSGU_-I+My9KB!*$Y3;jsiCP|y_Qfa0>lS7Kj
63737 z;UF10GLX!vM7<f@)8DtSIm<+@oj-nJAW=~E9XZ(T|ME1k8R_GLPpVz#hTU{zU|qxX
63740 z;vgOldW;0U8s^o6?M~*H34O)m#YK2XqzY&@raWe-!JJYkb7UH0;P=;!qETMlKfu<O
63742 z)20sOB$8G)ZKIn<@WYAY{ehV=Z>di%9NIK}{nl)v(o`Z@J%6-VpvydGxCa~2O+jB^
63743 zxG?e-#757~H6DEYfOF?fdy<W%T5);`adTB4(x<j>i%#wHv*Kxji_`{;oKJ{^)3>~A
63747 zP?tj|zVAyau2?QVH5J!!LnfBlC)fJRcAMX+9-5;Cii<{rhF7u|x3&G(kHgm@ofpY6
63748 ztM-~TIy(fB5PI`S*QGA~=G(e&xA@rxuYA+>TQkYNLBCg!3?-Zi`h0_Ztv9z{^m`9>
63750 zX7{5vg*1H%`;Te#me**bk@c6?czaB3sZmQO71?2D8O)|FZOICws#<9-TBmE2`5rq0
63752 z1$Fzx>G4LunfDs=i%~rx)_+SVc)V4I&A)4jccs}-wusi25Ng{m!G(9h1K{OA1GhYh
63753 z-sWaYio+e)0CBX_*WHRrl+F2TT>+g7k@gxu8vuFEyaDuFZ)x32cqb-KSoQ9aTKQBY
63754 z9!cUhDn`fm-rWN*Ayic@`@BO@V?d3B>tVfWB>E2U)g69+z=k7Z<Rq?Fap74Qgs%rW
63755 zl00@i6=2QQR$HDZAdp<9`^jpa-t|ejJ118ftCLm-?Uw8|khT(WN05x9L!IvEab4SZ
63757 z*!rh^0ZjAj01y6+<X8OMYkCgct<yYdBWPzNpz#7Nu{^CG-u!H4d~#olQ?J~1{%>Dq
63758 z@#D4)t^nMK(CEayc!$Hiq6(m3HK$grRkvc~wfa-^=4N$2he%46gCqG{7Z^LErVM+&
63761 zzxc8K_`-Rll|KhmFlZIf70u2KXj^QL<1+1ld%I_ewmDO@BSBe(YFjm4X{y(0ZP=8&
63762 zLew3}Nnu_f<33-3Afj@xU&!{eMk?s{jukud&S&6XAw7J@M+CD)U`L|Zz{!Orii`PE
63763 zOi@i&9d?Go8av$yPs8fLMs6>Lp&}{6T@Kp=(Lh~AN@uL-PJ}&UsZiXNON3oYA`(mv
63764 z=S$oA#&69<(``NFJK#HLy@p!>#U-qZA9IR$@sS;4!D<x+?Hp(NwyF$`l@oq`=RKc!
63765 zb$Rgh-}|szand4dSt^X&s5i6wpyf}xFnE3r{t)&7FYa?@t`9WaEeX>bLw2iab|s|t
63766 zI{2Xb*l#YXS+%@lbKK#H^+$qbBQl<wd;R%2-=1gg4-b1sTe>KRhZ2g*cVP6IkDF^T
63769 z@d%XDrnz(>v}19T0;R0?-B(||<(@sS_`~V8?{(V)2lu>p=ezDC7#=!RUX18DnWA`+
63770 zXTv4w)ZKUAX~i{J4rLrW@NF}8APX8ecECrPu>-2PDl3;0J5aBN0w7CdJEo-d&a0l#
63771 zfsS>gH+0}@lLwNN)GBH9@VdBxnXCFTzE~nUDU?S>)QKaJfiw;r2oN}Kz~-6Atb`3H
63772 zhvpuro~kbl=C#BX^-6-V^UQ=C5{;N>#SQevi;RHHtxc=qMQHRoX^Ou0(h(yA&GN|e
63773 zMvPcNNbB>D+Yuw({>x^>$V!CZ)gLPA9>V3Qik0-ti~EzwP`>__-Tpp97(Y369DcQO
63778 ziXP%Yl%2KnYcK?>aO}J{gi#koTL-<L$$Ps9dhOMD$yY}a1a*nGM+ppLr`Mr}eX&;D
63780 z09O&m{E6$joUrREK|_K<OpQF(x!r7ZO|H8ciz7K4Cr9BD>Da?W-f_vVV2kkTyK%|7
63785 zc~1))56eM4<86dh(FpHa+UBiaRjFKCl*34yW+}bGd3Rm=lJRN6#-%4SQ?Drb!X1B+
63786 z2Ykcwqg~Wrq$v)2j~^|y){|zwGrYZ>Nl&4-Vp*xnNAm}(oM_{V^ZN@s-J(rW+jeS~
63787 z6e)5}mM;!BU6B=k-W$Q+BAM`cZRK9*y_BsSiK9F7;WiAjZ+c{0mu)uB)+avd)+MbC
63788 zfV-L&-JB>lcjMZH+J!H{k08xN2iLT9ZJ{HnqgQ`!jb`mPIgu%~A|8Z<$8&89wxwAI
63790 zckQWngSTK^>ccjkxJ-kp9oSbHR827r_sR}NMNOH({juF1YH<quw;t=y@vDO0HFY%m
63793 zECIeNzcaW-OIwCz^Df06*I9uiNt$ChzhVmRTx@E&mhm+X4(%CC9N5)}`}XZ02qfHc
63794 zAz)myXKs5gpnIn>tn1L0`<BlvjOMk<i>`~;ACr7>P4--G#x|SyzK`5t>L>G-V9-%d
63795 zFuG1N;TaOkUFAeKO-Ac{N~TU<t3*OL9+6rVA+aje)B4v=sa$Q<W!StoA<I#jV(G4a
63797 zOiXPG?k-jig*@K3Q(7crIE<mu75m8RAPE#OVPPq+V}X|r#S-ld4HT$Qy%Vt7>}ny{
63801 zZ<u5JJ^K9}cn9!-;g2A^$;%wY2YluzZQg>XbJy3{={3U0F{i69&k4MtY9viSiekfw
63804 z=be(@8}b{iB*_qJI^@I=981$jelwrNv3Nj+-z6xJ2iaCCDw}3-Y~J3Cm(YD{Gr8jF
63805 zEQw$-ZO&E_Ts!8)N)fkIlwN*?er6qVK9NlBS{!pkj36t<<;3u0(dkWw<(MooE`e60
63806 zD<^N2ZS_q-$8cbF$99{cMqSWh&xa!!M%4tQ;7DPKm2AW5EAe*dHtl6MBA6#yV=fzl
63807 zIlvGkk+$*-+V&qT{BM+8k%*zyr63V45A$7<m$W*^pf{0omAUKCtG9nss(EPl-Hnkz
63809 zN)dh#O~#=QyX4E2BRW%f6-P1c^_@v<O^KaX*w8)<1)BqL6_%uVLSLA~bD~}r!hUbf
63813 zLF7yOedV9l?^~~CQaHuX#(@wSy13tWrHEdS=hx^6MO~lo-fP@JF%wG;WPE#@zJZ{p
63816 z+WW~t9G*5b7b?VM)uFbMac^3ai^T-bO8n$C!CxsD9)b^|`5kKcIfB>#h<56Gr)m6}
63817 zHr&14rwC^-;-1KhN-z=(8bi5I#c$K(?5N?52?!RhKjj+>35M)yrQ+U{rj86qw7??C
63818 zP{|rWYrTE-!k54Y;TJ)8#See6m_pTMw_!tKC#G;+5=!q}Bb*a{jdaJueG1xpYV}22
63819 z$&9C*?xLt1&klwhtd#W!lOy>9b7x=5I#|xh1zp{^fY*S2P-tc2JaMVOfLO#OfqvM(
63820 zabQ4ub2QyQ-5eP!IH21&Y$ZUT(5Dm*ZJIfqN@XJ9blzofij$<GHHXSd9(VMb&57MB
63827 z#$lZ9#&lHM4yKL5a~%Zlj5%XPIhli6BvKZz`W?$_wRmD`M0WUmkmc2-0&Szv)@^Fx
63828 zxvBK_bJ<+p*|Al91O7I=4GEC8kK%~RV!Ipw+2hS`+x0qx$x`0Q$$m-l2%$zs_0q18
63830 z^WF{Jz4N}YD!`Kv!u?xv>FpU7I#m}nxILz4-FOAqMi%!bqBWUk;<+g0?u+S-n9+{6
63832 zEy39Ol9?enQOK<LhlxBqi2H-D(6`gpuN#oo9>PI9p-<j$eal-?lLz*NkzyVW+jCoE
63833 zH*TFid-D98um7%hT$PzH@^e+RJCu|Ft>nFnFS+iaD=j<2(-;1O$iWYzJ**6V$BKJ4
63835 zRKOjpp4d&KS!x-PFfM=)E=S5(zDBbh?W|naAK#AMtgP`lV)>-fXs*OCvATYX8gn>2
63838 zd+&QMTxM3OOWk6av!jzoQdZm-`R;%J`}_a<H;V21{pHuRT2a1wx^3h*N{SO75b`GD
63841 zeQDqbP6Ue%(aCWT!_<KTGwh8R$lA<7IReXcbREO!vhMb1Hn2)Sh-fNnl?Aa{SAhwa
63842 z5uzd&0hh3Tv{8Q`RLz7|zX<Nqe?T1wQr=g&vAd+BI=oBN=-TQ@(Qu|II?Z{{S<I0<
63847 z2jGj9&lyQ^@63xXJW7}WPu-nC#$f=5F_LsgJB};EtV6SW{wF@R8kP+fXH`Zjn@_#<
63848 z&2)y;`8fB$cP`H7^Af=przOJCU%j$2;)&<cUj{m5s^5Zn7-&yp*R>sECM}=^B4wBP
63849 zaSv=ClS1yv`Bx-ds|M3B)?6=5WxbiGCu&NE7P_+!%Ob^!)gab&^{vYE#a?yI%1h~c
63852 zt1xG-FG!Mj4`AjezBG)zVqYU3N7{f#A_u$a;<Pr}9xqOdjgRp%m=qOiRN#jvNq{BS
63855 znAw-^D5ob7CVV+Gi-r_{ezcW1H;@FmUU9ZvX=xa$FgoLu*<k+iMsW*H{$wOosQdM|
63859 zd0<VAoW_-%tDVkWXF7R*sx#dtXw~oo(x@BSk(q_<yN<0N=}_v`-S6&Ro7+As=AH6G
63863 z1D-SRGq5?lht%S8=6ncYebO~2x;$VpG>ji(_Yi4uHEf?5{4+4et_(gzu%ydlb{c$P
63864 ztq@Ffc^m|8$c*LAfGiwu6;L7}w-qTxg=B!d$LW%7$Q(R&zj^0oVfv1vy=TAwBUAUB
63868 zcRVq(C9k{+miB$9eNS)e<dk*Sv2x$d@Km|XXLG-z6l6Q^h*Gv%jmGxcLDpW}UY8fa
63873 z*~~H&IOf?0m#ZaD7jvR{q8H7GlCOkH<!G?FmOtSKSV-#ZVqitAJmtLO;oh;bw+*E9
63874 zsqcEceQ$5`QZv^$l{ZVg)-WZFB%h>ZN($tHUu?#JGQc+3`x)f7Q8-=H>}$?=OvppM
63878 zw1kfZ=_ZU*Dg`GQyj69nv|MU=fgfa-8o8WMck_#-<dt+kd-j&Rlry%Y(5>kDMj)Cj
63880 zysTduz)>Kus}X-&yfBW5!SjI2FdQh>pNy=cC6kmp)}uZ<jJ6M_0>Nl<w(d5M>m<iz
63881 zJ2^3%S1Fa{9QjO}GTH*&UUr)m6wVvx$`zL(GVBFj9oP;39-Bt~0?8v=K$E)A2tEnk
63883 z6%SN>O%Sc<_$!Yb+nU`~$a<U1&&c(PS}!?yLt$1<9XG9oF3D2VCNhTq6#FgAfHx-K
63884 zpDK+6{wXm~fw?gXISk>Syq%pTnG<of$(36yn?gV-XRdCW%Jf{<kic~$(P~bK^b`e(
63887 zgQci{@gdSS&SKbnsiiw|v}`nCt^~aAE-E1*^2Ma&?uMu<LVQzD5~lECz<mOVQCA>b
63889 z0QMXDN~tK@tW0sHD9BCCGc=ahMWtkjAuPpdw@eZz=&TqPc-}R=8HE!Ebt32~^a9}J
63891 zHz8Q;85~<EHI1U_8=jNq8qkMO26#h1mYi=Ehv)k=#2q4@-UmAb$3}SY+|x!3<d8LR
63895 zYrrb|#xrE<nw3F;1&~{7%pDJB1e`Ot#n-;8K`%dX)e{`v?;37Hw!Ot5(lK%2SZSu=
63897 z0+3P}63xU?3MEKj0%H`KL9om<dO}Q=5fmIjx{!h+LMX5jwoD-VR(ml<)&A93ydD<x
63899 zFpvZK%~0}82vCz_fC$y2rY}3R%9@5>c9^Wy@VxrNw92&Rpg4sk=Dwm-RnZ0lRjiav
63900 zg5<(B#$Beq0PLjWJg?-fx}q3^8dK~O<ZmJtatD;GSK@4aPk2cR)6U*<@$Biq&)#9*
63901 z5n~2cMspL#>fc6c6lnkb?Q-Ms@kx}dcz}qAp+{w^y1UG)ro!0*16V=m=9kV`@(Z7i
63902 zF*-b#!J+d?lBS@~c)Q<!T(EcsWf(RqyGNS~$6F3faX5x$2)5N|1Pv`}WhrrHhq#6I
63907 z+--nAFwSi72Bpe6L%^ILnfkHa5j63bvIhI_Wiq<BRXL(i0yEIo{v2AqB8bcFMqMeY
63910 zg{XJg@(}e-D3u)D7K11oL*99VnhCUz{xjfb-r460Ok86$!UnQqpEH#PPfc=fZr^9v
63914 ztyAK*<2M2-Wpr-_S7+><dOZ=-NoLEdYn(+;JZ<2_(z30Bw_4b7*5(C@T5jti9g2D&
63916 zZd5-|#hmPJqLnUYoGSPq*~IWI6Yk4sadHfhR13=e0wHAC^D(9Eg4c~}N56sm3i44z
63918 zIF;MjYKbTmdO<F<MXk^yaV%e0ERmuL{yXMp1Qtzw7n%n?<OdVErNH<J8prL)33-(r
63922 zDT{K&wjE7&*X9&HQn+$)VOLSJK$fbC+s+xoyc7Cmw2Bmv+lMi-m;TC0Hi>7)vq_@>
63923 z_T*b91Xrx0tGBG?eKU?@Dxy@jZClruE*4~8wA4tUx2pb<UY!FwkaA!L^|D&eRxM-@
63924 z+xb=WXOSvW?MFHtBPYP}9dHevg8wxh<k8DD80fOn>ZP$b51c45JE%yb(wI-Sznu$b
63928 z^jL;XK;O#?-f;U<4eIf)J-^ay5B4hjgJRaF8=`ZC*(p75H^M1r@riR!9=3tN6lT19
63929 zy+1v3ruo|6`#0;ir8RcI6ZuQz%fP0c?{{B>xEbSn5B1=|^x`ZkK0m?riAOFgv=>-7
63930 zBk^|87378<RNahXD3;9YOjHXnMpZ32ELd{2koHEF(C-2=1$f?BAUI!o$jLHdD;7wV
63931 zA>QBtD;B&hu&e9ykzdA%tO+dG4e-mX&X&82Gqa^)<5ZgzEan`BE=+fu{*mcHeC$#1
63932 zrwhm@QgG{$4giED@5!JfDUl;^>-~yg-y$#ZwGYt-6APi6edrpJj5U0`5=r8QV$yF^
63934 z+4Z=`{cFHL_-^!hq=EcxVt4TQG_GJKafN&uS1?C$1&Av^W`^+u6wB;~3V>e}ArP9J
63935 z8ifhsaKa&rA^Dof0E1xPLolX*;`^TIPk-~}!z(+1EKrWZLg3q$rpO}Ttp?f{A`1+<
63936 zrBZ`pFzXY>7Aj*JtRm=lee#)U514kcpcHMtVzY*06-2*zP10LE)6*F`2-vS%EMMO&
63937 z0-d2SM%co+T8sP=N*?EV)1lrM#}gp!XYqF+U1S~h=$7Kjo17cR6YSXaOX6-Q{`BO<
63938 zamPP6ti*Y3rCJ8t>n20eri+Kv8Vsfgj&-u8GKv!MXq31G`>nlt_vmA~*)$0X4$Q$a
63940 zn!UI|S(n!GCmX9z^!ojBzIOjT<z9|gSn~UYEWbXl2zMhXUt-^fF%S{%IpHPuTEhuG
63942 zkd9W~arKUnVutViDewXz@+032I3HdTH=a9n<#5>i5tv~-oN6@dY(JRczK;(N%=#V-
63944 zv8D_Y5i|bAj+^MG-`{%y+Xc3Eg#7r6p~W{DB9Nr>3kmB_4ieZ$lJa%d98MQF#mvwo
63946 z0FvNguv*|$mtT(?)<(P%{bS~plqQ4r?78dlN-RbIyFB*h)kmiRyXd(IcBvPllhvdD
63947 z3NTDbU2jh^OmSMx=hFQAH_(TW7P8ylabc9`q-Cl&zDuD98JjaOzXo1Cle{{NZC@MZ
63948 z+mhUalLdzf+z~ipgdV~_uHl1G$-{tgWu!d^kfrmjp3YZhmIK$(6~E#zR<_~#^;b%I
63949 zec5zO^+b*&)Id}>49{r!8;d1H1(Kb=ocRJq9#@qGR-qY9p)^Sw`Ys<qei;c~9zV;r
63951 zCy__~1jt@s3*Y#~plF3KHY`1IrOIh#-hS^dg#rdd4)yuX5Yia>fWQ}2D>JqkW&v6A
63953 zP?G5c;c2g_sL-%dmF|>ZFox$3-`Rh8-g!uAAN2?CoLYm2y>Wi&bbIoJx8B|c)_bI|
63961 zX8|X|pd{eed30WwXgC-ZASAZH{J3?O3;`M0zx6bStk|qdv%0YCDte(Q8i2D5m=Mww
63962 zvEl?)XWln74zRLTn^{aV$-qdVworE&#c9CbK?M9hv(NLM5zH5dJv^v{d=ALlhfaK|
63963 zl;pnRoBvc&5dUOa506dM!^ia)<I9G1^ONhw0-Zpnr80QfDi#+nOh$Y%P0@^+rd~I5
63964 zx}b2pQnqu3rf<(^a)%~6t4p$^$Sh+jPzvvQ+Mo{x{Q-0n@sKwq#ft{SW*-f1-ybs{
63967 zm<owYL%_>~l@V&+eqfW>HkvCh14Xjr%Ao^%?TmT3<INO|0wZ(0>*Q+e>T$!-qz%Qk
63971 z9{i!@r3X?>Ef^at<2JB;zlFIY1*C8g24;UZQ}UxkLgT#73MhryCdp+Cnt-!ld4~0r
63972 z$^#G*rd-vQYrnPl`Zd87=-O=;-x#(pS8H3&(sbI}jeIZmE{K2lIUd7q)ZFc$&Y-z_
63973 z@IF>%;%zXFu}zf3!XhLTki{8Q1`>dD${ejtpI`V_+uwhR);8O-S86-2?KK*FCeCwz
63976 z1Rxm=VHpxE#e$$R<p^Bz-@bh|3oFbbKr;#>ft|-%QTe`Or!ZC&yd#y(+0CEYe*X#h
63977 zo)3P{-P`_=Mr%onXKe0$eedtF58zKAZCFKAi=%#7Iga`j2ElUlkYM@srn97FYWW<U
63979 zzXzuTR&_$_)O>0CmeuTZcJa1zjm*-o|KQRcy~T1%t1dayyG}kx`4fADxD%NI{F%Km
63980 ze@>xO`}y;b3a2qZg7{~^vr$f2>*Tld%lDaLR$y>RDBinXJ-6K^2^z;U7@-?7a3Nz(
63985 zhnTkQU-+03Dha0T(zWS(;`^A?^?exGhPkVaxT?>8iMgw_m4!J#ifwdzY*yB{T)y|x
63986 ziu7J$C0;_GkCJyG^N>E>m_E)+q|bDxQA>>Tee^kS`Kcr$kt9|R5XJQv5@--XR+}aL
63989 z7-%h_3=5nE$up&mHrG3He651cGnga-K{j`PQ#V-X9H9cwYZ6r|a~V?#2(!`eE?+#?
63994 zVBZ&ky=va9y$Z|k_RYy#BYG41YGC5e_!i(%3@8GPv1Nl~fD4M@oWuq9LPOuTLb-qT
63995 zOkX~JBHSs_`eV0FpDQk2*a&XFl-OmkUNi#szVofkNdz|RIGSN<?~lQ0U}2$`Yj$*K
64000 z#YY*U<i1V5xrkQ;efG_7eKeYG1GY)rj0`ZDX*Q>qUia(=ES6V-rWZYQ{xiqE|0HzE
64001 zp7_4omz-e9Zf`b>G**KAJM8xX%kHCF5iJfdaBf7mrik$Z*U5__g>qyeeuLO(=X^6;
64002 zRaCVDSjKY9BW*ob@;<-w-qX->zxu}0^L}B@4`%(GlGqA+Uql|jAg!#v9*7t|dJ{m0
64003 z;R%kv#o%W!3UU5Eiei`y5F*9I-@-6L5op#ZX05F<?V4`6U3q6phpAO*{{ER_le2g&
64006 zVi-l>LRJSZ452rx`%Iz7yq!k#;q|#&FSIjDKmT3LOGj!GjR#3x?vwcaU_Y1OeqhbB
64007 z_EP!|U@=b>slq+&8}WIg?Let}#v{OP7#!zqP3HvCXq4e5qjomKSNl-#zDHSWcb+^l
64009 zS%Lk4k<i?10yig<Au&R*p?Ar*XJBZq+hxPYV7z1c!VI-^@s3OW;_c_^ndM)4cJ-lk
64012 zD)HHv!?V#4G=9woCYnCJ$<dUGIS)wWCfX!ZjJ>&ZLi-K(1EllPTVH=~P;cu%li{)Z
64016 zp9{5E7Q-x_kceG;xHBh)xEl=qI5h;LPzGQW!;v6YVjv2*9ax^WZ-D&p7$-NAN^Zp}
64021 z-NAxMC?Sb4J8LxTWB<ld{K4W%xrw6$fukA61=56T&BigExhyUfD*=R(qqpv8b+?WF
64022 zR+qi}=2dFx%kKjse+ls5^w~~6tj`28lJ?ep5w-AF0w28FpRNEhO~+Hd%o`x}KtTvS
64023 za$*e4Bd+%A-snJv7Fx3<IEGATfKg4NxL}Wo_^4%NP=)1vUADG7U8${hqR5|jgpCX5
64026 z94_n<(Rh%_(lq&@Pe|8$!nocO<-?!2?)^;?$ODm^viTqwJ$C~}2Mj}sjAj!Q8&9*z
64027 zP`VIb-03DDWZ24PGMX&aB~C8R$kwIxSHAmPFYB-P8DOWaJ+uaurdtw~mg4|gUf4T=
64032 zjiyA*X(dTj@!zGrm0LE<k|75YrU#t8Ts;5KH-3|*7t79qTV0yH6rF$kmR9w2q}TNR
64033 zTh`ZcajKv;>|nQk?5g3f-@1MD6-ORf9STOH<p9aJw+HQEoFG4mm9c*Vh?pT?StStq
64035 z+7|j|yM-Wg-PTfj3H;4wSSyz!cG$cyFvei@MVhEjG5zDJsuTqx8k=`&#&dWYKA+`P
64036 zN6B-!+|lnj7FB}wwAy%bIoJ0zLH6r`Ttv?|Zadj-IP<SqVPxnPRVs2IXC<N*U3x6?
64037 z!js1qrP7qF3Det-$p61)Sl4yy)Hz^?LO*RdPu>Go+;E<}|81BjUy0Ir@*e8lc%J;h
64039 zajubdyAtc2zm?HzbZBV}EuAQz_*%b?ejKSGuTI3a6&H-fI8;x^t-X_#9WDZqNMISn
64040 zurFb>1RDK^fBL$lpaTjkRY^uYW)AbiW|R7e%&-D4306P^q1n7&a9SRn1wOHA@Iufs
64041 zMVsesQTO$k8AGZ-Kp|6~D$SB&(I;EJqDtmMog+vpFgKPsnuRh7)+5ZIpFl#Sjr?%p
64042 zsX&-5;Do`3)C2|y+5_-RsfnGJ=?sRGuuJBt@dx68A>*t2jT<c_1`I<Dd>Xq{0(MNh
64043 z)UH<xeu}CTqT$#i%-Qm=(bCYVxS|L4FTf7=OlHu(0VExCvw1P+>9fJqY=~zF;G^0a
64045 zzxf$!otE!HZ*6kM+Wy2?0^J^;^?~tfRE(X-0@_d_iD~l8{R>-8@8aTUvf7=)$!gBk
64046 z%QIU_{oFKVJbhdH-tOA*qrq+W-0F{ps%@;r*soA#{tEd%AXC4T$kadmqcn5zM{(vN
64047 zjSpel==UL=Vb4?;_e|ydY|=9o#ywNXum9usOx3I9610sBE#|=?9?K-Ak2NZ<ho={g
64051 zFF4&=@9DK=zI@bm@~CIF7kr$0Mi1qgWv8rEtqhRnMlL%0r*2tQ!-jrz*D1QB_bR&O
64052 z0!hx>cb%m*6=w*kR+Ai=*H@MyPXqr6do}q%z|;SGoR53-h40*ZA?4~9Vy;eNo*ze>
64056 zA#Ns4@7VdAz2ofQiLHz8w{-{R?%a!n4oA0S%B*g7=e7jV6&Qjg<>O0>=WR)S;qxyZ
64059 zrFzho883&)AGBo-t5FRLIX5<GfM1^3FE3+@X1_@@5R>Hx8o83MP}wXcuo^3}z@njq
64060 zj9HeHg?#G>6pqd1YEvh~f}hEj1;yaZg&K-;T({7k1vG*F*1se^0ci3c(){}`?%^p-
64062 zghXM@jxv-pN`ef?VGU46hs2<iqWs#+Ug$wu(7djTtePvzBA=~DY`r*hNs?Xn4dteR
64063 z3k9E=b`+hLYh|0{xG3y)k)b~S0Qob37GI5N@v6VS6`>L@iHb?Fw}-4C9QjJ(uaPqL
64064 zqiJo#cki7~>2-dL&)!V_Yw$f^PQK@b^}WAJ*Zfs_=Mx<LM-ds^`D=Zy7)SKGEcS9j
64065 z>8r|Szg&vPqwlCYkg>GNWc@-0zYezkp=C$Lu<`eeqBPsNt0R~^g>&xZV;A2E1%ope
64067 zsyNLAeZP7(nz`&Xj|IU>fO{1=eB%W*QVAT}m_PNl-Q>Lfc<%-5C&*_3oxh%**OS0M
64069 z%M*M2z(es7xUD7}-rihnEtX5gyk*2iZw<7;PR?@}c)IDBiPX~_G!{(wxe3@OP+Y2|
64070 z<ax)Qy64`R(!kH%Tre0x7qsduy4}1obaP__P+&-z5)lR~SLcA6d+OMN6m>$u*K_mX
64071 zxR(p)`nA0;5hnS1K-aIO{QDpGekP^s&%|`a_kL;b1@zPCr;z|qb_sdpITnIyr3m2=
64073 z3}`^J)bz)OQxnI`r%Z-tHF5FQYhj^WE-xsGSogzA7ems^@kA!uy?p^t!nW&=T2*y+
64077 z`LNj2cv3^Lz8V&gF4`RiEk{|Du|h5&<%Z*k#x0$(kco&jMUIgg23ISxEHEuGlBH-z
64078 z)oF<&h-&-jMyXcH&QJMQ*7|2G3V0dZ_jZnEkDn;H<s-|j4o%pKzp3e)v(m;bjklCK
64081 zO=UMO%r#uN-}VcCa$vhTW&d6w5Bx6r+eiyYji;VpRL10S1g-)F49IJP7|L}7aee=~
64083 zNLURzQ)>OmmHv{(k-VZs$`*P{1Bl_eGyC9%49EYKYqZAN65&jlr|yf~@H7y^;Z(?z
64084 zvf^{CF9JDi=+@4y#K1qrj-X!va-;?9j(eYz<2Lt~(=}b3uSDSM{V<BC36!^#3X{(1
64085 z*m#ls0tEU~O4Ih5_w|a!r~<sxUTx;xTemiw$7Vg(j6BJcNdBEhMVVOw-f6{Rn$W+>
64087 zH7O<vf&-a}4`gQ2{6D0?sOf)ox!rUfRZj5JsEK^}{J|ZkKiWh*bz<YV?9GC!5)^NF
64091 z7S8t>UsG8EL0{tRcHnqSz`n-!A%$zEDszLV!o*<GnR}*AaW#Lc>&<Gmzcc6G(ad)w
64092 zOuu8Nv>aGn$m@;T7A|p`8qxC`MN?KVUcU8sG^YpxJk#Ia`vz7)e-`2>0L}MspH+d;
64093 zP(?`s#-hqETV7#prCEouIVQ$npa%00Qzu|{-`OVy)s2o_#OiXBqVsbB$q*{AAo74r
64098 zmFdcKs}Z;`CjrZr>9KtIzKldN3n(lW(|Q+el$5}vwzXModamBhw|gPZalTv-C@~Z4
64100 zKLT^;6jnoN3PTYF2mE6K)~IFBI05q{(4Q1dQjmXGlx9%+VZa3pf-%=Pbi87#jbwmf
64101 zo_P|%Q51jT#XJSsv^Vh-_>6(b6BGmF_95SZG4~)0#z0)x3V3+wn?8)t;Mv>2S0F5d
64102 zvXkEcoAj55-#`%8`33@f2Lb+g@)g&{zM{V}dYZ(Ex82<1NiBsB`+J)8Y8h6FLeynV
64103 zRV1E;qr&<9V4D+-_{PCT{PM_HgMc=s(Q|7LOa&IJ@+-i$&9_7Y7d2jKXqqBb?7(U-
64105 zYiZo<XZK!{`ZBLc<3O-)<!j_+q>TL^Nq*=XpGjAICdm&C))2o0zUMpA`0(%TwbNDY
64106 ziTK+m!5suTE-(%LrR%sdQZ6+PBKx-S%D9qCbX*)=3#HmS&Rcbz?XGk(vNEgM9?)`E
64107 z8=F2_JzKkbw{jc?*cuyZS;KWxLGg&0+b9}&oG+iQ-BVDsG_G)(+y;C7*_a-WUioCY
64109 z2Wx&MJ)hs-yE9#L=ZLP@F8T;kfw{SOPJ$oj=CYQS<mUW1H<$eSqH}Y?Ki1q_Sj^{K
64110 zI|21fV$EZ@xx@jw!JLG6uK6pvnyCPR4DqhAR?GJ54>Jneo^i7}LkP-~@r3iKEt_S-
64111 z7RFu9d=bO3;{r#@4-WkQuaI8{XYzlg@w#V$u@%Qxqcpx6$4+hXQLyG$(>1@j_gs2z
64113 zuZv+d4q0-e1XZ*@L3RE76qPjnuiihWo2t)B6srj;NyGe<T96c;&FQt7yI~>x_7Nwr
64114 zDUwo%76J290w-ujqc@9;)1V4yp#OKKK^3XqWRfl=!rCk58I@Ii4p2e84i$Ee@s3~v
64115 zbt4}nLmIPx9r<p+FP}?e_8;8)-IQN`H{q#x%^LZ6u;w|KBPL&kjB)~BA-(|q{XeI2
64119 zq(Do~_sFx0(-P}Q@_JjV8#qHsH5e1*a)a6-Y!!V+f+;&DgYB$7E`yU_$7S&3jGDt`
64120 zFp$sG#6%n9u*Lgi@Z>{-IW^an!TXk@R02LU@z6*HLr7WAu?$7x*d!CcjI}BbZo`-m
64122 zbDCM;bFpm?Y5!G>i);Qq@ce=_7K`g3a5g*!Ha5y~WRlq$ap-LrY#Wkf{yI<4Dg4dw
64123 zIg-f0SX~Bs2^q-GZo7r1rGO<s9yop+kfw<?$C4z2Sx`5K&rOyC#^X4`FsmAJ$f+f5
64124 z^W8^ERhT6yKiS`&(?p7)?MMh_(Yu<rooHA5*#|dhIqxr3P(CU-GGVvPv-d}Cc<R`q
64125 z6m&yg;Gz!itA7Y1bgF&yN>UF9=fCfve}Vor;NLs?Ox`jD0*#62r)g4%-9CgrA69Am
64126 zgHMPg#*bk!HV~|N!m*@M8-l1M95QUrnH#_k4`)YJhQWvdSVX(JlIv`(mX%tGoj+=X
64128 z;H1F%zW)Tcx`I3d^hhGxVm)$jWEg@zy?<m_lIXquI&htDwB&W;qr&2%qT#5peW-Gi
64129 zT4Xrhxd5Ez`a;o(SkB-KlNaf@)T81S3o55|W}IjX4t{XkVUuAgjb$*XLuLzEp}bOP
64131 zMUya1wOk0YCJ*nyI=Vi-TW}F#yp|N0E6(tQsheyL_+!+Nom4&+dV$|+c0+%mWEKJ@
64132 zzv}CCR-|07x>jtfZZT(yWnCmVigo2$f6i;o=CxoOQiV{fC2uD0^rp*fsi5cC9IbWo
64133 zP9SoI%+_>9ayTU?mDd(>(>-6z8iSYt_AdN&KpSo$^?oIY^BJ~^9g@)Kua$}r5M|i9
64136 zdT39X-fBTBa)h4yn&R_D-H`3l;`(6U7x5n$?AyoU=?(T_iJbmgF+Z{Iv=aTB=W)jB
64139 zed^dEdLJ?cF<=Ye;$|%w&SyCpSBSi8%pXCZDg-<-g-rRbp$$83M%_<sES75tkY+kC
64140 zFX_$3NLG-x=YzAS9WrXk+``Fve#*=$)5oT)tz#<^YOdDU#SQ!1U2Pd>+;)Z%bZgNT
64142 z0Vl6F>l)$<!|3Qp3MSDQY@p-Q*B?W5sLs^;wc8rf`iZdE(X*S6ImdRvd&`k0ck^~r
64143 ze{-M#iMA1XuHpkToYNidX<jusDyXZh#W4y!JsYICq`T2SL`pzv#knL{0}F@e+(a&^
64144 z)5`g9YApoArN)DHX_$M`7YPrD?vXz-_#Kl}U7fE~FFza>w6YdQy1ngMbY(^_iEUZ_
64145 zk@BvY3q3QR%~mXwc=+g}`64iROusEqk!^MD$Ny|D$FQXabVd}HrWjV^^7-7aYIV(7
64148 z`xmyBF{#-%(1h19e`9*hkD0!*EL)6fk{mDPX|t~FzJ0A4dYzureqv_1B{+;^Y5#ZU
64149 z_T$Y`VeWwqr6Wm-k`tVOpmogeTDM%RXM^42>v~kRD78{}#w^t}#W`^ik8MFfBUDE|
64150 z2%OJz31zIYHV>%b-ZiXIbNBUdjDH%JJr)98V<^C45gKLEG4F6U;l5p)69IzH29Zt6
64151 zrV2JHWf|2Xfqs`&k|i+$El`<;)etPHQUF&p-4@M5NF)^Pl1tWXG2O$jA>Tl1$Xnpd
64155 z(-_6n8~TDH2t_@-aOQ84AVpx=jmJh23c4LfC{+5vKkEf)fFhTJ;6DVP;S6CAp|G+K
64156 z?2f_{{^f~WdlXxBH(PH2<21e(=h=tzBCeNbpQt#vexwGIyl$AC5Av5^In1-qpRHc)
64158 zaLOcE3KnoBx%PjYw1{gC4$wl6l*Y1>G5<QDg`+z)=Kw9H*K>!^f>vm=Tjb>-EhO#A
64159 zQG&7#p~XONZhcF76Vl`5(wk!xv0P=QFs3-WwM22sp0J<|6=#smR<kJnaDLv3+eH%9
64161 z>-N#Wa>ulfh6|SMu;rOW+X!{?yY}_b1f>IgG?{{#+fX^jGf&USCO%A^!$z8<F69&G
64163 z-2Z987J7tG^r_jbV2Q>;onZOM^GX?x1LqItQ+){i6YvJGa`UO@bd(x~Ny<P`fQtoV
64166 zU1-E|rE1YVIP?j{&5G~Md4JvwQjYO}zQMH|r%FGZJ$YQ`?TUBz8ZF4Rnh03Nz8dSA
64167 z0S%+Lw(a%Lsd4Cgpr2pvN)>39tSq&gg#Z?+B-4B7{n%`W*2LYIZiQ=4y>oezYPE+K
64169 zn<e9|4gk`nKVvv&A_hU}-um{(BfCPu#$KA1@&+73kP$@lV!QmNAB3=U`Hrv81VY6z
64170 z8fK$S$;D!8qwBUVW%at3&d;01NTh{a>NBBZD`~9wTc1@1W1>kp>j05zer_-qc@!s}
64171 z%;$>)m8oQCZS(!_o-Hn|R-B$&?J2&S?W#_2e8#`p-0(1NYoj__bOP(QERM{0Q-M)w
64174 zyCcf9%8PlL&+-@Ew^Pt9w>9szAD^l1S}aL1q8!LyLVqE4t@88tZ%BY8@>5-d6IoNo
64178 z?wPZIFhv!W*m|L$n>Z;3a*^dciMOK7Ik!<Z>_|&#;-i0nbp9cG@*qe$pa3}-&oDdD
64182 z3MOUDsuKnp!_c%YR;ELJ<NIRrxR!oo*K^vMt+Nc;Bzx{`-V!NN6U!}MY|p3(mOuJm
64184 zBl}yHtA&cw^PE{HD$zh6bhpIz8ONS6S!OhY;Fr<A2D}Y)LS$#<R3`-AvQF?_%ShOE
64185 z65Q@km5{^71B>yP!s!cz>C1PoI6cQ}D#e=JRc-g!ywWt~POmMZRH5mdn%{k9<y<_n
64186 zP-Nxlqiwyeu@WT+5!2h`>5O5i7*DyOzS>y2-3ilu;$`%cz_J<OAQa>1gYTs{2*udg
64189 zH{%Y1_awCWhtbi!E^Nc-ZuI(%TDj!fF@0vyS$6XB4S^y?_&<r|InvSx^t1`?rKVjz
64191 z*^o${Ah4;*?f2BI#-*8=s8r4B6isP@XtDkmpvKm+yO*F(GPuKkjCFv`4s>?M11uw^
64192 zIy-pTbat&$2rPrnz<lr^RyxK@$xQKq+75?mds1(wwk(w?`;x9{cRuszG@~%Z*=i%z
64193 z-eRak%MCFyS)jh_dW{F_n^p>;e`ULU{8aZeh7$^xD=n8OfudKU(y8iM*3yfL#5D?$
64196 zbHpd#hdu`E{}-#jgKvlahMmZs6YFo_I8cYkr9+DH_LHXj%KIxy!!%2x637b2%cMeQ
64197 z%4Wqa6jVmAO>fytX(QDlrS3XS-DX)>TtRld*?d;Wn%=w#DT4#L?BNmm`$!F$LyjPC
64200 zy0)|Hgfc;6DCQ|j_CsoKX-1;G(7SJ)q~mrdOXHoZX-yY;5&f4)9&p(YB!zI!1SS>G
64202 z2TP7KB$7w-W5sU!0jbjV4-p$C0pre(Fh3X2tncbwh(|?mTu$)nbH^8dZlP3kY(bra
64205 z;Qta=5P~4@g%wcelY5#Bh!eR4a(c4l2@3du5jQy^u2K=PLT)a~)-<`~k0!&}eli&@
64207 z9D(Ibz?38RrHbk|SV!#76&a-xk^-24KN<E)wTKx8F|XGwl=KRXftSHHh1J{LR+!h?
64209 zCNV}i3tqnhU=27}RI&h{B)`xppK$-Z_yod|!=4$yCuOue&L@yf4xJ+yw^+r~4wt9Y
64210 z$dyR*mX0@DaC};UJW{Yr^OjwQun|^RWTqgCWa}=W3W22*8iL5iJOX3f---StQUu=1
64211 z+xr|1Y;K4cpFvLyI0edZAc+(Gh9w-3IfPTLzwRKXgutH&J7K3*fip=q?CKb&z%7q6
64212 zN*vr7bd^mA78v$EvEB@eYTKQe4(SY+<8nGBQt$ewi>0D#irONKdKdGH<-3cTwbR;O
64214 zVQ^*tvKTWn?IkEx%GyL7{f!4kQgMj?uG3n@h6ujNNgG8V4Fub_L$dq-vG*RpvYmN-
64215 z;5nyH>XUQoa5|mSId|W_`S#7>-4~@N=}LMEPhljDn4pOWEJPT>zzj2hfg#wYfHgQQ
64217 zbNKyx$MB@1YA&`QQe%NKNYt#-WRBqb(Npkuzcgm8aK|MqbbV<KS1c_I30%s=A+Rox
64219 zD?hG4+rWWKG=Szp3&Aa>=AMD;J<q~7n(?zIkh?fB1#ve*CpPvn-291)SK~mJal!#>
64228 zA-MAq@_{$FIiwv7Arlz+Vv>STsxu-?6Bwln-*G-=QLm#&eN-QH+kPRR%cKk~ymf|J
64233 zTfoZHao{z~?OeWe<1$5JIIHV&&5}#DKt|%4rzNOX-7-_`3PKCKtDZ4^HJ?ew<kdAT
64234 z-tbbX=`6j2eiA7Ge`zr8QUN9|h}0*YWEl2!vDODTPIuGuytdb_4NGlu`g0ffEXHQ#
64236 z)ISG|1r%(-o6!3G=m!B`9gg<`KZlO?U1K07#NXo1YgOi%33l_e<K@0qEw};E(W|#B
64237 zqUS7_HmEXzX*+$)5L-OmbJq_HV2a}A4LGeT?_X`@CU@{7=<g#9WCh|GuxKLc+9AUZ
64239 za#_ksb?|+oLT3PPC~K6HGHo6lSXG%!@@N^DK*to-5jb8gWA+_ZWAZEcoB32}zYSC)
64240 z-zE|$Dpab9o8u`4EkK(n&}ljEM|bvj(O2QllJTAb?kvrMJ1f79JDW&2Ok$IZ$GwlC
64241 z3s)e+o3jeqYQ=0Ad?~eP?woYaryHYEMyX3Q!?t*`?-@N?$Oukx!5vM}wyUdr&J`&d
64244 zg>BbUn`<4uq-R}4HA=df6Un5Uml%a%+`c>5lhR#tbs6s121I!o{UHz*JvrvG838ab
64245 z9&^-9=(b@Ypl+~uEH;i7y%LV2orB;OQN%J8iJ>7{(6rMaN;n5);^^F=LtqMtT6=eI
64248 zuJYi`Z6Ocq-bKk<FN<Z9RT;6~Rs~9B>3rqcs+8jDHJuN7s2bv+aCqwmW2yy3WNUd(
64249 zqv1Lb$K@C~CvmE|m1a~ron{Gc!rv|Q&w+ObX<-3cuwQ&y43I&oQk$bi;M85z1~6gk
64250 zMV_vo7K(1Z{on)Rpo+kkWN&S!3yzW*7kIo>Sb1e7-PU>sun*T!HG^CBj&25(0|gbh
64251 zdOlZA;8G>U2^)rY;wf1!YatOozl#1+$j@$82K-EXvG_Ud0A0ey`FWzeFJNg?z-oC1
64252 z-`fQ&?WF-rrv~|s*E)8U>W4nLQtH#ZlKa3;#L`ANmGNsnd-JP~BmMh%3<ug{ZM<AD
64255 z2=dq9e1CH9w=fqgg7X0$ESt0QO-6j*0S^Y7ETju*u=EyWFEFsYW;qXyIWJwW-rSy0
64258 zdEmkD@|nB|m5!iOPPuHsyEoqbfNNl!kYs>LEg#*u8D2Rnf-A2RIIkNLD;0$FxFWL1
64260 zGCqPLB!QCW-Zu85F_W;X{M@@I-Q{N?4p|9KO*^ps!X{zBI`LMc;o%9M(sblxzWYEn
64262 ziY%*Fh7~i+Rs8n7&trA;Cy^|Oeg3B_KQ4ug1Ac4*oDPr_L!L&-Y4Qv%?8;Jr)Zn1O
64263 z_<Zm_WZ_-V2o&JEV3KO~E)*5725+54v!&Ua;4E@5p*{OXa*}jA8=E;74qv<NTpOAP
64265 zRj#%4EK7+TI6DqEPm|5DcJst{yvLrnl}b6^lXr7z*{KYy5<lrPfc*J$!5sd-4%v=P
64266 z2VM4-9PsAs(O-4GEau$|?2Qq5;8K>+a-1*k%a(8jVs7<X>+~pP0-hYySk?kO$)#J*
64270 z-;#@#&u0Iv#BPkpJm5Ml1MFPW?X)EwH`e>t3n-r3z|u9ltQAMufhKDTmy)EMn9XI;
64271 zqU@T!m-5w|j8itpXDjNcjRn#;;kVb(3Q|Y@-IX6#A-`n<4s*1S-=>cOepBC!-<-F^
64273 z!*DVSG@@Zm72;Ax*W}vc1u4Tap3F8}e;~;Mm1L4Ts9N{%pVG#PY@1BZ)F-q(MO~zV
64275 znvkOH=Nz-zEh&u3G+RbV<N-zf!k+6&keo{0BcMDpRGKfFA?5_c4eO(S3g|gPUVUQ;
64276 z4M%sKV4O2R>nBn2W0OrXa0wkONyobzrf&*Ib>UoZf;fwPBAD1E;4o4!u-k1{N3~HQ
64278 zc>Q|KX<R9)Io5&-?%=>_aMy|(yG}7vI6YVqs||*i^I3T*t^awo;%ipj*Gp1zN}n87
64279 z4v?h3YRs&`(sks-eTj$!fwz|it@ZYL&`PZWp#yGSa#85Q=9vXT&6<tSMN$=0TGMDe
64281 zNZAZXcI9A2@;WR>C$F5bG9|NUEudP%3#c~17XAd_sk1Q$H<%SvE&(@fhOUP(L-m*k
64282 zUrfbcxDbA^f>ez5dHBVkIky}D7U+65F&WqhCf52-w}q_06}84w4o#{SX9~*)$F8YB
64289 zEawt|TD1~@?Gy0)dKSdnlNhhYF+y2xzx$bjb#il0rZG;|8A{BaJ)W;(_8^--s+AvI
64290 zF^jA$>iq_q6jc!Hxp|ACaYhqyg7>fb)#H?%p5FV<qd$-M$PnE7;7fb&l``C0SRPh}
64291 z&^`u|;-h|Y!8Tr`{DO-<cj=*-bfDH-0uti;@XlK=0~?`QPU%jONAH3gFK4`ydT1a*
64292 zg9$HuV|OAQfraQU>AwiBTd|9+iA;oh3O@?2Yz<SwwtA+9(pVc!(y-kLK1hTQqE4qK
64295 zU(^F%bnpd!(NvbWK$cSD!`T;+IPuyS{7un5YZn^oUZ>TlmLW<-%7!@10o2+Wy2f9y
64296 zzcJ=0!#M2%DCTp!94S$fY~ao@I=kj5YN5&ND8_4o7{Jk2?2O$WrFG-{Qb&jvxQjZg
64297 zC`Kk&ODq(4BV~-E<&M)j5c*r_XMjyR`J88ni5WVw9F>3(?CAtLS%f_)3uA#{4qid9
64298 z$S}8&cFOi}%3J^`owLm*&{1Z50{|6tAvGWL{B4WoN%eu6(-vt`vp5}7A9$w5>I|yY
64299 zG_|7E&&pR}Stq3#Jz&!ajAKZFViaJkfwhuJ5L<FuSyO$jxubef4d6Ajhm0^bY(-^!
64300 zAeZ%tT!IIQ`d_?U!XMI_iq@h$LW06i{da-<!UeJm#1Rg$x*5l|pvNQ!i)%*cXeN-e
64301 z7IiZwj^@SE7-StFh_gO&wW^_7lBO9Oj;!Syf)1EN2coEHqF8oZ6N;jqBzS49-;{-v
64302 zgQAiqcxjtqcAz9CXdsCB02O_k<0xU^Sg~2Q-$y#gmCyOAkeE%f$uoChw(xh+Q%FRf
64303 z0uRA2!{I_a)=x6p#78ZxT%N=Yx-mfpnjm{&!L-!7j&p;-&g0v~8~Zwq^E9n6I%eD*
64304 zs3nQhlPIYPrI$ZEJo?~M!K_q@v-92kE+Hxm!xbb^lM=L%1aU7=7aSq8+1ro${gFPw
64308 z%)X4miPzuJx6OnzkWC+!Z%jj16*)pwkA!m$%{MNYGdt-oiYEMLhU_b8hPq_~(F9g9
64309 z0gYtYWE7gOM51XxgkRR=Q@se{H<C-70&?kk6se`5U}iKa%^DgqsncP7^l4-T`SOrC
64310 zxmw-^mQn&yY0%J~2hv)zfhB~`Bql6u1ySqQ&%tjXq0WPSzYxau_3$n5KjX-Jz~c`q
64311 z?IobYOpS<zh|%;_D-ku1gf&;a2SgbdRy{VS76A2e-A7OSP9rO%Sf;;!k|SA?CUi;Q
64312 zlLE7Mx1V-6I$^IJHjS$C(37<!oetpo)OO$E!Fvb>$C)IFCY6Sz15U;{4iKB5h<Yz0
64314 zPH5op*Wa<tJ^Vty>73C$iha`;%MBj(yX|JJGIN6!iNujHI_BqkUgzd_L-Fp<{NVGB
64315 za3tYnUVH5C?v=JuskSCaJP>mwSWMD_&aj{gqMqecNh||zxV4hfjU-K54&K_ST>W8_
64316 z;cBj&SGA@oCm9xc#NfD`C77-ddBl{aVrgH_6(@E1KSED{E&gc8cYHwwHcjEM0Esdc
64317 zK2A&?pM`I-!g>d^+$eSiUFHa*GDK+(HqPP^h-G39#4-r*fwN-C0yNyyf_A)9ENJkH
64318 zjQ1j@WzZ<5lv2uCwQ{?~y?n%&EKP_>Qs))IxAv~=n&2m)>7&-*p+bGfQCd7*tSekb
64319 zRq_HZpbYCtoGTJIPzn@=W8JQ-76c_<%}!@86OW?rMb@XXT?Mk;n#eYIkZAoilx_E~
64328 zo}X>DmG;Y<eJ^bm#=y3sCx<t#*B$>#6()JxG|}2vlU-N>+1z!4BrhxjnsVJw@jqX!
64330 zOmxB9kk5A{+`Yea(S(8-$Ylw3UP9|9OF_YYx@d1Yy6{%Sa%K=l&0#iOzL`%OBF}9&
64332 za5uyE`x*2K(m-y$0gU+E-aFudCeC3aO`pD~0_7DIDTD(dVz5;)e?A;y2*zokvpO6^
64333 z8VGo&5Vh*-zq$Qrtus<sjj8%5D&bmD%FuK>o5}4K_MUwPqE+?eQMEk)&g-a#vm`1c
64334 zard-E<c7u#C(}0@jvebY<d6}xRUY8a+FvVM^;c*2WV2o^mkQZ5i1vVY6Z8g+(9t<t
64335 z6_q^ti<z7Y5;;+UHn*M*`-EVK2hCN2*EqRs2G%NTHAi_})1qpvCnsC5KC5W3VQ4qZ
64336 z<rtFd0du8q!M-8Zo%IcU6vco&y**}%fNv`QKjNFed^H$cdT{3+Oy9-y;Jkw}TGWGY
64338 z`30npUOlfT>I-)4GU_MAB)q#ym?b`ccW?5!7WiCu_BkSfzV_BW2&H^9ci#w#V>pVv
64341 z;jcwQdT@;tOuj(C9So1gDZufPu&<Gvd1Uv2i3yXeB-!Mx`dUFPJ2;Kw(Fkrngo>%=
64342 zGWDth{6kvkB&qJf)lxM-H<Xt%GIniP!6}>vY6A9*U_XQL;4CZ1>z^G7G5l9=f(<vp
64343 zBAPCcn;*%pExr%jI<VvC-W?8RHybE2>^D}LE2U!CVis;pi!F}pO%@HzcWj5@J2dP9
64344 zHU}YB%ha{?QbDri9H-T^?XTG_mEqdB`YUVs&6LW6Pgq*Di|#efPFr<n^se=!1aVSY
64346 zLZKM-;>7=kCr=<`G`mPoW*2MsdEaz;k&dPpjb;Oh=mh@GdJ)Kk$IL-&+=oVC8GnvO
64347 zupP~*XF94a78$c?ZoW45=7=O^DtS4N-h$|Q5shGbTDiPsiMYFBAD#gsogS@-r4Arc
64349 zmJyU+r%MSJ7nokKm?bK?#wiEOuUbECv`p0&a=et44!-56SaI7OrS{7DcvWQy4uo!7
64350 z=%aPOT{Wlw{I&#F>I#Zb$=Xsvuc!}vnU^YF1N>F&6gfgFTjigDD+x98@DV(|(-G!~
64351 zzU#9qe`z}%VfW`~*jj6^O?KLZaC33dyp(uxAinck9ZN-1PBA4`_0^q^?M=5j=GQYi
64353 z?|%-(`p%DhOJBBST*A2`_3RJb^!;32u9&U&_Lke44YW90Dt!+9=W__wwVeWMXau8S
64354 zANz!tD%=>`b;T<ij0ysO?Wq`g^$b%KqSt@x8yZSZ>;Hc-Wb5}(WNoFl)!%H?Ahc)@
64356 zKf8!4T4o$cP{bt1aJgms`U6v3QHEy}iXNoqQAKC{>}6yLdG(Fqm$p~2T7g-+%2IV{
64357 z+Rq-ryu4XI`+eHk57QU6vp;(y)6+Qg*DmX3-$}*0*_X6oaiN)g*2@m(cV2yC^-D_|
64360 zw<fQEx48O6{oX5?G|Uq%HhUW_|B-Cwe7CooaifgUe5?1Y&$|Zn_^WR$e`)!oQAd$}
64363 zFKizmOtg1e<$k4KD!3U{=GjT2{ro<_3oQR->i~rU^}-KcuN2Egr3`F-f3s-Y#C?_l
64365 zfX{sW`B`utMFzdR3uOkMx`?BoStv0-_72ZHJ@RZ<9Mu54zlT!<2$P8<MW<AamOx;I
64366 zVyZN{JKS~Bsaq@EcjYUO-Ru`qqoqQAC0{qNXN2<p^1<0k)lBVHDd(Hs%UeSGZf|Gr
64369 zTGc3ypc97Ndu~(loch_}op$@l>+M{oTx_-|5RzqFLa*uNXC8VnSE*;6y$Yq=Ir)~s
64370 zi%WYqgq-8Q@VwV~H<qb2Rnah<E!vLavZcf@*z$D-(Jm8cHkc!WYmO%*fXs~sAu9$>
64371 z8TDP;v!|!6*Lc)=Ex`B`#-@dwM_kZ+Jx7Iz1~5q<EJT|T0q6?Z<FmV-T#yqa<S~p+
64372 zP@b(bGC^b-PweEo<?@3Me&|DA*LnJS$Jd5kCzW6gQOej9<@9a2?r3f2xsR%i7lxGg
64375 zvMLCXc$z9UUZ^y3<#O|bU$fi2dFwg!`_@~ZDu{z8fxj;~8NPh2EI)j(`-oc`6<4;Y
64376 z;t%|dFMn}7_H+K7X8*7yGBQhkyJ75&Wd14S-o1Ojb??uxpG|xKBZ-#+y%0S{mXTfL
64377 z$+6(0z#70-!P7hncWjmbX>=q)9SmCvV>?4<&(AszV>tLb<64Dfk`%04k(0svfIJg`
64378 zh>$ultubSl2sXnD-U4eoWQ})t+p)mEX^r!4?Fx`u4BVj&{t`<x7=fk>)feimY}>v*
64379 zXnpXozuWZDrcsv9ZgmGw!r^^|wlNF?F#-{i?b_YVUN*CyrwTvtH@@=u_1$uIeCVHK
64381 zW+#ro?k9E=6Elsr!g?x|1iBK(C|v026i*}*ioEpfYCXSKcwuk+RF2WiA9DA+)h(-#
64382 z@~-CH7B4h94c^+Siq%5teGm0^rS<ny>YbDCX+1sMJ?)rJ9eZ0TyPZkq?0+TaB|GN`
64383 zqE)GQfJdUU0#D(^2^L<kBYqV*Myg}K5S%@I(W>-=y|Ra_qO174D>YS*bM_&=B_1xi
64384 znr=)S#ka(pRaMJ!TrHgp7pCJ(a&b|-VhXj4uzYa1Dt=2o$w+@%JS?7Nvawz9qD9jp
64389 z5{$CXy@&-X5kv^JYiI&DsS88m2810>R^^1{Ah?k;@Zn>9i$<rEYV}Lkgw^4LM>Hvj
64390 zvLq2$GK-qN^r<3Bq_oTxKi!gSqF$6ZMddRxL2`_gNx3Z09tkXwqokTy*fV8|=0l$N
64391 z>3e^UzL@9-@h$MHvar1gVgaC&rABYhuY$$|9t{uc0z+!)yjcya0dZ48PF@Z4Bt>#r
64394 za5J+E%mM5+pP>#%bxb3OG@!LW7G8z5D~AZYZTM;skU*mX-EA}h`&x;}6-N`;G-N@h
64398 zSlD(!#6=}@1YI{Pww94~t#q^Obb+CjNs-Bqb1Q~nF)WoB;H!2oPjO<_)mMu81b_cy
64400 zbFGqL6;^tE&u<l1%Q!<~0!_GA+OXH-raBzv^r-jv7w-Kp=u_yYK^)m0H?q3M;;@e;
64402 zV&E1|-&<7WHVxt+sb*CltKhN<2<j)7$H5ZER7>kUwdP7;k16aC^U*&+3c(h~?eV7Y
64403 zc6L0ktu*WDRM7BOKnqm-1Q)J&4*rOlB`RE|GJVt#3{~x>D-XX^D8OC4*08pG%RB3p
64404 z-K<O*KOknslX2R}nRe|)Ze$&8dUDy!wrR4N$!r+!`>(++QT5=8Q<SJAs-+#5FZ>>G
64405 zz{(G$S;w-UJH=Vb+_oH<KSQGZ=wtMEK|Blh(7b0X?`>gtqLPHw)>8w*Dut})0P#tD
64408 zS?Co3_a#%0!;#dSX0N!L8AfM-RdP2lv7p;UR`0vDO<76O<L)miuHpHqveGZunkra4
64409 z!4gf6Lni%p=#Qb_0esp1xC8t+tgLGs4vqF@d~O-CICExwf1257VL>ogUW#S}CZ=}U
64411 z`!P;2SZY{M@`}H%v3%54JUheR2E4yI#WL(C-v*W;@KK3)C*8%6qQ(N4VeDMqhAXlq
64413 zr^Q^F^BaQQaq9V^JUM32LyqC-y&xyL5BHW!!NQxjvA2A8dufn!H3gW42>E_?;z*G$
64417 zZtw+5wqm`Nsd~?<HuRK~0ou^6I(bbt3L6GZMXi+b?$tdtC$k-V)#>F_$uIB*Gwq;^
64418 z-}f@I_XXYe&Un~=C-)s!?Q{1nvV4}i{Js;;hL>)pjEtG8KOettv7(zz@oQfF@^10c
64422 z(2q?+332|p4@U#pNh+Rs2oD))xfn1)Y$iKo1il5r-HNe%cSR~F+9227R%lYSIUN&s
64423 zD(+UA)stAgHGZm4U0+7?PDhaxyUeB}j3$$EGN}Y8Mj}lz!0*SnN^AV6lPd|+-rz(R
64424 z{X96=mCqGbJ~7*-{dVWgZ4)?!(eY-h;}ZcaO%(l2FdxF@$H6S$3%_#HJ-xnbq;@u&
64425 zM3ORjj?yvp)-!cZOJd38TX&kH2ltBypEen8ttk&z2NKSSJdxCf0wX0txCe}*+uKL^
64428 z<*(Aqa&Oh~fq%yJU@s6!TzmDa2067<)1my@Nrq^?E|1-c$vIiEp3ytS1Wkyws%Xnx
64432 z;`_?vQ?QqWPEaph@|kqd?MmRlAifgp4SC;N{2=UhUAp*#2$c-hUS0Tc1oFaY_CXv=
64433 zy!Mtq8T7g;;E5j6D-=sbIWN~dmU3sn_ECl>&Hxv6xRN2J{i=?USb|81q-h4|AP|Cp
64435 z5{Z+y1~D0;cBUQZK7|!^dOj?USUa{uxjgGX2zc34<ffrj^_(X0T*h}8-EKIU#tX8d
64441 z`P{}g1RH4k-FCH@ZrC_WB>31kj*(Bcn&2G&?%u=5Pa>Z}Y-H~zbr7T<hc~KD04^d>
64450 zMF{shOAs#)35KG^j}W=8RQKyuwG%-82EYH?(C-D3>mj>i)>WZgMhpf|Ab?*BW%R`f
64454 ziBF9-kzYn~vD^pqMa_ML#v6F0IW!j=O$nqm%6(Ar62fE(I;$ng3{BKijwhuV*(h#l
64455 zsx+B+mMFYUtd@%fnvrX{tUTrCe~A1Fl81E@;V-Ffl1W+M9@ykurD*DfpR1XK!(*B@
64456 z%CBw}tR$VI$huKU=_%Pz-Q#T?hyq=+ou1<ABt9V4tZsqgM5U68WB}gZ9rP6tEq*YB
64458 z@dmlI9cuZ(E@QAXq3IM&D+Hs`*1?rs0~M>O-D_1|ZE7sIXH#3*wA)2INui8T_XtWL
64459 zQ6ecMscc&+ceA`Y^kOvl4opHu$m)1hx28Lz-Xv{XDx@7vnXF%#oCI!Pxoo2scz$m8
64460 zQ9}^<+8`yAGpSlbYBaQ(McLVKqnDZHlS0ZF2)vtHIV%qLZAEU=tZi-YI)qctrZ(0(
64461 z!fdIRD-jgI8hVYXcMN}=uAfvhN-(qkt0;y3E>c7~(1WI?`|4n33Whboc5T3uuaOt=
64463 zS-3FS6qI2HD7%fFbaK5=c%b0q_oD4|fOW1t&nHng*vL+&WSEtT*P1+}kBr}Tt!Z<;
64464 z(~4?M9_qb$ttniXbKhc<B5A|yxnh%1mL#5LdG-h8oOHaAHZrEun5#DtW!v4g7wb)I
64465 zS`-xl#L)joQcjj1a#%;Vp1Tn*IR!NMRrH529%&()$O+s<aeN5)*QchtD6}`-MKRt&
64466 zk*$;Q$!J(Az$8|D{_o97Ng-v_iNhM-MiCU1D5K4qe%HQYI!T>D8%eTP>28TxE3N6}
64467 z;_Ys}rAir@mj0=0T181NSvfBMn-a_ML!WjZ2Mp2L+)bPN?pB)7VXoEPK*PF{(aTk~
64468 zWQ9(q8;05dQ3{$<vxc3Qfq$HqiKNYQiYPn6YLg4-1bwkTL4OnYk^{gie?QFKNLw3#
64469 zP6fbV*r_65iIY_D6dr%-EOgiGu-gv0G-o7^#hcE;?@9-6fG>r9&+JVBAW>M>3w?fA
64470 z+`|wY3nQGUIqht$FAY&-I9?jJ8oBIj8G8f=*pCWai(5e^_b@sStP|Y;#07LUu|pfM
64475 zM#KxL^-T$oe|hvzW!JKEGN67|<WoFnN`l3w2PPNge`WO7fN$6Z8sYt8ZG9C2`UCx!
64477 zhK`rYnW|E!g$JI_X6%e=_@##jU;Sy|0z)>{xbkmHEYA-;+HGyY(9v@G-bP0z^J}PE
64480 z%6ReZ=J(UFi_8|*?BQ4B%4}9oK{0IvJhmz3%#5m43b)#PS}<;=ZL0veENlIjq-yBL
64481 zbnfwFTj8C$JBFVEzcsswO*E=o-IUcNos>xCE2b=#lDUix9L&^83-TANnY;(f2KMF(
64483 z?3Wiv7o%J-p`Jh&?b5W_0kB$GP&YsE$=6zdF)W)fc%U00;Ft(mj?HKX&vd@_`~F9a
64484 zN;{#PI(+Fr(5fx8Tsqepn=G4ZETuSI%Q$-(!sG#WWVb@pF<_c%TVj$?G8=;&ipW_j
64486 z^;HyEJz78Nb-dzi<^25e@esUik&=_;<MT2L3F%MtUAT=rceT3lk?L}$ra(&G>Kz%X
64489 zMzE;uGYFAaMx&jTonEJyp8-Xm>z_GC3+j>v8Vc^qPB-nfId+0N-|&kM_0(>S6}~-f
64491 z$lk&pU@^c0SVazyz47+`E)Z-l@B!b-F0wTgSv%M`81#zy3I2mwn0gyaGq2+!-9#;V
64493 z6mh<x$Y?rlJBMZzH+1_HS7JbHsR$;w+~&f*jGshrA^!%@r8@S@-ZZ~+VY;MJuf(!A
64494 zWq-22H#qMsnG+_YqFfG@rAUFbyv=I{$&;GUTGh0Yo4ei5^`sn3=A6Q0j+SNgMq1z!
64496 zily2mOM)(F1e6QX(tG#ilFC&xm8C*oaWaQXnLG8JG-kZ(+WNa;kJsK<DyRvblXX8i
64499 zs|Urjx3|{XmK?2J&ym{6P$~<%*Z26wqy6-@M;WjaeYLmlw2aK@)jXdrIjo^hukt@}
64501 zGD_|xWY9-T3ZR10={>x3n)Zg-i>Q#zSQG<$doLryw4d)2z^YB~gMA$s`kuy5@Ppyw
64502 z#N_c82S2#zrX5v6R?rn<+E+6H3&-a1gQxkWX)<QoGzElM)i=&I^qNjC-|h#gCb&|Y
64503 zRuimBTl-h`4AiMu<3{(yQJX<49gu0W+!zm?q>@Z96w1iU5}g!)NrrI3y}Vk`bYEnP
64504 zMyy{D+Wvb95B<MDoCK#>KJtbMp^+k)FCjRIl5pcFh7crd#z-I}o*+ZhKb@VeUjDYJ
64506 zE2p`Y?OYLs9Ub<dwtOpp+NhTgUaeYL^ts)$reoT0j3xJ6rfc-qth`>;nGwqHtbx)=
64508 ztH7`S)}ZJA4Lz8uOMyROZs;r=1OQ$-(3I06<9u|P1_5INIAO2P6(VE4>$#T~{jDI8
64510 zO9)A~)L2zAOhyxRMp>%!G%c8{=dqSO-D&fS=m5zh-yG6G4yJ2U;7?%xXLNv6Ko*z3
64512 z@+Rje*m|LN8yca3Q0r}jQ;T&~GB}d+i-W<m-u6@I4Wxv;`WJW2S>SU7*ghq+M8?5s
64513 zre~Z6B)&fx3CL%cinZ0e<0s{m)5&QPYxBG*T4FNQ^fD<g=dOCGme-&qL1(14#;Y8i
64516 zB-ch<uFc5NosP`TNCBg$6rdA`HSq)<o2s2sB6sf93ki{T9b1kOVlIdZEVUWQwI7@3
64518 zUD>rYbz)mnC{QfO_fBLx5y>__lWluCwFEr<vv6i9pv=u^OKuKM%A(-rr*FikZ;XbU
64519 zJec<ZLFMa!Du72`o11lt%{Ya1I=G6RneR~!DAHdL^?)X^9_5-NHoHcGV~rNjcDlq^
64521 zg}GwhIjY2Y1rtkYHpSa(t44z50-|Ul&=8cuNx%*)yJAXJT0FB`0m?En@{)qi%0NlT
64524 zs**_&bh6OWrWmFennFC}{ckeYXHBm2++^RI-}LMTWswbPMDa1UK+xl}d(#Vq1=&`~
64528 z>X=Q1agd6AVbC7kwwr-^B?j$rzO`+N?GZRq3&<XV!xMBO0dzqwqf>A@7pe<u&yIGT
64531 z#$%@~3ph+`FCA8&eb<v-p)Qh1a5pONUQgZqx~oE(PbNgZaCdw3Y}HFLG@)u{rJk*6
64537 zq)~9(yIYl;`%Pdp$ON9wq^^|xSHB-3c&KXc>WVsUWj1ovtEJM7TJ6C~WhAW-;I!2z
64538 zmWoH)T~_pWH*bBk-`Ur+S~}{j|6cqy(nj>LVxfS$!z>4E^uS`h<RQ*LbaNN|aM%?=
64540 z{H@;Z#-rc8mF{M2BZ`f%KgNF^+zH^%rNEDL=K1q&x1SDrtp?yva9uM1o~cV1ljBR7
64546 zH<VOKkeiMZ`ZI}J`0oJw@#q^nc|L%@VnUM-6+!}wyEGTj?gFxflo@ZXE<-zW4*Fy?
64547 zn3Kaf#R*f4=eRQxPuX+~xo!>zLIKBs3?>MTHyUPU<$FE=JH<m0^-ukRuhIlVpeU)=
64548 zJ*aZ`*D%f<w7sebSF1E_tt^#1-mPGrlLt;re=ol@Or?h(e^;ne3za8E`MpxEoXMxQ
64549 zKIHECg~Rm{<l%Qet-GbHRdoVC@R56`$Qkls#D+RYis>91wc|Qx?u@}XJ_F)6MUYZL
64550 zBdb}-Ow!PtR<+5IKPfUYm$y<DmzLQ=foNYz`Kna3xIk_mxVMkJivJRFjNBRv+t5Wu
64551 zVTCC_#npH_><jN_bA5RUIYy81nd2PdvCItG<mca?fy>hy`dcEUDqOZ#w&BPPxFk-K
64553 zAN}&j8;$Fg@|EJ@v5*OG=&50DujEx_K5Mo={nRGlX>dP7#WFWnR5fpMQ7-OZpbk<%
64556 zm|2SEO5#&8Ne)iP3@e;rr;1{_^<2uV4ho8#a)ZGbQ$h`82L%cS|0!*|R5I+y&-^ga
64557 zK(0eS^Q8V}e&*r+_7?CnucO!R>t~*KCMH^7Q4N&+;U&IiLtp`QXq-@as5Ng@s<+C^
64558 zG+_geDtme~AW4pZJ2&e-^f!;PsmuILpcppthtFmFgIxVa**`5756dgzAc?cLzr=D4
64559 zzwybJat9ke<hIS>6Oq#y(q@zRC~_6j=D3og-;6fnO<6#$qE|!OgylU`i_RORwrAo8
64561 zwdK-CuXv0slTxc`sn84G@IUa)-@!H;XWmH>PZ)Hg3mj2P(+0OTGHdSs*EB!;MEjN9
64567 zGi8*-Tss@;MeGOhKSBD)>Q4auH@z2d&Zn^n;-iefD><7yiNF#U10MB}zL$tMT3r$j
64569 z@dMs`8Jtf~IU2pxEIhn)^vsRM(KxEVV805^)&*y?-|pGENO$pUQ$J<lT(f%&hKsUk
64570 z5>`AhEL$qvIsKat%nqem0-gYYe*zeMr|hf;9b;yNE$zPl;k9o$1&sF%$CD#H)>Jd)
64571 zqIKiWqlK-9%E!%2W>QN@p!k19dSA$ydPr~XOp#7mIMsw9<M#!zD6NhzIgFm5uwo8K
64572 z(|0~FiGzSF6+z&JK?Fe@SKO5M42%Xio^fRV=D%P4#L>y^{jWb+nF&-;REl!XZ#>-S
64573 zz5j*s(h@SMnIsSb?s*-|>j(t>*i=U_(}y3PD2EQ(NzCu6UK%b9E;`kW2@_Z`Kg<q0
64576 zMj<AuE^-;m*nQ@3X{V@A(7ruA1}r9<bb?GINC<_f(IU(Bd0tAYHM922sQqNWcv#9T
64577 zrBmCFZg$oRDuoB;4Dgzq)~QM=clBgdxPIt%oBc`d<adZ`$To~kH-p@X`wnv_Yb(Qk
64581 z!b4B{W~F-Di}X+V3J8T1K#gSJ`~c(VwJegWjG-3#M&Tnb9zJutnXlidfM~I_Uk=zC
64584 zgJ-X7LML$eZBIra2VC>FU(WBA@*pluXK(fG)!gpOTl2XMsLya9Kbv3l+~X#?85_3j
64585 z&D6)z438=1A1>q<pcc&Mm$FZY1O-Duic>&bR?Y1^_@P^&<Xk%`my;xgN6Cen>bGr@
64587 zpT)1?e}Ei8xe57YrcYD^4bJ&oRJWS-mEDJ3V9-k9$Ps!(M2O-Mws4$V;s8|_g%T6M
64588 zu>c2U@Y?I|DK&IG3HgN!(k_+8sM^d&rs4Fo-~k~@5Wv(;5(=%pNu&<CqxUSmZ^vXf
64589 z*==V_-QJHJJ%7CJHiFQ>Z+p!m!8Z#)+wL6ZfMQ8YRlE72<HEsu2_|3~+ir8@WE>vG
64591 zk{n4etO&`q{CB=gObJQSPU@_C+P-!Y=p38^ml{R)^`1p2SKC{kN>DtbI4o;Cu;qO4
64592 z?COih%V{WM-+DJ3*oV`fN9CQvKn<I##lo%j4wSH_T3K~E*X%+H^3)&R`*ZB~2?W_g
64593 zJ_>0CWh@uaiVcQ0U`u5pXo$ZW;^g31ya@mHg>cGtKnnNJJz}xwzH}}xZpL-?xhNJ=
64594 zlVP-q>3}#KcqPD#Vl^q!-4FUO=Ste?N@`rno*oZKf+vV5c&%%#|Bt=*0JH2U&xET^
64595 z&N<$kbL!jScAUPQCiY~FG&7n}4vauTfnX$Ah#-tv2?GWR3u9vp4nzSW!#XVX8n7Q5
64596 z=LKW$dcoM(>t~(tZ-b}*s&mf0eLKu(Bw_FWKZ|BG-RGV<=hmrH^?vUc>iZIw%OuVc
64597 zrkO70CjHe`cD=rI)5$WDWmsL^UkV2@SBcGJ{57Pq3ax7O;d9NCA&&d{ROZ;e$S-i5
64598 zo&-}!H%mNwzrYln8u1H+Pk%Wzen2k+x4_r~58qQBD?^Hi7mdX>)_9N_fa%Oli?!n`
64601 zg$(u}1S%aJTY6Qb<{-{2P@1StmCE<Lgb)-taloj1-IE_!eB0iE3jw{xV|TXBHm!Kf
64602 zmiN#8%*?rb`$#rdH3zu5LR|+IF|N*pu_(_ESFxBuZ*~zbZo}1q#=V;q-VIfQcRc>X
64605 z3;)Py481Ftb*>D}*M<4~-IgfhqKKrR$*E)U+uv}+wYX6q3rm^U`4<?ih4fUrSk|SY
64608 zS<5VD6j$US&kHHTU#X_MR<`DGEY78d1q&kgxt5}-gt<63HJd8Sa?ud-S+;w~Ocl(x
64610 z%wtS`jLssNy!Yun&vndZdgEhQ25<9$Oiql--+{>3m8xtTDL;V*YGsC`8I~N{JE!iP
64612 z?8>~M<&ucdb*^46;juAP??7?)vDuHtW-<L7#|CSLn8-cT*hGUvT}qf<er%9b?FECQ
64614 z*)&Ea4M~Lia(988p-*ucE>pX>kwWgaQybcj!~<_Orz|%bB+`b$5t%x5U|%h;dPoU9
64615 zvA2TVWtiR?v{f%-*lACBq?$7es$sM_%1pj!Vq)?B$5Y{0OdRPi76Yq}n$nYt`M^z<
64616 z$R)1()y9c_X%->R*s*pdZ#QE&BQxCi{f*BPJ!%T+x?bO&tHlUv({#E37lx+OT_Ov1
64617 zv*F;sVdS101h)2WW?2E@0U-|J3(f{)VynfMq$s@APZ1446f{N^-IWrTu;Zmx`NoIR
64619 znd%o<*WW~f!PbBgC5{?Uipx2P!`&D7(Hl*Nwrxr#A;~a-o2}|sTMMWA*z<w)xm-~Y
64620 z@MMqlxqQ=SSX=-$shjRf!YViT)|gzViTB=m_T{JRNNaJ+)!xx*OslY7mo2GkCeg+Y
64623 z+MYGMeJ8Fu7{lh;O#VotvNx{9g{+l)&8>*H22l?2s@1-FYPc7G_yYCwU;=ZrvA|~J
64625 zYn9`NN{`<?6A-cMG2N)x<F9;m`P7JUXebwa8nGpC=ILI7`1hn>yJF(*ma<I(mY*-A
64628 z6q($F!Ff1OY&zh#dXRd1=*@>h4`FRVLIm!FB#Z5gqA-L=XEXYq*0tv|c~dsBDa<Kv
64629 z>Q|1fwrHNGNgQ8F$&!?^-KriSJL|@r)wY$)C!Sh;Y%PDJe$|O&T9fo_iuP73*H7j4
64630 zFOP{vb7h>9-Bz`IG?SV0<5NkTtSH347f>HU^1s=y&7ft!H^9GLciUmjVpGhQM&dv=
64634 z$bRM>DI`A!tyJEr9I2FV-%~kU4wpO{k`WDKYU1299+0ua)qwOADt2U(`5JW}=wX}8
64635 zWFQB;e|MWqr&X&UMLo)Zv}I}y>BOjQYd2mU7-Bk;GABZUGYn(0Tzl^;r}5&srQf@u
64636 zQR4ML9ZS`%L`~5QI<&nMAhCZuvp-WjcfMRcUMRl}jZ=IXtEku33V!`Z#-l(?Q`0+%
64637 zWBZ1Ao{0BShY=TAeR|4%PP}k@tXaprX$vpBgg5UJ3i>83Tx!}r;zgD-A_xZBIYko`
64638 zIZ)8IGD16b$GA6@zO8=y?1)gf4lNoyL%5ipK08;~H=Ex^219xH1pV-+4<+&M<wF@7
64640 ze)PKaTJ=cr<V(-i7Ad)t#p2*9Bo4fzuf3yoe7U?uNQUvBU!tE3eFXD??I!g+eJHcj
64642 zu9IG)(AF=UermaKH4fJ5E{}JY$NE_BMk6wLC|R6HdB;{)Zrk&MJ)2&Wz-L1ICjAbu
64643 zhR35HU`OJ4a>#|b-Xt22HMq9bXEK-<qhm1={kvmwgie#WgvQVeNehalruxIt5I8nv
64644 zCHJjOiG`ZOv51I6JV|!=PFk^2;zaMJ*WY-gcI?o|pa|ty{^Zelxzel0VrP$~_SXmG
64646 z>Q~&9oUuiTq<P8Kw07Fa8`F1BchCyrwOIUMd-hP><3`pHw)mxP`Qg_s)v?9T%+%cG
64647 zn15vI%&TrXUaK4~S~aWx;Nl{Q#>mg-u9@hcnrZs}sYh-K#wWD<jUDJDXfhZd>^u1!
64648 z{V3uh!Ti}=PtV<Vg69v%44h0md?$lNwLPI;sH^VcXxj9iEZ;v?-=nf3!O0Zw=@YpD
64649 z*6?E5@|VixIj39_@mPhC)`9PYq)Gc!ulK{D`y>{3S6lW>;o<j|*4Nsn%K`4-!P0Af
64654 zWped&x{)_aCSK>9oOe6>{hD4Gi}AdK#!YFphau{wHV9Eqt{E@=;Hz(`R}UA<-9mn>
64657 zR{m^H7_d!P%M{PoSKjs0{p7-_rKJZ#aFh~S@tUjG<IMwN?m(@6<5cI=N)VZPpf}*0
64658 zIA(mAw!vW>GrsnHh#6n*&(98g0Glf7RBu<S?RGA@!+N_VY}}ZhNvH-%vmC{^hTcf%
64659 z1%3LSP>dkn5o?;UBCj}{h^N;89&z9}<+f|JdJs5n7BZPuTFX@z)wOGHxi&X;wo=-c
64660 zwyId5AfemNAtsXS+Uc5XmfhS<>*=-XK<G{yp0zM<1;OJ(zWzgW39Nv%kIyFr^0^T9
64665 z)aKq$L>-Et3)cIBAE3MmpWD{Zb~72rn{&5q4c)pQ@Y4H2^_<R-Bux`cF=nv}O_*Bu
64666 zmg%j#LQ9oyC)gG0kNH+5ar{Jl^+mI+egCbkn<n-g*uE#!O|Sk(?SCCO!>?rjYg`r>
64667 zf`YKl^OxTL+HTZq;r`dMX*aEf{>%l-xy=68baDaB$q%Au{UAAw<iZR3f*$a{GNd*$
64668 z0fu>d02S0G*^z!?$LSr}>vU{>w9O#pJrV<3vTO_zv9U~)-h9_M5cJm$OML{1yYRY9
64669 zP3Fd1<tBO~I&bl@lC^&#HWACMB$SxUtA^JozWA8niiR<h)vdY235-x$%F2}dqN(d%
64671 z4o3kH+vHvp6OFa$<|IR~c+01m%Ul=4K1@gcnA(Yz2F>#n0p(aVHI8-YW<@!+oLoQ)
64673 zJG!7Ui69R_KApMl;1eeY-X(i(&s2dFM23X5#ms`L#S*S2I6`+BP2Z&-Tit*4Y82aD
64674 zxvpnS%}y36wXtvR?3-SYnH%^A-bvkpR_Jqho(V9qEmnQIm*f)uv(VzvP;n7thBfp0
64676 z`Qo9{Jhs|wY;3#+_4zH-3{iqbyl;uV7mL*`pFg?f^FIK9D$(x+CE^q41D1Xvd~xu3
64679 za@6L_QJc^o`eUfgZ-#9)&RqO<*yiH5qc-7Qle<uxPlj#4>o>j_-RFx@n=sb=i>S@#
64680 zqWipZqY$+z48ALf<^Flp=JVn6B7Emii>C<GAUgjCbR3<3e{_$3-gsGbkC#RF2;+S}
64681 zgxdU4(B{q!4Vd9w%wW(^n_&MaJ%`#n6}7p3<6Y5x-WA;^j2CznYV*aQFL(Zzzld7=
64686 z;!&G;@MV}E|0wu3@HD7^O23$gmrZY3Etf`W3k|ap<u}R1W=Rly;-e{!_nq7xmtsjl
64688 zSt|~r9URU#MXck5IY{t7j4jQt9l==K`{UuBjY6f3vsXs-F{gsk3d4H1<xAAV4Z)UR
64690 z90`6aXFyG;<uWyrqB%7c7qyJW=t64RGiMiKjlr`$N%Yb9H~Lj2(1$NotT^WBDoz-+
64691 zJ#uSuq8ybV>Ww4|3nV$ACdbq6kzTbeq!QVV$fxXTrD-`{X}z~vO(=+iixbN!cPi_b
64692 zTvfMg2`y_bG`j2M*5S-VGt<bIVyR$G{`1CHi5KCuMhekfdUWeri*m@mhmg>^7z2yA
64696 zyE4|!q&5?SjpWdM?g@0==~ic=_>9?e6W-tRh9ZxbqU^banOtmo>_p~@Qs*W#IpLd{
64697 z8kd9Axq%%H&zbAMI4D0ILnwmCk$>#;Ct$?epN8RPFdqFFhvURn^VU`>w0o8h^p-{5
64699 zm9x0IklB-5xUDl;mzC&Qz?+HJff#xg<?_!GgRz~@GHRgP>@|_k*%U*NEG_sWovWR!
64700 zt^W97&RlLS-QBtS)SwR-EB+^Z3gkelALjz!+vcV^2oO5tV2&J(Z;fiJ3^Gh@E*wJ5
64701 zFIMJGnsO$SPIz-QD_1g<O3bZWFKc2@m^+wm7IaIomWqW~#nxM`BF}0(XYjMfQ&|7T
64702 zb3I1>5YoPvK&RhK2D+(pS?hB)jl;1A=(RmoY#0hOs06dc<kZ_-+ClG=jkY0XU6Lj^
64709 z#IB-=OS|p-sBp@<f2)bAJYF0Kr|ASi!Ar^~N>}3Ptr9A!iwRk>H6<2_s1Z!fUJ_HY
64711 z6IRJXVr0vk-c~hkP&6)xR61BZ)w=FXCo3=+j;VRocqSRIc5l5p?d4>-sK<|07MzB|
64712 zkmK~6-_07jQ}oSBn1d1L+C2@Q1SxPsU-CHY*H{+?V&D~b0p4N(!>qDkw7O+#aE97F
64713 zZzgv6IF_ccG)Tb|J!0?-<cw`?3o6VerwVH_(Y2YSMzUcivm9Z1LSiYCo<S>R@v0Zl
64714 zzI|e*(6nNjP_D{(ceqa!-UJndH=i1~ucEY`NDAQe#RPSM8NMkwsAxzN_!N3cxZOiI
64716 z79x0?g`sw28s4nST`F&?c-hocAy@Ngo;F-06irvw%C78-4#)7KUzF41ndEFanPy}*
64718 z{xFM1ljCs_avl==SzL5mgaROhJEY;rNtd}ygv0B=w##s5I+yx38ed5Bci<O=ue-2$
64720 z(XH6a-3r%&KX@g#LYD}5if{s&B0FwN3O53Q6pqLHhc<7<QuM>m>u!-ZJB{Q0aJBec
64722 z3(AJKdkNd&I8oF^SB`fxnVF(n_XS}Y#%3YKik_M-vJ5UAE}{Q?Eg?Eql!NMCcntBM
64725 zt7f3kZfV(=S<8@?m{cT-%((5qpN60D)$o&`2s+@EeNlh}1J_;1z(e697CFcup2QFs
64726 z+YpL@hmf41QP0DS?(86=d+jpqhN<1zFtvN%E|mZ%bxNH^4SjKODOM@-!wm1eK?Shh
64727 zW^Kr*0B$~)!zI8%bpX+1&X#!7IkecYOlzUi9m|sxrKH4^#VYLU9-k@X5>qpVjfj($
64728 z%giMArgN=*&DB|gamTTV{_bDHMIj66d;yIE#;HFfM4aykJn@Mc73Z>v-f|mYcLKpY
64731 z-hOsIX$u0!1#k|pZ=5~UDksNpTjDf~?J^=Q8s)W|W49LL`6K(M)%1j^NwOF~{9ifw
64732 znr--d&meduHhvHL2FNuumnXpWeKm=MHBAMDl-!|%)`?aNfs6DJBcUAe(Gx@aV~{&K
64735 zlol_b=`}SS@q&#F_&4w)pbAz$nKeZ0c0yAq83YDJh05R~L!Yg>^|O}+&RW+-ue%DX
64736 zn|f3j2^tjMDVKv9-FAw=q&wPLK*+7kRC?-$UbbpYWZFvx$C$ok6UJ3H*F>8q>aG3_
64737 zx$68h%w}f_UcoLBNOtQyZ!~in$(lNYIFwXr_0PsK1q?*E-sQ%3i8A~Z#ErXP1-!d2
64738 z7?36_czv&j^(vF26+<A&Ach7<DvN|MPv8G4BtaRH#f3&KpR-L(;W^CFqcS9+nHN`I
64740 z^sADG(xr^TIYPzd(m9%;84K4vAN#w>l##Dn`wsd}OeX!zFA{0n?V4O7W-irPrA^zq
64742 zq9pTIP=O-ig`+hnbVW)i!x|J?QZegWt5DQ%wT++(g`E}^X{5e=6W6!*kouYYe$}_n
64743 zXVKJPF=o<H<&-O~aIf&fGuOCBtLKWU+y^=I;1bfPOW>m+xfNZk?BpOFR54Orqzr@y
64747 zX9R_mtqUw2)OOuEFhv$U8+uv<CL_&h)Eta9?$<8UjvRmvGXNcTvygQ*87P-gA?vZt
64749 zT*Mke#vLO`I9vV%W-BtE&~rsJZhwdd@AH9uXAb=6CuWopzEVLm23xrv9uN(TtVrVR
64751 zJD1%PH)Wb*JvpHoHF&UbX1!I9^=_Z%H9T0YrlV5vad-WOVj_PS5tL$EGi7vpyP}!i
64753 z##Z6-kx09uXrw>IO-mF>#7|7EchlrbHXlFK9fnse&dG5lh_4#&DCM>3y=P{sZhQrC
64754 zk_U4qJMEjg%d30yFPy9%h;4>gP0Jaq$Dp|apGLf-46gZPHg4b?wd(^mHpH5(fwl3`
64755 z6T1c3yN)b{^{IwtmR`h7TO=YXB!2CPsicWO2G?9&ip%X6-kkFe9$(ctLeg!4Ra0lq
64757 zBA$Vn?NTzr#VvKH0#uyYTTFHoua)-8w&bXuZf1N&V(0Oko#>Wb&F0Oin#c+9JZFg4
64758 zM$h(0P=D-fUr`V*Gm%{MgG%hrXMa&TDG3a<<y8&4J`{$V(lDB+_31)sZ!%v`*NRvS
64762 z?H8NY(dE0Ar;=(T<{mnkZ~K!!ClsCJtR^H9_Q4*jm$;H|lugSOJJ$#<2-hWX2HpVX
64763 zhy#&rtO7ZrIk1hP1F|`48*3u{nIRbJUcdm3XSfSHjAFsiY_*K-xM+t-Y}-Y+BQ1Op
64765 z8k)NMIo_y)ZnXE=-3SdnJhT0FL1g*9%^NWk{m^s1)0s^}+ISb6(#pkbIuVa~u4C#l
64766 z4sM-;bMp2SgOObqr@jiUX`5EwZN{_!qXQAl8JzC3rr_8a&yaL0+fZyYzie#zMXRhF
64767 znA4KBDRK;@N>+6&kinuWIutG1dJ@LxAjyf2o-RsG%;`%KLs@3Jm)rEa+yh^NG|PSc
64768 zRUL`bxPZh_4FLmzC<wK_X)vQBN<wY1XhTpcq|w)_5_T#xTb#-me+RW`Lu4BvtAqSj
64771 z%}#U+8Oy+AirwaLyNo@I9Rz|5&0=ogVw=ekG~t_xgf*UNP3B3G)RJ0OW)((~%F{-{
64776 zmHL<$7g~*E;>u#2Mm&onF;46=dzX91D(5GQbFN#Gl)qd$T$1As8tbwLZ^=x%m-8&=
64777 zbdG~+T-Qpm6eJUq%{(v0UFXa);nRqu)oPJfIr3G){|0$97Ki%0YiI;69KZft5+|e*
64778 ziiAgFBymD-pfI>23i^;#=`Kg><FVO%uAiPefH+Atm13ERT>aXLThQgA&Zt7RpP6wS
64779 zZ+a4Sob8{cGh<r4RLfi4xV?!#VXeQ{{eP&e-{8r|x0qZ?<<Yu+nF*vfdR9>l>iT6(
64781 z&ca+i3&!Bsw%DD^MDL8u-(5p@at@M*G(q451>1vns+GMD^l!*qCUQqM^~rMX?A(sn
64782 zoylv<%Wc1%+%0ftQ|63skva9}B6G&!_?63?(v=DwSxm|<&#NrOQR7RM%SoM-Bq5Dm
64783 zWYK(!wYo^`jL4lj(rNei*I1lA1nIO_Dt#Ia2pZFk>24>R)KyT2^-<|_InlFI_P7p~
64785 z;c&PSxibr15prCq76~5`1ctRd(&}q*B!loL<Vb;Vbc7c$mP-U23Z{7A$V1Z~n-y^r
64786 z{OhRX3X8SOg4t3Li!b_$#8*%wd?>xHP<Z*~;WLLc(w{5XhYq>d*Ap@J8ATVT8b~*-
64787 zk7>N`a9K}_OPaDxJ`cvJzH^-F-}iCC(QeOboPro4duxE_6%1AEC4I3ip|RT6bSlQ4
64788 zt72C&SgMS)RWw@Nq{2#!l~V@8wMEWPfaPZ$N7mo-{AK(V3i*29H&fz3$Y(vf=s@a<
64790 zkLn^))+We)BU!i8Et*zEv)Uaf9P`VR><TzO$F7u-j*;nQLmB^9=$~8ROOcEZEPQxx
64793 z-@&uC1NlgQL+>C7lS2n;<V@Zg992e7Q|37R{4YE<PI*og9F=h_=676)rt8bO!tn+b
64794 zH&MqMwq@k;mM~Dg_<rI(_+})7(*1->5!(amEE5YB98hQCFX$C|f%gqNXF?kdrVb<7
64796 zE38P#yx}=MhXk#XPS;-Y(7ojY!#=(dG;kkd%#J?#E@;3;*vCM2kM=T1)HE>U1|f}u
64797 zUV3dO*QSGh9?a{G$hx$OrZAGP`%{J+byMKvq84<t5|?ei<aeBd3NJ&Q7fh-h6LdEl
64798 z_H$zcME?;CIUCG{Z=&B>csEFcYx-hBB)%V$AzF}Wn5MTBWS{Cqb-r9@IJH?OTXfS#
64800 zel(3%-2t%MdMi}wc$ZPHJP5YjJuG@;QvmvZzapuAt5mw`<RZp3Rxaqp`IVO98)8gf
64801 zL-R$VP3`8DAJT<VVyvXhCx_wBiqyztt29sRVpG(zDys?em79a{{xmrao**~Scrzc<
64803 zvFUVKk}`awZc!A+5?bBC{O!Z=Q{WhJJCK17-Vla<rt!N2<h?Y8D&p<{T+fcY!+2;B
64805 zdcL3<ITwDanzvh-MyVQ$buC9%EK^1r7Z1L(@elN`GjXs0*1<XOLhvf^cJMy%8So_}
64809 z)GE1bIvMj#9q&W;(D>4sa!JPo0S8l;!v*Mu$%+C<bVF1`pLToUJ75Eoh^?^<#Qy9-
64810 ze6{1?K$tN22SX^rCX7}CleXi~k)pzeizsqU(KxCkfH}OdhMqXG8-iZw3cx_n3w-Ed
64814 zkH77!zxmjsKlWq)^-GUF_UNPXhd%`AJHPz?d2=F5Aw@hEqiIdfR{UOhty|4VNC|^}
64815 zTv9YD-?h3w^E)rU_}!;ILf__BSZlnL?Z(*3M+jcIvs@_Yg2JYnor!8nGWAlSe5WKV
64817 zmbd)LpT6y_Z-3(VzxKAb`fq&WZ~w+y-ty>UfArgrK8mq{Tmp|%CxC&pSMK9QQ-%b>
64818 zBQ}T!%14-lXGs(ugl)V5soI870xRgEltgN;C=*Pxq`|7HDHI_{6w`E(swlDuwKSg9
64819 zvbxEWU!_QvBpF67=NXb#9j*33nMSKbujCPc38cz2gaF7ICT7@#-Zl_!esbfJ-~jp~
64822 zC{hTr-}Ll#?}Z&m{n|{dqUtWoru6*bm;hDVprni&E2i{#-caIZPIYqrv0wSUKmLkK
64824 zh)2N^es1xKo?Dl}60sCMcQ6Nr&mAU&ddA0QD2iB^d-W@)r!wfN3s3yc%kTP!@BHPj
64826 z!$8O!2t{5FJuE>JfPNUz6hTuDv5=vd*I}BD?Jz-@>7l1|)Up%=z@z3QQp<wo<gj^U
64827 zwTW6|`(0z#)_|oLie(-K4D;Hp*Wh^SZWv;Z%_9IuZ{l<c4?V+`IO_8XF9O?x^bsZ7
64828 zzjt+cVQ#X!X60>;jRm`{Lk2W-*1AD?(ZZI!g}I^Pfw)?*5+YR+ryfEt{7J*Adt+l<
64830 zDaN#PQz+(`MD0iT@q<o-raaddc#7pIE!SPCb1KW5gb<rhI7ErZ64ON!X-gc%Fl16q
64832 z1P*!v6C4*GQ`p_GZEs88PNyI!=2NwFO;rRAX+D8>I2-bsXxBPBg-CuOq?8m*QRVSy
64833 z-xAK^1e>Rin~g%J(d+78g}?O8Z^DVAXmO~gF23jDchR4@2hGfQGB=w%Hr2Kl_a@8x
64836 zabf6TaNI%E@E|^E6C}eG1;g;9fdw8BqdULz=}-SSbK<A3oj-Tt%<S*LJ$K*z3%%)O
64837 zMwASb=2_FVl)d-QRPtV_YS?S%XZQ9Jagz3?d;O2x{ioz>rfynqxEaN5dx?c2#T9M4
64838 z?2-s9C;~?!*L*)g^Bj#9V#3o;9H_eKmHw1rkL8l8B*wkOxZ8w+Q>dDn!ONPlIEL|Z
64839 zIL>`=5{+~6-+7!@mLOO^xO8&m<V3epig{?9`>=n>alYcA9>2n|?jmM+rNgavu02pk
64840 z<DHmF`jhG1#@j)Q?}~@qbj_J+U=l@R{^$JvB7Os$2X}phxn;F~^CZH09zu>-@3d<q
64842 z9-b4?0Dpu5t8{K)ib#=&=?wPBN5dO=`$K1cARR_M{KM?);oy&ky&^y$<{tgE#TklZ
64843 z;xByUN2dQ0{`_x!=xar%q{I-r<Fa*U8mZKxt7poN;M-nKPCDyd&1y_#4BeYaCS6u$
64845 z^#*hEIp(0Dr_xD7qF73IrE)25nh-+AamHePP17_aH=?mea^o9;9J%cA5A@F;=$}8(
64846 zKc9#G`GfWIgZ1-+_4C}<58U`w@KP`j{tity=3@f3iIl^wT$AXPj^npM(+bC^yk4f*
64847 z-t0?hnPp^-b4z5__i90Y^zVWU{3+m|>t%d>l!Xhc{#XS}k=RU6SR}zSB*hu5L~@90
64848 zNHnRG)05YBV=m>kRVYp^FItmplYxEv?dYDbL-)*qYQK~S{9~>ZWP^nVwp-=nzGVaz
64849 zZbrT~Nc-T9kc=<_deOutZkAOwksu)@PZY<|h%N51B?2<2L)o-kK2fVRscs&U0__!Y
64850 zP3p{EO3UceYc1Tb`%u5$h5FS2cOH7GjJM5Iu+4fs7x$E)^cZm<zT-3Uz?rbIiTN-A
64853 z;rI&6l`F)am6&QLyzzZK{QN(<@o(Tk_&!htD}AvX<fPD;AnR-Piff;i@_73o8DuOD
64857 ze(>D+>Y?%L+MUyR$DOUUy|S8&g?`kRZhQ~i4Sxa@@myEAz~_fRoP-DS5FFSZqFAjF
64858 ztcR9ZXip5Cp#k5HrhzqZQ8LU4nc-=I(%O1GU!YlD?^M;EsUzi_LNmjlpx$5ei+i(z
64861 zl>|>pu5|nUYfVb)s>b2-SI74}xG2UI%J-S(*{0Ubt@2y?Tm#L%koRystRx!Dpx-+)
64862 zW1&lGpcY^V?&f4~&^sy!??kgQ-=fO-u%|ytB4OicvlT`pHK=<rlQeXWfVxQvydRI5
64863 z6d~AxR@F&LFl=@r_u5-ji-PsV<uSHW(`kw-<|%Fdz=3%!-iz07uj4uSpU@mQhx!`_
64865 z_DB?iptq<R<ydSipUi4B(l=Q`yh(TYDJN-a6coo6=50-s^O@YC$?UOxt+F!7rM^N@
64866 zCvv(KY>Pu<{04-DZ-c)Mdf;GxAD#<INJ4`r2yzUULtKZDIxz6;;awI4h15)HNAjt5
64867 zvsT5S;;v1P0$n)(1oQyz=AOs_{TSk1DZ=%2lOSo17Br;9;sgN-S)7Q=k|wgOW*FIw
64868 znJKdd-C0a4F%c3N^OSs|aComXR+nuKI`Jf%o5?f0A=)%V9KeaSOxWpXD3*1tsl5{c
64870 z4L$Ih;(NHkS$y*g(RnJevBl{i$3Bk0N7Djc7{x2>CXL5}t&;V4-8O*_{UK&e^#W7d
64871 z(AtgzLh!tBBWhMIV+32Rq~@Bk$?;25f`b-LLSU1Unvz8+?I=w*)vBWzz4E{wigtYt
64872 zuHMn{=O%NEEEp#Z6Q;6CW}lyJpH7XT`SCEC)31O(16tU(Ua$k-I(13kda>5PzIFWm
64874 z(6Qs=rs+^LuWJqkIaaqES#d<3cB+b@RJ_DmIJaN3@vjI!J`Bde)qSyI;Qjc~7Q9-p
64875 zCk=^fk_ZwS1uGLo5-%}4u}csm0-AC$m#t|5AeJMlG7&vyV1gPg@|?$Z^3h_XM+}C;
64876 zdpa{xLKZDHRxmi8VK|a9B*_sJ%FfzJJXs*c@C-E4`)jp1EwfbTB_ZpTItH7vHJhX@
64880 zl;pCUNOOoeR4w<UXfv!RqeIF!1UIM~`%Q#h9&8{6z<f;G%31N>si`e_!x%!tn=o-y
64881 zHAzTF2nD<Oa0E7wkR+j~3E8cfqATWH22zrUdhT@9>UbgO@5j)0-Hg7gg5|pyaM^@@
64882 z2`-yX`R*u}MPnQ}Qbs8sUc6S&v8IMoH4-#J8l2~!lu4QqB+bhq-q&nWG7XVbC8d<Y
64885 zktS)C^CgNUb%<e;6a^h~0G&)0bW<^X213+GO{=NKbVtj{P)e}8!5T7TWrh-HiV;~?
64887 zCFYcjB3S%E(CJ9HDLIH-ks&A+^4US|!BNt?8Jxb2^^T*@saD2M7rpXannSOcrv+xl
64889 z0sdgHD|M6jj$}CrJ)QB(u;OSd-6gMApZR+G($`=1(r|~F8S(Ojmf+bfygZ82+d|6`
64893 zs_h4uH@=7Hjfb6OamcetakQNlX`Udl$gyN3X-O%YWO<sS(7B3lvlJyd;?z-JHfc)E
64898 z;|8A6mWcFzJ>gW$LM(@<4oyH>>WexJ9YwKqny`-7j9AX?Ri+kZ8X}SpYU=$Ik&Jty
64899 z7|2HaTz4YTGy@Lx_s0YxB=#oK{K)RJA@-eCy;dn@)1EUz?8}(G;WuSP%svp<`Ay5=
64900 zkl9<7izVEYMnDAYtRxaNngx)hQbk2@SdNw@g-7b36=Myu(6&X53*<4ERcEeGt40da
64901 zzJy?rBC{1kQdo@^DOS{UUx(S2hdyR$qcmO$@$nsqPTvfxh}(C-m!q1}A-8W-<%rwo
64902 zwtYx$a{K5Qb9;QLhT%9M_4Kerm>0ys;<y=#A-0{%1&BE~7wCAKZ35Px*gP931<`qW
64904 z#fZGE@V-k6h$)juI_FZ=Q$3QC6^?{cYh{17N+Zg(Xz;Eps1rUd(auVOQD{C~^Y2D;
64907 zmeijB3w`3ku$F9cGxcYXV;NieaHAV>vFa#?-WV7QbO2mWmL1gq0^A*j%<NPF@T2c#
64908 zXqwS7p04pa0|iDfB_55T&fpj)P9haoH7N?)!fDl>NM~w--N^~8XUc-?N;E?14l8p~
64909 zTvMxQT}WGY%Xb=K-L1Ey`F}l3f*i<xB9o3Y6n<RqQq&(a|G~arB-_~GZV_y4Kyb8A
64911 zbMON21z3QOAkO0UEuJC=HO<jU1t^#$WADNw7FK~R?pKsXTCL_OzT7<X1-;@4PBTmR
64912 zHLti7)b;@1+_(t$6F)^T;3tFQm!RXn4UXR#94~HMByz#=PX)(_IuT-U{O)bXKN}q1
64914 z8A(#Hm}B@-<s|%M2@MRd)pC?qcJlN1d*kpPc%GPoERevjU0eYCM*#fP#f7kj3F?Q3
64917 zc<shD;rWeI;rWeI!}DYC_u(Y**XViUU<&?Lcpm=N@O<LpJHeMWj-m4kxNqZhI363P
64918 zhv#D#AA{#MPNMTF_{_%1=={me@wzC0-`F^Ybir;gUS(Ip1IAoxz>*;O3<Jhoa>Nn|
64919 zJY*Mz;gID8UO__^D_L5>b#j_H?gxGTx9_1opFn-qz~?qjL}PMd_)Ky5Id~qaNG#C7
64921 zlReBSaIF-E9em*64_M~iED6g3Lb-Rd6f6mNKk~&psjJnzb;CG`OZ{a#YI>5sTFKit
64922 zj8j&{>My6#;X8((fyH1B{5^Qj#g|0=eaYtYT>JnmqxHywIq-8x1Le^9rzY@exN#%d
64923 z0B@jbi1{t{=ZgiOB!eAq1h%z2%;4-$cpraMzk8U-6JX^u<cpO;wGw14B_{&c=Xjue
64925 z9!-gypc0C08HnM~shXmzkcjN)-+*5MuOYq&YM|Y3gmT5U26g~+^t$aL1B>%IMhUaL
64926 zRa6A#^I_>^-20)BAY__CT->(|S!78hAp`;uKu+`pL5rz0fjR0|porkn%?fHME{m?7
64927 z5NS+)O(|oqDXOEWIm?XpseR+(XTWPVKKdWjXI&P#-TQp;Gb4SL1pm@~CJ+vP3Ve>Z
64928 z9igKK-hx;3|C#+N3ex-0TksT*V}JxDW`GzYdsen=S-CyjveIl8f*mVaXSidfG8t@G
64929 zF)i6fdi+xtA0YpZvBBfuv*1s`29)3!(F=6?r7rjoSVcp?02X`#{32RPC-FK!$KM9O
64930 zhd!6k?=J-BK^~_oLW}=jz_-9Rz@LLZ0sjsBA-aY@pWcH2&OqmJ^3OVSpb1_NUIPSl
64933 z@<w!L3TIzf>S41IcsqC^FfkNh9%f-0CSe@15KC|gotMB*BZl&m;7Qc#v#9N7!2{qG
64938 z#gX!E+hHs}A@SV&q5NI1oVl~8!njgPCimoW6PBP-lM^vHZ4_j=+9+_gEa^h6QLo#g
64940 zieBI)>I-to^HYrIdY&t5HK(YGd?LZI$pi;CL<V*=4jsz5suO2r&viYCPWjz$6gtgv
64945 zPun!wF|BOGgha{9x-!x{cmWY@)L23)t)Zq0lj+PvH<yX~-+LQXdi#CfdJAK*eyh#%
64947 z)8NhE6k3}!LOB`ycko{Wyi}34a}KRlTu4C&e+#}2z6$;b{5JSa@FnoeXx-wZ9}j}N
64948 z5TZKhHw}rJJj_5o0CW){Xc-G%w6+nu2J0bkt^=B(9|0mdA%cf(j7%IPRf0T&zD=i8
64950 znt_B!ZoO&$<SzGPfJ`#-g=gyP_S=)hjXc)BF^bNBe**sq-UuEGP}D`z1zi9&sDST*
64957 zNq;=S@^DOLV`-X&|H8ABn-<ud%Zj<q7|Ub4l%-bds|YInOrbM&@y@evz3;F&IVqbd
64958 z1zQ$5)>b)Irf5@8VysBhor?O(hhKK_0gWaT$=fF$Jn)uVxil--V!`jabf#|jnT{vv
64959 zWksrM-93mmCm5;LDzT=BpmEQSzpX!UG&aSHqISA*|B;{kG?CFcF>X$E1lmfb#dvoQ
64961 zCq(e+|BI54WgXEZjC&@_Ni0d|YTB2ZxSo4lvXM4ws;L-{h<S=j)~!@B4Iw9SoPi;g
64964 z;UB|q!@v7~*?SK-NzUqC^s8K5)s?F&cFwscbeKFnX=iqKHV5r!S825hs~kZ{LP&sQ
64965 zM9{rpOf>oVVPk?w7A9S60~ZI3jlni>F}@DiKk&QP&wy=$rtkMvRrmDl&MXq?-RJkv
64966 zGBeeE>I>&P-#P#Dg>$ff$2M__eX|z_X5ro776^He+N7cS8-Z>L?kU`xy~#TUicrlW
64974 z=OJT^h-944V-esg5%+vf%MwZwi<?UPJcy;t*hbMR5GF`P&D8m7qC!ML#*Svr*U}}z
64975 zCNbdH;CvZ#92DouOKRkwp?luXqW%JAf|zB-&KEHYHo$tO4M1l_UUbO@06|uT4Irad
64978 z`0f|6-^M<I{U6vnU<vPs<-8wz0(%84>9w%D*TT~7gJs?aOS~4Ado3*WAT0YJHi|W1
64986 znIjAtYZvU3?B0=NLRk`;mE@$^O2l0z*2xp=LTfpEuw$jBXO8f(PQf`z6((X-(v_FA
64988 zc(^)cT*-0MNB_!=s?!Ahv?*g<S9P#Yop{@U*T=_G?VL7SJ-PfK$&}Ad+_^75W=&2y
64991 zT^q9xw(Ar|OH_!`Czdv=`B?&&1nAn43^96r`<8MUJI|9W4IK|YHZ{R=T3oVNfss-P
64995 z!oiM{$XMi*r7pCDh!%547riEbrhK5<T~3Xd(Y)458%}cbZ<yn6JMe~hGug>&)1{-?
64998 zXGxODhIla@*O!u-<wi{-R%Q5*uKu@#)XYW|oTj;u!5i^d5*@Is@sy*<EJ14MG{|gi
64999 z^J5b&XT3Ro`!r6G`KzYxKG2NEv3nNCFl$iw>}I-Kl#)vNrq*4vWah?uZ!e8ZIo~0<
65000 zFl*U+Fg53j2_Z5vT{Nf5pYmn^6>fZ{G-XHXX&h%6-LbP8LCns7Ov!}_Y4f>atO942
65002 z<@3)Uou)$AU00pnyQh(1SeDAtILWNmae^e*eVj85pj~|wuoQ!{ccCp#z}(?QS-vBT
65003 z5jY_3fbfpSC^qC>uLt-kv}JZRkHFI5Aeq6;g+)*dI#czG%P_ozpZzi@mU;LmC<I07
65004 zoBJ_^Pz3(arAq0}?^Xas5)VCt61)SRxx4RPTf@NXUi-3_KK_!sf9dXDdhF4A@451d
65007 z(PfDVhn1(_hwq6Mm&;ckZXR^Uqh$L2!^cjSR|<&(tGOfH`wkp>PWMRuz}n^-_V#0o
65008 z*Pfe-k45Z-Gs`!xttXDoM^|RfE-zg>yAs{AfAjs=<k8tX?%cos&O2s~I}RUV6#Q1U
65009 zv^LQmZ=S9nPG{30E}dC9eY!c`UfYnL{$+*L`LLKx;jf``-OBux&CG1HwRrfB@z#}d
65010 z)%hIt^i3T8es1qberCR~_o0XO7UyR2%{`%~4;lFTLf!n@?A(Ywlc}sMSC-c*GwjoM
65012 zgU-_WGWX1G4Kfs%!{&$!QrirMv>gQfo+CQJHNwH6q{vqKZ@Lnz=z80>(@8UI@*2*i
65013 zigqS{`>}jc7sIg-AqWI+oAr$o=Nwxltf~~^>iP6#lliJ9tLjuaS>|aDBb3tVW-6Jz
65015 z9bzk2+}5$Zd?Cm#In?i=j-y4}aEPsFm9dN#Huwm}Cz@5~!E0h^T@_*>To6&TBx5dr
65017 z>jzLD{}J}lASLKE!|_dN&%Te7*yQ#;26$}uPQt(aHF26}shrT*U&)LaRb3-kHEL=P
65022 zO7Z%gcsBhG#@8J5d(i0%<KYF-$cM%kK1SQRdgq&K8~G?~GZ8wzzi^<CJCxx=3@g$h
65023 zOcXGzVa#M-I5C6zJ9X{c_?@^Vy1Df7EsaGj0{grF6)TywOnM>1bMPI8WJ_6+Xu>hR
65024 zYc%NWi3g6_y6(@}f9rh}KTEs-EP~dDnmO;1v+Z{`h{x-7mm54j$LpskfJJPv-%r0s
65026 z5pr>_t}Umkf-Ng~UTv7;cEplO7AK;E`PqXNDOOIZ3!|x=p^9+|DlC$WJ9gW>X`-88
65031 z0T0^4=_j^?Ihesda-jQ15`3W2sdUV6F&4{ns-bAmbB802hm!H5r9=7rdM?Z|QD4C8
65032 z=5#LWPwC7;ImEM;q881%m`ubL<fxre(z0yOVO4fGUcf^%AK`M-69@8Z>C|ExO1-bx
65034 z5Z;+E?@KS30XqA95FA`yoSP}4v(NoJ+S@GIfN8rJv)~F`kR2+YZ{Q-qMmUDExh?Y+
65035 zv&F2rlYv{fB9Y6`l|9*FTZ+4)RMD(h*b!G~%&yF-5$N0S+?Lg=t>^TLxs%<SI2O-T
65037 zzMZVb7T>&Js|dPYY%TNq@&;#JY%Lq-YRhfJFtd@GzFCrYGMnkebcDBeFq_(HriGYf
65038 zItDVIL-unYfXZ~qiyJ?l)`_1kSop&H^dvg9j_sp%H?0FE?Z6^)8;=aVZ)dA7SXzF5
65042 z*~Yn0tnIcNrBr55u6ew3q16u8lc_vSQ?`h>w({chanFEn+3y1Y8fIV4M$-c`uA}3t
65044 zk#qTj<4DZJm@b#11Z(J4Wg%{<7g+x4xyioS&s$3PVzVFaIBg5^EiCX+4L4$<Y@}-0
65045 z;0|OT1Dpiy?)bWQ0T{>d^-kU*z`mUmQoz4Xf|IK&3-jcUMF;_#c7_N$@yQ1a6h-X}
65046 z819x8Rip&wV#JWyS1fg;goRX?oKVz~jpKU{=NFu&B-IIm*%d$BAj+x)i`)S~DCK0b
65047 zKzUP@<M_0JcaK2yq@)rFFpMQmf|>5*DwMr-bg6Z{nf36*t`g?!F;xL4v6Iw}AY%(-
65049 zfJ2RO8pIpp(@_s?By+J$bO*4(jYlUD&vcuV6*5<MT#008k|7c1==Fj%f*bHWnTKp-
65051 z4t)XAlzbZSiC)>K>6HT-U+=yf(v$<5eLW_iVFDUo&wLfqRD!x*yx9usY6UdjTp~|E
65052 znrcuEw)td0^JGBd%gpB>O)V&A-)1JD$!zQUk04DwpqbyiETFk;Ti<VmG>w2}dh>Gu
65053 z&F8lD{f{BdNYI{-_ew#(O56JWen>MK(CqJp1Df!*zW)`Z84K!qY;!WGYjRuP&p?{-
65054 zpd4!RsetCGi~8Q&x$l8K`T+J)Fo9x`C!xAA4T-p9F2@Nl5p{Hxyl^H#<>PHkF$J_>
65055 z7{|?RN@(aG%J5`fbyefaiSjfvEllkzrW+AU8C@HREUwNem|9P$6}xz-n1m|C5{l!J
65057 z@D`V!%0?rEclo@_N1@)xMsRe)_-B*`s{=ZTxNYg`wlr9CBuapVl=N1TFte{>$blZ_
65059 z={U>NL?}NJp?Q)HYa&a{PAHNg5ULfmIVKzuY1+Hb@ll{-*AUkO+rK@^dJ!~A@fd;c
65060 z^)81Km~Y8(=$vNKkj##ev{}J|3*s$wJ-nZ<$4@sfbWsZvaEf6mno!LM6{12o6=KK`
65062 z>#y-JsDdeoap$_zx)(ybpIDdnZiiwdg?Sg1DBy)VMtkHK1%-BXrPG41R-?HF!`S|)
65064 z?8KExNeL-f(OI6CHQUniW&7xXGh>1fW=&p;i}5<z@3f_)WYw(GcRms;$SlvN(psa)
65065 zB_?!9!|bdRHkCL=2-&)mP`RkKu)4-2^O~k;97|EmssF9{V>u85?7*MM>TLDCL%Z`w
65066 zV2wV1n9*3+;x6V-3i3y}B!76O&!2zp{Sp4#xB*(w=Q|9Ry4{285XAEyfG|}Y-{)a^
65068 zcCck1?3DOB_-HfSz$h*<HDR^(whTR1R<TNmolKZTr8QC%wM_nsQsPL#u0@Jv+hj!S
65071 zZZXE&->3cH3SKfiZ=t4-s{+PAA<<gnkwT}sxESGtm>g^Baif?hnVeLv#EvbFc49me
65076 zAI8&Q0o1#dy2}x`KYBa+7Ykq^5gW4UTfJ-dr@wb|br6yf3i#GqB;$p49~gIMG@HBY
65080 zaaM{;V!|L<k}BV1Hgi^jfu=VMCu>n!xITYbg403-Lm|^m)w@Y|%%pibW?|eZITN+&
65081 z8i6T-m2e_PLC(7&TcJ22jGCVC?#jOw$RPD&Vr;5#wz{^GQd1lYWK5=MlorB^q%+Xs
65086 zb*-{k%dbQ=biZNdxwm3e>Colv_MzpB-7dtl(N?OsR45-hJ)57*id;wxnTnjWEZ9Ee
65087 z*?b<hzltJHW*l1*1p;R=?~=8bAo}7ZH<TLNG8hUaBcu?|(tctE-$XElL4wdhcNi1}
65090 zdC8>VJaTOKqB*8mDTa0`sTP6-9$Zw$Oo$URi0edq92x`>$3~W~UC&Hhe)w=Lejpdt
65092 z9xh@OQNnOqRcI)IaK=Lbv=8Okc@*83r3vahI-`uy+ZfLTjIWmSnHW^?k^tw+I5y7u
65093 z?9b;1BjAaV=4D)J_aov3rx6Ect+zB{SJlYK-rU^mWATb(B;9x}8+CJ8Gr~J&dD+dT
65094 z46!zs+c%f1UuEzyEuJ-xF1?Bm)7Sx$;|PLfEjN~gPCre(QPOMs+pRMb{+KkpRO7FO
65095 zBT@tF-Mx|s;fe{nT!EO*({BD%eZtE-gf4bL!?po`k>DB{-E%vVPGO)_NY&Cc*VdFU
65097 zo4Rgc#C4}9V^ccT#8g?`bI*w@-*6ggF-fpz&mVS-a|b)ubsLrH;@k;Cf5D6VF`S1#
65098 zzKNq4t<CNz?Zp8yu)%VU=Vf^^1_t3-;cG5%Q)ZE(?Me{xwx2Z}3e~tDC>>{*m*}lj
65099 zY9*Un9D`0p+~%#78*Vyj9k?lTcKXF@Yfr3*A&3t1Y1h&m>B-H%dt?zoJ*3e774kU-
65101 z=JUAVt6}Zdi7DMt#?l8`&8ru#JG*asZpnUVB`-;GF_$i@qlIQHw)eoYF;XnfrzTt_
65102 zr4%l&SNGPAPE74d$GdZh6Q{8kr(&^+(MY-_qqwyBP%Kt&tmQ_}I;}KhAzI=25$q$%
65106 z0S^pt#1As`6UD~sYC;$TaKab@Qq4TZBkUgu_KJdN1HOKU=+l!6&GGJhD-vNwT$4Vt
65107 zxO(W&>iSWqFq?d!JB?y_^*#yPwE){Cfbvrz7HTRgh=H_Y0A&FP-mY+~Z#_M=1K~wj
65108 zpDqZpLvOMQYqBYm{&Fnspz_}e%fA|yp9in-Pq0Bx6B$n%UFJl|zvbW=N4eIaF-6NB
65110 zBqAP<nVRm#RIL)t)v{GNLJ6*1D^MgK9WT&Caw?syx{+u~Gxc0DF_{-FjvzIe(Rkip
65113 z-*<Te_T^sK7ZYN>E4#deVwWL+g|82W25L$QMNWl02j`(-_OsH(FKws2wJO&$)tQu;
65119 z4}}386jdQ)$U(?J2JsX#0L3Y%?n3&WAW_hjK9C?hg+IiyEFvW+^5IL;c1ydHQNT-o
65120 z=n)fMJQp+SVj!D#3(-PElc7Nd4(70fU9Qd+CZU-vMAGi(NHGkul}Kc>b6Sp<!-|^7
65121 zQn6fdEH)D7M4Gn^OT!~{vADWguJR)E-6xw$z2J_-;v6d_;wgE$>FJ9%L0+AMywbsA
65122 zz8vui?gb~6F%-sDRFK>31))SA1fj-dZ-E$2rt{l%<zNdG1ykCJW9ME1(LhE({|;8K
65123 zr;H4RV)XUnoo?Y7hFMPT)$@@G1NFZ<I+B-{;|==k6AZ(%suT_h{2T5_0HXIRurD`z
65127 zY;8A6+6$h5R!}boC>R3pVj*-*$HqV+W~ZIBhQce+z``unUlR<>LMMnQx&@;HrdW=n
65128 ziF`zfl}RI6Z_ii97BVwhN;ECqpu>XBu+vp-q%<<Qvai0s`kyirBk5Atw*}Y2e!m%e
65129 zs~3amr^7TTj8a6~9!AOZukZ|m8b6*C*4mS~Y<2y}v3-d+m(8r@=;^aFSKW5^<=5Yx
65130 z?3}EgIsEQ(C%k#|PT0Q7uy;V8|CwN$Al#t2ePtkQkMUCGNL_@}m&UFY9m-LvQFimI
65132 z4_-jD+f}lfFD0$Cma-%6RJOJ-Hf_W?t8AMk#ek0a-gJv58;2^5xwKhVY$Itm8kGa%
65134 ze?34wRDgOEDCKd-(p4Y#&_lSV4|^^^J-#D+xTD7M(e=1h2pj7OH=j4+?cDgxeyNx!
65135 z&(a-Ji(Hv1lU$sQPQ=nF$Bc|tr!$ySPgf_SP|k0FeR~TWV-qC6*{+1v9|V-hf$-KJ
65138 z3-C`8N-ISZclc3V{56c5w&n8l3r`?Ah*T~?R`x8uzb0}?(r$5AsteXmyfC>KK)FU7
65140 zcbyhR$JX>(^(4bkUm`h*Vnib*Nd$S4U7VU)g|c%K<oRnL&mHIi-QU&vm?!HklOPnd
65141 z-)BQ?hb0qo2*zZd!IDaVUot5-AI&5D!m-=&i|74b1Yfq$3$?FU(#k92lPO)ctkNWz
65143 zQXY0OeC%SvE>j+MF?{S2`MF>hv?5~_eC&b_(gX`K!w3dKm@`63FIBX%Bd0Yj6bh-e
65147 zgWA`9R^L$3*dSj`(CMV7x*r=NfG=;L-CwlXLtrRtbTWbFYod~@*rqCjI2LDuzI)RZ
65148 z?d-G%_+?mZ2hq@z8I6mCHOdYtV`jv_qT}<cwZ+tdL**lJ==iW0G}h4s&5{CZVIoda
65149 zj<p<5EVW1GlQ*88ym9e&MA2MbZ?{G&-WuR_@V~#oe-kME+#{Vr+mApWgl&GnpipW#
65150 zR!Q0sMxYona~)+~yZ6>wccNQm^;1V~?Y<NaYZ>U!D|;X0L;_-8y{i;6I!96fspIEB
65152 zNmk7`gppE`<KB~;b}9IjXv!&>m9kMHl2+m^I3%!r*xQ5lsa*-Sjd-SQ+r2fHY=JLR
65155 zM`KP5lEfex^mCbY#(e<@sUgnfah{|ZiOrIn!8;UefD^6~mx-<@$7NO~v5+ZFD=8^U
65159 zFL3~t*8nk41mhluiYbK)K}C-aj$Cvw+!K^)p`0cmX!3%t20Q!cys4j{ba<(|p!)$7
65163 zO*;)b<YUkt$jA4ivk$$O6SslqkRO2aFbBF|Klsh9*uIgBYpDuF;CrBrS!y-vP?e&U
65164 zIx7P|CTZM-W(j`91YeQsL869q-|#}S13@B1K;H=(c4`Aq6!M)Y@`&3V0W|d3XyReO
65165 zKv=<eS-)`F$6GtTveD(Mg+i%ND5O~??#rLvm%qOIQD_G{RZO6+3XqBY^Cu?lfzM$t
65166 zS09A<zza!Tab0)ZNM~7rO4>qJl|l!?e3*}h>4)7hGo68-C;ZQg2}nE!zd+xUi_vCG
65167 zbUK!;6=Q0Ih~+q0GE<Bwu|h-;-e7B`DEv5@haX#Pv>6qhi6s$!!?A*h&S?f?0LSEm
65169 zkl>J1zC^r@jWCqrl9sBw=sc|d9^~^=9-m)Lyb?T2YOov|_DdK1c<sYwF~bi>8HeRv
65170 znk<yw;8y|vB0kDmBqhcuN7mg^P@S#lE*jUMd|2Oad-eSi@d$iIfzmSII#1uKnhIx1
65171 zTvrH`ya-L3AbB<fuMpwh;Uy^9g4|~j<UZ<l9R%eb-SNwf-^x~Vxq*iELb(i(9EvrA
65172 zqTrYXJ(vnm@^6xzkkd)ng;+()K-q7K<Dx_Vv7;$@)y~VBPP|C57$cgt&9oL{gsRw(
65176 zb2mIAn&r*UfX8}0SXZt0@!s=cT{QrLOdQV-?g0E)8k8rOI0)_~j{^gw`bat92o&i9
65178 zCX%Dgt72-(kX==!1Uh8$av@Gq;VW1rtYOewkWrh1_CS5|`=0;*Amr(zWE3PJFPq>Y
65179 zuZ5PS;W#$l$fv>(p`ZlH1hGzg*@#14o-njBc!zhWci8_w>-qmj{k%eGsblBwH@aG_
65181 zixlHZoD173!AThcGwsXq)2z<wxrtcp8i}|*K_Z_?kIFP-H4=)%K%a%KsyNG*qV7qI
65186 zxQ-_0sutsoT~IFM-=BK6^Aqs-%y2yfIy=`wHMBdZHVCSgyn51wpq^~htA}`kq3ozZ
65187 z5)g-mVLg$kt#8#6lnd+mGq0Yv^h_|<``%VP<}>Y2a@X$sJj?wAEceWCxy&==%a?X#
65189 zHv-$?M#419<3=K?3%Rnvs0`)AEyz$?MGZ6^6E?7BGygAWAJIDo+xK|TzFELMH8G0X
65193 zXe-q9-|(J;wO0828{YF9dnCBA_i>CN-vzKAe$q#SKm25n#|(m@&2M7g$8Lj|u?Y@=
65194 zKk2F=h>%(s9wHB{EYFclsE^!>9E}rzLI-;u1_VhF<U?L?V~jcvLM+CFm}`N*ExZ58
65195 zF-YIofu0GmA%=Z;>pj4R*#2wX$sOJxLlha>;YEfGT?RrS_9|4uA+#@9EbiO8(4Cns
65196 zHjB+dzL_nwcqWQ22M`FgZM(bU-{(ks_c_q`<c1IEn*Jhu23^$3Z0!=5?RF%hH^#>;
65198 zNp9&-A&g<F7GGN|uhy2QwQyF)B$wgD>^qZLDP<~gJ)8Z4UC{HBX)9SXa&ky0<w(g9
65199 zjfRH-LGV8~#&7V(I9U6J&+qb{-`+b8HhTX6$NV>X|Ng_LgE4=4;7h!hI0ddFzKuZ{
65200 zfe_g9S1|uetam&3A$Sx!0f#2iRUyV6T<!>g5IVw9C<FkQeuAiM-0hNa%l=`w#lQ(Q
65201 z!UyZ1=fG3oSFjhtS9DP5W@YcbDJsj0W`(YsV$b0?063k~QMu?U5-}*38T>^*G^pYm
65202 z@UIu3zrqh-#X)t?hkps^FG@iDI@9|H@Mi1>cplaZFb1fwHJ^q3!?7nn+wb2$L0{`?
65206 zkNS7M`}d*xm-((HFj-kCa+*L}5sBjj6z7IuaiX@uYoX~(c1E+~G{>^_u!ylvbHqLr
65207 zLp*w%I1cN+2P8lh<hz-C+GI#CLe%z%XBZH8kiZfsP!zFk-@!Y3<2~zMt}2=?403P7
65211 z%KMvDtjzH`M;H!e(yy2-;d(jE5ExF<6to*SMZu<plzKwfoU)_k!fc@u7kMK`nHHCm
65212 z7cnU+DoI%uu#hE62|1f&V$9|!E#pi^8aJX)jw4}`O6NE}?#M}%)oa-hbS$xuAct7i
65214 zG_ZH^wllsp^xMLn7^*@=Nz!1T{ibC(MTsKqPL}3a11oh#&LpD|${-Y;R>FKj$?YXR
65215 zqX`5TBf{a3PKG5;awSgCUhC#Gmt>-{p-8q!C^?CdStd;J9Fo_2p>BPIe7$$q8uqIe
65216 zC(wbybrZw(d54TpU;x|`-QXrE4%*Fh5>)Xj>C0|m5LaptJt^n|GkkVzXmH`*rRbQB
65218 zOerau(FzgXY#O{qF`+un$vPL}j06SsU~i%~1%4mu&1!#-b}$Owy~m6n8ay*>5Bu5f
65219 z+wJGG>GT?dQjH~S7S=6>J8Uk)#uE%1iL-K^VF((ROh(G;(5_`>L?<j~bpaBls@24n
65222 z7>mUwW0TGCeC|>c*q^~ecww-e?{Sd1Vdn|!?=C+HF#?xKvmq-J;-e1jfd?fi%5&s<
65223 zw)UO#8rpY`DuaFJ&6|y^91=@eN^(UpVUr$cP-5X^)#KlLVBg+DOyGG8o!O+RJAByC
65224 z`x5-|>(m>;G77+tqG6%y5=U2J+arj99U_RKGbkGue%Ze?fdV@*6j;WV(WQw@5M&m~
65225 zJ-HP(WZMiD3I7j2ypE5Wy?b^djurg0SQpHAtdb~ewWu2+(EOn&L(s>f`+j+^V1`3j
65226 zD8yN^yQey_x8|@64~Lj0xmu-?sA##G#fW38*s4rv`Pqh+6?j_+VH7EkCMWmmOc({I
65227 zjk=x4!E0|mSF9h&jvY-L`#+CKDVY>UQc_w^A03%JHZ|gy`=_#JCY#GjWfZ*<E2*`U
65228 z6A-XRa`mNgy{JJeOz5$&GnJV=V6uXT*QR>^gSv;(ATIeX91)tj=jp!-qQLy!0F$9O
65229 zFz1PXgk$w4Z>(+sTc6)TUI{;cofp^To*(^FuNu5v9f~32)4bj*{}zbiSV-~Y?TEl1
65230 z?>AFdfetu~#=Gf__sWFxQ;zp&qf&z7-N8B+jCZ?z!FYQix=<bgbYtw94ze2!Q8Z2o
65231 zvRcjRZ+wYhg;`t~ed76L)qu80uNKg_X6qKCH1}ZL9maKPZ-n8{Ai2>_^l0boTc*0#
65234 z2p?__?&Sy49-b(Dj_u6Isu;7Byp`c`3NkXH%Jrn0Q77)07(tVTPwIBJuy|OGL?x04
65236 zBC+{X%X@BExn*_=@^|!bBbkZRoP<nRm*6p!XXwd7_wOK{$3NxE{L_!2-8dxCc7I<5
65237 z#c}!q)r2&k3}{XQ+NYuWG+*yMO?;Q?LYm+8X*Qn+eR_{Z>C^mG?-Tgl)D)!od@#Sh
65240 z&8N9-nC92XS3{aV^J%a(@FAb(Lwy<~%fCh*fHYtB^~Um0DFKgPOFay~|8uX5JD+}W
65241 zj}H3eGZ_anfTwOI-vS}<HR$&Ksg)wjQ24%GH3tTk7G|equ^(tM=S3<&QtM0hK>E=i
65246 z*=hW51Do+ry-oam)H;0k>%q9ae)IFeyPxmJFYA4hG^h@w`ASg!=H`b3nhy`fLHiDh
65248 z8I<#-{@lPH3Cg(-JmHt~M86!==7Z$7A<gdu^Z74(p9;$PR8S7;`#(?s()?af*X_M8
65250 zGGte0ya<`=^YNcD66@4NbIcFc??+<I_d|*fOhntmRNIY15T<ZwV(e-bLQ+nsFB>XP
65253 zQ#I&$p8}_U>p-^?^&%*vb7#W9$OhLP9CX!mU}O&vgJ9|xn_tiVw#FN<U@Qo;=>>op
65257 z-QLLW{6^Q<+4tV?{)dKlcDmC-o=AUqx5l*H_eTaJHXNbqLU;u~({>(XN(^Z>$ubzl
65262 z>6Th+Tvx>~RFJdSEIpjfq#psuKgm7}ql5TAa2_+}&{8HES|2u;-Yqcre-8rBC7P+x
65264 z`$pnM$!RBb!Au_CIOMdh9~--+t|VoQWJqI-b&lV1|H2B+vBjm*^5YFRiDQhO87t12
65267 z@^1w=;W~7(1W9vr7z4b6`~jr-NI+BW1vskr`Jp-SCmzjj2Q(*oe;m;K@fMCEF!KL~
65273 zh<ZJW`-c6~8_D-VnlA>tVZaxBnlJQe5a#_Fc{il_Qb6+{^cp>ySN5?glrQ{`s5gQY
65274 za3#X3U2hHO*q-Q5xdw#nEL0mS*a|hIHU`nPx8YQ%ez(l*1uH?jLa9`$9iNWMG>YoQ
65276 z<-_}j04rB;GRF?h2*pmtaV|d`U#s*%RlKUH6EjwtxN27`i+k%1AE#ap)}T-9@f!IB
65277 zC-?e(LFy;=3lOha8mwV!)bJJlVWk{6&KG$GC{^b+jt`dFcIJ968>gG2i}#OK<|Ky4
65278 zS%C~$N;AE7<B{AbL^mNmq1y|E!n9Gy^DIw$t8wv)UKz6}f+8X(I-Td^<=r?>FaoDK
65279 zj%zO0Ba_*Oe=Wbh(l}K(cJJk7Z}mti+lhVE%A!-BO<Ttvy{>#@5wgCf6{j3JOxO2V
65280 zmPH)76vlyb=9Bm|^%6KAz6SZY3g_l~!9?qI-9PZ>#6*8ipf#ICDgq9G>%sA^yfO&=
65284 z8?nIFTtPkv$Lp^H{q-a827j#HFl>w8M4p2*-wbG`z{5Vx!&~cg!8$m>_1E%x<AF{d
65286 zuMTv&pPMC!iN6YU`U}9*6L0I_KGoC1cDhI&3F6|zvM>RBp<mV){IY`l8-uv`xAp$D
65287 zcTdotdxm4f6W<Tw;=}sDr@<qgZ+5QnOM0YVUyx5>5F7ut-bZ_9gR;(Ui;e&GL2UfH
65288 z!O`Ab0nJ_8V&hAL*!Z{iW`OJ0<qqMLfCqkT{JXI~g}TtAS-ZIZqn>TNegA2n;`D`m
65289 zAM?L|?4?0VUOE_$t-g<YV|jZpmRo&o2K_j@9hbn#TkO3O?_$3Oa$pqVYQ2i`=MaQ9
65291 zuX+aoV@z+SaBEr{hMCh1|Ij@I-q?naR^*gqx%zl#vTW6CHIm=c63n(4&tFlMYnB-0
65292 zHvhV4L`JOWsAIdgD+QI|Ns64z6ebi?w%vtkHGW^0def&fydBoc;{CRbVVV?;d-rLc
65293 z+>8?A*eK+}EO?+RPt;X(@(RV-SRWnmpfHpK2L%SD?t<<FMnY~-7jUDrof4{&hdoln
65296 zT-Okk<aExm&+eIjVN1)1`iOj=Z3$v36Z6+ho`mvaVGn?DFc0qN%2OjcL6C$OVtjnS
65297 zx3nKS3`J8Q?}7jdBkn-F*v_)-fCwYe!8as84_!#M(dE$gY9m`jaTm;;#AwL0_~EJh
65299 z^2JNB-Nl%ki%d<(ENdGnCTzs2*~+ZKJ7KNli<&CM;{M&ICpS~X26hIFfEmQIPE8%~
65300 zY~<&|v+2p!cq5xbJlkEs2%lZ_GZZg4i)v?EbLWz&g9jEO$z=HS!t~Xn<&A-K6-;Z~
65301 zO*WBqrG}-;m6Nv}z3TP3{NiY|p~a};NadD&-A9JROG-lV^5<k8%YZR32cFxNCmUOH
65302 za%{k--1eC`K#mvA$ijv5a2HBA9}&QOHuLeBa?GEQR>Q7cam%7&>a~2l6^$)bp6QIt
65303 z?k}!AXH}A%Rz^4N6WxoaB$|&;;K#8qf-YDGcXs8~*{%85{kg~%zklz_Qa*<!q;;tY
65306 z^u8-+6!V65ExFcs7NS@>u~w7BYtq)K)g5gE2C>Bw_#yT?zyaxQg7$JLz;5lmFuX#(
65309 zQ65l@#-C-yrf&3W_BaqzGNY*G10f8>zw~%;<K5RM7}~G<q49-@<(60Z&#2FDhBb#n
65311 zTE+D-=B_jw8(mEjQJ_E3mTZ;=0wxS4F7Z_liu5<QkwB!Ik!m_I>R1Ien^p9*@q6`x
65313 zV9=d}AGU+@=<VPf-~WFe`I(<b{ttT2c6S-t`RwO~GU?}x#lDBlgB196KiaJU8G{Tx
65315 zFLWNtP?iFzR5n%2F^oHugmxg(gIps4xKeULajKPw7BqA$c5y_M)Aq<-kvC&w&qI6e
65316 zS|yiS(89EC%JH0OmG`X=-T8sM{F@!`hXiNZ;qyOx&%rrb`20QZ`QFX@z$3jsz-ch;
65317 z@isWW0kPG|E;s9~97nOAZrwOI<Iu&rLuUuK9r_ts>|(aS(hf_<-f6+pDnZjEWs7bl
65318 zYaW@(of?;1?{JTs=^Q+8-b%0})CB~oSBu_p(1t}R%{`O(icZ|D&0c@#+LheYRNCCz
65320 z36w&ukZ<p-uW%N}NKRbHhLkX6Xd=t;;}a%@K7RLnY05};6w{?RhAH!5jIl;4#$J@F
65321 zqxbdRkMK_tcY_JA1g`3ec__nZ9}izoVFVnJtQRDYK+;W~_w(5e_5$6Z&%q$w-Ow)J
65322 zVz*r6xex;;u!$f_Y$3o~NGWU`%_6pjW?)-_CH`F74~_~2xGXq=?O5<9tA}$(mqep#
65324 z+jH>j+*mv|lVZ|ud;Wvh&ny+<-PQcQm{S$GFhjhAmD&74B7QZLwhkG^pQ3)vi|-_$
65325 z^X%AGcI+*=qOmoFOJ?;}w!JI}uE>%hDtY(D^<<QD${B4mH8v-TjzDTrp?2=z8OW)x
65326 zVxPdLh@y9g*uOt?!O^qe-?uM3IL2tAHZ$=c_K6EmeT7U>?~L38$M68D5}&8u2n<*@
65329 zJznfmroYMXs*8)A>?#b0V;7fPZ_5nl<LKYV-i5sye~EWji}iUO9Mc)JnEnfq)$D7+
65330 zW|+YkS|}<;s*Jsh)f3i+U<r8G7PW$;MbTO>M*Jb!Bzx3HATAAJ4-UzMNz>b0GvdD~
65331 zY^#!6%gGKCLK_1_D9jaNiL#<4bh62$*G5W5OKOHA7>N}n<$sa)-tkox>BIQ6a|!9a
65332 zCxkT8jHwhwCE=1pAQ4CaV}lC>5(o(<p{}dws*5hVwsqA-Wo@f2c0@#0u^~3Zx^}T4
65333 zmbEQwTTR~QdCuH>&zzfecfa4?@ALlg5@yak&&-+fw5exqY*cAZZdqJnUb<cP@#024
65334 zTTKYwFGh9On&aOVKQ_)&-w>CYoRw^aTO&Quhi6@GMT#3o<aNwS%*rkv<%t=AyVghL
65336 zwE!Kylq0MeFaZw8u>1I={;&AI5MnvvUkNd_9q)MjSawi7-FG~Wkot<pk-~}{otYFn
65339 zCdynLjuMy4Q*=0*)mVqXGWW6-Y%S|!U2F-|b%5otDwsW2vT^J%3RS^h4r_#Ty^x|C
65341 zv6b}J5_on)TpyHL4y9vFj)c;WgTF=y`SWq-;?LtSS1$iaxjC+P=1|T1AyqH5Gsmb&
65343 z``7}47lYqJHRvGN2mYy0t5XR&9{gPR`=8UJi#X+@7GbH2Al-6GvkY*(RQ~W>Z>Cyd
65345 z(DxS^?+@tr%SkE+Ak7i%aQItIf8~%W*tT-0Z7-xf9N-Q}d$`WI7ed3oz1&rLFbCwq
65346 zN~jA;PaDYx(z$`s4-h?&wgZq0(z+wS3FO;CO&hzND<QmyWD#4_NoiYww$tHx9F^K*
65347 z<UHNT0cr1+WR%ZJ(%b*0W{c=KKsI6l$-P}aJ5L|^_=}FM#Q9bT=dgN$5yE=Rg-{!7
65351 zvn$AUms8!k;fZZr0`W+Bywh9QU-A!aVpVLIf7U9TX5d}iT(NoF;vPPNhw+g-oJa6T
65352 z9>t@143Fh;Jf0`;M4rTxc?wVEX*`{0@Jyb?v-v2V!$<R6p2zcf0WaiZco8q=CA^fE
65353 z@xypIKb%+aN?ygQc@3}SWBE8fo=@OM@FV#|eiT2NAHyf{I$qBwb1$F58+apc;>Yr-
65354 zd>Wt5n|TXAj?dsT`7GYb+xToghtK85^LBm$KarorPv)oad3-+i@dbP#U&K53V!niT
65355 z@-DuVFXP>OIq%`Ud<8$1_wjx{z*q8Bd^KOg*Yb7z7yLB-OMW^(gRkdj^0WA__}Tm%
65356 zelGtt-@wn~=kwq2jr;<BA^$DEh+oVv;g|Bu`0x1T{P+9{ekH$(|ABAfSMzK5wR|)G
65357 zBfpMc&u`#2@|*ad_|5zl7+3z8Z-L%A7RHuGvtwXpdkUKmJ$xj;jo;4hX7}(r_?`SN
65358 zmc#Gn_wcPS5{cvY@@@P+zMbFCve=`12Y-NVW%sfN*+c9Wb}Qe>|H2>S5Aj|6Vg3kz
65361 zfASysPkfLM;ZK>sj7bV5Ea4G2%^WGhMTCeHQ6gHzh*%K^Gl2w=D3V07ND-+bO{9wq
65364 z(JoF9CyJBA$>J0-Ps|rSu|O;oi$sT5ES88)(Iu9OWujXw7d@g^tPrP)KG81*#7ePB
65367 zc5#QeQ`{x)7Was);$E>$+$Xk+`^66NfY>SiA|4bEiCyAh@rZa-JSH9&yTub?k9bl%
65368 zC7u?~h-bxK@toKvo)<5O7sX5BW$}vmt9VtsCSDhBh&RPs;%)Jc*e~7{?}_)t2jW9<
65369 zKzt+)ijT!7;#2XN_?!4#d?CIRUx}~9-^C&E5AluoR(vPE7e9!9iXX*KVo(gBslbB_
65373 zeCd-5<U+YfcF4tYiR_eJa;aP<yXA7(BYWivd8+J_{c=FAl&j=wxkj#)>*O!wY4Vry
65375 zd6oQw+$67-*T`$-X8A{XoxEP&Aa9g6$v?@P<t_47`DeLB-X?FCcgQ>CUGi>ukK8Kn
65379 z6{Vt8jEYrpDqbb1M3tnHRf<YgX)0Z1s7#fmvehV+qeiP-m8bGmfhtsERFNuHC8|`F
65380 zsl!ycI$Tw#N>!z*VJ2Ox#;S2@yqchnP)DkX>L_)zIz~-Wb*f%XR$etlHK<0_q>fcn
65381 z)igC-HLDhNoSLC#s#&U4wW--^j+(2ESMBNqb)q^+ovcn#^VEFhQw!8WwMccS#cGM_
65383 z>Rk0}wLzVy&R4%t8`TBsLiJm9k-Au2qApdJso$x~)$i36>PmH$`h(h}u2$EmYt?4;
65385 zFX}<{klLjlR*$Gh)nn>$wOc)*_NXV-Q|f8;jCxk>RnMt?>Us5odQrWkURJNDzp7W&
65387 z|4`qkZ`F6|d-a3*r}|O-qz2WH#Vl?KOIpgZERQw93bRI9;Z}qdX+>GlR*V&E#aZ!I
65388 zf|Y0`S;<z4m1?C~=~jl7X=Pd2)+j5-8g1oTc~-tvU=><ptRkz}DzQqfGV3s=ta9sc
65389 ztHP?Zs;p|Oh9$5>mc)`-3QJ{aES+VrOsm!!YmKwUTNA7!tRt<7)=}2c)-l#3tIn#o
65390 zCR<)>iq&8>T20om)>LbnHQj2qTCC%&8P-f|mep#tS+lJ<)?Dj&tKB-mI?+1GI@vnK
65391 znrF?oeAWVMp|!~BuohcOtWK-TT52t`x~=6_kJW3fuuir5tbS|2T4}AaR$FVVwbnZ8
65392 z7uIRkFRjz9GpzO2nbuj>udK7JbF6c%Ut1fj^Q`l&-&h;13#<#R-&z-07h9KDms*!u
65393 zzq2m4es5i2U1?oq{lVH~U2R=sU2AQ&{%BoiU2olB-Durp{mHu7y2ZNH`m?pgy3M-X
65394 zy2HBDy34xTy2sjT-D_>L?z6UA_gg!x2dtgeU#thMhpb)J!`36#qt;{A<JNBL32Tq_
65395 zr1g~bwDpYjthLvA&e~@^Z@pl>XuV{;Y`tRr)q2%>&3fH>!+O(t%X-^-$J%ebYrSW^
65398 zJei&>Pqt^2C&x3|lk3Uz<a-J{g`P2<B2TfW#8c`i^Bm?W_Z;r2@Kk!LJk_2WPpxOH
65399 zXPjreXM*Pl&yk*qo})ZRdyer;^3-|iJ(E3N&lFFCr_s~oIo31PGtD#I)9h*S9Os$g
65402 zmevF#y`3V?Q4#%)F4-S%LvuR%be_=-y({~I3E~|I0*wozbX8;gFX<!!SjUfO_AOfE
65403 zgTm=q-rw2VHvp*|P)8r6n(OQDhE$PFzUAwD{st4^FDDpN*D%iyQzXIBb=|(Ton8I?
65404 zzHZ-g0y`GBu3XX4*VWsn!DD+CYjA|uw|qGi7e2dtz_+5KzY~Il8u0Z%Y=dv06JzOV
65405 zqo(=#`w&G>LdCZ9_VzS(uI%aYHT(LOwX`Ogh-v+u%b}=<S-wSGzV2=xlo2({*9m2;
65406 zw4sPrMBCx8)=ryD5fJF>7?|c;3>>n<?H!#neEppRy-<AX%4I8in(VhRIMuff8asl*
65411 zOf?`}bU+F0hB@@Wjt{5;ff2Sg*sU-m(Js%g1^QjTBG|<T`0k)7C2^!i6|uAObI*<p
65412 zNV#22hvXVO3}RA3#o57&ARKQ<QIPU}HL|NoN@Lf{uRnHfMBu7LNCku=gD_-m7+||J
65414 z4k!fcAh4m9cCja{_VxLe`PSO?_d{-`IqFFQKC5GuLk|E72!bsrm^|Kr(B?(fO>d?F
65416 z--51%BOz-Yf`;0m2&%9h4oBYlgI%lqX<NJ2=(MdJt2%mgcuLoj&H<gcr7MszX3^m5
65417 z>+c$gIZ!AJGOz;}iF_CV7<`VT3^5cnqoZ$OM~}`h8ldG}-Q7CVSO6<490+@~RH=tl
65418 zm6Z|AT|J;!_Pfn1y9c^fbg#9+NN?Awu0{I2cyGtTE+FiT-Y$PpaZVJ~61tJzmHob+
65419 zMQCC={PdWCy0nNYU$=Nkr?00gx}l?U&9OaQ<-IEh+NxS2?7oCj$Fz1V?^@W~-K&X}
65424 z04buKz`R-$tTDmrNZrWt{@%p{BeBlN>Aq-9i}D^w+PgX)BbqxFmAB6A>ZvC=Fi>7X
65426 zX)XR30!FmkR1SlYkGB`e-L4r+2zbc@0b(n0FkA}{6i3ANiv%Pbsh{O_BQb_Z6=kT0
65427 z(GHsgC>UC3@X=;JKrGz6DzAz)!FjcAM2#C!O)`TSg3Q2Uq`&;WFpwUs)-t0?lS6CS
65428 zNT>*#2IZ^4h(y&pn-pz8^(HuNgl;}|gqR};LnXwtR$@anZQ(IO(<{z+djM>|nO}=h
65430 zW>@*T2b|@5tGp)IWP<H61~_-7sU34?M%sdddDqmN?>3w7w%11l(^iLpY>{Y&*|axh
65431 z)LY}Einlgezqz8fe*n@uGOCI3+k@7*p~_rq(5*JgQGw>>NG*J%n&AOpS$Jb07-`Fg
65435 ze2hP=<074KXo)bN*0>OYS4a8f8&g&~<;SoU-VlCzD?{pBS(zM)LSn@@3qeT>siHTu
65437 ztrKXkk8*&Ol~KB@wjsaWu-|h6?e*B9VajFxz?=ww0E|p@z{pT?Pa}<;q8kltWTP|t
65438 zMkD)(#$aYq&i1u98q-=CWi-Zsnw+h!bON;o37VV3gM$^1-TufR8QQ9xK(zyCt&DV1
65439 zE7}2oW*K0!*Gbr_rWgYP%jtk?%{Qrbdh}#u((ZhzCdyAQ$|6!jb}e-WM2)fgS%`D?
65442 z8SkfUpxdf8Xak^A0ia#xC=K}LFnYC4zE#JYL`GX-=3NzQf<|`?9g@3lttQ`~muv`{
65443 z9NV%4#-%|+=v3KSKYbj+Vh{eCoC5}@tQfKZI%3#^N|WoR%$Z!PHu=%)jW*zRr_d1(
65444 z9D`Pm&G0bI_c<{JPpVo>aW;A-Lze&uwiAI42LMJoXrr8?q$UGub`F`UqMMB2RFo6+
65445 z8c>q~wa2(vA04bE4Vs<9x%PUq3v90s5e>hz83VAyP*i(;!Z66t?5d&-<qR#*Ysw<@
65446 z_s;R6lg?fz2fR)?!%NOVq>~?zy^&v~lX_skjB!V0l(T@!C}#<k#`FX8ag<SMa-lLr
65447 zp;{|r&AvNS=h~`0c9M{YD%ZQAh-w$YTOFd&AxT1&zA`=pQyJ%eD+B{v53wHY?!u}P
65448 zLetcT3}--GgCuXO22*Q;4pu{#>`W4&0i3=%1)?h23AES8I>GMVo+Zx2)zRj_5NB;P
65449 zaX0Zzu{O)=8Uo5?#CuJ!-6>3<wN9uxwkcr!wVD{w%|>dk$4+e^+v8jo8l=LNX>~}F
65450 z>NqnAveT6YB-NFs%AEv6$DO1-q`#=Fbdd`N(jk3HQ>-R+uorZ+u{I&J6Kali%>^q%
65452 zdXGK4aE&scDK13FIHWSpjW9YfV5=*>D&CD~uXpDGZFOVZD&P&NNp<K-K$EdL(d@Bh
65457 zgpQo%pLdN62(GzmP-%j-(bJ4cVbnC|Tr%1T!F1a>;H!yrMApO`Q(0n-$F575uF@Qj
65460 zusO~|KqXvBU><28YNH(a+pG#e)lR6j(g}G3w3?%p-mGS`5e<_r1Dre4$g9SHYGcgh
65462 zS4K4&^3-VX+!+Zyv$2Nfv8ysNFspa2C{>%wL|$WMs41q=C3cNYv1>HVg0a?9>0T>p
65463 zb|HXKjZP6TRt|va=E6d=vBFbhtQFuElDT%^?jCEMvqzX47`q-`gIZqK9Nz2da=eBm
65464 z@fs_gUUOH>Yb-H%jXE@$b!c*x+T<#=$;{atdU+$A8xKyPD$+S%iEs?DBb_~Zgk#7W
65465 z;ph${9Q|OF(E&y}`;-U=wcV59(3!P+c;4n7#J0HyXl<cAt$P5}7P{uw7BZV^3!N@|
65466 zL#NB$kolB%nAH_;$bicmIzsk_479x=HE0U0K~qQ#nnFe-!!G$Wh3tPBdrg&E@7$@t
65467 z;I?;kPV@D5F7N8=f{r)Y1k3%qxDIq{$BGCC=-y@n1s<u-kF>N}v>!bZ&kxWkLpntf
65468 zJVzHc*SDIWAf66Bg+cxVDa1=CA-oM}?(18ya=<4csM<Qgn+jByKpuHKIIpi;c{_dG
65469 zau&p#;Opv9C<9h&C-@TN4iYSqz!Z4`IADd<*a?Xwut3iAEta6#5)@h?ClwxRkw9b#
65480 zPJe2Q;|!?Iq@~MMk-&LSKkPphYQxd~v!NRFpAhv|!GAtf!;W@$^epU-4mO*>V5<>~
65484 z&W`@B{$v|VM`a!8h-LF;tz0mryQyp4g0N-tT763w`8xfl{962@^%i5bpd~N`^+Ul$
65488 zy%-c;hrlk_>H53Y*y;LFlkH#!3b>uHr%PuTPGyi09EpY4AuNSL5q2>Y4yST-5DT)?
65492 z9tqX@>90p(V>KVf>ip_;J?j1C>-_3<e)U9$s*0+y`dJ%J_$k%%T3Vz0LHp~Zx<0$J
65493 z)8C!e_1RsW4eHlwg0I!sujz=|U_`AEF*X=6)`%Dvj2LG`j1NYPHzFnkBPJLTb-{=_
65496 z(GcWEgTar6AU_%mel!I6(J;mT#hXKb{US{=?Egj;Ca<%4J7J2s)~7!(@Pn-#E8?62
65497 zZ)k*mJzRq@tqPyq*W2H}z}JUgbuH))LP`El<7RdCE?=-xfBqWn_*xU*PST%unU#%q
65505 z+$i8>XtL(;Ssk6zdwW;lCwMvt>Jb|ZmeYq&F(#rq-T~`xm|RI};#{vZ)AuE<1ARX1
65506 z3-L1n2MCGcO%T62NpPWX{*^oo&euH<j_bSLu72#s{Xslq=;&vicQ^#PCm@QudjcEl
65507 ze9is}-Rv(NxImX_ceO?b>H5+>P-w_43XX5T{gt<~3;B9xZk%)E5jqxWuTKf>xG7n3
65509 zyn&$u8401Ns>D!SN1yB6fsT$9iJ_>DKC{#T7=cAOF=L~A-5rY$^Yz*J(*4VPXo$ry
65510 zPPZfDzYoM72<Nc~b_tX0a`@xy3U(FvPrx5%ud>%5{&o1{>`nF-gx{43jLS@!34XSm
65513 z5ME?0f^dhm1b<n8&45-#LA~)VN6F&gkF$9AlPm%LI7?)y5Ke<Xj<@ndI0ODT{-y|o
65515 zvpUwu6l-F~0%j_k4&i3_ldJ{)6y3JWp}uVpp3P2$a35O>vFq4r5dI}Q9l~d@Uqg5U
65516 z{7H5m{Bd?Z`wfIQvWp;mG4RhK9tfhoMbx*5?iSGfalpR<)K^4n0kqBrYK|g`Bb5c-
65517 zX9nS0)a`)3L){7CyVO<)->bGk_&&80!hcbZK=@I$8^TYhJrI6U?S=4jY9EB3S1&>M
65519 z_$2ETz|SKd2f3^8mM_3BAs*xJb1>j8W8=Yn2|V`@r5Vw91W`8}=-SF6p!Kh^7%Cwi
65523 z=f8XIJ>VX22sm@1zGZD8{`3ve^IRsq4b$7$SYMxS0ZRl!-ve@A$gH|qbvdlCp>7uV
65525 z<i@i{*sE&3TA|jfi_~Ul%`T|<e)XlrtXM0@s<0-FI4yPO^or$E&$#uRO}|zfVlOzz
65527 zu@Y9w%G96LZNTe$fX9ymho4r@QqHflcX<M(&tmi=8!U{R0=Yr#>maW-R;U$_Q=B|q
65528 z?2)Jc+#l4ZSKH}B@W<I8{BbVv=T-PfJ`(&`9t(aFhnDaHUI2bE2b;yqc`f+kIkbjP
65529 z<P*U^njZsx9S7^n8+jx6Q#sgRK7-E!zm0xU>LiZ8pRtrL1OE(uCjQO?2dU&2^UJ`$
65531 z_j0f){3Q<71aH9w|8@Qr`0wy{z<-y6ec>N)=neQs{3Gx`;h%v28UGCYFZoyCAL8GG
65533 zPSJ@!(uF_MCHe%&g;+1vgMYsG4fq#`3&6ifK&$b#SnzKVw}8Jz+y?$#;x6#-5%++<
65538 zmu$DB5dM;bqEHxVK88>uJQVUkXat2U2!&Ayt;t9VNwQ0VYzhOrEvR$`x-O{y$KPJV
65539 z5L*0b3PsXyNMI;}dJqhSQ-8p;UZZv%)Y|EXUj=xb1KtDheGYg#z=s_0%}nu12Ydy<
65541 zupx)oAXtu(U@`o6g%<>F19#sAZr=kwk?sHw-T>Yhxcl3__uIVnJ9y_e-tcYT-F;5r
65542 ze(uY`ZusxycHhVS0N9R)z-BxOwqg(1h`nGN@OEtf-PrGdP51z8!6#q?@D6O}{nz&G
65543 z*Z#Y&BmT`z*Unq4?K`X|1n#fK+p8yoU6=v(V1?_R>GgDv^aaD*AdUA&-$FM;-vw5{
65546 z5dI9FUxWK@LoDJ5KM3zZpB)))r;CiW@sY{kGBqyO&fEWv-$j;#tAV&9z)b?z0B*X=
65547 z%>s8kxKs2yi@+@fw_=$5R++HrV!J8LY36&8XAP6jhEN>gFAU-%FB|5)%}~#)T={Pv
65550 zh*~pTo1#vqy6$q+`)s@J=-lat!wr`v7Rrph2;2^EH^<%{yA__7gWIItb>MdEv{0|u
65553 z24p-6=p6-gj(P#ytKi-S_W`(1z<mks8*o2vh>aFd7m(@bFmTcTd3n)^KNFW849C2p
65555 z0`3ZM*MPeL+^yj51h);`PDl?r9{mWoJ>d3&dr9+FyXe=!?FV-t`m<=T%hB2{$GrD%
65556 zXfOzAz-GsUg9CdV1GYLQ6I`xe-eS9BiU0=t98&}C2yolMfjx<t1g^nBr|J4R3*7Pl
65558 z*srVqfgTKNM|K7EH=uV;yRyll_q!c=T<*YavhyH&W9Gk@^53oNyftW-h$j1N7kl<F
65561 zV!!#{zZ<Lj(AXx&JG%djh5j@41X~u}{TuO0_e&%zPWc$7-wDXne6znn*$UymtIu%u
65562 z7jFId@8!!?um4iM{-bh!hUT$9!bA{el5sE-jY|X<t)J=Oa=;aWD+33%8)lB_v<Ac2
65563 zyYR=^`|u~&hwvw1{)jWkPvOsEU%;P-eFc9b*f;E37(;*0JuIAu@ko}+V|X0P;)%SL
65565 z)(o-Dnq|!vJ8@-P?1I@Htt+YP*msPJzwzU61&1)P{0Rtm@x>6noV~`loWa)vW+A^G
65567 zHi0wf-@v?^^V8WS5dK{3#kus*`%vO^o&@1Z>`{2@3|zNjZ!laTTEI3zxQf<z&!=}!
65568 z8XAIdF_sRq!x`Yez$?K2j;{v)GLGvq4BH5E#EZb+NM-#USI0yd!xgJI_AK}nw3qP%
65572 z_-nWPc)-8Kv2LmCWbl*OiQq40-QYLiZUY~S`w!g5rqX(-1%409q}=v^zlq%leloj(
65575 zGm)wygKD*xEd_rE?q~6MYVU<ee|{o6oFwyO@JmRxcd>X}oy7HA-b8$iW$n~DY!Txq
65578 zaxSuY2g(>&6qK}QX$2PdvW{gyf6xk~st?zm_;z*+_!i0-*dbicZKIZYSw6}VwWWfC
65579 z7Jv->iCT*EPiNS=m)IGo7aZ4=ZXl}GvVM}ED**E%pH6GC_d|GywUITL3Gc?>nmK4I
65580 z*aZFvY3nW6Iz9o{kwre#2q}j2e3!U<FUq-m5_vr|H1r_tS>o>$C$T1yF<cw{3rT_^
65581 z{1~!4$Fc>u`aJXx@PA-qA@<uLl&jy_D|(m@KMeE+br#Z#BiL-f?_e`f28P}u?dv1C
65583 zz`qV{0!ZV-c8zK6Et1b?VRF4^C-fHMX<w4jjwENbP<s!X2(}=McC*6iw-V!MH!F#D
65584 zvy!3i>!9B`4frt$Xm%!W?^p0Qg`ER`4eZx!BfNJZ*so@g(2Ln|v?n-&_5^3rp5QF}
65585 zg(=obyMeRSC^d@p(>~yUx>?=KHmEIX3p-EUu5M@Nt2@=5>^JIebvN6nwyLe{0<}$T
65588 zy~+Nl-d1n3>+pAw*!8qicBA@8ea3FG=2||sg?0(=qut-_K+_XwH=F6*Y}~<CU|Bx~
65589 z>-HJgn`r16z5$y5z<vU14#8hK?VDuq5j=`zLVp~?@^~Ed8TmYcC$Ius6=j7y6>Mk`
65593 z4`r{2a1qX46_Fy6y(XeXG<#hnibVE?7$rurH^pc%n!Sa;@yFg4hl|76eo-rG*}LKx
65596 z$`~2Lm&qKN!@KcU==gG3Cd+uQESKecg{+Zd`KdTU;sbc%fUm^!1$-5ZmL~JncwT`2
65597 z4#z|MAGnLmzhMtBR@GxV@j19d;K07*U&v@vL3)_zPiJCT4?K^y-Lj3~E}^GfHULj_
65598 z>maTSp6kJ#3t=y~LU1`uEtv#vI#Y``g1g4yZUFZ+xX-}t1a~W>D+hN3xLj~Gwp)Cs
65599 zj(^0?Yw;d%`}K1#;9}wV5;&0XB@OUA0QK6a-6c#e^@3XfZYq;de{@u?jD+}gfIkV~
65600 z@0jW>g6CksNob2&4DUmG<kC5ix3b%?Bpj?>JhLQNDVYk-Y{+v4Q{YA{N&dg$n9TqG
65602 zo9RJ*<CDs3u<=W0(75w6=tsX|xWD=i?kNrZbMPzb7bnp89!5*hb5KfwV~A1-eLt%f
65605 zTKxE;wxSbU^?AVszZwX=J?aBzOwO%2H<+-yRC+5wuTfu`^c-`OE9H+lFk#9`4CEJ<
65607 z2>19yWeWfr(AahQxn4id)z6I~HMs=b6*<=!xSyf7&EK3mZT{N-N|H-*ONvSyvXHaQ
65608 zcz<WkBjE3KmF$3X_Bi33mvUa$q5b-KKtDfo*PpOo=X__tgQJxb9!<MxqhrmtMkfbC
65613 z0k|Z$0{pQ7cw#P4G`A@L&(8%ro7-lVkb8n7elhsnjyUMKavi-@F7#Bnf!-<i{9Nc~
65615 zJ{S6rTvz{@`(+^XO&-|)ynwyW{n3Q;!t$aGm@I!@P5>^<13Are{W^VKK)&;i&NJ+J
65616 z;d)ofsd+QNpW}y5?#lz)p0^+n-<b#UoHr1BV+?57n9cthrnlC)V58L1^Gh%KS8z$D
65617 z+kTt!Sp<?(vZBZs?G()~0-4G?H&EI}vwtsIoOg*69&?#lz7x*7!kvE}$X8xKzVdF(
65618 zgZ?JZ(Wm6?1owyohW;bZ(VyhK1nzYQydT^F2Mqm4-q+0dmlx<m@&@yv|Hu#b!}+oK
65619 z&{yPV2Giz)LgxqUeST4Xxf9mdBOKvL;2In-^a%Nmo**A=fBq>y1B30)U+RFt>gNaS
65620 zyFEV1Kg$sh7Crw$2Mks_|0?GAm%q8l7@d~9SrV{sW44UZ_A=i!a<cywfu$%pqR1G-
65621 z7F|?i*o&e~MaEb(e@l^J4~n)H?Qp^c_4#)j>9-ddHX#4OqJX~VKL+lpB16B6zAOri
65622 z`SQVX7Ymf%{8s|FH;aSgIcRBdVR4y}KlMir_)xK-!}&iH1j5Cjxy2_HgT5AcbnSJ2
65623 zRG@8mL8{TVY-ao`$alddEaYEtXEE4-Qaiq)U~DNX^#tP97fdXuFE++<1x>|Q7;sCm
65624 zF@`H>E50)j22CyASsc)x_6u3azv4Z`#(1sxrQ+9}aKZfIfIby0cC{za(-Z`Bx?oK)
65627 zbM#Y>uj+N%-Qz2N|68c%BZY>{hr<5xSN*Qx;lio<IYU2nA6FQdyJ%SVb;FO}3aRHS
65628 z4D@I2{<H907wnqV6kfty{|c{g!Nz>2@CGxscs-6^o%&VinsFB1X+YZwce>&qalw0B
65629 zu-2_Yty6_Bx#0b-^aot9YaUc+^ks$L6%N{=G0A4S;^;sqvDlEIlBY`c87XfqHriMk
65630 zSsL$zi*}p#x#(uozLy*<G3+VS#n5-#{uc-O+~UvBJ~-gPpnWK*!TzRXl9B)Bl0e@y
65631 z4?-mkCDV=gStWt_R2gVf$tfj)`O}zi9B-5u^P`e2C4v5@1hlB+!IH-Ub#?W3C9jzM
65635 zrO?-najh}9_0N&NV?K=kO2SJ5?*_*gI&YY%m7ZQ2n4jT#ODPME*Kz#rgir1>_2u8`
65636 z$Cyl)e&mMg$Cx5hKF5@s@;Ro)l%Fw2lo(^jF_Zqaeo=fw(Ef~>9;#1cW|{V6%<-l?
65637 zhrp+p@;zpeX}`uSHTB6UpA^5slt;IGjag;N)0optd2-8(Egw29P;$(MAU^>zX*tZO
65638 z+dY3W=X3t~pu0aFKEL4j-alR#^PnrmV=nk9{Tx1j8fA}p)Ai1KF8H7ecJ&X8Ep};7
65639 zhwgz&!E%;vDh-SQ=RvyCn@a=z4chn8t)<3%qI6fOv8GV^OsO%ZD}A-p7{ir*P-@zv
65641 z{9v}Xh?(sz@|f){iZt6>6mPb-DAjClQMTFMqI|QxMI~l?iz>|a7L7IATQo7)UibPS
65642 z;b{HgU+*8->kq+yKexUy?E1x;e?9;GpUiLF;~)3@*0~-^@$T`Hqdy<6e;mF)9DY1E
65644 z_xhK6y!qdbFH4pVGrs&c<2(2G%Q?O!_-DqagmaAFhaI1~#^e9(_|QH6caKNi{il08
65645 z=k7oM-FWQh`cL<Gh;R;l|9`E&2=3n+DIEGc-2PD6fD2ylg4g})c>n%x0N&_=FLA+F
65647 zdv@p(JW-2ZF0=cFJ_LU?kAQrh!SkDZnZy&ITiHIy?NeDo{$B7e9efMY>>gT-XZMC)
65649 zEC&hm2-cZnO>UQ8g8$VJo;g@W{@r{B`1A1uANza=zq8$mU$YLqIrJ%>9K_bKCneNP
65651 zw_weOz6Sq^A-rGVUIBIEeKH=xH_OK${0E7rch6>cDq@|8#PgLycxS+y{B}$~R15y8
65652 zbhpSdJXOls5Z==<^b?-G{5_pq-ijw%+3%@cpAF&N0dM2i@oWQrOUa{$CPMf%j^Fh@
65656 z-4TOxu|;wO(dQWOmr@=2=q&jF(fPJPl(d=Rci?x?-78h%Vek(d+J|%&y>x>00;Jea
65657 zc*?R)DC8iWGi7upw+YX8izfWmp3S8kenn@Tt-%{m8rdR<U8L}4fTa@8gx-qZ@AC)g
65659 z7&-fQIz#g|v=w<*f~SUu@ErGP;ycn%r1p0CNARx^c+&h3>BS2I=*IaFQae%Z2Fy2@
65661 z2mU-U7tgv%&^6(uI@~AmH1Wm!bMTwR8{pUQvnkJ`kcL0qfOM8Wk!`_xvY$}qzmV@!
65664 zUpk1qIFZgd9T=R1r<?hYK+kgdB7|E8@r#Gwqh#{=cnbu(QlW($t7b!*rxi#q-!AD3
65666 z^H`NeCy|@LPxz@EPmzmDiPumc5i3?w7%8w^LVB@SqU3Lq-$S@Y;@1G(Durab1y7F4
65667 zGWs^66Yys-l*xmGe@59D{071oh$|^g3#CWe?iX0M0@C+ysQzE#4Np*3HF8Aamjqje
65669 z8R}|@C(4&%%~_fp58)<(-+Y`Q@%9Wpcpmm~LqK!x8^qf}Y6ihp@I`}IpZSA$3(7_E
65671 zd$b;WGluz~g*N}e!3xN2iv;=%9U4O2FB-ZVWl3O(7Yfw7pN6nL;X`=u$`>dz{9Kg|
65672 z=|4r<@==Hx`d;Em^NZAa;yChg2&I&ttnd!0Ug|5)mmux@dx>At{28T`|CTte@TLy-
65673 z-VpY}tr9h5p~Np&sz}1ml=$_=eENo9H`$p_kk{-Av^M-oIf}T0cJ*B1=0QB|%72h}
65675 zbfrY?j+7N-pYe-|t>S6Q2UC7Hh}PqLbrz&~SAg!wNvH+t6{G`OLp{`|m=Ak@5U47~
65677 zhI{25kR};zg4jc?yL7M^H3(@gD~ML7Bfms8y>*Z@bU9grB86Y-ye;w}<+)gj`kpv-
65678 z*<dMg6DTZG6yCUT8A>v5BTKTC-tEPAML4!v?x!?^C^_t6nMbukJA4Y&uu$S?=M)QV
65679 z`&SA_V$Tj<O*X_wDe()N3d-j_i5h)3*^@;W2LDCOUt76jNUrd!nr6aWj5QR~6n<s$
65681 zAoci>#K$*>?m<hAoPxHu5O=VKl_c$#V7a1)?BO=D*q2}|pE$IeVr`0HZAW5QK1-Ul
65683 zk64dscq!H7De4i{qi)J-ED>lpNHj!Qy$$tLOeP7*L~WIOiFZX3zi0YP-ikVc`HS;N
65685 z;giI-D64c2Ooae0@UQWPB9<-DBJCGw&AO0Qat={!JnFLefh_!~0>4PB7G2Z}fWC|C
65686 zNV{_dNE-iuG&f1$H&w6FC~**NAd8at70z>{^}ofo14kODZw0F>vt%o3AEp;$FdxYI
65690 zR=Nr7c6FD!Tiv6!s{7P-b-&u79#A{gqv|pBxZ16rR8Og=)idf@wO2i_UQjQpm(*+O
65691 z4fPi2*M4<S{Y`zYzEEGPuhiG-A51`f?Qc!(8yVl_<xKDjnE>Ny{8F?AZ)6m;^rh%b
65693 z6F8Xh*M0zQE4b_6-9m6x;L^dB*{=3xaJTC;JM1!QcWJj9+%w=_0QV}mx50g*^TfQr
65694 zWbEi1jYIb%ypI?7^f6K21mQ4UCb~rJ${aXd2dYoHZr^aunJ#CT_x-Nw-#WWqnCH>j
65696 z8*+_X97pF%;^@>x9IXn)t%+X%KCS4+(YjC^t=`7bnou0A+-B2RgG^d=i=%TTakN4d
65699 z)7gvolaMm;)b{uRzaQTd41-TAJ=wHA6u%z*ETVZlowJCib=`P6QxQ*Vy76>+BA(W7
65703 z3ldJt*c<R^y*KTMG$=oTPFN?9>?P0%>I7QtP1sEN4+Q-LTJ=q!v&#vz;+sHwbP2RW
65705 zsdb68rkhCT(-LVtH<7e8k+e0Dv^B9l5p*<>G&GSkG?AnwaX$I9YMV$Jnn=2txF*CW
65707 zELbAxa>mr4pSX*B((6Rh>qOG)MAGX-((6Rh<wVluM3SFG(&a=dF^P0JiL^M0v^a?f
65708 zokUukl;iM8my<}BlSr47NSBjHi<3x;lc-inq%|3|Kaym(nlv$KP7+9H60PedkzOQ`
65712 z-X)XXCEuM4I+y%l8q_G6G;SE5bTFB8Fqw2PnRGCjbTFB8FylbbPbPg#CVfmMeZ-4h
65713 z!6$u8A$?3CeM})uOd(B7Ax%snO-vz8Od(B7Ax%u79y5h{%oNhc6w=2O(t?!v<dZ(8
65717 zv?-PJD3$am!^YTkAZ<z|ZAv9=N+oSdC2dM2ZAv9=N+oSdB^suZ{AXN}0r{ow$KJ&5
65719 zM*5OQ`jSTal1BQHMw*gFnv!PsS)?gxq$z2nDQToB*+h-B&FI^`VH#;o8fi@$^;T)r
65721 z=~Rad;$S-IOFHRGdPRB(`JgN5q$%m7De0ss>7*&?q$%m7De3dcCr!y9PNkE+q?4wk
65722 zlcuDfo(_7DNj1zOjmRRc%-V&1CbcV*TAD>Vl1@66Nv%#N&B~(Ev#9heDlv<6EsM&{
65724 zQLQqGUs*)YEV3|JM6oQQa~A1xCUGi@G&+;`l}Y@{B3qP2I-bSIC+*H6?am^aXA%dq
65725 zNYgVnQ<(HU{i1YeU-~AZD)BmtIFdzN&LV4&ezU{3sY>-vr~0Q8<<qI9=~T~js$n|S
65731 z+nR3cwXK`BRk1CJo`cxd#@24qO{Z4cHp<p|T?bnS8Tqz;+1ec+%+t0f+LG9o&9(-%
65732 zj@veYG}^FZw$7g5@aL2NuWXvrM%h-;wt)^?r>!e#y=_Z}v0b~!C*8Mglx>}~Epl2R
65734 zyf5Mo8+(q{uxH|`A-`JSUeG4;Z<Iek?AdrHHc!Tz*Lm8|n~ckuxCSY=OS~ayseA?e
65736 zxQBrE#It?4L(3ESA@Hj>?l~0U-l?36IkQh_uW3E*&apGm=VvS2GhB^68<M#5952R#
65740 z_>c?(Od*!e6L5{0O~xH&&au^O8^?Rl2E-Vs!~3-Vzk+T&zhC06;JzWeXKIJQ6}57K
65741 z=Q2(c$3n{I1fG((L*RLeh#|a5s)^&CKoikwpSXkJy-~PpbeF{Yt*UXqk!=>;;9pPq
65742 z<RIVKy?CyKg$ca<>S1cpPTXr{58y8eumgCT9y?OtX@aZpcMsU-;(p>3?l~;CaQE*F
65743 zkp=#E%z@oarylwRo;X-aXK;E2?jFn*xPv!Bgk!A)wyO?r6Js02DBzAq03XF@`elG}
65744 z@lR;omvoNiAzU?QZwtCtPT=0xLWMWJ?Z^F9kxZ-g9+XM`Yb=*<7AV8x1nw-|fm~*V
65745 zRP)#P7l1!p;3<X+aOaIpx8+kjiF8(2tG_GULrzhgcD#?I{kJ2CCO~Z-MLRPM7VeZD
65748 zg}0UU2+$gFhJ`IE5P1IRCks#6tVF5i9)<f_$?83<p+Y%)9{04xD1~})I-N7BP`D!A
65750 z0)O9#FB9+K&Nk`PYJn%Mz9!u{AdtexlU}@vyCVEBg?8ywD<0DCw(cP-u>-<?wJZqt
65751 zTex5My1Ey_Eov8O5ZcCHShzd=l!fOb{%%c0yC;gkze?cl)48}C$!9A(qw$%*-_SUf
65752 zPS$)Wkp81k0{Q*42R=dIFKKL|{l--Mg$n+E*t;8WE2_Hj`?J=}?7h$XK7>Yyh(?4&
65753 zNJiu<Arcv>8JQ9xA(AN)nGqSHDZXU*PG(AGW=2Nljb>zqWJWme?_-MQjb@}~WQc~u
65754 z+51`Rdk%24y6^k{T=)Nap6k+UU-LWr%*>vdJ+o$gelxRX&pb>2Qrk$W>j7K0*AUln
65757 zPgwp|+5tT$bsK?zef$;T0kl~gp!ad5$&-eD21tWzS^78f9_DK8WZHaPgei5sW{k(B
65759 z6XXfHoX8_}TO?zlzKSKjAs^G%c=gpSRo?DW@ieJhE8J-gr{w4sTi-MFwbqk#TNwEh
65761 zwSl-rPg7jSG=Heqm^?~;OZC~J*R3k;`dg2eD^*-gJD??e-wypu6=Sufx7rx4Kz_v9
65762 zkM(&Ut*-R1{yn8ji+qoz_C$FWb=SdqAD8oJW$<ll4kb<P`{GPW+8^~(P?TS~Ccn_q
65764 zx8e~yO}$4{DBB}-+d#EV_hFg8iBS59Iu<p?`=zesM$yjbAf7y9%Y&JtZoBa==KBk6
65767 z`IcVJaYD=9qxWJX>Z|4S`dQDmqt%A^jD8B3n5S!RF-F%v;#0({>^2pz&~>tW+}0)V
65771 z-|DCIsI9NtshuwMGuLKG{j0L?(PdTKscT48w>(b$ptsSlwKZa{UMf}d=o;W}`Wm=+
65773 zTH;+gCscFai*l>i*rQUJEAA$q&l)(2wed}zSE#x|+p$pRfvW!3pPFNTgt|-T)h}!D
65774 z#aC?o#HY!2mx`;j^5RRjs=eh3``zmOU|VO!2UvPt?MvDCj-@lMEtY<U()TRg-f*gQ
65777 zDV2Y>RdysVwX_sZ>TF-O>N2S^kePa4w)L+V-=v3%AL{pFyQPel>nQm@$KvyJh9m#1
65778 zqd3vJiIS<m@3(B-hT>9N|Guzo>tEMx*VB=v&V0lq>!W-x{jEQ*TTrU4tjpwEbsHA-
65780 z*WJWl5d$)cPB~;x%ZNd<3{^%3tv03`QoVak8v|8yNm>`YkJbg_X<aal)&(D@b-{_W
65781 zE?7wGg7auya6YXIelMT2*V*fB&ra+|Di2m3w4bn_wx8`@XK$$-um0O+@341NjLPsz
65787 z)#ldb)y}Rhsx7H4tzBNbzIL_hR@82-t*qTyyQg+vZC!1B*NHW+med~UUQ&Ca_H^gA
65791 z4s0FVI;?9(>xkCTtq0d{X+5NMLhIz#sjVlpp42+Cdr0e?)-zhqs2BC3bwTUG*2S$C
65792 zwqDkHW$W_R8(VK_UDbNK>Q=X|X<gg;P^;4#wH95cw{C3R)VjI#h1RXD+q-XVZM0c!
65794 z*LPjewxaFUwv}ynw%yZqU)#FQ9c}B|ytbt6k+vt=o^E@#ZA;s>wjJ$8d!@a-eL(x5
65795 z_Mz>=+efvJZ6Du$MAz*0N$tn9AK!jr`;7M4?WecTZ$GE~-1ZCFFKJ)aHMafQ_8Z!7
65796 zZojSlj`q9S?`^-o{lWGP?LpW0_N@KU_9xq)X@9=!-1ZmSUuoajAv<avogD+aj_DZO
65799 z$8??3Ij-}t&WW8<>I=K;_0`?u>L=AFcOKh0tv<DLdOfNa-HYmt`sVrz-An6RyRGil
65800 z`oZ0M*GJcHuOCuh)qQLC%I?GJGwX}H59l7*J*K|Bb5{Mv`kMMf-Q&6^*5`Cjsh?3_
65801 zP+!}9Z2ijaY2DN7PW`g(S@jX!b35mD&Z}Qo-&kMXJx`U)O`T_VF6vy;spipndFR!g
65802 z*Q+sBbl%#zQhjzv_W_-E*3am?r}Mtfb)D-wz4{@YN#`S-PjoNoe7bW-=d+z#y0WfH
65804 zbGpt||6S6xtn1pY8@g`px~=PuuDjIh-md$*9_(JEYLumX$IH9#>At%A`tB9{cc=RA
65807 z>aKV1t=F60CTdF@);+O%O82pP3v|!wp4&aI`|SVbyRGY9-|clLx-RQ}y8BsOQ>oXs
65809 zpvM=Z^m{SAM`t)E_ULCnzPq7+iF9+*(&Ol<8BaI$QFEZ@A`Wj3U>t4tdzw=F-cT-^
65812 zIuCyjZJB@G)W3@URXvyHvyGpq_g6RdG2l&2-FiCLZL!6HO?{r~9Zh|n?L*w*bYMfD
65813 zwL7{eXAOUeHK5NDoW*?CGzZaN-$`>{L+3E3Hg$&fRej%;nA_A@<+Pp_zO`P4Z4G_K
65815 z>N~pbX{wyZ_@!QQ@#Tg-(plNm?YOt{o3Yn5^z%ITY3dC8uRS_{{wZ7GmF8Rdrur_T
65816 zzczI{^d0=V?4qVVlA5gVyHd-q=l;0fI>seE`uJrVcgd{eoBl^bpBuTPp-aN$4Sj@i
65817 za6=zy4r%K1W-s^XBl@Qrx`Z64w}Kc+SsKZ@8rY+caUN!Bf7IJcZq#k_<-+Dg`Z!v*
65818 zoE6{GTSQK3>T{A4n)-M7%Z5Iu^pl1@w{v;pD!#AIke_Sl_U|X_`)Nd_sav~$t)X&J
65820 ztC+$D%EQl^x>f3C`u|o(`Id%0yLf1$RPn>yt8qg^ALp)Z>NAR;Zs=CJ-)iWyG~d;C
65821 zq=`>8^|#ooIgRP)tp0lXf3G=`?WN~_9M7#irAHq#&Ti-y+|TNDB|=KqbbYsw@lB?A
65824 z`^M%Oe8=AJqL24a<e9u@vgaPjJx|MY`4o;`tKt;BKE)>u-B$X-=C7IBbt-<nsh>bQ
65825 zuc6PH{;;W^)-a-}pIiI+=4A}kEyq9Hqwm9;-s4dl=%e66nf?S_a>V$?q3pBz?ES%d
65827 z)Xyw=dsEk+9r_t0^4R9*Db>1WI6|*gRSu7#{?WD8VQjS-P2F<;1G=t|pJ_g%kD8nM
65829 zZ>l3fv9)=Nt{)oem`mEMrKJsB!q+$T(aLqr_p&DS+IUM--(k64*9qeE<^t+`y~U5y
65831 z-8Gl>d6fR{s$}ZA>%69Z`s&_2y4?Om4;8miG7H|jx(ukTa~|t|ChPn>mRaA!F^{GF
65833 z-=x=!Sg7x_QG16zQ!!QFAE~yWE{*SP>Z9Oy>usT;zN2o7J~k8YYU*QrlRJtI({}{Q
65834 zuQu<dB<r(n`|DC+`~w#bZ|WoT2b=1s&=}v)HUD->@>u3FRM!ATch5H{vHHB?v3g%H
65836 zxh(T7M17y@OO&FfUQ5PKr1q)zwrdyUNUqm>8_Sk8w1an3&L`-)uK9FBueU*ZZHvx^
65839 z%V>N@FS)9J^mWFsG+tu=`Vvte(VK=oOV-fYjyQ@tHj<`Zk{>kn9Vb7b<h)I95#t5!
65841 zOVqmmXzH_bCTcv1s-GZF`%Y7zMH!*5xXE`>8@x)58t9r?{D8QU@AVn>%FCPIQSlPu
65846 zGPKV%^u2(WvVR>z?RT>l*|>!%-_-as`?wx|6(w_<R#nv``p&SIDYyU0r#3L=A2DS(
65847 z-}D+icjMiS_v<=@Z+Zi@;^2n9L-%$v#*2t+8v0D>M5T$n>->_@Zaiy9VVTbu(im>E
65848 z@g(kU^)ijOsh4H!qh7YLud%;TG2X6TZQOy=Zj3ZW8=b~M#yI0G#`}%K)VTV-n|+Os
65849 zs@HzTDe5&$seYdN+=c3OfU#7)-fmo?Uc-&c)axC_Rq8duxK_R1$<uB|T0^a&#uT1*
65850 z^C9bp){l)(>AQ4{+1B0Gy~Z5t=hj-|bn7?P24lYET9I+Km0E?d$a>6r%vfwaZar?C
65851 zXZ_y#y|F~!p<|qH{l(g9eARl{dfB*CeK*T^)ObvNw<nC>8`6B-{DWbce>9&{-}f@Z
65854 z*5T^DF8ViJ|MAxRi_h=soc}?mr&siK8~eK6_rfqteIMN-p2D$|XmHP}q3>i?aSc)b
65858 zt<G4rhID%--R4fWl6Y1BLW*^biuzGLdp;-Ra)yl5(f*Z+`ct}9*D?Pz=AG)OL0FS@
65860 z{+~KTD6y?b#n*r8REC&3+Bd2A@0b5#eGS0cM@Rc^75~-p-=~L~Cotw_9V_Rn*ndqX
65861 zLgj|$vnsxR`X6M-OdYL-D)z7Obw)8u==b}p&vdCN4OW@&0cxJ_G~R8DF%CB-s3ktm
65862 z_?R_}J0}0b`kD2B^(*Vw*29)##a3zk&U)I~Y`tV{v-P>2-nv!Stoy5(M17swhlJX{
65863 zgl@g5TY~CVpQ=u4xv;l0bW8Oc)o|VR^OoM>;-Njm|GRG2eEPp<p89Hwp^w+p9&tVI
65864 z&m^8oJf8S*wal&RHQdl!zNXfKzB2n0eg)*FrrxW6-rTllNJm9KyRdDm{>`1Xx>{em
65866 zfmEOTH)EKOn2#D=j5k1OYgBc6$>UXpFtoQbbUVg#`u^$`k26$%-GXwq>P}bhhpVol
65868 zqqd-SVQpb;W^Hk8a`is_Qp5C%PpVvF*SZj_i{4)b(zViwyYKM*U%I>ZfAP-V*WcH>
65870 zPQEi=E$dS%_t8(;`-=5~%5fIkGwoT%MfPXx)7AP=+h3}BM2_$6#5C1SSKTbt%~jnz
65871 z)t#-nMXFn(x<^#ERCSlD@l{!p!~43Sy`8vPb=RwIh3alq-AdJ|@+a<8-94(iPj%~5
65873 zb)%4XPd9$|U(wvDe@nsmy#7@vRp#`0<d^mJa-&Y%N5|&h%(L<KWTO5hs2%1s-A0h#
65874 zHxTCc=|6!;O=R*+FY^mTb==teJHPE?nA3^xBI@Z&k??*J@gw>PVf-q{P~G0huo-HK
65875 z-Yi4k`(HEJ|4g0`rhnH(jjxX)M)l?weM4vSYbPJz{RfHfH7*ky<pJVgu~w`WonoLE
65877 z>65!Yx0p{l`m=I~irdxeMsbUJ-L77%cE47OHR`oiKU-0at;Ujd5vgf4_{1jldO^K5
65880 z-V&nQ8J{i4H~DQ4!_qlp&B8p3T-Bl!=@yMD@|0uUo<n^XN|gS^lIC~&#_x@k1pNyb
65882 z#zNyuDl`AGajx+d<9y=+<8ot}amDUAtXA__qvo<s&F4Wir-%CHm8iKrqUQJLo;li|
65883 zvOjIlwokQB<3UKejlOQPuUqWvdjRwu0J{CZZq0vl-(TJ7`vCM^0C)BMuiO9Y*8dOo
65887 z?>P$_r}3T=-{{R(_TfGI59eA8eZEA+-Z6W>ajS8QxY;l#PdWBP<APJqIdzUPaQ>+a
65889 zeT3?2YRY^1NR_A6`f{1xK4!l@+-F2zt6$&F(@y)`*~Ur4Im89T#l*`_KXbvU#<j#7
65893 zC8}($G&--`d+@$@ykq?6_2Z@;zUk-%Q+G~VHe=AKE6*Hv_Ct%uEuOS^!Q$H&uU%X$
65895 z?!`MU8F|S`m(IL&-DSsIw&82Tzc&AC_kL~X<x4NW^YX1<uYY~`*AMyn)UV&ZY|OIR
65896 z%eGu$Trug2g;y-UV*8a3U71|@%$1F+hFvw~s@Yd9yK4Pak6iWqRXeZV`|43wPq=#K
65897 z)r+pFUo+vFY1hoYX5sP)H;%b$=>zi~*tV{7-H>&o)*Z5L%DNNRov}V!zj?zE8&+)C
65899 z>OI4H#;VuEo)daz_nh6ctY<~fs-F9Myq=9c&-d(Tv^EAeMl}v=Ol{0)%xf%eENiT2
65900 ztZLlf@ERK%&o_27TbqNMqnd{`r#5Fa=QS5Mmo-<Y*Q)0IO;5cx^6R6$$Ah|6nJL~P
65902 z&_B|v;y6QJ-_%cRw$!wjGnF4RR;RJIs@=z_Bjjluzv{De`d%Vw^gThGC*JG-cKvVh
65903 zUiKT>f9%Tc|9AD-{Vl}?W0?88`DgP5^DpKW^RMQM=HJY%=1b-_^JViD^Y7;N-9zbb
65904 z&9P3i=31YzPPaa5onf76&C{);cTeqHHMLjG9p*pGoo0{OFq>+@g-R$)%d%{%VpVqy
65905 z?dw0?`lL0(`jj=(I>nl0ecGCBok}Xqx)r0;als;WT(DFbHbou%O*5`md(aAFx-rX`
65908 zl|&cf&#s}X`n=JyM16v6HeN8cvfaOpxvSKx)2dl2Pq2=+PFCeeFKZ96L2R-FCeb3=
65909 z#0s&>IIj|S5dT5k$xwqRh>|#+_(|dn;-`o+iKh@}5kF0wO+3}8$X)x&Kvl|Tty0C|
65911 zvncU3rX+c$x?~;oPERmBlj%vOCzzgK{~O32(p##H-TPYae-*|Uj1;}&Na_d4nWSCg
65913 z_4V7-uiqc~`aRvR-xGcP9`D!hxxRkS(r?%N{<M33oBM|Uk>R=~xk0VVn~W7|{XMgL
65914 zzgPX6J^DMDu37f2r(OLU^mqQLf0O<X(|`BgaMmj0#ob3K`shR-h3w4{$VfRxj+2MU
65916 za+};?8fHZaJHQ-ds^dg+lsVQMZysSzGLJEjH%~NYn6u5(&H3gz=DFqt<|XDb^IG!;
65918 zR7)KnsoHIhsw)>*3$4Z0h1O-(mDY0WM(Y;qc59W&$JbbERTl18kyTh5txYQXe!<#m
65922 zAMp_4p~S<8M-V3vKR`T+IEi>PaWe6P#19dt5<fybmUtZT1meet(}*V$KS4Z+crtN1
65928 z5-Dl&TSUs6TtWOcky0e@B>seWH}R*$HN>A2?<4+#ct4R+C)X0!6DetuGA2{vCL(1<
65931 z98RR>v_}x%NgPR}G}_dSHs#HxZrr8u+#zpj{D#ojL1PDv9W-{(*g<0ljU6<0(AYs^
65932 z2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~
65933 zL1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0
65934 z(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~L
65935 zG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0l
65936 zjU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>C
65937 zV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(
65938 z*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#x
65939 zcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv
65940 z9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^
65941 z2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<NoA
65942 zJoD-|HGV^A?4q%Y#x5GWXzZe~i^eV*yJ+m9v5Uqo8oOxhqOps{E*iUN?4q%Y#x5GW
65953 zV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v
65954 z*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E
65955 z_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(
65956 zJv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`
65957 z4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^Qg
65958 zLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>
65959 z(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-Jlz
65960 zH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6Cv
65961 zjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cv
65962 zV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v
65963 z*h6D)kH*KH^QOjc2#tL-_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9
65964 z_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2
65965 zeKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0
65966 zAB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^Th
65967 zM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus
65968 z(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xu
65969 zH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@
65970 zjeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!
65971 zV;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb
65972 z*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9
65973 z_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0e~-o=eCAD!-w+xHXdIw%fW`qD
65984 z0U8Hr9H4Q4#=#zqC!F-A#%~CXLo^Q2I7H(RjYBjJ(Ktlo5RF4L4$(M7;}DHQG!D@?
66027 zMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE
66028 z(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfk
66029 zG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<W
66030 zjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;
66031 z;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|
66032 zI7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3f
66033 zPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8W
66034 zQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop
66035 z6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~bt
66036 zMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<Wjnh3E
66037 z54!eEjo%O&XK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej
66038 z8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s
66039 z#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+E
66040 zafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3
66041 zoS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8h
66042 zXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B
66043 z85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&O
66044 zhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#n
66045 zp>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xC
66046 zXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej
66047 z8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ`?*jl1QW8owbl&e1qW;~b51G|tgDN8=og
66058 z9F6lm8n-NbQ{y*;#swM|Xk4IifyM<I7ie6dae>AK8W(6>pmBl51sWG<T%d7*#swM|
66069 zHgkt%SQV??8ek2whFZg|QPx;%ymf>%$vVb5-a65mVa>Kqx8_^tSm#<7SeIDKtZS_s
66070 ztedUdtUIi`tb48dtp}|QR$yh;qt=twGuHFgi`FaFPFvbFyVD+M54MNdBka-k!S*5c
66072 z-fX{MZ?(7Ejfz!it<)=fSB6v$sEn+Psf?=}R+(6tQaQFVtunnbt1`DTuX1)}QDsSG
66075 zw|al|!Rm%;P|d23R-ddsQ+>YrV)d2k&YG;%YMr%#wZXMvwGp+^wS#Mi)F#v>*QVA^
66078 zTf9{a67LWPiqT?>I7o~Y?-2)!_loz4L&TxtFmZ&KAU+_D5|hNyVzT(4_>h<?J|d14
66081 zJSCnHe-h8DT=7M*O}s2#5r0=X<E!EyVyEa4O{pq;Rl&E(4%sQYR2JDS2gtX`fpRaE
66083 zi*lj-lFBx}EYFn}%4PBjd6m3YUMH8!Z>Y@koAL(vEqSBLK))@2q%zQ-$h+lF<r?{O
66084 zm5KgB-Y<VC*Q$K<w=$5a+$5iof0Uc$pX77$dHHAgg8YlhPX8)jlz)?3Rh^^j8e7#d
66085 zRaLjNs5+%h)g>LO4(U>LN4Kgo-lF!HSFIf?KkQQZ;a(~~+}GYu?Kk_YJn`-JaQhu<
66100 zrn-Ony8d=w|KxT3D}DWAo}g-|z5E!XwfEV^Vs`iHzGtEC(>HAN?qQR=ukRZ+q;FV#
66101 z_pp)O=k^WTx9^#%+jb9Y@1EH=Y-r!GM|TY~UhJOOH*CMYVQY5}E4qjG4I9=s?AE?v
66102 zrg2|)t-Hohxob&{rMri&s6StSzHeyXvKn)D4_#6Z>OtSoT}wM<_t07OyXtrK4c)c8
66103 zBX<v-SiiP@ZQsycOWbM<VyG|<FhqSm<LPc-eQtej-?+n6F5acGv~B+~Pa7rP^}1Yb
66104 z-2cUF?Uw(AeC=;<z>IB#^-gP~b)Y(4dY3iYdbjmHb=35J>k#Wu>oDtZb^P>-wf+Aj
66106 z*7q1$-(%!RkC7wkcs}te;x)wO#2*va64wz69p!#RrY0v5PbQv5`~s0FD5rFMfcPBo
66107 zB^_<1U>~Sr#q8aOhV<_Ba*Fw2-(EkacdwG;)cXO{VDDD3Q=BiZ64!_yi?w2%+)qxD
66108 zC(G017vux-CHp|5V(ohR`407&iN+?woHAAIK_~Gf>!XYhsi9NVdKJd;>LpbD{BgCu
66111 z@d5dOUT5+-_5LOKl3r)_erov+RNqqVXhxUus(MM5L$Dlz<>*}k!4e3Tpm*NAa}~^0
66112 zFjv7`d*{?UkKU>4=VgyICL6oz*IiHCK8R;h4>CsgJ&}9YbGZ-d_tg76;~Gq-f1f?i
66113 zSs&jg-cIw8etn1W*EIfN{_ZvXb=S$1UR871VLr-myKk5@>S{|`lV=;-#0V9YK-8|g
66114 z>Qh}0_Li9Cy=6ueYJD8EyWA{S>-zz<o?lYy_dqn!>(%`K_14$hVW85+WbNvwo4<$k
66116 zA5;6#(W-2GT-8i^KRRCRFVpQ$+B0nZy!L@=J9Vk;F<9-*2dI4JoobIAV;pWwP}4rn
66117 z8fHChZMI&rw%I53o5L~2{z?`t-K$EV?cx>L5T6mZ%SXjsN|zm~uK%TcQ2s^Suljyo
66120 zZ9J^pULd}&-1)P;KVuJ4vVTror!0Ej9@cN{3ymX{vInZyAm#RNMPR*CoS}UEwTK!2
66123 zyVjrF_OI8Vxt}@A+}}LFe7iZ^e1|#0e5W~1iTOUYW-WVwUc2@v`|#J6ES1N+Rpmnq
66124 z#c*+-m?{sE_lSqZaQSvQT)kf)KPMiMcgTxvUCIZtq`iBx-l8Y#`u?An;x*fFk}*^~
66126 zjLuj8MNP8&pGwrfSR1b^O-C5}sKe)@#RudSVuH$%j!>D`&sCoDEtQ}AhukVQh(+>5
66127 zd7vC6PnBoNkH{8rs=Qof3cBXp=XK?}cmDq;b02NIMP-dURX+88akt8`R?An!m&G6C
66129 zYCcD)Y)a)(a<y4i^Sexb+#G2hC}*2v%u(jM%y*lkRR%P=-%=)OI(0G0>{8j}baQ~J
66130 zqz+Zt={@QQzSHbh8J(;0w7-kX<?-f0=2&@(Jj;BK`Cj>XF-PT8@9sC9%Z+{I7gcur
66132 z%Q}}<x#hWHw)~RHqkklRrZUt;DnAWmC|?xo#n<G=#I<s<{ItATen);q-Y#!aS)TZp
66134 z?5RU7$^70LQK|D|y=~<-wRfuhvfotNm3(`vqmeVU-fH;|6lc8V*l{QhKlPe^gX#B&
66135 zJyWqFRW3eif3)9pM;QauF@&j(P>xVX3fHU5|3-Bzaw}!<%v~kW+MzQ&wchkv)9Y+`
66136 z-`aYPwbXANy>>6x#~bQ6=R$R?F+g^yqn;m%|KRB3n=1SNwcH|}HOGska;kiX93ej?
66138 zDp!8LJ+0p-CL8;yqbPl5{*&sMDpE&RFDPTaA$}qrSI0*S)e+3E)N#tos^0~2iabCL
66139 zm7kQKksp*5d8@os9aX$bO=rLVQ62R^SblSm+G-!RkL$O5LydNI40wu|sgBaFr(WJ&
66140 zE2}Zu)ttwOd3rvt-9E2dC$@OM7%KJ?!^HmTxb|-h`Lpp?m1XTP{$cD?-~YwemB6ov
66143 zZC67+rv7&QtEs6e?V5r~E;h_K-I&iOq|x@eDVX9ndak?2JVMQ_cg)t;jj7MNcK3}p
66144 zRxQ=wzVTZ0Smtm0&f%1tY3TnsVRrW0I|nwKuh~~CdJNgWo@-TGT^)<-If?^cGo;h7
66145 zRC!)3&b2?G^T*zD{F<#%SL<x3v7b8TUh)61_dW1&6lMQAv$uQsd->aInx<)*rq?u0
66146 zuStrb76?#EfKoy!7)rrVp+-Q6h`bR>38j=!3PuEs%8L>E!-$9x5hEf-tQZh6D*8r5
66148 zztA;Po=`<I#S_R=@z#xggRCPDStCCm=S_~~uR=68S+ZEmux3B>_mKY~_tPl-A^EHR
66149 z9;1+bn!&%pdI<a0az0`ePVoXLX*AZwX<?zI1<SLyOO>!vO-9ocsZTf7bE%7slbzou
66150 zpW)xXI_{od<C^_wJd$~Dv+SeJqm4hs-=FoF+5G+k)M?SyYUOk;Eu@9yT6zI3rgN<M
66151 z6VlE8K0`jka;%w@Zu%p-m%c*w>PL|4=sH?S7t?d-hv*5khyFjh!&qeS`KT$Lp0I7g
66153 zrFM&E*56917&f}duj*M`#Nz&0Pz!F~m^S0%wh$YY{-hZ^V$)g4s5RfgA~v1JY5^Xf
66158 z_B$w-!|!T6BQ_VDZRZ>fIq7!JYRJj7bB=|a+;`n4^sf74*f|Z56R>lRf*fM!90@rF
66159 zugMYcE{%V_iv7PAa<c4i9L~yS0lL{(rL|~xvk2q~7JICwSJ1ZtPa4DY1^SkLdB6-5
66162 z7W1gP`8>k&Q0t9M))V+F!rvh0eH;h>V6V=xUIm_qSCl_{6Z`CB>m7f-{f^5p`OX^O
66163 z&SLM*<|R+I-xbi;>4a9PKcPRZ|4tv(U)A4Y_NjtB_e8B(-xz2KT%c{yF5?pZ*=`r2
66165 zuXBC8!k=$FdlqdVJ>(v(n%U73W+NjkW@#f#YQ2f9B#q<@y+^-Ce}J4vF1Ek9j{Tp?
66166 zTjvOl&jPKI`O91A5PgO|$Na!?<_eV2D(!VbNiJ>Cx9Dxmud3wVpKO}~@)-MGlzx_Z
66169 z@HRVwBl~3jsz7_fdKQa-dddC#d1sIzhUE*ic5NrArgbdxUPVsiXccw0Ui}$fQD(iZ
66171 zSeu>4w9%p6%=-JC+8x?GT&m||Qh}s^XpoiwQs#m@Lb9Xc^tV1vf9vD)$KSCL%(8K@
66172 zzG7+9@_<gUdw_UXNOJiYV9fz;VtuVmyF%Nc-OMHJ*B;ZJW|n+ZdsUl=!_<2n(u#Kk
66173 zP#&`t>ug)G4s>K`Kc@MUY*d_N*Yp@Jr>H5|4K_MD-toGh6lZVjcf9VgcLeHg-FY5+
66174 zwU)msfmcEoC&gI<@lLd7tiM@y(BZjgR~Tg`^9GhZ6KtM!%&gH_Z-g^6>vxP;q$9ks
66175 zVjd5=%}?K9&%F(B|LooK)PJHc@-cvWX3P`Vz@9s3&sB%nwTKk4e!7S(Vy~BwCG53x
66179 zR{mc83&(xrKK8Azk*~4xUngH@Wxhea!JhH}d4PTEo8+6!+j@{Z$iDS0@-6nQe!~1c
66180 z@(_7Q%Ou|=-(}wwzma^Oe4kw(B|osDGx9@reT>;qll+MMh`oNCJkH8L#o`v7Md(AZ
66182 zY{-9@gzu1dv@{D$T98HbCiD2xXquMJ#ugR}(kxn_1z5yi%JR$T0+v%w%h_udg=-ns
66183 zOa}Y3nl5AI#jgrAl=-@}meyM9VCZ|<J&&MAu=^iHk7BQnrbn|+kD<q~i0fF&+MTXp
66185 zQHBkAHa(kt`hNO;_N{a2xvczVx|x;SLbtFoAEX~-Wm;(~D{~ROh)Mfl`e9b`657UU
66189 zvz#B$AFz8qMjvC>AJZSR@=wwy**$+kf5Ptn6#XfC)-UKU*z3RWDB~si68rAU^kr)$
66191 z^n5L-7w84-^?ZFXi^JF$&t5OrYgvAsUZ<t&EA$oY^<ny9?9+O^UJC@?3B1F`cVaM~
66192 z-MW#MY2+F#nl}mzhC1taYc{5q8D*?YxlwMdi7_fze#D5d@{5hdT2RDC#!_P``?T7q
66195 zVW~9_%cDdJTHq0xv4L4*YjilAM~v18{=AmY<HjJ58!eyXZ|wCe>@UDZz<;o-6-g4V
66197 zkF(d?$TnM#oy_iv-z<go6~A1DxHhf0^u9Pfrg1$6m|c97<yeub_!Tq2HJHscsB;bK
66198 zT!XpvYI-$8s};doQS|_5Q0E#<7rNuoY)0UDHtGuu5+2zKou)gqnaQ<jYI~Tkyot1t
66201 zX4G75Hk%ij9p<fOulcY!WIkt(2Qz}D!Mb2$a8s}?xFgsdyf-)yd^$K9d@C)KR-RU$
66203 zkg*}7HDhZ=SH_-<{){IxMlxQ@G&74cqnWESn=>!U?8v+|vp4hM%%RNZGRLzrvP!e+
66204 zvKq5CWwmAP$m-6zH)|m4>8#PLx3WXo<=OSwYqMLjFU#)Cz9YLYdvErz7W*ZBGP2zQ
66206 zTjs-UnX~L?9B#`TpJ%${8IHWokeBXKjyUqpg*+j1(3W|XotGb%M;+zPi_6Q8%L_Ql
66207 zeIPC`KQ1rmD0gyPUVdC&noGGfmvW{{In$+_;V8E`E-ybWFWu#S=`Qypj&kS5<>kla
66208 z37t;P-K?|q7qIoW&em1H*3~*&F9G|x>uepw=b0{fh9hq?<fXfmBalbny^vS8<y~vb
66210 zw#?_-GN;?mINz2zKF@T?GaPxFAurvf9C75G3wc83$@#-$Y?-rdnUAq$&bDPf#+EtT
66214 zb0IIbg6`d82Xz@IsLPl@U2J`Pp6QZjIPx}YPJ10+jyUq-ZS&-;euFJ@jxBS8Epv`7
66216 z9A(QKpJ%${8IHWokeBXKjyUqpg*+j%=`seIE@PnSG6tG1V_<xq>5^wS@-}PEF)+Ry
66217 zapaw=Imf}t-)@euWzMu^KEjqc)0X)NTjosr8AsSM$LE<Yd4?lzGvuYalp~J3b0JU2
66219 zmU+^5&a-8n^quqUXH5Fe@p-08p5e&btT}z>_;SRNCw%7&Ev!}W+3_ar9PJ|Q3awL%
66221 zNaLOtuf>4<6zl&~$f0)5ddKgsR*#M4TkC4F>~}4;bk_g-Ip$*T&UVZxmuQ!1?If(F
66222 z&EBbNvv-O=eMGlb%q-#a$xA#|E;(0h?#F6Pu|kvAG=A-Skk2BUakI!DBp=i$p93}=
66223 zv%l2wOM7e;x>)@zW+=rh-B;;X<5oFO{`UU5Mwq1543;%h72q>fx_*Rygr?iS$yae*
66225 zw6S_xvnK&QdlKNYCjoLLxl%Lu97=%Co&@;3Nr2B<6KgewJs0&=@(_FdFnO3=tr-(a
66228 zkY3ELZM2PDx6-Zb+Ci^jCA(-BdwnOplU=_~?`JYt^PiN@<5)9cKV;V*)1R>GPpQRG
66231 zzQEIlX4DuL8NJ5K=3(ZEW{cTj-eo>zz7?zsUL3qXIGz?tt4v#$c3Ik<v|pvYoNlI9
66235 z`;Fh38RlwpoB3$a43-902G0rZ2tE*eA^3J$IBiwh=CoVV_NG0P_G)^5dVTtq^efVD
66236 zPT!OMQ2I0JZ)6l_9Lef`d&XYg^F_U=T`!IA9}u~gl-4hjqPAL`CX9D!Lg!_SDWzg}
66237 zus#idzBImv(OE9&saJ!S55B7<g73PsRnml(&{#XXyY<rd*?K|#-E`NsPxpMH^{q5$
66238 zdyTccJ9aYn8$0RzKAD~<%-p9W)*Uhcg&M=4H=?r-7}1&hp4kceN%nqAXx%Lf`ia&5
66239 z-0v!<|4m|Bk3;<A6LfwRlE-6N=Y2Q+*;8?>bI%~Y-tWe)&iCQC*TN0AI`_NWwdsyk
66240 zo$usItS2v=>fCEe+;-mB)Y)D4w}lenQs;iu{vpV+VgW5Shv>9ovE0cPjXi_#R(W@O
66242 z`#;5#iMGYjiZpI4+7j22)O9S{GNm=C>sYkqT`fuzjzwEsT9qaoi?(PQJllw?-6p7A
66243 z?32mbZL(`8K69(xCP(dJrQTh;O>wmo<r39y)0Eo9zTsWFSS_d)n-71tO$~V3)PQRr
66244 zjJK%)*Iqc)rUnxBLu$`%P0B~@nYMVF5i2<<v6ZX8D|b>u#I+XUbKUcEW6B-gT}NZe
66245 zJrdcX*bI%g4kpX$`z$*Z10<o{a+cQjQ96FF-nBGDwp&r3*uTT#qHAcj*waI^XoN1J
66248 zo(NJnG2nP-PFOpoSX{?65Zl2V(Js<%CFg0`!5%VB11#EmM6V0>=wpE`foF|eqtJMi
66249 zl`M1Au#N1RMlGo$j*s%a%ooL?b8AL`UCZ@_9NFbOo;LYvvNRqso9x-O>^s)#umE5A
66250 zC8GXJ9zAF9RbA<PC6`#4Mfe&k3hM`cKz_g?X=`;=0M=EB6;;-nDauzo1(@t*T9C=V
66251 zK+EE*nJ8biM0o@()*Mm3swe>KfUNaCL0H{mt<Vvxa>V)?0;>zkc-vB~h_9c}dE8AL
66253 zZR~2r)P&wlZ)UGQPe0G1<AqG4lt;uwuhOg7>sr0eY6-nge?#A(w+2@0olLu3`b*>q
66254 zEfhFRi*kEmfE5?^g2nDy8~fJ9tPfo>#fFK`OfAIX;;6P-e~r)X8SrQFyNOaCfjhKu
66255 zJ7&Q7C9%)kpZbvmPyGmgY8`*-HqWPCn&7FIdOY>g1W&!xdMdLZo3-uQ9a<l^IY!)*
66256 z%_$mdWB0w7eb&Z5bC$G5Q)_>UwF<k9mAsghZ1bo`o1-29`%^vc4)3mE8-FeK+FK==
66257 z?Cc|^F@`KJjeRtM#y;wyv5zLu*hj6WlHJx*$*(-0dRc;}Ugq)C%Mv{GG9EpInRRo{
66258 za(qY=r%KRwy%%$+t?YU`^92jFXSKt$6Pe|?K-;F>qV;%4eMthTFY%E2k_1v;q7nPg
66259 z%KM-u*0mEYHb1*T)9ez~=N1~H+8S-6c7@jEA?3$hu|pH!=3^eRf6O7fZhsoPlUt2G
66261 zm1gZeeU|-En2mjh{ZUfDz7gQxnaBPP>^mlWr%YSG$}Qz5jl8Qg>+S8@E-jZyZS83|
66262 zM-wMth-ks8+y8K6P0gd=nZ|O?gi`T&nteCo$T77d$0s`6(bB)}z_OJWe{#kd`}t=*
66264 z_Kvu+t9jYgyzFXT)^YL>X^Sg+94~tuFMAv>dz_=}>bSCNc-b|)>>6HnjiYQhuI%x=
66266 z*|m<ct#M^f=4DUjWl!d1Pj-}D6<78&UiLIz_B3AhG)Gx$Myr^WtI(==A3H-I)_={)
66267 zSmzO0-)rLEYvSK);?bG-9=pTg7fgA-Ys&k3ro4Y*%KI1N->*!Y^1gD)`xB?UcRrt4
66269 zoH3FynlY9!o-vVWW`;7unWdSL%xGqPW<zFUW>aQ!W=m#kW?N=^W=CdcW>;o+W>02s
66271 z9a)`OU0K~(Jz2e3eOdik16hMvLs`RFBUz(aV_D-_6WL~VC_9{8njOiGX4hvoWH)9v
66273 zBB5xgKGYCu3^j$CLoK1!P+O=y)Dh|ob%nY^J)z!EU#LGc5E={(g@!{Tq0!J-XgoBL
66275 zaL!21XwF#9c+NzwnH$Ot=a%M1a-+HRxed9ExlOsvxh=V^xox@axgEKkxm~&4xjnhP
66280 z!Fa($p;;Iz3>TIbMhc^a^@R<EjfG8x&4n$6t%Yrc?S&nMorPV6-Gx1cy@h>+{e=UC
66281 zgM~wd!-XS-qlIII<AoEm%vqsX;aR1#BD12i>Sr~~YMj+Ht9e$-tkzj=v)X5M%<7!g
66282 zHLH78&#c~AeY5&!4a^#xH8g8@*2t{US!1)tXHA67a3~xOmxd$ZXt+My5N-@Ng`2}I
66283 z;nr|lxINqv?hJQ@yTd)<-f&;IKRgf~3=f5e!z1C*@K|^}JTcpx9hx1UT{=55J3705
66284 zcEjw(*-f*XXSd95o!vIOeRjv}&e>hFyJz>z?w#E?yMOk;?7`VXvxjGo%pRRRHhX;b
66286 zMZ-lSMWaPyMdL*ibIduRIpH~_b0Tx1bL!_b%xRp{G^cq^%beCZZFAb^bj<0T(>14i
66287 zPS2d)Iel~b=M2mloHI0Mc+SY2(K%yt#^+2Fo5i8xaB*pIq&Qk!U))gKSlm?HT-;LJ
66288 zTHIFLUffaKS=?3JUEEXLTijRNUp!DeSUglbTs%@dT0B-fUOX|^oEw@Oo?ALMGB-N6
66290 z?nH@M5-JIol$JzFq9yeu4JC~wO(o4GEhVibZ6)m`9VMM5T_xQmJte&*eI@-R10{nc
66292 zdtT4H-g$lV`sWSI8=N;ZZ+PCwywQ1M^Ty{*l$xcX(r{^MX{0n-T3^~w+F06D+FaUF
66293 z+FIIH+FsgG+F9CF+FjaH+FROJ+Fv?QI#@bXI$SzZI$AnbI$k<4-<%(sAD&-2KQcc$
66294 zzkYth{KolB^PA_l%x|6FHotv-$NbLuUGux=_ss8|-#5R1{=odf`9t%E=a0-Eoj*2z
66298 zQr=qLR^DFTQQleJRo-3RQ{G$NSKePfP(D~bR6bljQa)NfRz6-nvCv!?S{Pnfx-haZ
66300 zaD3rJg;^1*2v?L=L@J^c^%V^jjTKE5%@r*btrcw*?G+srofTab-4#6*y%l{G{S^Zh
66303 zk=96Cq&?CR>5Ozmx+6W2-bi1hKQa&*j0{DFBO{T~$XH}NGO^fP99kS+T)H^2IJ&rg
66304 zal_)q#Z8Nw7q={KUEH>~eR0R)&c$7eyBGH??p@rsxPS4$;=#p3i-#AFEFN7vws?H;
66305 zM5S37sti|_Rz@nLmGzYkm5r56mCcncm93R+mF<-sm7SGcmEDy+mA#dHmHm|im4lT-
66307 zNzanrC4Ec!mkcZ!Tr#v|c*)3;(IsO`#+OV~nN^{xa8+qlq$*lfU)506Sk+Y3T-8$5
66309 zerdzf#-&Y5o0qmMZC%>7w0&vE($1w_OS_l$EbU#|x3quhz|z5`LraI3jw~HrI<|Ct
66311 zL)F98Bh{nTW7Xr;6U)qHp=IG^rOP7AqRZ-+H7sjf*0ij7S<AB4Wo^samvt=bT-LR$
66312 zds)x2-erBu`j-tX8(cQDY<Stove9K@%f^>YM9pX@8jhAmBhhHIKH3m%j5bA^qb<?a
66313 zXj`;B+7a!Hc163RJ<;B1U$j3u5FLyTMTes!(b4EwbUZq-+*}@79$sF$JhD8xyncDZ
66314 z^2X&&%bS<CEN@-jw!D3L$MVkQUCX<d_bl&S-nYDe`M~nQ<wMJdmyawTT|TyaeECF;
66315 zSre)W*Ob;oYN9puH4Qb5HBB|mH7zx*HElKRH61mbHC;8`H9a-GHGMVxH3Kz+HA6MS
66316 zH6t~nHDfj7H50XFZKyU}TUr~bjn>xJHq<uOHq|!Qw$!%Pw$--RcGPy(cGY&*_SE*)
66317 z_SN>+4%80T4%H6Vj?|9Uj@6FWPSlxop}KHgX<ei)T327!P}f-3RM%YBQrBA7R@YwF
66318 zQP)}5Ro7kDQ`cM9SJz)RP&ZgNR5x5VQa4&RRySTZvBF#tS`l7Rx+1b7x}ttX!-~cg
66319 zO)HvLw5(`d(YB&}MaPQH6<xx+Tz-W}Ybd0fM7lz(oYUU(vPf6%5$O?4kp5AmM;-&|
66323 z?-M1Ef}C9)BK>5eNN>r46x!)iJtDmo+U2$yNZ%Ie?VzXIL5|NnD$+YH73t?ABK^YC
66325 z*&)*Ji&fUzUXbTU5H&qMF48BT73ohdhxB(MeG26HX$GYCh;#^WKlF@9e|C{be-8Kk
66326 z`JE#D1(f>*)c<MF%P*mRzr0(dzXJJw1<(CIkYiXA=`(<r-*$`icTnHoy(rS(gIs@v
66329 zpNq7pPo#52yO2_Wd$Pb3>B0e#MnIk=qQ8*pts-6C0_htft=SAI$WtrqBB`r}RN$Vh
66330 zI0w=(ksb#3eNP#rP_7>8Uk`dY9O}2S5>k-wz3|-kf*h-ay&*@zu7P8UA%*%Ld$CAY
66331 zgIsGwe;_A__9Sbe+$pz<bo~aAo(}hGu7DKeJX7>HvQgMGa#kUv&`z6#y&-2qyPUI9
66333 zAjjqKypO|uwhDVqt`_!>Tm$X0L*SlVzgwicV7JRnAWxU*FXR?6o{-yweImDSgY*TF
66336 z2=uo{ggqnQ6LyviKs$ZE3Q}m7M;{UC4*=hLK~H-@jvv7ehsU8`J^6r0e+vEYry&2(
66337 zdPt%EKLfn|9B}q?VW-G1+eJDIa{LCK_glEnh_Kh>Ps09@7oc7K0=R!EB+{1$MfwWJ
66340 zgr7%C;C}O~Ar*4cGST1Y0%6Z+c?qPVo#;YgZ)k;R7rIFJfi#i@X*Z-G#}Z+`X|?EA
66342 z(Ju64fqU9?t4L21eiS_e<T+FH7rIG|C-fX)pXmE{LMr?|+5+;NTMVi2yXfY1kcx4O
66344 zCdL)|5s>RL(I4plKzm*R<*pLr7rk2ed2~D6?>b>u=uVLH`g}-*J)@n%&e9v8op#kh
66346 zUHS!(V-Gy<Zn)2vg}tWt3j0UD2JLb`;QpIok$y|~QS>2@=ey8f2E=$me<17=-J1rf
66348 z98U>*Lw^Q%dAbTxsP8YuxI%vgat%X&_zkq@@1Wct#P~&@6Mi23Gu-b*uq!WuoPUM>
66349 z_L8t?^lufALOZ<-_U7-<E@Q$Eq^|(JUjaS60&=`2>^J=v^s6_-PDJ_^^uPar{QnXD
66351 z`aB_zUMBjBzEF%O`XXVU^vKPS3cpWZEacHE%OMqhm%ii-NX59NSBY^)UkdkKD*C-%
66352 z4dtpu{q<!+FM1T}7Zu~Lz8vIR4$rLtIckNy(N_q(==H)*>W4#pS89-gTt|rhpf`y2
66355 zp4SHVxm4I|{bR!Z>Fv-iR|?$g+e$^+A^a%)T99X_=r8&WVm#4z3;U$slnbfw`}CVZ
66356 zo|}c8)<3ZZQh|HDON?9kCrwD<zPGG|6v}-H>VGTf<yNTQZO1?g^4$*4{WQq&X<={l
66357 z&jMclw+>RM@10^?(LWDzeF6Hz9%#=mLAiUx_@#eU_<4FC-0vGlLJD#|0R8Qo!k+05
66359 zAmD8faQ3*cQ~Hy_-_@T2IerGudm8TZf5Kkt&j|ac{}$Ti_kjC9iuot~dErOtqae>;
66363 zIm(3n4lES?DzHez!GTKA{{l-u{v{VcD(WAo5_k(NErC?nsX$ctyMbDe<1l#M;c%b#
66365 zC+u{fc^#wz_klCTxE0tKf)wt1)-jMmxlK_2vq3LsL;cP<5mJ!v{qWotkfTM|o4^MI
66369 z$nya7mv4#jB=8W0RM_XhcLI=tJP+4FD*Ud%cLDd0Xpo9=C-6PE@ApK%4-7!L0jU4?
66370 zK`)O&{T>zLZ{P<Y-(Gm`UXbI5!rlaa1bBHu*vY_;p}tS%LJD&I6#B!@p*?>I<%Y%h
66371 z6?jJYd4b=;{YJp9`~l?rBlNdF3VRm#ld!Xa=b)XQ2Yd4Zw95;^4-EVn@I4B88U;E2
66373 zy*3PC|BN)zE=H!ny%7@gPe!irql^L}j}aFA#h4?;6Qe}fCu3e2q{8nrN-H20cG{SK
66374 z2BZS_MwuA5j0Isx;lAZ3LJH*;iuxNBC6J2x8H?6K3i3tZxr;%L#lqegRRS-@vel46
66376 zVQ-8RMY|X$2|v(STMa4b>12@O6k)%O^`c)Hr;9k)Xr_>Y{LR8YG0uegZ_I~O;LJEn
66379 z#%_@BCV1{mAji$Z-WXkgmrn^hY1|6+y{!mRkgFT|!{?wq?}Tz+5aXBeMd9Zecf<X@
66380 zEbNML56Jly=x<*U_RP3f*jeMN&`$RWdt-bJ+U0A)4>bA!-(LqkeI4X@K-h2NThOn*
66381 zE#hF~Vd#I~1^K@#{1f95sQ)8?x9<VYz9;OI@u={3jUR#>gYdi`!+o9-_SzT{_RshQ
66383 zE#sw9Na4PJgMR-vDEBhd|L>rezeD}THbM&Wy#mjD736po?9D#`FXL+=h5G(mj4Q?)
66384 zAlHAOKm1p;r>Ti@rY^=W(-eN5nJ(^UW}N}4kkiZ-{ml#sduHYcJ8R}<K`QKxnJ3!C
66385 z%ol#3S#TJnLQiI)ki!fM`)$q<{mLv6aj-c*1JXMo75<4?ChBi4D27zv%q$mn%3LJ;
66390 zqW_sYLH?b>KQXU|`d<%t>ja#23Oi-qDEwXXW{~5P@Vr~$KA#r$+Wd^Lf94&~E}sY7
66391 z-zDas%ss-7GQR}!+ynjPt71Gc`-FWmzg`2W@cYdBL7w}Coi@L*1yaEM17h4VzZroP
66392 z?)%_INTJ-fp#J@!mwu?<w>Luy@;wC4{SL_S9bs?GM*uJ1-vBAp_favfm_Goy9)tey
66395 z9Paa`u-E3>VE^6`?Ghvc_rZXee+mYL9~I0H@&vO*e+lM_@g!JK45_fs!NL+qg*?Go
66398 z3`m8Y4IU-hDcB(FP4MU{NQEC5JVxL<cr57YSde3lu;0NGM8682B;w%UI??}vr-1yY
66399 z2>&G51odwccnh9-B&5Pl1vdzPH~2n~V<SB8Y`9O0u-C!O!u|!%hjwWdxDQ?^=AVKe
66402 zc`KCrv>3mFpA~*y@PFZcJ;JU8zW{Q6LG-uaUBaFPzbNc%a1XT89${~S{}0;bZs7+8
66403 zzXbUH66mQH<oJrP-@&g!zv>flaPS+@|Gok8Kad3})c>1+w{HT@9u#&e_-*0u2EPMx
66404 zJOa=AKHO)ou-CyK3Huj(0@~$C!2M6f{8RAf!jB66666_%{_-0!o&<ka4ymxu!QWRv
66407 zOEdBz6?Qhw6z!B26!s=9tq#(+tz9`<Y?n@2`lDLVW~^fGvtEze#gkUj2B(L>`vs-(
66410 zihuv)=J@-)@@V|$Z(SOHzlliP=hl8e=jRz2hsA%Me_s6OmBsO&*WMogdE;a8pEo@l
66413 z^}PIgUVeST^6Pl{b-esKUVdGo^2SE1Jiq>$U!O5HCM<szFMk#<e-<x)R>Ja|c==7d
66414 z{3c$0Q^N9R^73c$@@Mk$XC^Gag_qyL%WvW3t&wr1R;Wey^N-(;wfz3?w<UZRZ?kre
66416 zjr@87zpmxillgTWzc%sfdVW2PUpMgU>DHC$(7JBq*R%L_6Tfa@S8<wINV7cTPq2R-
66423 zXz!<4G)p^|me8fzW_~v5rTiR~k8(bk%jg=qPWu>bqNi%x=xOu}&Ei-8fVP94Pd}t}
66424 z(F^H?+HLg1^ds8soGs>a^h$b-b_czd?$W-<&rA6V?V_L5?&Zu)_t86Pul6<0%JdLF
66425 zG4?yOkKV66%+DtM9zT_IfDY2fwI6ZDrN=qf(i8Nj^yk`->C^OS?Wgot^bgt){S$p&
66433 z(7kjoyRKvL=Y8}M_U<KyctkKFSak#+sI3;h+*;<%m1}G1r7U9oIsIeYY|H-s27-M8
66434 z`-GZ(B4*Xk&?4FymSuOf>IWtp;vMmRsAeIjYt`2?o4%g5v%jfU9kGsB_xHS|W!0@!
66439 zu)oXL|6PuFPzC)>MSU{XW=~gxPW-j=b<nEguPZ6|J1|S;hQBK~0#(Ofvi1f{7k}XM
66441 zMD=l)teq><#UZR`&^9r-wz0oU`L&(>-|bk>pn@KqJ?1j@cQL=-k+dFjpqez;H>@#l
66442 zoz}rdJZs-rK<lz4JM_N(Fdv7hRzgplj8*wKY}#^Rq>7QMnvtrAJt^<;8|W46?=Gg7
66446 z?WNB!Em*U08Hjd7`wT)mk0;_!)|nDdAaW78s(L1|c?U-{>DZl)(In#7A2>eHwM-)R
66448 zv`(#CyHnf4{+^sNruwNqQ(I@RBCRvMH6!t@vxm2jpIc{ghG`e;-FI^~k-N304r+!;
66449 zt^RYT_Lw3qG~M-v@hv3U$j>cg&-7@!nLX%be|Pcg&_T`gq_$4)KJWM@>obXKaSo1?
66451 za-{Owccz98k{zST<D^kTUv8W<sn(b`Ck>7bI5w#5lgr|yL8K$nRY!VaP8vioB3N|<
66452 z%i^S&#5(Rsz&_#cK9QJ{W->Ow721e*6=xykanc~x5$iK!-g4iZH0Z4(deyho-kdau
66453 zU&OD<*4K-Z262nHRXrj+*x&XiIcX5>h<1OVJrO4jq8L%^4;0Jcq(QtR-c`rDOimia
66454 zJK|k+yid=*dvVer;t}zxBVG<Cjoh`3vN>szDV;YbjY>L6{_1M^oHQ!w&z+M-4Gns6
66456 z4kwLDdi3U`QA3kcIcaW+anc;{+Nb1l(%cj~lL{kMj8v74RJ}QAZi=0Ug=-2C?Y>{t
66457 z;?7BPQ;d@)MPo-|P8#P3qWrlu2{>t{Z%I_+q`4_}VjEgHv~tRh>4`aMZi=1JhdaO!
66458 z>oW)IuADSZtfLQ$i1)V-yDv_fn_?%GBH9t{GXm}IoHWjO0+EZzRn;?z%{zE;(qJ@+
66463 zB<7@<j16#wHsW2ySx9-DG>CP?`plTO+&3o;dh3W@^)0nGCk^5k@vE}+_2Q&K+#+sO
66464 zj|dO;xBW>@8bmvy-5+RA#7ToFMil!4#d0`l5bub0)$uNqlLqmQcvl_o)3fhhoHU4d
66465 zM7-*Vm%~XTcWt9=PMTy&=gmo@l1`Gpx>`ObjY|4+=cG|XgI=68D(TOSlSa0DvN>r~
66466 z(%+%j8;}f68kKbD#Yv-v7QH!XRMMe4Cyg3CIT0s~N;*6=J6Dp!Nu!b;y*X*r(BxE3
66470 z%s{*wCrzqnZ}*RrCe?GZvN>s-W2&F(<IYKw`qq)lN#obn@#dtN{tS~^{U^prllm5t
66473 z4Ql)3vN&lF>4<dIk)D{71`&)1Rvp2zIB6!ajyn>tPx!k}B<7@<j16#wHsW2ySx9-D
66474 zG>CP?`plTO+&3o;dh3W@^)0nGCk^5k@vE}+_2Q&K+#+sOj|dO;xBW>@8bmvy-5+RA
66475 z#7ToFMil!4#d0`l5bub0)$uNqlLqmQcvl_o)3fhhoHU4dM7-*Vm%~XTcWt9=PMTy&
66476 z=gmo@l1`Gpx>`ObjY|4+=cG|XgI=68D(TOSlSa0DvN>r~(%+%j8;}f68kKbD#Yv-v
66477 z7QH!XRMMe4Cyg3CIT0s~N;*6=J6Dp!Nu!b;y*X*r(BxE3n(Z-8ngd?@lw3}l?Xfed
66478 zFjB=xRoO_@o0DdH>^v-7Q;2By{i+ssPMYm8PMQ>r9f>(<oFj<x=h7tLq?x`YQH_&k
66481 zvN>s-W2&F(<IYKw`qq)lN#obn@#dtN{tS~^{U^prllm5t%}L|e7D~iPGyRz!)i`Oc
66485 z5xweLYHv;&#4qAkW$Ww3NrSjW+^QZC9_(-Xlbke&c0{{B(4L5s22qSC_6LgPaMB>&
66486 z5$~$wT_z_D;vMm>I^L&e-@Q0#5b=n3)e$d;lSb~^M%kP+$&}8UlSU<-B!6|ad`=pb
66490 zbFF<wAMOA{tj`#%yK>Svv5r10BHrIV?7lc@uC-4pMYJQ@X9C*YIcc2n1R@uatEy)b
66491 zn|JWyq`_zsaqI^i%j2Ypk3A9bi1?X-csEX(RL|b-A16(!=VoPd(m2OdKh?*blP2}8
66492 zBbSrLudU<FNi+Q!CbjxcjFTqyEhL+h#;+}uh?8deGd-$t(p<@Fv09Q`2g^w#TN<xD
66501 z(m1h>J}e^M-#+ZVIBBl5Pbx*UBid&I+TA&6obd!A7m=%~XA+xt@ZzMwXcBSk2OP`e
66502 zq=}C`5%GxlnSppWPMTED-tHeKO{(W+WpmOv$5cPn$DNZV^{pe9lg6*D<IPDk{TU{;
66506 z;0kTTyNa`r@;GS_>xlK4F>kqVP8#&q5xweLYHv;&#4qAkW$Ww3NrSjW+^QZC9_(-X
66507 zlbke&c0{{B(4L5s22qSC_6LgPaMB>&5$~$wT_z_D;vMm>I^L&e-@Q0#5b=n3)e$d;
66508 zlSb~^M%kP+$&}8UlSU<-B!6|ad`=pb^ykh=qlN~(IB8VUpBpEQZ24q!(x{}rL$Nm?
66512 zuCY%lMYJQ@X9C*YIcc2n1R@uatEy)bn|JWyq`_zsaqI^i%j2Ypk3A9bi1?X-csEX(
66513 zRL|b-A16(!=VoPd(m2OdKh?*blP2}8BbSrLudU<FNi+Q!CbjxcjFTqyEhL+h#;+}u
66514 zh?8deGd-$t(ro3mI8KsW2g^w#TN<xDim~UQ4~#yrnm(`$P8vixqFi;9dvnqtdJ(<;
66523 z;|WAAB3D(<BsTBh#YuzFB;wc)IF`pr6CZmb;t}yP1MzO0G^w7w-9Jv6RL{-I=A?0s
66525 zxek_-Mz%CwdlX~OK_3`>U^RVU8JskTazwf6DEH>1LG&Ve{mDs#$VKF;`m3H7CyiXs
66526 zTNWoxa-{Owccz98k{zST<D^kTUv8W<sn(b`Ck>7bI5w#5lgr|yL8K$nRY!VaP8vio
66527 zB3N|<%i^S&#5(Rsz&_#cK9QJ{W->Ow721e*6=xykanc~x5$iK!-g4iZH0Z4(deyho
66528 z-kdauU&OD<*4K-Z262nHRXrj+*x&XiIcX5>h<1OVJrO4jq8L%^4;0Jcq(QtR-c`rD
66529 zOimiaJK|k+yid=*dvVer;t}zxBVG<Cjoh`3vN>szDV;YbjY>L6{_1M^oHQ!w&z+M-
66532 z-S4Yf+&O8kvN>r|Gj=5Aq;ZZQ%AZS<fRkqWmP9p9nyc&++i*-rE2rw1o|u#7D*KE+
66534 zgV7}7*bg|C$4L_(dm`cy@iPPQZk#l!p1s{aPMTED&C2GaagM2es*gJ-P3l`mE+>s&
66537 zqsil>QA1yDoHVJ{m^UX4jtw|AsO^)>;-o>OBhpnzdSXr*L@**)bp*@eq?yDz?nuBs
66538 z;qN|?n3HBQHoz6yh<6odA?0z>Al4D<Gh^Oz-<&k)ts{EXx76O8G>Bisugccfi<1U%
66540 z(jejy@v0+U4kwM=wT-elX_6_OHz$osI!XTOYWbWrD(TOilST~<dU4XIq(3)K8rky6
66541 z=A=<ce}`gkKr%RKRMMdrCyg3f^yZ{dNr&#7G-~wZM4U7#>G06(TuBZmjY@j-=A=<W
66543 zVon<82%`MCGzmCqrf*49<D}VUpV)?DI$AkZ$MnRUG~4Vm`fvvrVtvM7-IbHZiFNd0
66545 zBjRTU;@voDQayXSf1EU_o|~1;N#h(-{Zt=!PMXxWj$BR}zqXDyC(ZO{nAGY&F;1G)
66546 zw~%a38o#zsB2Jp=&-AFqNweGf%s5k$TnEcZBU>7;J&LjCpbv~bu$n%w3{DzEIig&3
66547 zlzVg1AbJtK{^X=V<RWra{Z-G4lSZ!REsK*TIZ}D;J5xgk$&S(Fanh)vFE>t_RBOze
66548 zlLp5I92?a3$z^fUAkq=(sv|uyCk-MP5v)3bWpUC>VjXuRV4v`JpGeF}GZ`D;3T?!@
66549 zinEaNIB5{;i1nE<Z@F(y8uZo?z3N+PZ%!J-FXC5a>+8iygSbW9svZ#@>~H&%oHU4b
66550 zM7uxGo`{nMQH&_|2a4rz(jeXu@2cZnCMONz9r3O@-lu2Zy*OzQ@rZcU5if_6M()~1
66552 z(2J8s4J~?e(x{|EcTO5LdU7I88kKZ-Xm+k7hm%GnJ$iG}sG-TJoHV;*oHPf#_9?lX
66553 zG`nMGQemWuk*czhsy8Ri?$~))xTX-%?)z0O?wmBcW1KW88aonm(l|#D<<F%_z)3TG
66554 zOQISl&F<KVZ8)Z*l~Z<1Ps~ZPJ9b7N?f^rq&m63~a?&`ljy^0R-rqj#zBp-i$4)9m
66558 z{;KE2Nh8<umc>bv9I3qaovERNWXEXoIBC?-mm4Qdsx{`#NrPhpjty%2<gz$v5b20?
66560 z4SMT{UiB@tHzy6^7xAmI_4VSULEIv4RgVY{_P6~>P8vizqTL^8PsB-sC`J_f1I2PU
66561 zX%O#-ch&JOlamJVj(Arc@6)sIUYs<DctpJFh?m1jBX@11Y)+bFO6Sc<qmoXNzq(pJ
66563 zJvk94jY>K^G&@(4!%3r(9=$nf)X?NqPMRGtPMQN=`;=TxnjNt-sW4K-NLATL)ti%M
66564 zN9;T-TvLc>_x-9CcTSoeF;1EkjU9<OX`Ca7^5@bd;G~(pB~gu&W=HJAHXPH@$|*ah
66566 z)ia6BJ9u%@U^Iz1_5+UPani)co``rv{LDbS8z)VwXK(k9lP1-3v$8p9oMWn=>f_Ey
66567 zlls<?%Sq$c*74?~nf?ruTKy-+Nt5~(lFdou*A_~|Ni+SK9@RK$uH&`XAW5!+<)o1<
66568 zjn^K<*mKYaMju#BA6Nz_4Wb-Tt~$!SIcX5Rh+cnk(jamXxvKuE=fz1Q*YlReNs}C@
66569 zy!M@`p@U?{X!1B|)X<k3Crzp~=FLfiV*`#2YWw7}IB5{+h;-GFo|uyc5sU~{9l^3V
66571 ztFra=;-o>`B5qZW2oLtR{Yg$5L_4D0A81d+NrNax6#E0kayV%a?}&HR@h+2-2Jwz~
66573 z>CcUmMz(yiIcZeV-=WwWkPJ>5m2~LENu!1qy*X)A(xE#ijT${U5hsmGIy^KxSCYd?
66574 zqmmxIIce0;<Wx?Y>ugS%16})+Tuz$n>@%q_QpHGB)kxKwljb`6JS<#Oh-mlwsup)n
66577 zj^%OE#K)e9ctrfnK)f3#O{!;a_m7h%)pN75Icc0@s-NoP&PkK{){)Ce<JZ>l=A@ba
66579 z1}6=o98s=1%Dp*h5WR?Ae{#|wauK<z{;KE2Nh8<umc>bv9I3qaovERNWXEXoIBC?-
66582 z_P6~>P8vizqTL^8PsB-sC`J_f1I2PUX%O#-ch&JOlamJVj(Arc@6)sIUYs<DctpJF
66588 zPMTED-tHeKO{(W+WpmOv$5cPn$DNZV^{pe9lg6*D<IPDk{TU{;`cI6LCiN{Oo0G<`
66589 zEtH6pX8JQds&Ud>&1=ypNv?zCq>(L+*B-^#bI=DyA6QKvSOzBzq8w4KI?BB{X%M}L
66590 zUVn1ZAaW78s{X3y#YrRA^OnU)lN_nM_MNGrgJj2O@;GVK(3cx0O{z8K%}Ik}1C9-9
66593 zgD6H6`vb*tIB5{?h<DZTE|Zf6@s4;`9q-e#?_QiVh<HT2>WG)aNh5b{qijx^WJ>4F
66594 zNu!cZlE1oIJ|~Sz`g7-`QA2}XoHQ!w&yABtwtTWVX;jkRq1YRc3{D!Abm+xNqlOl}
66595 zIcZeVp*tsy8a+7?Cyh!vJTyC3lEX=(k{-P|Y1Gi<R8E?!ZBCj4UHg<=PMWLjGpR6A
66597 z#5Nq$(aNbhrYGj4x!OLX4|jke)@KaXT{&r-SVtcg5$|swc3+${SKB9*BH9t{GXd@H
66605 z+&O8~(4ZG5jY|4+<D`)-pKMMVmGpNg_68(_lSU;SdU4XIp+#>_8kKbD&Pk(2Pfo;1
66608 z#m?x%9bky{nS*s#P8uiH(T7FE``d@z7bnfG*h!^`c0~J(K)X99jWeD=<RWra^-N;(
66610 za?<#<b-X!gra!}^R{x1{(xkqHWOLH^wS^LK(oBD*M>S5G8+k1@Ns{YeIca1|<F!XI
66611 z_8jzq(Fa!32bRG}gD6LotB!JSP8vinqSv3CG>BY8uByN4d2!On^}J<q(j-SJuYG4~
66613 zjs)xz{_YcrIcX+i16-kvcvo>2QXVG_VjZzQGv+P#%}ImaI-*y7OYO}`gZM@Ks%(9|
66614 zIB5{Kh+EYo!h`*7f0C01(T-^M2ig;H(jbZv#r{CC98Ma<JK|k+yvyXILA)d0Rmc1E
66616 zku9HWP8yZ;cPRD-B!iPiB^`Qk(x{<DZ%!JObm-1Wqef3o#7U!)4iC-FmE>^JsH8`4
66617 zP8u~dIhB*<Mw^r7K-WGcmy_m3`%Ef~R54OjHB$BFq`A>P4-3~6BHI1Fs>Pj?=0=;7
66622 ztB!JSP8vinqSv3CG>BY8uByN4d2!On^}J<q(j-SJuYG4~=pflKnmkS#HT31iNt0@g
66623 zd2`a>*nne$+CI4~P8viyB3*T)C+4I<1S5h~N3bkTnn|qVjs)xz{_YcrIcX+i16-kv
66624 zcvo>2QXVG_VjZzQGv+P#%}ImaI-*y7OYO}`gZM@Ks%(9|IB5{Kh+EYo!h`*7f0C01
66625 z(T-^M2ig;H(jbZv#r{CC98Ma<JK|k+yvyXILA)d0Rmc1E?7J5y4I&;9uR7x8aMH+K
66626 z+bElpCYjQCbJD1!ljN_imd{C}lK$K|Y1Gi57blHM`g7x?ku9HWP8yZ;cPRD-B!iPi
66627 zB^`Qk(x{<DZ%!JObm-1Wqef3o#7U!)4iC-FmE>^JsH8`4P8u~dIhB*9BgRQ{z-yn9
66628 z%SqD_JCh0{Rg6@Xja0okX*y!(Vd0uWM7!@-wYYQAbi_DmQZ#lX=A?0sAj+RhlYo<E
66629 z`j$jBPMVI`iETKhqm@&3Oi#>7(-AwP4|jke)@KgZT{&r-SVtcg5$|swc3+${9kG*2
66630 z5$%Zf8G&|pP8w%CfyhPVs_L1<<{i8^X)u~Z9Qy&s@;GVYV^2gpB7SBd-i?zc)w8$z
66631 z$4QgwxmnqqG|n;APxW!<q)C12$mOK*YwLJ((oBDbNv-}9<D^M_3(4lB@oNhu;-s1W
66632 zOpj`uG}rT5td}I$!E(~bmd0z3V(dBS1EUYDrVlKGlLk?aC|4cj-kdauUPP}yIcX5N
66633 zh+I{F)$`({k?VQO;-pEAR9^ee)X+h)V>Ef3G-~L}jguzT8uR9)!Lb3y2DN>1S)4S8
66635 z?wgYay>&#d`j*<8lLqmN_*L2ZdU4VqZV|VtM}!Ca+x{dc4Wb><?hmvl;-o<oBZ~cj
66637 zT`ixJMkW2ZbJD1xK`%}kmGtMvNh4c6*_<>g>F-eN4M+wjjY>N7;-pbSi{6|xD(TRj
66638 zlSYl6oQRV~B^@4`oh!-Vq)|za-kdaQXmTni&Gj}X&4I3cN-ihO_4b)m7^z~Us%oU_
66640 zR2|b3bJARIpV5aqz!2**2J5bzG)}Ce4~vNRw-387PMYiOlS&coi1wL)c6Ux1XFP$(
66641 zMdYgLnZ)KDyf|qvnnWD?0mt$<Y2sr~L_8vXW+2{;lP1-(xBJIQlj^xy*_<@aG1X7?
66642 zap$B-ee1~Or15L(cyrQBe}+k|{uAS*Nqq~+=A`j!3nk*Dnf^?VYMeBkycX*u$#t-t
66643 zG_s}f+M^hI4*J081FPu+%iyFzlq1SjN4YmA4Wbv(>rYM^L@pv%)nE0zIBDd1-m*Ap
66645 zSQaPEB-U|90`>`i_ld-uG?TFbuFyujt2hfOkCO(mj#!@=^OpPOq(N^T(W}0t_U5EP
66647 z-VyJr<9&Me-HVe35s!#h9r1EFY2>bLl+8(#OzFHiX;jil@>f^O=cG|df9{+#YG}}l
66651 z7_7T;(m1h>J}e^M-#+ZVIB7cVlS&coi1wL)c6Ux1XFP$(MdYgLnZ)KDyf|qvnnWD?
66652 z0mt$<Y2sr~L_8vXW+2{;lP1-(xBJIQlj^xy*_<@aG1X7?ap$B-ee1~Or15L(cyrQB
66659 ze+`T?AM2&Sn}N5;%goa<$r$&s-ef-39P%Hd#8^htnMbvX&b53gx|nJFINn;6w-)8C
66660 zMR{vc-V(&o5`?z|;VnUUOAy`?gtr9YEkSro5Z)4mw*=uWL3m3L-V%hj1mP_~cuNr8
66661 z5`?z|;VnUUOAy`?gtr9YEkSro5Z)4mw*=uWL3m3L-V%hj1mP_~cuNr85`?z|;VnUU
66663 zEy1p=CD@g<1iP}9(1_I%?8;h#U0F-8D{BdMwR#1$+Jn8`!e?HsK2*xtk*wE5`y~7S
66664 zID7R;_WyC7H<_!k*Y&hSo1L>OxF>C8+F1JS8EZ4O%+9PMvmVG^nLQR-le5eE3+)a)
66665 z3a`d<SRJ*0u=brGI&05d){bE^n-q~ntQD7%Y7!;ONe!tbbz}u=%a!E4WEE>i)`qMF
66667 z_5Yu}w}Fo$tI~(-o_p)FJKdd5y3_d}<ckaw^4SSV2qA<JvdAzQ$S|1<6C<(=A|kSg
66668 z$RZ*lA|fIpvMjPJi-?HGBC?2xh$Dl@A|i{3h=_=Yh=|B!SVVkJ-4vv{>x{bl?tl0F
66671 z2kZ}cy)k6~fDck206_>rDuf{o(jfv-$bcARLKbAB7gRtcR6!i7(HCl=4u+vOG{OjI
66675 zQj66m)WK?{TCWa6?*iplGLBW5uY)q0IbL(F*w@{}-u0t6j^b&{U>TTKV=RXIc4iNt
66677 z=J1i22>|_Q6z;dM7AzmlMq^1UYsJ>aV1^JfL+I#V<1q6-#h$`<$FuSH?$ekvRP?tA
66678 zih({i5%)VVe+cxwNw|HEJ%=TotP|@$&z?twU91cF0{s!&L65{Xdsq+Fc@ujRwl;-L
66679 z!B5R(GqL8|*xRtqBDP2gqqn|KNkxxcqJ+?E-;dw*LH0q!`EmAf{Onq`7C-d~_6cll
66680 z9p)!MZ(fg|-GEsN(5wFew|15S^zBb$&24NO*8B|n43=zX+wr?T%RY;3?qEBxwa>B7
66682 zJB8b`>@0rj2Mqh37%k`V8!xa6SpFmSBP_qjE@BHm#vEy21pNf-{FMC^F<)g@5yLOo
66683 zFR<nfb_3tN$!=oJ+fE+6i{J7pdlk!jSufUqjlG7g-E;Em1FZQ6C(GJ5Zt$OCqJ}V(
66686 zVT2FI{YGd+JQ(TNW-~P7{wNrQ?~aDixP2OsmoWAxVEJ?K93IP5n5v{<E|`Ju&V-pt
66687 z7_-70tTPwp;y1n%-ihBe59VQg%o2Fi?}m3{$pTn_?=FEQSo6d1VQgU~tVBE?fsbIF
66688 zkHSZBy9U<a7BdOf`2>6dKeZ0lVVzIHC-MB)Gu`<xxBMN}*#H~x-Hosj_df-n!up?u
66689 z&ni*OIG@9kU9by}>kIG&MaAs%Ma9Al)W=%;v9&M5m$A+PIDqed1-^nMn3WLQAvmOf
66690 zeJ2h-`wF~*?Vo@Xc)Ta!B)0H9_#W23443h<SK%st>gVut{1j#{EdM3^5=(Bt4cz|~
66691 z{0jFmm*Km&;1;&_8~6>jcH90nI%c-tVheZR4u01?xQFfEhx>|(xeieI;XmBR7xJgZ
66692 zH7wD&t^npgL$Pz9sc3c{#1cREW1SS9f+YbS!2KW(V*L;gVa-&YisfM*#_}|trkFg=
66695 ziFYc~_5I3x{S@kT)V4|(bF!kW!T&+$?|}1ny8Jus@%sVi??>;a$-mPdzwdYce)N8-
66696 z{5$&i?~wdE<?-LaL{!Rr+3VY$gepA=Rb~>Zv?NrqBvh$MsG<(4U;?Uslo1DI;#o;?
66697 zofQviZ7JeTL>)>(9Z5nROhTQWggPY&bvOyNKM8ee63WnDbZ)~*C^M2!rY50`CZP-_
66698 zp-fLg8Aw8zmUM1Yl2C{LBGhR~sAEZ}!%3(!l2C_|P)Cwb2a`~zC!r1`p-$^ZEt-{1
66699 z(WOim_U|$iQ3sMxrzN3INkSb?LYeHR$$lC5i_TqY5{hUNick`YNYc3rB%w-6I(I2a
66701 zE0&V<t>L6|<xfJ9oN1E%DA{jP{-P@uNkWm8gd#l&MP||!OZKCTq$`%3rK3q#EIDgO
66704 z$~e4!Q{`_EZBAv6uU=vce)(S7<M-I(*6jUsS9!XtJnAZsy2?{r<^5L&P_vCygjgb$
66705 ziq&Ep{@tTY!j~dPHT&+L2sx^$%27>Cj%w<1RMU{7nwA{Z^vO}p6gjFHmZO@va#S-<
66708 zs`+L)s`)o^RCBHz)qJNM)to0sHQy^oHQy)iy?j89YJN<PYOa%`nxB-Tnj7V)=BMPS
66709 z=2khXxl@j6eqN4henF0E?v|sPUy-Al2j!^dSLLYYVL7V#bvdeeOy0LSE=M)LEk`v^
66712 zcliyIe#4~SFzGi;`VEtQ!=&FZ={HRJ4U>Muq~9><H%$5slYYab-!SPnO!^Ize#4~S
66713 zFzGi;`VEtQ!=&FZ={HRJ4U>Muq~9><H%$5slYYab-!SPnO!^Ize#4~SFzGk_cjfT7
66714 zq~9><H%$5slYYab-!SPnO!^Ize$#)??k%`|t8?e>9k{jqhDpC+(r=jb8z%jRNxxyz
66715 zZ<zEOCjEv<zhTmEnDiSa{igqZ-@oG4_8TVshDpC+(r=jb8z%jRNxxyzZ<zEOCjBPi
66716 z{-EtQ*qcGWQMhxj@HKg_5dB7Bw%@q!6=E;P_8Z(r<$Xi+8{9tW+&!$oE&2^^<=sQY
66717 zPBijvypx*@B}W-7OSsHb982wci(%(4hJUS*_Y&=wz1M+fe$d3Jk6ym{!3nWY&X$Q&
66719 z{D1ymmh(~+UFlO-VYz4T+y4yd`;Y#qkM}furAg0!^e@wS+5hYwdPKgLru6kFBG_u0
66720 z{FEk-%WzuP<euGb3hvumRkm!%efytZ{@r&j>|TK(KWAa7j%v@3FT19#dhAaL#V2cu
66724 zi~UM<>VzaxQ=Y**JU6MRwF~hK<)F2{GXu-grMAm(j!?+63etyy`0~lKW}mlweEH?I
66725 z?c3UC&ydPBU0zkY?F{@>D*heD|2}*tTb^}}nv_dy_7SHdraXCtV$N7j-+A?6xhc;s
66727 z@(lSU52VW$`pUxi%66gYyShcv>lJwoEO}l`*~3(wYoI&clp^Q-Vvj$~<kbnvE8piW
66728 zX|hH8_$+xg`h2_p+qmQ5x;*x%Y}JyA-gx{ScAIHf<I#6L@<dDaLzr{6xkP1qn_V*?
66729 zqfe8^tV)meOAit9JoO>y>(SZm33-m}xbJ(%C%=hHPh!py*w-WEeE!kD{y6;KfB*Z>
66730 z`w#x70sQ~+pC<X_5oh(~?!FAr&pX1!IYF6InB41Ql|D|f{~7-;a*g(1d|XUf#j;QZ
66731 zx3TWVJ#22{S+=6_9@}g`+kkzj-VxKlKVk(GjM#;}qIQ@z;w~&~iou$uM%dmo1r9YW
66732 zgELJ#;Cj<Zc-VBCr;kh@Sv<0ymyGP@%_Eoa&XL<j?jL!4<b{zp`K;y;U)o&L+}7OH
66734 zmeQ7{mI*CWTjsSaZ`shYz2!j5iI$5kw?-?Y!=sBv$49r0?if97^!(8)MsFOwYxKd<
66743 z$OR);>T5^t)_06NGxGAtJIzXSxH+#mt{-mh)Xz3AY+lj4v3W=H!RF)57xWv=4`nVX
66745 z0%MJ_!xQ!H`0hW$F*54I3KjJk2~nTr@k)0th$Q5KERUzTGemkqhM=-kjL1^%yb(?)
66752 zns|U$#^by#-pRY;3;EpmX1*f+GT$7(#`jfQ{6uwmb#rwGzg#_^_f~Hd{_4Zkr>n12
66753 z->uO^K~0IMuW7HDQZu(^S<U*I9W@6<d(9;=Z72*)A6h)Le(1QN-9u-Kg+td4-8OXp
66755 zH@9wC-TJy6bqDK?*IlT)UU$FVsL!e|t#7IyU*A(dtA26)s`}0KyXp_upRB)Bf3yDK
66756 zF#oWuVS|U&4r?8}dhqttTOOt2RtZ!-jgt8^O6JojnNOo+K8=$3G)m^v2$@eKWIm0M
66763 zdS>;4>Xp@-s&`i(sy<bHvHDi^gPK51PEC1DBj&~Kn%OmrYF5^4sM%h#Pb>H2B6oJ6
66764 z)OVCr-%(P1M@jV^CDnJ7RNqljeMd?49VOMbJ8y*&O1*d^r23AK>N`TJ?+B^BBc%F{
66766 zWD7yEg&^5NkZd7Hwh$y+2$C%r$rg-c3r4a9BiVwHY{5vj0Fo_$WD6kK0!X$nNwzRa
66767 zwlGPy2$5_NBH6-6vW1Uii);^D^r>3#sOfdAgf+8HHj6D~8`y4klwDxAL4zEK!&vBn
66768 zd9V_;z<xLhSKuBG@FL#8C-CWfQSoiQmha$)`B{ELC?fjA5>fiZHqj!w#B8xlY#baC
66769 zdj{8tV}rZIMR7+p)LgY@@KJT#;Opv?C;jStb(OmH$w}&gCl{!vp4_Bfee#HU|H-Rb
66770 zsKn5UOG>rIk_lQz$-I)~B^$IEC5N=dC6~2zL&T8ikikQ0hm6&B4w<DL8M0=`)*<_b
66771 zygcOWkSjy(YUfI0+Rf6&(s8BTr87$xm98w^q(kYE(le!3OYfA4vT#{ZS-h;Ztg~!J
66775 zPVyxu`I3`-$w|KCBwq@WF9pe$g5*m<@}(g8QjmNpNWNqwUow&}8OfK7<V!~KB_sKg
66776 zk$edxUjoUOK=LJ!d<i690?C&q$(JU{mnO-VCdro}k}pFfUxrA&^pSk&Bl$9$<jZW5
66777 zFM}jsGS@YF#Fu^L^j#xxMQCEVxBlaC?g7Wy+yOV)iri4&ICpLryPUg-_2zB?f9_Ez
66778 z$h{8r1O3oGuo9*XoCFI8E*Q9S;3ilz@Ca-lcoh!i8F^WGrFl(x6W~nVJh+~>A#Z2i
66779 zp}bRhm-FuA3wW46n5XBD&+o~flfN{7UH<m`1H2^vV*afHr662TR8U(mwqSC>tb)Y_
66780 zYYMg&>?=4{aK7M1!Gpp;VP0Xpu(hzWa7N+6!c~Qv3-=TrE<9a$rSNW%Run5LDQYYl
66782 z2HhU?usBqlTU=S(R6L=$r+7~B;^H;Mn~V1pA1*#we4+Syaj%DG-MmG`XOxW3C>fto
66785 zr=F+t65h-^`K+96d}+>cz9Hu(-_4Km3j=ES?Ezgv8?Z>^4A>&#1CENZ1FnmnT)&u?
66786 zTParNPRgC0yFhHo-6Zzs9uX&Vujcj+GzMl3EEQJ<P7wD7&KtOV;D&)a2Ob)DYT#ux
66787 zkSEllyuo=5dE@hX^5*0%&Re54<n7BlmUlkyM&5&bD?cZ{B)>7gJ%396-27$vYxB3|
66789 z!a0SDF-A8Q?kL>viJuS|KM^v1f@J)pC&UjGmz3U#l6ogf>YXU5cOs<TiI93HLh79e
66790 zsdplz-ieTUCqn9-2&s3%q}~aWdM8ZkoiM3)!ld2_lX@pi>K#tzQ%>enPUcfi=2K4Q
66792 zh|H%UGN1aq`854D%ZjA4%1AwHi*&Q@$dbs~$Tl`Na-6M*++>@hp=d$0CfXM5V*8?t
66793 z*oo+t=-%kj=(*_i==}^oyPQ$UdNU?vOwU-5u`***#_o(G;Lo_4(Hk>jS+UYsQ*1(P
66795 zYO}^>P0pH?wK!`{*4C_jS;w-@XWhtpkR8a*%P!Au&hE&bmOVdvMfS$*UD*e-Pi9}p
66797 z16B{%GGO<BBLhwixIExiu96$b&C4y%ZOk2)+m$=rlR4@8!*s8mzUNEp2KwGC-D9S;
66798 z0DWJSj(7T=Bprb+#tq+LZD~=~oz}qSruDEDX-nDWwC!wP+6i_d?H0S79!@VxuVuaI
66800 z+5u~#^P?-G8>73Thoh&XSE6?_w2W9rNk(Hvd&ZQExf#nc)@SU<IGAxV<5I@$7{t<J
66803 zm_H{gXK+q!POFD;-E2qYu_&3xqGTS6l6fpj=CKIrr4iCgBczu`NG}bOUK%F7G)#Ia
66805 z2G8X+d>o&`=kry3D?h+b@vHp42#I3RC_2Opu~@7VJH-)kPTW*Mjj82nE7VqXvN}gy
66808 z%-Ci7ywRO;+n9?!Ul6N_wZtabIn`JZ+hA;t9f%!^osV6M-OJQ6W0}R7^_gv%UFi4o
66809 zFt4u3+-&SKP8!!u#f*9UHJ$X=Oj04HkzO22@M7w&XTMiO6MUOesr^0}N$_||rS```
66811 zcc9&OGU?u<`>rQ-2RcmNfew>*pu^-HXtzpDeA3X1*R4|NC#v1gA5wRq-P+ZCFO<3i
66813 zWQ^>QF|tR-$Q~IZdt{94k-6`tCO)g^#Q<cF49FfCkUcUWdt^ZN$lOmQ(ockhU8Piy
66814 z%p`kcCfOr1$sU<W_Q*n{k_nMYCPXTk5UFHBq>>4dO2$Vj86T-+e58``kxC|;R5ID5
66815 zlF25OOpsJEK~l-&kxC}dqhuaEq3FHW-1n=@<ZtZ14^7{1X3Fb5O&Ru-uhQ<ZEIo%+
66816 z>dmZ8pQg{(SLhq{U94L_&F1QN4b6xdB}SvsZcJe-jAd-IvBNlsO5&1n+XOS6?KA7m
66818 z;+y1~?pxqn>D%Pn?K|Q-<GbqX^&9>yf2qI8KfyoMKhMA1zrnxLf5?Bzf7yR0MWjSi
66820 z;A-GbPz1xlqF_AO8te?t2+j|#2(AzA2<{Ia51tEN5B7$PP&70+R2ymyb%dsbW_$Dy
66822 zo1)FtmTBwRT-2o}wM*J<9rSd)Sg+T|>D~HleTlwS-=^=^kLwrooBBf|WE2=RMw`)P
66824 zwdPsNtqs;r>yUNIx@_I?318GV*w^42@9Xi+@-6nQ@on|(^Bwb@_ucT_^IQIyzr^3@
66825 zZ}(5}&-E|yuk~;7@AV(?pYdPy_of&rS$O>$<n^DCvM^;;%I1_^DTh-|rd&$7nes5;
66828 zXw$U$+6rx>wo5yVeTggDU0u^-dWqhsx9d~%x%x7Fy}m;~sGrm?>9-9q(v4!H-WX?e
66830 z>%4Wty63ZeF<*(V-Z#$I?VIge;#=$6;@c}@_OkDeU-+Z`B7d#F)!*r#=AZ9h=3npM
66832 zK9euvtN9kbmmlTl_;u{d`9-d%6fI(sm@XEGm12|Fjs3YZ;;QIX4K+(GRh!fa>Qr?e
66833 z_UJaKJJmz#DfO~?M-y698>}^G<Fy`bj<!@=r)}2`XeYFb+AUqt!+McktB=(u>$CL5
66835 zFPgV3#R^+RR;|@)bz0M``PMRPy|u$SXdSmM$h>LzvSjRx^-cE8@GbPM@U8c4v#*2a
66836 z-1gtIDP>LAAD+tQvE^(7+sO{GQ|vOk0|NWRgP{S&Ll4Y>rLYdR!vQ#f{o-4gUc$VH
66837 z*YdG^GM~j4^EKEv-p7ye^ZW*XAOa#!#6_#<#QyO@u}W+fd&JA)thgrbsg|0fmaENb
66840 zsgv)iQ{<^r<f#+$)QKh4iFhzaJeVUM%n=XfhzE1TgE`{C9Pwa|crZsin8O~-VGri8
66846 z!5Q@63?|?VdT<64a0Wd%g9$i;9-Mg|oOww&ne6%Zw~^<;n3sSt&x0{90b`yAV_pKr
66848 z&0=F3s$v8GdtO-o46|qbEMjkFFR|(DEo=sRE1SjM&StZBusQ5+*j)Bb_AWNxp6L^n
66849 z?uXb%*ebS~eT=PPpJJQXR`z+ei+zFZW_#FPwvYV_+t0qt4zRDVgQ$oPvm@-NJ)bB0
66851 z@C;0ZPIw-=;02frZ-h6&o8cvR3%nKH2D9KD@Hg<cun^t@i(oOlA3gxf;6wIoobdPX
66852 zkFW*)341l4K^^{i*bV;-d*N$v7`_fi;G6Jm_*eK2oPzJd88{2yhjZ`)I1fKUwf<wc
66853 z1V4e_!CiP2UW0#!2k-~%5!nly2%gR(JcGx0CeP+Md;lNF^LRcg`$4>z59Uwu5<Y~N
66854 z@-kk|D|jWZ;?>xT8Y-R=uZaiZ58|QtqsmlJxvJW8aH=V4sv1_))u@`GW~xuBCF&5h
66856 zd$S_&3crNg>1;aId<%OE?$2=Ma-D_Sx3jlno3q($EPn@k2bSRV$Njl%F7CgRy%XPk
66857 z7kd}BIiJnPl6SLrE2>=0Bn7?Wz4-28XExZSiXVMtIoA9T`w+IUf~~-sE7?lieuRBQ
66858 z(a?uh;k&EZYJB%&>|^+;H4OcjZDbo2!}cuKys^7*iynsc_pm*<|3&siY-caqi|yE}
66859 znV9Hz`|z{>!u|y@>}UJ24*DSOe}#Po%MY@H_*r|-S&(zi3TMt)d$w6FXPf2dpWnuJ
66862 zSZ9cw!PZ`>Bq-;x<#HZdUCv{xW6X@fk~U~l{1`odg)O`R-hd@f!Be<>2A;tdCc;F-
66866 zuYoa-9))rLF|29N!wawp{sGU)X4s5J`j7BWSh5YaVQZg(&tS{jVLR^ItDJ-$&(e#Y
66871 zQ#8zTWmr<q%drIW9qw20D%`i%MoGckSB-UQcn!8Wln-@gC|2dH#PDcVV(|dCe-M9A
66872 z1ZGD>F8(O~s4&cucnFv!RRvT{)f78l8j8T2**9~sUokLyrpWn=!?;a%W-*T9Hbc!&
66873 z>?aFi_^C`a6Wg)pH8$-0iti3lhv2)VYAL>3rj{w1TwTSK^BoJ!ym72wtyW{r8np&%
66874 zViv}dz8R2HSQciV6BzqBY^qYD+)~CX)09QZI%StLPN2$p;T~~(|MTi}Iam7TC-s)U
66876 z=~m_`s~#VXNumR?+@2?vK3m-LosZ_UpvqOn@U(Bw+Lx!)KOWVgKF40CJw_Zy-%PfB
66877 zGyO5Bz*wxX=h;?jFl$C%I%3=pL9{&geDR@Df5o-<s=8?NoN;SjI%2<`n__Rfw!Cy?
66880 z@A`M-yz4)d+4rKHcm2mQ%U+T5uK!Ht)Ejc%^<T;P`b{}se~O%=KOpDm56U_ELvoJ(
66881 zn4F_OOU}`sBj@NJDCg)elymeyA?N5HEa&JilXLW!%Q^aoqK3$lsxKf_pXpM4rt}-r
66884 z#-Cy2=#N({xQ_dOUOgI8J^B;Wqa9b_|Dc96VGtCfB6<P_qkc%%lW8tJY0CICF+N+d
66885 zX1}ToI;wIkjK%UkZ8;9cDd~>FY=?Gizh7q>&;cEY(^i{7n1m6oNzLg`(3~&Ai}<N-
66889 zv{^h$vHpy*E#L)M$JV!Ig1&u%KY^_!t6bwxs@#xNxkiG@t>v}Y&R?!|?J3Z;zd-T&
66890 z9K{<@1B&kG-ZV80_y4^5^}UYzHKh9WJL<Pet-{v48hEHW6cM_Wu;<reiN6(tY5l(w
66891 zLoayP{|m86*Z5Mtq3_pW{I<}Zn=f*n+bH5<tmqN*#L7-hZ0Rf!`#amkNpVHo!=o+g
66892 zJg7EwUQ#DK59)Mvk-GNzaq5oeXRC*wU#p&de!qI-`3suz{6j6;RiKr2wP`I~GrJab
66893 zt=77__G+`c&S}fK?!VxFA@_yK7h1H9FHG0=ys+|xO)u<z;m8YTUby-~uXb#5mUeM+
66894 z)8q-0r%s+XdHLiGlXq%&CZC#odGehX#f#Aw2fx_x;`kSPUYzsd(ihjgxc$WgFP?bu
66896 zjk-$Rt8TeVAJt8Fl}22vV!2Bn)lGAi`dw>bxl2<#M`5{+Ej6Lki`Q};TPUIQQQe5E
66897 zG>yP(xsEN(RT?4iTCQVr<Ly5-e?n=B=O|3qv4s*!y?9O6u>})Kz1PA_Sdq+K>cwli
66898 zj?JG?O5yE4ihjJ@brivbQZF*@I*LF-srRh&gcZ`<rCwy*h1ZR&AFum4+z^35xbV7X
66899 zHAp4Sq;TPNKb@OKU=S{3ZVdg%+|SmAh;L&qWbRoFQi-#}T*%x{+@=v2m<yR3Lq9V2
66901 z3A~1@-ToFdR|^4GX)1vs=&I{3O(ojZU3FjQSJM;^K3$T?gijyj%}-yl*|3ib+sE;v
66903 zVY)hD!b)}egxwR4OgN)1n$WARotUNWnAkLN!o;Z)=S^I$9-g>UJv;H##LE-!bcl{<
66905 z_WZLqo_#PWFez_Rd{XPA&Pg*SEu6G!(&kBfCcQlA?4)ax?mcHcm-AftbIs3nJU8vR
66907 zERriMk}E8dD=d;LERrisk}FJ-D@>9rOp+^1k}FJ-D@>9rOp+@&$rYUB3QlqbC%J-?
66909 z3Lv>cCAmT+xk4qm!XUZAAh|*#xk4kkBKV)<3aZbP*kkJBhrZsD%?$nhq&H-#4eErx
66910 zK9agaJ^TjD`)@d<-p~{+s+DRj;~KQCaXs4XaZ9yj+D2`Uc1*iC?v{4vsjzN5RjcRf
66911 zHTt-x7VA@<+N#fg>X^RjsT=y%@d5q7__%&*e5ZbO{6hWy_|4<@jDOh(jlX6TKW!O}
66912 zPnSR4{B+0D)1IDhbUeM$nDO-Cr%yk9<>|ZaT6?U$#8}+kZmesc+rF%Qefy5~gY75V
66913 zFSXx(2A)ZOrudoqXU09#{mkrVmUy_r-HYizi<z#{{`g5tD1B5n<|<7iIjG+k+#D1k
66915 zslKk8K{8yWRA1N4AW>H-)z@`1h?|+HzOG63bxpFb>t-7_D^U7{llp~|`h}DFg_HV)
66918 zqLTW>AoYtu>KB95F9xY!3{t-sq<+yz{i2cjMI-f#M(UR!sb7MmehHHLMJM%(PU@F1
66920 zYtg#2*)4h6vX)kDW6KO}Ps=LpSj!&mV#`_WPRl*r7@ec%j&8Qshtq3Duh7Sh-lb0&
66922 z+s5o4b9~H&F*nCNYzws&wAHk=wRN@4Y+KZ}x@}9_-nOG{=R8Wqtv)C=_mOPwBiY<X
66929 z+n_bX#Fd6daj#)Y!`y~t4eJ|rG#qR=sRkNut3|`phZhg8A3kn)_wd=nm#7WHw+-Jv
66930 z{P^$-!*33M*cfUoXsl^$YwT*A*|?~2b>o)Cy^Tj3&oy3eyg$M}B6mdPh?WtPMob^E
66931 zV8qH1n?~#&ab(1q5m!g_HW^J>O{GmuO%s}?HqC2V-n5}<XVamkQ%#qf?sz!f&Batc
66932 z^^y71N9I!>nNNLWKJ}6L)JNu1ADK@rGM`#xKDEevYLWTWBJ-(5=2MHzrxuw{O){UF
66933 zWIi>?d}@;U)Fkt%N#;|N%%_~pr<}~EoXn@3%%_~pr<}~EoXn?!%%_6Pr-IC<g3PCa
66936 zKh2xtcX_8=x2dtZy?P3tRlSTat=>_6u=-^6rRv)?P?OF#)YS9ca?PeCHEV0O)$Ff1
66937 z&X3mIta&&zG_+u7&Cs@?T|;LMT{Lv{&@Dsv4m~>b+|cVo?|as=+f=)|_DJoS+N-s_
66938 zbw*uQU1?oY-GsWSb@S?$*KMfVS$C-JRNdveJN2SIT0gkHL9Syrr+#Vuy87+)2kKAM
66939 zU#!11Oc@p)Ry3@3*w|r{hs_$cc-Wd@TRr*I-3Or}+eb#WkBn>|8QDHEvVCM^TV!Ng
66942 zo5_01R)fE6FBHf%aPF7;%X6W=yan3Jr<X4%Us=AXe0TYg@-r~4ycZT$WL1<_G*wKf
66943 zm|8KfVmYj-*jaI?;#9@uiaV8}GFmyfvY~Q(Wl!at%B7X-Dz{f2s60`5vGP`xQWdT$
66945 zt2(D|P0Z?P)$^-YRBx=_)xRcYO{}IwuKng(6SL-I&83>#iECmGUGiv6OiyIHRSM;$
66946 zKGI8lq?h_gFZGdLYLQ-QkzQ(%UTTqEYLZ@Rl3r?(Udl-?<)oJi(n|&DrR??j$JX;t
66947 z9%Y-KyxxD`uA~bJN)|zV$(H`RcSHPeXh<cT88WHw9^Q~myky7`-aO<g?<_U=tkP1x
66950 zD(+QUl{uB=mCcnMmD4KcSFWhsSh=h6aOLUBE0uSvw5nKDNmXN2d)1VxxmC-m)>rMQ
66951 zI#_kG>QdG1IK<QA#qs+1xOjJbc6>>EZG2mNfBbm-Li}d@VRfjwz~iMs(o545yp-Z9
66955 zmDqE<&DU4yTlE7a2lZ1Wm-MScK)-K<jN&2VjK(3ejgBE}jTuAs8;gfrFxCxuXzVO4
66957 zFD-8>pHM!vd|vtT@(rF$<i3Z{e-^XIOq7_P9@TX}6VacEXnpJ+Y3RSRK<6j-GZFoF
66958 zq3NvUe#U@$hQpn;GF_$AGaT-$<$flDdWOTD%iJRk)H59J4Cls6J;UM7d+uips8Jtx
66959 z-ix_PsZk$y-g7?_L5=#jv!Q#Wfg1I3=SVkRYShP_Io;0~P@_KX%$eaTrAB?+`PBVP
66960 z1U2g8&a&>225QvDoqOGQsZk$yMs`1AK#lsi^K{fzN{#xsv$y-12x`>Fozvap57elS
66961 zJJY-IQlmcZ`!4P$52(A8Zmx*9N~yb)ZU%8bDM8((bn}XPtb)2r>As)i#!KC$bdOae
66962 zJ}Kcv2BbCvQkwy(&4AQqKx#7}wV8VaBk}nOF9wy=W-6)8R8pI%q&8DYZRUPbg1)a6
66963 zc9l}v%pkRyL25ID)Mf^$%`{S*x$mN-x=JZ+rjgoABej`EYBTrPO2}18X|o`y&4Q#h
66964 zbC1IWU8R&Z(@AaS9-VQ||DUYQ{zsHmqOR(DYBaC8PgU7ZjM{oC@3g)u@2;(>^i%p(
66968 zrIc!PD=W7Oqg10ssz!@cjTWgIEmAdFq-u04t3<u!#p_m9iDN;O3Zqn`NvcMZRE;L7
66970 z+$xMxje=B-f>e!yRE>gEje=B-Ze^9Ix4d}W%8DNSa;q>(H8N5)GEy}%QZ+JCH8N5)
66971 zy7g9~3iIN1>n(Z&&aKTT)d-|&1X48usTzS)jcyf|sLi~{+$xM71#~MmN;RsaYE((p
66972 zsFJGDt<4e@n-_yyo6#eYZXHLdMuSw12B{j|+Km3KOW0LPsYbVAbL%)tHEN`4)JWAB
66975 zJa*FD6uWKiHIJK@GV9H|ncbF^xx~uL+-B8g9=FD4-n6D>g{%cxHP-5^uB@3^i>z%~
66977 zs+2aPw69wqe$rJ+X<xTKbZbdU`&y*-wMgx2k=oZHwXa2LU$;I?RE=J|Zhe^e%T-EC
66979 zeVC{ky?EXFF!6V?l$NBluOPLrAhoX`wXYzxuOPLrTOTH>MlW8sKBRwX>(-K#_GP5@
66981 zR*m#;i`@#7(!MIGeN|HXs-*T+N$u;_l8Fk_i_EPh>EAcIbtk2L4O06Wr1mvP?dw*U
66982 ziMrE^!L2aq-&niVD5ZThQu}J8_H`>vdQOnAtCZ5dZr$ltqm=dylG-;&YG0kyzHT*|
66983 z>MEtQuTE-Toz%WMseRoVHRLL#v~QTyzF|`Px|M5+tMqk$ho+rmbG6%Sg`VE0YV|4X
66984 zvc8P<>N~)%pM(PaHq;yG&~DVjG@~09_N~(eYmDQt-M9&d`q$}#Gv*?={&=0P>*jsS
66985 z4-c(Mo^DODrdtcFmDVO}w{?V<SXZrHxjs~>ugN#TH`O=Kx7@eEx6^mXck1yPU4#7%
66987 zHV5_uUJjfMTnpR_TEU!Pd9XRy5u7I1)Y}-`6+9d~9lR2}8`46tP)VpU)b7!<?kA)u
66988 z-}RBc>mz;FNBXXh^j#n6yB6uY7U{bd>AM!`yB6uY7U{bt>ANQByC&(oCh5CwZASlk
66989 zivC46{fr3x%O!fQDf(AK^b;PBR?cf=S$rC+<f~X4-^053S$>V*V{=6wTOnH6=Kl4@
66990 z*gkQVok(17j9pe&u-?S=#=!q)*BkqvSod&_Z>evcZ@ce+?}YE7@0MTjhvoWtWBrr;
66995 z^;P<2eUJXKepbJx-!m*D$0#?NjSgd)G2gR3V9YEr8_jleiaFO@X0A7Pm<P?1<|XsC
66996 z1y;IMEZ4E?wq{#PthLrQYrk9@@TStY%Fm-bMrGGWXB%AEmGUCLt6o|{J#hI|e@Vns
66997 zC*rB&_tfzx)v-L-Ezi~OtCyP8R==nAmn7r1Jh&|nZp(w)^5C{SxXmQo;EIO+l4Q)L
67000 z3?9tj!3-YE;K2+Y%;3Qc9?Yr-v+BXDdN8XV%&G^o>cOmfFsmNSst2>`!EAUi8y?Jt
67004 z!JO{FoSuMLQ5d_cyoP<ETfCP)6q*Q#sK^z?qFmIXf^8G+qEqyU>0-8+FBYSgT`ksQ
67006 zT3xShM$Nlh-H*MhW9ljOoO(&UrruI})rZ)>3TRO+S1Z=aQ3p3^ZP?T5)Oxh(+H7q;
67008 zdt~$V#rkr6wZ0ye^LBkV_RS9K$MjSBIsFo9=v#U(_R=&XU_^~vqZrk6t<i-2wRWS^
67009 z=rN`nvr$(sHkM=0ZN0JC*lz4L_M^f+W}L!4+$H0ham(m69-`I`m{IJ_6`SQ|t=VL@
67010 zq3Z55d$3<O+njGMHkX^LQGahXw_^`)zj@d^W}Y(7p%TAl-ZFd5hn8jqtf-ZXn!Mbq
67012 zSL`eI)%u!zZN7G2C-x4f`)2#*`xg6_`&RqxF}~N7Zz*?`hm13mg;<0|Sq6)-LF`FZ
67013 z!iHdfsGL=>N>;_<teVxZp{$+_V-2j4HL;Ow6!w-zvsN~S{S_O>o?_$K(`*8p$U3kO
67014 z^&IPD&$BM}0-Mab*&A68dlQ?2J*&5|_pv4H{p^G6<7_Sa1Y5_}vkmMY*k<;R*yH*%
67019 zhimW)_$AzcU%^fIHQa*Vz-{;~+`+yjaL!e(ah)67<QDf~Z!?7lc#wy9Di8BCjJ12>
67020 z-^G3GO$ODF8c}o90qQ_CPt8{g)IzmL9fT411oks4)p~W9+JNf!Tl^S5hW4&wANE<s
67021 z9cwx^<k*N~qmIpRY|OEP9Q&kWOB_4Iv89eJcWi}YD;-<q*tlb>9b4nrp^mM0>@deR
67022 zIJVKTO^zMu*invcaqMWvwmNo<WB<yr;~e{xW5+x8X~#}*>_o?QIChd_pL1-dW1n|y
67023 zmt$XW>}1DwJNAu^?Q!gz96QCaGadUj$G*?8OC0-t$9~YUA9w6p$9}@G>m0k@u^Sxw
67024 z502gJ*nf2F7RP?tvD+N`8OLsS>}MUj!?B-p>`upi)v;f5?AIOp4aa`dv9CDxxMNQ`
67026 z*n5uscgOzTu@4;k2gm-g&teC(&oak?V||WIacsb`LB~4r2&s+@J2uU+>5g^c6`Xhl
67027 zCtkscSIBg1mSeLW>%=EG@d-|Rf)k(M#3wlM2~J!>tz+vP>%=DvcdQeiFv77;oI<l>
67028 zoj3(2KEa7MaN-SSIChR>=Q{SCj-BV&cR6;xW8dxA1&(#%1y(xtBaZ#3W7jy=i63y{
67032 zoVXQEyb32?g@aQSj&<5oo%U2Gp41%24sh&1$L2XU-?0UbEp%*=V;!DUiyixfV+T9d
67033 zi8s~ZIn{|HwU6hRQiQ#^a-~LTP@0uCWxUd%bSXW`G-akTN13lIQkL5HT==*6_fg9O
67034 ze}#WbZja0Dx8?SP-2SWFo|N0~$n7b){jS`emfP>i?HRfKH@Q74x8GO#)}9Qod$|33
67036 zO0ZuC{&%UsV)29+ES?l4Vu&aeWnw7y+3G~S7$zFTaM37Q|D!rl9j-R2Be35#Qf*d8
67040 zTFDmKt5&l2+N)M#OW$VyioWz6e0_j@m;D>I`h9keeb`=|l6{0-!q+Nxnf;7?)Lxeo
67041 z{p~vYC3@Vi@byW1MOXB^JM4G(t-b6%`xN#sAD{<5#MeJzAJbx6?X@V`F35p$_64Yc
67042 z8g>Nxk@f5w&;SkWo7kIdWJj?-Ig-5sEij&a%U<u5oq>t)7Iqfi3V*|XWv}bX?!x=w
67045 zMGb#Wj1Z%Fw-_T{<$rCj-6zt;?^P}$s;UM=uDyz@7_3IsY*A{jttaB@lWK*iw%2bJ
67048 zd_ei2vP$`w@^)o~*dcx@elB*2-C~c}EB1-~;($0P4vE9!h<I5X701MJaYCFFr^IP-
67049 zMw}Jr#CdT+TojkYW%WgIQ|(sYsJ^83D09>|sZ-SH>YFjky~!C@49I)DsY<4jrDQ8P
67050 z$^a!-8K~qb`AUIOh#WmgDOR3P1}jf0CCU(`R4GHwu28C!xKfSWU8mG5!;ry;D^1Es
67051 z<ngh})5<f-dz2-}-piEb%14zoB3I;z&x+59o#ON23*w)}7sZ#vzlbl3uZXXTuZgdV
67052 zZ-{S-SH!o(x5dAT?}+b;?}>jC-xog+KNLR_KNdd`*Tk>IE%6(1Tl`ks5x*06#j9#3
67054 zpTt~lXYyefu`jXd7-w&1v)Mb?JJ~$;E;gUN8{=#-M(GDIMnA+>U_`CNcv{6)V{hkC
67055 zmddkNjO10kS{;vQ>hOG~$nhxq`Ik)jY;QKc7@pC5+!o@C$+OAuY?k7-0$&WzWDRcX
67056 z@EkIE1{t2eXK?!*`U68>ScKd6p;s{Uu@B>Rm3@EHJ_-f!IAZpF3ihO;<MEU#!agP}
67057 zx7Pp$Jf<1Awb%Vs<%+++=CC=q|1S1!+_%^C1-Y6p$Q7pnk8~w&?e%*5R_X=hn4j4F
67059 z6mGvK&f@lm;-|R%x%fG5Z;Cs(eO0`wF!a$L+`gnv$72L#^nd5sRIcMIh`y1k_~e;Y
67061 z58>8cIaxzL`!Lo-U&DR-N|=3D!XC)O^B&--sQ>M=@0Y8Ua=BWmA=fG8|Hap1JbJaB
67062 zbXAuBw_cT>;)^T2_~ObR@x_sm4QEyL|A)Qzfzs-@?gZ=K`}4i;Pk;S~rfC|~G%e_E
67063 zS}lwa#-!DtRtsZ{F-9$fF(C+{7DA|(Aq<N#CWK)ahOi9F;cz&Z5SBv-LkJ-ph7dv&
67064 zLO7&D2qA>9EXy(kV}dau7-K>hhHSlh-|JUZ_kKv8IJ-G>tao_o_xo<$x^=7S*1c8r
67065 zUU4}tXXJeV9UyDvJ^G&1R9GLrst-?{c^%b<uj<27Z9k)G#aFfB(Qndk%2Z)}c&a`;
67067 znyIs-8U0Ht;}CV0G*f3uM<+)MIW~V!{vDpS&eS>UOpeMAWUbe*8Y0vg(9!A7LY?(2
67068 z*bp{U-ka1Z&&^Esd(}Im)0|y(j&pQ^v#ZW-cGaoP4x7&A$ot3aV~K?4BMbH|wp{)l
67069 zo@?wD&Ncp3_N(&m-)0A8?%^54Opd;X<vl!Mov|J!V=X!Q%J@p1Da_a<_Fv^aJPSCG
67070 zqwkO8-#=#mDDTg>Y%jcuS4lh3kM|=^!DfV~^g8N%UY9rWMu~){@w(EE4wrv_j*pOk
67073 zHPXX7EL+7DdQbX7)zS~|kTtV_t&*PgLFqqVVfQ7Ea6cE7y^X5)gp%*b-ZxeL^&J(f
67075 zZZNft>UrB7BAyPy(;-kI2hGPJn4C6hQzw*x(&|)$D#jQ>$52W$cN@j{ItX8<2w$5v
67076 zMr~@JKNPN5BNj>TcsnVRV?vnDRd*5&X{wyDRv_-nH1&Kl87;<>iDHE8Q$*2(`z>fe
67078 zv(n#gmY(xe>HV*k8ahHQkh?Mlt(Lw<Tzdr6eT?XJ9Aja7PBfHgk`?_W;*v7-s&nE6
67080 z<g}#E$%v_ybjql1ZSTwyRl5_2jFYI!Nfc0sQ;VJ{-08)!U+gqo{o-oBn7_rk8rQ3Z
67082 z((b0m`6^P8?oM~R*WFwGXn$U+BegK74K4-C((UQ?U|(=4T^arr(#Uk9r2iR5kI^h(
67084 z*dp~B#;s-QU5_gDMrE~nAGStbRL19ZB%DRBm-nIaqAE70G8X?id2f>!mGStO<ozr1
67087 z-*CPm@4pbvSU4XzAE<i#@=sYWMKnVGUS8!Y@+ec02h(E1bRjm3qQcM7&&l}l75a*d
67090 zsQn+UE%8s{p9-F`+v_RIHvF7g{7<SDnW{yPRLENNR4p=9i%iubQ?<xcEizS$Ow}Tj
67091 zHug11AJ!#Pb;(p+GF6vM)g@DP$y8l36-!2OewO?|UXF?@Q>u2Us$Ht$N=i#;iLBlJ
67093 zHMd>f!}yV^`lIx>=x@n-m3Be?{k!yc<=;nTL`hX$QWa5B6;V<dJDirk{)vn$X*mBY
67094 z?|)AJT;9VNlgb$LujD<9E~$zxIsGpEu56><qq4SCj7h`!UwIEBO{yZzl#Db75-wxR
67097 zshE_8Gs5!z=Q0|l;f%1nf0un%-oy4y!x>?D|8FuHrM!~M-pgN*aVRfDphNjki8RPK
67098 zlo#UAcveNmp~`xBD)yu*_M|HI<f?}-)kB!-Ax!lUrg{idJ%p(q!c-4o;*Pi@`Goz1
67100 z&&WnH)w`JLT}<_^aD&(!x>$~h)no*jM7qc-8HpYy=g1xDTh`D~MjT;#c1d&q{W>g-
67102 zojs6VeowDY5&*x-#G=1^i$+I;8VPBE_B$%dk3B;j7n&yoy*U$$p0Ws4f+gOugXqD;
67105 z%-WA>1wyN1O22d%{V@DRdQQ@>l##+KVwe~sE$cY(h8QbGh#{g`t@*Zym&I`LIkoot
67107 zdQy&{x8+C@tyv#aUiTldlWNuaPuUrER*oa#diCAjwdx<UN9-TiWA5=lJdwV+97vsV
67112 zp3>8gVokAs?9~-@@^UOIcPiv4Hb9PH@!EX7(pqD$-d<Lk>mtM1Gx`_opJW62dmj2m
67113 ze@*|2{)ld8SJ`=Xjr|w;9d?QRpX@UGzt|P_|F9nRU)ldnw@Z&~m-J-rNx$d!oRLn-
67115 zR;3Qh{3G^Il~0yVJS(&UCP(hLbd6HeVQE^z*<opQ>!h`tEPKLva)E}Cv@7-c2U24{
67116 zk~(Nqc7`eJh?-gd1L>iBpM78c9eU$b(!3x?^3aP8`%xb$aWOyePkKGNXuaUKEgvc3
67117 z&SaTFPw7t!p3<KyzbKxor{bCNK+2WZQLSdYleuoH>_i|-w16zr<^s6<yF>olDW7)s
67119 z_ip+*ztg`c=|3p!-H9UgPU*vcBwNb2=_dLe)%L?y@JGGvpod<R{oq!iHT*K$q_v31
67120 zQkd-`=?{OYtVPrV9-4iCSMWa4=j_L8_y9hT590OwMLtCOoFiqM)LW5|{iLkWl0v%@
67121 z^^PX1f236$Le;7urF-ZeX-N;!LxjnEDy4TDuCh?xpG!|st+G(%<8qm+jDYz_K2quR
67123 zt!+9|pMNCrq=kBg7TQC5!rjjFVz^hC-josREg6e2t>sb`2QaC3nTzuMnezIn^7?(P
67125 zJ;0MS_m>j6!|upbciCN;>OQ+KfBhl*q2wR-k3iPw!$Nc{WX(R3lKcbv2g&m>dn|eW
67126 zqwGE54knLeWo-xY9@Yd?HNj-950v+?CYY)Nrs{wdR-c}UXN9QQk?laXbJ-Rs@xt~X
67127 z{}zr2_iH+N8BLctWrg*qsCQD?MrviMI;V~Z*;a;-v}`X!Nk;YBK(?EvLi8<U`)QUD
67129 zOW!Tb52e-mDgPAfbctS4v+8k8JIrOS)TYl;Qv2bogb4Q-6;?2riZ_{xE}4oenTi}4
67130 z`zHIQq**Q_N5;O*zAgX$H6|?r+r@Ut`>(TKm-pXbdl4JxsP^F$v4Kux1J&wepn6P7
67131 z)>b|7WM6%e__DtaDXdE}waPAlwRDu;oy1y-5p)SXOz)FE()XXDb_eYxXUTmU(0b88
67135 zGICuj%QcbAQeOYm-Z5DeD8f;`iZqbc!g$RKcrqVgKBs!0MQ=nBt)u)OidQx1l<{&T
67138 zQo)CPLHPr$FyHwdZMO3F=<gNAbk;lL_?PnjSK7Q|G`_3(#lpxQjp;qCM<VCdT-_x#
67139 zR~L=2&(!=}xbK6jeIGoYCkuUcH5x`cHK^LDLDfzTS{NDos(G?#)C>1zg!-@g34G>I
67142 z?-G?1X6M7N_f^P?NtwcLL-v&y(^g&d`FeZR<t2G<Da_hOGxZZlyy|jAUap##cgf$%
67145 z#moOCdGX%0r$zGba1XH{|5jRBPQEEGLB1_7K~~6%t91;n)-eRxL^dh!y$>muHCai@
67147 z=SZpA*_kfrE1X3Z%7%tMp-XFMO~DTobgtAcqu-+6l6geFyYkBmzG<h^soMJMWVMuZ
67148 zms%CSB<uAF^=XxqwUthyvr1b^7nZIp-Bj9II;nIPT}W3HzD{*gMhUm*Lnc@yYha_<
67149 zL^hLktDR8?q(!^P?nnb!CVjG2K9$eqOZf)An;+sQ)tAqrZ&Njh(PE;QDHezoy*4-e
67151 z#HL{uk9gmNnZ`tDVVq2IbwI8T$knlOwbR&$O+yRgFE1d&2t%-VhSWwe+87ZCM}cw_
67153 zO~Wi6@rsR^#za1v&@!QO!niL!oZwEVes9%#d*9pq-lMrSbNzRQf9~E0GNNKc!-&Zv
67157 zee?c!cYMwG;p4}X%gTc0Xq_ChCoJB&c;Dhr7GGF=bMa#m`OvIT&Y^?>Bv~oYF-XS>
67158 zeyo`iVvsKMq3g&fGD&*vOUU}(mS#)EQMqgsqh$r}7?TdBhv-LAgW<lqs_=V=@2-A#
67159 z%e(vD{p8*A@7{dt(p$IRdP=8vK7KoRd*Ivc?^nGq-fw=t_5I23&v}2z``h1NOXtz0
67161 zQD;V79d*CGvb~|bwS8*)-u7ed=h|;dulG88z};`${Kli1!5d@VnDoZ%H<rAy{*9e)
67163 ztB36ywxuv$>Aqy#8z73&CKyB0Gc<jI>iZm{=alix0Akl|6H?zzXxnH)+eQ;o-%V)S
67164 zXhPdY6Zv}U+}6p%rnDYy-8HPMqoQL-$Cx*+ym7aK%vnEY`<w%FPR_aXg>zrH@m~JD
67166 z_TjfrzkOxiv3Y0aU7dITL-AqdhfN=z`|#R__vedus@`dOr)~b!`E%wkp1*ef_W1|q
67167 zpOn7RDd{WSA<t-@*0;CIwllYVY5V&29qoq}b}wA9aO1+=3y&^5v+x?xSN`-~pCI=7
67168 zpxNv7lnhA;F-X@ot9{nASx07_X}{Wj?+w<ztG%cF@Vj&0UGna_cXy25H+oC+_T~f4
67169 zCz~%dKW)DKR@GZgZ?(OD@cm2gpM3vGSEj4BYh>4quJQA>%-b{X=)ALUU!Uf_{ow8M
67170 zQbVmDPWf=|hwDCEB7NTtGD1E~dSs+<Pxjt2S}(m?=|9p%Ryi6$$r=$2G$I;k1SM-k
67171 zO52ENrO~pWO~kgTO$6HBCIW456R~Y-6M=TNi9mbYL^e)-`qkW5>t^1Z`RM0^$!jNX
67172 zn|xsM$;lTd-)=b9aJ}JSW6)UJIHGZU<IKiIjcXdWHy&y{-FWpE&i%r*U${S8%$_=X
67177 zANqUfVcIif!pCbr-v05yk57Dj;p1B$Kk3eN*OJ&bvwMq)>AoH8F?M=}rpM4?wC29;
67178 zI42YPcTvm~Fxp0^1XG6Gkg?YiIachDW5p?YIozu*W4F5AH%L~nO>B>h#-i`|KIQ?h
67179 z;my2F#!6j$317>%^Mf*0y2S7B$A$0swu;G>-D0*_B-T_O?aTT$^sT7usk~Bo@70;F
67180 z?s)aUt0!Ka|LU?=*H>S!zTcnquN2$FesQ9IQ~xpjC-t8#E{a>?$*UJ$z5eR`QEXJj
67181 zsQOW(oSZYz8SZpA)1CRw3TKnE+d1l-b8b41-JDzRj&#SnGu&=>rMr35gi-58Z5y?J
67182 z)U;7uqn5gR-J|uJ>Q}gD+^g<=Pt>2Qe^`IrtEk^oe~jq6f(aQ^7>QtCH?b%#gMHYh
67183 ziqhGA*2W-R%-`;xFr|%|qh=iMK}l^4(nXvY;AG2WV~~ykUU8&qVvtUcT^ooQmp1g~
67185 zi$|QZtwTE>k3gN-7^I7$c$m`0AYF{u+O;uAXO5Z8#2z1;k@2w^8AqFmJ^nT$<8(7J
67186 zPB)WyEU=|8F?}q6lGy1XPkk(c@|dXU%?#@;ZGu40Wf<b&4C^henG#}<&K|d-c-@Wz
67187 z?D5VX1CyxTj2CooJ>k@g(2w6-^X67|mEGrzSH5}T%?rG#b6V%T&gE+4o5xr3t$e>6
67190 zbG<6B*&F9|dh@+i-Zt-mcgnl!J@f;=&L87X@#py~)ya4#{VV?cl%J|ijZ95U%}Fgw
67191 zZA|S|=Of%oJq^l&Awg>}HJBSL4K@V3gQLN@;AY+3!DMh{@ThKE-GRDO6IM>xnD)~(
67192 z>EY@2^t4w-y)yol>8~tE&rdH;Z%pq_A5EW2-%3Brlw}$+<1*7T-I+C+9ht+KvzeQj
67194 zk_jc#OXioXn0aF6t(g}}HkIruIb70Ha<$}Mp5-g^P5E*8>G_5E)%k7tL-{lL>-oo}
67195 z`O+b!ZKcyn=a;T5-CBCE^mOU9(nn=MS#8<qvMFU<Wh=_Il<h4$UUs4EcG=VNvhs%V
67196 zG3ArX=aw%k-%!50{8;&!@~h?dXHB2AV%Gc$QBhGbq+(3P<cir9i!0VvY_B*}ai-!%
67198 z>b@;~JNnM(+ue6{-)(*O_dU_~Qs28(q^h#2xoTY1w5sl^HC5ZH4p#M4U9Wo3&+S*!
67199 zZ$!WG{bu%C)Nggat^E%4JJs)UzkAi9y1IHq^~CDg)k~{4R`03)r210z-TtC~P5<Hj
67200 z$M>Jre@XxK{df02-v506Tm7HaRMs@tbkxkO>8@E-v$f_x&B>a}!&cSY8z7qQ52zk6
67201 ze8Bht(+4b=dtmM-16B^$JYesDV*}1<en)YSMfZN}Q3hhR{}Ya?k%froSR?<~Mw3w)
67203 z%$cF`+4{qAoIa5Q*EZyi;ju4lw-FOdd{Gm{XcI5lY+)FR(Z>F*tuI_#xUMiw;d;Wg
67208 zY8<C19&@()3`BMLV86k*up-nrPEkDm{)62{FdG9=j5e7QG1FrxMjLU2`ogt^>k88p
67212 z2q+mr%0-Y;6`P+nWrwrfy2Xjt`Qj2LdmBttpWiicoIcD2=Yr!neKL29$;XPw$BM|u
67214 zhFKh#o}uY66r+t-Pi%eR+QM~(X$sc|u05!uxZN>BOD5Vt>^_j-IKAF)A!k~IGcCfI
67215 zTAUfe*Tl?vO;C(huPZ%w45bK~)Ju#o1T*W^E~TBGSy-c0g9%CzH2gm&rbS8Cm>`bR
67216 zCn)SO7>?72lHs!8I8L9Su=nAzV0a{--YXk=r8d!|ls1mj$N52O9H%HAb7rV~tcZN9
67218 zvfDYBR1l*8yHs|vY(G6vURh4)DSD-$s-dZ&t$I=Q>guiZ4t>h<YzS**li3`$lx<+U
67219 z*im+l-C&P-j@R;$d?KIC7x6WGJ3quv^Q-)Ua7E1*M&_II<3>OELgov#jf=$y(IKXX
67222 z4bSsdc$>XF-ZAgIcguU?=lvo6Xn&GF$6xBN_je7u-%R|Y{@Lb9{&oLh%1>2~BjYMl
67225 zm#xc=&Q8wG$u7-q$nMM@&YsC$&pylrx!T-_-1ywg+@jo?-1gj|+^O8<+`SS}QdQDY
67228 z)^;I^(b}{AI!C)+Ad1n3@?sKUC`OxLcD-QvLo`|CvP%TpE<`cfWL*k!#B>DPE=<o*
67230 z07_)H1c+j^NiLX<U`-aw3)&nTv*)k%RRi6^IG`3Wi~%gl0iqafg4v~pC`Oyi`Px##
67231 zmH|<WHqHgM3@klFlUZIUkzHF5#b}dUFde~`f#(m$CmVxw5jWU+U`iXa_l}w~AEq1-
67232 z#b~4W9Hz%mj5e98vn4X)5Q?H0ZJdjp9z!u&`|Yv@Ef>3`Kop}*a<N+qmL8&Zq-M@i
67235 z)3mMsjQ;ccFYmvxg|$?)G_<s~Olq0cvZ!TE%hs0tG*1W87CMej4Zko<*U-&$H$6go
67240 zZGCC~OP{=Sp=GqF6Qjf=F-I&B>sy|@9K2lf^6-~CUY_>ye6dR$7Cqvcc<A_Qrf0k}
67241 z!&&I8ake=Jozu=`=dR1#Dz{n9^vrixxSQR5?kDa=_m2C-%XqckNN>D1<JHPnhrBxa
67243 zC`JosM$GguR)^&;wu25Uzm3A^+Dvbk-$r3{9m|j94^bFho9XTHWBUhT)QrW<Si}tD
67245 z>21H;lnC=b&1lZ_ksEt+(J{<NZ`33*)7yS`qb8A^9-_97txLpEi5MyoLnLCTL=2UP
67248 zF><D}NRE-)okMbryy`r3Gj6Rr%AM?Xxy$7Ux!*nMUU46Iz8oJ%dy~B`wZ^gEJLO&R
67250 zg1N!+U}LZ+_$0U#+)WGhw%hphtn`xfy7bQU(e(NB&GeH@Sz#4pL1uMkOJ-l@1c}By
67252 zD6Wt7CKnv1D6WtAI2T(M43DXyUT~bEctVZK0`-F7x~@3NnHS;Ai*Qc3V7%>m)45={
67253 z-XfrUw1|APh<p^4&*p;T6vdObvP|i4-Qk+U^oDB<*O{%c<Xs}Y4?&a{#VLyG?_xpD
67256 zEZL2!_aTUyez@JYFfObJ7aYgw^*yanKG>Hr9H-a4ZCpOsQy{MIs*H4MMtTXVM^+||
67258 zd{w@g-js1nzy`A6>U&r7)%UJ;v!m>+njv&~6>l!P&&R3nT`enLUB0D!A758KseE?%
67259 zC*|kMZ}RPYKmUYZ;J5f=krB0GxM&yC#C)+_Y!ti2VR2eq>AR-ymcD!Y9`8G;@2tLy
67260 z`kwE5qwgbePdsz-PQ5c)?FC!pta3Ixd!6IXIp;>zwyJ$q$E(gek6gFkxPF~(mD}XD
67262 z!Q0iJ^e^i_#5>}h_AYyOed3q-L;NxRM1Q8g&|mFuQ4!O5|EB*Wl~2{D#-ygC=A@RS
67263 z)~9x*j-<|}ZloRrBB%<QgEqATY)P;-*d81VPRh9HPVgk1N!O-F%E)O(x;woxy*a%v
67264 zeIk7^eJ4X?>@+0PnwgsE$}G=p%IwM<&h%uiX6|KK?Ty-pgZx1?gIWf)XDhQqvZJ$;
67267 z2I*qnwoYM68;dw`O-d8d%WLb{C$^4ZN{B%^^Zjc5?R9%z*u)@R^lWN01@r<jNEiDi
67268 zwnkw}8;dw`P#RmKHU{Zp-nK?zN*lBH$1nsjzetv>zS%mqu^7>3Y&=Z^$$PKDDzS}0
67269 zx|p}HN(@ulSj35g5_4j<Asd5qF>j7&h9jEcnjY|-Cbo`k4AMoMOpQ7~FD9nHjc2xF
67270 zn35qWZ7kx%fedy#wlPQ-^S0YDOlf2G`am*Mtz)Lo31_O!^!A#8K2vR{hp4?ipi6|!
67272 zev>!l5+sp9#~@wI+e`^DNEg*E@6}B5exr^ht;0ky+PKE;^cafK#vB<U5kn<ns6-5r
67273 zh@lcOR3c_bWZM-JN$SbAD|SkTq=Xoxi{7j;?W>7IGT0cTV}v0oAqMFpPUeVZB8d$4
67274 zh-If_NJ@x7x=Zu`JwY$_eg}CZn@~6}W((WTPO+;pDhzlXAI+!md3*)mQrI<eM-WjV
67275 zn#4FURdmVdFMQ|cxVRv0sGT4+PK(p-Omn)NrOtY1r&{N_;@o%rpJ<({#vksFS8>}K
67276 zf4hIcKj~lg@1<C(D%Fx2m+DN-OD#>UOYKM<N}WnwPTfsC3(A598MjSQZ|<xQb_9ol
67278 z9%lV)O?G&8e0ElLNp@X!XZEOy)Sl$Za!t9mTxV`UZgp-;ZeQ+1?o#ef2`Q;68D7#+
67279 zGNWWs$-0sqC5KDSmfS3PoX_Ql<lFL7@^kac@*DHJ@<;M#^EcEt9UIg)9lJ|cmu@dT
67284 zVK`2o@P>T|=YrueZ&pMW8^`Gr6xS}+(jgv82xY->oIXMEI>LGl#FK9T>bAwk^m!QD
67286 z_AHGaIqGl4*_H{S7_I$I-B2SnMN?BFwQZ^4j1<HmojpgT&l=g5+QiIRv1H~7>H}J8
67288 z1hrw;3rq<yNT;tU>UJNZ=4_8`_aUyYgF?=5T*7diUSIQ!FmrEbf+n189H-aUJZ+h=
67289 zu@u8``ee;hxAQip&mY-#-bQtuQ%egbYS&zX<Mg`DA!k~IGcCfI0?rJTnH7=Q#&LRG
67290 z=M=5E7`1CI!EyR{{xC+8n$xkQ=1df$P3qE=)WpoTU`q+pC*KA#TN8%k^wG=-#s$Z5
67291 z`h++1sW2R;Pk2Mm3g?31$#->3>9Af0QH(a8UBWa3(?5^a993-0{3?zvH=H+v?*!Vu
67298 zQzvq}>b!H0f17`sQ2tx|w+I&l#Xv&Ee-``X{cptI5GKASz9;W@#a$xA--*AIH21}Q
67300 z_3U&xUCM@i`Dd-+`K>{n;9jOqa4%ISxclk^cUPU@?y0le9d&klN}b(aqRwv5sk7VD
67301 z>g@K6I=elq&Th}Ev)hB8LfxCS=&IA-g*yG6sng#%Jn>yxl;JfOYWA_+12XPCj}4eM
67305 z-ag00BPSrQmtQWwTM@S2t>i%e>CPBua`jenid^YGu=)|X@62%)J8OfEVEO=eK-GZe
67307 zKjg&F+|b&gBgI59ODqzr#n#4!Rm-Y2H14a~Rds|!^8-;C%u+*?7op|7vt$uExS)Yz
67313 z_t8(ZnzBm<QI4Q-dTzB*4CM%#q{s5-X#U*DpMg3S29neOv{SI9d7!0vpw=PA0oIQk
67314 zAwA@3{$l=C{z=v5sy)sL=c$`>>-Z$;3rt{l*fU;FW;!FBf$nwpq33%wTHm&<d@(GM
67316 z4<r}J%|6{~#2nbSR<^_AeV6y$*mrl|BjSADYklum3F$M8r!#0bT}8Kq?a-O#%yX89
67317 z>(-_9rK3tG_M6dfLBEyN)zvNGDR$wmV|sz!Le|Xpu}|1Jc70HOQ2n4;gC-8zI%u`p
67318 zS6#^)_!vHs&n#GM(}r?@F-sS9y}HotF$I{dv3f*f^@zqIx@ep?+aSbjAE8d8Giyp9
67319 z{2*rg5_KA#$&Vq{7-IIGQ=Ja>OIs3{13tb%f5=D5U}IrjK-p|8vhL8|DL#V6lDZZj
67321 zD-A8QNkcV{HMSao#Ww)*+i5Taj>I<Bkf|&?L#C3h^2z11$+B`$ULi-tU6E}i_oZ-U
67324 zw@uav90&Cg)Gj%sv#~FSK0P^2u91f{L+fQUIhoFtanvR`I-H=F>3t?xwR($Y23y3|
67327 z1l4`57}aAB8>c9)dwe(-T7(M)To@{ejZy^FwakE)b=0n_1g9vjYaVi@ML5$UoT<f`
67328 zArdoGUK^!odJalpd&)XaQQWLij0-Kog#s=NmBdCVf<{&ot34d2D4uY!YYN9HiYFEv
67333 z&Z#S3U%sRKQ2EsIx#dgCPlt1MGRp06rdKvpj;Wm7=UyeLtf-vhEO1s<ZV%r|?X|A@
67335 zG`)_-V++(Yj38`p6k;63ipAGZX6P%LnC+`G3#lX2ie(vsa4St>$!&d`nC;yU)>7J<
67336 z*0Fl^H}vKq#-D?kGhdJ!#5lm>Sx~!vu(^B(O=<TCI5TQvQG{*J!a$4yEKX_b*2e7U
67337 zG4v7b=$so!oS%*HB6M)R5Mp+;Q>W1-*m=5(9;N5#4QZ!c_5Im#tdn)IWo!f6$quqp
67339 z{f|=b{dYSn)qDR(oiolg=YcEKw?W(7sWQ@8>aKTpx`*7;GS<245wF4<;*Iepdvm-c
67340 z-db<FchEcOUGnaDPyM`K?~n1Ps4t*x^!NHF{7e45l$)wajZkX_i`Cow$5Izkw^Pr8
67341 zil8AFCu7Ei>P`MbK~Hc!c%06s8`5p*&h)(WiuC66-t;Hwi-osAnlj_mIW8+Ro5L@l
67343 z19g^5b4gpt)RL}}<t3X-_LrP2xl-~V@8)arBk~>j>G=iu75Pp1J^7>gv-#`!2c>Rl
67344 zb!l_yxYEwjuF_?t8%lSU9xm-Ey;6FQ==M9V-(()oMB(@o$0v!EPY|=U7n_HCo{iQ0
67345 zYI_v0dy{Q-p(P&No2PDJKg}`^)@0y72D8-3K8_^fVThCrk&*%4W=e>0fSGTaCps30
67347 z=V{lPjd6g*DFu>JASs2VF$Oedw>c<-jZuSh!pUwqP$nA-|AwPA#5llWufgt(aOTd&
67348 z;*<<Y$&i!`q!dU>fuz(m#1LsA#sL;<$e!hgDKR>Rl*-2992k-VLvmoCR07FUAbARq
67350 z787Shs1q)DSp-@Zn>sFwKzNuaLn+OA5kLwXH){Z+H``63KbsbBAy{in=A3kD98c(N
67356 z;w~u>L|sf&d7DyCgC)VKbUuBkYGo}Oe4;+wn_W*H(idqb-AZ@RowSD?VZY0cvfpFJ
67357 z*zdFB>=gT3_I-AT{eazNf5+~zAF>DHv3TMLXMpp9Q|k<J>YTw&y))Da-_04K?Q&;o
67359 z-Z$Xt?E<deF5ucOac1li5BG#KZBIB;d&0vS8vn1loDb#2Wu3lAGO}JfNmkbFRuahi
67360 z-68Rvbf^5ghxU-Htm`8rC+qunNlMoFQR2#a|2^W!x<4kH%<r?`C!TBr$B8f7!6}lK
67361 zZQ*Z8Mz)9V%T#yR9ZCNK_5(?Om)({0f5-k#(%)nEB;^m;4<*kB>;dtAQvJ&I^_Xz+
67362 zL_8sZY-fUGWm_9SGP1qBKytFp)e={>yFtW}ZLf|9+5QF-Pqx8&l9ugoC`maDvNeVt
67363 zP@}A+tkg(YLsY9FDr-ouo2XWznlQCbd*7w_H}bxWESL9RBL6|&!?zhIS+6wyJ$d=$
67364 z2l8^r-^(kl-V;dC3R*#!dRsuKw*_4KbM)t=_QN+;n0iZv({Isl8E>gj@TLM)Zz@o6
67365 zSL%yu`l3o-RK1PD)Vn9)`wCsk1_T4nxS84u?wtY8URcXlc+0)@FYG5RWENRO){>p%
67366 zC^<)Nk!Lhd>**LeMeT;!IN-2*(yRAI4!A8_$zgR)#uJuj4Qw2n%DUKcwu$YL?coBu
67367 z!5(s-*YFnJ&ZqHtZmT=#g)N2gB(jTXl8llNO-3&p$LSeiMY!NNP9Je*h;$5<jiHh;
67371 zKRY)&FPM{^kDW`BLieEYzT=a`(_;XKy(FR6TRP;zP#z5BfThP$Cv-k3lRn)@GQQtV
67372 zGM&upcSzG$;vX`r<P;z#&EVdg%rrWZA=RX*dQ#tI)!o%A`-$pZ{jOG@Cau-CLH@Sx
67375 zvmr&l;ur2qox_*#^?VmU%zOA%eoy-Om7+nkicT?KtP<PAKJ^{HTjHrxCOxO&PKPti
67376 zneVJ{Haq*BQ_dCVfg893-I408ti|p+ce{JgJ>_0<@3_yryw~83^QL*--WqR<w_mN;
67377 z-u0PUu^sJC^k?~t{MG(;|FD0?zu`Yg1*zK9sMN&N?9`If>eSZM{?sR_3#nVF$3Z5j
67378 z55@#jgZaU-V12MFI1-!<ZUpzG6J3!Wk{*+uoSvIruD-v1GJPd|FC#M5nU+jPW=3X#
67381 z<{9P0kT%bdF`p4^%#Tr9?+K34*BQDrC14<bhUCuBycwD^L-MtAwey5IV)<dY!Mvhe
67384 zw{*xs{*VjA>kVCUpmQjLZPOtoMNvpwuj!LpI*0kfT(LZ{9ASR8J-0ENF0pSAwe@Y<
67387 z?{=!Qcek+vGN!r0?s37Z`EWjg&z3RG2EK<M<LCJ;{zT-(5HVW453oqR53paH5SPV0
67390 zSP`jM5t$e&5i24OD<Ta;Wx*xE<-nxCWxyq{^QXOeCLAFCVy_G~ZhDRhH7$bU^t$&5
67391 zC1I!>43UDNGT7-Mns|^fcPww1GnOxwtC?qFqg`YKc99WSuYHKxBZA(7FkH9trUVS+
67392 zZ?`=gGe-iLGeh#VbG7q?Ib!)?xxu{j7FS1XT_^R9(Z6WvFGBUXLL0~EUo><HC1I!>
67393 zb~`sQT?U3qV7K#Pdcg9AIb-=^xh5%xhhH00D}6`QN?-UzrGaz=oj_;N1#~&xNO#dA
67395 z=O$7F&P}AWmIYDUf+aXcZ_Z7a5-^ZILvm+m-VDu|A^F<5+IhkpvHY;ylDzbK)qOP`
67396 zG3TS}H9j$7_OC>08?)&!yJwaF!!dd@@-QV}Ab-2IY|QL`FlW2AuyWgZ!W^;uu-sr?
67397 z=KdlRfiy9ncm+ePq)<j$$s{t1EL5w8yUAg?!>aju&^nT_F?t@NwX+1VX-tU*1F7qQ
67398 z)Gt~xzo=;_MpP-(dP`V_RjLd}$Z2vJv|qav`uq}JuEC&Ou+_h4$vg;@YcMERJ*W%2
67399 zTyT9U%%_EHqb>9?DP?QeTDFZ3<cIhJvCgS;cDt?ad2fOD)L)SbQtN~8JIf=<L-qC8
67400 z7YpByeT9xRzagvb$I7wa`Dg9Ps?zp73H6;-SAA#IBj1;oqrSFE)qW_U_CpEvwN<9R
67403 z`u=B1eg891-~UXj9Zyv4c%o{@6O~%rDevKqC#t><np0l~^`%yiOC;RcMAgnFDz$n~
67404 z-laYXRlAU=+J!{bE+ndUAyKK}dU+3Z8<wQ6+WV7I8g<nUAYbhODj`3Vm!tLpQS#sA
67405 zl~X!)X(=t0QieN&0@|PUmnErD-w_RW24(0tI!=}_)VfgngP7VM#PqL>itmc=N=>V8
67407 zW<68mIg(+tv}H5N0%^;VwR<RoiFpX-6fjd3$CAZNLje}PZBV6ld_}TEtLJ-q`T0hA
67411 z*#fH`lV^scp$1LTvS*O)UTLz3G+9KNEFw+Tk|v92DT}tC(8e$Al_7)3kg-}&^6Xg8
67414 zr{AHCvQ;=g_3!J4|CLDXj!>iF{K9V8qv~5!_hgf;pmD6qND|e>2(u8KDw-qFsghM&
67415 zoo;Y1of$RSSe&Q+-WxNJIxSs-MX3bfW54reQ!xV>tnt?0`l*&VtfXx+f@tr(I_M^?
67420 z?B!&l%u1{0m|)Sfc@nmcG-|1Y#=Dwy&=E53^*HOjga}iYtC@;M8JQ0&%vB`w6km~S
67421 za;$>=j_8m)hW@J_Bf@zOu4Xm3nz!I;-r^@7Bh(y5*zYF(Y^3-MBZaGGcf#=^oYxsf
67424 z`Uq1;#>?_<mp1RX9BZ%0@;;$Ht)fF@e;-Gu&^c;Xdh|}p&BCtqHa3kdV5`}7c95NB
67425 zSJ^%8@_~i@8w>dwzMUW9XZQ{NSmf1?^r>Q=SS~h-UE+v1EiTKtdghclb<Rj<g8E|e
67426 z3TLCUJNlLwiAQ)^uz$%nJoIO-J+lIR{HvXs8Po~CIJNn!uznTVQ~V1vp7d3P<X4VR
67427 zm}N=YjEyHKM>y~z95~>>KzfFzW>#8;=0uC&IDLZBB3x`uV0hAFAP-m;h{oDUYBkZM
67429 zpT!Hu{eIiWx3S`pfQ~``-bVEP^v{U`>Iee}w9$hJ2XslaVtz9YVvsKMy(f@M^eXZB
67434 z%pR5S<_K?YrE-WK_n1hMN~bb=J$_=S-KTY`1S8U4UnqU)bt-l|K`s?$EJEFO(goq$
67438 z`=4ND?`$M?A8sPB4>uuWP!s6aO-R3PLdKw2kNWI|-ang&-HV4Iy?B@=Q-Z~LnJFO#
67439 z>B2a$McT^FLKL`*93rR4WpbB1qh-YOC6d~-=Yebt(%CiAKw!-^5Lj~!me!J*OAu%w
67440 z8#Nj9lnhA;F-WIojF{l3h{rGXUYEoS@{`OM{cH~9)6Pf^_vm<q^N+(_Auc%i*o{s;
67441 z{wd7GhdX#Y?X+W8JMGvloOW!^q5Q1={^yzli@qH(noP`}&)-nH_89qW-!>G+cl9DF
67442 z8;hv~LX}|W=nlGH`bpvU51vXLG_W?-$rh+DqwHjd*(r93-DXdvcT~+=cn6=s7xm6I
67443 zUEz26Gf^h$#7Hq-%n<XW_q1M}&vjnh6i=MI)8LGj?R=)Q&{^qhQu9rxolDLgm$;Q~
67444 zi`(u_ce~v+?iP2id(1uOUUTnz%&YW<c%!|E-Yl=%TkUP}4tSq<=e--=BR}wK{Zam8
67447 z>B(Hq+{rx4mSyX+qqCEYuh^f<-pD@8`MK&`ORhcFnVXkep4*Vyl{=E_$z9FeFJUE>
67448 zB~2x*B~wb~mMke*SF)qzV9BYH%O!V8p5@E(_4(2HN%>j%Mfo-Pt@-`=6Zs3_38ST%
67454 zTZZs5vBWal{J13-M|jy->>JoEAEFT@HgaHitT)|u=!i}QS8H@k*9^455RG*RZ7_z%
67455 zder6Q2v3g4$x(j7O5LF8(;O=VNT1N!c>K-gxR<-YhU&j3+GYlYZA%~@4)}134@dae
67456 zSX^7S?S*JuTd)OUc;fG3t<|*Yq6lAzH}vYyTqQ~nv$fjmSvqF6R@*v4G%i21ju;--
67457 zk1kbGM*>jVawT<T^A)JPHrm*$S12#UBij$ZZ~a-nHT~(Qh(#$)tk~D;?X@Wz;{Z!M
67459 zMj;rXnze0XiRCj_2S3YK@0o$bnzb<wu*6E5+J-4@%#POw8`ewLkc}ndsaY%Vlsg+s
67460 zMowKr5aR$##zt7q=bx;XjDoN}&6GBlSYlXCyY-n^VsmxfLW~0}v8rafg(+>!o>{3k
67463 z)Sj<L>crpStiyTa3b(=?;*NGFxHD9ru-8gWgrgV-7%TJ>GbO}0z#<v+J+I6{IErzA
67464 z#rc^jA;tj~$-sdO9Fc(|GH@URM`YlL4BV0-Udd|g%`ZVXigAF&`I#vp#sNlTuUH{l
67465 z_Exf&93$t*P4blH>5y=Lf%>-X2DOVYJe%}!bcQsWz-F^0Y_%9J#)+w-ODq%X#m>SP
67467 zbAV8yuaWER8Lo-rc*Mb8*JcRHi{NoPveVlUCx%A3+w0m4L3t58Zb7=|%mBtwH136o
67468 zHy+7juYR+lsO|UTv>c^Q>Orqtvn7}-)+PciL=$2mnt(NELM%iRVj&XUM$f}QPaH;I
67471 zmHm`eb^R+C;jThQ?J9KCu0lucD*S1zr-wTd?G^Jc|Ez9)x+~_IC;b24y7?&5U2?PJ
67475 z8{+^=&W$5vADt$><wdfEY@|ErK6;e)$d>Sc`K(rY%oC-@yp*kHyVy~+Q}hYXOOLpf
67477 z&DrmqaLzk7oX2k7t#wDp2yeDJ6=J7*)a`MvxOY9`<-Iy@v^T|@>n-y(dV9U&-UaWr
67478 zPyD=J=a2TM_;dYb{ziYVf84*|-%gQKMXD(^E;T*7IlCt{FSRVSA+;lQFm)<*DRn3H
67480 zdQ-SRB6m4=EB7dUHhnGqAme7LGR>KBnW<`@#Co+);&kRp=3bU$E3ysQG1<wz{U-KJ
67481 zp0|==t{R!M^2r<e@p?w$cT(h6-BUGNZ-Ux$`X;T7o2!9(KQY(8^jSy@wW-bZ8<Q{2
67483 zne{6-e&yD$!uZu(J=Sw(An(K)+K5gSN@wz62p<Oc*i^}SjQ(u%;ed}#6_(iKBM?41
67487 zv`PCksT0rH96w@2x916Fd&;(tJy;vH^p!HxC$2ZfiWoCJZhfSL-Y)dZ%~O|c%=Cwo
67488 zwL5c_$i{5X{Y8y;f+dz$_j4h}0hajTrdMv-R_KwNE2hwwhZqN#?#t`-{aMap76vj{
67493 zz?PGZWG6X9PLoSgZ%=71JTa4)Z`DP6<4h!KWhO=oHUYlJ_xv}Q?e`TKK$29&-fGm}
67494 zR87_cC_=@MlGs>G^)K{pGF!v8u)XX!JI`*gN9vuMW<HL0@-Dti>=(zyIle*M5D)n-
67495 zeuSUqm-$^mM41?(N)!8C`a0>)-c61%z0MOf;`cx6yUAuhO!T6^sciRF{moT9B|}m|
67497 zge8P-wl={Drj*bYxeld{jR_&tMG++{Lh0M($7FvkWLb#dHFX_K9YS1cSysRK-o3nc
67498 z=U$LgS60+UPxIY(&z(7Q=FFKhKlk3b@p#cTeW&tU{>Sm&bB^21-?EMRgwMu2$H(zL
67499 zbP;-=5!|yh+{4a2*%7Ue5BnapUmMBqJo}nS(v|OJKkU2AM%|`n=&|Ml)lXJm|1}gm
67501 z;u5`9uf_ijdINBi-UK|QPa*#6`gM%k=9oFa2h0P&m1ZTd+jK+9(SjP4KM;%pQw6C4
67504 zQ~9gEQCc_x@KeQm!RUH@wnz0--E5Dt|Jg{&FHgKQ#^Wzue2K-ENPO$XztJ9ND)7-s
67505 zYokf@F!qPru`G-oU+GVx=X#5HTz@^+<dwmX8Q-TZX+__shO+7#$f^@%O^O?(Mn@>a
67507 zv-+~JW{9aW)v^m7W~o_gnlbCxYg(l%n0H`CFQcRe^NtmEQ=ZL=XVv*%@%3XQ#Yy60
67509 z-AT-*a<s5k@>jQ_l>EB$W8HjDzvyT%m+I!b_2t)qiEy%c6o2HOFG0K&-F)XizeOhR
67513 z=t$9-!fXACiiZ?e6;~I}DPG!dY`>|n(5aa9xG&pmS9>vPb{3aX*;StWS#z9fg7a|h
67516 zHK`|3&!i5ePN&YNuBFS;ccdqz=cbpZ8`Dpuccu5IkEPG1-%P((G$8oy_tb*gg8G8>
67517 z1zQVt7qu6?T5zbKT_x`cl0U-s_r{1)jF%>-rzCn<L;3u~<0qaBxw_7eb@RPH!rV*(
67520 zF%YL3FKx7@;%nUg-Z1%oGRjwOz&D8=YTxG@r-s^(^G%|M+V}a!siF3LzV-%u!#$gl
67521 zJe1#-lH%sHCJ9pbeEp}Na-~S(8;>2`6(QF;{d)&dTFwIUSCgZ(J5|(HLTYqhfhuJ@
67522 zN`8*k;~!tGj?zLO;-^Z*WQy*GDqgyH51;cd(L0AeE!Pg>ymB=6HKuXszpr7eGfd4;
67523 zi%q>*XSS#Yb5J#_9oMxPzvJpteZ71-K`+rhD@u#s<BZZO)KS&LcP!jGgIiyGNH^-u
67524 z!8^<y`U1uvg{H!cQq^jX`%a#zG4nANS*P;*Twi0pBsMW-oa&x0nZ~cYWmi9s26wGX
67525 z_!agVJzuZj+py2-mvlzIsxRef(!ZPRQ{y_XO4NDIV&ioaubJrm@T3+IZvoLgymI$%
67527 zl}Wqej`L=MoChj*Cn^8ljeAPOW_LZ{yJ{x?ZceZdf_r<-+-NrhzSU;<R$H(q0^dw?
67529 zca;4IKTzRHi=*sAcrn6fFTxAT-EV=sm_dT0OjHKJ`KA$=X^vGBFfW`6?=)A{qRrK*
67533 zXwJ)A$=Diu95dt<>Unh;zHf`}Gc_z#hS-)ZVUVWA?2`&eS7x^&%{a`O59_pEs1KMj
67534 z>L5dGBL-RtQWlyu=7KDg9$U+l)tIH8hDU4EJ=9x<*hXw82KvmV*X?Gk*^T+$b~`vo
67535 zKUr;2=k$2Jof^*&+lcMN6U3lC0xp~MC9~Lc$sE*e$YmP5>^pi6Yb---BeoMy5Kj_=
67536 zS`B!O*Uy>(rUkRm<~&}r)E;eE?-^nnv7LB=c#?RE7+6S_qv}K3Yc=D{0T~<NI8Pm*
67540 z7xU|4eqGG3i}`gizb@w2#r(Qr`At?w^rUERs)61nLu?~<5Ic#XFY0El-ORO{xpp(x
67542 zx0kb8PoJ70wh=psoy0C;H!<|Sy_BGr67*7nUP{nQ33@3(FD2-u1n4cu-}SX0sP+0h
67544 zo-upOUUR@4GDpmDbJBE}SIleXf_c+iHt(AE;T;O$l|KouIb80PG4SLQrADU11I?F3
67546 zJIao;)poL-Zs*wfc9E^K_3;0VcD>zXpRnJy+wI@jXYF%#pFL=QY+G%{p0TJ6_512P
67548 zd03Up8d;-;%366`Rmj(5y{beXv_XAJHo-66AuaNx`m}73E$XxKZTUMj5~ceGHA%iN
67549 z`&5nmNd8exmqT(`&6HO8shTVQBFEKyyUI4ITD#7!Q_F0V{kp2N->{q1pV)8OzffPX
67550 zPueF{z1?D;QY-Cu?9=LD`<HgRYOvq6-&Jeu-`c-dkD*Mir=OyJk5~y@LY(4OiRD55
67552 zI6nM8JB#GAiuf31c#IsD*cT{a712@F@#_83<dA%psauKVN}ROvO`d&%SV0_0*(-@I
67553 zhnb8s6QvYNQO2_pVt*oIk;iPr70CCr+D18t;_N<@(WUu(AoWm6<aj<3pp)(qcQ-*6
67554 zG0qawA5`Os7+<1%P6K<X0f&zQv(l7PuUVcyV4k-UD@nhVcn>KK@1_2xVEp5-g?efx
67555 zwoqHm#1^Ky&&gxoq@D&)v&-zScveO!mtkZ@9R|l@YGawbK+ML!NPLHS&1#f-W1N}p
67556 z&V;iJmgs)!Xg2b57BU!DoQ0I)=<2zQR^sq}`wQZ~QM!L8x-xw!km=Vf&C^bElwkpL
67557 zT)^5{Kz*#DoT~z<%k1T#gqNBAmz3f^lzZCB-76`_*xHSTD`D{yl;+b_?k*3;=#a<q
67558 z`fxsHWf^C5B-WT9=0KHZtUKYi$D&@{+X7jR&#M<~iO1J{OZ<BXdzHKURFIdh8slvD
67560 znsU9!3<munQ-v|_Dp1#A-m*bAV;;X%@6fySZoO9@)IZj(`nW!cS^X>eHO%at_rIn;
67565 zQpO)lyoKoQyuIO`6LY+s-(Vj7nb$^Mdz<kl67MFLW?~Du4|8;TJLaISEaY$B;@Kyi
67568 zqU%6gjk(JP-GUj@Hoa3nW2*IYdS75+8GT0g=vQf9SM)VZnA4_+_Ekaa8imnCwL#CT
67569 z?)eC|_0cVBkNdiJs#dvYK8>z-8UniaOEmXNT#10u0)n%wQPAFK9Je9BKbUP?S8(YD
67570 zfHD%4LkKS2AO!STdbGRWiZfR$gJ4xWqF%GdQfD(royBrug^TZO3)hQXZ-V1S(%$Cv
67571 zyNHu`y*c31LJosySM@+)NlJs`03O*7;ObSLl{k-#vOw<C43^JH>+U=|EJmD>^x-;n
67572 zJ0&P~D<90OGRU(yC{xzDHme%?DQ88YpBe`na$af${L~EC&RRVm9%-RoVutHFbDQ&0
67573 zW=!Cx*6WQqOVWGjsSfL-u%pwuOP|%}I8F^M$&FHnz)ub5ICTtWjLuU{H?tr~4eaUe
67574 z-vV#tR)WT7?MhvA9te2duDGh@)-5mb>EO2!E+hOJ;Xgs`V|-^>rPS^P@^EecD!4v_
67580 pP=ey1PizV-tSRtVO@Vb4Dfg6+Yi9=5@FGWnZe921T$$B5{BOcV{%QaK
67584 z1Ladt)Cr-Bh>D1a3J3~*C@2Vsh$tus$<F_G-<#RYrh)zM=Lej9_q}`Wxu@N8%R6r%
67585 zfrwoABT>A6+1%N<6UcCD8CS#X{()K7J$}~bNc!GoL}{A6c+s-sj30i5q~GCw?RB%4
67586 z9o`#y>Y+Hv%ZkKCE?Bf|Li?A#zG@;!+=%wWYfl{66kfFEULyC+MC^vOr*Da?-=Uun
67587 zWhK<7kJ)tWiECQkIh)A8n8;>1cI4Dec<w-d7xDg&J>kq_8t;7IF{17_NSb%ghV>)s
67588 z;$Qss*Fe9B`mPOl;QyjMi~Dt)-i8ymY`x*jH#|xt8i<^qIpO5BBZgO>M&H>++&_Hc
67589 z$kt8jZv%G&e>?EwCykuA{`%sBA(AeDyvlu>PCj+Z+3S8EBk2R+qt~-(^ZHHerhn;L
67594 zuBpO@0l%vP{H<~Y;FxNe18i71yIMXEa74BKQoXG(g6lnilL4OsoCdfR@cC-F2IVU7
67595 zzH`<7F07+}Q&ld=LPzffO^%T&Jg<W$-!)Zwr&aY<r>g_XTrcZ^<h*Qu*|c^wnMU@J
67596 zE4PnLYJL2!PNq*(p+^6mI(a@{g)h|E<e4hGT!mj(p-yg1b}sjZD)7Fq)q#4dK+H>J
67600 z2T=r_r)f}xyrPvhvLr>Ml@t-?(Ryh<O>&uO&=jIUIZJ~^1DR-M<r%?1XG-W(`YiRZ
67601 zqoIRWDZ-9Ln_}fh!f}-!3RhJgm4-ma33v+imy?I<SlCD*=^JQw722)9{pZLdy&vUe
67602 zXulYESHceGQy9^697xwezK3A%-_e<LLFF;J1F)^~nDD*I>$0Wty3|P#Iup;nUztGP
67603 ztxOP3tULi-JT7!WABM_v4DyH{qJU_`wWac7dI6)c2fEJFiNft@`%2{r4eqKuNV_Y~
67604 z(WRh$UZsa#r3QKuye|aKObXY7_&z*)nmoc<=)(h_>_Gp#-4J={TF|J1FbQ;<pqCda
67606 zU0HckT!#CHD|_hEl{bY&G=OK137aZ!vL`FAp-qpt9{PF&W8#X+rGmZkfN)u*M|iOE
67609 ziMI18Dr7-#2S6l`cq{Dm75D^vk#4WNMh}9=mdZ=)fyz^CQ{^e~yMWCAOXUUaIuZ4&
67610 zDsR&-aQzf$)ZjV567UfQZ;wFUR`C8C;Bdb<8P`uj*Q1)w-V{#(t)9xyAd7ZSQsqL<
67615 z$Fnmk&oBpQw^SYz1GpXoD5H<_02}rG`Bej}*7xh&*J~i`K_4%HM-Ddty20yjG~S<L
67616 zkHbeU$MyKiQ&JY!%K&Ep7UFrh@&c0q!+`q$S@^-901u<Qy7GbmUf}!Bz@9G&GITo&
67617 zbh-bmfu258xr<J&+z4Kt5<dm-p&fvrFAiKsu*d7r+3Vs$wErA*jj<taK>1dbTdHym
67621 zM#PW{&|ezuw}H+lD&G)?!4L22*SLQQJWa=S2Vf4sgt2-p^!^Lb{Q!7+7W~}~`O~_;
67626 zmGjN#K^`|x*5dUzIcj`rv60iL$;F{AUe);KJZf=?^T}f-=c~rkeU;@kU12VLfR7`-
67627 z7C>zN6OUEghFYvfZ0GYQpUY}EwR-J2_Z2>OVP4|nMjO|Be8czooUQpE;vKiQ=3f~9
67632 z%XEEk(D|&~rP%>8DEH8xYP2-@P}XSa{C}m^PHS7&SB*bj=Fc=<=aCoSu9vr_o2p*I
67633 zwKkk5(7%KJ-v1bh_#Q}uhiH2Z)ID?&2jk1MnS*Kdc;I^A0G_@H_!;2ifKve<0Gwal
67634 z6RxQO-#_jEoDSGl-P@f6cnkpFuk5Ps75V=0v(-J~<yH7X6+Q|04B!Ud*M57px_uh`
67635 zibBF!6v8#YuT_ZRK74@ZVMvh@22dW*&K>sdtAB)j%v)5J-VzMTPw6%JgMvXA(AV_>
67636 z=3(&)#JU3Ji?xWIKfyR}($=TXVQzg%{3+@-pzbq>O;OYxhq}L^t@sMAJ&0w4bT{Vu
67639 zbTpky*U=a04*Dwngx*vn#iK-&xYDDPlzGaKvRc`woT{9!Y*#*{d|3IYa+UH4<<rXb
67641 z?u>il!FWTwC+W&O{LVM_%-HjXJ#XyUQ>kd2TPaSBRG?OkucPSfaeR?tRKiMBNhnj4
67643 zJ06Hf;*&MLZrL+k<LhnkB~<<h&aNbq($L^`;wM(?s2ScDt-MnCer;&(Ndh9g^!Ci^
67644 z6Z7t8_89gkC<(hC-TlMeZ}0xzZj8a*zu)~T{@w++efO>S`_n3ZFUsZJD|R2gdl5<t
67645 z-o)5^_Dj#+{p_93e(LAtpZ<VId0G6e_*<gt$>2w-Kx21%|Ji~28wn$kZU)>+kKpfP
67646 z^gO*WhViFy_^*!reN8L9p~2g<8`s@6B*CQpwbVDP-3e*#b<zU#^<BD+9-`anZjxcS
67648 zmbv#Ase>jVqQ>F1S@=f_eH4~Bj}D`qgtZj?j2(-aGQ&2q<Jj@+1h$=hfbC$Hu@l(`
67649 z+2!m*><ac__7Qdx`zSk^ox(oFKFv;JpJAV6r?bzo&$F%UOm-GKo88FX$8KWV*!lE5
67651 zB2qvKN--%ag`~KYko;1El#`NDik?F>d!Bw-reeHIhYt=6#pCnuB-@htWo6lsgXPX}
67653 zSuwtD7xQ?jx3BE(iw_U??i4+Jy*o3kuPpX0-x@DlQYiF|tSd{4x85R(BFK~z>mv#N
67654 z^cI^}=#9itO!eO47Tl;ym1*(d`k`BVf~a*U70awp_Vx|({>r|-zA8dEzAj$AZ*f`5
67655 z9(hZnVC@@NJ5W{z1`}nL8CrVOAdtg52IJ+$i}9!g?D8aDnlv;N->GARqeeWc-o?wU
67656 zyuOuV-nV!#4sGlhiI+`_2Z!+_&g)FP)Wu6(!{Onfp`kFeRkrl4Ez{D$GR^163EYS0
67657 zm!rHCoj-D?gVu74J7rokG_-DHs4NtQhN=<_#n(ZeRPRu8SuV!Gfs`46Olsfa!Lpj_
67658 zEgMq3umGA2H<uMn-OxmQ-A;8)Z=6?hal<<M{4ekZ)|Ta_1S<RDJK{Ug*UnZs0}U-1
67660 z2W7RXxoj-PIkz^5CDEEVr%)~p4{?;?evMmG@fM?v`UZNN5@U{IE{=C3i%vx-fQ3GY
67661 zJ{%v|ks9Gf)s#(PZjf?33?^$_!nCQ8e!UCpL7JD-Xhq?@qSZID6*Yl&SuMl{&`UU#
67662 z7;1tO+lxCzaiF|zq`$fBC;~MeFWdX(aRMm7LS+ZPTZ%h}W-liQIW(ojp@X&Px$Nv4
67664 z7fd+PTXq)skb`UW?zHni4*V$#KG=d~77y;^>Vv$!J78gS>u5@((5zMt>-D?|Mlydg
67665 z1W9It|Jist-dG1Q;Z7oV3i|3R)AU;eLC~z_Eh6ZN1Iq`?u2gS)plpNtS<&%uZ+!TU
67666 zKtLcTxv96emutX-I$>m|$51F=S_mhhE+1s{7Mjcc;!c5I1JF0W28%lxzlMrCC4LPT
67667 zcgp-4DehGGwV}9E<=1F&r-5H%#hpfeEfiBV{g;(tXgU>dDGNvQ(b8Nl)>Zn(Do@cX
67669 zK7MV4eEgb+eEix3`S`V^7@w*+?1Un^4GhQoI17E6NihgpxX-p0%M%La2^f!U7z(rF
67671 z*uPH<+XM2#pOf!aZDQ}Ao|?3?Q}A+GyPyvUaA5v1SVkr_m%EEC{;AF7N$-XV$6gEc
67673 z?klX{(UOYCr|tmFDdW-NEjqojlIpEt$IHV!rj(Wp?vmniJiJTF%AuiN9%)So+9|C?
67674 zYSwUB>Dza>4)bWI&q`9?@VZo4#-xgBsc$5V@-UBd`?eVYYl#1;S+H>mJ<Q@WmZ?wc
67679 ze^zm)33E-Y$zSNwv;SUR%w^(nY-$Rjs?J{$LsdR!BLMdlYFe3tyD5c4s;ZZ&G-E25
67680 z3l(_vVUN`aM!37B+=Wp-?;y|TgPh=Tm%CA3P%KZzWg*w%0Ms3yg^9POt;34kq00+V
67681 zTvWV;Xch{KQ4n}xN%0mzd$JS-?a4BZGaH5F9ETSU=QzA@1jpfp6~$eMg?%Uu7I|g{
67682 zFAWuU3Hq}mQPQ6s#qk7QTFLRW($O4GE3M*qT4^=!a{z^5-X|}N@IHBA4eyf|)^eOV
67684 z>1615>X-pHX?Nukil^wsnJ8}NO4sgsad#@_+A7W#y~uG+({O|;&gp18ZH(#}+MU*7
67685 zt6t<S&eV$>{VdR_BAl%kIl?)5kt3W7-05TV&eQHR^!MpSj=oJVa`f}jvWjqlUgQWD
67686 z>P3!l5pZXW(Ysi?)6g%`iyZy^dXb}VN6RY02lOIG*r69W!llJq%-YJftb}ioL^gm;
67688 zE1}wqva$DW(#v=8L!bVgX<_>kjM(ji{C-{k&PINJr-Aebgf;KZ9Dj7TVH*ijY5Usc
67689 zwF>^vE}JOWn(h=T7nh~WF*En?lGiEJ-%khpXAb_|MZ4Jg%BvizPnRD6F49gRG!Pts
67691 z5deC2fCKl=004Eaby!5t0idlL{dmBO=M5q+`tzYb-xYwziTt4FM|}XeLGT*FeHb*u
67692 z_Y+0pfO7!ow*l=Nt|N-#8b!O<wM6liL<z`|Y$Qr`5~UXtWzarzB~cbMvXC{4K68+x
67693 z5%rDF66JxD2fe0N0AwrNKvdj7)NBDj_LfNi;7veX>y1@-g{TdEw||_d1N1?PI&UVL
67694 zh_+pz-39#aJBiSgCV}6{1^{I00dGCPnS$$7^g9i5PXn##z?lJBr8EFKn+aZKK2Ow(
67695 z=Y1g358nI1`vByh1%1u}U$X}R;9)k}&)Eb3e{+WckZ<00qWNeyA9V}R-$L-X5YG=o
67696 zn?=A`4EYv6O|%5}OTg<=+%H3UIdr}pbPh-RBf#?!(Ax^=brAdvK1?(OTOA1<9|?ar
67697 z3iOZKs>9Jxz$&x>X&MH-5%jeNeXoTNtb;Aq!H(;}`!SI380g_xAfij!0NNYzY$NcF
67698 zgAI;<jpzjQc_R2Y5%QmO0$?}M$>?_zeCQMp0D3zGzH$oq-;B1KA^WM|eG3N07Wmc{
67699 z&_4~lp9cRt4ZNKOU7ZG*PDlTz!=KN9UC#iGGobG?Kw~R--wJwL!NXZ-cNXx^2F}^&
67701 z9>RVD^u7ffJ`8%_hyA|~Kl%am`UA-M!)-*5Ku?cA{zu`@k3xTsq1}%_`*G;*3BZpb
67702 z%TK`1lfZitZJvUhKgIK(!WRDn+D}6dKZ72A23dcO{-1$wJPZB(0(5?f@%bEd^*rQ$
67704 zzX#4A;PZdL^>yIB4&L7Ye{TT)j~D5Onty`M-h>ao1wQ_a_HTpUJMiCk;2XPP?>*4R
67706 zNhFvN&diqq-XOtpBMH_r3ARqaog~;%Z@&*=540Vi?OY5%y{i#`t2+(&H~@WlK;L^M
67712 z+gixH4*ai!zSaZx81#88d}IUq*ogKUp@-wp@9|qmI015;2>woju1^N;CiuW+;GF8v
67716 zD}3}e_{Z(&`%d8A1wGsi{e2a14{Y%@^mi}HUx(~p2fz2B-)}&!Z^B;RL|^wqp8KKO
67717 zZ==5l;BVi7J|6_$ck%2Y`1kif_hH<BAASA+ZGQ;;KLVZ~g-nmZpMC_K$MNh5_~DOH
67718 zeiFKV3VQu1^!h)r$J40$8Eo=%;6H;g_$=uD0_9)A-p^qyJdgTcLGBm8-;02k(Dv7$
67719 z@oV6`4E_8DG+qIZh(p3}!P~3o`*(oX(Ej(Z!yi!pI@-JeoHxMZpJ2l`p_8|O|7Y<1
67721 z#5zUv?j|vS`(S{?kVInmVJw-hB@t^6F^+aglv8MvzKF!kbtGm{-)JE*Um~#y{S?q|
67722 z@lFz((QgadOn8OFHq^JhMq>N3Bz8PPVkcnYOC)w<Db|haB-~HFpTr)tn{pqC7{lVU
67724 z#hri$Nn8TFrQmZJ=qv*-%b}mc(dKaQaKw`&t^f?)OybaGBp$hy#G|02mCuv7YB7nc
67725 z!N)LU8v(Ct-Xd`=^t2v)tp^XsKp)2rlDGkQ8`qI|9CUO%XrBNYCvG6|B-Edb=bJW>
67726 zcnY3v2HvUA_o<L+3-~$>{hkhf&Omu9aLxpr1^VZt0pQ_W$Z{U;w>d~WANIo>EM5S)
67730 zgnjNp{oRn`tC0O3*yC%E^Ir6MA9(!+>b?m&_oL0X(cc5$<2&$$?}E-l@bB+I?uWtu
67736 z15V>G;BjL4TZuKH&%#B-ij#;nZz0wKIulkBYXyzA-NZUj?t}~zQP&09-6s&644OSf
67738 zzX<&-1}p&%=4`ecZ7|;13g8c-zoC1G9R;1O1ie*P5*zjapobCkfpN|-C$seuv12YH
67740 zam=<oN$h;cegXKp2>f0G8t>mkY&&p10R3DFI+uah%fQ3sX!{{NzXJVz1pQnI-Fyu8
67741 zxf;)|hOR#j8lQmuu+3nf+Cc2nbBO&HXj}(fd<ORTENt=Lp!Yen``m_q416Aa-q=X&
67742 zCg|>qcM|&&c>OY-e+4!v!&h#B59}%vyA5*QzMa?|;Q6bt=e@A~z0l9s!TZ;*C3YVG
67743 z^EUei<o+gP_!i{4ANsl<G`@}Y55QNy1N}Y-obOryp#NRy;vw|^J?P_M;C>%E`ab;S
67745 zt^dLO)9@wC@9byrrJn=m8PIwbd|-}ezl0rs3H;|E_w&I06@2nn=>G-azX%`uEoA#c
67751 zvr0T{&n?oI-dVO>l6jH{g(^qUkrKR&{3Q>6a51O}r*qn9&d}WN>~Mxk|1AgKei7@Y
67752 zXX$#1%Xb|DKL`AH>3TWvHr8pC67cT>zKs&4sMTUN84a8{CJI)XCkWV$qp6K-qT)kK
67753 zHP@Z%_ILYLznXK#Pb*w?RpDbF<9|=PUUHsMxbjL~#@{pE`JK*-a29BrsI$~2gP5v7
67758 z7vWM6?26c6V?z%~c%`^nlWEaV2|H*Ii!=lzH2^lo`0$UhlfpwqUFgeuOsS;77)Tk-
67759 zk&t3&%q=!L<2J{1Hp!QE7;X8qY!BOPv7i*pd9st84VF0n5R^onXX$dXQ-Mw@+4B*P
67760 zTLL=^VkVghRldVq4zLRz@kdj$xLW2Ch!7yLw^jt>>^vYb4T-Im1tu^E;&wQQ90f-q
67763 z!9goMMN9Ci3|D&SGbn|)%>y-?+cle8|5}@eC=}6beh{TpO|J13Od4H9qo#&r)HdS*
67764 z@W`D~vWING39=@2G7xX(wq7;*1-cI8!?5)xojrRt2%cqb@j^lr=Z5!r!sZU?h#p9R
67768 z6FuuqPthFv3T*&*G7;7mw`UW&pVKxl-w8iQT;oA`ucPM<?C6MW+p12aMYbt_M>=9<
67769 zW#vWsv@rEwV~gB-wZ)Q}E&M6dm@OP}yPbPsjN3vo&dz7g;HI#_3vF6(9WzC&`3hq!
67770 z!ZbH*kGh(|)mTAi&}SgK9xKdD)MAD0Z<`-@tnl+#kvnMoTv*KQ8!9xvI)l$&P1@AJ
67771 zL&caMabB-SY+Nc#rv~aPnf(^CL6#KG?fh~(IJIaz@>PdjI4oRp)-jHU;9KXdff}3+
67774 zt`Z8$QZOVdnSd|c5NPxmf<c+3{ZmXHw=-Z8J)w|Cbp`E8JZ^6=DfUEAbofkaI3)Qa
67776 zVBOjMlvfpHQ)kkavD+JKnwu04H78ANL8G_PVNdI73uisy3BIJ$-OgPpfH~m7%4;wU
67777 zR<Ct-Jy8E+=5rsye4BhBpJN;oFdw)W{em~(HrMQDZ%XZNzjt823hY;)ZrHEA=;!v+
67778 zI_dgL4LHNm;4+6?+=AgCx1b^if_p8f2E$U-f^MHl@M;ze*%U|A<%o=#&=3x>aV89~
67780 zALn~MhgVxizs<G?eyK=a+PqU)*IzQ4O(Nd_h;#Kh-mS;iAuYa+XhCL4SPxBpE&2@M
67781 zk0=cB_1}oLwqFu11xR50nZ6O)sMQg#8XCGinN6f5HB{KCP(RCcb#=7+I@-Is{WdX`
67782 z%w|(b<qw{4e=czJtm(%#S&PT4FSJd``&~h{#W-oPCy+8vnHe$~-CFEy0`F!i0p5=*
67783 z87=02EZ>Q2QscYIa~;#*`J0|lf6mg=7nr&<ZY?fZQY<cNa0fJ=O(svoG-aySrSrU;
67785 zC1m%oErx-aPH)J#aE8mF`SdyLc)COiB0gnl`!1bN2bgI<%#cZtH!9c`aEAG{o?|DF
67786 zqV-5RdsVb5@5wO)zIT(xgut!Dkt8lf$sP(OV!>=Eo6KZV>X<luI^$Ad2tlMAm#MqG
67787 zt7~E>FR2(rXB*8akHr*-c#|2oJ=<4sx}A2D^8{B*GAMg;E{AMn$4k+)9FMsoPIGu>
67789 zEfFXjL{A2a2{9RQQuFiV#7=16qZy&QtID{Vt8%LxnQ~d37S-gkCcSZ&#pkj*tg6Xr
67790 zO=j5QgePm2ELOX_BNnuJ+*zAsv)J67lR1B*zoD}#-}+bbH~O2s{KW(N@OKSsql=|H
67794 zHkCj$;;}~cb>fGyC;ymq0#-G%G+R%xfwN)^{C2ouY_<SfYtA#@ZEqvSF4~v%_SSqZ
67795 zmB55jvw3d1h~a{z(L`-&==b^eN>eXPHO%EO(uPb}-7!g$1hZLI7>h7}I_EG4?2^Uf
67796 zNMyaXctla%Gkg6}8#A&=BJ&5t)Rcg~L1DoLSFu?&m|cx&pT+K0tS-0P?Sj7+I{emD
67797 zQ-aI*JGP7(r6b5r$}R&5?Yf>ZV<K+B3l-VIWGs#B2=y}T<YCL0b4E`vnZmxfwb_}N
67798 z%V~`Mks7g1JtPf5vDvCLM*k=}OH=%@beO4a&CcX}#J$Vd(R8A87`Z4)X-(TfMG)rh
67801 zF%b&hG4m!lJKdV~n7-CfCboBTwy?_Zdggl_xkz?F7R(hBvcc?2npA_`Xt1$W5l6hs
67802 z*N}HB=42|&j3Ki#6U-{I)!;IyE~`gh?;OL{({^bBWoQD;*Z3<rF+&8*CI%N=Koaqv
67803 z(AvniDVU))^29kd1iz#aEG-!iL&c_e)bE8d6v_x0bv)lZ?&NBL$m{87uUD_C>o=8z
67807 zbLf&vW$zfM_EqcZ6rHkDt`fczWP-{9lT;_e*`v=_X~ZByz+vDr>_g{W$hzO9o8$NE
67809 zPY{y%U|ZJc7qT<iW>+!mh}cC*Vb)m6S;#fcZ_{`<kCo|kX&L#bP-;Z5;d4UWv2|St
67810 zK*>kG=9G38tHn-z;)Huvmm(L4ncjlGB__#Q=aajQtlT)S%~@!)g`IlW$;o+cH>q+2
67812 zOL}L{ojvog-ouJbnbg=cU)_%A=NUXO?lS?@qCa0H@_66P<66~4m0bP$s=d`<u^Ii6
67813 z6m#1)n6ycOi4IvZ2x7?FF(u}9bhP(dL-5`Ai^kl9g2n7M+PxhP&ws_c5<$h+6tc;x
67815 zz18tPR|sphVB9HG<Iz#{CFvB3U<cNt>1{&JgWzMeNCID_E~tAapnDMCc`wnAf-<wD
67817 zW=DD2M>-G%O%Ay^su-A*@>_BZJ=2VkC|B^hi$U@5bryZieJPtsS4gK(3O+DLlVh4y
67821 z=tE!Nb^BF5W%{*YqX-++V{EoiHg7lBd>)%4*O?M7w$2C`oKBmwc|z7?DB8U?gU#*?
67823 zxqo@qrslJPV73G}?UU&px>z`zjN~o3Ftv`oyEBqegr;&i-DOqfgRC%gYFLT}g6~)+
67824 zsuso2YBuXO`4l^ewnz$W(xus?;08MwH;j)PIMrM_(9j8Ga(pd3HfknnyZ7p-@$*%O
67825 zO<W^PS}sRAy%xJ<HphIPxt)?2ZftTyV-9wb-JVdH(V|L9Fl+VOrC>D36s77Xr?Hc<
67827 z_BCNl-HNr!JnXrxu<nTV)pIGv9gWy#S>WfWo3KbB;mA6N3zrfc11i|2qtJQ#;S81B
67828 zcAG$6w=HN7VijW*tlBHAWOb#Y%>{^>V=F;pL)M)Md85u^+!>2H-602CpG$@&rlJL3
67834 z74o3~C4_`7#{tBsmtwCFlk-&>L?+9U)xc#C&6)_|LLeQlNie!qaf`B4a7}G1`t9bB
67839 zV8y`~_2L4r3rm54zM0b|ceklDm&aXHY(u1@i%3L>7$Q-`77LDws8ei;gk*_QqPEP{
67843 zf-;^+mmK)K*aCz&R*0D2`0Q0hWMhcc^VgJ?CA4>z<9OBM<ho<z694h-7{!vAWL~Kq
67845 z#cXy2l(u%O#c4$Jpt|#$x;;3LU-bt#nq9`7;8-SPiuFf0+S%yKbXMh?V7=?FI~RSg
67846 zXQEDPYTq-_m#b%@R!`@CXQJCHv$cKon0#tZJEhrs5U|N$ZcX(ky#dK+2>RY14Bn;W
67847 zqrSA;>|nAlVVP@n>HG8Ns&wkk81|#}?!?{i+S>{HcmH?GmHAK2Klyjc5fbR=(Kh-`
67849 zdL={JnHg<si$@kMPnaAXlY)6EEwwnCliJ$<e|dj@-*?5<sK*p?TN_-pcg0E|aL9Mu
67850 zqu;be9NN3$u(kHC*cb_ndsn>oCAZ7H_g!&iWb`)Lp}i~VE0vN7FXN6WOV}gw-2tO*
67851 z3hv}fssnE$ktAvRTWN$OlK5FmBi1nKTw_{Q!v&^oO**uL-GjeGQ9mu@CRqhVdxc^R
67852 zm=ww3a%55wTft*=^e@d0SVnJC45=0-TW#(_Hehy`?2Nxa3HUuqvBN8}3H$I~J+1zm
67853 z`PXN{f2Iu2kKRoeR&JpzHJ6%fJf(Pn+oioh7UuG^pG!zv4$#;npJ-^}TXc7hpJdc_
67854 zrT&h+%OcLI7oMj1muNLgk~!#cgj8m7TTH4Vn}a5kBV@<gfQi!R-GVvZ7K)ne*|0a{
67855 zjF@Gg(`<=*2W(Ea-GyyJg7YXmN*9XX{d@E1c~>6!F_I)a`mQY2<-0_9zKzdpQYCiK
67858 z__xUEvi9_j<#e?y{5Qzynw_cUbQLEx*bb4?g|+U#E~hKtk2UyHfm9-suFvTj+htcJ
67859 z8ha;Im(b;Gn4Z@1x%?rw$$7k|B@vXfO;)9v&E?CqYsp-WYA#osou_h*%jNo~p9hTP
67860 za2@D8;9r;{)iCir=1A3Yk2-03X^I&fH8p_GHs^cFJ8EsoWfHNV_JY3dJ){-`-&4ww
67861 zsAU}aWhM(k^j#8;oGz!HZ#0=7G#xVCs4m~=-OifS`ivt>OS)K}a<osrP~=d#Lhn6K
67863 zJGCw~$X?3~YV4mD8J8DivDDIn_T~hosfF(l|H6ErLVheCC@rMbF&+<@3-q2+fhP4#
67864 zKR_ms5^;@X0-=|&M4-KSKu-9DY0NLioui$oD*i}*d460fkiWqdY7QJI7wBBjN@1@b
67865 zahdd7pnd77`#l-nuLt-3eLkS|Sq$#&^MnI%QJ+`i<NLCA$*FO>>{fo-QT3Cte46)`
67870 z%w73==B@1e9u1>w?|U?t@DF{BHtq%EA>X12V)ZSW%ErA#bGA3W>sz#fr|vD9JyG`-
67874 zByIb~^Koo+Shy5EM4}FOJW#IA-=3!v*XIhao~PrmA0khusWIrMxES9zPlp}qL~3t}
67875 zjwq^jn_W_5X43O>3c<YxQg!J$+16Al$dhw&NuHY%m{>GB>QZy+-g8Ik^4dFYr{iDs
67876 zjyp=xWG30j-*NNz+g;t-2Sx{bzx}b!E{D^2@YmZGug~k<_wDxo{l>t5);r$4-)H^v
67877 za}a)Ws56Iui}wzHzg&=7&c)b%ZvWlZCWD-CH!p57n6$ms2YjKs6o1MRX@U=lJnvzi
67878 z#YOdb7vuJG`_p?bJ-D?eOY(>6^91clK3K<vQ27L6{;_NnD}Hy$5%JnAf~?08uXdD=
67880 zkJ}-b8yxP8+u!Imqzv>g>z85gx&Z5(`DEd5?8tOSy1{2viM5a01gc{yuWH<1U)ieq
67882 zB-uhzz~&16|H;$dZ|58J-#*CKeLLTMkh}tI5Z96lTG-wX(49f69a|6mrw<e<6qK~2
67883 zg08$r?UvHMDHys=n<5+ZUq0ZUpNG(*?xznTweRMWA!n1Vy_!$puu4+(v-w&c#8cz>
67886 zoA;VCN!eIPWm+V^Eo^f{9R`Oa82z>>&V)TJ`;AHGj3>Qmr_s@r<iAE?pAe^iBR+-7
67890 zo4}qqE?|pmFv#A~=g0p-(EsT{*Mm@b2K)UBr8If?d4`GWKse-ypocu^tac(evGyV@
67891 zH?|R068WBF+|LAO$lh3Rw#{cnpQ)=SpAdYK9Gl=T%*@ibKC9mb{U!ZsDN=uZ-!BV~
67894 z!4hUc058(q`Q-*|nL_&OpH1MCPe43@QCfq&FG)+WapIL)R^z^PL)e04Qi)hJ67qT7
67895 zPVHDC*VW0-UNtEY)bumU4%MU9Nu;Dw9v>zfh1o<!X3U_f7!!O*I24D#WQ)zAI;18q
67900 zLYK+O&Q&u82_hStBw67U>v$UGbLu~euj-e%e+h5@$-j#!R<317)49@Nh$Cr=l_J4_
67901 zo9#cp$D;+Ynh&h~r=QzvTt%5bSC`PS)ta=~8f<M7?LJr1XEd3!`IO-%i^XX$SZ(ZR
67902 z6<514F(YG(2GcH6z-)*nqlO)3hrwzxnziGmeR#@gE3iZJrG54LPvK3V9x~7aboJif
67905 zO9M06&8Ce`!5(+Sn9XgsZ6v?T=O6M4?xZKdTt2r8PyD`-l;HFGmaIH#+0yy*`g*7I
67906 zbhH<mQps@0=`b1u8eVnOnw4t?k63!-vLhEQoVR5DlGy{jbNlAbnAS6M%FOPG?UOsO
67911 z%wDo+_KG<x`g^BLP9-8Cm&2eh>ALiMA?<JX*cp1ZIuf*%ot|-~+8F=PU^>$Wjg|<S
67914 zrj%K*89S5ygo{a@e8g-@#nq0L!<*-JEQu|@dP`sP%Gn!k+**nTH)m!Z-d5-iPg#9Z
67915 zd%&-a$BmVx()Y0bnLsb{NO4C1dt*URs@bz?l6e-Ev<-1XR%nQC-y}tpwCq!5L=_ZL
67918 zHSc75t0R>5`h%DkdS)#A>?fvo7Ol+hNj8s;et%%H$tjyXo<w)noJlH?!k3L-H@E`f
67919 zu+fv9)s~M*#+h+L`iB8o_6D0;R8>E-qRm9|1Hx$(Mg%(gHZL}J{5NqU(2EZu^0m%J
67921 zl5!n-aMymQ#3y|6$SpHNt5z-Q>5GOxB3RD+{T(LJX1{9m=FzLRxmGWVOwDIHx49FA
67922 zz>!Orw#-U(&yX8@&GSW9OT(<isSU~z%Y6A*-s&=P`7VNdYlS}YQk-tmS1hfI2XC_r
67923 zk{~Pym&|&>!jEIH67W^Ci4QJbSZiNOk|;4IZXUxGw4^{>7-5eF7g(ylOqbX`wIf<B
67925 z-00{lqrdL;Y|3=U7Ozh(>@N&-wYK^`Ar{)(XBE90l=GWouCPtF`G(4mrR#(*V^(gb
67927 zi(@nDw406mf5gDEAk9@-{K@Jk*L?p}U3hD++p3O@QZ-KT8=vp1?z~^w@ZDPn{5EUa
67928 zy5X~j<x>sKt)2-dPj8-?m5q}-=iV;HT92Ar$Tf7WpJ{M5F~Kh;=TG;zq)XqQ_b2Di
67929 zp6qNa1_O<rNbC+@s>$sR%sZT~I%#v|W%VOsGv?VTn$)dfvzANPl1eh31Xar@Tv3-%
67930 z$f%I_+h{VIT>F(S8GfA8f^s(&CQ-4yqdnbS3)Hn_!)hk5zT3cml6dsg^UhckpCpTl
67936 zirZ|%q$gWsMKn)uoVqONvox<*knuqyoTvPv4PThC&@-{k;%aa=Bsv#Ji%;%R6Yb7{
67937 zqx+}wzGqZM#UyxZrBn6k!Ws2@;2LR_ZwRyu^6-AoB)+TQ$N{SU-%J=2hWO8mvl0Ft
67943 zAzC+Is8-id4lS9fMdXVoKBC`Px-3wb+?Osa>-x#E!y+x+;b>dRo$d)7(cgIdDZ^6-
67944 zwk{fd?4qvbhS{a2_BjLYbl!#DTPhXdYvR?E<>#+P?d(4s@-kswn&;2#bN-w!@bgzW
67945 z*TT4_v<Ru~gsQ2QT4+JcQ54}avuZJ7-`j9lG&wsM3ObFG&S*c(>%~kZsb+&QAP9lk
67949 z=}{-bqfQ4_6M8zZKKA(<IMpKMQZ`wgCOa(Yj$G22%&8u$Q=NKbO!fuM24}G)A5|4o
67951 z^rX_n2-fu6g~SCu-G<dfI?cl*&BJ)BCAD9F&ShlHs{AY<l^lCzswW#LtX)rd)>c10
67952 z;cSb^Cg<kFr{?_4GxMDjeN4m}D)_-LoW0-+<OAJ;5WVTLPJdTxerQo!|Ani&PM;r{
67954 zT9QlWni{GBNPicwH^}<;zVXfN|JjQki9X>KnbE4+WS2)ZOJ-GcniJi9DPN<*tOQfB
67955 zNu8;5S4#C6`j441Ey6^}=n^I8)WQ*GADLa~>S%LVd-4XSA-`Zs3X9!@EcimnWNWhB
67956 zFZQpW<ny=srmvhcQ@71@atePCub~hX=nMLnUX~!=HZRCESTU<(y%yG=345Q_-?Di_
67957 zLwY+Oll283zw#B1Bvw~^oPuAg<&-y8>-8{#WuB}lldt>vmz5jG<xCEh+>x+AiCDN0
67958 zDfqn<5<=BLqc0b7+L~eSmQBgEcWZ%O(>nKwoAYg+mjB1zdjQCFRR_cOzW(OTd-LAB
67959 zHof<@(`Wn6Hm$T;X|?LBW=U4@%Cc-rwlTOMSBi}r#2=jyAb@F3jGaJ22!w=GNDMIq
67961 zq;D`SYRyQbI+vZ?s-#8}8(w$!ILF1)BC+?Q`!WZ1v|LKxEhDg2N*4F+&93{U{+-sk
67963 zaFKo!iG^ifdP{~k!i~ovJ%7u-pfr=s&yOVq)9sJY(CZ9(J!vx*qo&Hq+bkFt&i@eY
67964 z`%i!(=xY~LYo<K#c}(@mcsS&?4AQ3M1i|uI2iT6mp0$_*8IQ4@Wc-IUNH78?IJNXZ
67965 z>WUm2ZHHOE5$}t-BubB#f;EC=1t(1)>C2a|%rrOdmlK;Oa}PFlgz0^?)KERFPmCAK
67966 zd^J0M)9{rm_<V9LpO3#-K2JP9pNEX-d|oy`wrBg1^@z(uB)f?4Ux?e0e1-UE%qO!H
67968 z?~tKS<Rq6wJ3T`Sr|0v>h6u7yQ--eIp=ZJrEjb(lAzE@C33i?TclcL`k2-+YiaUz?
67970 z=$mdhdHqK5o^!tjE3T-*N%0WniMWG}a~{EOQk*;PBaNsMsR5+hAb5!P_uv@--nOAi
67971 z9Fmkvi4g3ZHT4>_*42*(uy)Dd{s9;Cv-k=h4_^xG)+;&Yr_rmh6;DrNT*w<%;IbY^
67972 zpxD?<j9`42mxfPm)t#4&-RJRL;Q+%%<1ZdlIVy9mM1a&|N~nR>brtL&7{U((%qJ}M
67973 zje#_v@3wuayQ~z#%dF^B?6nerpx}Qj<Ig7>@kXst(`$NMhxC`elz-}}9bd@**`MXV
67974 zfcNJFRN?=EThWRQAszlA4zO-pLbVlTCs??dh3eRtt;>v_e~@sJNTBT5g;&&YXP7H;
67975 z_2cE#^mM9NxwgN4=xX;3-#D`Q4X@iE9sJgHC%=e3fB*SOc#7N%Sj<N{hQs4l$_wts
67976 zXgMDU62rg(79m43UffJkkE8GVpT6z3Pf<eRN2AFuEU$<EM7pdPR2IWR+k#rl-rVRv
67977 z{GICMmC9wgTybB;Q}cSO-W#s?>(gic?u2~u%Qp;MJJ^3s6Fnz#eiEGT!DJtT#{o`&
67978 z+_l0XvKppFO+h49B4^J&{i!7R*~Ab3%Z4eA@Y{!;HG*ph`VcoC%=w)HO%g-s>?G%w
67980 zCKt~LLNP>9&0Q6r%E;<Ko*)UvD5TOw9VbQ&XAF^KJ)bIEwmG`De=JAAD5R<l&&-%}
67981 z{<1t7Bj@_V`D7vDDpk@f#b)azL1~TDT^swUIG!?0Gq{NG9K-S#dW)>rR0;`)*s6fg
67983 zUThH*L2JeAKok8@=x23?6+DjG&N@kw@tolF#uUD}^HT(jQ=`-T!1Mse6`OgM5_S#h
67984 z{R0JlXahtVFhrCP%k`pjIFD&TsKtEW-rVMcc?5O#d<tGmUTM|4wPKy=4y>lFIhk<Z
67985 zvDZ!)ww_t1Y&l%WAKdb_=C6L~#%;gyz;#J~?QNeudFD^wUBhcbK+oBRo+Ec-olV<4
67986 zi%H<dC<T<Qhw|w2?zg^W?%uEY>+ksN(zSp3o|=E_x&QC+Q-A)5wReF4{}<T!<M(c>
67988 z4CDE{9ouvY>BR)%g3M!-<?mY27WL}jhdvzq$cIB8{z&-4r$Qh8aQ8oYSQV^8JT?zR
67990 z-U0a0l*l@R9zyj?X6~MR{%<rd%ZdS$P<@gohh_dM_!C5fU$%PIV$Kh6i`vy}lD60+
67991 zMWJhGdor{|7N$cM+9u7p0wT}#`TQf8LYPL)^QXYK!S7hH_RcQv#vG>SyuIG-*GeT<
67998 z;ffzFYO}u`UV9O7@Wt*e*izTlT`mAzeXhP-CLA<0j54<2tE(_3JMK@+%q$Z?r@Kiv
68000 zOsil@Ne({ycDEi*1hN@tKyhb-l2?}E-ok<P2Oi#a?p35*_n+`hgh{TR-5$dm`TXCb
68001 z`T8OJKOh7)KQ3A-mrWn7bKYZbmSwyoUF2qLz3jb>&gjMNML;gtaS<U9N@Kf+H($9J
68002 z@;%g7VJC1w8@E-UD^d4|4LDvO$AJa~csWpk(N;N@ST<{`K<${dSK8q%`{JX?M5r2a
68003 z2RvLbtSxAPd?LQEB_ihQE?x=v-D=$G<%#x(2EIr9I@&J@D?{3AX~)(emNUS%L)+z*
68006 zbOk-8wLdMMxO%m&di552w=!tAZtKB`b}l@OBYZnsH$J=!UuP%dxynHY_$vI=3+5B*
68007 zbMgu3&{FnjW*R>pN%X`g!8gfoKgT*?)=Y%W-`EFZ5pN-+c+6bNj48w?&3rg8voY*U
68008 z<_#?x)SZ!#fZ?7a-i4n11;l%mw#0Lg?3x`hj9r6RuYki@*;Jje2wm{=lP%(1&Uns{
68010 zJ!~`sqw}SB7{Bxynvpc4tFd$VWxt8hyV!fyT0%G@7{6fUh9QdjeX0{-&f1uVk@{%h
68011 zt`cidr!RO1?nBfNV-Y4F;3k{rzV{rokt=FqG<T-F@(qhv*1FjahQZ$uaqA3VI<Yyu
68013 zk{n6SLdiw&>8xy2$M6HLpJ9>-Ncd*vqKSjYFkKKV@Lu#ByH>HO&^XU0xuUEHhKF4P
68018 zgKg1O@b$aNPWcWf5u5!RA5B>W+0f2Jf&vcQxf7jl_GNtR1y)_Lyn48f-XWY4YZa2y
68019 z@-nV*2Gc8SkexulZhQlpCUSMG7!0V4o{48;f%>{^v1IVhs2OW#29A=ZnDM#dL5fc$
68020 z(^+)xC5Oigjm^d6hT%lm7Y)#qI~9x%UwOM6KKG0q*LWixAUp}pos9s?-~B`QFnl-S
68023 zOP<!98tD*3#&H?|g^~#ujkpiQ@op;Tw&LARNKkNy!Xo-5h=&X)3Szf}-qfn6a3Z(n
68024 zDS&mu?jtz#2*9h5bMV~KnrGqCcGK3g(2Smai4VgBnCm@ELqu?L4(C}N@dVB(-uj}R
68028 z!Yd9wG-KTwUWnOShNxN<Gvwv>yK#$*X+=HRm)TBK5B`{G-GKK$Bx%*9>y$U*bZUO@
68031 z#8Jyzj^I#GW+^ypg+MPZXNCgI?~tTlF6A<*0(Jmfg_*ilw$LA%-ib^^%B5+$6fEbU
68032 zT~jm76y)UY?c<UHVPEiI+JwYxE`!$Apo(Mqc-?SjT8ZHRpKPUy{Q>&q6-r{yo(*n>
68033 zmAO*-mq^+{?=Sm|jC$D-PVEbi9o>~P>+!rR;fs_#djW-TIZ6S_04{W9kAgGc^7g^~
68035 zc<kz{mX7b(wrS(wK($=R#YW?!JZlR_D|I;gb*C-~E~OJo*`<>%sGNl80WXn$1R>zk
68036 zM9`%QkVbH;@OFcCkUT-l(SXhgv_eJCx!fuz(T3)6xEzKm(~1-g(=OV3Zv4`yPpYJ|
68038 z)S)$Y6n*_8d33qnL2C^mZ@K`}qZfi>%aQ%(zfP6O?;;ssPum?v%w-s@;cXi=k)zT2
68040 z77Tm2gLWOWY7_GV(=Ix}T0((o+G`=zh~t|EiT2goRDUGIvVB6UY|d1-JFl6|^IWQ3
68041 z9J)*uqoH8fJD7{tJyOQ^L_hCl&FQ%*9jf)&#`GR7ml$B_+*GEo--P}l<MN~tUpHSG
68043 zmP>Bv%a2FbjmauNQt9p=-K;!D9YL~13XFhLkbyd^!3Fpk_zhx!xSqI+cr)=q;`78;
68044 zh=0_cu@33++u$AWb~phmFo5=z037fsI1dLAkww5m?EK(>2)_V7kEk309Q-VN4f-n#
68045 zoP-N!&Y_JRCiW3~5f}Oacp5!HL+^YAJO#dpo*)A^d<Z?k01B}Yz8T$Z0)rU0601y*
68046 z0am>uq}C^iR}rryP7^1HFnljy5bz1`X{)jfO*{l%ffPs*<N!-NNqmlYocJj55ro7$
68048 z9bnd$3Vxv|QF_soP=8J-k$u@IfwYnFJ3EvJSO=H`R<J_^1b(6Dp}jzQgkAtWT>lTz
68049 zBX+?~kyh-KUj$0L(4CV08B)Ugb47{Liaqj^rNkG}6%`%vPodAtK<&^Y^fRKz3)>^(
68050 zuek`jkbXk!;^&JX`U@e*V&~t+M|mXU{xZ-glG4btAjjs}T>fk=UL}3NcQ?9K;2pwJ
68052 zT_9P{5-B>FS^^2ApwL8uUMj$RqeK*8zIYtKJ_J1kCo0hC6b}JWlr|xe8Y@+-i^YaF
68053 z0m1qH9-K^yPT>TUpEA6R4KKWOaHUn?(hR}S#LEUQLnoL^0~gz(K5`Lo3v90N@_-8p
68054 zpjav(Sn~~7g89-502&F1?T@}ZK-Xb5mB}6lN$`@P#yMn<{aC020vA~9!Y;v|574~`
68055 z^iTFcck8n5mR}+YIzj=lEW^}a77Vam|2KaE7>H<uu;_dlP+1K>P8#~ui-RAyMBcTC
68056 zu_zNiTO`5=iBG&>B)a<-N`B}PCD#(*%kXE50Ft-czw>j600Gz>!CnlJZXn^|J{+pB
68057 z)s~gpzxQ%r0ZgxKE?T%iuSfR&<Wa%?h(BL}imJO+EF`2;Od6q-CelACl$4N1S?nRE
68058 zBGgoKDG0lmfe=P4bWy}WnoguI1+Vr~myA+Ca;@0$FJh`L#7F_2D4wYhh-O03p9Ery
68059 zEB}q(LOg=LZXj-ePouA`=&J$i(1ZrK23(D<eBS#04Dq|fCy7rGj}gC4yodM|bpKt}
68062 zgChvS1q9~;EF&D#FbShD3=LRAaMuvJ=fMxbGvIsRzrfeQUx6=!C&BN5&w$?qPk^f-
68063 z1Fk{eO~3-|6~LZ(Y`n%%0*n<fvHErQI>WGbR<z{{K=0Za8O>&6xxfQ!8;otwE$lQm
68065 z?Kp;m?8UWPh;-c>7wZi1W3F~1Ub=X9yP4Ixx9i4=>IgRe5@|V3nC?#te4IUQ+S%py
68066 z|1K7+H4hhSiU60#wg%{o-KiG6GQ`?Shp|4>r9>wLqxavY^(tRZ({ko?66A1dQZFam
68072 zE9rYw55*`NFOrg=dH9umOQb0IM{boD38!dxG*R5$E3sn)<f3t3V{-SfyV5ZD!suMq
68076 z$bLl)D%&4w>k+~0cQQ1KCc?qUp)K1t7&3&VP-Q~(z-T_0R3YJssWeScl0=!Ap=_Wa
68077 z^9k%E4AOFYBlAivrwQ>G%cs-T=qZ-*27Do(>aX&g!|%SwWBkYWxNuZ(B&<6sv1esH
68079 z<mT`*g{i6SBb<Bc%;IOK-#9``2Ns?wOiu0?<&?402R}RcV0-0l%H=y9!GUAjC*OFk
68080 z&*VbsoGzN#bgmlq$nJF7%<2EWc<&@<v`-((UH7V!(L^d}nvvjSvOmac&)znBLwoUw
68082 z-EnksS5+@J$KL$-35FyKgYl}6U5tCeu0BEHG@mftc4`LChHJ7Ei-(<onA0J;8AWlX
68085 zy2P1TK@_s1QOe1>yw1i@A4l>6Efq#{(M%wI)gAXv3|^CE-X-&fN)sZ_Qgk@tG-cWo
68086 zFe%8f&m62=-n{)QzqX;ad3-QD|Mq6SU(@|reS$Vjj+b?QbRe8^Pz)5wcnz)8c3jgo
68087 z57M&7EtZ=epF+CIC0EL*KJ=0Od#_)YmMB^YE-Wqtkl4<Z((5--lt3r?J#kkkq^A!J
68088 zvRXMfe@#(r4rMjdmGFhiKB+M@qa_ty&c-QkT374lxm~mwR%AEY*Fl;J1RZmt+~$J;
68089 z&MHmlP3d~o(==jk9!H!-O(E>Z{UNlP#}#$xS?Mm?3@NTy$V20)5an~9z_Hbn-cmC~
68092 zCj&PUM<5V^1kNEbYdg9_0Sr_v11Jq0=(mRcs-oX2&|nMpp%HW>SAGDzAK)YrCl=_?
68094 zz$Eq(GU0-6Lr+VA0Q?VhX9%PSTy!!9>hO=z?*_;r!SDUVyNGw9yIP<@{2uWe#1m-L
68095 zFnZ+$bKrh-7mp2|2wo8<{aQ9~;lDABk}ngD#Q(-L3cgG<!qEx${QT1hQHMZK7Je$!
68097 z`Ydqjg6<T~g1(}!(03Z70--=EbQYvzkytu%b{K|R;T1LV`ynDHSVGT~C6~Meq(LY$
68098 zlDISk6~Ji<w*+Y5&}qjKqN489bZq%BDAia3!T_X-0<{E+Bd|~{7M4a!2`}ZTB!gri
68102 zZ|#vGR*%PHr$IU%iU0Je;YZZ4Y2gj-sU{Gs3#7cuv;c8Lig@P4k0-@r9a`uw11&(l
68103 zmaFA+XF&s3GjIJI&?axw2IQKEG@$KnBHA?9E)(MyhctK-Rg#27nFM^nglU4dZ#7}o
68106 zu{VqOb>i2E4-t<L?<L+t+(+C?+)3O{TuCeu$BCoF5#lhhlh}?vy$3yG53zxmA;yW#
68107 z=vkYI0+A!KM4AW_A<H{u5E|hm90WxW@CWew@NeMP;n(0-;gj&s;TPebp|L-1eLn#2
68108 zgRh6Lg?GZ+;aPYqyb<1D`KGX6>T-Ap)?pPEVIF#*0c9vz-ly*%K);K={}Fr}{4IFe
68110 zq-o%01~?CB%=TP8U%m?6aZfCFvs~-wf>zp7&%IRd)EBes!7O(KHM>q1tJ_(xA~0*a
68112 z9xH@-z4MG^a61Tgs<yV4D+1d!TW#-B4^!J&wIWGml}G79YTG#_)+3jzhuin`=)8)!
68113 z>D0=CeHLQ4#<=Z5v;BH(_ixxC=n4`)XCG?%;_b#`O!q0c>O-gOrCs--<2I9s6)vq_
68114 z%au-tM0%zF3j@GRV`q$&%_Q@N=IUiL!9|Yo`U7#F<V=JaTt(&{kMW}e%f2hy$t6%J
68115 zcyr~*LUr`YabsP;h*Km@Q;^bP8X-EwzDlep#{^XrBC@CG+k9Osl?r+r@7|Xk%W@8h
68117 z-eM(c5s)xl4w9n?s60y~yJ=a1z9KD){*_oWD3wYPZ$!v#nhp!{_wSXxea(2Gttw<C
68118 zP@Ysh;X<kp5`-RCDFzKdIRwU+8A$mHN;g|8w0`0=#NH`SePVIUsLxdE4V|D7vLqK4
68120 z)JVr+^v1EF0z!x-Er$_TWEnG<$-1d{RHQiGW8g`6onGp14w)^}jD&TUEDC1Wlj!r3
68122 z-Qh7bGwxXB+$V77QKJ%xMO_r{2)OT&LeHKKCY3}$4=LG%I~-Enei!w7u(5+x2R*p&
68123 zJs0-kzW1a*k#NFv>DhHm_CUEmPKpV)I~#Ba5wjSIE3}+R$eZ^Q-|0E5{1M(vIrwzC
68124 z80W_vdEc}DhE|;~oz<vlf#u~iLYFycsvb9_Lg6H-L}G-)Q;k#9=-(m2xK&ML84XRE
68127 zM8S;4eWbG$bw@Y+5#j7h6iZ@oGDNW>n=*m*gE>Pb=ukLCx}(t!>?7-Vo>u)4x1zH7
68128 z^?8Cgw^{a<`cvg~UPg9R5*y}7J=rW)hLe{MaZ-J-Dy23?-2MGY)#Hj|Z;OAh^8HOK
68129 zT|UD*ry|ipF0`Glubb3{E(<Wu-5<C+voM*_ya+j(qDc~QLzW6>UCh!>W|rn@+MKC+
68131 zz3OlT1DZ-}t<8x@|3t|@Kkpqr5U>cl=Nfl#eX?&l5O%~J&><RWuRrAU6$3(f|E8kX
68133 zt3}C_7*D{UIriDt8{Uab-v~!h4oQi7#gsYG7p)I^;(HF{g;?|?7YuS%Z!X0z_;R#2
68135 z*v;)8^-DN~7vd^<SSBM0!m6uB9HNo1Ml3`l5R^-ijnR!B12@gW#c6wocejL_eWD@0
68136 z4r6PI+}k`_?Hv519aGUcP<w$W%jFJMHe|PA703^|vMDdY@wBEh1}AZpJDUun6-1e-
68137 z=CenRpEi<)->0>9mB$ZFr5QAYn_!)~tkWz_^3YQl&6w>4qDn<JPpht!$vT-JA4n8D
68139 z{pR(TPafM>=Gyz>GxOo>_-strxE|hDof+(pQTo)?yU%^LdD~sr=RCy_+-xcX!<t<0
68140 zmt!iG*}rGK%InIxzfeLVD@Fpe->sx5Eu@6{L@zJLaAhPQ0>`tz!~G}S1Pa)NX5?n@
68141 zHt<m>Krd{=ok-R@4ey}7vGGyomfho9z+1o_IAs7$_6Mwxe-ep!8_{p{5U5xNR}mJ$
68142 ze{_Vvw_Cy+P6614uDO8|UIuc&K%de8gva4AIFA0-fo7E`G?38u8&;Zx0PjE|=PRuI
68144 zU6%r)Wzk2AvwZ{@oWL0Z?h-<i6peU`i3TC95&<HDatWywywkxi0jC=}7lB(v5|JAs
68145 zt<MW}PScO02MQ7=EV-bhK$(@0s%SM_2T0;O<bg;a?bi1=dI@6zs5;RgZlG#z^->4J
68148 z!Kc8-pa334-w%Ud0{4M?!E3?Y;1<N(Zbjb<U>+%)Q^3~=i(IR*L8J><3fBr9lC||2
68153 z%e+V;ncv`%p3_y>BwCD|dlkn70=|Gp3-_@+=P~c`>bGsZWu{aP2L0pLZC<={Z<V1q
68154 z1{xH@(X>N#>$F>RkB*OCeGha)_WRdfYesZ$RPcpoE0J}H$e5q-mwmfmbNZ^$`_KL1
68155 z`|4Ni(ikdSU*8wrev0xs8rL2SmV6Drns&8*7}6u{siaSp^-M<KkYbh%8aM>fZRotK
68156 zJdszu9@QNRi?on$deE+nD{d`Z@-|v;;Ut}PbIkj>aKzRL;`w^`+3&1~X=?_lTM;2t
68158 z(ymcQVNbj-?R0q=aqjHCnm0MQz2qj|z#z$1R$aW?%P>WK&LPKXPf%eIVf}7<Bvvi@
68159 zU0xYSfkoq3h_}MMD5Q>jj4@-fOO^!1Pj`U&!QIo>&0O)><HEX|Dl<nLt?hdg-s$yz
68160 z_yjjJKdbAhdWJW4-hX23^7S5L(;I&GOrGadH$OVyQ(S&pGzy+=uRgjnckoJIEpc??
68161 z+u!u+zHon>W_``P#7Pck{zoOp!oCzur$(|@er)G`lU(HTKi+@m;-D5E&+$ATf=@9*
68162 zGOtQr)}8Qrv|u^y4hHY#+)hmpY3XSz`U*?IM#j_{`nh-U9kCd<z%=SQuzGu=pHF~y
68166 z&E60ky5p+J2k*P3uQ?nQHD@^-z4rch{jw6=G&8b;W@Wz7kmX>;6R6jGO#RA2X?-Im
68167 zFT?S-2#!3cwaW<v2T8y=uZO_>v%2<QyPCBPRxA?mA<*(LPd_(kxS<i|S~fdIY_JRF
68168 zz@4XTFo&X&#`v~LuACNW2}XaU{-zH<)`eH$8g-=yuMzdQVzFeZwKY&2&tXX>aPC9I
68170 zx2q;}227ns7xdC=-+k^w?dvw}|E+6;*B_kNUDd}9*GH~VVoGt_-a*EH^4iBH9(sJc
68171 zO-}?HS%ANbU~9H(9E2pCGxSx|yr4pODCjk9Xz7bVYvl}d2^zO^3NW;(0UO$@-dBhl
68172 zay%f)S)C?_j?dJu#o%t<_NiBNz&&|n%WvOCGlmk2-uU;wHJHnH;M_|5Iq1V3aC{IF
68173 zc}3<Z-0lh|B9jEXSjqNG%FrYM^ufMmNYOsPjX2P8iBG^@u0gMp2%7wb!>`|P<&}R*
68174 zr0O+SqM>=s;SG7SJvAglSKdE?mc+(8cfRHiro*Y@XWx46L-Y6U`^bCVeJ4p%ge%3Z
68175 zYrAQO$g$x*C3o`deH-Vm8M^O2{^0v=nzrbD{!8aSg+!P?L4t^@?R0c%B8PD!3<MBm
68176 z)lwu|wNCALCQo?Brv?(EbCmA$@<N~%)slVw`lKPIN~N4^Zj6hiM#-r(XUoa$^TU$Q
68177 z8sm%SzYaeS--Pt?fwseIbwlPL=&%o=(_IC+AmSeK+KwxWA5Ru>a}YM&laDNOw4pB-
68179 zY48^azC-YR%XQY-PR@y)n~<j>^Yd+4j>TP})c%71>ZGX*O^&GQ<hDHhj?cxVh`k=D
68181 zwwo`vMZvanJEddA2HaM->OF;+Nyt)2J}|)h6fLF(qVs)<yLNzxjqGUD&aB*zyK4H?
68182 z2iE`5ok;H6MLL@`=GueItb5xB-gbL2pX=^PYMz(?L*V!9%xSX(SuBOKHOLWYlk(J@
68183 z2eNRZ-?~Cw<VvTdP#!m=U<sOC!o`s}p5$;E6%Pr1B}E(-Mf~k1ZVyW{r>$;G*MQC^
68186 zF-MEJq-zFpoGHg*&KZ^qm2UjzCkA)e{d7M>eTsMl@s{DvYNBWkts0BBplwYrv5-RS
68188 zI_mdsp1E-#m5OC+Z`~TMo5JMri6ii-gY#R`!Pc=+&b0>b%#p=Y|3DHnncTZ|L&}%j
68189 zGO}?ONxkyR@2zhlo=&GTZttdTom#Kj`KO5m;ydU}ZGrV|AxK%>?hQ-gNLhtSJ0;49
68190 zyU4EC;adIP4U27&0L^+d4Dv*t>KwJ{R!^~6oj%ob<>0f-=6mrN3)O+8%`VD4(I@%i
68191 zKGs1H3?vgVjdjvIX(&_2>Vcq;p2(W{!DGR>%@dh;aB+8(Vn~A!cqNAR;J&Hx-QL#8
68193 z%wxGV8Lr{K2q?<xt4e{b*j^b5cnmbxE!bM-9Nk)L_Ux|cO=c@>?6U6>pD|na+`HvZ
68194 zlGR*)c6}z43h-vOG_kJW^rl8@B5C;e(;wVFdE=J*|7<RtK7RHs=RUOIp2L6p5n(VJ
68195 zT^P<+qTY-Q&00L3rrhbc;7CU3v6~;bY~2-uuYV(d=zTX$*=M^C;kXm=$Re0-PpATm
68196 zPRS5DDzj)IlXJc1(47X5%Xl8L@U%E&&~Ivz6BJ=_C5OcA*g9Au$!U4-GAj|>ap1oB
68201 zV+ay^9nf;4AWgwrF~dQd)<%c5(J2%lD6|T#YB`;ZB5@WiJS5KYYY;Q-mA0bhZ$|>d
68202 zXDV#=8XOz&#OSH*WrSh9_SE#--|@g;QqK-1Dvh`#1WLY<_g(Qt!t75))RecO2=SR=
68203 zjHSyl?e~e^lqb|5-Y}7yDNc;2&V*Lq5gCJH(YUv$Mzl!0yRV#t0CKpFr^yk7)z<ep
68204 zyUoNR))Ab8xr@q@&5KSG!>&GlTQ^--Xo;~ztf58BVxsIBy=Ly(HAilA+w8u>1<fo(
68208 z{36eIC(jNX$r(CJ$W&%SvvuFYZa%ht3{5mAbCtS!QctG-@77oC@F`m--XjGi+BdOq
68209 zvb-m6gd@Il-y3_wP3cUZ-kIwVbsX^*q}N2AL$6U>n0>6)YgS5F7rJjeJFaP=sSO11
68211 zYNo{bcf9`OxmSdb-1M5s*)#2)zVl%O^B|Iqn^lNA;-DXM5%|0+Pq~y$BSZ$_ApHUm
68212 zvDsi(Voux1z!yb}rF4>)4OyoJR&CWiY6$6<1t$sJ<-X^|ue~_kPIKPfZ@6OSa5dsZ
68213 zBDUt-8oA?xdwO_2`v~!B;(DalnQg7x>KEev1WAxAku2_ZU<b(9E2$S3(Tn^*Kf@%g
68214 zC|WTxduYs4i3)|js2Wt9A@|)MOGTp+OR?m$kF3A_^rQEUZJck-x5MLGdBx*$H3ke>
68215 zp}bp%>W}^7-RrJQ;^F=0pQN+!{~#WCxfPKAcshlc?JN=`Qg$m$1l>jn%|a($UnQ(2
68217 z{NMJkk0|M-#+E(FRy#abNUq;|=b`Zjw#>Yu4EKKjo##GRG7@=RpYUuy6D-FZTef;r
68218 z<*4EfauiK44vuDM+VoY-;xeuu2Nh6nSBeFj2cpyVE+ku!R;gFJp6g+&M<)^}^67XO
68220 z7md+9akHQ{6<Jg&-nbY_J9N$Kckqy8cy<LU|AWi_;PNuyg5{%cz(+s{JZz<LJi#JS
68221 z9PtFd^#={-7VYc~1F>fsQjnmQx*C|JjM$kFK|te9bJSUM7r5}IcFbx;a}9QCA(^Xd
68222 z891@>CfqF-3y<+=(C_oOL{Ney_Tpy4W~Yfz&v0nDRaTe|$L~Bg{m?zH$mM6XsN1W>
68223 zP05wj!!gOBDRT!JcRu(~$9l-iY=2#ngDKq@@)bOq#}$p4THtIwnD>jIYiouNz%3vO
68226 z26xy5v^zI12LVQd&A2}v_n@OBA{MoPvsgDBF@fO)Z&D1`BEbQ4SU8gjA2&-+Z3+pj
68227 zlI(K^-L@=;ZRT_2x|e7(uf-bmo<nZgX8zq9Se_?nk6RN(+MP)h!uhASK77-5S9Y#I
68228 z&wuUS%(j`rK)T>YbN1x<ZxdI5Zvrn!w-cOo#C6Ut`_!^!Jh$w0059}fg}ghlE!|Mf
68229 zj)o->*G%qpiqP%cvT^vnhsFelgE!W_?-5VbC#9k!?a+M9949e~+}PW)*UOXV|B?6_
68230 zcsmH-u^rDfwxP=+2*5yR>~v@J5NWS(dvxlT+lMqS9-eD%+Lg;5zhbA6NOFG1xi6S*
68231 z-l<w3uuccfyA)1z`9$iKT^PPiJO%z8gq{}$Q%Blm2!__c&@;_<<ZFicNaI)}g29lk
68232 zKU{z1jmM&-X3%<L@4(iNd0Y;`wBQg_Ihga2F44sgZwTg67>@rq|0H}X(FQ3{XlEr0
68236 zNs2w&{V4cxpIo%8m;J4JwXc{>ClTuphb-&mC>*_*_0r-BmVcw!sSvc<e%bkf$q&s<
68238 zoam^o<qeyHGr#*P+NmcDmS2FZV92qUBi!c-^zHn}JMJj#?CiJ8z>`Ra{jvPU2Yt`O
68239 zZ}4vGa2#RF+{U-vnHB`ZaSq<mzImDDc>5xpi<Z=_Rj<e1?|tWgAKZ`lZWzdIQKN_z
68240 z9llu{ThWcBAiKq(7-p}lTo7pg{CvRSprJr8t^jUnz_27~6cTE42)aEEl~i&m$(K(<
68241 zy}W*EVSrU?3pelG_Q*qJU$HYT^r3Ncpw!MM5!zVZA?7q_^$kJW2)9?l6OMbeLt-Hw
68243 zQBSJq_Q&(nK7YZc)nB5Y-zPqZ=4$9M<r2>*bc~|;BYVfFrF=HJL6NLQ**t<Q(GZc|
68245 z1Z(`NxB(+>EVQ`xq6MZ40&E~fpvGVfOPg^U)Rj^FmSwb4f-BB25W`&TM|u=VIt;f)
68249 zUfAwtWoOF>h$IWEI$O3@lC-yc;}+ZpIfg`nx9(udW2P3$tHm-$W-#1W?JIBFGr-oD
68252 z{@`$N<ZXyUo|$dl|Hxj~*6Vhrnv3<)^c3RHnlWTdZJCcv?GCWwDT0gE2h6-*h(<Cu
68254 zk|8?VAh7b1Ww=GtxT&j7v{e$6ONp4rlqClTe58-H8E?GRJFA!3E)K7<GJ~+8*6euw
68261 zRiW4{OO8Ns-*GmaE1`WOggdrtaQ=O8FL(`bgBu=0v$w&PxkPL{BMxEZ%|&z*d=+bL
68263 zEgES=jGCFO?B$PM=fFWtN(w(lIR6X`!8ZW|X|xMZ1X-)i?Z!uo2o$&FR>UnGds2%Z
68265 z1GD*TUn9(xV<+}ff-{}==VR`2sJLS)vo#xzPB{9f{XtCYs{jxF56LgbEv)Gcb%#Oo
68268 z;6(C><I?33rybC?ERP^+<k3+R?Dy&30|Uu|mTu6my!quH>krSL18)V-0u2n>MWIEj
68275 zw<CZ=L?Tav=eh-PCkXOczZcIOsKV+>AG#HV7EjxHm#+6B(QFIsa+tuOdp5LMSN}d)
68276 zoL<O~9OZK8ZbJw!Y+I*7Ip=%-6<2J$bLZ<mH{Efj&)>Um=LfgG@6{yBQoI;7@(P81
68277 z^K7I~K5@q#ueO8HIspPW?&I&RxQ`rY;J6PzX~lhL)~>8xO58`i8V-USk?WdqmIFR6
68278 z682$5z92T1?jDg}o!pzE<aVFlh+Gi!F>|bv^~aO3NufM4qU||7=D{%^K>~+-IJ^_t
68279 z<%kb;|LncB6OB!S1wDDNQB5*Vo|*8ZBS^-;5g)7Ld`7^A_PSMZJ~UeHG)3R_{E<Eb
68281 zz^AJF)@O6R*0E7`ZK%&RH}rq-T9T&Kc5%zblrOf>p4&lE*MI2)jZMVUMk1@Ko=&Wf
68283 z=2;vT+=;#I#U^x9-IrYq3<YcVzs{+eg5Y%C@?iTb4=+34-g)ksQlq6e$`OHKeL^H8
68284 ziX8`nVR-%rr~kp}XNc3wAMdg~-+%L&d^g_3D8<X(;cGUXUc(cj+hz|OT#k3yn!oYy
68285 ze|vb(+IW{x+t0%14R@hh7YlarPOl%!5#DmF+6{M6=J!t-u2O5T-;~plUbu@h8d>&X
68286 zy&Gap?LY16bdD$zG}4e|thq-oNc+X2eK~|qP==+LC8SjofCaelKZcI$xvsDaEJ;Ix
68288 zF%(&HI(Q_oW?`0JC9t--Nnmz3!U}Vv{WBVFM2Bj!o6}@}fYy;>z_@v*tOuPAmqSaK
68290 z!7yS=-I(aEUVOpjHG$KXRMV_$Zlo2{U<8gZE79xJHL(u7u79~F1@t@<tl8|zs@U+?
68291 zHyW--D}xS3qg4tmu3~muCc85xY61_TM2lm)j@J7LCFU-SM#4i|uqm?~GP1sAL=#QP
68292 zCr;fl*f>_Lo-8R58B#1|R5{=Fldl?|CLCO5GTS`0x4-L?@`A6wWE(j?$Cpjy<7cmo
68294 zoT#*Rl<oblpMMfQj<hZVT-mV^2wg1%P50R~7J-1pc`ZpC@m$2m&UUQlwnZSg<`TKe
68295 zyuP^jL@W_c*oFZ+!J=mwzzZX%$2M&YE1qB}T?iowe!Sw1H%g8j2U0B0;(3+jM9-#s
68297 z^-rAigLZrfhUk?$zE@zU=YPc3OuVb}Q)$YTGy-)8hjh?N|I{R&U~gKNIKh#O$}wf6
68298 zuw&%jBS+BkJO3q%UrmD~D1(D-8Os7RjzcHrJX+6WZmc}@i4~y#SaG1Qm`;TP-JB&1
68299 ze2eWUm*ldB(o;|n150-Wb+&+{f@Y2tNRp&EmJ6tsa>B)@mg-r5bKlU;!Q|fU&4hpV
68300 zo&mp?a!$0&D|gOr$p;PJRF-w`-+1@ZHJe5Ydi51oB^vLP{Rv(1UXAq;%kT0basea|
68301 z&U0;t2Vy&zyJr+}S?TwXSn4TXhGq7;z^7%|EJ}rd4<ulMT8^+-4!!R*{jja?mRqA|
68302 zs$>hkq%uXZbXW7@-3+11t;3B;Ut{|~<#;r+ccB*Z7xv@^qIrY3Tue_5j_>g_u9{_o
68304 zt<}@2u;qtjsVpfdPR*Ub<{x+&?e|0{6YD$UzXwT=@{1i`aL^Qxq1+oEJ6pO-BtH;G
68306 z1QROu<4y11JR2%C(yW%&Hr{z`umi(az&C&c3_iwRs!z-T9IJg|rp07#i|8Ia+I8gD
68307 zt@-^n`uPv=R&=HfeO!?*6;ChlT7z_02VSc^H>Ra2GfLd$t`s<dH#ME42~vorh9t%B
68308 zgHZHqf$?BIA7GsYExUC-HS}`|51fJDL;B9<#|7)iUv{aYjSMgF{Po@@NejRWJb&rT
68310 z9D@fG_$`7$dQ7gJjwqH%9-G=X;O%ku3X)k_f{9FyL~vO4Z#${d7Uw!;-nt!!x_k$H
68311 zua}fUGL_oCZA^-qAy!N%$>GV8%a@8wi;P>KRr&JC8x==mT}T=Zu3y;VFtwN)O3p$g
68312 znq@S-D990+l^w&G%Wav)W7+ghg94ankGUNP-XKGeM8?i->DZ{S;C`_Lo@5+tA5|1U
68314 z2s;13C|PMOfvoAoNx`A;#Dj;oTsw5{gB>HBy+%s#qriMoyut+L8hOA9=rntA+-M<e
68315 zJ?KD3KRKvVEJ^c(@jAQ=8f768*t3mw<$~n_Vd=WAjs~6t{|qG1z_Q5-<2-<O^^Eh5
68316 z-pd=hR(T0ZD^l8RLJ{#uBND9mbw|856^;!gB1JZ~d8UZRIe!ku;WyEOUU*#U$R**I
68318 zF<dCD&+oWtOB$^88&|O3*!}!|WA{t-8}}7okl%RqVa}Lcp{3_D-gTuXBxd8Ofo$x?
68322 zQnfS2l-Z7JB6G^c)BR`k3rHNs4m@t`z~Kk0+9Qs}@jir_TNdXY0Br}ku|Rq%KYm1F
68326 zM|?6J2v%6>a$zja(R?8iGbc-@Rv&!_ALU|V4?pk>Qb)?2LK+B-I{*k$36V$YX#I`=
68327 zg8o>O1tD;PPA-C=JS>&ZEG|8?o=+xnB~kN80h~xRMq}gU#P&ly48i&%C-bfC#?Zo?
68328 ztcF>kluu8rYAhbq=}=M)){AesF`8eiTD1JT+kb$bMdyH>YJSOQ*-D{}6JJIh`ST)b
68329 zi#lLML0c4asAzZ8fZ13`I3_-_Rz5OCp}Z{OKY5%NOonM6*fi!<FKrZ(#PmBg(d8SA
68331 z)x5rp;nU8%-R8?zZvP+1ThX6~^ENw@--kJ00RE?-O5YbiTEozS!;HMot0;oh_C`W+
68332 z(?_v&-lvVtB+TLPC-K<fbYpwF5tkfVfzLk<tkm31ps(;dQA<Ttms<U<h{J1)R}?4|
68335 zoIgarh`t@H!}rS&;aG86H{jhkm&LlY+qbts=yP);JRf4>t-P$0Vw_JE!oh%)<fN&&
68336 zQ9~6fwKC5e%Ge0+@r1M_<yWJnOmRYBfQ5o|`SStvBGC5cmzX>9r-o|%{An|&wG@m=
68337 zj2tNDHu5wYkVT@hIMz-;F7-_wIc}sHf|tq^Q-qWqo~ddOzy4RZzk%G39suXu&!@dZ
68343 z5@YCqA8ea|?S-fV?>S`Z#;LQL;jsRRWIPcO^jssDu~0+cT>kv_E#yncU)z3r{5AW{
68344 z81UP@9z?>VF08-bKjE;9R|KlGFgAjF1W`1a(9G51kt%vGp{v2!X?V{*2;|Hu^bpW*
68345 zOE+!xYLABxxK7eQP-G8jU^(!r42=9f)o05+YNtGa1)8#qVIETsH$A?%mI1<mQR61d
68348 z=4koM{j-85m(Akp=4ftOE}g$Ms~`I>KeYV#QXrr=(}hc0lUt$o6~ykzf|2Mqkvzm<
68349 zz$lZ|m`0INxR0#UWxVAUjP)Czv{NryL4$MiYOWxALW-#}kyO^lpd7_&J|P;-jmv2%
68350 zoAlQwB8KKSa-5!t28QzEk~bi!EawjdVks^d5`uYiE;AOPSTAnV_?x%?C-yx0Zomf<
68353 z_*dd$(d_^(<>JFIhFZuB1tT@1$w@-h!#3*o@*M5sa&b#X73Q+TN1M4REfH|mg-)SA
68356 za2EjMKK!+Aj2ruX;vu96_#+d-UNfMqh!*i3;q3mLRo7gx7#(U-7}*}F2Le%5NJ-L>
68358 zliohP85x3m_yzFe7w{3JhFt6T1ej4-OQXc<8=0^x7Zu4$*f}ty{{5N`<<ky7+5mXC
68359 zbHD;!fGga0teL7;vSkTF1+VPYO?kO-Ej1TudIO?*<o#Dfv9;2^Xk~F?a>5K5k{|^2
68361 zhh&kR<!0gbrEF^&bNVLW`;emFV&w=LP{Jj}6I`JF)hdlM;p59k-v<e!w~R{NB}{d3
68363 zay&i}$J-IUHa=SRuMjvk(_Vja)wXM3O~Lbc#LAN#gWbJg_(bdmcwvVv97FKyme3*G
68368 z$DW)TO8TgThbjc~;Y2i?uU$D752jew5W*Yv19_Fg>*RQ-mJ|im2uV3vfoJ+>;71E@
68370 zxltq<Mh#<g#ysf->J0Z}LW+;4$Y|;8Y;ySYV)L2jUKqM?Xvmb$ZU*>hh^DVbPflEU
68373 zU<03s&l_XY!Bp5-PsS@OR~jm@!C5mf``(9ZbNs}cAh_@ol?%<ewIS`&v&~xFAB_Eu
68377 zvd+#Q({Uvng2OTh3a7ZJ4(FlJ;Oy#G$8(wVu&N$tKA;L|A-fo#oJt&s#<4Uhd&(n2
68380 zgGlrTM2%wMcl{Fht{+B!4RFaFVl|oqm>`R0ZQge(zjp^F-KG@QV%p=f6wUE|T#1C6
68381 zA~1--5fnWEngwf`2?PXfenArjF9E!@cxJM6WW2K8@~Mm_T8on$I-qg%1thhvU7SKw
68382 zcwZoHz%ZtrRx<W#a$}kCOgR#d#)D(USd1-%6Qdcp6ge8)IF<;+lzAf^&dTykoKt=N
68383 zY*p{A1ICZHk*@>4=EhCT68J9W5eW7718U*8-TcPN0iw9u96k=aR-gnd$g!Uzy3Zlj
68385 z#<*ZYWc0Xvs6s0h)>9b|m$ImrSG<gw4F|X*e$m$5-^7NI?;&wyuERuhXmGEA6|UGC
68386 z8g@hjOGK`_JxF1V5&Hf<+y-L7Hg0AO6DAp9cXUS(&|Sj}@`fcU(El2vsb)HN?(9aG
68391 zO3!mxO`&E=(UKBPdSZtX@iC)w^copbHZZK6Da$&)e$>u|fFG-90G#FL2O7m7`!|ZQ
68392 z`ki$9q3n3bit}~5#h^H81^WnON4J=8C%fYz@ReZmJ05kQp|BN-rbq$S@3T=<bUz6O
68394 zcNpEy#rW^CkUOY~d_U^TRT3?`;<)e700Vjh=|Fv+C8`RBcS_Ns5;r`o5?K+ru#RG-
68397 z)lf(Ya;X$J%Xuv%{WDGWpb2K(^B2)iBdXo0Kmv*|0*6Sg_4!E{ieDeZ28Mcn-U}I+
68398 zh=nxH?-q~t^(KPy70%M&u&fm_w5MVeB#lCWW{*u3TPx`ri_hM8uIU+n_)Mg-9xG3z
68399 zM&pKzaU;u_S~1K92>;bjp7>O_ofD*?Wmi^V29T=-<j-tr<d31G)xuuJiPf<6EAIa4
68401 zuE%T){EmnFvG2)vSl1LGz(65aKnvboLe8B>X`#w!C^&WtJl!MuR3&Qa-k?^DL<;wM
68403 zO<h@<n~8?iL)sy$b|c#xcj-n5QK!#EyDuHs|A1r5_G6;69EL9PbZ&LrFRB6)V!hy?
68407 zoTjOYLd_PTE&<XdQ4y7R8b!;ojdMg;Ix-6MNR*Z9hPBr3-2P*<4RmlEdDfDOUs8bb
68408 z3xl8dsxvc+v#W?;qR+VwoYhDT4h^vXXlL^J9xyH3vF*6PM4vNXz~&eU_D%-ea;5tK
68410 z7KD@twdV#7jGvO?+GrP14oM(iu?58)JHoNAt|Oc+A9mU`z~y+-HEg=7qPXW{PB%E9
68419 zxoFF;-D0l-S3Xc#X@MVLX{8P`1sDvT!|>QP()Xe***HJrB{7JFawJ<9r{JE)Nnb8Q
68420 zB$Lf}EFI#cWRt|PL~=Akaw7O?<9B1=$J1y6$gbyY*(JbO25JSg$pM)abR!-x;=kkd
68421 zh-Lah?s*s?Fc|K*;c)xC-H?A~@O2Wk;~|6-54i~AA(nU&dg2KRC(1&!cCp}l3a6%*
68422 zOB-Be1ehjrQincTJj2kEmLB4`upHEaJXM{`gydi#l?*DeO54wR?K}Pb+kc2&M1BJa
68423 zBS-D9i00-hT=S#5f!M&3yH9mPIdI{?vlLjyOCw=4?4~Q6fNF2qPO?JKG}XK`p@mhR
68424 z<FlcVF7e^1mf$x8#!QW@3Stn*Qc(z3VoGnVUq^G`%uaP<Rd>H++Z$%Q(6^-e1K@kD
68428 z-A1N66T?MA^N_H>6vi8I0=u!t7TlRT`J7V#Juo@r&IQo+321Kcb#V61&SL0zE=X1k
68429 zFXIQ#Md|`N@!-L+ciyoy+H9ySJRZvDNj2CvedkvvOBH927py%_b;gHH%|pD(Ef(^x
68432 zf}V`e8}NrxVU{n-@m!b^6hY(tvKaL@yk1e%_;ga^bIES4Vg`L0$iri>5)Mc2K6Iri
68433 zB2N)eB6fQa?lQc=dVvF0Xd6)zCxR-lyJx^Jb=hY&Mr-v<s<>VuS<QPGLq~=irRc)2
68435 zmNU+Q-;+o(l}YAQnhv{;mgBPa>oPmcZ>4-2dDa&R(SBA*s~m5Jl!)Z>%8e5NJ`zGv
68436 zJ;VF6DT0zUK4$ot;Ivg|{`<hN`4IYLAj7_I+e`k070-x-RXd)Mu;Ll^ul?~1svFNh
68437 zcLyop2N?)#6HZe%+$e+<(b(f*NWK!{_5s-OCK#+hcSSaafAHhoi#-tG$ifgu)DC$8
68438 z-U70?8{x38wxe`=b6#PPBil!4D$B~}KKH@l2(U(ZR!D`S*^p1swImlUT@T3RrW%pG
68441 zP(DG>zzw8)J}IjB0u-(arE9rTqH=QX><7or9y^8pZ|{C06=<9T+vPYe<#|CkzIgEB
68442 zR4q0-L#KcGos$nYI~_BTzkI=L#{7bhe6F@(2<&;=HUay`K7x5+C%K#KUDr6nsZL<i
68443 zNi^Bpw1aqT?$E1NGzaW){D)dUd1km8H()W5Qpi-)>({=OdjM<(ReXt&=)56k<5o4%
68444 zV)ngfPN!*acimqA3owzNel_vkur-Hld%x(egM6`vmGx%c?d*8C<K=xKx)D7nixwSB
68446 z4Jpm|R37FoYSGzwAf<6glRv$E3tI&~fr0$O8xr%5TXNOn^TBBL4$_$WJhL}_;B-4+
68448 zFFZ;3Vep$}#IS!lmHfxbGj0s@4m|VV+b16w20SCj26(2B?D9-ToUZK0Gcce35_%2j
68449 zpViKi4x?IYsv_X{DvctfWyX-0m6D_E<x?a|K~IFd0Jw*=x|+fi25e{I^FVp-aSs$0
68451 zA`s;M<J7NX<ccVa_ymvW571ITa{a6qkbjTF-x!~;>tMyvc)w5B-tA#I2sS+$osQ2p
68452 z!nz``d^Q-=l|X$v%18XrH_WF}LxL%Ysu0fr?@(b9s?x=lfLr^QKn4Rp=FSU)BG#dG
68456 z*Oz2YW9We4@%mSCLx+briPQK*M)7)lxsjldk^J5+p5a+EjU=ER^t~~;-#1<l0+Fu*
68457 zk?-Fb%6Cwvd&!tWtSIH{fwT}5lvFkh<7Lr8LJ)MdI1lHhWTcYJF^no?;;cWIUK~fd
68460 z??doi-w3PJ#&^D#@uFS^z0vy&#LMje5s(!+2u%?b{Rl#kB=PX;`<x;0ISa4pa{%G3
68461 z)bYTlS))4^d!GZG!Y5zv2W{K`>BM0#oI=jbB;(-_;6G8|9nei3t+RW8ZfyPD?l;=(
68464 zG)ncCqglX)!FUZ-;#8xg$^|thvjXE6%uq~`<oTM!S3P8Pa*PiMyw9r&P|~i#6q^&X
68467 zxv<(1N1q~{{3bDw-$W5OGz=IZ*0}jTRpBB>(%J6%b~P8V44sxa4iv^%m{04#VW!mM
68470 zAM;2vl|Ns;v{72_bZfOx9DkEF_k_RexhGRtv%j~n-AS-mRY(jql5jx`sY+sF2?83*
68473 z0c-3-DoVodCSV%@iRXcN42$fCH%ESU{<(FJG+R0M(YLjmMV9N<n!jP+tp)e|?%Lsf
68474 zz8m`gBtDMBy8ID;E&SmWG-`e9+FcXwfNx9#+|lozDi4F3Y=D)~7zwN~pJtesme(;K
68479 ze0u4bDdS+Vcx-K4;B=N?E2-R>c6xbsm<bs3lV|?rlFco>b=SbULw8<x4Xy39ZgRhM
68484 zL7J;sYUe@a;HCR6=N|lY3te--c85MOd1P!z4{belu`w?ctvcaoUMwFQLArbY6nPG5
68487 zq<fXK4ra`$m?P_bJ<kSiGKG0DE`WJ`6ix&pYG9_qG#6H;vS{0j1vnsyT9-?*;v;cj
68489 z%yWMTk&zW7)rrrvq7gqiIMQ8JjI^?%uHZI$6yMRS4IP~F?idsUeRG`M*;C%}?+CP-
68491 zv{qX`{nGabCc?LyvT6R^<`YN5`e#1K#+-@p+oi#Y@Gu``oh31cD99p`yE&X-_wNt{
68492 zF4>~Ch*{;>UBGOY9C+`H@qsgTgtgVx=Km6CB|Fz_&9f}n9pNMRm9g!s-?oq3OA)w_
68494 zW~1O6nwoJqVe`Js%FGbMne!8oL&py4yx!ga{lu@r-YH=JC6(EK|B5WnDzm-)w+D7V
68496 zgbZ7|fBAXWO#DzMy-_RzQQrce!R@P)|7q{tmfJr$h&dlh|1ZOw*LGvhU2(XFM4#a4
68498 z-4mHUHWiSAGLZAQ9AWjb^x^9-ebZ6{!S&-C;qg<+nd=4ZD?e&0g6v}l7cRzvqlX?l
68499 zTHc&7`Zb{Kv;HmcS%HuEA|H6I{V;Vz-^(fM`T&;CS{|VZh|`=`NH2!b49~<bLa()&
68500 zQw~qQ@WUVX$Pb=4_V$wtiBnrhw-(L-ek+_Q9eC}2Yu`-iuHV{M5`d+X%~+`_0|m6G
68501 z5FUb70`ZAS*r%y-V7vJF557Rl_n-K&|1k3C?1IzZ?Y-D1_U+4MPe0qi0u&XX8Jt&9
68502 zG@VwwIH5=$iKdx4%ktjVzkXuzqldiN)9?9rOR?ElM6>q{>r<b`M-UT!kJ$G;CThCY
68504 z`tUjo8`PFYTFHqAONzm%nLx4<>*hb-f}cT>;2gx)cn)?}AMa%*-5KuvE9dYmE7#xt
68505 z&IgR)3Q9PxD+L@xk1r-?9)IRzn$Iu9OA+JR<}WQjw+5pL4}av;m>wSsRc4D8CLi_#
68507 z`r(7nQ9bj-!FDv+ipJ~Fm|)wHx4(*9!62=)jvTid^|>nnbm*R7|0>*n?pV(DC7K3G
68509 zzxLid&c*4g6CH>!Kw-72dI)^MVl1#a#*DUM9^riQk3VFEpN!hD@s?liJlVCa(f8p`
68510 zA~|SV8<vEY?$WkSB_cXlX%5ZpVOzWI`#$zG34{-Uvq2d+?}S{+?Q|X@OU2T?)2$On
68511 zD%99-K3&>c$PYLRHg5e9{4&_j7Tgc43y|)nHV1}ba!3yDX`pM!owox;>Y)e$cH_ly
68512 ze@K!UmQ;!++@w(nQvO^A3fCVJrYhA(7Fx%TR_L+c`fz!(;|l)V%8(O_`z-!WAaB6g
68514 zZZ~|SmOfs3Y-RM+;Q}@OThB~hn}%B%jbH847e8n5+3^mOw)jkB@3M3{5z~V`M(e*4
68517 zcN?JWy&oW*$KLsti}6B5#xdZ~!N3;-_XL@(QrC#+<+n{=n*~x@jOWzY?ABQMVq@&&
68518 zMuD`BsRLz0c_vn0EC*oh>o0EK0y?gWWRSPQETVNz*1qgoDr?TDQxpc*kN3(a;;-u*
68519 z`w!BoZgGQ^RySE|-$MWW0vze{$vI8V8DU@;lT1*TgTMeYV5D!X?TehmBq?qPL)*)<
68524 z*?3B=%#O`eTyZ{s|J0~i7KhjKsgkaxMN?MXv-<z#zF@xd2<`(sxNtKiu-3j{%24dr
68530 zD}b;5BiswtwSl~Q3o~2v?Pf3snz83Q0{gu~+3y|Z-tXA=&f3TY)}~{>NZpxa*@In3
68533 zXX6o!78!R-&<c}>njE23i-iJ9{~Aw=nWU0Ts>15@Z+vSQZfpGO&rI3oSiK}qPRLS9
68535 zZK^=$4vfpGfYktig5j8hr*3@#3NJN;5fn`@^W&&t75~!=**;pG-Qd+ofO2e~p_YmZ
68538 z><@_V724X(H%_jC-b1j^6#9@87M^1{D=bX%E2G<2Z@u5Phe;YE{HiQW<U60d#_OC1
68540 z?BvtuxTqB)JbeG`QX(5og{#kAs5qWZ*Pym~cw%3}SRk`n$h*GW2w)WImMvrvjK-cq
68541 zXq0}+MI-`#fK@3@F_6bC1}fe0$!<xI$1Vx#sD(U&)Q0k{LJRtM>AaCKeBHtz8?y(2
68542 z>;0X^Eo5Ul1(?_9n_8?whfgm?heTaSFr#mJbj--cE5l;(k?~k3BC&ilQYoTq#gl85
68543 zqTaq|!plSdFPohX28gwHtQe8>+VW^1GsH{maHXmIH#J?5Wo`X1Ft-uh!uk>DcaaEK
68544 zWfQq_lZQ<Oy0a@W1o)W*grftMNbZ4F-|_NJ<RZi^)`rZCByfJ3f)Ju!$C_5X?zAHA
68548 z=So)cA-x>&1c8q)Dt<OzR=JShAL8VwT&pR8ENs{n$fYxNl1oL&a#Rol>PUehNII_0
68550 zm`?xGo#LGyBwP-mT^}u!OaeVzOct|7Oos@18{pd4$)?^LCQLgWD`8PMMY(<Xfs}_4
68557 zEoLklv}-ZbRxPIe>p%WlOc&#;NLKqX;O=_&Xg{X)YIxuwr+XczcJ(5QFdCyUF(c&D
68559 zi7E1dm4&&8E+0{j?912vz_I>Rpf+GD?Fy-3XLuV$(8t&Jyz<p9!ps9xrCvYp7bf!~
68563 zL~rDqPfd;c&BazCqNawjZ;{h{ZCp2noJIl5K#3U}e;qajR7@A;#Z^5OCL?e1l-u=y
68565 zp4HA0`@$^Tpaf6{ri-<}cXQ5wJnRosd`AE~w_qs!#`Z6j%Dzy@&!Zlov;d!ooIIM3
68566 zk1k$V41_rk+0Q~yGIpaHKEaA=5G+i~PgaLJ(B>xOh-Gu1e(BQ@SxS#L^|APK!L)Db
68568 zJNwJ;S**WTllh&+`g=dKt61MkyBLU(&SWzNy@yGz_II2&-ReomZo`LDDL&3f48!^a
68569 zn#wA<u#^ahjHGMHV^EchG#VkF&+8$|WJ7NxIUj2zD&sa*<6GD}$Qi&-$B}Pzm?M^L
68570 z(O|KEtf3Q4-8i_qtRB~n@6YKl4vJgOxm(J-vq9h9auUAsr-Db$&bHb%my=$L%kTLM
68572 z82n{E!0@@z)_h}PmR!1;oSiKm&YA}@>D9FDTS5eyYXuBFdjaO2oET0itb=nsa(e-L
68576 z&BS~rnT-Ig^rPpyF(qwkRFaaK9aFMr&-^wbBeTflP1s=awWPRJC88^{>MXu@^aJg>
68578 zVBU15*c{UVf#4jQv#lL-Z0tD}e@8|DJq|+KXU(#GhWyywq;XXR#)$x>4yp%xw$F|*
68579 zk=cjnu#*DVPC7YtHa*q@RJ$m8)a)!^yS^)Z_11GR2b>wn0~f-Fp}d|r6u$7jb%-E?
68582 zi93eey2HNqV7MK&fP00}FM>O4&b3+t0`lsuEtv9~nF|4vO$fy{a-V${)c^gIq+PTC
68585 ztvQZ^*VIcwC-ar>X`x8@(dtlBqW}%#8~R0?9WkDDsHg&dbP*&@md;q87Fhfq8{Fss
68586 zTLE7}FZ1QAB2$dlR%Im;=0BdjXX?<p%a=gE^eA~^rha-c-^=Fl#bI4>ZKrRbA4amU
68587 z?r(RDYFFjo?if{nIYVN1jB2mCzjQJdwn9}|G)wLD^Q=hK&QO)>-kDd5u}oB;gF)bh
68589 zmkP}5$Q>y1{Or_(ysoSheNt?9=AgZg@^nSm?i42)09=!utJ~Vs!oULU`4uiTo-F~t
68590 zS_}%!T<-I4aUrmmr$;W>9J4DEiYIJ#8Bmumf5zjPKV7O#T`Jx)mOE&gFWhT!N;R23
68591 z->jZ2Ku)>3zDL5;#`OFV`oqAueca^}*uV<L4#0sU2mub5AOb{>Phfo|EWU?5OLsg1
68592 z_+;m+1Yw!d)-#ATxQTU4>3qnbXuStua#=)kr(1Lxgcef#n~z7*5y&4Nzbtb;F_z*v
68594 zEK5<8!^&aX?<e=oHVsCz`askDSn1udtft^G4@?L#)gN@zO@~h2`YLoO)?+w{dl-_5
68595 z^OeNn$eZgNEOhaCLgyDpR>~o-hoN?$yNGcwY&k6^BY}jSa2iW*U47|`Rw#?>)ZY5(
68596 z{MMoTL1Uxyo-qgjX049XunHy|I{MV59Y`=(OEG~k<bA~Vf&M#%)H_4R#$!>I#8&rB
68598 zbo}0>{N;Pj8O;`o(y|yo6n5maRq-~{zMMC_J`YUT#R~HL1R6i{K>Hg0CZ7b|fZ7yi
68599 z8D1^`{e!UlVjTD~g124g7%i#94-5~juMHhO5IXtzoO=U-tUgsRwcz&5fk!OZ*8Nu|
68600 zPfrR7n=hfxdpr4yfG>~0c}JQ(u&LsIovLqnakirzQIFg)`RV+zJ(&LNvEm-M6QKA)
68601 zJe@r-E@xOb|2dpEc>0z9R}1Sv@y)e?2=H<W&sP)O!Yja!?NwNL<tP16j`hJ)CRB#V
68604 zOu>nTUfvV>!1<#C^9ubTcE5>*l{3ed-HC;fET4Yj$c}l1e{uU3_IdI{fCtx+Cpydl
68605 zJ9ljR1b=@pJ5_;&6ToX&SJ!`#^xPFM-KTH@a4Wh71?ME6kS#tX34SPf@YJo(Lx^6k
68606 z7G-hZq*`pc`tdniZhAxK7H2mDN+e*5O&7LDcs!BGV;vzC;o|{Ziuv`i^yWP;{Ru?#
68608 zb;F}21gC+%q%j&OO$s)5p-_rMZ@^SBfl$P*Sp43P+j+8GZ?af6oX^4f%3L$wOeJCw
68609 zNw9it04vS6d-lU%cG>N&F_2w$T5X7$knoSb>Cy3wn_Qk9QM|0oO1U~ZU)t^_mz`c4
68610 zZf<#fc_d&|(`;0ZwbKK+Wenn236*?{rKgWUUc`I6_&TAiHlu|@%3<~J{){$&qW-~x
68612 zQ5|H+=$J2i{w=G+*YLmbgvXD~NwFAE)3_96ZI1h8&F4?^m3ZRe&GR3)c({-|m_gSq
68613 zV2H(XovqPw2o|e4=-Jir`fO2P7%MLSTeokaUqru%=)mS`Aot(&Il20{mBfYNP1H)Y
68614 z4kYEf>3YL`g0ec8-~@?p_a4S!gEpMBQ})BvbdqH}u;rVM>a>L>GMj0;X>PA`E@lm}
68617 zsor9M!8@Y>k&WLu$m5#0uAQ;NL$ds6^o-yHc32o|@RF9LcIzjgtzTKlV+3wQ)2Co%
68619 zo#x!xc4ey+ET^>2(8*`7CB|LM8T$M96{G?z+I+{f=YeV{tO~|Z+lj&Lnw-&gB8F7Z
68620 ziVKwMTBmL%2B+xml=tptZ5lYU@k*Q+OY=-V<?~S}MgafLql>caCvug=nM^(tY!5}Z
68621 zr#go;QGBMl7+g7!37ZS!<*J9wHiiT8Y&|e@tT=O|RSbt`4Z3pcFRwh-7!Q`!=z;a5
68623 zn#-cdP$gT>)l<oMR2HpXM<#0ecGR%!r%tJUZ3+jnX|qc)F(gC+P@AT6@#>IRcx0k8
68624 zCNZR6co-ck0$p0r>sM!ZfeVL&^?V5E(zmY|;q*bEOVdMXKgnPHD$t~gtSy}&?0hV?
68625 zfc`oXwI-=vgcz+iI3L@rXASW2(X?UE0~0dZtwCA0e?r#IkO`$wq;#p7N*P&mL~rJ6
68629 zL_1g?4;n&VjaOJ-Z8|Eag|q)1Y&l($!IpD6rkIs97eH}F7n8u13RljYAbm7n$a5iq
68630 zJ^4>}-*(*dr_fI!X=JnGjY^`AK+s;lX&C*(&|NW}?w|3!hVP`2^uQ=Ai^oj|YL{)f
68631 z`Cl7C3>mt1VQ8JnM~51bx)h2owW6m>iE03oPcP*cRv-%(^K*EBkwnAOo=K^^fcg0o
68632 zD}{*!IJfWKehJH>zX8sz1kUZ=j!y)JN*1^=aDtxsh5;-`TE#rX<aj;312*jezhHay
68633 z-PTGU+H4R~QQ%9oC((+NUP1&mO9GGuT;g12b0d*jYbR$~iLh23xdMR|W4a;aG*3K5
68636 zk)@o#kko@yVu6Y_n<^>!akJ8dc*-cBWND6yFQqd<;lEm-%FzlNSWYjf$+772Y;m?W
68637 zKQ8)*fnY+VY&>2~ppj%cSjoiFhFfR#e}ik;Kws!^X_UrtsE5W-#EXOTR>67aDbxau
68640 zfdfF{M_ljwh|Was-6T#t`P$xY12>}3+9~F<281GOsv?Pk)w8mJHvEG_fh-_j+v(M*
68644 zMf}<Rwl*-S53zVJ*X#xY^Hn*Tj(n;4;kDJRqnr5_KS~DYbLUzq*xW=On||91^~9JS
68645 zX<7{h?EWUdPaa1^WEJK(maI5lk-4iH5LtpbF+C`)%B$pFS+VXs&Av?P&QSgC?8clx
68648 z{I-?PxAH@fcD1{$pMkldXc#8*e?a|A%hDiS4(!k8@6{V-ZXl80EuQ%zq~J*jrwBY*
68649 z;<!RYI`N(jyQdT&VRkiB8d8WIZ44l+B+*UdcPnRJ{(?<LVSHvJP}p7-#Zp*2{MZsi
68650 zmgut(;53)a4d-fkmy~@y5A2-c=YUTJY_Pbh`0w5ZGZ8aW+&zh}f@k}UFs%y^7t(?J
68651 zdpEU$>}yO^DPE|Hp$IU<&J<^(Xl^5ael@!SlZM3^(Ufpm6;Rypwq{aF0{5E-^B0nW
68654 zx}pl=k6!xEu-{6e5Q@)ijb3{9RwwPCwANCPRoHS0^2&TBlNFS$2OevtmL?3R#6Mj0
68656 zFWLX%t<S*xL$(%S3E*^5IJ-7q*vRF#4Ci)UoQ|!nG=N@Y2T~CDH{BQ)1Zu|^ZDsi5
68659 zu-b!F$}k9M^QhGv%;TX5jLROJH{bS2{6Pm7*RMiPzx+PfVIo-!4K3wX)}LL<Y!nJd
68662 zLuuu?KmPJH=&{Z&vW+vVg=-eN<f9L}x$Schhh%E%n~!Ezrv@PcwjRJ%(fg4staY*G
68663 zs7I|@m!KxuwJuSs*2VtyRoA+(|4?gP(y2r&9I^-S+1a(eS{FMUxc^{v3WfpG_cSC`
68664 z0In3AQWMn5p=jY=ui&fH!a><fu)-rS`iBn9g?zqr8Dox9U&U~2g=I+osvFz?ZSoHg
68665 z30Z@@yK3pH3UgQ3PDO^0f^bM)Q`T(W-OZYPasOADJOl5!#{0H6#iYOn-R5=&Pv3gl
68666 z>g_XAW(dFnUe->WnVjbL^uq}ls=wV2vE|7>ctXlcR%^Sc--Z!<48l6An>Ar;_8iQa
68667 z?S&%H554Qs-2MHHfowcRh<pIpfm_JQo9n}GAg&V{gX)&H)x~D)*(I>uD^2gwaUWgd
68668 z;yQmBLNg{{t3ZFKkD6-`*ZHu_a2QEZgg@RTrqwFYp(WW5?Su_pAhh$(tju>n4%yfY
68669 zm#E*hpq(p0F2+-h14q{MqZ<}od8=ojOIDbQ?BP4bWH#d9J7GP;Jo$*lpWo;(%T_%@
68671 z?nKgo*tn1{-AN|*_mjZ?(mF#a7Kgdyf@GiI?>Sv29yoFN>B}2=czWwL;477TbbZP?
68672 zzN1fF>ML1*Z6_R?{twVmB#r#Y%|Kr*PQ)6k=|V#h{HZ-kaT3m8hW($jMrQ2s$lirG
68676 zlt=J$F)cTM^SkB5Vg?E<Ui$9?Fh4b`M;7aso=T->;zirjSvI?dw>}RH@4)&qj~=@e
68677 z({^J0ESgS{zk;a9c{qjb^hDfC+<~M)?c|9ghjWH@K6t*XdMyHVTb0mgDr-+JmL1y=
68680 zE+Fu1F_9Tcr?i*8QZ8*9t7!sPJ*8ol^y|e$`^w}8-cfw~Z1s`3<3h$qaD^1EjL%G}
68682 zqIL(o7>oK=N*8SmAWlh-gJbv&tBGxs0yZpWMiOUFovBRmBMy#X<l2(g%cFihAFJa-
68683 zgW%Gr-v*cd2DG}%Ic{@q;hD+hV|Mh<nN%=zel@_KTgqO#b~@ffaLexdRrGg}6jDJZ
68685 z3{M}3+f5JdsK@2-{qn!GVETdQ8#IpJ8;o*UvsBX?`LU0#$xBDKzE@stL||EN{vj<V
68687 zO``8b@;iKyP*CpoMeJYueG#<liy-^@BEU~^`~=kXMfP}jhc7btCg@xsck)GcJdV=#
68693 z`aSgTkRo!r<4tHPOQ06<qE3khup5x>i2JT97j<7DY@8Z~S@W-;-HKy&7dSWs7Hq$W
68694 z7Q1adyRMt*7Ug8SNo}{2dnGp!tIkcDLO$bbFDhwSP5bqUv+~4fdLn{)5=M-!ojp|v
68695 zHPK{hG{qQMp_IcFV3-CJ&s%w&kC1+EDwpz%K6IF+>0S@k?*J~&A|JddJ2K0%t>7p{
68697 z(TW#FQo7+|6h=|~oX0Bf&W2M-k&&u3-Iz-xM>F9{y5#lIlFy4lGpn8qvgSmxQgmce
68698 z3A+UBf+xOQiDD$--VOs!^d(5_1{@@Zp-)1H28zJT0dsggSYmPS=UkAYGyLoVv@Gq^
68700 zx!~jIa3nXCs)*rKOyx|O^JVpXrxhvJ6H<I0(t{9lnMf_6H-}AMCMhR;F^^PD=y8rw
68701 zcwb)jX6r$7Y9uz?jB-Jxo7=|Tk3WvokPgJK#Vib4a4!to<ajy>2at5Top!5721X$5
68702 zg0azqI5sR`4$G~ksEzx4B#Pmr*Xz|q*~fWsRV*)cGWiV9Z~0GO8C{b-4F6JPBQ-gn
68704 zzfw^6P-b-6-Rn{O$B|)V8Yy(LQ4HSawa{Lhofu0cdVMQ<Mqi)5xf`?x&TiLcwQMjx
68705 z$&_OMAA4^CB*}T52j-uZRe9f6WoA`nU0L^iboJfU$6P%<m;*ByH0~LII4OV!NP>_=
68707 zmDOE67=WjPL?8y}uB@8+-~aCSz4w>|bSUvyVh*<FRf^`Q>pr-7*I|Q``2S5iINjYZ
68708 zI^L-@c-BOBBkAV#(+$3)U0dG1JgmdRdWp`L{>x*}4_2+FnclyUH_Dn-C^^N<e`g&_
68709 zM$o;&$~c@~kFS77u@3Tvb5JmorWAt*Jn*~E-XBRvVaT*WUg%(*w4<xjNu3jfB0g&2
68710 zzTOI!zM2z8MP*wY2F>E$$h~xz9rv0NyL?c~c8sLlJ=-yN&#sHW*r+lq+t%fWTT+a6
68715 zr<PP7R+ZYTdWXHIZRtl#`$neVM-Ep`e_J*WofaeA;_2bp!gGJQl%bho9R&@tLy>fU
68720 zv;i9S2`q=*3*${<N*FVe7YlcHhb1!SNUAIPs^2~CrqP@*j-70sKYG}sUKp8>Br!=V
68722 zEEcAs^BDB2q3S>v6-VC^h8oEA3Yj@b-c=_L!9WE@9r5YIFz}dv_He8NtPF#)G;}sm
68723 zOok#dDtgAbh-}duG)WR{s>t|9wKJ$d#G1UB6JSV2DRdorZ|Kx2x<o0<4QPsHr9v~7
68726 zK6W|}^0&uMPr)4O;zQ$NYEVdy-0bydrqJoprOJcD{fAA``J3$vB|d~sFPq1p(}!P}
68727 zLZ|aGMS=9VE%6|h8a4|w>$Dy?j58$a4GN&s-)QIdA>+r-{fL<`zIf8PyIYw>=iY8}
68728 z(yN_&V$)W!Q{x?E(_j=G!|(L$%S&IjU5lQ5XE|cn2Gzi@J(-#_Y}t|NPpb1x8#Opr
68730 zY9$AW(5@UE*XI_|xIQI1t&glP4<y#^J#-M8f~L{5zDcjZPl9(~rLXDiixO5URFd<v
68732 zI4_kdCc-|@-+_PpF!;|{23ouk_70@?V>7)^BtU`y{>a?~9wZ})NnUX}qqlnUW7v@i
68734 z<4a!xZy6u9Q+mErduX}t>w$_%4NZn)&7$?}e;v3XClu58p!)Zc2j?`-8a#f6;-zX;
68735 zfQ(>0_$}JpmNvmYw@3UwqV-Q}>TBE&cEUopxnz?6Cjuva=ewWttTGvc;^(@0ERM$#
68737 z%#$9)y-a_-X#Y{lHZ*vEFi{#FU}*x-YQ>J?P6fhWezf!Q_w@6t8)bXwjMlSBb)eYp
68738 zxnBCg#&!y4cegA3yzQF*4?Iz-<Lc#RMysld$;FG*+D1Wl36350+={K~;>RX<z1W|F
68741 z5-Zyo=&ZmP8veeIc#eB+e{6W=qzbLv-s#^p3NSQr_OHc4KDdHk#8%Msk7^PpVk`_u
68743 z5zoKlFP@gFme;-e+NO{-Go<JV#r5qTtJBH4TH#|nN1N>jE>(7SE4>%q4asonG@F*W
68744 z<<kDeOOO_M1&B;7=Qd(-!Ikn1n-V$G+gWnzCEfDWsa&MNe}dlr*KiJ4F`v!A<HylD
68745 z`h;J1nnyPt9R(K7m_Vq|q|9r3A2_vsbKmT3*i<q}a=|>Xh9Twh8tbKV#gw-F^55ba
68751 zqa;I6|BEhno9cCZs@HwR9(MlZ3Q1S#-ks}Se`MVr+AG^NYoJ)p*^#-qp^h^kZuaim
68752 z-~Z71Wt`>Ng1|`K(=Dy0sy6S@!yV10p=OV(l{2fW_uGY#_OTN9DaezPIq<F@iQASQ
68754 zGbJ<y-mgki3f&w!NsXeY{I-=Gme2SX;oN;yrfIIwjB(ffEC|n%c3YAh*@d<h-NF08
68755 zzk|AQ4f{YqkFSkQZMOh68n)KjtEi{W)cySxP**ZhVVaJ{H>U-;#Jp9VpCe#EIaAeN
68756 z`+%fsVw~o5k|7@bu`AU=HJ@)m(^}rQC^9ZE-j&)l@C(SemebI<QWBIvHgi8K>0+EC
68759 z9*wg#YTYYds9a)9Eia2~J?GYO-^|i%N@5kLMK)V*%TrU>M3>^90{<Lq+<~2SzfyJ<
68760 zT9m-fHb5h>K$#sMxj79geY!mN;f|S9<-wMoFfEE>XM;DJuGp@dy1f1YoEF(kw`J&t
68761 zzTJ*<xeSTMZ)%)Be$%K`4Mk`-W;FOd@GO+4JGHa!SHsTwy2kdI2g($ARL{)v$;U12
68763 zBQ-J*Wnz#nw_+anBh16P*ckhcF{47=UI&Rd9s)YPIzi^fTDzIc8k#IZN=$pYqm&4J
68764 z_W86Na@S8t!RnTws>LgJ=Pl@-UVl1U0BB@~HK;9L$sIIycTay8*y-#KY%5uSVQ0E)
68765 zz_=4-Vwn+Oc-9aMhLXwW{<2$8gK0$tiKOt9EGK_h8Lsw3Dz)_ZsW|1&b1+rTelWlg
68766 zfve!hp^s9-{&oPkvgdXVK??+kr^q9&8`Ll{KumWCq3uF`&U*SFD#--TkO6=w@+2T)
68767 zhv>gk=)~dJ%4PwUtz~PaV#+~H@(JJjiGZpWEF4M{1U#~C2w|#RiqUIpUZ-CmST@6_
68768 zYD?!<esvjj#xEgogr3cu+pe8zpI%Y;E)<$dng6F~-%v4=E6*@9SHJ^U1^c;x8lnX7
68769 zm`&pVFM>FT9XMmv{|!{g!7pe)fb)kF(go=$fHV^-R)F}^3%y=n{Qv?=TimztQ1qq`
68770 zjw{EXNd%P-_`k#<MiB9v2yt^IkVmA-HAP^9)yVS@8>GCa{uVNEv!3y?fafwxUb3o6
68773 z7Aqb-P4xNk;exeP2znRc6V$xAalg|H2Pq&%5!+BFKlq_9`kb;NN{$U;S!psv0dfo1
68774 zPQ<{t`Kz<>3Bhi6unlftMeLsj4kT+*@al7rEpW&uq6v8<_<;&}g#CK)2->(Ti+<l!
68775 z5fr05f>@-mkU<0-^#HAP6weXk#y#y+KWC>Y88JuB>YW~;se@)APj?V!Bx??#@UAJh
68776 zx=M&22Hy=ni=mxn&%Q!M_`-$Po4`ThDVoG_)We4#UF%m|_{8ybez_bLE-8b5O?F$=
68779 z!-fk|ish0z*Pq}^cw*rNLjN9}@8P@DvW51`23M%(p?vdJ+A74q3!QIN&4$9Q*0M2;
68780 zg~A<seA-_KegquAzxU}eo1~%QF8D>8ug<{=M>oHm#F%~`50v5hw=YR0JIb0IWKAoj
68781 z-t#@E_uQ-H-GDc(noYoinY_5%M(6rxx4ww|3m89m*r(3_jDmDL2QSWm8VKb5n{(!V
68782 zL%`o01`nFiGsm!-M10z<W&}=W<YnR}ltS@BbP-{cV9;7V9ljQLn@C0_fgzDEk(g|Y
68783 zU7*1ugb?s-d9_04)98NndpiF8#(5GEB30m-Qi*P7GqjwaT``C$NP+XD;mheyLR$PZ
68785 zs3`Gl{;uU>E;U-A+p?H$2LgxGZZ8&#DdLOSBC^rN;xylce;)iFXg}mwl%X+pprS1?
68786 zc$}CC-Ap@95#3RTx3K7eMZ=1U`AkYzc~nQJf+{(el)bI!`N`_tAN<5eSEOqCsQ5Xy
68787 zmX_c3y&p%J*Y#_|QY|8aDwj1`?y1%FNq!pt9q^z1`Fqbzr)q}s7j?csj5y-X78X5l
68791 z(R6`--BThYB2++9=*_s>&&HJ=ee#ilWg=I!HIx;CWzt+mV^n(g`#%ca6&M#7-0&%*
68792 z*fh18zXWrqm)}aO+yJ0|x(D^Y$rh}ZmnjsdvELQ&eF4uakmpl~=h=|w-Gw~=^sDjw
68793 z(~EiDE4XPx6ZoL9fjmlulb9aT!9RTMO)tE$td>(Von&N5sGC!EA;0qjANS8~H&@-N
68795 zb_H6HIstt_bLI=)&VVFvg4K1omXwQ@kO+k{M@dL^x@D%&6@(Uis-8AWYA#Jj#M3pC
68797 z{x^-rI0T!iinfUaELf_FhJa~uy}=6~3f8K^Pvv@jLGC$-t4_7gj9{#TzL4W3o&P=S
68798 zM>~0MLgzPw=b?voX1pgugXb{tOP8UH;ZWZb2QzyW51T+HkoTJ?Zo3k23XIk`RK-g~
68800 z80yF_wlm%eX0s&%_*-bWkVQl6g8u8zlEGt_eZ|);cboN$gX(Tb?NJeENqOOlTfa$?
68801 zOn~TIw)E-sO;Cegq}Lhvi*AiFEmP*{)5)qV0mnCOqZUsu9aO4#W;KXGq1NNu@fZL?
68802 zrK-5u49NRd&drr3ck>hA#o%rPcsEJX_rLD^Zcs5qkr+C9H%tCx#gnZT%EqIsaSqNM
68804 zc}jRusQF@&uAK8BD<?j6w1wAqB!}3rRI12FJ>-BXgF7rtjMZF1bNa9B@%MdvaLTFH
68806 zl^D104)&x}*IW(eHvKmI<Bj0QVBq@jn9HOE$dE+Dp*ArDs16n-`cqCKZAalNLEF)>
68810 z@>q4So>f^N+S3pR`7>88F{YYVL^de+Qnt%6a#rG0b1PM-Xmp&L&Rl7MFF|dO&Tqi;
68811 z(_i`Xx3E^RQkgsdt5m)b0Z=|3vhVnf?Ogln-D5u$&lhEHZKunqRC=7}iDLc_cdzXr
68813 zeJ67<%bEgS%h|-<E@W9R1zFY^<T_sKoU2sd_R*DMpW>D5TX#a1HOfx9R4cKU-+eCB
68816 zt)b<QV#Z;mtdx+M%yLp)-bjUYfp3O0{?)DD!(F@pE&M}cwt)0bB4ow%m&=Ml+>JWD
68817 z;xjXeXt1=92-EtzuWU%Z`pDg!m#SAUZ%>Zzt#1z$Z)=rLNIan`|7-sAR+EwnBC~sQ
68819 z+@1h~_VS6^WujiuzZ^6ZNyonXYH-y|&P3Wp&`G;oPNJJOp1IpKa895ZDwQgqy>vOa
68821 zbqz#-va>2hG6;xJr2#wnDccVtC+!3POT<Cq*kj{T*me-0laD<;K`En3ydGe45VXyo
68822 z;0l9Cid;Csb=rau8BrBZZLK`Il+gu=>DO7-<gz(F)q31ED??XPjOeh|;;PJ&JAk2T
68824 z{&U!or;x(Wqo)9lys^ns0Eid-N2gI{arO}EBlWv#XP=muB)ksCX4XXwvu-=vMy3D;
68825 zn;}rs40jg>`Drr*FHBHxqu!)P$>&MKc)L~*1dGY#mNH5*H&pgtKz-JG*IKQ|(reE*
68826 zn_jkZS4+>Zq{zXu6WRPqA<-Obm-kDycmG3I9LN6QoSRL_c4d$(@~8qo;mcq0d#C?R
68827 zz;0~HM{p-)pC@NOeWUYZAs6)hh&*%;%b*<P$J?+Ya;Ic7yLwma;H+apZXDEDHVL_r
68828 zOSRtMnAJ`}Q}p{U?o~NYriZ6aI}MqkqRiN-p3_6@|0=FR`5s`K*xB)^jWwvtTm}Wm
68830 zC-acQQY)DD0O(r0--G{;7H8sO(yE*`Gl{{#19ghKHojOIE$uxjchc#eR)H~_nzs5$
68832 zm8qzsHW%{JOP~U2@NdumjEZ>4@wvwgd1?BS&r9m7@sfQ<yoB%p-lSp5e>Uu{n7(7e
68834 zvkmvcI!QD14p8eJ@pIZ(ku8(Sn)*~e4}c44`nf>-xR8p5979Bn{P>M8p%Z#S37w~B
68835 zR7B_LIe~4-rfIag-PMf7OI)wUnI@uV`wg~P?G_bAWtuIcDDse=rTm`jN{F6H-HRg`
68838 zp2-#}nMOzHJhN#vm83Ixq+vA_9(?}H#fvq&alU}IwIZc;`n28P?ka5T+J$uf;Pi@E
68840 z-HC9_Ow^rNT0o|dFyJVakaN*^wCCvQwlq3C=N77&W=E+%vtu<?&SdX;wr?un*H2%9
68842 z5oEa-Wce^=G-gv4<_Ekw(H9nusP-_=XdGP=(u$S+K5|{p#3p?Lep^%jMtfD;I<=`%
68843 z2{p-?!t&{JuBpuJ2<hRpAk&Q8%uBI^Aac+-nCuC`Z+-sOFX8V1f9`j29*obe`2un0
68844 z_lFROOM}*Wdp+0(2ss@3+fz*DW^B>bg;-2oGkr*zI)8to=FqGR*4><nuJ8JO&MP4{
68845 zZ#^^al~T#`nK)rMg7SZzxp=8=m(SHSmrZW#DQW%8xW-jR^7@`rvLTx<OO>W6FEcWw
68847 z=L0WgRvyS90|Pz*`P_3$=js8ULvxesNhPkbq-^b4Q$9Ck+dwwwUsWq**)BFi8U?wL
68848 zPlJB~x$^pFT}wjQ{wa%3@g4KHX(#%^BILBL`NO0<;KidLo~3}xW9amH21da?lh-nJ
68849 zwf)Sa`Q-lPJ(<EeS!YNwbNE26id%zB?cukf@pyW_0ccT$(U_Y{k`%#cA`$0H7fOS}
68851 zQVHF2>y1$Ft4X`~V1WlW;VqZb-hMq$`hgKdm%On%5eHxEcbD{EgIBCrg;sdQfiA;e
68852 zfY-E!D*^PIsR0Ua1DZnc9`r*j_#s60G-2qIz!St<umncY3F;|~W^nqxcnrr`zyO>H
68853 z3Ub^Woc!3ESTKDTw&+c0F6$7zDURMWK~7En#yEO=oPHYK1p{KtQ%By6g1z-)Z)TyJ
68859 zmM@^PNpWde!zn>#7zLVNf>h-M4E4D3LAAM~dSRaZU7&|8;cNh{WJ*x>>J!<6Kg8-^
68864 zmFu4B#zlo;q-GKMy8=f*>F0#4%Xb(0BYiT%^UdHKHo{Y(%oU-`RVOkBe~4A1GS|iu
68866 zc^l#TCcFt~mIf^3QN*I}ihK;_e+uGJEEfF`Bzn6Tn)v)Cj3A-Jyyb+?!btd0<n2BR
68868 z)2IZ_Y+mV@2+qwsl{7=$vY-q?ix)!%uWT|3#aBWZG|=o**5sXDIQ}%0K!Su4=z3&A
68872 zNgh5CX9$9!6M$A4NgXmV!EunzaWY=-r3I&+Pm7W;>CgRT@EzC~*F!(H4&}Ntk!$!v
68874 zRc5ZNkMkUZF@L1LKGG^0h;@JF%N}=TL&+}l+WkMVSKM-(wkAkC6mP{}IoLuDt)L2`
68875 zp5atUEJKgBwc_XoO;JgkXzf%k{J6<*HCN85TGNzihDBa2JT8|MOjiiKT2fQ-R7uVj
68877 zI0P^@Hw4fR%%L-ql!ZyfbT)QrhI0#ZmiqCbfJ)I()~c0jE$)qH8Iz^rnohEDC0<JI
68878 zo!>P<>U{g#Kc*#ULTT|-p{{UgRmlm202rZBB1kb#Kt(_<4dmw7B!xs~(%XC=cn({i
68880 zAGw<9=zbfxt*tvUj7?E8HzBboI91U8(2Uhw7Ht-Fgc~k%|Bw29W@SrnB~eFsD93R!
68882 z>36f48Njg|LTRBDo>T-U?YU%d+-YugVO`J|t!kP(?v=Y0P^X2vyIVrqPHD;F{u{4f
68883 zH7red6AZ~ys4Q5f)XgO-+ZsbZMA6S)%-P-bttyCTws5y%7Fo0BR<|ToFZa^|$1^Ig
68885 za;PL#+AlgLqq0zf!g!O@c*$SDTe8st-n=3k4`0dkR8&P@I(6FC&AA1<g`6)tiagYp
68886 zv-)KJ?&IKR{e11g_}t(%)+J^c*lArN%)pY7%G*h~_9F?{hF}z%My28C>6Wy7c+T}o
68887 znPyvQzj3qgrOf;o+Dx#2=F-KwT{>Sy3D`CjZ*8o}E~-at?%I9=7M0yhxn6SkU#?cl
68889 zJ@6W2^UD(K-q&3$kx=?kXc6Jqk%f~bzd*hWmbs~oyJMl8Y5q}jm`Rl{=Te5qa~rno
68890 zr(Ka?q9|08U=RwO)MZ!Kq~<_J6}4?WC0uB2E=eo}t=b9_%%tFYyq-dWnX8Lo9c|W|
68891 z_6y)VR>Lm8k_Pj8d0*>pKm-l&?Rq#%r$3zoG-X=InSQ4T>a-XRLgfS9PBhHu{U2)I
68892 zR~xJplxhh8iO>pCnxfj7bapqt_t>Loh*3`-Rr^DAR3q2~5NN_ZXvMQb<C2~3n+@BV
68893 z;qy2c`$PNWLB6bgQ`x6)l>P8s-$0>eL>Rq6_r>qJ9DxxxS0|m7A^Jx%G7AziVWBj;
68894 zo(j-7C}cxcD#mM^TsD0pl}R>7IbGAjswuQmEmS8}G=$9A4RSJu<a*Fd>01b(!@8zE
68895 z;hPr#j`hH`|MC2qufO^`;*>=6Uk~)SlK?`uDLh4>LMelnxLLtTP<g3hsuRtZ)f63-
68896 zPN#?=n(@^hiptSV`$4&a3Z|1e-*_DR6|4^~9M=!^BX;W~s?#Ek?yM4Id5_=OtGurT
68897 z-`AbJFCGK$y0bST=^oA9GX@Bp0QgJu@5c!Ac4GeR<K_7~zVo-<MyOdx$Ue7dIQybB
68898 z>k+>*7)I}pYZp}~J(Xucoys$EItwL>5=}KSj-F<vna}A9voZGPnFHv9{U)Hn3s?nt
68899 zV16GO48QUuKJ7z;#tX)5FZpd*#Jj>~G_)=UB~j3T7o4~}X-4Dd34Sy5z-}|1#COM<
68901 z-}{-N5Sj5=#$sgbeHe+8@0(1$nXbl~ZzgUWe-hp}wAsg=51NV*uBG3tjq0Pkk9FX}
68902 zJz<fhSiRArrC2ByM@C%0=cbR<(sgaUn3pU$%dNcmt!u?HT8UME%UW*JQF-`$Qmb~s
68904 zRj?)O-JcnVcmm95gp<(aCILAGf}k_Uu*A{99gW*Qd3=CJt%_m2PIala1pnSjq3RXq
68906 zZhN5r8Cu2=k|x~y{QrV~5BX;a`{-wea)f{8xB>+x;qtT-n5cWg<9EVIOZBB<0ZoV%
68908 zwqgs4P{~+Q?BLtca<#i4FBLikE-npvzkoKYY37-G2`sXcu8yr>Klqu^*KH>qyl!mR
68909 zZ>%&|iuvhIx;m&c^T?``_$y4{9^Xn=ESR#x6z8|n<<`?W!%!!zrQ;)8=@8-EfhsLt
68910 zOZSa6j~KZg3+E9pMZC?~?8F2a9jtz2BJqPi`Qg57$%I631=62LoUO|hv-MnWxvg0w
68912 z6J=zfxmhWD!3gJIWFWIB7rSWOWI(b-<0fzX#IB}_v_Mj(8J#w14=mM6kSu%GmFwUa
68913 zk4~Fxwgg3_Ifjc2n`C%KA*q2gH*9i-`}VK__Tnr3uP*)%E#7H0N`vxXiu(>1@7w|I
68914 zdok$yOll$M`|8Kr9QfQxi0>UIiuk^K`6%2wg7-#v_;-()rLR8Tdj^URG*-|)b|-l6
68915 zJAivH-#ZWYPC9-k*@<ZHWqD)QnWA7Jkx*~hJlOjyh>@Nmf9EjLw@J{Ew*g5jg|1sF
68918 z^uA_0&rmYF(<=8XeWYFdoo8V({Dhrn^A`Q2t!F}>^tYas3rZPU^ZsVRvf{U0dsa!-
68919 zuXU{kwB?#09Nl|{-})Rhum2!+8PcZ*bqZtq^K>*Y*^42frcxMlJ~e~X#n5lwf4tL~
68920 zM+eTN&@qXr(>FS{s}vn~(powh%StvN!|xGf9EP-Unxq_6qm=}%N~4>@U3++SrTav#
68921 za{uLi-f7%dTglZ8{86ENYWeixO4W3Bt7Q7`zrTI6x3hQJz3;}oY0Lh5gr2LKg1NSd
68924 ze6gKP-*`~b({B7~`O$lx%2w(bd#^$&5AJ_>@YK@YB_V5<o_yTvJcFleO;t3$e=;K!
68925 zUy2R=JH0k$EHug`a;F-a?ScV6n8a@o6HKx-`}Gu-OoXsx0UZ||Htl$E(wvJJqsI*o
68927 z^6~V2>u-2LZ9F+7y&r$+xkuJc6^pAo+nr7_`5fbV6;;vvk!_(5-;ccqYeCy^-<V1J
68928 z^N5lF-w(PB4ZpHIn@SyN5Q)67s2s2~$hpuPZv{A%DQw4IX%noZoj>(t<(oIDc0*6R
68929 z`qur@#U1%xg2H351k0!}bm1wo(0H=a$TsiWYd?Rwd-=*6z^A_Joq2KaF!aQEk<xVX
68932 z7)MBPJ6b?e)Oee>>?Hh?(m3zRu5d5Gpyj;q!;_-H2o#mCK3Q*NTKDg?o<GyyZI(du
68936 ze)>&Ud%M#5n@RP-{U2`K815c)%tv1yTJ1Ecu$li;&Pi6*7Q|$w;$h!(=S2I&hu99<
68938 zn{RsY!#d4KfBliebSAP@Tuf4wNElmnp`@N)o^2NY(GN~Gi>D9n%2vF}NJuD|-|1&H
68942 z80NRq&%KEID+&B*QfSEs3W_EGO`o8{q3^qvr#+<b50ea6&KRAd)9M%R5>|&-&r%6N
68943 zlqDT6tr#yC07!VFt!%0#S@C*7;uMunOCX-$7%A<z&`-#cF=@CyQspGY!@K|aTVDcC
68945 zB58_95O`e7*cu7#0u=ZD<7<^-p=%iDhu>zLDxGmRHnZo`E?$UhRBO~>g`WMMr>k4r
68946 zmsUvS!Uvyg-5l;*Yh=3j>}qP=XuQRh(^4*-Z)EdfeHZ*Ob_;W{mxGPIvcH(vci7@{
68947 zwOhlF*pS7-j=YNMc6P9)7`^HTcF3@yum!{rHaFa1j6i|Y&<~pqa6Am=COej)@ht7H
68949 zn`0BTaZV4<`==le<Jk|683hp2Y!KQ-l0=Jni5T|M^ceFbNCj;_;X~MwXHY~Oc{v^o
68950 zZXyVuF;GSu5aB+OoQoz43EX5tbYu$3WK-U3<3<qO`gLC_F8A%#LVnwY@hVAY<5b<O
68951 zSXx@vwaWeX<T+1Hh)iyrT``O#!;-N9v1;{lBqx?Gtm)Wv*8TgyDprIZtsubrP~kmU
68952 z{sfmV2jJqSIR<*PMNpjcXs0G^9^K;edwscBI-M@m-I@o099N4ztVPVWimBC=Uf(OV
68953 z3ae#;N#Ft%ch9#GpyjeU99HW7Iez8VZ-Ga^$FMxs9ye@RA_;`iIcWhr8k>V=)Dg3i
68954 zWh+)L9bHZ6|Jx8!TTdR)jb0@oNj=R<pB<zhXpS>DB>Ta01yycS#LB%l8-%Pv`jzPA
68957 zm+I;BXz>UQD%)j(_`_`Zo)l{j9z9R6q`956W&RKg_hgU3A7C}8GsoDoV|i->Ct?*E
68959 zaB<R3I0)dv^LSy@#WY$76h>{X?HgX#aA=JMb(-u}J6mGLN^5$laIN>yN57a(_L54`
68960 z1SMKsTcNTKpr+TXX05oJX+~$z2&4^M%<EQx)%$L3Q&wnd-2FAhHN28jR{D7>UC~!s
68962 zv0uoy_2ka8_SyY)5orB$OZPq@Pze8w(9ULg`|fg^6j{w?-^VEiOO^(;WNBSv`4H+n
68963 z`ObeA^700@H15|e1QK|)afAp6p()q~*qAMjn|4{8IQ(-qkuY)=Z^IS2j2cVe$tqg@
68966 zRt~-7+0xpn_>Ptusj|?jKRU=3G=IhQu<D$uy63B0qi8r;oK4HcElqQf7(dbX_BTAa
68967 zkW6lyy1ucdyywLidU=1(_33lA>`(~`kLekW=S9U-|Av$(xtGZ}tTniKF2N;t3|nR&
68968 z3h(<8$YN#eiC3W7nkF^fIkSd*1R{uDL&J7w)-N#grY?(6yOlvXF<&HDv}h`V_jKyL
68970 zcN{a4Mp;fZ7u@msn)=-@zO!36@s0(SF?nq}&Dg`6XJ>cp*L%Pz@H^1Y9ilng)E&;*
68972 zL%%EI%*AZBAIv~U8wUIt=-J-1AES)6xJYRuTlRaOZ`}fa4*m(e<Gs&jp?VGaxYLn7
68973 zZVbF{>b{Hfzk9pyw;NipHeeRlh3oX7>v?oqLU7M~E4$=&uH8S<2HEzuLM2p-({bf0
68974 z8ka!h_15^2e06;p<Z>%TrQgM=1TE7v8ki6Z1}5NKr8U0K&K8B~9@Z}S0@gyk=-Q+g
68975 zJ@q<z(Jj+YGq#ACQ#NgCJ#v&_-LBsQ`1}j!pL=psE33}VW;0HQ!ym3ZTIVzxr<boh
68977 z)0U^=77SqXXGSF^Bc*c3U!D$@N`!-@B<LLst7Z7{Zoz}Tfi<5>o_CxAr)f^>Mz^;i
68978 z43gZio!T3Q`8-<O7RY3G=icV>-AUIma_#Dy^|IVswM)=#;(7>!l!)K;;=2b~wOG@U
68979 zELt=ZZ@wgt-HOTC-G?v4sJK|Gik8gP@A2;#`G^_pzhT2~^$Fa*Phbd!+<dFYowNx|
68981 zmf;gDIhl|4->@%X4X`s7g8RcrG|40u#*$?;&z{5(%@M>B(Ht=_>b-m#asYFK1q>rH
68982 zlcvdL6iST+H-$|x(F@*$1gCclPJJiuY|Wu%qwmDv1!0FLz8^!A3YO;qx_ACoA1#YY
68983 zVhs%5bD>y}b8=qwIMSUBhhG}a-R>fUtS_FcI?ag*)AR>`py30Yj=;~d;?Evvjw)gm
68986 zB?=`)u9ng~I>YDCULoQ+7-wD|vqMxxJg`_C-;V_I*n(glC3p^xzBmcyd!0rNn!s?L
68987 zcsRf}T!cAShnzS%F=)_{Bu>_pL-!lNxL&<qi9=mNv@1d_mHNqdiVjaFto)5}dB51`
68990 zJlcPQ&N631ATMfRDg*pwhN4<2*C}xu-?N7xUeA7X*lRTPY(c<fLM!k=2ab`WTTQh7
68997 zxnufW<j}G8PBk-LRx4_ne+4eQpcbE!q<&8KM5%)Iv4UJDn`Ldg;ok&FZrty4zsT|Z
68999 zGGt<qZ#-023uvtFEOEL#j58!TzBiujO7&8`s&-6$GE4mXz$c-!=CR!|o05?%hRlUd
69000 zAi!^n<npNrU+E~WKsX-EzYip;sL=5W3?q=J#^=9bVd~%*;SmzxQYJwT^66#UE(yF~
69004 zG*y~(I7=kaj<1#rd5VGFUq+tt@jt@;H9X4)#|-~<sv#Ubu6g{pN2&)t`)uWtG?gV2
69005 zb)(|wj%=vzxosWtf51O_f*8ctlHEMXiAp7_&-|nZ!CPQF`g}0Li_JskM+<ZO;-LRi
69006 zEchwhpZsOcX~{TAL*h{28joCLkoPQ1XSDQ|rc+ub`l=yl-XOcSLoQ$KGDa|@g`$)=
69007 zqf*J!=XVVtR-G%A6-{kwEOhm&s~dK^K+q&$gt`|e1?aQW0!?PxQpc=l>d@0C=l?h^
69009 zRwh_sWu|yqaO{D=yV*y+^I}So+Z5H=-E-o0J>zVwb%faxD_4q>an{glOub`_Z(M1n
69012 zd7%F>YA`>weQqOV<T|xGtik+;Lirw>wfm1A%-3MhUH%x(!@z0<+eNz>cE*rLOXPGn
69013 zgZ8Ss8P-<;wz|8%JM0(p2&oe7?Yn(x#b;J^;&slKSK6#u>RRVbo7Nf7pcB1HcT3D9
69014 zQ<`2bT<g}BswO4<s%s_-l3bk3VsRgUH{IIYO_`_MtrP>_h-xe#sIeHmY-LMUD7r9O
69017 zKIp+XYi+RBth?!8Rx~*q$=44nJ<)9#lR_4GLMaPP<#RQ$Lm8-$#iCUhX;m-hFLzSg
69019 zr-C&X()K2#ZN(>~p#`*szapZ)nry_l9c||eg>z&JtmB<fb~aL|RHXcw3(+;{OZ`%S
69020 zv>)BRQh0>ENFFkEHNnPJ(~8M50qPXlt@`YY$eg>}Uc3K?($<8PX=Qaarb!Q=-c4Y5
69021 z?q-^h<rp51RtxK!5+wHW=vQSoX=P<d>!4hi8kn3<Ym_sU!RMg=)`F7#=CL*!LYktc
69024 ze*Cjgz{6onhz(a-@kGFf|MRUcg0tXdtblc(jK4i7Qpr%DV|b46m!^pfRC><rcVP0n
69026 zC|hPTx>E%WpN}@hteIA|O8!dQ=pCf2WZvha60I8gIV$@A-Bx(J?v9-*{Cb&9e4-BB
69027 z>ZYvHlxTnZl!<x;%hWW-FFMEkTEeq<#<vZ7*jvUDv<*azfh>R@n97uYQWO5ciO9(N
69028 zsodp`zdS8BOu(zUZ$tLh_lEtlmmrW8IkIMZ-jGBn<@brlz+xkUwoz|><fHFu^^;cI
69030 z-WX&7CTEfp8<K?L=MVJqc?``2{uA6p`-`zH?Afuju?lI&`n1ynXoEYivA_u$EArxT
69031 zx-AU=HrQI)YB%#)XbQ@pd~{XwbQ;>cF+lsOkBeW}bEqlhN1uE+znrcqh-6pRFIUqV
69032 zlELBL-+mdqn6|nTF<f7UnyR%G?6LM5hP_sTvIye7Fs3`B8sagA?%h@Yo5<+1Kv5;)
69033 z!EPw<^WfM08F0JU@^}b&42K2{NBcsc?-61r(Oh2)58;A-=()PQyt}&F?-p`Iq?~#(
69035 zWCB)!7BOTMx4tDRG@6a4s?NU&)<XHfj-<+%{BkR_iwHL=LLUryoBkZU?JX#&p6`R*
69039 zln$wt8>z4^%yEjiva?>^Xrt7idsjG1|L4FzhZgS2m`-adP0Y`ALTJ{f=GWO+vtKV<
69041 z2v|1S&g<D2uReBle9n*AP~HCD#omf7VW$yg(>@;CTm((t-OgvxtaT!auXq()aujRf
69042 zKNX^rN8W~(wi8UV$Z;_kG0_y|$hwckR-31GylT-Lb<>yok9iq%FJ!K4Tgrvgg_O6q
69043 z*4mbAtzFM1wEdxS<KC^iSKCf%+anDGO<wJ-+X#z&A*Xth%NlBUbAQ5#44p{TG}$UH
69044 zk0a+EVyDo#1H8Sl=-fNwoIAszmm>3BU)Q-UPrd!IGlv_Oi|)c>>!T&*_NUgWN|He^
69046 z0-xy{hZ|QD%h&or2F6Ixq#9#YDtYSso)N&%-XJhD7+PaIw2LvuPr{Vq2>}{QG%Ghi
69054 zIPMg+0BytzSJJJT-Eq-j4c@dEF2UCGy=%xmysf&8jykGwJRU0*27|C}^mE`6jD_AC
69056 zP+QH}C0ce+`Y!2;yeTF{+G%=ry_0oUJ*VY0C`r&6zFe|6idK4^d|8^#W{mOR`>-nZ
69058 zK7RRwXo#a_<yO-JW4j~jG+!#Ao`r5+(si-b3ujWIc;vm{aj5%38CF9XR_{oL-LD)m
69061 zs%B9aCV&T>K1fU-44YOwlqZ2f+e;XMNb;_^9+o2_U?-7IW9V5!N0?;_TUSCM_eDGc
69062 zXsy{|vungS)@WsYa`2{W+66Q)-v_kX*X!26qah{KQI(Ueq^Zt^lm;{O{}!;I6Z(xr
69064 z7045$>nR;KGpkRfuzwBp-&6jPKcjHCujtYLL^Qog9IYrL?TrVnQJ}{sPsEO|TTeR%
69065 z>P>@6Zc@$(OQaoh@wpm8s%_WZESX@L*|}ILDI^;jt<h|oqL%hjEm^^-fZ547MQb)|
69067 zB9o-wgq4v=nUxI5Zavx@I*ca^<BNq-$HWPEbzHe*qa#*xl_BcI`Xcm7{xP&FN#x(6
69069 zY$z|6@<H)^a?1PQEwM@>LB|-$O7lT?SvpRVB)~boQgK9sMqOpoIT!c`p<mTNb1pPL
69071 z_b%4Yon1880$}SH8-IrQyVySJQ#n<kNCMwK5iy2>&5bol!1lpD5)3boN}MRt3d)+Z
69072 z$P*9SW2a$Q=qsb=BIq%{q69V?_aC&9&`7L3eWv=@6Ayd&x|pCL{Z-z*=-hno1tG=L
69078 z-`{F(NhANbH@7O6Pc@-sNW_R#+Bsh?z4#+0!%3>zyRf2;Tj`B#^+K_DsaCsMsf?tR
69080 z#Mk;QPN3reFS@x0?|<;v_od=-vOF|BSybB;QM<Y;r@htI_D6Ql+;jCxbxB$wf-joi
69081 zM_<(2-MH_Ewo=`+WrVvGzexNtwi58A?+ecJ<!kQa9QNBy$d@Z%B_0jUjtlUKd|5_o
69082 z`aHg|-DC+gltq=Z7o8gcUlMly(edbJT{R(F#<fNn)zk(9rtqvNrR?tAJ^9Mc?)7tx
69083 zO9%G7Z}Yj*+C@xx=+9@mcYFB2=`v!<75DLLzWw-Z{5y#Mh;3rOIc8Ra*v@B5-&TgY
69086 zpjs$2lZk{TiZzjy@;ym8ef>V~%G(}l)-RV!=ZghM@sI^`rwZ9}I`4E|zOnJ-)=Igd
69088 zQ2OSk1VsrGWyw$?WwW?maGOIL$D!24;u<fnS66=ctq7MK$Yco-M}@?p6MEf4+V#{L
69090 zS)aL~yTwehYWrBCdv6_JhuGUO9qAS!qFZ#JPj$=a=&3#-YDviv8W}A~r^W7CwaFzu
69092 zU}wM?BBK2MfA-!3T#oBH6RaG%I#hL4cXiG==YFsIg?>3FJfw$21Og;LkOFg(NQx3E
69093 zT9jl3OByTL8jUPj8d<VQ%J#_ee70wHW}QY3>s?!8%l>9<%QIf@j>qd+n*^};-m2>K
69094 z-UIMJ`J3_gnUnycUv;DJx%Zs&pL70mt}*9=xb-&l&S$c_51#`ejNKflBwHYuAZW89
69101 z-O6});i5k=AIfT{Y#}+S^(A;_=Nf{v_1X7?=EoC5xDm-@f_@5H!pfb(T%03s1Ea@U
69102 zk`-IRmo$-}rpl(O=(Y^aL8%!7b&#(0C7Y2zj0?dKLETE?<DY2Mt)?K6m_Aa>TzTYb
69104 zPd3!NIR3tOW}i4yd}QXB6f;rQOoXKU=~EN!^;%4fUHaIS+4J?V3rOLidzUYbd-Zt}
69106 z1=%6cj9G}rN=3L^`Q@Gb*B4)%S~@cK{yA&F3Q-}j;)N3h+2eJ3|M)i^eY{pPaxLV&
69108 z=47{xC2)r0X_MO;sHECb%p(>orc%pgZ$>R@BK~U=A6!VRXLH-BbX^0Cse2k=4N4%h
69110 zm9cW1>?a593E+)A>HP;ZECmb2QG`DxO?9z5*qNCZ8W-}4Vq)NoY@BASisVJCpwsS8
69114 zgaY&>$}&6+yfj7GgWmWB2-B0v#MXCPA6#5MGWYWGXisCJHfyw1%^k~C9=<=>XlQi_
69116 z0j7|m7`xS+ZY_r*qtU|3PWCGkA6){Q@$yp3Siz~BBi3$tkF-yGWTddOnAP^<`pw@U
69117 zPE!wK6{z=KL+`<lDp-Z+-WA-h005Zo4v~6FZ({|L;VG7bc?2pPw5DdRZoLZ_Dd?8Y
69118 zb->|~RL;bMD3@Xt&L)_v7K_Ns88vgE>1nuIugnBS=FTlX1TiOaLEsokK8N@4WOgaJ
69120 z!Vyq;l56pB9Kk-uk&Ew6TReGk^ZvPJFuRdTF2`bvai~j?t*ZcchZ7(+DSYl)WT74J
69122 zLve!L0x|GbDt#obn~~%S4Ag)mcmz>^)ZzsfV@`FTL3zdc<mH76OA{afNr5OWHkU-_
69124 zp{VQ&SNfu|wZTweAZ6hB-T8Z0CLl1YfAk&$`-4Di24H`G*jIS<^vu=CZqfkL`|L;x
69125 z=*EO52OLc`e0#dlsFeyp4j_8(Yp^qXV|U!6aUk{#-l07UhZ})2HkyS&7;CnJxF{X!
69126 zET0+Im1BKbI}uvwo{<wpH^T(-fov!`8hI!@pG=fYC!ai)0m2B3O&@OP$}zowjsy_J
69128 zp4O*QYlXq#GtqY}kUWOeLx*#49!2fB7aoe`91b3y4l~MVq|%2IMyB)p<mzf94&-7t
69129 zg7!jHrQKP_X!D`QwQ1F4mV(7VtX%o>;-#grpdKhLCSY^1B_9DM6bJ|y58vrOj?9CY
69131 znZyE2t-SrwD^A|b&?dnK<umf*55hp2arYk?EsD-oTr|Ou-qY6}Cs~Wh?nxh>@;tV)
69135 ze(dS|wq|;lnwtx~-1!z=$Lb&s@*O;PUdQWwxpQr;`-H~&udJRoFF*Uj!^v_IrwDJ{
69138 z5D}gKe8(9S;C*JX5X`Zo@QL<Jy;~0}0C+V~qF`$zk`F&dn5-7xl0ECHZ2!y2kIx%f
69140 zF2A`~0mvwgRNwXPYjI~tP)S^N`L|MEf5J$k-8%`h?XU>cXBsKjST^y@XQ$ClmqK#h
69141 zUHeq({M5#J;xku}1Jx>GC$g{-^w_D$Jit@HCg!IC@evhPNQ`{%Jhcsc=+5g65Ag#_
69142 z_rk(he-hjf2AZ9E`{F}?ruUj6Sa6atNtVE-_rCY93r-W)Ux8pL85YJ+j@J}y6yr$=
69143 z=6FXt&IOM(AkH6a*CHEho>T8!1n-2E2v{c6D-qR`i)k&nD}|B)S1hQ{7A2ph9|C@2
69144 zts@Yq65P~8bMOv#BnRLg_M50Ya6bC-KLfP@T^4R%{?X!M1!ruu5EP4{<&Q2~Re{HO
69145 z-hFnyxt#ZKEP!6XKLE5{s;i_t*>1D~NsA?JXN$qgiX4c^AOCh{dn>&b-~Q4eF(gvf
69146 zQaJV4+W2;><Z*4ibRVn-B=Yw1S~`;Rs8M@DG34<Y9mZy{`PbY2yA;Goqf)|V@!26k
69150 zHu=ma0=ftwD2N-G5mXWKMSN#|Id`a&XaSp1-YkZqj=U!*!Z`irw}~dzz(z1v$I-}m
69151 z2&$J_9KlDrsl`32<-2kr@K-d62PT1=7g*M0qHsbms^uq;=O4_4!dYLuMX;NMh)bPG
69152 za6X4OQAnP9F4!%WBk!mc0JXHJ!!kEgT3^b{I88ERcS{_aL-a>r9gos2YzC`$DkA_6
69153 zPNABU&qVA$79VZi3_e2*<Wc$}CaQTW{EJ@E7n{pF8QJ0n5jw-5dQ#e*E{q@Vz-0gK
69154 zxG9=<GhT-EOR_rSQ<6DzI?!kdk6b+Q<nb&B57cD3xiJC}kB)-Fz9Ou7cHkNI#Kjq#
69155 zM{w8$Nrp@B&R}{|tHU>bApDSOIiKy-;j7(&EsegC@Gy&JIMI>^E6tZ}G{;hrVoCCx
69163 zW>fbxB8$^y!JeO~au&6aE^dTEZMV1K*XO)In|43-Q`i(%>y&FittXL9yVXq}<zhCC
69167 z0Lrowh&n%)yl*14medp*2%-<jH)^Lw`k_fIrEzaze&f5;qreV5)iG6&O?Ul+=Qm1)
69171 zgZ}N4^b1%E`nM+XZ|=A2-&$A;hIsqb5BlY>JBQWh;Ao2BEs7`>Lh~cnM#?;H;(&c0
69172 zS<1V4PGAfJKj7xJrZ4@_nbk~sJ-*p_*W@H+(L%YyFqGSP@0HBfbaKGiX*|PUr9Xu=
69173 zAik;f-GX-abpw6GWCL&P<{38jk-%Ox14uHYc-}lYf!5FMj%kM(hL?|jWBTal7q>d^
69175 z;b`MqD>;>81r~1n?gD}DQ1kpN=hicuEB&jVIy{p1xHez9-*D;O>VT2^a?(v~4xarn
69176 zwD*Cxm-~WAT!w;_zP{X7Z{zPw0gSLmBL+{O^^H0NGfDGihbR_<3qT|#pbNbF9w3se
69177 zi|f+`m;ke-?OfdFf8^8C8bvte%$MEkjh%O&-^!%c;)j5ACP_^?og<@pxBJLT=aF=@
69182 zs}CH%*QaWj$!hlc`-4D@i#$tLfL;F%v=xwx?D|K{MMnG5!dv}Z<Xb4`K0IVM#j!YT
69184 zbbx-W<F&8TtH4J+-4SZYR!3Fh9~!U?x-p~ckK98`_fA*qh%H(1TL=c|=uB(A`LM2|
69187 zd4l9$N-btGSw#MoW1&zX7<tMzck<qok#E1K`?I2^tiH*UAAG>@W_7zu86Q&+<yXhA
69189 zdQ)`zY>YWy*^OXF6P^)os`ZY4_Q2t6pPABk-#>NYm5Xy%$9G{^$X`57y%TF<&W@b*
69193 z=UB%x7YpZW6HCMWcF$n{6ZH@_<U8siT+cjv`yRrZUjx5<jU2%$*!>-oHfth^Q@v?p
69194 z+9VQ;0%mpB%&hS4AMcu)CE-{;>yXhPi3(mBm^)yMhGH3glyRS4!Xw<B-wCxVP>)m#
69195 z$-GS960h){gtAz>KQiO1^ESJ4`{j#vdt<429vTucpo9|cxGYI7k9U1Euv$7B91D$+
69198 zti^HAwWP4r;9B+$^L4`lM_&|X(<DVkgP}9apWN=&D$W-amz5>)%w%ZXCVG6;ozeBF
69199 zAD&%2I;)duHU6d?$gXrweE9xQyT=FqEOjrO+xwdLpx?cQ)%N5$-=h9v{5P6fZzF)`
69200 zW>`5YO%w}|bYUAYIH~vM?G7_d(j)+?tZa4UGl=bM-IxlG`8HQ#8(q$Y#$_w)AUe8b
69203 z%M|6F%cr+f>Fs!q$8jqid^mc%(j=saJvR{w1%n&J7uo2=L(X8dnj%Af-+1iju8%=&
69205 zU&It_5*vFxYatFodvZE_9>=6}64HY3WEWE#lv@1u<Z$g@d{N?@$>~~S)?$I>0-g>%
69206 zx^wBq*Lr;-fq3*3qKxm=B|`a3N;orKs!UkH!YKe@^7pQvdh_>;?vbywKD@p>z#|{-
69207 z9U-)S3;HN#$EJZCiUM%}QzXc;JS|UqTs=87`=zjV6Gm4Ux_Q;4f?Fh3NzOE`dOcp=
69208 z5XATO#ta_LaNxa?)`Bw7n<2X`EJ;&-w|A2K4PFjsCd%i1UJs@C%upC_#kFRQPd*=*
69212 zUm$<Qq(m~~#S31b9i*aZ$6H0CPvrlY_|W`tpNJ9yqL}~6R%*u6Xdqc=eIi{uVSbx-
69214 z5l9Y{91zsS%G&8Sf6r()`P{}QIs@${Cr=`m{@k_aUwbw?haov=9MO+p4&Z;r-<YXe
69215 z$b$$%b^1KcHFa$-gV~kDp4`!1RY^l)hOQ950PIC-rrwyb0HN@di53@uP_B<c&f&Aq
69217 zytwf*iE$MekUjv^Bb{1eo#tx~&y|;BVlL%H^3ph`?*Q^zhVm+F^14&rsp|B5oy+R-
69218 z{_@(zMeUuR9vRiZ;RLZHvX10Tt*J?i21jVIb@Jl%-|nZV5^<lsQyAo^%CZ3bK7bA+
69220 zmbCa1ag06!Y|T7m8O^4hW`kwqP?UMcJb`e?upJ={-jSZ(AcjMae!9`;H7|SBi=3>9
69221 zf`;UANI~M^t#;91`1HtQmm-Fb?at~TIICGBACa79NzVI_B?$<~l6=XaB)xa}rMaae
69223 z%9U<11euTD6dADjbz}2+8g2fKbbo^<99-g&cK3K*$VWKF1djm4f&Xw@eYNUTRu;+s
69225 zqUBPwzP8`MB&-c(loSjZ+3ohWz1=$zJ@-lWTHU%c3i>aBGsN@nB@XHVuo?~ETba-!
69226 zZ~P`JkdjE?WCVH>5ZHBl-4x_ioi<kHcyd-d0l+}iDe!~Rxlg}!6*j-sKX}xWlO}#-
69227 zZuu~<prhTkHziWqm^%95Ij!f7(0kr~68MqB@HV_Hlm)Js-_~t-PRIJ{;yiFMhn<J%
69228 zTe_It5NsHF>_yUA0VWmzk%!#Iu~`}g9{49AI?a#5OblnGv_Td7w8<F^E?DEWRu-tR
69229 zc4l;k>^B2Pw0`o<-$Kl;dQ;4JKlao9_*{6u2D;*h&*ctHCHflZG`aq7v>(WI9m;hD
69231 zSxMxN07IOf0EXDAYap^pXLM;w1>Xm?DN0>x$^Ijh2)+OA%fK#eK{;-qtXO$Sjt49k
69232 zs?N2Qg*o8Kw$!b?<TwBb2j|J$t}73JP-2}(k>TPYOcs~n;d}*^-ly{>;IL?l78JWS
69234 z&}|^kqu7Zz)=QQj)YKW(xw<?*>pZF+rEcvjnrPtV-YKEoBGnxR4qz4X71M)qT~^~`
69236 zk^7_Ffi<H;<7x^YI6d>=q~6frPlenGjn7Buob`7C-9L^kys=TyWPDIMn9~6T>NxH^
69238 zxB!mp?;EuDxGGHToY_+MrM-XT++JM~|0L5snflFxGL5OiG?M9D=%6x1y##a}*n(r&
69239 z{5Ll%Aq#cz(w=5aoyXK;x77Q=h+rSx-@ELGdq9wo(y~!L6me^D=GU!mMap?1W`^Q#
69240 z(Sg7*_T5E6@?V-{Xj!!sm2O$rPQRscY&qiV1QM;M7cShgH{s;Bc9#rwnSPr3X>d;G
69241 zAe*-k>auyA4#%8xZXY0x?;4M{cNG!IgVw_C0eSq)ji1%#=COJTec#D>>AD(~Y%-bR
69242 zl@N%&p#-||(vQCNYHy&PuN~Z6*>|Mgrzd>{I8qPB;HcN{=fOGJ#*RX)Lk?n{yP!O&
69243 zP7Uffx7F?aUG#8p-n=s=B#1k|2K97SOK|qw$@N7Tr9b!lL$O?jq6xdpzqNUNWQZhb
69244 zkfO3RH*NA;bN<9LpCwBsE$Zk$PQaHu4;!gN1%LF^;)UpaQyc4R-y0q572MGV^d)ol
69246 z$a3u|G3_-iV*PCm-85mCLhC~N35{`WC2@wp?R#^s4Q|~4gNS^=WJK%@s_T9WIupAU
69248 zwo6}6hE5OI%}mDUK!DuMCFzR(`i-w6`b*hor3hXYL+k0EFzCt;9!;@>Y-MszKbVsi
69249 zE!had;mW7p`m{!fDXpH&PaauJZ>{tw%x8|K9OZWpFqrjxBk}9>cMTlAiey@Rd-06w
69255 z1su_%$YvJJx3HPe(J03q$90=YbX9gQqqzrP>2?&$-<R0faz}|;;W;E3a12+^e4|Ud
69258 z<<04UC(?1md1RM#2ZKW0iSH-gy@+ssEJ6jBV-`)n;gMWBb>lHKCo@=127LrYa~55+
69259 z{Tw+c+5wK7tC-0oMV|aE*4I8dqoiaYS)}7gv}d)snW3<1UvHnj^npv;8p*PsJr|fd
69260 z_3Hh@?767Jti^*GkL-U3wsQsM4NLvG)fIK+PI9XTxolTLxf^;w@AB`ogmPa(6$Qy9
69261 zL^)e-I>3vF>jKltgN!qtp(wS-I3w3hN;ETGC{J4T8kOdpAJ>>@S{8NWcnFeVYWJTE
69262 z?B=1Jjt=tBG+xQS24`yt8+*NUu-cu&;aGAk`8@m9s}4*z!C4K-T=g0d8cFJ}4o*WM
69263 zn_47s-q)X^dFxwuLr+0m%OAq7W3OXTEY*nz@LOI3my9KPx6t<yAG&vCqf6-Ft3MOq
69264 zc(*e$p-K|3UEy9V#tDfal<1R8sP0Uq5(&Sk-`_rxrc4ZOqZl%<+PyR5ZwLx&VC~LG
69265 z(gE-CCWt$@%sUkDxI}A@>8quG(AZL)fWamc`jysbxH&nrUxdvw-42>#-ox9IwvZZN
69267 z1-yb75*f)97;(w1aZk=z+oy;QmcVkIv=yNmQorg8AGqoZURWa8;N>m-V>YxzK@v?5
69269 zkLN0@$-_@nLb+(d699Viw>STQcmTv!3bu%)-YBXtoLu>ad-M1=aUB!9j%#xOc@SVO
69270 zIv4w^5PeEQMutZ24XemtjL9;;E3(eiOx1{xP;vM5|19t-Y>?IG$%oDqPv-j?<WpP7
69271 zmay>d3|6#?iX?-`NCWx3$Y{9?!c2jaD_bL(?F@)A)2s2tquK3LAE_>i3`u-;JT&1S
69272 zzf`JcEwBMhzccb*5N340?-;zJ+;)&V%3CA3Ou%m!Edr#mvI84Ad`)@xf3m^&9K4i_
69275 z$AKP3IdoU1WVzj4nWIe{Yj#FEl~Oop+{R?|C}@{u-rY@^Y9nDP)#3-cCo?wUV?86~
69277 zXdT!`h?g-Htiyckb*Q*HybiVJ(Dd(1L?aFgj^>iZzHjxV*^jMp@^s;zPdwA?{oT;!
69282 z)-DA8gA^9sA&=GON~PlegZ-v&rscmQzqvRrhk)N~ZWYx3`Tb@C_)Xib{bn|r@CN$)
69283 zL=0Gp$piZdcz>ntCt`T)4*Uet30Ys(9s7#-iIMVRRpFGs_0-*k>;c?`k|;*3B2Ef!
69284 zIns9S@)-Nwt$fG+qIb74@E1dOE8pH<+?B`Rf@(2(cRquXtlr@McPktAF0`+`3*n*L
69285 z+PnP?-kE1Z_Wdnh_;@|goqs}{!c~A>UV6iVuA9>;uP%(FFbbSX81PWQw+!7>=F_f^
69286 z*B`=$p6Nseeym+OiBlA^DbzWP!l~{pqN+o(nYjL2=8!5@E2>j%HhM9(-U$NdNG!*X
69287 z6wd6F!X_rfF&S6d8}fV8m5WD%u874Fm%N*)ac9oSkX5?vu7vH9GwzmCibL-O$B*Nm
69289 zq55&y--yjwh>C-m%K38+f0!d=m&rF33XaBceDd)9wA*oLG?rI9qA8iSMAh!hTl_q3
69292 z<H|iI9B9N+#gJVEPE1xUVp6rZ1t-Vwf;(;rRzv<)GF9+UkYp8%bF{!p@uJyp@5+dH
69294 zCIsAs5vD8VuEfl@c$<KC--ivo4St!@et#Pc-$?UU;0D3>UGBXPHU^LD?;}8{PrwUZ
69297 zhUahuAF=e!rPqy(eu)bB#nE>p8RJG3<TJIyNkl`9aJUwf-J;@@C*6_~&RZO$MX}nF
69298 zs>#k-QXb$pnm&h<;{-txRExI~3XR6qtlMOo#yu^ZVg;8i7-t#9=bSQwf83%^a4Py;
69300 z!)SeWNgRvEk_kD^vff^M6mpQ!WUn2iUl=eIb<et-bW>oLoJWhkYS<CsMZx0syQB2G
69301 zVScHZ4&kO^K@5B3Oo&v3pi3byVMe|Ue-Zy#ER5x_hu+{&dBM2I7{?d_XD;&qjl%IN
69303 zV<Z4y;UZTibIx=-Q7K1BK?n!|g|)ITe_}Ki@ij)_DkGuMz~XdfAwS!)TdFWqc<tYY
69304 zqwahx7>#vnQ@=+D0PBompZsRi2Jghs7hA+2-I!orz-R_%G&9O*#+D^W_A-w%z@9SH
69306 zFvvX(n&Wt-8?ZQ?VShd5jYU<-Yl;aY4?ot5rGkaBJ@H5<Jmz<pOdN-7G=5L+#7ZIQ
69307 zuU?wsL};)r0D_3r>N}U>-st+`h%H!?MYBafhWjs^(Tv0Hp5K9YhC=!M4(#C~=Kz+k
69308 zVE4f5n+V`u2xDxQCP=5Q1qAsLN<emfwYUEV-TWlF6Lw1<(3DDo&<z9thNEt>TI8lB
69310 zZi<=t(X~^xnA0<xW@DfDK=pESZ6fEWJo#X({yEVbb4c#Sh~~R)-o*bB|7k3R&Hiji
69312 zQV2DIr6VVsN-b2JvU7~=HaiIW;R_kT!4ug+=WHZBHiC!4qcMB6OaM15@w`1B5lL2-
69313 z7@)`IRH1Xi6N*_;Ug&!_-z1XwFCjf2!>)8pc7PL-=<+RXlm!5fz$5_(0{cY(lF$l@
69316 z%WkK~Lb^jgNrnnVJLkLb48>E{bjIcp&91SL9)5#&yhr}W-0=?47`o$KhueGI@vgz`
69317 zeeQU7Cms7<@h&$qeK)*oYyCFf1~%|C?DEG+FW5X{wTrX|*VENrzwr|-6+w`@fp$2E
69318 z8peSg>l?q+(5^XFHLnFtJBz9iT`LB0CD`ToTs{yFDKSOCafwa^{Tx@Y_(T!-vbar5
69319 zh2W-!OQDe9@#H9hCM_&Gev%H=otrkZrJ8UBcyQt{?M^Iw3IwMy>}NC}DX1`@2;(#k
69321 zVK0N&il%ljilWbBG({iMP&iEANH&Ci^yEQzW)-{#dM|em!W2mQZI|qEuT6LM9zQ1u
69323 z97DoO_0F*at50yiu)<~&*n!)714-y+!g#uqz14%1VK7*O3*!!l!NJLfv&neC<B*XS
69324 zfEb(a$)dU&8~`^MW%|JZ6p7jDNRK5-RfG-PGB5L!hd+(5!3dOzI|!k{Y;m?No6BH@
69325 zt>iZ$G>8Wxam}~=9{A<kC~w}x-uunEwGSI4F_Hz_$`b5LhLpN+04=AB339ui)K<Og
69327 z*+<&p39oDce$l0*%lK?=XSI;^H18YZMJSs>-f2S+z!zNu5FlO@Web28!Di&Y00f{Y
69328 z>e?1W0LF}vE#L=haF&J-%?MHMa+XG=6bcv~(U_&t@9Q<|u<t;PSrC;#Uk}0!udE0H
69329 z$q<ArHqY1h9;|V}nw%S%-x*D--WlNS-x=9170*|uXZIMefy1+azYhF;96R>2LAMC+
69331 z2(#ocv9`d@sc@Qb*8-V)9*6V+M>U7@HkmhZ!LW<vD3fBNXiH)(QQN6wU0e8Zd>RX4
69332 z&uD(l(e-Bo?e#_rzTvX^8AW|9_`7~Q+=8!rGlz@-Z4eI*d$R#wrbAh%yrc7Rf63}9
69333 z1c4_rI|Y$33u-Dc1`lVgl2k<p58Rl*faoMMda}2+m+%&_^Cvo1D}XyP@MUiBJ&c&_
69335 zD@mCc!phOXl_GRnTXLh8$|76_?GA;15Ay-7s$&=55Mlae)!30A1SG4J5;0i<zL~*%
69336 zxR33Qgao#=sacgCqGo$q#;C?v9)?kzz_2hr*VJMd0I^6j8<-p0d|_UV%{9XwHIz@^
69337 z?_6B01OqWUUk$qBd1Yhzq3MR-mh-49+tH%C{u4sJQL>tR`BV3?!A!xSs6r5NH_-Zb
69338 z@UvKxSh}OUP@V;07Qs-DU<}6b40m}~LI|yYFe|j{O}o-TLvMm#qyXPU_y0}1l0if7
69339 zg2UzN-FF%3lHqq7nVX?E!*tTvt~bM*Bm}(gLoi<0|1;pBnZj6xV%SH((V(eoclkjj
69340 z@Imtj`ye2Ed}sLMP&>dv?}HeMe(tV6X{VP&DxxG(H0<}fRHq`_^<-ufZ(4S{&b};C
69343 zdmd(P58)UbZ2};Y87tyNW}vtU<AMm=j~54$WqPSkO;)__xY-u>z(kSbXbB~XXbUS?
69347 zx(cyC)Tql6RS-+Gu%|WSW6njrB!=5zstX1aQGkGQUIHWFE2LqfTxb^Y%dkiT4l>L`
69350 z7ppGbPQz9i6GfSL2IuWLmxJRe3LI&cp;<ax4p`kun-Z~!R&1b#TEZp{Ttgje6>@&x
69351 zoz+n9j&0N2Or5UB+p3x{TfaZGmaymr)DiVo1=NVdak$MZi3v{tCw=vNloz~(Q#&-k
69352 zVwsFqKSi}V{P%GltbL`!t9Fr~Fcdf(e5iZCXEj3!^bK{_b{yHTUg+G-07@!HOI1%R
69353 z8tDYvO8|PL0|Az)MY1PTYD}`kCB|k7cS561r)#7RzBSu9PKU~3Hj#-c6|bXbmwpI$
69354 zV-f6S4I{c~R7(TL7KBOY^rGR~I0-LQ_kssP82lpug53wH?t>V5t`j%vU%&tWWAGfk
69355 zcX`ghi;C53;`@t@TGpW2hZhscM0eeUEmRA-+bt(4n4N_%z>KWjZ1Grw({YpCY%f^&
69358 zpttGwH(9K4P=Axl;aIMbYg9^MzsqSCVVY{d-z4{SIQx4X(ys1uIjq2>ntS*h(w_DY
69359 zIUS0j+>v3g)9-giq2Gb{)tue!cd`S1$NU5EJEPd>LHrIfOU?uO9k=JPj!-lsw{!04
69360 zh|j~`*6r9VAaVjur{cHz^RnnQ1E=#(GP=Et{*n0QY{xAJgoFBJDJ)yV>Mi^-%;B8I
69361 zpTt6NcDx7i&dhJ~egSAVwEQGJ7-T>f(9b35k0#7v2SIjn{;VTdplO>Rrz={}Fg8tD
69363 zz)qbQ7W29tGG&DP1`%?P?+gFO*(wZU5=#x2#qS^q^rgckg0`7rMXN_~MP-7dxYBf}
69366 z5|+f1knAPHUZQ3U=9`l}AHitznN)-L^&iJZMj12idFa~WlIZqX7>TBNRSX9`{^nZw
69367 z<c+WTd_He+bE}hdduIJ}lPOl9EWF+2baOUqFqnDlxkr*q-S71wuy^2lId^|AhYYn*
69373 zX0oC2DEH(n_xShV|BF^B7f&P(Z%;zo&st(qd~Bv*^CUuZK;O)?EMAy-N;1{w1J*Hr
69375 z3&c5?^&__QG@ptL@lM|vLWUT?2v|FYuVIk9jW);#@^-!%OVofh_GHPV9@QaQwrVB1
69376 z0S=m2s}Z$Xl3`@UJDcQup-jgzaevy9yL2(@C<p9OyX=0>Necu|&|=u<5P6XbQ+9r2
69378 z)m((YmNYUUh~st_GGMS~7X{vMfwD%*RyB5cFG-%%Vjh+u2Uqh>QI^e;nKjuh5hWs7
69379 z9Cq|4*&L3=hgU;>R}z)Dg|wJ0N-gBFDstRPSp~CF8-45jyB7ub6H{*f0>E_tFBSwR
69380 z5kx$ylcB-7l5q%eR{PfltFkzD8KWtR-oa=Z1_?B^1#{(@l-G^8uR%P>qBY)bi4fxG
69383 zmvWg%2&}baFTuTR4sI2Bn`J*cyk8&Imn&JKjxb!VMFh*WgRQ-|YqxGZt*_N4gFwE2
69384 zYqfp!-S{e5AwCVx=PB%4dgW>!CmH>qE`tSRa2lfk%pZE4)n4Dx-c-N{2CkpM8CZ{I
69385 zNQ?m@U^!xV_jy>Y2fAAvdIQE{3=344+jU;FckFb$kuZ*}t<23-%i&XzQ$77K-HCq4
69388 z*wI8|r&gGobtnPF*>=uuZbW8}`&bKbUE$iOn)M3dQ0j>nTN_6-zk3n<tDQ;aH4}zc
69391 zFt89gT)zKz-t9;$d^E~&$<(&wUt1VILbD=YuZuQ+%I&XJJWTC@TrTH~*+RY>Kktl*
69392 zyd@o{-6<v7)_M~E{^sA|Z4i99p{`<AI*MCW1QHxMtQiKHN~~HD($8!Dg}`1y`ir_P
69393 z&QnI?vwz?x-F6K40Er*k>DVh}uczFuw3Bg9$y)*vSF>_=l`tmL78`|b9-YuG|58UZ
69394 zNi-lm2|e&yE@_HJINlZIrJRXNB{sQ8z&1%obL*7o@(8}Roi_y<3wS!4F4luYCmZCg
69395 z=@@PES{+5kom7$|5mzvO{pU-OD<>(zoJ@LCaeFC{KQfy-ln#ccO(Sz&w4&C{|C>5Z
69397 zehl0D8AxnGw+P+`9>BrgkOM#8+36@=4~C_ao-ywj_;PNC!^HvAf_D$jkVMJb9XWz=
69398 zrWGXAs$I&O_+)aE2Qr=b<}J@2{{K1SA_qkqbUTWyC*g>-Bd$>H`hUO8L4@O<k!;B|
69402 zNzRe*65fc-+xaPDPerfgV4JG>$V0?;umU!YZFbgRhC>oLlEN!EO=ZDJhUs0@U2++t
69404 zb4laqkc0Mf>-_td9(dr_iA1exi`9X78(Ye%o!PdC+p^y2_dYbU^4_EG`(NgQ$6k7G
69405 z-H}1YlrMx1-T3Op2TpzM3!i^4q!Zf`+<eCl@5^O_MJaRjg%7Q4Tx);mL;Qby>~Z`L
69408 zaU6V-6__ct&rHGnA@6vhUr@TcvwiZ;7ft>+*dO5aVsL+=V{Zy~Dg*rH@7(-0uHe50
69409 zVli9CY{D@Z20szR!5YB#q@X_n@Sz$Yw2(VXxTj`EV-u^C!{g=!Uljn#qPI5Vv?L0J
69410 zjHs?eEroi)EH#!(@xvQqR*%MC2Y*L^ydOv>4I@+%W!K!e9-oph8GH|T(2B2PSTKNu
69412 zQK8L^Nl|U6fyC*Y_Z@LnYR`<z{wF*1Xa7yq8ba%ZpYc&r0SgIW=}rQjD|Ef?5{ku-
69415 z4dMs-_K@v?x`uJr+QSo>x^E;kvz^N>1;@ADAvYmf1LB!c-Xkdy*%#g@O7`j*A~JrY
69416 ze(}avJCCiM{?;|&{b#3-RUN<{A0J)%_wNO6=oo2kRGEj*GRyYuFMsCU`6J+4qxDfo
69418 zb1V;?vH+YY2mLIE@eIdb#u%Cg(GYZ|W}IedBeBui^=89U-~JOi?LFRXxNiZcIOx9j
69419 zdpGdq(PBZ8Fznco&GnU~iLt`j;#ny#<x|N>*y9Eg6)nRaof&ZH-9sBi6C4kEFv$0D
69422 z_GopoHjzt*0-8o~dubFJrl(=1UX`2eHO}G{gN@BPD?q;<8P}w9I6M06gRvZKr^8-L
69424 zc;Z`Ql~^oAQcwTx7prT;_mat!-MzMr!`Mob1NqCqicMkb*iPqYJVwxrio?_ozyl<<
69425 z%tGf6`|}u@WG?eCQ9#hJ<kg)+z`-)n*32|?rpt@d>oaTZkzzjRw@ryt&^#hQIcOc<
69426 zmZZpU8WCk7ynTJ=ZpB902EFcQ?oNs@fA&3Mi}))ni#4&uj^Kyca*Z6J-*yWJH9%%N
69430 zBw=6m3#j)Rdk%wN2?vI)uj6O%3A)=Ta|}{m?tv{?<i<|Nk;@U-+)S>OYt?lzu?G^<
69433 z@k(YSy_gCle7u@2OwZ@c?!-jZLOMPC`S)zO6z9xSn?L*;tHGW30KC5R>iIwUn$Svz
69435 zISLHRoPz*{W);|AhN77lFpR}vb@{$-=Pv_x2s%LGJcknuaR^$S=}tbIj020aC@vyE
69436 z#_s}T@?8pKvM=B=9Z)#rM+Ys8`|e}~^AN9499Y-{<nJI^rGSN2oe=eDQ4S471WYpt
69437 zO*2p)7~jBBH<V7boK1&8lr2u|6X4(xH2g-3;!$-4a_9!r^F|gG$cG}4B1Cwo2-nYa
69438 z-mzT(!TVSzbaC#Ne(qn*I(dIM)Ko&wLbT+noSnb)xsA`0M;v_+xBb?q%+ZCm9;!Eh
69442 zas;5DQ2x#D44|O!_VTIoIYrHdp->y!nP>mcpC8*X&eUJgkI^!~KWkXL6X{GgYMCI%
69444 zxa4!-9GPjk)HgoU<QezO3#0dDoDP-{snk-V`Jqp!+<jK7Cy};sHV`z5$-0=Z^O40#
69445 zaCkV8E7#<D(-BYn^`Unj^LW1SD!g`T>uTvl))@?WZv6Mj4?der6&?6zEFG1RC99M#
69449 z1g$5)J}0qcfkdIWKE6dSkH7$YV73zcJxDT=sN_S-=O$g{u#hW;Wxr$&*kAhTxZ)N$
69451 z8aCD$&7?UJmgD_6tgz7<4%k&-OC)eCQA^Z{1#tA@czn-L6={}U0@Bwo<lcM1>f!9^
69452 z_a2s2-0V}~&6+Mp;g!z^`aSs|dY(LA8^0z+r2O{D7URA8@N3f_ed93xI|C6qM&A52
69453 z06=(x0&A;c9c-r4nP>xl4Gb}G*EaL*#y{0-1Xk<Rf!FeTu{ePinT$k|-O)&B_><Z<
69456 zi47$ce@$g*4YQ!yG5$-K2l8%M+Th&`PyiDtf^}up{VKk$z3RHN`xb9;z0Ua**2Ws0
69457 zY8*&B&7-kf`?5IT&FZm;UBudWTQ9)hP5toi4^$)s=jyI1fk1Dr|ERvcqu6q1p}WEr
69458 z7?G|XJ-oHhnPjLX0Q{(z_w6dgvANmas+qfAbuU-l@9==XJD51$<J4j{zABl4$J1+K
69459 z*3R9D>Be6nD4mJXL6@Ehh__(L4Do4T-3HY^Lmj_X^&E6+TBVb`lS=1pYMZyKXLir4
69461 zWuVt75Rbh7jao+I_t*f?g0(-`>VKI*yfADB{@%~@k<e_PzK1kUkNy~jp6W!p4?to)
69464 zB@YPD-m34#6RHE*ouO?=a<iSONZ5(|UM)k=OU7tQ2B#_d<!(R+V>u`R$f&`nElj(o
69465 zK9)?Ofkra&b=7KrcNYVc&<I`-=3v+%5>x|Ej#zMpcPFxTi_64NR)-ji`a*eLoI4bs
69466 zv$S_Jp$L|W7D(D+m9q(#AewBXRZ;A&ER(A`2(s|j_8x=-;^wd3_#*Z<h_}$fmOAsb
69468 z*=3?>t0KlCK5N#Yi(xm3;`-nA$sy@7133^@hhkTq3Z1VyalEAIh*lpy1MEy5=*wbf
69473 zNVSs7Y7T%qAk}5C_RX+rH>D1b;%z)d6Z*ecl!a+=DaZ3ERQhI<p&6Jxx5fiBw-74a
69476 z7?R`x>cuZQQ(7umjhPIpjRXVf88!-e2T-i3#GO~lzoW~Svg%YEM`A?snS=Qc>$M0E
69478 zsR{C+-W#>Uy)}Q2YU*c3(}bx{*C{h^qZk@znLce#W&=>$|9YQl>%*Fw3vo@&1&;;l
69480 zwd;nDV8KVz3@_R!0HIl0DujB5FJJ|txbe@1%duA(8E2?0mkgG3s?F&mEpu%-Cdmnh
69482 zn@IvDA~ps)SF|5NR`|wF#{!&aUdksE;ShDJdf!mmiWx3d*SV-p*hxhaX^pW1^s8#`
69483 zPgJp~;Eg{Vk{ikGSFQ^?`>S<gT)qD8-Gb9_`zyq=K%2^)f*YJ+js;64`ml13w2x!J
69484 ziF@oe*ws%DXQytT!o;uKN!C)j^DL!-2fj>w9(=tlb`txsj@JctChb#X008E2hOJe>
69485 zNz`lC+72h-NFzNR$%8FsVM3C{7@B1+BR-wU;M*0tPxAjidv5|D*HxVf-~0A`srTx=
69487 z5GE@LkdTo4;fFw&$xIR^1hCbbbMJfAUA;-&GRgdZVq~Q5s#mY>JNMpmzH{z5-@%0E
69488 zoE1B#0c(C>zMX6Jl5rhAxc8dr$==hg(^k`Jk|ZyZ;-zjh#Vd?!Zc4Q5!s?7KSU*w5
69489 z7g;}c-ms=G{`!XE#y?$LQ|SUt{VIpC&nWe)=2o|o&}Z+HAK1)XEyX`a&><54+_8Pj
69491 z72CP?Xf~ts%LU?l)v~wO-@DW)Xl1LQO$CYn$`(D+c{FUO#3`gh{i$0n9^F)gnEhMX
69493 zNc=I>FNsTk%e)@H0(|l+8b;3#{cJ@Czy?Z@r@TMmFDy^9eC?2uu~VW7-ZsNuV1=j?
69495 z@R1|s6VFOy^=h@cwb3|p{k!r9o;NT%luY`C{^p%y=X0s5Rr8IZB=+pwE&r6NI<Zo-
69496 zch|0Rg%gF7_Q;k2O-T>lJS!E8SwCrMeTRrV)Js3XS#|*B&=}f|-q<#x%9U+3M&JoI
69498 z4UDpp8kj3&k?$#XieHK@{OENmMT%8(y+rbpg*ECD3}<-j#rItyl^hlUl_!1+@=yUC
69499 z`AkNng=nD^V>DfX6s0Ye4bYOU@I}H!wfG+8rL_}2Mt&ht&{gE&uBz|#pZ3%`&m>-9
69500 z;Nd#Ru|xlE*TF1Z2efR3)ChHzt;E(_2d4^dRp&IF7J=!mQ-yV)8P3Soi@$QEb--S_
69501 z1oGU@@+b{jW*YrX+lWqFC(4mLY3e#?90Bmmy`UJys6=479HZ3r&UKx7g7q#YlT-yo
69504 zCoV}Zu8Ewm%vjN*msYb<q8-Z!U2>Si=ljEvOEpaMWY(?3`+eC~dKr}mNF|k7#aCiH
69508 zoV}R&CY`g9_Fys*hy4U*7$%RnH-x7kDo$G7+J{VDf?b|Ty|Vsdy$5_vSB61%3DVtb
69511 z{_%SjzS!rLoALOL#PR2528zn)o<6(QU$BFeBJ-Th3q0>92mKb+5dj%D^D3~1v*=X&
69513 z0_zqi%(3(k=KTH!WrH7Ct1y<7V=fdnDz;@gF~>-E&|`=8?{06~LegT?pH*56ak^>O
69514 z=+M-RF9m04;B#}SG57=NY)oMpStIoACRS8Ns1I6-pyUHfUBg3M?f!IU$*_+r5{E^j
69519 zO7e`-40d>>xLM9|QnHor+w>Ay__kY#Nk*g0<r3M9#wKc>GnAZgYOyzXd0TR;DK^${
69521 zK1!&kqSSOUWvefkZ(GS=_s(sT&3bTc^4d5p=>-%t!-Rd+!ev@35fpTlrsy$U&1i$B
69525 z9xO>SS=Yx#S2?A>vl2Pgju7ND-Q3)a{z<1ul|rg8Qb~$bpZv3{BnV)mJlH0UFQ3O^
69526 zn2g~aKT@xxT}NclDCPi8<`kZ#wNZ&>@AAvuZ3p4&pyrQbMj-F8(R*Zi%}&iRjX1+@
69528 zarof$RPXuLc@oLqWU2B~SPxk1DsSqlU@k1K4jRvHY-)Khuee-Xn*i`mT>EQR%O}y{
69529 z2KX_`pf<_B^fguD!AV48l`=~!eG%8$Z?Mz&Fkw6gO10I@wsURxT*kJ9j)=!-+np|p
69532 zo=7@ZND8=jq-a!3BA5yl%$9tzRlH&j!0m$pl}kC4ORDN-T3*q1hJwyH)XQPszkpI`
69533 zKRSb6+KvZd{AQ}zNWqpoR)CG!Nt(~lq<IpLkuVIG71&!NVxKV3Qtr-|hb6M+WuTo8
69534 z9>}B*oH=-Ac(77T@6YUydkJ|(y8Mdm7=~78_SWU48#WK9EoQog6mpEzt*4vHQVKnn
69535 z=@-&tsmlnycCbhC!SgQ#hU_Q;Yy0>oT}k!f2CPIunOFCeoEXDgc2YD)jJfq>Fz9-Q
69536 zL7aMqQ5-#vm`e}g&!WSi*K`!1SBLFLbHqDF>~ncSNyt2hhB!`jdC94e4m-c>GIY=C
69537 z>qv7QOg!#;*S&^x%rOl@e`f?{APGpvI$6?e)XHF}OSWMq6_@RIYPoc;?-%V-*^Cu^
69538 z{MmXb-k0yK)|1I0*R#RDf=64-e-gnI6Ml^MMd#dQU*!N<qb%5zko1DxpIY`Z+j%*{
69539 z<azKk8G+#zV~HHC;aEm&0hhp{<5mRxIJBGrW4@j2ZKhHkUW-&C)gVB@i_<vY8ssBu
69540 zW9=*IH2fpC=2Lt<7^^0w5MH<C-e9LyOdAynuM4ezx_nC2j(E|b8#wRR)11EqrLBS&
69541 zLg}VsRf-!>b<|I~HPUs5V9)ordqWj>>bhfx_H3UR8*VkK8rpZ&X|NP!EmLv+N<&Zr
69543 zq<cl}_#!7B6V)EwO6a0l2pBuAC`q65GKP}#owQ*!Ou=&*vuGc4eAg3IPVqb|-dWGg
69548 zDr}svV~;46RV?x}NwzCJ)NSdqlo;sEj%u5r@py@ltcWZpaxfvw5=S#SpU9@-M)rxq
69549 zMyWlPan&3|4@Hp=lESx>P_=-IJT)@Rbx3Pc>%1j!9W7g0;<b^;!dgyjL#w=xkfz9;
69556 z_=fdbcV6-h=yp;eL3Yq>x7>8Y=@Un;*)hFkm~c^9|2kY$Bng>rny82DXsB@fCCwv-
69558 zHooVcX-HgB(0up;P2hEb_ZpnxsH&7wu$401svT&FMqJc*Jsq2~T*uWxFS=%o@;SX5
69559 zr}2M7Wi*0zv}dw50BUkzClYAAf2rRvA7*y&c&X!XwL;GDDkIeq-y?a;LX_AsDhMn2
69565 z`pIA0uw+BdvfJ3_p)_Fm+uQacX8@rKtzkA|s<z2Gzn|2woh5M)kRe!$GVS<C-+-46
69566 z5CNYJ1)OR-;p>Y&C^FE&`T0j%y>UOmT_KfZ4avS_T^@jst&^btu})64NmOt*1=2-p
69567 z{d|0~FW!ld(tR<8PJ|C{DwN1=Y-FI8%L*hJ9bRF&Uy1CkvQ$%^Y8#zY1=`B<h4YU#
69568 z8?bxWEAO6_@t<|Jl1S=gie+iBPG+&7WBu9xd^G!<nKVdI%wo|-n2%4_0?a<i$KQ)S
69569 z89tO3k%F~I^<juSwqOo~u<8wlz7feH$uA-TSW)+bNupG6*kC(LC%fVbc<%rSu%3m5
69570 zM6PP5S6r}&EU<wIHK&cx^tL7PE?T;~Ve+oER@oPp@pE-Yus5{k*wY)P;kw)!4CmoI
69571 z`+XWO+Kpb&b}9*t#)R@oO5-~UVh+Jtjs#{y${UV*MMx)q9gS3;CDo&c2yM{f;Y8P!
69572 z(cuG8?_`A@nr|Da)Z_$-1I0ZszrkgWi<Z|QttH31)-2(Il^G_yhZS7^vW^f-G{O(y
69573 z*h=d0#lo$8Z&+94R?_TH)~psUHZIS__{W#tLHP}ns79DOMV@A*xHc1|rEp<~9u6-h
69577 z-svraX)-pa8z`>rp+;`%8i5^}8s7=!2tVKyt0?=bE}Bxd6UJdRQI3l=)<q*ZvLSNi
69580 zppvkWyFkuu1qF+YAfE3^V3R2)+z!eKx8v}R!*jD+#s>R)8%wNk>XljHuEa>WoM7}-
69581 zT|DC#?_W+eIC(UES*k&X>CimYYDZaN8Jc+FKds~zyms5(-(8bi5a$=^%WH0B0t7_)
69583 zOWiDydc-j~rLJ~mwMAF<3Ll?u*Ka)A>Lo0b=WjXt%o}e%d3^uu)I{$MtsCs7-Hf=S
69584 z!C0AVRi3S1SoD-w06)2$cCt|?bw*S-cb^7beE(JR1AdH_)W)kxCRH%4X5nKIOZ)OO
69587 z)tAE?N=DFwE;X08ctvQ0I<A-k9p{6NvkLaHSi<!Ll~;VwaZld88D6nYzTY-9M;Lti
69589 z=lqS@-OFcsIYU`5>-*JgA0EBFXIUN8ablU}m}GftBzFDF(H9@@BzE~DX|bLILk)}n
69590 z+Par7CKrC%Ndo+T!FKB$uPmPNb!x(np>rfwvkRm&m(5TqO^oX7<-~OSTHiZ8f9<*B
69594 zefxZG-!1!YIW-^7gYYw%2d5K~TqC6avzdWoF}JL(&N=y+34Y<c?PTQj4g<p2@4JK?
69597 zt^ee2HqSN~`3zBw>>N6Q4z>4_<cvn0=I*vh?(Rf}VP^%B(Z@0P-o^afl@w(?Rg8`w
69598 z+qI)Q*E1KE)QTG{sb!1RjdNvOq5f9S47!T}P0WBwGFC)1{nBDYb3<f-3oJ(oB;<Oo
69599 zTy<lX8W@~*&4g37W3{-N80}T9kVQjQa-lp2sXY5A5}9l7<w1ye|M>7wLE{-B$gtjo
69600 z&?H{~yid+T;2)OCkwr&lrpZxah(}0U5;xX$l(@)wyS_X-DOM{QHY^7v)l9#3!?V^A
69602 zjbs-22CHZk&9tW+8)Rcp-gXXv^FE#=jgpWW2?VX8nd+$x^wmatMyovy5)1M>Efm9I
69604 zqT0(#vT7=lWGXi4UGcf7o@y^T(mqJ~(Trh+kHMPMR0gJgKe0nR*-)71yL*WH%@Fr{
69605 z@o?-Wda!(yG+!U=&t+^=6473~S6nK!8i$7nPsfNV>l}@3xaz7kksBTviq+4ZDF&7*
69606 zrnBBg3$S)P{wzN+qVBr3YKnoYkIr7#KQ=$Q(PUP_iReeQX7fbjELNKx+q-91n~x6M
69612 zZ=<JJ$Yqj&V-xo?LEO)Lt!k5H4BMP8Uc!?|SN3o?4Pih9UL6{bcpCu1WSO`n3YgRc
69616 zbeG|Vf|9~mteQ)v6>t&EnB`>j+>kzY>-T>2v5$W2qd&dy+rKh=;3FUY={FvH+gslJ
69618 zubCo;13+FDR~mAM-uFi@T6p5&NBCQV9?>1H7KV~y&m)X%+)*o6ZN(6?t$~qxR&(rX
69619 zxps%9%(xk8Xp11ah5-;hZ>7OiGlG~S8VVztx~ot2%eg0B@Zk?F{L{xjzW2UUzx1m=
69623 z1iS5WLw(+AE-NnNYGGba<-8LeM)!wwEKUO;ae=b6M4~5-PV_3<{pwTaZ^>s4%x#|;
69624 z9U-j|GUNI2F!pj832mC&1@B!s?@~<eVRfH~k-daAL;Zrku}a2iyCdTTbK}G?B&Wi_
69625 z2iVV1?zz3_R&=I4-{S*3Vzz*vawGWn2Pj~O0d`!SR<TIaxdJ@w+sB}Nx9+?3)co|e
69628 zW7~J4YuiUo9A^Na?WBFnZaQ~nS$x~tKohg6$y=Xs_WDyN=k`tBId!M-6vN$X9X4I=
69631 zfq%<3&<`wDbw=o|S&HN}JeE;3R`heaAZS>q58AT0BPOpA6JH~g)m7}w%{u^!1-%N}
69632 zk2id);l4xCIKl2INh~V}i6D(R&Iw|@4jaR<KAIbR=^=JIdK-5X#n2$wrHZ3byF_yh
69633 zOWh(^5{chA_F9qw>~K}fFyT|Rs+KI(P0Qfmu{fdSV-BmLSRb(9u^gHGIxCXl=ruA-
69635 z;Y5xc%ZQOW%^Jj2u9Yk>L_Mb3Ju((};r`2BjL4<)?ab&XY4b38c=Yhx?CxFN?H-h?
69639 zI{d?eS;*K<P>bj8y6iNte6f}>MW-lsHOj;{ve>~mD<$KFysb#K!b*enWI|2rl3mM*
69641 zC3CaYcD23vW+iLVF_}zl1?|J-mv2h8l@_CMyktscj&d~djG#(Mtyiy+eBervmz$+Z
69642 z-$s@&^9duRPs=7HaGJD>MnaGnPbt{#KdTsqB3X?h2MEj@$S+~=2iO}HF}Ou^9lp#F
69644 z@rVNl?{5%4XZ;DqXo=&7-vGzW@+bOQ#AFi-iQ3{JeP2u~lo$ST<ue@&DQh&no2gH8
69649 z@33vK*E9We<T{X}jU|F`dbAPRxk%23&^&q}I^TW<ty80-7I-`aB7WhWx8Hn2Q(!r6
69651 zlEiStBT@oKQ)A77R7fkl=9M{#v-u>)>N+bqEN2@<&IIRQ_BT9J%u$9>LFpxVFV-uo
69652 zfys#VBKYcRT<4W~F@<FlrXcn<PT*`-PBS9B>@b=s8E~n<7*>?OHpP7qeCd9)AH57c
69653 zw|%F_Fo=2n^PatbcK7ye6C;X%ZadHL!rjLiPUI-PyF_~HF$i=J53=ONrREm`BJgE3
69656 zyjg9>K3}jIu}3PV>ph;Kcsi@jj23cs(Ushxx-5uwSThMvmP|4AjRYwIQc@nPIg*iO
69657 zbG}yt@05$DR&)fsl3wJf-FzP>04^P%5%yDUFTv7&wt&QDuY);nZ<`#I(7w5c)1-hR
69658 zV)0)pLZJ-xYcc!N4!2=h3RB`bkaX;_Gg~8bv&O`(n%CvPLQeI@7%Ag~vlgP!rCCc<
69660 zlJuE)%*b*%KT+{vOUF|e-?Q4jcWNZRPh(bR&<*X=K9Txf%<=Ox(_<WAOK@$A#iSiG
69662 zhv>P^A$nwLPHdv2`mNDfdTc7}#jwsnx|;v#V;inOBzP*0Zb5&?z8+;kuT|Q`hDf-*
69664 zQ>v6;QDH{hy|O<M^Io<T2=UQAL-%pQb&~8z4})b}&Q((vKfP9eDTj{zbzoCx(CKzO
69665 zfRRs>CE9XGg-tqu8B#})A&E6CEeCiGPdL|TAjcr2E)IDa-?!}5`L<cDlnS|QI_bq7
69667 zT(UjIJ*y=0D<l$Mo77WkQpcR+aI&4kt}IAyfJbVQ!pOXxuO%-&x<)&yMeegN!rY!h
69668 zhua5ScvuO1>Rl-?N_%_2-Vl@=Rs+%=uuJ%2(Jb9Wd%zye=jQh9+&<W!JC#2bFQy|3
69669 zf{~6;z-8-R2t)|%Rgz343`XKvhGSvHa9KAgTj7dfg!1Ni$G*<`6~W)`=z<}7u$%&h
69672 z)u3B*Y&^%Ty-Jss>DA7V2kTjoSy+V}OINdKfxo31HeJmY2~W`FT-@Az{TZwIT4r)s
69674 zogmQtAe@5@A{-%L`}nnccK?jhC&Km^Ve-xJ7;Tb4{v&)IVG252xw$-wVO^HBz_kLA
69677 z?vMpO)E(85C^N#~T4c|-k5xS-cc>ufA~85F(GV<A5DWLL$M)QLzAUX$esO4X%J7wF
69678 zYy_}|$Wp@-ZvMiu%`cJ-y|j^0xaafTdw#7;=G)HpnXTj97D?K?MOs&6+t;>Du$!rE
69682 z7#$>m=Oc;thKoyDzPRM&MrQ-p&bNc1!Q)2`&JCU(I^9!)1)0yLeb0?4tJY)pf)v)l
69683 zNE?*@8#@bBfQ5k<?G46!$KaT%6(e-1;+r=*Azz@YcEX^m77%*0Y&nTtxo)|QbB!;>
69684 zcTS*_?c+4Ivx7v@I6Mv3WuQqq(d`HG!U{awMJj|yjB<5A2crXXv-_qdu9gv}Mh#Dw
69686 zT0Xwph)hWVEya4-zei;>k8Ww-M3R1({d3n~PQdLMh8K>tXrv`(6O)1g)Z(s43nKaM
69689 zgMAHlvEXiXlX}v9E|<1Vv>WeU-lTbT;y(#oM0x6D!!Mo!32uC`7yu{M$?<o*p$yx!
69691 z{Ic|ZeCg3kkAj8Yhg2kdk|X@?F!<WI59`5)eWz@jR%WKvY504eGBcx)AK-5g$#XCL
69693 zlqlWci(v|)ADQc??s?Ho`7Pid#jZJdU2&{kcI3C?+8f^Rt^I*h-QE*#43xKKbIp2+
69695 zlMOQ)u9JW7&-Y80UMxKuzX<I?KYX-^nOX34_JtW}ReD@Ti)>g*+022WyGO*}5D@x{
69700 zj>Cx(cxY_KOzTN7I8V>x)ARWBJpO-a9vSosgv8h2ohXAE=!Q?nX<^sg!*#;EP11K6
69702 z(|J6~+#Lg1l|!4t0fMa!kB0gE#N6Q4$s<m0d7yWE$o?k&!gs%mM-D02G><QQaN!B~
69703 zGx<^{Kb$E}WDbw@$7im|)b@-F3`nIQIhtnd{!GvIWHNP|Ff#7-=3`0oKhkqP_tIa;
69705 z`BiuC#OUDuoyT?`8yji#qymFSJMfOM%S??FT7;y*W90~JlASW-hv%MA?2VS*fSU=R
69707 z*SO{-TYE~0YCRU;ef`8W<LMO3C$@~YA9>DSu`jm=PJ<VfHwrsv`#7l*kJo&bCAE1{
69711 z21}NOSBi_pLq3&#_(BIwQ`NvsKJZ^>wsNeHdggtv-12?=Yrp^Tzo>XsBgreARA_oz
69712 z`iwyJ?R?Esf_S2+XT1GGmfJg)kJ*W>nT(&x8;P8ym&!3-<)zWy-d{L&?2qrcXW_52
69715 zdjCAVf3AN2;7h-SUVx_1KOzkYpA^X%LZ>8zrfl*`%C&2pI6m<LB@vVSDq9E=4Z?r&
69716 ztxHd!Jbn-I;Bz|poF5&p!U7{PpDas`P#KqHWP#<Rn5eN5-~^3ljaqK>^ib00{C*Rw
69717 zV>@Qt(cPm2cU*cq-1C08XNmBsWhmiwLTAt{n9Y5N01BFpaSjj)K9Wwx9nvhFp4W7~
69719 z;jFy9Wp^JP+w)*-?}f1qpgZOsu90lo9?HL6OeGAC43XKFTJ;)Bn5fCcPDqP9Pic|Q
69720 zkzQe>nWjsBWf60M{J@?ARl$N+t2XPkN-h(3IQo3_@uGuL`hcD16TMCwo$%P2KI=0a
69722 z7@}0`VWxK`&3HO7yl0#||En%tL@&i3M!jffTWw&{$lekda-Ls+=hM22PeBe{o+K0b
69724 zt${?Zn-t=E*ixe0PCB_DR<UZmCZ||Z9K3QXqiUL|#JpN9kru$!#$v3Fm`g81D!Lcn
69725 zi42q>-NF&!8^i2{HCiZGCPseT%vc#oKn6BQre&=dDXVT8<}mA-P!0`__4N-XM@r?&
69727 z6gi7$OQZs7NtOhhAE`G;hO1u-lN0DN4*_(v99$th1qPWO)diVnIIG`omdd;++XHoT
69728 z+_5poaj-&S9JbrLgUU4pMbVA4Sg{z})jZCu+uKeALDBX4!|~k&bN?W${UX}>8G~cU
69729 z5)Y?cC(9b$$A;Y~Q!vMizrPS>96nq`MN)g6Xo`z^CCk#I{;{w&1O5vG!-<J>P39A_
69732 z@V{5FV002{Hm79;m9-e29h6NmB}g1>BaUYkIY=cPj#1)@Xi18vvYZl&izEKdeVJL)
69737 zhtU%@zfO7I@{VF8w>Q-K`yGbmC0?<>KUEdX7;I%EWu#P5v|_PB-pSX*7(XzRGm<K1
69738 zh&D7z>GFYVyuqd(m#~-0h{dfXGp5FQ48Xuk_BnW<o##Z+cgG039&_o1NCbQJP86Uf
69739 z`dD~`qx*!+Y=14If(uF-`_{r2ao3B>erIV9U-D6p<-?de`4{FA#6^Sd;XQo%E@euK
69740 z-shs2e2S;!`tx8tU`gN$-TI5PluRWtD&&&QR5R|N00)aYY-~I{)%GGEnvgA!CE-VK
69741 ztyUu%ZC6irvZXtcynRgZN(nu!h#Aey>Z+FWjFzA6Yl<Vqop(=jydOw-*X;wr<Y-aQ
69745 zB3h(+>AZo^D-Z^=LzFkM?ij55XG+<IMe;|*73oh)xhAwdW0=bmCi5JO2@*-I%6p?$
69748 zd88r@=4K_{%<kPPaimU;k4-gCa-?S$d#0IX?9$Hsu%oK<fKgRhS<nR4Xk0&XUc{!S
69749 zI?}U-nhHz>Co;O{Ds+rrMaNJJJ%lX4mr6G-ji9L@a+)tnDlY*-sJs3#74)>K!>?Qr
69751 z>%-+x$9)p+do$dZ+Uu|}OJJ;rQ&XPHEUB<sRE*$v1G%Nbl$J%>A8~>R&`s4@UQjeE
69752 zQ3NR0YH>PAx#w9eYe;oxFk6-^Ig5?B!V7+p-8sxKdQz+om0*1DfbqQ$#@A0+7fJRn
69753 z&BP1~PKf>``IH>K4zvcLTqLNCI|nzXq>GhOK9@<w-5Bj<vZ#0?wc9}$;!5lprc7RA
69754 z!9tfL9;TOPc~kP@k_}(Ts*2-@Hk&Eij^P9X#_+b8Gqb&02CSlvwX`TF@>tXbhZE8n
69755 z+&APZ2CInP!~~W1ho~JKh4p&x+{1kYZk8zkjT-{(k4}DNI={|`on3UM(^Z46=kRlc
69756 zBZPn{rmN#dsvVFlJWO{o(?MEnrz5Y9Q3)JtRK-<p1#s;o-mSo_gc^YB%LlniqBfb6
69757 zc$rs(t%<CkFZ6jOU2uoEjO8{`TEcY)n<}Rnq9J*v0Ki8#vpL;^<tNyrC-$WeAOYQg
69763 zb+eX|W;ytja(c^<Eq0HwfhOB(IZ3PSvY^|-foh8#rc4au>}ohQPkw<<HNqBCVf1G-
69764 ztTP+-L$FT)HL-APtwfE;GcXB^VK?S7rem{)q?odx3W_bTmMTdeOaq%1bTI|!kxOwL
69765 zZuIo?rB+plc`eU?RngEmsbuNn?a9~yaM*W-oDv^~wXh4GA&v^@_O=Ncp5-WZb{&Se
69766 z1EgzrHtO2Vt!nO#Ld}rxAXRR4&u$dDwYu+RQeMF?R4O6bCN-|5#g5$+YEz)yfh>J0
69767 zc;|N7>v77-q6e#o$I2en=CNlOahqq{BaK+H=#Te|Z5yuovD~{kCX-62YIrt7pX&}V
69769 zQjD?X{<vyM)TBxUbL-ihXen9D2b#vQg`OCwKZ^&|XW4;`3w;TeV?{nz9j?M0{xU$?
69772 zybOGMgF&iXQxryE#KD@8O;`YGJ;8JZRgN2S;JaR3VT;-N@o`qt4HlfXvE8*`qRs;}
69773 znu*E2ub3l&=j}`@iE#bAAJ)$)+!yM|eC$dXycsNE@MRFZv=#(EXh}J*H`||-4EQ5T
69775 zYpWsdhF$xw1-ys5;!lgfn@-EPNqXy8`Gj3jv5~T5kdtlYHH|fV(;-FbqJYi#NG{({
69776 z;seD**)3T-sM&#7Phi$_wvuz>eSz0YW1Fy+&*BWqpu%TTNl)Mi;7+UuxCz`Ip_|cl
69777 zVPGNDhHVL|bB{VS(JwOTrng(f9A@*yK|a=-*vF}?Aj^zsPqb6VFy^_u#8qn32CREU
69778 zk>W&M-G;u1%lJOP6Moy3X_F`#2%)VJ4T4gav&j4xqc>;POPpM5&41DENhn^czyys%
69779 zWqWu|{M}0ncrQa@z*buiO)T6kO&)=-jg2l<-jZOj!Qg}|#3Yq-EnVd`l@w?&T<Lgl
69780 z<2$w<vxm!BWB)DB>Yq8Yw@vQ-e7N`jWJoNy)oyqsjv&&`pd`?`)E%^ovY=W?u^~@5
69785 zrQ_ox%#F9#lSOP#IJ<7xwJog20KKS!9I}9AY$3uj=?!6-EXpR61j`JEt$oR}WI4JQ
69788 zeKN;;fhyU(ef6v;DEVr=oEDXyGI!$GyXHP<B?jF0etWw$&}Ww}-1YqHgVga`&R@UV
69790 z24CBopQ`z-?e&q-ILDZZ6ud4~w?I`S>WOiTvmbh3#2*`|&mS7x{);z{zGyDJ9Y0$Z
69791 zw@&-%x?3*LIZfh6(eE<PL^^8GT(TlqO@jZZWw?%9LRx4d42l}A(S3sSNGh09>rxzd
69796 zGK-B)srn(&0nkim1&;KaJ`{P6+2t33jyg|u)L8*65eE}gTxyp}LkwO0QacwBWJG$?
69797 z*)6-Z)VoFOh-Jh5TRtI{NF&b-C-#)8^@E*upT!(2rP31RgS7L8(PnN@@?aTgN7RC8
69799 zMBNu|N{D@S-%}9cMx`kB<Q6`r<dz!Cn$1GkUmg}=Jj2U55M$J;#;p28j#>N#Jj47m
69800 z>P1_T^y!gSqQk8kG5{~%npY$MzJOJ?swQ-!P*ihiPE4l-9&naeDg@c7mM>;xOJa-p
69803 z3LGeu@?@kF7hVJF?g-ecNGBFdQJ^}}e`-3hjLO+eid%Dd>*&RB#Fx>H3$KYD;tKk4
69804 zK|x;z8D`KBeWseP5d|r%Cr3cXS5T0`x*9T_CMt44S%ZDDtD6Sd-#-O8AEsPFZ(G{m
69806 z=EFGxG~{_H9^mV$Ir5jyj}WmDcL}6>wuWML*%ZQ=nt^%RSv4KeEax~W*~<4Vyt-@F
69807 z@`--MV8a=kfcbg@2$Ppw*xq*2HLJxXd!qkGlohk5OIEo=-xXz*T0nT}(im!m`mQg%
69809 zQW<Xn@um*yE~A^0EiNiNRZ&$(3RPYu3o37mSq}A`p@iy=L8XP0=#MYG7feVV#-6an
69811 zxl#UvQHtL<%(*>odq*~hI_s*+D&X7op-HM41|r_Nc+6(;?An}k%L(b|<gZERzcx48
69812 z&#y_(-=RE9H4`D_8R6&0k1pdeTfZZi8uHhI?*1sQURt1haMAPh_+)L<X5Z^Q4@M!)
69813 z8!j$A&&D5TqJG(@S?V^h@KM2G_^yXxwQDBfVVr7Q2{}M9Jd7%-IT{~2$M&LEa}87{
69820 zW}Kd}Z687(N4r1-0us?@(1*~kqGM!z!|y*pe*&*-@bfd#^`O33#DmiO3Hl!T4*E9w
69821 zOZ4aH>+l)U{N?8W%*5b*6SjI2d)Pt0gkFvmxCfz55z+qC2EImr>R&S-9vkjKuvG3N
69823 z+wEQBb~@Zpw=P`%hB97pzxLtqRstt1zaLzw6Ec*I-j-v}DU>s1et!EnIo?HYM-S2y
69824 zzcMc20?y$KPGJ!f-%5k`HS{a!J?LHNop9CTaP8yhZuDaG0`xp|9^Ha&L}$@Xv>i>M
69825 zNx(jRpx0_Bg#r{uE|Ng52-XdT|NHPWCB3C6WHFs_Y;-itZYBpo)x}hs;i2%<f0#xn
69826 zqq>){%q1?mUDYd{2Fm1YIUZIp(saXk2pU|P^H-~uN`%0~k1ox!og=omOPa5fZzFxd
69828 zsY-`e6g#Cl<XDni?tARtl%I9`sn$;K;DjWK0l;``c*x4yTD-U3>QNlk@U)WO?+I>@
69829 z)?{gFuJr6**m_6B#3`eZ$xIiEBd%g{qa#T@7c1*}y|*mIb<I{9z0GD^HM8kf)05-*
69830 zf|g9`wX{?j9!uo5B!Z&iE(n?^#SK|jC5~~dyen-@OM9nZ`V#itFL}v8|Ab+eWsUoy
69832 zX5#Lddt%ig!OP`&PE-LxdZMTaoF@6cWK8te?|$jR-6v1H`@lzUU<$CfC8?5`hzYs6
69834 zKwR+idD*KB#B{UA&>HrxRyLi>3R<O6(Gr?yiW=8{=g-~N7&($k7kF8-xUnFSNGN>T
69839 zCksqX3Fom)6}k!<v_=dr>}?gvXn&|U2^$uFA5!5B72O*rnn}W}Nr>G{WOJr{K_n^-
69841 z`Ayr$*0`U5bXL$WTxqN;Z_hI4WXe?sT68P=XY{|(>(Fbd7WKipzz48}4fG`XDf-{=
69844 zU1~H^qT#VC{lJnQrG$f`K-4GEWqn*tBzNg(%;89_@@r_$YUsR0iqq#wS;APC?p&@q
69845 zBhA@KUd16LHqDsmR-20_f8+)@W!0+tD!YrjtkF?l%{w*S92t!Tx?-zM_@8CjMEyBR
69846 zP%6mYz*c2+Z!I?-4BM_%y?yi<ty7IX+d%=A0!^#d%SzJLU7~YU@QIUp*=u=XJd+k<
69847 z-sD*E&U+^Bz+cczv!M)48e<1<y=RVj$xDCU%8pA$({gyu5GA747QSy)JfaDSx>Wc~
69849 z1+=9k#!X4oIo?r>q^R=zK#%zg_r7r9Zi{Erne!tr-S?(jq@1Y4)p9W8^Z8~h$PXkm
69850 zyJl!jYiK%`1xHzH^i@Si1=TqH=C`&-4kgEARkcp`zU1J$KF8#3NliIp0}AhEa%yU5
69852 zoP;L?^%?xcNb9-{Fp20rN0c;?Wo$DS=&hntHd9)>XgQ9VP0E35XQfQj&1P~KOPVCb
69853 zh)R_NKAo-%7R!lXG+!Ki@(um(_>C{0;VdmNnMsJCA`^Tz7Awi70DAKc-}}Kna>(%y
69856 z*z9+p3!r!>&{j~RMN|M~DZ;xCp<gGBYT@Ufq93Avf<gQ*0IR=-ei1-a8zo_@6F94)
69858 z0$v-X@OSao@R#sopuDrl#^1x=z<-J#NBhuTc-Mk4`6!Fu3-`_-AO9`>Be+8WW$=&i
69861 z{>`Oq{i{g1TgD>DIR9@cWBd*HJHJfQe3zuRe`?c0?ub~1p-Ld~0wD^3pEo9I<KK~}
69862 z{mqDao+Pe;a&F&6A_SNbF0hz9pNORk3Kk8GQFT$hU|}6VnW@JvfMC41>0PMeI7->^
69863 z)P;&uX6-!A`gZmL$`t&}d{3gr`lyih3m1BGO*V~6LArFIRjjiChfy*>7aBO3<j*0V
69864 zH~E86-N}o87T;gPKFTEg%!MADfB_^nIslTh{qoBW0O?jtpGOuMg|)^gP&RL8=jm8b
69865 z-na8tIh6LRmXAV#Q6NRbs-eIbL}ciq@ozL1SQ*=&i@%Bg9RCLXJbnj$JAOI-MSKf>
69866 z20n}r;ca*dH*o{U0j!f_wf~KO2v`09uKxl41N?jVi}<(UQ(uM8eieTXe-?ibe*o_A
69867 z2;Aop{5t$vxYL7hzX#!NcfmdHf;-*}_q`eJdJyh?5D(&hxcex4$0$zYBz#L9zN?N+
69868 zti!hvf(r-W$BzJpd>?%q9J8;ZKLrQu_rd-8&*)R=ljsBJedzVzDBKS|%1h8);2K<y
69869 zPJ$~p297}=>P0nFp~nKS9h-bDEL*FI#1#OXU5g4vYn}Z2nool&<9-+ug@1>K0mzSs
69873 zd$ATWH&-a}HT)?S#VA)k>>^ML?*pQRA$H1@Ym1q!o=1iw!Z%Wicj_wnHIPJwP!k9u
69874 zUn3WR%S0R{${OH`%$IXc!bxrE;b*li+x3HEK`xb_IwEqJv089K+BcBT**o=-W`3(b
69875 zn#-od%=rId@67|-I_kvnH^<Y{ec#g4Wl6pdNtW-}vMe7-Y{#*kq)yu;PU6(gVW+l}
69878 zk^+DJ_r_L@V8B@ajLz8K)sS{O^-jGm5ezopU^mqVJ9mY;6J5cfx^4f~vZHRQsmHxX
69882 zJ6d?4vG6+H*)?>&DY*$ji-|1luz*sBI*v9pfF%RgYRJOFAog@=^^TCmt2GIhXxI_!
69883 zIKQF~SZoHfc@x0Mk_?)y`GuZfW|CCk4ZP@2VMik6ccmHw-C?UQW;L6I!K>~Z%=$$C
69884 z`JY-E>H=NCZm}or7>~5KpL=hQM(YWqqXCoGW`^f}nlSKYFSv|ew`g(`E(SUp{5!Q<
69885 zTKS0IR<LCgjEzpOgK&+ou`^HDXs@LVHvlnP=ie!eW+D;mkUg6mZs-Vy1H9Ok#9K_Y
69887 z{d7FJt95U#F6FuIy1(oBxET%x+-|`aviIuF-%g~UYnRxa><ktfcVu)zcCmf2xyO|l
69889 z?`llD9D1+C;?e31=2*x%6mfV1L62K(5)3-0{l{TTdpu}^8jW7(Hn>A#g#O^A*}(f9
69890 zRxQE~-pIQ*HJ|@tSJpq?o>}RIJWlTIS(|7Ng~0kCHfr5G+;l#ctFuIGvBTNbO}J+9
69891 z#7cczkN>w=Z`68yBfy>rn8PMlTW_7Gx8WhC0lcyGYxO-oS4#{+t>E<g;tqs14Sdm-
69893 z8i~(!g|spScjv-yd(F~xFRufudoSNS(pn>EwR~Iyu`t>K={16qpVP|`yLvOH<pro+
69894 zH30#0!f}q?Fn-(!=$-G!iF>C3yjI7Kn&RMP^fB2!19g_B0@CXSeU(k{0{!j7%WlI>
69895 z+SpWTgVzc-yn;sP>#zMU(Fl*=sf)Fe8@NydJVvKpMhol*SBbT?u`$5i{;oIO`o>$<
69896 z-mvzD(>I@3-*e^I6=PR4H+ftfaTCmfyD`CTP3^R?OTs&(gSVu&Og-|e{x<2!Vof4i
69898 z-Z*lZ!{xN-4Q7|K?u~DZMW+iE!DzId`ve>j>k18frrIY1nIMi`KQ(iC!*FeQVl=Tm
69899 zckRTslez85iLvuz-~%)H0|$FTX_s&Cio%hx@$mFOaJX-OVd%i7;o!*D^Pd9U)0>W8
69900 zy>;u=$NOgeeuGP}!DHI`v969x`{gZDv3N|UkJSucetCPQV{FcP?(H_M(_l2mqwp-B
69903 zB>jHl`-IiY*gzbnO`mCv(%-g8GWYUM;1GDO19Z?=tWq)QiIjq&(n|;Zs8f0{PrVm2
69904 z5~S@?O{3W8bY$CO5s%Sha6p~Et3A0gldN-^jiQd;dkKA>mbux383(Ez*u2`EY;ss@
69907 z*Eo!Bg9{kK?M?ny&x<jq-6ZOu$xKfZcK0Xu9d8$!yHjbqD;Djmjn?TkdWfwpljBYP
69908 z)gAtj-EIo;hK7U&iylu`bmpoa3$l%Fof)4Xc>R*#<;E7Sli<}BwqGh<om{6HFWJi~
69913 z(Rclp>pz-mr8qwQ;(1huw=*26d{P|4uK-7ngky&SMfqOa(seToMI|3KnqY_1e)V0=
69914 zbID-D>qffSt?x-}t1;*Vty!Z3W)lFd?!NeqU40bEo&)`vtD)B%NW=<9Tk{SV!E)<c
69916 zgr>d(o@Dr$P22z&DB>sKB0c3`r$TL{g9;^-<{S+)ge{v|YD3#&1TlRgWePV(?3+6i
69917 z4PFORM>5y={l4zV^|=8T&Tn=)3ehH$&uU8=?5&=R&*in$d-Z1Abg<hZHbm@$sc6D&
69918 zH-~sK>tG!6`#J)LyK-SIvJNzbl8LA_WcCMw6zAW*_+9uD^d~Mye;<{Jc@)2o%5gc!
69921 z@5iPNCqqpXJN=EFF{cJQH;qK{m(_%$(MXuujTgTRYtd0|3s;ki<k`>X+v9|-Wd;Jy
69922 zW+e!3K}9?}OHaATnv<CA&hkYmB~4T)BEz)!l7O52B3{$k*y%CWiDFW3Z`c$-TD>k3
69923 zny%lLOpYgvS|KROY>THi5tmf6X0X8+3fSvBErKB!76+|CU(^<}THP9>-4i2bN7In#
69925 z_p{PtxG+G-f+owaR+D6e*rd!d*&$tK0*!DZ{e4{>3I37{PVp@b>D?uw8LiNaUbg))
69926 zgbH<a9hOkQY-x0O+C#${;A`x^1dD_X&EarTWAs{TqJCcwj%^!hQrM@>+^(E)7|@@E
69927 zrlWTB7gA_5w|QuAQ?Hsr)u!u0GrLDksM-r#v#kj-3vOV~+>KfXJshfok*hU&5$mQm
69929 zo-Pf&>TxrFaWl9vy*w&nxt$j<jNLIy?RbrzXiv3m9GKl9hCPH>&hX}Xu(6%Ygw2Uu
69930 zRA*F>t86O0`60c5(yA??(eskkRNBqW+!Z-vj?t@`xIs`hpKj?!3Ix#2YKjGv85_}z
69931 zYG9dWRc2M5n`Pr#X;wY*PefHTt2DGGJ+z;#-Ij<?)dZ>yZFqA-W4FcPH=3;y(W>n(
69932 z)a%Z^p=Klz-;@Y$V0Vozk!Vt*;eBSAYDFuow8Ik|F|Y+jH-$NN(pN@rrb0!?w4^+Z
69933 zgCt}64&Z5$f#4ij9MT^`LnIL`pX=)(wt50g@UOsDSE^;LOw|h+?nb}eP-VD{KBLZ;
69934 ztDVeHVe@V3M>=m)-C)RTzpxokdTqvPGmf-8Hq-<<yo7uW_0SU*ozdpFO<~WcxOA>{
69936 zN)GzlEtXf}3m{8<BvQ*Wy=-oPx$VU1u|>m5zhIi{%XJSE`PxE%mpYz~G2h^VQY48G
69937 zaTun-H2=~LgS<AWoZPEu_0o>RwpgIrZO~c;&8FFzEEA=kX0NHMr}rfth+I6lf%^b>
69938 z2wgqhlu}~CnP~9`luiVc*WXuhL2icYe_*`7&5SQ)nG+J@F>xj|gV=?X(px`@$z1-R
69940 zchoipdPED<oD08_r9G5=uXCJ_n<R7_?QS&SOIQLM{C@wWe=-_Y(yfYUm$u}8gG{u3
69941 zVO%HZt@bj--grs70dQUKl;|aFMIq7cFm)ywu@HammP_9%AheQvvBN~hb`e@l4YZjr
69943 z;Lr5V2%%rPORM!*gE%C*C<&Va-He0*mBR)N+Oo%{HErmz$vYBI_R+r01-Mym;Ires
69944 zt!9qD6lE2Iu}E-MoTY>W7a}Cs$V+<(B2s%`6I}6uRA;|Hlq{qbbQXuHyEzlt6tUrR
69945 zf2?xa-YL{=iBlK%0^1pAxFm#HuO)~=Ax6Z;U{BD3U-)#j7xxBDWHfvMAFj0BL1-xX
69948 zFTbb)qgTGc@=Y6?`O30KDAz4f4*%;b+<bxCsQ`92r6mC*6m;8*6h!A<_m^$W5Lz-{
69949 z4$qP~@k-8{b4?AjOGj)Iijn#5O7Ti~F#)6Z;lA>X8!);d!7}0ghz;`RKmUsNb>KHP
69953 zSp}Qs+3wWjCWY($N~lhzjRkRG@0D}JRpMW<tF+-$myPzVUXkB4QM1uQn(9rhSL#Cz
69955 zd+vFa>t)sh`AO19-OJoCyND-d5?;7p?TJA%|IRlycZ3Z!gKBT~B{tNQe%TVYCuiQr
69957 zeuGC}8}G<nf{O?BI^yHC5Vk~zV#G(jv^_he-*=e1JZIW3@kZ(Xy|R5fi7~`CJS-l*
69958 z=!|u#zG20DRo>D2t9gp5-9AgCHSQ{I_x*JpN9AUqUKDMm-9WVud5mk%r4F(kLF!3z
69959 z{Dt-eiIF%a9-H5L`5eBmCYa%+yO$T+EWDt<nF|@T==^8@qP@g{khip#ctQWOOVkVa
69960 z9QX^j8XNqs@>ZkD7d_7P=Xwtiy;x+sjZ-<<AHAUTi@|++c3(!E)Z^mui-`V9I;k5z
69961 zxqOMe$XDdDPSVHnm#|a$%H7vOWa9^+7u(5{_Qvl6w{mTCZ#+Uo-Q%{<Q$EJo*-@tz
69962 zc7YvqOf;g6YYY0Fc3ipJO9;wdP!?+Gi(?_^Dc{E+{fE5X<k`Eobx&7Auh47i*-{s4
69963 zb$M;6u{KwJwBH7TyYlaA+m@`$SggeL2()MflQW)6I-+*74Y_!W(c#xeH`N*J9;49N
69964 z<8HTxtTw;FU>B@r=@|*d<u>p-u9v$`dYRBzAN3;+*odnK#{)S_ln7S6pWsDP(7625
69965 z3NLd7Ppi&^mk)jp6_13MiYN|-mydm>hk5sMz44k5(Z2EqIMH<Z2ALK_NK!*504i24
69966 zi7>MAm!Ap{${1>=wnW-HV|!{`Mr~?%YmLUB(Hg>LlVCO2M`yPO0jimAukGvXug^|e
69967 zv|3(kGBOg`;!UE->ClS?fgbUy0lH+HOJl$qqr<G_H+9)e4u{+7tT78lomoSFuk!`Y
69970 z@sHLzv))u2<Gl%oy`G(`gBV|*fJUy4>);A>#;~)i$~nj*9-<pG#La&_2QUxVAv8S4
69972 zMNgz|f0sXGwA8w7O;MXm<K6w<*X-C6vDkDrQ0FfUSRFpEBiZ1ap12}yG9_$|kU2zH
69974 zm;L{=P|@PK7rzNV58YgrP-2Q3%H<}<i9>5(ro>~1a0~NqF%|FAJW*f{&5;06<we}~
69975 zkztM-o*J3z?;{OlYZIE%wGPZjlHX6IhZl7gjkL69D;?4;t1hKZM@P1N0;}62{W^pG
69979 z!+yJ=k<Pa7q|;h?d#5ZhL@pfJjH|Y@DW7-gO`=t7cZS?`;d+nW($FZ*<WrqwzB2My
69982 zR0)}M@wY3=H6`JA>9;lnQFpdEvUi)&;jHbeYi+MVZgXu?Yt;&k?H+fd-BDu+#~n8C
69983 zwytC(oav)7-#ifZG=~kzuz$4BJls0c9S(SS01#0YQcq{q+QQKgXp7ePo04K8R<doM
69986 zc-xjPqaYHr_02tjU|-BoA8Fm4^hfj_r!&9<zeg{cU4Dy(hkBD>5d^E&=<c*x#bihy
69987 zscmeq>!T(7!{8>ag`P)dC&&d15OTGY;p1%ok{(udGY>GrRZb&mpoMFR*Cj-a;8#t0
69988 zOlygCE>c0cCM`>{v%R%$aZ{f;?8aKmHyrk~C%j=nFBpwPSL-Zi&W804osEidOD+;f
69989 zdpx2S=r6O@1idW|1Z*a6*zZaW`E@>9h@GhwW@l2ri?edkm$-M(PBb*&vqkMuy_T~A
69991 zm)$nE@a~<pnVm<wmR{Y_@#>|MH?>op-%7rA!uN4zy0fn1F~I7B;YsHi8=(oi1;|Eq
69994 z8tP)b5nt;St-a%k(D-m;i=#2$oE#21=y?@=*Bk?U{kGj59oq^uzK+^ZJeZBv4b?Vm
69995 zyL?l!J8stN%sP+F8u5C`_~<34-y-90q9=FP_<a^LS<h+#I}DE<-CMnv1-MYq>lS!=
69996 z$t6!|7OU-a%hx$1YlT_~A);<2bOh;O{1>jj%v0ar+%;~ikN29zSa-auDc9@E?rdq=
69998 zE<&|NB%`)y$XrkFc%oWEoIDM^?&-8j^4KYbL}&ayQqhyPd82~H-x$qO+s|A-TiQc>
69999 zz8Xq()R7@ZfUJAl3J1n(x^_=ZHHRh=MrS%wU-ymtn#Ma=_$u*peLHSCx~KL0D%uLb
70000 z-o|DV&}(ko))L;iPm+-=`T7BT53x5hxv4t9qj~@}cAJJsAkl6oz*{(?);H7h&oqc%
70002 zCcCR`bE1FK=}@EJ9SMXI@n9ek_qYsxPeUOPkGjpx{fRC8iI%-?gXjpwJ<~(C8H^e*
70005 z(p}2()yp6j+Y}T#<AblgGQG*|_SPqY-Ki*wPPEJ&>{%FW3j}(*#U3YU2X?D{WPQh;
70008 zv%mNCV`FEA%{qbSld*u;;kSJ9{8O*XQ}>QeXn!Dd4iF9Q<hpYmX_r<y!%`-(${}Q%
70009 z4cnU<0oT~s)S0LuE6M-}NV9FNWG+faE>ekMa)L@f@nsXQL!xl4GzmM7b@h02y%X8?
70010 zeS-`8xAgW8`A!WdEf#BCBGzC})wYY`=81y4t*&k$-q$16?rv$?+&taYGZG8s`olXe
70011 z2d|HcVxzk?5~z3A4V^zFiY={UiPV07Hpb+rmf-gS!7t9Gxv|`Ey#-=k!yKM*rSL#9
70013 zYp{eO9$z@<XdG<zL1&@0ecz_~!nVY*!jQMOeJI%&3YlE#=AO2UpfP$xqlr&#-_z_%
70014 z*3Jxe&vpjJx7^uw^^w{%sP}pkn~!a}a%S6R$-jH^i+|?UK?`T#+}w8Q!k1Tc=UC2R
70016 zxnAmCz4#y**B~2L!)FOOAmBOaKAH_Ll{Ih%_H%)(WHZ@h(`R({)|#w-&H1QD8}(?u
70017 zFUI8ifA1!3?;~v|xwlBaLNu9-)L{DPfn0P0!z#mM1_AVtL%M_EmLGe`h7^_`dlj$A
70018 zDdn+W9+J65dMGAd)CAAXeKzW9h}YAbMughpZf417F-*!w(lYbA-GV|P(c>Uapxx0J
70019 zOf<)vtS;UZur}B7*bvOrYEYyn7HJB&f>DRZnTUkDlV-0TVTV<47z`2(?j$rgKxmMl
70024 z9cuO52O2@r6w=%PJIqeO*{0-2J@;qndRki)XiyB0C4q@v)<Fz(fTdwonta}94UZwx
70025 zpqn`&EjM!l1j2E;3}ers_G?R*4$^jG6-9-cH!4ZVmgK4I-^^hRzG&%O<HZVc@*%Ud
70027 zr`2S!TI^P@-R!fP5cbvB3|<p&^R>43YU-U<Q~v<*W$pqzk2HcwYj+3`_VAhdmNp_c
70029 zqGfaS7cRyVJ6SA@*m=AjF-U0@tP|_pPMbxmq2^LrN7u?TtH+%YB(J^ff^^6}2vIPc
70030 z4Ts129im=<R-?@xj`L!oE-ki&^k$90=k_|FOH)@jI<iZz703#`yWQ4O8)y?ldaWfK
70032 z9&%mED?N(a$b*qjqIYu6sJn)qL@#u7N)Alfe-VU2WV18rY7_*GC6H=MS_`38&Hgij
70035 z173~8844uqV!Ea=5psu}jyivR!{^OLqs?P?TH_BGjHH0Y-stwSIk7C;3GOX9dx*%i
70036 ziFm{UATB>qL@Xm*tB^)WB>fcKdMCWRp*YW%<hJ=jB{l2-Ou8$&o1+I>a_l@yNpxe8
70037 zU_wl|omMk(eq_-VnCB^5hEDnJ#<KS;lg4Xu34%pyHn?nJ19nGRItH53gEf7QsM+In
70038 zx;4a%>NHM4+uP)5t8eQb-qNzQ>2GSf+G6!NhW`PA|6Sm2cAoZM=GV|8v0V=Jk=P#T
70039 zI2NU2BOMA3vLiLSM#s0$Yzc?-@tU!Orgwke-sQF3ht?vUJDaYUy64~yW`93S#<vUn
70041 z*1wkYbpxSAJ@=-qpS02EHD(i}M~*|u-Lc4^!rQT3#M?>!W!{dvAyMV+Xf|+nJkqr}
70042 zBy+`%o09brZ_E+(xdJ`$=D~EYJEZqE_&oJCH(8u-j%78tbz5U=f6UWj^SL9w*4D;}
70043 zj3aK-@`6_H@p&y;LWk=J9ZrMy6OA~Qv$$QvyE7RLh%VEMo<fj}l4uEF;*X2o4_}m&
70044 zXmxhU3*u!j$OgD@$nSO9B|k``@PmqOP=yyHErzE$?P4-G9`e>2-Q(dvGU*O=Br<(l
70045 zEp_3BO`1-R!?h>cfb}75uuF_Z{T^4Uska9BTVhS!K_c&05!~KKc<kZA-2R+}?m?L7
70046 zh4zT;LHrf`Air1ggWNXR4-&GH7vz?ADFn7-MfWK*8q2{#)9_%z=ZTy2rjWy-v6!xD
70048 z=(VF8rQ<EKKNKO-O6>k|>7-t1ALDRw2Sc{mwDB-4M?9B{6l-8!fV3}i(W1G!3zn+b
70049 zKVi3(5{nTF1-%}Z!>A{sQU~g^3J<8bgHm>Z<lWMumB&*VTcA;_Np5rd&332D8}$Z*
70050 zPOG-9!ydC~{WblY$2A>3hqJk9ry%g(!+M?<%<f<q;hoxiPtPcwBM%c=pCz>Rla<i*
70051 zIR`!H#7>ABXa0|Yh{RS2eQ|^B60C4(YF@^63NZ-ue%6|3AQ?=$99FYlOK)f``!a0x
70052 zTjj}=9T|R0UA?1WIMW?<TD{)-Zk*`q9<0qLgH~&8C?0@eO=su6n(@K9s6(%tobu%|
70053 z$y{y1=WA$a@lK7GWa}29{{ia9Q1%-<Jo97Rk{{zCDD(1#fy|F_{eR-e(A^kst>nkh
70056 zL|^w<ICbSj+N0Hmy#8R+9<tigwaFTd-`^1K@;kGMmfqIJU~{l-xV`@cr_JsWL!vj3
70057 zeAa3Yh)oW$J5nR9`-<`#;u^VYbM_h{w-z!zYlx4-D|{SrgN+)X5Z~BKZ{!f^jf4SL
70058 zn+P{X8hswS)u`t}AS7$7<jr`b3qci^Q5QwHbQg7`#-Vo^9lTFxw8UGyAeb2#ZO%t0
70059 zwl!=Ik;RY}5StwgYqZ#;^#U_Q>Ctd_sH1HlvUqv-V*Ve^X3yw&N4AZ!+QNN-3>#qT
70060 z9qgf;XK^yA5J-wc&dl8?#}PNey;Y85uAO^Sj`Q3nfnJVlxHeF1Q{W2V89A=y8eoeY
70061 z*Ku|5GC8j2^6&;ZZs7XiSLC>n>qEuynBZB|C&$fPJO5p7h+E-~bJuaJ#5uT%TjbWc
70062 z2$v?3n&LW1Y?S1#kaT+LX@uL%EprFB77`mIDMv{-U8=Rlpal{xkhV^e?}Mb|B&oel
70064 zXyxVf8>y(XlZ||hlv*KpMpPq-kQUatL!{gZ*6t!HwajQ$M{rG%l3nDJAs!vw-=>u5
70065 zVzE{7oh2>M_^3=-3A&birwHe1yg<I`2<Ex{3_e7@m)R&57(7qDuO=hAnn9P5?-==e
70068 z%d}{{K<#4{y_Z{{ls-YmLZxJu$pNM12rEzJVTRFfowP#fxlp1u<;?*CFEb6Hc%C5f
70072 z5E`whc(TUo93Z6*v62y{Ps>cR=9xs%aUN$QJjQ5Q<j9&#zk@RWk1<^4$)}u8<@6-0
70073 zyIj(t>qy!OHii@Om?WKCe;Hh@)Q2@PV#?X$Y>sYWV>?PhisMxzpHhCD-TFcPy?7^?
70074 zp*Hx3SLx-N?0O>1?Ik{$1_(e4bU+Ubzz9sh3@pG3Y`_j2zzJNy4LraLe83L^AP7Vd
70077 z_JF-$AD9RG!2xg(EPzAcDzFHaz+rF%90kX~GFSn}!PQ_DtbuiK0-OZbfNQ~Z;Ck>X
70079 z!Mnii;N9R3@E&j{crUmMkhLIqKllLnTkt{fci=<d!{8&}qu^uU@4-Fb<KSNK3Ghkq
70082 zz`ud-f`13!1K$Uaf**h%f**m$z<+=rgP(xM!B4>x;Ah}T@N@7K_)qXO_yzbS_!W2t
70087 z5iY^Q@CZB#kHKZQ0*}M1;VN8%>+l3T39o_I!t3Dm@Kx~D@HOxhd@Z~Iz7F09Z-TFf
70088 zH^bBL4e%EDMtCcH6MQp#3p@k=2EG-(4c-Rd4&MRa3D3fJ!Q0`x;T`Zj@J{$%co%#h
70089 zyc@nBegOV0{2=^0_#yaV_!0O~_%ZnR@E-VacrW|}{3QGoybpdF-VZ+mAAp~QpM#%=
70092 z&%*zK&%ytNzk$Dnzk|Pre}I34&%-~#Kg0inFTiu~JbaN(6$m0kw<wVY2}p}{NRJH2
70095 ziMF9Bv>i>O88nM_pq*$Jx(v;s-RN?31-cULL3`0YG>`V91Lz=HK!?y(Xb~-;!{`V)
70097 z^hR_mdJ}pxdJ8&({sz4jy$#)l-j3dZ-igklccI(SyU`u!J?KvKUUV0FAG#a8AAJD*
70099 zfF49&Mh~HXL|;MwguaTth8{-$jJ}Tk1wDekfxd~pg}#mc6@3T&8~QH#cl15<ee@{$
70100 z0s0~O5qb>$2l_Gk33?p;6g`1{hMq(}M^B;uL{Fn%pkJb2p=Z#4p<ko_M$e-ELC>N8
70101 zMZZD6MZZJ8M}I(nM9-r?p+BSlLoc9n=sbE6bC@jLFd}PW9&50GwOEJs*no}Lgw5E3
70104 zp2jnH7Vp42@h*HBp2NHG<@gGGCEkPg;(d4?@5cx5LA-zu;j8c>Uc!g*5quOM!^?OD
70106 z{AT<Xd<Opwek*<(z74+}zXQJ$pT+OOx8rx?JMeq(o%p@@F8n@xH-10<0RCJ2LHu|4
70107 zL-@n^Blx5EWBBj!J^17JUi=CCN&G2%AO1AHAAbfvfIo{rhd+<MfWL^pg#Q6Qh`)><
70108 z!vBcBg8vDB6@LvsjQ<&b9sdh{1b+j66MqYT8~-c*4*oa%UHtF(d-(hKQTzk^L;NHB
70110 zhkuX%fd7b}$A7|q#{Y+3z~}IJ{31_Zyr%DFW1i<V^c-Ja$Lo1||G0@a^A_I9+ju+g
70111 z;GMjSck>?J%lmjgAK-($$cOkaAK{~XjIZJ2e1cE%wR|04&o}Umd=uZyxA3ie8=vCS
70113 zKgy5soB1vLR(_nH;3x6qj`49gG%cK1UTSL_Y@=bit!)VJ-Ze8N0|hx8mctR#w&jJw
70114 z%KG5`m6HpTGv?WARtU5vgZA0Q)diZpw&S>*B$v-G99_AlTwVs9rSgT9YnC@ml$$Y1
70116 zVPgK^!Fkd-3tQF}S60_aDFw8!N=ogTUpq=l8OP?2T|Zw$j{(Jg$~l80dy6p3WUzVg
70117 z==^nyOKWTMN9T_*aN*F*iQ@~aODn4~xOw@I3<`z$W5-B$`W;8t=Z`O}Es`ipTAyDg
70120 zuj*$`967N(CN)E&TjsAPSPLv(OxwM%O6urm=ND&=k$woxiqVqb$*|0S0;bFSw-mu5
70121 z2a2%F9>eVXkwsGZ#99S?=kf~9&E+N9&E-q9o69TZe=fg)z|ZAXN<k`*Ei4YLFs7M`
70123 zHIszp6GyCyS%Qt-rkp5PimP(2kZ@$$!lG7%;;;m}N|U7GOqp0zsWq&$N{ggHC>5ue
70125 zuc#1m-J(uN-Iw^TpeZY&C{49RYO2URDYGQy(l8a0tKwlf#ZxWL3SN|9yGn}6lrO50
70126 zG)$&6(zuHHBNZK5T0L;$*x>5?{-p!bNR=scBBmTjAEacW*~T(V`c}=_(r{GTQ$aVy
70127 zsAm>VE-W+pP+4Y(sgg)fWtb3*P*WxJCPf0}8x`E0*Bq6ZB15DetDjbKxSUYT&QxY+
70128 z<ZNe!8nYtK3T>A)uENSyr7Cb&>ABSH?rY{(=a0-^Cyl=dRZ4+koJ?b;7fvb^i$EpG
70130 z=NI*pCywo3SfyEdCgDsvbfjrHMi7-^1~y<RuBWn4j4qulmYrF;RxZmpEXRkJu3B7|
70137 z3Ns62a*#usJTrfg7Mhi+3@$Cp0qto-?rB8oN!UJrh{Bp(^ViUTxJfh^pFbuCw9Lf9
70141 zogB6d>Szull}V)@Dm)|-P{ELeh6b}zK*XYwS1oC)8r++$OlYr6$S|3q4HB6lfv(v9
70142 zs+LF(9o7-mkcO&9Im(g@5)E3eA(MzHuSChLg7Ru`t01FK4Iyoj2t$hG%%muyGHpp9
70144 zDu_7hYS^rnV2dnD6z%l<(RF42g>*p;j;X;piwfMeU9BCvwi_kEp>4P4)paM-b?5Si
70145 za@mZQ$QBb#twejZj27CJR4HW5a?Rr_YwM)EqM>$6aXy&YRjtff72UEX#Q-KIjI!`C
70150 zPNKxJC_AB&RyD*z^{6*0HdbA1Y-EG9nW}-L$11rd2_;PxWK&RuVpfn<!cHbvIU^$v
70152 zYet#xWFA$e8b_7QkE)tCjFuZSDe;?BATyIPsgO}YV@j-3N+7Eu!Ni2V?5t=c{EcNY
70156 zVo~Mo+OCmks-k+zUZicwY-LomA)rzL2wrM0jqpt|>1CCC%h=UKrgMe5?X*=5s?0Gl
70162 zN+DdYnmy(!J4-vN%jB!v86vJ_lFw$yR4aiBRuhw~EMkxWx_ng%MB1zb=JHl0cywj?
70164 z=WG=-G?9vmMl)4KGB$M)%Fc>1L{cltq$`UM(WxvlS7k3!sS0utN4m<Uj9Fz;m#v@z
70165 z$E>5;2u)Zk)`F?(RtwchbJa~rLZOtutVSA5#h?gbD-tpl34~@9co4EyBvhrO$Es2Y
70170 z!&NvFl~ww{j9aSBGBOcXDZ_-laz-VBRqZOJY!xaoo32X9RHn>S)gqH-RZ7ZHrELV0
70173 za?~j$wyBf~+g;n0`!uR9%Oz!!TDMlLq>BlqMX!piV-^)eR9OLMRXajtqExY9Lcg`N
70175 zlSP*b+_hcRR=WzyTGZQNV|rQn>0()qmiFc);E1XUU6!igj2cX9<wfj~;-2&ojg+ET
70181 zWWz0=v8v}^s%K3pS??-KkqLKhVR7sH+TyXL)g@wh-D<F<_!L)>JhO1zpa3f$vk?W>
70184 zkrYCN1!(*HAw*Og5rxK-lbF8Nf(Vfj8J|HK{MBnGR_75J7pC}P`iPC8#a_L%OEKj;
70189 zmzUeg%j3xx%gOx@$>Sc9$5D{$7qY_Ob@PkE%LgTRSnh9F9^Z%*c4oWfP-?HUBV#MQ
70190 zd8lGUXGf<TcFCb!vm-Bu#TE*3I4p;9Pn~UYn3BV^9A@OOT@JHy*dd2<znyZwopQf2
70191 z<2z->cXrDCcNY5}#MkYgID*!Ww~<eZeA48TA)j{g$&yb8`E-&`7x{E!Ql^c5rRZ0h
70193 zQ}L}!Rz?L;lS*I2WI2j>Ml&;i?Bx8qK?;i5#dt;$Z#T-4zzQjWjJ5nuXUiIWQPfg;
70195 z2{sqs4VA&-8=}P_6yFb(VFlg`%Lk5{%V;yOj5P(VN~CFmMS-&fmr-W*%NVozN`zU0
70198 z-EH<Bw)|71iWjq`8H=<v;@Y;lJipFfm7SVjU07aUTv%ILb4#i0Rar%{;mF?U6Z?mc
70202 zINSbJt=HIys+@P4s=J;jD^pwT%JPB~S-(a~(XUfwm2~<LQFu8<<^`$T+S0XBxizZE
70204 zF7e`voQ0mf#2LA}qmRYD%0bS{8Mxay#N9#u0Cy+(1KeHQ-Q@dQ<PUI<lRwBkLH+>u
70205 z3pB_9lt+0Ep&>Lx;y0n2Nc>IcP2~F?bPq}SH2O4&e*^uLd_RFmE%Y<=D-NP(&@&|d
70207 z;StSw0SbEUl=d>=cJg<(@DbsY&PN5i`%&Q`;p>9mcs6ui_>Q(qo1-7$hx&(wCxl-*
70208 z?y>()hzUudK|CuwujRB_ZA7?1Xc5xd)53G4r;gC`LLd3$g)w1Lm=$&l`-DYd+4;1v
70210 zwfo55BKbS6J#IW}JnMMe@woP6_zvwU_k-Hg+B4+uEKLvhhx@g6g->bk4et+6YVXrq
70214 z#0_nRKEsG%I`oj?3d148amSY&kBesvrwpe<A2OUV+-~@Q;U2>S;#tE(hVK|2GdyMZ
70215 zjp5Js-x;CNX!INFjBVl>W0!HnIBnc#To%t7uQ%R8{>~cjGT!5SI&|Lnfbk*YBgXF;
70216 zA2&X0Ja00a{HCO-%{Ff8GL4xoGcB5~_4-Y>m~J<H&~%^W3DZOFM@`>!JZk!$=?T-X
70217 zP0yP-v)Sx6$IWeo69x0Md5?M7e9C;rd}j!n?=gSQ{IL1E<|oY0iqqy72&L?nkfp)W
70220 zu-#(2-S$D-eUXCw*R}^k5!)lS@7kWQJ!^Zxt`Se!t#+?tr{mipqbp~R*<0-W_DTCr
70221 z`$7Av{gnNT{dW6@?DyNhV*jT7hk-}!PdOg9|JwdL`wI^2Fp7H|F^As~^AHX=zU^pm
70222 zq#Zqud??}=C++QX9CfTaZgAY<c!%Ro#|ItvIPNDLd)TEVB_AbH`LyF%#~+-WQ}1*-
70224 zKk9tirFChY&w3sq-!G83)#Z03U1?V?<aTXw&ARrxj=Jt}t-DUSPP^VpVt2Sc=(<;Y
70225 z$n`nbSIGCbT|aa^>H4+n4{pw_cRR&L+#z?1yWc(Oz9N)!FS@UF-{RfvzTN#1_XFay
70226 z?g!luyNPCqr`(Ube;N5;(CL28{enm9ae6|YI!~J?=h-6O<=II-`#gs|>z-4d)85^l
70227 zGoG`ayFDNC+~@g%=PRB^Jm2*^=6O;)?Rm!YJI@PVz1QzedfU7`-hy}1yW4vx)Zsnu
70228 zJ>|W{dz<$z@5j8K^M2L)9q;4bUwi-T!#=yu@89XG^KbEW_zJ!$-yYv#-$~zT-&x;>
70231 zXYf#PJ$PgAt--s39}9ji_;B!h!6$>y1<#8{(JLm!qhg!bBc2jZizDK+ct+eqQq~!K
70232 zMm#ItC4NM_PkcyxMEs%nl=!Upd<cf72*2H-NT?yy5y}y0cj#bfIdpC4#?YD29ib1A
70236 zTBD(86R~e@Vg+Z3UEImt#BJejCKmBpW)a`aEaF?3MLfeS;@g-lyp8(>=;q!IdchyK
70237 zr@`~c2R?w}XaIf{4WdE#1htOvXVf~vC#iLWKd06aK1Hn~{7>{_^f-JP{S2Gnuc#G7
70238 zZej&DBYL^FiG2ErHTH5M7b2ma3v&^Az8{z5YDp+?cFsW{5BV6#M@v3D`E(K-1d;<;
70239 zJ|yj!$#)%B&u-5NkZ*d90{wQAR%qNqAbKhhy@7+4ijxq^y>VOv*GNJGYX{NW6&Y-$
70240 zr!SDu#Li-%a4qQraWSrjjgDjEL|iL7Zx9h*!^+u6nC3EEI|&gx%K>r2+z2;H!Wz<R
70242 z_$&<HA(l^Dpm@=qp*$*|T+1WV-a>M_85NAAe?)RA6$I`8JLT;VJ13EzWGOPtgCxWR
70246 zb{QwLEIC#-5-4**qK}68ttNJ&mQ4ZCJibKFFv&sXvqDJgMH*-bhGnWEb}wK%qnDph
70248 zWefyTvQEKgp0rTJ0F!vJHYdlNEMDeaQC@k)i7A+*NO;llN^N6y;J-A&vivz1JpxRo
70252 zW))`@7i(K!I#{kL$fGE>Eima(!Uj^WOcz0+-84l|Xt<5^C~3byWQ)#Pn$n09Brdfn
70253 z&AYrDO17buX*y5(@|1K-Uy=`=$yrS1eq82)lhu(ZPx&8VbeBeBAoOe`^+dUE+Fvo1
70258 z#>hyLBpD-PjErO?V~ivjBV%MFNivc!lH}z$=h?sebMO5;=Q%Zfzu({QfBmoPcm1Ay
70259 zt^3(~?X}m-z3$hw)?Pcv&o{{Q>7^n?F7{(^9pL*HXHi@Yp^7wL#5fNxCFFRcESaB|
70260 z!CVvR2mFJ+ugF}br2@)JKN-l99+wE;)X9=2CQAZ<4;uSext_1`Ij`$77Kib5f$j4)
70261 zv~Ihs`?-<}a>R8<)roDR0O#6O-K@H)TU2+k0ljuXhE$Z3%NA4@b(5s@WL=up8gT8>
70262 zeFfc-F0CV%pPyAuXU^NxEnXYay=#0~7pxT9UU;>$Un-;^&eP?464jHZ(3^M)IeF9*
70263 zV9XX~=n8t+i-!zGOVYBqjnKSDqo52gjlp;CxJA%nX@0Jfc|OR`x5=tyP}<){FyOT&
70264 z?)O?9?pI&}tq=I;9xlMe=^8;3U6z#}WVk1}f!PXt1UOv<W&>h9UhS6)-Re<`&2$Nj
70265 zd01*HJ=#OvCOz-zuz=vjWMr)^y$z|?UERueTV&zNh^%Vl|2GtU>Dfy;98+JO0`*$_
70266 zpRUPOK5nfnjhCCLsSzo0iOA42ZNctF8=-B|d<u&USU^3!nl$$7?QsGAJzF)++i4y#
70267 znYuUkc_D4TUM~HdrhF@-S3MiXYe&rIPFvcVmR2#pRK$iewh=f5d~R_K(s7q&>{}z+
70271 zk#1X!%-Kagor8MQ)>WO%-4NpiIl?|}QpswmUCCaC7kot}Y12H5hwQAYV3vIc*%i#<
70272 zH1J8V67S)D<4Pq5m?rWv+TZv#1SrL$|0=%ylH>RHB|Z)-`0P@j9xJRro7-MNvsE%>
70273 zTcSTbd`5g337+&cWdmP}75Y5_sqWbdG2gn#lh~?aIap#PqD0trX-hTW#~Oa7Hpdv>
70274 zE&_je^w2bm9@Dm&S3BcNZ?x5uYDqsnEx~hqYV-7x$<RTLUsGTWr3ETk8No_d*NX(b
70275 zJfk1lXCy}=V}r-Ce2%moRzHhpD!2eorFFf^>PJgHAmZhrd@scIrKD$bwa!RSXoQLy
70276 z!PCDq%b%{WB^qX|j6z?Jr|C1mce1r#g;i)WrCck%650@8-mJg}v}(4Ea&eaZWQ%@i
70277 zl+o@Lyl-dh^h?EBtMEH6sl+!yj%%6~gZtUnps{9ISD+8i?rbI2K?UzXI#qC;E#Fv3
70278 zOX6&AE66xPy0pB?E~`-%rvhiK#UcPMysI{ut44l3yt1<Gw5C}-7pl~Ao_*XPtCyNf
70279 z`?BRm)hsKraaNzfGR~G7o-LKm#j~NBX7zr9tZSrgl693=Np97ugn>&dm0?Lc)6X@`
70281 zNVlziCEQ+-<#W`?^pTx~Wjk{QAEkmbK*1FhnxAD`cNDx_#_2qMK|eLCbhoi@1;aiA
70283 zEDT=dkCD_8iB(}ecs7Se`&JguTfWDc=Z|Vsc-LuZTF>`)O=ff@Z6T(|0@Ly_AfsUU
70284 zqVGe#Z5_?xWJ~bk(PFk`;@LJ{O)cM7uH);a`VyD$Yvx%Oo-I(AiA&R+mBEPZk9T;w
70285 zEM3!Jr53i5JD2*FVPVF8X_(Oi-dRD$R&FD<Rl^MKVxk4=NDI94YGUVkcAEC}ws!|L
70287 zQGenR|I8_qGGa$uH{x=MOC`n!##l*JlP?$%*Mqn$VqHUA9&t-ZHI(sWVv4{hK5;Eb
70289 z2L|a`p^NMPKr>&P#cvm9$&7$}Z=-^{>tuO?XiJ3*L0huD#JXAM+3^)zZ)fqfEgl@a
70290 zy`FwsD!h8HE$O?r`)#?!e*#zCvaTBVsd}k9q%F5(az<PFs=HM`b&u-L=`d%}neX;f
70298 zP7Lqp2`I8#xo*Xn#r=<td_?79FH2Q>*h9k}Vop=?1saqT_eYRzvG6b-7x8B(lJZqG
70301 zLsJede-Kb_elF6U&pY#fHx51Tt&TW}@5Ax^`G26FuGo(s!C{miH<r^(@XoVCWCMpO
70302 zd~Z63SsdnaSnz|en8R`otNdryde8kRugyP>s|bk(l4e`wIz)E<hdS-~VO&g0{DE|Q
70303 zOh*pmJi*vWcJuQe6FJRwJdsY5Y$wm0&dw{H_P-C2(tE2%`9B&`Dw^Ps%jbC<8gMA^
70304 zLON}-A73})(2_$N4(&N`KSjBpqTEl>KGFWsLHs|I!$=OJIlplnCUKa`VMcULbUw!~
70307 z&Y7N^=hY{f^7Gp3|L1z~u`2%cQvbg&mX}=NwIw-}gI|W+<NVUkCYVN~+|IEEsEg#)
70310 zhb0`Ab6~!YG0(@C=VQ#{v27f7a$WNIe-DTK{~P5UN)-L%y`xz?b=;3T$>AIarjt0+
70314 z;?Ng3^yoJ+*eff+ZAz5<=kk6S5)-n{x$hI)_5`;*!Tp|Cz+o|mWgJ#=Si|LVy%Os=
70321 z<?3R(g04|l(zWy()t+8A7pdQxMy8#vEvxN*hBf56HP(>pK8i@@=&gmEH|c-Vtx8j|
70324 zp30}}y%P<PmG_uYBlg-7;<s~|^g6NMKs%|BYkrO%g9lHuXf!^0t<Irtw1s9coF-*`
70325 zr?`c>sd@<cP!3k`(<9W8@06-hoI{lTiI}voknc3+l1Qx)@8uKs3yx_hUdKW99=RnL
70326 z5ulihHm{VCgS*^P|I3m|zH_tsHN$+2anLXD_5f-1Z^pwaV(jYW)QQ{Mfbfy-)$D!8
70328 z+lVLZ)g|BmZ|whH>;G5v{~P$}>-g8*{eO&yd{6xu-p@WXQ85kUy1cB8aQYWz*2+uQ
70329 z(f@Dg|2Ojg*;Ax4rXHf-(2ERzMofMBGXf@RvOi8#ojr46Y8%QBU-;D2O6GKl?qe?z
70333 zs+ptjR@M1xI@5xtyVVtZPcyfCE&upkD&tk)ybb6Z`m<sRqAo&Tj=D>*fR-x)|6MLA
70335 z2u@-6e+idm{CM!;Y#9Ul#{JHZ!?=QGnkDr&^|DaUZ~Z&y-&@%KC-s0D%&->$GehVF
70336 zj=z(x2BovyAnFCq)=P-_R@bEmAZsWf66ZtC`Bka~e5soh_o?}72K!g>)t@t0SNOD=
70337 z^l3coU*k*V%3aU-T*}mq8dXzW{ChF9ANS;mpwJTd`mFm+rZ0?)yD0z4@&8-<`Q<4s
70338 z7|i8-Z&Cvo&T(1VQmJa?=Tpxw3*)1x2U1=x@a7Evf@0UosK^HQGlu8DsZ!46{(ml)
70339 zw?_R==*EUzP-h^SsF%<|CmG4SUwXQbScWk#{#NJ!RGX(h_j75^x$II;LDo`3!Yb=U
70341 z%;~{YAOFmu{iLn;sF8lIHH2HzHOlj!xx~M|$bXjQ8!cpcK)Md=7cZYQE(-YG)hq$L
70344 zh~WU1iMjYbFT-c(S%$ylKFg(-Sa#;pJnqq4nosi?{)QGa{2i@e_%6N6@I88u;rsMH
70347 z-HBmmeIvu0^i2$J*W7m9TlZ!-Tn}eBN{?bVT90EmSx;s-LqE^(1^oiU*_vC8Z^bhF
70348 zgZ=}<mHI7)Z|k=izN6n^xK3|mxK(p|^-j$#)gSAR86MV$86MT#7X6Jrr*g3*g<;5W
70350 zX1Cd`BIaZBv5J~KW{--QPs}GOZuXkJDq%h~pQ<F=U{|VK>l%w`fTdAAmX<A9Q*=>1
70351 znT7|c5o!$U`{~SU3z=Ru(<zAt)-r<V>1vV@#aubFJZY>*R-IOtvw-js&VnL;wNSfo
70354 zuSBb_ST`GL#q@d`9pFAImG??oily5_-YdCH?A@MX?~dg9sg4^MZGAY*^}{UAb0x=*
70355 z&I;o=OyV$=!zvClII!j4aUq8#9F}__w?99-#!s`>%e&)dKWyW`{%FTNoNfe%fqc%M
70358 zUScnI+Bj|anYH!?d$YaG-f8dQW50dKK5Cz|&)8)F9S8*yeB=i50`&s<fu?~Lf!2X`
70360 z9M}@r9@rJw8#oX+95^006*w121+8Etx+>@ds|RZb8w3l2&4Mk1ZG!FN?UMt-i>j}3
70362 z!A-%f!5zWf!F|Dl!6U&F!PCLgkO~Dtu~3yz%~0J?qfnDjVW?H8ZK#7BT|(WRDWP7@
70363 zs8HWfQD{(TsME}878)5E?G!i#p>d%}p{b!6q1mB%P6MYwXklncXnAN=Xl-aiXme;=
70365 z3l9hnj#%O0;gax}@c8iL@U-yE@SO1c@S^b2@QU#2@VfBE@RsoQ@UHOQoW41I!w15L
70367 zB2)ZhdSq5)Ze&4Zaby|$uFE1TBWoh-Bby>yBRe9yBl{u;BS#`9BBvvzQ56kDW6>(n
70376 z$<@hq$&JY^$?eHqeC$mgNFGiePo7GiOQsyli8zi^-Koue)W&I$)7NRw6yD6~T&+K1
70379 z8JROWXB=B@&$10b>Sco&){o4W4F7K6d)=n*f*-8eE2Mb>UpJ+Ecanw=SY5-%YoniG
70380 zDSDf^o#7e-JG_`RHBozmIoBhm4afh{+{W;zVgFtC(R(lwq2asr*IX8@v+BV^v*642
70381 zGLK-!QDf9&6h=DOdbt~Zw}vmX!))d>xpbOg3$~Yt3g`sqd?)f(N9j|Hl9=-tHvyzc
70383 zRTzt4i;mQ9X|~h{r3_}9gv?m9T{YIXa-F9dj3T^=HZp{-`e%&nP#*hd?5hcU03#;u
70385 z6T)Z+N~Eg#TaM|d87D+&DSLJp;V9AU<GTL>2Gj_RI=^G!86-3?u$HYyQq43x^c{pT
70386 zqp@s5lKXev0bZ(xPxlgG=6F6~jHwG-r=+?Fu6D4k$Z3du2em+BuZQ1AKJ}!>|H%G4
70387 zTQ(X#(!0{4zX*QT=|>s<iOLxs)*BdJqZ`Wj0MnH^!PX}F2qRg;Y-s7H*e@Z~8u_S|
70388 z8s6z6dJ)57J%ZuG8uROS=(e!XbOe5-#(S#Q!!K9UG`#k0pmrV5+>g4x#t20-eSzC}
70389 zl3tTqon^Qm*k<dOdrjYOVN9kv@X1fzE&Kv+aDfKh{*3Kvw3<_@e5v^-^bN;fq5JXq
70390 za~dmOx_OkT{|andsMU8CMtf>lY=P)j)-?=&W-+JG1J(l=hqE!7@wnZSQ+|&$j4|#7
70391 zikmYS#j&pju8<E^voI#{h?yXC&ZX-?Ru_(W+hD}3o56_9)As$Kf9pZu)9S`C^`(@C
70397 z3u9dc8l$YXzLVke?354<)i-b{TL>~XKnKtw0~)Ar>I#1y;`2K-#xnaE_Tu$6!!_4k
70398 z*$X2*%J8!$!rmF_agdh!J%f>-Zw*Ei{-vk!xyHHftDj)FP;bQ;nqgVQUgQ_ZQ_mD>
70401 z4MGzk4RjCCgTB^aJz9w_<M<aeOG5Ue|0r~|oZ<cK5tCYG8u9r<n(;%wHW=mUt-Eu|
70402 zH}orfccb3K=XdERMfPHJ@MGPdVI%gb!37JY*FbN#0DJUD-BjY6GfZL>P(3L0HU@Hl
70404 zv<kPrVu3=2fQncjK_-v4AT!?wRnSIICQEYU+{dt#qi5J#XU`8YEd9_&KNF2`DKxv<
70405 zXj%a?pkB4fT*mQb2DBZ}r=-2PqC09!Pt_9MxlQ`_MbSQ(0kDMYf2JX$nn04PE9j`u
70406 zb_*%JCC6MQb$ADQO+BQKfuhV60x@FN5wxw&>0b$j?-RMo`d6<sY%}PlhFizv3vKn8
70408 zr7;T>rC+v~{`G0=S@1q2Exl@C?5lyb1Ep9jXH-i<d+S)MAoqle+d+3wC;ey8q|Lfm
70409 zM=X|FbfZYoQ5O1ov9*`s>-Lo*jr##Jc5BE?o4K2QE9Xlg`OVcxujksAbIdQT<9vSB
70410 zW=*7@k-8m|TAi@i2GE^tmL7UNWE#B<`KI=Zt(9lP*801(U!)E5HGOGAqjj;CFzjW$
70412 z?`(%WSDS=xpEJK?_^<_yHV1S|9W1t*SogucDu%YAW>V+71wLm-(NgFj{izLpd=Xeu
70415 z@>7=pt9qr_Ief0>K&P-Kf+g?|!!*P8p;%eOGFCkX%R#-b4+y_7U(g`UR-)>!9}?;M
70416 zsYpoJb?-u}(m<5XvKKP&TRoOz&g+4E{yW&HR7KzmVr6a8nBRNYK+9ZgFbhz_xN?qO
70420 zojMN#i)@Nhf-a(3RGaEj1G<Fr=`w0YS5R~IHLj$qs1;pD-RNE_qWkE6dWeS7Fd9LR
70421 zPzgOsqv$buoSvYuG>#_I6q-iU=~py^X3~rF63wBPX)e7&3+Q*Wlzvak=nYy<f1o#M
70422 zCA~$fXf?e}Yv>(XOMjw2(|X!OpVI-hTC}dBbM<AqslH0zpu6asS+m@xi}gc#sD4<F
70423 z&_CBB^&`4OKdmR|U+9_o*Q~dHqnGI4>1BGC$uU(;zG-Y)n3kBSDy+-cTdgo-tFG9c
70428 z)75m<HFaIxNH@`ix|MFLJ8%zn*S*-nD$;|v2ZwU+jn?DzB-2Ar)id;LJ&*fuiC(T(
70429 z>9u-;-mJIjoqCVnuMg>?W`G%>PwF$e%xDub36pE`Og--3rrf`+O*_+xOB`T&nBJzJ
70432 zCnOg8tkp$(|BKHbfZe376aCy*e7hb7bA!c_{x-2G9)bm}uGbi=_ysH!wtzHrj>a6?
70433 ziv-)@6MZA>BS7_?hHX9;R<K$l<GiQQI?9!?gx}grU_T<BB_gD6iK)rwV+{M{da#TR
70434 zzil26dlR;sf&^vj;9nx|*=wXr1O^PO$e$a?Im}>SYyk8-6D!==bD9Oa!#pa_ekBk(
70435 zf1dbTLoJqty4XOo4KYmxc9)o2#V&h~;Yov)-op&^-eT~Cj>2bBe>B~oLk#90Z!v5+
70436 z>IVcH^UOKX?eKjsGHg4jr_5WzA8hmL@tA>e-_<O$RUI=*@;@u^dxkHGHd}ymO4)47
70442 z#6H2tX}dI_0)ap*P=!nMa|$#G4hR$`RiIU%ZJ<M-OQ3t8SD<g8C@?56G%zwSIxsFU
70446 zgHS=JS*T^GO{jgSvl9w+3-t{3sa6>39~zik8!8Ts2#rcE4~<Q#(1g(3(3H@0XEI;U
70447 z3eAm#l66B1LW@JoLMxMnp*5lPp-rK!p&g;!i3Op3p@WIy(2>Nb(1~~|bUIX;oD^1$
70449 zcv5(3ct&`3cwTs+vn9MFyga-ryw*vCH-tBbx5Y!@o#8#<{ozBh!{r&yr!1l)I#D}O
70450 zI}(Z{BDs;gNWDmYq-mr@q;;fIq#cK@ksguWk$#Z@k-?GSPF|!WGA1%UGC49WGSitK
70451 znG=~GSrl0sSrJ(sSr^$D*%H|v*%jFvIS@I_$MNK$$f?M=-1U)E)QU!;PPBTocC<mX
70452 zz-bX}7Ht`A6Kx;u9PJkEncN_&*9S(6qa&iDqGO{IqEn*NqqCxOqYI*oqsyWzqidq;
70458 z;Y>@6N{mfRNK8pgPs~cpO)N+bN-R!xPb^EUOsq+)Pi#tTP3%bQPPR(yOB_rbNt{TW
70460 zk(`~JSFJF)Fu5VQB)Qz#lH8VDm0X+L=``h-&2qgnxhJ_lc_?`_c`|t>S(aN+t%;+Z
70464 z@UUwkJ@QuvU5pEEL%DQ~TSd~KZp~e2$xbQuv(0oVt2y#l*Si=$=;>mFd$tQ(@-HsN
70466 z3bsURX-iiZBkp&mMo8;0R=U~6*p+rMZqYmid*f{vD~6szS?-b48+<<9h0XS|+lJvs
70469 z6nl#5YL~4e_dq#Dl;3e-$>gM33WmAP)Yrv2#Fgk%^(SdjUaA4S<P^q=7Q3+JPo?1X
70470 zKA-v%$JcV<i+@uNPx>wCsi)=HGj0vR#!a~E!b&N1F<Lgt#oD<}ZhvVb>h>x6QB5kx
70476 zx~ClDb44kvd|4sfcLX@34~0JaxUiyMlsvm5H}#f_(TKh1JKC0-Bs32hvJLWtR=9YR
70477 z@fXq;zZAN9C3Qk!HSr9=9>%>sf-gfO+>Vk1M)Yr%`j@+ybLb)U{LF=={X4<iYrq(_
70478 zcG(lrRZ{Se{)Q6iJNFUcsV4Be+`-aDuSFPP?S-|yYKZXuwP*!R1r5^{V3qCxKIty?
70479 z1jF&}yOP`U41eLm>Ml-U#_6~2lU!oH%bpZH>`s=uBZ2vHtp4m%zE$K2M$WF5{M&(|
70481 z<^I(-K&tD8E@W~XE46hu_hF%S$d<N()#{)emSFI|`a+(o>p*+@0e2(D*j$W!f8YY!
70485 zV&A}BnlCiDOV0m_-sgUKLNMP?u>FM887oVRrMCYPjrOL<{2JxYh#Z4#dDMmH_;W}b
70486 zDt9p=n?mo<RnT<I-6-Wr^qsmp^_j>$<_<al%uor|fHPmf`|Ijr&Y_La;gv2%g)c{6
70490 zrqFpi$U6663fQX&oYQX6An%LD|IWo&?^lp2s-MWTSPJ8^{UH@8A++%+bUJ-3vg>_!
70492 zU!*r?qOMMT%;!toE^-(1JX>M6s1L<rS&cO67|P;O-Vw>1FDYG-V^yTwb0VKNh_v6y
70494 zBjmG2u<<Q=nYp!-V6~I9`eX2yNQui*6GYcw)MY7J$GQnv`jyoDL(vGw<f+%7Yq&*a
70495 z(ia<~6xcIQiyrCXVlDTzurbuI6y8dC6}`-|8tYjePkkp6=~00gDaX!&MAy3*SJ~mB
70496 zp05LY^oDTRMW9=CT=?`#&_5N4?Qt@-K%}&id@#4r&*P)i??tvi$8AYre(5FQo%2F1
70497 z9i*jiN{@Ue`sjj-xeg=xbiddkcZenYs*73id>5l(&-k_hb}*PPRPl1^nD7yByHr|q
70503 zA28<KjzcG<Y7SQF;wE0GfxY0n@_%0rMSR{vsk-o!6!b8|+XZ$Pcpu~NggUKCsR<uS
70505 zwX{JGpv`(CZPV*$C+%UJ9ipRjl3P5P@l~dmYOO;$p>y?2ou_;2dOBY>)h%>u-A;Gn
70506 z>#n*7!+v^z9;}D!5>7RSak)jO7<-fTG`^mr=j%nB&kDU7>&p4wcD}b)AHZsIF6Wd!
70507 z$EguAX9`vpQ@hy)-%Y<Dx~wEsBK!*p(-&S0%MIA-qXeE1t-Ts4bs2m>wk`XMT!l87
70508 zByZTQhE8E=364{u>D=;K!o__>Zi`hfa`mvtPo2UXV<+)A4&q#Wm12qQo-bb_G8}p>
70510 z&4T@=-cMoH^o3LtsZV>c=<p_3>vCv~^CIofp)Fji_9#nXX1HoOIJ1^$+an@#>WVhG
70512 zJ5OZqt5Ub?q@InXMC>D!61{u~77O3SJ7l+se2c(-V66f9Q!Z(~EnhD62bCX$?qG{i
70513 z-oTTZhor<WM5m<Omn+F1tV?J|&^cPQGQVWl+#g3iq96nRt-evVI*&I#$&gVomO52b
70514 z98yPBrFv9PRinn#SXGyIO=@5sP}OAV(?-?ee6Ld%(~Z<s)u(QBtGa}4XY4knyQrUP
70515 zN&{)2Dx@LwuxienHBPmr2{cLFKvQU{>O#|Krn;GC(Ja-IWzz<AJIkWY>Pgx{Thut(
70516 zN?X-aw2l6u#?wdik($g>>J#-WeM+CIY0P{3)pN{!$JKN?LEoz9={x#fy-4S%RLx-y
70518 z8NL9a%H>@MyuX0;hKexGpmcz0F-H&Jqn+?IbG7MX)@L{yybbOKZ;#iLO&_}+^Y*k1
70519 zfBzJRANM%iPFUUbInJ?<P8rKYxNeSh)KoXMO#@S4nwged&-SLX>1KLzs{Ur6DK?|b
70520 z2o7V-1T#gB>1LLhYZjQrW|_Uk-eOjoHTFh6>Tyn6L*vYPvkBK`tJz_8n|<b>Ibu$j
70522 z!Rl^ntCyW;?XkyOL#-v&Dr>a0%{poAw92g6);v4c>T4BQgZSP^d$2Xyp3KirvP-O~
70523 zoEPrr+r90kb_=_;-Olc353m;6!@0aAT;3|Xlik&x#-(kr$M7-U?qO}_Qnqp4d+eFk
70524 zetVA8;-o#_I%6-gms(}EwpVa{SKA3Y*Uq!o+4cCy&*YE%dT@DMjy;&mDe?22Y)`Xi
70526 zuo4nhe(%&2k#1N=^tSt@SRt@5j+rI`w=+z-u;K2Mm1A28mcbfXleva4E>?v1``EsR
70527 zbi32VEX&Vj$EAl{%(1;B?<>C~X{N}#hwJ6tx#seo-V=BimZd!WrN6isOZo`!imGu6
70528 z;{p>U&%5w`8~YWwJ03B*K-Td-iMQd@7KJs&oAJJ$dR=7YVVPfkQuZ|)CT}Z#CV9T3
70529 zU`vgZH?&JcuMClW%`SJbn!=X-l|DeZ%vg9&bgblXr=*#vFz5HRf-kpT-h6E$d$=8u
70531 z89jp)Zt7ONZAkZGwIOr2_zzfFty<C~NeMiBDmib(Iy9BSTr8*b;!)NuvR-95a!`vk
70532 z=4*#wRUy|0`Hz&cMk2j_%s?*|$=b-17S`D+yz4|06tv(p*y8$Oq_NH$_IS+!K#sxq
70535 z4N^8ot@Lnd-At*&!xr1z=0lXuG7MwiTTzyYBc8rAY)R`u@@yNa+j#Vm-ir2`E3G`K
70538 z1z;QcK1sO`J*DsZp>9^I6z2N1nP}dUebMmNrxIODY?t;^nsw($Wz&3Gq5||6)|5G-
70541 z^Z7_qopoKl?nk4wW~*APY-mWDp}WG?W^Fj!KAyI>S(i@JgJE@ZTeoG~+hS{bmiBhm
70542 z^lAGz&qVZg)|1tLV0Xjn?qMIVu)IwhUpuqSZ8}$2-K=p}nEq+K%#!?gmi6u1-o8fm
70544 z(otmDYVbcLgtG4zNzu&6T!*X{d0F^8$9j)pOmbcz{BWtHX@&LfoO1(#kWj-+dr8k!
70545 zYbGNNy=C<f34-)*7|606vfk(plunmP9Ud@;IQ`EgpM2y)%~7t(6@D&6iL^|l?Mf*<
70546 zjJvcz__?;hh;MbN|2-lF##^w;1G4VpQdxyR)yRr!segZI?@+W<y)SSaN>Rh4#OINN
70548 zcaNclbTMMw^HPVYc$Q|!n)^jkt}9r&M_Tl-yg4uxIHdDvwJI>sYQL9OJTE!_O6qLM
70550 zyxU;4%LB6J=zzTAalM8v?<eQgkf*9E>!G_#&UGZ`w%E-@y$^Y(g0h~-LJsaJS)cu=
70551 zyk8MBg_0Xai&x=I1J3QnO7af$I6-Ywctbe-t&tk4C3XkJTTiMP`z1%&D><&dV;}x|
70555 zz;|MVx!Gq4YfPV0@OP&v=$Ln9SC(Sg-Qq@pU*L@zwg*4P=#;!GGE&y!zk;_QsI#P*
70556 zDeLdo$ZGX9rZF@t-b2$Zp{?n0eG+4w25<jfZrFF%Yvk?&><O`kGnjAb0v@4v%+-R6
70557 zjzYcg_+P-gE;L<Zz1Yi!Ej%hUohtP;#!36hyW1o?>ojESeCPM(|9)Rq^dkDl+c)zQ
70560 z>hHv&LF+H*w;{8DafVn0-&yh$ZsD?Iv_Y5u$U0~WTafkcRbt;p)HhU>s<Btz8U8lw
70561 z**oYi(aJ4EGn0Bo_2B>NvX5$Q4h2lBZJ5Jg-9JWArsaJyPxJ}ip5e6I3ik^aZ!+~~
70562 zdc^s$AJw6WJgwCnvtKy(8%9Yzy5t8nV7nj+{(r_@z-e;Xl4+r^Lum^>n#xWd7rAT$
70566 zeZ7o(o2*WN_FlS6b_aKu-e8#=K&%-p_Y#1C*M&BuH1jNa$gV@}vT|F8IIE}J`I=!m
70569 zv`(n07ck0=(Qo<hq3{J%70ToPejEnyd4dCLt>977MkNC03&i;1tFj(>f-CFA#giY!
70571 zV##;mZ21-$zAMs(W&8Df)KD+*QIn<YY;}>y{QU|wFZRO-4x>1X<*=9otlBC3kKHP;
70573 z8tw@|j{iWQcRpL-MuBq#{#D@L1#T9&R^Yz`qQr<iYss$3kaqQCJuk6`a1YbZ8yJbu
70575 zhMkaou&c`6*B8m&CUs?B>w5BjNPXGMx*g{~QFUak@SM6q-UI0_`&Zv8J5l#i_(JXf
70576 zKczm$rJ}rBrMw<e-W_}>8q8t17jzr`XBuZOS5XOvF&xHon9N}shnXDaaG1|wDThUV
70578 zxpa!dISwf=Xcj0s;s?hM)%{T04-Ndlb=J+iawIU`bbCKwJn3N>=bIpQ5t-k>Vl~$Z
70579 zrLr&NevkLelq0Yfp!=;EA$RW-*g+ucc(>H_l=C8i^YJdYcs0tj6L_D%9s(~D_;Z2x
70580 zbIP;wc7QT{1l}MJW$iUn<@_drm?e1{^<;nPI;m$T@i#EzY!lvYF|x0tmh;ix-f0G&
70581 zMw$3&AsKa0>~HjD>y2$Un#sMkT<v6Ac@N8+Lu}cdRA-nf%1Bd)5|pdfQXbnY`P7tJ
70583 z4j-uV1lgZXS(uMYT4Ut=YJuW&SUUxd6?n5iFTM1R^{~K|0$&v<bDx&z0P$B9-dSWQ
70586 ztpvq9&Nh)!%=?OYn&p#X3rX>l-ai7%19?Mi=?|Vsr=63Pc9EZsWr14ZKL?+FxQh{*
70588 z99tQ)#S5D1-yM{>1HWgUcs}z)zn>Ba8~x>SjDLJvChwG`q&`>!!SH^8UkKbL@C_-w
70591 z)^&)lLFM1557~FOC`?JJE-N+aP+eK2Q7G?Aw)EF(wDwnPw3GE39k4SW-AG;NCYB~Q
70592 z(=9AfZlj)bJIj?jsSov)6&?3bfANzCu%A4T9-u+krH`Ir$?`1yGV?a&JeEqop+)pM
70593 zE&jn<l`H67dXN3<59qJ-H`-1+X&3Fq?t5&hW4*_}=u7&Fj?%yBq_^gSO6dZXQ8}f^
70595 zuhrM->vad+QFp=~eEKGRyY9_?{U|+JKd#5<C-hkTq#mayW5+%Hf}X8k(sT67daiy&
70596 z&(p8!`Pg@l{r;8uE&aBBN3YX=*6a0O^alN|-iZD7^iKV;KCF-WYfiA@<Xe48f2U9D
70597 z@AVmdR-ZEpyX~2%iJ7=bm?Y+TO%+qs<eF-xx~XAmnv48(DOXs9R&%R`b)~;LrJZ%1
70598 z)!w?^lf7)W&!-vw_c_L8eV=0-%MkDT91Z0A94+Ph9G&I+9DU^b9K+??9MH=6I#)#Y
70602 z?SYcOjNrcT=xBblLv(m_T6A%AOZ0HGG&VoBA<-_;D={=NEjiN3&zW9jd6kXT2Ih6R
70603 zVpqEn9cFgS?bxhi+m2m3_USmNV@by;oyOc&GVI`}37-x)Fy_nA$3}j?;Y{dE%`*jO
70606 zEnQl=wsdRh-qNF`r57R>@-8&F(B?wd3w<vXUl?;?>V>%%mR?wUVe5sx7mi*iEsK=p
70607 zl{G1AQ`WVtZ&`8Kn6jy5bIX>Ntu5PHwzuqPS!sEsJg>Y-d7JXC<$cSG%g2;YEuUMy
70609 z+t)32$GB77x$aVTt-ICT>-QBT-b&S*C6s6P3>J%LjBn+@#+lC&Xempa)wGT_(iWCB
70611 zA#-Vm@lG{gcVVlztGPu5Ob@;jF+JJNjhbGjmx`I*EZ5_vuj#82rl0Arl4gh*rmC2S
70612 z*|x1=9x;!oJTuyiX3Keu8K-KSr_BUa-%K)-R6{d`ZQDj>n)#Kw)XX$9)n#Uud0jO%
70613 zOU&<8JM)HFsXCaq%{!`#S!Xt=o6RQnI(wMEnyr|TXS-XoRa{$OJ%$4X-h}TUu`P}B
70614 z2ie}yY+c9X+=Fq3w_=3B+$QjLfp<v!UD&(R+$}L91rC;{Zo=N0<|gcO$>-fApKAm<
70615 zlFv1gj|b!OEa2l(hsPy{fox3xUMdhV<K^zXW+I^E^C0#CWr#OYxwcqq#Q!-0YYEJg
70617 z-J{r*lzkec87T1&sH+5G?(1<WVXWi{_!vX4HWvwAy*%HN`!xmDllYnf+e=J)Y0));
70618 z-Khen37)13oF>?sDsY-S)kEsjDvP@YsY10?ZP!iUjj$GNtM;h_;*p%7n(CA~!&XLt
70621 zS#8#uKbd#UM)RK8!uZ4*H+(<uxXb{^TRI$0am*?1E$oU<V(DSE8`fAI#m=)-Rlbx5
70624 zry1;#&SILy%)?^#47PGu!P;yE$FJe@4gSo~9`5fW{@PW=-Y0fv@b+dXgzw2U65kzf
70626 z6jCSI3$Ml4_5Nf2KQuL-_TWVVYf1WR<bD)5ma>u(J6YgFN!M23b#i~IpWieu9q`Or
70629 zF?j-ggT1gYUyof8Cdw?I=DRmZO5kpy-!~KezM1It4L|L{iv-q^^w-FJuWu&$eKS$|
70632 zI}L@CFk_9Cba>x2PrjRi^o{v`HIZ0f^HqW51BrE(`wVXf!OuU2**y-}-v@hGy7J6e
70634 z@?~r<J|g44kkXnhxHrWn*Vt1+=8(KJUOw1$$k0W2A3?17ul)4syU6LcmgJ=Vz>=-v
70636 zFT!4lZyQq$%xGcU4IIYx)G}w7$36wV$Jtv}C~EOZYT$d8;-}y$AzuK|@*QLE+7eGj
70639 z3TgJ-u@hStjc-!iBT{MzODL8&B9Z1mZ?OLjUGbjAw{pIL&d}#sI%(-)SGoVO>>rit
70640 zm-ka8dAWP}8n%Zz$&T_QrFh<BHJPESDSKCWhxX%DhI%W~dY)%?Oa))G@_K=^*_Rbt
70642 zd4e3lq3y?bUka__d+;Gi-GY4w?>i(IIZXZ+qp{sZXIMW)(Zcr$Sx0!0%oo;@FObxi
70645 zex<B_rL2A>=~t3|CFxiCQNL1Fzj|0ef5rbp**_}PFYl*H@^Y7aMQ-Lwe`|mI<~sl1
70647 zd$^{LF)r3|Ex!RpQ+1Y$u!{j(2y7|vDuJy8ju7~BffEJ3An-+ja|FIAaHGIY0`~&y
70648 zO9V=8x{JVj1P&4Sm_W%vuM_y5z;6Ve7nz-w9swV7##?hB{8UqP*m${zSBtvPRN0+5
70649 z#@O(1F%dZ6R%cqw&&pTag!(l0Y-2fdmDu>`ds}GDNUs~|S0hwoNxxb`HJ0=)WMwt~
70651 zsw1>!=p5TX313cuvTVJUt&fD%BPlgV$_fp9t-Q5AF6hAr{J9uX-q+JBuAE9&IsO%L
70652 zsmWa1vJ!1RROy-YRie^W(!Wa6dBxMiDm^`nv6II#p&k3}1GvP=?9D9|Pi~)|&f}1q
70654 zPmtwBeoQ>`#4TK}m`}A$RaLI-G`8ml&`jD+DLvR6vNq|Sda&MPI+z}~Lg2Jjf5gQe
70655 z|L$ep9g@Yhj;U?(O-oiUd(1&|+??Tjy0Hb=)Qq&cS-s78Pyt)mSOKHOy2e=!OYT-?
70656 zDm77^%rYIKl-X)_nS=Pcx)rmkTlG}2XsoZLU3k+(sh>-~eCxM#kWklIKD!O^gtzeU
70660 z_lu6yKK_6^hf26tPU(DIsN3jHy1VYf+O$x0psjk5UQT-|VfR7c!S6L(VFnH{1(jkv
70661 zE--$J6yEOPIyw|l<J1&dN1JH}wE->A3AWHWc_pi!(uzE3MY=t`Dq*=tB`kY%Q%~sK
70662 zVUGj(6;UyARNZL`bIAZTf@yj`9U<?lM_wzm$U^T-v%FJcwG7IXez%;}&z!-+yggHo
70663 z!3wLK()IAJy!MI@$Zd5{6V-<O=KZV%PqC!+zQ|OpMpIAfCmtU8Jy3yLpQ8Mlk>98F
70664 z{j$AU^zmz<<O^<t{aR#QDOY4cnmR#&SZCIc`RWjJ*8gJfec+-<&b;xi>YnbNo?(Cy
70665 zSwut}h7l22MPyw>&aj9qi-?Gb$Rf+K2*WTl48tE0S&uV{h%8G8F`lpI8RP4Dp7D$!
70666 z#`8SSGsbwXaarQ)8P9me7~^@y^E}Vjc;v0FndzCSF3s-!dEejX^NaJLt$Mn;>RZ)S
70667 z&-1P7`jg5mV)9X$R-(`@WW{@thC9F<N0$2nGaB@ss{*iie85}Ve66d<n`623d?mL+
70668 zd2cHe^eZuviQaaHbAWs0*#Y_S_*Mk9P#l9dKM?oT8E*|Sd0qY%wu15X3jBJ(Z-1j1
70670 zUbfxe#>`Q|D{CbX3*>p)@;V<0ye^-6fw`oFxugW%1oFv@3%~+&T>_RM%bo}Fkd0jd
70671 zRv>%33Y4MiyYjpYP>J*b2iAhMC}a(&MK-w()FFut*ibx;pb^RK^0#x$PbJU{n!PMl
70672 z0-M2Rboa}sO|baXH(s8zg3{Unb|7~@=tuF$D|7`g42F^9Yv5~MJ}ZH*gRi4!_kz91
70676 zYw&BtTu=o-d`SaQ4<GW7M{Yfo&lWU510y2cEw5xT!byl_nV}iUE%KQnFcE2V2xq_~
70678 zku}JdSGB<c6ut-+q1fbe?08rLOHlZgu#^$tD!2+s%3v9~yBe-WPgTGQB(IeB<%eq_
70679 zsvGb<_#V3ZK71cN^#S|<g|CIRD5O<B(*-s_#DnC$cu^Q9bRx7(unC21Mm9)?S5b5F
70681 z{5q6ZE&d_=L-gz)!9POr{4x9nx_(nW=Kxu?1L&!P@F2Q-2p&T6!|*VA_Rrv-Ayh};
70683 z@JA^86?g^3`6>Jq#Xkx^LutvU_X+ZR0`%-7yguSFM7080<|pW>r|>BX^KbCqyewLR
70684 zzlL%>c>!M_JpV4w--qLH9L4z?_!~xGC00UL9Xo;1uo0|0hh!2v3Aq#4S&SsF9z*VV
70685 z>>EfvpPkQ$?3?VH$eqDvpu3rDCT5Y-FdOHUUZ*^tISy$!jjWSU`}zDM3vye9s7)SK
70688 z8+4<qr@!2X^qk}^FIn43xYR^kUK)9?6ck1-DUTi!a7nRv4JN?-98XEHxQuvQMjS39
70689 z4wsP@{sH_0RHshjQ&j#2*GIXGI9x^=PhXo|h-{x8uiWrh<3bNFK%8Jm>0<z|)%El*
70690 zfR|bM#y@1+=j&I<zO_o90tEFZKu})-1oTJnTuY@dA_b)v7SKP~2Xa9<vMJrjDjY(3
70693 z@?HEOe}F&9U*>P~PX$Sc6;g#<p<J*F-NLYNNH{Hw3U`I)qCqr?>0-WEDZ0ch;x6%s
70694 zcvieB-WSKUMy*Agp)J%_Yg@Iw+CAE1+Vk4$+J_R9BBdlLODdLXr4FfI+9!=j7p0rh
70697 zS)NxWQo>0AvV5=1^D_q21|Mdlf_bTe*{EP%s$e!MX)IMR2g`VhObC$Wd1WFcoD?9-
70698 z_sV>^@L?`gWZ^+F7!a-?NERL>V*|o{DM%I`B;x|YWe3T^gJc>?I1MEnPYK6U!U+N4
70700 zfGp1|6Di>&CQx(w@cPGPiWR(^g11<~%PDw^6}+4hf3bo$SjJOiLVzsKD-$W<qySmI
70701 zSLXToM~>Dim^BLKwF+j9f_bfiS)-(}R>2%B<0&#BK$ho~iIi|sfGpoD^ZWwGwtSd*
70705 zvV5=1^Yf3f`t5{7u@e%-CP)-rA1vc3G9f?~tiyxDNddB8-K<kEuTn7U6wIp>%sK`0
70707 z8BdW30kS-=Or(U90%ZAKndj#pP50Zt5Q+^9q1eC>iVX~w@f4X5APcsE!QrF;Sw0hJ
70714 z@hFc5?>Z=RraU}C!r~DUfX7ByJT@ZWu@N4RjqrGEgvEO`0z5Xt;?WOY-rE%AVJ?`9
70715 z-1VRy;dTQz!YYq`Xz=KV29JJdz=z;NbXOh&(csY!4IcN<ct?5v2lyW-PI>f0&f#g~
70716 zJ_F8pM?6@(>lBMeURiJne1fh&1wTb0?}2;h`b+RjgyA2-KO*@<@GI|^U>2I78Rg#s
70718 zYK4vH>VPhEbwfA0Zo;FIo8gyH$RRj{-231@bo~w-K^WxmLKct1u;{J)5RU?Wimso*
70719 zF?5wjV|Y9o!@^&~-!LqCPce*u>QWqfTM29;y3RsxPGD2m*O5DoMYV*<0u`us^nxQ`
70720 z4013Xy5LdxjLl|;nJ%t?tL8em-P{@Op(a*SrWw*)=S_S%U%=b=e*PqXPlyxBg+0O@
70726 zAa;$noEfa`$Y->wcSXJ*0Y9syzG-bxiXxG!;C;Ic=7qH9b<~<dt07t(kM5;)PNza5
70727 zQP60;b&bIc>Sb|-ytMwltnTV?oFT7l6(LlF`j?>8d0Pa7?bv@`YxCD_A*jat>$Rtz
70731 zMazQTBulkL%ZRthQf<*P)f;7BX^WOo-YWY_TeJ-4j$=GK+4yr;?#-R=jz4$hO71-O
70732 zXt^s7$ek~gI(Owkx$}g3Rqo1(-1(k(dG36<V7<1Urc*UREih20YCeZf)qF0Us(EEQ
70735 zxL6Pi-T?0cJ3fb_AAAiQ1Ai^gSiw6mjDnxTFnNv$>L)D5UrMbgj<3US!qe~^e1y`_
70737 zc-}zI$a94>cpebM{a6Y24Rv^qj~37Cfq0${#4~O@eLaY9`{vqc@GKh+&#&R|3>p^C
70738 zf6<`)SWv%dI-Jgkcy0@e=diHec`Nb^6c*1h(coDj9G?B*nd{-1uL1EK4Txu3$hart
70739 z9xuS(^&#%l0^F+vLGiu=QSHFJM*x??rN}M!Apu+lmmzl%-jjMcT#npwe-hySB)~mM
70740 zfP0bvHbc~#mro4GGg##FlLz4-a(@GU!`t@*><m<vEbjHm`(n>V?l;)^42wrWOiZ0J
70742 z2tSPye%dR-n<(K;uLvJc2_OH8@McPQGb68BiNt%g`oc1di}9=rVpV?6*S%&uhuOrW
70746 zK4J!#51CEOYGi-cpf~U?3RB6nF>9GBrX7`GHS<0yw-4|RO|{HA)Q;*ID`R6C83*HJ
70747 znwXE72J}Yrncru2FdLYSOgHmoW-GIe+0G0yUuEo!ync5+-f1Mny8<aZVE2$I=sixw
70748 z>j>plh4RjIzWqd!n3;HGPYN@enZu+qbD1|#JZ~}?%mU{3m_^K&<aJ9-5!1<ZG4cx8
70749 z9;TP+W4^)+b7sz>%!-F0@}8;_81FxgUUQaj7gB^f;x6qX?NzBlx~(hI9nn3}C+X$+
70752 zLR2{o{>S6Kqz2<+0`jl%mWd}<B1RYT5=>JFzrmZHT<-b+x4-ly0+GR+GZD)Tp8bIE
70753 zGdeFye;z`-u?FT!-akj)14F_RJ)T3xV4tLf^&^$z4aaN7ji`je(Ek!{LE-3Xz-!2V
70755 zD#5V{IRBpap~WR6V-G`dduo>UrFA7nc`hWVJ$S;)@p@{L7}SnD;r(@XiuWnczgO!7
70757 z@>`f;<^Z<JQCJftp}zsIAA0>?#r{dk{g1qU-~A!%pRC;9;r09O4`P3ea=*{(_uc;(
70758 z`===Pw|o6i!Si`ge?*`jB2f1esJ}v>?jultOrYLQpdKJl_Y$Z-`dp~{3DjR9Q12j6
70759 z4-%-i6Q~CW)V&1ij|kM;2-N+b3-t~H^&o+|k3jt~fx4GK{SkqB8-co?K;1*2-toCm
70760 z_YtT+CQxrDP!ABOw-KoO3Di9V>Kz2?tpw^mHEM1V!X1oyJArzDK;28A{)j-`L!jP4
70763 zNe360TyTpi1<z1@3P!P&KtZ-qQj?HvkZf~X<rPs(B*;K17o(J|DCKTI>NB!Uku9HW
70764 zGbmQ(0?N%DRH`pftPvni-UXP5m8|n*%amj3MzQQcv5YWhnaj*|<}UM?h=r_^ayb^D
70765 zr|QsC^1fd?nf=UB<`nT1S!cF-Pj5&?y~%vkLaI@JrvtYSpp<@a3|sNNNy<H-#3s8Z
70766 z2goM}$YTQJF#+-^0dn8lQTDlDQovn*&qsVJrR!|^;gDm7OQ8?Kd1Ks!jEIuR*w+q3
70767 zotY%}O0P4YP<KWp_eK5h+ZFXczbESd?{-9$d#vo2{~z>N<^K9KFYld(uL2$s^8Hiy
70768 zSf?qHz#eM?!XAh3`FgBz|Cf5K@k}BPDUUkHe`egTFnh-#;_=ml&?KP$EeiH1Br|(^
70769 ztTRvyi3mjk-c5zUBNqus;(0!>$C`-$pNdoQ_gKxU9;+FTfFz(+Y{s!oLGhR{4jEMf
70770 z>iZ<1^y1MIW_+@RJg%w5cLh9h!r;4-_f1U2`==z~@FFVXz#eM?&TA4%S58yHDTd%!
70773 zhw1peSa2E3X(r%3Xk>|}$2t}L$?2(ktR9)Xd(DghG@iE`gKIs5-vN)y#e(XC?=1xP
70775 zcw>@L#s8KbYdkI|4}v&cUUGc#xQyg>@41tRQ!?S2WcKDjejn4l&-?!Q+u`s2{qCRo
70776 zUjp;-Tm5hCf9vF1SKhk&){7itPGU}0PDze6XH(8_&f%Q1IoEO?F6I_TFP^<PcX7pH
70778 z?CfY?a%9Q5CD)fc%H#85@=`a5d3hU>^D6V)dA)gi^F}u8%)7MVRNn0kxALC7ZFt-K
70781 z7v2$#S3kUMyt9cnKHiixf!S0z!LZ3SA!b6-g!vP4CzMR6jy?{|lP^rZH8}!XNxA(+
70783 z3pN+*DmYqjzTif|<E7%#*rjPp^OsgFZC%>8bl=hwOD`|Iv-EjkSfQnTb75v-abaCy
70784 zSK(0Mp~5rkBMPsspI`W38C({%EM-~F`u)qw*I!uXT>oI%mSww_9b0x`+0Bl!WluUf
70785 zi=>XdMR7&xMFk!AimEs0i`qBLF6!S<QnY_Vd(p`ayNj-DI8$_Y!=0iR;ZkRGXYz7m
70786 zXVLP+PWSSx@Tks1;g-(Jowt^kY~+?(!_ziqglBK83@_T)y>V#yri~|-4~JK7d>C%)
70791 zrD^L;rTOb~ORLsfOIz3Xm-ekcR=RKf)zTB|pO;?li0zo&kzIPHqqg*UNAIezjw2ms
70792 zLdQDpbUa;U*$}-db3@jKqR`tL+@X&)?A&l@Rq=+)tLj3>JGn4@XJS}%XF+G>s;<uN
70793 z&Y`fx&J$tjoj1aAHZmKH8_i+G8}q`dHrm4M8wbKVHy#h`-FPi*=f)Rd2f~hroejGZ
70794 zb~EfjRMw>8N!Cf-QKeD#s4Y=@m>sJ&uiCZh=&JLpZmfD-CYHsPrIqEERh6}t^_A@_
70795 zJ5hGI>`vKp_o>xkt1YWDR~N6YTivyKsHI@_p%&-rGpnzzeozj}qgrm1r?fKVIj!dM
70796 z@^WYSmh#=@$65!<FSH&nzu9`N{K*<=O<Y^tn)J4uH3e;TYpUD&*0i@BUDMw-wq}3Z
70797 zvo$B%W7b@0U({aQUbE(Id(WB|?T0Ij?N{1ww?A3WuaBxoT%TEywZ3Y-YyIZ+!-hla
70798 zPp-dIQL_F~g|#E1!(uqmk#9KPVei;fv8iK!$B1F9<GSH?$GG9q2GfSL4Y?c2Hdqbg
70799 z8~Q`_8;*rWZ@9YQ-iGI)iJh^b>7Ci3Ii0nk#htyORh>sd?VY2couR#<J3|kI9uGYm
70800 zB{F>#LluWA&Qx5jc<?TKH|pIK*S&Xh-YtLE`R<l?cfWh=-3!f~@7`?Q`|guUsWPrI
70801 zy|TcqudH^@u55RgRQ6ZyuRK|KrSh)(Oyvvrowddmac$z-thFUAMQg1s?zNj*cCH<6
70802 zIkon1%dNF%Te-E@S`*hkY%QqbTAi)ktwUAOttYBxx8A7AZDZPuZRWQ0w!Er}Hd~de
70803 zZJ=#m+wr#ZZP(iFx4o$9X^*Sg)1K2_+FsY*5z^njr~PQv@%FLyyY0``OCh`0r-U3@
70805 zy}@Eg+>mcb-(WZ7Y#1~YZx}ID8SI8mL$6_{;Q;ed)y1k?RZrj3zh`=He$%1%3Y#v!
70807 z<^$D_nlHZ3H$Qwo#%+8*)t&x+p1b`0N_W@$ZudU-argQ6d)@cn-`iq%f21X~C8wpd
70808 zrLLvp{Yx!--oM>)wq>m4Zp*V)sWqlG<^5-^#WjZ3*4CcZU9E>(Pq$uay<KB&<J+Rz
70809 zlG-xc3frpm?zYWs!)*uKPPScYyV>?g-`yUeA84Q7p5I>4Zg1bD-_yQdf4KdE{$%@u
70810 z_VM*$>rLy^^cU8b>94Nu)ZbaZcm1*T=k$-)-wR<n^dW|h*&#6<B_T;2?IH6!c8BDK
70811 zl!R1=I77NZ`X)Y(lp;+`Urky~eoa+PtFyMI&)HkE&v~TgM9t-zJ2lTg2y2S{z|xfc
70813 zb7XCKb4IPRxw6^W+}%9Xe4utq^TpcT%@5s-+vqmC)7_~2YLB_QYA<-o&wb5(-~FP+
70816 z(j5is3LMUL)sCTc?d$s2?RVT-chbqNyW&h-ch_04?uFA?XLJtLB|1;kWjSxul{7I;
70818 zuIpK|)Ev{C(!8jiYp!W-ZSHB_)qJ@5bn}(w+s#khygSOB<j!;#x~tqS_h$F7`=I-z
70821 zv@TJXuFKICGkx{Z^|S3#eXc#VzQSHw@3ME)_t^K;@3Eh+KW@KYf6-y6zvW1E<Ty&}
70823 z!ltSwmvx|NxanZi$)-z9H=7>0pew><am{z-yDD6E*CyAXYrkv6b-{Jr^}sdW9M)`V
70824 zPHWC>E^D?ncQ*Go?`=NTe6IOw^S$QhZoM|nJ=>k_E^*ho+ugnH-P#oQ8EvNfj{9kg
70825 z*b?26tj%vJ(w4QjwY4ofTMo6HYPsBUOY3gswB4<V+JV-B*2-3=c2Db&_HgS7?a9^~
70827 zjaM3y8lTvCdz3xNp4qU-Ue!=)-)tYYAGDveU$Wn{KWeZ!A{x3K^Bwt)3WwdX$ua2I
70828 z->}nh!ExR3z%lL&bDErK&Rl1i)9UPW_B;1Fk2%jduR8BJpEv27Vw+|+WjB>H)i$*^
70829 z^)~HpI?{BeX|(B1(^Hq|igqQtvRp;3YM0x!#kJFQ$aTuoRz<!!vN^Fiqq)G-R>g?s
70832 zdte)H3~Mxjp2l3Tr_tKj+1TH>xA9oxxyGyDc;j=s-X3e8ZO^us*lX?W_FnsL`w{yY
70834 z6V8jy8_tKGw%U~5l-E?=WNYg3w^jZ@(+iiu-&XnOu0BC@9d(`cv{fOpIYuxyFA`Gy
70835 zZB<y*d_^d1ej-$O+Nxl6R|)Oz&B7M<L1D;!N!aIpBphvt5Kar1gzLgR;i<^sS+`R$
70837 zThpw$)-tQr+G*{#?ghEl3!uXKz&hR#)?jK#YshUV1FnY7hW>`V4aXYJHC%1D*YMn?
70838 zx5e6K+p=vXwpv@et=G2OcEonZHfp<Ld)g>AMmHumW;GTyRyVpEw>0i-Jk)rq@p9v>
70840 zn&ZCXh0~xhIa8fE&QfQcv%}fv+@qQ8Jgdoa-gQ1}lA2<gQZxlk#hUV_R!v>guBO9H
70841 zr<<-c-PW|ac+F;4l4j6V=&EwLG<#jcnj@~0np3Wunv2a)bFJB;x!attdBQ_JjF07$
70842 z`3&lt+(vzqJ=AyBLw#pksqYNEhq{V7d)?-`;kv_hr|YiN-L895&(}xQC)F>iFRrht
70843 zZ>{gC-&KFO{&fA7`rGwSth_bKnq<wi7Fw&UF6(CNu=Swzr1g^Zru9(+Y=~&EG|X?v
70845 zwT<nKy^XsYk2IcX9BsVQ_|z`iqwUG|EPIi?+U~Y*VRzXN*-zOo+i%$)J2*!qd(e@=
70846 zjyNhEPDi(6$Z>!@=eWp@Iv%pOoJObFneNPUma`9?UF-|zK2CC;cV2Ve=c1YnoTVw1
70847 zOKU3SvYR@%qNY7uWz$*C#&vK#+%UJFJI3^_%LdWwtgvF;;JW?mM%G<ecYWQ1b>q-p
70848 zXQ`WCmygSBQ{7<Q{<@L63w77)9@LH3ht-?v)9Q2U%j&K5o%Q|od+U$YpR2!Gf3N<z
70849 zRd0>8&bDS-ORTllc5AP7xAlnijCIs{$NIEEY=~}1ZpdmVYN&2-H*9Ix*>I@gRKw+l
70851 z=Nqpz-fw&X`|WXXw>`&RYOk|**!$oi`%!qpJ_gU*pE)E)j3dRd2#z^w;B7|_eB?On
70852 zIPJIs#~n{ty)%l9c4o4P&MG$DxtYyz9%PHzD%Q?+vc2q1Y7Ip-sn!UhYcoJ{ZFQ}?
70857 z-uR$#+#Uw@+ta`?dl@)m@3i;Z_kzpzbKr*k9=Pw&gJ+J}kav{82uC|K!Pzhi7Qk{?
70859 zKHuaZUrdlM@VONH?a}X>6y%#s_+Wr9Cg@&F(7oUkrg-o9zc!YE^8q8Z|A~M69{!vV
70860 zhfmp-cccFf5I`760_#8nuz^Nk2M*xEGxl3RD`*4lU_ICXI>8@+&7cqL03U-vFa*8|
70861 zhQS|$ec+(HBOLfPI1Wa@32+kp1vmx%5}XEq1<v4IK+l7V^15j7Bk&pcG59-h1Kb7o
70862 zz(0Zq;8)<E!M}iig?bnQ!%%&Shh~_7=k+GS8Sr&fzviGC_6}SMm%-(5C0qq7;JdIA
70863 zu7y?befR-f2OD4`bigL)f-SHOeh4?o^Vi{KxD{@Ly>JH{f?tJy1iuLn!2byk!9RtE
70864 z;h)3f@H_B?yzd<RK0FV9D6e^zS3JWX!)x$5{0Y1P{~q3i{{U~ppTRru=kgkL_-pv@
70865 z@HZ@ES(amYR^G=jnw{)jRqt6-?^#jrSxuk9zRu2O=dh{lTsDoJ$ELGyuy3*%>;g{S
70867 z@pwm5GhUG&FTXS7b^#Z<%Ig_Scs)ZrUh8g_-y(9igLdRz57wi*8^8t>XD8@Hl8s;^
70868 zW5KK6qws2e6W#~a40=EhGXw8{nt*pejmN7aEMNc(pzFurV`e(434`dayjngU?-FRn
70870 zNyz<I;IEKeUUi><_Z&>Xdk)6qRT*Zy_TGfo-kVS@`w_Z(1zbTfe+E87VSWsLjKW+4
70874 zPG`V1a1BBw?+6f&+DR1(FYj(T9oE1agj3$*)QtBywV;->4&ALontKx7>C}XGI<=tI
70875 z)QIE`=s*&A*V8Dx>!}&FFBgha-urYa-upBG@8p<(THJ@|D(^C2MlJ96(NppcsMGNd
70877 z_p2zRyeDb`+y}pb%49#>k8=7=_&<?E-VN1+TJ@iznB_fDO?Xe#7`)qr8MSj%(@<Og
70878 z4wB3JqgwEO2PVAZq*-qJ=<W~U50U#5_zAiz?|?cT?|?c5?|>SQw8Cd7Jkks(%vE?5
70879 zg}DZ=A<1=k9Z7xye}cl?fH#mEX$%w_(i!OP&*0CH<PN-p+&_muM`3;me~EG=@24;o
70880 z?|5OxyQC)IT~aN0m(=Nam((eEm(+NqXCPxjx`t)UNZ)Wwf~<3pMBY6$9%-Ivbe+sj
70881 zMt7&MQ_vM@ArxjBI}L?Fx(K<=teLUk^-u9gD@{iddF9SDq@R*dc%-9{MBcT*j92lP
70882 zWL?EfN7`yGlBBU|NP@H$a=*d8f!y+5tWkI`*6Dbcj(Bzfy8zvlcj>Tj%aK--=NRl^
70883 z49E^#WX73dMn3<C_WeW4v?Hz62lk`39l;z#k{le?jCcSUR+h_Ogk?)h$}NanOd-OD
70885 z;Y}}zNB-JQm&aqCL6gT2;XNx%S^PDa%(J|HD2|!$%{x7h=9iSanOcTEeo_l_nAiVv
70886 z%tSOAZ%=`iir4w{`wJiE#J+7``fT~=O5>^%^4-<)`K!zDnm`6yOBP#84qHnNwv#+w
70892 zq$95~7qDKug!JOinNQ#^khc3ftnF?fZTIiY-(#(In*~UR{S50cd5!2B%s(QHk_oi3
70894 zCsG)cTq6^I3y+d_k5Bq9W>a#_PW-~0>L=hQ2+7NsmAqax$;+?gz2%esgDgvK4>P|o
70896 znY{me60C;R=<es?Y4y;`#Qk4oYdx?BVf(M;Z1O(#N$^kLpP-mu#@}Qe6!!&KoV<^H
70898 zi=7z6{o>d-ChoT|z(h6?g;DcBc{O+9e*qhmcWz4z;)H!58Zok5P=WMp57+~aBdu}^
70900 z<@RzT+$HWd_e^8Zm^B%iB2BHPQ!}VJs5z|})7<A7K9W!7v-vXK&Tr;-@kjad{0;uG
70905 z(#aIOaYWv};+4iw@Wv5&^WhE7Tc09@s$5JX@-{&I?(kLRTao%*kYA97ywb@Oywixh
70906 z4SJ<96ui@jy!r43=WV+pg{oYbh`fD7{kApal}@6(3lovIuXv@CDR@mp-aht9V<>n{
70908 znaJA?MXJVYCi2#&NY(GcOysRsk*e{UiM(x7q%^$2dFxT6P?d`WB5!?)RE;-*$lG>B
70910 z-nJ@I8s6Ysc<@dqa?z_u)ySq3x!9&i)ule2$i-Ggszx@Q!0SU6jMsxKk-)o6k*YBy
70915 zJX?~M*Dh~g-n)GF@*~U7EFWEdhstL^R-`nJO5=PapZzM8&-N=)8b_sZK9bM+m^O{`
70916 zk$l$ATxlGY#`#D-`w^AT4pI5+4n<1is5H(;@>w5V8s{VVte?5kI4X_vk$kqF%4feq
70917 z<+FW?l*UnMoR8$QKD;!}NAg)ebER=q8s{VV><%iQ9i;Nv?TVDfQE8ly<g-4!G|orz
70919 zZHkn}QE8ly<g-4!G|orzSwC~7aa0=TBl&DEmCt@e<+DACl*UnMoR8$QKD;!}M>5x5
70920 zMM`6%G|opd*M2H<-Kt1wY?Q|NNRH}fqcq-0<9sAX?V)ni9aJ{z<DE3lN3u~r@1!wI
70922 zN#lGZm-Mkl+Du}SOVU~6|08~wZ473J+57mT+2{SEo^PcJX>XMZ`EPaj$3EY>D_qWz
70923 zggZGYp7GC|RxvYYmsp&0TCB^tEp{#D#i7MX;-STb;+e%R@#^B?#RnIk6dx?UsfD>v
70924 z8<lIxou8YZTak<SV=m&4xg)t3a<At;$Q@r2w#2j~ZAtEuvL)6folE+c>|Jtf$vG-N
70926 z4}F}E#-T`l=)+6nP$WO}GeH{Xqj4ybAMQ}3v@uK?ha&l*kMq$u6v+>LcxfDp<cEGH
70927 zNaK7o4n^|AK1E6!!=!O2k{|jwAB{ti{LqJ&#-T`l=x2g7&PU@=BtP7)NNHo3G!8}b
70929 z(%2o1Ly=6-H(E*KP$U!du{#=vA~~O*-O+d)jYE-~uSb#6Mj&Y%iez^_3^Wc!vb!Ed
70930 zN@Hv^4n?v%->4#uLy_#xhk?eSNOreXk<u6&jYE+<&d1nj9E#*|bjIf6W;6~(GBzJK
70931 zqj4yboB3E6jYE;#jLyP*e2ZKK^xw{`=5xW^YW|RBZ2k%V_}iOizU<9B-u|Y|KMMEe
70932 zHU9CNF9b0o&NC91Q72So^a-sQM}@wOF=1cEGvUO77~%4QMZ%p0HNx`+Jqva%I4p)O
70933 zxFT8>JP|W9qcW2+GcyY_tHk2W&0<~V!OWAHmojf=K3WJDMu=St=ZixND;C-pZdy3F
70934 zaR0)Qg%=iHU-)3*cve`JDJv~2H>)hmN@Z3bDN-6+qOlK>S@}lOXzYVzRz9{wV;>~5
70935 z@^L;I`yiQ>pF`2u5{-S3%xZ@srH!W1*ayk1d~AuvK1gQe!%JfyB(w5!C>mR$u@912
70941 zIeQPEJo~I?OlXe8Z=RFF@0wH0ADz?6pP#dfzcJ@D|9H-AK}_X^*wm!d%+x|5E!8FD
70942 zrw$8MsV7q}rQS?^G#3i3b1g#O-2Ax}bM13C%^jS(f9{B|Z|-&B#N6?;uryOzT3T*e
70946 zD!q!7Hm*an<|I?`u@9OxCz*;5FU^{hoTOKg(s%~Vnv<NwH-ba6<|HTa@eG<ZC)tOe
70947 zXV4f0&6<<!qeqd_MrCN$oa7lk3^Z#_@{AruO5+YRYfkbE-$)D1nv*=khk<6zNuIG)
70948 zk<z#W&6<;p!p9wG)|_M%bnf6|2{da?at9wvpjmU0CHVLN&6<-efzAhfmY-(LNz3n(
70949 z(smRfE&qSQ##;=*R^GCQi?N*bk4a2V;r321=0>Ks`bQ?F-_~R#@|vQ=B+uwXqDyly
70950 zaaeOY@uX%f@uuef49GJxEPUjQd_H-GozI>zIAi~e5x#83b>2Q>oZp;eN=i%0O)5*W
70952 za#nIta&@vhc}w!n<U`4)k}oIUN`5?xn-w`LaaP8xf?1WboU^)T4b3_*>%^>!vu;pr
70957 zUukxbw68u(O0$EceWhDcpUtG%LDFXWq%=E7+RV>s2V;waEn)0!cF|Pc-{YO?V$V$-
70958 zX0J~@>F@W(S-8r$e9j$b_w;?^Q13VHI(Iv6oO?FSq%lm()tIMQH5t?THAT~oX=<lk
70966 zvfY!c?9NI3o<7v1tL&pm&pAFimWzqb=2D|;xxDCJt}^-v=Z+rbdZV9C7AHq@dnadc
70967 zBa^GSOOv-u-Z}Zu<WrL`bGIiy=AOkw#w5mM#1zC-#yDfTHHMf28gtCWm>V$<r!Z5D
70968 zQ_NG+H5pUNr`V=+O&OT7Z_4p0=cinoa(~K;SVL@FY-(&yY-wy=Y)5Qg?4H=8v1en)
70969 zV(-R2n<`C>nVK?n(bVFpHB(!s_DtP1_3+fwQ?E?DJ@rW(9~Tvu6qgxS7*`eNirXAF
70974 z5!GyW#1?jE#3A-b#AWte#N&zF#7Oq~#0>V)#7d5z*gbJ*;(>`LCSK%XCO+g+BaM;f
70975 z$n?m($nr>AWEYngxsR)iJRf;2@_yut*9@=4y_U+kUn_mB?zN8B`d-`f+R@j}zBcyS
70976 z-PfK)Nl`ITDN&1}ilb_xTBCZRc10bIIvsT->UPwVN&KX!NlBA3ClyYrn&g_adD8Ht
70977 zgOg59x-{wLq({*(IwIN<JwG}>x+2;hy(xMydVlmt^o8i_(GQ}>Cx=ZoO-`GfJGqRi
70978 zPkR+9O-Ir+5vfo8tIlXTlBS7B%}Jj>?AMVrZAjBZq~@gWhD={cMxPT*pZ)9ChBUoL
70981 zZomVf3_KNThNGc*@Ls45j)xAg5uwLJ&xc-PlR{sxi^AgA(y*Mc(y+R)j<7z~7Iu{F
70982 z4jT)*8}=+*3Xcg-317tS46k92g!hE+3O^ivI{Zrb?eHh;Ib)PD$(U&@G*%g1#?8iI
70985 z9hn@N6<HKn9qEqT61g+-P~@q|%T!IYO_9>H3$107nuxx>fj-}kKC{lRU1)lQ*0M>R
70987 zPuC6fxmfhCmh^d0bnX(+vb8SY(hh?j?MY9|mUwVWN&-)%La3Kq&?F7R`O-;PDBXlL
70988 zItV*-7TtVZJ{-{5;Q`$sJf$1aUC>?EJ<yHAQN0P?)932T^j3YRzF)sre+-W6ud)&P
70989 z=OOx#*pS&F*&!t%wQN#IZ^-VDBOzx(Mnmp|JT-`hXhX6g%TQ#fHn<I23_A^n45tj2
70990 z4Yv%BL%Gn%(8SP;(1Os)P-kd&=uqf^&=a8-LvMsW3}eEKVdk*(u)MJHFk4tx*g)96
70991 zu;XFp!>)zh4|@@A2#*U-4bKTL4X+FD2=5Eu6Mi)OZ1`CC-SB5d$rxiyF)lI|8*7ZM
70996 zjYt=y>(T>hTo<M@>C$w$x-y+r*Qx8*?bRLAozq>_-P1kS>-Dkv+4^jKiN03fuJ6_F
70997 z)*sQI(U0oy=%0p&A<-epAz2|sA=M%7kS!rQLk@+U3b`C|E99|(GejB^4H<?4L#4rK
70998 z=r#-)4j4`tE*fqa9)>cZ#!z!;dT3r~d8jS4D|8@qUnqV5v#r$jL;oU7pWj9Q%1i&A
71003 z_NgRF(NeOMB^624l3Us$?UW8lr=-i$E$Ok2(?#kMbs4$>U8T;c>(&kF4(LwkF6wUR
71004 z9_ksrQE%3#>+|&GdYisWKcL^IKdwKozox&he-UD!)<^o68TwoV`qvhE&7*%6q0a-L
71006 z!K?5de9r3GSavp>&6cpWY&+Y_?q-j$XV_8p4*Qf7xo9q#%i@Z-YR=7V;dXL|xKrF^
71009 z^f12DP{?rV@`uD2gHHkpNsKB?j4I3&RhTJ6m^c-7vR-cWhMPph6<kw25)yZu3U{0e
71012 z3bR>-*{s5BR$(@)Fq>7F%__`h6=t&vbAk$Uf(mnj3Uh)AbAk$Uf(mnj3Uh)AbAk$U
71013 zf(o-mh1sIQY*Ashs4!bpm@O*I78PcT3bRFp*`mTcU4?nN3iEUo=IJWT(^Z(Kt1wSj
71015 zFwan7o}t1#Lxp*U3iAvV<{2u?Nh-`qD$GeL%t<QDNh-`qD$GeL%t<QDNh-`qD$Fxg
71017 zFsG<6rvzcva14XbH<2t%7`o4JmFRC6h4?O$&Ezo>^A58VU6-Ms#4Kk@(Df7a1NbBh
71020 zwH#ETYc;4vSNW6_7N3&B0w-uf68WqY7N2ba@rfxc_%hgv<np;GEZ7dVBe#5d3X4xq
71021 zVZqnHE+p9vcB89&ZUqbWfIY}9pQpltZ-8$g_cy@-bd}GrV8Ne&qsT3vu)^ZADj+^*
71022 zg#~{N{u;^UGbvc`H{frOTRxeB1>XnXM{fCi3KskT`~bP-Qz}^SL-0f7md~nS!QX<v
71023 zMQ-`T3Km=jmyugOk%a}LU=+FKb1PUd2F8$EKD~m)r?ar&I=GG`@)<2G_<L{@x#iO<
71024 zSa1vc47q;}evYp4Nfs>l1^5MW%V)Q+;6AvI-12!AEchqzPslBw<HCYR;1P1mr&_S!
71028 zu&^C=A-8<43=6lwEyyjOF2mweAs`%pA0vr;HUta50>6UX@_92X9EPZF;1eQP)L;B#
71029 z<d)B#Ve#n?5TE|Q!f(NEA-Q}81dDo<-$rivG#VCu7k(GH<uf2y_&xYN<UR$@qN{v9
71032 z=iDH-d@=&d-e7MqJp1?T-!mHaCVP_+@L35g(k46;&1lg768hti4=}SB`5Z_d`6NXO
71034 zFyDKrUR;TO+TUr%-)YC+X~*Ab$Iqi3*`KmMWwZf0G7g_Khhjo{gw$ACuf__zM`|rO
71035 z4imob4;QR2B_bBO&Q!D?69$T9?WZ|_{~$9D>o-QxY$z72(|DxQ!WaQ-GcD3)QyB?q
71037 z4{4-+rWk3ST}&m?IeVCTq-Vat*sz9iA`NqbaUp$jh4};2_J7RmLM{Dg%pTO1pE8GV
71038 z8$5;E;91-TzmMDC4^iuz!~897Uk_3H`aR|eYE$LR|CZYYn1EV@158ErzaLmotv(EL
71039 zP%Zrycn{Uj?}7JG4g3Vy<oX7>P))lAK14O@-@#V+8}<$Gr}zxGJNOK^d-x2vU!oE`
71045 zU3yxir!A^mp{M<MTAruPdD_{_T9~J81-2?rd-Aj-bsO@u9#6aZk1;MD)x{VlnaM)6
71047 z4kh(D)YRutQ=jvS)KiJnQ&p*_Qc_Q)rk+YoJ@pl-&m~fyt4e(?CH1+~)aO!DpZki`
71050 zQh$?@`kU0$-=wDg<||UqAX3jzrJg}aJ%gHh1~v7JSERmxNPU4S^#zpF7f@4QKuvwY
71052 zntB#B^(-XwjU$*5<6HU4pZt{EGiGqlSP1AD>lneyN&!lb2`xr<eSXL=(J_QSjqn!`
71053 z{u;vHN%)5d|6#&^j_}_g{7-`Yll6q(O!zYie+l8Y1^7{kPTm~gM+GzaBys-<;eQ_N
71057 zI}z7Ch1l({<WsQ`7oE(;uv6r-t6BNfY7-mJn&q>q+39Q|JA+M<Po`#Pu^C)4w;&*=
71058 zF^rDQ05){TA2wMIjqb^PLNgBO3%!V$0)7qN1Pj1g@Dz-Je*%v|BltS_Huwkl2JC=m
71059 z;P>HU_-iEF3=3c)G{d#90ltI!5C`CP6vq^tOJ5%4{K>idb8sEyXs0hX^t>o20BZU1
71060 z@;d{QgWq8EDDlQK34aISzeUu5T*7~t@IMUpPbnb$BZPm9@LwVPM2(CU3BR52-y{6w
71062 z{5uJMpoZm%=aD~QU$B41p<w^4W5ND8CxiX-&IbG6ycq0XI2P>x(#>H1;(NjVw;u=l
71065 z+aF>SKPDK&wQIrtpCNq&0^<AGX-0qn{$Je+h#&d?_js`X*Aa{$`ojY@HRwLzMuOr4
71067 z`(-J?_tyk6432?o<@EqwzowN5V=PP|)5#oV?t>&`i%vlUtcB;01svoc*UmjbAxumW
71069 zC!rBK*-zwf`1*-AbSu2Y7P05KZ0;PBf;jR)<{`)cec%qvW-sH=^7RvZz3hD^8y-e>
71071 z7-O&CC$Hcquiz);>yPmDisyN70j9!zY!o}hMS7oK#Pl&YkqsYWKgG{~il6@!KmRFy
71074 zV=;4-9m6q>;TXqojAJ;)F&yI<j&TgfC|^Ir*D-Ireaur(3vR$Nc%6v1jQuf=_s2Ni
71076 z5fL%kmZpe2NRjfOQc5XBM2gl2BO)Ro&iy`=QmTlE0TBTa;r-8V&&j#$Ibh$u<$d4J
71077 zbJ(B!*WPQ-UbAM+nl<0GXU~ChBg%~^H=^8#awEzuV@Qmu()Tg0QEhdxdRcE8UAA$m
71079 zi2*Srj$G3s<94;Tx^47&jI+#?HKnX6Wlbq-Dq~8ti4M^vdPJWX5JTeV^(`~*R!c{(
71080 z%{a%*SYO8aGS-)|zKr#iF(cYUhv*VLqE8HnA#v<lmm3d^UZ-(^nX}fMwdSlfXRSGF
71082 z42U5yVn$JxZ^*Mn#>w^9c}&CHYz<gfHfA-hZ|>f_rL}MCuJ)4ly?sab*`3v|J71r;
71084 zxx??Yt7}28SBw36YO&v#TI^R-i~VYAvEMkg*zXN%v42l3_8(J={cCEme{C)HAEy@k
71087 zs;$LA<J97yH>}0No?0v%Q;UT)wOCkNi-qIVV&NOs;^3ZI96Y8L2iMf%;M!UoJWeeR
71088 ze#2TU>Z!$|F|}A!Q;S8lwOBMxEf&3DEf)9GV)2+-EUu}=;@Vm)9;X(I->?=-dTOy`
71090 z)?(>6wJ5JWi3vrEyGUIW4)|9&`)kp_;S&Fq_^8D3mpg*xj$pYXUT3)@S?)-dJMwjw
71092 zmOJ)!mOGK<PGq?gUuU`FS?+k2JN|W+JBj5^V!4xEXSvlZx0>Zvzs_<eu-pkOcf#u|
71095 zI?LS6+|_)WSsoEBHAC&8{!sl-b+10!Jf!<sS?UsXarxQqyGHq)UHNN3rRMVd;1SOc
71100 zs{TXusngZr+Emx-gZ1_5dUccDPdzC!wd3_9{g3*uWF1pw9pxIz@~^2%eunZ!mbS#$
71101 z*&I|ynFHny=1%4`-Oz`bQ`I;0QD(n6*_@*9GAHR*)aClU=04^-^?Gx@xv#mOd4RdU
71102 ztYPQhV=L;np<L@sb+kD{D|M<lOE>kQ>Q?nleS|sP+);m9W`Qs2->EHnwRxbqK%c44
71103 zH4icm)*q31`hRh)`r~Sy`hfnDzF4i-A5(v+zN-GWUamLkle8~0%@<^T{#W{s)YbYD
71105 z#w~H7v6F7AcdK{l&#5DIOCPTOQGHv#TmP-TSO2qqNj<DK>9zWudSCrP=@BRB$?AhL
71108 z?KGP)rpb77pnP(UF`)icovF^yOZ2t+5A~k<eEnhdh`vpiBg}x*X}&tAtU=H5FvV!-
71109 zZ>SU1R{c#?-gD7lU0*BLQuUyZs*}_osmJscYK^{7Z&tUdZ|Rfu=k?V((VlurzoxFz
71110 zm+4dVRr)>Z-}IIGf9hM!&VQ)~EjQ-sx9Qn>w)%|TsORdp>Yep2<=qkGH&K%F7ClE_
71114 z_LCBKEyp}{zj{E9*llu5-7TZWR(+4YPk&#=-UrHG?#n3Ra#TN~pViOl=k>4k3o@?!
71115 zR==Wur(ZQEnNy7NSMJl*KI%$!fx1xr5A_%7b37imR_ISzCt9nl<E-PYldKc0W2}|3
71118 z>JQW+^`cQ;H~XdWYvZ-D@s(Bws~2R+*+xh9?ai{6zpU=oKh>YnA>Se@$)7LhJkEGx
71120 zKdf_ohtA|t$R|@-%h&aj>J*hK+w4;>t4Gzd>hH|9e!2X{Q+e_Tr1Y;yE#|AeWIx^@
71121 zd-8UA;r+5VpOPAGQ_rZEWUqd!+OOY{J^Q_C-##e&w%oHG`!<xL?x*?}dK-KBm+a?q
71123 zKcfFtKdS#tKc@df+xjQ^-=#&*lO=zpo>z(b4#(F$ReyX~{b>6(d`(8=yYx3@OS<*H
71125 zKV~GX`(;k^wb!<fjAhT-x4b8aW74N*DUR4JJlECpt^#+dj$czoj_wgW#W2)!<~Dg|
71126 zm@mjX&lo>4UY7dyNpI<nFK>|%VJ}&F-}0`qYOFa(#*BldpDtEQQQP6=-DK)0b+nwt
71127 zWQ148sa3MwC(6irvW%^3)LQ9-r>H+xr>fJ$IcLa7E@y4Eo-ymwYO|>8FVz>M_x_E#
71128 zw!Gs{eMQ|^-Vdh!LER$f!dpdRx5=6PcJ*D+;rHdJdQkmP*~(X;%FDa5)MM)3)#IY5
71129 zpNJx#QooS?`J8$|y(oS4x9S!3I}zn;TFE)v6c07!4BOUIOYP|y_->YnZ+1BbGxEMw
71130 zm!tE189x_jImX3fi{-3yh(1&wrVrOg$QggRK1$BcC&^i2qbT4){ZW09{+O8K<N9K~
71132 zz5iF+$GMkGqr8tu95*0Gz+kC4bE-K_oHsO9%`$hA@wXg(%Taef8Ho=VG3G9lF<0ip
71133 zGN0()efY9GRCV`Z_rAmK9fu?DHSFG5_)hL7oc~|AgRpzoVD}!u?%jbS?+EPP3-}f8
71134 z|LflQ*S*iLdxu~5-oEZ#eck){x_9z*@8Rp-z1O{OuY0dv_b$DW_vdx*%<JBh*S#CB
71135 zdmmo+4!jr2(YEH^yY8KK-Fxgt-d8vBj=Ju>bltn?y7$j@@0{!28`r%Pu6qw$_wKju
71136 z9dF%x-MV+Vb?<NM-p$s%kF9$L+sJ#@x_7O0?@sI9m)5-(t$P<5_n%dFn|1Fq>)v6;
71137 zwMFR<2N+6vLHQksGJjZ(6GnM2*>rxJp%@<wV@IwM>MHM(6XU|fxG*s;OpFU-#)V5K
71138 z#)XM-VPagE7#GHj3!j=87beDqiE&|KTo^MhTsAQ-OpFT?<HE$aFlJo%^u)L@F)mDu
71139 z3lrnQm~mnA#JDgqE=-II6XOEog1LQU&=XfACPs#dkzrzFs2Le1u1QRc3=<>6#K_P)
71142 zX7xHMU#o8#nYqzC-@M4Y#N2FNZeD3#V_t9GXx?JpZr)|yZQg4>Q2re?S=VFc6Xw(A
71145 zC5^)yM>keBRyWo*PH(JloZUFDabe@)#$}DaXk5{_x^Z3O%Z-~Gw>9o;e5-L!<Nn6O
71146 z4Zo2#9&P-%@l@m4#tV&Cn!4F;4mPJZXE*0I=Qa0k?%!P4T-rRcxuUtMd2;iV<{8Zm
71147 z&5h0Tn-?`NX>M*_-n_DTP4oKZjm=w{w>R%<-rc;n`9RZdhRwYBSo4YI)6M6aFEw9n
71149 zwsk}6rq->kJ6hjtZEfAxdZ^{L;?^Ur$6HUfwzZybz1%k1&GtZhT6<P|PJ8$Ep6z|x
71150 z3))NChqsSzuWYYwuWg^+Uf({ueO~**c6mQ`X8fr3+%o#S^51t>`LCZ-{*ODO$Z_|h
71152 zMLddlH1XZU6~tqR#}QW%PavL1Jc)QR@sEgWh--=OBc4M1W8$gA(}<@N&mf*jTu1x>
71154 z;_bxm62C|MKJf>{2Z=u<+C-li5_96e5+5Z#M*Mf;<HY|U{)G5b;#0(55T7MJM|^?!
71155 zGV!;>SBSqOzDj(pj9L*j(IhsAO=64KCQc>pK%7pTL8Le89f`AuI}v9S>7|-ps_CVg
71156 zUaH?poJ)KgkzT6lrJ7!<>7|-ps_CVgUaFT64<XW5^<hN%sy>29kJZbG^jJ+_)$~J6
71157 zKhztE7Z5Kbew26-@nghI#E%m%Cep9;6~xaGKTo`xNFUSmF-;%S^fCQKB0Ww2Es_4F
71159 z86v$%|B^^w(!U};Py98J-lbn8zEnmT&&o(YF&U|3Y%AjcaT0Nm$OtCmT^Z?7GVYa;
71160 zer3|HO!}2czcT4pCjH7R`_+U&CJZuRkT=sHHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@S
71161 zjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cEF^G*pYz$&!5F3No7{taP
71162 zHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI
71163 z*cimdAT|cEF^G*pYz$&!5F3No7{taPHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-
71164 zVq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cEF^G*pYz$&!5F3No7{taPHU_aV
71165 zh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimd
71166 zAT|cEF^G*pYz$&!5F3No7{taPHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+
71167 zgV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cEF^G*pYz$&!5F3No7{taPHU_aVh>byP
71168 z3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cE
71169 zF^G*pYz$&!5F3No7{taPHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v
71170 z#vnEZu`!5^L2L|SV-OpI*cimdAoheoCJZuRkT=yJ4hC^Bh=V~K4B}uA2ZJ~m#K9mA
71171 z25~TmgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e
71173 zU=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~Tm
71174 zgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK
71176 zI2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&
71177 z;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^B
71179 zAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&;$RR5
71201 z4B}%DAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21
71203 z#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%D
71204 zAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>r
71206 z@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9
71207 z#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a
71209 zL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9#K#~$
71210 z2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;ApV3wCJZuRkT=yJ0R{;$
71222 zgcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO
71223 z5@L`LgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELC
71225 zARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO5@L`L
71226 zgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~
71228 zF-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO5@L`LgM=6)
71229 z#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H
71231 zkT=yJ5eA7cNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_Uzi
71233 zgh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V
71234 z5eA7cNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%e
71236 z5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7c
71237 zNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(
71239 zgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7cNQ6Nm
71240 z3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(Akl<D
71241 zCJZuRkT=yJF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lw
71242 zL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y
71243 z28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+
71244 z7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLN
71245 zV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69
71246 zj6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9Z
71247 zF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw
71248 z#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y
71249 z5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-
71252 zNiax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U2?j|pNP<BU43c1w1cM|P
71253 zB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`H
71255 zK@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U2?j|pNP<BU43c1w1cM|PB*7pF
71256 z21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy
71257 z7$m_U2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-
71259 zf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U
71260 z2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZ
71262 z#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y
71263 z6oaG~B*h>p21zkUia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*
71265 zNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~
71266 zB*h>p21zkUia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}
71268 zK~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p
71269 z21zkUia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY
71281 zK{5=IVUP@iWEdpFAlZaLCJZuRkT=yJIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^
71282 zl4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?ow
71283 zNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!
71284 zAUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@
71285 zgX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r
71286 z43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOuf
71287 zF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_
71288 z#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz
71289 z9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<
71290 zatxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd
71302 zd{N}_8}nuJx8^J6@61=Xze~Qg!TOMx<4>%!tv|IkT7M?`I9E!sj4v6t8HRDYJO-^n
71308 zjUCLV%%_a$Y}X97YnO7HrB}adDCv1pYw2-Ps`Tu#O|={)Wl2g(x<O*uHk$G@<(ZVH
71309 zC{I(KY@g9IX3M%wp3An&=dO`>EzipwRpm6L?uv)OziV0J(5o-jmh?9gzc{L-zmb1m
71311 z-$&#<Q{`<VZ)knL*uK7}tM`A-`$|4@owVWqGH#G|drHa}P<NGEVBR6`1;)#mdTOQW
71315 z)f$Ow)#(z?Q0pbio|E`#^%;qOss2*p7nB?$viIbOls$O8#ILBEB;KlSm-t=vU5VdU
71316 z-<S9U^#h3yss|<hQ2kJ%t;+vXtFOwx&l#%nuT$izoQumomiU<Z4~aifKau#9l4Dx-
71318 zCh-V;ghbi*5>L{y)zSk_mbg)Glz5?*Ii~c0%@VKBS4jN4{=CGi_0<xu(X!Rj8)U1?
71321 znYWpDnOn{KP1}skN6jb9ZK8-*<!nA^&9vrN^Q4b0kY2UiT4|juW9@oz!v)sG)@Eyq
71322 zb+vW9b(3|Qb(gi(y5F*`*m~4@!rErNV7=OCHU=9r8*>`-8v8UBG?q4&H&!-IZk*a!
71323 z-`Lo=pmA|yb7M>6>c;hrn;N$@?rLmp+~2SpapTd(6OC<+7aFfNo6W)I%;uctyyia5
71325 zt!8VmHM2FRHLtZ#Ye8#iYk6yB>*Us{t@W*qtqWQgw>G!7w61Pl-@2)FTkEdY*4F(k
71327 z*SBwK-`2jXy|sOR+iu70N83-dx3ynrzuMRA8|<6eH>Yo2-#&c{`j+-B?_1e-a^I<a
71328 z>-#qLUC?)N-{!t8eOLEg-*;2rZGCt3ZSA|i&+d!+9_@RgZ(H9BeXn+!ox#q`&YaG?
71330 zADIuE4@>%TH&s@Z_EqWRDxF!SJ6Gv0Rr;1Hol~WIRp~pcbl)o7uS)l?()m?-V3jVY
71331 z(u1mWVU-?SrHiU`ag{Eu(nG6sS(P4MrAJojyQ=i4Dm}VN-(96Es`QvDJ+4YuRp|*;
71332 zdSaEHRHY|Z=^s_;nkrperSGfKQ>yfjtMt?=J*`SluhKKB^vo(<SEV1Q()Cq(PL-Zp
71333 zrJt_S%~krDD*ekU{X&&qQ>A}XrPo&Jbya$Om42m4Z>-Y4tJ0gQ^dGA9mMZ<nD!sKz
71334 z|EWrEtJ1Gl>Frhe-75WFm43fUe^8|lR_PC`)UHy$O2aD6tMp&1^wBDPtV;jAN*}M%
71339 z_|etzqrX_C)p4Z%wo0qxN#9VVU#imTc+huL>DR0D8&&!*ReE=oe!EJyR_S-D^qwlM
71344 zf4;M!b5-Y_&eQ#8_g~ZhK*{F*=cVR*8Qav3SgX8(RQl>rb*%amb++25KCI4HA5kAw
71345 z7pae_P3q(7Qgxa7ton0xx%w-$Mg6t9LVZqMsjiYyXGj6_%md8@=0WDcQkQ*<eq)kY
71348 zZTqm%CtLRsd47SqK%Re0eO#VjsxFmynYv8kXVqUwyj;mFNVfAzqp7Y^S5-5#(sE6s
71349 zBTidjwDi05yCkQa|FoqI<{6f>!9hmH{FEv6G{0_s-7u})t=;(+WdZHdpj{fYOM`Z4
71350 z&@K(yr9rziXqN`<(x6=$v`d3_Y0xeW+ND9eG-#Iw?b4uK8njEp*d~tw+0Q!~ovMw7
71351 zTc^KjokL}2+$a0~SYxv6|38t|EZeI|ds$^)kesr;Ea?#+mFLnc<oPDG$rzNr@o{-x
71353 zY|xGk+OZ++`2PPF+VQ9I=r?{Xk4eTW^5|C$)sQ%-1|?2WQzTAP(<Hu4y-iwtH?^Cz
71354 z>4(&ZWSh%2?e;;f&Qs?ZZQ4}PrkXz3q-7N?tJNpeC*)IQn`+ur)23S5^m2)RB`s@i
71355 zZ__Izr)*8F{#O01to;UcgY4-qsV~b~ZdNx-{F>S-`QK6Z$n*Qv{SqHg4@i7SJtXmA
71356 z^&^RqiX<i~k(jAWVxbC&KUY7OxJ^AH@mK2C5?@j;8EtyKrH|3aNIXs-C-HcFyu=gq
71357 z2@>C<-(&RYQ}qUkAJ!k1oKI@$ANoptrNpo3uSoo7eV3H;P5n)Y-_qZb_&xogL|c0j
71358 z1070?bu94_{S%4X^fo!>exrXQ&ws05lb&IjEs1Y6-)i)ke_;NB#6L9uP>#QS&3!ov
71360 zMwufMJZqcLZk*rPY`tPVS(a-oG*)h3(yS?OIIn!(WXbNgtmRVc43kH1{#&K*o?={N
71362 zuS2;e<(kxDT~({`-tE?C{Pz`G))@1y#S%khkN^Hq>Eka^mT&T&F{0(h<_(oII#<!=
71363 zWsA2)eRg!-&}T>I4z0KM(_?c-u6t|=-7@=X%IvGDQD5zP`fBSrHh1jO!)x#Gz1g}^
71364 zYahxRx%Sa{W0xGg_OZEj<@VK-+c!?RW0xJu9lP`-8SVErmWsH}GA=W&Gww2c<7uVU
71365 zY_;$9EjD_#&8XQ1V|%N#MjZdcM_l>o`ggjejC^l&NoI9S)Rooy-cV_yN1WdFYLC-0
71366 z?b@aL$60zP-%_r6Tv~N@HCib--bRmA!#Ts(gt|4<J!9f<PPyzX>Y{2|esrE?++o}|
71370 za^7&k>&_gm5~F-g-67|xyX8#vpn6eH5jT8K&Q9N#v;1%LZ>4T;lYKlzYCTOJrm>?u
71371 zOk*db{GM@Vd6@G4+a&HL57U?@4^u{hcSu|!57RhQ9;WebV}-<(@-SsacB;e=%URPj
71372 zE-^kSaf>`m;|k+*+vg4kssn3g3c8vp)Xfq8oH@ehBr-dY^Q{;Z8#S%BTW@FYE@Dd>
71373 zY)OMHX|N>?wxq$9G}w{`Thd@l8f-~}EorbN4Ys7gHZ<6V2HVhJ8ya1iV$uOjI(fv5
71378 z9BuOa+v?l$e5=d_I<$L-xj=`xKu6{R56inhk{LlqIm(k5s6b*lJLt&lAd^_m3p(ma
71379 z^`xxvXX<CthkmY}mYi~q&{4lszm!<c6gtclCh1-E?y?u>=>w`+gQ-{O6-GaE2U8!b
71380 zkCo@;48qha^-6hO&Ld2{O0SaVWe+g*iTXr&zFM!A_(%GWB)(U_PvR;16e+WuUzqw5
71382 zyJSAnVLsAfJ~D~<NJl>`^O26sM`DSo%tSi+XZmLnhvp-%$y{H_Or&G(V(wz}n{StS
71384 zo?%=lz3<D`2J0d*&IA9cIm)mBhtH$KIpx`4z!;ugnB;c-Ju=@KaenXAthHl|Rlq>a
71388 zX3bq+Syhed-f4{bjJf@tM)l5k?~VSPwf((j%_ptxdw--&`)gWpIB)c_x@OstmY*j1
71390 zzI)P~IW%Vr#kWG5QCKqycS}@a!v`hDk+E3ISX}-e?aI;>-vnutJxBWaMMn3RX^K5=
71391 zNRE<!LwR~cUipb#WowQe@riQF{-owpWAl|U^sBj{SGszojeQMQ&D7V@T84F}`MA}w
71392 zcC}Vm7g(2DcUliLA8O4NV=t9|8(QUW16NkRcIaw)t%%@Uk-(?aHR?<1cJa|Y(rQ1D
71394 z>-oRYFH5VvqJO7f)vuY8%qiw<b7whsz17^++|AtG`~x{_?PcyQXRSqLZ^0-g-`bk$
71396 z$QG}aSgxaAw)|XqUOK2>THsR>uTj_VUFMhM`R(d<d0vWffd14+e=_-{RaY^6^r|Mk
71398 zOy48Q@AmZj^nH@^eKBf7TKz#;($S6_4X$?OxyN^z<!_*-&}*Cg5~?lx;@R>Fn0`(^
71399 z^@4su-hEM*?&XM){qwTaq*QK0_R}j;li%szNtv(eSEbC?`0jI(ImwtR`%aw9p6F*!
71402 zME1%j^e1G=OT~2q`cwK-^1SrhfWBGZEb$-pKT7;3eVfGpTO&tx#is1DZM4>qzQ32z
71403 zl>WcB(J~i^(>ge9fU6O$YR(;3=N)s@IM6-Ic3+p{%dy5O{Fb>~roYPXe*Wt1bN11n
71405 zjT!Q}RmS-;@44A{*mzcT)b9Eeb+ne=py#P8^fH;f->ZD}xO$GWML*wYwKx|UGJjHh
71406 z^L>V-XGs2;qn6R*E~B@XVzNZ{-I4F;o_ES}Eo|`m>+UY|dg~r4rFY#!pRHSWw_g3f
71407 z$950=9?P`fU>U_#ukl-N$Wv!m_3rkWk+0h$UN^_Q-yHG2CF1EAyBkYKwEn=j`=wp`
71408 zj^Y~d$b7}G<n{Je8~v`u_kXM9Rkx3}t3G+=_Sd?4-Cc4|V`249V@&UEZ13I1s3XT1
71410 zpjOD^9C>Fh=lr2Fe)mj2e3q{}zXzkw=~C_t&Z~-ZsmZlKlWzn}^&Rz{^0!d@7P*|&
71411 zn_TlVx#njww>LRYD(3JeXGq1lQE6M-l2cxjGr1;ba;8#Thcmg-rn%BqjwaLo6Xq*R
71412 zH~-V)ce!q}@?ZJwUmMeR$K;`LOpSU~_VAfKW1SlHsubL1#x`|TDLCEHU)GPC>&%y|
71413 zs~USZ?ryGb#;vnjFSNJx?P(Z&OZv9Tr}i*jMsRzneYgKUwfuGJ@I3-+)%EH|b(6C7
71415 zBA-80e<=Cob^Mk(UL7wvtJP|W?@{lOocF5t%JUDYvt*fz)y0f!JM)YB@;lv~<-J|R
71416 zXOsBl{Ge>jzSVbyTDEGT_(`_Rm@3=0R6gJR#_%Y0l&Iinb+j1&-Rj+91L?&^gWuJ+
71417 z=!1j&PJU3f|3-;7shcF0y>C$3VtV;&CH)OKcbC5yAC$IuNa8Q_FC;#rpO;v+#-P-4
71418 z2kg@Q-fa-Un0)WnFkX~L6V0@hsbp`{DuaCE)|E{kve9Z+k&UGeQ-{eGE?3J%Hr?Ml
71419 zoF(niQlC_xl-Rwt&DCf|hw>V3c@{rM`h?p4D39*Hmwz`Ks_ILl^BOgI=JrpQc|+s$
71421 zBlAYK?AgX8+w0J*sYA1-4$Yc6G{@9o_;s`9GgeRDaGg#U_k4DHomw?@YSq-KRa2+Y
71423 zn>C-YMlCa5J9TR6)2XRXr=~ugG4<)xv{R?1P9yV%kGNAs8AG+|uc=jkO|ANCdQpE(
71425 zX-u6ajj7Y{>(-dp&6+Z;p1kpT&g7c9Os?5SlWTg;<S})cT+>FAYw9(*wqB!0rNNqd
71427 z8e{s@@N09->(-dp%`va7QLnYEeS^A4Um|n&+W*YiR@=H|>cF%O?|5bLrla>h=Ao6-
71428 zPrmMb{+X-GcRzgc|F~UBnu00E5oPH}S<gG9y$9(r-7Dog$n*00rz!LI8S;FlJi6D;
71429 zRnN6^#kEkywNNFRC_V9x>I!=I+WEUBXN6JTb-9xH=7;5>rA<E~+k1iWQF(rmJS-Va
71430 zE|K_2d1$VbYOa)8#x>kyTspSD`t4-t*Z~YT8OKh-v4hp`C`-ro<Jc)Ub`YOU#j#Ux
71431 z>=Yb36~|7&v4c2v(3)q>W54e8|NRz0+EbABju^WiV-H~LX&8HFjNQE|zXQgefw5;}
71432 z?CBVLGRB^Yq9>u~ncG`oC$5N3m+jwCV!55u+0N-~=XADnI@>v&tKiew!s%T9p3b&S
71434 z%Ie2gKfGw(d*;4p|Mx6^&)WA~@}9HL-TmD8=Po~Y?YSGzz2w}h&b|5EZ=U<mxsRUv
71435 z+<CLkv(DT5yd~$YJnxM2E;#SA=UsQouBYsO%8{q6IpyqAt~}-9^+&H?v;M607q5S0
71436 z{k9M4Q*JutuJw1Wf8dk{KDfsRmuy(GVZ(-tHf-7O^oCbIH0_jp!yOy$+mL=}-iH=`
71437 z=-8veqkeqU3rBa1JB|B|{IvZ~JN&fOr)@ZG(`j2y`|{~~ZoFrszwwEUFaO!VpUq`H
71438 zImH;hEB<4Q4!wD1PhL3|m80RY#u?H(E-#PiYPq2$bWL7&?CH%lYd>$+e!ec(tjYcJ
71439 zy^N#sqwYWHp_86H>5-GJIO)qL-KD0hJ*4-YtTw7k)ivsNnYllzUeJSjcfCZf)@SKU
71440 z^|ktT{eXT<zhDlU^UNjYYV&OK67y>FHuHY-5%YO#z?y3<uvS{@txeWd)~(i7%eS7i
71441 zUTsWk?9o`-II*#zaY^Hv#;uKe8+qfoX1h7Jxv;sixxRUE^Qz{p&HI{p^SM^1HMg~}
71442 zwW_tgb#d$J)-A1jT50RqcC$UFy`a6KeR})C_7&}$+FRRk`^okzebf5(kh%DYeH;2V
71445 zo3Co~hfAri%h-HXn_u?H`nIaiSGD=WrHrjheZH#AA1bA{UF!2yZT@g6^>yiOm%99s
71447 zwcXfURg<f0${eay@8^4SOJ&rJ6ur6KQtR?nZT?W+*kimmcVx-EN9XvZ)QuE%`KmU5
71449 z+#aXo_BbVv?D6%b)aR?({E<DPw|>1NMP0tC&DXVMkL{gx^;2W&*E>>-%^Rv)-AK{<
71451 zHosf48nKr*ZLi<x+~N9-%{OcFhw{wYlFe~SHpeO1>?zqCQ?gl;JGM1OmRy%VvLE!8
71452 zJhnCJ^Ud0P#SEsm#=5q?V{^@#+&?*LpQBbEwd|-3M{POkqJ<YOUbT41oa+}~xOm-r
71453 zURiwk;_DaRvH1SQ>Efr)-2cqO&s=@xhBG&v`Q<aWtlPTIUia9#=ReT?z&;<Cy>8LE
71454 z73)q}ch0)Y*4?u1>NV@vT)5`)HBYU1<-JqZ+_3V#HTSNGSH|yM@ZJ?`FIfB8wb!kE
71457 z$4-C#{q6V9e*Zq(TWa)7Ze-3-e;J);)_l^e`DAaNIW|xI>4{gLc=M8{^dowksZZ*h
71458 zw96s8zh(7X*1zQ<bEdhcxy)Q+o?~8SUTfZAK2-jVKWmE2!k1bnTW499Sl3v$TlZU!
71459 zS}!y@jk%45ja7~Hjf)#sH*Rj+-S8VvHeP8?YwpopB=fR$&5N2_nm0DTwc^=htYc<3
71462 z_f+4jo#~xDJ4-sNI_o=|WcGGb=k8;tAG^n~OFQ;4_Z|};^Yj^yp0Vwq(+@iTpwAw3
71464 z;Ld@E1|A=HdD7sd-6t)Xw0hE6lP;Zf?W9{L-7_hk^z@)HICF6C!KH&I4sIB{c<{=>
71465 zn-8@Iw+_04Ki+NM-A>-^@MW`>ow4lvWuINP$Fh~n77e~Md0_IclNU`saq{}fn<ig1
71466 z`PRwzPR=JkH>Evg?v#a7j-7JGl#8ZZIpyXl_e@ErJUvxUojrB`sYg#eed>i%|6=O(
71467 zQ}3Mm(9}n#K0mE9ZI@~LPFp_hlxgQo+q~?$Ww$Qdy3F70tlh5IZPQ_M58L;!!w)-o
71468 z+I7=zn|ANCc-m7t7(2|`Vc#8=?{Ml47wqsCJKV6tH+OJ%cw&cFr_Y?e=k#UM*GxZW
71470 zn|aa9Ei-SNdH2k4=94pD-EroQ`|P-E$JINYwc{l_UbW*bJKnRSzvB}-zA|gtta-DR
71471 z%sO$_hFO=)x@OjGv+keu=&a{=8rW&~ofhqM;!bDnbn#AC?R4u-_wAJL^xW*u>^ZaN
71474 z#wmGZ{^;3m--s=)&o^uHN6)<LN>SsKGBSVU+-tbxy4>Nd9Gh>BQ;Ipx()IbOHh<*Y
71475 zwYPp_+pj*~9H$g>oTcmYRc-#zZ~n*jk<ocWbsL*&)_&d`lecO6+Q;UaHMzqx*U{~z
71476 zd$y-8*R1`#S-WIiuByo$KDvg^Z^K8$$n)Yr&(YqSr+V^6&U;7hgR!|o$7x-@S(`s{
71477 zuHIX6?+8$rZ`S6Ip2d!Cy}Ep}Hh=Vtx~`PoBd<4q<eX|`kLk@F-paZWpso~ioTcmY
71478 zRc-#rIcabGdi!);zBx`Q<~U2&=d0TM?)<N}kJOC-y}4%X=gl#Bo3^jLZUh*cJ3J#D
71479 z-ClJgKyR*D`+2i=$+}!slRJEL4UYgrJ#pj+Fu7&~7@Mbh^18n}?HvKe<_;aFb@^s(
71481 z`KmU5sN}Idx;J-Z{d#+KT`A@`OV{VC+WevW@y7O%x)Go^*R1`#S^N3AT(c&(TVii}
71482 z)r|nXxn}L>&Dzh`<(f6Q!!2Tr=%u}RW>22tZ;JIE-D7iyO03H_Yx9Tl#_qYXxuZ+&
71483 zJ-U1I%Wbc(Uwyt=n?GDi@6lafm%99J{d$k?-rV7>tUJ2vN-@V-x;|gk<`0!Twzu@=
71484 zj;vpAkF6`k9B1kJd{vwOf3^2EKvpH$fnH{weD}R~-+ixMRaZk%4MkN!mx^k{)F8yr
71485 zH8f@rqFF=`EreJCV@x0dA%t0kp{S;dYL-F07-JUWUX~zOmLM=epf*N`Ac!{0vX~$+
71489 zph{?-OP0(2RXl#_#w@jsE8SEcSb2^DL+z-%?=MB3hoivC11rx_V5pmWL(fY-rL!iM
71496 zxa^GV!t9#&KYjnu`=7sm<^9|5KbfwlH%#xCKB;b8-L$&-b*r*lYcJN`{_fK6c7J!v
71498 zKFGfO_Vf3yzIXS%FDFf%G<VYSTsb!~*Oi-{Tb}F7eVY3$cRqJB_c$NqoAP7x)ANh+
71501 z+A(!fk|zpI-}0jYg4?Kc-U%~*jw$f+4#$Dz{!Eaoh3CL>e^!dKMOLvzvbJC?JO`HB
71502 z`HWz|$CRbEVG67~u<{%QhT8cI-(N~_DTgVr^1#Y-6d3ByPWTpZ99ZtpA^3LiS~%{{
71505 zaq}ak6<awDEO+}jR5L9v90!)Wed`L_fO_aDwVE*pmb;@0*k-Pba~xQ1`$BI1!z|Ux
71506 z<v&bapBIo9e2P=fa$vdZbE;WZ(JZTImP9kKHbWJgF$b2rJ}<B-mr|T^mIKRezq)`@
71509 zM9Za?FIt|o2CYL|J6or<E@)lV`iZ<HA1R>*snKeZnyr?pKDARFR%g^T_2Av;-KKZP
71510 zPPjJV-h}7xY^xnwJEnF@?cCbl+GVYKTaUJ$YrWa}c!U^HKcZvA<Pmd5EFZCP#HS;U
71511 zs8>)nJ-aUW02V_xY=Z-)XLlLynx0+MRo~Ut)%EVJcOP|$u323RyH<5=?%LgTr0a}s
71512 z)#LPZy-=^wTl7ACLSN9gOwTUJG-f(8(=ziiD>9q<zn#08d6;<>)CV2Gq+rgN&M}iq
71513 zM@#3%oG9HWJq(ryy}^#)P;ff98r%<FW=q-D?1b#B?BZ-sc6)Yz_C)ql_D=R$F3dIO
71515 zALL(#bzyrrF`OMP3)hF+!-L`H;g#@S_@WRMnhWC#GYg9f-Gyz1eTCzNi-p^Tr%^6y
71516 ziaMjI(fnvtv^m-{P{;W1X_w*^LNE}{_HtZS(L^aQ)UE-e8gcKRQefqQwTPp@P%96t
71518 z&rx8gU1vfq!ak-HSb1ROISLH5D>tx3G#^n4tUR#t90i8jwHnkS&POyKQh8wIISLH5
71519 zv;3|_m{tBpDX{Xu%5xMLYF9K+i?EL<1y&wdd5!`@?HU1W5zR-G0xJ)!JV$|{c2xki
71522 zG#^n4tUR#t90i8j87^uO=Odp2D-WzZM}eWgFK#9$RyD}ca*CX%hw9E@(XggrV~1@V
71523 zwsY7axxDE>(}|{wO^=4xHN6_WYxJSfr$%2Medm{h(NE=ixmE6!$K-i=Lp~f_9^5>5
71525 zNS!mioO|kd+xfN|Z4Vn>4k-<39Wr6atRahs^gsknFczl6LRbx38k-wC8>ckRZCu{i
71527 zC!I%dTeb?t=#xr(m;oaROeo4E%hHvVem=u29jC<k$!B)em!Fq01H$lnEqDDHj?-u9
71530 zr-ok|e!F>M^Wx@N!=E;*=KALL=I-Xb&09>FpDmZj9=T2KlgH%+Q<5LZm#VB<)%bz@
71533 zFQEj@&<Rsu4lIFg*b4jLD4d1s@Bm)u(mT;Rv))<w&Z>7B-|2W~qHfh=^;A7iuh6}E
71534 zyFQ>#>Wlh|_OABc_HFI^+NZbAYhSLPWJIPe)0XMV%*-sxtjTQ7?8+R;oXK3x+-pB(
71537 zDoGhG2OEU{#pp)^HsJh#84!k73-mcQ;5_0p|7~QysKZZ#84%`|RrlLG-zLm(`Ryb1
71539 zvaJa0L;B4UZdDYSr@;&e^IH$@ml{+PFq&LRtc$i-{O?1o4YlZLFtIHYoW@wvpHp>L
71542 zJmGo^Gho9>CLCtzY?qs}ePUz8;}2L8>#{cBo{`Vii!b|63!fnu$u*`2xi9HK-jomH
71543 z{-WtEPE@niQqv0AsSc^rre}Cxy=-c08s9X%X+hJfrcF(|pf1_<aW*W4Uf2nT;51x=
71544 z`|vWiKX)v5E_WmMF!wTFuDeioqwYc7%Qxn~vEq%5`H}f?Z;X9oT7KFahu-*H*XfaZ
71545 zf}W+9=pMa2Kkv=XH>bQg_sxTEo_zC?K4@Akm-L;=&LsI4VH7rp<HMQZqOd#M7VZm=
71548 z=e%etaPd=W<!MiZ#!qQFpGBXaQedc+$InkGFf^UdqR-F8PpOs1&(FnADV~S$zj*YY
71549 zh*DtX@!W(RP2ipgQ@gUot?w{%-#574rSibaa}*f5BY!LZC=~gn`JVi?{OJ6o{OtVx
71550 z{PFyS%Fa-7p{Yqfk$X%{dO_ZjPgI~9RcFJBhTewl4F?*Y3=u=>hO{-DY`EC)#gMKc
71552 z0^BO@DDE#FFJ6Gh@T&N-R4$DyjW5m6<<hFs=9>LA$7;^i+|aExFUnE5xje2stvtWH
71553 zvb?eUX@9?PrQWP}>!bR-zM&tQe&C=?M`m(nZf04gH?wnK@23|*DHu7h_tVy3Z*VL)
71555 zf8TNzag^3Hy-ZDmS7vka;5<<c(MTCr_uzH5SR*hRv5zRFwNWoq8{t*E{xi}i!Zi$D
71556 zfy~MKKEf>>pQKMiTRK=07)i=-AFeXjjBUUK5b=8q?&?gpR>h2~!~9u2zgFesIZEp=
71558 zqsqQTxc`l*-<NY&GU61Y<pE0qBS{(VdD`9v&bOEWVYpA_uI0n|)n|Uc<s)%j9+9Wz
71559 zRe4W-sY2DHI@Q$p1o32@-a&OrT~@c%QwX2|M#JQ|Z&H3(d3(Z%+P>NywFlum+<=F*
71560 zr{cZ#;FT`v=47SaeDhA+q<5NL$0>bT-_}oSpVq0m`nvYI?z&IvcGrDYH?eM3-Qv2l
71562 zXH|Akw#~dXXJ!{AJ0kAM9?720Ud`Uiewhn%O}R0-$+<bXWx1Z**4)1SRd<haukv;I
71563 zw*2_~^!$SSs{E#8-QDN;%lSL`XJHUFhGW9X;hb=JxH0@RJQAJ_uZ8!+mxa1QTVY~h
71564 zc42X{_u<~c(ZadH4bv-np7e^wM$@AC(ekJ_+7TU$PDYoa+tHJvE;bfBi&Km9i>r#8
71568 zDw>q@G(K_tg3}@rI4!6oWk6V^jpO^FhVcVtz(@ikNf{7U(d7G~hVcVtKv-%6_5+o~
71569 z%pWUvcUSV?P?!N>c%~h<^;}K34&vK{_+3YBzznx0x%vKHM-sPGwPOP&)_ToYuZi`(
71570 zBxOKYMU$T&d}3`-f~JKceo%}bd`ZmwIRke;9^VGcfH1l)0=Mj~CY&F9hUYEZ6%{x?
71575 zt7y{123)6O28<*yl9T~q6;1v--Y3=u{Eo+xz(`UCgiR2u#YVA191thOd2vHL5YJ^O
71577 z!Zz3k$KWhngM08)D_yVK^msj8q~CwqXLkRd_Piu|US9@?3?_hx--~j0%kX2y4EMii
71578 zf6Lz`!?(a^e$UO_AH&acm;oaRj3i}1n7_Km-QmFZ17^TT0wYNo5ay35yL%c?8|XYA
71580 zv6fM+SOyb7<a=VX*qPKT7m|AAMgLmOiE^e~C|AioQ?u-s$K^SBUEY_^lvaaOyPBY8
71581 zs0C`dTCcXLed?$>TUkX9B^U|gP2I8xx?v0Kh2wA$Zoy-%b)#<A6Z8zdK(Ek!dWYVp
71582 zkLt7fn!c-_3Af%z$ClE++mR)g03v=}W5<+y8K1c8>C#aZ9BV{kjZmyu1`|LeE*t){
71583 zx_?hgluLlf0Fl825OK>yA1V`ROT;IDh(bDW*-KkKE^*65A1V`e6&a4T7R8EXFabo;
71584 z-a`8JOxH>I%<XNs6d0Nk&1lrDM$Kx}NFy*d0&63%HUhB`7#o4L5m*}m+31%K_wTqq
71585 zvON>Od|(+&01=s-VC}csa9;NbAfk|tv~`BdlrJ+yELN>>NxUW4Kl;<mi=bSbQj@FQ
71586 zG5mb<n%3nbZ@xX|?Wt`i;(z_+OR+xZ%yRC$@)@S~iR+&z`I@#iS^3dmE-4z#1!AaZ
71587 zGWX%4*^pLqNiot~Al^2Y6u%_e&3%-)Ky-+A%<nPcTjt&=#v1Y~=91z&qRZUBYc3Fz
71590 zmlXe<xs=#yE-C(db1AVcIUD+aFqabl(p<{Cjdq&*|70#HJ{AAU=-DOywfX(`d6xR`
71591 ziMr(U?#hYkb?|-ozL4-I@FxQFNIf#C4W_+Lzn>-jzUJijpX$taHl12bDiuY2l0x-K
71592 z3e_hmRBuwK+1%r_sW&O}wz>b3Nr`%s62D^Z-!Xo#PyAk=_`TkEeYLrNWV};veDi&C
71594 zyW{OiV&SMGqt1-FH|lxEn0P;zj^2)CE%RDd3}4-{vE|d2rk2i@sm9Jt#@C0%X>mo|
71596 z@JO<i1V$1VN$@1gi1?#c-2?9tpW)H1?nGA|(dCnHc;E0H!w(LRhBuFxG~$C1OX9E9
71597 z#BYe*;;3m6-xkkgBuAP&I!i8*>*Y>)M4pv5O&?pwtK8I7HD9e(TTL4{-qG})`VvBD
71599 zPUg#?6to3h!3V+8pf@=c{#<e@e2^X5-!_JR&t*M7a$K_9YLQj6$SPVS(V|#OFqI5V
71600 zbD(S6I+3>1DVHp_T4WV1vWgZ-v?$gROeI5IFXxDtU5eAna>;Vn^Hj5}qFGkaERkl#
71601 zSgcrkF_o-5kS9n>CdVbq{S@W2$SPVS(V|#OFqI6g^zFFR<GEzH)q+!s=aS`i9Es|n
71604 zq@F`$+LC)<IxH~n)pO#8xSxz*4{hyf-8N#?h|R6XTQ7__GUCjzYjHb8&Xvm>UJNP0
71605 zebXM_p&R7^d14@Mr>%^%Jo_YW0lH(U6?-X*Q;CMd%pYq>JyJt#s6jSJBn5=vIl|Ph
71606 znBf_~R2yb-xH=MN9f=c%@ySfFN3R#3iL>z@7vh?@r?*#T8itP?K7RO&w`RPxaQMRE
71607 ztA=l`-&=pK{-_))r^)$prQ9TUnU>L+=F!cQnrF9+Z<*1&w7I8wTg$?hRV|xaj<lR<
71609 zsb<r{nxf{YC8~Si-Q;^7GrWq<z6a7U?i<`P`?jc%9w(H`fDNa-83Z@S`QG<)VK<XA
71610 z)B1zzqYUTZZb5T!`gWu3Zl0A%tR++)Xr6LOnkp_)B-i=*FfBtaxoS%MshY#`io7GA
71613 zy-n}a$Mpq$Q$HGB9^M+~{^1LTuQFY``b>MKD>EyzII||RC9^kkG;=O<Bl9Rw!JuGt
71614 zFeR8DtPZvW`;*-Q?gcNhrEFVvQg%*uMRs#`Pxe^$LiSenX)esQCi?;`$*s@r%pJ*{
71616 z6iS8W!nppuXp)_2Dm&7Y_m_{CFBGO1<`-5LHWfZC94?$LTq)cwd>Q4Up;2cvEm|0L
71620 zK$ySw)oQ|Cr8Z%f&R$xp(pG@afUs0jGm@H-^usA82Fzj^Y8z!hnCjQX#i^M%HHlL*
71623 z*3R=vc*Sb>sp@CEJQo`+Lo_BJ)a|vp)a~Eekib$|B`n@g-tW`+d4+}qmP&@E^0a(V
71624 zDyxL`*UGt;`fnt6{h}+0-z`2%EyV8(m$_rxib&#jCyf&`yjCrJCd_~^ywc8<#Lw=t
71627 zC#H#cV!7xQ+r++LThJr?bwaj{jy;XTxa)q>T<;QpC6FD5^<{kWy~-(cVskv#lzXLj
71629 z+cG`z?s}O?a1p+cOJ%p*B6rIph24eE<Z083zN?iUq&xIP{Xuj$dREL8hZe^ar-*bW
71630 z!S>DE`2wE;L+LD{JICTv+B3907Mdbo-4Ar%L%u9#m3J6UJ9nJJU!`K-4>;}0o>o93
71635 zrX`<_Hv240R&XBFVZ38=vYXaIxmpZK>f8D7Ob5C#-<ltnpPoOIKb5~MR*H@Ns}ru8
71636 z9R57ngDc)SX2C%Dr#XVAGalE~0*_!~pRZ-o#&0Xr+`#FRj6PalaHFZ*7(MkaX865s
71637 zN9tX+L|jVNC&b?Yj7!p>vZL7vc}d=u&yt-2#wF`?SD|kJ!gycn?6PEE)n)zP033%4
71638 za1$PBq3d*8?(^K`+@1XK{CVA#dzOq!KFYre>+)mrlk;=Jws1l?Q_nJaDn6-ak3Oo;
71639 z>FfG|ewis{S~KJO&+6Hj*_k<%`8;zub0_mG2$J1YCnvk9q8$R9w-C*Xm;yuTTgb23
71641 zBxU&h?XESbUi-Kst#n3*J}WITKEpBMuS?u9L5XbenM7|G{EdjK2|o>%#N)2^4TjU*
71643 zozbE#Im)1_B=!zwKv>#(#HEHxVustD-Hs%FUzP+;U))#3?<2oQ>eddl=SdlEx7fZM
71644 zeoorr!7P=;&q-T6n6-=9@u~x{MeKD}8pJJ*%3Sqw*(-O*gYsnZmW<c&HK>l{+`Gle
71645 z84-KcQFTt;P!H5gD97`OsO-~PBTaWYXG<l4k)#Zl^|h$hur}aaOII{dNnj)?!?i|i
71649 zKcBBBqGW}7lzb%-u`B2&{Qu_bigzl0sraJeh060+p1ktRl_#t`+Y57zG&$-WF~sDm
71650 z`C^#KS^Gqj$z2BxKO_&C-&f=nG0fz&)8cKD+y0#xZgSii(O`1jzZb10=baTpP44>-
71651 zqS@rYb7F+ag_lH&$%%h0hM3&=H%97-dSb%=SpC?9f2y9E@PDiR)`Wkio|%w;r~c09
71652 zd~WjU2-c?~#4rA<gddx$<{N#R@ICpx{%>M_k}ni;&F6;C9lmsU&zn<CPwr96B$LLA
71653 zP5W|(>Fb{{Z{Ekr*-r6#zIk$`+$cYlhvnz;O3S?Fef5vu+}X0X`MSI-pR2NJH*es%
71654 zYGtw~Z2bPcsUDjusXqBqeb$=?n(x0kw&hu?ZW%2q{f4;KtT$I>%zUs&`wo-?!_$5X
71656 zjswH3E!6*%0-@Fl>VHasP#Zt?KW2cKjT!qNGeE4{)Cvnt`QIY;i&Nr?Y1_V%WjRuI
71657 z$q$n6Q+5oSIP~c-UAu4CYPmld3A!s^B;{)|+S&fDdImWd3S(dj%pJB1mO;<3OI}%t
71659 zu-ujcY#sF=rNGJqE6-72Xj(R~J(96TGPX!!iDc}Mj1^oA0_noNBugUm_U>rhZd#@@
71660 zO_^LJHkK~LJ1M-?f$~I;lOHSO!+~5^`TKe&$5{f1D9^%m#O5Ak^M}Od55*4i)}LVN
71661 zie<7-?n=(!x+xzkW%|HlObszdEmP~&c6C6VQddn6_!SIF>W6u-5;nnZ_v|gx!k?f&
71662 z(93k6-j$61-qepXD$|e|lbM{%YOT*~&m72{%3RGn$h-;$B`0ak3swf3g5AN<;B0U`
71664 z<~QYc=a1&k=C9`;<X?oPur-_zeh@AT`@&t}(ePY&Gkjc7g@(eI!sNo7!m`5p!uG;}
71665 z!l}a5!h^!AXizjJni9>6Rz{nm-O<tLY;-+(5WOgtP;HkNeET9#>J*oEquS1fmJE02
71666 zoL#=otJ|n0inT*ARw&j6#af`4_$3p&Wa5@2X34}WnOG%>v*L-+E1#Hm3+(^UDG6L?
71668 z37iKo2ZsCYYifyN?NE#rinT$p7APiu$;2+1xFv~MGVw|#R!QQlc%ob-|CgN<<hbwu
71669 za+Un=YN6cE|I`x2+MyUL6l(*P$JEXLG<M0vElJFhiB~eQN-s{^YVzwn%xPOK@5GO(
71670 zo!Q~*e@=^SZBa{T{qIw2g<@@>^*@zQTUa!9T>rbw#w?k5as7`aU4MpE{O{L&nD-$6
71674 zkz!ReJ(?#r3AY#Lw!HjV%CBBe>h{@O>jkkYB}q@ySTQkP`zK~b>&1d-pI8~4MLo^5
71677 zJH{)Ao+c}YI)mxKqM$q29vlij53UCHP2aKXo+~2kN|Z_-&Y~3I{spT1i`Av7Xi`=5
71678 zC{~MPbx2l&bmY_ZDz0_@IvM;gP~~6jni-e-UryqGfhzxE?NU{&QdMkHtVODdJ*tW|
71682 zzt3D76l(#_|B;hB-Pk1)w<Ix3CSJ+JY9*V+6fsY%5?jPRaWdZfO+1&SWQ=!~T$Fql
71683 zuqPhng~{@Ia(Y-!HLD5ggMpc#&ruCl<K-NV1H<unkE?~}z;J&qhgzaoI}~FDmgguC
71686 z`@Z$t(6(GxYem~02wv4&-RgCfcD|S>W;r&W6c@xz)XwiFPqL0Y37%u3Pu4@8%+_Ie
71687 zRUwzt_*tiQ<Vn|&CynDNo3z<&ek&oM)6h4P-E+SsJLR{N9dzH7UCti5za^KbdexZh
71691 zraUM)TK=-RkC9^x`Ih{)3HdAXR}A@%>@vUKlkXWG@0%)<RXiZ4$!X^PzMNr*`^>*3
71693 zJYepJ<zaLGV`+M#rZ0HT+|SGN=6*q5F!zh{qPbs^m(2aL{8MxPGx-B^|DpV$x&OKR
71694 zb94U-`6F}xOZkPl|3~>B&HcW-Z|)D|Uzz)Vl8?;&vHTlz|FQhBx&N*F&qAq48Goue
71695 zW&D}!2P;k9Xf*d$Wjv!MsY&Mk>+09deY%=%?laVEbDyJr+uZ-D`ftqrpD9z*s&&eg
71696 zRQ0j?Lv#NZ>R+1sPPNnAKUM$A-2bimx8{C89X0o3>X-oa$Lf#G?-S~zxyL)uN_9$|
71697 zGQU4p|C{;O|6Tnb=J#b~o>Bc!-7xo?>i;tL|67@7QID0$sp|hx|F2Lc%Vf<xgwWg@
71698 zVWPQz556aq9;ds^{nzwAG56olzhUmbsejYt%8V&Jt)?!VC6**5GCdt8{%-b<%zvLH
71699 zwXjS77xUlIB&19K*!*`~$Yf6kOaE8%-?2n*Tmmfr6Z78*^J|h=E?22;F+{L`j5o+1
71701 zhM3=PnF~aVxuh6jE-Bi~CB<lSN%70(0#l>@7v}y?%q7JP5yvyjTvGhE=2Bvfspqt*
71702 zQ{!4`y}7j5Xf7@Oxw(|sZZ0Kui2u=$-R4qgAL_>@Wxi?$>Y}p)bulT4#iR@tlQLLL
71703 z%3WpG>5^{KZAm)*Bk)49oAaB=Zq9``ZO!j*o4P69)A?O<kL#m1<5U)d<8(G8u6-Jk
71705 z>X5k~R;C70f297%+>gd36*?eZfiXB-7_JI8hr7e0;o0~M*+N)oEQ~HpF3ip!$)6UT
71706 zVyc)gRwQ309ucRLd>?-or3c<pm7U`$t%S5+o_{nD&Smj$P9LR}kXRpP|5asgXYr+Z
71708 zC1(K7(2I1B-kR)nc2VEfUuMEgb7p+9yID_Wd-DC>)y)0OtDrt;4<-k5gB8KXWCh2W
71711 z6#(hP;XZOw!KI3kcT>UV?ns*(meSN)R4>O<d-VWw&jogAYOi+WH#qkC+?H}*FQsnH
71713 znx+EP%keZ7uwF{jRG@k}o~8oUOKF-4Sg)?4SFw3tv1N)2YrO`H6<Duk^>ShD)48Gj
71715 zgj;`DT?+ZieK%SEDduS~Yl!!ak&{jPGX2W&bJOp-BcCXx2B|hRLCsVP)oQg_JyNfr
71717 zJ*FkP-}Fi@ireCe)UsZ-nbyz@xj?Q;b|F4&+Cx`OA2MF`-m1pOy}to#Q*FK8GgwNW
71719 zZi@!DhH*&6<QmLuO-9?+Zm5Z3nHmJ=MT21f=yu9-z0ss-zWB-dx9^MBUormt&Vc$k
71721 zXKpd~AIKk=@Rc!zIcko%|Bm_{bN>VN2j>1G^&<iBt1#Z&--UOLU%EuM@k9LO)n(HY
71722 zPj>2(6XgeTX?#k-z}q&SWgDu-s;O$8T4~<3d)0AuN!^LhKuGo{pP8(P*#-yURBlf2
71723 zFnDQt&|~3Bc15-?yEA(bZo?C;lik`T<#c|H^Y)R+|7j06rML&2a<^rTHK-~Y6r%xH
71724 z4Nye`Fd8(gL08eBiH1rW+L!m4-|O&YY25tN(`Q%x?=@c*SXm&lnvvD4tRE7HAMI=)
71725 z=6-LHhSqFoRVB1yLc339!}`?i-O`Yn38~nSim_Ezu~o9Ra$$Yyw|Kf8+wp2XF4R}=
71726 z^G@5j)pn%%mZ{TMn_73TINraXS0EeZXw!<HYihDSxzn_0PxbHU70=#}Pfqn-r8a4y
71727 zcB#Yaw7RTrtEUj?@z4MrFbO_@C8mDa3VY#LrrF8QxUcRqKj-@)abF+T5m>Kc_2LnP
71728 zuOCyO<5hHQ3YR-<xjU9&Q=DqltVWHjp-;>C#ScZtYTSMLEyE=hb3ZgUD&gi$%ltlx
71729 z-FM3p+H?7)=OFk!jc>N6S9+pZ<!O|sNjn7hQo6l#!KLx5_YcG+n?Dx;mu%Pf^qdFl
71730 zD=k8CJw7>`ShH4?O{;LMm@4LpWyvm|2a>kKZSmCfTpLU&pMrc!J-?RmJg&Re5^t?#
71731 zy!FlZnOn<vaV_!UTE>fOi5J&0UgUP{!!<gUc5`Q!SSnYj6{du-f7EA`!L!^n@p?A$
71732 zC!dY%_=oR>Z`jlLhJB2m>pY~b0pfkAcl7VPdc)KgFO!ve<AlFUSY>?1CzTT6v-t0H
71733 z49PtM#g$W@oIf^$iIsB4klZs-HVjDlW1BP-Fi(P68VZm9`RqIK7xt!~c_`UM*6w=|
71735 z_#CeE_q-b7o|j11u-W&2#I$!Xb5qKfg#qHGGN!3K=4pChd2XH#(~3S|V}~lS0~5P#
71737 zGQ2^gYw3JRU?eF6!u*onCvbhxCun`p=h)y%0wYNou*|PJTw4Lzn${E_lltUirat-D
71739 z6RAcxSFKH?nO*#X?e+1xub-q%H2w9M=+AKk`>%~3<JF}#f3M@%(_W|9FJK(|AHxXt
71741 zvi4H#?b;`Gy7*EaDK(YG)-}X)tu<q6CfCeKzAlM(obQasy~~5j?d6H6mQ3H0KabP>
71743 zE0o^f2a6+euF1>mO}l)*JTA}4>+*qosp^t_=;H5$H>%z0vt*ygCj;LJFM!ps1@^-U
71749 zyZO3yFYO2TIo?vP&2PhEPWx7C2Q)~Jay_oKj$X;=a6M-A@*4cGeBZ&{kDKa+Dtdv{
71750 z3rH_8o`fo%q+wG^{R`;XtX@?`uVVH3q0?H-%~v%j6$Xp6X2YSVB+j)p$U|u;O+sle
71751 zR9c%-hHbO8EJtx@yB|4boL(9>rBp94dZCJ58aAa=uV(b>Dtd8PyLUKOu5g;B{^dQ%
71754 zvC+_W-+oOP4r%?1>u(y`o=NTNg(`Y!SnFSGuO>F6`Io+LXjq$n{m_0-fS!cGoqB^$
71755 z1GlXLe})b-+z;q+bX(^49_Wc0{0TmIEM}df+dX5(ZQHLK(CyDZVupJmA3C}%`&rMi
71756 za9jJBxOFq_VbHU~{l3XJJFndDbEN5x8Sa~O3tO|go~I0-biU51<EXV?cXq~4e_n@w
71757 znuc3m{PSz*sT=-z>)pbw8C*%saPQ6aE$+o)Nx%Q*_BHWYzh8Y8yqhZiX|0$w^v{Z|
71759 zooXjj;<0g?8mSe2o7C;U(=h{JBq;;JZ2N-72~3<o;shp6VB&Noe~MXrJv945yq?8>
71761 z4h2jo%=|O!tZw|3j?erP-FpY5@E0RElz&>CYmp>&<Jo?n{gku)@KQ&*Nsraj)IN1w
71763 zm`l`eanp@T<Jo@PyRorDmDqua9nbb-=H>uPEBfecKczNyJlkK%!71tO59Ru}cR(jc
71764 zx!Hai)-6+51DD2_`T07X<@T9hW;Y02vik%r+36g*&v0q)6STDVIW}14m+jtxG_#t0
71765 z^0A<0`(wu@f99P^QU-*TM3WdJCW|=(t0IplC*MCZ<-AV#^`lKyOK2_H>saVY0wYNo
71766 zPPx=e{!G13XuY|?vB96cr;?NbVevU^i&Ytpn>RE2M>9NAFSxywoYv9n@6p6R*6-1N
71767 z{dH>nBIoh{LC)aEb!TVL=d3A@zlOdbZUq;`L-K}6`>UAYdTOn(drH~<D?Jw(GyGn1
71771 zZAdx}4=lG@=sX4Hz7`-_xVa8IOW@{tS032dWEBo9w_0QsE!ZO*w<V71pwB`n*Uol5
71773 z7Rzv5j%)mGN4NhyA`OLEwG-~~=qLXU`06w1aZQf<9j@K}$T4R4ZPMeVhGn?l5znyv
71775 z67lZJ{`eavm2!s}Fp|JXQU-)oH2Hfo`NZ1bGGHWuk)#X=t7rmZ1ODy_Ghifvk)#X=
71776 zt7!7SqVkEg!DYZm0wYNo5H=}Y^V|Qmd1T7>`2OAEx5|C;guE<o%cm-5a`u>H4~tdm
71777 z6SZ4U*Yosp-KTfzgZh+dQJ+><)Lr#ue1@>T+}~avlxfdQgie?YvtcQ$hi%Df&U2=f
71780 zbo>-c0wYNot~acY?WiXvw9I}iXqo+(l-Z93EwdjBT4p~M=??jB4x{xqt-W#GO>1si
71781 zZ(H(pqqJ@vZ}WsD^u6NNr>-P0l9b{13a-;_?#H9FnBh9z)~9%smP%q)8KoTrr>c(9
71783 z^}~$Xo3#&<Gd<#(qbzW*7qj?xt-!r?%+gSr31!(8)22Hn&nM@+Yc<sL5T>aGYK_{W
71784 z_Nf!<vbtm1a1o4*=f`0otbwg?08YYXxSO2vK2mq-*?Ot&HSNA5`n0~P@97tra@@|#
71785 z%+4%JMn#Wg&Sq|A9+?Da2s(o)!Q5bZurb&b91YF|H-pF7AlsPj%udTL%&yLE$?nUZ
71789 z-6%aQy{swMwAPHTnNhQ#W>wARnq4(VYR=SLt+`k8yd0LB%45q@%k#=B%6;XX<wNCD
71790 z<;&$e<)^hlZDZ}|+R3$ZYM0iouiaj|zxG7!#oAl7kLy%jeO-Iq#JX8^i-k;5-f#1i
71791 zQ9HHLCicUnZ+%P^BX7gf)-oUsy-t4gTYNy|ZCK3XT#BCyl3EedN=W>?X;|t9&FZDJ
71792 z5|Y!)@roY-5j?`JNH{kYEbSdg1+EW)dGA0fxEgFKSh`^#6?}P{3NGI;kP3Jlm(ny9
71794 zG!^)AL;avxy_BY@z?U03=TvzY;Z&gCQ~BX~om9ZP?qm60Cl!2d-;Z2b@O!#YMK9&H
71795 zEa3SFO4C%JvnU)-QvvIxG))Dnm*cV5YMB(Hv=Wl5={O!g9j6!5kNQLMH8bXwHwmYg
71796 z(n?59FUQk14lZewRzh-bK8~mU#dR2_9}W1I)?t)?G~i$Sj-WL4FMUUFJoPWO7t@ah
71799 zH+(h<waca()~i{2G2JlWUurMqcGM{TTl`<zo5Ku`Ty+n;=ddJZKv>$&ap!1VlFp-I
71800 z287ub548b*i{-Pl#fxpg-_BtMgxNN#E9tX!1D4_$W~@syp)j*87iufsp#%5I{eJp7
71801 z#|nSO8Z-MAqdj#$wK20bq(1|X84zacD&Mo10b#cG^u0|bF~j2)>x5g2xgNsIzK{J>
71806 zLOfov^4Ju*df7Hm9@E-@+c}-qBwuxYgBy<9=RFO_#YuNb|LPs-f0q5*>6_eVGO4XY
71807 z5x-eAOcBcb7kjhKybZ>R31X7*>I{>w=9;{;SS%AO#Txii6Y5XlhPmH>zcBZ|fScxi
71808 z6MkgwKZ0B4ehdE6-2W1;nEMs@GjsnlxN7cK;Roja1Gr}H*Wicd{zJHK?$_bZ&Hc~g
71811 diff --git a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/full-font.tests b/src/third_par…
71813 --- a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/full-font.tests
71814 +++ b/src/third_party/harfbuzz-ng/src/test/subset/data/tests/full-font.tests
71815 @@ -9,4 +9,5 @@ drop-hints.txt
71821 diff --git a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/layout.notonastaliqurdu.tests b…
71823 --- a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/layout.notonastaliqurdu.tests
71824 +++ b/src/third_party/harfbuzz-ng/src/test/subset/data/tests/layout.notonastaliqurdu.tests
71825 @@ -1,5 +1,6 @@
71827 NotoNastaliqUrdu-Bold.ttf
71828 +NotoNastaliqUrdu-Regular.ttf
71832 @@ -11,4 +12,5 @@ SUBSETS:
71838 diff --git a/src/third_party/harfbuzz-ng/src/test/subset/run-tests.py b/src/third_party/harfbuzz-ng…
71840 --- a/src/third_party/harfbuzz-ng/src/test/subset/run-tests.py
71841 +++ b/src/third_party/harfbuzz-ng/src/test/subset/run-tests.py
71842 @@ -11,7 +11,6 @@ import sys
71846 -import hashlib
71850 @@ -63,11 +62,11 @@ def run_test (test, should_check_ots):
71854 - expected_hash = hashlib.sha224(fp.read()).hexdigest()
71857 - actual_hash = hashlib.sha224(fp.read()).hexdigest()
71860 - if expected_hash == actual_hash:
71863 print ("Checking output with ots-sanitize.")
71865 diff --git a/src/third_party/harfbuzz-ng/src/util/Makefile.sources b/src/third_party/harfbuzz-ng/sr…
71867 --- a/src/third_party/harfbuzz-ng/src/util/Makefile.sources
71868 +++ b/src/third_party/harfbuzz-ng/src/util/Makefile.sources
71869 @@ -4,6 +4,8 @@ HB_VIEW_sources = \
71870 font-options.hh \
71871 hb-view.cc \
71872 helper-cairo-ansi.hh \
71873 + helper-cairo-ft.hh \
71874 + helper-cairo-user.hh \
71875 helper-cairo.hh \
71876 main-font-text.hh \
71878 diff --git a/src/third_party/harfbuzz-ng/src/util/ansi-print.hh b/src/third_party/harfbuzz-ng/src/u…
71880 --- a/src/third_party/harfbuzz-ng/src/util/ansi-print.hh
71881 +++ b/src/third_party/harfbuzz-ng/src/util/ansi-print.hh
71882 @@ -249,7 +249,7 @@ block_best (const biimage_t &bi, bool *inverse)
71886 - /* Make the sums cummulative */
71889 row_sum[i] += row_sum[i - 1];
71890 row_sum_i[i] += row_sum_i[i - 1];
71891 diff --git a/src/third_party/harfbuzz-ng/src/util/font-options.hh b/src/third_party/harfbuzz-ng/src…
71893 --- a/src/third_party/harfbuzz-ng/src/util/font-options.hh
71894 +++ b/src/third_party/harfbuzz-ng/src/util/font-options.hh
71895 @@ -53,11 +53,13 @@ struct font_options_t : face_options_t
71909 @@ -73,10 +75,10 @@ static struct supported_font_funcs_t {
71917 - {"ot", hb_ot_font_set_funcs},
71921 @@ -94,6 +96,8 @@ font_options_t::post_parse (GError **error)
71930 @@ -137,6 +141,14 @@ font_options_t::post_parse (GError **error)
71945 @@ -265,7 +277,11 @@ font_options_t::add_options (option_parser_t *parser)
71946 …LBACK, (gpointer) &parse_font_ppem, "Set x,y pixels per EM (default: 0; disabled)", "1/2 integers"…
71947 {"font-ptem", 0, 0,
71948 … G_OPTION_ARG_DOUBLE, &this->ptem, "Set font point-size (default: 0; disabled)", "point-size"},
71949 + {"font-slant", 0, 0,
71950 + G_OPTION_ARG_DOUBLE, &this->slant, "Set synthetic slant (default: 0)", "slant ratio; …
71951 {"font-funcs", 0, 0, G_OPTION_ARG_STRING, &this->font_funcs, text, "impl"},
71952 + {"sub-font", 0, G_OPTION_FLAG_HIDDEN,
71953 + G_OPTION_ARG_NONE, &this->sub_font, "Create a sub-font (default: false)", "boolean"},
71954 …{"ft-load-flags", 0, 0, G_OPTION_ARG_INT, &this->ft_load_flags, "Set FreeType load-flags (defaul…
71957 diff --git a/src/third_party/harfbuzz-ng/src/util/hb-ot-shape-closure.cc b/src/third_party/harfbuzz
71959 --- a/src/third_party/harfbuzz-ng/src/util/hb-ot-shape-closure.cc
71960 +++ b/src/third_party/harfbuzz-ng/src/util/hb-ot-shape-closure.cc
71961 @@ -59,8 +59,8 @@ struct shape_closure_consumer_t
71965 - template <typename text_options_t>
71966 - bool consume_line (text_options_t &text_opts)
71972 diff --git a/src/third_party/harfbuzz-ng/src/util/hb-subset.cc b/src/third_party/harfbuzz-ng/src/ut…
71974 --- a/src/third_party/harfbuzz-ng/src/util/hb-subset.cc
71975 +++ b/src/third_party/harfbuzz-ng/src/util/hb-subset.cc
71976 @@ -740,7 +740,7 @@ subset_main_t::add_options ()
71977 …{"glyphs-", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_CALLBACK, (gpointer) &parse_glyphs, "Specify …
71980 - {"glyphs-file", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_file_for<parse_glyphs>, "Specif…
71981 + {"glyphs-file", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_file_for<parse_glyphs>, "Specif…
71983 …K, (gpointer) &parse_text, "Specify text to include in the subset. Use --text-=... to subtract c…
71984 …{"text-", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_CALLBACK, (gpointer) &parse_text, "Specify text…
71985 diff --git a/src/third_party/harfbuzz-ng/src/util/helper-cairo-ft.hh b/src/third_party/harfbuzz-ng/…
71988 --- /dev/null
71989 +++ b/src/third_party/harfbuzz-ng/src/util/helper-cairo-ft.hh
71990 @@ -0,0 +1,120 @@
72020 +#include "font-options.hh"
72022 +#include <cairo-ft.h>
72023 +#include <hb-ft.h>
72042 + * TODO Perhaps add API to hb-ft to encapsulate this code. */
72055 + const char *blob_data = hb_blob_get_data (font_opts->blob, &blob_length);
72060 + font_opts->face_index,
72075 + const int *coords = hb_font_get_var_coords_normalized (font_opts->font, &num_coords);
72089 + cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, font_opts->ft_load_flags);
72111 diff --git a/src/third_party/harfbuzz-ng/src/util/helper-cairo-user.hh b/src/third_party/harfbuzz-n…
72114 --- /dev/null
72115 +++ b/src/third_party/harfbuzz-ng/src/util/helper-cairo-user.hh
72116 @@ -0,0 +1,316 @@
72146 +#include "font-options.hh"
72151 +#include "hb-blob.hh"
72230 + cairo_scale (cr, +1./x_scale, -1./y_scale);
72246 + if (unlikely (src->length < length))
72249 + memcpy (data, src->arrayZ, length);
72270 + cairo_scale (cr, +1./x_scale, -1./y_scale);
72273 + hb_bytes_t bytes = blob->as_bytes ();
72403 + hb_font_reference (font_opts->font),
72408 + hb_face_t *face = hb_font_get_face (font_opts->font);
72433 diff --git a/src/third_party/harfbuzz-ng/src/util/helper-cairo.hh b/src/third_party/harfbuzz-ng/src…
72435 --- a/src/third_party/harfbuzz-ng/src/util/helper-cairo.hh
72436 +++ b/src/third_party/harfbuzz-ng/src/util/helper-cairo.hh
72437 @@ -29,10 +29,11 @@
72439 #include "view-options.hh"
72440 #include "output-options.hh"
72441 +#include "helper-cairo-ft.hh"
72442 +#include "helper-cairo-user.hh"
72444 -#include <cairo-ft.h>
72445 -#include <hb-ft.h>
72446 -#include FT_MULTIPLE_MASTERS_H
72450 #include "helper-cairo-ansi.hh"
72452 @@ -65,74 +66,27 @@ _cairo_eps_surface_create_for_stream (cairo_write_func_t write_func,
72456 -
72457 -static FT_Library ft_library;
72458 -
72459 -#ifdef HAVE_ATEXIT
72460 -static inline
72461 -void free_ft_library ()
72465 - FT_Done_FreeType (ft_library);
72471 -#endif
72477 hb_font_t *font = hb_font_reference (font_opts->font);
72480 - /* We cannot use the FT_Face from hb_font_t, as doing so will confuse hb_font_t because
72481 - * cairo will reset the face size. As such, create new face...
72482 - * TODO Perhaps add API to hb-ft to encapsulate this code. */
72483 - FT_Face ft_face = nullptr;//hb_ft_font_get_face (font);
72484 - if (!ft_face)
72485 - {
72486 - if (!ft_library)
72487 - {
72488 - FT_Init_FreeType (&ft_library);
72489 -#ifdef HAVE_ATEXIT
72490 - atexit (free_ft_library);
72491 -#endif
72492 - }
72493 -
72494 - unsigned int blob_length;
72495 - const char *blob_data = hb_blob_get_data (font_opts->blob, &blob_length);
72496 -
72497 - if (FT_New_Memory_Face (ft_library,
72498 - (const FT_Byte *) blob_data,
72499 - blob_length,
72500 - font_opts->face_index,
72501 - &ft_face))
72502 - fail (false, "FT_New_Memory_Face fail");
72503 - }
72504 - if (!ft_face)
72505 - {
72506 - /* This allows us to get some boxes at least... */
72507 - cairo_face = cairo_toy_font_face_create ("@cairo:sans",
72508 - CAIRO_FONT_SLANT_NORMAL,
72509 - CAIRO_FONT_WEIGHT_NORMAL);
72510 - }
72514 - {
72515 -#ifdef HAVE_FT_SET_VAR_BLEND_COORDINATES
72516 - unsigned int num_coords;
72517 - const int *coords = hb_font_get_var_coords_normalized (font, &num_coords);
72518 - if (num_coords)
72519 - {
72520 - FT_Fixed *ft_coords = (FT_Fixed *) calloc (num_coords, sizeof (FT_Fixed));
72521 - if (ft_coords)
72522 - {
72523 - for (unsigned int i = 0; i < num_coords; i++)
72524 - ft_coords[i] = coords[i] << 2;
72525 - FT_Set_Var_Blend_Coordinates (ft_face, num_coords, ft_coords);
72526 - free (ft_coords);
72527 - }
72528 - }
72529 -#endif
72532 - cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, font_opts->ft_load_flags);
72533 - }
72537 @@ -140,6 +94,9 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
72539 font_opts->font_size_x,
72540 font_opts->font_size_y);
72542 + font_matrix.xy = -font_opts->slant * font_opts->font_size_x;
72547 @@ -165,17 +122,10 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
72551 - bool ret = false;
72552 -#ifdef FT_HAS_COLOR
72553 - FT_Face ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
72554 - if (ft_face)
72555 - {
72556 - if (FT_HAS_COLOR (ft_face))
72557 - ret = true;
72558 - cairo_ft_scaled_font_unlock_face (scaled_font);
72559 - }
72560 -#endif
72561 - return ret;
72569 @@ -427,11 +377,11 @@ static const char *helper_cairo_supported_formats[] =
72573 - typename output_options_t>
72578 - output_options_t *out_opts,
72583 diff --git a/src/third_party/harfbuzz-ng/src/util/main-font-text.hh b/src/third_party/harfbuzz-ng/s…
72585 --- a/src/third_party/harfbuzz-ng/src/util/main-font-text.hh
72586 +++ b/src/third_party/harfbuzz-ng/src/util/main-font-text.hh
72587 @@ -31,8 +31,14 @@
72591 -template <typename consumer_t, typename font_options_t, typename text_options_t>
72592 -struct main_font_text_t : option_parser_t, font_options_t, text_options_t, consumer_t
72604 @@ -53,8 +59,8 @@ struct main_font_text_t : option_parser_t, font_options_t, text_options_t, consu
72608 - font_options_t::add_options (this);
72609 - text_options_t::add_options (this);
72615 diff --git a/src/third_party/harfbuzz-ng/src/util/shape-options.hh b/src/third_party/harfbuzz-ng/sr…
72617 --- a/src/third_party/harfbuzz-ng/src/util/shape-options.hh
72618 +++ b/src/third_party/harfbuzz-ng/src/util/shape-options.hh
72619 @@ -51,6 +51,8 @@ struct shape_options_t
72628 @@ -90,185 +92,22 @@ struct shape_options_t
72632 - hb_buffer_t *text_buffer = nullptr;
72633 - if (verify)
72634 - {
72635 - text_buffer = hb_buffer_create ();
72636 - hb_buffer_append (text_buffer, buffer, 0, -1);
72637 - }
72638 -
72642 - *error = "All shapers failed.";
72650 - if (verify && !verify_buffer (buffer, text_buffer, font, error))
72651 - goto fail;
72652 -
72653 - if (text_buffer)
72654 - hb_buffer_destroy (text_buffer);
72655 -
72659 - if (text_buffer)
72660 - hb_buffer_destroy (text_buffer);
72661 -
72665 - bool verify_buffer (hb_buffer_t *buffer,
72666 - hb_buffer_t *text_buffer,
72667 - hb_font_t *font,
72668 - const char **error=nullptr)
72669 - {
72670 - if (!verify_buffer_monotone (buffer, error))
72671 - return false;
72672 - if (!verify_buffer_safe_to_break (buffer, text_buffer, font, error))
72673 - return false;
72674 - return true;
72675 - }
72676 -
72677 - bool verify_buffer_monotone (hb_buffer_t *buffer, const char **error=nullptr)
72678 - {
72679 - /* Check that clusters are monotone. */
72680 - if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES ||
72681 - cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
72682 - {
72683 - bool is_forward = HB_DIRECTION_IS_FORWARD (hb_buffer_get_direction (buffer));
72684 -
72685 - unsigned int num_glyphs;
72686 - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, &num_glyphs);
72687 -
72688 - for (unsigned int i = 1; i < num_glyphs; i++)
72689 - if (info[i-1].cluster != info[i].cluster &&
72690 - (info[i-1].cluster < info[i].cluster) != is_forward)
72691 - {
72692 - if (error)
72693 - *error = "clusters are not monotone.";
72694 - return false;
72695 - }
72696 - }
72697 -
72698 - return true;
72699 - }
72700 -
72701 - bool verify_buffer_safe_to_break (hb_buffer_t *buffer,
72702 - hb_buffer_t *text_buffer,
72703 - hb_font_t *font,
72704 - const char **error=nullptr)
72705 - {
72706 - if (cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES &&
72707 - cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
72708 - {
72709 - /* Cannot perform this check without monotone clusters.
72710 - * Then again, unsafe-to-break flag is much harder to use without
72711 - * monotone clusters. */
72712 - return true;
72713 - }
72714 -
72715 - /* Check that breaking up shaping at safe-to-break is indeed safe. */
72716 -
72717 - hb_buffer_t *fragment = hb_buffer_create_similar (buffer);
72718 - hb_buffer_t *reconstruction = hb_buffer_create_similar (buffer);
72719 -
72720 - unsigned int num_glyphs;
72721 - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, &num_glyphs);
72722 -
72723 - unsigned int num_chars;
72724 - hb_glyph_info_t *text = hb_buffer_get_glyph_infos (text_buffer, &num_chars);
72725 -
72726 - /* Chop text and shape fragments. */
72727 - bool forward = HB_DIRECTION_IS_FORWARD (hb_buffer_get_direction (buffer));
72728 - unsigned int start = 0;
72729 - unsigned int text_start = forward ? 0 : num_chars;
72730 - unsigned int text_end = text_start;
72731 - for (unsigned int end = 1; end < num_glyphs + 1; end++)
72732 - {
72733 - if (end < num_glyphs &&
72734 - (info[end].cluster == info[end-1].cluster ||
72735 - info[end-(forward?0:1)].mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK))
72736 - continue;
72737 -
72738 - /* Shape segment corresponding to glyphs start..end. */
72739 - if (end == num_glyphs)
72740 - {
72741 - if (forward)
72742 - text_end = num_chars;
72743 - else
72744 - text_start = 0;
72745 - }
72746 - else
72747 - {
72748 - if (forward)
72749 - {
72750 - unsigned int cluster = info[end].cluster;
72751 - while (text_end < num_chars && text[text_end].cluster < cluster)
72752 - text_end++;
72753 - }
72754 - else
72755 - {
72756 - unsigned int cluster = info[end - 1].cluster;
72757 - while (text_start && text[text_start - 1].cluster >= cluster)
72758 - text_start--;
72759 - }
72760 - }
72761 - assert (text_start < text_end);
72762 -
72763 - if (0)
72764 - printf("start %d end %d text start %d end %d\n", start, end, text_start, text_end);
72765 -
72766 - hb_buffer_clear_contents (fragment);
72767 -
72768 - hb_buffer_flags_t flags = hb_buffer_get_flags (fragment);
72769 - if (0 < text_start)
72770 - flags = (hb_buffer_flags_t) (flags & ~HB_BUFFER_FLAG_BOT);
72771 - if (text_end < num_chars)
72772 - flags = (hb_buffer_flags_t) (flags & ~HB_BUFFER_FLAG_EOT);
72773 - hb_buffer_set_flags (fragment, flags);
72774 -
72775 - hb_buffer_append (fragment, text_buffer, text_start, text_end);
72776 - if (!hb_shape_full (font, fragment, features, num_features, shapers))
72777 - {
72778 - if (error)
72779 - *error = "All shapers failed while shaping fragment.";
72780 - hb_buffer_destroy (reconstruction);
72781 - hb_buffer_destroy (fragment);
72782 - return false;
72783 - }
72784 - hb_buffer_append (reconstruction, fragment, 0, -1);
72785 -
72786 - start = end;
72787 - if (forward)
72788 - text_start = text_end;
72789 - else
72790 - text_end = text_start;
72791 - }
72792 -
72793 - bool ret = true;
72794 - hb_buffer_diff_flags_t diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
72795 - if (diff)
72796 - {
72797 - if (error)
72798 - *error = "Safe-to-break test failed.";
72799 - ret = false;
72800 -
72801 - /* Return the reconstructed result instead so it can be inspected. */
72802 - hb_buffer_set_length (buffer, 0);
72803 - hb_buffer_append (buffer, reconstruction, 0, -1);
72804 - }
72805 -
72806 - hb_buffer_destroy (reconstruction);
72807 - hb_buffer_destroy (fragment);
72808 -
72809 - return ret;
72810 - }
72811 -
72815 @@ -299,6 +138,7 @@ struct shape_options_t
72823 @@ -422,6 +262,7 @@ shape_options_t::add_options (option_parser_t *parser)
72824 …{"utf8-clusters", 0, 0, G_OPTION_ARG_NONE, &this->utf8_clusters, "Use UTF8 byte indices, not char…
72825 …{"cluster-level", 0, 0, G_OPTION_ARG_INT, &this->cluster_level, "Cluster merging level (default:…
72826 …{"normalize-glyphs",0, 0, G_OPTION_ARG_NONE, &this->normalize_glyphs, "Rearrange glyph clusters in…
72827 + {"unsafe-to-concat",0, 0, G_OPTION_ARG_NONE, &this->unsafe_to_concat, "Produce unsafe-to-conca…
72828 …{"verify", 0, 0, G_OPTION_ARG_NONE, &this->verify, "Perform sanity checks on shaping results", …
72829 {"num-iterations", 'n', G_OPTION_FLAG_IN_MAIN,
72830 G_OPTION_ARG_INT, &this->num_iterations, "Run shaper N times (default: 1)", "N"},
72831 diff --git a/src/third_party/icu/README.chromium b/src/third_party/icu/README.chromium
72833 --- a/src/third_party/icu/README.chromium
72835 @@ -264,3 +264,8 @@ D. Local Modifications
72836 - upstream bug:
72837 https://unicode-org.atlassian.net/browse/ICU-21865
72842 + - https://github.com/unicode-org/icu/pull/2070
72843 + - https://unicode-org.atlassian.net/browse/ICU-22005
72845 diff --git a/src/third_party/icu/patches/formatted_string_builder.patch b/src/third_party/icu/patch…
72848 --- /dev/null
72850 @@ -0,0 +1,191 @@
72851 +diff --git a/source/i18n/formatted_string_builder.cpp b/source/i18n/formatted_string_builder.cpp
72853 +--- a/source/i18n/formatted_string_builder.cpp
72855 +@@ -6,6 +6,7 @@
72863 +@@ -197,6 +198,9 @@ FormattedStringBuilder::splice(int32_t startThis, int32_t endThis, const Unic…
72864 + int32_t thisLength = endThis - startThis;
72865 + int32_t otherLength = endOther - startOther;
72866 + int32_t count = otherLength - thisLength;
72873 +@@ -221,6 +225,9 @@ int32_t FormattedStringBuilder::append(const FormattedStringBuilder &other, UE…
72883 +@@ -255,12 +262,18 @@ int32_t FormattedStringBuilder::prepareForInsert(int32_t index, int32_t coun…
72889 ++ U_ASSERT(getCapacity() - fZero >= fLength);
72893 + if (index == 0 && fZero - count >= 0) {
72895 + fZero -= count;
72898 +- } else if (index == fLength && fZero + fLength + count < getCapacity()) {
72899 ++ } else if (index == fLength && count <= getCapacity() - fZero - fLength) {
72902 + return fZero + fLength - count;
72903 +@@ -275,18 +288,26 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_…
72907 +- if (fLength + count > oldCapacity) {
72908 +- if ((fLength + count) > INT32_MAX / 2) {
72909 +- // If we continue, then newCapacity will overflow int32_t in the next line.
72913 ++ return -1;
72921 + return -1;
72923 +- int32_t newCapacity = (fLength + count) * 2;
72924 +- int32_t newZero = newCapacity / 2 - (fLength + count) / 2;
72927 ++ newZero = (newCapacity - newLength) / 2;
72930 +- auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * newCapacity));
72931 +- auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * newCapacity));
72937 +@@ -315,10 +336,8 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t…
72941 +- fZero = newZero;
72942 +- fLength += count;
72944 +- int32_t newZero = oldCapacity / 2 - (fLength + count) / 2;
72945 ++ newZero = (oldCapacity - newLength) / 2;
72949 +@@ -331,18 +350,20 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_…
72952 + sizeof(Field) * (fLength - index));
72953 +-
72954 +- fZero = newZero;
72955 +- fLength += count;
72957 +- U_ASSERT((fZero + index) >= 0);
72964 +- // TODO: Reset the heap here? (If the string after removal can fit on stack?)
72967 ++ U_ASSERT(count <= (fLength - index));
72968 ++ U_ASSERT(index <= getCapacity() - fZero);
72971 +- U_ASSERT(position >= 0);
72975 + sizeof(char16_t) * (fLength - index - count));
72976 +diff --git a/source/test/intltest/formatted_string_builder_test.cpp b/source/test/intltest/formatt…
72978 +--- a/source/test/intltest/formatted_string_builder_test.cpp
72980 +@@ -22,6 +22,7 @@ class FormattedStringBuilderTest : public IntlTest {
72988 +@@ -50,6 +51,7 @@ void FormattedStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const
72996 +@@ -308,6 +310,45 @@ void FormattedStringBuilderTest::testCodePoints() {
73043 diff --git a/src/third_party/icu/source/i18n/formatted_string_builder.cpp b/src/third_party/icu/sou…
73045 --- a/src/third_party/icu/source/i18n/formatted_string_builder.cpp
73047 @@ -6,6 +6,7 @@
73055 @@ -197,6 +198,9 @@ FormattedStringBuilder::splice(int32_t startThis, int32_t endThis, const Unicod
73056 int32_t thisLength = endThis - startThis;
73057 int32_t otherLength = endOther - startOther;
73058 int32_t count = otherLength - thisLength;
73065 @@ -221,6 +225,9 @@ int32_t FormattedStringBuilder::append(const FormattedStringBuilder &other, UErr
73075 @@ -255,12 +262,18 @@ int32_t FormattedStringBuilder::prepareForInsert(int32_t index, int32_t count…
73081 + U_ASSERT(getCapacity() - fZero >= fLength);
73085 if (index == 0 && fZero - count >= 0) {
73087 fZero -= count;
73090 - } else if (index == fLength && fZero + fLength + count < getCapacity()) {
73091 + } else if (index == fLength && count <= getCapacity() - fZero - fLength) {
73094 return fZero + fLength - count;
73095 @@ -275,18 +288,26 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t…
73099 - if (fLength + count > oldCapacity) {
73100 - if ((fLength + count) > INT32_MAX / 2) {
73101 - // If we continue, then newCapacity will overflow int32_t in the next line.
73105 + return -1;
73113 return -1;
73115 - int32_t newCapacity = (fLength + count) * 2;
73116 - int32_t newZero = newCapacity / 2 - (fLength + count) / 2;
73119 + newZero = (newCapacity - newLength) / 2;
73122 - auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * newCapacity));
73123 - auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * newCapacity));
73129 @@ -315,10 +336,8 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t …
73133 - fZero = newZero;
73134 - fLength += count;
73136 - int32_t newZero = oldCapacity / 2 - (fLength + count) / 2;
73137 + newZero = (oldCapacity - newLength) / 2;
73141 @@ -331,18 +350,20 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t…
73144 sizeof(Field) * (fLength - index));
73145 -
73146 - fZero = newZero;
73147 - fLength += count;
73149 - U_ASSERT((fZero + index) >= 0);
73156 - // TODO: Reset the heap here? (If the string after removal can fit on stack?)
73159 + U_ASSERT(count <= (fLength - index));
73160 + U_ASSERT(index <= getCapacity() - fZero);
73163 - U_ASSERT(position >= 0);
73167 sizeof(char16_t) * (fLength - index - count));
73168 diff --git a/src/third_party/icu/source/test/intltest/formatted_string_builder_test.cpp b/src/third…
73170 --- a/src/third_party/icu/source/test/intltest/formatted_string_builder_test.cpp
73172 @@ -22,6 +22,7 @@ class FormattedStringBuilderTest : public IntlTest {
73180 @@ -50,6 +51,7 @@ void FormattedStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const
73188 @@ -308,6 +310,45 @@ void FormattedStringBuilderTest::testCodePoints() {
73234 diff --git a/src/third_party/leveldatabase/env_chromium.cc b/src/third_party/leveldatabase/env_chro…
73236 --- a/src/third_party/leveldatabase/env_chromium.cc
73238 @@ -5,12 +5,12 @@
73248 -#include "base/cxx17_backports.h"
73252 @@ -624,7 +624,7 @@ int GetCorruptionCode(const leveldb::Status& status) {
73256 - const size_t kNumPatterns = base::size(patterns);
73261 @@ -637,7 +637,7 @@ int GetCorruptionCode(const leveldb::Status& status) {
73265 - return base::size(patterns) + 1;
73270 diff --git a/src/third_party/libxml/BUILD.gn b/src/third_party/libxml/BUILD.gn
73272 --- a/src/third_party/libxml/BUILD.gn
73274 @@ -75,6 +75,7 @@ config("libxml_warnings") {
73282 @@ -98,6 +99,7 @@ static_library("xml_reader") {
73288 # The XmlWriter is considered safe to use from any target.
73290 @@ -112,6 +114,7 @@ static_library("xml_writer") {
73298 @@ -119,6 +122,7 @@ static_library("libxml_utils") {
73306 @@ -155,7 +159,6 @@ static_library("libxml") {
73310 - #"src/DOCBparser.c",
73314 @@ -170,14 +173,12 @@ static_library("libxml") {
73318 - "src/elfgcchack.h",
73325 - "src/include/libxml/DOCBparser.h",
73329 diff --git a/src/third_party/libxml/README.chromium b/src/third_party/libxml/README.chromium
73331 --- a/src/third_party/libxml/README.chromium
73333 @@ -1,7 +1,7 @@
73336 -Version: eab86522163ec52602a020f62baa9f6cf87ec870
73337 -CPEPrefix: cpe:/a:xmlsoft:libxml2:2.9.12
73343 @@ -12,7 +12,6 @@ libxml2 from libxml.org.
73347 -- chromium-issue-599427.patch: workaround for VS 2015 Update 2 code-gen bug
73348 - chromium-issue-628581.patch: See https://crbug.com/628581#c18
73349 - chromium-issue-894933.patch: Use ptrdiff_t instead of unsigned long for
73351 diff --git a/src/third_party/libxml/chromium/chromium-issue-599427.patch b/src/third_party/libxml/c…
73354 --- a/src/third_party/libxml/chromium/chromium-issue-599427.patch
73356 @@ -1,28 +0,0 @@
73357 ---- a/xmlstring.c 2016-05-13 17:24:58.870079372 +0900
73358 -+++ b/xmlstring.c 2016-04-25 13:58:09.879238595 +0900
73359 -@@ -835,16 +835,20 @@
73360 - while ( len-- > 0) {
73361 - if ( !*ptr )
73362 - break;
73363 -- if ( (ch = *ptr++) & 0x80)
73364 -- while ((ch<<=1) & 0x80 ) {
73365 -- if (*ptr == 0) break;
73366 -+ if ( (ch = *ptr++) & 0x80) {
73367 -+ // Workaround for an optimization bug in VS 2015 Update 2, remove
73368 -+ // once the fix is released. crbug.com/599427
73369 -+ // https://connect.microsoft.com/VisualStudio/feedback/details/2582138
73370 -+ xmlChar ch2 = ch;
73371 -+ while ((ch2<<=1) & 0x80 ) {
73372 - ptr++;
73373 -- }
73374 -+ if (*ptr == 0) break;
73375 -+ }
73376 -+ }
73377 - }
73378 - return (ptr - utf);
73379 - }
73380 -
73381 --
73382 - /**
73383 - * xmlUTF8Strndup:
73384 - * @utf: the input UTF8 *
73385 diff --git a/src/third_party/libxml/chromium/roll.py b/src/third_party/libxml/chromium/roll.py
73387 --- a/src/third_party/libxml/chromium/roll.py
73389 @@ -1,4 +1,4 @@
73390 -#!/usr/bin/env python
73394 # Use of this source code is governed by a BSD-style license that can be
73395 @@ -66,7 +66,6 @@ import tempfile
73399 - 'chromium-issue-599427.patch',
73400 'chromium-issue-628581.patch',
73401 'libxml2-2.9.4-security-xpath-nodetab-uaf.patch',
73402 'chromium-issue-708434.patch',
73403 @@ -97,7 +96,6 @@ SHARED_XML_CONFIGURE_OPTIONS = [
73404 ('--without-c14n', 'c14n=no'),
73405 ('--without-catalog', 'catalog=no'),
73406 ('--without-debug', 'xml_debug=no'),
73407 - ('--without-docbook', 'docb=no'),
73408 ('--without-ftp', 'ftp=no'),
73409 ('--without-http', 'http=no'),
73410 ('--without-iconv', 'iconv=no'),
73411 @@ -115,6 +113,7 @@ SHARED_XML_CONFIGURE_OPTIONS = [
73412 ('--without-valid', 'valid=no'),
73413 ('--without-xinclude', 'xinclude=no'),
73414 ('--without-xptr', 'xptr=no'),
73415 + ('--without-xptr-locs', 'xptr_locs=no'),
73416 ('--without-zlib', 'zlib=no'),
73419 @@ -320,7 +319,8 @@ def prepare_libxml_distribution(src_path, libxml2_repo_path, temp_dir):
73423 - ['git', 'log', '-n', '1', '--pretty=format:%H', 'HEAD'])
73424 + ['git', 'log', '-n', '1', '--pretty=format:%H',
73427 'git archive HEAD | tar -x -C "%s"' % temp_src_path,
73429 @@ -341,8 +341,8 @@ def prepare_libxml_distribution(src_path, libxml2_repo_path, temp_dir):
73433 - '''END {printf("%s-%s.tar.gz", p, v)}' Makefile''',
73434 - shell=True)
73435 + '''END {printf("%s-%s.tar.xz", p, v)}' Makefile''',
73440 @@ -363,7 +363,7 @@ def roll_libxml_linux(src_path, libxml2_repo_path):
73444 - 'tar xzf %s --strip-components=1' % tar_file,
73445 + 'tar xJf %s --strip-components=1' % tar_file,
73449 @@ -422,8 +422,9 @@ def roll_libxml_mac(src_path, icu4c_path):
73453 - commit = subprocess.check_output(['awk', '/Version:/ {print $2}',
73454 - 'README.chromium'])
73460 git('commit', '-am', commit_message)
73461 @@ -432,7 +433,8 @@ def roll_libxml_mac(src_path, icu4c_path):
73465 - status = subprocess.check_output(['git', 'status', '-s'])
73467 + '-s']).decode('ascii')
73471 diff --git a/src/third_party/libxml/chromium/xml_reader.cc b/src/third_party/libxml/chromium/xml_re…
73473 --- a/src/third_party/libxml/chromium/xml_reader.cc
73475 @@ -149,19 +149,15 @@ bool XmlReader::GetAllDeclaredNamespaces(
73479 - if (NodeType() != XML_READER_TYPE_TEXT)
73480 - return false;
73481 -
73482 - *content = XmlStringToStdString(xmlTextReaderConstValue(reader_));
73483 - return true;
73488 - if (NodeType() != XML_READER_TYPE_CDATA)
73489 - return false;
73493 - *content = XmlStringToStdString(xmlTextReaderConstValue(reader_));
73494 - return true;
73500 @@ -226,3 +222,11 @@ bool XmlReader::SkipToElement() {
73512 diff --git a/src/third_party/libxml/chromium/xml_reader.h b/src/third_party/libxml/chromium/xml_rea…
73514 --- a/src/third_party/libxml/chromium/xml_reader.h
73516 @@ -64,11 +64,13 @@ class XmlReader {
73520 - // Sets |content| to the content of the current node if it is a #text/#cdata
73521 - // node.
73522 - // Returns true if the current node is a #text/#cdata node, false otherwise.
73524 + // text, cdata, or significant-whitespace node, respectively.
73532 // false for self-closing elements (e.g. <foo/>). Use IsEmptyElement() to
73533 @@ -101,6 +103,11 @@ class XmlReader {
73545 diff --git a/src/third_party/libxml/linux/config.h b/src/third_party/libxml/linux/config.h
73547 --- a/src/third_party/libxml/linux/config.h
73549 @@ -19,13 +19,6 @@
73553 -/* Define to 1 if you have the <ctype.h> header file. */
73554 -#define HAVE_CTYPE_H 1
73555 -
73556 -/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
73557 - */
73558 -#define HAVE_DIRENT_H 1
73559 -
73563 @@ -35,18 +28,9 @@
73567 -/* Define to 1 if you have the <errno.h> header file. */
73568 -#define HAVE_ERRNO_H 1
73569 -
73573 -/* Define to 1 if you have the <float.h> header file. */
73574 -#define HAVE_FLOAT_H 1
73575 -
73576 -/* Define to 1 if you have the `fprintf' function. */
73577 -#define HAVE_FPRINTF 1
73578 -
73582 @@ -68,21 +52,9 @@
73583 /* Define if readline library is there (-lreadline) */
73586 -/* Define to 1 if you have the <limits.h> header file. */
73587 -#define HAVE_LIMITS_H 1
73588 -
73589 -/* Define to 1 if you have the `localtime' function. */
73590 -#define HAVE_LOCALTIME 1
73591 -
73595 -/* Define to 1 if you have the <malloc.h> header file. */
73596 -#define HAVE_MALLOC_H 1
73597 -
73598 -/* Define to 1 if you have the <math.h> header file. */
73599 -#define HAVE_MATH_H 1
73600 -
73604 @@ -94,9 +66,6 @@
73608 -/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
73609 -/* #undef HAVE_NDIR_H */
73610 -
73614 @@ -106,18 +75,12 @@
73618 -/* Define to 1 if you have the `printf' function. */
73619 -#define HAVE_PRINTF 1
73620 -
73627 -/* Define to 1 if you have the `rand' function. */
73628 -#define HAVE_RAND 1
73629 -
73633 @@ -127,30 +90,12 @@
73637 -/* Define to 1 if you have the `signal' function. */
73638 -#define HAVE_SIGNAL 1
73639 -
73640 -/* Define to 1 if you have the <signal.h> header file. */
73641 -#define HAVE_SIGNAL_H 1
73642 -
73646 -/* Define to 1 if you have the `sprintf' function. */
73647 -#define HAVE_SPRINTF 1
73648 -
73649 -/* Define to 1 if you have the `srand' function. */
73650 -#define HAVE_SRAND 1
73651 -
73652 -/* Define to 1 if you have the `sscanf' function. */
73653 -#define HAVE_SSCANF 1
73654 -
73658 -/* Define to 1 if you have the <stdarg.h> header file. */
73659 -#define HAVE_STDARG_H 1
73660 -
73664 @@ -160,26 +105,15 @@
73668 -/* Define to 1 if you have the `strftime' function. */
73669 -#define HAVE_STRFTIME 1
73670 -
73677 -/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
73678 - */
73679 -/* #undef HAVE_SYS_DIR_H */
73680 -
73684 -/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
73685 - */
73686 -/* #undef HAVE_SYS_NDIR_H */
73687 -
73691 @@ -198,36 +132,21 @@
73695 -/* Define to 1 if you have the `time' function. */
73696 -#define HAVE_TIME 1
73697 -
73698 -/* Define to 1 if you have the <time.h> header file. */
73699 -#define HAVE_TIME_H 1
73700 -
73707 -/* Define to 1 if you have the `vfprintf' function. */
73708 -#define HAVE_VFPRINTF 1
73709 -
73713 -/* Define to 1 if you have the `vsprintf' function. */
73714 -#define HAVE_VSPRINTF 1
73715 -
73722 -/* Define as const if the declaration of iconv() needs const. */
73723 -/* #undef ICONV_CONST */
73724 -
73725 /* Define to the sub-directory where libtool stores uninstalled libraries. */
73728 @@ -241,7 +160,7 @@
73732 -#define PACKAGE_STRING "libxml2 2.9.12"
73737 @@ -250,7 +169,7 @@
73741 -#define PACKAGE_VERSION "2.9.12"
73746 @@ -267,7 +186,7 @@
73750 -#define VERSION "2.9.12"
73755 diff --git a/src/third_party/libxml/linux/include/libxml/xmlversion.h b/src/third_party/libxml/linu…
73757 --- a/src/third_party/libxml/linux/include/libxml/xmlversion.h
73759 @@ -29,26 +29,26 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73763 -#define LIBXML_DOTTED_VERSION "2.9.12"
73771 -#define LIBXML_VERSION 20912
73779 -#define LIBXML_VERSION_STRING "20912"
73785 - * extra version information, used to show a CVS compilation
73790 @@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73794 -#define LIBXML_TEST_VERSION xmlCheckVersion(20912);
73799 @@ -229,15 +229,6 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73803 -/**
73804 - * LIBXML_DOCB_ENABLED:
73805 - *
73806 - * Whether the SGML Docbook support is configured in
73807 - */
73808 -#if 0
73809 -#define LIBXML_DOCB_ENABLED
73810 -#endif
73811 -
73815 @@ -256,6 +247,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73831 @@ -456,6 +456,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73847 @@ -475,6 +484,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73863 diff --git a/src/third_party/libxml/linux/xml2-config b/src/third_party/libxml/linux/xml2-config
73865 --- a/src/third_party/libxml/linux/xml2-config
73866 +++ b/src/third_party/libxml/linux/xml2-config
73867 @@ -58,7 +58,7 @@ while test $# -gt 0; do
73870 --version)
73871 - echo 2.9.12
73876 @@ -86,14 +86,12 @@ while test $# -gt 0; do
73878 libs="-lxml2"
73880 - libs="-lxml2 -licui18n -licuuc -licudata -lm "
73881 + libs="-lxml2 -licui18n -licuuc -licudata -lm "
73884 if [ "-L${libdir}" != "-L/usr/lib" -a "-L${libdir}" != "-L/usr/lib64" ]; then
73885 libs="-L${libdir} $libs"
73887 -
73888 - libs="$libs "
73892 diff --git a/src/third_party/libxml/mac/config.h b/src/third_party/libxml/mac/config.h
73894 --- a/src/third_party/libxml/mac/config.h
73896 @@ -19,13 +19,6 @@
73900 -/* Define to 1 if you have the <ctype.h> header file. */
73901 -#define HAVE_CTYPE_H 1
73902 -
73903 -/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
73904 - */
73905 -#define HAVE_DIRENT_H 1
73906 -
73910 @@ -35,18 +28,9 @@
73914 -/* Define to 1 if you have the <errno.h> header file. */
73915 -#define HAVE_ERRNO_H 1
73916 -
73920 -/* Define to 1 if you have the <float.h> header file. */
73921 -#define HAVE_FLOAT_H 1
73922 -
73923 -/* Define to 1 if you have the `fprintf' function. */
73924 -#define HAVE_FPRINTF 1
73925 -
73929 @@ -68,21 +52,9 @@
73930 /* Define if readline library is there (-lreadline) */
73933 -/* Define to 1 if you have the <limits.h> header file. */
73934 -#define HAVE_LIMITS_H 1
73935 -
73936 -/* Define to 1 if you have the `localtime' function. */
73937 -#define HAVE_LOCALTIME 1
73938 -
73942 -/* Define to 1 if you have the <malloc.h> header file. */
73943 -/* #undef HAVE_MALLOC_H */
73944 -
73945 -/* Define to 1 if you have the <math.h> header file. */
73946 -#define HAVE_MATH_H 1
73947 -
73951 @@ -94,9 +66,6 @@
73955 -/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
73956 -/* #undef HAVE_NDIR_H */
73957 -
73961 @@ -106,18 +75,12 @@
73965 -/* Define to 1 if you have the `printf' function. */
73966 -#define HAVE_PRINTF 1
73967 -
73974 -/* Define to 1 if you have the `rand' function. */
73975 -#define HAVE_RAND 1
73976 -
73980 @@ -127,30 +90,12 @@
73984 -/* Define to 1 if you have the `signal' function. */
73985 -#define HAVE_SIGNAL 1
73986 -
73987 -/* Define to 1 if you have the <signal.h> header file. */
73988 -#define HAVE_SIGNAL_H 1
73989 -
73993 -/* Define to 1 if you have the `sprintf' function. */
73994 -#define HAVE_SPRINTF 1
73995 -
73996 -/* Define to 1 if you have the `srand' function. */
73997 -#define HAVE_SRAND 1
73998 -
73999 -/* Define to 1 if you have the `sscanf' function. */
74000 -#define HAVE_SSCANF 1
74001 -
74005 -/* Define to 1 if you have the <stdarg.h> header file. */
74006 -#define HAVE_STDARG_H 1
74007 -
74011 @@ -160,26 +105,15 @@
74015 -/* Define to 1 if you have the `strftime' function. */
74016 -#define HAVE_STRFTIME 1
74017 -
74024 -/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
74025 - */
74026 -/* #undef HAVE_SYS_DIR_H */
74027 -
74031 -/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
74032 - */
74033 -/* #undef HAVE_SYS_NDIR_H */
74034 -
74038 @@ -198,36 +132,21 @@
74042 -/* Define to 1 if you have the `time' function. */
74043 -#define HAVE_TIME 1
74044 -
74045 -/* Define to 1 if you have the <time.h> header file. */
74046 -#define HAVE_TIME_H 1
74047 -
74054 -/* Define to 1 if you have the `vfprintf' function. */
74055 -#define HAVE_VFPRINTF 1
74056 -
74060 -/* Define to 1 if you have the `vsprintf' function. */
74061 -#define HAVE_VSPRINTF 1
74062 -
74069 -/* Define as const if the declaration of iconv() needs const. */
74070 -/* #undef ICONV_CONST */
74071 -
74072 /* Define to the sub-directory where libtool stores uninstalled libraries. */
74075 @@ -241,7 +160,7 @@
74079 -#define PACKAGE_STRING "libxml2 2.9.12"
74084 @@ -250,7 +169,7 @@
74088 -#define PACKAGE_VERSION "2.9.12"
74093 @@ -267,7 +186,7 @@
74097 -#define VERSION "2.9.12"
74102 diff --git a/src/third_party/libxml/mac/include/libxml/xmlversion.h b/src/third_party/libxml/mac/in…
74104 --- a/src/third_party/libxml/mac/include/libxml/xmlversion.h
74106 @@ -29,26 +29,26 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74110 -#define LIBXML_DOTTED_VERSION "2.9.12"
74118 -#define LIBXML_VERSION 20912
74126 -#define LIBXML_VERSION_STRING "20912"
74132 - * extra version information, used to show a CVS compilation
74137 @@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74141 -#define LIBXML_TEST_VERSION xmlCheckVersion(20912);
74146 @@ -229,15 +229,6 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74150 -/**
74151 - * LIBXML_DOCB_ENABLED:
74152 - *
74153 - * Whether the SGML Docbook support is configured in
74154 - */
74155 -#if 0
74156 -#define LIBXML_DOCB_ENABLED
74157 -#endif
74158 -
74162 @@ -256,6 +247,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74178 @@ -456,6 +456,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74194 @@ -475,6 +484,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74210 diff --git a/src/third_party/libxml/src/AUTHORS b/src/third_party/libxml/src/AUTHORS
74213 --- a/src/third_party/libxml/src/AUTHORS
74215 @@ -1,5 +0,0 @@
74216 -Daniel Veillard <daniel@veillard.com>
74217 -Bjorn Reese <breese@users.sourceforge.net>
74218 -William Brack <wbrack@mmm.com.hk>
74219 -Igor Zlatkovic <igor@zlatkovic.com> for the Windows port
74220 -Aleksey Sanin <aleksey@aleksey.com>
74221 diff --git a/src/third_party/libxml/src/CMakeLists.txt b/src/third_party/libxml/src/CMakeLists.txt
74223 --- a/src/third_party/libxml/src/CMakeLists.txt
74225 @@ -26,15 +26,14 @@ set(LIBXML2_WITH_AUTOMATA ON)
74229 -option(LIBXML2_WITH_DOCB "Add Docbook SGML support" ON)
74231 -option(LIBXML2_WITH_FTP "Add the FTP support" ON)
74238 -option(LIBXML2_WITH_LEGACY "Add deprecated APIs for compatibility" ON)
74243 @@ -60,6 +59,7 @@ option(LIBXML2_WITH_WRITER "Add the xmlWriter saving interface" ON)
74251 @@ -97,7 +97,7 @@ if(LIBXML2_WITH_ZLIB)
74255 -foreach(VARIABLE IN ITEMS WITH_AUTOMATA WITH_C14N WITH_CATALOG WITH_DEBUG WITH_DOCB WITH_EXPR WITH…
74260 @@ -105,10 +105,13 @@ foreach(VARIABLE IN ITEMS WITH_AUTOMATA WITH_C14N WITH_CATALOG WITH_DEBUG WIT…
74264 -set(LIBXML_VERSION ${LIBXML_MAJOR_VERSION}0${LIBXML_MINOR_VERSION}0${LIBXML_MICRO_VERSION})
74265 -set(LIBXML_VERSION_STRING "${LIBXML_VERSION}")
74268 -set(LIBXML_VERSION_NUMBER ${LIBXML_VERSION})
74277 @@ -117,7 +120,7 @@ set(PACKAGE_BUGREPORT "xml@gnome.org")
74281 -set(PACKAGE_URL "http://www.xmlsoft.org/")
74286 @@ -132,9 +135,7 @@ if(ZLIB_FOUND)
74290 -if(MSVC)
74291 - configure_file(include/win32config.h config.h COPYONLY)
74292 -else()
74297 @@ -160,15 +161,11 @@ else()
74301 - check_include_files(ctype.h HAVE_CTYPE_H)
74305 - check_include_files(errno.h HAVE_ERRNO_H)
74307 - check_include_files(float.h HAVE_FLOAT_H)
74309 - check_function_exists(fprintf HAVE_FPRINTF)
74313 @@ -176,34 +173,17 @@ else()
74317 - check_include_files(limits.h HAVE_LIMITS_H)
74318 - check_function_exists(localtime HAVE_LOCALTIME)
74319 - check_include_files(malloc.h HAVE_MALLOC_H)
74320 - check_include_files(math.h HAVE_MATH_H)
74326 - check_function_exists(printf HAVE_PRINTF)
74327 - check_include_files(pthread.h HAVE_PTHREAD_H)
74329 - check_function_exists(rand HAVE_RAND)
74333 - check_include_files(signal.h HAVE_SIGNAL_H)
74334 - check_function_exists(snprintf HAVE_SNPRINTF)
74335 - check_function_exists(sprintf HAVE_SPRINTF)
74336 - check_function_exists(srand HAVE_SRAND)
74337 - check_function_exists(sscanf HAVE_SSCANF)
74339 - check_include_files(stdarg.h HAVE_STDARG_H)
74341 - check_include_files(stdlib.h HAVE_STDLIB_H)
74342 - check_function_exists(strftime HAVE_STRFTIME)
74343 - check_include_files(strings.h HAVE_STRINGS_H)
74344 - check_include_files(string.h HAVE_STRING_H)
74348 @@ -211,31 +191,9 @@ else()
74352 - check_function_exists(time HAVE_TIME)
74353 - check_include_files(time.h HAVE_TIME_H)
74356 - check_function_exists(vfprintf HAVE_VFPRINTF)
74357 - check_function_exists(vsnprintf HAVE_VSNPRINTF)
74358 - check_function_exists(vsprintf HAVE_VSPRINTF)
74360 - check_c_source_compiles("
74361 - #include <stdlib.h>
74362 - #include <iconv.h>
74363 - extern
74364 - #ifdef __cplusplus
74365 - \"C\"
74366 - #endif
74367 - #if defined(__STDC__) || defined(__cplusplus)
74368 - size_t iconv(iconv_t cd, char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft);
74369 - #else
74370 - size_t iconv();
74371 - #endif
74372 - int main() { return 0; }
74373 - " ICONV_CONST_TEST)
74374 - if(NOT ICONV_CONST_TEST)
74375 - set(ICONV_CONST "const")
74376 - endif()
74380 @@ -247,7 +205,6 @@ else()
74384 - check_include_files("float.h;stdarg.h;stdlib.h;string.h" STDC_HEADERS)
74388 @@ -285,7 +242,6 @@ else()
74392 - configure_file(config.h.cmake.in config.h)
74396 @@ -295,7 +251,6 @@ set(
74400 - include/libxml/DOCBparser.h
74404 @@ -398,10 +353,6 @@ if(WIN32)
74408 -if(LIBXML2_WITH_SAX1)
74409 - list(APPEND LIBXML2_SRCS DOCBparser.c)
74410 -endif()
74411 -
74415 @@ -409,6 +360,8 @@ endif()
74423 set(XML_CFLAGS "-DLIBXML_STATIC")
74424 @@ -418,6 +371,8 @@ if(LIBXML2_WITH_THREADS)
74433 @@ -441,7 +396,7 @@ endif()
74437 - set(M_LIBS "-lm")
74438 + set(LIBM "-lm")
74442 @@ -532,6 +487,7 @@ if(LIBXML2_WITH_PROGRAMS)
74450 @@ -547,29 +503,32 @@ if(LIBXML2_WITH_TESTS)
74459 - testC14N
74462 - testHTML
74465 - testReader
74467 - testRegexp
74468 - testRelax
74469 - testSAX
74470 - testSchemas
74471 - testURI
74472 - testXPath
74488 + add_test(NAME runtest COMMAND runtest --out ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE…
74492 @@ -579,22 +538,7 @@ if(LIBXML2_WITH_TESTS)
74496 - if(Threads_FOUND)
74497 - set(
74498 - TESTS_THREADS
74499 - runtest
74500 - testThreads
74501 - )
74502 - foreach(TEST ${TESTS_THREADS})
74503 - add_executable(${TEST} ${TEST}.c)
74504 - if(WIN32)
74505 - target_compile_definitions(${TEST} PRIVATE HAVE_WIN32_THREADS)
74506 - endif()
74507 - target_link_libraries(${TEST} LibXml2 Threads::Threads)
74508 - endforeach()
74509 - add_test(NAME runtest COMMAND runtest --out ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAK…
74510 - add_test(NAME testThreads COMMAND testThreads WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
74511 - endif()
74516 @@ -647,10 +591,16 @@ if(LIBXML2_WITH_PYTHON)
74520 -install(FILES libxml.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 COMPONENT documentation)
74521 +install(FILES doc/xml2-config.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation)
74524 -install(DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/libxml2 COMPONENT documentation PA…
74534 libxml2-config.cmake.cmake.in libxml2-config.cmake
74535 @@ -683,13 +633,13 @@ install(
74539 -configure_file(include/libxml/xmlversion.h.in libxml/xmlversion.h)
74540 -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml/xmlversion.h DESTINATION ${CMAKE_INSTALL_INCLUDED…
74541 -
74543 - configure_file(include/libxml/xmlwin32version.h.in libxml/xmlwin32version.h)
74544 - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml/xmlwin32version.h DESTINATION ${CMAKE_INSTALL_IN…
74554 @@ -699,26 +649,30 @@ endif()
74555 set(XML_INCLUDEDIR "-I\${includedir}/libxml2")
74556 set(XML_LIBDIR "-L\${libdir}")
74557 set(XML_LIBS "-lxml2")
74558 -set(XML_PRIVATE_LIBS "${Z_LIBS} ${LZMA_LIBS} ${THREAD_LIBS} ${ICONV_LIBS} ${ICU_LIBS} ${M_LIBS}")
74564 -set(prefix "\${pcfiledir}/${PACKAGE_RELATIVE_PATH}")
74573 configure_file(libxml-2.0.pc.in libxml-2.0.pc @ONLY)
74574 …install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml-2.0.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgcon…
74576 -set(prefix "\$(cd \"\$(dirname \"\$0\")\"; pwd -P)/..")
74578 + set(prefix "\$(cd \"\$(dirname \"\$0\")\"; pwd -P)/..")
74580 configure_file(xml2-config.in xml2-config @ONLY)
74581 …install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/xml2-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPO…
74583 set(XML_INCLUDEDIR "-I${CMAKE_INSTALL_FULL_INCLUDEDIR}/libxml2")
74584 set(XML_LIBDIR "-L${CMAKE_INSTALL_FULL_LIBDIR}")
74585 -configure_file(xml2Conf.sh.in xml2Conf.sh @ONLY)
74586 -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/xml2Conf.sh DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONEN…
74590 diff --git a/src/third_party/libxml/src/ChangeLog b/src/third_party/libxml/src/ChangeLog
74593 --- a/src/third_party/libxml/src/ChangeLog
74595 @@ -1,19678 +0,0 @@
74596 -Fri Jul 10 16:11:34 CEST 2009 Daniel Veillard <daniel@veillard.com>
74597 -
74598 - * parser.c: fix a regression in entity parsing when using the reader
74599 - introduced because we were not reusing _private on entities parsing
74600 - context
74601 -
74602 -Thu Jul 9 10:21:00 CEST 2009 Daniel Veillard <daniel@veillard.com>
74603 -
74604 - Aleksey Sanin support for c14n 1.1
74605 - * c14n.c include/libxml/c14n.h: adds support for C14N 1.1,
74606 - new flags at the API level
74607 - * runtest.c Makefile.am testC14N.c xmllint.c: add support in CLI
74608 - tools and test binaries
74609 - * result/c14n/1-1-without-comments/* test/c14n/1-1-without-comments/*:
74610 - add a new batch of tests
74611 -
74612 -Thu Jul 9 08:52:35 CEST 2009 Daniel Veillard <daniel@veillard.com>
74613 -
74614 - * config.h.in: update of libtool seems to have modified it
74615 - * python/libxml2class.txt: python update modified the order
74616 - of classes apparently
74617 -
74618 -Thu Jul 9 08:43:06 CEST 2009 Daniel Veillard <daniel@veillard.com>
74619 -
74620 - * tree.c: avoid calling xmlAddID with NULL values
74621 - * parser.c: add a few xmlInitParser in some entry points
74622 -
74623 -Fri Jun 19 19:51:08 CEST 2009 Rob Richards <rrichards@cdatazone.org>
74624 -
74625 - * parser.c: use options from current parser context when creating
74626 - a parser context within xmlParseCtxtExternalEntity
74627 - * xmlwriter.c: fix error message when unable to create output file
74628 -
74629 -Thu Jun 4 11:17:23 CEST 2009 Daniel Veillard <daniel@veillard.com>
74630 -
74631 - * c14n.c debugXML.c doc/examples/io2.c parser.c schematron.c
74632 - valid.c xmlschemas.c xmlwriter.c xpath.c: use %s to printf string
74633 - patch by Christian Persch, fixes #581612
74634 -
74635 -Thu Jun 4 11:06:07 CEST 2009 Daniel Veillard <daniel@veillard.com>
74636 -
74637 - * parser.c threads.c: change the threading initialization sequence
74638 - as suggested by Igor Novoseltsev to avoid crash if xmlInitParser()
74639 - is called from a thread which is not the main one, should fix
74640 - #584605
74641 -
74642 -Fri May 15 17:54:48 CEST 2009 Daniel Veillard <daniel@veillard.com>
74643 -
74644 - * HTMLparser.c: make sure we keep line numbers fixes #580705
74645 - based Aaron Patterson patch
74646 -
74647 -Tue May 12 09:13:58 CEST 2009 Daniel Veillard <daniel@veillard.com>
74648 -
74649 - * HTMLparser.c: a broken HTML table attributes initialization,
74650 - fixes #581803, by Roland Steiner <rolandsteiner@google.com>
74651 -
74652 -Tue May 12 08:54:20 CEST 2009 Daniel Veillard <daniel@veillard.com>
74653 -
74654 - * libxml2.doap: adding RDF dope file.
74655 -
74656 -Tue May 12 08:42:52 CEST 2009 Daniel Veillard <daniel@veillard.com>
74657 -
74658 - * configure.in: adapt the extra version detection code to git
74659 -
74660 -Wed Apr 29 16:09:38 CEST 2009 Rob Richards <rrichards@cdatazone.org>
74661 -
74662 - * parser.c: do not set error code in xmlNsWarn
74663 -
74664 -Wed Apr 15 11:18:24 CEST 2009 Daniel Veillard <daniel@veillard.com>
74665 -
74666 - * include/libxml/parser.h include/libxml/xmlwriter.h
74667 - include/libxml/relaxng.h include/libxml/xmlversion.h.in
74668 - include/libxml/xmlwin32version.h.in include/libxml/valid.h
74669 - include/libxml/xmlschemas.h include/libxml/xmlerror.h: change
74670 - ATTRIBUTE_PRINTF into LIBXML_ATTR_FORMAT to avoid macro name
74671 - collisions with other packages and headers as reported by
74672 - Belgabor and Mike Hommey
74673 -
74674 -Thu Apr 2 13:57:15 CEST 2009 Daniel Veillard <daniel@veillard.com>
74675 -
74676 - * error.c: fix structured error handling problems #564217
74677 -
74678 -Thu Mar 26 19:08:08 CET 2009 Rob Richards <rrichards@cdatazone.org>
74679 -
74680 - * parser.c: use options from current parser context when creating
74681 - an entity parser context
74682 -
74683 -Wed Mar 25 11:40:34 CET 2009 Daniel Veillard <daniel@veillard.com>
74684 -
74685 - * doc/*: updated SVN URL for GNOME as pointed by Vincent Lefevre
74686 - and regenerated docs
74687 -
74688 -Wed Mar 25 11:21:26 CET 2009 Daniel Veillard <daniel@veillard.com>
74689 -
74690 - * parser.c: hide the nbParse* variables used for debugging
74691 - as pointed by Mike Hommey
74692 -
74693 -Wed Mar 25 10:50:05 CET 2009 Daniel Veillard <daniel@veillard.com>
74694 -
74695 - * include/wsockcompat.h win32/Makefile.bcb xpath.c: fixes for
74696 - Borland/CodeGear/Embarcadero compilers by Eric Zurcher
74697 -
74698 -Wed Mar 25 10:43:07 CET 2009 Daniel Veillard <daniel@veillard.com>
74699 -
74700 - * xpath.c: xmlXPathRegisterNs should not allow enpty prefixes
74701 -
74702 -Mon Mar 23 20:27:15 CET 2009 Daniel Veillard <daniel@veillard.com>
74703 -
74704 - * tree.c: add a missing check in xmlAddSibling, patch by Kris Breuker
74705 - * xmlIO.c: avoid xmlAllocOutputBuffer using XML_BUFFER_EXACT which
74706 - leads to performances problems especially on Windows.
74707 -
74708 -Tue Mar 3 14:30.28 HKT 2009 William Brack <wbrack@mmm.com.hk>
74709 -
74710 - * trio.h: changed include of config.h to be surrounded by
74711 - quotation marks #570806
74712 -
74713 -Sat Feb 21 10:20:34 CET 2009 Daniel Veillard <daniel@veillard.com>
74714 -
74715 - * threads.c parser.c: more warnings about xmlCleanupThreads and
74716 - xmlCleanupParser to avoid troubles like #571409
74717 -
74718 -Fri Feb 20 09:40:04 CET 2009 Daniel Veillard <daniel@veillard.com>
74719 -
74720 - * xmlwriter.c: cleanups and error reports when xmlTextWriterVSprintf
74721 - fails, by Jinmei Tatuya
74722 -
74723 -Fri Feb 20 09:18:56 CET 2009 Daniel Veillard <daniel@veillard.com>
74724 -
74725 - * xmlwriter.c: remove a couple of leaks on errors reported by
74726 - Jinmei Tatuya
74727 -
74728 -Sun Jan 18 22:37:59 CET 2009 Daniel Veillard <daniel@veillard.com>
74729 -
74730 - * configure.in doc/xml.html doc/*: preparing 0.7.3 release
74731 - * include/libxml/parserInternals.h SAX2.c: fix a typo in a name
74732 -
74733 -Sun Jan 18 21:48:28 CET 2009 Daniel Veillard <daniel@veillard.com>
74734 -
74735 - * include/libxml/parser.h include/libxml/xmlwriter.h
74736 - include/libxml/relaxng.h include/libxml/xmlversion.h.in
74737 - include/libxml/xmlwin32version.h.in include/libxml/valid.h
74738 - include/libxml/xmlschemas.h include/libxml/xmlerror.h:
74739 - port patch from Marcus Meissner to add gcc checking for
74740 - printf like functions parameters, should fix #65068
74741 - * doc/apibuild.py doc/*: modified the script accordingly
74742 - and regenerated
74743 - * xpath.c xmlmemory.c threads.c: fix a few warnings
74744 -
74745 -Sun Jan 18 20:40:42 CET 2009 Daniel Veillard <daniel@veillard.com>
74746 -
74747 - * include/libxml/xmlwin32version.h.in: windows header should
74748 - get the same define
74749 -
74750 -Sun Jan 18 18:22:33 CET 2009 Daniel Veillard <daniel@veillard.com>
74751 -
74752 - * include/libxml/xmlversion.h.in include/libxml/xmlmemory.h:
74753 - apply patch from Marcus Meissner to add gcc attribute alloc_size
74754 - should fix #552505
74755 - * doc/apibuild.py doc/* testapi.c: regenerate the API
74756 - * include/libxml/parserInternals.h: fix a comment problem raised
74757 - by apibuild.py
74758 -
74759 -Sun Jan 18 16:39:01 CET 2009 Daniel Veillard <daniel@veillard.com>
74760 -
74761 - * threads.c: also remove pthread key when stopping thread
74762 - support, patch based on Alex Ott one should fix #564723
74763 -
74764 -Sun Jan 18 15:55:18 CET 2009 Daniel Veillard <daniel@veillard.com>
74765 -
74766 - * threads.c: patch from Daniel Zimmermann fixing a memory leak
74767 - in an edge case, solves #562230
74768 -
74769 -Sun Jan 18 15:06:05 CET 2009 Daniel Veillard <daniel@veillard.com>
74770 -
74771 - * include/libxml/parserInternals.h SAX2.c: add a new define
74772 - XML_MAX_TEXT_LENGTH limiting the maximum size of a single text
74773 - node, the defaultis 10MB and can be removed with the HUGE
74774 - parsing option
74775 -
74776 -Mon Jan 05 18:28:41 CET 2009 Rob Richards <rrichards@cdatazone.org>
74777 -
74778 - * include/libxml/parser.h parser.c: add XML_PARSE_OLDSAX parser
74779 - option to enable pre 2.7 SAX behavior.
74780 -
74781 -Wed Dec 31 23:11:37 CET 2008 Rob Richards <rrichards@cdatazone.org>
74782 -
74783 - * tree.c: set doc on last child tree in xmlAddChildList for
74784 - bug #546772. Fix problem adding an attribute via with xmlAddChild
74785 - reported by Kris Breuker.
74786 -
74787 -Sun Dec 27 14:16:13 CET 2008 Rob Richards <rrichards@cdatazone.org>
74788 -
74789 - * xmlwriter.c: fix indenting in xmlTextWriterFullEndElement for
74790 - bug# 554353.
74791 -
74792 -Thu Nov 27 16:24:52 CET 2008 Daniel Veillard <daniel@veillard.com>
74793 -
74794 - * include/libxml/tree.h tree.c python/generator.py: adds
74795 - element traversal support
74796 - * valid.c: avoid a warning
74797 - * doc/*: regenerated
74798 -
74799 -Mon Nov 17 16:56:18 CET 2008 Daniel Veillard <daniel@veillard.com>
74800 -
74801 - * SAX2.c parser.c: fix for CVE-2008-4226, a memory overflow
74802 - when building gigantic text nodes, and a bit of cleanup
74803 - to better handled out of memory problem in that code.
74804 - * tree.c: fix for CVE-2008-4225, lack of testing leads to
74805 - a busy loop test assuming one have enough core memory.
74806 -
74807 -Thu Nov 6 14:34:35 CET 2008 Daniel Veillard <daniel@veillard.com>
74808 -
74809 - * xmllint.c: Matthias Kaehlcke reported a build problem when
74810 - not compiling HTML support in.
74811 -
74812 -Fri Oct 17 15:24:08 CEST 2008 Daniel Veillard <daniel@veillard.com>
74813 -
74814 - * configure.in doc/Makefile.am: patch from Adrian Bunk which
74815 - adds --disable-rebuild-docs to avoid rebuilding them
74816 -
74817 -Fri Oct 3 09:43:45 CEST 2008 Daniel Veillard <daniel@veillard.com>
74818 -
74819 - * configure.in doc/* NEWS: preparing the release of 2.7.2
74820 - * dict.c: fix the Solaris portability issue
74821 - * parser.c: additional cleanup on #554660 fix
74822 - * test/ent13 result/ent13* result/noent/ent13*: added the
74823 - example in the regression test suite.
74824 - * HTMLparser.c: handle leading BOM in htmlParseElement()
74825 -
74826 -Thu Oct 2 22:53:39 CEST 2008 Daniel Veillard <daniel@veillard.com>
74827 -
74828 - * parser.c: fix a nasty bug introduced when cleaning up
74829 - entities processing in 2.7.x , fixes #554660
74830 -
74831 -Thu Sep 25 18:04:20 CEST 2008 Daniel Veillard <daniel@veillard.com>
74832 -
74833 - * HTMLparser.c: fix an HTML parsing error on large data sections
74834 - reported by Mike Day
74835 - * test/HTML/utf8bug.html result/HTML/utf8bug.html.err
74836 - result/HTML/utf8bug.html.sax result/HTML/utf8bug.html: add the
74837 - reproducer to the test suite
74838 -
74839 -Thu Sep 25 17:35:57 CEST 2008 Daniel Veillard <daniel@veillard.com>
74840 -
74841 - * runxmlconf.c: fix compilation if XPath is not included
74842 -
74843 -Thu Sep 25 16:54:04 CEST 2008 Daniel Veillard <daniel@veillard.com>
74844 -
74845 - * xmlreader.c: patch from Riccardo Scussat fixing custom error
74846 - handlers problems.
74847 -
74848 -Thu Sep 25 16:30:11 CEST 2008 Daniel Veillard <daniel@veillard.com>
74849 -
74850 - * include/libxml/xmlsave.h xmlsave.c: new options to serialize
74851 - as XML/HTML/XHTML and restore old entry point behaviours
74852 -
74853 -Mon Sep 1 16:49:05 CEST 2008 Daniel Veillard <daniel@veillard.com>
74854 -
74855 - * doc/xml.html doc/news.html configure.in python/setup.py NEWS:
74856 - prepare release of 2.7.1
74857 -
74858 -Mon Sep 1 15:35:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
74859 -
74860 - * schematron.c xpath.c: applied a couple of patches from Martin
74861 - avoiding some leaks, fixinq QName checks in XPath, XPath debugging
74862 - and schematron code cleanups.
74863 - * python/tests/Makefile.am python/tests/xpathleak.py: add the
74864 - specific regression tests, just tweak it to avoid output by default
74865 -
74866 -Mon Sep 1 15:02:05 CEST 2008 Daniel Veillard <daniel@veillard.com>
74867 -
74868 - * trionan.c: Borland C fix from Moritz Both
74869 - * testapi.c: regenerate, workaround a problem for buffer testing
74870 - * xmlIO.c HTMLtree.c: new internal entry point to hide even better
74871 - xmlAllocOutputBufferInternal
74872 - * tree.c: harden the code around buffer allocation schemes
74873 - * parser.c: restore the warning when namespace names are not absolute
74874 - URIs
74875 - * runxmlconf.c: continue regression tests if we get the expected
74876 - number of errors
74877 - * Makefile.am: run the python tests on make check
74878 - * xmlsave.c: handle the HTML documents and trees
74879 - * python/libxml.c: convert python serialization to the xmlSave APIs
74880 - and avoid some horrible hacks
74881 -
74882 -Sat Aug 30 16:58:40 CEST 2008 Daniel Veillard <daniel@veillard.com>
74883 -
74884 - * configure.in, doc/*: preparing 2.7.0 release
74885 - * tree.c: remove some testing traces
74886 - * parser.c xmlIO.c xmlschemas.c: remove some warnings
74887 -
74888 -Sat Aug 30 14:50:16 CEST 2008 Daniel Veillard <daniel@veillard.com>
74889 -
74890 - * include/libxml/tree.h tree.c: make a new kind of buffer where
74891 - shrinking and adding in head can avoid reallocation or full
74892 - buffer memmoves
74893 - * encoding.c xmlIO.c: use the new kind of buffers for output
74894 - buffers
74895 -
74896 -Sat Aug 30 10:18:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
74897 -
74898 - * doc/* testapi.c: regenerated
74899 -
74900 -Fri Aug 29 21:53:12 CEST 2008 Daniel Veillard <daniel@veillard.com>
74901 -
74902 - * doc/examples/reader3.c: patch from Robert Schwebel , allows to
74903 - compile the example if configured without output support fixes
74904 - #545582
74905 - * Makefile.am: add testrecurse to the make check tests
74906 - * HTMLparser.c: if the parser got a encoding argument it should be
74907 - used over what the meta specifies, patch fixing #536346
74908 -
74909 -Fri Aug 29 14:41:38 CEST 2008 Daniel Veillard <daniel@veillard.com>
74910 -
74911 - * parser.c: a couple more fixes
74912 - * nanohttp.c nanoftp.c: patch from Andreas Färber to compile on Haiku
74913 - fixes #527880
74914 - * doc/examples/*: regenerated
74915 -
74916 -Thu Aug 28 17:31:46 CEST 2008 Daniel Veillard <daniel@veillard.com>
74917 -
74918 - * parser.c include/libxml/parser.h: completely different fix for
74919 - the recursion detection based on entity density, big cleanups
74920 - in the entity parsing code too
74921 - * result/*.sax*: the parser should not ask for used defined versions
74922 - of the predefined entities
74923 - * testrecurse.c: automatic test for entity recursion checks
74924 - * Makefile.am: added testrecurse
74925 - * test/recurse/lol* test/recurse/good*: a first set of tests for
74926 - the recursion
74927 -
74928 -Wed Aug 27 21:55:34 CEST 2008 Daniel Veillard <daniel@veillard.com>
74929 -
74930 - * include/libxml/xmlerror.h parser.c: a bit of cleanup and
74931 - added checks based on the regression tests of the xmlconf suite
74932 -
74933 -Wed Aug 27 19:22:35 CEST 2008 Daniel Veillard <daniel@veillard.com>
74934 -
74935 - * uri.c: bug in parsing RFC 3986 uris with port numbers
74936 -
74937 -Wed Aug 27 17:30:48 CEST 2008 Daniel Veillard <daniel@veillard.com>
74938 -
74939 - * configure.in Makefile.am: add an --with-coverage configure option
74940 - and a 'make cov' target based on gcc profiling and the lcov
74941 - tool. Currently at 68.9% coverage out of 'make check' and
74942 - runsuite executions.
74943 - * xmlreader.c: remove warnings due to C++ comments
74944 -
74945 -Wed Aug 27 15:00:54 CEST 2008 Daniel Veillard <daniel@veillard.com>
74946 -
74947 - * include/libxml/parserInternals.h parser.c: cleanup entity
74948 - pushing error handling based on a patch from Ashwin
74949 -
74950 -Wed Aug 27 13:41:26 CEST 2008 Daniel Veillard <daniel@veillard.com>
74951 -
74952 - * threads.c: fix a small initialization problem raised by Ashwin
74953 - * testapi.c gentest.py: increase testing especially for document
74954 - with an internal subset, and entities
74955 - * tree.c: fix a deallocation issue when unlinking entities from
74956 - a document.
74957 - * valid.c: fix a missing entry point test not found previously.
74958 - * doc/*: regenerated the APIs, docs etc.
74959 -
74960 -Tue Aug 26 15:02:58 CEST 2008 Daniel Veillard <daniel@veillard.com>
74961 -
74962 - * include/libxml/parser.h parser.c xmllint.c: strengthen some
74963 - of the internal parser limits, add an XML_PARSE_HUGE option
74964 - to bypass them all. More internal parser limits will still need
74965 - to be added.
74966 -
74967 -Tue Aug 26 09:42:08 CEST 2008 Daniel Veillard <daniel@veillard.com>
74968 -
74969 - * Makefile.am: add the testchar to 'make check'
74970 - * xmlschemas.c: Volker Grabsch pointed out a typo
74971 - * xmlregexp.c: production [19] from XML Schemas regexps were a
74972 - mistake removed in version REC-xmlschema-2-20041028, Volker Grabsch
74973 - provided a patch to remove it
74974 - * test/schemas/regexp-char-ref_0.xml test/schemas/regexp-char-ref_0.xsd
74975 - test/schemas/regexp-char-ref_1.xsd result/schemas/regexp-char-ref_0_0
74976 - result/schemas/regexp-char-ref_1_0: Volker Grabsch also provided
74977 - regression tests for this
74978 -
74979 -Tue Aug 26 09:25:39 CEST 2008 Daniel Veillard <daniel@veillard.com>
74980 -
74981 - * include/libxml/parser.h xinclude.c xmllint.c: patch based on
74982 - Wieant Nielander contribution to add the option of not doing
74983 - URI base fixup in XInclude
74984 -
74985 -Mon Aug 25 16:52:53 CEST 2008 Daniel Veillard <daniel@veillard.com>
74986 -
74987 - * xmlreader.c: applied patch from Aswin to fix tree skipping
74988 - * include/libxml/entities.h entities.c: fixed a comment and
74989 - added a new xmlNewEntity() entry point
74990 - * runtest.c: be less verbose
74991 - * tree.c: space and tabs cleanups
74992 -
74993 -Mon Aug 25 10:56:30 CEST 2008 Daniel Veillard <daniel@veillard.com>
74994 -
74995 - * include/libxml/entities.h entities.c SAX2.c parser.c: rework
74996 - the patch to avoid some ABI issue with people allocating
74997 - entities structure directly
74998 -
74999 -Wed Aug 20 19:02:01 CEST 2008 Daniel Veillard <daniel@veillard.com>
75000 -
75001 - * include/libxml/parser.h include/libxml/entities.h entities.c
75002 - parserInternals.c parser.c: fix for CVE-2008-3281
75003 -
75004 -Sun Aug 10 17:06:13 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75005 -
75006 - * dict.c: fix non GNUC builds.
75007 -
75008 -Fri Aug 8 14:13:06 CEST 2008 Daniel Veillard <daniel@veillard.com>
75009 -
75010 - * makefile.am: adding a check-valgrind target
75011 -
75012 -Fri Aug 8 14:01:59 CEST 2008 Daniel Veillard <daniel@veillard.com>
75013 -
75014 - * Makefile.am testdict.c: add the new test in 'make check' and
75015 - update it to check subdictionaries processing.
75016 -
75017 -Fri Aug 8 12:07:20 CEST 2008 Daniel Veillard <daniel@veillard.com>
75018 -
75019 - * testdict.c: added a program to regression test the dictionary code
75020 - * dict.c: improve the lookup efficiency by caching the key.
75021 -
75022 -Thu Aug 7 18:30:55 CEST 2008 Daniel Veillard <daniel@veillard.com>
75023 -
75024 - * dict.c: chased and found a couple of nasty issues
75025 -
75026 -Thu Aug 7 15:51:31 CEST 2008 Sven Herzberg <sven@imendio.com>
75027 -
75028 - Bug 546629 – runtests doesn't pass on my mac
75029 - Reviewed by William M. Brack.
75030 -
75031 - * runtest.c: use libpthread on Mac OS X as well
75032 -
75033 -Wed Aug 6 12:24:33 CEST 2008 Daniel Veillard <daniel@veillard.com>
75034 -
75035 - * uri.c: allow [ and ] in fragment identifiers, 3986 disallow them
75036 - but it's widely used for XPointer, and would break DocBook
75037 - processing among others
75038 -
75039 -Wed Aug 6 11:32:21 CEST 2008 Daniel Veillard <daniel@veillard.com>
75040 -
75041 - * dict.c: change the big key algorithm to work properly with QName
75042 - too, fix a bug with dict size and sub dictionaries
75043 -
75044 -Mon Aug 4 17:27:27 CEST 2008 Daniel Veillard <daniel@veillard.com>
75045 -
75046 - * uri.c include/libxml/uri.h: rewrite the URI parser to update to
75047 - rfc3986 (from 2396)
75048 - * test/errors/webdav.xml result/errors/webdav.xml*: removed the
75049 - error test, 'DAV:' is a correct URI under 3986
75050 - * Makefile.am: small cleanup in make check
75051 -
75052 -Thu Jul 31 21:49:45 CEST 2008 Daniel Veillard <daniel@veillard.com>
75053 -
75054 - * runxmlconf.c: more progresses against the official regression tests
75055 - * runsuite.c: small cleanup for non-leak reports
75056 - * include/libxml/tree.h: parsing flags and other properties are
75057 - now added to the document node, this is generally useful and
75058 - allow to make Name and NmToken validations based on the parser
75059 - flags, more specifically the 5th edition of XML or not
75060 - * HTMLparser.c tree.c: small side effects for the previous changes
75061 - * parser.c SAX2.c valid.c: the bulk of the changes are here,
75062 - the parser and validation behaviour can be affected, parsing
75063 - flags need to be copied, lot of changes. Also fixing various
75064 - validation problems in the regression tests.
75065 -
75066 -Thu Jul 31 10:15:53 CEST 2008 Daniel Veillard <daniel@veillard.com>
75067 -
75068 - * runxmlconf.c: added a skipped list, insert rmt-ns10-035
75069 - * Makefile.am: improve 'make check'
75070 - * include/libxml/xmlerror.h parser.c: clean up namespace errors
75071 - checking and reporting, errors when a document is labelled
75072 - as UTF-16 while it is parsed as UTF-8 and no encoding was given
75073 - explicitly.
75074 - * result/errors/webdav.xml.*: some warnings are no recategorized
75075 - as Namespace errors
75076 -
75077 -Wed Jul 30 14:55:54 CEST 2008 Daniel Veillard <daniel@veillard.com>
75078 -
75079 - * include/libxml/xmlmemory.h xmlmemory.c: add xmlMemDisplayLast to
75080 - help debug incremental memory leaks, and some cleanups
75081 - * runxmlconf.c: use that new call and avoid ever touching the
75082 - system catalog in the regression tests
75083 -
75084 -Wed Jul 30 14:33:33 CEST 2008 Daniel Veillard <daniel@veillard.com>
75085 -
75086 - * parser.c include/libxml/xmlerror.h: an XML-1.0 document can't load
75087 - an 1.1 entity
75088 - * runxmlconf.c: when using entities make sure we load them
75089 -
75090 -Tue Jul 29 18:43:07 CEST 2008 Daniel Veillard <daniel@veillard.com>
75091 -
75092 - * parser.c: fix a bug not detecting cross entity comments probably
75093 - when comment parsing got optimized.
75094 - * Makefile.am: add make check
75095 - * runxmlconf.c: fix the log file name
75096 -
75097 -Tue Jul 29 18:09:26 CEST 2008 Daniel Veillard <daniel@veillard.com>
75098 -
75099 - * runxmlconf.c Makefile.am: add a C program to run the W3C test
75100 - suite, work in progress
75101 - * xmllint.c: add a new option --oldxml10 to use the old parser
75102 - * parser.c: fix the XML_PARSE_OLD10 processing of the new option
75103 - and a bug in version parsing
75104 -
75105 -Tue Jul 29 11:12:40 CEST 2008 Daniel Veillard <daniel@veillard.com>
75106 -
75107 - * xpath.c: space and tabs cleanup
75108 -
75109 -Tue Jul 29 10:59:36 CEST 2008 Daniel Veillard <daniel@veillard.com>
75110 -
75111 - * include/libxml/parser.h include/libxml/xmlerror.h parser.c:
75112 - implement XML-1.0 5th edition, add parser option XML_PARSE_OLD10
75113 - to stick to old behaviour
75114 - * testapi.c gentest.py: modified slightly and regenerated
75115 - * Makefile.am: add testchar
75116 -
75117 -Thu Jul 24 16:57:20 CEST 2008 Daniel Veillard <daniel@veillard.com>
75118 -
75119 - * Makefile.am testchar.c Makefile.tests README.tests: add a
75120 - new regression test program for testing character ranges and
75121 - UTF8 encoding/decoding
75122 -
75123 -Wed Jul 23 15:32:39 CEST 2008 Daniel Veillard <daniel@veillard.com>
75124 -
75125 - * libxml.spec.in: fix the build root
75126 -
75127 -Wed Jul 16 22:28:48 PDT 2008 William Brack <wbrack@mmm.com.hk>
75128 -
75129 - * pattern.c: fix problem with xmlStreamPop when pattern includes
75130 - a "." element (see discussion on libxslt list)
75131 -
75132 -Mon Jul 7 15:49:59 CEST 2008 Daniel Veillard <daniel@veillard.com>
75133 -
75134 - * SAX2.c: fix line number on text nodes, problem raised by Ralf Junker
75135 -
75136 -Sun Jun 29 17:04:28 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75137 - * xmlschemas.c: fix crash with invalid whitespace facet
75138 -
75139 -Wed Jun 11 10:13:02 CEST 2008 Daniel Veillard <daniel@veillard.com>
75140 -
75141 - * doc/xml.html doc/FAQ.html: add a section in the FAQ about
75142 - multithread and xmlCleanupParser
75143 -
75144 -Tue Jun 10 16:52:17 CEST 2008 Daniel Veillard <daniel@veillard.com>
75145 -
75146 - * catalog.c: apply a couple of fixes based on a Coverity report
75147 - forwarded by Derrick Price.
75148 - * VxWorks/README VxWorks/Makefile VxWorks/build.sh: instructions
75149 - Makefile, and shell script to build on VxWorks 6.4+ provided by
75150 - Jim Wert.
75151 -
75152 -Tue Jun 3 18:07:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
75153 -
75154 - * python/generator.py python/setup.py: apply patch from Martin fixing
75155 - python whitespaces
75156 - * NEWS: following previous commit rebuilt now in UTF-8
75157 -
75158 -Mon Jun 2 17:39:42 CEST 2008 Daniel Veillard <daniel@veillard.com>
75159 -
75160 - * ChangeLog: patch from Hans de Goede to switch the file to UTF-8
75161 - * doc/news.xsl: switch to generate the NEWS file in UTF-8 instead of
75162 - ISO-8859-1
75163 -
75164 -Mon May 12 15:12:44 CEST 2008 Daniel Veillard <daniel@veillard.com>
75165 -
75166 - * xmlregexp.c: avoid a regexp crash, should fix #523738
75167 -
75168 -Mon May 12 14:56:06 CEST 2008 Daniel Veillard <daniel@veillard.com>
75169 -
75170 - * xmlschemas.c runtest.c testapi.c include/libxml/xmlreader.h
75171 - python/types.c python/libxml_wrap.h python/libxml.c: fx compilation
75172 - when configured without the reader should fix #513110
75173 - * doc/*: regenerated
75174 -
75175 -Sat May 3 14:33:29 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75176 -
75177 - * dict.c: check for stdint.h and define types when using MSVC
75178 -
75179 -Mon Apr 28 20:06:12 CEST 2008 Daniel Veillard <daniel@veillard.com>
75180 -
75181 - * parserInternals.c: applied patch from Ashwin to avoid a potential
75182 - double-free
75183 -
75184 -Thu Apr 24 13:56:53 CEST 2008 Daniel Veillard <daniel@veillard.com>
75185 -
75186 - * uri.c: applied patch from Ashwin fixing a number of realloc problems
75187 - * HTMLparser.c: improve handling for misplaced html/head/body
75188 -
75189 -Tue Apr 22 10:27:17 CEST 2008 Daniel Veillard <daniel@veillard.com>
75190 -
75191 - * dict.c: improvement on the hashing of the dictionary, with visible
75192 - speed up as the number of strings in the hash increases, work from
75193 - Stefan Behnel
75194 -
75195 -Fri Apr 11 14:44:00 CEST 2008 Daniel Veillard <daniel@veillard.com>
75196 -
75197 - * include/libxml/xmlschemas.h xmlschemas.c: added new function
75198 - xmlSchemaValidCtxtGetParserCtxt based on Holger Kaelberer patch
75199 - * doc/apibuild.py doc/*: regenerated the doc, chased why the new
75200 - function didn't got any documentation, added more checking in the
75201 - generator
75202 - * include/libxml/relaxng.h include/libxml/schematron.h
75203 - include/libxml/xmlschemas.h include/libxml/c14n.h
75204 - include/libxml/xmlregexp.h include/libxml/globals.h
75205 - include/libxml/xmlreader.h threads.c xmlschemas.c: various changes
75206 - and cleanups following the new reports
75207 -
75208 -
75209 -Thu Apr 10 10:07:00 CEST 2008 Daniel Veillard <daniel@veillard.com>
75210 -
75211 - * Makefile.am: extend the cleanup rule
75212 - * xmlschemas.c: space cleanup
75213 -
75214 -Wed Apr 9 19:43:25 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75215 -
75216 - * include/wsockcompat.h: support older win32 platforms when building
75217 - with newer versions of VS
75218 -
75219 -Tue Apr 8 16:56:07 CEST 2008 Daniel Veillard <daniel@veillard.com>
75220 -
75221 - * configure.in NEWS doc/*: preparing release of 2.6.32
75222 -
75223 -Tue Apr 8 10:19:01 CEST 2008 Daniel Veillard <daniel@veillard.com>
75224 -
75225 - * tree.c: fix a bug introduced when fixing #438208 and reported by
75226 - Ashwin
75227 - * python/generator.py: fix an infinite loop bug
75228 -
75229 -Mon Apr 7 14:44:51 CEST 2008 Daniel Veillard <daniel@veillard.com>
75230 -
75231 - * xmlreader.c: fix a link to XmlNodeType doc reported by Martijn Arts
75232 - * docs/*: rebuilt
75233 -
75234 -Fri Apr 4 18:09:50 CEST 2008 Daniel Veillard <daniel@veillard.com>
75235 -
75236 - * parser.c: improve the *Recover* functions documentation
75237 -
75238 -Thu Apr 3 14:57:15 CEST 2008 Daniel Veillard <daniel@veillard.com>
75239 -
75240 - * parser.c: patch from Mark Rowe fixing BOM or encoding detection
75241 - in external parsed entities, should fix #440415
75242 -
75243 -Thu Apr 3 13:16:01 CEST 2008 Daniel Veillard <daniel@veillard.com>
75244 -
75245 - * tree.c: fix some problems with the *EatName functions when
75246 - running out of memory raised by Eric Schrock , should fix #438208
75247 -
75248 -Thu Apr 3 12:41:29 CEST 2008 Daniel Veillard <daniel@veillard.com>
75249 -
75250 - * xmlschemastypes.c: horror around the definition of the lexical
75251 - values for decimal and derived types, fixing to reject empty
75252 - values, should fix #503268
75253 -
75254 -Thu Apr 3 11:44:57 CEST 2008 Daniel Veillard <daniel@veillard.com>
75255 -
75256 - * encoding.c: buffer may not be large enough to convert to
75257 - UCS4, patch from Christian Fruth , fixes #504015
75258 -
75259 -Thu Apr 3 11:02:02 CEST 2008 Daniel Veillard <daniel@veillard.com>
75260 -
75261 - * HTMLparser.c: apparently it's okay to forget the semicolon after
75262 - entity refs in HTML, fixing char refs parsing accordingly based on
75263 - T. Manske patch, this should fix #517653
75264 -
75265 -Thu Apr 3 09:30:29 CEST 2008 Daniel Veillard <daniel@veillard.com>
75266 -
75267 - * error.c: avoid a scary realloc() loop should fix #520383
75268 -
75269 -Thu Apr 3 08:22:52 CEST 2008 Daniel Veillard <daniel@veillard.com>
75270 -
75271 - * parser.c: more realloc problems pointed out by Ashwin
75272 -
75273 -Thu Apr 3 07:40:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
75274 -
75275 - * xstc/Makefile.am: applied patch from Mike Hommey fixing distclean,
75276 - fixes #520387
75277 -
75278 -Thu Apr 3 06:52:32 CEST 2008 Daniel Veillard <daniel@veillard.com>
75279 -
75280 - * include/libxml/xpath.h: small doc improvement for xmlXPathContext
75281 - from Jack Jansen, fixes #524759
75282 - * doc/newapi.xsl doc/*: fixed a problem and regenerated the docs
75283 -
75284 -Tue Apr 1 09:59:22 CEST 2008 Daniel Veillard <daniel@veillard.com>
75285 -
75286 - * xpath.c: two patches from Alvaro Herrera to avoid problem when
75287 - running out of memory in XPath evaluations.
75288 -
75289 -Mon Mar 31 11:23:19 CEST 2008 Daniel Veillard <daniel@veillard.com>
75290 -
75291 - * parser.c: lot of out of memory handling fixes from Ashwin
75292 - * elfgcchack.h doc/elfgcchack.xsl: work around a problem with xmlDllMain
75293 - * include/libxml/threads.h: indenting cleanups
75294 -
75295 -Mon Mar 31 10:25:37 CEST 2008 Daniel Veillard <daniel@veillard.com>
75296 -
75297 - * parser.c docs/*: trying to clarify even more the xmlCleanupParser()
75298 - use and the memory documentation
75299 -
75300 -Wed Mar 26 18:39:58 CET 2008 Daniel Veillard <daniel@veillard.com>
75301 -
75302 - * parser.c: changes based on Alex Khesin patch where xmlParseCharRef
75303 - seems to not be checked correctly, fixes #520198
75304 -
75305 -Wed Mar 26 15:03:49 CET 2008 Daniel Veillard <daniel@veillard.com>
75306 -
75307 - * parser.c: patch from Ashwin to avoid a problem of attribute
75308 - redefinition in the DTD. Remove a warning too.
75309 -
75310 -Wed Mar 26 14:38:31 CET 2008 Daniel Veillard <daniel@veillard.com>
75311 -
75312 - * xmlschemas.c: fix a problem in externalSubsetSplit with a patch
75313 - from Ashwin
75314 -
75315 -Tue Mar 25 17:48:02 CET 2008 Daniel Veillard <daniel@veillard.com>
75316 -
75317 - * parser.c: fix various attribute normalisation problems reported
75318 - by Ashwin
75319 - * result/c14n/without-comments/example-4
75320 - result/c14n/with-comments/example-4: this impacted the result of
75321 - two c14n tests :-\
75322 - * test/att9 test/att10 test/att11 result//att9* result//att10*
75323 - result//att11*: added 3 specific regression tests coming from the
75324 - XML spec revision and from Ashwin
75325 -
75326 -Tue Mar 25 14:20:49 CET 2008 Daniel Veillard <daniel@veillard.com>
75327 -
75328 - * uri.c: fix saving for file:///X:/ URI embedding Windows file paths
75329 - should fix #524253
75330 -
75331 -Mon Mar 24 21:42:33 CET 2008 Daniel Veillard <daniel@veillard.com>
75332 -
75333 - * parser.c: fix a problem reported by Ashwin for system parameter
75334 - entities referenced from entities in external subset, add a
75335 - specific loading routine.
75336 - * test/valid/dtds/external.ent test/valid/dtds/external2.ent
75337 - test/valid/t11.xml result/valid/t11.xml*: added the test to
75338 - the regression suite
75339 -
75340 -Mon Mar 24 15:04:54 CET 2008 Daniel Veillard <daniel@veillard.com>
75341 -
75342 - * xmlschemas.c: fix an XML Schemas crash raised by Stefan Behnel
75343 - when testing with W3C test suite
75344 -
75345 -Mon Mar 24 12:12:00 CET 2008 Daniel Veillard <daniel@veillard.com>
75346 -
75347 - * threads.c: check some allocation with Ashwin patch
75348 -
75349 -Wed Mar 19 16:41:52 CET 2008 Daniel Veillard <daniel@veillard.com>
75350 -
75351 - * vms/build_libxml.com: update from Tycho Hilhorst, should fix #523378
75352 -
75353 -Tue Mar 18 09:23:05 CET 2008 Daniel Veillard <daniel@veillard.com>
75354 -
75355 - * threads.c: check some malloc returns with Ashwin patch, add
75356 - error messages and reindent the module.
75357 -
75358 -Fri Mar 14 15:28:43 CET 2008 Daniel Veillard <daniel@veillard.com>
75359 -
75360 - * xmlreader.c: patch from Ashwin removing duplicate tests
75361 -
75362 -Fri Mar 14 13:44:29 CET 2008 Daniel Veillard <daniel@veillard.com>
75363 -
75364 - * include/libxml/schematron.h include/libxml/xmlerror.h schematron.c:
75365 - applied patch from Tobias Minich to allow plugin schematron error
75366 - reporting in the normal error system, should fix #513998
75367 -
75368 -Fri Mar 14 11:52:09 CET 2008 Daniel Veillard <daniel@veillard.com>
75369 -
75370 - * parser.c xinclude.c: patch from Vasily Chekalkin fixes memory
75371 - leaks, should fix 512647
75372 -
75373 -Thu Mar 13 08:17:58 CET 2008 Daniel Veillard <daniel@veillard.com>
75374 -
75375 - * xmlregexp.c: found a nasty bug in regexp automata build,
75376 - reported by Ashwin and Bjorn Reese
75377 -
75378 -Wed Mar 12 18:56:22 CET 2008 Daniel Veillard <daniel@veillard.com>
75379 -
75380 - * HTMLparser.c: patch from Arnold Hendriks improving parsing of
75381 - html within html bogus data, still not a complete fix though
75382 -
75383 -Wed Mar 12 10:22:01 CET 2008 Daniel Veillard <daniel@veillard.com>
75384 -
75385 - * python/types.c: fix a memory error when using namespace nodes
75386 - returned from XPath queries, should fix #521699
75387 - * python/tests/Makefile.am python/tests/xpathns.py: add a specific
75388 - regression test for it
75389 -
75390 -Mon Mar 10 16:25:32 CET 2008 Rob Richards <rrichards@ctindustries.net>
75391 -
75392 - * include/win32config.h: add ICONV_CONST define for win32 build
75393 - to satisfy encoding.c change in rev 3693
75394 -
75395 -Fri Mar 7 17:45:27 CET 2008 Daniel Veillard <daniel@veillard.com>
75396 -
75397 - * xmlsave.c parser.c: fix handling of empty CDATA nodes as
75398 - reported and discussed around #514181 and associated patches
75399 - * test/emptycdata.xml result/emptycdata.xml*
75400 - result/noent/emptycdata.xml: added a specific test in the
75401 - regression suite.
75402 -
75403 -Thu Mar 6 15:23:10 CET 2008 Daniel Veillard <daniel@veillard.com>
75404 -
75405 - * encoding.c: poblem with encoding detection for UTF-16 reported by
75406 - Ashwin and found by Bill
75407 - * test/valid/dtds/utf16b.ent test/valid/dtds/utf16l.ent
75408 - test/valid/UTF16Entity.xml result/valid/UTF16Entity.xml*: added
75409 - the example to the regression tests
75410 -
75411 -Tue Mar 4 14:16:38 CET 2008 Daniel Veillard <daniel@veillard.com>
75412 -
75413 - * xmlwriter.c: patch from Alex Khesin fixing CDATA output after
75414 - a text node.
75415 - * parser.c: fixed the comment for xmlParserCleanup
75416 - * globals.c: fixed indentation
75417 -
75418 -Mon Feb 25 16:42:19 CET 2008 Daniel Veillard <daniel@veillard.com>
75419 -
75420 - * testModule.c: patch from Florent Guiliani to fix build on
75421 - SCO OpenServer
75422 -
75423 -Thu Feb 21 22:46:08 CET 2008 Daniel Veillard <daniel@veillard.com>
75424 -
75425 - * debugXML.c: made one of the changes suggested by Brian Krahmer
75426 - * testRegexp.c: allow to pass '--' on the command line to allow
75427 - regexps starting with the character '-'
75428 -
75429 -Tue Feb 19 08:49:32 CET 2008 Daniel Veillard <daniel@veillard.com>
75430 -
75431 - * python/Makefile.am python/tests/Makefile.am: applied cleanup
75432 - patches for cross compilation and MinGW from Roumen Petrov
75433 -
75434 -Sat Feb 16 11:06:54 CET 2008 Daniel Veillard <daniel@veillard.com>
75435 -
75436 - * xmlIO.c: fix output bug reported by Petr Pajas and analyzed by
75437 - Bill
75438 -
75439 -Fri Feb 15 09:32:11 CET 2008 Daniel Veillard <daniel@veillard.com>
75440 -
75441 - * include/libxml/xmlerror.h tree.c: patch from Julien Charbon
75442 - to simplify the processing of xmlSetProp()
75443 -
75444 -Fri Feb 15 08:45:32 CET 2008 Daniel Veillard <daniel@veillard.com>
75445 -
75446 - * config.h.in configure.in encoding.c: patch from Roumen Petrov
75447 - to detect if iconv() needs a const for the second parameter
75448 -
75449 -Fri Feb 15 08:41:31 CET 2008 Daniel Veillard <daniel@veillard.com>
75450 -
75451 - * macos/src/XMLTestPrefix2.h win32/Makefile.msvc: EOL cleanups
75452 - from Florent Guiliani
75453 -
75454 -Wed Feb 13 10:56:38 CET 2008 Daniel Veillard <daniel@veillard.com>
75455 -
75456 - * xmlwriter.c: applied patch from Alfred Mickautsch to flush the
75457 - output at the end of document.
75458 -
75459 -Fri Feb 8 11:57:03 CET 2008 Daniel Veillard <daniel@veillard.com>
75460 -
75461 - * doc/examples/examples.xml: regenerated, it was truncated.
75462 -
75463 -Fri Feb 8 11:47:18 CET 2008 Daniel Veillard <daniel@veillard.com>
75464 -
75465 - * xmlmodule.c: apply simple patch from Carlo Bramini to avoid
75466 - compilation problems with Mingw32
75467 -
75468 -Fri Feb 8 11:33:15 CET 2008 Daniel Veillard <daniel@veillard.com>
75469 -
75470 - * xmlregexp.c: apply patch from Andrew Tosh to fix behaviour
75471 - when '.' is used in a posCharGroup
75472 - * test/schemas/poschargrp0_0.* result/schemas/poschargrp0_0_0*:
75473 - added the test to the regression suite
75474 -
75475 -Fri Feb 8 10:54:09 CET 2008 Daniel Veillard <daniel@veillard.com>
75476 -
75477 - * dict.c: applied patch from Florent Guilian to remove an
75478 - useless mutex in the xmlDict structure.
75479 -
75480 -Wed Feb 6 17:00:20 CET 2008 Daniel Veillard <daniel@veillard.com>
75481 -
75482 - * SAX2.c: another leak reported by Ashwin
75483 - * xinclude.c: fixed the behaviour when XIncluding a fragment
75484 - of the current document, patch from Chris Ryan
75485 -
75486 -Wed Feb 6 12:10:08 HKT 2008 William Brack <wbrack@mmm.com.hk>
75487 -
75488 - * nanohttp.c: added space for port number (when not 80) in
75489 - xmlNanoHTTPMethodRedir, plus a few more comments. Should
75490 - fix #514521.
75491 -
75492 -Tue Feb 5 09:41:46 CET 2008 Daniel Veillard <daniel@veillard.com>
75493 -
75494 - * schemas.c: apply fix suggested by Ashwin correcting a cut-n-paste
75495 - error about the SAX callback in cdataBlockSplit when streaming
75496 - XSD validation
75497 -
75498 -Tue Feb 5 09:36:46 CET 2008 Daniel Veillard <daniel@veillard.com>
75499 -
75500 - * uri.c: applied a patch based on Petr Sumbera one to avoid a
75501 - problem with paths starting with //
75502 -
75503 -Mon Feb 4 17:48:30 CET 2008 Daniel Veillard <daniel@veillard.com>
75504 -
75505 - * doc/xml.html doc/xmlmem.html: added a small section on returning
75506 - memory to the kernel by compacting the heap provided by Wolfram Sang
75507 -
75508 -Fri Jan 25 20:01:42 CET 2007 Rob Richards <rrichards@ctindustries.net>
75509 -
75510 - * include/win32config.h win32/Makefile.msvc: fix build under VS 2008.
75511 - patch by David Wimsey
75512 -
75513 -Thu Jan 24 15:37:04 CET 2008 Daniel Veillard <daniel@veillard.com>
75514 -
75515 - * parser.c: fix a memory leak in internal subset parsing with
75516 - a fix from Ashwin
75517 - * test/errors/content1.xml result/errors/content1.xml*:
75518 - add test to regressions
75519 -
75520 -Fri Jan 11 09:00:09 CET 2008 Daniel Veillard <daniel@veillard.com>
75521 -
75522 - * configure.in doc/*: preparing release of 2.6.31
75523 -
75524 -Fri Jan 11 08:58:49 CET 2008 Daniel Veillard <daniel@veillard.com>
75525 -
75526 - * parser.c: avoid a warning on 64bits introduced earlier
75527 - * parserInternals.c: make more checking on the UTF-8 input
75528 -
75529 -Fri Jan 11 15:37:05 CST 2008 Daniel Veillard <daniel@veillard.com>
75530 -
75531 - * HTMLparser.c: avoid stopping parsing when encountering
75532 - out of range characters in an HTML file, report and
75533 - continue processing instead, should fix #472696
75534 -
75535 -Fri Jan 11 15:13:35 CST 2008 Daniel Veillard <daniel@veillard.com>
75536 -
75537 - * check-relaxng-test-suite2.py check-relaxng-test-suite.py
75538 - Makefile.am python/tests/Makefile.am python/Makefile.am
75539 - check-xsddata-test-suite.py: patches from John Carr to
75540 - start cleaning up 'make diskcheck' problems c.f. #506228
75541 -
75542 -Fri Jan 11 14:48:40 CST 2008 Daniel Veillard <daniel@veillard.com>
75543 -
75544 - * xmllint.c: apply fix from Stefan Kost to avoid a crash
75545 - in xmllint, fixes 504284
75546 -
75547 -Fri Jan 11 14:39:03 CST 2008 Daniel Veillard <daniel@veillard.com>
75548 -
75549 - * xml2-config.in: apply patch from Fred Crozat to avoid
75550 - outputting -L/usr/lib from xml2-config, fixes #497012
75551 -
75552 -Fri Jan 11 14:18:09 CST 2008 Daniel Veillard <daniel@veillard.com>
75553 -
75554 - * HTMLparser.c: fix definition for <embed> to avoid error
75555 - when saving back, patch from Stefan Behnel fixing 495213
75556 -
75557 -Fri Jan 11 14:06:09 CST 2008 Daniel Veillard <daniel@veillard.com>
75558 -
75559 - * parser.c: applied patch from Christian Schmidt fixing a
75560 - column counter update problem, fixes #472696
75561 -
75562 -Fri Jan 11 13:22:14 CST 2008 Daniel Veillard <daniel@veillard.com>
75563 -
75564 - * parser.c: handle a erroneous parsing of attributes in
75565 - case said attribute has been redeclared in the DTD with a
75566 - different type
75567 - * hash.c: fix the hash scanner to not crash if a first element
75568 - from the hash list is been removed in the callback
75569 -
75570 -Wed Jan 9 10:15:50 CST 2008 Daniel Veillard <daniel@veillard.com>
75571 -
75572 - * xmlwriter.c: fix indentation in xmlTextWriterFullEndElement,
75573 - as raised by Felipe Pena, should fix #508156
75574 -
75575 -Tue Dec 6 11:07:42 CET 2007 Rob Richards <rrichards@ctindustries.net>
75576 -
75577 - * pattern.c: fix crash from double free of name for bug #501760
75578 -
75579 -Fri Nov 23 11:47:48 CET 2007 Daniel Veillard <daniel@veillard.com>
75580 -
75581 - * threads.c: remove unused variable in __xmlGlobalInitMutexLock
75582 - reported by Hannes Eder
75583 -
75584 -Mon Nov 19 18:39:26 CET 2007 Daniel Veillard <daniel@veillard.com>
75585 -
75586 - * xmlregexp.c: remove a cut-and-paste copy error
75587 -
75588 -Fri Nov 16 11:55:36 CET 2007 Rob Richards <rrichards@ctindustries.net>
75589 -
75590 - * globals.c threads.c include/libxml/threads.h:
75591 - __xmlGlobalInitMutexDestroy() will free global_init_lock on Win32.
75592 - Patch from Marc-Antoine Ruel.
75593 -
75594 -Tue Nov 13 21:26:27 CET 2007 Rob Richards <rrichards@ctindustries.net>
75595 -
75596 - * schematron.c: fix crash/leaks from xmlSchematronParse due to improper
75597 - schema document ownership for bug #495215
75598 -
75599 -Tue Oct 30 21:24:55 CET 2007 Daniel Veillard <daniel@veillard.com>
75600 -
75601 - * xmlmemory.c: xmlFree(NULL) should not crash in debug mode
75602 - should fix #491651
75603 -
75604 -Tue Oct 16 13:58:41 CEST 2007 Daniel Veillard <daniel@veillard.com>
75605 -
75606 - * testURI.c: add a debug option printing all the fields within
75607 - the parsed URI structure
75608 -
75609 -Wed Oct 10 10:25:52 CEST 2007 Daniel Veillard <daniel@veillard.com>
75610 -
75611 - * xmlsave.c: fix to avoid a crash when dumping an attribute from
75612 - an XHTML document, patch contributed to fix #485298
75613 -
75614 -Tue Aug 28 19:32:28 CEST 2007 Daniel Veillard <daniel@veillard.com>
75615 -
75616 - * xmlregexp.c: another nasty regexp case fixed.
75617 - * test/regexp/ranges2 result/regexp/ranges2: added to regression
75618 - suite
75619 -
75620 -Fri Aug 24 10:58:58 HKT 2007 William Brack <wbrack@mmm.com.hk>
75621 -
75622 - * nanohttp.c: Enhanced to include port number (if not == 80) on the
75623 - "Header:" URL (bug #469681).
75624 - * xmlregexp.c: Fixed a typo causing a warning message.
75625 -
75626 -Thu Aug 23 22:48:20 CEST 2007 Daniel Veillard <daniel@veillard.com>
75627 -
75628 - * nanohttp.c: fix an open() call with creation without 3rd argument
75629 - hopefully that interface is never used.
75630 -
75631 -Thu Aug 23 17:00:49 CEST 2007 Daniel Veillard <daniel@veillard.com>
75632 -
75633 - * configure.in doc/*: preparing release of 2.6.30
75634 -
75635 -Thu Aug 23 20:58:28 HKT 2007 William Brack <wbrack@mmm.com.hk>
75636 -
75637 - * xpath.c: fixed xmlXPathCompOpEvalPositionalPredicate problem
75638 - with object caching (bug #469410)
75639 -
75640 -Thu Aug 23 11:28:38 CEST 2007 Daniel Veillard <daniel@veillard.com>
75641 -
75642 - * xmlschemas.c test/schemas/*455953* result/schemas/bug455953*:
75643 - applied patch from Frank Gross fixing Schemas IDC import bug
75644 - #455953 and also add the test to the regression suite
75645 -
75646 -Wed Aug 22 18:29:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75647 -
75648 - * xmlregexp.c: try to fix for the nth time the automata generation
75649 - in case of complex ranges. I suppose that time it is actually okay
75650 -
75651 -Tue Aug 14 15:51:05 CEST 2007 Daniel Veillard <daniel@veillard.com>
75652 -
75653 - * parser.c: aligned xmlSAXUserParseMemory() to match
75654 - xmlSAXUserParseFile() logic based on Ashwin post, and ifdef
75655 - cleanup
75656 -
75657 -Tue Aug 14 11:42:27 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75658 -
75659 - * xmlIO.c: fixed windows path determination (patch from
75660 - Roland Schwarz, bug #462877)
75661 - * win32/Makefile.mingw win32/configure.js: fixed mingw build
75662 - (patch from Roland Schwarz, bug #462877)
75663 -
75664 -Wed Aug 1 09:50:12 CEST 2007 Daniel Veillard <daniel@veillard.com>
75665 -
75666 - * parser.c: fixed a parser bug where invalid char in comment may
75667 - not be detected, reported by Ashwin Sinha
75668 - * test/errors/comment1.xml result/errors/comment1.xml*: added
75669 - the example to the regression suite
75670 -
75671 -Thu Jul 26 13:42:26 CEST 2007 Daniel Veillard <daniel@veillard.com>
75672 -
75673 - * xmlsave.c: fixed problem reported on bug #460415
75674 -
75675 -Thu Jul 19 18:10:58 PDT 2007 William Brack <wbrack@mmm.com.hk>
75676 -
75677 - * uri.c: applied patch from from Patrik Fimml. Fixes bug #458268.
75678 -
75679 -Wed Jul 18 11:05:08 PDT 2007 William Brack <wbrack@mmm.com.hk>
75680 -
75681 - * xinclude.c: applied patch from bug #454608 from Patrik Fimml.
75682 - Fixes bug #454608.
75683 -
75684 -Wed Jul 11 19:57:59 CEST 2007 Daniel Veillard <daniel@veillard.com>
75685 -
75686 - * xmlschemas.c: applied patch for xsi:nil from Frank Gross, this
75687 - should fix bug #358125
75688 -
75689 -Wed Jul 4 17:44:20 CEST 2007 Daniel Veillard <daniel@veillard.com>
75690 -
75691 - * xmlwriter.c: patch from Dodji Seketeli to avoid a leak on repeated
75692 - uses of xmlTextWriterStartDocument()
75693 -
75694 -Tue Jun 26 13:30:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75695 -
75696 - * xmlschemas.c: fix a crash on solaris when a printf %s with a NULL
75697 - argument occurs, should fix #450936
75698 -
75699 -Wed Jun 13 13:33:38 PDT 2007 William Brack <wbrack@mmm.com.hk>
75700 -
75701 - * xpath.c: fixed problem in previous fix to xmlXPathNodeSetSort
75702 -
75703 -Tue Jun 12 18:17:28 CEST 2007 Daniel Veillard <daniel@veillard.com>
75704 -
75705 - * doc/* configure.in NEWS: release of libxml2 2.6.29
75706 - * valid.c: patch from Dagfinn I. Mannsåker for idness of name
75707 - in HTML, c.f. bug #305885.
75708 -
75709 -Tue Jun 12 17:14:08 CEST 2007 Daniel Veillard <daniel@veillard.com>
75710 -
75711 - * SAX2.c: fixing bug #319964, parsing of HTML attribute really
75712 - should not have namespace processing.
75713 -
75714 -Tue Jun 12 16:42:14 CEST 2007 Daniel Veillard <daniel@veillard.com>
75715 -
75716 - * parser.c: fixed the push mode when a big comment occurs before
75717 - an internal subset, should close bug #438835
75718 - * test/comment6.xml result//comment6.xml*: added a special
75719 - test in the regression suite
75720 -
75721 -Tue Jun 12 15:41:09 CEST 2007 Daniel Veillard <daniel@veillard.com>
75722 -
75723 - * parser.c: fix bug #414846 where invalid characters in attributes
75724 - would sometimes not be detected.
75725 - * test/errors/attr4.xml result/errors/attr4.xml*: added a specific
75726 - test case to the regression tests
75727 -
75728 -Tue Jun 12 14:23:24 CEST 2007 Daniel Veillard <daniel@veillard.com>
75729 -
75730 - * xstc/Makefile.am: apply patch from Ryan Hill to cope with changes
75731 - in GNU tar, should fix #396751
75732 -
75733 -Tue Jun 12 12:03:36 CEST 2007 Daniel Veillard <daniel@veillard.com>
75734 -
75735 - * python/types.c: try to allow compilation on old python version
75736 - should fix #398125
75737 -
75738 -Tue Jun 12 11:48:15 CEST 2007 Daniel Veillard <daniel@veillard.com>
75739 -
75740 - * HTMLtree.c: htmlNodeDumpFormatOutput didn't handle XML_ATTRIBUTE_NODe
75741 - fixes bug #438390
75742 -
75743 -Tue Jun 12 11:37:55 CEST 2007 Daniel Veillard <daniel@veillard.com>
75744 -
75745 - * xmlIO.c: workaround misgenerated file: URIs c.f. #437385
75746 -
75747 -Tue Jun 12 11:22:47 CEST 2007 Daniel Veillard <daniel@veillard.com>
75748 -
75749 - * relaxng.c: fixed bug #407436 a crash in a specific case of
75750 - Relax-NG validation
75751 -
75752 -Tue Jun 12 11:12:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75753 -
75754 - * catalog.c: fixed bug #383687, some case of recursion on next
75755 - were not caught in the catalog code.
75756 -
75757 -Tue Jun 12 10:37:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75758 -
75759 - * HTMLparser.c: fixed bug #381877, avoid reading over the end
75760 - of stream when generating an UTF-8 encoding error.
75761 -
75762 -Tue Jun 12 10:16:48 CEST 2007 Daniel Veillard <daniel@veillard.com>
75763 -
75764 - * parser.c: fixed bug #366161, trivially added the check in
75765 - xmlCtxtReset()
75766 -
75767 -Fri Jun 8 21:48:21 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75768 -
75769 - * win32/configure.js win32/Makefile.msvc: add --vcmanifest flag (yes/no)
75770 - for VC8 build support to embed manifest within files. Under MS VC, build
75771 - libxml2_a_dll.lib by default (LIBXML_STATIC_FOR_DLL flag).
75772 -
75773 -Fri Jun 8 21:37:46 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75774 -
75775 - * threads.c include/libxml/threads.h: use specified calling convention
75776 - for xmlDllMain. Old SDKs (VC6) only support InterlockedCompareExchange.
75777 - add xmlDllMain to header for win32 when building for static dll
75778 -
75779 -Fri Jun 8 10:51:28 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75780 -
75781 - * xmlwriter.c: fixed problem with namespace declaration being
75782 - written more than once per element start tag
75783 -
75784 -Wed Jun 6 10:18:28 PDT 2007 William Brack <wbrack@mmm.com.hk>
75785 -
75786 - * xpath.c: fixed problem with xmlXPathNodeSetSort;
75787 - fixed problem with xmlXPathNodeTrailingSorted (both bug#413451)
75788 -
75789 -Wed May 30 22:05:08 PDT 2007 William Brack <wbrack@mmm.com.hk>
75790 -
75791 - * xpath.c: fixed problem with string value for PI node
75792 - (bug #442275)
75793 -
75794 -Mon May 28 16:14:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75795 -
75796 - * uri.c: fix bug reported by François Delyon
75797 -
75798 -Tue May 22 08:59:48 PDT 2007 William Brack <wbrack@mmm.com.hk>
75799 -
75800 - * encoding.c: Fixed typo in xmlCharEncFirstLine pointed out
75801 - by Mark Rowe (bug #440159)
75802 - * include/libxml/xmlversion.h.in: Added check for definition of
75803 - _POSIX_C_SOURCE to avoid warnings on Apple OS/X (patch from
75804 - Wendy Doyle and Mark Rowe, bug #346675)
75805 - * schematron.c, testapi.c, tree.c, xmlIO.c, xmlsave.c: minor
75806 - changes to fix compilation warnings - no change to logic.
75807 -
75808 -Tue May 15 22:18:08 PDT 2007 William Brack <wbrack@mmm.com.hk>
75809 -
75810 - * nanohttp.c: small enhancement to last fix, pointed out
75811 - by Alex Cornejo
75812 -
75813 -Tue May 15 12:38:38 PDT 2007 William Brack <wbrack@mmm.com.hk>
75814 -
75815 - * nanohttp.c: fixed problem on gzip streams (bug #438045)
75816 - * xpath.c: fixed minor spot of redundant code - no logic change.
75817 -
75818 -Fri May 11 22:45:18 HKT 2007 William Brack <wbrack@mmm.com.hk>
75819 -
75820 - * xpath.c: enhanced the coding for xmlXPathCastNumberToString
75821 - in order to produce the required number of significant digits
75822 - (bug #437179)
75823 -
75824 -Thu May 10 01:52:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75825 -
75826 - * list.c: applied patch to fix xmlListAppend() from
75827 - Georges-André SILBER
75828 - * valid.c: also fix the place where it was called.
75829 -
75830 -Wed May 2 18:47:33 CEST 2007 Daniel Veillard <daniel@veillard.com>
75831 -
75832 - * parser.c: tried to fix an error problem on entity content failure
75833 - reported by Michael Day
75834 -
75835 -Wed May 2 18:23:35 CEST 2007 Daniel Veillard <daniel@veillard.com>
75836 -
75837 - * configure.in: typo patch from Bjorn Reese
75838 -
75839 -Wed May 2 18:12:58 CEST 2007 Daniel Veillard <daniel@veillard.com>
75840 -
75841 - * HTMLparser.c: applied patch from Michael Day to add support for
75842 - <embed>
75843 -
75844 -Thu Apr 26 10:58:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75845 -
75846 - * HTMLparser.c: Jean-Daniel Dupas pointed a couple of problems
75847 - in htmlCreateDocParserCtxt.
75848 -
75849 -Thu Apr 26 10:36:26 CEST 2007 Daniel Veillard <daniel@veillard.com>
75850 -
75851 - * uri.c include/libxml/uri.h: patch from Richard Jones to save
75852 - the query part in raw form.
75853 - * libxml2-python-api.xml: also added accessor for the python bindings
75854 -
75855 -Wed Apr 25 15:57:32 CEST 2007 Daniel Veillard <daniel@veillard.com>
75856 -
75857 - * xstc/Makefile.am doc/examples/Makefile.am Makefile.am: applied
75858 - patch from Richard Jones to for the silent flag on valgrind
75859 - when doing "make valgrind"
75860 - * xmlregexp.c: raise a regexp error when '\' is misused to escape
75861 - a standard character.
75862 -
75863 -Tue Apr 24 20:15:14 CEST 2007 Daniel Veillard <daniel@veillard.com>
75864 -
75865 - * tree.c: Richard Jones reported xmlBufferAdd (buf, "", -1), fixing it
75866 -
75867 -Tue Apr 24 10:59:28 CEST 2007 Daniel Veillard <daniel@veillard.com>
75868 -
75869 - * uri.c: fix xmlURIUnescapeString comments which was confusing
75870 -
75871 -Wed Apr 18 09:52:25 CEST 2007 Daniel Veillard <daniel@veillard.com>
75872 -
75873 - * include/win32config.h libxml.h: new patch from Andreas Stricke to
75874 - better integrate support for Windows CE
75875 -
75876 -Tue Apr 17 16:50:12 CEST 2007 Daniel Veillard <daniel@veillard.com>
75877 -
75878 - * doc/* configure.in NEWS: release of libxml2 2.6.28
75879 -
75880 -Tue Apr 17 14:47:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75881 -
75882 - * catalog.c libxml.h win32/wince/wincecompat.h win32/wince/wincecompat.c
75883 - xmlIO.c nanohttp.c nanoftp.c trio.c triostr.c triostr.h: applied
75884 - patch from Andreas Stricke to ease the compilation on Windows CE
75885 -
75886 -Tue Apr 17 14:34:45 CEST 2007 Daniel Veillard <daniel@veillard.com>
75887 -
75888 - * xmllint.c catalog.c: "xmllint unusable on win32" so applied
75889 - a libxml2 patch from Christian Ehrlicher
75890 -
75891 -Mon Apr 16 09:05:01 CEST 2007 Daniel Veillard <daniel@veillard.com>
75892 -
75893 - * HTMLparser.c: change the way script/style are parsed to
75894 - not try to detect comments, reported by Mike Day
75895 - * result/HTML/doc3.*: affects the result of that test
75896 -
75897 -Wed Apr 11 22:38:18 HKT 2007 William Brack <wbrack@mmm.com.hk>
75898 -
75899 - * xmlregexp.c: small enhancement for quantifier range with
75900 - min occurs of 0; fixes bug 425542.
75901 -
75902 -Fri Mar 30 14:41:57 CEST 2007 Daniel Veillard <daniel@veillard.com>
75903 -
75904 - * xmlIO.c: applied change from Michael Day to avoid a problem when
75905 - compiled without zlib support.
75906 -
75907 -Wed Mar 21 17:58:13 CET 2007 Daniel Veillard <daniel@veillard.com>
75908 -
75909 - * include/libxml/xpath.h: applied documentation patch from James Dennett
75910 -
75911 -Wed Mar 21 21:20:48 HKT 2007 William Brack <wbrack@mmm.com.hk>
75912 -
75913 - * xmlregexp.c: fixed problem with 0x2d in Char Range (bug #420596)
75914 - * test/regexp/bug420596, result/regexp/bug420596: added regression
75915 - test for this
75916 -
75917 -Wed Mar 21 14:23:08 HKT 2007 William Brack <wbrack@mmm.com.hk>
75918 -
75919 - * HTMLparser.c: fixed memory access error on parsing of meta data
75920 - which had errors (bug #382206). Also cleaned up a few warnings
75921 - by adding some additional DECL macros.
75922 -
75923 -Tue Mar 20 09:58:13 CET 2007 Daniel Veillard <daniel@veillard.com>
75924 -
75925 - * nanoftp.c: applied patch from Björn Wiberg to try to fix again
75926 - the silly __ss_family problem on various AIXes, should fix #420184
75927 -
75928 -Wed Mar 14 20:30:38 HKT 2007 William Brack <wbrack@mmm.com.hk>
75929 -
75930 - * configure.in: corrected small error in last commit
75931 - * xmlreader.c: corrected small typo in last commit
75932 -
75933 -Wed Mar 14 19:35:28 HKT 2007 William Brack <wbrack@mmm.com.hk>
75934 -
75935 - * xmlschemas.c: fixed problem with referenced attribute groups
75936 - (bug #417621)
75937 - * configure.in: re-ordered some includes for types.h / socket.h
75938 - (bug #416001)
75939 -
75940 -Fri Mar 9 17:54:40 CET 2007 Daniel Veillard <daniel@veillard.com>
75941 -
75942 - * xmlreader.c: applied patch from Julien Reichel cleaning up mode
75943 - and state internal flags mixups
75944 -
75945 -Wed Mar 7 16:18:18 HKT 2007 William Brack <wbrack@mmm.com.hk>
75946 -
75947 - * xpath.c: fixed xmlXPathCmpNodes for incorrect result on certain
75948 - cases when comparing identical nodes (bug #415567) with patch
75949 - from Oleg Paraschenko
75950 -
75951 -Fri Feb 16 09:13:38 PST 2007 William Brack <wbrack@mmm.com.hk>
75952 -
75953 - * python/libxml.py: fixed tab problem with patch from
75954 - Andreas Hanke (bug #408626)
75955 -
75956 -Thu Feb 15 12:43:28 PST 2007 William Brack <wbrack@mmm.com.hk>
75957 -
75958 - * doc/xml.html: Changed all references to libxml2 CVS over to
75959 - the corresponding SVN. A few other spelling/grammar/links
75960 - also changed.
75961 - * doc/libxml2-api.xml, doc/*.html: Regenerated all docs.
75962 -
75963 -Tue Feb 13 18:15:58 PST 2007 William Brack <wbrack@mmm.com.hk>
75964 -
75965 - * xpath.c: Fixed memory bug with invalid function reported by
75966 - Francois Delyon on mailing list
75967 -
75968 -Mon Feb 12 16:40:48 PST 2007 William Brack <wbrack@mmm.com.hk>
75969 -
75970 - * xinclude.c: fixed problem with invalid char encountered
75971 - during text include (reported on xslt mailing list)
75972 -
75973 -Mon Feb 12 18:30:01 CET 2007 Daniel Veillard <daniel@veillard.com>
75974 -
75975 - * Makefile.am: small cleanup to avoid packaging .svn
75976 - * libxml.h threads.c parser.c: applied patch to avoid a problem
75977 - in concurrent threaded initialization fix from Ted Phelps
75978 -
75979 -Thu Feb 08 15:35:18 PST 2007 William Brack <wbrack@mmm.com.hk>
75980 -
75981 - * parser.c: added a GROW when parsing complex comments (bug #405666)
75982 - * gentest.py, testapi.c: added a hack to prevent destruction of any
75983 - param with 'destroy' in it's description (i.e. param destroyed by
75984 - the routine under test, so shouldn't be destroyed by testapi)
75985 - * xmlreader.c: added freeing of 'input' param even on error
75986 - (fixes leak detected by testapi)
75987 -
75988 -Wed Jan 31 10:25:38 PST 2007 William Brack <wbrack@mmm.com.hk>
75989 -
75990 - * testAutomata.c, testRegexp.c, testThreads.c, testThreadsWin32.c,
75991 - xmlwriter.c: repositioned #include for libxml.h to avoid
75992 - compilation error on some architectures (bug #398277)
75993 - * fixed screwed-up ChangeLog (deleted some duplicate entries)
75994 -
75995 -Fri Jan 26 00:05:18 PST 2007 William Brack <wbrack@mmm.com.hk>
75996 -
75997 - * implemented patch from Stéphane Bidoul for uri.c (bug #389767)
75998 -
75999 -Thu Jan 25 11:15:08 PST 2007 William Brack <wbrack@mmm.com.hk>
76000 -
76001 - * xpath.c: added checks for alloc fail on calls to
76002 - xmlXPathNewContext (libxslt bug #400242)
76003 -
76004 -Thu Jan 11 15:38:08 PST 2007 William Brack <wbrack@mmm.com.hk>
76005 -
76006 - * Re-generated the documentation (API chunks 27-29 were missing)
76007 - (also causes changes to testapi.c, elfgcchack.h and
76008 - win32/libxml2.def.src)
76009 -
76010 -Tue Jan 9 22:24:26 CET 2007 Daniel Veillard <daniel@veillard.com>
76011 -
76012 - * python/libxml.c: fix a memory leak in the python string handling
76013 - when SAX event are passed back to the python handlers
76014 -
76015 -Thu Jan 4 18:27:49 CET 2007 Daniel Veillard <daniel@veillard.com>
76016 -
76017 - * xmlreader.c: fix xmlTextReaderSetup() description
76018 - * test/relaxng/empty1.rng test/relaxng/comps_0.xml
76019 - test/relaxng/empty1_0.xml test/relaxng/comps.rng
76020 - test/relaxng/empty0.rng test/relaxng/empty0_0.xml
76021 - test/relaxng/empty1_1.xml: tests which were apparently
76022 - never committed to CVS
76023 -
76024 -Wed Jan 3 16:05:21 PST 2007 Aleksey Sanin <aleksey@aleksey.com>
76025 -
76026 - * xmlreader.c include/libxml/xmlreader.h win32/libxml2.def.src:
76027 - expose xmlTextReaderSetup() function
76028 -
76029 -Wed Jan 3 16:14:13 CET 2007 Daniel Veillard <daniel@veillard.com>
76030 -
76031 - * configure.in: adapt the extra versioning code to SVN
76032 -
76033 -Thu Dec 14 16:52:34 CET 2006 Daniel Veillard <daniel@veillard.com>
76034 -
76035 - * python/generator.py python/libxml.py: apparently id() sometimes
76036 - generate negative values and %X outputs -XXXX :-(
76037 -
76038 -Mon Dec 4 10:30:25 CET 2006 Daniel Veillard <daniel@veillard.com>
76039 -
76040 - * parser.c include/libxml/tree.h: patch from Michael Day on standalone
76041 - and XML declaration detection, and associated documentation change
76042 -
76043 -Mon Dec 4 10:27:01 CET 2006 Daniel Veillard <daniel@veillard.com>
76044 -
76045 - * xinclude.c: another XInclude user data propagation patch from
76046 - Michael Day
76047 -
76048 -Thu Nov 23 17:22:03 CET 2006 Daniel Veillard <daniel@veillard.com>
76049 -
76050 - * HTMLparser.c: applied patch from Steven Rainwater to fix
76051 - UTF8ToHtml behaviour on code points which are not mappable to
76052 - predefined HTML entities, fixes #377544
76053 -
76054 -Thu Nov 23 17:11:23 CET 2006 Daniel Veillard <daniel@veillard.com>
76055 -
76056 - * xpath.c: fixed a bug where the principal node type of an axis
76057 - wasn't tested on name check, fixes bug #377432
76058 -
76059 -Wed Nov 8 10:19:27 CET 2006 Daniel Veillard <daniel@veillard.com>
76060 -
76061 - * HTMLparser.c: change htmlCtxtReset() following Michael Day bug
76062 - report and suggestion.
76063 -
76064 -Mon Nov 6 09:56:41 CET 2006 Daniel Veillard <daniel@veillard.com>
76065 -
76066 - * uri.c: applied patch from Igor for path conversion on Windows
76067 -
76068 -Thu Nov 2 11:29:17 CET 2006 Daniel Veillard <daniel@veillard.com>
76069 -
76070 - * xmlregexp.c: another small change on the algorithm for the
76071 - elimination of epsilon transitions, should help on #362989 too
76072 -
76073 -Wed Nov 1 16:33:10 CET 2006 Daniel Veillard <daniel@veillard.com>
76074 -
76075 - * tree.c: applied documentation patches from Markus Keim
76076 - * xmlregexp.c: fixed one bug and added a couple of optimisations
76077 - while working on bug #362989
76078 -
76079 -Fri Oct 27 14:54:07 CEST 2006 Daniel Veillard <daniel@veillard.com>
76080 -
76081 - * HTMLparser.c: applied a reworked version of Usamah Malik patch
76082 - to avoid growing the parser stack in some autoclose cases, should
76083 - fix #361221
76084 -
76085 -Thu Oct 26 10:54:40 CEST 2006 Daniel Veillard <daniel@veillard.com>
76086 -
76087 - * xpath.c: William spotted an obvious bug
76088 -
76089 -Wed Oct 25 18:04:50 CEST 2006 Daniel Veillard <daniel@veillard.com>
76090 -
76091 - * NEWS configure.in testapi.c doc//*: preparing release of
76092 - libxml2-2.6.27
76093 - * include/libxml/tree.h: fix a small problem with preproc flags
76094 -
76095 -Fri Oct 20 14:55:47 CEST 2006 Daniel Veillard <daniel@veillard.com>
76096 -
76097 - * tree.c: fix comment for xmlDocSetRootElement c.f. #351981
76098 - * xmllint.c: order XPath elements when using --shell
76099 -
76100 -Tue Oct 17 23:23:26 CEST 2006 Daniel Veillard <daniel@veillard.com>
76101 -
76102 - * xmlregexp.c: applied fix from Christopher Boumenot for bug
76103 - #362714 on regexps missing ']'
76104 -
76105 -Tue Oct 17 22:32:42 CEST 2006 Daniel Veillard <daniel@veillard.com>
76106 -
76107 - * parserInternals.c: applied patch from Marius Konitzer to avoid
76108 - leaking in xmlNewInputFromFile() in case of HTTP redirection
76109 -
76110 -Tue Oct 17 22:19:02 CEST 2006 Daniel Veillard <daniel@veillard.com>
76111 -
76112 - * HTMLparser.c: fix one problem found in htmlCtxtUseOptions()
76113 - and pointed in #340591
76114 -
76115 -Tue Oct 17 22:04:31 CEST 2006 Daniel Veillard <daniel@veillard.com>
76116 -
76117 - * HTMLparser.c: fixed the 2 stupid bugs affecting htmlReadDoc() and
76118 - htmlReadIO() this should fix #340322
76119 -
76120 -Tue Oct 17 21:39:23 CEST 2006 Daniel Veillard <daniel@veillard.com>
76121 -
76122 - * xpath.c: applied patch from Olaf Walkowiak which should fix #334104
76123 -
76124 -Tue Oct 17 18:12:34 CEST 2006 Daniel Veillard <daniel@veillard.com>
76125 -
76126 - * HTMLparser.c: fixing HTML minimized attribute values to be generated
76127 - internally if not present, fixes bug #332124
76128 - * result/HTML/doc2.htm.sax result/HTML/doc3.htm.sax
76129 - result/HTML/wired.html.sax: this affects the SAX event stream for
76130 - a few test cases
76131 -
76132 -Tue Oct 17 17:56:31 CEST 2006 Daniel Veillard <daniel@veillard.com>
76133 -
76134 - * HTMLparser.c: fixing HTML entities in attributes parsing bug #362552
76135 - * result/HTML/entities2.html* test/HTML/entities2.html: added to
76136 - the regression suite
76137 -
76138 -Tue Oct 17 01:21:37 CEST 2006 Daniel Veillard <daniel@veillard.com>
76139 -
76140 - * xmllint.c: started to switch xmllint to use xmlSaveDoc to test
76141 - #342556
76142 - * xmlsave.c: fixed #342556 easy and a whole set of problems with
76143 - encodings, BOM and xmlSaveDoc()
76144 -
76145 -Mon Oct 16 15:14:53 CEST 2006 Daniel Veillard <daniel@veillard.com>
76146 -
76147 - * HTMLparser.c: fix #348252 if the document clains to be in a
76148 - different encoding in the meta tag and it's obviously wrong,
76149 - don't screw up the end of the content.
76150 -
76151 -Mon Oct 16 11:32:09 CEST 2006 Daniel Veillard <daniel@veillard.com>
76152 -
76153 - * HTMLparser.c: fix a chunking and script bug #347708
76154 -
76155 -Mon Oct 16 09:51:05 CEST 2006 Daniel Veillard <daniel@veillard.com>
76156 -
76157 - * HTMLparser.c: remove a warning
76158 - * encoding.c: check with uppercase for AIX iconv() should fix #352644
76159 - * doc/examples/Makefile.am: partially handle one bug report
76160 -
76161 -Sun Oct 15 22:31:42 CEST 2006 Daniel Veillard <daniel@veillard.com>
76162 -
76163 - * parser.c: fix the patch for unreproductable #343000 but
76164 - also fix a line/column keeping error
76165 - * result/errors/attr1.xml.err result/errors/attr2.xml.err
76166 - result/errors/name.xml.err result/errors/name2.xml.err
76167 - result/schemas/anyAttr-processContents-err1_0_0.err
76168 - result/schemas/bug312957_1_0.err: affected lines in error output
76169 - of the regression tests
76170 -
76171 -Sat Oct 14 10:46:46 CEST 2006 Daniel Veillard <daniel@veillard.com>
76172 -
76173 - * tree.c: fixing bug #344390 with xmlReconciliateNs
76174 -
76175 -Sat Oct 14 00:31:49 CEST 2006 Daniel Veillard <daniel@veillard.com>
76176 -
76177 - * xmllint.c: added --html --memory to test htmlReadMemory to
76178 - test #321632
76179 - * HTMLparser.c: added various initialization calls which may help
76180 - #321632 but not conclusive
76181 - * testapi.c tree.c include/libxml/tree.h: fixed compilation with
76182 - --with-minimum --with-sax1 and --with-minimum --with-schemas
76183 - fixing #326442
76184 -
76185 -Fri Oct 13 18:30:55 CEST 2006 Daniel Veillard <daniel@veillard.com>
76186 -
76187 - * relaxng.c: fix a Relax-NG bug related to element content processing,
76188 - fixes bug #302836
76189 - * test/relaxng/302836.rng test/relaxng/302836_0.xml
76190 - result/relaxng/302836*: added to regression tests
76191 -
76192 -Fri Oct 13 14:42:44 CEST 2006 Daniel Veillard <daniel@veillard.com>
76193 -
76194 - * parser.c: fix a problem in xmlSplitQName resulting in bug #334669
76195 -
76196 -Fri Oct 13 12:27:22 CEST 2006 Daniel Veillard <daniel@veillard.com>
76197 -
76198 - * parser.c: fixed xmlIOParseDTD handling of @input in error case,
76199 - Should fix #335085
76200 - * testapi.c: reset the http_proxy env variable to not waste time
76201 - on regression tests
76202 -
76203 -Thu Oct 12 23:07:43 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76204 -
76205 - * xmlIO.c: fix Windows compile - missing xmlWrapOpen.
76206 -
76207 -Thu Oct 12 18:21:18 CEST 2006 Daniel Veillard <daniel@veillard.com>
76208 -
76209 - * parser.c: fixed the heuristic used when trying to detect mixed-content
76210 - elememts if the parser wants to treat ignorable whitespaces
76211 - in a non-standard way, should fix bug #300263
76212 -
76213 -Thu Oct 12 14:52:38 CEST 2006 Daniel Veillard <daniel@veillard.com>
76214 -
76215 - * parser.c: fix a first arg error in SAX callback pointed out by
76216 - Mike Hommey, and another one still hanging around. Should fix #342737
76217 -
76218 -Wed Oct 11 23:11:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76219 -
76220 - * include/libxml/xmlversion.h.in: fix comment on versions
76221 - * xmlmemory.c: do not spend too much time digging in dumped memory
76222 -
76223 -Wed Oct 11 18:40:00 CEST 2006 Daniel Veillard <daniel@veillard.com>
76224 -
76225 - * valid.c: fixed a weird error where validity context would not
76226 - show up if warnings were disabled pointed out by Bob Stayton
76227 - * xmlIO.c doc/generator.py: cleanup and fix to regenerate the docs
76228 - * doc//* testapi.c: rebuilt the docs
76229 -
76230 -Wed Oct 11 14:32:00 CEST 2006 Daniel Veillard <daniel@veillard.com>
76231 -
76232 - * libxml-2.0.pc.in: applied patch from Mikhail Zabaluev to separate
76233 - library flags for shared and static builds, fixes #344594. If this
76234 - bites you, use xml2-config.
76235 -
76236 -Wed Oct 11 11:27:37 CEST 2006 Daniel Veillard <daniel@veillard.com>
76237 -
76238 - * python/Makefile.am: remove the build path recorded in the python
76239 - shared module as Peter Breitenlohner pointed out, should fix #346022
76240 -
76241 -Wed Oct 11 11:14:51 CEST 2006 Daniel Veillard <daniel@veillard.com>
76242 -
76243 - * xmlIO.c: applied patch from Mikhail Zabaluev fixing the conditions
76244 - of unescaping from URL to filepath, should fix #344588.
76245 -
76246 -Wed Oct 11 10:24:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76247 -
76248 - * configure.in xstc/Makefile.am: applied patch from Peter Breitenlohner
76249 - for wget detection and fix of a Python path problem, should fix
76250 - #340993
76251 -
76252 -Tue Oct 10 22:02:29 CEST 2006 Daniel Veillard <daniel@veillard.com>
76253 -
76254 - * include/libxml/entities.h entities.c SAX2.c parser.c: trying to
76255 - fix entities behaviour when using SAX, had to extend entities
76256 - content and hack on the entities processing code, but that should
76257 - fix the long standing bug #159219
76258 -
76259 -Tue Oct 10 14:36:18 CEST 2006 Daniel Veillard <daniel@veillard.com>
76260 -
76261 - * uri.c include/libxml/uri.h: add a new function xmlPathToUri()
76262 - to provide a clean conversion when setting up a base
76263 - * SAX2.c tree.c: use said function when setting up doc->URL
76264 - or using the xmlSetBase function. Should fix #346261
76265 -
76266 -Tue Oct 10 11:05:59 CEST 2006 Daniel Veillard <daniel@veillard.com>
76267 -
76268 - * xmlIO.c: applied a portability patch from Emelyanov Alexey
76269 -
76270 -Tue Oct 10 10:52:01 CEST 2006 Daniel Veillard <daniel@veillard.com>
76271 -
76272 - * parser.c: applied and slightly modified a patch from Michael Day to
76273 - keep _private in the parser context when parsing external entities
76274 -
76275 -Tue Oct 10 10:33:43 CEST 2006 Daniel Veillard <daniel@veillard.com>
76276 -
76277 - * python/libxml.py python/types.c: applied patch from Ross Reedstrom,
76278 - Brian West and Stefan Anca to add XPointer support to the Python bindings
76279 -
76280 -Fri Sep 29 11:13:59 CEST 2006 Daniel Veillard <daniel@veillard.com>
76281 -
76282 - * xmlsave.c: fixed a comment
76283 - * xinclude.c include/libxml/xinclude.h: applied a patch from Michael Day
76284 - to add a new function providing the _private field for the generated
76285 - parser contexts xmlXIncludeProcessFlagsData()
76286 -
76287 -Thu Sep 21 10:36:11 CEST 2006 Daniel Veillard <daniel@veillard.com>
76288 -
76289 - * xmlIO.c: applied patch from Michael Day doing some refactoring
76290 - for the catalog entity loaders.
76291 -
76292 -Thu Sep 21 08:53:06 CEST 2006 Daniel Veillard <daniel@veillard.com>
76293 -
76294 - * HTMLparser.c include/libxml/HTMLparser.h: exports htmlNewParserCtxt()
76295 - as Michael Day pointed out this is needed to use htmlCtxtRead*()
76296 -
76297 -Tue Sep 19 14:42:59 CEST 2006 Daniel Veillard <daniel@veillard.com>
76298 -
76299 - * parser.c: applied patch from Ben Darnell on #321545, I could not
76300 - reproduce the problem but 1/ this is safe 2/ it's better to be safe.
76301 -
76302 -Sat Sep 16 16:02:23 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76303 -
76304 - * tree.c: xmlTextConcat works with comments and PI nodes (bug #355962).
76305 - * parser.c: fix resulting tree corruption when using XML namespace
76306 - with existing doc in xmlParseBalancedChunkMemoryRecover.
76307 -
76308 -Fri Sep 1 11:52:55 CEST 2006 Daniel Veillard <daniel@veillard.com>
76309 -
76310 - * xmlIO.c: another patch from Emelyanov Alexey to clean up a few things
76311 - in the previous patch.
76312 -
76313 -Wed Aug 30 15:10:09 CEST 2006 Daniel Veillard <daniel@veillard.com>
76314 -
76315 - * xmlIO.c: applied patch from Roland Schwingel to fix the problem
76316 - with file names in UTF-8 on Windows, and compat on older win9x
76317 - versions.
76318 -
76319 -Tue Aug 22 16:51:22 CEST 2006 Daniel Veillard <daniel@veillard.com>
76320 -
76321 - * valid.c: fixed a bug #203125 in Red hat bugzilla, crashing PHP4
76322 - on validation errors, the heuristic to guess is a vctxt user
76323 - pointer is the parsing context was insufficient.
76324 -
76325 -Mon Aug 21 10:40:10 CEST 2006 Daniel Veillard <daniel@veillard.com>
76326 -
76327 - * doc/xmlcatalog.1 doc/xmlcatalog_man.xml doc/xmllint.1 doc/xmllint.xml:
76328 - applied patch to man pages from Daniel Leidert and regenerated
76329 -
76330 -Thu Aug 17 00:48:31 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76331 -
76332 - * xmlwriter.c: Add a document to the xmlwriter structure and
76333 - pass document when writing attribute content for encoding support.
76334 -
76335 -Wed Aug 16 01:15:12 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76336 -
76337 - * HTMLtree.c xmlsave.c: Add linefeeds to error messages allowing
76338 - for consistent handling.
76339 -
76340 -Tue Aug 15 15:02:18 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76341 -
76342 - * xpath.c: Applied the proposed fix for the documentation
76343 - of xmlXPathCastToString(); see bug #346202.
76344 -
76345 -Tue Aug 15 14:49:18 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76346 -
76347 - * xmlschemas.c: While investigating bug #350247, I noticed
76348 - that xmlSchemaIDCMatcher structs are massively recreated
76349 - although only a maximum of 3 structs is used at the same
76350 - time; added a cache for those structures to the
76351 - validation context.
76352 -
76353 -Sat Aug 12 16:12:53 CEST 2006 Daniel Veillard <daniel@veillard.com>
76354 -
76355 - * xmlschemas.c: applied patch from Marton Illes to fix an allocation
76356 - bug in xmlSchemaXPathEvaluate should close #351032
76357 -
76358 -Mon Aug 7 13:08:46 CEST 2006 Daniel Veillard <daniel@veillard.com>
76359 -
76360 - * xmlschemas.c: applied patch from Bertrand Fritsch to fix a bug in
76361 - xmlSchemaClearValidCtxt
76362 -
76363 -Fri Aug 4 14:50:41 CEST 2006 Daniel Veillard <daniel@veillard.com>
76364 -
76365 - * python/generator.py: fixed the conversion of long parameters
76366 -
76367 -Thu Jul 13 15:03:11 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76368 -
76369 - * xmlsave.c: Removed the automatic generation of CDATA sections
76370 - for the content of the "script" and "style" elements when
76371 - serializing XHTML. The issue was reported by Vincent Lefevre,
76372 - bug #345147.
76373 - * result/xhtml1 result/noent/xhtml1: Adjusted regression test
76374 - results due to the serialization change described above.
76375 -
76376 -Thu Jul 13 08:32:21 CEST 2006 Daniel Veillard <daniel@veillard.com>
76377 -
76378 - * configure.in parser.c xmllint.c include/libxml/parser.h
76379 - include/libxml/xmlversion.h.in: applied patch from Andrew W. Nosenko
76380 - to expose if zlib support was compiled in, in the header, in the
76381 - feature API and in the xmllint --version output.
76382 -
76383 -Thu Jul 13 08:24:14 CEST 2006 Daniel Veillard <daniel@veillard.com>
76384 -
76385 - * SAX2.c: refactor to use normal warnings for entities problem
76386 - and not straight SAX callbacks.
76387 -
76388 -Wed Jul 12 17:13:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76389 -
76390 - * xmlschemas.c: Fixed bug #347316, reported by David Belius:
76391 - The simple type, which was the content type definition
76392 - of a complex type, which in turn was the base type of a
76393 - extending complex type, was missed to be set on this
76394 - extending complex type in the derivation machinery.
76395 -
76396 -Mon Jul 3 13:36:43 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76397 -
76398 - * xpath.c: Changed xmlXPathCollectAndTest() to use
76399 - xmlXPathNodeSetAddNs() when adding a ns-node in case of
76400 - NODE_TEST_TYPE (the ns-node was previously added plainly
76401 - to the list). Since for NODE_TEST_ALL and NODE_TEST_NAME
76402 - this specialized ns-addition function was already used,
76403 - I assume it was missed to be used with NODE_TEST_TYPE.
76404 -
76405 -Mon Jul 3 10:57:33 CEST 2006 Daniel Veillard <daniel@veillard.com>
76406 -
76407 - * HTMLparser.c: applied const'ification of strings patch from
76408 - Matthias Clasen
76409 -
76410 -Thu Jun 29 13:51:12 CEST 2006 Daniel Veillard <daniel@veillard.com>
76411 -
76412 - * threads.c: patch from Andrew W. Nosenko, xmlFreeRMutex forgot to
76413 - destroy the condition associated to the mutex.
76414 -
76415 -Thu Jun 29 12:48:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76416 -
76417 - * xpath.c: Fixed a double-free in xmlXPathCompOpEvalToBoolean(),
76418 - revealed by a Libxslt regression test.
76419 -
76420 -Thu Jun 29 12:28:07 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76421 -
76422 - * xpath.c: Enhanced xmlXPathCompOpEvalToBoolean() to be also
76423 - usable outside predicate evaluation; the intention is to
76424 - use it via xmlXPathCompiledEvalToBoolean() for XSLT tests,
76425 - like in <xsl:if test="/foo">.
76426 -
76427 -Wed Jun 28 19:11:16 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76428 -
76429 - * xpath.c: Fix a memory leak which occurred when using
76430 - xmlXPathCompiledEvalToBoolean().
76431 -
76432 -Mon Jun 26 17:24:28 UTC 2006 William Brack <wbrack@mmm.com.hk>
76433 -
76434 - * python/libxml.c, python/libxml.py, python/tests/compareNodes.py,
76435 - python/tests/Makefile.am:
76436 - Added code submitted by Andreas Pakulat to provide node
76437 - equality, inequality and hash functions, plus a single
76438 - test program to check the functions (bugs 345779 + 345961).
76439 -
76440 -Mon Jun 26 18:38:51 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76441 -
76442 - * xpath.c: Added xmlXPathCompiledEvalToBoolean() to the API and
76443 - adjusted/added xmlXPathRunEval(), xmlXPathRunStreamEval(),
76444 - xmlXPathCompOpEvalToBoolean(), xmlXPathNodeCollectAndTest()
76445 - to be aware of a boolean result request. The new function
76446 - is now used to evaluate predicates.
76447 -
76448 -Mon Jun 26 16:22:50 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76449 -
76450 - * xpath.c: Fixed an bug in xmlXPathCompExprAdd(): the newly
76451 - introduced field @rewriteType on xmlXPathStepOp was not
76452 - initialized to zero here; this could lead to the activation
76453 - of the axis rewrite code in xmlXPathNodeCollectAndTest() when
76454 - @rewriteType is randomly set to the value 1. A test
76455 - (hardcoding the initial value to 1) revealed that the
76456 - resulting incorrect behaviour is similar to the behaviour
76457 - as described by Arnold Hendriks on the mailing list; so I
76458 - hope that will fix the issue.
76459 -
76460 -Fri Jun 23 18:26:08 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76461 -
76462 - * xpath.c: Fixed an error in xmlXPathEvalExpr(), which
76463 - was introduced with the addition of the d-o-s rewrite
76464 - and made xpath.c unable to compile if XPATH_STREAMING
76465 - was not defined (reported by Kupriyanov Anatolij -
76466 - #345752). Fixed the check for d-o-s rewrite
76467 - to work on the correct XPath string, which is ctxt->base
76468 - and not comp->expr in this case.
76469 -
76470 -Mon Jun 19 12:23:41 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76471 -
76472 - * xpath.c: Added optimization for positional predicates
76473 - (only short-hand form "[n]"), which have a preceding
76474 - predicate: "/foo[descendant::bar][3]".
76475 -
76476 -Sun Jun 18 20:59:02 EDT 2006 Daniel Veillard <daniel@veillard.com>
76477 -
76478 - * parser.c: try to fix the crash raised by the parser in
76479 - recover mode as pointed by Ryan Phillips
76480 -
76481 -Sun Jun 18 18:44:56 EDT 2006 Daniel Veillard <daniel@veillard.com>
76482 -
76483 - * python/types.c: patch from Nic Ferrier to provide a better type
76484 - mapping from XPath to python
76485 -
76486 -Sun Jun 18 18:35:50 EDT 2006 Daniel Veillard <daniel@veillard.com>
76487 -
76488 - * runtest.c: applied patch from Boz for VMS and reporting
76489 - Schemas errors.
76490 -
76491 -Sun Jun 18 18:22:25 EDT 2006 Daniel Veillard <daniel@veillard.com>
76492 -
76493 - * testapi.c: applied patch from Felipe Contreras when compiling
76494 - with --with-minimum
76495 -
76496 -Fri Jun 16 21:37:44 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76497 -
76498 - * tree.c include/libxml/tree.h: Fixed a bug in
76499 - xmlDOMWrapAdoptNode(); the tree traversal stopped if the
76500 - very first given node had an attribute node :-( This was due
76501 - to a missed check in the traversal mechanism.
76502 - Expanded the xmlDOMWrapCtxt: it now holds the namespace map
76503 - used in xmlDOMWrapAdoptNode() and xmlDOMWrapCloneNode() for
76504 - reusal; so the map-items don't need to be created for every
76505 - cloning/adoption. Added a callback function to it for
76506 - retrieval of xmlNsPtr to be set on node->ns; this is needed
76507 - for my custom handling of ns-references in my DOM wrapper.
76508 - Substituted code which created the XML namespace decl on
76509 - the doc for a call to xmlTreeEnsureXMLDecl(). Removed
76510 - those nasty "warnings" from the docs of the clone/adopt
76511 - functions; they work fine on my side.
76512 -
76513 -Mon Jun 12 13:23:11 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76514 -
76515 - * result/pattern/namespaces: Adjusted the result of a
76516 - regression test, since the fix of xmlGetNodePath() revealed a
76517 - bug in this test result.
76518 -
76519 -Mon Jun 12 13:06:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76520 -
76521 - * tree.c: Got rid of a compiler warning in xmlGetNodePath().
76522 -
76523 -Mon Jun 12 12:54:25 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76524 -
76525 - * tree.c: Fixed xmlGetNodePath() to generate the node test "*"
76526 - for elements in the default namespace, rather than generating
76527 - an unprefixed named node test and losing the namespace
76528 - information.
76529 -
76530 -Fri Jun 9 21:45:02 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76531 -
76532 - * include/libxml/parser.h: Clarified in the docs that the tree
76533 - must not be tried to be modified if using the parser flag
76534 - XML_PARSE_COMPACT as suggested by Stefan Behnel
76535 - (#344390).
76536 -
76537 -Tue Jun 6 17:50:43 CEST 2006 Daniel Veillard <daniel@veillard.com>
76538 -
76539 - * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.26
76540 -
76541 -Tue Jun 6 17:25:23 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76542 -
76543 - * xpath.c: Fixed self-invented a segfault in xmlXPathCtxtCompile(),
76544 - when the expression was not valid and @comp was NULL and I
76545 - tried to do the d-o-s rewrite.
76546 -
76547 -Tue Jun 6 15:19:57 CEST 2006 Daniel Veillard <daniel@veillard.com>
76548 -
76549 - * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.25
76550 -
76551 -Tue Jun 6 11:28:15 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76552 -
76553 - * xpath.c: Enabled the compound traversal again; I added a
76554 - check to use this only if the have an expression starting
76555 - with the document node; so in the case of "//foo", we
76556 - already know at compilation-time, that there will be only
76557 - 1 initial context node. Added the rewrite also to
76558 - xmlXPathEvalExpr().
76559 -
76560 -Tue Jun 6 10:23:10 CEST 2006 Daniel Veillard <daniel@veillard.com>
76561 -
76562 - * xinclude.c: fix bug #343968, include='text' can't lead to a
76563 - recursion.
76564 -
76565 -Fri Jun 2 22:47:08 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76566 -
76567 - * xpath.c: Disabled the compound traversal for the release;
76568 - I need first to assure that this is done only if we have
76569 - 1 initial node.
76570 -
76571 -Wed May 31 13:53:41 PST 2006 Aleksey Sanin <aleksey@aleksey.com>
76572 -
76573 - * xpath.c: fixed memory leak in xpath error reporting
76574 -
76575 -Wed May 31 15:30:16 CEST 2006 Daniel Veillard <daniel@veillard.com>
76576 -
76577 - * libxml.h triodef.h: applied patch from Olli Savia for LynxOS
76578 -
76579 -Wed May 31 14:33:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76580 -
76581 - * xpath.c include/libxml/xpath.h runsuite.c:
76582 - Changed the name of the recently added public function
76583 - xmlXPathContextSetObjectCache() to
76584 - xmlXPathContextSetCache(); so a more generic one, in
76585 - case we decide to cache more things than only XPath
76586 - objects.
76587 -
76588 -Tue May 30 21:36:16 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76589 -
76590 - * xpath.c: Optimized xmlXPathNodeCollectAndTest() and
76591 - xmlXPathNodeCollectAndTestNth() to evaluate a compound
76592 - traversal of 2 axes when we have a "//foo" expression.
76593 - This is done with a rewrite of the XPath AST in
76594 - xmlXPathRewriteDOSExpression(); I added an additional field
76595 - to xmlXPathStepOp for this (but the field's name should be
76596 - changed). The mechanism: the embracing descendant-or-self
76597 - axis traversal (also optimized to return only nodes which
76598 - can hold elements), will produce context nodes for the
76599 - inner traversal of the child axis. This way we avoid a full
76600 - node-collecting traversal of the descendant-or-self axis.
76601 - Some tests indicate that this can reduce execution time of
76602 - "//foo" to 50%. Together with the XPath object cache this
76603 - all significantly speeds up libxslt.
76604 -
76605 -Tue May 30 11:38:47 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76606 -
76607 - * xmlschemas.c: A warning will now be reported in the value of
76608 - the XSD attribute 'schemaLocation' does not consist of tuples
76609 - (namespace-name, document-URI). A warning will be reported
76610 - if a schema document could not be found at the specified
76611 - location (via 'schemaLocation' or
76612 - 'noNamespaceSchemaLocation').
76613 - * include/libxml/xmlerror.h: Added XML_SCHEMAV_MISC to
76614 - xmlParserErrors.
76615 -
76616 -Tue May 30 11:21:34 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76617 -
76618 - * xpath.c: Enhanced xmlXPathNodeCollectAndTest() to avoid
76619 - recreation (if possible) of the node-set which is used to
76620 - collect the nodes in the current axis for the current context
76621 - node. Especially for "//foo" this will decrease dramatically
76622 - the number of created node-sets, since for each node in the
76623 - result node-set of the evaluation of descendant-or-self::node()
76624 - a new temporary node-set was created. Added node iterator
76625 - xmlXPathNextChildElement() as a tiny optimization for
76626 - child::foo.
76627 -
76628 -Mon May 29 18:06:17 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76629 -
76630 - * xpath.c include/libxml/xpath.h: Added an XPath object cache.
76631 - It sits on an xmlXPathContext and need to be explicitly
76632 - activated (or deactivated again) with
76633 - xmlXPathContextSetObjectCache(). The cache consists of 5
76634 - lists for node-set, string, number, boolean and misc XPath
76635 - objects. Internally the xpath.c module will use object-
76636 - deposition and -acquisition functions which will try to reuse
76637 - as many XPath objects as possible, and fallback to normal
76638 - free/create behaviour if no cache is available or if the cache
76639 - is full.
76640 - * runsuite.c: Adjusted to deactivate the cache for XML Schema
76641 - tests if a cache-creation is turned on by default for the whole
76642 - library, e.g. for testing purposes of the cache. It is
76643 - deactivated here in order to avoid confusion of the memory leak
76644 - detection in runsuite.c.
76645 -
76646 -Wed May 24 10:54:25 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76647 -
76648 - * xpath.c: Removed a memcpy if xmlXPathNodeSetMerge(); it
76649 - seems we really need to walk the whole list, since those
76650 - nasty namespace nodes need to be added with
76651 - xmlXPathNodeSetDupNs(); thus a pure memcpy is not possible.
76652 - A flag on the node-set indicating if namespace nodes are in
76653 - the set would help here; this is the 3rd flag which would
76654 - be useful with node-sets. The current flags I have in mind:
76655 - 1) Is a node-set already sorted?
76656 - This would allow for rebust and optimizable sorting
76657 - behaviour.
76658 - 2) Of what type are the nodes in the set (or of mixed type)?
76659 - This would allow for faster merging of node-sets.
76660 - 3) Are namespace nodes in the set?
76661 - This would allow to skip all the namespace node specific
76662 - special handling. Faster node-set merging if the first
76663 - set is empty; just memcpy the set.
76664 -
76665 -Mon May 22 17:14:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76666 -
76667 - * xpath.c: Optimization of count(): eliminated sorting
76668 - (see bug #165547). Optimization of XPATH_OP_FILTER if the
76669 - predicate is a [1] (disable with XP_OPTIMIZED_FILTER_FIRST if
76670 - it produces trouble). Tiny opt in xmlXPathNodeSetMerge().
76671 -
76672 -Mon May 22 13:33:12 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76673 -
76674 - * tree.c: Revert behavior change in xmlSetProp to handle attributes
76675 - with colons in name and no namespace.
76676 -
76677 -Fri May 19 21:56:43 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76678 -
76679 - * xpath.c: Substituted all remaining calls to xmlXPathCmpNodes()
76680 - for xmlXPathCmpNodesExt(). Tiny further enhancement of
76681 - xmlXPathCmpNodesExt(). Added additional checks in various code
76682 - parts to avoid calling sorting or merging functions if the
76683 - node-set(s) don't need them; i.e., if they are empty or contain
76684 - just one node.
76685 -
76686 -Fri May 19 13:16:58 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76687 -
76688 - * xpath.c: Optimized the comparison for non-element nodes
76689 - in xmlXPathCmpNodesExt(); the comparison is used for sorting
76690 - of node-sets. This enhancement is related to bug #165547.
76691 - There are other places where the old comparison function
76692 - xmlXPathCmpNodes() is still called, but I currently don't
76693 - know exactly what those calls are for; thus if they can be
76694 - substituted (if it makes sense) for the new function.
76695 -
76696 -Tue May 16 16:55:13 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76697 -
76698 - * xpath.c: Applied patch from Rob Richards, fixing a potential
76699 - memory leak in xmlXPathTryStreamCompile(), when a list of
76700 - namespaces was assigned to the XPath compilation context;
76701 - here a new namespace list was created and passed to
76702 - xmlPatterncompile(); but this list was not freed afterwards.
76703 - Additionally we avoid now in xmlXPathTryStreamCompile() to
76704 - compile the expression, if it has a colon - indicating
76705 - prefixed name tests - and no namespace list was given. The
76706 - streaming XPath mechanism needs a namespace list at
76707 - compilation time (unlike normal XPath, where we can bind
76708 - namespace names to prefixes at execution time).
76709 - * pattern.c: Enhanced to use a string dict for local-names,
76710 - ns-prefixes and namespace-names.
76711 - Fixed xmlStreamPushInternal() not to use string-pointer
76712 - comparison if a dict is available; this won't work, since
76713 - one does not know it the given strings originate from the
76714 - same dict - and they normally don't do, since e.g.
76715 - namespaces are hold on xmlNs->href. I think this would be
76716 - worth an investigation: if we can add a @doc field to xmlNs
76717 - and put the @href in to a additionan namespace dict hold
76718 - in xmlDoc. Daniel will surely not like this idea :-) But
76719 - evaluation of tons of elements/attributes in namespaces
76720 - with xmlStrEqual() isn't the way we should go forever.
76721 -
76722 -Thu May 11 18:03:49 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76723 -
76724 - * xmlschemas.c: Fixed bug #341337, reported by David Grohmann.
76725 - The code expected a node (xmlNodePtr) on the info for a
76726 - non-existent default attribute, which clearly cannot be
76727 - expected, since the attribute does not exist. I can only
76728 - guess that this sneaked trying to eliminate the query
76729 - for the owner-element, which is unavoidable actually.
76730 - Note that creation of default attributes won't have an
76731 - effect if validating via SAX/XMLReader; i.e., the processor
76732 - won't fire additional start-attribute events (I'm not even
76733 - sure if Libxml2 has such a SAX-event; I think it hands them
76734 - all over in the start-element event).
76735 -
76736 -Tue May 9 21:47:58 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76737 -
76738 - * xmlschemas.c: Fixed bug #341150, reported by Michael Romer.
76739 - In xmlSchemaBuildContentModelForSubstGroup(),
76740 - xmlAutomataNewOnceTrans2() was incorrectly used instead of
76741 - xmlAutomataNewTransition2() to mimic a xs:choice for
76742 - substitution-groups.
76743 - * test/schemas/subst-group-1_1.xsd
76744 - test/schemas/subst-group-1_0.xml
76745 - result/schemas/subst-group-1_0_1
76746 - result/schemas/subst-group-1_0_1.err: Added regression test
76747 - supplied by Michael Romer for bug #341150.
76748 -
76749 -Sat May 6 11:05:24 HKT 2006 William M. Brack <wbrack@mmm.com.hk>
76750 -
76751 - * relaxng.c: Fixed compilation error with patch supplied by
76752 - Graham Bennett.
76753 -
76754 -Thu May 4 19:14:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76755 -
76756 - * xmlschemas.c: We'll raise an internal error and stop
76757 - validation now when an entity is found in the instance
76758 - document, since we don't support automatic entity
76759 - substitution by the schema processor (yet?) -
76760 - see bug #340316, reported by Nick Wellnhofer.
76761 -
76762 -Wed May 3 15:16:00 CEST 2006 Daniel Veillard <daniel@veillard.com>
76763 -
76764 - * configure.in: applied another Python detection patch from Joseph Sacco
76765 - * libxml.spec.in: cleanup the changelog section, asciifies the spec file
76766 - too
76767 -
76768 -Tue May 2 22:34:54 CEST 2006 Daniel Veillard <daniel@veillard.com>
76769 -
76770 - * xmlIO.c: fix a mix of code and declarations showing up on Windows
76771 - patch from Kjartan Maraas, fixing #340404
76772 -
76773 -Tue May 2 14:24:40 CEST 2006 Daniel Veillard <daniel@veillard.com>
76774 -
76775 - * encoding.c: fixing bug #340398 xmlCharEncOutFunc writing to
76776 - input buffer
76777 -
76778 -Fri Apr 28 18:29:22 CEST 2006 Daniel Veillard <daniel@veillard.com>
76779 -
76780 - * NEWS configure.in doc//*: preparing 2.6.24 release, fixed Python
76781 - paths at the last moment
76782 - * relaxng.c testapi.c tree.c: fix some comments
76783 -
76784 -Thu Apr 27 10:15:45 CEST 2006 Daniel Veillard <daniel@veillard.com>
76785 -
76786 - * xmlIO.c: applied patch from Roland Schwingel to allow UTF-8
76787 - file paths on Windows
76788 -
76789 -Thu Apr 27 10:10:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76790 -
76791 - * xmlwriter.c: patch from Jason Viers for line breaks after EndPI
76792 -
76793 -Tue Apr 25 22:22:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76794 -
76795 - * tree.c: fix compilation without tree
76796 -
76797 -Tue Apr 25 18:17:37 CEST 2006 Daniel Veillard <daniel@veillard.com>
76798 -
76799 - * xmllint.c: applied patch from Gary Coady to really make sure
76800 - xmllint --nonet would not reach the network, should fix #337483.
76801 -
76802 -Tue Apr 25 14:52:15 CEST 2006 Daniel Veillard <daniel@veillard.com>
76803 -
76804 - * configure.in: applied patch from Joseph Sacco changing slightly
76805 - the python detection scheme should fix bug #338526
76806 -
76807 -Mon Apr 24 10:50:19 CEST 2006 Daniel Veillard <daniel@veillard.com>
76808 -
76809 - * parser.c: fix the error message for invalid code point in content
76810 - c.f. bug #339311
76811 -
76812 -Wed Apr 19 13:16:23 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76813 -
76814 - * xmlschemas.c test/schemas/restriction-enum-1*
76815 - result/schemas/restriction-enum-1*: Fixed incorrect
76816 - validation of restricted enumerations. Added related
76817 - regression tests.
76818 -
76819 -Thu Apr 13 09:47:25 CEST 2006 Daniel Veillard <daniel@veillard.com>
76820 -
76821 - * xmlschemas.c: fixing a deallocation problem in xmlSchemaAddSchemaDoc()
76822 - in case of errors, should fix bug #338303
76823 -
76824 -Thu Apr 13 09:31:45 CEST 2006 Daniel Veillard <daniel@veillard.com>
76825 -
76826 - * relaxng.c: fixing a deallocation problem in xmlRelaxNGParse()
76827 - in case of errors, should fix bug #338306
76828 -
76829 -Thu Apr 6 10:22:17 CEST 2006 Daniel Veillard <daniel@veillard.com>
76830 -
76831 - * doc/xmlcatalog.1 doc/xmlcatalog_man.xml doc/xmllint.1 doc/xmllint.xml:
76832 - applied man page improvements from Daniel Leidert
76833 -
76834 -Mon Mar 27 11:44:07 CEST 2006 Daniel Veillard <daniel@veillard.com>
76835 -
76836 - * xmlschemas.c: removed unused code or variables, from Stefan Kost
76837 - fixing #336163 and #336164
76838 -
76839 -Mon Mar 27 11:38:21 CEST 2006 Daniel Veillard <daniel@veillard.com>
76840 -
76841 - * xmlschemas.c: applied patch from Stefan Kost fixing #336160
76842 -
76843 -Mon Mar 27 11:23:39 CEST 2006 Daniel Veillard <daniel@veillard.com>
76844 -
76845 - * chvalid.c genChRanges.py genUnicode.py xmlunicode.c
76846 - include/libxml/chvalid.h include/libxml/xmlunicode.h: applied
76847 - patches from Aivars Kalvans to make unicode tables const, fixes
76848 - bug #336096, this also updates to Unicode 4.01 final with a couple
76849 - of character ranges fixes.
76850 -
76851 -Mon Mar 27 00:51:40 CEST 2006 Daniel Veillard <daniel@veillard.com>
76852 -
76853 - * chvalid.c genChRanges.py include/libxml/chvalid.h: fixed bug
76854 - #335603 and resync'ed genChRanges.py to the expected output.
76855 -
76856 -Wed Mar 22 00:14:34 CET 2006 Daniel Veillard <daniel@veillard.com>
76857 -
76858 - * xmlregexp.c: applied patch from Youri Golovanov fixing bug
76859 - #316338 and adding a couple of optimizations in the regexp
76860 - compilation engine.
76861 - * test/regexp/bug316338 result/regexp/bug316338: added regression
76862 - tests based on the examples provided in the bug report.
76863 -
76864 -Fri Mar 10 08:40:55 EST 2006 Daniel Veillard <daniel@veillard.com>
76865 -
76866 - * c14n.c encoding.c xmlschemas.c xpath.c xpointer.c: fix a few
76867 - warning raised by gcc-4.1 and latest changes
76868 -
76869 -Fri Mar 10 01:34:42 CET 2006 Daniel Veillard <daniel@veillard.com>
76870 -
76871 - * runtest.c schematron.c testAutomata.c tree.c valid.c xinclude.c
76872 - xmlcatalog.c xmlreader.c xmlregexp.c xpath.c: end of first
76873 - pass on coverity reports.
76874 -
76875 -Thu Mar 9 19:36:14 CET 2006 Daniel Veillard <daniel@veillard.com>
76876 -
76877 - * relaxng.c xmlschemas.c xmlschemastypes.c: more cleanups based
76878 - on coverity reports.
76879 -
76880 -Thu Mar 9 17:47:40 CET 2006 Daniel Veillard <daniel@veillard.com>
76881 -
76882 - * SAX2.c catalog.c encoding.c entities.c example/gjobread.c
76883 - python/libxml.c: more cleanups based on coverity reports.
76884 -
76885 -Thu Mar 9 15:12:19 CET 2006 Daniel Veillard <daniel@veillard.com>
76886 -
76887 - * HTMLparser.c parser.c parserInternals.c pattern.c uri.c: a bunch
76888 - of small cleanups based on coverity reports.
76889 -
76890 -Thu Mar 9 09:42:10 CET 2006 Daniel Veillard <daniel@veillard.com>
76891 -
76892 - * win32/Makefile.bcb: added schematron as pointed out by Eric Zurcher
76893 -
76894 -Tue Mar 7 09:50:09 CET 2006 Daniel Veillard <daniel@veillard.com>
76895 -
76896 - * xml2-config.in: fix Red Hat bug #184170
76897 -
76898 -Mon Mar 6 14:21:08 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76899 -
76900 - * tree.c: Simplified usage of the internal xmlNsMap. Added a
76901 - "strict" lookup for namespaces based on a prefix. Fixed a
76902 - namespace processing issue in the clone-node function, which
76903 - occurred if a @ctxt argument was given.
76904 -
76905 -Fri Mar 3 17:44:10 CET 2006 Rob Richards <rrichards@ctindustries.net>
76906 -
76907 - * valid.c: fix HTML attribute ID checking for input element.
76908 - Maintain current attribute "name" behavior for now.
76909 -
76910 -Thu Mar 2 18:59:50 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76911 -
76912 - * tree.c: Bundled lookup of attr-nodes and retrieving their
76913 - values into the functions xmlGetPropNodeInternal() and
76914 - xmlGetPropNodeValueInternal(). Changed relevant code
76915 - to use those functions.
76916 -
76917 -Mon Feb 27 20:42:04 CET 2006 Daniel Veillard <daniel@veillard.com>
76918 -
76919 - * xpath.c: workaround HP-UX compiler bug by Rick Jones
76920 -
76921 -Mon Feb 27 10:57:05 CET 2006 Daniel Veillard <daniel@veillard.com>
76922 -
76923 - * python/libxml2.py: remove a tab, as pointed out on IRC
76924 -
76925 -Sat Feb 25 18:12:10 CET 2006 Rob Richards <rrichards@ctindustries.net>
76926 -
76927 - * tree.c: Fix the add sibling functions when passing attributes.
76928 - Modify testing for ID in xmlSetProp.
76929 - No longer remove IDness when unlinking or replacing an attribute.
76930 -
76931 -Fri Feb 24 21:20:33 CET 2006 Daniel Veillard <daniel@veillard.com>
76932 -
76933 - * catalog.c: Martin Cole pointed out a bug in xmlCatalogAdd()
76934 - if /etc/xml/catalog doesn't exist.
76935 -
76936 -Thu Feb 23 23:06:18 CET 2006 Daniel Veillard <daniel@veillard.com>
76937 -
76938 - * doc//*: updated the Ruby bindings links, and regenerated the
76939 - docs.
76940 -
76941 -Thu Feb 23 09:12:27 CET 2006 Daniel Veillard <daniel@veillard.com>
76942 -
76943 - * catalog.c: improve catalog debugging message patch from Rick Jones
76944 -
76945 -Wed Feb 22 16:09:10 CET 2006 Daniel Veillard <daniel@veillard.com>
76946 -
76947 - * python/types.c: Nic Ferrier found debug statement left in the
76948 - XPath conversion code
76949 -
76950 -Tue Feb 21 20:23:14 CET 2006 Daniel Veillard <daniel@veillard.com>
76951 -
76952 - * doc/xmllint.1 doc/xmllint.xml: small man page improvements from
76953 - Daniel Leidert
76954 -
76955 -Mon Feb 20 15:45:19 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76956 -
76957 - * xmlschemas.c: Fixed a side-effect of the previous XSI bugfix:
76958 - The constructor needs a bucket to be assigned during component
76959 - fixup.
76960 -
76961 -Mon Feb 20 14:32:36 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76962 -
76963 - * xmlschemas.c xmlschemastypes.c: Fixed xs:boolean to reject
76964 - the empty string (reported by Bas Driessen on the mailing-list).
76965 - Fixed schema XSI-acquisition and construction: the schemata
76966 - (xmlSchema) didn't get the targetNamespace in some cases, thus
76967 - the component resolution mechanism failed to work. The XSI
76968 - stuff needs to be tested more intensively; think about how
76969 - to test this for regression.
76970 -
76971 -Mon Feb 20 09:57:41 CET 2006 Daniel Veillard <daniel@veillard.com>
76972 -
76973 - * doc/xmllint.1 doc/xmllint.xml: more man page improvements from
76974 - Daniel Leidert
76975 -
76976 -Sun Feb 19 22:31:33 CET 2006 Daniel Veillard <daniel@veillard.com>
76977 -
76978 - * doc/xmllint.1 doc/xmllint.xml: man page improvements from Daniel
76979 - Leidert, c.f. #331290
76980 -
76981 -Sun Feb 19 17:54:04 CET 2006 Daniel Veillard <daniel@veillard.com>
76982 -
76983 - * xmllint.c: fix an error report when using --path and --valid
76984 - closes bug #331290
76985 -
76986 -Sun Feb 19 16:20:43 CET 2006 Daniel Veillard <daniel@veillard.com>
76987 -
76988 - * relaxng.c: trying to fix #331062, this is again a problem
76989 - around interleave, there is no good fix unless reimplementing
76990 - but this works around some cases and allow to validate in that
76991 - case.
76992 -
76993 -Wed Feb 15 11:55:22 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76994 -
76995 - * tree.c: Fixed bug #328896 reported by Liron. The path
76996 - for text- and CDATA-section-nodes was computed incorrectly
76997 - in xmlGetNodePath().
76998 -
76999 -Sun Feb 12 20:12:22 CET 2006 Daniel Veillard <daniel@veillard.com>
77000 -
77001 - * xmlregexp.c: bug fixes for #327167 as well as some cleanups
77002 - and more thorough tests on atoms comparisons.
77003 -
77004 -Thu Feb 9 10:07:20 CET 2006 Daniel Veillard <daniel@veillard.com>
77005 -
77006 - * include/wsockcompat.h: patch from Eric Zurcher to compile with
77007 - Borland C++ 6
77008 -
77009 -Sun Feb 5 04:03:59 CET 2006 Daniel Veillard <daniel@veillard.com>
77010 -
77011 - * parser.c: bill pointed out a missing block in xmlParseComment
77012 - trying to fill with a normal processing of the given character.
77013 -
77014 -Sun Feb 5 03:41:39 CET 2006 Daniel Veillard <daniel@veillard.com>
77015 -
77016 - * parser.c: fixed the comment streaming bug raised by Graham Bennett
77017 - * test/badcomment.xml result//badcomment.xml*: added to the regression
77018 - suite.
77019 -
77020 -Fri Feb 3 17:36:41 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77021 -
77022 - * include/libxml/tree.h: Added the xmlDOMWrapCloneNode() to
77023 - the header file.
77024 -
77025 -Fri Feb 3 17:29:22 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77026 -
77027 - * tree.c: Added an initial version of xmlDOMWrapCloneNode() to
77028 - the API. It will be used to reflect DOM's Node.cloneNode and
77029 - Document.importNode methods.
77030 - The pros: 1) non-recursive, 2) optimized ns-lookup
77031 - (mostly pointer comparison), 3) user defined ns-lookup,
77032 - 4) save ns-processing. The function is in an unfinished
77033 - and experimental state and should be only used to test it.
77034 -
77035 -Fri Feb 3 10:42:48 CET 2006 Daniel Veillard <daniel@veillard.com>
77036 -
77037 - * uri.c: applied patch from Rob Richards fixing the URI regressions
77038 - tests on Windows which seems to indicate bad escaping.
77039 -
77040 -Thu Feb 2 13:11:26 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77041 -
77042 - * tree.c: Fixed some bugs xmlDOMWrapReconcileNamespaces() wrt
77043 - the previous addition of the removal of redundant ns-decls.
77044 -
77045 -Wed Feb 1 17:32:25 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77046 -
77047 - * tree.c: Enhanced xmlDOMWrapReconcileNamespaces() to remove
77048 - redundant ns-decls if the option XML_DOM_RECONNS_REMOVEREDUND
77049 - was given. Note that I haven't moved this option to the
77050 - header file yet; so just call this function with an @option
77051 - of 1 to test the behaviour.
77052 -
77053 -Wed Feb 1 12:21:08 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77054 -
77055 - * tapi.c win32/Makefile.*: Added changed as proposed on
77056 - the mailing list by venkat naidu in order to compile
77057 - testapi.c on windows.
77058 -
77059 -Thu Jan 19 09:57:28 CET 2006 Daniel Veillard <daniel@veillard.com>
77060 -
77061 - * configure.in xml2-config.in: trying to fix windows/configure
77062 - issues reported by Tim Van Holder
77063 -
77064 -Wed Jan 18 18:21:15 CET 2006 Daniel Veillard <daniel@veillard.com>
77065 -
77066 - * HTMLparser.c libxml.h parser.c: try to fix xmlParseInNodeContext
77067 - when operating on an HTML document.
77068 -
77069 -Mon Jan 9 17:27:15 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77070 -
77071 - * relaxng.c include/libxml/relaxng.h: Added
77072 - xmlRelaxNGSetParserStructuredErrors() to the API.
77073 -
77074 -Mon Jan 9 15:33:16 CET 2006 Daniel Veillard <daniel@veillard.com>
77075 -
77076 - * parser.c: reverted first patches for #319279 which led to #326295
77077 - and fixed the problem in xmlParseChunk() instead
77078 - * test/ent11 result//ent11*: added test for #326295 to the regression
77079 - suite
77080 -
77081 -Thu Jan 5 16:25:06 CET 2006 Daniel Veillard <daniel@veillard.com>
77082 -
77083 - * NEWS configure.in libxml.spec.in testapi.c doc/*: updated the news
77084 - regenerated the docs, preparing for release of 2.6.23
77085 - * pattern.c xmlschemas.c: fixed some comments
77086 -
77087 -Thu Jan 5 15:48:27 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77088 -
77089 - * test/XPath/docs/nodes test/XPath/tests/nodespat
77090 - result/XPath/tests/nodespat: Added regression tests for
77091 - the latest XPath/pattern fixes.
77092 -
77093 -Thu Jan 5 15:43:38 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77094 -
77095 - * pattern.c: Another fix to handle "foo//.": "foo" was not
77096 - included in the resulting node-set.
77097 -
77098 -Thu Jan 5 13:22:29 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77099 -
77100 - * pattern.c xpath.c include/libxml/pattern.h:
77101 - Fixed bug #322928, reported by Erich Schubert: The bug was
77102 - in pattern.c, which is used for a tiny subset of xpath
77103 - expression which can be evaluated in an optimized way.
77104 - The doc-node was never considered when evaluating "//"
77105 - expressions. Additionally, we fixed resolution
77106 - to nodes of any type in pattern.c; i.e. a "//." didn't work
77107 - yet, as it did select only element-nodes. Due to this
77108 - issue the pushing of nodes in xpath.c needed to be adjusted
77109 - as well.
77110 -
77111 -Wed Jan 4 18:07:47 CET 2006 Daniel Veillard <daniel@veillard.com>
77112 -
77113 - * parser.c: tiny refactoring patch from Bjorn Reese
77114 -
77115 -Wed Jan 4 15:00:51 CET 2006 Daniel Veillard <daniel@veillard.com>
77116 -
77117 - * SAX2.c: fix bug #324432 with <xml:foo/>
77118 - * test/ns7 result/ns7*: added to the regression tests
77119 -
77120 -Wed Jan 4 10:53:56 CET 2006 Daniel Veillard <daniel@veillard.com>
77121 -
77122 - * include/wsockcompat.h: applied patch from Mark Junker, fixing a
77123 - MinGW compilation problem, should close bug #324943
77124 -
77125 -Tue Jan 3 11:49:54 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77126 -
77127 - * xmlschemas.c: Removed last dependency on the obsolete enum
77128 - xmlSchemaValidError.
77129 -
77130 -Mon Jan 2 11:20:00 CET 2006 Daniel Veillard <daniel@veillard.com>
77131 -
77132 - * xmlreader.c include/libxml/xmlreader.h xmlschemas.c: compilation
77133 - and doc build fixes from Michael Day
77134 -
77135 -Wed Dec 28 22:12:34 CET 2005 Daniel Veillard <daniel@veillard.com>
77136 -
77137 - * xmlregexp.c: bug in xmlRegExecPushString2() pointed out by
77138 - Sreeni Nair.
77139 -
77140 -Tue Dec 20 16:55:31 CET 2005 Rob Richards <rrichards@ctindustries.net>
77141 -
77142 - * tree.c: fix bug #322136 in xmlNodeBufGetContent when entity ref is
77143 - a child of an element (fix by Oleksandr Kononenko).
77144 - * HTMLtree.c include/libxml/HTMLtree.h: Add htmlDocDumpMemoryFormat.
77145 -
77146 -Tue Dec 20 11:43:06 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77147 -
77148 - * xmlschemas.c xmlstring.c: Fixed a segfault during
77149 - text concatenation when validating a node tree:
77150 - xmlStrncat was called with a @len of -1; but unlike
77151 - xmlStrncatNew, it does not calculate the length
77152 - automatically in such a case (reported by Judy Hay
77153 - on the mailing list).
77154 - Updated the descriptions of the involved string
77155 - functions to note this.
77156 -
77157 -Thu Dec 15 12:11:07 CET 2005 Daniel Veillard <daniel@veillard.com>
77158 -
77159 - * nanohttp.c: applied patch from Gary Coady to accept gzipped
77160 - http resources.
77161 -
77162 -Wed Dec 14 18:41:26 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77163 -
77164 - * win32/configure.js: Added enable/disable of runtime
77165 - debugging (LIBXML_DEBUG_RUNTIME).
77166 -
77167 -Wed Dec 14 18:11:50 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77168 -
77169 - * include/libxml/xmlversion.h.in: Fixed to define
77170 - LIBXML_DEBUG_RUNTIME on the basis of @WITH_RUN_DEBUG@.
77171 -
77172 -Tue Dec 13 12:49:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77173 -
77174 - * test/schemas/bug321475* result/schemas/bug321475*:
77175 - Added regression test for bug #321475 (reported by
77176 - Gabor Nagy). Fixing of bug #323510 seemed to have
77177 - fixed this bug as well.
77178 -
77179 -Mon Dec 12 16:19:16 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77180 -
77181 - * test/schemas/bug323510* result/schemas/bug323510*:
77182 - Added regression test for bug #323510.
77183 -
77184 -Mon Dec 12 16:11:13 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77185 -
77186 - * xmlschemas.c: Workaround for bug #323510 (reported by
77187 - Jonathan Filiatrault): substituted the epsilon transition
77188 - for a labelled transition, in order to avoid a bug in
77189 - xmlregexp.c which eliminated the epsilon transition and
77190 - marked the initial state as final.
77191 -
77192 -Mon Dec 12 14:25:46 CET 2005 Daniel Veillard <daniel@veillard.com>
77193 -
77194 - * xmlreader.c: Gary Coady pointed a memory leak in
77195 - xmlTextReaderReadInnerXml() applied patch fixing #323864
77196 -
77197 -Sat Dec 10 12:08:28 CET 2005 Daniel Veillard <daniel@veillard.com>
77198 -
77199 - * HTMLparser.c configure.in parserInternals.c runsuite.c runtest.c
77200 - testapi.c xmlschemas.c xmlschemastypes.c xmlstring.c: fixed a number
77201 - of warnings shown by HP-UX compiler and reported by Rick Jones
77202 -
77203 -Fri Dec 9 18:57:31 CET 2005 Rob Richards <rrichards@ctindustries.net>
77204 -
77205 - * xmlwriter.c: Insert space between pubid and sysid when both
77206 - passed to xmlTextWriterStartDTD and indenting not being used.
77207 - Remove no longer used Mem callbacks.
77208 -
77209 -Fri Dec 9 11:01:16 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77210 -
77211 - * runsuite.c: Changed to instantly mark instance-tests as
77212 - failed if the corresponding schema was invalid. This
77213 - reflects the side of the Python code for the XML Schema test
77214 - suite. We now get the same number of failed tests on both
77215 - sides.
77216 -
77217 -Wed Dec 7 14:59:01 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77218 -
77219 - * xmlreader.c include/libxml/xmlreader.h: Added
77220 - xmlTextReaderSchemaValidateCtxt() to the API.
77221 -
77222 -Wed Dec 7 12:59:56 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77223 -
77224 - * xmlschemas.c: Fixed a segfault: the instance document was
77225 - still tried to be validated, if the schema, dynamically
77226 - acquired using XSI was invalid, thus mangled. The
77227 - validation will stop (or rather won't validate) now in
77228 - such a case. The schema parser error code will be set
77229 - on the validion context now; this is somehow not nice,
77230 - but it assures that the validation context indicates an
77231 - error in there was a parser error.
77232 -
77233 -Tue Dec 6 18:57:23 CET 2005 Daniel Veillard <daniel@veillard.com>
77234 -
77235 - * xmlreader.c: small doc patch from Aron Stansvik
77236 - * legacy.c: another doc patch for a deprecated API
77237 -
77238 -Mon Dec 5 16:23:49 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77239 -
77240 - * Makefile.am: Tiny change for 'make tests': raised
77241 - the number of expected failures for James Clark's
77242 - XML Schema datatype tests from 10 to 11. The additional
77243 - reported error was agreed to be correct long time ago,
77244 - but we missed to adjust the message reported by
77245 - the testing script.
77246 -
77247 -Fri Dec 2 13:51:14 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77248 -
77249 - * result/schemas/decimal* result/schemas/bug322411*:
77250 - Added missing regression test results for the latest IDC
77251 - and xs:decimal bugs.
77252 -
77253 -Wed Nov 30 12:22:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77254 -
77255 - * test/schemas/decimal* test/schemas/bug322411*: Added
77256 - regression tests for the latest IDC and xs:decimal bugs.
77257 -
77258 -Wed Nov 30 11:57:35 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77259 -
77260 - * xmlschemas.c: Fixed bubbling of duplicate IDC nodes: the
77261 - parent's list of duplicates was filled with NULLs instead
77262 - of the nodes under certain conditions. This lead to a
77263 - segfault when the list's entries were accessed.
77264 -
77265 -Mon Nov 28 17:28:53 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77266 -
77267 - * xmlschemastypes.c: Fixed parsing of xs:decimal to
77268 - allow/deny special lexical forms. Fixed the totalDigits
77269 - for values in the range (x < 1) && (x > -1) && (x != 0);
77270 - E.g "0.123" has now a totalDigits of 3 (was 4 previously).
77271 - Adjusted the comparison function for decimals due to this
77272 - change. As a side effect comparison against zeroes was
77273 - optimized.
77274 -
77275 -Mon Nov 28 13:25:11 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77276 -
77277 - * xmlschemas.c: An assignment to a local variable, which was
77278 - used to access the IDC node list, was missing after the
77279 - reallocation of the list (reported by Fabrice GUY
77280 - bug #322411). Renamed the define ENABLE_IDC_NODE_TABLES
77281 - to ENABLE_IDC_NODE_TABLES_TEST and *disabled* it, since
77282 - it is used to force bubbling of IDC node tables even
77283 - if not necessary; this was intended to be used for test
77284 - purposes, but I obviously missed to disable it (although
77285 - it apparently helped finding the bug).
77286 -
77287 -Wed Nov 23 17:34:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77288 -
77289 - * xmlschemas.c: In xmlSchemaAssembleByXSI() the return value
77290 - of xmlSchemaGetMetaAttrInfo() was not assigned to anything;
77291 - this caused XSI-driven-dynamic schema acquisition to fail
77292 - with @noNamespaceSchemaLocation (reported by Julien Lamy
77293 - on the mailing list).
77294 -
77295 -Tue Nov 22 18:31:34 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77296 -
77297 - * xmlschemas.c: Fixed a bug in xmlSchemaFindRedefCompInGraph()
77298 - which caused the search for components to stop at the
77299 - first encountered attribute group component.
77300 - Fixed error report in xmlSchemaCheckSRCRedefineFirst(): the
77301 - designation of a not-found component was not reported.
77302 -
77303 -Mon Nov 21 12:23:28 CET 2005 Daniel Veillard <daniel@veillard.com>
77304 -
77305 - * xmlschemastypes.c: Albert Chin found another signed/unsigned problem
77306 - in the date and time code raised on IRIX 6.5
77307 -
77308 -Fri Nov 18 18:13:38 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77309 -
77310 - * xmlschemas.c include/libxml/xmlschemas.h:
77311 - Added xmlSchemaSetParserStructuredErrors() to the API.
77312 - Fixed channeling of error relevant information to
77313 - subsequent parser/validation contexts.
77314 -
77315 -Thu Nov 17 14:11:43 CET 2005 Daniel Veillard <daniel@veillard.com>
77316 -
77317 - * parserInternals.c: removed unreachable code pointed out by
77318 - Oleksandr Kononenko, fixes bug #321695
77319 -
77320 -Thu Nov 17 08:24:31 CET 2005 Daniel Veillard <daniel@veillard.com>
77321 -
77322 - * parser.c: use ctxt->standalone = -2 to indicate that the
77323 - XMLDecl was parsed but no standalone attribute was found,
77324 - suggested by Michael Day to detect if an XMLDecl was found.
77325 -
77326 -Tue Nov 15 09:49:24 CET 2005 Daniel Veillard <daniel@veillard.com>
77327 -
77328 - * runtest.c: Hisashi Fujinaka pointed that errors in Schemas tests
77329 - were not properly reported.
77330 -
77331 -Sun Nov 13 13:42:41 CET 2005 Daniel Veillard <daniel@veillard.com>
77332 -
77333 - * xmlIO.c: applied patch from Geert Jansen to remove xmlBufferClose()
77334 - which is not needed.
77335 -
77336 -Fri Nov 11 13:48:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77337 -
77338 - * xmlschemas.c: Changed xmlSchemaFormatIDCKeySequence()
77339 - to use xmlSchemaGetCanonValueWhtspExt() in order to
77340 - correctly report values for xs:anySimpleType.
77341 - * test/schemas/idc-keyref-err1*
77342 - result/schemas/idc-keyref-err1*: Added a test for this change.
77343 -
77344 -Wed Nov 9 13:07:24 EST 2005 Rob Richards <rrichards@ctindustries.net>
77345 -
77346 - * xmlIO.c xmlwriter.c: function consolidation when writing to xmlBuffer.
77347 - Return error condition not len if xmlwriter fails writing to buffer.
77348 -
77349 -Wed Nov 9 09:54:54 CET 2005 Daniel Veillard <daniel@veillard.com>
77350 -
77351 - * xmlsave.c xmlIO.c include/libxml/xmlIO.h include/libxml/xmlsave.h:
77352 - applied patch from Geert Jansen to implement the save function to
77353 - a xmlBuffer, and a bit of cleanup.
77354 -
77355 -Mon Nov 7 14:58:39 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77356 -
77357 - * xmlschemas.c xmlschemastypes.c: Fixed the type of the
77358 - totalDigits value to be positiveInteger.
77359 - Fixed crash in an error report function when we gave it
77360 - the document node; only element and attribute nodes are
77361 - processed now (reported by Rob Richards).
77362 -
77363 -Tue Nov 1 16:22:29 CET 2005 Daniel Veillard <daniel@veillard.com>
77364 -
77365 - * xmlregexp.c: fix bug #319897, problem with counted atoms
77366 - when the transition itself is counted too
77367 - * result/regexp/hard test/regexp/hard: augmented the regression
77368 - tests with the problem exposed.
77369 -
77370 -Tue Nov 1 11:54:39 CET 2005 Daniel Veillard <daniel@veillard.com>
77371 -
77372 - * win32/Makefile.mingw include/win32config.h: applied patch from
77373 - Mark Junker to fix compilation with MinGW
77374 -
77375 -Fri Oct 28 18:36:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
77376 -
77377 - * libxml.3: tiny fix from Albert Chin
77378 - * runsuite.c runtest.c testapi.c: portability cleanup for arch
77379 - needing trio for *printf
77380 -
77381 -Fri Oct 28 12:21:39 EDT 2005 Rob Richards <rrichards@ctindustries.net>
77382 -
77383 - * tree.c: add additional checks to prevent tree corruption. fix problem
77384 - copying attribute using xmlDocCopyNode from one document to another.
77385 -
77386 -Fri Oct 28 17:58:13 CEST 2005 Daniel Veillard <daniel@veillard.com>
77387 -
77388 - * config.h.in configure.in vms/config.vms macos/src/config-mac.h:
77389 - cleanup from Albert Chin
77390 - * doc/Makefile.am: html/index.sgml doesn't exist anymore
77391 -
77392 -Fri Oct 28 16:53:51 CEST 2005 Daniel Veillard <daniel@veillard.com>
77393 -
77394 - * xmlIO.c xmlmodule.c: more portability patches from Albert Chin for
77395 - HP-UX and AIX
77396 -
77397 -Fri Oct 28 10:36:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
77398 -
77399 - * xmlmodule.c configure.in: applied 2 patches from Albert Chin for
77400 - module portability
77401 -
77402 -Fri Oct 28 10:24:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
77403 -
77404 - * error.c: fixing a portability problem on some old Unices with
77405 - patch from Albert Chin
77406 -
77407 -2005-10-27 Aleksey Sanin <aleksey@aleksey.com>
77408 -
77409 - * c14n.c result/c14n/exc-without-comments/test-2
77410 - test/c14n/exc-without-comments/test-2.xml
77411 - test/c14n/exc-without-comments/test-2.xpath: fixing
77412 - bug in exc-c14n namespace visibility + test case (bug #319367)
77413 -
77414 -Thu Oct 27 16:10:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
77415 -
77416 - * python/libxml.py: remove warnings to stdout patch from Nic Ferrier
77417 -
77418 -Thu Oct 27 13:54:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
77419 -
77420 - * valid.c xmlregexp.c include/libxml/valid.h
77421 - include/libxml/xmlregexp.h: avoid function parameters names 'list'
77422 - as this seems to give troubles with VC6 and stl as reported by
77423 - Samuel Diaz Garcia.
77424 -
77425 -Wed Oct 26 10:59:21 CEST 2005 Daniel Veillard <daniel@veillard.com>
77426 -
77427 - * parserInternals.c: fix a problem in some error case on Solaris
77428 - when passed a NULL filename, pointed by Albert Chin.
77429 -
77430 -Tue Oct 25 14:34:58 CEST 2005 Daniel Veillard <daniel@veillard.com>
77431 -
77432 - * HTMLparser.c: script HTML parser error fix, corrects bug #319715
77433 - * result/HTML/53867* test/HTML/53867.html: added test from Michael Day
77434 - to the regression suite
77435 -
77436 -Tue Oct 25 14:21:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
77437 -
77438 - * HTMLparser.c: typo fix from Michael Day
77439 -
77440 -Mon Oct 24 20:16:23 EDT 2005 Rob Richards <rrichards@ctindustries.net>
77441 -
77442 - * tree.c: fix issue adding non-namespaced attributes in xmlAddChild(),
77443 - xmlAddNextSibling() and xmlAddPrevSibling() (bug #319108) - part 1.
77444 -
77445 -Sat Oct 22 10:00:41 HKT 2005 William Brack <wbrack@mmm.com.hk>
77446 -
77447 - * parser.c: fixed second spot where CRLF split between chunks
77448 - could cause trouble (bug #319279)
77449 - * gentest.py, testapi.c: fixed two problems involved with
77450 - --with-minimum compilation (compilation errors with schematron
77451 - and formal expressions tests)
77452 -
77453 -Fri Oct 21 10:50:14 EDT 2005 Rob Richards <rrichards@ctindustries.net>
77454 -
77455 - * xmlsave.c: prevent output of fragment tags when serializing XHTML.
77456 -
77457 -Wed Oct 19 16:53:47 BST 2005 Daniel Veillard <daniel@veillard.com>
77458 -
77459 - * xmlregexp.c: committing a some fixes and debug done yesterday in
77460 - the London airport.
77461 -
77462 -Thu Oct 20 12:54:23 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77463 -
77464 - * xmlschemas.c: Removed creation of a temporary parser context
77465 - during validation when processing xsi:type; this previously
77466 - added a string to the dict of the schema - to assure thread
77467 - safety, we don't want to modify a given schema during
77468 - validation.
77469 -
77470 -Thu Oct 20 17:05:29 HKT 2005 William Brack <wbrack@mmm.com.hk>
77471 -
77472 - * xmlwriter.c: fixed problem in xmlTextWriterVSprintf caused by
77473 - misuse of vsnprintf
77474 - * configure.in, config.h.in: added a configuration check for
77475 - va_copy and added a define for VA_COPY for xmlwriter.c fix
77476 - * parser.c: fixed problem with CRLF split between chunks (bug
77477 - #319279) (fix provided by Brion Vibber)
77478 -
77479 -Wed Oct 19 18:49:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77480 -
77481 - * xmlschemas.c: Fixed a potential memory leak in
77482 - xmlSchemaCheckCSelectorXPath() when an internal error occurs.
77483 - Fixed setting of ctxt->err to the given error code in
77484 - the parsing error functions.
77485 - * pattern.c: Added internal xmlCompileIDCXPathPath() as a
77486 - starting point for IDC XPath compilation; this and some other
77487 - tiny changes fixes issues regarding whitespace in the
77488 - expressions and IDC selector/field relevant restrictions of
77489 - the subset of XPath. Fixed a missing blocking of attributes
77490 - in xmlStreamPushInternal().
77491 -
77492 -Mon Oct 17 15:06:05 EDT 2005 Daniel Veillard <daniel@veillard.com>
77493 -
77494 - * runtest.c: removed the error message
77495 - * relaxng.c xmlschemas.c: removed 2 instability warnings from function
77496 - documentation
77497 - * include/libxml/schemasInternals.h: changed warning about API stability
77498 - * xmlregexp.c: trying to improve runtime execution of non-deterministic
77499 - regexps and automata. Not fully finished but should be way better.
77500 -
77501 -Mon Oct 17 16:12:02 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77502 -
77503 - * xmlschemas.c: Fixed a memory leak in
77504 - xmlSchemaContentModelDump(). Added output of local types
77505 - in xmlSchemaElementDump(). Tiny cosmetical changes to the
77506 - dump output.
77507 -
77508 -Mon Oct 17 14:29:08 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77509 -
77510 - * tree.c pattern.c: Silenced intel compiler warnings (reported
77511 - by Kjartan Maraas, bug #318517).
77512 - * xmlschemas.c: The above changes in pattern.c revealed an
77513 - inconsistency wrt IDCs: we now _only_ pop XPath states, if
77514 - we really pushed them beforehand; this was previously not
77515 - checked for the case when we discover an element node to be
77516 - invalid wrt the content model.
77517 - Fixed segfault in xmlSchemaGetEffectiveValueConstraint().
77518 -
77519 -Fri Oct 14 16:40:18 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77520 -
77521 - * result/schemas/*.err: Adapted regression test results.
77522 -
77523 -Fri Oct 14 16:21:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77524 -
77525 - * xmlschemas.c: Fixed some identity-constraint issues:
77526 - Restructured IDC node-tables
77527 - Allowed IDCs to resolve also to nodes of complex type with
77528 - simple content.
77529 - Added check for keyrefs with references to keyrefs.
77530 - IDC target-nodes were interfering with IDC node-tables,
77531 - since they used one list of entries only. I separated this
77532 - one big list into 3 lists: 1 for IDC node-table entries,
77533 - 1 for _duplicates_ of IDC node-table entries and 1 for
77534 - IDC target-nodes. More code, but cleaner and it works at last.
77535 - Keyrefs will fail to resolve to duplicate key/unique entries.
77536 - I thought this was already working this way, but it didn't.
77537 - The wording of the definition for [node table] in the spec
77538 - can lead to a scenario, where keyrefs resolve perfectly, even
77539 - if the relevant key-sequences of the referenced key/unique have
77540 - duplicates in the subtree. Currently only Saxon 8.5.1 is
77541 - dissallowing resolution to duplicate entries correctly - we
77542 - will follow Saxon here.
77543 - Removed some intel compiler warnings (reported by
77544 - Kjartan Maraas, bug #318517).
77545 - * pattern.c: Fixed an IDC-XPath problem when resolving to
77546 - attributes.
77547 -
77548 -Mon Oct 14 01:15:14 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77549 - * nanohttp.c include/wsockcompat.h: applied patch from Kolja Nowak
77550 - to use getaddrinfo() if supported in Windows build (bug# 317431).
77551 -
77552 -Mon Oct 10 15:33:48 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77553 -
77554 - * result/schemas/*: Adapted regression test results.
77555 -
77556 -Mon Oct 10 15:12:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77557 -
77558 - * xmlschemas.c include/libxml/schemasInternals.h
77559 - include/libxml/xmlerror.h: Initial implementation for
77560 - redefinitions; this still misses checks for restrictions
77561 - of the content model of complex types.
77562 - Fixed default/fixed values for attributes (looks like they
77563 - did not work in the last releases).
77564 - Completed constraints for attribute uses.
77565 - Separated attribute derivation from attribute constraints.
77566 - Completed constraints for attribute group definitions.
77567 - Disallowing <import>s of schemas in no target namespace if the
77568 - importing schema is a chameleon schema. This contradicts
77569 - the way Saxon, Xerces-J, XSV and IBM's SQC works, but the
77570 - W3C XML Schema WG, thinks it is correct to disallow such
77571 - imports.
77572 - Added cos-all-limited constraints.
77573 - Restructured reference resolution to model groups and element
77574 - declarations.
77575 - Misc cleanup.
77576 -
77577 -Fri Oct 7 04:34:12 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77578 -
77579 - * schematron.c xmlregexp.c: remove warnings under Windows.
77580 -
77581 -Wed Sep 28 23:42:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
77582 -
77583 - * parser.c: applied patch from Massimo Morara fixing bug #317447
77584 - about risk of invalid write in xmlStringLenDecodeEntities
77585 -
77586 -Tue Sep 27 11:20:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
77587 -
77588 - * error.c: Adrian Mouat pointed out redundancies in xmlReportError()
77589 -
77590 -Mon Sep 26 19:18:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
77591 -
77592 - * xmlregexp.c: seems a test to avoid duplicate transition is
77593 - really needed at all times. Luka Por gave an example hitting
77594 - this. Changed back the internal API.
77595 -
77596 -Thu Sep 22 13:14:07 CEST 2005 Daniel Veillard <daniel@veillard.com>
77597 -
77598 - * xmlreader.c: fixing leak in xmlTextReaderReadString() #316924
77599 -
77600 -Thu Sep 15 16:12:44 CEST 2005 Daniel Veillard <daniel@veillard.com>
77601 -
77602 - * uri.c: more fixes to the behaviour of xmlBuildRelativeURI
77603 -
77604 -Thu Sep 15 15:08:21 CEST 2005 Daniel Veillard <daniel@veillard.com>
77605 -
77606 - * xmlregexp.c: detect combinatory explosion and return with
77607 - a runtime error in those case, c.f. #316338 though maybe we
77608 - should not see such an explosion with that specific regexp,
77609 - more checking needs to be done.
77610 -
77611 -Wed Sep 14 19:52:18 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77612 -
77613 - * include/libxml/schemasInternals.h: Added some comments for the
77614 - struct fields.
77615 -
77616 -Wed Sep 14 13:24:27 HKT 2005 William Brack <wbrack@mmm.com.hk>
77617 -
77618 - * uri.c: fixed problem when xmlBuildRelativeURI was given a
77619 - blank path (bug 316224)
77620 -
77621 -Mon Sep 12 23:41:40 CEST 2005 Daniel Veillard <daniel@veillard.com>
77622 -
77623 - * NEWS configure.in doc//*: release of 2.6.22 updated doc and
77624 - rebuild.
77625 - * xmlsave.c include/libxml/xmlsave.h: added XML_SAVE_NO_XHTML
77626 - xmlSaveOption
77627 - * xmlschemas.c: minor cleanups
77628 -
77629 -Mon Sep 12 21:42:47 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77630 -
77631 - * test/schemas/import1_0.xsd: And adapting another one.
77632 -
77633 -Mon Sep 12 21:29:35 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77634 -
77635 - * result/schemas/derivation-ok-extension_0_0: Adapted result.
77636 -
77637 -Mon Sep 12 21:20:41 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77638 -
77639 - * result/schemas/allsg_0_3.err result/schemas/allsg_0_4.err
77640 - result/schemas/changelog093_1_0.err
77641 - result/schemas/derivation-ok-extension_0_0.err
77642 - result/schemas/import1_0_0.err
77643 - result/schemas/derivation-ok-restriction-2-1-1_0_0.err:
77644 - Adapted regression results.
77645 -
77646 -Mon Sep 12 21:00:53 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77647 -
77648 - * xmlschemas.c include/libxml/schemasInternals.h
77649 - include/libxml/xmlerror.h: Completion of the schema graph.
77650 - Centralisation, more robustness of the schema document
77651 - acquisition story. Centralised and restructured component fixup.
77652 - Fixed attribute derivation when 'prohibiting' attribute uses.
77653 - Added warnings: when schema documents cannot be localized
77654 - during imports; when we get duplicate and pointless attribute
77655 - prohibitions. Changed error reports for IDCs to report
77656 - the relevant IDC designation as well (requested by GUY Fabrice).
77657 - Misc code-cleanup.
77658 -
77659 -Mon Sep 12 16:02:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
77660 -
77661 - * xmlsave.c: applied second patch from David Madore to be less intrusive
77662 - when handling scripts and style elements in XHTML1 should fix #316041
77663 - * test/xhtml1 result//xhtml1\*: updated the test accordingly
77664 -
77665 -Mon Sep 12 15:09:09 CEST 2005 Daniel Veillard <daniel@veillard.com>
77666 -
77667 - * libxml.spec.in doc/devhelp/*: finished the integration with
77668 - devhelp, completing the index and inserted into the gtk-doc
77669 - database at "make install" stage
77670 -
77671 -Mon Sep 12 14:14:12 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77672 -
77673 - * include/libxml/xmlsave.h xmlsave.c: add XML_SAVE_NO_EMPTY save option
77674 - and use option from xmlSaveCtxtPtr rather than global during output.
77675 - * xmlsave.c: fix some output formatting for meta element under XHTML.
77676 -
77677 -Mon Sep 12 11:12:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
77678 -
77679 - * include/libxml/parser.h parser.c xmllint.c: damn XML_FEATURE_UNICODE
77680 - clashes with Expat headers rename to XML_WITH_ to fix bug #316053.
77681 - * doc/Makefile.am: build devhelp before the examples.
77682 - * doc/*: regenerated the API
77683 -
77684 -Mon Sep 12 02:03:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
77685 -
77686 - * xmlsave.c: fix bug #316034, where xmlElemDump() can crash if
77687 - given a document pointer instead of an element
77688 -
77689 -Mon Sep 12 01:26:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
77690 -
77691 - * doc/devhelp/devhelp.xsl: improvements on the html generation,
77692 - should be complete with navigation, what is left done is glueing
77693 -
77694 -Mon Sep 12 00:03:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
77695 -
77696 - * configure.in doc/Makefile.am doc/apibuild.py doc/libxml2-api.xml
77697 - doc/devhelp/*: started work needed to generate devhelp content,
77698 - not too hard based on the existing format and extractor.
77699 -
77700 -Fri Sep 9 12:56:19 CEST 2005 Daniel Veillard <daniel@veillard.com>
77701 -
77702 - * parser.c: fixes bug #315617 when using push CDATA in some cases.
77703 -
77704 -Thu Sep 8 23:39:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
77705 -
77706 - * xmllint.c: patch from Stéphane Bidoul to compile without schematron
77707 -
77708 -Wed Sep 7 00:16:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
77709 -
77710 - * debugXML.c: patch from Oleg Paraschenko to fix xmlDebugDumpNode()
77711 - when handled a namespace node.
77712 -
77713 -Sun Sep 4 23:36:45 CEST 2005 Daniel Veillard <daniel@veillard.com>
77714 -
77715 - * NEWS elfgcchack.h testapi.c doc/*: updated the docs and rebuild
77716 - releasing 2.6.21
77717 - * include/libxml/threads.h threads.c: removed xmlIsThreadsEnabled()
77718 - * threads.c include/libxml/threads.h xmllint.c: added the more
77719 - generic xmlHasFeature() as suggested by Bjorn Reese, xmllint uses it.
77720 -
77721 -Sun Sep 4 22:45:49 CEST 2005 Daniel Veillard <daniel@veillard.com>
77722 -
77723 - * configure.in doc/* configure.in: prepare for release
77724 - * xpath.c: work for #303289, fix a formatting bug for MIN_INT
77725 -
77726 -Sun Sep 4 15:48:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
77727 -
77728 - * relaxng.c: real fix for #314881 and #314759 is was a bit more complex
77729 - than initially expected as ctxt->error == NULL had behaviour side
77730 - effects at the compilation level itself.
77731 -
77732 -Sun Sep 4 14:01:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
77733 -
77734 - * pattern.c xpath.c include/libxml/pattern.h: fixing yet another
77735 - pattern induced XPath bug #314282
77736 - * relaxng.c: reverted back last change it was seriously broken
77737 -
77738 -Sat Sep 3 16:51:55 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77739 -
77740 - * xmlsave.c: check for NULL to prevent crash with meta elements
77741 -
77742 -Sat Sep 3 16:26:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
77743 -
77744 - * relaxng.c: structured error reporting problem with Relax-NG
77745 - should fix #314881 and #314759
77746 -
77747 -Sat Sep 3 15:42:29 CEST 2005 Daniel Veillard <daniel@veillard.com>
77748 -
77749 - * pattern.c: fixes a portability problem raised by C370 on Z/OS
77750 -
77751 -Sat Sep 3 15:26:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
77752 -
77753 - * SAX2.c tree.c valid.c: fixing a number of issues raised by xml:id
77754 - but more generally related to attributes and ID handling, fixes
77755 - #314358 among other things
77756 -
77757 -Fri Sep 2 14:26:43 CEST 2005 Daniel Veillard <daniel@veillard.com>
77758 -
77759 - * encoding.c parserInternals.c: avoid passing a char[] as snprintf
77760 - first argument.
77761 - * threads.c include/libxml/threads.h: implemented xmlIsThreadsEnabled()
77762 - based on Andrew W. Nosenko idea.
77763 - * doc/* elfgcchack.h: regenerated the API
77764 -
77765 -Thu Sep 1 14:44:42 CEST 2005 Daniel Veillard <daniel@veillard.com>
77766 -
77767 - * configure.in: the use of AM_PATH_PYTHON is not portable enough
77768 - reverting back to AM_PATH_PROG
77769 -
77770 -Thu Sep 1 11:42:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
77771 -
77772 - * HTMLparser.c: Applied the last patch from Gary Coady for #304637
77773 - changing the behaviour when text nodes are found in body
77774 - * result/HTML/*: this changes the output of some tests
77775 -
77776 -Thu Sep 1 11:22:37 CEST 2005 Daniel Veillard <daniel@veillard.com>
77777 -
77778 - * doc/downloads.html doc/xml.html: adding reference to Bull AIX rpms
77779 - c.f. #160598
77780 -
77781 -Wed Aug 31 11:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
77782 -
77783 - * xml2-config.in: removed the obsolete --libtool-libs option, c.f.
77784 - bug #314853
77785 -
77786 -Fri Aug 26 17:33:26 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77787 -
77788 - * xmlsave.c: move handling of meta element for http-equiv in XHTML docs
77789 - to serialization and no longer modify internal tree.
77790 -
77791 -Fri Aug 26 00:51:58 CEST 2005 Daniel Veillard <daniel@veillard.com>
77792 -
77793 - * libxml.spec.in: the profiling usually don't work, disabled
77794 - * doc/*: rebuilt
77795 -
77796 -Thu Aug 25 23:47:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
77797 -
77798 - * configure.in: trying to fix the first part of #310033 by
77799 - detecting gcc <= 3.2
77800 -
77801 -Thu Aug 25 22:13:37 CEST 2005 Daniel Veillard <daniel@veillard.com>
77802 -
77803 - * error.c: fixed bug #310033, the URI extraction code given a
77804 - node is a bit twisted and broke in the last months.
77805 -
77806 -Thu Aug 25 16:18:15 CEST 2005 Daniel Veillard <daniel@veillard.com>
77807 -
77808 - * debugXML.c result/XPath/xptr/strrange2: uninitialized field and
77809 - fix on test.
77810 -
77811 -Thu Aug 25 16:03:05 CEST 2005 Daniel Veillard <daniel@veillard.com>
77812 -
77813 - * debugXML.c: change verbosity depending on API
77814 - * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: get back
77815 - to previous outputs
77816 -
77817 -Thu Aug 25 15:14:56 CEST 2005 Daniel Veillard <daniel@veillard.com>
77818 -
77819 - * HTMLparser.c parser.c SAX2.c debugXML.c tree.c valid.c xmlreader.c
77820 - xmllint.c include/libxml/HTMLparser.h include/libxml/parser.h:
77821 - added a parser XML_PARSE_COMPACT option to allocate small
77822 - text nodes (less than 8 bytes on 32bits, less than 16bytes on 64bits)
77823 - directly within the node, various changes to cope with this.
77824 - * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: this
77825 - slightly change the output
77826 -
77827 -Thu Aug 25 12:16:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
77828 -
77829 - * configure.in: patch from Andrew W. Nosenko, use se $GCC = 'yes'
77830 - instead of $CC = 'gcc' because GCC may have a different name
77831 -
77832 -Thu Aug 25 00:18:20 CEST 2005 Daniel Veillard <daniel@veillard.com>
77833 -
77834 - * configure.in: changes the way the python binary is found, should
77835 - also fix bug #308004
77836 -
77837 -Wed Aug 24 16:44:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
77838 -
77839 - * parser.c: found another bug while looking at #309616 on missing
77840 - entities.
77841 - * result/ent2.sax* result/ent7.sax* result/xml2.sax*: this changed the
77842 - SAX stream in missing conditions for a few tests
77843 -
77844 -Wed Aug 24 16:19:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
77845 -
77846 - * encoding.c: applied the patch suggested #309565 which can avoid
77847 - looping in error conditions.
77848 -
77849 -Wed Aug 24 16:04:17 CEST 2005 Daniel Veillard <daniel@veillard.com>
77850 -
77851 - * SAX2.c tree.c: line numbers are now carried by most nodes, fixing
77852 - xmlGetLineNo() c.f. bug #309205
77853 -
77854 -Wed Aug 24 14:43:34 CEST 2005 Daniel Veillard <daniel@veillard.com>
77855 -
77856 - * encoding.c error.c include/libxml/xmlerror.h: finally converted
77857 - the encoding module to the common error reporting mechanism
77858 - * doc/* doc/html/libxml-xmlerror.html: rebuilt
77859 -
77860 -Wed Aug 24 11:35:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
77861 -
77862 - * xpath.c: removed a potentially uninitialized variable error
77863 - * python/generator.py: fixed a deprecation warning
77864 - * python/tests/tstLastError.py: silent the damn test when Okay !
77865 -
77866 -Wed Aug 24 00:11:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
77867 -
77868 - * SAX2.c globals.c runtest.c testC14N.c testapi.c tree.c
77869 - include/libxml/SAX2.h include/libxml/xmlregexp.h: fixed compilation
77870 - when configured --without-sax1 and other cleanups fixes bug #172683
77871 - * doc/* elfgcchack.h: regenerated
77872 -
77873 -Tue Aug 23 20:05:05 CEST 2005 Daniel Veillard <daniel@veillard.com>
77874 -
77875 - * parser.c: fixed bug #170489 reported by Jirka Kosek
77876 - * test/valid/objednavka.xml test/valid/dtds/objednavka.dtd
77877 - result/valid/objednavka*: added the test to the regression suite.
77878 -
77879 -Tue Aug 23 18:04:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
77880 -
77881 - * HTMLparser.c include/libxml/HTMLparser.h: added a recovery mode
77882 - for the HTML parser based on the suggestions of bug #169834 by
77883 - Paul Loberg
77884 -
77885 -Tue Aug 23 15:38:46 CEST 2005 Daniel Veillard <daniel@veillard.com>
77886 -
77887 - * elfgcchack.h testapi.c doc/*: regenerated
77888 - * schematron.c: fixed a compilation problem
77889 - * xmlregexp.c include/libxml/xmlregexp.h: some cleanups and one bug fix
77890 - * result/expr/base: slightly changes the number of Cons.
77891 -
77892 -Mon Aug 22 23:19:50 CEST 2005 Daniel Veillard <daniel@veillard.com>
77893 -
77894 - * elfgcchack.h testapi.c doc/*: rescanned code and rebuilt
77895 - * xmlregexp.c: small cleanup
77896 - * include/libxml/schematron.h include/libxml/xmlexports.h
77897 - include/libxml/xmlversion.h.in: cleanup problems from code scanner
77898 -
77899 -Mon Aug 22 18:00:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
77900 -
77901 - * xmlschemastypes.c: applied patch from Kuba Nowakowski fixing bug
77902 - #313982
77903 - * result/schemas/bug313982* test/schemas/bug313982*: also added
77904 - the test case to the regression suite.
77905 -
77906 -Mon Aug 22 17:50:20 CEST 2005 Daniel Veillard <daniel@veillard.com>
77907 -
77908 - * testRegexp.c: printed the wrong string
77909 -
77910 -Mon Aug 22 16:42:07 CEST 2005 Daniel Veillard <daniel@veillard.com>
77911 -
77912 - * testRegexp.c xmlregexp.c include/libxml/xmlregexp.h: exported
77913 - xmlExpExpDerive(), added it to the testRegexp command line
77914 - tool when providing multiple expressions.
77915 -
77916 -Mon Aug 22 14:57:13 CEST 2005 Daniel Veillard <daniel@veillard.com>
77917 -
77918 - * Makefile.am result/expr/base test/expr/base: added the first
77919 - regression test suite set for the new expression support
77920 -
77921 -Mon Aug 22 13:49:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
77922 -
77923 - * valid.c: fixed an uninitialized variable
77924 - * xmlregexp.c include/libxml/xmlregexp.h: extended the API to
77925 - add the parser, serializer and some debugging
77926 - * include/libxml/xmlversion.h.in: made the new support compiled
77927 - by default if Schemas is included
77928 - * testRegexp.c: cleanup and integration of the first part of the
77929 - new code with a special switch
77930 - * xmllint.c: show up Expr in --version if compiled in
77931 - * include/libxml/tree.h: moved the xmlBuffer definition up
77932 -
77933 -Mon Aug 22 12:11:10 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77934 -
77935 - * xmlschemas.c: Some preparation for the creation of a graph
77936 - of imported/included/redefined schemas; this is needed for
77937 - at least the redefinitions.
77938 - Centralized the creation of the parser context in one function.
77939 -
77940 -Mon Aug 22 02:19:33 CEST 2005 Daniel Veillard <daniel@veillard.com>
77941 -
77942 - * xmlregexp.c include/libxml/xmlregexp.h: pushing the formal expression
77943 - handling code to have it in CVs from now. Not plugged, and misses
77944 - APIs it's not compiled in yet.
77945 -
77946 -Sat Aug 20 23:13:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
77947 -
77948 - * xmlreader.c: applied another patch from Rob Richards to fix
77949 - xmlTextReaderGetAttributeNs and xmlTextReaderMoveToAttributeNs
77950 -
77951 -Wed Aug 17 09:06:33 CEST 2005 Daniel Veillard <daniel@veillard.com>
77952 -
77953 - * xmlreader.c: applied patch from Rob Richards to fix
77954 - xmlTextReaderGetAttribute behaviour with namespace declarations
77955 -
77956 -Fri Aug 12 14:12:56 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77957 -
77958 - * xmlschemas.c include/libxml/xmlerror.h:
77959 - Changed output for keyref-match errors; the target-node will
77960 - be now reported rather than the scope-node of the keyref
77961 - definition - allowing easier chasing of instance errors.
77962 - This was reported by Guy Fabrice to the mailing list.
77963 - Some initial parsing code for schema redefinitions.
77964 - * result/schemas/bug303566_1_1.err
77965 - result/schemas/bug312957_1_0.err: Adapted test results due
77966 - to the keyref changes.
77967 -
77968 -Fri Aug 12 12:17:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
77969 -
77970 - * valid.c: applied patch from Derek Poon fixing bug #310692
77971 -
77972 -Wed Aug 10 23:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
77973 -
77974 - * xmlschemas.c: fix for bug #312945 as pointed by Dean Hill, the
77975 - context type was not always properly initialized.
77976 -
77977 -Wed Aug 10 18:21:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
77978 -
77979 - * relaxng.c: fixed bug #307377 about validation of choices in
77980 - list values.
77981 - * test/relaxng/307377* result/relaxng/307377* Makefile.am runtest.c:
77982 - added examples to the regression tests, problem is that streaming
77983 - version gives slightly more information.
77984 -
77985 -Wed Aug 10 15:25:53 CEST 2005 Daniel Veillard <daniel@veillard.com>
77986 -
77987 - * xinclude.c: fixed bug #302302, nasty but the fix is rather simple.
77988 -
77989 -Wed Aug 10 11:59:46 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77990 -
77991 - * result/schemas/any6_1_0*: Added missing test results.
77992 -
77993 -Tue Aug 9 23:37:22 CEST 2005 Daniel Veillard <daniel@veillard.com>
77994 -
77995 - * xmlregexp.c: fixed a determinism detection problem exposed by
77996 - ##other tests committed by Kasimier, also added a small speedup
77997 - of determinism detection.
77998 - * test/results/any6_2_0* any8_1_0* any7_1_2* any7_2_2*: added
77999 - the results to the regression tests now
78000 -
78001 -Tue Aug 9 15:54:09 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78002 -
78003 - * test/schemas/any7_2.xml test/schemas/any6_2.xsd
78004 - test/schemas/any8_1.xsd test/schemas/any8_0.xml:
78005 - Added some more tests for element wildcards.
78006 -
78007 -Tue Aug 9 14:22:47 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78008 -
78009 - * xmlschemas.c: Fixed #312957 reported by Carol Hunter:
78010 - streaming XPath states were not popped in every case,
78011 - thus failed to resolve correctly for subsequent input.
78012 - * test/schemas/bug312957* result/schemas/bug312957*:
78013 - Added the test submitted by Carol Hunter.
78014 -
78015 -Tue Aug 9 13:07:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
78016 -
78017 - * xmlregexp.c xmlschemas.c: trying to nail down the remaining
78018 - ##other issues
78019 - * result/schemas/any7* test/schemas/any7: completed the tests
78020 - and added the results
78021 - * result/schemas/any3_0_0.err result/schemas/any5_0_0.err
78022 - result/schemas/any5_1_0.err: this slightly changes the output
78023 - from 3 existing tests
78024 -
78025 -Mon Aug 8 22:33:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
78026 -
78027 - * nanoftp.c nanohttp.c xmlschemastypes.c: applied patch from
78028 - Marcus Boerger to remove warnings on Windows.
78029 -
78030 -Mon Aug 8 16:43:04 CEST 2005 Daniel Veillard <daniel@veillard.com>
78031 -
78032 - * xmlsave.c include/libxml/xmlsave.h: fixed #145092 by adding
78033 - an xmlSaveOption to omit XML declaration
78034 -
78035 -Mon Aug 8 15:44:54 CEST 2005 Daniel Veillard <daniel@veillard.com>
78036 -
78037 - * HTMLtree.c: fixed bug #310333 with a patch close to the provided
78038 - patch for HTML UTF-8 serialization
78039 - * result/HTML/script2.html: this changed the output of that test
78040 -
78041 -Mon Aug 8 15:01:51 CEST 2005 Daniel Veillard <daniel@veillard.com>
78042 -
78043 - * xmlregexp.c: fixed bug #310264, basically it's about reentrancy
78044 - of count based transition, when going though the counter must
78045 - be reset to 0
78046 - * test/schemas/bug310264* result/schemas/bug310264*: added the
78047 - regression test.
78048 -
78049 -Mon Aug 8 14:40:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78050 -
78051 - * xmlschemas.c: Fixed a memory leak: xmlSchemaFreeAnnot() was
78052 - only freeing the first annotation in the list.
78053 -
78054 -Mon Aug 8 09:44:34 CEST 2005 Daniel Veillard <daniel@veillard.com>
78055 -
78056 - * xmlreader.c: applied patch from Rob Richards fixing
78057 - xmlTextReaderGetAttribute
78058 -
78059 -Mon Aug 8 01:41:53 CEST 2005 Daniel Veillard <daniel@veillard.com>
78060 -
78061 - * HTMLparser.c: fixed an uninitialized memory access spotted by
78062 - valgrind
78063 -
78064 -Sun Aug 7 12:39:35 CEST 2005 Daniel Veillard <daniel@veillard.com>
78065 -
78066 - * test/relaxng/docbook_0.xml: get rid of the dependency on a locally
78067 - installed DTD
78068 - * uri.c include/libxml/uri.h xmlIO.c nanoftp.c nanohttp.c: try to
78069 - cleanup the Path/URI conversion mess, needed fixing in various
78070 - layers and a new API to the uri module which also fixes #306861
78071 - * runtest.c: integrated a regression test specific to check the
78072 - URI conversions done before calling the I/O handlers.
78073 -
78074 -Sat Aug 6 11:06:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78075 -
78076 - * doc/XSLT.html doc/xml.html: small doc fix for #312647
78077 -
78078 -Tue Aug 2 13:26:42 CEST 2005 Daniel Veillard <daniel@veillard.com>
78079 -
78080 - * win32/configure.js: applied patch from Rob Richards to allow
78081 - disabling modules in win32, fixes #304071
78082 -
78083 -Mon Aug 1 07:18:53 CEST 2005 Daniel Veillard <daniel@veillard.com>
78084 -
78085 - * python/libxml.c: applied fix from Jakub Piotr Clapa for
78086 - xmlAttr.parent(), closing #312181
78087 -
78088 -Sun Jul 31 18:48:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
78089 -
78090 - * schematron.c: report improvement
78091 - * test/schematron/zvon* result/schematron/zvon*: more tests
78092 -
78093 -Sun Jul 31 16:02:59 CEST 2005 Daniel Veillard <daniel@veillard.com>
78094 -
78095 - * win32/Makefile.msvc win32/configure.js: applied patch from Rob
78096 - Richards to add schematron to the build on Windows
78097 - * test/schematron/zvon3* result/schematron/zvon3*: second test
78098 - * test/schematron/zvon10* result/schematron/zvon10*: this is the
78099 - real second test 10 and 2 are swapped.
78100 -
78101 -Sun Jul 31 15:42:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78102 -
78103 - * schematron.c: more bug fixes, improve the error reporting.
78104 - * test/schematron/zvon2* result/schematron/zvon2*: second test
78105 -
78106 -Sun Jul 31 14:15:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78107 -
78108 - * schematron.c xmllint.c: fixing the loop bug, fixing schematron
78109 - text error rendering
78110 - * Makefile.am result/schematron/* test/schematron/zvon1*.sct:
78111 - started integrating within "make tests"
78112 -
78113 -Sat Jul 30 17:26:58 EDT 2005 Daniel Veillard <daniel@veillard.com>
78114 -
78115 - * test/schematron/*: a few first tests from Zvon unfortunately
78116 - with the old syntax
78117 -
78118 -Sat Jul 30 17:08:07 EDT 2005 Daniel Veillard <daniel@veillard.com>
78119 -
78120 - * schematron.c xmllint.c include/libxml/schematron.h: committing
78121 - work done on the plane last week-end
78122 -
78123 -Sat Jul 30 15:16:29 CEST 2005 Daniel Veillard <daniel@veillard.com>
78124 -
78125 - * runtest.c: allows an extra argument to subset the tests
78126 - * xmlregexp.c: big speedup for validation, basically avoided
78127 - transition creation explosion when removing epsilon transition
78128 -
78129 -Sat Jul 30 00:00:46 CEST 2005 Daniel Veillard <daniel@veillard.com>
78130 -
78131 - * Makefile.am globals.c parserInternals.c xmlreader.c xmlunicode.c
78132 - xmlwriter.c: more cleanups based on sparse reports, added
78133 - "make sparse"
78134 -
78135 -Fri Jul 29 12:11:25 CEST 2005 Daniel Veillard <daniel@veillard.com>
78136 -
78137 - * python/libxml.c: don't output any message on failed resolver lookups,
78138 - better done by the python user provided resolver layer.
78139 -
78140 -Fri Jul 29 01:48:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
78141 -
78142 - * HTMLparser.c SAX2.c encoding.c globals.c parser.c relaxng.c
78143 - runsuite.c runtest.c schematron.c testHTML.c testReader.c
78144 - testRegexp.c testSAX.c testThreads.c valid.c xinclude.c xmlIO.c
78145 - xmllint.c xmlmodule.c xmlschemas.c xpath.c xpointer.c: a lot of
78146 - small cleanups based on Linus' sparse check output.
78147 -
78148 -Thu Jul 28 21:28:33 CEST 2005 Daniel Veillard <daniel@veillard.com>
78149 -
78150 - * include/libxml/Makefile.am: added schematron.h, oops ...
78151 -
78152 -Thu Jul 28 02:38:21 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78153 -
78154 - * xmlschemastypes.c: Added creation of the content type of
78155 - xs:anyType. This is needed when trying to extend xs:anyType
78156 - (although it makes no sense to extend it; IMHO the schema
78157 - people should have ruled this out). This was reported
78158 - by Yong Chen to the mailing list.
78159 - * xmlschemas.c: Fixed handling of xs:anyType in
78160 - xmlSchemaCheckCOSCTExtends() (reported by Young Chen). Tiny
78161 - adjustment to an error report output.
78162 - * test/schemas/extension2* result/schemas/extension2*:
78163 - Added a test case provided by Young Chen.
78164 -
78165 -Mon Jul 25 11:41:18 PDT 2005 William Brack <wbrack@mmm.com.hk>
78166 -
78167 - * uri.c: enhanced xmlBuildRelativeURI to allow the URI and the
78168 - base to be in "relative" form
78169 -
78170 -Sun Jul 24 10:25:41 EDT 2005 Daniel Veillard <daniel@veillard.com>
78171 -
78172 - * schematron.c xmllint.c: started adding schematron to the xmllint
78173 - tool, the report infrastructure is gonna be fun.
78174 -
78175 -Sat Jul 23 23:23:51 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78176 -
78177 - * test/schemas/any6* test/schemas/any7*: Added regression tests
78178 - (they fail currently), but did not added results yet.
78179 -
78180 -Sat Jul 23 23:07:05 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78181 -
78182 - * xmlschemas.c: Removed the workaround code in
78183 - xmlSchemaValidateElemWildcard() for the <any> wildcard
78184 - with namespace == ##other. Support for such wildcards was
78185 - implemented by Daniel at the automaton level recently, and
78186 - the workaround code iterfered with it.
78187 -
78188 -Sat Jul 23 10:55:50 EDT 2005 Daniel Veillard <daniel@veillard.com>
78189 -
78190 - * pattern.c include/libxml/pattern.h: changed xmlPatterncompile
78191 - signature to pass an int and not an enum since it can generate
78192 - ABI compat troubles.
78193 - * include/libxml/schematron.h schematron.c: adding the new
78194 - schematron code, work in progress lots to be left and needing
78195 - testing
78196 - * include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h.in
78197 - Makefile.am configure.in: integration of schematron into the
78198 - build
78199 - * xpath.c include/libxml/xpath.h: adding flags to control compilation
78200 - options right now just XML_XPATH_CHECKNS.
78201 -
78202 -Sat Jul 23 16:39:35 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78203 -
78204 - * xmlschemas.c: Removed an "internal error" message from
78205 - xmlSchemaBuildAContentModel() when an empty model group
78206 - definition is hit.
78207 -
78208 -Sat Jul 23 00:34:07 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78209 -
78210 - * pattern.c: Changed xmlCompileStepPattern() and
78211 - xmlCompileAttributeTest() to handle the "xml" prefix without
78212 - caring if the XML namespace was supplied by the user.
78213 -
78214 -Fri Jul 22 00:08:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78215 -
78216 - * xmlschemas.c: Fixed xmlSchemaPSimpleTypeErr(), which did not
78217 - output the given string arguments correctly.
78218 -
78219 -Thu Jul 21 09:21:00 EDT 2005 Daniel Veillard <daniel@veillard.com>
78220 -
78221 - * error.c globals.c parser.c runtest.c testHTML.c testSAX.c
78222 - threads.c valid.c xmllint.c xmlreader.c xmlschemas.c xmlstring.c
78223 - xmlwriter.c include/libxml/parser.h include/libxml/relaxng.h
78224 - include/libxml/valid.h include/libxml/xmlIO.h
78225 - include/libxml/xmlerror.h include/libxml/xmlexports.h
78226 - include/libxml/xmlschemas.h: applied a patch from Marcus Boerger
78227 - to fix problems with calling conventions on Windows this should
78228 - fix #309757
78229 -
78230 -Wed Jul 20 14:45:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
78231 -
78232 - * parser.c: an optimization of the char data inner loop,
78233 - can gain up to 10% in pure SAX2 parsing speed
78234 - * xmlschemas.c: applied patch from Kupriyanov Anatolij fixing
78235 - a bug in XML Schemas facet comparison #310893
78236 -
78237 -Tue Jul 19 17:27:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78238 -
78239 - * xmlregexp.c xmlschemas.c: fixed the error reporting for
78240 - not transitions
78241 - * result/schemas/any5_0_0* result/schemas/any5_0_2*
78242 - result/schemas/any5_1_0*: fixed output
78243 -
78244 -Tue Jul 19 15:34:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
78245 -
78246 - * xmlregexp.c xmlschemas.c include/libxml/xmlautomata.h: fixing
78247 - bug #172215 about foreign namespaces by adding support for
78248 - negated string transitions. Error messages still need to be
78249 - improved.
78250 - * test/schemas/any5* result/schemas/any5*: adding regression
78251 - tests for this.
78252 -
78253 -Tue Jul 19 12:33:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78254 -
78255 - * tree.c: applied patch from Alexander Pohoyda fixing xmlGetNodePath
78256 - on namespaced attributes #310417.
78257 -
78258 -Mon Jul 18 23:01:15 CEST 2005 Daniel Veillard <daniel@veillard.com>
78259 -
78260 - * doc/xmllint.1 doc/xmllint.html doc/xmllint.xml: --nonet was
78261 - ducplicated
78262 -
78263 -Mon Jul 18 20:49:28 CEST 2005 Daniel Veillard <daniel@veillard.com>
78264 -
78265 - * xmlschemas.c: fixed xsd:all when used in conjunction with
78266 - substitution groups
78267 - * test/schemas/allsg_* result/schemas/allsg_*: adding specific
78268 - regression tests, strangely missing from NIST/Sun/Microsoft
78269 - testsuites
78270 -
78271 -Sun Jul 17 07:11:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
78272 -
78273 - * xmlschemas.c: fixed bug #307508, a bad automata was built but
78274 - this showed as an indeterminist result
78275 -
78276 -Thu Jul 14 17:53:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
78277 -
78278 - * xmlschemastypes.c: found the last bug raised by NIST tests in
78279 - comparing base64 strings, result from runsuite:
78280 - ## NIST test suite for Schemas version NIST2004-01-14
78281 - Ran 23170 tests (3953 schemata), no errors
78282 -
78283 -Thu Jul 14 14:57:36 CEST 2005 Daniel Veillard <daniel@veillard.com>
78284 -
78285 - * testRegexp.c: fixed where xmlMemoryDump() should be called.
78286 - * xmlregexp.c: fixed handling of {0}, \n, \r and \t, two bugs
78287 - affecting NIST regression tests
78288 -
78289 -Thu Jul 14 11:30:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78290 -
78291 - * configure.in: applied a patch from Gerrit P. Haase to add
78292 - module support on cygwin
78293 -
78294 -Thu Jul 14 10:56:42 CEST 2005 Daniel Veillard <daniel@veillard.com>
78295 -
78296 - * HTMLparser.c: fixed a potential buffer overrun error introduced
78297 - on last commit to htmlParseScript() c.f. #310229
78298 -
78299 -Thu Jul 14 23:48:17 PDT 2005 William Brack <wbrack@mmm.com.hk>
78300 -
78301 - * xpath.c: Changed the behaviour of xmlXPathEqualNodeSetFloat to
78302 - return TRUE if a nodeset with a numeric value of NaN is compared
78303 - for inequality with any numeric value (bug 309914).
78304 -
78305 -Thu Jul 14 01:03:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
78306 -
78307 - * error.c relaxng.c xmlreader.c xmlschemas.c include/libxml/relaxng.h
78308 - include/libxml/xmlschemas.h: applied patch from Marcus Boerger
78309 - to route relaxng and schemas error messages when using the reader
78310 - through the structured interface if activated.
78311 - * elfgcchack.h doc/* testapi.c: rebuilt since this add new APIs
78312 - to test.
78313 -
78314 -Wed Jul 13 18:35:47 CEST 2005 Daniel Veillard <daniel@veillard.com>
78315 -
78316 - * HTMLparser.c: applied UTF-8 script parsing bug #310229 fix from
78317 - Jiri Netolicky
78318 - * result/HTML/script2.html* test/HTML/script2.html: added the test
78319 - case from the regression suite
78320 -
78321 -Tue Jul 12 17:08:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
78322 -
78323 - * nanohttp.c: fixed bug #310105 with http_proxy environments with
78324 - patch provided by Peter Breitenlohner
78325 -
78326 -Mon Jul 11 00:28:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
78327 -
78328 - * Makefile.am NEWS configure.in doc/*: preparing release 2.6.20
78329 - * xmllint.c: removed a compilation problem
78330 -
78331 -Sun Jul 10 23:33:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
78332 -
78333 - * xstc/Makefile.am README README.tests Makefile.tests Makefile.am:
78334 - preparing to make testsuite releases along with code source releases
78335 - * gentest.py testapi.c: fixed a couple of problem introduced by
78336 - the new Schemas support for Readers
78337 - * xpath.c: fixed the XPath attribute:: bug #309580, #309864 in a crude
78338 - but simple way.
78339 - * xmlschemas.c include/libxml/tree.h: fixed a couple of problems
78340 - raised by the doc builder.
78341 - * doc/*: made rebuild
78342 -
78343 -Sun Jul 10 21:51:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
78344 -
78345 - * xmlschemas.c: fixed a bug introduced on last commit
78346 -
78347 -Sun Jul 10 21:00:54 CEST 2005 Daniel Veillard <daniel@veillard.com>
78348 -
78349 - * doc/xmllint.1 doc/xmllint.html doc/xmllint.xml: fixed a typo
78350 - pointed by Jeroen Ruigrok
78351 - * include/libxml/xmlreader.h include/libxml/xmlschemas.h: increased
78352 - the APIs for xmlReader schemas validation support
78353 - * xmllint.c xmlreader.c xmlschemas.c: xmlReader schemas validation
78354 - implementation and testing as xmllint --stream --schema ...
78355 -
78356 -Sun Jul 10 16:11:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78357 -
78358 - * include/libxml/xmlwin32version.h.in: try to avoid conflicts.
78359 -
78360 -Sat Jul 9 19:29:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
78361 -
78362 - * parser.c: fix for #309761 from Dylan Shell
78363 - * xmlschemas.c include/libxml/xmlschemas.h: added xmlSchemaSAXPlug
78364 - and xmlSchemaSAXUnplug generic APIs for SAX Schemas validation.
78365 - * xmllint.c: couple of fixes plus added descriptions for --sax and
78366 - --sax1
78367 -
78368 -Fri Jul 8 23:35:00 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78369 -
78370 - * xmlschemas.c: Added c-props-correct constraint to check
78371 - for equal cardinality of keyref/key.
78372 - * include/libxml/xmlerror.h: Added an error code.
78373 -
78374 -Fri Jul 8 21:56:04 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78375 -
78376 - * pattern.c: Fixed evaluation of attributes. Actually only
78377 - attribute at the first level were evaluated (e.g. "@attr");
78378 - expression like "foo/@attr" always failed.
78379 -
78380 -Fri Jul 8 20:04:29 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78381 -
78382 - * xmlschemas.c: tiny fix in xmlSchemaValidateStream() if a
78383 - user-provided SAX handler is given.
78384 -
78385 -Fri Jul 8 19:25:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78386 -
78387 - * parser.c: fix some potential leaks in error cases.
78388 - * xmllint.c: added --sax, to allow testing of --schemas --sax and
78389 - various other combinations.
78390 - * xmlschemas.c: fix a couple of tiny problems in
78391 - xmlSchemaValidateStream()
78392 -
78393 -Fri Jul 8 18:34:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78394 -
78395 - * xmlschemas.c: Changed xmlSchemaValidateFile() to use
78396 - xmlSchemaValidateStream() internally.
78397 -
78398 -Fri Jul 8 17:02:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
78399 -
78400 - * test/relaxng/docbook_0.xml: added the missing entity to the
78401 - document internal subset to avoid errors if the DocBook catalogs
78402 - are not there
78403 - * xmlschemas.c: first cut at implementing xmlSchemaValidateStream()
78404 - untested yet
78405 -
78406 -Wed Jul 6 15:45:48 PDT 2005 William Brack <wbrack@mmm.com.hk>
78407 -
78408 - * parser.c: fixed problem with free on dupl attribute in
78409 - dtd (bug309637).
78410 - * test/errors/attr3.xml, result/errors/attr3.*: added
78411 - regression test for this
78412 -
78413 -Wed Jul 6 13:11:35 PDT 2005 William Brack <wbrack@mmm.com.hk>
78414 -
78415 - * win32/Makefile.msvc: try again to fix file format for Windows
78416 -
78417 -Wed Jul 6 12:20:13 PDT 2005 William Brack <wbrack@mmm.com.hk>
78418 -
78419 - * win32/Makefile.msvc: removed spurious ^M
78420 - * runtest.c: added check for option O_BINARY
78421 - * test/schemas/bug309338*, result/schemas/bug309338*: changed
78422 - sticky tag to 'binary'
78423 -
78424 -Wed Jul 6 10:38:02 PDT 2005 William Brack <wbrack@mmm.com.hk>
78425 -
78426 - * debugXML.c: excluded content string check for XML_ELEMENT_DECL
78427 - in xmlCtxtGenericNodeCheck
78428 - * runtest.c: changed "open" calls to include O_BINARY for Windows
78429 -
78430 -Wed Jul 6 17:14:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
78431 -
78432 - * parser.c: fixing bug #166777 (and #169838), it was an heuristic
78433 - in areBlanks which failed.
78434 - * result/winblanks.xml* result/noent/winblanks.xml test/winblanks.xml:
78435 - added the input file to the regression tests
78436 -
78437 -Wed Jul 6 13:40:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78438 -
78439 - * xmlschemastypes.c: Fixed bug #309338, reported by Kupriyanov
78440 - Anotolij.
78441 - * test/schemas/bug309338* result/schemas/bug309338*:
78442 - Added a regression test for the above bug.
78443 -
78444 -Tue Jul 5 16:03:05 CEST 2005 Daniel Veillard <daniel@veillard.com>
78445 -
78446 - * Makefile.am: first steps toward a testsuite dist
78447 - * SAX2.c include/libxml/xmlerror.h: fixed bug #307870
78448 -
78449 -Tue Jul 5 12:38:36 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78450 -
78451 - * runsuite.c runtest.c: Tiny portability adjustment for win.
78452 - * win32/Makefile.*: Added runtest.exe and runsuite.exe to
78453 - be created.
78454 -
78455 -Mon Jul 4 17:44:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78456 -
78457 - * runsuite.c: first stb at unimplemnted detection
78458 - * runtest.c: fixing Windows code
78459 -
78460 -Mon Jul 4 17:19:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78461 -
78462 - * runsuite.c: fix on schemas error
78463 - * runtest.c: portability glob() on Windows
78464 -
78465 -Mon Jul 4 16:23:54 CEST 2005 Daniel Veillard <daniel@veillard.com>
78466 -
78467 - * runsuite.c runtest.c: cleanups, logfile and portability
78468 - * xmllint.c: fixed a memory leak
78469 -
78470 -Mon Jul 4 13:11:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
78471 -
78472 - * parser.c: fixed a bug failing to detect UTF-8 violations in
78473 - CData in push mode.
78474 - * result/errors/cdata.xml* test/errors/cdata.xml: added the test
78475 - to the regressions
78476 -
78477 -Mon Jul 4 11:26:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
78478 -
78479 - * debugXML.c: added enhancement for #309057 in xmllint shell
78480 -
78481 -Mon Jul 4 00:58:44 CEST 2005 Daniel Veillard <daniel@veillard.com>
78482 -
78483 - * HTMLparser.c: applied patch from James Bursa fixing an html parsing
78484 - bug in push mode
78485 - * result/HTML/repeat.html* test/HTML/repeat.html: added the test to the
78486 - regression suite
78487 -
78488 -Sun Jul 3 23:42:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78489 -
78490 - * testapi.c tree.c: fixing a leak detected by testapi in
78491 - xmlDOMWrapAdoptNode, and fixing another side effect in testapi
78492 - seems to pass tests fine now.
78493 - * include/libxml/parser.h parser.c: xmlStopParser() is no more limited
78494 - to push mode
78495 - * error.c: remove a warning
78496 - * runtest.c xmllint.c: avoid compilation errors if only some parts
78497 - of the library are compiled in.
78498 -
78499 -Mon Jul 4 00:39:35 CEST 2005 Daniel Veillard <daniel@veillard.com>
78500 -
78501 - * gentest.py testapi.c: fix a problem with previous patch to
78502 - testapi.c
78503 -
78504 -Sun Jul 3 22:59:28 CEST 2005 Daniel Veillard <daniel@veillard.com>
78505 -
78506 - * runsuite.c runtest.c tree.c: fixing compilations when
78507 - disabling parts of the library at configure time.
78508 -
78509 -Sun Jul 3 18:17:58 CEST 2005 Daniel Veillard <daniel@veillard.com>
78510 -
78511 - * parserInternals.c: fix bug raised by zamez on IRC
78512 - * testapi.c: regenerated, seems to pop-up leaks in new tree functions
78513 - * tree.c: added comments missing.
78514 - * doc/*: regenerated
78515 -
78516 -Sun Jul 3 18:06:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
78517 -
78518 - * testapi.c runsuite.c runtest.c: fixing #307823 and a couple of
78519 - assorted bugs
78520 - * python/generator.py python/libxml2-python-api.xml: fixed
78521 - conditionals in generator too
78522 - * doc/apibuild.py doc/libxml2-api.xml doc/* elfgcchack.h: some
78523 - cleanups too and rebuilt
78524 -
78525 -Sun Jul 3 16:42:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
78526 -
78527 - * xmlIO.c: fixed bug #307503 misplaced #ifdef
78528 -
78529 -Sun Jul 3 16:34:47 CEST 2005 Daniel Veillard <daniel@veillard.com>
78530 -
78531 - * runsuite.c: expanded test
78532 - * xmlregexp.c: found and fixed the leak exposed by Microsoft regtests
78533 -
78534 -Sat Jul 2 23:38:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78535 -
78536 - * runsuite.c: a bit of progresses on xstc
78537 -
78538 -Sat Jul 2 09:30:13 CEST 2005 Daniel Veillard <daniel@veillard.com>
78539 -
78540 - * runsuite.c: completed the simple checks for Relax-NG suites
78541 - back to the same 11 errors as in the Python runs.
78542 -
78543 -Thu Jun 30 15:01:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
78544 -
78545 - * runtest.c: complete, checking on other platforms is needed
78546 - * README: updated
78547 - * debugXML.c: fix a bug raised by bill on IRC
78548 - * relaxng.c: fix a leak in weird circumstances
78549 - * runsuite.c Makefile.am: standalone test tool against
78550 - the regression suites, work in progress
78551 -
78552 -Tue Jun 28 08:30:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78553 -
78554 - * runtest.c: adding URI tests
78555 -
78556 -Mon Jun 27 23:55:56 CEST 2005 Daniel Veillard <daniel@veillard.com>
78557 -
78558 - * runtest.c: adding xml:id
78559 -
78560 -Mon Jun 27 23:29:36 CEST 2005 Daniel Veillard <daniel@veillard.com>
78561 -
78562 - * runtest.c: finishing XPath, adding XPointer
78563 -
78564 -Mon Jun 27 17:39:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
78565 -
78566 - * runtest.c: adding more coverage, XInclude and starting XPath
78567 -
78568 -Mon Jun 27 17:02:14 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78569 -
78570 - * tree.c include/libxml/tree.h: Added allocation/deallocation
78571 - functions for the DOM-wrapper context.
78572 -
78573 -Mon Jun 27 15:41:30 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78574 -
78575 - * tree.c: Commented the new functions to be experimental.
78576 -
78577 -Mon Jun 27 14:41:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
78578 -
78579 - * error.c valid.c: working some weird error reporting problem for
78580 - DTD validation.
78581 - * runtest.c: augmented with DTD validation tests
78582 - * result/VC/OneID*: slight change in validation output.
78583 -
78584 -Mon Jun 27 13:44:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
78585 -
78586 - * runtest.c: added most HTML tests
78587 -
78588 -Mon Jun 27 14:06:10 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78589 -
78590 - * test/namespaces/reconcile/tests.xml
78591 - test/namespaces/reconcile/tests-to-c.xsl: Added initial tests
78592 - for some new DOM-wrapper helping functions.
78593 -
78594 -Mon Jun 27 14:01:06 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78595 -
78596 - * xstc/xstc-to-python.xsl: Cleanup.
78597 - * xstc/sun-test-def.xml xstc/nist-test-def.xml xstc/ms-test-def.xml:
78598 - Removed, those are not needed anymore due to the new test suite.
78599 -
78600 -Mon Jun 27 11:39:50 CEST 2005 Daniel Veillard <daniel@veillard.com>
78601 -
78602 - * result/*.sax2 MAkefile.am: added SAXv2 regression tests apparently
78603 - missing.
78604 - * runtest.c: added SAX1/SAX2 checks.
78605 -
78606 -Mon Jun 27 12:24:54 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78607 -
78608 - * tree.c include/libxml/tree.h: Added
78609 - xmlDOMWrapReconcileNamespaces(), xmlDOMWrapAdoptNode() and
78610 - xmlDOMWrapRemoveNode() to the API. These are functions intended
78611 - to be used with DOM-wrappers.
78612 -
78613 -Mon Jun 27 10:14:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
78614 -
78615 - * runtest.c: continue to increase the tests
78616 -
78617 -Mon Jun 27 09:21:49 CEST 2005 Daniel Veillard <daniel@veillard.com>
78618 -
78619 - * runtest.c: continue to increase the tests
78620 -
78621 -Mon Jun 27 01:01:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
78622 -
78623 - * runtest.c: continue to increase the tests
78624 -
78625 -Sun Jun 26 20:08:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78626 -
78627 - * include/libxml/valid.h valid.c: avoid name glob in arguments as
78628 - it matches the glob() routine.
78629 - * runtest.c Makefile.am: first steps toward a C regression test
78630 - framework.
78631 -
78632 -Sat Jun 25 01:37:22 PDT 2005 William Brack <wbrack@mmm.com.hk>
78633 -
78634 - * configure.in: fixed a problem with the detection of
78635 - ss_family for ipV6, as reported on the mailing list by
78636 - Doug Orleans.
78637 -
78638 -Tue Jun 21 10:44:34 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78639 -
78640 - * test/schemas/empty-value* result/schemas/empty-value*:
78641 - Added regression tests (from Dhyanesh).
78642 -
78643 -Tue Jun 21 10:35:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78644 -
78645 - * xmlschemas.c: Fixed NULL values to be validated as empty
78646 - string values (reported by Dhyanesh to the mailing list).
78647 - Adjusted text concatenation of mixed content.
78648 -
78649 -Mon Jun 20 18:11:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
78650 -
78651 - * tree.c valid.c: applied patch from Rob Richards for removal
78652 - of ID (and xml:id)
78653 - * xmlreader.c: applied patch from James Wert implementing
78654 - xmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml
78655 -
78656 -Thu Jun 16 14:38:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78657 -
78658 - * xmlschemas.c: Fixed SAX2 validation: grow of internal
78659 - namespace list, appending of element character content.
78660 - * xstc/xstc.py: Added "--sax" option for SAX2 validation.
78661 -
78662 -Wed Jun 15 15:34:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78663 -
78664 - * xmlschemastypes.c: Added missing function descriptions.
78665 -
78666 -Wed Jun 15 15:26:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
78667 -
78668 - * xmllint.c: if sax1 is used and input is a file use the old
78669 - API xmlParseFile()
78670 - * xmlschemas.c: cleanups
78671 - * doc/* testapi.c elfgcchack.h: rebuilt to add python bindings
78672 - for the new functions in Schemas.
78673 -
78674 -Wed Jun 15 14:50:48 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78675 -
78676 - * xmlschemas.c include/libxml/xmlschemas.h: Added
78677 - xmlSchemaValidateFile() to the public API. This will use
78678 - SAX2-driven validation.
78679 -
78680 -Wed Jun 15 11:11:38 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78681 -
78682 - * result/schemas/bug306806_1_0 result/schemas/bug306806_1_0.err:
78683 - Added schema test results (Tom Browder, bug #306806).
78684 -
78685 -Wed Jun 15 11:08:34 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78686 -
78687 - * test/schemas/bug306806_1.xsd test/schemas/bug306806_0.xml:
78688 - Added schema tests submitted by Tom Browder (bug #306806).
78689 -
78690 -Tue Jun 14 15:03:22 PDT 2005 William Brack <wbrack@mmm.com.hk>
78691 -
78692 - * pattern.c: adjusted last change to xmlCompilePathPattern,
78693 - fixed one compilation warning
78694 -
78695 -Tue Jun 14 21:19:16 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78696 -
78697 - * pattern.c: Some changes/fixes to the streaming evaluation.
78698 - * xmlschemas.c: A bit of support for parsing the schema for
78699 - schema. Fixed attribute derivation when the use is
78700 - "prohibited" and was "optional". Fixed an attribute construction
78701 - bug, a left-over from the time, where <complexContent>,
78702 - <extension>, etc. where created as structs.
78703 -
78704 -Tue Jun 14 12:35:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
78705 -
78706 - * libxml-2.0.pc.in: removed a redundant include path
78707 -
78708 -Mon Jun 13 14:58:33 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78709 -
78710 - * xstc/Makefile.am: Some more adjustments.
78711 -
78712 -Mon Jun 13 14:35:59 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78713 -
78714 - * xstc/Makefile.am: Changed test extraction process, since some
78715 - boxes don't know about "tar --strip-path".
78716 -
78717 -Mon Jun 13 13:39:43 CEST 2005 Daniel Veillard <daniel@veillard.com>
78718 -
78719 - * relaxng.c: fixed a bug exposed by Rob Richards in the mailing-list
78720 - * result//compare0* test//compare0*: added the regression test in
78721 - the suite as this went unnoticed !
78722 -
78723 -Wed Jun 9 11:07:42 PDT 2005 William Brack <wbrack@mmm.com.hk>
78724 -
78725 - * pattern.c, xpath.c, include/libxml/pattern.h: Further
78726 - enhancement for XPath streaming, consolidated with
78727 - schemas usage of pattern.c. Added a new enum
78728 - xmlPatternFlags.
78729 - * doc/*, testapi.c, elfgcchack.h: updated to reflect new
78730 - enum.
78731 - * test/XPath/tests/mixedpat, test/XPath/docs/mixed,
78732 - result/XPath/mixedpat: added regression test for problems
78733 - reported in bug306348
78734 -
78735 -Thu Jun 9 16:51:31 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78736 -
78737 - * xmlschemastypes.c: Changed non-prefixed QNames to be bound to a
78738 - default namespace if existent.
78739 -
78740 -Thu Jun 9 15:11:38 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78741 -
78742 - * xmlschemastypes.c: Fixed a bug which I invented: hexBinary's string
78743 - values were not duplicated corrently when creating a computed value
78744 - in xmlSchemaValAtomicType.
78745 -
78746 -Thu Jun 9 13:20:57 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78747 -
78748 - * xmlschemas.c result/schemas/include1_0_0.err:
78749 - Fixed an attribute fixed/default value constraint error.
78750 -
78751 -Thu Jun 9 12:51:23 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78752 -
78753 - * result/schemas/*: Adapted regression test results.
78754 -
78755 -Thu Jun 9 12:22:45 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78756 -
78757 - * xmlschemas.c xmlschemastypes.c include/libxml/schemasInternals.h
78758 - include/libxml/xmlschemastypes.h: Changed the validation process
78759 - to be able to work in streaming mode. Some datatype fixes,
78760 - especially for list and union types. Due to the changes the
78761 - error report output has changed in most cases. Initial migration to
78762 - functions usable by both, the parser and the validator. This should
78763 - ease a yet-to-come XS construction API in the long term as well.
78764 -
78765 -Thu Jun 9 10:16:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
78766 -
78767 - * parser.c: applied patch from Malcolm Rowe to avoid namespace
78768 - troubles on rollback parsing of elements start #304761
78769 - * test/nsclean.xml result/noent/nsclean.xml result/nsclean.xml*:
78770 - added it to the regression tests.
78771 -
78772 -Thu Jun 9 00:33:50 CEST 2005 Daniel Veillard <daniel@veillard.com>
78773 -
78774 - * parser.c include/libxml/xmlerror.h: applied patch from Rob Richards
78775 - for xml:space and xml:lang handling with SAX2 api.
78776 -
78777 -Wed Jun 8 19:41:38 CEST 2005 Daniel Veillard <daniel@veillard.com>
78778 -
78779 - * globals.c: applied patch from Morten Welinder, closing bug #306901
78780 - on compiling subsets of the library
78781 -
78782 -Wed Jun 8 19:11:42 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78783 -
78784 - * xstc/Makefile.am xstc.py xstc-to-python.xsl: Adapted the
78785 - XS tests to use the new release of tests and test-definitions.
78786 -
78787 -2005-06-07 Aleksey Sanin <aleksey@aleksey.com>
78788 -
78789 - * c14n.c: fix rendering of attributes when parent node
78790 - is not in the node set
78791 -
78792 -2005-06-06 Aleksey Sanin <aleksey@aleksey.com>
78793 -
78794 - * c14n.c: fixed xml attributes processing bug in exc c14n
78795 - * xmllint.c: added --exc-c14n command line option
78796 -
78797 -Mon Jun 6 06:43:33 PDT 2005 William Brack <wbrack@mmm.com.hk>
78798 -
78799 - * xpath.c, pattern.c: Enhanced xmlXPathRunStreamEval, fixed
78800 - handling of depth/level for cases like union operator
78801 - (bug #306348 reported by Bob Stayton). Also enhanced
78802 - several comments throughout pattern.c.
78803 - * doc/apibuild.py: fixed problem in handling of
78804 - 'signed' declaration. Rebuilt the docs.
78805 -
78806 -Tue May 31 20:35:27 PDT 2005 William Brack <wbrack@mmm.com.hk>
78807 -
78808 - * xinclude.c: Enhanced handling of xml:base for included
78809 - elements, fixing bugs 169209 and 302353.
78810 -
78811 -Wed May 25 18:59:53 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78812 -
78813 - * xmlschemas.c: Fixed facet errors to be channelled back for
78814 - union type members; facet-validation will stop now on the
78815 - first error. Reported by GUY Fabrice to the mailing-list.
78816 - * xmlschemastypes.c: Changed to ignore lengh-related facet
78817 - validation for QNames and NOTATIONs as proposed by the
78818 - schema people.
78819 - * test/schemas/union2* result/schemas/union2*: Added
78820 - regression tests for union types (by GUY Fabrice).
78821 -
78822 -Fri May 20 20:48:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
78823 -
78824 - * xmlsave.c: applied patch from Mark Vakoc fixing saving of
78825 - CDATA with NULL content.
78826 -
78827 -Thu May 12 15:14:26 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78828 -
78829 - * xmlschemastypes.c: Changed the VALID_TZO macro to restrict
78830 - the timezone to -840 to 840.
78831 -
78832 -Thu May 12 15:05:11 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78833 -
78834 - * xmlschemastypes.c: Applied patch from Steve Nairn (bug #303670)
78835 - for "signed int" of the date-time timezone field. Silenced
78836 - a warning.
78837 -
78838 -Wed May 11 20:04:09 CEST 2005 Daniel Veillard <daniel@veillard.com>
78839 -
78840 - * tree.c: applied patch for replaceNode from Brent Hendricks
78841 -
78842 -Tue May 10 17:27:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
78843 -
78844 - * tree.c: fixed bug #303682 of a leak reported by Malcolm Rowe
78845 -
78846 -Tue May 10 11:50:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
78847 -
78848 - * testapi.c: applied patch from Steve Nairn tof fix the compilation
78849 - problem exposed in bug #303640
78850 -
78851 -Tue May 10 11:11:26 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78852 -
78853 - * test/schemas/bug303566_1* result/schemas/bug303566_1_1*:
78854 - Added regression a test provided by Heiko Oberdiek (bug #303566).
78855 -
78856 -Mon May 9 17:56:58 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78857 -
78858 - * pattern.c: Changed the XPath "." to resolve only on the first
78859 - level for XML Schema IDCs (bug #303566 reported by Heiko Oberdiek).
78860 - This should not affect pattern-like resolution on every level.
78861 -
78862 -Sun May 8 13:35:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
78863 -
78864 - * xmlmemory.c: fixed #169630 segfault in xmlMemDisplay
78865 -
78866 -Fri May 6 13:40:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
78867 -
78868 - * nanoftp.c: fixing bug #303068 increasing the nanoftp buffer.
78869 - * doc/apibuild.py: fixed __attribute() parsing problem
78870 - * doc/* testapi.c: regenerated the descriptions and docs.
78871 -
78872 -Wed May 4 11:16:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
78873 -
78874 - * Makefile.am configure.in threads.c: on linux/gcc use weak definitions
78875 - to avoid linking with pthread library on non-threaded environments.
78876 - * xpath.c: applied patch from Mark Vakoc w.r.t. a buggy namespace
78877 - list allocation.
78878 -
78879 -Fri Apr 29 11:27:37 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78880 -
78881 - * parser.c: Fixed a test for duplicate attributes: Non-prefixed
78882 - attributes were treated as being bound to the default namespace.
78883 -
78884 -Tue Apr 19 17:51:32 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78885 -
78886 - * xmlschemastypes.c: Fixed date-time related validation
78887 - (reported by David Crossley, bug #300576).
78888 -
78889 -Tue Apr 19 16:55:40 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78890 -
78891 - * xmlschemas.c xmlregexp.c: Removed 5 unnecessary
78892 - dereferences (reported by Andriy, bug #301074).
78893 -
78894 -Tue Apr 19 22:33:18 HKT 2005 William Brack <wbrack@mmm.com.hk>
78895 -
78896 - * xpath.c: Added some code to avoid integer overflow for
78897 - ceil, floor and round functions (bug 301162)
78898 -
78899 -Tue Apr 19 13:21:54 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78900 -
78901 - * xmlschemas.c: Removed workaround for bug #172215, since it
78902 - does more harm in some scenarios. Added some of the
78903 - "Particle Restriction OK" constraints - not yet enabled.
78904 -
78905 -Mon Apr 18 13:02:55 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78906 -
78907 - * result/schemas/changelog093*: Added test results.
78908 -
78909 -Mon Apr 18 12:42:14 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78910 -
78911 - * xmlschemas.c: Added output of canonical values in
78912 - identity-constraint error messages.
78913 - * xmlschemastypes.c include/libxml/xmlschemastypes.h:
78914 - Added xmlSchemaGetCanonValueWhtsp() to the API.
78915 - Further enhancement of the canonical value
78916 - conversion.
78917 - * test/schemas/changelog093_0.*: Added test with an XSD
78918 - submitted by Randy J. Ray.
78919 -
78920 -Fri Apr 15 09:33:21 HKT 2005 William Brack <wbrack@mmm.com.hk>
78921 -
78922 - * valid.c: Applied Daniel's fix for memory leak in dtd
78923 - prefix (bug 300550).
78924 - * xpath.c: minor change to comment only
78925 -
78926 -Thu Apr 14 20:52:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
78927 -
78928 - * xmlmemory.c: added the call to the breakpoint routine
78929 - when a monitored block is reallocated or freed
78930 -
78931 -Wed Apr 13 05:55:51 CEST 2005 Daniel Veillard <daniel@veillard.com>
78932 -
78933 - * nanohttp.c: applied patch from Aron Stansvik for bug #172525
78934 - about HTTP query string parameter being lost
78935 -
78936 -Tue Apr 12 04:03:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
78937 -
78938 - * python/libxml.c python/libxml.py: applied patch from Brent Hendricks
78939 - adding namespace removal at the python level #300209
78940 - * python/tests/Makefile.am python/tests/nsdel.py: added the regression
78941 - test
78942 -
78943 -Sun Apr 10 09:03:22 HKT 2005 William Brack <wbrack@mmm.com.hk>
78944 -
78945 - * xpath.c: fixed several places where memory cleanup was not
78946 - properly done after an error was detected (problem was
78947 - reported on the mailing list by Pawel Palucha)
78948 -
78949 -Fri Apr 8 21:58:04 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78950 -
78951 - * xmlschemas.c: Added substitution group constraints; changed
78952 - the build of the pre-computed substitution groups. Channeled
78953 - errors during xsi assembling of schemas to the validation
78954 - context. Fixed a big memory leak, which occurred when using
78955 - IDCs: the precomputed value of attributes was not freed if
78956 - the attribute did not resolve to an IDC field (discovered
78957 - with the help of Randy J. Ray's schema, posted to the
78958 - xmlschema-dev maling list).
78959 -
78960 -Fri Apr 8 13:22:01 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78961 -
78962 - * xmlschemas.c: Added "Particle correct 2" to parsing of model groups.
78963 - Added handling substitution groups inside <choice> and <sequence>;
78964 - for <all> this is not supported yet. Changed circular checks for
78965 - model groups definitions. "memberTypes" are processed at different
78966 - levels now: component resolution first, construction later; this
78967 - goes hand in hand with a global change to handle component
78968 - resolution in a distinct phase. Fixed invalid default values for
78969 - elements to mark the schema as invalid; this just resulted in an
78970 - error report previously, but the schema was handled as valid.
78971 - Separated the assignment of the model groups to referencing
78972 - model group definition references (i.e. particles); this was
78973 - needed to perform the circularity check for model group definitions.
78974 - Added "Element Declaration Properties Correct (e-props-correct)"
78975 - constraints. Separated component resolution for simple/complex
78976 - types.
78977 - * include/libxml/schemasInternals.h: Added a flag for substitution
78978 - group heads.
78979 -
78980 -Wed Apr 6 23:14:03 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com>
78981 -
78982 - * win32/Makefile.*: make install cleanup
78983 -
78984 -Wed Apr 6 22:42:23 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com>
78985 -
78986 - * win32/Makefile.mingw: fixed mingw compilation
78987 - * testModule.c: removed mingw warnings
78988 -
78989 -Wed Apr 6 21:59:11 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com>
78990 -
78991 - * .cvsignore: added Eclipse project files to ignore list
78992 -
78993 -Wed Apr 6 16:08:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
78994 -
78995 - * xpath.c: fixed the bug in lang() as raised by Elliotte Rusty Harold
78996 - * result/XPath/tests/langsimple test/XPath/tests/langsimple
78997 - test/XPath/docs/lang: added a regression test
78998 -
78999 -Tue Apr 5 23:48:35 CEST 2005 Daniel Veillard <daniel@veillard.com>
79000 -
79001 - * nanoftp.c: applied fix from Rob Richards to compile on Windows.
79002 -
79003 -Tue Apr 5 17:02:58 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79004 -
79005 - * xmlschemas.c: Added "Type Derivation OK (Complex)" constraints
79006 - and anchored them in the "Element Locally Valid (Element)"
79007 - constraints. This restricts the type substitution via "xsi:type".
79008 -
79009 -Tue Apr 5 13:10:06 CEST 2005 Daniel Veillard <daniel@veillard.com>
79010 -
79011 - * xmlschemas.c: patch from Matthew Burgess to improve some schemas
79012 - facets validation messages.
79013 -
79014 -Sat Apr 2 12:48:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
79015 -
79016 - * doc/* configure.in NEWS: preparing release 2.6.19, updated docs and
79017 - rebuilding.
79018 -
79019 -Sat Apr 2 13:27:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
79020 -
79021 - * xstc/Makefile.am: integrated fixup-tests.py
79022 -
79023 -Fri Apr 1 19:14:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
79024 -
79025 - * xmlschemastypes.c: fixed a lack of comment and missing test for
79026 - a pointer in the API.
79027 -
79028 -Fri Apr 1 17:54:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79029 -
79030 - * xstc/fixup-tests.py: A tiny script to fixup some of the schema
79031 - files used for the tests.
79032 -
79033 -Fri Apr 1 17:33:50 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79034 -
79035 - * xmlschemas.c include/libxml/schemasInternals.h
79036 - result/schemas/src-element2-*.err result/schemas/element-*.err:
79037 - Committing again, since the CVS server aborted.
79038 -
79039 -Fri Apr 1 15:29:27 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79040 -
79041 - * xmlschemastypes.c: Corrected 'length' facet validation for
79042 - QNames and notations. Corrected xmlSchemaGetCanonValue: some
79043 - data types did not return a value if already in normalized
79044 - form.
79045 - * xmlschemas.c include/libxml/schemasInternals.h:
79046 - Eliminated creation of structs for <restriction>, <extension>,
79047 - <simpleContent>, <complexContent>, <list> and <union>: the
79048 - information is now set directly on the corresponding simple/
79049 - complex type. Added some more complex type constraints.
79050 - Added facet derivation constraints. Introduced "particle"
79051 - components, which seem to be really needed if applying
79052 - constraints. Corrected/change some of the parsing functions.
79053 - This is all a bit scary, since a significant change to the code.
79054 - * result/schemas/src-element2-*.err result/schemas/element-*.err:
79055 - Adapted regression test results.
79056 -
79057 -Fri Apr 1 16:07:59 CEST 2005 Daniel Veillard <daniel@veillard.com>
79058 -
79059 - * doc/apibuild.py doc/elfgcchack.xsl: revamped the elfgcchack.h
79060 - format to cope with gcc4 change of aliasing allowed scopes, had
79061 - to add extra information to doc/libxml2-api.xml to separate
79062 - the header from the c module source.
79063 - * *.c: updated all c library files to add a #define bottom_xxx
79064 - and reimport elfgcchack.h thereafter, and a bit of cleanups.
79065 - * doc//* testapi.c: regenerated when rebuilding the API
79066 -
79067 -Thu Mar 31 17:20:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
79068 -
79069 - * xmlsave.c: fixed bug reported by Petr Pajas, in the absence of
79070 - encoding UTF-8 should really be assumed. This may break if
79071 - the HTTP headers indicates for example ISO-8859-1 since this
79072 - then becomes a well formedness error.
79073 -
79074 -Thu Mar 31 16:57:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
79075 -
79076 - * SAX.c: fixed #172260 redundant assignment.
79077 - * parser.c include/libxml/parser.h: fixed xmlSAXParseDoc() and
79078 - xmlParseDoc() signatures #172257.
79079 -
79080 -Thu Mar 31 16:11:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
79081 -
79082 - * parser.c: fix potential crash if ctxt->sax->ignorableWhitespace
79083 - is NULL as reported by bug #172255
79084 -
79085 -Thu Mar 31 15:36:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
79086 -
79087 - * relaxng.c: fixed a problem in Relax-NG validation #159968
79088 - * test/relaxng/list.* result/relaxng/list_*: added the test
79089 - to the regression suite
79090 -
79091 -Thu Mar 31 13:06:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
79092 -
79093 - * python/libxml.c: fixed bug #168504
79094 -
79095 -Thu Mar 31 12:22:54 CEST 2005 Daniel Veillard <daniel@veillard.com>
79096 -
79097 - * config.h.in configure.in nanoftp.c nanohttp.c xmllint.c
79098 - macos/src/config-mac.h: use XML_SOCKLEN_T instead of SOCKLEN_T
79099 - since apparently IBM can't avoid breaking common defines #166922
79100 -
79101 -Thu Mar 31 10:41:45 CEST 2005 Daniel Veillard <daniel@veillard.com>
79102 -
79103 - * encoding.c: fix unitinialized variable in not frequently used
79104 - code bug #172182
79105 -
79106 -Thu Mar 31 00:45:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
79107 -
79108 - * python/generator.py python/libxml.py: another patch from Brent
79109 - Hendricks to add new handlers with the various validity contexts
79110 - * python/tests/Makefile.am python/tests/validDTD.py
79111 - python/tests/validRNG.py python/tests/validSchemas.py: also
79112 - added the regression tests he provided
79113 -
79114 -Wed Mar 30 09:39:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
79115 -
79116 - * python/generator.py python/libxml.c: applied patch from Brent
79117 - Hendricks to avoid leak in python bindings when using schemas
79118 - error handlers.
79119 -
79120 -Tue Mar 29 22:29:28 CEST 2005 Daniel Veillard <daniel@veillard.com>
79121 -
79122 - * HTMLtree.c: fixing bug 168196, <a name=""> must be URI escaped too
79123 -
79124 -Sun Mar 27 13:24:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
79125 -
79126 - * tree.c: cleanup of the Prop related functions and xmlNewNodeEatName
79127 - by Rob Richards
79128 -
79129 -Thu Mar 24 19:01:22 PST 2005 William Brack <wbrack@mmm.com.hk>
79130 -
79131 - * gentest.py, testapi.c: fixed problem with 'minimal library'
79132 - compilation (LIBXML_PATTERN_ENABLED not properly checked) reported
79133 - by Greg Morgan
79134 -
79135 -Thu Mar 24 12:01:30 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79136 -
79137 - * xmlschemas.c: Fixed call to a facet error report: the type of
79138 - the error was wrong, resulting in a segfault (bug #171220, reported
79139 - by GUY Fabrice).
79140 -
79141 -Mon Mar 21 22:58:37 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79142 -
79143 - * xmlschemas.c: Removed a stupid bug in xmlSchemaValidateAttributes,
79144 - failing to build a linked list correctly (bug #169898, reported
79145 - by bing song, hmm...).
79146 -
79147 -Mon Mar 21 21:09:07 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79148 -
79149 - * xmlschemas.c: Fixed a segfault, which occurred during bubbling
79150 - of IDC nodes (bug #170779 and #170778, reported by GUY Fabrice):
79151 - a variable was missed to be reset in a loop. Deactivated bubbling,
79152 - if not referenced by a keyref.
79153 -
79154 -Sun Mar 20 11:13:02 PST 2005 Aleksey Sanin <aleksey@aleksey.com>
79155 -
79156 - * c14n.c include/libxml/xmlerror.h: special case "DAV:" namespace
79157 - in c14n relative namespaces check and add structured error messages
79158 - to c14n code
79159 -
79160 -Thu Mar 17 12:55:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79161 -
79162 - * xmlschemas.c: Removed inheritance of "mixed" content type for
79163 - short-hand restrictions of "anyType" (reported by Guy Fabrice
79164 - to the mailing list). Added the namespace conversion (chameleon
79165 - includes) for the base type reference of <restriction> and
79166 - <extension>.
79167 - * test/schemas/bug152470_1.xsd: Adapted due to the above change
79168 - of "mixed" inheritance.
79169 -
79170 -Thu Mar 17 11:03:59 CET 2005 Daniel Veillard <daniel@veillard.com>
79171 -
79172 - * xmlschemas.c: fixed a = -> == error pointed by GUY Fabrice
79173 -
79174 -Wed Mar 16 22:53:53 CET 2005 Daniel Veillard <daniel@veillard.com>
79175 -
79176 - * xmlschemas.c: more debug messages from Matthew Burgess
79177 - * xmlschemastypes.c: xmlSchemaValidateLengthFacet API missing check.
79178 -
79179 -Wed Mar 16 17:37:04 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79180 -
79181 - * xmlschemastypes.c: Aaaannnd putting back the previous changes done
79182 - by Daniel, which I overwrote with the previous commit.
79183 -
79184 -Wed Mar 16 17:20:25 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79185 -
79186 - * xmlschemas.c xmlschemastypes.c include/libxml/xmlschemastypes.h:
79187 - Hopefully finished validation against facets to use the normalized
79188 - value of both, the facets and instance values. Added
79189 - xmlSchemaValidateLengthFacetWhtsp(), xmlSchemaValidateFacetWhtsp()
79190 - and xmlSchemaGetValType() to the schema API.
79191 -
79192 -Wed Mar 16 13:55:31 CET 2005 Daniel Veillard <daniel@veillard.com>
79193 -
79194 - * libxml.spec.in: do not package .la files
79195 - * xmllint.c: applied patch from Gerry Murphy for xmllint return code
79196 - * xmlschemastypes.c: fixed a couple of missing tests of parameters
79197 - at public API entry points.
79198 -
79199 -Tue Mar 15 23:31:14 HKT 2005 William Brack <wbrack@mmm.com.hk>
79200 -
79201 - * xmlschemastypes.c: a couple of more changes to various
79202 - decimal-handling routines. Fixes python some problems
79203 - turned up by the python tests.
79204 - * Makefile.am: change SchemasPythonTests message to warn
79205 - that there are 10 'expected' errors (rather than 6) since
79206 - we now reject a '+' sign on an unsigned.
79207 -
79208 -Tue Mar 15 15:43:27 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79209 -
79210 - * xmlschemastypes.c xmlschemastypes.h: In preparation to use
79211 - normalized values of facets during validation: changed the
79212 - arguments of some string comparison functions; added a static
79213 - xmlSchemaValidateFacetInternal() with more arguments to be
79214 - more flexible. Prepared XML_SCHEMA_FACET_ENUMERATION validation
79215 - to use the comparison functions. Fixed some assignments in
79216 - xmlSchemaValAtomicType(): total digit count, lo, mi, hi.
79217 -
79218 -Sun Mar 13 19:32:03 CET 2005 Daniel Veillard <daniel@veillard.com>
79219 -
79220 - * NEWS configure.in testapi.c doc/*: preparing release of 2.6.18
79221 - updated docs and rebuilt
79222 - * libxml.spec.in: reactivated gcc profiling for gcc >= 4.0.0
79223 -
79224 -Sat Mar 12 19:50:22 CET 2005 Daniel Veillard <daniel@veillard.com>
79225 -
79226 - * encoding.c: removed a static buffer in xmlByteConsumed(),
79227 - as pointed by Ben Maurer, fixes #170086
79228 - * xmlschemas.c: remove a potentially uninitialized pointer warning
79229 -
79230 -Fri Mar 11 23:53:13 HKT 2005 William Brack <wbrack@mmm.com.hk>
79231 -
79232 - * xmlschemastypes.c: enhanced the parsing of XML_SCHEMAS_DECIMAL
79233 - and much of the routine xmlSchemaCompareDecimals. The
79234 - changes were necessary to fix a problem reported on the
79235 - mailing list by John Hockaday.
79236 -
79237 -Fri Mar 11 13:22:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79238 -
79239 - * xmlschemas.c: The schema parser will stop if components could
79240 - not be resolved. This is not conforming to the spec but for now
79241 - will avoid internal errors during type fixup and content model
79242 - creation. Restructured inclusion/import of schemata: this avoids
79243 - duplicate, self and circular inclusion. Chameleon includes are
79244 - still workarounded. Added restriction to disallow references to
79245 - non-imported namespaces. Corrected parsing of <group>.
79246 - * result/schemas/bug167754_0_0*: Added a missing test result.
79247 -
79248 -Thu Mar 10 16:02:17 CET 2005 Daniel Veillard <daniel@veillard.com>
79249 -
79250 - * doc/xml.html doc/encoding.html: Enriched encoding.html with more
79251 - link and foreword warning to avoid problem with ignorant
79252 - programmers, c.f #169721
79253 -
79254 -Thu Mar 10 15:01:34 CET 2005 Daniel Veillard <daniel@veillard.com>
79255 -
79256 - * python/tests/Makefile.am python/tests/readernext.py: added
79257 - a regression test from Rob Richards for the previous bug
79258 -
79259 -Thu Mar 10 13:22:36 CET 2005 Daniel Veillard <daniel@veillard.com>
79260 -
79261 - * xmlreader.c: applied fix for xmlTextReaderNext() bug from
79262 - Rob Richards
79263 -
79264 -Thu Mar 10 11:35:57 CET 2005 Daniel Veillard <daniel@veillard.com>
79265 -
79266 - * xmlmodule.c: second patch from Rick Jones, portability fix for
79267 - HP-UX
79268 - * doc/examples/xpath1.c doc/examples/xpath2.c: first fix from Rick Jones
79269 - to avoid warnings.
79270 -
79271 -Thu Mar 10 10:20:23 CET 2005 Daniel Veillard <daniel@veillard.com>
79272 -
79273 - * include/libxml/hash.h libxml.h libxml.spec.in: some gcc4 portability
79274 - patches, including a serious aliasing bug exposed in s390
79275 - when trying to convert data pointer to code pointer.
79276 -
79277 -Mon Mar 7 18:34:00 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79278 -
79279 - * xmlschemas.c: Tiny restructuring of the validation start-up
79280 - functions. Added cleanup of the validation context at the
79281 - end of validation. This takes care of the validation context
79282 - being reused.
79283 -
79284 -Mon Mar 7 12:12:01 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79285 -
79286 - * xmlschemastypes.c: Tiny changes in the comparison functions
79287 - I forgot to commit last time.
79288 -
79289 -Fri Mar 4 22:51:42 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79290 -
79291 - * xmlschemas.c: Added IDC validation of anySimpleType attribute
79292 - values; anyway the IDC key comparison is restricted to
79293 - anySimpleType <--> string based types. For other types we
79294 - would possibly need the canonical lexical representation of
79295 - them; this sounds not performant, since we would need to
79296 - build such a representation each time we want to compare against
79297 - anySimpleType. TODO: think about buffering the canonical values
79298 - somewhere. Fixed error reports for default attributes to work
79299 - without a node being specified. This all and the enabling of IDC
79300 - validation fixes bug #165346 (reported by Benoit Gr?goire - could
79301 - not read his last name correctly from bugzilla).
79302 -
79303 -Fri Mar 4 18:57:44 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79304 -
79305 - * xmlschemas.c: Enabled IDC parsing and validation.
79306 - * xmlschemastypes.c include/libxml/xmlschemastypes.h:
79307 - Added xmlSchemaCopyValue to the API; this was done due to
79308 - validation of default attributes against IDCs: since IDC keys
79309 - consume the precomputed value, one needs a copy.
79310 - * pattern.c: Enabled IDC support; this is currently done
79311 - via calling xmlPatterncompile with a flag arg of 1.
79312 -
79313 -Wed Mar 2 11:45:18 CET 2005 Daniel Veillard <daniel@veillard.com>
79314 -
79315 - * Makefile.am doc/examples/Makefile.am python/tests/Makefile.am
79316 - xstc/Makefile.am: try to fix a problem with valgrind.
79317 - * python/generator.py python/libxml.c python/tests/Makefile.am
79318 - python/tests/tstmem.py: applied memory leak fix from Brent Hendricks
79319 - c.f. bug #165349
79320 -
79321 -Mon Feb 28 11:18:24 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79322 -
79323 - * tree.c: Changed xmlSearchNsByHref to call xmlNsInScope with
79324 - the prefix instead of the namespace name.
79325 - * test/schemas/annot-err_0.xsd test/schemas/element-err_0.xsd:
79326 - Adapted invalid values of the "id" attribute, since they are
79327 - validated now.
79328 -
79329 -Fri Feb 25 08:31:16 CET 2005 Daniel Veillard <daniel@veillard.com>
79330 -
79331 - * threads.c: new version with fixes from Rob Richards
79332 -
79333 -Thu Feb 24 16:37:51 CET 2005 Daniel Veillard <daniel@veillard.com>
79334 -
79335 - * threads.c: applied patch from Rich Salz for multithreading on
79336 - Windows.
79337 -
79338 -Wed Feb 23 15:04:46 CET 2005 Daniel Veillard <daniel@veillard.com>
79339 -
79340 - * xmlwriter.c: applied a patch from Rob Richards fixing a couple
79341 - of bugs in the writer
79342 -
79343 -Mon Feb 21 21:51:03 HKT 2005 William Brack <wbrack@mmm.com.hk>
79344 -
79345 - * xmlsave.c: fixed problem when XMLLINT_INDENT was empty (bug 168033).
79346 - * xpath.c: fixed compilation warning, no change to logic.
79347 - * xmlschemastypes.c: fixed compilation warning, no change to logic.
79348 -
79349 -Mon Feb 21 14:48:27 CET 2005 Daniel Veillard <daniel@veillard.com>
79350 -
79351 - * xmlwriter.c: applied patch from Rob Richards to fix a problem with
79352 - xmlTextWriterStartAttributeNS
79353 -
79354 -Mon Feb 21 11:41:41 CET 2005 Daniel Veillard <daniel@veillard.com>
79355 -
79356 - * pattern.c xpath.c: fixed remaining known bugs in the XPath streaming,
79357 - and switched XPath to use it by default when possible
79358 -
79359 -Sat Feb 19 19:25:14 CET 2005 Daniel Veillard <daniel@veillard.com>
79360 -
79361 - * xmlschemastypes.c: a bit of cleanup
79362 - * elfgcchack.h testapi.c doc/*: rebuilt the API the tests and
79363 - the documentation as a result.
79364 -
79365 -Fri Feb 18 20:34:03 CET 2005 Daniel Veillard <daniel@veillard.com>
79366 -
79367 - * xmlreader.c include/libxml/xmlreader.h: applied patch from
79368 - Aron Stansvik to add xmlTextReaderByteConsumed()
79369 - * testReader.c: added a test option
79370 - * xmlschemastypes.c: fix a lack of pointer checking in APIs
79371 -
79372 -Fri Feb 18 12:41:10 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79373 -
79374 - * test/schemas/bug167754_0*: Added the regression test of Frans
79375 - Englich for bug #167754.
79376 -
79377 -Fri Feb 18 12:31:49 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79378 -
79379 - * xmlschemas.c: Started support for IDC resolution to default
79380 - attributes. If building the content model for <all>: ensured
79381 - to put element declarations and not the particles into the
79382 - content model automaton (this was bug #167754, reported by
79383 - Frans Englich).
79384 -
79385 -Thu Feb 17 22:31:58 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79386 -
79387 - * pattern.c pattern.h: Some experimental addition for parsing
79388 - of expressions and streamable validation.
79389 - Added xmlStreamPushAttr to the API.
79390 -
79391 -Thu Feb 17 19:57:35 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79392 -
79393 - * xmlschemas.c: Added validation for the attribute "id" in the
79394 - schemata; doing this needed error report fixes for notations,
79395 - facets and group. Changed NOTATION validation to work with the
79396 - declared NOTATIONs in the schema; this does have no impact on
79397 - the validation via the relaxng module.
79398 - * xmlschemastypes.c include/libxml/xmlschemastypes.h:
79399 - Added xmlSchemaNewNOTATIONValue to the API to be able to do
79400 - the NOTATION validation described above.
79401 - * test/schemas/element-err_0.xsd test/schemas/annot-err_0.xsd:
79402 - Fixed the values of the "id" attributes, which were not validated
79403 - previously.
79404 -
79405 -Thu Feb 17 12:03:46 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79406 -
79407 - * xmlschemas.c: Fixed comparison for default/fixed attribute
79408 - values, if the type was 'xsd:string'. Changed the comparison
79409 - for IDCs to use the whitespace aware comparison function.
79410 - * xmlschemastypes.c include/libxml/xmlschemastypes.h:
79411 - Added xmlSchemaGetCanonValue, xmlSchemaNewStringValue and
79412 - xmlSchemaCompareValuesWhtsp to the API. Added functions
79413 - to compare strings with whitespace combinations of "preserve",
79414 - "replace" and "collapse".
79415 -
79416 -Wed Feb 16 13:24:35 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79417 -
79418 - * xmlschemas.c: Further work on IDCs, especially evaluation for
79419 - attribute nodes.
79420 -
79421 -Wed Feb 16 01:19:27 CET 2005 Daniel Veillard <daniel@veillard.com>
79422 -
79423 - * encoding.c: fix the comment to describe the real return values
79424 - * pattern.c xpath.c include/libxml/pattern.h: lot of work on
79425 - the patterns, pluggin in the XPath default evaluation, but
79426 - disabled right now because it's not yet good enough for XSLT.
79427 - pattern.h streaming API are likely to be changed to handle
79428 - relative and absolute paths in the same expression.
79429 -
79430 -Tue Feb 15 15:33:32 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79431 -
79432 - * xmlschemas.c: Added IDC evaluation for attribute nodes.
79433 - Made 'nil'ed elements work. Added a specific error message
79434 - for 'strict' attribute wildcards.
79435 - * include/libxml/xmlerror.h: Added an error code for
79436 - wildcards.
79437 - * result/schemas/anyAttr-processContents-err1_0_0.err: Adapted.
79438 -
79439 -Sun Feb 13 16:15:03 HKT 2005 William Brack <wbrack@mmm.com.hk>
79440 -
79441 - This change started out as a simple desire to speed up the
79442 - execution time of testapi.c, which was being delayed by
79443 - nameserver requests for non-existent URL's. From there it
79444 - just sort of grew, and grew....
79445 - * nanohttp.c, nanoftp.c: changed the processing of URL's
79446 - to use the uri.c routines instead of custom code.
79447 - * include/libxml/xmlerror.h: added code XML_FTP_URL_SYNTAX
79448 - * uri.c: added accepting ipV6 addresses, in accordance with
79449 - RFC's 2732 and 2373 (TODO: allow ipV4 within ipV6)
79450 - * gentest.py, testapi.c: fixed a few problems with the
79451 - testing of the nanoftp and nanohttp routines.
79452 - * include/libxml/xmlversion.h: minor change to fix a
79453 - warning on the docs generation
79454 - * regenerated the docs
79455 -
79456 -Sat Feb 12 09:07:11 HKT 2005 William Brack <wbrack@mmm.com.hk>
79457 -
79458 - * xinclude.c: fixed xmlXIncludeParseFile to prevent
79459 - overwriting XML_COMPLETE_ATTRS when setting pctxt->loadsubset
79460 - (bug 166199)
79461 - * Makefile.am, python/tests/Makefile.am, xstc/Makefile.am: added
79462 - code to add $(top_builddir)/.libs to LD_LIBRARY_PATH whenever
79463 - PYTHONPATH is set, to assure new libxml2 routines are used.
79464 -
79465 -Fri Feb 11 22:20:41 HKT 2005 William Brack <wbrack@mmm.com.hk>
79466 -
79467 - * parser.c: fixed problem when no initial "chunk" was
79468 - given to xmlCreatePushParser (bug 162613)
79469 -
79470 -Fri Feb 11 18:37:22 HKT 2005 William Brack <wbrack@mmm.com.hk>
79471 -
79472 - * dict.c: fixed compilation warning
79473 - * parser.c: changed xmlWarningMsg so ctxt->errNo is not set
79474 - * xmllint.c: changed to return non-zero status if error
79475 - on xinclude processing
79476 - * xmlsave.c: minor deletion of a redundant condition statement
79477 -
79478 -Wed Feb 9 17:47:40 CET 2005 Daniel Veillard <daniel@veillard.com>
79479 -
79480 - * tree.c: applied patch to xmlSetNsProp from Mike Hommey
79481 -
79482 -Sun Feb 6 00:17:57 CET 2005 Daniel Veillard <daniel@veillard.com>
79483 -
79484 - * pattern.c xmllint.c: fixed implementation for |
79485 - * test/pattern/conj.* result/pattern/conj: added a specific regression
79486 - test
79487 -
79488 -Sat Feb 5 18:36:56 CET 2005 Daniel Veillard <daniel@veillard.com>
79489 -
79490 - * pattern.c: first implementation for | support
79491 -
79492 -Sat Feb 5 14:58:46 CET 2005 Daniel Veillard <daniel@veillard.com>
79493 -
79494 - * pattern.c: fixed the namespaces support
79495 - * tree.c: fixed xmlGetNodePath when namespaces are used
79496 - * result/pattern/multiple result/pattern/namespaces
79497 - test/pattern/multiple.* test/pattern/namespaces.*: added
79498 - more regression tests
79499 -
79500 -Fri Feb 4 18:26:43 CET 2005 Daniel Veillard <daniel@veillard.com>
79501 -
79502 - * xmlschemas.c: fixed one internal function
79503 - * doc/Makefile.am doc/wiki.xsl: applied patch from Joel Reed
79504 - * testapi.c doc/libxml2-api.xml doc/libxml2-refs.xml: regenerated
79505 -
79506 -Fri Feb 4 00:25:43 CET 2005 Daniel Veillard <daniel@veillard.com>
79507 -
79508 - * Makefile.am: use the walker to test the patterns instead of
79509 - the normal reader
79510 - * pattern.c xmllint.c: bug fixes in the train including fixing the
79511 - stupid build break.
79512 -
79513 -Tue Feb 1 18:15:52 CET 2005 Daniel Veillard <daniel@veillard.com>
79514 -
79515 - * pattern.c: more bug fixes for the XPath streaming code.
79516 -
79517 -Mon Jan 31 17:59:24 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79518 -
79519 - * xmlschemas.c: Integrated the streaming pattern from the
79520 - pattern module. Fixed some IDC code bugs. Changed
79521 - fallback for attribute declaration addition to work like for
79522 - element declarations.
79523 -
79524 -Mon Jan 31 01:27:22 CET 2005 Daniel Veillard <daniel@veillard.com>
79525 -
79526 - * pattern.c xmllint.c: bugfixes around the streaming patterns
79527 -
79528 -Sun Jan 30 23:35:19 CET 2005 Daniel Veillard <daniel@veillard.com>
79529 -
79530 - * Makefile.am configure.in result/pattern/simple
79531 - test/pattern/simple.*: added first test for the patterns
79532 - * pattern.c xmllint.c: a few fixes
79533 -
79534 -Sun Jan 30 19:27:23 CET 2005 Daniel Veillard <daniel@veillard.com>
79535 -
79536 - * pattern.c include/libxml/pattern.h xmllint.c: added a
79537 - streaming pattern detector for a subset of XPath, should
79538 - help Kasimier for identity constraints
79539 - * python/generator.py: applied Stéphane Bidoul patch to find
79540 - paths without breaking.
79541 -
79542 -Fri Jan 28 18:53:40 CET 2005 Daniel Veillard <daniel@veillard.com>
79543 -
79544 - * xmlschemas.c: fixed an untested pointer dereference and a & vs &&
79545 -
79546 -Fri Jan 28 18:37:18 CET 2005 Daniel Veillard <daniel@veillard.com>
79547 -
79548 - * xmlreader.c: implementation of xmlTextReaderReadString by
79549 - Bjorn Reese
79550 -
79551 -Fri Jan 28 16:51:47 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79552 -
79553 - * xmlschemas.c: Corrected an ambiguous symbol-space for
79554 - local attribute declarations. IFDEFed more IDC code to
79555 - suppress compiler warnings.
79556 -
79557 -Fri Jan 28 00:57:04 CET 2005 Daniel Veillard <daniel@veillard.com>
79558 -
79559 - * bakefile/Readme.txt bakefile/Bakefiles.bkgen bakefile/libxml2.bkl:
79560 - files for the Bakefile generator for Makefiles from Francesco
79561 - Montorsi
79562 - * win32/configure.js: fixes for Windows compilation with non-default
79563 - flags by Joel Reed
79564 -
79565 -Thu Jan 27 18:23:50 CET 2005 Daniel Veillard <daniel@veillard.com>
79566 -
79567 - * tree.c: fixed xmlCopyDoc to also copy the doc->URL as pointed
79568 - by Martijn Faassen
79569 -
79570 -Thu Jan 27 13:39:04 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79571 -
79572 - * xmlschemas.c include/libxml/schemasInternals.h:
79573 - Added an initial skeleton for indentity-constraints. This is all
79574 - defined out, since not complete, plus it needs support from other
79575 - modules.
79576 - Added mechanism to store element information for the
79577 - ancestor-or-self axis; this is needed for identity-constraints
79578 - and should be helpful for a future streamable validation.
79579 - * include/libxml/xmlerror.h: Added an error code for
79580 - identity-constraints.
79581 -
79582 -Wed Jan 26 01:03:37 CET 2005 Daniel Veillard <daniel@veillard.com>
79583 -
79584 - * gentest.py testapi.c: had to fix generation and rebuild.
79585 - * valid.c: the testapi found a bug in the last code of course !
79586 -
79587 -Wed Jan 26 00:43:05 CET 2005 Daniel Veillard <daniel@veillard.com>
79588 -
79589 - * Makefile.am testapi.c doc/Makefile.am: fixing the way testapi.c
79590 - is generated, fixes bug #161386
79591 - * dict.c: fix a comment typo
79592 - * elfgcchack.h doc/*: regenerated
79593 -
79594 -Tue Jan 25 22:39:33 CET 2005 Daniel Veillard <daniel@veillard.com>
79595 -
79596 - * parser.c: found and fixed 2 problems in the internal subset scanning
79597 - code affecting the push parser (and the reader), fixes #165126
79598 - * test/intsubset2.xml result//intsubset2.xml*: added the test case
79599 - to the regression tests.
79600 -
79601 -Tue Jan 25 01:20:11 CET 2005 Daniel Veillard <daniel@veillard.com>
79602 -
79603 - * testdso.c xmlregexp.c: warning patches from Peter Breitenlohner
79604 - * include/libxml/valid.h valid.c parser.c: serious DTD parsing
79605 - speedups, start to deprecate 3 ElementDef related entry point
79606 - and replace them with better ones.
79607 -
79608 -Mon Jan 24 00:47:41 CET 2005 Daniel Veillard <daniel@veillard.com>
79609 -
79610 - * xmlschemas.c: more hash dictionary interning changes
79611 -
79612 -Sun Jan 23 23:54:39 CET 2005 Daniel Veillard <daniel@veillard.com>
79613 -
79614 - * hash.c include/libxml/hash.h: added xmlHashCreateDict where
79615 - the hash reuses the dictionary for internal strings
79616 - * entities.c valid.c parser.c: reuse that new API, leads to a decent
79617 - speedup when parsing for example DocBook documents.
79618 -
79619 -Sun Jan 23 21:14:20 CET 2005 Daniel Veillard <daniel@veillard.com>
79620 -
79621 - * parser.c: small speedup in skipping blanks characters
79622 - * entities.c: interning the entities strings
79623 -
79624 -Sun Jan 23 18:35:00 CET 2005 Daniel Veillard <daniel@veillard.com>
79625 -
79626 - * parser.c: boosting common comment parsing code, it was really
79627 - slow.
79628 - * test/comment[3-5].xml result//comment[3-5].xml*: added sprecific
79629 - regression tests
79630 -
79631 -Sun Jan 23 01:00:09 CET 2005 Daniel Veillard <daniel@veillard.com>
79632 -
79633 - * parser.c: small optimization back.
79634 -
79635 -Sat Jan 22 00:40:31 CET 2005 Daniel Veillard <daniel@veillard.com>
79636 -