From 6bfa2fd696a306a984b29c6ea11fa66e93e0474c Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 4 Jun 2024 12:48:41 -0400 Subject: changes --- src/ClientUtils.ts | 34 ++++++++++++++++++++++ src/client/apis/gpt/GPT.ts | 5 ++++ src/client/util/CurrentUserUtils.ts | 22 +++++++------- src/client/views/MainView.tsx | 1 + .../views/collections/CollectionCardDeckView.tsx | 21 +++++++++---- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 21 ++++--------- 6 files changed, 72 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index d03ae1486..8e6cd78d0 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -238,6 +238,40 @@ export namespace ClientUtils { return 'rgba(' + col.r + ',' + col.g + ',' + col.b + (col.a !== undefined ? ',' + col.a : '') + ')'; } + export function hexToHsv(hex: string): [number, number, number] { + if (!hex) return [0, 0, 0]; // Default to black if hex is not defined + const r = parseInt(hex.slice(1, 3), 16) / 255; + const g = parseInt(hex.slice(3, 5), 16) / 255; + const b = parseInt(hex.slice(5, 7), 16) / 255; + const max = Math.max(r, g, b), + min = Math.min(r, g, b); + const d = max - min; + let h: number; + const s = max === 0 ? 0 : d / max; + const v = max; + + switch (max) { + case min: + h = 0; + break; + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + default: + h = 0; + break; + } + h /= 6; + return [h, s, v]; + }; + + export function HSLtoRGB(h: number, s: number, l: number) { // Must be fractions of 1 // s /= 100; diff --git a/src/client/apis/gpt/GPT.ts b/src/client/apis/gpt/GPT.ts index 05007960d..5dc818db8 100644 --- a/src/client/apis/gpt/GPT.ts +++ b/src/client/apis/gpt/GPT.ts @@ -70,6 +70,11 @@ const gptAPICall = async (inputTextIn: string, callType: GPTCallType, prompt?: a try { lastCall = inputText; + // const configuration: ClientOptions = { + // apiKey: process.env.OPENAI_KEY, + // dangerouslyAllowBrowser: true, + // }; + const usePrompt = prompt ? opts.prompt + prompt : opts.prompt; const messages: ChatCompletionMessageParam[] = [ { role: 'system', content: usePrompt }, diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index e095bc659..0d241650a 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -667,25 +667,25 @@ pie title Minerals in my tap water } static labelTools(): Button[] { return [ - { title: "AI", icon:"robot", toolTip:"Add AI labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {hidden:`showFreeform ("chat", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("chat"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + { title: "Smart", icon:"robot", toolTip:"Have ChatGPT Label and sort your cards for you!", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {hidden:`showFreeform ("chat", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, { title: "Like", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Likes", icon:"Likes", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, { title: "Star", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Stars", icon:"Stars", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - { title: "Idea", icon:"satellite", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Ideas", icon:"Ideas", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("satellite"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + { title: "Idea", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Ideas", icon:"Ideas", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, ] } static cardGroupTools(icon: string): Button[] { return [ - { title: "1", icon, toolTip:"Click to toggle visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "2", icon, toolTip:"Click to toggle visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "3", icon, toolTip:"Click to toggle visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "4", icon, toolTip:"Click to toggle visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"4", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "5", icon, toolTip:"Click to toggle visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"5", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "6", icon, toolTip:"Click to toggle visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "7", icon, toolTip:"Click to toggle visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "", icon, toolTip:"Click to toggle group 2's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "", icon, toolTip:"Click to toggle group 3's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "", icon, toolTip:"Click to toggle group 4's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"4", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "", icon, toolTip:"Click to toggle group 5's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"5", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "", icon, toolTip:"Click to toggle group 6's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "", icon, toolTip:"Click to toggle group 7's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, ] } static viewTools(): Button[] { diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 31d88fb87..f61c784df 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -548,6 +548,7 @@ export class MainView extends ObservableReactComponent<{}> { fa.faRobot, fa.faSatellite, fa.faStar, + fa.faCloud ] ); } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index de46180e6..0ca3c5a44 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -170,6 +170,8 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ rotate = (amCards: number, index: number) => { + if (amCards ==1) return 0 + const possRotate = -30 + index * (30 / ((amCards - (amCards % 2)) / 2)); const stepMag = Math.abs(-30 + (amCards / 2 - 1) * (30 / ((amCards - (amCards % 2)) / 2))); @@ -242,16 +244,20 @@ export class CollectionCardView extends CollectionSubView() { return [DateCast(docA.author_date)?.date ?? Date.now(), DateCast(docB.author_date)?.date ?? Date.now()]; case cardSortings.Color: - return [DashColor(StrCast(docA.backgroundColor)).hsv().toString(), // If docA.type is undefined, use an empty string - DashColor(StrCast(docB.backgroundColor)).hsv().toString()]; // If docB.type is undefined, use an empty string + return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)) ?? 9999, // If docA.type is undefined, use an empty string + ClientUtils.hexToHsv(StrCast(docB.backgroundColor))] ?? 9999; // If docB.type is undefined, use an empty string case cardSortings.Custom: - return [CollectionCardView.getButtonGroup(this.cardSort_customField, docA)??0, - CollectionCardView.getButtonGroup(this.cardSort_customField, docB)??0]; + return [CollectionCardView.getButtonGroup(this.cardSort_customField, docA)??9999, + CollectionCardView.getButtonGroup(this.cardSort_customField, docB)??9999]; default: return [StrCast(docA.type), // If docA.type is undefined, use an empty string StrCast(docB.type)]; // If docB.type is undefined, use an empty string } // prettier-ignore })(); + console.log(ClientUtils.hexToHsv(StrCast(docA.backgroundColor)) ?? 9999 + "docA col") + console.log(ClientUtils.hexToHsv(StrCast(docB.backgroundColor)) ?? 9999 + "docB col") + + const out = typeA < typeB ? -1 : typeA > typeB ? 1 : 0; return isDesc ? -out : out; // Reverse the sort order if descending is true }); @@ -323,7 +329,7 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ calculateTranslateY = (isHovered: boolean, isSelected: boolean, realIndex: number, amCards: number, calcRowIndex: number) => { - if (isSelected) return 50 * this.fitContentScale; + if (isSelected || amCards == 1) return 50 * this.fitContentScale; const trans = isHovered ? this.translateHover(realIndex) : 0; return trans + this.translateY(amCards, calcRowIndex, realIndex); }; @@ -472,7 +478,7 @@ export class CollectionCardView extends CollectionSubView() { SnappingManager.SetIsResizing(undefined); this._forceChildXf = !this._forceChildXf; }), - 700 + 900 ); }} style={{ @@ -490,6 +496,9 @@ export class CollectionCardView extends CollectionSubView() { ); }); }; + + + render() { return (
{ sortBox = () => ( <>
- {this.heading('SORTING')} - {this.loading ? ( -
-
- - Loading... -
-
- ) : ( + {this.heading('SORTING')} <> - {!this.cardsDoneLoading ? ( + {!this.cardsDoneLoading || this.loading ? (
- Reading Cards... + {this.loading ? Loading... : Reading Cards...}
) : ( @@ -344,10 +336,10 @@ export class GPTPopup extends ObservableReactComponent { color={StrCast(Doc.UserDoc().userVariantColor)} type={Type.TERT} style={{ - width: '90%', // Almost as wide as the container + width: '90%', textAlign: 'center', - color: '#ffffff', // White text - fontSize: '16px', // Adjust font size as needed + color: '#ffffff', + fontSize: '16px', }} />
@@ -363,7 +355,6 @@ export class GPTPopup extends ObservableReactComponent {
)} - )} ); -- cgit v1.2.3-70-g09d2 From d3d2abbb011fe9c2a7d14b2a4b3016d55033aae8 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Thu, 6 Jun 2024 11:33:14 -0400 Subject: hm --- src/client/util/CurrentUserUtils.ts | 51 ++++++++++++++++------ .../views/collections/CollectionCardDeckView.scss | 2 +- .../views/collections/CollectionCardDeckView.tsx | 4 +- src/client/views/global/globalScripts.ts | 42 +++++++++--------- 4 files changed, 63 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 0d241650a..f2ef9b943 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -660,21 +660,32 @@ pie title Minerals in my tap water } static cardTools(): Button[] { return [ - { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { btnList: new List(["Time", "Type", "Color", "ChatGPT", "Custom 1", "Custom 2", "Custom 3" ]), + title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 150, scripts: { script: '{ return showFreeform(value, _readOnly_); }'}}, + // { title: "Font", toolTip: "Font", width: 100, btnType: ButtonType.DropdownList, toolType:"font", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, + // btnList: new List(["Roboto", "Roboto Mono", "Nunito", "Times New Roman", "Arial", "Georgia", "Comic Sans MS", "Tahoma", "Impact", "Crimson Text"]) }, + // { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "1st", icon:"1st", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "2nd", icon:"2nd", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, ] } static labelTools(): Button[] { return [ - { title: "Smart", icon:"robot", toolTip:"Have ChatGPT Label and sort your cards for you!", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {hidden:`showFreeform ("chat", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Smart", icon:"robot", toolTip:"Have ChatGPT Label and sort your cards for you!", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {hidden:`showFreeform ("chat", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - { title: "Like", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Likes", icon:"Likes", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - { title: "Star", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Stars", icon:"Stars", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - { title: "Idea", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Ideas", icon:"Ideas", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "1st", icon:"1st", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "2nd", icon:"2nd", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, ] } static cardGroupTools(icon: string): Button[] { @@ -794,8 +805,22 @@ pie title Minerals in my tap water { title: "Doc", icon: "Doc", toolTip: "Freeform Doc tools", subMenu: CurrentUserUtils.freeTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode, true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available { title: "View", icon: "View", toolTip: "View tools", subMenu: CurrentUserUtils.viewTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available { title: "Stack", icon: "View", toolTip: "Stacking tools", subMenu: CurrentUserUtils.stackTools(), expertMode: false, toolType:CollectionViewType.Stacking, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - { title: "Card", icon: "Sort", toolTip: "Card sort", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - { title: "Label", icon: "Label", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + + + // { title: "SortType", btnList: new List(["Time", "Type", "Color", "ChatGPT", "Custom 1", "Custom 2", "Custom 3" ]), + // toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 100, scripts: { script: '{ return showFreeform(value, _readOnly_); }' }, + // // funcs: {hidden: `!SelectedDocType("card", this.expertMode)`} + // }, + // { title: "Visibility", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Visibility", icon:"Visibility", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Visibility", icon:"Visibility", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Visibility", icon:"Visibility", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`,width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + + { title: "Card", icon: "Card", toolTip: "Card View Tools", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + // { title: "Create", icon: "Create", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available { title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Web is selected { title: "Video", icon: "Video", toolTip: "Video functions", subMenu: CurrentUserUtils.videoTools(), expertMode: false, toolType:DocumentType.VID, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when video is selected { title: "Image", icon: "Image", toolTip: "Image functions", subMenu: CurrentUserUtils.imageTools(), expertMode: false, toolType:DocumentType.IMG, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when image is selected @@ -1109,4 +1134,4 @@ ScriptingGlobals.add(function importDocument() { return CurrentUserUtils.import // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function setInkToolDefaults() { Doc.ActiveTool = InkTool.None; }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function getSharingDoc() { return Doc.SharingDoc() }); +ScriptingGlobals.add(function getSharingDoc() { return Doc.SharingDoc() }); \ No newline at end of file diff --git a/src/client/views/collections/CollectionCardDeckView.scss b/src/client/views/collections/CollectionCardDeckView.scss index a089b248d..8a721a626 100644 --- a/src/client/views/collections/CollectionCardDeckView.scss +++ b/src/client/views/collections/CollectionCardDeckView.scss @@ -28,7 +28,7 @@ // width: 300px; background-color: rgb(218, 218, 218); /* Background color of the container */ border-radius: 50px; /* Rounds the corners of the container */ - transform: translateY(75px); + transform: translateY(25px); // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */ align-items: center; /* Centers buttons vertically */ justify-content: start; /* Centers buttons horizontally */ diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 0ca3c5a44..127c4dc48 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -254,8 +254,8 @@ export class CollectionCardView extends CollectionSubView() { } // prettier-ignore })(); - console.log(ClientUtils.hexToHsv(StrCast(docA.backgroundColor)) ?? 9999 + "docA col") - console.log(ClientUtils.hexToHsv(StrCast(docB.backgroundColor)) ?? 9999 + "docB col") + // console.log(ClientUtils.hexToHsv(StrCast(docA.backgroundColor)) ?? 9999 + "docA col") + // console.log(ClientUtils.hexToHsv(StrCast(docB.backgroundColor)) ?? 9999 + "docB col") const out = typeA < typeB ? -1 : typeA > typeB ? 1 : 0; diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 7730ed385..107e21e08 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -135,10 +135,10 @@ ScriptingGlobals.add(function toggleOverlay(checkResult?: boolean) { }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' | 'clusters' | 'viewAll' | 'fitOnce', checkResult?: boolean, persist?: boolean) { +ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' | 'clusters' | 'viewAll' | 'fitOnce', checkResult?: boolean, persist?: boolean, ) { const selected = DocumentView.SelectedDocs().lastElement(); // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'links' | 'like' | 'star' | 'idea' | 'chat' | '1' | '2' | '3' | '4', + const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | "Time" | "Type"| "Color"| "ChatGPT"| "Custom 1"| "Custom 2"| "Custom 3" , { waitForRender?: boolean; checkResult: (doc: Doc) => any; @@ -173,48 +173,49 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' checkResult: (doc: Doc) => BoolCast(Doc.UserDoc().defaultToFlashcards, false), setDoc: (doc: Doc, dv: DocumentView) => Doc.UserDoc().defaultToFlashcards = !Doc.UserDoc().defaultToFlashcards, }], - ['time', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "time", + ['Time', { + checkResult: (doc: Doc) => {StrCast(doc?.cardSort); + console.log(StrCast(doc?.cardSort + "card sort"))}, setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "time", }], - ['docType', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "type", + ['Type', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort), setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "type", }], - ['color', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "color", + ['Color', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort), setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "color", }], - ['links', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", - setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "links", - }], - ['like', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "like", + // ['links', { + // checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", + // setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "links", + // }], + ['Custom 1', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 1", setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "like"; doc.cardSort_visibleSortGroups = new List(); } }], - ['star', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "star", + ['Custom 2', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 2", setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "star"; doc.cardSort_visibleSortGroups = new List(); } }], - ['idea', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "idea", + ['Custom 3', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 3", setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "idea"; doc.cardSort_visibleSortGroups = new List(); } }], - ['chat', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "chat", + ['ChatGPT', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort_customField), setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "chat"; @@ -233,6 +234,7 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } if (checkResult) { + console.log("HIIIIII") return map.get(attr)?.checkResult(selected); } const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; -- cgit v1.2.3-70-g09d2 From c5b806c3b449cd81aee673a01238c4dae9402cf3 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Thu, 6 Jun 2024 14:59:04 -0400 Subject: lol --- src/client/util/CurrentUserUtils.ts | 46 +++--- src/client/views/global/globalScripts.ts | 182 ++++++++++++++++++--- src/client/views/nodes/FontIconBox/FontIconBox.tsx | 2 +- 3 files changed, 184 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index f2ef9b943..438867eeb 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -660,40 +660,40 @@ pie title Minerals in my tap water } static cardTools(): Button[] { return [ - { btnList: new List(["Time", "Type", "Color", "ChatGPT", "Custom 1", "Custom 2", "Custom 3" ]), - title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 150, scripts: { script: '{ return showFreeform(value, _readOnly_); }'}}, - // { title: "Font", toolTip: "Font", width: 100, btnType: ButtonType.DropdownList, toolType:"font", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, + { btnList: new List(["Time", "Type", "Color", "Chat GPT", "Custom 1", "Custom 2", "Custom 3" ]), + title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 150, scripts: { script: '{ return setCardSort(value, _readOnly_); }'}}, + // { title: "Font", toolTip: "Font", width: 100, btnType: ButtonType.DropdownList, toolType:"font", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, // btnList: new List(["Roboto", "Roboto Mono", "Nunito", "Times New Roman", "Arial", "Georgia", "Comic Sans MS", "Tahoma", "Impact", "Crimson Text"]) }, // { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + { title: "AIs", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "1st", icon:"1st", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + { title: "1st", icon:"Visibility", toolTip:"Filter likes", width: 150, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "2nd", icon:"2nd", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + { title: "2nd", icon:"Visibility", toolTip:"Filter stars", width: 150, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + { title: "3rd", icon:"Visibility", toolTip:"Filter ideas", width: 150, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, ] } - static labelTools(): Button[] { - return [ - // { title: "Smart", icon:"robot", toolTip:"Have ChatGPT Label and sort your cards for you!", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {hidden:`showFreeform ("chat", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "1st", icon:"1st", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "2nd", icon:"2nd", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - ] - } + // static labelTools(): Button[] { + // return [ + // // { title: "Smart", icon:"robot", toolTip:"Have ChatGPT Label and sort your cards for you!", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {hidden:`showFreeform ("chat", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "1st", icon:"1st", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "2nd", icon:"2nd", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // ] + // } static cardGroupTools(icon: string): Button[] { return [ - { title: "", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "", icon, toolTip:"Click to toggle group 2's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "", icon, toolTip:"Click to toggle group 3's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "", icon, toolTip:"Click to toggle group 4's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"4", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Group 1", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Group 2", icon, toolTip:"Click to toggle group 2's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Group 3", icon, toolTip:"Click to toggle group 3's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Group 4", icon, toolTip:"Click to toggle group 4's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"4", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "", icon, toolTip:"Click to toggle group 5's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"5", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "", icon, toolTip:"Click to toggle group 6's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "", icon, toolTip:"Click to toggle group 7's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 107e21e08..0a6f78e2e 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -135,10 +135,10 @@ ScriptingGlobals.add(function toggleOverlay(checkResult?: boolean) { }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' | 'clusters' | 'viewAll' | 'fitOnce', checkResult?: boolean, persist?: boolean, ) { +ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' | 'clusters' | 'viewAll' | 'fitOnce', checkResult?: boolean, persist?: boolean) { const selected = DocumentView.SelectedDocs().lastElement(); // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | "Time" | "Type"| "Color"| "ChatGPT"| "Custom 1"| "Custom 2"| "Custom 3" , + const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'links' | 'like' | 'star' | 'idea' | 'chat' | '1' | '2' | '3' | '4', { waitForRender?: boolean; checkResult: (doc: Doc) => any; @@ -173,49 +173,48 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' checkResult: (doc: Doc) => BoolCast(Doc.UserDoc().defaultToFlashcards, false), setDoc: (doc: Doc, dv: DocumentView) => Doc.UserDoc().defaultToFlashcards = !Doc.UserDoc().defaultToFlashcards, }], - ['Time', { - checkResult: (doc: Doc) => {StrCast(doc?.cardSort); - console.log(StrCast(doc?.cardSort + "card sort"))}, + ['time', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "time", setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "time", }], - ['Type', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort), + ['docType', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "type", setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "type", }], - ['Color', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort), + ['color', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "color", setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "color", }], - // ['links', { - // checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", - // setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "links", - // }], - ['Custom 1', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 1", + ['links', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", + setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "links", + }], + ['like', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "like", setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "like"; doc.cardSort_visibleSortGroups = new List(); } }], - ['Custom 2', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 2", + ['star', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "star", setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "star"; doc.cardSort_visibleSortGroups = new List(); } }], - ['Custom 3', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 3", + ['idea', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "idea", setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "idea"; doc.cardSort_visibleSortGroups = new List(); } }], - ['ChatGPT', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort_customField), + ['chat', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "chat", setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort = "custom"; doc.cardSort_customField = "chat"; @@ -234,7 +233,7 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } if (checkResult) { - console.log("HIIIIII") + // console.log("HIIIIII") return map.get(attr)?.checkResult(selected); } const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; @@ -249,6 +248,144 @@ ScriptingGlobals.add(function cardHasLabel(label: string) { return labelNum < 4 || (selected && DocListCast(selected[Doc.LayoutFieldKey(selected)]).some(doc => doc[StrCast(selected.cardSort_customField)] == labelNum)); }, ''); +// ScriptingGlobals.add(function setCardSort(attr: "Time" | "Type"| "Color"| "ChatGPT"| "Custom 1"| "Custom 2"| "Custom 3", value?: any, checkResult?: boolean) { +// // const editorView = RichTextMenu.Instance?.TextView?.EditorView; +// const selected = DocumentView.SelectedDocs().lastElement(); + +// // prettier-ignore +// const map: Map<"Time" | "Type"| "Color"| "ChatGPT"| "Custom 1"| "Custom 2"| "Custom 3", { checkResult: (doc: Doc) => any; setDoc: (doc: Doc) => void;}> = new Map([ +// ['Time', { + +// checkResult: (doc: Doc) => {StrCast(doc?.cardSort); +// console.log(StrCast(doc?.cardSort + "card sort"))}, +// setDoc: (doc: Doc) => {doc.cardSort = "time" +// console.log("hewwo")} + +// , +// }], +// ['Type', { +// checkResult: (doc: Doc) => StrCast(doc?.cardSort), +// setDoc: (doc: Doc) => doc.cardSort = "type", +// }], +// ['Color', { +// checkResult: (doc: Doc) => StrCast(doc?.cardSort), +// setDoc: (doc: Doc) => doc.cardSort = "color", +// }], +// // ['links', { +// // checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", +// // setDoc: (doc: Doc) => doc.cardSort = "links", +// // }], +// ['Custom 1', { +// checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 1", +// setDoc: (doc: Doc) => { +// doc.cardSort = "custom"; +// doc.cardSort_customField = "like"; +// doc.cardSort_visibleSortGroups = new List(); +// } +// }], +// ['Custom 2', { +// checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 2", +// setDoc: (doc: Doc) => { +// doc.cardSort = "custom"; +// doc.cardSort_customField = "star"; +// doc.cardSort_visibleSortGroups = new List(); +// } +// }], +// ['Custom 3', { +// checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 3", +// setDoc: (doc: Doc) => { +// doc.cardSort = "custom"; +// doc.cardSort_customField = "idea"; +// doc.cardSort_visibleSortGroups = new List(); +// } +// }], +// ['ChatGPT', { +// checkResult: (doc: Doc) => StrCast(doc?.cardSort_customField), +// setDoc: (doc: Doc) => { +// doc.cardSort = "custom"; +// doc.cardSort_customField = "chat"; +// doc.cardSort_visibleSortGroups = new List(); +// }, +// }], +// ]); + +// for (let i = 0; i < 8; i++) { +// map.set((i + 1 + '') as any, { +// checkResult: (doc: Doc) => NumListCast(doc?.cardSort_visibleSortGroups).includes(i), +// setDoc: (doc: Doc) => { +// const list = NumListCast(doc.cardSort_visibleSortGroups); +// doc.cardSort_visibleSortGroups = new List(list.includes(i) ? list.filter(d => d !== i) : [...list, i]); +// }, +// }); +// } + +// if (checkResult) { +// console.log(attr + "attricute") +// console.log(map.get(attr)?.checkResult(selected) + "check result") +// return map.get(attr)?.checkResult(selected); +// } + +// console.log(attr + "attricute lol") + +// // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; +// DocumentView.Selected().map(dv => map.get(attr)?.setDoc(dv.layoutDoc)); +// // setTimeout(() => batch.end(), 100); +// return undefined; + +// // map.get(attr)?.setDoc?.(); +// // return undefined; +// }); + +ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { + // const editorView = RichTextMenu.Instance?.TextView?.EditorView; + const selected = DocumentView.SelectedDocs().lastElement(); + + if (checkResult) { + // console.log(attr + "attricute") + // console.log(map.get(attr)?.checkResult(selected) + "check result") + console.log(StrCast(selected?.cardSort) + "check") + return StrCast(selected?.cardSort); + } + + function docFields(doc: Doc): void { + switch(value){ + case 'Custom 1': + doc.cardSort_customField = "like"; + doc.cardSort_visibleSortGroups = new List(); + break; + case 'Custom 2': + doc.cardSort_customField = "star"; + doc.cardSort_visibleSortGroups = new List(); + break; + case 'Custom 3': + doc.cardSort_customField = "idea"; + doc.cardSort_visibleSortGroups = new List(); + break; + case 'Chat GPT': + doc.cardSort = "custom"; + doc.cardSort_customField = "chat"; + doc.cardSort_visibleSortGroups = new List(); + break; + default: + break; + } + } + + // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; + DocumentView.Selected().map(dv => { + if (value != 'Chat GPT') { + + dv.Document.cardSort = value.trim().split(/\s+/)[0].toLowerCase(); + } + docFields(dv.Document); + }); + + return undefined; + + // map.get(attr)?.setDoc?.(); + // return undefined; +}); + // ScriptingGlobals.add(function setCardSortAttr(attr: 'time' | 'docType' | 'color', value: any, checkResult?: boolean) { // // const editorView = RichTextMenu.Instance?.TextView?.EditorView; // const selected = SelectionManager.Docs.lastElement(); @@ -315,6 +452,7 @@ ScriptingGlobals.add(function setFontAttr(attr: 'font' | 'fontColor' | 'highligh ]); if (checkResult) { + // console.log(map.get(attr)?.checkResult() + "font check result") return map.get(attr)?.checkResult(); } map.get(attr)?.setDoc?.(); diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.tsx b/src/client/views/nodes/FontIconBox/FontIconBox.tsx index ffb668b03..8317d62a6 100644 --- a/src/client/views/nodes/FontIconBox/FontIconBox.tsx +++ b/src/client/views/nodes/FontIconBox/FontIconBox.tsx @@ -192,7 +192,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { } else { text = script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result; // text = StrCast((RichTextMenu.Instance?.TextView?.EditorView ? RichTextMenu.Instance : Doc.UserDoc()).fontFamily); - getStyle = (val: string) => ({ fontFamily: val }); + // getStyle = (val: string) => ({ fontFamily: val }); } // Get items to place into the list -- cgit v1.2.3-70-g09d2 From b440901843a930c6c87ec23c59f90f1349c25b50 Mon Sep 17 00:00:00 2001 From: IEatChili Date: Thu, 6 Jun 2024 15:23:12 -0400 Subject: feat: updated ui --- package-lock.json | 2 +- package.json | 2 +- src/client/documents/DocumentTypes.ts | 1 + src/client/documents/Documents.ts | 4 + src/client/util/CurrentUserUtils.ts | 7 + src/client/views/Main.tsx | 2 + src/client/views/MainView.tsx | 1 + .../collectionFreeForm/ImageLabelBox.scss | 26 ++++ .../collectionFreeForm/ImageLabelBox.tsx | 150 +++++++++++++++++++++ .../collectionFreeForm/ImageLabelHandler.tsx | 2 +- .../collections/collectionFreeForm/MarqueeView.tsx | 56 +++++--- src/client/views/linking/LinkPopup.tsx | 1 - src/fields/Doc.ts | 1 + 13 files changed, 232 insertions(+), 23 deletions(-) create mode 100644 src/client/views/collections/collectionFreeForm/ImageLabelBox.scss create mode 100644 src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx (limited to 'src') diff --git a/package-lock.json b/package-lock.json index b143dc5c1..9b3904ff7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -142,7 +142,7 @@ "mathquill": "^0.10.1-a", "md5-file": "^5.0.0", "memorystream": "^0.3.1", - "mermaid": "^10.9.0", + "mermaid": "^10.9.1", "mobile-detect": "^1.4.5", "mobx": "^6.12.0", "mobx-react": "^9.1.0", diff --git a/package.json b/package.json index 52f627b63..ed05c4f45 100644 --- a/package.json +++ b/package.json @@ -227,7 +227,7 @@ "mathquill": "^0.10.1-a", "md5-file": "^5.0.0", "memorystream": "^0.3.1", - "mermaid": "^10.9.0", + "mermaid": "^10.9.1", "mobile-detect": "^1.4.5", "mobx": "^6.12.0", "mobx-react": "^9.1.0", diff --git a/src/client/documents/DocumentTypes.ts b/src/client/documents/DocumentTypes.ts index 8f95068db..a9ea889b3 100644 --- a/src/client/documents/DocumentTypes.ts +++ b/src/client/documents/DocumentTypes.ts @@ -16,6 +16,7 @@ export enum DocumentType { SCREENSHOT = 'screenshot', FONTICON = 'fonticonbox', SEARCH = 'search', // search query + IMAGEGROUPER = 'imagegrouper', LABEL = 'label', // simple text label BUTTON = 'button', // onClick button WEBCAM = 'webcam', // webcam diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index a67e6b4f6..449347403 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -784,6 +784,10 @@ export namespace Docs { return InstanceFromProto(Prototypes.get(DocumentType.SEARCH), new List([]), options); } + export function ImageGrouperDocument(options: DocumentOptions = {}) { + return InstanceFromProto(Prototypes.get(DocumentType.IMAGEGROUPER), undefined, options); + } + export function LoadingDocument(file: File | string, options: DocumentOptions) { return InstanceFromProto(Prototypes.get(DocumentType.LOADING), undefined, { _height: 150, _width: 200, title: typeof file === 'string' ? file : file.name, ...options }, undefined, ''); } diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index e095bc659..486b6815a 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -458,6 +458,7 @@ pie title Minerals in my tap water { title: "Shared", toolTip: "Shared Docs", target: Doc.MySharedDocs, ignoreClick: true, icon: "users", funcs: {badgeValue: badgeValue}}, { title: "Trails", toolTip: "Trails ⌘R", target: Doc.UserDoc(), ignoreClick: true, icon: "pres-trail", funcs: {target: getActiveDashTrails}}, { title: "User Doc", toolTip: "User Doc", target: this.setupUserDocView(doc, "myUserDocView"), ignoreClick: true, icon: "address-card",funcs: {hidden: "IsNoviceMode()"} }, + { title: "Image Grouper", toolTip: "Image Grouper", target: this.setupImageGrouper(doc, "myImageGrouper"), ignoreClick: true, icon: "folder-open", hidden: true } ].map(tuple => ({...tuple, scripts:{onClick: 'selectMainMenu(this)'}})); } @@ -493,6 +494,12 @@ pie title Minerals in my tap water _lockedPosition: true, _type_collection: CollectionViewType.Schema }); } + static setupImageGrouper(doc: Doc, field: string) { + return DocUtils.AssignDocField(doc, field, (opts) => Docs.Create.ImageGrouperDocument(opts), { + dontRegisterView: true, backgroundColor: "dimgray", ignoreClick: true, title: "Image Grouper", isSystem: true, childDragAction: dropActionType.embed, + _lockedPosition: true, _type_collection: CollectionViewType.Schema }); + } + /// Initializes the panel of draggable tools that is opened from the left sidebar. static setupToolsBtnPanel(doc: Doc, field:string) { const allTools = DocListCast(DocCast(doc[field])?.data); diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index 43b9a6b39..8242e7c27 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -60,6 +60,7 @@ import { SummaryView } from './nodes/formattedText/SummaryView'; import { ImportElementBox } from './nodes/importBox/ImportElementBox'; import { PresBox, PresElementBox } from './nodes/trails'; import { SearchBox } from './search/SearchBox'; +import { ImageLabelBox } from './collections/collectionFreeForm/ImageLabelBox'; dotenv.config(); @@ -131,6 +132,7 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; PresBox, PresElementBox, SearchBox, + ImageLabelBox, //Here! FunctionPlotBox, InkingStroke, LinkBox, diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 31d88fb87..5b4c2b5ba 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -76,6 +76,7 @@ import { PresBox } from './nodes/trails'; import { AnchorMenu } from './pdf/AnchorMenu'; import { GPTPopup } from './pdf/GPTPopup/GPTPopup'; import { TopBar } from './topbar/TopBar'; +import { ImageLabelBox } from './collections/collectionFreeForm/ImageLabelBox'; const { LEFT_MENU_WIDTH, TOPBAR_HEIGHT } = require('./global/globalCssVariables.module.scss'); // prettier-ignore const _global = (window /* browser */ || global) /* node */ as any; diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss b/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss new file mode 100644 index 000000000..d0c12814c --- /dev/null +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss @@ -0,0 +1,26 @@ +.image-label-list { + display: flex; + flex-direction: column; + align-items: center; // Centers the content vertically in the flex container + width: 100%; + + > div { + display: flex; + justify-content: space-between; // Puts the content and delete button on opposite ends + align-items: center; + width: 100%; + margin-top: 8px; // Adds space between label rows + background-color: black; + + p { + text-align: center; // Centers the text of the paragraph + font-size: large; + vertical-align: middle; + } + + .IconButton { + // Styling for the delete button + margin-left: auto; // Pushes the button to the far right + } + } +} diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx new file mode 100644 index 000000000..1c0035f0d --- /dev/null +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -0,0 +1,150 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Colors, IconButton } from 'browndash-components'; +import { action, makeObservable, observable } from 'mobx'; +import { observer } from 'mobx-react'; +import React from 'react'; +import { Doc } from '../../../../fields/Doc'; +import { Docs } from '../../../documents/Documents'; +import { DocumentType } from '../../../documents/DocumentTypes'; +import { ViewBoxBaseComponent } from '../../DocComponent'; +import { FieldView, FieldViewProps } from '../../nodes/FieldView'; +import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; +import './ImageLabelBox.scss'; +import { MainView } from '../../MainView'; +import { MarqueeView } from './MarqueeView'; + +@observer +export class ImageLabelBox extends ViewBoxBaseComponent() { + public static LayoutString(fieldKey: string) { + return FieldView.LayoutString(ImageLabelBox, fieldKey); + } + + public static Instance: ImageLabelBox | null = null; + private _inputRef = React.createRef(); + @observable _loading: boolean = true; + @observable _currentLabel: string = ''; + @observable _labelGroups: string[] = []; + + constructor(props: any) { + super(props); + makeObservable(this); + ImageLabelBox.Instance = this; + + console.log('Image Box Has Been Initialized'); + } + + /** + * This method is called when the SearchBox component is first mounted. When the user opens + * the search panel, the search input box is automatically selected. This allows the user to + * type in the search input box immediately, without needing clicking on it first. + */ + componentDidMount() { + // if (this._inputRef.current) { + // this._inputRef.current.focus(); + // } + } + + @action + addLabel = (label: string) => { + label = label.toUpperCase().trim(); + if (label.length > 0) { + if (!this._labelGroups.includes(label)) { + this._labelGroups = [...this._labelGroups, label]; + } + } + }; + + @action + removeLabel = (label: string) => { + const labelUp = label.toUpperCase(); + this._labelGroups = this._labelGroups.filter(group => group !== labelUp); + }; + + @action + groupImages = () => { + MarqueeOptionsMenu.Instance.groupImages(); + this._labelGroups = []; + MainView.Instance.closeFlyout(); + }; + + @action + startLoading = () => { + this._loading = true; + }; + + @action + endLoading = () => { + this._loading = false; + }; + + render() { + if (this._loading) { + return
Loading...
; + } + + return ( +
+
+ { + // e.key === 'Enter' ? this.submitSearch() : null; + // e.stopPropagation(); + // }} + type="text" + placeholder="Input a group to put images into..." + aria-label="label-input" + id="new-label" + className="searchBox-input" + style={{ width: '100%', borderRadius: '5px' }} + ref={this._inputRef} + /> + { + const input = document.getElementById('new-label') as HTMLInputElement; + const newLabel = input.value; + this.addLabel(newLabel); + this._currentLabel = ''; + input.value = ''; + }} + icon={} + color={MarqueeOptionsMenu.Instance.userColor} + style={{ width: '19px' }} + /> + {this._labelGroups.length > 0 ? ( + } color={MarqueeOptionsMenu.Instance.userColor} style={{ width: '19px' }} /> + ) : ( +
+ )} +
+
+
+ {this._labelGroups.map(group => { + return ( +
+

{group}

+ { + this.removeLabel(group); + }} + icon={'x'} + color={MarqueeOptionsMenu.Instance.userColor} + style={{ width: '8px' }} + /> +
+ ); + })} +
+
+
+ ); + } +} + +Docs.Prototypes.TemplateMap.set(DocumentType.IMAGEGROUPER, { + layout: { view: ImageLabelBox, dataField: 'data' }, + options: { acl: '', _width: 400 }, +}); diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelHandler.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelHandler.tsx index 7f27c6b5c..73befb205 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelHandler.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelHandler.tsx @@ -77,7 +77,7 @@ export class ImageLabelHandler extends ObservableReactComponent<{}> { }}>
} color={MarqueeOptionsMenu.Instance.userColor} style={{ width: '19px' }} /> - + { diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index dc15c83c5..bb5a2a66e 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -5,7 +5,7 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { ClientUtils, lightOrDark, returnFalse } from '../../../../ClientUtils'; import { intersectRect, numberRange } from '../../../../Utils'; -import { Doc, NumListCast, Opt } from '../../../../fields/Doc'; +import { Doc, DocListCast, NumListCast, Opt } from '../../../../fields/Doc'; import { AclAdmin, AclAugment, AclEdit, DocData } from '../../../../fields/DocSymbols'; import { Id } from '../../../../fields/FieldSymbols'; import { InkData, InkField, InkTool } from '../../../../fields/InkField'; @@ -36,6 +36,9 @@ import { CollectionFreeFormView } from './CollectionFreeFormView'; import { ImageLabelHandler } from './ImageLabelHandler'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; import './MarqueeView.scss'; +import { MainView } from '../../MainView'; +import { ImageLabelBox } from './ImageLabelBox'; +import { SearchBox } from '../../search/SearchBox'; interface MarqueeViewProps { getContainerTransform: () => Transform; @@ -53,6 +56,9 @@ interface MarqueeViewProps { slowLoadDocuments: (files: File[] | string, options: DocumentOptions, generatedDocuments: Doc[], text: string, completed: ((doc: Doc[]) => void) | undefined, addDocument: (doc: Doc | Doc[]) => boolean) => Promise; } +/** + * A component that deals with the marquee select in the freeform canvas. + */ @observer export class MarqueeView extends ObservableReactComponent { public static CurViewBounds(pinDoc: Doc, panelWidth: number, panelHeight: number) { @@ -60,9 +66,12 @@ export class MarqueeView extends ObservableReactComponent { - this._selectedDocs = this.marqueeSelect(false, DocumentType.IMG); + if (e) { + const groupButton = DocListCast(Doc.MyLeftSidebarMenu.data).find(d => d.target === Doc.MyImageGrouper); + if (groupButton) { + MainView.Instance.expandFlyout(groupButton); + while (!ImageLabelBox.Instance) { + await new Promise(resolve => setTimeout(resolve, 1000)).then(() => { + console.log('Waiting for Image Label Box'); + }); + } + ImageLabelBox.Instance.startLoading(); + } + } + + this._selectedDocs = this.marqueeSelect(false, DocumentType.IMG); // Get the selected documents from the marquee select. const imageInfos = this._selectedDocs.map(async doc => { - const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); - return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => + if (!doc[DocData].data_labels) { + const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); + return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => !hrefBase64 ? undefined : gptImageLabel(hrefBase64).then(labels => Promise.all(labels.split('\n').map(label => gptGetEmbedding(label))).then(embeddings => ({ doc, embeddings, labels }))) ); // prettier-ignore - }); + } + }); // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. (await Promise.all(imageInfos)).forEach(imageInfo => { - if (imageInfo && Array.isArray(imageInfo.embeddings)) { + if (imageInfo && imageInfo.embeddings && Array.isArray(imageInfo.embeddings)) { imageInfo.doc[DocData].data_labels = imageInfo.labels; numberRange(3).forEach(n => { imageInfo.doc[`data_labels_embedding_${n + 1}`] = new List(imageInfo.embeddings[n]); }); } - }); + }); // Add the labels as fields to each image. - if (e) { - ImageLabelHandler.Instance.displayLabelHandler(e.pageX, e.pageY); - } + ImageLabelBox.Instance!.endLoading(); + console.log('Complete!'); }); /** @@ -464,7 +486,7 @@ export class MarqueeView extends ObservableReactComponent { - const labelGroups = ImageLabelHandler.Instance._labelGroups; + const labelGroups = ImageLabelBox.Instance!._labelGroups; const labelToEmbedding = new Map(); // Create embeddings for the labels. await Promise.all(labelGroups.map(async label => gptGetEmbedding(label).then(labelEmbedding => labelToEmbedding.set(label, labelEmbedding)))); @@ -478,14 +500,10 @@ export class MarqueeView extends ObservableReactComponent ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) .reduce((prev, cur) => cur.similarityScore < 0.3 || cur.similarityScore <= prev.similarityScore ? prev: cur, { label: '', similarityScore: 0, }); // prettier-ignore - - numberRange(3).forEach(n => { - doc[`data_labels_embedding_${n + 1}`] = undefined; - }); - doc[DocData].data_label = mostSimilarLabelCollect; + doc[DocData].data_label = mostSimilarLabelCollect; // The label most similar to the image's contents. }); - this._props.Document._type_collection = CollectionViewType.Time; - this._props.Document.pivotField = 'data_label'; + this._props.Document._type_collection = CollectionViewType.Time; // Change the collection view to a Time view. + this._props.Document.pivotField = 'data_label'; // Sets the pivot to be the 'data_label'. }); @undoBatch diff --git a/src/client/views/linking/LinkPopup.tsx b/src/client/views/linking/LinkPopup.tsx index 76a8396ff..2405e375d 100644 --- a/src/client/views/linking/LinkPopup.tsx +++ b/src/client/views/linking/LinkPopup.tsx @@ -45,7 +45,6 @@ export class LinkPopup extends React.Component { {/* */} - Date: Mon, 10 Jun 2024 11:06:02 -0400 Subject: feat: ui changes --- package-lock.json | 6 +++ package.json | 1 + .../collectionFreeForm/ImageLabelBox.scss | 23 +++++++++ .../collectionFreeForm/ImageLabelBox.tsx | 60 ++++++++++++++++++---- .../collectionFreeForm/MarqueeOptionsMenu.tsx | 2 +- .../collections/collectionFreeForm/MarqueeView.tsx | 9 ++-- 6 files changed, 86 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 9b3904ff7..6cd2ab605 100644 --- a/package-lock.json +++ b/package-lock.json @@ -136,6 +136,7 @@ "js-datepicker": "^5.18.2", "jsonschema": "^1.4.1", "jszip": "^3.10.1", + "ldrs": "^1.0.2", "lodash": "^4.17.21", "mapbox-gl": "^3.0.1", "markdown-it": "^14.1.0", @@ -23613,6 +23614,11 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/ldrs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ldrs/-/ldrs-1.0.2.tgz", + "integrity": "sha512-sYJmivdkIiHrUEqTrEWccBoLdaENpzbzkABI5rk8rRxTXrg9i2xVuDvUUuhOhJY3RmQyaoxs046pM1DCRdcIpg==" + }, "node_modules/leac": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", diff --git a/package.json b/package.json index ed05c4f45..bbd2a4c46 100644 --- a/package.json +++ b/package.json @@ -221,6 +221,7 @@ "js-datepicker": "^5.18.2", "jsonschema": "^1.4.1", "jszip": "^3.10.1", + "ldrs": "^1.0.2", "lodash": "^4.17.21", "mapbox-gl": "^3.0.1", "markdown-it": "^14.1.0", diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss b/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss index d0c12814c..5f2ce4e14 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss @@ -1,3 +1,18 @@ +.image-box-container { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + font-size: 10px; + line-height: 1; + background: none; + z-index: 1000; + padding: 0px; + overflow: auto; + cursor: default; +} + .image-label-list { display: flex; flex-direction: column; @@ -16,6 +31,7 @@ text-align: center; // Centers the text of the paragraph font-size: large; vertical-align: middle; + margin-left: 10px; } .IconButton { @@ -24,3 +40,10 @@ } } } + +.image-information { + display: flex; + flex-direction: column; + //align-items: center; + width: 100%; +} diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index 1c0035f0d..83ae69cfb 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -12,6 +12,11 @@ import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; import './ImageLabelBox.scss'; import { MainView } from '../../MainView'; import { MarqueeView } from './MarqueeView'; +import 'ldrs/ring'; +import { ring } from 'ldrs'; +import { SnappingManager } from '../../../util/SnappingManager'; +import { ImageCast } from '../../../../fields/Types'; +import { DocData } from '../../../../fields/DocSymbols'; @observer export class ImageLabelBox extends ViewBoxBaseComponent() { @@ -24,12 +29,14 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { @observable _loading: boolean = true; @observable _currentLabel: string = ''; @observable _labelGroups: string[] = []; + @observable _selectedImages: Doc[] = []; + @observable _displayImageInformation: boolean = false; constructor(props: any) { super(props); makeObservable(this); ImageLabelBox.Instance = this; - + ring.register(); console.log('Image Box Has Been Initialized'); } @@ -77,14 +84,32 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { this._loading = false; }; + @action + setSelectedImages = (selected: Doc[]) => { + this._selectedImages = selected; + }; + render() { if (this._loading) { - return
Loading...
; + return ( +
+ +
+ ); } return ( -
-
+
+
+ { + this._displayImageInformation = !this._displayImageInformation; + }} + icon={this._displayImageInformation ? : } + color={MarqueeOptionsMenu.Instance.userColor} + style={{ width: '19px' }} + /> () { // e.stopPropagation(); // }} type="text" - placeholder="Input a group to put images into..." + placeholder="Input labels for image groupings..." aria-label="label-input" id="new-label" className="searchBox-input" @@ -101,7 +126,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { ref={this._inputRef} /> { const input = document.getElementById('new-label') as HTMLInputElement; const newLabel = input.value; @@ -113,11 +138,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { color={MarqueeOptionsMenu.Instance.userColor} style={{ width: '19px' }} /> - {this._labelGroups.length > 0 ? ( - } color={MarqueeOptionsMenu.Instance.userColor} style={{ width: '19px' }} /> - ) : ( -
- )} + {this._labelGroups.length > 0 ? } color={Colors.MEDIUM_BLUE} style={{ width: '19px' }} /> :
}
@@ -139,6 +160,23 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { })}
+ {this._displayImageInformation ? ( +
+ {this._selectedImages.map(doc => { + const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); + return ( +
+ + {(doc[DocData].data_labels as string).split('\n').map(label => { + return
{label}
; + })} +
+ ); + })} +
+ ) : ( +
+ )}
); } diff --git a/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx b/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx index f02cd9d45..b94a22d04 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx @@ -39,7 +39,7 @@ export class MarqueeOptionsMenu extends AntimodeMenu { } color={this.userColor} /> } color={this.userColor} /> } color={this.userColor} /> - } color={this.userColor} /> + } color={this.userColor} /> ); return this.getElement(buttons); diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index bb5a2a66e..f98883bff 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -456,6 +456,7 @@ export class MarqueeView extends ObservableReactComponent { if (!doc[DocData].data_labels) { @@ -478,7 +479,7 @@ export class MarqueeView extends ObservableReactComponent Date: Mon, 10 Jun 2024 12:32:20 -0400 Subject: hm --- src/client/documents/Documents.ts | 1 + src/client/util/CurrentUserUtils.ts | 2 +- src/client/views/collections/CollectionCardDeckView.tsx | 13 +++++++++++++ src/client/views/global/globalScripts.ts | 6 ++++-- src/client/views/pdf/PDFViewer.tsx | 2 +- 5 files changed, 20 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index a67e6b4f6..34407c641 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -479,6 +479,7 @@ export class DocumentOptions { userColor?: STRt = new StrInfo('color associated with a Dash user (seen in header fields of shared documents)'); cardSort?: STRt = new StrInfo('way cards are sorted in deck view'); + cardSortForDropDown?: STRt = new StrInfo('needed for dropdown and i dont know why') cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) } diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 438867eeb..2ca2ce9c9 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -661,7 +661,7 @@ pie title Minerals in my tap water static cardTools(): Button[] { return [ { btnList: new List(["Time", "Type", "Color", "Chat GPT", "Custom 1", "Custom 2", "Custom 3" ]), - title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 150, scripts: { script: '{ return setCardSort(value, _readOnly_); }'}}, + title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 100, scripts: { script: '{ return setCardSort(value, _readOnly_); }'}}, // { title: "Font", toolTip: "Font", width: 100, btnType: ButtonType.DropdownList, toolType:"font", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, // btnList: new List(["Roboto", "Roboto Mono", "Nunito", "Times New Roman", "Arial", "Georgia", "Comic Sans MS", "Tahoma", "Impact", "Crimson Text"]) }, // { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 127c4dc48..d68fb57f8 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -19,6 +19,7 @@ import { DocumentView } from '../nodes/DocumentView'; import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; import './CollectionCardDeckView.scss'; import { CollectionSubView } from './CollectionSubView'; +import { FieldsDropdown } from '../FieldsDropdown'; enum cardSortings { Time = 'time', @@ -384,6 +385,8 @@ export class CollectionCardView extends CollectionSubView() { return response; // Return the response from gptImageLabel } catch (error) { console.log('bad things have happened'); + + console.log(error) } return ''; }; @@ -517,6 +520,16 @@ export class CollectionCardView extends CollectionSubView() { onMouseLeave={() => this.setHoveredNodeIndex(-1)}> {this.renderCards()}
+
+ { + this.layoutDoc._pivotField = fieldKey; + // this.removeEmptyColumns(); + }, 'change pivot field')} + placeholder={StrCast(this.layoutDoc._pivotField)} + /> +
); } diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 0a6f78e2e..549cb5c8f 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -344,7 +344,8 @@ ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { // console.log(attr + "attricute") // console.log(map.get(attr)?.checkResult(selected) + "check result") console.log(StrCast(selected?.cardSort) + "check") - return StrCast(selected?.cardSort); + const hi = StrCast(selected?.cardSort) + return StrCast(selected?.cardSortForDropDown) ?? "Time"; } function docFields(doc: Doc): void { @@ -373,8 +374,9 @@ ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; DocumentView.Selected().map(dv => { + dv.Document.cardSortForDropDown = value + if (value != 'Chat GPT') { - dv.Document.cardSort = value.trim().split(/\s+/)[0].toLowerCase(); } docFields(dv.Document); diff --git a/src/client/views/pdf/PDFViewer.tsx b/src/client/views/pdf/PDFViewer.tsx index db47a84e1..72448e851 100644 --- a/src/client/views/pdf/PDFViewer.tsx +++ b/src/client/views/pdf/PDFViewer.tsx @@ -33,7 +33,7 @@ import './PDFViewer.scss'; // pdfjsLib.GlobalWorkerOptions.workerSrc = `/assets/pdf.worker.js`; // The workerSrc property shall be specified. -Pdfjs.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@4.3.136/build/pdf.worker.mjs'; +Pdfjs.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@4.2.67/build/pdf.worker.mjs'; interface IViewerProps extends FieldViewProps { pdfBox: PDFBox; -- cgit v1.2.3-70-g09d2 From 05e634842f7d798b8f8c201c7ff7821b32de376f Mon Sep 17 00:00:00 2001 From: IEatChili Date: Wed, 12 Jun 2024 12:32:19 -0400 Subject: feat: updated and fixed ui --- src/client/util/CurrentUserUtils.ts | 2 +- src/client/views/MainView.tsx | 2 +- .../collectionFreeForm/ImageLabelBox.scss | 40 +++++- .../collectionFreeForm/ImageLabelBox.tsx | 159 +++++++++++++++------ .../collections/collectionFreeForm/MarqueeView.tsx | 46 +----- 5 files changed, 164 insertions(+), 85 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 486b6815a..cb3d9df62 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -458,7 +458,7 @@ pie title Minerals in my tap water { title: "Shared", toolTip: "Shared Docs", target: Doc.MySharedDocs, ignoreClick: true, icon: "users", funcs: {badgeValue: badgeValue}}, { title: "Trails", toolTip: "Trails ⌘R", target: Doc.UserDoc(), ignoreClick: true, icon: "pres-trail", funcs: {target: getActiveDashTrails}}, { title: "User Doc", toolTip: "User Doc", target: this.setupUserDocView(doc, "myUserDocView"), ignoreClick: true, icon: "address-card",funcs: {hidden: "IsNoviceMode()"} }, - { title: "Image Grouper", toolTip: "Image Grouper", target: this.setupImageGrouper(doc, "myImageGrouper"), ignoreClick: true, icon: "folder-open", hidden: true } + { title: "Image Grouper", toolTip: "Image Grouper", target: this.setupImageGrouper(doc, "myImageGrouper"), ignoreClick: true, icon: "folder-open", hidden: false } ].map(tuple => ({...tuple, scripts:{onClick: 'selectMainMenu(this)'}})); } diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 5b4c2b5ba..716edc22d 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -76,7 +76,7 @@ import { PresBox } from './nodes/trails'; import { AnchorMenu } from './pdf/AnchorMenu'; import { GPTPopup } from './pdf/GPTPopup/GPTPopup'; import { TopBar } from './topbar/TopBar'; -import { ImageLabelBox } from './collections/collectionFreeForm/ImageLabelBox'; +import { ImageLabelBox, ImageLabelBoxData } from './collections/collectionFreeForm/ImageLabelBox'; const { LEFT_MENU_WIDTH, TOPBAR_HEIGHT } = require('./global/globalCssVariables.module.scss'); // prettier-ignore const _global = (window /* browser */ || global) /* node */ as any; diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss b/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss index 5f2ce4e14..819c72760 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.scss @@ -41,9 +41,45 @@ } } -.image-information { +.image-information-list { display: flex; flex-direction: column; - //align-items: center; + align-items: center; + width: 100%; + margin-top: 10px; +} + +.image-information { + border: 1px solid; width: 100%; + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + overflow: hidden; + padding: 2px; + overflow-x: auto; + overflow-y: auto; + + img { + max-width: 200px; + max-height: 200px; + width: auto; + height: auto; + } +} + +.image-information-labels { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + .image-label { + margin-top: 5px; + margin-bottom: 5px; + padding: 3px; + border-radius: 2px; + border: solid 1px; + } } diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index 83ae69cfb..f5530ccc4 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -1,6 +1,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Colors, IconButton } from 'browndash-components'; -import { action, makeObservable, observable } from 'mobx'; +import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; import { Doc } from '../../../../fields/Doc'; @@ -11,12 +11,51 @@ import { FieldView, FieldViewProps } from '../../nodes/FieldView'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; import './ImageLabelBox.scss'; import { MainView } from '../../MainView'; -import { MarqueeView } from './MarqueeView'; import 'ldrs/ring'; import { ring } from 'ldrs'; import { SnappingManager } from '../../../util/SnappingManager'; import { ImageCast } from '../../../../fields/Types'; import { DocData } from '../../../../fields/DocSymbols'; +import { SettingsManager } from '../../../util/SettingsManager'; +import { CollectionCardView } from '../CollectionCardDeckView'; +import { gptGetEmbedding, gptImageLabel } from '../../../apis/gpt/GPT'; +import { numberRange, Utils } from '../../../../Utils'; +import { List } from '../../../../fields/List'; + +export class ImageLabelBoxData { + static _instance: ImageLabelBoxData; + @observable _docs: Doc[] = []; + @observable _labelGroups: string[] = []; + + constructor() { + makeObservable(this); + ImageLabelBoxData._instance = this; + } + public static get Instance() { + return ImageLabelBoxData._instance ?? new ImageLabelBoxData(); + } + + @action + public setData = (docs: Doc[]) => { + this._docs = docs; + }; + + @action + addLabel = (label: string) => { + label = label.toUpperCase().trim(); + if (label.length > 0) { + if (!this._labelGroups.includes(label)) { + this._labelGroups = [...this._labelGroups, label]; + } + } + }; + + @action + removeLabel = (label: string) => { + const labelUp = label.toUpperCase(); + this._labelGroups = this._labelGroups.filter(group => group !== labelUp); + }; +} @observer export class ImageLabelBox extends ViewBoxBaseComponent() { @@ -24,59 +63,53 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { return FieldView.LayoutString(ImageLabelBox, fieldKey); } - public static Instance: ImageLabelBox | null = null; + public static Instance: ImageLabelBox; private _inputRef = React.createRef(); - @observable _loading: boolean = true; - @observable _currentLabel: string = ''; - @observable _labelGroups: string[] = []; - @observable _selectedImages: Doc[] = []; + @observable _loading: boolean = false; + private _currentLabel: string = ''; + + @computed get _labelGroups() { + return ImageLabelBoxData.Instance._labelGroups; + } + + @computed get _selectedImages() { + // return DocListCast(this.dataDoc.data); + return ImageLabelBoxData.Instance._docs; + } @observable _displayImageInformation: boolean = false; constructor(props: any) { super(props); makeObservable(this); - ImageLabelBox.Instance = this; ring.register(); + ImageLabelBox.Instance = this; console.log('Image Box Has Been Initialized'); } + // ImageLabelBox.Instance.setData() /** * This method is called when the SearchBox component is first mounted. When the user opens * the search panel, the search input box is automatically selected. This allows the user to * type in the search input box immediately, without needing clicking on it first. */ componentDidMount() { - // if (this._inputRef.current) { - // this._inputRef.current.focus(); - // } + this.classifyImagesInBox(); + reaction( + () => this._selectedImages, + () => this.classifyImagesInBox() + ); } - @action - addLabel = (label: string) => { - label = label.toUpperCase().trim(); - if (label.length > 0) { - if (!this._labelGroups.includes(label)) { - this._labelGroups = [...this._labelGroups, label]; - } - } - }; - - @action - removeLabel = (label: string) => { - const labelUp = label.toUpperCase(); - this._labelGroups = this._labelGroups.filter(group => group !== labelUp); - }; - @action groupImages = () => { MarqueeOptionsMenu.Instance.groupImages(); - this._labelGroups = []; MainView.Instance.closeFlyout(); }; @action startLoading = () => { this._loading = true; + console.log('Start loading has been called!'); }; @action @@ -85,8 +118,38 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { }; @action - setSelectedImages = (selected: Doc[]) => { - this._selectedImages = selected; + toggleDisplayInformation = () => { + this._displayImageInformation = !this._displayImageInformation; + }; + + onInputChange = action((e: React.ChangeEvent) => { + this._currentLabel = e.target.value; + }); + + classifyImagesInBox = async () => { + this.startLoading(); + + const imageInfos = this._selectedImages.map(async doc => { + if (!doc[DocData].data_labels) { + const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); + return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => + !hrefBase64 ? undefined : + gptImageLabel(hrefBase64).then(labels => + Promise.all(labels.split('\n').map(label => gptGetEmbedding(label))).then(embeddings => + ({ doc, embeddings, labels }))) ); // prettier-ignore + } + }); // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. + + (await Promise.all(imageInfos)).forEach(imageInfo => { + if (imageInfo && imageInfo.embeddings && Array.isArray(imageInfo.embeddings)) { + imageInfo.doc[DocData].data_labels = imageInfo.labels; + numberRange(3).forEach(n => { + imageInfo.doc[`data_labels_embedding_${n + 1}`] = new List(imageInfo.embeddings[n]); + }); + } + }); // Add the labels as fields to each image. + + this.endLoading(); }; render() { @@ -98,14 +161,20 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { ); } + if (this._selectedImages.length === 0) { + return ( +
+

In order to classify and sort images, marquee select the desired images and press the 'Classify and Sort Images' button. Then, add the desired groups for the images to be put in.

+
+ ); + } + return (
{ - this._displayImageInformation = !this._displayImageInformation; - }} + onPointerDown={this.toggleDisplayInformation} icon={this._displayImageInformation ? : } color={MarqueeOptionsMenu.Instance.userColor} style={{ width: '19px' }} @@ -113,6 +182,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { { // e.key === 'Enter' ? this.submitSearch() : null; // e.stopPropagation(); @@ -129,8 +199,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { tooltip={'Add a label'} onPointerDown={() => { const input = document.getElementById('new-label') as HTMLInputElement; - const newLabel = input.value; - this.addLabel(newLabel); + ImageLabelBoxData.Instance.addLabel(this._currentLabel); this._currentLabel = ''; input.value = ''; }} @@ -144,12 +213,12 @@ export class ImageLabelBox extends ViewBoxBaseComponent() {
{this._labelGroups.map(group => { return ( -
+

{group}

{ - this.removeLabel(group); + ImageLabelBoxData.Instance.removeLabel(group); }} icon={'x'} color={MarqueeOptionsMenu.Instance.userColor} @@ -161,15 +230,21 @@ export class ImageLabelBox extends ViewBoxBaseComponent() {
{this._displayImageInformation ? ( -
+
{this._selectedImages.map(doc => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return ( -
+
- {(doc[DocData].data_labels as string).split('\n').map(label => { - return
{label}
; - })} +
+ {(doc[DocData].data_labels as string).split('\n').map(label => { + return ( +
+ {label} +
+ ); + })} +
); })} diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index f98883bff..81f2a94c1 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -37,7 +37,7 @@ import { ImageLabelHandler } from './ImageLabelHandler'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; import './MarqueeView.scss'; import { MainView } from '../../MainView'; -import { ImageLabelBox } from './ImageLabelBox'; +import { ImageLabelBox, ImageLabelBoxData } from './ImageLabelBox'; import { SearchBox } from '../../search/SearchBox'; interface MarqueeViewProps { @@ -442,44 +442,12 @@ export class MarqueeView extends ObservableReactComponent { - if (e) { - const groupButton = DocListCast(Doc.MyLeftSidebarMenu.data).find(d => d.target === Doc.MyImageGrouper); - if (groupButton) { - MainView.Instance.expandFlyout(groupButton); - while (!ImageLabelBox.Instance) { - await new Promise(resolve => setTimeout(resolve, 1000)).then(() => { - console.log('Waiting for Image Label Box'); - }); - } - ImageLabelBox.Instance.startLoading(); - } + const groupButton = DocListCast(Doc.MyLeftSidebarMenu.data).find(d => d.target === Doc.MyImageGrouper); + if (groupButton) { + this._selectedDocs = this.marqueeSelect(false, DocumentType.IMG); + ImageLabelBoxData.Instance.setData(this._selectedDocs); + MainView.Instance.expandFlyout(groupButton); } - - this._selectedDocs = this.marqueeSelect(false, DocumentType.IMG); // Get the selected documents from the marquee select. - ImageLabelBox.Instance!.setSelectedImages(this._selectedDocs); - - const imageInfos = this._selectedDocs.map(async doc => { - if (!doc[DocData].data_labels) { - const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); - return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => - !hrefBase64 ? undefined : - gptImageLabel(hrefBase64).then(labels => - Promise.all(labels.split('\n').map(label => gptGetEmbedding(label))).then(embeddings => - ({ doc, embeddings, labels }))) ); // prettier-ignore - } - }); // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. - - (await Promise.all(imageInfos)).forEach(imageInfo => { - if (imageInfo && imageInfo.embeddings && Array.isArray(imageInfo.embeddings)) { - imageInfo.doc[DocData].data_labels = imageInfo.labels; - numberRange(3).forEach(n => { - imageInfo.doc[`data_labels_embedding_${n + 1}`] = new List(imageInfo.embeddings[n]); - }); - } - }); // Add the labels as fields to each image. - - ImageLabelBox.Instance!.endLoading(); - console.log(this._selectedDocs); }); /** @@ -496,7 +464,7 @@ export class MarqueeView extends ObservableReactComponent { const embedLists = numberRange(3).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); - const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map(l => (embedding && similarity(Array.from(embedding), l)) || 0)); + const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && (1 - index * 0.1) * similarity(Array.from(embedding), l)!) || 0)); const {label: mostSimilarLabelCollect} = labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) .reduce((prev, cur) => cur.similarityScore < 0.3 || cur.similarityScore <= prev.similarityScore ? prev: cur, -- cgit v1.2.3-70-g09d2 From 8aee62b8623e23f6478960291857ee47f50f9aaf Mon Sep 17 00:00:00 2001 From: IEatChili Date: Thu, 13 Jun 2024 16:28:24 -0400 Subject: feat: more ui updates --- .../collectionFreeForm/ImageLabelBox.tsx | 81 +++++++++++++++++++--- .../collections/collectionFreeForm/MarqueeView.tsx | 22 +----- src/client/views/nodes/ImageBox.tsx | 4 ++ 3 files changed, 76 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index f5530ccc4..571a4504f 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -3,9 +3,9 @@ import { Colors, IconButton } from 'browndash-components'; import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; -import { Doc } from '../../../../fields/Doc'; +import { Doc, NumListCast, Opt } from '../../../../fields/Doc'; import { Docs } from '../../../documents/Documents'; -import { DocumentType } from '../../../documents/DocumentTypes'; +import { CollectionViewType, DocumentType } from '../../../documents/DocumentTypes'; import { ViewBoxBaseComponent } from '../../DocComponent'; import { FieldView, FieldViewProps } from '../../nodes/FieldView'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; @@ -21,6 +21,9 @@ import { CollectionCardView } from '../CollectionCardDeckView'; import { gptGetEmbedding, gptImageLabel } from '../../../apis/gpt/GPT'; import { numberRange, Utils } from '../../../../Utils'; import { List } from '../../../../fields/List'; +import { DragManager } from '../../../util/DragManager'; +import { OpenWhere } from '../../nodes/OpenWhere'; +import similarity from 'compute-cosine-similarity'; export class ImageLabelBoxData { static _instance: ImageLabelBoxData; @@ -63,11 +66,26 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { return FieldView.LayoutString(ImageLabelBox, fieldKey); } + private _dropDisposer?: DragManager.DragDropDisposer; public static Instance: ImageLabelBox; private _inputRef = React.createRef(); @observable _loading: boolean = false; private _currentLabel: string = ''; + protected createDropTarget = (ele: HTMLDivElement) => { + this._dropDisposer?.(); + ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this.layoutDoc)); + }; + + protected onInternalDrop(e: Event, de: DragManager.DropEvent): boolean { + const { docDragData } = de.complete; + if (docDragData) { + ImageLabelBoxData.Instance.setData(ImageLabelBoxData.Instance._docs.concat(docDragData.droppedDocuments)); + return false; + } + return false; + } + @computed get _labelGroups() { return ImageLabelBoxData.Instance._labelGroups; } @@ -102,7 +120,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { @action groupImages = () => { - MarqueeOptionsMenu.Instance.groupImages(); + this.groupImagesInBox(); MainView.Instance.closeFlyout(); }; @@ -122,6 +140,14 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { this._displayImageInformation = !this._displayImageInformation; }; + @action + submitLabel = () => { + const input = document.getElementById('new-label') as HTMLInputElement; + ImageLabelBoxData.Instance.addLabel(this._currentLabel); + this._currentLabel = ''; + input.value = ''; + }; + onInputChange = action((e: React.ChangeEvent) => { this._currentLabel = e.target.value; }); @@ -143,6 +169,13 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { (await Promise.all(imageInfos)).forEach(imageInfo => { if (imageInfo && imageInfo.embeddings && Array.isArray(imageInfo.embeddings)) { imageInfo.doc[DocData].data_labels = imageInfo.labels; + + const labels = imageInfo.labels.split('\n'); + labels.forEach(label => { + label = label.replace(/^\d+\.\s*/, '').trim(); + imageInfo.doc[DocData][`${label}`] = true; + }); + numberRange(3).forEach(n => { imageInfo.doc[`data_labels_embedding_${n + 1}`] = new List(imageInfo.embeddings[n]); }); @@ -152,6 +185,32 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { this.endLoading(); }; + /** + * Groups images to most similar labels. + */ + groupImagesInBox = action(async () => { + console.log('Calling!'); + const labelToEmbedding = new Map(); + // Create embeddings for the labels. + await Promise.all(this._labelGroups.map(async label => gptGetEmbedding(label).then(labelEmbedding => labelToEmbedding.set(label, labelEmbedding)))); + + // For each image, loop through the labels, and calculate similarity. Associate it with the + // most similar one. + this._selectedImages.forEach(doc => { + const embedLists = numberRange(3).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); + const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && (1 - index * 0.1) * similarity(Array.from(embedding), l)!) || 0)); + const {label: mostSimilarLabelCollect} = + this._labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) + .reduce((prev, cur) => cur.similarityScore < 0.3 || cur.similarityScore <= prev.similarityScore ? prev: cur, + { label: '', similarityScore: 0, }); // prettier-ignore + doc[DocData].data_label = mostSimilarLabelCollect; // The label most similar to the image's contents. + }); + + if (this._selectedImages) { + MarqueeOptionsMenu.Instance.groupImages(); + } + }); + render() { if (this._loading) { return ( @@ -163,14 +222,14 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { if (this._selectedImages.length === 0) { return ( -
+
this.createDropTarget(ele)}>

In order to classify and sort images, marquee select the desired images and press the 'Classify and Sort Images' button. Then, add the desired groups for the images to be put in.

); } return ( -
+
this.createDropTarget(ele)}>
() { defaultValue="" autoComplete="off" onChange={this.onInputChange} - // onKeyDown={e => { - // e.key === 'Enter' ? this.submitSearch() : null; - // e.stopPropagation(); - // }} + onKeyDown={e => { + e.key === 'Enter' ? this.submitLabel() : null; + e.stopPropagation(); + }} type="text" - placeholder="Input labels for image groupings..." + placeholder="Input groups for images to be put into..." aria-label="label-input" id="new-label" className="searchBox-input" @@ -234,7 +293,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { {this._selectedImages.map(doc => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return ( -
+
this._props.addDocTab(doc, OpenWhere.addRightKeyvalue)}>
{(doc[DocData].data_labels as string).split('\n').map(label => { diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index 81f2a94c1..f03a9d62d 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -455,26 +455,8 @@ export class MarqueeView extends ObservableReactComponent { - const labelGroups = ImageLabelBox.Instance!._labelGroups; - const labelToEmbedding = new Map(); - // Create embeddings for the labels. - await Promise.all(labelGroups.map(async label => gptGetEmbedding(label).then(labelEmbedding => labelToEmbedding.set(label, labelEmbedding)))); - - // For each image, loop through the labels, and calculate similarity. Associate it with the - // most similar one. - this._selectedDocs.forEach(doc => { - const embedLists = numberRange(3).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); - const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && (1 - index * 0.1) * similarity(Array.from(embedding), l)!) || 0)); - const {label: mostSimilarLabelCollect} = - labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) - .reduce((prev, cur) => cur.similarityScore < 0.3 || cur.similarityScore <= prev.similarityScore ? prev: cur, - { label: '', similarityScore: 0, }); // prettier-ignore - doc[DocData].data_label = mostSimilarLabelCollect; // The label most similar to the image's contents. - }); - if (this._selectedDocs) { - this._props.Document._type_collection = CollectionViewType.Time; // Change the collection view to a Time view. - this._props.Document.pivotField = 'data_label'; // Sets the pivot to be the 'data_label'. - } + this._props.Document._type_collection = CollectionViewType.Time; // Change the collection view to a Time view. + this._props.Document.pivotField = 'data_label'; // Sets the pivot to be the 'data_label'. }); @undoBatch diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index e4b3a1b9b..3da878a4f 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -173,6 +173,10 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { Doc.SetNativeHeight(this.dataDoc, Doc.NativeHeight(targetDoc), this.fieldKey); } } + const layoutDoc = de.complete.docDragData?.draggedDocuments[0]; + const targetField = Doc.LayoutFieldKey(layoutDoc); + const targetDoc = layoutDoc[DocData]; + console.log(targetDoc[targetField]); added === false && e.preventDefault(); added !== undefined && e.stopPropagation(); return added; -- cgit v1.2.3-70-g09d2 From 585e6ece3c2bee7b5a747ec571c5c2af1861d324 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Fri, 14 Jun 2024 12:42:58 -0400 Subject: starting dragging ?????? --- package-lock.json | 1129 +++++++++++++++----- package.json | 1 + src/client/apis/gpt/GPT.ts | 2 +- .../views/collections/CollectionCardDeckView.scss | 39 +- .../views/collections/CollectionCardDeckView.tsx | 79 +- src/client/views/global/globalScripts.ts | 7 +- src/client/views/pdf/GPTPopup/GPTPopup.scss | 1 + src/client/views/pdf/GPTPopup/GPTPopup.tsx | 151 ++- 8 files changed, 1082 insertions(+), 327 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index fbc0aa579..4899f14e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1828,6 +1828,97 @@ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + } } }, "@jimp/bmp": { @@ -7327,11 +7418,6 @@ "integrity": "sha512-tgsWVG80dM5PVEBSbXUttPJTBCOo0IKbBh4R4z/SHsC5C81A3aaUH4fsbj+JYk7fopApU/Mao1c0EWTE592TSg==", "dev": true }, - "@types/web": { - "version": "0.0.143", - "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.143.tgz", - "integrity": "sha512-TazK16/OqeeqfQRB/Tv/NwzJagHbLi/w5g26FLbiFte/8LpPq6BuTyXHO/cpgwJpE6KGgFSNYb6Ap05Tz9XvCA==" - }, "@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -8422,6 +8508,37 @@ "react-measure": "^2.5.2" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "npm": { "version": "9.9.3", "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.3.tgz", @@ -8501,13 +8618,19 @@ "dependencies": { "@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "optional": true }, "@gar/promisify": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "@isaacs/cliui": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "requires": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -8518,13 +8641,19 @@ }, "dependencies": { "ansi-regex": { - "version": "6.0.1" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" }, "emoji-regex": { - "version": "9.2.2" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "requires": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -8533,6 +8662,8 @@ }, "strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "requires": { "ansi-regex": "^6.0.1" } @@ -8540,10 +8671,14 @@ } }, "@isaacs/string-locale-compare": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==" }, "@npmcli/arborist": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.5.1.tgz", + "integrity": "sha512-cdV8pGurLK0CifZRilMJbm2CZ3H4Snk8PAqOngj5qmgFLjEllMLvScSZ3XKfd+CK8fo/hrPHO9zazy9OYdvmUg==", "requires": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.0", @@ -8582,6 +8717,8 @@ }, "@npmcli/config": { "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.4.1.tgz", + "integrity": "sha512-uSz+elSGzjCMANWa5IlbGczLYPkNI/LeR+cHrgaTqTrTSh9RHhOFA4daD2eRUz6lMtOW+Fnsb+qv7V2Zz8ML0g==", "requires": { "@npmcli/map-workspaces": "^3.0.2", "ci-info": "^4.0.0", @@ -8595,18 +8732,24 @@ }, "@npmcli/disparity-colors": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/disparity-colors/-/disparity-colors-3.0.0.tgz", + "integrity": "sha512-5R/z157/f20Fi0Ou4ZttL51V0xz0EdPEOauFtPCEYOLInDBRCj1/TxOJ5aGTrtShxEshN2d+hXb9ZKSi5RLBcg==", "requires": { "ansi-styles": "^4.3.0" } }, "@npmcli/fs": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "requires": { "semver": "^7.3.5" } }, "@npmcli/git": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", "requires": { "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", @@ -8620,6 +8763,8 @@ }, "@npmcli/installed-package-contents": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "requires": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -8627,6 +8772,8 @@ }, "@npmcli/map-workspaces": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", "requires": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", @@ -8636,6 +8783,8 @@ }, "@npmcli/metavuln-calculator": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz", + "integrity": "sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==", "requires": { "cacache": "^17.0.0", "json-parse-even-better-errors": "^3.0.0", @@ -8645,19 +8794,27 @@ }, "@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "requires": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" } }, "@npmcli/name-from-folder": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==" }, "@npmcli/node-gyp": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==" }, "@npmcli/package-json": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==", "requires": { "@npmcli/git": "^4.1.0", "glob": "^10.2.2", @@ -8670,18 +8827,24 @@ }, "@npmcli/promise-spawn": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "requires": { "which": "^3.0.0" } }, "@npmcli/query": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz", + "integrity": "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==", "requires": { "postcss-selector-parser": "^6.0.10" } }, "@npmcli/run-script": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "requires": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/promise-spawn": "^6.0.0", @@ -8692,19 +8855,27 @@ }, "@pkgjs/parseargs": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "optional": true }, "@sigstore/bundle": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", "requires": { "@sigstore/protobuf-specs": "^0.2.0" } }, "@sigstore/protobuf-specs": { - "version": "0.2.1" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==" }, "@sigstore/sign": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", "requires": { "@sigstore/bundle": "^1.1.0", "@sigstore/protobuf-specs": "^0.2.0", @@ -8713,69 +8884,99 @@ }, "@sigstore/tuf": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", "requires": { "@sigstore/protobuf-specs": "^0.2.0", "tuf-js": "^1.1.7" } }, "@tootallnate/once": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, "@tufjs/canonical-json": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==" }, "@tufjs/models": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", "requires": { "@tufjs/canonical-json": "1.0.0", "minimatch": "^9.0.0" } }, "abbrev": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" }, "agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { "debug": "4" } }, "agentkeepalive": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "requires": { "humanize-ms": "^1.2.1" } }, "aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "ansi-regex": { - "version": "5.0.1" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { "color-convert": "^2.0.1" } }, "aproba": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "archy": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" }, "are-we-there-yet": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz", + "integrity": "sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==" }, "balanced-match": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "bin-links": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.3.tgz", + "integrity": "sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA==", "requires": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -8784,22 +8985,30 @@ } }, "binary-extensions": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "requires": { "balanced-match": "^1.0.0" } }, "builtins": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "requires": { "semver": "^7.0.0" } }, "cacache": { "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "requires": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -8816,25 +9025,37 @@ } }, "chalk": { - "version": "5.3.0" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" }, "chownr": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "ci-info": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==" }, "cidr-regex": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-3.1.1.tgz", + "integrity": "sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw==", "requires": { "ip-regex": "^4.1.0" } }, "clean-stack": { - "version": "2.2.0" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-columns": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-columns/-/cli-columns-4.0.0.tgz", + "integrity": "sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ==", "requires": { "string-width": "^4.2.3", "strip-ansi": "^6.0.1" @@ -8842,47 +9063,69 @@ }, "cli-table3": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "requires": { "@colors/colors": "1.5.0", "string-width": "^4.2.0" } }, "clone": { - "version": "1.0.4" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" }, "cmd-shim": { - "version": "6.0.2" + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.2.tgz", + "integrity": "sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw==" }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "color-support": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, "columnify": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "requires": { "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" } }, "common-ancestor-path": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" }, "concat-map": { - "version": "0.0.1" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "console-control-strings": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -8891,6 +9134,8 @@ "dependencies": { "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } @@ -8898,58 +9143,86 @@ } }, "cssesc": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" }, "dependencies": { "ms": { - "version": "2.1.2" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "requires": { "clone": "^1.0.2" } }, "delegates": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "diff": { - "version": "5.2.0" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==" }, "eastasianwidth": { - "version": "0.2.0" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "emoji-regex": { - "version": "8.0.0" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encoding": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "optional": true, "requires": { "iconv-lite": "^0.6.2" } }, "env-paths": { - "version": "2.2.1" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" }, "err-code": { - "version": "2.0.3" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" }, "exponential-backoff": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" }, "fastest-levenshtein": { - "version": "1.0.16" + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" }, "foreground-child": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "requires": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -8957,18 +9230,26 @@ }, "fs-minipass": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "requires": { "minipass": "^7.0.3" } }, "fs.realpath": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "function-bind": { - "version": "1.1.2" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "gauge": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", + "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", "requires": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -8982,6 +9263,8 @@ }, "glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -8991,28 +9274,40 @@ } }, "graceful-fs": { - "version": "4.2.11" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "has-unicode": { - "version": "2.0.1" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "hasown": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "requires": { "function-bind": "^1.1.2" } }, "hosted-git-info": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "requires": { "lru-cache": "^7.5.1" } }, "http-cache-semantics": { - "version": "4.1.1" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "http-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "requires": { "@tootallnate/once": "2", "agent-base": "6", @@ -9021,6 +9316,8 @@ }, "https-proxy-agent": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "requires": { "agent-base": "6", "debug": "4" @@ -9028,12 +9325,16 @@ }, "humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "requires": { "ms": "^2.0.0" } }, "iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -9041,34 +9342,50 @@ }, "ignore-walk": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", "requires": { "minimatch": "^9.0.0" } }, "imurmurhash": { - "version": "0.1.4" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "indent-string": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "infer-owner": { - "version": "1.0.4" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { - "version": "2.0.4" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "4.1.1" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==" }, "init-package-json": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-5.0.0.tgz", + "integrity": "sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw==", "requires": { "npm-package-arg": "^10.0.0", "promzard": "^1.0.0", @@ -9081,67 +9398,99 @@ }, "ip-address": { "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "requires": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" }, "dependencies": { "sprintf-js": { - "version": "1.1.3" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" } } }, "ip-regex": { - "version": "4.3.0" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" }, "is-cidr": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-4.0.2.tgz", + "integrity": "sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA==", "requires": { "cidr-regex": "^3.1.1" } }, "is-core-module": { "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "requires": { "hasown": "^2.0.0" } }, "is-fullwidth-code-point": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-lambda": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, "isexe": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "jackspeak": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "requires": { "@isaacs/cliui": "^8.0.2", "@pkgjs/parseargs": "^0.11.0" } }, "jsbn": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, "json-parse-even-better-errors": { - "version": "3.0.1" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" }, "json-stringify-nice": { - "version": "1.1.4" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==" }, "jsonparse": { - "version": "1.3.1" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" }, "just-diff": { - "version": "6.0.2" + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==" }, "just-diff-apply": { - "version": "5.5.0" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==" }, "libnpmaccess": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-7.0.3.tgz", + "integrity": "sha512-It+fk/NRdRfv5giLhaVeyebGi/0S2LDSAwuZ0AGQ4x//PtCVb2Hj29wgSHe+XEL+RUkvLBkxbRV+DqLtOzuVTQ==", "requires": { "npm-package-arg": "^10.1.0", "npm-registry-fetch": "^14.0.3" @@ -9149,6 +9498,8 @@ }, "libnpmdiff": { "version": "5.0.21", + "resolved": "https://registry.npmjs.org/libnpmdiff/-/libnpmdiff-5.0.21.tgz", + "integrity": "sha512-Zx+o/qnGoX46osnInyQQ5KI8jn2wIqXXiu4TJzE8GFd+o6kbyblJf+ihG81M1+yHK3AzkD1m4KK3+UTPXh/hBw==", "requires": { "@npmcli/arborist": "^6.5.0", "@npmcli/disparity-colors": "^3.0.0", @@ -9163,6 +9514,8 @@ }, "libnpmexec": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-6.0.5.tgz", + "integrity": "sha512-yN/7uJ3iYCPaKagHfrqXuCFLKn2ddcnYpEyC/tVhisHULC95uCy8AhUdNkThRXzhFqqptejO25ZfoWOGrdqnxA==", "requires": { "@npmcli/arborist": "^6.5.0", "@npmcli/run-script": "^6.0.0", @@ -9179,12 +9532,16 @@ }, "libnpmfund": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/libnpmfund/-/libnpmfund-4.2.2.tgz", + "integrity": "sha512-qnkP09tpryxD/iPYasHM7+yG4ZVe0e91sBVI/R8HJ1+ajeR9poWDckwiN2LEWGvtV/T/dqB++6A1NLrA5NPryw==", "requires": { "@npmcli/arborist": "^6.5.0" } }, "libnpmhook": { "version": "9.0.4", + "resolved": "https://registry.npmjs.org/libnpmhook/-/libnpmhook-9.0.4.tgz", + "integrity": "sha512-bYD8nJiPnqeMtSsRc5bztqSh6/v16M0jQjLeO959HJqf9ZRWKRpVnFx971Rz5zbPGOB2BrQa6iopsh5vons5ww==", "requires": { "aproba": "^2.0.0", "npm-registry-fetch": "^14.0.3" @@ -9192,6 +9549,8 @@ }, "libnpmorg": { "version": "5.0.5", + "resolved": "https://registry.npmjs.org/libnpmorg/-/libnpmorg-5.0.5.tgz", + "integrity": "sha512-0EbtEIFthVlmaj0hhC3LlEEXUZU3vKfJwfWL//iAqKjHreMhCD3cgdkld+UeWYDgsZzwzvXmopoY0l38I0yx9Q==", "requires": { "aproba": "^2.0.0", "npm-registry-fetch": "^14.0.3" @@ -9199,6 +9558,8 @@ }, "libnpmpack": { "version": "5.0.21", + "resolved": "https://registry.npmjs.org/libnpmpack/-/libnpmpack-5.0.21.tgz", + "integrity": "sha512-mQd3pPx7Xf6i2A6QnYcCmgq34BmfVG3HJvpl422B5dLKfi9acITqcJiJ2K7adhxPKZMF5VbP2+j391cs5w+xww==", "requires": { "@npmcli/arborist": "^6.5.0", "@npmcli/run-script": "^6.0.0", @@ -9208,6 +9569,8 @@ }, "libnpmpublish": { "version": "7.5.2", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.5.2.tgz", + "integrity": "sha512-azAxjEjAgBkbPHUGsGdMbTScyiLcTKdEnNYwGS+9yt+fUsNyiYn8hNH3+HeWKaXzFjvxi50MrHw1yp1gg5pumQ==", "requires": { "ci-info": "^4.0.0", "normalize-package-data": "^5.0.0", @@ -9221,12 +9584,16 @@ }, "libnpmsearch": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/libnpmsearch/-/libnpmsearch-6.0.3.tgz", + "integrity": "sha512-4FLTFsygxRKd+PL32WJlFN1g6gkfx3d90PjgSgd6kl9nJ55sZQAqNyi1M7QROKB4kN8JCNCphK8fQYDMg5bCcg==", "requires": { "npm-registry-fetch": "^14.0.3" } }, "libnpmteam": { "version": "5.0.4", + "resolved": "https://registry.npmjs.org/libnpmteam/-/libnpmteam-5.0.4.tgz", + "integrity": "sha512-yN2zxNb8Urvvo7fTWRcP3E/KPtpZJXFweDWcl+H/s3zopGDI9ahpidddGVG98JhnPl3vjqtZvFGU3/sqVTfuIw==", "requires": { "aproba": "^2.0.0", "npm-registry-fetch": "^14.0.3" @@ -9234,6 +9601,8 @@ }, "libnpmversion": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/libnpmversion/-/libnpmversion-4.0.3.tgz", + "integrity": "sha512-eD1O5zr0ko5pjOdz+2NyTEzP0kzKG8VIVyU+hIsz61cRmTrTxFRJhVBNOI1Q/inifkcM/UTl8EMfa0vX48zfoQ==", "requires": { "@npmcli/git": "^4.0.1", "@npmcli/run-script": "^6.0.0", @@ -9243,10 +9612,14 @@ } }, "lru-cache": { - "version": "7.18.3" + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" }, "make-fetch-happen": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "requires": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -9266,27 +9639,37 @@ }, "dependencies": { "minipass": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, "minimatch": { "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "7.0.4" + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" }, "minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -9295,6 +9678,8 @@ }, "minipass-fetch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "requires": { "encoding": "^0.1.13", "minipass": "^7.0.3", @@ -9304,12 +9689,16 @@ }, "minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -9318,6 +9707,8 @@ }, "minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "requires": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -9325,6 +9716,8 @@ "dependencies": { "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -9333,12 +9726,16 @@ }, "minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -9347,12 +9744,16 @@ }, "minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -9361,6 +9762,8 @@ }, "minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -9368,6 +9771,8 @@ "dependencies": { "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -9375,19 +9780,29 @@ } }, "mkdirp": { - "version": "1.0.4" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "ms": { - "version": "2.1.3" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "mute-stream": { - "version": "1.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==" }, "negotiator": { - "version": "0.6.3" + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "node-gyp": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "requires": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -9404,16 +9819,22 @@ "dependencies": { "@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "requires": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" } }, "abbrev": { - "version": "1.1.1" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "are-we-there-yet": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "requires": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -9421,6 +9842,8 @@ }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9428,6 +9851,8 @@ }, "cacache": { "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "requires": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -9451,12 +9876,16 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "requires": { "balanced-match": "^1.0.0" } }, "glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9467,6 +9896,8 @@ }, "minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "requires": { "brace-expansion": "^2.0.1" } @@ -9475,12 +9906,16 @@ }, "fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { "minipass": "^3.0.0" } }, "gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "requires": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -9494,6 +9929,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9505,6 +9942,8 @@ }, "make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "requires": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -9526,18 +9965,24 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } }, "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } }, "minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "requires": { "encoding": "^0.1.13", "minipass": "^3.1.6", @@ -9547,12 +9992,16 @@ }, "nopt": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "requires": { "abbrev": "^1.0.0" } }, "npmlog": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "requires": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -9561,28 +10010,38 @@ } }, "signal-exit": { - "version": "3.0.7" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "requires": { "minipass": "^3.1.1" } }, "unique-filename": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "requires": { "unique-slug": "^3.0.0" } }, "unique-slug": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "requires": { "imurmurhash": "^0.1.4" } }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } @@ -9591,12 +10050,16 @@ }, "nopt": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", "requires": { "abbrev": "^2.0.0" } }, "normalize-package-data": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "requires": { "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", @@ -9605,25 +10068,35 @@ } }, "npm-audit-report": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-audit-report/-/npm-audit-report-5.0.0.tgz", + "integrity": "sha512-EkXrzat7zERmUhHaoren1YhTxFwsOu5jypE84k6632SXTHcQE1z8V51GC6GVZt8LxkC+tbBcKMUBZAgk8SUSbw==" }, "npm-bundled": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "requires": { "npm-normalize-package-bin": "^3.0.0" } }, "npm-install-checks": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "requires": { "semver": "^7.1.1" } }, "npm-normalize-package-bin": { - "version": "3.0.1" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==" }, "npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "requires": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -9633,12 +10106,16 @@ }, "npm-packlist": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "requires": { "ignore-walk": "^6.0.0" } }, "npm-pick-manifest": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", "requires": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -9648,6 +10125,8 @@ }, "npm-profile": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-profile/-/npm-profile-7.0.1.tgz", + "integrity": "sha512-VReArOY/fCx5dWL66cbJ2OMogTQAVVQA//8jjmjkarboki3V7UJ0XbGFW+khRwiAJFQjuH0Bqr/yF7Y5RZdkMQ==", "requires": { "npm-registry-fetch": "^14.0.0", "proc-log": "^3.0.0" @@ -9655,6 +10134,8 @@ }, "npm-registry-fetch": { "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "requires": { "make-fetch-happen": "^11.0.0", "minipass": "^5.0.0", @@ -9666,15 +10147,21 @@ }, "dependencies": { "minipass": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, "npm-user-validate": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-user-validate/-/npm-user-validate-2.0.0.tgz", + "integrity": "sha512-sSWeqAYJ2dUPStJB+AEj0DyLRltr/f6YNcvCA7phkB8/RMLMnVsQ41GMwHo/ERZLYNDsyB2wPm7pZo1mqPOl7Q==" }, "npmlog": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", "requires": { "are-we-there-yet": "^4.0.0", "console-control-strings": "^1.1.0", @@ -9684,18 +10171,24 @@ }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, "p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "requires": { "aggregate-error": "^3.0.0" } }, "pacote": { "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", "requires": { "@npmcli/git": "^4.0.0", "@npmcli/installed-package-contents": "^2.0.1", @@ -9718,12 +10211,16 @@ }, "dependencies": { "minipass": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, "parse-conflict-json": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", + "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", "requires": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", @@ -9731,44 +10228,64 @@ } }, "path-is-absolute": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { - "version": "3.1.1" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-scurry": { "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "requires": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { - "version": "10.2.0" + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" } } }, "postcss-selector-parser": { "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "proc-log": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==" }, "promise-all-reject-late": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==" }, "promise-call-limit": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", + "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==" }, "promise-inflight": { - "version": "1.0.1" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" }, "promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "requires": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -9776,24 +10293,34 @@ }, "promzard": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-1.0.0.tgz", + "integrity": "sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig==", "requires": { "read": "^2.0.0" } }, "qrcode-terminal": { - "version": "0.12.0" + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" }, "read": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read/-/read-2.1.0.tgz", + "integrity": "sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ==", "requires": { "mute-stream": "~1.0.0" } }, "read-cmd-shim": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==" }, "read-package-json": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", "requires": { "glob": "^10.2.2", "json-parse-even-better-errors": "^3.0.0", @@ -9803,6 +10330,8 @@ }, "read-package-json-fast": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "requires": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -9810,6 +10339,8 @@ }, "readable-stream": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9817,16 +10348,22 @@ } }, "retry": { - "version": "0.12.0" + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" }, "dependencies": { "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9834,6 +10371,8 @@ }, "glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9845,6 +10384,8 @@ }, "minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -9852,20 +10393,28 @@ } }, "safe-buffer": { - "version": "5.2.1" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "optional": true }, "semver": { "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" }, "dependencies": { "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { "yallist": "^4.0.0" } @@ -9873,22 +10422,32 @@ } }, "set-blocking": { - "version": "2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "signal-exit": { - "version": "4.1.0" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" }, "sigstore": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", "requires": { "@sigstore/bundle": "^1.1.0", "@sigstore/protobuf-specs": "^0.2.0", @@ -9898,10 +10457,14 @@ } }, "smart-buffer": { - "version": "4.2.0" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socks": { "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", "requires": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -9909,6 +10472,8 @@ }, "socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "requires": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -9917,40 +10482,44 @@ }, "spdx-correct": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { - "version": "2.5.0" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" }, "spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { - "version": "3.0.17" + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" }, "ssri": { "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", "requires": { "minipass": "^7.0.3" } }, "string-width": { - "version": "4.2.3", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string-width-cjs": { "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9959,27 +10528,29 @@ }, "string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" } }, "strip-ansi": { - "version": "6.0.1", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } }, "supports-color": { - "version": "9.4.0" + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==" }, "tar": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -9991,12 +10562,16 @@ "dependencies": { "fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -10004,21 +10579,31 @@ } }, "minipass": { - "version": "5.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, "text-table": { - "version": "0.2.0" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "tiny-relative-date": { - "version": "1.3.0" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz", + "integrity": "sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==" }, "treeverse": { - "version": "3.0.0" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==" }, "tuf-js": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", "requires": { "@tufjs/models": "1.0.4", "debug": "^4.3.4", @@ -10027,21 +10612,29 @@ }, "unique-filename": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "requires": { "unique-slug": "^4.0.0" } }, "unique-slug": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "requires": { "imurmurhash": "^0.1.4" } }, "util-deprecate": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -10049,66 +10642,45 @@ }, "validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "requires": { "builtins": "^5.0.0" } }, "walk-up-path": { - "version": "3.0.1" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==" }, "wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "requires": { "defaults": "^1.0.3" } }, "which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "requires": { "isexe": "^2.0.0" } }, "wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "requires": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "wrap-ansi": { - "version": "8.1.0", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1" - }, - "ansi-styles": { - "version": "6.2.1" - }, - "emoji-regex": { - "version": "9.2.2" - }, - "string-width": { - "version": "5.1.2", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "wrap-ansi-cjs": { "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10116,17 +10688,23 @@ } }, "wrappy": { - "version": "1.0.2" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "yallist": { - "version": "4.0.0" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -10134,6 +10712,52 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz", "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } } } }, @@ -18430,6 +19054,14 @@ "version": "6.0.1", "bundled": true }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, "emoji-regex": { "version": "9.2.2", "bundled": true @@ -18443,12 +19075,97 @@ "strip-ansi": "^7.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "strip-ansi": { "version": "7.1.0", "bundled": true, "requires": { "ansi-regex": "^6.0.1" } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } } } }, @@ -19667,7 +20384,7 @@ } }, "string-width-cjs": { - "version": "npm:string-width@4.2.3", + "version": "npm:string-width-cjs@4.2.3", "bundled": true, "requires": { "emoji-regex": "^8.0.0", @@ -19683,7 +20400,7 @@ } }, "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", + "version": "npm:strip-ansi-cjs@6.0.1", "bundled": true, "requires": { "ansi-regex": "^5.0.1" @@ -19841,7 +20558,7 @@ } }, "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", + "version": "npm:wrap-ansi-cjs@7.0.0", "bundled": true, "requires": { "ansi-styles": "^4.0.0", @@ -23006,36 +23723,6 @@ "strip-ansi": "^7.0.1" } }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "string.prototype.codepointat": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", @@ -23142,21 +23829,6 @@ "ansi-regex": "^6.0.1" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - } - } - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -25138,67 +25810,6 @@ } } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index f46fe81a5..e83e6b01b 100644 --- a/package.json +++ b/package.json @@ -272,6 +272,7 @@ "react-compound-slider": "^3.4.0", "react-datepicker": "^6.1.0", "react-dom": "^18.2.0", + "react-draggable": "^4.4.6", "react-grid-layout": "^1.4.4", "react-icons": "^5.0.1", "react-jsx-parser": "^1.29.0", diff --git a/src/client/apis/gpt/GPT.ts b/src/client/apis/gpt/GPT.ts index 5dc818db8..585398204 100644 --- a/src/client/apis/gpt/GPT.ts +++ b/src/client/apis/gpt/GPT.ts @@ -43,7 +43,7 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { model: 'gpt-4o', maxTokens: 2048, temp: 0.5, - prompt: "I'm going to give you a list of descriptions. Each one is seperated by ====== on either side. They will vary in length, so make sure to only seperate when you see ======. Sort them into lists by shared content. MAKE SURE EACH DESCRIPTOR IS IN ONLY ONE LIST. Generate only the list with each list seperated by ====== with the elements seperated by ~~~~~~. Try to do around 4 groups, but a little more or less is ok.", + prompt: "I'm going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them into lists by shared content. Make sure each description is in only one list. Each list should be separated by `======` with the elements within it separated by `~~~~~~`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted. It is VERY important that you format it exactly as described, ensuring the proper number of `=` `~` and `-` (6 of each) and no commas.Try to create around 4 groups, but a little more or less is ok. Also, I may provide some more insight after this colon:" }, describe: { model: 'gpt-4-vision-preview', maxTokens: 2048, temp: 0, prompt: 'Describe these images in 3-5 words' }, chatcard: { model: 'gpt-4-turbo', maxTokens: 512, temp: 0.5, prompt: 'Answer the following question as a short flashcard response. Do not include a label.' }, diff --git a/src/client/views/collections/CollectionCardDeckView.scss b/src/client/views/collections/CollectionCardDeckView.scss index 8a721a626..5f7d1b901 100644 --- a/src/client/views/collections/CollectionCardDeckView.scss +++ b/src/client/views/collections/CollectionCardDeckView.scss @@ -26,23 +26,41 @@ display: flex; padding: 3px; // width: 300px; + // height:100px; + pointer-events: none; /* This ensures the container does not capture hover events */ + background-color: rgb(218, 218, 218); /* Background color of the container */ border-radius: 50px; /* Rounds the corners of the container */ transform: translateY(25px); // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */ align-items: center; /* Centers buttons vertically */ justify-content: start; /* Centers buttons horizontally */ + + button { + pointer-events: auto; /* Re-enable pointer events for the buttons */ + + width: 70px; + height: 70px; + border-radius: 50%; + background-color: $dark-gray; + // border-color: $medium-blue; + margin: 5px; // transform: translateY(-50px); + background-color: transparent; + } } -button { - width: 35px; - height: 35px; - border-radius: 50%; - background-color: $dark-gray; - // border-color: $medium-blue; - margin: 5px; // transform: translateY(-50px); +.no-card-span{ + position: relative; + width: fit-content; + text-align: center; + font-size: 65px; + + + } + + // button:hover { // transform: translateY(-50px); // } @@ -74,6 +92,13 @@ button { flex-direction: column; } +// .card-item:hover { +// box-shadow: 0 20px 20px $medium-blue; +// transform: scale(1.05); + + +// } + .card-item-inactive { opacity: 0.5; } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index d68fb57f8..7ea345e10 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -20,6 +20,13 @@ import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; import './CollectionCardDeckView.scss'; import { CollectionSubView } from './CollectionSubView'; import { FieldsDropdown } from '../FieldsDropdown'; +import { Button, IconButton } from 'browndash-components'; +import { faStar } from '@fortawesome/free-solid-svg-icons'; +import { FaStar, FaHeart, FaRobot, FaCloud } from 'react-icons/fa'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { SettingsManager } from '../../util/SettingsManager'; +import { Tooltip } from '@mui/material'; + enum cardSortings { Time = 'time', @@ -72,8 +79,24 @@ export class CollectionCardView extends CollectionSubView() { constructor(props: any) { super(props); makeObservable(this); + this.setRegenerateCallback(); + + } + + setRegenerateCallback() { + GPTPopup.Instance.setRegenerateCallback(this.childPairStringListAndUpdateSortDesc); } + @action + childPairStringListAndUpdateSortDesc = async () => { + const sortDesc = await this.childPairStringList(); // Await the promise to get the string result + GPTPopup.Instance.setSortDesc(sortDesc.join()); + GPTPopup.Instance.onSortComplete = (sortResult: string) => this.processGptOutput(sortResult); + + }; + + + componentDidMount(): void { this._disposers.sort = reaction( () => ({ cardSort: this.cardSort, field: this.cardSort_customField }), @@ -331,7 +354,8 @@ export class CollectionCardView extends CollectionSubView() { */ calculateTranslateY = (isHovered: boolean, isSelected: boolean, realIndex: number, amCards: number, calcRowIndex: number) => { if (isSelected || amCards == 1) return 50 * this.fitContentScale; - const trans = isHovered ? this.translateHover(realIndex) : 0; + // const trans = isHovered ? this.translateHover(realIndex) : 0; + const trans = 0 return trans + this.translateY(amCards, calcRowIndex, realIndex); }; @@ -433,26 +457,50 @@ export class CollectionCardView extends CollectionSubView() { if (cardSort !== cardSortings.Custom) return ''; const amButtons = Math.max(4, this.childDocs?.reduce((set, d) => this.cardSort_customField && set.add(NumCast(d[this.cardSort_customField])), new Set()).size ?? 0); const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); - const totalWidth = amButtons * 35 + amButtons * 2 * 5 + 6; + const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; return ( -
+
{numberRange(amButtons).map(i => ( // eslint-disable-next-line jsx-a11y/control-has-associated-label -
}> + + + + + ))}
); }; + + getButtonIcons = (isActive: boolean) => { + switch (this.cardSort_customField) { + case 'like': + return ; + case 'chat': + return ; + case 'idea': + return ; + default: + return ; + } + }; /** * Actually renders all the cards */ renderCards = () => { const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); + const isEmpty = this.childDocsWithoutLinks.length === 0; + + if (isEmpty) { + return + Sorry ! There are no cards in this group + } + // Map sorted documents to their rendered components return this.sortedDocs.map((doc, index) => { const realIndex = this.sortedDocs.filter(sortDoc => !DocumentView.SelectedDocs().includes(sortDoc)).indexOf(doc); @@ -486,23 +534,27 @@ export class CollectionCardView extends CollectionSubView() { }} style={{ width: this.panelWidth(), - height: 'max-content', // this.panelHeight(childPair.layout)(), + height: 'max-content', transform: `translateY(${this.calculateTranslateY(this._hoveredNodeIndex === index, isSelected, realIndex, amCards, calcRowIndex)}px) translateX(${isSelected ? this.translateSelected(calcRowIndex) : this.translateOverflowX(realIndex, amCards)}px) rotate(${!isSelected ? this.rotate(amCards, calcRowIndex) : 0}deg) - scale(${isSelected ? 1.25 : 1})`, - }} + scale(${isSelected ? 1.25 : this._hoveredNodeIndex === index ? 1.05 : 1})`, + }} onMouseEnter={() => this.setHoveredNodeIndex(index)}> {this.displayDoc(doc, childScreenToLocal)} {this.renderButtons(doc, this.cardSort)}
); - }); + } + + + ); }; render() { + return (
); } + } diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 549cb5c8f..cef913837 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -352,24 +352,23 @@ ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { switch(value){ case 'Custom 1': doc.cardSort_customField = "like"; - doc.cardSort_visibleSortGroups = new List(); break; case 'Custom 2': doc.cardSort_customField = "star"; - doc.cardSort_visibleSortGroups = new List(); break; case 'Custom 3': doc.cardSort_customField = "idea"; - doc.cardSort_visibleSortGroups = new List(); break; case 'Chat GPT': doc.cardSort = "custom"; doc.cardSort_customField = "chat"; - doc.cardSort_visibleSortGroups = new List(); break; default: break; } + + doc.cardSort_visibleSortGroups = new List(); + } // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.scss b/src/client/views/pdf/GPTPopup/GPTPopup.scss index 6d8793f82..042b1dea5 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.scss +++ b/src/client/views/pdf/GPTPopup/GPTPopup.scss @@ -84,6 +84,7 @@ $highlightedText: #82e0ff; font-size: 9px; padding: 10px; color: #ffffff; + width: 100%; background-color: $button; border-radius: 5px; } diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index c0f17ba4e..468922532 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -20,6 +20,7 @@ import './GPTPopup.scss'; import { SettingsManager } from '../../../util/SettingsManager'; import { SnappingManager } from '../../../util/SnappingManager'; + export enum GPTPopupMode { SUMMARY, EDIT, @@ -149,6 +150,28 @@ export class GPTPopup extends ObservableReactComponent { this.cardsDoneLoading = done; } + @observable sortRespText: string = '' + + @action setSortRespText(resp: string) { + this.sortRespText = resp + } + + + @observable chatSortPrompt: string = "" + + sortPromptChanged = action((e: React.ChangeEvent) => { + this.chatSortPrompt = e.target.value; + }); + + @observable private regenerateCallback: (() => Promise) | null = null; + + @action public setRegenerateCallback(callback: () => Promise) { + this.regenerateCallback = callback; + } + + + + public addDoc: (doc: Doc | Doc[], sidebarKey?: string | undefined) => boolean = () => false; public createFilteredDoc: (axes?: any) => boolean = () => false; public addToCollection: ((doc: Doc | Doc[], annotationKey?: string | undefined) => boolean) | undefined; @@ -160,21 +183,34 @@ export class GPTPopup extends ObservableReactComponent { this.setLoading(true); this.setSortDone(false); + if (this.regenerateCallback) { + await this.regenerateCallback(); + } + try { - const res = await gptAPICall(this.sortDesc, GPTCallType.SORT); + const res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); // Trigger the callback with the result if (this.onSortComplete) { this.onSortComplete(res || 'Something went wrong :('); + + // Extract explanation surrounded by ------ at the top or both at the top and bottom + const explanationMatch = res.match(/------\s*([\s\S]*?)\s*(?:------|$)/) || []; + const explanation = explanationMatch[1] ? explanationMatch[1].trim() : 'No explanation found'; + + // Set the extracted explanation to sortRespText + this.setSortRespText(explanation); + console.log(res); } } catch (err) { console.error(err); } - + this.setLoading(false); this.setSortDone(true); }; - + + /** * Generates a Dalle image and uploads it to the server. */ @@ -315,49 +351,75 @@ export class GPTPopup extends ObservableReactComponent { }; sortBox = () => ( - <> -
+ <> +
{this.heading('SORTING')} - <> - {!this.cardsDoneLoading || this.loading ? ( -
-
- - {this.loading ? Loading... : Reading Cards...} -
+ <> + {!this.cardsDoneLoading || this.loading ? ( +
+
+ + {this.loading ? Loading... : Reading Cards...} +
+
+ ) : ( + !this.sortDone && ( + <> +
+ { + if (e.key === 'Enter') { + this.generateSort(); + } + e.stopPropagation(); + }} + type="text" + placeholder="How do you want to sort your cards ?" + id="search-input" + style={{ width: '100%' }} + />
- ) : ( - !this.sortDone && ( -
-
- ) - )} - - {this.sortDone && ( -
-
-

{this.text === 'Something went wrong :(' ? 'Something went wrong :(' : 'Sorting done! Feel free to move things around / regenerate :) !'}

- this.setSortDone(false)} icon={} color={StrCast(Doc.UserDoc().userVariantColor)} /> -
+
+
- )} - -
- - ); + + ) + )} + + {this.sortDone && ( +
+
+

{this.text === 'Something went wrong :(' ? 'Something went wrong :(' : `${this.sortRespText}`}

+ this.setSortDone(false)} + icon={} + color={StrCast(Doc.UserDoc().userVariantColor)} + /> +
+
+ )} + +
+ +); + imageBox = () => (
{this.heading('GENERATED IMAGE')} @@ -509,9 +571,12 @@ export class GPTPopup extends ObservableReactComponent { render() { return ( +
{this.mode === GPTPopupMode.SUMMARY ? this.summaryBox() : this.mode === GPTPopupMode.DATA ? this.dataAnalysisBox() : this.mode === GPTPopupMode.IMAGE ? this.imageBox() : this.mode === GPTPopupMode.SORT ? this.sortBox() : null}
+ + ); } } -- cgit v1.2.3-70-g09d2 From ad4d67f2ace0b658917ff63e2ff83f95022cc2d4 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Mon, 17 Jun 2024 12:02:14 -0400 Subject: things are getting silly --- src/client/views/collections/CollectionCardDeckView.tsx | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 7ea345e10..bf814cb31 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -46,7 +46,9 @@ export class CollectionCardView extends CollectionSubView() { @observable _isLoading = false; @observable _hoveredNodeIndex = -1; @observable _docRefs = new ObservableMap(); + _draggerRef = React.createRef(); @observable _maxRowCount = 10; + @observable docsBeingDragged: number[] = []; static getButtonGroup(groupFieldKey: 'chat' | 'star' | 'idea' | 'like', doc: Doc): number | undefined { return Cast(doc[groupFieldKey], 'number', null); @@ -508,6 +510,7 @@ export class CollectionCardView extends CollectionSubView() { const amCards = this.overflowAmCardsCalc(realIndex); const isSelected = DocumentView.SelectedDocs().includes(doc); + const childScreenToLocal = () => { this._forceChildXf; const dref = this._docRefs.get(doc); -- cgit v1.2.3-70-g09d2 From d6ad264a940b4d3db87c10d9a872968d83d63b10 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Mon, 17 Jun 2024 12:33:51 -0400 Subject: sigh --- .../views/collections/CollectionCardDeckView.tsx | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index bf814cb31..7362a65ae 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -49,6 +49,8 @@ export class CollectionCardView extends CollectionSubView() { _draggerRef = React.createRef(); @observable _maxRowCount = 10; @observable docsBeingDragged: number[] = []; + @observable draggedIndex: number = -1; + @observable overIndex: number = -1; static getButtonGroup(groupFieldKey: 'chat' | 'star' | 'idea' | 'like', doc: Doc): number | undefined { return Cast(doc[groupFieldKey], 'number', null); @@ -491,6 +493,35 @@ export class CollectionCardView extends CollectionSubView() { return ; } }; + + @action +onDragStart = (index: number) => { + this.draggedIndex = index; +}; + +@action +onDragOver = (index: number) => { + if (this.draggedIndex !== index) { + this.overIndex = index; + } +}; + +@action +onDrop = () => { + if (this.draggedIndex !== -1 && this.overIndex !== -1) { + const draggedDoc = this.sortedDocs[this.draggedIndex]; + this.sortedDocs.splice(this.draggedIndex, 1); + this.sortedDocs.splice(this.overIndex, 0, draggedDoc); + this.draggedIndex = -1; + this.overIndex = -1; + } +}; + +@action +onDragEnd = () => { + this.draggedIndex = -1; + this.overIndex = -1; +}; /** * Actually renders all the cards */ @@ -523,7 +554,7 @@ export class CollectionCardView extends CollectionSubView() { return (
{ // this turns off documentDecorations during a transition, then turns them back on afterward. SnappingManager.SetIsResizing(this.Document[Id]); -- cgit v1.2.3-70-g09d2 From 6a3eaaea335440371698bec409952d4c82d7d628 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Mon, 17 Jun 2024 13:05:48 -0400 Subject: yay concise code --- .../views/collections/CollectionCardDeckView.tsx | 114 +++++++++++---------- 1 file changed, 59 insertions(+), 55 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 7362a65ae..f50ca6349 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -451,77 +451,81 @@ export class CollectionCardView extends CollectionSubView() { GPTPopup.Instance.onSortComplete = (sortResult: string) => this.processGptOutput(sortResult); }; - /** + /** * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups - * @param childPairIndex * @param doc + * @param cardSort * @returns */ - renderButtons = (doc: Doc, cardSort: cardSortings) => { - if (cardSort !== cardSortings.Custom) return ''; - const amButtons = Math.max(4, this.childDocs?.reduce((set, d) => this.cardSort_customField && set.add(NumCast(d[this.cardSort_customField])), new Set()).size ?? 0); - const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); - const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; - return ( -
- {numberRange(amButtons).map(i => ( - // eslint-disable-next-line jsx-a11y/control-has-associated-label - Click to add/ remove this card from group {i +1}
}> + renderButtons = (doc: Doc, cardSort: cardSortings): JSX.Element | null => { + if (cardSort !== cardSortings.Custom) return null; + + const amButtons = Math.max(4, this.childDocs?.reduce((set, d) => { + if (this.cardSort_customField) { + set.add(NumCast(d[this.cardSort_customField])); + } + return set; + }, new Set()).size ?? 0); + + const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); + const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; + + return ( +
+ {numberRange(amButtons).map(i => ( + Click to add/remove this card from group {i + 1}
}> + + + ))} +
+ ); +}; - + getButtonIcon = (isActive: boolean): JSX.Element => { + const iconMap: { [key: string]: any } = { + like: 'heart', + chat: 'robot', + idea: 'cloud' + }; - + const icon = iconMap[this.cardSort_customField ?? ''] || 'star'; + const color = isActive ? '#4476f7' : '#323232'; - ))} -
- ); + return ; }; - getButtonIcons = (isActive: boolean) => { - switch (this.cardSort_customField) { - case 'like': - return ; - case 'chat': - return ; - case 'idea': - return ; - default: - return ; - } + + + @action + onDragStart = (index: number) => { + this.draggedIndex = index; }; @action -onDragStart = (index: number) => { - this.draggedIndex = index; -}; + onDragOver = (index: number) => { + if (this.draggedIndex !== index) { + this.overIndex = index; + } + }; -@action -onDragOver = (index: number) => { - if (this.draggedIndex !== index) { - this.overIndex = index; - } -}; + @action + onDrop = () => { + if (this.draggedIndex !== -1 && this.overIndex !== -1) { + const draggedDoc = this.sortedDocs[this.draggedIndex]; + this.sortedDocs.splice(this.draggedIndex, 1); + this.sortedDocs.splice(this.overIndex, 0, draggedDoc); + this.draggedIndex = -1; + this.overIndex = -1; + } + }; -@action -onDrop = () => { - if (this.draggedIndex !== -1 && this.overIndex !== -1) { - const draggedDoc = this.sortedDocs[this.draggedIndex]; - this.sortedDocs.splice(this.draggedIndex, 1); - this.sortedDocs.splice(this.overIndex, 0, draggedDoc); + @action + onDragEnd = () => { this.draggedIndex = -1; this.overIndex = -1; - } -}; - -@action -onDragEnd = () => { - this.draggedIndex = -1; - this.overIndex = -1; -}; + }; /** * Actually renders all the cards */ -- cgit v1.2.3-70-g09d2 From 8003d7f8de2a888f81b294cb7a713990c8a0e907 Mon Sep 17 00:00:00 2001 From: geireann Date: Mon, 17 Jun 2024 15:15:33 -0400 Subject: changed selected card to be relative to improve animation. --- .../views/collections/CollectionCardDeckView.scss | 2 +- .../views/collections/CollectionCardDeckView.tsx | 49 ++++++++++++---------- 2 files changed, 29 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.scss b/src/client/views/collections/CollectionCardDeckView.scss index 5f7d1b901..eb1b456f5 100644 --- a/src/client/views/collections/CollectionCardDeckView.scss +++ b/src/client/views/collections/CollectionCardDeckView.scss @@ -104,6 +104,6 @@ } .card-item-active { - position: absolute; + // position: absolute; z-index: 100; } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 7ea345e10..9ce0873bd 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -2,7 +2,7 @@ import { IReactionDisposer, ObservableMap, action, computed, makeObservable, obs import { observer } from 'mobx-react'; import * as React from 'react'; import { ClientUtils, DashColor, returnFalse, returnZero } from '../../../ClientUtils'; -import { numberRange } from '../../../Utils'; +import { emptyFunction, numberRange } from '../../../Utils'; import { Doc, NumListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; @@ -124,15 +124,6 @@ export class CollectionCardView extends CollectionSubView() { return (this._childDocumentWidth * length) / this._props.PanelWidth(); } - @computed get translateWrapperX() { - let translate = 0; - - if (this.inactiveDocs().length !== this.childDocsWithoutLinks.length && this.inactiveDocs().length < 10) { - translate += this.panelWidth() / 2; - } - return translate; - } - /** * The child documents to be rendered-- either all of them except the Links or the docs in the currently active * custom group @@ -161,6 +152,11 @@ export class CollectionCardView extends CollectionSubView() { return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.layoutDoc.sortDesc)); } + /** + * Number of rows of cards to be rendered + */ + @computed get numRows() { return Math.ceil(this.sortedDocs.length / 10); } + @action setHoveredNodeIndex = (index: number) => { if (!DocumentView.SelectedDocs().includes(this.childDocs[index])) { @@ -268,8 +264,8 @@ export class CollectionCardView extends CollectionSubView() { return [DateCast(docA.author_date)?.date ?? Date.now(), DateCast(docB.author_date)?.date ?? Date.now()]; case cardSortings.Color: - return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)) ?? 9999, // If docA.type is undefined, use an empty string - ClientUtils.hexToHsv(StrCast(docB.backgroundColor))] ?? 9999; // If docB.type is undefined, use an empty string + return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)), // If docA.type is undefined, use an empty string + ClientUtils.hexToHsv(StrCast(docB.backgroundColor))]; // If docB.type is undefined, use an empty string case cardSortings.Custom: return [CollectionCardView.getButtonGroup(this.cardSort_customField, docA)??9999, CollectionCardView.getButtonGroup(this.cardSort_customField, docB)??9999]; @@ -303,7 +299,7 @@ export class CollectionCardView extends CollectionSubView() { LayoutTemplate={this._props.childLayoutTemplate} LayoutTemplateString={this._props.childLayoutString} ScreenToLocalTransform={screenToLocalTransform} // makes sure the box wrapper thing is in the right spot - isContentActive={this.isChildContentActive} + isContentActive={emptyFunction} isDocumentActive={this._props.childDocumentsActive?.() || this.Document._childDocumentsActive ? this._props.isDocumentActive : this.isContentActive} PanelWidth={this.panelWidth} PanelHeight={this.panelHeight(doc)} @@ -316,11 +312,11 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ overflowAmCardsCalc = (index: number) => { - if (this.inactiveDocs().length < this._maxRowCount) { - return this.inactiveDocs().length; + if (this.sortedDocs.length < this._maxRowCount) { + return this.sortedDocs.length; } // 13 - 3 = 10 - const totalCards = this.inactiveDocs().length; + const totalCards = this.sortedDocs.length; // if 9 or less if (index < totalCards - (totalCards % 10)) { return this._maxRowCount; @@ -353,7 +349,11 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ calculateTranslateY = (isHovered: boolean, isSelected: boolean, realIndex: number, amCards: number, calcRowIndex: number) => { - if (isSelected || amCards == 1) return 50 * this.fitContentScale; + const rowHeight = this._props.PanelHeight() * this.fitContentScale / this.numRows; + const rowIndex = Math.trunc(realIndex / this._maxRowCount); + const rowToCenterShift = (this.numRows / 2) - rowIndex; + if (isSelected) return rowToCenterShift * rowHeight - rowHeight / 2; + if (amCards == 1) return 50 * this.fitContentScale; // const trans = isHovered ? this.translateHover(realIndex) : 0; const trans = 0 return trans + this.translateY(amCards, calcRowIndex, realIndex); @@ -503,7 +503,7 @@ export class CollectionCardView extends CollectionSubView() { // Map sorted documents to their rendered components return this.sortedDocs.map((doc, index) => { - const realIndex = this.sortedDocs.filter(sortDoc => !DocumentView.SelectedDocs().includes(sortDoc)).indexOf(doc); + const realIndex = this.sortedDocs.indexOf(doc); const calcRowIndex = this.overflowIndexCalc(realIndex); const amCards = this.overflowAmCardsCalc(realIndex); const isSelected = DocumentView.SelectedDocs().includes(doc); @@ -517,6 +517,12 @@ export class CollectionCardView extends CollectionSubView() { .scale(1 / scale).rotate(!isSelected ? -this.rotate(amCards, calcRowIndex) : 0); // prettier-ignore }; + const translateIfSelected = () => { + const indexInRow = index % this._maxRowCount; + const rowIndex = Math.trunc(index / this._maxRowCount); + const rowCenterIndex = Math.min(this._maxRowCount, this.sortedDocs.length - rowIndex * this._maxRowCount)/2; + return (rowCenterIndex - indexInRow) * 100; + } return (
this.setHoveredNodeIndex(index)}> {this.displayDoc(doc, childScreenToLocal)} @@ -566,8 +572,9 @@ export class CollectionCardView extends CollectionSubView() {
this.setHoveredNodeIndex(-1)}> {this.renderCards()} -- cgit v1.2.3-70-g09d2 From 15d7ccabc927a216ace693a18c2246323c6d8df6 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Mon, 17 Jun 2024 15:16:39 -0400 Subject: hi --- .../views/collections/CollectionCardDeckView.tsx | 117 ++++++++++----------- 1 file changed, 58 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index f50ca6349..4a4e5a498 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -2,7 +2,7 @@ import { IReactionDisposer, ObservableMap, action, computed, makeObservable, obs import { observer } from 'mobx-react'; import * as React from 'react'; import { ClientUtils, DashColor, returnFalse, returnZero } from '../../../ClientUtils'; -import { numberRange } from '../../../Utils'; +import { emptyFunction, numberRange } from '../../../Utils'; import { Doc, NumListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; @@ -26,7 +26,7 @@ import { FaStar, FaHeart, FaRobot, FaCloud } from 'react-icons/fa'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { SettingsManager } from '../../util/SettingsManager'; import { Tooltip } from '@mui/material'; - +import { dropActionType } from '../../util/DropActionTypes'; enum cardSortings { Time = 'time', @@ -84,7 +84,6 @@ export class CollectionCardView extends CollectionSubView() { super(props); makeObservable(this); this.setRegenerateCallback(); - } setRegenerateCallback() { @@ -96,11 +95,8 @@ export class CollectionCardView extends CollectionSubView() { const sortDesc = await this.childPairStringList(); // Await the promise to get the string result GPTPopup.Instance.setSortDesc(sortDesc.join()); GPTPopup.Instance.onSortComplete = (sortResult: string) => this.processGptOutput(sortResult); - }; - - componentDidMount(): void { this._disposers.sort = reaction( () => ({ cardSort: this.cardSort, field: this.cardSort_customField }), @@ -198,7 +194,7 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ rotate = (amCards: number, index: number) => { - if (amCards ==1) return 0 + if (amCards == 1) return 0; const possRotate = -30 + index * (30 / ((amCards - (amCards % 2)) / 2)); const stepMag = Math.abs(-30 + (amCards / 2 - 1) * (30 / ((amCards - (amCards % 2)) / 2))); @@ -285,7 +281,6 @@ export class CollectionCardView extends CollectionSubView() { // console.log(ClientUtils.hexToHsv(StrCast(docA.backgroundColor)) ?? 9999 + "docA col") // console.log(ClientUtils.hexToHsv(StrCast(docB.backgroundColor)) ?? 9999 + "docB col") - const out = typeA < typeB ? -1 : typeA > typeB ? 1 : 0; return isDesc ? -out : out; // Reverse the sort order if descending is true }); @@ -298,7 +293,7 @@ export class CollectionCardView extends CollectionSubView() { // eslint-disable-next-line react/jsx-props-no-spreading {...this._props} ref={action((r: DocumentView) => r?.ContentDiv && this._docRefs.set(doc, r))} - Document={doc} + Document={doc} NativeWidth={returnZero} NativeHeight={returnZero} fitWidth={returnFalse} @@ -307,10 +302,13 @@ export class CollectionCardView extends CollectionSubView() { LayoutTemplate={this._props.childLayoutTemplate} LayoutTemplateString={this._props.childLayoutString} ScreenToLocalTransform={screenToLocalTransform} // makes sure the box wrapper thing is in the right spot - isContentActive={this.isChildContentActive} + isContentActive={emptyFunction} isDocumentActive={this._props.childDocumentsActive?.() || this.Document._childDocumentsActive ? this._props.isDocumentActive : this.isContentActive} PanelWidth={this.panelWidth} PanelHeight={this.panelHeight(doc)} + dragAction={(this.Document.childDragAction ?? this._props.childDragAction) as dropActionType} + dontHideOnDrag + // pointerEvents={this.blockPointerEventsWhenDragging(doc)} /> ); @@ -359,7 +357,7 @@ export class CollectionCardView extends CollectionSubView() { calculateTranslateY = (isHovered: boolean, isSelected: boolean, realIndex: number, amCards: number, calcRowIndex: number) => { if (isSelected || amCards == 1) return 50 * this.fitContentScale; // const trans = isHovered ? this.translateHover(realIndex) : 0; - const trans = 0 + const trans = 0; return trans + this.translateY(amCards, calcRowIndex, realIndex); }; @@ -414,7 +412,7 @@ export class CollectionCardView extends CollectionSubView() { } catch (error) { console.log('bad things have happened'); - console.log(error) + console.log(error); } return ''; }; @@ -451,54 +449,55 @@ export class CollectionCardView extends CollectionSubView() { GPTPopup.Instance.onSortComplete = (sortResult: string) => this.processGptOutput(sortResult); }; - /** + /** * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups * @param doc * @param cardSort * @returns */ - renderButtons = (doc: Doc, cardSort: cardSortings): JSX.Element | null => { - if (cardSort !== cardSortings.Custom) return null; + renderButtons = (doc: Doc, cardSort: cardSortings): JSX.Element | null => { + if (cardSort !== cardSortings.Custom) return null; + + const amButtons = Math.max( + 4, + this.childDocs?.reduce((set, d) => { + if (this.cardSort_customField) { + set.add(NumCast(d[this.cardSort_customField])); + } + return set; + }, new Set()).size ?? 0 + ); - const amButtons = Math.max(4, this.childDocs?.reduce((set, d) => { - if (this.cardSort_customField) { - set.add(NumCast(d[this.cardSort_customField])); - } - return set; - }, new Set()).size ?? 0); - - const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); - const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; - - return ( -
- {numberRange(amButtons).map(i => ( - Click to add/remove this card from group {i + 1}
}> - - - ))} -
- ); -}; + const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); + const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; + + return ( +
+ {numberRange(amButtons).map(i => ( + Click to add/remove this card from group {i + 1}
}> + + + ))} +
+ ); + }; getButtonIcon = (isActive: boolean): JSX.Element => { const iconMap: { [key: string]: any } = { like: 'heart', chat: 'robot', - idea: 'cloud' + idea: 'cloud', }; const icon = iconMap[this.cardSort_customField ?? ''] || 'star'; const color = isActive ? '#4476f7' : '#323232'; - return ; + return ; }; - - - @action + @action onDragStart = (index: number) => { this.draggedIndex = index; }; @@ -526,16 +525,21 @@ export class CollectionCardView extends CollectionSubView() { this.draggedIndex = -1; this.overIndex = -1; }; + /** * Actually renders all the cards */ renderCards = () => { + console.log(DragManager.docsBeingDragged.length + 'drag ha'); const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); const isEmpty = this.childDocsWithoutLinks.length === 0; if (isEmpty) { - return - Sorry ! There are no cards in this group + return ( + + Sorry ! There are no cards in this group + + ); } // Map sorted documents to their rendered components @@ -544,7 +548,7 @@ export class CollectionCardView extends CollectionSubView() { const calcRowIndex = this.overflowIndexCalc(realIndex); const amCards = this.overflowAmCardsCalc(realIndex); const isSelected = DocumentView.SelectedDocs().includes(doc); - + const isDragging = DragManager.docsBeingDragged.includes(doc); const childScreenToLocal = () => { this._forceChildXf; @@ -558,7 +562,7 @@ export class CollectionCardView extends CollectionSubView() { return (
{ // this turns off documentDecorations during a transition, then turns them back on afterward. SnappingManager.SetIsResizing(this.Document[Id]); @@ -573,26 +577,22 @@ export class CollectionCardView extends CollectionSubView() { style={{ width: this.panelWidth(), height: 'max-content', - transform: `translateY(${this.calculateTranslateY(this._hoveredNodeIndex === index, isSelected, realIndex, amCards, calcRowIndex)}px) - translateX(${isSelected ? this.translateSelected(calcRowIndex) : this.translateOverflowX(realIndex, amCards)}px) - rotate(${!isSelected ? this.rotate(amCards, calcRowIndex) : 0}deg) - scale(${isSelected ? 1.25 : this._hoveredNodeIndex === index ? 1.05 : 1})`, - }} + transform: !isDragging + ? `translateY(${this.calculateTranslateY(this._hoveredNodeIndex === index, isSelected, realIndex, amCards, calcRowIndex)}px) + translateX(${isSelected ? this.translateSelected(calcRowIndex) : this.translateOverflowX(realIndex, amCards)}px) + rotate(${!isSelected ? this.rotate(amCards, calcRowIndex) : 0}deg) + scale(${isSelected ? 1.25 : this._hoveredNodeIndex === index ? 1.05 : 1})` + : 'none', + }} onMouseEnter={() => this.setHoveredNodeIndex(index)}> {this.displayDoc(doc, childScreenToLocal)} {this.renderButtons(doc, this.cardSort)}
); - } - - - ); + }); }; - - render() { - return (
); } - } -- cgit v1.2.3-70-g09d2 From bd43d64f833c14b988e6bbf8f43dcd4fcb5b4f97 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 18 Jun 2024 11:42:12 -0400 Subject: lol --- .../views/collections/CollectionCardDeckView.tsx | 87 +++++++++++----------- 1 file changed, 43 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 20644715d..76536ed48 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -3,7 +3,6 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { ClientUtils, DashColor, returnFalse, returnZero } from '../../../ClientUtils'; import { emptyFunction, numberRange } from '../../../Utils'; -import { emptyFunction, numberRange } from '../../../Utils'; import { Doc, NumListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; @@ -49,8 +48,8 @@ export class CollectionCardView extends CollectionSubView() { @observable _docRefs = new ObservableMap(); _draggerRef = React.createRef(); @observable _maxRowCount = 10; - @observable docsBeingDragged: number[] = []; - @observable draggedIndex: number = -1; + @observable _docsDraggedIndex: number[] = []; + @observable _isACardBeingDragged: boolean = false; @observable overIndex: number = -1; static getButtonGroup(groupFieldKey: 'chat' | 'star' | 'idea' | 'like', doc: Doc): number | undefined { @@ -232,21 +231,21 @@ export class CollectionCardView extends CollectionSubView() { * @param index * @returns */ - translateSelected = (index: number): number => { - // if (this.isSelected(index)) { - const middleOfPanel = this._props.PanelWidth() / 2; - const scaledNodeWidth = this.panelWidth() * 1.25; + // translateSelected = (index: number): number => { + // // if (this.isSelected(index)) { + // const middleOfPanel = this._props.PanelWidth() / 2; + // const scaledNodeWidth = this.panelWidth() * 1.25; - // Calculate the position of the node's left edge before scaling - const nodeLeftEdge = index * this.panelWidth(); - // Find the center of the node after scaling - const scaledNodeCenter = nodeLeftEdge + scaledNodeWidth / 2; + // // Calculate the position of the node's left edge before scaling + // const nodeLeftEdge = index * this.panelWidth(); + // // Find the center of the node after scaling + // const scaledNodeCenter = nodeLeftEdge + scaledNodeWidth / 2; - // Calculate the translation needed to align the scaled node's center with the panel's center - const translation = middleOfPanel - scaledNodeCenter - scaledNodeWidth - scaledNodeWidth / 4; + // // Calculate the translation needed to align the scaled node's center with the panel's center + // const translation = middleOfPanel - scaledNodeCenter - scaledNodeWidth - scaledNodeWidth / 4; - return translation; - }; + // return translation; + // }; /** * Called in the sortedDocsType method. Compares the cards' value in regards to the desired sort type-- earlier cards are move to the @@ -498,34 +497,34 @@ export class CollectionCardView extends CollectionSubView() { return ; }; - @action - onDragStart = (index: number) => { - this.draggedIndex = index; - }; - - @action - onDragOver = (index: number) => { - if (this.draggedIndex !== index) { - this.overIndex = index; - } - }; - - @action - onDrop = () => { - if (this.draggedIndex !== -1 && this.overIndex !== -1) { - const draggedDoc = this.sortedDocs[this.draggedIndex]; - this.sortedDocs.splice(this.draggedIndex, 1); - this.sortedDocs.splice(this.overIndex, 0, draggedDoc); - this.draggedIndex = -1; - this.overIndex = -1; - } - }; - - @action - onDragEnd = () => { - this.draggedIndex = -1; - this.overIndex = -1; - }; + // @action + // onDragStart = (index: number) => { + // this.draggedIndex = index; + // }; + + // @action + // onDragOver = (index: number) => { + // if (this.draggedIndex !== index) { + // this.overIndex = index; + // } + // }; + + // @action + // onDrop = () => { + // if (this.draggedIndex !== -1 && this.overIndex !== -1) { + // const draggedDoc = this.sortedDocs[this.draggedIndex]; + // this.sortedDocs.splice(this.draggedIndex, 1); + // this.sortedDocs.splice(this.overIndex, 0, draggedDoc); + // this.draggedIndex = -1; + // this.overIndex = -1; + // } + // }; + + // @action + // onDragEnd = () => { + // this.draggedIndex = -1; + // this.overIndex = -1; + // }; /** * Actually renders all the cards @@ -564,7 +563,7 @@ export class CollectionCardView extends CollectionSubView() { const indexInRow = index % this._maxRowCount; const rowIndex = Math.trunc(index / this._maxRowCount); const rowCenterIndex = Math.min(this._maxRowCount, this.sortedDocs.length - rowIndex * this._maxRowCount)/2; - return (rowCenterIndex - indexInRow) * 100; + return (rowCenterIndex - indexInRow) * 100 - 50; } return (
Date: Tue, 18 Jun 2024 14:33:47 -0400 Subject: feat: added view of labels on docs in freeform --- src/client/views/KeywordBox.tsx | 69 +++++++++++++++++++ src/client/views/StyleProvider.scss | 13 ++++ src/client/views/StyleProvider.tsx | 9 +++ .../collectionFreeForm/ImageLabelBox.tsx | 79 ++++++++++++++++------ src/client/views/nodes/DocumentView.tsx | 2 +- src/client/views/nodes/ImageBox.tsx | 9 +++ 6 files changed, 161 insertions(+), 20 deletions(-) create mode 100644 src/client/views/KeywordBox.tsx (limited to 'src') diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx new file mode 100644 index 000000000..3faddeb64 --- /dev/null +++ b/src/client/views/KeywordBox.tsx @@ -0,0 +1,69 @@ +import { action, makeObservable } from 'mobx'; +import { observer } from 'mobx-react'; +import React from 'react'; +import { Doc } from '../../fields/Doc'; +import { DocData } from '../../fields/DocSymbols'; +import { List } from '../../fields/List'; +import { ObservableReactComponent } from './ObservableReactComponent'; + +interface KeywordBoxProps { + _doc: Doc; + _isEditing: boolean; +} + +@observer +export class KeywordBox extends ObservableReactComponent { + constructor(props: any) { + super(props); + makeObservable(this); + } + + @action + setToEditing = () => { + this._props._isEditing = true; + }; + + @action + setToView = () => { + this._props._isEditing = false; + }; + + submitLabel = () => {}; + + onInputChange = () => {}; + + render() { + const keywordsList = this._props._doc![DocData].data_labels; + return ( +
+ {(keywordsList as List).map(label => { + return ( +
+ {label} +
+ ); + })} + {this._props._isEditing ? ( +
+ { + e.key === 'Enter' ? this.submitLabel() : null; + e.stopPropagation(); + }} + type="text" + placeholder="Input keywords for document..." + aria-label="keyword-input" + className="keyword-input" + style={{ width: '100%', borderRadius: '5px' }} + /> +
+ ) : ( +
+ )} +
+ ); + } +} diff --git a/src/client/views/StyleProvider.scss b/src/client/views/StyleProvider.scss index ce00f6101..1e2af9a3a 100644 --- a/src/client/views/StyleProvider.scss +++ b/src/client/views/StyleProvider.scss @@ -53,3 +53,16 @@ .styleProvider-treeView-icon { opacity: 0; } + +.keywords-container { + display: flex; + flex-wrap: wrap; +} + +.keyword { + padding: 5px 10px; + background-color: lightblue; + border: 1px solid black; + border-radius: 5px; + white-space: nowrap; +} diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index b7f8a3170..fb509516a 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -12,7 +12,9 @@ import { BsArrowDown, BsArrowDownUp, BsArrowUp } from 'react-icons/bs'; import { FaFilter } from 'react-icons/fa'; import { ClientUtils, DashColor, lightOrDark } from '../../ClientUtils'; import { Doc, Opt, StrListCast } from '../../fields/Doc'; +import { DocData } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; +import { List } from '../../fields/List'; import { ScriptField } from '../../fields/ScriptField'; import { BoolCast, Cast, DocCast, ImageCast, NumCast, ScriptCast, StrCast } from '../../fields/Types'; import { AudioAnnoState } from '../../server/SharedMediaTypes'; @@ -23,6 +25,7 @@ import { SnappingManager } from '../util/SnappingManager'; import { undoBatch, UndoManager } from '../util/UndoManager'; import { TreeSort } from './collections/TreeSort'; import { Colors } from './global/globalEnums'; +import { KeywordBox } from './KeywordBox'; import { DocumentView, DocumentViewProps } from './nodes/DocumentView'; import { FieldViewProps } from './nodes/FieldView'; import { StyleProp } from './StyleProp'; @@ -367,12 +370,18 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); }; + const keywords = () => { + if (doc && doc![DocData].data_labels && doc![DocData].showLabels) { + return () + } + } return ( <> {paint()} {lock()} {filter()} {audio()} + {keywords()} ); } diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index 571a4504f..cfb81e1a0 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -5,7 +5,7 @@ import { observer } from 'mobx-react'; import React from 'react'; import { Doc, NumListCast, Opt } from '../../../../fields/Doc'; import { Docs } from '../../../documents/Documents'; -import { CollectionViewType, DocumentType } from '../../../documents/DocumentTypes'; +import { DocumentType } from '../../../documents/DocumentTypes'; import { ViewBoxBaseComponent } from '../../DocComponent'; import { FieldView, FieldViewProps } from '../../nodes/FieldView'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; @@ -24,6 +24,9 @@ import { List } from '../../../../fields/List'; import { DragManager } from '../../../util/DragManager'; import { OpenWhere } from '../../nodes/OpenWhere'; import similarity from 'compute-cosine-similarity'; +import { DocumentView } from '../../nodes/DocumentView'; + +export class ImageInformationItem {} export class ImageLabelBoxData { static _instance: ImageLabelBoxData; @@ -101,7 +104,6 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { makeObservable(this); ring.register(); ImageLabelBox.Instance = this; - console.log('Image Box Has Been Initialized'); } // ImageLabelBox.Instance.setData() @@ -127,7 +129,6 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { @action startLoading = () => { this._loading = true; - console.log('Start loading has been called!'); }; @action @@ -138,6 +139,11 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { @action toggleDisplayInformation = () => { this._displayImageInformation = !this._displayImageInformation; + if (this._displayImageInformation) { + this._selectedImages.forEach(doc => (doc[DocData].showLabels = true)); + } else { + this._selectedImages.forEach(doc => (doc[DocData].showLabels = false)); + } }; @action @@ -155,33 +161,58 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { classifyImagesInBox = async () => { this.startLoading(); + // const imageInfos = this._selectedImages.map(async doc => { + // if (!doc[DocData].data_labels) { + // const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); + // return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => + // !hrefBase64 ? undefined : + // gptImageLabel(hrefBase64).then(labels => + // Promise.all(labels.split('\n').map(label => gptGetEmbedding(label))).then(embeddings => + // ({ doc, embeddings, labels }))) ); // prettier-ignore + // } + // }); // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. + const imageInfos = this._selectedImages.map(async doc => { if (!doc[DocData].data_labels) { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => !hrefBase64 ? undefined : gptImageLabel(hrefBase64).then(labels => - Promise.all(labels.split('\n').map(label => gptGetEmbedding(label))).then(embeddings => - ({ doc, embeddings, labels }))) ); // prettier-ignore + + ({ doc, labels }))) ; // prettier-ignore } - }); // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. + }); (await Promise.all(imageInfos)).forEach(imageInfo => { - if (imageInfo && imageInfo.embeddings && Array.isArray(imageInfo.embeddings)) { - imageInfo.doc[DocData].data_labels = imageInfo.labels; + if (imageInfo) { + imageInfo.doc[DocData].data_labels = new List(); const labels = imageInfo.labels.split('\n'); labels.forEach(label => { - label = label.replace(/^\d+\.\s*/, '').trim(); + label = label.replace(/^\d+\.\s*|-|\*/, '').trim(); imageInfo.doc[DocData][`${label}`] = true; - }); - - numberRange(3).forEach(n => { - imageInfo.doc[`data_labels_embedding_${n + 1}`] = new List(imageInfo.embeddings[n]); + (imageInfo.doc[DocData].data_labels as List).push(label); }); } }); // Add the labels as fields to each image. + // (await Promise.all(imageInfos)).forEach(imageInfo => { + // if (imageInfo && imageInfo.embeddings && Array.isArray(imageInfo.embeddings)) { + // imageInfo.doc[DocData].data_labels = new List(); + + // const labels = imageInfo.labels.split('\n'); + // labels.forEach(label => { + // label = label.replace(/^\d+\.\s*|-|\*/, '').trim(); + // imageInfo.doc[DocData][`${label}`] = true; + // (imageInfo.doc[DocData].data_labels as List).push(label); + // }); + + // numberRange(5).forEach(n => { + // imageInfo.doc[`data_labels_embedding_${n + 1}`] = new List(imageInfo.embeddings[n]); + // }); + // } + // }); // Add the labels as fields to each image. + this.endLoading(); }; @@ -189,7 +220,13 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { * Groups images to most similar labels. */ groupImagesInBox = action(async () => { - console.log('Calling!'); + this._selectedImages.forEach(doc => { + (doc[DocData].data_labels as List).forEach(async (label, index) => { + const embedding = await gptGetEmbedding(label); + doc[`data_labels_embedding_${index + 1}`] = new List(embedding); + }); + }); + const labelToEmbedding = new Map(); // Create embeddings for the labels. await Promise.all(this._labelGroups.map(async label => gptGetEmbedding(label).then(labelEmbedding => labelToEmbedding.set(label, labelEmbedding)))); @@ -197,7 +234,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { // For each image, loop through the labels, and calculate similarity. Associate it with the // most similar one. this._selectedImages.forEach(doc => { - const embedLists = numberRange(3).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); + const embedLists = numberRange(5).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && (1 - index * 0.1) * similarity(Array.from(embedding), l)!) || 0)); const {label: mostSimilarLabelCollect} = this._labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) @@ -293,10 +330,14 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { {this._selectedImages.map(doc => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return ( -
this._props.addDocTab(doc, OpenWhere.addRightKeyvalue)}> - -
- {(doc[DocData].data_labels as string).split('\n').map(label => { +
+ { + await DocumentView.showDocument(doc, { willZoomCentered: true }); + }}> +
this._props.addDocTab(doc, OpenWhere.addRightKeyvalue)}> + {(doc[DocData].data_labels as List).map(label => { return (
{label} diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index 7a1f94948..9ff96c692 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -573,7 +573,7 @@ export class DocumentViewInternal extends DocComponent DocumentView.SetLightboxDoc(this.Document), icon: 'external-link-alt' }); } - appearanceItems.push({ description: 'Pin', event: () => this._props.pinToPres(this.Document, {}), icon: 'eye' }); + appearanceItems.push({ description: 'Pin', event: () => this._props.pinToPres(this.Document, {}), icon: 'map-pin' }); if (this.Document._layout_isFlashcard) { appearanceItems.push({ description: 'Create ChatCard', event: () => this.askGPT(), icon: 'id-card' }); } diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index 3da878a4f..fb90f907f 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -1,5 +1,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; +import zIndex from '@mui/material/styles/zIndex'; import { Colors } from 'browndash-components'; import { action, computed, IReactionDisposer, makeObservable, observable, ObservableMap, reaction } from 'mobx'; import { observer } from 'mobx-react'; @@ -10,6 +11,7 @@ import { Doc, DocListCast, Opt } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { InkTool } from '../../../fields/InkField'; +import { List } from '../../../fields/List'; import { ObjectField } from '../../../fields/ObjectField'; import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; import { ImageField } from '../../../fields/URLField'; @@ -281,6 +283,13 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { }), icon: 'pencil-alt', }); + funcs.push({ + description: 'Toggle Keywords', + event: () => { + this.Document[DocData].showLabels = !this.Document[DocData].showLabels; + }, + icon: 'eye', + }); ContextMenu.Instance?.addItem({ description: 'Options...', subitems: funcs, icon: 'asterisk' }); } }; -- cgit v1.2.3-70-g09d2 From 3f940bd45fd1bf72f6c16edc188f754b01f689ba Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Fri, 21 Jun 2024 15:11:23 -0400 Subject: yay dragging --- src/client/documents/Documents.ts | 3 +- src/client/util/CurrentUserUtils.ts | 12 +- src/client/views/MainView.tsx | 3 +- .../views/collections/CollectionCardDeckView.tsx | 231 ++++++++++++--------- 4 files changed, 149 insertions(+), 100 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 34407c641..a190fe11b 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -479,8 +479,9 @@ export class DocumentOptions { userColor?: STRt = new StrInfo('color associated with a Dash user (seen in header fields of shared documents)'); cardSort?: STRt = new StrInfo('way cards are sorted in deck view'); - cardSortForDropDown?: STRt = new StrInfo('needed for dropdown and i dont know why') + // cardSortForDropDown?: STRt = new StrInfo('needed for dropdown and i dont know why') cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); + cardSort_activeIcons?: List; cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) } diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 2ca2ce9c9..94eee6711 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -660,13 +660,15 @@ pie title Minerals in my tap water } static cardTools(): Button[] { return [ - { btnList: new List(["Time", "Type", "Color", "Chat GPT", "Custom 1", "Custom 2", "Custom 3" ]), - title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 100, scripts: { script: '{ return setCardSort(value, _readOnly_); }'}}, + // { btnList: new List(["Time", "Type", "Color", "Chat GPT", "Custom 1", "Custom 2", "Custom 3" ]), + // title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 100, scripts: { script: '{ return setCardSort(value, _readOnly_); }'}}, // { title: "Font", toolTip: "Font", width: 100, btnType: ButtonType.DropdownList, toolType:"font", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, // btnList: new List(["Roboto", "Roboto Mono", "Nunito", "Times New Roman", "Arial", "Georgia", "Comic Sans MS", "Tahoma", "Impact", "Crimson Text"]) }, - // { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "AI Sort", icon:"palette", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "AIs", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "1st", icon:"Visibility", toolTip:"Filter likes", width: 150, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index f61c784df..b06d785e1 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -548,7 +548,8 @@ export class MainView extends ObservableReactComponent<{}> { fa.faRobot, fa.faSatellite, fa.faStar, - fa.faCloud + fa.faCloud, + fa.faBolt ] ); } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 76536ed48..2ad7f0ed1 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -3,7 +3,7 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { ClientUtils, DashColor, returnFalse, returnZero } from '../../../ClientUtils'; import { emptyFunction, numberRange } from '../../../Utils'; -import { Doc, NumListCast } from '../../../fields/Doc'; +import { Doc, NumListCast, StrListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { BoolCast, Cast, DateCast, NumCast, RTFCast, ScriptCast, StrCast } from '../../../fields/Types'; @@ -27,12 +27,14 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { SettingsManager } from '../../util/SettingsManager'; import { Tooltip } from '@mui/material'; import { dropActionType } from '../../util/DropActionTypes'; +import { List } from '../../../fields/List'; enum cardSortings { Time = 'time', Type = 'type', Color = 'color', Custom = 'custom', + Drag = 'drag', None = '', } @observer @@ -48,7 +50,7 @@ export class CollectionCardView extends CollectionSubView() { @observable _docRefs = new ObservableMap(); _draggerRef = React.createRef(); @observable _maxRowCount = 10; - @observable _docsDraggedIndex: number[] = []; + @observable _docDraggedIndex: number = -1; @observable _isACardBeingDragged: boolean = false; @observable overIndex: number = -1; @@ -73,12 +75,6 @@ export class CollectionCardView extends CollectionSubView() { } }; - protected createDashEventsTarget = (ele: HTMLDivElement | null) => { - this._dropDisposer?.(); - if (ele) { - this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this.layoutDoc); - } - }; constructor(props: any) { super(props); @@ -145,12 +141,7 @@ export class CollectionCardView extends CollectionSubView() { return regularDocs; } - /** - * Determines the order in which the cards will be rendered depending on the current sort type - */ - @computed get sortedDocs() { - return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.layoutDoc.sortDesc)); - } + /** * Number of rows of cards to be rendered @@ -226,27 +217,71 @@ export class CollectionCardView extends CollectionSubView() { return Math.abs(stepMag * (apex - index - 1)) - rowOffset; }; - /** - * Translates the selected node to the middle fo the screen - * @param index - * @returns - */ - // translateSelected = (index: number): number => { - // // if (this.isSelected(index)) { - // const middleOfPanel = this._props.PanelWidth() / 2; - // const scaledNodeWidth = this.panelWidth() * 1.25; + findCardDropIndex = (mouseX: number, mouseY: number) => { + + const amCardsTotal = this.sortedDocs.length + let index = 0; + const cardWidth = amCardsTotal < this._maxRowCount ? this._props.PanelWidth() / amCardsTotal : this._props.PanelWidth() / this._maxRowCount; + + // Calculate the adjusted X position accounting for the initial offset + let adjustedX = mouseX + + const amRows = Math.ceil(amCardsTotal / this._maxRowCount); + const rowHeight = this._props.PanelHeight( ) / amRows + const currRow = Math.floor((mouseY - 100) / rowHeight) //rows start at 0 + + if (adjustedX < 0) { + return 0; // Before the first column + } + + if (amCardsTotal < this._maxRowCount) { + index = Math.floor(adjustedX / cardWidth); + } + + else if (currRow != amRows -1 ){ + index = Math.floor(adjustedX / cardWidth) + (currRow * this._maxRowCount) + } - // // Calculate the position of the node's left edge before scaling - // const nodeLeftEdge = index * this.panelWidth(); - // // Find the center of the node after scaling - // const scaledNodeCenter = nodeLeftEdge + scaledNodeWidth / 2; + else { + // console.log(amRows + "am rows") + const rowAmCards = amCardsTotal - (currRow * this._maxRowCount) + const offset = ((this._maxRowCount - rowAmCards ) / 2) * cardWidth + adjustedX = mouseX - offset - // // Calculate the translation needed to align the scaled node's center with the panel's center - // const translation = middleOfPanel - scaledNodeCenter - scaledNodeWidth - scaledNodeWidth / 4; + index = Math.floor(adjustedX / cardWidth) + (currRow * this._maxRowCount); + } + return index; + }; - // return translation; - // }; + @action + onPointerMove = (e: React.PointerEvent) => { + if (DragManager.docsBeingDragged.length != 0 ) { + this._isACardBeingDragged = true + + const newIndex = this.findCardDropIndex(e.clientX, e.clientY); + + if (newIndex !== this._docDraggedIndex && newIndex != -1) { + this._docDraggedIndex = newIndex; + } + } + }; + + onInternalDrop = (e: Event, de: DragManager.DropEvent) => { + if (de.complete.docDragData) { + this._isACardBeingDragged = false; + this._docDraggedIndex = -1; + e.stopPropagation() + const draggedDocs = de.complete.docDragData?.draggedDocuments; + return true; + } + return false; + }; + + @computed get sortedDocs() { + // console.log("hi hi hi") + return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.layoutDoc.sortDesc), this._docDraggedIndex); + } /** * Called in the sortedDocsType method. Compares the cards' value in regards to the desired sort type-- earlier cards are move to the * front, latter cards to the back @@ -255,7 +290,8 @@ export class CollectionCardView extends CollectionSubView() { * @param isDesc * @returns */ - sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean) => { + sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { + // console.log('HIIIIIIIII') if (sortType === cardSortings.None) return docs; docs.sort((docA, docB) => { const [typeA, typeB] = (() => { @@ -281,9 +317,25 @@ export class CollectionCardView extends CollectionSubView() { return isDesc ? -out : out; // Reverse the sort order if descending is true }); + if (dragIndex != -1){ + // console.log("what what") + + const draggedDoc = DragManager.docsBeingDragged[0] + const originalIndex = docs.findIndex(doc => doc === draggedDoc); + + + // Remove the dragged document from its original position + docs.splice(originalIndex, 1); + // Insert the dragged document at the new position + docs.splice(dragIndex, 0, draggedDoc); + // } + } + return docs; }; + + displayDoc = (doc: Doc, screenToLocalTransform: () => Transform) => ( { - this.cardSort_customField && (doc[this.cardSort_customField] = buttonID); - }, 'toggle custom button'); - + /** * A list of the text content of all the child docs. RTF documents will have just their text and pdf documents will have the first 50 words. * Image documents are converted to bse64 and gpt generates a description for them. all other documents use their title. This string is @@ -456,27 +499,37 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ renderButtons = (doc: Doc, cardSort: cardSortings): JSX.Element | null => { - if (cardSort !== cardSortings.Custom) return null; + // if (cardSort !== cardSortings.Custom) return null; - const amButtons = Math.max( - 4, - this.childDocs?.reduce((set, d) => { - if (this.cardSort_customField) { - set.add(NumCast(d[this.cardSort_customField])); - } - return set; - }, new Set()).size ?? 0 - ); + const amButtons = 4 + + // const amButtons = Math.max( + // 4, + // this.childDocs?.reduce((set, d) => { + // if (this.cardSort_customField) { + // set.add(NumCast(d[this.cardSort_customField])); + // } + // return set; + // }, new Set()).size ?? 0 + // ); const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); + const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; + const iconMap: { [key: number]: any } = { + 0: 'star', + 1: 'heart', + 2: 'cloud', + 3: 'bolt' + }; + return (
{numberRange(amButtons).map(i => ( - Click to add/remove this card from group {i + 1}
}> -
}> + ))} @@ -484,53 +537,44 @@ export class CollectionCardView extends CollectionSubView() { ); }; - getButtonIcon = (isActive: boolean): JSX.Element => { - const iconMap: { [key: string]: any } = { - like: 'heart', - chat: 'robot', - idea: 'cloud', - }; + /** + * Toggles the buttons between on and off when creating custom sort groupings/changing those created by gpt + * @param childPairIndex + * @param buttonID + * @param doc + */ + toggleButton = undoable((doc: Doc, icon: string) => { + + + + // this.cardSort_customField && (doc[this.cardSort_customField] = buttonID); + + // doc.cardSort_activeIcons = new List() + - const icon = iconMap[this.cardSort_customField ?? ''] || 'star'; + const list = StrListCast(doc.cardSort_activeIcons); + doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); + + + + // StrListCast(doc.cardSort_activeIcons).push(iconMap[buttonID]) + }, 'toggle card tag'); + + + getButtonIcon = (doc: Doc, icon: any): JSX.Element => { + + const isActive = StrListCast(doc.cardSort_activeIcons).includes(icon) + + console.log(StrListCast(doc.cardSort_activeIcons)) const color = isActive ? '#4476f7' : '#323232'; return ; }; - // @action - // onDragStart = (index: number) => { - // this.draggedIndex = index; - // }; - - // @action - // onDragOver = (index: number) => { - // if (this.draggedIndex !== index) { - // this.overIndex = index; - // } - // }; - - // @action - // onDrop = () => { - // if (this.draggedIndex !== -1 && this.overIndex !== -1) { - // const draggedDoc = this.sortedDocs[this.draggedIndex]; - // this.sortedDocs.splice(this.draggedIndex, 1); - // this.sortedDocs.splice(this.overIndex, 0, draggedDoc); - // this.draggedIndex = -1; - // this.overIndex = -1; - // } - // }; - - // @action - // onDragEnd = () => { - // this.draggedIndex = -1; - // this.overIndex = -1; - // }; - /** * Actually renders all the cards */ renderCards = () => { - console.log(DragManager.docsBeingDragged.length + 'drag ha'); const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); const isEmpty = this.childDocsWithoutLinks.length === 0; @@ -599,8 +643,9 @@ export class CollectionCardView extends CollectionSubView() { render() { return (
this.onPointerMove(e)} className="collectionCardView-outer" - ref={this.createDashEventsTarget} + ref={(ele: HTMLDivElement | null) => this.createDashEventsTarget(ele)} style={{ background: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor), color: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color), -- cgit v1.2.3-70-g09d2 From 2f92d924a8dc1675cd12b08bbac7f57b2335a7b2 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Mon, 24 Jun 2024 12:04:43 -0400 Subject: fixing --- src/client/util/CurrentUserUtils.ts | 5 +++-- src/client/views/collections/CollectionCardDeckView.tsx | 10 ---------- src/client/views/global/globalScripts.ts | 10 +++++----- 3 files changed, 8 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 94eee6711..9cf3bfe9b 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -667,9 +667,10 @@ pie title Minerals in my tap water { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "AI Sort", icon:"palette", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + - { title: "AIs", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "AIs", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "1st", icon:"Visibility", toolTip:"Filter likes", width: 150, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 2ad7f0ed1..09cddda19 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -660,16 +660,6 @@ export class CollectionCardView extends CollectionSubView() { onMouseLeave={() => this.setHoveredNodeIndex(-1)}> {this.renderCards()}
-
- { - this.layoutDoc._pivotField = fieldKey; - // this.removeEmptyColumns(); - }, 'change pivot field')} - placeholder={StrCast(this.layoutDoc._pivotField)} - /> -
); } diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index cef913837..1344dd071 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -175,15 +175,15 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' }], ['time', { checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "time", - setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "time", + setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "time" ? doc.cardSort = '' : doc.cardSort = 'time', }], ['docType', { checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "type", - setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "type", + setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "type" ? doc.cardSort = '' : doc.cardSort = 'type', }], ['color', { checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "color", - setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "color", + setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "color" ? doc.cardSort = '' : doc.cardSort = 'color', }], ['links', { checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", @@ -216,8 +216,8 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' ['chat', { checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "chat", setDoc: (doc: Doc, dv: DocumentView) => { - doc.cardSort = "custom"; - doc.cardSort_customField = "chat"; + doc.cardSort === "custom" ? doc.cardSort = '' : doc.cardSort = 'custom'; + doc.cardSort_customField === "chat" ? doc.cardSort_customField = '' : doc.cardSort_customField = 'chat'; doc.cardSort_visibleSortGroups = new List(); }, }], -- cgit v1.2.3-70-g09d2 From 3190f1eb07a47a5e1ccdd20e346b47094118292d Mon Sep 17 00:00:00 2001 From: IEatChili Date: Wed, 26 Jun 2024 13:58:20 -0400 Subject: feat: worked more on keyword input for docs --- src/client/views/DocumentButtonBar.tsx | 19 +++ src/client/views/DocumentDecorations.tsx | 1 + src/client/views/KeywordBox.tsx | 168 +++++++++++++++++---- src/client/views/StyleProvider.scss | 31 +++- src/client/views/StyleProvider.tsx | 6 +- .../collectionFreeForm/ImageLabelBox.tsx | 53 ++----- .../collections/collectionFreeForm/MarqueeView.tsx | 28 +++- src/client/views/nodes/ImageBox.tsx | 7 - 8 files changed, 233 insertions(+), 80 deletions(-) (limited to 'src') diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index 487868169..a75c7098c 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -31,6 +31,7 @@ import { DocumentLinksButton } from './nodes/DocumentLinksButton'; import { DocumentView } from './nodes/DocumentView'; import { OpenWhere } from './nodes/OpenWhere'; import { DashFieldView } from './nodes/formattedText/DashFieldView'; +import { DocData } from '../../fields/DocSymbols'; @observer export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (DocumentView | undefined)[]; stack?: any }> { @@ -282,6 +283,23 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( ); } + @computed + get keywordButton() { + const targetDoc = this.view0?.Document; + return !targetDoc ? null : ( + Open keyword menu
}> +
{ + targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels; + }}> + +
+ + ); + } + @observable _isRecording = false; _stopFunc: () => void = emptyFunction; @computed @@ -452,6 +470,7 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (
{this.pinButton}
{this.recordButton}
{this.calendarButton}
+
{this.keywordButton}
{!Doc.UserDoc().documentLinksButton_fullMenu ? null :
{this.shareButton}
}
{this.menuButton}
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 93c3e3338..20bf8fd9f 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -88,6 +88,7 @@ export class DocumentDecorations extends ObservableReactComponent center.x+x || this.Bounds.r < center.x+x || this.Bounds.y > center.y+y || this.Bounds.b < center.y+y ))); + })); // prettier-ignore } diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index 3faddeb64..8c69f446d 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -1,64 +1,170 @@ -import { action, makeObservable } from 'mobx'; +import { Colors, IconButton } from 'browndash-components'; +import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; import { Doc } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; +import { DragManager, SetupDrag } from '../util/DragManager'; +import { SnappingManager } from '../util/SnappingManager'; +import { DocumentView } from './nodes/DocumentView'; import { ObservableReactComponent } from './ObservableReactComponent'; +interface KeywordItemProps { + doc: Doc; + label: string; + setToEditing: () => void; + isEditing: boolean; +} + +@observer +export class KeywordItem extends ObservableReactComponent { + constructor(props: any) { + super(props); + makeObservable(this); + this.ref = React.createRef(); + } + + private _dropDisposer?: DragManager.DragDropDisposer; + private ref: React.RefObject; + + protected createDropTarget = (ele: HTMLDivElement) => { + this._dropDisposer?.(); + SetupDrag(this.ref, () => undefined); + //ele && (this._dropDisposer = DragManager. (ele, this.onInternalDrop.bind(this), this.layoutDoc)); + //ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this.layoutDoc)); + }; + + @action + removeLabel = () => { + if (this._props.doc[DocData].data_labels) { + this._props.doc[DocData].data_labels = (this._props.doc[DocData].data_labels as List).filter(label => label !== this._props.label) as List; + } + }; + + render() { + return ( +
{}} ref={this.ref}> + {this._props.label} + {this.props.isEditing && } +
+ ); + } +} + interface KeywordBoxProps { - _doc: Doc; - _isEditing: boolean; + doc: Doc; + isEditing: boolean; } @observer export class KeywordBox extends ObservableReactComponent { + @observable _currentInput: string = ''; + //private disposer: () => void; + constructor(props: any) { super(props); makeObservable(this); } + // componentDidMount(): void { + // reaction( + // () => ({ + // isDragging: SnappingManager.IsDragging, + // selectedDoc: DocumentView.SelectedDocs().lastElement(), + // isEditing: this._props.isEditing, + // }), + // ({ isDragging, selectedDoc, isEditing }) => { + // if (isDragging || selectedDoc !== this._props.doc || !isEditing) { + // this.setToView(); + // } + // } + // ); + // } + + // componentWillUnmount() { + // this.disposer(); + // } + @action setToEditing = () => { - this._props._isEditing = true; + this._props.isEditing = true; }; @action setToView = () => { - this._props._isEditing = false; + this._props.isEditing = false; }; - submitLabel = () => {}; + submitLabel = () => { + if (this._currentInput.trim()) { + if (!this._props.doc[DocData].data_labels) { + this._props.doc[DocData].data_labels = new List(); + } - onInputChange = () => {}; + (this._props.doc![DocData].data_labels! as List).push(this._currentInput.trim()); + this._currentInput = ''; // Clear the input box + } + }; + + @action + onInputChange = (e: React.ChangeEvent) => { + this._currentInput = e.target.value; + }; render() { - const keywordsList = this._props._doc![DocData].data_labels; + const keywordsList = this._props.doc[DocData].data_labels ? this._props.doc[DocData].data_labels : new List(); + const seldoc = DocumentView.SelectedDocs().lastElement(); + if (SnappingManager.IsDragging || !(seldoc === this._props.doc) || !this._props.isEditing) { + setTimeout( + action(() => { + if ((keywordsList as List).length === 0) { + this._props.doc[DocData].showLabels = false; + } + this.setToView(); + }) + ); + } + return ( -
- {(keywordsList as List).map(label => { - return ( -
- {label} +
+
+ {(keywordsList as List).map(label => { + return ; + })} +
+ {this._props.isEditing ? ( +
+
+ { + e.key === 'Enter' ? this.submitLabel() : null; + e.stopPropagation(); + }} + type="text" + placeholder="Input keywords for document..." + aria-label="keyword-input" + className="keyword-input" + style={{ width: '100%', borderRadius: '5px' }} + /> +
+
+ { + if ((keywordsList as List).length === 0) { + this._props.doc[DocData].showLabels = false; + } else { + this.setToView(); + } + }} + icon={'x'} + style={{ width: '4px' }} + />
- ); - })} - {this._props._isEditing ? ( -
- { - e.key === 'Enter' ? this.submitLabel() : null; - e.stopPropagation(); - }} - type="text" - placeholder="Input keywords for document..." - aria-label="keyword-input" - className="keyword-input" - style={{ width: '100%', borderRadius: '5px' }} - />
) : (
diff --git a/src/client/views/StyleProvider.scss b/src/client/views/StyleProvider.scss index 1e2af9a3a..7cc06f922 100644 --- a/src/client/views/StyleProvider.scss +++ b/src/client/views/StyleProvider.scss @@ -57,12 +57,41 @@ .keywords-container { display: flex; flex-wrap: wrap; + flex-direction: column; + padding-bottom: 4px; + border: 1px solid; + border-radius: 4px; +} + +.keywords-list { + display: flex; + flex-wrap: wrap; } .keyword { - padding: 5px 10px; + padding: 5px 5px; background-color: lightblue; border: 1px solid black; border-radius: 5px; white-space: nowrap; + display: flex; + align-items: center; +} + +.keyword-editing-box { + margin-top: 8px; +} + +.keyword-input-box { + // display: flex; + // align-items: center; + // align-content: center; + margin: auto; + align-self: center; + width: 90%; +} + +.keyword-buttons { + margin-left: auto; + width: 10%; } diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index fb509516a..f4d73cd1d 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -371,8 +371,10 @@ export function DefaultStyleProvider(doc: Opt, props: Opt { - if (doc && doc![DocData].data_labels && doc![DocData].showLabels) { - return () + if (doc && doc![DocData].showLabels && (!doc[DocData].data_labels || (doc[DocData].data_labels as List).length === 0)){ + return () + } else if (doc && doc![DocData].data_labels && doc![DocData].showLabels) { + return () } } return ( diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index cfb81e1a0..fec4d3e12 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -123,7 +123,6 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { @action groupImages = () => { this.groupImagesInBox(); - MainView.Instance.closeFlyout(); }; @action @@ -161,16 +160,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { classifyImagesInBox = async () => { this.startLoading(); - // const imageInfos = this._selectedImages.map(async doc => { - // if (!doc[DocData].data_labels) { - // const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); - // return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => - // !hrefBase64 ? undefined : - // gptImageLabel(hrefBase64).then(labels => - // Promise.all(labels.split('\n').map(label => gptGetEmbedding(label))).then(embeddings => - // ({ doc, embeddings, labels }))) ); // prettier-ignore - // } - // }); // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. + // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. const imageInfos = this._selectedImages.map(async doc => { if (!doc[DocData].data_labels) { @@ -178,8 +168,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => !hrefBase64 ? undefined : gptImageLabel(hrefBase64).then(labels => - - ({ doc, labels }))) ; // prettier-ignore + ({ doc, labels }))) ; // prettier-ignore } }); @@ -194,24 +183,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { (imageInfo.doc[DocData].data_labels as List).push(label); }); } - }); // Add the labels as fields to each image. - - // (await Promise.all(imageInfos)).forEach(imageInfo => { - // if (imageInfo && imageInfo.embeddings && Array.isArray(imageInfo.embeddings)) { - // imageInfo.doc[DocData].data_labels = new List(); - - // const labels = imageInfo.labels.split('\n'); - // labels.forEach(label => { - // label = label.replace(/^\d+\.\s*|-|\*/, '').trim(); - // imageInfo.doc[DocData][`${label}`] = true; - // (imageInfo.doc[DocData].data_labels as List).push(label); - // }); - - // numberRange(5).forEach(n => { - // imageInfo.doc[`data_labels_embedding_${n + 1}`] = new List(imageInfo.embeddings[n]); - // }); - // } - // }); // Add the labels as fields to each image. + }); this.endLoading(); }; @@ -220,12 +192,15 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { * Groups images to most similar labels. */ groupImagesInBox = action(async () => { - this._selectedImages.forEach(doc => { - (doc[DocData].data_labels as List).forEach(async (label, index) => { + this.startLoading(); + + for (const doc of this._selectedImages) { + for (let index = 0; index < (doc[DocData].data_labels as List).length; index++) { + const label = (doc[DocData].data_labels as List)[index]; const embedding = await gptGetEmbedding(label); doc[`data_labels_embedding_${index + 1}`] = new List(embedding); - }); - }); + } + } const labelToEmbedding = new Map(); // Create embeddings for the labels. @@ -234,8 +209,8 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { // For each image, loop through the labels, and calculate similarity. Associate it with the // most similar one. this._selectedImages.forEach(doc => { - const embedLists = numberRange(5).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); - const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && (1 - index * 0.1) * similarity(Array.from(embedding), l)!) || 0)); + const embedLists = numberRange((doc[DocData].data_labels as List).length).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); + const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && similarity(Array.from(embedding), l)!) || 0)); const {label: mostSimilarLabelCollect} = this._labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) .reduce((prev, cur) => cur.similarityScore < 0.3 || cur.similarityScore <= prev.similarityScore ? prev: cur, @@ -243,9 +218,13 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { doc[DocData].data_label = mostSimilarLabelCollect; // The label most similar to the image's contents. }); + this.endLoading(); + if (this._selectedImages) { MarqueeOptionsMenu.Instance.groupImages(); } + + MainView.Instance.closeFlyout(); }); render() { diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index f03a9d62d..197681f62 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -455,8 +455,32 @@ export class MarqueeView extends ObservableReactComponent { - this._props.Document._type_collection = CollectionViewType.Time; // Change the collection view to a Time view. - this._props.Document.pivotField = 'data_label'; // Sets the pivot to be the 'data_label'. + const labelGroups: string[] = ImageLabelBoxData.Instance._labelGroups; + const labelToCollection: Map = new Map(); + const selectedImages = ImageLabelBoxData.Instance._docs; + + // Create new collections associated with each label and get the embeddings for the labels. + let x_offset = 0; + for (const label of labelGroups) { + const newCollection = this.getCollection([], undefined, false); + newCollection._freeform_panX = this.Bounds.left + this.Bounds.width / 2; + newCollection._freeform_panY = this.Bounds.top + this.Bounds.height / 2; + console.log(newCollection._x); + labelToCollection.set(label, newCollection); + this._props.addDocument?.(newCollection); + //newCollection._x = (newCollection._x as number) + x_offset; + //x_offset += newCollection._width as number; + } + + for (const doc of selectedImages) { + if (doc[DocData].data_label) { + Doc.AddDocToList(labelToCollection.get(doc[DocData].data_label as string)!, undefined, doc); + this._props.removeDocument?.(doc); + } + } + + //this._props.Document._type_collection = CollectionViewType.Time; // Change the collection view to a Time view. + //this._props.Document.pivotField = 'data_label'; // Sets the pivot to be the 'data_label'. }); @undoBatch diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index fb90f907f..1c90fae9e 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -283,13 +283,6 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { }), icon: 'pencil-alt', }); - funcs.push({ - description: 'Toggle Keywords', - event: () => { - this.Document[DocData].showLabels = !this.Document[DocData].showLabels; - }, - icon: 'eye', - }); ContextMenu.Instance?.addItem({ description: 'Options...', subitems: funcs, icon: 'asterisk' }); } }; -- cgit v1.2.3-70-g09d2 From 3a3d4433e0b4bfc134370ba4938f22cbed61428b Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Wed, 26 Jun 2024 14:17:18 -0400 Subject: sigh --- src/client/apis/gpt/GPT.ts | 7 +- src/client/documents/Documents.ts | 8 +- src/client/util/CurrentUserUtils.ts | 46 ++++--- .../views/collections/CollectionCardDeckView.tsx | 147 ++++++++++++--------- src/client/views/global/globalScripts.ts | 94 +++++++------ src/client/views/pdf/GPTPopup/GPTPopup.tsx | 1 + 6 files changed, 182 insertions(+), 121 deletions(-) (limited to 'src') diff --git a/src/client/apis/gpt/GPT.ts b/src/client/apis/gpt/GPT.ts index 585398204..40af70d99 100644 --- a/src/client/apis/gpt/GPT.ts +++ b/src/client/apis/gpt/GPT.ts @@ -42,8 +42,9 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { sort: { model: 'gpt-4o', maxTokens: 2048, - temp: 0.5, - prompt: "I'm going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them into lists by shared content. Make sure each description is in only one list. Each list should be separated by `======` with the elements within it separated by `~~~~~~`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted. It is VERY important that you format it exactly as described, ensuring the proper number of `=` `~` and `-` (6 of each) and no commas.Try to create around 4 groups, but a little more or less is ok. Also, I may provide some more insight after this colon:" + temp: 0.25, + prompt: "The user is going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them by shared content. Make sure each description is only in the list once. Each item should be separated by `======`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted (and mention nothing about the formatting details given in this description). It is VERY important that you format it exactly as described, ensuring the proper number of `=` and `-` (6 of each) and no commas" + // prompt: "I'm going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them into lists by shared content. Make sure each description is in only one list. Each list should be separated by `======` with the elements within it separated by `~~~~~~`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted. It is VERY important that you format it exactly as described, ensuring the proper number of `=` `~` and `-` (6 of each) and no commas.Try to create around 4 groups, but a little more or less is ok. Also, I may provide some more insight after this colon:" }, describe: { model: 'gpt-4-vision-preview', maxTokens: 2048, temp: 0, prompt: 'Describe these images in 3-5 words' }, chatcard: { model: 'gpt-4-turbo', maxTokens: 512, temp: 0.5, prompt: 'Answer the following question as a short flashcard response. Do not include a label.' }, @@ -75,7 +76,7 @@ const gptAPICall = async (inputTextIn: string, callType: GPTCallType, prompt?: a // dangerouslyAllowBrowser: true, // }; - const usePrompt = prompt ? opts.prompt + prompt : opts.prompt; + const usePrompt = prompt ? prompt + opts.prompt : opts.prompt; const messages: ChatCompletionMessageParam[] = [ { role: 'system', content: usePrompt }, { role: 'user', content: inputText }, diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index a190fe11b..53422b0c8 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -481,8 +481,12 @@ export class DocumentOptions { cardSort?: STRt = new StrInfo('way cards are sorted in deck view'); // cardSortForDropDown?: STRt = new StrInfo('needed for dropdown and i dont know why') cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); - cardSort_activeIcons?: List; - cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) + cardSort_activeIcons?: List; //icons each card is tagges with + cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) + + // cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) + cardSort_isDesc?: BOOLt = new BoolInfo('whether the cards are sorted ascending or descending'); + test?: STRt = new StrInfo('testing for filtering') } export const DocOptions = new DocumentOptions(); diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 9cf3bfe9b..48e4441de 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -668,15 +668,25 @@ pie title Minerals in my tap water { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + + { title: "Sort", toolTip: "Manage sort order / lock status", icon: "sort" , btnType: ButtonType.MultiToggleButton, toolType:"alignment", ignoreClick: true, + subMenu: [ + { title: "Ascending", toolTip: "Sort the cards in ascending order", btnType: ButtonType.ToggleButton, icon: "sort-up", toolType:"up", ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}' }}, + { title: "Descending", toolTip: "Sort the cards in descending order",btnType: ButtonType.ToggleButton, icon: "sort-down",toolType:"down",ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, + ]}, + { title: "Filter", icon:"Filter", toolTip:"Filter cards by tags", width: 150, subMenu: this.cardGroupTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + + + - // { title: "AIs", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "1st", icon:"Visibility", toolTip:"Filter likes", width: 150, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "2nd", icon:"Visibility", toolTip:"Filter stars", width: 150, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "3rd", icon:"Visibility", toolTip:"Filter ideas", width: 150, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "AIs", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "1st", icon:"Visibility", toolTip:"Filter likes", width: 150, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "2nd", icon:"Visibility", toolTip:"Filter stars", width: 150, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "3rd", icon:"Visibility", toolTip:"Filter ideas", width: 150, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, ] } // static labelTools(): Button[] { @@ -691,15 +701,21 @@ pie title Minerals in my tap water // { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // ] // } - static cardGroupTools(icon: string): Button[] { + static cardGroupTools(): Button[] { return [ - { title: "Group 1", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Group 2", icon, toolTip:"Click to toggle group 2's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Group 3", icon, toolTip:"Click to toggle group 3's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Group 4", icon, toolTip:"Click to toggle group 4's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"4", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "", icon, toolTip:"Click to toggle group 5's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"5", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "", icon, toolTip:"Click to toggle group 6's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "", icon, toolTip:"Click to toggle group 7's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Star", icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Heart", icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Bolt", icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + + + // { title: "Group 1", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Group 2", icon, toolTip:"Click to toggle group 2's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Group 3", icon, toolTip:"Click to toggle group 3's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Group 4", icon, toolTip:"Click to toggle group 4's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"4", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "", icon, toolTip:"Click to toggle group 5's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"5", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "", icon, toolTip:"Click to toggle group 6's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "", icon, toolTip:"Click to toggle group 7's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, ] } static viewTools(): Button[] { diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 09cddda19..d8f4362f1 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -34,7 +34,7 @@ enum cardSortings { Type = 'type', Color = 'color', Custom = 'custom', - Drag = 'drag', + Chat = 'chat', None = '', } @observer @@ -45,7 +45,7 @@ export class CollectionCardView extends CollectionSubView() { private _textToDoc = new Map(); @observable _forceChildXf = false; - @observable _isLoading = false; + // @observable _isLoading = false; @observable _hoveredNodeIndex = -1; @observable _docRefs = new ObservableMap(); _draggerRef = React.createRef(); @@ -94,9 +94,10 @@ export class CollectionCardView extends CollectionSubView() { }; componentDidMount(): void { + this.Document.childFilters_boolean = 'OR' this._disposers.sort = reaction( - () => ({ cardSort: this.cardSort, field: this.cardSort_customField }), - ({ cardSort, field }) => (cardSort === cardSortings.Custom && field === 'chat' ? this.openChatPopup() : GPTPopup.Instance.setVisible(false)) + () => ({ cardSort: this.cardSort }), + ({ cardSort}) => (cardSort === cardSortings.Chat ? this.openChatPopup() : GPTPopup.Instance.setVisible(false)) ); } @@ -112,6 +113,7 @@ export class CollectionCardView extends CollectionSubView() { @computed get cardSort() { return StrCast(this.Document.cardSort) as any as cardSortings; } + /** * how much to scale down the contents of the view so that everything will fit */ @@ -126,15 +128,13 @@ export class CollectionCardView extends CollectionSubView() { */ @computed get childDocsWithoutLinks() { const regularDocs = this.childDocs.filter(l => l.type !== DocumentType.LINK); - const activeGroups = NumListCast(this.Document.cardSort_visibleSortGroups); + const activeGroups = StrListCast(this.Document.cardSort_visibleSortGroups); - if (activeGroups.length > 0 && this.cardSort === cardSortings.Custom) { + if (activeGroups.length > 0) { return regularDocs.filter(doc => { - // Get the group number for the current index - const groupNumber = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); - // Check if the group number is in the active groups - return groupNumber !== undefined && activeGroups.includes(groupNumber); - }); + const activeTags = StrListCast(doc.cardSort_activeIcons) + return activeTags !== undefined && activeTags.some(tag => activeGroups.includes(tag)); + }) } // Default return for non-custom cardSort or other cases, filtering out links @@ -217,7 +217,7 @@ export class CollectionCardView extends CollectionSubView() { return Math.abs(stepMag * (apex - index - 1)) - rowOffset; }; - findCardDropIndex = (mouseX: number, mouseY: number) => { + findCardDropIndex = (mouseX: number, mouseY: number, direction: 'left' | 'right') => { const amCardsTotal = this.sortedDocs.length let index = 0; @@ -257,8 +257,9 @@ export class CollectionCardView extends CollectionSubView() { onPointerMove = (e: React.PointerEvent) => { if (DragManager.docsBeingDragged.length != 0 ) { this._isACardBeingDragged = true - - const newIndex = this.findCardDropIndex(e.clientX, e.clientY); + + const direction = e.movementX > 0 ? 'right' : 'left'; + const newIndex = this.findCardDropIndex(e.clientX, e.clientY, direction); if (newIndex !== this._docDraggedIndex && newIndex != -1) { this._docDraggedIndex = newIndex; @@ -278,9 +279,13 @@ export class CollectionCardView extends CollectionSubView() { return false; }; + @computed get sortedDocs() { // console.log("hi hi hi") - return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.layoutDoc.sortDesc), this._docDraggedIndex); + // console.log(this.layoutDoc.cardSort_isDesc + "layoutdoc desc") + console.log(this.cardSort + "card sort") + + return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.layoutDoc.cardSort_isDesc), this._docDraggedIndex); } /** * Called in the sortedDocsType method. Compares the cards' value in regards to the desired sort type-- earlier cards are move to the @@ -291,48 +296,53 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { - // console.log('HIIIIIIIII') - if (sortType === cardSortings.None) return docs; - docs.sort((docA, docB) => { - const [typeA, typeB] = (() => { + // if (sortType === cardSortings.None) return docs; + + if(sortType !== cardSortings.None){ + docs.sort((docA, docB) => { + + const [typeA, typeB] = (() => { switch (sortType) { case cardSortings.Time: - return [DateCast(docA.author_date)?.date ?? Date.now(), - DateCast(docB.author_date)?.date ?? Date.now()]; + return [DateCast(docA.author_date)?.date ?? Date.now(), + DateCast(docB.author_date)?.date ?? Date.now()]; case cardSortings.Color: - return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)), // If docA.type is undefined, use an empty string - ClientUtils.hexToHsv(StrCast(docB.backgroundColor))]; // If docB.type is undefined, use an empty string + return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)), + ClientUtils.hexToHsv(StrCast(docB.backgroundColor))]; case cardSortings.Custom: - return [CollectionCardView.getButtonGroup(this.cardSort_customField, docA)??9999, - CollectionCardView.getButtonGroup(this.cardSort_customField, docB)??9999]; - default: return [StrCast(docA.type), // If docA.type is undefined, use an empty string - StrCast(docB.type)]; // If docB.type is undefined, use an empty string - } // prettier-ignore + return [CollectionCardView.getButtonGroup(this.cardSort_customField, docA) ?? 9999, + CollectionCardView.getButtonGroup(this.cardSort_customField, docB) ?? 9999]; + case cardSortings.Chat: + return [NumCast(docA.chat) ?? 9999, + NumCast(docB.chat) ?? 9999] + default: + return [StrCast(docA.type), StrCast(docB.type)] + } })(); - - // console.log(ClientUtils.hexToHsv(StrCast(docA.backgroundColor)) ?? 9999 + "docA col") - // console.log(ClientUtils.hexToHsv(StrCast(docB.backgroundColor)) ?? 9999 + "docB col") - + + // console.log(`Sorting ${sortType}: ${typeA} vs ${typeB}`); const out = typeA < typeB ? -1 : typeA > typeB ? 1 : 0; - return isDesc ? -out : out; // Reverse the sort order if descending is true - }); + // console.log(`Comparison result: ${out} (isDesc: ${isDesc})`); - if (dragIndex != -1){ - // console.log("what what") + if (isDesc){ + return out + } - const draggedDoc = DragManager.docsBeingDragged[0] + return -out + + });} + + if (dragIndex != -1) { + const draggedDoc = DragManager.docsBeingDragged[0]; const originalIndex = docs.findIndex(doc => doc === draggedDoc); - - - // Remove the dragged document from its original position + docs.splice(originalIndex, 1); - // Insert the dragged document at the new position docs.splice(dragIndex, 0, draggedDoc); - // } } - + return docs; }; + @@ -464,22 +474,35 @@ export class CollectionCardView extends CollectionSubView() { * Converts the gpt output into a hashmap that can be used for sorting. lists are seperated by ==== while elements within the list are seperated by ~~~~~~ * @param gptOutput */ - processGptOutput = (gptOutput: string) => { + @action processGptOutput = (gptOutput: string) => { // Split the string into individual list items const listItems = gptOutput.split('======').filter(item => item.trim() !== ''); + // console.log(listItems + " LISTT"); + + // Debug: print the map contents + // console.log("Map contents:", Array.from(this._textToDoc.entries())); + listItems.forEach((item, index) => { - // Split the item by '~~~~~~' to get all descriptors - const parts = item.split('~~~~~~').map(part => part.trim()); - - parts.forEach(part => { - // Find the corresponding Doc in the textToDoc map - const doc = this._textToDoc.get(part); - if (doc) { - doc.chat = index; - } - }); + // Normalize the item (trim whitespace) + const normalizedItem = item.trim(); + // console.log("Normalized item:", normalizedItem); + + // Find the corresponding Doc in the textToDoc map + const doc = this._textToDoc.get(normalizedItem); + // console.log("DOC:", doc); + // console.log("ITEM:", normalizedItem); + + if (doc) { + doc.chat = index; + } else { + console.warn(`No matching document found for item: ${normalizedItem}`); + } }); - }; + + } + + // ); + // }; /** * Opens up the chat popup and starts the process for smart sorting. */ @@ -513,7 +536,7 @@ export class CollectionCardView extends CollectionSubView() { // }, new Set()).size ?? 0 // ); - const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); + // const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; @@ -552,8 +575,10 @@ export class CollectionCardView extends CollectionSubView() { // doc.cardSort_activeIcons = new List() - const list = StrListCast(doc.cardSort_activeIcons); - doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); + // const list = StrListCast(doc.cardSort_activeIcons); + // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); + + BoolCast(doc[icon]) ? doc[icon] = false : doc[icon] = true @@ -563,9 +588,10 @@ export class CollectionCardView extends CollectionSubView() { getButtonIcon = (doc: Doc, icon: any): JSX.Element => { - const isActive = StrListCast(doc.cardSort_activeIcons).includes(icon) + // const isActive = StrListCast(doc.cardSort_activeIcons).includes(icon) + const isActive = doc[icon] - console.log(StrListCast(doc.cardSort_activeIcons)) + // console.log(StrListCast(doc.cardSort_activeIcons)) const color = isActive ? '#4476f7' : '#323232'; return ; @@ -577,6 +603,7 @@ export class CollectionCardView extends CollectionSubView() { renderCards = () => { const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); const isEmpty = this.childDocsWithoutLinks.length === 0; + const isDesc = BoolCast(this.Document.cardSort_isDesc) if (isEmpty) { return ( diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 1344dd071..4239329dd 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -36,7 +36,7 @@ import { ImageBox } from '../nodes/ImageBox'; import { VideoBox } from '../nodes/VideoBox'; import { WebBox } from '../nodes/WebBox'; import { RichTextMenu } from '../nodes/formattedText/RichTextMenu'; -import { NumListCast } from '../../../fields/Doc'; +import { NumListCast, StrListCast } from '../../../fields/Doc'; import { List } from '../../../fields/List'; // import { InkTranscription } from '../InkTranscription'; @@ -137,20 +137,25 @@ ScriptingGlobals.add(function toggleOverlay(checkResult?: boolean) { // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' | 'clusters' | 'viewAll' | 'fitOnce', checkResult?: boolean, persist?: boolean) { const selected = DocumentView.SelectedDocs().lastElement(); + + function isAttrFiltered(attr: string) { + return StrListCast(selected._childFilters).some(filter => filter.includes(attr)) + } + // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'links' | 'like' | 'star' | 'idea' | 'chat' | '1' | '2' | '3' | '4', + const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'heart' | 'star' | 'cloud' | 'bolt' | 'chat' | '1' | '2' | '3' | '4' | 'up' | 'down', { waitForRender?: boolean; checkResult: (doc: Doc) => any; setDoc: (doc: Doc, dv: DocumentView) => void; }> = new Map([ ['grid', { - checkResult: (doc:Doc) => BoolCast(doc?._freeform_backgroundGrid, false), - setDoc: (doc:Doc) => { doc._freeform_backgroundGrid = !doc._freeform_backgroundGrid; }, + checkResult: (doc: Doc) => BoolCast(doc?._freeform_backgroundGrid, false), + setDoc: (doc: Doc) => { doc._freeform_backgroundGrid = !doc._freeform_backgroundGrid; }, }], ['snaplines', { - checkResult: (doc:Doc) => BoolCast(doc?._freeform_snapLines, false), - setDoc: (doc:Doc) => { doc._freeform_snapLines = !doc._freeform_snapLines; }, + checkResult: (doc: Doc) => BoolCast(doc?._freeform_snapLines, false), + setDoc: (doc: Doc) => { doc._freeform_snapLines = !doc._freeform_snapLines; }, }], ['viewAll', { checkResult: (doc: Doc) => BoolCast(doc?._freeform_fitContentsToBox, false), @@ -161,13 +166,13 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' }, }], ['center', { - checkResult: (doc:Doc) => BoolCast(doc?._stacking_alignCenter, false), - setDoc: (doc:Doc) => { doc._stacking_alignCenter = !doc._stacking_alignCenter; }, + checkResult: (doc: Doc) => BoolCast(doc?._stacking_alignCenter, false), + setDoc: (doc: Doc) => { doc._stacking_alignCenter = !doc._stacking_alignCenter; }, }], ['clusters', { waitForRender: true, // flags that undo batch should terminate after a re-render giving the script the chance to fire - checkResult: (doc:Doc) => BoolCast(doc?._freeform_useClusters, false), - setDoc: (doc:Doc) => { doc._freeform_useClusters = !doc._freeform_useClusters; }, + checkResult: (doc: Doc) => BoolCast(doc?._freeform_useClusters, false), + setDoc: (doc: Doc) => { doc._freeform_useClusters = !doc._freeform_useClusters; }, }], ['flashcards', { checkResult: (doc: Doc) => BoolCast(Doc.UserDoc().defaultToFlashcards, false), @@ -185,63 +190,70 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "color", setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "color" ? doc.cardSort = '' : doc.cardSort = 'color', }], - ['links', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", - setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort = "links", - }], - ['like', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "like", + ['heart', { + checkResult: (doc: Doc) => isAttrFiltered('heart'), setDoc: (doc: Doc, dv: DocumentView) => { - doc.cardSort = "custom"; - doc.cardSort_customField = "like"; - doc.cardSort_visibleSortGroups = new List(); + isAttrFiltered('heart') ? Doc.setDocFilter(doc, 'heart', true, 'remove') : Doc.setDocFilter(doc, 'heart', true, 'match'); + } }], ['star', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "star", + checkResult: (doc: Doc) => isAttrFiltered('star'), + setDoc: (doc: Doc, dv: DocumentView) => { - doc.cardSort = "custom"; - doc.cardSort_customField = "star"; - doc.cardSort_visibleSortGroups = new List(); + isAttrFiltered('star') ? Doc.setDocFilter(doc, 'star', true, 'remove') : Doc.setDocFilter(doc, 'star', true, 'match'); } }], - ['idea', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "idea", + ['bolt', { + checkResult: (doc: Doc) => isAttrFiltered('bolt'), setDoc: (doc: Doc, dv: DocumentView) => { - doc.cardSort = "custom"; - doc.cardSort_customField = "idea"; - doc.cardSort_visibleSortGroups = new List(); + isAttrFiltered('bolt') ? Doc.setDocFilter(doc, 'bolt', true, 'remove') : Doc.setDocFilter(doc, 'bolt', true, 'match'); + + } + }], + ['cloud', { + checkResult: (doc: Doc) => isAttrFiltered('cloud'), + setDoc: (doc: Doc, dv: DocumentView) => { + isAttrFiltered('cloud') ? Doc.setDocFilter(doc, 'cloud', true, 'remove') : Doc.setDocFilter(doc, 'cloud', true, 'match'); + } }], ['chat', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "custom" && StrCast(doc?.cardSort_customField) === "chat", + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "chat", setDoc: (doc: Doc, dv: DocumentView) => { - doc.cardSort === "custom" ? doc.cardSort = '' : doc.cardSort = 'custom'; - doc.cardSort_customField === "chat" ? doc.cardSort_customField = '' : doc.cardSort_customField = 'chat'; - doc.cardSort_visibleSortGroups = new List(); + doc.cardSort === "chat" ? doc.cardSort = '' : doc.cardSort = 'chat'; }, }], - ]); - for (let i = 0; i < 8; i++) { - map.set((i + 1 + '') as any, { - checkResult: (doc: Doc) => NumListCast(doc?.cardSort_visibleSortGroups).includes(i), + ['up', { + checkResult: (doc: Doc) => BoolCast(!doc?.cardSort_isDesc), setDoc: (doc: Doc, dv: DocumentView) => { - const list = NumListCast(doc.cardSort_visibleSortGroups); - doc.cardSort_visibleSortGroups = new List(list.includes(i) ? list.filter(d => d !== i) : [...list, i]); + doc.cardSort_isDesc = false; }, - }); - } + }], + ['down', { + checkResult: (doc: Doc) => BoolCast(doc?.cardSort_isDesc), + setDoc: (doc: Doc, dv: DocumentView) => { + doc.cardSort_isDesc = true; + }, + }], + ]); if (checkResult) { - // console.log("HIIIIII") return map.get(attr)?.checkResult(selected); } + const filters = StrListCast(selected._childFilters).concat(StrListCast(selected?._childFiltersByRanges).filter((filter, i) => !(i % 3))); + + + + // console.log(filters.some(filter => filter.includes('star'))+ "SUOOOOPPP") + const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; DocumentView.Selected().map(dv => map.get(attr)?.setDoc(dv.layoutDoc, dv)); setTimeout(() => batch.end(), 100); return undefined; }); + ScriptingGlobals.add(function cardHasLabel(label: string) { const selected = DocumentView.SelectedDocs().lastElement(); const labelNum = Number(label) - 1; diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 468922532..6184a7b73 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -180,6 +180,7 @@ export class GPTPopup extends ObservableReactComponent { * Sorts cards in the CollectionCardDeckView */ generateSort = async () => { + console.log(this.chatSortPrompt + "USER PROMPT") this.setLoading(true); this.setSortDone(false); -- cgit v1.2.3-70-g09d2 From 7e13e1df797f1d3358f553802527bf42c5574e81 Mon Sep 17 00:00:00 2001 From: IEatChili Date: Thu, 27 Jun 2024 13:55:55 -0400 Subject: feat: added grid of collections when sorting --- src/client/views/KeywordBox.tsx | 2 ++ .../collections/collectionFreeForm/MarqueeView.tsx | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index 8c69f446d..d94f011f4 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -39,6 +39,7 @@ export class KeywordItem extends ObservableReactComponent { removeLabel = () => { if (this._props.doc[DocData].data_labels) { this._props.doc[DocData].data_labels = (this._props.doc[DocData].data_labels as List).filter(label => label !== this._props.label) as List; + this._props.doc![DocData][`${this._props.label}`] = false; } }; @@ -103,6 +104,7 @@ export class KeywordBox extends ObservableReactComponent { } (this._props.doc![DocData].data_labels! as List).push(this._currentInput.trim()); + this._props.doc![DocData][`${this._currentInput}`] = true; this._currentInput = ''; // Clear the input box } }; diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index 197681f62..07e3acb1d 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -461,17 +461,32 @@ export class MarqueeView extends ObservableReactComponent Date: Thu, 27 Jun 2024 14:06:22 -0400 Subject: time --- src/client/documents/Documents.ts | 6 +- src/client/util/CurrentUserUtils.ts | 2 + .../views/collections/CollectionCardDeckView.tsx | 8 ++- .../views/collections/CollectionCarouselView.tsx | 2 +- src/client/views/global/globalScripts.ts | 80 +++++++++++++++++----- src/client/views/pdf/AnchorMenu.tsx | 2 +- 6 files changed, 75 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 53422b0c8..324d80581 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -480,13 +480,13 @@ export class DocumentOptions { cardSort?: STRt = new StrInfo('way cards are sorted in deck view'); // cardSortForDropDown?: STRt = new StrInfo('needed for dropdown and i dont know why') - cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); + // cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); cardSort_activeIcons?: List; //icons each card is tagges with - cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) + // cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) // cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) cardSort_isDesc?: BOOLt = new BoolInfo('whether the cards are sorted ascending or descending'); - test?: STRt = new StrInfo('testing for filtering') + // test?: STRt = new StrInfo('testing for filtering') } export const DocOptions = new DocumentOptions(); diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 48e4441de..f3b5e5b1d 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -668,12 +668,14 @@ pie title Minerals in my tap water { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Pile", icon:"layer-group", toolTip:"View the cards as a pile in the free form view !", btnType: ButtonType.ClickButton, expertMode: false, toolType:"pile", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Sort", toolTip: "Manage sort order / lock status", icon: "sort" , btnType: ButtonType.MultiToggleButton, toolType:"alignment", ignoreClick: true, subMenu: [ { title: "Ascending", toolTip: "Sort the cards in ascending order", btnType: ButtonType.ToggleButton, icon: "sort-up", toolType:"up", ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}' }}, { title: "Descending", toolTip: "Sort the cards in descending order",btnType: ButtonType.ToggleButton, icon: "sort-down",toolType:"down",ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, ]}, + { title: "Filter", icon:"Filter", toolTip:"Filter cards by tags", width: 150, subMenu: this.cardGroupTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index d8f4362f1..d3e23c962 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -53,6 +53,7 @@ export class CollectionCardView extends CollectionSubView() { @observable _docDraggedIndex: number = -1; @observable _isACardBeingDragged: boolean = false; @observable overIndex: number = -1; + static getButtonGroup(groupFieldKey: 'chat' | 'star' | 'idea' | 'like', doc: Doc): number | undefined { return Cast(doc[groupFieldKey], 'number', null); @@ -97,8 +98,10 @@ export class CollectionCardView extends CollectionSubView() { this.Document.childFilters_boolean = 'OR' this._disposers.sort = reaction( () => ({ cardSort: this.cardSort }), - ({ cardSort}) => (cardSort === cardSortings.Chat ? this.openChatPopup() : GPTPopup.Instance.setVisible(false)) + ({ cardSort}) => (cardSort === cardSortings.Chat ? this.openChatPopup() : GPTPopup.Instance.setVisible(false)) ); + + } componentWillUnmount() { @@ -475,6 +478,9 @@ export class CollectionCardView extends CollectionSubView() { * @param gptOutput */ @action processGptOutput = (gptOutput: string) => { + + console.log("HIIII") + console.log(StrCast(this.Document.cardSort) + "cardSort") // Split the string into individual list items const listItems = gptOutput.split('======').filter(item => item.trim() !== ''); // console.log(listItems + " LISTT"); diff --git a/src/client/views/collections/CollectionCarouselView.tsx b/src/client/views/collections/CollectionCarouselView.tsx index 2adad68e0..4884db709 100644 --- a/src/client/views/collections/CollectionCarouselView.tsx +++ b/src/client/views/collections/CollectionCarouselView.tsx @@ -33,7 +33,7 @@ enum practiceVal { export class CollectionCarouselView extends CollectionSubView() { private _dropDisposer?: DragManager.DragDropDisposer; get practiceField() { return this.fieldKey + "_practice"; } // prettier-ignore - get starField() { return this.fieldKey + "_star"; } // prettier-ignore + get starField() { return "star"; } // prettier-ignore constructor(props: any) { super(props); diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 4239329dd..2ecde0eee 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -38,8 +38,10 @@ import { WebBox } from '../nodes/WebBox'; import { RichTextMenu } from '../nodes/formattedText/RichTextMenu'; import { NumListCast, StrListCast } from '../../../fields/Doc'; import { List } from '../../../fields/List'; - +import { CollectionViewType } from '../../documents/DocumentTypes'; // import { InkTranscription } from '../InkTranscription'; +import { Docs } from '../../documents/Documents'; +import { CollectionSubView } from '../collections/CollectionSubView'; // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function IsNoneSelected() { @@ -139,11 +141,11 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' const selected = DocumentView.SelectedDocs().lastElement(); function isAttrFiltered(attr: string) { - return StrListCast(selected._childFilters).some(filter => filter.includes(attr)) + return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); } // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'heart' | 'star' | 'cloud' | 'bolt' | 'chat' | '1' | '2' | '3' | '4' | 'up' | 'down', + const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'heart' | 'star' | 'cloud' | 'bolt' | 'chat' | '1' | '2' | '3' | '4' | 'up' | 'down' | 'pile', { waitForRender?: boolean; checkResult: (doc: Doc) => any; @@ -219,7 +221,11 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } }], ['chat', { - checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "chat", + checkResult: (doc: Doc) => { + + if (StrCast(doc?.cardSort) === "chat"){ + return true + }} , setDoc: (doc: Doc, dv: DocumentView) => { doc.cardSort === "chat" ? doc.cardSort = '' : doc.cardSort = 'chat'; }, @@ -236,6 +242,46 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' doc.cardSort_isDesc = true; }, }], + ['pile', { + checkResult: (doc: Doc) => doc._type_collection == CollectionViewType.Freeform, + setDoc: (doc: Doc, dv: DocumentView) => { + doc._type_collection = CollectionViewType.Freeform; + const newCol = Docs.Create.CarouselDocument(DocListCast(doc[Doc.LayoutFieldKey(doc)]), { + _width: 250, + _height: 200, + _layout_fitWidth: false, + _layout_autoHeight: true, + }); + + + const iconMap: { [key: number]: any } = { + 0: 'star', + 1: 'heart', + 2: 'cloud', + 3: 'bolt' + }; + + for (let i=0; i<4; i++){ + if (isAttrFiltered(iconMap[i])){ + newCol[iconMap[i]] = true + } + } + + // if (doc.type == DocumentType.COL ) { + newCol && dv.ComponentView?.addDocument?.(newCol); + dv.ComponentView?._props.focus(newCol, {willPan: true , willZoomCentered: true, zoomScale: 200} ) + + // } + // doc as CollectionFreeFormView + // doc as typeof CollectionSubView + + // doc._props + + // CollectionFreeFormView.addDocumemnt + + // doc?.addDocument; //this._props.addDocument(newCol) + }, + }], ]); if (checkResult) { @@ -243,8 +289,6 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } const filters = StrListCast(selected._childFilters).concat(StrListCast(selected?._childFiltersByRanges).filter((filter, i) => !(i % 3))); - - // console.log(filters.some(filter => filter.includes('star'))+ "SUOOOOPPP") const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; @@ -253,7 +297,6 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' return undefined; }); - ScriptingGlobals.add(function cardHasLabel(label: string) { const selected = DocumentView.SelectedDocs().lastElement(); const labelNum = Number(label) - 1; @@ -355,37 +398,36 @@ ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { if (checkResult) { // console.log(attr + "attricute") // console.log(map.get(attr)?.checkResult(selected) + "check result") - console.log(StrCast(selected?.cardSort) + "check") - const hi = StrCast(selected?.cardSort) - return StrCast(selected?.cardSortForDropDown) ?? "Time"; + console.log(StrCast(selected?.cardSort) + 'check'); + const hi = StrCast(selected?.cardSort); + return StrCast(selected?.cardSortForDropDown) ?? 'Time'; } - + function docFields(doc: Doc): void { - switch(value){ + switch (value) { case 'Custom 1': - doc.cardSort_customField = "like"; + doc.cardSort_customField = 'like'; break; case 'Custom 2': - doc.cardSort_customField = "star"; + doc.cardSort_customField = 'star'; break; case 'Custom 3': - doc.cardSort_customField = "idea"; + doc.cardSort_customField = 'idea'; break; case 'Chat GPT': - doc.cardSort = "custom"; - doc.cardSort_customField = "chat"; + doc.cardSort = 'custom'; + doc.cardSort_customField = 'chat'; break; default: break; } doc.cardSort_visibleSortGroups = new List(); - } // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; DocumentView.Selected().map(dv => { - dv.Document.cardSortForDropDown = value + dv.Document.cardSortForDropDown = value; if (value != 'Chat GPT') { dv.Document.cardSort = value.trim().split(/\s+/)[0].toLowerCase(); diff --git a/src/client/views/pdf/AnchorMenu.tsx b/src/client/views/pdf/AnchorMenu.tsx index 2f6824466..96f025ca0 100644 --- a/src/client/views/pdf/AnchorMenu.tsx +++ b/src/client/views/pdf/AnchorMenu.tsx @@ -133,7 +133,7 @@ export class AnchorMenu extends AntimodeMenu { _layout_autoHeight: true, }); - this.addToCollection?.(newCol); + this.addToCollection?.(newCol); //this._props.addDocument(newCol) }; pointerDown = (e: React.PointerEvent) => { -- cgit v1.2.3-70-g09d2 From 4521e91a7fd9e7127cf21fdbeba2417881b227ae Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Fri, 28 Jun 2024 12:25:39 -0400 Subject: and so it continues --- src/client/views/collections/CollectionCardDeckView.tsx | 6 ++++-- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index d3e23c962..60befebec 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -301,7 +301,7 @@ export class CollectionCardView extends CollectionSubView() { sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { // if (sortType === cardSortings.None) return docs; - if(sortType !== cardSortings.None){ + // if(sortType !== cardSortings.None){ docs.sort((docA, docB) => { const [typeA, typeB] = (() => { @@ -318,6 +318,7 @@ export class CollectionCardView extends CollectionSubView() { case cardSortings.Chat: return [NumCast(docA.chat) ?? 9999, NumCast(docB.chat) ?? 9999] + default: return [StrCast(docA.type), StrCast(docB.type)] } @@ -333,7 +334,8 @@ export class CollectionCardView extends CollectionSubView() { return -out - });} + }); + // } if (dragIndex != -1) { const draggedDoc = DragManager.docsBeingDragged[0]; diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 6184a7b73..5a5e80dc4 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -27,9 +27,12 @@ export enum GPTPopupMode { IMAGE, FLASHCARD, DATA, + CARD, SORT, + QUIZ } + interface GPTPopupProps {} @observer -- cgit v1.2.3-70-g09d2 From 3e46e59b3919458d945745f457d8c76f13094796 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Sun, 14 Jul 2024 14:06:10 -0400 Subject: in it to win it --- package-lock.json | 2150 ++++++++++++++------ src/client/util/CurrentUserUtils.ts | 3 +- src/client/views/MainView.tsx | 3 +- .../views/collections/CollectionCardDeckView.tsx | 15 +- src/client/views/global/globalScripts.ts | 14 +- src/client/views/pdf/GPTPopup/GPTPopup.scss | 19 +- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 98 +- 7 files changed, 1677 insertions(+), 625 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 61eccb86e..0542a29cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,382 +3,70 @@ "version": "1.0.0", "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "dash", - "version": "1.0.0", - "dependencies": { - "@adobe/react-spectrum": "^3.32.2", - "@azure/storage-blob": "^12.17.0", - "@babel/preset-env": "^7.23.5", - "@babel/preset-react": "^7.23.3", - "@bundled-es-modules/pdfjs-dist": "^3.6.172-alpha.1", - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "@ffmpeg/core": "^0.12.5", - "@ffmpeg/ffmpeg": "^0.12.8", - "@fortawesome/fontawesome-svg-core": "^6.5.1", - "@fortawesome/free-brands-svg-icons": "^6.5.1", - "@fortawesome/free-regular-svg-icons": "^6.5.1", - "@fortawesome/free-solid-svg-icons": "^6.5.1", - "@fortawesome/react-fontawesome": "^0.2.0", - "@fullcalendar/core": "^6.1.10", - "@fullcalendar/daygrid": "^6.1.10", - "@fullcalendar/multimonth": "^6.1.10", - "@internationalized/date": "^3.5.0", - "@mui/icons-material": "^5.14.19", - "@mui/material": "^5.14.19", - "@octokit/core": "^6.0.1", - "@react-google-maps/api": "^2.19.2", - "@react-spring/web": "^9.7.3", - "@turf/turf": "^6.5.0", - "@types/bezier-js": "^4.1.3", - "@types/brotli": "^1.3.4", - "@types/cors": "^2.8.17", - "@types/d3-axis": "^3.0.6", - "@types/d3-color": "^3.1.3", - "@types/d3-scale": "^4.0.8", - "@types/d3-selection": "^3.0.10", - "@types/dom-speech-recognition": "0.0.4", - "@types/find-in-files": "^0.5.3", - "@types/fluent-ffmpeg": "^2.1.24", - "@types/formidable": "3.4.5", - "@types/geojson": "^7946.0.14", - "@types/google-maps": "^3.2.6", - "@types/mapbox-gl": "^3.1.0", - "@types/pdf-parse": "^1.1.4", - "@types/reveal": "^4.2.0", - "@types/supercluster": "^7.1.3", - "@types/web": "^0.0.147", - "@types/webpack-hot-middleware": "^2.25.9", - "@typescript-eslint/parser": "^7.8.0", - "@webscopeio/react-textarea-autocomplete": "^4.9.2", - "adm-zip": "^0.5.10", - "archiver": "^7.0.1", - "async": "^3.2.5", - "axios": "^1.6.2", - "babel": "^6.23.0", - "babel-loader": "^9.1.3", - "bcrypt-nodejs": "0.0.3", - "better-react-mathjax": "^2.0.3", - "bezier-curve": "^1.0.0", - "bezier-js": "^6.1.4", - "bingmaps-react": "^1.2.10", - "bluebird": "^3.7.2", - "body-parser": "^1.20.2", - "bootstrap": "^5.3.2", - "brotli": "^1.3.3", - "browndash-components": "^0.1.44", - "browser-assert": "^1.2.1", - "bson": "^6.2.0", - "canvas": "^2.11.2", - "chart.js": "^4.4.0", - "child_process": "^1.0.2", - "class-transformer": "^0.5.1", - "color": "^4.2.3", - "colors": "^1.4.0", - "compute-cosine-similarity": "^1.1.0", - "connect-flash": "^0.1.1", - "connect-mongo": "^5.1.0", - "cookie-parser": "^1.4.6", - "cookie-session": "^2.0.0", - "core-js": "^3.33.3", - "cors": "^2.8.5", - "css-loader": "^7.0.0", - "csstype": "^3.1.3", - "csv-parser": "^3.0.0", - "csv-stringify": "^6.4.4", - "csvtojson": "^2.0.10", - "D": "^1.0.0", - "d3": "^7.8.5", - "depcheck": "^1.4.7", - "dotenv": "^16.3.1", - "eslint-webpack-plugin": "^4.1.0", - "exif": "^0.6.0", - "exifr": "^7.1.3", - "express": "^4.18.2", - "express-flash": "0.0.2", - "express-session": "^1.17.3", - "express-validator": "^7.0.1", - "extract-colors": "^4.0.2", - "ffmpeg": "0.0.4", - "file-loader": "^6.2.0", - "file-saver": "^2.0.5", - "find-in-files": "^0.5.0", - "fit-curve": "^0.2.0", - "flexlayout-react": "^0.7.15", - "fluent-ffmpeg": "^2.1.2", - "forever-agent": "^0.6.1", - "fork-ts-checker-webpack-plugin": "^9.0.2", - "form-data": "^4.0.0", - "formidable": "3.5.1", - "function-plot": "^1.23.3", - "golden-layout": "^2.6.0", - "google-auth-library": "^9.4.1", - "googleapis": "^133.0.0", - "googlephotos": "^0.3.5", - "got": "^14.0.0", - "howler": "^2.2.4", - "html-to-image": "^1.11.11", - "html-to-text": "^9.0.5", - "html-webpack-plugin": "^5.5.3", - "http-browserify": "^1.7.0", - "https": "^1.0.0", - "https-browserify": "^1.0.0", - "i": "^0.3.7", - "image-data-uri": "^2.0.1", - "image-size": "^1.0.2", - "image-size-stream": "^1.1.0", - "is-plain-obj": "^4.1.0", - "jimp": "^0.22.10", - "jpeg-autorotate": "^9.0.0", - "jquery": "^3.7.1", - "js-datepicker": "^5.18.2", - "jsonschema": "^1.4.1", - "jszip": "^3.10.1", - "lodash": "^4.17.21", - "mapbox-gl": "^3.0.1", - "markdown-it": "^14.1.0", - "mathquill": "^0.10.1-a", - "md5-file": "^5.0.0", - "memorystream": "^0.3.1", - "mermaid": "^10.9.0", - "mobile-detect": "^1.4.5", - "mobx": "^6.12.0", - "mobx-react": "^9.1.0", - "mobx-utils": "^6.0.8", - "mongodb": "^6.3.0", - "mongoose": "^8.0.2", - "node-stream-zip": "^1.15.0", - "nodemailer": "^6.9.7", - "nodemon": "^3.0.2", - "npm": "^10.2.5", - "openai": "^4.26.0", - "p-limit": "^5.0.0", - "passport": "^0.7.0", - "passport-google-oauth20": "^2.0.0", - "passport-local": "^1.0.0", - "path-browserify": "^1.0.1", - "pdf-parse": "^1.1.1", - "pdfjs": "^2.4.7", - "pdfjs-dist": "^4.0.269", - "probe-image-size": "^7.2.3", - "process": "^0.11.10", - "prosemirror-commands": "^1.5.2", - "prosemirror-find-replace": "^0.9.0", - "prosemirror-history": "^1.3.2", - "prosemirror-inputrules": "^1.4.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-model": "^1.19.3", - "prosemirror-schema-list": "^1.3.0", - "prosemirror-state": "^1.4.3", - "prosemirror-transform": "^1.8.0", - "prosemirror-view": "^1.32.5", - "pug": "^3.0.2", - "query-string": "^7.1.3", - "querystring-es3": "^0.2.1", - "raw-loader": "^4.0.2", - "rc-switch": "^4.1.0", - "react": "^18.2.0", - "react-autosuggest": "^10.1.0", - "react-awesome-reveal": "^4.2.7", - "react-color": "^2.19.3", - "react-compound-slider": "^3.4.0", - "react-datepicker": "^6.1.0", - "react-dom": "^18.2.0", - "react-grid-layout": "^1.4.4", - "react-icons": "^5.0.1", - "react-jsx-parser": "^1.29.0", - "react-latex-next": "^3.0.0", - "react-loading": "^2.0.3", - "react-map-gl": "^7.1.6", - "react-markdown": "^9.0.1", - "react-measure": "^2.5.2", - "react-resizable": "^3.0.5", - "react-select": "^5.8.0", - "react-textarea-autosize": "^8.5.3", - "react-type-animation": "^3.2.0", - "react-xarrows": "^2.0.2", - "readline": "^1.3.0", - "recharts": "^2.10.3", - "rehype-katex": "^7.0.0", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.0", - "remark-math": "^6.0.0", - "request": "^2.88.2", - "request-promise": "^4.2.6", - "reveal.js": "^5.0.2", - "rimraf": "^5.0.5", - "sass": "^1.69.5", - "sass-loader": "^14.2.0", - "serializr": "^3.0.2", - "shelljs": "^0.8.5", - "socket.io": "^4.7.2", - "socket.io-client": "^4.7.2", - "standard-http-error": "^2.0.1", - "stream-browserify": "^3.0.0", - "styled-components": "^6.1.1", - "supercluster": "^8.0.1", - "textarea-caret": "^3.1.0", - "tough-cookie": "^4.1.3", - "tslint": "^6.1.3", - "tslint-loader": "^3.5.4", - "typescript": "^5.3.3", - "typescript-collections": "^1.3.3", - "typescript-language-server": "^4.1.3", - "uninstall": "^0.0.0", - "url": "^0.11.3", - "url-loader": "^4.1.1", - "util": "^0.12.5", - "uuid": "^9.0.1", - "valid-url": "^1.0.9", - "web-request": "^1.0.7", - "webpack": "^5.89.0", - "webpack-cli": "^5.1.4", - "webpack-dev-middleware": "^7.0.0", - "webpack-hot-middleware": "^2.25.4", - "wikijs": "^6.4.1", - "words-to-numbers": "^1.5.1", - "xoauth2": "^1.2.0", - "xregexp": "^5.1.1" - }, - "devDependencies": { - "@eslint/js": "^9.1.1", - "@types/adm-zip": "^0.5.5", - "@types/animejs": "^3.1.12", - "@types/archiver": "^6.0.2", - "@types/async": "^3.2.24", - "@types/bcrypt-nodejs": "0.0.31", - "@types/bluebird": "^3.5.42", - "@types/body-parser": "^1.19.5", - "@types/chai": "^4.3.11", - "@types/color": "^3.0.6", - "@types/cookie-parser": "^1.4.6", - "@types/cookie-session": "^2.0.48", - "@types/d3": "^7.4.3", - "@types/exif": "^0.6.5", - "@types/express": "^4.17.21", - "@types/express-session": "^1.17.10", - "@types/file-saver": "^2.0.7", - "@types/howler": "^2.2.11", - "@types/html-to-text": "^9.0.4", - "@types/jquery": "^3.5.29", - "@types/libxmljs": "^0.18.12", - "@types/lodash": "^4.14.202", - "@types/mocha": "^10.0.6", - "@types/node": "^20.10.3", - "@types/nodemailer": "^6.4.14", - "@types/passport": "^1.0.16", - "@types/passport-google-oauth20": "^2.0.14", - "@types/passport-local": "^1.0.38", - "@types/rc-switch": "^1.9.5", - "@types/react": "^18.2.41", - "@types/react-autosuggest": "^10.1.10", - "@types/react-color": "^3.0.10", - "@types/react-datepicker": "^6.2.0", - "@types/react-dom": "^18.2.17", - "@types/react-grid-layout": "^1.3.5", - "@types/react-measure": "^2.0.12", - "@types/react-reconciler": "^0.28.8", - "@types/request": "^2.48.12", - "@types/request-promise": "^4.1.51", - "@types/shelljs": "^0.8.15", - "@types/uuid": "^9.0.7", - "@types/valid-url": "^1.0.7", - "@types/webpack": "^5.28.5", - "@types/youtube": "0.0.50", - "chai": "^5.0.0", - "cross-env": "^7.0.3", - "eslint": "^8.57.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-node": "^4.1.0", - "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^5.0.1", - "eslint-plugin-react": "^7.34.1", - "eslint-plugin-react-hooks": "^4.6.0", - "globals": "^15.1.0", - "jsdom": "^24.0.0", - "mocha": "^10.2.0", - "prettier": "^3.1.0", - "scss-loader": "0.0.1", - "style-loader": "^4.0.0", - "ts-loader": "^9.5.1", - "ts-node": "^10.9.1", - "ts-node-dev": "^2.0.0", - "typescript-eslint": "^7.8.0", - "webpack-dev-server": "^5.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@adobe/react-spectrum": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.35.1.tgz", - "integrity": "sha512-QNhsaEHv5S5Vqsk7b8aCV9F7qAnWw8VJ/Nep/SOjeiJ7vK993jEOetEhSsUIQ8VHsMKs6qkTtZr0/DKoV+Z/9w==", - "dependencies": { - "@internationalized/string": "^3.2.3", - "@react-aria/i18n": "^3.11.1", - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-spectrum/actionbar": "^3.4.5", - "@react-spectrum/actiongroup": "^3.10.5", - "@react-spectrum/avatar": "^3.0.12", - "@react-spectrum/badge": "^3.1.13", - "@react-spectrum/breadcrumbs": "^3.9.7", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/buttongroup": "^3.6.13", - "@react-spectrum/calendar": "^3.4.9", - "@react-spectrum/checkbox": "^3.9.6", - "@react-spectrum/combobox": "^3.12.5", - "@react-spectrum/contextualhelp": "^3.6.11", - "@react-spectrum/datepicker": "^3.9.6", - "@react-spectrum/dialog": "^3.8.11", - "@react-spectrum/divider": "^3.5.13", - "@react-spectrum/dnd": "^3.3.10", - "@react-spectrum/dropzone": "^3.0.1", - "@react-spectrum/filetrigger": "^3.0.1", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/icon": "^3.7.13", - "@react-spectrum/illustratedmessage": "^3.5.1", - "@react-spectrum/image": "^3.5.1", - "@react-spectrum/inlinealert": "^3.2.5", - "@react-spectrum/labeledvalue": "^3.1.14", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/link": "^3.6.7", - "@react-spectrum/list": "^3.7.10", - "@react-spectrum/listbox": "^3.12.9", - "@react-spectrum/menu": "^3.19.1", - "@react-spectrum/meter": "^3.5.1", - "@react-spectrum/numberfield": "^3.9.3", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/picker": "^3.14.5", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/provider": "^3.9.7", - "@react-spectrum/radio": "^3.7.6", - "@react-spectrum/searchfield": "^3.8.6", - "@react-spectrum/slider": "^3.6.9", - "@react-spectrum/statuslight": "^3.5.13", - "@react-spectrum/switch": "^3.5.5", - "@react-spectrum/table": "^3.12.10", - "@react-spectrum/tabs": "^3.8.10", - "@react-spectrum/tag": "^3.2.6", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/textfield": "^3.12.1", - "@react-spectrum/theme-dark": "^3.5.10", - "@react-spectrum/theme-default": "^3.5.10", - "@react-spectrum/theme-light": "^3.4.10", - "@react-spectrum/tooltip": "^3.6.7", - "@react-spectrum/view": "^3.6.10", - "@react-spectrum/well": "^3.4.13", - "@react-stately/collections": "^3.10.7", - "@react-stately/data": "^3.11.4", - "@react-types/shared": "^3.23.1", + "dependencies": { + "@adobe/react-spectrum": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.35.0.tgz", + "integrity": "sha512-dhCKWKDS/xF02EpWluicH7Va6KAANbrUx4rb1UeeFT3czhwz44oCQ74ZYviVedNv6Bq7O22/kbMa20rDdyt/4A==", + "requires": { + "@internationalized/string": "^3.2.2", + "@react-aria/i18n": "^3.11.0", + "@react-aria/ssr": "^3.9.3", + "@react-aria/utils": "^3.24.0", + "@react-aria/visually-hidden": "^3.8.11", + "@react-spectrum/actionbar": "^3.4.4", + "@react-spectrum/actiongroup": "^3.10.4", + "@react-spectrum/avatar": "^3.0.11", + "@react-spectrum/badge": "^3.1.12", + "@react-spectrum/breadcrumbs": "^3.9.6", + "@react-spectrum/button": "^3.16.3", + "@react-spectrum/buttongroup": "^3.6.12", + "@react-spectrum/calendar": "^3.4.8", + "@react-spectrum/checkbox": "^3.9.5", + "@react-spectrum/combobox": "^3.12.4", + "@react-spectrum/contextualhelp": "^3.6.10", + "@react-spectrum/datepicker": "^3.9.5", + "@react-spectrum/dialog": "^3.8.10", + "@react-spectrum/divider": "^3.5.12", + "@react-spectrum/dnd": "^3.3.9", + "@react-spectrum/dropzone": "^3.0.0", + "@react-spectrum/filetrigger": "^3.0.0", + "@react-spectrum/form": "^3.7.5", + "@react-spectrum/icon": "^3.7.12", + "@react-spectrum/illustratedmessage": "^3.5.0", + "@react-spectrum/image": "^3.5.0", + "@react-spectrum/inlinealert": "^3.2.4", + "@react-spectrum/labeledvalue": "^3.1.13", + "@react-spectrum/layout": "^3.6.4", + "@react-spectrum/link": "^3.6.6", + "@react-spectrum/list": "^3.7.9", + "@react-spectrum/listbox": "^3.12.8", + "@react-spectrum/menu": "^3.19.0", + "@react-spectrum/meter": "^3.5.0", + "@react-spectrum/numberfield": "^3.9.2", + "@react-spectrum/overlays": "^5.6.0", + "@react-spectrum/picker": "^3.14.4", + "@react-spectrum/progress": "^3.7.6", + "@react-spectrum/provider": "^3.9.6", + "@react-spectrum/radio": "^3.7.5", + "@react-spectrum/searchfield": "^3.8.5", + "@react-spectrum/slider": "^3.6.8", + "@react-spectrum/statuslight": "^3.5.12", + "@react-spectrum/switch": "^3.5.4", + "@react-spectrum/table": "^3.12.9", + "@react-spectrum/tabs": "^3.8.9", + "@react-spectrum/tag": "^3.2.5", + "@react-spectrum/text": "^3.5.4", + "@react-spectrum/textfield": "^3.12.0", + "@react-spectrum/theme-dark": "^3.5.9", + "@react-spectrum/theme-default": "^3.5.9", + "@react-spectrum/theme-light": "^3.4.9", + "@react-spectrum/tooltip": "^3.6.6", + "@react-spectrum/view": "^3.6.9", + "@react-spectrum/well": "^3.4.12", + "@react-stately/collections": "^3.10.6", + "@react-stately/data": "^3.11.3", + "@react-types/shared": "^3.23.0", "client-only": "^0.0.1" } }, @@ -1045,6 +733,13 @@ "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-split-export-declaration": "^7.24.5", "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } } }, "@babel/plugin-transform-computed-properties": { @@ -1598,6 +1293,13 @@ "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } } }, "@babel/types": { @@ -1610,6 +1312,11 @@ "to-fast-properties": "^2.0.0" } }, + "@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + }, "@bundled-es-modules/pdfjs-dist": { "version": "3.6.172-alpha.1", "resolved": "https://registry.npmjs.org/@bundled-es-modules/pdfjs-dist/-/pdfjs-dist-3.6.172-alpha.1.tgz", @@ -1857,9 +1564,9 @@ } }, "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.4.0.tgz", + "integrity": "sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==", "dev": true }, "@ffmpeg/core": { @@ -2233,6 +1940,72 @@ } } }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@jimp/bmp": { "version": "0.22.12", "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.12.tgz", @@ -2889,7 +2662,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2898,14 +2670,12 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4592,6 +4362,49 @@ "@swc/helpers": "^0.5.0" } }, + "@react-spring/animated": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", + "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==", + "requires": { + "@react-spring/shared": "~9.7.3", + "@react-spring/types": "~9.7.3" + } + }, + "@react-spring/core": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz", + "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==", + "requires": { + "@react-spring/animated": "~9.7.3", + "@react-spring/shared": "~9.7.3", + "@react-spring/types": "~9.7.3" + } + }, + "@react-spring/shared": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", + "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==", + "requires": { + "@react-spring/types": "~9.7.3" + } + }, + "@react-spring/types": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz", + "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==" + }, + "@react-spring/web": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz", + "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==", + "requires": { + "@react-spring/animated": "~9.7.3", + "@react-spring/core": "~9.7.3", + "@react-spring/shared": "~9.7.3", + "@react-spring/types": "~9.7.3" + } + }, "@react-stately/calendar": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.0.tgz", @@ -5305,6 +5118,11 @@ "selderee": "^0.11.0" } }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, "@sindresorhus/is": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-6.3.0.tgz", @@ -7004,8 +6822,7 @@ "@types/d3-scale-chromatic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", - "dev": true + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" }, "@types/d3-selection": { "version": "3.0.10", @@ -7169,9 +6986,9 @@ } }, "@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" }, "@types/glob": { "version": "7.2.0", @@ -7241,6 +7058,27 @@ "@types/node": "*" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "requires": { + "@types/istanbul-lib-report": "*" + } + }, "@types/jquery": { "version": "3.5.30", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz", @@ -7271,6 +7109,11 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==" + }, "@types/keygrip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", @@ -7730,6 +7573,11 @@ "integrity": "sha512-tgsWVG80dM5PVEBSbXUttPJTBCOo0IKbBh4R4z/SHsC5C81A3aaUH4fsbj+JYk7fopApU/Mao1c0EWTE592TSg==", "dev": true }, + "@types/web": { + "version": "0.0.148", + "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.148.tgz", + "integrity": "sha512-HX2eARbn26tZuCOxZ25Ew6UUNhw8fgdGrOGcxX0/J6yTtlJm+nHlL9/h+2zgSzse13vlVe+c+W3LWqhnlAd5rg==" + }, "@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -7773,12 +7621,123 @@ "@types/node": "*" } }, + "@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, "@types/youtube": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/youtube/-/youtube-0.0.50.tgz", "integrity": "sha512-d4GpH4uPYp9W07kc487tiq6V/EUHl18vZWFMbQoe4Sk9LXEWzFi/BMf9x7TI4m7/j7gU3KeX8H6M8aPBgykeLw==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.0.tgz", + "integrity": "sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.13.0", + "@typescript-eslint/type-utils": "7.13.0", + "@typescript-eslint/utils": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.0.tgz", + "integrity": "sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==", + "requires": { + "@typescript-eslint/scope-manager": "7.13.0", + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/typescript-estree": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz", + "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==", + "requires": { + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.0.tgz", + "integrity": "sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "7.13.0", + "@typescript-eslint/utils": "7.13.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/types": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz", + "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==" + }, + "@typescript-eslint/typescript-estree": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz", + "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==", + "requires": { + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + } + } + }, + "@typescript-eslint/utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.0.tgz", + "integrity": "sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.0", + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/typescript-estree": "7.13.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz", + "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==", + "requires": { + "@typescript-eslint/types": "7.13.0", + "eslint-visitor-keys": "^3.4.3" + } + }, "@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -8681,6 +8640,14 @@ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==" }, + "better-react-mathjax": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/better-react-mathjax/-/better-react-mathjax-2.0.3.tgz", + "integrity": "sha512-wfifT8GFOKb1TWm2+E50I6DJpLZ5kLbch283Lu043EJtwSv0XvZDjr4YfR4d2MjAhqP6SH4VjjrKgbX8R00oCQ==", + "requires": { + "mathjax-full": "^3.2.2" + } + }, "bezier-curve": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/bezier-curve/-/bezier-curve-1.0.0.tgz", @@ -8957,6 +8924,11 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -8979,6 +8951,16 @@ "requires": { "ansi-regex": "^6.0.1" } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } } } }, @@ -10829,7 +10811,7 @@ } }, "string-width": { - "version": "npm:string-width@4.2.3", + "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { @@ -10847,7 +10829,7 @@ } }, "strip-ansi": { - "version": "npm:strip-ansi@6.0.1", + "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { @@ -11367,6 +11349,11 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" + }, "class-transformer": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", @@ -11706,6 +11693,35 @@ } } }, + "compute-cosine-similarity": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/compute-cosine-similarity/-/compute-cosine-similarity-1.1.0.tgz", + "integrity": "sha512-FXhNx0ILLjGi9Z9+lglLzM12+0uoTnYkHm7GiadXDAr0HGVLm25OivUS1B/LPkbzzvlcXz/1EvWg9ZYyJSdhTw==", + "requires": { + "compute-dot": "^1.1.0", + "compute-l2norm": "^1.1.0", + "validate.io-array": "^1.0.5", + "validate.io-function": "^1.0.2" + } + }, + "compute-dot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/compute-dot/-/compute-dot-1.1.0.tgz", + "integrity": "sha512-L5Ocet4DdMrXboss13K59OK23GXjiSia7+7Ukc7q4Bl+RVpIXK2W9IHMbWDZkh+JUEvJAwOKRaJDiFUa1LTnJg==", + "requires": { + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2" + } + }, + "compute-l2norm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/compute-l2norm/-/compute-l2norm-1.1.0.tgz", + "integrity": "sha512-6EHh1Elj90eU28SXi+h2PLnTQvZmkkHWySpoFz+WOlVNLz3DQoC4ISUHSV9n5jMxPHtKGJ01F4uu2PsXBB8sSg==", + "requires": { + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -11874,6 +11890,14 @@ "vary": "^1" } }, + "cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "requires": { + "layout-base": "^1.0.0" + } + }, "cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -12059,11 +12083,44 @@ "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.4.6.tgz", "integrity": "sha512-h2V2XZ3uOTLilF5dPIptgUfN/o2ia/80Ie0Lly18LAnw5s8Eb7kt8rfxSUy24AztJZas9f6DPZpVlzDUtFt/ag==" }, + "csvtojson": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", + "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", + "requires": { + "bluebird": "^3.5.1", + "lodash": "^4.17.3", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==" }, + "cytoscape": { + "version": "3.29.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.29.2.tgz", + "integrity": "sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ==" + }, + "cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "requires": { + "cose-base": "^1.0.0" + } + }, "d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", @@ -12288,6 +12345,30 @@ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" }, + "d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "requires": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + }, + "dependencies": { + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + } + } + }, "d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -12392,6 +12473,15 @@ "d3-transition": "2 - 3" } }, + "dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "requires": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, "damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -12486,6 +12576,11 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==" }, + "dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -12764,6 +12859,14 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, "dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -12832,6 +12935,11 @@ "domelementtype": "^2.3.0" } }, + "dompurify": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz", + "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==" + }, "domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", @@ -12907,6 +13015,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.761.tgz", "integrity": "sha512-PIbxpiJGx6Bb8dQaonNc6CGTRlVntdLg/2nMa1YhnrwYOORY9a3ZgGN0UQYE6lAcj/lkyduJN7BPt/JiY+jAQQ==" }, + "elkjs": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", + "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==" + }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -13183,6 +13296,12 @@ "text-table": "^0.2.0" }, "dependencies": { + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -14045,6 +14164,21 @@ } } }, + "eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + } + }, "eslint-module-utils": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", @@ -14390,8 +14524,50 @@ "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + }, + "eslint-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-rsfpFQ01AWQbqtjgPRr2usVRxhWDuG0YDYcG8DJOteD3EFnpeuYuOwk0PQiN7PRBTqS6ElNdtPZPggj8If9WnA==", + "requires": { + "@types/eslint": "^8.56.10", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, "espree": { "version": "9.6.1", @@ -14702,6 +14878,11 @@ "tmp": "^0.0.33" } }, + "extract-colors": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/extract-colors/-/extract-colors-4.0.6.tgz", + "integrity": "sha512-U+pYyQKXCSHOmtZPIEJBGLJjLDiqS+oOub2ILA3a7UGt9+IvZvwAN3hOPFjUgT+gX/apSBwP5vBgnKMlV0fy8Q==" + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -14728,6 +14909,18 @@ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -14748,7 +14941,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -15491,6 +15683,13 @@ "@turf/meta": "6.x", "@types/geojson": "7946.0.8", "rbush": "^3.0.1" + }, + "dependencies": { + "@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" + } } }, "geojson-vt": { @@ -15552,6 +15751,15 @@ "get-intrinsic": "^1.2.4" } }, + "get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -15646,9 +15854,10 @@ } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.4.0.tgz", + "integrity": "sha512-unnwvMZpv0eDUyjNyh9DH/yxUaRYrEjW/qK4QcdrHg3oO11igUQrCSgODHEqxlKg8v2CD2Sd7UkqqEBoz5U7TQ==", + "dev": true }, "globalthis": { "version": "1.0.4", @@ -15660,6 +15869,19 @@ "gopd": "^1.0.1" } }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, "golden-layout": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/golden-layout/-/golden-layout-2.6.0.tgz", @@ -15865,6 +16087,40 @@ "function-bind": "^1.1.2" } }, + "hast-util-from-dom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.0.tgz", + "integrity": "sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==", + "requires": { + "@types/hast": "^3.0.0", + "hastscript": "^8.0.0", + "web-namespaces": "^2.0.0" + } + }, + "hast-util-from-html": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "requires": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + } + }, + "hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "requires": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + } + }, "hast-util-from-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", @@ -15880,6 +16136,14 @@ "web-namespaces": "^2.0.0" } }, + "hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "requires": { + "@types/hast": "^3.0.0" + } + }, "hast-util-parse-selector": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", @@ -15944,6 +16208,17 @@ "zwitch": "^2.0.0" } }, + "hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "requires": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + } + }, "hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -17167,6 +17442,11 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, "is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -17266,6 +17546,64 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -17623,6 +17961,21 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==" }, + "katex": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", + "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", + "requires": { + "commander": "^8.3.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + } + } + }, "kdbush": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", @@ -17644,6 +17997,11 @@ "json-buffer": "3.0.1" } }, + "khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -17657,6 +18015,11 @@ "graceful-fs": "^4.1.9" } }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" + }, "kruptein": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-3.0.6.tgz", @@ -17715,6 +18078,11 @@ "shell-quote": "^1.8.1" } }, + "layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + }, "lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -17739,7 +18107,12 @@ } } }, - "node_modules/leac": { + "ldrs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ldrs/-/ldrs-1.0.2.tgz", + "integrity": "sha512-sYJmivdkIiHrUEqTrEWccBoLdaENpzbzkABI5rk8rRxTXrg9i2xVuDvUUuhOhJY3RmQyaoxs046pM1DCRdcIpg==" + }, + "leac": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==" @@ -17767,6 +18140,14 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "requires": { + "uc.micro": "^2.0.0" + } + }, "load-bmfont": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", @@ -18058,6 +18439,26 @@ "vt-pbf": "^3.1.3" } }, + "markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "requires": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + } + } + }, "markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", @@ -18077,6 +18478,17 @@ "mr-parser": "^0.2.1" } }, + "mathjax-full": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", + "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "requires": { + "esm": "^3.2.25", + "mhchemparser": "^4.1.0", + "mj-context-menu": "^0.6.1", + "speech-rule-engine": "^4.0.6" + } + }, "mathquill": { "version": "0.10.1-a", "resolved": "https://registry.npmjs.org/mathquill/-/mathquill-0.10.1-a.tgz", @@ -18205,6 +18617,20 @@ "mdast-util-to-markdown": "^2.0.0" } }, + "mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "requires": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + } + }, "mdast-util-mdx-expression": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", @@ -18299,6 +18725,11 @@ "@types/mdast": "^4.0.0" } }, + "mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -18337,11 +18768,309 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "mermaid": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz", + "integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==", + "requires": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.28.1", + "cytoscape-cose-bilkent": "^4.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.9.0", + "katex": "^0.16.9", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + }, + "dependencies": { + "@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "requires": { + "@types/unist": "^2" + } + }, + "@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, + "mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "requires": { + "@types/mdast": "^3.0.0" + } + }, + "micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==" + }, + "micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==" + }, + "micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==" + }, + "micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==" + }, + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "requires": { + "@types/unist": "^2.0.0" + } + } + } + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, + "mhchemparser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", + "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" + }, "micromark": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", @@ -18475,6 +19204,20 @@ "micromark-util-types": "^2.0.0" } }, + "micromark-extension-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.0.0.tgz", + "integrity": "sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==", + "requires": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, "micromark-factory-destination": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", @@ -18736,6 +19479,11 @@ } } }, + "mj-context-menu": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -19044,6 +19792,11 @@ "resolved": "https://registry.npmjs.org/mr-parser/-/mr-parser-0.2.1.tgz", "integrity": "sha512-hug+mpbSSKnH13rFqy3zm+XiG+QTStiDAgMTHK355TIstQE0qBkBtSJsa5YHP94AuarVX9b/4dcebdTRZ9YiEw==" }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -19102,9 +19855,9 @@ "dev": true }, "nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "optional": true }, "nanoid": { @@ -19256,6 +20009,11 @@ } } }, + "non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -19352,7 +20110,7 @@ "dependencies": { "@isaacs/cliui": { "version": "8.0.2", - "bundled": true, + "resolved": false, "requires": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -19364,7 +20122,7 @@ "dependencies": { "ansi-regex": { "version": "6.0.1", - "bundled": true + "resolved": false }, "ansi-styles": { "version": "4.3.0", @@ -19376,11 +20134,11 @@ }, "emoji-regex": { "version": "9.2.2", - "bundled": true + "resolved": false }, "string-width": { "version": "5.1.2", - "bundled": true, + "resolved": false, "requires": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -19419,7 +20177,7 @@ }, "strip-ansi": { "version": "7.1.0", - "bundled": true, + "resolved": false, "requires": { "ansi-regex": "^6.0.1" } @@ -19483,11 +20241,11 @@ }, "@isaacs/string-locale-compare": { "version": "1.1.0", - "bundled": true + "resolved": false }, "@npmcli/agent": { "version": "2.2.2", - "bundled": true, + "resolved": false, "requires": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -19498,7 +20256,7 @@ }, "@npmcli/arborist": { "version": "7.5.3", - "bundled": true, + "resolved": false, "requires": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.1", @@ -19539,7 +20297,7 @@ }, "@npmcli/config": { "version": "8.3.3", - "bundled": true, + "resolved": false, "requires": { "@npmcli/map-workspaces": "^3.0.2", "ci-info": "^4.0.0", @@ -19553,14 +20311,14 @@ }, "@npmcli/fs": { "version": "3.1.1", - "bundled": true, + "resolved": false, "requires": { "semver": "^7.3.5" } }, "@npmcli/git": { "version": "5.0.7", - "bundled": true, + "resolved": false, "requires": { "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", @@ -19574,7 +20332,7 @@ }, "@npmcli/installed-package-contents": { "version": "2.1.0", - "bundled": true, + "resolved": false, "requires": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -19582,7 +20340,7 @@ }, "@npmcli/map-workspaces": { "version": "3.0.6", - "bundled": true, + "resolved": false, "requires": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", @@ -19592,7 +20350,7 @@ }, "@npmcli/metavuln-calculator": { "version": "7.1.1", - "bundled": true, + "resolved": false, "requires": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", @@ -19603,15 +20361,15 @@ }, "@npmcli/name-from-folder": { "version": "2.0.0", - "bundled": true + "resolved": false }, "@npmcli/node-gyp": { "version": "3.0.0", - "bundled": true + "resolved": false }, "@npmcli/package-json": { "version": "5.1.1", - "bundled": true, + "resolved": false, "requires": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", @@ -19624,25 +20382,25 @@ }, "@npmcli/promise-spawn": { "version": "7.0.2", - "bundled": true, + "resolved": false, "requires": { "which": "^4.0.0" } }, "@npmcli/query": { "version": "3.1.0", - "bundled": true, + "resolved": false, "requires": { "postcss-selector-parser": "^6.0.10" } }, "@npmcli/redact": { "version": "2.0.0", - "bundled": true + "resolved": false }, "@npmcli/run-script": { "version": "8.1.0", - "bundled": true, + "resolved": false, "requires": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", @@ -19654,27 +20412,27 @@ }, "@pkgjs/parseargs": { "version": "0.11.0", - "bundled": true, + "resolved": false, "optional": true }, "@sigstore/bundle": { "version": "2.3.2", - "bundled": true, + "resolved": false, "requires": { "@sigstore/protobuf-specs": "^0.3.2" } }, "@sigstore/core": { "version": "1.1.0", - "bundled": true + "resolved": false }, "@sigstore/protobuf-specs": { "version": "0.3.2", - "bundled": true + "resolved": false }, "@sigstore/sign": { "version": "2.3.2", - "bundled": true, + "resolved": false, "requires": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", @@ -19686,7 +20444,7 @@ }, "@sigstore/tuf": { "version": "2.3.4", - "bundled": true, + "resolved": false, "requires": { "@sigstore/protobuf-specs": "^0.3.2", "tuf-js": "^2.2.1" @@ -19694,7 +20452,7 @@ }, "@sigstore/verify": { "version": "1.2.1", - "bundled": true, + "resolved": false, "requires": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.1.0", @@ -19703,11 +20461,11 @@ }, "@tufjs/canonical-json": { "version": "2.0.0", - "bundled": true + "resolved": false }, "@tufjs/models": { "version": "2.0.1", - "bundled": true, + "resolved": false, "requires": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.4" @@ -19715,18 +20473,18 @@ }, "abbrev": { "version": "2.0.0", - "bundled": true + "resolved": false }, "agent-base": { "version": "7.1.1", - "bundled": true, + "resolved": false, "requires": { "debug": "^4.3.4" } }, "aggregate-error": { "version": "3.1.0", - "bundled": true, + "resolved": false, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -19734,27 +20492,27 @@ }, "ansi-regex": { "version": "5.0.1", - "bundled": true + "resolved": false }, "ansi-styles": { "version": "6.2.1", - "bundled": true + "resolved": false }, "aproba": { "version": "2.0.0", - "bundled": true + "resolved": false }, "archy": { "version": "1.0.0", - "bundled": true + "resolved": false }, "balanced-match": { "version": "1.0.2", - "bundled": true + "resolved": false }, "bin-links": { "version": "4.0.4", - "bundled": true, + "resolved": false, "requires": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -19764,18 +20522,18 @@ }, "binary-extensions": { "version": "2.3.0", - "bundled": true + "resolved": false }, "brace-expansion": { "version": "2.0.1", - "bundled": true, + "resolved": false, "requires": { "balanced-match": "^1.0.0" } }, "cacache": { "version": "18.0.3", - "bundled": true, + "resolved": false, "requires": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -19793,30 +20551,30 @@ }, "chalk": { "version": "5.3.0", - "bundled": true + "resolved": false }, "chownr": { "version": "2.0.0", - "bundled": true + "resolved": false }, "ci-info": { "version": "4.0.0", - "bundled": true + "resolved": false }, "cidr-regex": { "version": "4.1.1", - "bundled": true, + "resolved": false, "requires": { "ip-regex": "^5.0.0" } }, "clean-stack": { "version": "2.2.0", - "bundled": true + "resolved": false }, "cli-columns": { "version": "4.0.0", - "bundled": true, + "resolved": false, "requires": { "string-width": "^4.2.3", "strip-ansi": "^6.0.1" @@ -19824,26 +20582,26 @@ }, "cmd-shim": { "version": "6.0.3", - "bundled": true + "resolved": false }, "color-convert": { "version": "2.0.1", - "bundled": true, + "resolved": false, "requires": { "color-name": "~1.1.4" } }, "color-name": { "version": "1.1.4", - "bundled": true + "resolved": false }, "common-ancestor-path": { "version": "1.0.1", - "bundled": true + "resolved": false }, "cross-spawn": { "version": "7.0.3", - "bundled": true, + "resolved": false, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -19852,7 +20610,7 @@ "dependencies": { "which": { "version": "2.0.2", - "bundled": true, + "resolved": false, "requires": { "isexe": "^2.0.0" } @@ -19861,36 +20619,36 @@ }, "cssesc": { "version": "3.0.0", - "bundled": true + "resolved": false }, "debug": { "version": "4.3.4", - "bundled": true, + "resolved": false, "requires": { "ms": "2.1.2" }, "dependencies": { "ms": { "version": "2.1.2", - "bundled": true + "resolved": false } } }, "diff": { "version": "5.2.0", - "bundled": true + "resolved": false }, "eastasianwidth": { "version": "0.2.0", - "bundled": true + "resolved": false }, "emoji-regex": { "version": "8.0.0", - "bundled": true + "resolved": false }, "encoding": { "version": "0.1.13", - "bundled": true, + "resolved": false, "optional": true, "requires": { "iconv-lite": "^0.6.2" @@ -19898,23 +20656,23 @@ }, "env-paths": { "version": "2.2.1", - "bundled": true + "resolved": false }, "err-code": { "version": "2.0.3", - "bundled": true + "resolved": false }, "exponential-backoff": { "version": "3.1.1", - "bundled": true + "resolved": false }, "fastest-levenshtein": { "version": "1.0.16", - "bundled": true + "resolved": false }, "foreground-child": { "version": "3.1.1", - "bundled": true, + "resolved": false, "requires": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -19922,18 +20680,18 @@ }, "fs-minipass": { "version": "3.0.3", - "bundled": true, + "resolved": false, "requires": { "minipass": "^7.0.3" } }, "function-bind": { "version": "1.1.2", - "bundled": true + "resolved": false }, "glob": { "version": "10.4.1", - "bundled": true, + "resolved": false, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -19944,29 +20702,29 @@ }, "graceful-fs": { "version": "4.2.11", - "bundled": true + "resolved": false }, "hasown": { "version": "2.0.2", - "bundled": true, + "resolved": false, "requires": { "function-bind": "^1.1.2" } }, "hosted-git-info": { "version": "7.0.2", - "bundled": true, + "resolved": false, "requires": { "lru-cache": "^10.0.1" } }, "http-cache-semantics": { "version": "4.1.1", - "bundled": true + "resolved": false }, "http-proxy-agent": { "version": "7.0.2", - "bundled": true, + "resolved": false, "requires": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -19974,7 +20732,7 @@ }, "https-proxy-agent": { "version": "7.0.4", - "bundled": true, + "resolved": false, "requires": { "agent-base": "^7.0.2", "debug": "4" @@ -19982,7 +20740,7 @@ }, "iconv-lite": { "version": "0.6.3", - "bundled": true, + "resolved": false, "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -19990,26 +20748,26 @@ }, "ignore-walk": { "version": "6.0.5", - "bundled": true, + "resolved": false, "requires": { "minimatch": "^9.0.0" } }, "imurmurhash": { "version": "0.1.4", - "bundled": true + "resolved": false }, "indent-string": { "version": "4.0.0", - "bundled": true + "resolved": false }, "ini": { "version": "4.1.3", - "bundled": true + "resolved": false }, "init-package-json": { "version": "6.0.3", - "bundled": true, + "resolved": false, "requires": { "@npmcli/package-json": "^5.0.0", "npm-package-arg": "^11.0.0", @@ -20022,7 +20780,7 @@ }, "ip-address": { "version": "9.0.5", - "bundled": true, + "resolved": false, "requires": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -20030,37 +20788,37 @@ }, "ip-regex": { "version": "5.0.0", - "bundled": true + "resolved": false }, "is-cidr": { "version": "5.1.0", - "bundled": true, + "resolved": false, "requires": { "cidr-regex": "^4.1.1" } }, "is-core-module": { "version": "2.13.1", - "bundled": true, + "resolved": false, "requires": { "hasown": "^2.0.0" } }, "is-fullwidth-code-point": { "version": "3.0.0", - "bundled": true + "resolved": false }, "is-lambda": { "version": "1.0.1", - "bundled": true + "resolved": false }, "isexe": { "version": "2.0.0", - "bundled": true + "resolved": false }, "jackspeak": { "version": "3.1.2", - "bundled": true, + "resolved": false, "requires": { "@isaacs/cliui": "^8.0.2", "@pkgjs/parseargs": "^0.11.0" @@ -20068,31 +20826,31 @@ }, "jsbn": { "version": "1.1.0", - "bundled": true + "resolved": false }, "json-parse-even-better-errors": { "version": "3.0.2", - "bundled": true + "resolved": false }, "json-stringify-nice": { "version": "1.1.4", - "bundled": true + "resolved": false }, "jsonparse": { "version": "1.3.1", - "bundled": true + "resolved": false }, "just-diff": { "version": "6.0.2", - "bundled": true + "resolved": false }, "just-diff-apply": { "version": "5.5.0", - "bundled": true + "resolved": false }, "libnpmaccess": { "version": "8.0.6", - "bundled": true, + "resolved": false, "requires": { "npm-package-arg": "^11.0.2", "npm-registry-fetch": "^17.0.1" @@ -20100,7 +20858,7 @@ }, "libnpmdiff": { "version": "6.1.3", - "bundled": true, + "resolved": false, "requires": { "@npmcli/arborist": "^7.5.3", "@npmcli/installed-package-contents": "^2.1.0", @@ -20114,7 +20872,7 @@ }, "libnpmexec": { "version": "8.1.2", - "bundled": true, + "resolved": false, "requires": { "@npmcli/arborist": "^7.5.3", "@npmcli/run-script": "^8.1.0", @@ -20130,14 +20888,14 @@ }, "libnpmfund": { "version": "5.0.11", - "bundled": true, + "resolved": false, "requires": { "@npmcli/arborist": "^7.5.3" } }, "libnpmhook": { "version": "10.0.5", - "bundled": true, + "resolved": false, "requires": { "aproba": "^2.0.0", "npm-registry-fetch": "^17.0.1" @@ -20145,7 +20903,7 @@ }, "libnpmorg": { "version": "6.0.6", - "bundled": true, + "resolved": false, "requires": { "aproba": "^2.0.0", "npm-registry-fetch": "^17.0.1" @@ -20153,7 +20911,7 @@ }, "libnpmpack": { "version": "7.0.3", - "bundled": true, + "resolved": false, "requires": { "@npmcli/arborist": "^7.5.3", "@npmcli/run-script": "^8.1.0", @@ -20163,7 +20921,7 @@ }, "libnpmpublish": { "version": "9.0.9", - "bundled": true, + "resolved": false, "requires": { "ci-info": "^4.0.0", "normalize-package-data": "^6.0.1", @@ -20177,14 +20935,14 @@ }, "libnpmsearch": { "version": "7.0.6", - "bundled": true, + "resolved": false, "requires": { "npm-registry-fetch": "^17.0.1" } }, "libnpmteam": { "version": "6.0.5", - "bundled": true, + "resolved": false, "requires": { "aproba": "^2.0.0", "npm-registry-fetch": "^17.0.1" @@ -20192,7 +20950,7 @@ }, "libnpmversion": { "version": "6.0.3", - "bundled": true, + "resolved": false, "requires": { "@npmcli/git": "^5.0.7", "@npmcli/run-script": "^8.1.0", @@ -20203,11 +20961,11 @@ }, "lru-cache": { "version": "10.2.2", - "bundled": true + "resolved": false }, "make-fetch-happen": { "version": "13.0.1", - "bundled": true, + "resolved": false, "requires": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", @@ -20225,25 +20983,25 @@ }, "minimatch": { "version": "9.0.4", - "bundled": true, + "resolved": false, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { "version": "7.1.2", - "bundled": true + "resolved": false }, "minipass-collect": { "version": "2.0.1", - "bundled": true, + "resolved": false, "requires": { "minipass": "^7.0.3" } }, "minipass-fetch": { "version": "3.0.5", - "bundled": true, + "resolved": false, "requires": { "encoding": "^0.1.13", "minipass": "^7.0.3", @@ -20253,14 +21011,14 @@ }, "minipass-flush": { "version": "1.0.5", - "bundled": true, + "resolved": false, "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", - "bundled": true, + "resolved": false, "requires": { "yallist": "^4.0.0" } @@ -20269,7 +21027,7 @@ }, "minipass-json-stream": { "version": "1.0.1", - "bundled": true, + "resolved": false, "requires": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -20277,7 +21035,7 @@ "dependencies": { "minipass": { "version": "3.3.6", - "bundled": true, + "resolved": false, "requires": { "yallist": "^4.0.0" } @@ -20286,14 +21044,14 @@ }, "minipass-pipeline": { "version": "1.2.4", - "bundled": true, + "resolved": false, "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", - "bundled": true, + "resolved": false, "requires": { "yallist": "^4.0.0" } @@ -20302,14 +21060,14 @@ }, "minipass-sized": { "version": "1.0.3", - "bundled": true, + "resolved": false, "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", - "bundled": true, + "resolved": false, "requires": { "yallist": "^4.0.0" } @@ -20318,7 +21076,7 @@ }, "minizlib": { "version": "2.1.2", - "bundled": true, + "resolved": false, "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -20326,7 +21084,7 @@ "dependencies": { "minipass": { "version": "3.3.6", - "bundled": true, + "resolved": false, "requires": { "yallist": "^4.0.0" } @@ -20335,23 +21093,23 @@ }, "mkdirp": { "version": "1.0.4", - "bundled": true + "resolved": false }, "ms": { "version": "2.1.3", - "bundled": true + "resolved": false }, "mute-stream": { "version": "1.0.0", - "bundled": true + "resolved": false }, "negotiator": { "version": "0.6.3", - "bundled": true + "resolved": false }, "node-gyp": { "version": "10.1.0", - "bundled": true, + "resolved": false, "requires": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -20367,20 +21125,20 @@ "dependencies": { "proc-log": { "version": "3.0.0", - "bundled": true + "resolved": false } } }, "nopt": { "version": "7.2.1", - "bundled": true, + "resolved": false, "requires": { "abbrev": "^2.0.0" } }, "normalize-package-data": { "version": "6.0.1", - "bundled": true, + "resolved": false, "requires": { "hosted-git-info": "^7.0.0", "is-core-module": "^2.8.1", @@ -20390,29 +21148,29 @@ }, "npm-audit-report": { "version": "5.0.0", - "bundled": true + "resolved": false }, "npm-bundled": { "version": "3.0.1", - "bundled": true, + "resolved": false, "requires": { "npm-normalize-package-bin": "^3.0.0" } }, "npm-install-checks": { "version": "6.3.0", - "bundled": true, + "resolved": false, "requires": { "semver": "^7.1.1" } }, "npm-normalize-package-bin": { "version": "3.0.1", - "bundled": true + "resolved": false }, "npm-package-arg": { "version": "11.0.2", - "bundled": true, + "resolved": false, "requires": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", @@ -20422,14 +21180,14 @@ }, "npm-packlist": { "version": "8.0.2", - "bundled": true, + "resolved": false, "requires": { "ignore-walk": "^6.0.4" } }, "npm-pick-manifest": { "version": "9.0.1", - "bundled": true, + "resolved": false, "requires": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -20439,7 +21197,7 @@ }, "npm-profile": { "version": "10.0.0", - "bundled": true, + "resolved": false, "requires": { "npm-registry-fetch": "^17.0.1", "proc-log": "^4.0.0" @@ -20447,7 +21205,7 @@ }, "npm-registry-fetch": { "version": "17.0.1", - "bundled": true, + "resolved": false, "requires": { "@npmcli/redact": "^2.0.0", "make-fetch-happen": "^13.0.0", @@ -20461,18 +21219,18 @@ }, "npm-user-validate": { "version": "2.0.1", - "bundled": true + "resolved": false }, "p-map": { "version": "4.0.0", - "bundled": true, + "resolved": false, "requires": { "aggregate-error": "^3.0.0" } }, "pacote": { "version": "18.0.6", - "bundled": true, + "resolved": false, "requires": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", @@ -20495,7 +21253,7 @@ }, "parse-conflict-json": { "version": "3.0.1", - "bundled": true, + "resolved": false, "requires": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", @@ -20504,11 +21262,11 @@ }, "path-key": { "version": "3.1.1", - "bundled": true + "resolved": false }, "path-scurry": { "version": "1.11.1", - "bundled": true, + "resolved": false, "requires": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -20516,7 +21274,7 @@ }, "postcss-selector-parser": { "version": "6.1.0", - "bundled": true, + "resolved": false, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -20524,27 +21282,27 @@ }, "proc-log": { "version": "4.2.0", - "bundled": true + "resolved": false }, "proggy": { "version": "2.0.0", - "bundled": true + "resolved": false }, "promise-all-reject-late": { "version": "1.0.1", - "bundled": true + "resolved": false }, "promise-call-limit": { "version": "3.0.1", - "bundled": true + "resolved": false }, "promise-inflight": { "version": "1.0.1", - "bundled": true + "resolved": false }, "promise-retry": { "version": "2.0.1", - "bundled": true, + "resolved": false, "requires": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -20552,29 +21310,29 @@ }, "promzard": { "version": "1.0.2", - "bundled": true, + "resolved": false, "requires": { "read": "^3.0.1" } }, "qrcode-terminal": { "version": "0.12.0", - "bundled": true + "resolved": false }, "read": { "version": "3.0.1", - "bundled": true, + "resolved": false, "requires": { "mute-stream": "^1.0.0" } }, "read-cmd-shim": { "version": "4.0.0", - "bundled": true + "resolved": false }, "read-package-json-fast": { "version": "3.0.2", - "bundled": true, + "resolved": false, "requires": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -20582,35 +21340,35 @@ }, "retry": { "version": "0.12.0", - "bundled": true + "resolved": false }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": false, "optional": true }, "semver": { "version": "7.6.2", - "bundled": true + "resolved": false }, "shebang-command": { "version": "2.0.0", - "bundled": true, + "resolved": false, "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { "version": "3.0.0", - "bundled": true + "resolved": false }, "signal-exit": { "version": "4.1.0", - "bundled": true + "resolved": false }, "sigstore": { "version": "2.3.1", - "bundled": true, + "resolved": false, "requires": { "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", @@ -20622,11 +21380,11 @@ }, "smart-buffer": { "version": "4.2.0", - "bundled": true + "resolved": false }, "socks": { "version": "2.8.3", - "bundled": true, + "resolved": false, "requires": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -20634,7 +21392,7 @@ }, "socks-proxy-agent": { "version": "8.0.3", - "bundled": true, + "resolved": false, "requires": { "agent-base": "^7.1.1", "debug": "^4.3.4", @@ -20643,7 +21401,7 @@ }, "spdx-correct": { "version": "3.2.0", - "bundled": true, + "resolved": false, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -20651,7 +21409,7 @@ "dependencies": { "spdx-expression-parse": { "version": "3.0.1", - "bundled": true, + "resolved": false, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -20661,11 +21419,11 @@ }, "spdx-exceptions": { "version": "2.5.0", - "bundled": true + "resolved": false }, "spdx-expression-parse": { "version": "4.0.0", - "bundled": true, + "resolved": false, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -20673,22 +21431,22 @@ }, "spdx-license-ids": { "version": "3.0.18", - "bundled": true + "resolved": false }, "sprintf-js": { "version": "1.1.3", - "bundled": true + "resolved": false }, "ssri": { "version": "10.0.6", - "bundled": true, + "resolved": false, "requires": { "minipass": "^7.0.3" } }, "string-width": { "version": "4.2.3", - "bundled": true, + "resolved": false, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -20697,7 +21455,7 @@ }, "string-width-cjs": { "version": "npm:string-width-cjs@4.2.3", - "bundled": true, + "resolved": false, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -20706,25 +21464,25 @@ }, "strip-ansi": { "version": "6.0.1", - "bundled": true, + "resolved": false, "requires": { "ansi-regex": "^5.0.1" } }, "strip-ansi-cjs": { "version": "npm:strip-ansi-cjs@6.0.1", - "bundled": true, + "resolved": false, "requires": { "ansi-regex": "^5.0.1" } }, "supports-color": { "version": "9.4.0", - "bundled": true + "resolved": false }, "tar": { "version": "6.2.1", - "bundled": true, + "resolved": false, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -20736,14 +21494,14 @@ "dependencies": { "fs-minipass": { "version": "2.1.0", - "bundled": true, + "resolved": false, "requires": { "minipass": "^3.0.0" }, "dependencies": { "minipass": { "version": "3.3.6", - "bundled": true, + "resolved": false, "requires": { "yallist": "^4.0.0" } @@ -20752,25 +21510,25 @@ }, "minipass": { "version": "5.0.0", - "bundled": true + "resolved": false } } }, "text-table": { "version": "0.2.0", - "bundled": true + "resolved": false }, "tiny-relative-date": { "version": "1.3.0", - "bundled": true + "resolved": false }, "treeverse": { "version": "3.0.0", - "bundled": true + "resolved": false }, "tuf-js": { "version": "2.2.1", - "bundled": true, + "resolved": false, "requires": { "@tufjs/models": "2.0.1", "debug": "^4.3.4", @@ -20779,25 +21537,25 @@ }, "unique-filename": { "version": "3.0.0", - "bundled": true, + "resolved": false, "requires": { "unique-slug": "^4.0.0" } }, "unique-slug": { "version": "4.0.0", - "bundled": true, + "resolved": false, "requires": { "imurmurhash": "^0.1.4" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": false }, "validate-npm-package-license": { "version": "3.0.4", - "bundled": true, + "resolved": false, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -20805,7 +21563,7 @@ "dependencies": { "spdx-expression-parse": { "version": "3.0.1", - "bundled": true, + "resolved": false, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -20815,28 +21573,28 @@ }, "validate-npm-package-name": { "version": "5.0.1", - "bundled": true + "resolved": false }, "walk-up-path": { "version": "3.0.1", - "bundled": true + "resolved": false }, "which": { "version": "4.0.0", - "bundled": true, + "resolved": false, "requires": { "isexe": "^3.1.1" }, "dependencies": { "isexe": { "version": "3.1.1", - "bundled": true + "resolved": false } } }, "wrap-ansi": { "version": "8.1.0", - "bundled": true, + "resolved": false, "requires": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -20845,15 +21603,15 @@ "dependencies": { "ansi-regex": { "version": "6.0.1", - "bundled": true + "resolved": false }, "emoji-regex": { "version": "9.2.2", - "bundled": true + "resolved": false }, "string-width": { "version": "5.1.2", - "bundled": true, + "resolved": false, "requires": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -20862,7 +21620,7 @@ }, "strip-ansi": { "version": "7.1.0", - "bundled": true, + "resolved": false, "requires": { "ansi-regex": "^6.0.1" } @@ -20871,7 +21629,7 @@ }, "wrap-ansi-cjs": { "version": "npm:wrap-ansi-cjs@7.0.0", - "bundled": true, + "resolved": false, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -20880,7 +21638,7 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "bundled": true, + "resolved": false, "requires": { "color-convert": "^2.0.1" } @@ -20889,7 +21647,7 @@ }, "write-file-atomic": { "version": "5.0.1", - "bundled": true, + "resolved": false, "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -20897,7 +21655,7 @@ }, "yallist": { "version": "4.0.0", - "bundled": true + "resolved": false } } }, @@ -22024,6 +22782,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -22069,8 +22832,7 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "queue-tick": { "version": "1.0.1", @@ -22442,6 +23204,14 @@ } } }, + "react-latex-next": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-latex-next/-/react-latex-next-3.0.0.tgz", + "integrity": "sha512-x70f1b1G7TronVigsRgKHKYYVUNfZk/3bciFyYX1lYLQH2y3/TXku3+5Vap8MDbJhtopePSYBsYWS6jhzIdz+g==", + "requires": { + "katex": "^0.16.0" + } + }, "react-loading": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/react-loading/-/react-loading-2.0.3.tgz", @@ -22561,6 +23331,16 @@ "@react-types/shared": "^3.23.0" } }, + "react-textarea-autosize": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "requires": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + } + }, "react-themeable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz", @@ -22803,6 +23583,20 @@ "jsesc": "~0.5.0" } }, + "rehype-katex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.0.tgz", + "integrity": "sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==", + "requires": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + } + }, "rehype-raw": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", @@ -22831,6 +23625,17 @@ "unified": "^11.0.0" } }, + "remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "requires": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + } + }, "remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", @@ -23092,6 +23897,12 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "resolve-protobuf-schema": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", @@ -23135,8 +23946,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "reveal.js": { "version": "5.1.0", @@ -23183,7 +23993,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -23210,6 +24019,14 @@ } } }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "requires": { + "mri": "^1.1.0" + } + }, "safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", @@ -23689,6 +24506,11 @@ "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==" }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -23880,6 +24702,23 @@ } } }, + "speech-rule-engine": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz", + "integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==", + "requires": { + "commander": "9.2.0", + "wicked-good-xpath": "1.3.0", + "xmldom-sre": "0.1.31" + }, + "dependencies": { + "commander": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==" + } + } + }, "splaytree": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.2.tgz", @@ -24620,6 +25459,16 @@ "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", "integrity": "sha512-6C5h3CE+0qjGp+YKYTs74xR0k/Nw/ePtl/Lp6CCf44hqBQ66qnH1sDFR5mV/Gc48EsrHLB53lCFSffQCkka3kg==" }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==" + }, + "ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" + }, "ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", @@ -25114,6 +25963,17 @@ "resolved": "https://registry.npmjs.org/typescript-collections/-/typescript-collections-1.3.3.tgz", "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==" }, + "typescript-eslint": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.13.0.tgz", + "integrity": "sha512-upO0AXxyBwJ4BbiC6CRgAJKtGYha2zw4m1g7TIVPSonwYEuf7vCicw3syjS1OxdDMTz96sZIXl3Jx3vWJLLKFw==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "7.13.0", + "@typescript-eslint/parser": "7.13.0", + "@typescript-eslint/utils": "7.13.0" + } + }, "typescript-language-server": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/typescript-language-server/-/typescript-language-server-4.3.3.tgz", @@ -25137,6 +25997,11 @@ "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==" }, + "uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, "uid-safe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", @@ -25242,6 +26107,15 @@ "set-value": "^2.0.1" } }, + "unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + } + }, "unist-util-is": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", @@ -25417,11 +26291,24 @@ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" }, + "use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" + }, "use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" }, + "use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "requires": { + "use-isomorphic-layout-effect": "^1.1.1" + } + }, "use-sync-external-store": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", @@ -25467,6 +26354,24 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "dependencies": { + "diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==" + } + } + }, "v8-compile-cache": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", @@ -25484,6 +26389,16 @@ "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" }, + "validate.io-array": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", + "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==" + }, + "validate.io-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz", + "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==" + }, "validator": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", @@ -25643,6 +26558,11 @@ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" }, + "web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -26005,6 +26925,11 @@ "has-tostringtag": "^1.0.2" } }, + "wicked-good-xpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -26194,6 +27119,11 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "xmldom-sre": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", + "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==" + }, "xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index f42c15c14..80e13875c 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -676,6 +676,7 @@ pie title Minerals in my tap water { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Pile", icon:"layer-group", toolTip:"View the cards as a pile in the free form view !", btnType: ButtonType.ClickButton, expertMode: false, toolType:"pile", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Chat Popup", icon:"lightbulb", toolTip:"Toggle the chat popup's visibility!", width: 50,btnType: ButtonType.ToggleButton, expertMode: false, toolType:"toggle-chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, { title: "Sort", toolTip: "Manage sort order / lock status", icon: "sort" , btnType: ButtonType.MultiToggleButton, toolType:"alignment", ignoreClick: true, subMenu: [ @@ -684,7 +685,7 @@ pie title Minerals in my tap water ]}, { title: "Filter", icon:"Filter", toolTip:"Filter cards by tags", width: 150, subMenu: this.cardGroupTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - + diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 7ad5cd88c..6c95bf4db 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -550,7 +550,8 @@ export class MainView extends ObservableReactComponent<{}> { fa.faSatellite, fa.faStar, fa.faCloud, - fa.faBolt + fa.faBolt, + fa.faLightbulb ] ); } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 60befebec..907a5a343 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -613,9 +613,11 @@ export class CollectionCardView extends CollectionSubView() { const isEmpty = this.childDocsWithoutLinks.length === 0; const isDesc = BoolCast(this.Document.cardSort_isDesc) + console.log(this.childDocsWithoutLinks.length + "length") + if (isEmpty) { return ( - + Sorry ! There are no cards in this group ); @@ -676,6 +678,10 @@ export class CollectionCardView extends CollectionSubView() { }; render() { + const isEmpty = this.childDocsWithoutLinks.length === 0; + const transformValue = `scale(${1 / this.fitContentScale})`; + const heightValue = `${100 * this.fitContentScale}%`; + return (
this.onPointerMove(e)} @@ -688,9 +694,9 @@ export class CollectionCardView extends CollectionSubView() {
this.setHoveredNodeIndex(-1)}> {this.renderCards()} @@ -698,4 +704,5 @@ export class CollectionCardView extends CollectionSubView() {
); } + } diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 2ecde0eee..6ea1751a9 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -42,6 +42,7 @@ import { CollectionViewType } from '../../documents/DocumentTypes'; // import { InkTranscription } from '../InkTranscription'; import { Docs } from '../../documents/Documents'; import { CollectionSubView } from '../collections/CollectionSubView'; +import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function IsNoneSelected() { @@ -145,7 +146,7 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'heart' | 'star' | 'cloud' | 'bolt' | 'chat' | '1' | '2' | '3' | '4' | 'up' | 'down' | 'pile', + const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'heart' | 'star' | 'cloud' | 'bolt' | 'chat' | '1' | '2' | '3' | '4' | 'up' | 'down' | 'pile' | 'toggle-chat', { waitForRender?: boolean; checkResult: (doc: Doc) => any; @@ -242,6 +243,14 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' doc.cardSort_isDesc = true; }, }], + ['toggle-chat', { + checkResult: (doc: Doc) => GPTPopup.Instance.visible, + setDoc: (doc: Doc, dv: DocumentView) => { + GPTPopup.Instance.setVisible(!GPTPopup.Instance.visible); + GPTPopup.Instance.setMode(GPTPopupMode.SORT); + + }, + }], ['pile', { checkResult: (doc: Doc) => doc._type_collection == CollectionViewType.Freeform, setDoc: (doc: Doc, dv: DocumentView) => { @@ -269,7 +278,8 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' // if (doc.type == DocumentType.COL ) { newCol && dv.ComponentView?.addDocument?.(newCol); - dv.ComponentView?._props.focus(newCol, {willPan: true , willZoomCentered: true, zoomScale: 200} ) + // dv.ComponentView?._props.focus(newCol, {willPan: true , willZoomCentered: true, zoomScale: 200} ) + DocumentView.showDocument(newCol, { willZoomCentered: true }) // } // doc as CollectionFreeFormView diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.scss b/src/client/views/pdf/GPTPopup/GPTPopup.scss index 042b1dea5..291f272ce 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.scss +++ b/src/client/views/pdf/GPTPopup/GPTPopup.scss @@ -7,10 +7,13 @@ $highlightedText: #82e0ff; .summary-box { position: fixed; - bottom: 10px; - right: 10px; + top: 115px; + left: 75px; width: 250px; + height: 200px; min-height: 200px; + min-width: 180px; + border-radius: 16px; padding: 16px; padding-bottom: 0; @@ -21,6 +24,18 @@ $highlightedText: #82e0ff; background-color: #ffffff; box-shadow: 0 2px 5px #7474748d; color: $textgrey; + resize: both; /* Allows resizing */ + overflow: auto; + + .resize-handle { + width: 10px; + height: 10px; + background: #ccc; + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + } .summary-heading { display: flex; diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 5a5e80dc4..71d437c3d 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -354,6 +354,84 @@ export class GPTPopup extends ObservableReactComponent { } }; + cardMenu = () => ( +
+
+ + ) + + cardActual = (opt: string) => { + const isSort = opt === 'sort' + + if (opt === 'sort'){ + return ( + <> +
+ { + if (e.key === 'Enter') { + this.generateSort(); + } + e.stopPropagation(); + }} + type="text" + placeholder= {`How do you want to sort your cards ?` } + id="search-input" + style={{ width: '100%' }} + /> +
+
+
+ + ) + + } + +} + sortBox = () => ( <>
@@ -575,12 +653,22 @@ export class GPTPopup extends ObservableReactComponent { render() { return ( - -
- {this.mode === GPTPopupMode.SUMMARY ? this.summaryBox() : this.mode === GPTPopupMode.DATA ? this.dataAnalysisBox() : this.mode === GPTPopupMode.IMAGE ? this.imageBox() : this.mode === GPTPopupMode.SORT ? this.sortBox() : null} +
+ {this.mode === GPTPopupMode.SUMMARY + ? this.summaryBox() + : this.mode === GPTPopupMode.DATA + ? this.dataAnalysisBox() + : this.mode === GPTPopupMode.IMAGE + ? this.imageBox() + : this.mode === GPTPopupMode.SORT + ? this.sortBox() + : null} +
- - ); } + } -- cgit v1.2.3-70-g09d2 From 732a00ddba502e3692fde374554c2ed394d275e4 Mon Sep 17 00:00:00 2001 From: IEatChili Date: Wed, 17 Jul 2024 15:13:11 -0400 Subject: feat: created smart collections --- src/client/documents/Documents.ts | 9 +- src/client/views/DocumentDecorations.scss | 2 +- src/client/views/DocumentDecorations.tsx | 2 + src/client/views/KeywordBox.tsx | 197 +++++++++++++++++---- src/client/views/StyleProvider.scss | 1 - src/client/views/collections/CollectionSubView.tsx | 4 +- src/client/views/collections/CollectionView.tsx | 1 + .../collectionFreeForm/ImageLabelBox.tsx | 4 +- .../collections/collectionFreeForm/MarqueeView.tsx | 3 - 9 files changed, 174 insertions(+), 49 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 449347403..3737aa0b5 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -37,12 +37,13 @@ export enum FInfoFieldType { date = 'date', list = 'list', rtf = 'rich text', + map = 'map', } export class FInfo { description: string = ''; readOnly: boolean = false; fieldType?: FInfoFieldType; - values?: FieldType[]; + values?: FieldType[] | Map; filterable?: boolean = true; // can be used as a Filter in FilterPanel // format?: string; // format to display values (e.g, decimal places, $, etc) @@ -143,6 +144,10 @@ class ListInfo extends FInfo { fieldType? = FInfoFieldType.list; values?: List[] = []; } +class MapInfo extends FInfo { + fieldType? = FInfoFieldType.map; + values?: Map = new Map(); +} type BOOLt = BoolInfo | boolean; type NUMt = NumInfo | number; type STRt = StrInfo | string; @@ -155,6 +160,7 @@ type COLLt = CTypeInfo | CollectionViewType; type DROPt = DAInfo | dropActionType; type DATEt = DateInfo | number; type DTYPEt = DTypeInfo | string; +type MAPt = MapInfo | Map; export class DocumentOptions { // coordinate and dimensions depending on view x?: NUMt = new NumInfo('horizontal coordinate in freeform view', false); @@ -481,6 +487,7 @@ export class DocumentOptions { cardSort?: STRt = new StrInfo('way cards are sorted in deck view'); cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) + keywords?: MAPt = new MapInfo('keywords', true); } export const DocOptions = new DocumentOptions(); diff --git a/src/client/views/DocumentDecorations.scss b/src/client/views/DocumentDecorations.scss index 239c0a977..67e1054c3 100644 --- a/src/client/views/DocumentDecorations.scss +++ b/src/client/views/DocumentDecorations.scss @@ -512,7 +512,7 @@ $resizeHandler: 8px; justify-content: center; align-items: center; gap: 5px; - top: 4px; + //top: 4px; background: $light-gray; opacity: 0.2; pointer-events: all; diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 20bf8fd9f..dc40562e8 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -640,6 +640,7 @@ export class DocumentDecorations extends ObservableReactComponent { @@ -831,6 +832,7 @@ export class DocumentDecorations extends ObservableReactComponent DocumentView.Selected()} /> diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index d94f011f4..321362299 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -2,17 +2,26 @@ import { Colors, IconButton } from 'browndash-components'; import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; -import { Doc } from '../../fields/Doc'; +import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; +import { Doc, DocListCast } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; +import { DocCast, NumCast } from '../../fields/Types'; +import { emptyFunction } from '../../Utils'; +import { Docs } from '../documents/Documents'; +import { DocUtils } from '../documents/DocUtils'; import { DragManager, SetupDrag } from '../util/DragManager'; import { SnappingManager } from '../util/SnappingManager'; +import { CollectionFreeFormView } from './collections/collectionFreeForm'; +import { MainView } from './MainView'; import { DocumentView } from './nodes/DocumentView'; import { ObservableReactComponent } from './ObservableReactComponent'; interface KeywordItemProps { doc: Doc; - label: string; + keyword: string; + keywordDoc: Doc; + keywordCollection: Doc[]; setToEditing: () => void; isEditing: boolean; } @@ -25,28 +34,77 @@ export class KeywordItem extends ObservableReactComponent { this.ref = React.createRef(); } - private _dropDisposer?: DragManager.DragDropDisposer; private ref: React.RefObject; - protected createDropTarget = (ele: HTMLDivElement) => { - this._dropDisposer?.(); - SetupDrag(this.ref, () => undefined); - //ele && (this._dropDisposer = DragManager. (ele, this.onInternalDrop.bind(this), this.layoutDoc)); - //ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this.layoutDoc)); + getKeywordCollectionDocs = () => { + for (const doc of DocListCast(Doc.UserDoc().myKeywordCollections)) { + if (doc.title === this._props.keyword) { + return doc[DocData].docs; + } + } + return null; + }; + + createCollection = () => { + const selected = DocListCast(this.getKeywordCollectionDocs()!); + const newEmbeddings = selected.map(doc => Doc.MakeEmbedding(doc)); + const newCollection = ((doc: Doc) => { + const docData = doc[DocData]; + docData.data = new List(newEmbeddings); + docData.title = this._props.keyword; + doc._freeform_panX = doc._freeform_panY = 0; + return doc; + })(Doc.MakeCopy(Doc.UserDoc().emptyCollection as Doc, true)); + newEmbeddings.forEach(embed => (embed.embedContainer = newCollection)); + newCollection._width = 900; + newCollection._height = 900; + newCollection.layout_fitWidth = true; + //newCollection[DocData].smartCollection = this._props.keywordDoc; + + this._props.keywordDoc.collections = new List([...DocListCast(this._props.keywordDoc.collections), newCollection]); + return newCollection; + }; + + @action + handleDragStart = (e: React.PointerEvent) => { + if (this._props.isEditing) { + const clone = this.ref.current?.cloneNode(true) as HTMLElement; + if (!clone) return; + + setupMoveUpEvents( + this, + e, + () => { + const dragData = new DragManager.DocumentDragData([this.createCollection()]); + DragManager.StartDocumentDrag([this.ref.current!], dragData, e.clientX, e.clientY, {}); + return true; + }, + returnFalse, + emptyFunction + ); + e.preventDefault(); + } }; @action removeLabel = () => { if (this._props.doc[DocData].data_labels) { - this._props.doc[DocData].data_labels = (this._props.doc[DocData].data_labels as List).filter(label => label !== this._props.label) as List; - this._props.doc![DocData][`${this._props.label}`] = false; + const filtered_docs = new List(DocListCast(this.getKeywordCollectionDocs()!).filter(doc => doc !== this._props.doc)); + this._props.keywordDoc[DocData].docs = filtered_docs; + + this._props.doc[DocData].data_labels = (this._props.doc[DocData].data_labels as List).filter(label => label !== this._props.keyword) as List; + this._props.doc![DocData][`${this._props.keyword}`] = false; + + for (const collection of DocListCast(this._props.keywordDoc.collections)) { + collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(doc => !Doc.AreProtosEqual(this._props.doc, doc))); + } } }; render() { return ( -
{}} ref={this.ref}> - {this._props.label} +
+ {this._props.keyword} {this.props.isEditing && }
); @@ -61,31 +119,39 @@ interface KeywordBoxProps { @observer export class KeywordBox extends ObservableReactComponent { @observable _currentInput: string = ''; - //private disposer: () => void; + private height: number = 0; + private ref: React.RefObject; + + @computed + get currentScale() { + return NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1); + } constructor(props: any) { super(props); makeObservable(this); + this.ref = React.createRef(); } - // componentDidMount(): void { - // reaction( - // () => ({ - // isDragging: SnappingManager.IsDragging, - // selectedDoc: DocumentView.SelectedDocs().lastElement(), - // isEditing: this._props.isEditing, - // }), - // ({ isDragging, selectedDoc, isEditing }) => { - // if (isDragging || selectedDoc !== this._props.doc || !isEditing) { - // this.setToView(); - // } - // } - // ); - // } - - // componentWillUnmount() { - // this.disposer(); - // } + componentDidMount(): void { + this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + this._props.doc._keywordHeight = this.height; + + reaction( + () => this.currentScale, + () => { + if (this.currentScale < 1) { + this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + this._props.doc._keywordHeight = this.height; + } + } + ); + } + + componentDidUpdate(prevProps: Readonly): void { + this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + this._props.doc._keywordHeight = this.height; + } @action setToEditing = () => { @@ -97,14 +163,51 @@ export class KeywordBox extends ObservableReactComponent { this._props.isEditing = false; }; + getKeywordCollection = (keyword: string) => { + for (const doc of DocListCast(Doc.UserDoc().myKeywordCollections)) { + if (doc.title === keyword) { + return doc; + } + } + + const keywordCollection = new Doc(); + keywordCollection.title = keyword; + keywordCollection[DocData].docs = new List(); + keywordCollection.collections = new List(); + Doc.UserDoc().myKeywordCollections = new List([...DocListCast(Doc.UserDoc().myKeywordCollections), keywordCollection]); + + return keywordCollection; + }; + submitLabel = () => { - if (this._currentInput.trim()) { + if (!Doc.UserDoc().myKeywordCollections) { + Doc.UserDoc().myKeywordCollections = new List(); + } + + const submittedLabel = this._currentInput.trim(); + if (submittedLabel) { + // If the keyword collection is not in the user doc, add it as a new doc, with the keyword as its title. + const keywordCollection = this.getKeywordCollection(submittedLabel); + + // If the document has no keywords field, create the field. if (!this._props.doc[DocData].data_labels) { this._props.doc[DocData].data_labels = new List(); } - (this._props.doc![DocData].data_labels! as List).push(this._currentInput.trim()); + // Add this document to the keyword's collection of associated documents. + keywordCollection[DocData].docs = new List([...DocListCast(keywordCollection[DocData].docs), this._props.doc]); + + // Push the keyword to the document's keyword list field. + (this._props.doc![DocData].data_labels! as List).push(submittedLabel); this._props.doc![DocData][`${this._currentInput}`] = true; + + // Iterate through the keyword document's collections and add a copy of the document to each collection + for (const collection of DocListCast(keywordCollection.collections)) { + const newEmbedding = Doc.MakeEmbedding(this._props.doc); + collection[DocData].data = new List([...DocListCast(collection.data), newEmbedding]); + newEmbedding.embedContainer = collection; + } + this._currentInput = ''; // Clear the input box } }; @@ -120,19 +223,35 @@ export class KeywordBox extends ObservableReactComponent { if (SnappingManager.IsDragging || !(seldoc === this._props.doc) || !this._props.isEditing) { setTimeout( action(() => { - if ((keywordsList as List).length === 0) { - this._props.doc[DocData].showLabels = false; - } + // if ((keywordsList as List).length === 0) { + // this._props.doc[DocData].showLabels = false; + // } this.setToView(); }) ); } return ( -
+
- {(keywordsList as List).map(label => { - return ; + {(keywordsList as List).map(keyword => { + return ( + + ); })}
{this._props.isEditing ? ( diff --git a/src/client/views/StyleProvider.scss b/src/client/views/StyleProvider.scss index 7cc06f922..4267762aa 100644 --- a/src/client/views/StyleProvider.scss +++ b/src/client/views/StyleProvider.scss @@ -58,7 +58,6 @@ display: flex; flex-wrap: wrap; flex-direction: column; - padding-bottom: 4px; border: 1px solid; border-radius: 4px; } diff --git a/src/client/views/collections/CollectionSubView.tsx b/src/client/views/collections/CollectionSubView.tsx index e250d7a90..26528b2b3 100644 --- a/src/client/views/collections/CollectionSubView.tsx +++ b/src/client/views/collections/CollectionSubView.tsx @@ -1,4 +1,4 @@ -import { action, computed, makeObservable, observable } from 'mobx'; +import { action, computed, IReactionDisposer, makeObservable, observable, reaction } from 'mobx'; import * as React from 'react'; import * as rp from 'request-promise'; import { ClientUtils, returnFalse } from '../../../ClientUtils'; @@ -9,7 +9,7 @@ import { Id } from '../../../fields/FieldSymbols'; import { List } from '../../../fields/List'; import { listSpec } from '../../../fields/Schema'; import { ScriptField } from '../../../fields/ScriptField'; -import { BoolCast, Cast, ScriptCast, StrCast } from '../../../fields/Types'; +import { BoolCast, Cast, DocCast, ScriptCast, StrCast } from '../../../fields/Types'; import { WebField } from '../../../fields/URLField'; import { GetEffectiveAcl, TraceMobx } from '../../../fields/util'; import { GestureUtils } from '../../../pen-gestures/GestureUtils'; diff --git a/src/client/views/collections/CollectionView.tsx b/src/client/views/collections/CollectionView.tsx index 5c304b4a9..a750b731a 100644 --- a/src/client/views/collections/CollectionView.tsx +++ b/src/client/views/collections/CollectionView.tsx @@ -34,6 +34,7 @@ import { CollectionMulticolumnView } from './collectionMulticolumn/CollectionMul import { CollectionMultirowView } from './collectionMulticolumn/CollectionMultirowView'; import { CollectionSchemaView } from './collectionSchema/CollectionSchemaView'; import { CollectionCardView } from './CollectionCardDeckView'; +import { DocData } from '../../../fields/DocSymbols'; @observer export class CollectionView extends ViewBoxAnnotatableComponent() { diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index fec4d3e12..af01d6cbc 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -238,14 +238,14 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { if (this._selectedImages.length === 0) { return ( -
this.createDropTarget(ele)}> +
this.createDropTarget(ele!)}>

In order to classify and sort images, marquee select the desired images and press the 'Classify and Sort Images' button. Then, add the desired groups for the images to be put in.

); } return ( -
this.createDropTarget(ele)}> +
this.createDropTarget(ele!)}>
Date: Thu, 18 Jul 2024 11:24:12 -0400 Subject: boutta get silly --- src/client/util/CurrentUserUtils.ts | 27 +- src/client/views/DocumentButtonBar.scss | 4 + src/client/views/DocumentButtonBar.tsx | 42 ++++ src/client/views/FilterPanel.tsx | 2 +- src/client/views/MainView.tsx | 2 +- src/client/views/PropertiesView.tsx | 2 +- .../views/collections/CollectionCardDeckView.tsx | 2 +- src/client/views/global/globalScripts.ts | 201 ++++++++------- src/client/views/pdf/GPTPopup/GPTPopup.scss | 23 +- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 277 ++++++++++++--------- 10 files changed, 356 insertions(+), 226 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 80e13875c..380d16686 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -676,7 +676,7 @@ pie title Minerals in my tap water { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Pile", icon:"layer-group", toolTip:"View the cards as a pile in the free form view !", btnType: ButtonType.ClickButton, expertMode: false, toolType:"pile", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Chat Popup", icon:"lightbulb", toolTip:"Toggle the chat popup's visibility!", width: 50,btnType: ButtonType.ToggleButton, expertMode: false, toolType:"toggle-chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, + { title: "Chat Popup", icon:"lightbulb", toolTip:"Toggle the chat popup's visibility!", width: 45 ,btnType: ButtonType.ToggleButton, expertMode: false, toolType:"toggle-chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, { title: "Sort", toolTip: "Manage sort order / lock status", icon: "sort" , btnType: ButtonType.MultiToggleButton, toolType:"alignment", ignoreClick: true, subMenu: [ @@ -684,7 +684,8 @@ pie title Minerals in my tap water { title: "Descending", toolTip: "Sort the cards in descending order",btnType: ButtonType.ToggleButton, icon: "sort-down",toolType:"down",ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, ]}, - { title: "Filter", icon:"Filter", toolTip:"Filter cards by tags", width: 150, subMenu: this.cardGroupTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + // { title: "Filter", icon:"Filter", toolTip:"Filter cards by tags", width: 150, subMenu: this.cardGroupTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + @@ -711,12 +712,13 @@ pie title Minerals in my tap water // { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // ] // } - static cardGroupTools(): Button[] { + static tagGroupTools(): Button[] { return [ - { title: "Star", icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Heart", icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Bolt", icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Star", icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Heart", icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Bolt", icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Options", icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, // { title: "Group 1", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, @@ -847,7 +849,16 @@ pie title Minerals in my tap water // { title: "Visibility", icon:"Visibility", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "Visibility", icon:"Visibility", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`,width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - + { title: "Filter", icon:"=", toolTip:"Filter cards by tags", btnType: ButtonType.MultiToggleButton, width: 150, ignoreClick: true,toolType:DocumentType.COL, + subMenu: this.tagGroupTools(), funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, + // [ + // { title: "Star", icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Heart", icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Bolt", icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + + // ] + }, { title: "Card", icon: "Card", toolTip: "Card View Tools", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available // { title: "Create", icon: "Create", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available { title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Web is selected diff --git a/src/client/views/DocumentButtonBar.scss b/src/client/views/DocumentButtonBar.scss index 11614d627..374d6ecd3 100644 --- a/src/client/views/DocumentButtonBar.scss +++ b/src/client/views/DocumentButtonBar.scss @@ -153,6 +153,10 @@ $linkGap: 3px; &:hover { background-color: $black; + + .documentButtonBar-pinTypes { + display: flex; + } } } diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index a75c7098c..3d6436cb5 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -286,6 +286,42 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( @computed get keywordButton() { const targetDoc = this.view0?.Document; + + const metaBtn = (name: string, icon: IconProp) => { + const tooltip = `Show ${name}`; + return ( + {tooltip}
}> +
+ { + // this.subPin = + // (pinLayoutView ? 'Layout' : '') + + // (pinLayoutView && pinContentView ? ' &' : '') + + // (pinContentView ? ' Content View' : '') + + // (pinLayoutView && pinContentView ? '(shift+alt)' : pinLayoutView ? '(shift)' : pinContentView ? '(alt)' : ''); + // })} + // onPointerLeave={action(() => { + // this.subPin = ''; + // })} + onClick={e => { + name === 'keywords' ? targetDoc && (targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels) : 'hi' + + + }} + /> +
+ + ); + }; + + + + return !targetDoc ? null : ( Open keyword menu
}>
( onClick={() => { targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels; }}> + +
+ {/* {pinBtn(true, false, 'window-maximize')} + {pinBtn(false, true, 'address-card')} + {pinBtn(true, true, 'id-card')} */} +
diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index c97edd7f0..5db627d23 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -222,7 +222,7 @@ export class FilterPanel extends ObservableReactComponent {
- +
{/* THE FOLLOWING CODE SHOULD BE DEVELOPER FOR BOOLEAN EXPRESSION (AND / OR) */} {/*
diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 0d42f4099..f552540b8 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -90,7 +90,7 @@ export class MainView extends ObservableReactComponent<{}> { @observable private _windowWidth: number = 0; @observable private _windowHeight: number = 0; - @observable private _dashUIWidth: number = 0; // width of entire main dashboard region including left menu buttons and properties panel (but not including the dashboard selector button row) + @observable _dashUIWidth: number = 0; // width of entire main dashboard region including left menu buttons and properties panel (but not including the dashboard selector button row) @observable private _dashUIHeight: number = 0; // height of entire main dashboard region including top menu buttons @observable private _panelContent: string = 'none'; @observable private _sidebarContent: any = Doc.MyLeftSidebarPanel; diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx index 024db82a4..58bb67120 100644 --- a/src/client/views/PropertiesView.tsx +++ b/src/client/views/PropertiesView.tsx @@ -58,7 +58,7 @@ export class PropertiesView extends ObservableReactComponent { GPTPopup.Instance.setVisible(true); - GPTPopup.Instance.setMode(GPTPopupMode.SORT); + GPTPopup.Instance.setMode(GPTPopupMode.CARD); const sortDesc = await this.childPairStringList(); // Await the promise to get the string result GPTPopup.Instance.setCardsDoneLoading(true); // Set dataDoneLoading to true after data is loaded GPTPopup.Instance.setSortDesc(sortDesc.join()); diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 616633bc1..a48e3f9d9 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -1,10 +1,9 @@ import { Colors } from 'browndash-components'; import { action, runInAction } from 'mobx'; import { aggregateBounds } from '../../../Utils'; -import { Doc, DocListCast, NumListCast, Opt } from '../../../fields/Doc'; +import { Doc, DocListCast, Opt } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { InkTool } from '../../../fields/InkField'; -import { List } from '../../../fields/List'; import { BoolCast, Cast, NumCast, StrCast } from '../../../fields/Types'; import { WebField } from '../../../fields/URLField'; import { Gestures } from '../../../pen-gestures/GestureTypes'; @@ -42,7 +41,9 @@ import { CollectionViewType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; import { CollectionSubView } from '../collections/CollectionSubView'; import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; - +import { PropertiesView } from '../PropertiesView'; +import { MainView } from '../MainView'; +import { SnappingManager } from '../../util/SnappingManager'; // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function IsNoneSelected() { return DocumentView.Selected().length <= 0; @@ -145,7 +146,7 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'heart' | 'star' | 'cloud' | 'bolt' | 'chat' | '1' | '2' | '3' | '4' | 'up' | 'down' | 'pile' | 'toggle-chat', + const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'chat' | 'up' | 'down' | 'pile' | 'toggle-chat', { waitForRender?: boolean; checkResult: (doc: Doc) => any; @@ -192,34 +193,34 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "color", setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "color" ? doc.cardSort = '' : doc.cardSort = 'color', }], - ['heart', { - checkResult: (doc: Doc) => isAttrFiltered('heart'), - setDoc: (doc: Doc, dv: DocumentView) => { - isAttrFiltered('heart') ? Doc.setDocFilter(doc, 'heart', true, 'remove') : Doc.setDocFilter(doc, 'heart', true, 'match'); - - } - }], - ['star', { - checkResult: (doc: Doc) => isAttrFiltered('star'), - - setDoc: (doc: Doc, dv: DocumentView) => { - isAttrFiltered('star') ? Doc.setDocFilter(doc, 'star', true, 'remove') : Doc.setDocFilter(doc, 'star', true, 'match'); - } - }], - ['bolt', { - checkResult: (doc: Doc) => isAttrFiltered('bolt'), - setDoc: (doc: Doc, dv: DocumentView) => { - isAttrFiltered('bolt') ? Doc.setDocFilter(doc, 'bolt', true, 'remove') : Doc.setDocFilter(doc, 'bolt', true, 'match'); - - } - }], - ['cloud', { - checkResult: (doc: Doc) => isAttrFiltered('cloud'), - setDoc: (doc: Doc, dv: DocumentView) => { - isAttrFiltered('cloud') ? Doc.setDocFilter(doc, 'cloud', true, 'remove') : Doc.setDocFilter(doc, 'cloud', true, 'match'); - - } - }], + // ['heart', { + // checkResult: (doc: Doc) => isAttrFiltered('heart'), + // setDoc: (doc: Doc, dv: DocumentView) => { + // isAttrFiltered('heart') ? Doc.setDocFilter(doc, 'heart', true, 'remove') : Doc.setDocFilter(doc, 'heart', true, 'match'); + + // } + // }], + // ['star', { + // checkResult: (doc: Doc) => isAttrFiltered('star'), + + // setDoc: (doc: Doc, dv: DocumentView) => { + // isAttrFiltered('star') ? Doc.setDocFilter(doc, 'star', true, 'remove') : Doc.setDocFilter(doc, 'star', true, 'match'); + // } + // }], + // ['bolt', { + // checkResult: (doc: Doc) => isAttrFiltered('bolt'), + // setDoc: (doc: Doc, dv: DocumentView) => { + // isAttrFiltered('bolt') ? Doc.setDocFilter(doc, 'bolt', true, 'remove') : Doc.setDocFilter(doc, 'bolt', true, 'match'); + + // } + // }], + // ['cloud', { + // checkResult: (doc: Doc) => isAttrFiltered('cloud'), + // setDoc: (doc: Doc, dv: DocumentView) => { + // isAttrFiltered('cloud') ? Doc.setDocFilter(doc, 'cloud', true, 'remove') : Doc.setDocFilter(doc, 'cloud', true, 'match'); + + // } + // }], ['chat', { checkResult: (doc: Doc) => { @@ -275,20 +276,9 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } } - // if (doc.type == DocumentType.COL ) { newCol && dv.ComponentView?.addDocument?.(newCol); - // dv.ComponentView?._props.focus(newCol, {willPan: true , willZoomCentered: true, zoomScale: 200} ) DocumentView.showDocument(newCol, { willZoomCentered: true }) - // } - // doc as CollectionFreeFormView - // doc as typeof CollectionSubView - - // doc._props - - // CollectionFreeFormView.addDocumemnt - - // doc?.addDocument; //this._props.addDocument(newCol) }, }], ]); @@ -306,11 +296,40 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' return undefined; }); -ScriptingGlobals.add(function cardHasLabel(label: string) { + +ScriptingGlobals.add(function handleTags(value?: any, checkResult?: boolean) { const selected = DocumentView.SelectedDocs().lastElement(); - const labelNum = Number(label) - 1; - return labelNum < 4 || (selected && DocListCast(selected[Doc.LayoutFieldKey(selected)]).some(doc => doc[StrCast(selected.cardSort_customField)] == labelNum)); -}, ''); + + function isAttrFiltered(attr: string) { + return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); + } + + if (checkResult) { + return value=== 'opts' ? PropertiesView.Instance.openFilters : isAttrFiltered(value) + } + + if (value != 'opts'){ + isAttrFiltered(value) ? Doc.setDocFilter(selected, value, true, 'remove') : Doc.setDocFilter(selected, value, true, 'match'); + } + else { + SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); + SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? Math.min(MainView.Instance._dashUIWidth - 50, 250) : 0); + + PropertiesView.Instance.CloseAll() + PropertiesView.Instance.openFilters = true + } + + + return undefined; + }, ''); + + + +// ScriptingGlobals.add(function cardHasLabel(label: string) { +// const selected = DocumentView.SelectedDocs().lastElement(); +// const labelNum = Number(label) - 1; +// return labelNum < 4 || (selected && DocListCast(selected[Doc.LayoutFieldKey(selected)]).some(doc => doc[StrCast(selected.cardSort_customField)] == labelNum)); +// }, ''); // ScriptingGlobals.add(function setCardSort(attr: "Time" | "Type"| "Color"| "ChatGPT"| "Custom 1"| "Custom 2"| "Custom 3", value?: any, checkResult?: boolean) { // // const editorView = RichTextMenu.Instance?.TextView?.EditorView; @@ -400,55 +419,53 @@ ScriptingGlobals.add(function cardHasLabel(label: string) { // // return undefined; // }); -ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { - // const editorView = RichTextMenu.Instance?.TextView?.EditorView; - const selected = DocumentView.SelectedDocs().lastElement(); - - if (checkResult) { - // console.log(attr + "attricute") - // console.log(map.get(attr)?.checkResult(selected) + "check result") - console.log(StrCast(selected?.cardSort) + 'check'); - const hi = StrCast(selected?.cardSort); - return StrCast(selected?.cardSortForDropDown) ?? 'Time'; - } - - function docFields(doc: Doc): void { - switch (value) { - case 'Custom 1': - doc.cardSort_customField = 'like'; - break; - case 'Custom 2': - doc.cardSort_customField = 'star'; - break; - case 'Custom 3': - doc.cardSort_customField = 'idea'; - break; - case 'Chat GPT': - doc.cardSort = 'custom'; - doc.cardSort_customField = 'chat'; - break; - default: - break; - } - - doc.cardSort_visibleSortGroups = new List(); - } +// ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { +// // const editorView = RichTextMenu.Instance?.TextView?.EditorView; +// const selected = DocumentView.SelectedDocs().lastElement(); +// if (checkResult) { +// // console.log(attr + "attricute") +// // console.log(map.get(attr)?.checkResult(selected) + "check result") +// console.log(StrCast(selected?.cardSort) + 'check'); +// const hi = StrCast(selected?.cardSort); +// return StrCast(selected?.cardSortForDropDown) ?? 'Time'; +// } +// function docFields(doc: Doc): void { +// switch (value) { +// case 'Custom 1': +// doc.cardSort_customField = 'like'; +// break; +// case 'Custom 2': +// doc.cardSort_customField = 'star'; +// break; +// case 'Custom 3': +// doc.cardSort_customField = 'idea'; +// break; +// case 'Chat GPT': +// doc.cardSort = 'custom'; +// doc.cardSort_customField = 'chat'; +// break; +// default: +// break; +// } + +// doc.cardSort_visibleSortGroups = new List(); +// } - // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; - DocumentView.Selected().map(dv => { - dv.Document.cardSortForDropDown = value; +// // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; +// DocumentView.Selected().map(dv => { +// dv.Document.cardSortForDropDown = value; - if (value != 'Chat GPT') { - dv.Document.cardSort = value.trim().split(/\s+/)[0].toLowerCase(); - } - docFields(dv.Document); - }); +// if (value != 'Chat GPT') { +// dv.Document.cardSort = value.trim().split(/\s+/)[0].toLowerCase(); +// } +// docFields(dv.Document); +// }); - return undefined; +// return undefined; - // map.get(attr)?.setDoc?.(); - // return undefined; -}); +// // map.get(attr)?.setDoc?.(); +// // return undefined; +// }); // ScriptingGlobals.add(function setCardSortAttr(attr: 'time' | 'docType' | 'color', value: any, checkResult?: boolean) { // // const editorView = RichTextMenu.Instance?.TextView?.EditorView; diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.scss b/src/client/views/pdf/GPTPopup/GPTPopup.scss index 291f272ce..57973ef34 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.scss +++ b/src/client/views/pdf/GPTPopup/GPTPopup.scss @@ -71,10 +71,12 @@ $highlightedText: #82e0ff; } .btns-wrapper-gpt { - height: 50px; + height: 100%; display: flex; justify-content: center; align-items: center; + flex-direction: column; + transform: translateY(30px); @@ -93,17 +95,20 @@ $highlightedText: #82e0ff; } - } - button { - font-size: 9px; - padding: 10px; - color: #ffffff; - width: 100%; - background-color: $button; - border-radius: 5px; + } + // button { + // font-size: 9px; + // padding: 10px; + // color: #ffffff; + // width: 100%; + // background-color: $button; + // border-radius: 5px; + + // } + .text-btn { &:hover { background-color: $button; diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 71d437c3d..bbd5ea630 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -4,7 +4,7 @@ import { Button, IconButton, Type } from 'browndash-components'; import { action, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { CgClose } from 'react-icons/cg'; +import { CgClose, CgPathBack, CgArrowLeftO, CgCornerUpLeft } from 'react-icons/cg'; import ReactLoading from 'react-loading'; import { TypeAnimation } from 'react-type-animation'; import { ClientUtils } from '../../../../ClientUtils'; @@ -33,6 +33,10 @@ export enum GPTPopupMode { } + + + + interface GPTPopupProps {} @observer @@ -166,6 +170,15 @@ export class GPTPopup extends ObservableReactComponent { this.chatSortPrompt = e.target.value; }); + + @observable quizAnswer: string = "" + + quizAnswerChanged = action((e: React.ChangeEvent) => { + this.quizAnswer = e.target.value; + }); + + + @observable private regenerateCallback: (() => Promise) | null = null; @action public setRegenerateCallback(callback: () => Promise) { @@ -359,81 +372,133 @@ export class GPTPopup extends ObservableReactComponent {
- ) + + cardActual = (opt: GPTPopupMode) => { + if (opt === GPTPopupMode.SORT) { + return ( + !this.sortDone ? ( + <> +
+ { + if (e.key === 'Enter') { + this.generateSort(); + } + e.stopPropagation(); + }} + type="text" + placeholder="How do you want to sort your cards?" + id="search-input" + style={{ width: '100%' }} + /> + {/*
+
*/} +
+ + ) : ( +
+
+

{this.text === 'Something went wrong :(' ? 'Something went wrong :(' : `${this.sortRespText}`}

+ this.setSortDone(false)} + icon={} + color={StrCast(Doc.UserDoc().userVariantColor)} + /> +
+
+ ) + ); + } else if (opt === GPTPopupMode.QUIZ) { return ( <> -
- { - if (e.key === 'Enter') { - this.generateSort(); - } - e.stopPropagation(); - }} - type="text" - placeholder= {`How do you want to sort your cards ?` } - id="search-input" - style={{ width: '100%' }} - /> -
-
-
- - ) - +
+ { + if (e.key === 'Enter') { + this.generateSort(); + } + e.stopPropagation(); + }} + type="text" + placeholder="What is the selected card?" + id="search-input" + style={{ width: '100%' }} + /> +
+
+
+ + ); } - -} - + }; + sortBox = () => ( - <>
{this.heading('SORTING')} <> @@ -445,62 +510,13 @@ export class GPTPopup extends ObservableReactComponent {
) : ( - !this.sortDone && ( - <> -
- { - if (e.key === 'Enter') { - this.generateSort(); - } - e.stopPropagation(); - }} - type="text" - placeholder="How do you want to sort your cards ?" - id="search-input" - style={{ width: '100%' }} - /> -
-
-
- - ) - )} - - {this.sortDone && ( -
-
-

{this.text === 'Something went wrong :(' ? 'Something went wrong :(' : `${this.sortRespText}`}

- this.setSortDone(false)} - icon={} - color={StrCast(Doc.UserDoc().userVariantColor)} - /> -
-
+ (this.mode === GPTPopupMode.CARD ? this.cardMenu() : this.cardActual(this.mode)) // Call the functions to render JSX )}
- -); + ); + + imageBox = () => (
@@ -647,25 +663,60 @@ export class GPTPopup extends ObservableReactComponent { heading = (headingText: string) => (
- {this.loading ? : } onClick={() => this.setVisible(false)} />} + {this.loading ? ( + + ) : ( + <> + {(this.mode === GPTPopupMode.SORT || this.mode === GPTPopupMode.QUIZ) && ( + } + onClick={() => this.mode = GPTPopupMode.CARD} + style = {{right: '-55px'}} + /> + )} + } + onClick={() => this.setVisible(false)} + /> + + + )}
); + render() { + let content; + + switch (this.mode) { + case GPTPopupMode.SUMMARY: + content = this.summaryBox(); + break; + case GPTPopupMode.DATA: + content = this.dataAnalysisBox(); + break; + case GPTPopupMode.IMAGE: + content = this.imageBox(); + break; + case GPTPopupMode.SORT: + case GPTPopupMode.CARD: + case GPTPopupMode.QUIZ: + content = this.sortBox(); + break; + default: + content = null; + } + return (
- {this.mode === GPTPopupMode.SUMMARY - ? this.summaryBox() - : this.mode === GPTPopupMode.DATA - ? this.dataAnalysisBox() - : this.mode === GPTPopupMode.IMAGE - ? this.imageBox() - : this.mode === GPTPopupMode.SORT - ? this.sortBox() - : null} + {content}
); -- cgit v1.2.3-70-g09d2 From bff5a298df61f96fbdcbbb7ebd6a5a441c85151c Mon Sep 17 00:00:00 2001 From: geireann Date: Thu, 18 Jul 2024 15:31:13 -0400 Subject: starting to remove anys --- src/ClientUtils.ts | 14 +++++++++---- src/client/util/DocumentManager.ts | 1 - .../collectionFreeForm/CollectionFreeFormView.tsx | 4 ++-- .../views/nodes/CollectionFreeFormDocumentView.tsx | 6 +++--- src/client/views/nodes/DocumentView.tsx | 24 +++++++++++----------- src/client/views/nodes/FieldView.tsx | 6 +++--- .../views/nodes/formattedText/FormattedTextBox.tsx | 4 ++-- 7 files changed, 32 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index 630d7edbc..b890e7bfc 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -479,10 +479,16 @@ export function clearStyleSheetRules(sheet: CSSStyleSheet|null) { return false; } +export class simPointerEvent extends PointerEvent { + dash?: boolean; +} +export class simMouseEvent extends MouseEvent { + dash?: boolean; +} export function simulateMouseClick(element: Element | null | undefined, x: number, y: number, sx: number, sy: number, rightClick = true) { if (!element) return; ['pointerdown', 'pointerup'].forEach(event => { - const me = new PointerEvent(event, { + const me = new simPointerEvent(event, { view: window, bubbles: true, cancelable: true, @@ -493,12 +499,12 @@ export function simulateMouseClick(element: Element | null | undefined, x: numbe screenX: sx, screenY: sy, }); - (me as any).dash = true; + me.dash = true; element.dispatchEvent(me); }); if (rightClick) { - const me = new MouseEvent('contextmenu', { + const me = new simMouseEvent('contextmenu', { view: window, bubbles: true, cancelable: true, @@ -510,7 +516,7 @@ export function simulateMouseClick(element: Element | null | undefined, x: numbe screenX: sx, screenY: sy, }); - (me as any).dash = true; + me.dash = true; element.dispatchEvent(me); } } diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts index 96b8b5657..e41546d09 100644 --- a/src/client/util/DocumentManager.ts +++ b/src/client/util/DocumentManager.ts @@ -356,7 +356,6 @@ export class DocumentManager { if (options.playMedia) docView.ComponentView?.playFrom?.(NumCast(docView.Document._layout_currentTimecode)); if (options.playAudio) DocumentManager.playAudioAnno(docView.Document); if (options.toggleTarget && (!options.didMove || docView.Document.hidden)) docView.Document.hidden = !docView.Document.hidden; - Doc.AddUnHighlightWatcher(() => docView.Document[Animation] = undefined); } } } diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx index 5b7f09be3..812aa5fa3 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx @@ -83,7 +83,7 @@ export class CollectionFreeFormView extends CollectionSubView(); public static from(dv?: DocumentView): CollectionFreeFormView | undefined { - const parent = CollectionFreeFormDocumentView.from(dv)?._props.parent; + const parent = CollectionFreeFormDocumentView.from(dv)?._props.reactParent; return parent instanceof CollectionFreeFormView ? parent : undefined; } @@ -1488,7 +1488,7 @@ export class CollectionFreeFormView extends CollectionSubView boolean; isAnyChildContentActive: () => boolean; - parent: any; + reactParent: React.Component; } @observer export class CollectionFreeFormDocumentView extends DocComponent() { @@ -71,7 +71,7 @@ export class CollectionFreeFormDocumentView extends DocComponent (Doc.LayoutFieldKey(doc) ? [Doc.LayoutFieldKey(doc)] : []); // fields that are configured to be animatable using animation frames public static from(dv?: DocumentView): CollectionFreeFormDocumentView | undefined { - return dv?._props.parent instanceof CollectionFreeFormDocumentView ? dv._props.parent : undefined; + return dv?._props.reactParent instanceof CollectionFreeFormDocumentView ? dv._props.reactParent : undefined; } constructor(props: CollectionFreeFormDocumentViewProps & freeFormProps) { @@ -304,7 +304,7 @@ export class CollectionFreeFormDocumentView extends DocComponent val.lower)).omit} // prettier-ignore - parent={this} + reactParent={this} DataTransition={this.DataTransition} LocalRotation={this.localRotation} CollectionFreeFormDocumentView={this.returnThis} diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index ce7cfa5f4..5bb12d890 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -7,7 +7,7 @@ import { IReactionDisposer, action, computed, makeObservable, observable, reacti import { observer } from 'mobx-react'; import * as React from 'react'; import { Fade, JackInTheBox } from 'react-awesome-reveal'; -import { ClientUtils, DivWidth, isTargetChildOf as isParentOf, lightOrDark, returnFalse, returnVal, simulateMouseClick } from '../../../ClientUtils'; +import { ClientUtils, DivWidth, isTargetChildOf as isParentOf, lightOrDark, returnFalse, returnVal, simMouseEvent, simulateMouseClick } from '../../../ClientUtils'; import { Utils, emptyFunction } from '../../../Utils'; import { Doc, DocListCast, Field, FieldType, Opt, StrListCast } from '../../../fields/Doc'; import { AclAdmin, AclEdit, AclPrivate, Animation, AudioPlay, DocData, DocViews } from '../../../fields/DocSymbols'; @@ -89,7 +89,7 @@ export interface DocumentViewProps extends FieldViewSharedProps { dragStarting?: () => void; dragEnding?: () => void; - parent?: any; // parent React component view (see CollectionFreeFormDocumentView) + reactParent?: React.Component; // parent React component view (see CollectionFreeFormDocumentView) } @observer export class DocumentViewInternal extends DocComponent() { @@ -105,7 +105,7 @@ export class DocumentViewInternal extends DocComponent any); + private _singleClickFunc: undefined | (() => void); private _longPressSelector: NodeJS.Timeout | undefined; private _downX: number = 0; private _downY: number = 0; @@ -224,7 +224,7 @@ export class DocumentViewInternal extends DocComponent this.style(this.Document, StyleProp.PointerEvents), + () => this.style(this.Document, StyleProp.PointerEvents) as ("all" | "none" | "visiblePainted" | undefined), pointerevents => { this._pointerEvents = pointerevents; }, @@ -450,7 +450,7 @@ export class DocumentViewInternal extends DocComponent { if (this.Document.type !== DocumentType.MAP) DocumentViewInternal.SelectAfterContextMenu && this._props.select(false); // on a mac, the context menu is triggered on mouse down, but a YouTube video becaomes interactive when selected which means that the context menu won't show up. by delaying the selection until hopefully after the pointer up, the context menu will appear. setTimeout(() => simulateMouseClick(document.elementFromPoint(e.clientX, e.clientY), e.clientX, e.clientY, e.screenX, e.screenY)); @@ -710,7 +710,7 @@ export class DocumentViewInternal extends DocComponent this._rootSelected; - panelHeight = () => this._props.PanelHeight() - this.headerMargin; + panelHeight = () => this._props.PanelHeight() - Number(this.headerMargin); screenToLocalContent = () => this._props.ScreenToLocalTransform().translate(0, -this.headerMargin); onClickFunc = this.disableClickScriptFunc ? undefined : () => this.onClickHdlr; setHeight = (height: number) => { !this._props.suppressSetHeight && (this.layoutDoc._height = Math.min(NumCast(this.layoutDoc._maxHeight, Number.MAX_SAFE_INTEGER), height)); } // prettier-ignore @@ -722,7 +722,7 @@ export class DocumentViewInternal extends DocComponent this._props.PanelWidth() || 1; anchorPanelHeight = () => this._props.PanelHeight() || 1; - anchorStyleProvider = (doc: Opt, props: Opt, property: string): any => { + anchorStyleProvider = (doc: Opt, props: Opt, property: string) => { // prettier-ignore switch (property.split(':')[0]) { case StyleProp.ShowTitle: return ''; @@ -770,7 +770,7 @@ export class DocumentViewInternal extends DocComponent, props: Opt, property: string) => this._props?.styleProvider?.(doc, props, property + ':caption'); fieldsDropdown = (placeholder: string) => (
{ r && (this._titleDropDownInnerWidth = DivWidth(r));} )} // prettier-ignore + ref=r => { r && runInAction(() => (this._titleDropDownInnerWidth = DivWidth(r);}) )} // prettier-ignore onPointerDown={action(() => { this._changingTitleField = true; })} // prettier-ignore style={{ width: 'max-content', background: SnappingManager.userBackgroundColor, color: SnappingManager.userColor, transformOrigin: 'left', transform: `scale(${this.titleHeight / 30 /* height of Dropdown */})` }}> () {
{DocumentViewInternal.AnimationEffect(
- console.log('PARSE error', e)} renderInWrapper={false} jsx={StrCast(this._htmlOverlayText)} /> + console.log('PARSE error', e)} renderInWrapper={false} jsx={StrCast(this._htmlOverlayText)} />
, { ...(this._htmlOverlayEffect ?? {}), presentation_effect: effect ?? PresEffect.Expand } as any as Doc, this.Document @@ -1461,7 +1461,7 @@ export class DocumentView extends DocComponent() { }}> Opt; // eslint-disable-next-line no-use-before-define -export type StyleProviderFuncType = (doc: Opt, props: Opt, property: string) => any; +export type StyleProviderFuncType = (doc: Opt, props: Opt, property: string) => Opt |{ clipPath: string; jsx: Element; } | JSX.Element | null; // // these properties get assigned through the render() method of the DocumentView when it creates this node. // However, that only happens because the properties are "defined" in the markup for the field view. @@ -45,7 +45,7 @@ export interface FieldViewSharedProps { containerViewPath?: () => DocumentView[]; fitContentsToBox?: () => boolean; // used by freeformview to fit its contents to its panel. corresponds to _freeform_fitContentsToBox property on a Document isGroupActive?: () => string | undefined; // is this document part of a group that is active - setContentViewBox?: (view: ViewBoxInterface) => any; // called by rendered field's viewBox so that DocumentView can make direct calls to the viewBox + setContentViewBox?: (view: ViewBoxInterface) => any; // called by rendered field's viewBox so that DocumentView can make direct calls to the viewBox PanelWidth: () => number; PanelHeight: () => number; isDocumentActive?: () => boolean | undefined; // whether a document should handle pointer events diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index 5b435e44a..b0c6120d4 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -14,7 +14,7 @@ import { EditorState, NodeSelection, Plugin, Selection, TextSelection, Transacti import { EditorView, NodeViewConstructor } from 'prosemirror-view'; import * as React from 'react'; import { BsMarkdownFill } from 'react-icons/bs'; -import { addStyleSheet, addStyleSheetRule, clearStyleSheetRules, ClientUtils, DivWidth, returnFalse, returnZero, setupMoveUpEvents, smoothScroll, StopEvent } from '../../../../ClientUtils'; +import { addStyleSheet, addStyleSheetRule, clearStyleSheetRules, ClientUtils, DivWidth, returnFalse, returnZero, setupMoveUpEvents, simMouseEvent, smoothScroll, StopEvent } from '../../../../ClientUtils'; import { DateField } from '../../../../fields/DateField'; import { CreateLinkToActiveAudio, Doc, DocListCast, Field, FieldType, Opt, StrListCast } from '../../../../fields/Doc'; import { AclAdmin, AclAugment, AclEdit, AclSelfEdit, DocCss, DocData, ForceServerWrite, UpdatingFromServer } from '../../../../fields/DocSymbols'; @@ -821,7 +821,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent node that wraps the hyerlink while (target && !target.dataset?.targethrefs) target = target.parentElement; const editor = this._editorView; - if (editor && target && !(e.nativeEvent as any).dash) { + if (editor && target && !(e.nativeEvent instanceof simMouseEvent ? e.nativeEvent.dash : false)) { const hrefs = (target.dataset?.targethrefs as string) ?.trim() .split(' ') -- cgit v1.2.3-70-g09d2 From ef83179eacbd9cd7296683e9e07b426da18c0647 Mon Sep 17 00:00:00 2001 From: geireann Date: Thu, 18 Jul 2024 15:32:23 -0400 Subject: from last --- src/client/views/StyleProvider.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 8c100f238..618f69221 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -72,7 +72,7 @@ export function SetFilterOpener(func: () => void) { // a preliminary implementation of a dash style sheet for setting rendering properties of documents nested within a Tab // -export function DefaultStyleProvider(doc: Opt, props: Opt, property: string): any { +export function DefaultStyleProvider(doc: Opt, props: Opt, property: string) { const remoteDocHeader = 'author;author_date;noMargin'; const isCaption = property.includes(':caption'); const isAnchor = property.includes(':anchor'); @@ -110,9 +110,9 @@ export function DefaultStyleProvider(doc: Opt, props: Opt doc && BoolCast(doc._lockedPosition); const titleHeight = () => styleProvider?.(doc, props, StyleProp.TitleHeight); const backgroundCol = () => styleProvider?.(doc, props, StyleProp.BackgroundColor + ':nonTransparent' + (isNonTransparentLevel + 1)); - const color = () => styleProvider?.(doc, props, StyleProp.Color); + const color = () => styleProvider?.(doc, props, StyleProp.Color) as string; const opacity = () => styleProvider?.(doc, props, StyleProp.Opacity); - const layoutShowTitle = () => styleProvider?.(doc, props, StyleProp.ShowTitle); + const layoutShowTitle = () => styleProvider?.(doc, props, StyleProp.ShowTitle) as string; // prettier-ignore switch (property.split(':')[0]) { case StyleProp.TreeViewIcon: { @@ -152,7 +152,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt, props: Opt, props: Opt Date: Thu, 18 Jul 2024 15:32:40 -0400 Subject: from last --- src/client/views/nodes/DocumentView.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index 5bb12d890..24cb4ccf6 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -134,15 +134,15 @@ export class DocumentViewInternal extends DocComponent this._animateScaleTime ?? 100; style = (doc: Doc, sprop: StyleProp | string) => this._props.styleProvider?.(doc, this._props, sprop); - @computed get opacity() { return this.style(this.layoutDoc, StyleProp.Opacity); } // prettier-ignore + @computed get opacity() { return this.style(this.layoutDoc, StyleProp.Opacity) as number; } // prettier-ignore @computed get boxShadow() { return this.style(this.layoutDoc, StyleProp.BoxShadow); } // prettier-ignore @computed get borderRounding() { return this.style(this.layoutDoc, StyleProp.BorderRounding); } // prettier-ignore - @computed get widgetDecorations() { return this.style(this.layoutDoc, StyleProp.Decorations); } // prettier-ignore - @computed get backgroundBoxColor(){ return this.style(this.layoutDoc, StyleProp.BackgroundColor + ':docView'); } // prettier-ignore + @computed get widgetDecorations() { return this.style(this.layoutDoc, StyleProp.Decorations) as JSX.Element; } // prettier-ignore + @computed get backgroundBoxColor(){ return this.style(this.layoutDoc, StyleProp.BackgroundColor + ':docView') as string; } // prettier-ignore @computed get showTitle() { return this.style(this.layoutDoc, StyleProp.ShowTitle) as Opt; } // prettier-ignore - @computed get showCaption() { return this.style(this.layoutDoc, StyleProp.ShowCaption) ?? 0; } // prettier-ignore - @computed get headerMargin() { return this.style(this.layoutDoc, StyleProp.HeaderMargin) ?? 0; } // prettier-ignore - @computed get titleHeight() { return this.style(this.layoutDoc, StyleProp.TitleHeight) ?? 0; } // prettier-ignore + @computed get showCaption() { return this.style(this.layoutDoc, StyleProp.ShowCaption) as string ?? ""; } // prettier-ignore + @computed get headerMargin() { return this.style(this.layoutDoc, StyleProp.HeaderMargin) as number ?? 0; } // prettier-ignore + @computed get titleHeight() { return this.style(this.layoutDoc, StyleProp.TitleHeight) as number ?? 0; } // prettier-ignore @computed get docContents() { return this.style(this.Document, StyleProp.DocContents); } // prettier-ignore @computed get highlighting() { return this.style(this.Document, StyleProp.Highlighting); } // prettier-ignore @computed get borderPath() { return this.style(this.Document, StyleProp.BorderPath); } // prettier-ignore @@ -710,7 +710,7 @@ export class DocumentViewInternal extends DocComponent this._rootSelected; - panelHeight = () => this._props.PanelHeight() - Number(this.headerMargin); + panelHeight = () => this._props.PanelHeight() - this.headerMargin; screenToLocalContent = () => this._props.ScreenToLocalTransform().translate(0, -this.headerMargin); onClickFunc = this.disableClickScriptFunc ? undefined : () => this.onClickHdlr; setHeight = (height: number) => { !this._props.suppressSetHeight && (this.layoutDoc._height = Math.min(NumCast(this.layoutDoc._maxHeight, Number.MAX_SAFE_INTEGER), height)); } // prettier-ignore @@ -770,7 +770,7 @@ export class DocumentViewInternal extends DocComponent, props: Opt, property: string) => this._props?.styleProvider?.(doc, props, property + ':caption'); fieldsDropdown = (placeholder: string) => (
{ r && runInAction(() => (this._titleDropDownInnerWidth = DivWidth(r);}) )} // prettier-ignore + ref={r => { r && runInAction(() => (this._titleDropDownInnerWidth = DivWidth(r)));}} // prettier-ignore onPointerDown={action(() => { this._changingTitleField = true; })} // prettier-ignore style={{ width: 'max-content', background: SnappingManager.userBackgroundColor, color: SnappingManager.userColor, transformOrigin: 'left', transform: `scale(${this.titleHeight / 30 /* height of Dropdown */})` }}> Date: Mon, 22 Jul 2024 15:26:27 -0400 Subject: adding type fixes to avoid 'any's --- .env.swo | Bin 0 -> 12288 bytes .eslintrc.json | 2 +- package-lock.json | 1544 ++++++++++---------- package.json | 2 +- src/ClientUtils.ts | 10 +- src/client/views/InkingStroke.tsx | 17 +- src/client/views/StyleProvider.tsx | 3 +- .../views/collections/CollectionCarousel3DView.tsx | 10 +- .../views/collections/CollectionDockingView.tsx | 7 +- src/client/views/collections/CollectionSubView.tsx | 2 +- src/client/views/collections/TabDocView.tsx | 13 +- src/client/views/collections/TreeView.tsx | 8 +- .../CollectionFreeFormLayoutEngines.tsx | 20 +- .../collectionFreeForm/CollectionFreeFormView.tsx | 77 +- src/client/views/nodes/DocumentView.tsx | 85 +- src/client/views/nodes/FieldView.tsx | 26 +- .../views/nodes/RecordingBox/RecordingView.tsx | 14 +- src/client/views/nodes/ScreenshotBox.tsx | 1 - 18 files changed, 938 insertions(+), 903 deletions(-) create mode 100644 .env.swo (limited to 'src') diff --git a/.env.swo b/.env.swo new file mode 100644 index 000000000..1a66a7865 Binary files /dev/null and b/.env.swo differ diff --git a/.eslintrc.json b/.eslintrc.json index 2e4da56b8..e0298fd5f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -47,7 +47,7 @@ "no-underscore-dangle": "off", "no-nested-ternary": "off", "lines-between-class-members": "off", - "no-explicit-any": "off", + "no-explicit-any": "on", // Note: you must disable the base rule as it can report incorrect errors "no-shadow": "off", "@typescript-eslint/no-shadow": "warn", diff --git a/package-lock.json b/package-lock.json index f11d8a462..0187d7952 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,7 +101,7 @@ "express-session": "^1.17.3", "express-validator": "^7.0.1", "extract-colors": "^4.0.2", - "ffmpeg": "0.0.4", + "ffmpeg": "^0.0.4", "file-loader": "^6.2.0", "file-saver": "^2.0.5", "find-in-files": "^0.5.0", @@ -541,9 +541,9 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.1.tgz", - "integrity": "sha512-ExPSbgjwCoht6kB7B4MeZoBAxcQSIl29r/bPeazZJx50ej4JJCByimLOrZoIsurISNyJQQHf30b3JfqC3Hb88A==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.2.tgz", + "integrity": "sha512-Hnhm/PG9/SQ07JJyLDv3l9Qr8V3xgAe1hFoBYzt6LaalMxfL/ZqFaZf/bz5VN3pMcleCPwl8ivlS2Fjxq/iC8Q==", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.4.0", @@ -581,9 +581,9 @@ } }, "node_modules/@azure/core-util": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", - "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.1.tgz", + "integrity": "sha512-OLsq0etbHO1MA7j6FouXFghuHrAFGk+5C1imcpQ2e+0oZhYF07WLA+NW2Vqs70R7d+zOAWiWM3tbE1sXcDN66g==", "dependencies": { "@azure/abort-controller": "^2.0.0", "tslib": "^2.6.2" @@ -616,9 +616,9 @@ } }, "node_modules/@azure/logger": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.2.tgz", - "integrity": "sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.3.tgz", + "integrity": "sha512-J8/cIKNQB1Fc9fuYqBVnrppiUtW+5WWJPCj/tAokC5LdSTwkWWttN+jsRgw9BLYD7JDBx7PceiqOBxJJ1tQz3Q==", "dependencies": { "tslib": "^2.6.2" }, @@ -662,29 +662,29 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -700,11 +700,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.24.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -737,13 +737,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -752,14 +752,14 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", - "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", + "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", "@babel/helper-optimise-call-expression": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -839,12 +839,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -863,9 +863,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -892,9 +892,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "engines": { "node": ">=6.9.0" } @@ -967,9 +967,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } @@ -983,9 +983,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "engines": { "node": ">=6.9.0" } @@ -1005,13 +1005,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "peer": true, "dependencies": { "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1032,9 +1032,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1451,15 +1451,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", - "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", + "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-replace-supers": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" @@ -1495,11 +1495,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", - "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1687,12 +1687,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-simple-access": "^7.24.7" }, "engines": { @@ -1841,11 +1841,11 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -2064,11 +2064,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", - "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2137,14 +2137,14 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", - "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", - "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", + "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "dependencies": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", @@ -2175,9 +2175,9 @@ "@babel/plugin-transform-block-scoping": "^7.24.7", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.8", "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", "@babel/plugin-transform-dynamic-import": "^7.24.7", @@ -2190,7 +2190,7 @@ "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-modules-systemjs": "^7.24.7", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", @@ -2200,7 +2200,7 @@ "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-object-super": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", @@ -2211,7 +2211,7 @@ "@babel/plugin-transform-spread": "^7.24.7", "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", "@babel/plugin-transform-unicode-escapes": "^7.24.7", "@babel/plugin-transform-unicode-property-regex": "^7.24.7", "@babel/plugin-transform-unicode-regex": "^7.24.7", @@ -2220,7 +2220,7 @@ "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.4", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -2268,9 +2268,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", + "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2279,9 +2279,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.7.tgz", - "integrity": "sha512-eytSX6JLBY6PVAeQa2bFlDx/7Mmln/gaEpsit5a3WEvjGfiIytEsgAwuIXCPM0xvw0v0cJn3ilq0/TvXrW0kgA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.8.tgz", + "integrity": "sha512-DXG/BhegtMHhnN7YPIvxWd303/9aXvYFD1TjNL3CD6tUrhI2LVsg3Lck0aql5TRH29n4sj3emcROypkZVUfSuA==", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -2304,18 +2304,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", + "@babel/generator": "^7.24.8", "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-function-name": "^7.24.7", "@babel/helper-hoist-variables": "^7.24.7", "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2332,11 +2332,11 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, @@ -2385,15 +2385,15 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", - "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/serialize": "^1.1.2", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -2408,47 +2408,47 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/@emotion/cache": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", - "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", - "dependencies": { - "@emotion/memoize": "^0.8.1", - "@emotion/sheet": "^1.2.2", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.0.tgz", + "integrity": "sha512-hPV345J/tH0Cwk2wnU/3PBzORQ9HeX+kQSbwI+jslzpRCHE6fSGTohswksA/Ensr8znPzwfzKZCmAM9Lmlhp7g==", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/is-prop-valid": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", - "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz", + "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==", "dependencies": { - "@emotion/memoize": "^0.8.1" + "@emotion/memoize": "^0.9.0" } }, "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.11.4", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", - "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz", + "integrity": "sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1", - "@emotion/weak-memoize": "^0.3.1", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -2461,33 +2461,33 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", - "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.0.tgz", + "integrity": "sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==", "dependencies": { - "@emotion/hash": "^0.9.1", - "@emotion/memoize": "^0.8.1", - "@emotion/unitless": "^0.8.1", - "@emotion/utils": "^1.2.1", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.9.0", + "@emotion/utils": "^1.4.0", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", - "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/styled": { - "version": "11.11.5", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz", - "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.2", - "@emotion/serialize": "^1.1.4", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@emotion/utils": "^1.2.1" + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" }, "peerDependencies": { "@emotion/react": "^11.0.0-rc.0", @@ -2506,27 +2506,27 @@ "peer": true }, "node_modules/@emotion/unitless": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.9.0.tgz", + "integrity": "sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", - "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", - "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -2634,9 +2634,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", - "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", + "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2670,29 +2670,29 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", - "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz", + "integrity": "sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==", "dependencies": { - "@floating-ui/utils": "^0.2.4" + "@floating-ui/utils": "^0.2.5" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", - "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.8.tgz", + "integrity": "sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.4" + "@floating-ui/utils": "^0.2.5" } }, "node_modules/@floating-ui/react": { - "version": "0.26.19", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.19.tgz", - "integrity": "sha512-Jk6zITdjjIvjO/VdQFvpRaD3qPwOHH6AoDHxjhpy+oK4KFgaSP871HYWUAPdnLmx1gQ+w/pB312co3tVml+BXA==", + "version": "0.26.20", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.20.tgz", + "integrity": "sha512-RixKJJG92fcIsVoqrFr4Onpzh7hlOx4U7NV4aLhMLmtvjZ5oTB/WzXaANYUZATKqXvvW7t9sCxtzejip26N5Ag==", "dependencies": { "@floating-ui/react-dom": "^2.1.1", - "@floating-ui/utils": "^0.2.4", + "@floating-ui/utils": "^0.2.5", "tabbable": "^6.0.0" }, "peerDependencies": { @@ -2713,9 +2713,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", - "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==" + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.5.tgz", + "integrity": "sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==" }, "node_modules/@formatjs/ecma402-abstract": { "version": "2.0.0", @@ -2762,57 +2762,52 @@ } }, "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", - "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", + "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==", "engines": { "node": ">=6" } }, "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", - "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", + "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.2" + "@fortawesome/fontawesome-common-types": "6.6.0" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-brands-svg-icons": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz", - "integrity": "sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.6.0.tgz", + "integrity": "sha512-1MPD8lMNW/earme4OQi1IFHtmHUwAKgghXlNwWi9GO7QkTfD+IIaYpIai4m2YJEzqfEji3jFHX1DZI5pbY/biQ==", "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.2" + "@fortawesome/fontawesome-common-types": "6.6.0" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-regular-svg-icons": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz", - "integrity": "sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz", + "integrity": "sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==", "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.2" + "@fortawesome/fontawesome-common-types": "6.6.0" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", - "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", - "hasInstallScript": true, + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz", + "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==", "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.2" + "@fortawesome/fontawesome-common-types": "6.6.0" }, "engines": { "node": ">=6" @@ -2831,30 +2826,30 @@ } }, "node_modules/@fullcalendar/core": { - "version": "6.1.14", - "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.14.tgz", - "integrity": "sha512-hIPRBevm0aMc2aHy1hRIJgXmI1QTvQM1neQa9oxtuqUmF1+ApYC3oAdwcQMTuI7lHHw3pKJDyJFkKLPPnL6HXA==", + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.15.tgz", + "integrity": "sha512-BuX7o6ALpLb84cMw1FCB9/cSgF4JbVO894cjJZ6kP74jzbUZNjtwffwRdA+Id8rrLjT30d/7TrkW90k4zbXB5Q==", "dependencies": { "preact": "~10.12.1" } }, "node_modules/@fullcalendar/daygrid": { - "version": "6.1.14", - "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.14.tgz", - "integrity": "sha512-DSyjiA1dEM8k3bOCrZpZOmAOZu71KGtH02ze+4QKuhxkmn/zQghmmLRdfzpOrcyJg6xGKkoB4pBcO+2lXar8XQ==", + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.15.tgz", + "integrity": "sha512-j8tL0HhfiVsdtOCLfzK2J0RtSkiad3BYYemwQKq512cx6btz6ZZ2RNc/hVnIxluuWFyvx5sXZwoeTJsFSFTEFA==", "peerDependencies": { - "@fullcalendar/core": "~6.1.14" + "@fullcalendar/core": "~6.1.15" } }, "node_modules/@fullcalendar/multimonth": { - "version": "6.1.14", - "resolved": "https://registry.npmjs.org/@fullcalendar/multimonth/-/multimonth-6.1.14.tgz", - "integrity": "sha512-el2vbZZgTkdufgOvRxqx61czjRMfEK50449g4SkqbagtS3ITNMAv84KHFcsbXVbd9Nh3UhbXDuYZuzJZpvY7mQ==", + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/multimonth/-/multimonth-6.1.15.tgz", + "integrity": "sha512-sEZY6jbOYkeF9TwhUldG+UUVv+hiPlGkS8zZEgPR7ypcjhipyA03c5rPjx7N6huOHqh6lCMH59zlohLooQRlaw==", "dependencies": { - "@fullcalendar/daygrid": "~6.1.14" + "@fullcalendar/daygrid": "~6.1.15" }, "peerDependencies": { - "@fullcalendar/core": "~6.1.14" + "@fullcalendar/core": "~6.1.15" } }, "node_modules/@googlemaps/js-api-loader": { @@ -3717,9 +3712,9 @@ } }, "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -3777,57 +3772,26 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz", - "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz", + "integrity": "sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ==", "dependencies": { "sparse-bitfield": "^3.0.3" } }, - "node_modules/@mui/base": { - "version": "5.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", - "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@floating-ui/react-dom": "^2.0.8", - "@mui/types": "^7.2.14", - "@mui/utils": "^5.15.14", - "@popperjs/core": "^2.11.8", - "clsx": "^2.1.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.0.tgz", - "integrity": "sha512-8SLffXYPRVpcZx5QzxNE8fytTqzp+IuU3deZbQWg/vSaTlDpR5YVrQ4qQtXTi5cRdhOufV5INylmwlKK+//nPw==", + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.4.tgz", + "integrity": "sha512-rNdHXhclwjEZnK+//3SR43YRx0VtjdHnUFhMSGYmAMJve+KiwEja/41EYh8V3pZKqF2geKyfcFUenTfDTYUR4w==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.0.tgz", - "integrity": "sha512-6ISoOhkp9w5gD0PEW9JklrcbyARDkFWNTBdwXZ1Oy5IGlyu9B0zG0hnUIe4H17IaF1Vgj6C8VI+v4tkSdK0veg==", + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.4.tgz", + "integrity": "sha512-j9/CWctv6TH6Dou2uR2EH7UOgu79CW/YcozxCYVLJ7l03pCsiOlJ5sBArnWJxJ+nGkFwyL/1d1k8JEPMDR125A==", "dependencies": { "@babel/runtime": "^7.23.9" }, @@ -3850,21 +3814,21 @@ } }, "node_modules/@mui/material": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.0.tgz", - "integrity": "sha512-DbR1NckTLpjt9Zut9EGQ70th86HfN0BYQgyYro6aXQrNfjzSwe3BJS1AyBQ5mJ7TdL6YVRqohfukxj9JlqZZUg==", + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.4.tgz", + "integrity": "sha512-dBnh3/zRYgEVIS3OE4oTbujse3gifA0qLMmuUk13ywsDCbngJsdgwW5LuYeiT5pfA8PGPGSqM7mxNytYXgiMCw==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.40", - "@mui/core-downloads-tracker": "^5.16.0", - "@mui/system": "^5.16.0", - "@mui/types": "^7.2.14", - "@mui/utils": "^5.16.0", + "@mui/core-downloads-tracker": "^5.16.4", + "@mui/system": "^5.16.4", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.4", + "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.2.0", + "react-is": "^18.3.1", "react-transition-group": "^4.4.5" }, "engines": { @@ -3894,12 +3858,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.0.tgz", - "integrity": "sha512-sYpubkO1MZOnxNyVOClrPNOTs0MfuRVVnAvCeMaOaXt6GimgQbnUcshYv2pSr6PFj+Mqzdff/FYOBceK8u5QgA==", + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.4.tgz", + "integrity": "sha512-ZsAm8cq31SJ37SVWLRlu02v9SRthxnfQofaiv14L5Bht51B0dz6yQEoVU/V8UduZDCCIrWkBHuReVfKhE/UuXA==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.0", + "@mui/utils": "^5.16.4", "prop-types": "^15.8.1" }, "engines": { @@ -3920,9 +3884,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.14", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz", - "integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==", + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.4.tgz", + "integrity": "sha512-0+mnkf+UiAmTVB8PZFqOhqf729Yh0Cxq29/5cA3VAyDVTRIUUQ8FXQhiAhUIbijFmM72rY80ahFPXIm4WDbzcA==", "dependencies": { "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", @@ -3951,15 +3915,15 @@ } }, "node_modules/@mui/system": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.0.tgz", - "integrity": "sha512-9YbkC2m3+pNumAvubYv+ijLtog6puJ0fJ6rYfzfLCM47pWrw3m+30nXNM8zMgDaKL6vpfWJcCXm+LPaWBpy7sw==", + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.4.tgz", + "integrity": "sha512-ET1Ujl2/8hbsD611/mqUuNArMCGv/fIWO/f8B3ZqF5iyPHM2aS74vhTNyjytncc4i6dYwGxNk+tLa7GwjNS0/w==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.0", - "@mui/styled-engine": "^5.15.14", - "@mui/types": "^7.2.14", - "@mui/utils": "^5.16.0", + "@mui/private-theming": "^5.16.4", + "@mui/styled-engine": "^5.16.4", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.4", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -3990,9 +3954,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.14", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", - "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.15.tgz", + "integrity": "sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -4003,14 +3967,15 @@ } }, "node_modules/@mui/utils": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.0.tgz", - "integrity": "sha512-kLLi5J1xY+mwtUlMb8Ubdxf4qFAA1+U7WPBvjM/qQ4CIwLCohNb0sHo1oYPufjSIH/Z9+dhVxD7dJlfGjd1AVA==", + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.4.tgz", + "integrity": "sha512-nlppYwq10TBIFqp7qxY0SvbACOXeOjeVL3pOcDsK0FT8XjrEXh9/+lkg8AEIzD16z7YfiJDQjaJG2OLkE7BxNg==", "dependencies": { "@babel/runtime": "^7.23.9", - "@types/prop-types": "^15.7.11", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "react-is": "^18.3.1" }, "engines": { "node": ">=12.0.0" @@ -4117,9 +4082,9 @@ "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" }, "node_modules/@octokit/request": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.1.tgz", - "integrity": "sha512-pyAguc0p+f+GbQho0uNetNQMmLG1e80WjkIaqqgUkihqUp0boRU6nKItXO4VWnr+nbZiLGEyy4TeKRwqaLvYgw==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz", + "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==", "dependencies": { "@octokit/endpoint": "^10.0.0", "@octokit/request-error": "^6.0.1", @@ -4131,9 +4096,9 @@ } }, "node_modules/@octokit/request-error": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.1.tgz", - "integrity": "sha512-1mw1gqT3fR/WFvnoVpY/zUM2o/XkMs/2AszUUG9I69xn0JFLv6PGkPhNk5lbfvROs79wiS0bqiJNxfCZcRJJdg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.4.tgz", + "integrity": "sha512-VpAhIUxwhWZQImo/dWAN/NpPqqojR6PSLgLYAituLM6U+ddx9hCioFGwBr5Mi+oi5CLeJkcAs3gJ0PYYzU6wUg==", "dependencies": { "@octokit/types": "^13.0.0" }, @@ -6150,25 +6115,25 @@ } }, "node_modules/@react-spring/animated": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", - "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.4.tgz", + "integrity": "sha512-7As+8Pty2QlemJ9O5ecsuPKjmO0NKvmVkRR1n6mEotFgWar8FKuQt2xgxz3RTgxcccghpx1YdS1FCdElQNexmQ==", "dependencies": { - "@react-spring/shared": "~9.7.3", - "@react-spring/types": "~9.7.3" + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@react-spring/core": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz", - "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.4.tgz", + "integrity": "sha512-GzjA44niEJBFUe9jN3zubRDDDP2E4tBlhNlSIkTChiNf9p4ZQlgXBg50qbXfSXHQPHak/ExYxwhipKVsQ/sUTw==", "dependencies": { - "@react-spring/animated": "~9.7.3", - "@react-spring/shared": "~9.7.3", - "@react-spring/types": "~9.7.3" + "@react-spring/animated": "~9.7.4", + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "funding": { "type": "opencollective", @@ -6178,31 +6143,37 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@react-spring/rafz": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.4.tgz", + "integrity": "sha512-mqDI6rW0Ca8IdryOMiXRhMtVGiEGLIO89vIOyFQXRIwwIMX30HLya24g9z4olDvFyeDW3+kibiKwtZnA4xhldA==" + }, "node_modules/@react-spring/shared": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", - "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.4.tgz", + "integrity": "sha512-bEPI7cQp94dOtCFSEYpxvLxj0+xQfB5r9Ru1h8OMycsIq7zFZon1G0sHrBLaLQIWeMCllc4tVDYRTLIRv70C8w==", "dependencies": { - "@react-spring/types": "~9.7.3" + "@react-spring/rafz": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@react-spring/types": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz", - "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==" + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.4.tgz", + "integrity": "sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g==" }, "node_modules/@react-spring/web": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz", - "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.4.tgz", + "integrity": "sha512-UMvCZp7I5HCVIleSa4BwbNxynqvj+mJjG2m20VO2yPoi2pnCYANy58flvz9v/YcXTAvsmL655FV3pm5fbr6akA==", "dependencies": { - "@react-spring/animated": "~9.7.3", - "@react-spring/core": "~9.7.3", - "@react-spring/shared": "~9.7.3", - "@react-spring/types": "~9.7.3" + "@react-spring/animated": "~9.7.4", + "@react-spring/core": "~9.7.4", + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -7169,9 +7140,9 @@ } }, "node_modules/@swc/helpers": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", - "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.12.tgz", + "integrity": "sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==", "dependencies": { "tslib": "^2.4.0" } @@ -8025,25 +7996,6 @@ "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/line-overlap/node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@turf/line-segment": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz", @@ -9448,11 +9400,26 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.6.tgz", - "integrity": "sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==", + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", "dev": true }, + "node_modules/@types/mapbox__point-geometry": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", + "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" + }, + "node_modules/@types/mapbox__vector-tile": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", + "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", + "dependencies": { + "@types/geojson": "*", + "@types/mapbox__point-geometry": "*", + "@types/pbf": "*" + } + }, "node_modules/@types/mapbox-gl": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-3.1.0.tgz", @@ -9493,9 +9460,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "dependencies": { "undici-types": "~5.26.4" } @@ -9593,6 +9560,11 @@ "@types/passport": "*" } }, + "node_modules/@types/pbf": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", + "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" + }, "node_modules/@types/pdf-parse": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@types/pdf-parse/-/pdf-parse-1.1.4.tgz", @@ -9915,9 +9887,9 @@ } }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", + "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", "dev": true, "dependencies": { "@types/node": "*" @@ -9943,16 +9915,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz", - "integrity": "sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", + "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/type-utils": "7.16.0", - "@typescript-eslint/utils": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/type-utils": "7.16.1", + "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -9976,14 +9948,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz", - "integrity": "sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==", - "dependencies": { - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/typescript-estree": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", + "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", + "dependencies": { + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4" }, "engines": { @@ -10003,12 +9975,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz", - "integrity": "sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", + "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", "dependencies": { - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0" + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -10019,13 +9991,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.0.tgz", - "integrity": "sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", + "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.16.0", - "@typescript-eslint/utils": "7.16.0", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/utils": "7.16.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -10046,9 +10018,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz", - "integrity": "sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", + "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -10058,12 +10030,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz", - "integrity": "sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", + "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", "dependencies": { - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10085,9 +10057,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -10096,15 +10068,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.0.tgz", - "integrity": "sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", + "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/typescript-estree": "7.16.0" + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -10118,11 +10090,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz", - "integrity": "sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", + "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", "dependencies": { - "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/types": "7.16.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -10139,55 +10111,55 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@vue/compiler-core": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.31.tgz", - "integrity": "sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==", + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.33.tgz", + "integrity": "sha512-MoIREbkdPQlnGfSKDMgzTqzqx5nmEjIc0ydLVYlTACGBsfvOJ4tHSbZXKVF536n6fB+0eZaGEOqsGThPpdvF5A==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.31", + "@vue/shared": "3.4.33", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.31.tgz", - "integrity": "sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==", + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.33.tgz", + "integrity": "sha512-GzB8fxEHKw0gGet5BKlpfXEqoBnzSVWwMnT+dc25wE7pFEfrU/QsvjZMP9rD4iVXHBBoemTct8mN0GJEI6ZX5A==", "dependencies": { - "@vue/compiler-core": "3.4.31", - "@vue/shared": "3.4.31" + "@vue/compiler-core": "3.4.33", + "@vue/shared": "3.4.33" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.31.tgz", - "integrity": "sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==", + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.33.tgz", + "integrity": "sha512-7rk7Vbkn21xMwIUpHQR4hCVejwE6nvhBOiDgoBcR03qvGqRKA7dCBSsHZhwhYUsmjlbJ7OtD5UFIyhP6BY+c8A==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.31", - "@vue/compiler-dom": "3.4.31", - "@vue/compiler-ssr": "3.4.31", - "@vue/shared": "3.4.31", + "@vue/compiler-core": "3.4.33", + "@vue/compiler-dom": "3.4.33", + "@vue/compiler-ssr": "3.4.33", + "@vue/shared": "3.4.33", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", - "postcss": "^8.4.38", + "postcss": "^8.4.39", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.31.tgz", - "integrity": "sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==", + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.33.tgz", + "integrity": "sha512-0WveC9Ai+eT/1b6LCV5IfsufBZ0HP7pSSTdDjcuW302tTEgoBw8rHVHKPbGUtzGReUFCRXbv6zQDDgucnV2WzQ==", "dependencies": { - "@vue/compiler-dom": "3.4.31", - "@vue/shared": "3.4.31" + "@vue/compiler-dom": "3.4.33", + "@vue/shared": "3.4.33" } }, "node_modules/@vue/shared": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.31.tgz", - "integrity": "sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==" + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.33.tgz", + "integrity": "sha512-aoRY0jQk3A/cuvdkodTrM4NMfxco8n55eG4H7ML/CRy7OryHfiqvug4xrCBBMbbN+dvXAetDDwZW9DXWWjBntA==" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -10519,14 +10491,14 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -10736,6 +10708,38 @@ "deep-equal": "^2.0.5" } }, + "node_modules/aria-query/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -10888,18 +10892,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, "node_modules/array.prototype.tosorted": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", @@ -11080,6 +11072,38 @@ "deep-equal": "^2.0.5" } }, + "node_modules/axobject-query/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/b4a": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", @@ -11620,6 +11644,13 @@ "which", "write-file-atomic" ], + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/arborist": "^6.5.0", @@ -13529,19 +13560,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/browndash-components/node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/browndash-components/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", "inBundle": true, @@ -13987,6 +14005,19 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/browndash-components/node_modules/npm/node_modules/readable-stream": { + "version": "3.6.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/browndash-components/node_modules/npm/node_modules/retry": { "version": "0.12.0", "inBundle": true, @@ -14872,9 +14903,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001641", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz", - "integrity": "sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==", + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", "funding": [ { "type": "opencollective", @@ -15559,6 +15590,11 @@ "tinyqueue": "^2.0.3" } }, + "node_modules/concaveman/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, "node_modules/concaveman/node_modules/rbush": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", @@ -15887,9 +15923,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -16061,9 +16097,9 @@ "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==" }, "node_modules/cytoscape": { - "version": "3.30.0", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.0.tgz", - "integrity": "sha512-l590mjTHT6/Cbxp13dGPC2Y7VXdgc+rUeF8AnF/JPzhjNevbDJfObnJgaSjlldOgBQZbue+X6IUZ7r5GAgvauQ==", + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.1.tgz", + "integrity": "sha512-TRJc3HbBPkHd50u9YfJh2FxD1lDLZ+JXnJoyBn5LkncoeuT7fapO/Hq/Ed8TdFclaKshzInge2i30bg7VKeoPQ==", "engines": { "node": ">=0.10" } @@ -16627,9 +16663,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + "version": "1.11.12", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz", + "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==" }, "node_modules/debug": { "version": "4.3.5", @@ -16725,29 +16761,16 @@ } }, "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", "object-is": "^1.1.5", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" + "regexp.prototype.flags": "^1.5.1" }, "engines": { "node": ">= 0.4" @@ -16951,9 +16974,9 @@ } }, "node_modules/depcheck/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -17226,9 +17249,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.823", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.823.tgz", - "integrity": "sha512-4h+oPeAiGQOHFyUJOqpoEcPj/xxlicxBzOErVeYVMMmAiXUXsGpsFd0QXBMaUUbnD8hhSfLf9uw+MlsoIA7j5w==" + "version": "1.4.832", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.832.tgz", + "integrity": "sha512-cTen3SB0H2SGU7x467NRe1eVcQgcuS6jckKfWJHia2eo0cHIGOqHoAxevIYZD4eRHcWjkvFzo93bi3vJ9W+1lA==" }, "node_modules/elkjs": { "version": "0.9.3", @@ -17309,9 +17332,9 @@ } }, "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "engines": { "node": ">=10.0.0" } @@ -18828,13 +18851,13 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -18858,35 +18881,35 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.34.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz", - "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==", + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", "dev": true, "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.hasown": "^1.1.4", "object.values": "^1.2.0", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { @@ -19596,6 +19619,11 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==" + }, "node_modules/fast-xml-parser": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", @@ -20226,9 +20254,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -20570,25 +20598,6 @@ "deep-equal": "^1.0.0" } }, - "node_modules/geojson-equality/node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/geojson-rbush": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", @@ -20606,6 +20615,11 @@ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" }, + "node_modules/geojson-rbush/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, "node_modules/geojson-rbush/node_modules/rbush": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", @@ -20704,9 +20718,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", - "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -21959,8 +21973,7 @@ "node_modules/image-size-stream/node_modules/image-size": { "version": "0.3.5", "resolved": "git+ssh://git@github.com/netroy/image-size.git#da2c863807a3e9602617bdd357b0de3ab4a064c1", - "integrity": "sha512-nF4/PT7i5t72LJKRBAXfM8PCzUDQurOUzPsNUjQDpUhFpLNuCpSY0+XIHNcc/LtoU3GqSCK3wQDU+CCty3Bfcw==", - "license": "MIT", + "integrity": "sha512-bOV/01RFEAMM7OJU4alHoipipEYAdVk1W9rto2aN1ZnEZsZ1A1OCVJJ2iMaaJIKidVXGZNbP9knmW/3wWTZ4/Q==", "bin": { "image-size": "bin/image-size" }, @@ -21995,9 +22008,9 @@ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immutable": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==" + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -22023,9 +22036,9 @@ } }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -22591,9 +22604,9 @@ } }, "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dependencies": { "hasown": "^2.0.2" }, @@ -23108,15 +23121,12 @@ } }, "node_modules/jackspeak": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.2.tgz", - "integrity": "sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": "14 >=14.21 || 16 >=16.20 || >=18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -23356,9 +23366,9 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "node_modules/jsdom": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz", - "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==", + "version": "24.1.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.1.tgz", + "integrity": "sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==", "dev": true, "dependencies": { "cssstyle": "^4.0.1", @@ -23367,11 +23377,11 @@ "form-data": "^4.0.0", "html-encoding-sniffer": "^4.0.0", "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.4", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.10", + "nwsapi": "^2.2.12", "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.0", + "rrweb-cssom": "^0.7.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.4", @@ -23380,7 +23390,7 @@ "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.17.0", + "ws": "^8.18.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -24175,9 +24185,13 @@ "dev": true }, "node_modules/mapbox-gl": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.5.1.tgz", - "integrity": "sha512-sf4N18vl5FHS8lPRWZjTZShgIziDqSxan3MazHClvYYXezsAPn6hApRvAS2HEMTq7MXzRcvvt4sYgQWLubwnBw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.5.2.tgz", + "integrity": "sha512-KUrmDmLFKPp3MSsWGNTH5uvtYwJknV+eFJ+vxiN6hqKpzbme37z+JfYs5Mehs3CgFaIV/pUdnEV9UPUZJPuS+Q==", + "workspaces": [ + "src/style-spec", + "test/build/typings" + ], "dependencies": { "@mapbox/jsonlint-lines-primitives": "^2.0.2", "@mapbox/mapbox-gl-supported": "^3.0.0", @@ -24186,6 +24200,8 @@ "@mapbox/unitbezier": "^0.0.1", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", + "@types/geojson": "^7946.0.14", + "@types/mapbox__vector-tile": "^1.3.4", "cheap-ruler": "^4.0.0", "csscolorparser": "~1.0.3", "earcut": "^3.0.0", @@ -24198,12 +24214,12 @@ "murmurhash-js": "^1.0.0", "pbf": "^3.2.1", "potpack": "^2.0.0", - "quickselect": "^2.0.0", + "quickselect": "^3.0.0", "rw": "^1.3.3", "serialize-to-js": "^3.1.2", "supercluster": "^8.0.1", - "tiny-lru": "^11.2.6", - "tinyqueue": "^2.0.3", + "tiny-lru": "^11.2.11", + "tinyqueue": "^3.0.0", "tweakpane": "^4.0.4", "vt-pbf": "^3.1.3" } @@ -24213,6 +24229,11 @@ "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz", "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==" }, + "node_modules/mapbox-gl/node_modules/tinyqueue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" + }, "node_modules/markdown-it": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", @@ -30807,9 +30828,9 @@ "integrity": "sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==" }, "node_modules/mobx": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.0.tgz", - "integrity": "sha512-1laWODrBWmB7mDJ8EClCjUQTyLwJ0ydJgE4FtK7t9r3JnjXgc9OhmYs2P4RtHrY1co5+4T6cKP2UswX2SU29mA==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.1.tgz", + "integrity": "sha512-ekLRxgjWJr8hVxj9ZKuClPwM/iHckx3euIJ3Np7zLVNtqJvfbbq7l370W/98C8EabdQ1pB5Jd3BbDWxJPNnaOg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" @@ -30872,9 +30893,9 @@ } }, "node_modules/mocha": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz", - "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.0.tgz", + "integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==", "dev": true, "dependencies": { "ansi-colors": "^4.1.3", @@ -31064,9 +31085,9 @@ } }, "node_modules/mongoose": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.0.tgz", - "integrity": "sha512-iGgZvgO+fIgX1AQMehkG+Wj8qrWc9it8vUZrSKWjrebgfwHTqUcIdTgWK8mT1us1xd83NOQxiuGbg9ZJtLxs2Q==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.1.tgz", + "integrity": "sha512-OhVcwVl91A1G6+XpjDcpkGP7l7ikZkxa0DylX7NT/lcEqAjggzSdqDxb48A+xsDxqNAr0ntSJ1yiE3+KJTOd5Q==", "dependencies": { "bson": "^6.7.0", "kareem": "2.6.3", @@ -31401,9 +31422,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/node-stream-zip": { "version": "1.15.0", @@ -31473,9 +31494,9 @@ } }, "node_modules/nodemon/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -31522,9 +31543,9 @@ } }, "node_modules/npm": { - "version": "10.8.1", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.1.tgz", - "integrity": "sha512-Dp1C6SvSMYQI7YHq/y2l94uvI+59Eqbu1EpuKQHQ8p16txXRuRit5gH3Lnaagk2aXDIjg/Iru9pd05bnneKgdw==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.2.tgz", + "integrity": "sha512-x/AIjFIKRllrhcb48dqUNAAZl0ig9+qMuN91RpZo3Cb2+zuibfh+KISl6+kVVyktDz230JKc208UkQwwMqyB+w==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -31595,15 +31616,22 @@ "which", "write-file-atomic" ], + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.5.3", - "@npmcli/config": "^8.3.3", + "@npmcli/arborist": "^7.5.4", + "@npmcli/config": "^8.3.4", "@npmcli/fs": "^3.1.1", "@npmcli/map-workspaces": "^3.0.6", - "@npmcli/package-json": "^5.1.1", + "@npmcli/package-json": "^5.2.0", "@npmcli/promise-spawn": "^7.0.2", - "@npmcli/redact": "^2.0.0", + "@npmcli/redact": "^2.0.1", "@npmcli/run-script": "^8.1.0", "@sigstore/tuf": "^2.3.4", "abbrev": "^2.0.0", @@ -31614,7 +31642,7 @@ "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.4.1", + "glob": "^10.4.2", "graceful-fs": "^4.2.11", "hosted-git-info": "^7.0.2", "ini": "^4.1.3", @@ -31622,30 +31650,30 @@ "is-cidr": "^5.1.0", "json-parse-even-better-errors": "^3.0.2", "libnpmaccess": "^8.0.6", - "libnpmdiff": "^6.1.3", - "libnpmexec": "^8.1.2", - "libnpmfund": "^5.0.11", + "libnpmdiff": "^6.1.4", + "libnpmexec": "^8.1.3", + "libnpmfund": "^5.0.12", "libnpmhook": "^10.0.5", "libnpmorg": "^6.0.6", - "libnpmpack": "^7.0.3", + "libnpmpack": "^7.0.4", "libnpmpublish": "^9.0.9", "libnpmsearch": "^7.0.6", "libnpmteam": "^6.0.5", "libnpmversion": "^6.0.3", "make-fetch-happen": "^13.0.1", - "minimatch": "^9.0.4", + "minimatch": "^9.0.5", "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", "node-gyp": "^10.1.0", "nopt": "^7.2.1", - "normalize-package-data": "^6.0.1", + "normalize-package-data": "^6.0.2", "npm-audit-report": "^5.0.0", "npm-install-checks": "^6.3.0", "npm-package-arg": "^11.0.2", - "npm-pick-manifest": "^9.0.1", + "npm-pick-manifest": "^9.1.0", "npm-profile": "^10.0.0", - "npm-registry-fetch": "^17.0.1", + "npm-registry-fetch": "^17.1.0", "npm-user-validate": "^2.0.1", "p-map": "^4.0.0", "pacote": "^18.0.6", @@ -31768,7 +31796,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.5.3", + "version": "7.5.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -31816,16 +31844,16 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.3.3", + "version": "8.3.4", "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", "ci-info": "^4.0.0", "ini": "^4.1.2", "nopt": "^7.2.1", "proc-log": "^4.2.0", - "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", "walk-up-path": "^3.0.1" }, @@ -31845,11 +31873,12 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.7", + "version": "5.0.8", "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", @@ -31923,7 +31952,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.1.1", + "version": "5.2.0", "inBundle": true, "license": "ISC", "dependencies": { @@ -31962,7 +31991,7 @@ } }, "node_modules/npm/node_modules/@npmcli/redact": { - "version": "2.0.0", + "version": "2.0.1", "inBundle": true, "license": "ISC", "engines": { @@ -32334,7 +32363,7 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.5", "inBundle": true, "license": "MIT", "dependencies": { @@ -32408,7 +32437,7 @@ } }, "node_modules/npm/node_modules/foreground-child": { - "version": "3.1.1", + "version": "3.2.1", "inBundle": true, "license": "ISC", "dependencies": { @@ -32433,16 +32462,8 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/npm/node_modules/glob": { - "version": "10.4.1", + "version": "10.4.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -32450,6 +32471,7 @@ "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { @@ -32467,17 +32489,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/hasown": { - "version": "2.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/npm/node_modules/hosted-git-info": { "version": "7.0.2", "inBundle": true, @@ -32507,7 +32518,7 @@ } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.4", + "version": "7.0.5", "inBundle": true, "license": "MIT", "dependencies": { @@ -32616,17 +32627,6 @@ "node": ">=14" } }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "inBundle": true, @@ -32646,7 +32646,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "3.1.2", + "version": "3.4.0", "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -32714,11 +32714,11 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.1.3", + "version": "6.1.4", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.3", + "@npmcli/arborist": "^7.5.4", "@npmcli/installed-package-contents": "^2.1.0", "binary-extensions": "^2.3.0", "diff": "^5.1.0", @@ -32732,11 +32732,11 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "8.1.2", + "version": "8.1.3", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.3", + "@npmcli/arborist": "^7.5.4", "@npmcli/run-script": "^8.1.0", "ci-info": "^4.0.0", "npm-package-arg": "^11.0.2", @@ -32752,11 +32752,11 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.11", + "version": "5.0.12", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.3" + "@npmcli/arborist": "^7.5.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -32787,11 +32787,11 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "7.0.3", + "version": "7.0.4", "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.3", + "@npmcli/arborist": "^7.5.4", "@npmcli/run-script": "^8.1.0", "npm-package-arg": "^11.0.2", "pacote": "^18.0.6" @@ -32887,7 +32887,7 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.4", + "version": "9.0.5", "inBundle": true, "license": "ISC", "dependencies": { @@ -32957,26 +32957,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", "inBundle": true, @@ -33122,12 +33102,11 @@ } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.1", + "version": "6.0.2", "inBundle": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, @@ -33199,7 +33178,7 @@ } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.1", + "version": "9.1.0", "inBundle": true, "license": "ISC", "dependencies": { @@ -33225,15 +33204,15 @@ } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "17.0.1", + "version": "17.1.0", "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", "proc-log": "^4.0.0" @@ -33264,6 +33243,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.0", + "inBundle": true, + "license": "BlueOak-1.0.0" + }, "node_modules/npm/node_modules/pacote": { "version": "18.0.6", "inBundle": true, @@ -33534,13 +33518,13 @@ } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.3", + "version": "8.0.4", "inBundle": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" @@ -33951,9 +33935,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", - "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", "dev": true }, "node_modules/oauth": { @@ -34134,23 +34118,6 @@ "node": ">= 0.4" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", @@ -34240,9 +34207,9 @@ } }, "node_modules/openai": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.52.5.tgz", - "integrity": "sha512-qqH8GsyPE3z06took/2uWOGqRcrZNlRoPAsihpg4jsl0+2Dfelnw6HDDMep0EI2Cfzw75nn3vHRZehep/IZzxg==", + "version": "4.52.7", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.52.7.tgz", + "integrity": "sha512-dgxA6UZHary6NXUHEDj5TWt8ogv0+ibH+b4pT5RrWMjiRZVylNwLcw/2ubDrX5n0oUmHX/ZgudMJeemxzOvz7A==", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", @@ -34258,9 +34225,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", - "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", + "version": "18.19.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.41.tgz", + "integrity": "sha512-LX84pRJ+evD2e2nrgYCHObGWkiQJ1mL+meAgbvnwk/US6vmMY7S2ygBTGV2Jw91s9vUsLSXeDEkUHZIJGLrhsg==", "dependencies": { "undici-types": "~5.26.4" } @@ -35067,9 +35034,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -35106,9 +35073,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -35260,17 +35227,17 @@ } }, "node_modules/prosemirror-model": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.21.3.tgz", - "integrity": "sha512-nt2Xs/RNGepD9hrrkzXvtCm1mpGJoQfFSPktGa0BF/aav6XsnmVGZ9sTXNWRLupAz5SCLa3EyKlFeK7zJWROKg==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.2.tgz", + "integrity": "sha512-I4lS7HHIW47D0Xv/gWmi4iUWcQIDYaJKd8Hk4+lcSps+553FlQrhmxtItpEvTr75iAruhzVShVp6WUwsT6Boww==", "dependencies": { "orderedmap": "^2.0.0" } }, "node_modules/prosemirror-schema-list": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.0.tgz", - "integrity": "sha512-nZOIq/AkBSzCENxUyLm5ltWE53e2PLk65ghMN8qLQptOmDVixZlPqtMeQdiNw0odL9vNpalEjl3upgRkuJ/Jyw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz", + "integrity": "sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==", "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", @@ -35296,9 +35263,9 @@ } }, "node_modules/prosemirror-view": { - "version": "1.33.8", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.8.tgz", - "integrity": "sha512-4PhMr/ufz2cdvFgpUAnZfs+0xij3RsFysreeG9V/utpwX7AJtYCDVyuRxzWoMJIEf4C7wVihuBNMPpFLPCiLQw==", + "version": "1.33.9", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.9.tgz", + "integrity": "sha512-xV1A0Vz9cIcEnwmMhKKFAOkfIp8XmJRnaZoPqNXrPS7EK5n11Ov8V76KhR0RsfQd/SIzmWY+bg+M44A2Lx/Nnw==", "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", @@ -35563,9 +35530,9 @@ } }, "node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" }, "node_modules/random-bytes": { "version": "1.0.0", @@ -35930,9 +35897,9 @@ } }, "node_modules/react-intersection-observer": { - "version": "9.10.3", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.10.3.tgz", - "integrity": "sha512-9NYfKwPZRovB6QJee7fDg0zz/SyYrqXtn5xTZU0vwLtLVBtfu9aZt1pVmr825REE49VPDZ7Lm5SNHjJBOTZHpA==", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.13.0.tgz", + "integrity": "sha512-y0UvBfjDiXqC8h0EWccyaj4dVBWMxgEx0t5RGNzQsvkfvZwugnKwxpu70StY4ivzYuMajavwUDjH4LJyIki9Lw==", "peerDependencies": { "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -37492,11 +37459,12 @@ } }, "node_modules/rimraf": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.0.tgz", - "integrity": "sha512-u+yqhM92LW+89cxUQK0SRyvXYQmyuKHx0jkx4W7KfwLGLqJnQM5031Uv1trE4gB9XEXBM/s6MxKlfW95IidqaA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dependencies": { - "glob": "^11.0.0" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { "rimraf": "dist/esm/bin.mjs" @@ -37737,9 +37705,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.77.7", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.7.tgz", - "integrity": "sha512-9ywH75cO+rLjbrZ6en3Gp8qAMwPGBapFtlsMJoDTkcMU/bSe5a6cjKVUn5Jr4Gzg5GbP3HE8cm+02pLCgcoMow==", + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -37835,14 +37803,14 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -38346,9 +38314,9 @@ } }, "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -38926,6 +38894,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -39130,9 +39108,9 @@ } }, "node_modules/styled-components": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.11.tgz", - "integrity": "sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA==", + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.12.tgz", + "integrity": "sha512-n/O4PzRPhbYI0k1vKKayfti3C/IGcPf+DqcrOB7O/ab9x4u/zjqraneT5N45+sIe87cxrCApXM8Bna7NYxwoTA==", "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", @@ -39156,6 +39134,24 @@ "react-dom": ">= 16.8.0" } }, + "node_modules/styled-components/node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/styled-components/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/styled-components/node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, "node_modules/styled-components/node_modules/postcss": { "version": "8.4.38", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", @@ -39235,9 +39231,9 @@ "dev": true }, "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { "@pkgr/core": "^0.1.0", @@ -39383,9 +39379,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/terser": { - "version": "5.31.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.2.tgz", - "integrity": "sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==", + "version": "5.31.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz", + "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -39849,9 +39845,9 @@ } }, "node_modules/ts-loader/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -40373,9 +40369,9 @@ } }, "node_modules/type-fest": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", - "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.23.0.tgz", + "integrity": "sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==", "engines": { "node": ">=16" }, @@ -40486,14 +40482,14 @@ "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==" }, "node_modules/typescript-eslint": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.16.0.tgz", - "integrity": "sha512-kaVRivQjOzuoCXU6+hLnjo3/baxyzWVO5GrnExkFzETRYJKVHYkrJglOu2OCm8Hi9RPDWX1PTNNTpU5KRV0+RA==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.16.1.tgz", + "integrity": "sha512-889oE5qELj65q/tGeOSvlreNKhimitFwZqQ0o7PcWC7/lgRkAMknznsCsV8J8mZGTP/Z+cIbX8accf2DE33hrA==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "7.16.0", - "@typescript-eslint/parser": "7.16.0", - "@typescript-eslint/utils": "7.16.0" + "@typescript-eslint/eslint-plugin": "7.16.1", + "@typescript-eslint/parser": "7.16.1", + "@typescript-eslint/utils": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -41122,9 +41118,9 @@ } }, "node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", + "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0", @@ -41136,9 +41132,9 @@ } }, "node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -41324,9 +41320,9 @@ } }, "node_modules/webpack": { - "version": "5.92.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", - "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "version": "5.93.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", @@ -41441,9 +41437,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", - "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz", + "integrity": "sha512-xD2qnNew+F6KwOGZR7kWdbIou/ud7cVqLEXeK1q0nHcNsX/u7ul/fSdlOTX4ntSL5FNFy7ZJJXbf0piF591JYw==", "dependencies": { "colorette": "^2.0.10", "memfs": "^4.6.0", diff --git a/package.json b/package.json index a614d108e..56800edfc 100644 --- a/package.json +++ b/package.json @@ -186,7 +186,7 @@ "express-session": "^1.17.3", "express-validator": "^7.0.1", "extract-colors": "^4.0.2", - "ffmpeg": "0.0.4", + "ffmpeg": "^0.0.4", "file-loader": "^6.2.0", "file-saver": "^2.0.5", "find-in-files": "^0.5.0", diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index b890e7bfc..fc415d589 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -7,11 +7,11 @@ import { CollectionViewType, DocumentType } from './client/documents/DocumentTyp import { Colors } from './client/views/global/globalEnums'; import { CreateImage } from './client/views/nodes/WebBoxRenderer'; -export function DashColor(color: string) { +export function DashColor(color: string | undefined) { try { return color ? Color(color.toLowerCase()) : Color('transparent'); } catch (e) { - if (color.includes('gradient')) console.log("using color 'white' in place of :" + color); + if (color?.includes('gradient')) console.log("using color 'white' in place of :" + color); else console.log('COLOR error:', e); return Color('white'); } @@ -455,7 +455,7 @@ export function addStyleSheet() { const sheets = document.head.appendChild(style); return sheets.sheet; } -export function addStyleSheetRule(sheet: CSSStyleSheet | null, selector: string, css: string | {[key:string]: string}, selectorPrefix = '.') { +export function addStyleSheetRule(sheet: CSSStyleSheet | null, selector: string, css: string | { [key: string]: string }, selectorPrefix = '.') { const propText = typeof css === 'string' ? css @@ -464,14 +464,14 @@ export function addStyleSheetRule(sheet: CSSStyleSheet | null, selector: string, .join(';'); return sheet?.insertRule(selectorPrefix + selector + '{' + propText + '}', sheet.cssRules.length); } -export function removeStyleSheetRule(sheet: CSSStyleSheet|null, rule: number) { +export function removeStyleSheetRule(sheet: CSSStyleSheet | null, rule: number) { if (sheet?.rules.length) { sheet.removeRule(rule); return true; } return false; } -export function clearStyleSheetRules(sheet: CSSStyleSheet|null) { +export function clearStyleSheetRules(sheet: CSSStyleSheet | null) { if (sheet?.rules.length) { numberRange(sheet.rules.length).map(() => sheet.removeRule(0)); return true; diff --git a/src/client/views/InkingStroke.tsx b/src/client/views/InkingStroke.tsx index 55f28f415..784d252a3 100644 --- a/src/client/views/InkingStroke.tsx +++ b/src/client/views/InkingStroke.tsx @@ -47,6 +47,7 @@ import { FormattedTextBox, FormattedTextBoxProps } from './nodes/formattedText/F import { PinDocView, PinProps } from './PinFuncs'; import { StyleProp } from './StyleProp'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const { INK_MASK_SIZE } = require('./global/globalCssVariables.module.scss'); // prettier-ignore @observer @@ -292,7 +293,7 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() * @param boundsTop the screen space top coordinate of the ink stroke * @returns the JSX controls for displaying an editing UI for the stroke (control point & tangent handles) */ - componentUI = (boundsLeft: number, boundsTop: number) => { + componentUI = (boundsLeft: number, boundsTop: number): null | JSX.Element => { const inkDoc = this.Document; const { inkData, inkStrokeWidth } = this.inkScaledData(); const screenSpaceCenterlineStrokeWidth = Math.min(3, inkStrokeWidth * this.ScreenToLocalBoxXf().inverse().Scale); // the width of the blue line widget that shows the centerline of the ink stroke @@ -344,12 +345,12 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() }; @computed get fillColor(): string { const isInkMask = BoolCast(this.layoutDoc.stroke_isInkMask); - return isInkMask ? DashColor(StrCast(this.layoutDoc.fillColor, 'transparent')).blacken(0).rgb().toString() : this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FillColor) ?? 'transparent'; + return isInkMask ? DashColor(StrCast(this.layoutDoc.fillColor, 'transparent')).blacken(0).rgb().toString() : ((this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FillColor) as 'string') ?? 'transparent'); } @computed get strokeColor() { const { inkData } = this.inkScaledData(); const { fillColor } = this; - return !InkingStroke.IsClosed(inkData) && fillColor && fillColor !== 'transparent' ? fillColor : this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) ?? StrCast(this.layoutDoc.color); + return !InkingStroke.IsClosed(inkData) && fillColor && fillColor !== 'transparent' ? fillColor : ((this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as 'string') ?? StrCast(this.layoutDoc.color)); } render() { TraceMobx(); @@ -370,8 +371,8 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() }); } const highlight = !this.controlUndo && this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Highlighting); - const highlightIndex = highlight?.highlightIndex; - const highlightColor = !this._props.isSelected() && !isInkMask && highlight?.highlightIndex ? highlight?.highlightColor : undefined; + const { highlightIndex, highlightColor: hColor } = (highlight as { highlightIndex?: number; highlightColor?: string }) ?? { highlightIndex: undefined, highlightColor: undefined }; + const highlightColor = !this._props.isSelected() && !isInkMask && highlightIndex ? hColor : undefined; const color = StrCast(this.layoutDoc.stroke_outlineColor, !closed && fillColor && fillColor !== 'transparent' ? StrCast(this.layoutDoc.color, 'transparent') : 'transparent'); // Visually renders the polygonal line made by the user. @@ -401,12 +402,12 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() ); const higlightMargin = Math.min(12, Math.max(2, 0.3 * inkStrokeWidth)); // Invisible polygonal line that enables the ink to be selected by the user. - const clickableLine = (downHdlr?: (e: React.PointerEvent) => void, mask: boolean = false): any => + const clickableLine = (downHdlr?: (e: React.PointerEvent) => void, mask: boolean = false) => InteractionUtils.CreatePolyline( inkData, inkLeft, inkTop, - mask && color === 'transparent' ? this.strokeColor : highlightColor ?? color, + mask && color === 'transparent' ? this.strokeColor : (highlightColor ?? color), inkStrokeWidth, inkStrokeWidth + NumCast(this.layoutDoc.stroke_borderWidth) + (fillColor ? (closed ? higlightMargin : (highlightIndex ?? 0) + higlightMargin) : higlightMargin), StrCast(this.layoutDoc.stroke_lineJoin), @@ -420,7 +421,7 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() inkScaleX, inkScaleY, '', - this._props.pointerEvents?.() ?? 'visiblepainted', + this._props.pointerEvents?.() ?? 'visiblePainted', 0.0, false, downHdlr, diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 618f69221..9cb52aacf 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -144,7 +144,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt, props: Opt void) { diff --git a/src/client/views/collections/CollectionCarousel3DView.tsx b/src/client/views/collections/CollectionCarousel3DView.tsx index 38f681e87..c799eb3c8 100644 --- a/src/client/views/collections/CollectionCarousel3DView.tsx +++ b/src/client/views/collections/CollectionCarousel3DView.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { computed, makeObservable } from 'mobx'; import { observer } from 'mobx-react'; @@ -15,7 +13,7 @@ import { StyleProp } from '../StyleProp'; import { DocumentView } from '../nodes/DocumentView'; import { FocusViewOptions } from '../nodes/FocusViewOptions'; import './CollectionCarousel3DView.scss'; -import { CollectionSubView } from './CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; // eslint-disable-next-line @typescript-eslint/no-var-requires const { CAROUSEL3D_CENTER_SCALE, CAROUSEL3D_SIDE_SCALE, CAROUSEL3D_TOP } = require('../global/globalCssVariables.module.scss'); @@ -25,7 +23,7 @@ export class CollectionCarousel3DView extends CollectionSubView() { @computed get scrollSpeed() { return this.layoutDoc._autoScrollSpeed ? NumCast(this.layoutDoc._autoScrollSpeed) : 1000; // default scroll speed } - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -181,8 +179,8 @@ export class CollectionCarousel3DView extends CollectionSubView() { className="collectionCarousel3DView-outer" ref={this.createDashEventsTarget} style={{ - background: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor), - color: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color), + background: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) as string, + color: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string, }}>
{this.content} diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx index 2a36e96bf..5a142cc6e 100644 --- a/src/client/views/collections/CollectionDockingView.tsx +++ b/src/client/views/collections/CollectionDockingView.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { action, IReactionDisposer, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -28,7 +29,7 @@ import { OverlayView } from '../OverlayView'; import { ScriptingRepl } from '../ScriptingRepl'; import { UndoStack } from '../UndoStack'; import './CollectionDockingView.scss'; -import { CollectionSubView } from './CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; const _global = (window /* browser */ || global) /* node */ as any; @@ -40,7 +41,7 @@ export class CollectionDockingView extends CollectionSubView() { * configuring golden layout to render its documents using the specified React component * @param ele - typically would be set to TabDocView */ - public static Init(ele: any) { + public static Init(ele: JSX.Element | null) { this.tabClass = ele; DocumentView.addSplit = CollectionDockingView.AddSplit; } @@ -60,7 +61,7 @@ export class CollectionDockingView extends CollectionSubView() { private _goldenLayout: any = null; static _highlightStyleSheet = addStyleSheet(); - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); if (this._props.renderDepth < 0) CollectionDockingView.Instance = this; diff --git a/src/client/views/collections/CollectionSubView.tsx b/src/client/views/collections/CollectionSubView.tsx index e250d7a90..b7169ece0 100644 --- a/src/client/views/collections/CollectionSubView.tsx +++ b/src/client/views/collections/CollectionSubView.tsx @@ -67,7 +67,7 @@ export function CollectionSubView() { private gestureDisposer?: GestureUtils.GestureEventDisposer; protected _mainCont?: HTMLDivElement; - constructor(props: any) { + constructor(props: X & SubCollectionViewProps) { super(props); makeObservable(this); } diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx index 46f61290e..f50f7394b 100644 --- a/src/client/views/collections/TabDocView.tsx +++ b/src/client/views/collections/TabDocView.tsx @@ -14,7 +14,7 @@ import { Id } from '../../../fields/FieldSymbols'; import { List } from '../../../fields/List'; import { FieldId } from '../../../fields/RefField'; import { ComputedField } from '../../../fields/ScriptField'; -import { Cast, DocCast, NumCast, StrCast, toList } from '../../../fields/Types'; +import { Cast, NumCast, StrCast, toList } from '../../../fields/Types'; import { DocServer } from '../../DocServer'; import { CollectionViewType, DocumentType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; @@ -67,7 +67,7 @@ class TabMiniThumb extends React.Component { } @observer export class TabMinimapView extends ObservableReactComponent { - static miniStyleProvider = (doc: Opt, props: Opt, property: string): any => { + static miniStyleProvider = (doc: Opt, props: Opt, property: string) => { if (doc) { switch (property.split(':')[0]) { case StyleProp.PointerEvents: return 'none'; @@ -274,7 +274,7 @@ export class TabDocView extends ObservableReactComponent { } static Activate = (tabDoc: Doc) => { - const tab = Array.from(CollectionDockingView.Instance?.tabMap!).find(findTab => findTab.DashDoc === tabDoc && !findTab.contentItem.config.props.keyValue); + const tab = Array.from(CollectionDockingView.Instance?.tabMap ?? []).find(findTab => findTab.DashDoc === tabDoc && !findTab.contentItem.config.props.keyValue); tab?.header.parent.setActiveContentItem(tab.contentItem); // glr: Panning does not work when this is set - (this line is for trying to make a tab that is not topmost become topmost) return tab !== undefined; }; @@ -286,7 +286,7 @@ export class TabDocView extends ObservableReactComponent { // } // return undefined; // } - constructor(props: any) { + constructor(props: TabDocViewProps) { super(props); makeObservable(this); DocumentView.activateTabView = TabDocView.Activate; @@ -399,9 +399,10 @@ export class TabDocView extends ObservableReactComponent { tab._disposers.color = reaction( () => ({ variant: SnappingManager.userVariantColor, degree: Doc.GetBrushStatus(doc), highlight: DefaultStyleProvider(this._document, undefined, StyleProp.Highlighting) }), ({ variant, degree, highlight }) => { - const color = highlight?.highlightIndex === Doc.DocBrushStatus.highlighted ? highlight.highlightColor : degree ? ['transparent', variant, variant, 'orange'][degree] : variant; + const { highlightIndex, highlightColor } = (highlight as { highlightIndex: number; highlightColor: string }) ?? { highlightIndex: undefined, highlightColor: undefined }; + const color = highlightIndex === Doc.DocBrushStatus.highlighted ? highlightColor : degree ? ['transparent', variant, variant, 'orange'][degree] : variant; - const textColor = color === variant ? SnappingManager.userColor ?? '' : lightOrDark(color); + const textColor = color === variant ? (SnappingManager.userColor ?? '') : lightOrDark(color); titleEle.style.color = textColor; iconWrap.style.color = textColor; closeWrap.style.color = textColor; diff --git a/src/client/views/collections/TreeView.tsx b/src/client/views/collections/TreeView.tsx index f69aea2a7..161d93788 100644 --- a/src/client/views/collections/TreeView.tsx +++ b/src/client/views/collections/TreeView.tsx @@ -472,7 +472,7 @@ export class TreeView extends ObservableReactComponent { refTransform = (ref: HTMLElement | undefined | null) => { if (!ref) return this.ScreenToLocalTransform(); const { translateX, translateY, scale } = ClientUtils.GetScreenTransform(ref); - return new Transform(-translateX, -translateY, 1).scale(1/scale); + return new Transform(-translateX, -translateY, 1).scale(1 / scale); }; docTransform = () => this.refTransform(this._dref?.ContentDiv); getTransform = () => this.refTransform(this._tref.current); @@ -777,7 +777,7 @@ export class TreeView extends ObservableReactComponent { @computed get renderBullet() { TraceMobx(); - const iconType = this.treeView._props.styleProvider?.(this.Document, this.treeView._props, StyleProp.TreeViewIcon + (this.treeViewOpen ? ':treeOpen' : !this.childDocs.length ? ':empty' : '')) || 'question'; + const iconType = (this.treeView._props.styleProvider?.(this.Document, this.treeView._props, StyleProp.TreeViewIcon + (this.treeViewOpen ? ':treeOpen' : !this.childDocs.length ? ':empty' : '')) as string) || 'question'; const color = SettingsManager.userColor; const checked = this.onCheckedClick ? this.Document.treeView_Checked ?? 'unchecked' : undefined; return ( @@ -923,7 +923,7 @@ export class TreeView extends ObservableReactComponent { style={{ // just render a title for a tree view label (identified by treeViewDoc being set in 'props') maxWidth: props?.PanelWidth() || undefined, - background: props?.styleProvider?.(doc, props, StyleProp.BackgroundColor), + background: props?.styleProvider?.(doc, props, StyleProp.BackgroundColor) as string, outline: SnappingManager.IsDragging ? undefined: `solid ${highlightColor} ${highlightIndex}px`, paddingLeft: NumCast(treeView.Document.childXPadding, NumCast(treeView._props.childXPadding, Doc.IsComicStyle(doc)?20:0)), paddingRight: NumCast(treeView.Document.childXPadding, NumCast(treeView._props.childXPadding, Doc.IsComicStyle(doc)?20:0)), @@ -1179,7 +1179,7 @@ export class TreeView extends ObservableReactComponent { @computed get renderBorder() { const sorting = StrCast(this.Document.treeView_SortCriterion, TreeSort.WhenAdded); - const sortings = (this._props.styleProvider?.(this.Document, this.treeView._props, StyleProp.TreeViewSortings) ?? {}) as { [key: string]: { color: string; label: string } }; + const sortings = (this._props.styleProvider?.(this.Document, this.treeView._props, StyleProp.TreeViewSortings) ?? {}) as { [key: string]: { color: string; icon: JSX.Element } }; return (
{!this.treeViewOpen ? null : this.renderContent} diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx index de51cc73c..79aad0ef2 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx @@ -9,7 +9,7 @@ import { aggregateBounds } from '../../../../Utils'; export interface ViewDefBounds { type: string; - payload: any; + payload: unknown; x: number; y: number; z?: number; @@ -72,11 +72,15 @@ function toLabel(target: FieldResult) { */ function getTextWidth(text: string, font: string): number { // re-use canvas object for better performance - const canvas = (getTextWidth as any).canvas || ((getTextWidth as any).canvas = document.createElement('canvas')); + const selfStoreHack = getTextWidth as unknown as { canvas: Element }; + const canvas = (selfStoreHack.canvas = (selfStoreHack.canvas as unknown as HTMLCanvasElement) ?? document.createElement('canvas')); const context = canvas.getContext('2d'); - context.font = font; - const metrics = context.measureText(text); - return metrics.width; + if (context) { + context.font = font; + const metrics = context.measureText(text); + return metrics.width; + } + return 0; } interface PivotColumn { @@ -131,13 +135,13 @@ export function computeStarburstLayout(poolData: Map, pivotDoc return normalizeResults(burstDiam, 12, docMap, poolData, viewDefsToJSX, [], 0, [divider]); } -export function computePivotLayout(poolData: Map, pivotDoc: Doc, childPairs: { layout: Doc; data?: Doc }[], panelDim: number[], viewDefsToJSX: (views: ViewDefBounds[]) => ViewDefResult[], engineProps: any) { +export function computePivotLayout(poolData: Map, pivotDoc: Doc, childPairs: { layout: Doc; data?: Doc }[], panelDim: number[], viewDefsToJSX: (views: ViewDefBounds[]) => ViewDefResult[], engineProps: unknown) { const docMap = new Map(); const fieldKey = 'data'; const pivotColumnGroups = new Map, PivotColumn>(); let nonNumbers = 0; - const pivotFieldKey = toLabel(engineProps?.pivotField ?? pivotDoc._pivotField) || 'author'; + const pivotFieldKey = toLabel((engineProps as { pivotField?: string })?.pivotField ?? pivotDoc._pivotField) || 'author'; childPairs.forEach(pair => { const listValue = Cast(pair.layout[pivotFieldKey], listSpec('string'), null); @@ -265,7 +269,7 @@ export function computePivotLayout(poolData: Map, pivotDoc: Do y: -maxColHeight + pivotAxisWidth, width: pivotAxisWidth * numCols * expander, height: maxColHeight, - payload: pivotColumnGroups.get(key)!.filters, + payload: pivotColumnGroups.get(key)?.filters, })); groupNames.push(...dividers); // eslint-disable-next-line no-use-before-define diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx index 812aa5fa3..39c3da7a5 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx @@ -1,6 +1,4 @@ /* eslint-disable react/jsx-props-no-spreading */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ import { Bezier } from 'bezier-js'; import { Colors } from 'browndash-components'; import { action, computed, IReactionDisposer, makeObservable, observable, reaction, runInAction } from 'mobx'; @@ -9,7 +7,7 @@ import { computedFn } from 'mobx-utils'; import * as React from 'react'; import { ClientUtils, DashColor, lightOrDark, OmitKeys, returnFalse, returnZero, setupMoveUpEvents, UpdateIcon } from '../../../../ClientUtils'; import { DateField } from '../../../../fields/DateField'; -import { Doc, DocListCast, Field, FieldType, Opt } from '../../../../fields/Doc'; +import { Doc, DocListCast, Field, FieldType, Opt, StrListCast } from '../../../../fields/Doc'; import { ActiveArrowEnd, ActiveArrowStart, ActiveDash, ActiveEraserWidth, ActiveInkBezierApprox, ActiveInkColor, ActiveInkWidth, ActiveIsInkMask, SetActiveInkColor, SetActiveInkWidth } from '../../nodes/DocumentView'; import { DocData, Height, Width } from '../../../../fields/DocSymbols'; import { Id } from '../../../../fields/FieldSymbols'; @@ -46,7 +44,7 @@ import { FormattedTextBox } from '../../nodes/formattedText/FormattedTextBox'; import { OpenWhere, OpenWhereMod } from '../../nodes/OpenWhere'; import { PinDocView, PinProps } from '../../PinFuncs'; import { StyleProp } from '../../StyleProp'; -import { CollectionSubView } from '../CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; import { TreeViewType } from '../CollectionTreeViewType'; import { CollectionFreeFormBackgroundGrid } from './CollectionFreeFormBackgroundGrid'; import { CollectionFreeFormClusters } from './CollectionFreeFormClusters'; @@ -71,7 +69,7 @@ export interface collectionFreeformViewProps { childPointerEvents?: () => string | undefined; viewField?: string; noOverlay?: boolean; // used to suppress docs in the overlay (z) layer (ie, for minimap since overlay doesn't scale) - engineProps?: any; + engineProps?: unknown; getScrollHeight?: () => number | undefined; } @@ -123,14 +121,14 @@ export class CollectionFreeFormView extends CollectionSubView(); @observable _brushedView: { width: number; height: number; panX: number; panY: number } | undefined = undefined; // highlighted region of freeform canvas used by presentations to indicate a region @observable GroupChildDrag: boolean = false; // child document view being dragged. needed to update drop areas of groups when a group item is dragged. - @observable _childPointerEvents: 'none' | 'all' | 'visiblepainted' | undefined = undefined; + @observable _childPointerEvents: 'none' | 'all' | 'visiblePainted' | undefined = undefined; @observable _lightboxDoc: Opt = undefined; @observable _paintedId = 'id' + Utils.GenerateGuid().replace(/-/g, ''); @observable _keyframeEditing = false; @observable _eraserX: number = 0; @observable _eraserY: number = 0; @observable _showEraserCircle: boolean = false; // to determine whether the radius eraser should show - constructor(props: collectionFreeformViewProps) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -140,12 +138,12 @@ export class CollectionFreeFormView extends CollectionSubView ele.bounds && !ele.bounds.z && ele.inkMask !== -1 && ele.inkMask !== undefined).map(ele => ele.ele); @@ -185,7 +183,7 @@ export class CollectionFreeFormView extends CollectionSubView { + focus = (anchor: Doc, options: FocusViewOptions) => { if (anchor.isGroup && !options.docTransform && options.contextPath?.length) { // don't focus on group if there's a context path because we're about to focus on a group item // which will override any group focus. (If we allowed the group to focus, it would mark didMove even if there were no net movement) @@ -374,14 +372,14 @@ export class CollectionFreeFormView extends CollectionSubView { + // eslint-disable-next-line @typescript-eslint/no-explicit-any if ((curve as any)._linear) { // bezier.js doesn't intersect properly if the curve is actually a line -- so get intersect other curve against this line, then figure out the t coordinates of the intersection on this line const intersections = otherCurve.lineIntersects({ p1: curve.points[0], p2: curve.points[3] }); @@ -1187,6 +1186,7 @@ export class CollectionFreeFormView extends CollectionSubView this._childPointerEvents; - childContentsActive = () => (this._props.childContentsActive ?? this.isContentActive() === false ? returnFalse : emptyFunction)(); + childContentsActive = () => ((this._props.childContentsActive ?? this.isContentActive() === false) ? returnFalse : emptyFunction)(); getChildDocView(entry: PoolData) { const childLayout = entry.pair.layout; const childData = entry.pair.data; @@ -1603,7 +1603,7 @@ export class CollectionFreeFormView extends CollectionSubView { + onViewDefDivClick = (e: React.MouseEvent, payload: unknown) => { (this._props.viewDefDivClick || ScriptCast(this.Document.onViewDefDivClick))?.script.run({ this: this.Document, payload }); e.stopPropagation(); }; @@ -1637,7 +1637,7 @@ export class CollectionFreeFormView extends CollectionSubView this.onViewDefDivClick(e, viewDef)} style={{ width, height, backgroundColor: color, transform }} @@ -1658,7 +1658,7 @@ export class CollectionFreeFormView extends CollectionSubView, - engine: (poolData: Map, pivotDoc: Doc, childPairs: { layout: Doc; data?: Doc }[], panelDim: number[], viewDefsToJSX: (views: ViewDefBounds[]) => ViewDefResult[], engineProps: any) => ViewDefResult[] + engine: (poolData: Map, pivotDoc: Doc, childPairs: { layout: Doc; data?: Doc }[], panelDim: number[], viewDefsToJSX: (views: ViewDefBounds[]) => ViewDefResult[], engineProps: unknown) => ViewDefResult[] ) { return engine(poolData, this.Document, this.childLayoutPairs, [this._props.PanelWidth(), this._props.PanelHeight()], this.viewDefsToJSX, this._props.engineProps); } @@ -1688,7 +1688,7 @@ export class CollectionFreeFormView extends CollectionSubView elements.push({ ele: this.getChildDocView(entry[1]), - bounds: (entry[1].opacity === 0 ? { payload:undefined, type:"", ...entry[1], width: 0, height: 0 } : { payload:undefined, type:"",...entry[1] }), + bounds: entry[1].opacity === 0 ? { payload: undefined, type: '', ...entry[1], width: 0, height: 0 } : { payload: undefined, type: '', ...entry[1] }, inkMask: BoolCast(entry[1].pair.layout.stroke_isInkMask) ? NumCast(entry[1].pair.layout.opacity, 1) : -1, }) ); @@ -1771,7 +1771,7 @@ export class CollectionFreeFormView extends CollectionSubView this.childPointerEvents, pointerevents => { - this._childPointerEvents = pointerevents as any; + this._childPointerEvents = pointerevents as 'none' | 'all' | 'visiblePainted' | undefined; }, { fireImmediately: true } ); @@ -1812,24 +1812,25 @@ export class CollectionFreeFormView extends CollectionSubView { const contentDiv = this.DocumentView?.().ContentDiv; - contentDiv && UpdateIcon( - this.layoutDoc[Id] + '-icon' + new Date().getTime(), - contentDiv, - NumCast(this.layoutDoc._width), - NumCast(this.layoutDoc._height), - this._props.PanelWidth(), - this._props.PanelHeight(), - 0, - 1, - false, - '', - (iconFile, nativeWidth, nativeHeight) => { - this.dataDoc.icon = new ImageField(iconFile); - this.dataDoc.icon_nativeWidth = nativeWidth; - this.dataDoc.icon_nativeHeight = nativeHeight; - } - ); - } + contentDiv && + UpdateIcon( + this.layoutDoc[Id] + '-icon' + new Date().getTime(), + contentDiv, + NumCast(this.layoutDoc._width), + NumCast(this.layoutDoc._height), + this._props.PanelWidth(), + this._props.PanelHeight(), + 0, + 1, + false, + '', + (iconFile, nativeWidth, nativeHeight) => { + this.dataDoc.icon = new ImageField(iconFile); + this.dataDoc.icon_nativeWidth = nativeWidth; + this.dataDoc.icon_nativeHeight = nativeHeight; + } + ); + }; @action onCursorMove = (e: React.PointerEvent) => { @@ -2134,7 +2135,7 @@ export class CollectionFreeFormView extends CollectionSubView e.preventDefault()} onContextMenu={this.onContextMenu} style={{ - pointerEvents: this._props.isContentActive() && SnappingManager.IsDragging ? 'all' : (this._props.pointerEvents?.() as any), + pointerEvents: this._props.isContentActive() && SnappingManager.IsDragging ? 'all' : this._props.pointerEvents?.(), textAlign: this.isAnnotationOverlay ? 'initial' : undefined, transform: `scale(${this.nativeDimScaling})`, width: `${100 / this.nativeDimScaling}%`, diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index 24cb4ccf6..0f2905d5b 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -1,6 +1,5 @@ /* eslint-disable no-use-before-define */ /* eslint-disable react/jsx-props-no-spreading */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { Howl } from 'howler'; import { IReactionDisposer, action, computed, makeObservable, observable, reaction, runInAction } from 'mobx'; @@ -55,13 +54,6 @@ import { PresEffect, PresEffectDirection } from './trails/PresEnums'; import SpringAnimation from './trails/SlideEffect'; import { SpringType, springMappings } from './trails/SpringUtils'; -interface Window { - MediaRecorder: MediaRecorder; -} -declare class MediaRecorder { - constructor(e: any); // whatever MediaRecorder has -} - export interface DocumentViewProps extends FieldViewSharedProps { hideDecorations?: boolean; // whether to suppress all DocumentDecorations when doc is selected hideResizeHandles?: boolean; // whether to suppress resized handles on doc decorations when this document is selected @@ -135,15 +127,15 @@ export class DocumentViewInternal extends DocComponent this._animateScaleTime ?? 100; style = (doc: Doc, sprop: StyleProp | string) => this._props.styleProvider?.(doc, this._props, sprop); @computed get opacity() { return this.style(this.layoutDoc, StyleProp.Opacity) as number; } // prettier-ignore - @computed get boxShadow() { return this.style(this.layoutDoc, StyleProp.BoxShadow); } // prettier-ignore - @computed get borderRounding() { return this.style(this.layoutDoc, StyleProp.BorderRounding); } // prettier-ignore + @computed get boxShadow() { return this.style(this.layoutDoc, StyleProp.BoxShadow) as string; } // prettier-ignore + @computed get borderRounding() { return this.style(this.layoutDoc, StyleProp.BorderRounding) as string; } // prettier-ignore @computed get widgetDecorations() { return this.style(this.layoutDoc, StyleProp.Decorations) as JSX.Element; } // prettier-ignore @computed get backgroundBoxColor(){ return this.style(this.layoutDoc, StyleProp.BackgroundColor + ':docView') as string; } // prettier-ignore @computed get showTitle() { return this.style(this.layoutDoc, StyleProp.ShowTitle) as Opt; } // prettier-ignore @computed get showCaption() { return this.style(this.layoutDoc, StyleProp.ShowCaption) as string ?? ""; } // prettier-ignore @computed get headerMargin() { return this.style(this.layoutDoc, StyleProp.HeaderMargin) as number ?? 0; } // prettier-ignore @computed get titleHeight() { return this.style(this.layoutDoc, StyleProp.TitleHeight) as number ?? 0; } // prettier-ignore - @computed get docContents() { return this.style(this.Document, StyleProp.DocContents); } // prettier-ignore + @computed get docContents() { return this.style(this.Document, StyleProp.DocContents) as JSX.Element; } // prettier-ignore @computed get highlighting() { return this.style(this.Document, StyleProp.Highlighting); } // prettier-ignore @computed get borderPath() { return this.style(this.Document, StyleProp.BorderPath); } // prettier-ignore @@ -164,13 +156,13 @@ export class DocumentViewInternal extends DocComponent this.style(this.Document, StyleProp.PointerEvents) as ("all" | "none" | "visiblePainted" | undefined), + () => this.style(this.Document, StyleProp.PointerEvents) as 'all' | 'none' | 'visiblePainted' | undefined, pointerevents => { this._pointerEvents = pointerevents; }, @@ -450,7 +442,11 @@ export class DocumentViewInternal extends DocComponent - ); + )); }; render() { TraceMobx(); const { highlighting, borderPath } = this; + const { highlightIndex, highlightStyle, highlightColor, highlightStroke } = (highlighting as { highlightIndex: number; highlightStyle: string; highlightColor: string; highlightStroke: boolean }) ?? { + highlightIndex: undefined, + highlightStyle: undefined, + highlightColor: undefined, + highlightStroke: undefined, + }; + const { clipPath, jsx } = (borderPath as { clipPath: string; jsx: JSX.Element }) ?? { clipPath: undefined, jsx: undefined }; const boxShadow = !highlighting ? this.boxShadow - : highlighting && this.borderRounding && highlighting.highlightStyle !== 'dashed' - ? `0 0 0 ${highlighting.highlightIndex}px ${highlighting.highlightColor}` + : highlighting && this.borderRounding && highlightStyle !== 'dashed' + ? `0 0 0 ${highlightIndex}px ${highlightColor}` : this.boxShadow || (this.Document.isTemplateForField ? 'black 0.2vw 0.2vw 0.8vw' : undefined); const renderDoc = this.renderDoc({ borderRadius: this.borderRounding, - outline: highlighting && !this.borderRounding && !highlighting.highlightStroke ? `${highlighting.highlightColor} ${highlighting.highlightStyle} ${highlighting.highlightIndex}px` : 'solid 0px', - border: highlighting && this.borderRounding && highlighting.highlightStyle === 'dashed' ? `${highlighting.highlightStyle} ${highlighting.highlightColor} ${highlighting.highlightIndex}px` : undefined, + outline: highlighting && !this.borderRounding && !highlightStroke ? `${highlightColor} ${highlightStyle} ${highlightIndex}px` : 'solid 0px', + border: highlighting && this.borderRounding && highlightStyle === 'dashed' ? `${highlightStyle} ${highlightColor} ${highlightIndex}px` : undefined, boxShadow, - clipPath: borderPath?.clipPath, + clipPath, }); return ( - // eslint-disable-next-line jsx-a11y/click-events-have-key-events
- {this._componentView?.isUnstyledView?.() || this.Document.type === DocumentType.CONFIG ? renderDoc : DocumentViewInternal.AnimationEffect(renderDoc, this.Document[Animation], this.Document)} - {borderPath?.jsx} + {this._componentView?.isUnstyledView?.() || this.Document.type === DocumentType.CONFIG || !renderDoc ? renderDoc : DocumentViewInternal.AnimationEffect(renderDoc, this.Document[Animation], this.Document)} + {jsx}
); } @@ -968,7 +970,22 @@ export class DocumentViewInternal extends DocComponent, root: Doc) { + public static AnimationEffect( + renderDoc: JSX.Element, + presEffectDoc: Opt< + | Doc + | { + presentation_effectDirection?: string; + followLinkAnimDirection?: string; + presentation_transition?: number; + followLinkTransitionTime?: number; + presentation_effectTiming?: number; + presentation_effect?: string; + followLinkAnimEffect?: string; + } + >, + root: Doc + ) { const dir = ((presEffectDoc?.presentation_effectDirection ?? presEffectDoc?.followLinkAnimDirection) || PresEffectDirection.Center) as PresEffectDirection; const duration = Cast(presEffectDoc?.presentation_transition, 'number', Cast(presEffectDoc?.followLinkTransitionTime, 'number', null)); const effectProps = { @@ -982,7 +999,7 @@ export class DocumentViewInternal extends DocComponent() { public static allViews: () => DocumentView[]; public static addView: (dv: DocumentView) => void | undefined; public static removeView: (dv: DocumentView) => void | undefined; - public static addViewRenderedCb: (doc: Opt, func: (dv: DocumentView) => any) => boolean; + public static addViewRenderedCb: (doc: Opt, func: (dv: DocumentView) => void) => boolean; public static getViews = (doc?: Doc) => Array.from(doc?.[DocViews] ?? []) as DocumentView[]; public static getFirstDocumentView: (toFind: Doc) => DocumentView | undefined; public static getDocumentView: (target: Doc | undefined, preferredCollection?: DocumentView) => Opt; @@ -1107,7 +1124,7 @@ export class DocumentView extends DocComponent() { @observable private _htmlOverlayText: Opt = undefined; @observable private _isHovering = false; @observable private _selected = false; - @observable public static CurrentlyPlaying: DocumentView[] = []; // audio or video media views that are currently playing + @observable public static CurrentlyPlaying: DocumentView[] = []; // audio or video media views that are currently playing @computed private get shouldNotScale() { return (this.layout_fitWidth && !this.nativeWidth) || this.ComponentView?.isUnstyledView?.(); @@ -1254,7 +1271,6 @@ export class DocumentView extends DocComponent() { } public playAnnotation = () => { - const self = this; const audioAnnoState = this.dataDoc.audioAnnoState ?? AudioAnnoState.stopped; const audioAnnos = Cast(this.dataDoc[this.LayoutFieldKey + '_audioAnnotations'], listSpec(AudioField), null); const anno = audioAnnos?.lastElement(); @@ -1267,7 +1283,7 @@ export class DocumentView extends DocComponent() { autoplay: true, loop: false, volume: 0.5, - onend: action(() => { self.dataDoc.audioAnnoState = AudioAnnoState.stopped; }), // prettier-ignore + onend: action(() => { this.dataDoc.audioAnnoState = AudioAnnoState.stopped; }), // prettier-ignore }); this.dataDoc.audioAnnoState = AudioAnnoState.playing; break; @@ -1426,9 +1442,10 @@ export class DocumentView extends DocComponent() {
{DocumentViewInternal.AnimationEffect(
- console.log('PARSE error', e)} renderInWrapper={false} jsx={StrCast(this._htmlOverlayText)} /> + {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */} + console.log('PARSE error', e)} renderInWrapper={false} jsx={StrCast(this._htmlOverlayText)} />
, - { ...(this._htmlOverlayEffect ?? {}), presentation_effect: effect ?? PresEffect.Expand } as any as Doc, + { ...(this._htmlOverlayEffect ?? {}), presentation_effect: effect ?? PresEffect.Expand }, this.Document )}
@@ -1457,7 +1474,7 @@ export class DocumentView extends DocComponent() { style={{ transform: `translate(${this.centeringX}px, ${this.centeringY}px)`, width: xshift ?? `${this._props.PanelWidth() - this.Xshift * 2}px`, - height: this._props.forceAutoHeight ? undefined : yshift ?? (this.layout_fitWidth ? `${this.panelHeight}px` : `${(this.effectiveNativeHeight / this.effectiveNativeWidth) * this._props.PanelWidth()}px`), + height: this._props.forceAutoHeight ? undefined : (yshift ?? (this.layout_fitWidth ? `${this.panelHeight}px` : `${(this.effectiveNativeHeight / this.effectiveNativeWidth) * this._props.PanelWidth()}px`)), }}> Opt; // eslint-disable-next-line no-use-before-define -export type StyleProviderFuncType = (doc: Opt, props: Opt, property: string) => Opt |{ clipPath: string; jsx: Element; } | JSX.Element | null; +export type StyleProviderFuncType = ( + doc: Opt, + props: Opt, + property: string +) => + | Opt + | { clipPath: string; jsx: JSX.Element } + | JSX.Element + | null + | { + [key: string]: + | { + color: string; + icon: JSX.Element | string; + } + | undefined; + } + | { highlightStyle: string; highlightColor: string; highlightIndex: number; highlightStroke: boolean } + | undefined; // // these properties get assigned through the render() method of the DocumentView when it creates this node. // However, that only happens because the properties are "defined" in the markup for the field view. @@ -30,7 +48,7 @@ export interface FieldViewSharedProps { LayoutTemplateString?: string; LayoutTemplate?: () => Opt; renderDepth: number; - scriptContext?: any; // can be assigned anything and will be passed as 'scriptContext' to any OnClick script that executes on this document + scriptContext?: unknown; // can be assigned anything and will be passed as 'scriptContext' to any OnClick script that executes on this document xPadding?: number; yPadding?: number; dontRegisterView?: boolean; @@ -45,7 +63,7 @@ export interface FieldViewSharedProps { containerViewPath?: () => DocumentView[]; fitContentsToBox?: () => boolean; // used by freeformview to fit its contents to its panel. corresponds to _freeform_fitContentsToBox property on a Document isGroupActive?: () => string | undefined; // is this document part of a group that is active - setContentViewBox?: (view: ViewBoxInterface) => any; // called by rendered field's viewBox so that DocumentView can make direct calls to the viewBox + setContentViewBox?: (view: ViewBoxInterface) => void; // called by rendered field's viewBox so that DocumentView can make direct calls to the viewBox PanelWidth: () => number; PanelHeight: () => number; isDocumentActive?: () => boolean | undefined; // whether a document should handle pointer events @@ -76,7 +94,7 @@ export interface FieldViewSharedProps { bringToFront?: (doc: Doc, sendToBack?: boolean) => void; waitForDoubleClickToClick?: () => 'never' | 'always' | undefined; defaultDoubleClick?: () => 'default' | 'ignore' | undefined; - pointerEvents?: () => Opt; + pointerEvents?: () => Opt<'none' | 'all' | 'visiblePainted'>; suppressSetHeight?: boolean; } diff --git a/src/client/views/nodes/RecordingBox/RecordingView.tsx b/src/client/views/nodes/RecordingBox/RecordingView.tsx index b8451fe60..37ffca2d6 100644 --- a/src/client/views/nodes/RecordingBox/RecordingView.tsx +++ b/src/client/views/nodes/RecordingBox/RecordingView.tsx @@ -1,6 +1,4 @@ -/* eslint-disable jsx-a11y/label-has-associated-control */ /* eslint-disable react/button-has-type */ -/* eslint-disable jsx-a11y/control-has-associated-label */ import * as React from 'react'; import { useEffect, useRef, useState } from 'react'; import { IconContext } from 'react-icons'; @@ -14,7 +12,7 @@ import { ProgressBar } from './ProgressBar'; import './RecordingView.scss'; export interface MediaSegment { - videoChunks: any[]; + videoChunks: Blob[]; endTime: number; startTime: number; presentation?: Presentation; @@ -91,15 +89,15 @@ export function RecordingView(props: IRecordingViewProps) { }, []); useEffect(() => { - let interval: any = null; + let interval: null | NodeJS.Timeout = null; if (recording) { interval = setInterval(() => { setRecordingTimer(unit => unit + 1); }, 10); } else if (!recording && recordingTimer !== 0) { - clearInterval(interval); + interval && clearInterval(interval); } - return () => clearInterval(interval); + return interval ? () => clearInterval(interval!) : undefined; }, [recording]); const setVideoProgressHelper = (curProgrss: number) => { @@ -127,9 +125,9 @@ export function RecordingView(props: IRecordingViewProps) { if (!videoRecorder.current) videoRecorder.current = new MediaRecorder(await startShowingStream()); // temporary chunks of video - let videoChunks: any = []; + let videoChunks: Blob[] = []; - videoRecorder.current.ondataavailable = (event: any) => { + videoRecorder.current.ondataavailable = (event: BlobEvent) => { if (event.data.size > 0) videoChunks.push(event.data); }; diff --git a/src/client/views/nodes/ScreenshotBox.tsx b/src/client/views/nodes/ScreenshotBox.tsx index 3be50f5e6..9ef1071f7 100644 --- a/src/client/views/nodes/ScreenshotBox.tsx +++ b/src/client/views/nodes/ScreenshotBox.tsx @@ -1,4 +1,3 @@ -/* eslint-disable jsx-a11y/media-has-caption */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import * as React from 'react'; // import { Canvas } from '@react-three/fiber'; -- cgit v1.2.3-70-g09d2 From ff1840832e1da2e0b0510045574354970a88decc Mon Sep 17 00:00:00 2001 From: geireann Date: Wed, 24 Jul 2024 17:03:16 -0400 Subject: more update of anys --- package-lock.json | 42 +++++++++++++++++++++++++----------- package.json | 2 ++ src/client/views/StyleProvider.tsx | 29 +++++++++++-------------- src/client/views/nodes/FieldView.tsx | 1 + 4 files changed, 44 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 0187d7952..ae5f01daa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -220,6 +220,7 @@ "styled-components": "^6.1.1", "supercluster": "^8.0.1", "textarea-caret": "^3.1.0", + "textfit": "^2.4.0", "tough-cookie": "^4.1.3", "tslint": "^6.1.3", "tslint-loader": "^3.5.4", @@ -283,6 +284,7 @@ "@types/request": "^2.48.12", "@types/request-promise": "^4.1.51", "@types/shelljs": "^0.8.15", + "@types/textfit": "^2.4.4", "@types/uuid": "^10.0.0", "@types/valid-url": "^1.0.7", "@types/webpack": "^5.28.5", @@ -9824,6 +9826,15 @@ "@types/geojson": "*" } }, + "node_modules/@types/textfit": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/textfit/-/textfit-2.4.4.tgz", + "integrity": "sha512-AYlNcJ5j/WspQfbHIhoF0Wo63F5+REnX/VPFSH5unUUuwRcr6IoXxZki3vYhG4DRVUQe51AsFYyRxml5u+qaAg==", + "dev": true, + "dependencies": { + "@types/jquery": "*" + } + }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -13560,6 +13571,19 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/browndash-components/node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { + "version": "3.6.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/browndash-components/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", "inBundle": true, @@ -14005,19 +14029,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/browndash-components/node_modules/npm/node_modules/readable-stream": { - "version": "3.6.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/browndash-components/node_modules/npm/node_modules/retry": { "version": "0.12.0", "inBundle": true, @@ -39503,6 +39514,11 @@ "resolved": "https://registry.npmjs.org/textarea-caret/-/textarea-caret-3.1.0.tgz", "integrity": "sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q==" }, + "node_modules/textfit": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/textfit/-/textfit-2.4.0.tgz", + "integrity": "sha512-/x4aoY5+/tJmu+iwpBH1yw75TFp86M6X15SvaaY/Eep7YySQYtqdOifEtfvVyMwzl7SZ+G4RQw00FD9g5R6i1Q==" + }, "node_modules/thingies": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", diff --git a/package.json b/package.json index 56800edfc..d58bf3e9f 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "@types/request": "^2.48.12", "@types/request-promise": "^4.1.51", "@types/shelljs": "^0.8.15", + "@types/textfit": "^2.4.4", "@types/uuid": "^10.0.0", "@types/valid-url": "^1.0.7", "@types/webpack": "^5.28.5", @@ -305,6 +306,7 @@ "styled-components": "^6.1.1", "supercluster": "^8.0.1", "textarea-caret": "^3.1.0", + "textfit": "^2.4.0", "tough-cookie": "^4.1.3", "tslint": "^6.1.3", "tslint-loader": "^3.5.4", diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 9cb52aacf..8a07a6bd7 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -1,6 +1,3 @@ -/* eslint-disable jsx-a11y/alt-text */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; @@ -24,7 +21,7 @@ import { undoBatch, UndoManager } from '../util/UndoManager'; import { TreeSort } from './collections/TreeSort'; import { Colors } from './global/globalEnums'; import { DocumentView, DocumentViewProps } from './nodes/DocumentView'; -import { FieldViewProps } from './nodes/FieldView'; +import { FieldViewProps, StyleProviderFuncType } from './nodes/FieldView'; import { StyleProp } from './StyleProp'; import './StyleProvider.scss'; @@ -43,9 +40,9 @@ function togglePaintView(e: React.MouseEvent, doc: Opt, props: Opt + const replacer = (match: string, expr: string) => // bcz: this executes a script to convert a property expression string: { script } into a value ScriptField.MakeFunction(expr, { this: Doc.name, scale: 'number' })?.script.run({ this: doc, scale }).result?.toString() ?? ''; divKeys.forEach((prop: string) => { @@ -72,7 +69,7 @@ export function SetFilterOpener(func: () => void) { // a preliminary implementation of a dash style sheet for setting rendering properties of documents nested within a Tab // -export function DefaultStyleProvider(doc: Opt, props: Opt, property: string) { +export function DefaultStyleProvider(doc: Opt, props: Opt, property: string) : StyleProviderFuncType { const remoteDocHeader = 'author;author_date;noMargin'; const isCaption = property.includes(':caption'); const isAnchor = property.includes(':anchor'); @@ -297,8 +294,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt, props: Opt
} closeOnSelect - setSelectedVal={((dv: DocumentView) => { + setSelectedVal={((dvValue: unknown) => { + const dv = dvValue as DocumentView; dv.select(false); SnappingManager.SetPropertiesWidth(250); _filterOpener?.(); - }) as any // Dropdown assumes values are strings or numbers.. + }) // Dropdown assumes values are strings or numbers.. } size={Size.XSMALL} width={15} @@ -345,11 +342,9 @@ export function DefaultStyleProvider(doc: Opt, props: Opt StrListCast(dv?.Document.childFilters).length || StrListCast(dv?.Document.childRangeFilters).length) - .map(dv => ({ - text: StrCast(dv?.Document.title), - val: dv as any, - style: {color:SnappingManager.userColor, background:SnappingManager.userBackgroundColor}, - } as IListItemProps)) } + .map(dv => ({ text: StrCast(dv?.Document.title), + val: dv as unknown, + style: {color:SnappingManager.userColor, background:SnappingManager.userBackgroundColor} } as IListItemProps)) } />
); @@ -387,7 +382,7 @@ export function DashboardToggleButton(doc: Doc, field: string, onIcon: IconProp, } + icon={} onClick={undoBatch( action((e: React.MouseEvent) => { e.stopPropagation(); diff --git a/src/client/views/nodes/FieldView.tsx b/src/client/views/nodes/FieldView.tsx index c77f5a136..fc59e9e26 100644 --- a/src/client/views/nodes/FieldView.tsx +++ b/src/client/views/nodes/FieldView.tsx @@ -26,6 +26,7 @@ export type StyleProviderFuncType = ( | Opt | { clipPath: string; jsx: JSX.Element } | JSX.Element + | JSX.IntrinsicElements | null | { [key: string]: -- cgit v1.2.3-70-g09d2 From e1db06d59d580aa640212a0d3a6aeecb9122bdf0 Mon Sep 17 00:00:00 2001 From: geireann Date: Thu, 25 Jul 2024 15:06:01 -0400 Subject: lots more 'any' cleanup and more. --- src/client/views/MarqueeAnnotator.tsx | 21 +- src/client/views/nodes/DataVizBox/DataVizBox.tsx | 6 +- src/client/views/nodes/ImageBox.tsx | 6 +- src/client/views/nodes/VideoBox.tsx | 16 +- src/client/views/nodes/WebBox.tsx | 48 ++-- .../views/nodes/formattedText/FormattedTextBox.tsx | 260 ++++++++------------- .../formattedText/FormattedTextBoxComment.tsx | 10 +- .../views/nodes/formattedText/RichTextMenu.tsx | 91 ++++---- src/client/views/pdf/AnchorMenu.tsx | 4 +- src/client/views/pdf/PDFViewer.tsx | 34 ++- 10 files changed, 213 insertions(+), 283 deletions(-) (limited to 'src') diff --git a/src/client/views/MarqueeAnnotator.tsx b/src/client/views/MarqueeAnnotator.tsx index c18ac6738..8aed34d24 100644 --- a/src/client/views/MarqueeAnnotator.tsx +++ b/src/client/views/MarqueeAnnotator.tsx @@ -27,7 +27,7 @@ export interface MarqueeAnnotatorProps { containerOffset?: () => number[]; marqueeContainer: HTMLDivElement; docView: () => DocumentView; - savedAnnotations: () => ObservableMap; + savedAnnotations: () => ObservableMap; selectionText: () => string; annotationLayer: HTMLDivElement; addDocument: (doc: Doc) => boolean; @@ -41,7 +41,7 @@ export interface MarqueeAnnotatorProps { export class MarqueeAnnotator extends ObservableReactComponent { private _start: { x: number; y: number } = { x: 0, y: 0 }; - constructor(props: any) { + constructor(props: MarqueeAnnotatorProps) { super(props); makeObservable(this); } @@ -60,13 +60,13 @@ export class MarqueeAnnotator extends ObservableReactComponent): Opt => { + makeAnnotationDocument = (color: string, isLinkButton?: boolean, savedAnnotations?: ObservableMap): Opt => { const savedAnnoMap = savedAnnotations?.values() && Array.from(savedAnnotations?.values()).length ? savedAnnotations : this.props.savedAnnotations(); if (savedAnnoMap.size === 0) return undefined; const savedAnnos = Array.from(savedAnnoMap.values())[0]; const doc = this.props.Document; const scale = (this.props.annotationLayerScaling?.() || 1) * NumCast(doc._freeform_scale, 1); - if (savedAnnos.length && (savedAnnos[0] as any).marqueeing) { + if (savedAnnos.length && savedAnnos[0].marqueeing) { const anno = savedAnnos[0]; const containerOffset = this.props.containerOffset?.() || [0, 0]; const marqueeAnno = Docs.Create.FreeformDocument([], { @@ -86,8 +86,9 @@ export class MarqueeAnnotator extends ObservableReactComponent, annotationLayer: HTMLDivElement, div: HTMLDivElement, page: number) => { + public static previewNewAnnotation = action((savedAnnotations: ObservableMap, annotationLayer: HTMLDivElement & { marqueeing?: boolean}, div: HTMLDivElement, page: number) => { div.style.backgroundColor = '#ACCEF7'; div.style.opacity = '0.5'; annotationLayer.append(div); @@ -264,17 +265,17 @@ export class MarqueeAnnotator extends ObservableReactComponent { - copy.style[prop as any] = marqueeStyle[prop as any]; + copy.style[prop as unknown as number] = marqueeStyle[prop as unknown as number]; // bcz: hack to get around TS type checking for array index with strings }); copy.className = 'marqueeAnnotator-annotationBox'; copy.style.top = parseInt(marqueeStyle.top.toString().replace('px', '')) / scale + this.props.scrollTop + 'px'; copy.style.left = parseInt(marqueeStyle.left.toString().replace('px', '')) / scale + 'px'; copy.style.width = parseInt(marqueeStyle.width.toString().replace('px', '')) / scale + 'px'; copy.style.height = parseInt(marqueeStyle.height.toString().replace('px', '')) / scale + 'px'; - (copy as any).marqueeing = true; + copy.marqueeing = true; MarqueeAnnotator.previewNewAnnotation(this.props.savedAnnotations(), this.props.annotationLayer, copy, this.props.getPageFromScroll?.(this.top) || 0); AnchorMenu.Instance.jumpTo(x, y); } diff --git a/src/client/views/nodes/DataVizBox/DataVizBox.tsx b/src/client/views/nodes/DataVizBox/DataVizBox.tsx index 4d5f15a3e..baf8693ca 100644 --- a/src/client/views/nodes/DataVizBox/DataVizBox.tsx +++ b/src/client/views/nodes/DataVizBox/DataVizBox.tsx @@ -50,7 +50,7 @@ export class DataVizBox extends ViewBoxAnnotatableComponent() { sidebarAddDoc: ((doc: Doc | Doc[], sidebarKey?: string | undefined) => boolean) | undefined; crop: ((region: Doc | undefined, addCrop?: boolean) => Doc | undefined) | undefined; @observable _marqueeing: number[] | undefined = undefined; - @observable _savedAnnotations = new ObservableMap(); + @observable _savedAnnotations = new ObservableMap(); constructor(props: FieldViewProps) { super(props); @@ -376,8 +376,8 @@ export class DataVizBox extends ViewBoxAnnotatableComponent() { this._props.select(false); MarqueeAnnotator.clearAnnotations(this._savedAnnotations); this._marqueeing = [e.clientX, e.clientY]; - const target = e.target as any; - if (e.target && (target.className.includes('endOfContent') || (target.parentElement.className !== 'textLayer' && target.parentElement.parentElement?.className !== 'textLayer'))) { + const target = e.target as HTMLElement; + if (e.target && (target.className.includes('endOfContent') || (target.parentElement?.className !== 'textLayer' && target.parentElement?.parentElement?.className !== 'textLayer'))) { /* empty */ } else { // if textLayer is hit, then we select text instead of using a marquee so clear out the marquee. diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index 68c313480..ce7552047 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -73,7 +73,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { private _marqueeref = React.createRef(); private _mainCont: React.RefObject = React.createRef(); private _annotationLayer: React.RefObject = React.createRef(); - @observable _savedAnnotations = new ObservableMap(); + @observable _savedAnnotations = new ObservableMap(); @observable _curSuffix = ''; @observable _error = ''; @observable _isHovering = false; // flag to switch between primary and alternate images on hover @@ -356,7 +356,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { @computed get content() { TraceMobx(); - const backColor = DashColor(this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) ?? Colors.WHITE); + const backColor = DashColor(this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) as string ?? Colors.WHITE); const backAlpha = backColor.red() === 0 && backColor.green() === 0 && backColor.blue() === 0 ? backColor.alpha() : 1; const srcpath = this.layoutDoc.hideImage ? '' : this.paths[0]; const fadepath = this.layoutDoc.hideImage ? '' : this.paths.lastElement(); @@ -456,7 +456,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { savedAnnotations = () => this._savedAnnotations; render() { TraceMobx(); - const borderRad = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BorderRounding); + const borderRad = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BorderRounding) as string; const borderRadius = borderRad?.includes('px') ? `${Number(borderRad.split('px')[0]) / (this._props.NativeDimScaling?.() || 1)}px` : borderRad; return (
() { private _marqueeref = React.createRef(); private _mainCont: React.RefObject = React.createRef(); // outermost div private _annotationLayer: React.RefObject = React.createRef(); - private _playRegionTimer: any = null; // timeout for playback - private _controlsFadeTimer: any = null; // timeout for controls fade + private _playRegionTimer: NodeJS.Timeout | undefined; // timeout for playback + private _controlsFadeTimer: NodeJS.Timeout | undefined; // timeout for controls fade private _ffref = React.createRef(); constructor(props: FieldViewProps) { @@ -142,7 +141,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { switch (e.key) { case 'ArrowLeft': case 'ArrowRight': - clearTimeout(this._controlsFadeTimer); + this._controlsFadeTimer && clearTimeout(this._controlsFadeTimer); this._scrubbing = true; this._controlsFadeTimer = setTimeout( action(() => { @@ -217,7 +216,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { this._playTimer = undefined; this.updateTimecode(); if (!this._finished) { - clearTimeout(this._playRegionTimer); // if paused in the middle of playback, prevents restart on next play + this._playRegionTimer && clearTimeout(this._playRegionTimer); // if paused in the middle of playback, prevents restart on next play } this._playRegionTimer = undefined; }; @@ -420,7 +419,6 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { this._videoRef = vref; if (vref) { this._videoRef!.ontimeupdate = this.updateTimecode; - // @ts-ignore // vref.onfullscreenchange = action((e) => this._fullScreen = vref.webkitDisplayingFullscreen); this._disposers.reactionDisposer?.(); this._disposers.reactionDisposer = reaction( @@ -469,7 +467,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { runInAction(() => { this._screenCapture = !this._screenCapture; }); - this._videoRef!.srcObject = !this._screenCapture ? undefined : await (navigator.mediaDevices as any).getDisplayMedia({ video: true }); + this._videoRef!.srcObject = !this._screenCapture ? null : await (navigator.mediaDevices).getDisplayMedia({ video: true }); }, icon: 'expand-arrows-alt', }); @@ -877,7 +875,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { return (
{ + ref={action((r: CollectionStackedTimeline) => { this._stackedTimeline = r; })} // eslint-disable-next-line react/jsx-props-no-spreading @@ -968,7 +966,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { focus = (anchor: Doc, options: FocusViewOptions) => (anchor.type === DocumentType.CONFIG ? undefined : this._ffref.current?.focus(anchor, options)); savedAnnotations = () => this._savedAnnotations; render() { - const borderRad = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BorderRounding); + const borderRad = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BorderRounding) as string; const borderRadius = borderRad?.includes('px') ? `${Number(borderRad.split('px')[0]) / this.scaling()}px` : borderRad; return (
() { private _sidebarRef = React.createRef(); private _searchRef = React.createRef(); private _searchString = ''; - private _scrollTimer: any; + private _scrollTimer: NodeJS.Timeout | undefined; private _getAnchor: (savedAnnotations: Opt>, addAsAnnotation: boolean) => Opt = () => undefined; @observable private _webUrl = ''; // url of the src parameter of the embedded iframe but not necessarily the rendered page - eg, when following a link, the rendered page changes but we don't want the src parameter to also change as that would cause an unnecessary re-render. @@ -85,7 +83,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { this._marqueeing = val; } @observable private _iframe: HTMLIFrameElement | null = null; - @observable private _savedAnnotations = new ObservableMap(); + @observable private _savedAnnotations = new ObservableMap(); @observable private _scrollHeight = NumCast(this.layoutDoc.scrollHeight); @computed get _url() { return this.webField?.toString() || ''; @@ -361,8 +359,8 @@ export class WebBox extends ViewBoxAnnotatableComponent() { return anchor; }; - _textAnnotationCreator: (() => ObservableMap) | undefined; - savedAnnotationsCreator: () => ObservableMap = () => this._textAnnotationCreator?.() || this._savedAnnotations; + _textAnnotationCreator: (() => ObservableMap) | undefined; + savedAnnotationsCreator: () => ObservableMap = () => this._textAnnotationCreator?.() || this._savedAnnotations; @action iframeMove = (e: PointerEvent) => { @@ -399,7 +397,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { .transformPoint(e.clientX, e.clientY - NumCast(this.layoutDoc.layout_scrollTop)); if (!this._marqueeref.current?.isEmpty) this._marqueeref.current?.onEnd(theclick[0], theclick[1]); else { - if (!(e.target as any)?.tagName?.includes('INPUT')) this.finishMarquee(theclick[0], theclick[1]); + if (!(e.target as HTMLElement)?.tagName?.includes('INPUT')) this.finishMarquee(theclick[0], theclick[1]); this._getAnchor = AnchorMenu.Instance?.GetAnchor; this.marqueeing = undefined; } @@ -430,7 +428,8 @@ export class WebBox extends ViewBoxAnnotatableComponent() { this._setPreviewCursor?.(e.clientX, e.clientY, false, true, this.Document); MarqueeAnnotator.clearAnnotations(this._savedAnnotations); - if (!word && !(e.target as any)?.className?.includes('rangeslider') && !(e.target as any)?.onclick && !(e.target as any)?.parentNode?.onclick) { + const target = e.target as HTMLElement; + if (!word && !target?.className?.includes('rangeslider') && !target?.onclick && !target?.parentElement?.onclick) { if (e.button !== 2) this.marqueeing = [e.clientX, e.clientY]; e.preventDefault(); } @@ -470,7 +469,8 @@ export class WebBox extends ViewBoxAnnotatableComponent() { .transformPoint(e.clientX, e.clientY - NumCast(this.layoutDoc.layout_scrollTop)); MarqueeAnnotator.clearAnnotations(this._savedAnnotations); const word = getWordAtPoint(e.target, e.clientX, e.clientY); - if (!word && !(e.target as any)?.className?.includes('rangeslider') && !(e.target as any)?.onclick && !(e.target as any)?.parentNode?.onclick) { + const target = e.target as HTMLElement; + if (!word && !target?.className?.includes('rangeslider') && !target?.onclick && !target?.parentElement?.onclick) { this.marqueeing = theclick; this._marqueeref.current?.onInitiateSelection(this.marqueeing); this._iframe?.contentDocument?.addEventListener('pointermove', this.iframeMove); @@ -479,16 +479,16 @@ export class WebBox extends ViewBoxAnnotatableComponent() { }; isFirefox = () => 'InstallTrigger' in window; // navigator.userAgent.indexOf("Chrome") !== -1; - addWebStyleSheet(document: any, styleType: string = 'text/css') { + addWebStyleSheet(document: Document | null | undefined, styleType: string = 'text/css') { if (document) { const style = document.createElement('style'); style.type = styleType; const sheets = document.head.appendChild(style); - return (sheets as any).sheet; + return sheets.sheet; } return undefined; } - addWebStyleSheetRule(sheet: any, selector: any, css: any, selectorPrefix = '.') { + addWebStyleSheetRule(sheet: CSSStyleSheet | null | undefined, selector: string, css: {[key:string]: string}, selectorPrefix = '.') { const propText = typeof css === 'string' ? css @@ -498,7 +498,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { return sheet?.insertRule(selectorPrefix + selector + '{' + propText + '}', sheet.cssRules.length); } - _iframetimeout: any = undefined; + _iframetimeout: NodeJS.Timeout|undefined = undefined; @observable _warning = 0; @action iframeLoaded = () => { @@ -520,7 +520,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { if (requrlraw !== this._url.toString()) { if (requrlraw.match(/q=.*&/)?.length && this._url.toString().match(/q=.*&/)?.length) { const matches = requrlraw.match(/[^a-zA-z]q=[^&]*/g); - const newsearch = matches?.lastElement()!; + const newsearch = matches?.lastElement() || ""; if (matches) { requrlraw = requrlraw.substring(0, requrlraw.indexOf(newsearch)); for (let i = 1; i < Array.from(matches)?.length; i++) { @@ -570,8 +570,10 @@ export class WebBox extends ViewBoxAnnotatableComponent() { undoBatch( action((e: MouseEvent) => { let eleHref = ''; - for (let ele = e.target as any; ele; ele = ele.parentElement) { - eleHref = (typeof ele.href === 'string' ? ele.href : ele.href?.baseVal) || ele.parentElement?.href || eleHref; + for (let ele = e.target as HTMLElement | Element | null; ele; ele = ele.parentElement) { + if (ele instanceof HTMLAnchorElement) { + eleHref = (typeof ele.href === 'string' ? ele.href : eleHref) || (ele.parentElement && ("href" in ele.parentElement) ? ele.parentElement.href as string: eleHref); + } } const origin = this.webField?.origin; if (eleHref && origin) { @@ -850,10 +852,10 @@ export class WebBox extends ViewBoxAnnotatableComponent() { return ( { + ref={action((r: HTMLSpanElement) => { if (r) { this._scrollHeight = DivHeight(r); - this.lighttext = Array.from(r.children).some((c: any) => c instanceof HTMLElement && lightOrDark(getComputedStyle(c).color) !== Colors.WHITE); + this.lighttext = Array.from(r.children).some((c: Element) => c instanceof HTMLElement && lightOrDark(getComputedStyle(c).color) !== Colors.WHITE); } })} contentEditable @@ -1001,7 +1003,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { }; _innerCollectionView: CollectionFreeFormView | undefined; zoomScaling = () => this._innerCollectionView?.zoomScaling() ?? 1; - setInnerContent = (component: ViewBoxInterface) => { + setInnerContent = (component: ViewBoxInterface) => { this._innerCollectionView = component as CollectionFreeFormView; }; @@ -1083,7 +1085,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { @computed get webpage() { TraceMobx(); const previewScale = this._previewNativeWidth ? 1 - this.sidebarWidth() / this._previewNativeWidth : 1; - const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as any); + const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as "none" | "all" | "visiblePainted" | undefined) const scale = previewScale * (this._props.NativeDimScaling?.() || 1); return (
() { anchorMenuClick = () => this._sidebarRef.current?.anchorMenuClick; transparentFilter = () => [...this._props.childFilters(), ClientUtils.TransparentBackgroundFilter]; opaqueFilter = () => [...this._props.childFilters(), ClientUtils.noDragDocsFilter, ...(SnappingManager.CanEmbed ? [] : [ClientUtils.OpaqueBackgroundFilter])]; - childStyleProvider = (doc: Doc | undefined, props: Opt, property: string): any => { + childStyleProvider = (doc: Doc | undefined, props: Opt, property: string) => { if (doc instanceof Doc && property === StyleProp.PointerEvents) { if (this.inlineTextAnnotations.includes(doc)) return 'none'; } @@ -1168,7 +1170,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { render() { TraceMobx(); const previewScale = this._previewNativeWidth ? 1 - this.sidebarWidth() / this._previewNativeWidth : 1; - const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as any); + const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as 'none' | 'all' | 'visiblePainted' | undefined); const scale = previewScale * (this._props.NativeDimScaling?.() || 1); return (
() { pointerEvents: this.pointerEvents(), // position: SnappingManager.IsDragging ? 'absolute' : undefined, }}> -
+
(); private _sidebarTagRef = React.createRef(); private _ref: React.RefObject = React.createRef(); private _scrollRef: HTMLDivElement | null = null; - private _editorView: Opt; + private _editorView: Opt; public _applyingChange: string = ''; private _inDrop = false; private _finishingLink = false; @@ -108,79 +108,40 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent; - private _keymap: any = undefined; + private _keymap: KeyMap | undefined = undefined; private _rules: RichTextRules | undefined; private _forceUncollapse = true; // if the cursor doesn't move between clicks, then the selection will disappear for some reason. This flags the 2nd click as happening on a selection which allows bullet points to toggle private _break = true; public ProseRef?: HTMLDivElement; - public get EditorView() { - return this._editorView; - } - public get SidebarKey() { - return this.fieldKey + '_sidebar'; - } - @computed get allSidebarDocs() { - return DocListCast(this.dataDoc[this.SidebarKey]); - } - - @computed get noSidebar() { - return this.DocumentView?.()._props.hideDecorationTitle || this._props.noSidebar || this.Document._layout_noSidebar; - } - @computed get layout_sidebarWidthPercent() { - return this._showSidebar ? '20%' : StrCast(this.layoutDoc._layout_sidebarWidthPercent, '0%'); - } - @computed get sidebarColor() { - return StrCast(this.layoutDoc.sidebar_color, StrCast(this.layoutDoc[this.fieldKey + '_backgroundColor'], '#e4e4e4')); - } - @computed get layout_autoHeight() { - return (this._props.forceAutoHeight || this.layoutDoc._layout_autoHeight) && !this._props.ignoreAutoHeight; - } - @computed get textHeight() { - return NumCast(this.dataDoc[this.fieldKey + '_height']); - } - @computed get scrollHeight() { - return NumCast(this.dataDoc[this.fieldKey + '_scrollHeight']); - } - @computed get sidebarHeight() { - return !this.sidebarWidth() ? 0 : NumCast(this.dataDoc[this.SidebarKey + '_height']); - } - @computed get titleHeight() { - return this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.HeaderMargin) || 0; - } - @computed get layout_autoHeightMargins() { - return this.titleHeight + NumCast(this.layoutDoc._layout_autoHeightMargins); - } - @computed get _recordingDictation() { - return this.dataDoc?.mediaState === mediaState.Recording; - } - set _recordingDictation(value) { - !this.dataDoc[`${this.fieldKey}_recordingSource`] && (this.dataDoc.mediaState = value ? mediaState.Recording : undefined); - } + set _recordingDictation(value) { !this.dataDoc[`${this.fieldKey}_recordingSource`] && (this.dataDoc.mediaState = value ? mediaState.Recording : undefined); } + @computed get _recordingDictation() { return this.dataDoc?.mediaState === mediaState.Recording; } // prettier-ignore + @computed get allSidebarDocs() { return DocListCast(this.dataDoc[this.SidebarKey]); } // prettier-ignore + @computed get noSidebar() { return this.DocumentView?.()._props.hideDecorationTitle || this._props.noSidebar || this.Document._layout_noSidebar; } // prettier-ignore + @computed get layout_sidebarWidthPercent() { return this._showSidebar ? '20%' : StrCast(this.layoutDoc._layout_sidebarWidthPercent, '0%'); } // prettier-ignore + @computed get sidebarColor() { return StrCast(this.layoutDoc.sidebar_color, StrCast(this.layoutDoc[this.fieldKey + '_backgroundColor'], '#e4e4e4')); } // prettier-ignore + @computed get layout_autoHeight() { return (this._props.forceAutoHeight || this.layoutDoc._layout_autoHeight) && !this._props.ignoreAutoHeight; } // prettier-ignore + @computed get textHeight() { return NumCast(this.dataDoc[this.fieldKey + '_height']); } // prettier-ignore + @computed get scrollHeight() { return NumCast(this.dataDoc[this.fieldKey + '_scrollHeight']); } // prettier-ignore + @computed get sidebarHeight() { return !this.sidebarWidth() ? 0 : NumCast(this.dataDoc[this.SidebarKey + '_height']); } // prettier-ignore + @computed get titleHeight() { return this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.HeaderMargin) as number || 0; } // prettier-ignore + @computed get layout_autoHeightMargins() { return this.titleHeight + NumCast(this.layoutDoc._layout_autoHeightMargins); } // prettier-ignore @computed get config() { this._keymap = buildKeymap(schema, this._props); this._rules = new RichTextRules(this.Document, this); - return { - schema, - plugins: [ - inputRules(this._rules.inpRules), - this.richTextMenuPlugin(), - history(), - keymap(this._keymap), - keymap(baseKeymap), - new Plugin({ props: { attributes: { class: 'ProseMirror-example-setup-style' } } }), - new Plugin({ - view(/* editorView */) { - return new FormattedTextBoxComment(); - }, - }), - ], - }; + return { schema, + plugins: [ + inputRules(this._rules.inpRules), + this.richTextMenuPlugin(), + history(), + keymap(this._keymap), + keymap(baseKeymap), + new Plugin({ props: { attributes: { class: 'ProseMirror-example-setup-style' } } }), + new Plugin({ view: () => new FormattedTextBoxComment() }), + ] }; } - // State for GPT - @observable - private gptRes: string = ''; - + public get EditorView() { return this._editorView; } + public get SidebarKey() { return this.fieldKey + '_sidebar'; } public makeAIFlashcards: () => void = unimplementedFunction; public addToCollection: ((doc: Doc | Doc[], annotationKey?: string | undefined) => boolean) | undefined; @@ -205,9 +166,9 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { - const foundLinkAnchors = findLinkMark(node.marks)?.attrs.allAnchors.filter((a: any) => a.anchorId === a1[Id] || a.anchorId === a2[Id]) || []; + let allFoundLinkAnchors: { href: string; title: string; anchorId: string }[] = []; + state.doc.nodesBetween(0, state.doc.nodeSize - 2, (node: Node /* , pos: number, parent: any */) => { + const foundLinkAnchors = findLinkMark(node.marks)?.attrs.allAnchors.filter((a: { href: string; title: string; anchorId: string }) => a.anchorId === a1[Id] || a.anchorId === a2[Id]) || []; allFoundLinkAnchors = foundLinkAnchors.length ? foundLinkAnchors : allFoundLinkAnchors; return true; }); @@ -255,7 +216,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent void = emptyFunction; const targetData = target[DocData]; targetData.mediaState = mediaState.Recording; DictationManager.recordAudioAnnotation(targetData, Doc.LayoutFieldKey(target), stop => { stopFunc = stop }); // prettier-ignore @@ -273,10 +234,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { - this._editorView?.state && RichTextMenu.Instance?.setFontField(color, 'fontHighlight'); - return undefined; - }, 'highlght text'); + AnchorMenu.Instance.Highlight = undoable((color: string) => this._editorView?.state && RichTextMenu.Instance?.setFontField(color, 'fontHighlight'), 'highlght text'); AnchorMenu.Instance.onMakeAnchor = () => this.getAnchor(true); AnchorMenu.Instance.StartCropDrag = unimplementedFunction; /** @@ -292,7 +250,8 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent this.getAnchor(true), targetCreator), e.pageX, e.pageY); + const docView = this.DocumentView?.(); + docView && DragManager.StartAnchorAnnoDrag([ele], new DragManager.AnchorAnnoDragData(docView, () => this.getAnchor(true), targetCreator), e.pageX, e.pageY); }); AnchorMenu.Instance.setSelectedText(window.getSelection()?.toString() ?? ''); @@ -345,7 +304,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + state.tr.doc.nodesBetween(0, state.doc.content.size, (node: Node /* , pos: number, parent: any */) => { if (node.type === schema.nodes.dashField && node.attrs.fieldKey.startsWith('#')) { accumTags.push(node.attrs.fieldKey); } @@ -410,8 +369,8 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent) => { + hyperlinkTerm = (trIn: Transaction, target: Doc, newAutoLinks: Set) => { let tr = trIn; const editorView = this._editorView; if (editorView && !Doc.AreProtosEqual(target, this.Document)) { @@ -493,7 +452,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + tr.doc.nodesBetween(sel.from, sel.to, (node: Node, pos: number /* , parent: any */) => { if (node.firstChild === null && !node.marks.find((m: Mark) => m.type.name === schema.marks.noAutoLinkAnchor.name) && node.marks.find((m: Mark) => m.type.name === schema.marks.splitter.name)) { alink = alink ?? @@ -646,15 +605,15 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { const cm = ContextMenu.Instance; - let target = e.target as any; // hrefs are stored on the database of the node that wraps the hyerlink - while (target && !target.dataset?.targethrefs) target = target.parentElement; + let target:Element|HTMLElement|null = e.target as HTMLElement; // hrefs are stored on the database of the node that wraps the hyerlink + while (target && (!(target instanceof HTMLElement) || !target.dataset?.targethrefs)) target = target.parentElement; const editor = this._editorView; if (editor && target && !(e.nativeEvent instanceof simMouseEvent ? e.nativeEvent.dash : false)) { const hrefs = (target.dataset?.targethrefs as string) @@ -1107,7 +1066,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + tr.doc.nodesBetween(selection.from, selection.to, (node: Node, pos: number /* , parent: any */) => { if (node.firstChild === null && node.marks.find((m: Mark) => m.type.name === schema.marks.splitter.name)) { const allAnchors = [{ href, title, anchorId: anchor[Id] }]; allAnchors.push(...(node.marks.find((m: Mark) => m.type.name === schema.marks.linkAnchor.name)?.attrs.allAnchors ?? [])); @@ -1184,17 +1143,17 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent= 0) { + const firstChild = ret.frag.childCount ? ret.frag.child(0) : undefined; + if (ret.start >= 0 && (ret.frag.size || (firstChild && [state.schema.nodes.dashDoc, state.schema.nodes.audioTag].includes(firstChild.type)))) { !options.instant && (this._focusSpeed = focusSpeed); - let selection = TextSelection.near(editor.state.doc.resolve(ret.start)); // default to near the start + let selection = TextSelection.near(state.doc.resolve(ret.start)); // default to near the start if (ret.frag.firstChild) { - selection = TextSelection.between(editor.state.doc.resolve(ret.start), editor.state.doc.resolve(ret.start + ret.frag.firstChild.nodeSize)); // bcz: looks better to not have the target selected + selection = TextSelection.between(state.doc.resolve(ret.start), state.doc.resolve(ret.start + ret.frag.firstChild.nodeSize)); // bcz: looks better to not have the target selected } - editor.dispatch(editor.state.tr.setSelection(new TextSelection(selection.$from, selection.$from)).scrollIntoView()); + this._editorView.dispatch(state.tr.setSelection(new TextSelection(selection.$from, selection.$from)).scrollIntoView()); const escAnchorId = textAnchorId[0] >= '0' && textAnchorId[0] <= '9' ? `\\3${textAnchorId[0]} ${textAnchorId.substr(1)}` : textAnchorId; addStyleSheetRule(FormattedTextBox._highlightStyleSheet, `${escAnchorId}`, { background: 'yellow', transform: 'scale(3)', 'transform-origin': 'left bottom' }); setTimeout(() => { @@ -1405,41 +1364,36 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { - self._props.rootSelected?.() && RichTextMenu.Instance && (RichTextMenu.Instance.view = newView); - }); + return new Plugin({view : action((newView: EditorView) => { + this._props.rootSelected?.() && RichTextMenu.Instance && (RichTextMenu.Instance.view = newView); return new RichTextMenuPlugin({ editorProps: this._props }); - }, - }); - } + })}); + }; _didScroll = false; _scrollStopper: undefined | (() => void); + // eslint-disable-next-line @typescript-eslint/no-explicit-any setupEditor(config: any, fieldKey: string) { const curText = Cast(this.dataDoc[this.fieldKey], RichTextField, null) || StrCast(this.dataDoc[this.fieldKey]); const rtfField = Cast((!curText && this.layoutDoc[this.fieldKey]) || this.dataDoc[fieldKey], RichTextField); if (this.ProseRef) { - const self = this; this._editorView?.destroy(); this._editorView = new EditorView(this.ProseRef, { state: rtfField?.Data ? EditorState.fromJSON(config, JSON.parse(rtfField.Data)) : EditorState.create(config), handleScrollToSelection: editorView => { const docPos = editorView.coordsAtPos(editorView.state.selection.to); - const viewRect = self._ref.current!.getBoundingClientRect(); - const scrollRef = self._scrollRef; + const viewRect = this._ref.current!.getBoundingClientRect(); + const scrollRef = this._scrollRef; const topOff = docPos.top < viewRect.top ? docPos.top - viewRect.top : undefined; const botOff = docPos.bottom > viewRect.bottom ? docPos.bottom - viewRect.bottom : undefined; if (((topOff && Math.abs(Math.trunc(topOff)) > 0) || (botOff && Math.abs(Math.trunc(botOff)) > 0)) && scrollRef) { const shift = Math.min(topOff ?? Number.MAX_VALUE, botOff ?? Number.MAX_VALUE); - const scrollPos = scrollRef.scrollTop + shift * self.ScreenToLocalBoxXf().Scale; + const scrollPos = scrollRef.scrollTop + shift * this.ScreenToLocalBoxXf().Scale; if (this._focusSpeed !== undefined) { setTimeout(() => { scrollPos && (this._scrollStopper = smoothScroll(this._focusSpeed || 0, scrollRef, scrollPos, 'ease', this._scrollStopper)); @@ -1470,7 +1424,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { - if ((e.nativeEvent as any).handledByInnerReactInstance) { - return; // e.stopPropagation(); - } - (e.nativeEvent as any).handledByInnerReactInstance = true; - if (this.Document.forceActive) e.stopPropagation(); this.tryUpdateScrollHeight(); // if a doc a fitWidth doc is being viewed in different embedContainer (eg freeform & lightbox), then it will have conflicting heights. so when the doc is clicked on, we want to make sure it has the appropriate height for the selected view. - if ((e.target as any).tagName === 'AUDIOTAG') { + const target = e.target as HTMLElement; + if (target.tagName === 'AUDIOTAG') { e.preventDefault(); e.stopPropagation(); - const timecode = Number((e.target as any)?.dataset?.timecode); - DocServer.GetRefField((e.target as any)?.dataset?.audioid || 0).then(anchor => { + const timecode = Number(target.dataset?.timecode); + DocServer.GetRefField(target.dataset?.audioid || "").then(anchor => { if (anchor instanceof Doc) { // const timecode = NumCast(anchor.timecodeToShow, 0); const audiodoc = anchor.annotationOn as Doc; @@ -1583,7 +1533,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent node that wraps the hyerlink - for (let { target } = e as any; target && !target.dataset?.targethrefs; target = target.parentElement); - while (clickTarget && !clickTarget.dataset?.targethrefs) clickTarget = clickTarget.parentElement; - FormattedTextBoxComment.update(this, this.EditorView!, undefined, clickTarget?.dataset?.targethrefs, clickTarget?.dataset.linkdoc, clickTarget?.dataset.nopreview === 'true'); + let clickTarget:HTMLElement|Element|null = e.target as HTMLElement; // hrefs are stored on the dataset of the node that wraps the hyerlink + for (let target:HTMLElement|Element|null = clickTarget as HTMLElement; target instanceof HTMLElement && !target.dataset?.targethrefs; target = target.parentElement); + while (clickTarget instanceof HTMLElement && !clickTarget.dataset?.targethrefs) clickTarget = clickTarget.parentElement; + const dataset = clickTarget instanceof HTMLElement ? clickTarget?.dataset : undefined; + FormattedTextBoxComment.update(this, this.EditorView!, undefined, dataset?.targethrefs, dataset?.linkdoc, dataset?.nopreview === 'true'); } }; @action @@ -1626,27 +1577,24 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { const pos = ipos ?? (this._editorView?.state.selection.$from.pos || 1); setTimeout(() => this._editorView?.dispatch(this._editorView.state.tr.setSelection(TextSelection.near(this._editorView.state.doc.resolve(pos)))), 100); - setTimeout(() => (this.ProseRef?.children?.[0] as any).focus(), 200); + setTimeout(() => (this.ProseRef?.children?.[0] as HTMLElement).focus(), 200); }; @action onFocused = (e: React.FocusEvent): void => { // applyDevTools.applyDevTools(this._editorView); - this.ProseRef?.children[0] === e.nativeEvent.target && this._editorView && RichTextMenu.Instance?.updateMenu(this._editorView, undefined, this._props, this.layoutDoc); e.stopPropagation(); }; onClick = (e: React.MouseEvent): void => { if (!this._props.isContentActive()) return; - if ((e.nativeEvent as any).handledByInnerReactInstance) { - e.stopPropagation(); - return; - } - if (!this._forceUncollapse || (this._editorView!.root as any).getSelection().isCollapsed) { + const editorView = this._editorView; + const editorRoot = editorView?.root instanceof Document ?editorView.root : undefined; + if (editorView && (!this._forceUncollapse || editorRoot?.getSelection()?.isCollapsed)) { // this is a hack to allow the cursor to be placed at the end of a document when the document ends in an inline dash comment. Apparently Chrome on Windows has a bug/feature which breaks this when clicking after the end of the text. - const pcords = this._editorView!.posAtCoords({ left: e.clientX, top: e.clientY }); - const node = pcords && this._editorView!.state.doc.nodeAt(pcords.pos); // get what prosemirror thinks the clicked node is (if it's null, then we didn't click on any text) - if (pcords && node?.type === this._editorView!.state.schema.nodes.dashComment) { - this._editorView!.dispatch(this._editorView!.state.tr.setSelection(TextSelection.create(this._editorView!.state.doc, pcords.pos + 2))); + const pcords = editorView.posAtCoords({ left: e.clientX, top: e.clientY }); + const node = pcords && editorView.state.doc.nodeAt(pcords.pos); // get what prosemirror thinks the clicked node is (if it's null, then we didn't click on any text) + if (pcords && node?.type === editorView.state.schema.nodes.dashComment) { + this._editorView!.dispatch(editorView.state.tr.setSelection(TextSelection.create(editorView.state.doc, pcords.pos + 2))); e.preventDefault(); } if (!node && this.ProseRef) { @@ -1654,19 +1602,19 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent boundsRect.left && e.clientX < boundsRect.right && e.clientY > boundsRect.bottom) { // if we clicked below the last prosemirror div, then set the selection to be the end of the document - this._editorView?.focus(); - this._editorView!.dispatch(this._editorView!.state.tr.setSelection(TextSelection.create(this._editorView!.state.doc, this._editorView!.state.doc.content.size))); + editorView.focus(); + editorView.dispatch(editorView.state.tr.setSelection(TextSelection.create(editorView.state.doc, editorView.state.doc.content.size))); } - } else if (node && [this._editorView!.state.schema.nodes.ordered_list, this._editorView!.state.schema.nodes.listItem].includes(node.type) && node !== (this._editorView!.state.selection as NodeSelection)?.node && pcords) { - this._editorView!.dispatch(this._editorView!.state.tr.setSelection(NodeSelection.create(this._editorView!.state.doc, pcords.pos))); + } else if (node && [editorView.state.schema.nodes.ordered_list, editorView.state.schema.nodes.listItem].includes(node.type) && node !== (editorView.state.selection as NodeSelection)?.node && pcords) { + editorView.dispatch(editorView.state.tr.setSelection(NodeSelection.create(editorView.state.doc, pcords.pos))); } } - if (this._props.rootSelected?.()) { + if (editorView && this._props.rootSelected?.()) { // if text box is selected, then it consumes all click events - (e.nativeEvent as any).handledByInnerReactInstance = true; - this.hitBulletTargets(e.clientX, e.clientY, !this._editorView?.state.selection.empty || this._forceUncollapse, false, e.shiftKey); + e.stopPropagation(); + this.hitBulletTargets(e.clientX, e.clientY, !editorView.state.selection.empty || this._forceUncollapse, false, e.shiftKey); } - this._forceUncollapse = !(this._editorView!.root as any).getSelection().isCollapsed; + this._forceUncollapse = !editorRoot?.getSelection()?.isCollapsed; }; // this hackiness handles clicking on the list item bullets to do expand/collapse. the bullets are ::before pseudo elements so there's no real way to hit test against them. hitBulletTargets(x: number, y: number, collapse: boolean, highlightOnly: boolean, selectOrderedList: boolean = false) { @@ -1682,9 +1630,9 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent 3) { + if ($olistPos && $olistPos.depth) { olistNode = $olistPos.parent; - $olistPos = this._editorView?.state.doc.resolve(($olistPos as any).path[($olistPos as any).path.length - 4]); + $olistPos = this._editorView?.state.doc.resolve($olistPos.start($olistPos.depth - 1)); } } const maxSize = this._editorView?.state.doc.content.size ?? 0; @@ -1715,7 +1663,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + onBlur = (e: React.FocusEvent) => { if (this.ProseRef?.children[0] !== e.nativeEvent.target) return; if (!(this.EditorView?.state.selection instanceof NodeSelection) || this.EditorView.state.selection.node.type !== this.EditorView.state.schema.nodes.footnote) { const stordMarks = this._editorView?.state.storedMarks?.slice(); @@ -1780,7 +1728,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent d?.author).length; const color = !annotated ? Colors.WHITE : Colors.BLACK; - const backgroundColor = !annotated ? (this.sidebarWidth() ? Colors.MEDIUM_BLUE : Colors.BLACK) : this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.WidgetColor + (annotated ? ':annotated' : '')); + const backgroundColor = !annotated ? (this.sidebarWidth() ? Colors.MEDIUM_BLUE : Colors.BLACK) : this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.WidgetColor + (annotated ? ':annotated' : '')) as string; return !annotated && (!this._props.isContentActive() || SnappingManager.IsDragging || Doc.ActiveTool !== InkTool.None) ? null : (
{ + // eslint-disable-next-line @typescript-eslint/no-explicit-any const ComponentTag: any = tag === CollectionViewType.Tree ? CollectionTreeView : tag === 'translation' ? FormattedTextBox : CollectionStackingView; return ComponentTag === CollectionStackingView ? ( { + let child: Node | undefined; + state.doc.nodesBetween(state.selection.from, state.selection.to, (node: Node /* , pos: number, parent: any */) => { !child && node.marks.length && (child = node); }); const mark = child && findOtherUserMark(child.marks); diff --git a/src/client/views/nodes/formattedText/RichTextMenu.tsx b/src/client/views/nodes/formattedText/RichTextMenu.tsx index a612f3c65..247b7c097 100644 --- a/src/client/views/nodes/formattedText/RichTextMenu.tsx +++ b/src/client/views/nodes/formattedText/RichTextMenu.tsx @@ -5,7 +5,7 @@ import { observer } from 'mobx-react'; import { lift, wrapIn } from 'prosemirror-commands'; import { Mark, MarkType } from 'prosemirror-model'; import { wrapInList } from 'prosemirror-schema-list'; -import { EditorState, NodeSelection, TextSelection } from 'prosemirror-state'; +import { EditorState, NodeSelection, TextSelection, Transaction } from 'prosemirror-state'; import { EditorView } from 'prosemirror-view'; import * as React from 'react'; import { Doc } from '../../../../fields/Doc'; @@ -17,7 +17,7 @@ import { ObservableReactComponent } from '../../ObservableReactComponent'; import { DocumentView } from '../DocumentView'; import { EquationBox } from '../EquationBox'; import { FieldViewProps } from '../FieldView'; -import { FormattedTextBox } from './FormattedTextBox'; +import { FormattedTextBox, FormattedTextBoxProps } from './FormattedTextBox'; import { updateBullets } from './ProsemirrorExampleTransfer'; import './RichTextMenu.scss'; import { schema } from './schema_rts'; @@ -35,8 +35,8 @@ export class RichTextMenu extends AntimodeMenu { private _linkToRef = React.createRef(); layoutDoc: Doc | undefined; - @observable public view?: EditorView = undefined; - public editorProps: FieldViewProps | undefined; + @observable public view?: EditorView & { TextView ?: FormattedTextBox } = undefined; + public editorProps: FieldViewProps | AntimodeMenuProps |undefined; public _brushMap: Map> = new Map(); @@ -114,17 +114,17 @@ export class RichTextMenu extends AntimodeMenu { } _disposer: IReactionDisposer | undefined; componentDidMount() { - this._disposer = reaction( - () => DocumentView.Selected().slice(), - () => this.updateMenu(undefined, undefined, undefined, undefined) - ); + // this._disposer = reaction( + // () => DocumentView.Selected().slice(), + // () => this.updateMenu(undefined, undefined, undefined, undefined) + // ); } componentWillUnmount() { this._disposer?.(); } @action - public updateMenu(view: EditorView | undefined, lastState: EditorState | undefined, props: any, layoutDoc: Doc | undefined) { + public updateMenu(view: EditorView | undefined, lastState: EditorState | undefined, props: FormattedTextBoxProps|AntimodeMenuProps|undefined, layoutDoc: Doc | undefined) { if (this._linkToRef.current?.getBoundingClientRect().width) { return; } @@ -158,7 +158,7 @@ export class RichTextMenu extends AntimodeMenu { this.getTextLinkTargetTitle().then(targetTitle => this.setCurrentLink(targetTitle)); } - setMark = (mark: Mark, state: EditorState, dispatch: any, dontToggle: boolean = false) => { + setMark = (mark: Mark, state: EditorState, dispatch: (tr:Transaction) => void, dontToggle: boolean = false) => { if (mark) { const newPos = state.selection.$anchor.node()?.type === schema.nodes.ordered_list ? state.selection.from : state.selection.from; const node = (state.selection as NodeSelection).node ?? (newPos >= 0 ? state.doc.nodeAt(newPos) : undefined); @@ -177,17 +177,18 @@ export class RichTextMenu extends AntimodeMenu { toggleMark(mark.type, mark.attrs)(state, dispatch); } } - this.updateMenu(this.view, undefined, undefined, this.layoutDoc); + // this.updateMenu(this.view, undefined, undefined, this.layoutDoc); } }; // finds font sizes and families in selection - getActiveAlignment() { + getActiveAlignment = () => { if (this.view && this.TextView?._props.rootSelected?.()) { - const { path } = this.view.state.selection.$from as any; - for (let i = path.length - 3; i < path.length && i >= 0; i -= 3) { - if (path[i]?.type === this.view.state.schema.nodes.paragraph || path[i]?.type === this.view.state.schema.nodes.heading) { - return path[i].attrs.align || 'left'; + const from = this.view.state.selection.$from; + for (let i = from.depth; i >= 0; i--) { + const node = from.node(i); + if (node.type === this.view.state.schema.nodes.paragraph || node.type === this.view.state.schema.nodes.heading) { + return node.attrs.align || 'left'; } } } @@ -195,7 +196,7 @@ export class RichTextMenu extends AntimodeMenu { } // finds font sizes and families in selection - getActiveListStyle() { + getActiveListStyle = () => { const state = this.view?.state; if (state) { const pos = state.selection.$anchor; @@ -321,7 +322,7 @@ export class RichTextMenu extends AntimodeMenu { if (this.view) { const mark = this.view.state.schema.mark(this.view.state.schema.marks.noAutoLinkAnchor); this.setMark(mark, this.view.state, this.view.dispatch, false); - this.TextView.autoLink(); + this.TextView?.autoLink(); this.view.focus(); } }; @@ -350,7 +351,7 @@ export class RichTextMenu extends AntimodeMenu { }; setFontField = (value: string, fontField: 'fontSize' | 'fontFamily' | 'fontColor' | 'fontHighlight') => { - if (this.view) { + if (this.TextView && this.view) { const { text, paragraph } = this.view.state.schema.nodes; const selNode = this.view.state.selection.$anchor.node(); if (this.view.state.selection.from === 1 && this.view.state.selection.empty && [undefined, text, paragraph].includes(selNode?.type)) { @@ -360,11 +361,11 @@ export class RichTextMenu extends AntimodeMenu { const attrs: { [key: string]: string } = {}; attrs[fontField] = value; const fmark = this.view?.state.schema.marks['pF' + fontField.substring(1)].create(attrs); - this.setMark(fmark, this.view.state, (tx: any) => this.view!.dispatch(tx.addStoredMark(fmark)), true); + this.setMark(fmark, this.view.state, (tx: Transaction) => this.view!.dispatch(tx.addStoredMark(fmark)), true); this.view.focus(); } else { Doc.UserDoc()[fontField] = value; - this.updateMenu(this.view, undefined, this.props, this.layoutDoc); + // this.updateMenu(this.view, undefined, this.props, this.layoutDoc); } }; @@ -383,17 +384,17 @@ export class RichTextMenu extends AntimodeMenu { marks && tx2.setStoredMarks([...marks]); this.view.dispatch(tx2); } else - !wrapInList(schema.nodes.ordered_list)(this.view.state, (tx2: any) => { + !wrapInList(schema.nodes.ordered_list)(this.view.state, (tx2: Transaction) => { const tx3 = updateBullets(tx2, schema, newMapStyle, this.view!.state.selection.from - 1, this.view!.state.selection.to + 1); marks && tx3.ensureMarks([...marks]); marks && tx3.setStoredMarks([...marks]); this.view!.dispatch(tx3); }); this.view.focus(); - this.updateMenu(this.view, undefined, this.props, this.layoutDoc); + // this.updateMenu(this.view, undefined, this.props, this.layoutDoc); }; - insertSummarizer(state: EditorState, dispatch: any) { + insertSummarizer(state: EditorState, dispatch: (tr:Transaction) => void) { if (state.selection.empty) return false; const mark = state.schema.marks.summarize.create(); const { tr } = state; @@ -407,7 +408,7 @@ export class RichTextMenu extends AntimodeMenu { vcenterToggle = () => { this.layoutDoc && (this.layoutDoc._layout_centered = !this.layoutDoc._layout_centered); }; - align = (view: EditorView, dispatch: any, alignment: 'left' | 'right' | 'center') => { + align = (view: EditorView, dispatch: (tr:Transaction) => void, alignment: 'left' | 'right' | 'center') => { if (this.TextView?._props.rootSelected?.()) { let { tr } = view.state; view.state.doc.nodesBetween(view.state.selection.from, view.state.selection.to, (node, pos) => { @@ -423,7 +424,7 @@ export class RichTextMenu extends AntimodeMenu { } }; - paragraphSetup(state: EditorState, dispatch: any, field: 'inset' | 'indent', value?: 0 | 10 | -10) { + paragraphSetup(state: EditorState, dispatch: (tr:Transaction) => void, field: 'inset' | 'indent', value?: 0 | 10 | -10) { let { tr } = state; state.doc.nodesBetween(state.selection.from, state.selection.to, (node, pos) => { if (node.type === schema.nodes.paragraph || node.type === schema.nodes.heading) { @@ -439,9 +440,9 @@ export class RichTextMenu extends AntimodeMenu { return true; } - insertBlockquote(state: EditorState, dispatch: any) { - const { path } = state.selection.$from as any; - if (path.length > 6 && path[path.length - 6].type === schema.nodes.blockquote) { + insertBlockquote(state: EditorState, dispatch: (tr:Transaction) => void) { + const node = state.selection.$from.depth ? state.selection.$from.node(state.selection.$from.depth-1): undefined; + if (node?.type === schema.nodes.blockquote) { lift(state, dispatch); } else { wrapIn(schema.nodes.blockquote)(state, dispatch); @@ -449,7 +450,7 @@ export class RichTextMenu extends AntimodeMenu { return true; } - insertHorizontalRule(state: EditorState, dispatch: any) { + insertHorizontalRule(state: EditorState, dispatch: (tr:Transaction) => void) { dispatch(state.tr.replaceSelectionWith(state.schema.nodes.horizontal_rule.create()).scrollIntoView()); return true; } @@ -497,7 +498,7 @@ export class RichTextMenu extends AntimodeMenu { } get TextView() { - return (this.view as any)?.TextView as FormattedTextBox; + return this.view?.TextView; } get TextViewFieldKey() { return this.TextView?._props.fieldKey; @@ -512,11 +513,9 @@ export class RichTextMenu extends AntimodeMenu { } createLinkButton() { - const self = this; - - function onLinkChange(e: React.ChangeEvent) { - self.TextView?.endUndoTypingBatch(); - UndoManager.RunInBatch(() => self.setCurrentLink(e.target.value), 'link change'); + const onLinkChange = (e: React.ChangeEvent) => { + this.TextView?.endUndoTypingBatch(); + UndoManager.RunInBatch(() => this.setCurrentLink(e.target.value), 'link change'); } const link = this.currentLink ? this.currentLink : ''; @@ -524,7 +523,6 @@ export class RichTextMenu extends AntimodeMenu { const button = ( set hyperlink
} placement="bottom"> { - // eslint-disable-next-line jsx-a11y/control-has-associated-label @@ -589,7 +587,7 @@ export class RichTextMenu extends AntimodeMenu { // TODO: should check for valid URL @undoBatch makeLinkToURL = (target: string) => { - ((this.view as any)?.TextView as FormattedTextBox).makeLinkAnchor(undefined, 'onRadd:rightight', target, target); + this.TextView?.makeLinkAnchor(undefined, 'onRadd:rightight', target, target); }; @undoBatch @@ -597,12 +595,12 @@ export class RichTextMenu extends AntimodeMenu { if (this.view) { const linkAnchor = this.view.state.selection.$from.nodeAfter?.marks.find(m => m.type === this.view!.state.schema.marks.linkAnchor); if (linkAnchor) { - const allAnchors = linkAnchor.attrs.allAnchors.slice(); - this.TextView.RemoveAnchorFromSelection(allAnchors); + const allAnchors = (linkAnchor.attrs.allAnchors as { href: string; title: string; linkId: string; targetId: string; }[]).slice(); + this.TextView?.RemoveAnchorFromSelection(allAnchors); // bcz: Argh ... this will remove the link from the document even it's anchored somewhere else in the text which happens if only part of the anchor text was selected. allAnchors - .filter((aref: any) => aref?.href.indexOf(Doc.localServerPath()) === 0) - .forEach((aref: any) => { + .filter(aref => aref?.href.indexOf(Doc.localServerPath()) === 0) + .forEach(aref => { const anchorId = aref.href.replace(Doc.localServerPath(), '').split('?')[0]; anchorId && DocServer.GetRefField(anchorId).then(linkDoc => Doc.DeleteLink?.(linkDoc as Doc)); }); @@ -629,7 +627,7 @@ export class ButtonDropdown extends ObservableReactComponent {this._props.button} { - // eslint-disable-next-line jsx-a11y/control-has-associated-label @@ -697,12 +694,12 @@ export class ButtonDropdown extends ObservableReactComponent { // eslint-disable-next-line react/no-unused-class-component-methods - update(view: EditorView, lastState: EditorState | undefined) { - RichTextMenu.Instance?.updateMenu(view, lastState, this.props.editorProps, (view as any).TextView?.layoutDoc); + update(view: EditorView & {TextView ?: FormattedTextBox}, lastState: EditorState | undefined) { + RichTextMenu.Instance?.updateMenu(view, lastState, this.props.editorProps, view.TextView?.layoutDoc); } render() { return null; diff --git a/src/client/views/pdf/AnchorMenu.tsx b/src/client/views/pdf/AnchorMenu.tsx index 2f6824466..03585a8b7 100644 --- a/src/client/views/pdf/AnchorMenu.tsx +++ b/src/client/views/pdf/AnchorMenu.tsx @@ -25,7 +25,7 @@ export class AnchorMenu extends AntimodeMenu { private _commentRef = React.createRef(); private _cropRef = React.createRef(); - constructor(props: any) { + constructor(props: AntimodeMenuProps) { super(props); makeObservable(this); AnchorMenu.Instance = this; @@ -50,7 +50,7 @@ export class AnchorMenu extends AntimodeMenu { public OnAudio: (e: PointerEvent) => void = unimplementedFunction; public StartDrag: (e: PointerEvent, ele: HTMLElement) => void = unimplementedFunction; public StartCropDrag: (e: PointerEvent, ele: HTMLElement) => void = unimplementedFunction; - public Highlight: (color: string) => Opt = (/* color: string */) => undefined; + public Highlight: (color: string) => void = emptyFunction; public GetAnchor: (savedAnnotations: Opt>, addAsAnnotation: boolean) => Opt = emptyFunction; public Delete: () => void = unimplementedFunction; public PinToPres: () => void = unimplementedFunction; diff --git a/src/client/views/pdf/PDFViewer.tsx b/src/client/views/pdf/PDFViewer.tsx index fa5e5cedb..1279563ef 100644 --- a/src/client/views/pdf/PDFViewer.tsx +++ b/src/client/views/pdf/PDFViewer.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { action, computed, IReactionDisposer, makeObservable, observable, ObservableMap, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as Pdfjs from 'pdfjs-dist'; @@ -64,13 +62,13 @@ export class PDFViewer extends ObservableReactComponent { } @observable _pageSizes: { width: number; height: number }[] = []; - @observable _savedAnnotations = new ObservableMap(); + @observable _savedAnnotations = new ObservableMap(); @observable _textSelecting = true; @observable _showWaiting = true; @observable Index: number = -1; - private _pdfViewer: any; - private _styleRule: any; // stylesheet rule for making hyperlinks clickable + private _pdfViewer!: PDFJSViewer.PDFViewer; + private _styleRule: number | undefined; // stylesheet rule for making hyperlinks clickable private _retries = 0; // number of times tried to create the PDF viewer private _setPreviewCursor: undefined | ((x: number, y: number, drag: boolean, hide: boolean, doc: Opt) => void); private _marqueeref = React.createRef(); @@ -107,7 +105,7 @@ export class PDFViewer extends ObservableReactComponent { }); this.setupPdfJsViewer(); this._mainCont.current?.addEventListener('scroll', e => { - (e.target as any).scrollLeft = 0; + (e.target as HTMLElement).scrollLeft = 0; }); this._disposers.layout_autoHeight = reaction( @@ -211,18 +209,12 @@ export class PDFViewer extends ObservableReactComponent { }; pagesinit = () => { - if (this._pdfViewer._setDocumentViewerElement?.offsetParent) { - runInAction(() => { - this._pdfViewer.currentScaleValue = this._props.layoutDoc._freeform_scale = 1; - }); - this.gotoPage(NumCast(this._props.Document._layout_curPage, 1)); - } document.removeEventListener('pagesinit', this.pagesinit); let quickScroll: { loc?: string; easeFunc?: 'ease' | 'linear' } | undefined = { loc: this._initialScroll ? this._initialScroll.loc?.toString() : '', easeFunc: this._initialScroll ? this._initialScroll.easeFunc : undefined }; this._disposers.scale = reaction( () => NumCast(this._props.layoutDoc._freeform_scale, 1), scale => { - this._pdfViewer.currentScaleValue = scale; + this._pdfViewer.currentScaleValue = scale+""; }, { fireImmediately: true } ); @@ -321,7 +313,7 @@ export class PDFViewer extends ObservableReactComponent { } }; - @observable private _scrollTimer: any = undefined; + @observable private _scrollTimer: NodeJS.Timeout | undefined = undefined; onScroll = () => { if (this._mainCont.current && !this._forcedScroll) { @@ -330,7 +322,7 @@ export class PDFViewer extends ObservableReactComponent { this._props.layoutDoc._layout_scrollTop = this._mainCont.current.scrollTop; } this._ignoreScroll = false; - if (this._scrollTimer) clearTimeout(this._scrollTimer); // wait until a scrolling pause, then create an anchor to audio + this._scrollTimer && clearTimeout(this._scrollTimer); // wait until a scrolling pause, then create an anchor to audio this._scrollTimer = setTimeout(() => { CreateLinkToActiveAudio(() => this._props.pdfBox.getAnchor(true)!, false); this._scrollTimer = undefined; @@ -390,8 +382,8 @@ export class PDFViewer extends ObservableReactComponent { this._props.select(false); MarqueeAnnotator.clearAnnotations(this._savedAnnotations); this.isAnnotating = true; - const target = e.target as any; - if (e.target && (target.className.includes('endOfContent') || (target.parentElement.className !== 'textLayer' && target.parentElement.parentElement?.className !== 'textLayer'))) { + const target = e.target as HTMLElement; + if (e.target && (target.className.includes('endOfContent') || (target.parentElement?.className !== 'textLayer' && target.parentElement?.parentElement?.className !== 'textLayer'))) { this._textSelecting = false; } else { // if textLayer is hit, then we select text instead of using a marquee so clear out the marquee. @@ -491,7 +483,7 @@ export class PDFViewer extends ObservableReactComponent { e.stopPropagation(); if (e.ctrlKey) { const curScale = Number(this._pdfViewer.currentScaleValue); - this._pdfViewer.currentScaleValue = Math.max(1, Math.min(10, curScale - (curScale * e.deltaY) / 1000)); + this._pdfViewer.currentScaleValue = Math.max(1, Math.min(10, curScale - (curScale * e.deltaY) / 1000)) + ""; this._props.layoutDoc._freeform_scale = Number(this._pdfViewer.currentScaleValue); } } @@ -520,7 +512,7 @@ export class PDFViewer extends ObservableReactComponent { panelHeight = () => this._props.PanelHeight() / (this._props.NativeDimScaling?.() || 1); transparentFilter = () => [...this._props.childFilters(), ClientUtils.TransparentBackgroundFilter]; opaqueFilter = () => [...this._props.childFilters(), ClientUtils.noDragDocsFilter, ...(SnappingManager.CanEmbed && this._props.isContentActive() ? [] : [ClientUtils.OpaqueBackgroundFilter])]; - childStyleProvider = (doc: Doc | undefined, props: Opt, property: string): any => { + childStyleProvider = (doc: Doc | undefined, props: Opt, property: string) => { if (doc instanceof Doc && property === StyleProp.PointerEvents) { if (this.inlineTextAnnotations.includes(doc) || this._props.isContentActive() === false) return 'none'; const isInk = doc.layout_isSvg && !props?.LayoutTemplateString; @@ -531,11 +523,11 @@ export class PDFViewer extends ObservableReactComponent { }; childPointerEvents = () => (this._props.isContentActive() !== false ? 'all' : 'none'); - renderAnnotations = (childFilters: () => string[], mixBlendMode?: any, display?: string) => ( + renderAnnotations = (childFilters: () => string[], mixBlendMode?: 'hard-light' | 'multiply', display?: string) => (
-- cgit v1.2.3-70-g09d2 From 6cf715a76dfb3f6a80fbf7c33e643681ea1a584c Mon Sep 17 00:00:00 2001 From: IEatChili Date: Tue, 30 Jul 2024 14:30:08 -0400 Subject: feat: adjusted ui: --- src/client/views/DocumentDecorations.tsx | 2 +- src/client/views/KeywordBox.tsx | 263 +++++++++++++++++++------------ src/client/views/StyleProvider.scss | 26 ++- 3 files changed, 189 insertions(+), 102 deletions(-) (limited to 'src') diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index dc40562e8..bd6952620 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -832,7 +832,7 @@ export class DocumentDecorations extends ObservableReactComponent DocumentView.Selected()} /> diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index 321362299..68584a7fa 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -1,4 +1,4 @@ -import { Colors, IconButton } from 'browndash-components'; +import { Button, Colors, IconButton } from 'browndash-components'; import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; @@ -6,14 +6,11 @@ import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; import { Doc, DocListCast } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; -import { DocCast, NumCast } from '../../fields/Types'; +import { NumCast, StrCast } from '../../fields/Types'; import { emptyFunction } from '../../Utils'; -import { Docs } from '../documents/Documents'; -import { DocUtils } from '../documents/DocUtils'; -import { DragManager, SetupDrag } from '../util/DragManager'; +import { DocumentType } from '../documents/DocumentTypes'; +import { DragManager } from '../util/DragManager'; import { SnappingManager } from '../util/SnappingManager'; -import { CollectionFreeFormView } from './collections/collectionFreeForm'; -import { MainView } from './MainView'; import { DocumentView } from './nodes/DocumentView'; import { ObservableReactComponent } from './ObservableReactComponent'; @@ -21,11 +18,13 @@ interface KeywordItemProps { doc: Doc; keyword: string; keywordDoc: Doc; - keywordCollection: Doc[]; setToEditing: () => void; isEditing: boolean; } +/** + * A component that handles individual keywords. + */ @observer export class KeywordItem extends ObservableReactComponent { constructor(props: any) { @@ -36,8 +35,12 @@ export class KeywordItem extends ObservableReactComponent { private ref: React.RefObject; + /** + * Gets the documents that a keyword is associated with. + * @returns An array of documents that contain the keyword. + */ getKeywordCollectionDocs = () => { - for (const doc of DocListCast(Doc.UserDoc().myKeywordCollections)) { + for (const doc of DocListCast(Doc.ActiveDashboard?.myKeywordCollections)) { if (doc.title === this._props.keyword) { return doc[DocData].docs; } @@ -45,9 +48,16 @@ export class KeywordItem extends ObservableReactComponent { return null; }; + /** + * Creates a smart collection. + * @returns + */ createCollection = () => { + // Get the documents that contain the keyword. const selected = DocListCast(this.getKeywordCollectionDocs()!); const newEmbeddings = selected.map(doc => Doc.MakeEmbedding(doc)); + + // Create a new collection and set up configurations. const newCollection = ((doc: Doc) => { const docData = doc[DocData]; docData.data = new List(newEmbeddings); @@ -59,9 +69,12 @@ export class KeywordItem extends ObservableReactComponent { newCollection._width = 900; newCollection._height = 900; newCollection.layout_fitWidth = true; - //newCollection[DocData].smartCollection = this._props.keywordDoc; + // Add the collection to the keyword document's list of associated smart collections. this._props.keywordDoc.collections = new List([...DocListCast(this._props.keywordDoc.collections), newCollection]); + newCollection[DocData].data_labels = new List([this._props.keyword]); + newCollection[DocData][`${this._props.keyword}`] = true; + newCollection[DocData].showLabels = true; return newCollection; }; @@ -89,16 +102,24 @@ export class KeywordItem extends ObservableReactComponent { @action removeLabel = () => { if (this._props.doc[DocData].data_labels) { - const filtered_docs = new List(DocListCast(this.getKeywordCollectionDocs()!).filter(doc => doc !== this._props.doc)); - this._props.keywordDoc[DocData].docs = filtered_docs; + if (this._props.doc.type === DocumentType.COL) { + const filtered_collections = new List(DocListCast(this._props.keywordDoc.collections).filter(doc => doc !== this._props.doc)); + this._props.keywordDoc.collections = filtered_collections; - this._props.doc[DocData].data_labels = (this._props.doc[DocData].data_labels as List).filter(label => label !== this._props.keyword) as List; - this._props.doc![DocData][`${this._props.keyword}`] = false; + for (const cur_doc of DocListCast(this.getKeywordCollectionDocs()!, [])) { + this._props.doc[DocData].data = new List(DocListCast(this._props.doc[DocData].data).filter(doc => !Doc.AreProtosEqual(cur_doc, doc))); + } + } else { + const filtered_docs = new List(DocListCast(this.getKeywordCollectionDocs()!).filter(doc => doc !== this._props.doc)); + this._props.keywordDoc[DocData].docs = filtered_docs; - for (const collection of DocListCast(this._props.keywordDoc.collections)) { - collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(doc => !Doc.AreProtosEqual(this._props.doc, doc))); + for (const collection of DocListCast(this._props.keywordDoc.collections)) { + collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(doc => !Doc.AreProtosEqual(this._props.doc, doc))); + } } } + this._props.doc[DocData].data_labels = (this._props.doc[DocData].data_labels as List).filter(label => label !== this._props.keyword) as List; + this._props.doc![DocData][`${this._props.keyword}`] = false; }; render() { @@ -116,6 +137,9 @@ interface KeywordBoxProps { isEditing: boolean; } +/** + * A component that handles the keyword display for documents. + */ @observer export class KeywordBox extends ObservableReactComponent { @observable _currentInput: string = ''; @@ -127,30 +151,32 @@ export class KeywordBox extends ObservableReactComponent { return NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1); } + @computed + get cur_height() { + return this.ref.current?.offsetHeight ? this.ref.current?.offsetHeight : 0; + } + constructor(props: any) { super(props); makeObservable(this); this.ref = React.createRef(); - } - - componentDidMount(): void { - this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - this._props.doc._keywordHeight = this.height; reaction( - () => this.currentScale, + () => this.cur_height, () => { - if (this.currentScale < 1) { - this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - this._props.doc._keywordHeight = this.height; - } + this._props.doc[DocData].keywordHeight = this.height; } ); } + componentDidMount(): void { + this.height = this.ref.current?.offsetHeight ? this.ref.current?.offsetHeight : 0; + this._props.doc[DocData].keywordHeight = this.height; + } + componentDidUpdate(prevProps: Readonly): void { - this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - this._props.doc._keywordHeight = this.height; + this.height = this.ref.current?.offsetHeight ? this.ref.current?.offsetHeight : 0; + this._props.doc[DocData].keywordHeight = this.height; } @action @@ -163,30 +189,44 @@ export class KeywordBox extends ObservableReactComponent { this._props.isEditing = false; }; + /** + * Gets the document associated with a keyword. + * @param keyword The keyword being searched for + * @returns A Doc containing keyword information + */ getKeywordCollection = (keyword: string) => { - for (const doc of DocListCast(Doc.UserDoc().myKeywordCollections)) { + // Look for the keyword document. + for (const doc of DocListCast(Doc.ActiveDashboard!.myKeywordCollections)) { if (doc.title === keyword) { return doc; } } + // If not contained, create a new document and add it to the active Dashboard's keyword list. const keywordCollection = new Doc(); keywordCollection.title = keyword; keywordCollection[DocData].docs = new List(); keywordCollection.collections = new List(); - Doc.UserDoc().myKeywordCollections = new List([...DocListCast(Doc.UserDoc().myKeywordCollections), keywordCollection]); + if (Doc.ActiveDashboard) { + Doc.ActiveDashboard.myKeywordCollections = new List([...DocListCast(Doc.ActiveDashboard.myKeywordCollections), keywordCollection]); + } return keywordCollection; }; - submitLabel = () => { - if (!Doc.UserDoc().myKeywordCollections) { - Doc.UserDoc().myKeywordCollections = new List(); + /** + * Adds the keyword to the document. + * @param keyword + */ + submitLabel = (keyword: string) => { + // If the active Dashboard does not have a keyword collection, create it. + if (Doc.ActiveDashboard && !Doc.ActiveDashboard.myKeywordCollections) { + Doc.ActiveDashboard.myKeywordCollections = new List(); } - const submittedLabel = this._currentInput.trim(); - if (submittedLabel) { - // If the keyword collection is not in the user doc, add it as a new doc, with the keyword as its title. + const submittedLabel = keyword.trim(); + if (submittedLabel && !this._props.doc![DocData][`${submittedLabel}`]) { + // If the keyword collection is not in active Dashboard, add it as a new doc, with the keyword as its title. const keywordCollection = this.getKeywordCollection(submittedLabel); // If the document has no keywords field, create the field. @@ -194,20 +234,31 @@ export class KeywordBox extends ObservableReactComponent { this._props.doc[DocData].data_labels = new List(); } - // Add this document to the keyword's collection of associated documents. - keywordCollection[DocData].docs = new List([...DocListCast(keywordCollection[DocData].docs), this._props.doc]); - - // Push the keyword to the document's keyword list field. - (this._props.doc![DocData].data_labels! as List).push(submittedLabel); - this._props.doc![DocData][`${this._currentInput}`] = true; + // If the document is of type COLLECTION, make it a smart collection, otherwise, add the keyword to the document. + if (this._props.doc.type === DocumentType.COL) { + keywordCollection.collections = new List([...DocListCast(keywordCollection.collections), this._props.doc]); - // Iterate through the keyword document's collections and add a copy of the document to each collection - for (const collection of DocListCast(keywordCollection.collections)) { - const newEmbedding = Doc.MakeEmbedding(this._props.doc); - collection[DocData].data = new List([...DocListCast(collection.data), newEmbedding]); - newEmbedding.embedContainer = collection; + // Iterate through the keyword document's collections and add a copy of the document to each collection + for (const doc of DocListCast(keywordCollection[DocData].docs)) { + const newEmbedding = Doc.MakeEmbedding(doc); + this._props.doc[DocData].data = new List([...DocListCast(this._props.doc[DocData].data), newEmbedding]); + newEmbedding.embedContainer = this._props.doc; + } + } else { + // Add this document to the keyword's collection of associated documents. + keywordCollection[DocData].docs = new List([...DocListCast(keywordCollection[DocData].docs), this._props.doc]); + + // Iterate through the keyword document's collections and add a copy of the document to each collection + for (const collection of DocListCast(keywordCollection.collections)) { + const newEmbedding = Doc.MakeEmbedding(this._props.doc); + collection[DocData].data = new List([...DocListCast(collection.data), newEmbedding]); + newEmbedding.embedContainer = collection; + } } + // Push the keyword to the document's keyword list field. + (this._props.doc![DocData].data_labels! as List).push(submittedLabel); + this._props.doc![DocData][`${submittedLabel}`] = true; this._currentInput = ''; // Clear the input box } }; @@ -223,9 +274,9 @@ export class KeywordBox extends ObservableReactComponent { if (SnappingManager.IsDragging || !(seldoc === this._props.doc) || !this._props.isEditing) { setTimeout( action(() => { - // if ((keywordsList as List).length === 0) { - // this._props.doc[DocData].showLabels = false; - // } + if ((keywordsList as List).length === 0) { + this._props.doc[DocData].showLabels = false; + } this.setToView(); }) ); @@ -237,59 +288,75 @@ export class KeywordBox extends ObservableReactComponent { ref={this.ref} style={{ transformOrigin: 'top left', + overflow: 'hidden', transform: `scale(${1 / this.currentScale})`, backgroundColor: this._props.isEditing ? Colors.LIGHT_GRAY : Colors.TRANSPARENT, borderColor: this._props.isEditing ? Colors.BLACK : Colors.TRANSPARENT, + maxWidth: `400px`, }}> -
- {(keywordsList as List).map(keyword => { - return ( - - ); - })} -
- {this._props.isEditing ? ( -
-
- { - e.key === 'Enter' ? this.submitLabel() : null; - e.stopPropagation(); - }} - type="text" - placeholder="Input keywords for document..." - aria-label="keyword-input" - className="keyword-input" - style={{ width: '100%', borderRadius: '5px' }} - /> -
-
- { - if ((keywordsList as List).length === 0) { - this._props.doc[DocData].showLabels = false; - } else { - this.setToView(); - } - }} - icon={'x'} - style={{ width: '4px' }} - /> -
+
+
+ {(keywordsList as List).map(keyword => { + return ; + })}
- ) : ( -
- )} + {this._props.isEditing ? ( +
+
+ { + e.key === 'Enter' ? this.submitLabel(this._currentInput) : null; + e.stopPropagation(); + }} + type="text" + placeholder="Input keywords for document..." + aria-label="keyword-input" + className="keyword-input" + style={{ width: '100%', borderRadius: '5px' }} + /> +
+ {Doc.ActiveDashboard?.myKeywordCollections ? ( +
+ {DocListCast(Doc.ActiveDashboard?.myKeywordCollections).map(doc => { + const keyword = StrCast(doc.title); + return ( +
+ ) : ( +
+ )} +
+ { + if ((keywordsList as List).length === 0) { + this._props.doc[DocData].showLabels = false; + } else { + this.setToView(); + } + }} + icon={'x'} + style={{ width: '4px' }} + /> +
+
+ ) : ( +
+ )} +
); } diff --git a/src/client/views/StyleProvider.scss b/src/client/views/StyleProvider.scss index 4267762aa..1d41697f5 100644 --- a/src/client/views/StyleProvider.scss +++ b/src/client/views/StyleProvider.scss @@ -77,14 +77,34 @@ align-items: center; } +.keyword-suggestions-box { + display: flex; + flex-wrap: wrap; + margin: auto; + align-self: center; + width: 90%; + border: 1px solid black; + border-radius: 2px; + margin-top: 8px; +} + +.keyword-suggestion { + cursor: pointer; + padding: 1px 1px; + margin: 2px 2px; + background-color: lightblue; + border: 1px solid black; + border-radius: 5px; + white-space: nowrap; + display: flex; + align-items: center; +} + .keyword-editing-box { margin-top: 8px; } .keyword-input-box { - // display: flex; - // align-items: center; - // align-content: center; margin: auto; align-self: center; width: 90%; -- cgit v1.2.3-70-g09d2 From de253f5acca34f20017895a2d8469b5ebd6032bf Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 30 Jul 2024 14:31:00 -0400 Subject: fight w css --- src/client/apis/gpt/GPT.ts | 9 ++ src/client/documents/Documents.ts | 2 + src/client/util/CurrentUserUtils.ts | 4 +- src/client/views/DocumentButtonBar.tsx | 6 +- src/client/views/DocumentDecorations.tsx | 2 +- src/client/views/FilterPanel.tsx | 95 ++++++++++++ src/client/views/StyleProvider.tsx | 7 + .../views/collections/CollectionCardDeckView.scss | 50 +++--- .../views/collections/CollectionCardDeckView.tsx | 1 + src/client/views/nodes/IconTagBox.scss | 30 ++++ src/client/views/nodes/IconTagBox.tsx | 168 +++++++++++++++++++++ src/client/views/pdf/GPTPopup/GPTPopup.scss | 3 +- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 164 ++++++++++++++------ 13 files changed, 460 insertions(+), 81 deletions(-) create mode 100644 src/client/views/nodes/IconTagBox.scss create mode 100644 src/client/views/nodes/IconTagBox.tsx (limited to 'src') diff --git a/src/client/apis/gpt/GPT.ts b/src/client/apis/gpt/GPT.ts index 40af70d99..d95e564c7 100644 --- a/src/client/apis/gpt/GPT.ts +++ b/src/client/apis/gpt/GPT.ts @@ -12,6 +12,7 @@ enum GPTCallType { DESCRIBE = 'describe', MERMAID = 'mermaid', DATA = 'data', + RUBRIC = 'rubric' } type GPTCallOpts = { @@ -26,6 +27,7 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { summary: { model: 'gpt-4-turbo', maxTokens: 256, temp: 0.5, prompt: 'Summarize the text given in simpler terms.' }, edit: { model: 'gpt-4-turbo', maxTokens: 256, temp: 0.5, prompt: 'Reword the text.' }, flashcard: { model: 'gpt-4-turbo', maxTokens: 512, temp: 0.5, prompt: 'Make flashcards out of this text with each question and answer labeled. Do not label each flashcard and do not include asterisks: ' }, + completion: { model: 'gpt-4-turbo', maxTokens: 256, temp: 0.5, prompt: "You are a helpful assistant. Answer the user's prompt." }, mermaid: { model: 'gpt-4-turbo', @@ -54,6 +56,13 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { temp: 0, prompt: 'List unique differences between the content of the UserAnswer and Rubric. Before each difference, label it and provide any additional information the UserAnswer missed and explain it in second person without separating it into UserAnswer and Rubric content and additional information. If there are no differences, say correct', }, + + rubric: { + model: 'gpt-4-turbo', + maxTokens: 1024, + temp: 0, + prompt: "Provide a definition for the vollowing term. It will be used as a rubric to evaluate the user's understanding of the topic", + }, }; let lastCall = ''; diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index e8e9b4fb6..612629f89 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -493,6 +493,8 @@ export class DocumentOptions { // cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) cardSort_isDesc?: BOOLt = new BoolInfo('whether the cards are sorted ascending or descending'); // test?: STRt = new StrInfo('testing for filtering') + keywords?: MAPt = new MapInfo('keywords', true); + } export const DocOptions = new DocumentOptions(); diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 380d16686..67f8dafc4 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -39,7 +39,7 @@ import { ColorScheme } from "./SettingsManager"; import { SnappingManager } from "./SnappingManager"; import { UndoManager } from "./UndoManager"; -interface Button { +export interface Button { // DocumentOptions fields a button can set title?: string; toolTip?: string; @@ -714,7 +714,7 @@ pie title Minerals in my tap water // } static tagGroupTools(): Button[] { return [ - { title: "Star", icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Star", icon: StrCast(Doc.UserDoc().myFilterHotKeyIcons) ?? "Star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, { title: "Heart", icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, { title: "Bolt", icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index 3d6436cb5..c8df66535 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -309,7 +309,7 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( // this.subPin = ''; // })} onClick={e => { - name === 'keywords' ? targetDoc && (targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels) : 'hi' + name === 'tags' ? targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags) : 'hi' }} @@ -332,7 +332,9 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( }}>
- {/* {pinBtn(true, false, 'window-maximize')} + { + metaBtn('tags', "tag") + /* {pinBtn(true, false, 'window-maximize')} {pinBtn(false, true, 'address-card')} {pinBtn(true, true, 'id-card')} */}
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index dc40562e8..b5d819b97 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -832,7 +832,7 @@ export class DocumentDecorations extends ObservableReactComponent DocumentView.Selected()} /> diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index 5db627d23..332a89a96 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -19,6 +19,16 @@ import './FilterPanel.scss'; import { DocumentView } from './nodes/DocumentView'; import { Handle, Tick, TooltipRail, Track } from './nodes/SliderBox-components'; import { ObservableReactComponent } from './ObservableReactComponent'; +import { Button } from '../util/CurrentUserUtils'; +import { ButtonType } from './nodes/FontIconBox/FontIconBox'; +import { DocCast } from '../../fields/Types'; +// import { Docs } from '../../documents/Documents'; +import { Docs } from '../documents/Documents'; +import { CurrentUserUtils } from '../util/CurrentUserUtils'; +import { DocumentOptions } from '../documents/Documents'; +import { DocUtils } from '../documents/DocUtils'; +import { dropActionType } from '../util/DropActionTypes'; + interface filterProps { Document: Doc; @@ -217,6 +227,83 @@ export class FilterPanel extends ObservableReactComponent { return nonNumbers / facetValues.length > 0.1 ? facetValues.sort() : facetValues.sort((n1: string, n2: string) => Number(n1) - Number(n2)); }; + addHotkey() { + + const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); + const filter = buttons['Filter'] + const filter2 = DocCast(filter) + const but2 = Doc.UserDoc().myContextMenuBtns + + // const newCol = Docs.Create.CarouselDocument(DocListCast(doc[Doc.LayoutFieldKey(doc)]), { + // _width: 250, + // _height: 200, + // _layout_fitWidth: false, + // _layout_autoHeight: true, + // }); + + // CurrentUserUtils.setupContextMenuButtons() + + // const hm = Docs.Create.FontIconDocument() + + // DocumentView.getDocumentView(filter2)?.ComponentView?.addDocument?.(hm) + + // console.log(DocumentView.getDocumentView(filter2) + "hiiiii") + + // DocumentView.getDocumentView(DocCast(buttons['Card']))?.ComponentView?.addDocument?.(hm) + + const hi = CurrentUserUtils.contextMenuTools() + + const newKey: Button = { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} + + + const heyy = [...hi, newKey] + + Doc.UserDoc().myFilterHotKeyIcons = "palette" + Doc.UserDoc().myFilterHotKeyTitles = "hi" + + CurrentUserUtils.setupContextMenuButtons(Doc.UserDoc()); + + + + Doc.UserDoc().hi = Docs.Create.FontIconDocument( + { title: '', + icon: 'map-pin', + + backgroundColor: '#ACCEF7', + layout_hideAllLinks: true, + _width: 15, + _height: 15, + _xPadding: 0, + } + ) + + + // buttons['Filter'] + + + + + const reqdCtxtOpts:DocumentOptions = { title: "hi", undoIgnoreFields:new List(['width', "linearView_IsOpen"]), flexGap: 0, childDragAction: dropActionType.embed, childDontRegisterViews: true, linearView_IsOpen: true, ignoreClick: true, linearView_Expandable: false, _height: 35 }; + const ctxtMenuBtns = CurrentUserUtils.setupContextMenuBtn(newKey, buttons); + // DocUtils.AssignOpts(buttons, reqdCtxtOpts, ctxtMenuBtns); + + + DocUtils.AssignOpts(DocCast(buttons['Filter']), reqdCtxtOpts, [ctxtMenuBtns]); + + + // newCol && dv.ComponentView?.addDocument?.(newCol); + + // console.log(but2 + "omgg") + + + + // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); + + + + // Doc.UserDoc().myContextMenuBtns = new List([...buttons, newKey as Doc]) + } + render() { return (
@@ -283,6 +370,14 @@ export class FilterPanel extends ObservableReactComponent { ) )}
+
+
+
+ +
+
+ +
); } diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 40d0358d2..55e6217ff 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -30,6 +30,7 @@ import { DocumentView, DocumentViewProps } from './nodes/DocumentView'; import { FieldViewProps } from './nodes/FieldView'; import { StyleProp } from './StyleProp'; import './StyleProvider.scss'; +import { IconTagBox } from './nodes/IconTagBox'; function toggleLockedPosition(doc: Doc) { UndoManager.RunInBatch(() => Doc.toggleLockedPosition(doc), 'toggleBackground'); @@ -377,6 +378,11 @@ export function DefaultStyleProvider(doc: Opt, props: Opt) } } + + const iconTags = () => { + if (doc && doc![DocData].showIconTags) + {return ()} + } return ( <> {paint()} @@ -384,6 +390,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); } diff --git a/src/client/views/collections/CollectionCardDeckView.scss b/src/client/views/collections/CollectionCardDeckView.scss index eb1b456f5..5869f89e1 100644 --- a/src/client/views/collections/CollectionCardDeckView.scss +++ b/src/client/views/collections/CollectionCardDeckView.scss @@ -22,32 +22,32 @@ transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955); } -.card-button-container { - display: flex; - padding: 3px; - // width: 300px; - // height:100px; - pointer-events: none; /* This ensures the container does not capture hover events */ - - background-color: rgb(218, 218, 218); /* Background color of the container */ - border-radius: 50px; /* Rounds the corners of the container */ - transform: translateY(25px); - // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */ - align-items: center; /* Centers buttons vertically */ - justify-content: start; /* Centers buttons horizontally */ - - button { - pointer-events: auto; /* Re-enable pointer events for the buttons */ +// .card-button-container { +// display: flex; +// padding: 3px; +// // width: 300px; +// // height:100px; +// pointer-events: none; /* This ensures the container does not capture hover events */ + +// background-color: rgb(218, 218, 218); /* Background color of the container */ +// border-radius: 50px; /* Rounds the corners of the container */ +// transform: translateY(25px); +// // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */ +// align-items: center; /* Centers buttons vertically */ +// justify-content: start; /* Centers buttons horizontally */ + +// button { +// pointer-events: auto; /* Re-enable pointer events for the buttons */ - width: 70px; - height: 70px; - border-radius: 50%; - background-color: $dark-gray; - // border-color: $medium-blue; - margin: 5px; // transform: translateY(-50px); - background-color: transparent; - } -} +// width: 70px; +// height: 70px; +// border-radius: 50%; +// background-color: $dark-gray; +// // border-color: $medium-blue; +// margin: 5px; // transform: translateY(-50px); +// background-color: transparent; +// } +// } .no-card-span{ position: relative; diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 410ddc355..736cc2354 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -446,6 +446,7 @@ export class CollectionCardView extends CollectionSubView() { }; const docTextPromises = this.childDocsWithoutLinks.map(async doc => { const docText = (await docToText(doc)) ?? ''; + doc['gptInputText'] = docText this._textToDoc.set(docText.replace(/\n/g, ' ').trim(), doc); return `======${docText.replace(/\n/g, ' ').trim()}======`; }); diff --git a/src/client/views/nodes/IconTagBox.scss b/src/client/views/nodes/IconTagBox.scss new file mode 100644 index 000000000..8c0f92c90 --- /dev/null +++ b/src/client/views/nodes/IconTagBox.scss @@ -0,0 +1,30 @@ +@import '../global/globalCssVariables.module.scss'; + +.card-button-container { + display: flex; + padding: 3px; + position: absolute; + // width: 300px; + // height:100px; + pointer-events: none; /* This ensures the container does not capture hover events */ + + background-color: rgb(218, 218, 218); /* Background color of the container */ + border-radius: 50px; /* Rounds the corners of the container */ + transform: translateY(25px); + // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */ + align-items: center; /* Centers buttons vertically */ + justify-content: start; /* Centers buttons horizontally */ + + button { + pointer-events: auto; /* Re-enable pointer events for the buttons */ + transform: translateY(-7.5px); + + width: 30px; + height: 30px; + border-radius: 50%; + background-color: $dark-gray; + // border-color: $medium-blue; + margin: 5px; // transform: translateY(-50px); + background-color: transparent; + } +} \ No newline at end of file diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx new file mode 100644 index 000000000..9a2273c3a --- /dev/null +++ b/src/client/views/nodes/IconTagBox.tsx @@ -0,0 +1,168 @@ +import React from "react"; +import { observer } from "mobx-react"; +import { computed } from "mobx"; + +import { ObservableReactComponent } from "../ObservableReactComponent"; +import { NumCast } from "../../../fields/Types"; +import { makeObservable } from "mobx"; +import { Doc } from "../../../fields/Doc"; +import { Reaction } from "mobx"; +import { reaction } from "mobx"; +import { numberRange } from "../../../Utils"; +import { Tooltip } from "@mui/material"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { undoable } from "../../util/UndoManager"; +import { BoolCast } from "../../../fields/Types"; +import { DocCast } from "../../../fields/Types"; +import './IconTagBox.scss'; +import { AclAdmin, AclAugment, AclEdit, DocData } from '../../../fields/DocSymbols'; + + +export interface IconTagProps { + doc: Doc; + + +} + +@observer +export class IconTagBox extends ObservableReactComponent { + private ref: React.RefObject; + private height: number = 0; + + + @computed + get currentScale() { + return NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1); + } + + constructor(props: any) { + super(props); + makeObservable(this); + this.ref = React.createRef(); + } + + componentDidMount(): void { + this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + this._props.doc._keywordHeight = this.height; + + reaction( + () => this.currentScale, + () => { + if (this.currentScale < 1) { + this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + this._props.doc._keywordHeight = this.height; + } + } + ); + } + + componentDidUpdate(prevProps: Readonly): void { + this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + this._props.doc._keywordHeight = this.height; + } + + /** + * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups + * @param doc + * @param cardSort + * @returns + */ + renderButtons = (doc: Doc): JSX.Element | null => { + // if (cardSort !== cardSortings.Custom) return null; + + const amButtons = 4 + + // const amButtons = Math.max( + // 4, + // this.childDocs?.reduce((set, d) => { + // if (this.cardSort_customField) { + // set.add(NumCast(d[this.cardSort_customField])); + // } + // return set; + // }, new Set()).size ?? 0 + // ); + + // const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); + + const totalWidth = amButtons * 35 + amButtons * 2 * 5 + 6; + + const iconMap: { [key: number]: any } = { + 0: 'star', + 1: 'heart', + 2: 'cloud', + 3: 'bolt' + }; + + return ( +
+ {numberRange(amButtons).map(i => ( + Click to add/remove this card from the {iconMap[i]} group
}> + + + ))} +
+ ); + }; + + /** + * Toggles the buttons between on and off when creating custom sort groupings/changing those created by gpt + * @param childPairIndex + * @param buttonID + * @param doc + */ + toggleButton = undoable((doc: Doc, icon: string) => { + + + + // this.cardSort_customField && (doc[this.cardSort_customField] = buttonID); + + // doc.cardSort_activeIcons = new List() + + + // const list = StrListCast(doc.cardSort_activeIcons); + // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); + + BoolCast(doc[icon]) ? doc[icon] = false : doc[icon] = true + + + + // StrListCast(doc.cardSort_activeIcons).push(iconMap[buttonID]) + }, 'toggle card tag'); + + + getButtonIcon = (doc: Doc, icon: any): JSX.Element => { + + // const isActive = StrListCast(doc.cardSort_activeIcons).includes(icon) + const isActive = doc[icon] + + // console.log(StrListCast(doc.cardSort_activeIcons)) + const color = isActive ? '#4476f7' : '#323232'; + + return ; + }; + + render (){ + return ( + <> + {this.renderButtons(this._props.doc)} + + + ) + + } + + + +} + + diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.scss b/src/client/views/pdf/GPTPopup/GPTPopup.scss index 57973ef34..eaa3eaebf 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.scss +++ b/src/client/views/pdf/GPTPopup/GPTPopup.scss @@ -66,8 +66,9 @@ $highlightedText: #82e0ff; .content-wrapper { padding-top: 10px; min-height: 50px; - max-height: 150px; + // max-height: 150px; overflow-y: auto; + height: 100% } .btns-wrapper-gpt { diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index bbd5ea630..a41c33a4d 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -19,7 +19,9 @@ import { AnchorMenu } from '../AnchorMenu'; import './GPTPopup.scss'; import { SettingsManager } from '../../../util/SettingsManager'; import { SnappingManager } from '../../../util/SnappingManager'; - +import { DocumentView } from '../../nodes/DocumentView'; +import { DocCast } from '../../../../fields/Types'; +import { RTFCast } from '../../../../fields/Types'; export enum GPTPopupMode { SUMMARY, @@ -177,6 +179,59 @@ export class GPTPopup extends ObservableReactComponent { this.quizAnswer = e.target.value; }); + generateQuiz = async () => { + this.setLoading(true); + this.setSortDone(false); + + + const selected = DocumentView.SelectedDocs().lastElement(); + + const questionText = 'Question: ' + StrCast(selected['gptInputText']); + + if (StrCast(selected['gptRubric']) === '') { + const rubricText = 'Rubric: ' + await this.generateRubric(StrCast(selected['gptInputText']), selected) + } + + const rubricText = 'Rubric: ' + (StrCast(selected['gptRubric'])) + // const rubricText = 'Rubric: ' + StrCast(RTFCast(DocCast(this.dataDoc[this.fieldKey + '_0']).text)?.Text); + const queryText = questionText + ' UserAnswer: ' + this.quizAnswer + '. ' + 'Rubric' + rubricText; + + try { + const res = await gptAPICall(queryText, GPTCallType.QUIZ); + if (!res) { + console.error('GPT call failed'); + return; + } + console.log(res) + this.setQuizResp(res) + + this.setLoading(false); + this.setSortDone(true); + + // this._outputValue = res; + } catch (err) { + console.error('GPT call failed'); + } + + + } + + generateRubric = async (inputText: string, doc:Doc) => { + try { + const res = await gptAPICall(inputText, GPTCallType.RUBRIC); + console.log(res + "rubbbb") + // if (!res) { + // console.error('GPT call failed'); + // return; + // } + doc['gptRubric']= res; + return res + } catch (err) { + console.error('GPT call failed'); + } + + } + @observable private regenerateCallback: (() => Promise) | null = null; @@ -192,6 +247,14 @@ export class GPTPopup extends ObservableReactComponent { public createFilteredDoc: (axes?: any) => boolean = () => false; public addToCollection: ((doc: Doc | Doc[], annotationKey?: string | undefined) => boolean) | undefined; + @observable quizRespText: string = '' + + @action setQuizResp (resp: string) { + this.quizRespText = resp + + } + + /** * Sorts cards in the CollectionCardDeckView */ @@ -403,7 +466,8 @@ export class GPTPopup extends ObservableReactComponent { ) cardActual = (opt: GPTPopupMode) => { - if (opt === GPTPopupMode.SORT) { + const isSort = opt === GPTPopupMode.SORT + // if (opt === GPTPopupMode.SORT) { return ( !this.sortDone ? ( <> @@ -412,24 +476,24 @@ export class GPTPopup extends ObservableReactComponent { className="searchBox-input" defaultValue="" autoComplete="off" - onChange={this.sortPromptChanged} + onChange={isSort ? this.sortPromptChanged : this.quizAnswerChanged} onKeyDown={e => { if (e.key === 'Enter') { - this.generateSort(); + isSort ? this.generateSort() : this.generateQuiz(); } e.stopPropagation(); }} type="text" - placeholder="How do you want to sort your cards?" + placeholder={`${isSort ? 'How do you want to sort your cards?' : 'What is the selected card?'}`} id="search-input" style={{ width: '100%' }} /> {/*
*/}
- - ); - } + // } else if (opt === GPTPopupMode.QUIZ) { + // return ( + // <> + //
+ // { + // if (e.key === 'Enter') { + // this.generateQuiz(); + // } + // e.stopPropagation(); + // }} + // type="text" + // placeholder="What is the selected card?" + // id="search-input" + // style={{ width: '100%' }} + // /> + // {/*
+ //
*/} + //
+ // + // ); + // } }; sortBox = () => (
- {this.heading('SORTING')} + {this.heading(this.mode === GPTPopupMode.SORT ? 'SORTING' : 'QUIZ')} <> {!this.cardsDoneLoading || this.loading ? (
@@ -673,7 +737,7 @@ export class GPTPopup extends ObservableReactComponent { tooltip="back" icon={} onClick={() => this.mode = GPTPopupMode.CARD} - style = {{right: '-55px'}} + style = {{right: '-20%'}} /> )} Date: Thu, 1 Aug 2024 14:29:21 -0400 Subject: feat: added groundwork for face recognition --- package-lock.json | 64 ++++++++++ package.json | 1 + src/client/views/Main.tsx | 2 + src/client/views/search/FaceRecognitionHandler.tsx | 86 +++++++++++++ src/server/public/models/age_gender_model-shard1 | Bin 0 -> 429708 bytes .../models/age_gender_model-weights_manifest.json | 1 + .../public/models/face_expression_model-shard1 | Bin 0 -> 329468 bytes .../face_expression_model-weights_manifest.json | 1 + .../public/models/face_landmark_68_model-shard1 | Bin 0 -> 356840 bytes .../face_landmark_68_model-weights_manifest.json | 1 + .../models/face_landmark_68_tiny_model-shard1 | Bin 0 -> 77224 bytes ...ce_landmark_68_tiny_model-weights_manifest.json | 1 + .../public/models/face_recognition_model-shard1 | Bin 0 -> 4194304 bytes .../public/models/face_recognition_model-shard2 | 6 + .../face_recognition_model-weights_manifest.json | 1 + src/server/public/models/mtcnn_model-shard1 | Bin 0 -> 1983400 bytes .../models/mtcnn_model-weights_manifest.json | 1 + .../public/models/ssd_mobilenetv1_model-shard1 | Bin 0 -> 4194304 bytes .../public/models/ssd_mobilenetv1_model-shard2 | 137 +++++++++++++++++++++ .../ssd_mobilenetv1_model-weights_manifest.json | 1 + .../public/models/tiny_face_detector_model-shard1 | Bin 0 -> 193321 bytes .../tiny_face_detector_model-weights_manifest.json | 1 + 22 files changed, 304 insertions(+) create mode 100644 src/client/views/search/FaceRecognitionHandler.tsx create mode 100644 src/server/public/models/age_gender_model-shard1 create mode 100644 src/server/public/models/age_gender_model-weights_manifest.json create mode 100644 src/server/public/models/face_expression_model-shard1 create mode 100644 src/server/public/models/face_expression_model-weights_manifest.json create mode 100644 src/server/public/models/face_landmark_68_model-shard1 create mode 100644 src/server/public/models/face_landmark_68_model-weights_manifest.json create mode 100644 src/server/public/models/face_landmark_68_tiny_model-shard1 create mode 100644 src/server/public/models/face_landmark_68_tiny_model-weights_manifest.json create mode 100644 src/server/public/models/face_recognition_model-shard1 create mode 100644 src/server/public/models/face_recognition_model-shard2 create mode 100644 src/server/public/models/face_recognition_model-weights_manifest.json create mode 100644 src/server/public/models/mtcnn_model-shard1 create mode 100644 src/server/public/models/mtcnn_model-weights_manifest.json create mode 100644 src/server/public/models/ssd_mobilenetv1_model-shard1 create mode 100644 src/server/public/models/ssd_mobilenetv1_model-shard2 create mode 100644 src/server/public/models/ssd_mobilenetv1_model-weights_manifest.json create mode 100644 src/server/public/models/tiny_face_detector_model-shard1 create mode 100644 src/server/public/models/tiny_face_detector_model-weights_manifest.json (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 6cd2ab605..35b4b6238 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,6 +101,7 @@ "express-session": "^1.17.3", "express-validator": "^7.0.1", "extract-colors": "^4.0.2", + "face-api.js": "^0.22.2", "ffmpeg": "0.0.4", "file-loader": "^6.2.0", "file-saver": "^2.0.5", @@ -7084,6 +7085,30 @@ "node": ">=14.16" } }, + "node_modules/@tensorflow/tfjs-core": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.7.0.tgz", + "integrity": "sha512-uwQdiklNjqBnHPeseOdG0sGxrI3+d6lybaKu2+ou3ajVeKdPEwpWbgqA6iHjq1iylnOGkgkbbnQ6r2lwkiIIHw==", + "dependencies": { + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "2.4.27", + "@types/webgl-ext": "0.0.30", + "@types/webgl2": "0.0.4", + "node-fetch": "~2.1.2", + "seedrandom": "2.4.3" + }, + "engines": { + "yarn": ">= 1.3.2" + } + }, + "node_modules/@tensorflow/tfjs-core/node_modules/node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha512-IHLHYskTc2arMYsHZH82PVX8CSKT5lzb7AXeyO06QnjGDKtkv+pv3mEki6S7reB/x1QPo+YPxQRNEVgR5V/w3Q==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, "node_modules/@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", @@ -9424,6 +9449,11 @@ "@types/node": "*" } }, + "node_modules/@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", @@ -9671,6 +9701,11 @@ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", "optional": true }, + "node_modules/@types/seedrandom": { + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", + "integrity": "sha512-YvMLqFak/7rt//lPBtEHv3M4sRNA+HGxrhFZ+DQs9K2IkYJbNwVIb8avtJfhDiuaUBX/AW0jnjv48FV8h3u9bQ==" + }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", @@ -9786,6 +9821,16 @@ "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.147.tgz", "integrity": "sha512-HubXF+XiMsQBdwhMC9w1aZuSOZ6CvcBR01MA4UdQCbWABkcrSBbMGQ0VnqTJlEU1b78WCx8quv8pznnDXSiUtQ==" }, + "node_modules/@types/webgl-ext": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", + "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==" + }, + "node_modules/@types/webgl2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.4.tgz", + "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==" + }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -19377,6 +19422,20 @@ "node >=0.6.0" ] }, + "node_modules/face-api.js": { + "version": "0.22.2", + "resolved": "https://registry.npmjs.org/face-api.js/-/face-api.js-0.22.2.tgz", + "integrity": "sha512-9Bbv/yaBRTKCXjiDqzryeKhYxmgSjJ7ukvOvEBy6krA0Ah/vNBlsf7iBNfJljWiPA8Tys1/MnB3lyP2Hfmsuyw==", + "dependencies": { + "@tensorflow/tfjs-core": "1.7.0", + "tslib": "^1.11.1" + } + }, + "node_modules/face-api.js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -37613,6 +37672,11 @@ "resolved": "https://registry.npmjs.org/section-iterator/-/section-iterator-2.0.0.tgz", "integrity": "sha512-xvTNwcbeDayXotnV32zLb3duQsP+4XosHpb/F+tu6VzEZFmIjzPdNk6/O+QOOx5XTh08KL2ufdXeCO33p380pQ==" }, + "node_modules/seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha512-2CkZ9Wn2dS4mMUWQaXLsOAfGD+irMlLEeSP3cMxpGbgyOOzJGFa+MWCOMTOCMyZinHRPxyOj/S/C57li/1to6Q==" + }, "node_modules/selderee": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", diff --git a/package.json b/package.json index bbd2a4c46..019a1e308 100644 --- a/package.json +++ b/package.json @@ -186,6 +186,7 @@ "express-session": "^1.17.3", "express-validator": "^7.0.1", "extract-colors": "^4.0.2", + "face-api.js": "^0.22.2", "ffmpeg": "0.0.4", "file-loader": "^6.2.0", "file-saver": "^2.0.5", diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index 8242e7c27..ada934aea 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -61,6 +61,7 @@ import { ImportElementBox } from './nodes/importBox/ImportElementBox'; import { PresBox, PresElementBox } from './nodes/trails'; import { SearchBox } from './search/SearchBox'; import { ImageLabelBox } from './collections/collectionFreeForm/ImageLabelBox'; +import { FaceRecognitionHandler } from './search/FaceRecognitionHandler'; dotenv.config(); @@ -96,6 +97,7 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; new BranchingTrailManager({}); new PingManager(); new KeyManager(); + new FaceRecognitionHandler(); // initialize plugins and classes that require plugins CollectionDockingView.Init(TabDocView); diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx new file mode 100644 index 000000000..86619b2d1 --- /dev/null +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -0,0 +1,86 @@ +import * as faceapi from 'face-api.js'; +import { FaceMatcher, TinyFaceDetectorOptions } from 'face-api.js'; +import { Doc, DocListCast, NumListCast } from '../../../fields/Doc'; +import { DocData } from '../../../fields/DocSymbols'; +import { List } from '../../../fields/List'; +import { ObjectField } from '../../../fields/ObjectField'; +import { StrCast } from '../../../fields/Types'; + +export class FaceRecognitionHandler { + static _instance: FaceRecognitionHandler; + + constructor() { + FaceRecognitionHandler._instance = this; + this.loadModels(); + if (!Doc.ActiveDashboard![DocData].faceDocuments) { + Doc.ActiveDashboard![DocData].faceDocuments = new List(); + } + } + + async loadModels() { + const MODEL_URL = `/models`; + await faceapi.loadTinyFaceDetectorModel(MODEL_URL); + await faceapi.loadFaceLandmarkTinyModel(MODEL_URL); + await faceapi.loadFaceRecognitionModel(MODEL_URL); + } + + public static get Instance() { + return FaceRecognitionHandler._instance ?? new FaceRecognitionHandler(); + } + + public async findMatches(doc: Doc, imageURL: string) { + const img = await this.loadImage(imageURL); + + const fullFaceDescriptions = await faceapi.detectAllFaces(img, new TinyFaceDetectorOptions()).withFaceLandmarks(true).withFaceDescriptors(); + + fullFaceDescriptions.forEach(fd => { + const match = this.findMatch(fd.descriptor); + if (match) { + match[DocData].associatedDocs = new List([...DocListCast(match[DocData].associatedDocs), doc]); + match[DocData].faceDescriptors = new List>([...(match[DocData].faceDescriptors as List>), Array.from(fd.descriptor) as List]); + } else { + const newFaceDocument = new Doc(); + const converted_array = Array.from(fd.descriptor); + newFaceDocument[DocData].faceDescriptors = new List>(); + (newFaceDocument[DocData].faceDescriptors as List>).push(converted_array as List); + newFaceDocument[DocData].label = `Person ${DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).length + 1}`; + newFaceDocument[DocData].associatedDocs = new List([doc]); + + Doc.ActiveDashboard![DocData].faceDocuments = new List([...DocListCast(Doc.ActiveDashboard![DocData].faceDocuments), newFaceDocument]); + } + }); + } + + private findMatch(cur_descriptor: Float32Array) { + if (DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).length < 1) { + return null; + } + + const faceDescriptors: faceapi.LabeledFaceDescriptors[] = DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).map(faceDocument => { + const float32Array = (faceDocument[DocData].faceDescriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); + return new faceapi.LabeledFaceDescriptors(StrCast(faceDocument[DocData].label), float32Array); + }); + const faceMatcher = new FaceMatcher(faceDescriptors, 0.6); + const match = faceMatcher.findBestMatch(cur_descriptor); + + if (match.label == 'unknown') { + return null; + } else { + for (const doc of DocListCast(Doc.ActiveDashboard![DocData].faceDocuments)) { + if (doc[DocData].label === match.label) { + return doc; + } + } + } + } + + private loadImage = (src: string): Promise => { + return new Promise((resolve, reject) => { + const img = new Image(); + img.crossOrigin = 'anonymous'; + img.onload = () => resolve(img); + img.onerror = err => reject(err); + img.src = src; + }); + }; +} diff --git a/src/server/public/models/age_gender_model-shard1 b/src/server/public/models/age_gender_model-shard1 new file mode 100644 index 000000000..d942d6ad1 Binary files /dev/null and b/src/server/public/models/age_gender_model-shard1 differ diff --git a/src/server/public/models/age_gender_model-weights_manifest.json b/src/server/public/models/age_gender_model-weights_manifest.json new file mode 100644 index 000000000..ebc009ab8 --- /dev/null +++ b/src/server/public/models/age_gender_model-weights_manifest.json @@ -0,0 +1 @@ +[{"weights":[{"name":"entry_flow/conv_in/filters","shape":[3,3,3,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005431825039433498,"min":-0.7441600304023892}},{"name":"entry_flow/conv_in/bias","shape":[32],"dtype":"float32"},{"name":"entry_flow/reduction_block_0/separable_conv0/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005691980614381678,"min":-0.6090419257388395}},{"name":"entry_flow/reduction_block_0/separable_conv0/pointwise_filter","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.009089225881239947,"min":-1.1179747833925135}},{"name":"entry_flow/reduction_block_0/separable_conv0/bias","shape":[64],"dtype":"float32"},{"name":"entry_flow/reduction_block_0/separable_conv1/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00683894624897078,"min":-0.8138346036275228}},{"name":"entry_flow/reduction_block_0/separable_conv1/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011632566358528886,"min":-1.3028474321552352}},{"name":"entry_flow/reduction_block_0/separable_conv1/bias","shape":[64],"dtype":"float32"},{"name":"entry_flow/reduction_block_0/expansion_conv/filters","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010254812240600587,"min":-0.9229331016540528}},{"name":"entry_flow/reduction_block_0/expansion_conv/bias","shape":[64],"dtype":"float32"},{"name":"entry_flow/reduction_block_1/separable_conv0/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0052509616403018725,"min":-0.6406173201168285}},{"name":"entry_flow/reduction_block_1/separable_conv0/pointwise_filter","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010788509424994973,"min":-1.4564487723743214}},{"name":"entry_flow/reduction_block_1/separable_conv0/bias","shape":[128],"dtype":"float32"},{"name":"entry_flow/reduction_block_1/separable_conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00553213918910307,"min":-0.7025816770160899}},{"name":"entry_flow/reduction_block_1/separable_conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.013602388606351965,"min":-1.6186842441558837}},{"name":"entry_flow/reduction_block_1/separable_conv1/bias","shape":[128],"dtype":"float32"},{"name":"entry_flow/reduction_block_1/expansion_conv/filters","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.007571851038465313,"min":-1.158493208885193}},{"name":"entry_flow/reduction_block_1/expansion_conv/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_0/separable_conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005766328409606335,"min":-0.6688940955143349}},{"name":"middle_flow/main_block_0/separable_conv0/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.012136116214826995,"min":-1.5776951079275094}},{"name":"middle_flow/main_block_0/separable_conv0/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_0/separable_conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004314773222979377,"min":-0.5652352922102984}},{"name":"middle_flow/main_block_0/separable_conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01107162026798024,"min":-1.2400214700137868}},{"name":"middle_flow/main_block_0/separable_conv1/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_0/separable_conv2/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0036451735917259667,"min":-0.4848080876995536}},{"name":"middle_flow/main_block_0/separable_conv2/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008791744942758598,"min":-1.134135097615859}},{"name":"middle_flow/main_block_0/separable_conv2/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_1/separable_conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004915751896652521,"min":-0.6095532351849126}},{"name":"middle_flow/main_block_1/separable_conv0/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010868691463096469,"min":-1.3368490499608656}},{"name":"middle_flow/main_block_1/separable_conv0/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_1/separable_conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005010117269029804,"min":-0.6012140722835765}},{"name":"middle_flow/main_block_1/separable_conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010311148213405235,"min":-1.3816938605963016}},{"name":"middle_flow/main_block_1/separable_conv1/bias","shape":[128],"dtype":"float32"},{"name":"middle_flow/main_block_1/separable_conv2/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004911523706772748,"min":-0.7367285560159123}},{"name":"middle_flow/main_block_1/separable_conv2/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008976466047997568,"min":-1.2207993825276693}},{"name":"middle_flow/main_block_1/separable_conv2/bias","shape":[128],"dtype":"float32"},{"name":"exit_flow/reduction_block/separable_conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005074804436926748,"min":-0.7104726211697447}},{"name":"exit_flow/reduction_block/separable_conv0/pointwise_filter","shape":[1,1,128,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011453078307357489,"min":-1.4545409450344011}},{"name":"exit_flow/reduction_block/separable_conv0/bias","shape":[256],"dtype":"float32"},{"name":"exit_flow/reduction_block/separable_conv1/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.007741751390344957,"min":-1.1380374543807086}},{"name":"exit_flow/reduction_block/separable_conv1/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011347713189966538,"min":-1.497898141075583}},{"name":"exit_flow/reduction_block/separable_conv1/bias","shape":[256],"dtype":"float32"},{"name":"exit_flow/reduction_block/expansion_conv/filters","shape":[1,1,128,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006717281014311547,"min":-0.8329428457746318}},{"name":"exit_flow/reduction_block/expansion_conv/bias","shape":[256],"dtype":"float32"},{"name":"exit_flow/separable_conv/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0027201742518181892,"min":-0.3237007359663645}},{"name":"exit_flow/separable_conv/pointwise_filter","shape":[1,1,256,512],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010076364348916447,"min":-1.330080094056971}},{"name":"exit_flow/separable_conv/bias","shape":[512],"dtype":"float32"},{"name":"fc/age/weights","shape":[512,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008674054987290326,"min":-1.2664120281443876}},{"name":"fc/age/bias","shape":[1],"dtype":"float32"},{"name":"fc/gender/weights","shape":[512,2],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0029948226377075793,"min":-0.34140978069866407}},{"name":"fc/gender/bias","shape":[2],"dtype":"float32"}],"paths":["age_gender_model-shard1"]}] \ No newline at end of file diff --git a/src/server/public/models/face_expression_model-shard1 b/src/server/public/models/face_expression_model-shard1 new file mode 100644 index 000000000..619cdf6d4 Binary files /dev/null and b/src/server/public/models/face_expression_model-shard1 differ diff --git a/src/server/public/models/face_expression_model-weights_manifest.json b/src/server/public/models/face_expression_model-weights_manifest.json new file mode 100644 index 000000000..7b74b5ab4 --- /dev/null +++ b/src/server/public/models/face_expression_model-weights_manifest.json @@ -0,0 +1 @@ +[{"weights":[{"name":"dense0/conv0/filters","shape":[3,3,3,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0057930146946626555,"min":-0.7125408074435067}},{"name":"dense0/conv0/bias","shape":[32],"dtype":"float32"},{"name":"dense0/conv1/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006473719839956246,"min":-0.6408982641556684}},{"name":"dense0/conv1/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010509579321917366,"min":-1.408283629136927}},{"name":"dense0/conv1/bias","shape":[32],"dtype":"float32"},{"name":"dense0/conv2/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005666389652326995,"min":-0.7252978754978554}},{"name":"dense0/conv2/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010316079270605948,"min":-1.1760330368490781}},{"name":"dense0/conv2/bias","shape":[32],"dtype":"float32"},{"name":"dense0/conv3/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0063220320963392074,"min":-0.853474333005793}},{"name":"dense0/conv3/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010322785377502442,"min":-1.4658355236053466}},{"name":"dense0/conv3/bias","shape":[32],"dtype":"float32"},{"name":"dense1/conv0/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0042531527724920535,"min":-0.5741756242864272}},{"name":"dense1/conv0/pointwise_filter","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010653339647779278,"min":-1.1825207009035}},{"name":"dense1/conv0/bias","shape":[64],"dtype":"float32"},{"name":"dense1/conv1/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005166931012097527,"min":-0.6355325144879957}},{"name":"dense1/conv1/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011478300188101974,"min":-1.3888743227603388}},{"name":"dense1/conv1/bias","shape":[64],"dtype":"float32"},{"name":"dense1/conv2/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006144821410085641,"min":-0.8479853545918185}},{"name":"dense1/conv2/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010541967317169788,"min":-1.3809977185492421}},{"name":"dense1/conv2/bias","shape":[64],"dtype":"float32"},{"name":"dense1/conv3/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005769844849904378,"min":-0.686611537138621}},{"name":"dense1/conv3/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010939095534530341,"min":-1.2689350820055196}},{"name":"dense1/conv3/bias","shape":[64],"dtype":"float32"},{"name":"dense2/conv0/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0037769308277204924,"min":-0.40790852939381317}},{"name":"dense2/conv0/pointwise_filter","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01188667194516051,"min":-1.4382873053644218}},{"name":"dense2/conv0/bias","shape":[128],"dtype":"float32"},{"name":"dense2/conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006497045825509464,"min":-0.8381189114907208}},{"name":"dense2/conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011632198913424622,"min":-1.3377028750438316}},{"name":"dense2/conv1/bias","shape":[128],"dtype":"float32"},{"name":"dense2/conv2/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005947182225246056,"min":-0.7969224181829715}},{"name":"dense2/conv2/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011436844339557722,"min":-1.4524792311238306}},{"name":"dense2/conv2/bias","shape":[128],"dtype":"float32"},{"name":"dense2/conv3/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006665432686899222,"min":-0.8998334127313949}},{"name":"dense2/conv3/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01283421422920975,"min":-1.642779421338848}},{"name":"dense2/conv3/bias","shape":[128],"dtype":"float32"},{"name":"dense3/conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004711699953266218,"min":-0.6737730933170692}},{"name":"dense3/conv0/pointwise_filter","shape":[1,1,128,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010955964817720302,"min":-1.3914075318504784}},{"name":"dense3/conv0/bias","shape":[256],"dtype":"float32"},{"name":"dense3/conv1/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00554193468654857,"min":-0.7149095745647656}},{"name":"dense3/conv1/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.016790372250126858,"min":-2.484975093018775}},{"name":"dense3/conv1/bias","shape":[256],"dtype":"float32"},{"name":"dense3/conv2/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006361540626077091,"min":-0.8142772001378676}},{"name":"dense3/conv2/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01777329678628959,"min":-1.7062364914838006}},{"name":"dense3/conv2/bias","shape":[256],"dtype":"float32"},{"name":"dense3/conv3/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006900275922289082,"min":-0.8625344902861353}},{"name":"dense3/conv3/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.015449936717164282,"min":-1.9003422162112067}},{"name":"dense3/conv3/bias","shape":[256],"dtype":"float32"},{"name":"fc/weights","shape":[256,7],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004834276554631252,"min":-0.7203072066400565}},{"name":"fc/bias","shape":[7],"dtype":"float32"}],"paths":["face_expression_model-shard1"]}] \ No newline at end of file diff --git a/src/server/public/models/face_landmark_68_model-shard1 b/src/server/public/models/face_landmark_68_model-shard1 new file mode 100644 index 000000000..fcaca474f Binary files /dev/null and b/src/server/public/models/face_landmark_68_model-shard1 differ diff --git a/src/server/public/models/face_landmark_68_model-weights_manifest.json b/src/server/public/models/face_landmark_68_model-weights_manifest.json new file mode 100644 index 000000000..0fe27075f --- /dev/null +++ b/src/server/public/models/face_landmark_68_model-weights_manifest.json @@ -0,0 +1 @@ +[{"weights":[{"name":"dense0/conv0/filters","shape":[3,3,3,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004853619781194949,"min":-0.5872879935245888}},{"name":"dense0/conv0/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004396426443960153,"min":-0.7298067896973853}},{"name":"dense0/conv1/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00635151559231328,"min":-0.5589333721235686}},{"name":"dense0/conv1/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.009354315552057004,"min":-1.2628325995276957}},{"name":"dense0/conv1/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0029380727048013726,"min":-0.5846764682554731}},{"name":"dense0/conv2/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0049374802439820535,"min":-0.6171850304977566}},{"name":"dense0/conv2/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.009941946758943446,"min":-1.3421628124573652}},{"name":"dense0/conv2/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0030300481062309416,"min":-0.5272283704841838}},{"name":"dense0/conv3/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005672684837790097,"min":-0.7431217137505026}},{"name":"dense0/conv3/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010712201455060173,"min":-1.5639814124387852}},{"name":"dense0/conv3/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0030966934035806097,"min":-0.3839899820439956}},{"name":"dense1/conv0/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0039155554537679636,"min":-0.48161332081345953}},{"name":"dense1/conv0/pointwise_filter","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01023082966898002,"min":-1.094698774580862}},{"name":"dense1/conv0/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0027264176630506327,"min":-0.3871513081531898}},{"name":"dense1/conv1/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004583378632863362,"min":-0.5454220573107401}},{"name":"dense1/conv1/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00915846403907327,"min":-1.117332612766939}},{"name":"dense1/conv1/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003091680419211294,"min":-0.5966943209077797}},{"name":"dense1/conv2/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005407439727409214,"min":-0.708374604290607}},{"name":"dense1/conv2/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00946493943532308,"min":-1.2399070660273235}},{"name":"dense1/conv2/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004409168514550901,"min":-0.9788354102303}},{"name":"dense1/conv3/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004478132958505668,"min":-0.6493292789833219}},{"name":"dense1/conv3/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011063695888893277,"min":-1.2501976354449402}},{"name":"dense1/conv3/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003909627596537272,"min":-0.6646366914113363}},{"name":"dense2/conv0/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003213915404151468,"min":-0.3374611174359041}},{"name":"dense2/conv0/pointwise_filter","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010917326048308728,"min":-1.4520043644250609}},{"name":"dense2/conv0/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002800439152063108,"min":-0.38085972468058266}},{"name":"dense2/conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0050568851770139206,"min":-0.6927932692509071}},{"name":"dense2/conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01074961213504567,"min":-1.3222022926106174}},{"name":"dense2/conv1/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0030654204242369708,"min":-0.5487102559384177}},{"name":"dense2/conv2/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00591809165244009,"min":-0.917304206128214}},{"name":"dense2/conv2/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.01092823346455892,"min":-1.366029183069865}},{"name":"dense2/conv2/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002681120470458386,"min":-0.36463238398234055}},{"name":"dense2/conv3/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0048311497650894465,"min":-0.5797379718107336}},{"name":"dense2/conv3/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.011227761062921263,"min":-1.4483811771168429}},{"name":"dense2/conv3/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0034643323982463162,"min":-0.3360402426298927}},{"name":"dense3/conv0/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003394978887894574,"min":-0.49227193874471326}},{"name":"dense3/conv0/pointwise_filter","shape":[1,1,128,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010051267287310432,"min":-1.2765109454884247}},{"name":"dense3/conv0/bias","shape":[256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003142924752889895,"min":-0.4588670139219247}},{"name":"dense3/conv1/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00448304671867221,"min":-0.5872791201460595}},{"name":"dense3/conv1/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.016063522357566685,"min":-2.3613377865623026}},{"name":"dense3/conv1/bias","shape":[256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00287135781026354,"min":-0.47664539650374765}},{"name":"dense3/conv2/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006002906724518421,"min":-0.7923836876364315}},{"name":"dense3/conv2/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.017087187019048954,"min":-1.6061955797906016}},{"name":"dense3/conv2/bias","shape":[256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003124481205846749,"min":-0.46242321846531886}},{"name":"dense3/conv3/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006576311588287353,"min":-1.0193282961845398}},{"name":"dense3/conv3/pointwise_filter","shape":[1,1,256,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.015590153955945782,"min":-1.99553970636106}},{"name":"dense3/conv3/bias","shape":[256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004453541601405424,"min":-0.6546706154065973}},{"name":"fc/weights","shape":[256,136],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.010417488509533453,"min":-1.500118345372817}},{"name":"fc/bias","shape":[136],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0025084222648658005,"min":0.07683877646923065}}],"paths":["face_landmark_68_model-shard1"]}] \ No newline at end of file diff --git a/src/server/public/models/face_landmark_68_tiny_model-shard1 b/src/server/public/models/face_landmark_68_tiny_model-shard1 new file mode 100644 index 000000000..f04a9d5ec Binary files /dev/null and b/src/server/public/models/face_landmark_68_tiny_model-shard1 differ diff --git a/src/server/public/models/face_landmark_68_tiny_model-weights_manifest.json b/src/server/public/models/face_landmark_68_tiny_model-weights_manifest.json new file mode 100644 index 000000000..5dc790e48 --- /dev/null +++ b/src/server/public/models/face_landmark_68_tiny_model-weights_manifest.json @@ -0,0 +1 @@ +[{"weights":[{"name":"dense0/conv0/filters","shape":[3,3,3,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008194216092427571,"min":-0.9423348506291708}},{"name":"dense0/conv0/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006839508168837603,"min":-0.8412595047670252}},{"name":"dense0/conv1/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.009194007106855804,"min":-1.2779669878529567}},{"name":"dense0/conv1/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0036026100317637128,"min":-0.3170296827952067}},{"name":"dense0/conv1/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.000740380117706224,"min":-0.06367269012273527}},{"name":"dense0/conv2/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":1,"min":0}},{"name":"dense0/conv2/pointwise_filter","shape":[1,1,32,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":1,"min":0}},{"name":"dense0/conv2/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0037702228508743585,"min":-0.6220867703942692}},{"name":"dense1/conv0/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0033707996209462483,"min":-0.421349952618281}},{"name":"dense1/conv0/pointwise_filter","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.014611541991140328,"min":-1.8556658328748217}},{"name":"dense1/conv0/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002832523046755323,"min":-0.30307996600281956}},{"name":"dense1/conv1/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006593170586754294,"min":-0.6329443763284123}},{"name":"dense1/conv1/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.012215249211180444,"min":-1.6001976466646382}},{"name":"dense1/conv1/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002384825547536214,"min":-0.3028728445370992}},{"name":"dense1/conv2/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005859645441466687,"min":-0.7617539073906693}},{"name":"dense1/conv2/pointwise_filter","shape":[1,1,64,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.013121426806730382,"min":-1.7845140457153321}},{"name":"dense1/conv2/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0032247188044529336,"min":-0.46435950784122243}},{"name":"dense2/conv0/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002659512618008782,"min":-0.32977956463308894}},{"name":"dense2/conv0/pointwise_filter","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.015499923743453681,"min":-1.9839902391620712}},{"name":"dense2/conv0/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0032450980999890497,"min":-0.522460794098237}},{"name":"dense2/conv1/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005911862382701799,"min":-0.792189559282041}},{"name":"dense2/conv1/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.021025861478319356,"min":-2.2077154552235325}},{"name":"dense2/conv1/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.00349616945958605,"min":-0.46149436866535865}},{"name":"dense2/conv2/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008104994250278847,"min":-1.013124281284856}},{"name":"dense2/conv2/pointwise_filter","shape":[1,1,128,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.029337059282789044,"min":-3.5791212325002633}},{"name":"dense2/conv2/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0038808938334969913,"min":-0.4230174278511721}},{"name":"fc/weights","shape":[128,136],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.014016061670639936,"min":-1.8921683255363912}},{"name":"fc/bias","shape":[136],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0029505149698724935,"min":0.088760145008564}}],"paths":["face_landmark_68_tiny_model-shard1"]}] \ No newline at end of file diff --git a/src/server/public/models/face_recognition_model-shard1 b/src/server/public/models/face_recognition_model-shard1 new file mode 100644 index 000000000..3d4b3017a Binary files /dev/null and b/src/server/public/models/face_recognition_model-shard1 differ diff --git a/src/server/public/models/face_recognition_model-shard2 b/src/server/public/models/face_recognition_model-shard2 new file mode 100644 index 000000000..8a4b5fbe2 --- /dev/null +++ b/src/server/public/models/face_recognition_model-shard2 @@ -0,0 +1,6 @@ +’ˆ›Ž ™”“•›Ž—›œ—’–“›“˜Ÿ’ž“•”Œ••’•–—‘‘“˜”““˜—˜”›œ›“˜—š““–“—ŸŽ“”””ž“”Ž””“””“™–“•—”£‘”ˆ•–•—’™”‘˜›–—›‹ž› ”›œ•Ž”›“”š“˜—‹”‡‰ ™“˜‰³”•“›Š‘›”˜“›–•›š¦“–›”šŽ–•˜’“›Ž““’™”“˜“™“”’”šž¡’ “““–“™•›œ‘—–•Š”ž”••—Œ”’Ž“›š‚””‘›•›Œ˜Ÿ—Ÿ“š“”‹–™Ž…£”“–“•Žœ““•”–Ÿ‘•™•“”•‰ž–—’•‘“™—•š“˜˜‘•›•’••’–—’••“˜˜•”œ’˜‰–—’”“’—’“——•”—š“”“£“””””“™”••’”‘–¡–¦•­•¡Ÿš””’•™•–•šš‘•›•“™•’”—‘¡•›—“”‘“’˜’‘˜“’‘”“—”Ž”•›”˜—‘’˜“œ‘œ•™“““•™’š“•“Ž•š—š•ž‘–˜’“”’’Žœ“’“’“•‘•§”’™›“•Ž”—˜••‘”“™””–“šœ›š“š’’”•’– ”•®˜”“–™š†”“”“——‹“–Ž’““’“ޕޗ ™–•“–šž‹’Ž”ˆ‘”˜š••——”š•—”•“’—‘™š“˜œ˜”’‘•˜˜‘“™••’™““•™““—“—˜’“–™—— –‘–Œ’—“”“••“¯——”•™’•”‘’“š˜‰‘“’—•˜˜””˜’“””“™“—”š–“Œ“‘’•˜•”––’–—’Ÿ “•““œ•“™““••Ÿ’–””–””œ““ŸŒ˜‹’Ž——“—™’Ž˜‘˜“’“‘“—’’–’ “™’•–””—š™“˜“”™›ž“›”›‘““‘’Ž—“““œ””—–“ˆ˜•’“•š¦ƒœ’“’Š–Š“ž˜–Ÿšƒ‹–”™•”——”ˆ’š©”’˜˜ •›“™œ’“”“†—’Ÿ’š‘””›””’“Œ“’¢“•–‘˜‹™„šrŒ–›•‘’“Œ””›•‡‘™›˜—’“—Š…›’“‘‹ˆ’™–“—“–›˜œ^Œ•“ƒ“’”“‡”„‚““–—𓙇ˆ—‹“‘’•šš“’“›”Œ„†‰„‘““’”›”~•¤‰˜’Ž“”˜€‰˜““Œˆ™–©•—Ф”’†‰ƒ˜‘†’‹‘’’”—›”„•œ™Œ‘˜ˆ˜¡žŽ“’”›–”˜Ÿ¡™—““›œ•”Ž•“•›š˜‘—Ÿ“’›››”Ÿ™›–›Ÿ ™šŸ™““““‘’””›˜“‹’š“ œ˜“”™”—•†•˜ž’š’““Š™”“–“——™””›••˜™‘•œ™‹ž˜–”“˜—––š–Ž™ž–™•””—˜“““˜ ™—”ž¡ ”œœ…°—•’š¡¢’““–˜¤–œ•š¢™˜•ž•’˜•£¡›ž”žœ¡™’˜“•›”—›œœš˜š–™’’“™¡˜›—ž” š’žŸ—”ž›› ™“ –—¢”—“¥—”š—–ƒ•“™”“—›‘™œ—œ¦›˜–““™–““–˜•–’‘™¥—“’Ž•Ÿ™”‘Ÿ –™‘ž”›‰š˜•œžšœ¡•“—›•—“ œ•“£˜œ”’¡—‘“žŸž““—‘™œ•¡œ›’’““›‘”’š“˜›£•‘š¥˜••–‘œ–¤š““šš›—••‘”™œ•Œ–•Ž“’•ޙ𔔖—››–Ÿ›™“›”“—“—œ›š–˜š”Œ”šŽ˜”“›™“žž•¡“•“’›“ŸŸ¢›£ž”“““š™•œœ“–’”š•¡““šž–“šœˆ‘ŸŸ‡’–“–›¢œ˜›ŸšŸ‘–’•ž›’š™›’’”‘–˜›  ““““™’•œš”˜”“˜•—˜–Ž˜—§——“–‘˜—‘œ“’‘˜’™›˜š•˜˜””™”–”•‘“—•”˜•“’”—“”—””––‘’™“—Ž“”™›”“”””–•—”“––•—’•™™––”–‘™—˜ž ˜›““––”“•’“”‹–š™™”“”™™—“•Ž‘””“˜¤›•”š“–”””‘˜”™”Ž•›œ”Ÿ”›Ž›—™“”™›”—“š’”›•”–˜”—–’“–›˜›—”›•–˜”•‘œ“–š“£™’•Ÿ”–”˜”–’’”š•”™“•••”’š—œ‘Ž˜š—•–—–””“›š‰~£˜‡““”•§†”¢™“š™Ÿ™Ÿ™‘œ›‡›˜ŽŒ•”œ•š–––’’’’– “™“”•–’”™Ÿ’Ž“™—™”˜†’š–’“¡•“’™“Œ –›’—š—Ž—Š™˜€¢¡˜”š’›™––‘Ž»‘‘š”•’ŽŽ‹Ÿ’š“’³‘œ“¢¤”–•›¬‘•’žš‘“Œ“‘š––™ªž”–”›”Ÿ–•™œœ“Œ¥”ž—““’’“”Ÿ ‘ž˜Ž’“’š—„–›˜š™‘™’Ÿ•¡}”˜Ÿ•šœ“—–•“””šŒ–—“™¡”‘““““›Žš“†‘›™—Ÿž˜š¢Ÿ““™’•’•Ž’œ“““‘¡šž“—‰˜‘–˜Ÿš–œœ ––—›ŒŒ —‘’—”’š¡‹Œ›—’“‡’’˜˜’‘Žšœ“›•“›˜–’’Ž”“’ž“œ’’••–š–™˜–ž‘”•“•“•—œ•”‘ž‡Ž—‘™Ž”’˜˜’”•“”Ÿš”•’—Œ™™šŠ™“’–š—’œ’˜’¡Žœ‹Ž”–”š–“œ™”–›“˜‹–Œ–’š’—“˜•’’›•šš’”—œš •””™””ˆ““‹”š–—’”ž—“—“‘˜–”šŸ”™•’˜’”——”“™““˜‹”•––š—–“’––•“–’™””““—¤‘”‘—•”¤œ’˜’›”’˜–š–—˜–”ž“”“’’”–‘” —““™™™•œ–’”•““”™“‘“›˜‘””•——““•‘”“˜“™œ˜š—Š—˜•˜—˜‰––‘””““–Ÿž“”’ŽŒ’ž’“”ž’š—““˜”‘——”’““””“ž—ƒ–—“›‘”“”’“™’‡–‚™•’’“Ž–™“’‘•™—“˜“”‘–“”“•”•”˜•œ—š‘—’““’¡Šœ–š‰“”‘””šœž“’•’’†”›•œ““‘—•—–•“’’’”’’”œ— –‘–‰Ÿš’—žŽ˜““”–•‰”Žœ™“’”œ–™™™”‘™”•“‘–›—’›•’•œ—““—šž˜’•—–“™Ÿ‹—“’Ÿ–’“•“‘š—š—šš“–•–““–”“’”“˜——ž‘˜ž‘‰—¥•—•’—“©“’™Ÿš•›™˜™””‘”œ’›–™› Ž””™“ˆ“™–•“’š”•š“™“‹•œ™—‘•”“’šž“›˜™œ’“š—˜•“œ“›˜‘šš—œ——•”’’• —šœš—•”™”–“›™‹“œŸ‘“›š™”™–“•“˜–‘’›˜¢¡˜”’’™™›œ•˜•šš–˜—›“žŽ™““–”›™–”™””““ ”“•˜˜˜™œ”™”›“˜›“™š™”“œ›””””“˜—”–—““ ™–“š–“Ž•““˜š“””•”™””—™“•Ž“”‘”•“’”—𔢓—“›”–š”›”˜”—””œ”•šŸ“—”¢””—“œ•ž–•Ž“”—•—š–””””•“”‘…””“ž•”“”””œ“—•šŸ”›š’™›““”””–›“Ÿ“”Š•“•“—““–™™¢–˜•‘—“”›¥–•›•”“”•“”šŽ”“•“•“–“šœ‘“””™•˜™”’Ž””“““–—’“šŽ”•¨’”Ÿšœš”—“”’—‘š”–˜’””˜’•–’“š˜—“š•–—š’™˜”“‹˜ž—˜—˜—“›—“›—“”—’˜—˜’”“•—”•‘˜•–—˜‘’™•“””””“š”–˜–š—˜“‘“‰™”–˜œ”‚•–—–•”–’œ”–—•Š”ž”š•–š•‹™””•’›’”›”“Ÿ’”˜˜˜—“•”–•—™“–“”–“„•—”›™”›—”˜—”’‘”””˜‘“””––—››š–““œ˜˜”•–“’”–“•”—‹”‘“””˜–”œšŽ””““——š™›—Ÿ›š“•“”–““”–•–˜—“š™”““—–”Ž””’”“Ž–“—š—“”“’™”—’›””œ˜“š“•“’š”“˜ž’“™–•””‘Ž•“—”–’š“––œ‹•–•““¤“”“š”Ž””“—œ™—Œ”¢—•—¡˜”œž•“•—”—•”™•©•‘‹“—Œ–”œ›—”””–”•›”““•”•““•“”’‰–ˆ› ’•••‘ž›’•”‘”ޔޓ’‹š““•‘“–›™››–˜‘–“”•™˜šš‘‘’“•›š“”–—•Ž“‹’ˆ’‘“š”’•™š•“Ž””“Ž““˜™•–Œ•ž›‘Œ““““š”•Ÿ–’’”š˜™—–›”™–•’“—œ‘’™•š–œ–ž‘Œ“‘””‘•›‘‘œ™™˜ •š•›’’›¡’•˜Ÿ•–•—’œ“–™’’‚’“’˜’™˜–›’™˜–˜•—‘—“‘”’“’š•œ–œ••–‘œ•–Žž ’–—˜™–—˜•”ŽŽš™‘˜Š•˜’¡‰”’š’’•–—™—’‘“‹”Ž’Ž“ˆ•¡’¦’Ž™’‘’””’™¡›—šš›‘’“›œ’—˜šœ‹’’š–“œ““˜’‘•›Ÿ‘‘œ•“‹”ššŸž•˜”’›‘“ Ÿš š›—ˆ”¡œ›—‘’’•š›‰ŽŸ”““•–”“”™•˜’š’—””—‹—™œŽŒ™’“•‘”’–’™•‘“›œ¡“¬›“šŒ“—”š”•˜‘˜ž˜ž”–‰’““‰’““–““”•“™‘‘‘™p‘›‘’™Š¤œ“°“—–Ž“——£”Žœ••˜–Œ”’˜Ž‘‹—”ŽŽ¡”Ÿ–•““‹‘›“˜“‘‘ž–Ž—˜“¬ž’š“‹—¥“ž‘•›ž“•“Ÿ‘”“–—›˜—”’“ž™“‰–™”—–œŽ–™“““˜–”Ž‘Ÿœ¡”˜“¡™“šŽ˜ž’’‘˜—–“‘¢’ޕ𛒔“““–•‘„—š”’’’—˜˜š‘•“”‹—–’’•”š—”•••˜˜——Ÿ˜•—“Ž•”“š˜––™šžŽ“•‘™“™“›—‹•™—“‘‘’“““’”’”“’”•’“’–”’†—†“œ”˜™”’˜•œ‹ŒŒ—Š’Œ•™Œ”•“•›™“¥™’”˜›—˜•˜ ‘’•“˜–”™“Ž”–›–Ž’”š•”’–“–“”•—ˆ”“Ÿ–—–“““””‹’—”˜˜•˜‘“““’‰——œ–“‘™’–”–•”œ—˜””•™“˜›–“””•‘™“’•‘–™’Ž˜’œ”˜–‘——”¡““–™•––˜“ž“““’ŸŸ–•¤˜•–š“•š›—•–—Žš—”–™”•“˜¢”“œž“”™š”–“››–”’”˜ ›“œ“—••–““—””“œ“ž˜‘•“Ÿ›‘•”ºœ‘š—”Ÿ”–›—’˜‘—”“•—Ÿ”˜Œ¡“›˜’’Ž‘”’™˜“žŒz‘“’˜˜š“–”‘œ•–““•‘“‘¤“”–‘““—›“–™“™“’’•™›˜”œš’“”““‘’ž¤£˜œ–”˜˜‘‘™›“šŸ˜“—““™š¨“”“Ž•ž”ž•š˜– ’˜’”ž–„žœ‹–š”’— ›““Ž“—œ˜™œ‘”“’£“˜•’‘¡™–‹œ•™•–™—•š‘—‘›”‘”’Ž’˜•”™“–“Ÿš—•˜ˆŽŽ”˜”˜œ‘•”‰“š—”””𔕓›”¡—”Ÿ–‘šž“˜“—’“š”Œ”¤–šœ•——‘‹•’‹‹’•“”’Œ”–”‘š–Ž–”™˜—“–™ ‘“™™•‹”“”—˜—•¡”’’œ›’”“¢ž”œ‘–”“Ž“••”œš” £™’•””¡•‘’“œ’‘“‘——–ž–”•“›ˆ”“¢˜”•”¡››¦œ’Ž˜ˆ”’“”˜–•š˜ŽŽš–‘šž˜›•”””š•—˜––“””•—–œ‘”Š­’•ˆ˜—’œŸ¢–•šŠ••‘—””’Ž˜”ˆ”“”™‹——”“‘Œ“’”–”™‹‹•‘˜›“”­˜”“”•Œ”œ›”–ž›š“£“©ŸŒ—•†“‘¢•›­”˜†‡“¾‰““”œŸŽ˜‹”“žŽ‘™™®•”“Ÿ—’”™“‡‘‘”ˆ”—“«•|—”˜˜–Ž”¡’˜‰”Ž”•š“‹“œŽ~š™”““š›”‘“•™”„—ž£©•”ˆž”•v—’Œ«”“–š‡˜’†Œ”’”“Ÿœžž•ˆ”š•—š””¤•ŽŽ•œš“”“—–˜ž”™“—–™”–‘˜›˜”Ž—”Ÿ–•˜“•”›“—™“’–•𔑓—”““—˜”™’žš•Ž‘–•””““›•”““‘——’‘˜š“ˆ—›•–š™™”” ”•”Ÿ–‹™—ƒ”‹” Ž’•“’š•––—‘”•—œ’–›—†œ’“™š“““’””‘˜‰’š˜“’”œš–•—–—Ž”•”˜–”–“–—’’Ž˜¢–—’“””‰—’–œ˜™“›‘•Œ” ””•”‘””™”š””˜”„››—™˜“‚Ÿ”’˜“”‘˜Œ–Ž•‘’Š•“Ž•””—›““š•”š†”›˜’““’“Ÿœ–˜œ”•—™”œ–žŸ’›™”—”˜™“–‘™—•™““œ›š’‘𔑓““œ–”˜“œ—“••™‹”ž“”Ÿ“““™“••”œ—š˜—”™—–’”š””›”–˜›œ˜•–›¥˜¡•“––”“ š“š¢š–”‘’˜”—˜œ‘•“˜’”˜”𔕔••—™—’”—••š“”’“‘œ“•“•𔕔ž•—™—š›™˜‘›”““š”œ–˜‘•–“’“”˜”’’–—‘š›”˜˜Ž•”“”œ•–›•–‹“”—”“–’”’’• —••˜š™žš”” •–¡·—š—•““”ž’”¢œ•œ•š””‘Ÿ•––‘”—‘š™’•—–›”˜’“““ž•—•›“›–“‘—–“œ—™žŸ˜“’š––““ž•”“š“œ™˜““¤”–žžŸ•”—™•”®’•‘“¡™“}™‡œ‘œ•’©–ž“’›ž›Ÿ™”—”—šœ–“›—ž˜’“”’“”’“Ÿ–šœ¦–‰—›–”—’•““‘”˜’“‘˜”•˜“¥“™–•””š›Ÿ•””“••›ž–ž’•”‘œ“˜›˜”“•šš•™Ÿ˜’žŸŠ“–”¡“Ÿœœ–•‘’“¦’“———–œ—”™—–”••˜›“““›–—y›™“’’—˜˜Ž›–—–”š“œ™™–‘—–œ”š›š–›‘“š’–¡”’›˜™™ž™”™œ’™•—““—šš™’Ž¡–›‘’’¥Ÿ’‘š’“”—™š›˜ž“ƒ™™›Ÿ—˜“”š˜›’š“˜ ‘–•—•‡œ——’—”›œ‹’•š¡–™›¡Š–“’˜’••’¡“™•–˜”–•”›™’‘’‘’ˆ—™’˜›Ž“‹’š’–”‘•–”˜Ÿš•—’“˜™š†’–’‘““˜‘‘˜šy“”Œ•ž ‘“Ÿ£“˜“”˜Ÿ™”™›š‘‘’Ž˜˜’——•¥—˜–›š™ž–’’“”–’ž•žŠ˜’“ޱ‘™—’”—•‘˜ž˜˜‘Ž‘“’•‡“™š›•”•œ““–“‰¦”™——™˜“™—¥”Ž—›¨œ›ž’Ž”’•““ž˜”’““”–—šœ—š‡’—€—™”£›”¢–™™Œ˜–œ““•› “”ƒ¢–““ ™’œ–š’”–œš—˜•’“¢–šŸ“›“š–™’–“•™“‰Ž¢¡Ÿ•™˜”•–›–““œ“›”’œ‡œ™˜”’““š—””‹§””™ž–˜™‹”–‹“™”“”…”š“˜›“•™—š‹ ¥’œ“”œŽ–™˜¥‹—”šŸ—¤•®““˜“’—ž‘‘”“““””“’…‘™–™”‘““”’—•ˆ™•’’‘›¢“’”“•—Œ•—’’Ž˜“”˜””“•Ÿ—“•“”’–”–š–’““‘““’•“”—“™’‘”˜ŽŽ•›“’‘“”˜””’𙕇“ˆ’••”‘“–”“–”š”š”’’–—””ƒ›™““˜””—“•’—•—š”—“•–“–•‹’—“•œ–““”’Ž’’“š““”˜ŒŽ““˜“”“™• ’”‘””•š’‘•’Ž“””™Œ“’œ…••’”–˜—˜–‘™–“”““™’œ’‡””–’•˜““•š–•Ž™˜•˜”““––“›‘–—’–•’™œ“™™™Ÿš–“”’‘–••“•“•Ž“””—˜ž›•‘‘“—”˜“—”“—••š›”’”•—“””©•””‘””’””˜‘›Ž“Ž’•™•™•˜•–’”“˜™¤”‘ ’““‘ž’’””‘”•𦖔œš—••”¥••””ššš‘”””˜•”–’™•˜–™•—–‘•’“–’š”›š–••”™”˜’•‘™‘™™˜œ“””™™“›•ž’”›‘’—›“•”˜”“š™Ž‘“›•‘““””œŽ•˜•™“ “” “•Ž“˜–••žŽ“™•••–œ’””‘–”—–‘”““’‘•Œ“•””Šš“Ž”–‘–•Ž”••ž—•–“••›š“š˜“’•›–•”“‘–““—”’•Ž™••–’Œ–•˜““œ””’ž“—•š”˜œ”•šŸ’•‹˜”–”Ž‘•ž™ˆ™”‡–œ™”˜•—™—‘“–‹Ž“›–“•“–—”””›Œ’“’”••“”“•™˜”˜˜–”““œ“–•”š““”–•›“”“–•’–›Ž’Ž––‘˜“”••¨˜Œ˜•“”™’”¦‘®“–”‘••’“•˜“””‘‘Š––—ž˜•“•““ ‡•””‰˜•””›œ“‰““•”“’““’‘‹•”‰”“Ž™‹“‘›—‘‰š“•¢˜‘œ—’“”Œ–“’”‡|””’–“•ГЕ‡Œ›‘™™‘Ž“’“˜Ž“’‡“‘ŽŠ”’—’š–œ‘Ž˜”ž””‘—Žœ¢”…˜’‘ŠŽ“¢‡‘¡“’“•–“’›œ”‘“˜—‘““–˜š–œ˜˜˜›“ —‚’™£ –‹“–™›”‹’–“’‘’”–‹•˜’”•—’‹“œ›˜Š•˜‰’“”™‘“—š˜™’“”“”•”—Š–›–’“’Š—“—••›’Œ”Ž–‘““•™™—˜›““”“𛕋¢‘›š™“Œ“™’›’—––™“˜•”“Ÿ˜”™ˆ’’Œœ‘•‹Ž’•“•›•“˜•šŒ™œ–Žš›““¢–““œ““œ”–š—•—›˜“••ž˜”¤–“–“™–”|“š ”––™›Ž““—ŽŽ–”–”˜’–•£›‘““™–”“•“—š›™›—™“•¥–Ÿ”’–•¢›””–—“š“›“–’›š–˜˜˜–œ–“”“”’–’š‹––’£–›“’•“” ™˜”–ƒ”–•Š•™“œž–˜•˜–”’““ž“”›™™—–—™š˜•š“““”œ“””Ž”–†•š’’”–š‘Ž•—Ž–“–’”œ‘•ˆ›–š“•‘†™‘”“’˜•’“–Ÿš“˜“™‘’Š™™’‘˜—˜“–’“›“¥’“‘““’—“™‘™’œ“š”›Œ•Šš™›–“¬Œ›–““—Žš–—Ž™“Ÿ“–’’œ‡œ—–Œ—“’”“—ƒ¦—Ÿ’™‹Œ’“–‘””˜™‘˜˜“¼’•“ŠŒ—”“•—Ž›–“•“’•“—“—ž™‘˜’’š•’”’‰•™’• “’”‘—‘“•Ž“‹”’’–›—•—””‡”‘‘“““Ž–˜Š›–›š–‹”–––‘—““Ž’“ž·—¢ —““”–Ÿ¬œ”œŽ‘Ÿ™•¢˜¢““›£œ–™œ“–ž•’Ž—•’š˜‹•”“Š““˜œ™”¥–£’•™™•—””£—”“›”›š˜–’  ’{”’ž˜—— •”Ÿ”‰–“«œ—r“™ˆšŸ•‚ž™•“”¡¡™¡”Œ›• –š—˜›£˜–’šž˜—“’”›™“”™••Œ”_£š–››–‡”Ž–™“¡“•“–’“£Ÿ—œ©›Œ“”•›˜¤•¦œšš˜š—™ ›•”š¨œš™—Œ”žœ”š’˜ž¤Ÿ•š“›’”¥”“‘Ž‚–ˆ‘˜” ›Ÿ’”¥““Žš”›•’““–—”˜œŽ“”›’›’™’–™•™‡•–•žŒ–•”›–‘“•“’—•“’–“Š–’–‘’““Šš“ž––˜š•’›Ÿ“““š““–“˜—š–™–™—˜™›š˜Ÿ—™”˜“™›Ÿ˜‘™“””¨›Œ›“Œ–𢆛“—™˜• •œ––•“–¡“•“š“–—œ™–”•›˜—”Š”—“’šž’‘“•‘šŒ›“š““—’‘“““›“™““’’”š‘Žš••™œ‘˜¡™–“”’™–œ–˜ž‘˜•Œ“›”—‘ž—•“™•“š“’Ž’‘–›“¥“Ž•Ÿ’–•–Œœ“”–‘•‘••–““˜˜›—˜˜–š™”››“—“˜˜–™—˜ ŽŸš”‰“‘“—š”“Ÿ•––’‘–““—”–•™—“’“—”•–“““–“““š“˜”—”“š™—‘‘¡•˜›”™““’‘–œœ•—šœ••—–”›’Œ™“’”–”–•’–““‘“›‘––“˜“‘“““’š•—Ž‘“”…‘–‘“‘‘™œ“˜Œ”™’’”Ž”˜š™œ™–“‘“•™—“Œ˜™”‹™”š—”›š“’˜˜–” œ—““––—™“™—››““¡’–›”“”‘œŸ‰“”™–›˜““‘–™Œ™“•––””• ™˜š“›’˜”ž–”˜šž–”–”™–—”––—“•‘“˜˜š’˜’‘˜”“”“—”””•›Ž’”›š•™Š“”‘•”“•”•••™–š”—Žž•–––ž””’“–›œ–”—ŠŽ›“‡•š“—“’’•’˜“”˜”˜––’–Ÿ‘‘”•“¡›˜’“–”•’œ–”•™”’˜”–›–•—˜˜•—”Ÿ’–—š“”““–’–œ™ šŽ™‘“”›—›ž–”“—’•—•šŸ””˜˜›‘•”•’–“˜˜’—Œœ–’”˜””™›’––‡•–š˜˜•“”“‡’”’˜“‹‘“”“—•’•–Ž—œ–˜”‘•—‘Œ’“’“››•”–”•““—’”“’ž˜“”’—““”—•“•‘’””•–“’•““”‘’”“™”˜•—˜ž’‘“–—ž™•’’––”’—•”“—“•†”ˆ›”™”““”š“˜“”›”ž”’”“‘‘‘“’ž›•“‘“•”””“˜’––˜‘•™”“˜”—•‘Ÿ“•’’•“—”œ“˜”‘•›–“““•‘—‰––””•’ž’ˆ••”‘–’–‘𛔙𕓔”“’˜——˜”“–””˜”•𔕑ޓ‘•–‘’—•“•’™“”—–‘‹™•œ““ž‘œ›š’ ——ŽŒ”•Ž–˜•‘‡¯¡’ ‘†•’“ž““¤—’ˆ”–“”—Ž”‘Œ‹‹˜” ž–˜–“”›š”“™”‘˜˜šœ™–¤˜‹”¶œ–Ÿ™“˜”Ž“•Ÿ¥‡—“˜š›ˆ—‹•©†ˆ“““…˜–š„—“™™‹‰’€„ž““”¡™““˜”–Ž“—––Ž”•”ˆ–•›ŸŒŸ–””—““œˆ”›“£Ÿ“™¢”““”•‘Œ•œ‰•š–”–”“‡žš”–œ¢Œž®“œ“œ”Œ›š’––œ™“Ž”“š–Ž’–—’‡”—•ŽŸ•™{”“–—‘‘”—”—˜””™–’’”–”’”•““˜˜–“˜›Ÿ•”—™”˜’–˜˜–™˜•”“’–“••Ÿš‘˜’–“•”•“’˜”’“˜–’‘•™˜““——”“’””’š•–‘‘”—’–“’––›“–”ž”’–‘’–™™“–•–’””“—•”’”–•”•™”™˜’Ž—”“—––™”˜”’™•—•“™’”–”’–—–•“‘”––˜•”“”’𔑔—“•”—•“”“—Ž–‘–—˜—˜‘––’–’”—”’—˜’”’“”˜””•’’‘–—“–˜““““““‘’”™’—’““–”“”““–“Š–žŽ””““’”š““œŽ¦“•™””Ž‘–ž–”Ž”’•–••”–š•˜—–”•’¡”–“–˜“•‘•ž”•˜””œŒ”—•””„–”“™”™”Ž”–“•†” ’•”•š••ž”“—•••“¥“™“”˜•ž“•”•–—•‘€•””—•“•”Ÿ‘”““––””””“šœ“•‘•šŸ””–”“”–”š”ˆ”““••”—”—––•”’Ž”•–“˜”••—’• •–””œ˜•”–“”„”•”’‘““‘•¡’•”‘””’Ž˜—›•‘™•–”—˜•’””ˆ–ž’™Ž—’’‘’”–”––—˜‡š†’“—”•”˜œ™››’–’”“•‘š•™’–—’‘“”““––––˜™“”™’’Š•“’–’™‘™•••—ŽŒ”’™•›–“Ž‘•–˜””‘‘“‰“‹””Œ˜Œ’–ŒŠŽŠ•—“™––“˜Œž˜‘’š™—•’‘“•—˜Œš—•š‘•“”’‘——™——“—›—šœ’’•–“œ•–œ˜”š—Ž’““•‘˜‘•—™Ž”–”˜—“š’–˜“’’š}“–’””‘˜”™—’–‘‘”—•˜–’›Œ‹—˜•‘’”‘’’“——¥ž–“•’””’–”šŽ—•‰—––•—•œ•—‰˜˜–“Ž›“——’–—””•“”•–ž“•–“–““›”•˜›‘—™–•’‘““š’”““”—•’“’“–––š˜’•œ•˜™•~““’—˜˜’…“˜¤˜•“›²’’”™™•’˜—š““‘™’‘——“”š––”“”›•–‘š“––””•“•“““‘’””›˜”Žœ“§”–•”–—“˜˜™’—Ž”“”–’Ž‘–“•“‘”•—’–”•‘•‘–‘‘“¢˜Œ”’”ž–“š•”™—›“«””™˜›”š•“Ž“‘”’”—˜‘“”˜“•œ—––“““–—“•¥–—™“—˜Œ’¦š™š‘ž’’›™ž”–™““›”“—˜¦™“‘—ž“›‘“™—”“–œ”•—““ š“’–“”“–”¡”œ”œ˜“Œ’™•—”˜“”•—’˜–Ž—®™•“›’”„•“˜•— —‘£œ“˜—š–š˜ŒŸš”“•–𙓛““˜——š›——“—”ª—‘š˜“œ•“”™—”ˆ““””““›“–—™šœ”“”›‘™—›—˜™•’•’”Ž“š—”ž–’”Ž›•“˜“–œ•–—œ‹šœ’’•Š–˜•”–•ª˜•˜“˜”—˜œ““›•—¢”–””””—””’¤””’š’˜”““™’“›‘Ž”••—›–™”•’—œ”›‘”“’›——–˜ •“–•—“–””œ’’—š“–’”””š”“˜”“™——’ “–” £™–•–’•“𔓙œ– ž””¥ – “”˜••‰–•”’™—’›‹š’“‘–“‘”’”˜‘™š˜Ž•Ÿœ”˜’—”“™‘œ—”–•” ”“”’“™“™’“•—’“•˜—•’“—”–“””–”“›•˜”¢Ÿ“›”““˜•Ÿ˜š•—–Š—”ž”“•–ž››””™““˜”—“’™””““Šƒ”Ž“””“›‘’š’”’˜”•Œ‘•–£”–‘˜–—™••”——–””’”“’›‰ŸŒ””—“”™–”‘•••“’—”‘““›’“““’”˜•‘›“–Ž“©–••–’”™“‘–•”“‰–‹‰š‘”˜‹“’Ž’‹˜””—“•™˜–•”–’˜”“š––“‘“”“˜——•‘–”’”›–’’“—˜˜”“–™—•”“ ™”’•ž‘š“““Œš–ž’‘—–”–’š‘œ””•Ž“’˜•œ•Š˜ž”—”™Ž‘™””˜–’“““•–‘’‘‘•Š‹”•”•’š“““•–‘‚“™˜•““’Ÿ”–”š›–¢˜“–”“•˜’Ž—•–’””˜–””””••“”””“˜”™“’–“”–“•—™“’•“›˜”•——“–“““‘•”“‘“™™“œ——“›•˜‘•”œ“œ•”™“˜š•““­—™““••–›“•˜‘”–—‰•”””–“”𓆒”“ž”–”“”“”“‘›˜›”•—–Ž—””•““œ” •”—˜“—“˜”“–”“¡˜”™–““—ŸœŸ™˜””“•’’”›—©””’’•”“™“š˜”””“ž—‘•™–’–•”–““˜œœ™˜””Šœ’“š—‘”–“”œ–“““——˜’“”•™–’›–•‘œ™™š“Ž—•…š—–”“‘œ“›–“Œ—”“˜”‘”’š¡““‘†š““”ž–”—œ‘˜™›•š˜““œ—““™“™š—˜—’™™›‹“™“˜“™•”‘“–™š’Ž—•”—Š•”ž‘—’“““’–˜œ“œš™‹™š‹™–•“–Ÿ™“•”“Ž™”™••˜—”•˜—•”š•œ–“–’•›•“““’’‘››™™˜”ž™’“””š’–ž——˜’•™—™”’––Ÿ•—‘™““™“˜˜”–”™‘›’“”“”˜›”•™•šœ’“–˜—–—˜•““•—•—™•Ÿ •““’¤›šš‘–—š”—–œ˜¡œ˜”˜šš“—™”›š“ž‘“ œ›“«˜’”““˜˜›”””ž›™š˜“š’”Ž““––”“š““š” –œžš—”™• ““–˜”˜˜™žŸ–˜—–˜˜”•˜–œ’•“—› ’˜~—š”˜” ’™¢š™—–“›˜š—“™““˜ŽšŽ“™—”‰™˜”˜˜’˜”“¦••—“™“›’“”›™š—’™•˜““žŸ–𙢗”•˜“•š“””–š”› ”œŸ”–”—›–ž›¡™Ÿ¢™“•“” ˜›–—•™’—¡¢œœ•›““˜–Ž—¢“–“—”“”•’“•œ’‘Šœ–˜•”–𓕦”’’“–“–”–—“™•”“’••“•š™–“˜”“’–™Ÿ——•—–•˜””••“•”Ž˜’‘““”ž™”–•›•œ”•Ž”’“˜–•—š‘——•”Ÿž‘˜“”•™–—’•””””—˜”•–Œ›““••—–”˜”—–““Ž”œ›“‰™”–––˜Ž”“••”“œ“’•“’–˜“™•’–“•Ž›••—‘œ•——“””“”›”˜––’–š©“”™™’–”›Ž”—’’—“•˜”›“““—’™•–”–ˆ”•‹•—˜”“”‘—“|”›™œ“”“‘‘‰›•˜‡ŠŸ—œ”¤‚—§ ©šŒœ’—“–£•“–œ’•¡‘Ž…—˜“œž”Š’–—Š™—›©Œ““p””“ž“¥•’’š—™š–‰•˜˜¢œ¡””®•–¢”Œ‚’x“‹˜Š“‘‹‘’–€‹‘™rš”˜——–˜‹ƒ¡”“–˜™—“—“š˜‘¡“œš”Ž”Ø›™Ž”™–¦Š””˜•‚’“›“””•“ššœ•– –““’§ž£‚•“šž’˜…›’”˜’£™“”u”y™“˜”›•”œ‘¡˜£–’…“”˜Ÿ’£“—|›™š–›•‘““˜–™“˜“Ÿ•““‘˜™˜”š—’‘”“™Ž—™“Š–˜”Ž“™’‘–‘”’“‘˜“’˜—˜Œ–™•““”™‘’–’˜––•—”–“““’”’“Ÿ‘š‘—” ˜”“•’–“”¤“—’˜™—£’‘˜•—””˜–—“’”—’–”—””““•–’•‰ˆ‡‘’™’“”“˜’–”—Ž—’’“ ˜‘•’”““™““‘•’““”’–•™–“‰”‘™“•——‘•š““‘‘•‹’’•“š”–’’’””‰‘“’Œ’’”‘’””˜Ž——“““’—›œ™–”——‘•—•–™•Ž““‘˜‡£€—œ•”“”†›š’™˜•‹–”““”“›™—‡•š–”Ž ž–š“š•˜–”¢£”“š‘••“’–”’˜–•–•“˜›•”–˜’“”œ˜”“š“œ™˜œš˜Ÿ˜” •—–¦™˜™””’𕙓𔓖““•”˜¦‘˜“•˜›ž‘˜”–œ—“™”˜š˜‘“˜•—“””“•˜–‘’š™›•–“˜”–––”‹”“™—–š”””˜’•””•“•–’¡“”“›•›—•™”•“’›–•Ÿ•“’™˜—ž¦”š–‹”›“•œ—““•˜•““”•”“Ž˜˜˜š”˜‘–œ—‘‰”“™‘“—“—–•”“’™•’™—“Ž˜“•—‹š”ž›¨›’••’—˜˜“”š“’˜–“™‘›“™–”“–“š™Œ”š’“ŽŠ•š››”““”””“•”š’•™—”™’™’›•—””“’š“”Žš’œ‡šŽ•Œ•˜ˆ“—šš‹”–”–•–”™—•ž˜““›ž™“˜”ž˜˜———••œ“›£”“•›–”’š˜š“Œ“’•“”—›Ž™—•™’“”˜•šš™Œ––œ˜’“’”™’›˜“’’”Ž™ˆ••””˜•˜–˜’–˜“‘“”‹—‘‘™”𛑗Œ•˜‘ˆ“”•••‹˜“Žš““’”Ž“™‘‘‘’”’——˜’‘•˜‘‘Ž—•œ ‘•“‘”“”“‘”˜•“™‘˜“˜‘“‘š“”–”•‘••”““œ™”“Ž“‘“‘Ž“’’‘’”•—–‘““—’–”‘”””•Ž”“““–“•‘މ““šš“œ”’—“““’š˜““‘“”š’Ž’’”›““™’”“™“‘“’ž™““’“™”‘’•‘˜•“•”“‘Š“›”š˜—’‘“‘”“š“’’”–”’”‘Ž’–’••“’’•‘••‘’‘”’”’–‘”“•œ”“““–‘’Š—Ž™‘’“–¤’‘˜’¤–—“™’”–Ÿ“˜Žš¡’’’›•‘’¢š’’–˜‘š••’––“•˜™’”•—••‘’“““’’“—˜œ’˜“‘–Ÿ•¢’”›’‘”𙡒•’Ž–Œ”“™“˜’‘—“‰–Ž‘—”›œ—™’›’’’£–‘’Œ“—–••‘‘’š‘‘““Žš˜““š——’–“™“”–—£–“““’“Ž—™™•”’“”‘–ž”““—‘š˜‘“”–”“““™ˆ—”—“ˆ’’‘“ –”››– —™¤˜¡——’“““‘›’”––’”˜–š•““””‹—“’œ””šŽš˜“•‘Š“’•”š““‹–•“’’†”‹˜›”‘“›••”˜˜˜–”“›—“•Žž““’”“–””–Ž›™—–••y“—™›•”—‘Ž’“–•Š™›”›–“‚š–‘””™˜””¢œ•“Ž–™”’ž•¡“•Œ‘›“™“Ž˜”š“””‘•—“š™˜”‘’†“’––•“—“‹“’‹——œ–Œš”“““““Ž˜˜•”“‘š‘’¥”—–™‘–‘‘–—Œ›”–“•Ÿ”––™Š—›“”’——–’•“’•š’Œ•”œ“›““––”œ•“˜—‘”••™“•–˜—‹žž‘˜•˜•›“›•—”œ’‘“‹Ÿ›•ž’””“¡Œ“”Œ“•”›–”˜”›“Ž‘™•Œ—””Ÿ•”›”’™’— ˜š”š“ ˜–•”™’”‘–—‘—‘–~–˜™Ž–•𣒒”‘—“”šŽ–”‘”Ž˜‘“›š“–•™Œ”’”™—›“•˜•œ“”—™™”˜‹’•”–”š‘–žš–—šš“••”“’š“‘”œ–ˆ•Ÿ––Ž–œ”›š–‰š“”›˜•ˆ”–™—–›˜” ˆŠ•˜””•‘’“”Ÿˆ„‘’š–›•Œ™””’—”ŒŽ—‰š•“”’™›Œ‘Ÿ‘‡œ““”™‹•“•“™˜‘•›œ˜–˜œ––“—””‘™‘˜—š“—™–”‰•••’˜•™“—“”’“”“˜”•–•—Œ•”Œ”†‹—™•Œ—’””Œ›•‘›Œ“”„žš˜“–†”—”™‘”‹‘‰™””˜–‘˜’“œ‹–‘”˜˜œ•””••£˜–“˜”—•ˆ‘‘–š˜”˜š˜›”–”—™”Ž——œŒ”—“””•–•ž“˜—”™ž‘•—”“š™’‘–™ª•—‘””š••™›”••”’”–›žˆ›˜•’”~•“š•›—”””–’«”Š˜•“““—–Ž–••¦•‘”“Ž•–”ž–›“–˜–•”–•—””›““”“™•‘”’•’”™”–—”˜“™˜“–•““ƒ””““š•˜š™š–¢¥’’–“š“”•“˜‘–•¦Œ“Œ‘’”£““Š“‘‘““Œ‰–“˜–“•”“Ž”““œ˜“‘““’“—’•“–•““¢˜™’”–˜—”“™’—•”““““–”•—˜——‹–›—“’•”“•–›“”•’”˜–”“––—”އ“”Ž”““—••‘š’Œ’”“““”–œ‘˜®œŽ–Ÿ™›œ’’““‡——š•–¢‘’““Š•¦ ›’Œ–‘’‰“‘’•›•’—Ž”–˜’“–‘“–““—‰’“——–‘—“މ‘“£•—’š–‘•”•›““‘˜“’‘“”””Ÿ˜˜•”•ž’™˜‘•””‘–“ž‘š‹—Ž˜‘•£””’“–™¡–œŒ•™”›–›¸““’™––“œ“–—˜Ÿ–¥‘“•˜•’—˜–“‘““’š““–‘”’““˜œ‘–’“Œ©–Š—˜•‘™Š“•¢˜–”–››”‘’“„’—”—ž–›Œ–”—–“•’‘•‰‘–••™¡š•š‘’Œ’““”••’—”’™”““’™•š•šŽ­“•”•˜”›“œ––œ““™ˆ—Œ‘“’››”‘ŸŒª’‘–‘š““•“’”’–š›˜–——““ˆ—”’““•”™“‘”ž™ ™‚š¤˜œ”‘”’šŽ”’¦†“‹‡•ž‘“”“‹‘”†•–“–”••’‘“žŽ‘“œ“‹’’•‰’“‘“’“ª‘”‹‹‹Ž“ ‘Œ‡¡““––“”•–…›’”›‰Ž““—ГГ’˜•“—––“–’–’””‘”•–‹•’Œ‘’“’“Ÿ”›‘Ÿ‘˜šš—›™ž’—““““šŽ}’––“”””©’›”“•œ›™•Ÿ“’Ÿ•¡œ™””–“•’”œ–”™Ž“”››—‘›–’’’”’•œ•˜”£•œ““•“—–Ž””€’””˜”•›”™”’–”Œ’‰–“ƒ““”…”˜™• —¥•ˆ—˜•™‘Œ”¡—”“––•””’”“••œš˜”£—”“”•”™’™’˜¢–“‘—•‘¦—••”—–”›•–—”’””–“—ž¡›£•“‘‘””œ›š”§–’•••“–šžŒ”“š’•‘•†”Œ•””•–›‘£›œ–˜””“”“™––•ŽŽ–””—”¥ž™•’§””™”™— •𙕔“”——˜––”¡’”•”™“–“¤››””˜”™–”•••—•“•™•“–™Ÿ”––”𔓓•ž“—•šŽ–”•›––•“”Ž””“”™””–––––•Ÿ›™™•–”••”›”˜™Ž—œ”–‘—§“¢•‹˜•—”“•“—œ‹“–•–•–”“˜†•””“—•”“”“”™””—••••–””—™¨”•••”’”–•”“–“–“•”““—•‘œ•–“–“•šŽ”’Ÿœ”””›”–•”’””——••—Š“•””˜˜™™•œ•œ‡“’™“•—”Ÿ‹™––¡™“•›˜›—™“”•–šœŸ‘•–“”˜ž˜’—…—’ª“œ’”›ž˜••ƒ’”š“•Œ›Ž’”“˜““”•–“’¦ž˜™“˜ž•••š™™—™™•™˜Ÿ““š–”“‘“–˜–“š•–‘–Ÿ—““˜•”š—”“˜š—𤣙™œ•¥•›””“¢˜¢“”ŒŒ•™—–ª”š˜“¢”š“ ““˜›‘“˜‘—›“¨Ž’”•“‘‘”šŸ˜“–“”““Œ“”œ˜••¡““›ž™›’œ––—’”’›—’““’”’’•“”“‘™’’”–™œ›˜“’““‹˜—™—”™•“˜—˜˜”›—£““Ž“—˜ˆ–’”“””Ž“šœ“•–—™“Œš’’†•Ž‘”’›š˜””™š›“—•““š”š“œ—•“˜––”š——–‘“˜“‘““‹”’›“–—”œ–››˜——™Ž›–“¦œ““•™“š‘£šš”—šž“–“›Ž–‘’“‘——™’Š”™–“Ž‘š““šœ’“••••™™“•ž’•–™˜–“•š—”“•“‘–”›—™™”•š˜’“œ”ƒ“– ——•œ”—Ž–Œ”˜›œ› Ÿ”™‘¥•’“ “™™“——ŒŒ›“—““”‘”•—”’š–”•––’Œ˜““”“”‘’” ”–““”™ž”š”™”“™”š’Ÿ˜ž””‘›Ž–•””•™•“š—““œ•“•š””š““‘–”•›–’•”™˜“•–““Ž–”“˜“˜———•””Ž“•’” ’š““˜“‘˜™›’•–—˜’”””—œ‹““¡¡™•—””•”ž•–›“–š–“–”•“”“œ”—’™š•”™”™šš”•––’›“•“–“•“—–“Ž‘šœ™”˜–“”’›•š—š–”–“””š ”–‘𔕒—“†—“–”“š“—–”“”“’““‘”“˜•’”’‘”””–š—“˜““—“¡–ˆ˜˜–‘“““šŸ—“•—ž–”“•—•‘˜“˜““’›—•™˜’’“—˜“’”’™’˜š›•““••”œ‘˜”™•“ž”–“““”–”“““˜––“›–’““𔕙˜˜“”“’š“˜™—“¢”ž–””’¡•”““Ÿ“•¢‘—“˜–“‘–•›¥”“–—‘“’“ ‘”Ž—“š“–›•˜™—“–š–“—“œ••˜““”“–‘“˜–“•’¡™–—“”–˜˜––“—“”—“–™•””••“˜’—”‘’Œ’—”’™›™š‘• —’“›““•š ™˜—••š—”š——”˜“““š‘§ž—›–’’•••“’™”™š”œ–——•œš —”™•“˜Ÿ›–•›™’˜–”’——”——Ž”–’ ™”’“’š™—‘œ“™—–’’›–’‘›“‘–“–’—™™“›•œ”ž™Ž›“›“”–•–›—’š•š‘•‰˜Š›’›’‘–›‹“‘“•ž“•—šˆ—‘‘’“™ ™’’’•›™œ˜‘‘›•‘’‹š˜’š¢˜•“’™›Ž“’—’˜”’“˜’™™•–’’““—ž—™››—œ—–”ž–Œ“œ•–˜–™Ÿ–Ž™“™’˜Œ™˜’•–ŽžŸ’”‘“–‹‹‘•–™”’•”–—‘—“’’”™‘˜˜‘˜•˜””—”–—–𔓕•”˜œ””—š››š•—–—•‘’‘” –“”™”Œšš‘˜˜”™™”•—˜”–“š–”–””£š”“–”“šš›ž“••˜’”¡’•›“™”¤•”—–’—œ‹•••’—’•”™•–š•“ž””‘“–›’’˜”“”’•œ›”Ÿ““˜•“—•–“““”””“™—–”‘””—Ž’”””™—”‘•‘––—”–“””“—‘•‘““”–›˜•“‘™”—”“™“–“”–’•—“—•“•™‘—”™œ”””–—’•”•™œ™—•›–™”Ž””˜—”’–˜––š’’–”™”—š‘•”“”—‹‹––”–™’›••››‘£š””’““•’•—“š’Œ‘—˜’‘““’–’šŽ“—–‘™˜’’”ž“’˜“™’—–“Š˜•–†‘ŽŽ•—œš””‰’›˜““’šŒ›”–•¤Ž‘ž’‰”’š•„”“ž Ž“˜˜›–•’“¢“Œ“‹’‘‘••––›“z”˜”™š”’œ“šœ–œ—’–“‘””–𔔤“‹’”“”žš””••–•›–’”“Ž•‘œ˜‘“›–––š“”š’””–Œ–Ž‘’›’’•™›š•˜š™Žœ””–˜œ‘’’’•”›‘“š˜““’“š™š–Ž–”•”•Œœ’”˜”“•——”•””˜““–ž“’›”‹”•–˜“‘𔓒—ޕޙ–”’•–““˜—”’”“™”–š˜“—œ•ž•¡Ž–›’–”™’˜šŸ‘•›ž’–›”–”•‹“™“•”•™—–”•‘•–•š’““˜—–•“™’‘“˜•‘—›’“”‘ˆ””™––’™“š‘•”™“ƒ“•”“œ›—Œ˜–™““™œ œ’Œ’“—””’˜–““™™—“™’’‚’‘•”—–“’–—œ—”“‹“’˜–“‘’™Š””–˜–ž“““–’“•’˜˜’“‘™“›“™—ž—’—”™‘“’’”“’”š˜˜—™•š““¥•“•”‘”’š““›‘“”—’œ™œ•–”’’‘’“”›“’›“’™”™–˜š“•’œ’›–”“’˜šœ‘‘˜œ‘–——Ž•’—‘•“𓔙ޕ–“œ’™——”‘’Žž••“—“Œ—’›——’‘”’” ’œœ”‘œ“™–•“˜““—’”šœ““”‹ž“’“™œ”–Œ‘œ•–™““œ’‘“–˜•˜–•‘‘–†’œ’Ž—”•––Ž ˜“’“”œ“–’˜•“–—‘—™˜Ÿœš“’’ž™š—šŽ“™’““œ–‘¡™—–š•–—›•š”›|˜¡¤–‘›ž”•“—’’’˜š•Ÿ“˜š’™˜”’—”“•™ž•—” •““ œ“’“£•˜’™“ŽŸ–—‡‘’˜£›—“•—Œ”™˜›•“•”›”’›¡š•“•˜ž“›Ÿ—Ÿ“šœ›”Ÿ“˜§˜‘’š¡˜’ž”ž“˜˜™•‘˜˜–“¢Œ’™————“••–œ•“œ“–›“•›™˜š™œ•’“–šŽ ž’”–›”“‘’”””™¤‘–ˆ”—œ“’™”™š”š„•”’Ÿ’’’Ÿ¥¤š—¢š›“Ÿ–‘’™–™““š”———”›“””””””›””–™“—••”’”’–””™–•”’š—””””””—•–“””—””˜”•”•””•—”›”™‘“•”•–“•–”””•”–”“—•˜”•—™”—”“š•œ”–••–”‘™—˜›”–šŒ”“•”—‘’”••™˜˜›•”•””’””–•˜””˜”••”””””˜–š˜–”•–•Š™“””•”˜˜”—””•™”•›•–”•˜™˜š”““””˜˜–”’š™”””•””—˜‘•”•””—–”’›‘–”•š™——™””––•”—””“’“••”‘˜”•˜“–”’””–”–š’——–˜••›”—š–“–•’•˜––“š•———––•™”—”˜–š˜˜•’“–••”’˜“”œ”˜••“”•š™™••™˜•’––”••“–•”••’•œ“›—•”•Œ••–—˜–”••’”‘””›’—Ž•™–™•’–•”•–š—–‘•—••””˜—“–˜–•˜““š•›•–™–“”•”—––”˜”—˜‘–”“•”—–“—•–•“š–”“–—•—“••••••––”—–––—”–•–•””—•˜•™•š”™••”—””–––’—›’™•”–”•‘–”’“’™••˜”•“’”˜•”””“”Š••—”””••••‘”•”™˜“•™“•“‹•–”•••–”•”•“˜“”––”””š—’–‘•–’”––—•”•–”—“˜“™’’”””Ž‘””—”–••–’“”“’”” ’™•“˜•˜”–•–•“”‹“”–™••“’’–”˜“”“– ”’•‘“””“•œ——•”–‘“—”“••—”˜“˜–•”••¡”“””••—–”•—••“”–”–””“””–•”˜–””––•˜”—––˜”˜••––”•”“’––””“•“•’”––”••—•—˜˜”’”•••••—••’“•“˜–•”–”””••’“›“––—•””–•””—“”†•™—”—“™•–Ž–•”™–”—“’‘–˜—•••–•”•—•—••›•””’—˜•”—•••˜–”—“’•”””•””—••••———–’œ” —’•”–“•¤•••••’—Ž’•“‘–•“—•–•—“•˜”Ÿ–’”“”–™”–£“–”••˜•˜””™–˜˜–“•–•š“”••‘•˜””””’”••••š••—•–—•’””•–•–••–œ““—™”’”–”–”“”˜–›”–”•“•˜–˜••˜’—••”•“”˜““”–“–ˆ•–—•••”•••–“’“••““–”””“““”“’“™”•’•“”‘’“•“““•”’“™™•––“”””“””“’—“’’”“”—““““–”““••“•””•””“–”””””“—’•““““—””˜“““•”š””“’““—›—“••’–••–’”˜““•’–“””——““•“““””“˜˜“”””“•”’”“––”””¦“’“˜š—“”””•—•“”””’–””’“’“’˜•“”••““”“’”™––”•””’””˜’“—•“”‘““”•”•“““““–“–—”“”“’”•’””““”““”“““•“”””““‘„•–œ””””™–•™’•—›””›’“˜–Š™•’•—›••““––œ””–•”•—œ•“‘”“—’”Ž˜–”—”–š˜š™“••””‹“•””™–““”𔓖†šŠ””—˜”•””š”š‘•}”›•—””ž›—”’š•“™…–—”™“’•“›”–“”™˜’‘”“”œ‘”™”™••—š”‹˜š“”’–•™”•”••–”˜””–“˜’–›—’”””Œ””š›˜•“”’–‘——˜–•’›š““˜—”‘–“•“”“–›˜™˜”–—”™”•”›–˜’••“—––’”—˜–˜”””•’•¥•™˜•””“”•ž–—™š–••›‘™–“—˜•’”’——–•˜•——”—’””–™˜“™——“’”•˜—”’–•“–˜–˜’“””—“•”•”š–’˜——––•«•˜–’•”™•’”˜–”˜”‚•Œ–•—•”••—”˜“’–”Ž•–•––™•’—•••”™““—”“”——š—š—•–“••Ž”—˜”™–”š˜–”””–”•˜•‘•——–”œ”””—𛕖–””•’–—––•––”“—’Ž””›’””•–˜•“š™–—“™”–”•”—•™š””•ž“•™–“•˜–”””““ ’“™œ•””–“˜˜Ž—Ž›–“™–˜”ˆ™‘•”œœ–”“–•œš”š•”ž›“”™›–••”–œœ”š•˜š‘”œ™–““””Ÿ•””ž”˜ž”•˜œž’‹”›˜•™‘š“”œ••šœ™”“£š—•™”•˜‘ˆ”•—•”›Š•‘”’”–•”šŒ–™””—”“•”“”–”—Ž™”›˜”‹ —””•”–™”œ•••™”œ”š•”˜ž›ššš’—””œ“šžš—–•Ÿ•“™œš”•™˜‘•™”•œ“”—”’š•™—“˜Ž—””””—™‹”˜“‘“’›™˜˜—””“•‘šŸ“—›“”•Žš˜š‘–‘’”“—˜•—Œ˜š™—•‘–•“𔓔”••“˜’”Œ”˜“•“•‘—”š——”••““—˜‘““‘–”“˜”•—•“™›–š–Œ“’›‘™”“’’‘˜–›“˜‘—–ž•“”—”‘—•Ž“›’–”•“𙓕”’•”•”“–“˜”˜“”’•“–—“–™“Ž”‘•“’“Ž›•“‘•Žœ•––“••’–”‘—›”““•’“”•”—œ“‘“’““˜“’›–•––””“Œ”˜“•’•‘””˜§“˜‘‘’™““““•“—”Ÿ™•”••˜ ”–š–—–—”˜–’š–’›••“™–”””••™””‘“•”›˜••š–’”””––”š•›—Š”•“”–••”•‘”•”˜••••–“•˜™”““Œœ”›”š••Š•’™˜™•™‘–‚•Ž–—‘˜”•›™”š•””•””Ÿ•”›’”™•”›“”–•••––“–•š•”–•••””•—’•”••𔓔•••“”˜š›”•Œ”•”–“”•𔕕•”•˜•••“—”•“™•–””•œ˜š™˜•“—••—•”–”™“”•–Š•••˜‘—•˜••””˜“ª”™š”””“¦œ••œž–‰™“•”‘‘š“”˜œ“”–˜˜“’“—”—–•š¡“”–¢””›”™–•”’—””•¡¥š—•“–“”•””¡–””—”›œ•Ÿ•’¢•••–±™”˜“ž””œ••œŸ›ž‘——‘Ÿ•¢”—•—”š•—¡”“”•““ž—’ ˜•™”” ‘‘•”–”’•›œ—–—‘˜””ž•›•”›”—˜•–”˜•Ÿ“”’ ”Ÿ™˜•“”•›£˜œ£•“•’š•‘’ž“•“•‘’•’ •“›ž•–”“›••š–•™–”˜”•›š˜¡–›‘œ•Ÿ“›  ¤š›”””’›”–“‘š˜”””‘“—˜•“–‹”“–•˜–”ˆ—Ž•˜””ž“‘•”•—”•—‘“”Œ™–’”—•›”•’”—–‘•”–”–ž“•–””›—””•”ž–”•’š“™•‘“¢™–’“–’•—”•’“š”•˜“†””—“’›””—š—™˜–””““’—”’—•š”””‘’””˜”—•š”ž“‹”–•••˜”•‘˜”–’’–””˜””””š••”‘––•–”•“œ˜•’“–•œ••’›•“œ–—”š—”Šš””–•™“š”–˜’˜‘’”•”–• —Ÿ™˜‘š‹–••’‘–˜””•“”””“•“””“•“’™”“”“”–”••”“”Ž”•””““‘”•”Œ•”””’•”“”—–”•“”•””“’“”“–““”•“’””–”•”””–”—”œ”“”“““™””“”“•”“”””“”“˜—“”””“•”•”’”—“’š”””””””””””•“”“•’‘”—•””•“•˜Ž”””š•”’›•Ž“–””‘”””””””•”””””™••”•”””–””“”‘”˜‘””–”Ž“”–Ž“‘–’”””’”“•””””“‘ž–”’“”•””“•“”•—””““”“’”””•—”“”’””˜”””•””–—”’“•••š•“””•’“’“—“””•˜–—–••“–”–•”•Œ””’’“‘”•’–”•—••”™”“—“’””—š””•”’––••””“˜””™“““˜“”””””••”™——–——”•˜“”–”‘–”–”‘”˜”š˜•’š”—“•‘”•˜’”–”’”••–•“˜•”–’•”–™“””•”š“””””“˜•“•“•”“š”””””•“”“”—™™˜•’™”•–”—”•›–”š“’““•š”—“’””•“••””“•“•’•””“š—™”˜–”•”˜–””“”•˜Œ””•””””‘•”“™””‹˜”–”™“”•““—•”““™–””””“™š”•””“”˜”•–”˜—””™–“–”“”˜””–˜””“””•”•”•”™””˜•˜””””‘•••”•”•“”–””•‘“š””–”–”•”””••–—‘–”””””“””•”™”“•””””””˜””–š–”œ™”œ•”“””“š””—””œ–“–”˜“”“•–•’–”“𔕗’”‘”””””•””’•“””“–””™œ”–““””——”–•˜”””””””•—–’™˜”“”“”—“”””•””“—”˜•˜™•š””•–’™š–•™–˜–œ””••™‘‘”’š™”š”™™—™˜˜™”š––”—™‘—“”š—š“•”–”š™›•—˜š˜”“—’””•›”“›””š™–•”““—’˜”“—”•—–”™“••™˜—˜œ“”—˜–”˜•˜”›œ•˜‘–™”š™˜™š˜’•”““››˜”œ”—š’••˜•˜”’œ—š”™›™•𔕙••—”š“•˜“—–•••››•‘””—™’—–”š”œš——•™””˜™—˜–œ“œ•’’𔕙”–—–™—’—”˜““”——’–™——’™—™˜•›œ”“””š“™”›š””””£˜••š“™š•˜”ž”šš“–•““•˜›•••””›–””™•”“ž™“–›•›•”“œš””œ¡––”––”•–””ˆ••”˜”™™•˜–“˜‘”†˜™˜•Ž“•”’”“˜—š••Š™ž•–‘”š–””ž–™™£””•”“¡•• ˆ˜‘•”›•”•”•”•”—Ÿ‘’”›–”±–˜”•••™”™”•”“”¦”˜•”š–——••™‘””“š–™”””•œ””˜—“””›•””––”—˜™”•”˜–•”–•”””œ”•™›˜ž–“”›–™”™›—›”¡”””“’Œ™’œ˜š““–›˜˜–“—™˜˜“˜“›“˜—™–––˜š”‘”˜š˜“›ž”’——”—”œ–—“–ž›”‘–™š”™”“–”““”’”“˜”•˜—–•š˜“˜”˜”•““•“”•“˜—–“œ–’”™•”•ˆ–•“™“•“›—Ž’”•“›’š—•˜““œ’’˜”””•˜“˜‘•••‘””“‘—’–™™“™–•–•“Š”œ—•”˜’™š›“•˜“”•—”¦•™–“–—”“–š““—›”’˜”“–›’”““““—––•—™•’Œ“”™’”“‘“”‹”•––›˜™˜““““•™›Ž•›—”•””™™—–™š”“–•˜•œ•–›•‰˜Ÿ••••““””“’›—”—š””šœ’”––“••”“˜™•š”˜™˜•“š“—•“””˜••”š••˜•––‘›“–’“˜•š–™••’”“—˜˜–˜˜›•”š––”•–”•˜š—–“•••“”œ“•˜š•™””—•”””–”•““šŽˆ“–””—œž”””“•””“““—œ”—”‘””“›™—™˜•’•”•š›””œœ“””›””“˜˜•“›œ•“””›™’’”•’›“•–š“”™””–””“–––””–“’””—ššš“š””“”•˜‹•“•’””“‘’”“¡–™Š¡•œ”—”›™“˜™””’•œ›’”“”‘Ÿ™••”””š™ˆ“”˜‘™‘”’–”‘“—•Ÿ•’‘“˜““””¤“”“š”š“˜–—––”¢•”‘•‘•””›”œ•—’†Ÿ”’˜•“‘’’””’‘“—“”•““•‘’”•Ÿ•“”›’“””““•’”˜œš”šœ”ƒš•“’“’Ÿœ”™””Ÿ“˜”œ””›œ”–š’‘”•˜›“•˜—¡””‘œ’””œ‘”’–—”“™¡“œŸ““•”œ•“•–š“–˜“”š””•”““˜““Ž’™“’‘“”””–’“–™˜’”””œ˜™”“•––”“”›—‘–“›˜™—’•”••–˜”“•”•–—“”•—–“—“•’•””—•”’“’˜“–––—––”””™•””“”—’”˜š’˜——’’™”—š––—•Ÿ”•™™‘“”“–”“—’”‘—”–———˜’˜•—”Ÿ”—˜—•š—”———–”—”’”•—”—””“‘”Ž•’“–•”˜š•˜••“–”•”–“•“˜“—•“—’“””š—“–•–•””•”––”“•“””—’•—”“š—••”•š’“–˜–”—–“”••—–˜—‘•”••–•––š–”””’•“–Ž”›’•”””•—•—’•’—“˜”••”–¡–“”–”——–””“•’”•‘“•”•’™•••••–”‘—“”••—”Ž”’”‘—“”””œ•””•”—–‘–“’’ˆ”“•™“•’”Ž”’”•••–𣓒“›•’—’”””•”ˆ“””–’™––—“”–””–™•””•”–”’•”””‘“•›‘”“”•™—š””””•“”””“–•”•™–š–”˜”””•“˜‘–””–——‘”––’”•“–”•”“—š”””“”’—•’–’‘“•”’’“’‘’—“‘–““‘—”””“–•’†–œœ••”•¡œ˜––˜–š•œ•š”ŽŸ•œš—–”‘Ÿ—•––••¡•”œ–”œ•›”——”•š—”–•žŸ‘–•“”‘—””•••”Ÿ”‘›•˜•––‚•“––‘˜™–••’Ÿ›Œ–¤’œ‡•”•—‡’—”–𙕙”•–•––œ”•¡™”›•”ž––•”•”••—›–œ’•““•¡š”––•——•—••˜—””™•–š˜˜š–—Ž””•ž– —œ“•”•˜•••›••••–•––”‘œ••••”—˜š›––”••”””™‘’“Œ”–—Œ›•—Ÿœ•ž”””˜••œ˜”•𔕗”””—””•’”𔛔𔔙Е”—›•”•™œ–—–”–”””•”•”‘ž••’•””—”””•š””–˜—”••–“””Ÿš”•””•”—•—•”•—•–¡•™”™”˜•›•••””•š•”š”••“•—”–””–”Œ”•”˜™””›•’””•””š˜˜”—”•˜–•–”’™•–”‘”’”›˜”•”•’œ•””””“—”•”•”””™“•”•–••••”“œšš”––•”••š•”œ˜•–•••“”š”—”–•””–“šš”•••”•–••–™””—””””‹”””•–”Œ–•–”“”—›––—–—˜”™—™’™›——•—š•š—–””—•“”ž•”œ›’•›šŽ˜•“‘™•““•™–——”–—”““”””“””–—•—’š“š”•˜•”“›š“”‹”–›œ’“–——Ž”‘“—–˜“Ž’”Ž•ˆ—š“˜›™“–™‰—˜”“—™•‘“’“““•–‘˜‘˜“””›“‘–—›“““”˜–”“•”’–“”—–˜˜—“•““•—š“’œ˜™”•”™‘’š•”“””˜”•’”—š‘“—“””•“”˜“““““•“š–•‘”›•“™”™™š“–”““”–•Ÿ“œ•—””“–šœ—œ•”˜—™—–•Ÿ˜–£”‘”•—–““”•™•”•••””›–•›–“™’”–—–”˜—˜•™™‘“““–””ˆ”””•”Œ•”‹™–Œ•™–’š•–“””“”•–•›„˜–‘•™•’šœŸ”™š”–Œ“–•—”›•”•–›–””›——“”•”—•–˜’˜’•™••‚—•”—š•–”•š“—”œ”—•’š–¡’‘—””Ž™‘–š¢”˜–•”—Žš””™˜–––”¡”“—“”—”˜•˜›™“”“›”Ÿ”•’‘‘Œ”™†•–•—“•”™”””–•”š›–””’——”™•—™œ•‘š–˜˜—Š™”™“–””•’œ—ž”™ —”–™‘˜˜ž–™”› –”›–›ž”š”˜””•”””“””˜”—™”–’“›™˜™•“š––—™•ž”—˜š•‰™”—›š•’‘—””›’“›–—•”••™ž‘ž—“–—”˜–™•”“ž™š›—’›™••“•–’“•˜›˜”– š—‘”˜”‘—”›™”“˜–”–””––¥—œ’‘š”•œ•šš—–•𔡕•”•œ“•—•š—™”•™–“•›”“””‘™˜™—–• ’”˜˜™•œ”””””š›—•“˜””””–œ—”–š™’’–’”˜•˜˜•™™›””•˜•”””••–›”‘–”“™””’••›”””—˜”˜”š’—•”š™—•’””••””–”‘•˜””–𔓗‹“•›••”•”™—–˜š”†’œ”••–“–•˜””š—•“›–”•””’•”—˜Ž—•”˜””””””—•‘˜˜˜’”˜–•™’”””””š”™•”žœ”–”—•”ž‘œ–––”—•””™”Ž ™•–”””““”—“—•”™•”•šš”ž•”–”•–œ™•—™”Ž”””›”•“œš—›”Œ”‘•”•’𔕔”•˜• ®–‘•“””“’•“•’•–‹““‘——›“•’“–˜•’—’’‘—••—•’”–••’’–™œ›––”’—“•‘•’—–™’•“””ž”””•”•‘“”““““™¡˜‹”‘”–™•£”—““‰š€•—‘—’– ‘Ž”™–’’ž•—”“•’š“™“–“”Ž•˜””•”˜”—–“–—”•›’”’•™”“œ’›’”“”•””••Ž’’–‘™š”’™’“•’”“‘’”–”’‘””•’˜““›••’”—“™“——‘˜“˜”’–’••™””—””’”•’Š””•—“œ“–˜“““‘“—𔓗˜•’“–”š•“™–––˜™’•–‘’–””’š“Ÿ’•“˜˜–•™™“–—“••š”™“š—“•–˜—•—““–“”“œ“š—•˜•‘“•˜“–—“•˜———”¦“•™””””Ž“šœ•””œ“‘“”š””““”–”“˜—“•“’–’“‘”—•“•”–”’˜•œ˜••–“ž—œ’“““’š“˜•“—š“™“—”•“•“‘—˜”—•““”‘‘–—š“’“™“–•””“••–“”““˜•”““’Ÿ“•™•–”–““’“—••’—”—’•–•š•–”•“““’”’‘”›š”“•™–ž˜œš•‰–”˜˜‘Œ•˜—Ž’•–›”–œ—•–‘™š•”¤””“•˜’’šŽ—”””˜›“•˜œ–”–•—”“””””“š”Ÿœ–“’“’’™˜•œ‘‘Œ”””•’š˜ž‡ŸŽ•›““•—›”—™˜’’™••”˜‘Ÿ˜–—œ’’’”–š–˜”˜”–˜“–›•£“›˜”““œž’’”“›š””““”𔋖“–ž•“•”•—žŸ––š“˜›•–”š““—£—™’™“’š•”“”—œœœ“—“›”–””“’‘œŒ—› ˜›š–Ž“™”””’‘Ž˜–š•–””“ž–š›˜—–Š˜“•“‘‹”•œ•“‘˜”–š’‘’––•”••™–”’š——’™–•”˜–•–˜™œ˜˜–••–•””˜Ž””˜”–˜––Œ•š”–•–Ÿ“–’“š˜••”—›”›–—…”——–•‘–“—”—˜””˜‹™”œ“™œ˜“””—“‘–”‘”˜˜•“—“••‘’”•’—“˜‘–˜”‘˜—”—”•”•’•—––••›”•””•“™•𔕑ޗ˜š–˜“”–•‘š–›”“š‘•“’’˜™˜“›•›•’’“”—˜˜’——™“š™”›™˜”˜””‘–š˜’•”–•”””š’•‘•”˜˜–••›••˜•–™•”““—”–•””•’”—™“”’›”•—š”’–”•˜˜””•˜š•••””™•”””••””–”–˜••”’š‘• “••••–˜•”“•—–˜•–––” •–•”˜–”””—˜—𔕕••–š”–™—‘”•”š––•”–”“•“—‹–”•”””’”š••–•’””˜”•“•”’”–••“›“—˜˜•””””–›“”™š”••––”••˜—••““–•‘”•–’”–••’˜˜—•“’–”””•˜–˜˜—Ž––—“•˜˜š›”—”•”•—•‚“˜™š””™’šŸ—œ—”›”–˜‘Œ––•”™•œ”˜ž’•™”˜”—“š˜”’”–“–š”›˜—””–•”™˜–—•œ”š—•”””’•”“—”–™œ˜˜—“š™™˜›šš–•“”‡“••›˜™™••“š—›•••”—”•™ž™’”›•™”“›–—”“”–“–™—”™”œ—›”›•˜”––”‘™—“˜•—›œ”—”—˜š””““™”˜—š•—–””“””˜™“š–™••—›–™™–”–•™–—ž˜•™–•”™”š”œ••—•—”“™””››™œ™šš¬‘šœ˜™•œ—”””œ”“Œ™›‘”””’”››•—•’–—•–š—•™—–™Œ““˜•™™œ’—•”˜–””•“•——›——”š˜Œ”—““˜šœ—•›™š””˜š””•”‘—‘•”˜•š‚’“—•œ•”‘““–˜•—“‘—ˆœŠ•’‹’”ž“—˜“‰”™”š›˜•——•’‘””šž˜”˜””˜’“•’˜––›”‡™“”™š‘”‘”‘““–”Œ””•–—••””¡“”””•“˜•’‘˜“•”–—˜–”””—˜š•˜”˜™–•˜”’’–”“•”œ ”“’’’”““”š‘‘–™™•“š•””’•˜™”ª‘•”””“”Ÿ”“••˜•˜””šŽ•˜‘’•”’›™•””••‘˜”¡’””‘“›•œ–•–”••˜•›•Ÿ£••–˜••—””¦”””—”˜•”˜“”•vŸ¢–••£••š”™™’˜™•›•’–“–”¥˜“””’œ——•“•”•••”‘Ÿ˜˜””–•••”””œ•–““™•›¡”–ˆ¢”””••••••–Ÿ”“”™•–”’‘™˜ ”—™”•‘”““£•”•›“•˜š””•’—”•˜•”‘˜œ•””“‘œŸšŽ•™“•’œ””˜•–“–™•¢šŒ••–“–˜””•”—Œ’”–—–”””œ–•’”˜Ž˜—˜”“••Š•”’’›••”’“••—’–”“”›™””—˜“˜“—’•”–“’“••˜–‘•’œ—––””””””œš—’’–“—“’–•’’“•Ž•”—š•Š–¥”†•‰•–”””“—•—”‘—’•’“¡—–šš•••”œ••–”””–—•—›˜––𕍖••˜™‘””˜“˜’”””–””—’˜”’’˜“””ˆ™œš—”…”•š”–“˜–••‘š“•—”ˆ––•“”š‘–“•“’–‘””Ž”•––››š’—–›”—™—˜•“‘”•——’“œ”“””•–•š“›””™—–‘——Ž“—“”š———‘”—™—”œ™—“–›—‘–‘–“””––”–—™’‘˜“•‘—””Œ“””Ÿ””™’–’“™‘Œ““‘’‘–Ž”˜”—›™”‘“˜—ž’™”•’”–˜”‹–šŽ–•–•—“š’–—™•——””ž•“””•“•”—™–•’’”’–›•“—œ—””‘˜˜”‘”˜““’˜—–•˜”••””˜˜™“›–”™”•”—˜˜“•”˜—’’•’”•™‘•—•••”–˜—‘•Œ”‘“”••˜™–““•”™›š˜Ž•”””“•—š—œ˜š••••–ž¢”•˜‘›‘š–••”•˜—š“——˜”–š–”™™•›“”•–•”™”•’•œ••˜˜•œ˜˜˜–—™–˜–••œ™••˜•—š–•›˜•—™›–——˜›—𔕒”–”•™—˜‹•™’˜’•”𙕕𛖔–“•œ• ’›•——–𗔗𙓕—•—“™™™™•”——”“”˜–›–’™Ÿ•˜•—•˜•–•”‘“š™”˜šž”˜••‘——›”–”™“”œš”––˜•—š™–”—–›”•••™›—˜œ—š——”••••˜™••™˜— •“™™••“˜•••”–“’™•”–’””’˜•••—’‘’”•“”“•Œ”›’•Ž“•––™–’’””–”””’”‘“–—“””˜”–””’”“–—“’—™’•””¢•”““”›”•“’”••¤’œ’’”—•”¨“”’“•’’Ž”’—””“•““””“•“¦”–”˜—”–••˜“””™”–”’”“•’–”“—–•”••’’”–“””š•–’”•”Ž–”“—”••›•”•–”˜—•˜“’”“˜”’””–––’—“‘’˜”™”“•““””“––”‘“””–•—™–“ŠŸ“•–”““–””••••““”•–””“““˜”’šœš–˜–•˜ž”’Ž˜””—‘˜œ’••“––•””””•–•’˜˜•”““—••”—“’œ™–“’”•’””••“““”’•’———”š—•Ÿ“•›–“”•‘”–“–”›–©•’‘•—”—“™””“””˜••–“””‘–“’Ÿ•™“”–‘•”™”–—–”˜–•“–˜•–‘”“™ ”™–‘–“”˜”–••ž—“™“””˜””–““–‘’™“•“—”’•––”•—––—–”’›™”“–”••••”™•—”–”œ”–”“’‘–—”˜‘•—‘™””’”•“““’”“”’“‘““““–’•“—•‘––””“”’•””–•–“‘––”“””‘—“””“’•–“•““••”“••’••““’—’˜““˜—”“””‘•”–”””–‘“““Ž’—“”””“““““—’—’’‘–•””–”’”‘“’•“Š”•””—’–•’•’•“””•–•”•””•”“–”–•”–“‚•‘““•––”•––”’“““•˜””””•”—’“–”•””“‘–•”•”•’–“–•“•”””•””“••’”—“•“”“–“••‘““”“”’‘‘”“—•““““’’–“”““““ƒ’’˜““’’‘•˜’“–—‘Ž’“‹’••’””•—’“‘˜’“˜›‘–”‘•”•Ž’’•˜˜™”Œ‘”––•Ž”—’•˜••””’•”“‘”’–’”’‘‘– —˜˜””Ž””‘“•‘“’•”©”—”‘””’“’”—–’’’–”˜“˜’‘•“““••Ž””””–”””“–•”š“’˜‘“—”—‘𔕕“—˜”“”•š•–““““—‘˜”””Œ˜”•’’•••“‘”“’••”“‘’”“””•“–”“”“”’–‘“—”—˜”–”“’˜•””’“”𥓙𔓓“œ”™“—™‰“”—“œ’š–’‹š–”’’”“““““™™”—’”’•™›“›“–—“’™˜“˜“”•–“”›”Ž”’““”“”“““œ–”™”˜’œ“–™Œ™””’œ”•š“–’”—œ“Ÿ™›•”œ“”š“’“”š”–—Š—“”““›“““˜œ•”’˜“““”““™“–š—™ž“™—”™™”““““”–“—““‘š“–“š““•“š˜™š“–™“•›˜”“”™•“’“”’“ˆ–•”“–š““•š“—”•“““”Ÿ•”Ÿ•”Ž–““–““Ž–•”˜–”—£–“”˜”—“™““”••𢔕—••”••“”•—–˜{š•”•˜” ”•Ž”—••”’•••”•–””–•””—š’”™Ÿ•–”••••”•’“ž”•”™–•••• ••”—•š–•—”™—“•œ›•”•””•”“—•”Ž–j “Ž•••——–“””’•••™’••””“••”œ–Ÿ•””•••”–”•”›šŸ˜”˜‘–—‘••––œ”•”“•”””œ•–••——”•—œ•˜—”–™••–”“—”•––••–”—••Ž“•”• ””ž”•••”–˜•žš•—£•”™”•–˜Ž––’––‹”•—•–•”“”•–•–˜•””“™˜Ž‘ ”‘”‘’–•˜˜Ž““—˜‘ŸŽ”™˜Ÿ•“”–””“˜“–‘’—”Ž—”–›•”—›“—””™“””Ž˜”“•”˜”˜š›•‘–”—““““—”‘”£““•“•• ™“œ–™”’–˜“”—™Ž•‘’“—”ž•ž—“’Œ“•”ž’–”™”’š””“˜”•–•“Š—••›šŸ‘•””“—–”–”š””‘•‘”Ž›’’”””“‰”“•˜šž””–—“’”𔓙™”““”’•œ”“—’’—––™Ž””•’“—–“˜£’™š™’•““™”““•––“•–˜””–•–”™˜–˜’—‘–”˜“›“Ž”˜“—•–•Ÿ™˜–”“’”ž••”™”˜”•›“—””“œ”––••œ”›—›–’•””–””—”›–›™™–•—–¢–˜‘—™—˜”“”›—”“›œ”™‘ž—™••™–š”š–••••–••’‘š“•“˜””—˜—˜”›”—“–”—’——“”•–Ÿž––œ”˜——˜”—”•—”—•”–›—›”œ”•š‘‘’–•š˜•›˜–‘˜•””••ž—›”–•’”—””–˜–›–˜’–—”””•———–›–”œ—““š“š–“”•”•”™‘•œ•”””•—•›’˜”˜••˜•—–•šš–””—™”••””–“”“˜””—•”•–”•”•””›•”’•‘š–•™–•“”””••””••š–›•™••™š’•˜––•›”–“™––œ”—•œ•––’“”–˜˜œ’”••••”••“””š””™”••”–”–•˜™š˜—•™˜•“˜”••”˜“”™”•”Ž”’”—••—•“˜“”•”””––‘™’•“”••‘•”‘•™••“••›”˜™““”•ž—˜“•˜•’™•”–”””•’’š•••œ”••”˜””Ž””–”™”‘•–”””““•Ž‹”•‘›š“›’š“”“’–”•’‘––•••”—˜”“Ž•“‘–’””’–“—“•˜““•–˜”˜•–‘•“““•”““‘”—•””—˜–•‘•Š““‘’˜—”‘“–’“‘’”˜–š”’’•›Ž–“–’Œ”“’‘•“””••”’™”““—“–—”•“••“•˜˜˜”™›“”“–•”•Ÿ“ –•‘”“™”–’•™•‘—‘••”“”’–”‘“Œ•”•–’”“““•š“”•–“—–“–“•˜’˜”˜–”—”™“’˜˜š”›•”—“”™’““˜“”“˜’”†•š”—“”Žš—“’—’–““’—”ŸŽ”—–™™““““–™•’“•—’™•”’’’˜—’”‘“›•““˜””–‘”™—™‘““¢•”“—”—•”’‰’𙕒’’˜–™›”–““––˜‘™œŽœš•—””•“˜“˜‘•–”–”•—’“•“œ’–‘““•–“—““˜œ”›”–’”’œ–•–•™–•’““•˜——““‘““”™˜“—”–“’“”’“—“—“”•—–•“•˜“•”˜™˜™•“““‹•“•“”™—˜˜•“—•œ™“‘““–—–˜–—˜”‘”“–•–•’“““‘Ž•“‘Œ˜””˜•‘’—š‘“˜’•”‘––”“‘“˜™’‘”‘—’—””’””’•˜˜––›”š””‘’””—““•—”“—““””Ž•””•”‘™‘›–‘–Œ—›”–”‘”¢••“‘‘˜’ –‘•˜”–š’”•‘’“Œ“•”“”›•‘•“’•”–”—””˜˜‘•“—“’••˜’•”‘“‘“”Ž’”’””•”—–”•’‘’“—‘”•—”•’•–“–—••’‘•”—‘’•–“—•œ’•”•””“’‘“•‘”›””“‘’–’–••”’““’•‘”””“”“•””–•””‘™•–‘’–•”˜–˜’–’”—•––‘”—–š•“™—”””—•”—™•’—•ž”“”––””•˜˜–”•–”–‘•””‘’””˜”•—‘•’•—““‘’’“‘—›”˜””—™–““’•–‘›•”‘“•’”›—–”•—’”••—™‘˜“”—””—‘”›””–š••”–”—“‘”–—–“™˜–˜•””œ˜“””˜”•–••—˜˜–—‘•“”””™“”˜—“𔓗•—”—–”—“–Ž›•‘”–˜–•–““•”–•—š’‘“•“””˜’—““‘ Ž•”•˜—–˜—”””•—œ—•™™–””•œ•ž–—˜“••›–˜”–›•’™˜––””—”••””˜””›—””“œ’–•™”–”””™˜”•™ž˜—•™š“–—””–•””–”š›–˜”—š––“™œœ•™–œ–”˜•—“— ”–™”›•—›”š””Ÿ™–›–”—•–•š•–••–˜–”–•••”•”™•˜šš’•›—”™œ™••••™””•”–•›”™”˜•”—ž—–𛕕–””˜œ¤”™œ”–•œ•–ž—–””™š–•˜’•’—˜“••™™™Ÿ––—˜“”–”•™˜š›˜™—“œ”–™œ™˜”¢””•““–—”——™”””•–™”–•—–””–••”“˜—•–š”–”—’–”˜“›–“”™”•”–”’–––˜”””—“˜•˜—˜••˜••——“•””Ž•””•”••”••“••’—”–š–•‘”’”•“–”——’˜“™“™”–—•“”•›˜‘•’–’”–”—˜”’—––””–•••”—”•™“š’—”–—–••”™”—˜—”˜”˜”—’—”–”•™•“•“•—›””•””–”•“”•“––š–•’“—•”›•—––”—”˜””•—””š–—š•–’”””™””—“‘”˜”‘œœ˜–—•—”––”””•“—ƒ˜””’““““’’—Ž‘”™”“”Ž”‘“–‹”’—””“”–”’šš”“””“•”’’—”’”™•—“’“”““˜•““–˜“—˜™““““””“•‘’”““•š”–š””•—”˜”–””’“’”“‘˜“˜•‘“‘—–“”—“’’“—”™”™š”™””“”‘””’“•”‘““—”’”““—•˜’¥’‘‘’Ž•’–”–œ”•“”–“—“•“““–”””’”“•”“•““’–”Žš“““”—“”“𔑑•”“”‘“••–“•“š–‘”“–“‘‘•–“–”•“’–““““š“”“””˜”‹”˜˜””””–—™”–—˜•›•—”š””™”œ–”“”š—”””””œ—”“–”“•œ™”“—”——”“š–”—”˜—•””–˜“•“””ˆ”””œ”š–”–•“——”””’–•’””””–”—•”˜“” —•”’”–••”””˜–”›–‘””””—””š™”œ””™””””””–”š™™œ”–•ª••””””𔕔”œ˜““”˜””™˜–”™›”“•”–—–˜“˜š”””™””’——””›—””’‘”œ”””””›”—œ™””””—””’˜™—•›”‘‘“”–—–”“™”””•’™–—“•”•”˜—––ž‘Å–•’•˜–‘˜–£˜¢–“˜–”“”•••”‘”——“”—›–š•š–”•”•”—•š•–—•”ž•–“””‡””””™“’“™š–ž•†™–—“–•‚•œ˜™–š•µŒ–•–ˆ—–“•”™•–’—’—–”––™•”—Ž˜˜•””••”””–––™–“”–™¢•±›“””””š””••˜—”Ž”™””’š•˜™”•œ‘””—˜”§š™Ž••”•—“•‘”•œž•–‚•——“”””•™”•™’”˜Œ”•˜”“—™ª¢—–‘¡–—˜˜–—”“””“–•••“˜˜””“”———š“™’–––˜•§–‘•™“”—••”–•–””““—”–˜––—’™”–””˜“”Ž—“’“˜™’““’’””™–•”’”““—™‘•“˜•˜œ”•’Ž–•š””—•–™§•–—’”“‘’”–Ž–—––•–’’˜˜“—”“””’–•™”™”™”••••”––”’˜“•—•—““”—”•‘”•”›”’‘“‘’’–‘•””š™”“‘–“—™—’”•”•”•–˜—•–”Ž••˜”•“‘’—•”˜–““””Ž˜’“˜–•—“•”“•”””“•‘—šš”””“”–’•–’”•”š“›”—‘“”•–•–––‘“••’˜˜–•“””‘‘“”“”–‘“””—“›–‘”–•“““•••”‘•”““–—”“””“Ž“’“”•”Ž”˜””–›–•”‘”“““”•’“–™”“•”’””‘”—›”š’•”—œ“““’Œ“•–”“——“”‘”•˜”•–’“•”—“™•’””˜“•“”•™•”–”“”’‘”•–•”“••–•“”“”“•””’˜™•’’˜”“—”˜””–˜•“”˜••”š”–”•””’–’™“•””’•”’•“–‘’”–‘“‘“¢‘””“——•’™“•˜””–—–™”––¥–––•”˜’’“•”™•–•™™—›š“””––””“”––”—–—’•’•‘•˜™’•˜™˜–”›—••Š••”’•š•–’˜—“•šœ–—‘’œ”œ•x”–”•˜–™—––“–”–—””•”˜™—™—‹–œ•Ÿœ•–••Œ–•””—šš–•’”š™–”˜“—›•™”˜—•–™›œ–”••›œ“˜”—”–™“™’›–””™–™”•’”•ž˜”•™’•’–¡“•—•™—˜™›””™––”–••’—––“™’”•”••”–—•š˜—žš“•œ”“•”™–•”•”•š£”šž””““›™ž”— •ž•”™”—“—›”“” ”””””Ÿ•”–˜•“ž“”—–”‘”””ž˜”•œ–›••œ–”•Ž””“”””›”˜ž”Ÿ•—š›”¡•˜””“”••Š”—•Ÿ”•–™””™“•™“‘””œ˜›Š’”•””ž””Ÿ•ž”“œ“”•”“”™”™œ’ Ÿ”˜–•€¢•””””ž™”š”””˜”›”›”“› œž˜ ”“—””˜£ªœž˜”””œ””’ž™””¢š“•——”–¥•”””•Ÿ˜œ›••™••š”””™š’””‹””š—œ—ž”””•—•–•˜™””””Ÿ•™”’˜œ™•”œ”•œ”Ÿ›˜•”–œš”•”””œ˜“žœ””—•”›—”—–””ž›”•”šž˜””˜œ•–’””•””›”šœ•›••››”–˜„••””ž”•Œ“™ššš—”Œš’˜”–•“™”Œ””˜˜•™’”•”•œ””™“‘ž”“™••””””›”œ•™‘”›š”–››””•”ž””–””•™”””œ””•›•ššž”•™””šž‘”™‰””•œ”””œ–””˜—””™‘”’™“”•”–™˜š›š”–’””•””šœ›˜—“•˜‘”˜Ÿ›ž”œ”””•“Ž’•™••””•œ˜”•š™—›˜••”–•›”–•–””–š•••••—•••œ•”š˜‘•ž’•–•••˜–•‘•™™š•–”–”••”–••—•••˜––›“•„•™“•—•’–•••™˜œ–˜”ž—•”˜•”Š’—••”––”–‘••”•š••›™–—•”𔕕•••‘•—’˜–—•‘•“–‘••””˜–•—–”˜“”•›”–”™‘›”‘•–•”•™œ˜ž—™—•••—”•–˜˜•”˜‘••˜—”œš—••”—“’—’˜–”•–•‘••˜“”•••“••šœ—›•š••–”“ž§”›ž•”””––˜•›• ‹š•–”Ÿ”šž“ºž’•”‘ž™”””””£š”™™•”™‰•“›•–˜”” œ•—•—™••—™Ž”•””‹”””›”—š”ž•™˜›•°™žœ•™•–•”…”™–˜™˜•‰•˜–™“–˜’”–—”–žŽ’•”•”š•”˜’›¡–“˜””•”””—•“¦’£§”Ÿ”•˜˜˜”•””£“”𔕖•””ž””˜š˜–˜ž””œ”—¦›——–œ—””””•‘˜–”•˜š••›¢”•š••••‘ ˜˜› •”•“”•’—“–™™•š’“•™™˜•”””•“”“”“š••“”‘’–—”“—”›•–“–”•’•••—–—••š•‘’•“—–”””•“•“‘””’•–—“–””“•••”’”“””˜””“”””“–”“”–”’•••“––•””˜’”’”‰–”•—““– “–’”“’’–—“–•š––ƒ–’”‘‘–•“•™––““˜‘–”“–“–•‘˜••”“–—•’“’’••—–”–•”–“””’—•‘”’––š–‘“•“’‘›“”“‘•—••’”•”–˜˜”“•—“—–“”“—˜˜“–”’—’““•““‘“•—–••“’’““•””“‘““—–—™˜•–‘”””“”—‘•‘™’‘•–’“š“”–’˜”–––š’•””•””–”•–“”•‘—“—–’—”••“”–“‘““•”–˜˜“”””””–”•”•“œ‘”™”“—––”••“”•””’•–“Ž“‘—“”™šš‘”•”––“¯•””“–•–””Ÿ›™“”‘•—’””“–”™•‘–•”•”””•””“••–”’˜“””“‘”’””•”–‘•™•–“”•™“•“‘’•”“•“•”•’”””‘““”••”•—•”“”–™–—”•Ž¡–”–”–‘•“‘•–”›–““••““”””•”””–•“‘””•••––••’“–‘““š““ƒ’“•–•“””•“”“”““””“–›–“’’’””’•”•’”••‘‘”‘˜•””Œ“””˜”“”–•š“•“”–• “—”–’”‘””–‘•—˜ª“””–“–”—•—””””––›–“”’–““•–”—””‘••‘”–””’““”’–‘””™“•”–‘•”‘’“–””””–”’‘–’“•–•”””•“”’‘•š“’“’•”•”—”’‘•”’””’”••“”•••—“”š”’”““‘”‘“—–•“’–”–Œ”””–™Ž”™˜›–””–œ˜—“—˜•Ž™›™“ž”—›–’š˜‘“”š•š›“˜ž”Ÿš—“™›“—”›—˜”™—”™˜–žœ››™™—›’””•˜”“™”™š—š“”™— ˜’—–˜›Ÿ™””–—››––Š••™••Œ—“—“‘š—œ–˜––”‘š¡ššš‘š˜“™–™”—”’“¡–šŒ™š•“Ž–™”–›š™””——›“˜”Ÿ”–˜“—š˜–š’–•””‘œ”’š—–—•œ˜”œ“–•”šœ˜–™–‘”“›“’œ•š™–—˜œš‘’”š“”–˜™›˜šœ–””š˜›™ž”œ”””“•”•“—•”••••––“——”¢••–•••”–•™•—“–•—•”””’””“•––••–”—”–”””“•••””–””—”““––•”–••–”••–•–––““”–”’“”•””•“—’•‘•———–—– —––•”••’–”•“––”–•–“•““–••–œ—•••••””•••–”•–””˜”“”•œ•˜•”•—––••’–•—•’••••”–––•–’•–•••–•—˜•“”––”•”•–˜•••—”””••–••”••“•—•”””˜“•••––”—––”•˜™—””•––“•••””˜Ÿ •Ÿ›””””›”œ“”—œ‹œ—ž“—•“—”—–””“”˜œ”””–•˜œ”¤—””š›–“œ––˜•”•œ›”›”•ž”••œŸ˜••””ž”•”™”š ”š”œ”˜””š•š•‘•ž•”•˜œ—Ÿ””…š”–•—•“œ’”•š–—™–””•””•”›”›•”—””•”“”œ•™ššœš•œ™”ˆ—›””“•š™”›–”šš”—”˜•”™š›š—””•™Ÿž’˜™””“ “••š—•”™š’•š“”™”–””š˜š¢›™•’—•”–””›š™šš˜”˜›•”›šœ––¡””“”’Ÿ’˜ž—••–š—–šœ”ˆ›“Ÿ’™—’˜’›™—”™“—™•‘–”•š’•˜˜””™—”•–––”–”•¡••––•—–”••œ˜–•””Ÿ˜””’”›š”˜Ÿ“𙤛¤’”‘’–’”§””–•—š“{•••Ÿ––Ÿ–“”—”—“˜“—””‘”—š•••”•’””š””——œ˜Œ‘››”v •••Ž˜›”œ“‘’–”˜”•“•œ›—–˜›–ž”–“™˜—›‹““•˜•’–›••“›››’—‹•—–––š•š™———””œ“•—•–•–™™•’”°”••˜˜•’–””“’‘”Š”“‘—“““““’”‘“’””“‘’Ž‘’’’•”’’’‘–•–““”““•”’“ž“’’—“•“”’““’–”’‘š˜’’—’š“”‘”“’”‘“‘“‘““‘——“™“–’’’•”™““’”’“–š•‘••“•’“•’”–’“Ž’—–š”›’“–““š“””””“’–”””“˜”‘•”•’“”“©“‘“—“””””“•–”‘“‘”“”””““•““–”“””“•“‘‘”’–“”“•—“”–”–‘“™—”–“‘““”•“”“’’““˜•”’“‘”•‘‘“‘’“—™’“™•“““—“”“”’”š~š‘“”““–“‘˜“”Š’˜“”“™’”–“–“’““Ž“–™–•‘”‘“–”•““–˜‘—“—’“‘•Ž”˜“‘’–—•“““““”“‘—’˜‘“‹‘’‘š“”““•’‘¤““–””‘““Ž”’”“‘Š”—”˜˜™“¢’’•“’‘˜”“”“˜”“‘“•™“–“‹™‘“•’˜““›—”““’˜“’‘“‘‘‘•˜“““’“Ž’˜—’•š“‘“”–’”“œ‘Ž••‘“•˜“’“‘’’‘•”‘“’’•‘•““ž˜“˜‘‘“‘˜Ž““’–“’Ÿ™™˜‘““”š™Ž—•‘—”–”’š’•”ž–—šŽ•™™’•˜’˜““˜––”—’’–™Œ”—“ž’˜”–•™•‹•‘––“““˜“”“š“™—’”–˜“¡—”›–––” ’“–—•–‹‹™”™’•”“–•”•••••”‘“”Ž™““˜—–•“–‹—˜”—”•š–’‘–“””Ž’“”Ž”™“—™‘š“’“—•––‘——”“““—•›“’•”—–œ“•”’”™——–“˜’—˜–“““—“™‘˜š”‘ž“’”šŒ‘“‘„€““–••”““‘––Ž––œ“””’““”—“‘ž••“”Š™“«˜£”“•™œ–•–•”™—”—™•”—š™’––•””˜™”””—•Ž•–˜¤“—–””u—””–”¢•”——™“—•”“§’“¤—•—”š”›—œŒ””’š—•’•”’–”˜“”–”q’—••–””—–Š—š“”™–••”˜” •”œ•˜“““”·˜“”––“›“”–“‡•”›”š“—–‘“š”–˜–””••œ™••–œ’•–˜•”“ —“™Š”Œ–•”–”•™™•“•—•—“‘”•—¡œ›¡”•“€›—ž–˜——”””””’”‘•“””’‘‘—‘•’–”•–““Ž“’””•’”•—•””“””’–“••”‘•”“–““”’’‘’••“““‘’•““‘•““•””•”“•••“—“Ž”––’””’”’’•“˜“Œ“‘•”“”’‘”–‘“‘•ž–””•’’”˜‘‘–’”“™’””š““””•’‘“–’‘”˜—•–””’“‹“““”•™””–•’˜—””•’““”—•“˜““’“••””“™’’’“™““”™““‘’”““–œ”“““””Š’‘“›‰”•’’““™”””˜••œ›–•–““’˜–“‘—”—”—–•• •––”–™š’•”•™š•›—”“”–“•“—”‰œ•“š–“œ”•“–™•’•œ›”””–’””›”“–”•”˜”š“”—›˜‘‹“’››•ž”˜’“’““™–…•”˜—•’˜•””—•—ž–Š•˜”—–—š“‹’—””’”ž”™””œ’—’–˜›‘’”‡”““˜˜”“™”˜š™“•“˜”–š””‘“••––”“”•—”“’–”™›—–•–™’”•”˜”–—›‘˜’’—“”œ”˜–™–—’ž“˜“––•Ž”—’”•–˜““’•“”“”••‘“˜”•˜””˜—“““”“š—˜˜–”•—›•– “––”—˜“•”˜–”“”–——”—”“˜˜™—™š”—–˜”–—”—––”’•—””˜“•”–””–˜•–’‘”–™™••’•”••”š”––›•›šŽ •”•”–š“•––“••›”•”—˜˜˜—˜œ–••”˜–”™••””™””‘••˜–“”𔓕”—–”™š•—”š”˜—”—”’—•—“•—””•—”Ž’”•™–—–•˜”—’•–”‘–š—‘”“–‘•—”’’”™—•–”˜–•—“•˜•—–•––¡‘”˜˜—••™””’™’›£š––””——‘‘˜”“™š–——•šš“˜š˜˜•šž“”“––“–•˜’”˜–””–˜™‘š•“‘”“›–”‘”“’•—”—˜–‘”””””‘”–”›™™””™™Ÿ•Š’”“—•–”š“—“—“˜–Ÿ›˜’–•’”™–’••“˜”™—’˜š”‹–’”—™˜—”–”—–”˜–š”˜™›“œ•”•”™œš”˜––•”™”——˜—˜“”˜š™’—””˜™“‘•–—˜˜•’™–—’””–”œ•–”Ž”•”–””—’›””‘’”““”’——”•’™¦•–™”™—™”š””“—“•”˜”“–””•“””•““”•–”“”””““”””•••””ž–’š””””””–•””•—”•””’”””•”˜“”•”š””––˜””–”•””•””“”—•“”›•”’”–““”š••••”””•™—”””“”•𔕓”“”›”‘”š•—’””“”–•”•””•–’”–””‘””•”—”••“–”“”™“•”••“—”•””•””’”””””“”œ––”•“”••””“”‘“”––”””•““”˜•”–”“””•‘••““”””—–›–”“”””“”“””™˜•”“””””Œ“””••™‘{–“˜•””•™™“•’˜”‹‘–œ•¡•™—•„šš••”–••••––˜•”•™••œ–”œ•˜–”•”£”––™š—••›˜–——””™–•”¢”ž—•š•˜šŸ•¯™•••—•›–•¥”˜œ‘–™••š™Ÿ•š”“™œ–”•’’——“™••••Ž••–‘•••”–””•”•”—–—˜š™“–––•©–ž”•••—Ž”“–•–œ”””‹•’™–ž’ “•™ž””œ”œ•••˜”•“š•–•œ•–š•””“”•”—”ž•–•–’–”””œœ˜œš•““–•š—˜œ•–•””—–’”“˜””•–‘—•˜””—•˜–’—–“˜›•‘–œ”’š–•–’–”’”–•”œ’•–””–𔓗“”–•–˜”“‘˜”•š“””˜””—••˜š••––””‘™—‘•—‘•’”•–“˜”™™š”‘“•–““–’”‘–’˜••”•’”•–™•‘”“””’™•”•š”™’‘‘—–•“•Š——”•—š—˜”•™—”š”–™”–“š–•–•’‘”•”˜–˜™Œ“–›š••Ž—”•”“”—’—†”œ•”•—•–’–—•“”–—‘”—”—•–•™”™—“–––•”’›”•”˜“™ƒ–“‹–””‘–‘“”’’—“”’““‘˜‘„”˜”Ž›œ—••““””‹”Žš˜˜œ”𔑔”•’“—””‘—˜”””–™”“”’••“’•”–•’“‘–“œ”ƒ”–‘‘“”˜™—–‘œ””“›’Ž”š”‘ž‘Ž••”“–””˜”–”””•™›™”š”’—’’’••–““ ”“”œŸ–•””’š–˜‘”””’“•’““”“š–™””“’“””—š‘”•’‘’”–’˜”’“–‘•–”–‘‘›”˜¡”–“”Œ•˜‘”–˜œ•“–Ž’‘’˜•””“”•“•— –”””š˜™“–š›š•—“—”—™“–—›””—™¥–•••–™”“¤›”“˜™’•œ•––•”•œœ”™•™—••—›—•“”””—””š”—Ÿ”œ–—›˜“¤–©––‘”””˜”œ˜š˜ž”«š”–𔓖•œ“•›š˜›–’”“”›–•œ–—”“œ””•”•”™•™š™•™•˜™”˜””––”™œ”œ••–˜”–“—•”œ™—˜™•“š””–™¡™›–›–”–ž”’šœ–•–œœ”•˜”’’–••™‘œ™››”•–—”–””Ÿ™•›•’•›“”£š“—•”“––‘•š–‘š““”“’‘˜•’”“˜–œ”™–•š–”’’›””‘˜–›•—”’•‘’–““”˜”›’”™”‘•’—“’”›—’Ž—“—““››”“””’•‘–’““’‘’ ”–•—•–”–’’’”‘–™Š•’“˜‘–””””—’’“±•’”–”’š™’£‘•”‘˜˜š”›”’š““‘•”””“•Ž”‘”ž›•’“”’–•‘““““”–•”“’”’“™’“””•”“‘””˜žš’•“’–“™‘“––’—”””“”›”’•Ž’’”™‘žš“•“–’’›‹’–’’”›‘”“”•“•’•—˜˜””“—”–“”–‰–•“”—˜–——™–•““—’”‘–——•”—•““––“–”’—’’“”–—”—•–™•—”˜˜•’˜””˜‘”“—”˜—“™—›•‘•—’•—–œ•”ž”•˜”™•˜‘ˆ—–—”•˜–•Ž“—–“Œ–¦˜””•–”˜•—‘˜–•”“””˜”•”•™•™˜’˜••”˜˜”“š”˜”•”˜•™”•”“œ“˜——“–“‘˜”“”—–•š•–Ž–––—”˜””–”˜–“”˜•Œ”‘•“”–””˜•–•—’–”’”“”“––””˜’—˜—”————˜“™””•”““†—’›‘””–›–””“–•˜•“‘•”“–“–“‘“•––—•‘–’•œ•—™”••˜–“•‘—‘”˜—•’”˜–•’™“—“””’”•”š”—™–››•–—™š—‡•–Ž•’–”•˜–˜””’”˜–’™””‘”••‘–•š•––”“—™”š—”“–”•”“‘”’•”“——””•–“•”–•““’–’•˜•“šŽ””•”“•—–”“’–”˜•””——”–‘”’‘š“—”˜“•”‘•’š™”‘™˜•””–’š—–˜’”’““”•˜—˜•—–•˜”–“›˜˜“’”•”—˜•——•’“““’”—”’Œ’””š”˜––—”—œ“•”–—•˜•”‘”’•–“”“–œ•Ž–”›”—“””‘™’”Žš™”•œ˜‘“”œ›”“””’“›“’“•–˜ˆ”ž““˜˜”–”˜’‘“•“–¨‘“Ž–––‘“•”›”™—‹•–”–™‘–˜‘§•‘”“”˜—”œ”’™”––“–—•””‘”•“——‘“Ž””™”•–”Œ“’—•–”””“™•—”•””“’””•––š“”“”–”“—”˜ž˜•˜“‘—”“”•’”’“’••–›”‘“–•”‘••—“”–˜‘”—”—“””““’˜Ž”–“•””•”“•“˜˜•’––˜’‘—••””“”•–•˜”–’••–”•–•–”—“˜–—•—••”””’•“—•–””––‘••”””˜“””•”‘–•’’–‘“–Š•‘””‘‘“••Ž•”˜—•’“‘“–‘”••––––”””•–”•”’“”–“˜›““”””“–”””˜•“‘–”•”•”•–•–”’‘•–—””•”–•”•””•”—’——’•—“”””•”Ž•“””–’••””–””•”•’—–Ÿ”™•–”””“””—’”–•‘””””•”“’“”””–’””–“’”””•œ“’”—–”•““”–“•—“”––•’—““—Ž”˜‡–”Ÿ–”•””™˜‘’•””•“—”•““˜“‘•›“—”””””•”‘š“•—“““ •““–”•––’Ÿ”“”š–Œ“˜”˜’—”““”“’””š‡‘”——“•••”•••–“£“—”’™—“—–•”—’””—œ•”œ•˜”“’˜””–•˜“Ž•”‘–••”š“’”“•–“‘“’““•“”•––˜–””””“™”–‘“—––•‘•“”–”•›‘”’‘–”””“–”“—””™”š““““‘–––”•œ•“’–“•““—””“““’‘”””™””’‘”““–”’’”—’š“‘““—”””•”“”˜–•›–“””““””•‘˜“‘–“–”—““”“—’’“˜˜““•‘’””Ÿ—””“”“’•”’““”‘˜“¡”””“’—”—”““““’–‡”’‘••–’‘•“”’“™“ª–“”š–“••“¤“””””–”˜”•”“™“‘•”˜”’”’Š“’“œ›““’””™•““””’•““’•””“™“””•“’“—’’”›œ–’”’’“”“—“”—™““”“”“”™”•”””’“––šš“‘“•’“”““““•“••“““š’”””“‘““•“’”””“”“””““””•”•”’”‹””‘‘”’“™—’••“””””””“”“’˜“’”“””•““•““˜™““••””™”””•”“”““““•””““ƒ”“”“™”‘”““”“““‘“’”“•““•“”œ““—”•–”š“”—”“Š“•“”•—•–”‘”’–””“”’–““””“’—“””“””ž“”“”’”“‘”“”“••“𔓔•””“””••™““”•”•””““•“˜“•’‘”“”–”“”’““”˜˜”˜”’“—’“’“““˜“•”“”““”””•“—œ””—•”””“•š˜”•–•–••›”˜œ•••——••”””—“”–““š•“”“•••–””š•”œ”—•‘••œ”•”””••””•””˜•”—”˜–”™•••ž”™•”‘•—•˜š”•™•“••–•™’›”•œ–•˜–”•””—”•–›”””–”••”•”™”–“™—š””””“š“”•”””‘”“””š””””“™š—˜˜•’•”••˜›š•’””••”“—™“•”—›•”™”“™•’”••“˜˜–—“•”—•””””•—”—‘š”Ÿ’”–™›˜•—””•šœ—Žš–›“””””˜•’—•–™˜š•œ –™—‚›™––”›–œœ“—”ž•””—•”—•š’š“˜Š”—š˜••—•–’”š“™“––””œ—””Ÿ”™•‘•˜š›–šŒ˜›—‘˜š™ž•£”••™—’•s™‘•”—––˜•™”•–šŸœ¤˜–•“œ“’–”—–”™“›˜”•”•—“œ™œ™™™‘•”™”–˜“š‘••˜™›””•”•’”˜™“˜›œ–‘–”•—˜“”œ›˜™—•𔕖˜–”˜œ™˜˜››”–“–™••™™–š›—””˜”–“š˜––›“™›”‘•”–—‘•””•”ŒŽ•–Ÿ“””’•–””›–M¡–¤”˜‘‘Ÿ•¡“‘‘ Ÿ’”—˜–¡•”—–””ž©|’—„›ˆ•”–¡›•—”˜˜œ˜—•–‘““”” ’•”¢”•œ–›•›˜–†’©“–“–—˜””––˜™–“‘~œ™Ž”Ÿ•š’˜”•”•’ ‰—–•––•™’–›“˜“”–‘‘˜”’”¢˜”š˜Ÿ—–“Ž”S¡˜“•”’š™”“›•Œ–”•”—•”œž–›š¤“„•””——’𢂖•‘ ’––¦š••—𙡕”Žž”••”—•š––¡˜”–”•™•‚‘Œ’™…“–˜”–”˜”””•”“ž–”•œ””””™—˜””•š•˜”˜”š“Ÿ–“‹š•”“”™”””””™•”™š”“˜™–”’ž”˜”””œž”™”™— ””•œ””“””’”””—”™š”š•—–›”›™–”•”—””–”š“–—ž”˜˜“ ”Ÿ”” –š””˜—•™“”””””™””™’—”“™”””””“™”™™“™‘”›•”ž’—””””š›”œ”””–“¢”–”“™˜•–™”•𔕙™””–˜“”””œ””–™™””š—””—’”£™’“”””š˜›š”••””””–›•™œ—”““”›š˜™”™”””•“”‘šš•”””˜›”—˜’’”˜“’–’—–——’”•˜˜––“•——’”™–•”™–‘’Ÿ‘—˜””–•—”š“—”•—›”‘•””’•””œ”—–•—˜—›”š“ž‘™’•’”••–™“˜–•””‘–”•—’——”’—œŽ—••Ž•‘“—–—“–”—“”’—–˜”””—––•š–––•“•“–“••™™–””–”—–—”’””–”—•˜˜—’”–””š‘“––•––™š““”•••š˜‘”œ™”’™••••™–œ›š–””‘–”•””–––——š“•”“”–—•””–””“’•šŽ–•””””‘––’•—”•Ž—“šŠ‘—œŸ‘’•˜’•’‘•”™˜•Ž•””—™”Ž••””–”‘˜•”›””—‘–‘™—˜‘”””“–•”š•˜’’–”“œ˜–”œ–œœ“•–•”š™—•‘Šœ–Œ’”””‘”’•””›”œš“—•–œ““–—“Ÿ•””—‘’•’•”“š”›•‘’‘•šš˜””””œ–•’““—™””•””””œš–›š•–“••›•™™›•“”‘˜“•ˆ•–•‘“˜’‘“‘”–š•—•”‘•——𔑔–•–”š‘”••’˜Œ•’••›š‘•••–”’–™“”“‘””™““£““˜’“’‘•Ÿ“••–“”’˜–•™–’””“”””’Ÿ”“”–“˜“•‘“””•‘“’——•••’“” š”“•”•“’““‘”’–™’š“˜•“”–”¡“•”’’”—œ–“‘”“–‘“””’”Œ•›”—”š””•–“™•—“”’™—””š”””‘’“•™’‘““ª‘”’›–‘•—”“–‘––“”“””•“”“““Ÿ•“””•‘’—’“š——•”•’“—“•“ž’’–“•“•›”’”’“•“™“œ•““’‘”—’••‘’‹””“’“’ž””””šh——“””’£”™—š“š•—”ž—Œ Žšœ™™Ž™•œ•—•”‹¦”” šš–ŸŒ˜””š¨˜”Ž•›•‹•™”“–””“””’”“–””•˜œ”—~”§—”•Ž—”ª•—š‡’“›˜†š›”œoœž”š’’™™‹‘•”•– ‘’¤——™—”£™•”“”•—™˜˜”š”Š¢“•””“™”–˜“®Œ”h”š–•ž¤ ˜–”“””Ž©“±Ÿ  ˜‘’’¡•”—”•˜—Ÿ˜•~™›“‘•—Ž•–“š”™˜š”s””—™‰’u”†’˜˜™–›””’““š«”’™””““’”“”šŽ—”›••“š“’’’œ™““’𛕕”””›š•“•““›“’”•’““œ—”•”“•™””’•’”’““–””“™””–”—–š”›”˜—Ÿ–“’•”•—“–•’”™”‘••˜”–”–›‘š”’’Ž–˜Ž“”“””’””–ž”š““”””•””“–”—™˜š‘”—™“ƒ”’“••”™š“˜“•˜’“𔕔”𔑓‘—”“˜“•™”“š‘”—•“”š””””“””–‘•”˜—“š˜˜”•“™–˜“”œ•–œ”“ž””’—”””“‘””•’“’“’“”’•‘‘™•™—””””–š”–š—“–”˜••”Œ›–˜˜”•“œ•”•”••“”™–”š—˜”–Œ”š•””—••—”œ–ˆ””’’‘–‘””ž•””ž”’••’—‘˜”•~”–”•˜–˜••œ”“—š—””““ƒ“Ž•”†˜“”“˜Ÿ‘—””””–˜””™—””–•”””””“”•–˜•”•‘•‘”™””•”•˜”””•œ•”””••—”—–œ•‘””“••“˜˜••”™””™—“””›–”””˜”“—•••”—˜”—–—”–”“—”•”““—”››”‘˜”˜•“””•˜“˜“•“—”””“•𔕒œ–Ž”•”•”˜˜š–™”•™”™•’–”“‘™•”–›”•›–“–™•’•’”––Ž•““”—•–‘“˜”•””œ”””—”““”˜’“––—Œ”Œ””––——•‰”“››–••”’ˆ••””–’š‘”•‘–••–•”–˜“‘”•”‘•˜–”•”’•“—“˜—•’••”—–•’••”˜”””•œ””’•™“–”””•’’”‘•””•š‘–—’’”••‘”•“””•—’—”—“”•—‘•”””•••”•”•••”””“’’–’•˜Ž••—˜š’’”””•˜”—””˜•••“””•–˜‘š“™“˜•‘’–™’“—•—•”’”––•˜”••””••”’“—””•––”•““””—–”’˜“”—”–””•’–””“•—“š’Œ’””“–––“–”••‹”””””“™’•‘••““—›•””••’«”–•š—•——”£”“”•”›•••••”—“—–’——––•£•“”˜™›’“•”–™˜”•‘•’—•‘””’”’–˜“••‘“”•–”–—˜—‘•š”’”•—•–•˜“™•“’”””•–”“”–“˜’–“•••“””™•—–š””™“”””›”•••–“š˜–’˜”””‘’’”•——œ—••˜–™›–•˜•–”˜“—”–––˜˜•˜•–’””––Ÿ˜”˜›˜””˜—“”’–“‘š–˜’’™•””˜—”“•””•”“—•”’‘•‘”–•”–“”“˜“˜—•›“‘•’”’˜’•”œ”’•“•”–—’š–‹“™“”––š—”–“˜š”––—””˜—”¢“”“—–•™™””™”œ“”–”—••–—Ž˜”˜—”””•š–“‘”•™™˜™•”‘”—’“™‘•”˜””“ž—•”—”•—“’™“”š•›” ””’••“”–’Œ‘•’‘”’”””•›¥—•–””“”–›“¡•œ¡–™”š” ˜”ŠŸ•”“•£•••–•Ÿ£“—𔓗¡‰”—•ž•”•¡›“™”™œž”•™–•””” •””ž”š˜”˜”£š™“”–•š•”}”š—•™—“gŸ˜””•’¤“•“•™™•™”“””•œ•”›’—¡”“›•••”””¥•—¥£¢˜•£¢”€™ž”•••¤™”™–”œ—“ ”œ•“ž—“˜›¦”Žž“•—–›“–ž”•”•Ÿ“”˜™’”•™™“•¡™“•¡–’•”  ˜Ÿ•‘“–“¤””“™™›š“ž¢“”–œ™›–œ””•••–”–––””“–––˜’–˜—––”••˜•˜–””’•™•”•••——””–•“”——˜’—••””•””••–•”𔕔—”“””•‘””˜””–•––“•–•’Ž”•——•—”œ•––˜””˜Ÿ›–‘•‘”—–““›–•Œ–‘–™”š••–”–š•˜“”–˜“˜”–””•••”˜‘–””””••”˜•š•–”—•˜––”“”–›”–—––•–•–‘””—˜”˜–•˜•’”–”™”••”——”•–•—’•™—”•”“˜”•–—š“Ÿ’”•”•”“–”•–“Ž•—•–••™””””—“•”””“•“”–”“’’“’“˜””“—”–“–“•”–““““•–š’““”””””’’‹”“”””•”˜•“”““”“”’•“•––’“”™–”“’”””—’˜’””’“§’““—’””‘””“”“•–š˜””˜‘“’“‘’”—’“–”ž“““”••”Ÿ’–’”•”––”˜““–“””””””–”’”’”–—”•“””“”–“”‘”““’“”””’“”””””“•“˜“•”“•˜’“““•”•’”““’‘“’”••’“”“’”““”•˜š““”“’”–“•“’“””“““”““’””“—˜”¡˜”š‘””’•œ›”’ ”‹š–™——˜šš•”˜˜—“’›’˜—“’–•”š›””œš“”ž“‘”“”—š•”–“•––””›™–•’””ž—””˜”˜›”›•”˜›•ž‘ˆ““™™š•”Œ““™–”“Œ‘••“••”””••œ—”’—”˜™’”˜˜“‘–“”—˜›•”•”–•—’˜‹•“‘•–Ž•”˜•›“”—˜–˜™”–”›’”•˜›—–—””””’“—ž•‘˜™–˜‘•–š••–›™˜•—““Ž•™“•–˜›š——˜––”““”–›˜•—•’Ž––˜›•›™’””••’Žœ”“—•””•›™–”“™—”—•“”–•’••œ––•“””™•”•••“–•—™””““’”˜’•—•”–𔕕•™˜”••’˜–•“””œ••”‘”›”””•”˜•••–•””“•–”••™—–˜œ”“•—˜••––’–•””™™–˜‹’”•”•–••—“—’””œ”••”•”š••”•–•”™•ƒ—“”••”•™”–••›˜”Ž”š•—˜–‘—•—”““””Ž•–ž––‘•••‘“”˜—œ”•—”••–’”–•’•–”“‘œ’•’•—••“—”•˜—›––˜”˜””•”™–š––””’™‘”“–•›“”–—”–•™”•˜“™–—›˜—™™•˜™˜“‘š•˜•š’“˜•“—•’—‘–œ”š“›”œ“–––’˜•œ™“—“““˜˜”“”””••—–‘–”•”Ž“–“•—””‘“”‘Ž”˜š“”˜—•’•”‘“–—‘–‘Ÿ•’”’•—𙑋’”“”•™“ž”“™–‘˜˜••’’Œ“’”˜”˜‘”“•“”•›“•““™’’•™’™–•“š“”–““‘˜”•˜”–‰—””š›–˜””‘•š”Ž—šš”›•“™“““•Ž‘’–‘“ž“•••”•˜“”“™•—ž›•—š””•’›—›—–“”•–˜—“›˜”“••š›”–•˜™—’–“”–˜–“”›‘ž•˜’–›”™™—”—––—ž•“™“œ‘””¡˜”“””—–›–—–•‘˜—š’››‘˜–š”š“–“•–—š•˜‘˜Ÿ–’™•Ÿ”š™™š”–”š”™›˜“™”’“”””œ–”—”—™ššš˜š–š–”—”–‘œŸ–™•””›–™’””“Œ”’–’”•›–™”•”˜š‘•˜˜›”™™™š—••”—™–˜•–•›—“’—”™™™“•š“™ ”œ“˜”••›–š –œ“›•™”—››””””š‹”šš•””“™•˜” «—”œ”“”›”‘Ÿœ”“˜’”””•”•˜˜”•—•”š–˜“™™––•”•—••›™š••™˜š””””†••”–”˜™”™“’šš”Ÿ™†˜•“’š”•Ÿ”Ÿ•–™ž”·ž¯–¡•—‹•‹””œ™“˜‘””•”•”™¢—Ÿ””œ••””””–•––𢖔œœ”§™œ”•••𤔡••ž”’”’”–ž œ™ ™”•™””©˜¡—””•˜””“˜“••–”••”ž—”•”—¢”œ›•“”””–””ž“Ÿ–˜”›¬™• ™›œ—›””•“–˜š–™——””šž“–—•˜‘——–•—Ž™•™œ•˜“›’’•”˜™“””’•”•™‘——“›•–”’“••˜˜———™”——”—˜””Ž—””’”™“š—˜•–‘•˜—‘”™˜˜•’”Ÿ•—˜˜–“…Œšš”—”’œŽ˜”“™™Ÿ™•—”’––š•—‰˜•˜”œŽ–”—”œ™““—””™˜•œœ•”“”—‘”˜–’Œ˜”š”›—“Ž––›–š‘™‘””’˜”—“ ’‘”••––™—”•”š”™”’•—““”–”•™–•–••’’“”œ””‘––˜—–™žœ‘™•—˜š•›”””“•£˜“–”–”“””š–•›”š––š“›”’‰›“””š“˜•–•–›’“’–•“—™””“Ÿ˜š—“–™™”™––™Ÿ”—˜‘–”’“”“–”“š”–””••–š™”–š¡“•œ‘Ÿ””‡“™••™ž–•žŽ——œ”’¡•—“•—š›š”””””’––•’’““–••–”—“•–“ž’ž™”œ—“š˜˜”——•𙓕”•œ™“˜“–”“—š–•›•”¢“”š˜’Ž”›˜–”––’“˜––”–™˜”••”—–Ž“–”‘œ’—˜–“–˜“œ“”—’™‘“š“™ž’”‘˜—œ•™“”’•“˜••˜””””•š—”ž˜‡—•™””“›•›¢•””™˜••”•”š””š—””œšˆ•—š””””•œ—”š•“™•”•œœ••“””˜•””™”›–•™–“™ž•—”••Ÿ•Ÿ••‹”•š˜•Ž”ˆ‘˜†”‹•”›•—”•–˜—˜“””•”••”•’Ž•˜•”•””•”•””•Ÿ”œŒ•˜”€žš””””™•”™•”–œ”–”𕓗𙗛𕓔•—•““–Ž•””™“•“—“””–œ”•–”›š“••”“›“œ˜•“•–”””šš›’”—“”“—˜–’”””—”‘’›˜—”““•œ˜™‘–”––™œš“•œ“•’–’—’•—™™”›—™“““—””’›’™“•™”—“š“””šš˜”“’”“—–““˜•”“˜“˜›’’••–’–‰’•’‘Š–—š”Ÿ“”–”—”–”“ ’”•’’’”™˜˜š”‘–”—›”™–š’•™“™”›š““”–œ—“”’”š‘“”“—•”’—™—˜”“Ÿ™š‘“’“—“‘™™™–—™““—““’™“ž™™’›˜•—“™“–•“œž“”Ÿ’‘“ˆ™œ•˜“•‘”›˜–˜˜–Ÿ““’”•˜˜‘”˜–—••–“’——“““’—’”’—˜””‘š™™›’š“Œ›“—’™—˜”—œ•˜”—š—”’™š”•ž”–”’ž’“˜‘œ•–”šš”™˜•œ˜™—šž˜“™”””””˜”›œ–𔓖–“›–“–“™‘™‘•••˜˜“˜}‘““”–•’˜”–”–œ™˜ •—”—‹˜œ—””“™•”•“•—”›”——‘Ÿ“š’™“”‘“œ””𙑔˜“•“œ”œ”“˜•”œ——–˜“”“”•”™–”›•’•˜Ÿ”“•˜“”—š—”•™“••””‘•—šš——›š—‘”•••œž–žœ–•›’”—œ˜œ˜™”•”‘™•‡–•›‘““–ž–š—›š”ž™’›™¢›——Ž•”› š•‘˜’𙓙Ÿ–”›—–•– ”ž”“– ˜”˜•›œœ‘”˜™–‘”“”Ž—”“˜”˜œ••šœ—š”¡›˜š–’š–”””š“žœ—›™˜“™•’‘–™”™– –‘’’”“¤““œ’“—”“ ‘•”“”™‘––™’•’™•”‰”–•“”™™“–““š“œ“›”’š™™œ™›’œ“”’š•›–›—–‘š’•’”“™œŽ•›š“£›“”—”•”žš™™””’™’“”˜œ–šŒ•›’‹šœšš”¡““–‘˜œ•‘“”““•‘•‘•“‘“—”‘”“”—””•–”˜˜’•”——–’––””“•”‘”‹“’“”™““•’”’“”–Ž•“’˜–“““””“”“‘“’’˜“•”“””’“•–•”Œ’“’”“••œ›””–••‘–’”‘‘“–’•’“”–‘•˜’Ž’•’““™˜•“–”’•”•““’”•“”Š”“‘”—˜•““”‘‘“•“’•”””“”’“—”•“•“““””•–•–›”–’’“”“”“”™“’””“”“˜“•“’‘•‘”Œ‘“–“•“““”””‘••‘’“Ž‘““”“•”—“•—””“——•›“”“¤—Ž˜”–’“—“•—™•••”’“•“”—“”–“—““•ŒŽ•‘’’“”””“•–’––“™•—“’—””–”“””•–Ž”””“•š‹“ƒ”—˜š—‘”“”•—•’™•“—“”Œ—””˜™Œ•ƒ’™”™˜—”””‘“˜•”–š—‘”“”–‘”’—“”“–”†˜—’Ž••”—”•”—”—“Ž”•™••–——•””–’”””—ž•—™•’“•’—‘•‘”•—–•“–”‘“˜•˜”’—•™’–’‹“’““––’–‘•‘““–•—•™—””“”˜”‘”–••••”••––’”—¢˜”•”•”’–”™˜””••˜—•””•––•”••”•”•Ÿ•–•–™••”•—”––•••–••š–”•••“””•—•˜–”•”••˜•‘–”••””•••’•™••––•Ÿ™–’•’•–’•—•••–”˜•˜–•–”•–”•”–›•”—””•••”–•’—”—™•—š•ž–•••”•™š•™••š•””•˜••˜•••”˜•”—”•—•––•–“•””—”•••˜••—–”––™””˜•”••“˜—–˜–––••–•”•˜›•š˜•––”•–••••••••™’”’“™žœ”••“ž›œ’˜œ¢•‘™——™’Ÿœ•œ œœ’žœ“•””“”Ÿš“” —˜›œ‘“Ž‘”––™•™˜—•”˜“™”™””””§—•”—”‘˜–¢‘’›¤”–˜•©˜—••–••œ“š ”•”•–•–’“”™›Ž •–˜•–”—•˜‘“›—”—˜™“”›””•˜ŽŸš”‘”•‡˜™•“””—–• —””¡–•™—š—™•”Ž””Ÿš˜—”—š“”–”—”—ž™•˜•–™“–•–š™—•”•’œ—˜ž—–”™–”™”•›’ŠŽš’™”š“”—˜œœŽ””•””’¥”™––”””—“”˜‘“–˜–”•–™žŽ••““”“˜—“”—––•‘“™‘–”Ž›˜’Ž™—˜–””œ—””•Ž› ˜“’›™•˜””Ž”•”˜”›–”‘–—’“–”˜••—•š””›”™”‹˜š”•š”—••š™˜”–‘”“™‘––•˜”š–“•”‘”“””–’””’”™••—–‘“••””’œ“—–”—›”––™–”ž”’–”—•“Ž—˜–—œ””“‹•˜•“œ••”𔕓‘•–œ””–•”’–—•–”œš›”–“””’š””“•’š™™”””–’™“”””—”¢™˜–”“““”—›•”•›••–™—‘’–•𤕗𕔗’•”˜—”™”¡—•”•—””š–••“”™š”—•™–›“’˜—–•”“œ””“–””›—””——™•–””˜š’”““™“”›‘•Ÿ“’–•™•Œ”—™Ž”–“˜”œ™•’‘”‘—””•˜•Ž””˜“”˜”–•š™””ˆ—”“–˜œ”—š—’•“™“›—”–š“˜Ÿ—’’””˜–—‘“–’––‘ ’›‘™‘”•—“––•—“”™“•’”‘—™œ›””’•’˜““š•’—–—˜ž‘˜˜š˜—˜—”““–’’©–—Ž•“”‘–’™™‹™”“˜‘‘•‘Ž˜’“—•’Ž——••‘–•”•”–š—‘“”‘™”Ž”’”˜–”•ˆ———“–™•””œ”“œ””’•Žœ“–‘—”Žš”’Ž˜˜•”­”“™š—Œœ“Š˜‘–” ’”’‘Œ¥•ƒ”–”•–“’™—•–œ‘”——””ž“•”””š“’’”ˆ˜™’›—™˜”Š“••”Œ“‘•˜–—™šœ‘‘”•ž“˜š–Ž—š“‘•““”’“•ž‘”—’—“•š“’–”–””–•’™’““”‡Ž’“¢•–“•Œ”™”“’”˜›£”•–””””œ—–”™–”—”š”š”—™”—”š””’’””””””—œ”–˜”“–›–”——“˜•””˜˜”–”—™•”“—•™•“””“”””–”—™”—•™’””’˜š–•˜•š”””˜—š—’“Ÿ˜•˜”š•–š•”””™””••’”•”•–””—”––””—””“”“”–”˜˜š›š”šœ””šœ””””•–”˜””›–”‘”–”•˜˜˜˜–•”“š””˜Ÿ˜˜š™”””™””›™””˜—””—”Ž““““•›š”–•—“–”“”“””š–›“–˜”••’”š™–š”™”””’“–¡—›•“”“˜”–™’”š–”—“’™Ÿ’œ’“’™–™””—˜“•’”’•”“šŒ‡•š•˜™“”’““””•‘–’˜˜–““‡œ”““”–š›—“’‘£˜–™•““”‘”“’——”’›€•“–•Ÿ”𕠔ޓ™¢“¤”•””–›—œ•—’’““——••”—“––—›Ž“•—’‘Œ”–•’’œ“–•‘œ•“™“’‘”“”“•š—’š””‘Ž—œ“ž˜”˜’‘’””“”’“•˜”–£“¤ž’“›”—“›˜š”’“““ž“•••‘š—š‘—”’—’’”—Ž““”™¥š¨¢ˆ”’Ÿ¢Ž•“—˜—•šž“˜§’‘©®’’’ž”£”œ“œ“•‘Ÿ‡—“˜Ž˜¤“‘™•—’˜•™“À¬œ‘ª“œ”‘¢— ––“–—¥•žŠŽ—¡“—œ‰ž””šœ™˜”œ šˆœ§…¨¬—³“Ž˜¤—…™—š†’£¡˜‘š••š¥˜Ž•Ž’™“š“—˜• ‘‡œ”‘~•’•™™›Œˆ•Ÿ¢›“ŸšŽŒ”—ž‘–˜¡˜Š–••Œ˜’–‰š‘†—–‘˜’¢œ”‰¥Ž’‡”˜ˆ”—‹¤‰Ÿ¡—”¤“”•—‰™“™’—”…•œ•Œ˜‡ŸŽ“”‘”£—““­™”“’ˆ’}—˜˜s‰“”––ˆ—›–’š’— “Ž–„”›•‘™q˜’‰™š–Ž¡Œ‡ƒ™­Žx˜†‹•‰‘š—™œ‘Ÿ„ŒŒ—”’Š•žŒ‘w’‹™Ž“””…’œŒ”‘Ÿ—zˆ ™›Ž˜š‘˜ƒ³‘˜ƒ›™‰‹•–ŽŠ¡ Ž˜‘“›–‹|“„””‰›”ŒŒ‹•–”Œ–˜—•š”Žš‘•® –˜ŽŒ–•ž•Š““”“‘Š‹’”•“w ‹–’”™¨—…”’†|’Œ“”†“Ÿ‡Š”–—“•¡ •Ф“ ˜yŒž•–”——œ˜Œ˜“’‚Œ‘’“•Ž–•y”—‘ž™˜”‘‰“’”–¨¥œ•›˜‘‘™ž†•‘“ ˜˜‘ž— ‘˜•‘Ÿ’‘”‘–˜“—•m—ž–“‹˜“™”‡• “Ž—“ž“”•˜Ž››–ž‘”‰Ÿ«¥• •Œ¬‘’’œz––Ž–œ“™‘Œ…™‘š‘’Ž’›‘”“”‘“•Ž“›š•˜“˜”’™’—––“œ—’¥‰™‘…š‘ŒŽ•¬‘œ›‘™™”‘”›””’®‰’œ•“––““‘—Ž“—Œ•¡•žž—–—˜“Š–ŸœŸƒŽ™˜¤š’ ˜‘›—’““˜ŸŒ–—‰’Ÿ™ Šš n“‘›“—”—”¡—›–“”’š“”’–˜žŸžœ”“œš•œœž–—™œš£™œ—£Ž•’˜’­•““’šŽ‡¤Ž£“˜˜‘š˜“›™Ÿ”›‘œ™›™‘„žŸœ––˜Ž¦’› —•Ÿ—”¤“‘œ“ž–™šš›”Ÿ•š•}˜ššŠž•œœœšŽ“š“—¡“•˜’˜ˆ’•œ’“›ž”’œ–•™‡’˜—~•œœ•š™˜†››œ—™˜—‘œ“–’–“Ÿ”“—“‘¢­¡”‘”˜ˆ’¡ššœ¥— “–‘’‰ “•””ˆ’©¢§”‘¤«›Žœ˜–”›”¤ ‹”ª“—™•™™”™’“š•›‘˜œ©‘­’’¡Ÿ‘‘‘“ŠŸœ“•¤™—˜š“š•˜˜Ž œ ¢”•—–Ÿš•Ž™˜ž“~š£ž š›¨ŸŒ›” ””¨Ž‘—‘ ’Ž–—¡•žª˜—‡•Ÿ“¦’˜™ ©”°™–‘“™ ‘¡“”Ÿœ˜“¤™•Ÿš§Ÿ“”’•‹•™™šžŽ––²“™—‘‘Ÿˆ™ž—Ÿ¢”š œ‘“˜–‹§”‘™–š™šž—Ž„›š››™–—‰–Œ–™—˜¡‰“’“”–™’•”™™™£Š¢–”“›’™’˜“¢˜‘•˜“–œ””œ– —›Š‘•—”–—‘”—Ž—ŸŽ”— Ž–Ž™–‘¢˜‘–˜™©‘˜™›–•”Ž›“Ÿœ¤’¢”›Ÿ“˜Ž™ ž”~–—–”…•Œ£“’™•’š‡•“‘–—‰‘ž™›‘šŸ–‘——‘œ™”ž‘™—•—™–˜ ž›“˜š—“” šœ˜ž •–›³˜ž’œ––™’‘˜£žž“–ž““ž–Ÿ—Š•”ž¡‘ˆ›š–¡™œ—š“¡™Žœž™™˜Ÿ—’’’˜œ œ™—’‘šœœ—›™š¡••š”ˆœ’’‘•”‘“””›•–”•šž¥ “™—˜–Š™™š‘”‘Œ‘œ¥—’™—’›—š™™•šž–œ—‹Ž›”™•”–›“”˜——”¡™—•¢¢Œ‹Ž”Ÿž–œ”–šœŸš‰”’’œ—›–Ž—”’– ˜—–œŸŽ‹Ÿ•¡š•šŽ“—œššš™™“œ‚°Ÿ™˜š—–—’˜˜œ˜Œ˜™– …—”•™˜™œ—‘” šœ›‘˜‡’žžš ›™‘–š˜Š’›™—•Ž–—”””—Ÿˆ•z‰˜™—’œžž¤”–žŸ•”–šŸ“”›¦•£˜˜”¡˜˜••›’ŒŽ™—Ÿœ}ž•–¢›’ˆ—Ÿ–¡—Ÿ¢—™–œ‹—‹–•Œ˜–›Š•œ—“•šš¥‰–’›™–—ŸššŸš¥š•˜ž–”œŸŸ—’–””š˜›——–•®¡«“‘‘Ÿšž•¦š¡”˜’•𔄡¡•œ•Ÿ†Ššš–›—”ž“’ ¡–——˜”𕥋—¦™œ–ž™š—“œ¢š››••š˜‘›™•Œ–“™“™‘ª›››Š™“—Œ›¥”‘”˜”Œ”›˜’Ÿ¢¡Œ™š—“—š”– ‘™•—˜®“˜–•œ•Žœ›“œ—–œ˜“‘“”’¥•“ •š¨Š‘“›™…›—–—œ˜˜‘¤™—–~ž‹Œ•’­‹“”’‹“‘‹•¤–’›˜’¥””™‘”’›–Ÿ‘‘™‹•–œ”“•ˆ–’’¤›‘’”’’މ™“”Ÿ™š– ”•¬Žž‘“—’““‘‘¢”Šž›˜•—– ~‘ƒ”•˜‰””‘•ŒŸ—‘¢“‘™ªžœ—ŽŒŽ•–“‰—”™”—˜‘£•””‘Ž‘ž˜”¨‘”˜œ™£”—ŽŒ‘”““˜›…‹‹˜’•‘˜”“šš—ƒ”–‘“œ—ž’™“˜“—“šŒ‘’™£Žš’’‘•Ž’œžš¤™¡œ•›“–’ž’”•–˜‘“Œ—–‘–’Šž’”ŒšŒ™”£›“’ƒ—œ—’ŒŸ––‘ˆš”—˜”™Ž‘’œŸ Ž‘…“”š‘™šª–¢Ž™¥Ÿ—™™’Ž™”‹–‘‘¡Žš˜”œ“˜•“’‘š—œŽ“—…”–‚ˆœš˜™’™’“›œ¦š’•–“ž—˜œ–’”…Ÿ‡––•˜“˜‹’Ž”ˆš–•—›‘Ÿ•’˜ŽŠ¨“Žš–“”–“—Ÿ •—…˜‘ž’ž“”—•¡”‘”–•’—Ž•œ‘‹˜‹›™˜™‘“˜•ž–†£•’¡™ —“›‰›œ†—†›‘¢•¢‰ž¥Ž›“—‡—ŒŒ§š„‚œ•˜‰ˆ“”˜ŽŸ—‘˜”˜š”™—Œ–••œ‘“‘’–’™ ˜–‘•™“––”¡›š™ž‘˜›•€šŒ”›œ–£“›Šˆ––’–”“’“¡’Œ—•—Ž•–›‘“£””•“š‘“Ÿ–“”œ ‚˜´¨‰‡—Ÿ¡–‘–”Š™’š ™–Ÿ¥”–’’–‹›Œ’¢——–•‡œ–“–œ¢”š’•ž’‘’‘˜œ™¡šœ•“•§”•™•Šž“–‡–˜•šŸšŒ™•Œ¨š§ ‘£Ÿ”˜•—‰ƒ›§”œ”’•¦„‘†˜ŠŽ‰œ¢”•›‰“•Ÿ–•–™žƒ•™””š“™ž™”Žœ“¡œ–„•–•œ”›š—”–™“™™š‘”‘•–•œš—–š‘š˜¡™–£•‡š–”š“™˜š”Œ—œ·ž—Ž“‘–™“˜‘™˜²––—•Ž’¡œ”•Ž ˆ‘š–›––œ‰ŠŽ£•—Ÿ›“¡š—”Œ’”‘¥”™›˜¡–’™›–‘“••š˜Ž‘”‹‘„”— l™‘’‘‘–ŽŠ–Е𕕖—ˆ•›—™š‘œ””…Š˜œŸ™–†’Š•‘—„œª‡’‘š”˜¥’˜— “•ŠŒ‹›£–”‹“¡Œ™–“˜š“Ž’Ž•–“–—“…—•Œ“œ–‹•‘–”š—šš‘œ’‘‹˜˜—˜Ÿ•˜ ’—–ˆ’–‰™œ—”˜‰¤‹›¦—šŽ”—“†’•…š•š’™‰ •œœ¦Ž†–’Œ—•ž’ª‘›’–”u…’›•—ŒžŽŽ”˜‘‹’ŽŽ™›™’’——ŒšŸšŽŠ”–“–“›—”‡•ž’–•“‹™‘ŠŸ’š–—˜~†¢¤‹‹š‘“Š’œ“›Ÿ˜Œ˜˜‘™‹˜’‰•”—•’žšŒ˜™•™™…–™”“—žˆ™‘˜˜¢˜œ’Ž “••Š¡’Š–™Œš’œ•–‘‘Ÿœ¤—‡™”˜ž‰†“’™Ž–‡™Ÿ”˜Žš…”£–”Š–•‰w“˜–…š•—‘•›—•‹–•’‡Œ•Œ‚‘–—Ž–—“‹••™š“šš”¡”Œ˜š–“‘•’Ž—œ•¢—›–ž’’–œŽŽ‘ Ž˜š™–™“–Š—˜ŒŠš‹“–¡–”Ÿ­˜|£œ‰˜‡Ž˜uƒ–~—‘ššœ›”š”™”‘”—‡†™œ‘–“—„”—–‘–…ˆ—–“–£•”‘’‚ž–”žœ•“Ž–…›Œ˜Ÿ Š™–”‘š’’’‘˜›Œ ”—š„„“Š‹˜›™ ˜—Ÿ©¢–˜”–œ”‡–Š“’––›ƒ—”–˜šŸ¡šœ™”šŸ—“›‘ˆ——Ÿž–š’•Ÿ ””™šŸ”–›œ–™•š‘œ—™¡–—‘™˜—– —¦‰••‹™›”˜˜š¡“Ž‘š“ž••˜––§—¬“™¤š”’š—£Ÿ•›•ˆŽ•¢š–˜š¢ž“‘˜žœš‚™™‰¡šŽ¡—žŽš•‰Œ™£‘–ž‘ž˜••”–‘ž™™¢Ÿ‘œ’¤š™’™œ›—™ƒŒ•Ÿ•šž‘™”…Ž…‹“•’—Ž˜•”™‡¢šœš˜››”ŽŸš ” œˆ­œ—’–š–“’˜‰–‹œ¤žšŸ”’ž–˜™¤œšœ¢ž•—¢ƒ˜›––‘”–—““•‡’¡†“ª–š’—’–™“£‡™““••—“”–’¥‘ž”…–Ž’Ÿ•˜›“–ŠŒš‘ž™”š”š•”•…˜”™”Š•““šœ–˜†Ž“”œœ˜Ÿˆ…›‘’Ž”•—”š•’š’‡˜˜“Š”˜‘‹’‹†’š“žŠ••”ƒ“•Ž‘˜Ÿ”Œ‘—’–¡—¤‘µ–¡®–—š›–‘š–——‘‰˜—š™˜”•’•Ž•–𭆕’–œ™œ••¡•‰‘𔓖—Ž’Ž™–”¦’™š’–•’Š•˜šzž¥•™™™˜Œ“¡——¤Ÿ˜™““†dˆ‰“¢†‘†™———•‡“š“£Š¢—“’•’‘•–•—žˆ‡‹Ž“x—“¥’ŒŒ–Š’˜”’Œ‚˜ŽŒŽž™—‰¦‘••œž‹ ‹Ž…Ž™“•—“‘’ŠŽ–•¨ˆ™–¨~ž‘‹š’‘›•ŠŒ™‡“…£“”“ˆ‘‘Ÿ•‘˜šˆ€’”†“•—™œ–””‹‘šŠ“’‹™˜œ‘‘•›•‹”Œ—Œ‰ž™—’Ÿ’“•‹‘”‘—~}‘•¨—ޕЋ’Š˜–‘˜Ž“ž†•˜‚~—ž…˜“™²››œ›¦„‹“‰Ž“•’†‘’‡›ƒ“”ž’‰”•“šŸ›—•ˆ”–”“™›Ž˜† š¦¬–‘–™•–‰Ž–¦™”‡“uœšž•–‡Ž¢ƒ•Š”œ’–𛉔oš¦Ž}‰”—œ‚Œ”–•v’•“‘ª™„£ˆ –šˆ‰˜’Œ”““œ”•r–Ž—‘¡œ¡›“”•Ÿ—’˜—”•›‹™£—†š—“—‰”„”Š–œ˜Œž‘—‰Š‘›”‘‹¥“‘ƒ‘’›Š—‡œ‰£‘—’š–Ž““Š}™•™””—£Œ–™£—…•†| ˜‡š ¢š–š–~ˆ™˜–™–£†§—‘‡‹„“Œ‘¤{Œ““‘–•£—Ž˜œ•™Ÿ‘‰”—“’’”Ž˜†˜”¦˜—Žšž”–Ÿ’‘™–œ–“““‘š’”r›—“Œ›´š•’–†’•”¥•—– “›–‘†’Ž˜ ™—€’—™”—•”˜Ÿ¦™‡Ž¡šš’™‘•¦•ž–‰•›•Œ‡•›“€˜‰Ÿ’‡”™ƒ˜–Š—œ—‚”‘…“œžŸ€›•“—”’Œ˜’’›•’ ™˜šŸ—•’œ“Œ”¥ ™’œ—”’’•“ƒ‹”•‘’“™›˜š•˜’…“›™—’Ž™†Ÿž¥’“”””—šŸ™—œ—¬“±–“Ž–›…•—–Ž•‘—¡¢’›˜˜¤š–‘Ÿ–”˜žŽ—˜—“˜˜–””–™Ÿ–š—‹Ÿ˜›’™žšœ›‘™‘Ÿ••“•”¦˜“–‰™ ––•—ž›•œ£‘”…—ƒ““ž›–›’›š’†š–Ž––”š•œ~•—Š—›’ Ž“œ¦ž’”–™–—‘®š— ˜ – Ÿš˜–“ œœ”œ•–²ž™•ޑޙ¤¡˜”œ•— Œ”žœ™—’–‹™—¡•”™¢š“•¤¡– ‘ ›•™Œ–œ™“©›“™›•”¡¡“‹™š‘”›•’œ™ ’˜—š“”’š“Ž• ›šš”­ •š}Ÿ–——’œš’›—£™‘Ÿ˜‡œ£—›‘–”¡—˜•££˜˜š•˜š›Ÿ‰”“——”›™’¦˜˜–•’—¡ž››Œ˜¦›Œ·¡–’˜Œ™™š™’›—•˜——›œ‘¢‹“ž¤™‹—•™š¤“Ÿ”Œ®•’™—˜’šŠ š™œ”}‰š‘‘Žž˜’–’‘–„–¡—¡‰“¢––™’Œ—’‰š“”œ”•š–—”•š› •’š‹™š––’Œ•Š˜‘”™”˜ˆ™š™›š“–Ÿš””—•‘𥗓‘ˆ˜’–™–¥­¦šš™œ–’’Ž›Ÿ™œ˜––”…——’œ”š••“œ–Š˜™“—˜˜–—–˜“†’—Ž…™—𛋙“¡›’›š“—”™Œ›ž–Ž˜œ”—–œ•‹—Ž—›‘—Ž”ž›‘„œ¨ˆ‘›˜Š—–ˆ’™••°“†ˆ‘£šž›‚–š•˜˜{‰¤œ’“š–›–’˜‘ ”‹Š˜“–˜‘–™™‹¡”“››™••—‘œ“Ž–—™Ž‹šŒ’”–œ›šš––•˜”˜ž–™™•”•ž˜œ’’™”‘‹‘˜”’––ŸœŽ’šŽ—––š™Ž˜˜•‹˜–…›Ž’›‘›©•œ•ž›š—¡••¡˜—•›Š™”Ÿ‘‹’˜•”Œ‡‰•—Ÿ•–Šš“–•¬”œ” Ž“–ž––’˜“‹˜“”•‘‘Ž}““ŽŽ˜Ž¡Ž ¡›’• –š••ŽŽ˜›’‘‡žœ™˜˜’ˆ“”–•‡‘–”¢‘˜ƒ”Œ—’¨‘’“–—Œ”’›‘•‘˜—Ž”Œœ–‚‰‘„Œ‡‘–›–‹x“…‹š–™•œ–’˜ƒ”‘Š‹˜“—” ’““’›Ž˜™‘—–˜–—”“‚†Œ¢–•”’™ŠŽœ—…‹œ•¦š›”…›˜–‘y’‘•––’’••Ÿ˜¡ˆ“Ž’œ‘–š‘““‘…›“–”™“ˆ•{’”•©œ’“™•›’–——™œš‰ ‰œ’••™š”‘Ž—œ•ŽŠ“••Œ›Žœ˜”ˆ™”𔉕¢Š˜•—™“•£š™›“¨ž”’ ™¢•“—•œ–”•™–™Ž“”œ•”Ž¡™™—“Ÿž—— š”‰”¢–š”Ž¡•ˆ–¨“–Š™žŒ¡¡Žˆ•˜–’™Œ’••†–𖆙˜’–Š—Œ—••›Ÿ ›Š•‡‘Œš‹–šž•Ž•™–‘‹‘Ž””““™ ›‘™”£ž™Œ–—‰“˜“’— ’—˜š”›“—”š’’¦“•’•—˜“”†’ˆ“œ•›˜—¤š—ž–“˜••••–Ž”œ–•“¤—˜™ž“™˜’‘¤Ÿ”•’ˆ• —”“œ–—‘š˜’–š˜ž–’˜ž––•—‹”œ¡˜š’›Œ“‰‘“Š“ £™‘‘•¡‘™’˜›š™—™–˜Œ›§–——–ޤ§•Ž™•œ“‘— —‘–™“™›“—™‚›–˜’’‘–’•–¥{›•šŸš˜œœ—‘˜•’œœš“”’–“™“—–˜™‘•‘¥—’Ž”ž¢™–—•”š‘”•œ’–‘•£’˜Ÿ˜’ž‡—“˜™œ¥¡™“’•˜¤Ž“šš–†”‘žŠ•–ˆŽ‰’™˜š –‘™Žƒ™”‘˜—‘“s”—”…š™—•‘‹šš˜›‹›œ‡™‘ŽŽ••𤋗““™˜•™‹“’›„‘‘˜š”šª†ŽœŽš•™•“—‰“™‘–‘š‹›–•–ŸŒ›~‹›˜ ˆ”¤¡–’˜Ÿ“Š™¡ž•—ŽŠ˜•”©¬”Œš‘›—¡šœ‹’±˜¬•™”¤´˜„››“–§–”Ÿ‘‘“’˜Ž•œ™™“Œ”‘¡‰Ž¢¶™”›‰”’••µ—‹”¡—™‘“‘‡}–§“’§˜˜”—“›˜’œ—‰…’ž °—Ÿ˜šŒ•–‘”– ›”•Š“‹ šŒ–”” ‘Š“•‘„””›’•œ”‡•¦’“•‹‡‡’•–ŠŸš–Œ–›‹’œ—˜’£¡Ž–”””™–Žš—ˆ‰•›œ¢•’—’„™–’–’Ž“’”Œ–ž‡œƒ¡’—›‰ˆ—¡˜’ Œ‹—“”˜…š®†Œ™‡‹ •‡•œ”Ž’ƒ…Ž¡‹“Œ“œ‰š™Œ—” š—’‡ˆŒ‘‘›˜“Œ––”• ™›–‘„š¢˜ Š«ž™‡‰Š™”‹™’©”¡–€”•œ””—•ˆˆ˜Œžˆ˜”•’‡‹’˜˜‘—–¡“ŽšœŠ•˜œ¡…’‹Š––‡’„’”œ”ž–•‹Œ›˜“šŽ”••••–’‚‘™’š’‘‹—™Œ›™…˜” •”“”˜™–™“‹•—™‘‹‹‘–’–™…•—“”Žš’’‘ޑޙ•Ž›“–——‘™‰Œ”•”˜–ŒœŸ•Œ•š‰–…Žš‹——“~‰’š–Š•—’Ž–’—Œ˜Ÿ—‘› •—žŽ—–Ž’Œ™–œ“Ž—Š—¡’–Ž’Ž•Žš—–›‹˜—–——‚’–”“‹˜”˜”‘’‘’œ›Ž—‘Œ‹”‰—Ž›•”–•Ž–’’™’“”“›˜“›–‘“™–—Ž’ˆŽšž£ž“—ˆŒ’‘’’”’£››”’—–’Ž˜›—‰“š}‘›”‘•’‰•˜ š›™‘”£•““”¡‹Šœ“Ž…•‹“–—ª˜™œ¡š“‡’Œ›–˜‡Ž”‘“–––“œœ›š˜•”‚•ˆ“™‰˜‡Ž¡…œ‘’œ‘“«˜†—–“˜Ž–†–’•“—–•”‘œ†™Ž–Š—™•œ“˜˜˜œ•–˜˜ˆ™—›”˜•‘‹’™Ž™‘˜”“Œ•›Œ—…†–˜—‘™—œ•—˜‘™„’›”ž–•ž™‘’“‰•’“–—“ž–”•–—‘Š”–Œ‰“•’…•“–’–š›šš—˜”–Ž™˜•˜”‰••–•’–œ“›˜•Ÿ•’–†¦“—“¤“› —’“¤Ž˜—–•œž™˜•’’z”œ–›Š–™š•™™n–š”‘˜–¡™˜™“–¢–‘”˜–‘–™•–‘“•“’žš••š›—¤£”–˜œ’–ž„•“¤‘š™”Ÿ•œ‘–—‹—­“‘–Ÿ‘‘¤˜™•——“••““Ž•”—‘””™™—”’‘š˜“›Žœ˜ŠŒ”—¨””•˜•”w–‘••™”•˜–”™Ž“’™—˜‘š•¢—§’’”’’ž¡œ”ž™›•Š—–š¦š——Šž˜‘Ÿ¬–‹””™’•y™œ”“‘š‰“’˜•—œ˜Ž–““™¨ŸŒ¹®’˜‡œœž’š±Š’˜‹”‘”‘›™–ŽŸ¤š—œƒ™”¦“ž™•ž·œ•”—š’…ž˜••– ˜š‘”“—¡Œƒ—–žŽ•¨——˜••µ—µ¯•¨Ž¤”•“žœ’ªž–™œŸ‘“˜ž–œ˜‘”˜œ‚›‹›•——²“–Ž•¦¤ž”§’”“˜”˜”–«’–˜™˜Œ™˜–—Œ•™šŒŽ”–‹”—’–‘Ÿœ‘–”–±‡’¦–𥕙‡’Ÿ‘”’Ÿ˜•–‰ ›š³”‹™©£•¡ –•”’›‘œ‘’Š¡—‹¢¡ˆ‹˜š—“’Ÿ‘“Ž›’¥‰¥Œ†’–œ–“Ž•¤¢ ŒŸ—–“–™”™”Ž’ƒ“¡’›ž•›’•‘™ž‰–™š“˜ Š¨Ž”•™˜Ž¥”¢——•–˜‡“•‘™“ ŒŸŽ–ž™™Ž’’–©˜‘‰’–Ž˜˜–œ“œ›› ”’—‘–‘Ž”¢“‘—–’š‰—–‰”Š—¨•Œ ¡•—˜™“Œ–Œ”›”›¢–˜}‘•ˆ“˜’”—’Ž™™••ŠŒ–Žž’—–”šŒ“ƒ‹’”“¤˜˜Œ’‘”’—ŒŽ’•’”¤•”—Œ›—‘£—“Ž“’”›—‘•š””’’ˆ‘–”‘Œ””“Œ”Žš˜‘•‘˜•ž“™’šŒ‘™“—’‘–—Ž———‘”‘‹š¢š˜š•˜“’‘˜‘’Ž¢“•”˜‹“œ–}“™–—˜ŽˆŸ™”™›˜“•••…“‘Ÿ¡˜š–“œ“š’•š™—†‘”––œ˜’ˆ–—˜”•š”–••ˆ—›’¥Œ˜ ˜˜“¢•ž˜‘‘—“–“–˜ž™˜‘‰Ÿ™™”•”—’›Š•’Œ“’’”•Žœ’••’—œ•˜œ–š“£–››—“–œž˜Ÿž™™˜š™˜›–¢”šœš‘›š˜— ‘‘š•¡•šŒ”¢—’—ž™“œ’ž˜™Š–™£˜•”™Ž¦¡–—œ˜™–š™œ•Ÿ’•š–…‰›’‘Ž”ššš•–¡†’ž•–’†¡‘ƒ“›‘¡’µ—’ƒ›’™›‘Ÿ™’–˜œ—¤š–Ž”‘•’’”•’‹˜•¡œœ“‘”Œ—Ž“šœ•¢’š™”‹˜—˜—•–™›ˆ¡˜–‘¡”–‰š™‘£Ž“—˜˜’”—œŠ–‘˜š—™—™‹”’™œ•š–‹—£ž™™’–’’Ÿ“ŸŽ’›™‡ŒŠ„•˜›“¢“˜•¸“–§–™žŠ‚Ž•• £Ÿ™˜—˜†ŠŒŽŒ”˜y‘”Ž’™°œ‰Ÿ”‰Ž“‹–—Œ‘”“˜°œ˜Œ—Ž•‘™“œ“™“—‘”ž—˜”¢¦“‚•‘’˜•’‘Ÿ”ŸŸ‘Œ¤—Œ–ˆ}Žž•¢˜–šƒ•¥™Ž—¢›‡Œœž•š‘–¤””•™›š¢ŽŸ˜•Š¡ “•‘Žšš›˜•Ž”–š˜—€”‘‘‘¢¡œ›š‡˜Œ •– •‘¦‘“’˜ž‰’˜ŽŽ”‡˜¢ž”’š„‹–Œ’„˜”Ž“™•¢‹š”žˆœ™’Šš“œ”˜Œ“œŽ“¦‘š«–›‘›˜šŸœ–žŽž—Šš–”•ž—«žžž¡™˜“”£«˜‰”“ž––¨—†’š ¡¡¤›¦‘›¦–¯“—”•”–¯¢ž™¨¦§‘—œ¢™”™Ÿ‰’¡•–’˜¦‰›’•™Ÿ¸©™ª•”¡—«™«‡¡›³”¤ ™•Ÿ±––”•‘¤¦”¡›ƒœœ•š”Ÿ¡”Ž–”³›¡Ž”œ•Ÿ•ž’—±”™¦–›—™˜œ¡œ•’ˆ›•““¥”•’Ÿ˜|¡¢“Ž˜•˜•v‹––˜š›Š—’Œ’ž™™•™ž¢¡—™•Ž…–”‰™“—••–¦”šŽ‹‰”€}‘†”…ž˜˜”™”˜‘šœ–š¦“Žš‡šŸ˜ˆ¢•—‹ˆŒ—•–™ŒŠŽŠ¢ž£y‘“£“‘‹‘’’›‘Ž–šˆŽŽ’¤“˜’–”‹’™‘–’•€Žœ‰˜˜Ž‘‹‘†™’œŒ Ž™Â’™p”Š‹˜š“™“™•Œ¡’’‘†ŸŽ‰…“‘‘šŽ£™’œŽ‘•’’‘‹’‘•Ÿ’Ч”Ž©‘Ž“’Œ”Ž—›©——Ž‹˜’Š“›””𔋑‘›¹‹˜ˆŠ‡–“ˆˆŽŽŸ’‘‹›””™•–ž–›‘“˜Ž‘¢œ•Œ‘”œ–‘“”—›•”­Ž“‘˜–—œŠ“—™–Ž’“¤—Ž—Š’Ž•Œš‹——˜–™—š—“Š‡”œ—™Š¡˜•˜œ““‘šª‘†ŠŽ—“›¦—‹•‰”•—”‘’š’—’‹‘›—˜Œ¡Ž“Ž—š’˜—Žš”‘Ÿ• •—•™š™“‡”•’•‘¥¢˜—œ‘’‹•‘“˜˜›•‘“ˆ’˜’–‘–‘—”£~‘–’œ”–›™—–”¡’Ž•‰„•”•œ“‘‚•‰¦‰—†“ŒŽŒŽ“’}šœª¤‹—› ”•ˆ—‘—–’”’›ž—“•™•—œ••› “‹™‘Ÿ’’š––•˜Œ‘–—¡ ‘œ—‘ Ž‹—Ÿ”“–•‹’›“›š•””œ‘”‘’›”•“š‘ Ž–™›ˆž—œ–˜Œ•“’¦˜¡‹–Ÿ•’Ž‘“’œ‘“‘•—¤“—””š”š…’œ”™Ÿ”‘–~‘—“š‘š•›’ŽžŒ“’‘‘”•š—–•™ˆŠ£šœ—‚›™•ž———ˆŠ–˜’••“œœŽ—Œ§˜Œ˜ž™‰›–•º š–’’¢“–­‹“ “–‘•’”†Ž˜—›™”’“ž‘”‹– ˜“—™”’“˜˜‰Ž“™œ›œœ—””§™–”Ÿ“”’“†••’“‘œ“›”’šš™™ž—ŽŽœ¦Œ™”–’•—’𔑕’”–•˜’‰¡¦’™†›˜’–‹“•‘–ޤ““‹Ÿ—”˜–˜”•’•”’–¢˜™”Е𒙔•“™’›ž¥Ž© š™š˜†–Žš•¡›•™‹”œ™•‘–š“”—œ‘™Ÿžš’Ž‘›ž“’˜‘–š¢Ž‘‘–•–¢ž™Ž‘”‘•“”–Ÿ›’–¢˜”“—Š¥œ•˜•—‹Œ›˜’“•›—”—š”šŽ’‡Š’Ÿž‘•£Ž›—š­–Œ“¡™™¬‘—™“Ž–œ™‘’–‘¢“–—š”–”˜˜‘”ާ—•”˜“’˜š¡‘˜Š•––’”œ‹„š•œœ••˜ž–”œ˜’¤ŸŒ™’“‡˜’“™‘–œ™”™•«­‰’—––Ÿ¡”—“™”™–•£”ž“—¥©›™›œ—™—‘¥•–š—•˜Œ—“•’˜žš™—ˆ–Ž™†’£‘“Ž™’’’“˜’˜Š–‹œ“–“’” •š—“›”•Žœ›Š—‘›Ž™““’”“•Œ™˜–ª˜”š™“œŸ‰•Ž£—‘’˜”›› •œ‹£¢••š—•–’–’˜’šˆ››ŠŸ—†“™š¯u›‘’’xŠ˜˜‰¡ŸŽ›„›}“ ‹…›§•££ž¡›€”’ ˆ‹š†‰ š‘“Œ‹¤Œ¤‹›•€›ˆ›’š—‘š¬‘‘œ›•š—v›™ƒž”‰~¢¡™š™—‡•Ÿš† •™„~˜šŠ‰‰Ÿ£•Žž”•™qpˆ‘‡°›š¡ ›’˜”š³””’ž¢˜‹––Ÿ…“𦥑–ƒ¤z«š¢š––š…ž¥‡‹’šš–††žžž—’’Ÿ„‰ž›•”¤”Ÿž£T›ŸuŒžƒ—“‰–tš¢—~‰Ž‚–Û”›’˜”‘~Ši‡•Ÿ’–™‰••†—•––’¡•¡˜—𙓗’“Ž—›™£“–““œ–•’–‘–œ”š–˜–Ž–¢£—–˜“‘— ˜“˜’™—”–”—“—Œ““œƒ˜•——•Ž™•—•˜•›‘™šš‘ž”¨œ’’”“–“Ž—”˜˜™–›™’‹˜ž”‘•—‘˜“•¤–‰Ž–•Ÿ–“’”˜›––•—‘”“Ž–‘–”“’•“™‘’“—˜›œ–•˜‘šŽ’˜“¤—˜™—–˜—‘“˜Ž“—𙓑›•›™•ž–“–‡–“’•š›“š—’•”›˜‘–•¯•–™‘–‰–—““™’—…“’™———“”••‘•¹©””›Œ›‘¢˜š—’¥•‡”†˜œ”…““‘¥›“‘„–““™£”™–—“¢•–”‡’‡™–œ’•–—˜—–”‘q”ŽŠ–’Šš‘–}—’Œ—™–v­ŽŽŽ—ž”›”Ž˜“ž—•‹Ž–›™–”–—‘”ŒŸ–¡—‘•‘™†¤’’‘–„‘’••œ“™˜ ’––’–™•‘’˜”¡””•™Ž–•—•”‰‡–™•’˜“…š›“•š¢œ•˜œ”ˆŽ››•“—‰Š““‘––’’›““•“—™‘“¦Ž’œ”‘ˆ•’•”‡•‘ˆš˜“šœ–‘‘››†ž”˜›š“”•‹š—š•—‘ˆ“”‘Š’Ž©’™¤”މ„˜‘’‘™¡‘———’Ÿ”žˆƒ––—˜•š’ Šš’‘¡šŠ“˜‹•“’–Œ‡“•‘™Š‘“©™››Œ˜‚’“Ž““¡˜““Œ—žŠ”•††•œ¤”„‹˜š›¥•¤—’“}•¦™‘˜–ƒ‘™˜Ÿ˜“’“š–Šv¦™ˆƒ›‘“¤—•‘œŽ“𒛆ޗ‘™Œ‘“š’‹¢˜“”¦—•›Ÿ”“Ž’•šŠ Ÿ›œ‘Ž”ž•‘’“˜•‘“‡…›™—”އ‘“—©›Ž›‘””Ž‘–—“•‡‹™ “Ž›†›‘™¡‹•ª’“™“™’—“š‘™—“–‹™’—‘‘Ž™ž‘–’˜ŸšŽ™˜ˆŽ‘”–ŸŽ•š•Š’©Ž™’œ˜—›’˜›£’›Œ™”’™–Ž”•¢”¥“…‘¡œ¡Ž ‚‘Œ”£‰—™—’œ›› œŽ•¢’˜zž‘ƒ“’”’‹—‘œ–˜|“‘Ž„±˜š•–œ–’Œ•‘˜©tœ’—”§›š“‘ŠŽˆ‚–œ‰„¢˜••Ÿ‘‹Šš‘˜“›¡‘–€Ž¨¡‚˜‘Œ––•˜‘š’­’™¥š™‘…›¡¥•‰ž—Ž‘—–ž› ‹{™Žžœ’‘ž‘•““–“˜‘‹’›——|’›‹¦–‘˜ŒŽ–‘¢¢–ž˜–—”“£‘–•Žš¤–”œ¡‹˜’„—’˜•Žž–¥…ž”’’›Ž‘˜°‘˜Á“€—••›Ÿ‘’”˜“š™˜•’ŠŽ’¢…™’‘·¡•˜Œšž¥”Ÿ•ª¸Ž†Ÿ—ž˜›«—ˆ•™‰“„’“š“‘Ÿ…–’}Ÿ –•”—ž˜Ž’±—“•’˜Š•”–——Ÿ¢‘›Žš”—–•¡‰žŽ•˜‹–…–ž”£˜“™’•—Š¡œŒ•’•™£Žž‰‘‘ ž‘’šŒŽ’¡˜˜“–“™¡•“‹Ÿ”•Ÿ–‘™”œ›“—’‘¨˜‘”””“•’–š•“•˜Œ Ÿ‘˜Œ™““—‹•–œš‘š‡‹˜”—˜œ””’—™Œ‹›œ›‘—”—’—™‹‘Œš’’™‹’Ц™Ÿ’š“’“Žœ““–‘’˜†–Œ’šŽ’–‘”˜›‡‘›‘•˜ž˜›–’“¢›—’“—‹•›‘––‘‰£˜””‘–—˜“‘›’Ÿ’›™•˜”œ˜•‘š•––’–Ÿšš•——§—˜‘‘›—•—Ÿ•““™™šššžŸ•¡›‘”®”˜—••–——’Ž‹ƒ˜š’ž˜–™•‘”œ›’•’’…”’𔋙Œ•¢‘ˆ•–“‘–‹˜’•”–”‘š˜”«œ”’›“”’™–Ѝ•“„‡ž|’š‘œ’“—ž ˆ“™‘”“–“—’ž–‘ƒ–˜‹—Ž¡”’’‚‘—˜”““’£‰•“‘‘’šŒ‘Ž–†’ˆ„¡ …žŠ•Š–•›–’Ÿ‘•œ‘—“•—‰”ŽŒ™…‘‘”œ›•˜–Àœ–˜Ÿ ž¤¡Ž””˜Ž¤“‡’™–”†——––Ÿ–••›’±™ œšœ”¡““’”†–Ÿ”‹“Ž˜ˆ•¡”—š““•i›™–¤”’ƒ“Œ™™’œ—’•°—–—’•‹‰‰—˜›š“–¤™’Ž£—“Ž–—ž”šŽŒ§’‘–—Ž›•–šš–•›”—žž™‘–˜’’‘š“ ‘——™ž —¦—š‘‹—–•–•“¡ ž”” ƒ‰žœ†Žx–›  ‘¦’’–§š’––ž’–“˜“ކ𗙗–‹œšŸ›•–—”˜¢Š•œž’”•— “’–—“˜ˆ¤™–Š–ª•›™–™˜˜’”—“¤š”™‹—”–˜¡š ™—™š’¡“ˆ•£Ÿ¦™–ššœŽŸœ“˜•™•–Ž„—™~‰•–¢”——𓤖“” ”ª’‘‰˜‘¥˜š”™™£§›‹—𛕓Œ —˜–Š•¡’‘–ŠŒŽ“Žž’‘Š“–¥‰”“–©”–¤œ˜›¥’‰›˜›–—ˆ‰›˜’™ ’–”Ž–›™Ž™ˆœ‹“Œž’’Œ••—™Ž•™•œ”’œŒ|–••›”šˆ”‚†‰Œ‘•”‰”𓳖…Ž–”“”Œ©Œ“• ™›•‘”Ÿ’“˜”—›–—ŽŸœ”—žŸ—˜Ÿ™‰–˜ž ’—ž™‘“…‘—‘‘ŽŽ’”–“’–‡‘”Œ’šœ”¡–™ ’–Ÿ‹’–‹¡Œ–›š—–˜”–•“›œ”š§‘ŒŠ“Ž”“ ”™˜’‘Š™“Šœ•¡—•‹—Ž—™–Žš’‘””‘…‘’–‘’›œ’‘ˆ”›˜†Ž•‘“Ÿˆ—Ž¥™“¡“˜†œš”˜“ŸŸ“Ž‘›Ž’˜šŽŸŸœ›˜ƒ’™ŒŽ™ ”™••­œ••“š¦Ÿ–Œ–“ޤ” ›Œ’–Ÿ‘œ”‘Œ™“‘—ž”›œ—™ŠŠŽˆ••š‹“Š†‡Ž›™šš”–’•‘“–‹Ÿž|¡Š•”‘–‹”Œ•ž’˜‹‘”›•¡‹’Š‘’–•œŒ› “˜’Œ–™‰ŠŽŽ™‘ž“› Œ’}•Œž–Š˜›™™¤ž œ”›¡—•œ˜‘‘š’’›‹‹š’’••–”Žž’”•Žšš‘Œ“‘š“’Ž•š–‘“œ—Žˆ˜Œ–‹Žš˜•—“˜”ŽŒŽ›œ“’ž™œš–š˜—˜”Œ˜•‹”œ—Œ‰”“…•‹“™˜••’Ž”Ž“š¤Ž˜‘’™—–›š˜˜˜–’“˜“˜“Œœ‘Ž—‘™Ž’˜™–š’˜Ÿ–—™•”—Š—•“““¡‘Œ•Š‘Ÿ“˜Œ™Ž’’š“‘ŒŒž‘’“‹Ž‘–”•˜š——”˜ ‘ž–™—“Ÿ•ŒŽ•Œ“‘š“ŽŽž–˜‘’Š›“™’£›’Ÿ”˜ŽŽŽ“‘•”¥˜™•˜•‘’—˜Š”˜“š”Ž‘‹‹‘š›—’–Ž”š–ˆ•›“ ‰˜–˜”˜‘„—‘’”‹––œ“œ”…’—–Ÿ—Ž“•“Ž–¤•¥ˆ‘–Š–––‘•“Œ”•©‘…‡˜©‹‰œ¡’”Ž‹–˜‰¬™š˜–”›——Ÿ¤™’˜••˜“š˜’ˆ“‘Œ„™ž•š‘›—”–ˆ˜Ž˜–”ŒŽ‘Ž—“•‘˜“•”£ˆ–•“›™•”–˜’•œ˜š†–˜‹––—šŒ•˜’‘’—™˜“—˜”‹…˜‹“ž‘’ž–•Ž™’”‘Ž‘Ž”š—“š“š”Œ‘‘——…››”—˜•‘¡•‘–›“‰’‘’™™”’Ž™Šž•ŠŽ™œ™—›—®‘Ÿ’“’š“’“Ÿš‚–ƒŽŒœ‹’‘—•˜š†›“š‘›”œ“™œ •’˜˜–—–œžœ•“”•§Š™’“–•”ˆŠ‡——š“– ~Ž”˜„” “–Ž“ž§•™•™˜’Ь’‹’””™”›™—˜”—Ÿ’”’˜•¡”‘‰‰“–““ŽŠ›Œžš““™Š›–މž–›Š œ¥Ž™—‘‡“žŒš›““–}œ¨Œ›” ™¥™˜Š‹“’š”—•‰™“Œ’Ž•„ŸŸ—™’¡…£—“ž“–‹™‰‘™~’›Š˜œŽˆ–•›š‘• —’¦—¤ž–ˆ”˜¦Ž¥›ƒ›’””™˜ ‘©’“€˜™¢‹‘“Ž™ž“žœ”˜Š£›¡œ‘Š”•–£‘‘Œ‘”—•••¤—Ššž›•™˜Šž–“˜“— š›š—•”Š•“”’˜’•“•Ÿ’‘‰›’””’™˜•¡›‘Š•Ž•šš’š™ž˜––‘’”š’–Œ–‡“ˆ–œ”Œ—ˆ™ŽŒœ› •Œ—‰•„›“”——–•”—‰—œ’’“’”’™š’•¢¨‘˜‘Ÿ˜‘¢ Š£Œ–ŒŠŒ’¡• ’–‹ˆ”“’‘¤‘•º—“˜•˜‘›—“••‘ ‘˜™††—‘–ˆŽžž‡‘˜™£“”‘š”¡˜Œ˜˜–™‡’‰‘›—‰‘ˆœ›–˜”™…–Š–›™’’’˜‰—š™„Ÿ—‘ž—Œ¡Žš‹“”•Ÿ‘v‰›ƒœ”š’–”‹¬—‡‰Žž“…’˜–‘ž–ª—’˜‘žœ”œŸ•˜Ÿ™Žˆ”™¥ž “˜“•—Š›™‡Œ”›‰¡–•”””˜Ÿ™’†Ž”˜›š’˜ ¤’•––œ˜œ“›“—Œ‡›‘}†‘™˜–¤œž›–˜Œ˜–’•Ÿ—Š’’š””‘Ÿ›–™ž—“š“•“¢›’”—˜–˜—Ž—“–’“œ™˜”˜Ÿš••™˜—“¡”™™”—Œ•™˜“‘’™ ’–š’‹”™™–‹‘˜—›–“•”›‘›‰”—œ˜™š›š–—¡›‘•—™›•š‘•”™˜š”Œ™™–’¥›œšž’–œ™˜““•˜ž’—”’“‘›–œ–—”˜š•’žœ•–˜•˜•Ž›•š—‘””’œ•–•’š–™–—¸’Œ‘˜¡Ž˜™š›œ—’’”•Œš›…•’”˜—›‘–Ž—’˜“œŽ˜•›™—˜˜ž”›Š˜‘ƒ‰Ž’“Ž”Žš““Ž’‹€ŸŒŒ•˜’›‰“”’•“‡ž’’š“•’’’…Š‹”|–’–™˜”Ž™‘†Šˆ‰™’’”‘•‘‘˜—‹¨—‡——–ŠŽ‘™“’••˜””“€˜™—‘—’™Ž‡•”†—‘•‘ŒŠ‚‘”Œ‘““ŒŒ˜”’’‘‘”™}Œ§‘–“–Š“–Žš’—’Œ„Œ•‘’Ž”•”“’‡Žš—”—•w’’‰”’—¢”’‹’€Œ””Œ•”–¯™‘•Šx“•”””Ž““”•‹”„š œ’——Š‘“£š„“šŠ—˜‘•˜“’“Œ”…Œ¡”‹Ž“Žœ–œ™”’”‰‹›”‘™‘˜˜ “”‘——‘Œ‹˜ ™›‘–‘™“•£–‘Ž™“••—Œ—„ž—”’™¤Š—‹”“‘ ’™‰˜‘¡‹Š‹“š’ ˆŠ–Ÿ•|”’Œ˜«˜œ‰‘“•¢“”•—”ƒš”‘‘›—¦™’š“Ž–šš˜Ž“—¤ŸŠ‰ž—•¡‘”—›š–¢›‡‰›–•““—›‘œ“z’‘‰Ÿ–”„“ŽŒ•”‡›’‘—š¤š—Ÿ•–š˜˜Œ“Ÿ“‹””‘›‘›—Žžž›§¨ ”›™¤ˆ˜¢‹š•¢¢•’“’™§Œ– œœ“‘Ž“˜ž—”—œ›¢ˆš›“˜–œš›—Ž•˜’“~•–¢ž‡˜†””žš•™–¦Šž•“”‘‰¢•™•˜š™–Œ“—‘£Ž‹“œ”ŒŸ–—¬›ž§’Ž•—™•¡’™Œ€—š“š•“°š••’‘›—™‘š””Žš’›”˜–”–†“š˜™••–›¢‘—“›™˜›‘›•®–’™‘›–’˜™”ƒ˜–›˜ž‘Œ¡”™˜–šŽœ—Ÿ’ ’’”‚§Š£š–›ª’™•œ˜—‰”‰˜™—™ˆ“Œ““£›’”˜• –—•”‘ž“—‘¡“¤–•š‰””‰’š™ž†˜˜‡–Œ’‹Žš’”•‰‘˜”š–œ˜”‘‹¡˜‘¨Ž‹™š’”¤œšœžŒ|Ž˜œ›š™•œ™š”‘™¢•𛕙ž–¢’“”˜“ž¡Šš•‘œ˜†¬––ˆŒ•ž˜› ‡Ž–‘’’“‡—‹•±“˜˜œ™Œ‘Žœ‘‘žœ‹Ž™¦™–‘“”‘”•••—ž’’‘œ˜›‘ ¢‘ƒ™–™‹¡””†œ‘‰‰Œ—–’““˜œ§Œ“‰–Žž’—ž‘©Œ•¢‘šŸ›‡š——‘žˆ—y˜ š–—¤’„š”Œ˜””’—•™ž–œ›˜š¥–“››˜’¡}¦¦›–y¢•œœ”žŽ˜œŽš‰šŽ™žŒ–‘’¦ž˜‹’”›–”›Œ•´’‘––|šŽ˜“ŽŽš•Š’”Ž–™–’…•œ•ƒ“˜ˆ›Ÿ‰ŒŽ”¨–—’”ž‘•——Ÿ«’’œ•Žž–’”’“‹“š”—›™Ž–˜š“¡–“‘—“—‹š’“–Ÿ“‘•””“››šŸœŸ“––…ˆš¨–Ÿœ†œŠŽ“““¡™–¢¥›’‘Ž˜’¡—”¤–˜ˆ‘›…¦œ‘†•˜˜‡—£››–“¢{–†‘“‹˜›–”™‘–—“Œ—™‘‹©“”“‰”™œ›œ—“•‹“‘–”˜”•¥–£Ÿƒ¡–Ÿ‹•’›“£š‰‰Œ—–‘—œ–™ž—’˜’’†–¬–‘˜¢–•Œ ’”—–––š—›™–žœŒ—Œ—’’“ƒ•–˜ˆ‹Œ’–”™˜Š”–—™¦˜ž•˜”•™ž“—™“œ„™”ž£—ˆ’“š–›–•——‘›‹’–•‘•œ–š•™˜‘”š„”™•š—˜–›’”Œ‡”ž‘‘˜™““š“’¢–›”Œ‘“—’†„–’Ÿ—Œ–¡–Œ”§™§” ‘ ’œ’’—¢™’Ÿ†”—”‹…—“”™˜—–˜Š›ž—˜Šž¡Œ•š••Ÿ‰œ—••˜œ˜›˜œ™žŠŸ“˜‚Ž–“˜¢Šœ’‘•›‘“˜”–”›’š•Œ•‘–™™’•“•““”¦š•œ™š”ޣ𕛗‘¢ ¢¦¤”¡ž™‰–™Œš” ’Ž“—Ž˜’‹•¢Œ’Œ•—™•”¡“’“¡š–“š–š› Ž’’¥žŽ™“™›–‰‘œ˜•š•‘š™Œ¢‘˜˜•š–Ž‹‘—“¡˜•›“‘–‰—‡‘’’‹Š’’ ”˜™Ÿ›™ˆ¤•‹”–š™ˆ˜‘•’›•Ž“Œ“•¤”Ž‘‘—˜”Šž“‘‹•’––’š•‘—’“šœ””’ž˜—˜Ž•••“˜–‘–˜™‘™ŽŽžŠ“——‘Œ”‹’š““‹•x——£™¯Ž•Š”—“’š”––™•“–”—™‘œ„œŽ”Ÿ–™†”¡‹‹ž“—”Œ—–‰•š˜‘”–Ž‘”•—”“”«—”™Š‹”’Ž–’”—•œ”—”Ž”˜˜•–”•Š‘“’’”›œ—–¤Ž‘‘¤“—’¢”‘““‹•’Ž”œ—“šŠ’–’–•‘š‘™•“›™“‘„’”Ž˜¬˜–™‘–¡—›”¡‘–“™–””™•§œŽ–•—”‰” ““—–˜›¢•š’š™Ž“Ž””——›™—–™ž—„’œ˜—’ŠŽŽ”“•—šœŠ”“”‹œ“œ•†—ž˜Ž”“—“ ›’—¼““Œš“¢“¤˜’–¢•¡—–‘’™Ÿ’“›˜“™ž—˜‘“’–—˜Ž–’–Œ“˜“š–“—™–Ž••’š‹˜••Œ”’Œ“•”‘ˆŸ‹˜˜ž‘”—‘›š‘“‰“•‘”œ˜–’—’’–’—•–•–——š‘›Ž˜’•‘•”•›‘˜˜—“˜•–••‘˜¡š’Ž”ž—ƒ’–‘“…™‰“”š˜”Ÿ’—”–˜“”˜—•˜š—”Ÿ•›”•™’›•‘›•–“š•˜’š—–™”‘–˜šŸ‘Ÿ“œ“•—”™“›’š“˜ ˜™›…—˜œ••”“–”””—”“—ª—™Œœ˜ˆ•—˜™–‘››–Žšœ›“™– Š“‘’“™¤“’‘™—••›”••”™”š“’—›’”˜±‘–”•‹”‘šœ™–——•”–Ž”‘”•’—™œ—–™š•”™”‘”–—‘–’ —™•Ž”˜ž™™–’”“”•›˜‘”šŽ—™•–””†“›—˜˜¢–š‹‡—•’–Ÿ–“•˜˜œ“˜•—’¡‡”¤ †™š„—Žššš’•’–”–‘¯‘‘–‘‘¢‹š”Ž‹£”…|–˜š…›‘–•‹”‚‘‘•žŒ• —Ž’–”“–˜Ž•˜•¸”…•’‰‘•œ’‘£œ˜€”Ž—”£Ž«˜•™“–›œ“™Ÿ‘”ž”Œ˜’ŽšŽ›ž˜Œ™žƒ¦•š ’š‘›¦›‹¦Ž™Ž‹Ž–”“’Œƒ™Ž¡”•Š—™Œ˜Žž’›™Œ›‘’’š——‰–“¤“Ž–Š’‘•”‘˜”–”š™¤ˆ“™—‘”•šŒ““•˜’Ž”Ž˜£Š‡˜‰‰ƒŒ“ž•—š•—ž‘“™’ˆœ“’£™’–“‘™˜Ž–š•Ÿ‰–’––™˜—–••¤Œ–“šž—”“‹Š’‘‘—™–••—“‘•˜œ’”™’“—˜’}“Œ——•…•–•š‘™•‘’“™š˜‘”œ’•œ„–‘—‘“‘‘}”‘’—ˆŒ™”•™‘|’†Ž˜“˜™‘“˜”†“‘™Ž˜™”š——–—™œŸ–¦™š’˜•“’”›Ž™›š‘‘—’“–•“žš—”–•ƒ“™œ”Œ˜‘”–‰–—‹’““¡’”Œ‰‹“‘Š‘–‰–’‘””™‡‘™•Ÿ–“•š—Ÿ–œ‘“–”À–›”“š†’“‘–Ÿ’ŽŒ’•‹’‡•“’š“——œ””““’Ž–““ ”“•”›•™““˜£”“Ž’š˜•’•’“•—˜“‘›Ÿ—Š•–‘“š‘œ•”˜“”•—“‹‘’–œ›”““™š’˜’’›“’ˆ’‘—‹”‹•“‡Ž”•Љ“’“–““–“…“––’““Ÿ’‘•“—’—‘˜”˜—”‹’Ž“““•’—’”““Ž–“‘ž“––˜““‘“—˜’’’•š‘˜“‘“”‘“˜“””“•–“”‘——Ž“•›“š™‘˜”““œ˜”›ž¤“——“˜™“••—”’—Ÿ•‚“ž•Œ—–”›“’™‘” “œ—’’™—•”•–™˜™•ž••˜™‘–—–Œ ”˜¤•ˆŽ””ž‘•Œš˜‘˜—”‘Žšœž¦˜ž“–—›–‘•šŸ•“ž‹‘š–Ž™“–”‘‡–œ”Ÿ‘•”–š–‘““œ•Ÿ”•’‘¦˜•œ‘–‰’œ˜—𑤑 ”†›œš–ˆš’—–Ž”•™’•ž“•›£˜‘Š”‘“———˜Š“‰©Ÿ‰˜˜¡•Ž—†“ªš—‘‘˜–™›••‘™–•ŠŠš‘•{“““•…›Œ“‘–šŠ›“”Š––†——™›–—žŽ•’ˆ‘“”š•—•–™˜‰”‹“ž“𙓛•”‘Œ”””˜•”“Ž’™–Ž“—‰”•œŒŒ—••“–š˜›‘—’“—–’“‘’ž”˜™’•šª”‘›ŽŸ”›”Šžœ‘”Šœ˜š———–“–Ž‹’• ›“•™†’˜—”—•“˜˜—˜•›—”‘Š’‹––•’”ŒŒš•“•“˜”–—““Ž••Šœ””——™š”’‘œ‰•’’Ž“”“”š™ž•—”“‘›””—––ˆ”•Ž–‘™™•›Ž‘‹˜£š›–—œ–“ˆ™—™—™ŠŽ–Ž’Ž˜”š–™š‹”–Ž‘“’œ¦‘•š•˜‘–•”ž•Ž™¥‘𛑒œ™’””’•‘ˆ˜”™˜‘˜”¡ ’¡‘”‘”“Ž“–‰’˜‹š”–”“œ—–’‘Œœ’‘“–’—Ž•š“˜Ž‡’“Ÿ”—”ž”“’Ÿ ”˜Ÿ’‘••Œ›’–“’–’œ™‘‘˜—š“““‘’šŒœ••Ÿ“”‘Ž‘’›’™–’™—‹”˜’‘‘ž˜“ž——“’‘™’˜›“’“ž•—–Ž’’‘—”“™ ’𙕋‹‘”‰ž“Œ‘›ŽœŸ™—••Žš““Ž–Ž’––’—‘™‘•‘—¡‹‘”•”Ž”“‘•–š—“‘—Ÿ’”““Œ—“–”‹—œŽ•“•‘‘˜”—”‰’–›”“›•—“Œ‘žŽ”’•“œ†”””‘—–•š•’˜’““œ”œ”‘“•Ž“•—–””’Žˆ•™”Ž”••‘“Š‘•–•‘•š“–•••˜”’•‚“’—•”’‘“”“š’––•”•‘–‘•‘•‘—‘‘”™‘–ˆ–“‘Ž”›”””™“–•‘–•”–‰–•”‘•’“—’”™‘”——‘™˜”““—‘””•””Ž’’–˜šš—¡Ž”ž˜žª‹•“™”•š‡Œ”„—‘—”™›–Œ›™¤‘’ ¥”¦ž‘”‘Ÿ’‘˜œ©œš“𔑣 ž•†Š§Ÿ•“•ŒŽv“˜—’—“x”““Ž“¤¡‚”‹Ž—†’Ž“•™““„“±™˜›“‹˜†œ —’Ÿ…Ž“’• £Ž›™’–˜–”ˆ™œŠ”’—¤¥”‰š‘•›ž‘™”™œŽ™— — £™ˆ‘¥–••†™£¡œ™‹•‰›–›“—””Ÿ›Ž¡“¤™œ¢“𔡕’”˜œ—‘š ™Ÿ–™ŸŠŸš“—•“…‹’”—™•——‹•‘–›‰•™‘Šœ““™Ž˜””’Ÿœ•’”‘•”™”™˜—š‘“‘‘‘•œ“•’…—•‘†¡Ÿ“‘“–•”•Ž›’Œ–›š˜™’“—“›’’“¥”““”€”Ÿ€–—‘›‘¡“‘—”’—‘“œ˜›–“•—Ÿ——“’œ’›”“‘¤’“’‘˜••Ž—”•”’Ž›’’–“•“œ”œŸ”””›–’•”’”’™¡Ÿ”’””’—•“•›“””—˜‘—•˜–’˜’’“’’™¥–¢Ž‹“˜Ž“•’’ŽŽ’‘“Ÿ”“œ••”Š—‹—ž’• —˜šœ—”•˜“•š••’„™–Ž¡’–™››˜••”™Š–’–—“››––˜Œ“Ž˜—™——ž’ž“‘˜›™–œ•”˜™—”™˜™‹‘™™’“”š–“’š“™š˜’—’¢—™•‹œ—˜š‘ž—ˆš•ž––—œ•}Ÿ™—Ÿ•”“•¢™—¡£“˜›•™“˜— Ÿ–˜–‘•™˜•˜’–”•’—™›–’Ÿ•’““› ž™™›—–˜•›•˜‡‘–ޙ𙦓™™”ž“—–““•“‘•š˜‰žš’™•—™££’œ›—™šŸ˜’’‹“Œ••‘’•˜’¡‘•–•”•”™›“˜—‘ޑޓ—’’–•—‘–”™’––œŽ•”’’”˜‘¥ž–’Ž“”“—’’•—‹¢–𛓒 ˜žŽ––‘¨•’’‘•ž“–’Ž—•™—–•›•–“–Œ‘˜•™‘š‚”›–‰Ÿ™”•¡Š’‹’•™”””“˜‹—–‘“—œ’“’Œ•Ž–™››•–••—’—‘˜•““˜”‘”™•˜ ™™”‘“’•™—”••©˜ ”—•‘•›™’–Ž“‘“‘š–—–ŽŽ“˜‘‰Ž’–—œ••••”™›”’’’ޓЋ””‘Œ˜•—”’––›˜”—šŽ”‘”Ž˜•š’’“’“™Ž˜“ޙޒŸŒ™”‘•Ї‰“• ”’˜›•˜–‘‰•”˜““›’–Š“˜”‘”“‘”ޓ𧑒”–‘•’”š—””““‘“•“•¢Œ—™†’”š“”•Ž–‘•—–¦”“”˜‘‹‘”—““Ž’––Ž€‘––’•••Ÿ›–•’–Š•¡˜–Š“’••‘”“š‘Œ—““ž™–’š•˜“š–”—›‘–’“’–“”š•œ•“–•›’•ŽšŒŽ–•š“š–“‘‘””š‘”™–”‘•——•Ž•…‘“–š”•œ¤’’““”˜—™”—‘ŽŽ‘‘’“™“Š––’”˜•”““—–’™Œ’˜—‰• •‘”””—“¢“‘“•››•“‘––––”Œ‘¢““’žƒ““•’–”— ž–”“”–¡”Ž“–“”Žœ˜‘”™”‹Žœž”¢–œ™”“”•˜—’‘›–“•™–—˜’—”•‘’•–•Žœ‘“•™’š‘–•››–Ž’™—Ž’—•ž•‘”””Ž’––™•—–Ž“”–š“‘—™‘›—š•”—›”“”“•˜›“””—•Š™”‘’“–Ÿšš‘‘‘”œ˜˜’Œ–œŽŽ‘•™™”˜›–•™‰“”ŽŽ’—›š”’—’‘šŒ’““’•”˜‘’–œ‰““šŽŠ™—š–™“Œ“Ÿ—‘—˜•’‘•‹‘”“•˜•’”–““’‘–”Œœ‰“›”˜•›“’™––š‘™“’”—•›£’ƒ—’’•މ––““–Ž•˜™’•˜“”””™•Ž£“™š–™ž™•–˜“’‘•’—–—“˜Š•–”‹”““›‘’‘’–š”˜˜–•›•—–“˜–‘’—ž‘މ›—–™’˜‹’”“—’—•–“—”•—˜––›—˜–š™š™Ÿ†”’w‘–˜–“™–š”•Œ™ŠŽ”““™••Žœ–›••–‹•’”‘Ž•›¡”žž™•”™’–“–––Œ‘œ‡•”—–—•œ š–¢™’—˜–‘›“™œ“–•›“š•—™œ–š™£Œ˜—‘•“–‘šŒ——™™›…˜œ™š”¤’‘——”–—–š–˜™–’ž’••–Œ˜’š•—™—ž”—ž•“–”˜–•––—””—‘Š”™™”›˜”•š–•ˆ¢ž‡–’‘˜˜“™˜•‘¦‘™Ž“››‘‘”ˆ¨‘–•‘Ÿ–›—™‘œ™––’˜“œœŽŒŸ•š¢Šœ—™“›”™—”©”˜‡©˜”Ž”™›’•šœ’˜Ÿ‘ª’”–’•𛓓¡‘•“˜‘‹—”Ž•”•’’“—–£–Ž’“™‰’•“’›•“’“•—™‚—‹”“‘’“Š”’š’˜Œ–‘Ž•š”š’˜˜”•š•’”•Ž”¥Ž–ŒŽŒž’“—›””Ÿ¢–’—Ž“˜“š‘“’“›’Ÿš‘˜”ˆ’•š“‰˜••˜”•˜ž£•𙕔“’™Œ”•“œ••›”—ޑ𑖔’™—’‘Ž”™–©•“’ž““’‘••›’•™‘˜–Š—”Ž“‘œš’”˜”šš‘‹™›š”˜’Š“’”““¡›••ž“ šžœ‘”œš•©¥’“›™¡•œŠ‘—¢ ´•›”–’™˜””˜’“ž¡š”¢Ÿ“œ£ŽŽ‹¥˜—•¡“¢–ž“Œ”¢—˜—•––Ž’‘™˜š—“¡‘Œ£—{б†œ¬– “‘ˆ– ›•›•›‘‘𔦋•“œ“¤¢Ž¥£¢™“š˜““”‘™–›–š–›Œ––•™™¤š˜Ž‹ž¯ §™‘——¡’——™¡™“𔡒¢Ÿ›¢¤–’‹œ˜ž›“žž¢’–˜•˜œ‘Ÿ¹—™Ÿ—™‹‰›“•ª–“šŽ¬’œ«—–¤•“’‘œž’ޤœŒ›²¢– Ÿ§¥’’’™—˜’œ›š–™“›˜¢¢—’›ˆ‘šœ–˜˜— — ––“œ”‘”–™š”˜‘˜–“™šš™›–š•§–”–›˜—¤™’𛕤ޒ’›™—œœ™‘—˜•—˜“˜“—¤˜Ššœ›•™ž’—“–—ž’“™“˜”•””š“˜™©£—“‘˜•—’’˜™˜”“–ŒŽ–”•˜˜“—“•‘›–”˜£Š ˜Žš’‘–š”•ŸŒ—”“’•šž“™›š””–𛢛—“”›”””˜––“Ÿ™š˜™Œ‘ޢޗ—Ž ™š–™˜Ÿž˜™‘Ÿ•“™’¡“”“˜–Ž˜œœ›™¤Œ›‹›’“œ›–Ÿ–˜˜›ž’œ——˜š“’‘ŸŽ •˜Ž—”ž›š“Œ››œ•™› ™œž––—¦‘’“šŒš–‹š™¡™“Ž“—”š‘’‘—†Œ™›˜’•’›•—–œ’•™’‰Š”šž•™˜›–Ž•”š–““¡”“– ™€“Œ‚”—”˜£•Ž …¥‘œ‘š‹Œ”˜Œ ”•˜–’™–›˜’œœ”’’’‘šœš™˜š–‘œ››˜”•”••š•••–›™¢Ÿ™š™›œ“’—©•™’šœ˜’’’™–Ž–œ›“˜š”™–Ÿ’“ ” ›š–’–‘މƒ—ŽŽš™’œ–ž‘–“™‹‘›–—œ”™†“˜‘˜ “š–¡˜‹ £‘ ™—“ž•–˜’Ž“ŒŸ•Ž™ˆš¢š£—Ÿ–“”†ˆŽœ›•‘œ”™š‰š—Ž“›‘“Ÿ’ŽŽ–œ›’Ž••”žžœ‘›“•Œž’•›ŒŸŸ–—˜¨– ‘—“—‹ž–‹›‰œ‘˜‘•š›”›™’–›‘–›•Ÿ˜ƒ›’ššžŸŽ™™˜’–˜—Ž‘’ —••’Œ–ŸŽ•‘…œš”™™¦ž‘˜”z”‘Ÿ˜š’™§˜Œ”Š›››Ž——”𔢋£–‰œŸž—’›¡‘”Ž““”—–•’ˆ’˜„ ——–“”š—‘‘œ’š””–‘Ž’‘މ™˜’“ž”›’‰‘•“Ž“‹––ŸŠ–•‘”‘œ”—’–˜ˆ“š›”’œž‘¡Ÿ›‘ž‘Œ“—Ž™™ˆš™——š–Ž‘••—™‚–—ž˜š™’—šš“–ŠŽ•–‘›‘£”–™’Šš‘‘—•”ˆš––¡œ†—†Œ™ž›‘”š ”•‘’–’’†”•žœ”š•“‘–“”•’•š‘›˜™Ÿ’œ—“¦ ”‘™‘›’¡—š¢—š‘’š’•›† •œ••š”šÅ“™Œ’’–œ”¡“””Ÿ˜˜Ÿ—”’’Š‹”˜–’‘•žŒ™••ž”“š—“˜•ŒŽ•‰“™•¡˜œšž™‘’™“’”ž’Ž–€Ÿˆ“’ž’š˜š‰•Ž–—””—šŽ’œ™¡Œ˜‘›Œ™—“ž‹“—’£“ž“™–”Ÿ…ˆ‘†–’—œƒ‘œž—•¡–‘˜–—¥”˜”—𙓕›Ž®—Š¢“–—”›“Žš˜‹‰–Œ‹™‰––œŸ˜–¡”›‰—–‘—”‘–¡›‘“’›£œ““Š™Œ¨˜“­—›’”˜Žœ’޹•Œ”˜“Ž‘…š•”““‡•–™Œ›”š ™ŽŒŒ‘•Ÿš’‘‘“–‰”Œ’žŒŸ““’‹‘™‹‘™ƒ—“‹–›™‘’Ž˜”—’–•œŸšŒ‘”“‰“𛦓™‹“•“‘˜˜“‰¥™“ŽŠ”‘“‹˜›‘ ™’–’†Œ˜“˜†–˜’•‘›Žš™™—’…•˜•’Ž””‚“Ÿ’–‘˜•—•ˆ˜’“œš— ™£•’•‰˜—‰œ“Žš“š‘‘’š†}•š—–’Ž™•‘•‘–™Ÿ–‘Œ–Œƒ›Ÿ–›–™‹‘œ””’™”˜“—†”ž™Ÿ‘‰ƒŠ‹–— –’™˜•‘™†Œ†‹š•’’“—“–‘—š—“Œ–’Ž“”š•‘“”š‘š–”–“’’Ž•–•••“’•“—Ž”“–‘‘–˜’“”œŽ””–”“•‘‘—•—–’—š˜”•”’•“‘’–”£•˜›”’‘˜“𔕖™‘’•œ–‘”‘˜˜™˜˜“‘‹˜“—••”’’–˜—Ž”•”˜“—–—™”•ŠŽ‡––•””›…“——•––”—‘’••‘•’™Ž–˜–”•’˜”•”–Ž™—Ž›’”™•’—”‘•˜“•Ÿ•—•”‘—Ž‘‹œ˜š‹–‘—•””Š‘”“’Ÿ—”‹–” Ÿ–•“”“…”’“Œ—”•“™•Œ˜œ™””™™““•™‹™ Ž”’™š’•‘˜’¡“˜ŽˆŽ•Ž©¡Š™–—–›’•”›œ’€”Ÿ”u•‡”‹”˜•”“’¢—˜Œ”’–’‡”–‘“‘š”—…”’›¡›‹”‘•“Ž—˜ž—‘ˆ“‘§‘’y›—”ƒšŒ’Ÿ›”—¥¥™™•‡˜™”Ž¢–‰’œ–ކ••™œ|€“—˜“•š•Š–“€•“•œ–š•™“˜‘—•“œ“¤•˜† ˜‘›{¤˜’Ÿ“’’—“Ÿ™š”™”“—–™ —–‰œŽ“‘–z›ŽšŠ•’”’Ž””–“”š™–’›’“”˜”™˜–š“•–š–•Œ”“œ•˜–”–—ŸœŽ——‘™–—–”•›™••”–˜—“’—ž •–“ž•œ”“””™——”—–•˜––Š“—›‹š›Ž€Ÿ‘•›‘’š—†ž‘—–™Ž‘™™“’”š—”–’•“‘”œ“’›Ž–’––˜”““–”˜’”’“‘–›—˜œ˜˜‘‡œ”•˜“™•—’•™•–—˜˜‘𙕖”””™™•–‘—•‘˜•–••™“‘›“š“˜‘‘•š¶•˜Œž’™‘—‘š–¢–•š•˜••™Ž•˜‘‘‘•”…•—ŽŽ’”‘“š’•ž¦•ªŽ‘‰“™’•—–˜‘’’””ˆ‘˜•’””˜•Ž—¢™•‘Ž’—˜‹Ž‘–‹Ÿ”…“’°”’–Š–••–Œ”›Ž‹‹–‰”“““Š’™–“Œ™“š˜“™Œ‹”““ŽˆŠ“—“‘ˆ‘˜•𛂑…—˜™˜’—“ˆ—‘•’–‘’•ˆ”›’”˜˜“‹‘˜’‘˜ˆ‘•”†—“’™’’”Œ”“Š‘•Ž’”•ž•“•‘•–•“•’’”‘ŠŒ–Ž”‹‹’†˜”’Š‘™’“‹–˜”‘’•˜˜•Š‘„““‘’’’œ”—Œ‘’‘Ž‘Œ‘”Ž„““–Е𛖗’‘ަ•‘¬–Ž”œ’’”™¢’ŽŒŒ“Ž’“‘”ŽŽ–‰Ž•Ž˜˜š™‹‘š”‘ž”“šŽ”Ž¡“•’•‘•’‘‡–“’“—‘”’š”ŒŒŒ±’‘—”‘–“š“¢Ÿ‹•©”š˜“™•œ“”Š‹•‘Ÿ—‹‘–œ”Ž“••’Ž¢’œ•£‘”Œ–•¡’Ž’ŠœŽ•™’™Žš…’“™•˜’–’•”””•Ÿ“•‹‘€‘—™‘š›–‘•–‹–—”““”•–˜‹˜“•’‘|˜””’‰£‘”™’Ž‘•Ž”‚‘ޔޕŒ——Œ®œ’¡—ŒŒ¦‘™š”œ• ‘–”š•’˜Œ“™˜z”“’•“›–‘š‹’Œš“”‘’“‘£Žšž‹›‹”‘‹¤’yœ“’’“”Œ”—œ“›¦—Œ– ”‹’”¥—–†¬œ‘‰’‡‡{‘˜œŸ• ›™ž”˜€ŒŽ”‰˜”™‘¶Ž””’‹”–’”Œ’‘˜Šˆ—Ÿ‘Ž“™œˆ†–‹ ™˜’”~¤“œ‘™œœŽ—‘–”𗫍¢•‡“•–’“‰†•ŒŽ¾¥†œœ™–•¤’“™‘™š——”“¡‘–’“‘“›¦†”—žž‹–””š–˜›ž”›––Ÿœ˜“•’–”’“•–—’—”ŽŒ•Ž–‘‘ž”’’œš’—”’‹‘•“‚•Ž›‹¤Š—•¡Ž———’›—Œ’—˜Š—˜Ž—šz•‘ŸŸ‘ £™˜™™“‚“•—‘Ÿ˜‘ŒŒ—“™š”•¢‘‘™ ”¨”Ž—ŸŽŽ‹˜ž”‰–‹“›•–‘‹’–—”•’’”—‘œ›”——˜—™ª”•°”˜”“š›Ž•™—˜Ÿ•——”‘—“™•™‹•“”Ÿœ’–œ‘•¢ ›˜ ––›’™“’––““•”‘™“—•™–˜™’““‘”“’”„’”’•‘‘‘“–“–’–•™”’“”ŒŠ›‘Ÿ“’”“•˜’˜ˆ™•“”ˆ™ŸŽ‘–’‘”’–• Œ“””‘Ž””—™•”—›˜•–”’™’‘”“›•—•Š¢‘“‘•‚–“—’••š–•—¨‘•’“™”˜ŒŽ™˜’•“Š•Œ‰£”Œ•“–—•‘“–‘–“Œ“—‘—’—–’Ÿ“•’“‘žŠ’—’™”ž’•—•‘“˜‹”’•‘•Œ•‘••–’”•š–’–“”––”™–”‰—’’’•‘Œ’›’’—‹—˜”––—‘ ¢•”›š”Œ––Œ“œ¡’“•—”•’‘•–ž‘––Š˜˜—Ž‘”Žš›˜” “‘‹””“‹‘’”Œ•˜œ•–˜ˆ—–˜”•™š…” Ž™Ž˜—“•›™–—”—’“•”’•œ“‰¤ Œš„ž•“•†‘––‘—•”—›–’”™›—››’“™š˜žŸ˜””š•™‹™Ž–››“‹‘”•™˜˜˜ “™”’”˜š‹•šš‘‘–”š™ ™§‘——•™””˜‘‘” –˜Ÿ–‹Ž‰–”’”—Ÿš”š™—–™••˜‘™—š˜¤–£–ƒ“’’𒒉ޙ–’”ž‹’–’™“—˜”“™šŽ’“”•“˜‘Š–“—”Žƒ•’•†•„‘ޑ𑕓¡˜Ž””œššš‘š••“œ“‘•ŸŽš“ž™”“”™‘Ž˜”“’••›ˆœˆ¡Š—”“’š†š” ’œš—Œ”–›‘Ž“’——Œ’–ŒšŒ‘«—”™‹—’””“š”˜“•ޓ𕔗“‘’“Ž™“™–‘•‘–“”Ž”‘‘Œ‘–ŸŠ’›šŽŽ”˜›’™•‘œ”••’‘–”Šˆ™”š–˜”“˜”Ÿ’¢‘˜”“”–š™——“˜Ÿ‘ž’š˜‘«›•Œ•œ’“•–•œ–œ™–’™”ž“™—–—•œš˜™Ž– ‘œ—’”Ž”–œš‘—“¢˜’šŒ‘‹–•˜‘ž––›™˜”žŠ‘™›“ž’ž“—“œ’—Ÿ•—“¤™’””˜—š‹Ÿ—”•œ£–—–‚–”“•—œ–‘ šŠ•˜Š—›˜“Œ’˜”›’—‘›’˜ˆ“𛑛’•˜›š—‘““›”’’˜›’‘•—‘–““¢ž’¥—š•“˜‘˜˜š””›–›Ž‘™—›™– –’œ™”——ˆ–’–ŠŠš–‘›’’”‘Ž›“™œšŸ“¤Œ›¤˜†“š‹——‘œ‹˜Ž¡—–¦“–†”•‘•˜Ÿ–‘‹—‹–‘ŽŽ¡“†”—˜•¡”‘’’ŽŒ“”“—“™‹‘’™šž™žŒ¥™“Ž–•Ž”’Œ“™™••”¡š•‹‘”“”›’¡’“’‘˜™™•Žš“œ–œ˜”Ž”œŽ’‘•›£š”œ™¢‘•”–Ž’–‹Ž Š“œ˜š”–™• •ŽŒ‘”‹Ž‘“¡ž’šš‹˜–ŠŽ–“›—”›’‘Ž›‘£–”£šœ–Ž”‡‘“›“‹š›’˜™“›”›­—š›ˆŠ¥œ•™•š—†—˜—“Š——”˜””•Ÿ––••‘—‘‹{’–š“Ž’˜’™™˜’•‡••“””“„‘••£˜š–’Ž––”‘”œ˜’­™™”“’‘“•‹“”“’““”™Ÿ›Žš‘˜ˆ”““‘”’˜ ž›’ž™‘”‘‹“‰ž•“•‚˜•˜“–“–—‹“›Œ“Ž“ž˜Œ—ž™Œš‘‘•—œŽ’”Š˜Ž•—ž–¡‘—•–𑕉““›•‘”“Ž›“›’–›Ž•’›–‘”•”–˜””—–”—™’’••Œ‰‘—›’’”ž“‹ž““ˆ•”—•–™¥›••’’’š‹—š…œ’œ‘••”–§£—…™¡„ŸŒ‘’ ™ ¡…£›–¡“Œ‘”‡‘„–“¦¦¡‰›•—œŒœ”Š˜’—‘ŸŒ˜˜‡”’—¡™“žŒŒ’Ž˜‹‹”’•’Ž•€˜”š¬ Œ“•‰™‘—”ž™¬šŽŽ”’›¿¢¦›¡£ŒŽ ™–‘–›“’¥“†‘˜’—“—“’‘‹Œ—“Œ‘‘œŒ¢’š|”‘ž˜•—“Ž˜˜‡’“‹”˜“›”˜”’š‹’”•œœ’|›–ŠŽ’‘•º˜žƒ¦“”•“–¡¡Œ’„š™Ž„‰‘”›‘—’–œ™œ•‘Œ“”œ…–™Œ’œ‰˜’˜”’“’Œš““’Ž“Œ“•–”‘‘™’’•“’“–š”š”–‘“Œž“——––”–uŽŒ“™’‘Ž‘•˜‘—˜”’”œ˜Ž“•••œ™””’˜’“‡’”œ“™’©š•”–—‹’ ”Ž•š‘“˜¡©‘Žš•“’“•’˜’™¡ž“•“š©“ŽŽ””’•‘””””›™––’–“‰“”“”•™‘”–š–”Œ‘‘•”Ÿ““’“’’”“ŽŽ›‘’‹“—“”—Œ‘•“Ž”Ÿ•˜–›œ“–“—’–““’•´žŽ”’–~Š——œ ƒ—“˜••Œ’˜Ž’—œ–˜ ‘—–Ž™›œ“—š”Ž‰‘œ©ž—’–—Œ†˜ˆ“–œžŽ’‘Šˆ—¢”‰™—ˆˆ’’œ“”˜š’•“™‰Œ‘œ’‹”•“˜Œ‘‘‘—”–”Ї’™–‰”•‹’Š–Ž—‘™œ’–˜•˜’•“Œ’”—Šœ•”–¡š”˜–’›š—’•‡•Ž˜ž•“‹’—”•™–•’„š’•Ž™›””“¡”™™‹•’‘’••˜Šš‹¨•Œœ—“–’——¦•¢qŽˆ‡‰Œ’Ž›’”››ˆ›‘¢Ž”’™—›“’””››“š’˜””“š’“›“‡š‘“–•–••™œ–Ž’•†‘‘•™–•’’”’š˜“™‹““••”˜œ˜”†“””•––~““•™™”ŽŽ™‘˜’•”’Œ˜••”Ž–…”•˜“•“‰‘—“—–Œ••”‰”–‰œ””—•Œ“‘•”œŽ”–¥ž“𛓕‘Ž–”“““›‘’›•“Ÿ’’”¦“•””––“—––‘“‘••š‘’Ž”’ŒŽ™•“™”’—˜‘™“’“”ˆŒ‡‘‘œŽ–’Ž•••ž›–•Ž–“–”–”’›š˜‹“š––”˜••—˜•¡–ž–š”–•Œ–…˜“œ“•”›”›š’Š•˜œ’”•“—‘”Ž¡“›–—”••“ ’’”Žš––•™“••›˜—–Œ”––™—™™™”–—•–œŽ™–“Ž˜¬•˜™—™”’Ÿ•ˆ–—žŽ•ˆ–”••–ž—™””“ ””‹”›—˜ŠŒ–”•–“—‘‹˜•˜œˆ‘™ ’›—”˜”–˜˜˜”–•”šœ˜“—“‹—Ž–‹››”‹™œœˆ™•”“•›Ž‘‘–š”›’”—“—‘”Œš‘™˜™•šœ”’”•œ—ž’œ™™—””’”’œ‘š›‘œŒ›–š™šŸ“ž”›•¡“š”–“˜–••š™“˜‘””“•¢‹—šš•˜™“£’Ÿ’•™’›–““›ž”“ ˜š˜š¡™’Ž•—“Œ–•©’ƒ“ —˜–‘˜Ž™™Š ž•ž•›”‘Š–Œ›™–— “––œ–‰–•—’‹”“Ž‘••ž—–”•‘—š’ŽŒ•¡˜œž—•’‹›˜œŒ–”˜‘‘‡‘”˜“•™•”Ž“”—Ž’š˜•”¢™——’Œ•‘š™–™“™“Ž‘˜–”¡“—‡‘’–™©›šž‘ •‡”ŒŽ”•…˜•’šš–—‘šŸ™™–”•”Œ’›˜”’’šŽš’ž’ž”˜™”••ˆŽ–›•—•“—‹˜›Œ’—’“‘›”›‹˜”•™‘“•››–•”—Œ™ˆ•––‘”’‰•“™—”—‰•…Œ‘›—˜‡§˜•–˜•““‹™—™–‘”Œ——•’“˜™ž•˜’’ž”…•›—Š’‰’—”‹’‘––””—Ž”œ™•Ž”œ–›–„–‹“—‘•“—˜‘“ˆŠ˜ž—œ’™™—‘Ž›”¨Œ–”’——’‰’œŒ–›˜•˜‹’•˜—””šš”•˜–™›—˜š›–•’…ŽŽ˜‚ˆ’‘˜ŽžŸ”Œ•’“–’œ™ˆ‘•šŒ–‹—ˆ–‘ˆŒ’››“š“Ž’Ž—”›””—˜›•”‹…£”ŠŒ‹”‘ˆ‘’’‡™†šˆ¥ˆ—š™”‘”˜”—–˜”“š–“š—’™™œ›‘Œ˜ ””•Š•“–’™’˜š“–•˜•‹˜•Ž–š­’œ˜•”“”••š—””Ÿˆš’š“—™’…™˜Œ“•‘|Œ”•”˜Ž‘“’“‹•“ŒŽ–šª‘‘‡ŽŽ›”Ÿš——›˜Ÿ——„‰–Š‘™™ —–„œ•—”œ–‰› –Ž˜“•˜›˜’Ž••ˆ““ƒ“•”•—”“šœž’’‘ž£“–Ÿ–’”•£”Œ¢–Œ–“’“’—““—•— Ÿ’”‘™–”’Ž–¡”«••‘¨˜‹€™ž–—›‹˜—•—˜¤’š™Ž™Œ™”‘™–ž”„™”„š’¦Ž•œ˜•‡Ÿ™›•¡“˜“ ’”‡•™š›¤…”›™š™™š•ž˜•—š•›‘—›ž˜’—Ž–’”‹˜––•Ÿ–”™’™•˜“›˜•’ –“£–—”–™®š˜œ‘“™©–™“š†Œ’—––’‹‘žš’‹Œ””’ ”¡ššš›“™”Ž—˜…”—”””–“ž’“”––š™’˜š‹Žœ‘’ †‘™—‘Ž‘’˜˜š›‘’œ™Ž•–™‰’—”’Ž—˜—™–”“•–“““•—”œ‰’Š‹“—Ž“¢Š”™Žš›œ—ާ““‘›–ž™–›™§’›¡—“–š˜™¤’•–‘¥‡‘” ˜“ŽŽ’’—” ¡‹•‹’’–˜šž–‘ˆ—“œ—›™Ž–Ÿ‘™“”—“š˜‘˜›”’––—•–˜Ž”š––˜š”•™Ž‘––”–š“Š’Ÿ•”š••—–’‘•–‘•”™‹—˜‘˜–’›’‘™£”•–™“••š–—˜Ž›•ŒŽœ”—••“–«Š•™˜’—š‘’”—˜Ž™“Ž“›–’†œ‘›–—‘–’•–Žœ™‹š“—‘œ˜”™š›’–¢“š›™›’™‹’”†‘–’•—•¡’–’¡‘”’•‘˜‘˜–•˜™š–—𔓢™’ˆ—™‘’——™œ—–Šš˜—“––’’›’‘”‘šŸ•”‘œš’•“’Œ’“•–””—Œ‘”‘”™•••˜”u˜“˜“”›“’—œ—§œ “›——› •‹Œ”‘—•”Ž—™›–‘“‘‘•‘’–š‘”ŒŸ’’ˆ•ŽŒ˜ˆ™–”›—™’™‘‰‘’•”Ž•š—–š£“Š”’“— ““ ž—”””•–”Ž’‘—‹”‘‰¥‘~œ‘’•–£Ž•—•‘™‘ ŒŒ“—Ž•”ž’Ž–Œ“”–Ÿº‘𔑡œ™›•˜—›Ž™‹‘—Œ–’‘œœ‘“’™‘“““––œ‘“ŽŒ”‹”“Ÿ‘—ž‹”ž¦•’–›’™‹•’•—“”“Œ”””‘’˜–Ž’‹Š™›•¤Ž‘Ž‚š›—Ž‘—•‹•’”™™—›‘¡”Ž–—”›œ–— š•‘œ’•“š”š”—–•‹˜–••™““‹”–šŒ—•’–ŒŒ–˜Ž ‹—›Ž‘‹—’‰Ÿš›••‘”‘–™‘˜’š‘ŽŽ™›ŽŽ’Œ›‹‹“Ÿ˜›”œ“  ¡’›•œ•’‰’˜”𔑙“–™’އ“‘‹—¢’‘˜‘›Š“•›––›š”™–”–™˜–˜––…•¢˜–‘–•‹Ÿ‘šš“”–‰ ”Œ‘™˜£“™’˜š‘‘’ž”›Œ“š—‰š–‘š•”Œš£“’’“‘€‡™——ŽŸ©™›’¥“”’”““‘–‘•—™”•—•–Œ•š˜•™“Ž”‘”Œ™˜”™“’”–’—Œ”Ž—“Žš™–™–”‹¥’Ž•‘ –’’––’–“›“˜—”œ›“–—™”•™”˜•”–˜—•˜“š–”—˜œ‘Œ’”“–˜‹™‘™ž”Ž—˜‘“™”˜—š•™–••˜‘“’Œ‘–’”—“’”™–’‹•”˜¢’”‘‘Ž—‘˜‘”—Œ’’Š•›–”•’‘—œ”’“”—”•Ž—”–‘’‹˜’‘‹™“˜••™—›“”š˜–•“—“’¡•Ž™““–“—••’–’‹Žš——“‘²—‘›˜—‰—“›˜“•Š—•‘•“’”ˆ•”“‹›‘Š”¡ŽŠ–—˜˜™•™–•™˜•”‘¡›‘ŽŽ—‹’š›–™Œ™”•š•œŽ˜¡™¦™ –“Ÿ”’š–‘œ—Œ•“¤”®š™ˆ”–”“¡‘‘“——‘‘œ‘•’“›˜ˆ™’”•™¤“‘‹‘šŸ•”¢¡ ““”—™›˜Š™¦˜–†•““—œŒ™•———’¤”–”’‘“–Ÿ‘–“‘Ž’“—“˜Ž‘ Ÿ‘‘”™˜”œ”œ‘–—–™“•”Ÿ“——Š–››ˆœšŽ’—‘šœ›•£——Ž—˜”––“™”“Ž‹–™žŒ•’“ –––˜–™“—•Ž—™”¢“‘‘‘–—š“žš‘•‹–– ›š“›•‘Œ“™™‘”•’••¢”•“‘–˜’–Ž—••šŒŸ’‘–•–•”””›Œ‹“–˜›Ÿ•~–‰‘’ ‘’“˜™“™™‘š’““•‘–”—’Œ›‘š–ˆ—Ž““›š“‘މ˜—˜ˆœ–™Œ“˜‡”Ž“—’‘Š”•—˜“˜”™œ’’•Š—”“””••”Š“˜–————Ž“’™™„••”‘“™——’—™”’–‘“–˜’“˜°’¡š˜”œ‘‘•“‘‰Ž‘•›–˜‘•——”–ž’••“—““œ˜“™”™’””Ž”•˜ŽŒ˜|—œ”Ž–’•—™˜–” š˜ŸŽ•”“‘”’—˜™–“•“•“–—ޔ𓒕˜‘˜“˜’–˜“•””‘—•—’‡™“•—”’™™—Ž•˜®——’–’‘—”“•˜’”†™‘š•˜“–•‡”Œ‹—œ•˜‘—““–—•–‘–•˜— œ™Œ“›™”‘“”–—›–—™’—›—™‘™“Ž—“—’œ–””‘–Šœ••”š”›——•••‹’–““•›—–Œ•“’—•““”–Ÿž——ž•—’˜”—–™˜“”“˜˜“’”Ž’•Š•–›‘–‘“‘Š’–’Œ”‘”•“—•–™‘š›””’–•š—“”’¢‰””š””Ž”’˜›š“˜’”“›–“™‘„˜–”–”š– –›—¦’Œ”’“““•Œ™‘™•›š©’Š–š›Ž•Ž’•”—’‹–’’ž—’‘‘“’’‘𑓤–‘Ÿš‘”——›š“›“”“’”œ’‘‹˜”Ž•–”œ–•Š’Ž™Œ””’‘—“™™‘“—“’‘—Ž“˜‡—•’–’–‘›“¡Œ“”’–˜˜™˜–“’”—•—𙋔‘•œ˜”—‘’™šž——–šœ˜—˜š›Ž˜‘–œ•›”•“•˜š”“”œ““š•“–‘ŽŸšš‘—•’—œ–“—”•““™™•”‘™ž‘”•••š—”š–˜Š’˜’”¡•”‹“–•—’””—šœ˜’“†“˜‘œ›™¨“‘ž“”𢔠”’““”–——™™ “—“‘™“ž‘‘–”““”ž˜–”“””™–˜”““š“— –”––˜˜˜–™•””š”•Ÿš•œ•˜“‹”™Ÿ•›š•’–””“””””š˜’•œ•˜’“š˜“‰”’”™—˜œ˜Œ˜•–˜”•™”šš›Ÿ’–˜•™¯›Ž’“¤“‘œ–•––”•Ÿš–”¤š•Œ±’›Œ™””ššœ’Œ–””›‘’š›–˜œ˜Œ“¡¥‘›Ÿ™—𙓓›”Žš ””’™™œ“š ‘š–—•“‘—𕦕—Ž™–›Ÿ››–”’—˜œ’•ž“ž››Š››’³•Ž— ‘—’Š•”¥Ž’ž ’—¥›”‘™‘–—‘‘””’–™™Ÿ”“˜ –“••š§—ž˜š”™’”“˜›“¡ž˜›š’’™•“Ž˜›ž”’—™–š”žŽ“œ“•“š—˜›”˜¥› ›”›“£‘Ž’Žšœ’›™’”›™’•’ž’“™ˆ•—˜™‘“™Ž’‘“”‘–‘š’–‘‹““Œ’‡““‘“’Ž—ž”™•™˜’’”¥š‘–‰™“ޑޒ‡‘™‘’•’˜’’“‹““–Ž–’Ž”’˜“’‰’š•‹Ÿš˜•ž“”‘‘’•šŠˆ’Ÿ•ˆ…˜Ž™¤•“—œ’žš†ŽŒ’—“–’‘“†‘“œ•‘”‘’–’””‘“’™˜“’—œ˜™‘““’”‰’‘’’œŒ˜Ž‹•“•‡‘Ž˜’“”™”“’›’’‹“’Ž“”’†‘œ’‘˜‘”‘’–š’•“–•˜’—Š’œ˜‘˜“Ž™š›–š‘’“‹“”“™’¢–”“—”¢”““”“•‹–‰—›••Ÿ‘—Ž’––”•‘—“œ“˜‰’Œ“’“‘‘•—’‘“¢—–•™•‘—‡‘”Œ¢’‘Œ”’Ÿ™ž“ޑޒ—šŽ›“““‘‘”Ž˜•”“••“’•Ž—’š“’—”¦‘’—œ›‘› Š– ƒ•‘’•ˆ’”‘—ƒ‘•šŽ“““”œ‘“ž”•‹‘“œ—–œ–™’‘’’™’‘•¤“šŸ‘’Œ“•’”“”Ž–‘„–š’š“’™™£”‘””™‘‘‘“”“•™•“””Š—œŸ›”“˜›˜—”’‘“’•–Œ•–š’“Œ€š•žŠ¢””˜†’•“–“”𔑑‘—©•”‹”˜’‘œ’’™¢›“œ‚§žŽ”Š– •Ÿœ”ˆš““ŒŠ“™’Ÿ››Ÿ–‰“™¨Ž”—”Ššƒ¡—ŸŠ–Œ˜‰˜Ž’“‘”—‘Žƒ’Š”—‘‘¦Œ•”•“•§†—•——žš{©’šš•’—‘Š™—œ”‹˜“–Œ•—•–£––Ž˜‘–˜–ŽžŠ——Ž•‘›—”Ž™“—Š‘™œ’‘”š¦™Œ—“––”’š‡™‹€ —“‘–œ”•“——––›“©¬‘” Š•ƒ›’Ž’“–˜§Ž•§–™——Ž‹‘ž——˜•˜‘”“•”˜’˜Ž›‰š”—™•™š•“š–”•–—••Ÿš•œ–‘™—–™•’•š“œ‰‘ˆ˜›˜™™˜ž˜™•˜‘– ž‘Ž’Œœ™ŽŠŽ‹—›Œœ‘š”•’šžš—•—š˜”Ÿ˜”‰Š¡Ž–‘œ–•’˜¥‰‘”™™š˜œ–•™¡–›•›–„•Žš””–•›“—‘ž†™”˜“•—š—ˆŽ‘›š—™‘ž’ŠŽ’““‘™ž‘¡”… Ž”œœ–Š–”™˜•›’—““˜’›“’“—™’•’Ÿ™˜•–Œ•š”š—”˜”©““˜••”š”—”“œ˜–‘”–—¢Ž““Ž“™”™—–•š–•–˜• —˜‹˜‘‘ž—’‹” ””š–•”˜•—œœ‘’ˆ–——”“–”œ›”›–’”—‘“‘–•“–¢‘˜–“‘”˜¦”™’‹—“–”‘”™ˆ˜”””––“”™†˜Ž–“—–”–”—–—“¡”‘‘’ž˜‘“••”’‰––•“›•“—˜””Žš˜•–’”’—“ Œ•˜¡•––••™‘“—‹‘–Ÿ“–’‹”†—•‘‘–‘˜”•Ž’—Š•ž–™–š—“ˆž’”›–›’”“ ‘–“˜™Ž’—“•—‘•’–––”Ÿ“—”™—™™•— •–—‘–‘••Ÿ––•“–™‘–”””Ž—–›š”œ’”Ž”–““”˜–™•”–•’–™––•—•–””••—–›—š•™••™–•™’–”–•—–—–™“–“”Œ™••“˜Ÿ“˜‘–˜––Ž–•“ޕ𓕖–––—––”•“–•“•™–“œ••–”–‘–•›—š‘™’•™–‘š”–”• ™˜•–‘ƒ–’—•ž•‘˜–Ž•›”–Ž—––››˜–’’Œ–˜‘”˜’“”–Ž’–•“–˜—™••––™–––‘—–™™™””˜–—“Š•™“•””–œ‘••’‘‘–š•”•“””“•™’”•”™”’–—––•’””’“•Ž–”––”Š’”–”‘•“••”””•‘’š––”””–”””’–—’”’“Œ•’‘˜•–‘•“Ž•‘•—’‘•–‘’–—™•¥Ž›”””–•—•¢ž•”•—˜”——“ •˜”™—–•”•”“•—’’–Œ–’”ˆ—˜”–—•”•””••Ž”’”“””Ž˜”™“›–•–““œ•Ÿ“—––––‘”•˜™••–•—•Ž••–•—”“•‘——”‘”–““””’Ž“‘Œ–‰–“––•—’–””–“’•—’”–““”–š––’’‘“”““”’“••—‘–•“‹—–˜—˜—Žš”•ž’——‘“––—•“–•“”–––‡—––”–›””“˜”•’“’–•“ “›“–„‹•”—–˜–•–œ”˜›Œ””’–‰””œ“”‘•–––’™¡––—˜›––•’ ‘–””—•–••–Œ–š‘–“—’“”œ”—–”‘”–™•–‘“•“•–”“™’•”˜Œ“’™›—“˜”••••œ•œ”–’”——˜•–›”˜“‘”‘’‘“–©–—–”“œ—“‘’“”¨—–š™—˜—‘”•™•’“–•¡••””““•••‘–“•–“•”—”“•””˜š•”Œ—“–•••”˜˜“œ˜‘’š“•”™”•’˜“”•“––•”””—™—‘–”•”””””–“—••••–—••””–—•”–“””•œ—’“”ˆ“ž“”•¤‹•–”””˜‰•””•™•”—”œ•’’˜“”•’••™•”–•˜“””‘’”˜˜”•”“”’•‘–“”š“’•”’”’–˜š–•‘•“”‘•—“•–’“•”’”–— “”Ž˜••–””•‘–““””–“—”—›––“–“”’•‘Œ˜•š””•™”“•’‹–™‘–ž‡”˜›š••–‘—‰“•“ŽŽ–˜“–•𓉕•‘––Œ‘–“’–•‹Œ˜—™—–Ž”’Š’—”–›–“—›‘’’§“‘•“‘’™’‘•…’’ˆ•—”ˆ˜••£–œ”Ž—‘”–™–ž“–•šŽ––—‘šŒ–•”–”––•Œ‘´“Ÿ••–š––“—‹‰Ž”••“¡”Ц•–––’ˆ––“œœ’˜•œ‹•“˜–••”—“‰‰—”˜•Œ–“›•‘™“–’•––£—œŠŒ˜•˜‘’ˆ–“–”‘–™—“”–’™•–ŠŽ“•“•“–”—““™—–Ž‘—˜™˜•™‘Ÿ•Ž—”–‹”••š‘–”••‘’–•–——’Ž’›•‹•—•¤•“’–”‘‹–‘—Ž”–––—•”•šŠ’”•–‘Œ–”“—™””‘“”‘“—‘•Œ˜”–‘‘•”œ–•–“‡•”•¡Ž•›’”˜™†Ž˜•“—’—–––‘œ“’™˜—“”–””–›”—›–’“™“˜š–•–“––•”’””˜”“”™–™“–“”‘—–Ÿ§˜”¥–”–•––¤”–••œ’•–“•˜“•’”–™“••š˜“”œ•””•–‘—“Ÿ”••¦Ž–˜•–•–˜‘”’•”¡”˜‹•—œ–›Ž•™Ž””–š–”™’•””‹•–˜Ž•”•’•••””’˜“”˜“•“”––˜“–•—Ž•––•’”“Œ–™›“”œ•’‘”›Ž—Ÿ”———‘–¥’Šš‘“—•—––•““—“•”–’–”•›”—™•‘Žœ‘’™–›•˜˜–•—˜”—œ˜•“•”–™•”“––•–’”—™““•š–’–••ŽŸ”˜”–––“˜–”—•˜š•™‘““˜—•’”—™•„•“–••”•—‰™“—””•“™Œ•’–”’™•””‘š‹’‘Œ”–š—••—–––’ ”‘•‘‹•”Ž‘‹’’‹’’“”š‘“‹”Žœ”Œ••–’””‹“”“‘ŸŒ”‘“˜“““‘Ž˜ˆ”›”‹”‘’“”•”—’ŽŽ••“–’”“‚‘ˆ‘†—“‰“–”—“–”‹”Ÿ“Ž•‘…‘“‡’‹‹—“•“’““””•š ”˜”””””“މ’”‘Ž‘‘‹’”“”›•ž“”’‹’’š•Š˜•Ž™Œ“–“••—¡”’‘“‘”“š“’”~”“”“–š‘–™‰“”–“Гދ’“Š“”•Ž’˜Ž’Ž‘”ޔޗ’’’‘”–œ•““–•–“––ž”–—’—–”“—”š““–™“˜”ž•™–“›”’––––”’–™¦“••’”•–‰ž–˜—’–’•‘––‘’‘—•–›ž” ’“Ž‘”—‘–—‘™“”’“––“˜—Œ•–”‘˜’•’”š˜–Ÿ•š“ œ–Ÿ–•š––”˜Ž‘¡“–––—–ž‘–˜’–¢–“’•––––’’š’—–’“—ŽŠ“•™—““•–”“™‘•”Ÿ•‘ž–”–’Ž–•’™––”––•™“’œ–•‹”’’“’–™‰–‘’¡“’‹’‘–——–‘•™–™™’š••£–’™––—ž—˜”””—•—˜˜œ›™‹•›œ•š“ ŽŸ—•”“–•ž•œ’–Žž™›—Ÿ•–’”•Ž—–™˜•˜’–—•›–ˆ•‘–—‘•™œ–—“•“•˜™”›’›““–™”Ž—Ž”“™•™”’•’˜•–™—”’˜”’—–›€””–“•”›†™™›—”’•’”’›••›“—‹•“”—•™Ž—””•˜š™˜•”’š™—•”˜š›™š•˜•–Œ˜—‰”šž• ”•–•Š›¡–•—”••’—•˜Ÿ•—˜–•›•›•–”Ÿ˜£“œ‘••—””–•””–š˜–‘¡—•”–ƒ”Ÿš–”™–›¢ž–Œ›”Œ•›”–—™‘—š•“””•••š–•–•™œ ‘¡Ž“”œ•–•¤—Ž”ž•ž“”—•›™¤—¨”“•‘”™–—›’• ’–š–Œ’™œ•––¡–”••• ‘•••˜’™•—•–š ‘—–Ž–‘ ••š’Ÿ–”—™•”•›•”“•£”‘–‹•“™“™•”–•”Œ›–•˜šœ–‘”š’•¢•œ—–¦˜“•’™˜›œ•––“””˜•”—Ž”•¢••—š’Ž˜Œ’••‘—›Ÿœ™–¥––’•˜›™“––• ’‘•š™”Šš—“§•”– ™œ“’–•™‘”˜””–’–˜˜’‘–œ’“”™Œ›”•”™•••—”•”–”‘•–™”•™”‹–““–”’•‘”™™‹—’ŒŽ”“’™’•š”’“•–•­” ™Žš”•‘¤’’˜”“‘”—“œ”‘‹ “‘’”‘˜ ’Š–‘–•—–”˜‘žš—˜‘–””•“‘••’””“•••–—“•”“–œ”‘–”–Ž“‘”–’–™•š–——’“‘’˜™’””š•—‘•–”—™”•”“’’˜Ž˜”’‘—––’•ˆ’’—’–•˜˜—“™–”Œ–““˜‘”Ž”–‰•”—•”–™‘¢”˜”•’•ž•““’“’›ˆ’•—‘™™••˜•—–“™›˜›˜”–”™Š”•’’”—–“’”–‘”“‘“’˜—•–’ –š––˜—““–•ˆ”’ŸŸ‘“”–Ž•—–•–•™••˜’Ÿ‘š——’“’…”•—•–––•—–•‘–”Ÿ“—•”š•––•”–’“–’’“”’—•“”––Ž”’–•—“‰–—‘“•‘–•™–Ž‘’—”’’”–”–—––”“™—––’–—’––š•œ›–˜•‘“–•“”…““š“š™’™Œ••Œ–˜–”•‘•”˜˜‘“Ÿ“–””–“–’———›“–›’˜–”˜““•”–•¡’•““”––“““““”Ÿ“••”–“•–“•’“™‘”“•”’œ“—““““ž”—““••““’•””—”’Š›’“˜“—•””’“•“––›˜“›˜Ÿ••–—“š””“œœ“•“‘“—“’–““–‘œ”“”˜“’“ž“”š“—‘–’“˜˜–š’–“”“”’”–““•œ•˜”˜“”””˜‘˜““—“’š••——™“’“”““•—•”“™ž““™œ’–”’‘“•˜‘‘™””“””’—–•““—›’–“Ž›““––””’¡””’•Žš¢š—𔕕•“›—”•”–¡’˜•™–œ•›™’™•–•——˜••˜”•—•“–›–›”–”•Œ˜Ÿ•”š••˜™•“•–— šœ•™™–‘’•’˜š”œ •„•Ž•“ ”™””‘š”™™––•Š—–‘”—’˜˜˜“š“•”‘•šš•ž•“”••—ަ–”‘—–˜“‘•”””“”—••–™—˜ž””–”š–“•—”–ž•–•˜•“•“•—–—ž•–’’˜”›•“–™”’š•š”–”—”’••œ—”–”™•””–•ž—’–“˜–™—“‹•”–œ”•”˜”ž••™–ž•—“‰‘‘–ˆ˜“•˜•”˜“’“—“—Š—‘‡”˜”œ–—••••”Ÿ¥’“•›’Œ™”š–™ ›•‘’–›””’š•”•—œ–š–œŒ•š™—“—“••”‘•„’¤””Ž”œ–™Ž™–Ÿ–†˜”“Ž‘™…•”•ž””“•–”Ž ™‰š‘–“•”•œ¢•£’ •—”™žœ•’–œ–––“’š‰”•—œ œœ’•›—’“–š•›”›’‹«”“•Ž–˜–““”” •”—”””–—–”š˜–¥•‘“”•–”˜’™‰——•”Ž••‘–Œ©‘’™¡”Œ”Ÿ–Ž’˜™š‘’”–’“‡’š“—“œ—‘› ’”‘”“““”›”““‘œ–•’“—”—””•“›’•–’”“—‹”“‡••—”““–š”–“””’””“”ª•—Š’™’”•“›“–•““Š“™“””‘”—•›•‘‘¥’’™”’““Š”“”Œ“•š‘“”””” ’”–’–“œ““•—”‘—ž”““”“Œ“”“—‘—•’”“—““’’’“”•”˜•“’Š”’“—“™“”™”““‘“‘‘“”“’˜”–•–”’•“”“•›–•—“™—™’“‘’•”’š•”“‘‘–’•˜–”—ž’‘•——˜”“™š”›•‘’––”™•—”””•–—”’––“–™”•’”—œ—’‹“‘–™–¤™™”“—›—˜’‘”–’”•’–—“–’“•‘—”””‘”–”““’–’””“”˜’“”™’–‹“œ––•”“œ”’”›–“ˆ““–”““™••”‘™’•”—•–Ž—˜š“’”•—’—‘“š•“•–˜Ž‘›”–—•œ–•š‘˜—••ž’•““—•––”–“–›“–“˜‘”•–“Ž’™™š“—”•”™“–ŠŒ–“—””•Ÿ‹—˜“•Ž’•–’”•‘••”–••˜–›•˜” –”–”—”š“–‹–™“™˜•’••™•“–Œ––˜••”“–“—””””““™š”—˜”–”Ž“šš‘“–“’˜”’‰”“–š–Š”‘𔓔•–˜˜”–¡””—”’“œ‹“”˜’”šŽ•—–——““’–’Œž‘–™›’“”ž–•Ž“•”•‘“””•˜••””“””““”•“–“Ÿ•””’Ž’Œ—“—”““–““•“”Ÿ—“•”›—¡–—‘”—•’•—”˜˜’“–““–“‘™Œ’“›š”“–‰••‘‘”˜“™•”””•“›—˜Œ‘—¥§”›”‘“”—•˜“Œ——˜–—— —–•˜—š˜–”–‘“——•”™––›“˜˜”–——˜š—’”••””•—‘˜š—š—“™“–••””—”–”™–“—””˜“–——›“—•˜•–“–—Ž“•—‘’•’–•–•”–“—•”•‘•Œ—––•’••‘––˜“‘——˜•••”˜’†”›™““•–›–•”•‘’—•”‘’™•˜™›•“”“˜•—–”•–•›•š”˜—•”˜•—’™”™š•—˜””˜”—š•——–“•’”–”Ž•—“š•”’‘™“–•˜——–›“›”””‘”‘Ž••›—•˜—˜•”•œ˜™”‘˜•“–’“—’‹—–””“—’“”—“‘Ÿ•’–“–𔓔˜“””“““”‘”’““•‘’™•“”š”’–——“–š“““™–Ž• ’ ”““›“””“’••’‘“’–—ž‘™“›”‘“–›’”™“ޕޙ’–™–—‰”œ“””™™¡”•“““““˜Ž”“‘““““•š“›‘™“›“”“Œ”¢–“”““–’Ž“”‘œ”•Ž–”‹–•“”—˜“…–˜”–™–š–“““š•“–”‡Š““”““•›˜‘˜“”†•““—““””””•‹Ž•“‘’—“’Š–“‘—‘••‘‘–‰•––“–—™˜‡œ˜–’’™“””–•”–’‘“——Ž˜—–•›–—’‘Ÿ•™™•‘–š–‘—–››Ÿ”’’˜–—”Ž•–™••œ‡–š––’”›”•“’—––••‘–ˆœš•”–ž—œ’•—š’—–‘“—–’–“’›•—›–’™•‘•”‰—–”œ’•––––ž–•—––””––Ÿ™š–••—’Ž›“––”™¢ž–•“’›–“••£’𙑕‡“›‘•”–‘ —–¡’–’š•–—–”’™——™–™•“–ž“••–™  —”–”’—— –”–—“•“ ’––’‹•˜”—˜˜“’š––’•’—“–˜–—•˜”—•˜—•—‘Ž–•–•–”—“’–—–‘‘”–’”–•”’•“–š”–”•™—•“š“–———•˜’•’–”•—‘˜•–|‘Ÿ“—–—›–—‘•’“˜——‹”•“™š–—ŒŒ’–•—›Ž‘•’–”•”“––—”“–™™••–˜–”’•“•’–“–“•–’—”•–•–‘Š™”••™–––—˜˜•—–••˜˜“˜“™•”“•—•“˜–‘–“—•˜•–•”–”’“–”““𔕖‘–†”•–Ž–•Œ–”•“’–˜•–•–”š’˜—–•”–˜’™“šž•˜——–™œ•š“•“——•—–—”—š•–˜–•”™“Ž’’‘™–••˜›žš–—“™•–““š–—›‘’“™¥—”“’¦˜•”™Ž—“—–‹˜•——””–Ÿ““–‹”œ˜–¤“–“•“”’•“—ž–š˜–—˜‘—¡—“”–—Ÿ••š¢˜—–•–– š••––•˜–•–‘š™š—–•—•Ž›–•–—«•Ž™•˜•–™””—˜‘”£ž—•–‘–”–•—–•š–—•‰•˜–—•œ¡•—›‰–’˜–š›–”–‹••”™”˜——–—˜—ž”Ÿ—™”’››–Ž–•Œ—‹‘¨‰“›™•Œ“”•‘˜‹ŠŽ’—“•’–‘™””˜’ˆ–•˜——’ –‘Œ”——š•”Œ–™—–š•“– •˜” •–™•“˜•“˜•‹¡•š•…‰’™›•’”˜‘™Œ”•Š”£•˜”‡’”››–’“’‰“•–•–—”­Œ‘”•–•”–š–‘‘‹‘––š–œ’Ÿ––•–Œ’—–“¢‘”’‘–šŽŠ–“™–•™”•–’ˆ•‰”’‘–š•˜•Ÿ’˜—–“”—›•”ˆƒ˜–”–”’ŽŠ••—••—–”’“‘—””ž”•Ž™‘’‘˜–“•““”’’’¢Ÿ““’••‘’¥“’““’“‘“‰’“••˜’’–•˜––’‘•‘ š”‘–˜’–’‚‘’’‘”–“’’’–“ˆŒ¢’”•‘Ÿ’—’“˜‘—‘“•š“””’–“•Ÿ“›’‹’•“–›““–”‘••œ”–’”ˆ—š–•–•™–•“¥“˜“‘•”•›–’–“‘“’ •‘“—Ÿ‘—”•”•“”™’–•’“—’›•œ““’’’’–˜“œ“’—’‘˜•˜•“™–’’–š‘•–’“’“š•—’’”•“’–•”•£“ž–’‘“““•–‰—•’’Ž”’››––¥• š–‘—–˜””–••“”Ÿ’™’”œ˜”’–•’’™—œ——”™“’š‘‘‘˜•‘•—•š’‘’•–’‘”–˜–•˜Œ“‘Ž—’•”“—‘š”’’•’—œ“˜“–—”š“’’‘’–¦•“‘–“𔓗•–“™¡‘‰“•—–™–—’š“›Ž———––‘–˜š“š–“’šž‘“‘˜˜–““”—–š“—“•˜”“˜’’•˜–•“›”‘‡•‘ž˜”˜”••ˆ“™”––”˜—“˜”–’‹“˜“‘“”“”–“Ÿ˜““Œ’”–—š’–•˜“–’’’’‘’‘’•†”™’š•‘—•“’›”‹˜“’—“ŠŸ“œŽ”š•’—–––•‘’‘š•–”˜š‹‘–““—™Žž™˜•¢’‘”•‹‘™””Ž¡–•Šœš‰œ•‘–•–•’•Œ“””‘“•”’–‡Š˜•’’ƒ’œ’›‰˜™‘š–™‘–Ÿ¬”š•”ž••˜Ÿ“›¢“–•••𔕖•’’””••™ˆšž––”””–”—¢—““’Œ—ž—“›™”‘Š…‡•‘•••ž›”ƒ–|”‘•••šŸ’˜“–™Ÿ””””–—”‹œŒ‰•”£”š•š™’–¤›Œ”“–””•“‘“›•š‘‘’‘“““•”’•š“›’’”‘’””’ž“‘““–“““”Œ‘•˜’•“•ž˜™’”˜•““–“”“–“ “—™š“œŸ“™””’•‘“›“–›–•”“ž”™’’–’“Ž”˜”“”˜““Ÿ‘•“”‘Œ“•“ “–‘““•––“•˜”“•“”“š–“›’”“›“•—˜–”šŸ““““’‘““”•™”Ÿ“’”•““•“š“›˜“““””––“ž““ž“‘”›—“’•““’’“’˜Œ”–“‘’“’““ž˜”¢“¡”“’‘“’“‘•—“’‘“‘• ›˜”y›‘••—œ“–›•“›““””𔕔‘œ–••‘•—‘”•Ÿ””•–”Œ••˜„’”Ž ’œ’“–˜“‘–”“™¡”—™”˜˜š’–—š“š—”“•Ž–—ž“š•‘Žœ•™”“Ž¢˜””¢™•“’“”˜€›˜›•™”’”•˜”’”–’”œ”š–“˜•‘˜˜”’’Œ“¤ ””•——”””Ž˜š‘ “•‘“š–š”•Šœ•‘•‘–•œ”œ”“˜•¡˜©””˜˜”“‘——‘“˜”˜“——˜ž”˜“–—£š•Ž‘‘”›œ•—–™Š“˜›•Ž”žš’Ž––›‰“‘•“•Ž’–™•‘”‘›™’–›’’’”–˜””•‘‘˜‘ˆŸ˜–“—””““”“˜‘•’””Œ”˜‘‹–œœ”’•–›˜‘••””–”“”­‘™˜““œ˜”–’’‘’’’•”•†•–””“””’˜’“ ”ž•—••ˆ”—–˜—“ŸŽ—–•“•™”™••–Ž•”“–’—ž”•••—“•”•”›‘•˜’’–’••”˜’“šŽ–“’••˜š•š’‰˜”–––”’™š””—•˜“Ž”“–“•’•Ÿ’¢‘𔑒‘”–˜––“’’˜”‘–š––•‘”‘•““”•Œ‘”“š””“”’Ž…“•”““’–•••—””—“‘”—‘“–“”••’‘’’“’’•’”–””’—“•‘•‘•“‘“”’¡““”–’’—“Œ‘•”œ—“””’™“•””Ž”’•‘““–Ž•’’”•’•Ž”—•”“Ÿ”‘“’–””™•–“–š’’—–”˜”ž‘‘””•—•”–’•–•’’’–’•––”‘“““•›•‘”“’ •“••”—“••™“—”–™“•–…Ž•““•˜–’”•’“•“““””—’‘’‘Ž•• ’•’““’—™–••”‘•”™’’“——™“••—”“’’’›’‘’•’’”–’“”’˜’’”““•”’’™‹•—™’’•Ž’”’•™–’’•”’•”›””’”œ˜–““’™‘•’˜‘Ÿ’“’•¡““”•˜‘••‘›“‘–““›”’”‘•›™’¡’˜•“•œ’˜–œ–˜•”“—”–“’”•’š“”””‘’’’’”‘“ˆ”–•”””’“—’•“‘”•”‘Ž“”“’”““’–™”˜’’˜œ“’‘“–“’—–‘’ž““˜••”’’—–“—›”’“’“–‘’”™“›”Ž––‘‘•’‘•“‹••‘“‘”“—˜’–”•”•–›“’–›’”’”–˜‘•••™”••“–•“–”––‚‹–š“œŠ”–““™’“’•””œ–“ŠŸ—š–’•“”™Ž“Žš”‘—’“„“Žš–—”’–‘‘•••˜’˜”—”“™“—”–’‹—‹——˜••”•™””—‘•–•˜–™‘”ŽŒ’“•”’Ž–”—•””’›”‘–”“””–•—˜””‘‘–––š–—’‘ŽŽ’—”—”‘™–‘Žƒ’”˜Ž•”“™•Ž‘”•’’•Ž•‘–¡“—••’—Ž“Œ‘–ž””‹‘•›—”–Ž—•“š“œ••›‘œ‘™”–Ž•—˜š‘™Œ“•𗇙–Ž’–˜•’’’“—Š˜’•‹š–”’“˜’“•‘”•™•––Ž‘‚—›–•‘•ˆ—‘’™“’Š“•™—“šŒŽ••—–šŸ“š”””“•œ—•Œœ––—””—–”~•™‹•–š”–’~œ–ŽŒ”•–•—–›‘•›Ž“¢•—‘‘¢™•”‘“Š’—“•”“’š’š”’”–’’•““Œ›š”˜•›“Œ–““ŒŠ“’—”Œ•—˜”–‹‹”“—••˜’—’™š˜˜™’•–˜“‘—Ž’’—™‰¤””•”—‹–“™’“˜——“‘©”™˜”’“‘…’•–“—’Ž––š––“˜•‘˜—••––”““ž‘˜š™–•••—–˜–¤–••–˜›–•…•“•Š“’–“‘›•”˜–’““–—–•™––™——‘ƒ••’‰“…•–––”–•¦±•™œ“–—–‘–“™–•˜— •–• ¯›š––•–›–•–™ –¥‘•š•”šœ–Ÿ•“ž‘‘œ—”˜”•”–˜¢•™˜—–˜–––—•”Œ–•Ÿ•”‘’™–¡–—–š’”–“”’–™’“–”•““›•Ÿ—Ÿ•’¨’•’’•œ›Ž“’““•’ ’ˆ’’“œ”’‘–’’”™š’’–•š••’’•““ž—•’˜–—•–•–ž“’“›“•‘’’‘–”•¡““Ž—Š•“–’Ÿ”’’’—“’“”¤”“• ”’”¤’—‘’•“•—’–“•“œŠ›‘Ž”’’£’ˆ™”š””š••“¤Œ“ž ’•–•›–˜“•—””’𔓕œœ“Œ™––•“‘œ“•””“©“‘”˜“’•“’’–¤“™›“’•’•–’¢”•“Š••“••”“—‘–•˜“•™”’•“““•——•™“šš–”“Ž““•”œš•’‘‘—’”¨“›–ŒŽ‰˜’“˜Ž˜˜••“•’•”’‘‘’••’–——Œ–“–˜˜‘–– –•”•’‘‘Šš”•’›–—–”••–•”—–˜•“¢—š˜˜‡‹‹–”“”œ‘–””””–‹–“¢’š’– ŸŒ‘–“––““——’š’Ž‡–’‘—”“”–‘•˜‘––¢••¥“”—–•—–“–—”””’•’‘¡˜“œ™–••“Œ“‘–•“•£’˜•’Œ‘”‘––Ÿ”™‘—“œŠ‘—–•‘•Ž¢•Ÿ••‘•–•‘“—”’Ÿ‘••“”’‘”–š™–”›‘‘–˜•–•Ž˜”›•”™ž”””³• ˜“——–œ”’•••””Œ”š•“˜˜š”‘‘”–””’””—“•ž•“š™•Œ“›“Œ’˜’”– “–’—“––•”•”𔕔—˜–“š‘’š “£Ž™—‘¥’”‹‘›˜™—’‹Ž—‘’—Ÿœš”š–’šœ™“ž”•š”“˜¥˜™˜–—””“’’ž‘“”˜›—”“‘“•”’“””‘™™š•“‡¡š˜Žš”‰—˜’–˜“”•Ž‘”––˜—‘”Ž“•™”””›‰”•—“”†“˜š¦–”ŠŽŸ™–š–”Ÿ“”–™–£’‹“œ’““”˜”˜š˜Ÿ—“›‡š”š’‘“œ”—”“š•–•–Š™”™“•–•‘“”–”•Ÿ–”””“”–”—œ••—Ž“—”—”˜’“𛕔”œœ‘””Š –’™““—”•““”š—””–𕗔ޖ£š“‘”•”˜•”’ž–”“••’”—“Œ•”›œ‘œ‹”‘””¥””š•ž“•š”””•”“–”š—š—”š“•’“’”“”œ”ž“”˜‹“Ž”˜”–ž˜Ž”•”™““‘–“ Ÿ–““”œ””—”Ÿ””™““”›—”ŠšŸ•””–žž›š•ˆ–”•”•“Ÿš“›™š”š””š”“‘—Ÿ“–Ÿ””’Žœž—”••ž”•“”𑇖¡—‘“’–””’–”““—›””’““•“”¤™•™›˜’”ª’““”•’”š’”‘–“‘“–”Š–•‹”—–‹›“›•“•“¥‘›–˜•”‘”‘œ™Ž‘“Ž–“’•‘‘—“”“’§•¢•“–““¡“”™‘–‘—”“”’“—’““’–—•”’“˜”’Œ“””””•—™“”•—œ”˜˜˜š“’“˜––’œ—Ÿ–˜’“‘”™’“———“˜–““‘”“šŽ‘”™—‘™––”©””••Ž›‹“˜‹’“‚“Ž“›™œ—”ŽŽ“•”š—‹—’”“Ž‹’‘’”’ Ž””’—“”Œ“”’”•”“‘““š–’———’“““Ž™‘‘“Ž““””’’‹’ž—‰”Š‘’Œ’†’’•”™””—‰‘‰‘”ˆ’š˜‘‘““”’•–”“‘ž”’‡“–”—”’”“•“|Œ“˜†•“““”–“•‘‘—”““Ž¢“•˜“””’‹Ž”“’“‰”•“”•‘“•Œˆ˜’Ž”›’‘˜”‘””•’“—“—’•“’’•’‘•—”Ž”’‘‘“›Ž”“ˆ””‘’•ž›””“’”Ž”•“‘”–”““‹š•“ˆ–”šŒ’ˆ”™“•Ž’˜›’“‹—’”““›“““–Ÿ”Œ““¢™“­Ÿ™”š“–“—““”™ž”œ†“‘™“˜”—•“œš“”˜˜•™‘“ޔ𔒗•““’“œ“—•“’ ˜Ž“•™¥”‘””Œ“•“““•š©“’”’’’”¡“›—“ž’š‘®“˜˜©š–—“““•“””“•’¤–”˜“›Ž“‹‘“”“¡•“œ““š—”š““–”“¢“–“’“““”“’—”£““’•““™•“„˜– ž’‘˜“’““•“˜”’™›œŒ•”Š“šš–Ž’£–”–•••–š’“—”’–š––•›—–••——•”ž™˜’š— •¢–Šš’–—™‘––œ••Œ”}’’“”—“‘—’‘œ–šŠ—š˜””’–˜‹‘š”›Œ‘”œš˜“––Œ•”’•Ž”˜“’”•›’š••–” ——œ‘‡’”œ—–•—–‘–‘ޙ𖔑—¥””‘––—›–’˜•–—’“‘‘•–—’Ÿ—š”–‰‡•’ž’¥”š –”—𔕀œ––—£”–•“¡”—¡”•—•’”¥˜™–‘””–¡””•˜”•žš™šŠ˜’—”˜’¡™—–“••” ™–””™’–—š’˜™Ž”—š›”—•š—••”“•””™–š˜˜—’”–•£˜•”’••–•Ÿ—”œ˜“•Ž’’•‹—˜‘”¡šŽ˜–•”““”—‘•ª•“™”˜’•”•——”—˜™•—›£’˜”™“Š’‘•Ÿšš™’ˆ•“”“œ”“›™†“‘’ž””””›•”’›“‘•””–’”’•“”’•›œ””’—’•–š””’–Šš”••”“”š‘™‘¥“™’“‘”‘—”˜“Š›””•””’’••Ž“˜“•“’•—•š””“”™˜Ÿ‘–—–”•’™•˜•–š•˜š—‘““œ”š–œ˜–“–“—”™˜›•—›’““™”˜Ž””••”–Š›š–˜—œž–”œ™”—™–”—‡’•–“—’•šˆ”™œ˜‘–‘’–‹•““}“ˆŽ˜‘’”˜¦”‘œ’’““••–•œ“‹¡”‰•—šˆ“–’“–“‘†•””–—’“”•’”Ž“”‘•••’”‘‘šŸ•¡Ÿ”““”‘š’•“š—Ž‡Ÿ“”’‘š‘•˜“•‘‘•—’‹“•“””œ’’˜’Ž”–›”›“’•–˜“‰•““ž‘•”“™•–Žš–™Š¡™œ“™˜”’š—“—™˜•”˜Ž–•“ ”‘“–›Ÿ”“•˜–”–‘ž’’””˜”•—“•—••’‘••“”•””‹““˜““Š–’‘–”–“‘˜˜–“’•——“ŽŒ–“’‘•‘”’š“’•’›’”’–š•‘’–”“–‰”–’“””‘—’™‘•‘”˜–’”•˜™–“‘‹–›•”––“Š’Ÿ—“”—–”—•–”“–“••‘–”•••‘’˜’•–•˜’”š–Ÿ‘•—’“’•”“™™’”Ž›”“™”––‘˜–Ž“—’–›•––”’”—’——”““”’’—‰–š–˜”‘‘•—“—–™’–‘”“”“–™š•”˜“˜‘–•”œ š˜œ””œ’“’”••—Ž–›™’˜”™Ÿ’“””””””Ÿš—“–—•—¡””———‘’–¡™”——Œ““œ–£—šš•š”™ “——””••“’“•Ž—–”–“’—’—“–“”Ž‘¦‘–’šœ›–“˜˜•–ˆœ“›””™”””‘©‘•˜•”””ž“¡˜”›“™”‘”“–Ÿ‘—–ž”””‘“”“”•žš‘š–”¡‘‘—–””™‘’””•˜–˜—™“””“’“™–‹Ÿ”—™“”•Ÿ“™”˜ ”–””•™•“”Š–“¡”“›“š˜•˜”˜‡™”•–•—”£˜›”–Ÿ’›™–—“—š–š“•—–—‰—’”œ’—‘’—•””˜œ˜””“””—“–‘˜œ–“”›”””‹–•——“˜”™”‘’”•“‘™”’š–”–•—‘—”—𔕕“•”˜’˜•’””—‘›”š›œ“•“›’“—ž’œ’”•œš—¢›“š”™•””™›— —š”–”–”•™”’”“”‘”’“–—š›””””•œ•”””——”›’•““–—˜•š”œ•––’™’œ•™š””–ž“‘œ¥–•“—””˜•’——–””–””—™“—”˜•˜“šš””“‹“““—˜”–™™™•ž–™“‘š—•–“•”•œ š—”˜˜•›’–œ”’–—¤œ˜“”˜’–•””•••–’•š”””“œ•‹’•–š‘”—™”š”™œ””š™“˜’™‘“•œ’‘“š”—˜‘”Ÿ ”§”œ–”£•›””›–™œœ“–‘š—’ŒŸ‘’œŽ™•›š›šœ•––”’–”™š˜–•“”“”‘“”’š˜””’”Ž–•‘‘”“•›–•—•“Ž›‡•”’Ÿ›•™Ÿ‘•‘•˜—˜š•—•”•”‘••‘–›Ž“˜—”••“›‘‘¢–”…”šš•”—•’•’–’’–˜›•–ž•”¦Š›•–˜šž’•Œ—••™š““œ–˜–› “–””œ—•˜’œ•—‘››™˜˜••˜•™˜•–˜••™š˜–ž–œ”‘™›š”•––™—’˜”••“–‘”Ÿ™˜›“–‘•’™š˜’š•—•‘–š•ž”•’”—‘”š„–”˜¡•””Œ—••”“”—šŸ’•””•‘£“•œ•—¡”•›‘Ÿ–œ£•–•”›”š‘•”‘˜•“•¢“–˜ž”••––•—••—š›™˜•Ÿ˜˜›˜—’•š•™”–’“•–•—›•‘—Œ’•—š••“˜ž™›–•˜——™”˜”•˜ š—šš˜”“•Ž“‘•—˜š—–•” •‘£’’™•–šš›••–””•¦”’—•›˜™˜—“”––“™””””ž”•–˜”Ÿ“˜š›”˜š••‰œ™”š š•—’˜•••˜—‘–—”œš–—˜—™š›”˜–”™Ž™’•˜£˜–”—›–Ÿ˜“¡–¡œ”Ÿ‘•”—–Œ•–›•“•”’›š”—““•”””•—˜•˜•š˜•™š™‘š–—•”•’‘ž—”•”–˜šœ˜”™“”•“—–•¡—œœ—Ž”—“”””“˜–——šœ•›–••˜™’”’œ™”™“—™“›—•’˜”˜”™š–“š“–”–—•¡•™•™—”žž–“•Ž–•ž—”’–››™“••—‘—•–——•—–¤–”•Ÿ”’—••–•–”š–œ¤’””’’••’ž–—š¡—•“•“’”š—˜””™™–Ÿš“›—˜“š•—’•¡”£–›™”•¡“–’’–š•˜”–”••™œ’˜”““•𔕖•••–•—£˜š“œ“–””ž•–“•‘—•–“•˜˜Ÿš“‹””•—•–•–••›š“”™•œ™–™”–“•”˜™•˜“—£’”Ž•‘•˜š–—•ž›•—••–”––”–¡ž•™••–˜•—•“•”–—¤””“—–•‡™™••”“”•”–“‘”‘šš’““‘ –•™œ“‹“•˜“’”–›•’“”””‘•••‘‘ŠžžŒ”“’“‘”“Ž˜˜”“’”•›’‘˜•’•ž”¢“–”•””–•’”‘—‘˜‘–‹”••™Ÿ™•Ž‘—”ŽŸ—’“œ’•“‘“¡’”•”œ•w”¤˜–˜••“•“”–šŽ˜›““””•Ž•’ŽŽ•“’’‘š’”““Œš™•”Ž“’“˜–•“••“”•›‘™™•‹›”’”™“’••‘•”“”••Ž“””’”•“˜“’•–©”””“£•–“˜•‘”Ÿ’••••›’•” “’™‹“˜”“““•Ž•Ÿ“Š”—’”˜”’••†˜””Ž“’“””“““’•—“—“—““Š—“—›”—•—“•”“ žš’•”“’’™œ”””™’”™“Š—›Œ‘˜Ž•“œŽ˜–‘–““Žš–––••—•“›š”‘“““““–ލ““‘–“’“—“––“’—–›”“£¢›–“”“’–˜“”—ž—’“—𗦕œ—“˜——–”—“˜––“’“‘•“—“”“•›““–…‘˜‹–”–‰–™¡–“’‘—’–‹™˜“––“‘˜–“•–”•”ž—’’–‘•”š˜–‘•”˜Œ •’•˜‘—’–““˜˜”Œ•ƒ••’œ›–•—–••—’“š“–—“Š——›—™°“——•Œ–Ÿ’——Š—•’’•–˜“““›”‘•Œ•†¤“‡’Œ–”“”Š˜™’•–—‹‘˜””’‰’—“–œ–𔕒••ž–•™””“–›¡”–—™–”•—¤• Ž—•••Ž‘‰—––•š•”–•šƒ˜•—””‘˜Š–•¥•‘”›’Ž•±™˜‹–™–•—•šš’–—–•–••”œŸ‹–’™––Ÿ–˜—“—•—“ ’•™˜‘•™œ’Ž™¦”œ•–“žš’‘“•“šŽ’“•’•™——˜—“›“•˜Œ—’–•’–•••˜”•’’“’‹”—“™˜”•’•’™–“˜“•”“”••Ž“•–“š–˜“”–””“•–––“•—‘—–˜”’““““••’•““Œ’•“’—“‹—”’‘˜“–”•”””••“’„˜•™–•–•”–˜••“”•—•’””–”œœ••••““”•’•‘““”‘˜”“˜˜”•‘”š’˜“‘–””›–‘š”œ—˜Œ•‘’–”’‘–•––‘•‘–“‘’‘–””•—“œ”—”˜•“—–•‘““—••š’‘””Š–›š‘¡š”˜œ™“”—”’–™˜—™š—’–˜”Œ•’˜””—””˜”Ÿ˜˜•‘›š•““˜˜š–›•™”™‘–“š™š–•˜–””—›’œ›•—–”™—“³‘‘”š–“”ž ”’’ž”“¡“˜–•“‘“Ÿ–š“Ÿ˜¥——™“›””Ÿ“”œŽš–ŸŽ˜”””’“–•“’™›“‹”–“™•”˜“”””™–”“”•˜‘‘–‘•š”šš’œ–”““—™–•ˆ›˜”–”›’“‚—¡–”–—”“•‘“†•‘””‘—’”˜–›““–“›—Š’›™ž—˜“§‹˜“š—˜“”Ÿ——“•‘–’ž “”™™•’™—‘–”•””‘ˆ••Ž’Š•—™ž••’––”•Ÿžžž£•“‘›™”–—”•™’Ž“––•˜™•’}•””‹•™‘——••“”•“–¥•š‘‘‘œ’––¤’™’™˜˜•‹“•¡”›Œ™›‰–•••“œ“›–“–• –•œŽ¢˜œ•œ•••™•”’–‘‘–“”•’Ž”˜Ž†Ž•••›‘œ›–•š‘””™•œš—š‘”•––—”›žª“‘“•’•—ž–”–’“•“•–—’’œ—••”“–”””•¤••˜’›“––”–•“•™š˜—™–”™ž”™’šŒ—˜™–“‹–“‘˜—š•ž•—‚‘“œ”•“˜•—‘‘–—‘¡“””“”˜Œ—š•ž‹•Œ’“•”“™†””ž••˜”–‘““•’’’’“Š–Œ™Ž•“ž“¢‘’–‹“—‹•”•“—š‘˜Ž”“‹Ž}’“›””–‹—–‘”“‘•‘–’–ž—”‹•šŒ“™”“‘¦¬–’—–“—–“‘“•‘Žš’¡“—š””•ŽŒ•›”˜œ’–š••š”––“˜•‘”˜••””Ž’Œ“’’›–›‘‰Ž’•›”’–‘œž˜‘‘Ž”˜Ÿ –’’”“–‹¡–•™•‡”𔕔”˜—•™—”—••”•—““•˜‹”˜”›””•••”””•›—’š‘—–“™–•š •–”˜–•––‘’”š—šž˜••––œ•–™–’”Ž“’””Ž•Žš“’˜“””’’•’“”••‰‘›—–”•’–”‘‘”›–‘” ™•”•”—•–”—•“’š‘–’””–”™•“•š”””—™—™˜˜š•–”””˜••”—™––𙓕•–’“•–“•›‘•”›Ž˜••“–—””Ž‘•’—–•”“™—”ž“•”˜•””—”•˜•𔕗”––––••“–••””‘š—š–š•“—›–‘”–˜–•Ž”›˜•—’—”•–™“•‘—‘—”•–”“•––——–—––—˜˜‘•”Š–‘—‘•—™ŽŽŸ––˜—•Œ’——•’’––‘’”˜—”–œ•“’–”—Ž‘’’“˜˜“–œŽ–“ˆ™šš™—™ ’”“Š—‘—•’–•“‡’˜œ”•–—œ•‘——˜•“––—‹”™š–—••’‘—•™–””””Ÿ”—”““•—•”˜™‹›™‘—“–– •˜–Ÿ–Š‘•–œ––—•™Œ”˜‘—’•‘™“•—•—’‘•–Ž”—–““–‘–’—‘—“—œ–“›••••—’”–ŽŽ˜Œ—‘–•’”‘“•”•’’–•—“–“—’•––™––‘“–“’’”—’–‘—Œ—’•’––˜‘–•—•ž“™“šŠ–’—˜”•˜•”•–“Ž’’—œ•’•••Œ–Œ’•‘“ ‘œ‘“¢‹‹’™•ž™“‹‘—”–““—–”}†“•–•–˜–—Ž–Ž“Œ’¨–†£¤¡Œš••–’’——–ŽŽ•—–’‘—‘–‘’–Ž“””™‘˜“•›–œ•–”–—•“—–ˆ––›Ÿ’“’¡—–˜’˜ŒŽ””–Œ••’†”–“‘›•“––„’–™˜”—ŸœŽ••–”’‘š”™—“”—“•”—“˜—”•˜•’’•“””•––˜—•––—–˜‘”™–“‘’”’•––“—š’“–š–˜›”•–—”ž‘š˜•”–•™˜—’˜“’•”––”˜”™›—˜–˜”•”–”˜˜•Ÿ’—“–”—”“•“–˜˜–—•‘–––•™œš”—––•”•‘–––••Ž”””˜’”š“–––”—œ”–”“™“•–“•˜•‘”–”—’••š‘šš‘““–•—˜””—”™˜–˜˜–––’–“˜‘—–—™’—–“”–ª••–•™”œ•—•”•—–––“•”•˜š›—“’”ž“–“‘“˜•˜’’’š•–—›•”–˜™–––™’—–””•› ’—”“•”—ޕޔ—“𔕕“‘™–”œ•—–›”Ž•’•”š–““™“˜–”“–š––š‘†””–”¢––’“•š˜›˜˜•“ž–•’‚™›“–——“™‘‰——–”ž––žš‹œ•”›˜˜–——’˜–œ—Ž–Œ”Œ”š——•–—˜™ž•Ž”—‹˜”›•’–“—˜–˜œ”–š’”“‘”’’•—˜•˜—•———’Ž•–˜˜–•”™šˆ••Žš˜•š˜‰˜–“–”“šž•“’˜š‘’–‘”–š•—‘•—˜“”‘•—“•Ž“”——–““–’“–™•’•”š™–’“Ž’•—•••˜‘–’‘—•’•‘”‹””‘”“•”“”™”‘“‘–•Ÿ”—”–•––”’—’œ“—”𛕗‹’œš““•˜•‘’—•—––“–••¤‘—“•©‘•—”’›˜{–“•–”—–‘¤—•‘”˜–•˜–’“””››”•”•”‘›œ’•––˜––’”•“˜”–“š›š—›’——–‘“˜ž˜˜˜“••–™’–š’””™ž—”œ”•“Ž™–‘–œ‘—˜”‹“•–““–’”“–š•—–œ–™‘••‘’”—†•—’ž–š“•”œ›“––•”—’œ’–“‘“”‘““‘“”•’š’“•”—•–’•”—˜ž•—’𙣒••ž–““””•““š”—’›‘–•˜‹•••’–‘“”“–“‘“•““”—”•“”˜”›’”’–“•Œ“—”“”™Ÿ’–”•”“’‘™•š•“••”–£“ž”’•–”œ•”“”””“’”•‘”›˜”‰”””•“’™’”••—¡”šš–™’’˜’’’•ž”—ž’’Ÿ¡•’ž”Š•’™•›“”š•™—•”•”–•–“˜”—•’“—”’•ž–“•‘“˜•““˜’“””›–”’“”Œ•˜–š•””“‹“–”—“’•Š–’Ž‘–”•‘”–”–”’“•“–“‘’’••–••”––’—•“—š””“–“––˜Ž—”–‘••——“’“‘“”“–•“‘•”””•”–•”’™””•’–—’•‘—–’”–’’ž—–“•“’Œ”––”™““•”•“‹••“—–•–•––•–”–˜—””›”’‘™¥šŽ“––•––—‘••Š–––••˜””•”••’–•”˜˜œ˜”•”–””š‘›•–Œ”••“•”’–˜—••”’Ž’•–“•—“’”–“—™’•Œ•‹Œ•Œ’“—œ•“”–”•›–””œ˜¡˜––•›‘œ“™“’•š•š™›—œ•””–”•––––••‰“›”——•–”•˜–—™›‘““•‘™•”—”ž›’•––‹œ’•˜“‘•–Œƒ˜•˜”‘”••š–˜—”˜“–”—•”““œ¢—‹’–——”•–’”“œ‘”—”•–––••€–”’š––Ž˜—œ™•••–Œ’–•œ“˜–•–›“™”‘•—Ÿ—“”‘“‡šš–”•‘Ÿ–Š–”•“”—•–”ž““’——–‘‘Ž‘‘•›™”š•›—‹–šš’”•…•—‹•‘•“•ž••––‘’”˜’–‘•˜—•Œ–’šˆ–˜•“—“™–——’‘•™–“•–•™–—’Œ”Œœ›’““•””—™‘•˜‰˜”–—”–•’Ÿ”™Ž“”–œ•Œ’”“—Œ°•˜“•–œ›–›”–“Œ”Ÿ˜“–š’™“’™ž™Œ•”œ–—šŠ•‘•–—•œž¯“¡–”•–‘–‘’™Š•œœ™‘—••–‘‡š’–•…—– ––’‹”“ž•••¡’–Œ›˜”•”–ˆš•Ž›¢––‘™•–‘s•“––—–˜™–‰Œ•z”–šŽšŠ”› ”Ž–Ÿ˜‘–‰””š·–—˜”“›ž‘’œ–”•ž™”‘›—™“Ž•’–™˜¡”—š”—™–””–”“–˜–“œŽ˜œ™‘ ˜“–“˜–––’”” ”˜˜”’¢”™“’‘”˜—˜›“•”™•”™”“ƒ•‡“˜•’”˜•”š•–“•–’“•™’™›’’”šžŠ“‘¥“™“”“”–¦”•›™”””•“ ”“•“˜’”—˜‘’𣙔”“•š“”˜¢˜—’”•“•”™” •š˜œœŒ›™’”’”“›“ž™—““’”“”•”œ–ž”–š—’–˜” ””‘™” ••“–“˜•š“˜™š”™ ¢“•”° ””––“ –—”–˜’𢗓”š“”–¤–Œ”•£’œ””—““˜’š“’—•–“𤓓’–––˜”–”“˜••˜“’“‹–“Œ”–•“‘Œ›“—“”•˜“°‹–”•  ”ˆ—’–›˜“„”‰ˆ”’˜š‘—•—“–˜¨“›¢“›“”Ÿ“”•›“›”“”‹“”‹“’’–’•““—‘’•’””“•“˜›“””‘’– ”˜›•ž““””–—Š¢”¡“—•“”•—“ˆ–Ž’“š“““’—¤™”‹˜—‘–•™”¶”“˜““Žž–—”‹’“ˆ““™šœ•–––©“™•˜“’’Ÿ ™““•’“’Œ“–“””“’“™‘•””“’““““’’—Ÿ ›’™›””“Œ›’–—’“•™”‘“”–Šœ–‘Ž“–œ•œ••’’˜‘”Ÿ“–”””“‘“˜•™’‘““ž”š””’–”•—•š“‘’——¦”™”˜”“‘–”›™‘“’“•“–”“’‘“Š“’””‘‘–““’“’–™“”“•”—““›”›’”•’’”“““Ÿ“‘–›•’“‘“•œ”‰“ž”–“““’’™“ ™“Œ““”””’”œ—” ‘˜‘œ””–•”“’Œ™”–Ž–”š˜œ–‘™˜—™“˜œ¡Ÿ–‹œŠ–‘–”–– œ“’ž–˜˜”“•–•–•‘‹•ޙޙ•“˜–“—•š–›––‘’”–Œ˜ž’Ž™••™“‹‘”‘—“Œ–’–£—–œ”“‰™˜”–˜—”“–—¯”–•“•¢£••–“•–˜•–¢Š“›™••–’–”‘•’’•Œ˜“Ÿ–––•‡‹’˜•–•”””••”Ž”—–Ž•—ˆ˜™š—–™•“–“™•š”Š–Ž”–•’——–‹˜š•ŽŠ›‘”’–”–— ŽŒ—Œ•Š•“–™›“›š—™’”‹š”¡›“””•–”““—‘˜–˜–“ž’˜•‘™š”‘œ—–””˜””——œ’“šš•’•‘•Š•“˜—™”””–ž’‘”š˜“”’•“Ž”•—œ’™•””—•™˜“ „Ž—™—›“Ž©—•–”•“‘’ž˜—”—’ •—“•–’œ’¡“”“” ”“œš––‘š“””““—–”’˜Ž•””Œ“•’•“””“’˜”“‹›‘’”˜‘–š•–“˜–”–‘ˆ œ—’“””–“”Ž™¢–”“˜“”–•”Œ”›™““Ž”˜š–™”~”””“•›˜˜˜“˜”œ“•˜ž›‘‘””•“–•¡Š›˜“™–—œ™“”—‘˜”’—˜•”𒣕 “—™•‘“”““”•••——š—–›”—‘”—œ›š‘———“•••‘“–§˜’›™“—œ•œ‘”••““—”›œ‰—“”™’—•‘‘’”•””˜Ÿ • •’’›š’£Œ“Ÿ“—™”““œ’‘𙓓”—’–™”Œ–“™—“––Ÿž“¡ž’’“Ž’žš”“œ™–›•“›‹“›——œ“’“˜›‘—™˜š–“•“•˜“‹˜‘ž“‘›’”–¢›•“•“¦”™“ž”’“—–”˜– –”“˜••“¢‹ “——œ˜“˜š™Œ–˜•œ““–Ÿš™”“—‘‘’‰–¢‘“˜’š™”–š—“•••™•–“–—ˆ™“Ž“”•””—’— —”“•––”’–’–”•‘–—’•—ž“Ÿ”—•’””‘–£‘—œšŒž•œ•“”‘—’•Œ’Œ”•“›˜“™•—–¯’š–œ••–•˜™ˆ“˜œ“”•–—–š—–š—••“•œ—“”••••”•’–•“‘¡•–œ“•”’‘””–”š–’”™“”’’•–––™•”“¡—–“•–”‘œ’” –•˜•Ž””’”–••––—“—˜”’“•–—™•–“•”—”•“”‘›’“”™›™–••’—•˜”–š—ž——œˆ™••¢Ÿ–”•™•••’—𙕗”š–”˜•¡š™’›’•—’–˜•™‘––›œ “• “”‘–Ž–Ž“‘–†’„Œš‘—˜•–”™“•”””•”“•“—“—•™’¡”—“’Ÿ¡••–‹”•’‘•“˜•–”””•”™•‹“–’••”•—–›””““œ’•”˜–›—š‘”–••˜”•›––•Ÿ –“Ž˜™“”Ÿ•“”•”œœ”—––•“•š–’Ÿœ”œ‘𔓔““Ž“”˜—˜¦’—”•‘•–“—–™——“™™š”‘•–˜Ž”œš™˜Š†–’Š•”›”“–“•”ˆ—“ˆ•’™“˜–”˜–—’——˜Œ˜•Œ’—˜——”™–•™–›‰–Ž•–“–Ž”—š–“’•”˜––•”’“•‘–›”‰‘’ƒœ••“•𔑛”ˆœ’–’”›‘™–ƒ…—Œ–—––“—“•Ž¡•˜“’“””—”—––“‘™––˜–™ŒŽ—•””œ›’’—”—Š““••••Ž‘“•›Ÿ’—•‘–˜‘”’”™˜•”“Ž––ŒŽ•–’”–Œ—–¡”‘‰’“‘“–—•”™•”ž“–‰‘””“”’••”—‘˜•–‚š“™”˜Œž¡•“–––˜˜˜™’“š–š‹’––—š˜”—™–“™“”™Œ’œœž“›”“Ÿ‘›——‘’”–—™••Œ”‘—Œ›˜˜–•Ÿ—Œ‘™—–“••›“™•—’——š‘Ž™‘—–“—™Ÿ–•–¤š’••––˜›™••”—“”•—‰””Ž‹•–•œ”˜“••—š•˜–š–“˜‹˜–––“———™—”“ƒ ”“’Ž™›–•Ž—™–“—“–¢”Ÿ‹”¥”Ž ”“–•””Œ“˜–“–›”””š˜–•˜——š™Ÿ’”˜”–›–•—••žšœ‹–•’•˜•‘•—›™’•“˜–”’–—›š“–‘“–™¡œ’•’‘˜–””Ž••–•’–ž•”—˜“Ž‘–“–™”Ÿ’™–•Žš”—”Ÿž›“—–“•œ™˜›–’“”˜›—“’‡—œ˜œ¦•˜˜‘œ•—–Ÿ•š•‘œ‡™—‘”Œ—¢™˜—Ÿ–˜–••Ÿ˜™œ–’–’•’—”“’•š•••™ššŠ•“•”›•”“—•Ž”–™”™˜™—–œ’–•“——–Œ”’”—•–Š•–œ”š˜–•”—š—’–••˜”‘–“”–ƒŽ”–‘’™‘““‘‘’–”‹”–Š•”™¡˜–“–“““”–“—Ž’’–•“’‹—–•–•“‹‘Ž“’Ž•‘“——•–“••‘”˜”” ””—˜œ’•“–™˜Ž•”–“‘“Ž•‘••–—’‘•Ž•–›—––“€“Ÿ™™—’“‘“–“”“––““‰•–“™–¡—”—“”“ª”˜•—™•–‘•–—™˜’˜–”’”–•”—’˜””•“•Ž›”Ž—”––—›”™•”“Œ™“‘’•–“’••‘—•œ”‹––•¤†‹”–––”•”–‹›••”˜Ž”•£ž–—–”—˜—–“”•–”Œ–—“”’‘‘•ž”™•™“šš˜¥•“•¥‘—“–›š‘–•–•””’¢–‹”••‘–”ˆ…”–”’–•”–•—˜–”——“—™“–ˆ“”•—‘‹’‘”•›•–”–”––•“Œ¡““•’”“’•“”Ž‘•“•Ÿ“—–”˜•—–‘–––••””––Ž••”“’••–•“Œ•ƒ••—–”–””• “œ•••“–•”•’–—”•––’’“’—––•••“Ÿ”—–’˜’• ’•›“••–”–•“–•š“•œš“••–“”•Ÿ–—•›––Ÿ—”—’”“‘™–”“—”“–œ—–š–™Š•’‘”–”—ž“••”––›–¡š˜”‘•Žš—•›“›—“‘“—š‘—™•––ž–”šž”‹••””””•‘™œŸ”š˜Œž”“‘”Œ‘—•™“›˜“˜‘—”–ŸŽ””›’’˜”“››“‘’­˜ŸŠš“‘”Ž˜˜—“‹”Ž•˜–™¤—Ž˜“ ˜Œ™Ž “’””—“”“ˆ˜˜Œ–•““–“›“‘š””“”“’˜Ÿ£“””‘Œœ““—Œ˜’ž”••š˜™“””“”Ž˜—ŸŒ•›””“–”—˜œ™“”–““Ž—”•š””œŒ¡Ž—š™“š”““’—›“‘”—”Ÿ’œ”›ž’–™”’“”–¥””””•”››”Ž•”——”””–‘™“ž—œ”“™—›–•”••’“•›™–“—“’“”•”•’””–”•œ””Žš”•”’•”•”‘˜“šš“˜˜”Ž— ‘•›”’“’˜––œœ””›•Š›”™•¤›ž••”œŸ•–œ¤””•”“””–’›—•“œ•””“”•’”š—••‘•˜–Ž›””•••“•”•Œ“œ“™•“‘˜—˜“𔕔”ž’¢“˜˜•–•••”“š‡“•“••–ž•’™–•–”š™˜Ÿ˜•“˜”“”–”•™˜™’‘“”Ž”ž›™—Œ˜”“‹––“—••••—‘””–”“”ž“‘“–“”•”’““”’‘••––––•“•Ž‘†ž‘‘œ™™”–•”’–••“•”—”‘–“–‘•‘‹š–’”’“”“”“’••Œ•”’“”’–œ“‘•“•’“•““—’‘Œ““”Š–’”˜‘‘‡–•–•’••’—›’”œ’––•ޔޕ–’“’–••””•’‘š––•”“˜•—”–“™”¡˜“‘”““’’”—š“””“˜“”‘•–’•”œ•š”Ž•’“•–••—••‘“”‘–“–”’“–š“˜ž“Ÿ‘ ••’“•–”‘••”“’“•’𛕔‰‘Ÿ’““–’žŒœš“’šŽ™—–•—‹–›™—š”—–“”œ””“Œ™¦™“žœ‘™–Ÿ””–“—Ž‘”œ’’—Ž“ŸŒ–Ÿ““”™Ÿ“™’”™’ˆ–¡’‰Ž²‡œ¬œž“šŸ“Œ›Ÿ’’Œ“™’“‘–°—ˆ•–”˜—’Ž““”Š”””’Ž›Œ•”“œ’˜†“‹•˜Š”Œ™“–˜—“””Ž–™”““Ÿ‘–˜””‘”——’Š“’•ˆ•™“‡—”“•”’•˜“«–““š’“Œƒ˜”ž›“›Ÿ‹“•“®””œ’¢—©Œ“”Ž””˜š¡—‹•™Ÿ••™œ””‘”—•’’“–™‘•••“™—–œ”•—”““•–’”‘••–•––™™™˜“—›–™—•˜–•–˜˜””›––”˜”•“•’”••”š•—•——•”•“”™”“•š•˜“•“•–•““—••—–••“–Ž—•••–˜–𔕓”’’–•–••Ž–•••”—•’••••——– “¡—œ•–•”•—™••••–˜™—–•˜‘—˜•••Ž—””••••–—˜–”—’Œ•“–•‘•”˜•–›‘–•••–•›——“Œ—•‘š––•–••••––˜—””—˜–“—•”˜—•”–•—––ž’“”’––Ž’•—˜›”Дދ‘–˜”“š’’š””“›Œ“”““Ž‘’€’’–—Ž—ˆ˜’•”––—”‹“‘••–“•’–ž“—‘“–•Ž—Ž” •€ŽŒ‹‘–“‹Š–ŽŽŽ•’““”Š—’œ”–‘—’”“ž”—“”“”•‘”–’””“”‹“”Œ‹”‘‘Š–Ž”“““‘‰š‰’“•‰–””“Ž’’‘’“”—–‘’Ÿ˜•“•“‘•“Žž’“‰•’Ž›ŸŽ¬™“’‘Œ“|’“—˜˜“˜““‘Ÿ”ˆ’‹”–—‹—š•”’–ž•˜‘•›˜™”–”šŽ–™™–š–“—ž˜”•”‰—””œ•—”™ ˜˜›””•›‘–“”˜Š˜œ—•”—“””˜••˜’›”’”˜˜•”“••˜–’–˜–‘¤•™ ›•”š’¡š’•¡“Œ”—“—©‘”Ÿ”–˜–•’Ž–•••”—•’‰Œ–™Š—•”••••’•”‘˜•–’Œ– “““–ŒŒ•••ŸŠ’‰Ž—™”›™›“’“ˆ––’˜—˜•”•”Ž’—™©›•”˜”–•—“•¥””—”™•—•£•”—‘™ž’‘–––—•™”¢™‘Ž—–‡–’—™–—––›˜––’˜–˜™•••›““š•—”—––•”š•–™’•žœ’™˜¤”–’‘–›’ž˜••““––™‘–‘œ•”” “”—–“•”’››–š…‘š“˜“•‹Œ–ŽŸ–—•‰“™‘”•–›’“’––”™Ÿ–˜–“–•“–”™‡—’—“•••ޕ𓖑–‘˜“•‘‡’ ””“––™‘–•’™”“˜•““šž–”••—”–›—š˜Œ˜š•“•“‘—™˜˜•“˜••˜’–—•𠓔ޖ–———–¡””‹““›Ž“—‰“–œœ–“™“•—™”ž™›–”™––˜•˜“•“—›––“”ž–—Ž›–—–•’—”——Œ–”–˜‰“’—•––••“•™‰˜–“’˜”•““”—”••”’˜–ˆ‘’’”” —–“”• —”š›–—•‘’—™˜””—”’‘˜•›•“‘‘’–—˜¨“”™”•›”–•”• ”—•š–‘•‘–•Ž••–––›•š—š–—•”’•—–•˜“›“–•“™“””™’––”’•‘˜“œ•––‘–“š•Ž––’•¡•–•”‘›•˜‡–œ˜–”•“••™—œ™‘Š’›œ”—•–‹˜••–“—•™–Ž–—“’˜–––›—˜ ž”—ž‰Ÿ™—”“œ••“žŒ¡—•››™–—’–•‹’”žœ‘˜™—˜¤›”–ž”“‘™‘Ž–—–”˜—“™ž¤Šš•˜••—˜˜™””’ƒ˜“•ž”–™˜› ••š›––‘—š•”—œ—˜”’™––“¨‘–—ž•›™••š‘Ÿ–š”™•Œ–˜Ÿ•Š”•ž–“””šš•••’‘•™—•—”‘•••—Œ‘ž ‘™–Ž™™—’Ÿ¢¡˜˜•—”–––ž”•€’—–‘“™—–ŽŽ”ŽŠ“™Ž‘–”™–™‘—‰–›™•—ˆ’•™£“ž”—‘”•”—•†–•”“˜“¥Ž”‘•—•’˜’¡“—–“¦•““”””–•”™†™—š–š™›••‘—•Š••™Ÿ”‘”Ž”˜•–¡’Ž•“–•˜”‘˜”˜˜””œ•“¥ •“¡‰•Ÿ’¥•””–’ ˜““šœ“–•“¨––›™•’˜‰™œ™•–”••“‘h¢”—“””š”˜…”’™‰¤“”™’™‘¥£—””“ —“‘–”¡šš’“–ž¥¬›—‰”“™˜‘›¡Š”¥˜‘”˜“—•”œ˜‡’”§–“•œ“–’˜•“—…›š”œ•‘–––”˜š£›Œš•ž”–’”“𦇔””•““–•”–”“–œ–‘˜—“’•’Ÿ‘Ž’‘’—˜””˜‘”“‘œ“‘““”““‘‘Ž“”““““““““ –Ž’—“•’“”“–—x𔓓™—‘••‘‘‘““’““•“›•Ÿ‘”“–“•’‘”•‘“••“™–•“’——’“šš‹’’““Š–““’”ž’”’•“’““““““Ž–‘‘““•œ–“”“”“’𔓓˜“˜š”“–‘”•“’“–”š“’’ž“”‘ž“’“Ÿ“›’•““”““™˜’•‘••“Ž‘“˜“’’“–—’œ”›’•Ž˜™–“‘‰’“”’’”¥—™“—•–˜’“•š–’••“˜Œ—‘’–˜‘“›¥‘•–—˜“”–•–”•—™“˜—”•‘“•‘™“–““”˜••——–˜••’œ‘œ•”›•—•–‘”Ÿ˜“‘• ”™‰”•œ‘•”˜—’”–‘“˜™•“—•š“•’••–‰“–—•‘•’‘••‘ž‘‘Œ™“•”••œ•–›—™“‘•—š¥†˜–š•–•‘–”–•––˜™••—”‘”•“–’Ž–•–—’”Ÿ‘—“”•”–•›•’–•–š–•˜œŽšŒ•¢˜’“‘“••¡š””—œ ¥’’˜›”•›”˜•š“—””‘—‘’–š˜š••™–—”›–••˜“••“››˜“–š–“’’”———––šœ––”Ÿ—˜‡”‘—•’£›—’˜—˜–™“”–“ ™˜—”“––”•𙕗–¡”•™•–Ž£†”“––•‰ œ”˜•—”–““©˜“”—‘–•›Œ™’—•š•——–—˜š¢‹›––•–œ––˜–œ•‘Š–—–œ—”–––‹”——•–Ÿ–›“”š•••”––”—œ••¡”˜œ–’—‘–•¦•©––”ž––‘”™–›—–‘•–•Ž‘˜–’––’’‹œ’¡š“–˜”˜–—”˜—Š•—’š•‘“‘’Ÿ™””—œ—•Œ—˜™“‘˜•š‘š–Š–”˜‘™•–“”•—›“™˜ “™š’–“–—˜•˜––‘”‘–œ–””™•”‘™“˜—–š““—™“ƒ’¢›—–Œ““’–”›˜˜••“’”’““’˜’˜Žœ”œ–Š™‹ ”’•”“–”—†—”’’–””œ”˜•˜œ“––”’˜Ž—Ÿ›””˜‘“—”•—”’𖕔𓑓™”Ÿ“Œš˜›£•𛒔𖙓•Ÿ—«––•””•š˜”–››”˜™——šœ•’•’‹Šžœ•™–••––”–š››’’—“”œ–¦ž““›Œ—€¡–•Ÿ“‹’§˜œ¢œ›“¡œ“’Š•““”’”•˜ˆ›””“˜˜‚••”¡‡š——¤”™”š’¡”›¦Ž©”‹™•–™–‘™•˜ŸŸ”ד–†Œ¤ž£“‘—”‹™ ••˜‘–‘™›Œ›œ’¡¡Ö›Œ—”––—v••”…Œ—•”˜—“””˜””–ž“™–•“Ž‹ž¬Ÿ””——‹‹””•“¡Œ”†ž•‡•™ššœ–•ˆ—˜‘”•‹“˜š˜”¨””𕖙ބ•ž¤”•–˜š‘…‡Šœˆ‘¡˜“›–”—’–—˜†••–žœ—•Œ‘•”˜“žŽŸ•—“”œ”’š˜“—–’’˜’›‘˜”“š’™–•’™“”—”“””“““‹‰¡•Ž“—˜•’••“’’‘™”˜““–“•“˜¢”•””’™•—š•š™’˜›”Ž‘ ‘ž“œ”˜’”“•˜•’“”–Ÿ———œ¡”•ž‘“š˜—ˆ’”œ“”““””š–˜–”“”“”“’’““‘šŽ”’Ž‹“š˜•“““”’–•“”“–—š‘“Ž“˜ž—›”“–———›‰’•““’“™•“—˜’“™™“““”—’”œ‘“ŠŽš“›ž–”š““›••ˆ—˜’š•“•“š–œ›Œ•–•––Ž”¥“˜“”Ž‘Œ‘’•–‘—–—™“œ•˜‘‘—”““—”•‘•”“’“›—Ž’—™“Š—“˜•™“™••“–’–“˜¢””˜¦”‘‘—š™™•—’–‘“—•Ÿ”˜Œ”“–“˜™˜’“™–‘“••”š”›˜––‘Œ‘“‰›•”“•’”•“Ÿ˜’‘‘’”–•š–™—•“š”™–˜™’—‘œ“•””™™‘•–••’š™ŽŒ”‹˜“”“••”˜š‘ž—‘•ˆ’””•–”š‘•š–••’’••””Œ‘Ÿ“™•——”•™“—‰–””””—•–˜˜š•™“•Ž““–“”™’•’‘”Œ—“‘–”’‘Ž”“““‘Š”‘‹—‘’•œ•“’”•Ž”“‘— ‘“”•”“‘˜•‘—•“•‘”’‘•”””’––‘–““–’“’•‘’•›”‘”•‘Œ‘–““”“Ž“””œ“•˜“‹”‘‘’¦’•’•”“”–“£‘’’¦‘••”–—””“‘’’•”‘“–™’••”“’‘ž””‘’Ÿ”¢”“–‘‘•”’–••›•‘”—Ž’“˜”•‘“““•”‘—“‘“–’” ••œ’‘“‘’”‘•’’™“˜“”“‘”•—•‘‘‘”š–Ÿ—Œ‘”—˜–”””•”œš•“—•‘–ž””––‘š˜–”Š•“–—•˜–šš•–›—” ›œ•—•“œ”••—”—•—𔕕 “•–“”•—“•Ÿ“š˜–™ŽŸ˜’“••™–¡–›Ÿ”‘™™™Ž“–œ——”’šŽš™”–™”“”—”–˜š•–—’’˜”‘–•••””Ž•›™”–”‰’š“œ“•–•™””’™•˜ž“Ž’Ž–“–›¢”¡”–•“’’˜–™„ ”–••™’—“—š••ž˜––’““—”—“ž”“œ˜•œ”–•“”˜›–œ’“•—›˜•“ž–¡••””””‹’“—•˜›—™”‘”“˜˜š•ž”•‘•—“•—˜”“•˜œ”•”–•’Ž•–¢›•›™‘˜©’•Ž™œ•˜›’‘”š“••š”›”•’“’••”–“œ”›˜•–•“‚Šœ”–’’‘”“Š•—›’“•‘“““™™Ž•’Œ“˜•˜“–••ž•”’§–—–—”””—“Œ˜•–‹“š•Œœ™–”••”˜•—™–”’–Žš˜”›˜›œ——••“••œ¡›”šœ•’”›–”˜Ÿœ—•‰””•—Ž™›¤“•–—‘“›•𔫒•™‰“—›”އ“˜Ÿ” œ”’”’˜Ž”’™˜Ž›“•”˜”œš–˜™“–“™–”Ž–•‘—“Ÿ•’œ”‘••”••“—š•›””“¨•™”—•“•‘’œ˜•““•”•“Œ“––›•›•’•“‘“—“––•‘‘š‘’•¤–“—–””Ÿ”’—“—˜’’¡˜˜”–˜–‡œ–”–•”•••¥•”’••”˜•Ÿ—””•Ÿ•’œŸ“˜”””•‘™Ž••“›”’œ–•™”’”“–—•”–Ÿ’”›””–š•”’•˜”šž”™—•••š—‹Ÿ•“•”œ–•›—“’’Ž“–’”••™•‘’‘‰–œ’—•“—š••œ••”•¢•’”•‘™”••–•š•—˜Ž”•ž›––•–•“•“ž’”šœ—•œ™•–˜”–ž—••ž˜œ••’–•‘””•–•”›”Œ•˜™™š“”•–…™–‰”••–Ž•‘š ’”š˜–‘›”‘“‘”–™–—–™¬““”•™••£”Š™“•ž••••””Ž•š”˜œ•˜”–‘œ—–––•›••˜••”†”—•˜”“˜›˜Ÿ–—”••£—•››––••›””™ž••˜”••˜›””œ›”––“—–š–š•™––•“”•‘𒕇”š””šžœ——¦•”—”‹–•–•‘˜–•™“Ž––’—•™’“”“–•’”“›”•–•”“””•”“•ˆ”“Ž˜•˜’””™˜™••Ÿ–“••’’Ž—–š—“›”•’ª‘—–˜•’š’•›˜”‘Š–•““š—’“”™™——””–“••••”„œ•œ•””•”Œ”’““”‘•‘’—‘”˜”””””’—””““‹‹’’•’•–“–’“”•’Ž”“™Ž•Œ•’•™”–“”“›‘”””•Ž–’™”•“˜‘–•–”𔕛Œ—‹••”““”˜—‘––™”š•“ƒ™’’”–›žš’’”“‘’™’—“‘’™“‘ˆ’–š—”“••𔕒•”¬š“’—šš’•“™£œ•‘’•“˜“’•’“™“–’ •••›“¡“”“•“‘’•Š“—“¥”‘””¡‘™“–’“”•“•””””•“–“ •’’‹ªš”™”“š••’š”š ‘•”•¡•˜“•‘‘’“•”“• ›Ž–“•””“‘—”””‘“¥“–™”’‘“”‘’•š“¡—”“–‰‘’•”––›”‹“œ˜”Š’–”“›“•”›”“œ’’’“’“•‘””’•¥–“‰“”•“™ ••“•“•‘–‘˜–“—›‘–‘•—•’“•“‘’‘“•“”—’’–˜“’“–’”””•–’‘’–‘’’˜“™”˜““–••’•–•—”’œ–•‘–”“—•“••˜’•“”’’“”’“—“––™”•“˜‘˜“‘›’“–’’••‘‹”•‘”“‘——––Ÿ”‘”‘••–•š˜Œ•’“•’“““–”˜”•”–•—”‘’•š—˜”—“˜˜™’”Ž”’”–š” ”–”•—˜‘“‘ˆ“–š••””•”ž’–—“‘•–•––”•‘’“ž”˜•–›–™“—•”‘”‘”•””™”—”šŽ•“Š’•”•““š‘“›‹””“——•–¢–“”‘‘™™“”˜““””ŠŒ˜”’—––™—“””——•‡“•˜›—“”Œ¢“˜œ“Ž‘•Š”—’–‘Ž““‡Šœ–›””Œ—’–›™›“Ž–““’—𙓓“|˜Ÿž“““’Ž““•žœŽ‘œ”’“Ÿ“Š™““Œ–˜“”•–™“Œ—””“””—‘“”’—™ž›œ”‡‘Ÿ–”–“™’‹›•™”›”“””‘Ÿ“——”Œ“•”“”–—Š„””’—’”“š“” •–’’“–‹““ž–™“““™—“‘“”Ž—“–“’—œž™‘”•¡›”’Ž”™–—˜”˜Œ••›••‘”††–™œˆ“•’’–”Ž•••‘•—”‘‰ž“˜’•œš‹œ–ŒŽ•“Ž“”¡’—“š™’–•–•‘‘‘”“•”•—¥™ “𔓙–Ÿ”ž”Œœ””“”œ”žš“”””””•“••’—”‘•˜•‰–••”•’•”‘–——–Š”•””•’•¥”™•”‘“•‘”˜”••›”ž™”‘••‘“›–”œ™”—•—Ž‘’”‰•”“˜š”–Œš’”‘‹›•‘ŠŒ–”šš•”•–’•ž–¤ž•–•–••“—™’𔓛™’Ž–•’——–•™––˜•†–Ž›•““–”–¡’™š‘’–”““–“—“™‘œšœ•“ ”—“”Ž’–‘‘—œ–Œ’•–”’”‘““‘•™Œ¥“˜‘–š”Ÿ–•” «ˆ–›•—‘–•šz‹›•–”•–™•š˜–—›‡‡–•“˜–”™œ••••–Ž”—•™Œ”‘†• ’‘”‘—”–”‡—˜‘˜–¦•Œ•ˆ”—–”–““•˜–Ÿ–•™šŠ˜Ž–“•—¡’ š’™›š”•“‹˜•Š’‹›•’›Ž•‹”‹˜™—‘—  •–•’—“ƒ’£“–”Œ“–”›—š–“’•”••”‘žššš˜•“—šž•–‘–—’”“––••Ž–’–„™—œ–‰•‘ž’Š—”–••““–œ”‘”‘–—–‘“›’••””–“”Š”˜”›˜œ•˜––—¦”œœ–Ž–•§–”™‡¢”“–”••™–•–Ž””–‘•’•¡—†—–•”‘–”–•’”—“—”¦”•“–”–‘”’“”¢••’””•–›•”¡•‘•––“ž”–›š”¢‘–•’–“—”™–™’”›””•“•’–•’––”––’…•“•–¢’”“—–ŸŽ–›“”˜’‘‘‘“œ‘‘•’’”“”š’“““““’šŽ”¡‘’œ•Œ•“– Ÿ”“›“‘““’“š”’Œš’ž“Šž‘˜–”’”•””“¡”š‘”“œ•˜Ž“£““ƒ“š–‹“˜‘‰Ÿ—““›˜‹“Ÿ›“•“•““““¡“”™““¦“•““—•‘‹“”™ºŸ‘›““““’•““–—¡–›’“›““ž‘“••ž”’˜™š™“”“’–“Ÿ “—™“““‰Ž’’™‡“—“’““‰š“–’—˜¡•’“‘˜“‘’’–˜™“—•–“•› “’‘—•‘”˜—–›–˜–Ž”“•›œ–””•Ž•–“¥–š›–””Ž’–‘““›˜•šŽŒ•”–”‘–œšœ‡•”™“”—“—’–”‘•’‘‘‹—’”ž‘—™”•”—‘•—”•”–”Ÿ–—’¢”›”•––•Ž‹™ŸŽ••”••˜’•ŽŽ‘˜¢–Ÿ‘›”••˜ž –•–‘—•• –¡˜–𙓓””Ÿ—™‘”–Œ•›–—™•‹•œ •““••š––‘‘•œ–š’˜‘–’˜”’”™‘”‘”–Š••”•™••ž•”’Žœž˜œ”‘“”•Œ–˜–‘˜Ž‘””‘“¡••™“œ“Ž”•‘’””’”““”››Œ—£Œ“™’’”““‹š—‘–”’””•”˜”“‘•šš˜”››“š’–“•”””{’˜”—Ž–“”¢’œ”‘“’“”‘“””“–Ž’™“™””Žœ™”𔋓”‹œ“‘—œ”•“’” ’”–‘—“›””–—’œ•”“’—¢””””“œ’¡—“’•“’“’••”Ÿœ“”ž’’“”˜”—•”–’‘™“’’•“‘–—“›‘“™™’“’””Œ“”šŸ‘ ’•‘“”“™š”–’’—•𛕇”›˜—˜–¡š—™“—˜•£˜˜˜‘—‘˜‘…–˜–’›——••ž•––•žš˜™Ž˜˜“œ”••‰–™˜–—‘–••–›––•—Ž¡—š‹•Ž–•œ”—•––•—“–ˆ”‘Ž’’•“– “™——“–ޔ𖕕’•““’••–˜–~š–œ••––—†••–••–˜–œ˜–Ž“”—•–•–—𙕕•–’’•••–””””™–¥“—ž˜•–•—••Ÿ“š—š˜••––”™••š––“•—–™–•”–•’—•™“—–¢™•–‘––™“‘‘“–’”–•™™–‹—Ÿ—Ÿ”‰—Љ‘‘•—˜’’’’‘“’™’™‘‰’›““” ‘•““™““’•œŒŒœ“‹•™Ž˜“‘žšž•™œ““™–‰’“‘’žŽ˜š“š›–““—™–—’Ž’Ž•‰‘Œ“”® ”••’“Ž’›’’‘“†‹£Ž—“‘Ž›“›’›“š‘““‘“–“—Ž“”““š—“—’š“‘’“‹•’›““““”š““›”“‡›™”›˜“’“™“– ™–˜”“–‰“š“—’“˜“¤ ““““‹’„”œ””””••“—–“”ˆ–”›—’‹’“‹Ž›“™‘’”•——ž”’’”˜‘Ž“˜˜•’””•‘”••–“••“™••”–’™••”–”‹’•’—“’—š’”‘“™“—•’”––’—•’Ž–—‘˜•˜”–‹—”•’’•“”‘‘ˆ‘’Ž”˜•š’’’””—’“˜“–“–“””““—”•’œ”›••‰””‘™•“—˜—••”’“•‘Œ“‘•‘“—””“—Ž–“’’œ“Ÿ““Ž‘—”˜’––‘“ž“‘˜’–“•–”–›”‘—„‘”’••’‘—’“—Š”‘”’“–‘‘”Œ••›’™”•’‹“””’“”•˜’“—›“—˜”‘“ž—“ž”–—’š—˜”–Ž˜˜—“–ŠŒ“•žš–’“’“”™‘š•Ÿ“—œ’Œ¥““•“˜”–‘–”š—•™“‘•”œ™Ž”œ›’™‘•”š“Œ•‰˜~˜’š”˜—œ•˜–’‰•“™™Š–›š“‘™š~–••”””Ž“”—•š—““•““’Ÿ“Ž˜”–’–—•””‘•——›Ž’“’™–˜–”““Ž–•–™”™“”––“›“”–š“˜™™‹“›““—”š–”™—€’”˜“•”› ’Ž˜”–””—››˜’‘”•”Ÿš•”›Ž—”‰ž”–š–’“ž–Ÿ–—ž–—–—”•–”œŸ–•––””––•–—–––˜—–“’–—–•–—•—”—˜””‘•—’—–›ª”–™••—•–‹–—¢›—•’””•–•”•”™˜–”‹‘˜”—𔓒“›–—–™†”˜”›”—–—™š•’•š’”•žœ”“–•—•––™—––—§–•””–––––”–—“›“—Œ—•—šš—•––——“•”–—œœ”‘”‘–•›š¢“—•–™™””˜—Ÿ‘›–‰–•–—“—”–‘•—™›–—š’•—““”–”‘•—š’•—–”–””” œ››š—“’––˜˜•™”””•–”°Ÿ‹“Ž—ž“””–™’Š•˜’’›“‘‘Ÿ”—•–‹˜––—–•–”–§Ž”–’–¥”Ÿ–•–œš–‰› š•”˜‰”•™›•ˆ–Œ“––”————–›†’•›–¡™£›‘Ÿ¡š• ©’𔑕¥‘Šš”™•‘Ž”‘–ž‘”•—••~”•ŠœŽ˜”“••””’•†šŠ–“••’›¥‘Ž‹•–•–‡š™••š˜‡”•”œ”—š™Ž–Ž–™•š‹…•™’•Œ•‘–•†–¢—•–™–•‘–Œ •—–—’“——”™“•”—–¦•£™š˜–”…˜•š—›Ÿ™Ž‘“’–Ž”Œ™‘–˜––“Ž‘”•’™‘™“”’ —‘— ‘Ž—”–”–”—•“œ’‘’œ“‘•—ƒ••“–Ÿ’’”“•‘–—‘–‘’œ˜‘“”•—•’˜’“”™•‘—£”ŒŒ”Œž’—˜•™“Œ•’“¦“‘•”•™‹”™Ž”–’‘œ„Œ—š• —••“ ’•”š•”™”–•‘–’¡—•”•‹š““””’’—˜–‘•—•Œ–’“‘““”‘”•—’“‘Ÿ–”“–—Ž‘–”•’•—“–”–Ž•—”‘–‘““‘•”•—š‘–’’Œ‘’–””••‘“‘˜˜ž”“›–‘‘¢ž™–––¡•“˜’ŸŒ‘—™–˜“ž““’“˜•““’‘Ž—‹—•“•Ž”’‘š–•—¢•”˜•‘““˜”–•“˜•–”™›–š–”•‘™Ž”Ž•ŠŒ‹†˜•œ•“–”›–•›’¦‘ž’•”…ŽŽŽ”’”’—˜Š”“•”“‘  ——›““““‘“š˜“Œ’”ޔޖ–”˜“‘‘—”œ•’Ž—™’šš“•”“’“—”–’£•™’‹–’‹“”’˜“‘“™Ž’‘””‘““•†–”‹’Ž–Œ—’Ž•”Ÿ“¤Ž•“““‹ž”‘’”•¤•’•‘’Ž˜’•–”‹ŽŸš’•–—‹•““–— “—š›’˜—•—“”““”ŠŽ”“˜•–”—‹‘•’–“šŽ”’”–‘–˜•”•ž•¬”””“““‘“•‘“Ž“•’’•“™œ•‘™”—Œ–‰”Š‹”’˜–—›••’ ”•–”“””•“Ž•“””•––‘•‹˜‹˜”‹‘œ’•“”Š”““”˜‘’ˆ”Šˆ‘—“—Ž”’“––Ž”ŠŽš“•“˜••‹“¯””˜–•“–˜š“ž–’Œ’‘••‰••”’‘‘‘–Ž”–ž‘™•Œ”–œ••Ž–‰”–•¢–““•’””Ž•˜˜›““ ‘’”“•–›£”’“˜—“’•””•”‘›”‡˜”””–‘Š”““’›—•ŽŽ”•”‘Œ•™—•”Ž•™’Ž“›–’‘—–‡—’™Š™”—•œ”ŽŽ’•–”•™Šˆ‘¡™Œ”’œ–’™””Œ•–š–’•”Ž•––“˜’•””†•¡”…”“–“‘““‘¥–”“‘“–“Ž™›ˆ™–“‘Ž‘•”‘’—“™––”—”—“¡””Ž—”–“””•’••™”””™•“‘–™••Ž¡”™““šŽŠ“Ž“”‡†š”Ž“‘— Žš“—“Œ’š“”–œ‘“••“¨”•“”—•“‡’“”’“—•“““”’‘’”›–’”“”˜“””™Ž˜ˆ“””˜•”•“žŽŸ‘”“’”“Ÿ‘““•™”’“‘—Ž›–…’•š•“••‘”–“¥“’—‘—˜–“¨””””˜•š”Ÿ“Žœ““”¤‘ž—˜’“”””™˜“Ž““’•’’’Œ‹•”“‘‘“•””’‘™¢‘“—’“’“™•”” “™œ““¢•Ž—”“’“•—ž”“”“”““””•–‘„““–””””•‹•”“‹Ž•’‘‘“‘š“”–’“˜””‘™—Žˆ™™’›žŸ•†ŒŸ”’‘Œ˜‰Š—”‘“—’ ‘™•Œ’““˜‡“›”Šš„˜›–¡žz”“™Š–’–’˜’‹qš¨Œ‘y—Žœ’‘•Œœ’™—˜Œœ®“›¨ŒŒ˜Žš’‚Œ““€šœ’’™‘’‡£šx“™Œª—‹‰›“š‘“˜”•’“¡Š‰š•“‘ž”Žˆ±˜…–‡•–ŒœŽ–‹–‘’“™›”‰Œ‘™ˆš‡˜Œ¡ž––Š‹‘–›””Œ®ŠŠ„ˆœ‰•—•°‹—‹—Љ““›‰£‰œ”  ŽŽ”–š‘›”‘”‡‹‘‘”„f‡Ÿ˜’ˆŽ†˜«Š“Ž–’f–Œe˜„c”’•x™˜‘“–©Š¢£Šˆ†ƒ“—€‰|“މ™’’“›¤‰‘†Š²w™”…€‹–¬’—š’¡“ž–ˆŽŸ—ƒŠŒ‹—•”s™—vŒŽƒŽˆ‹”†—¨ž|™s’–”“Œé} ˜š}Œ¯™ƒ”ˆ¨Œ˜ˆž‹‘”€‰€’…’‹˜’Ž‹Œ˜–“©œŒŒ“œ«–“y…‡³–ˆŒŒŠ‰Œ‘ºŽ¤Žš‘“Ž“š”f”•š—Œ˜—Œ”®“…˜ª‰‹•–¯•’‘Šˆ‰ŽŠ‹›‘—š˜‘”•ž—›ˆš•“—ž™’›•š˜‘¬¯š“˜—–“‹™žœ”™‘‘”‘Œ’ž™”—‘›–”ž’šžœ™‘™˜”•¤‘—šš‘”˜– ’£Œ••…ž•Ž‘œ£›”œ“˜“¢« ‹Ÿ˜˜“€šˆŸ¡²–§œ““˜¢“Š’«‘ ’‘‘—‹™ ˜—“’–•Ÿ’˜Ž˜““›šŸˆš“¢–”’œš™•Ž’—˜¡ž¢’‘’™™’™“‹™œ¢‘š‚š‘¯––š”ŽŽ˜’š“–™•‘¥¤›ŒŠ”š•‘›˜‹”“ž ’›ž¢™œ¡‘•Žš–—„ƒ’œ˜˜—Ÿ¬šœ›‘—ˆ”‡ •“‚ŠœŽŽ‰„Œœˆ“‘Ÿˆ‹–•Ž˜ž—‰›¡ˆ“ž†£Ž• ‘±–š‰Ž’Ž‘Ž‹”›†ŒŸ¢—‘¦˜—˜‰”‡”‹ˆŠ†“‘ކœ’’«’–‡‡•‹š†‰‘Œ‘œ¤˜Ÿ–’žˆŽ„Šˆ¦‘Š›”œ’—£•¢¡š’”˜¥‹—Œ•Ž‘”–˜¥™‹Œ£ššŸ“–‘“‹¨”˜Ž˜Ž‡“‘ ŽŒ˜“Ž“ŒŒ‹’šž‘œ•¥‘{’–‰Œ•’‹€Œ¡”˜š–’‹Šˆ‹”›¢”•—Œƒ’˜™‡˜ Ž—™“‘®’œ•¤™—’’¨‹š‰š‹Ž”’””š„’Š–‹Š –‘š ‡’”•™‰›–Œ•‡˜Šœ‰‡’›‘ދޒ˜’”š““Ž—”–žšŠ›Š”Š•‘ˆ“¡Š¢’™‘¤‘Žš”›“}—‘ˆ“–q“•‰”“”˜……†w—¸v›„™•’“›““³œ‰£“–”˜ “–”“Œ•Ž—œ™šžˆ—””˜ ™•–”ž’œ—’Š“—’†”“t˜‚£“‰’‡œ–š™žŠˆ•“‘œ›’ކ•‘š—•”›‘’‘‰–‘š–§’–›‘“˜‹˜•“’Š›˜“•“’“o•””–‘Žš”—Œ—“މ“’”•˜›˜˜Ÿ‘’”••Š•’Œ“–‘Ÿ–—Ž––§’—•ŠŸ‹—›–œž¤’—“Žœ”“’“Ž’‹£‹ŒŽ™‘––—”‘”‘ž•“’˜±•—‚¤”˜‘•œ’–“‰”“©“š˜¡–‘–‘š‡‹‘‚“¥”‘”šŽ “”½’Œ™Œšž‘ ‘‘‘ ¡””¨œ‘“‚‰”œž’–¢‘—›’”œŒŒŠ“˜’™˜‹…‹’•Œ––šš“—©“§š’Š¥“™ŽŒž™‹Œ”™˜–•‰¢‹Œ™Ž”‘…•”’“•—˜ŒŽ€›—“ˆ£˜Ž˜ˆ””žŠ™‘™•“•‹•œœ”š™’“—ššš•Ž•¢’™•§šˆˆž”•¡›œ’‹Ž‘”‘Œ—•—“«­¤—“¡™›–—™Ž¤’™“³‹™–”—’˜‘„—™”—”¯¡“–”›—‹ŠŸ”—¨‘ˆš››—›”–˜‘˜œ¥™ž—‘˜•—“—‹•—ˆ”™x‘›’–—™˜—“Ÿ’’žƒš”Ž¡œ˜””œ› ž–Š›’–––‹ŸŒ¥š’‹•—•’|Ÿ˜”’›•––‰”Ž–£—˜¤ˆ–œŠ’‘œ”Ÿ˜ˆ’˜“‘•’‡…‹ž¢™Ž•˜’”š¡Š”’ ——˜œ‘ž˜’šŸ‰ž“”“™ —”š‘—§– ”£”›™ œ}‘›‹ž™š“š”•—šœ—–™˜’~˜™†šž—šŒ‘”¢™•“’–…{¥—’š—ˆ‡—’’ŽŽœ¢Ž’•’‘”Ÿ‹¡œ‰‹£““Œž˜• ‘”Ž•™–—™’žž—š‹ˆ—–™š•“–Ÿ˜Ÿ›š’Ÿœ’˜œ–›ž— šˆ›”š˜¨‘¢’Œ˜šŽ‘—¡—ž••™›Ÿ—œ˜˜’–¥””•’§•œ’—š˜¤“•Œ’“˜£’‘”——’™š˜›™Ÿ›–¢•’•‹š‹Œ‘’›“–Œ”’Ÿ–ˆ”›•‰ˆ•“’’”‘™Ž’“•—ƒŠ”‹„‰œ““”…‘ŠŽ•–’”›Ž”š‹€––Ž—™”Œˆ•‰‹“šˆ‡”§Š—‘‘}Š“•“’Œ•—“‡“–•ˆ”ŒœŽŒ”Ÿ†‚ƒ†‘’‘“™zŽ’‚”™†’‘–˜Šš˜’‘‘}{’—Œ‘–“•ŽŽ–“”‚—„‹Œ~‘Žœ””‰’…“‹–‹‘‘Š—‹“‹š””–‘Š’œ™••£™˜•‘‘Œˆšˆ‘”‹ŽŽ’–’‹“Œ–•ŠŒ—›Œ‚…”—––‘Œ™„’’–•Š‘’’—ކ‰Ÿ‘–•Ž˜Ž”–‰š‰”Œˆ–‹™˜’‹“—œŒ‘˜‘‹‘–’˜™”“•—•–’–Œš…“’˜•””Žœ’•™–’¦†“ŽŠ—š™š—–‹šš˜•–š’’——”‡’šŽŒƒŒ’”–¦•„›š˜”œ•’•Žž›š„–›—’“¢™”Š”šŽš‘——‹‘™•’’Š—›Ž•𑉙–™–™ˆš’Ž–œ’”‡˜’’“—•™Ÿ‹š•™„“›—•–¡’ˆ’™‹•‰Ÿ”‹œ‘’ˆ“’“•‘•œˆ•†•˜˜•™˜™‰––”‘˜”“š˜—“‡—›’š™’ŠŒ˜†“˜˜Ž‰›€˜—˜Ÿ“—“•‘‘˜ˆ••›‰‘–ž”•›r‘’“‘—‰œ”‘Ÿžz—™“•˜–“¢‘‘—“Ÿ’†’˜—™Ž™”¥™™˜’¡™š•…Ž—›—›Ÿš˜™Žšœ‘„”ž–—“™‡–™Ÿ’š“”™š’—˜Ÿ¡¡ž’–š•‘ŽŠ’—”’™‰†–“”—ž—‘‘‹›™Œ––•¡“¢šœ—ˆœ’’¨Œ™‰™˜¡—“š•“›‡˜”“’‘a†—“˜Œ’™Œ‘™“ ”–˜Ÿ†’–›’’Œ”—–Š–šš“’¡“𙆕— –‰š’Œ“Ž‘—–š• Ž™”•¦•—Œ“Ž’““šˆœ—”‰™—˜•‘Œ˜¥–˜Œ•…—‡‹• ˜¢‘¢–Ž™”¢›–•™‡„‹¡’—–’Žš›—‰•š•Ž˜†‘š‡“•Œ‘ž™–Œ“”’—š›•’Žš›“›•¥–Žž•“ŒŽ––¦–|–’œ•—›‰˜†™Œš–¡’•š—™Œ˜‘’’§›—Œ’ާ”››”” •–Ž™–”—š˜“› Ž‡ž˜’”‘–•‹…œ–Ÿ—”Ž–“’Œ—•”‘˜‡u‘““¡ŠŒ’’•‘˜¢‘“š–ž“š–••———“›–š›”˜Ž˜˜“˜š••Œš§’ž£–‘›˜—‚›Šš—Š–œŽ •ŽŽ•™‰• Ž—šœœœ•‘œ”‘—‘•”˜Œœ¥‘‹˜’¤’—”˜Š••“™„‘šŠŸ•‰’‰‡‘Ÿ£’—’†‰š™‘–”š“–˜‰—“™‘‚ŽŽš”˜™›’š‘“’”“›’žŽ›–’¤ ˆŸ™“Ž—š•Ž¥”–™•‘…‹˜™•𔓔–—{˜‡Ÿ’’Š–‘ŽžŽ€Žš§™˜‘—’ª~–š­’•“‚••’¦§›’š˜—š„ˆ•– —Ž“‹‹‰—•’“›•‘—‘–“–ŠŠ“ŒŒ—›Ž‘†•’”’Ÿ•ƒªœˆ™”’Œ”‘•œw¢•”™” Ž—Œ¬“—‘œ”˜•”—Ž”””Š¡‹”Œ‘›œ˜—¦ŸŒ“މ™—«Š˜•›”†“’••’¢œ•†Œ‘‘’‘‡—‡“œ•”Œ”•‘§’’˜”‘„‹…‘–’¦•ŽœŒŸ…‡™£”’”“Ž•‘”•˜’ •š‡ˆŒ‰šš›Œ Š–Ž“—Œ…‡—›¡”‘•”•““މŒ™Ž• •’‘ž”˜—œ‘”’•‘…œ˜˜” ‘–‰•“†”“˜Ž›–•‘•”›‰…”‡’’“‰–—•”˜œ‰™–•›‹––œ•Еޗ‘Š˜—«ˆ›”‡‹ž“š”‰˜–~‘•–—Œ’””™° ‹š››”ˆ¡“™Œš˜–™Ž˜›œ–œ žŠ“Ž’„}™ Œ”œ¨”ŒwФ‘š“”…—“„—‡–˜“ŸŠ£“‘”Ÿ•¢“—››w–𑣑˜•™“‘“•“’š”‰˜š›œ‡žˆœ—•›˜–Žª•’™ž†Š”“–“••šœ˜tŒŒœ“—¬Ž™–™“¡‘œ‚••›‘’Š‘–‘–‹Š‘¡ƒ”ŸŽ’’“ޓޑœŽ•”ŽŽ‘“•Š‘”˜‘Ž••¤˜ž“™—“ž”…‹””——“—•‘‘’¡“Š‹‘ž—–•“{˜‰’¥“žš’‹Š’Š’• ˆŽˆ”˜š£¡—›‰•–—’—•–Œ’“Š—Ž“ž•Œ˜™”ޓޕ•Œž£”›™ÈŒŽ••𔓒‘™˜‹™›‘’˜Œ˜’‡ŒŒŒ‘˜ ž™’£ŒŽŠ–•˜—™•’‹“–š‰Š“”•£™‰–‘”œž‘ŠŽ’”™Ž–Ž…Žž•’¢~𙓩—”›‰Ÿˆ•––—’ ”ž’“”™“‡˜’”—œ’•–˜š‰œ–”Š•–›•š¢ŒŠ—¥£œ”Ÿ™Ž‘®–•Ž”œš——•’”‘‘œšƒ‹’‰Š“”’™–ƒ›•™–˜Ÿš”žˆ’‡—‘“•›Œ’Ÿ‘˜–’—¥—šŠ¡—Šˆ’„“œŒ˜š•ª”„Œ‘œ•£–š‹ž˜‘›¡™ ’•–• „މ” ¨›—”›œ‘š‹‹—š—šŒ ”Ž—¡›™™“‘•£šŽš›‡—Žš•‘Ž‘Ÿ„Œ”‹ž™Ž‚˜› ž¤››Œ”œ—”—£¡Ÿ’‘Ÿ’‡†ŽŽŠ˜—™Ÿ”›Ž™˜“˜ŽŒ…•–˜’˜ž¡ š“ Ž–‘§Ž•”‘‡—¢•’’Œ–˜ˆ‹‘š‹‹œ›–’˜” “œŒ‘•šŽ•””‰™ ‹—‘ª””Œ–Ž‘•Žš¬Œ„Ž˜“‘¡‡Ž™¡ž™ ““Сޒ‰¢¢“„——‡–•˜‘‘™‰³™™‹’š§b“–¬‰™‘“–—““™‚𕑆‡‰†˜”Š—“œ’‘“ŒŠ™”¤¡•‹Ÿ—’¡Ž™“Œ¦š•ŠŠš–Œ¢”““•„ŒŽ™‘‡”–Žœ‘–‘”—•–––’–ªœ‘Ÿ˜”Œ‰”—„”“Š˜•‘†–’ œ’–”—˜—Ž•‘š˜•™–š˜‹™”•–š——‡’™Ÿ—˜š™¢•ŽŒ“žŸ”ž¡˜œŸœ“š‘œ—–”•™‹‘”“•”›Ÿ˜——®–™š˜•’‘™ŸŸž”•˜™”‘©—Ÿ•ž Š–˜˜‘ •¢‚›‡•Ÿ“”¡•„™¡Ÿ™Ž¼‘––¥’£“¤™–˜”™Ÿ¥¢š£•––šœŸ‚”–™‘–ŽœŸŸ™›—”›‘š •–—›˜˜“Ÿ”—œ–‘–‘“ŸŽ‘˜–‰š›œž—ƒž¥’˜•¢‘‘𓡤™š‘œ‘“˜—¢…£ œ‡ŸŠ“œ”–›¤™”˜ž••’”–•𛋙£‘Ÿ˜™“‘š“•™¡—œ“§’™ž°Ž™™˜ƒ›˜™”œ˜•Ž…Ÿ›ƒšš•  ™’’˜’— ”•”’•–‘™–”Ÿ°Ÿ¢Ž«›™–—™š¡–›™”–¡™¤Ÿ‡¦ˆ’›“‘™”˜’–—¥––™’•©›—‡•’‘’¦’–‡£•¯‘”›–¡~‹œ—˜›¦”‘–›˜—ŒŒ–“•š™ ˜o˜‰”••˜‘Ÿ”•˜˜™‘•–š—™”“Œœy—‘™‹•¢œ’¢™›”˜’™™—–š— –œ¬—™Š›Ž‹š›“•Œ››”ž—›z›˜Ž“œ™—‹†—¡–›ˆŒ—ž‡Ÿ• ‰“šœ›”™Œ–ˆ ’‹˜•ž•ž‰™™yœ›™†–‘†‘™™ •—“–w—ˆŸ¦–•’ŠŸ”„‹—Œ–¡›š•’‹¢œ“™“‚–‘†™‘Œ—–”žšˆ•£ŽŠ–œ’“’‘˜™‹–žy£•Ž™ƒ”žˆ–”¤’“”»–‘’Ÿ‘Œ˜•Œ‹“”¢¢Œ‹›—‹œŒœ• • ™‘Ž˜——ŠœžŽ‘Ÿ’œ š˜›•“••œ™˜‰Ž˜’ƒŸž—“ˆ“’‹”’–‘–‹ “„ˆŒŒ’™’œ•‘—”•‹’›‘‘–š£Ÿ†˜’’”•‰’“‘œž•–‡“—•z‹ƒ–˜”‡Ÿ—œš‹˜†››”˜ž•©‹›¤Ÿˆ—”˜–ƒ™• £›©“œ’žˆŽ•“—•—•–˜„£–—¬Š”™˜™ž‡—‡œ’š‰•™š‘†—¯˜—¡„Ÿ¢”{——˜”˜Œ‘˜‘™•𠣋’’’‹“²œ“‹”˜—’™‘°›“{¨ššš–š’š”œ—–›£š›“¢¤“‘—˜ š••›• ••›¦¦ª›““”š–“•Ÿ“¢•š˜–œ“˜žš©¥˜–™š™‘Ÿ‹¡˜¤–—¥—ž™‘™—œ„¢…žŒœˆ—ž˜›˜›“©œ˜“£•‹ŠŠŸ–˜•‘Ÿ”’—£œ‹ž‹“–•‘Ÿ“”’–‘œŠ•–Ÿ—“‘Ž‹”Œ”“—•”“ž—”‘›—¤‘“”›’—Œšš™—“‹™“‹ŸŽ“‰“‘™“•“—’•˜”ˆ““›Šˆš‘ —•›‘›”’€‘ˆ–—’„Ÿ–—‘‘™”˜“˜ “Š–€–Ÿ”¯š˜Ÿ–ƒššœ‘“œ˜“•˜Ž“•–“Ÿ“‰Œœ—•Ž›’š™œ“’˜˜”šš‚™Œ™”¡‘†Œœ™•Š–‘‹š’†š”˜•™––Ž”˜ššœ“–t—¤œž¡–›‘Œ˜‘—‰Ÿ“˜–›¢”œ˜Š•”fž‡•–Ž—œ‹”‘ž“œŽˆ’š‹”’‹ŽŽj•—‰”ŒŠ©’’ŠªŽ‹±“—”Ž—•œž¨Œ•„’—‘‘š—™u—Žžy‹‘Œ–—ž’——“‘˜˜ •­~µ‘‹š•©‘’Ž’‘œˆ—•”ŽŠš•ŸŽ“—–Š’‡—ˆ‹›…Œ‰…•Ÿ•ƒ”–ŸšœŽ’‘ŽŒœ˜…‹”‹ˆ‹¡”–™™”™‹¢˜™“†Œ¡‘‹«ŒŠ—”›Š‘Œ˜Š¡’š¨š–˜˜›‘•‘Œ™Š»™‡œŽ”˜¬›˜†—‹º—›œ•šš‹Šœš–ˆ—……™•—‘z–——”—”™œœž —”œŒ™˜’–”–†‘˜”‹™—‘˜’™Œ ‰‘›’”–’Œžˆƒš”š–œŸš’Ž¡–ŒŽ‰‘Ž šŸ•”Ÿˆ˜Ÿ—“‘•–—Šˆ—•—ŒŸ˜™œ”–™ˆ’ œ–‘ŸŽž’•œ™‚Ž–Žœ‘›—œ„š‘ŒŸ• œ‰¡˜™ ’œ–š—œ†– ™—–™…”Œ‘¦œš“—‘›™“™˜š¢“‰‘–ˆž˜”•Ÿ’—œ~Œ— ™¢Œž ’™‚“šŽš—™““ŒŸŒ’–›‰—œ—šŽ˜£§Ž• œ“ˆ—™•’yŒ’Œ˜Ž›“’˜†„“Š•‰ŽŒ„Uˆ’œˆ…†’””›Ž‰Š“³‹†® ‹Ž°”’’Žš¬©’‹„‘“‰‰™žŠ—¢•š””’ƒ¢””“s“‹‰˜Ÿ’ž’¦‘~ˆš«œ›‘‰“““”z“ž‘“¯ž’˜š–‹¡¨—|‹‰ƒ‹“‡Žœ†š˜Ž‹˜˜§—Ž’©Š¦Ž»“Ž®ÝŽ€’‘•”‹Ž–’“©‰¤Ž’¢’“–•ˆ†¸˜ƒ™‡—žxŠˆ“”’Ž“’¢Ž›ª“•‘•‡–Žƒ Ž·¥‘˜’‰šržŒ—“ºœ– –£—”¥¢”Žƒ“”ž”ƒŠŒˆ •†Ÿ˜š‹“£–“’‰“•~”šŒ’“–‡—“œ‹ƒŒ–••¤Ž˜ Œ˜®‹Š‹–’Ž‘šŒ˜—“œŒ’†™–‡ˆ‘’‹‘œ“ž˜ˆ–’™‘¢‘𤓇‰‹—’’Š’œ‡­Ž“’„’™—Ž–—™Ÿ¡¤˜Š‰‡”‚žu•’|{Œ”‰ŽšŽ‡¥‘‰”“•¼œ‚š‡Š‰‘œ“Ž”Œ‘‘•“™”””œŒƒ™–•§ž‘˜Š•ƒ“ŠŽ®§˜’—™’—““¨¥„¦“–˜•“rŽ—˜£œ“°–ˆŽ™ˆ’‘“›†ž‘–œŠ šŒŠ’ŠŒ¥Š‰ƒ˜–š•¦˜Šš¸—£«˜“‘™¦–‰˜šŠ›•˜™}‘w–š§‘“’•r•™“¨Œ’’ž–‘ˆ‘‰™¡’«™žš›“”‹‘Ž—•˜~”ˆ‰–œ–•Ÿ‘ŒŸ•އ†—‘’Œ®Œ˜•’ž‘Ž’–ž•©‹£œ“—•¨Œ˜–Ž•’——w§•“‚›–š“—‘–|”ž£™‹—’—ŠŽ‰›–˜‘ˆ›s‰˜‰–›—Œ‹–‘–›Š™ž¡›“’†”‹˜ƒ‡’Ž’Ž•ŠŽ‡™›—œu•–Œ‹Ž•{–›œ‘”Ž“šŠŒ‘ƒ’‹Œ’•”𓣋{’£—‘Ÿ””›™‘˜œ¨’”Ÿ“˜™‹“’Žh‘”‹‘—““–’‘§¢˜ ¥›Ž’Ÿ’š—š”“–˜—–•”Ž¡‘˜’Ї¥”Ÿ“–™•šŽš‹–¤’’’ž†žˆš”“¦˜•‘Žœ™‘›Š–“˜•‹“’—š—°Ÿ”ž“˜‘”¥“˜œ•š’–›–Ž‘Œ•˜™’˜Š“ž—”Ž–‘”—”’•¤‘˜‹˜™’§˜•–”œ™”˜”ž–”Žœ“’Š””•ˆ› •š’“•”Œšœ›Ž­™–‘•—œ˜§˜œŠ’š“‰Š”™“–Ž’˜—š‘–š¥ž”˜•“–‘”‘˜†‘š™˜•”””“ŽŽ‘“‘“–—”‹Žœ—”•“ž‘‘œ‘Ž‹”–“™‹—’–š–¡Ÿš“•• ‹˜£”œ–‹˜–™š‘•œŸ•“›—“”—œ—”¢–•“š“—Ÿ™Ÿ””‡{›’–˜›–‚––—Š’‘˜š¡¬“Ž˜”›™”’——™‘ž“¡Œ”“›››˜”—™—•—–’”’’”š™Ÿ—š‹‘–š¡”’™Žš•˜œœŽ£Œ˜•”“•¢˜•¨‹‘›–™¡’–•š’“”•™‰š˜’™Žœ••¡™–§‘—¡š™“ –Ž ™•••›“‹ˆ†Ž’“•’––€–Š˜˜™–Œ‘– ›ž–“—¥š†š’”x†˜•Žƒ{˜—œ”“ˆœŠ–“Ž¥¤¢—“š–~’ƒ“˜™¯”—™ž‘š”–—ŽžŠ˜‘’’‰Š™Š •”——˜™–~‰™“‰Ž£˜‘†•€ˆ–ˆ”˜˜’˜“”–”™””—ŒŠ“‘™˜“–•ŒŽ“‡“•‘™›‰”•‘’“Š–¢™—™‹‘’’”•›…–žˆ“–Ž‘—–’˜“‘„“‰ƒŽ”‡‡™’–…¨”•Œ‹––•¦‹›Š•ˆŠˆŒ…–˜Ž“‡—‘Ž‹„†‹™œ–˜•›•’˜‡—Œ™™Š™—™ˆ˜•‘Œ‘—–šš•Ž”‹Ž”’•’‡Žˆ†”Ž‘”ŽŽ“¢”“ˆ——˜™••”—¦“Š”–‘‹ŠŽ”•–ŒŽ—–•“œš˜•žœ—–Œ”•“š‘„’›ˆ•‘¨™œ–†¥•‰‹’˜’¢ueš™”‘Œ“‡«“ž€ˆ‘‘Šˆ™˜••‰––—•Šˆ“ŽŒŽ‰‹Œ˜““–““™Œ‡Ž”‹š—}¡šƒ‘©‹˜™–œŽ”—‘‹  —‘‘—™’”‘š‡Œ‘›‘ž—’–˜ŒŽ‹œ’ˆ›†’Š•… ˜—’‰—‘†˜‘y‹“Š—”“‘“‚’“‰”–ŽŒ‘Ž•‰š–‘’š‘’«–“Ÿ‘“’ž‘˜–™¨—“ВДޒ‘‘˜‘”Ÿ“Œ•zœ‘’•’–~•”‹Šš’˜•‘ˆ™Œ™Ž“–•Œ’•¢•˜œ•’•““‘‹‘¦Žž˜‡•‘Ž—™š‡•Ž›•“”šŽ‘–š‹‹˜ž””’¤›Œš”•”š•œ•‘’›“œ“Ž‘•˜–™’–—™—™ŽœŸ—š’”‹™•—“””’š”–Šˆ—¢“‹–“•†“‰Œ‹¥–‘–‘”•““–’ˆŽ‹”—‡—€”“—˜•£¤‘—›¤›œŒœ–˜”˜”›™™—–›œ‹›¢›“—”˜œ™¤—Ž­”–™š¨–šœœž˜“Ÿšš•–œš–¢—“šŒ˜šŒ—™œ˜œœ›š¢£š™–š‘Š—Ÿ›’¡Ÿ –£—˜›“•œ’™•’š”¡Ÿ’š‡’˜›–š—ŸŽ•—•¡‘’™¥£‰š˜ ’‘“œœ¡ƒ›‹Žœ˜”—˜–¢‘••›–¡“§šœ˜—Šž˜—”¡–‹’ž‹˜ž•“Ÿ’˜ŠŸŠ“““– •ž™–¤œ‘–•™›¡“——™Š›—’šš« š••žŸ¢—™™“•’œ‘œŒ›Žœˆ ”†—’›¡‰‡Œƒ”Œ“’–™“š’š’¡‹‘‰œžŽ‰—¤œ£ž•™›“ˆ£’Š•›•–—’Ÿ•¨•‚™Ž•†Ž›™–‡’ž—›˜š™—•‹Œ‘†“‹†‘‘’v‘›‹Ÿ”™‘®””‘…Š”œ™˜Ÿ™•ޔޖ™‹Œ‰¨Š‘ ‘œ›Œš ’—˜ˆ››Ÿ›†˜¤–‘™†¦’’¤–—š ’¤›‘¨©¢””–””–¥™’Š’’š––‘”“‘Ž’©›œ˜œ‰™¥””¦‘¢›’”£Ÿ’—…Œ•‹–®“¤’““¨‹…’ˆŒŽ‘~•—†‹Ž’Ÿ––žŠŠ–’›ž‹”’•™˜–œ˜•™—¡‘—Œ–•–˜–˜‘Ž šŽ•“—˜Ž™–…˜—™œ“£—ˆ‘‘’“”•–™“—¬‘Ž–“¯œ‘ž–š˜” –“’™–’{‘šŒ’Šš’¡”ž—‘‡–†•šŽ’ž‹––Žk•—“’•‡—¦Žz‰ ¡“›˜¡˜š˜›Œœ‘›“™Ÿ˜“¢¢£˜š’›‘’˜•œ”“˜“Ž“›–”•–“‘‰•—œ”‹œ’Ÿ¨™‘˜—¨’˜“ž•“Ÿ—““”¥šžŒ––—ˆ‹Ÿœ¡’˜–™˜‘ž“šœ’–”——‘¡¡’ŽšŠ–›’–—›˜™šˆ”’œ’“‘‹•…Šƒ™•„¤”•˜›“¡š—¡–•Œ ‹ŽŠ¦‹ž••“•™˜–›ˆŸ™š“‹‹±’™q—‘–‹•’“’•‹›Ÿ”‰Ž•–™‹“”ŽŸœ’Ÿ’Љ¦Š™ˆ”¢‰›¤›”‘†•œ¡–‘•‡¢—€´˜“‹‘‹™‘—œ“‘’ƒ”’”žŽœŠ’’•’–“Ÿ‘œ‹“Ž—œ›”–’™Ž£‹“”ŠŸœ“Š”•”Ž’™’Œ–£•Š›˜‡’¢•‡Š–”–’–šž‡——‘ŽŽ¤œŠ™—‘Ž¡Œ”‘”—¥™”ž˜—‹’œ–—’— ‹ “˜˜——¡“‘–––›–ƒ—•–••™›žš“Ž””˜ªœŸ˜“™••¤Ž–t˜”œ˜–˜™‘œ›œš¤”ž˜”šš•›”œ˜©“›—›£“‰‘˜“›œ‰ ”•“‘–¢Ž—𗓙Ђ{•˜˜•š§–§‘š”’šœš–ž{—™š˜•ž–Žœ’”‰˜”’”–“‚ˆ’Žš›™ˆŸ“™”Ÿ˜•˜”‘œ‰•’™“›™Ÿ˜’•”Ÿ˜–Š–––—š™Ÿ•–™ž•—’“‘‘©ž˜‘‹š˜›–™›™Ÿ—ŠŽ›£‘›–˜“”v˜—’šœŸ’…™™”¨“•‘¢—”—•’‘›’“‰•–ŒŠ™‹—•›—’˜ž’™‘¥š•“˜•”˜£›‘—•ŒŽšŠŸ„‚‘•¡›—–—–šš›—‰’“›Ÿ“œ’‘˜‘–’𣑗“‰ž’œ‚ž˜’‹š‘Œ•š–’™™žŠ™šŠ–™˜ŽŽ›•޳žŽ™•¡’“˜¸——ž’“•Š™™›ž––’ˆŸ“—œ’––œ‘“Ž‘—”—™ˆ™—•‘™ˆ—‘›”œ’”’‡ŸŒ¤•¡—˜—›’š”™››Š›”›’Œ”‘ŠŽ…‘”•‘–’”ŽŒœ•’—˜ŽŽ›ŽŽ‘šš˜—•’›”œ˜•™›©›”“¡žž•šŸ—¥›“”œ’‡˜ž¡¥¤—™¢‘’“›˜’œž’•Ž… ‡š™–…§Ž–”–Žž›¨’™–Žš” •›¤“†¤™‹‹—‘“–””’•—¡’—¤ž˜ƒ—“˜”—’œ•’¡•Š}›–•œ“„•–£—¬£›š—–¡“”ž¤ž£œ‘‘‘”–›•ˆ–œ˜•–—•“›œž“–—šŸ˜›Ž˜–š““–¦›–”£Ž•“—œ¢˜œ—›”˜¤¥•–š‹œ™—¡››ŸŽ†­­›€–›š‘––ƒ¡Œ¤‘•”••—–“¡¨Žž¡’œ“žœ¡¥šš™¥–‰“Š”™•›––™™›™•™›––—›˜–‘’’Ž—•”“œœ›š”’•˜š’’™œœ“š‘–—’˜–”Žš¤”“¢— ˜‘Ÿ™››•œ³œ•˜“‘š–”””’Ÿ•›˜’ššœš—‘˜–˜£™™™ª™“‘‘”–“•“‘™—•š˜˜“•’–š›–™˜˜œ‘›’–’•’˜ŽŸ‘˜’‘—ŒŸ“’–•—””•’™——†–œ˜—”š“ž’””–ž–™•’œ—”•–—‘Ž™’•™˜Ÿ–” —š‘˜–“š›— ¡œ˜–—•“™”“†š‹˜š”Š —›“ ŒœŒ”›‘އ­‘’ŠŒ·Šœ“›¤¡¥Ÿˆš•¢–Œš–³ ©™“›¥›£Š ¡’ž˜šŠžˆœ­ž‘˜˜ŸŽ’‘™§ˆ„‹Šs”•“›‹™œ”¹–”‡†•˜ £Œ–ˆ¡ž¥–‘¢’—‹•šˆ”ª˜£§””Š ’‘¦¤•˜Ÿ•~’ –ŽŒ‹¬Ÿ‘——¾x˜˜žŸ›‰ššžžž–Œ§€›šŸœ“†‰—£™¬›¦—ˆ¤Ž”Š¡‰˜š£›ƒ—¯››ŒŒ–œƒ†ŸŽ›«œ’šœŸ‰˜Œ£“Ž‘œ’¥œ˜’˜œ’ˆ“•–™‰¬‚ž°•—šž“™Ÿ—Ž‘ŽšŸ–œ™˜‹™›–—“‘›ž‘‘˜™’’›¤›•–˜”™”Ÿž—“›™•Ÿ–––ž˜›”Ž”—™–˜—••š—ž“’”•Œ–“˜›’˜ˆš™œ•¤••Œ–›Ž”‘˜™œ™”™„˜™—ž˜–¡’ž£“—••ššˆ˜“””’’œŽ“—‘—“–˜’’•Ÿ›—‘––“’•—œ––—“œ”š’•“˜”˜•‘™”™——” ‘š˜™¡—–˜™”––—ž›¨™–“––š™”˜ž–”•–›Ž—’—”‹•›Œ–˜˜™—ž›™–Œ–—œ•””” ’‘‰Ž–™——•šœ”˜•“›•›”™’”“‡”š—”‘“”’”—‹•𑙢‘–“˜”›zŸ™”›ˆ–”˜‘–Ÿžž˜æ‹—¢£”˜œ–š“—’˜±“’•›|–‹›’‰’¡„š™˜“”’‘”“˜’––¢Ž™‰¤Ÿ’‚¡•¡œ•™Š˜¦—’˜ž–›”™ƒœ˜ƒ¡¥yš“ž–œŠ’˜‘•—ž™œžŽŒ—–“––˜œ••˜–‹‹””Œ“‰™†—¢—™ž£™–’–š”‹Ž›˜˜˜—•”œš‡—•ˆ•‹š—˜˜—«˜˜šš˜‘‘Ž––Ž’‘s…“—˜Ž–š•””–—–š}šŒ•—•š”p–Š¢”˜šŒ„– –𤛧•œ™|““¦“ƒŸƒ›šŽ”›™‘šœ“–€£‘––‘š——‘•œ”¦“˜’‘•”ˆs™‚‹“›–“—‘™”•˜—Ž–‰”¦‰¢•Ž˜˜€”£½•†š‚™¨—𢶕‰˜œ˜›¤‘”œš•“’‡–•’œˆ“‡£——’š•™–Š£›“•£““‰•–‡•’”’‘—–Ž–‘™–’˜‘Ÿ¡š{š—”…¡–’˜›•™¥––“‡”˜—­“‰‹–‘¦‰ “¥‹•§«–š”˜’—–”•¤‘’•P‹Œ‹””‰””„Ž”“‰‘”‹”•މ–‘•˜ŽŒ–•Œ‘‹•–•œŽ™’Š‘Ÿ’œŒ“‘›‹‹›‘ŠŒ˜‘–•’‘‘™…’˜™•˜–ƒ™›Ž™‘šx”𔓒­™Ž˜ˆ¡™™¡‰’‘’„އ˜ŒŠ‡ŒŒŸ’‡ž‰’‹Ž›‘Žš’•˜¥•Ž™—–¢”‘—”—’‘’™š¤’–“Š—“’›‘“‘’“–š•€v’“‡•Š•–ŽŠ”‚–‘—‘Œ•Œ‘•Œ™ˆ­•˜–•’”š——†–“••”•”—šŠ‘“Œ‘“–›“’‘™‘’»ª“˜š¦¡ ŸŸ˜””˜™–¶›—›¶ž–¥“•˜–ž–Ž ¢£œ“–“Ÿ š›”®™‘“•šŽ —œŸ”’–œ•œ“™‚´­¤—‰£’–’š™–—’­š”—•𙢩ƒ¡§£™›Ÿ£–”˜™‰•„ƒ—š•œ¬–•©•¦Ô‰oƒ–³–¬¨‘¥–lo—¶“¡¨™š«‘˜ž——˜š†…Ž—­›¢””“šš”˜‡‘•’•œ™•’™•¢‚–“­“–•Šž¡¡’˜”‡¬›”‘’¥•œ§Ž™£Ÿ£ŠŽ™›š›–’¤š ¦–™w™šŽ—¢Ž˜¢z‹š••™›“” œŸ’™š‡‘œ–œ¡‚™“–…˜”˜‡˜–¡’”™‘”“›˜ž¢ŸŒŽ£”‰™˜Œ˜ •‹–«™›’”››’ƒŽ—“˜’‹˜Œ•œ™••Œš’“ŸŽ”—‰“š“šˆ¨˜œŽ‹˜‡›‰’™•™™™Š•˜¡““›˜—–žŽ‹ž•¢¤‚“‘‹œ™œ’“‹ ˆ›šš¡‹šžŸ’–¡š˜„ž™š•••›—ššš—–›“š–Œ• ˜›šˆˆ”‘Ž¥£ –Ž‘–’—šŸ¡”›™Ž‹ˆ™§˜”™‘‹‹¤—™¦Ž•““’‘‹†Œ˜”ŒŽˆ–’““™•–˜¢—– ‰¡Œ›‹”–¢Œ™’—‘Ÿ——¡”—˜•–”’’Œ§œ”—š”•ž†—™’…Š”•‹’‘š“’˜–•’Š—‡•””•‡’–šŒ—–•ž–ŒŸ‘‘ž‘šŽŸ—•’’–‰˜“”“‰™†‘“˜—”›—”œŽ›‹ ¢‘–c’•”’Š’™„—™”’•–•¢–™–Šž“™Š’Œ‡§—‹†‹—“•—™’”Œ”’ž…˜ˆ‰•‘˜’•’˜˜ž†Š…—†…Ž‘‘–¡•£’–~š•Œ“•”“”ƒ—¡™›‰•Œ‡‘”Œ¦š“›‹‘‘¥’Ÿ€”‹žŽ‹Žš‚™Œ›–”Š—‹”‘ƒ“™”•£“‘Ÿ–“‘›“š‘ ˆ“™˜“Ÿ{–—“˜¥£Š” –𔕗…•™•›žŽ”—ž˜›˜—”™ œš“©›Ÿ…£•‚¡‘ˆœ…•˜’šŠy“¢• ‘ˆ­‡ž ““~™±¥‹˜‘’‡–“’¨£— Ž‘Ž“žž••˜“‘™‚—‡“|Œ““–•‘œŒŽ™‘Ž–¤ž—–’“”•’›—•¦“¨™Ÿ““”•™•™“˜œ¢©’´‘’Œ’”••‘—”´”•ž•••—˜–‘—‹š‘«œ™”–”Œ’§’’–ŽŸ–’‘‡¤›Œ™ƒ›¢•“•–œ’–„’•y–’Œ‘„¥†‘–¥•—Ÿ˜…œžœ˜›Ž¡—„‹Ÿ——ލ‘Š“œ”–•’‘ƒ—‘–”Š•›–œŽ‰Ž“•Ž—’𥕑—ŒŸ•ˆ”ŠŽŒ—‰“ŽtŠ“’‘’¡’“’“Ž“ˆ“€ŽŠ›Ÿ—”•ž”ˆš“’”’’Žšœ‘“šŽ¬zŠ|“’˜˜”“™œ‘Œ’¡—’–‰Š”‘•ƒ•““‹Œ°“‚‹˜”›œ•®‘›œ–Š‘”˜—›žŽ¢‚›““”–’’‘”˜£Ž—Œ‹Š™•‘“‡‘•”˜Ž‰”…Œ ”š™§–•Œ ¦’•–‘”’‹——‘Ž¡‰‚‡Ž‘”€Ÿ•—“Ÿ‰“˜•››Œ”ŒŠŒ“–œ†š–““™–œ‘“¢™›—™›œ•‹”“œ—˜—™™”Œ£• ¡Œ™‘˜• ”•Ž™“œ™›’ŸŽŽ”›Ÿ‘™¨“‹š ‰–™œ —™ˆ››”››—“—–ŸšŠ˜š ƒ–•‘›–Œ›”¡Œ”Ž›•””™‹Ÿ˜”‘•“—¡™”‰“Œ”ŽšŽ‘•—‰~‘’•—’™™’““•‹‹–Œ™š‘”¥¨£ ˜•ˆ”•–˜œ’Ž–‘“~”Ÿœž•‡Œ¦Ž–’™…¡}›”˜œ—™““‘–“’’¥Ž™’‘’ŒŽŠ‰˜‘˜˜——Ž™•Ž™’™šˆ“šœ•Ÿ™˜‘‰’‹’œŒ–†™“’Ž~œ’Ž’š™{‘‘”“’Ž“˜’¤—‹›™‰“‹˜†‘œ–‘ŽŽ’•™—‹š’—®”Ž‘’š™‘œ™ ””Œ±“””››•‹Ž’’¡“ˆ›‘ˆœ–¥˜Ÿ–’”“Œ•Œ˜£Š”¤š–Žœ‹›£”§‘”—¡Š–—™›•’‘”˜‹˜‘—Ž˜Ÿ•Œƒ‘†• ˆŒœ™Ž˜Ž•Ž˜˜† •‘˜™˜”š”œ¢’“—Œ’š”š”–—‚‘—›ˆ•’šž˜–““𗢆‘˜“œš”—±œ“• “£š™›–‘ž—›šš‡–“˜‘˜‡”“‘¢“—œ’Ž”˜—†—¨¡š“¶™Œ’—”šš–¯‰}’‡’ žš•–™•›’¤’˜˜˜›™¡’˜˜—’“ –‘’š ’‘žˆ‰“›œ“••œ‘–‰—”œŽ–šœ’‰¢“˜›Ÿ–ˆ–˜—Ž ˆ–››‡“—‡–š•Žš‚”¡Ÿ‰‡’ •–”Œ”Ž—”¢‹˜–“•‘œ‰”–”šœœž•–šœ–œš‘™ºŸ‹›”•Š”‰Ž•‘Œ‹Œ’’¡•—Ž“¤šŒ‘…ŽŠ˜“–™Š’Žˆ‘‘’—’‘—“–›”‘”ž“ŽŒ–œ •‡‚†—”‹ŒŒ‘“”œ—“–”‹•“”ŠˆŒ˜›–•˜‘‘‹”‘œ–œ˜–™•—–š•›ˆŠ…‘¦˜…™ƒ’’™‘¥’”˜Ž‚’ ””“–•‘ ’”•‘¦†Œ’”•›–•š’™‘•”š˜–’†Ž—š—’ ŽŒŠšŽ’’†™˜‹œ—„ž‘‘Ž—‘‡—’”‘–†­–žŽ‹’“œŒ”•…‚”—‰–“‹”–‘š“™š˜“—™žŽ”–¨š–“•˜vž—†„—”ƒˆš—”Ÿ›Ÿ™–˜˜Š¬†––®‹–𦔡˜˜šz“—™•£’Š—•“¬Ž™|–€™—‘–Œ›‹“’–”«Ž‹¨’Ž–“—¥‘›—•—‘—’™“‡¡ž‹‹˜––ž•Œ‰˜†™ŸŽ—’³–„–“†—§’€–™”––¢”’•£¸”„•‘—š‹•”›˜Žš£™”•’™“©•‹Ÿ–˜šŒ˜š“’‘š—›•š¢˜—‰œ’„¡“ŠŠ™£š’š˜——Â•€’Žœž‘™Ž‹Ž’—£’•™˜–˜™“‚“™•›£š“““‹‹—””•‘˜«’’“˜–‹•˜Ÿ•‘‘’—Ž”•”‹„‹’’’•–r’”•‘‘Š’Ž“”¡ž–™‘”‘‡“¡‚–“’”…™‡—†˜‘Ž–Š–‘œ†—™“™–˜“—Ž–˜–‘”›•ƒ—ž››Ž‘—‰™ ‡’¢¥‘ƒ—Ÿ”“–“Ÿ—›–…ŽšŽŸ‘™£–‹–“™˜‘•–Ž—‘Ž’›šŒ˜‹¡—‰‰’‘§”—˜”Œ‘‘’”Ž”˜—’“’•ŠŒ’‰˜™˜›–v™‰—Œƒˆ›Ž¡•¬•–‹Ž‘””“‘–¥š‘”›’–Œ–Œ›’’’¯œŽ“™–”’ž•“›–š˜”žŸ—•–™ŽŽœŒ–™ž‘––Š’˜“•‰›“™—–Œ™ “‡•“–‘•Œ•••˜–“ˆ“•™‹“¡‘Žš˜•”‰––•˜¤—Š’‘Š˜”›–{™š¡¤›“›‘””•˜•—–”’‡Ž™Œ›•‘‘–š•–‹››“‘™™—›–œ™™‹™˜¢‘š•“—‘—“”›¡’–¥’”œœ“”™–‘—£š’–››š“™ ’Œ™œ•£––’““•’•”|ŽŽ˜•Š˜’••–”–”•›™“’˜‘—’–£‘‘ŠŽ˜‘•™•Œ–”‹‘‰—˜‰”’“Ž‹…‘’„ ™”žŽ““–— ™•—ž‘”‰•””œ™œ‘—’Œ“•š—‹š‘–’ŽŽ“‚Œ—Ÿ•ޛދœ˜‘Ž•–‹–ŠŽŽ›–š‚—”—–‘Ž–‰’¦’—Ž‹‚ ’˜Ž‹—‘ˆ¨’Ž—ˆ“’—˜œ™”Ž“’–‘šŽ—‘”›š“››˜˜ˆ†š—•™–Œ‘–—Šœ–’š””Š”–”•“““”“š‡—Œ”›–’—„–’’’‘˜§Ž‘~ˆ•¡Œ–”Ž˜•—ž“”“—˜ˆ“—–Ÿš“’“•”’†”•‹jŒ”Ž–†Ÿ’Ž–˜ˆŒtŒˆ“’[“ŒuŒŠŸ”‘Ÿ–“ž–Ž’º”˜´¬š{œššŽ¯£Œ“ŽŽ™Š•”•Ÿ‹Ž­•¦†›¥Œ–™ˆŒž“’’”‘œª”~™˜˜¢‡—’Œ–Ž—š’ž™šŸˆ‹˜ŽÏ§”y—†¥•‘’¤ªŒµ‡’‰‘¢„˜›‘”Ž“‘®˜†ŽšŒ‘–‘šŽ·’ž–¨ˆ‹‰’‹Ÿ©™žŒ“‘Ž‹}—Š–•žœŠ®¤‘ˆŽ–•ž¡‘——œ•ª–”Œ—­›Ž‰¹™’‡’•˜¦¦•Ž˜ Š†‘¸Œ’¦•”š•”¡„†’ž˜‰—œ‘•¡Š™’˜¬·™‡” ™‘’—™š’”“Œ”Š’–‘œ•‰„‘Œ•‡¥•‘Œ…“ކ’¤››¨——¡ƒ”ƒŒ—Œ¡”“–œ˜‘v•¦ž£’‘‰•š–ˆ–’”ž”“–œ‹˜™œ”““‘™Œƒ—™˜—–Š˜¥™›Ÿš¤•‰”•ž”‡•“›–‘’®„—ˆ£—œ™“’˜“ˆ™‹‹”˜œ˜™‘˜Ž‘Ÿ”‘–’“•Ž~š’ —ˆž˜–Žq—–”ž‰ž°•˜„˜—•Œš—ŠŽŒuœŠ£Ž~‰’‘’Š‘‡”Œ‹¡£šŸ‰’¤˜“•Œ˜˜”’ ‹–”¡—˜•˜•”’–Ÿ‘”¨Ÿš˜š‰˜„‹™Œ“”“’’šŸœš­Ž†Ž‰•››“™‘ž Œ“‹˜Š˜•œ¦ŒŽ•š›™–£š¬“’”¦—œ‡’œ›©˜Žœª©’“™‘ ™ž”—†‰•Ÿ˜‘‘‘šš™”š‡‰ŠŸ‘«Œ‹–’’‹›“‹•™‹™’–˜Ÿ¥‘…šŒ“‡œ”‚š‘•”ŒŒœ‘“˜›šŠ–••—ŠŽš›™‰“”•˜Ÿ””‘™ž‰œŠ”ŒŽ™œ•œ¢À˜˜–“˜¢‡‹–¨{›ž—•—š|‰š’Š”“™„Ž‘˜›‹”˜˜“˜—˜œ›–˜˜–’“˜”‘—–™––š¢’ž‹Ÿ”•’‘ž‘˜›¢Œ ›’¥šš’“‘™”š”’–’ž›‡“™“˜Ž”›˜“šš’•”——•™““˜ŸŽ“žš’“š•‘Š‡¢—’™’™˜”~š–‹“‡žž•›’~›‘˜š—–”ž’˜•–Ž—š”’”…™Ž•˜™¦›˜Œ’‘š‘”’‘•Ÿ“›š—ž’—“’…‰–™¢”œš—“‹”Ÿ›—”•˜|–’’‘’œ¦•ž¡ˆ––——‘“™ŠŸŒ—“•œŽ™’–“ˆ“’™œ›Œ•””—q•“’‚• š—‰–œ–”••’‰Ž’”Ž–’‚•’——–‘’‹“–Œ•‰™–¢‘ž›š ¡‹˜…”“ž‘”–•˜–”Ž–’““˜‘Œ˜•𒔆ˆ”žŒ–‰“£”œš—“–‘Œ‘—™šŸ…—¦¥ššŽ…†›ŽŒŽ‰‘”•”y……‡”“—”š“–£’š€’Œ‰”””˜•–‘“˜””“—“œ™Š’ˆ”’›”’”‘•‘„‘’†œš›–•–’…™—‹“—““”•—¡Œ¤Œ˜ˆ“ž‹”’ŽŽ–ˆ®™”œ—„¡’™Œ˜|Ÿš˜•w‘–ŠŽ˜œ‡”ŒŠ•™ ”‘“‘’–ˆ•’“”†“‹˜¡’œ”Ž—Ÿ—›•œŒ‘™›†–ž—ª“”•Œš”•—“–š® ”“”Œ“•Ž’š’“‘‹“””Ž˜’‡’—’‘—ž‰žŸ•’šš˜œ”•’——Œ”ž•Œ—˜ŒŸŒ}–”•“Š…“–‡‘–œ’Œ‘†˜˜—“‹›œˆ–˜ž¢’˜Œ—›‘˜—‘”““˜Œ•—““œŽ––“šŽ–”œ¥ˆ •””ˆ¡’˜š™Š—‘™‘–‹’““•¨‹‘™›––™–˜”¤†‘—“““‡˜™”’‹‹•‘Œ•™˜‰‘›”Œ“ˆ‰““‡›Ž—‘Ž—”“‘™”‘’Š’Ž”Œ“ŒŒ”œ—“”•˜˜”—š’³Ž•““£Œ˜“’—’””‘ŽŽ•‘†œ’†–’˜˜Š’’‘‘©”š•‹–ˆ‘““—žš˜‹šŠˆ˜’‘ªŸŽ‰™‘•‹•’“’”’ˆ˜›¢ª”‰”–‘”’•Ž”–”˜œž“—’“”“’މ‹’˜’”Œ—‘ˆ•‰—”–’‹˜‘‹–‹”—Ÿ““–”Œ”’‹Ž‹’’”–‘“—ޕ𓖓”œ—Ž”“Œ–Ž•’“‘ŒŽ—›’””“”™”™—˜Œž“œ“”–¨™’Ž™ˆ›˜‘–›˜–•‘•‡ ›™š”™—”‘Ž”™’™“—“— •¢– ‹“‰“š–––”˜—“œ‘•ª’—Ž Ž”—˜•’‹“•£”ž–˜”•™•Œˆšœ„Ž”“˜š” ž— ”Œ‘’˜›”‘œœ‘•”Š“˜“™•’Œ—œ™–‘‘”––—›—˜‹™’œšœ˜’–”‘š“”š—‘”“•ž™—“‹–™—”•‘š’–™—˜‘–™˜‘Œ›˜Ÿ–˜–Š—–Ž™“Œ‘”™“ŠŸ˜ƒ‘𙇋Œ’š‹Œ–‘’˜•”—’’Œ“‘ƒŠ“‘‘•Ž–Ž˜’”˜“Ÿ™‘Œž””“‘‘ž–™ˆ•Ž’——‘Ž”˜š™˜Œ—‚–’Š‘ˆ”•“––‘‘”–—œ“Œ†‹†™Ž““™¡œ•˜ “š“–˜”‘ƒ‘•ŽŠ’˜•‘¬†•Ž˜’“˜š˜–‘œ•Š››˜”’Š˜š˜’‘š‘—‹“ ˜“™—”“˜‘˜”’”“”Šš•›“—–’›“Š’‘š”—–”‘œ¤•›“ž™’𔓓–‘“‘™š—›•——œŽ‘’”‘‘’Œ˜— –„˜–Œ†•–˜ˆ“– —‰˜˜”•“šŒ¨“’“–¡›––އš|y‘”•Ž‘‘™•}”‚›“’—™‹’““”•–›™Œœ˜’Žš‹ —‘Œ¡™Œ–˜Ÿ“™–¡’™—–”¢—™–—”Ÿ›”Žˆ—•¥•ŸŽŒ•ƒ¦ ”“šŸ£”ž©Œœ‡Š––—–™š…”˜––‘¥š•œ•”Ž’Ž‘”›‘–’”˜—’––—‹”‘Œ’˜––”™–“†Œ‘•¥‚–‘“Ž•–•’•—”’¤Ÿ–“—˜—‘˜‡“£•›”‘ޓЇ’–’ž‘’š““›Šš•“‘‘™Œ”’‰š“šœŽž¢˜•ŽŠ•‘•’Ž„•˜’•ž˜šœ˜–“•¡’’’“—‡¤“³žˆ““«’£Ššš–’ ˆŒ•“™’•”––›•˜—Ž“¢—ˆž–¤—–™Š“˜”—‹ ™’–’“”‘º•Ž£Žž˜‘𙑛|‰‰“™“™“•‘Œ•’ŽŽœŽ™‹’žš›’‹“’‘‘˜š™š—“—–”•‘…™™’‰’”–”‘‘’‰‡Ÿ˜Žž¥Œ•‹’“˜¦› ‘˜——Š“‹›•œ˜›”““—•›‘š”›™† •”’™—•‘‘š–Ž‘Œ–œ“‘‘•”‡–ž’“Ž”“—’’˜˜¢“–’’˜’Žˆ”’“ކŒ“Ž œ‘“’ž”ž—“ ’š—•ˆš•–“š•“ž“ž™“‘—‘Œ˜˜š”’¥•š’–”œŽ‘–‘‡˜—¢’•˜“’–ž¤Ž™˜’’“’–‘›ˆ“’˜’““”m£‘’“–™’’’‹—–˜“Œ™‹–‘’“˜ž’™™œ“”–’™“™š’”–¸‘“™–’“Ž—”œ¢‘”—‹’‘’‘ƒ•’›’–’”‡’–‘”—Ÿ–“•“–”ŽŒ•“Ž´•¤—•™Œž˜’˜™•Ÿ—‰“‘ œ˜™œ˜‘‹—™“—–›˜“›™˜’›™“˜”‹ —•™—“¡—–œ”’”›–£’™‹”™”˜ŸŽ•ŽŽœšœ˜†˜™‘ “š™šš’’’—”‹Ž‘˜•Ž˜›™‰•”˜•˜ž“‘—¬›™–¡–œŒŽ••†šœš™•‹˜’¡•”™•—™‘–™¢˜—‘—š™”–˜œ’£‘“¢“‘˜š–œš™‹“‘Ÿ–™¸——ž“—•˜w•Ž‘¡”•’œ–™‘–xŒ“Žœ¢‹šœœ›“ž”¢’›¡Ÿ’œ”˜”‘–œ–‘š —’¢–˜•——”‘š••Œš‘œ˜––—”“Ž“”–“šœ“—“š‘“›˜‘™™‘—’–•—œ—ž„”š— “—¡””œ“–™›‘” ¤”œ™Š ”ž–Œ›š•’œ˜˜ž–“˜¢–—‘’¦’µž—••Ž’–“œ’•• –’’•›”™“‰Ž—”‘’•˜™™•—‹›•›˜”—”˜Œš–›••”𔡇–Ž‹–““•Ž’•–”——”“‘œ’–—š“’–•Ž™”—”››˜šŸ•¤˜™™ ›š™›“™˜˜”™•‘Œ•™–˜’…›—““¡——“‰Œ–އ˜–”•“‰‘§«š”›’‘•–—š›“Ž˜•£‘›ƒ – ›”’’Ž’–‘–•“š£¤ƒ‘Ÿ‘¦¢————š“¥Ž”š—ˆ˜–ž““™™Œ–““’Š —Š”Œ™”˜•’‘’—˜ª‘’”–£š‘”§›“‘˜Ž’”œ‰“–š‘“’œŒŽœp•’ŒŠ—’”˜” •‘“•‘”’Œ’•”““’’•…™¦™—™—‘˜•—–•›˜œ—‘Œžˆ˜–——–—Œš’”•§•˜¡“ ¡š˜‘£’ƒz”’“’—‰‹Ž—…•“‰‘——”†’Œ‘•”’š”——–˜˜”Ž‘•’”’’‡–™–—”™•“˜‹•’ƒš”¥Œ’—”¡‹›”‰•”‘—š–›–’ —•‘•‰•–ˆ—“‘’—•Š‘šš‰–•𔓗”“”–•“ˆ“’“‘’’”‡•˜‹ƒ¦––’˜˜š——”†–•”Œ‘˜——•““—”’˜“–•–•–™”•–“”›“ޤƒŽ–Š›–˜“˜Ž‰‘“•Š”’™›•–‰”…“ˆŽ—Ž˜—˜”‘Ž——‘™•”‰’•”¢–••˜‰“‹“‘Œ‡”“’£‘—Ž’ª’Œ“–›žŒ––‹ ›”‘–¦“šª„˜‘˜’—“—˜—Œˆœ¢–Ÿ—”¦ˆ—”œˆ­Žœœ™š§œš”€“¤Ÿ’ ‰Ž¢˜Ÿ ‡–”“™‘’…—’š˜“™‘‰‘”••”œ—˜š’¶ª˜•œŠˆš ¡˜ž‘v‘Œ“§Ž•¬—˜Žš…š™”˜—§”‘¤“Ž™•™¬“‹“ŽŒœ••™› —žšžˆ˜‘¡™•—”†–ŽŽ®‘•ž—š˜Ÿ”Ž™”Ž’’šŸ§¢™Ÿ‡£•¢˜•Ÿ¥Œ‘¡“’•’™— ”ŸŽ’–™—›‘‘ž—‘™’˜‘‘”“““•““‘Йޑ‹¡’—–‘„™•“’¢–˜“’—–›••Ž”‘™“Œ–™’“‡Žš•“—š“Œ••’˜’ž”’ž”–”’‰”•‹£…›˜ž—™–“…’Š’”””¢•“•“—–™˜¦”’“’˜’‡Ÿš•𔆛“•𓔤“›Ž‘˜ˆ’†”Š£“’’‹’“„ˆ’•——’”¢˜Ž’˜™’’Š’““‹‘‹¤”’˜‹šž•“•‘–“Š˜’‹“”“•™—”–™Š’Š˜•”œ˜•–…œ‡•“ƒ¢‘—‘’Ž•˜‹œ¢Œš¤Œ—”–“‰‘•«—“¢”““›‘”—‡™ˆ˜“ •“˜’˜•”””’Š™”Œ”—™’˜”›•š—”™“™˜ˆ‹™Ž”œ—•–““—˜˜“—›š•Ÿ•“™—“’Ÿ”‰œ”™›“”™™‘˜“˜˜˜Œ—™”“–‹ž•‘––™tšš¡–˜—Œ–—”‘“Ž˜• ›˜ —”– —“””˜””¤–•‰šž™•˜‘˜•›—•——“œš——™–’–—™”¢š“˜˜“™––•š–Ÿ—”¥œ—–”•™‘œŽ—›•œ–•„š’”–šŽœ–˜””¡—œ‘–œ–“•x”’ƒ—ƒ‘–“–“˜™¥›Žž›™š‘ š‘ˆ¥“¡’ ˜“••••š”šžŽ ‘«•’‘•”‘“–Ÿ’——Ž’–”˜”œ“Œœ”’Ÿ•˜“œ‘•’œ‘––”“”– •œœ‡š“•—–‹—™–š—‘””—‰”’—•š••Žž…’–•–Ÿ’”±•œ”¡¤ˆ•¢—” £¢•”— –™–’ŒŠ–š••™š”“š’›š’“†•“•˜¡›”˜ž“”Œšš”™ž”•’•˜˜¦—‘‹”““––—“ž›•™—’œ–™–Ž•›£ š”•˜—”“–’••œ’“™˜•˜•‘™•š¥š•”‘“˜—“–—ž”’“ƒŒ“•’–‰‘—ž—•—•’™—“™š—‹–“†˜””–˜•’””˜˜–šŒŸ“šŒ•”’–’ˆŒ˜—“”œ—žŽŸŸ™“˜’”“™Ž”’—“––“•Œ“Œ—œ™–œ”¢Ž””—ž›–›Ÿ‘š™”˜“|˜›“–—’’”™‚­›•‘—’œ‘‘’’’’“…”––‘™˜™‘—––“”‘™˜œ‰Ž›”˜“”¢••‘‘˜”ŒŽ“—¤œ–ˆ– ”–”—¨‘—•””š’•”™•‘–¡•—‘–ŽŽ›˜œ”œŽ˜˜“•–”‘—”””–•—•›–“ˆŒ‹¤• ›‘Œ–’–“”•—–™lŒ–•”•†–—‰ŒŸ•§¢¨“Š •Žƒœ‘—˜ƒŽª‹’—’š‡‘ž–œœ“ƒŽž‰žx•‘¥–‹”’•‰’š‰„”‰–“ ›š•˜‘”’—”˜›Œ‹˜”£—˜•–¢£”l•–Œ“œ‹••“Ÿ–š–‘ŽŸ“”¦š¨ ž™ž–‘¤—’’|Ž“”šš—™“™”‹˜““”Ž˜•žŸš•¨” —‘¡’Ÿ”ˆŽ~™›‹š••˜¦›¢œž‘®ž¢†’‘“Ѝˆ’š––•›ªš”—“‘—š–’”——‘›’”›‘Ž˜”˜“š•šš’ˆ••’‘““•‘–›Œ‡’‘š‘“–˜—Œ•——•‘’–”’‘—‹›’˜—””Œ•“Œ”’„—’Œ†–„—Œ‘™ŠŽ”Ž“™–…’Œ–•–Ž‘ˆ“–˜“™’‘˜•”˜——˜‰˜””›–•Ž’Ž•–˜‰–’“•Ž‹œŸ‘˜–™š’’•‘‘–”™š•”“•˜š˜“Œ”•›˜›‡˜š˜””š•˜•“”””–’—šž’‹”–‰–•Œ”ˆ–“‘”‘””‘“’•Œ‘•””—’—“–Ÿ¨”“—’–Ÿ”–›Œ“‘š•Œ–––‘’’–’™šŽ–™ž‘‘Œ•’’˜—˜˜”‡Ž“•‹’š“•”–““›’œŽ—˜•‘•”–“›”Šš”މ•—•žšŠ˜•™Œ•¥™” Ž›—ª‘–•˜’“–”–˜›—‰”—“Ž‘šš’‘ŽŽ•––——–‹•˜—•˜–—’”™“Žž—˜•Œ›˜–™—›•˜Œž—›”œ—’“—’œ—Ÿ˜™‘‘˜–‘” ”‹ˆ•—˜”—•™–“•Žš––‘œ›“’~’—‘Ÿ’•”˜•“¥š•––†Ž›™’¦‘—œ——›š—”Œš‘——‘†Ž‘”›‘‘™‘‘˜‘–‘™Ž—¥Œ“•Ž‹•‘’“—’Ž‹—“‹’†—š’—™ŒŽ—•“—“•“®‘™•’ž Žš—•™Œ”“–—¥“ŒŽ’„‘Ž—Ž’’”–š›˜˜‘—“‘’•–ŠŽœ“’•‘’‘Œ˜”‘˜ŽŒ‘š’’–’‘‘–«’˜˜¦˜Š““’—‘“”œ™“Š‘’““ŽŽš˜—‘–˜œ”’‘Ž‘¡ —”†’’˜”Œš‰ ’’Ÿ˜Ž‘Š’™‘—’ œ’’—‘–”™šŽŽ˜–•–’–—›˜›’—”•“ž‰œ›“”š„”Ž‘’Š•—“‹– —¡›“™™Ž•˜’•›‘–¢™•’“›Œ’‘–’šœ—˜‰–””•—˜–’“˜Š’Š˜‘˜™šŸ•˜–•{’’Ÿ–Ž—ŽÅ–‹’Ž•„œ“¡Œ§‹”¥’‰”ž™™”ƒšœ’”Žy§¢”‘›—™‹ž•“–š™—˜—›¡œ›™’˜‘œ—Ÿ—šŸ—’“š””ž—“““œ–™˜¡––”˜”——”–™ž’”—˜˜“˜˜›“’†˜“™˜ —“˜–™…™™–—“——š—™˜”œŒ“ššš––› •‘“šž—’–›—ž‘‚ž”Ž“°—–šª’ž˜˜—Ž’•—›–“–˜–‘Ž‘Œš“’›™“š“’•›Ÿ˜š–‘˜¢–x¡™”š™–•š“™Ÿ•’››•˜œ‰š¦‘˜– ˜‘“š—’†•œ”›Ÿ‡•“™Ÿ›©‘‘–šš˜Ž›™–¤—–‘“—˜˜’š˜”œ”“—˜”–¤ˆŸ”˜–ŒŽ™ž’—§•’••’ ‘’•š™–—Ÿ œ”˜•Œ”“™–™““‰”Ÿš›—’˜›ŽŒ•—‹””˜‘”“—Ц–›Ž““–’™“•‰Žš’“£—šŒ‹•“ ¢™‘˜•¢Ÿ‹“š£Ÿœ‹›˜—‘— „ž¢—–Ÿ£š‘‰œ—œ™‘Ÿ£“¡—–œš˜“¡š’ž™›“›––ž–†’˜œ’“’—–œš›™›š—–™£–Ÿ†Ž’Ž‘œ˜˜š™‹—š¢Ž™‰Œœœˆ›•œ¤ƒ‘–™’”£’ŒŸtšœ™ŸŠ’ŠŸŸ‘•‘›—–™›– Ž™£¡—”™ššŸŸ —¡ š™›š¡¤•˜ šš˜¦žšŽ˜‹š•œžš–•“›Žšž‹”›£˜Ž•˜Ž™ žœœ{Œœ•–”›“¡“‰œ—‰œœ —Ž’™’§’Ž‹²žŽš™“œ˜’š•’’‰­‘—’¿’’ —“Œ£Šˆ—•œ——‘…Š”†ŠŠ‰—Š“ Œ–¥Ž—Œš˜”“•˜œ’• —š‘œˆ•š‘™Ž‰Ž•–˜Ž’–ª›„‡ž˜o™”‹›“”’Œ–„£—œ•±“„’¤Ž™Œ›švŽ£“’’››š’œ…£ŒŸ”…˜’›— ••–ˆˆ‰™”‰—”‘’—“˜Œ——“‘˜šž‰ŸŒ™Ÿ›§œ‹—Œ‹”ž˜”›‹}’…™†œ†‡““•Œ—«¡“Ž–”…‰‰‰Žžž‰’Ž’Œ• “—“—’ª’™•˜š¤žš›—™——’˜”••“”’’¡˜•Ž—™“’†’”“’™›•¤Ž”””š— —‹™”˜£œš“—‘žœšœ„Ž˜”£Ž™˜š“‹—ˆ•“œ’˜“œ•šœš“š¶˜˜˜’œš›™”™–””¤ˆ“’”›˜”‡Ž’‘Š”—–¡‘›•–•‡˜‘œ“Žš•—•””ž”“Œ–Ž‘—”œ™‘‘“›™–™™“œ” —™”š›š”¥‘”’‹“’–š––’—ž“™•›”’–“™‘‹•™–™–”–•‘š‘ˆ–“›™—™ž›’Š¢–•–”“–‹–Ž¡––”—™™—‘“”£š—Ž•”“•˜ŠŽ›“šš¦š‹“’“š••›–Œ™–š™’—˜Ž”œš‡¡–˜—•›••–‘˜›•••“““’—‘“”’’‘—’—“‹’žš–•™••œ”’“–—–›š•¢™•Œ‘—”œ›¡–›€•™”’š‘—‹‚‘‘Œ•—™•𔓑›‘•Œ•|”“‰›Ž—™›Ž‘Ž–™•Ž–’ŠŽ‘“™Ž˜™”••™’Š–‘˜Œœœœ’‘š““••—”š›˜—”—‘’””––ˆš“••›²˜˜“‘“š—Š––Ž™ˆ‹—™›™‘™‹šŠˆ”‹Œ’˜‡Š ’¤ŽŽ””——• ¡Šœ˜–Š‹•‘‘’‘’“„•Šœ“Ž¡‚™•–Ÿ–‘Š’ˆ’›—‘†Š‚™’œ—š”›ž‹Ž’Œ™‘“Žž“’’““‘““•ŽŒ•Œ–›ˆ‘‘ŠŠŽ”—š’Š“²”ž—••“—”އŒ˜“˜™ˆŠ‘”‰Ž¯Ž”¡‹—Š—Ž—‘‹•‡“œ’Œ˜Œ“ƒ‘’ˆšŒŽ˜‘”˜ˆ˜“ˆ‘š‹“‰‘‰™†Œ”“›’—„“Š‹–ƒ‰œŒ–•Гޖ‘‘œœ™–‹Ž——•–”–“•›—”–˜—‘”‘’Ž™“•’ ••’ޓދ“”˜“”“’‘Š“Œ”“’‘•—–˜‘›‹•–“”•––’–’‹›”™“—‰”’Ž”“•‘˜”‘”–—’–‘‘œ–“—”˜““•–”™““’•—‘˜’•šœ˜Œ”‘“œŽ•˜‘’’—Ž—˜–˜˜“‘“”’“š“–•‘™‘—–•••’—’’“”—‰›••”šŽ”’•Š’•—Žƒ–’™”•—”““•Ž’–“•’”–”˜Œˆ‹–‹•“˜•““’•”—“†——’œ”•”¡—•”‘‘†Ÿ–‘‡•“‹†ˆš“’Œ•‡ˆ•’‹•”Œ—•˜‰}’Ž‘…‘‰†—“˜—Ž˜Œ}›ž†‘š†¨‰œ‡““‘˜‹—‘ž¤—§š˜“ŽŽšŠ‰““Œ ŠŠŽ„œ‘–•}œ’™‰‰‹‘Ÿ¥“•–¤’ž–Œ”ž¢ŒŠ”’…˜‰“}‚ “…©–‘–›’’¤˜œ˜¦Ž’‘™‰‡™ŒŠ–¡£™Ž†›ŽŠžš¥•—–‹“‘‰‹›Žœ˜Œ™“‹”™Ÿ‹…§™¢”‘ˆ™‹‘š˜„˜Œ”Ž““ŒŠ‹–’—¦“–ˆŠ˜–œ•—‰”¢šŽˆŒ•“†‘˜”’˜š™–“’—‘’–œ•’•“¤’š’Ž˜“—ˆ’–˜‡’“—œ–ž›’Ž”“—•–”“¨••–––™‘Ÿ–‘‰’–˜’— “˜–—€’Œ–——Ž’—•˜—u“™’’Žž ‹š•‘’”¶˜”•š˜–Šš›’“›–œ¤–ož–’’•‘“ƒ““•Š”™–™“‘–•’”˜•–—• “‘‘˜––‰’œ””“‘”“Œ“Š—‘’‘––¡‘‹ž–™“•“˜””’’•••›™”“”–”‹™˜™Ž›–“‘–˜˜•’Ÿ“””‘“›–••”“•“”™“’–”“™•—˜•š”’”•œ—–ŸŽ“’Ž™–™–™œ–¢’œ«”Š’—˜•“–˜’Ž–Š’–’›‘–Œ›’“™’—––˜‘’•˜Ž•–˜š˜Š—‘ ”˜™š •——“’“‘’˜–†—†œ˜—šŽ•”‘”’œ‹–——ŽœŠ“Ž”’Œ˜Œ”œ‘›—Œ–›˜˜¢’™›‘‘—šš’–—Ž’—•œŠ’’•˜œ”—–š‘•œ’š•›’‘“–•˜’“˜™‰Žœ—™•’•“‘Ž•˜–šœ‘’“—””’˜•–™™›•‘ž•——‘–‘”›ž–¡†Ž•™‘”™‰‡’——•‘–™—’“‰”’˜’–”•š”–‹–––’•• ’•Ÿ”—‘ˆ”’”˜Ž–Œ˜Ÿ—˜—”›Œ‘˜ž‘œ““›“”ŽŽ’’£“—‘–”—“•“”Œ•‘‘™—•ˆŠœŽ¡š—Œ’¡‹Š•‡•–‰‡Œ™Œ‘•˜†•“’“•—‘Š‘ž—’˜•Žš‹”‘‘’¡“Œ†•‘œž””‘“”—“ŠŒ›’’Ž’˜˜•Œ‹Š’™‰”–ž˜–ž–𔑒”‘˜ ’••”‘”‹Œ‘‘˜ž’’Ž˜”’‘”“’£Ž‘•ŒŽ’‘’•”™‘”–“•œœ—Ÿ£Ž•Ž‘Ÿ–v”¡˜–˜¢‹”žšˆŸ “…•––—•‰¯¡œ“Œ˜“Š’› •‘–œ˜˜Ÿ—š’š––“”Œ™¢™Ž~•”•‘™Ž ”„ †–œ¡“‹–ª˜“—ž™¡’š–š›œš˜s²–™’‘‘””œ˜¤›—’œŽ—Œ–•«‰˜z•ˆz™’—~’sŽ™ž‘œŽ ”¢˜™Œ¡¤•’Љ–š—¢¼’”žŒ˜˜’Ž ›©šš‘Šš˜¢šŠ— Ÿ•œŠ~”‘œš ’™—žy©——“‘–•‹•ž–šš£—šˆ§™—–”›œœ››˜‚„‘—Šš• ž²˜‘˜ˆ˜’‡ ‘™“–•š™”‘›””—–”—ž˜•‘™¦‹”—¦Ÿ—•”›•˜œœ›œ˜™–š›š˜“‹“’–Ž™˜‘‘”™—œ–‰”š”—˜¤™’™˜š™“•‹”–›„•ŒŽ•…§“’Ÿ•™–“•“~“ ‡”“Œ––œ‹””‹”™•ž”¡¥“–›‡Œ”“•”¤˜Ž—Œ—™”›Ÿ™˜“Ÿš™“™¡˜Ž˜Ÿ”™“š››–”•—š˜•˜˜–š™——˜•—‘Ÿ™“–Ÿ™˜™¦›™}˜•”•œ˜™˜›’™‘—™–”™•—˜’–‰‡“’—˜”—™“–£—›“Ÿ—™›–œ™“–•”—’ˆ’•”““›–™™“‘“—–ŒŽ“™‰“•ŒŠ“˜’”‘™ŽšŠ“Ž”¢•Š‘™“ž›’‘•–‘––™“’Ž™•‘š–Œ™‘™”’’“•”‘•—’ž™Ž”›˜£Ž”‹’›–•š““—“š‰–“•‘”‘™•™‘‘’—”–—˜–š›’’”–––‰‘‘”’“Ž’“’“—“š‘“’“”‘•’“‹“—–““•–‘’•Ž•“˜”—’—‹““ŽŒ•—œ”““‘’Ž—–—””“šž‘•š˜““—‘‘™‹–Ž“”’žšŽ’”’‘š“•™™‘—¥Ž„Ÿ•“Œ‘Ž“–›“—ŽŒŒŽ‘”‰’ދޖŸ“‰˜–†„—Œ•–†‰Ž“‘ ’””“’Ž’’˜•Ž”—‹š–’””ŽŽ‹•“Ž¡’œ“‘¢ŠŸ‰›—™–ˆ•—•”Š˜”Ž˜•Œ®‘ŒŠš‘ˆŸ’‘ˆ‘•–‘£Ž––œ“›ŠŠ”’•†ŒŒœŠ„˜Œš”‘‘Ž‹““Œ–ŒŠš—•”Ž‘žŒ˜ ŽŒŠ”Š•‹–œŽž•’”Š’‘“Ž˜ƒŠ„•–Œ‘’“”šŸ‘’Š”’•”“Ž–Žšš–›”‹”“ŠŽ”—’”–”Š’’Œ‰—Œ›”Œ˜Ÿ‘™–’‰œ˜‘¥˜‘““Œ›•—‘‡—œ˜…Ž‘•—–’•Š–“ ž–Ž”™’’–•Œ’—‘Ž™’šŸ––œ—™š•”𕉔–‘‹•š’‰•š•”‹ŽŽŽ’¡™ž ˜Ž‘¢˜—–š–ŠŽ“”Šš“Š™™žš‡‰Ž•ŽŒ—‘—’’˜“Ž—£”˜‘œ‘ŸŽ“’‹—š–—”’‹—’‰‰—‘’‹˜™¢Žš“œ•˜š’˜”Ž”–’’’”•~—’—–‡—˜œ‘•“——Ž’›’˜—ŒŸœ‹’™’”‰•™Ž“““™œ•›‘’“—•”ŽŽ•˜••𔓔›’˜ŽŒŽœ—Œ•“œœ›•Œ–Ž••’®Œš•’˜”•‘‚—Š˜“Š–•˜“¤“Œ“‘—”™˜”—–‘Œ‹’”¡˜”“›“˜‘’‘’’–ž˜‘•“”’“‹•’“Ž’’’–˜’“¡–—•Ž’š“Ž•˜”’•—‘–’•Œ–’‘‘šŽ’”’–” ™šŒ“‘”••‘Ÿ‘’’‘”Œ’‰Œ•›Œ“ޔޗ›‘–‘’”™’‘™Ž“‰Ž“—”˜Ž—š’…—”‘‡’Œ‘–œ“Ÿ“’œš“Œ““—ŠŽšŒŒ•Œ•Œ•™¥’‘™£•‹’ Š¢Œ•”ª›’‰”‹‹’Œ“”–‘“”–•šŽ”’–‰‰Œ‡’‘…•’’ —¡”Š—“—˜—Œ˜‘™€‰œ¢‘‘•ŸŒ‚ “‘™”žŠ¢‘š’Š¦š”¦–“•›’š†’¦œ›š—š–‘‘•‘–‘•“‡•‰•Œ‘Œ• ¡—ŽŒ¢Ž–’ž‘™—šŠ’—•šŽŽ”œŠ—˜˜—Ž•Œ‘‘Ÿ˜ž¡’™—›“–˜¢‘›Œ’ŽžŽ˜ •˜¢›š’”‘’•’™Ž—’‡”’“‹”£“’Œ‘š˜—”’‹—˜“˜—”•’Ž”‹“‘•¢’«‘‘’–—’’‘“˜šœ˜–’’–••Š’“‘‘”“’—“œ†“—‘–—œ“’’•‘˜Š¢–›—–™–Ÿ›£•œ”–¢“Š™””›“”¡­‘Œ•“‹’šž™•™šž”“‘‡‘–’˜ ˜‘Š‘ˆ‹–“¢‹–š——ŽŒ‘“—““”“š“’Ž“›“œ‘‹“ˆ—•ª”¥‘•š–’›–”™—Ž“‘•’—£™˜Ž’šž°™“‘¢˜”˜”‘”“›•ŒŽ––Šƒ‘‘š™œž¢˜–¤’•—™–‰‘Ÿ¤€––“—••‡Ž“‰›¢›ž¡˜œž—š —‹ ‹˜Ž¨˜†™‡”ˆ•““¤Ž““—›‘‘Žœ—§‘‡ Ÿ’Ÿ™‘˜—–‘›Ä•¥Š—˜‘–Ÿžš‰£žž‘É¡˜’•– ’‘š •™ —Žœ’–Ž‘‹•‘’•”–ƒ’ŒŽš‘Œ‘‰•’ƒ‘–“—™›¢‘ ™“˜˜ Ž™šž‰–”›˜ —’•–‘“—™ “ˆ–”•“–•’”Ž§š„ŽŒŸ™–œ£…—Ÿ†ž”•™™˜’žŽ‹›’”•–“‘“‘•š•˜™–“’”Œ˜¤‘¡‘–’’‘‰’’šŽ”‘—‘ž‘’—‘˜’ŽŠ“”–’“•™‘’‘œ›’”ŽŽš‘’“’–““ƒ”Ž’–•¥¢˜‹’‘œ•›‘‘™’žœ’”ž˜•”—Ž’“–”’‘—’””•‹“—‘’‘Ž‘¤‘Œ‡™’’—›•‹‘’—‘’‘š“‘“™š—–•’’“’“’—‘–•’ˆ’‘›˜“–™“‘“š‘”›”—“–ž”•‘‘’‘’™Ž›š‘–‘’›š–’”•““™—‘”…’‘‘Š”“”’•™­““—‘‘™’““™ŒŠ’Ÿ“—‘Ž¡š‘š’ŽŽ›œ˜—”‘Š––‘ŒŸ–”ˆ–šœ¡’–”‡•Ž“¡”‘‘•Š““”“šŠ—•“Œ’‹–•”‘“š–’Œ‘‰”Ž£Ž˜’—–œ“‹—‘—†–¡“‘Ÿœ•”˜˜“—““‚–š–•‘Ž“••‹”‘œ•ŽŽ‹’‹•”‘•“’™•“‘“™Œ˜š•™’”˜•ˆŸ”‘Ž’‘”š‘”‘’—˜‹šš—±¡•ƒ™‰““’”ŽƒŽŽ‡…–˜’˜‘Ž“““•’—–•–‹Œ•—’œ“’™Ž““ž˜”‘Œ’–•‘’ŠŒ–Ž”…Œ•˜——–Š—›˜” ‹Œ‘•“¡™“š•“Š””–š±—˜™˜›‘Ž–š“–‰—•‘—–“Š–”—”–’„ž’‘‹•š•ˆ˜”™‘œ˜œ‰œ”˜––­¦•›•—•‡–‘“”›•‘š™–˜˜˜Š—’•Ž’’Œ˜—–œž‰–™Ž”™•‘Ž‘‰–Ž—–— ›–”‘Š˜“‹–˜“”˜‘ŽŽ’¢”Ž˜œ‹”•›”˜™›•”›•˜”šŒŽ‰›•‘‘“˜•– •‘‘”‘‘—•™—“™‘’“•Ž˜”˜–—‘–——–’•–˜’–œ“‘š–•”•Ž”‹ˆ••’Ÿ••›šŽŽš”Дޒ“‘‘’“–’–‹”¡—”Œ‘’—’˜‘”Ž–šª–›””’˜›˜ƒ˜—–—“šœ…••’˜–•Ÿ˜‘•¾”˜‘–ˆ‘’˜™’š‘•Œ’’“‘’Š’”——“Ž›š””˜“–Ž“”—”‡’—Š˜‘—•Œ”’”™•’™•“…Ž™œ‘’’šˆŽŽ™‘“”–Œ”—›‰“œ‘™–ƒ”Œ’”•‘‘”‘•¦™™™™”›•”“˜“œ—’—”‘–ˆš•™”—–“‘–“–˜ˆ•𖖔ޒ”‘“–—Š™–‘—›•—‘”’“™Ž›˜ž–Œ™—–‘Ÿ—–’Œ˜˜“‘Ž›˜˜“Œ”Ÿ”’Ÿ–‘••—‘”—’˜‘•˜˜zž•˜“•–“™’’‘“š‡Ž˜„›››”Œ›š“•–”’–—–”‹˜“‘©“™žŒ“œ‘¢›—’’𙑔ƒŽ‰—œ’™‘—’‘”…”Ž’“‘›š–‘‘‘š’‘‘’š˜“—Ž–˜Š•’““‘“”šœ—’——–’”—“”• —’–‘–•š“›š—“’••Ž––‹‹œ‘–”“§‘–“šŽ˜ ‘™›•’œ•“•••ž“Ÿ‘š‘••‘“–™©”—œž›––˜“Œ—‹˜¡™‘”•›šŽŽ‡—‘“Ž¥’—’™™™—ž£–”›“œ–”‘–˜˜”‰‹”’›’𥔓ޒ““|“œ’š’Ž‰Œ£–¢–—–”ˆ¨™ž›Ÿˆ•–˜z–’Ÿœžš••ª—˜‘•”Œ˜Ž’”›“•¦›™•“‹’¢•’™¥Žœ”£“‘•Ž”˜š”¤Š“€“‘””™¯”“¡’•“””“–—“•™‰‘—~˜¦’”•š–‘—…”’›Ž‰‘””“—™ŠŒ“—“–‘Ž‘›˜›Ÿ•Ž’žš”•¡›‘”˜šŒ—š’”“œ”™”Ž“”“Š—‘—••‘”Žœ˜œ‘ ”–œ–ˆ’•—œ™•’’›š›’އ›””‰Ž’“š‘’‹’„‘’•˜†š–šœœ›’“”ž‘š“—˜™—˜“¡œ—”œ—Œœ šš‘—އ•‘”™œ••™’•™˜”–•ž¡›–—”•“•–ššœ’‘’Š•ž’’¢’—“˜‘—˜Š•›““ŽŽ––––™˜Ž–‘š–Œ“¡Ž¡‘–—œ˜™–Ž— ™”¡“œ¢—›—Ž˜’¤˜Ž’˜“•Œ§š˜™–‘ŒŒ–˜””Š›’˜Œ”˜“”˜˜““’”Žš”•­™’—•‡”™œ—”“‘‹ˆ’•œ™“‰“£‘‘Ž”—’‰‹‘‘“–Œ›Ž’}—–›šˆ‘•£‰“”——’•–¡¬™‹™’š…Ž”Žš›™y”—•‘™}‘“œŒ˜”˜Ü”—ž–”—–Šˆ—šŒ• £–‘‰–“‘”•—‰{Š‘œœž¡–•›™‘›Ž}“š’€’–“šŽžˆŸ—š“•™ž—”™™—•‰—Žž‘”“˜•~†–”•—––œ˜‘—™•˜•”𑆓–•˜˜šŽŽŠ‘š’Œ•¡•Ÿœ“‘›—”‘”‘“–˜Ž‹‘šŽ“•“ “Žš‘›™¢’™“—Šœ••œž˜“••“‘›’“Ž”—“—’—’˜•†––•Œ‹›’“–””’‹Ž™œš‹‘‘Š•ƒ“–’‰”—‹‘Ž–ŒŽ‘•š“”–˜‡Ž˜Ž“Ÿ’v‘••˜”‘•’—’”š™šš”›–•™™‹“““œ‘š‘Ž•˜‘–—’Ž—•š’‘–”•–™’”‘Ž“‘’—Ž—“𢗠“œ’•”››•Ž“ –‘•””•™“‘›ž’›‘œŠžŽ™“’”‘—”‘•’š–••” ›™Š›œ§–ŽŠ‰›‹Ž™¡”—¥Šœ¦”¢ž”‘‘ˆ˜“›“ ¢Œ—…œ›•Ž—–£””•‘šŽ‡Ž•𡣑£š–’™¤—˜“™‘¯›““¦•¡’˜“™Š—‘–“‹”—𕤒•˜ŽŒŠ©•¾¤­Š¢•‘’“©‚™©’Ž‘˜Žœ˜Š‰“–““–›–†{–•—Š‚œ•§‹”Š’’“•‘“‘””‘–—•‘‘Šž•“‘‡ ‘–““Šš’Žv’¡œŠ‘–‘––“Ž®’‘‘šŽ“Ž”މœ¥–˜˜•—š›šŽ–Ž’™•’”—›–”Œ‚˜—–’’–‘ž›’¡š’œ––“’•—™š™‰žœŸ–¦‘‘˜™–•”–‹š’ˆ£‹˜“¨”ŸŸŠ–™“•–‹Š ˜™‚–˜•“†”—•–“š–Ž‹™•‘†Œ˜“ššŽ”——‰—œ™™”—Ÿ•šŒ¤‹““Š“—™¦Žš”Žƒˆš‘•˜¡—•’› ›’š–š“’’Žž–ŒžŸ”Ÿ–’—Žž––‡–”˜˜”¢Œ˜ŠŽ•–œž•––ž–‘Ž“˜–Ž–•™•›’–¡¦˜–Žœ—–“–¥£Œ’“›—ž™¢”ˆœŠ•‘’ŽŠ‰‘–‘Š™’Šˆ’“‹œ—ˆ‰”Ÿ—Š˜”““’“›—£‡”ˆ–’–‘Š“‘•Ž““•‹‰šŠš›•‘ˆ‰Œ‹’›‰„”žž’‘”‚Ž”’Ž–š‰››ž“‘ƒŒ‡™Ž—™‘–˜—Œ›Ž”‰›ž…€‰…›‘–•“‘•Œ—ޙޔ–‘’¢–‰˜•‰š†˜•š”š˜“’——’œ–—–„™Š’‘š’’™—Ž—‹•’–’Ž–Ž—‘Œ“’‘‰‹–…—œ‘–˜Œ—š›Ž˜Ž˜Ž†œ‚’“’“›Ž”˜•œœ‘€“‘•‘–•Œ–ŽŽ‘–•˜˜“”‹‘ˆŽ”””’“’‘Œ‹”™”‹š’–Ž”“އГ•’•¦–ŽŠ“‘•——™Žw•”‘™–’’—“‘‘•‹™”–‹•“˜Œ“““”Ž’•‹•’‘”Œ“Ž’œˆŽ“’“𑉢—™š—‹•—މ‘‹’™™‘’˜’‘•“›‹šŒ¥—“•š“‘•”ŽŒ’Ž›‘•‘“‘’‹’•’ŠŒ–‹“–‘¦‘Œ‘•”Ž’—œ¢‘‘”•”Ž”’‰›—•š’“Œ˜Œ”‘–œ˜ŽŒ‘“––š›’‹™‘›–©Ž¡‘’’•˜žŒ™—Ž’™Œ™›—œ•”—Ž›–•“š˜’”–”’”‘˜œ›•¥›ˆš“’“–™Žœ™˜”œ—‘˜–•“™””š–‹ šž”œŠ——˜™‘¡“—‘—Œ¨¢“ˆ“’”˜•š“’”œ–˜œŽ’˜Ÿ“›•–’Ÿ•š›”’’—Ž˜—•œ—“™˜•—˜”™™™”ž“œ‘‘“˜ˆ“•–˜—•—”’‘ “¢•”¤•š”’“˜“’§‘ž”–˜ “Ÿ——”‘•–¥ª’—–•…ž‹“‘•”—›Ž––Ž—”¨“𒔇”‘™¡“–‘”¡‘•“”’”›–‹˜Ÿ‘˜•šš˜•ŒŠ”‘™‘‘š•š˜’Œ–Œ–—˜¢“””•˜¢–˜˜—’‰™š’–““ž™¬‘’’’ŠŸ——‘Ž”™“™‘Ÿ‰Ÿ“†’›˜žŽ“‹ˆ––™—••’–©’‡“¢˜“ˆ—†•—••Ž–©•Ž•–“˜•”›’—¥——š”Š—”‘—‘’Œ›–‰—˜‘“—–‹”“‘’‘–’Ž”•‡—‘‘˜œŒ‘—™¢‰‰‘’Š•‹˜–——‘‘“Š˜Š–—–Œ‰˜“™–‘“’’—˜˜’—˜ˆ•š˜–›“”›y“¢Œ“— £‹—ŽŽŠ”‹š˜“Š•”ˆ–™ž”“’™Ž”Œ“—˜”””‘‘”‘Œ—’…ˆ–—•‘–“•‹••“——“œ–’‘œ“–›Œ’—””‘–‘’”•‰‘˜‹–“––ˆ–“Ž’š””•‹““—’–ž–Ž”œŒ–•‘•”t“‘‘“’’œ ‘”—’”˜ž™•š˜”•‡¤˜•’ž˜‹‘“– ˜Ÿ‘–Ÿ™¡™”’”–š’Ž›•“”Ÿ“š›™œ““Ž‘‘‘™–•“ž’“¡”““”ž—’Žš˜•—‘𣖒‘™’’•›™Ž•’Ž”…ˆ‘—Ž—–˜–™Ÿ–”—–’‘  ‘•›—“–Š’‹—–‘˜Š––‘Ÿ’™”“œ™›‘”––’•—‰’““‡”’”’””‘šŒ˜’“Š’“¤‡”š†’”—œ”Ž™•Ÿ˜•—’‘•”‹œ“¦Žš”“—ˆ—‘‘—˜Ž¥—š’“¡–œ‘’—–Ž—“—‹žŽ—‘”‘—…‘–•’˜šŒŽ˜•’‘™‹’˜œ—‘Ž’•“‘š’“Š—‘‘ŽŽŒ““–’•˜Œ˜˜‘’œ”™’œŽŽ“‘’”‰’Š–›‘Š‘•”¡¥™‰†˜˜“ŒŒ‰’™’Š”™““•—•ž“‘’‘’’‹––’Ž“‘–“”‹”‘–•–›”š’•š™¦•–˜“™•••”•’’™“–’“’“‘’•“Œš–——™“’–‘•‘š’–—–’›””•“‡‘˜›”••œ‘‘Ÿ–œš–’Ž”•––•˜“’š—˜“’———Ÿ—™š˜Žš—˜– “¨‘““““‘‘’”“”’˜•’‘˜“––“–Œ’‘””–Œ“’“‘•™›š“’˜›‘˜˜‘›—“˜˜——”—”š˜–Š›•™š’–’—”—€—‘—‘’‘“‰‘˜’—’”•–›—’š–“ž“’™”š˜›–•’–“š™–’˜•Ž˜¤™”–œ•™›–”“•”“‘–™•—’“š–’Ÿ““‘˜—˜”˜˜“ˆ”‰–›Œ›•›”–—“ˆŽ‡˜’š‘–˜“˜˜˜Ž•œ¡•“©š‘”œ”‘š›Ÿ””•¢‘žŽ•—œ“ŸŽ¥•Žœ›‡’ˆ›ž™“›™—”™–¥•–—ž“”™™…“”›Ÿ–›šŽ•¢Ž”—’‘—“™““•’›Ž™˜•˜——’“”“Ž“•›—•Žš–•’–—–œ˜’—‘‘“›—”Ÿ“”𓣓ž”—™––™“—›–—›œ••™”›‹––• ’š•“˜•“’—Œ–›’‰–Œ‘š–”‘”‘›‡x“”‘•–Ž’•«ˆ’’’“‡“’–’’›œ”–••“’’’—•—–•‘‘‘”Ÿ‘”’«—˜˜˜‡“”žŒ”’”š•Œ‡‘œ–ˆ™”˜’™’„˜—‘œ‰‹’|‘—Œ•“˜¢”Œ–”˜˜ˆ’“’”–’ˆ‰Ž™’—“’‘’‘—“’‘Ž’˜šœ}•𓓒ކ’Œ‘“š““œ…›‘““•‹™›‘–Œœ’–’•’ž““•“‘˜—’ŽŽ–’š“”Œ‘–šš˜–—‘””‘’„””’“‘‘›–‹—š”’š˜—–•“’Ž’’‘’š’–ŠŽ–—”™“’‘š”Ž—‘”“”•¡ˆŽœ—•’‰™–™•“••”’˜”•‘˜¢Ž˜‘’’“˜–”‘Œ–’“’š—‹¡“’Œ“”™”‘–Œ”“’’r˜™’š•‹—™”’‘“’’…˜“”‘ ”’•‹—“””Ž”’”•“˜•“’‰’™™˜˜’Ž”“Š‘“‘‘ “’“‘’“‘’•—“‘“–‹›‘Ž’“””ŽŒ“‘”’šœŒœ–žŽ—›–™‘‘•˜—“𔆖—•˜”’™Ž“Œ’“–™’–“”–•”•š›—”—–– —…—”••”š—›‹••–‘— ”™–˜–’›Ÿ—“’—™‘—š”•˜”“¡’˜‘œ”š—˜’“—•—ž£‹•Ž™—”–›•‘˜–˜˜œ—••¡˜Ž‹Ž–™••—œŽ‰‘•š™–ŠšŒŸ˜™—–™«•…š˜“›Ÿ”•Ž’—˜š›™˜˜ˆ””Ÿ“–‘™˜•„¢˜”›•š”˜›™˜”˜—•–––”›™š™ž’”‘–”‘•˜¦˜–’Ÿ˜š“——Œ•ž™•‰šœŸ¡–‘™›“š››˜—‘«˜˜—Ž–˜ž“˜Ÿšˆž”’™–—ž‘•‘’–—–ާ‘˜‘“š–ž“—•“–˜–™’Ž”™˜‘–Ž˜„—˜—““Ÿ›–—Œ™¥œ–“™–¥™œ’„‘˜’“£“¢Ÿœ‘š‹œ—™™’”™™”Ÿ‘•––’‘¡‘œ˜‘Žš’—œ•ª”Ÿšž–“†Ž™š”¢—™‘“žœ˜•ŠŠ£“’‹š—“¦”“›””–™—“™•••‘¢—’•¢‡•Ÿ•š””˜”–•˜“Ž‘–—Ÿš–™™Œ”’’—˜••™™˜˜–™“¦’ˆ—š˜“”˜ˆŽ‘œ‘‘’˜‘”Ÿ¤ŠŒ’““—’“œš˜•Œ¥—‘ž“ ¥“–ž›˜£§–Ÿ“™“›“”•””‘”“š–•™“•’•‘—” ‘“““•’—•”•–”’˜•’”“Ž–”˜–“˜”˜—•–•Ž’”––’ž’’•–ˆ””””™””—™˜““Ÿ•Œ””Š’”•”–“‘’™“šž•™•–‘”˜••–’’˜”“””••“Œ•’““•””“š–™•¢‘“””ŸŽ™•••“••Š–”’–’‘–™•“”“””‘”˜””—”›•’–—”’’’ ‘•“•“˜“–Š”–“•••’žŽ’–”““—•–•”‘œ”–”’“š’“”‘“˜Œ•–‘–“–Ž•Ž˜–“”““—”–•–˜“•–•™•–š••˜’••˜—••••––˜’”‘–’”˜˜¡•–——–˜“•–••’–”’”––“Š•“””–””—“““•˜”—˜–—˜’•”–•–•Ž”–˜–•–¡˜Œ™œ–”‘’˜™”•––”–“™–”––˜–•“š˜•”“••–“–”–Œ—“™”–’‘’ª–’“–•–˜•”•—•˜‘“’“”–““˜’”•”–˜““œšŒ––˜–•••”–Œ•Œ“–‘’–——•”™–Ÿ”–’”˜”“˜˜–”—–”””’“’š—”–¢–™–”–”•˜—””™–’˜’—™’“–˜—™Ž””›• ›–•““•””–œ’•–••”•—”•“–™–—–œ–•–•˜•”“”—˜••’“–”—–š’”“”–’•–”–’––—‘—•’–˜••š—””’–—•••–——–‘”¡——•”••——˜“–’••ž”••”—›“—˜‰”™——–•”˜••””•”–•„•˜——Š’œ””•””••–•”’’–™••“›•–•—š–•“˜”‘–”š•”™•••––•š–•“‘—”’œ•’›”•–•˜•“•˜’”‘’––˜•—Ž—“•“”•’—˜•••—’’–•––—–—“–”””œ”’—ž“’•’•”•“’”– ‘“”“”’”–˜–˜—‘™•œœ–—–”•–›”––•”–”•“Ž••–˜•’”“––•“š—”•“–”••–•“–“––’˜––•‘”—˜˜’”—”‘•‘”ŒŒ•‘––’–—“––˜˜”––– —’”––˜•••”––”–•˜—‘–›˜•—–”–“˜™•’•”—–—‘•’–•“™—’–’“•’”‘˜”””•–’˜““–’”——’“•‘”š”˜’“’”’“•”“——””œ’—”—”¨‘–ššœš™–””••”˜›–™˜”•””’”“•——–•”“”—”“–”˜•›–”’–’•••””˜˜”š–”“˜“—•“—•™–””’–””•–•˜•–•›˜–“””•”””•”–••”–––•Ÿ™ƒ•—–”–”‹”™–˜’•”•“ž“‘”–™”˜”•””–—•”•””•”•””ž‘””“˜“”•”•”—•“™š”•”š™”–—”””““”•”––“–•”™“’””••‘•š—•—””•”“”“™–‘“””‘””˜—•””“š••“•”““›•“”––˜’˜•–‘”•“𔔔𡛙•ž˜••–”˜•“‘•””–Š—•˜–•••““™’•‘•••“–”—–‘–…™˜–—”‘••”–•’’”’•–’’–’”–™’•”‘••––Œš–—š“’›••“••••”›Ž”Ž’›•™’™”¢• –”—•’—Œ‘Ž–‹‹’•”•›’‘•—“’–Œ†•••–˜–•ŽŽŽ‘”–”–—•–”˜—Š˜‘ƒ•““”‘••••Œ–’–•ŽŸ•˜–•••”‹™š˜•’‰–”Žˆ•”—””•—–“•••‘›”–”š––‘“•Ÿ’”•“”–›–“Ž–—•—•š••”——–š–••”–Š•“•Ž••”‘“ž•™”–””—–š™”—›’”“••“’–‘•‘”–•Ž’–•”——’“’™“”””š••’œ’”‘–”˜•–”••”˜†”“”””–””‘“œ–”“ˆ˜•””–”Œ™“š“–“”‘“Ž”‘–””ŽŽ”’™’““•Ÿ““œœ–’”—–•š–––——””“––””‘””‘– —™”“–—–‹¡˜••••–‘””“–•”˜’–”Ž””“•›”™”•’””Ž“•™™“—”•“”•‘”“•˜˜•–•¥””–’–“š“–š•‘’’‘“••”’š—Ÿ˜””’‘––”””’—””“•‘––’˜”˜•—•—••”“’–“•’—‘‘—ˆ“—•”–’“”••”“Œ•ŽŒ––’””’”•Ž“”–“’–’””••”Ž™‘“”–”–””•Ž•”“”“™”’”–•‘™’“•—”””˜š“”šš”Š˜—˜“––‹”•—’”‘–•”””—•””‘‹—••”””•••’”•“–“—•“‘“šŒ”’’”“”•“–”•Œ”••“––—”‘’“–”“‘–”’’–Ž”““‘••’‘›”•™’“•“•“”–—”“˜“˜•”••Š••˜—•Œ––”•”—’–”‘ŽŒŒŽœ–˜“”™•™““™””””–œ–“‘š–˜–”–“–•—ž”˜š••”‘”ž”“““”——’Ф’’••””–—“š–““ “•”•𔓔••–™““””“”“•–•’“–ž™”Š“›˜•™“““‡’”• ¡‘”›™™Ž•¡‹›’’™™”˜“•””’“”•œ•œ“’“””’•’““’–—Ž”“•”’›“””’““Ž“–’“š’“““š•‘—œ•™’’“œ““‹ ™ž–““”‘”“—‘““–”“š“—˜¢“““Ž’˜“–”w”“’’““Œž˜›•˜”‘”œ’œ’ ““…–—•“–”””–˜œ–“˜”—••“•“•‰’–˜’š–•”“’•–”––’“•””••““’•“‹–““”••”—•Ž“‰••š•£–“•”•–••‘“‘‘”“’’–‘‘‘˜—˜–“•——“”•““Ž•—•œ‰–”’‹™Ž•••›–’•“––––•––‘“”””’–––•–•”–Ž•—–’šž“˜’”••••”“”—•”œ”…““–”‘”™”’”—–”•“”’—“™–•–“”•”’‘“–—œ––’Ž”•–“–’‹“˜•‘••”–•””““’”–˜‘’–’’—‘Ž””“”žšŒ•¡¦”–””¬§””¡•—œ•Ÿ”¥–™¨•¢§“”•Ÿœ•”“•”£—•”¦”•¥§”¤›••”›œ˜””ŸŸœ–”›˜¥”‘–––””— ”˜š“Ÿ‘Ÿ”ž’©’•›”›”’•”¤¥–™“ š¢¢”ž”¢™‘›–”˜œ–§““”–””¦•”§”˜”“¢”“”“”–—”•ŸŠž””Ž’••¢•““””𕤕“›“ž””’Ž Ÿ£ž˜”“™”•𤣍—”•“—””𥣕”œ“•”Š”›¡Ÿ“””•›“¡™¦”¬””–™•’ž‘“šŽ“•›–”œ¡¥¥’••””—–š”™š”•”“š››–•š—“‘“™•“–›˜”¥—”•’–•”“”••””–—–—••˜‘”’ •™ •—”—–—”›•”•”—™˜”’––š•••‘–Ÿ˜’”“——••§–Ÿ‘–”••”™’–‘“•¢—”‘’˜š””“›–¢–”žœ“”Œ”•“–”—””˜žŒ’“•š••”””–ž”ž••‘••˜“’–“”””““‘”––”“—•ž•””––˜˜˜—•—“•—”˜›œ™–•”“—•š—”•”››”•”•“—–”—“•œ™•–”—•“š–––   ˜•” –•–—‘”„›––’•”––’•“–”–ŠŠ–šŒ“Œ••’•‘‘’Œ•Œ‘”—’–••”••—••š‘“•Žš”’“•”“”’‘‘“’“”“”””–•••”””•”•˜••““™’˜”˜“ž””‘–“”•Œ•””“’–””—’’—••”Š“•“Œ•–‘Œ–’—•”••’“˜”•—””•“••”™—‘•”‘””‘‘”“”–•š””–”””’”–”•˜”—““”•’’•‘˜”••™“—–“——•••™••”’””“–—•’–”’–’””•“—•——–—žš—–Ž••“”–“•’™™••™–““’•‹–“˜’’—”•“•‘˜”’•–Ž––•™••”•—–•“¡’‘’–”—–œ•••—“–Ž™”‘–””—““Ž–“–Œ••“••”˜’’™–š••”–ž““ˆ–‹““’“”–”””“˜š“’˜“§‘˜”’”Ž“‘‡Œ””•—–•“•˜”‘’•””’”•’–“”–‘’––•‘•’“•’‘•™–”˜”’”“–’‘”’”‘”˜˜’—”‘•”‘›•—•™••–—¥–•›’•—”“”•“š“•••—–••”••“‘““œ˜š‘••”œ”––™‘——””’š“‘‘’”’“’’˜’“›•–“’—“••’—‘–’’“•“’’‘‘’‘›““““’’’’™’—’‘“’“™’•’—“’œ’’“”’”’”“’–”‘‘—‘’˜•™”“”’“’’—’••“ž™ š’–‘”˜•“’™˜‘Œ“’““‘’’“‘“‘’’””’’’‘““ž’‘••’‹‘š›š“”’“““–“”‘’™š•“’“˜’˜”‘—’‘˜“’•––•’’’’’’“••”’œ’’–—“•’’’“‘•‘”’“‘’”š’”—”‘”™˜–•’“‘“’“’“’—›’”“•š™˜’˜–•“‘“—œ¡•˜ž——“‘›”—‘‘š”›™–•“——””““”—š“Žš“”›’™“—“™™’“—–“œ”š—““›”–’’–”’“”’’—”•‘™ž••’–”œ”œ”›’““—¢••ž——•˜—–•“Ÿ™‘“ž•’–‡•‘””—”•™“œ—““œ••“••’—“š‘˜—””••¨’“““•”‘“““”œ“”“•‘––›šž–••–’“’š•›š™‰“””““•™—‘””››•“•’”™“”–˜š”•“–”’”’’”””‘™ —Œ™••Ž•”˜›’”“•—‘•“š•””•’ž•”“¢Œ‹“”›”Ž™–Ž–œ””–Žƒ”•“–•••”Š™’•’—š•Ž”–•˜’“‘Ž•””’™’”•œ‰~“–”””•”“™“–Œ”ˆ˜Š•Œ“ €Š‘š“Ÿ”’••“—˜˜“•Ÿ’Ÿ“‘ŽŽ•–•”–™˜‘•˜–““”–••”—ŽŠ•“‘–•–—”“”•Ž–‰’•”Ž–¢œž”–•”ŒŽ”ˆ”•˜™’‘••“’”—’—Ž•‘”’•’•¢™””•””¢‘’“”™š””ŠŒ•Œ–—–“Š™‹Œ““–—•‘”””–›‘–”–—’•‡•–“–””˜”‘™••’“••”œ“•”–—™““““—“‘••’‘”“†‘”““””““••œ–“”–”•“˜•”™•”“‘––“–˜•””“›•’•”•“”“”••–“˜¡“™˜”“–”•—–•”‘‘•˜™–Ž”“˜“““™’•—’Œ––”“‘““€•–””–”“•–˜’”––“””•“•Ž”’“—”—““””“““““–‘”–•“˜’“”””””’•‘•™Ž”’’•““’˜•’‘•““““•”••Ž’“”“”’‰”““™•“’™”“’—’•‹””–”–”™”•˜–—”–œ˜”—™˜˜––”Š––š••“—•”–•—š”™›““’––•”——”™“š–—’“’–••–™”š“”–”••••“–™–Œ“˜”““—–•”˜”•—Žœ—“”“—–“”–””•—“Ÿ””“”ž”•“”’–’”‰•“”•“—“––“—•–•›–š‘’•™™’‘—“““”—”™•–‘“•“’–•–“–’™˜–”—•——›”•––™““–‘–—›“˜”—‘—”œ’•‘”’”’––“”›“––”˜“—•“’˜”–“——•–”–’–’•“’–“”•˜•—••”’’“”•–”–”–”•Ž˜””““˜’“”“”““““‘“”¡’”˜““—ž”“™““’˜’•”““”“‘””•”“𔓗”–”“’””’“’˜”“•š’“‘““““•“””™•””–––“™–š’“”””’’”’—”‘•“¦––‰“–””“””Ž’“”““““Ž““•Œ•’’’““““““•“–™‘˜”””’–‘•““”“’—””““—“•‘“”“”“™“•‘”’š“•”“Œ–•’““““““Š–—”“”““”Ž“Ÿ‘•”•—‘™”’‘”’““”“•—˜—”˜˜“‘ ““””—“––“”“—•˜’–”””—”˜”‘–’’“Ž”“”•–“”—“–˜——›“””•””™•Š—–’”Ž—“’•‘•””—•‘””’‘’•–•–œ••“•œ“”’—˜‘”’••—ˆ•–‘–’–•œ”‘‘’’•–˜”–”–”‹•–—–”’’’˜’––•——••”šœ”–™””••—–”˜•ž””–””˜–““˜Ž“”“”“”•”–“”“–‘•‘•—’––•‘••˜”˜“•—› •—Œ“””“••™“‘””–”“—–“••”“’–—‘’’–•’”–•Ž”—“™—“•–š“”•“”“••“““–Ž“Ÿ””““’”“’“—“™”›“‘“˜’“‡—””“‘¢‘““““““˜“’””’–•““–™“™““’–””“““–•”“˜”™”•““““”“›“’”“Ž””‘Ž“”›—’•“”’˜“”—“”“Š–”–’š“•š•’““”–””“”““•““”’Ÿš”’”“““”“”“““——”“–•’‚‘Ÿ““““›““”š—’”““““”‘”—–¥“’–“””’–””•š“““™’“–”““•–““”—“›˜“”“’•–•‘—”‘˜““˜“‘—“‘”“Œ’““’”“’Œ“”’–—–••› –•••œ˜›•‹š””’––•”˜–›—“‘”–—”›™–••–—˜•¢˜—•™™™•š––’›—–’—•––›™“”•”–•••–“–•–•‘œ—™Œ”––š™˜”•••—˜–™˜œ“–‰‘“—••——•Ÿ••›™”““–•–••––œ•Œ•””––•”–•’–’˜’”–Žš›’˜•••—Œ–—–•‹˜–•–—••”•••–••–“˜–”š“œ–•–˜•–——•–––••’”š—ž“•••‘˜š•–••™–•–•–—‘“›Ž–“’“–˜šž“˜š–•–“¡¤•™’••”””“”–™’Ž•“”–”™”• ’˜–•’“”””••“”””’”“‘’’•›–•˜“”–“–••Ÿ–––”–—“””Œ”“””’•”•”’”•–•‚“••™••‹“Ž•”–vš’”›—”š•“••–””˜“–”••”–•’”œ—•“–”•–•—’•‘œ”•“•——––’““•”•“…”’•”’’”•“”–’‹”“”–“•”š“”’—”’”’”••“••‘“›”•••–•”””’˜””•“™’–‘–‹••”’””‰””“—˜–”›™–’’’—”™”””—“™˜–—•–˜••——š—‘˜š”—•“˜—”•—–“—˜‹˜”–—–•’˜––•‘™”š–•š—–ž—”•™•˜—––••–––—˜ —”š––•”•‘—–š’˜•’–™†˜”•—“—˜”–•–“—ž–’•—›•œ—”™‘””—–˜˜•‘¤—”—–’––•™’”™”–—•”––—–’‘“•—–™œ™—“˜–•–˜•—•—•”˜˜–™›•”˜–“—‘•˜–——•”›••–™•–•˜š—”•™••—’—–™–—šœ‹••”‘“””••—«˜•˜ž—“•–›—˜—”™—–™—˜•˜˜œ• ”—” ••””•™•𔑒–“˜”“–™–ž”••Œ˜“–••–––—”Ÿ•”’–••¢–—•”–’”•—•”’•–—ž‰“Ž••”•””˜•˜—•“˜—“–•šš”•••—–˜•––š’—•–‹™–“•¢™•˜”–“£“™ˆ“•“––‘–•‘—¦™””’•••“•”š–Ž™–”Œ–“‘–†•––•••™–”’––——•‘•”–”“˜“™˜•’Ž”––‘“›•””••••—••˜ž”–𙕖›‡”“””•“›˜ž˜‘•’”••”“—’•œ¢˜•”Ž•’’™‘š•”•‘••š–“”•’žœ—’–—™Œ”™”’•’™•“•••›”“–••–—•š“™˜“š“™•˜–—˜ ”•“™•œ–œ“–––“ž—”•”””–•”—“œ•–”•Ž–›–‘”Ÿ–”š•“•••“•’š––““˜‘š‹‘•”–œ™““‘’–––•——–’–’•“”’••–‘–”—–˜—–•ˆ•–•‰Ÿ•›”–•–Œ–”––•™˜“—“•–’–”˜Œ—š–™““•”“””–•–•–’”•Ž–‡”––‘––™™”’”Š”–“–– ›”–ž•–”““›—––™˜–š””–”–•““““™–’••’–‘•“–Š’•’’”‘”””‘”‡‘””–”™˜–˜—‘™•“‘’•‘’––œ—‘˜”•’’’—•””—•™Ž–§–“”””˜•”“”–“”’£“’‘”•–’›”‘“•–—‘“•‘’‘—––˜’’›“‰––—‘–””“•˜—–˜”•—’”’—–—“—–”—–Ž™‘š•–˜Žž‘•šš–“•’—•‘‘’““’“’’‘‹‘‘’™•–““‘ “‘‹™•™”•”š‘Ž“•ˆ˜•އ–•“™’•”Œ“’”—”™“˜’’’“˜Œ—‘•–œ”—”‘‘Žž‘’••”y• —”””•š”›–˜˜”””•‘’–”Œ“•”•“’”•–•–•”“”Ÿ——•—––•Ÿ—•“–””‘˜”””ž—“••‘‘–”‘•”––”•œ”“™–––𔕒“„”–Ž“••£’“Ÿ‘•˜•–’™“•••™š—•”•—––•’”•“••˜••˜’Œ“•’—•”–••••š—“˜”‘•‘“›”––”’•“–”˜””•“‘““—•Ž˜–—””“˜’’“—••••–•”ž˜‘•”˜”–•’‹”“Œ”–•—“•šœ””‘’•“’”“•–›••š›˜•™š›’•˜”•ޓ𓒡™“““‘—›œ“–”–”™”˜”˜š”’™œ”“‘˜”“““““›˜•—™’”™š””—–“—•””–˜“Ÿ“˜™•““Ÿ™””—•™“—•”™—’•˜˜—“‘™Šš‘ž“™“Ž’”–™——““˜• ’’—–œ˜“šž‘••—““““Ÿ““œ• –’’—“““Ž“–š“”˜”™’“–™Ž™šœ”“““’““—““’£”–‘““‘––š•š–“••”•–‘™›™–“”“—•“”˜“”“š““š •‘—•“’–˜™›”™“—”“”˜’”—’—š–“”—“––š–™•’””•˜šš•˜‘“–“——šš”—˜–Ž›”™“••–—–”™—•”™œ™”•”••““’•™“”““•’”–••™œ•”“—””’“—œ„•”–”‹””–—”–™”—™–˜—•™™‡“’”–ž“š…•“•—•–“ˆ“–›™’”–›•’”“—–‘””••—”••˜’—”“Ÿ–•”‘“•œ“—›˜•š”’•‘’–“”•œ˜“•””¡•”“•š•“•˜šŸž”•“”–›˜™˜””•–•–‘ž}””˜–•“–˜”œ™›“•”–—œ˜š“˜‘“–›•”‘™™’• ”ˆ–••›˜™ •––’––“–”‘””””“‘–—’‘“•–•›””“”˜–ž–”Š’“—•””Ž’–“˜’–›‘˜•””“––‘“’𔓔’’”–”—˜“–¢”“”–“”–‘™‘–•‘‘–—•’—”“£—œ”‘’–˜•‹•–“–‘’—’”¡™ˆ˜•’‘”•“œ€•’–—•”˜’••”•˜–•“–““•˜•˜™–‘‘“‘‘˜“”–•”••—”–—•—”“•“’”–—”–“”“•“™“—–“–”•–Œ•”’•“•—””•‘—––‘š“’˜”“œ•••––š›—““–˜’—–’•™’‰’–™•’‘–‘’•••–””‘”•Ž“•’•“•‘”—’˜š’Ž•–”’‘•••”–’‘’‘””’›•”‘”—™–•’’–’•’“—“”Œ•ˆ’“”•””•—‘–“‘”‘•’‘“””ž˜•”“š˜”“‘š“•’–Š“’“‘š–’”•—“‘—‘””••–•’ž•”’–‘–•”“””–“Ž’’Ÿ•“‘œ¡Ž’•”•–“’•‘••’Ž—˜–‘–“’“’’’•™”—””’•‹’¡”•–’˜”‘“–Ž••–œ”’‘•–“‘˜•’’”‘–’–’˜—”˜”•”•”••‘’‘‘™š–•“”˜””•—“•”—•“’–™——–“–“——“•Ž—–””‘””“”–•’•’”“”–”“•—””—”’™”““”˜–”“›‘–”œ””“”””••“““‘¡”˜”–”‘™••• ”’“™—’‘“š“š‘™•–˜”•Œ‘—Š–—–”𔓖“–’””–”“’“““””™‘—““”“•“ˆ”—”““”™’”‘–”••”–”’”“’˜š˜™’•˜“”“’“ž—™”š“•“•––™––”“’˜•”‘‘”–›Œ”“”œ“”‘““«‘’–—””™—“——“••˜–•‘”‘𔔔𖓒‘•˜Œ•“–“˜’––”’‘••””‘’”•‹–“–•Œ—–——•Ž–•Ž”•”–””—––”–—ŒŽ•‘–—–“•–ŽŽ––”””’–•••—Ž‘•‹™‰•˜’‘”•“–•—‘ž•—”‡–•“‰•’—–’•–“Œ–‰”—••–—••™–š–••’•–•”––”ˆ‹‘‘•’‹˜Š™••”•‘‘““–•–—–“Œ•–‘‘“”“–™Š”—”’‰Ž‘“”””‘•—†•”Žˆ••Œ‰•“” ˜•—’•”‘–¡•—““”™–”–’˜–Ÿ”•˜‘’’“•“›•’Œ”–š““’‘ž“”˜‘œ“˜š•ž–””Ž—””—’–“‘š”’•–•“™™•”“”’™”“”‘”›™“–™‘•Œ”‘š’••’•˜•““™••“—”“—”•Ž˜Ž˜‡’Šœ––¢•—–”––——“ŽŽ‡‘–’“”‘’”’–––•”—’––œ”•–›¶š’•›•””’•”˜”–•—˜š”•™‘ ’Ÿ’”“’ž””–”ž••”“–“‘”•˜œ—Ÿ––Ž”“‰™›•—œ•““””•Ž›“’“Ÿ–•”€”Š›‹”•”›‘•Ÿ˜‘”’—’—””‘š˜žŒ“•–™‘–Œ™‘š™š”“—–”““”’–”•“›˜———’‘•‘’”™–”“•–”––‘—”‘––“›–’”–™­•”•“˜•’Ž‹—–™˜“˜””“—•”“’“¡–Ž…”Ž•••™’˜ –“•™¦•˜‹—••–•”œ•š—––••œ˜•–‘••–—––Œš”•”Ž–••–•“”–“““‘–’“Ÿ³–’•••’–Ž–•”ž“Ž”’•“’Ž”——›š•“‘Œ”“—’•“–’›•‡“”’•‘•––Ž˜•Ž™••‘‹’‘˜Œ”–—–•Œ“’‘˜—–œ™––Š”–‘­Œ”•“”•”‘–‹“•“’”–™‹–“”Ž’•”•“˜•œ˜“•Œ‹—•••–‘™“’™‘””˜—”˜–” ””’––•”’“”–•¦•“•”“–••“•–š—Ž˜•”””“–”˜•”‘’“™‹“–”›’”¡•“”••’‘™”–””Œ•––Ž’““–”•“–•ˆ•—•—•’”•”’˜‘”–––•‘‹•”••”Ž”“”“”‘—’”‹––•“”“˜žˆ›‘’–•—•”–”¤”••–•‰“”’‹Ÿ’–”–š‰Š“”•~––•”“•™”š””•¢’˜••™˜¢—“””‘––•–˜•“““™™–”“‘—”•–”–’œ•¤•“–•‹•”••”•”–”•’•œ›””–š”•˜—”‘•™—‘•–“•–•””“•“”œ“•••——‘›”–‘˜”’•—–”𔑗𗖑•Ž’’˜“•–™—•”’––”••—•–~‰”’”–••–“—”‹–™œ”“•”Š”ž’œ“••”—ˆ””•”””‘•“Œ–’”––™“””•——Ž™••”–•”•Ž•¨”•žŽ–•’„“Š’–•••‘”‘Ž•–”Œ”“–˜™’–——š•”›™šœ””œ“Š™”›—“””“–”’Œ—‘š’˜“”’’’“–—•”“—›Ÿ”””””“š“ ––’“““—’“––””™ž”–“œ—˜““–ž“–“”˜”•“ž–—™“‘˜—Ÿ“––ž›•™•’“”Œ•š˜”‘ž’“˜•’’–“‰ž–”“––¡¢““””—”“˜”“™””—””“”’”š“—–œ›—”šœ“ˆ’““””˜ž”›””™™•—”—””ž’––™›“‘–•”™—’’”““””™˜„“”’”“”Ÿ›”šœŽ’””—˜¡•œ˜“¢“““œ“•ž—Œˆ™™“š•“˜–––•“š”œŽ›“—œ”–’“–—˜””“˜™—”••””›’•’˜–”””˜ž”““““–‘•˜—””““˜“šš“–œ“’˜˜—˜”™š›””””—”•“—•”’›–”•’œ—™”Ÿ—¡¢’š“””’Ÿ”™””žž””™ “œ”—’”—•”–’”’”“ž““˜—‘›’‘š“””“””—“š”—š“˜•”Ÿ’”“”””š ”š“”“‘œ“˜•–𔓗•™”‘“’•“¡”˜š“”“š‘””–––”™—”“™—”––—““••›™š”Œ•”•˜””žœ•œšš”—‘”“˜““”˜›“–Œ“Ž•“›–“”“””’˜“–••’š””“’’”“—”’””•”Ÿ””““““Œ•–—”••”–”–“–”“™”•‘”•™””“‘‘“”š””—””””“Ž™”—“•••“‘––”“”™”•””••˜›“™‘‘’—–š–—“”’’•˜•“•““š““š–¢•“—“”””““•“˜‘›”™”’–”‘–”””“•š•™“”“‘“‘”˜”–—•’˜’–“”•“’š–’•‘““”—–“—˜•“‘‘““’””’›–”•–‘“•“”“’“•–”•–‹“‘”“™–””–”“•–“•œ•œ—””“““œ•’œ—‘”””“Ž””™“z›ž–”˜˜œ•–”•”””“‹—‘’—”””•”–““›‘“𔕓“”•™™••““”–““’”˜•””“š›•Š“‚”“ž–•–’”’–•–””Ž’™Œ—“‰•Ž““”’™—˜“œ–”••—”–œŒ§–”’™––•”•“œ”™š“••—–œŸŽ“•••š”’•”“š“–““”“•˜›™˜—–˜•’““”’Ÿ™˜‹•“•‘––˜Ž”“••—”š““–™“•’š’•‘’•““”“•““Œ•‘–—–ŒŽ‘–˜’“œ’”“ž“—˜Ž’—““““›‘š“’—’•–”•“’’—•’”“’”“•““““““œ“œ•’“’—š’”–“”‰“”““’““—–—”““–“—”“““’“’•”˜•–Š’•“”–Žœ’“•“›””š“˜“’“ ˜‘—–”–—–“’”šœ‘””““““—““—“–“”–“““”“”•“—”£“™ž—•’•””“—’“•““—”•””“”—Œ–”•“•›“”—’““œ“’“—”“’–‘”“—‘““’Ž“”¢“””Ž“’–—“Ž•““–“’‘‘’”’“‘™’“™›–—”™”“—•™’”Ž–••”Ž‘Œ•Ÿ“–”“•”‘’ž‹””‘”–“‘–––••—‰•–•“•””“›–”“”•“—••Ž“”—‘‹–•”•––•”“‘“”–’‘›”–“•¤Ÿ•“”’”Дޑ‘—œ•”œ‘˜•ž“š–”•”Ž•”¢”–––’—–”“•“•–••”–“–•˜‘—•”—“–˜••”—••••”Œ–‘‘–‘—•–—•—‘–”£“”“Ž’œ”‘¢••—“•”„“™”–“ž••ˆ”–—••–”—“’”“””œ”—‘•“•“‹–””ª“•–”ž–••“”—“¥”–—”“”“™”˜–š™”››•–“–”••“¥“—•“——𔓔””˜š”š’“—š”ž‘”––”“—˜”™”˜–••™™••”””Ž””“‘“™›”™“”“”•–£™”–•’•”•’—“™˜›•Ž‘¤Ÿ•—•™Œ‹”“•™™–ž–‹•–”“™””•–š••“œ”””’””—”šžœ’—”𕔥—’••“”—’”œ”“—“œ”Ÿ”’’—–’˜–˜”“”‘œœ –œ˜’“”–””™š˜”“”•”˜”—˜””’”š’•™˜–•—““–”“›’“šœ—–ŠŽ•œ–”–•™”““—‘“–•”“’’š•”–•‘‘•’–’˜’——‘z“—“’™—“”“–”––”Ž–“”••™“’•–’“’“–•“Ž”—•“•”“”š’•““—“““”“˜”’‘‹—’Ž“–•‹“‘’”•£“‘‘”’’“‹–—•’—˜š”•‘’““†¥“‘“’›•”™“’“”˜“’•–““•”™‘““Š•˜‘”¯–’““’“•Ž“”–““““”‘””‹””•˜›“–”“’‘•“˜–”’’‘““—•’“”™•‘•’—““•””“—•”’–”•u—–“““”š™›“•’›ž”“‘—“•›•“”“–›˜””’–’““”——–—••‘”•’–˜–Ÿ˜—–’••””–’—”’‘”•’”••”–“ž””’”˜–‘“”––—“–˜”””••””’’‘–‘˜˜’–‘—––•˜•‘•›–“’“”“–™–““‘•›‘‘‹š“•“ž–••Ž–•••“—–‘–›”“”‘•––——””–›•’•—˜—‹˜–“•”–’’•••–—”“‘•“’–‘•’–“”“˜˜“–”“–’––—‘••–™™––•”˜’”””š‘’•‘’–𔕓‘“‘•Ž“–””—–•’–’•‘‰”’““”“’‘”—”•””—‘”•”–š—”˜“™–’““’““‘““—”“”””•™”š’’“‘–‘“—•”š””“——“’“‘™•”“›•š””‘““”’“™–”—‘˜˜“’›žž”““˜”“œ”œ“”Ž–”Œ•—›”’‘œ™••”“–“”’“’”“š““‘Ž“”’‘“”““““”™“˜œ••‘”Ÿ–™Ž—“”•““›“ž“”‘ž–“˜”•œ•˜–‘’””—’“•–”—’š“““–’””–””—““›£’š”œ•””˜”—™”—”‘—“•—•‘ –•ž™”•‘‘”™‘—””“”“”—–”—””—˜—˜˜”‘˜–”’––•›”Š™–“–Ÿ””••”•””—™”—–š”š–’•””“’™•”˜—›”š“•”œ™—‘––•”—–•™ž”•— ”•“’•’˜˜—“”–˜•–—˜ž•—”œ–—”šŽ“–• ˜š•£“š“”””“˜œŸ——”—“•”š•”–”•–’–‹”’’‘”›“””””“–—–“”•š˜’”“•˜—””™•”™–—˜™”˜œ”‘“••“˜“˜–§˜•Ÿ˜””•‘—–”—–“–™•˜•š”Ž˜••“–•– —“”˜’—“–•˜—”›””—’š—®”‰’“–•”–’—•ž™“•“–—’–•“Ž‘•’•””“”“•””™—”‘–”š““•™•›’””“˜””“–•—•’•™—•Œ••“”“–”›”””˜–•Ž“¥“–‰“‹’–•–••’—›’•”œš•—Š•’“–“•“—•“Ž•’•’„•“–’“–”•”’“•“”–“’•™”–“–’”£š˜”“’”œŽ“””“£”•––”“™“—š‘“‘”‘•“–˜‘’—œš–’•“—’”—•Œ–“™—“”š•–Ž’–”˜“˜•””¢‘‘“–”——•–”“š““”—”–‘”•”•“•™“”—•••”‘•œ™”‘•–—““•”’š”’’ž••Ÿ–“”–“–•••–—•–˜’•“”’–””‘•–“”œ’”””••˜•” ””“’“’”””“••”‘Œ–‘—–Œ”’‰””‘—””š–‘—””’’—””‘‘”—•••–˜”•’•—‘–”–•””““’–•““”’–’”“š––””•”——™–•”“‘—™•”’’’›•˜‘•”—”•”“”––“””••–˜“•’”–”••”‘¢••‘—’—˜‘”•••“•‘•’’’•™•—•˜—•‘—–••œ”—˜‘•™”—–•“——•™–—–••“–—•’—”œ’—•••”“““”“”–•“’—––™š•’””“£—•”–•—”•’”–”™—£”’——“–•“–˜•–𣙓”• —¢™—™•”—¢—™“”™••§˜–œ•œ›”Ž™›—”˜–˜•‰—•š””‘”““–”˜–‘””“™”˜—”——–—‹”˜•–¤’•“’•”•–—“”“–•˜–••—•“›’““”’š–˜œ˜™•˜•–’””“••™”š—”˜˜””›ž”Ž“•–“”˜“•˜——“—’••””’•™–•–‘–“•–’““ˆ˜—––•”›š““–•–””’•—–“™’”––‘••–Ž‘–”–Ž‘˜”””––‘Ž”–’•“““›”˜˜–’—•”““š“•‹’–””˜’•”–• •—–‘”“••—””“™”›“±•’”•’”•Ÿ•”–“”§™—š”™•¦“Œ’”•Ž“‘™™€•”••Š–”Ž˜”“”“•”••”“•’”’•‘”“¡––•””•”—–’–”’™“—˜•”•–™”•’›”•”“–›–•‘•••–“•—–™––šš”–Ž•”œ™–“Ž•“’•©–•––—›‘‘•””‡¢“•“–”™Œ––”–’•›œ””””£œ“–‘••™”•“™“•Ÿ”œ—”“Ÿ—œ”””••˜™”‘ “”›š’”¢•••“”“ž”••𔖔ޔ˜•ƒ“””•”““••–•“œ”–Ž‘••–•”•š“’š™“”’˜”“•‡’•“““˜›‘›Š™––•• •”¡Œ“––“¢““””“•“””“”Š•‘””œ‘“”’”˜•›•””š–›•“‘š’›–—•’’””’Ÿ•˜Ž”““‘”••™‘””’‘”•–Š“‘œ™“”•“—”–’™•‘“”“•”˜˜™˜”Œ›•–Ÿ˜œ“•”›’˜š•’’‘’’“’‘”œ’–˜”’‘’’‘‘•“’•‘“’’”“’‘’“š“““‘“”•’Œž’Ÿ”‘Ž”“™’˜“’˜–š’““’•““’‘’˜‘–’–‘”’•š›™–“’‘’“Œ’˜‘’˜˜“”—˜”“•–“˜—–“”–”’’’’’“’’“‘“’““’’’’“““›’”‘™•‘“›œ˜˜’’’“””’”’”‘“𛕕“•“•‘—””’”š’’—’œ“–Ž“’“’’›”““——“’–’™Ž““’–’“™•”Ž“““’““’•š˜˜’‘’’’””—‘““•—ŽŽ–›˜”––”–‘–•ž““’—•‘–“˜Ÿ“––”‘”•˜›•••••”•–——–“••–––“™–——•—“•˜ž”—˜•˜““––˜•–•‰—”–‘•˜’˜”•”‹˜•“•‰–•”–˜’–••˜—˜—œ—“”›—–š•–——”–”–š••™›Ž’•˜”––•––––ž—‘‘”—™™‘••—•“••˜–”•— •“””’›™‘•–˜–Œ” –‘’š••–Ž—”œš‘“•—”••œž– —˜–•“˜‘“•’—˜•”””––›–—”˜ž”•š•“‘›—”™••—•™”•”•”š˜•–••‘’”•˜•——“–•‘–™–•œ”’••—”••™“—••’•“—•š’••••–”˜–š•——•–˜•”•š••—–••“”•––“’•“—•‡”•–•™••”‘–•™“•““œ‘•”–•“•˜“”—™”“š–•””•—•–—–˜–•”—––•”–””•—–––•“’“š˜›••••‘‘•–•”“˜•‘”–”’•–˜——–•’••‘›–š•˜’””–“••š–œ”•”—–””œ•”“••“–•—“–•’••“‘”•—” ”“’–›‘••“•“—•™•”˜”–“•–—›”——–‘’”“”—–‡””™”š””š•‹šž”“–˜””””””Ÿ”•›•™•”–Ž–”•“—˜—•——•™“™•’““š ••–•’”——›˜ ˜“•–’™Ÿ”™•‘’–•”–“”’”•••––“‰”•˜—˜•ž’’“—”—˜’•š“˜”•–“”‘‘”›š•”””“–’–™“¤š—Ž•˜˜“Ÿ““””–“–””••š’”™˜—•š˜”“•—“’’—˜‹”•”˜•”‘–¥–“– ”“—–•”š•””—–•—š“™‘“•••–“›••Ÿ˜““‘”“—˜“”””–Дޒ𓓓•””“‹–”“¨—”–‘•Ž‹•ž‘‹”•—š””“•••™™••†¢”–•‘”•’–‘•Œ–•’Ÿ“”””•‘••”‹”—“”‘”’Ÿ•’•¡–••“””—Ÿ•˜“’˜•›’–‹–™”Œ“”•Š“’‹ˆ••••••”‘š–”•—””””–•‘•“””‘–•¦‰••”•••—•”Œ”•“––•”“–“‡•¢’••—£‡—•••Œ••Š”•’‘••–‘”•”’”•“–Œ˜”Ž”®“””“•“–™Ÿ”•Ž‘••“˜Š–“•”™”–•–”•““š›—˜’’“•”™”‘•Ž‘ž”––’•“”“•’–––“”•’’Ÿ”–——‘œ—’‘–›•‘”’•”˜—˜”‘–“”•–”“•™”•‘”“’“‹‘‘›“—’–“—••“‘–˜›–™“–‘¡“—“šœ””“•”˜•’˜––““œ“••‘–••’˜–—•š”’’“™œ—––”—’”‘•‘—””••‘”š’”’•””––‘“’’—’Ž“•—“””‹‘•”›••“Œ––™”–‘‘”—–‘•—’•Ž’“‘•“›””•—’“•’”Ž –””””™–’””•••”•™™”–›‘—š•–”˜”•’“—’–”••”–”””””“–˜—“–“•”’‘•›’”“š–“‘”•™•””𔑕–”•“–“—””–š•’—–‘““–“’•‘’™“›–”––”’”–š—Ÿ’“••’‘––•’—”““‘”’””•”–—’˜“’”–•””——–™”–˜“‘“˜˜—¤•š•–•”•—”—““˜–“‘”“”––•š••“–”–”••–—’œ‘Ž•”–”““˜•Œ•”—–“—™“’“Ž“•“ž•–’””“”•–”–’˜˜œ—•—•“˜’••”–’™“”•—•—•—•’‘••–”šŒ—š•”˜–•“””—’™“¡‹–”—•“–••–•—”—š•”—’ –œ’—š’–•”Ž–Š•‘”’•—”—••—••”––“’”‘“—Ž•“•‡”‘”–”•—™–›’–š—“––“’‚–– ——‹”’”–•—”—–•–•••–”˜•––”•–”–•—’“••’‘šŽ”–”••”’–•“””˜”•‘”Œ–’—‘••—’š–‘•’˜•’••–•”••Œ•–˜¢•’š•—”’˜’‘“–’˜—”’”•’–™–Ž––—•”—‘™•˜˜”–”–•‘ž’—’”•––—•–™’‘Ž•’”‘˜™–•”•••—•–•—–”™—“’—–”’–•——”—““••••–•••‘–––•’–”•ޕޓ—–’™–”–”•–“–••—–’Ž“–””’£”–œ“•““˜•˜–—’–––’–•Ž—–—––”–”–˜•–Ž–—¡“”Ÿ–˜Ž—Œž”•”•–Ž“——•‘–““••—‘”“’’•”˜••“—˜”‹•–”•“•–”“••”“•–›––‘Ž’•–“˜—’’•““–•‰”—Ž‹”“””•–•”–˜˜“”— •••”ž’—‘œ”—•••”•š••˜“š——”——–‡”””””š•“–•––••ž”š˜˜’–›–––˜™–•”š•–š––•˜”š–˜š––––—™›“”‘•–—“Ž’–”—’”—”•”™”™–š–”™’–‘“’—“”•••œ›…˜–˜”––“™–“š”•˜–––••”™•”––—“‘™””“˜™”š˜••”››˜•–“‘š™šœ–”˜š™””“”–˜”—˜’‘¡˜”–”˜–›•““—§˜–š—•–”Ž•”˜”–•–•”——˜– ”•˜••›ž˜–ž˜•”“‘™•—”•‘™˜™˜•–šš˜’—‘–•“‘–‘–Œ•œ–”“——š‘‘–—™•••—”–•““”—•”Ž•“•“‘™•••“™“••‘›––’”––˜—”“•–œ•˜”—“™‘’‘’“•–•‹Œ•“’’™–“˜–—–“•‘—”š•…–•–“™’“‘“’“––••”’••• ‘œ”•’–—•’—•™•’‘•›”””–£˜——•––š™’”•›”“š”””—“–••“›”—˜‘”‘’”•—••˜•—Ž —–š—•”’š”ˆ“˜–•–’œ“––——–‘–•–“Œ—••“–’‚™”““–•‘™•‘–™›§” “”–•—–”“–”•••”“—˜’•Ž—™•––•’“–””“”ž–œ”—™”—”•–“—•–”•”–“”™“”˜œ•‘•—–••–—–’••–’š˜—¢‘–•”•–•—¯–š—“–•˜š™˜”“•˜œ•’”‘™—•––•—•“–”“¢–˜“—•”™•–˜““’˜›–•š™™•––•”””œ™––””—’–™“•˜™˜•”œ™–•œ–•›•–”˜”—”˜”––“’—“˜––““••š–•˜—ž•”¡•“Ž’”˜”˜™”™–•—‘ž–•––—•“—˜“•š•’“‘œ•““”– —•Œ›™“˜”Ž•”–“•”Š•Ÿ•–“—––•”•–š–”š––š‘“•™––––•“š‘’—•“Š’•””žž•Š“””•””Ž’ ‘–—§”•–••¢”•“•Š”’””“˜—š˜––—’•‘‘›–•”””˜œ‘˜œŽ••”’–•˜™˜’”“—–”•–•“›•–—Š•”›–œ‹”••—”–—œ”–•’–š•˜—”–•›“••š’“”–’—¤œ‘”••–‹••™˜—”–˜—••””‘š‘“•”—œœ—“•ž•“”““””ššœ‘•ŽŠ“•“’˜’œ“”•”’•’‘“••”’“”––•š•”“•–•œ•“—•”•”•—’””•””•’–”“•––—™’‘™–Ž˜”–—‘—••’š•––“˜“”•••••“”–’”””””••–›—“”““”••””–”‘•™›™Ž–“•’”••–“–’—”’•’”“‘••‘”“™‘•’”••”–•–••”Œ˜•“”‘”“˜““••“™”–‘•”’–“˜•”•”–“—–“••“˜•’–”˜•˜“–”••‘““—•—”•’—•”’—“”™––”’”“”˜••‘•–••”“–˜“‘”“Œ’”’‘™–•“•‘’—–“””–—Ž“––œ•”Ž—•“–¨Ž”––“Ž•–•••‘•‘•”’Ž””—‘•”Ÿ–“Ž•”“–•“’”—”–†–•••Ž••–‘”–’š–•“”•”’‘‘‘”“’“””œ•’•–“’—‘Š–•“•”‘•—“Ž“•—”•–—•’”–‘Ÿ––”˜‰Œ“••••“•”Ž‘–“”’––‰ŽŽ“—•“•”Ž”’‹‘–•–Œ—•Œ”“—“–”“—”˜”—”’–—‘“”””•‘•–’–”™¤“–”–””“•”’–”••–••œ’ˆ•™Žšš––”š–‘•–®“—””••”•”––—”—““›•”–•›”Ž’—š›”–•Ž•Œ•š•”•— •”•”Ž–”•“•ž”•’™“”•”‘—Ž”•–”œ•”™‰•™Ž–™‹——”•Œ—–‘“”•”•›–”šŽ“•“ž•”•“–•”•‘š—“‹•’••”–’”•”–Š•”–”›”””•–“”“œ›˜‘•”‘””ˆ™Šžš“„•”–‹••Š™•“••”–™‘”“–”•“™™’Ž’”‘—–•”’š™Ÿ•”›–•”™šž—”““–™•“œ˜”“““Ÿ•”“šœœœ“˜“–“˜š“™••”““œž””””“—•”–ž•“›•“š˜“˜”““œ›””¡›“”‘–“•£““•”””Ÿ”š”™••›‘“˜š‰“•”•”•Ž’œšš•—“‘–•˜”›”Š›•–““—“••”˜“•““ž““¢˜™”’”›“”””“”“•——’”™—”—“˜“””“›””–“”™””•”•™—˜˜Ÿ”“”“—˜–•œ™“““”ž”“”œ„”“’’”“™™“˜ –””“•”œ‘—›”š–”“œ”“”Ÿ™š’•“™™‘“›—••˜””ž“•“¦“”””““˜’Ž““˜‘¡”‘“˜”‘“‘–’”““–˜””“““•“““–”““””“““Ž–“”œŒ”Œ”‘“Ž““’š”—””¡””“”™“”‘–‘’”“Œˆ¯””Š“•”‘”—™™˜“ž’—ˆ”•›Œ’Œ””ŒŠ•˜¤{“”““’““˜š’’–’š“”””“’’““‘–”—’˜•‘“””“”—”˜“”œ‘““˜”•™•’›‘“š—“”Œ–”ª˜’“””‹”“’”“““Ž”“šš””““Ž“”‡•““‘’•—”’˜Ž“ˆ˜”““‘”““‚””‹”•‘‘“›–””““”’”•˜’›”—”’‘–”””•–’”ž“““””𙔢•Œ˜•“•””•œ“’˜—”–”œ£“•“™‘ƒ”™•“–”–“›”Ž¡”–†—”–”Š‘˜’—”›”—“’“˜– ‘”ŠŽš–”—Ž‹Š””›””””••”—“—•“•–”””“””“”˜–œ’•”“—•“𔓓”’‘”””–œ“”œ””•—“—”˜”•’›ž™“š‘““”Ÿ””›™¨“”“˜“””‹•“–‡’”“œ‘”œ‘••…•“•‘•“›’’Œ˜”™’•”š—›“”¤“”‘–™ŽŒ– ”—•–—š–™™Œœ“–––““™—’’™••™‘’”•”•” –šš–•”’–—”𔓔’˜”—•›š”•™’˜“•”–•••‘”•”—••Ž–”—|•”›—••‘—–—“™‘Œ•¯œœ“—‘“””–•ž–ž“–’•— ”–””’”•œ•••––“••’“””™•™™•’š’•””Ž“–•”–˜‘“•––’‘˜•––‘•“— ˜”“•••”–•ž•‰“•’˜–••—–—•Œ˜•™š’‘’•¢•–––•“—–›—•’˜•™™–›’ž”–””˜’œ•”“”““œš““šš”š•š“£”—ž“•œ™”’”™™”“•””Ÿ˜•“Ÿ““œœ”“’“”™•“•œ›”—”˜””¢›’–—•”‹“•”œ“›—“š”—žœ”š—™Ž•˜•¢””œ•—›œ™”“‹”œš“”“•—˜•’—“”™‚””“”–”“œŽ’™•’ž’“”““••””›‹š‹””“™¡•““”——“™””’›“–““”——šœŸ—’š–’•˜˜‰• ™”“”“š“”š–•”œœ’”šš“”“š•“•“šš–”ž•Ž“”””“”˜Ÿ™—š’“ž“˜“šž ¢“ ”•–“’‘ˆ“¡œ”“““Ÿ”—”‘•˜‰˜‘›“š“š’–› ’“—™•””’••˜‘”–—‘’˜•””•Ž““’—š•’•˜—”•”–—™“”““Š”““˜“”˜”™–™›“”•–š–’”“–””“–˜˜”“’’˜—¢•š’’Ÿ’““——” š¡”“”” •“˜“™›”“’‘••’“˜•šœž˜”–•’š—’“““—““••””“—“”•˜”žŸ’”“““–œ˜˜¡””“’—””™œš””–›’–“œ“’™˜••“Œš’š™”’”’•“”’Š–’“•“Ÿ”š™™–•˜““’–’“••’–””””’–˜˜’••”•”–’’•’’—–”‡•”•–••–˜”™–”“••“—™˜”–•˜–‘˜—–—•’”—””•–””“”™–••–—“–‹—¡”•˜–š•“–”˜•—•‘–””š“˜’•Ÿ‘Š–”•”–“—™~–”••––““š–•”•••–“—”’– ˜˜’œ•˜—•–Ž—“•••–•“–•šš““’––˜–‘•—’•“”“•“‘˜Ž–”•”–“”•™’³”–š––‘›”Œ”•”—””’‘–””–”•”•–™œœž™–”“˜–““™—“•”ˆ–”˜–—™•““”˜•š•”——˜””ž“™’–š”’š––•’—˜”•”–•š”™›’”˜˜•–‘•”Ž•““™š“•™›–”•š’“–““““•’”—“’–š˜˜˜–Œ—Ÿ””•–¢•”š’“—˜¡–””“•𕖔𗒔”™“”˜›˜–”–—“••™“”••“—•””“””••š˜‘›–––“œ¡”””“•“—–”›“•’”•“˜™˜™–’”““–Ÿ˜‘˜›Ž”“•™”–˜šˆ“”žš—••›”•–𔕕œ™˜—˜”š””““““𔑖’’–“•˜–™š˜œ”¢“““”“•›•—•––””’–—˜™••”••”—”’••˜•“•–—’”ž‘”“‘•š”–——•—”•”—•‘–“’˜”•“˜™”Ÿ•”–•”•’”˜–”˜‘’’—•Ž“¡”–•””“¡–˜““˜“–š“—’•™Œ‘“•–‘‘“—•”–•——“‘‘›•“’’““”’”•–“—–“”•“‘‘‘’””“”“œ•˜—””–”“—••–”””’’•œ—”–˜••š“’™”•”™””“”ž”–’’•–˜•Ž˜›•”“š“’”—”••™”“’“””’™•˜“”™š‘•𔕒™•”“–‹’Ž—’•“””š”“˜“—ƒš˜œ•—˜’••—“”’“˜š“–•”’“š’˜•“›˜“”–‘“™–’—•Ÿ•“›—”•‘•—™•’œ•’”˜’“ž–š™—•—”—˜œ–“‘•“–”˜•˜””•—“ˆ™Ÿ“š“£›• –—“Œ—‘•””““–—”•˜ •”’–”••’”•–”𕤖˜”¡~‰—–”“’—›–“š’‘—‘‘’‘”™”•™˜•‘“’””–œŒ“–Ž•—“›’“˜œ‘“”‘””–£••›œ”£‘š”–™”›—”š’Ÿ™”˜”™““•‘“œ•”–˜•’““•Ž¡˜”‘Š””“•Œ™—™•””•“’–œ“• —‹••”•’““”””“—”Ž’•”‘’‰”‘•”’˜“š”“˜–”—Š’”””•œ”“•’”†‘”˜™”—–‡™’—–—•œ”‘˜“–—•“›‘¢””–””““–”•”••”˜““Ž•“”––”’”•”–’•——Ÿ‚˜–”“’”˜’“‹•“˜•’““–”‘””—•“˜““–‘•‘Œ”ž““”“•––š““”–•””™’™•–“”•’–”“•—“”””Š„‡’–”‡“–‡“•”•””“–Ž•–“—””••—’‘“‘’––›”•“”•‘–•–”•”’š••—–––—Ž•˜’—•™•••—••Ÿ•—‘“•”˜‘‘”“’Ž™•‘””•—•–˜”••˜”“’’””‘‹“•–“–—••™œ‘•“œ˜”™–•”™•š•“•ˆ‘‘”™“••–‘•–—”—’˜“–˜–””””’•˜‹™™Ÿ–”–”’“”“–•”œ•–•”Œ”Ž”“•”š”–˜””•”•””––Ÿ…“’’–”–•”•–—’••”•••••Ž•”––•‘˜‘‘“—“Ž“•”“•–—“”¡–••›–™“š‘•””–“”–––•–’˜–››“—‘˜’••’–™™—’•“••’••”—•‘“‘‘‘”’‘”’œ–”¢‘”’“˜™•“•œ”•”™“”–“–””˜“•’“‘“”’‘””—–™”˜–”•”š“““š“” —™—“˜’•›“’•˜—‘”™”’••––“’•£’‘–’””•’“’–Ÿ™‘•••ˆ§Ž•—”””‘’”’–•’–›”’“’’”‘““•”’–•‘£™”“••”“˜•¡‘’‘••’“–”“•–“—“•’™“˜™’‘””–•—”™‘’š™˜›—“˜“”’‘’‘–•–’”“œ˜”—”““’”–˜œ“‘”–˜”“˜“•‘“™”™œ›”“Ÿš’””“”””Ž•Šš’”—’“™“”““›””š”—“–’“–œ—•‘”“Š””“Ž“˜””“’”–•“–Žy“”›”˜””’“Ž˜˜—“š–˜“’•“Œ››Ž”“¤“–Œ›““”•““–‘ š““›”“““’”““™•𔓓™Ÿ”“””›–“•””Ž“›“—”–—•›—”™“’“–™“’˜Ž””“‘“”“–€•”•˜“”™”“•‘•”•Ž˜•˜““‹˜“””“”ŒšŽ‘˜”£š””’—˜“œ“” ’‘š–‘š—“•˜•™“”’’™š›’“–•”‘”™”“•œ—Ÿ””“”“—•˜—–š™–’“•™’’‘›–œ’”‘“˜–‘•“Ž’˜—˜¡•—˜“™‹–“—˜—˜›”Ÿ‘Ÿ—”‘’––—•œ—–›“™”’–“—–•šˆ™’”––”—•“˜’”œ–š––—˜”““˜“˜–“žŽ”–““’š•˜™”•”–“—•—–“”–Œ™”˜™“™“”˜“˜””—™™—–›–•™”–”’”—–™””•“—••™¡œ—––™“–””•’•Š“••––Ž‹‹Ž’Ž–‘“š•–Ž’”˜—••“˜•“œ••—’—œ––”–š—‘““”“’“œ“”•–”“”–›––•–•”•”–›––™—•–œ“–••••™“”’”–““–—Ž’–•š“”“•””“–‘•”—–Ž–˜”“—“–••”’––••—“—’‘•š’’–˜“”•‘—“—”—–”‘‡••–•Ÿ••–”‹Ž––•–••””“‘–•–’“‘”“–”™‘”––•Ž’——”•‘—’—™“••˜‘‘–—“‘–••š“œ•’–“•“–•–“”•’‘”–’™–“œ¡“•”–•—˜”–”˜–”••™—••‘•Ž“•”™–—––”š•˜Ÿ£•–£“”’” •™“š˜–›•˜“‘›¢–œ–”•’Ž ””•••œ•›™’“š¢˜“˜•”™“”™š•““Ÿš—’“”‘“–•“š”””˜“•ž”¥‘”™›“›–‡’”“——”’‹”—”¢š—“ “ˆž“™•Ž¢˜—““ ›• †’“””–—”“š•—•‘ž•””“’“‘”’“˜••Œ”‘š““”•›–”ž•”‰“‘›’œ•”“œ–œ“•“¢‘‘’›¥•“šœ“““”˜”•›ž””›”’”•ƒ”œ •””—˜”—™ ”’””•””“›¡‘‘•”–”¡œž–¡”••–“––––••–”•’—–™‘—˜“”—•”•–“•˜‘’–––—•••––˜™”—”•”–•—–•˜–’•”•‘“•–––”™•••“•˜””•–•”—••••“””“–‘—•™”–•”Ž””•”™–•œ™––•••ž—“••˜˜”‘“–”––™–••”—”–•‘–••••”—–™–™–œ–•–”—•—”•••’—”‘–•”’”œ•“••”’‘’˜–––••””—–“’š–•–“••‘” •–““––•˜•••˜“•“””–™™••••”˜””“’•“‘•–“•—–‘“””—””–”‘Š “–”““”¡—˜”Ž™–™•“š“˜“‹ž“‘™•“›•“””““š’”–˜““šŸœ“˜““‘““—˜’•“œ¢’”“™Ž”“”‰”“•š”š”—”ž—”Š‹“•›”¦“—¢” ›‘“˜“”‹•‹•™–”“˜’Ÿ”“””š“”žŠŒ›•“œ”““””“““–’š’”““›–Ÿ”“““™‘“’“““œ““˜”•Ž›—›š”Ž““–Ÿ›–£“””—’”›”“™•“‘𔂙•“”“–“›˜™”©’’“’”“•”••’“”Œ‘”’ ™¢“œ“”“–“–—”‘”–••Ž–“‘“””““—“—“”–––”””•—”Œ“––’”‘“••–Œ’““”••“•“™•’—””“””””••”‘••’’‘——˜’ˆ“–”™–””Š”’—“‹”Ž•”‘”“•𔓓‹“•”ˆ—’•–—””›”““’•“•””’“•‘“”•–”•“‘‘‘‘—•’’“–•Œ›”’’˜–““˜–•Ž“šŽ’“˜‘”’’•““““•˜“‰”•“–“–’’•“™–”’”““‘••—“’”–”•šŒŒ›——ž••Ž˜”‘‹”•Œ–‘–•—•”“””•–—”™š–”—”–”•˜–š”Ž—––•—•”••–š““˜””–˜••”’–•’•˜—’“•ž’––Š••¡””–””“™•Ž™’˜’•–‘–š”Ÿ“”‹––“•”—š‘••”“‰”•”›¤••›‘‘šŒ—”–•–”˜›’’”“•••”•”–’’–—•’““—•”““•••“——”–“‘“’•–”š••’••”–“•›”†”–•“••š•—‘–Š”•—‘––••˜“••””–‘–“›–…‘””Ž’•—Ž‘‰’—˜“’–œ›”•“ž“”–’š’–’””‘‘”‘’˜’˜’‘••‘’‘“š‘–’—•”’—–—“–•‘Ž”˜‘•’‘ˆ”•šŒ’–‘”’”‘Ž¡”—‘™˜—‘””—––•‘–“”’••”’œŠ”“˜”Ž–‘”‘’”“”ˆ—Œ–““¤Ž”•––“˜–•”“”–”–‰…•’•’–––”•–™•’’”“Ÿ•œ˜ˆŒ•Ž––—••““–•—”“Ÿ‘’”’““–Ž–•‘‘‘•š’™–”–••’”‘’•‘‘••——”’’–””’——’‘•—˜”–””Ž™–”——•”§“•’’ƒ’’‘’–‘–’›•““”¢—ˆ–œ™•¢”–•˜–•™–Ž‘˜–•—›Ÿ––”–”–—”˜œ•“—¡Ž– “—’””š–„–•š§•–‹—¤˜”•“”””—“–œ˜š ™”‹—™žŒ–Ž•‘—¢•œ—šŒœ–œ”¬–¥“‘¤›“–‹”™’˜—“–˜••œ‘”—“”𔕕—•’˜•”˜•—“–œž–›‘”””””œ•œ—•™‰•¢•š•’“›‘”–’”•£”§ š‘•“”œ•–žœŽ••“––”™“Ÿ¡”“”—–”–˜––‘••””˜‘žšœ•”—Ž®–•›šŸ˜‰Š”“–“™œ‹”‡“”””““™”–”—œ“’“ޑ𑓕”“˜Œ–““•””‹”˜“—”Žœ”œ›•œ›”•”—‘”““Ž““•‹™–”“‘—“””””•“”™–”””†’¤ž’‡“””•“‹›““š˜Š”š™Ž•‘”••‘’˜“”•““ˆ”“Œ ”””Œ““”“””•”—‹›Ž’“”–”Ÿ›•“”“““”–”•“¤‹”“•“Ž’•Ž’““˜–•’‘”’¨“‘“–•“‘ŽŒ”Š’”˜Ž•¢’”’‘•”™•™’”¢‘••Ž”“¢”—˜š“˜”“˜–Œ›•“–’—–˜–”“”““’™š’•––•”’“’“”™“‘œ“”“’”””“‘‘’““™‘““”’’’‘”“—£•’“’”™“““–’“›•‘‘““‘’“”’“““”’‘›””’“–”™’—’•’”““–“”˜”“’’™•””““˜“”š˜’“•’’—’•’’”“”“–””‘“’””“•’œ‘”‘‹’—“–˜“‘““““““““‘’‘™–™”“”’–’š•““’““”‘““š•”’”““’‘”‘š”˜‘“—™’’™š“ž’““•˜’–˜‘“’’–“•–”’‘“’—š•’‘’’“““”–›““””›’š•’––”“–”𙕗•”••˜•—––—––“–•–“‘”•”•””–“““”•‘›œ•Ž’•“‘•”•–”š”™’•••˜¢•–••”””•••’—”–”–“’ •˜“”˜“›œ–”˜™“–““”›™˜œ’‹˜•”•œ›–‘¡Ÿ”—•“•••’ ”••–•–”•••••’‘Ž•“”Žš™––•–•’’•““•—”••””“—š—–––—‘–“”˜–Š––š”–——˜“‘˜’“”š˜–”“‘•—Ž”‘””‘•”•”•”””“•’””‘‘’”•ž˜–•š•’•šœ–“•––š…•—–•”•–”•””•‰–”—”›•—š••••––’–—–—••••–˜—˜”˜™”—““•”Š•–——”—•™˜•”–“›–”””••“”—–”––––—˜˜”“˜™–”—”•”™”’•–—š–Ÿ“—Ÿ“—™“•š‰•”•š“˜—•”—••–•——”˜•”•–——•”•”“– ‘•¨•—”œ‹™™”•––•—”—••›——”•”—”–”–‘–”–•–˜––‘’–•••—”˜”™–••–’•–•˜“•”“”•”‘“””•š•‘“–““–šŽ‘Š”“–’““–•––—•—””“”Ž›“’—–•”•–™˜•–™š–““˜•™“•ž—’œ•”–“š–’””˜ž˜•ž—•–“•‘–—•™”•Ÿ–•“–œ––”“•—”•’–”–””•˜––“”™˜›ž“”–†š”‘’‘’”•–™–š—š•••–›”™™•”˜™‘–”š””””™—’œ•”—–•œ•”“””••••—•ž”˜™”›“•““—œ“”˜””–”–š••–”––™•—™“˜—”–œ•œ™˜—’–•“•””˜•–•–’•›–“———“”‘˜ž”•›•ƒ•’•—“•š’••˜”˜’˜””™–™˜š—–—”“¤˜¡”––•©„’•™’‹‘’—‘•Ž“¦—Ž“–™”’“”””•Ž “šŒ•–‘Š”¦”ŸŽ–’‹”•‘”œœ¦“‘‰”šŽ–•””•–’••—•“”ŒŠ”¦œ›”˜Ž“•“”’”•™˜˜œ•ž“¸•–‘—’›’—’”–•–¨••—›¦‘•–š—”“–“—¡”‡•”‰–“”—™”““—“ˆ•Ž””–•ª”𖓉‡€‘•˜”œ—”Ž˜•œ”•”––†™“”Ž“•‘•”§›•••‘Ÿ˜““•–‘•œ•Œ•›˜‘Š•›£••”‘Šˆ‹˜”•Ž“™ž˜“”˜”“““—˜š““šš’™”–“˜˜š—“”—–”““•›”””““–’“–—’’—”“’™“›”““›š”˜“˜•™”“›š’–“““““”“•”š™“˜’•—›“›š–‹–™“˜”’—“™’—šš“Ž™š“”‘™’š“”š˜–•—”“‘“”–““š“Ž•’“—””““““˜“˜›‘•Ž“•””–œŒ”””“–š“š“”š™’™“”““›™ž•—˜”’˜“”•˜‰™œ”™“““˜”“”˜’”““™““š‹”£˜‹“”——–›š——”—•““—””“šœ—–“•”’“˜–––Ž“”•–™˜•¡•”•””˜˜ž”“”’’••”“—‘——•–—•”š’”“”“–”“𔕔•”Œ–˜•“™””––™•š—–“•“–––‘”“š“””˜•”••““˜”–›–Š””™–’–•””‘›—˜“•“”™•“‘“š˜“˜”•›¢””›—•”“––”•—›•–”“““••”–”‘”‘˜”š•’”’“˜’“““•—”‘•”’””’”•”Œ””’—›“““•“”’œ–”–‹”’“•”•œ––“”™•••ˆ”‹‘”’’š”˜›”•š–•”•”‘–™œ’“–’•‘˜—•”™””Œ•“‘”–‘“–”••–š’—–™““••—•–”•’’“š–”•’–—–”•”””“š”•š•™—“‘”‘“”•’‘”™•‘˜—–›”—–Ž“”•—””™”˜•—–“”—•–Œ’˜’– •›•–’•”œš—‘–‘“›‘•”—’›”“•–˜•’›—“–•‘•—™”•”••–—•–—““•™”“––•“’–—˜•“—•”•”–“••“›”“”’”’—–——–˜••“—–“š‘Ž•“–”•”˜”””••–˜”•™”•”–“••““‘––Ž•••”–“”š–––•›”š–‘•˜›”“”””–”“Ž–Žš“”““˜““•Ÿ™””•›”›“—•™š•”’œ“•–”—•Ž•”–•”™ ”‘š”–™“”••’‘”˜”‘•”–™˜”•”“‹–””›“Ÿ–•š–™›˜ “|’”“”—–““˜–š’’”””””’–š••–’’’‡”–”•—‘”•”‰•—““”•“””“•™”–›•›‘••’”Š••““”“œ•““˜“˜—’—’•’™™•’œ™–™““•“•†–“••”–’•—”““¡™–•‘”“˜Š”–””œ›˜“”Š•”—““”Ÿ———””“”–˜–˜š“”““˜–”›œ•“““—•““•“š•˜’˜“—’–™”–›”“–šœ•••––”“”œ—•“𙓓¡Ÿ•™“•šš”•—“𔕖•”“““‘””“™“–›”š‘•–˜”¤›”’–—”””ž’•˜š“šŸ’¦•œ”“œ•”“•‘“’šŸ™”“––™•“˜ ’™““—”“•”’“’–——š›–——’—–™“••”œŸ“œ—•“’“–”›•’–—’—•›••š““ œ—“˜˜”–“”š””Ÿ—”••””–”“žŽ”•”“—˜›™”——•’’“”œ˜˜›˜‘“”–”•š—–‘•“”˜”–Ž›•”””’–—ž•Žž”—•’•—‘•‘“™””–’“”••”••‘”•”•“‘•”•–””•œ“’–“ž—‘”—–—”””•“š”˜‘Ž••’“š˜šš”•“•˜–”›–”¢‘ ‹™Ž•–™—–“›œ”“˜—•”••””•‘“Ÿ‘”“•“”™”–™”•œŒ’””’—˜ž“–””“–”’”” “–”“•“‘Ÿ’””•–‘”–“œ“œ’›”–“’•›‘—•““¡””“•‘•”–“–•”Ž“•“”˜••–™˜”” ””‘’—••”’“•˜Š“”••”””‘’’‘•’›”–•˜”––Œ—“”—˜˜•••””——–’›”—–’“””–“––””š™”•””““‘•™•”–—š•–•–“˜”’”“˜”‘Ž‘‘–”ˆ”“”‘–‘—™—”•˜•„”‘––Š•–“Œ—‘”‘’–““““”›’‘˜“••••“““˜’“–‘“—™”••–œ˜”˜•–“•—‘””šŠ””—‘’’—˜–””—•”š••”˜—•˜”“””•˜”’™–’–”••”“”’””š––”•’‘“”–“–’•–•“Ž–˜“Ž‘“Œ™“–—˜—–—”“””™¬”–‘”••”›•“’”˜˜•˜”–•‘’”“’””ž”””•””–•›Ž•““—”•š•”••”–•“”—š•”’Ž–”“”•‰”””™•œ•—”“‘””’Žy•–’•™””••œ”—”“‘–’˜”–”“‹—”•”•Œ“•’¢””“”•””—Š›•–”““”••”””•’——’””˜“”””””’”•“”””•’•—”•’—”–—Ž””“••“š’’“—•”•”™“”•’‚””—““”“–‰•””—•Œ˜”•”¢’””••–™”Ž“’”™–•’–—•”‘–•“”“”•””–’’”––•”™”—–’”‘˜’–’——™––••–”•”““••”“—•–•—ޕޖ”•–’•—•”“•–˜—’•“•”–•––—••˜––‘•—–›––•™•—•’—˜š’•”“”“•’•‘Ž™‘•”’‘™›–’”•“–•˜”™–‘””•••’–“˜•”Ž–”ƒ”‘–Ž˜Ž••””š“”’””“”‘”˜”“–—›˜•–•–’”””˜“—–Š”––•“”›˜•–•™š—”‹–™™””–“’•—–”–”“••”••“””—“’–”Œš–”–—”™’”––—”•’“”•–—’——˜–›•Ž”—”˜•™—”’”“–•–”•’”˜‘”•–˜”——˜”–““Ÿ‘˜—™––“’˜–•™š”—”‘”’–”••˜—˜”––—•••›’š“”Š”““•–•“–™—”š˜—‘˜š•™Ž™“˜‹‘”˜••—•™““‘”“““˜–—™—–““˜•–—–•š—‘•——™“‹’”‘˜“’’“••••–˜‘‘”—™—“˜—––“•“—“’”“’–—“–Ÿ–––‘“–˜“”’˜””•–““•“’––”–”˜–•–“–’”••••––”–“—˜—”›–™Ž–•”™“˜’•˜–‘“–“–•š•“•”–˜‘“–œ”‘¡•–“’’›•“ª•ž”“‘Ÿž““”““–Œ”™”••ž•”–“’•“•”’‹“˜˜”“’œ”””‘“”•˜–›“—›•˜Ž“„¢—••”•“˜}“ŸŸ”•“’—’˜™“—“œ•“’“𛓕““•““¢¡•‘–•œ“““’““˜“””•“˜”—’”“”“˜˜–•““‘‘––“Ÿ“’•— “—“Ž••“‹ Œœ“““˜•“‰›”“•–““‘“•–œ›““•“‘™’”“•““–••””“Œ–Š“•š“•™˜˜—““•”˜—©•’”““”’””š‘‘”‘””•‘˜Œ“š“™”•„Žˆ–••••“’“ˆ’’’”–•‘§““‰”“™•“•••¡•••““’•““”˜•”ž—Ž”•”“‘Ÿ–ž”™•©‘”—‘‘–”—˜—š•–“œ“…š””˜”–•}•’•–‹••–ˆ—””””•’•“–•¢–šŽ•˜—’”““•””˜’•–”Ÿ””‘”’–’––•Ž•”“”“œ™•˜•••’’”™’’”•—–•’¡”އ’•“”žŒ’“”•›’•‘˜’”™‘‰Ž¢””•–œ•—•••‘’’ˆ”‘“’•š•–”•š’•›ž’“•––›–—•–’”––•™”””•••–Ÿ”˜••™“–—–™—”—–›—“–“’œ”–”Ÿ ”•––“”–•–””—››’œ•”žŸ ”Œ”‘•“‘–Ÿ‘“”Š˜‰‹—“”œ“““––Ž‘’’–––“••š–”•Ÿ”•–“”•–”•ž–’›™Ž• ›—’’””””š™”——•˜•“™–‡•–Ÿ–‘›—”——”•¦’‘”‡•–”–••‘’‘•–“”—ž’•–—œ”“•œ™Ÿ‘–••‘––ž—–“˜Ž‰¥™••£’•™™“•–•–™”–—”–•••œ“”——˜™“˜”’–™•”––˜›Ÿ—––‘˜””—•–•–›Ž•—–•–’–’•–˜š•••””••—›˜•“–•”•––• •”œ–›—––¦Ž••™•–“•œ”–‘–•–™‘’”¢–‘š••˜–‘š‘”—“—–‘–••™‘’”–––”“–—˜–Œ™Ž™“–“”•Šš‘•”•––—–¢—•Ž˜•”•”•”›™™™—–“‘––—•Œ›”š–””•˜—Ÿ•”–›˜––•Š–”—”””‘›œ—š•–ž–•–’•”™’—££—š–ˆ—ž’™’–—•“››œ““—“”’“’œ“’—”Ž‘’’”•™•’Ž– ““““’“’”’“•’““‘”’–“”˜“”—‘“–‘“ “‘–””“š— ’”•“•“““˜’““™––—“•”ž’›“š’™—“—•£’“ƒ–™“•“”’œ•“’œ¦“˜’“““‘“““”‰“’“‘“““””””“››•”““•”šŸŸ–•“““••”‘’“‘›“•””’“™•œ’••“–•“‘’”“–•˜“““’”“˜”˜•“™Ÿ“““’“–’‘’’”™–›™”““—”‘”–•’•”“––”“—™–’“”—¢¦“”“•”–”—‰””“•‹•”“—‘–•””’––—ˆ’‘”–’‹“”’””‘–“”’”’Ž””•‹’“’‘”•”Ž““”’œˆš’˜”“˜•’”“’Œ‘”Œ—•”“œ‘›–”–”˜“–œ’Š•—•”˜”¥’˜”—‘šˆ““‘‘’’›’“–“”••›ž’””•””’”’Œ”‘“𔋗º›••’”•–”’‹”•™’••’–“““ž”—“•™“““•”‘™”••’•”›‘—“”’–“”’…”˜Ž”•”‘‹—‘’•˜“–Œ”“‘ˆŽ‹‘“”‘”‘’”™““’”“”–”›’“’““™–”“‘“——•—•“”Ž””•“™””””–”““‘”£•‘•‘”“•š”’’œ••š“–”™’””‘—–”’”–””–•š•—›”’”’ޕަ––•“•˜–˜—‘—”“›’——˜””†–¡“•”™‹’”™›•’”•›’”–˜ž”“•–“•””“——”Ž›•–”‘’’˜™“””’‘™•“””•”–””š“‘•‘““–›••”–•–•™“’”Ž“”“š””˜–›”“Ž”•“•“•’“”˜”••›“”ƒ””“‘–•˜’—‘˜”™•™”œ–š—˜”•––•“‰–—–•”•”–žš•”™”–”••””——–¨—•––™–š•••••““•—•””‘•–“••›”•š••“–˜”••”‘ž•ž””’••”“”Ž”•™•••–•‘Š‘’”•’•˜”‘–œ—•—š’“”™‰ƒ–—••›œ“˜––“•–›•–™‘ ‘•”œ•–•‘–•”•’“ŽŽ–œ—‘”””•”’”•••”””’”–•”‘“—––™•˜˜”••”œ—˜—•••‘™•“—‡”–˜š—•˜””“”‹–•”’–ž‘”••””‹“•“‘˜•–ˆ•”‘‡Ÿ•”“““””““““Ž–•“”•’““’“‘“””…——““šŒ–”““““”“””“’Œ‘Ž’‘’“”“’’”–•“’•”““‘Œ“•¢““—“•“”’•“”“ª•–›“—‘›•”ž”™”’¢’“˜‘“—Ž“˜–˜’˜“”—’•™’Š“‘““Ž““‘›š““Ž“““’“”Š“š—œ•—”Œ—“–”““”“•“““•’“’”“—”’–Ž“–’“’—‘™›’–“’“—““˜Ž»““˜’““Œ†“Ž•™•”‘–•”‘–“ƒŽ“”Œ”“”””’–—“”“’‘ˆ’”“Œ•’™‘•š’“””””–•’”’’’–”’“““”’“’–Ž••—••–”–•“•••›••”—’•™‘”——“•›˜”””‘‘•“‘–•—”•”””“”“Š™•—’•˜˜”…”–’•—“Ÿ•“˜’“›–””““˜˜‘•š“™–•”—™˜Ÿ““”–•””—’“••˜••””’”•’’–••‘”“™”•””–”–”š””Œ•–”•˜•š•••—˜””—‘˜”•””˜“•–™›–”’”•–Ž•–™‘””•’’——•’”œ“•”’“–”šŠŒ–”’•‘š˜™—“•˜”–šœ”•š”“’“–’•”™•˜”˜”’’—•“˜”Ž•”’ —‘“”“”š–’”’’™–““˜›”™’““–““•—’“•“——”’““‘”“”œ’•”“”’•’•Œ”™”ˆ•‘“”•’˜••––“–š˜Ž•”›š’’“‘Ž’–Ÿ•“”•œ””›•š•’“’“““”’•—•’”‘”–••–“’“’—›”–””Ÿ‘‘’“•’–‘”’“œ“š˜’’š”“’–“““”˜“”Š’Ž”•’’••—˜”–žš”””Ž“˜——™“—“““™““œ–›’“”}—•“““”““˜•””—•’“—”””’’••”‘•‘“”’””˜“•“––“‘‘—–”–—’–“”””””•–“”–•›”•”““–—’’Š––”—––“”’–•””•“–“•’‘‘’–”“”’Ž–‘•‘”“”“””–Œ’•”•‘—•’–“••“’’–•–’––“––“Ž’’”““•––“–“”—•‘–”•—’’¢““––—““•’–—”•’“”‘•’—’”’‘“•”‘”“””—’“‘‘–”–”•–•’•’—“–—”“”“’’‘–‘““”’““•••–”“”‘’—˜•”––•‹“–““”“œ–”““”–™ž”‘“”’•“† •”œ¤‰’”•”˜“˜–“¦””…ž”••“•”–‹•—•˜œ˜Ž•••”™•”‰˜”ž”˜–”• •›“•••••œ“™–”¢“–𔢗·“—¯”›•–™“’ž”•”’™š•—˜ ¢ Ÿ””˜ž“œ–‹”–”–”•™Ž””•Œ”””•”•–•Œœ—˜–”“— “—””•””ˆ—Œ•”¨•›–™“‘”•›™˜Œ•™”•“—˜†ž“•”••–”ž—£””˜¡••” “•’†’•”‘‘˜–˜“›’••––“ ”¤›—•Š›–”•Ž›¢™ƒ•““––““˜‘‘“˜•–••”““‘™•—––“˜“Ž–‘–•–“’–”—”—›–œ‘˜”Ž“†•••”’”•’–”•’™˜–”š™˜”˜•—™””•“•˜˜”’˜—””˜•–—›•“˜——•—“•š‘’š”œ“—’‹‘œ–••”“—ŽŽ—”•—‘•”‘Œ™—”’’“”•›’”“•›––”—šš•”–˜–’”“–““‘™––™“™–••™•–˜’”‘“’•“–‘ž“–“‘•–’˜”˜š”ˆ–•–˜”—˜‘”’—”“˜•——•”ž”•–“—”ž—™š–˜–’••“”“Œ—–—“”–—“”˜•““““—œ••–•’“˜”“‘“™“˜—“”“‘™™“““•”š•“–š“““™–”š“”–’’“––”•™”•”˜’Š”£“““””“›“™””’––•€‘•˜•š•›”˜’•˜“¢’““š˜–˜”Ÿ™“‰’“™¢”ž‘”’”•—”“—¡œ’“—’’“’““˜”””——””‘“˜¡””’‘™”–“’™’—“™””—–”“——”š˜’’•—š’“œ””“’š•““•œ”“›˜”•˜‹”‹—œ•””“–ž”™”“”“•““””‘Ž•“‚Ž””™•™•£“” ––ˆ–˜”“”“œ˜—šš†™“œ”™“™˜••›¡—”˜˜““”–“”š–“’“’•”𔕖’•‘”’””—•›”˜œ”•–ž—’–”“–”•’˜”š›”—’–—••Œ“˜•”˜ •“‚“‘ššœ‘–’”ž””œ•”‘‘„””œ˜˜˜—–••”˜••›•𔕕•••’–”˜•Ÿ™•›—”––’‰œœ”•””—””–””“˜“Œ”–•ŸŸ™šœ•—””—œ”•Ÿ”““•œ••“—””™œ•”•™—•““Ÿ•š•›•©••“—’”™ž‘˜–”—›’–˜˜š˜”™“”—’˜Ž“—•“–’””“—–œ‘•Œ“’’““’”’¡“•’’•’“•’•–•”™•””˜”“•‘Ž‘–’”’“”•“”“•”“•’¦’””–•”•’“•œ–‘—”—”Œ–™œ’““Ž—”“’‘•’–—“–™‘‰˜—”–”‘’”””’–•’Œ‘•’“‘“’““•”•“•’”•Š“••‹u–‘“•’’‘’—–’”‘›–•’“““”‘“•”“‘Ž”œ“‘””‘“Ž•’š’˜•“’““”––‘›–‘•””–““’•”•–”—•˜’‹Œ““‘“””“’‘“Ž‘”—“”œ“”‘˜’““’𔓕”™˜˜“—“œ“–—““—‘”’ ”–“”“”’›“““”““’—Ž“‘“”“›““—˜””””𔕕—™’•““–””“”“•˜“–Žš“—”™›—’˜”œ•–““œ”—˜”–—•¢—›‘‰™—™“•—”•œ‹••–“””“””‰–‘““”””•“™“——–—‰“—ŸŽ’—“”“’‘’“š”’˜“’“™““™–‘šš–”˜”““˜š ™“˜”“”“””“›—‡““–˜•“›¢“–”‡””““˜™——•”¡“•’–’”’˜œ””•Œ™”˜“–—‘š““˜˜’ˆ¤’˜’“’’‘‹›˜œ•‹Œ”ŠŽ˜—•’”œ˜›—’““‰–’Š—Œ“’’Œƒ˜Š’‘˜“’’’’–””•–Œ–›œ”ž’’•˜“‘‹’•ŒœŠ¡‘‘’‹’†— ’‘”‹›ŽŠ†”Ž—ˆ’–‰‰Ž‹’“•—•—Ž™š’’Ž•”šŠ„—‘•‘•˜Ž‘›’‰˜ŽŽ™“•Ž}ˆ•“‡“Ž’‘‘‹‘“™’š“ˆ˜Ž•œ›”‘’‘Žˆ…Ÿ‹‘‹ŽŽ••ˆ’†’‡“–›•“Ž’‘Ž˜•—Š›†‘‘‘’Ž“žœ¥›•Š‘”“•’’”””›“’‘’®¨Ÿ‘‘•›’–“‘ŒŽ’Γ›’š‘ž“–’—Œ’¡’‘™ŠÂ‰™„›ž§’Ÿ‘¢•™™‡™©€‘˜’’~“’’•’’—œ›”™¤”–¤¡¢”·›š›’œ““ ›š•‡w™‰·œ’›¤’–«œ™”™“•Šž™•—j”–‘™–”‚š’‹Ž‰›“”•¢~˜Ž—“’¥“š“„’–’˜‘•™””ƒŽ’’’r’Чޒ‘˜Š“m’“‘‘’ž—•›’““š—§­˜””›Œ’¥’•š•žš£¥”—y”™•–šŠ“’“’’“›€‹˜’’’–Š—‘…™™Ÿ—”–”Š”¡”‘a•“•š–—‘“’“‘Ž‘›˜‘—މ–  •›Š’”’“—•˜š“›•‰“’’’’”‘’‘˜‘‰—’‹–˜‹Š’——‚›–––‘{•š›™—“™¢¡‘››˜‡œ“’–’ˆ•ƒ‘”’‘™“’˜£‹•’’Ž••—•’—œ„‘|’š„–—–—–“Žš’’•™™‘™’“‘’œŒ’—‘“’•—‘‘•™š™•“•—˜•œ‘—‘–…“–•–˜”²˜ ”‘‘‘Œ••ŠŽ–”––‘›’”’Œ‹Œ•”•Š’™–”Œ”‘’•›‡Œ|’šŽœ•‰£‘–––ž”•–Œ…›—¡–š—’—™ž’™ž‰ŽŽŠ¢—œŽ•‘žšŽ™ŽŒ“•“–”Š~™žŽ–•rš“Ž‹‰—•š—™–Š””‘›Š’œ“–‰Ž—–™¡š‘‘œš’˜™’•‚’‰–ž”“Š–‘—‡…Ž‘¡—³‘ žž•––”†Œ“™Ž™•“›¡”‘Œ—…š””˜ž“—ƒ˜†“†ˆ—’•‘—Š—ŽŒ•”ŽŒ‘¡ŽŽŽ‰™Šˆ“˜­}‘š›–š¢‘™›˜ —”œ•‘‘”˜•’‘—Ž˜˜“•˜Ž“«¤—›®˜š¢š’šš“–Š”˜Œ’œ”’••­Ÿ™Ÿ¡”””¢™–’™’–“¡Œ“’‘Œ‘’•‘•˜›—‘•¢…𔑠™”˜¦ŽŸŒ •­£}—‹•Ÿ‹•œ”‘”•”‰šš‘”ž‹–š‘v•“’˜œ™‰•‘–•†—‰–¥›™’¥ˆ“Œ˜–‘ž“›——‘’ž’’•˜›¢‹‘§‘‘‹’šŽ•”ž’œœ›‘—•œ™‘’Ž”“‘—›¡œ–“”‘‘‘——œ‹š—™‰†‘”š–›‘†ž’’¡– –Š™œ‘’—–—ŽŠ“–•ž‘—“™š˜Ž–‘–˜““˜£‘Š‘’”¡™“ ”“ŸŽ”•šŸ’Œ—›•‘†‘‘‚Ž’•‘š‘˜“’ˆ’•†™•–”‹š¥“’“’”…ބЛ “ŒŸ¤‘‘˜¡Œ‹”“•Œ£‘™~—’‡‹ž‘𢇛ˆ“„Ÿ•Ÿ“š”’œ’’•™ ’“”’’‰©‘—†Ž–‚Ž’‘–”Ž€’˜Ž’ž”“˜˜’¦–ˆ¨“˜–™’”›ŽŒ’š“™’“™˜‘™‘“•”š™Œ’ŠŽ”’Œ™‘‘’“Ÿš‰™›”ž•‘‘’¥š™‡‡’ˆ•‘”£šŠ— ›“’—›œ•—”€‘–—‘šŒ˜˜•—Š’–‘‘‘’” ‰––’—Ž–‘‘–›’‘Š‘—–”§‰˜˜™’…Œ”§…šŽ›•‹’žˆ”•€‚’†”‚”—œ’’¤ž™¥“œš¡’–›’–m‰’Ÿ¢œ“Ž”‘“~–‚Šš‡Š‹š˜Ž’•—šƒ‘¥ –“Ž“’—’•—”ŒžŽŠ‘‰—g–™‘”˜–Š¢u“‡“‘“™–—Ž“ŽŸ“šŸ“‘”•‘˜‘—‘‘•”Ÿœ™–¡¡Š›œ–—“ˆ˜‘‘œ›š›––œ™–£›•™žž““›–ž—¥šŸ ›©š˜ ™–Ÿš•˜•›œ˜‘—™‘¢¡¬—¡š—¥–”ž‘–—£™••–˜Ÿ•‹™‘˜•™œ””’œŽ’“–œ››˜œ‹–˜Ÿ—“›q—“›–¡¡Žš¡˜ ˜—–—’“™˜•™’Ÿ˜”¢”–‹›–”‰ „š‹‡™£œ”˜—˜’“ “˜’Ÿ‘—™Ÿ’•’ ™›—––‘•¡ˆ“œ ˜‘›•–ž„‘—–•™‘šŒ“’–‘’‘Ÿ’›œŸ˜“‘•˜’–œ˜’› ‹™–ž›˜ž£œŠ’šz’™‘–‘Ž”——¢›““• •ˆ™“Ž…’„“–˜™•”—‘–˜«–˜˜†™’—˜Ž•™”‘—”–””˜” “ “‘‘Œ”’–•‚“—’›™’–•Œn‘•˜™Ž˜z¬‡’‹ˆ‡ˆ€‰‘’’”–‘”–‘˜–• ““—‘œ˜•—“‘’˜¤•¤Œš•–œ˜’Š‘•š™›“™ž•›‘’”‘—¤™–’“’“Ž‹—˜”ž¡–“™•˜˜›“‘–‘”•˜“¦žš‘”“§Š“–’—““Œ”‘––—›¡—š‰¥Œ˜˜˜”•ž‘’’”™˜“’‘‘‰—˜’‘š•™‘’‰œ•‘’’”’––’“Œ’’‘‘“”ŒŽ’‘–Ž’•‘“‘••”‹Ÿ•’‘‘‘‘‘‘‘’‘”‘’–’Ÿ“–—œ‰”’Š‹‘‘’“™™~‘’•–”˜‰—’•™—–‘›“ŽŠ“•‘“‚‘‘“—”‘š‘ŽŽšŽŠŽ’Š”‘’˜”’Œœ‰’˜“’’•‘—•’“““’’‡””œ”™”’‘Ћޕ‘’–•”‹”‘œ’’“–‘…’’’“’“••’‘’ŽŠˆ’‘“—›‘Œ’“’‘’’‘–”‰–Œ¢•Žœ›˜—Žž“˜— •˜™”‚“š˜•–•˜“‘œž‘—‘˜ž•™”ž‘ž‰››’——›¢”–¡—–“˜—‘›¢šœ—”ž™–šš‘Žœ‰–ž™ŠšŸ”ž–Ÿ‘𢙓•’›Œ“‘˜›Ž¢›š–”“˜¡”Š£œ’˜Ž˜—™ œ§˜–” —†‘–œŽ˜›–”Žš¡Œ›Ž‘’Ÿ’™žŸ˜•–’ž‘¡š ™–—˜“™š—’•–œ™š•—›Ž‘›”¨’¡—’¦•’Ÿ•—œ›š¡§ ’™žœ‹™’” ›‘•š–‘’œ˜•“˜ž•””…’”—Ž“Œ‹‹”˜’›—šš“œ˜–Ž‘ƒ’‡“™™ ›”’—‘”–“šŒ• €—™‘‘v›‘‘‘˜“ž–›¦—¥“‰•‹Š’‰Ž˜‘™ž“‰“››š••š¤‘ƒ˜ ˜‡„–“”’š”œ”‰‘Ž—’““˜‘œ‘”›š††˜¥¤˜Ž‹’‘—™”›œ—š‘•’š•‘—“”ˆ‰•‘—‘•‹ž”Š‘–˜ž‘•–Š••›”›‘¢¯’——𛑋œ“—Ž‘„€‹‘¡’’™¡© ž“𦋕•–””’˜‘—›‘‘“ ”¢™’ƒŒ“‘–’˜¦’™”“œ™”–˜•’”™’™‘|”’‡™•’Šš–•œ”™‘’Š˜’‘š‘‘˜‘Ž“•˜’š“““‚Ž™ ‹••’’›“”™•—•¢”˜‘Œ‹’–’“šœ‘‘®•“”Œ—›”–Ž“’‘Ž˜””’’‘œ”‡’އ‘Œ”’››Œ‘”’™šŽ‰’‹–”–“’’˜•ˆ•’˜‘–Š•–Š›–—‘•—•”’’œ™Ž”–›“”š’••–—’”–—Œ•‘‘‘”’’“’”¦¥–’—–—™„’’””’’žŒ¢Ž–‘‘—“Ÿ–Ž—œ—›’•žŽ–¢–”˜Š™“’ˆ••—š‘ž‘•“¨‘•™–…‘ˆ’›’ž•“š™Žœ‘œ‘™‘•‘˜‘š’”˜ž™™•¢’œ‘¤•£¨Œ›‘œ›“¥•——• ‘‰‘’”ŸŽŽ˜’““›–‘”ŽœŸ‘‘œŠ”Š”‘––”®’””˜Š˜ŽŠ•ž’Œ”‘‘£‘•‘’œ‘›™›¢š”“”‘  •¡Œ˜—Ž›¨‘¡£Œ”’—™ž‘’‘“™ š“•”•‹‘–‘“™Œ˜‘–•‰“““™›˜‘‘Ž“œ–¢Œ–˜•‘‘Œœ‘› ’’•‰š•š™˜Ž“‘’›‹Ž“‘•…’”’“Ž’š‹‘–ž‡—–˜”’’’Ÿ’š”˜’›¤™£‹Ž˜‘’–“’‘˜’Ÿ›“—Ÿ¤Ž–š—ž”ˆ“—”“´•˜–’—•š|œ‘šž˜’¤‘˜’‘Ÿ’Œ“‚’›ž’•›˜–ˆ¡“‘•Ÿ‘–™’¥•£¬š”Ÿ¡“„— —“œ“Ÿ’Ÿ–œš”’™’›‘•—ž•›™–“‘“ž’™•—˜• ‹›šœ’˜Œ››˜ž•“Œ‘ž’¤™› ™™›¡¡”‘Ÿ‘‘›ž— £—˜¬š’š¡”˜‰²ž‘’ž•’”’’œš’’˜”Ÿ”•“›”‡’˜—––˜w––•“”–•”–’—˜–““’’™ƒ“•’–“–‘—•”“š’’’–••‹–˜’“‘–“‘”’˜•‘™‡’”—•›˜‹š™•““”¦–‘—–‘œ’ššœ–‰–“›˜’“œ–•¢š•“——”“‘”–“‘˜–•”—’–š›”—„•’ˆŒ¨—Œ‘™š’Š’‘›‘––“–˜’““š“‘‘”š”’’–™Ž•–…–›š•——”œ“››––’’Š–’””’–˜‘’•—¢•—’‡’“‘œ•š•–›’˜—˜–•“™–’“’Ÿ œ†‘™Œ‘†™’–—–šŽ•ž‘‘—®Ÿ–“†˜™ŸŒ‹–œ‘™•†‘‘š™‘š–—’ —™’–Ÿ‘’’Š‹£”–‘žš™‰‘’©œ‘”‘ž’•™¨‘“œ¦•µ”•šš’›‘¯’™–’¢¢‹–Ÿ’‘’™‘—Ž £š…Ž•’‰•“ž¢€˜”“’ š¡‘—’Ÿ–—¤’’”““”–‘‘Œ›ž‘• ‰”“˜’š“”‘’—”’¥“˜“—Œ™‘”—Žˆ—’“’œŒ˜Žž‘—•Œ’›ž”} ›’“‘˜ Ÿž–•«†Ž“ˆ‘‘”–…†—’¡‘‘”Žš’Ž£’“œ—Š‘¡‘’Œ€””–”™“•’•œ”Ž‘•’‹Ž––›Š—”’”–•Ž”›““—“‰Ž‘‘Œ—‘‘”’•˜“˜‘“—˜ˆ›»˜Ž–‹—”„‘•Ÿ˜“¥˜––Ž›Ÿ˜‚‰‘¡‹Š˜Œ‘™‡Ž–’˜‰¤™‘•Ÿ“–š’Ž•£˜ž”™ŠŒ’¤‘”‘¤¤›˜—‘–Œ™‰–’‘™š”’›–š˜•‘’•”˜š“Œ•—š‘”–¬š˜—‹ˆ’˜—’”•™—””’•˜›‘˜‘—Ž’‹ž’•’œŽ••Ž›•˜ˆ‘‘•˜˜’¢‘•‘’—˜™˜–˜–œ”•”’ –’’–Ÿ™”–˜™—œ•‰Š˜’—™“‘–“‡–—‘•Ÿ‘’œ•’““¡•œ—–‘—Ž‘‘«š’‘ˆ’”–™šž•™•—”Ž‹‘¡“—““𛉙žž‘¥˜£“ˆ£’—’š¡™– ‘™’‘’œž‘–—›”‘œ¢›’£’ ’—›œŽ™–’œ–”œ•¥Ÿ’šŽ”˜’š‘’œ›•¢–¡š•–‘‘–›š”‘–Œ”“š••’› ’“–ŸŒ’‘ž‘“—’™ž•—Ÿ¥ž‘“Ž˜—•™”›¨™—”—˜˜ˆ’‘—™“ˆƒ•“–˜’’—•Œ’‘‘”š——‘™˜•–™››‘’š›Ž–œšŸ”˜™““œ˜’’Ÿ–v™–’‰‘•”›‘•–“œ’•”’Дޒ‘œ˜’‘—’™‘ž™”•˜—¥’«’Ž™——Ššš•˜†˜˜š”š‘€ž‘–“”Œ‘„•›ž—”–†‘”Œ’—Ÿ›˜•”’—“‹˜Ÿˆ¢’”–šŸ›–œ‘Ÿ–žˆ•‹™’›•”›–Œ•“š‹“’’¡˜˜”’œ™›˜—œš“‘—ŠŸ—•••™–‘“ŸŠ‘‘–—”•‹”‘‘’˜˜‘œŽ›¡—š–‹‹‘“‘œ“šƒ‘‘’ž’‘”‹™–Š”‹œ—–‡ ¢‘”™¡–•ˆ˜•£Š•“ ””‘’Œ˜‘‹’©•“’–‘–ž‹–‘ž—•¡›”‘‘”“’‘‘’•’˜ŠŠš˜™Žž“™˜™“‘”–ŽŒ ƒ”“•š‰‘•‡‘›˜–“£ˆ’Œ•Œ‘‡Ž™ ’ž‹š˜œ•™•ެŒ˜Š—’œ””’’•–•’Œ¡““‘‹•“‘™‘’’Ї“Š“œšŒ‡¤’™“™‘‘’‘‹’‘’‘¤”’™š‚™‘‘‘–™”‹ –¢ž••‘š‘‘‘‘š•—‘œ“Ž’‘‘““Ÿ—‡Ÿœ–ŽŽš™›—˜”Œ˜ª–˜‹˜‰¨¢˜ž˜Žˆ’Ž‘¢š‰–‹™”“ŽŽ˜œ•“‘ ‰¥–•}˜Ž‘‘š’‘’¡‹™–€šš–’—‘’²’¡ž—‘••™š–“‡›‡•› ©˜¤—Ÿ¢ –’“Ž’œ’‘›‘—–š›Ÿ™“‘œš‰–›Ÿ•™–œ‡Ÿ—”›¡™–”‘— •—“‘–“™‘“šœœž…˜Ž—”‡‰˜š‡ž•ž‹‘—‰‘–‘—›˜–𔕓˜’˜Œ œŽŸœ}–¤¢‘ˆ›—›™—œž–‹•“¥§–‘’–’šˆ’——•‘Ž—¢š—›„‘ž•“–˜˜—˜ˆ˜š“–™œ”ГГ•œ‘“’˜—•–•¡ž˜’¢¢—£“—‘›•’¦”™š”Šœ’—™–Ž•œ¡˜“§Ÿ”•—ž’ž›˜”™žŽ…–”“–ž¢˜•’•‹œ›Ž—–œ„Ž™‘Ÿ˜•¢›š‹›œŽ–›ŒŒŽ“˜š’Œ›——’’š“”•™¥…ŽšŽœ•–‡ Š“—š‡Œœ‘˜Š”ˆ•ž¥””’’”£¥•ž˜™Ž–ž™“Ž—¡š™“‹›š™˜–‘Ž‹Œ‘’‘›’‘”™–˜ ˜‘ŽŠ•–ˆ‹’·•‰’’•“Žœ—š‘š‘–’—§ŽŽœ“§“—‘””š›’“Š—’‡‘—‘Ž’‘–‘•“–œ‘–š•Ž“˜Ž—’›‹”•““–’‘‘ˆš›£‰–›‘Ÿ•ކ˜ž”–’šŽ›Š‘‘ŸŒ’’‰Š™“’’™¡•Гޗ‘š“ˆ‘š—Ž˜•’‘˜‘“‘‰”–…ŠŠ‘œ‘““‹˜–Žšž’˜˜Œˆ’‘“•“œ‘‰Œ•›¨–’š’••ˆœ•–’…–‹™‘“‘’™½‹“ž˜˜Œ’•˜‘‘”““’šœ•›™—“˜—„›—‘–•‹•™’ž““’–‘–›“‘•“‰žŸ“›Ž“—”’’”š˜™˜”—ž‘“‘‘‹”’‘”’—›’š•—–˜‹•˜—Œ˜’œŽ›˜œ“‰›“™š–‘”œ–’š—Œ˜•’‘Ž–””Ž”‘–ž—’’˜’š“”’œ”‹Œ–”•£›’‘¢¤–š™‘˜–™—”Ÿ‘š”•ž˜•™––““‘‘—ž‰—–•˜˜ž›Œ”™‹’˜Š“žš…“ž›•“™ ˜•“’“˜‰š’‘™‘”–¡™˜•£‘–›–™¥œ‘’—Ž’••‹š’‘’œ—œ’Ÿ˜˜Œ’’“•’ƒ’‹ÄŽšŠ‡†‘”–—”“”’Ž˜–£—‚’‘¢‘—’𔓖•Ž’‘Š‘’“’‘‘”•‘œ…™•–…›™œ‘†’”š—’“–˜ž“‘“ ’•¢¥‘— ¦•‘˜——ŽŽ’’Ž••‘‹…‘’š™’˜‘“•›Š«‘£Ž™¢€’“š’Œ”””˜”‘‘Ž–›”’‚‡‰‘‘™”‚—“¤””–“ˆ“ ‘–¡‘–‘Ÿ¡’™Ž˜‘¥“žŽ‘œ“ž‘›‘Žœ•¢Š––€™’š”“˜›œ‘’•‹”–¤‹šš”’’Œ–’Žœ’——Ž˜‹œŠŸˆ±—‹‘‹—œ“Œ…™•œ‘™—’™ž”“—‘““‹——’›˜˜š——‘†‹•’‘Š’’’›‘•š”¤—š–Ÿ‹›œˆ•’…Œ‘ž™—‹“’Ÿ’˜‘¡•š’Žš‘…š“’‘•“‹˜‡©Ž““•ЉŒ”’šŽ“—‘™˜™›’p𛑋ޑ†‘•—Š–š’˜“”‘™—™™Ž‰”’Ž‘œ‰’—š¡’Žˆš‘“™˜‘‘ ‹—•¢–Ž’’š™ž‘š‘•“™’’™‘”’šŒ•“—Œ›˜œ›ªœ‘“•”—–ž•’•Ž‘‘‰Ÿ‰Œ‡y¢•œ’––˜Žc—‰‘ž›™œ‘œ“˜ª‘‘“‘“›‡˜ž“›ƒ’–™Ÿ‘““™™ž—‘””§‰Ž‘’’œ’‘’˜™¤ž•˜Ž•«ž•ƒ“›Œ§’––“›‘‹^•šš“‰‡—|’Œw‘Ÿ”–š”˜‘†œ‘”–’—•‘š’¬Ž§š—˜  ŠŒ‘’‘¡˜ž›˜™Ž”¦’–™‘Ÿ——– ˜š‘”–—¦…šž—’¦Ž–¡–’’’—’•Ž‹Œ¡ŽŸ’®šš••¡•‹‘•‘‘››™†–޲ž”’ž›‘’’•žˆ˜ š”˜œ£˜£›“›‘•–Ž€••“Œ…››”“—˜”™”‘¡–‘‘™–•’™›œ•Š‘”•’˜šš”—¦š”•™Œœ“’œ‘˜Ÿ”š”Ž—š˜¦“‘“™”˜’•š™˜¡¬–”“–™•“©’‰›Ÿ›’”ˆ”žŒ›™”šœ™˜’˜•š‘š‘ •™›˜‘”™“”žŽ•”—”§‘”™¢‘‘𗑣𕕒Ÿš™˜‘ ›¢Šš˜šŸ•ž–‘™›•–™š…‘“¤…“—’œšœŸšž‡œ–š‘‘—œ‘˜”–—œ†–ž’•‰“‘‘‘”“—–}œ”’‘œ“–𔕒’‘–Œ ’‹˜–“’Ž“”—•–“’’œ‘’—‘Ž—’š•‘‘—™•‘—˜š–˜——”“’‘”’‘’‘••Ž“šŽ—Œ‡Ž—‘ –‰£’œ”“’–˜š“’˜•œ–ŒŠ…Œ’œ•™••¡’•—’’˜—’‹˜‘’”›™–Œ˜’Ž’ˆŒ‘”‘‘…•ªŠ–’™˜™œ‘‘“““™•‘–’”’—š’˜’˜™’›‹Ž’”‘•’–Ÿ””‘’“”Œ•‘‘‡“ž•‡‘•”Ž–Š’™˜— —‘—‘‘•––’—•–Š•–”“—Ÿ“‘’‘žœ–†™•Ž’’Ž“›“ž—–’›Œ’›”¼›Ÿ™Ž™œ£›’œ–”—‘™›‘‘š’«ž“’‘’•—•’“œ‘Œ—–¤‰›’‘™“‘Œ‘ œš•žœž¡˜¢•˜¢š– •••”š——‹›Ž”Ž—”•¤•–˜’“š¥”šƒ˜—’ ™Š“—‚œ™Ž“™“—“Œ“’™‰˜•¡™—™—†œ’’œ“›’šœ””“Œ“ž—‘•™”œ™•…•‘™›…•™•’Œ”“’›ŒžuŽ‹–•Ž™œŽ˜“‘—”˜ž”˜““…‰œ’Ž‘” œŸ•—›xˆ™–•˜‘’“Ž“—¥” –‘‘–“’“›ˆ“˜’”‰˜–”w™““–š—Œ•“›œ–‘œ•’”—’“š‘ ˜œ›œ•“•””‹‘£Ž‘¢—•’—š›•œ–œˆœ–’—‹Ÿœ–Œ™žˆ›˜›™”¡ˆ‰ ‰—œ”‚ š—šŽš—™‘Œ˜œ”›‘‘“ˆŠ‘Š‘ž•–ž’‘Œ’˜•Ž’’ŽŽ‡”’‘™‘‡¡Ÿ’•‹‘—”Ž‘œšŽ”–ŽœŠŒ™œ™––Šœ•Š”•Ž••™”›‘•”‰‘’”–™˜›•‡‚Ž‘£“‡œšŽ}”•’••” –‘”–’“””–—“’“™Ÿ‘™—‚“•‘‘•’¢––‘—‘—‘›˜—“›’‘‘“‘’–‘‘”—“š’“”•’š•“‹““˜š“˜”“’…“’–’™‘™“†’’–‰•—š’”’—Ž•‹‘“““’—|š–•–Š–›“ššž“–Œ”–“’™œ‘Š•”“Ÿ–•›“š˜’“”–“—••—™œ”œ‘‘“”—˜’‘’•š’—‘ž’—˜Œ•“–Ž‹–”–™•–’‘’’˜•–••˜—“’–”š’—›šœ“–’”•“™“’’“˜”œ•…˜’‘“ƒ’“–žš —–—’’’ž˜«–—³Ÿ™–”›ž’’Ùœ‹™™Œš¤˜•’—™™’˜’‘š ™›š™™Š’£œ’”𖙢•™›œ¢œ‘‘“‰—’‘Ž’—𔡭˜–¢™œ —˜™˜“•‡“Ÿ›››Ÿ™¶žžŸ–œ˜–šŽ•’ŽŸ¢{——•˜“–•œ™•–’‘¦–•“ ‘›˜ž™”•“ šŽ€œˆ“‘ž–’¡“‘‘š’ ’¡—‘˜œ£¢•–”Œ¤‘“˜Ÿ–“–ž¡Ž‘š‘’’¢›’•𛕠’šžž““‘­’£œ™™˜˜š•’’žŽªžž™™”©—š–™•‰¡’’—”˜Š—š‘‘–Ž›ˆ’———–”——””˜˜’•œ™–’”¤š¡ •’“‹‹“‘™š›’•™”‘‘¢‡“š•‹Œ‘—œš–““–‘‘—™’’•Ž™Œ–Œ’…—Ž’–—ž’™“½’”“Œ•™›—‹–””š’–¢‹”š””‘ ¥•žšˆ“–‘Œ›œ£’ˆ‘¡¥‘”“˜Œ¤‘”•“ Ž’˜¡š‘¥‘›¦¡™–‘™‘’œ’––›”›““–‘‘––Œ‘›’’ªš›•‰Ž‰’£’™–¦—Ÿ“˜˜•“£‘“Ÿ“—›™† ‘–‘‘Š’’Œ‚›ˆŒŠ˜”‘’•œ˜¦˜›Ž““˜œ›¡Ž’¡’…˜›ž’˜¯‹—œ˜šŸ——””œ–“˜”œ’’™œ›•Ž•–œ“¢–’“–’šœŒ™œš•–”““£ž“’ “˜›™•‘“œ•™—•x•“™˜Ÿ•—•”’—ž™Š—ž›Ž•“™›““‡žž”šœ—•‘Ÿš–¢™œ•–˜’—–Ÿ›“–“–›‘›‘œ›”“”•œ˜“Ž˜’“‘›”—œ“™“’Š’•™œ˜ž–“Ž“•“š‘Œ¤˜“š˜›”™‘—‘””›˜˜›”•—–“¡’Ž›–ž——‘’•“—““–œ’𕙆˜™˜›š‰›““‘¤“Ÿ•˜‘‘Ž’™Ÿ™Šš‘Ÿ“’™’†—’‰ —’“Ž–•–˜œŸ–œ’—’‘›†­ŽŽ”©œ¨”‘›™—¡¢“Ÿ›— Ž“ž‘‘…—’ž‘𛓓–ž¢’މ ’–¦•” ‘˜™“¥˜ŒšŽ‹‘—‰œ‡‰•‘›•‹””–˜˜¤‘ž…ª”•œŽ‘’’Ÿœ‘¡‡‘”’”’¢š”‘–˜”‘š¡““œ‘–‘‹–“œ—™•¥‘‘”Œ‘‘’ˆ ž˜“Ÿ–’–š‘–”–’—ž‰œ–“—”Ž‘–£’¤–›–x™‘˜‘‘¡•• ˜‘¥‹—™–••©™‘‘Ž˜‹•˜ž’–’‘‘•¡™Œ’ ”“’ˆ ˜š”Žž•Š–¢™œ•“‘““ŠŒ”œ–‘˜ƒ––‘š˜•’™“›…šŒ‘š‘›—’ ’““ ˜š “—‘œ“Ÿ“šŽ•‹—›””•˜ŽŒ—”‘‰˜š“¢§”„„ž’œ‘“™”§‘—‘››—Ÿ–Œ”‰Š–˜•˜”–‡Ž•“™––›“™•Œ‘Ž”•›”™‘–˜‘›”ˆ•„¢’‘–””””•„—•Ÿš–žš”š€•‘‘ˆ¡œ‘Ž›‘ž”‘Ž•“Ž–—”—‡†•œ“Œ}”‘‰’•˜šŒ™‘’–“¤›˜”™˜••œ”’’– ”š–”• š’–‘•’š‘œ”™Ž˜‘“”“’–™•š˜‘•“Ÿ™’’’‡•’‘–’”•š˜—’‹”‹˜‘‘™—’”•‘–“˜–”¬ž˜š‘›Ž‹’˜™’—†•”™“™”–‡Š™–“–—’Œ•’”–Ž•–” —›”˜™–—‘‘•”’’–™˜–’›’”™“’“–“•——’“Œ—ˆ£–š‘˜•—–—˜‘‘™‘˜–š’’’’”“”‘‹”‘—”’™Žˆ‘‘‘’”‘˜”’‘””˜•˜”’”š’’–˜—ŽœŒ¤—’‘”™œ•¡¢˜š““•œ‹¥ž˜š›œ—“‘Ÿ˜š—›œ™’’”ž”•™š˜¢ž•™Ÿ‘‘Ÿ™’’˜””™œ•œ ™œŽ‘‘—•’‘Š’™‘“¥šœž›Ÿ˜Ÿ— Ÿ™˜—š•œ‹ž™Ž Ÿ¦‘–‹ˆ¢’™•—“ Ž‘ ’§ž™™–‘ˆ‰“”‘ œ’“’š®ž”›œ‘’·ž““™šœ•”’¢šœ—–›’ž—“‘œš›““¡“Ÿ‘”™£’ššž“š—–’–£œ•ž“™Ž›› ±’¦–›“–‘Ÿ™•˜—˜Œ”Ž’–‘“˜˜™¢ž¡ ” ™ž› ­¡‘’”—‘—£Ž““–’’•›š—Ÿ‘¢–”™˜”“˜—–’–“–˜—””“”’‘–‘’”‘•—’’“œ—œ“’’•“’–š’œš“—’—••’’”•“‘’’››˜’—œ“–©œ™•‘”‘‘•“•‘™’•’ž›’˜˜Ÿ—™“› ™§’—›™’“œ™•”‘”–‘š†•‘š˜“–’›’””š”˜™›“žš‘“˜–˜›”’”Ž”“”’ ‘——‘—‘”˜™˜’—›’’Š–‘›˜šœ’™—‘”–˜‡“’šœ•–™”–“›’™’š—˜’—œš•’›‘““™˜¢–š™Ÿš›“–—“”“–’’›†‰›œ’¬˜‘’•˜©“ ¬¡c”˜Ž–މ¨˜‡­¡”¨˜›Ÿ˜ ˜’•š‘‘–—oŠŽ–•ž’“¨‘“˜›¡™•—žŸ—‰’’Æ–’‘’¬—š™”œœ£š™”–Ÿœ’—’¡¢š”2ƒ ˜™—¥‘¡‘š­š›—}Ž˜”’ —“’Ÿt~–’Ž––•‘¤”“­ ››¢ “_±Œ‹–‘•’›–•–’¡‘—’œœš¡•„‘“‚›™˜¨˜x—ˆ”•˜ŸŸ|“–™•˜¢¶“’šŸ“’“—¦“˜˜–¢’•“•¨†¦ž¢˜Ž¬›”•›“˜›š’’‘“šœž—’œ’’’”“˜•Œ•œ›—˜ž–“•˜™“Ž™œŽžŸ™–“š‘””“”““’›—˜”•›”—–‘˜œ™”“—•’œ‘—’šŒ”‘’’–’“‘“’ž˜“šŽ–’›••²‹”™‘’ž‘¤’™•—“œ–£™˜˜™ž“’¢“™•˜ š—†‘’––¡““’˜”˜’‘“”•—’‹”–—“š““‘™œ‘™’š•šœ–‘ž’“”“••™””™’“š—”›–™–‘–”–•œœ“”•––š’“£›Ž–•”•“Ÿ•˜””’ž’—‘”–š™ š•——Ž–”“‘–Ž’““•˜¡•š”Ž’’Œ™› ˜™‹™Ž“™‹Ÿ™—šš”’—Š—Ž‹›‹‘Ÿ—‰“•š’š’‘˜˜“–‘˜—˜™ž˜’€“š’‘“‘’‘ž‘“•Œ—”›•ž•¡y‹–•’› ”…’ ˜”˜˜›šŽ¡“ž‘†›œ¬’Ÿ‘•™‘“’Ÿ“—”˜Ž˜x›‹–’’“•–’š‘™–—ŠŒ˜’‘“–Ž‹–Ž‘’˜ŒŸ—Š’Œ‰“•™  ˜‰’Ÿ”‡‹›Š‘‹‰•‘˜Žšy“‹—š–”’š˜ž•ŽŒ“˜™››™Œˆ—‘œ’ŠŒ˜Ÿ—‘˜™ £––˜”•’‘“”ž‹~•š™’“”œ —•™›˜——š˜”™••œš®–—’ž’™˜ŽŽŽ”˜Ÿ“–¡”’Ÿ™­—˜£œ™’Ž™›“•™›˜‹›–›„“•’’‘“’™’™˜—™|’š—“Ž—†Š•’—£˜”™™šœŽ–•‘–ŒŒšœ’œ’’˜”‘•‘𥖇ˆ–‘’›—š““˜›Ž•’–—“”ž—•“Š¡›”’—–™“Œ“•™“—•˜–›š‰’—’‘‘šŠ†¡”‰•—”—‘–œ•’™›–‡Ÿ˜„”‹™“•—‘––˜›–š™’“Ž’Œ‘”‘ ¨¨•š¡…™˜œ™œŸ’“•”™ž ’†‘’‘’ŽŒ‰šŽ‘‘Ž‘œ•”«’‘’‘˜‘••’’‘‹“’’‘’”˜ŸŽ••‘Ž’‘’’Ž’”ŽŽv“’’““’–’“‹˜‰’”Ž’“˜”‘—•‹‘”ˆ—““‘‘ˆ¢†žŠž” ”“’““’’…”’““‰‰Œ‘’Œ–•‘Ž‘˜‘ˆ’˜—”•Ž“’“–”’™”’“‘’’••““”““–ŽŽ‰˜’†–’”–““Œ¤•““’“”•‘“‰ŠŽ˜‘˜‘Ž“‘“‹˜”—“‘‹“’’“”’Ž€Ž‘ŽŽƒ‘’‘“’Ÿ‘“—¡ •™‘‘—‘””’ƒ˜Œ–•˜›ž—¢—މ”™••—Š¡ œ•–’’™£‘”’€•ƒ£•’˜“’—™•£’œ‘™º––‘‘”£“’‘—–›‹ªŒ–¡ŽŸ“’’Ÿ—‹ƒ–š’œ‡—‡›Žœœš†›¦Žˆ‘–’‘Ÿ|“”–”—’¤‹®‘•‘›¡šœš›’–š’–‹”•šš’†Š • §•Œ–‘’——•¡‘Š“—œ†˜›“Ÿœ‘‘‘’®–“Ž¡˜¥’”“¢•w’–’–¥–‰‘“¦““¤ˆœ–‰“’”ŠŸ‘Ÿ’‘•ˆ‹£••¥£‘šœ ”Ž†‘‘“𔩖œˆž’’™”™–”Œžˆ–‹‡”’”“Ž‹•–•Ž‘˜œ”£œ“‘•’› ”‘‹”’“‹“𛓖›–ˆŒ’”’‘œ™’’’†“•Š¥—–‹™Ž’‰–˜’›—’Œ¢‘ˆ–“ ‘¡œ’’˜˜•’—”›…‘‹—–ޤ¡—’“—’¤‡”“•—••Š’•š–†˜‰— ”—Ž˜–”š›ŒŒ’Žž™“‰’’“‘Œ’”‘ Ž’”Š““’”¤““Ž•“š‘’ž‘“ ¡“„““”’š‘˜Œ‘•‰•˜Ž–’™’‰Š”ˆ‰’“’šŽ•Ž’´ ’“˜‘¢“ ˜”ž—’’–•’’˜Œ’›¢’”‘—Œ’œ”‡š–š–‘’•”£˜™’“•’‘••™—ž˜ŸŒ“…–””›—”‘œ––—¢’“Œ”“‘˜’›”š–¡—›—“’ƒ•›‘“‘’–œ—“”š‘•’Žœ‹—›’’ž™––’”˜– –””—‰”š’‘“‘‰”“‘’—˜™ •›•˜–‹¦£’‘™Š“—–’”ž”¢Ž’–‘Žœ’—šŒ›“—‘’” ™¤”™–›œ’‘“•›‹’”‘––Ÿ–””Œ—›•–˜—–—š–x‡Ž‘’’‘Œ›š˜š©–•œ’•’’© ’’’•£–’—”’‘•¨—Š“§”ˆ”“•Žœ˜ž–”“› ”•…š’—”˜”‰“‹“‘•Ÿ”•‘––‘’–—›’–“•𢉗˜—“’‘œ–’‘’’™”•™¡–•’†‘”ˆ“¦”˜š•–™¤˜‰r›Ž•šœ¥Ž±‘Ž˜¡“Ÿ¡‰Ž‘™–””—•™Ÿ•‘ž‘““•Œ’’–˜Ž˜y™“ˆ’v—Š””—Ž¡Œ‘”›“¢˜’‘’•’’›¢¢œ”Š‘•™¥Ÿ¢’š’—“—“ž˜ƒ’‘¬›“”•—“–œŽ’–‘œ—ž˜Ž—™™’¥‘“–¢“²–—“ƒ˜“–Ž¢~™‘’—™’›™™¤’‘‘•¤•‡™Ÿ¦™•“—‹–š˜ÁŸ¢“•””Ÿœ˜‘œœ—“““‘˜•¬˜›Ž˜‘ˆ‘’›‘‘˜–™•™Ž˜š ©“†‘’‘“‘‘‘¢–™ž“—£ •¨“”Ÿ—’–™‘šœ›’˜Œ¦“Ÿ˜…Žœ•™˜‘˜›¢Œ¡Ÿ–”Ÿš—”Ÿ„™’‘›’–Œ‘–š‹Ÿ…•Ÿ™“•—– …Ž“™”–Ÿ¢œ”Œ˜‘—‘ž›‘  ›—’’ˆ‘‘œœ‹¢¡š§˜•˜‘’˜››‘•—š˜‘› ’•“‘“œ“ž˜›‘†›’”’“‘›Ÿ£¥’’Š‹“˜’—•w‘‘—‰…”£Œ‹‘‘‹˜’†••”•””“Ÿš‹”{–‹•Š‘“–‹‘‰–™–Ž’”’†›“™“‘˜•Ž”›™‘𛔣ž‘˜Ž‘”–…Œ’“—•›ššœ–£˜’Œ’™“Ž˜›”™““‘„™›‹—‘šˆ›’œ’’”‹Œ—Ž”°—’“†–“”™‘˜‘Ž–›Ž–“’ЇœŒ‹–›‹”Œ— ™‘‘ŠšŒŽ”˜˜š”‘•ˆ˜ˆ‹’–ŒŽŽœ’”’”Œ“‘Ž–¦šŒ•𔑓’žž™‘—‘•…˜˜Œ“Ž‘’~’”‘Ž––›‘’’–•–—••¢˜™—‘˜–“™”‘šœ•—˜Ž›’‘“™‘‘”’˜›”’‹ŒŒ–‘’†œ“œ˜‡¤Ž‘‘Œ’‘Ž‘•™”‹Œ•’‘œŠ¥’”‘”š’š’œ†”¡ŸšŠ•‘ž–„‘‘‘žŒŽ”—Œ“‘•Ž˜ž’š‰•–’™“š’›’…Ÿ–‘Ÿ”ŽŠ”¦ƒ„“•‘žš‘‘–‹šŠˆŒ’’Ÿ‘“–…™‘”Œš•‘‘—•œ‘’˜š‘”’”–““Ÿ“‰•š”’œ”•’Ž’†•’•›Ÿ‘‘ˆ‘’‹‘‘’ŒŠ›‚ž‘—”–’“ˆ’•–…•™”””Ÿ‘‘’œ–•˜—›’• –“–œ£—™“•™–‘’™™—‘›‘›”œ”œ‘š˜• “™šœ˜’›—‘–—’‘‘ž–’–’˜žŽ™‘–™žœŽ–œ–——ž—’˜•š–š •”Œ•––“‘ŽŽ‰‘•˜Ž”ŸŒ–•™™›ŽŽŠ›•‘¢’–‘’‘‘š–•’•§œ•—“˜“•’”˜‘‘—š—‰š–’‘–ššŒ‘’š›‘’Žœ—˜’™‘“•”•“—šž†’š˜ž“œ“‹”’—Ž”—‘Ž”–›•¢’–‘˜‘‘’œ—“—“–’Œ–žššœ¦¥‘’’—•™š““’”——„’˜—›˜˜’‘ޛ𖑔“’‘•˜”’’’‘•’’•’š˜š—š–’š’”—•‘”šš–™…’‘’’’•’—•–”––•‘š–¡˜—™““š‘“™•”—‘¡ š›˜Œ‘›—–’–”’’”–’‹•‰—’˜•–Žœ••“‘Š“ž””’œ›ˆ›“Œ™–˜‹“Œ”““™˜’Žœ•œœ’—“—’˜”˜–‘’‹••’’—”˜–—‘šœ’’—ŽŽ—”‘’œ““‹œ—Œž˜Œ’”’›Ž—•‘‘™•›¨’“‘™—–™™Š‰‹Ž”“”‘›’“’“—˜œ”Ÿ—™‘’—¢¦ ˜™””•—‰˜‘•—“Ž™‘“”™™–Ž’ž’’‘™“š‘‘£—›•Žš”¤š–£•’ƒ—ž‘‘|˜’‘ž’Ž“™˜šŽ˜¡˜’“š§•›˜’«•š“ —˜›˜”™œ••’˜˜‘—¢¦›–ŠŽšš”™Ÿ–—‰š—’”–Žš—’š†•š’˜”•«”‘™•—Œ˜‘ ˜š”£‘…‘‘›’’‘šš””š•‘“¢y”Š‘•“––‘š~’˜ž‘‘œ—”“•”ˆ–›”ŠŸ™ š˜”“™˜‘‘•–‹š˜’œ˜—“‘š“’“˜–’’˜™•–”—’““‘š‘–‘”“œ•‘•–•”–’‘——’‘Œ›˜’–”’““‘Ž’’’—“Ž™…’’‘’“Œ”š•˜—•••““—’“’“™‰‘’Š—”šš“˜—Žž“•—–Š“™£‘•™™”‡”¤”•““—“’˜”›—”—‘©‘Œ’‘ Ÿ‘—’“—‘‘˜‡•–˜”¢“““šž™“•˜“Ž ’’“‘‘“™’–›˜—““”™™†–‘––”—Ž˜’Œ““ˆŽ›‘’”‘”ކ”•“ˆ”ŽŒ•–Œ’“—“‘‹š”•š”ª›•–‹““”•“’“’˜‰Ž‚™˜™‘’‘– – ”˜‘“›–•£”Š——Š–›˜š”’˜™˜’›š’Ÿ›‘’•š‘Š–’‹™™‘”›—š——ž–—›’’¡•’‘œ’œ––“˜—™œ‹’ Œ”¡œ™šŽª•—–™‘”œ –¤”‘‘–„—’–œ–’šœŒœ“ š™š–š—‘œ’–š—•”•’š‘–Š–›Œ‘–—‘˜’›’›’˜š™•—’‹“’š“˜—š—™œ˜•’‘•‹¢Ÿ‘’˜“”›”œŠ“•“™—”›œš¨•–””‘‹˜—•˜’”’‘„‘’›ž‹˜š™“œœ—•š•Œ‹’’—“’›‘“Ž’“’‘‘ŽŽ•˜‹’Ž“•‘’”–ŽŠŠ“•—’‘””—ž“•”’Ž”“™“—‘Ž”•“’•–’—Ž•““”’‘‡’’›“‘•Ž””™‘•™ŒˆŽ–•“ƒ‘˜‘’’”•”˜’’•’Š—•’–›Ž“’“•‹˜‘“–‹—‘’’”–Ž’“Œ“——˜Ž¢™“‘‘ˆ˜’”•˜—’Š‘”Ÿ†“’‹•‘”ˆ”˜˜”›’“’Ž¡Œ‘Œ–•š””‘Ž“’˜“‘˜‘Š™’Дޓ’•“‘“™‘‘’’•›“˜Ÿ—‘’’”—Œ•’“‘Œ¨—”§•‘‘“š§ž”•›Ÿ‹˜“‘–‰ŽšŠÊžŸ”Š—¡–—››—’•œ“‘—œÁ•ž†™‘ª’–™”’–šœ™Ž–šŽ ‚•Ž’’‡›“‘“’œ—’¡ŒŸ£’œœšŽ˜¤“›”£”•š œ›Œ—•‡šŽ–¡•—™¢’•ž¨Ÿž–‡””––™—›x™•’•‘“’‰’•š~œ”˜•Šš£•Š’——žŸ’œ‘Œ’‘’’šŠ’ Ÿ•˜‘‘™ŽŒ‘“˜œt›œ—ž—“—™’’——’–›‹•™™‘ŠŸ¢’–“œœ¢—Ÿ˜ˆ—’™‘’œš•¨™•’œr’•™ž— š’’›™›“˜‘—’’•Ž“ŸŒ‘•…‘˜™‹Œ Ÿš‰˜’—™•™•—›—•“–“‘™’’–ˆƒ”•œ—ˆ‹•Œ’—Ž•ŠšŽ™œ‘‘§˜’‹’‰””¥˜‘’žŽ–—Ÿ”˜’f‰š™Œ}–Œ‹ŒŠ™’‡†‘Ž–’’“—šŽš›…—‘‹ž“‘›¥˜ˆ•”’•…œ”—“‘”–šŒw¡Š’œ“ŽŽ‘•–“”Žœ‘œ’••˜’𤔛‘‘‰œ‘•…“Œ’Ž˜™‘•‡’Œˆš ˆ””’œ¢’”Ž›™Œ“Œ‘•ŒŽ„‘“‡‰Ÿ’•••“›‘’Œ§‘’ž•Ÿ•Ž•™‘’•˜–“ž–ššœ•ž–—•¥˜–˜­•˜ªš‰š—Œ—„ˆ––‘“”“’¡ž›–“•ž‘‘›““˜–– —Ÿ•š‰ž—‘’—’‘ž’™“››“•–˜œŠœ¨”•™”›—†˜”˜•–ž§±Ÿ‹—”“ŸŠ ’¢”›ƒ–”‡‹““™•žœ–•’‘‰Ÿ˜“ª’’“˜›–šŽŽ“”Œ†•‘’”—¡’š„’ž˜–’—˜“”𕔙ޕ’‘ž•–™¡†’Ÿ˜˜Ž‘˜”’”“•œŒ“‘Ÿ™’’“•Ÿ™˜žš‘©‘‘™‘˜•œ™§‘–—“”—˜}Ž’’‰—”€–Ї•’“’Ž’Œ—– ””“Ž–•Ž–”Ž•˜—š•–‘šˆ“’’“’”˜–“”¡“’“Œ“Œ“‹Ž‘‘‘ŸŒ’’—™“’‘’“—Œ•…’‹’Ž™‹–Ž’}’“•ˆ––›”–“’‘‘’”Ž” •“˜‘——ŽŠ’’‘ŸšŽ’–’““Ž…“””—Ž’˜®–‘—¡šš’Ž”• ‹‘ˆ“’—’’”‘–Žš“’“–••‘œ‘’›“’—“‘”’˜‹’–’”†”›”‹”‘’‘ŒŒ‘‘‹“‹‘Ž’’”•”–”𠆕””‘‘’šŠ’“‘–†’˜”’’‘¡Ž”Œ£Ÿš™Ÿ’™”ž™”v——”‹™˜š“–‘˜›‘–‘ž›’“• Ž•¥“”¤’—‘¤œ‘’˜‰…–Œ‘‘¬“‘‘¡’› Žœ–™‘Ž™“•‘‹Š”›”˜”››•ž—’³“›œ˜˜“†›œ‘–šŽŽ’œ ŽŽŽ–—”Ÿ©“”‹’›—š’’‘›ž’š‰“’Œªœš‘’•”——‘•“ ž’ ‘“‘‘”—Ÿž¡—‘™“‘’Ÿœ˜ŠŸ¥—“’”›Ž‘˜ ”•—š“’’‚‘œ•”•—”•˜•œ—’š‘‘›—¡š‰’‘¥–Ž£œ›™’¡‘’”œ“œ•ŒŒ”’‘•‘“’’¢ŽŽ”Ž‹˜Œ“œ’“’šƒˆ•Ž›’‘‘“‘‰Š˜‹•›ž¥‘ŽŽ•’—˜——””˜•””–‘‘‰Ž’‘‘’™•›‘Ž“•—}œ‘•‘Œ—’–ŽŠŒ“™˜‘••Ž‘‘š‘‘ž•”Ž•–‹œ’›Ž“‘’‘މ‘‹‘’™ ’Ÿ’ž–™—•™ŽŒ‹—••‘“’›’“—’Œ““š’‘Œ˜‹Ž“‘—Š”—™”’‘””œ”Š’’’‹’‹•“‘‡‰’’Ÿš•–‹‘“‘“—›£œš—¦˜ˆ——‘’˜’’“• “˜”“•”“’’’œš’•‘‹”“’““™“””’‘˜––™—‘™’—’’’“Œ”—“‘¤‘’–’“•‘“‰‘—”’““—’“’‘’‘’”—–••–›’‘ˆš–‘––—“Ž’–““‘ƒ““–••–“‰–›’›— ’’”’””—”’”މ‘•’‘“•”‘Ž’‘“˜–Ž‘ƒ™’—˜‹“˜“—”’•—”’ŽŒ’•’“““š“Œ•Œ’’“—‹”‹—’“’””’Ž’’•”••–’Ž•™”“›‘–—“Ž•’’”™ž“‘’–‰‘“–•‘——’“’‘”’ƒ’—š—’“”˜˜••“™›Š™”¡’“‘š‘…›™”‘œš–”“•—˜•“——‘’𙕙’™–¤’›ž”•˜–”–’š”Œ“’’‘˜“’›“–›˜™Ž––ŸŽ—”—‰‘–›’“”’™’™Žž–‡˜™•–—Žš’—“‘›˜•“Ž——•™„›“’•‘•”•“•••–š”””“—‘—“™”—›“‘”“›’‘“š–”——›œœž–™š’›™“˜œŽ–••˜“¡¡™’”—™‘”‘‹”•™š”””•—•œ›’£™”“’’’œ”š—•™‘žŒ”“™š—š•’“”“ ––Ž“”™“’“’–•™–––““‘•‹š““œ“”“—“’–—•˜“—‘œ’‘”’‘””“—œ˜š‘–“’–•“’–”—š†““’˜“’’•’“Ÿ›•“––’Ž’“‘‘•‘˜’•’–˜˜“˜šš““Ž““›•Œ”Ž“’‘”‘•——•‹ŠŽ““”™“˜“›“›–™‘•‘|‘–•‘•˜”›™”‘’‘’““–’™“–’’˜”š•‘’—‹”““”–Š‘•”“——š‘‘“”•’–Œ–—’—”š’Š•›’‘‘‘‘–’™“”““¡—–’’”š’•”””“š˜’““ž•˜‰š™’“•‡–¢—“‘”™’—Ф—œ“ ¡‘™’›šƒˆ“’—‘•‘“Œœ–™™ƒ˜Ž’‘Œ““•’‘”ŠŽ“ž—’’¦–“’˜“‘˜ŽŸ˜Žž†˜‘œ”•¡‹‘˜’’““ •’••–“–˜›’‰’”Š– “”—“Œ£Ž˜”•’‘£œ‘“¥“”‰˜œ•š”•š•‰”“”š’œ“”†—œ“‘“”˜’’Ž“™—”–’””˜“‹Œš’™•—›•‘“Ž“¢ˆ”¡”š”…””’•’——•”ž›Œ’œ’”“’Š“š¢•Ž™•’Œ•Ž’“”›”•†–•–‘’’œ‘‘–š‘™•—Œ’”•˜““¡‹–š–˜—˜•‘“•’“–’”œ‰’œ—‘’••”—‹¦”Š—Ž’’“‘’‘”’Œ˜–¦—™”’‘«“‘“˜—™ŒŒ–’”˜•™—ž”•š¥œ‘ ‘‰“‘’—‹“’‘‘™—–™ˆ‹”Š’”’œ™š‘Ÿ‘šŒ’‰—“–ƒ—ŽŽ˜™•˜˜’”š•˜’’”•‘•™œ™‘’”Ž’‘’›™—“™””ž˜–”––’˜•”™•™‘•’–•””–’˜–™˜–¤’’’’––‰™“Ž™˜›œ—•––€”‘“’••–‰”“¢•’’“›™•‘™š‰™”–‘–“•˜–•–—“Ž™¡’’’”—”Ž’š–‘˜†“¤Ž–›Ž‘“—›’••š— ’””£Š•“’’‘“’š’š—–”•š”‚œ™œ•œ”•“’‘–œœ–“Š˜‘‘”˜ŒŠ‘“–˜šŽ’““”•š—“˜”’”’–’“”’’’”•’š˜˜‹—˜›Ž{’•’’’–’ ”–“™‘’ž˜•–””˜’š‘‘‘‘’“™Œš™——“’”ž’–ŒŠ“••’–š©“™Ÿ‘“‘’š˜ž™”œ”’‘£’’£›’Ÿ™•—‚‘•›—™–Œ‘’’š’Ÿ•œž—’’’œœž‘›˜”–“Ž‘œœ§—¡™Ž—‹”–’–•”‘’Ž’‘“šª”—‘—¤’—Ž–’›—™—’•˜¢™™’‘‘’‘’ Š˜™„“”“™‰›§™”¦’ž”˜ƒ‘™™—‘’y•”ž”›–“‘Ž•’‘¥›œ‘•“–˜–“’’ ‘š–’›“š’‘Ž’–’Šœ“—‘˜–™´•–”’””“’–˜“ž“’˜—’Œš™˜˜’š”’‘••’£—œ–‘˜•’“¢“——“•–™””šŽ˜”‘”–¦˜—š•–‚•“’—’”‘˜™¥Ÿž“‘ ’““•œ™œ’’’—”—––•’“‘˜—š —’‘“”™“˜—•Ž••’˜•’™“’–•”“•‘’Ž–‘‘—›’˜–’—“’ޑ𒙙•“‘›”“”••’’•–“‘˜’‘—™˜œš––ž””š˜—˜•š”™–˜—–‹–“‘•ž–’––œž˜—‹ž“–”š•––ŸŽ•—‘˜’–‘œ’•”›—š’Š”š“—™Ž˜‰’––’’˜’‘’”™––™—™“‘“–˜‹“š›’Ž‘–’–𔓒”–›••”’š“Ÿ””—–˜———›…—™’˜‘“‘œ“—š™Œ–™–—”–‘š’’Œ““˜“œ™’’–œ—˜Œš—™’—“•Ž˜—˜|•–‘˜•—œ—˜’œ —Ž’›““‘— Œ™›”•Š’˜—˜‘”š—› ”—’™”‘‹’’•”’‘œ’“›™š¯’–”‘”›ª™’–’“•’–š•žšŽ”–•™‹˜’•™—Ž›”’“šœ—Ÿ’šŽw–”‘‘•’™˜Œ’—ž•—Š™…›–œ‡u––“–—š––’•Ÿš•”‘œ’—™‘–—ž””–‘”•‘“–œŽ–œ˜–œ”—š˜˜’Ÿœ—¡—“—›”š’Ž‘™¡˜™™•”™‘›‘“˜˜Ÿ“”ƒ —–˜•™”z”’’‘–“•‰˜–•–’’Œ˜—’—‘‘–”•“–’””–•“‘––™—š˜’›’š‘’’–’’•”š˜•­‘—’—’˜•“—•š•¡Œ—”•’’—˜“’—’”–•–’‘’œ–¥•“˜’—˜”£”–˜‘’–••š™—›’ž‰’–‘“‘™˜œ˜“™š“””‘’Ž˜˜”–“’˜¡™—˜’—“Ž“‘–—™•“–œ—’¢“™’Ž˜’š“š—Œš—•’“ž’‹”’’œ–—™‘˜›”•“™‹š˜š…“¢’’”’“”˜—Œ—–‘—’—˜‰–—”ŸŽ˜š’–µ’’Ž™‘Ž”˜“’—‘™”‡–“’®“Ž•‘’’—Œ•™š’™œ¦ŽŽ“˜”’’””•‘––­–‘’ “““‘¡““’¥œ–¤Š”’’“’““˜“œ˜’›‰—“˜”‰œ‹”–“†–•–Š—–±”–‹£’£ˆ—™’¢šŽ’“™Œ–””¨‘•Œ¨’”’‹•¢””’ˆ©™–’˜š‘•¹“‹—œ™¡“˜’˜¢Ÿ‘™—”’“ “‘“’ŽŒˆ“™’“™’Ÿš•œ•–”£¡“¦Ž•ˆ¦“•Ž“¤‘““™–Š“˜ œ¢““”š—š—š’Ž“¥••—”••®Œ““Ž‘—Š˜˜˜’’‘˜ž‡Žš”–˜”””•’‰™ŸŽŠ’—˜“œ––’’‘‘‘—•˜‘’”–˜“‘™–‘Ÿ–’‘’‘“›™Œ•’‘™’’‘—’™‹–‰•š”’˜˜›•¢”™š“¤’Ž’’•ˆ—–Š•“’ž‘–•’š˜œ˜•Ÿ’‘”˜“”ˆ‘”˜‘’‘‘‘…’—•Žœ‘˜‘–‘–’›œ“‘’“•“”£•“˜’‘‘Ž’—‘™–”‘’˜•‡Œ—˜˜—“‰•˜‰š“™’˜†œ‘’’›—™–’”‘——˜–—Œ•›’•’”–“’•—ޑЖБ“–£’‘“–‘™’“”“•’’‘‘™”š˜—™–”“œ˜š›‘—š“–˜•–”—’—–œ–’𓒓𖕉—•˜Ž’Œ’’“•˜—™š•—”’“›œ’’™“”‘˜‘•“š•——˜™”Ž—˜›‘’‘–”•—š˜¥˜“’œ“ œ“™’—˜”˜˜‘™“œ•˜ž•œ‰—Ž’™ ”•“š“•‘›‘“›–•”“”˜’——–’Œ””›’“““—’—–“”™—›‘›’••“˜•œ• ˜’—”’™ ’—“’™–›–š‘“‘”œ‘˜“•’Œ’”’‹—˜–’˜š–œ‘œŽ”•š›”’’“–™¢•˜“™•““–’’šŒ››˜‡˜–‘‘” ˜”“’•™“–••–›‘‘–‘’Ž”—•šœœ ‘——“’›•’’œ•š›˜‰’‘˜™“’’›”•™¦–Š•›£•••‘’™‘•”››†š“›“ž‰ “ž’›ž•Œ•”–‘—‘Ž–•‘“”˜˜““”’¡š¤“ž’•—žŸ—‡™Š””™—–’™œ™™”£“–“‘”š—‘”œ’‘””¡“–’—•›–‘“¤“•’™–™¦¡”¢—“•”¢“ž’“•—“–’œ“’•—šš”“•——™‘‘£™’““œ˜Š–š“’‘ššš—Ž›˜—ž–™”˜’™›Ž‰›•‘—› ’”’’•˜’š‘š›–”™“›“‘“œ•“””›–‘™š˜—‘’’’”“‘š’›™”‘•••”˜“‘“’’˜‘–Ÿ”˜•›š”•œ™š‘—˜‘ޓ𒖖“–—”‘—’œ’”  —˜“’œ–“”’“’š“–‘™•’‘—”–š‹““™”›•’š‘˜š”’‘’”–“œ–¡›™™’—•‘‘–”¢¢œŠ•–”š’”™‰’•Ž•”•”Œ”šŸ›’—“–“•—‘š‘”—‘’š‘’Š¦ž•“”ˆ—”—™“•Œ—’’’ ”•…¦ ”‘’”¤“• ˜’—““ž–•˜§–•£ˆ––¢’šŒ•‘’ ž”—’’‘”’”›‘ž••Ÿ–’–’¡’•—ŸŸšŸ’ŽŠ¡’’§ž“‘˜“‘’ƒ–›šš‹£•u ˜˜§ ˜‘­•••›“ž”‘›‘’–—”’›–¡”‘‘ž¢š¢”˜Œ‘”•‘–œ’‘“—™Ÿ“—™¡–“ŽŒ–ž’…ƒ•–ž’—¥—‘‘“’“‘“™Œ˜žš’•’’ž“˜”‹¢—“””£–ˆ’˜••ž“›”‹”‘™— ”™˜™‘£Ž’™‘““—Ž“œŸŽš›œ“–«’’’“–¢”‘–”“’’–•’’Œš‹˜“’”Š–”“˜˜’‘–•—˜•’”’˜•–‘Ž’‘’‘—‘”—•–’™•”™’‘–’‘’šœ““’‘•“’“’•“‘—…—”•—””“‘‘“Œ‹‘—’”“’”„¢‘“™Š’”‘Œ’””‘–—–•”“—–”˜ž˜Ž’–™•“”’™•™™—›’“𔕙—”–›™™’™’•˜‘‘•’•’’š—“‘š”Ž’’—˜”’Ž•‹•”˜—’–”•’“”’“š‘š˜‹’“•˜™™’–•’•—‘“˜““‹“‰˜”•˜’–••“‘Ÿ—‘“’––šš˜•–“”–‘Ž’Š™”“‘œ”‘™¢™—”“•’›‘•‘’™“˜”•‘“–““”•’–“’–“žŽš““•”’šŽ™•’™‘““¬—”“–“•’•˜“’•‘˜™ž••™”—”•˜‘”’‘’•‘£™Ž¢š—“ ”›“•ŽŸ“œ•Ž“‘›•”–‘¨”›“‘“œ•““˜––𢛔‘’¥””–‘’“Ž˜“™™•”—“œ“‘’”’””–“˜•“”œ”Š—ž›”•”˜“—‘‘”˜’”š”˜–˜‘“””•–•—‘‡œ“˜“”’“–“˜–”œ”™’”–™“”’‘’›Ž’Ž““’’Ž–Œ’‘ކŒ‘Ž““”‘yŒ•‘”‘Š–’‘““‘‘“Ž’‘’““Œ˜‘‰”’‹”‹’”“”‰’‘”“”’’“’‰‘‘›Ž“•”™’‘‘”’˜’’’Š’“Ž“”˜“—••ˆœ’“Š’“Ž’‘’’’’‹Œ“‡‘’’š”’‡’›–‚“‹’”ˆš’”–”ŠŠ’‹‘“™“‰“’ŠŽŽŽ‹’‘—’‘’š’„•”“‘’¤•‘”˜’’ ’Š˜’”“ŠŽ‡”Œ”—”““‹“’—†‰Œ“‘—•‘‹’“‹‘“˜›•›šœ’“’•’•“’¨‘‡™–˜‘™šœ˜Š™©™›–™”˜š–—’’”–˜’’˜•|š˜˜™ˆ‘“—š‘”–™“›’––ž‘™–’’µ’“‘“’œ•˜”“–”˜œ› ˜‘«˜•˜“”’œ”š™”{œ—¯“¢Ž—£¨’“•š“˜·™’œ—’•”ž–•’š›˜“‹’¤•Š—ž™™žœ˜š‘“’™˜›’š˜š’™ ’’”–šœ›ž—˜™’‘™•”œ“—••˜“ ‹˜–’—–œ˜˜˜œ’Ÿ•“”’£¡•‘—•–‘“‘“¢’”“¤¡ ¡—ŸŠ¦™˜›–š–ž’“‘š‘ž’š‹”’’‘ˆŒ™›˜’š‘–’›š‘•™”–š’”–’”—•›™™’’”’“ކ˜Ž™š˜†’”Ž’™˜•™›˜›¨—œ‘’˜‘‘“’‹—Œ¬“”“›‡—Œ‘£žž˜Š£“”’Ž•”–•–“›—˜“œŒŠ’˜Ž’›Žž”›˜”œ™–’’––™’™’—˜”Ž‘’š–˜‘ž“™’–Ž”’‹‘ž–˜›“–’—““‘””•š“—‘‘‘œŒ‘Ž—•’’šŠ›’•Ž”››‘“˜’•˜Œ•‘Œššš”‘›’‘ŒŽƒ“‘—”›•›Œ‘‘•˜‘‘’Œ—–•ޤ˜’’“Œ¥Ž™—ž§”Ž“‘“œ‹¤©“““™’‹œ–“•’–˜’‘—•¢“‘”“—’’’ ”‘šŽ›–•“¢¤Ž”‘‘†“’‘Œ’¥•š–—”™˜™¤—”£‹‘–“˜‘’˜ª‘˜–š”˜•’‘˜žž~’“’”“ˆŒœ•’˜‰Ž”“’˜““œ›–œž“¥š“’— ’ž—–ž™“•’™™”¢’š•‘‘”ž‘’¤••©˜’˜•Œ–“—“–‘š¢ž‘—”¡‘•••–™”–˜“‡•’’’––—™§˜‹… ‹•’—”‰’’ ”˜Ž˜š’’’šŸ’žw”™œšƒ–Šr”ŸŒ‰“Œ—•”˜–›Ÿ’£•‘’‘•z””ž›‰“œ¡˜œŸ‹–Ÿ ‘±ˆ‘‘–›’‘™’–™’¤‘˜˜Š––Š’‹›”¥”‘—ŽŸ“˜x‡¥’ ’‡˜‘›Ÿ‘–™š‘‘‘˜˜˜š£‘˜’•—œ‘ œ¤Ÿ•‘š¤”i Ÿ’ž›”‡‡’—•£š‘’’•‘•—Ÿ •”˜Ž‘†”š˜œ‰Ÿ•›’Š¥—ˆ’Ÿ ”›•’–„œ”›””–’—”¥¥“–‘•–Žš˜Ž™‹˜­Ž’—•›•¢œ‘’”¢”‘—ž˜’“–›––œ˜šŠš™™“‘›ž—’|˜ž””Š™–Ž–”•““•“’’–“†••š —†’™˜˜’žš˜”–—œ–“‘š’’Ÿ““’Š’¡™‘›’–’“œ²•”›•”——“–‘—žšœ„š‹•šœ“œžš’•ž§–’‘’Œšš•”ž§š—’žŒ‘›‘Ÿ“››™’”“™˜•˜ž“–”•œ˜’œ“–—Ÿ‘’——”žœ˜”œ’“’š“ •›‘””š•’œ˜“™›œ’™™Ž“¡™™“““š”ž›š•”™šž’•’‘–¡–”˜•œ••“Œš’“•—–ž›˜–š–’’™•˜”’™—Œ™•˜’œ– •‹˜›š˜—–™–™œ—’•š‘š—š˜›™ž’˜œ™’—•™•—”’™——–‘’’“’‘™’–—’˜“–˜–”š•“—˜•˜•–“š–—–”–˜š—™‘’Ž›’ž™š•š˜›”“˜–š™’˜‘Ž–’‘™•›˜’”’•›“ŸŽ–‰•š‘š—’—™——˜’ž›•—”‘ ’—””’›‘–—™˜š˜‘‘››–Ÿš”™™•”‘˜•“›•š”˜›ž“›š”’’™˜–˜˜š›œœ›’¢’“–™–œ™——ˆ“‡—–––•˜˜’’™•“‹‘•’”““–ŒŸœŽ–•‘–“š‰––”œ™•–““’—‘š”–—“’•’˜”–Š—‘˜•“’“’“‘’˜“™’•‘—”“’’‘”“’”’”’•“œ•—–˜“ˆ“—–‘œ““Š“–š™—Ž’–ޕД”Š“˜’”‹Œ•¤œ“™“–—— ”–’—’”‘œ’ŠŽ•—“™¢˜œ”—”˜‘˜”““‘‘‘•”’“‘›’••–š™™“•’“ŽšŽ™š••Ž‘™’–““Ž•˜Œ•Ž•’–”•—’—š—’Š“’”—œˆ•’˜Ÿ““™“––œš”’“‘”•—Ž’‘Œ•’’””‡—›‰”†““•’”•œ‘Œ‘ˆ’’’“”•””’–‘”‘“”‘‘™——•’‘“•‘”“”‘™–”“‘‘“’•’’’’•”–“Œœ“’“•—˜œ’Š“’“““’’’–†—“–”˜““¡‘”“–‘’Ÿ‘”““‘“•—“–‹–““‘–”–‘™’—”–“¢”¤”š—š Ž’—––”•‘”’”™–œ’˜“˜–“”“”—–“’–“ŒŽ“ •”––“”Œ’–’’†Ž”’˜š’™‘•–“’•”–•”Ž•”“›’”’’”’œ”•Ž“••’¤—‘“’ŒˆšŽŒ™‘’––’–ˆž„Ž›’•¡–‘††Š•””Š–’ž‹““’—Ž’•’’ޤ“Ž‘¡…”‘‘˜”—“”¡œŽŒ˜’‘z”’’“’“˜’™”‘Š‹‘”™”—‡œ•’’–˜ŠŒŸ€‹£—¢’– ”Ž‘ž•“žœŽ‘„„œ–v„“’‘Ž™ “ ’Œ¢Œ™–•‘’ƒ•–ž•Œ€’‹Šš‘“–’“‡‘—™“‰šŒ‘’Œ—Œ“š•——–ž‘’‰“’˜’ŸŽ—•¡’…˜’•“›‘އ’–­¢’”’”š’‘™˜‚•’“’–œ‹’’›”‘•“˜˜˜’’’’––•ž™”…”›–‘š•™Œ›˜š–ˆ“—šš–•š‘–”“’˜‘’™•—•‘˜–˜’›š•“”—••˜• –™–“˜’’¢•“‘˜’”•“–™•˜˜™–™Ž“–•’˜’”•—“‘’}–’Šœœ•“’—¡––‘’’–’“—“““’“Œ–˜’•’——“–™••”—”’Œ™’‘—–Ž—Œ’œ”™—’‘“‘“’–•–––•–˜’“‘–——Ž–‘’˜“˜˜“•“˜–—š “’›˜•‘“›“𔓕–œ—¢‘’•Ž–’””–’““’’•—”•š’’“”™’–‹‘•“˜““•’‘”“•“ž–”—š””•‚‘™””“•™˜•”‘“•–’“””†––’’’™““’’•‘”–•›š“““‹““¤˜““”““•—‘Ž“”‘–˜•™•–’”•—–Š”œ›—œœ—‰Ÿ›‘™“˜‘’‘‘”“”–‘—•˜”““’š˜˜—›“‘•–“Ž—•’“˜“˜š£¢•“˜“––—““‘’–––”‘“——““˜™•“˜•Œ——˜”–“¢•š“”’’œ‘–”‘’”’”–’“’”“—™Ÿ¢“‘’“–•’–“—‹”’–••™—•““’’”“‘‘–’‘’’“‘•—Ž‘œ’‘œ•’–œ’–•–˜™š›“”‘™•’›–•𔓒˜–›‘š˜“˜’•›’’“Ÿ’•‘‘’’“‘Ÿ’‘˜“˜•›”Ž’Ž”‘¡“ž’“Ž’”™œ•’‘™š‹™‰‘˜“ˆ‘‰•”Œ—Ž‹““‘”Ž’“”Œ—˜•‘˜‘—–’’—”—”—™ •’––Œ“—’’“—–’™˜£’’‘›““›•˜Ÿ›‘Š—‘‘‘“˜‘Š•˜˜•”‘œ–”™Ž“–—ž”–’“–‹’“’˜•”™‘™–Žˆ“‘—‘“Ÿ’•–”’”Ž’œ•š™–’’’–—£¥–Š““‘”Ž”‘”˜–•›’Ž›–—›ƒ”‘—Š‘””’”ˆ§š”’“™’’—š˜”—•’‘—’—‘’”–‘˜‘—’’‘“’’¢Ž“’˜’””ˆœ‡“”•™š—š—’Ÿ ‘¨’”••‘›| ‘£Žž’Ÿ™“Ÿ–“𓤖’“—§‹—‚“£—’•““‚‘’’z“’›”’–šž “”“¥™—“†‰‹’™“™¯”™’“œ“”““••”””‘“•’’š™‘˜’—Ÿ™Œ€•”žš•›“—Œ‚¤”’“¡’š•Œ”’š‘™™‘˜”œ’›“’–”™’‘”‹†”Ž˜”–”ž“’“”œŽŽ›”–’’™œ’“™œ”š›œ—˜šœ’‘—¢˜•Ž›¢”–˜”š•™šž›“š”’’ž›”’Œ›‘ •“‘”—™—š‰”“–›—’’­™“‘œ’–——“Ž›—™—˜—”—‡£•’’¦’š’”––“°˜œ–‰—“‰’’Œ•‘–”›“ ¡Ÿ—šœ’£™“‘™¢–“’š“—œ’—™œ™—‘Ž”˜“Ž•›Ÿ’’™—›Ž‘“’•–’——”–˜™ž•’‘š–™›˜—–•š—œ” ••Ž“’™“š—˜˜’Šš““–‘•”‘–•™”‘‡‘Š’”Ž–•‘• ™“•˜–“˜ ’’”“–‹‘™’’““’‘™˜‘’’’•˜‰›‘’ŒŒŽ“—’“”•“”‘“–’’’“’”Š˜——Œ‘’”•“—‘’˜ƒ”“’“—‘’Ž‘›“—”’šŽ‘“™™•‘”’–’Œ—””Ž’˜“˜Ž˜”•Ž™ž”œ’“˜“’‡‘”’‘’–—ŒŽ“‘—“‘™’–”‘‘—’™›•“‹“’–••‘‘–“’š“”œ‘Ž”’’‘“’’Ž•’’’•‰’”Ž“’’–’•ˆ–‘“Ž”•“˜’–Œ–•‘”–“Œ”’—–’š’“™”œœ™™”“•—’’“—›‘‘“’”œŽ–‘’“Ž‘‹šš‘š““šŒŽ”Œ•–’”˜’ŽŽ–Š’”’’’“œ—›“Œ“•’‰—š’—‘••‘•Š‘™Œ“’’’š“’’”“™’“™”™—–“–œ—–—“¢“–•–”˜‘‰„‰‘““’’‘’Ž—‘”™”“”‰š’’“™‘Œ”’“Š Ž—œŒ••“´•”“˜’˜‹“”’Œ’š‘’Ž•“—˜“›‘’”›“”ž‹‘‘”–Š“™“‹‹‘•‹’Œ”‡–œ’“‘––˜›˜‘’ˆ’’‘”˜“’•™“™¡‘““•››˜’’™™““›œ™—“’–‘—“›”——š‘’””—””™¡ž—™œœ‘•˜–’‰Ÿœ”—’™›’’š“™š’”—š’‡–—“’š—š”œŠ—‘ž—““ •“’—“’–”—™Ž˜¤——•Ž–š¡›˜’˜“—˜–‘“‘ª”›˜‹‘š‘—“ŽŽ’”–¢’¡¥™•“—’‚“““”˜“‹’“”Ž‘–‰Ÿ˜™Žž—“Šˆ™˜’•••›•“”ž’“”’•—’™’“’š–‘”’™’“Œ•”¤˜–š’‘’–ššŽ‘”—”’“”‘•˜–‘–“Œ“™“‘— •—Ÿ”•’š•—™›œŽ’“•—•–š˜“’’‘–•”›žš˜‘œ™–•“Žš“œ•–•—œ””’™“•’“’“˜’—”•“™‘–•–’“˜›—•ž’––’’›•’‘š’“™–”•š›’‹“š˜•“¡–– ’“™™Ž•‘¡™›““–’—•’’‘Ÿ’““𛋓“•’”™”‚˜œ“‘™™ž•‘‘’’“™˜—˜Š˜•”“£’˜”–œœ’’™–’’™’‘”“™˜˜œ›•›”‘•—›—™œ—–”—™“–•“•“”𙕓‘‹“—–’‘’™›•“›”–Ž”’›‘“˜—‘—™•–“Šš‘–”—šŠ’’”šŸ˜—˜š•–’’•—•ž™”˜’›‘•’’’˜”“™š“™••—›Ÿ–—“˜’•‘’‘”Ÿ“ž•”—–‘™œ”›ž—’“›œ„œ•‘“–’‘š’™š“”™••„•”‰›‹’‘™”—–™–”˜•¢”œ“’ˆ—– ’¡—›•‘—˜–ž™šŒ”’’©Ÿ”‘”’™—–“¤‘—š””–™”—”—‘˜š–™—“˜’–’’“™–™Ÿ””‘““’•ž”žš‘Ÿœ”ž˜“““™š“›••›‘›“™•“š—œ“–ž–’–’”›™Ÿ¢“—œ§–Ÿœ™—‘¨¤’’——•”™”“’“’“•‘˜’’–ˆ‘—”””“‘£’”–““Ž–™””‘‘•“–‘𔑡““–‘“””•“‘›œ‘—œ‘‘’’”‘‘’”’—‘Ž™’’™•Š–‘—•“š•›’’”’–•Ž—••›“š “›•˜–‘Ÿ“š”“–š’”ŸŒ’”‘‰‘ž”›“•š’‘““”—™†—“‘”Š”’“ ‘“–‘’˜“’•’““‘’•”’‘”’••ŽŽ’˜Œ’‘““˜–—•Ÿ’‘—’“””““™–’“–’’“—•›š¢‚’—“’“”¢“’““’“«”™š’’™‘•Ž¬Žš–•ž—Ÿ™¤˜‹‘˜—“˜‘•›—’—’’’“‰•—‘—’’’¡—‘”“”— ‹Œœ˜˜’’š˜“‘š’š–¢—œ•–“‰š•‰–“’•‘‘“—‘™’£u ‘‹“žœ‘••—’•ˆŒ”™’—’›•Š–›˜‹›–’”£“’˜“ž’˜—Ÿ’˜•œ”‘¯‘•žžŸ¡Œ’‘Œš˜Š‘—“š‘•“•“–“ ‘“ˆ”’†–ž™—•—Œ‘œ’”¡™”™”’…–’“™’¡Ž£–‘™‘‘‹’’™›–‘™žŸŒ¢Žš”“’‘”’“‘“™“’”’““““Ž™œ‘™Ÿ•™”’–“ŽŽ”Ž”Ÿ•“’–”““‘““’˜’—‘“’˜”˜–’›‘’’’𔓖–’”–’‘““”’’’—’—–Ž‹’•“š˜––’—“–’œ”’™œ”§š›ž›’—˜Œ™““›žŽ”””“’”’’‘Žˆ”““’’’’“ž’š˜•‘˜“•š—”•’’’‘•œ’’””Ÿ˜’”‘“˜‘œ“’—’Žš’‹”–š’œ“”‘˜“’’“”• ‘“™—’˜“”‘‘›šœ”‘“”’•“™“‘˜•˜˜›™“—“‘““ˆ”““——‘”—Ÿ—’“˜—”™Žœ—š—›“–‘™’––›ŽœŒž˜™–—–šŸ•‘ ™‘œ–‘””“š”’‘•’“–™™‘–—–žš’’ˆ•“‘’™™˜™œ–œ’Š™¦‹˜–‘›“’ —™˜“𢢙œ“•’ž‘–Ž˜˜š‘‘–”š‘—š–—•—œ“‘’——“™’™—š˜‘•™›’¢˜™’›•—š›’˜–—Ÿ”Ž‘–‘˜œ›——”˜•˜‘’™œ’•›‘‹™•–™’”—–›“™¤œ–š˜™•†˜Ž’˜’™•–š—˜™‹–•’’‘‘••¢›™’›“™–’œ–Œ’’•””•“’’“’“›™•˜–Œ’’••–’‘‘’‹“—“•—™•ˆ’’’‘‘“’””““‹—’˜’™“š˜’”•”š•Ž’–’’—š“’–“˜“Œ’›“‘˜˜ƒ““Ž’”–Ž‘“”’–™•”žŽ—”Œ‘—‘Ž“–˜–”‘’”‘“‘އ—”Š—’“•™˜”™“š‹Œ—‘‘¡Ž”“’˜˜”“šœˆ•˜““””“’“ˆ”‘–’–›Ÿ”–“‘–Ž‹•”—•“•’–‡“—‹–Š“”™’‘™––‘‘’”œ”–‘•“’•““˜‘¡”‘“”“’Ÿ˜’“”•”˜¨‘™”‘“““—“˜—“š–‘š”š–”˜———š’˜˜“•š–ŽŽ““”——”“œ•™”™—”’’™”””˜••’˜”˜“š’“‹“’•“•š•“˜’˜•—“”™•˜•“›”˜•˜“˜™¡™”˜˜–’Ÿ™›“˜–Žˆ“—’‘›––™“–“šŒ‘“’˜“ Ž”‘™‘‘—˜”ƒ’•‘”Ž‘–™“œŒ“‘š“™“˜˜”“•™š‘““’“”˜™”˜‘‹’••’Žœu“’‘–—’›”“—‹““•”“˜—”•”ŸŽ’™’•’™”•““•“’•‘›—”‘“““Œ“’—Œ“™›”‘’‘’˜‘—›˜˜’—™‘“—ššŒœ–˜’‹‹š”‘–“’“•‘ž‘––’˜–•ž‘•”›‘’—–––——™œŒ’‘‘’©’’‘™’—˜›’—œ••™›‘ž–œ—– “š˜š‘™–“š—™˜˜•“”Ž¢‘›‘––”—”‘”–“Ž” —‘‘”–’“–’‘“ž—“˜’—‘‘‘•–”‘™’™••‘˜‘“’•“’–š˜–™™””—‘“œ–™Š›“’”Ž‘—“’œœ’“—•˜’”œ¦™›Ž”“˜•›–˜–™¡¥›’”‘‘œ˜˜Ÿ•’‘•“˜››£Ž’’–›ŽŸ›¡’’Ž’“ޔ𖖓™Œ–‘’ ˜™”’—˜š—’•™’›’‡•’’“œ‰”Œ˜’““’“œš”“‘˜œ˜“‘‘‘™£’’›˜’’›“’”‘œ’–’š–žwš–•¡“¡”••ž™˜£› ”¤Žš“—“›‘’›“› –”˜Ž•Ž”‘Žž›–“Ž’‰—Š›‰—”™˜–”—“¥‘™•’’ˆ ”š’’’Ž“—‰˜Š™–š¡›’’š•˜››™™““–¡–““’”•˜–‘š”¡œ’š‘Žš‘‹—’”¥•‘š‘“Ž‹’–œ”¢žšˆ“‘›——’’¦“¡€‘—“”’“’Ž–Ÿ“‹“–’–‘˜••Œ‘–“–—’’—–—˜“˜“’•‰‘•›—’Ž–““š™”“œ—š“‚ž’’‡’“‘‘“”””‘›™ˆŸœ™–”•˜Š“‘Ž’Ž•”œŠ–ž’–™‹—…›’Ÿ”–‘–—š‘™•˜’”†‘’”‘‘˜’š’•˜ –£•—’˜˜–•‘™•–’’˜”˜—–““’”›“—’˜‘•’•“š’’“•Œ”•“Ž’”ž‘•“˜’—•—œœ‘›–““’“›“•‘—–”“‘–‘‘’—ޒ𔛆“’‘£˜’’ ”Œœ“•‘“™“’““””–šŒˆ–’š’”’¡˜–’’™“™ –Ÿš˜™—Ž’•’’š––“—••‘“œ““•™”¡”Œ”‘•–’’““’’˜’‹šŸ‘•—”’Ž•ƒŸ“›‘—“…•–‘”˜’ ”œ•—™”‘š–š’ž’”‘”‘’“‘œ‘—š’•’–“œ¡Ÿ™’•“œš‘š˜•˜“—‘…›” ¡¤’†“š“œŽ‘“ž’•˜”‡‘˜˜œ”˜’’Ž˜š›œ–ž“–™ˆ›|’™—œ–—œ•¢“†““‘™™’’˜›š”’’“’Ž‘•œ›“š–“”•™’“Š“—ª”‘£’’––™’œ“‘§“˜•“—š’’”£•™˜’‘”œ“™˜¢Ž‘”™‘‘•¦œ•Ÿ’ “˜”•’•ž’—“œ›šŽœ˜™‘“Ž—’‘Ž’–——“œŽ—‘”˜§”””—”•œ—”“•“”ž¥—’™”—˜–”‘˜’™•€—””™”Ÿ’”–˜‘›“—›’›’™›—‘“’˜’–”²”›” •›”’‘”››”’’“ž’••—›—’—“–‘”’”Š”—•——‘š‘š“–˜’’ž—š•š…–Œ‘”“”’“‘›‚š—’’”‘˜”–““—‹˜—–š”˜”’’“—žzŽ’’””Ž‘ˆŽ“‘––Œ–›r“‰’”’–”‹™’”•“Ž˜’’’’…‘“š‰’Ž””“–‘”Ÿ‹˜Ž“’’’“‘’’Œ’›“©“–”„’•’‘‰š’’”•™””œ¡—”’›ˆ¢—ˆŒ’’Ž”˜‚Œ’Œ“‘’‘«•Ž’–’ˆœ’Š˜““‘•›“€’”’”“—’“••”‘’’–‘““–‘š—•‘•Ÿ’’“–¤’•Š”Œ“’Ž®—’“‹–™‘Ž‘—‘““’”’““’…–“‘”’”‰–Œ‰ª‹Œ”•——Ž’“™›Š‘™–‘’’œ•–£—¬—–™‘™“™’¨’‘œ‡”œ™œ—’˜›“’—‘‘””¦’”›’’¡˜Ž“——“‰Œ›•”Žš”‘’Ž•“‘•’•—‹“—˜••–šš}’’“•—˜“†”–“›™”•˜“œŒœŠ“‘Œ‘•‘˜™¤•“†’“’’ŒŒ—•„Š”’’•—¡”’˜‘“’”–•“–‘“—´•–‘—’—”’–“–˜š’’–’’–”˜˜–š•”‘‘Ž™‹‘š”˜–™”““Ž—z’”›š™Œœ–––•“•’œ™ž‘”“‡‘—’“™’Ÿš‘™“Œ…“—’—”—‘’•’›‚ŽŽŽ–”””¢Œ“˜¡““•—‘–š‘™•’’”–“”Š™–˜’”•—“—““˜€Œš—‘”—“’–”—‘–’œ“Ž™‰ˆ–‘““‘•”“•”••—“Ž‘ˆ“ŠŒ‘‚ŽŒ|““–•“šž˜™‘—Œ‘™Š–“‹š“—•“’•Ž“™–™–’””–£“‘––“—˜“››œ‘’—”’›˜–›š›•“’Œ”—𔕓’””———˜—™”’“”‘›’™‰”™™–’œ™”…”˜‹–Š‘™•š“”‘Œ’—“•‰˜Œ”“””˜š”Ž“—ž›’——˜š”¬œ””’——•›™š“’”“‘“•–—œ’‘””‘”‘“•‘“™–’“’•“š”ž•“›“—’‘“‘“˜’•›Š’‘’•””‘••š’“—”–”“““˜““–“––˜’–˜“˜—•”‘˜‘’‘–’•†’ž””•”•”’–“–”—”“’”˜‘›œ’•™”“’““•œ”””‘“˜””‘ž‘•š–—••“•‘••““Œ’‘ž”œ“•Ž”‘š“•——“”‘š–•“’’‹™“”˜™’’—’œ•”“”’’––š”’“”™–¢š”Ž“•‹•“”“•—–””›—”œ›™•–›˜“””˜œš‘“•”’’–••“‘ƒ‘’¢œ’š”œ—˜|™•‘””’•••”“—’—“”‘“š–•”‘‘—›•“•’˜Ž›—›—–“’’••“‘•“ž™–‘“Ž“’““}’—‘””“’“’“™“‘˜¢¦ŒŠ—ŽŽœš‘’’‘—ž™•‘”“’‘˜””•ž”’š—–˜”™“–“Ž”‰š”–—“¤›“˜˜–™“•”š’”’—–•—–Ž–“𔕠’’”Žœ™˜‹”™˜–’”˜—“’Ž’–‘’…˜’˜‘‡š”›™‘“’—’•’’ž •›– Œ“•–“’’”Ž’’š“‘Ž’š –’’›”™•‘‘“—”“‘˜‹›‘’•Ž˜¢”˜’–Ž’“’™˜‘’™˜”˜Ÿ‰’—–’’”˜’’•𙕋’Œ”’’˜‘’‘•’‡—–𢕕‘—•—”–•›’ ‘”–—•—ŸŽ’˜—””‹Š“’›–•œ–˜Ž—“’–¤‘’˜‡’Ž’‘™Ž’–“’’•‘“›‘’“•…˜•‘‹“’œ›™’Ž’ž‹’Œ•’•‘“–’•‘‘’˜›Š•“–Œ˜“‘‰™—’’–‘”—š“”—Ÿ‘——›•”š‰ŽŸ‘”‘““ˆ“‹’””•š“œ™•—¡’’˜˜–•”””““’‘•˜›˜”š’“’•”•’’–˜–•š—–‘’“’““–’˜’”–‘’—‘š‘‘’—™“‹••“™“•”‘–‹œ–——”““˜”““‘“™”•ˆ’—•–—“‰“›••˜‘’–‘“–’•‘”œ’’–——™™’œ˜“‘”’™•š™–’“”‘š’““—›–Ž”‘’™ˆ•”—˜˜›ž›““”𔓒’“––“•“‘š’’•š–˜”—“•“’—“–—˜“Ž’•ž—–š“’˜•’™ž“‘’”‘‘’“••”’’ˆ‘‡“““’’–™•˜•’Œ’˜•—–•››’““–›”ƒ‘–’“’’“”Š–’”‘–’œ‘™ŠŽ––†”””—’‘—–Ž””˜›–•’˜—“””‘—”’Ž—”“—Ž’”‘‹••˜’’’˜’“’–’”–’”ˆš‘••¢Ž‹‘•••“•”“‘œ˜œ˜“‰‘–’˜‘¨•Œ•’’’•š•”’’–”’—’—’¡”——•™š–©œ•–––”™’–”›˜‘‘’Ž”˜›“—•‘—’’˜ššš•†’Ž””’”š•‘‘š˜“”‹’”’Œ–Ÿ“’””–’¢——’““‘™”œ”“—”›’’—•˜•”˜‘“““•’“œ™’’’‘˜Ÿ§‘—œšŠ“”˜’–‡š’”™¤“’˜’”’“’—š”˜“’’•”Ž‘’”˜‘’™—“¢’˜ˆ“’š”Ÿ“‘’’““’Œ’˜‘™™””™“–˜£‘’ “•”•¤‘”‘’¢›‘‚Œž›••”–”Ž’’”¥ž”˜¤““‘““–‘’–“™‘’š“““•’ž’žšš–“•œ“Ÿ¥’“”’’’›““– ‰’™‘•™˜›˜˜—“”‘’’˜˜ –›ˆ“’‘‘‘”£–”“’˜›’’—‡’Œ’‘”““šœ—œš““–•““‘’™‘ž™–“’‘“’’šš’™˜œ’’–˜”Ž›–’’“˜œ™ž–•–”“™—––’”™Ž–œ›‘•––œž•——’•‘“—™’—ŽŽ’Œ’™—›“˜–œ™—¡›‘•“™™’’¨–“’“–˜”–™‘˜“Ÿ’ ˜–ž›Ÿ“«“”™““–œ—‘””–“–”‹’Ÿ—˜—–˜”¡’š˜˜Œ˜”ŸŸ“•’–˜›˜’ž’”“’—‘•’•“’—’œœ’‘”’Ž˜™’–’”’˜™“–•™œœ‘’“–•’—•™“˜““›”™”˜Š“—•‘£“‘Œ–Œ–“’—““–“˜š–¡“’’“–’‘“““™™–™–——˜•—‘’’–“–”‘“–•““’“•—˜“𙂖’˜’›“š—’Ÿ—”’‘’””’““–—’™›‘’–™‘“•‘‘•‰“‘”–“˜’’—•“’™””’’˜““’’’™™“—˜—‘“—˜—””™“›”“‘™”œ“Œ“ˆ–›’••™š•œ’•š“’““•‘“‘¢‘‘’’š””’’’’—‘˜—”™“—’’—™““”“”Œ‘™‘““™“š“”’”—™™™”’’“‘›”œ“™’’“•““¢—““’›š”‘›™’•–•’””š•“•”’–”‘’™’’šš—˜›—”’“žš˜œŽ˜’“•’™”…’œ”“’”¥“’–ž™–“•‘›‘—™…˜£‘”Ž—”—‘“”˜›’—£’š•”“š˜™“Žœ“‘–•–š’–ž˜’’‘“’’’’—’œ•”•–•››’”•Ÿ’œ””Ž‘ž˜ž–’“——™™•”‘“”—›“•–Ÿ–—‘Ž’‘‘œ•’˜‰Ž™‘“—‘•“•’–•™˜“™”‘˜•’“ž—’–‘“—™’–“‘™’’”“‘’ž›ž—™•’‘š“—˜”š¢‘Œ’’””’‘˜˜“¡ž‘”•“‘Œ˜“’‘‘˜š”˜•–”“•“”“‘žœ››’˜—““—œœˆ”’“•Ž˜–Š“‘šš’’š˜ž”…•›–“”—“ž‰”š“‘˜¢”Ž—”›˜˜š£—š““’’™—’•–£›˜™–˜““–••—˜›Ÿ†’’~—“‘–’Ÿ‘–˜‚—˜–€›˜ŽœŽ—‘–˜–—’“’”£˜˜–”–‰’š˜›“–˜‘†‘™’’ ”•›Š™’’™™–›’Œ’›¢–¡”š‘˜›’‹“š••œ¡Ÿ˜™“˜™›¤™‘•’”˜“˜•œ˜—”’˜’œ–’ž™Ž ›Ÿ“’–•‘’¡•’Šœ™•’“”™‘•š›•”š˜Œœ™“˜’“”Ÿ–Ÿžžˆ”ˆ•—˜š—’’“‘•—•‰’”™•’’–˜’›’•›Ÿ•Ÿ–Ÿ“”Œ™˜’ –Œ”‰š ’”žš•ž˜’ ”‘‘•›•–”š—‘—›—‘˜¤ž—“—œš­”˜’’ˆ’’‘Ÿ’¡•››˜›“’ž˜—š•ŽŠ——–œžœ“›˜•Œœ‘•’Œ‘‡‘Ÿ£•”‹›Ž‘“•–“›™ž’‘™•“—‘’’“”™œ™—¤—™—™•š“’™•”’š˜“—“’›—‘Ÿ˜šš“˜—‘–‘’››•œ•ž••¥‘—“‘šš“š–“’œ˜‘’“›š˜š˜ž’“œ™’–’“›•𛕑¥˜–¢›“”¨¤’’”•“”””•”””‘‘•“’”””••”“••“•’“””””“•”•••“–”•”””“•‘•“–’—”•““”–•”’••—’“”“””••””•”‘“”“•““‘”’•–“–”“””’””’”‘–”—”š’–”’””’”–”••••”“””“•”‘˜–“”’“”•”””“–”’”–“”””“‘“•”••””—”‘•”’˜””™””’‘’•’””“””—––“’•Ž•••”””œ“‘”•’”–“š”Œ‘‘”•”””’–’”•—–””””‘’’““•“”’•””–”””–‘—–‘––”””“•’––‘Ž••”•••••–”––•–“—•––––••”–•””’—’•““—‘•”–•’”’–”–’–––”••”””––””•”“–•••‘—•–œŽ’Ž•’•“–•”“–”‘–‘”–——”•”‘—‘”–“‘–“’“–”––”–––•”””’–•–”–”’–’“’•–’”•””“••––’”’—•””“•”’••’—•“’–•‘””•˜““—’–•––•––”’”–”“––”””•“”–”“’“‘––‘”—”Ž“””“•—‘–™”—–––••—’””’–“’’–“””””””’””–’–„˜•—””“•”Œ——•••“’•—•–”•’”••““”•Œ•’•”’’“”—’”’”–’”••“–—•“““›–““””””–‘˜’•‘••’–““–’•”™”””“”‘•…𔑕“’”˜’“•““–“™”•”•–“”—• ”™””•—••”–“•”“•”—Ž•—••”•’“––•™š”’–•”““—”“•”—•””—˜–“–““•’”˜”•Ž–•••”•••””““—”“—”‹••”—““–’”–””–š–”””““•••”’•”š“•’••“”““”––””’—••–””“”““—›“˜ˆ˜’‘””‘—‘•““•””–™–˜—˜–’••”“””’˜‘•“––˜•””˜™““•—“˜—•”—‘–”””‹–“”””•”–˜—˜”’–Ÿ——–—‘–•™”™“’’š•••š•—••”’œ”—””““Ÿ•—“˜—”––•”•””•™••”•”—•—–•—˜•”§““”—–•œ•”–˜••“”—”•–”˜““•“–š‘–”“š”””••—”•š”–”–”•’—–˜œ”—˜””˜”‘–“•˜–• –”˜””’•—”•˜•”‹’—𔓓˜“”””•’––––”“““•””•š”–——”•”˜”––”›—••”“”–••”••–”•–”””•••‘••••“”—““”•”•—•–”“”–”““”””“’””“•–”˜“—•–—œ“”–•••”‘“–”—”—”œ™”™”™–”–’””••”•–“”•“”•”••–”–””–”••”•”••“•––—•—–”“˜”“”””–—”•–””””˜”•””™”•™”’•”˜”“•–“•”””””•““”“–“”•“––•—˜”–“–”““š•””’–•“‘•“•“•”“”’–••••••––•””•”””–”žŒ•˜˜•“““•–•˜•†š•—”–•™–•ˆ˜––””š••”–•™˜“–”““”ž’••––™”“•˜””—•˜˜–—›™•””““—•”“𔕕”•”›——•‹š”“––™–””’˜•–—•€˜–”–˜”’£’§“–’—•œ“’•”•–’––’™“—““”•––“–”›——œ˜’•——“”š“”••˜““•–•–™”Ÿ”—•“––—–•›•‘–““•›‘™—š••–—“–¡–’”–˜š––›“𙓒•““š—™”••˜–“¢“”’–šš–™–˜Ÿ“–‘•—˜”•““““”›¢““•““•’“”Ÿ•’”“”š–“Š‘“–“–•“—–™“”’““Ž•’––•–““’””•’’™•”•––’’“”–““”–“—‘–›’““—˜”–’“““’“–’‘‘“”„˜™™”™—““”””’’’‘’““••’•–”•’’’”’–”•“•“••œ•’“•›—– ’“––•””“••™””—”–“–’””“’•“š““’™’““˜••‘””›“”“•’—•–”““•Ž’“—”š‘’’‘’““””›““’‘˜‘™™“–¢’•“““’“”“””•Œ”’”“”’’”˜•’•”“‘”‘”Ž˜—’”’˜”“”’””••”’–”“’““’Ž“”š–›–”””˜”‘’š–”—œ’“’““—””“’“—‘”–˜”’•”—’”•“•”—”–•’˜””¤•›••—’“š’”“––™—”••–’•”“•”’‹”‘’“’•”•’•“””››˜‘ •›™˜™“’““”•“”–”œ••˜“”–”•“™’’“”’–“””“–”•“—”“““•œ‘•“•Ž˜“•œœ”™‘‘“•”š‘œ’’•—‘•“š““’”™•šž”š•“”‘‘’“Žš“”‘”˜•“˜–”““’™š—”“š —“—“—”˜ž“£›™•”“š“““““—›•” ”“›“’“”œ“Ÿ–““Ÿ•”•”›˜›”””“™•’““Š””““““˜”—””œœ”˜••”ž“˜“”€“™–¡—š”–¡•’’š•“‘”’˜š’•š““”’“¢””›•“–““ “”“”•”•“™œ•—“š “˜”““’“—““™““›–“•“›”“™š“œ–™“’—““’›œ“——˜’“”•““’œ‘”“•–”“˜–’ž“”“”•˜˜””–””““ž“”šš‘––”“˜•”•™–›“—“”’–—”œ••”–”””•“–˜›“••••“”˜“•˜’‘••”“••–•–•“ž“–““”“”••”––™”””’”œ•”––– ˜•”””—–”“’”—––“•™”“•‘—”™˜•••“˜””••™”•‘ž•’‘”‘”•“–𛕓’•–“––”–––‘‘””””–••“–”˜––—–“Œ•˜™––““••••’““—•‘¡•𔑕“•–ž–”‘–””“•–•“’˜”›••–”••––“”•‘Ÿ––™—”¢”””––™‘——”•””—”—”••—˜œ™—–˜““–”•–“–š””””žž’”¢©””””§¦ ”™Ÿ§¤ ”ž”¥’£§”•¤¨“••££•””••£œ”¡¦””£§œ”Ÿ¤•ŸŽ””¤¥”£•§¤§•”Ÿž““•””••””¡”  ”¦”œ¥ ”¢Ÿ ›”Ÿ”œ•”””£¢¢§”ªš¬•¨’•œ”£””§£•§–”“•”¨••§—Ÿ””£•”””””Ÿ•¥§•£š” ¡“¥££”•””Ÿ¢”¨•”› “¨•ž”“Ÿ¦  ¤§••œ””¥¥›•£§«••” ”•¥£•”•Ÿ ”•”¥¦””•“™¥  ¦§”—“””£””Ÿ¡žŸ ™”™Ÿ•”££¦£–¢””””œ˜¤””—•””“–”•–—›’”“‘”•‘“–“’–•”’“•–””•••––“””“”“••“”™•›Ž”•˜–”˜•—–˜–”˜ž›”“””–”““”¢••””›•••—˜›—Ž”–•”™•˜••š””ƒ˜–“–—˜••”“–——”˜“••“–““•”•’••““—•””“•””š ‘‘”š›— ••“••”˜Ž”–••›š—œ””•”–”˜”“–•š“•”–˜˜›˜Ž–“”“”•””š””–™”•š›””–“””—›”ž“–—•••”•”–” œš”•—“••””•—”””––•›–”””””“—•Œ”––•“””““•œ“••“’“••”–•“””–Ž•”–••’’•’””“’’”–•“–––”’š––“””’•”“’”—“–””™–”–™“˜“•‘–”••–“”’“–••œ˜‘˜“‘•–˜Ž”“’”˜—Ž”—”—–––Ž•™””’—•””””•••”””–•–•”™“’“••––™””–•’”™”–•”–”“’’—“”””•””‘‘“••”•—”—•“””“–•–—”‘’”•“•”““•–”‘•“”—“”—”““™•—Ÿ‘™——”“–•”””•“Ž‘–˜–““”“’“–”Ž•”’“—”’”ˆ’••‘—••”––””““—“–“•”™“”‘–”–‘”‘“•’˜–•““••”“““˜––™“”””’””””•”“ “”‘•”ŽŽŽš•’”™’•”••’’–””•–Ž–••—Ž““‘”••”””–—“š’––”•”“‘”””•“”›–•””“’”•–’•’’’‹”–“”’”•••’–”––”•‘”˜”–˜’•–•—”‹’””“˜’““‘•”—“•“Œ“”Ÿ”•˜™–•››••œ’–“˜‘““—“–œ˜’’•’”““’”’“—“š“’“““›“’’”““”“••’’’“””˜“’”’”’”‹“’˜’˜‘•”““““’š““’““’“”’““”“”“”“‘”‘š“”’“˜˜™”“““’“˜’“’–“†—“•’™’”—Ž—””“”““—”“““’““““““”•“’“’’““™“––•“”’›˜“‰”’“’““”•’“’“™’“š”’”“™“’““–’‘™”•“’’““”’”’”’’’“’’““’“’›˜“™”“”’—“—’“”“”•“”™”’””‘–—““•“’“““”–“’””””›¥“™•””““˜”””ž•–•“—”—”“”“…—–•”•˜—•”””””™”“’“”˜“’“’œ“š“”“˜˜”›”—˜–””›”ˆ”’”“””“•”𗔔ޖ”—”———”“”“š””“”•”ž–”–™””™”’˜”–›–•“”’””˜””—”˜“”›”””“””“›•œ–”—™”©—–””””˜““•””žž”•”“•“—”™™™”–•”“”˜’ š™‹“”””“”‘˜‘””“˜”““•“œ—•”•œ–›˜••”š’””™”•–œ™—‘˜”–’”””‘•ž›””’••–”•¡›–””•œ™™”™–˜–˜•š” ”›”…–”””š–––•—–› ”“›”“—”••š—˜”•˜“˜•˜œ›•–˜™•”“”“”–““™”›—––”™™š”ˆ›“›˜••”–”˜˜™›‘–‚—’–˜–‘•’˜”–œ›•š–“””•–¢––ž“™”“›–•–”•”˜–œž”™Ž–›”’š˜™”–—–˜Ž“š•–™—”Ÿ”“—“ž™š™š–”•“”—™™’››—–•––”–šš“•™™•–™’”¢œ“––›™—˜›””–““Žšžš—•— ’–‘™˜›—Ÿ”““”’Ž—”œ–”““’˜™•–˜–•”“”—“—”“š–“•’‘”—”“””””’’–’’–”’“˜“•”–““”˜”—”—–™–”–˜—”’““–””“–“˜–”š—“—›•­˜“–“—”••”—“—–•”š“”‘••’”’™“•–•“–“‘•“””••“•“™““˜”””“””‘”š˜˜˜—”•“”“‹““”“𔓕•“’—“““–”“—”––š’”“–““˜’šŒ•™“”“–“•Ÿ˜’“”••“”—’“™™–•“”›—™“—•–””’““”–••šš˜•”–””™˜•–•—“““–˜™Œ••”—””•“’–”›•—”•“•”‘•“—Ž“––””“––––˜”—”“““”””–’—˜—•“–•””––”“—”–••Š”””“’–”“””•“•”—““”š™’‘”•“•‘”””““““–ޕ𗕙’”—’—”••—”“‘•”‘•••—••”“•“”“–•–”•”——–™•“–˜›——–“”•——•˜””––™–’•“’•“““•’”••“–””˜”—””“”•”—”••–“’”—””––˜”™–“”–“””–”–”•˜˜–”˜””‘”••–—–•œ“–““““”“”““”•’”““”““’””““‘”˜“’’““‘—’’”‘‘“““”“”““’”“˜“•”’”’’““’–”˜Ž““‘•’““’”˜’”’•‘“”“’‘””“–“””•””—’•“‹˜’—“’’“‘“–””“”ž˜“”““””•’”””’“”’”•“’“’“““•™”’“”“””“’•“•“’‘•“•’˜š’”“•”“’—“”’“œ’•‘•‘’“““”’‘“‘•”“–‘•““”““”“’—”“•”’˜›“•“““““•‘–•’““”™“”–”“’•‘––“‘”•“”“”‘‘’””—”˜••œ”“”“™›––———•“•“•˜••š––™ž—”—”–“•••”—˜“Ž–”“•–“•“—•‘•“•˜˜“™”˜“–•–“–••’““›””“‘”™“•——•—•—™•š™”›—’–”‘””‘•——•Ž––›”›”—––“•š›‘˜™”–”•–›•”——–”“™”••“–”—•—–—š•˜””™Ž“”“”•˜”™–““•“–“”•”“™’–•—•”—“”š˜›––›““”””“•”””˜—–•”œ”•—“””“–œ–•–™•”–•“”“”’™”š˜•–™›”•——’–”—“”–”‹”‡”œ””””””•””““”š”œ”—“˜”“Š˜’””“›“”””””™””‘’””••””•”•”“—”“•”’”’”””“”””””–”””™”‘•””–“–”Œ’Ž””˜”›”••””–“’”˜–Œ”–””‘•”“’’•“‡””””“›””—“””—””””””•”””™””’Œ””“”””””˜˜”’””””–”“””““•™—œ”Ž˜”•‘”•Ž“”’”””—””’–“””š™””“–”•š“•”•“˜––”•”•’””–”•–‰‘’“””•“”‘’“”’”””––’•›™–””••›•”™”—›•—•••’—••“•–•”›™––•––™—“Ÿ™“”–š–•˜–’—•–˜•”š–˜œ••••—”•–”“•–””—”•——–“˜••Ž—•™•”•—••Ž•’š™œŽ–œ‘™‘—‘”•••œ”–›”™•••”–•œ––˜–˜“”˜–––”–”˜–—˜–•––•”š–•”––—™“”••–’™••”“—”’›•––™–•””“œœ“˜•–•—™”– š‘”–˜—–––””’œ“’–•›’™š˜–•–˜•”–”••––“––‘“–—šœ–—›””•–’›¢”–•“”“•“•—“‘‘”””•‘”Ž“•–’—••“‘‘•••••“”••’”“’‘•‘‘–••“”•””•‘—“—––”—••““—•”“”’”•’””’‘–‘œ“”–•–•”—””““–‘˜˜–”•”‘”–”••’’•–“•”“•––•–”“”’••–”—””•”““”’•”••‘–”“–••“”•”—””“””••’”“•‘”–––““‘—”›“••••””•““‘”•’“–•“–“‘‘””•”‘•Ž“‘–””•””•“‘“•–––––‘–••“–”””–—”‹•“”–“““˜–——“—•—––••”•„”––”’˜™•–––•”˜“–—““—š‹•›”–œ•“•˜–”–•˜˜”—–––‘—•““––““š“˜˜––”–““–‹˜•—–”–™–• ”•™–•––—–Œ•‘”––“•“™–•“‘’—“—•——––‡“““’”–––”–“š–—”—”Œ–˜š•š”–“–•––‘“‘—•š™“œ“—•“’”“•”–—”““’”™”œ–•”•™•–“—‹”•˜˜––—•“™™Œ“•“™‘–““•—˜••’““–™™œ‘——Ž‘’—•—”˜™•““’•˜™‡•—••““”’—•”“•‰•”•”ޖ𔇒”””“š•––•••’—“œ““”Ž•–••—‘”•‘”“˜•‘š–••š–“‘““–•““•””––‘—™‘–•”˜Ž™”™•’–””””‘˜••{š••”•š“––›—’“”•”••’••“™—•“’•••“•“˜••“ž”–•™ž”|““•–•“—“”–••–”—“—“”—‘“›–”“”Ž˜”‘›–”•“”•–”””•‘—••›™“‘–‘’•’™Žžš˜’”–›–“š“’”—–™––•Ž’•“Ž’™–“”“•‘‹•’š–“““”š–•”š‹‘”˜”•–š”—š••”•––•••–˜•“•˜”“–•’••’–”›“”˜˜“›–ž–‘–•™’•’““•–”“—“š—•–˜“™™•¥”””™–”•“ “™‘›•–‰‘—•“‘‘𔕔–𙓖“’•’–•š–––‘‹—’“•–••’—“š–š–—–ƒ•”‘˜”–“•••’–““–•˜—“‘“•••œ–•–›–”“““–••“—Œ–•–•••š•‘”–“––™‘“‘•—•–”˜–Ÿ˜™—•“–•“•’”—˜•’•—–œš’–––“”Ž”“““•Ž–’”‘•–”””–—’•—”–””“”“—–“™”””””•–˜—–—••—“’–’“•”––“‘–˜™“••”“‘•—““–˜•”‘““”–”“““””–””“•““šš“•””–’“”˜’”’–Œ”•”–””•’—“–‘”“•““‘”•”•˜—–“““–––—“—“•—‘—•“•˜˜‘˜ŒŽ”˜™”’’“”•••“’•”“”“’“Œ”“•˜”’““”•‰“”—•˜“”““•”•‘‘—•—Ÿ“—”“”—”—’—‘“”””•˜”˜“”‘––š•–’––•“““”””“•Ž•’–”“““’“’•—‘—‹”•“’““”…””””•’””•”•”–‘“”‘”“““‘”•”•—””•—”“”•‘–”‘—‹”““““•”“™”—–•”˜“–•š˜‹š–”•””¥“’–—”†“”–““’—““–’•”—œ–•“–•‹••‘—‘’““Ž–””“”“’•”›”œ”‘“““•””“”“•””’”Ž“’““‘’‹“•—–™“”–Œ•’”•””–”•™’”””‘–•—–“’•““••“”™Žš•“•”•“Œ“•–“”—•–“•’‘’“˜‘““”“˜š•“Ÿ˜“““““—““—™“•“•“”–•–“’–œ”’’—–”““““–˜“™–’“–•”“›“˜Œ““•™““š—•”“”“”‘““”””“›“›˜”––˜—“‘˜Œ™‘š“•”‘–“˜˜”œ”“—“—“’‘“’—”“”›œ—˜“““‘““›““™’Ž˜’“”““”“““™“””–œ“—•’——“””“”˜“—““•š“˜“–””™•‘’–š”’–““𔕓––œ“““š““›–‘”““—““——“š™’“”“•™›š™˜”—–““š““•——•š—“‘•“—••’š˜“““”›”œ–“”““›’–”¡—‰š“˜“—•™™””œ‘”“•™œ•”“””™œ””—””—š‘“˜ž”Ÿ““ ˜“•“˜˜¤”“š“‘•“””Ž””““”™˜“––˜˜–”‹›˜—“‘”™““”¢–•“œ“‘ ˜–“Ÿ’›¦”’•‘’™™’”’””œ””™š“–’”ž•”””“”¡“˜“Ÿ™z”ž ”~˜’””””›œ“—””¥™’š”›””˜–š›”ž”“•˜™š™˜”“””’”‘“”“—–”“™œ“¥œ““•”™•™”—”“•™““ž“”‘™ž•“œ”ˆ¢””™•—™”“”“–“’—–•—”“““˜”’–”––‰–•—”›•›”“œ—–“’’”“——””“•“œ–•“š˜˜•™œ”‘–“•–š“’”•“˜–”“™——““•–”“˜”›”–˜———”•£“–•”–——•”§“–˜•—•‰˜˜‘––•“š”—““‘’——–”–”–——”—”—Ž””“•—–•“–“™•ž•—™—–’’“—•“•–•˜™“”••’““—”••“•˜•—œ—–’—“”™•“˜˜˜–“–—”–“—’”•–˜—•’•“•—–”–“•˜˜”™˜””š–’˜“”š˜’™™“–”Ž‘—™˜š›•““‘•””Ž•‘“•““”•““”–““Œ“”””““““–’’—”•“”“–•”••’““““‘““”Œ•““”““’“’“”•””•’””””’““““–•”“““”“—“•—”’”””˜––••–•“–”“”“˜‘•Š•™“”’Œ’”˜“––—‘”–•”•”“••”•“‘““–•”’•”•š•”“—•“‘”œ’”“•––’“”“••–•“”’•”•”–””“–’–“’“”•’”””•••““”š””•”••–”Ž”‘“•““’•’““•”™”“’“”•—“–•”•••“•’””•˜™“”“”˜“”–””“““˜™”•™““—”“““˜•œ—”“˜š””’•”•““••š“Žš”“™•‘”˜˜”•’“‘™–“•”“—˜•“•—”“’““•””“’“•’“”””™––’•–“œ•Ÿ”’¢“”˜™‘““”•–Š“”“‘•“”™Ž—‘–’–”˜•“•‘˜’“˜”““”“““”𙕔Œ”•Œ”““”“™“”—–“—“”“““”‘˜“———•“’“’––›•—•“”“”“•£–““‘”•“‘“šš’”“•œ˜”•”•“—’’“š’”–œ––˜–•‘˜‘•‘—”œ“““””–—Š•™’•“““˜–—–‘˜”‹™•›“–•Œ—“–•’–’“–––•”–”˜—“™—”“™–Œ”˜Ž•“”“”•˜“”•ž˜•–“––•““–•““œ“”ž”••™•—ˆ‘”••––”“•˜™”‘•˜—‡–Œ••‹’“–••˜”š•–””•™••œ•’™•“™•–”“–“”‘•˜˜’•Œ”‹‘–“”””˜˜“”–”›”“Œ“‘•””œ—šš––’Œ“”–™•–—‰”“”›”•™™““”™”••““™’•”“›—•—–˜•˜š–’”“”™“—™•š–›ƒ“”œ˜—–•‘““••Š“–™“”””“•’–—‰›””’•‘”Œ“Š“”–““’’“•–•’‰“•“““™““‘”˜“•””–””“•”—’–””“œ•”““”’‘“‘”‘—†˜”˜–›•“›””–‘“›”‰–Œ“–š•Ž””“—–•”“–“–••”•‘ž”””“—••”“””’”•Œ•”—”Œ‘’Ÿ—”””‘“•”‘–”‘““’”•’“ŽŽ’“–š–““”‹—”•Œ•”““”•Œ”•””’–””…–•••’’”˜š—”“’—”‘”’‘—Ž—’•–‘’•—”“””•šŒ••““–““““”—–˜œ‘“’’“•‘•““”¡’•–””’’–––––‘–““•““‘’‘”’••””“•“’“–””’“–•——–•““’•–”“““–‘”’‘•‰’”–‘•’•’™•–”’’’•Ž’–•“•‘œ“•™˜•‘’”•’––”•–•œ’’“’–•–“–“™•“——’•”–“˜—‘“––•‘’”‘–•“™’““‘•“‘“–’’•—•’““‘‘™“’–”–‘••””””•“˜–•“‘–”–”“’–”“••••”‘““‘™š˜˜••––“–’””‘£‘“”•”˜˜š”‹‘•“““—’•–“‘“‘”™’˜–”“•“‘Ž—•”””’–””˜““”—”––••‘“‘˜”••“”••’’“”“““•”“’“”‘•š““•””˜•Œ““–’•”“”“•–•–”•”–”“‘”“˜”“•’‘••”‘””•–•Ž‘‘““•”•“•“•—œ”—”š•‘š•’“•–””‹“”””•’—“”“”“‘”’•“•“’–—–ƒ”‘•”–“““™“””‘’•••š“–”–“•›’Œ—•”•“•“‘“””•––“–•£‘–”—˜––š“””–”‘ƒ–•˜–”””š—–˜”‘•–—•œ–˜š•“”––••–‘–––––˜””–œ””š—’•“˜–—”“–”˜”•˜˜œ–––——••””—–””™”™—–—•—”–”Ž“”’•—–”‘””˜™•–•”˜Œ–’”•‘“’”—˜”•‘•”–“–•––›”’•””—–––“—”“–•˜•––••“’—š”–––—’””–••’“ ”–””–•˜’–•“””–—‘•’–––••–“•‘”•›”––“”’’’”–’“–”‘‘š––•—”””“—œ—œ“–––”—––š™›”›””“”Ž•”˜•”””“”—˜“˜˜˜˜–”—”””—””Ÿ““”““”š””“••‘••™˜•”˜”•“—–”—”““•™”–”š˜’”“•’–”“””—”””™”•˜“˜”•˜–“¥˜Ÿ’•˜“•”•›”œ˜–”Ÿ“¡“• “–”“———””–“”“–’””””—””–——”“”–””””“”•”•“••–”“’•œ‘–””””—”™•”–˜“”˜”“œ””——“”••””š””“•”›”””˜“”–—•””–““”•”š––”””–”“•–•””‘””–””—•˜’•™”–“”›—––”’””“”““““’“”““’’““—Ÿ™”•“’“—“™–””•–›“““““’–””‘““›“’—“˜–“’––“•“–“•““”–’“’““˜“”“”””—”•”—•˜“–›™“““’”“–“š’’•œ”š–’“”’—š–’”””‘”—•”“““’“““’›——’“š“””””“˜“™š“˜”˜›““‘“““””™Ÿ“˜“”””“—”–“”Ÿ”“–“–“•—“’–’—™‘”𔓓™““‘””“”’””“˜““”˜•““’˜”™””—”“›“”›”’•š˜‘˜–“’’‘“™‘•““”‘”“™’“š˜””““˜’–”š”š”›”˜“”“•—“˜–“”“’–œ”””””——”—˜•”™™“““•”–—““—˜••”˜™Ÿ””•–•”’””š””“›””š”—”˜˜–”¡™£””–“˜”•‹“š••™”›™’¤“š••¢”˜””–’•—””””›””™—–•””™””””“”—”’–—™˜”—˜”€“—””””—œ”›”””“”ž”—”–™•’—›š”•””“–˜”š•˜›”””š“”—™‘””“”””–‘“––•”“”•–šš—””–””ž“”——•—•”––”š——”–˜””’•Œ••—“”““““™™•“ž““”””“’“‘˜”‹˜––”’™™••”•”“œ“š““˜‘‘”‘”š””“˜””””””•””˜““•’““™–”“”“”•–”“˜™•’–“’—•˜•“‰“–•–•’”œœŒ“Ž“–‘“””•˜”–’“•“••’”–˜’–““—–•””””””Ž—“”“•••’‹˜”“”””˜““”•”žš“”“”“”––—•—–’’“““”’˜˜”Œ”“•’“•›˜”“•––”–‘“›•Ž””“”“š”’’”‘–““—“”Ž—š•“š–•˜“—š•““’’”–•‘“—’““’™•“žš—™–’’“•Ÿ”‘š‘’““““—’’‘‘“•˜’™•‘“‘˜”’ž’šƒ“—•”“’““¤“’•–Ž‘’“’“’’“’š–Ž—™“‘’–œ–œ‘’‘‘‘˜’”“›“ž‘’œ“Ÿ—“’——’““’”’“•’““’““”•“““’’’’“˜™”“ž¡’—‘’’”“—–’•’’•–’¡”•“’˜”••“–’Ÿ““•–›‘˜•œ’““•’“’—’’’•–’’—–“ ”’•”’›‘—‘—“’–“™“Ž—™˜˜–“’®’’–——“•–’””•—š—”“”–”””“”’•““•|‘“’”“““•†’”••””‘——•–—‘—’•”“””Œ•–—–“—’”“’”•’’’”–’—””””’——“”’”˜’—“——”””–•™—“–“““‘š”Ž•”‘–u™“—•‘•™•’“”‘“”“–“•”–”“—–’–’’”“—•””–•˜–•’—’•˜•–‰’‘”—–—’““”••”“•”“’””’“‘•””—“””‘”“”–’“’—•—’””“”•”–“–•–™”‘‘“’—”–”—“““•’˜•”˜”’•“”‘™“•–’‘–”“””™“”””š˜Œ”š••”““–••–—™“”›”™”–”™”“•“˜•”’™š•”•”””œ”›™”“”—“””—”š•”“—–””•’—ž••œ–‘–””””•”“’”•™•—•š–’•¢˜›•“•–•”‹“™’š”˜•¡›™ž”›”›•™”•”—–˜’•”•”œ•”•“•”“œ••””•”š”––˜•””ž ”Œ˜˜”•””š“”–””—˜”˜”œ””””™ž–—–“𔓙”š—™š““••••–‘””—•”–“—””“”›”•‘’•”“”“—“”•›˜š˜–””•™–™–”“””“““‚“—“”“““™•”˜–—’•’•‘’•’“•““••”””“••“””“˜”“”•™”‘‘•—™““–““””˜–•””–‘“’“““””“”—••‘—“”‰––’•“—”“’“•”˜Ž““———’˜””™”•“““•’”’”“›•”˜“‘”’”™”’•“““•”•“•”‘•–˜•”’”“”“”–““—–”—’”‘”••”’•–š“—”•””“Žš’–•”—•’““’”’–“””‘“’–”ž“”•Œ”•”—•”’•’”’•’““”‘˜˜–•–“™‘””“—–—™‘“”’–—›’•”“–““““–“–š“““”’”““—‘•’“––“’“–•–•–“𔕓““”‹••–––“•“””•–’”–•–˜”•”““”•”“”“’“”’‘𔑕——›”“”“•‘–”””’”–—˜˜•™”—“—“–“˜••—”–‘–””––“‘‘”’“’–––“–“˜–™–—“—•˜™’‰—”“••–“”“’–•”—“—“’””””•“’’–’˜“”•’”“”“™•”–••–“–”–‘—––˜¡”™’”’•–›‘“–‘”––”•“•“••’‘–––—–“–”’–’•’“””“™™–’“•“““’•Ž“Ÿ‘™•˜’š“™Ÿ•’‘“’““’™’‘“’“––’””‘“˜”’“˜’—”•‘š–’’“’–““˜Ž“’““’’“““’‘˜‘–‘™’”’š˜œš‘’˜’”–’œ•“š“˜•Š¦’“”œ’““““‘˜“’““’™“’”“–””•’““’“’•“˜—”–““›–’š‘“’’““•›’™‘“•–”š”˜‘’œ˜•—‘’““š““šš˜““““““™’’’”•’“–’’’™““”’‘”‘’–•Ž—•˜“••‘“—”‘—•–Ž•–“’—’’𔕓›’”“”—–‚“š•“““–˜—”–š•˜“”˜”š“”š”Ÿ–›•“Œ–‘•””””—••‘“’“––’”Œ•””‘“’–”›•–•”””Ÿš“•“““—””“”“ž•“˜•–”—”•–Ÿ“•”™”’”“–•™‘•’™–“•“—“Ž•””˜“”˜”’““Ž””—••’“—”””•”“—”•œ–—’”•’“–Ÿ’””•”“—“˜“•”ž‘—”““™” ——‘”’•“’˜––‘œ•’“”•’””™–›“”•œ””——”‘—•”””™™˜™•—””’““’œšœ—”•›”˜”–˜•›“”””—”Ž•””””’“”•••–”•”“•”œ”“’•““””‘š•““••“—•’‘”“‘–˜”’œ•™•““˜—”“”—‘Ÿ•“‘”••””•””–”•••––˜’””Ÿœž“””“”“Œ”–’”ž“¡––¦”œ’•“–”•“’˜—“—”“”“•””••”””•“””””•”‘””š”—““¡–‘””””•“”’””™’” ””””˜”‘““•–›””™Ž˜–—”””–””’•’•”“”›•”¤“˜””•–˜’–”’—“”˜””•–“”˜”—˜”–‘‘‹•’””––”ŽŸ–š˜•””“–œ••—”‘“”“”‘”™•••œ–’•——”–•––”•“—˜”“•”“•˜’•”–”–”–”™•““••“•—–•”””•”“”””•”•••™‘•”•‘”•œ––“¦””’––’”–’––””‘—–“”ŸŸ–˜“•”–—™••–’š””“™•••”“”™–——•”‘–•”“”˜—“•••’‘”——–•”““˜••‘”––•œ•”““”“—•”™“–“”••–“™””–•–•–™–”Š””–“”—˜™—“•“–•“”’”“–’”•˜–”–˜™—••™”““• ›”•”•–””•”•š•˜”–“••–•–”𔕋•’•–’”•”•”•••••–”“”•–’•”˜•˜““••”™–••›•”™•“•–””””””–””–”——™–—•––˜š”“•–•““”–•”œ•–•˜’™–™–—’—”•™™”––••”•””••””•–“””•”•”•”—•™•˜–•š˜‘‘™””••––””“”–š•’—”••”›–•–””•™”“—– ”˜••”••–”–œ•𔕕—••™“”–•”•”•™•••––•™–””–””–˜™—–––”Ÿ••–•••””••””’•“––”””’”–•“š•˜•˜”••š•••”—•”•šš•••––””“–•”“——’•š——••”•––””–’”œ–•——•••””––”“•”——•˜•—”—•ž–Œ“•š•“•”Š”—•˜“š•™“—•˜•˜™”–“•’—˜š–•”––’—•’—•–““––••”•”˜–’––””•••””–‘“•”•™•”™—••˜“š“™•“———™’––”—“”•–’œ˜—–”•—”•’™–”––™•–—””¢™“–“”“˜–—––––“š“”–—”œ˜–”ˆ™•—”–•–””“”•’‘”˜””““š•”•š—™Œš“”“™’šœ“™ž›””˜› ””“”•˜••‘–””˜“”–‘•“’“’¡™““•™•˜–”‘—‘•““”–””“•”“”•›’™™œ”•“•”•™”“””‘“”—™™—”‚˜•‡”˜•Ž‹œ”””“œ•–•”•”˜•”—”š““œ”“”””””””›—˜“”–”£›Œ“”“”œ““š•”–”“”˜•“——™›–™•—˜”“˜š”ž•œ“”“”–’””™‘””“•”•œ™“˜ž”•”””—™™•œ•“’““““•“——“”…‘’•——’–•—””•“—“Ž’”““”““’”—“™–•“’“““—“’˜’“”””““’’’’”›’•”’”““’““–“˜’‘‘’“‘—“““˜“’–“’“”’•““””“–”““™”“’Ž—–˜“““’“—““˜””™”—”’””–‘˜”“—–‘“””“‘““”“““‘’”“•’“““’”“˜“™—˜“’’˜˜‘•’“•”““–“’‘“——˜”’’“˜“—’“““”””’”“–’”’”“““’—“”““”–“’˜š”–““”“’—“–•““““““”š”’“—–•™“’‘““““”“—’””•“•’“•“”””–”•—–ާ“•“•”“‰“”¥’—”““Œ“–•–”•’“––“““Œ“”–Ž–““••’’”—•”“Ž•–”™”““‘—–”“Œ“™•”••’•—•›–’•—•’•“ˆ”˜”–““•®••š—“•–™“”–—•”””•“””“••”™–’’“—”••“—“‘–™”•—”––” •“•–”“›“›•”—”’Š”“‘“˜–•–”‹–“—““‘”–˜“•‹•––Ž””—–”•—•–•“Ž”‹Ž‘”•“›”’””‘•––“Ž““”•Ÿ”ž–•”–”•™”•”‘“’“”•”š•˜˜•“““—˜˜•˜–˜”••™”˜•––”–˜–”“˜••––”•˜œ”𔕓”™“•—š•˜–“–š˜“˜•—–™”•—•’•”““—–”“–“——–•“›””•—˜“––‘•–•”““˜–“™—•¤›žŸ–™””œ—˜“”˜˜—˜—••”••š••–›‘—”“—––”“–“›•š—˜™™•›™“š™™“•••–™“™••ž—“š“š•“–—™—–œ–”˜““™™•œ—›š”“––”•˜–Ž”••˜–•™””•’“•“š—–™˜–”“›•’˜“”—–𙕗–š’‘••––••—““””“›¤”•••“”“”““”›•“—”“‘Ž“”Œ’“””‘š“••”•”š‘”Ÿ’““’“–”–’”’•““’”••”””“•”“›“”‘“””””“𔕗”””—–—”—˜‘•‘””••—””•”•’”ž–•‘•”–›“‘”•’—–™’””””‘”“‘–“𔓒”“””““‘”‘˜“—””–—”›•›“••”—•“”••”•”“””•–””’’”˜””™“”—’–‘“–”””˜””“•—””––””˜“Œ“•””“’“š˜—–•˜“””““”—‘“˜•”‘‘”–“™‘•””“’•”“¤•‘”–”””–™“–—›”—•—•”•—˜•‹•™”•””–•••••‘Ž”œ•”™’••™˜—“–””•”’–””›—•”˜•”•”””•””‘”—˜”“—‘™––œ”˜“––•”••”˜•˜”˜–•’“–Œ”•˜’—”–‘–”•‘“–”–•—–•–“–””™•”•”–””–’“””•”“–“™—“”•••”•”–••‘–“’”—•”˜—•™—’–•—””‘™™ž™•Œ•–•••˜š“”•”–––””’”””–••‘”™”‘•˜–””””•–˜”“š–•Œ•–•˜›—””””•”œ˜“˜“–”””’–œ—–›•—•–“”š˜’“‘””••“’•–”””•“›“•—““”“”“š–˜™““–””•–•š•–œœ‘”’“”’•”“—”›—“‘•›˜”“’š’•““˜”“‘”—•“œ“—Œ•›“–—””Ÿ“–“•˜™—••”•••“™•–˜–•“–––•”—“ž•¡™•”“››–ˆ›•“–•–•—“‘’•›œ’”–“›˜ž–™—•’•“••“–•˜”œ””——””—”–””’›–“›œ“œ˜‘“””™•ž˜•”–‘š”“Ÿ“”’š’—š›––”’•••—’—›””’”™˜””—–””“š—™–ž™™—•˜”˜–š—“”“””•”•••”•””˜›“—˜““—˜–””š–›“”˜–“˜•˜™˜–•–™–”“““”–”“˜”›™–”“›”’”œš˜”‘“—”’””™—•œ––™–™”š—”š“œ”•šš“•–”•“•“˜•–š•’”““••”•”—”›•˜ž•””›ž‘›™”––”“˜”–”” –“”“–•“™™š”—––“˜““–˜š”œ•“••–˜““—•’”•˜—–”šž”•”““•”“˜™•—•”••”š“”˜œœš–œ•”›’•——˜•š“““•’Ž’–••–””•—•”˜”–•“•–“”•••˜“˜•”–••—”–––––˜˜“‘˜””—•’–™–””“••‘”•–•••–—’’•—•””’–””–”“‘•––”–”–‹”‹•–”–‘–”‘•–•™––œ–––‘“””˜”–•—™•““—”—•™––˜›–˜–”–——–”–””–˜”“•Œ•’“™•”—––•””“––•““‘”˜”””•“–”’˜–“”“•—“–”–”–”–“•––”’”–•“—––•—›•”•“••“”“——’•–”’”“’“•—–—–†“—“–”˜–—””••𠝕˜”•“””••˜•’“–¨’“’“”“œ–”¥“••”“‘•”•”•—””’””’“’•¡•˜•–‘““”•”—”••œ”•“”£”“““‘”““““’–”˜–”””š‰š’˜•””–˜“”““˜—”³•”›–œ”—–—“”—™‘——’”™•—•–•”‘–’™“–•”•“’“’–“–“”›—œš–‹—’“””•”“”–••“›““˜“‘”•’–“•”•“™™••”’”•“•”“••’–”•˜•••™—”£’’””‘˜—‘“•‘””•“““‘Ž‘•—••••–’•••’–Žš“““”™’Œ“—–•““’˜–˜•”˜™š“—”‘’”””˜“”•˜œ••–•–“–”—”““––ˆ“š“–˜›“•˜™“”•›•“–•“™–”’““’•““˜“™š““’˜–“’‘•”—”‘”“˜–“™–“”š•”™—”‘–”—“—•™–Œ–•“–•˜–”š˜™”’“˜–”•“”“ž–—•œ’”—œ–‡—’“•–•˜ž“™–”••”““••“š–””•œ–”–“““Ž–Ÿ˜—Š••—œ“”–š““–—••˜”“’œ”’–”—šš–—–˜–•”›““š™–™˜—“Œ••™“”Ž›“”˜•˜˜œ”—”–””“”—–•’“™Ž•––””“™”—–™“••”—••–•“‘“•—““›‘˜”–š–“•“–’““—–”“‘––•–•““““˜–”“—“••““”•–”’•‘“•™“‘••™””•••”—™•’•—’”›—‘“–•—““¢••“–“•••”œ““““––•”–“‘––”“—•“”—’“––”——–Ž˜“–•–•–”‘“”“——’™—–”“’–•–””—–––“•””“‘“–’”–•’–”‘•—“–‘‘œ”—˜“–—–”””’”—”˜”•—•””‘•–””““”’–™––•”””“““•”–•“š–‘”™”–”–––›—œ••“’“•“”““”“”““›••”˜“”•“””•“–”“”˜•”™•–””““’”““•”™’”–—’–•–™’Ÿ’–•–˜–•˜”—•–•”•“œ•–•š••””™“’”•“”Œ’–“•–““•”–“““““–”•“•“™”“’•˜˜•““”’˜–“””””˜“”•—˜’•“‘•”–˜š•›••’š““™’“˜–‘””“•“–“––“““™•“‘™“•••“•””˜’–™””–”“‘“’””–™˜”––““•””””‘”“””•–“—”‘••““”””“–“–™•—””’–““•—”’••”——–•”––’—“”˜”“˜”’•––š””™“““•“œ–•šŒ•“““––”“‘“›’–••”––•™—’˜“‹”Œ•”‹”™–”•˜–Œ‘‘Ž”””’‘–“•˜’—–”–‘••––˜”““—–•–“–“š•™›•‘“•–™“‘™Ž“•–——–“˜••–“’“–˜”œ••“’—•’•““–šŸ”’••–Ž”•˜—““•’’••–—“–—“–“–Ž›•”’•–•”“š“”“—“•™–•”–”•““—’˜““’•”•””“–”””””•–˜““–“•–•••–””“”••””“’•”–•••–“•””””•˜”“——•–“–•“”••“•–––”••””””––””•”•”“’•”““–˜–••–””••”˜••”“•“–ž–”––•””˜•—”••–””•”–”•””–•“œ•”“”’”•–”—”••–•–”—”•–”›••“•””“””‘•”–•“””’•”•””“•••”–””””–”””””••”””—“””•••••”•”’“””–“–”•••“•”—–”•””””–”••”–—“•’”””•”””“•š–•““””””“–˜•“’“ƒ’•””“–“•”’’”–“”“•–•••’–”’”’”“‘•’••™Ž’”‘’“—”–“”•”š——”’““——””’“““—’–—•’”•’—––•”•’—”•’“𔕔˜Ž”’’’’•”•—””’—•‘•””•˜””’‘“”“—”–”—””•˜••‘Ž•˜”‘•’”–••‘““•”š—”•”“”“•”œ”••–”—“‘““‘””‘–••’“”“”””“’˜–”™˜”“’‘“—”–“–˜‘‘”’–•”””“’”˜—•˜•›š’–“”“““ž“”“”–“¨”“”“”“””’•–”“˜•”–•–’”‘”””’””•••—•Ž•”””“‘’–”˜—˜““••–“”“—”••ž™””“•‰•”“ޔ𓓒—”–““Ÿ™”‘™˜””••›”•“™””‹”—“–‘””œ’“•’’–”“”•””’–”“¡••““—””•“–”–•“’”‹”—š“™’“”””•““œ–“—”’—”•–“•“”—’‘•™’“•“”•š–‘–•”•”“”‘›••Ž“”•–‘”Ÿ”•–•–’’”“‘”•——”“•“——˜Ÿ””—Ÿ””’’““’“”””’ŽŠ“ž‘””““˜“–”˜–”¡™”““•“˜‘“¢“‘”“—š””“””‘Ÿ•œ••”’•š“–™”›“”“˜˜”“”—Ÿ™””–––”“””“””“–”–™”–”––“”••““””“›””—“š™––•”¡˜™•”“”’‘’”–”“•–Œ’””“”œ””›•š“”–””””””–”’“‘““”™””³–””””Ÿ•”–””›–”—”–”•—”’—”—”–—”“›•’–•”’”“”š““”–‘””’‘”””‘“”™””””’“”•–•”–“””“”™››˜—˜”’¡”–˜•”•—””“”™‘§“•”””““‘‘”Ÿ—’”˜”““”“—““›’—”“’—”””“””“˜•™‘”“••“–™”’—““”’”””’’œ””‘–‘•‘””™””“’”œ–”’•–””­–“”““”•–“—“–Ž›”¡—›”“”“¡‘™””Ž”–𔓔“””””’Ÿ•’““—””””“”•“˜˜˜”•“”Ž’•””””™—”˜“”““˜”˜””’—‹–”™”–‘”“”’ž”•Ž”“”’”“–˜“””“—””‹ˆ“”—›””””’“‘™”“™”“ž“”–˜žœ›–”‰¡•””‘–•‰”””Ÿ¤”š—”“““”“œ•𛓓ž”𔕑‘–”ž•“•“’™¡““““”œ™““““›Ž“””š—“’™—”˜”›¡—•“š’””‘““˜”•“œ“ “—’›–˜”˜š•–‘›•”“™“–™›¡—”‘—Ÿ›“œ”¡’’”“‘—œ’’”’”“–”“›•Ž™““˜”“””””•”›™ž”›“šš”’–’““””—“”””“”Ÿ”š“””œ––™’•”’™““‘˜š›“““Ÿ’”™š”””š“”š™““˜–“”–œ™•“““”™“”“”•’’œ”‘‘”˜–—•˜ “”‘––—œ••š•“””—’’–“––™”–•™“—•”©š’••””™”•••”šš““•“““—•—•”™”””œ•“”•”–•—•”ž’–”““”–”“””œ””“˜œ–•–™—›“’——•””š•—•’•‰•š”š–’™“™“•““——”‘–”••””–•Ž—™”“˜•••“—” ”–™›–•”›š“–•“–•“™—”—•”“““™”–•“™•“—•™—“™“”’˜–•”—‘””•˜””˜“–””˜“—””—•’•”œšœ”—˜•”–”—“””Ÿ™”˜•”‘’•˜•“–’˜””“”˜›““’“”“’‘”•””˜–”“˜“š“™”“——”“”–“““““””’••••““—”“‘”˜“”“•—”•”–”˜””—˜˜•“””“”“—”˜–”–“˜––”˜••š“˜”•‰“˜“™”˜”—š” ”›•“˜”™”“•–’””’””“””“‘•š““•“”””““–””–™›•”š—”—–”““”ž•”•””˜—“™”“”–˜—”™˜–“•–””ž””Ž—•›“““š“”””“””–œ“”––“¢““““”–—’˜—•““““š“”˜™™–›™”••’”—””••”””’“˜š“™š“““’˜”’”•—–˜’–“•“”–“¨›“”“–””’””™•”–’”“•—Ž••‘•—”“’››”“•—•“•”“œ—“‘“”†””“–“™˜“š‘™˜•“–•“œ’˜””“˜–••š’ƒ›Ž’™”‘‰”“”‘“”’Ÿ‡”““”••“˜ƒŽ›““œ’’””“”“”‘›”šž”–—”„˜“’’’œ”™•“’’“’”™“–˜—˜›œ“Ÿ““˜–’œ’œŸ“’’˜“”›‘””œ™’•–’ž‘”•””—›•œ˜“’†”“’”“”š’ž—“““š“•’•’““’•“’˜•—‘•“““‘””–™—”••”™•—•›••’””•”“›Ž”•••••““˜“““—•“•”•–”–“•–”—•“•—–•˜’•””“”ž•”“™”•”•”•”““–œ“œ“•š”œ•””“–•˜’•–””•–’”‘•””••™””›“–”••”––‘›‘š““•••–”—”“–“˜”˜•”Ž“™Ž˜“•••˜“””–•Ž›“š“”•”““”˜šš•”“”˜‘‘””™•”•˜”•‘˜”•”™–•‘™“ž•––•““›“”—”•“š–“˜“”–•™–—•”•–•“”™š•‘“”’•–£”–“—•“““œ™˜•›–•”š”˜“š›”•™š–”“™˜”•”•••”—›•”œ—––””™•““š”˜•›—Ÿ••˜–•–““““•”“•”–›•œ–™—™–𛓔—•š•”““œ“–˜ž”›œ•¬”¢”‘Ÿ‘–””—•˜••’•”•––••™•–““˜•”””””œ•–—š›’•“‘›•“”””™™“š–”œ–“œ”—•“š—˜››•’™““Ÿž’‘—›Ž”“•™”•”šŒ””••–•™›“ —“•“——–š–”’“”“›’”—–œ’™™–Ž¥‘–š™œ“™“”’•‘“‘•–•–””•‘—™–””’””“•’“˜’•’’™–•“‘––”•——””™•”’’•’•—‘–”•“’”˜–‘”™–•–™˜•–””—•”“”˜””•”—•–”•“–š””””•”“‘“•—”“—•–˜”“™“”—š™”””–”––˜—”’”•”””’•”””””˜–“•’“––—˜””•“”””•‘›”——”’š”–”—••“’—•‘“–•–””‘–“˜“’”••“••‘’‘”–”•–”””“’™”•”’––—••”—”“’“”••”™••œ–’–•“’”—”””‘–‘’——›“”“•—“”š™˜•š—˜”›—–›”‡˜••“”—›“••”“œ™”™™““ž›––˜•”–•“–š™”’”™™–”•’’••“”“””””š”™—•š––™™”§™™‘–“–—–’™”š˜—”“’”•œ”•’–•¥”•”’™•˜“•”“”˜••™‘“”•”™”••“””“•—˜–—“”“’”¥•›““““𙓛–“”’“–”—’”™—’—™”””—””“—’”˜š˜”“”–“””š”””œ•”•–—”š’“•—“—”—š•‘—”•”•š–™™–™”“š””š™—œ”–””“•››¢”““•””““’“–Ž”•‘”“”‘’–”””•••”—”””••’˜”“““”””“”“˜•–•“”‘•“”““•”•–””“”””•””“”—‘–““‘‘•“‘’—’•“••‘”“““’”•ˆ˜˜“””š“š•–””’‘“‹”–“••“••“”’’“”‘–“•”–”›””Œ•“‰”–——’‘’“•”””’”‘•”—–“™”’—”‘“”‘’™•—‘”““’‘‘”“—•”•‘“•’’•”””•”“•”ž–“”•–“•””•‘•“˜•”›”–’—••””•–‹“–““’’”””••“‰•“•”“““˜‘“•™š“’“–”‘”•„‘•““•’”–•–––’“•–•“•”œ”‘•“š“–“””—Ž”“—‘•’““™–”“—“’•”•”‘”“‘–‘–˜””“’˜š‘“ŸŠ——•’““•’Ž‘–””“•–’•–™“”“““—•”“”“Ž•‘Ž‘–›–”¦’”““••“˜“˜—”””“”“’•“’’•–’Ž•™‰“““—”‰–ˆ–“•““•“’Œ”•–••Ž“™““”–”–Œ‘””–“•““”––”‘”—™”•—˜˜–˜‘“““•”•••–•”““•——”œ˜“Œ–•””’“’”•“—“•”•–—–”—–”“”–‘“””‰”–•–š•“””•”—••”™•••™Ž”’“’˜””““”—”““–˜“‘“”˜’—’’”‘•‘š”””—”—›œ–˜’”›““—˜˜””•””’•••–”•“”““••”•“””™–Ÿ™¡’‘–™™–•”“•—–“’“•—–›—’™”’””›“”””–•’—““‘•–—”–”••“•—•Ž“–’–”–› ””““•”ž‘š—’“”™“–“™””“›—•™œ”–”’•–••“–•“”””˜€”—“”“““˜–“™•›‡™”“›“˜”–Ÿš””“š˜””“””Ÿ™•’™–”š˜“–—“™””“¢–”“”–•‘““–•”•‘””¢””“™””–”“’›œš“—›¡””™”–”•œ“˜—𔕓Œ™˜”“—”‘”‘”“’š“š¡““”•œ”“˜–•““›””””’”˜”‘š“—•™™”˜ ”““””›–”—””–”Ž”˜”•œš™ž››“‘Ÿ”“™™‘™—››”““•“”’œ“””“›“”Ÿ–“™œ’“””™˜—˜™”•”“”“””’”—”ŠŽ”“•”“•”””’“𙑓•š•”””˜—˜•›˜˜”•“˜”˜“˜’›š“”“––•””•”˜–“––““š—””•–“–‘“”—™’˜•š—––“–œ–’–““•–”“–“›˜”›˜–šœ”œ™¢“•š“™“”—•–—™™˜”™—–—”•”œ——“–—˜•›š“•“–”•“”––™š•“š•“”“”““”•œœš’”™–‘«›˜”••”™š““•œ˜“•”˜““˜›—˜œ™•—“”ž—”™œ–•”˜””•𛔔𛖔—•”‘—”’–”™ž™—œ™“”““—”“•™ œš“”¤“”š––—‘˜“”“•””–“𔓔’™š”–’˜–˜”“•–“˜˜”“–˜•’–—œ–—––•“—““š““—•’•”•–“–“–›““•–“š–—“–•“““••”“‘””•”—–‘––•–“‘’–“–‘–””””“™••‘˜•—™•‘•’—“–“’𔓔•”–•••˜”’’”“™—–•“•””–—•‘•••”””“Ž“––•”“”›—•”‘“š“–“”——“˜’•—•’“”’š“œ˜’‘–”•“”•‘—”––•–“—”™›““•”’••“”––‘”˜“–“”–—’”•˜’•–˜•—•Œ““••˜‘’•”£“”““ž“’”•™›‡Ÿ”–“™“œš•©—••“ž ”””””™•”–—•“–¢˜””–”–—“”šœ””›˜¡”“‘š™–’“”›””“˜”š™” •—“•”¡—«””•””Ÿ“™“™–𓇙‹”¡”’‘”›”“˜’—œ…”””–••”Ÿ¡”š”“ž•”””“”™”—›–•–‘”Ž•”““””˜“£•”–“œ”™””™–˜™”œ”‘›””˜š™–𙓓”›”•““””›“”›š“ ””“‘—›˜œ ”–˜”“‘““–š– •—•Œ•” ˜™’•š“”•”””•™•–“”““–•–““–¢•”“•“””‘•›”•–•”•”•–•–––—“˜•”““’™–”––”““•””“••”•——•”—“•“““‘–”“•”––•“•””••š—“–•“–“•”“”–—“––•¤–•–•“•”—–‘“•”•“•‘–“—––––—š“””““–••“•“—–—”“”—–—˜””““•••–š“––•••“—““•“™”—“•—––•“”—‘–—•’•–”–””•—•””–’”––•’”“—•”–”•”———•••—•””“”“•˜–—”–“–“–”•–•”“““•”œŸ“™–““““—˜œ”—œ›“™“—”›œ““›”•“”œœ“““““—‘”‘“•“™—š“˜š“”““’ž˜”—“œ—•”“”™•’“”—””“–”—“›”•—™”–—Š””š”š“•–“”˜š—“›™––“𔡋”“˜•“™ž‘””“”™“”™—’˜“”š””“”””–“’‘‘™”””–“˜—”““’“šž“™““™˜“œ”œ”•˜š“–›”••”“š““˜“““š““˜”“•’•“–’“Ÿ•–”“””—˜™“””““Ÿ“””’Ž’”—‹‘”•—‘—”•”“’•’–“”—“”“““––”“”“—’˜•Ž‘‘••–‘””’•–’””š•“’•Ž”••–””“’‘•”•Œ’›–’™—˜••““¨”“’•“”‘•””™”–™—¡““’••“”¤“’•Š“”˜—““••’••–““‘“¤“–”•–‘–”‘‘”““•“”“”““”‘•’•–•—””ˆ’’’’–•’“––”–“—“‘—•“–“’”’™“”›Ž“‘“‘˜’“””“–“““”•”•˜–“˜–””“‘‘”“•”•—’“–“”˜’’œ––‘—š•“’—‘”““‘•™˜›””–•““’—‘’–˜•–š•“˜”™“™˜””””•”˜‘••””–•—Ž”–’”“–›™”›••–““’›”•š–š–•”“””““Œ•““›“”š“™’—••˜–“”””•“•”œ“—“––™•—œ‹§• ”’–›ž“•šŠ‘”’“–“–•“••˜†–’’“•••”“•““•’’–›–•••””—–“”••”—“˜–”–”“—”’••–˜•—˜‘–’•““ š’‹—™š””•›”–’•‘“•š”–••™“’‘˜“”“˜™—–š•“”““““•”™““”–Ÿ–”–Ÿ––’–™“”“–Ž“•“•”””“•˜“˜–“”‘•””’“’•”¢‘“•”““––••••‘”‘’’“–’–”’’–”“–‘’•”•“••–”’”“”“”•”“’”’‘–‘’”‘‘”“˜Ž”’“”“–‘™”””“””—’™–––—“•”––˜’–“”’”•Ž•–‘“Ž’’”‘–•–’•””–‘–‘’••””—‘“–—•“”‘–•“–•“”•““’–“”’•‘˜“”““’””‘–•–“•”‘”•”–••–˜“”“”–•‘’•”‘‘•—“˜”’”•‘’‘‘“–•—œ“•’““”Œ”””“—“‘…—”š–”“”–•••˜ˆŸ””•˜•’”–‰˜™––•™œ——•—–—œ”“•“”•šŽ—‘”—““•–“’–’”š–––˜–•””¤–”“•”•”—™—“–˜”•ž™“–—“—’–”“””’”–t›’–˜“”“””“–‘“—š“—“——”•–•Œ• ““˜—–•”•”˜•—™•œ˜šœ•„•””––—œ•”——–™••”—–”™”’™”™—’•““–—‘Ÿ“•“—••˜”˜–•“”–’——žŸ”Ÿ’’–“™”•’—˜–“‰•””””“™“—•—‘’”–—•••”’“”•”’š˜””¡”””“™–•”¦’¤]œ“““—’œ““„ž”•“—¡¤““”””¨”š“””•£|“𙕛—“”¤ ”•”˜•—””’—•””””“’”” ”˜–“ •£”›”’Ÿ’™“”“”•”™—’•Ÿ“c—˜ –¥“– ”“—•‘—•”“””“•“—–“–””–““””“”¤”ž˜©œ“Ÿ”k—•”’““›š”˜•” ““””™’”›••’•¥”•—””˜”–˜’•”’”“Ÿ””™”–””˜’“”§¨”¢’”““ —¥—›”™¡””š””›š••ž”‘¢“””–‘”•”””“™‘’“””””““’—“˜•–“•’““”™“’—”’””””””“““”“–“““’”““““™•˜•‘”•””˜”““š“”˜—’’””’’““”““˜““”‘š“•”’™™™’’’“”‘““˜““——”•›–˜“™”—‘™”•–˜“”•””“““”“““Ž’•””“’“”’”“™”›™—”““™˜”•–’“”“”•—“•““˜—’™“””“š“™““”’’œ”—“““•“—””“”““““—“”‘—““™–”ž”“““•—”˜”””””“””™”“’––•𙓓ž““”“““˜“””•—–†””“–“”•˜––“š•“••™–––•—”˜••••”•’–•—”••””“—“”•—”•’˜–™Œ“•”•”•˜–‘––›”‘”””””•”“•”—–””“––”“š–œ–˜“˜••’”•”–›“—’˜—•–™“˜“’”– ž““”•”’•“––––‘•””–––•”–”›–”˜—˜–•”š””›˜•——–•“”””––›““”“”“™•›–—˜–“—”“’˜“——••–—”””Œ—”•“›–•—’”’“–”••”—™–—”•”–””•””’––•“™• ’•–•—•—ž””•••–˜•”™–””””•—””“–¦˜”–”š”——”¡–•–”š˜––••–˜”””•“”—˜Ÿ–“”•™’“•—™”™•—”””–˜•‘•”””Œ–””š””–—˜——˜”‘˜™“™”•””‹”™•—•˜•œ›™“•“••’˜”••š”˜•“””••“•–••“™•”—–––“–”’–‘——•˜š•˜“””–––™˜”›••”š““””–”š”–——”–’š””˜•““– –•—–••Ž——”•™˜–•™ž”˜—•••‘“•–”˜š•”‘–”””“’”—–•–ˆ”•••”•••””•””˜Š’›˜•““’‘–—”ž”˜¥”’”“š‘˜™”£›“““’––”’““•—•”˜•“—“›“”–˜•’‘›•“””–“’”“–˜”’“““““•“•“‘—“—–›“˜š—’”˜’”’•‰“™—™“–• ››•“˜“•‘–“““–‘— ““”“““–’—••›”“˜”“““”““”‘–“™“–“” ›Ž’“’•›™“—““œ—’Œ“‘–“œ•˜—‘““Ÿ“’•“•˜•š‘“””’“–’“•“˜’“œ’“™”—•’’•𓓔𔕗’”Ž“‘Ž—”™–”‘ –“––‘–””““””†˜”ž••”””ž”’•™“‚š”˜•˜”‹‘–Ž˜ž“–’‘•”“••›—•–Œ””™””•Œ”‹Ž”’••”›•˜˜‘•“™’—”–””“•””””™——‘˜›’˜”¢˜Ÿ““Ÿ”–“‘œ”™•š–Š–£’–Š”ššŽ”’™—”ž‘””“••¡••›“–˜“”›–“””””•”šœ‘˜–•””“Ž˜Ž”••–”–“”“•‰š•“”•–“™””—”“•””“Š—‘–ž†”••“”•’˜”””—Ÿ””“ ”}‘’”–š“•˜“™”—š“”•”–”“’”›“•š••”•“–””’“”œ™’“—““““‘’˜“˜‘™‘–’““–’”‘’š–’“”””—’’“‘“–—“‘’“’”’‘–’˜•”‘–—•–’”’”““‘™“““’‘“““•“–”’–‘š“—“™š›”’’’“‘’“—’’”™““—‘™’š“•›“•“’•”“””•“”“‘’““”œ’˜””•’““’”“˜“š•–š“™š“’“““”–š“˜‘“›‘—”“”’“˜“’‘’““’š““—’˜“’’˜“““–’”’’˜““”’“’›˜“˜”’–’•—•™•”—“•š’“˜“”••’•™“’–“’—‘”’”“––˜‹•Ÿ˜•”“””™•’—˜—˜–™•’––˜–”˜™—•” —“””””˜“˜˜”“›“˜•™”•™—“”•—”•š–‘••–š•–“””›””“Ÿ”•—•–”˜šš–ˆ˜’•™–—•”‘””š—”•”•”ˆ”’•”‘”•”•šž—˜—“••”•—••š”‘œ•”–”••”–”—•˜—›–ž•˜š”‘˜—“““”›””“••š˜”“”‘–“•–š•šž“”•“”–“™•––œ”“”œ”•—˜“”•™••š™”—œ“–””™˜žš™™••’•”—”””™•–“™–“‘“••˜–—–˜””“––˜‘–Ž”–“““—˜”—“™˜’’”””—–––“Š“™—””••–—”•–•“”••“—™—–‘˜”•–“–””“™•”˜•–•™–––’““•—”“˜”œ”–—˜”•”–”›–•–˜•”›”—˜•š••š™˜‘•‘”Ž—”—”•˜–—”–˜–”––•—•“•”“—–•“—”•–•˜‘˜•–•”–™–“••”–™“‘••™š“—“’”’——–’–”—”““”ž•›•’•”–—””’“—”–™—˜•••“””••–”’˜””•—–••’™“”•—–œ˜–•›˜–’•——•—““’••‘‰–””“”“““’“”›“‘””—”–“”””‰••“”““•–”–”˜•”“’”””–“”‘“”””“•““‘“”“’”•”“’•“”””š•“”—”””•••”“•–—”—””‘”“–”–””’”’’’’”“”“•“•””•’““”˜”•“”–“”•’¦“”””’”“•””””˜–—•””’’•™”’“””“•””‘—””““’”“•”•”“”••“•”••‘“”“‘••“”“”””’”“–”•”“Ž“’”““•”—“”“’–”•’–”’”“’‘–““•“”›‘“”’“’˜’””””•…”“–•”“”Ž•““™’•——“’“““•””‘””””™˜”””––’“•““•”•’𔓓•˜—“•–˜“’•’“š“”’™™”“”“Ÿ”““•”—”•–“’•‘”Ž™š˜”“”–“”•“—•“‘”“ž–’–”•”’œ”–””‘”‘’’’““•••“’’”“”““”””““˜•‘”–”š•™™”œ‘”“”””–™”—–”›“”—”™•”‘”’™”’”“”‘“’‘••“”—”””•””•‘“––™“‘•”“”“—’˜“˜“”’“”“—“”“›˜‘•–“–£“”–““”–””“•—¤‹”””””“”””—•Ÿ“œ†””””’’•”ˆ““””–”•–•”–•’œ“””’“’“ˆ”‘ž”›••““”’˜”••ž•”•˜˜“”““—–““’”™”—”–œ••”Ÿšž‹—”—””’“˜“•–™”ƒ–œ”›’“©•œ”˜™˜‘“—–•“””••–”“—““””•””“•”š”œ–›”••¡œ–ˆ–“”–•–“™’—•”š•™Ÿ””•”ž•“••–•’™“’––›•””–”•”“”ž”””’’”””›““•”˜–›–•’“•˜•”¤”““˜˜››”—¦“•”•“–›˜””“”–—”—™•”””•––“˜–—”—”˜”–”’š”‹˜–“”–›˜••”••™—”––““š˜—”—“”—““”˜–”••™•“””•™”””“““–”“›”•˜•—”–˜™“–‘••–“““””–•™•”•¢™–‹”•”–›“–—–”—••““””•”•””—œ““•••”“”“””–˜š••˜•”žš•••••š—“–”•›•“‘”–””——•––˜•“–““™˜•—š—–•”•™•“•˜’””›˜•”™ž”’›˜“•”œ˜–•˜™“‘“””–”“•——••š“•““”—•••••“”””˜š’”“•””“”—‘’••“•–”•”•”“’”•–””•‘—””””••—•““’“‘–Œ”’—••”””——”“”—–—•”–”“•–””•”“–”–™•––•“•””• ”•’•™””Ÿ”––’”–”›––•”—•“ž’””‘‘’–›–•“”””•••œ—“”““””•”””—”—”—•••—š•‘—˜”””•”™”‘””—““”””•’˜˜““•“”š–””—–“‘–—Ž”””™“”“”’””””””’‹”‘•™••”˜”“•’–”™–”““””—–”—’”•ž’•—“”‘–•””––™˜ˆ•’—•““”—•––“˜–™”˜”–’––•Š–“–•”˜˜•••”•𙓕—“’–š“••™•–˜“•–•“˜•—˜–––˜™”•“““–•”“š”š™•—•–——••–˜•“–š•”—““™™••‰”‘•”‘“‘œ–™“•––—™—”–””•••™•”““••••“—“˜•™–›—Ž”–˜“‘™““•””–•“•”””–“ž“–”’—˜š––––”’“””›˜Œœ——””–˜“”™–””•š˜—”•—“‘™’’•”˜–˜™–˜•””•“˜“”•››ž–—–’—–––—”—”˜““••’”“•˜•””“››”—šš•’›—–—™—‘™”‘˜™•““˜š’”˜’”™˜“–›”“–˜Ž’™˜™—“—™•“–•™›’˜•–˜–””““™–”“˜”™–”—™–œ˜”–••’–™–𔕔–˜œ—”—””’™”•ޓ𓔗——𔕕””“—––œ”•—”“›–––“™“’–•™š”““”–”Œ˜““•••™’“˜“•–˜”‘”š•’–˜•š˜••““”‘˜–”˜—”–—•““—˜•”–”–•”–—””›’’—“œ”—•”™–“—–“–““™››š•˜•™“’––š™ž•”“”’”“–’“›•””““š‘—”“™™˜Ÿ“–“•‹”“£˜•”“’œž””“””—“•—““š–”“š‘”—““’™˜”–”—š”””˜™’”“““Œ””“™““œ“š•™™™”—˜œ’•“—””“–œ–š”›—“’“‘”Ž”“””’ž–”’”“˜””›‘‘š‘“œ”“””“”˜“”ž”˜—“–—†—•””””œ“˜””––’‘”ž”••˜š›˜›”•“’•›‘š—™š”””š““‘’””𔓕“šŸ‘•”“—“˜˜›•”—““”“”–’–”–“””™–”˜˜š””–“”“”©•“‘”“““”Š–”Œ’”Ž“••˜“‹‘””‘•Š•”“••‘”™Œ”“”•”–™•’—“’Œ•“–•’”••”—•–•‘““ •““’“–”•’’”•“™•“”“”’¬’’“‘‘‘“‰••™“’’’œ‹“”˜’“‘‹’•’”–Ž••–’“Ž”””“•“—•—•‹–••“™Ž•““””‘”””•“—’¡“’”•’Ž‘’’•œ”“““‰Œ’•””••“””““”‡–•Ž“–Ž“”••Œ›“•”–”“–’”™”ޕޔ›˜˜••’”’—““”•—”…–›•“””•—••“”¨•—”—“–—”¡”𖔕މ”••••“—“–•““–ž–’˜–’–“•Œ””˜––˜˜—–š–•““““””“””•“•”—‘–¤”“••—–—–•Д𒔔•”¹˜Œ£••–““–™“–˜˜˜‘•”–”•–š–”•£˜–•“”“”•””“‘–•‘š“•““”Ÿ–™“”””‘𔓗•™™““ˆ•“™š˜”š”””“”œ“–””–š•”””–”•“”––˜”—‘””›’’•”•˜•“”–””–“•“”—‘—”š–––’•—“™—’˜““”–—˜–••™–““”šŒ”—œ‘—•˜””•—“œ”–’•“—•’›•••––“““™Ž”“’˜“•‘›–˜—“•˜™“‘•”—£—•œ’–“““”–”““›—•œ”™Ž˜—¨ž••““—’•”™“œ“’ –‹‘¨”œ”¢•—“•”‘”˜““—“—–Ž–••Š•“““˜––•“–“™–“——›–™—’““•“••–™™“ —•’“¡“”–”œ—Ž––”—•Ÿ““š—”——–•”••”— —‘“•”Ž—–˜‘”ž––”•’˜˜›“˜••—”•“˜““›•™–“—˜«‘—›••‘•–““•“˜‘’’“”“““’””“—“—˜“’”“”Ž›”“˜“““””–‘“““““–“‘“’“’•“–—“•Ž‘”’’–“‘•™““’““”““‘”“•“’“’š””“‡™™““˜“Ž“‘–”š”“•šŽ’›’••”“–“–““”’‘““’Œ‘””‘““““’“’““™”•’–—™˜˜”“’““”š““““–‘‘““•’••””’’–“š”—•’‘““—’“””““’’•“““”““—–“•”“”“’“••“—““•’“š““–‘•“—’•““’–š›’”’•–”‘”–••”””••˜”›’˜’‘–’•–—“’••—”••’’•–•••“—“™”“”•’•”“–•—‘”–“—“™”’–“•”•™˜““”“•–””•”˜“–•’—–™”“œ–š‘™”˜”’””™—‘˜••““•’••”–•—”–—•“–•””’••”•–’“’•“”“–”•”–”–••”™•™•™š”›—””–––“”””••˜–””“•”—••’™–•’–”“—’™”“”—–•–”“•˜“’”••“””™›”“”’–—–˜™–™’””—–”—”–“˜—”˜œ”–›”•““••–””“•–™˜•œš”“’“Ÿ–ž”˜™›”›””˜“‘š“••˜•’’š˜”•””“›˜“¤—““—ž”𛓙𓔖œ”ž” ˜”•›œ––“““””“ž“Ÿ •š“™–”•Œ››““’•—–“¥”š™˜ ””˜™¢•˜”¡•˜“•¢—˜œ•’•”••š“”œ–’™”’𔕔“”“œ”¡œ”•›™””œœ”••“˜Ÿ“™•”™œ“™“›””˜™œ—œ¡•“˜““›™“’”””ž“”•””˜›–”˜““Š—˜””“›™˜œ¢—•—–•”—““—˜ ž—˜•—¡—•žœŸ–˜¡““”•𗒔𕕔”“—–˜•œ””””–•””›—•˜—•–•–™••”••”–”‘–”””“’•’™”›””—•”—•˜™–”•—“š””””˜•”“•”‘•—’˜˜–•’˜’š’—“•”“…“–””œ”•…–——”˜““’•𔕙–’˜ž”•“••𕕙𕔔”›•••”–”˜•œš—’•˜˜–‹••“”••““””••‘™•™”––•—’–•—™•—š””””••˜œ•••“””––•”•™–•™ “—””•“—‘˜™’•””“””˜“”‘•••”˜•Ÿš•’”““ŒŸ””””“™§“”•””““––š”Ÿš——””–“•–˜”“˜–”“”–“””“““”–“’Œ”““•“™“—Š”“–•”™”“•ž”“—••““”•””““”™“”–—˜”—“™™›”š“ž”’”–”“™•”›“š”™’”œ“œ””œ™˜—”“““““’“”‘“•™““”””””“”–“š˜¡˜Ž“š—•“—’”””“–•“”“”𙓓“”•–•™——™”’•““–˜“—˜˜–““””’““‘””’“”“–š“˜””””ž›–•˜”””•““““•›”˜•š”œœš”“Ž™’˜“”’••¡•–™”“““—˜”’›–™™•–’™“”–”˜˜••”‘™”•“–•˜š””—”“—˜Š””•”—“”ž™““”“š–“•“˜•–““”““•“•—•™“™”š”Ž’‘•—•™””‰’™™˜•›“Œš˜–””‘›š“”’“•˜“““”——””—Š’—““™”••“’“—•”—œ—™–›š”‘•—“””•˜˜“—–”ž•“““••“˜—–˜•—”š““•š”––—–•“”˜“•™˜“”––”•››“˜›•”“›–™–——””˜•“’•’™œ—š”—‘•“•—–™”““““ˆ‰“›–”““’šœ”••›–Ÿ“”–”•’›’œ—š””“•’’’”’”—“”•𔓒˜“–•”’““”“”•”–š•“™“•”’“”š””“–”š–“““‘—”•ž’‘“”””™’”‘“”š—™“–‘—“‹”ˆ’”“•˜’•…’•““”¡””œ‘’“˜’’“”•”••”“˜•“‘“›–’’’’’“–“˜““—œ”Š”“””’”›”™”“˜Ž““–”’•š˜’“”’“Š—””™—””ކ“Œš“”””’•”š•”“•““”“•”—£Ÿ•“”‰•Š”“˜—›’—“”’•”’•””–””•“””•“““–”•”•”•”“•“””••”•”•–”––”•“”““”””“–“”–••“–””’”–”“”•–“”’”””“••’”””“”•”””””•’“–•’”””•”“”•“””’–™—”’–’”•““–”•””“”—••“––”––”“”•”””•––“•““––”•”˜–””“˜““”–––•”””–––“‘“”’””””””””•””””•””“““”—––””•””“–“”–—“˜””””–‘•“’”””••’–”“”‘“”•““•–•‘”•”“”“’””””•“…–—™•“”””ž™••žŸ——•›”œ”Ÿ”˜—Ÿ•“’žœ•–––”—Œ”–˜““¡Ÿš•”™•”•“–˜”š•™˜˜•–›‘—”“”””•”“¡”—˜”¢•š›œ•«–£•—£•œ–”†”—›™™™•—”–—ž•’ š””›™—›Ž••”•–™••š›’”•”—•••”””˜–“—’œŸ•Ž•—•”•–”˜—”–––’ “Ÿ”Ÿ““˜”™šœ˜•““”Ÿ—‘˜ •”•œ”•–›•”•“˜––˜•”£˜’”•”Ž™˜›™••—–“ “”›™›““•’™•˜—— ••”“••™Ž–’•”“““”–’”™•“”•””“”—’•””–”•”•“•”–“–•“˜–’“‘”–•–™“™’””–•“•”–•˜–”“’”“““•””“”“œ”•“•–––—›˜œž”•–•–“–“›’’”˜““™‘—”–œ”•“••“•–””–’•—“”•’“—–‘“”””•”““—”—˜˜‘™–›œ“–“‘’’•“—•“”—••“”™“—•“˜•““•“”š““‘“•“—•““—“—““’“”•’”–—“‰”‘“•”™“˜•˜•“—‘•“““”˜š—››•—’•–””“Œ’““•“›ˆ”𔓓’™œ”•‘””˜”””›˜“–š™”’‘››’’“”“”–“—••“™““™”•’’™˜“œ”˜“™•“•›‘”’““ “““˜“–•’—’••ž”–œœ”Ÿ•—“’Œ’˜’–šœ“—˜Ž‘“˜‘“Œ”’™œ”•—‘”’“”•”’’’š’“—’““”““œ“’–—–‘“”—˜’“’‘‘”—“˜•’™™“ž“š’”œ“—•—›”Ž–““•‘Œ•• ’“‘˜“’†•““’—””š“ŸšŒ•“‘’™ž–——““›”“ž’’•š’‘™›“…“”’’“—•““‘•—œ“”™•”““’•—”–”––›“•”•””Ž–˜•””––“”•“”—Ÿ””“”“‘•”“˜”˜”““˜–”””–™‘•”˜š•’““•””“š“š—”““˜–’”›Žœ—••˜””‰’™—’–”•šœ–””–’”•”””‘—–‡•“•”—””™Ž•“““•”””•“™””• ™•”—”—˜—“”“”™™“™”“¤•“–”Ž“•œ˜—“–—•’—““˜–šš•‘““”••–”“˜–•”–™“•œ’”““™˜—••˜””Ž”’““”—™•“›™–•–𔕕“““–”””””””““˜“•›““””““”••““š“—’““’“””••”“’“–”“”””’’”•–”““““”“”““—”“••Ž“’“““””“””””““–”“”–”“‘–““’“’”—””’”“—–“”•”Ž”””˜“”••“”“’”’•“••”””““”•““’””’”—™“”“’”‘•‘”””’“•”“•“”“––”“’”–“—”“‘–“š“’’“Ž•–“””“”“““’”™””’•””••“’““”•š–‘“”“”“˜”“”’“–“”—–˜–’“™““”“•”•“”’”žž¦“Ž“’““’““””Ž‘’’“˜–—’““’“”’”Ž““““’–Ÿ”””““•“‰”›š“’”‘”–“•’•”•š—”‘““•”““’“š”’Ž”˜“’”–”–—“’”—”’’”Œ’•Œ“}•š˜’–Ž˜“™””‘•–“–’”’“”’“”’‘’‘““““””•“’“”—•‘‡’šž“¦•’“““’ˆ“”’•’’š“Ž’”’–ޕޔ••““••Ž—’’“““““—Ž”’‘—”“•›’•‘•“•”““Œ’“’”““’“Š—Ÿ—š–“’—”“‘‘’‘““‘‘’©–¨”Œ–¢˜ž——‘‘™©š—–ަ–”’¡™‹’ެ–¡’’’‘••œ•¦ž˜¡‘œ”•’‘‘{š“š“œ˜’˜–Œ‘•‹… ™–‹‘•“•’‡—”—šŸž‘¤‘€›Œ›’–’¤—•¢›’Š—¨•Ž’£‚“¥–¥’–•™w¨‘¨‘‹¸‘’£}«—§”™’’’‘¦”‘š’œ’“’•Ф’“‘š ˜‘’–ž•Ÿ¡“­–—šœ—’œ—¥—•¦ž“œ‘“’š˜‘‹” ž‘š˜‘‘—˜Ž£œ¢’ˆš••–•’w”‘¤–‡‰‘‹‘’‘™‚›‘”›™”££˜ ’‘…¥˜–¨—›“”¬˜”›ž•¡’—Œ‰–™š‚—™§“†žš““•““–Žœ—¥˜•”’•ŒŒ›““†š‘‰–“–Ÿ–“•œ€œ®•‰“…”‹•¤’—–“— š“µ‘™™ ˜•“‹ž–’ž¤“‹••’˜’¢™œ——“¡ž¥šy¡“ “•Ÿ““œƒ¥¦„œ“—“›“–“˜—›—“™šŠ¦š‰“”“’‘˜Ÿ““š“•”—™š–˜‰“™‘’—”«®¥‘œ“‹“™“£™‹“—““›˜’Ž‘”“ˆšš›—™“Ÿ•“˜†œ©“¤¤”“§™“š–’›œ’ª“˜‘›™”“›’™”•‘‘š“˜—•–œ£••°“†“™’‘‘”“‘““•ˆ’–”—”–•™’š‘“Šœ”“Ž“œŸ““Љ}– Ÿ“š“Ž•…”““—•—“Ÿ”“µ’’•›“”’’•¡‘“–x“ˆ’œ˜‹ƒ”–“‘𦕖Œ“Œ“𤓓”Žz”“‘“•“…“…Г𔋔œ“ŒŠ}’¡“”“’–™‘““ŒŠ‹“™“”••””—“„—••£“‘’±““’›“œ’—‘“‘‘““–‘”“›–“Œ•”’œ–’“›Œ’—”‘Ž—‡’ŠŒ“’—““”˜š Žž”“šš›Ÿ‘™•›™¢”™’š›—˜¥”•“—œ£˜Ž““™œ’““—““˜–œ¡œ¡–𑍕“••”“šœ¤Ÿ“£”‘“£’•™ –Ÿ“¢˜¥Ÿ•‘–œ˜”“¨™‡˜–ž“›“‘ž•Ÿ–“¢“•‘Ÿ˜—š—“œŒ™¥“’“’¢““¡ –›“š““““Ÿ“››“œŽ™•“–’¡˜ž¥““”“› š““• ”œ‘”“”‘— –Ÿ¦“‹–‹œ™ ‰˜™¡““ –“ž~˜“— ““—–—œž¢“‘”—–¦™˜“¨™“ —”Ÿž”‘‡—“¢™–“˜˜“¦˜–“’Ž“Œ”˜“›Ÿ–‘™–‘™›˜—–”˜“’˜––• ’—“–’’“’‘ššŠ•§ŒŒ™ˆ•Ž—‘“¢™”™‘–š‘•œ••‘šœ›—–• ’‘˜¡——›©–™“’¯•‘Ž™š‹’†™•—››–’‘œ²™”‡Š§…—ž‘™˜ œ Œ‘–‘’–‘’•š¬Ž—Ÿ”’Ž‘«‘˜—‘˜¡•–’˜—“›Ÿ˜™’’‘”Ž“‘’—–Ÿœ—œ“¦œž’‘’œ‹Ÿ–•§•—‘˜’–•‘¡ ˜‘—”‘‘™ ˜”—‰’’”𙋖’ž‘ˆš’¤Ž ›¢–‘’žª‘––’Ÿ™‘–Š›’‘–—š—•“‘š’ž¥š“”š‘—“•”–‹™˜–y”™“”•‘“““’”—’œœ”š—•˜™“›–’•—“›“žœ˜“˜’œŒ‘“˜–“”–Ž“’œ—“¡–€šš¤“š“Ž– –™’“–𕇙˜˜™”“žš‘œœ“—“’““œ•¢“˜™—“”“–’…’ ”•”¢“–•ލ–›“““’“•’“˜”‘•’›““”–“—•“£•š’’–¥Ÿœ“˜““’š“¥”¢Ž“˜•““Ž–“’–“˜š“—–•“¢’’‘—žš’‘“¡˜““˜˜Ÿ¢Žœ’¡•§•–ŒŒ˜ž””Œ–“••ª————‘ ‘ƒ“•“‰˜’–“““’’“  ‹žŽš“¦Œ—œ’–{‹–—– ’“””‘’˜—“ŽŽ•‘—“”•” Ÿ˜”œ‰œ’—’…• ”’™—Ÿ“ŸŒ˜••˜œ—’ž—”—•ž—š–œ’”™’•ˆ‡’’‘“’’—¶—•’“‘’£’–˜’–¨•‹’—–’‘•—““’˜’–’“–Ÿš—˜“˜˜–›“‘’–”‘›•™–‘“ž’•“–’“”—’¡˜’’Žš—•“–›“‹Ÿ—““š•“š˜’–™ŒŒž›¢™—’‘…¢’–˜œ™”‘šŠ˜–—’˜™’‹ª’®•œ˜›––˜–Ÿ…™ ’–Œ’’“‘‘š•›‘•Ÿš™ž—‹”‘“† —š˜“›’™Žˆ‘›”˜“¥››™’”š—Ÿ›œ”‘‘˜™‘Ÿ“’Ž—¡š’š‘˜–ž›‘‘’‘˜„—‡–›Œ›¢‘£§ ˜¨‘š‘…‘’Š–•“–™™’’™‘š”‘ˆ•“—’˜£œ“–’’‘šˆ™“‘’˜£ ‹’”’œ—š“–’’ š’›‡žžœ‘—’—”‘Šž•’‘› ‘‘–†œ›“š‘œ–œ”—–’¯’“”œ–”ž©”’‘ˆ•›‘˜š™Œ•“«“œ—‰žš’•›”•™——Žšš‘—–œ¡Š”’—šŸ““—“““œ˜ ˜ž”™’š“ž˜“š ™˜””™“——“—“š–˜•š“‘Ž“‘¢“¢——“œ‘““¨”“‹¢•š’“¢ƒ——œ™”“‘––—–’’ž“šš£•¬“““”¢““˜›ƒ••™–“““ž“Ÿ™““œ“™“˜œ¦š‘˜–“”“—ž‹œ“”•¥•„š”š›“›œ—“˜œš“”Œ•Ÿ“—“˜ž“Žš‰‘“•™““š–•˜¦Ž”˜˜•™˜“”¬•“••Ž”Ÿ–›™˜“–¡”“œ›—”–ž˜Œœ“˜•˜‘•“””—”˜–˜’˜’•“˜“›—˜œš——£”•“™ª—•““‘“’–“‘’š†’“ž˜‘–š“”œŽ—™–©˜“™š›“•˜˜˜—•”“š˜’–˜““—š™Ž“Œ˜–™˜“šœ™–––™““œ•—–“—Œžœ˜“›—“–‹¦“—“’š““—œš—‘›•“““Œ’› ’”™––“––šŽ˜¡ “”“••–’“’—•ŸŸ “˜•—˜˜Ÿ““’œ”œœ™šœ“•“š“›˜‘™“•—““™—”“–¡“˜–•™›”“wž’—œ˜‘‹š’™”˜“™•™“”™š›˜š—–’–‡‰ž–‹œŠ’’—”˜…˜Š›š“Ž•§‘‹“’‹˜›’’‘’’’˜”¦š—¢™’­š’”¡“–ž†’’‘“ Œ’’—ª”Œ‘—’‹Œš”“Ÿ•¤œœ•œ’œ¦‰‰”’ššŸ•–•’†”˜‘——”Ÿž—ˆ’“Œ™‹•’‡’’¢’’–›‘›œ™’“’š’˜’—‘–›’š— x”Ÿ’“’ž‹—’’–ޤ˜  ’Ž•šš˜ ˜’”˜›šŸ¡‘”›’™’“œ’ž¢™’˜’’Ÿšœ‘¨—…” ”Œžœ£‘’—š’Ž”‘•–””š‘—’‹——’œŸŸ˜’›‘—™“’Ž˜¥ž•™•—¡ž“—•‘‰—ŽŽ–š’“™—›¥”“–œ”””““•Š——Ž’‹”š–‹‘“–§œ•”ž“‘¢‰““™§p“¢‹ ”“‘’’£–’’}™Ÿš“ž”†§”©“š”Œ‰Ž’““”““Œ’¢Œ–Œ›™‡‘“—¢£““‘§““™³•™š”’“’“‘“›œ¢™“‹”³••“”“™‘‘•“”™›”–Œ“‰’—’›•”“˜‰©­ž—Ž“““—ž“¡“±†“‘™““š““™Ÿ¥”ˆ¢• ˜—””“›‘–’£™™¤“ˆ‘“’’––¥˜’‹“›–“‰Ÿ–Š”‹”£“˜Ÿš˜Œ”™›ˆ Œ ­“—”–”“”“““ž‹‘¤Œ•£˜Œ™•““˜›˜‘¡“—’˜“¡ —’“•Œ“›„–¤“ “¡ “Œ•ˆ‘š‹’“Ž”†–¡—“”“‰“Œ””Ž —š•“™¡”ŸšŽ“–“’™““”ŽŠ“™’“““‘“Ÿ“”œ›™“——†šª–’“”“”‘””““œ¡•–›ˆ“•œ ¢Ÿ‘“””žŸ“”™£™“—“Ž“˜˜“˜“˜““œ“›••¦•’—Ÿž’–“Œ’“’™‰‰œœžœŸš“ž£“•  ¡’ƒš¡’‹•“™“˜•’š’š“— ›‘¡‘›’””Œ“Žš¢Ÿ’“—“’’—‘”¥Ž‘’““’•“‰—˜“¡›’ž–‘™’‹˜ŽŽœžŸ›“œš•“—’•¤™š•’Š˜“’™•–“’‰•›š™’’Œœ•’›˜™Ž—𒡆z“Ž’‘•’’œ€’™‰Ÿ“‘’—’ —’™‘”‰©’—‘š‰ŒŽœ““’›–’““‘‰™•˜’š–•Š—‘“’’ˆ™’ˆ›‘ž’¢“•’’¡•¡’˜’’œ˜–ª˜“˜”œ›—•“‡’’’˜ž‡•““—•˜’’•—’•—˜–‘“𛓡“~˜“™’œŒ£±—˜’–š˜—šœš™ž˜›š§œ—““˜”—“’ ’’˜—•Ÿ˜‘¥œ–£–’“‡‘——œž’𣒠•…“ŒŸ––’Ÿ¢›“——–Ÿ™“ ›’Ÿ”«–“ŸŸ’Š” —¬œž˜’˜’š”’”š£Š –“’›™›––’Œ’£’’¢¢•…›’”’—’Ž—’Š”’œŠ’’’‰—œ£‰’“’™›’œ’’—œ‚’‰–“¡ž¦œ£’’Š—…žšš–’’•’—›˜’œ›’’š”š‘­’“•œ™™˜›““‘“˜šžœª—š¢š’’œ”’›¢ˆŸ•¡{““šŒœœ”•š”š”™”˜”’‘š—˜‹˜ž“–žž“Ž—””““““š’“•›”‡”–˜“”’•—•˜ž“ž—–š“˜–›˜–™“–™–˜’—¢˜—ž“‚™’•’ž“‹•š’™› ”“•–‘•—–‘¡˜•œ““˜ƒ——Œ““’—““™§•”’™“““š“—“›œ™š‰““’“œŸœ“”“‘—““•˜’–’’“ž–™™—˜“Œ“”–•šˆ–•ž“™“””“Œ™¤˜“šš““•ž———“•›Ÿœ•™““’–™˜—”•‘˜—“–Œ—“——–™ž¡“’‘–Ž›–Š‘¤Š–‡™‘Ž’‰“’—£”•‹’˜‘•’—˜“Œ’‘Œ‘‘”‘”…™¢“œ—ˆ‘‰š•”Ž›‘Ž”…ž‘žŒŽž—œª‘Œš—ˆ–”ŽŒ“Ž‘’”§’•ž¦¢‘¤ˆš‰—“•‘“˜–‹“ †“Š•‘‘’š–‘š‘—†‘‘ŒŒ¦–˜‹‘’‘œ‘‘‹‘™’¬‘‘–Œª–‘’‘““žŒ‘’ŠŸ†¡’’Œ””˜”“’‘“˜Ž’ŠœŽ•Ÿ‘ª‘—™‘””žž‘”›‘‘ˆ’‹’‰…‰“”‹“†–‘’’±”‘ž¡…”‹ˆ‹‘š‚‘‰—“™“˜Ÿ‰“’˜xŠžš—”“¡“•›’’œš›žšžˆ–•™‘ —“‘„›““‘““šŸ¤Ÿš¥˜—‰š’“”˜™›•šŠ¥“”ž˜‰“°¡—–ž™”ƒ“’¡œ˜ž™‘Ÿ•›¢¨“Ž•¤•¦†¡“‡šŸ—¥™™“ˆ”šŽ››­˜ž’““›—{œ›¤“‘“’ž““ Œ¯£™…–“““š“‘›“”Ÿ” ‘“œœ‹¡¦•“”“¢¥ˆŸ““•­Œ›ƒ‘“𧙬 ¤“•–ƒ““œ‹ž•“—“œ‹“’—•›“–¥““Ÿš–™“ž”¢‘Ÿ›˜˜¡“˜Ž“‘›Š¦¡Ÿ‹–§–“Š““œ–¡‘““–Š’Ÿ˜‡‘•’”“–‘Ž“¥”ˆ’›Ž‹‹‹“™’›’Ž“’’‹‘‘™‘š“›”“”’¬“‘“‚”‘™›’ŽŠ‘‘œ•Š}‡ŠŠ’š‡”–•’“”–““‘€£œ‰”‹˜’•–ŽŽ¥•’‘““Ÿ“•˜‘}’’“uš~‚‘‰‘‡‘‘–‹•’Š’“’„‘€‘’ž‘™’‘•˜—œ‰–’’‘˜’—‘’›šŽ®“––˜œ“’Œ‘Œ”~”’‘ž˜–œ‘†’–‘Ÿ’°‘ž—‘‘Š’š‘§‘˜œ‘”’‘’‘Ž’’•‘¦“’–••‘„Š‘’—’“•š†’˜–˜‹Œ““‘—¥”’ ¨š¡‰Ÿ”š–›šœŽ“’•š–“’“’’™ž‘•ž‘Œ“œ” ’—›œ“—˜’’Ÿ—ž“’š•šŠ–“”’‘›šŸ•”•’‚’€”–’€‘“’–—˜‹¢˜”’…”™˜˜˜¦œŠ›•’ ”qŽš’–’ ’’›—ƒ—¢’”’˜‘˜¢‘¢š›“’š–““•‘–’“’”“‘’–˜ž¤”¢’˜‘˜”¥˜’—žŽ¤”¤žŽ’‘’—˜’ŸŸ…•’œ›’’‘›› ¦’’— ‘•‘˜’–’‘Œ¢›š ­’•’—™¬’¥Ÿ›” ˜Ž‡’‘”‹“˜–’¤•§‰ž¢’–œ€š—–‹›– ¡˜™’’ £’’¤‘‘‘– ›˜Ÿ—•‘Š•ž–‘•·Ÿ“›——˜‘Ž•–‘˜œœ˜— š’ž«“”‘š–“˜š•‘“–“œ˜‘’ž”𔕗žš‘¥‘Ž“—Ž™”‘˜›™’™‘Š‘“Œ‘‘™‘†˜Ž‘œ’‘‘ ‘˜‘œš’Ÿ‘”˜ ”œš’’‘™¡š‘’˜“—˜œ’Ž””™ž’¡‘›žŒ“š—–˜‡‘’•—‘Ÿ£”‘ƒ“‘‘šŒ—’š”’Ÿ–Žš¤”“’­–‘¤–¬¦ž—š”””‘™‘š™˜‰“™Ÿ’’Ž˜“‰š„š™˜’•– ”Œ’™”~ž—†ž”›’–‡™”’’”’’Œ’“£˜ˆ™“•ŽŸ•’—“–—’’—™Š’Ÿ”‹‘›ŒŽ“’Ÿ†”‘——–””—‘••˜™©Šž’—š…— ˜‹—’‹Žƒ˜Œ–Ž¡–“’•žŠ—”š‘“‘Ž’’|—‘¡”‘Ž’†‘”–‘Š˜š¥’•“”‹”’’’›™–š‘’”œ™“š“™œŽš›™™’˜“•š˜‘–ƒ”š’”’’™‘˜™•’”•’’™–—˜–‘•Œ™’’ž’•ˆ‘Žš‘¨–”—›—’™••’’—šž‡ŒŒ•©‘™‘~‚™™’Œ”ž“•—“Žœš‘—“˜‹Œ–•’~š–‘‘˜‘‘˜Ž›Œ¥…‘žˆª‘‘ޔ𣒙¡‘ ˜”•‘𣛇” —‘™‘›Šœ’›¨–•”‘‘œ’—’‘•‘Œ“§”Ÿ¡“‘£Žž”“—”¤•Š‘ž‚‚—‘‘˜ˆ‘‘›¦–˜’}”‘”‘š‘†˜‘““šš‘‘˜ˆ›¡‹‘’‘•”–‘‘Ž›“–Ÿ’‘™™”™¡‘‘ާœœƒ‹ ‘“‘‹‘°Ÿ¢‘™œ‘‘˜•”Ž’‰š’”•—— ž–’’›‘…˜‹›¢…Œ“‘‘ž“•‘œžž–«Œ‘‚“™™£Ÿžž”—›‘£™”•¢™š˜œ–š™–œ–›—ž“–𔓛““›—‘¥˜”™ žœ™¦–“”Œœ—–žŽ˜“£¡¡–“žž—“”Œ”“ž ¡™œž’™˜“£›’˜–›•“——𙣙•Ÿ“¤œ—š˜‘š¢š“›š¤š˜‘“¡“”™““ “ š˜”•“’“–˜“”ž”•‘“—–ƒ‰•œŒ“”“”›˜œ““™šž””›“–—’”š™”“›¢œ–•”¡Ÿœ”“‹“›š“™•Œ“Ÿ•““”˜š•›”’“…–•ž›”¯–“ššŽ¥›™¨ž˜“— “œœ›•‰‰••‘“”x“•›•ž¤›˜ž”“›–Œ›”š›˜”— Ž’““¥‹¥ž’’—’’•–‘š—Ÿ›“Š”£’’žž‘’𛓒žœ™’‘›ƒ£š——’˜¥–’“›•…˜Ž•’™Ÿ£—•”’˜‘’˜”——’~“…—Ž—Œ ™Ž—‹’›—z“¯”’‚’’™’’Ÿ˜ž˜…¢ž’‘’—’‡’Ÿ”›‰’˜žžŠ¡™’’’—žš£’’š—’“¥œ’Œ””›” ’‹›¤€•œ–•˜’›’š ’–¢Š’“•’’–˜–’™¥’™›£•—’‡“¡—­Ÿ¦˜– –™’‘¥…’›”—•“˜¥”‘•›Ÿœš’“—• ‘¤˜••“Ÿ˜š–½ž«“˜’™””“—““›‘š™˜}–š“†˜—™¢“˜¡–“ —žž˜“”•“–ž——¤–•›·”š “Ÿ—˜š³˜Ÿ“‘“™œ›—˜“›‘—’Ÿ¢ŒŒ“¥˜ ¡Š“¡“š“““‘¢’›˜“š“•“„“‘™“œ£’™‰“”˜~|¦›•“”“•˜£š““„ª“£”š“Šœ˜˜œ˜“ž“¡˜‘•±š”“’“–¦“š”º‰“  ““Ž…“•’™Œ“—§Œ ™“ƒš“™˜›˜˜˜•ž«Œ“––“—”•›ž‹™”˜“‹›…‘• ”’•—–›¢“™•ž’›””˜–ž“ —““––¤““‘““›–˜——˜’–œ‘““™’œŽ—“Ÿ—•—“™™¡”“‘™’“–™Œ“—•“‘˜‘ž‘ž“›”¤ž”–”“‘““Ÿ‘—˜œ““™˜”œŒ‡£”œ—“ £œ˜”“–’“ž““—Œ˜’Ž—““““’•›’ž””•“šš’—˜Š•“”“—™˜¤’“œž’ ““ž•••’—“ލ˜“”–‹•š’—“–“’”–“˜““•“’¥”˜”“”—”˜˜–“€“’”œ”Ÿ‘’—™Ÿ“𔓖˜“—‘ž‘“‘’—˜”‰šŸ“–£•¢«ŸŽ š‹š‡¢…© “‘¢š˜““Œ’’™›«œ™¥›š˜’“š • ’ —‰’–—·š¤‹”Œ’ŽŒ——•”•¡”¡–’“‘ŸŒŸŒ—“£Ž•˜™›£˜’‡••“š•¤˜ˆ¦’”’ ¤‘šŸ’£’’¤’’¡ˆ®›¡™ ““’£’–—’œ‹›’‹­–¥–““’𔕒““’¡œœ“¨œœ£™ž¢“›Œ–¢–­¡œ’“”’šš’—™’’››•›¢”ž“žŒ™œœ¡™“˜–’𕑛𛓔’’zŸ’’Ÿ˜£•ž™’«’–“¡’ž—”™•›ž’—œ™–‘š˜¢”™Šžž“›š“’’’™˜Š›™›Ÿ“‰‘…—’—™”’–—ž’–•••’Ÿ—Žœ•‘’”œ˜š˜Ž›‹•ž£’•ž¥˜£Œ¢’“™˜—”œœ˜’•’’˜”•–—‰ˆ’—–‘›‹’˜’Ž‘’’˜©ˆœ”˜“‘’‹’…’‘›™—’”––ž–˜’’“’™˜¥—’’•¤–“ ’ŽŸ–™™ –’”“›š˜“—–——Ž’’—ž’Š˜˜’˜›’’˜Ž””•ƒ”‘Ž‘œ—˜’†•’™˜™˜”‘›˜’™—’–˜—žž‘ ˜‡“‘—™›‘•š’—š“•”Ÿ–š’Œ‘ˆ’’“”˜“–¡”—““““’“Ÿ™ž‘¨‘’›“‘’–ŒŒ—’ƒ™“œ¡“–“›˜šš§’”†“‘œ–“•–—‹ ˜š’˜“…™—“š““’—“•••™”“ž“°‘“—œ“˜‡Ÿ“›œ©•Ÿž““•¥““™„—¡˜™“”“’ž™’”“š’“—•“Ÿ—©—“““˜”ŽŽ’“””—Ž…”——•–––•“›”’†£™™•˜’‘“˜˜“ޓޓ’™“’—™Œ‘’˜‘’Ž›“—Ž”“›”’§”š‹›Ž•˜“˜‹“––—˜š—™©’”—“œ¤“ž§œž‹‘“œ‘“œ¢”Ž™™‘ •‰“–˜” “’’’•—˜ž‘¨ž—›™›”’–¡¥‰˜™Œ’’œ’Ž’˜’w—Ÿ••‰’‹¢—šž•œ”˜˜œ‘™”—š™˜Ÿ’›ž•˜–’–’„™§’‘’Œš–”Ž™’‹ ›±¢‘’’¨’’›Œ¯™¡”™’’’”‘‘“˜œ”—’–”šš‡†—’“’Ÿ™¡ž‘’˜œ’œž“§šš”›—Ž’“›¦‘•™©˜Š•š’˜’™›’Œ—›”’’’’”Ž˜–¡’˜ž‘—˜—’¥–’Ÿ•––—“šœ›•’„˜‹’––“—¦•”˜¨“–”—ž”‹¢˜«™–’’–•’“‡–†™™’˜•“—““Ž’˜—““–““™—›— ’–™¡–©““–Ÿš“˜™’™“— ‹“•“›Œ…Ÿ—“™™–£œ˜•—”••˜’••š‡Ÿ‰Ž•“¢“•“©– ’““”±““”˜¢–• “˜›‚˜¡‘’ “””““—¦•–˜¥˜“”“¢“ª™“˜™œ“”“‘”¤•™ž““““–”—““™•¡‘Œ®”“‘˜Ÿ’“˜“ž•ª••œ œ™Œ“†“–˜“—¬ˆ“•““š“–‘’–™” š—™“šŸ“Š‘˜£Ÿž—£“–“‹ˆž“•–—˜š›œz›“˜™—“•”Ž˜–›ˆ“”•“‹™’‘‘ž–”’’™¢“•–”””“˜“““š›ž—–˜—‘—“™§’–—‘“–˜Ž“•™~‘›’“‡“’“Ž‘—š–›—”ž•—œ›œ“—‘—š™˜š“˜ž“•˜šœ”˜’“–¡Œ‘““Œ““’Œ™Žš”““—“—“•—“—‘“—š–¥™›–“”“›”–•““—“Š—•“‘–•’›œ‘”•Œ‘•–Œššš“Ž“‘™“’——‘“Š‘““”–““—˜“š–“’“˜”›˜“—™–““œž—š˜“•—“‘’š”Ž˜Œ“——£™›˜“˜––𙦒ž¢™ £•œ—”šœŠš—“• ¢““’“’™¢”–‘‹šŽ›¥•¥–’™™”™¡’•œ“˜–Š”“žŒ’”›™““––’ž–š}—˜—“‘’““˜ž’—“™’—’–¢ž‘“’’žš‘šŸ’’•—’¢¢ž”†’Ÿ’’—’“˜“Ÿ™š£“’“ˆ’œ–’𙢕¡“‘‘Œ¢š†£“““ ™™š’“˜¡”Œœ­“š”››§ “š”š‹§ž¥™ž›’š“– ’ ¡•˜“™Ÿ“’’†˜“ ž“—¤•‘™›•“‘—’—’™Žš•¢œ›“•Ž’˜š’™š™—ž‘…˜™”‹•“›’Š‹”‡¢–—•§–”Œ’’… ’˜’’›’’•—š™—–—”}œ’’‘ޤ‘˜”’’––’‘’§—›—Ÿ’•š›œ˜˜˜”•‘ˆ– ‹‘“Œ•’“¦”Ž’”˜’—˜””‘˜Œ¦Ÿ„ ’“‡Ž“ƒ²‘£‘“’’z𣓒’’‘±‘›”•’žœ‡©”§ª’’’—šŠ˜‘’”‹”Ÿ’Ž“•›–Œ’“’”“§£˜„}‘’©’ Ž’†œž’މ’’–••“˜ŠŽ’•˜˜”–›’€˜’š ’“•ŒŠ•’’¤™’ž—š••ž¦“”“Ž“n•w‡šŠ˜“”‘˜‘™•”’ž–š––š˜–“ ¤’ƒ“““’—•ˆs“‰§Š”¡Ž•“‘’ “œˆ‚˜“Ž˜“›‰¦”ˆ“ž“œ ––Œ‘‡““‘‰’j‘—ž‹’¢“ ˜‰‘”œ‰“œ¢”—”“~•£•”“˜‘‡Á’š’’†““‰¬~—«Ž“’““’˜ž’ž“”™”“‘–‰’£–““““’™€’“—™¨‘™‹“‚œ—”›“š•ª‡”—ƒž™Œ“—“‘’„‘ŒŽ“ƒ•““˜”‘žy“–Ž‘“t“˜—¡›Š”ދД“”“‚‹Ž‘’›‹”—’•“…“’”Ž˜“™“˜“{Œ˜’”’Œ‘˜‡ª–‘“Š¥’”““”“’“” Ž˜™œ—Œ˜’’·•Ž””†–“—–”“•Ž™›¢™Ÿ}“”¨““‘‘‘ƒŒ–—’®‘Љ’Ž˜“—’ž’˜œ““†‘š‘’‘—Œ”§“–“‘Œ™™Ž¤’•’œ’“–¸ŽŽ•“–“’’Ÿ–’¡“•“’‹™‹‘““’Œž’“•Ž‹—“†‘‘““—““ž“——‘¦˜“–”’™“Ž’¦‹—“”’’ŽŽ‘•‘•…“Œ’•“—“§—“”›‰ž’’›Ž’’¡”’Œš™™“Ž˜¤’••—‚Ÿ•—š™™Ÿ˜’›Ÿ”Ÿ“’”•ž—ž”u”˜“’”™““•’’œ•‰”™›–‹—‘–‡—’˜œ›–™–’’ –˜—’‹‡Ž™Œ”™’Œ”Ž›™™•–Ÿ’–”’‘–“‚£——•’žŒ˜ƒœ¢‘’—’‡“•“Ž š§Ÿ’¦”ŠŽ •’›’‹’’’™›¤Š–œ›’’¡’’“˜•Ž’——›”–Ž““’Ž˜ž’“š—˜’•ž“‘Ž“œ–“ž”š –Š’›“—›’”‘‘’¦’’’•“Œ’«…’šš›–›“›“•œ”œ›˜¦”•’››’Ÿ™™¡”Š˜’Ž•¦–— “““•š”›‘–•ž•˜’š™—”˜ž—Ÿ˜’’”˜¢“’’‘˜Ž’ž‘–’žšš–œ’˜¦–’›¢–”’“——’’™™•š™—’””“—’Ÿ“¦†˜•ž’™ž“—•ž‘’š—“˜–˜ž’Ÿ‘‚“”–œšŠš–’Ÿ“–˜‘–‘’—‘’Œ•v™–™’’’—‘‘‘›•¡Ÿ’—”—˜•šœ’’’˜“™ ‘’”’”–˜¢’’“˜™š”ž’—›—ž£•™Žž™’ ’šœ’š “•’Š“‘‘ž”š˜•±“••š›œ¡™’–’œ”š—–—˜—˜’˜—’¢™—– £”’•Œ”™–’š™Ÿ›‹‰“œŠš–—––Œ””‘¡Ž“•š””““˜“’’˜“”˜š”™–˜¥–’•˜“‹“ކ’Š—š’’—‘Œ—£—¢…’“¤’””•’”“‰’¨•”•“—’›š•‘ š‰Ž’‘£Œ “’—Ÿ’ŒŒ¢”¡‹’”’ž’’”…•Œ˜˜’’¤’–’“•’“–™–Ž—™““’”‘•’“–•“––œ“¢‘–ž”’ž’Ÿ‹Œ›Œ§š”˜’“’’˜“™’‰‘’’‘’’˜“Ž“œŠ’Ž“¥–“—‘¥•›•‘¡’† Œ’”’“˜ŒŽ›¡’ˆ‹†¨˜’—‘™•œ‘”•™–—‹œ•””ž™Ÿ™‹’šš—’’“’‘”“ž Œ–“˜’’’“’œ•˜’™’£ž¢•’“~’”š’’‹ˆ¦‘š‘Šš›—‘›‰ Žš‹•’”Ÿ™ž’ž™’‘•™•“šŸ¡Ž’ž›…”‹˜‘…‘’¨’’¤‰¤™’‘—’’’‘‹–‘—–Œ–¥’’Žž‡”ž•’“’“¥–•‘’Ž’–𢗒œ™’ˆ‘Ÿœ’Œ”Œ˜’”£˜¡’’’›•’•Ÿ—’™”’’ž©Ž¡–’œ‘–œœ’…’œ™ •‘†Œ‘•’•Ž¡’–˜š¡š›“œ˜µŸµŒ˜›¤˜“™š‰«¡š¥•¤š‰šŒ“ £“‹™‘–““™““œ“±–™”œ£ž’¥‹“–Ž™›ž“‘¨Š“«˜™•œ—‘”“𓦙Ÿ™–‰¬›““…ˆ†••°“–¦Ÿ—¬˜Š”“š‘ ƒ–ƒž¢Š ›“‚“¡ …‰“““ ““ –¹¬•Žž“”“‹““‹š”¦“’}б©”“”“¯˜›†““£¡™†–™“œ“¥®¢ª˜“Ÿ‘§œ˜¡²¡¥‘“‹“ ‘“Š¥­£“«š““Y”„¥‹¤’–“‰¡¡˜“‰“—‘Ž’”œ¢—–“z𦓔¤¬§‘šš™“’—‘— ›‘£§¡”•˜‘›––™—™”›““—’¥˜—“Žš–”’’•’’š™ž¡š” –›–‘’’¦”˜˜¡™’—•Š’–˜ˆ•ž—˜‡’‘ž˜šš•Ž›…™šœ’Ÿ“£–“—’’™‘–œ—•–’œ’­’‘•–Š‘’˜’˜š—žŒ‘’’¥’’š†˜š¡”š’”’”’›’›š˜’‘Œ£—š—’’’š—–˜’’””’Š’“ª˜˜™•–’œ–—–••œ–•œ’’‘–’˜™¦–’™™’’—™’œ“•—•”¢˜’˜“ Ž‘’•ž—”’”‰–’˜—™š›“¢–¡”—•Ÿ’¤–•“• –“š”–’›“”’“–•”’––”Ž—“””’””˜ Š¢–‘Œ–ž“’£–”•’‘”˜—••””œ“–”›™ •ˆ•™”‘‹œ—™™œŽ–š””œ•†œ’‰‘“”–˜›¤˜’š”˜—–™—–œ„™–““”’“žŽ›”˜”’™””Ÿ—§”›’–”””””™”“–Ÿ˜Ž”•’‡•›”‘””” š’˜””•–˜•‘›”Œ–™›˜˜•””˜—›œ™œ—˜š“”‘”›“”ŸšŒ”—–””—•˜ Œ‘”‰ž’•––”‘•”’ŽŒœ”ž–˜”•–›”›Ÿœ—”˜™›’ ’ˆ‰“’“—‰•›‘•”“—‹–”“™˜“Ž•›œ“›‘Ž•“““’’‘–œŒ˜–—˜–‘”’•–—™›˜“’ž”—’œš˜›“‹›“Ž›¡œ”—Š•œœ“™•”¡š’¥“•œŒ™”˜—“–‘‘•“œ…˜™—‹“Ž–’žŽ“•’Ž”’“”§’“˜“’“‹’••’Ž—–›“““’ž•Ÿ’““’˜Žœ’“’Ÿ••–’ˆšš•’ž““’–”¡šŒ™€–šš’†“–ž’ž•{•“”—’’™—¡—’ “––““”““Ž’’˜‘•œ“’”Ÿ–’•’—™ “›–š“‘—”™“Ÿš™’“˜—‘—–›•‘‘˜—‘“™“’“˜˜“““’–œš™‘™™ŸŸŽ“Ÿ–’œ”“•”™“—›‘’’˜Ÿ•”˜š’“˜š›Œ˜œŽ˜˜“«—œ£”˜“ž“Œ“‘ž—••“™“ŒŽ–‘’›——•“–’Ÿ•£’“–’–›’“”‰–—““›’”’–“‘œ‘“•—Ÿ˜¡”““’–—™‘’“œ‰˜—™”™’””š“““‘˜¤”Š–—’““œŒ’•“¤“’•“’’™“•›Ž–“™Ž–˜™˜“š’žž››ž’‘””“Š•œ’—š“ž”–Žœ“”¡šš‘––•¡‘›’œ•°ž‘›Ž“•‘’‚‘“—𛓓™“’•ž€˜ŒŠ™™œŽ’š”žœ˜šˆ““–¡Œ‡’˜–•”‰„€ˆ“Š–›™Ÿš“”Ž’~’”𙇗𓔔–“‡Š˜’‘‘’” —„’””‚’”—’œ’Š«’’ž˜¦•˜™“’“‰’‡š’˜’›”—“—˜”¥•”““’ž—‹˜’“™˜¤’Œ–’˜š™™˜›’’”–˜”›˜—‘’”“ š’Œ™›Š“¦™’’—Ž““›ƒ’£˜—”“‰ “•’‹‰š–œ£Ž“’ƒ’››š“ ‡’“”•š•™——Ž˜—–’“œ•˜œ““˜˜”“—’­–œ“•‡™“““““–˜’™ˆ“—ž’𙓕›†œ–˜•—“•–Ž“˜––›’˜“‘‘’šœ––ž””š“—˜¥Ÿ•—“““–—™’˜“œ—‘–‘—œ˜š‘‘“˜’‘˜”{““•“““””“— ’“–““˜‘“š›œ˜›“˜–™’›¡“”“’š”ž““‘‘š¡”‘›š–Ž“”•”–œšŸœ––““™“šŸ“ ’”˜“•—““‘œ•“•™”›•›““”š“›““™™”¦—œ“Ÿ–“Ž—–“ž˜˜š¨›œ•“¢—‰Ÿ‘œ–›‘ž”ž™‘•–’“›–—“›‘œ ™›“¢•™”“—““•˜‹– ƒ–’‰›““•‰•—’š™“š’‘–“™œ‘˜’““¢—›”–”’•™˜“•“œ“œ–‘“Ї”•˜™““‹–•’’‹••‡‘—“™—•¡“š““™““•ƒ”˜–™—“““Ž“–™“‰›‘—“’”Œ’ž˜¦“““‹”–““—”‰•–”‘”—œ“••“…¡’˜˜” š•“£“”ž“Ÿ”q“Ž—““™Žž”˜‘“—“—›œ–“““ž’§›Š™—–““˜˜“˜˜‘•š˜œ‹“œ‡”–“‘•’‘¥™“Ž™’–”‡•—ŽŒ”¥”’›–”“•““š™š ”š‘ƒ’œ“œœ‘“›“”“œ—–““™“²•’”™¡“™š˜“’•§›—’”˜’‡†œš’“œ„•”œ”‘““Ž Ž—’ž‚ˆ–‘“™¢’š—“““‘‰““­€”š—“’“­“–š“‘—Ž”—“–™ž{¤Œ“”“‘”™““‘‘ŸŽ–“’šŽ‘š––š“™Ž™–’Ž—˜“—““—“®™‰™“™““˜Ž•Žˆ“ž—–’š–”“•“Œ‘šš¢Œ”‘”“œ”“—•Ÿ•€”•–“Ÿ“› –“”—˜˜™’’˜•› •¡ˆ—•Œ™“•› ”ŽŒ›œ”””“™–Ž›› ——“ª‘“’–‘‘œ”‘ ”“’ˆ”§š”š‰–Ž”Ž—•˜”Ÿ™™––•™”ž‘¥”’Ÿ˜™”ˆ–“’œŸ•”Š“¢›”’«‡”–”–“š•¬Ž“”–””š“š›˜”•”š“Ž›“”™›Ÿ‚”“˜’¨œ’”””š–˜“”¢‹“„ ”•–›£¡—𔋕”†’§’—œ›Š”’”™‘”ŒžŠ‰”‹¡””•”•Œ™–”‹ž˜”—–”˜”—š–š—””‘’›”œšž•¢’“Œ†“ž”›š•–’”˜•Ÿ–˜“™–’•—˜‘”–›–•““‰“¢”•““”““›•™™˜•š¡”œ”“”…š˜˜›™“Ÿœ›–““ŽŠ‘“•”“–—ž’ŽšŽ’”š–‘“—–} ˜ˆœ•“‘š’™‘©’““¤ˆ“¢‰”–™“ ™ž‘—¨“•“”–““›Ÿ„“”“”“™“”™“’’—”®“–“šœž“““’›”““™‹˜“’˜™Ž•“„••—˜¦Ž›—¤“Š“•“ž•~’“˜’““Ÿ›“‘’— “†˜•𢖗“–˜“—”ˆ›’ƒ–“žŠ“–˜—ޝ”’”“–Œ–š—’—–œ˜“”™œ•–—”—”•—š™”•› ””™““–”š‘œ˜šš–—š”“˜’“˜ –—“–””˜“™™‘™—œ™”‘›”’–šš’•™›“ƒ“™“‘‘‘–”•”›——™™™“‘•“’’‘’“”’—“’››‘¡““‘—““•™™“‘š””““—›“š•—””“•–“›š–™””“ž˜˜–“”•˜’“™š”“š™œ›”™”š—•”•——§›—•“”—˜“—œž”“•™““—˜”•ž‘”––‘š›”˜”›–“——›•š™——“–“ˆ–•“•˜—–‘••šš’™–…‰¢‘•—‹•’¡“‹—“Š™’—Ž”œ‘“’ˆ”–’’’‰’’–‘•Ÿˆ”˜‹”–’•—œ”•˜•˜’šœŽœ’•Á‘Ÿ•Ž©’“’¦‹œ‰“‘‹”’†Œ¡’‹†š’›šœ–˜ŽŸ’˜“Œ”ޙС…”’™˜‡”¤’”’š’’”«ª’—Ž‘’’’™’‘™’˜’–¥’“‰«Œ’’’–Š‘‡’’––¤ˆ–‘Ž“–Ž™’š˜”Ÿ’“¦šŽ——’Š’˜˜’›˜‘“’š•’’’‹›““““”œœ’—Š’ŒŠ‰–‰–’‡’“ž’“˜•‘„Ÿ›Žœ””’“•—•Ž›’œ’““˜“–‘•”––•””’ž’—””‘””•™Ž›ŒŒ––—–”––’—šœ”–œ’‘”—“…‘‰‘“œ”œš“™‘–•“”Ÿš™•‘–”™—™™’Ÿ—”’œ’—‘•Œ‰’‘”—˜ˆš”‘”””“””•–——’Ž”””“’““ž˜”™œ”Œ—†–—”””—œ™Ž“”‘™Ž–™”ž™””—”ˆ—‘•œ”£š“•–”“”¡•”¢’˜–””™”””š‹—„•”•–•—•”’“”“–‹’””–‰ž”’—‘—œŽ“†“’–‹•¥š”ž˜›—¢•‘š’—™•—“𙕔—™“ž——““–““˜˜“›Ÿ£™”–™““‘Ž˜“˜˜š“™›™““˜„ ™“¢“•‘”—˜™’–’”•—“‹”„žŒ›™•““•š™Ÿ“™““•š›˜ ˜‘”Ÿ“ŸŸ“”£“–“¡““š‘´–›ŠŸ“”“‘“‘—“•›Ž—Ÿ““’†’¤Š“”“–•– ““Š”•’““Ž••’šš—“Œ—“–‘•œœ””ª“‹“”“™šŒ“˜˜““˜Ÿ—”Žž“‚››š——“©““•–Œ’™˜”š“ž”“Ÿ——“—ž•–’‘˜Ž¥—”‘‘‘“––“““™›”‡™—‘ š‹˜š˜“”–™’“’“’––˜™š’•ž”Œ‘¤Ÿ’˜ŽŒŽ–—œ–’—”Ÿ’’‘™‹™“˜‰’•˜Ž™•–‘—˜—’•™“¨‘˜Œœ’Ž•—› ˜”˜’Œ —›’œ’ž‘“†’—Ž—‘Œ’‹’‘¥’’–•¦›“–—“”’Œ’˜™’”“•š‹’™““‘—™’”’—”œ”’“˜’–š ž”’š˜˜œ’˜‘”™˜¦˜“™ž’ƒ’•’’£™•’—‘’’–™¡š”ž“ ‘›™“𕓉’‘›•Œž—˜™™’¤”’”™™Œ¦•–“—˜•—Ÿ˜“““ž‘Ÿ¢˜™›Ž›‹—”–Œ›˜”™œœ“›Šœ““–’’˜–£”••¢“—•”ž™’™¦•’𙋢“ •˜’’𔥔œ‹“’š—ž•š•˜—™›š“”™“—¡£˜˜“Ÿ—‘—™œ  ’’—ž‘›–›—•™’¢ž›®‹’Ž’›˜’’››¡œ•ªš“‘“£’˜’œšš—’—’˜œ¤““’›š•š’““ž¡››“–›—˜š“ž“–ž™™‘ª—›¡’“™’¡™Ž’œ’’”•›œ›Ž”£—š˜“›’•ž¢Ÿ š•˜–“’–™’’™™•š— ›™š’›••™‹††ŒŒ“›“Œ“—’“–ˆ˜Œ‡““‘’’’‘’’‘‹œ“˜”’¤’–‘’‘¢‘–‰’—“Ž’Ž‘”žŽŽ’‡‰—‹‰•“‘˜’““š‘›•“˜’œ•””““’ž•‘’”žŠ“‘Œ’‹Ž—Œ’’‘˜’’‘šŽ’“‘’’’’‘™’šŠ˜’’“’’š˜’’‘———’„‘‘”‘’••˜”ž‰Ž˜’‘’˜š’‘’˜“’–’’’Ž‘Žœ‡“’‘Ž‘—‘“¢“Ž‹˜Ž–‹‘’‡’“”—•—œŽž“š‘£”‘”‘—¦˜“˜‘‘•§–Š”‘—–“–Ž–Ÿ“”“•““š“’“’“”–‘—”˜—›”’”‘Ÿ‘“˜–““Œ“šœ›“Š”‘“‘““™“’•™•“’’š˜•”‘“ž‰•””™Œ‘“”˜¦‹”••žŒƒ†““‘—–І’ž’†’““š›š¤™“’“¡’š–’‡›––“““¥’••““““˜™˜’“š—¥ŽŸ”’¡”–Ÿ™–‘“ž–¥š—’‡¨š™‘’–“–ž’Œšž“•˜’’–‡Ž˜Œ˜‹”——•˜••“—’“”’›™–“”œ•’‘™‘’•“’“›¥“ œ¯˜‘’Ž¢¥”ˆ”—“–—‘“œ—“˜•“Ÿ‘š“•”—Ž”“‘“““™““§‚””•œ”“™ˆ£•Ž•Ÿ™“ŽŽ˜•“¢“”™¨Ÿ„“••¡•“–ž•Ž’Œ˜‘œ”™›“Žš’Œ™‘Ž“Ÿ—””—˜œ~”¨“™›Ÿ‘”–’›“”—““’‰‹•ž”‘“’“ž“™—“’’š˜““œ›•“”‹š“”“’’““¡ž–Ž¢“¬‘”š—’’“Š–©”™”¡˜•““––“‡•œ “œ˜““—š¤˜”ž•“›•——“•“‘‘“—… Ž™š™”™“Š¡•“•“”——”—™’—“˜’Œž¡’“••’Œ””‹’˜‘Ÿ”˜•…”Ž’•’“—’’•’’”›’§Š”‰–Ÿ•’’Žœ’’Ÿ—’”–› ’š‘ ‹¥§¨¤’›š‘›‹“—œœ—˜‘Œ•š›œ›š’˜‹ ‘••›•’‘”‚‘‘•™–“…‘›’””™•©’‘‰‘Ž‘’’ª™—ž‘‘’¨‘’“‘”•’’”•¥•’’’—Ž¢”‘’‘•œš£’¢˜”——Ž’‘”¨™˜“˜ž•š’œ’˜œ’¢‘’•’““‘‘˜Ÿ¢—‘¦˜’’•—“˜–’‘•’Š’—•Š””’—”’’‘”Žœ˜£•’¥‘¡š˜“š‡œ—•™“”Ÿ¡›‘œ‘•Ÿžž¥”Š’§Ÿ™’’Š’‘œŠŽš†¤¡œ¥–—™’›ˆŽ¡ŒŸ”’’‘£‡’ƒ“’›Œ’’•—–’‘•“–•’›œ™‘Žœ›’”¥˜’š¡”’šž~‹“ „“’ –’•š›­‹‘”‘•‘’—œ£˜’£–’’’…‘™‘‰–Š—™’”‘•–š”›’“’𢑓‘’ •–œ’Œ˜•œ™–ž’†™“‚“šŒ–ššŸ’’—‘~—Šˆ’”’’‘œ˜™’¡¢¤‘ˆ’šžœ”’‘š’§ž™““ŽŸŒ–’—–Ž’‡”—¡ž™•”¡—€—š˜’š™¤™ž’˜—˜š•š–“¡™›|“›”–š––””—”“—œ˜Œš•“™…˜–š“Ÿƒ˜•¡’Ÿ”¤œŸ““˜œ”––œ”—žœ–›œ“—£ Š“•™—›Œ–”š‘“ž–•¥““˜–˜”›“Ž’——“¡™—“¡™“‡“’™“”œ›Ž‰˜”“”¡“•¥“œ–¡™‹”šœ–zšž““”“Ž•˜“”œž™š‘”””—”›˜œš”‘™–‹š™‰Ž™¢”“”šŒ“šš‘—“— ““˜–’™‘‹‰”œ¨— œ“˜”š–“•œ™’—– “—˜“–˜š“¥™š’©•Ž”ž“™—š’š¦Ž•”‘”“”™™–Š”””“’–›””™““””—““–¢’‘Š“•™—““—–‰—’—–“•—•Ž“••‡•‘‘ˆ”‘“˜œ•’‘‹—–Š“”–•‡–’“š›…”š˜–•“¢•›•˜—‘•‹˜“–•šš‘Œ’•“”—““š“¡’™›“’“Ž“–œ“›’ž–“”””“ ž™””“™”Œ“”˜™–Œ—”–•™•™•›“”˜š”˜Ÿ›—ž“ˆ”“”““œ–Š“••““Žƒ”–šž‘’Œ–’•“˜“”z”“Ž“‘“˜œ˜Ž““”•“”—•–š˜“ž¡“•“–‘œ¢””–––“”Ž’“•˜‰’›”š•˜””’““•˜˜Ÿ˜—•–—’’Ÿ˜“˜–”œš“˜–”“—”ž‘’“Ž›•›’˜š‘–’“›•†’”š’”“œ–“˜–•’””“•šœšš™›•Ž”›Ž¢”˜“’™““’šˆ“š””““““”™“š™’—•“––Ž‘ž”””“”›–™“”™˜ž–—•”•–š’’“—”𔓗•—’’“’“‘”¢˜“—•ˆ‘“œ””“•“™’””’›“›˜—”œŽ““šŽ”ž’–›•˜“Ÿ —“ œš–’˜™Œž“œ•’–’™’”–˜Ÿ”’––¦›”’‘——™’•—“–”ž““’““•™œ™˜Ÿž•›š“£”““Ž˜Ž›”ž““•—’‘““•ƒ˜˜šŽ“šž•“–Žš™Ž–•”‚•—”“˜—•“˜”‹–š’—“•–žš“‘™ŽŠ”™“”˜‰™£“““’›““™˜“Œ•““”“ž“›Œ“™Œ”™“‘¢¤˜Œ”””“–›˜““—Ž–˜”—•œ––Ž‘“Œ’”†™œ“™˜•“•“˜“™•—š“˜‘“““”ž›ž’•Œ”™•˜”˜”ž•—–œ“–—““‹–“˜˜š˜™Ž—‘‘”™•—“˜˜”•”˜œŸ—”˜Ÿ–“™–••Ÿ’šž”Œ™¡”—••””“””š—•“ž•˜ž’•Ÿ””“Š—“œ˜—–”—˜”“”š“”š˜Ž”š›—“—”•œ˜˜œ•”›“‚‘”•ž”•’”’ž¡“”›š•–—˜˜˜——”˜¤’›˜›”•”“š””˜–”•”“”š”˜™””—˜Ž”•‘˜“›˜—”•”˜˜––“”•›”‘–š”™›šž˜™””“”’”Ÿ’—žš””””“’”–œ¡™”–™””–“•˜—Ÿš”˜–›˜”™˜”Š•”–˜–“š˜”’””˜šš””œ›¤Ž™”™“”𦕑’œ„Ÿ—™‘“••’𛓔’ž’“’–“Ÿ””““Ž““‘•—”‰•›”‹““”“–˜‘—œ—“šž‘›“«’””•ª“™…–’—’–˜•Ž’–Ž—’›–š“›˜”—–›š“˜•‡£’—™Žž–›“›—ž“…©“¢““““˜–—”˜’–““““𔓔“•š“”™„‘““”“”•••““˜•™–š•“——”“˜”—“”‘—¥—š˜‘—Ÿ“‘“š“Ÿ“šš“‘““’”˜——‘“Ž“—š••“Œ”“Š™…’“–“˜”“—–“™—”›Š•”––š™–”•“œ–£œ•“•›•’š——‘™“–—˜Ÿ˜›”“”–˜””–””––“˜”•”›ˆ–™””–™˜––—‘™”𣕔¥”Ž•“Ž™”••˜˜•˜•––™“”“Ž˜‘˜›”’––—œ–—”—•¢‘‘’–”‘”–’—˜œ”Ÿ””–””ž›ˆ••˜š”””—“’š“Œ˜˜’”––—ƒšž“”””™–™œ“”‘Ÿ˜˜•™”–˜˜œœ–””Œ“›’™˜–œš˜””›—”“—‰”•œ””šŸ˜–•‘”””š“–’š”ž””•™—™¢–”š–”…˜”›š››‘™“‘”ž‘”˜Œ˜“–˜“”™Ž”Œ”‘š””“—•‘˜•–‡”™”•‘•“”˜”“’Œž”¤••˜“ ˜“‘‰›”•‘™“”œ““—š—‘“˜’’“”•©”””“Ž™’—•““žš–””Œ”ŸŠ•“–’ŽŒ“”““–ˆ‘““‘Ž“”“•Œ’“”““›“‰‘“˜”“•“’’‘š—Œ‰”“““‘›•“””’•™œ”œ——”’Ž“™–Ž›“——•“–“‰””Ž“‘“š“œ’““‘ŠŽ‘””¤“””’“•‘•”˜”“’“šš”Ž—•“’¡˜“”’••““š’“‹“Š‘— ™•“”¡’’Ÿ’˜’Ž‘’”“”––”“•““•–š’’­—‹°’“•˜¤”“†’–“Ž”“—­˜•¬Ž“šœ‘¢š“ŠŽ‘–˜“…‘™Ž£›–𓼕ž”š•““ª’“‘¥—©“”“–š“’“›“¤“’„““‰¢–”›’Ž“““¤“•’“•—’‘›““𧉓‰•“”“‘£‹““–™¤‘¢””Ÿš‘’“‘‘“ ‘—¥“›ŒŸˆ—““Œ‹“–Žª¥“—–““’Œ•“Œ““§’“‘Œ“Š’“–Ÿ§”žœ”–““Žš›“‰Œ‰˜ƒ—›’’Š‘”“Š–•œ’’‘Œ”–œ™‹—‘—›‘”~—•“˜’—˜““”’’ž›˜”˜—š‘š–’~‘–“™““š™œ‘’‘•–“”Œ“˜““–‘˜•™‘›œ“Ž—”–Š›““Œ“–œ™˜’‘’”™”––ž‹Šš“ކ••›’’’Ž‹’“™”™›š“”“˜’™”’–’‘”¤“’’‘Œ‰Ž–““’›™š’“Ž“•“™“žš‘œ˜’’—–““—‘£˜Ž”™’—“˜”’˜—–•’’’’’Ž•™•–š“˜”˜˜—•𓉓“›¡©›Ž‰™‘’—¤’’–œš‰Œ‘‘•“•˜¦—Œ‘  œ’’Ž”“¢–’”•›˜‘Ÿš’–“™•“““““”‘ˆ’Ž‹ž“šš–’–“’”—’Ž–““Ž”™Ž““ƒ“’›’™“”Ÿ•š–“–––”“’›’›™––š–“’•”“”–“”“–Œ’’™—š™Ž‘“’”•˜ž„’š“’•““’˜•–™ŸŽ“““‘“’““–Ž–—“”•™‹–“š“““–”𒓔𗛓ޕ•’•Ž“Œ”ž‹——’—•••“–“”£“¥‰“•‘““’–š—–£’Ž”’’”“”’¦˜¦•”Š–•’“‡‘Ÿ“‘“™“žœ‰“™•——•‘”‹˜š—‘’•—“•“–˜•œ•—•––““œ––““““—“••–‘˜”–Ž“”“•’’˜•’—“˜œ”’“””Ž‘ž”œ“—™™“–“”‘“•”’–“™’–‘™“”“’–™•˜•“Ž”™””””’˜“”—“˜—’•Œ›“““‘—““•˜„–‘”“‘““𔓑––˜“”•Šš”—™“““’—””““––•”““Ž—–““•™“Œ••”–—…–––’“ž“™•“Ž”™•“•”““–•’’˜Œ“—•˜—–“™““”“’ˆž•”–“”“™’‘“••––“—’–““––‘š—•œ‘ž”•¢“‘žš‘›™˜—™•§”“”‰›¢““ž““–˜‘Ÿ „Ÿ™™˜™‘“– š—•‚œ“œ˜“™”r™œ‡‹‚“…žž—“š““˜–‘“¤——£’“—’—›“—–ž“‡–˜—˜Šœ•ž–†“œ“— …““‘ ““ŸŠŠ””˜•“’“”““š“—–Ž•›“‹œŸŽ¡š“”“–¡‘—““Œ¥Œ›“™’Ž–”œ“––˜„–•˜“–˜š“˜“ž “™™„ƒ“‡›““—‰‘£šŠ“‰•–•“š—“™ž¨”˜”˜”’“›„’“šš™ŽŸ–˜’‘““™–’—™’–—’‘™›“‘”˜™••–““‘™•Ž“–𔓗𓔔’““–Œ˜œ‘–™•–“𔓖–•—–š”—“š“› —–˜–”–”™™–•’”•”’•“¡•ž™š›‘”’“˜š“’—™“¤˜‰•‘˜˜–™š“•”›¡™—“““—“““ž‘œž‘“”””“““œ““•šœ““””ˆ•˜‘””“”¡›™“”‘”••’š”—š“’‘•›”——–šš’•ž—˜““”—˜““¢˜“—‘”“™—™––’”–™š›—”¢”“”–—•”‰–—’“™“š“–’—Œ‘“—“žš‰’—””™Ž“‘™—’–Ÿ–¢–‘–˜˜”œ™Ž“››“˜•”““—“’–”‘‘œŒ˜—’¡‘–’˜…‰•–”’š’——˜’’Ÿ›Œ”—•Ž“””“ž’—”›—™™’Ž—Ž’“œ“¡‰–›™œ”•’–”š—‘–‘œœ”’•›–˜ƒ’“’’’˜—–’–›“’’•’œ’˜–—–Œ’––ŠŸ™™¢““’•“’–’“– ”—›˜“•›™™šš•“•“—””—”ž˜œ’š“’š’¡—–’˜™“’—’“ •“Ž“”–š˜’“–“™›’—žšƒš ›–’“”’–œ˜¡š‘š™™””–—˜•”’š’›—š˜“—›’’’––˜–“”‘—”“’‘“”””““—š™Ž‘–””–“˜““• “–“˜˜›”‘–’“¡’† Ž—”š”—š“•—“”–““”˜”¡•”•œš™›”Ÿ•’—˜”›””§’”™•“˜”¢š”––«•~”–”˜“”™‹•˜–•”’”““š“ “•–‹”““Œ’™”–””“”•™““”•¥’Ž‘•”–•Ÿ˜›‘”›••‘–”Œ“™˜‘“””“““––’”™œ”““Ž˜–“‘“”‘–”˜••”‹˜“™•›–š–™“•”—“”•”•™—˜—•‡“™‘Љ“”–”–™•–’“–‘‹“•”š–“‘—¡Œ“•›“–““•““• –•™‘’©”’“•¥‘—‘›—“–œŽŽ“–››šš›”“š—“’–˜‘™š““™’›‘’’‘”“¤•–’”“œ“˜““‘”“¢•Š –“—˜™‘˜“’“”““”“£‘‰“‘“’“•“¥“”˜“‘—šŽ§“““‘‘““—•‘Ž““–‘’•‘“™“–’›’–’“›“–“ž£Ÿ“›–““—˜”‘’››“ šŒ™™”“˜•“’’˜–£––¢”—“”›“•‘“•™›–“˜“”Œ“ŒžŽ–‰Œ•”““’’Ž•š”š‘—”’“–“‘““’“’“•œ‡‹—™“™•”˜“–™—–˜Ÿ•“–’‘•“•—œ—’¥œ®“›–”š‘Ž“•”’Ž’’–“˜•“š•˜—’“–““”•‘‘’”Œ—˜™““š‘ˆ“’’”‰““Œª–•“•’“““’𙒔ޕ’ž“”““Š”œ•“““–”™’“•˜—™“‘“Œ”“‘”•”“‘”“—–‰’—›“š“–—“–Š›“Œ”’“—‘š›Œ™“š’‘›”“¤““™˜™“•——”—’•‹›“–‘–›œœ““ª”“•••“••“’›Œœ’Ž’”˜“Œ”ŒŽ™”‘š‰““”““Ž”’’Œ˜‹’™’‘–“”‹–”“““Ž’˜”“”—‡˜•›™“•”“•œ’Ž”ŽŒ“Œ‘‹„–••“—“˜™’“’”—–“˜˜˜•“–•‰Žœ“•“Œ‡““Ž•–Ž‘‘Ž“‘“”“–•“Œ‘’““’›Œ–žš““““•Œ““—’–—˜“—‹’•‘““”˜–•™ŽŽ–˜’—“”“‘•““•–“›“““‹‘Œ™””•’’•Œ””•““Ž—™“œœŸ—““–—™“’“š’•’¡—•’›‘—™˜”“‘”‘–š‘šŽ£“””‘‘“’’’““¦’¥–—™š™›’–‚šƒŽ•–’’œ˜’’œ¤¥–’—‘’“˜Ÿ£™Œš–‹˜’¡˜ª–˜–’š’’œ›‘”—’‡™“•———‘“’––Ž•“’›’”’’“š‚’š—‹’’ž’‘™’Œ—‘—–’˜š›‰¥‹’“’šœ”’’™šœš—’—ž”œŒ–“š˜š’™Ž™œ’’’œ™’‹”¡“’›–’’˜›‘¢Ž™“’””›œ–™“˜†’›š˜š«Ÿš–¥™’˜¤—’›Žœ–„Ž˜—™•––™–“˜•–•–”–“•—–””•’•–”™–•’—˜••—•–••••••••“’”–”–‘–”˜•“›••—•””•”’™••“—™•”••••••’–—””˜›—•˜••—”“•–•“•–•”“•’–••“‘”—“–—𙓕•——”™—•–••“••““–––”•••“•”“•’™‘–••™”™˜›’••••––•–••••š–—••”—“•“••”•–•—˜™“–‘•••”••”“›”•”“••–—–’–˜•••”™”•˜••’–•–”–•”””——”•”›—•””“–•–•–•“œ“Ÿ™©šž¥¡“œ¥’Ž˜——“—𛓔‘˜®“—’˜‘““•““–•šª“Ÿ™›’–¥“‹‹ž•‘§—©“¡™‘“£¢Ž”˜š˜‘“’˜›žŸ”›—š›—“©”«›•¡™œ“”‘‘šš•›“žŽ“ŽŽ¥Œ‰•“¤¡£ž–“ ’“Ÿ““’‡”œ¢ž˜“““›’•¢“š›™œ†“–œš“““™–›—’“’£‘™–“©—Ÿ™¢§“‹Ÿ™œ˜Ÿ”𣓗“ ˜“œ •™“‘¦““•Žž“–¥—“›“£œ§™“y’“ž—›¡Ÿ˜‹ž¢—“œ‡—“£—¡š’™”›“”’”†•™“—“—“ Ÿ•¡˜——–™˜–Ž’›–””™”—›–˜””—””–›••“˜–˜“•¤—”œ™—˜˜œ”™—’–”™œz——’”𔓖œ‘™˜”—ˆ—›•”’›Ž“—••–”œŽ˜”šš””‘”˜”š“Ž‹Ÿ–˜””žš”“š”Ž”•›””—Š“—š“”””“““—“”•˜ƒ”˜”°˜”—”””™—•™“”œ™š››š””–𛓖˜”‘”›šˆŠ ”Œ”›”œ˜””—”˜–””™••™Ÿ‡””™—šš”˜”¢–”—œ‘˜ž ”Ÿ”–””™›™™—šŽ•˜“™‘˜––”›–˜Œ–š“˜›•’‘–“™“Ž–‰—š””ˆ•‘““Ž““•˜’”Ž™™“”—”“’“›–™””’•“‘–“ž–ˆ–“”•‹“Ž™“”–”“‘—•“››˜™–—“‘‘”“–“‘“‘•‘‹ª”†—•“™—”–›z“˜“’““Žš–—”–“’“™“’•“œ•˜–“œ›š£••“”“’Œ˜•““žŸ‘•™Ž“š‘“™”“““—’•’¨›—†“™“’™“’´’“š–““™ž““’Ÿ”‘š“–“¢“”ž•œ“•— —˜—“‡–“‘“‘œ“–˜Œ”•®–ž–“˜“¢™Š“˜‘—ž™™šŽ”—¢’˜”“”™œ••””•““𬗕¢˜–Œ’Ÿœ“Š•˜•”‰•““˜ “’””™–”z”ˆ¡›•“𙕦ž–•“•–𛑑•”‘•œ“™•—–“‘˜Œ•‘—“Ÿ™¤Ž“•–˜— “‘“›£““™…›Ÿ’““–“““•˜“•œ”™š“˜–Ÿª¢””“— š”“”‘‘™–™”—––•”™š“’˜”Ž“—•™‘–“œ”š›“ˆ—®’“›š““’”‘’›””›–”™˜•”ˆ’“¢™¡•›‘“Ž“ –’“—–œ“š—›—‘”œ•›“¢™‘˜–—•ž“˜š˜ž“™””š“Œ•—”‘‰ Ÿ””›““——¨ŸŒ’–‹’ ™“œ›™™Ÿ“—“œ™••“˜ ›“’–––”‘•Ÿ•—Ÿ”›œ™–—“˜”¡”–‹““”’Ž™››˜™™“™“’‘›˜‘”ˆ’“˜š’™’‹“Ž““—““š–œŸ™““”¡“ “”’ ™’“šŸ”‹–›”””“¡ž“˜“”Ÿ™•“–””ž™™Ÿš™¢“”˜“™˜— ™——Ž“”¤’“–®œ“““›‡”–š‘”š›“Ÿ¢šš”¢–“’–”œ¥›™™–“”•›“¢™ž•™Ž“–„”›“™™š•™““™™‡”“–˜Ž‘—•”““˜‰”“““““—–”Ž›™—˜”’”““Ÿ™‹—˜•“–—”Œ“˜‘’•˜‘’“’œ–˜™’Œ–“œ“›—–•”•——“›—Œ—Ž˜š—“—“–•Ž’•œ•„—Œ“˜‘’•œ›“’’˜“““œ‘ޓ𕓔“¢“•“•—–”‘“–œ¨˜“““’—–•““–š˜•˜“———›–•“Ž‘™‡–˜˜—”“‘“—š““—‹“‘˜““š˜š”£‹“š–“˜œ’—“¢—“œ˜˜˜’Ž˜•”“Ž–‰“œ”•—‰——”‰Ž•‘Ÿ–“”‘”£œ”–œ™•™’–’–‘“žšœ›””‘¥š””“””š™˜“¥•“£—šž“”“™”‘’••”𙓔”‰—–˜˜—Ž”—•ž“‰–”–‘ ›””ˆ‘•£Ÿ”””’‘  •“””‘••’š–•š˜”“¡‘™–¥”•”” ””ž—‰š‘“—”””““™“‘”–¤”“’–š“’“”””›•—’“”•””š”•—š˜œ”›‘“—’œ—š˜•‘”””•“”—˜š–”˜‘””““¡—”™˜Ž•˜—”—•“–•—’‡“”œ’’”Œž˜£”‹“”£”’•’”š—••”šž˜˜”“—š”˜—š“›–•——–š˜”’™——””—””˜–œ–˜œ“—›•”––”“”–™œ›–š”š–•”š—•˜˜™Œ”—œ—“™š”˜“–™˜”š•™••–”œ”•™›—›–””•™—”•“–—𑙔𕔙”œ”“””›””››™•Œ™”””•”—š”™˜•š•”–”““˜ ””•”™˜“™””–™—Ž—•—›œ›š›”–••š™–•—›””•”š”˜š•™”–™””––””–ž”–‘œ˜››˜”•””™”›—‘–˜–”—–—”˜™™™“›•–””›–”™‹›”£®’–“˜Ÿ”˜—’š‚š””“—“”››Œ’””š””—Žš“‰Š––™˜Ž—”’š“——Ÿˆ””šž•”‚‹–­’™g”‘¥–’‘—–œ•–‘”˜•‘˜’”Š•”•šŽ›™”Š™””–˜—ž’”—‹‰Ž‰“–”“””˜s›”… ””””“‘”“Š”‹—œ”’Ž™š‘ š”•”“ž””“”‹™…–Œ‘”Ÿ‘–Š˜ œ”›–‰•“”†“‰¡””œ”””“™z¡”’””’’™˜””­—‘”ž“”–”““›Ÿ¥„‹‘”¡Ž†”””›™¢ƒœ˜“œ’—Ž——“‘—‘–™—’–œ‘›“Œ–’›ž˜š—˜“’Ž““““““’’“Ž­Ÿ‹Ÿ–š—Ÿ”’˜š™’•”—“”“’‘’›––’“—š“Ž•›™—’›Ž”—˜“™—ž’’ž˜“’“›–™‘’’““’’“›“Œ¡‘“›šŠ’¤’’˜’’˜’“• ‘‘™–•’““›’’‹–”š–“”˜—”–““““”—›’““›”˜“•”•———Ž“—“›š’š¦’œŽ•’““—’—œŽ“™˜’’˜™’Ž¥•“‘˜’‘𔓗““Ž’’Ÿ•–˜›˜’•ž’œš Ÿ—‘™œ“™¡™•’––š–—’˜—•—‘™–“™“–œ‘“‘“”Ž–Ž““’’—™™”•––¢’”–’•Š•“Ž—•“•–’šƒ’‡•’”’”–—–•˜”’–„˜˜˜™š“ž—Žš™—“›—™‘Ž–’¤’–˜“—”’“Ž’’’“——ˆ—™““’”’’’˜˜•›—“–——œ™”“““’“˜’’“——••““–•œ–•’“Œ˜”’œ“–š•Ž’”““‹’“”©’’¥–“’“’’Œ—œ”“˜˜œ“’“}•’™•’—’——‘‘•“—™š’••—˜™›”€“™“ˆ”˜‘”‘”‘”–“˜˜”˜”•‘’‹Œ’•‘“’“ž™”™““Š““””Š“‘Žž‘“››ž“—™›Š•”‹•““›Š—“𑒔ޒ”“‘“”š’—–”…”’“”ˆ•”’“•‘•“¡’†•–•˜’“–’Ÿ“•’•Š™––“”‰–§’“”™““”¢œ’‘ –“““–““”“”‘–’˜“‘˜ ”Š“““”––““—›œŽ”–“””š˜•““Ž“£”–‘Ž–––““•˜“–—Ž“”–““”‘–‘™”‰‘‹–‘‘š“’“Ž˜“““–Š˜“š–‘—“Š”“–••”–˜†’“–“œ›¦‘›˜•”“ž‚œž–—’”™Ÿ˜¨”—“”ˆŸ¢““‹““™˜¦›†¤§›Žš©œ’£Žˆ‘™‘“œŠ™–“ˆ› ©}•Ž “›¢““¦•“—›“¤’ž§Š”¡ƒ“‹žš“ž’‡•’—˜žš‡›“–˜¦–Ÿ“Ÿ’œ’“…–™Œ“–“’”‘’”žŸ¥“’–~—‰‘“”“˜Ÿ™§’“Ї€šŠ›”‡•’‘•“›•‡¢ž›—’˜’–“𗓉𖑓ދ“’‡Ÿ‘ …“’ŠŒ••Ÿ“·Œ’¦—˜…œ“••“‰ƒ™“¤¤’¤’‹œŽ“’˜™‘œŠš–œ”•–—“•‘™“‘’–‘”𤓑“–““–““’˜“œ˜“™‘¡‘™‘“““”™–’•š““’ŽŽ“”—Œ——”“›“’–’šš••’†”““™¤š“œŠ“•’“‘”“˜—““˜“”šŽˆ—•“•š•‘ˆ’”’••““”’ƒ“—’“”“˜“”“›“ž™“‘“˜”š—“““““‘•““–•”•‘›“•’‘˜Ž“‘“–’’‘“Ÿœ“’“’—“–”‰‘“•™“““’––”—““–™‹–•’•“™–“˜—œ“™˜˜–“‡Œ”“•”•‘£——•”•””Ÿ“•’•”¢˜˜”•™—”˜”™”š”’“”“–˜”Ž‘”—””–””˜—‘¡šŽŽ™˜—“”””–”š˜š”š”–¢“•”™“•œ’•”“‘œ˜œš”˜’˜š™”˜•—™”˜”Ÿ”“•—›•™—”•’›•“””˜•––“”——”šŠ””—””ž””“ž˜—’˜”””””•—”•™˜˜–”•˜‘””¡–”””˜›•””™ž“’–”‘š˜›–ž–”—•’™–’Ÿž›–•”“”›•”ž—‘“”˜š””˜›™’š’•”“’–™š—”˜”””‘• ›’˜œ—””’–”—™›œ””•”“—•”’—”‘•™“’˜›’–˜“š‘‘•“Ž”••”Ž“›“••““™““”Ÿ—š™”˜–Žš‘“•‰’“‘Ÿ™“”—“‘“˜™‹“—‘“–œ˜””†›–““–‹Œ–•“Œ‘”—–“˜“œ”“•”’–‹›––“–¥Š™†“‘“˜“““˜”Ž™‘““˜’š›’Š”•’Ÿ“–“›œ’›˜“”“•“–Ž’“”™—˜™”“›’—œ“‘•–›’“”“—“—“–›“š•‘”“”˜““œž““™™š“•“—›š’“”•“˜–˜–“’”—˜“ŽŒ™“”˜“‘’œ“–”™‘˜˜——’¤•”Ž––”“—’––•˜•—•”––”•’–™”””””“”–”›–•˜š•’”“†’•”—’””—•™”’‘™’˜›”§”–™”•—˜•“•˜”’““”™—”¤š’““—••”’‹’”–›™•–”“’š–”””˜”“•”””•©–”“–”•”—”›”•—”“”“—”—‘’—””””–—””’•›•™–”˜••”–““”——“’–“••Ž”•”•—”ˆ•¥—”™•””‘’’™˜œ˜”’—”“—‘–”Ÿ‘”ž™”Œ””™““”Ž‘œ””•–˜’’ž••“Ž£‘š—”‘ •¡”•‘Ÿ‘Ž“—•Ž’””‘•”œ‘™”“™““˜˜œ ’—“’““••“••˜••›—£“Ÿ™”““””Ž”›™””“™’š—‘œ“˜–˜•“”™˜¡’–“““–™œ—Š¢—“”Ž•“–š‰š›”š“Ÿ˜’‹’“š““ž““•š‡˜•’Œ’’“““–˜“¡—ž™‘“™š“’”•“““‘š˜–““’——“Ÿ¡•‘Š˜™“˜– ™•”›““Ÿ““œš“•—““˜žš›š¨œ“”˜›œš˜“•””’—‘’–Œˆ–˜“•—“œ–”‹’ž—–””““š˜‘–Ÿš•–””Ž™”–™š˜šš¡”˜˜“–”•–•—””ž””–“š˜’˜“—œš”™”—’”Ÿ–œ’””—›—””˜–¥–™“š””™˜™™’•—˜‘”Ž”‘’˜•–𔢓–™’•“””–”‘’””ž”Ž–—”—™Ÿ”’”–”“œ””–’†“—œ™”””™“™š““˜‘” ”—’˜‹‹¢˜”•”•™˜“”šš›–””’”••˜˜—””𓓔ޖ—œ”›”œ™”Œ˜˜”™–””‘š–”‘–Ž”“Ž•“™”–”–“”š’œŽœ™‘™—’””–—”›˜™˜Ž–›™”’–•šš•›•˜™˜–”˜”˜˜š—˜–œ•š—ž—”””˜›œ””˜””——›™™•——š‹•š•”––˜–š˜—“”š““•”’•–———”›žš–™”™’™™—“ž–‹œ“‘—‘”Œž™–š™”™””˜”–‘—˜‹“–‘š””—ž–š—”—””””›”x—˜‘–”””‘“™—“˜”––ˆ”—–’‘•œ•”””›•˜–“”‘‘‘–‘–”’”—”•“š”’™˜”—š’——–”—”˜””’š‘“””””•˜š——žš“’•’”™”𔕓“™”™“š“’•”—•œ”–œ›”•˜—›“”š£œ”“˜“•“”£¥“‰ ˜œ‘›„’—–žŸ”Žž›”””““—•™‹‘——‹ˆ“•~“”t˜— ‘•š“—‘‘š“•žk—‹™”›”’•“•¢—””g–•¢“¨˜¡–’“‰•˜˜”™™“ ’˜™—„ކ—™œ“¢¢–Œ“š““’““𙡖‹˜”““““šš“€Š“Ž“‘¦£‘””“Ÿ¡‘‘“”››“˜ˆœ”‘«• —™™“’”’š••”£ž”“””“”“‘–••“–““£š™š¡š‘”“Žš ˜—”©—”„Š™¦•‘—–“ŠpŠ““†Š}Œ“–”˜•–”˜–”™—“ ——••””“•’—”•”•—•–––”’––”•”–””––™•—™—•Ž•›””•“““•–œ—”™›–“”“–•’–“œ”—‘—–“–”“““–”””Ž˜’•”—”’™—“™–˜“”•’•–”””’—Ž•–”™—••—Ž”‘””Ÿ””𥔒›˜•””—”“””•–””“””””‘••”•”““š–””’”“˜—˜••“–“•—˜”‘“œ“–”˜”˜—”‘”–˜”“–Ž”–”””““’—˜œ”Š”—•–”–”––•˜——–—•”–“””–™•”•—––—˜™˜’“˜—{“–œššŽ •£¤’›™œ’””š—™›¥“Ÿ¥“šˆ –““’““™—’Œ¢Ÿž›”˜•“–”—“˜™… “›–•“œ•“¡˜Ž”Š¢˜˜•–š›•œ™“ššŒ‘œ¨–™“•’”Œž›˜“ ™–› Ÿ•–‘“¤¥‘𦠓““–—““–•—œ˜˜œ“”“ž“’™“”œ“Ÿ“•”žžš“”“›–™““”š•—•“–”ž›šœ¡“—‘”ˆœ¡‰Ž˜ ”“›“˜—“ž›¦’“›—““™šœ˜—‰“¡”¤•›™™”•—“š˜›•˜œ“˜“¡—Ž“™Ÿ™¡‰¢‘˜–“š—““ž”ŽŽ–›—–—””—–›—™–•Ž”˜—˜–”“˜™š—”“š““š—œ–’œ˜™œ¦”“”ˆž•”™”“•‘“˜™—•œ˜œ‰“œ¥›™—•’–“’–””Š”“’£”‘š“™”’•¥œ”–“‡—˜”’—–™•ž“–“•––•™—“““›““˜ š–‡“–“”“ž“š•“Œ•’˜“•”žŸ–¢“”“™Ÿ“™““˜–›’Š’“š•—œš”•“•’•–™”‘™—Ž“˜“™“™•¢ž“›”““–Ž“˜š£—”¤’–”›—™“˜””•–•£˜œ›”•“–’˜“———œŒ–˜•“˜…—–”œ——Ž““””‘Š’™•™—™’˜Ž“–”“’š””“““–‘Ž—‘™†™‘”“Ž–“‘’““‘™—“”–Ž›˜‘ž““”•–’—‘”˜’‰”™“œ“’‘–Ž˜˜•““”œ“Ž£‘Š™–“’––†Ž“˜“‘–““”Ÿ’–—•“““Ž“•Ž“‘—–”“”‘›—‘–“““•˜•—““’“™’–“š—••”“““š˜”˜‰›’™“˜“š“Œ•¡’“›”““’“—‘’¡Š“”›–•–”“’“š—–„•’˜—’“–ž““•š›—–œ“˜“Ž‘™“˜˜Š•“–’•˜“Ÿ—–ž•˜’—Ÿƒ”—“š–œ‘““–““––••£”’š—›”—’“•’•”–•“˜’’•“˜’›‘‰Ÿ œ“˜››‘••““œ”~”Ž—•—‘›“’œ“šš–““•’™’‘’“œ–™“–Ÿ„”˜™““’–““š‡†™Œ–“““š“˜”“”Ž”–“•‘‘š‘“““˜œ‘’““’”‰•——“’—•—“™“—’Œ™”—•š–““¢“šˆ“›”œŸ“Ÿ—“““ž•“™–™”¡‘—˜”˜“™—“•–œŽ›“œ–“——Ž“ššœ”——œ“–„‘ŽŽ’“Ž“œ‘’‘’˜”š—‘”‘”–““••œ‘““‹“’‘‘–˜”••’•œ›’˜›Ž“”˜‘“”‘–“•——–†—“’“•–”‹–””“šŽŽ’Ž‘ ”‘“‘“‹–”“—–—‘“Šš—”‘˜“–𔓕’ŽŽ£—’Œ’“•’“™“˜™ŽŒ•““““’œ’”””Œ“”š•˜–Œ““’š••”’“–•‡—Œš“Žžš’™“Ž‘Š•—œ˜š˜’“’’’•˜‚‘“‰”’’–“•”–¢’‘™”˜”““Ž”’’”‘–’œœ˜–’‘˜’’”’‰‘”Š’•œ‰ŽŸ–’“”“•š “”™“‘––””œŒ›–Ž˜™š“’š“““’“’–“š—šš™—•Ž‘“—Š–•˜ “—™’–“𛂒œ‘˜”““˜’’––’—†š™—“¢š•ž•ž˜“š“•——Ÿ–“Ÿ••”–’Ÿœ¡——“ž©”š˜œ“•’“•’“›——•“’“™’——’’›“—–“—˜¤}—Ÿ—“““•”™’“š’—’“›’š˜—•“—˜‘”–•†’˜“™“““— ›“¡ “’š›“—šŽ“™–›˜——“—Œ“”—“’‘”’˜˜’–„•“™šœ›‡£•›“˜“‹ž“•—‘’Žœ“—“•’™‘š˜‘‹’Š —“˜Ÿš™““““” ž™•—¢™’œ”–“–›—“˜’›“™˜“›“˜”œœ…“–™˜ŽŽœ“—•œ•—“–•ޤ–‰˜“šˆ’••—˜’“‹˜š’’š‹’—‘–“•’”–ž“‘““ž““™‡Š••‘˜““““––“—‘›˜ “––œŒ’Šœ“”““”ž–““”““Ÿ‘”™ž••𛓓”‘‘–¡Ž—”““š‘“–‹¥“’›““”¢–Ž™¡”’ –˜•˜‘˜“’““˜˜˜•””•Ž™—“’Ž“Ÿ•˜‰”‹¡™“””™““‘–™“’–™”ŠšŒ‡”–“™Œ•’—‘“‹„‘““““‘•–œ•’“š–›“¢š•”‹š“–†ž“𙔦‘Š’—“Œ“š™”œ˜Œ—•“œŽš£—š“—™•ŸŒ“ž‘œ’•œ•–Ž‘“˜——‘ †“˜“˜““¢¬‘ž˜““““—“‹Š“’š“—Ž“Ž’ž˜‘‘‘“”“”˜““ŒŸŠ‘š”“Ž˜‘™‘ˆ“™™”–˜—–™Š““”š“œ” ““˜““‰‰Ž’‘‹“‹˜‘–“¥š“Œ‘–™–—–œ“—†—“›–™žŽŽˆ—”˜š’“‘œ––™‘—ž”——›••• ˜—ž“š˜œ”š“œ™””’”“œššŒ¡š—•¡“—š“›—’”•—”—ž’“•“ŒŽ“™”’†’™˜”œ“’›–”¦•Œ“”Žž”™”šš ’”“Œ‘¦£‘œ™ˆœ•••”—”™˜™›”‘“””“” ‘Š”—¡’”””““‘—““ Ž—”˜—•›£š””“™–”™“”˜•›ž¡“”š›ŸŸ—”””’‘š˜Ÿž—¤—•“””œœ“—•¡““––““—‘• ’¦•”šœ’”œ”“”•–—–ž››˜“•œ“˜¢ ••“’˜“”’””’–™ˆ¡‘œ““š–——“—˜’›”Š”¥™›”“’““–—™Ÿ™Œ••¥˜’“›Ÿ—Žš¡“œ¢Ž““—‘“”“žš‘˜•Вޔޖv•”š“š˜ ˜™•–“—”—šƒŽ¡”“˜‘€›“”“’¤““š¥£Ž‰™“’““—“’’˜““’™¡ŠŸ‰“““’ ™”““”‘“™Ÿ”‘‘‹’•¡“–“ “–”—““„“𔓗˜—“Ž‹““•‘’•™Œ¥’‹”˜—‘“ ””ŽŽŽ—‘œŒ‡““–™“”™“Ÿ˜•‹“š•Œ–’“”””“ž—“ŒŽœ“ ”›‘…ž˜“‘¡‘““‘““›—Ž’¢“›˜”‘˜“—‘“žŒŽ”“Š˜”“¢“—Ž˜‘“•“‹”•”‘’œ™—““˜‡”’œ©“Ž”•š¡‘Ž“ˆ™–™‘™‘Ÿ–”›‘“Œ–‹•˜œ“““‘š““’Ž•“““–“œ“–œ’šŽ“œ›–›——“”“œ’“Ž““—Žš”‘“™•¡œ›“˜“”ˆ ”•“”“‘”“•—˜“¡““˜——–œ‹““›šŽ””“|•“”›—‘‰œœ–˜”“™¥Ž“‰•œ –‘‘‹”‘“‘œ—›“›–ž™—•”›–•™ –•–˜––˜–•”‘™•Ÿ””›””–˜œ™ž¡–—™Ž—™’”“ˆ™šš™Ž˜”œ˜‘˜”•— Ÿ”œ›’”‘œœ—”œš˜ž’š—” ’“’•‰œ”Ž—š˜”—š™”œ•™›™•’Œžž”—•¢–™”›”›™””¡ˆ••ŸŒ˜”–”™””˜”“••“‹”’‘Œ‘—’•”””›“•”””–‘•Œ•˜˜“™•”œ”•—–—™š–“”–”œ”Ž™š™”˜—”””•–š–”—–™˜–š”–™”™““žœ˜•–“”“–œ”œš”’”’™–“…˜¡””–”–‘Ž”“Š•˜Ÿš—˜””¥–’‹–ДР—™””•”“’”‹šŽ›™“–”™“”—œ—–’”˜˜ž“Ž›˜†˜–˜”Ž–•™—™–Ž’“˜”˜––Œ’–”—•§”••šš”’“‘””˜‘£Œ‹“‘‰‹‘”Ÿ“𓢓“™ž™˜žˆ–”—”’“‰’“œ”•”¨”–—‹‹—–””“™š“”›Ž“šž””––––—–˜”••”›–•›Ÿ‘”–“”˜’“Œ––”‘‘““’“”˜›”“•”•šœ˜—”’““™—›˜›™”˜’“—§˜“—”“’Š–žš““™’Ÿ‘šœ“•™‘ Ÿ’“˜˜‘š’•–“š’›˜••“˜¡™““‘““•—–˜œ‹›“§‘›“’£“•›“š“‹“™”£“˜““•š“˜”™˜šŸ›’˜ŽŒ”ž““ž™•™ž—“‡‘”›Ž—›”‘—’“™ •œ—š’—““““™Ž š“”¢““““–”““Ÿš’“‘”—‘™˜¢“““™’”““’•‘˜š“”œšžŸ›œ“‰’‘’ž©¡–šš“’“‘““¦›’”“˜š““———š”ž“š˜™œœ•“Œ–“ “ž™—˜—™”’“’Œ›“š›™šŸ•œš“”•“’™š™”—•™–—••˜™•–›”‘š•–™—¢™™”–‘”””””””–”’—œ™•œ“–”•”‘œ™–“”–”–””—”˜–˜’–”•””œ‘•›“•——•™›”¬•˜š˜”“—••š••”ž’–’•˜œ—‘™—”˜˜ —œŒ”–”—˜””–––”“›”“”•”•“”—š“–”’‘–•™Œ”•”—‘•™””˜’–‹•”•˜–•˜™’”“’–‹”•Œ–™•‘”‘”Ž“”–œ’”™—””“”‘—–›’”“”š•‘–—”˜–”—•–“™•¤š“”•‘”–—–›•”‘’“”–“Œ”——••“––œœ•“›˜”•™–˜‘™’˜™™”—Œ™š•”“””˜˜—›——›—–“—’”““”“•˜•œ”››””›–’•—•˜”••–”›”™•˜œœ•š’ž•¥“ ”–™‘™˜š™”—“•–”’–Ÿ““•””œ›—˜š—”‘””‘””—‘‹•“ž”””—”“””’•“™•”’—”—™•”•”™˜˜š””ž‘˜—”–œš• ›—”‘”““•“•š˜”˜”—•”“—”š™””–“’—•‘“•˜š—˜˜˜””•”•–—–™–’•˜””–‘””œšœœ’š’˜•“’“’‘‘“Ÿ–—›’•š•–Žš’‰˜–“’”“•–““–““•—¦””š–•Œ‘•““¡–“•›““–‘“–ˆž•““—––‘”–Ž“˜“‹“–”’–’š‘—“‘“‘‘™˜“ ”›’Ž•œ‹œ™“ž¢–Ž–™’‘“•”““—œ—Žž‘’’“œ“”“¢’˜–ž““‘ˆ•“™“““–•“Ž““–”™“–“Ÿ––––’™“”“›Ž˜ž™™‘““˜“–“›“•’“š–“““˜—”—š””›Œ–”—’“”œ”••– ˜‹¢““•Œ•““”Š”–š“¡—¤’¡•—šŸ›’žŸ˜Žœ‘–š˜˜œ”•™“ šš“““’›’™Ÿ›ž™Ž––’š—œ™”–™“œ˜›–“”˜£“ˆ–“—’˜››š–˜™••’ˆ•˜•”—“–“žŽ”—˜ ž“’Œ“Žš ˜¡—“¢¢’Ž¢’—’“’“¡Š™”ž’”“‘’–˜’Ÿ—Ÿ•œ““’œ›””““““žšž’“––£šž›“˜˜š™–š“’”Ÿ˜£ž–““—œ“œ›µ‘“–˜’’—‘””𢒒—–šŸ™š“‡–“œ•š¡œ™§“˜’“šŽ’ššš™˜š•—“¥””“‘™’–“‘”‘—Žž”˜”‘•’“”’ŒŒ•”—”“““‹–—˜‘’””’›—“”…—‘‘”““Ž‘“““•”•š““‘““•“•”™’–‘“Ž“˜—“–“Ž’–““˜““–”™’–œ’“žš“’™•‰™“š“‘”““ŒŒ—‘–““–““š““Œ‘•“Ž“’—’—–“•“”“ŽŽŽ”““™’”‘Œ–”™‘–—Œ“–•Ž—Žš‹™–Ž“““‘“Œ’”–“˜–“““˜–•‘›š“’”Ž““•“”Œ”––””“’”“”•”™‘””ž”˜˜ ”–””’‘‘“•””’“”¡–•”•“™””‘””•”•””“”””“Ž”–—›””Š•”—”•—“••‘””’•—””—™ž‘”‘”••–••›”œ—••”‰–’’–“”™”•—”—••••”’™š“•••‘”“‘””˜‡•“—”—”Œ˜””•œŽ–˜š””“”””‘”ˆ—•”•”–——–˜”””–“—”””—•ž˜ž””–”•›•–•”—š“˜••Ž•—”–”””•”Ž•””—–””™––•—””’‘”–™•””’•”š’“‘—’“˜—”“–”“•––Ž˜š–š“’‘v˜—–™”‚ª—”–‘”“”•’˜””•ˆ’’—”“ Š”‘““˜““”‘“‘˜ˆ¦’‘“”“¥‰š“•”““’†“—–€‘˜™›t“«’‰”’”“‘œ”˜“¨•š””˜‘•“Œ’–”–‘“˜”””““Š—–Ž“–”Œ—ºŠ’‡’“›““”|‡—•™“’“ “““š•••¡“‘’œ¢”¥ž““““–”““‘”{™Š“••–›—“…”•z”’”’””“Ÿ“““ –”“›““˜š–•”‡“¡“”š›—”“”Ž“ž’«˜’’Ž“—““—‘“–—“•†…“•™„•”“š–˜‘——”–•šœž—š˜”–œŽ•˜“Œ–™œ““˜““’š‘ŒžŠ”—‘‘‘ŠŸ“œ¨”›™–‘“š”›˜“““¢˜šš“›“““˜”•˜’”•˜“””•“Ÿ›Œœ‘š“—…”•–” ¡Ž˜“‘Œ–‘–Ÿ“’“š ““›š—Ÿ“”““•˜“𙓓™•‚¡œ˜“”“š˜—™““£š”“‡™™‘ž–›“—•™—š‘•”–‹“Ÿ“•“ˆœ{‘“‹““”“™•˜š”˜”’”–•““¢—“–™›“”™—’›“—˜Ž“šš•–•‘’“”¡™”•–—”•“””“˜”’›’”—”•˜––’”™‘–“”•—”–””—””——”—™‘•”•–“–“”™”––••š•”—™˜””›š••Ž—–’”𔕒˜–•”–•—””””’™˜‘šš”˜”“••—›“”’˜š—‘™”””œ””—–•”—”’”—‘””–—…•™˜”“”’”™—”›˜™”‘”˜”š‘™”–”•”•’–’””–—•š‘”“•–œ•˜””Ž™–––š•›––”•”˜“”›•’—”™™””š“’“–‘˜”˜•™–––”‘—””’—•”›œ –™”“˜””˜–•”ˆŸ—–”‘˜–“”˜”—••”—‘••”˜”š“—š›”———Œ™•”˜—˜—””“””™•“‘›–™˜••‘˜”–’—™–—“”•–•””–”Ÿ‘“–•Ÿ”˜‘——•”‘—”—™™”’•˜•‘™’›”––•™•š“˜”“™š—“–“˜“˜•—”’”—œ‘”—””‘””™•˜™™ž™”“”–“˜•“••”˜”–™•–•œ”””šš™“”•”š“ž™”—™—”˜˜•”–˜™–—–Š•—••”œ”–˜”•––•”š–””–™™“™‘™”“—“•–𔕓”˜–—––™•”–”””–—”–——š’˜˜”˜“””“—”””•”˜—”—™–“—•””’”Œ•”•Ÿ””““”””””””š””’”•’”‹”’Ž””Ž””—‘”˜””“Ž””›œ˜••””””“”“”Ÿ—””›“–“””’މ••”‘”‘•”––””“”’œ“—”šŽ“’“”š˜–——””””””””—– ˜”“””””•””™”˜•––ƒ”˜–‘𛕔”””˜–”‘””š—”“•’”•™˜Ÿ””˜””–““•—”š“Š””””””š•””œ™””—‡”’•””•—“—”—“”•”••”“ŸŸ›–”–Ÿ–”””•‘•”””—“’”›˜””’•š˜”–””›”›”–”“””“‘›””•˜œ”””””‘š”¡ž”–›—–” ””“”””–œ’””šš•”””Ÿ•”“””–œ•˜Ÿ”š•–””ˆ¡“•’”–”’–”–Ÿ›”ž“™Ž–’‘ –“Ž””••’•™—””””›””œ”•”“™”””–”“““–‘™—¢”’œ‹¤•”””–•“™“”••“‘’—”’“˜–™˜™”“”“’”˜ž”›”—”•”ž•”ŸŸ‘””“”””Œ”š˜•”•‘™š˜˜”˜•”•”•žš••—‘”•’–”¡š —›”•ž”œ—””¡™”•”“—˜–“›™–•𔓔𔔙”’šŸ””“š”””””“—Ÿ”•“›“–“™—“˜–““™”–—””••’”œ‘”–••”•”““ž–”••š˜”–™’—”›”—””’•™›ž“•”•–Ÿ–””“¤™•˜–”•›•›“”““““˜“”™•¢˜’“ž“””•“–š“•™”—“”››’”›—•””“—“•–“”—›“•”–””———›š™”“˜””’–Ÿš–”“•”Ž““œ–”“—›““™“”–˜Ž“””›•™”—•”“”””•••›¡˜Ÿ–“” –“”˜™”‘•”””Œ˜”˜“”“—”—–””‡•“™•”–Ž–‘Ž•˜ˆ“—”–••’””•””•ˆ”—–“•—¤•—‹”Š“”–—”“™””’•––•””–”‘•˜”–Œ•“”†’Ž”—𔤕“™•–“”—•Š‘”’™—“œ—”’—•”‰’”“”’—”””¯•“›“”“”–”˜””{‘ˆ–‰”•–‘——”””–”Ž“””‘•˜ˆ•—”–”–•–•”–‘““””™”••ˆ”‘”––”‘•‘’” “””‘ˆ™—”“˜”Œ••›•””™—””’”—“™Œ”•‘””“–˜˜€””–”™““•™š”•”•šœ”–ž–—˜–˜•˜”‘–•œ•œ””“——””–””––•˜•”™˜—•š“”—›•–•š•œ”——‘””Ÿœ”””••””–•—–Ÿ™”™™––”—–¡“——”™”“”•˜™˜›•”˜”œ–””•š—•”žœ•˜–’”–””—””—”›—••™”””–”•š”˜—™™””•š™››•”””–—”š””˜¡–•”—”–•—¡™˜—”˜•”–•™’›ž—‘”•”––””™™–”œœ””𙕖—‘•”—”–š›–”–•””–”—›››Ÿœ™”•“—”š™™›™•••”“•–”•–”“—•–•“”Ÿ•––•––—’š—–’˜•”––––””•””—˜••˜”‘˜–’•—œ”—¯–”———™”–—“””˜–„••’•’”™”—’–’—‹›—˜”•–”–˜™•˜”—•”•˜–˜–”˜•œ•—–•“œž—’”˜’“—–˜”’”’–””——œ—’––”””””“˜”œ–›——”––•˜—–”•”––”–””•——˜™˜”—–—“–—•””•–——–”—˜–’”–”–•””–——””–””——•”–’’•™•—–‘——”•—”‘š”š—˜˜™™˜”—”–”–——˜«—”“–“•“‘’‘“‹—Ž•“’–˜•›•“—Ž–•¦””‹—š““’“““›“Œ’–‘‘š’’“˜š•ŽšŽš“‘’“‘“‘Œ˜‘”–™“š’•‘–”‘–š’’”™žŽ’––“—’‘”’™™‘““’”šŠ•–ˆ“‘’‘––—““˜““—£Œ“Œ–—“”“‘“˜“ŸŽ™“–˜”Œ“…““““™“ž•““–˜’š¤“˜•œ•“’’˜˜˜ “”“–“’“’›“¡–˜—“—’““•˜™–™‘“”𥕒“‘””Œ”•“––Ž–“’ƒ•““‘˜”“”—”’•••š—”“•–—˜—”—––”—”—“˜””—–”˜—”•”——””“””—–•˜˜••˜—‘”˜’”’•–”——•–”—˜”””˜•—–—””””•—˜”“–”—“‘˜˜”•“’•—•™”’–•—˜˜“–”“•—•–•”—“”“•”•˜“——•”””•™””˜—œ˜“”˜”””–”–“””—’—“””–—•™•”•”——•–””“™”““–”–—––—™—”–•”’—–”š——”•”—””“——””˜–””•’”‘—™–””’˜”˜——”•—”•–”•—•“––””–‘˜”—˜™˜’•“••–•›’—™”–šš–”—”—•™––”•”–™™”š“”–•—š•”’•”˜•˜“˜—˜˜–’“™˜””œ”™••—”˜”–“”–”›—”––””˜–•’”›—š™™”•š—‘“•“””—™•–›—”œ”—–’–™–——˜”–—’𔕔œ”™˜””˜‹˜•™“˜”–”•”—””‰–’•Œ”—•–{š”š”””——™˜””•••™””•˜—˜–—•”˜—’˜›•“™–—’””””Ž””–œ”•˜””š‘—–˜—›•™˜•—™•™”˜””™™”™˜’“”“”•™”–——•’–š”—•“¡˜•“”“›šŸ”‘œ”‘••œ“•’’œ”š–””“’˜””””””𛓗Ÿ”“•™”˜Œ”“™”“˜–•š”ž˜’•”––Š–—”•””–”š”•š”Ž•—‘”•‰¡•–”™”‘•“”“šš“”‘“™••“‘“ž””¡‘–’‘””””¤””œ“—’“’Ÿ”””–”“˜”–”–“—”’”˜•š””””‘”•—”””—“’”•””Ž—”™šœ”’’“•˜—“—™ž”“”•””“™–•”™™””™¢•™••””––—ž™•”–”””’”•’’˜’•”“•”–›••™™“•–”™–™“™–“—–—–—˜“’–•••’š“–‘—–“™–”–”—”””–”“—˜˜™––œ“••™““•“ŽŽ–“™—”“˜‘”˜—•“”–”•™“—–•“”“™š“™“‘”–”𔕔‘“™—™”“–œ““• ”““‘”“˜”‘•ˆ“”“”“”˜—£™•œ””””˜“‘““‘•˜—””•š——“””“—•’““”˜˜Ž˜”™——™“™•““•“—“––›’”“Ž”˜–“Œ”–”“œ—““•Ž“‘™œš“•–˜š”—”˜–“š–˜–™™˜—•““”““–––˜“—•–”•’“”š“Ÿ’“”•““•––•—••–™˜—‘”Ž––””’””–’ •”ž••Ž—‡“”“’““—‘“”’‘•’””—“£—•”•—””•–”—™”’”–‰“•’™”‘”–’Ž˜•””’•‹”“”Ž”’Š–™”’“•š–”“”•””—‰›—”—”••”›”””•–’•Œ””’‘–™—”””˜‘“”””’‘’””˜••••–””•““”—“””˜”š”“˜”•”›“”•”””’‘˜—• ž”–”•‘”’””””–Ÿ–Ž’‘”’‘”•“—””‘—““˜ –•“•”•”–••••”–™•™—––”•—”••™••””“•••”•••”••”’••”•••”•“–•”•”—–•™•˜“—•••’𔕕”••”•••”—•”˜š“”•š”˜–•••”•–””•‘“›˜••““™“——•˜•˜••›˜•”–”•”••—•••—•””•–•••–••˜•“›”˜•””˜••••••”—••••”–•˜•–••••—••˜•’–•”•–š“’–•••••••””•••𙕕–›••”••••—•——˜”••”••—••””’–’–••–••••’“’œ•••”•–“š›”•–—˜œœ“‘˜–”•”——••”™•–“””™™š””•””–”˜™ž‘›”‘’’”“™˜œ•–‘–”™š”“”‘–••›˜œ”–œ–“’˜”–•˜˜•“–”Ž‘ž“—””‘š•–˜š“”’””’””•–“•–š”š›’˜¡—”ž””›””›Š––’œ”””””ž‘”˜–”‘œ””’’’‘–ž”””’’™˜””–‘’šš”˜•”’—™–”–”˜˜‘•˜–•’””ž”’“”™˜š—”—–””˜—’”˜˜’”›””š›––”š””––›•›–—”•”’—”•—–˜’–˜•Ÿ”•–­”—–”‘—””‘”Ž“”Ÿ”–”——••’¤–—””›”’””””••‘’•Žš•”ž–”–”–„—’”””‘”“”–•”‘˜ª—’””—•“›–“•”Ÿ’•–”ˆ˜š—˜”—”“““–––’”›—”•’›•šŸ‘–”¤”•”¤”––”””—‹–¤š•”˜”‡”•”„’—–™”›Š‡“–œ”•”””••””™‘ ””“–““”’•–””Ÿ”–™”•––’”•”’”’˜”‡•Ÿ‘”‘””––˜”Ÿ‘”˜——•””‹“”›“”˜–Œ––”—Ž˜”“•”—šž”“”¥•‘“”š’—”““”““´“““‘”““…“””“—““””™””“‘—”“—’““”“•”“{••““ž””““–“”’”ƒ‘Ž””™‘“–”““˜“““”“””˜“•“”Ž”•“—““””•”œ”””‘“•’’””””‰“—“—”Ž’””“˜’“”š“”’”’”ž“”‰“““£”””—˜“ˆ‘”””““‘“””•’š•–˜”Ÿ““““““”š”’™““’𔓔ޔ“—”™“’–”›’””“”Š”•“œ“–““““”“”•‹”“’–—“’“””“ž–”““”““”Ÿš””–˜•›—”•—”–™œ”’š™–˜•𔕕“—” ˜””“”™™•”•””™•——™˜’›–•”˜’””—––™–—™”™—“””š•“••••”•”™–”™”˜Ž—™™”•”“•—”˜”—•—•˜˜™˜”™•›“””–“’–”–”šš”–‘™”•””›””›–”˜•”˜”””””••”“–“——”““•˜›–•”•”™š”–””•˜–”“™”—˜˜›˜˜˜”•˜•—–™–”—––”””˜–”˜˜‘•”™™””›––“š“—””“——›˜˜”—””““‘—“”“˜“–”•‘—”—š•˜™–“š”˜•Ž’”””—“”“•“” •“–“•”””“—““™““”’”““”””””“œ’“”“””“‡”“—”• ”–“’’˜”“”•””œ‘“”’—”’“’—•“““–›”””–“œ“–’•”Ž“–—””“’”–˜ “˜””’”“—“”–“‘”’’”‘”””””•—””’”””””—””•”›™“—”””“–“•”””““‘“”””›“™”“””–”””•’”Œ™””“”›”““”•”’•”—”•”—›””–Ÿ”’”‹’”“—“”–““”–”“•–”“‘•™˜”“›“”“““•£—••“”—˜¥—“•“˜››—˜š“–˜•›““”””œ”“˜—”–”–œ•”“”˜““”–“–”–•“”•–“•“—‘——”–—œ”–—–“”•š‘™•—“““™–›”•–”•–”•“–“•–––”‘“——–’™–”–¡–”˜™’•’’˜”š™Ž“”“ž““•“”•‘•œ™’”—”˜“›™“—–”“”–•¡œšž›””””–”““”˜œ™˜•“”Ÿ˜“œ’•””—•𔕒ޙ˜”•“””—𔑓œ’””š””™–•œ’𔓔˜”——’•”“—“›™š“—““˜•–“”‘™“”••”š”œ“•˜”••’“”–“‘—š“—”¢’’—‘•™š–’˜“–“’—–““’““–•““”’””••’‘–“†”‘•–ž“•––”“Ÿ•“’™•’•“”’˜–•””’•™“‘“ˆœˆ›“™•™“˜““™““œ“•š–“—™—“˜™—“›œ‘Žœ“œ“Ž’“““–¡“–”“”“‘“™—“““•¦“˜—”›šš–“”““‘“““– –—”“”™’›“˜•“”˜•–•“ŽŽ˜•¦““•““Ž”‘“™““—’–••“ž“™—““š“—––œ“–™“’”Ž“’•––œ ˜š•ˆ”£‘˜—”–›–”š˜””š•­—‡—“˜•Ž—“˜™”–˜—””˜””˜–Œšš—•š–ž•š‘””‹™———™•”—˜””–™“‰—Š‘””•™ ——˜˜Œ•˜™”€”‘“›™™”›”™“™™––”—•›“”“›”‘Ÿ‘”•—u˜Œ—” ”Š•””—˜–˜ž›—”•”Ž”“””Ž––˜ž”’•’”™˜•”•”˜—›—”””–ž ˜”š“——˜˜–”Ÿ“˜–˜››™–””””˜Ÿ”˜—¢“”Ÿ–””••‘Ž˜™˜”’—˜———˜”™Ž”›”˜š›˜˜–•”–…ž”˜˜˜š™’¥’›”˜’•”™š”š—•œ–”“–˜••“š—š“”›“•—”••—’”””””˜‘•–•˜š—•”•”—”’“š•˜—”’”’””˜˜–”›•“—”—‘••™–”–—••—”Ž•‘•›”š”—“•“”œ˜Ž”“•˜””–š“™–”™•–˜•””””™””—”—’•˜˜”””–”“™”“—–š‹”–›—”œ•–”””‘’–™””•’•‘›˜”—–š˜”˜œ”–“—””ššœ“Ž”””•™”Ž™˜“”—š””—–•”–˜”‘’œ˜–˜“”””š‘—“™˜œ™“”–˜–””–™š”˜˜˜š”—“”š—”™œ–š“”–˜—“•—˜“—–™˜–––””—–—””“””–•Œ˜›Ž™“œ•Ž””š›š˜•˜•˜”›•“””–™‘’™–¢”“‘˜¢˜™•–•˜—•‹—”–“˜’“”Ÿ“‘™–š’”“”…“““’›’™š”𙓓𡓛”’™””™™˜––Ÿš““”“”›˜”––›–”–—’—˜•—”””•”‹—””•–¥“Ž‘”–—˜—•š˜”“” ›˜••‘”–•”–”—–”–˜”–•””™‹ ”•šŒ”“™—šš••”–”’–Ž•‘–—–—–”—’•”œš™•šœ”ž””§––•”œ•—’”””‰‘”¨”–”’•–”•”š•‘”“•”•””‘”””‘••™•”Ÿ’˜”•‰‘••Œ”••—””‹””––˜“”’–”‹•Ž•–•–”—“™–”˜•”˜”’“–”–•”¥”‰””•–••–’”Ž”’”ŽŒ”—””—”””˜Ÿ•™Ž•”–”š””Œ•Œ••”˜–“—‘”””•”—•””–‹‹–”•—“•’”••”Ž”’”””™–”¢”•”•˜”“•˜˜”œ’””’–”•‹“”“•–•””•”˜–––”’‰’”•§‘”••”–}”–•Œ”•”’”•–“ Ÿœ˜––’”••‘–˜•“–•–•““–•”—œ•–””–””•“Ž—–ž”–•’““•”””™––—•”•••“”••Œ’¡˜š””–Ÿ•—”•“–˜”––”“”“’•‘–”›”™–––•””‡”””’—“˜’™”•–Ž”§˜”𔑔”–—¬•—•–”“”ž”••”•”–Œ”””œ’••–”””•–š–”””•””š–”––•––•”–”¤Ž••š–••‘”œ”–—”—•—’”–•””•“–••šŠ“–”–––••”ž’”œ”ž–”•’–”“”•““”–———’—––™”—•—”˜•”””‘™–•”“••Ÿ——–”–’“–‘‹–˜”“”––•”’””–—˜˜–”–—Ž”—•”–…”•—–““”–—•””—–œŒ—•”“•‘’–”•—“–™”–”””‘‘’’“–”—–•–—’•”•–•–”—•”“””•“‹•‘‘”—”‘˜””˜˜•™—”“”‘”’–”•”––”––’•—”••”–••–”•—•’“—–•™”–•—–—”—–™•—™˜–—Ž””•—•”“—•˜”–•””“’””–”˜”’“–“––••šŽ”•“–•–“••”–––”—˜˜—Š“”–•“‹”š“¡™”—•”™Ÿ“’”š –‘›““ž“š—’—›””™™””‘””—•Ž—˜•›™™•˜–”–––•ž˜›”£˜”””•“™”’–”“Žž•›˜—“™””œ—‹š“›—””””•–”œ“”™’’–“‘”’Œ””ŸŸ•—˜”–”–¡””ž“—›šš”•”“““›““•–˜•”•—“’‘ž—””””˜‘›“”“–Ÿ’”—”’“—•š ”–’—›˜—‘˜œš”””™”š–””—‘””•’œ‘˜—””–Œ™™ š™”Ž””’˜ ”–’‘””—Ÿ”š•—˜ž™‘•”š•“‘’“”“•““““”“”“ “‘”—“•”“““”””˜““””””““•““–š““““—”•”–”“••”“••“”–•Ÿ•‘•—”™““––”–““•”“”‡”“˜’“Ž””›”’“””•””š•—•“•–“”›•“”•“‹“˜”•”‘’””“–—““™“”•”•”““”““““Ÿ”••–›–“•”””““™’””•”š–ž“””””–”““”›•–•“”›’•“””“”“—”•“—–”””””””•”“š””’“““’““”–‹”š’–—”––—•”””—–”““““——™–˜”•–••”•”“™–—š”•œš––’™•™™•š˜ˆš˜”—‘™–””””—“Œ™Ž˜œ›Œ“—”“‰•–—™“—”šš”“”œœŒ––›””œœ•™™žš”““›”™•””“’”›˜™•”‘’›Ÿ•˜–š›Œ•˜”–Ž˜¡›”–”“’””˜š—‘™—”””™”š—”•“œ”””Ž—¥ž”””—–“’””••“——“š˜š˜žš”Œ‘š™™š˜ššŽ””—“”¦›““”™””‘‹”•’šˆ”•›“˜™•”““”™”—‘•’•–’””’ž‘”–››’•’•–”“”𔕑“˜˜”“’’—”’•“””“•’—““•”’”ž’‘“”””“““’”–¤”’–’‘’“‘–’’“ ””’”•“””ŒŠ—”•‘“œœ”š’’‘‘–””’’’–—–™™”Ÿ“”“–”““”‘”§““”’•“•“•”‘—‘“šœ“˜“‘š“”’™–˜¢“”””—“ ““‘’“”¡” –‘—™””““’œ’“”“œ”Ÿ”š•“‘”•‘“™“š—“’–’“•“”” “–’“”“•““”—•”’Ÿ“šŽ•“’””’“ ”ž™›’“““”™“’’“–•“¢™ž”—•“—˜”“•”˜—–”“——’—”˜”—“–˜”“˜–”•“—˜•””””—••–™˜”™—’•––”•–•”——•–”–˜–””—•–‘••–••–•˜”•—“˜˜•˜˜”™”•”–•‘˜”•–•–˜——–”••”–••••”—’””––——™”’””—””˜–•—’”—”””–””–”•—”˜‘”••—”–—“••”——–—”••—––•–”–——™—˜—””•••——”’——‘”••—””•˜”—”—–””•‘”•˜•••˜”—–—–—•—””“–”™—––˜–””––—”—˜˜˜”˜’••”—”Ž‘’•”š›™™•••”””—”’”—•™••™“”””™ ”•””’”””˜”•”—•”’™‹”””‰œ’••””””—”“””•“››——”•“ž””–•”””•”–”•””“”””š•””•”’”•”””‘–”ž”Ÿ””•‹”˜”¤”˜”””Žœ”›–•”’”˜”ž””Ž”“””””“’‘”•š””””•“–””””—••””””””””••˜””•–””””œ””•”š”—–”””””””𕕦˜”–“••””””“—”š“™•“”•“•””‘‘™”•••••”™“”—’”‘“–ž‘™Ž—“”“•£–’™”„Ž”•––•””“““—™ŸŸ“¤›“–’“•‰ž•“›’”“š™””—Ž§Ž˜•™›“™–˜Ÿ”˜“””’–’–‰•”–“š˜™”“˜““’”“’‡š†”“Ž•›™“š“‘‘““™ž”–šš””“”Ÿ“›–“•“”’𔕠˜Ž“ž””“•˜™˜“”“˜¢•”Ÿ—••“”–”¥’šœ–“™”“•““”›—“’—œ˜“›—““—•‘•š“˜š‘›’•”£Ž”“‘‘Ÿ§Œ–‡““”¥“œ–—‘—˜•£”–‘•’•–”––˜—™”‘š• ˜–“—’’”Žˆ•–”Ž™–—””š””•’š• ””–’–“”’Œ˜••—‘œ”—™Ž–”—–©’’•””—š—˜’–š’–•”‡“–‘›š—™” “œ™––š–””˜‘”—”–“” Œ–Œ˜”–”’””””—Ÿ—”—”””Ÿ”•–”Ž•’•¨””ž¢”—’”””–•˜•””‘œ˜“š•”œ™•———–”›”‘”•–“™•”“”—”¡–Ÿ—”›™””–‘‰•–•š”›Ž•–œ—–””˜”‘–š™š——™•“”‘Ž””˜––˜”Ÿ”˜•”•”•”’•”•••–›”–™‘‘”“”•””•‘•“‘˜•••‘“••“””““——“–—’••“—”™“•”’˜”›”—˜••”š™ž”š••••––––œ˜””˜—–’”•“”–—“—•”–”•–“š•””–—••••—•—˜–”š–—•š“”•””’””’˜ ”•˜••””–”–™”—“Ÿ•–”˜––Œ•š–••”•“–“”•œš—••“•–••š”—–”™–—“‘’š™˜•”–•˜—”™––•”˜š””•‘–•‘“’•—–•™•—’•œ“”•“•—˜š–š–›”—˜—”—”••˜š••™””š–™•”Ž••–•””–•””—•’•Ž•–••–”Ÿ–•””””””•••–•”–•™•œ•”•“𔕖•”•••“”–•–”™‹”…”’•“••”•’••”•˜”“”••”–”Ÿ“Œ••–•””’”“””•“•”—”‡”–—•”’•”’”“””•žš”“––”””’”•”””•–”””—™•Œ•”””””œ•””•• •Ÿ””””••––•”—”’™”•š“••’”””𔕕𔓕””•”•—”” ••••–””—–””–š˜•“•”””—•”•–•—”—””—’Š”•–”‹•”™™––™˜—•––—ˆ’™‘—™™”™‘™–”””””——•’—‘—š••ž•”• –‘˜—•”˜—’””–”••”ƒŒ‰””‘˜Ÿ•””——’•™”š•ŽŠœ˜”—”œ”‡”™––˜”Ž“©””“’”””“†”—™–•Ž•“”‘””–Ÿ‘—Ÿ–”“”•”–””—‘——”“•¢–˜•”””—”“–””–—¥’”—”””—––—”œ”—“—–—•—˜”Œ””¢”—–•”–•””•’”˜•ŸŽ” “—•—“—”˜“”•—–••“‘””•‘˜”“˜”˜š””Žœ””š™—–—”Ž’‹˜”™•””—”—“•ޓ𒓉”–”—–š”””“”˜’Š”•“Š’Ÿ™““‹’“–•š”—š‘“”“˜ ””’Šœ”“Ž“•–˜’™”–•™”¥—¤•‘—–””“•š••™”””—›—–”“”—”•”–Ž‘“™“”—“””¤’—‘˜–“””‘“›–“›’š•™”•—Œ˜””“””“•™‘š“”’˜™–”…š”’˜“•”’”™‘–™ —‘•Ž“Œ”–œ“¨–…”‘•““’“’™—™”ƒ•–—•—–”š–”•˜‹¢”š–—–”’—™”š••”˜‘›Š•”–••˜–”•“”••–”˜•‘”–‘”’’›“Š’•”“’”—””””“’™“˜•••‘‘“˜™“–•””•–’—”–—›””“˜¬˜—“””””“‘““”—’¢‘”””˜–ž•›–’”™“”—‘—’”›“Š“’“𔓒”””˜š™‘””””•ž””•“–•“–”””—““™“”š’”™œš‘–“”””’”“•“”–“—“–””“‘”“˜”–”’“”“£™Ž”“’””’”›”˜–””˜”“˜œ”‘–˜“”“œš—•””–“•—’’˜”’™–”’’”–‘“‘–‘“—“–’“‘š—“”ž‘”“••‘Ž’”’“”“”’•”•˜“”“’““”“œ”••›“‘¤–“’ŽŽ–•–“’˜•’“—ˆ”•’“”•˜Ž‘•”˜•–”™”–“šœ’’’•”’’¡””’“‘•œ‘“’Ž˜•›”“‘‘•““Ž“”Ÿ““•’ˆ‹“’””““’“—”•“‘‘‘–Ž”““••“““‘˜Ž—“˜”“‘”™’—ޓЕ–Ž“•𔕓““”Œ“™”‹““˜™““‘”“™—“Ž—•“—™•”—–”’”‘›Ž–‘““’–“—•—–“Œ”•“”‘™–—“““”•’’“”“’˜’•“”›”“’””Ž“”““”•”“•œ”–š’••–’™‘“‘”•—’“‘’“”•’’“”‘“™•–—“Œ’–‘“—”˜“••“ˆ“–‘’’•”““›’•“”“““‘““’‘•–“”“‘’—”˜““““•““•ŒŒ–˜Œ’“”“—“—“Œ•’”›“‘‘—’”——“”“•“’““‘“’Ž—”–’“–’•‘“”‘––’‘“”Ž“’“”’“’““‘“”““““’•“’™™”•’’•“”“–””‘‘Œ–”‘“•’“““’”“’–––’“˜–•Ž•¡“•“••”•’”••””™””–”˜””””••––”””•—•”””•”—””‘””–”“™—˜”•™–•••”••”“—“’”—“”–••’–•””¡•””•””“—““••’”™””“”••Ž•—”–•’–›’Ž••‘‘”–•”••–••”™Ÿ”•””•••’””•𔗔𕔔’™•—–••””•š“”•”•˜–›”••””’””••›””š””›••”’”•••••˜”–”•—”••‘‘””˜—•”•”““””•‘“”’”–••”••”••™”••”””Ÿ•𖔔𖓗—•“••››˜”— “•”””—’™–”˜˜¡”–“•–”””””•š•’›•“––Ž”—”••”“–˜”œ”™—–””š˜•–••‘”•–””Ÿ•”•™”š””—“–›—““—”””“–——•””“œ“—”–––•š””˜œ–š•–”“””—””˜’•••“œ”””“”“ž”“š•”‘“š‡œ•””•”–’”•””– “““—”—”˜››˜—”•‘“•–••œœ› ”•””—”“™”—”–”””–—••–”™—–œ˜•—”•“”“˜”™™—š™™•”–Œ–”˜™˜˜ž˜“––“™”””“““–œ“˜’™™•‘•”•š—”•—™–—“˜–”““›““–’›™–”˜””˜’š–“”¢–œ•˜™—“›””’“’””—™Ž“š™’“–—™–’–”“––•™”—˜““‘–˜’—™’“š‘››““™“˜”™‘“œ™’•—–““”˜““–—–•—š“““—“—•“—œ“•š“••ž¦•”˜“““•’—–“““—”’šš“’”™Ž˜–™“”‘•—“–—Œ’˜Œ“‘“”–“Ÿ˜š™“—–““‘Ž•’–˜“œ”—•’™•“Žœ”“–š™œ‘“ž”““’ ”“™˜–˜—›—–•”˜‘•“•””‘Œš——’–“–“”“›–™“”š’”˜”œ•—””–”“•’—š™Ž™–”™”““”•‘œ“›”˜”š‘“”™”’”—˜›‰”–šš•”••’”—•”˜”‹••”’””•”——™‘”–”“™“”—‹š•’”™š––œŸ“““‘“””ŽŒ—•’““”’“–““‘—••”–‘—š’ž¢”””•’–’“”’˜“œ’”’‘””™š”•’–›ˆŽ””“”¡”—’“‘”˜š”–˜““•™”Œ‘—–•¢‘•”•›–”Ž•”–››’•”•“”›—˜“”—š—––•›•”—“““–—•—–˜—˜˜”“—–––••–””—•š—–”•’–—•”˜””–“——˜•——–’•˜“”“•—–—–‘—”—–”•”–”˜—••”••”–––”–•–™•——”“’“‘——•–”˜–”•˜——–”–”–“•”—˜–”””˜™”—“•”–”˜—””—–—––•—”•”š””•”––“–’”“”›Š—˜–”•”•–•—””“––“•—•–•——–––”–”–––—”˜—–•”•”––”•–––”––””–”–”—•’”™’–•———•—˜”–“—•˜–˜•“”–‘””———–’—“–—”•”š•”””•”ž˜“•”’—”œ••–”˜“•–œ’••”“’““””š””••—••–“•—Ÿ”•“”“—–••˜—””––•””—‘”—”•“””—”””–š•Š”•””’”Œ‘š••–”ž”’“•“•“”—‘”“•“–“”—‘””–”‘”Ž””””‘”””••ž•‘––”’”š””–””“–”””•›¤•™š”””•”“””“™˜”–•”š‘•”–˜—”™“’’”–œ”•˜‘”””•—”ž—•—”—•””’–”’š–”—“•’––””™”˜’——˜”“’‘”“–•”–—–—›˜–•””Ÿ”—“š•”Ž“‘œ•”“’•‘‘—”•““Ž’”‘•”—”œ’™“””””””›—•”š™–•”‘’”•““Ž•˜—”—–‘””••”•“—š”–‘””“–”““•“’•”™˜”–“•”™”’›˜”‘”’“›Ž”‘”—‘–”–˜”—™“”‘””—””˜ ‘•𙕔”—””—”’•”’˜””——’”™“”””““›–””’—˜‘“”—““˜•—””“–•‘•™–”—’”‘””—”œ˜”›”‘—””““‘“—••™˜“•”“–”••”•š–”˜—”’””“—”•“˜”“•”–˜”Œ‹’™•—”—•ž—œ—•“›–““—•”›—–˜˜ ˜š”–“”””””””˜‘’‘šš”–•™”Œ•””“˜™’˜”˜™‘””–’žš’™–””—–“’–•“•™’›š•™“š’˜˜˜˜”””“”“•—–””›““””•”˜™¢™¡—”—”—˜””—Ž•™–›”””›”’”˜˜”¢”’Œ‘—›”””””’—•””™Ž”””•“š’—œ–”‘‘˜Ž–“™›˜™”˜”’”” ˜“”“—””‘–—ŽŽ•Ž•‘––“”–””“”˜‘–›˜”’•“•”””’””—™œ‘——”Ž“““““–™™’–””˜˜”““”˜’•‰”•”–’–”—••‘””””“––’“›œ™“’’–•””œ“”“’’—”“–“”›–ž–‹”’–•••–“•’”””“š‘“’˜”––—’—–”’””“¡””“”•˜––”•’‘ž™“’““ž”””Ž¡’—ž‘”””š“’’“š“—•“”’’™˜”œ™””””•“””•œ––™””“š””““œ‘˜“–˜—˜’𔓔“™”‹“’‘”—™””‘—•š“’œ”•””•’””——”˜—™š”’–”—”’‘—”’’”•“’˜—ž”˜Ÿ”•”š”–•–”’”˜”œ“š–›•š•›š•—˜–””“šš•”–””™–”Ÿš•”ž–•”–›”–—••—™•–”š–›•”–š’–•”•–”•–˜•›š•›’——œ”ŸšŸ–™•—”–••›•™–›”˜š‹Ÿ”𔕔–””—“–”—•”•””™””™”‘™••š”””–”•—”“›™š”šš—˜™••”•”˜›•š””“—•™”›”–œ–“˜š™””–”™›—••••”•”–•”šš™””“˜””˜‘””—”””–”——•™š•”–”•––•——–“””Ÿ•”›˜›™”–••””‘—““””“”–—Ÿ•—”””•“”–—••™•“ ž•—”™’–””“””•”™”žŽ•”“—–˜”–—œ–”˜š—”–š—“”—˜œ›•˜š”›——™——˜–•–˜“˜–š—–——””•–—’˜™”—˜””“•˜—–““˜”–•›”™“”“˜˜””—£”—’—””•”˜“”“”––•›”––™’”•”””•–”•””—š—”š””—•˜“—’”‘™™”—“”•”•—”””—–”””›—”–—””•”˜”–ž•“•”“˜™•–”“—”‘–“ž˜•–’˜—”“–œ”—•–•‘—“‹“‘‘™“““—Ž¤š“Ž¡“——˜˜›—’˜‹•Ÿ”Ž˜—”“‘““’‘”—¥–’ž•“‘”“›••š˜—””“š’““˜š—’”™ž™”“–•”™–”–•Ž™“”’›ˆ’¤“š””’š•’ ”‘“—’Œ”‘“”“’™˜“žœ‘”ª“’“’Ž““•‘’š›’““Ÿ““’“Ž™”—”••”šš”““’Ž•œ“”›•“•›š”—’˜˜š–˜“–“œ“™”— ’‘“ž””‘“™›•““˜““•‘”’“‘•”‘™”’•–”‘”“¡—žœœ—–“‘‘™“—››Ÿ’”™–Ž•“––””•••””•™–••••”••–••”‘—”‰•–•”•–•••”•••—•”–••–•‰•”’•–Š•••••–••”•••˜•›”””•••••”•”–”•—•–•–“•”••”•••‘•––”•”–›”•••”•–••”–”””•”•••••–“™•””••••˜•–’•š•—•••—””Ž”•••••”•”–••––•–••••••›––”•”•”••—“—–•”•••””•˜––••š—•••™”••”•••›••™”••–•”•”•””•—–”˜•”Ÿ••••––••••”ž––”•—••”–•›Ÿ”–¢–––‘–”–•–”}–¤”–”––””•””•¢‘——––˜•Œ–—¡”Ÿ„••–—’¥”—•—””©¦“““””’’–—ª•••‘•–”•—”‘—”–”•”–––œ–”•–¡‘•”•ž—™“”œ”•–”—””“””–—£”˜˜–”””𔑤”Ÿ”¤•z”œ§•Ÿ˜•”•”•———””ž©—œ˜—”“”•¢––—””—–••—ž£•”””•“”˜––’”˜¥””’‰”••’””“¢–‘—–”•“•–ž•˜™¥¯™¦›”—®˜”–—–—¢’•–•””“œ—•‘“˜–š™”•“˜’“™’”–—•œ“–—ž•“”’˜–‘“”›““”“‘˜•–—“œ“”““ž•Ÿ”“”˜“”™‘’“–’—˜˜˜™“”˜”˜‘’–›–•“”‰–”š”š“•“š’˜•—“”¢”˜’’“™”–˜’—“—–“””•““˜˜“””–”›––“•”™“™•“””œ““‘•˜’ª””“’’”“”‘˜—––”–’“‘––•”˜”™™’”ŽŽ•–“”‘š“••žš“‘–““•›—“’’Ž”—“””’””›””˜——“ž’’”“•›˜“““—™š—”˜”Ž“™˜”ž—“˜•”™–”–•”•––˜’—‹‰––”Ž›“•””’””––˜–˜—•–ž’Œ–”“–˜–”—•”——–’”’“‰‘”™š–”’•–——“”‘˜•“’‘•“–”–’ž•‘–™–””•š””••’–”™”—”‘–•”“”“””˜Ž“”•Ž–”“””“‘”™––“–”‘’”œ—•”””–”™”””’’Ž“œ“”›”˜“”–“”‘–—š“–’™–”•”•Ž”‹””™”š•””’–Ž™“Ž””““”–”’‘•š’™‹‘˜”—••””š’”•—–•™–•œ’””“˜—”™“›—š•“›–””“––”Œ’˜¡–—”“•”™””‘””’““–•‘ –“‘•”’”’——˜••”™“‘””—”–•”‘”‘–”—™˜”•—”ž“–ŽŽ˜—“”˜•’•——™”™”—”˜•˜“•””˜”–•Ÿ”™”–›””•¥”˜œ™••”’”•–”—’––Œ”’“™—’”•”–”›š””’›‘š–”š–•–˜”—””•š‘–™›œ——Š”‘”” ”—˜””˜””‘‹—–———”Œ’—“–˜•”–”›•…—“”–’’”•‘’”𙑗”“—œ”›”š—•”™””‘•‘”˜”•¡•ž•”–•––’ž–””›–•””””•–™“—˜™••Ž“–—””™“—”””•š•””’¡›˜—•”””˜•–””—”ª•––”—’“’—”›—”“”š••–‘””——“––™•‘š–”‘“¡–’””™”˜–””•—œ–œ‘–”””””—“”“”“•—”•’“‰•—“”””–•—•””–‘•˜‘••—”•”••—”š—“–”•– ••’”””•–”–›–”œ“”””••”–“”””•–‘“•”””‘”—’“”’“•”“”˜’–”“•”–“’˜••”–’—•””‘“•–••”“•”–•˜•–’”—”–”Ž•””””˜”””™•”—”•–”•“”—˜‘’••–””•’“”—™“˜›’‘””Ž–””™”™”“””””§”‘“”’“•”•—˜•”””•”—“š•–““—’—–”–•Ÿ•œ”’”“–”””——•–’•”•”˜”š–”––™””—–•­”–—””””••””—•–”Œ••–””—•••”œ”’‘”•›’–•’”’””˜”š•Œ“””–””””•’“’’”˜—•–••””™š”‘’’’•˜™œ™˜”—•“”””••••“‘›”—˜™–—–”™˜–š”—”™š”¥–•••—–••‰”—”—•—””–””•šš–›•—–““–’”“€˜–˜—“™””–•””›–Ÿˆš—˜‘”““”˜™˜™–•—”‹•“ž–“–”–••—–•““”–“›–•—–“‘›””–˜“”›Ž”ž”š””–˜”–œœ–”””Ÿ””š”’š˜—”–—”–••”””—˜”””•œ›˜œ•”›•••–—–”˜”šœ•˜›™˜”””””˜”š—˜””š””—˜’‘˜˜‘””•”–“–•””—“–•–—–••“”•¡•”–—•—’“š™™””””—–””˜–˜—›”“˜–œ–’–“—•—•–’”“˜––””””——“–—˜•—–”“—””–•”——•™”˜—–””—–‡–”˜‘”–––™•––—––”Ž•’˜’š‹–”•–—•–—™•”•”•“””“•–—”–”œ˜„–›”œ”Ž—””˜Š˜•˜’˜””””—•”—•š•™”•“”–—”•”––——””“–•˜—–•˜––•–˜–”–””›”–£•–—•”””•’”ž—•›”––””–––”––—”˜˜–—–––””‰”––”™˜˜––“–”–—”——–—››––›”–“–””–”š––—–œ•”š•”•–——•›•”‘—“”•—•—””•””˜–—–—˜––”¡”’“”•›™—–•—™”˜™Ž””š˜––‘—˜š”–š–œš—••”“š˜”–‘™“•–“𔣔•™•š””˜“•””” œ–‘”™•–—”–””‘””– ™˜–‘—”””“”••”™”™”‘”“’—’•“”””˜”œ”””˜œ–’•’”‘—˜œ–—“”˜“—š•“ –––”’”•–”ž–š—”œ˜””˜Ž—“”——”™—“™™“—”œ–”—’›—™˜™˜œ”—›”•–•˜•—›˜””“›”””’“–’“”˜””“˜••••”•“•—–”“”–—””“””“š“–—”“™•”–•””š”””˜–”—˜‘””—”ž”‹•”—””“–”•–”—š–—””’–ž”›”œ”““–—™“•”—”œ›˜’‘…œ—ˆ””“”•š•–”•””›””—”Œ“•“œ”””–””˜”š˜™”›”™™”™”‘”””””•”–””‹–”—”—”––”œš˜”—””’——’’™Œ”””•“”˜˜•”Ž•””‘“”—›…’”•˜˜”“–””•””“™”•—–•‘—“”˜™“”—˜–šž”’”“”—“˜•™–”–””Ÿ”•˜—š”™”ž“–š“›•”“””•””“””˜–•š˜•˜›“”“”•Ž•”œ™“’”˜›˜””—”Ž•••”“”““˜“™˜•š›–›˜”’‘‘œ’Œ–”Œ“–˜˜œ’””•”˜’““”˜™ˆ–””•”˜•™”“””–””Ÿ•”š•‘”””𔓔”–™™ ”™‘˜˜™””””œ–•™””›’”“’”–šŸ’šž™”“”‘•™™¥œ—š™”•”œ””’™Ÿ–”–’””“‘”“˜“𔓕Ÿ’‘˜š”’•”–“’–•™’”–’”•–”š›Ÿ–™“•˜”–•˜“–•”“Ÿ’•–•”••••”–•’•‹”•’¤••””‘”•””’””””™“–“•”˜š”””™ž’–”•””’”“”••–—”’Ž”—“”•””–””••“›””Ž•”•”“–”’•–””–”ˆ””•–”–•”•–“”—“•””œ””•¢”›‘•”–”‘”Ž•”’”””’”””–”•Œ”””••••””””˜•Ž••›••””••”••–𔕢—•”š”Ž””–”’•“•”’•””•”¡••‘›““•••••””¡˜”’”Š••–“”””–Ž™””•”••–‰•›”“˜˜“›•••”•—””—™–””“”›“›—“œ˜–””•”—””•””˜’“—˜•”™™’”“—”‘˜””™˜•˜”•“˜•””—•“””–”•””•–“”›–š•›”›–ž“–—“’”“’•––•˜Ÿ”•˜“•“—š”’•–”””—’š••”•”““””“˜‹–•–•””””””“”––——œ”•’–’š••”””—˜–˜””“–––›”•˜”–”—””–›–•—–““”˜š”•”“–”™–”•”š–””—”•˜“–””–’—–•š˜”—–””–••–”“”–•”•”–”•“”™—–•”™•—“—•”–”•–”–“””•“’“•””˜“š—”——•••—•”•••””•˜—”——–•–•””””—•–“–––˜••–˜•”™—¢–•••••––•”˜””•š˜•–”‘˜Ž”—–•—•‘–••”–”–””“–•”˜–•’›•”“—–—–—”–”””””“–—–•”••”•–”••”“–—–‘•™’—”–””••”•—””•—–•—••••’•””—–•’••””•’”–—‘””•“””›•–•”–—””˜–””•“•”•™—–—”•“””•—”–“—œœ—˜”—Ÿ–”“–”™˜–••””ޔޓ‘˜”•”–˜¤””—¡•™“Ž”˜’†––¡“ ”•“–™””–””’—”Š ’˜”‘…•’Œ””•”™”””‘–ˆ””›–™”‘’‘“”—•Œ—™˜’›™˜•”–‘’‘™¨”œ”’”“— “”›“¥“—“–Ž‘œ¢‘”—š–•˜”–””Ÿ””——•‘•—œ”””•””’”™–ƒ”’“–Ž––”””’”•™””‘—˜–š”””“–ž’””““‹›‹¦ž€”“”‹—””••”“š””“®–™•—”˜‘’’Ž’”•—”˜’–˜–Ÿ‘œ’”—•–”Ž”‘ •Œ––““™••‘™“•Ž–™—””“‘‘‘••›Œ“𔑕—””“““–™–‘™˜•’š’“––—’’”•“š—Ž’“––¡”—’‘•”˜–”œ˜‘“Ž‘•”‘“Ž‘“”’”˜’”’˜˜‘“”’ž’”˜––”’“˜œ“•“–“–“”“”’§–Ž‘–””“•“ž–“’—’—““”•–—¥•”““Ž““““–”¡—’“Ž‘’’–“–’–‘’¡˜œ”–““𓦓”“’˜““’˜‘”›“”’“””Œ”“”˜””’––Ÿ”𙕔“’“”“‘•˜•“¡“ž’“Ž–“”˜’ ••“™“Ž‘•“˜”’”’••”“—Š’”“”““’”›“›—™™””ª–“—••‘˜“›“—™‘’“—””˜…”“‰“•”•”–”—’–˜›—”Ÿ‘˜š“““”––•”“‘“žŠ•‘˜ˆŽ•–š“•›‘”“‘“’“” ““˜Œƒ“––š“’“Ž“˜’“——‘ “Ž™‘•‡““““”“”““’—‘•›”š—˜•˜›Š““–”˜“”—”“——““’’“”–—“–—““‘–“—“š“‘––’’•˜“”•”•““•¢—˜‘—““’•–“˜˜•š•—’—’“•“š’“ ——”””””’›“’“”’Ÿ‘“’’”““Ÿ“’““—““’•““Ÿš”“—’œ““•š˜’’“Ÿ“““””’“”•Šš˜–•š“‘”“›”“˜“’’’’“˜”””—‘–““”›“•’“““’“—“•“˜““—”“’’™“Š™“–“’“““›’š’“”“”“”““’’”“›“”“—œ’‹™“““““ž’““—”œ•¢ž“›’’—“““““” –“’’˜”“–“““’¥“Š”›“›•““””’““œ•”Š•‘”•”’“™–”¡’ ’’‘š”–““‘–“’“”“’£œš”–Ÿ—™––”˜—›™Ÿž”‰¢”˜–––’–“ƒ•—’–¤”•”•”””—””••›•”™˜”–‹•–…”•u–•””š””—Œ”” œŒ“˜”‘”“˜•“¢”“”…–•”‘‘ƒš¥š˜”–”•–––’•”ž••˜—Š˜Œ”—“”¤œž•–”˜”’•””•“±––••”“”›”™”‹’•‰”’“•­››“”•”–•˜”””•£’“”•••œ”™—––”Ÿ••”–˜ ¡–ˆ”•”•œ”ž•¤”™˜””˜’”••”—”•‹–““•””“”›Š™–˜¡—šž“”–ˆ–”“••—‘–•“”‘“œ–”—•–’›˜“™‘Ž—–“––’””•––𔓗••””•”“’š–™”••“”’‘“šž””–•“•”•œ““”™™˜—–“””™–”—“”’˜’”¦˜Œ’• “š”’”—–•˜’—”˜”™–—Ž–š—”•šš•”’““““™“”—Ÿ•‘‘˜““””“˜”““—‘“ž”••“‘••”““™“‘–“”—˜’‘Ž”˜‘”••™˜”’—‘”’’”š“˜“–”•’“•—˜“–““˜””“•“””˜•”˜—’“”›””•’˜•”œšš™›“’Ž“““••–›””—‘“Ÿ•””›–“•Ž–—–’——“•“•›•–˜˜–—•“›•”“”“Ž“““——˜š™•›•”•““–“”‘˜š““‘“—’“š•—‰›˜™“•““Ž‘“”•‘••“•™•’•˜“““–•—˜”“•Ž–‘—”•˜•›•““™’” ‹“Œ“•”“““—Š“–˜“”“““—“•“‘›˜“•“–”“œ™““““’šš“““™Ž”œŽ”’•ššš™“Š””–”˜’–˜”“›“”“šš™–“•—““”š˜—•‹ž“–“™“š˜‘“ˆ—“–˜—–“••˜•˜““—™“˜˜œ—–•’‰”••œ•—““˜Ÿ–œ’”“–“–˜—“—””“–•–¦”’”•žš”””’”“”•”—˜œ˜••Ÿ•““™ ”•—š•”˜––““•‘Š”••“™œ— ’—••–“”“”¦“’—‘“•”—“”—œ–”•“’•œ•““•—›‘—“•“Ÿ”–›“˜“’’““˜Ÿ~•–—•“•”–“™—““‘•–“”’—““””“—••–“”’•¡•””œ••‘••˜“’”›–”‡–”•œ“””––“‹˜š˜“—“““’‘˜“˜ž•“›’”’•––”””’”•šŸ“–”‘‘“–•™“–—˜”—–––“““’’’“—˜–˜’•””–•”’”—”š•˜ž””“•›•“““•““”””””’–••““’“–•ž–“•—–“•—’’“™”¢–•¡Ÿ›“ •”“”–”“’”¡•’Ž”’’–“Ž’˜•˜”“”“š“•’”›—–˜“¡““ž”žŸ“œ“•““•“’“”’”“”“•“ š“Ž“’”Œ“˜œ”’›““““”™”““”š˜“’“”““”˜”••“”Ÿ™•”‰”“–‹“¡“•““”˜˜““—“““–™•“¡“š•””“•”“’š”—™——¡“•”••“‘—™“•”—”‡‘’“–”••”•’“›œšš“–™’”›”–—–•”’–“•‘”›™—””˜”“˜–•˜˜–—””™–“——•–—–žŽ”•™™“”‘˜”™›˜”šŸ˜—”˜””“–•””•–”•“”™”““Ÿ˜–—”–”˜›’—”•Ž’›’›”Œ›“•”“–““—“”šž›˜•—““”˜“Ÿ““—™””•”˜–˜’‘š””“œ–””“”™Ž”•”˜”¢”—”˜––”•š•—”—–•••’“—”—•“Œ•Ž›“”‘““•––™’Ÿ“–œ‘——’—”˜•”™—š•œ˜•’––“’–”“•–—–••ž›—”œ‘ž™”™œ–’™”“’—†—“™™’›”—™Ž•“”“”•š””™”“˜—ž‘Œš“™“—””“¡•›—™”—”™š˜•”—•˜•œ––”–››””œ—–Š”“””›—“‘‘’—””•—”‘–˜”–•’œ•ž”••—‘“”š‘Œ•–œ”•”—˜””™“œ––’”—”œ“™““˜™’—~”™“œ–”›Ÿ”””–š™”“”“—’š›’”’˜˜‘–˜”Œ•˜”˜˜‘——–ˆ”˜”Ÿ•“”“™”›•””•Ž”™šŽ”ž––“š˜—”œ ”š‘¡™”“Ÿ•””“˜—”™™–œž—œ‘”–’•”˜—”””“——”””˜”˜”œ”–”•˜”—š””””›™•””””˜˜”“š“”™—•”–“”˜ˆ“”œ•–™””˜”•”™—”–•””•”–”™”•—””›˜š”•’˜“•”ž”•””–˜Ÿ•””˜–“””’‘“””–ž•™––”“””””™“˜””™”””•””—”“˜œ—š”—’“–˜”””•”ž–”•””™–““”—””™–Ÿ™™›”–”••—‘”–˜˜”””˜“”ˆ—–””žš””š’”’œ””“›•šŸ˜—”–•””–””“˜“–”˜”•••”‘™”˜ƒ•”–“›“‰“˜“”–•“’•”’Ž•‘”“•—•””–’”™•˜–””‘””“–›•—Ÿ—’‡–›–”””—•—’™”˜’““”•–™‘˜›’”••”˜‘–‘–‘—“—“‘—›¥Œ™”’”‡“˜•”–’‘”Ž’Ž“•“œ”–™”˜’’¥ ”’“•š””“’“—š“”””““”””—’’”——Ž˜“”–”””“––œ””Š•——”’“–•’””–““––•”›ŠŽ’’”“”—–”Š”’•”‰”“”–™¡“’œž”•–••”—•”•Ž”™“œœ’“—“”•“š”™•—‘š‘Ÿ •—–••——••••”˜˜•“”•—•––”–”–—”˜•—•”—”–••••••”•š–”•—–“”˜”•••••—”–•—••”•–——•–•””•”•—•”–•—•––•”•”‘•–•”•“—•––•”••••”–••——“”™••––•–––••••–••””™••”••••”••”•’–”—•–•“‘”˜•••••–”—••–•”””•••••—•—–••–”•––”••–••”•—••“–”••™—••–”•”•–••””—•˜™••œ•••”””—“”˜—••–•—•˜–—•Š””••“––’’—›“—Ž••œ™“–—š““Ÿ•œ™˜Ÿ”’›””“•—”“”““›Š•™‘“—‘œ•“œŠ–™›–›“™•™’“ž–“¡™š’“—˜”›“›‘–œ’”’£‘›’š“’“œ•šš™•“‘•–‘—“—™”—™“˜™›“Ž““š““–†ˆ˜”𔓓‘“™•“•—ž–“’Ž•œ© “““““Ž˜““ŸŒ˜—š“šžŸ›–“‘—”˜ž’‹šž•“š“—’“™Ÿ”‘“™““•’““”–—•“ˆœ‘œ›š“•–”–•—”–’•–”“’™“œ›•šŸ—“”—˜”—›”•””›ž¡”œ•—••—”“”’˜““–¢””•˜—”””””‘š“˜™”“𕓔𖔕ޔ”•˜”£”–˜•”˜œ’”Ž••””””“•™”•—–•“”—“ ”›•”•’•—˜˜š—”•˜œ™œ˜–—”” ¢–––“”•””–””š–ª•””•”•”“¡”›¡”””’–“œš”””””•š””˜œ“˜””””–—›–™ž”™•”•‘˜ž¢˜š“”””’’”›ž””˜””—’”™”“””š•Ÿ•š””–•”•–••››¡ ™“””—””š˜˜” ˜””’”•”‰”“•”–›™‘˜—““—”•’•••Š”–‘ •–”‘–•“””—”“––¢•—’ —•”‘“”–šš”•”–”•”“””—–•š–‘”“›–“””™”š“•””—”‘–“•”–”–•’•”””•”–‘”“Ž™’——””•—–”•”””’””””Žš•˜™””•”“”›•””••˜”•“–˜“–ž”””””—”””–—š•˜”” “”–•••”›”•“”••”–•™”™”•˜”“•‘—”™—””–™–•“‘’”ž••––””””˜”›”™˜”•”˜”—”–Š˜””–——Ž–——ž”ž”™‘–“—–¡”›”‰ž”’“™”™’Ž•š”š•”’““–““–Ž– ” œ’ž“Ÿ‘“”˜”—•œ““–’’“¤–¢”œ•–“™Ÿ—ž”˜“—š”‘œ“Ž‘©‘˜¢”œ“ž’”’š—˜”“ž“ ––“œ¤’—š—“œ˜“›““““Œ““™‚““Ÿ“”“š“œ“–‹”“”–šŽšœ™“““Ž“™œ““‘¡—–“š“’•’£—”‰“•”›“—˜‹˜“““•“Ÿ”Œ‘“žŸ““šžš“¤–’œ”’™•˜“’–“‘¥–­•–™–“Ž˜“™’–˜ˆ“š˜š”’š™––•”–—”•™™”™””™”•”””œ—•“¢”˜””•••””–”””›–••–•–“•—–”••——“”—˜”””’””˜“–›””•””——”™””—•“”•”‘”•Š˜™˜””–“™“—•–””›• “”–™š—ž’•”—™˜–“—”𔕕”””›œ”œ”•”•”‹”š™”“”˜““”•“””–—”””“•—•””––™””˜””““••”””˜––˜”•““”“”””’—””•”“•””•˜•–•“•”––“•—•””•”–—••—“˜’•””™””””•ž•‘–“™’†‘š“––Žž–“—˜—™’”™“—“—’€—””–•“›““‘““–š”—›œ•–•‡’“˜•˜”œ—–“—˜’“——šŽ™œ—¦“™‘•˜–“’”—•“–“’””‘˜“’›“Œ˜Ÿ•“”“‹•””–‡’œ“›š†—¡œ’˜“—““žš”•’—˜“““˜“‘‘“—šŽ“““š–‹““““™‘›–““’’”˜›”“˜™™š–‘•“““š™–›œ”“–“•““•• —“–““–‹˜™—£š“‘”‘•œŒ—“”˜’˜’œ•¡––“‘’—“•–˜œ‘›š”—’––“˜“ž—™—š–”’›‹‘•˜—™™—œ–•™””˜•Ž””•”“–‹žš›•›”›••“ˆ–—•–œœ”–—Ž’”š“‘•˜™”›œ–˜•—”•Ž—™”—¤Ž“—”•‘™ž™š“”ž’ “”“•¤“ž¤”˜™•—’“•“”’“”’“””‘—”“”—“Ÿ‘“–•—”‹‘™£•”””ŠŽ““”Š¡Ž”š•˜š“•“‘–™Ž—˜™“—”““™˜™””“““’•’‹–¢”“”—˜“•”Ž”“˜‘–™ž’–•˜‘“”“™“–•ž›œ”›—“”›“•”””’™Žž“—”“—“–”—““–‘—“–’”•›””””—”“•“š—™œ‘™”•’¦’“˜—”“•£›”–˜Ž”“›‘”“‹š–””’•š–”•—š˜“”•ŒŸ”•“–”“’—‘ ”˜‘”—’ ‘’“•˜”•“•”–—“–“”“””¡„•“”””””“˜““–”’•™”“’Š•™˜”“”“’ž‘“”œ˜”•””•—•˜”“•’–Ÿ˜˜—””˜““Š”“‘“œ•˜”‘™““–›’””œ£“’“•––—•”•”’“— ŽŒ‘’“–š“”˜š•–œš— •’’••š—•“““¢••”˜–•›•—•š–‘˜•–—š••”—”••••”˜š‘—–’‘˜š‰•™•”—¡’•–˜•”•˜—”””•˜‘•“”“–•””—”™—“™”’–“”™”Ž•“”“—•–“”𛑓•“•œ‘š“–”‘”“•˜’”—•’”’”•›”•›–˜““œ•••“”’˜”˜–˜š•”’›”˜“•••—•”𔕕”“˜’˜•‘”—”›˜˜•“”•”–š•’•›“”••–””–šŽ“•“•”’“–™™’’•–˜š•’—˜•–“•’–”—“–˜––˜•–™•”š˜™™•”’”‘”˜‘•–•””•˜¡–”•”Ž›–“•˜‘Ž–“Ž“Ÿ””’•š•”•””•™–”––”›”•˜”š“–•”’‘”‘›’””žœ›•”•”””““—•™””—‰–’”›™›Š—ž’–”—–“›–——””“œ•˜‘š——£–”™ž˜›—’”’””™””–‘••––”””™””›”™”†”––—œ’–—”•””š“š””ž•–•™•——‘ —“Ž”•–••––‘ ”—”•”–•”–‘‘—””””” £–”™Ž“”—›‘––”—’”“š“–—œ›¦š”•–˜”—‘˜”ˆŠ”˜”–™••”•’™–™˜”˜”•“•–””–š“–£•”•””‘””–””“‘•Ž”’™•’}•“‡”Še”—•“˜””‘ ””މ‚”•—•–”˜”˜Š’–®˜”‘”’‘’–“”•”|••—‘’““”“™”–’•’˜•—”˜¬’‘’”””•‘””“—ˆ•”˜“”””™”˜˜”…“‘“””’—v—š””””•””””““’“”“–“””“”…—™’”’Œ•“”œ”˜”’›”–’””Ÿ•””›™••”–’”˜’’”—““”–••™š–—‹…“ŒŽ””‹—”‘”“n–••–•”•”••••••••”–•”•”–•••••••••”•“•••••••••••”•”•••••—•”•••—•••••”••••••”•”•••••••••••”•‘••••”•””•—•••—”••••””••””•–•••—˜–••—“••”••••••••••••”••••••••“•”””•–••“•š“•••••••••••””••••••••”•••••”••••—””•”•••””•–•“••’“••––•—••••””••”•••••••”•””—••”•••”••••••š–•••”•𔕗•”‘’–ž•–”˜™””›––’˜˜••“™••”–™˜—•”•””š˜™“—•˜˜”¡“”•“—“–™–•”š•–”–—”•’–Ž”•™™‘–œ•—“–™“”œ—˜–•“”˜”™”˜™˜•”‘–—œ”—š–˜›‹”˜–—˜•™”•””•””™“—“™”””“”“—”“š•––”——ž–—œ—”•”˜—•””˜——“š˜••™”š˜—”’–”–™™”™˜’”“”š•”˜’•”•—””š–“•š‘”š–—–•˜””•”˜–›–£–™™—•””—”ž™ž—”˜˜”‘”™––“šš”“””œ–˜””š–—•”–“›’‘™“•–˜”“””˜”””””™—”š”””˜š•”•—””•””•›••”šœ–“”š”–•›”””””“˜”˜˜•›””˜”–—ŸŒ“–“™”“”••™——•”“”£›“•‘™•‘™“”œŽ–˜•–”–””–””˜•–”“˜”””“””””‘—Š˜™”—”›—˜•”•”’™•œ””–™•—”˜””•—˜–—’”•–“•šš›“šš‘”””—“”­—“–”•˜”””ޕޓ””––™‘––™””•”“’’•“š—•”—Ÿ•”›™—™“˜””•”›“–’”™”–“•–•”‘—–“‘“˜“–”’š”’•™”–˜‘””“””—œ’–˜˜˜˜›”“Ž’“““—˜–”›–‘“”“Ž“˜–œŽ”—”—‘”•””‰“’”•‘””—–““””Œ’–™–•’”–“Ÿ’“’’Ž–ž”›””Žœ”“““‘“”•Œ‘“’”””™“›““—–”ž”‘”•š›¡˜”””’‘–“”’˜’’“™”š‘”–““š“—“‘™“™””˜›“”—”•“”ž—“•”Ž–““”“¡œ••Ž˜‘”–—”•”ŒŽŒœ‘”‘“–Ž•”“”•”š———“–ªŒ˜’“—”†ž•˜”–˜’ä”w—‘–™–“ŠC”™”‹ ‘’””“””—“›¢‘–¦‘•–””ŽŸ’’ž˜”•ž™””™”‰CŸ—•’”‘~–Ÿ—˜“™”˜–“]•›Žš€›”•”Ÿ”™•™–”•“Ÿ”–‘’Ž’”——;™…‘”§”u—””‘˜«”Ÿ”“”“”•”••”~–”–®””•ˆ¦™™””””’”“””–™•—¥›”¯—–”•˜“”•–‹®”“Ÿ“•–ž””••” –™¢”©›””’–‰‘’Œ¤“Š–“•—“”‹‰”’—ˆŽ˜“—„˜“”—ª˜””’••‡• –•”•˜—“”•”•š•“š””•–’““•“’•–”’Ž”™”’”“’””–””’—š–•™’”““”•”•—•’““–•”””™””š—š••“•”•’“™—““““””””—”“™’™‘•”’”––••“” •™”—–•–š‘–””–™˜”†—”—”‘’””””˜“—’””””—”“””•’–”–”™—–Ž˜”””””’“–”””—–—˜“””••”˜”•“”––”™““œš›“™”“”’š”›”‘—”š–”””˜–“’‹—”––”•”’”œ‘”•”’›•™˜š™˜”“˜“”””–•–’–“—”—˜’•“ޔޖ™–”ž••œ•”——–—™••”••”‘‘••“”™”“•”••“œŠ”˜˜’•𓙢—œ—–”—”––•”“™’š”’˜š“•”™–•’–””“‰–”™™•–”—”—–•”š•”›˜š•”šš““˜—•“™’”–…˜“”“‘’“””–•••”“”›“•–“œ—›–—”˜••˜™””“••“•“”—–™š˜””—–š—”–”™› •—œ‘˜—–“’”•ޓ𕡛”œ™”“–ž•‘•–•”™˜—•˜—–”–‘“ˆ•Š›—”””™“‘¢˜“”•”–šš”Ž–“–”ŒŽ’’“Œ––‘’“‘’’š“Œ““”“”‘•”‘“—““’“““”“”‘’”••““”“•’“’˜˜•”“˜“““”“”“”’œŒ’‘•“˜“’”’’—’˜““““”“‘—“”“–””•”“““”™”“”›—”˜‘…“““‡“š˜“““”““”¬”“’›”“““’“‘““““’’›“““œ““’‘“”““’ž“““““ž•œ’“•’““““““˜•–—’“›™’“”“’“’›“”“˜™“–“““”–””“’“Ÿ‘“’’’““Š‘““”˜”’–“’“’š—“‘“”••—“˜”•••”›˜”•”•“¢”Ž¥–•‘•š”š•›˜“Ž—œ”“”–’”””””•“¢š•“ž–˜“••”“•“‘š“¡”—™™””£”•‘••“”“–ž”š˜”™šŽ™”š“™—”›”ž”‘”–œ˜›™”™”—–”––ž“™••”ž ••’—””“”—””–“—”’“”””““”—“••›‘”ŽŽ–“•™””””’””–“””ª“““””™•£•Ÿ“”š—“”—”“Ÿ•Ÿ”–”—“”™˜•”¢ž”“”’“™”“”””†š–šœ—”“•”•–“”œ—Ÿ–˜”•”—”˜™›ž••””””“’”“•”™˜™‘–’“ž–Œ‘š••’•˜“–›”—””‘””””““–ž—Š––”’‘•–š“–ª—““”’—“—‘”“™ ˜•””“”“—”—–•’†š•’“‰’—‘Ž”’”“•‘‘’˜“–“”’’—š”™’•“’‘›—“˜“•“•‘““•Ž¡—–“—“”“““Ž—“¦’›‘”–‘—”•œ•“““”Ž’“”—˜˜”•”•‘•™•••“”’–“‘•¢—˜“—“•“£–‘““™““”•š’–“””ŸŽ“—‘•”•””™‘–˜•“œ“‘—“’‹““’“‘‘˜“”˜—•”•Ÿ•—–•—š—–‘•”˜‘•••‘—’—”——’›—“•••–•••‘••–•˜—–˜—––”–™•”™˜–—–—•—–˜••–“œ˜˜”–“••–—–”—“––˜––•––’˜””•—••–”•–•—–•“•“–•–’“™”“—•”’˜––‘•–••—••–‘¤—™˜—•••™•–••–———›••“šŽ–—••••–”—–••••———••™•–”–˜—••—™“––›—’—“•–••˜•™—”’•––••”’–”•˜—•’”–”•—–••‘•™•—˜•’””•”••˜•––—–ž˜™•˜”œ’–”𔕔”Ÿš—”–œ–ž•¡”ž•›Ÿ”šœœ””‘ž˜”””””œ•“™“”¢ š”™™”˜•””›•—”œ™—•”–¤•”•–”•”ž•›•›œ•™˜”—••™•š”——”–Ÿ •‘”–’——’•›““—“”›˜—–—””—””—”” —”™””›””””””š”–˜—Ÿ“”•’–‡žŸ•”””›˜”””—˜••”””“˜žŸœ ¡”’””›Ÿ”£›—”””œ“”Ž “•”œœ””•Ž”™•””•˜Ÿ˜—œœ”“•””—•”–ŸŸ•“”–”“”›Ÿ™–™””’”‘”’˜”›‘••“œ“““—”–’“˜”’’‘’‘“’””–‘›””“””–‘“˜‘•—”’“‡“”’Œ“”˜–™”™–’””‘••‘œ•‘–”‘’’’š“š””•—“œ’¨’‘–’•””™–‡•Ÿ”””˜”–‘•‘““”œ•”’—“““–“”–ˆœ—”’•”“””““•”˜“Œ”““‘•”””™—’”””—•‹“˜””—˜•”’‘”””“—™•Ž•”–”™””œ“”’”š–”“•‹•““™›”Œ—•–—“—”“’”™’—•’“˜”—”’˜’”›–‘–š–œ–”•”—“’•”“’–—–””’•“•“‹“‘“š””—“•”˜’””“””“”“†“•”“”““”•”“”‘˜“”“””””“””’“““’‘“œ“–“™‘“”“‘“”“”–“’—••““”“’“”–“”–”’”’”“•““‘“”•–‘“ž’“—“‘”“”•ž›““ž“““”š““““—““’›”’”˜’”™”””““’‘““”’”’’•”’””“’“”•”ŸŽ“”—”“–“—”“›”’“‘Š”–””””•“•”™…”‘’’”•’””˜”’“”’”—’“““•—”“•””’–‘‘”•œ“—•”–’–•—”’’•˜–•–’•™“–““—“”‘˜––””˜””–“˜”˜™‘•–’˜’”’•–——•š–”––˜–”’”“–•š”—––•Ž–‘” ”—•”‘””’—““–”•”™“–•——”””•‘””˜•–‘•”“—Ž—‘œ””””–””—›™–’”–”•”™”š””’—••›”•–š‡•š””””˜–˜”””“’—‘––”•’—‘•–—”˜”•™––—’–‘”””–•”›–š–”˜”””–”‘’–Ÿ•”˜”••™––”›”™”––‘Ž‘’””™—˜””—––†—™“—”—‘“’•”’”–’’––•–œ‘“–—‘˜˜”™“”–Ž™™””“””“’Ž™›˜–˜“˜˜”“”™’”••™“”’“’”œ”•‘’“•‘••””••‘•›’š”’’”–’•”‹–™–””‘Œ›Ž••”’”Ž› ’”‹”““””š›–’˜”””–”‹—”Œ‰‘”””•…””””—š–””‘“•˜”Œ““ž“—”Ž”›‘”žŠ’–˜“”˜”˜”—–•”†‘””“’–š‰•Š••Ž““””œ••”š’˜“˜‘Œ”“˜—”˜—š“”•””’•’”—•“ž™œ•’’’“••””—•–™——𔓖‘””“””“•˜Ž”™¡–““˜‘””‘–•“’“•’””‘“’”–•“–˜›‘•”——‘–•‘““––’’“‘‘•›•™“•”‘’‘•˜“”•““““”—š“Šœ”“–•—§’“–“”¢”””’Žšœ¡™”””–“”•“’•–””—•’•Š™”””“’”—“”–“”—‘””•–š•““”“œŽ•–—“˜’”—”™”–•“”“““•œŸ•— ˜”–‘•‘—”“””¡’——’—Ž˜‘”””•”•“•—””›œ“œ“–“”–œ––œ”“›•Ÿ•‘•—–Ž–‘†–“”—”••””‘””•ž”–•™••Ÿ”–•”™‹•–––˜”—•Œ“”š˜¢’™•””‘–”—•š•”••”™“’”“’•”‘”•’”•œ•”–ŽšŽŽŽ –†š‘•”™““•œ—”“”•—””––•“’–”’”œ”‘˜”’—›•†”—š™—”–™””””•––””š–“‹˜•”˜“•›••–”‘‘’”–‘Ÿ–––”“””Œ”–›™”¤š””’Ž“•›””–›–—™–•”””›‘•–•žž‘–”•š™”––•••›œ•”—”œ˜’”“œœ–•“•˜“•™•””›’•œ’”—”›š•”””‹””••Ž–•Š˜–”˜—‘•”•Š–“”•™–”•—•“”˜•—–œ’•”•ž••—–•”€””“•Ž””§Ž•˜–”“•”“•’””””“”˜”–𙕙”—•””””£””Ÿ””•…Ÿ“Ÿ‘•”—”‰”“•””•“””•–”–˜™”””””••”””—˜’•˜”””••””•”’“”§—˜”–”—””Ž”Ÿ•‹™”‹•””••¡•”˜“”•“”‘”””“”£”—Ž™—–—–”•”’”••••š’š—”Œ”—‘“””•–™“–’”“““••’“•–““—•””—•“”””’””””𔕙—“”–”’“”’š˜“•“’“”“—““”“””šš’˜’”—”–“”•”˜“––”–“—”•—”–”™”•“••–””—”•–”““‘“——”“”›–›””“”–’”””‘–˜™“”“”—”“‘”•’“—”““›‹“•—”””•”””””’’˜“—••—–•’”“’”—”˜‘””–”•’–””””–”•’—’”‘“””“’—’•™“”–“•’””•”˜–•—“™›—•’•’””‘–”““”•”“—•˜”˜”Ÿ””••“˜—“””‘—•–”š•–™’—“—”’”•˜–••””””—’‘˜“‘––˜”“—–”•–””—’–”š”Ž””›‘•˜–•—’”˜–—•—›˜–”•””˜œˆ–“”–”š•–••——””ޕ𕔑™•‘›‘’”™Ž—”˜š”˜”–“”””•”•—––”•”–”––”’—•Ž”’™’—”™”•””˜•–””•˜™–˜—•‘–˜š™•””•‘—••™•˜˜Œ”””—–”—”’”˜”””Œ”–“—Ž”˜”•’••—•“—”••›”›••™““”•“”›—˜˜–˜˜•–”“””“‘“›”“’’’•–“’œ“’“˜“¡•“’Ž’’”“›“’“”””““”“’š“’—“š–“”––“““””“’”’”•‘—”˜˜™—“’˜’—““”“›•““”’”’—’““œ”š“—“”““—”“”””š–”›”””’“““’”›“’‘“”’”–“˜˜““–”’“›““•’—’Ÿ”””˜‘”‘””“““™’“”””š–—”–““”““’“’”˜™““˜˜“’““•”’™“““”–”™–“““’‘”’˜‰”™–’‘“““”–›”š’žŒš‘’’“”““‘‘“’’““•–œ˜—”•”š”š—””›‘œ””•š•––—”—•—–™‹•••”‘—˜—””“””—•œ’—›•˜™‘’¢”””•™˜•’””•˜•”””’”ž•—”•–•”—”–”˜•“”’•›‘”•”’”š”˜”””—•ž—“•“‘”˜™”••“˜‹™”š””š””˜”–“™Ž—”””—”˜–”™•––””“”–š””””•“œ–”””“–••ž”—“–––•™”“”™š“šŸ—–™”””•–”›™”“””•””–™’“™–•”•”••—•”–””””‘“𔓕’””””–””˜––˜˜™’ ””•“—”Ÿš›–•–“““”—“›“š”£Ž”‘£”˜”œ”•“”™”“•”˜™”œ”–•™‘—“““›•œ›˜—”𔓔•–Ž›™šžŒ“Ž˜™•––”™—’•–“§‘–’—”˜“”𔡖••––”ž—ž’“’•‘•”š”–•©˜””˜“™‰“”–†””œ•”“”—“–”“ž’—”Ÿ”’•Ÿ”Žœ”””•—˜—“”š–‘›‘“Ÿ”—•“•‘”——™›˜’‘—’—¥“›”˜›“—–œ™”–•”“•–’Ž™“˜˜”–˜—™”˜˜”™’ž–›’“˜••”““–”œ–––”™™—““””•’“•™—˜““””••“—•–•”•“•’˜–“”“––““‘“““”˜———”“•˜’“’“›”•”‘’“•“•‘“’“•˜•’’–“š•‘˜–“”™‘˜•“‘‰–“”™“—““–‘˜’‘“—“’“““–’•‘“””’š’“™“”‘““˜™“˜˜™›“”“”“Ž–“”“–•“’””Œ‘Œ–“““™“œ”““’“•›–“”–’š–—“•“ ““˜‘”’–•“˜““™“Œ˜Ÿ‘“—”““’‘™“—“Š“’—””–”“”‘“”š•—˜‘’“’’““‘•“”˜•—’•‘––“£•† ‘’œ•˜–˜”˜–‘š•’•“Œ˜”†‰“’•™“““•““•œ—“¨š’–—œ”“—œŽ‘’–“—–˜““–™Ž˜š ‰“”¡š”˜”›œ’Š““—„™ž“›‘—’–“•”“ž•—–‘—”•“•”“•›”“œ—“““”““™”¦”—•“’“¡“Ž˜“ž“™“‘“—“—˜”˜“““”‘£““’“’–˜“œŽ••’š“œ•–’’–œ–“˜““•“•”“›—¤™“™–““”šŒ•—‘’“œœŽ‘˜–““‹“”™•œ‘’Ÿ••“Ž–““‘——–š’Ÿ’”—••œ—”•••˜—•”™“—–˜”—”—”˜—”Ÿ—–”””˜˜”””””—“•𙕕™–‘•š–”“—•”——••”˜˜˜”””•’””•”“”••—•”™”˜“—™™”›˜–š•—”™””””—š™–•”“•”š”—‘•™”•””•’˜–•””””™””™””—”•™”””•”•””“™”–””•”””––•”•”——•—””–”–•˜”–˜˜”™™–”•–•••˜˜˜”—˜”””–•”“™”•”–”””–”•™™––”–”–————””•”•–”–™”‘˜•”•™—”˜™™™’–••–”¬••’’”— ’˜˜œ–––Ž•‘““•™š’¢‘–”˜•””’”””Œ•›”›—•’“•”’Œ •Ž–œ›”•–—•”—”²Ž–•“” ›”¦’“–•Ÿž””””—–’ž“”¢–“Œ—”›–”•—¦•–—¥–Œ’¡’”š¡‹“’¤”¤”•…””‘¤†š”’”˜””œ‹”•–”’ª”•–¢wššŒ”””‘ “””‘–£”””’’š’•Ž”––œŸ‘˜—”“¢”Ž”’œ”Ÿ’˜š”˜›””˜§–’Ž—œ“š•“˜•’”––”’“”– ’“™™•”•Œ˜”–•“˜–žœ’ž”’”¢—––“•—–˜’””“”–š•“•‘•š••š•””‘˜”•””¢””–’˜˜”“’••—“”•”” ˜š––˜•”––”“””–•™—”’”••–”—–œ–¡”•–””“‡š—””š”œ••“—–”›””•”Ÿ•“›’”•’”•ƒ•”™”“™””•¢œ–“‘””’”—”˜•”•••””“›Œ–™–”””–——•””””—“••”–––•“–•”œ•“š••”–•”Ž”’”–›”’” ˜”£•””““’”–˜–”™’–––˜•””¦”•‘–—˜•“›•“”’˜—”––•••—œ‘•“–‘–“Œ’™š†Ž“—–ŠŽ”–“—‘“”›”‘“Žœ‘Ž““”““”•š‘™šŒ””Ž““˜Ÿ›–“’š““•’’““‘›˜”›˜˜“–š”˜”“—”“”Ÿ—‰—“’““š’Ÿ–ˆ•’“““’““‘—‡•™Ž–““‘ •›–“˜“—‡““‘ž”•––‘“‘“˜“˜•“—•““——›’”™“““’›‹““–”˜•—•“••Ž‘““”’œ˜˜”Ž˜•“•“‘˜“ž“˜“Ž““•–”’•“”’“’“•“’œ“œ””“‘™‘”–“’™‘“Ž’‘–𙑓••‘’™“š’˜›—–“”–”‚–“–——›–––¢“‘”—™•”“‘““–’œ’—™Ÿš”›–„“˜¦—›•”’•“’–Ž““”™™œ’žš‘“•–——”—•ˆ–—”’šŸ˜”•”š“™‘œ“™—““˜’’‘”Ÿ’¡¢š“•™™” ˜“–“˜ž““š˜›œ“—“““—“˜““‘–‘™“””¡Š‘¡›““““™š““––““‰“•”˜••”“”––’–”—’™“œ“““–”›“›š““˜£˜•”œ‘“›”’šœ‘”“™”›––—œ“˜ —–“”‰—“’”–˜“—•šœ”–•ž”•—•’’–••”““–™••˜“˜™”–•œ–”•””“–••˜””—‘’—•‘˜˜™”˜’”’—’—–•“”””””“”••œ–‘’’••“‘—–”•–™™•–˜”–”–“•˜“—•”–•“–””˜”•œ’•––•’—•“•“’•—’Ž”—”–—””–™™˜–•“”””“”˜”–•’˜›”“’”›•”—••”–˜—”•’—–•“˜••–™•–“”—š“—˜™“””—™””•–˜”•”“”—”””’”“•—“••’”–‘š˜˜•›™”‘“’’–“’’”•”“–•”•–”—’™”““’•”“Œ‘”’”’–•“‹’’•‘˜’•™“–”›–•‘““Ž““’••‹š”’””Š‘“‘˜ŽŽ”•“”“’’“‰™œ“”““Œ—’“““—–˜¥’•”“““’’“Œ“—““Œ’Ž”’”Ž’˜”“•—••‘“““’““Œ™”“”–“‘“‹““˜“—“’œ“”—Ž—‘‘Ÿ“““”’‘““”““š—“‘—“”“’–“‘”–˜•“›“Žœ“ž”—‘““““••”•Š“‘‘–”’’“‘—”––“Œ—’“’˜“’‘‘–‘”’–š‘¡˜•˜“¥•“‰¤ž‘‘𤓓•ž’œ¤Œˆ§¢‘Œž‘Ÿ‘‘—†“”—•“”œ•›™¤•šž™•“©™‰“¥‰‹Œ‘Ž‘”ŸŽ•›†‘—©““˜œ‘ªšš‘¢‹š‹˜žœ‘‘›—‘–˜œ‡—•Œ’£‘Š™ŠŒœ‘šš¥˜’––‘•’‘šž‹ ‘‘Ÿ”«‘’‘‘¦œ ‘ާ”‘–š‘•©˜¤—˜“˜˜™‘¡™¢“¡™“‘š”¡Š•¢˜…›‘¡”Ž‹¬”•˜›‘Œ’——œ˜›•¦‘£ŠŠ—”–Ÿ“Ÿ’Œ™™‡«––ˆŽˆŒ•œ’““’—•t”‘–u“‘}a›“’“„ˆœ’’‹’’›ˆ•› ›‹“‰š’”ƒ~•™€–’˜¢‘‘’—™Œ²r‰ ’‡|“‡˜—‘”Œ ‘³’˜‹›¡„•’£‰~š˜–›™’{—Ÿ –žyœœ”|“˜‹œ§‘‘’Œ’’™ÿ”’¦’’³”Š’™”Œ”›““¡Š•Œ’’““”’•’’˜›žš®‹’¡—•—£’·––ƒŽŽ¿¡–’Š’—«“Ç“†‹’›“’‘’Šz£™y}’—˜“”’ēޓ‚›ž–‘”’ª¾‚’œ–—Œ’‡­‘’” ”‹’—–”–ž’‘›œ“žœ—˜‘œ“–’ ’—œ›’’‘“‘’›•“ž“ŽŒ™‘’žw™–“Žš’Œ”•‘’™—‡‡‘‘“œ’˜—‘–˜“‘Œ”™‹‘‘“œ†’ž•œ‘—”š’—š—“’{–—••™‘™”™ž“’šŽž“’“‘Œ‘’’”¢ž””£•‘‘’‰’–¡‘”Šž—‘™œ–‘“’’˜šš”‘’š˜Ÿ›©œ’šœ’™š‘˜‘–”œ–‹’ƒ›˜’”’’›‘‚•›“’™˜’‘˜“ž˜˜—’•§–‹’†Ž‘›Ÿ—ž¢–—›’Š—‘Ž‘”£š’‘—–Œ™¤‘”“š•‘’”’’™’ ¡‘©“•šš˜’‰Žž’’’ž‘‘’˜–› —‹¥ŽŸ“¤š‘‘™™œŽž¢š‘‘“’’˜š¬š˜š•«‘˜—¦–œ‘Ÿ—’‘’•“ž—–˜•“’‘¤¨˜“•’‘”—Œ™’ž¦š”—“•Žœˆz“‘œ‘”Ÿ‘‘™¤ž“¡—“‘‘’”‘£”‘“Ž—•™‘•–¨’¨’’’“œ™‘’”›¨Œ–”’–‘—•˜Ÿ‘ ™¨–”¢€••‘‰‘™–‘šž}’‘›‘‘“ž‡’”£’‘™›—•’²“’ŒŽ—™—œ‰–—‘––Ž‘žš– •®•Ÿ‘’§“¦›“’–›¢—‘’Œ†œˆ‰“Š’˜“›‘’Œ™’‘Ž‘‘Ÿ–£•“’žƒ–”‹‘ž›–Œ¡’Ž•‘’Ÿ•’‘”š‰”›‰–‘— •Ž˜“™Žœ¦˜‘“‘†ž“¢Ž›’”•‰”š™œ‘†ŽŠ–‹Š™‡~‘’¦ˆª“•‘“‘˜‘‘𓏩•’–‘Ž‘œ‘ŒŽ™Ÿœž‡‘”••‘‘‘¥‡™Œ‘‘›‰“•’’‘•ž”—ž‘‘Œ”‰¡–¹ž“˜ƒ‘‡‘¢—‘ª”˜‹‘ ‘¡Š’ޣГ‘™šš“ž–š‘Œƒ’—œœž‹™˜‘’›‘™‘¥‘œŸ›“‘“‘•š¥”‘šŽ”ž’“‘ž¢˜–’Žš˜”“¢–˜’’‘”’‘Š’’’™Œ””Œ–™›š••”’—¤––“—‘—•“Ž’”š’~’’’–•ª’“›‡™–‘¯‘¦“’˜‘–’‡“™™•–—’’’‹”–““œ¥Œ“˜—–œ¤{‘™’‘”‘‘’ž™š›–‘’‘Ž’Š“‘˜£™••‘‘Œ—™›Ž’“‘ž”˜“‘’›—ˆ‘œ•ˆ™•”“˜’‘š†›’«žš”’’”œ‘”ª†’—‘‘‘•••›Œ‘‹—––‰œ™’”’“™“¡Ÿ±Ÿ‘‰’›‘““’™£–¢˜Ÿ’’œ¢œ“‘™‘–¡š›—™’’™™˜•—••‘—†Ÿ’‘‘‘™™žœ’ž›‘Š–“š“›“•—š‘—”™•Ÿ––¥—’œ’—˜––˜–|œ”•¤”„–˜›•™‘‘–™–˜”—‘—œ±Ž‹‘Œ‘™Žšœ”¥‘†£›‘—œ£“®š—‘‘”‘‘ ’”›˜š‹†™Ž—’’‘–¡˜–‘˜¨˜‘’Ÿ‘ •‘–™–š‘®™››––¬—•ˆ‘“‘’¡•„˜‘“œ‘•£Ž•™’Œ›˜–˜š’‘›€’ —ž—’”‹“–€“‘•˜“—“—™©Ÿ‘‹‹¡œŒ““¡©Ž–¨”Š‘›—“ŽœŸ‘˜™Š›žš˜”“–¥“¤’›‡¨‘š“›—•“™œ”—“Œ–›•™–“•“–™Ž”–˜˜•Ÿ˜z{›‘œŽ““’™œœ—ž‘‹•¢•¡ ”ž­—ƒ£š’˜˜—™‘˜’Ž¡Œœ”Ž”•™Œ›š‘Гޙ”œœ“£‘„’•—•™˜–Œ‰——Œ••œ“Žš›‹™ Ž—¢šŸ›š ”“¢›š’ž”Ž—”’ —¢‰˜ˆ”Š‘£—¡‰Ÿ™—§’›–r’˜–“˜–‘š“œª™˜ž™£˜“—›Ÿ•¥“—“šŸ“’™’’›’–¦¡Ž’ ›Œžš’–“–š“““’š”’’¢—›˜™‡’›¤—”¥”••—‘’ž—•™“‘˜’ž‚”œŸž™’›—§˜”–š–˜™™•’™‡œ’–’‹’’—›ŽŽŒ—’”’˜’ ™’˜–•’’‘Œ­™““’—–’š“’–¢Ž•Œ“’‹žš™››–’”––•ƒ¦—’“ ’›š‹š’¦ž’’–’•¢‰‘’Ÿ”‘””’—Ÿ“Ž—™—¡•™©‘—’“‘’ žž•‘’“”Œ’˜•”•“’–˜““¡—’—Ÿ–’—•œ‘¡—¡Œœ¦’’Ÿ™’’“’“ž–š‰š˜–•¢Š‘˜’—‚™‘ ““œ’•˜–‘’ —Ÿ™—”•”“–”š–Ÿ’Ÿš›‘’”•˜¢“ ’•›•˜”™’’“ ¤——”˜—˜“—’ š šœ’˜’’—’’“œ™—š’”’’’”“”¢’˜ ™Ž’–œŠ‹ªž’“““”—™‘’–””š’•™–Ÿš™ž’šŸ–”“•›©¡ƒ“‘’—‘’’–¡”’•£’’˜’•“•–’’œ”Ž˜–’†“‘––•†ž™—›•’™”œ’Š“•žŸ“’“‘¡•¡“„¡©„——–’šŽ’’Ÿ‘œš‘u•Ÿ‘•‰”™‘‘‘““ƒœœ„–›˜‡’™‘‡‹”¡‘™Š‘Š‘•‘‘Ÿ¢‹••Ž•‘”•‰–¤˜—œ —–—•Š—’‘—¡Š—”œ”‘‹Ž“—‘°•—Œ‘Œ—„”z‰‘•”’‘‘𢔉–™‘“‘—‘Ž–›ˆ•ž‘›”žŽ˜™•’’‘˜ˆ“š‘–‰‘Ž‘‡–š™”•’‘Šš“’”—£¤Ÿ‘–‘Šš¦œ’‘ ‘—‰“‡”¶’‘’Œ—‘‘”‘‚›‘–‡™„š š© ‘’¦–‘”——†’–’—–¦œ ‘›£—““’“˜ŠŒ•’ˆ”—•‡”Ž‘”“¤ˆŽ“’—’’ž¢ž¥—„’¨••’šŠ›“•‘¡’’‡›’“ Š‘œ–šŠ“”’” ›Ž‘Š‘’‘‘’ž—ˆ‰™™š˜’ž¢œš™‹‹““„™œŽ——–™”—™“Œ”š—›Ÿ’“’’’“¡¢”ž¡’‘“Ÿ“›’“‘’•­†––““’’”šŽ’’œŽ “ž–’§™’‘†‘‘’–››¡Œˆ¨©•Š ’‹“”Ÿ’©‹“š’˜’’••—‘—–¬“˜ “—“˜Œ“š““’š™•ž “¡Ÿ’ž’‡†Ž˜‡£›ž’™”Œž’“–—–§–’”¥›“”‘’¦™ª”¤®“‘”š“““—“’˜œ•‰¦––¨š›ž˜“•“–•š–˜“’“››””™Ž”‘““˜š•Ÿ‹“¤‘§“ –Š‹”¦–™“Ÿœ’œœ¥’“—“£–—™——–œ““£• ’“•’“Œ““•›”–“— “““”’•œ’–ž’“•œ—¨”’“’š“•›““Ÿ™›™““—–¢œ›¡—“—””’§™“’¢ž““‘“Ž““£œ““˜“’žŒŽ¢“‰•”›•¨Ž›š“‡“•™œ™•¢›š›–“Ÿœœ“𥡬•“™‘¤‘–¦‘œ•˜—––˜˜’œ––žžŒ–•’Ž¥•Ž˜˜’’•‘¥‘‘“‘‘•ƒ¥–žŸ›“š•”œ–‘˜ž¡™•’“‘–™‘˜•šš’—t‘˜š•‘š–™œ¢•‘¶šŒ›—•‘‡‘¡”œ•¡‘²–›“›¢–šŸ“‘’–¢«‘‘‘’ž‘‘ž¯±š“‘‘Ž•‘š“‘“‘•‰¥¡’’‘‘‘£Ÿ—‘’‘˜—“•“’š›œ™¢š˜‘¡›””˜™›•œ—‘”‘ŽŸš‘˜™‘‘š˜‘¢§˜‘ž“Ž’˜––’€›‘•—–ž˜’˜—•‘†‰š‘šž•šŽ—œ—|‹‹ˆ“¨š•Œ’’€›†™œš—”˜˜„–Ž„’{–Œ”‘‘“‘‘—…›‰•‹˜‹”‘‹Ž‹ ”‘— ’¤‘’–¥•’–‘›ž™›‘‹¦–™‘¥–³ž{‹’ž‘¡˜›˜”š‘˜—ž•™’¿•ˆ‘‰}’“}¡˜Œ‘‘–w­—ž…‹‘–‘¤””¢† ˜”’—™ˆ®¡‘‘ ©—‘“‰–—…’”¥›•Ÿ•‘ŽŠ—¤’¤r†”•‘‘¥•‘ª•u’‘Ž•‘‘— ‘ž’žy’šš˜›žš˜‘¢‘¢™ª}¬‹™–‘«‡‘¥•’𛥑‘– ¯’•”’–’—Œ”’—”””•“—’™“‘Ÿ’‹‘–Ž™–’‘”‘’”’‘œ•’“•Ž“–•‘•˜™™Ž–‘”‘–š”–‘•†“—”’•—’š”—…–••‘˜”Ÿ—‘‘”“‘‘™‘––š–‘™˜ˆ”™Žž–‡‘“’“”–˜ž‘‘”‘‘‘“š—š’˜‘‘“Ž–‘™™™–›’••‹•’”’’“”’™™‘™“–”˜••“”–˜““‘–—œ—•›–—‘™‘”™’Ž˜‘‘‘’‘‘–—–’—Š”‘”˜“”–”•‘’‘‘–‘š˜‘•”–•‘‘™“‘˜”˜”™›’—•—ž­Œ›–’—‘ž’™ž“‹›•šŠ”•’“™Ž ˆ šˆ”–ž¡œˆ„œ™•‹§™’‰’•Š˜Ž•š’‰”™ •ˆˆŒŒ‰¡š™˜ŽŸš–ŽyŒŸ—ƒ”“™‡ ‘”“Œ–˜“”–•š¬™˜Žˆ”£˜’™œŽ›’—•‹“”˜ ’¡”››˜‘¡›‘’‡ž¢œ—’–šœš”‘—‘‘§ ™–”‰–¡–°ˆ˜œ‡ž••°Œ›’“œ”›Œœ‰Œ›–˜–š‹–™£“˜‡˜‹”‘•’Š‘ “–ˆŽ‘’“¢ž—’£’™Šš‘“š‡’„™‘’’š’‘”” Š§” ’¥—¢—‘• ¥Ÿ˜š”’–‹‘‘±˜Žš‰‹”’“ˆœ£˜‘˜›‡˜•¢’›•••¥‘˜Ÿ’©Œ‘«’†˜’´Ÿ¯“Ž •Š“””“ˆƒŒŠŽ‘˜‘’…‘‘‹­‚œ“Ÿ‘‘¥’”‘…ˆ‘¢‘’“‘¯œ—ž„“’’¤´•š‘’—§ª‘‘’¢¥•¨™£–‘’𖣩ˆ‡{“œ‘ƒ’š‘‘‹˜~¡’•ž’‘ ”“°—˜‘£…ž›”—’ž’ˆŒ›±—’š‘¨Žœ‘™”š™ŠˆŠ‹œ°”–‘”™“”œ˜™™†“œ‰ž•š–Ž•šŸ‘”˜’’Š”“”•”˜”š ‹“†‘›™‰ž“‘‹•šŒ •‹’£˜—•—œ’ŽšŽ––œ†” –‹›’¤Žž“œ•˜‚™Œ”˜––š ’‡–š¿¡ ””‘¢Š—ž—Ž’‘–—–œ–“‡•“—ŒžŸ–‘‘”–Š–š—Ÿœ‘“›§•˜•‘˜Ÿœ—’£¥•›œ’…”—ŠŒ“™£™š˜ŽŒ†œ‘–š•‘’–”ž—‹™„››™˜šŽ™œ•‰•™‘–ŠuŽ„“‘–’—ž™•‘¥ŸœŠœ”–—‘‘Ÿ—«‘”’•”•œ’‘’‘‘˜—“–›Š•™™—’›’”•’š’›’‘›‘”Š’‘Š”Žƒš¦‘›—•›™|™–Ž‘Ÿ•¤”Ž”’’—œ“š’Ÿ“š’©šŸ°”›•”Š—š’‘—˜”™•‘˜‘‘‘–¨‚—’’‘Š‘–”‘£’›”œ‘“•œ™‰š‘’‘’™ž‘’–Œ’”–¨‘™šœ‘¡Ž•‘‹‘—’¥–𙑕’’‘‘›žŠž‘‘’‘£š™”š”›‘ž‘‘•’’…–‘™‘™˜›Ž˜š—‘š‘ž—›–—’ ””Œ‹©’“£”œŸ˜’–‘’“‰ŒŸ–‹‡”’Œ˜œ¢‰‘™‡Œ¡’‘™“Ÿ•˜zˆŒš˜’–œ–•ˆŒ¬Ž’—ލ‹š‘†–”­š˜‘¡šz–ˆ“‘ІŒ•—–’“ •œ™—¢”•–”¨•—šŽ—Ž¦ž„­Ÿ’™˜‹•™“–˜€›‘‘“œ‡‹’“œ‘šŠ‘“™‡‰—’”©Ž—”‘š“˜¥Œ•“˜›Ž¢ Žž}—‹››”‘¢ž›—|Š„Œ‡‰–ˆ ‰•™’„••‘œ}‹˜š“‚”‘¤˜”ª•“‚Ÿ£‚ ‘©”‘ ‰¡–‘‘Š‘‘˜›Ÿ—¡£¦«•¤›‘—±”‹ —‘š˜™‹‘˜“°‘ŒŠ••’ Ž•™˜‘¥‹•ŽŽ™´¢œ™…Ÿ‘ªž„™ž¢Ž˜‘ƒ’‘œ–¢¢–©Œ’”§ ‘‘‘›‘‘’¸‹•‹¨¡‘”‘›‘›œŽŸŸ‘•›­zŒ¢—‘’‘ŽšŸ‘œ¢©šŸŸ’’Ž›¨˜•‘š™š¤¡‹˜Ÿ‘Œ‘–—¥¡£‘Š‘‘𬖥“’­Šš“—˜œ’Ž›¯Ÿ˜Œ’š‘–Ÿ‘§›¢¦Š•މ›‘£™‡Žšœ‘—š—¦žš“›Ž”‰•ž„—‘Ž”™—‘‘™—…˜‘Ž””ª|Œ™—•…’Š”œ‘¡¥–‘’™™›•”Œ‘‘‘Ÿ˜œš—žž™“ŠŽ›žŠ…Œˆ‘™’“‘ž–‘’”ž” •‘™Ÿ“¨¢˜ž””¡‘ž±•Ÿ‘‘”‘›£—–š‘šš˜•¢¤–‘’•œ”’‘œššŸ”‘˜Œ”𕤑˜›¡œŠ˜¦‰‘‘ ™ š©‹Œ˜‘—“𕢑Œ‘–•œŸš‘‘›žžŒ‹’•›‘–“šœž—‘¦˜—˜‘“‚”ˆ““š‘ŽŽ‘–œ›’˜ŒœŽ‰ž–’™£”˜’‘‹‘’––‘•Š”œ’އޑ”ƒ™—‘”“’™“”’’Œ˜™’™›’œ•˜‘’Ž“—‘¡—’Œ”Š’—™˜”Žš’ŠŒš”Œ‘‰‡œ“‹ˆ•’‘¢‘‘‰‘’”—ƒ—‘Œ‘“’’™™‘‘–‘Œ‘’˜†Š”“’’’¥¡Ž‘’•Žšœ‘•›œ…ˆ‰‘•Š™£“‡“§“–’Ÿ’••’ž¤’‘‘“”’–”‘—’™”™ˆ•’¨Ž‘“š‘ˆš’™˜‘‰‡‘‘Ž‘Œ“~‰› ‘¢“–’‘š–œœ˜‘•˜’¦›’ž’”„‘”••œ’“™—›’’’’’’›–š™™•«”š“‘›ŽŽ‘˜•’—’’¡Œ‘¢™¤”“ŒŽ„’•—™™—‹—šŽ’‘”•šŽ–˜ ’œ’™—š–œ’£”œ¥Ž˜›–£Ÿ’•—–”‡‘‘‘¥‘’Ÿ†¥”›œ‘’’ž’Œ¢‘”˜’“œ ” ’’’•¢Ž›‘’”ž’–”““žœ“›œ––’—’‰Ž’“•š –”’’™•‘Š˜Ž™’œ ‘‘–””˜–ž‘—ž‹š—‹–’ž˜’›˜š˜  ¥›œ–‘Ÿ‘•Ž–”•“’•˜±–”𔑗——’— ’¤˜’–’•–”¡•Ÿ’˜›œ’’’”’‘šŽš–‹¡›“–Š”’‘’Ž~™•”“™’›”—’“£’–•™’’˜˜•–™’œ’‘ŽŽ–‹š•™’’”˜—”“™•’ƒ–––šŸ‘•›‹›“Ÿ’›£©‘’’’’‘’“’‹”š–˜’‘‘˜’Ž¢‘ŒŸ†“Š’Ž•‰‰™”‘’“‘’”–™’’Š›—š—“›“’‹”—£’¡š‘™€¡”–’•’’›‘„”¢™’¢˜’‘‘›•—›’™Ž™‘–ž“’†’–œ ˜‹–”ˆ‘›•¥’“‘”‡”š–‘•”™™’˜““”‘¢˜ “‘ˆ–“—™“°‘Š’™Žœ‘‘’’‘–¥ŠŽœ†˜ Œ˜’¢’––‘—’”—Ž’Ž–˜˜™v‘‘“‡—–‘“•‰‘§ž””Š„ˆ’•‘›˜‡Ž•›’’‘“˜–‘“Œ£›”˜”‘•‘˜‘’Š‘‘’”{„”š‘’‘“¢—‘’˜œŠ‘š•›˜‚£‘‘‘‘“——’’›‡š¡™œ’™”‘‘‡‡“‘’”•¡’˜—›•‘‘‘•›–š‘’‰‘‘•Š››Ž§¡‘›‘–”Ž’…”’•™–™•”§›’›‘Š“¡‘‘–Š–œš–›‘•“„“—Ÿ’‘†¢¨•Ÿ¤‹˜˜– £”¦Š¡¡‘‘œ›‘‘—‘‘•˜Ž…¨‹‹£˜•ŽŸ‘˜«˜ž”–“‘——‘“›‘–“™•™‘—••…ŸŒš•—“•‘¨š‡’˜¢’—‘”ˆ˜˜œ“œ‘™“‘˜‘“’“𥖗’Ÿ¦Š›––‘‘Œ¦‘‘—• ‰‡¨‘‘Ž“—™‘“¦Ž¢”‘˜––¥£“—’’‘—œ’Ÿ‘¡‹•𑆔–šŸ¡§‘œ£œž‰‘™‘‡Œ’› ‘‘’‘˜‘£Œ‘–‹¦™™¤•’w¤‘£—~Ÿ–ž›˜‘•˜œ‘ž˜¢™‘ˆ¡˜‹®‰¡’˜•‘™ž”•˜’”‹“Ÿ‘“—•ˆŽŽž–›‹Š¥š†œ–••Ž‘‘ƒ™š ‘œ–¤ •§¤š‘””Ÿ™‘”Œ’•Ž”¡•„šŒ¤¥“ˆš‘¤Œ—˜¢¢“—¤šž›‘•‘•“—–˜š’™ŽŸ­’¢ž’‹‘–ž™•‘”™›ª£‘‘‘Š•”‡“¯–šŸ”ŸŽ‰•’¢–›“œŽ–ž‘’”Ÿ‘‡‘±Ÿ ¡Œ–¢‡žš“—“—˜Œ‘}“‘£œ—Žˆ›Ž—š˜Ž”–•“œ§ž’•”›“˜“–—“Ž—’Š’‘ž•’–’––’“–˜—“™‘–’’•’’•˜“™–‹•’Œ”’Ÿ™™–›’™’ž•’ž §‘›••“’““Ÿœ—–‘ˆž™‘’‰˜’™“¢“œš›‘‘ ‘’§”’Œ’•˜Š—†–“—‘‘‹Œ’›’’’˜˜ ••”š’”’˜“–—’‘’Ž–“•’“”“““’™˜”Ž’““™š“’‚’–™““ž’“˜˜••˜™–’‘’¥–’‘‡”’›“’—†–Šˆ‘•“•–•ž–…™“›–“’’’—˜£•Œ¡™’¢‘”’ž“š“¡—’’–®“ªŸŽ––‹”Œ˜¢Šž£—“––Š™–‘‘›„‘‘šœ©‘“‘˜™¨¤Ž–š–‹Šš™¡‡‘¢š¤‰”—™’ˆšž¥˜’‘ž‰“‡†š“¡“š£¦œœ’˜•…’œ•›“‹ ‘›™…”—”™—ŒŽž’Œ‡©›‚ž‘”–£˜Œ”™™Ž‹’˜ŽŒ–—š¥‘œš‹…ƒ“‘‘‘› —¤‘އƒš•¨“š–‰š–›Š˜…£’™š¥˜Œ‘•Ž–—u¢–‹—¡ž˜£ƒ³ŒŸ•ž¤“‘¥—Žšˆ“’†‹‘šŠœ–•”Ž–‰’ž ’™Œ‹•¢‘“ŠŒ“š™’ŠŸ—ž¢ŽŽ•~—““““¡ª“’–“’—‘–•‡Ž’Š˜‘–”’—œœ£—’ž˜“’ƒ «‹Š“˜’”’’”ž“¡›“š’™——¢”‘މ“—’˜–“¢”’†“Œ’‘’†‹”‹Œ’› „¦’¤’„’Œ’’žˆ‚œ‚’“‘’š’‘—’š˜Ÿ‘ ’”š ³šƒ›’“’¢¡’“‘‘ Ÿ’š“–••¤’“’…”–›¬ŒŸ•’˜’œ’’Ÿ›’£’Ž’’¡’ŽŸ£œ“¥¤¡—“Œ’Œ’š—š’šš’“š’—’“‹˜Ÿ•Ÿœ’——¢‘“’’˜”“”ššœ˜™Ž’•‘œš’’™˜’’Œ’“’‘“‹˜•˜“š’’ž’˜‚•Š—•‘—’Ž”œ“’›‹‘›‘•Š“‘–’Œ—Ž’•••’••’”˜’’“‹™—–™™““œ˜™˜‘š™’‘’”–Œ–”‹’–““‘’“’š¡›™›’“““‘ž’–‘›—“”š•ˆž˜“““™˜—’’’—ž–’˜”š‘˜œ—’•™”—“‘“š—¡“‘“’’–’‹œ’’’ˆž”Š“’Š’˜““—’‹™“•”ˆŽ˜™”‘’“’‘•˜•›“‘‘Ÿ›¨”œ–“‘—œ•™’ž¢”¢•–“’›™™—Ž’“”Ÿ¤‘‘˜‘‘˜ž“–¡‘‹˜•ž–‘œ‰ž“ ‰””’‘™—“‘˜žœ’“’‘• ‰˜“™š’˜™™’‘„™”š’—˜‘™ƒ–’’¢˜™’ ›§‡–¡”‘Ÿ—‘——ž›‘›‘œ‘’š˜˜‘¦’’¥‘› ‘ “¢‘†‘œ£–Š—’’“’›“™š’š—”˜Ž§‘—‘––¨ŽŸ’šœ“”‚¤›®”™—‘–’‘‘§–˜‘–›‘‘—˜’ž¡ —’œ¦—“—Ž’Œ™‘Ÿ— ”’ ™‘ˆ£Ž‘™‘˜¢ž˜—‘š™—“’™š—ž‡›˜Ž–›Ž“š‘‘—”¥Œ’—•‹“’’‘‘˜–¨”—••𣓥˜‘”𒑤™‘¤œ”‘˜‘£’—™•’’›” ™‘¢“Ÿ–‘–‘“—‚”‘‰’‘’‘‘‘•žŸ‰‘˜™˜—•–ž’œ¨‰—‘ž–ˆžž‘Ÿ‘˜Š‘‘š¥”Ÿ˜Œ‘“‘‘‘”“‘‡—ž•’œ˜¡¢š£–’’‘’‡”ˆ’›˜‘‘““’š‘˜–‰™—‘”—’£™Œ‘–’‘Œ’¦—‘˜š”‘ŽŽ‘‘›„œ‡”Ÿ’Ž”–“˜“–’’‘šŒ’˜¢”›‰†™‘•§‘©£¡˜µš“™‘™˜ˆ€”‘–Œ™œ—‹Ž–™•Œ‘—œ“‹•‘Ž’§“‹’‘›‘’›’ ˜–¢¦Œ˜‘˜—™œŽ‘˜–ŽŽ‘Š‘‘‹Œ’–Š‘Žš”––”‘“Ÿ‹‘{ŒŸ€‘|”’¡¤¢”™˜–†‘“𙄑“š…“«‹‹’“ŽŽ“|‘‰‘‡‘’›€–މ’‘š’“‘Š‘’˜’””•¡›¢˜’‘’—‡˜‘’¤€•ˆœ‹’’”ž–Œ’š‘”–ˆ›£¡Ž ”ƒ‘—‘—‘’—’𛑕Œ‘‘‘}Ž‘‘¤›‘›Š˜“ˆ’˜’‰““šŸ˜“˜›˜…—‘“š¨‘›œ™ˆ‘œ¢•‘‰ŽšŸš“˜ž¡¦¢’›•‘—“Š–Š‹š†q™¥’‹¥“—’’’‘–œ›Šž›—“’‰‘–€–…™ŸŒ™’¦˜Ž”’Œšu˜¨–“†’Š“’œ•Ž•“œ’‘Ÿ“ˆš—“’…‘˜•Š“Ÿ˜’Š›‘˜ŽŒŒ”’¥’Ÿ¤§Ÿ‘”‘’§‘’‚¬‘¦‘‘’›‘˜›‘Ž”‹•’‘‹†œ”Œ’‘’’Š––‘’Ÿ˜‹•“™ˆ•—œŸ’‘‰›‘‘œ–¢Ž‘’Ž–’“y‰’“’‘š”Ž‘™–’…“¤£–“’§‘‘˜•Žˆ”˜‘š‘˜‘—’‘”Ž—…›–”©’›Ž»˜›•š—‘«”—‘›—Ž©””š“š•‹¨“’¢Š—’’’‘‘’„¡£œŸ¡•™ž•Ÿ™‘’Ž—•›’˜œ‘‹ˆŒ“–š–…’œ–”‹Ž•œ”™“‘—ˆ¨š‘””’“™’š”œ‘‘•—}¥œž‘‘˜œ—‘™—¢‘—‘’¨‘‘š¤Œ”¡˜™‘”’‰‘Œ‹‘’•Ž—‘’“‘™ŠŽ‘’‘”‡¥‘‘’‘ŽŽ–œ™“—›“”œ’›–’¢·š–‘‹’–™‘Š’˜’‘˜’‘Œ”–’Ÿ¤¢‘…”Ž˜›•’‘¢–˜˜¡“‘šŽ•‘…š‘š—–¢›œž‘—œ•œ¢‘–“•–œ‘£š‘–’“‘’™œ™¡”‘›Ÿ’––›’‘“‘‘œ”’“˜™‘–Ÿ–“™‘•™›”œš™‘˜Ÿ•‘“§•™˜›’’žŽœ”™‘›—˜•‘‘©žŠˆ™“•’Ž•‘Œ—›—‘•¡¥• Ž£‰ž”‘Ÿ¤œžª‚‘™‘‘‘‘‘­•›“ ‘’‘•‘–”‘— ˜–‘ •†“œ•”’’‘“„˜œ‘’˜Ž™œœ‘‹„œ””ž‘—œ“‘£ •£…‘–‘”•‘˜šš‹‘ ˜‘‘—“•™˜†…’”œ–ž•’“Ž’‘–•›†”Ÿ¤’—‘€ºŠ‘™›’—ާ›‘“’“‹“™œ“˜™™›ž‘‘£—“——Žœ–œ›œ¡˜’“ޙ𒒑‘•–”“ž˜”œ™ž—“•‘™ˆ•–𛓒—–Œ‘—‘šŽ¡’‘Œš•–™ŸŸ››‘”žŸ–•—‘•’–›”‘˜|™“– š‹š˜‘™¥ž…‘‘‘£‘‘˜‘—™ §’’’‘“’‘Ž›—”¢’—˜ž’“—’’‘”’ž‘’’™›–– ’šŽ—¢—‘“–—‘“› ¡•Ÿš’‹’ŽŸ‘Œ¡¤‘œ‘‘—¢™’¨›’Œ™’žœ’•’’‘—”œ‘™œ”‘£—‘š—Ÿƒ’˜‘ š•Ÿš’š‹  ›˜ ‘‘™Ž–‡™”†££‘‘˜•’’‘’’‘œ’’‘–—š‘““˜‘™‹–“—Ч‘›‘‘—–‘—’‘’  –ž””’‹—–¢˜—ˆ’›š”š‘š›““£—‘ž’–ˆŽ—œ“Ÿ™˜§™‘Ž™‘š¡ šŽ’•‘‘š‘›—•š›•Ž™ž¦›‘’’‘ާ‘›¤–›Š”£—£Ž¡ž‘š–‰œŽ’š››¡‘”‘”“‘™•¡•‘šž‘––™š–Ž‘œ’Ÿ›ž—‘ŠŒ’”™™””™•™›‘Ц‹‘‘‘œˆ•𑙇¢Ž•§”‹’Šˆœ§‘‚šš•Œ’“’—Ž›“›—’“ƒ—Œ’’”’’–žŽ†™••”‘ž‹‘Š›œš‰•ž§‘‘†’—‘”§‰–ŽŸ™¢’ ™“šªˆ‘š’—‹Ÿ‘Ž–£¦“°™“š‹…”›•’¯¤‡—–žŠ•–’¯£š›”‚’‘‘•˜‘‘Š›|œ—•’‘‘Š’–‘› Ž—ª’ˆ‡…Ž™„’“’‹Ÿ›£’ŠŸ—“Š¢”ŒŒ™Œ–‘–œ›œ”Œy–‘—’•’—–’d‹¦‘‘¡˜’‘•­Ÿ‘“Ÿ‘…«ŸŸ£›’p‹‘ˆŒ‰ ›œ}¨«ž‘Š}™‘‘†ˆ‰•—›’Š’š«‘šš“’‘’“ ’—™•”““”’šŒž˜—•“‘•˜Ž’’‘’˜›¡”–•˜‘˜‘–’œš”‘“–’Ÿ’™‘’’›ž–•Ÿ“—‡’—“›‘’””𒧤‡“¤‘““†š•™’–ž’˜”•œ›“œ˜Š——“Ÿ¥’›”’•’““’’‹ˆ™Ÿ–Œ™’“’˜’‘’”¡™—•’¡¢—˜œ’’‘”›–—‘’•¡Ž›“–’”•‹‘”𒗛ޛ”–ŸŽ“¤’“’Ž’“•›’›Ÿ’’ œŽ’›“–œ™™£•“‡”“‘šœ›Ÿ‘¤›’™“’“‘™–“›–œ“”“ªš”—””•“•–‘“‘˜›•œ‘”–™ —”š}’—“˜›™’““’——™˜’¢“’Ÿ˜–—“™† ——šŽŽ“””Ÿ•“”š·•–œ š’›—›£œ™Ÿ–—”“w–‹‡ˆ—”“‹™™–‘™“•—¡˜‘•˜Ž•‘˜¯’‘‘˜ —“ž“”‡““—›‘•¡œ’“““›’¦™“’—•™Œ“œ—…}–—™““’žžŒ•““Ÿ”¡ Œ““••™—’™“Ÿ˜ ž™›…–š–’“›Š’“™š•“““–’œ“•ž•‹’—™˜“Ž“–‰š˜—Ÿ”™“”’¤“——••‰“—œ‘“–ŒŽ–š’—’“›•‘‘“œƒ•••“–§‘‘€—š‘”˜’‘‘‘›•“š–“—žŒš ‘ž›™™ž‘’‘“–œ’‘œƒ–™–Ž’šœ›”œœš™‘Ÿ˜¤˜™›‘—”˜˜““’Œ—œ—›‡¢ž—•‘’™”Ÿ”’“‘“‘’”››•‘“‘‘–’“–‘Ÿ””–‘˜‘™Š•“’’‘’—‘•Ž˜ ’˜’˜˜˜—œ‘Œ˜•’š”—„˜–™‘”’œŽ’’™¦–‘‘Ž‘˜§“ Ÿ‡‘—’• “™™’¥œ’š“š’—•—‘˜–‘’—™‘‘”’‘Ž’’Ž‘“‘Œˆ”——’‘‰–œ•‰”’’•’…“•’‘“•”’‘‘’’–Š“‘‹—™‹—’Š’Œ™’›’˜”•“’‘‘Ž‹–’‰˜“‰“‘›—•“‘‡•”™‘™Ž–“‰Ž–”—˜’›‘‘•–šˆ˜“•˜‡Ž“’’•‘’‘•““˜‘“’“Œ‘Ž“Œ™“’••’™‘’’’‘šŽ”‘’Œ’——”˜’ŽŒ‘“–•’‡…‘•™ˆ‡Œ——’’‘š“’’‘Œ’Ž’‘‘›‘›’‹“‘‰š›“—’–““ޤƒ—ŽŽ‰‘’”‘š—•›—•’’˜••‘”“Ÿ–’žŽ”‘•œ’œœœš–œ——Џ“‘’’¨Œ”’’”’‘šŽ›¥•œ›’–˜’”®ˆŽœ”‘’“ —•’œ“Œ™¢†’š“˜•™ž’•Š‘‘‘‘˜Ž›‰’£’—™œ’ ——–’“—”™”•ª›˜˜œ’™Œ«’v’‘‘—“‘’”{l—œ‘”’”’‘’‘—œŒ’’‘‹²”­Ÿ’“’”˜”‘’›‹‘˜˜‘“™ ž——’’‹—‹Ÿ‘Ÿ•¯œ–“’’š›’‰—~œ’–“’‘˜œŽ“¦‘‹Š–“˜–’’‘Š’¢“—‡Ÿ’’—•’†‰ ’˜–¡—œš›¤š’˜•¡—Œ‘——“˜™Œ“•£”šŽ—š˜•“Ÿ¥’““’“’˜’’‘™— •ž”Žš˜– ”’’|™ž”š˜Ž’’’š”’™ §Œ—›™’œŽž©—•¢Œ™–’•¢Ÿ¡—Œ’‘˜œ¢’›„˜’¡–™ž—› ¡‰‹˜“—’–Š‹’™’’’’‘š‘˜•’“’““”˜’››’ž’œ—“¢Œ”““’–‘—¤’’‘ž›Ÿ˜ “š˜Œ•ˆ‰’›”“£ž•Ž¢”Ž’›’š˜’‡•›ž’”“’’˜œ•”‘žœ’šœ–”Žœ’’–’‘—Ž›¥Ÿœ”¬—’‘¦’£•™™’„—™”‘’˜’’ž —‹˜’–Ž–“„”˜‘›’ Ž•’’’‘‘“–‚ ”“‹—£‘’—“Œ“—Œ—’’’‡’’‘•–‘‘˜™‡’’˜•Ž–’ˆš‘€’’Œ‹“‹Ž…’•———‹‘Œ’›œŽŠ†‡Žœ’‘‘š’Š‘‘š‘‘–dŒ—‘“‘‘’š‘’™‘•”“’’• ’—Ÿ’’‘Ž…‹Ž‘’Љ•š’¡‘ŒŒ”’”‰—‹˜›—†‘’”Š‘ˆ’†˜’Ž‘‘‘‹”‹•‚™’•ˆŒŠ‘’‡’ Ššš„’™“’’‘Ž‘™‘‘’“‹‘Ž” ‡’šš£•“”™‘Š•‘œŒ—‘”–‹šžš”—¥——’–•’’’‘’—”—…™—•˜£™•‘ž‹œ‘˜™™”‘“‹Š‘‘“ˆš–“˜’””˜’‘† •’Ÿ•¥–’––’”˜••‰’””’““†¤Ÿ–œ•™ ‘“™š— Š‘¡‘–—‘’‘–˜œ“‘‘•’’›‘‘——¦’𙕆“™•’’’˜’•‘’›Œš›•‘’—“•—’“™Ÿ™˜ŒŠ”——¹’‘’›”‘Š‘˜’™—’‘•¥š”“¨–“‡‘—“•—™’”—’“–‰™‹’“””™‘“›’’”“™š„“’“£“Ž˜“”™˜˜–Œ–‘‹—˜Šœ’š–Œ˜Ž•“”’—’•“™“’‘’’”›”—œ—’˜’¤—’’ž›˜“”’’Œ’’œš‘œŽ™™’šŸŽ‘ž•˜‡˜’“’›’Š™™’£Ž˜—–™‹’’“—˜“‘–’ž¡”–“’•Œ’›’–œ’’”’˜––˜’‘’—“–£’š“–š‹’•œš•—˜›“’’˜š¢š’“Žš’š“”™™“ž’œ’‘–‘˜“¢¤—”’”’•“’ ›‚£’Œš’’ž“œš’ž™š–›Ž’Œš“ž•™š–“™›‘’‹‡˜’—›’–œ‰’•›—•“œš—ž‘˜“–‹˜œ—“˜‘œ”“ƒ†“Ž •–“’•“’˜›šŸ˜Ž–œ’–𒛇ž‘™“’’Ÿ™•’’Œ——–“™˜“›šš˜“›–™‘“Š•ž—‡›Ž“”™  •‘™‘’“›››™š”𢓙“œ˜Š˜“™’”“’’—˜‘šŽ“–’”“˜–’–ž‘Ÿ“–—š±–—’’“’“¡ž—’“¤„—•”•””¢–‘›“™ •˜–˜–“’““Ž’œ‹“‡—š’’‰’’˜—’Ž•›ž’–—“—˜—–“œ““ž•—šš˜”Žš’£‘Š’—•’ˆ•žž˜–“žš—•œ¢”‹¤¦š“—¡š–šœ——‘•¡¥“”•œŸ““““—œ¤Ž¢š—˜«–“œš’¤™–”“š—––“™Ÿ˜‹”š“•‹š—›™—–”œ™“–’Œ“”“–“—‘•¡žšž““˜•˜›‘Ž•”“¢Œ ›–“—“™““¥¤¬™”˜ “’“•“Žœ’˜”œ˜“•–‘ ‘‹“““žœœš’“¤–œŽ˜¡“–•Ÿ¥œšŸ“”žŸš˜™¢³¥¡—“Ž“š›“ž£’’“¢œ““–——¥ ““’˜•Ÿ¢˜“¢”“Œ˜‹™šž¢ ”š“–ž’“—žœ˜—•Œ˜’™Ž›››”•››ž§’“¥–ˆ›•š—šˆ˜”–™¥’›Œ–’’›‘‘˜œ™žŽ—›™šŸ˜Ÿ‘‘˜‹ –œ˜š‘•–‘’‘Ÿ ’•›ƒ‘–›Ÿ›¡œ”•‚”Ž•‘“–~›œš›’¦‘Œ•Ÿš–•‘‘—Ž•ž™Œ‘‘›¤Ÿ“®Š‘Œ‘’–‘‘–˜–š‰¡’’‘‘‘–¢‘›’™›’—•¥š™–’’“‘ •𔑒œ £œ‘‘™•–¤•™ž’“”ž”“‘€ž¤–•‘˜’›•‘{š£˜‘¤š‘‘™š”„›£’¬Ž˜›¢›—’—˜’’”£ œ¦—¨˜™‘Œ“›‘—•”‚Ž‘›’ž•’’‘˜‘ž•”’˜Ž›’“‘••–œ˜ž“”›“’’“–•—“Ž˜™Ÿ˜”—–’•™‘’–‘œ’•—’“𔓕„“’”’’™˜™–•š——“©£œ–š“—©‘˜—‘œ–“›‘•“›’Ž‘”–“”›˜Œ›¢’—’’’“”¢‘™–ž’““’”–™’–˜•œ’’“–›¤—””““–œ–ˆ’“—™¢”–›”•ž˜’”•’šœ’ š™–¡ž”“ ™“‘’˜““•”’’–”™“‘’––›–––“”˜““•™“’’—•’‰§’˜—˜˜–œ’Ž‘“’Œ¢” ¡›Œ”Ÿ’—–›–——‡Œ“Š‘˜“’‹—Ÿ›‘’—‘‘—˜§¡›­“ž‡ˆ”¢’‘›š£˜“Ž›’ž™Š™‘—¢œ—¡™™‡‘œœ –›”’‘œŸ’±—‹Ž•™’–’šš˜ž˜•Œ‘’¥˜“‡ŠŒ¢‘˜’¥™‘”‘—‘‘‰¼™¢™‘’¢‘‘š‘–••‘’˜™—ž’‘Œ‘’‘šš”‘’–œœ‘‹•‘¨š“˜˜Ÿœ‘§’‘Ÿ’‹¢œ’’„‘–’›”‘¥š™Ÿ‘” ‘‘‘Ž™•˜–ž’œ–¡–™•’¤‹’“••¥˜˜“œ™‘ ˆ‘™š”—›¢‘•™ŸŽ¡“‘““Œˆ™•‘““š‰”–”˜—‘Ž“•£‘Ž’“‘‘‘‘•£‘œŽ‹“‘”Œ‘𑦓••™•‘—’’™˜¤“•™–›’““—–™‘Œ•Œ˜Ž—’•—–••¥•‘’’–™”‘š’|•—˜“˜–ž“—“•“™Œš’Ÿ‘‘œ‘‘Ž”¦š–‰‘“’’—œ‘•ž˜ŽŸ’›–”’‘–›“•‘‘“˜›¡‘—Œ‹‘’ ‘‘”Ÿ—‹™Ž“’•’š—’”™‘“˜’‘œ–š”–‘ž–˜‘‘Œ‘Œ›Œ‘–“š—‘’•‘’’—‘•‘ª˜’‹“œ”—™š”“— •–Ž™—–’™šž’“˜”ž’’‘‘š–Œ¢’–—’Š“›™‘›•–—›š•‘œ’•”‘’£¤‘›—”’š–Ž Ÿ”›ž“›˜’‰”™Š•ŒŒ’Œ˜ššœ–‘•™Ž“”š‹›‘—œ“–œ™‰‘‘š‘’œ‘‘“‘–šš¡’“’‘‘¡‘‘“—’‹‘™¡‘‘œ‰ž’’‘š•“Ÿ‘’šŽš˜šž‘“”“•—”•‘ ”› ž””¡›šƒ‘š’—˜‘—•Œ™‘’•‘‘•ˆœ™–¤˜’“•™œ•‘›’ƒŠ’—Ÿ–”“££žŸ”‘…™œ‘ —˜‹™¢˜¡’”ˆ’ž™’“”—’”’Ž—…™™š‘–œœ’–’‘––’’—’‘™•—ŸŸ—ž•§˜—’”›“–•‘’‘”–”’ŽŽ‘“‘–Ž’‘˜”—’™“›œ’–‘Љ–œ”›’ ”–‘›ž”’‹•—‹Ž‘’—ˆ’‘’’’—’‘˜’”’š’’š™˜–’’–’˜Š‘˜•’œ¨’’Žœ’—‘’’‘’Ÿ’™‘’˜Œ˜Ž‘˜’”•—‘—˜’’—••’”‘’š’“’–‘Ž˜Ÿ•’’“’’‘ŒŠ˜‘Ž’˜š•–š’˜’‘™‘—•’’“ŠŠ’—››£›““‘›‰œ““››–˜œ”‘˜‰¢‘ŽŒš˜–•Ž—’˜’‘‰‘‘“‘¡¦—””¥’™–‘––£Œ‘–˜Ž‘™š”‘”‘‘›š|’˜š‘˜“’‘“•—•¤•¥Š—’–˜›•’”‘Ÿš˜˜™””Ÿ“’›–°‰‘”‘‘‘Ž¢‘‘šŽ™‘‘”‘Œ‰‘ˆ˜Œ“‘’•™•š‡’’‘Œ‰ž–‘‘•“”’Œ“’š‡‘Œ•“‘™™š˜’’¡Ÿ‘‘“‘†‘“ˆ‘§•‘˜’‘‘’’ —–¡Ž”‘’•’™Ž“š’ŸœŒ’›”‘”£‘““™™œ‘š“‘”’“‰“—’šz‹š™Œ–”•‘™—–— ›”’›ˆ”—‘‘—‘‘’’‹‘”’Ž‘‘’Š‹•—€¦•’‰’’‘¢…§™›”¢š˜†œŠŒ’‘“—š‘‚‘…‰–©“ ‘’މžŽŒ‘‘¦’“”“™˜„‹’‰˜“”–‹‘Ž‘ˆ‘‘†š™”«–‘’‘𙓑’‘˜‘“˜™‡ˆ ‘’‘•ˆŽŠ’Œžš“ž””•ŸŠ„‘”Œ˜‹š€‘‘˜¡’ƒ—‘€Ž¢•‘•—‘‘•Œ•‘‰—’”Ž“ŠˆŽ’ ›—ž””–‘”‘‘~ž™‘…‡Ÿ’‘¡œ˜’¥Ÿ¤Œ§‰”†›‹œ›ž˜Œ›šŠ™Ž‰†œ’’’—•’ˆœ’‘”‘‘’— —’ •™¦®–‘”‘”Ž¢ž‘œ•‘Š¥—Еޒ¥†›ŽƒŸ‘Ž•¡Ÿ‘‘’›““Žš‘𦗡‘ª™¦˜Œ—¡˜˜t™•‘–¡|žˆ•‘’‘’’‘‘𥍕В–‘’‘‘•˜‘ “‘’‘•—¦ˆ˜ž‹‘’‘œŽŸŠ‘’”™–›§‘”– ™‘œ–‘—“›£› ›‘‘œ‘¦˜•š‘’Ÿ‘‘Žž›œ¬‘Š˜Œ‡¡‘”’«’‘’¤ŒŸœ•–ŠŽ‘“„¢‘“˜”“•¢˜œ‘”š‚‘”—‘”““’—›‘›˜š–—¡˜–…ž–’–‘™›’’“’’–™“˜›’ ”—‘œŸ‘—‹‘’™Š“—’Ž– ’’™Ž—‘Š–•“’˜–•‘‘“’˜–žœ¦‘‰˜–𗣕–“••’– –ž‘ƒ—¡“™•‘›¥“’‘Œ’˜†›‘’‘‘“‘‘˜•†š‘—’’’Œ‘’š‘˜“™š“’•~£’“‘’‘š¡’™‘’’—’›“¬‘›žœ‘’“Š—’š’““‘‘’‘‰Ž‘›™—›‘™‘‘–•”£“›‘›––—˜•’„‘œ’–™–•Œ””‘’–‘Ž—˜™—’—ˆ’œ†—Ž”šˆ”˜””’šŽ•—•šœ—Š“”‘’“•‘‹’’“’’œ‘’Ÿ‘ž‘Ÿ‘—’’—›’Œ•–’šš˜’š‹•‹˜š’”› ”’‰–“‰’ˆ‘‘’†‘•’›”•“š’” —Œ‰“›œ’—…–™’Œ’Ž’’“‘‚’Š’’’”“™™’˜——š—’“–™¦”“”’˜–‘’››‹”‘‘—›’—‘’•‘š™–Ž›š–’ ’˜‘Ÿ•‰•’”›’’‘ŠŽŒ™“œ˜™“”’™“”™œ„”‰™”’’‹™’œ” ’‰ ’Ÿ…’–•“•—“›“ˆš“”žœ–‘•›”‘Œ—›“‘’“’–’’™’’‘š—š‘›•–”Ÿ’“”‘œ’˜™–š“Œ’––Ž’Žšª•˜—–“’’˜—›’’š”ž“•’š•§‘–’“›’ ž›—”Œš’¥™—”œ†‹›””“‰™›™‡‘”‘•‘’’”“––’™‘“’’——‘••š••’Ÿ›™“‘–š’’’™œ˜‘’¢Œ›”–™‘–š”Ž—’’™™’˜—’œ‹•—’–’’’š—œ’”’‘•¤”Ž”…“’”—Š—•’“—’”—“œ¢“”’›’ƒšš’–’–š™Ž–••“Œ”‘–•“Ž”’•™’›•˜•Ž‘’‘–———‘˜“”‘’—“’’’’“™™•——™›–™•š˜’——‘”›–•’š‘•”“Ž™‘“”›’™š’—“™–‘“’’–”•““‘“– ””‘“’–”•”š˜‘•™“›“”‘‘’›’”’Ž–’’˜Ž’šŒ’’’—“™”’“•›–•’˜–•”“’’’–”•“’ž›“•”“•˜‹Œ”’›’”•Ÿ‘š’“’“Ÿ’’“‘•’˜’’•š•›“›™’‘”˜’–—“–“––Ž—™”Ž›’™ˆ›’ž˜–“•‘•™’Ž—’•––“”’‘™–‘œ’™”–Ž•’•™–™“˜Œ˜š“’•’’’’‘“Œ›™——–“Ž’•¯’–—Œ“’‘“’˜–”•›Š’’”“““•”•š‹™“š’š”® –žœ’›•’••—’”’’Ž–Œ˜Ž’Ž“Š˜ŠŒ’“’•“’’Ž“••›•‘“’–‘˜’™”’˜ ’–šž’—ž—’’’™š’š’’Œ—–˜™•“‡Ÿ˜š›–”’–‘“Œ—“˜‘’–Ÿ’”“—›’™›”’–™’’˜•š–‘’””’—”‘–’““’š˜›’˜š‡“š–’†’˜—’——•““™—‘˜’”‘•‘™–““—œ—’š••’œ¢—¨•““•’›”““‘“”š•’šŽ˜š››•™™“œ“’˜—‘‘“’—Ÿ–“––“Ž“”“Ž•–’“”˜Šž—’“‹›•ž—™“›ˆ—˜œ•”“š–˜Ÿ”—’™‘“”™˜—™“•“”—““˜ª‹–›››“”“Ž”•—“”˜—™ž“šš˜‹˜˜–”””š›“˜““¦•›•—š•”‘•˜”—“•••—š–—˜˜¤””“”—“‘›““•““ž ™ž“•“•—––•––“•—““œ‘•”””–““…—““š˜ œ’”—’—–¢”Ž‘––“™–—‘¡Š––’Ž”“”“‘¡š’š’’‘‘’”‘މ’˜–Ž•‘˜‘—‹™Žš›’–š’•’“ކ–“‘’—’“‘’‘š™’‘…—‹•”’“ ’‘™‘—¡•’†—™•›“ž˜‘–™‰—”¦‘‘‘’•ª™˜”“’“’˜‘ŒŒ‘’‘‘Ÿ’–™š”˜’’’—‘›‡‘’–“•–••‘‘”–’‘”‘•’š•—˜˜“˜›’Œ’“—’•‰Ÿ‹’Ž‘‘“”’“• ’‘™šŒ‘’”’ˆ‘”˜‘”˜‘Š–‘‹•ž’Ÿ˜“¦“ ˜–ž‹’›©Œ—’–“““™””“‘™Ž™“Œ“———’’“’“’™˜š“—œ“¡›’™—–’˜£—’¦˜Ž’—‰’–“–‘¤“¢š”Šš•“••‡’š“œ’–Ž•—’‘•˜ž’œ–’›–˜˜“’™•Ž’‘“œŽœ‘œœ’”’•š’’œº”Ž –’“’’’–“’“”—“–‘œ£’“““•˜“’“—”¤š¢”‘˜”Ž—’–’ޔ𕔕ž˜› “‡’¢’£”‰•’’’’“œ¢˜ ’–”‹•“–“®˜“’’˜§Œ›—Œ•’—–¡’›˜””‹¢™’’™‘„Ž•™“”“’”•’’•’˜‘‰’œŽ“ž‘’‘“—’’’’•›‰”–†š‘”Ž“Œ‘’“”“‹”’Ž˜’’’˜Žš—ž’Ž””š‘”•”•’”’š”ž›’ŒŽ’—“‘Œ’›’—“Ž“˜›‹–š”’’•‚™“’Ÿ’‘“’’“Ÿ¦–›’‘’’’˜Ž’ž˜™Ž›’’—‘}”ž’’’‘“’’“šŽ––’‰‹“Œ’‘ ’“¢”•‘’’’•ž’¥Ž‘†’Ÿ–’’‘‘šŽ— †’ޙޔ””’‹—’—“–‘•Ž‘ž’’’”—’‘•‘‘’™˜’—Œ”•‘‘”‰¢™’—£‹‰Œ‘•—’’“†“¥“”’‡’’•’’•š”—–“†’‡–’—Ž•‘‘ˆ¡’Š’‰’Ÿ’•–•›Œ’ž•’”›ˆ”Œª”“”’˜’‘—ª”Ÿ’—‹””–œ‰’‘ž›„¤’—“œ ••‘’Œ’’‰’’‰–¥–‘’’’—’“œ’Œ”•’ƒ“” ›‡¡Ž““’‰„šˆ’““ž“’—““•Œš•—Ž’›ˆ“˜‡‹œ‹ „’’†’’ŸŒ›š’𢒒’™‘…—¤’›Œ˜˜„‘‹“‹’“”˜•£’ž•ž™˜’‡¢Ÿ’„‰š†•œ’‘š“‚“’“’š–œ—š’‘••™’‘––Ž”“‘˜”’š–“š‘‘‘‘‘Œ‹“œ‘š”–“‘›‘“¥“—–’‘‘–šŽ’‘•’¢•𔑓ž’˜‘”Œ›–•™—‘”“Ÿ˜›”™‘œŒŽ”Ÿ™’˜‘œ’›˜‘“—”Œ“–‘‘”‘Ñ—‘Ž”‘‘™£’”‘¢˜‘‘‘ ‘”‘—Š‘•˜“™›‘›˜‘‘˜›–™‘’™ˆ—›˜•™˜œ“‘–Ž¡…™˜™’˜”˜‘™—‘š•—‘‘‘‘”’•””žƒ’™Ž™‘—–˜’‘›”¤”¢“‘š•‘ŒŽ–‘›˜œ›‘••Ÿ“œ•‘””’›‘›•”Ž‘˜”™‘œ’›–—’–”˜ –œ““Š—š““•“’˜•›—˜ž•—Ÿ’’—’–™Ž”“–˜’’ž‘¦•‡“•¡“˜˜š–’š–Ÿš“˜’•¡™œ”š“™™“•›—™’ž˜—–’œŠ“”“’‘ž¥‹’—’“’’“ ˜”—‘“’“–’’’–•ŽŸ‘“”–•…•“““’™š™–’“”—™¢“’˜—›”•“’™›Ÿ‰”–Ÿ’—“™™’‹œ¥’’”™’’“’’‘›‰“’•“š—™“˜š’Ÿ”žœŸ”Ž—’ˆš’—•™š“”™‹’‘’Š–—•™Œ˜•—˜’œœ’–›‘›—™’–’”•™“•’–™““’’™‹–˜›“™Ÿ“““’›™Š˜“Œ˜’••’™•’ž——•“—˜Ž˜›“•—“”’‘˜¦œ˜Ž›“œ–“•–››”’‡“œ‘‘–’¥”˜““’•˜ˆ”¡’’”’’–’’–‹Ÿ–•“”’“’’’‘–’—™›˜—’—˜——™““’–’•”’“ž‹Ž™—“’™—™™”’’”’’Ž“•¡œ—”’œ“š“’–˜’’˜˜’’š‘’”•”Ž“”’˜˜—“š“’ššŒ™˜’“œ’”Œ•’˜•—™™—‘œ”‘“ˆ’Œ’ž”šŒ“‘™”Ÿ¨™––›‹¦•›“ŒŒ’’§’ž‘‘•’‘‘šŠ¡•’š›œ–‘ž™••™Ÿ‘˜™–“‘ƒ•¢Œ –£‘ž˜•–š’‘”–…‘—¤Ÿš}–ˆ’¤™–¦”Œ™š‘¸™‚™•’›€’§•›“’Œ’yš‘›‘–‘‘’©“Ž•‘‘‘“’˜¢‘š”›’”˜‹ …¢’’‘‘’¨•“‘’—Œš—”ž“‘ž“„Ž”¤‘—”•™‘Ž•ŽŒ•—‘›‘ž’‘Œu—‘‘‘‘–™•—Ÿ‹“—˜ˆ —œ’­”’—–“‰š›Œ™‘¦“•‘–š‰œœ—–Š’’—ž–œ“¡‹¡„”œ˜ž£––˜™”——ž––—’›•™˜’“““’™‘•–œš“–”‹”’”†‘”“™“˜‡–‹’›Ž•Œš™‘“˜Ÿ™Š•—“–˜š‘˜’šžŸ“•˜–Š’†“•˜‰‘š’‘“›‘—Ž’¤—‘–‘™ž–•ž’’–’“’’~›™˜ŒŽ’”’’’Œ’–‘𔓗–š•›š’“’”£”™’“•’„™˜’“˜Ÿ“‘“š’‘•ŠŠœ’‹’Ž’œ’œ“–’’œ™’™—’’ •”—’‘–ž››–“Š”’©šŸ—‰’Ž•™—’”—“’˜Ž–‰Œ“•¢‹‘–”žˆ•˜’Š”‡˜œ’’¡™’™š”“˜’šš‹¦˜—’‹”™˜’’‘‘˜–˜Š¢‰Š•–Œ‘œ‘œ““˜’˜Œ’–š•’’š‘˜•–‘”’™‰•“–“•’˜›‘’‰›Œ”Ž–ˆ–’‘’‘œ’žš–’Žš™Ž–––Ÿ’—’•›–x’’™’‘–’‘œ¦—“’’’Œ‘˜‘•‘𔓑›™‰˜”’™’“‘šŠ‹˜’’ž‘—™‘—‘’’–‘š•’’™‹ž–———ž˜’•’•‘œ–“–’“”’‘š™™ ˜”’’ž”™˜Š˜’‘ˆ …ŠŸš˜š’ž•’•œ–›“š“Ž”“˜”Š—‘‘•˜Ž™”Š–“™•“œ––™•š˜›’š‘“š“•’““–’“”•“˜”—–™—‰˜•”““ˆ’–‘š™š“’š‘“—””œ•˜“™—”––“˜¨›““’•š•š’•™“Š‘”™”•˜““ª–”–“”•ž–™™’•š’‘ š“•“’’““ŽœŠ•––”“““““š“•”™˜‘“˜™ˆ“˜–“”“”““•““”œ’›—’–”—˜—““‹˜—•™’…”“˜“•”“˜•“–š““—œš”˜™“’—’˜•–”“–’𙓕““’•““Ž‘š“˜“––˜˜“–Ž’‘Ž“”˜‰•ž•–’–‹˜—𙔉”‘““Ž’’’’’’š“‘”ž›—Œ•’‘’†‘Š”’˜¡••’’›˜’’’Ž˜Ž—“‹“™šŒ’’˜¨Œ•Žš’’Š’Ž˜’¢’’—’‘Ž‘“š“’“’œžˆ–’’Š’‘•’’™‚ ™Ž”—’‘’›’Ž’š•”›’Š““¥˜’’’˜‘’Œ’’’‡”œŽ‘’Ž••——’’Œ’Œ“¦›–š›’›’—˜’œ’”“’œ—’’—•’Ž““““•‹—š‘—’’š—ž‘œ”‡–Ž’’Ž•’‘”“•¡”Ÿ•’›‹y–™–•“–›™œ™‘—›—”¡›‰˜š…•™’›¬’’›’’›——¢¥‹ ¤™–‘¤™’š…——‰˜’—˜š’˜˜Š™–~’–Ÿ¢•Žš’“¤–—’‘–˜‘‘˜”“’”›“ž¡”’œ—œ™‘‘Œ©œ™”‘‘•£„–¯’š’‘š’’™†–Ÿ–‘•’’’™’š›’•–›‘’˜–™¥›’’’šŽš”‘’š˜†˜–“’•‰’›šœ›’‘’”’˜š–ž”š’–’—’’—›˜’•ž’’˜œ“”±˜’—•“™‘œ’“’’ ˜§”Ÿ˜”Œ”’†•’•™£™ˆ•™›˜“”––’“–•””™“ž—Ž…’–”‘•”“‘–¦’”“”’““““’••–‘““–“‘’–‘“••’’’”–š“’’Œ““›’š™”•”““””•‘’’Šš“‘““Ž™“”’–“”˜’–“›“€Ž›‰’‹”–…–’”“–œž’”’“““•’“““‡Œ––’“““‘“•’’–˜”‘“”’›€•–““’“•Ž’“‘š‘’’“‘Ž”œ’•““‘’–’‘“‘–•”““““”“™““•Ÿ““—•˜”“•“•›’•˜‘‘“’“””š‘’––‘’““˜““–’–’¢•’”‘˜“’›’’›˜‘›Œ•—’—‹Ÿ‹‘”ˆž’•“—’‘”‘–˜’ª–‡•Ž˜Ž•——‘šŠŒ“‹˜ž‘–ž‰‘ž¡Œ’ŒŒ”’’‹ž“Ÿ›‘•š ‘‘©šŸ™’’’”¤›˜”™•‘Œ™›œž’• ˆž’¢š’—‘‘’“‘‘–‘‘—‘’‘Œ’“‘•š—–Ÿ¡•t”Ÿ•’’‘‘—Ž–’– “š“•Ž˜•™Š“‘‘š’‘–‰™’ ˆœ‘‘ž”‘š‘ž‘¢¤‘‘›­”‘“”‘“š ›•˜’”›’‘‘‘¨œ“ ¥Ÿ‘œ’˜‘Ÿ€’–”™™¤—••”–™š•””•‘”Œ”“–•Ž–•™š–—”œ—“•””–””•Ÿ”“ž•”Œ–™•”𙕔›“”“’™””’ž˜’’™•” ™“‘”“•– •”–”™”Ÿ––“”Žš”•”‘•”——™”š——–”•–•“”›—¢“”‘”’–””•š••œ””“”›”’”‘—•–”•”Ÿ‘—Ž’””””–Ÿ”””’’•œ˜”œ“–””””˜—œ‹––’ž’–‘”–”“š”””ª™”•‘””’”’‘–™›”˜’—‘“••”•””Ÿ’ž“’’˜•’”’š™””“”•“’“˜’’–£‘Ÿ‘“™”“Œ“““™’•“’’–––ž˜Ž›–›“’Ž›““’’’“—Š›‘”™“Ž“•’œŠ“Ÿ”•’““Ÿ‘’¢——”¡’’‘““š–”””“œŽ™’§¢©¦š“––‘˜•’ˆ ’Ž “¬’ª’šª†ž“’”–—š’’œ’’’’“ˆ •—“’“““’’š’›žž’žš‘–““’‘›•˜’“𣕗œ˜’“”˜—˜“’‘£•’¢‘ŽƒŽ˜ž’’“˜–’˜˜’’Ž—’’ž¡’™Ž|–’Œ’›–•––“šŒ“›˜Ž™Š–„¢›’¢™’œ’›˜‘š˜—’•ˆ•Ž–”•—Œ—š““š’˜Œ”–•‘’•™˜Ž“Œ£’™“““’“——˜ ’™–˜‘’š–“˜“‘™’–’“—”•““’Ššœ““™“˜”•‘“—“ž˜˜‰‘’”“–›š›•˜’“ˆžš™›“Ž”’œ–““™ˆ¢“—’‘›““™›“”““““’œ‘’‘••–”“•Œ­Ž–•“““’—•“’“ž‘•––›’“˜•”ŽŽ”“Ž˜“•œ˜”š“’“™™“ “„‘“““—šŸ˜•š“–”™‘•“¡”“™˜“‹‘’•Œ›“™Œ•“”˜—•”–Ÿ“›‘‹˜¦™‘’™‘Š—ž‘œ“„•“–“š˜œ”˜’—™’’’’’™™šš’‘˜•˜–‘˜Ž–••‘›’“–•’‘—¦˜™””™“’’™“’˜ž”𑥤›¡‘¡Ž’Ÿ‘’‘•“—•’Ž–¡¡‘𑓍œ›“•›¡‡‡‘–‘”™‘’Ž˜‘™˜—’‘’—’ —‘ š¢’ž’œ•”“œ““’Š‹†—‘’ šž“˜“¡‘‘–‘’’£—Ž’“Ÿ¢–¡’–’Ž”’¨–™š’Ž›‘’ž¡•Ÿ•˜—“–£ž™—”’ž””ޣޓ›Ž–•™Ÿ‘ƒ”Ÿ’’–—›’—’¤’–šž•›š’›”—œ“š’’“š¡›‘˜——š™’š“”¤•““‘““—Š‘¤Œ›“””‹”’“‡•–™œ—š“—–’“•ŸŸ“ššš”˜˜•˜ ž”•˜–‰“’¡—’–•‘““›š•œ˜‘™•’‘“’™”š•¥”™”¢˜—”ƒ’¢’˜˜’’—„¤‘š˜““’•“› ’‹’•˜¢””˜Œ†œ¢œ”““’ ˜š““—““˜–”™š”–“› ’’—œŒ¬”“œ“š“š˜““šŒ“–•“’žŽ“”“Š’˜—• ˜Ÿ“‰–•‹›™™’–œ•’¤š’’œˆš–œ˜’›•˜•—‘ ”Ÿ•œ’—–¨˜‘š’“¢™’“Ž’’Ž—•“’›’’•“›¤•™‘’“™”¥›’¢›–›Ÿ—’”™’“š—š‘‘‹“”Ÿ•”›’’Еޒ’œ•˜›“™”“£”›šœ’˜˜’±šŽš‘œ•¡Ž“Ž’’š¡”“t’—’•–’’”œ‘˜š”‘’’Ž’”•’•™“£’–š ©ˆ¦•“’’™›–’’–™—–˜š“—’•’”™’–Ÿš›—‘”“›’‹’Ÿš’‘—š’”˜’’˜‘–••‘‘Œ”›•–“’’™”›Œ©“ž —’›¡—’™”—’– ‘”’Ÿ—{•Ÿ•’™’–›’›““š“™”—••’š”‘‚š“Ž‹–š’’–’’“𓦓”•š™Ž“£–’š‹–’“˜’•žž”’œ•…’•””—’“™•”‘œ•šŠ›”–’œ›‘–”–’—…“—¤•–’’£œ’—Ž‘ŸŒŸ’’—›—ƒš’•’‘’’”ŽŠ•‘Ž™’’’˜’“—’‘‘“—‘’™–˜›•›’’“’—˜”›’’•”˜“˜“˜–•—›˜“’‘™•’™˜’–’’‘’˜”’ªŸ—’˜›’’œ›š—ƒ’™˜™–˜•’Ÿ”’–”˜Ž£‘›–ž’”£‡’›˜Ÿ—œš’’•““’˜–“”™‰››’˜£š›š•––—•šœš¨ž—“™”¡Ÿ’““’’›””†¢’˜¡“”–”’•’™—’˜’™•“•¡••——™’š˜˜›““••”’™’ˆ“‘˜™Ž›’—|’’Ÿ—š’˜“—‘•—™Ž™—š’“›–©Ÿ’’“˜’’š”šž›’“’–’˜•’’›‘“™’’–•„–š’’‘—••š’’˜œ Ž”–”‘–•–”—’›‘—’•Ж𓣓𓓔’Œ—–’’—›’’–”›¤œ™“‘––’‘™’‘ˆ“””Ÿ–—’•’•ŒŽ’š‘œ“““œ”••™–™“•™–—–’™”–”™˜™–›•™š˜–”–—’””™•—””•””˜”—–”™•“œ—•”˜”•’—–𛕗”š™™””—“—–™˜˜“”•š™—•›”—•—–•”™––™•’”›”˜”™™””™–”—––š”˜—’˜™‘—”˜‘•—“œ”™””™””˜—œ—™“•”–”””š˜”š•˜šš”–”–”” ˜”””šš•™””–––˜•—”˜››–˜™”˜––—š˜™’“›š”˜”ž–”™˜’˜”——””“”•–•–’•—“›•›œ˜”•”•—–•›’•“”–”›––”š˜••”œš”™’“‹ž’–Œ‘’–ˆ¹Š†“Œ‘”–••£›“Œœ“•’—†‹“’“’–†Ž‚‘šˆ¡š’„’’’𑑍—Œ’›¨˜˜’ˆ¤–¡•²“˜†Ž˜›’•““—…’“’𛉒Ÿ“ž§Ž“‘‡Ÿ—’ ƒ“’¥˜”Œ‘›“™Œ–Ÿ~’¥’˜–’’•¤’‘™«’•’“š›’Š˜†–Ÿ““–Œ‡‘§”““’’œ™–’’Ž“¦š””‡ˆ•„ Ÿ’Ž—ŸŒ‘œ…«¢“”’’’‘ž”’š’’ŠŒ—…Œ…Ž’„ƒ•˜—š—’¡””—‘ˆ‡¨ŒŒš‰Ž’°–’–•Ÿ’®•–’•• —“•‘˜–“—‘™’—”˜¢™“”—‘•’–Ž’™˜“’š‘’‘™ž¦––˜˜“”•’’’’””—•’™‘“’’Ž•’“•˜Œ“’’•“•™’˜Ž’‘•’ “”––•‹’—Œ™™’“•™’–’œœ”˜˜“˜’––—“}˜’’’’–’’˜‰Ž—•“•’’’–’—˜‘›“š“œ’”–•™“—’“’•¤—–‘’Ž”ž›“žš‘“‘š’˜•‘›”“š›Œ—’™’”˜’•™—’“‘’‘’–“˜ œ“’•‘“—Ÿ‘“ˆ’›“šŽš’••’’™š“’˜–˜Ž˜›Ÿ ‘𔉒˜˜ž“™’“˜–‘™™••–”˜¢’š‘–Š‘Ž’‘š‘’•œˆ—‘Ž–‚˜–˜’˜—œ˜Žš ‘Ž”’’ª˜¬‘‹“•œ’™™ž“”—“‘‘ˆ™›—™›–˜’›“•˜’—Ÿ“‘›™˜’šŸœŸ•—Œ“š‘‘œ‘”‘’Œ‘‘‹ž‰•”Ž‘’‘˜’Ž‘¡”¢™‡’œ›–…¤’•’’’”—™’‘š§ ™—“𔬗Œ‘“•™˜—˜’ –“’–‘’•‘”’œ›‘‘¥’‘™›— •‘‘£ ––•’“’—’•¤Ÿœ–›œ  ›‘—‘•“–‘Ÿ•š’™’“–“‘••’œ–’‘——–—•–’˜—’‘““’•––’’–’‘•”˜˜š—“•“•“‘’¥’—™—š˜’–›“’’œ’–“œ•“’–‘—“”™–™—•˜’’˜”¦•”“”ž’ŒŽœ“ž™œ“’£Ÿ•‘žŒ—›š”’–“—ž§‘“‘“Œ’’™˜y–•‘”’”’“‘–“‘™”•˜˜’“’œ™˜˜’’‘š™—‘’““’–•œ’”–š›š”˜’’›™ž¢š™‘‘‘’™–’¡˜˜—’™—’’’”–”˜ˆ›’•”–’—˜—’ž˜’”™˜œ˜”œ‘—’–œ’–˜›Ÿ››••’”™–”­”•’“‹–“‘˜¢Ÿ™—–“‹˜˜ “’““•Ÿ©”“““’˜”ª ˜®˜”“¦’‘ˆ“—›“Ÿˆ “’‰š’•…”“•“”•¦’‰ •­ž™¢’¬¯™‘Œ•r“‰–ž˜‡ž’œ‘”‘’‘•†•”“—••–™’–’•“’’¡‰Š–”Š’”“–’•Œ’˜˜“Ÿ£“—”“Ž–Š™““’” •¦’““ˆ‘ —˜”–Ÿ’™Ž’ˆ””«š—’Ÿ’’’œ“’›’™’Ž’’¤¢’–Ÿ––“š•—¤š¢“ª’’™–”—˜ˆ†‡˜–’{Œ›’­œ§Š„ˆ’˜“‘•“‹“˜’–””š˜˜‘—Ÿ•Ÿ”‘—’“˜™œ•˜’“’›œ’’’’’˜—–˜š™š“‘›‘’š–’”–š’“•–’—™—Ž››š‘’’—™™—‘™š•‘›‘‹šš‘’Ÿ”’‘–—–”–’œ‘—Œ“‘“‘’˜š’—œ”“‘ƒ‘˜‘’’”“ –›—–’’’—’š˜‘”œ™’¦’—˜–™™ˆ˜“’’•‘’œ‘’™Ÿ˜‘—¡’œ””˜‘’•–—˜’š˜•–•’“’•‘“–…—’•˜’’™š”˜•’’›˜–‘”’¡’••’’–”š˜››’w’’•—‘˜–’——•“–•‘“••“’—”¡”–”–˜™”˜•••š“˜’‘˜“•”””’—””•““––“™“˜“”›š”–š“˜•–’™™—”–š˜““™šš”‘‘š”—’–™Ÿ˜“›“˜”–“—–‘”—‘’˜”š‘ž—“–“—˜’’“˜™˜–’“™™“˜…›“–““˜““–Ÿ—“˜™”“”—“™š“•˜••š“–—›™“˜–””“šž•™“”–™ ˜——“–™–—–—•“šš”™š”›”–—”“””˜˜“–˜“™“˜–““šœ“”––’”˜Ž•š—œ—”Œ““’”’“›•Ÿ˜“‘˜š“™™–™•™—’ššŒ‚Ž•”’››–•”‘•–”““˜›—’•‘•‘•—‘”‘—”– ””—¥•‘Š—–‘—‘’–Ž‘‘–’°’žš‘š•–“““”Ž”œ—”‘‹“˜“‹”¢•Ž–‘’——‘›‘–”‹™—Œ˜™–¡’˜’–‘–‘£‘‘—Œ¯‘“•‘‘¥‘•‘™–’Ž˜’Ž¡—“”Ž‘’‘’“”‘›‘””‘¤—“–“”–‘Ÿ–‘‘šžš–Ÿ‘“‘“‘‘›”•Ÿ‘ž›‘–‹’——››‘Ÿ’”š””‘˜’’’•” ‘““¤“‘Š–—‘‹‘’™–‡“œ“†“–šž”’–•Œ—’‘•’”•“–”‘”‘˜•Š–•“–‰›“““”“’”‘šš“–˜”““’š˜“•–“Ž”’“”’•™““”›“—•–˜‡–™—–ž“‘“œœ”§•““œŒ™˜’”“š‘’‘”ž—•‹–”Œ‘˜—Ÿ’“““™““”¡š—›“““Ž“˜“••”–˜“Ž‘‘““—”““”Œ––”“— ——•”““•”’“¢™•”–›–•“”“”˜’•“¬’“””““••“¤”“”’‘“Ÿ‘•“›“”•™•˜™’‹†”“…Ÿ“‘“™“š‹™™’—™–”–’˜’——˜‘œ•›Œ‘•—’–“™›’˜Ž’’’’‘—’•–•’”•—˜’–‘“™•’™˜–š’œ—“’™‘’•’‘§’–’”’™˜“—•’˜–‘•’¦‰Ž’•’™š—“›’–œŸ’—–œ™–™—“›—žŒ‘›‘’Ž‘’•› •—”’’’”‘™—‘™––š—’–••š—˜’’‘“ ’“‘’Ÿ—”•’“—ž—–”’’—“”¢“™˜›“’•’𒬓Ÿ•’šš‘‘’‘“—“”’”•ž’’™™’š’”•——™•––‘‘ –‘™™™–“›”“’›•¢œ”‰’ŸšœŽŽ’™Œ“š˜“‘š’”ŽŠ’— ”“’™’“‘Œ•’‘‘”’š’™Œ–“•’’“›˜’”Œ••¨““Š“ –—Œ–“Œ›˜ŽŠ‘”–”‘ž˜’—›—’’’‰›’’––Œ—”’’£ˆŠŸ‘–’“™’’‘™ ’™’’’˜“˜’’–ˆ™’“–™•†‹¦š“““‘•–‹’’˜“’“–—•—Ž‘‘’“–’›œŽ’š’›“•’™¤’“’†Œ’’“’’Œ—•“Ž›“’“‹‘’ž““ £ˆšŽ’‰‰—’“”’““’“‘—Ÿ™›““–“”“™’“•™–””•–“—“““—˜”••‘Ž“”Ÿ—““““”˜˜˜•š˜‘”•’•œ—““Ž“‘—˜™‘“œ•˜˜“Š—“”•“œ”•Žž“‘›’•”™–’“¤””‘…–‡”Œ—˜’“•›“œ˜”“”™—••–™”‘••–Œ““•““›““ –™’•“““““““—–“—––Ž““Ž˜•”’“““—›”‘““•‰“™’—“–’•ŽŽ“™“˜›˜–”œ–•”–““•“›—‹–“•–““—˜”–˜Ÿž“Œ˜‰——”˜”““’‘”–—–‹’“™—“™›˜Œ˜˜•”’”–¥Žš„‘›‘†‹£’‘—˜µŠ‹–‡•ŠšŽ’Ž„’’’‘’‘—›Š›˜•œ•’”–”“Œ“¡’‰’Œ’¢’•—’’ƒ’‘ŽŽ—Œ—‘¥’¤–ˆ”“˜“‘ˆ—•œŠ•›’¹’£•Ž˜‘}’™“Ž›‰—¡‹‘š’“‹’’‹¡›–™‘’’—‘™Ž’Ž›œ‘’›¡˜™“’‘”™“‰’’™¨š„’’–›’—Š’‘š™š™‰¯–‹Ž£‘‰’ˆ–‘¨Ž˜”’•ž’’˜—•žœ’™’’Œš‘–Œ’­’ŽŒ’›™ˆš™’š‹‘†Œ†vŠ”Œ¡”›••‘™•”–••’•™”—•˜”˜”™”‘—“’•˜•””’•š™””’””—™”˜“˜’••’••’”˜”—”–—šš”˜˜”’”•–—••–””˜–—””𔓔—“””™—¤•“—““”“˜—˜’”˜—”™•’•”––›”•–””—™˜‘—”•””–””—› —”‘•”””–”›”—”™”“”–˜•“–’”””—™—–””–˜’–“—””›•—–”š”’—“””“›–“™“”“”š””™˜š–”š™””™•–—š”’œ‘˜š“–”™”—˜“˜˜•™—–™””“–”–““‘’“••‘“¢ ™•“–”Ÿ‘Œ šš”•–“–œ­š˜‘–˜’’““‘‘’‘‘““‘‘›šœ˜›•¡¨‘Ÿ¤š”—–¦Š‘”• ’‘‘– ‹—––’ž‘•™”–Žœ–Œ‘Ž ˆ Ÿ’—’‘›Œ“™˜ˆ—‘–§†ž’©¤›¤–™ž‘•””¡‘‘˜‘‘–˜†”—›•‘’‘”’𙑖”–œ¡’›’¤”ˆ–•’’‘œš””‘’Š£—™‘›–—‹–𛑖¢—žœ“™•™£’‘’™˜’’˜™‘‘‘‘——ª›šœ’’•›—Ž™•’‘—ŸŽš™š˜—•‘£©œ‘•š›œ’•˜’‘“•““’•‘”Ž•—Œ“’“˜’š“š’™‘˜”•˜Š“”‹žŒ““’“’œ––˜Ž˜‘™š“‘–’›—“—Œ”š““•”—“˜˜š“›–•‘—›—˜•’‘’—Œ“‘šŒš•™“Ž•”“œ–“––•‘’˜¦™™˜’›•ŽŽœ’“’“‘“’‘—•—”˜“’’“”’˜’’’––––’œ˜—’Ž ”““’˜›““™“–™•“”‘‘’——“–‘•˜––—™•’’“›‘’• •“—’’“˜˜‹™›“’–š‘–™“‘‘’Žž˜šœšŸ—š“ ”Ÿ’—‘’—š”›’™˜“¡š’•˜•š•••”™˜”“Ž˜•™”˜›•“–“–™“’““’›š— œ•œ˜–”ž’”—‘›‘”’“›–’••„–¡—•‡’‘ž•••˜‘– ž’š–’™“›’Ž–’žš”•’˜‘—Œ“’“Š“‘’—• §’’Ž’’›’’™–•˜‘‘˜“’’”’•‰’œ‘—’–—˜š—š““’’—”——‘’˜”ˆ–‘š“’–š“——‘’‘”ˆ”˜›¢—•Ž’’’”•’“Œ’™–’’““šœ–•’“˜›‘•™—“˜’˜œ›”•”•™–’š˜‘’’˜œ—‘˜––’™–‡“œ™“•–˜’š™’“–™™—’™™’™›“”œ–’“’’’’šœ—‹š›šš”•”™’™™—š‘‘™’—’˜’’“›‹“–•“˜’—˜—›‘”‘–™”’Œ˜„•”“‘“’—Ž‘–’ž”’‘œ‹›”œ“Ÿ™’”ŸŒ“—œ’“’¤’’™—­™”™”’“’ž’”œ’•”–•‘’—˜—™œš““’’–š•’’¡’—–’’›—–˜—œ’™—™š—¡™˜›’’’–˜’•’‘’’—’’™Š”›™Ÿ“’’’—›ž”—’…–“™˜••Œ›™ž—›’””’’”’’”š“–œ‘’–—•’”˜Ž›Š•“—–‘šššš˜–‘‘““’™Ÿš’’‘‘’’—•••‹Ž˜™˜™•’’”—‘“—’“”’’›¬‘’•˜Ÿ’œ”˜›•—“’𛑒”—›ˆ—‘•‘‘š‘‘•–“‘‘{”š•’‘‘—˜ž˜¢”““—›‘œ‘”‘‘’•—•ž •’’’’’¦œ‘Ž’——ž‘•”‹–Ž›’’’˜Œ“‘’‘œ¥Ž›”“”“›™—–‘ž—žž•„”“›’œ’‘“‘’›•–’š’‘•“–‹–šŒ“Œ“Ž‘˜“’’…‘‘“”†’–˜’”‘ˆš”‘”“•’’™•¥’¢–µ—¢™“£œ¡Ž˜¢’žŸ˜˜––˜“›—Ÿ™–¥œ’“–––““”’‘™–™¡Ž•ž–™”—’ž’—“–›•¢’›—™‘’¡œ…”Ÿ•‘†“‡›˜”™‘—žŸŸš’ œ˜–š›˜“•—•••˜¤›’†•—˜‘—‘œœ’¥”“ŸŸ”™¡“‘œ’”—’’žw¬˜›“›’“’˜’’Ÿ‘‘•š„’œš§xžš¡“’’š•’™’’”¡‘¢˜’“£–˜ ™¡™’’–—›’•¡™¬’“šœ‘‘˜¬Œ’§’‘›” “ “’˜ž˜šš’𓤠¢”–™˜£ž›’œŽ‘’›œš—Š¡Ÿ—ž’§œ”š““‹“”•˜“—”’–’”˜Œš„˜—¢š›’“–‹•’’‘’—¨ £¢ž“†š’’—Š’–™’›’˜•‘Ž’£•ƒ’–››“ ›–“š’—Œ–››’˜’¢ž ’y—™™™•’Œ”¨Œ“”¡Ž“™¡“”•”—Ȥ’‘‘“’’’–’•—”’“’”’–Œ’”•˜’–—‡™›šŽ““’š •‘’™ž’Œž“˜–œŒ’˜œˆš™’™œ˜’•’™Œ’—™’”’˜£’‘–“— Œ† ”Šš›‘•‘—’„Œ’“–¦œ“Ÿ”ž˜’’–’›œ ŸŸŠ”›’˜••–”–“šŒ’‘•–ƒ˜•Š”’’™‘”¥’’””‘›’’•’’‘˜ž–œš–˜›’Ÿ˜’”—Ž“˜Ž‘‹’‹ž•’™•›“˜“‹“••ŒŒ—•—›”˜•’’™–’ŸŽ“’—–••›Š’Š“˜””“–…œ•’ˆ‘š˜ƒ›‘‘’––‘’•‡y•Ž‘’’’’”’‘™’•š‘™–‘ŸŽ‡œ“““—”˜—‘’“Šš”Ÿ”•––‹Š’•–“œ”—’’”’’•’–”—’ŒŽ’‘”˜Žœ“™’”•Ž‘”‘’™–’›”–‘Œ•™™˜‘‡’•‘“•–—ž‡‘š˜“•¢‘’•’•–ˆ‘˜Š–”–•‘”™˜š•”–’“”š‘““Ž“““™Žƒ—‘™›•”•“””š–Ÿ‹™Œ“ˆ™–“–™—•™—“˜”•˜Œ™Œ˜‹“™”Œ¡Œ‘š“š•”•–”Žˆ“𛕒˜ …Š”•”Œ“””¤—’Ÿ’—˜’“‘«„–”˜‹’•““œ”’Š”˜”“˜“’š˜ž˜“““˜˜˜’“˜ŒŸ—””˜–“Ž”’†™™—œš’““’“›”’‘‹–™“ŠŒ’“˜•𗖙ޒ•—˜Š”“‘š“˜—‘’–‘Œ•’–‹¦“Œ‘’“”•”¡’“ˆ†–™‘”•™›’””–”‘—‘’Œ˜ŒŒ—™ŽŽ’‘“‘“’›’’–—”—‰—ˆ˜–š‘’›£˜˜‘Ž•’›™Ž’’Œ‘•˜¡˜˜”“—™™šœ••‹”˜“Š’‰—˜œŸŽ‘Ž’˜š”””‹’’š“Ž˜™•’œ“–“š’•’’’’¢™‘‘“Œ’‘’›’—˜’œ”¡–’“–’¡Ž¡•““’’ –‹’’›‘š‹‰’‘˜‰‰›’—”–“‹ ž“”Š’”’›“’˜Œ›’’™“’’‹‹–‰”•Ž’›“’–’’”—’”™•–¡‘™’ž’Œˆ‰œ’“‘’’œŽ‘’‘“…•Œ’™•—ƒ—Œ••˜¡‘“|™”’”‘’‘•‘’˜˜—•“—’’”Ÿ’™•‘˜™‰”•’„“’ž’ˆ‹‘’’”–––‹‹œ“‘Ž˜’–“– “š‰“‘—˜“Ž’v¤––‘™‹—›—”ˆ‚’›š’Ž’“’‘‹Ÿ‹˜™‘“’“ž’›Œ›˜•’™˜––—•“’’’™™“‰‘’Ÿ™™”—––’œ—•˜’“š•“‘Œ›’’’’’’–ž’’˜–“˜•”‘œ›–—•’‹””œ–›Œ—šŠ—•’Ž““’‡Ž‘—ž‘•””“˜›š“”˜˜˜˜””“˜”£”•”’˜—Š–”‹•“”‘š’™””•””•–šœ—“™“Š“–‘”˜ƒ——–™š˜”™–Œ’”•œ”—”“”––ššš˜—š‹—™”¢—‹—‰˜’”Œ”—™“•–—”Ÿ’—’”“–ƒ”–•–’’”˜—”œ”“•””™–˜”™•–”•”–”•‘”•˜’’”‘˜””’“”””˜–˜””›••Ž“‹”•–›˜›”—‘——™’—˜™’”‘”˜•”•••“”¡—””‘‰””™žš”—“™”—™”›“™Ž—•Ÿšœ›™™”–”š˜—“”™–™’’Š›”’šž•—’•“Ÿ‘˜›˜š˜”§‰“¥”˜“’––“’Ž’’”‘”—’šŽ’–¨••’’Œ¥ž˜——œ”’˜—“’•‘³“Š›˜¢’–’˜ “œ“Š‘—““› ™–‹’—“Ÿ—™•š–˜’«‘•“™Ž¤™™‹š’“‰Ÿ’—›’Ÿ’˜‹’’”›Ž“ž—”’•’’’›”’‘™–¨’”’›”£““’™£••’“““¥–““˜˜›”——›’˜‘›£“”™˜”–’—’š“’‘š¦œ’™”’’‹ŽŸŠ“›“”’“”–˜—“‡’‘—ž”••”’œŸ•’š“š‘“˜Œ’››‰“œ‘‘”“–—“’”¢’‘Œ˜Œˆ›“”Œ•™’––‘’’’—‘‘Ÿ›‡“œ•‰ž‘—‘–Š’’’–’™“––’ŽŒ‘•‘’šŽŒ“Ÿ”Ž‘¢–†˜–”Ž’˜Œ‘“™’”š’”’£”‘••‹œ’Œ—’–—‘œ‘Œ‘Ž›‘‘™ˆ™ ˜’’’—‘—š‘˜•‘‘’“˜®‘—’’‘‘”‘‘‘’Œ–›—‘›’ŒŽ•”™’𛕓‘’ šŒ••‘”’“‘ŸŒ™’’‘‘‹‘––”’š”›“”“Ž’‡Ž’“—•š––•’‘Š˜‘“”‘“˜•“–—ª•“–•”’‘Œ““”’’Ž–”•’”–š“’†”‹“”•–—““““‘•”‘š‘•›–”••“—˜’’”“’“’š”“Ž˜…“•”Œ““–“‘•”˜›™–›“˜›š‘”•‘””’“’‘–”–“’’”“’——™™–““—•›š“™“”–“”–’˜˜’˜“•“Ž“—•“™•–•Ž“˜—”‘ˆ•“”“˜•˜““”Ž•œ“”“‘“’‘˜–’“–•”–‘•š“–“““’–’“𔓓˜™”———“”‘™’———•“˜‰“”˜‘‘”“”‘•”“Œ–“–”’”’••’—“”ž›Š™“˜•ž “’”˜˜”š¡š—– ›•¥¨–“™š–œ““–”“™–‰‹–ˆ–š–˜™—“š™•˜–™ –“˜—”‘“”—‘—‘™’¦“£Ÿ•œ–™’™Š›“˜”£š–™™‘š˜“›ŠŽ–“—›š“ ”’˜“œ›••š›”–¡’›’“¢“”‘““™˜Ž’–¡œ“““‘“ž˜“•’˜‘“—“•”•™””“–•’š“““•—žŽ’”Žš—”š—”“Ž™›Ž•™ˆ•—™“—“—”“’˜‹“——““™–›§—¡‘““™“‘”™”””“Ÿšœ–š™™™”˜““Œ˜“œ˜•–‘ž••Œ“”‘Š–’’–”–•ž’˜ šŸ–“š“–‘š˜‘˜”˜“’–˜‘“““’’—”•””–˜š–ž’—’ •””™”™’œ•š’’—˜’Œ——”’’—™‘›–••”˜’’˜¢‘•‘’“‹–š–˜“››”‘““•’””’¡›—–’•’’Ÿ’“™‹–”’š’“’“’“ ’‘–šš•’——“’—”•’’’—˜™“’“œœŸ˜”“˜—‘šš˜œ’”•”—”Ž–—œ£’‘“—“’‹™–—’”—’’›“Ÿ”–’”™—ž—˜•““’—š˜”‘˜”š”ž’’Ž‘’™š•”ƒ›’—”’™’¡“¢›‘˜——œ™œ’—™™¥™™–”…™›‘’–“’™œ–š’’‘’‘–šœŸš›œ““‘–”‘•‹“‘š›—’š›—–’”‘œš”‰’›˜–š”›‘”—™“‘‘–•𛕓’’‚–™˜›–‘——œ’‘š•”˜’ ™–‡¢‘‘‘’£‘’¡˜˜””œ™‘“’™‘•˜‘™——–œ’”œ–…˜¡“’“’’Ÿ”—‘’™Ž”˜–’¢œ”•˜“”’˜—‘—𲙓£’”’”™‘’—Ÿ’–’‘‘™–—ž¡©’š”˜—–™’’™’œ–˜›œ—‹”–‘‘•˜‘˜–˜Ž•”—¢¢’–™‘Œ’“˜“˜–“—’”š˜“•”–•‘“”‘ŒŽ“‘—”“’’“’’““’Ÿ˜Œ•““Ž‘™–’”ž“•“••’’“–‘’˜’’“”••Ž’’™”™–‘•‘’”—Ž‘“’”’‹‘—“‘˜’“Š“•Ž”‘‘•––™’’™””Ž”’’•’“–’’‹…“˜”—’“’•’˜“’”–’—’–˜›‘”‘›’“’’‰‘•’’••“”—˜’”‹“™š‘’“’”›”’™’“’‘–’˜––•’‘–’’–›“‘‘”’’•‘Ž•“‘“‘’’™’›—“™‘“’˜Ž’š—™˜‚•›˜””™¢’”—•”””“˜”“•–”‘“”“›“——”–“˜“”•”“’““’‘–‘””•“’’•—›“———–“—“‘›“—®•’”’“—–“””“•“›’’““›•Œ““–‘’“™‘‘“–“•–“Š—‹–•𙑕™‘”’““’‘š“”“’™““”––““—““’“‘“’”“’”“’“”–”‡—‘’““•”””““–••‘•““•“—’“•“™™”“’š••’‘“”””Œ“š““•‘““•Ž––—”š“”Ž”••”’“˜—’–“”—“š“™–’“’™“““’“’”•“’—•…‘”‘’•’‘—‹‘œ‡–““‘‘•“—”š•““•›ˆ““’Œ’’’™“”šš•›“’•“’’£““’—•’—•‹•—“‘‹’‘’‘“’¢Ÿ”’ ™ˆ™‘†’Ž’›’‹‘”’™”š”˜š‡——™•“ŽŽ—— œ’’“š’’”‘Œ’••Ÿ’“’’™’ Ž›–”“””•œ”›‘“’“‘š™’’’Ž’‘•’“–‘”œ™’„—˜‹——…›œ’‘’‘’’˜œw’’…•’’›ž˜“Œ}“’œ›••”“¦‘“—’Œ’’Š˜„”–’£–‘’ž”š‹—Ž“Ž’““•¡ˆ˜˜“š•“•“‘•’—““ƒ—•Ž–€ŽŽ’Š¢•“’’™’‘‘›”™˜›“‹•ާ›’”™™Œ‘›™’¢Ÿ›’’ŒŠ‡–˜›‘™‘••—œŒš“‰“‹˜Š’ s‘”Œ™”’•Œ ”˜•˜’›“¡••–“›’“’–ˆŒ«’’’’ ’’Ÿ¢§Ž’—•’“’–‘š—’ †žŒ™’“ޤ‹ž”’’’”›–’‘’›ž—”—‘”‘–‡’’™’‘•—™’Ÿ†“‘‘’›”’ž“|“’”‹’’ˆŽ–—•™œ’‘˜”’•‘’›”’“𓒢𑅙’¡ž”’™Ž’–Ÿ“™”•—˜•”‘”•”””’’“—‘”œ“–””“–—“”¢”‘”“–““”“”””’™’•““”“’™““™“—”••’“–’”–”—””“’œ’”•–Ž”””“•–••’›˜“’“™˜”–™”””˜Ž–˜“““•”“•–™‘—œ•›”–•””‘•”‘–“—””•““•›”‘—“–“””‘”–™“—“™“”–”Ž—“•–”””‘•“‘””™•—•“•”—”‘”•”““˜”˜’˜‘’•™””“’•“˜•’””‘““”“—“”””•—”“’“‘”•’”•˜•’“—˜’—“’œ”“•””’š•–””“™“™”•™”•””œš–“‘™–™™•š”œ”•›“–™˜”“•—š““”““™š”™ž””›–œ”›™“—›””œ––—”˜š•““›™”˜•”Ž“••˜•—›“˜—››“–•’˜•˜•™”““•˜˜œ™–“••–“”‘™™–’”“—–”•–œ“–“”““œšŒ™•”˜“”””“”““™œ“—–“–––£š—•“”“™š•›“”—˜”™”—”•™›˜™•“—•””˜’˜ž•—“””—““’˜””“˜““—••›¡–”‘–—•––𔕕“•–”‘›œ˜”™““•‘–“˜›š›ž˜••’“’”•””“—˜—“š˜“–˜•¤’•—““•””•£“˜“•—‘’”“”“““””””™•”“Ÿ•‘•“˜˜˜“”“”š“••Ž’“œ—’“””–‘“”––—™•“““——’“š–‹’˜–”™“—‰•–•”˜““°’™’’’”””–—–“™˜•”𔓖““—““–”‘’——””““˜“””“•–—’–“•”—˜˜™•””“””–‘““™™—’–’’š”—œ“—”“•”—”—‘“—›”‘“”“•–“‘’•–“–š““—–•‘’–““˜“–––—’””“–“–˜”™˜›š™““›–“““”””–•–•“˜Ž••–•“•”–š–’“š•“”–•”“•“•””œ’˜”””––”“”““”˜”•ž“•™“—•“˜“˜–”“•—’”–•—””“–•”“•“”“”–––˜–””–”—‘“˜•‘•’“”””œ”š——•“œ“•”“•’“•š•”’–”––“–““–““™—‘‘—•˜“““•“•–““”˜’”“”••¢™–””“–˜”–“”˜‘”‘”•“•’–“–—–“”••’–““–“Ž“””—–“––”““•“““”‘–•“•””•”‘—’’“”–‘“–•”–“•™—™˜“”™•“˜˜›–“”•’“›˜–“˜š“•””–˜™“ž—˜’—”••—“™–“œ–™“”•™•““”““– •–˜””˜“š’•š“›—““”•–š“”–š’“˜›‘““•”“••“”›•“–“›”•“—œ“–“›“–“”’”›•š—–“–™™Ÿ“–”•š””“šš–˜•“““““•““•œ”–’”š“““•“•š“š–Ÿ”“œ“‘—••“““”—”˜““š˜“˜•”“”™•—™•—““—”•“˜—“—••“•“’““——”“•˜““š¡”•–—•“”Ÿ—›••–“’’“”›–”•¡™žœ“’𔓕”—–“–•••“•Š’”—™“–•–”•“‹—•‘”•””””‘–••˜š“”–•—””“““•Ž•–•—–•—›“˜““˜˜–”—•–”““–“”™£”—•—•”––••œ”––”—˜“Š——”šž”—”–••˜•—“”ŽŽ’“—“œ––”–˜‘˜•–“—“•”“”“’‹–˜•“”“”•”••“‹’”—“”™—––˜•••”•’––”“‘–•—–—••‘–¡•–—““Ž––•”’˜š—˜”•”—”’“•˜•“—™““—Ž•”••””—•—œ™—•”“’•–••—–Ÿ›Ÿœ˜““˜˜“”•——‹“–•“”™œ“•–˜”•”•š—”™˜’˜•˜”™•™—”œ–™””•˜—”””””˜˜”œ˜””˜˜“•˜š”™™””˜›”œ”˜—›”””•“•”•”••—•ž™”™•š•–”œ›˜˜”•”–””””›——šš”—–žŸ“š••Ÿ•™•”œž•—”‘”•””–””—”“—””˜”””•”•”—Ÿ™™Ž”šš•”™•”””˜š”š””˜ž”œ”˜”•™—œ™˜™””˜””˜˜”“›˜–”•”—•”•™’•”˜””š–•—•””–——œ™›—”–”””œ”•š™š›œš”•š—”š™š—”™””“”šš˜•’•”™–—•–‘“ “——“—“•™“›—•ž˜–””—“”””•””——–’—––•–š”‘š”—“••˜•–˜””•”””™—’–•–•–”•–”•’•–—™—˜“––‘˜“—––””–—œ”””–”™™™˜’—–“––—–”—–——””“–““•”””–Œ–—”•””””””—“Ž™”–”˜”—›š—–”””•––”””’™“š•–”—›”””—”””™••˜”˜˜–•”•”“–”Ž“”•”•—””—––š”˜—””•—”“––””•”˜˜—”“–‘š–”•—•”’••—¥—–—”“–™—“”““““’—““™˜”•™“•“’“–“‘’•”””›•”““““——“…”“’˜‹’Ž”“˜’“’˜Š•”“”•““‘“””““”“““’–”“—ŽŽ“Ž•›–“•“–”•Œ“’‘—–“‹›£—•”“”Ž““”™•”•““‘““““–”—“‘“”“““”““—“’œ“š“–™”š‘”“““”—““““™’˜”™”’˜”‘™Š–“”›““ŽŸ—“›”““““•“š““““”’““•œ“™™‘‘“’›””Ž’”‹“““š““‹œ›•—“’š’“‘‹”ˆŽ“”‘”𔕕——”–•––••”–——˜–•–”–•˜–•–—–”“•——”””””–“”•—••—•˜”–—”–••––•“”—–—””•””–”••—”•–––••”–“•–—”š–•””“”–”–••˜––•—”–—’—“—˜••˜”•”””•–•””—””–””–˜“––”—”””””•—””––“””—–›––•”””–˜•—””˜—•”“—•”˜•˜–——”–—•”–•’——––”””–•”–”””––””–•—––•”“•–•——–””””•–•”–”˜•••”””–”–•••‘”•”””˜–”—™”–”–•š˜”—˜–•”•‘–““™–•›••”•••—”””““•˜–’•“–”“}”—’”“œ“”•”••”–”™””œ”Ž””–•–”––••’“““˜”“”›—•˜’™”Ž”Œ••’”•™”¡”˜š™”Šš–”šœ••–”—””—””–Ž““•–”””—”–“”––’—“•‘š‚™•–””“”™”—“”‘““œ•’“”˜“œ’“•””ž•”—’’“—“š“–”“•“Ÿ””–”–—””ž›•›–”—”–˜’”š“–””““–––•––‘›–’”“–”–””€œ•—”“™‘›”œ“•”•š—›“›˜›—™”–”—–˜”“™“”’•›š““•““›˜•—š•••™•“”š“—‘––˜•™“›–›”“•—˜•“”•’“”•—–™™””‘™—•“›—‘š–‘”’”—›–˜“–𗓇”—•’”š’˜––•’œœ•—’•“–“”““œœ‘˜–•œ“”””“–›“˜š™–™”—•™•˜••“““˜—•—““”—–š•—””˜•”–—Ÿ“–˜”—”–“•˜ ““”—–“—˜—”“˜““•’”“•–““™–™–›˜“–™“•–•’‘—šš”–“‘Ÿ•“–˜•’”™—””“™•“”’š’–••’’Ž“‘•–•“•˜’–‘”–˜“•””š““”““—–•˜–••‘”œ”“•““–•“—–••“•”’“–Ÿ”–••™“••“”›”“˜š˜ž“𔡖–”—“—š”–—–”“““”˜“–“š””“”“••𔑓”“““““”“Ž›“•–“““•“”‘“›š–“‘“˜••–•“”””“—˜•›““Ž”•”••“˜š–“–”““’••™”—•”‘’“•“—““‘š–“—•““˜ž”—•œ”“—™—›–•š“Ž˜“•™–•™œ•”¡™“’’““—“—•—•”–”“•–’“••“””’•‘““‘‘Ž”–•‘•“’“œ’””‘””““““Ž‘“˜“’“”—“•“““““–”““’”—““‘—”•––•–”•”“”“”—”‘•“𔑓’”“”“’•’––”“——–“•”–”’–•““”–“•“““”–““’•šŽ““”“”“““”‘“’•–“‘’Ž–“”“’“—““’‘”–•“””Œ‘’”“‘•“—’”‘‘˜“–“““”•’•“‘“““”—’š““”“’•’“‘“—•”“’““œ“˜˜–•“”™”“—”–“”•”•—”””’•••••”–•–••ž“•”•“”””•š””•••”“•••••“’•”•••““••””•”•”•“•—••”“•••“‘”•••–•••”••”•’”–•’”—•””•”•”••’••””——• •”–”•”•—–˜•–—˜•””••••”•••”–”’••••••”••š•–“”“”•“••––•••••“™•“••–•”’••”••”–”“–•”–••“”“”•“”•••“••“””••“–•”—“•‘’””•–””–••’••›•••••”“•–””••‘”•”••”“˜•••”““““˜›””““——™”–›˜––“˜”—’—™“—š•””“”œ”””””™““”œ””›”•“””•–““——’˜”œ•–””‘“”•”““–”““–”•˜”–••›œ”›–š—”—”–””Ž“—‘—›”š–™”–•’‘”—“”™””—–“””””””œ˜•—““¡”””•““””œ•—•—”“””•‘””””‘–”—””’›“–”—”“™•”š›””“˜“”‘—•œ“𛓔”’”””š•“”––””–Œ“—™”””“š˜•˜”•”””•”’‘‘”••””‘“’”™—”—”•”””““‘™•”””••–•–““˜”𔕔•—”‹••™•œ”••“’””•”“”‘”“–••–“ž•”’”“”––•””Œ”””““”•”«“’••’“”•“–—””•šŒ•–”™“ŒŒ˜˜••”—”–’•–‹””¢”’”™‘˜”‘˜—•”Œ””˜˜“—”•”““”–’•—••”””™“”“‰”Š–•“•™—›™•–“”“•””•”””“‘•””•––•—”“˜’••”•“—”““””“•““•˜•”˜“”“”–“•—”–—ŽŽ–””’’••Ž”–•–––›•”•ž”“•••–{‰•••”˜’–•’”–•––𙓛œ”˜–”””•“•“•—“–”“˜”•””•”“–—•–•–•“–Ÿ”“–“˜ ”•”“–™””–”“š”›”‘••””•”’•™–”——˜—–””˜™™•œ–˜”ž“–––—™“” ’š’•“™›Ÿ•“š—••”•”™“”“”‘••—••””””“–’“›—œ–‹”™›—™™•””“˜“•˜“”—™”‘•–”–“—˜˜“’”•”•””—–•™”˜“””•“““”‘““ž™”“–™”“’™–”’˜–“––””••“–”—–š—›ž˜š““𔓗––™ ˜–•‘”˜™—•š–”–•••–˜”—˜šš—•—”––˜–•œ—””•”˜˜””•””–•”—˜—”š–˜•˜—”–•–•˜–––”—––“”˜•˜”••••”•–—––˜”˜’——™”ž˜““–˜•–”•“–˜˜——š”™–™•”–•”••–””––”•“–”–””˜””™˜–˜•”–”””–““•”•––—•”–”—š—••”””™›–—””—–––•š””š–˜———”•š••™——––•š”””—–”™—–””——””˜”–›™“•”–•˜–—š–”•’”•–•–•–™™•—”“š•”–˜•–”—–•–“››•’’““””“’’“˜“”š“’’““”š’“““‘““”‘”““’““’™”““’“‘’’“’˜“š‘“‘“““•“’“–““™”‹“”“””“•“’“™““ˆ—“”“š——”““““”“”ž’’“’“—šš›”˜“’˜—””•’““””“‘””““““Ž””“”’“““’”“–““–’’Ž“—“š’‘““““””””““™—˜”’“”Ÿ“–‘’’“‘“’•’Œ••’—““““’“‹‘–”“Ž”““—•“œ“”–“’•“’”“““•’“”—“’’•™˜“”—“““’’’”˜“”““˜™”•—•“•—•‘’—“š•—“”•”““–”””˜—”•”•–”“”““–––•“™–““•–˜“—–—“•—“˜“˜•””“›–”“••–“–“˜—–•”“‘™•–””–“›”˜•–”‘‘“–“’“—“Ÿ–“•”—“‘”‘˜”•”–—œ‘“—““’““•”“•–˜“““”•“•š“•”–”—”˜˜”‹˜””“”“•˜–““”–›š•••”˜š••’–•“”—™–™“œ–˜“•“˜–“Ž’–““”𓓙𖛓’““”–•˜”“—”•“”•–”š˜’™—“‘š˜“••”’–™“”˜’™š”‘••““““‘“—“—–˜’‘’•““š”’”“˜“““–“’’’’•—’”“‘““”’“Ÿ“š•“”’™’’””““œ•—’““““‘’“•’š‘‘Ž–’’’—™š‘š’˜“–’—”“”““Š˜–—‘˜–’š—›“”–’““•’“’“’“’’‘Ÿ”“”‘’““•““˜’–”•Œ‘˜—˜š––“““’“•’‘’“›œ“–“‘“’™‘š’•—““›“‘”‘”–“’“““’’”‘’“–“’˜”“š’“”’•“”˜’”‘“”“”“˜“””š•œ™“’œ’’‘’””Ž”’”“”š˜›””š”–––•œž“––“–•••–•–•š–“””–˜˜””•”“—š••–––—– ”—“”œ¤••˜––𔕕’””Ÿ–¡•–•–•”–—–•—••—•š•˜”™˜˜—”••””—––––œ–”ˆ–¢—–˜Ÿ•‹šœ•”ž–”–”–“˜“”•“”•’“—•••”””•”––“ž™›–‡”––”ž™––”””˜•–—””™ž”––˜”•–•¡••—”š˜–•–•š—œ•—”•”—™“›•“–”Ÿ””›š•–—–•”•œ–˜›–—”••”–’–•——˜Ÿ˜ž““–”––•••š—••“”¢™“™š”•”•˜––“•“–”•“™•™’ ™”“˜”••˜•”“”““—–™—•–˜‘”‘Ÿ“—”•”—˜•—““𣓓–›—”—••”••••–›“˜“˜•™““œ““•”˜”•Š•”•˜–•“ŸŠ›“”“¡”˜•“œ™“–™•““““““••–™”•–”““–“”•“Ÿ™–“›˜•“–•””“–’•–“”‘••ž–•“•“—“”—˜“••”—“˜˜–“•”™”“’˜–•“–•““—™”˜•™–”–‘™™•˜•”“’””˜––‘™–™›•“” –“•–𙕛•——“•—•“¤””—”•˜“š“”–––””˜•”•––••˜““•—–˜““”““”œ–ž›•˜™•›“›—“’™”“”š™—“››•”“›•›—•˜“••›–’š•˜ˆ’™“”Œ––™•š“˜–••Ÿ•—™““—•š“š™•–›Ž““–“•••›“–“”—““›™’›•™˜“““”“–““–’‘—›““‘™–’—“““š—•‘“““›—•˜”“”————›•“”––•—–œ””—•“”“™™“¡˜‘•“š•““”Œ–™™”™“–—‘——˜“••“—“—”•”•“’’“—––“šœ˜™•™™——”››•’•“–•–’“’”šŠ•––”˜”˜—‘”š”””“—“”””•”””•“—••”•’”‘““–¡–––—–•”“”’””™š¬”˜••“””•”–˜—”•š—“˜”“–›”–™”—”•–Œ”“™•”™‘‘š‘•’––””‹””•–“š““““””“¦–˜”””””—”•‘“™“””›—”‘——”””•—•—“”“••–””•’••˜“”“‘•—•“”˜–‘”””••“••“””•—”“‘•“•””“ “”—•–”••”–”••˜£›—”“Ÿ•”–‘””£–—”•”›•“•–›”•••–ž “š˜–“•™”’•”—”•–š””––›””•””–” –””––š”Ÿ”””’••–š–Ÿ”œ™”””•›™”••””••š•˜›”——–—š”––ž™–••”””•™˜’Ÿ•”˜•—•“••š˜•”ž¢”›–””–””˜””••Ž••”–””””””š”“˜”—”˜—“˜›•”””‘™•™””•’•›”–™•–”—™”••”•—•‹ž•™•”•”˜””˜—•”˜™””œš••—•”–‘“ Ÿœ—”“””•”••¡””˜””–‘•”š––’‘š••˜”•–™–˜•”“•”—”””–—“—–••“••“–”—”•”””–”””“””•–––••–••—•—•”—•””••’”–••””•““•”•”•”–”••“–’••”’”˜”•™””“””••”–”—’•”–••“––™“‘’–””—•”“”˜”•—””••’”—•—”””””•–”—•–•˜”•——”“––”””•”•–””—•–•“—”““•’—•—”–––•“–šš•–—”””––””–’””‘”””’˜—””“””“––‘”–””—“””’‘––““““•”•—˜”—–••“’”“•“—“™“ ˜”””•™žŸ“—œ›––“›”’”™“’™™”“”š›””•”“—š•—˜•”™•—”•Ž“––””—œ”˜“ ˜’”“˜–•““”•”“”•š”–œ”˜—•˜™“–•‘•–˜“–”’”––•›œ“’“¡˜˜—–••”””›œ“˜”•“•““ž““’’—””™“““–“”–“—–——’”˜•‹–—˜•””“—›”™“”•™••”—”•–˜™—šž”“””•™—›˜—›™“•“›•“Ÿš•“ ›““•‘”–™–’”•˜™™›™˜”–”””–””•”• –˜“•˜”“šš–•’™“”•”–“•””•”””“”˜•”•““’””””’”“”•Ž“–””•””””“”““˜•”•••””—”—‘“—•“““•””–””””•™•••–•—”–”””—””“–˜•“”‘—“—“š“””“”•“••’’”œ”˜”’—’–•›—”“””””“”˜”””””•”™““”””””’”–’“–“˜“š”˜˜‘•”””””“’”““”–’••“•””””–”“””’•••”•—•””””“””“”•”’•”—’””™ •’”–•”“—“—•“”””•”•“’–•™–˜šš”’”•””•””Œ‘””•”™™“–•”•”•™–œ”šœ›œ”™”™“–—•š•””–˜›”””””˜“•››””šœ’“™˜” ’“”œ”™”™–›””𛢕‘••’””•œ“˜”šš—˜˜”š™Ž’–“›”–‘•œ™–šš”Œ•–˜“•–•›—Ÿ•”˜–˜—•—””“””””˜“—””›“””“””¡“Ž˜›œŒ”™š–š’–”””žœ“š“”œ“—–›•–ž—›—ž”’””•™”Š“š˜•“•”›“”‘š”•”š˜””›‡”š˜“•”“ ™›•Ÿ–”’–”• •“’œ¤›™š”’œ“”šœ™—š•••“™““•‘“•””™•“ž•’”‘•‘“˜‘‘Ž“¡˜””•“”““““Ž”•”–”–“Œ—”“˜™’’“—”—“‘•Ž”“›š‡”™•””““”“›‘”“Ž™”˜“—•šž’”—“’“›’“‘‘“’•’“’•˜•“•œ—’—•““““““Œ•‡’”“”“”“““’“—‘—’“–•–‘“’””““•–”“““›‘Ž”’”“œ’—”–Œ“•”’•Œ•™—š“”““–“ˆ’š““”™““—Ÿ””‹™•“‘•‘–•“”˜”“–•”‘Ÿš““ œ“•Ž““—–—˜’“–•”™–‘••–”———–—•”•––••——”–•——–”—˜”•”–•”””””•“”•–••˜–•••–”–’˜”•–––”•––“”–•’”“••–”•˜–—•–”—“•––”˜•—•–—”—”—”••––—–”–—‘”“—––•–”•”•—••—–”–”””””–˜“••–•”””–”•—”“••—””•—™•—–•”””–––•””———”••”•––—–—•”“–—”˜•“”—–•”•”––””–“””––””–“•–•““”–•–––•–”—””—–˜•–•••••”–’˜”–•–•–—––“”š“”•—””–—–˜˜””“›“——•™•š””–•”—””•–••””•””—˜•—™””›–“•œ””•”••–˜—”””˜”””š•ž”•–••”—–›—•–”•œ˜œ˜”—•“•œ”—“••˜˜””™“›•“”•–•”—”–•—“•”•””—””—“˜›•–—”””—”—”Ÿ—–™’””•“”š–”””š“”–””™–•’”•”—–™œ˜›“”•”–•–•œ™›–’”–”—””–—‘•”›”””•—”š“–”•”—•™–™””””–“˜—™™–””’—–”•˜˜œ–••–“™—”𔓔•••𤓋˜‘š’”š”“Ž”“”’—“•““•“““”•’”–’š“˜“‘˜––𔓛—‰““š•—””’””–š—Žœ”“›‘’“““Œž–“•”•”š’•••“–‘›•˜™’Ž”“𙕑—““•““•““—‘˜””••“”“‘“—”“–‰““““Œ’Œ‘”š•“”“‘™’’““Ÿ˜““”•”••““˜”—”’‘›“”˜“““›’“‘–•”“¡š““ŽŒ•“˜”“•Œ’¡––“”–””‘••¡‘’““‡”“•——•••š”šŽ•”“”“““””“ž“•—““•’•”––““Š”’”“”–•”””“”•—”—“”•“–‹““–““š“””˜•ž“—–”“—”“–”•””—•—”—–••¢™•”“™“™œ•””–”™—”–””¢—“Ž’Œ•••Ž˜š¤š“”œ—•–˜“’“““““”š®–“••“”“™”•—“œ“˜”””˜¢˜’•””””–“–“”““š˜”••”“•”š•••“‘—”•“”£—”Ž”““—””¢”Ÿ–“Ÿœ“““˜“‘”–”“™’•—œ”–“‘”’”š•——š™Ÿ’’“’–•“–””–Œ›”•“”””˜•’’”–”””—™”š—“••’•’–“‘”“‘—””–’””•””Ž’•’”–“’”•••”—“””—“–”•“–•”•”—”–•”—”•”“•—““””’’”––—”•˜•“”•”–˜‘”—”–Œ˜“˜™˜™—š””™•—‘”–”–””‘””˜”––’”””•”••”Œ‘—’“”““’“‘˜•”””’•–•””š—–”—”“••‘–•“”–˜–••Žš•“–”•”•—”“‘””•“””•••“—“””“”••–’”™–”–•–’˜”––•™”—›•”–’‘‘‘—••”””’•™”•••—ž“”•š—”•••”¢•“ž”™š”•–•“””•”””Œ”’ ••ž˜–”“”“•”š™—””—’’“”–‘–“˜–•’”––•—’”œ–‹š”—“—ˆ•¢•”˜‘”•“¡’””–“’••”•ž”šœ•”š˜•”–—”–”””””—ˆŽ••›”””’”–”˜Š˜“”“’“—”–”””““–ž””’’•”––”•—š’š™–”–”••“›“’”•”•”–š˜•”š–””””œ•”•‰¢’Ž™•”˜””–‘––•˜—›–‘”–’—”–𙥗•—•–”š”–”’𔕕””Ÿ˜“œ–œ“•“”˜”’š“–‘—”””˜˜””””“˜œ”–œ•”˜–“”””Ÿ˜””˜–”—”˜–””›–•••”‘”••˜•𗔖𛓕“’›˜“““””””’••“˜š–“–‘ •–•’Œ“—¡•”œœ••”–“”““‘“”˜ŠŽ–”””””“”•‘“œ™Ž’”™•“˜˜•””””“’•™“”˜–”“”–”•’”—’’“™–”••”•–¡‘””””•””ž””•”Ÿ›““˜¥••’”””””“˜”–’“•’””˜˜¡”œ“””•“’—”™œ™•””“™‘“—‘“””“—–™”œš˜“–””•‘•”’“—”“”›˜”“”““’›•š™”’˜•—“˜”“˜‘““”˜”‘“š–”“““—œ”•””–“•“™–——“—•‘—”“‘–œ””“–“–’”›˜˜™“—•’™’”•™”˜””’’•“–“•“““““–””—’•–“““”“•š“”’”˜’””•“‘˜“””“˜›“—““Ÿ˜–”™“”—””˜”™“”“••˜•™’•’““”˜”“¡˜”““’‘““——”•–“””–™–—•”—”““›••˜˜–••™“’““˜›˜›‹•”””𔋔𔔔’”“––“˜–•”—•–”–‘œ“”‘••”““•˜””””“•—”™˜’”“•“•—”•’’”˜—”˜“–˜—”“–—‹•’•”•”•”–’—˜–”–™™•”œ–”›•—”—•‘˜”š”•˜—””—“™”™“”—˜””—š—˜““”‘”“š“”—‘‘™‘’—””““”•š“™––•“”—–•˜””•“˜˜””“““—”’“““›˜“—–˜”’š’’–– •”“”““˜’”™——–““™”“—•“‘•”“”•™“™••—”’˜””˜““–™–”™•”“•’”—–™–—˜’”’““™Ž“𙓕”“”–˜“—”—”š“–“š’–—“•—””••˜”““““› “˜–””š”˜“‘•“—”“’™–“›“˜™”““—›•”“”“—“”“–“›–“—•™˜“–œ—”™““”’“™——–“š“—”“–“›œ”—’“——”ž––“’““—““™“ ›’“›“”“•“’›“Ÿ›˜™—“œš“”—˜““““—›”›““›–’”•–“”Ÿš™˜›—“‘˜““—˜˜•”—š““““““š•˜•“–˜““š‘”•š‡•“”œœ›™™”“•ž•“––Ÿ–š“’›’“—––™˜“–”””—“™””“”—–œ”––‘—“–”’“•—“‰–“”“•™›””“””–š”šš““—””˜“”•“”“˜””—”›–”””•”¢”–”””•””—”›”•Ÿ–˜—”Ž•“—““”“”‘”“”–—š””’˜‘”“•˜“”••“—•–”–””””¤•““™”””–””•“’™“”••““•‘””””–”–””’•”•”˜•”•–––—™””•“”“–œ–”•’”””–’”¤˜‘””––”””“”›’”””˜’—›––””““”•””““—•’”•˜””–™–’‹˜””–••”••”–•”””•š—•–›”‘•”••””‘””Œ•›••”””•••••”™•••”•”•Ž”•—•–¢”•”•”••••–••š“•”””••”””•˜••”™‘•”••’“”“•–•’–”—””–••˜–˜–›–’”˜–™”•—’–•–“•“••••••’”•”•••••š••–••™”ƒ•••™š—••••••••””•™™•”•”••••›•–•••••”•”™’•ˆ••••“••••“–••‘””””••™•••”••””•—•••–š›”–•”›”•••••”‘”••”—–Ž”—“”–”••–”“–›–———””™–™•”˜š™”””––”“”””•”•“–“•—•’”•˜“–““™–”–”“”š“”–”Œ–•••’”•–’“˜”“•—–•–“˜˜“š”–”•”“‘•˜•–™š”™š˜—“š“—”“–””•›–™–““”””–“”•‘’–•“š“””•”•œ“’š“–˜””•–‡š”—”””˜•••“”•š’“–—“•—”—™”•“•š””•”—™–›”–“‘–”Š—”•“•™““˜–•œ–“’”˜—–š—“•”•““–œ–““”•“—•“•œ•”•””•–••–“•–¥“˜–““”“””’“™•“–—“’’˜’š•’‘——““””–“““““•˜•–““”•’š’——“—š”’—”•““‘’–”““›†”Œ”“Œ“””‘”œ“”•Š–“•“—š—š’š“–””““˜””—“‡’•š˜——“—•𔓕–”˜‘”“•““•““”‘›””“™“““’“•˜“–••›”˜•’£“””“““””“˜““”’”œ”™•”–‘‘––•“•–“–”––˜’”•“““““•˜”““““—•“˜–”“’›•—‘“““Ž“”–”“•™™™œ˜““‘“–”—•¢””“—”’“™“œ–””“”›––“•––––”™“š“˜™“Ž—•”“––“””“””—–“‘™”“˜—™“’—”•—“”˜˜“””™–””””“’•˜”””“”˜”˜•”““”“’”œ–‡’”““˜””“–’–“˜”Ž‘‘“—•”˜—””˜••”“š””“” ””™“™’”“š”””’”“—“•—’—™””“¨“–””””“’“–“”’““–““”•”–“•—”•˜“”–™’‘–•—”””•“”–“”””•””’”“–˜“””’™–”š•”’“””’““”–•–’”š™””•™•—˜™“”•”™—•”•–”“”“–”“”””—•–”••–”š–”•–””•”–—”””””•’••—••—•‘•˜–””‘•”—–”•”––˜”””–“–”””˜”–••–•–•–—–––”“–“–––”””“””–––”–”•–“–’˜’•—••“”•—”–“•””””–””–™”••––”””””••”’•””—”–”—•—””””––––”””“—˜•—•”—•“–•–”——••••”–••–”””•–”–––•”’“””˜–•—–—””–“•–“––”—””“”••˜—“—–”””’•”••••˜–•”—””•’”“–”•”••“”™••‘“••”–•š•“¥”’””””””””””•’”•”“”•–™”–•””“”“•–“”””›””‘–Ž””””•””••””””•™š“”””˜’›“’”””–”•—““••”–Ž™“—–‘—‘—•”““•••“””””“”””‹”’“””””•””–”—•˜••”•—‘˜•”””””••“”””“’’›”•””•”””••”—”“••““–””””••”•‘””•“””š›”’””””“›”˜—–””•””•—”’•“’“••””“”••”•˜™”•””š–““‘–”•—“˜•””–“•’–“–•™“”“•“–”–”–””””””˜˜–’–•••—”••”™––“’š˜™”—””””—˜”–•—”—•”–™•”•‘šŽ””Ž™¡˜”˜”‘”••”“””˜“”“”𔓓“—–’š—”œ•“•–—”’””•””•—ˆ”’˜–”””•”–—”“—••˜”œš–˜–‘””””’•š””‘–——–˜”–”‘”–”–”’“˜–•““’–“•””””•”š–™–”Ž—””—©—’’˜”•™—•“•˜””•””•–—™˜š•™–”“––”—‘–’”–••š“›› ’—“••“˜‘““ž•––—““–™”œ–”˜—’””””𔓓“”™“—–•”•’™—”’™“œŠ”•𙕒“˜–›“”’—“••–“”“—”•—•˜—•”–”™™“–’“‘”–‹–™“’”š“”•‹‘™—“›•ž—“‘Ž•–“‘“•“”““”–—”••—“””’”–““’™›– “š”˜™•”“”˜““™”“œ‘—“––•–“˜Ž‘•–“’™”—™•‘‘™—ž”•”˜’“•“•“™‘““•“•—”•—“”œ”•Ž™—“–•”˜”“—’ •“™“’˜•“™––‘”‘••”“™’“˜–“•”““—›’•–—”“’”“’™”™“““”–““““““”˜–”–“•““™’“–š““’š’š“š’““”˜”•˜•”–““”–“˜•”™•––“”•“–“›“””Œ•—‘’™“š’‘”‘–‘””““œ™•–”˜“•““—““”•œ“•“–“““”“’š“’—š˜—““•–—”’•““““–—““•˜“–š“’–““‘—š““‘””š‘ž—“–’“““˜–“š•“““’—““–”’‘Ž’““‘›™˜š”“—““–“”’”“•–˜˜“’˜”“œ—–’‘˜•””“•—‰•“–“——•”“””™“™•—•”––•™’”œ“’”•–˜””“•””–“—”“–˜“—•–’™””––”•––””“”š“”’–’“”––—”–••–˜””—•–”””¢—Ÿ—’•””•–—™“””˜”¡š“›“—••™–™–”“•–“•–”–””“””“›“——•”““”•”——”“–——”—“–œ‘“•“””———””—“”š——”˜˜“’““–”•™–—š“’”’’—”•”––”’“——”““””•š–”•–˜“•’–””˜—”•ž“—•—”–”–“—•””–””–“““•”——•“˜”““•“—–••“‘’–—’ —••••—“’•–•—““““˜““•““”Œ•’”•“””–“—”“Ž••–“—”“–—““—”‘”’—–›“˜–’”––“—˜–—˜“›“¤““–”˜“œ—–š——“¨–——•–’š™–™””“•š”—“•““‹““”—Ž–”“”“““”“”’“š‘”’£“‘˜—’–“““›—––“““–””–˜“•–™˜™“Ž“”—”•—˜š˜—–š“”“”•“•˜—“œ˜“““•“••–“•˜‘”’”–“˜–“–”••œ•”˜——“”Ÿ•“•””˜Œ–•‘”˜“—“š”””“¦››“žš™—“—”™’–Ÿ”•˜”“•š›””“”“–œ”–Ÿ””Ÿš•“¤™““ ”“šš”—“˜˜””•𔆓”’”•“””—˜”›”——•”˜˜”š“›““”—‘”™™›•—“™˜–Ÿ“™•…—•“”—˜“”“““”¦“““œ•“”““”•“•›“Ÿ™ššš””’•š—”””“—•”“”““•—•œ”•”˜‘™™ž“”–“•˜žœ——œŽ”“””’“ž›“”“’”““–—“˜ ›’”•šœ™——”Ž“””™–•™˜›ž˜““‘¤““›ž˜š“˜••“”™˜‘””””•”””–••”–•”””••”“’•”Ž”—•”•””•••”•”“””””••””””“”—•”•”““•””••”•“”””•”••••”••••”“•••”•–—“–””••“”—”•“•••—‘˜”—“•••š•–””–”–••”•”””•””–”••”••”•–”””••—””••“’—”””•••”—••••œ••“•”””˜•—”””””—•”””“–•”“••”””•””–•”–“•”•’•–””“””••”•””•–—••—•“”•™™•™••˜•”•”””Ž“”••“’›•••—“–—•–˜š“¡––•”””•—‘•–œ•˜”•––•“””““•¤–”–˜–•”—•˜˜“™›–•••–œ”–””““ ˜””•–•—“••”˜•“””–””“¡š“‘“•”’“•’–œ”•˜˜“‘— ¡“™––¢“ž–“˜™“–˜”“—““–““•š—”–™–“”“˜“–¢“œ™ “…”šž”—™••“”“”—–•“”—¢˜›•–“–›•–•”—“””˜•“”£•‰““””—“¢•”””– ““—›—£•˜•““ ”ž’–•”––“• •––›š˜“•˜˜“•”•”ž–”–“˜—“”˜˜“••”––“›—–’™”š” •”˜”Ÿ›™”“’’–”“•““˜••šŸ–’š˜Ÿ“™“”œ””™–š“œ›‘”“š“••••””•›•›š”—˜™“—“—•›” ”•“•œ›™–’“””™’“–’Ÿ–“™”“›™”–”•“’““›““œ———•““““˜“”–“–”’™œ“˜“‘˜™Ÿ•“”“˜••–“”‘›–••“”–žœ”š¡–“’••–š–•›˜š›“”“™–“›š“•“”˜““˜˜”—’”“•—˜–“–œ”““““”“•››š™œ•“••“žšŸ››œ•“—“˜—’”’›“—––—”“˜”•†—•’”–•–“•™š—”•••™““”““›œ••“˜•”””—“–ž–“™••œ“”•’““–›’–‘—–—“––—–œ–“•“”˜›“™™““”•“•”“Ž••–•›““Œ•š’“—”𔕓—“—–š—™’“”“”““’– —••““““–“”—“šœ˜”’“››–Žœ›”“““•”•’““•š”™“”“•š•”“”•“’”—“““—™•“•“™”“•“‘”“˜˜““•–•”””““›–›“’š““”–˜•••Ÿ—𙓑“”“–‘—“—”––”“”’˜””•”“—‘“–“œ””“”–—Ž’“¡”“””•‘˜”“•””“‹•›—••”˜”˜’”’–”“—•’””–‘•””𔕔••”–•’•˜––˜““™™“™š——˜”””—˜•——”–—”Ÿ““•”’–™•’Š””“‘”˜”‘“–““““”“›•––•—”””—”••“••‘”›”––“••”””’”–™””—˜“•™••™•”–—“—“•••’œœ—“””””‘–””•••”‘”””””•”“Ž“”—““˜—••”—““”’•–™™Ž‘š‘“”•”š”™••’•”•”–˜›”˜””––•’”•”•“”›”••’”–“•”ž••”’–••“””““”–“”–“”•“’“•”“–˜—”–”•“””•–””˜—–••“’””•”–—””“”“••”•–•–•—”œ“•“”•–•”——•”—™”’œŒ””“‘“•””›””—””•š—”˜”•”””‘”–•““–“”—”—•‘„˜—–”””•”””“”—–—””•”“””˜•––”•˜•–“•™–—”–“’””˜“‘••””š–”””Œ–•––’”““””›•“”’•“–““‘”˜˜”••”––“”’•”•—–—“–”™•”•“””“•–“•”›”“™”••”•“˜“””•”“””“”””“”“˜””’”•“•˜””›”›˜”“””’•”“”˜•”•›˜”””•””“–’”œ”•””—’“”—˜•“•“•””“••–””––”——™–’–’’••˜“”˜–””‘’”’”””””“—”•’””””–””–”•”˜”™”™•”§’”•”””•”•”“”™”’𔕔”“””•••”–˜””“”••”•™”””“–”‘”•”——””–˜”‘“”‘””™”š—–“”•“””“•‘”˜Ÿœ›š”•ž–”“““”™””•“›••–”“•–•”•”““›”˜—••“˜”••“ •”“’••”““–““—˜••••”••¨“–““–—–•–•˜“””‘”“™“ž••”•‘“•••–™•”–•’”–“•‘“•˜–”“š•–™””˜’“ž‘–•‘‘™”“˜•”••—•“‘“š““•““”—œ–—“—“””’“–š“”“”–‹“’˜—Š—”•”””••–˜““•š•”—”••””••”“›•–”–••˜”˜““““”““•–•“—˜““””•––”“““•”Ž”–“““”•””“•œ˜™–““‘„““—•””¥—–“˜”– –––—“——˜–˜›”•—–”–—–”–š‘–••––”“–•–””•””–š•–––•—•—”•‘”™•—–––”—”—••””š•–•–—–“”“–•—”–•–”˜•–”›˜”•—••”““–™••˜–”œ™š›“–••‘—˜”š•˜••–“™“”•””–‘š•˜•—”””š”——“””™••”˜—˜”–•—”””––”–“”š˜–˜“—”—š•—•—–”•™––•”™—•••”•”•–”–”•”™—”“š——œ––•”–˜––˜–•”••”–—•––”——•™“””•“•—”•’›••—“”‘”’”””•”•š˜š“˜“”˜“””””—’’•—“’”“–’–”““““‘•’–•—••’”˜‘“•——•–—’˜“˜–”“”–£••–—“”–’–––””›˜•““ˆ“š”’•“”•—“•“™˜“•’œ‘“‘™“Ž–—•“˜—••–“—““™““š–‘–––“““–“”’““œŽ—“”’•Ž——“”“•––•““”•—”™““““–—•”•“”“—”””›š”—““•“–•“™–™”“›•“““—•–•˜‘””›’—˜–•“’–”˜•–•š—–›–š“““˜“”–‘”˜—–”“’¡“™—”•”””™’’š‘—˜“™—š–œš•š››”–•˜˜”“”““˜ž–”“—˜—“”“š“•˜”•˜˜š”“–•›”“”–š•“––™“—•—”•–”™‘™—š“˜”™—š•™“”••˜•—‘›“š‘•“›—–¢˜Ž’“’•™”“”““™““•œ’š”—˜“”“““–—“•—˜››“œ™›“”–™“““™š˜•““—”–™™—“•—–‘—š˜“”›•—™š”–’˜““–“•˜’—–›˜“˜”““—œ–˜˜••”™—š•—–™““’”–š˜—‘•—™™“”Ÿ˜“––“™”’™–’“——œ”š–“––—›”““‘“—–•”—•›’™–•˜™›”–••’”“•”“”–”—”–—•˜˜•š“•—–•–˜”“””˜™““•˜•””–””–––—œ•”˜––—˜“ž”•–—”™”š–•––”“–˜Ž”’––’–š•“”“••™”“˜“”˜““——™š—˜˜”“”˜“•–“–˜œ “˜–—“—”–””“š•••“”—“–”˜“”˜•™“—˜”—˜••›”™™”˜—“•”—–“––—“˜““““•—•—“˜’ž•“š—”””“–‘—™“š•–œ–“’ —“—–—˜œ“——–”—”•”•™”–”“™Ÿ—””›˜––•”•–•“™”Œ›”•—š—””“””“’“”ž––Ÿ“Ž•›–”••”˜—’—”™“–””™›””–•–”••—•™””˜š‘œ””“™–•™••”‹’––Ÿ˜’””Ÿ”š”—”‘’’••”“š”œ˜–”•””“””›™‚˜•”›”””–””˜”˜–’•””“‘‘–˜”””””˜–—˜””˜—•––˜””—˜˜š™”–”••˜”ž˜™‘”•”•”š—•”‘—””–•”š’’”•–—˜™œ•”•””•”””—””—š˜”–™•”“˜›™Œ••—“–˜–”“•“•”•““•“’“˜’”“””•š’”•–““–••““”““•Ž”–”–”’•™”’›“’“•“–•••“”“™”““’•”“”•”“••••–””•˜•“–“œ•’––’•““”Š••“–™“¡”“”“—–•––•”“•””–“–“–““’“““˜•’•””“““–“”˜““•’•”’”’•Š’””“”“–™–’’“““’—”—‘”–’”‘“—“–™••—’–—““˜““““•“”’˜–“–”““•”—”—”“–”—”˜•“”•“•—•“”’‘““’“”˜•““““‘‘••“•”˜˜š––“”–—–•“””’•“•“—•”•–•“•š•””•˜”’””•””””•–”–•“”œ•””””‘–”’”–—”•–”””––’“––—””––”•˜–“”““•””œ””™”•””—’–••”“–”—•—“˜˜—˜•˜—”••–•”•”—””””””˜˜”–•””””–”–™”Œ”“–•“”•––––•”””“•’”””–”•••“—–•“•–•”•––•”“•••””•”“•””•—–”“–””“’–”“”•”—“••“•“”“””–••–••™“–“”–•–””••”–“••””š“””—”––•šŸ•”š¡“˜•’”œ•”˜”’™””–•–””•””–•Œž””—–‘”‘“”’š•”›–˜”‘™’””¤š””•••””•–•ž’“””›š–”Ÿ’—Ž”›”š””––––ž”””¡–¤“““•’•œ•”–›•š’”“•”“ž””—•Ž˜•”›”””•“–•“œ¢–ƒ”–“•Œ ’–”””˜“”–””““‘”š“–——¡•’”’””‘›•–¤–”””Ž•”›—•”“¢”””™•’™–—”–•—“”“–”–•”••••”¢š¢Ÿ–”•Ž•”‘—•Ÿ•“—•”“š—™“š–””““š——“šššŠ›”™”—’••“”•”””’š˜”“”““𩔔𔓕™”““”“¡™““™•”•“˜‘”“œ˜—””“”’“•“œ”œ—“’•”“”šŽš”’“˜””‘“š–™”““‹“ ™”””Šš”œ““™•–““”““““Ÿ““Ÿ–™–’”˜””“•““ “Ÿ–œ•ˆ“žŸ•‘“–““““˜•“—““œ™”š””“”””—“š““‘“”‘“š˜“—“““œ““–”‘”“–—““›ª“—›”“•ž”˜’’™””•““›•“’Ÿœ™›“’’’“–—“••’””““˜””’’““’“”•“•—“˜’“”™“‘”‘•’”””‘•”““““•—”–•”“’Ž”“•’“˜˜‘“—”’‘“—–‹““–™ž“’”“˜”““’“œ”“•™–˜™“’•¡’‘“–”‘’”™––‘’“¥•¡Š•˜–ˆ–““–˜–”“‘““Œ““–œ“—’“›“““•“’’“”’—“—š”™•Ž“”““–˜’•““›–’‹“˜““š–™š”‹“‘—““—”›“–“•“““““¡”“““‘—““—Ÿ“”””““™•”—“’“””’””™•˜”𓑉’“˜“”—“•“”˜’”””””””“”—˜””—“”“”“‘‘”““‘‘œ””’”‘””“““–™”‘‹’•‰—¢“’–“––“’““š”–™“”“–—“”“”“•”•“‘”š•”˜“”“–”‘”—“—”“’“•›“”‘œ”“”——š¡’““™••–••”•“”‘“”“—¬“””“”—““™“˜•˜Ž—”“˜™•™š”””“‘•“””š”–”–””Ž‘—”Ž—”™’”’Ž™™”™™–““”“•“š’‘““˜š”“‘‰••‘˜’”“š’›•‘”Š”“”’””“šŸ™—˜””˜’“‘‘”“”—““”–—–’“—–™š‘“•™––•—”•˜”–­”““”•”•““•““•™•—“••”–˜”™Œ“‘¡™”•——š“”—““›š‘–•–•””•––•—–”•—”““œ–’•š“–—“™‘–œ–“——“¦•™Ž‘ž”‘œ•“š––“‘“š“”—“”•’š–—•–“““—“”–“”™”––”“’•¢”–•”””•––•““Žœ“•”™“–—•“–—–”“’••—–£••——”””––“¤–𕓗𔓙˜•––’–“”“—˜—•“˜’“——–•—š˜Ÿ™•“’Š•“••••‡—–••“——–“”–””““””“—˜—Ž˜“˜”™‘–“‹–‘”“••—””“”“—˜–’—”“”™–’—“™’“”–—•–“”˜™“”œ•‘”’••”•”™“—–”––™–•“—™‘–’’“›”‘ •”–™—”“…•™š“–“—›’›•“––˜‘”““‘“““““”””–’“–“““”“••“•—™™”˜”’„˜š”””“—•””““—™’𔑓•—–•——•“‘–’•’–“˜•””“š’“˜•Ž•“—˜““™—”˜“”˜“•˜—˜‘’˜”•”””œ””“š˜—”™“’—’“˜––˜”Ÿ”–“”•’Ÿ”œ””“““›’“Ÿ“’“—””“–“•’““˜”““•””““““ “—“““”—•“˜”“”•““’–“–”‘•—““”•’•’“““”““•”–”“”–š’“’•Ÿ•”””•‘““—•–‘“š–”š”•’”Ÿ–•““”˜˜œ”““““”š““—™ž˜“’˜””””““—“™—™—Ÿ”˜—˜––•“”““•–““”˜’“˜“”“”Ž–——™š””‘’”’™¡–˜ ““”“”“š˜š”“—““‘““”™•””• •’•™“”–’““–““‘”›••””””’““”—–™•““““–”””Ž™”•””“––“•›—”•”™”™”›—”“––”””–—”””““›”™–””–˜‹”š“•Œ””—–•˜“–™™”“˜“”˜•”””–•˜•—™”›˜™™“–Ÿ–“”›“”•——––“––”–“•“ž—–•”“—•’š—““““““““•“—“””““““•‘“™š’™—“˜–œ™ ”””“”–•‘“””œ•–”—”•˜™––˜““˜••”˜–’–™–““”“™”“’•”“Ÿ““”–”‘’”–”“•–—–™””““••”•’“•˜–“”š•“™”™š›•••“–•’”žš“”””˜—š“”˜˜”™”™“š‘™™“‘™›”“’™š”“”““šž”›Ÿ’”š˜’“–—“—‘’“˜”›“›™““œš”“”“’““”ž“–›“šœ™š˜“™œ™“’™”œ”‘““˜™›˜”“’‘”š“”‹—¢‘—•””˜•–”’“““““ž’—““š“““”“•œ“š“”š“š•›™•“““—•“–“”œ™’™’•“•š›™›—“Ž‘”“œ™““—™“”“œ”“œš’”“™š““Ÿ–”–—Ž”“”˜œ›”œ”’”””™”“˜—›“™–“‘ ““ ›žš‹œ““”“•—•”˜—“•”“‘’”“•”˜™•—”™–”“”’•”““’•™““”’“™’•ž••“”˜–“˜–“•••”———“““•˜““™™•“––•‘“–•–”›–“˜‘–•˜“”œš—”•–““–˜”•”•“’š’“““”š‘””•“•“–•“•“’š“““˜œ—”“–“““““•—“™š™˜“–™”Ž“–”“”“–›•›’““œ”•““”™“˜—“‘“•—•—–“˜”–•”’”“™““““””“•–““– •’˜’•“–™—”™–˜“•”’”•••–—““—“’“”“›•–”“’•”““˜–“•™”–“•”œ•“™˜Š–••”’–—”’~”Ÿ“’•——““”“”—˜’–“““’—“’•š“••”•–”˜““”ž“”–››‘”–•™“’–˜•›”’•Œ–“““’•ŽŸ“˜‘”“—•–”’””“ˆ˜–•–—“š— •”™›‘”‘˜“—“’–““””•——’’“”“›”•š“–—“—Š“™š”“š•—““””š’“““˜•“œ“””“–”—“”—“™–”—–”˜—š”””•“›““š’•““—’““™¤”“˜”’““’”˜–•–“‘“•˜””œ‘˜›–“Œ•“–””’’”•”””˜™“””™”•”•””—”’“™š—•˜”•“œ˜”’—””••™˜”””””•”‘•””–•”””›”–•”™”••”“”“”’˜•”••”–”••••––”–••“˜”˜˜–—‘•“—””••–”——›”˜œŠ•”›•“™”‘••”˜”•’””•”“˜””••’—””–”””•””•”Ž–”–œ”•—–——••”””˜š“˜””˜’”•”–”•™”˜–”™””ž”•”—Ž–•––”•””””‹—“•”—”””•‰•š™–•”•“”˜—˜–””–””˜””“—––••”“š””’”“”•”•”“—™–“š›”••”™™—“•™’›“š”›•“Ÿ“š™”””¡š”““““™•Ÿ–”¢š“”›–“—˜•“–›•–“Ÿ›•”“š•’“’•••””• •”š“œŽ“›œ“š™˜Ž”œ’˜”˜‘•œŸ’›“•–žž“•’™˜–”•“˜”—–˜“”““–““”“˜•”™”““•““—“Œ™œ““—’’œ•™•“”“”•š““’›•š”™”•š—”šœ›““–”•›œ‘š˜“”“š““–›“”“–—““—Ÿ•“™“•“”Œœ”˜™”•””•–”•›•˜’—–“––”“¡Ž“••–”˜”’–”–”•”—””—”““••“—“–“–“•—’“•”–•”•””•””“”•—”•–•“‘”••”–”••”–—•”–“”””“˜”•–•—”–—”•••”•””“””˜•“’˜•–’”•••”’““–”“““˜”••––˜•“”••—“—•””””“””’—”““–””””–””–”””””‘”•–™–’˜—”””“”–•””•“”•””””“”“’”–”””•“•“––“”””””•—”›”••”•”””””––”•””™”•—“•””–“”•”˜––•–™—””•œ•”–””’’”–”“™Ÿ–“œ—”“““ž•—“™“™œ™”˜“™‘™˜“ž˜””””—™”““““•Ÿ“šœ“”™’—“˜“ž“““š“•“˜™™”“—Ÿ ”‘”“““•“–“›™”••š˜–“–œƒ›”““””–““œ•••™“•šš™“ž–Žš•““•˜•—”–“”“”¡“““¥—“““”““““Ÿ“”˜˜“›“ Ÿ–•——”””“𛓗““š–“š“–““–———““œ’”š–•™–—˜“““•““‘›—•“–™““™““ž—“““•¢“—˜””˜“”˜””’œ¡“œ—“’’“—›œ”“œ“••“——š“–“•——““““”–‘•“’•”—“š’”“•—•”““”“““›—‘”š—”—•”–“˜‘™•””‘–“•”•“—–š”–”˜”“––”˜–“’‘•—”““ž˜™•—’‘“™”–—˜“˜““£œ“••’™—”–”‘”–•“˜“˜““““——–‘˜–—“““™“–œ“–”˜’™“–ž˜ –—•””““—˜’““–˜™”—”’–”‘’•“”“—–—˜š™”“‘“•“–“˜”œ™“‘™““–™•–•—“—–™‘“‘“˜“–••–˜‘˜’˜•“’–™“•““œ“––“”’“”•–””•”––™“˜˜”—““•”—’˜“™•””“•’”““”““–”–˜—–——–ž•˜““—›•“””“—“”•‘”“˜–Ž“˜“””“”””•–“’–‰’–•“’—”›–—•–“——•“•——•“–’•“–“”š’’–”“š—•“•—“–““™“““’“—––“““•“””“”•”–œ“‘’••”••“““‘”˜–“”•š—“—•“–’•—•˜‘“•‘–••˜“–––œ“•“”™“‘””“–““˜•”’”—““”Ž˜•˜•””—“–••••‘”“—˜“—“–“———˜ž™••™“›ž’“š””“”›”—“››˜Ž™”–”–”ž•”•މ”“’˜›”““““˜Ÿ“œœ““›–‘“’œ“œŸ““•—”—“›—𔓕—£””“““•”–“•œ”˜š ’”“šžž’Œ““”‘™”š’—š™“•Ž•¢•™•‹ž¡““Ÿš–’”“““““—““›““’š“”“š““˜“©›–”šœš•’”“””—“™““—“’ “˜”’–••—”““‘–’“”™¤˜™’›“““”““£—’”“–š““œ¥“›””“““œ™–”—”””“•š•“™• ˜š“Ž£‘“œ™œ”•Ÿ“•“–’’”•˜“••••“˜“•”–›–“””—”•”œ—’““”––““”““—˜”•–••”•’”“””•’•“—•”—“•—““˜•™“”””““•””•—””–•“•™““–••–’”–“”‘”—••š•“œ“—“•”•”˜—•“™”‘™“”“”““—““–’“–•”–““”–“”˜““•““’“•˜”—••”””“–˜••’“•™•“”—”–˜”—•••“–‘•“•”–š–•’“”“”–“”™•“’—““•”––—”“–””•˜•–”“”“”–”•––••””““”•“””•–——””•” ™“Ÿœ””“” ¤“– š–™”Ÿ“˜“˜ž“—œ”“•œš””“““™“šŸ”“Ÿ“ ›““ž”“˜˜“ “Ÿ™”“‘’”Ž”””’”›”•”™˜ ˜“—”¢“” ”šƒ“—Ÿž¦˜“¡žœ™’š”ž–˜œ””£ ”œ•—““““““ž‘˜œ“““””—““—“ œ™œ–”•™›”¢š”””“šš“š“”˜Ÿ”š””•šžŸŸœš”’˜““—£ ’ž¢•“””›’“œ™““¢ ““–•“‘œ’‘”””– ›œ”‘”””œ””™œ–œ•š“’’’“šŸŸœ£“”““–œ””™˜“—••œ“•””š––œ•š•˜“•˜••˜‘”•”–œ”””““œ”œ™–”—˜•“›–“——”“š”—–“—‘““œ˜—•”•“””–•™••›”˜•››œ“š—”œ•“–›”“‘“•š›š”“Ÿ ›“•”•𔑕“”–𔑓“““›““ž–¤˜“”š“““•“””“Ÿš›•Ž“˜˜”“œ““””“š•”™“”’œ”–”•”—š›™““’”“—›™˜š˜““””™”“š˜•”“˜““™””˜™œ•“” ”™œ”™”””“•—–”œ–™•˜—“‘‘’“šœœ˜•œ•–‘“˜”’“”””‘’—“–”—–—”–”’’••”Ž’”••—””””““•ž––••–‘•”””“˜–””“–”—“›’””““’’”˜•”“”–”—•‘–”““›““–˜’”“””””“”˜•˜”“™’˜”“’•—––“–“–“–’•–“”““““–“Ÿ””•”””“”“–”“¡‘™‘’“™—“š‘”•””““”“““”˜“”™“’”–••–’•“””””•˜‘Ž’”™“””—”“˜”””“Ž•““—Ÿ•™–—”•š’“•—”‘“””•“——“•’•“””““˜–””–˜”•–”—˜–•––”“”–˜““”š“”’˜•–”•”’••”””•”–••””””–—•—”••”—–”••”™˜•–•–•‘”•–”””’—•“––“”——”••–“–“”””—•–“““””’“”–••Ž•”‘–“’–”–—”•––•’••š—”•”••””•’“••”–”””””•””’”™•“”–“–›••”””–”•˜””›‘”•’—”“”•’–”–”•–••–•–’–“”•”••”“•’””””””–””•”””™”““••”•‘””””—•”œ••™””›–”—–•”–“”””š‘•˜Ÿ”•“•˜™–“——œœ•””—–—˜”“™š”’”— ””•””—™•”“•”’œ””–•”—˜”•œ–”•””—”””–œ–•’••”””–•”›””›—œ”˜”¥œŸ“•›••”’š–“•–•š”ˆ”˜¡“š–”œ˜Ÿ“•œ›–”“””””ž””—Ž”—”“˜”””•”•›”œ™˜–ˆ”—–’˜‘•”””™š–œ“”–”•Ÿ”š””š—™˜•˜”–”••™—š˜—”•”š•”’“–•”—•””œ–“ ’’”—˜š˜š˜”’“”•Ÿ–•’œž£˜”’‘–”™”••‘™–”•”¤š“–‘”•””–‘˜“’”‘Ÿ“““”“™•ˆ”””•’“””””“’Œ—•“•—”“™”••“›s””’–”𔕓™””˜–”“•”–”•”••—–““–˜“““•–“”Ž””’“—––‘˜•”š–…“’”ˆ•–“–ž“—•“’””•””–”‘”•”””””“•˜”’•‘””‘š‘˜‘”“””“•–’””œ‘”••““““™’”‘””›–“•‘Š–“™”””“•””‘‘”””“—†•™’’–”’šŽ—”“””–‘”–Œ•”—œ••’”““””–•”‘Š›—•”•“”•”•••••••””•–”•˜•••••––•”™•“•••••••••••–”•–”••”••••••˜•••••”••••••“•–”••••”•••–••”•”–••””–•–••”•••”•”•••–•˜””•””••–••••””••”••–••••”–”••––•••••••“•˜“–•˜”•••—”•–•••••••••““••–•”•”•”••”••••–••—–“••”•••••˜•–••””••••–••••••–••”•••”•••••••••••–••–•••–••–•••–”˜˜˜•”””–•••–˜“—––‘––™•˜—™–•™”˜””•–•””•”“–“–’–••–š“”—”———•—š–™”–”—””—”˜”—––•”•–˜–––“•–—’‘”––¢“••”—”•š–˜‘•–˜”’˜”š”›–”–—š–”™••“•””–””–”””“’“—•˜”””•”–™””’˜—””•—”••›–””“•––”””˜––—•””””•—–—›”–———˜—––——”•”š–”–˜••””˜””——–—“”””•”——”–•”›’”–•––’—”•”–”•“–”š•–•’—–••“•œ˜””˜“•–•—–—”œ˜˜’–”’”˜–™˜”œ•“”•”–™”””””˜˜”˜––”–™’•”—”˜–—•—™”•”—˜œ”“•”””••”””••––••š’–•—”˜œ™““™”—”•—•š”–—›”‘¥“›•–Ÿ•Ÿ•“™˜”—••“—””“””“–”“—•—”””•“•”“’ž””•”™••™—•””””™•˜””•”–ž•™”–™”•••””––—––˜”“•””•”––”¥•–•”—’”“š—•˜–•”””—–—“˜—””’””›”•™–œœ˜™”• •”˜—•˜––•”•“•’—•”•””™”™“›™š–—“˜••••š•’˜•””œ—”“”““˜Ÿ•™—•š•’“•™“Ÿ””™”“–“›——““••ž”“••–“””—–••””–𔕓†œ¡”““””–•š•™—”“–šœ˜“›–‘™––”“˜–••”—““““˜““›—“••𔓓–“•œ“™š›”›“¢•™›“•“”“——“™““š•–—•™”•—•”˜–š“”˜”•˜—’——›“•“••“›••–““–““™™•–™–“–—˜•––”‘–“”š“•”•›””–“”¡““”™’•–—•••” —”•˜˜“–—•—𔕉™––”›“Œ‘•¦–›””•’—””•””›š˜œ’••™°””œ”Ä•“™—•£”˜š‚““©£«˜™–•—“——™–®š”•‚˜•˜”¡’ ’•œ•—”­”•š–“ –””” –ž•¡—”¥”—“¤Šœš–’”š”–˜””–ž¯™”–•”””“”—™”›˜—}”•¢˜›”””””••—“”•©”““›“—›—¢”––”¡˜–“–“¢œ¢–Œ““”›‘”””–”›¤””’–™“—”•–˜”˜š”›•“•‘–”›¤¦¢ª˜”–‘””™’•‘×”••”•›’“‘“””””““—””””•“”””–—”“Ÿ“’”””””””“””“›”””’”””–”“–”™Ž“’”””˜””“•””™™Š”“””””””“”—”“”š“””–™™˜’•”””•””™”•‘“”“™™•š–“—‘š””•˜“”–’”“””‘”””’”“’”””””•””˜”œ—™“Œ”™””•“’”“”””“””“”——“›””””˜”••”“”™”’“”–•””’“”””•”–”’“”’–””™¢”™“’•””œ“–•““”•”“”—””“”™˜š›””˜“”•”””Œ•”•”“š™ž”“•“•””’–Ÿ“›–˜š”’•“•””–’œ–’“’“”–’’“““••”’“–“”—Œ“•‘“’œ””˜••š“•””“–”“““”“•””•’•”––—”–“”•”“–—”•“™”—““™—“˜œ–—˜›’•›””œ••“•“•“’’““• ™•””““““‘““‘“•——–•“’Ž™˜’““““–™”•’“˜•”“–“•š•˜“”•“—™•”š–™—•••’““–•“—“˜•“––““–•”••—–“•“–”—–•“”–”•”“•””•ž—“––“””“””›”“•“—“–’”””••𔓖—”•””—”—’›–’––˜”’’–“”“”““—–””–•”–•”’”“””“•–’—“˜—–”“™•“–“””“”“—•”””“˜™––“Ž•™•”œ“™“™“•“–•–”“••‘”’›š‘˜”“˜™’–”•“•“’•““—‘Š–•“–“““”““”“•–’””“•’™•™““”“””••““”˜”“••“•“•”–˜•“““”””“’‘•—›“”“••“‘––”“—–““•“’’—”““‘–’““—”’’“”–””–’—”•“•Œ”“””–—–˜“”•“›•¢”‘™””””˜—˜“˜¢›‘˜•š“š”™˜“˜––”“–›—”“”””››•š–•“›™œ“’š“ –”“•˜”˜”˜™•””›™””””••””•œ” ˜“œ“–˜š“™œ—••‘’™””””›™˜——“|’›š“–”“˜•–”š—”—™“•““““–”•”’˜““”•“• “”›™”𠓉˜š•”””–˜“—“”  “›“–”•œ˜›˜š˜”•’“”••—ž–Ÿ”•”™““’˜””“žœ““™”¢•””””˜™–›˜”–‘“”£“”™žœš““•–“›˜››™””••”š•š“—””““—š“š›™–””’“•”“˜“™–”““™—””“””” “—™““š”“˜“™’”“™˜“™“š––””–——”“““””“˜”˜—””˜—˜•“™–“–“‘”‘“›—•–›“•šŸž“™”Ž—™“”˜™—š’–“’““˜“”™œ—“’™“”“•““›“™š–”œ—’›“”“”””—•“—“”𔕓𔓖”–˜–œ”˜“”™•ž’—™”““•““œš””“–™““–Ÿ“’š‘””•›—˜œ˜–”˜—”“™“”˜˜›š™œ“’ž”“•™••”‘“”“””—˜–”–”—•–•–””’“””—•–•˜””–—•—”•˜””””–••”’–•”•–”•–”“””““•–”–—””””—””––˜••˜——•–—”–•••–‘“”•”›“•—–—•””––—“”””•”—‘““–•–˜—”˜•”“—•–—”–”””””””–”––•”•”—•˜–”•’•˜•––—’•˜•”•””–•””“–•˜–••–••–•••””–––”””””•–•–”•–•–•”–”••”””•–‘“—•”–“•”˜••”––•———–••“’–”””••”•••”‹“——•““›™’”“““““‘““”•–•š’˜”——–•”š•‘““”˜””“•”“—˜—–“”•˜•–““›“–•“”—•–’““•™“““˜š””“•˜“•“™“—–••–š’–“˜–‘”–’’”•”•–˜”“•“Žœ›““—•”š–’•“•“Ž’“”““““–•”™••’“““”“–š“™—›š‘“™š––—–”““šœ””““š’––•”“˜’””•—“–š’˜—“‘—’’“’“˜–“˜“—–“—–““—˜•š—”—“——•–”—–“–’””𔕔–””™•“’™•“–‘•”–“”“›˜–’•”“”•“˜•™“š’Ž–““‘”’“‘“”‘““•“““”““•–—™’˜”’•’—–“—™–“’”™“–™””“–”’”•“–”“•”””–—”’•–’‘““•”˜”’’’“–“•“—›–“•œ˜“•“—“—–•“›–•“•˜““““—““—“Ÿ’”““““—““‘“š“™Ž•“”––”‘’““““Ž••”““”—•––’“–•“˜’Š“”˜••”••”“•“”““““–—”“™”““•“•’’“”œ“™‘”“”“““••–—•œ›—˜“‘““–“”•˜•”–“’‘•”–“••–š™”“•—•••˜•—•’––…•””““–”““•““™–””—•”•˜””–•“–’••–—•’“™™™”“™•©“•–•“––™–“—”“›”–”“’”••””—“ž‘–‘™”˜“““œ’’˜Œ“œ•““““•“–“’“’•““›˜–”””“““š“–˜““•—•”“–”І—š–“”“•”•”““˜•—–•“”””“”—–“—‘•––—šŽ˜™Ž“–“–•“•–•—“–—““–—•””—’“—™’—›“˜“˜•“•–––—•–’’˜“’ž•““–—•Œ–”••“–™–•””——•–˜™“•—–—••••”•‘••š–“““–––““•”“••–“—˜–•”œ•˜“•œ˜“—–•—“–”•“”‘ –•”•–“––”•‘••“–’–•”–““™——”“˜•–“””œ—“˜•š‘–”ž—ˆ˜••”—™™–™–“•“”—““—˜™•–––“”“•““““”‘•”’””˜œ”––““”“——™•““•”˜••”•“––••˜“•”—•–•𔕖›“““••“š–””“›—““’•—–˜”“••”’—•–“””“–•–––’•Ž”“˜•“”•””›˜•••”›’““—–”””“™–”š”–ŒŸ“’••’‘˜”™™””••š›””“””—š–‹˜•–“‘“š’“’•”“›Ž”•”•›“”’””“””•”•”•“•”•‘–™“”“”“’“—“•””•”ž¡—””– –•””•’’ž”””—“Ÿ—’“““”˜”” –’–œ”””–””““•’•”Œ”‘”—“”“”˜–•˜””‘•‘•”••—˜‘—””“•”¡˜•˜™Ž”“”•”¤™““”““””•Ž¡›–”“›’‘””””“•””’•”‘–¡Ÿ’”“‹””˜“™“””–™”ž”“•––“”””“’““”””—••”™“•””••™”””“•””””“–‘“œ”“•••“œ•“’’”““𔑔•—‘””›•“”””””””–••˜”™——”—”š”–‘•–”•””’“™š˜Ž˜”–—𛓖•œ’•”’—˜•“”“”Ž“”“”Œ˜””—”””•“••“‘Ž™Ÿ”•š”–˜™””””“˜’›“”’›•‘’–”•˜–™œ•”“š•“š—•“™““•”–“““š’“””—”“–•”’Ž’”•‘––“™”˜””“”•¡’”Žš“””––“ž•œ˜”“““”“˜“•”š“––—”œ”“™˜–™••”””“š•”“”›””–”–““•““•––••––”“™”–¡“Ÿ£––•”•—“—”Ÿ““”Š““•–“”•–”•¢–•”›œ•”“—œ“¢——•““’–™”•˜—“š™““š’“ž™•”›“•”–”“˜“’”““•‘““—•–“““˜”•ž“–Ÿ“›”Ÿ œ¤œ“—•””””—•’”œ”–¤––•–˜”™”•–“”š•—””’—›”œ”•“””“•‘—“”““œ™•–•‘“”—ž”••”““““–™––– ›š Ÿ“’œ•“—•”“£—••–“–”—––”“—–•’•“”•š““–••”•–“’•Š•˜”””“–”“•““”œ•™“•–•””™”“˜™•””–˜”“”˜™’“ •™”•—”‘”•—•–•–”“™˜”–“—“—•–—™”ƒ–™™•Š”“ ¡–“‘‹œ˜Šš–“’”•‘–“˜“”’“““˜•––•“”“˜“—–“𖛔ޓ›œŽ”˜•“”“—™–—“”–™””•”–˜••––“““‘–•’’–––““”“—–“••˜““”š““— –••‘–”’œ”’•–””“—”–“ ––œ—“””“–’–”ŽŠ˜••”—–˜””–”•”“˜•“”˜’•’””•–—”“•“–••”••”•”””””–—”–•“––—Ž”–”””“““–—•”””—•”””•¢•”•”˜”–“–””””—Ÿ•––””—•–”‘”–””–”•˜•”“”˜–”“–•–“‘•””‘••—’””“”””””•–•“•””””””•”””—”–””™—’‹“—•”””•“•–””–“””–•””–•••–•”‘”••—––’“•”•”••”˜•“””˜–””“–”“••”””•–•–—–”““”•–•“˜“••–—””˜•”•––—”••””’˜‹“•“””“•“•’“’”•—”•”•–‘™””Ж𔕖“–””””“”•“”“””—Ž“’œ””‹’”˜•””“”“”‘’£”••”–“””•“—’”–¡–“–”Ÿ——“•“’””“—”˜“’’›”›˜”˜•”’—™””””•”—”””“””””™–””’“””™“”–””—””–“š–•–””“˜–’‘””’“–”—“•—“’“•””–“•—“—•”“‹“•””””—““•”–’””“•š•”•”˜”–”–•”“•“”’•–’”Ž’•’”’©“”””“”„‘“•”“–“™”˜”“““”“–’““’“˜–”““•“‘•”Ž“˜”‘“–“““”““’”˜•’•”’“•—“”˜••‘””•“–”‘““““œ”””•““”•”•–“””’Ž•’“”›‘–˜””“’•’”—•‘“•”˜“•–—˜–›”“—”’•“”““—“““• –“”•“““”“––““”–—“’•–•–•”““““‘”—““’••˜”–““‘‘’••”“—•”–”•”••‘•““““”“—””“’—““‹“•–‘“”–‘’’”“‹•“”‘–”‘–˜“•‘“‘ž”“—”–˜›’•”‘”•’•”™™”••”–™˜”‘––“—”“”””–—””™˜””•™š”””””““–—••–’””‘–”™••”™––””™”–””“˜—”š••“”••“•—–”•”“”™”••’’”™”•”•”••’——””‘–•”’•‹‘•‘•”—–“™•””•“”œ””™“¢“”•›”””•“•–“–’’’”••••”•”””–”•˜“”•“•–•—”–””’––œ””–•–“””–”–“”””“””‘˜”•”’–””“Ž•’™‘–”•––™•”•”˜””•••–—™”—’”’––”’•““•–••–“˜•–”œž””“””˜˜“‘–˜•““œ’˜š”“›”“”Œ•”““““’”—‘”“‘𓙓ކ”“•˜”¡“’—’”“—˜£•œ“”•“”“–“˜”›š–™Ÿ“œš™—””—”–ž”“”Žšš”Ÿ“”š–›™—•˜˜’”˜˜–œ’“”““™““’Ÿ‘”“‘”””’”“““˜žŽ™’“——Ž–““““Ž•“•“”‡Ÿ’–“’“”•“’Ž™”“—““›–Ž–’𛓓“”““”—”“Ÿ›”“”›“•“ ’”“š™˜•›”Œ““•™“”’“‘Ÿ’”’™““•””˜™““““˜˜š’š—“””“”˜•“’–“––“““””––“”–˜”“’—–““’““•—”š””™“’”˜•““‘”“•““”“”•š’“•šš”’“”““’’’”“””“–”•–“Š˜ˆ™”ž’›““““•—™•“›—𔓗‘™”“—•–•“•““™““™‘‰”””™“““–““˜“’•“Œ“•—“’••““““–“–“““”•›•”“•“”“™”–“—””™˜”–—“““”“––””“”–““—ž”™™’“”˜•˜–•’“““•™“”‘••–š“““˜”“‘––—“”’”™š““œ˜“”’“”—“”˜”“˜”—””‘–“••”“‘›”””“”“—ž’“–’’™Ž”“••“¤’“‘–’œ“••’”“›œ”“”“’”“”š’˜””‘‘˜–“‹œ“–’”—”˜’’–—”œ—“››”“•“˜‘“”•”’••““”“”œ“”œ—¥–‘‘˜“”“‘“’“™“’“™”žŒ–Œ’””““—“˜“”œž’””‘˜Ž˜–™—”•–’‘“’––’Ÿ””””““•š““—”“›¨“’›’””™‘œ›••”“““”•’‘—•˜š˜“Ž…‘““’’“›˜’”’“–—™”—˜“••”–—–“–˜––˜”–”˜“––”š——““”˜—“””““—–”—–•”˜—””—•”–””–——•–”––•“”——’””••–“”•—•——“˜“•–˜“˜•—”•—”–”••–———•“–––““”••“•”””–—”˜–““•““–””——•˜—”–””””“”•“™•˜‘”–•”——–”””“—•–˜“”——””–™“•——————“––•”—–“——–—”””—•“”—˜””—˜“”—••—˜”–”””—•–˜—”“’””—••˜———˜—“’“—”—–——“•–””“Œ™§”“”•“Œ•’“••Œ”Ž“”˜‰“Ÿ“”–“”“””“”•‘•–‹Œ”Ž“’•–“Ž“–“––“””Œ”—”•—“••’•Š‘”“¦‘•“—™™£’›“˜”” •’’—–“ƒš“–š“•˜œ•””𔕔˜“”““•““’‰Ž•””““—”•Ž“ž›Žˆ¥“—›—‹–‘”””“Ž‘—”“”•“•—””“Ž“‰“”—••ŒŽ•”“Œž”““˜“›Œ˜•“’•”“¡¸””‘““–—‹’–‹“”‘”•••“œ|’˜“•’—“‘Ž“‹•–”—”œ•›””–“˜–—”‘˜“—–˜š””–•”•›•“••”“™”—””””“•Œ•™“˜”–••“–—“’‹–“–™•𔙕𔓔”–’”•—•”“––•—˜•˜¡™–™“•–“™”“•’”–——•–’Ÿ—”™“•”–”˜—’••—”™”‘–“—“““”•’”••“””””•“–—“‘•˜–‘”““Œ™–—””“——”˜“”•”œ•–”š˜–•“˜–”’–“—˜“—™”••“•”˜˜””•——”œ–”“–’“”••”––—™—š–”‘–“–“••œ–•””“˜“š—•”›¢–•–”™—–“™•”“’“•”—“˜“’”•““’—•“Ž““”“’’””“““•œ““—’”“”•”“•““Œ““‘““œ”˜—–””‘“•““””““˜““•”Ÿ––”Œ•œ”™”””•”“’’‘¡’”““Š˜•–“¡——‘’”›œ”’–”“““”—“””‘¬“““””””•“’’“–“•‘›””’“‘—›””””Ž”Œ“”•’””‘”““–‘”‘•’“’“”’•‘““”“’“‘—””˜“”“–ˆ“‰‘–•””’‘——•”“””“””“ž’’””“•‘”““‘”‘ “”“”ž“•”šœ“””“¢“™“—–•Œ™“›“‘›”˜™”•”–š””“““˜•›¢’•—‰”𙓖““™š•œ“œ™”“œ™•”Ž•“”“•“˜”™œ”–›”š—““™”“”™”Œ“’™˜š–“˜™——•Žœ“•”“™™—––’““““£““¡Ÿ’““– “”“—“•š“”–—•’“š™–‘Ÿ™”“”“’”•š“”–”˜”””•š›Ÿ™•”‘”•“‘™–œš”“““•““œ”“““““™Ž•™––“”›•™˜“œ””•”•œ””›™ ˜—•““›’“žš–¡“”””•“”•’—”–”–””“””–—”–”•••”’•• ”””“••˜””•””—’““–“––•œ•”•”•š””—”–’”““”””“——•‘•”˜”–•””–””––••–”œ”••”’–’”˜—”–“”“—””‘•”“˜•–›•””’’–””“”˜””’””•›‘”–”“”””“”•””•••”™”“••‹”“•”””–˜–—””“““’”˜”“–••••“”™”””–•–™–”š””””—”—•–”’’”””•“––•”””’”’••”™—”—“—‘”—–—”•”’”•”•••“˜‘•••”™“—””œ””““œš‘“–”–˜–”˜“’š“–šœ”“•”•””””“›’“•““•œ“’š“˜““œ—’’”–™›”””“•ˆ“”’””“—”–—”–š—”˜”˜˜Ž‘“–”›””‘“––˜š–”•“˜Ÿ“—•ˆœ™˜’”——•š‘’””“”—“”™Ž’–“’š”””““•“—Œ™—”™™‹—”””””Œ”™“”—‘“—“˜”“–˜™—™—”‘“““–žŸ›˜““””””Š˜’””™“”“–“š–‘“”“•š’”•™”””““”“šœ™“’”“œ””‘™•š‰›““”“¥“’—›“’’’†¢¬“‹ ”™“”’Ž“šž’•¢“’™Œ¡”“’““Ž—”œŸ““”’Ž’œ™’‘—”ž“œ—“”“—𙓗“’““”’“”˜”’”—š˜“–™“™’°’š“–|’•‡š˜““–™“¥‘¡™™Ž““¨£•ž›“’’’š’’‰¤Ž‘“•“““•““–’™ž“˜“››š˜—““”“‹‘“š’“•š“—“–“–𛓔•“‘™“‘™ –šŒŠ“““™’’ŸŽ†”“‘›“’›”’¤–“”“•¡ŸŽ›“Ž’’š’•—š—“œ›“ž—Ž“Ÿš”—’˜’“˜“Œž’ˆœ“““““º¥“‘—¡‰’“Ÿ‘•’¤™§““©‡˜“’’’“„Š”ž§‘“‰©’•’’ž””’—¥’œ“›’’“±ƒ’—“““““‹“ ‘“›‰›­’ž›Ž”•Óž“𔓢“š“œ}™Žš”¢¡”•¦¯‘œ’“’‘›““‘—^š•”™’““•“†“…ž‘›“’•˜¹Œ“““““’¨’“””•Š”““Ÿ”– ’•““˜Žyž–‰”“““–‘“uŽ¡““Ž‹“’ ž“ŽŽ¹““™§¢£¡”“‚‘“”“˜›°ž± “®†„“–—’ž”“’”¡”—•†“”””“““š˜˜“›œ•’ž“““”ˆ”“‘™”“”›•”““““˜¢”•–‘“——˜“›““˜”’˜Ž”•“‘™…”“ž“”“Ž“’•””“˜“—š”—“Ž‹“‡‘µˆ•Œ”›“˜Ž“’šž—“—˜¢–š“‘—“““Ž”–˜Œ“““’““™‘””‘“˜““”““”œ“•’œ—z””˜¡˜˜““”““ž“’““Ÿ“Œ“‘”“˜¡žš”—“”Žž˜Ÿ¡•”“”—‘“–™™“““œ”“Ž“˜ž•““ž›“’““•““—“”––ž˜˜”‹•“•“—”™’”•“ž“‚‘©—’’‘‘‘˜£’†Ÿ¡‘¡’”‘š‘‰œ“’Ž¥™’’‘‘’“š“ªŸ‘Ÿ”‘‘¬“’™’“›—”’¡–’’¡œ—‘›’“–’“’Ÿ’—¢™–•”’ž”’“”ž’•’“‰’ž£‡›’”•šœ”••––’’›‹’ ’•’’’‘—‘™—‘’•’’’”’’ž’–˜”›Š‘———‘ ’’“’œ®’¤’’•žŽ’™‘’¡—šœ˜¤’‹“’’›™›ƒœŽ‰’“’¢“’žž‘“’š’‘“¢’™ž–’’ŽŸ•𢖒ž‘’’—’‘œž¡›Ÿ”’ŸŽŽ’§Ÿ¡–‰Œ’’Œ‘’ «‘”¤’“‘‘¢¡’˜š¥}•‘•‘Ž›¸›”’’•œ©’‘‘“““’›‘‘–“‘”“’œŒ š“™’˜’œ’’”œ’“’“”““‘™‘˜“£Œž ’Ž™Ÿ”ž‘˜“––‘š‘–¤‘š¨{Š‘¥•Š““ž’”  ”œŠ ’”’‘˜‘‘”ž’’–‘’’‘“’™‘Œ š™’œ™‘s“’“’’Ÿ—’—’˜”Ž›’ “”£˜ž••¢’†Ÿ’’ –Š–––£“’’¥‘‚šˆ“’š“‘’©°‘ £˜”’’Ÿœ¢žš’ž–’‘ž’›Œ —’™„”‘—•’”ˆ¢’“•’™‰˜‘”’“’’“–™’˜žš”•’’–Œ‘ ™¦““‘”—“’’’“’•‘œ’’”šž’˜“’’–‘•˜’¢“‘™Ž““¦§œ’‰“‘“““’™’«““ Šš› “˜¢•”›’˜””žšž’¡“Œ‘¥”—œ•Ž”œ“•”›“£¢”’•’’Š’’‘Š˜““’““‘““¢’“˜ššŒ’•”›§ª“““’’ ”’‘““™¨•”“š””— ”›˜’“˜‹‰£š›Œ““’–’’Š™œ“’”¡“’¡Ÿ’™–•’“•—–¢— ““ˆ‘•’”“”£”‘™¦¡’‡‘¨’•‘™—“Š’“’¥•‘¡›’’‘‘£’¤˜ž›’—‘”Ž—›‘»™‹’Š™ž’’‘’’››“¢˜‘‘ž¤‘¦’›”‘••‘™’•”Œ“’¡–“•’‘›”’‘—’™“ ‰™•¤’ޤ˜••§’œ’›œ’œ Š’€” •šŸ ‹™’‘š˜”—Ÿ—’“’‘—’“››’‘—’’’“‘•’ŠŸ˜Ÿ›“š——‘Ž’““’—’¦’’…¥“œ’¥“”¡–ž–”’Š—’‘𙉇‰Ž¡“‘’š”’‹”“’œ›’’œ«‘ž ™““𥓖£–’Ÿ”’’Ÿ‘“ž‘‹™’‘’’ ž—œŒ’‘’‘œ£›‘‘– ¤‘Ÿ š‘š‘•™£—–’‘›¡’‘‘‘™”’“¡’£—žž†•¤’ž˜‘–‘¤”‹’‘‘…“•‘’“’“™‘Žšœ‹ž¡™‘–•œ’¥‘–’–|‘’™žž—‘„‡’–—¨‘‘žšš‘Ÿ‘‘£‘¡“”“£‘‘‘”‘‘ž—••‘Œ›—™’‘’’‘•˜‘‘‘“Š‘ž‘’•˜— ›”‘’‘•ž—“•›ž‘‘“”žœ‘’‘–‘ ¢“ “‘”˜—–š™›’™’‘”‘“““’’‘Œ‘œ ”™–¡‘’—“Šˆ‰““““““›Œ”“™£“ž“ “œ’˜–’Œ“†““•”˜”““““—˜““—’’˜’“ˆ‘“œ“’œš””“˜œ•”“ž›”›“““””“™“Ÿž““œ—‘“š—†ž’ˆ“¢“ˆ’š’–—“•Š –†’ˆ™–Ÿ““’Š•“ž““““–““›™–“’œ“““•““ž“¡“›Ž“”Œ•œ˜““““Ž“‘’“˜™“ ““’“˜• š“”‡“”–š‹Ÿ—“’““™““•ž““˜œ“’˜£“™“›”“•Ž “™‘“𔓒ž“”•œ™£–œ“—‰–“–™”˜Ÿ¢““”“’ Œ’‘“““’‘˜˜““š˜—–’™“œ“’™’—™™““–”Ž“’’’“œ–“‹““›•’š“˜‘‘œ’™““”‘““™”’’“‘‘“““•“˜”Žˆ•—“†—“š““–›“–‘–—•“” ˜š’£’“‹“•˜˜“˜”’“‘“‘“’’‘••—“”“’“’•”“›’––’“˜ž“ŸŸ˜’““”˜œ’’’˜’•”˜”“™—–—–™’™š“—™“ž›‹“““”“‘’’““š“’•‡“š“•“’“œ”’˜”“”—”“ “˜•”–“–˜—’Œ“œ™—’”“‘«‘Œ’‘‘§¡‘‹¯†¡‘™‘¤Žœ“c“ª’ˆ’“‘’’‘ž“–¢‘˜¢‘ „——’Ž’Žš¡“‘«©—’‹‘—’’’‘¹–‘™••’‹’ž•ž‘”†‘ž‘‰Œ™œŠŒ‘’”£’’‘†š•†¡‘šž’”¤’‘Ž‘‘ž‘‰”Ž¡‘’‘–‘‘©‘˜ž•™‡‘¤¦“£œ‘’“‘ž‘–‘’¥¡Žž‘‹’’“˜§ ™–‘•”‘Ž–”£·•ƒ‘‘’‘‘”›ž‘‘›‘–•‘Œ’‰•’‘™›†‘™’›”‘•‘‘š´©²ª•‘‰›œ‘œ•¡ž“‰‘’Œ’™Ž”’†—“”’’œ–’“”ž‘›”’’’‘’“’¤‰˜“““Œ•“’’””‹’’–‘’›’‘“—”‘’‘‹”’“Ž•““Œ–œ“™“’“”“‰“ž’‘‹‘‘‰Š“‹•ºŒš’”œ’—Š˜˜•“Ÿ™’š¡™Ÿ“•˜’‘•‰“•“–›“’–Žž„”’–’““’”“Ž’¢Œœ„š““‘•†ˆŒ’”““…—’˜““š“Ž’˜’“˜Š““™‘“–€• ¤ ”““’‘‘’£‘£”“™•““‡““‰““’’™“Ž‹“’•””“Ž—¡Ÿ¬š“Œ‹“ŽŽ‘š““•“——’“•““““’œ—“˜˜šŽ“‘“Ÿ’¤¡’Ž˜š“’”—Ž“““’“˜›“œ”“Ÿ™—“Žœ“ž“‘’‘š“””™“—””•‹“”š“’”“”“š“Š’›“››““ŸžŒ””¨“š“’“–‘›‘““’–—›”¡‘Š“£““™—”•¤•“““““““‘“•““˜“““”““““š•œ‘“—“Œ’™““““””“˜’“™“’‘“”’•‘”‘•š’“•’“‘¡•Љ••¨““”“’’”‘““•‘““œ¬“­‘–““’•¥‘•™””“–“‘Ž““’œ“¢†’“•˜”Ÿ’—’“—‘—–™’’‘‘•™”‘…˜§š‘›‘š ”{¡™’‘˜¢‘‘‘‘•ƒ“˜”‘›šŽ‘–•‘‡Ž—‘–‘—˜’’–Ÿ‘–’‹‘‘‘š‘˜– “ˆ¦ ‘£–’‘—–••§’¯š„’ ”“’Ž”’’™¥‘‘‘‘š‘‘•’“¡‘’œ‘’‘Œ‘‘‘‘™Šœƒ‘ˆ‡†–‘‘‘’‘¢ ‘™’ˆ™‘Œ’—“™œ¡¤™‘Œ˜’ ”š˜œ˜‘’‘‘•‘¤›‘‘r‘£Ÿ”‘˜ž™¢™’›’ ’’—™‰ž‹’‹œ‘›–œ›™“‘“’œ—}’Ÿ““’’š’•„š’›’š’–‰‘i‹Ž“‘•““’’“‘œ“´–‘’ŸŒ’©’›•‘‘Ч’’œ¡™““¡¤‹“š’‘”’“’«’›“—Žš•’¨™š”…’š“Œ’šžŒŒš’…Ÿ—¥œ™‚›–’’’„‘•¡’’’’˜’’““¼—’Œ“’“—’’’’—›”‘œ’”£‰ª’““‘š “˜’“›–“›’Ž‘“’”› ”“œ™’‹ ‰œ”’’’“®‘’“’•’’‡“’’–©’‘•™”“—˜•’™¡ž“¤“’‘’–¬¢˜Œ¢˜’ª•‘’ª˜Ÿ•š’“—“—•›“›š“”““˜œŸ“”£–Š˜“›“˜’”’“šŸ”“Ÿ˜•“““”ž“’—•’“š‘“ž”“•–’”––‘ “𛓓“›’¡“¡“‘˜•““˜“•š–š™–šœ“™—–’£“”–“ŽŸ ž•””›‘”•™ž–”“—ž¢“ž˜“”“’™““™Œ¦˜’”œ“““•“š“™›“˜”“–›“œ™“•””•“’œ’“’¢”•”š“–‘™™Ÿš˜“•’“’ “ šŸ””““”“”™œž““¡““–“™›˜’“””›š›š˜““š•“œ“•›’“¢•’“’˜Ž“•—“œ˜•’“–‘’—–‘™‘’–—‘Ÿ“¥ƒ™›œ§™Ž‘‘£—˜‘‘‘ž™’Ž–Ž–š‰‘•Ž¡’“‘–•™‘‘Ž‘‰‘‘ž‘‘‘š‘‘•’–—”Ž–„—“‘Ž¨š‘Ž—š‘Žœ—”‘¢”xš˜œ‘’•“’Ž…¤‘’‘‘›‘‘Ÿ™zŽŽ’Ž’‘‘’‘˜–š“— ˜“’€›“‘’’‘’£’‘—Ž‘‘“’’¢”“”Ÿ‘ˆ›‘Ž—””™›—œ‘‘‘›‘„’‘‘ž’‘›¡Ž’‘Ž‘—•–•‘‹›’š‘ŽŒ–Š‹“𑔤’Ž•‘Œ–‘’—“—”d’…”““’’›“““—˜’˜’ £’’ƒŽƒ“’‹›“’’’’˜–“•“’š™’›’–“’‘“š”’“’“””’”’Š“•““•’“’•“˜‘ –’˜“” ¢‰•“’•›“–•𔑓¨”—’•Œ“œ‘¡“‘–”’•Ž“”“’ˆ“““’™‘’“’““‘’“Œ’˜˜‰’›‰Œ ’˜“’“’š§’š‘“˜“’’‘“““˜™““’š’Ÿ™…”š‘’“““•–Ÿ““•“’˜¢’Ž’’“‹˜–“—œ“›’’•’’£“™¢˜“ ’†’˜‘” žž’’ž’‡”~‘“˜’’‘‘––‘’›‘¡‹˜’›‘ “ž‘Š¡œ’‘‘˜•“’’’’”–“Œ’‘—„‘Š˜’‰›‘¥—“’’“–Ÿ“’˜’•”’’’’‘“’’’’–—ššŸ’’–›’’›’¡“’¤‘›”˜˜’›—Ž–œ’©‰‘‘‘’ž˜•’’’‘–’’——”š‘œ’’’•’’œ‘—›†’”Ž‘ œ’““’™¡’›‘’‘–‘’™’“Ÿ›’ ¡’’–‘‘ ˜Ÿ˜•œ„’’’’‘‘Ÿ›—’’š’’•‘˜”‘’’’Œ¡˜’š—“‹•’’ž’’–…‡—’œ¥Ž’•›š““’’›’“•𒆙’“’’–™—’ ¤–“›‘›“œœ¡’Ÿ—•“’˜ž’’’‘“ž–’“•‘“˜¥‰’–’’˜—”‘ž”‘”’’ ’’—‘“‘“’˜“’“‘’•—“£™“˜“–°™’š’–’“™’—” “—““˜–“–™¢–Ž““š™––ˆ–“”’‘Š’’ŽŒ˜•“–’“’“““’’™£œ“’——“›¤’“““”’œ’š“”™“£“•˜š¡Œ“ˆ›““š©¡›’’““–’’‘š›’’™•’’™“›•–“‘‘ž™Ž“”š“œ‘“˜“““–š•œ“…”–’™’••’”’¢’|‘ª•““‘‘“Ÿš’ŠŸ˜¡›’ ‘—“•˜‘ޤ’‘•¢œ“‘’’‘••“¤’‘Ÿ•“‘¥’’¥Ž“™š“•’–›“’¤® “‰’’š’’‘¢’ž’”›“¤’š •Ž ’Ÿ“—‰‘œ¤œ‘›’ª™Ž‚“𖦓’“‹š‘•’‘’‘¡’‘Ÿ–œ¥‘’š’’’”’“§‘„›ˆ‘›¡‘˜ ’’“’¤ ’—‘’¨ž‘‰“–‘•š™«ž¢œ’–’“œ”ˆ££šš‘’’’z¢—’’™’‘ ‰‘ž¡¬“’•‘”¢¨—š’—š‘’¢‘’§˜£¦œ’‹Ž’’•› œ‰’’‡’Ž–‰‘‰Ÿ’’‘‘ ©—’—š™š’’’¢šœ‘€”©’‘Ÿ”“’‘‘‘’“˜ž‘‘žžŒ‘”™’™—‘•œ’—’›——“’“z’‡’’£‘“‘’’¢’ ƒš”“’šš‘«’”’’•’š’Ÿ’š’ƒ‹Š¯“œ“¯“ª’©§‘˜ †’’‘•’’ši‘Ž’ž’’’‘’£‘’—“–‘’”“—Ž’‘“‘š’Ÿ‘’‘—š’™”’˜š—ž’Š’‘”ž‰‡š”¡’’‘‘”™ž’’‡Œ’’¤‘Ž›”’’„œ—˜š–“z‘‘’’“œ •˜–’š’Ÿš£¢ƒ’’“”š“pŽ˜˜‘šž‘”Ÿ”š—˜‹“Žvœ‘˜Ÿ—‘‘—˜‘Ž—”œ‘—£Œ™œ’ŸŸ–•‘ž¢“‘‘™‘œŸ”–’ž™Ž™£Šœ“¢‘Œ£¡˜”–›£›žŸ‰›—‘‘££Ž˜‘™Ž™œŠ€–‘—‘‘‘©Šš‘›…¤¥°Ÿ›‘’‘›¡—ŽšŸž•‘›Œ™–—£™‘ž—†˜ Ž‘™Œ–Œ‡–¡ ž“…“’•™š•–™‘’Ž‘ ‘„¢š’Ÿ˜•ž“•˜”—Šš’”“‹Š‹’Ÿ–““““•Ÿœ“•£ŠŸ—“˜“¢“Œ™“‘ ”“–••””““”¦œ”š˜““—œ§““Дޛ•“–˜”¢“¡¤‰”“™’œ”š“•‘•““¤”œ™–‘”¤””——•¦“ž”›—’’¡šž“‡ª„•‡”¬‘›””œœ”¡“‘”“““–””œ‘ªž•“™”””—””‘“œ Ž•—”Œˆš™Ÿ¨””“”—““”ޤ•Œ”––”“˜—›Ž”ŸŒ““‘’“¦—¢–”””™“”˜•¬”“ £”“’ГБ“””’“—–•¢”›““Ž“”›”‘“–”“—Ž—“”—˜š““”’Ÿˆƒ’’“““’’š—’’––˜›“’›•‘‘”’“‘š‘““’’’–š“™›’‘’š”’ž˜’—–’‘•‘“œ’¢Œ“’¡ž€“’’š““’™’ž—“’œ—‘’‹“©œ“–’¤“’™’‘ šŠ’”˜š”Ž“œ“™’“™™••’’’’™’’˜“‰‘‘–’’’’’’’™”›—“”š‘ª”¢’““’›’š’“”œ‘’’‘“““—œœ•–“‘’“‘˜šŸ••’’’š’—•¡“’‘›’’•—’Ššœ”““š•™™‘š“ˆ”’’›’’¤¢•¢¡”’¡‹’”’›™¥–’“Š“•˜›‘™›““’’œ–𓛢ž•œ’“š‘–‘©››““¢‘“’‘’“¢˜“—”“’š›’“‘’•’”“›•ž“›““¢•‘’•“”’”“¥“šœ•™”‘•™’–œ“›‘“ ”œ—’™¡˜¢—“—“™¤“›˜˜œŽ““›•‘“’’–“’”’’žš”š•””““’“’¤’•—Љ“”š‰ž “‘“’˜š“’‘“’¥””–“œ™ ˜¡ž“™”““›““ —’““š“’™›—““¤£““—ƒ“›——’‘•™œ—œ“’”“˜“”›“•”Ž“–“–•ž–”™’“‘”‘“˜“™™”“““–›““™Ÿ˜”“˜“Œ˜““””““‹ž•”“””–›”˜—““ŒŽ““”“•””Ž•–”––’””‘˜”™“”Œ•”“Ž”’˜”•˜˜’“‘’•”˜”‰••™”•šš””—ŽŸ——’‘žŠŒ˜”–£Ÿ”˜‹““““”“–‰·‰•“˜“””˜””““™”•‘’”“š’—“”•””“‘”š””“Š““”””•–’”ŒŽ””“”‹¥”™‘Š•“””““­‘–””–—””œ‰“”–•”””–“’””Ž””’““•˜•¢–’”™“Œ”™˜•“Ÿ“”ž’›˜²’ž•““’’™™•““žš–’’𡤑ž¢œ“’𛋓’’“”—–“‰›’’—’’¡“š”’˜“’—“œ”¡““—“’“’‘”’’š“˜Ž–Ÿ’’’›–’™’ž“œ’œ˜˜•™“{œ—•˜Œ¢–Ž“–•”˜ ’‘’’™’“™Š–Ÿ’“ ’““‘““’˜—˜¥‰“˜–’¤œ“”””–”’–’“™™–ž““˜“—œœ£¢’’’“’›š…£”£—“““‹’“‰›““‘“’–†’—”“˜–¡–™œ•“”’”’¤’–†“Œ•œ“‘•–“š˜Ÿ’“‘‘ œœœ‘’‘“”‘’“Š™‘™‘™Ž†…š’šŒ“‘‘‘”¤’£‹‘Ž“Ÿ˜•‘ ž’Œ›“’‘œ‰’‘±¥“ˆ‘‘’’Ÿ‘£˜”•œ“–’}™¥–“‘¦“”ž˜¤–””‘œ™¬™––‘£ž•‘•“œŽŽ‘”‘‘Ž‘’‘•˜ž“’’‘”‘‘¡‘œ—›˜’™™£—‘‘“‘•‘”‘’Ÿ«”–‘—““œ•¥œ–’”–‘“ Š˜“œ—‘‘‘ž‘—”œ“‘Ž£‘‘›Ÿ’Ž•’“ž˜šš˜—’Œ”‘›‘’¡¡ŸŽ§Ÿ‘ž‘š‘›‹¡”Ÿ“‘’‡’––’˜’““’’‘™˜’Ž•’˜’’”“’–‘©‘“’‘”“’’’’’”Œ’˜–’’”Ž’—“’–œ“’š’”’˜™““–’™’”“’’‘““›’Ž—’‹™’—›””’œ’’œ“—•˜’“¡•ŽŽ‘“•“…—““•”’’‘’“’’“”—•“’“—““’’“’‹’‹ŽŽ’Ž‹š”Œš’’“’–•’”““’—’Œ“Œ’”’–“š“’’““”›‰•“’“’Ÿ“‘“Ÿ“’›•“’•’“”“”“™‘˜š–“˜”’“““—œ–‘’”š’š‘’™•™”›’””“Œ’¥“¥—“““’™’¥“‘››•¦“œ“‰‘”™“ ™Ž““Œœª”““““–—”ž”’“š•˜“œ‹“‹™’’•Ž“Ÿ“œ™“““’’“”—““’””“‘“Ž£“›š’¦’­””¦“–“t“’—Ÿœ“—„–”‹”°›‡Ž““ ”“›‘†’”““¢““œŽ¿—”’¡“““‘““—“¡‘ •‘“z‘““““™ž“£““‡˜‘‘”¥‘”˜¦››“ŒŒ““ˆ¢¢Š—™“““—”“šœ–”“š–““Žˆ“‘¤‡’“‘”—‘˜œ’”’’“š“’”˜““†“›•“¤–“““‘‘’››““’’ž›“’“’œ–“‘’’˜”’–Ž“’“•¤”“’““—““’“’…™£’‘““šž’œ““—“–•“”“‘ŽŠ“—“’œ““’’’™”–‡˜•—“𕤒”’“–’Œ‘¦¢“ªˆ’’•‰’Ž“•¥£• —‡“’’š’“–š‹—’’–“““‘““‰’›œ›«“’Œ”¥›Ž“””“—“˜““—Œ“”’˜““”•™“““™š“‘”“˜ –˜Ÿ“““˜‘“–“©““›““’™‡’Š•œ”“””–—™“}–“’Œ’“Ž””™Œ”“‰ž™’”“¡§’“Œ”™š”’“””””™“”•›˜‘™”œ”•š•”•››””–™’•””••—”•—””š—””œ‘•”—–”“”—˜•”ž—Ÿ””””“–””””š’–”–•–”’˜Ÿœ““”Ÿ•““–˜š›•”‡œ™”“˜’–𛓔–’””˜“•””””‘”””•™”””””••” ”“’—›’•˜¢–ŒŸ™”•”•™–””•”œ•˜”—–”—•Ÿžš”•œ””•˜’“œ›š•””‘”•”œ•””‘ž””˜’”œ”””””˜–›—”•”•˜–”›”“”™œ”““”—›”‘“—›–š””’’˜œ’ž‘‘’‘‘ Š‘‘©—–«¡‘š‘¥•È–’’’™¡‘‘‘’•›’•™’””—‘™Ÿ‘›•Ž“’’™¦’‘’‘”’‘“‘‘ƒ™Ž‘££™‘‘ŽŸŸˆ‘™‘Œ|‘ ”››œ’«—“›“–——’Šž““•„‹‘’£‘’¡‡œ•‘’¤’’““‘”‘¡ž•”’¡Œ–’‘‘’—œ™’’‹‘¡’¡’“—”“¡—ž‘‘Ÿ’‘…žŸœ—™’‘”“ž’’’˜‘‘˜¥‘ ¦’‘’’¨Œ•›•ޒ𙑒¢’’–˜Ž‘‘‰«‘”›”–œ¦‘““’›‘•‘–”’’‘‘˜™¡‘—Ž’˜‘އ‘—Žš’‹–™’’‘’‘𒦓‘‘•˜‘ž‘Ÿ™Œ£”’¡š‚“’¤¡Ÿ“’’’”’’‘ ‘Ÿ¡ ’œ•—‘š›Ÿ¢”™”‘Œ°’œŒ˜‰’ˆ”“•’ˆ“’’ –”“œ‘•‘‘Š‘‘’’Ž”‘‘‘’‘’‘‘™‘•“¢”–‘žž–¢™”’’“‘—{’‡‘’𦒒“’”Ž‘¡š’’—‘‘‘—‹š—‘‘‘’¢‘‘“™•’’›’‘ £‘€‹”’‘ž‘’–’Ž‘‘|‘˜œ–š¡’‰’¡‘¤š™”˜’“‘“™™‹“Œœ““““ ——“šš…š“˜“š“—˜’„“‘”’˜Ž—”““““ŸŸ“¡ ”’’ ”“•›“œ’“’Ÿš“š“Ÿœ“”“–›Ž”–““˜“”“¥“¡ ”˜—œ•“’™„—”ƒ“Ž”›«“›˜–¡”“Š–›Ÿ“”‹‹ ™“’ž—•š‘““““—““¡–£“’“““•““˜“š–£›…“›š”Ž ¢““““’”“‘“”¥’”–“““”™žœŒ™˜““—““ŸŸ ”¬—Œ“““£““£”ž““™–““š“’›’“”œ—š–™œ”˜““‹“”›ž£¢“š“œ–“ ›ŸŽ ““–’•Œ‡‘¢›’’‘‘œ¢¥’Ž¡–ž—’‘‘—˜‘ƒžœ’•œŸ’’‘’˜—’“¤’‘™’§‘–ž’¦Œ’™£’’¦›š’‘‘¥š“–’’’’‘š‘¥—”“˜Ž¢›’’œ‡”ž’•‘œ‘Ÿ—” œ’™‘—•Š™–œ’‘™›‘¡‘”‘‘’š’’¢•¯–”‘©’’’”’‘¡‘šžœ“’“• “’’’’˜’™’žž‘’“–•“˜“—𣠒¤™‘“‘‹’“˜¡¡’’’’‘“ŸŠ’’™˜’‘“ƒ‘•˜‰“’‘™’°š—’–‘ž’–¡¨˜ ¤’¡•‘™ž›—Ž“‘’—‘™—ª‘“¨’’‘‘Ÿ‰™’‹™”™¦‘“‘“‘’–—’‘”Œ±’‘‘‘’—“£Ž‘‘–”†‘¡‘‰“‘Ÿš’•’™“˜’’†¦ ’}’‘“’’‘‘¥’¥š‘¡’ž‹«“‘‡‘…’§˜’˜Ÿ›’Š˜‹ˆ””’”’’’•”Œ‚’‘’‘œ‘’¢€®”‘‘ž‘’’˜’’™‘«¤…’˜•šs’’’’™š‘§‘’ŽŽ’“’ž¡–˜•Š’žš’•¢›¶’–‘‘’’‘’šœ‰’’›–’‘•‘‹©”’’‘£Ÿ£˜›’Œ‘‘‘¡ž‘ŸŸ‹’uœŠ‘²—•†•‘’œ’–¢¥‘œ“““‘‘Ž–œ’™š¨–’–’˜‘—œ‘®œž“’‹š•“’’’’˜–’’–“‘œ‘¢’“Ž’˜“‘‘™”•š“’•““˜—„”‘’’’“’‘’”–“—‹–‘š“‘ž–“¡’š“˜…’””›–—’µ•ž•‘œ›‹Ÿ’š’““ž‘šŽ‘“•’“‘’’”~…•“‘—’“’’’’–’’•š–’šœ–™ž’““‘—Œ’“‘“–˜‘—“™“’Ž•’™“•“’”Šœ‰™“˜•’’“”’”˜”“’™’’–“’˜˜Œ”’“™š’•“““¢“’•’““œ“–™’~•’•™”“’“‘’¬•¤‘”’’‘‘‘—’—–––’‘“’¥š‘•—ž’˜’’‘‘’“’—™‘–“—‘œœ’˜u’—“”œ’“Ž¢“‘•ŸŸ’ˆ’‘–‘’‘†’ž’š•š˜˜’”ž¡’‘’”–‘Ž“š•š’•—’™‘£–™Š›’‘”¢’ž’•‘‘’’‰€•‘‘ž’’’“‘’Ÿ‘•—˜“•‘œŸ˜œ‹’’’’–’‘ ‘’‘–ž’Ÿ’”–”˜Ÿ‘”’Ÿ‘’”˜–£˜ ‘’’Œ’’›ƒ’’“˜’‘˜‘—•–•’‘£–›”–”’’‘‘’’‘–”›–¢•’Œª’˜•˜•‰’“”’Ÿ§ª‘ž–’’‘‘Ž£’Ÿ” Ž’˜’””‘–œ’‘Ž™’”’’’’”˜“œ—’‘—‘ž‘››’›‘‘–’‘œ’”–™“’˜˜ˆ“Œ’–”“‘ž’˜“‘•š’~—”‘•‘“”˜‘—›‘š•’¥–…‘œ’Žž•™’“™¦•˜¥Ž’’’’’—Ÿ˜‘‘‘“’’’“’ž‘—”¢˜–’™ ’›’“”’•š’’’¬›Š’Œ”™›ŸŽ™œ’‘¢’™•𛑓’’”“•¨“’ž˜’’•ˆ’••’’“”–¡ ’’““’œ’››£š—œ’Œ¨’˜˜—“‘“‘“”‘¢’ž ““’’“–«“Œ££~¡“ ’‘¡’¨ž“’Œ¬³”““”“Ÿ“•””’Ÿ’’˜Š’”Ÿ“ž”“¤š‘”“˜¤“““•““’”’ˆ§“£Ÿ™Ÿ¢“œš¨“’““““’™¤©›“e€——”‘ •£““”ž™“œ™—“•“”—““¡‹˜ˆ‘‘¡“““‘’“ ’›“ž–…“š¨‚œŠ“””“•“¥’“‘—“–’¢”•ŸŸ•£”§““ƒ’‘ާ”œŽ”““›””¡žu““˜–““¢‰’š¤ˆ”“’ž–ªŸŽ““£‘“’«’‘•–“‹’“‹š“£¢•—œ’“–“š—ž’”““’’”ž“˜˜•œ““‘’˜“’¤—”“’™–•““’““—“š‹’’’–’’Š“•˜’’•™“ž“™‘Ž““•¢Œ”’“““’”’‘“ž’’™‘ž“›“ ™•–“™’’“’œ“–Œ‘™œ“˜Ž“’“’’˜˜¤“’žŸ–™•’’“’“““Œ––˜“’™“““”’“ž’”—š“‘“™™–•˜““”’”™’š’“š’‘“•’“˜“””•›“’˜“”–’”’ž’““•““˜‘˜”“™““Ÿ§’Ž˜•“•šž – ˜“Œ—“’”’”••œ¡•“š–˜“›’“–’“”—––“œ›““““š–™“•” ™™”’“’𛓕˜”“žŸœ”“““”œ’Ž›““”–“œ•“¡’”” •Ž”›–““Œ—«”Ž““““”““’””˜™—œ“u›–‚“’”“˜’™š™––“¢™‘š”š•‡’œ•“•˜•››–“–””˜““¡—–“•“”“””“““˜”ž—‘”œ•š““”“ œ“’“”¦‹”•“˜••”œ”’•¡”ž–“•Ÿ•‘”™˜”““›”“””“›Œ“”𓔣’“–ž˜˜™›•”ŒŽ”“š“•Œœ–‹š“¡™“¡š–—“”Ÿ“‘›““›““““›˜“”˜„’”œ“š”˜“„𔓕𗔓““““˜“˜›•“£—““•š“•ž““—¡”š“š‘›”“•œ—•–““–””“¡“›–”œ“”™¡“”–”’“Ÿ”“œ“—š—™š“–Š•–“—™™“’—œ”˜žœ“““““““•˜Žš““•““““““—“™œ’𔓗’‘’”œ“””“˜œ”—“”——“š“•”•š—–‘ŸŸ”•““œ‘“‹—“—“““œ‘“’œ‹”“––““—š“˜œŽ””“œ¢™ž›”“–““ž““•›Œ™˜™“¡““““•˜š•““•’˜›“’‘’““’’“—”“’“—‰™’—“–’–‘”’““‘›–“’’’”——“•–’“—™•’—”““’”˜•“’—“Ž’“–Ž¡’”“““““š’Ž•”›‹•–”’˜””‘•–’–’—’’˜˜’““‡”—ž•ž™•ž™˜“’–’‘••“–“’’’“‰”•”““““‘”“‘“““™™’—’•Š”•’“’“•–’•‘“”–•‘”—•“–’˜š”’’’““–™“‰—–—’““˜““••—““Œ““’•˜“’“–•’”’–Ž“’›“—““—“”––”ŽŽ•“’…•’š•˜™‹”’”’’“•Š’‘›’’‘‘£—‘’–ž˜¥’›‘ž”ˆ˜‘‘’’’——˜“’’’’ž”’Ÿ ‘‘¡Š‘’‹’˜‘‘’’–¡“’’ž“Ž’‘š““‘š’žŸ“‘”””’‘‘””Ž’œ’œ’œšƒ’Ÿœ‘Œ•Ž““’’›”•‹˜’’‘–’’ž’§–‘ ’’’—“’›’’–’}“’–’•¤’““’–‘’š‘’Œ”‘•’˜’“˜œœ™–’“’Žœ“¤¢–““’“›“’™ž“’Ÿ‘’’”‹’”””““”™”–‘•“Œ’’Ž‘“‘ž–šš–’”‘“’š˜¤“‰‘‘“–“˜††“™›”“““œ–“”¤‹˜“““ž’‘—“¢Ž¤””…–˜““““”˜—•’“”•£œ“œ“•—•”’™•’””›“””¡™¡“”•›””“𓍛”¡š”“‘” †˜•“‘“˜ ’˜Ÿ’”¥˜¦Ÿ–“™š‹ˆ“”’œ““ ’”–””““–Ž¢‘•””“”“”””–“‘”Ž“’‰˜œ›—”””“—‰”–’””¢•›•š”“˜˜›…“—™”•™˜—ž¥šŽ“””™”“™›«”“¢œ”“’Œ“Š‘š–“—Žž”—“’“‰“–£š©¡•”‚…®“Ÿ•šš•“”“š‰“œž““’’˜™“•˜—¡’“š’•‘•¡’—¡£“’—”“““““œœ’Ÿ“’’œ’˜–’•–’’ž”“›“™Ÿ””“œš”’“’š’“’š“——’”˜’œ—“…—‡™“—“—“–¡‘™—–›““¡—•˜‘”“–•ˆ’”•œ–ž““’““ ““™Œ§•“’—“““•’“œ“™Ÿ™š “––•¢¤¡““““—Š“’’“’Ÿ’›’’“”• ”–›š“““’“š››ž¦Œ’’“›““𛇓“ ¢““•y’‡––”“’—šœ›‘—“‰’“š“’‘“ž”œ““— “˜Ÿ˜š ’““‘Šœ’ˆ˜““’’”“‘““’˜…‘“‘’’‘š—’ˆš“’˜“’““’’“‰“›’’–‘‡’™’‡’‘—‘“Ž“‡¡““…“¯“†“’‘““’‹“’•” •Œ“‰—¡’”“‹“‹–“‘‰—Ž’“jš‰—•ŽŽ–“’‘–•‘›“’’’›““‘Ž“”’”“““•“’’’ž“–—’–—”‹”‡““““•“ž‘“’‰”š’¡“”‹’‹’‹™“••’‘“œ’•Ž’ ’’“Œ’“““’“’Š“’’£’‘˜‡‘“”ˆ•›™‘“œš’“™’”’ˆ‹‘“¡““‘˜•‰Ž’“›“•’šŸ“““’šš“ŸŒ““”’—’¯œ”““•˜ ”“’“”™™“–”’“™“œŽ“”™’“˜“˜“—“”“˜™™”’“”ž””“““Ž˜“ž¡¡—˜“£¢—¡’•“’”““–—›™›“—Žš¤•’Š ”“”–˜“›žš““““š““˜—™‘’ž““““““˜“žœ› ž“š‘ŠœŽ“””“˜œ’Ÿ““—‘™“Ÿ•“—œšŸ™¢“…“”›£œ‹—”““—““™¢‹““›““¤¯“—Ÿ—•“‘ŸœžŸ¡•“—’”“ž“‘••”›—“Œ“ž›™•›¢’“–’’™š‘™—’“’’’™’ ™™‘’’““‘€–Œ’“”‘œ’‘‘‘’›Ÿ’—‘“‘Ž’Žœ’•’Ž˜“””’ž•‘’’”•˜‘”“”‹‘’’™’”Ÿ’˜˜“—“ž˜¡““Ž‘’‘’›“™ž’•–š¡—‹‘ š“’—““›“•’“š’’†«”””’’’’™‘“—’œ’“Š‘›œ”ž™’’‘’•¨’™’’–‘”›’•‘‘¤›–‘–˜’•‘“Žœ˜Ÿ“•Œ‘’’ ’’¢‘—’’—˜“‘“’›‡“’”š–”œ˜™’”“™“”•˜’š•’›œ’ž“’‹‚—““”“žœ‡“—¥““““Ÿ¦ž“–ž¥œš“›“•“— “˜¡¤”“¢£””“”“™”•ž““£š–“ Ÿ“™•““£š”–“ž—ž”“•Ÿ”““–””“—“™›”Ÿ•˜›¡“—­˜“–“’””’™šœ¢“ —”–£˜Ž‹›””˜ž‘¢–“’““˜““£œ‰““Ÿ“““”““š“šœŸš““š•‘¢‘“””“ ¡”¢“”Ÿ”“’”ž”–œ  š˜¡“‘ “’¡ž«ŸŸž””“š‘“Ÿœ”“˜—““˜“ ¬••”“œ™Ÿ Ÿž”œœ““ “”—›—Ÿ™š“–™““™›•”–”“”•‘˜Ÿ–“’’‘‘‰””‘¤”—‘’‘Ž–Ž|𒑇˜”“’’˜•‘Œ‘‘•–‘–’™•’’Ž’˜’Š•’’𙕓’“’’‘˜‘Ÿ”•‘š•‘‘˜‘–‘“‘—’—“—™‘’‹”£‹“‰šŠ™’’•’’Ž„‘”‘’Œ‘’“‹ˆ‡”’Ž’’’“’‘–‘ž——ŽŠ’—ž–˜’‘““’“’•‘’›Ÿ“›’”‘””—“Ž‘™’’ދЙ›™’’’–‘‘“”¥‘’ž¢’‘ŽŽ‘–”‚•‘’™Ž™‹‘’ž‘’¡’”šŸ š’Š”‘‘‘‘–Œ‘’‘”˜¢”–””””š™˜””“ž‡š”›”˜“–˜”Œœ£””™•˜•””•”›‘•“’“”•¢ˆ”•š”’”•”›š•œ”›–“””™“ž”‘””Ÿ”””œ””™•ž—˜š””’ ‘“š”˜•”¨””––œ™”ˆž——¢“—Ž‹”•ž–”ž™”–”•””–‘Ž”””””””””š”–˜˜¡”–••…¤”””””›š”•””™”–”•”œž—–™œ”𔕠Ÿ–™—£’•””¡’””˜’”””˜””˜‘”—š•”’–ž”˜›š”˜•”—”““”‹”””š”›™–™•œ””ž“–œŽ’¥˜’’’‘Š™§’š”—–“”’“‘’•‘«”•“‘‡“š““’’‘˜–“§š“‘œ‹£’ ’’œ˜’’““š—‘““š ‹”—’‘Š’“’’“™’ޔ𦒒Ÿ¢š‘¤’œ”’‘‘œ™——ž’“—•’’”™˜‰ˆ ’”•“–”ƒ’’’‘ž’’—¡•’’“’““’’’†’‘Ÿ›•˜’˜•–«’’“”’”’““šŸ“…’–’”—˜—žŒ’—’’žŽ”’’’’œ’’’•«”’Ÿœ’’š´’œ˜“—’™ž©›–“›“”’˜’–œ“—”¤ ’œ’’’ œ•˜‡“’’“›•ª“›“””““˜™”—•—š“›”’’•–“ޕ𔓕˜”””””•˜•‘’”‘šŠ“œ‘”’–““””“˜”’˜””¤ŽŸ””“““““™“™”—”˜’“”€‘Œ—š“ž””¢”šš™˜””š’˜——‘•–•”“›š––‘•”’””•”““›™“”“””•””¡””’‘œ—”˜“˜•™ž””””–ž“˜””‘ ”””ž”“•ž™‘”•’””—™›˜“”””ž••𗆓”—™””—•”‰“Ž’“‘’›Œ —””“‘““˜”“——’”Ž”˜‘“”——™–Œœ“”’™“†’žž’“‘‘ ›–’š˜œ’—’—ޔ𑕛¡“‘‘›¢““’’’˜•“œ›’‘˜˜•’£•’›‘‘œž“““™—“’— –”™’’’“’˜’š“ œšœ’•–’¡™’’“’š‘š•œ—•’©š™“•‘‰‡’’“š›” —™’“’’œ’’Ÿ”ž‘’¢’“““’’™’”˜–Ÿ’››™¤ ˆ’““’ž”’œ’““˜‘‘’ ““šš– •—“–œ’‘› ›¥š ”’’“•’š “’–™’’Ÿ¨’’¡—”““›™›—–ž“–’’’’™œ””šš’„’’¥š˜…š’“•’—œŒ‘”“’“’‘Œ‘’ŽŒ—Œ˜’—’”‘–”‘Žˆ“’‘•–“’’’’“”“˜š‘’š—’™’–Ž‘•‘’Œ’Œ›’’‡”–’”’’™“’’“’•“••””–’ˆ•‘’’˜“™Œ’•‘˜•Ž’Ž‹•–Ž–•““Š“›“’’’–’’’”’“•’’’’““’’•š–’– ‘Œ‰’’“”’‘ ’˜’’›†’Ž’—“’˜“Œ”•“’’š’‘—–‹‡’’’”’‰“‰“’’Œ’’“˜’Ž™•’“˜”˜––’“š–“’–’’Ž‘“‰–’”“Š’–“”•”“’““’“’ Ÿ’“‘‘—¡¢’•¥˜ ’˜’•–“‘²˜œ“‘“ŸŸ“’’’‘𙓙—’‘˜š—’˜Ž’Œ•‘›œ“¤’™—œ“’Ÿ˜ “ˆ’‘—‘“’—’“Ÿ‘›•œš—’š¥šŽ™’–’‘›‘—›˜–’‹Ž‘”—’‘–•‘œ¥• —’•’‘˜’’›‹™’‘ ’’’’’£’¥—˜–…‘‘Ž•~˜—’’’’›”’™’“† Ÿ’•‘˜š¢¢œŸ““’’“—¤˜˜‘’’—“’ž¢–“’¡¢“’™˜’—‰”“œ’Ÿ ˜™“‹‘’’–’‘›šž˜‘’’ˆ’œ—ž–•–’’“–œ’•Ž““’’Š’“’™•‡“•’™ž’†’‘“’‡˜““’“’”–”‘’’›“—’›’˜›’‘“”“‹Ž”“›–”•’’Ÿ““’Œ“’›–˜‘œ“…—}‹‘±“ “•’‹ ‹Š“ ”’v—‹“¤’‰•’“‘›”’‘“’’Œ’“ˆ–œ™’“““““–’“ˆ’‡—”š‡“—Ž”–Œ“““““…’š’““š’‘“Ÿ“–‹ŠŸŠ“˜‘’‘’¤‹Š‡’’“‹‘’“““•““’˜š’ž¤’“’›¡‰”“Ÿ““’—’“”’œ’š“€Š•“Œ˜ˆ¦š—’“Ÿ’œžš’”œ““’‘›¦§’™›Š‘“’‰‘žš‘‘š“‘’ Ÿ““’““””’ˆ’‘™’’›—’”™’‘Ÿ•’“¤›“’œ”Ž’’™““’Œ’••“”Œž”“’w’“Ÿ‘•’ˆ“‘•”ŒŒ‘¡ ’§¡›‡”›’Œ˜Šœ’’©®•ŸŽ†’’’’˜’’›˜‘’’™’’’”’’¢’—•‡’—”–‹¢‰’“““–¡’œ’“‘“š’ “”‹••–…§““›’“˜—•™—£œ’’“™’’ž•ž’’‘“’’ž¦’•𢓓”•™›¤œ•“†™’’¢’“–š…Ÿ’’“ƒ’—Š“ž’“š“—’Ž’““’’™“ƒ“‘—˜ªž’’¢’›•‘ƒš›“’…•˜““’“““”””–’’Ÿ–—’”ž’”–’‘–™“’“‘—’“’¤’‹“Ž““‹’“’œ’š—‘Ž–”Ÿ“­’¦“’𓢓”y‘œžš“ª—¢˜‘’”˜’Œ‹““‚•™—“”’’’“˜‰˜’˜““’“’“–’–Žž”““—”œš—’’“’œ¦’š’“‘Ÿ“’™’‘¡™žœŸŒ“Œ˜’”ž™‹†ž“–“““—‘“‘˜ ”“’ž“’Ž’ ›Œ•’’›™““’’’”’‘˜““•“•“œ“œ”Ž’“ˆ’šŸˆ’š““’’™Œ”“˜™˜‹œ’¢’ ‘›’ƒž’“’”Ÿ““’’“’«£”š˜’’ “’–˜“𢒑–™’¢“šž˜““žš‘“—““”“‘’®“›š––—•“—š“˜‘Œ“”‘¤’•ž˜ Ž“‹—£“•š“šŸ˜•“””““”Œ ’’“š’“’©£”“‘’““•“’¡’œ£›¢“™–—”›¥“”““––’’“™£—£’•”š–œ‘ž™“œš’‘£˜“Ššš˜“’“¡‘“˜•‘’“𤓒ž•’š””’–ž™¡˜“¤“‘’“˜“–”•ž””™“‘š’’œ•”˜¡’“’“›—ž’•™“’’’–”“’£—›™“–’¡‘œ“‘ •Ž“’Œ‘™’’’’’—’’¢˜‘‘–š›’›’–”’—ž“™““™œ“’˜žŽ”–’’•““’–’Ÿ™’ ‘œ—œ’žœ–•Ÿ’œ“•™‘Ÿ——“£’¥”“¡“——›’’’–™•œŸ’”’“”’’”š–’‘™’“’’’’’’–š›’˜˜”›’“’““’™£’ ’“Ž˜›’œ““™™“•—‘“’œ’“ ™˜’‘”“’’’—‘’‘––’’•—“’˜˜’”“—’“—›˜˜œ˜“—“’–’‘¢—œ“¥š’Œ “’ž™œž«š’’–“–—“˜›““““™—“ž•™Š““““’•œ’š–™““––“““““——“˜š’“›••“™“’Ÿ”’”™”•“’”“”’•’‘““š“““š“™”›’•—™“’“Žš“™“’“’—“—•—‘’“‹Œ”’••”–Ž’•”””••‘ š“’““–““”‹’“”“““’”““”•—–“–’”‘“’““““’“”—““”“•Ž”“”“–’Ž”•“’““Ÿ”Œ“’’“““›”“š–‹““™•““™˜“Ž‘˜”“”šœ“–•˜“‹“””””–’’’–—“š–“š™– ““”—”“‘‡“–˜”“““𙓛—“‘–“”“™“˜—“Ž•”“–“”””“““‘’“‘—’“˜”“––“–›”’–™“’“””””“”š†”““”“”“’“š“”’š“•‘““•‘–”–”—”‰“—”—“”™’Ž•–’Б𓔖˜—•‘˜”““’˜““–„“’“œ””“•“””“””’““’Œ™”›“””““–”š“”’’“’“’’’“—––—˜”““‘“’“Ÿ˜–—““”“““”˜”““‘•”“”•“š’—’“””–˜••”Š”“““””–ž–—š˜”šŽ“—•š“Ÿ˜““•”•—Ž”•’””””˜–”œ™•š™”•”œ•™™”•–””–˜‘•”””•—••“š””˜š˜”™—”š˜””•–”“”–—˜””—“’”’””•””–””””–™—””˜Ž•“—”˜••Š“•™ž’–”‘™œ™•—’“•Ž–”•””•–’Ÿ”””””””——Ž”’”›””””•”””˜˜•˜•—˜”’——”•••—˜”™•”–””˜”™••‘•’—–””•”“–š™˜™™Ÿ”””“””–™•””‘–””—ž””“”””—™‘––”š–•”›””˜•–“”—”™–˜”•˜˜š–””𓑤¤’˜“““’’—™›“‘——Ž˜“˜’•’žš’ˆ™“’—œ““““““––“‰•’’˜”—’“™“““‘˜““™“š˜—”“”‘•”“““–’“’“““‘”“‘•™•“‚“–”’ž“£“˜Ž’Ž˜š—“Š›˜Œ•¡“”œ›•“”––“˜‹—““““’““™”ž™“’›“““•’“–“–˜“›“˜—‘š‘““““›’’‘’“—™”’“–””’˜”žš˜“˜–’“’ž˜š—ž—’““”‘“™”—”“‘‘“““•’ œ’”“”•œ’—’–“”–’’ž“•“Ž•“‡”“—Žž•š’”–“š•—“–—““’’¢œ¡“šš¡“¦“¢““’”˜’’›—”’• ¦““’““™–“™˜’“˜¥“ž•“šŽ“’žž“š“¦š““•–”““’“”“ž“£’œœ›’“†“¢”’˜”“–““Ÿ™žŸ“••˜•—••œ™•““¡™’—–Š“”“”š““¡“‡œ‘’¢“““•’““˜‘››’“˜•‘Ž—˜““““£¤“““œ•“ž”£“”¢ •£˜¥“’““™¡’ž—¤’“““©““¡Š““š–““˜‘“™¢˜““”˜š•£“‘’“§“”œ˜”š•“™™‘“£™˜Šž““Ž“œ•‘’’œ““’““¦ “” –‰”“”’‘“•’“’¡“’š›”“’““–““š’’•—Œ’•“˜’“’—•’Ÿ“••–”“¡›¡“’““”““’–“–———Ž—˜““Š’ž‘ž“““‘’‘™—œ•“’–•Œ’™š“”Ÿ¢’™›˜“”“’˜““•“‡”’’““““““Ÿ’š“™“‹’•œ’›—“”““”‘’“’“— ”“™•’’•£–‘š“’‘’˜˜‘ ”–“’“™“’›˜‡“““ž““œ¤’––“““›’ž›•–“–—““™“”šž’–•—“‘•“”•—•–’“”“›˜¡’“““’’“’’£Ž„’“’š•Ÿ—’—œ“’”Ž”“’’“•””“—‘’••Œ’Œ˜’˜Š’’“‘’£“–˜’“’©˜ˆ“Ž’“‰““’–’›–“”›‘›™’•“‡Ž“Ÿ’ž““Š’’–—¥“wˆœ”Š’’š’’¡£”›‘“’’’“–—•‘’•“““’“’œ’ŽŸŠ”y“£Ÿ““““”„’Œ““©‘˜“–”’œ“©—š“‘‹’““ˆž™Œ’’“Œ‘“›–‘““•¤“’•“’ ‘”“““˜œ–““Œ—’“›“’‘ž™¥™“Œ’•’‹˜– ’¤’“’š–›’——“’’’›ž–’œ––›’”’™”œ—‘†—Ÿ“‘”š ”’’’“““”—œ’‘–š’’š˜’š–“‘™ž”•’™šš“’™š““˜’’““’•“–—•œ’Ÿš—“”˜Ÿž”¤’—“–‘˜˜›•™’…–“—‘™’ ’Š—’“›š•›”•’“’‘ž’’š“Šœ‘’š’“““’’’’™š—š“›––ž“˜’“”“—’ ’“––’š“š”’—˜š ——’’•’’ž‹š˜™™“’“ž’’ˆšš’’’—’’› ’š˜ž““‘•š—˜–›“””’’˜’‘’——’¦’Ÿ›œ™œ’“œ“—ž—’–—““’’“‘•“—‘™—“˜’–‘›‘’ “’“‘‘™”“’“’–’”ž’’˜Ÿ“’¢•“’’’’”’˜“’–›”“——‹”Œ““•““’ž“”›“£˜’›“–›žœ••’”“•¢’™š“•“Ÿ”œ‘š“‹Š—““‘”’ž‘‘““’’““‘š‘’“““’’“—’œ›—Ÿ’•—”‰™‘““”’š›’•’“‘™‘“¢“•˜”š–”•“Œ’‘žœ‘““šš’““œ’’”™›““‘–“’š–’‘š““•˜“˜Ÿ™“••’’˜’”œŽ’Œ˜““‹‡˜“š”–”“’’“‘“–’–”““’’™“‘“š™’™—“—’š’“•’”’š“’–“““““““˜—”–‘’’”™™’”““›—’’“—“““–š–”“–••””“““““’›“—˜”’––Ž‘““œ™˜“–“™“”’’™–•”–“›™œ”–’”š‡˜““”‹‘”“–“’““•““•’›’’“““““““˜“™–•“–’˜”™““““Ž”“”““•“š“—“••‘“•”‘“–—“’’–ššš™£“““™’“““Œ“““˜“““ž’›‘—”“““••–“””““œ’“—’—™Ÿ“•›“—”‘›‘““’“š…’—““’’–ž¡“ Ÿ˜’¬“œŽ‹’“›™““–Ÿš””’“” •”¨œ“’§–’¥”’”“”’œ•“š ™”“›”˜“—““•”’ª“–¡“˜Œ“˜“š’¯—•œ’£“œ©’žŸ•›š““’š–”——“˜‘“•—›’š–›“““”™““™¤¤‘““”““’”“£“˜›“¨•”“˜’˜™¬“”””¤’““Ÿœ““ ““¡œ¥š¢¦“™™“’ “£‰”””¤‘”™¡’““™š“’™‡’¡“””–“—𩤛“œ••“’“•ž–‘š™“š—œ“˜›ž›˜–“““•˜’–™““’’†™“”‹——“™““”—’’™™“’—’“““’“˜•”ž’’š’’•˜“–•‘’Ž““ “‘•”“˜””“’’”“’›“˜””——™‘ž“˜šœ›’ “‘“’’œ”Ž••“’’“–•’™šŽ““•–“–𔓓““•““Œœ—“’Š“““”““™“‘œ”Ÿ“˜™ •““““›’–“““’““””£‘œŽ›Ž“‘™“‘ž’’Œ“““““‘“”’’“‘““žŒ’—“”“”’–™šš˜–“‘’““—’’–—Š™“”ž”“˜–”““’‘˜Š‘œ™’’’’žœ™’•ž›Œš‘—’—‘šš‘–œ’‘“›™’’‘‘’˜–’Ž“”›‘•œ’œ‘‘š”’’’—›ž’’–•’—’““’’•’œ”“”‘–”’‹š•’‘—‘œ“–‘š•œ›’Žž‘˜”Œ—™’–““œœ‘šŽ’’‘’‘ ’’“—›‘“Ÿ’’’’”“œ’’Ÿ—’’š–“œ’’’“’ž‘‘–’’–”“ ’˜”“™™™›™›’’“—™™ œ’“’˜’”™“’•’‘™”’—Ÿ—‘’““—•”˜’Ž—““ž’’Ф˜ ˜š’˜™š’’š–š~›‘“‘“š˜†“˜““““–“˜š—“ž“–ŽŸ˜“š’’““‘š—”“““”˜—“˜”’“›˜‹“š™”—“’•˜”“““‘—“”—–“…”“˜“”“™“–š“š“›‹–“™–ž”“‹“Ž“’’“•—”““™Ž—‘—“˜–””’‘““““’““•“‰‘’”’““”’””œ““Œ–˜•“—˜’Œ—”““”“’—“—“”•–—•“•”“œ–™•’–“—”“—œˆ”–•””“–”“Žœˆ““•““œ‘“—“›’“••™–’–““˜“”‘””—’–”““““›“š•›Ž›”“”“’•’š“’’’œ’—š”Ÿ’œ’œ“”‘Ž›–“‘•–™“’’’’–’”•‘‘’¡’•’’œ‘‘‘šš’œ’š“’£ˆ““’’‰““’Ÿ’¤˜“‘‹œš•“—“ƒ™‘”’—“”““˜–”ž•’§˜™‘”’Ž˜˜’“Ÿœ•—Š’’’’¡’’Ÿ’¤Ÿ’Ÿ’’’“’’›’¡–œ—“’‘• ™“’““’ž˜’–’“—œ‘˜’‘‘”£šœš“–œ’’”’’›œœ—’’’œ’†™Œ’’™›’’’‘›”’““” ›–Ÿ“Š•“’–’’’¦ž›Ÿœ’˜’“’™–“’™Ÿ’“•“–›Œ’˜˜““’’•–š“ŒŸ›•“’’—œŸ’ƒ“›“’œ—š““““’›‘“˜œ“’¥‘“›™““’’”œ“œ“¡Ž’”“𖉔”“““”’¡“𛓕‘••‘“š–‹–‘‘’“”|“™”™š–“š›”ˆ—›Š‡†›““‘Œ”““““ž““‰ŸŽ‘’™““““’“˜“”™”—““•——‹šœ““”’œ“™’“š’Œ“•’–—”š•š›“•œ’’˜•—“˜’““›‘’•Ÿ““˜œ““—•’Ÿ˜‡•““‘‘›•š—“£•“’‘““––’—•—““™“¡™—‘—œ““•’œ —‘–‘’“’’•‘˜’–—„–‘™“˜œ•‘Ž–—““™’’‘’’’˜›’–”‘“—˜~’”š’˜‘•™“š’•“œ’“›”“‘‘“‘‘’’“™’“••‘œ””’‰š˜˜”’”“Š‘’˜”•’™“ˆ ˜”• Ž—˜•“’–—”–”’‘“”’’“˜•—‘”—’’’““’œ’•œ˜™†‘ž›}˜–’‘““˜–’’’’™™’˜’•‘’––š–™›’Ÿ“•”Ž”˜’’“’–‘“š‘’’–›’’›˜“ž–“‘“™–•“™”’ž”““œ““‘’•”–˜’”ž‘’••–•˜‘”’“›™’’Ž›““’’•–˜“–•š“™’•“˜‹ž–’Š‘““‘•™“’’’’›•”–š’““˜’‘˜“˜’‘š–”›“™•›““’–’“’““š’““™’•š’•’”•“¡š«œ’”“‘“‘›“—™œ™“–•“ž”™’“š–““‘ž¡‘”’’‘“’›““•”ƒ”’“—““’’““”“šž•’•“”“”•“’”“‘™“—‘“‘–“’™““˜’“‘–““’˜”’—“‘™’”““’‘—™““‘—““Ÿ—“”“•”“”““•’™“‚’“”“’•”˜—“š‹—“›”™’“œ“”•”–•œ”—˜”””””—”””“˜—”–”—”‘–”¥˜ž•”•••””””•˜•”“•”•—ž”•Ž”Œ•”•”•“”“””””•ž”“””–”•”””’—•—”––””“š••›•–”š–”’•˜–“”𔋔““ŸšŽš–”””œ”›˜‘”•”””””•’–˜••–”””–””‘”Ž—Š™œ•””˜€”””””–””•””‘”•–•”’™—˜•”””“””•šš’™›•”””–””—˜•”œ•””•“”‘—‘•””‘—›•—”™’””••’‘—–””•”–””–}“”•”“›Ÿ¥’˜Ÿ““’’’––’•š†™“—’ ’—œ’›–“’›™“““”“š’”¢š’’œœ‹’Ÿ•“–—““— “™“–•˜’“œ“”•“”•“”’˜“˜—”¢’”—Ÿ’š˜Œ‘”¥’œ“”¥“–˜›‘—“}Œ”¢•›’•ž’œ’•˜—•˜Ÿ’’”“”•“’”›”‘š’““•”“˜“—œŽŸŒ“˜‘‘”‘™’””“’œ“¡““Ž’›“›•“—––˜–™“’’’—¡•‹‘—”’“™’’ž˜““—–“’œŸ’“Ž–“’¤š–œœ“‘““™“Žš˜” •“Ž™‘“ žŸ¢–ž“”““•“v’•—““’’˜žœ“Ž™–š˜’ “—‘œ’—Ÿ“’““™”“““’–—“›Ÿ“’›š’›•’–ƒ’’—–’˜“˜™’““šš“–“’“”“““˜œ“–’Žš—“Ž“œŠ’›’œ”š—“™–š›–“œš›’•˜“™’–’“•–•’””‘“‘““œ““™‹¤š‘“”““““““›’•’œ›’‘’’¡™›“””’˜š’–““›ž’“˜‘”ššž–™•“™—“’˜ŸŽ™ ˜‹“““’“‘™‰““˜“’“ƒ““–‘’•–•¢•™“™‘““•“““œŸ•’–““˜“’š™—˜ˆ“’“’’”’‘•Ÿ’’‘‘—£–’ –••’‘ ™Ÿ‘´• “‘’œš’’’’‘˜˜“Ÿš‘‘˜ ’‘˜‹’–˜›’–’”𛓒˜“Œ“”’’‰‘“‘˜’”“‘ —™™˜’ž¡¥–ž’”“’Š‘œ——•œ’£™•¤“ž’” “ž’’›¤’¤„’’’’™’’‘Š„š‘’˜“’’”’’˜’Š¡šš’™–“t’•’’’’—Ž’˜’“’Ÿ”’™’’’•–—”“’—’‘œ—•Ÿœ˜¦‘’’“’‘˜˜™’’––’’¢›‘•”“““š–•——š“—Ž’’™’œ’“œš™’‹›’—–ž¡Œ“’’’“‘–‘’œ™““’“¡–™“•™”Œ “Ÿ“¡–’†•—“’••–””’““ š”§•““Œ¡‘“•˜“•’’œ“–“™ ™““šžœ”““”–“““ž“ž¢“–¡—””“  ¡‡“•“š”–’ œ—™–“ˆ’—©–”Ž˜¬––“” ˜’œ˜‰“”““–““–•¢š’“œ“““•““”“‘¢”œ”“›šŒžœ¢“””“™—“›“”™š”™“œ””œœ–˜œ““‘–˜ †“““ ’“¦œ•““¡““š“Š“”•“”™›–œ˜“–—“““”Ÿ¡¦¢˜“ ±–“Ÿ– •Œ””ˆ“™’•“›–““““¡‹—“—’˜£“ž““’žŽ’Ž““—œŸ“““““”™”£”“’‘œŽ“œ™“—““’œ—”˜“•“““š”›““•“”“™“’Ÿ“–ž’‡“Œ”¢“†“𔓗“™–˜”˜““›”••œ”„˜š‘““šš•——“”“’§““™Ÿ§“’’œ“““”““¢“ ’ “¢“š›–’Œš““““—“•““—•”œ“œ“•’›Ÿ“¦“”˜’“¥š–’’““¢““–‰“““““˜‘“ž¢˜““’šš˜“”—’“š““ ‘›–“™¨”“Ÿ—›”  ““ž’–’“™’’‘‘•’–’œ–šŒœ’š’œ’Ž‘•“Œ“‘‘››’’’’’•™“š’‘š›“’–—’¡“’‘’ “˜’”–’’—žŠ”–’’’’“‘ž’š˜‘ŸšŸŒš’›¥£›’™“’ˆ’š˜‘™ž’Б𓗔£“£’’š–•”––’’’’“’’““–œ‘‘–’“’”‘’š’–™ž›™’œ™•—Ž˜’’“’—¡’‘“›š“¢““”šŒ–—–•“›’“œ•“Š’¥’’’Ÿ‘’‘”™“’”“’’¡¬’ –Œ”’‘ž—ž™œ“˜’‘’¡’‘™—š•›¡’˜”“’–”•›’“””–˜“—•““““—›““œœ–œ—“˜“ž“˜ “˜œ˜”“˜ž˜””“””˜•”“£““¢–—“›”““š”“š••””™“”“™”””“”‘””“›“”””“”Ÿœ“‹™†™‘¤”¡”’{“”¢•˜“Ÿ”Ÿ”“‘—‘”“””’–’–ž¢””““™“”›¦ˆ—’“›”””““”“”—Œ˜—”•–˜š™“”””—™“˜“”–™”–”™•”“˜•ž›•””“””œŽ‘›•£”“”‘•”—˜Œ”“‘š““››“¤™˜””’‘™’““˜”š˜””¢”“š’””•“˜“–“𢛙““œ””–””˜“””””•‘–”—‘•’™”™”—”˜“”‘–’””••˜”””””–••›“•”’˜”•–”•“””™™•—”–š—•”™–—••””‘”””˜””š”–•˜•˜”—•–œ”•”š””•”–—“–—”‘˜™˜–—””˜‘””–‘”—”–”•””˜””•˜•™”””””””””•”—–—˜–”™•••”˜””•”™›”˜”””˜”˜”—”•™˜––˜™”––””˜•–””–˜”•”œ””’•”””—””–”•˜™•””•˜“˜œ—””’””•””š•’‘–•”𔓔™––“•˜””–“–ˆ’’š’“’’’ª›““ˆž‘‘™“š’§’™™’z—™“’•Ž“““’“œ“”’’’’¢’“ž“’’–§”‘“¥¡¤”“•’”“›“”…”“’˜“™—“•—’š‰“‡”ƒ‰“’“£“‘¢’”˜“˜˜“„Žžž—“‘›‹–“’›•“—˜—“”“‘•““™…—”’“ª“““”““š“‹’Œ™˜“šŸ•’” “””“’˜’—’“˜˜’¤“—””‰—” ¢›“’–“”Ž›Œ˜ª—”““–’“ •““˜”““‘’ŽŽ—“““Ž›“’˜“œŒ’’œ“‘ŸœšœŠ‘“›™•“››–£˜Ÿ““œ““”’’— ““’’•˜›’–›–Šœ“—’–‘”–’—˜—“’–—Ÿ““’““ œ”›’“’”–•’‘““––’‘˜”“›“˜™•““˜™š”™““˜““’œ“››’™’•š““–Ÿ˜”–“““•œ’˜“™–“ƒ”™•””“”““““›—•˜““““˜““˜“Ÿ•’’™““““““’šš•“˜˜–—œ’“““““œ“›’“–‘•“™“”Ÿ™˜™—“•–’“”—•›™–‘’’“™’“””š““››““¡™’‘—–”“” ”š™”œ“‘‘’’’’’›••™œ˜“›‘”“Ÿ“•‘”“““™’•›‚’–˜““’’‘–“›™’¡‘˜“–“’˜‘’““‘œ•’“’‘’™š’”’“•Œ’Ÿ”’”‘““““”•˜“““‘‰“–“˜“’“’’Ž˜˜‘ž’‹“•˜™‘“’’‘Ž’“”ž“““˜›“˜‘žœ†“‘š’•“™“’“‘™’’•–Ž˜“™’““’““”’˜›™˜Ž‘–•’‹›’’”“–š’’“™‘“˜’ž”’•”ŸŽ”’Œ““Ž¢‘˜˜–’““–’’•— ‘“’™“’™¤“–š ““›”Ž’•˜“––““˜–š‘—““‘’›–˜•Š—’“š’˜ž‹‘‡““’’‘“’’ž“˜•˜’‘’–‘Ÿ’‘‹•“‘—”™’’’‘‘“—’Ž˜‘‘–”’’œ’—™’‘›•“”’”‘š’’“’‰“‘’““’‘•’”‘“—•“–’•’”‘“‘–’•‘’™““–š’˜”˜’—“•œš˜’’’’”–“’“’’Š’’•“’’‘•’’’”‘’˜’•“˜”–‘•”“𙑒’“’˜™’“‘’š’›“—“’œ“’””’””’”˜“’”““’’’”’‘˜“’’’™•’•”Š”’‘˜“•‘“•“•‘’›“‘–—––’•’–“””¥–’“—’˜”—’’ž’“’’’”’“”Œ¬’’Œš’›˜’“’–“ ’’’’’‘Œ“•–’’£‘—’šˆ’Œˆ‘š“•“šŽŽ’’–“Š“’“’š’““œ’•‘¦—¤’°”’Œ‘™’„‘‹’™—’’œ“¬Š’—’’Ž‘†’““•‹’–‘’’’‘–’“•”’”Œ““’’’“…’ˆ•‰™š’Š„“·–“““““Ÿ“›’“‹•’“•’“ž“—Œ’‰’’““ª‘‡”“‘™’“’–““•“’“Œ’’—ˆ’›˜’”’‘‹“‹˜–›“•‘‘’‡“‘”‰’Œ™’†œ–’ –›Ž”’’”–’’¢’››““’’”——’“š œ“š’”“›‘š™™“’‘ ¢’’’’“˜’’–•‘‘™–—’œ™’–•’š˜””“•“™“’˜•ª“Ž’“–““’“’•™”œš“•œ’˜—œ”“¤’™“™’’˜—ž•¤“¥™’—“—™’”š’’“––‘™–’”’“™’’–šž›’‘œ’““’’’–’™˜—™“”””•‹’“““œ˜’£’“™“˜“£““˜–˜ž’—“™ž’•›¡˜–”š—“’“•‘‘•žŒ““œ•’’”Š’žˆ”“’”••›–˜“••”’—’’”™—œ•“’™•’˜š•›‘™’“‘”š•Š“Ž›”“““š—•”–›—’˜”—“ž“ ™“‰”—”“‘–—”””””—‘•–—”“—œ˜“””’““›™•“”••š””™‘•–””—””“•”¡–”›’š’•”•š‘”“”–”“š“œ“›š””—š™”˜“——‘œ”“œœ“”•””””–””•’’’“”˜”””•””™”˜””•”˜–•”˜’””””˜™”›””–”š”–””˜—š˜•“”•”“—šŽ”Ÿ––”””–“”‹—š””™—””œ–“š”›”””—˜’™˜”‘”””““”š œ¡œš”˜•”™˜•›•—””š’œ„‘“˜’“’’››”’›•˜¥–‘”’—§—‘¢™‘’’’š–’‘‘’“—„“’˜’“—£‘˜—’———“’™’“™š’“•šv’”’’““’”’™‘“‘’Ÿ›•’ŸŸ£œ’˜’“‘’›””œ’¢œŽ‘—“–”Œ¢’”™¢”›†’“’“™’’”‘‰™’œ’’’”’˜’’™Œ“¢‘˜’š•’’“““™—’™‘’’˜œ’˜““–•–š•˜’Œ¡’š“Œ™“𤓒’’‘’—–“’™™’‘ ¤’“•“’“Ÿ›˜—’‘Ÿ’’ž“™•™–’–Š’’–—šœ ‘“•”†‘—“šž””“”›™”‘𙓕”˜”‘”‘œ“›˜—”“Ÿ“”“““—‘”š“”ž”–”œ‹“‹™““—”’”“—“””‘‘”•””–“””›”ˆ–•™¡˜¡”—•“”Ÿ”™”–Ž“‘š›—’”›’’‹–‘”’‘—””“’•“—“‘”“””Ÿ””™•‘˜’”‘”””–“”””“Ž—–”“€–”“””–”“—“”Š—“’“–”•—•—””””—‹””™—“““™“””˜”“—–””˜”””–•”’Ÿ“•””””—“—”••“”—““–„Ž‘”Ž–””—™™Ž””•“•ž™’–œ““’’–œœ’•œœ“““œ’Ÿ‘–¤’}¢¡“’™”–““’““œ–“•’’ ›–’’›’”’’žœ“š“ž“˜““˜—•””’’˜”“’œ’œ””›˜™™ž“Œ—Œš“Ÿ“›““™’—”•™“Ÿ›—˜–Ÿ’’“—’“œ˜”™’‘’“‘’“•‡‘›‘’™“““”“’™’˜›–Ÿ˜“—“”›¡”““““—›“—’“•š“’”““œœš—¡—“’’¢˜”™›¡‘“’“˜‘’‘—‡““š—“’’—•˜‘“”•¤›—š““Ž““œ’“’””˜˜“Ž”•’˜™•™›œ’“—“š˜‘‘™™““’’•š“š›–Œ˜’£’™‘™Ÿ’Œ“–”“•œ—””““”œ•’ŸŸ’“œš’“Ÿ–’™•‘’—”œ“™’“’ž”‹“˜“’˜”“’ “”ž•“‘™•’“†“’–”œ“›““ ’––›™“œ‡”™““š““œ—‘‰“’–“’š““— —–”’˜““’“”“˜’—–™š””•‘••£““””“–’™’”™›”•’œ–”‘—•—›Ÿ“’š’“”œ˜ ™–”““£’”—›…““žŸ““˜Ÿ’Ž“—’”•𙕗˜“—’“Ž’”™š”šŽ—“““œœœ–˜ ““–”—”–”—š””””•š”™›šžš”™”—”™š”£š–”””™•””””›–•˜–””™˜””š™”˜‘””™™•”ž—˜””œš˜•”””‘•”” ”—œ•™”˜›”•˜˜•“–”“””™”›—›šœ”™™Ÿ™“š–•Œ—””œš“›™Ž”””””””›œ”›’”—””””””—”’ž—–’”—”•œ–”••”œ”š””™›”“”˜”•ž—š—”—›”“š—“”ž˜ž”””ž””’™–””šœ””™˜”›ž›•””——˜ššž”“—””—”•™—–˜—”–—”œ˜˜”’˜””““ž¢¯“Ž“’’’œ”“˜—–‹”“’”“Ÿ““…™’““‘™“”“’“”’•“‹”“’”‹–’Ž–’š‹‘˜‘”““”“—“’š°”’“’œ””’Œ““”›˜¤’Œ•ŠŽ “¢“’’’“˜—’€Žš‰“‘‘–œ“’’š’–‘Ž“’““Œ“’“™‘™“š’“’”’“”’—’”Œ‡”•“‘‘—‰“””””““”““”š•’™‘”–š›”’“–œ’•’‡“’’›”’‘‰’’‹••‘“˜’’›’©“š“Žš˜™•”“€•“ž’‘˜“Ÿ•—™“†±Š’ˆ•Ž–““•—–••™”••”•‘–›•––•™–•˜”’”–“”””••””——••••””“”›””””•–•›–”—•””•••˜•–˜”••™˜’•“•••••”˜•”™•““—””•–š••š•—••“•–™•—˜•—–•–•—”™™’˜••˜™•—”•”•”•••””–––”””•••””•˜”–”—“˜”••”–“™•••”•œ••••˜™•–•—””—•š•”—•“–”””“—™˜”•””•š•”••›••˜—•”˜”””•””••–”–—”•’”••š••›˜———˜•””••–”—’”•••”“—Šz’™““’’›‘“š›˜’’›’¦‘–œ‘˜ “’”™“““’’’˜Ž”–™‘’œ Ž’—”’‘’‘’œ˜’’“•˜™““–““’‘Ž’’’—’”“œ˜–™•“‰‘“š“ž”—¢‘œœŸ–“š™—˜•””ž‹“™’“——”—…’’’’““™“›’›“““•’“š’–™’¢‘“–‘•‰£’“““’ž’™’“›™“”“—‘”™œ¢Ÿ›–“••’ž”˜ ž’’“—’’›““”›“’˜‘’•”‘““” ’—”œ“ˆ””“•“”œŸ™›““š™™’ššž —’“–”—–‘“•“”“““—Ž“”—œ‘‘œ”™“—“–“žŽ”“‘ž”””““–“•””““™‘“Ž˜”œ–“““““”˜–œ””˜•–”“”‘“”“—”™—“’•—’‹”‹–‘•Ž“™”“†“”’–”™™™”’’•–Ž™““š•–‘Š””““””–‘•”“˜””””“”œ“”–“”š–’™•𔓔”™—“–“””•“¤“’“”‘”œ’™”•‘““•‘‘š—•““”˜“”•—›“”›˜””””“šŽ‘’”“˜–”‘“—”‹““Ÿ“’•š™ “—”—“š”—–˜•’š“”‘“”¥“˜•““’’˜š“š•˜—“‘’Ž’™’ª•–“’”˜š“““““‘–“—““’‘’›““•“›•““•“”–“•‘š““”–”””“““”’•“’•”“–˜••“‘–––•œ“Ž“”ˆ“–““•œ“¤œ•‘š•‘”“˜“”—”•™“““•““•““”‘¢š”’–“““”““˜“š”œ””“•–“…‘’“”““™š“•’“–—“–“˜””˜–—”›““™’•–Ž˜“’£“’“™’“Œ”•““––““––’œ™Š”““˜”—™š’“˜““˜“”Ž•““—š“˜“”‘’Š“‘““““˜‘’“™““’’’—˜’––˜‘“™’’’™“‘™–›“‘—•’““’’’“›“•”‘‘š‘—’š˜’”—’‘’—“›“•’•“’—œŒ“Ž’’—““’™’™•’‘”™“•’”œ–“—’–“–—“–““š“’’š‘‘“š””‘˜œ’’˜™–”’’’’“’’”¤“˜‘‘”““’“’’’›“Ÿš–“•–“‘˜˜’““’•’™’“›–’’’’”—–’˜™“–’“›’•——“œ’’’™‘’—”Ž“’˜˜’’š™’“—Œ”“”™™›–™“™–’’˜’“œ—š™™’““‘’˜“’”–˜’“”“”˜’“˜“’’’““’’”—“š“—’œ’“’’}—š“’š—”“’“’š“š’‘“™”’˜’’’Š“’”™”•“–𔓓—œ¢”—’’“““’›“œ—“œ¥—™’š–˜•‘•“œ“–’—œ”œœ“˜—‹š–•—œ’’““–ž–’’—’’’““•’’’‘“““˜“’’–˜Šš’š•ˆŸ’“““’š’—’“˜—‘™’™”“ž—˜•›Ž“—™’”›“’“—˜—’““š’Ÿ’ƒ““¤–“’““’š™—““’”—““šœ“ ”“’˜’‘˜Ž“˜”“¦–’˜’“—‡’’‘“šŸ–’ ¢“’’’—ŸŸ“œ›š™‘“›’›“£ ’§¡¤“’›™›“”’’’——’Ÿž‘’¤Ž’—›’–“‘’šœ““š—Ÿ“’›¢‹”—“‘””“’•’—’›’™ž©’–œ•¨’Ÿ”’—‘š™—Ÿ“œŽ¥“Ÿ‘˜ž˜““š£”›ŽŒ“‘“’ž’“••Œœ‘’¡“““‘““š’¥š’“™’’œ•““•“—œ“ž”““ “•‘” ™žš¦›“‘ž’˜“¨™˜™“““’”“’›†““œŸ“’¡’£›•“”‘–ž¥ž¢˜“‰””’ž’‘››Ÿ£—“š“™—™œ‘›““—“ ¤‹’’““’’™“¤“››™†™“—’”’›™’‹”˜“’•˜”“’““˜—“›‘’’–˜‘’•š“¡’‘•Ÿ“š“¡”œ““¢–”““’”“’““  ”œ‘ž”•“‰¦‘“–““‘’’œ“—£•“’—”—‘œ’Ÿ¡Œ¬’’£˜“™ŽŒ“”“’Š““——§’’ “““•”’¤“˜•¢”›“ž›™†¡‘“””“•›“¤’“ž‘““™“’œœ’•›œ“›“‘•˜Œš•š“““™““œ›}“““““¥¤’—‘‹““”¤™¨šš–“‘“’“›’“–¦ ›“™š“¤˜“‰“ž’”—’’—‘™“’’’‘‘•”’™š•“‘“’“𗤓““’“•“’‘‘’‘™““‘’™–œ‘•–’•‘‘‘›Ž“’’¥’’’–’›’“•’“’‘‘•‘˜šš’”‘–”–¡‘”“”–’—“Ÿ’“’‹™™Š’“›•‡œ’“‘‘‘•‡“‘‘’’™’’–ˆ¥“’—’’’”“’œ’”‘—”˜’–’ —‹’““’˜˜’™‘’–‘œ“’“˜••ž‘Œ™’“Œœ’”’š’’’’‘‘‘š’’’‘’’’—–’’›•’–—‘‘•‘‘’‘’‘—’”‡•––“’£˜’“””‡’‘“““Ž™—“–““““šŸ˜“‹’™“˜”™“›’”›“’š ”“Ž—‘””“””˜˜“Šœ“’–›““˜“’’““š‘”›“•™•““–¡””““’””“–“““”’”””†‘“’£”£”“”—œ˜†“•Ÿ’˜‘œ•““”››–’”•“•““—““•˜œ”’”“““—““–“•’‘›•”˜’—Ÿš“”””˜–“”“”–—”˜“Ž”“˜Ÿ™—˜™”“–““œ ™Œ™•“““™“”“–”“Ž“““™ž“•™˜””““¡–‘•™”‹““–““‘ŸŽ•”“™–”“”™˜œ˜œ“”–““‘•’”‰““’’“Ž™“ŒŸŽ¡“Ÿ’’’–’œ“‡“’“š–““’’’œ•”“’•“™’Ž”“˜•’‘“Œ“•“š™”“–Š’”—““Š““’Ÿ“Œš“Šœ–“Œ“‹”“Ÿ“‚“‘–›ž”“… ‡“”Ž˜’–“’˜•Œœ˜“’““‘“’™‡—Ž“’™“““•’“—’”‘Ÿ›’™’ •š“““’–—“’“˜“‘›”˜“’““š••“‘’‚•‰‘˜—’““›“’‡”““žš““Š’—Ž”’“˜“”Ž““’Ž’“¡““””’™ˆ—“—–““•—˜¡“”–”ž—”–’””””‘˜—”¢¡Š—”–”™“˜–”Š”Ÿ”•ŽŒ•””””—š•–˜””˜––”˜›”–˜“”’Œ””Œ—””¡”–””””“”•”—”•Š–•‘”‹–Ž––™”ž”’Š“™—‰”Œ›¡’•’—™™‘¢”“™›“’‘•”•””–””“›—–“•’””””””™”œ˜š˜•””•™›—””•””””””œ¤’–•““”‘“œ˜—–””‘”“”‘¢œ”””“”’“›””¢””•¢”“•–•”“œ––’•’””“”™”’–”š›˜—”“‘””Œ”—˜«–””””—Ž’”›””””–—–”›—•‘•”˜”˜”’™”š••””•”˜””””•––•𛓔›–‘”–“”–“””•˜”“”𔑔”•—˜”’”•”•””™”—˜”š‘—š”—’™”“”“”•”™“˜“•”‹”’•‘•‹––””–••””””•””˜™˜”’”—”””–”””’”—–“•’’š“•”•”•–”“›””••—”•”š›–“˜‘”™’””™˜˜”›““•””—•”™•‰””›•””—”‘˜—””“–——•—™”–““”’”“œšš›™˜”’š•”ž™˜—›””””“•œ’•“’’’Œ‘š“ ’’‘—“•’”’Ž’›’“’“”““’’’™™“š“’Œ•’—”’’ž“‘˜’”š““—’”“œ—•“š“‘“““’™’•™”’‡˜—–“ˆ“‹•”’’“‘‘—™“–“Ÿ—–•–“–Ÿˆ™“’•—‘˜–˜“•““‰’“”–•‘’“““•“’‘“–œ›“Ÿ“š˜™™›š““•“šœ’Ž’“œ•–”’’’“—š”’––““’‘™’—Ž›‘Ž““““““ž““–œ“’—¤’Ž––”“––”‘›”“’‘’’›’“œ˜‘“›œ“–”’“‘–›”’““’ž–’™˜“’’’¢ž˜’™˜–™”“—’Ÿ“’›¤“‘”—‘““’’“•“–‘‘ššŸ’’”’ž‘‘–Ÿ“™“œš‘”’œ—“”’’’“’’““š”“œ•“–˜“–‹œ” “œ’™‘‘ž™›˜Ž’ž–š’‘”—“’˜’’£š’˜–’‘’’—’“›•‘‘’““’“’œ’‘–’ž”“›š•šŸ”’““““•’ ’“¡™’‘“–”“˜›œœ™“—’‘  šŸ “’“–‘’–™“’•–“’˜“’–’““•¨”•š˜“’š’’–ž›™™“”–’šš˜¡’’’˜”–™“”–š””””“––”–•š›˜”˜”””˜—”™”””’˜š”””””“–••š””žš”–™””””•–”””•“›•”˜•£”•””’”•”””‘˜”š™–™¡”›–’—“›”™”˜”™—›—™”—–Œ•”–“–™—””‘‘“–˜—”“””–””™—’™“”š”””—””“”˜‘™˜“”–—–“•””•”™–”””—’“•”–”•—œ››•”•˜””—˜œ““˜”””’””™šˆ””˜–””•–”—•”“™—–™˜—”•–”•˜””•™—–•””¢‘”˜––˜”””•“”•–Š”“•””””‘”š™™˜ž”¢”Ÿ“””‰š’””’˜—”””””œ”•š˜””¢ ”›–””“””•ž•–”™›˜””œ“’”’””–”””ž”’”ž˜™˜˜”‘•¢’“–”œ”“Š”™››’–”¥•––˜’’—’Žœ”•Š“”š—”’”””””˜ Š””™”””—””””™•—£‹”—”’š™””””›œ”””›š”“”—”•›š œ‘”—”“ ¢“‹–Ÿ”””›“”–’””—œ””™š”–˜‘•””š’”˜ž”§™””™””œ™”–”–”›” ›œ˜˜”””“–•ˆ“›“““’’—”Ÿ“¡˜—“•“—’—‘”•’’•–“’“’’“““““˜˜“‘“’”•Š“•–“™•’’“™”“œ™—““™—’“’““”“”’˜“›š’™”š—”“››”‘‘˜“”“Ž–“œ–”œš“™–œž–™™˜’™““¢š”•–”“‘“’”““”›˜”‘’˜”““““’š“š–ž™‘“˜•¦˜—““”“•š’”’“œ“š“˜’“•—–™““œ’“š•š‘’˜—“’“”’“¤˜‘““•˜““ž•“œ‘‘””œ˜™˜™•““‘’“•“•™“ž›˜ž“¨’“œ™–™– ’“”“™”™’–¢““’’¤™’”¤™²“Ÿ’¡‘’¡’ ¢“’’››““’“’ž—“žž’’›—’•™’™•’‘š”˜“ŸŸ‘““ œ”’’’’““’ ’  ’™•‹œ›“–™•’ž“›““Œ‘›š¢™““µ”‘“•¦‘‘“”¡Ÿ”˜”“’’“›’“¡Ÿ™˜’’Ÿ“““”’’—’•š‘—ž“”——Ÿžš“““’˜œ’ ““šœ“’“““š£œœ¡˜“›’’’œš™§§›•“’““’™›¡““Ÿž“’”’”œž”““”žš™•Ÿ“‰™“’”’“¥ž©ž—“Ÿ”’Ÿš¢œ’“’“’“–”˜““—“”““–””“£””’š“”“—•𔓙’”“”’˜””“””–—“›˜““•˜•“š—“”•”“™”””“’”š””—•™“‘““•“”“‘”•—–——”“™–—˜’““””›“•”–’’“’“š”—“—˜“—“”•“”’““““““–““’š“”“—“““•”“”“˜š”–”˜””š””““””–Ž’—““•“—˜”™–““•˜˜”‘““—“”’——“—‘›“““•““œ––““•“““™”“–”—”“”—““•”““–””’““—˜–”•—“‘¢‘“œ˜—––“”•”’—”˜š”•””˜™–”“™—”˜”•”•—”–”—–˜””–™—•””•”—“”–›“”—••”˜–”œ”“–•••””–˜””‘˜˜”“””””””“”•–••™•˜•”•œ˜”—””••””’–š˜’”’‘•’›”““”•” “™“Œ”•””œ””˜‘™“”š”””“””””›œ“•–”‘’’Œ—˜””””—˜”™””’’•’”••””™”˜–›”‘’”““–œœ—•”””•””™™—””˜˜”””“”™–”””“•š™—–”•””–””——™—””—›”—–™–’“””““š‡w“›““’’œš’“™˜—“—“–“‘‘™’›™Ÿ“’•—’”““““•–’‘’’œ˜•“œ•’˜”‘‘˜ž“–“˜“”“–ž‘”ˆ“’•“”’—“œ”“–‘—˜’“©˜•—”“Œ“”’“𙕑‘“Ž’›“‘Š“”•˜˜““–œ”˜••“““”““•—ˆ—’’“““”’“£““–“›£“——“‹ ›““”“—˜’™““•”‘“”““’––˜œœ“Ž˜““š–‘›žŸ“““’’“•Ž““‹˜“’š˜“‰•“““—–ž“—™“‹”“““’™›”™”“Ÿ““—ž“–•““‘’—“‡’Ÿ’’’’•˜¥’˜––•˜’’‰‹Š–‘•“Œ“‘š›’’’‘’™§’žœ‘’–“•’Ÿ‘’ ’Ž”—’Ÿ’©ŸŒ”’˜”—’”’’’‘’’£’¡‘Ž›”’”••‹•’›’’œ›™’–‘¦–Š‘””’•’“ž“ˆ–’“‘š’‘ž›•“’“’’’‘’™’˜Š¤–’šžŽ¢¡’‘’’–£’•‘“§š’’”““ž›’‘•œ’•Š’‘—–—…—”‘’’§“˜–„‘’™‘’’•–’”œ–“’›™—Ÿ“—“™“‘“ ’‘Ÿ™Ÿ‘‘ ’™†’’  •“¢™’“–”•”’”•–””””•”’””“•“•”•”•”“•”•”””•••”””””••”••”””–‘”•–””’•“•–”’”–•••”““’””””””””•””–”•”•”””““•’•–”•”–“”•••’•”–”–”–‘”––•”•“’”•••”•””•””•’–•””•””””””–”•‘“•”••”“”••””•”•–”–””•‘••”•””“•’•––””“”””•––”–‘””•–””˜•“•”•’””““”’•”“”•”•‘”–•”””“”•””•–”“’””•”””–••”˜“”•”””›•”•™””””˜˜•”—™™•š”›”œ“™™””™™”””˜š”””””™›•™›””™™””•š”•˜””œ˜••”—™—””š–••”””•”””™”˜š”š••™š”Ÿ”ž‘••”›”•—”™˜œ–—”‘›œš”š””˜”’”””’”––”””””˜””š–”›””˜””””””–”™˜–›””˜—•Ÿ›•””•”œ›”™””˜™”””—”•›˜™™•”•—”“šœ›•›–“”””›””œ™••”š˜””–””˜™”—””–™”–—›”””””•”•—™––˜–”–•–”›™šš›“”””””•—””˜””“”––””––š—”—“™“–˜“š•””“˜—•””””—–”•—”“—™Ž“••”“•’“š—“•”•–”””–•”””““”””˜”––”——•˜˜”•’Ž‘’•”–”“–“—–˜”—”‡––“”–“–™‘•””–•“˜˜’”“”“•””–Ÿ“˜“”˜”””””“—”—”™‘”•“”••””””™™”˜””–•“•”—“”˜—•˜˜š”””””›˜”•—–“”””˜““”––””–•””˜–””™–””“’›—•™˜”–˜””™”’–™‘––•”•••”––——”•””””—”“—”””““”•””———’–”””•“˜•“œ——””“—•“””“”“—”•–””–”˜“•˜”˜•““––”“””•—””—˜“”“””“”””•”˜•“••—–“”•–“˜“–”–“•‹“˜–—’˜””—––”–”••—””““’–•–””””“”””—’˜””•“”””””˜”™–––“–•–”•””””›š”•””˜–“˜”•””—•–—•—”•–”’š“”“–•˜”””—“““”–””’•””•™”™—“•”•——•”––”˜”“”𔓖˜–“˜˜”•‘””••––“’”””””——”˜–””““—•˜“™––—˜”—“—“˜–“ž–•”““——””””“–š”––”“”–”“”—“™—““–•“–”—–˜””–”’”“””Œ””“•”•˜“—”š•–”—˜•—“•”–””“™•–—–””––™“˜””˜”–“”˜••—”•“”““–””—’•–”“™“””””“˜“–•™•“”˜˜“’••”””“—–”•“”—–“™”–””š—–—••””—“”•˜•”–——““”–““”—“””“–””š›“š–•””“™–—–’–”’“”—”“•–•–—˜”“š’”–—–•”˜””””˜…”—–””“”“•–”œ”•‡–”–“•“›•“——–”“”——•””””••“•”””•—“–š”™›““–—’•”–—›””—š“”’”“••”“—”—–——•—–”•š—–‘—”™•”™“”˜•”–”‚˜–˜”›’ž“””•””™“’”‘”’””””—˜—’“•”””•–”˜”›˜—–“›——•”—”•••—““•“”›““”—“”•–———™””›““–š—”˜–”””˜“”—Ž“”—–””𙓖—’‘•’›—š—˜•””›’”›“’–™›˜—›”“¦•”––•–“—“”“”™œ˜””–””””–•””˜—˜›—”—”˜”œ˜”••””“•—•”””•–“”•–””–—“”•›”˜’•”™˜••”–•œ””–—–”“””“”””•”˜–“—”𖕔𙕒•”•”•–”š•—”š”˜˜—”œ–•š“””•••“––’”•”””””••’•””—””””””𔓖”–”•™˜–˜—–””••˜™”˜””˜••š”–•”™—•——–””œ”•š˜”“——›”””–”””–˜””—–””™””–••”–—•˜”—–”•‘•”˜”•–••—˜–”•Ÿ•”˜–––”–””“”˜œ”“•–””””•”•”””™ž•“–”—’›—“’˜•”””••“““’“–“””•””•–š“•™“–Ž”’—–——”•––””–•–”“”“””•”–”—•••š––”“—–”•–”–“•“š•••˜”¤œ——”›–“—“•”“”–“—••”–””•”””‘˜—’”•””””““˜”‘–”—˜“˜—––˜—”“””—˜””“”——””•‘”š–”–—–”“›”•š–˜“•——“””•”“–•””•—”“—–”™–”•””“—•”–—”•““”–”“•••—•”•’“”••••‘•”””“–—’“““””““˜•–“—•”””—“–““˜“¡–””““–”””“““–›”‹˜“““—““–“›•“’—‘’—““—””“–“–”“““‘”““’“—”“““•””“‡™—–––“™“““™”™’““œš’’•““–”œ““•™“”“’“’““œ““˜˜“•’“–““”””“–“’–š˜“™›•ž“•“””““”“”““˜’”“•’“˜–“—“•“’”““•œ”’˜˜‹“““”’“”•““•“““–“Ÿ˜’‘”•—™•’“•”’’““ ““˜œ——›“’š’“–“™Ž‘“”“””•–”–—””””–——”—˜–•—”˜”—•˜—”™—–”””˜—”””””—••––””—–•”–˜”—“””——•–”˜—˜””–––”•””””””—”•—”–—˜––”—˜”—”–”—””””––—˜—”Ž–——•–”•–“”””—–”—••””””–””—“”—””—””””””—”––˜—“”—˜“——–””••˜–”—””––•˜•—””–—˜——˜”•–””——”•˜——”””—””“—”””—˜””—•”˜—–”””——˜˜——”•““”™””–—–––—”•˜•”—–––”˜””•”™¢Œ”——””””˜˜ž”¡š—“–”–”–’¡–”ˆ•“”””—•”””““– •˜—””•—‘”—Ÿ”›““•—“Ÿ”˜—¢””£šœ•””“““””˜”——’•—ž–“”’Ÿ•œ”””“”Œ”¢—•˜–”¬œ¡¤”Ÿ’—¢•™”“ŸŸ”–•“”’”’–””˜”——’”—””””“”œ”žžš–—“¡œ‘Š˜”“““•š“–“”œž“¢””‘•¤–Ÿ––˜”“”“™–––›——“””—”“ž—••””ž””Ÿ¢”¥––””“œ•˜–——””““”Ÿ”“—žš–œ”•¦””˜–˜•‡ ””””›˜ž”•—””“””––”™—–™•”•”““š•“£”•””“—–””“””––”••””•‘–””œ“›••”—”•—”••›””•›œ”””•’”””“”›•”“–˜•””’š˜š•–””•”–”˜–•–™”„™—’”––••–˜”•——“–“•”•””•””•“—–•”–””””””™”—™˜’š”šš–š–”””””—•”–“”˜–•œ”••”–”–”––”•ž”””””–—”š”””““””•™•”˜—””˜—”•––”“–™“š•—””••”–”••—›˜œ™””œ•””•••“•””•”˜™‰”‘””””””””’•˜–”“”–“•’”’–“”“““˜””””””–”™‘”“••”“”’•”””•”˜”•—”””˜—‘••””“”””””–—”—•™—˜”•’›˜––”–”•”•’“™–”›™˜–”“••—””—••™•”””””Ž””‘—’—”““””””””•”—“–”•”—–•›˜’””””–•””””˜”–”””•˜—••”‘””•””—”™”•”‘”””˜””–’–””‘—””–𔑗’””••“•”—””””“•””𗔔𔔖„“”™“•”™™””””•””–””““›”’””˜’Žš”–“š“˜“‘”—”““”˜”””””“•“™•““–™””𔕓““•™“”–š–””—–•••”“•””““”–—”›•‘•–”™“–”—”™”“““—™›‘”‹““–”‘“•’’•“”•Ž—–˜–”“”””””–™–“”“™””””“”“”Ž”•—”–”“˜’”””””—”›“”——“‘”•””“—–›—‘”“‘““‘™•——Ž”“”–“”’œ“””““”””‘“Š•””“–•””“—”•””“”ž•˜•—””–˜“”œ˜™›•“””••••••••••••••••–•“••••••–••“•••••••••••–•••••••••“••••••–••••••••••••”–••••––•••••••••–••••–•–”•••••••”•••••Ž”•”••”•••••–••••••••••••••“•••••••••–•–•–•–•“••––”•••••–•”••••”••–•••••••••••••••••••••”–•••••••–••••••––•–••••––•–•••••–•••••••”•••••—••••••”••••””’“”š—””””™——””—•›˜”•”™”–“”•™—”””•™””””””“”–˜””•–—”–™”—”””™™“–”—–š””’š–•“”””””–”œ˜”–•’™—” –•””•”—””Ž”™••–š”š•””•”—’”””•––˜•“””””š””š–’š””›””””””˜”•˜”˜˜”“’”›”””””š—”˜””˜–”•”˜””™••—™˜”•𔕖–“”•—˜””””””Ž˜”””•’”””ˆ”—™“’”•’–š–™—””‘””—””’˜š•š–”“ ””——”•”””””””™—””•””””–”–”˜–“Ž•”–”—–—–”™–˜””••”•”””•–™”•–””––”•—”–œ••––”˜”••—””š—”“”•“•””–”š••–”˜––”™š‘–”–”–•“•””––“‘”‡––•‘Ž”™”™””–—”–––”“”••””•‘“–””–”””–•”•”š›”˜‹”š˜—”™•””••–“”•””“˜“—”••••––—–”•’”•”–Ž“™–•””•””™–•””“š””™•”˜•”“•–——”–•”•””–”•š›œ˜”—¤•”––——•˜”””””š‘“”•””““•‘•”œ™––•”““˜–‘“Ÿ•’”“”“—””“”“”™“—“’“’—’“‘›“™““——”—”•–š””›˜•”“”“•””“•”›•”˜“š•—”›™˜ž“’”•”“•“›–””›”›™Ÿ”œ’“š“œ””–”–”–“”“””’””“‘–—““”””””“”š“›šš—’”›™“˜“””•”™•”•””–›”Ÿ“”””š”˜–”“”•™““œ“Ÿ‘™•›”””˜“”œ””””“™””™Ÿ“¢“”•””›—–“–—”–“”“›””•š—•šš”“—””˜”•”œ–””””˜—””˜™””””——˜”——›—˜”—”—”˜˜”›™˜””“™™”””””—–•–—””™˜˜”——”—•””™˜”—”—–•””—˜•”–””’”””—”˜—•š”—–š”–˜˜•“™•—”•‘”˜—˜–š”š——”•••’””—””—˜“—•–”•””—””˜——˜””˜””””””–”–˜–˜–”—–””˜•””•”™œ”š””˜—””•™””™–˜˜˜™”–—”•š˜•––——”””—””“˜”””–—””˜˜”—™•”””•š—˜š˜•••””˜””•˜™——˜”—”•”——–˜•—””•“••–’“”“””“’“•”””—˜“““”’’”““•“““•”“”“’’‘““—’”“’”’“•“’•“––•”“••“““”“”““–“””“““”””“–”‘“”“”“—•›•”’““’“”“˜’’”™”¢—”–““—”–“–”“”“““–•”•”“““““–”“”•’“”“’”“•“•“”’•‘–•“˜’’””“““—“”‘”˜””””’’”˜””’“’“‘–”—’“”“’”“”””“’‘’–””””““•–”“””–“””““”““”“•“”•””“’—“–—””“““““’’’”””˜”“˜–””““‘•˜”—––•“•““’›—“˜˜—”“”—˜””“””——”–•”“”•‘“—™““˜““•–“™”™–›””™“””‘““”””“™““—”•“—˜—”Ž—˜›š“–”’–“–•–•˜”—–šœ“˜’‘š’””–—’™•‘”’““•””–“’–’“•”””““”–“šš’•—”˜•“’—“”””””˜”•“”‘š“š”—“”——“•––”’˜“’—–›”’—™”””˜““Ÿ•”””–™”“•—“š˜’•”•—–•••—””””“𔕗’‘—•”‘œ•”––••™™“”’““™‰“”•“”““““”““”—”–“““”“™““Š•’“””˜”“““’”••“““’”“•““š”–‘”’””“•“““—““–™““”“““”–“™’’”˜“•“™—š–“’““““”“˜“’”•“…”–˜’–””š“””“”“•”–“’““”“““‹’–”””““““”“˜““™“–Ž“—”–Ž“’““““–•”–““’–“›””““›“–““˜““˜”’““““•““”“”““‘“•“““–““––”–“”“’‘”™“•”“••“”›”’’˜““š•““““““““Œ”“”””œ˜’”——””””–—”š—“—”˜”—“–˜”›—•”””˜—”””””—™•—–””˜—“”—˜”™ž””——””˜—•”” ——”•””””””˜”™˜•—•™——”•—–—’—”˜””“”˜—˜œ–”š• ›•—“”–“œ””™”–•–”“””–””—•——””—””””””˜”¡››˜Š”™•”›–””””——“—””šž”™”—””š— —˜˜””–””˜˜—•—•”””˜””š˜’””—ž””™˜”˜—–•”“›˜˜™˜—”•”””—””—››Ÿ˜š”–›•”————™””–””™š”–•””““–——”“–••™”˜“—““–“¤”–”“”•—”””””–“”——”“•—–“–•””—”“š•”•”——–””—™•””””’””“•”—š”–“˜—•”••“”—”˜”””“—–™–””–š–””˜””—–””˜—”–––””””–””—™•˜”“•””””””™”—“——”••––—•””””š˜””””–•”˜”•””˜˜–—––”–™””–™”•˜˜Ž”””™”””˜“””•—””—’”“—–”””‘–—––•”“”””“””–—‘–—””––•”–˜——”—””–“——•“š—”“““”𛓔𙔖”›“–“——“Œš–”“•š™”““““—š”—›”“ž•–“𙓛™““˜›”š“š—‘”“œœ””““—“”“ž“š˜”˜“–™œ“‘–“˜•›“””›“šš•š–“–•š•’•””—”“”—•”–™—““““˜““š™š““”“”“”““™“•““–“—”“§—–““”“›—“—“”œœ“–“”““š—œ•œ™“•–“’ž“‘š•–“““œ“““–””“˜š““™”“™˜’•“–—˜š›—™”•““–“””›™—™™“–““˜˜–™”—“”•”’“‘•””““–‘‘”—Ž•†•“˜”˜‘””“•–“”“”“•””“““••”•–““–•†“‘—••¢‘’˜—“–”“•—””—˜“””’””””•”––—•šš”—”™˜–’•“—”•“™““’•”…’›”šŽ“ž—””‘Ž‘•–’”‘“’•”“”•”–’”•”””•””—”™•›–Ž“›˜“’–”•““•™”–“”•—“•”•’”™–’•˜•”“™”Ž“•–•‘•‡“””–’“””“””’•””—Ÿ”Ž“”“”‘˜”—”–•””›””œ”’•–”Ž™”“’“”–”–•˜““”•”—•””“•””””’™›”“——”””–”•””””••—”””’™”””””•’”™–””’–•”••”˜˜””˜—•”š™””•—“•”””•”””™”˜™••”—˜•”•›˜“˜”–””–”–“’ž™”’˜•”’•“—”•””œ”—–“””””–””•”““”””””””””˜”—˜•“™””š–”˜—””•””˜””””•™•’”—••™—’’–•”•””“™•–”—•𔔔𔔔““”””™””˜’”••”•”•’”™—•—”””””˜”•š—•”—•”–•”˜””“”™””“””•š”——””””™˜—”™˜•‘™”–”–””—”—•˜”””—–•””””–™•—–””•˜””—–”–›””––•””—–•””””•”“””””””•”“˜•–“––“”–””—“—”–”“˜”•–𔕔•š™–•“•˜‘•””˜•“—•“””””—””—–’••”™””””””–”™•˜–—”——“••–””””–•”˜””–”•—”—••“˜’™–˜””“”•”™–—–˜˜”•”—“”•˜“””••””“™”‘–“•””——’•—•••”””–”•—–•””–”———”™———›”””•“—œ““š“”““”—•“˜™›“–“–“–”ž—’Ÿš””““šœ“““““š™””–““——“”˜“š’’“™“•“–“›”“˜˜““““”–“““—“••’˜‘˜•›”š›—–•’“”””•“™“”•œ“‘˜—•“œ—’”“–”“——˜—˜“““”“““”‘™““–““““’“•“–¢’—™“𔑑˜“““”“š›“˜““˜–“˜”—“”˜•–••›“”œ“”™–‘‘—–•“““›““”•‘““˜–““›•“œ™””“•˜™š”™™”–”“˜“’•˜—š˜›““““˜•”•”—“”•”—˜’”•“””“”””–”•‘••”•”“–••“’”—”“”••””””””˜“•–““••“”—•”——““”•“””—”•””’˜•”“””””””–”••••’––“”’•˜˜•“”•”‘’”–••”“”•”•““’“”—‘•””“”•••“”’”“”””–“‘•““•””””””“”š”™•™”—•”‘“””””””•””””—‘“””–””••’•”•”’””“–•›“’–˜”””–““–‘””‘””•–””•’”””™”–•”•”””“”˜”“•—˜•˜™”“”’”–––•”“”””•˜””š—””””š˜”—š‘—”•”–“˜”“˜•’”””“–”””””–—”•“”“•™—”–˜”š–”“—•”™””–š””—˜—”“”””””•”š””–”›“””šŸ—”“”•”•””˜–”šœ”˜™—”˜”•œ•ž””˜˜”—”–””””™””–œ•“”“™””””””›”–•ž–’”™›”…™‘””””—”•””˜˜•œ”˜””š“–•—•””˜”•–•š–•–›””””””™•—””•˜””ž””Ÿ˜“’””Ÿ”œ“š””•˜””ž”“‘–š™—™””›“”••““’œ”””“”˜“””“““‘”–“›˜•Œ““““”““’–”““’—”“““”˜“—”““““”“”›”˜’““˜“—””•˜”“˜Ž”’““•”““•“›”“•’š””“Ÿ•ž‘“”“””’’“™”’•—“‡™œ–“›‘•–”“˜“’••““‘“”Œ““‘““”’“””““”““™“”•™‘‘“™–’’˜‘“””“•”””“”™“•”•””›”›••‘”“ž“™™’™‘–“““˜““˜““““‘š““™•“™‘—””–’™“–”••““•“”𖕛𓕙““š’•’•–“”’”—–”•–””””–••”•–—’•”—”–”––”––””“––•””””•••••””—–“”––”–”””•—”–”•—–””––••”””••””—”––•—–—––”’–––•–”—”•””–—––•”“—•••–”“•’–””•–”—–•””””•””••“–””•””””””–”•–”——”––•”–—””””——”–””——”•”•””—–•–––””–”“˜–“’–—•”””—””“–’””––””——”•–“”””“––—––•••”•–”•˜–”•––”–”•”––––•–””””›’“”——””””˜˜š”“™—••”—”—“——””—š””“—–”””””–””–•”“œ•–”œ•”—•”””™”™”˜–•””–›˜•“””•”””š”š•”˜–—˜™”˜•”›”š”™””’”•˜—š™”›–”‹”‘••“˜””—œ•—”’””””–””••“—””˜”””•””•”šš˜—™””•””–•””””˜—”—””—–”’”—””••™–›—”•—””™““•˜—œ”””—“”—”””˜™””–š”™™•—””•˜š™™˜”—•””™””›—•š™™”’••”—–•˜’™””““™™–“™š““““—š“˜Œ•“˜“”“•–“˜–““‘™š”““’“˜–“˜—““™’‹“——“˜•”’–”›“š••”“œ™”“““•“”“š“˜–“˜“™˜œ“‹–›—”•“˜““–“–—–™“‘™Œ“””“•”—“’›š’˜–”“”“’•“”—‘˜‘“œ”“““”“š“˜–””“””•ˆ–•““””•œ’™’“— ’•””””›–š›˜““”“”—‘’”˜˜™“““š““–™˜”“œ““™˜“˜“”••–™˜š”“•““𓔛𑛛𓓔“––™‘™“”“”›‘“•–”””“•—™”‘—•Ž•“–”–••“”𔓒••••“””–’”•”””••“““—”•“““˜”›”˜–”“šœ“”•”””•””—”ž–”–——••“’š™—™“—•–œ“—••—”“˜’••”•–š–š””›˜˜•’““’“”•””•›•”‘”–””“•””š““˜•”‰•“•“›—•””•”•“””””‘œ——””•“™”œ•—•””•”•••š“œ–Ž”””—“”••˜””–›”””—”‹””•”˜’•œ–”–”””””—”—• ›œš””“••”—•”–˜“”“”˜š”–—””””–—˜””˜”’–”–”””‘•”Ž”˜””–•—”””””””•——””––—”—“””•”””—•—”˜–‘•”˜–—”””””•””–”—˜”––”–•”’’”‘•–”•”•›”•––––”˜˜–”•””•™””—–““”•””””–””—–‘””–”””•””˜”–’˜””’•”——””””“–”˜””–—”””•••––˜–—–”–‘””“—•—™–””””—””•–”””–—”””‘”••—•””—–•–••”–•”””””—˜˜–”“”—œ•”™–—•—•””•”•—”Œ—”””””””š–š•””–””Ÿ”™—˜””“–”•””””•”‘ž””—–””•”””™˜”“”•“ ””“”•””””•””’”—“”™”•”•”™š‘”•™”˜”•””š‘š–”˜‰ •Ÿ”“Ÿ•˜””—•–“’”””””””’–•‘””™””””””™”—’™’”™—””˜—””•”–””˜””•”š”—”•—––™™””—””—œ”’—””””“””™–“”””‘””•—”›“‘”””ž—Œ™””•”””—”””™•“—””•£–”—š—œ™–””“”œ––””™””””˜š™”›¡™•–”˜”š”›š”—––””•š—”””””™š•—œ””˜™—”›”ž•””™˜•—”™—””›™’••””•”•”—”™“—”——–”š˜–’”•”••”š•˜›˜”–”™–”•••˜•¡””›œ“•˜•””””•””——•–””˜””””””ž”™Ÿ˜”‹”›š”–›—””””—“”–””šš” ”—”•–•˜––—”•–”•—–—•Ÿ––”””–””š˜•””œ””˜›”›“••””š”˜–•—”•“””””“› £˜™”– •”•˜˜˜•™””””‘Ž™”–‘””””––˜”–š•œ•”””–“’”“™”””“”—“”””•”•“”—–”“•–—””•”•–”””—”•”–•“”””›”””•“”””˜”””•–•’”’”•““–’“”–••‘”•—”–˜”¢’˜™”‘˜”’•˜”•˜˜’’•””–”•“”””•”–•“•””””””””–•’—”’•—”˜””””—™”“””—–•‘“—–“’“–”•—”””——“’”—”š”””–””—”“”””“””’–”••“””“—’•–””•”•”””““•“•–”“–“”•—•˜—“”””’•—•’“‘“”““’“—Žš£—’““—›’’—•Ž“”“•”’“’‘““•‘““‘“’”˜“’›“˜–“‘–—“’“’’—’““’“““–’““–“”“‘”–’”“—”™‘’“”’’“ž’’‘™“˜›’–””š’’””‘“”””“““‘’“““•”™“”•’““’““”“•‘•—Ÿ’™˜”Ÿ’“’““˜’–’“˜“”“””“““’—“‘˜”“›“–’—’““—’“‘’“’““’•›“—•”•’‘”—•’––“”–“”™”’˜–™—““”““–“““•“’”“”–ž”™™””““”™•“’ž˜›”–““š—“•œ•”“”–™”“”““š““—““–™—“Žš”š“““œ˜“˜”•˜™””—™‘”’”“•””“—”œ•“—•›˜›“Ÿ›–”š”›””‘”œ–—™ž”š˜¥“œ”– ”š““˜—•™”•“”““š””™•’š”“š”””””“š”›˜š›““›™’—˜““”“™¡“š””œ•“œ”–““ž˜˜˜˜™”“—“”™——”——š““”—““•”•””˜•”“š˜“›˜’•””˜œ™˜—š””—“”ž””‘›—œœ”“™“”–•–—”˜“”””“”““—˜”””“””•”’“˜˜”•”‘•••“”‘”“”˜›”””““–’”——““–””””””–•““—””‘”•“˜”“•–”’””•“””•”“—“–’–•–“•—–””“““““”–“•”™”•”Ž““”“’—’–””‘””–•’”“”“•””–““’”˜””””“”””••˜”—“”—“Œ‘’”””“—™”™“”•’“”˜“•—“•“˜”“•”“’”–’‘’˜“””–““š—”””˜”“–’””˜“•“••‘˜–˜”””•“”™””’”•”“•””•””–•”“’””“”–š”””•”•”””“••›˜–”•””•”•—””—”’•••••”””•••™•”””•”•‘””š•š’“”•••””•”™••—•””•••••••”—•””“–””••˜•”‘“””•’˜•—””–••‘—–œ”˜•œ“™•••–•”•””“”•””””“”•”••””””•”™”˜˜™”‡•™™’”–”••••••””•”š˜”™•”••–•—”••”•••”•”š”™”“••”••”™””””•””••••”•”“œ”•”••”––••š•””—œ—•—”•ž””•””””””••”˜–“”——””””–—•””–™•—”—”—“–—”’—˜””•–—•”””•–“””–•”––•”––”˜•—•——”–”–––””——™••”•’•””•”—–––•˜––”‘–˜–“š”—•—•”–•˜•˜””•–”•––•‘“””•–—”——˜””””–””–———””˜””””•”—”•—”—˜•——–“—•””””—˜”˜•”——š–•˜–•–––™——”•˜”˜–—”––˜™”””•””“˜“•”•—””˜—”•–”””™”—–—––””––”•”™•—••—•”˜–—”—–––——””•”’’•”›–””””–•“”š—’”—”–”–”—˜“””˜”““––”””““•–“–˜““˜–“””˜”–™““”“”’”“™›””’–”•”””’””“–”——””‘–˜“”›—••”˜”™”“Ž”——™“‘”–“™“•”“›’™”””•˜˜•“”“””š””—“”“”™””””””•”—–š–•”–•”˜’˜””•”•””•”””’“—”•””‘—“˜™•”“’”““™›”˜–•“””’“”˜—–””’“””“’”’–‘–”•›“”••“””’”“—””“—š›˜–””œ“”•–˜˜™‘””“”’‘””š–””””—–”•—””˜”™”™”˜™”“•–””•—•””””””–””™””—™–”“˜”“–””˜—”’”–˜›””—•••”””””””“””˜”–”•”“”–””—”˜””“”–•˜‘“”“••š”š•’˜•—””—–””—•””””ž””˜”’–””™””””””—”“•”™”–“”˜•™””””˜–”˜””•””˜”–”””˜˜›—™””•”••œ”˜˜”””•””’š’””•–””“””˜˜•””””™••˜•”“‘””–””“•”—–“”–œ•”–˜˜—––”””””•˜”˜˜””””—˜•”•–—–—”˜”—”™˜”˜——”””˜˜”””””–”•—˜””˜—””˜—”••”“˜—•””™——”””—•••””””””—”–˜”–•—˜–”“–——”˜”—”•””——˜––”•–””•••”••”””–—“—•–””””˜””™””—””˜””””””•”••”––”—••”–—””””—–”—”””•”—”—”••—”˜—˜”–—””–˜–—–—˜”””—”””˜”””–•””˜–””˜—•””–––˜—˜”•””””””–—••—•”–•–”———–’—””–“•˜˜““”“””““’”›—š“““””’™““›“””””””“““””“““”’”’”“““–”—’”’””“’“““›“”’“””““““”“““’”™“““•——œ’““”’˜“–““•—”’—™’˜‘”—‘•”•’“”•“”“”””“””‘“”””““””’•””“›”˜“–”–—“’““”””“—“”““•“™””•”—“’“’”““˜”’–““““˜“”“““”“”““‘‘““—š”˜””””“š“•”•“”–—””š”’“•Ž“–““—““““”““˜“”””—˜”‘–””””˜”•”œ˜“™–•™”š“——”•””““”””””””˜˜”—””“”™–”›”—–””•—“˜”–—˜””™“’•“””””””“”˜˜”—”™•–”—˜£‘”•”—””’”–•–š—”š”˜ ”—”™›•›””š•”—”–”””””””•“•”“˜””””””–”˜—˜–›”š˜”œ›–””””•””—””’™“š”–”“—––˜–“”“–””—˜”˜——”””””””›–›””˜™””–™””•”””˜–””“–”••””—””•–œš™—””¢“”˜–˜˜“š””•”’œ”“˜””””—’‘”–’—”™”’”–”–’“Œ–‘”“””š”””””˜™”–“”“’™•”“””•‘•“𔕓”””—”””›”“””’“””–”˜–”–•—“””–™—•Ž”””””••‘“™”“””˜•”••”––”“•—•””•””’””––•••“•””””“”•”š”˜•™”••“”•””“““˜–”“””•’”š”–””˜“’’””“–”•”•–”••›”“”–“”˜“™•””‘””–—”˜™•”””›‘–•—”“““”•”“’–”””””–“”–““š””•”–”–”˜–””“”•šœ”˜—˜”•”•”””“˜“–•ž”“”–˜”””””“–”™—”“—•–”––”˜“““•›”š”›•–””˜—””””””””“–”˜—”™”–˜•”˜—‘’ ”“”“”“™••—™”““—˜•˜•’š’—””œ›“—“””“””•””•’˜•““˜””””””š“–”š˜›”—˜“•—”””””–•”—””™™“’”—””––••˜™”’–””™–—–•˜”””˜“”›˜‘””––””™•““”’–”“•˜™˜—•””””””“”’™˜–——”“¡•”›™–˜–—“””•–•“•––•”””•––•––•––•—”—”–•”“—–•”“•–••”•”–”•—–””––•••–”“”””––•—••––••—•–•–••”••”—••—”—–•˜˜•“”›—”—•˜••“”•—–—••˜•••–••š•“”•”––”˜–”••••–•••••˜•”•••••”””•——•—••••”“—–•”•”—–•••••–””•–••———–˜••••”•–––––––”••—””•–š••——•””“”•–—”•••—”–˜—•˜•””•••—•”––”•••”•–•–—–••”””“•”“”””““’•””—–•”–”•””“™““’••”“••–””””””‘”Œ’”“”•””•””–’”“”‘••”‘–—””˜–“”•”””””“•”—‘””“™“•””—š™”™”™””•““—–”—”’™–“””“•–—Ÿ”””“”˜••”“”””””•—•“”“””””“”””™’•“”“‘””–’””””•—”“””•˜”™”–•”””—˜“‘”“•””••Œ–—–Ÿ”””•“”Ž‘–””‘”””˜ “›—””””™”••’•”“”“”˜“”——““—™”—””’’‘––“””””˜š˜”žŸ””““œ–—“Ÿ•›•œ”““š’œ”“¦š˜”“”™ž””””“œŸ”›“”“•–“š˜“–™““›“˜”–šŸ“”—Ÿ—”’“”’””“˜”žš•ž” —›“ ž•›”•”””•“”š›–—”Ž›Ÿ—“›•’œ–ž“”–˜–ž•”“”“”™“”›—›”“™””””””“Ÿ””™–™˜“”””Ÿœ”™“”š–” “—””›™š˜˜š””š“”š›——–šœ““”›““š˜‘”“š–““Ÿœ“ž¢’“””¢™Ÿ›œ”““”“ ””•›—š ™“’ž‘“š˜——•–“”“•”“••••••••••–•”•””••••••“••••••••••••••••••••••••”••”•••–••••••••”••••–••••••••••••”•”••••’•••“•••••–••••–”•‘“•“•’”••”•••––•••–••••••••••••••••••••••–––•–•••—“•••••–•••”••••••••”•••••••••“•–”•••••––•••••••••••••••••”••“–”–•••••••“••••”•••••–•••••••••––•••“—”‹”˜—””“”•™—”œš—–˜”—”–“•–“ —›”””——•””””—š”––””––•”˜””•—““—–”™”—–“””š•””“”“””””–”——’•”™˜–“š–—–—™”—•”Ž“˜—™—š”ž“™š”—™–•–—”•˜›“˜•””“”•–”•˜–”—’”˜”””“””—”™š˜–˜“•”•”œ•””””˜™”—•”–™š“”–””˜—™™—˜””•””—•˜š˜”“””–”“•˜”’”™œ””–””“˜”•”•™–———–”““•”•”—–˜—˜——”•••”—––––“”•”˜˜Œ“•–””““—”˜“š”˜‘—”•“–“”“’˜—”“’”–””“““•˜”–˜”“•“’“–š“—Ž“’•˜“š”˜—š”“–™‹”““””“”“–”˜–’”“›—”“¡˜˜œ’—“˜”““™”•™™”–™“š“•“›“–””˜™’–˜““’““•“”–˜“–’“š””””““˜“œ—˜–“™•”“•””“•”—š“—“””–’™”–’”˜—•™˜”“š““˜“““– “””—““š”””‘—”“˜—““–‘“”—™˜™•™—”•—““˜“”™™˜•œ—”•˜’“š•–”˜œ“”””—˜”–”””““’••“”’–˜•””“–“••““––”““›•””””“—–“›•”“—–”“™™”—”””–—”—””––””’™•”’””””“𔕔”—˜–˜–””š—“•™”–”’‘“—™”—–”œ™”–”˜••’”“””•—™•“””””“”“•“𔓒”””””“”“•™˜™š”™š”—š”””“™””•“”™””•“™”““”‘”•—”“š“”š”“””•““”™“”•‘”””““””—˜“‘”““”••˜—˜˜—”•“””–””™•˜‘—™”’š“”–•˜—˜”“”“•—•˜”’™””””•—”—˜–”—”–”˜–’™”–˜œ””””˜••””•–’•–˜””—–“”™”•–”••—•–˜”—–”•”•˜•”•”•”•””•”š••—–˜š—”–”›•”›”–•–•”–•˜›—”’˜—˜•–”–“••”•šœ“š—””•””””•–––—•”š””•”•”–”—–—•˜””“–’š’”–••—•”—””—–”‘•™–”™™˜™˜’”•˜”––—‘˜™˜”•”””””—”•”—–””š–”–•–•“—•–›–˜”––•”“””—š—™›—”••”˜––˜—˜””•””˜—“––””””•”–”•’—–“–”•”˜•”–’””•––””“”“”˜””–””–”””˜”—›““—•••”••—””˜––“–””““•”•””–“”“—••”‘–—’•”–”“‘”••–˜””™’”•“’™“’””•••–˜”“””—””—”“–’”—”””“””–”•–•”“™—–’””””“–—“–””•—’𔕔”–•–––—”“˜”““–˜–••š“””–”“›—’””‘–””–™”•—””””–••˜••”’–””˜””“—–‘––”—œ‘””•••”˜””—”—•’”–”””””–••”œ“•––”–”–——•”–•”””•””””””•••••“”•–“”•–”—““–••–”••˜””•—‘””””•“””””˜–“•”˜••”——’””•”—”“””˜••–””“•™›”˜”–’–”“—”‘—–””’”“–””••’•“”–”””•“”•”—š—•œ”˜•“™—•”””“–””•””—•”–”•“”˜–•———”•›””“–““•––””””“”’–“”””–””–˜”•”•”“˜•—•˜””•”“”’””•–˜•˜™”—œ–””••–”˜””””•““”—–””””——–”‘›–˜–”–”–”–—”œ––””•––”””””–˜••–””–•””–”””™““—••™”—–’””™•“”–””””””•”——”••“–•”’“™“–”–””•”“–—š””“’™•““’””””˜š”–•”””””˜””—“––“”˜””””””™”•–‘•’”“—”›”””•”–•”–””š•””—”•—–•—–—”–”“•—”–™–—”””•”””—”””™””–•”—–––”“”–—•–•”””””•””•˜’–•’”–„””––––¥˜””—”—›””––””””–—š”•˜š•—”—”—–˜—“’–—”””–—“““’“––•—–“”—–•”•˜”™”–’–—•™”—–˜”“™˜“””””’“””–”™—’——™——“–š•”’—”—“•““˜––˜™” •š•™”“œ‘š”“š˜“––”“•”“•””––—””—””””“”š”——•—’”™˜“’™•”’““—š”–“”˜™”—”—’”˜–——˜•”“–”–˜—–”––˜“””–““š—“•”—˜“”™—”›–•”“””–˜•––”•““”™”“•—˜›™™””š–”——––Žš“”–“˜•“—–““““˜™•“›‘™Œ—”–“”“’•“˜—”““—˜“““““•””–““—•“š–“œ–““™™“““˜•’”“‘™š”‘“’”“•“–“—–“”˜––““——’’“‘”“Ž“—–•“–“–—•””•’”™“”“”••“—““““™““š›™“““š“”“””“™“™“”•“™›“Ž“”“””“–œ“—““ž‘’”•’“–•–—“œ“•–““•–˜˜“˜”“““˜““’˜‘”“‘“““˜–“™‘““’œ–—™—–”“”““œ“‘–™›‘—““š““˜—–‘‘’“”””›˜˜“—˜”””“•–—””——’““—“™”•˜“™—œ”“•–’”““““–””—•”“•–™“–—”•”“”—•˜”•”•””—™˜”’””‘“”“–”š—“–”’––”’–“‘—™””””–””•–”””¦˜•—•––œš–˜““˜˜“••Ž””””•”””¢—–•“—””””“”•”™“›•“˜™“’™˜””””‘š”—“”˜˜’“”””””–————”•’”“œ—”›™˜–““”•”“”—˜””–˜”“•—“”•—”””œ•–™–”““”˜”“”š™˜˜”“••”—•—•”•””““˜˜¥“—“””““•––“•–”Ž•“–“˜“—•“¡—–”“’–’”““““—•”••”“–—““–“•—’“––•–”•–˜““˜—’”““”’“”“–”™•“–——˜—“•–˜”—”˜”•ž“”——•““‰™•’””“–“’•”“••“—”“”•“–•““•˜—•“–”””””“—“š“š““—˜’‘–•“””“—–“”“”—™•”“•”–——–˜–“”˜“•™““”•–˜“””–““•›”“˜—”“••“˜”•””‘‘š•–—•”–’“”˜“‘–”’”œ—“’—”“•––˜“”””“”•š—””•””””––•”›’œ–˜”—”˜”š—””œ–””•›˜”””””—–”—”“›”””•˜”˜•””š˜”•”˜•™””“–“•”””•”””˜”–•”™–˜™œ”››š•–”—””‘”šš—””––—””™•”””—””””›˜–”•””””š••š””™”””•””™”˜—–š›”—”•‘–”””””œœ”˜””›“”’”—””›˜•™šš”“–””œ•Ž˜˜•”””•”””˜””””’””™˜”ž™”“””˜š™–™˜”””””›”•—”—˜™”– •”•—–˜’””•”––””——””””•——”•––”•”–”–“—–”“–—”””–•”””””—••–—””––””–—”•”•”––•—”—–—””–—˜””””•”””—”––”•˜–––””–•””—”–”•˜”–––——”˜••—”–•”––•””—˜“–••””””–””—––•“”•””””””•”•–”••”•”••––””•”•˜”–””–••–”•””–––•——”•–””—–”•—–””””–””•–•””——””–“”•–”•”””––—˜–”—•””–”–––•—–•”•—•”•–––”–””””–•—”–•””””–•—”’–———”—”–”––””˜–•”––—•”•••—”••–””•—–”••”””–•—–––•——”””———•””•”••”–•–—”–•–˜—••“–•˜–•˜•–•”–•——–”š”—–•••”–””””–•“˜˜””–•••””–—”˜••—”•”•••–”•–”—•••”———–••••˜–”–”•“—–••—•”–™–˜˜—••””•–˜”•–˜–••”˜”””—•–•–˜”””””•—•–”–“˜•–—–•”••”••––—”•—””–”—•——–—•—•••“›™Ÿ“•˜””““”••””•šŽ™“–“™’˜–“››•”““•™”“”“”˜˜”–•””•—˜“”˜”—•“•›•“•”•–•“”—›””””””““•”œ–“—”›–›”™•”—–•”–”–Ž“˜––•›”Œœ—•“–’•–”˜””–“”›“–”““”•”””£•““˜””””•”™”›š–›™“˜˜™‹––”•””›š“˜“”—–”—“š””œ––˜—–”•™”“”–•”––—”””—““”•–””––“”™ž“˜›””›–›—•š˜”•”–”š”••š˜–—”–””—•••’•””””—“š”ž•””““—•™”––— ™”˜“–“š’“Ÿ—“”””–˜”””““—˜”š™”““–—“”œ”˜˜““š•“–”–™””˜š””“””‘“”“—”˜š““”™—•”˜—’”•””””™–—š˜”–š™–““”—••”“——–˜”•””””Ÿ””šŽ’œ““˜””””””—”™˜”—”™˜“¢’–”“”“œš”–“”–—“š”—““™—“——™”“–”•˜•™“—•–““”›““••””˜—”“–”—𔓔“——–š—•”•““”š”’“›–˜›–”“š’”•˜––”š“””“—˜“”””““•““Ÿ”—–“”’“–”œ‘“—”””“”‘—”””““”””’““’‘“Ž›“™–““˜–““”‘’š””–—””‘““—””“Ž”˜“”—•™“—“¢šŸŽ”•”’””””˜“‘ž“˜–ž“œ•”œ•œ“”“•—–”““”“”Œ“”›’–““•””””””““š–š”™”˜—••’“”””—™”˜“”›“‘‘”–““”“—–“””“˜“”›“““””—”“”“““˜”—”““’”“–˜“—’””•–•”’”“””𔓛”“•™š—š›”’ ’“•’“”‘‘“”“”“š‘“–’””““”—™” –‘”˜”—“•“”“Ÿ•””““–•””“”“˜œ”““’“Ž˜““Ž–”™˜““—‘”š”—š””“˜––”’””•”•“—”—˜•Œ™”‘”‰™“—’–“™”““”–•–‘”‘—žš’—”‘¡“š”“˜™”—•“”’““–“”™””““””””““”—“šœ“”“˜œ”™š—”“•““•”‘“”™š“–””””™•›–’–”’•”“˜—›™“””—’“™”””“™”“˜™“”’–”• “™™’•”””“”œ””š˜˜›”“˜’“‘“”“›–“”“”š•£”•–”””“—”—”š•–‹—”—”•”˜–”–“””“•˜””““•—›•••“”•—‹”—–”—’“’–•”˜”––””“™•§”“”“”•””–”•—‘–—œ––“”—”—’””–”““•••𙓇‘—˜”–“™Žš””—”’—“’”“”“–””—“•–’”—“”””””›““•Ž•™˜“•—””••••““–“”’™–™”˜•”›–˜—–•””•”–˜˜••—–•”“–“”›–’“”—™“”š˜”˜˜–“”‘”˜———”•’”𔓖•›”˜–”‘”“––••–›””““™˜š”•””““”•”“•””›•”““–‘–““ž”””””•””””““”–“—–”“’––““—”—““’“–”•”••š“”–••”’”“’“”“—”–•‘••—–”“˜–•𔓔–“””—••••“—š“›“–“–›”–““•“•“•‘“”“”’“””š•—“””“”””’”•“’”—˜™“˜š”˜“—““““˜™”’””™–‘—””’”™”•–””““—“”—”“’””™““”˜““’”•”“•“““–—“—“‘“”“”—”•–•””Ž““𔓖—•’š˜“’˜’“—–—–“•“”“”‘ž—”›—””““š—’”‘—‘™”–“˜“’“ ˜™”““–˜”””““—Ÿ”˜•”“—•Š““”š–““˜™”–”–—œ””•›‘•“””•””“˜”—•“—”¡–š”˜›“ž––“—”•’“˜˜”“™” –•“ž”’™–‘”“”’–š””””””›””›‹œ“”™””””““–”›šŸ™”žœ”‰”–“””“š•””“”•–“œ”–“”—•••š™”“ ”””’““”•—““”˜““–—””š—””˜¡“–œ’•”•Ÿ•œ˜˜˜””Œ““˜“”””•žš”“£“”—“˜•—’“”“”—”˜“Ž˜””““”›—”“Ÿ—”“”–“˜“˜—“Š˜—”““•™”””””•”’–““—˜“–”›Œ““—™”—”–•–””š•”’””—””“˜”˜•“˜‘–—™”—–š’“˜“™”“–“—“•–™”Œ—””“™‘’“š””™œ‘–•“”“””’””’•’—“”–””””””˜”Œ›‘—”••“š˜””•”˜““–””™“””–””–•›———””–”“›”ƒ”›—’”””™“”…–‘””™š””š–“ “”””“Ž˜™••˜”•“”“™““–—“™–™”•””˜––˜’˜””““˜œ‘“œ•””““–“𔕗‘–”•“—•š–“”˜””““–—””“““˜›”—œ”“––˜““š“˜•““–™”™”™šš”“–—Ž”““””“”“š“–˜•–•™›—“š“›”™“™““—“™–•—˜”™›–¡“ž’š’˜”“–˜•˜”’““““™“”™•’™““˜””””“”•“š™˜”“˜”“›•𔓔“˜–“•“”—–“•”—“”š˜“–™˜”’›““›•–““— ““”™“““••””–—”“–œ“—‘””’›™—––˜”•”““™““”•š’š›”“™’”™˜˜—˜š“”“”––•”˜–””””•—™”’™–’—”—”–”˜—”‘—š””’•™””””””“”œ–””•–“”˜–”—•””–—”™”–˜˜””šš–•“””–”””“”š™”˜•“–—”––š’”œ”˜”•–”˜•˜–˜”••—˜”“”•˜”””˜—–˜”“””””™”””–˜•””—””””””𔑗’—”•””“––””””•™”™”””ž”—”œ””—•˜™–—””—””—™••—˜’”””—””•˜–””’˜””•”–”’•””•˜–—˜””–•”“•””˜—›•›•””˜””š™˜˜•–””“”˜—””•””””–——”—™—‘•”—”•–––”–—”“”•–•”””••œ”•””””–“””—”——“”––“˜”–––””™—›”””“–”“”–”™–”–Œ—”–”—˜•˜‘””••”—”›•”™–””–œ”“—‘‘•’š”•š›”•–•”“”“–””––—’”””””•””™”›——”˜™•žœ””•••–—“”•”›˜”—”–””œ–š••–”•˜”’™——“š–“•””—“”–•‹“”•˜””™˜”–•”””““–˜—––”‘””˜”“•š—˜–˜”‘œ””–––••œ””•”˜˜—”••””””•”””’•–––”–””•–•”•”””•™•””””•”“•”•””•”œ””—”–••”•“•”””•–””•˜•”•””–••”•”—–•”””••”––‘–••”–”””•••”–”••–”—’•˜•“•””•”•——””””””••™“”•”–”””••”˜”‘•”•—•–—–š••””••–—”–””–••˜•–•”—••–•˜”•–””’•”•––˜”•”””””•™””••””–””˜–•””–“•—”—”•“–””™”–”—”•–•””—””“•””“””••“œ˜–“•𔓓“›™™“˜œš˜š”›““–Ÿ“‘š™”““œ˜”““““œ“•ž““¢›œ“™˜“š˜““™™”—“𙕔”œ•˜”‘“””“““œ”˜˜“›•–𙓛™–•™“›”•’“œœ–—“ “žž“˜•“–“˜“”˜•”˜•—“”“”•““›•“š•“˜“”””’“—“˜‘œ“˜””¦˜š““”“˜œ“š“”œ“š“™”“œ˜›››–““‘“”ŸžŽ‘ž˜•““”˜““–›š”“™˜““——“¡˜“““’’›“™—œ”–”“—““——ž˜—˜“•‘““šœž‘•“”“”—“””——””””••˜”š—––•—”””•—”’•™””–––•”””••–•––””˜–“”–•”—”””•–”–”—•”””–—•”•””–•””–”—–•–•˜•“””—“”•˜•••••”••––•”Œ’”–––”•˜˜˜”•—˜””–˜””””–”••“™•””–”••”•”™”••š–“•––”•——”•••–•”–””––––•••””–•–——”•“”“•—••——”•””—”•”—•””–—””—””“–”””•˜–—––•”••””•”••—™—–—”–—•”˜—–••—”””“•–“™š””““––““ž’š–””“™’š’“–˜“”“”š›””“““œ›”•””“‘š““–™“›”““ž–“““—›““•›“”““’˜“”“™“˜–’–•ž–—“Ÿž–“”“•““’”›˜”–˜”—š˜”“—”•™”–”“’––•”“”““—““™‘‘œ““™””“”““˜“—›œ˜˜“ž’–•’“””“›“—“”™”“””˜’”š”–•”˜”’ ”•™•—“–”“““”˜““–•””—”““ŸŸ“œ“”””Ÿ‘š™—™”•’““–””™˜–›š”’™’“•’•‘’““”““›—–“—˜””““–›˜“˜˜–œ”“““›‘˜•“”–™”“”–””““””—š”•˜”“”–’“•™“š’“–š“›”•–œ””˜›–“•”“–“““•”œ”“—™š–˜””›žš™”—””•“˜——˜˜”™˜™™”—“™™’œ”•™š”˜–”’”“–““–‘–˜“”˜“”““”“˜“˜™–˜‘”œ™¡—–““”“–˜“›””œ˜’˜”–””••™••—“‘˜“•œ–”˜™—•“““•“””•¢““™—“”šž“•”•’“‘–š™—™˜””Ž””›”‘•››™žš”’œ””—–—˜“—“”•”–”“˜—””““™”š”–œ“’—“–“—“—˜“’–𔓔”—””“““•š•™˜““˜–•“˜–”˜”““–—”™”™˜•””œ–”’””•””“•“—™”˜•™–”“•‘š“–“”˜“œ—™–”Ž“œ™”—“–‘‘”“š—“••””‘““™””˜’”•“”š”””““”š“”•”–Ž“–•”™•’”””“•“”–“”– ”—”–”•œ˜š™š””“—““”š••˜˜”“””•““˜š“””•š”“˜Š“ž–”•”“––˜˜•–”–“““˜“”––˜––—”—˜””š™˜™”™“”•“™•’“•—””““–•‘“—š‡š”•“–“œ•“˜”’””“˜š”“““”–™“•““”™•“š“›””“š–“‘“”•ž””™˜™”’““˜””“•“š•””“ž”“¡™œ™’“‘“”“œ“–’›“„——œ“™–”—‘ž“”–“–“–•““““•““™”‘”““—“”“”“““œ—™•‘“›˜˜“—’“”””™›“˜“”™””ž“””“ž”›–“–”“š“”—•’š”””“”–“”’––““””“  “”—’’”•—™•”˜”•˜““™”“›™—š™”›““˜••’––“”’“™–Ž“–—“““““—˜“–”˜™•“•“—’–•“——–““’•—”““’”•–“–•’““•–““˜”——‘’–—’˜“–––”’–™•”“““’•““•“™–’•”––˜“š˜˜–’˜“–’’“š“•˜›“ž••š“•“”˜“”’˜—‘˜•’“‘““•““•‘”˜‘“–““””””–“˜—•–“’™—” —““–””–™“—’“–—’—”–“”š–••–—“‘–“—•––”•””””–““–•‘““•˜““•’“’•“””‘–—–—˜—”•”‘“˜“–—™“š˜““œ““–”••›—“”“”šž˜“™””““”—œ“˜•žœ”–“—’•“’œ””““Ÿ”””“”œš“–•”“˜—–“™œ“›—“”œ™•›”š–—””—˜•”“””‘””“›”–—”œ”œ—ž“—™› ”˜“˜””““š˜— ”–™Ÿ—“š–‘›”””“™—–›””“”“”—““›œ“œ”“›“”””””™“žšœš–“˜œ—œ˜’“”””› “œ“”šš“”•”¡•™™–š”“š“–š—”’”—¥”“”›““˜–•””˜™“”œ˜“£¢‘””“›šœ››œ””’”“ “““—–“˜™”“–’”š–”–™š””““˜œ–“—™““““‘‘•“™–™Œ›”•“•“œ‘“””“’˜”““““•˜”™“”““–““—›“ž•““š–”“““–ž”“˜œ””““”Œ“”“–“˜—”˜“œ’˜“œœ›—•‘“–””Ž“›”•“ž“Žž–š“š”•˜“™““’•••“”““”““•””š““”“”“”“”˜“•˜™•”“œš”‘‘“””““›“”œ–”Ÿ”–“•œ“˜”’”“”Ÿ“”›”•””›“““š“““”“”“’”““žš“œš”““’œ’š—–™”••““›““—š™—œ“š“˜–”‘“•“”’“™œ“›˜““““˜•”“¢””™”›“™’œš“𙕔““˜›”““““™””˜”“—𙓑ž“œ—“’šš”““˜ ”“—‘–””“”“”“™“–›“˜“œš•“žšœ–”““–“•‹“•™–ž““¡•£“£•’™’™““—•–”““”““›““Ž“š““œ“”“”““–“š—›š˜“˜““–—““”“˜š“—“”›—“›”˜“”œ˜—œ™—“•ž“•ž›”’˜œ–“““š““š“”“”–““šœ“›™‘•““œ–”—•œ””““š“““––›““ž‘“œš™—”š“”””—’˜”–—•”””˜–—••˜•–˜”˜”—”’—”––—•”•——••”•”˜’•—•””–™˜”˜“”•’””–—•–”˜—“••––”••”•”••”—”–˜•—””–••‘•—‘”••—•“–”•—˜––•”•—’•“•–”•˜””—–”–˜–”•”•–”•—’”–”•—”••””•–”’––˜“””•“˜˜—••••––”—••——”””—••’˜—˜—˜•””””–™”–™””•”˜””‘˜“•”˜—””•””’––•”•–—•—˜–•”“•”•••—”–˜”–•—“–•™˜——•—”••”•–ƒ”•—”””””–—”—–—’š•–”–“—–”—˜•””—™•””””•—•—”””•–’”•˜•—’“”˜—”•••–˜•”–š–”•””—•””—”——”™•š•˜”—˜———”–”–‹”—––”•”ƒ—”—•–”œ•‘””–•”™•–”’”“””””Ž˜™“”–”””•”•š”––™š—”š›—™—•”•••š–”—”•˜––˜”—“•š—–•—˜”•˜”“•—˜”––’•””˜””—–’””“–””›’”–—–‘•“˜—™—––”“””˜”•–—––›–”•š–”™•—––””””••—•”˜–””””™”—”˜••ˆ–•””••˜“”Š“•••••–”””••–™”œ“•””–‘”›š”›•–””™“—”™–—””“—˜”“”•’•””—”˜™’˜™š•–”™›˜˜•‘”•’–”•˜”˜™”u”˜”•—Œ”–••”–˜—”˜–•”•”“•”•˜’–•””–””””•”˜”•˜•––˜›“™•“”•”•••”˜””˜”“—”˜••—••”••”•™”“–•—””––•”•–”•˜––””–•””›˜”•–•”˜“š˜™—”–”””—”—š“™™˜™”–ž–•™––“”–””••–•–•––••••––••––•––•••–•––•—––••–––•••••–••––••–––•––•••••––•••–•–•••––••••••••–•––•–”––••”•”–••••••••–––•–•••–•••–•••••••–•–•–••••–••–”––••–••••••••–––––•––•–••••••–••–••••”••–•••–•–––•––•••–•–––—••••••”––•••••••–•––•”•••••–––•••••–•”••••–••–—–•–––––•••–”˜••”—“””””™•—”™””’•”˜”–”•˜””“–•””–’••”””––•–˜””•—•”“˜”•–””––•–•—––•”•’”••””•”•”•””–”’”•””‘—‘•”–”—••—”•“••“”“”“™•–”–›•—”•™˜•“••””””—””•”–“””—••”””•–”””•–“”–•”–”œ•”•”“”•””••””“•””•“–“•–š•••””“—”“–—”•••”””—”””–•””•–”‘“””•”’–•”–“•–””””•”“•—•“•”˜•”•——––™””–”–•Ž”––””””–—–”—–˜š™”–”—”™—”š–—””“™š”””””—–•––””–š˜”•–”™•”“˜˜”•”—–˜””–“—””””“”””—””–”˜”˜–•””–š˜“–”—””ˆ”˜–˜–™””––˜•–”•”“œ””––“–—•””””•””–‘”—””˜””””””•”––——˜”—–”Ž–•””””™—”–””˜–”˜”˜•”˜––—––””–”””™”•–—”””˜””“—”””––””š›”—˜—””’–•–•–™”–‘“”™”’•—”•”—”–””—–––––””–“”™“š•““““”•“œ“˜šœ“•“œ’š’Žš’““’–˜“““““›“–””’”™““š“š•““›˜”–“’–š““š–™”’“”““”“˜“—–’˜“–›“˜™“™“•“—“”’“š™—”ž“¢—œ“—–•˜’‘“’’••š•’“•“””““••“ “’š““““““–“œ—œœŸ“›š•–“““”“žŸ“–““—˜’™”™”“ž“•™–•“’œ“–œ•“””›“““™““š–•”“˜–““—”“›“”“œš’”—›“•‘““š“‘’šš’™˜“’¡“™•“—•”“”“”‹•”•—””””“—˜”˜ž–}—”–”–“•”¡–—””’’š•”””•–š”—“””‘–‡”““”ް””š•”œ”˜–‹””˜—•—””’•””•”ž˜””—™–•”š’žœ’•”–”“œ”‘‘“›˜”‰¤š•‘’™Ÿ”•””ž———˜“”“””•””””””•”–””””•”—”¦ ˜’™”–—™†œ—”••”––•˜””„£•œ”™””˜–“––•”’Ž””–” ’š—Š•””˜•”œ•˜””•¢””“¤”“•””““—””—””™””𔓙™‰›Ÿ–”—Œ•”˜””“ª–””’”›˜™’“““””““‘–“›’–—•’““””–““ ”’“””””“’’’“”œ“““’”“”™““”“™‡”‘”””–“““•“”—”““”’”’“””“”“’”™””“•–“’‘““”“•“““‘–“—™–™’˜••˜‘–”•”””””““•”““““““’•••”““““”“™“‘”˜”‘“™•–’’““’”•–“”““š—’–“”““š“•”“““’™”’”“”“’“”’”““””“—“““”““š—”™”“•’‘™’”““”“”–“”—”’’’›’–˜“”’““”“““‰”’”””—™“”–”””“”˜š”˜”™‘”“–””–™—“—•””““––””“““–—””•“”––”“••”˜“’”–”’—”–•””“””””””•”““–”’–”–˜––“˜—˜””“–”–““–•–••””–’“˜–””‘—”•—˜”•”““““•””–“‘•‘””””“••”’“–—š•˜”–•—••””“•“•–””“”˜•“‘“•••––••••”“–”“–—–•”–™“””•“””•‘””“”””–˜”œ––””—–••–••”•“””˜“•••–”’™”“”•“”•••˜˜“””“™›‘“•–””““–”•“™“—“•“–“––•“™——”““––”““”“•˜”••““”•”““œ“™‘’“•—”—”™—›”“–•–”’“““””“—“—–“•›•—““š•š•“—“’–“™”“•˜“”™˜™’—ޙޙ”“˜•’–•’“‘““•““–’‘–‘“•“““•“”˜“˜—•”Ž“š˜–Ž––““””•˜”–“”–—‘œ”–“”˜•’”——”“—“’™““““—œ“”“—“““•’”“’–”“—›“›•“””“•––—•—”““““œ““•“”“š˜“–‘”“–•–”’™“”“”•—”–™””””””–”™”–™”•”“™•“ˆ—•”“•–˜”””””›–•–•””–›–““˜”—–““™™“–”–•™””•—“”””“—”“”›”™•“š“™–™”š˜˜““—”•””•”˜•””𔓔œ“™’“—‘–””””“—•˜”“”“”””””•˜“”—”””””“–”–š—š‘”—•“š•”””””™–”˜””—––œ”—””š•”•—•”•˜”“›””””••”””š””“”‘“”š”””™“”š–“’”‘—™˜•˜š”•–“”™”“•™—”˜˜”“¡””™••”–•””•“œ’‰“––””“““˜•“™’˜˜•“‘“•’™”“”•“““”™˜”““””•–””—““”˜œ“•—“ž‘”“˜—“““”•—“”““’”“”“’”““–”•””–‘–—‘””—•”‘•“””’—“œ•““š“‘•˜“——”“”𔕔–”—’—””“”•“”•““““•”““””“—“•“•™”•’“Ÿ’”“”””—˜“–””Ÿ‘•””š•”–“•“’˜““–”•𔓑””𔓔•““•“““““““˜”“—•“–”•””••••“•”””—”“’”ž”“›““›““•••–’““”“•—”•–••••••–™•“–—•••—••””–”‘–—••–•–•””””–“•––”•––‘•—”•–‘•”•—”™•—–”••š—‘•••”””••—•–—”–—•––•”••’“—•–••–”—••™–•œ”–™•”“––•–•”˜—”•––•••”•••••™–””•••••”•—•–••—”•”•––—•”””–˜”–••–𔕔•”•——š•—–••“••——”“——’”••—••˜–‘••–˜••–“•”••••”•—–˜—–•–—••–••–—š——••–•–•——––™”••”“–Œ”•™””“”•——”–”••”•“—“”—“Ž•—”””—–””“””——•––““•˜”“–””–””“—–”–”••—””–˜–”””“–””“˜”•”•–”˜”—”’—”—’˜”•””“”–••••”–•’”–•–••—””——“—’•”””“•””•Œ—˜““•“””“““•”—™•—’”˜•”•—–””””–™”—“”—•”–”˜””••–•––”“•””™—••––“”“”—””•–™””™”””™š””—˜”””––––™–”’””˜”“”•“—˜˜””–””••––•—””•”—””–™””“”–••“™“—‘–””“•“’““Ž–•”“•™”””““–˜”–’”“”•’“”•”˜–““—•”–”’–“””–—””•””•“”“•”˜•“–˜™’˜”›™˜‘•””•”“˜”•—’—–”—•˜™”—”•š•”““•“˜–”˜””““–””–“—‘““”””””““–”›•›’–”˜›““–““””“‘˜””“”––“—””“”š“—“”””˜“”“–••–”’““”–“”–“—””–”””—“•–’””ž“˜™‘—””’“”•””“–š”™—””Ÿ“”—’”““““”–“™œŽ“–—”“““›“œ“™˜—‹—“š“—’–˜“——’”“’——””“““šš””—’“•š“—˜“˜–““˜—”š“›š–”“˜—’“‘““”””“™“–𔕓𖖓𕙑“š”’“———ž’“‹™™’˜’–›””››“˜•‘“‘““™“”œ”–‘“—”““”“”—“œ™•”˜””–˜•“”•“——”–“”™˜“œ“”””™—š–——”’•“’—›•“™›‘”““˜““š—’”“•™““›œ“™˜”””””™œ•™“•”““š“”–•š–›“•–““–˜•–‘ž“”””˜—“——””““–”˜”™–—–˜“—“•’œ–“™—“”“”—˜””“”“–˜•“—““•••“–˜“™˜”’˜–”—”˜–™”“–—‘“’””•“”“–”•—““™˜–”™–”–“—”•”“—–—™™”š”˜—“–“”—“œ””–™”˜–””’““—”“™’˜—“”˜“””’“”•“—–˜”›“š™—™”•”“”“˜š“—””—•”˜”•””•—•˜—™““—”“•—™——˜Ÿ“”“–“”š˜–”“•˜““—œ“™˜“•”•—”™™•—”–•“”™”–•™™˜–›”™•““––••—˜””””𙓔˜”””””˜”˜”ž•™•“”—“”‘” —•”””›™”””””–“™™”“”–𔓙”›—””™—“™”•˜—•”™–•“””””””–”›˜”˜”›˜˜”œ’™••”—””†”šœ—–™”—œ—”•••œ•œ””“––”–”•””•””™˜’ž”“™””””””˜”˜› ™™”””—˜””””š”–””Ÿ–”—”›””™–˜——œ””—”””•ž•˜•””””—””ž–•”””˜””˜”™“•””Ÿ˜™”œ•”“•””Ÿ””“› šœ”““”•—˜–•“””””žœœ““›””“““’—“––“—””“š“—““Œ”’”““—š””””“–•”›“”““˜—“š—“š”““–œ“•”—•“””–œ“”“““—“”“˜”™™”•–“˜”š–’–”•“”””“—“••˜”•–š“–”“”’””—••—”’“““”Œ“““‘’˜”“—“”””“””“Œ—‘–—”˜–”›”””””“—””œ“”—–“˜“™“”•”“—””””›“•ž–—““””“””œ““™•“”””•”“š•“–“”’””–™—•—›”””“‘“”œ™—™•”“—””––““™“”“”’š‹“––””““•–•”•™“––“–“•‘––““••”““•–““““’–š•–•’“••“•˜“•š‘’•–”•”˜—–””˜’”””‘’“”“–“”—’–”—–•”™•Ž–•™“•““‘“š––˜””ª—™“–““–’—”‘™•’–—“”’”“•”“–˜–•““—””””“”““˜›••““—•“šž””“”’•–”•“”•—‘–“–‘”š•––—•”“•”‘”–—”—–“””•““—–’“”–˜”“•š“™–”•”’••“—••”•’’“—““”–“––”’Ž””—•••”“”•”˜™“•™””““–™™”—˜™•˜”œ“˜’š—“˜™—”“‘™›”””””˜”•–”“™™•“š–”š™”“™™”˜”˜˜”””œ”—•’“”“””“™”–™”˜”˜•š”–•¡“—”š•”“˜˜˜•š”™“™–”“–”•’›””˜””–•“”•“””””—’——”“—”””•““š”›–˜˜”—•”›–˜””””™™“›””›–“–”—•”›—š™™š””–“•——“•˜—•”””›“”•˜“””š˜””—‹“𔕔”š˜”—šš”—’”“—“”ž™œœ•—”’›“”™–•–“˜“””•—––•••••””—”“”•“•”–••”—–™•”’•–•””–••”•””•””–•””–—“”•˜”—’””•—”“”•–™•”“•–•”””•”•”—””••–—•”•”–—™“–”•–•”””—–•”•”–•‘•”˜•“—”˜•”““•—••”•”””””–•”–””–”•”•”••”“”•–“”—–•Ž‘••”•”–”••””˜“”–”•””••”•–••”–”•–”’••–—”””–””––”•”““•”••”—–••”•–••”–—•”•””˜”•—”•—•—•”š””••––””•”•™”’”••””””–˜•””––••”—”—“•—”•——•”–•••””””–‘••–””———”•—”˜’•”–—”•”––˜””•š’”•””•”•”—”™•”–“–––”‘˜•–•™•˜••”””–––•”—”‘“•””–••˜”•–™“•—–””””–””–—”—””–””•”””–”’›”——”—™”™—”••”––”–”•™“•‘”••””–—–˜–””•””˜—‘•˜—•”””–”•–’•”•”””—™”•–”••”˜˜—––•””””•””•›—›™—”–›””•–•—‘—”””“𙓕—””““–˜š“™˜–’”“–“˜’“š“’•ž”“‘—”””“““•™”›˜’“™—Š“”š“™•‘’“™”œ“˜•˜”“œ™“”‘““”“”“—“œ–“™––•–“šœ’’œ“—”’““™•˜š’“œš”Ÿ“˜‘’ Œ™““žš”••‘“’“““““””’–“•“““”““™“•›–™‘”š™—œ›—““”““–“—““šœ‘˜”—“”˜•š•˜˜”’—““˜™’”œ—‹“““–““˜˜”““›”“—–“’‘•”’–š”—™–”––““–“’”š š›˜“‘£”“™˜ššš™““’”••—”š˜””””••™”””•”•”””“”“–”—˜”””“˜˜”””””•””“”””””–”’•””•””•”••”—–•”””•”””””””””””•“”””•˜”˜–•—•™”•””’”““•——”“‘–”“””—”””——“™–•””””—””—˜––””™””””””””‘˜“–“”•–•’““”””””•”—”””“””–””•“••˜”•””•’–›—’–”””“””˜•–”””“””“‘”’™””””“–––––””’””—””’•—“–’”“™””“”’’“•””””™—”™™””””˜—𔓗˜•’”•”™–—œ“—™œ”“”•“”””””˜˜”˜•“”˜˜“”“—”˜”“”™”ž”———””š˜”“””•“•”–”˜””˜‘–˜™”’—‘—’›”˜”’“”—““™“”“—’“””””˜“›””šœ•˜—””“””š””•’’˜’”•””””””™”“š’›’”šš”’š˜””””“’”–””™ž”™”’”””—˜“š™”“–”“——“–𔓔””“”‘•””””œ””—””•“•”“œ—–›˜”””“”˜””“•–˜˜•”““””——™•˜”•”“•œŽ“šš““““–™•“œ”›Ž—“““–‘—•“Š—–““’˜˜”““““–›”’™“’””“”—“›–““™•“˜“–˜š”“–œ–”““–“““““–”“–•›—˜“–žŽœ”›“–“’’“›–••—“–˜›“•’‘Ÿœ““–™•—•–““““ž““š‘‘•’’˜“““”““˜“—˜––ˆ“œš““•”““”“”›“œ““––“œ“–““›••••—“’•““–—š’––—“““”’“š“™““”““œ¤“œ›’’“•š˜š–—–“•˜““ ““‘™—”™“‘š“““••–“““““—“–“–”””““—’”“¡–™£‘”•“–“–“¢”’”“’”’””“”““™“‘›““›‘–“›”𛓓’•”𔑗𔔙–’”‘““”“”“•“š’””“™––“§ šš•š“š”“’“ž––˜ž“¤—”¢“•“’œ””””—”•““““““œ““˜’’’“˜“”””“”˜“–—“””“—˜“£‘’“””“’›”—””’“›”–””›““•˜’““˜“”™–’’••ž““”““’•””““™“”˜›“›””””•‘’—™”’””“““ž“””ž•œ›“‘’“’•–›š™””’”——•”—™””””———”–˜™•˜”˜”™”—˜””˜˜”””™™”””””˜–•—–””˜™””–—”—•””™˜•—”———•”—˜•••””–”””˜”˜˜”™”——™”——™•”—”˜”•“”˜—˜˜˜””–——”—•••”–•”——“™••””””—””—––˜””˜””””””˜”•™–™“”——•”˜–””•”™˜”˜”•–—”—”˜”•˜˜—˜˜™”•—””˜˜•—˜˜–”””˜”””˜–””˜˜””˜—”˜™–••”–˜˜—™™•”•””˜””—˜–˜˜–”•—–”˜–——•˜””•”““•”š–”””””™—”š—˜“˜”•”–“¡””—””””–š•””•”˜”•˜””•——”–˜”˜“””•—•™”™š–””˜’••“”••”””›”’˜”•–šœ˜”›–žœ‘™”š••’”˜˜™•”•——–••”—““””˜™•™–”””””œ””›“˜“”™•””•“”””œ˜•”›”•“–••”””•”––””•”“™”˜”›•”™–•™˜•””‘”–•–š•˜•§”””˜””œ–—•””˜””˜””˜—•••••’”›’™””–•”œ”–˜—”•’š”–”–”˜——˜“›””•”“š—“••””““••˜”œ––•““–“•–˜–“œ•’”““•—””“””–”™”““–•“•™”—”“–™”™”š–œ””•—–”•””•””“™”—˜•˜”›–˜”›™’¡’•“”””•“™–’œ˜”–š“™”š•’š’’””›˜––“”’”“‘””•”˜•’””””””””™““›•ž”𕉛“””•”—–“”“””•”–”–””›–•“™•”–”“™“™–•–””””—“”‘•“””˜–””™•“‘•–”””œ–š–™–””•””–””˜˜‘–—”›•”˜–••Ÿž””•”“’“••””““”•—““•–’”””“”“•“˜”•”““”•””“““‘’”——”“”‘˜“‘—“œ““’•˜“𔕕“””˜¡‘”’““““”“–“Ÿ•“’•–’–“š–•Ÿ”•“•“““›–‘›‘“‘”“’’–’•”“™••”••““““–“”–‘•““—“”“”““š“Ž—–“›“•™”¥”””“”““•“–“”•œ“””•““‘š’•–“’—““”ŽŽ’˜‘š““””““”””“—”“𛓓–‘•”•“’Ÿ•–””—”““•““’œ–“Ÿš““‘’“•’”‘‘““”’“𙓗–“”““–•–““”–”𔕓•‘˜—“‹•—““’•›”““““•š“–›““˜‘™“—˜“›’’’˜•“•“›—””“•š™”‘““”“”“•“™˜’“•–˜’“ž˜˜–“•“•”•†“š“—”–“™—𔓔’’”’“”““•—––’“’““–““šš‘”‘“š“““”’“˜“–”˜“‘“˜™˜ž—‘““““–š“–““›–“““˜“”š—”—–”“”›“’‘–˜’”•’“““•““š––”“—““™Œ“•šŽ–“–™‘™“”˜”–Ž““–“”–•‘›˜“’’‘“œ—•”˜“”“””“””—””””•–“”™˜–“•”–”–•˜—”–•—•”••–••”””•”•”–””—–”——”•“•”—•”””””˜””••–•”””—”•”•”—•”–——–•”•••–””””•’˜”•––“•”‘–—“••’•““™•””•”––“””””””••”“•””–•””””••”———––”•”•‘—”””•”–—”•””•–”–”•””“––––•”•–””•–”•™–•”””•””•–—””•—””—˜”•–•••”˜”–•—••™”””””••–•——–”“—–•––••˜“”•””•›š““›””““–‘‘“–’”—””“œ’—•“‘™’”“”•–”””““›”˜•”““˜•“‘˜“’“““š•“•””––””‘˜“”’“”‘“”“—”˜™“—”™“›“•—”’•“”””“Ž””˜‘”…—–•“••’••”“‘’–˜’”““““–““˜—‘˜““•””””“““” ‘˜“––”šš””””“•Ž”–“”’‘“–“•“”’–”“”“”’š“““™‘“˜•““““”““•“–”“—–“““‘“˜‘•”•––”“–›””’”““”–••–‘”‘›“““””’•“”“jbvkJusg:}z`Z³nGcXFYb’1x{y% +SŽsˆ@X6kz¡T´p‰Y‹ušqDlUq…2s]crv/N>bƒvb†\Œ#D¹ª’9)BS†ZaOf@WiaUZ8‡[_Â`‘šqws‚yrkp|Šmv„FZum^a=FpJdF£Ê$H·_7Z”]‚BŒŠgy2bUf_›c_ixs:VjBTëJ9!"+O`f5)3Ôÿ6Xfnp¡2h( ›¸ 97ML>9Vƒ%R +l‡fE5')<7‘WSq:c¨i};NVQ*µsiMrHB;5W%]1Sd; VNGi4l+#c:`*jZAw•0as„D6a4^j!7ªc aq0=A#)[NZDX:N''£HVM!=PF$†š3^:?0/ÿT…]©\€\ 1$%#z=‡6OM0N=8I9ÓbQ",å#Oln‘LVÿ³@‡‡ŠŠˆCJ¨¸™3¾A% ˜: ‘™¯"…œ¤‹|AQ›c&½—VjA¢¤—1"Í%„Qq8£ÊHš±˜²¿†šMÁ.Ì<$A“cA=[Ĩ›„›:%S~¶JftO¥j<šI—Šß9𮓡t¡!—@>~”€ƒ¤*te?M(Ž˜FKŒ3ŒŸ¢|*@‘.ƒŽ@Q7–w8+ *œ“[Œ¬>[4g™~„q”_˜«v`’z/B†2'~¥Ÿš^9284‰l¨z*¹4P=?@†nj—“ È“{c†††††…†††††‡†††††††††††††‡†††††††‡†††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††Š}Š‹…{~†ƒ{š‡…ƒ—ƒ„„{†ŽˆŠ‡’’‡ƒ„Œ‰‘ŠŽŽ„ƒ‡}‹‹ˆ’Œ†‰•|’‡Ž˜|wˆ‡…’†‰„Ž…”‰•‹z‡wtwƒ”ŠŠ…”x|’…‰}ŒŽc‚‘‚“ƒ‘‹~…Œ‚ˆz{Ž’y‡~ƒƒ„…x‹š‡ƒ…‹€Š†ˆˆ‹u†}ƒ‚‰ˆ”‹„†—|{—‘”ŽŽ”ŒŠ‘‘Œ–„Ž~…‚ŽŽŽsŽŠ‹“‚‡~‰‡ŒŽ‹…“Ž„Œ†‰ˆŽy˜s‰‹d…•€Œ„Š‘ƒ†’xˆ…ˆx’£…€}“—–…’’€‘q –‘‹ƒ“„…Œƒ‚’{|†Ž€ƒsŠ‚ˆ’ƒŽ‡€…Š‘’‚Љ|†‡ˆr–‰Š„‹s‡‡‡ŒŠq€Œ‘‰xŒ‹ŽzŽr‡ˆƒ™†Š‡y‚‚„‡‡x‡‰‰~v‹†€„—ˆ™z–‡x{‰Ž€š‹~‹Œw‘„|Ž€…„„‡~ˆ‚€…‡›‹™yŒ“‰‰“mŒtyˆ†‹}Ž‘…‹šƒzƒ‡”‡†€~ІzŒ‰‘„’–†Œ†o’Ž‰Šƒ‰‚ƒ‘‹‚€€‹““y”†„˜ŒyŽr†}z—Š|ŠŒ~ƒ‰ˆˆ—‰~ˆ’‹…o‘‡Š”s‰x˜™uƒ¬yhˆ‹ƒxuˆ…ŒŠ†£€’}ƒ…‡ƒŠ~Љ~š‹ŽmŽ”‘„”‚…š~‘®Œ†ˆ‚ŽŒŽŠš¨ž”n‰‡ƒ•”j˜‡™³†x‹Ž|ŽŠ…‡ˆ™‹¥‰‘•{°†€€‰~„ޤ„{€”…œnƒu™–€Œl˜„}„Šr„‘~w•zŠ„ƒƒˆ‰o‡™~`Œ„Œ—™n‘ini£€ow‡k|x‡}–„ŒœˆŽt—¡™–€‘¦‰€w……sŒ¬tz•™†|Šj§˜t‡ˆy†“•ap€|q–~zŸ€`w€s]•y’y‘•|ƒƒ®œ™„sj›‡†††‡†…†††‡†‡†††††††…†††††‡†††††††††††††††††††††…†††…†††††††††††††††††††††††††…††††††††††††††††…††††††††††††††††††…†††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††‹ƒ‘vŒ’“ˆ—…Љ‡…‰Ž›…}“Š€ˆz‹Šˆ ‡Ž~y…•……Œ‡ˆ‹Ž{’˜„‹‘‘|ƒ™Šˆ‚ƒ‹†—Š…’‰•…{†•zšx{~t‹Œ‡Ž‘“x‰ˆ’Œ‚“•‡žŽy“ˆ“ˆƒ‘•‹xŠ•y‡€Œ“|‰x’ŽŽŽ‡ˆ~›yv}†›‚‡ŒŒŒˆŽ‡ƒ€‰Š†„…ˆŽ|†Žy—‹Š‹ }”Ž„‰š•–‹š‰€‡›€Ÿ~ˆ†•z™n‚‹|ˆ‹†ˆ‚ŽƒŒ‹†ˆ“…ƒˆ†‰†‰r€Ž“˜y„Šƒ–“ƒ‰Š€ŸŽ–Ž‹†…‘—}‘~s‰…‰’Œ”…Žƒ…~ŠŠ‹‘„…ŠŒ”y‰”ŒŽƒ“‡Œ|ІŒ“‡‹’€ˆ…˜m¡y~‹Œ‹†‰Ž‘ŽŒ~‡}ˆ‚Š‚”•}…‰xt˜ˆ””ˆ‡‹u„‡u‚–€‰‹…Š‹‡“”ˆŽ‹‹‹…ŒŒ†›ŠŽ‹‚|‰‡‹ˆŠŠŠ„zŽŽŽˆ…}ƒ…†ŒŠ‹‹—‡ŒŒ–‘‡™‹ŽŒ‰Ž‹…–Š‹ˆ‰•‘ŽŠ’q‹‹‹‰‹…‘ŽŽŒŽ‘‡Œ…“ކ‡‰n†•”“Œzˆy‘ƒ‹‹†…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††‡††††††††††††‡†††††††††††††††…††‡††††††††††††††††‡†††††††‡‡†‡††††‡†…††††††…‡…††††‡†††††††††††………††††††††††††††…†††††††††…†††††††‡†††††††‡†††††††††††††††††…†‡††…‡††††††††††††††††††††††††††…†††††††††††††††††‡††††††††††††††††††‡…†††††…††††††‡†††††‡†††††††††‡†††††††††††††‡†††††††††††††††††††‡††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††…††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††…††††‡††††††††††††††††…†††‡†††††††††††††††††††††††††††††††††††‡††††††††‘’„}”}–Šˆ„Šˆ‡~‘’’”w‡„qx†ŠŽ’…‹”‡ŒŽ‡Š‹Š†€€|‡Œ‰u‘— ƒŠˆ‰‹}‚…ŠŽ~Š”…”ŠŒ€‚’z•—|‡ˆ|˜€‡‹‰–މ‡‰ƒŽ‚€‡•”†‰~†˜ƒx†y–|v~–Œ†z’Œ~Œ‡†„”ŠŠ‡Œ|‡~‚˜~¢¢‰„„’Ÿv‰š‘¢ŒŠy…{‰”†‹˜ˆ‘ŠŒ”‰”‡”†—•Š€•„zƒ‹‰“˜†{†ƒŒ„›‡Š‚•Ž‹„ƒz‘v…—†€‰€‹†‡’’”t‹‹{…}qˆ‘›‘|‰|Šˆ‰„‘ˆy“ƒ„‰Š‹‡…‚†‘”ˆ–Š}ŠŽ~…‡‡‡ˆŽ‹’…‹v’w‰ŽŒŒŽ–€ƒ…‘™{‹‹žŠˆx€Œ†€~‹ˆƒ„’†ŽŒ€†‹‹šp—›w{‹ˆˆˆ˜—“†€‰€…„‰€“—Œ‘ˆ•…މ‡‹Š˜m‹‰Œn‹†‘†„„ˆœˆˆ–‰€ŒŒ‰ŽŒŠ€‰‚އ{‰Žˆ‹‡’Š‘‰‰Œ”Œ…†”“‰‘”‰Š‰›ˆ‰Š’ŽŠ€Ž‹”‰‡…ŽŒŒxŒr‹Œ‚‚‰ˆŽ“‰‹—Œ‡˜“o‚”‰„Ž‚u‡ˆ‰‹y›u‡ŠŠ“€€—‡‰Œ’ŠŽ‡ˆˆ‡€‚†‰Ž‹“—{˜v‹’ujŽŠ‘Œ‡~ŠˆvŠ—Œ…~‹ŸŒŽy‰œ€•†€‰’‰Œ‰šs˜™tŽŒ|€“‘‹““Š|z‰‰Š}’“‡†‘‡‰ŽŒ……“”Œr„‰}‹u†…“†Ž”„‡‹’ƒ‘ƒ’‹…Œ”€„”‡{‹ˆ€„‘‚’}‘‘••‰Œ‘‘‚‘Š˜Œ†ŒŠ‹Š‡…“‚‘‰’””‘‡“‡ŠŒŒ‘ˆ|‰’‹Šw‘m…Š‚‡‘Œ‡}‰‡Ž…‹Œ˜Š‰ˆ„‘•‹hŠ…‹ƒ‹…‡ŠŽ‡’††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‚…‰ŒƒŒ‹ŒŒ~—{{}|{ukz‡„•ˆ„Ž€|ŠŒ’v…‰{zzŠty‡Ž}“…ˆ‚Œ‡u‡”~—“„‡†”†„|Œ~“j~‚v¢‡†s„~‘”Œ‡Œ’r{‹†s—Ž¡‚‡ƒŽŒˆƒƒ„‚†Š|zƒ…tŠˆ†}‚‰‰‡“xƒ˜ˆ‰ƒ‘~„•zy‹‚w–‘„†–—ŒˆuŽ‚šˆ‚ƒˆ‘‘Œ‚Œ“Ž…‚x”€{Š…ˆw‡ˆ…’ŽŒ™‚ƒ…Œv‹„•}‡”‡{‡…‡~„‘†ˆ†‰Š€‰Ž†‹zvyy‡ƒ“~–|˜Ž“‹„‹ŒŠz”wމ}‹Š‚‚…‡Š“‰Ž‘‹~‚uˆ‡Œ‡‡˜„ƒ’‘z€—{Š•›‡ˆƒ€•{„~†‡‹’‡€’Œ…—‡‰Œ•t›–xˆ”ƒ‡„‰‹˜‰{ƒ}Œ‡ˆŽ–ˆ„‰ˆ’{Œ–‰l†‹‘gƒƒ‹…ЇŠ~–‰}Œ~œˆ†…€™“ƒ‚ŒŠƒ…‘‚’ŒŠ{“{‚Š—‡Žš‰Š‘Š‘Œ™††‹†—‘ˆ}˜Š„Ž•‰ŠŒˆ‡Ž‹Š’‹ƒ‹Š•tr”•ˆ…„“‚‹…–‹”‰Œˆ””€…‰ŽzoŒŽ‚‹‡z‹ˆ‚‡†‰……~‹—ŒƒŒ†~uˆ‰“Œ€‰ŽyŠˆ‚……Š‹ˆ†”Œ“‹•‚ƒŠˆ{™’‚’ŠxЉ”‡‹ˆ„{Ž…„‡u…ƒ„Ž…‡ƒ„|”|Ž™z€‰ˆ„މ†€„“‚‘ƒ††…‘†Œ“…ƒ‡ˆ‚ƒŒ~“†‰‡{‚…}“އŒ‘ƒŽvƒ’“‰ŒŽ…‰‹Š‘‰šˆ‹‹{€‰Œ€„‡ŠŽŽ†Šˆ’“Œ‰Žƒ}~Œ†‡‹‘ˆ‹•”ˆˆ•‹„‘—ŒŠŠ…‡Ž‹‡‘~‹‚ˆ’ˆŒ‰g‹‹††…–Œ…‘ˆˆ‰‡Œ‹ˆŽ‹‹s‡ƒŒxw’ŠŠ‰€€„”t}‡|tŠž‡|¤†—‡‘mŠ}x‰‡“‰Š‰yz‡wˆ‡q€†~t}‰›Œ„‘ŽŒšƒ‚„qŒsz‹š‡Ž†šc|ƒŒo|•œª}€£’’…‰‡ v‹‡…wŽvy~…„¦x}‹‹‰™€…{~‚„˜{ƒ“z€…‡u•€‚ozd}znŒª†–ŒŠŒ’‚žŒoƒ„Ž~œˆ‡«c’†u~x~f¤k–~‘Š|g|†k{}Š“zh‰€w††Œ‰‰ŠxŽsŽz{Œr|‰‚y…ƒ—Œ„£ª‡†‡…y§ˆ„‘mŸŒ‚€‚‰‰w|‘yƒˆw•}j‡’Š~ƒ“‹•‚ˆˆ‡Š„ˆzŽŽŒ•‹…‰‘‚t€ˆ„„‡ŒŽˆ‹Ž“‰Š…pƒ|‰…ˆ„†{‹‘œˆˆ†yŠt}‚Ž…Œ„„“‚Žˆ„…Ž€~‘s–y‰‰Ž‚‚ƒŠ…Œ’‡ƒŒ“Œ†’–ˆŽ–„ˆ“~Ї‚~Š‚uˆ„x‡†ƒŒŒˆ~‹‘‰Ž‹…‹…Œ”‚¢Ž„†Š“€’‰ŽŽ‹“ˆ…†“Š‘‡…Ž‹‰†Š‚†Š‘‰’„‰‘ƒ‰ŽƒŽ‹‡“‡‰ƒ“‡‡ˆ–—ƒ‰…m’’Œ‰„Љ„ŒˆŒ“‹ŠŒ•‰’…{ЇoŒ…„Œ‹‚‡‰Š†††‡…††††††„†††‡††††††††††††††††††…††‡†††††††‡†††††††…†††††††††††…†…†††††††††…‡†††††††††††††††††‡††…††…††††††††††…†††††††††††‡†††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‹“‚}‡ˆŠ„‡ˆŠ|‰‹“‹’ƒ“€‚…‡Š‘…“Š„|{’†Œ‰‚‚‰ƒ|“¥‡‹}„‚‰‹‹…‚‡†„‘‚‘•o”™xЉˆ„ˆ‡…„…ˆ‚Š‹‹‰Ž—“€™ƒ†“‚‹z~†‘”‡u…Šx‰‹“Œ‰Š•ƒŒŽ‹…‹ƒ†‹žŒ‡€Ž„€ŒŠŠ…‰ˆ’„‚ŒŒŽŒ•†„‡ˆŒŽ–’††Šƒˆ†‰’Œˆ”’ŒŽ‰Œ‡Š‹‘†‡ŒoŒ—’Œ…„‹†ŠŽ‹Œ‰‡ŽŒ†ˆp…Žˆ‘…Œ…ŽŠ†Œ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††’‰ƒ—ŽŠ‘ˆƒ†|Œ~ŠŽ‰•Œ‰€|‰Œ~‹‡ŒŠŽ‘Іx„Ž‹|ˆ‡ŠŽ}‘”œ‹ˆ‹Œ€˜‰…„’ƒˆ†‹•€…‹x‰ŽŠ‡‡t”œx‰Ž‡|…„Œ‡‡‡‡€‹‹‚•˜„‰…—ˆŒw~‹…s‚‘‚ˆx†’{„…‡ˆŽ†“‰’ˆ‚ˆ‡ƒ…¡“Š‚ŒŒ‰’ˆ‹ŠŠ‡‡ŒŒv••ŒŒ’ƒxŒŽŒˆƒ†‘‰ŠŠ„ƒˆ„˜Ž‹‡†‚•‹‘Š•‡’„ˆq“’Š}„ˆŽ‰‰’Œ‹ˆŽŒ††…ŠoŠ•”zŒ|Ž‘”‡‰„ƒ‰†‡ƒ}…‡Œ‹††ˆ‡}‹‡‡‡ƒ‡„†‰………††ˆ…ƒƒ}††„‡‰„†…‡…ˆ†ˆŽ‡‰†Šƒ†z{‚‡†ˆ„„І†‰‰Š‡…ˆ…†‰‚ˆˆ††ƒ…„ŒŽ…‡ƒ†‚††Š€…†ƒ‡ƒ…ƒ‚†ƒ…†††Š†…ˆˆ†„‡††Š††‰†‡„†…ˆ‚…‡„ˆŒ…†‡Š†‡‡‚…‰……ƒ…††‚ƒ†‡€…ˆ„Œ†ˆ†…†ƒˆ†„†…‡„†ˆ‚†‡†††„†…†‰…Š…†…€Š†‰††‘†‚††ˆ…‚……Ї††„‰ƒ„…ˆˆ‡Š††‰…ƒ…„‹†Œ†…‹Š…€ƒˆ”y†€}”‘Œw‰ˆ‰|z”zw“x„~mƒzŠ“‘ކ…~~†—{“„š‡ˆv|}‰ˆt‘‚ކˆ†Œ‰r‚~„‹Š‡‚ކˆ‚gˆ”—…|mŠ‚‡…Š~ˆƒ‹ƒ‡’{v†ŽŒy’‰sˆ†}‘{Š‹z˜†|“›„}…‚ˆx…p’‰‚uw‰ŽŽŒŽ“Œ‹—vŠ~œ‹„Šƒ‚‹Š‰€s““Œ†}{}z‚†‚ˆ‹~Œ‚“’}“’x~“‰ƒ††Ž‘‹‹•…‰Œr”˜…‡“•r|Љ˜•€—†…‰“ˆ‰~’ŽŒˆ€—ˆ|x‡ˆ‹‰ˆ~‘’€Œˆ‚‹‰ŠŽ‡…’‰}‡Ž’’Œ‘|„‚ƒ†‚‰’ŠŽ„‡†Œ‘†„ƒŒ‹†‰…~‹’}¢‹Œ~Š„ŠŠŠ”„…Š‚€ŒŒ‹œu“™z‘“ކ†Œ‘’‡†‹‚‰ƒŠ„‘™€ƒ–ƒ”~}~‡–‡t…Š€‰x~‘„ƒ†‚‘‡‘Ї‡„Š‹†Š‹‹~†„‚€ˆˆƒ„†Š”}}ŽƒƒˆŽ‚‘Š‘‡ˆŽŽ‘‚ƒ“†Ž—–‹…‘‘‰„”†‰‡mŽ’•‡ˆ„ˆŒ‘ˆ‹’‚‹q“ŠˆŠ€Ž{†‹‰†…††ˆ…†††‡†ˆ†††…‡††…†††††‡†††††††‡†††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††…І’™h“Ž“q—˜‘›½ržƒ“•„Ž„v€„’vy–ok«zhŒšr„’‹}„—ƒ˜“t‡™‡Œ{…¯”v‘{k’|~¦˜~Ÿo–»tU„œ~€ž‘}†ˆÂ‘Y„“jŠ€š€¥‰ª}’ž€Šm†Ž{Œ’ª”|o–z—o“sŽ‚„‰…ƒ€’ˆŒln“}‚tƒ{†¦˜š®ª|‘s„Udzž{‡€Š¨a­Ž¬›y“‰„©‚‰–Pq™€s‰–›šŒ‰_z|‘‡€”Šx„}|x‹‡€Œx€l•‡…£qŽ‚{’‘œq†™ŠŠ•~Š›}¡~šprs‹€ŒŒ€‰–…‡Š}…Œ‚‡Š‘‰™†Œƒ‹†‰ƒˆ†Œ†‘…‘“‘}‰‡‘…”‹~‘|ŠŒ›Œ‡ˆ„{‘‹‰‚†ˆƒŠ™†‰Š’ƒˆšw• w‚ІˆŒ„‡„Œ†‰€‡†“†”ƒ„…ˆ†•ƒ„†Ž“Œvƒ•yx‹€ŠŽ|…‹”ˆ‘‹‹Šˆ†‹•„Ÿ‰ŠˆІ†ˆˆŠ‚ˆ†Š’އ}ˆ…ƒŠ‰’ˆ‹“”ŠŽŒ‰“‡‡Ž“ŠŒŽ‡„‰ŽŒ”‹ƒ‹’Œ‰ƒˆn’‘Œ€Šˆ‘†‰Ž‹Š‹‹‡ŽŒ‰‰’„Šˆo‡ŽŒ‰‹€Œ}’…{”‡„”Œ‰‰‰‡‘˜ˆ™Šv…‡€€‰Š†‚‚Ž……’„‡ŠŽ{‰—ŠŽ•€„ˆ“œ‡›ˆƒŒ†œŒ‰Œ€‡‰‹Ž•†•pŒ˜v€ˆ‹…Ž…‰¦”Ž€t†€Œ~Ž€™™~…„{“‘ŠŒƒŒ‹—Œq†‡Œm‹|Œ“Š}†•Ž“yŽ„…š‹ˆ”‚‚„|—‹“Œ|ƒ–‡Œ•‘‹Œ‘Ž•“‡”˜ŠŒ˜‘ˆŽŒ•‘†‹š“…•‡Œ‹ƒŒ‰šŒ†•{ŒlŽŽŒt…†…•ˆ”Ž”‚Œ…‘‹v„‹vx’‘…•Š}‘wŒ…›ƒ†††‡†††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ˆ†ƒ‡††††‡†……††‡††††‡††‡††††††††„†…††††††††††…†††††ˆ†††††††††…†„††††††††††††…††‡††††…†††††††††…††††††††††††††‡†…†††††‡†††††…†††††††††††††††††††††‡†…†††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††ˆ†††††††††††††…†††††††††††††‡‡‰Œ‰‚Ž‹‡††y††‰ƒ„‹‰‡ŠŒ……ƒŽŒƒŒŒ„…Š‚‹……{†Žƒ‰ŒŽ„y„„ЉЄ‹…}ŠŠ‹„‘ˆ„ޑމ~–‹‚Ž~tЉ……{ƒ‹Œ…Œ„‡x…††…‰‡„ƒ’|Š„‡ˆ‹‰†…ˆ‹„‚……„Šˆ‘z…‡‹…‰‰†—†}ƒ…€…ƒ…‡‡‡†•‡€ˆˆ“™ˆ„†’†…†††‡‘w”…ƒ”}‡‰ˆ“‘Œ…v‰’|‹†Š„€Š†‡ˆŽ‡†‰†…„…v‘|—}‰„z†††‡„„|Š~ƒ„„xˆ…‚Œ†’z’…ˆ‰~……‘ŒŒzˆˆ†…‘ŽŽ†„‘‡‰—ŠŒ‘yƒ‡y‰ŽŒŽ‚Ž{“”Œˆ’~Ž‹…‘ˆ‚‡‹|™Š’ˆz„mz€‰†ˆ‰†Š‰”‡‘•q–yƒŽ„‡†„€Œ‘‰‚…’†–‡Š˜‰†’x€ƒˆ‹r„ˆ†Šx‰‹ŠŽŠy‰ŠŽ‘Ї‡‹‘†ž†‡€‹ˆƒ…ˆŒ‘І†‰Ž‚†Š†‡ˆ’’”Š‘‘ŠŽ‡”ŒŒ“ˆ‡”“‹Š…‰‹…„†‡„‹‰‘‹“p‡—‘ƒ‹’Œ‹…ŠˆŒˆ“‰„‡†p€“‰Ž‹‚x‰‰Œ~Œ}z¢˜…‰Ž~Œ˜w•‰“Œ‚Œ”j‚І€~†Ž‹š‡‘mŽЇ‡‰…Šu‡•œ‹‰Š€x†~€Ž{ƒ‚„Œˆ€ˆ€‡…™rˆy‚Š„†…Œ‹’˜’Žˆ€†ŽŒƒ•}”‹yƒ˜u‘“‰…†ˆwЉ‚‡x‡Ž‰‘ЉŒŒ–”„„Š‚Œ•’Ž›ˆ–†|‡‹Œ„‡Šˆx‹’…‹‹‡†‘“„Œ‡„ІЄЉ“Œ…‰ƒšˆ„‡‡“‘‹‹‚™‘Œ…‹‰”“ŽŠ…‘hŽ‹—‡‹“„‹‹’‡™Š“‰ŽŠ‰o’‡Ž‡…Ž}‡t„€„†„††…І‡†„‡ƒ†…†„…††‡‡†††††††…†††‡‡††††††††††…††††‡ˆ†‡†††††††††…†„†…†††…††††††‡††…„††‡††††††††‡†‰††…††‡††††††††††„††††‡††††††‡†††††††††††††††††††††††…††††††…†††††††††††††††††††‡†††††††††††††††††…††‡††††‡††††††…††††††ˆ†††††††††††‡…†‡†‡†††††††††‡†††††††††††††††‡†‡†††††††††††††††††††ˆ†††…†††††††††††††††††††††††‡†††††††††††…†††††††††††††††‡‡†††††††††††††††††††††…†††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ˆ†……‰†††††††…†…‡††…†††††‡†††††††‡†††††††††††††‡†††…†††††††††††††‡†„††††††††††††††††††††††††††‡†‡††‡††††…††††††††ˆ†††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††‡††††††††††††††††ˆƒ††††††…†‡†…ƒ††…††‰††Š†…†…†††‡ˆ††‡†‡†††††‡†‡††‡‡††††††…‡†††††„†…††††……†‡†…‰†††‰…†…††††††††††‰††…††‡††††††††††ƒ††…†‡…„††††„†‡†††††††…†††††††††††††…†††…††…††††††‡††…†††††††††††††††††‡††††…††††††††…†††††††††††††††††…†††††††††††††††‡†††††††…†…†††…††††…†††††…†††„†††„†‡†…††ƒ†††‡††††††††„†††‡‡††…†††††††…†„†††‡†††††††††††‡…†…††††††††††‡††…†††‡†‡††††††‡†…††…††‡†„††††††‡††††…†‡†„††††…†††††††…†††††††††††††††…†††††††††††††‡††††††††††††‡††††††††††††††‡††††††††††††††††††‡†…†††‡†††††††††††ˆ†††‡†††††††††††††††††††††††“‚…‡‘‡„‹ˆˆ”Œˆ‹Ž–…Ž‚{ƒ‡†‚‰’ŽŒŽ’‹ƒƒ|Œ•††Šƒ‹ˆˆ|ž‹Œ‹‘†‚Š‚††”‰…‰‡…†‘Œˆ‰–t’›y‰ŒŽ†…ˆzŒˆŒ‡Š‚‘‘‚Œ‚‚”…w‚ƒŽŽˆv||„w†‡ƒŠˆ„Œ‘‰‰‡‹…‘† …„„‡‡…y…‰‹„Œ†|{’ˆ„‚ƒŒƒ‹†‹ˆ“–‹“Œ‹Š’……‡—ŠŒ“ŠŠŠ‰‚‘ŒŒ‰‘‹ŠƒŠn–’Œ…ˆƒŒŠ‹’”‡‡ˆ’Š‹Œ‘p““’‡’}Šˆ…Š˜‹ˆ…|ДЋv”’|„‡‰~}Ž™…}|{ƒˆˆ–„†€Œ—†ƒŒ…‹†‹{oƒ„™…†v‘‘ˆ}xŽn’†Œ‘‰~šˆ„‚‹’“…ˆ…}‡€u™—…ƒ†|‘…Œ„|‰to”Ž‹y•~„‡‹Š’‹‚†„Œ‘‡v†~„‘Œz†“‡‡„Œ|„Š„•Šƒ—Œ‰ŽŠˆ„‹r|Žtu’—‘…„ˆœr‹‚˜‹‘ƒŠƒŠ–“ŽŠŒ’ŒˆŒ”˜™“‘šˆ}’~Œ„Œw‹ƒ‹Š“Žˆ‰„}Šu…ˆnŒ“~{‘|–…‘‹‰‹ƒ„sz‰xЇˆx{’‰‡Ž‡†‹…„„ˆ…‡……‡‚‡‚†‹…††‰…‡ˆ…†€‡…†…†††…„†‡ƒ††‡††‡‡‚‡‰…‡…‡†ˆ†††††…†‡‡†††‡‰…†††‡‡†††‰‡…ˆ…€‡††‡†„…‡††…ƒ†ˆ††…††ˆ………ˆ††…ˆ††Œ‡……†‡‡††‡…†††…††††‡…†…†…††‡‡†‡†‡†€†ƒ†††…‡‡†‡‡†…ˆ†ˆ††‡…ƒ…††‡‡…………††‡††‡†…†‡†‡†‡……‡†…†‡………†††„…†…††††††‡‰„‡…‡†‡……‡††‡††††…††††„††…‡‡††‡…†††††…………yƒ‹Š—Šˆ‹ˆ‰Œ}”Ž”…„–’€m‰†tˆ‡–ŽˆŠ}t€‘‚v…ކ‰t˜—†’“„‚‰—†•u~‰Œ…Œ†‘‡˜Šs~–|‹…x~‹‚‚’Š‘‚‚“„~•š{‹Œ~Š‚’€‘‹‹Š‡vЉˆ„yƒ™’|vЂЖƒŽ‰ˆ‹’‰‹œ’„“Ž€u‚–~„‰‘{ƒƒ‘“ˆ†“‰‡‹–‚~†Ž‘Œ”}ˆ‰•‘–ƒ‹•‹‘•‡„˜–¨‡›|Ž–„”…’l†‘ˆ‹ƒ‰ŠˆŠ‹Ž‡‰‘€Š‘–€•ˆ‹ƒq˜€——y“‚–…ˆ„ƒ~…}‰‹‡Š„††…ˆ•Œˆ}‘Œƒˆ…‚‡|‹†……‡Œ•Œ‚„‰Ž„…‰‹€’‘‘¢ŠŽ~|Ž}ˆ}ƒ‘Ž€’ˆŒ€‹‹‰ž‘x™s„ˆ‡‡‡”ŒŒ~ˆ‰†€’–„“š€‡™}|„‡’‘u’Šxˆ‹Š‚ŠŠ‰~”ˆ‰ŒŒyŒ‰†‘‹œ‹…{ƒ‚‚ˆ’‹ˆ{…‰s|‘Ї“‚‚€Ž„”„‰’‹‡‰|Ž‘}ˆ“‰‘‰‰‘‡‰’Ž–…‹…ІoމЉ”Œ‘‡‹‹Ž˜‚“”‘ˆŽŽ‹…’†q‹‡Ž†ŠƒŽuˆŒ‰†Œ‡†„‡…‡†‡‡ƒ††ˆŠ…††‡‡†ˆ‡†………‡†‡†…………ˆ…ƒ‡†„ƒ††ˆ„ˆ†……††‡†‡†…‡‡†‡ˆ…ˆ†‡Š‡†„„‡‡…†…†‡……†„…†††…ˆ†‡†‡‡†…ˆ†‡…††……†…‡††ˆ…††Š„……†††‡††††††‡………„†…„‡‡ˆ†ˆ‡…†…†…ˆ„‡…ˆ††…‡……„††ˆ…‡††…ƒ†„…††„‰†‡†…ˆ†„‡ˆ‡…†…††ƒ‡ˆ…‡…‡‡‡†ˆ…‡………††‡†„†††††‡†ƒˆ†‡…†‡„‡…†…††‡†††‡…ˆ‡†„‡‡‡‡„ˆˆ‡…†‡„……‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††‡††…††††††††††††††††††††††††††††††††††††††††…†††††††††…†††††††††…†††††††††††††††††Ž…~ˆ„‹‡‹ŠƒŠ}ŠŒ‘‹•Ž}’‚…‡‰‚‚Œ…Ž„’†Ž”†}‡ŽŒ‚•Œ€Š|•ž‡“Œ‰‡€}„…“ƒ„މ€“ˆ†’”vˆ›{ƒŒ‹„Œ…‹’ƒ€‹ƒˆŒ‚Žš…ƒž‚”†„ˆ‰’•Žr…ˆx€“Œ€Š‰€Žˆ‡“ƒ‰…‡‡‡œ’†‡‚v”ˆˆ|Ž‹‚‡Š‰ˆ‘“‘•”‚‹…~‹‡—‹‘ˆ‘’ˆŽ‡‡š‹‘ˆ“’Ž•’‡‘ŠˆŽŽŠ•Š€‚ކ‡o—€…‰†€‡…•ˆ–ƒ–ŒŽˆ†}q~”’‰‰…‘zˆ†Œ’ƒ‹Š‘“‘‹‡Œ‰‹‹ˆŽŠ‰–’{ˆ€vw†‹~Š’ŽŽ‰”Ž‘ˆ„|ŽŽ‡ƒˆƒ…‹Œz’¢ŒŠŠ…ƒ‹€~‹…~ˆ€‰~Š…‹~ˆ‹†€•o“Ÿx‰Ž•ˆƒ…ˆ‹…ŠŽ…ˆŠƒ“–|Œ‰Š“zt‡}Œu†‚‡x‡ŠІނ’Šˆ†‰ˆŠ’Š£‹‹‹…Œˆ‰…Š{Š{‹Ž‡„ŽŒ‘Œ‰ˆ‰…—Ž‘Œ‰ˆ†‘‹Š…’‹ˆ’Ї‡”ŠŽ‡“”–‡Ž‹ŠqŽ€‚‡‘ƒŒˆŽŒ‰†˜’ˆ„’…oŒŽŒ‰Ž{Š‚Šˆ‘‘’™ˆ‚f‹‡‡…}†}‹w—†‘Š™ˆœ{ƒ™ˆ|•Œ’‚z“—n|Ž’}{ˆ†‹…Œ„‚‹‹ƒˆƒ†ˆ„h††Š‹r†‚y‡…™†‰ ‘{|‡ }„ˆ›˜„„ˆ™“š‹…ƒš‚|ŒŒt‚†qŽqŽl˜›‡”£y|~ƒt…“§‘xz‹ƒ…r€‚€ƒyzy–unƒ‚”…€‚~‰…”‰t˜u‘vŒ~Š[’’sz„€sxšŠŒ}{w‡†‹ŒŒ}Z‘p˜“€Œz€v~tr‡š€{|ˆw•ƒ}Žxy•„­o’…„€ ~Œ‹˜‡‡…x˜Žxmˆ{ž††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‹†”r~‚ˆŒŽ–“ˆ†u‘‰Š—Œ‹”‚wˆˆ€‡Œ‰‡‘†…ŠŒ‚ˆ‹{‹Œx•Ž¢‡Šœ‹……‰ˆ“xˆŒ–~‰‰‹‡‚†˜z‰”w~Œ‰‡€†Š•‘ˆ†{ˆ„ƒŽ‹†Ž†”‰Ž˜™‹•‡Ž–Šx‰’Œy‚‹‡‰z™zˆ“–€‡”¤‡ˆ”‡„›wŒ‰‡w‰¢y|Œ‹ˆ€ˆ’…Št€Œˆ´‰“ˆ–œ”u‰ž“‰Žwƒ˜™˜–•~‘…“—Œs‚—Šƒ’|މˆŠŒ‰‘t{œˆ‚І…ˆˆ“Ž™wƒ—”‰†~z”tš•yŒ„‰z}‡ƒˆ–w‰€ˆ’•Žƒ‡Š}|}Œƒy’{‡{t}ˆ‘‘Œ‡…|‘—ƒ‚’І~~ˆˆƒ‚‘‚“ˆ…„|‹„u‰†„…Œˆ†Žˆ~Šx‰Š’ƒ}s‘…‡‰‡†~Œ‹Ž‹‘’~}Œ‰‘|‹~…Ž’ˆ‘~Š|†}’ƒ‹”‹‹”…{}‹vŽŠ’t{†ˆ‹ŽŒx„‰ˆ ƒŠ‹‹„Š}~ƒ‘’Œ„‡ƒw|~‡Š†ˆ‹ƒ{•Ž…“–w|‡‡‘‚Š…Œˆ†„‘„‡z„vƒ‰“t‚ЇˆŒƒ™š”ŠŽ‹ˆŒ‰‚‡‡‹…“‚~s‹‹ŒŠ‚„xm”„ކ‡†††††††††…†…†ˆ††††††…††…††††††††…††††††††††…†…†††††…†††††††††††‡††††††††††††‡†††‡††‡††††††‡†…†ˆ††…††††‡††††††††…†††††††††††††††††††††††††††††††††‡††††††††††††††††††††‡†††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††Ž‹„|z†™“‰€‡…ƒyŽ‚x‚‘€pw‚‡Š‰ˆŠ€ƒ„•ˆŽ‰•ˆ„‡~y“‡‘’…‹ƒƒŠ‹r‡ŠŽ‰‰xzŒ†‡Š„‚’…‡v{|{…zŠˆ…‡„•~Šx‰‰€‡ŠŠ€‘Œ‰Š‹Ž„Ž~|ƒ‚†…ˆ‹‘‡„|ˆ„‹‰|ƒŒ‹‰Ž‡€Œ”s€Š…‹‹Š‰{…‡‡š‡‡‡…“†‘‰ˆ}‹‹Š‰‹‰ˆ„~ˆ‰Ž™‹‚‹}ƒ†€‘‹Œ…Š‚‹‚ˆ†‡‹‰‡‰wŠ‹}†Ž’ŽŒŠ‚Œ…†…‘Œ‚€|…Šz†‹„ˆr’‰„’ŠŽ–Šw’ƒˆ•‘t†Š}ƒŒ‚‚€Š’“†ƒ†…~‰†…ˆƒ…zŽ…wƒŒ„‚†Šy‰„Ž‚…‚‚Œsƒ‰xtƒ›’‹‡–§…˜‘€ŒpŒ‚}‰•–„‚“Œzz }˜|ƒŠ‡ž†‰ƒ‹ƒx€“‘}€”†‰‹‹…‚{”Žw{‘ƒ{„‰tˆŒ¯‡ŠŠ ŽoŒ~‡i‚‚z’„‹¥™ƒvtork…‡†‹Œ™mu~ƒ€˜‰k‹…š™›Ÿl”T€z§ƒ…€}}‰…±…‘„›†Œ|~]‹“u¨…‰q†p²£‚”Šs™‡}‚‰~‹xˆˆ’ˆ‘^|Œw~‚|š›‡Ž†Ž„Œ†‡†Š†……††ƒ††‰…†ˆ††Ž†…‡……†…†‡††…„ˆ‡†…††Ž……†††ˆ†……††‡„††‡‡„†‚†‚…†…………‡‡………†‰‡‹…†Š†…††…†††…‡‚‡††††ƒ†ƒ……†††††††††††††ƒ†‡†‡‡„‡†…†††‡‡„…‡†††‡……†ƒ†……†††††…††…†††††††…‰…‡…††…†Š…†††…†…††…‡†††ˆ†‡†††‡…†††„††††††……‡††††‚†††‡††……†…†‰……†„††††…††††…††‡††††††……†††‰†‰ƒŠ…‡†‰†…†††„„††‡††ˆ†††…‡††…†††‰††††††‡†††ˆ†‡††ˆ‡†…†‡††…†††‡††††‚†††††††‡†…†††‡‰…†‡†‡††…†ˆ†‡‡‰††‡††…†„††††††††„††††††…††††…†…†††††„††††…††††††††††‡††††††…††††††‡††††…†††‡†††‡†††††††‡††‡††††††††††††††…†††††††††……††…††††††††††††…††„†††††††††ˆ†††††††††††††‹‰„Œƒœˆ˜‡‰‡~Š‹~ŒŽ†‹…Š€sŠ„‡€‹‡‹‘Œ‚yŒ‡ƒ†Š‹Žy‹’Šƒ…Š|І‡ˆ€„–ЄЂ‡ƒƒ•u˜¡x……މЅ‹Œ’–‡‚‰‡Œ‡•†Š{ƒ–€Œ}„…Š‹…uŠvŠyŠ„‹€Ž€Œ‡’Œ~€„˜†Žˆ}†Ž†ŒŠ‡‹}‘‰Š‰ƒŠ’†“‡y†ƒŒ…‰Š‰•ŠŽ‰…‹•ˆƒŽ‹‰’މ‹•މŒ„‘˜ˆŠ‰i’‘††Š“‡‡“‰‹‹Œ†Š‰”‹„‰‹oˆ‰Ž‰xŠs‘Š“‹€’†~†•‡ƒŠˆ…ˆ‚ƒ’ˆ˜ƒŠ{{Œˆ|€Œ‹†›…Œƒˆ‡‰‹‘…ˆyŽ“—”†’“ŒŽ‹…‡‹•„vŠƒ†”„ˆx’n‡ y†ˆ‚ˆ…‹‰’ˆ‰ƒ„ŠŠ€”™†‹Š‚u–Ž{”‹‹ŒŠt†Š‡‹xŽ”€‡‹Œ†}‹›‹†ˆ‡‹…Žšˆˆ”~‡‘ˆ‹†ŽŠŠ‰ˆ‹‡‘•”Ž‚€‰†‡Œ‰…ˆŠ”Ž‹ˆŠ…Œ‡•‘ŽŒ””‡’‹‹Š‹ŽŒ‹ƒƒ‰‹–†‘tˆ‰‰‡Š‰’’‹‘‰…ކ‘ˆ…‰ŒŠ‰‹o‹Ž†‰{zˆ††„†Š‰€†……ˆ†…‡‡†ˆŠ†…‡……‰††…†‡…††„‰‡†ƒ††††………†Œ………†‡‹†ƒ†…‡…‡…†ˆŠƒ‡…ƒ‡…‡……‡…‡‡‡††„ˆ†…ˆ††‡†††……Œˆ‚ˆ†‡…†„†ƒ‡„†‡…††…‚„ˆ…†‰‡Š†……†…†‡‡…‡…‡‡…ˆ†‡……‡‡…‡„‡ˆƒ‡‰‡…„†ˆ†ƒ……†ˆˆ„‡ƒ‡‡…Š…„…†ˆ……‡…††…†‡„‡……†‡†‡††ˆ†…†‰„…„†‰†‡„…†††‚ˆˆ„†‡……‡…‡………†……‡…‡†……„††…††††…‡†……ˆ………†„††‡„€‘~‰€‹•‚”xŠ‘„އˆ}†„€‘ˆ‹ˆ‹’”|~ƒ{y‘‰“‚~…Œ‰{Œ—Œ‹Žƒ ˆŠ–z‰Ž‘‡Ž„ˆ•Œ‹˜x•’s‘‰t|Œ„—†y{މŒ~ƒ‚†ŠŒŽŒ……‘y~‹…w…‹Š”›…‚‡„„‰Ž†“‰Ž‡‘’Œ‘Œ‚†Ž}ІŒ”Œ††•ˆz‹”‘–”‰“‡ŒŽ›‹”ŽŽŠ‡Ž”Ž…‘‰Ž’Ž€‹–Š…Ž’‹€ŽŒ‰z˜qƒ‡ˆz‹…}ˆŽ†‰“††„†“€‘ŽpЇˆ‘ˆ‰–•…І†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Š‡”wˆ‚‘‚‘ˆ‡ˆ†“–”’„Š…|‡†„}‡‰‘‘’‚Ž‘—tx…‰’„‰…ƒ‰Ž}‹•š‹“•‰€Œ‹…„v–‹…š‡y‹‚†‘‡„ƒšw’œy†Ž„Š‚’ƒ–…‹ˆ…€…ƒ—‹Ž…~—|}‹Ž†x„„„y‰ƒ†‘Žˆ‹‡‘ŠŽ†’ˆ„‡ˆ‘š„Š’}‰‚~‹Š„ˆƒˆ†„…Ž’‰Šˆ‰‹€ŽŽ„‡Š‰ŽŒˆŒ†“’‘‰Ž†‹Œ‡ƒ†‹‹†ƒŽs…‹‹‚‰Œ’Œ‰Ž‹‹–‡‰Š–…Ž“q‹’Š€Œw†‚‡ˆˆ†‰†‚‡‹„‰‹†ˆ’–Œ‹ƒy…ˆˆƒƒŠŽŠŠ‡‹’‰‚†€Š–…~‰ƒŒ…yŽ“ž„‰‹}Œ€‚‰‡ˆ‰~ˆ‘ˆŠŠ††‹‚|Ž•w‘—zˆ‚’‚Š„‹ŠŒ‰Œ‰„’‘‡†‰‰–{}†Šx‚†y‡‰Šˆ‹Ž€‰ˆ‹‹‹‡ƒŠ‹›‹œ„‚}‚Œ†‹‰•~•…“ŒŠ{ŠŽŒƒ™‰…‹‹ŠŽˆ‹ƒŽŠ‰Š•ˆ†Ž‰‰Œ‰Ž„•†‰ˆ‡–‡‰‘’Š‹z”r…Œ€ˆ‡‡„‡Ž‘‹‡ŽŠ“‡ƒ‘ˆ‰p‘‹Œ‹~€‡ŽŒƒŠŒˆ”s†€—”“€ƒ‰‹ƒ}Ž~w}Ž‚Š}m}~‘‚‹‰†€‚•|ކ“€‰{‹u–‹…’ކ‰„‘‹s‰…ŠŽ~|‚Ž€z~h‡‹“‡„Œk†‰ƒˆuŠ…Ž{‚‰‡’y|ŠŒw‹’Š{ˆz…‘~’€…z‰x‡””ˆŒŽ‹‰‚~t•‡‡•i}ДІ‘†•{‡‡Ž†‰ˆ…Œ‰†w†“‘‹z{wŠ…ŒŠƒ‡”Œ†Žn{†…‚‡y‡ƒ‘‚†„Ї’m—‚ƒ™{…˜”p‚Œ‹‹™‘Ž„{‹“І„Œ”’~}—€y}—†‚’z‹x™x”“‡†††††‡†††††††††††††††‡†††††††††††††††††††…††††††…†††††††††††††††…††††††††††‡†…††††‡†††††…††††††††††††††††††††††††††‡††††††††††‡†††††‡††††…†††††††††††††††††††††††…†††‡††††††‡†††††††††††††…††††††††††††††††‡†††††††††††††††††††††‡††††††††††††††††††††††††††…††††††„†††††††ˆ†††‡…†††††††††††††††††‡†…††††††††††‡†††…†…†††††††††††††…†††††††††…††††††††††††††††…†††††††††‡††††††††„††††††…††††…††††††††††††††††††††††††††††††††††††††††††…†††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡‘……ˆ†”|„Ž‚‹Œ€‰‘’‡Š‰}ˆŽ}‘zŽŠ‹Œ“‰€Ž‘’†‹‘…Œ˜ƒ}ƒƒŠŠw–Ÿ†‡Œ†{‹”‚•‚‹…Ž…””‚y”’ƒ„’u›“t‘‰}€ˆ€‡•Œ‘‡w~’Š€“”Š}Ž•‘Ž…Œ‰x„‘’‘w‚Œ“Œxƒ‡‹‚Ž„~••Ž’†–‚ŽŽŒ•‡Žƒ‡‹Ž•‹‹‘Ž’”‰ƒ…––™‰ˆŠ“‰Š—“„‹•‡‰•„”{†Œ“‡†’ŒŒŽ‚œŠ‘‚ˆ™k™l‹“‡v“’‹€z„“‘ŽŒŒƒŠŠŒˆŽ†t…‡‡„І…Šš‘‹Ž•uŒ‰z”›‰€‚{†ŒŠ~މ†‹„‚Žy}ˆ‘…‡…‰•“…’…‘’ƒŠ‹‰†„‘’Œ…€’…‹‰‘•Ž—ƒ‚ˆŒ‹•–’†‰‘Š|‡‹p–”x‰z‚…‹w†“Š”…}€ƒ‡|ŽŽr…‚‚u™”›ŒˆŽ‹€’ŠŽ…“Š…‹Šƒ—{•€Ž—‹‘•€’ƒ”ˆŒŽ||Œ’‡™žz”ŠŒ‚ˆˆ‘‘‹„„•ŽŒ›Œ”‘‹Ž—ˆ„Š‘€“‘‚‚…‰‹‹Œ}‰Ž‡|›s}s†ˆ“ІŒ’€†‰‰…„†‚††Œ„wx”˜’‹Ž|‰ŠŽŒ‹|†‹¨nŒ‡›ˆ‚~†”y‘~…†’›zƒ„ƒ{‰„…‚}‚Š–•޵ޒ|ƒ†‰ƒŠ}€‰p‹‰—‹„އw™Œu s{Дލ„­|’n“Œk|†‡’~z…}q‚—‹“…¦„t‰~œw™„ˆ„l’}sŠ‹~œw†–ˆz‡‹˜Š›‚u¥‹ss}jƒe›{‰~s‹j…”†›¢…µŠ‡›£Ž„›ƒ‘¨ž­‹†©\ŽzŽ‘kfh€œt†~„gnƒs€t‘“ŒeŸ†€‡‡™…’o‚y‘…‚sˆzž‹€{”Žˆ|z€w‰”mŒ}¤‰\q˜ƒ}˜s–БІ‡††††††††††††††††††††…††‡†††††††††††††…†††††††††††††††††…†††††††††††††††††††††††‡†††††††††††††††…††††††††‡†††††††††††††‡†††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††‡†††††††††††††††††††††††††…†ƒ…‡ƒˆ…І€‚‰‚€„~—ƒ‡‹…€}…ˆ‡†ƒ…‚‹ˆ„z…ˆ‹…‹w…„ˆ‰Š–‹„‘„‚ƒ’x„‰š‡~‡Š”ƒ…•†‘‹‡‹“‡…‚‹‡€‚ƒzƒ‹zŠŒ“„Š…u}‰ŒŒ—œ•ƒ‚€•‹…‚„ˆŒ„„ˆ|„…ƒŠ‹‘…‡ƒ|‰„‹Ž…qŠ‚‹Œ—„މƒ“‡…{|„’t}”†v|~x‚ƒ„ŠƒŽ‘w—t‹s~Ÿvx‰œŽˆ‹‘–‰{‚œs“}„‹—ˆ‘Š€‚‚†Š{‡…†|‹‚|ˆ’‡—€ˆ†…t„š}Œ……|‹‹›–†††‡†††††††…†††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…‡†‹…ƒ†††‰†ƒ†„‡‚ˆ††‡…†‡†…‹†…†„††…†ˆ†‡‡…††‡†††‰†„†††‡†…††††…†††…„†…†‹†††…††††‡†Š††…‡††‡…†††††‡†‡‡‡††‡††…†„†††††††††††…†‡†††††‡ˆ†…†††††„…‡††…††††††††…†‡††…††‡†††††††‡††††‰†††††††‡††††††…†††‡…†‡‡††…†††…†††††††…††††††††……††…††‡†††††††…†…†…††…††††‡†††††…††††…†††‡‹†…މބ‘…І|ƒƒ€„Œˆ‚“†{ƒƒ‰Œ‡‰‡€‚ƒ†‰ƒ…ކ}„ˆŒ„…‘†ˆ|{ŠŽ‡‡Šˆ‚†„j‡…‹ƒˆzu‰‚Ž‚ƒ˜‰‘‡‘x‡Š„zЄГ€•ŠzŠˆˆŽŽ„’„ƒŽ‚r††…ŒŒ}„‚ƒ“•€……’‚uƒ—†„~‡‰‹r…}s…ˆuvŒ~›ƒŒ•ƒ‹™…‹‡”l‡~Š“q”˜Œ~“‘“„ŽŠ‘¨|ƒ‹}}“Šœ„ˆ‚€z”‰‡–‰‡ˆ„‹}„~‰nˆŒ…o–xyŽ„x‰—…•Žƒ‚wƒ‹i†…†ƒw…•†……‡…‰†††††…‡†††„†††‡†…‡†ƒ…†…„†‡†‡†††††††††…†……„†‡ˆˆ…††‡…††††‡†…††„…††††††‡†…‡††‡…†…‡†‡…†…†‡†ˆ‡††††††‡†„††…†††‡†„…†††‡‡…††††ƒ†††††…†………††……††††††‡††……†††††…††††††ˆ††††††††††††ˆ†††††††‡†††††…††‡††…††††††‡††††††‡††††…ˆ††††††††……†ˆ†††…††††††††††††††††††††††††††‰…„‡††‡†…††…‰††††††‡††‡†††…††††††…††††††††ˆ†……†…‡†††††††††††…†…†††††…††††‡††…‡†‡††‡††††††††††…‡††††††…††††††††……††††‡„††‡‡††…†††††‡†‡†††††‡††…††…††††††††††††‡††‡†‡††‡†††‡†††‡…†††††††††…†††‡…††††‡†††††‡†…††††…††…††††††††…†††…†††††††††††††††‡‡†…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Ž‰Ž‡’‘ˆˆ‡Š~ˆŠ‘‹˜Ž“‘€~‡†ˆ†’“ˆ‘Œ‘—ƒwŽ•…ŒˆŠŠ~‰žŠ‰”„‚‚„Š}Š…†“†Œ„ƒ€Œ…€Œ”tœy‹ˆ‰‹‰}Ž€†‘‡{‘}‘”€{Œˆ”ƒ“vˆ‰‘“s€ŠŠwŒ‡ˆ†‡‹Ž‘‡Œ—‰’Žˆ›Œ„І‡‚…Œˆx}‘}Љ‰‹’‚‰~„ˆ‡†Œ‰‡”‘’–’ŒŒ—Šˆ“Œ‰”–‘ƒ‚‹‹ŠŒ‘ˆˆ“‰„”‡r‰†…ˆ„‹‰‹”ˆˆˆ“Žp—„ƒŒ„…ŠŠ†††‡†††††‡†…†††††††††††††ˆ††††…†††‡††††††††††‡†‡†††‡†‡††††††††‡††††‡††††††††††…†††††††††††††††††††††††…†††††††††††††††††‡†††††††††‡††††††…††††††††††‡†††††††††††††††††††††††††††‡†††††††††††††††‡††††††††††††††††††††…††…†††††…††††††††††††††††††††…††††††††††††“ƒ„‘€™–‡~ys†‹†vŽ‹†Š’x‚…|{ˆŽŒ…‘Š‘Œ„‹‰’Œšƒ€ŒŠ‹…‹ˆŠ‘–ބЕކ…ƒš›ˆœƒ€‹‹‰””Žƒ“މ†|Œuš•x‘|~‚‰{‡ŠŽ‘…y}•‚†~ƒ‚ws~~—œ‹˜…‡†Ž‡}‡‰‰…•’…‚Š‘v‰œ‰ƒ‡Š–‘‹ˆ…|‹‰Ÿ€–˜‚“Šˆ“„ƒz‰™…Š”‹‡…y‘”’Ч‰…’Š‚‚Œ‡‹‘Œ€ˆ‚ˆƒ‡–€…„‚Š”ƒs‘Žwlƒ†–„’“’€–Šˆ‡ƒˆ‹…‹†{~œ”ŽŠw~Ž—ˆˆŽŒ…{†‹‘†‹‹Š‹”•Ž’‹Š”’vŽ€‰“†–Œ’Ž}wxŽ”„‚ƒŒ‡…wŒ“ Š‰€‰†€ˆ~‡Šƒ“‚Œˆ„€ƒ•r‰˜|‹„‚ŠŠƒ‹‘‰…Œ†…ŽŒˆƒ˜ˆ•…”}‹}ŒŒ‹‰ƒx‚‹‹ˆx‹Œ‹‡‘ƒ‹…ŽŠŒ„…ŠˆŽ™‰‘†€„ˆ‰€‡Ž‹ˆ…ˆŠˆ„„‰…’Ž…‰…‡‡ŒŒ‹†”‡Ž€†ƒ“‹‰ŒŽŠ’ŽŒˆ„•އˆ•Œ‰Š‚p‡‹Œˆ„ІЋŒ‹ŒŽ„‘…‘„Œ‡‹ˆq“‹‘Ž‚Š~ˆ‹‚ˆ†Œ…††‹„†‡‹†‡‡„…€‚†…‡ˆ†ˆ‡†€††„‡‡„‰††‡‡††ˆ†…†‰„„†‡ˆ‰…‰…ˆƒ‡ˆ††††…†„~……„…‡††‡„ˆ‡†ˆˆ†…†‡„†††††…††…†ˆ††ˆ…}…‡††…††‡‡‡†„†‰‡‚†‡††ƒ†††„……†……†……„††…‡…‡††††„…………†…„†††ˆ†„‡††ƒ†ƒ…†„†ˆ††Œ††…‡†…‡………‡……†††……††…ƒ†……††…†‡†††…††„‡Š…†……†ƒ†……„†ˆ…‡‡…‡†††„††…†‰††‡ˆ††…†††„††‘ƒ‹‰†‘Š“ŽˆŠ…Š}˜Šˆ•“y’|x‹‰‹Š‡”‹‘Œ{‹€…‡ŒŒˆ‘s‹Ž™Ž‘Š}„‡‘s„†‘…’‡ƒ’„…”sƒ›|‹‘ƒ‹ˆŒ’‚Š„„Œ‰„‘šz„ƒ…~•Ž‚•‡‰‰‹vŒŠŒ„x„“Š€ˆŒˆ‡–—‰ŽŽ‹ŒŽ›‘††‡ˆŒŠ†‚‹“„…“”…†‹‰‹Œ‰ˆ†‡‘‘ˆ‚‹ŠŽ˜‰ŠƒŽ‹ˆ‘’ˆŒˆ‹’‘Žˆ‰Ž‘ˆ‰‹sŠŠ†„…–ˆ‡‹‘Š‹‘‰ŽŒ‹…ˆo‹‘‹ŽŽzŠu‹ŽƒŒ…‹‹Ž‰‰‡•„Œ†€›‘ƒ‹‡“ƒ„s‰ƒ„˜~……‘“‚ŽŒ–}‚“ˆˆ‡€‹’Š‡Šˆ…•Œt„v˜y†lƒ‡ƒŒŒƒx‰{o‚u{rŽ~…‚‹Š–†‘}z€€ˆ‡|™€††˜ˆx‰wš‰‡‰‰†‡w|„…p“‹—‚ˆiŠ…}yŒƒ€Š|„—‰ ˆ…{ГЋ•€šœ–ŽŽ‚Žˆy‹…{Žw™…¥’wvts„|އ†Œ‘‘’„€„•ˆ€~|–jy‹|yŒw‡ŽƒŽv”v†}†ƒv„Œž{€x‚ˆ„ˆ™‰’‚~|Œ•ˆ}{‰Š„†}v‚z†s…~‡ˆ‹‰…‡”‚…Œˆ…‰‚}w‡‹„…}Œ‚…Œ‰w„…ž…€†‰†‡~‡ƒ‹–‡‰„Œu‡†{™‰‰{ˆ~ŠŽ‡ˆœ’wzЉ~ŒŽ…ƒ†‰‹’„‘€…Œ„ˆzy~ƒ‚…‘„‰‡‹‹}†s‘ŒŠ‘‰†‘Šˆ”‚‹wx“„’Ž“€…Œ““{”Їˆˆ„ЂД}‡“Œ‡‹Œ†‚††Ž’†‚Š„Ž{‹Œ‚•ŠŠŽyŒ‹‡‰†Šƒ‘ƒŒŒ†‡~…‰„t‹‚†Œz{ŽƒŒ~‡‚‘ƒ…‰Ž‡†ƒˆˆ‡’‹“Œ™Ž„‘ЇЅЇŒˆŠ‹‡”‚†ƒ‹’†‡†‰Š~Œž‹ƒ‡†‚ˆŠ‰‚…ˆ‰†‡Ž€–˜wŽt€ŽŠ‡‚Š…”‡‹…‹†˜{ƒ‘‰‡—{Œz‚†‹“w…Žx‹†‡ˆ‚Œ‡‘ˆŽ‰ƒ…ŠŠ‘‹œƒŽ†~Š€Šƒ†Œ€ƒ…€†Žˆ‹‡ˆŽŠ‰†“…‡‡Œ‘•‹††Œ‘ˆ‡ˆŽ’†‹Š†Š€‰q‰„‹…’‹’‰ŒŠ‘’…Ž‹ˆ‹qŽŠˆˆ‹†Ž{ŠŠˆ‡”vy–€”„‡‰}ƒ‘ˆƒ‘‰—€’’€‰Œ‡ˆz‰‚Œˆ–w’•”‚|~ˆ‘†”‹ˆ’Œv„ŽšŒ„}“‰‹ˆ~‰ˆ‹˜Ž†‚€‘‚’•vŽ z†ˆ†‰ˆ…„‘•‰ƒˆ…‹”‚Ž–y‰~€˜ˆ‡Œ‰Ž‹v‹•‹xƒ˜ˆˆ‡‚“ŒŽŒ•‡ˆ‘‡…‡Œ“ˆš‰‘}„‹‰Œˆ‡ƒ…š‡‡{’“‹‘‡~‡‘ˆ’…•Š€”‘ˆ‹…’‹–ƒˆ†“‹Š‹Œ„‹’‘’†‘‚Œm‘”‹‚‰…’‡‡„’‰‰‘‹Š‹’Œ’oˆŽ‘€ŠzŽŠ–†††ˆ†††††††‡†††„…††††††††‡†††…†††††††‡†††††††‡†…†††‡†††††††††††††…†…††††††††††††††‡†††††††††††‡†…††††††††††††††††…†††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Š‡‚‡”vy–vt„Ž}›…‚Œj‹}z€¢…Œ‚‰y—‰’u˜u™v‰Š}ƒ‡”“z—”ƒ}gky‘}¢~…–‡”…„†‹€ŽŒ~u‘{}}}„tˆ‡ŠŒ†‚ˆ€ƒ‰•z‹šq”{z“‘‘•‰ª„y~uˆ€w|Šƒ|œŽi†…š’€…q¥ŒxŒŸ†m|sާ‰”‘˜¢|n•|”€{›}wvŽŠ”“•—‘s‰™ž¦‰f„„€¨–Š|ˆ–‡Ž‰’ކ•ƒ„ˆ’o–{•ƒ…ˆ—˜œŒ˜‚{•Œ•‹yt’‘…“•~Žv“~‹~xމ€z‹••ˆy…‰‡„†‘|y€Š€m‡‰‹ƒ…†€‚}”†‚€†ƒ~€Œ‹€‹‹ˆ„…ƒv~“ˆ“ŽŠ‚‡Žˆ„†‹‚•‹ŒuŽyŠ‚~”ƒ‰‹ƒ„†“•x€ŒŒu‰Œ~†„†z‘Œ’„‡‰Œ‹ƒ|‰z‡„…ŽŒ‹‡ŠŽ~sŒŠ…’|І€†~Ž–vz‘…—‹…‘ƒŽŠ„‰‡–‹†Š…‡ˆŠ’ŒŠˆ‰‹ƒ‰•…~ˆƒ~„~…—‰‚„އ‰z‹ƒ’’Ž†ŠŒs„Šˆ†Š‹•”‡‰„‹‡Š„Ž‹‹ˆ‡€ˆ€~|‰„Œ|‘vŽƒ‰Ž„‰~•m}x¡€œŽƒ€“…ˆg“€ƒ‘YzŠuh€Œ’Š„‡…‘’‹‰~”‹d‹yŒ‚•z‰ƒlœ…’‹’……€|ˆŠv«„†g}rP‘o|Œ†“e‰‹b‘˜‹k”wx”‹pˆ€z’˜ˆŽ›‘›…”ƒ‡ƒ}€~y{€ˆ}…“|’˜š}œœ„}|uƒ”ˆ˜•‡…‡ž€’‡’„v‚‚„ƒ’€‡‰ˆŠy˜s‘|‹ˆ‹ ™ˆsx}‡”’Œ…‚—†x•‘ˆz_…‘”“€“¢i˜ˆ‚ z{‹~„z—…vw˜†“‹w˜€†šw—”ƒƒƒ…„|~Œˆ”‡ˆwŠ™vxšŠ‚„v„ˆŒ–”ƒŽ“{†‚”{Ž€™‰|€|„›†’‹zŽ‹ˆrŠŒ~Žˆ‰Ž…sqzŽ‘r‘’—“†€“xŽ{ŽŽ‡†‡n“‡ŠsrŠuƒ‡‡„ˆ“š¡Œˆ‡•Ž”€Œ}Œ‘†’ƒx”‹Œq•j~Ž{Š{‘™‹}‹Ž“t”“ˆw™–|x~‘qv†“‹„slŠŽ‡”‰‰™Œ–˜”€ƒ€v~•“ˆ‚†Š~s“x‰u}„|˜“|~ˆ‹™”x™›|‰Ÿ~ƒƒ{“ˆ|‚}Œšk†–”vˆ€€n’k˜…’…‹Œ}„‰‡‡}‡‚„}‡††‰…†Œ†„Ž…†ƒ€„‡ƒŠˆ†„‰…†‡€ƒ…„Žˆ……††Š…‰†ˆ‚†‡Ž†‡Š’…†‡„‡Š‰Š…‡ˆ†„ƒ‰…ˆˆ‡…ˆ‡†ˆ‡ˆ†ˆ†‡‹…{†}ˆ†……††‹ˆ‡†…‰†‹‡ˆ„‡Ž„†…„‚ƒ„~†‰†Œ…Љ‡…‚„…‚‚„„ƒ‡…ƒ‚‹†ƒ‡‡†Š‡…‚ˆ‚ˆ„†‡‰„†…†…†‡‡‚…‡ˆ††Š„Š„……‰„†ˆƒ‡†ƒ‰Œ‡ˆˆ†„„…€Š„‡††…ƒ„ˆ‚„‡Š††Œ………†‡†‡ƒ†”‡‡„‡ƒ‚……‚„€Š‡u–‰w„”†˜v•–’’‡€v‡…|‡Šˆƒˆo’y“oŒ‘|}“ˆŒƒ•‹‰Œ•…Šœ‡„}”ž’}’˜Š‹†Šv“•†‹šnˆ›v†Š†‚ƒ¤“™†o‡‚Š”–˜|–’‚‡‰~•’•ŠxŽŒt„}‹œ‰‰„–ˆ‘“…œ‰‹Š”“‡Ÿ‡Š‰ˆ‹’†~ŠŒ‡”{—’†Š“‰ƒŠ•“ŽŠ‰Œˆ€†•‰“€‚‘žˆ’Œ‰‘ˆˆ‹„˜~˜•m‹ŽšˆŠ‹ˆ‚‚Š‹“ˆ‘ˆ’Š™‘……q{ŒŒ„’Šˆ‰†‰‚‘І†‡††††††††††††††††††††††††††††††‡†††††††…†††††††‡††††††††††††‡†††……††††††‡†††††‡††††††††††††††…†††††††††††††††††††††††††††‡†††††…†‡†‡†††††††…††††††…††††††††††‡†††††…††…†††††…††††††††††††††††††††††††††††††††††††…††††††††††††‡†††††‡…††‡††††‡…††††††††††††‡††‡†‚…†‰’…Ž}ˆ‘‡”‡š‡Š’ƒŒŽ‡‰„‘†‹Š‹‚Œ’†ŒŽ~Ž›†ˆ‹‚€’¡†Žˆ}Ž€‹€’ƒ‡…ˆ‡‚Ї…‹Ž}š’p—›xŒ†€Œƒ~‚Œ‘‚ˆ‘‡‚‹’‘‡•ƒ–‹‰’‹z}”–v„‘ˆ‡y†‘‹…–‹ŒŠŽ‘ƒ~‰’‰ ‹‹ƒ}’І“‚…Ž€”–‚‰ŽŒ‘›~|‰…‡‹ˆŒˆ••‘€Ž‚‹ƒŽ‘…’…’Œƒ…Š„˜‡ˆ‰“‹s”“x‘‹‰}ŒŒˆŠ‚ŽŽŠ…‹Œ‡Œ’†n‚ŽŒ„Š’Ž•†‡†ˆ†ˆ‡††††‡††††…††††††‡†‡†††…†††ˆˆ…†ˆ†††††††††‡††‡‡†„†‡††…††††††††‡†††††††††„‡†††…††††‡††††††„†ˆ††‡††‡††††††††††ƒ††…‡†……††††ˆ†††††…†‡†††††††††††††††††…†…††…†††††††††††„†††††††…†††††††‡††…††††††††††…††††…††††††††††††…†††††††††††…†††††††††††††‡†††††††††††††ˆ—†„Œ~ˆƒ}‡‡‰‡€‡y‡„ƒƒŠ€ƒ€Š†Œ‚‡…‡€‹ƒƒxŠ…ŠŠ„††Š‹‡†‚ˆ‰ƒ†‰…„†…ƒ}…ƒ…ƒŒ‡ˆ‹‚‰Ž‘ƒŠ~ƒˆ™‡ŠŠ‰†ˆŒ‚ˆ„‰}†‹„Š‚…†„ЋЀˆ‡Š‡zˆˆŠ†ƒ„‚„‡‹ƒ‰‡‡‚…uŸ‚„v†…z”„€…~Š…‰Šƒ„‰“…„†}~‰†‚~ƒ‹v…ˆƒƒ†…€zЇ‡ŠŒ—…„…xˆ~–„•„€ƒˆˆ}Œƒˆ…‰„އ‰„‰‡…„€‡‘›vˆ†‰‡„–†Š‰Œ†“ƒ‹†{‰Ž†Ž…ƒ†k…pŽŠ“|Ž‘’‚‰“wƒwƒˆ€Šq‹|‰„€{”Œ‘‹“š…wˆƒt‰‰™…“z’”ƒ„z‘†s‰–„މw‰ƒˆŒŠyrŠŠƒ}…YŒp”’‡€€ŽŸ¸‘•š|—–Œˆ{€}wpƒžo—‡Š~—‰|‰„„Œwƒ~’Œq€£†eƒŒ¤‡|vŒƒ…‡zš‘–Œw”yz“ˆr™}€œ•‚t—oŠ‚šy’m•–†”‰“’tƒ‘ž§š¯’~{{u‘ƒ‚zˆ{|xŠœ›xƒ“……w…o}ƒ‹yœh’Œou}“Ž‹{œ‚„r˜‹˜{€‹x‚˜‡‡†††‡††††‡††††††‡†††‡…†††‡†…††††††…‡††‡†††††††††‡†…‡††††††ˆ††‡†††††…†‡††‡†‡‡†††„††‡††‡†‡††††‡†‡†„†‡…†††††ˆ†‡…††‡††…†‡‡††††…‡††…†††…†…††††‡‡ˆ†‡††††‡‡†††††‡†††††ˆ‡†††††„†††††ˆ……‡††…‡‡†††‡…††‡††††‡‡††‡……††………†‡††……†††‡††ˆ†„††…†…††††††…†…††‡†††††…††‡††††ˆ†…‡†…ˆ††ƒ‡’“ŠƒˆˆŒ‡ƒp„‚‡‡‰„w{‚ŒŒ…‡ŒŠ†Ž‹–ˆˆƒ‰ˆ€‰Œ†}Ž‹ˆ‡xˆ•ˆŠ„„€ˆ‡ˆ„…Œ„†Œˆw‹xމx‚zˆˆŠ†Š‹}ƒŠŽ‡~‰’‡„‚•ˆˆˆˆ‚…‰‡}†ŠˆŽ‡‡‹‰ˆ…{‡‡‘|‹z…‘†•‹‘‚Ž†Ž‹ŠŽ‡ˆ–‹‰ƒ†ˆ’…ƒ†|††ŠŒ‰Ž…‡‹y…Š’‰‹Š‡‹ŠŒ‹……Ž‹~”„ˆ‰‚Ž€mŒ‡‹ŽŒ”Œ‰ƒŒ’…‡Ž‹ƒ‡ˆ†ƒŽ‡ˆ„x˜ƒŽ‡†“„ˆ€„€ˆŒ‡Š‡‰€…ŒˆšŽ†Ž“†y…‡…ƒŒ†‡ˆ‘Š”‹‰‹‰”‡‰Œ‰Šv”‹Ÿ‡ŒŒ‚„Š…‚x}‡ƒ‚Ž„“‘‡‡‚‚“u‹–}ƒ††‡ƒ‰‘……І€‘…”zy‘Ž”{‘•‘u†–‹y…Š€yƒ‰Žˆˆ•“„„ˆ•‡˜‰Šˆ‚xŒ—€ˆŒ‹•z”‹‡‰‡“}‘˜Œ¡““ƒ‡‰“ŠŽ€ˆ†›‘ŠŠ…‡“Š‘‰€ƒ“Š„”‹ˆˆ’ƒ‰uŠ™‚ˆ‡†€y‹‡–…„•…‚v‡rЉ“›z‹‰‹„ˆˆ“ŽŒ„‹…„‹…‡’ƒ‰‰†’“•Œ”…€}‡‚ŒˆˆŠ‡Œ‹•…Ž~Œ€€‡‡„ˆŠ{‘¡‰‹ŠŒ{r…{‡…‹ƒ‹z„„Š„…–”u–vŠ–š†{„†”‚ƒ„‹…ˆ’†‘™~‹™„Š—‹…‚‘’…t†’Žw…†‹ƒ‚‰ŽŒ“ƒŒˆš…‰Œ‰„¡Ž}}…ˆ‹††„’…Žƒƒ~‹’‹“‡‡ŒŠ„Žˆ„†Žˆ€‡’„}…‰”…Š“‡Š’ˆŒ‰‹‘‹‰Œ‹‚‰p•“Š„Žƒ…ˆŽ”’ŠŽ‘މ…‹†p‰„ˆƒƒ‡‹‰’‚‡~Žˆ•€…”z‰†Œ•Š‘‹‡…„ŠŽŠ‹†•“€x†Žw{‡Œ˜“ƒ|Ž‚x†’šŒŽ‡{}…‹Š•z’Š…Š‚Šˆ‘…Š‘{˜y‘‹u‹“|Žt“Œ‘†}‡„‰–}ƒ„’}ƒˆ‹xyˆ‚nŽƒ‘”‡~ƒ‰‹“‚“Ž˜˜x’}|‹Œ–‚‚‰‚”ˆšŽ‹Š‡‘…•ƒŠš‹˜Š„Ž‘”}††ˆ•‹‚“‰„‰Ž„ŠŽ‹y}”vƒ‚‰|ŒŒŒŒŒ…”‘‡“މ‰•ˆ•g™ˆ‡€|…‹ƒ”Œqˆ…„„„‚|‡“Šz‰Ž‡ŠvŽ„ƒ‰yŠ„s}ˆ…ƒŠ„~…y—‡…ˆ‡{Ž‘†‡‹yŒŽ††‹~x‡Š†“yˆ‡‘Œ‚zpˆ†•Š|w‘{‹•ˆ‡ˆy‹Š…ƒžˆ—ƒ†Š‘€‘”€Ž}~‚’ƒ…—„ˆz‘‡z€ŽŒ‰‹“†‹p‹“™ˆ…‚}†‹‘’‰š~ŽŽx†Œ‘……‡ˆŒ’‡‰•‚Œ’Š„ƒƒm†Ž„Œ…ˆ‡‰’€ƒ†ˆ†‘‰‚ƒ‡•‰ˆŠˆ—†ˆv‹€‹˜‡}nŠŒ‹‚•˜†Œ‚‡‡|”‡‘‡†‘‚x‡………wm’’І††††‡†††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Œ©‡•jjy‚š§‹št°„›™~•{{¤~–‚‚‡z|™—r…‹…n‰„~{vn†“•sŠw„‹…’€~xdŽ€g]všzb™iryur˜¡—y…¢­l”r’¤Z~ŠŒw{z†q}oe|q˜u•|€’y{Ž…†•˜‘Œ¡yh¬kpªŽ~‰‚^{tut›~¡v–sŽ‹ƒv£i“–z¨eƒº[•†„zƒ…}•o Š‹ƒ“|}|v¦lvƒ‘†fe~qŽœtu…–ˆœ¥w£iwŒv}}‚“~¤‡•š€‚¤jžŒŠ‹e£‘~˜œ˜ƒ‹|‡‡‡‚k¤}—w…‚£ŽŠƒˆŒŒ‚y‹~‚‡}q…‰Š’‰Š…ƒ…’Ž„„‰g†x—Šˆƒ‚ŽˆŒ‹|‡u„އ‡›|p}†r‘{Ž‚‘’|€’v“ˆ}‡}‡ˆˆ…ƒ–‚‡†‚މ‚Š™uƒ„‡|‚yŒ‡ŒŽ†‚Š~††‰€–r‚ˆˆ‘…ž‹‹wŒˆ‡„…‹Œ”Š„…~…‘‰€z‰ˆ‡…ƒ‰”‡‹•‘ƒ’xkŒ‡†ŽŠˆ€Ž‰~ƒ‰ƒ“v…–‰„ˆv‰Œ‡{””‚‹€ˆ‘†„‰†Ž„”‰…|ƒs”}”|‰–Ž‚‡ŒŽ…‹ˆ…|””‰‰Ž“‰†…ŒŠ†{€Ž‚‹’Š{Œ•‘•‡‰}|•~{|£†„v’•†ŽŠ”Š‚““„x†u˜Ž†’Š€“—„—…“rœ•|‰†Œ|‡|x”–Ž}Œ˜‡„~Œz•y‹‡wƒ‹’‰mw‡‡ƒ‚wŠ€wƒ‰”’}ƒ›˜‚‚œ‹‘Žty|„o‰‰‘€¤‰y‰…œ‡”›Ž£”‰š™qžƒŸ‰yŽŠzŒª“{‚‹ƒ™„Ž…uw‡„„}•–’Ž~ˆŒ|‹p™um†‹‹rŒˆŽŽ’‘ŽŽ‹ˆ…g…‡Š|‚€Œ•‚‹‚€‘‡…}„}‹™•z„š‹…u™€v„“wƒ|oŠy‰Ž‘€z„–”’}ŒŠ‘„~}}~‹{—‘‹ƒ…zl‚Ÿ‚™Š„•|‰zƒŠŠ„‰…‹ƒ„Ÿ‡}r†Ž{•‰™w€šŒ‰}Ž—~‡~„ˆ—Œ™€wzŠŒ„€~…އ‰€‹zu~Žš„Šuž–†…‚”“}„•‡œˆ‰”›€‘Ї„‰–—}Їpƒ•“‡„“˜Œ‡—~„‘‚€ˆŒ‹}“Žv{ŽŒ‰€–’ƒuŽ“¥„‡{kƒ‚ŠŒ‹‘šˆ˜‹„‘Š„‹–’Šzƒšy~~ƒœu‰m”›—w‡‡ˆ†„‡ˆˆŠ‡ƒ†‡‹‡‰„‡Š†„…ˆˆˆƒ†‚†‡Š††ˆ…Œ…ƒˆ†ƒ€‡†Šˆ‡†ŠŒ‹Š†‡†…ƒ†‰‰…Ž…ƒ{|‡ˆƒ‰Ž‹‰…„ˆ†‰‡…†ƒ†„~ƒ€‹ŒŒ€‡‰…†ˆˆŠ‰‡ˆ†‹†ˆ‡†Œ†‡ˆŠ…‰„‰ƒŠ‡‚}€„ƒƒ‡|‚ŠŠ‡‹€ŒˆŠ‚‡…†‹ˆ„~}‡z„Ž…‡‹‚†‡ˆ„‚‚‡†‡‹‹‡ˆ‹…‚Œ††‡‰ƒˆˆ‡†…„ˆ„Š‹ƒ‘‡…ƒŠ‚Šˆˆ‰†}‡ƒˆ„‹€ƒˆƒ‚‡‡„‡‘ƒ†€„‹Œˆƒƒ‡ˆˆƒ‰ˆ‡…„Š„†˜ˆ—„ƒ›•“}‹Œƒ}{’~z†Œ~|€o‹€ˆ”‡Ž’І€Œ”z‡{††{~Š”…{{’ŒŒ‰„‹ƒq„˜„–ˆˆ‹ˆŠy‰p‹ƒ†‘‚’w‰€ŒŠƒ{ŒŽ•‚‹—|€“‡}ˆ–‹•s†…y‘„€‰††…’€„€ˆ}|y†‘‘‡’rˆ–‘‰ˆŠ˜|Ž˜w‚•‰Œ‚†ˆ‘Šˆ•ƒ€ˆ†’€„…}ˆ‹ƒŽ‰Ž’‘—xƒ‘„l’އŒŠ}–“…„Žˆ‹†lˆ„ˆ¥ˆˆŠo††Œ…ƒ˜…”‰ƒ‡‹†‹‘’Œ‰Ž‰‚ƒz”„ƒŠ‚q‹j‘—ˆ‚†–„Žˆ~‡…€‡‡†Š…—vކ…Šˆ†„ŠŒ‰Œ‰‰…„ƒ‰‰„„‰ˆ„—‘ƒˆ‹†‡Œ„„‰€…ƒ‹}ˆƒ‰{}ƒ…}“‹Žˆ““ƒ‹ˆŽ‹…•‰‡…‚„ƒ}|‰†Œ……†„ƒŠ‡zƒŠŒ~‹€……†ˆŽv‰…‚ƒ‡‡–†‚‚Š‚ˆŠ…„~‹…‡w„…ƒŒ‹ƒyz‹~Œ„‡…ƒ‡‡„~ƒ’‹†‚Ž”‚ˆ‹‹‚ƒŠ~ŠŠŒ†Ž‚‰ˆ~…„ƒ€ƒ}‡ƒ†ƒ€yw„}†‡ƒˆŠ‚€ƒ|…vƒ€†|ˆŠƒŒ…’€…††ŠŠˆ—„‰†ƒ‹‰ƒw†’€”…‹‚†‚„‡yކޑŒ}ƒ…‚„y„އ‚ƒ˜€z{xŠŒƒ†‡‚‘|‘Ћއ®‚‡š‹…v‘‹wz„‰‡Ux–‘›£‹~~ˆ|•“}}~w‹z‡v‘„Œ…„†”“~š–Œ–ˆƒŠ€Žˆ…‹•zwˆ‘‹u–‹—ƒƒˆ”’—•‘ƒ…¥”ŒŒ”ˆŒƒ”…“Šƒ‡z„uy•…‚~€–¢‹r‚q¢†‘€…}€’„„®|›™œŠŽŒ}…‘—zz‚•‰“Љ~•…”ƒˆŒ~nr•t¢‚ƒ“x‹™‡‹|v‚†už‹…†Ž‚¨€‰¢•„~…{–”¡}…‚…†„~}q‚…}|zp‹Œ‰™…‘zƒ…†•zvŽƒ~yˆ‚}vމ„•‹|m‰{r{›Š—“}‹‘Š€–{†”‘މˆ„‹yŠ€šyq’…vŽ’‡t|‡—y“Ž{ƒŠ…’ˆ’~~ŠƒxˆŒ‚‚‚U–Šˆs’–†’ˆ‰‘’}u‰”±‡™“€˜†©…Žx–…‘‘z‚‚y„Ž‹‰‹‘Žœ„Ššt…‰‹¨|ŒyŽ€‹†€˜†–€|Œ†‚›€Žšut~‚~–’}‰„‰‹†„‡‡’‹y}o~v„…‚†u’”€Š–Š•‹xˆ„‹ŠzŠ~Ž‚Šˆ††‹~Œˆ}‰Œy‚‡“„…Œ‹†Œˆ“}zŠ‚„œ–‡‹†‘Š{‰€€ƒ’Œ‰ž}’Ž”z{˜Œ‰“‹†‡‡‡p‡Ž‘‰‹}xˆ‡„ˆ†}‡~‚‡‚…˜Ž…‡’•|…ŒŒ›~‹‚wŽ”~ƒž~w}‡…|„ƒ•˜…}†~zš~”‰„‰˜‡”x—Œy‰ŠŒŒ‡}‡‡}Œm{“‡†”‹w‹Šˆ‰”‘|€Žx’˜~†€‡€…ˆ}h~ƒ„}…ЇˆŠƒz‡‚|{†”‹|Œ{—…{Œ€‡Š¡€}{{ˆz“‰•“‹‚…vŠƒ”‘‹…v¢Œ‡rv|‚…|“x||’…ˆ|g‡}“•Ž}ˆoŒ‡Ž‰„}•ƒŠ›“’„–•Œ—Š‚y‡“|}s…’’‹‹‰ƒ“‰z}‘„qˆl~zxˆ‘~q€“ˆ†tŒ‘}ˆ~u€’†œ‹‰„€‹sz}—‚zŒ„ˆŒ|z‹…’ƒ…•›”‰p”{‰„y~„Š‹Žx‹‘“s’}¥‡ŒŽ€ƒ“™‘œ‰Œ€Œ}š„”ƒ}‰x‹’ŒŽƒ‰ƒ›‚ŽŠ“„†“”†Œz’ƒ}”ƒ‚‚Žv˜‡‚“žy}‹†˜{y|~o|ˆzˆ’nˆr•–†“†}†††‡†††††††††††‡†††††††††‡†††††††††††††††††††††††††††††††††††…††††††‡††††…††…†††‡†††††††††††††††††††††††††††††††‡††‡†††††††…††††‡††…†††††††††††††††††††††††‡†††…†††††‡…††††††††††…†††‡‡†††††††††‡†††††††††††‡‡†††…†††††…††††‡†††††‡†††…‡††…†††…†‡†††…††††††††††‡†…‡Šƒ‹†‡…‚‡†…††‡†‡„‡‡Š‡†„‡††††…†„‹††…‡†††‡†‡‡†††‡††…„††††‡Š‡†‡‡†‰…‚†…ˆ‡†††ˆ‡†…ˆ‰‡†ƒˆ‡‡…††‡‡†Š‰††„†…‡…‰†ˆˆ‡……ˆ†‡…‡††„‚†…††ƒ…„††„……„†……‡„…ˆ†‡…††‡†††‡…‡†††……†ˆˆ‡††…‡…„††„‡……………††„ˆ‡„„†ˆ„†…ˆ………‡††‡‡‡†‡„†…‡†…†††‡„„†…‡„††„„‡‡†ˆ…††ˆ…†††‡…†…†‰†„…ƒ†……‡†……††……‡…ŽˆŽ|’|“’†’‡…Ž‹Ž˜•Ž‹zƒ†€€{‹Ž‰ˆ‹“’}ŽyŠ“r|ދދx~…wˆ—›‹ŽŒ€}•˜…†–‚ˆŠ–‰Œ‰{Š•‡’‹˜s–˜yŠŽ‚”‰••„~~Ž€ƒ€˜–—ˆ€†’Œ‰„ˆ’„u…‚Œs…‰ˆƒ•š…Š‰‘†Šƒ‹‹‹ˆ‹”™ƒ’’€ˆ‘…„„†ƒ†}”Ž€„‚”—Œ•Ž‘‘ˆ‹’”…‰Ž‹“„‡„ކ“Š“†–‰}“†ˆ‡†€”Œ„|žp~…ˆƒŠŽˆŒ‚˜Ž‘‹’ŠŽ”Šˆ…›ƒ“iŒ~€†~†„Œ…€ŽŽvšt‚{ˆ„‹‚ˆ““’‰‚ŒŒ|‹{…Š„’Š–|‰q‡–wŠ™Žˆ‹‘zŠy‘•y„–~Ž}}“Žˆ”wŒ‰Ž’Œ‹‰Šˆ“ŠŠŠ™r—u„~Œy˜—”‰ˆ|t…‰‡–€}€‡“‡z”‘l‘‹h‡‰‘‘Œ†ˆˆ‹‰Ž‡—Ž…˜“ƒ—‚Œœ‹€‹—Љ‡‹uŽ„˜“”•ޕޔ†œ‹’•ŠŽ“‚—•Œ‹ˆ’‹Žƒ”“‹|†™Š€š€”r~†€†‰“Š}€•‹ŽŽ–‘Œ€ƒˆz—‹i…‘w‰…ƒ‰ˆ‘‹”Š…€…~Š…‡ˆ‡††}‚І…†ˆ€„†††‡†‚ˆ†…„…ƒ„‡†‡†……Š„‡ƒˆ…„‡‡ƒˆ„„ƒ‰‹†„‰‡…†‡‡‰†‹Šˆ‡ƒ……††ƒˆ†ˆ…‰†…ƒ‰ˆˆ‡‡†„ƒƒ†„……‡…††„„‡†ƒ…‡‡ƒ†…‰‡‚†††…‚‡†…ƒ†ˆ…‡‚„‡„………ˆ……„ˆˆ„†……ˆ…„„Œˆ‰ƒ‰ƒˆ‰„„†‰†‚‡ƒ„„Œ‰„†…†Š†‡‡ˆ†~„‡‚„Šƒ‡ƒ…‰ƒ‚…†‡‚‰„†‡ƒŒŠˆƒ††……†…†„ƒˆ‹…ˆƒ†Œƒ†ˆ‹…‡„‡‚ЉЅ‡†„ˆˆ„…Š~Œ†‘ˆ–ˆ‰ˆƒ‰…‹‘ˆžŽ‡Œƒy…‰ˆƒ…‰–…ŽŽ‹„ˆ‰‘…ŽŠ„‡‰w‹„‰މˆŒ‚Š…‡‘ƒ„z‘‚މƒ‡˜vФz‚ƒŒ€ˆƒˆ’‘–‰‡ˆˆ’„‘™}ƒ„‰‚•zŽ‚‹„ŒŽ‰uŠ“wxŠ—‰Œv’Œ‡™‘†‰–„¡ŠŒ‡ˆˆŠŠ†ƒ†„„Š‚‹’•‹‰‚މ‰‰‡†““‰†ŠˆŽ–„„‡ˆŒŒ‹†‰‰Œˆ‹‰ˆ™ŒƒŠpŽŠ‡†ƒ‡ˆŠ‡Š‘‹…‹•”Š……oŠŒ†‹†t€Š†~ˆ†ƒ|‹ŽŠ•Œ~yŽˆ„‘‡‚އ‹„•„€ƒˆ€‚Š€’ƒ…ƒ|z‡„†‰‡—~ƒ†‡‰ˆ‰†„ƒ‚†„„}€Ž˜ƒny‰ƒŒ†‰…Š†Šˆ–ŠŒv…’‹—ˆŒ‚yŽŠ‚‹t’z†Š€y†…€††‡vˆ†˜…|Œ‡€|v‚™~Šˆ€‡‹{„’†ˆ~‡‚†‚‘|„‡Š‰†pŠŸ‚‡•†‰“ˆi‡ŒŠ‚€…“‡Ž|“z‚‹‹’{ˆ‚Љ€…ƒ’†ƒ‡‹‡všƒ€zs‚•Œ…–sŽ~‘l†„Ї}Œ{ƒŽ€šŒˆ†„}‡‚u‘ˆ}™u–ŒŽ’…|“‰ˆ††ˆ{s‹~‡…„‡ˆ†Œ€‚ƒƒ…‡‡Œ†„‡‹‰“z’ƒ†~Žšƒ‰‹Šƒƒ‘‰Š‚~Šy‡ƒ„{’€‰‚q„”„—‹Ž€ƒ~†„ˆ„™ƒƒ~‰ƒ‡‚ˆ‘~‹Šƒ~‹‡ˆ«Žv„…’Š‹ˆ’‘‚…uk…€‚’ˆ…j{†ˆ„‰’šŒ|{™|…¡ˆˆƒŒŒš„w‡Ž¡z‘’‰s{І€v¡Y}†‹sŠ„y€†Œ€™yˆxys’…ˆ•Œ‡|„Ž}o„|Œ~‡q‰‡ƒp‘ˆ|¤ƒŠ…’t˜„‘ˆ„u‚”‘Š…•’††ˆrˆ¢yy„uЇ¢™†††††‡†††††††††††††††††††ˆ†††…†††††††††††††††‡†…†††††‡†††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††‡‹…„~…†ˆ‡ˆ€ˆ…Œ…‰††Š†…†‡…Œ„…ˆ‡Š‡ƒ„„…‰‡…‡Šˆ…†‰ŠŠ…†„‡Ž‡ƒƒ†…„‰…†………„ˆ†…‚„‰‡‡‚„†††‡‹……‹†‡…ˆ†‡†ƒ†‡†‡…„ƒ††……|„‡†‹„ˆ†‚…‰„†‡†††Š‡†††ˆ†ˆˆ‰ˆˆ‡††ƒ††Œ……††……‰‚††„†‰‡…„ŠŒ†ˆ~†…‚ˆ…€‚ˆ…‹‚‰†‡†‰‰ƒ†ˆ…‡……ˆ‹‰…„‡‡ˆ…І‚†ƒ‡…‡ƒ……††…ˆˆ…‚„„„ˆˆƒ‡ƒƒŠˆ†Œ………‚Š‹†ˆ…‡…„ˆ‰‰…‡‡‚‰†‡‚†††††‡†††††††††…†††††††††‡†††††††††††††††††††††††††††††††††††††††††…†††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††‡†Šˆ‚†††‰†ˆ†††‚‡†††††‡††Œ†…†††††‰ˆ†…††††††††††‡††‡‰†…††††…††††††‡†‡†††††††††„‹††…‡†††††††††‡†‡†„††‡††…†‡††††††††…††††‡†‡††††††††††††††‡††††††††…††…†…††††††…†††††…†††††ƒ†††…†††‡†††††††‡††…††††††…†††…†††††††††††††††††„†††††…†††††‡†††††††††††…†‡†††††††††††††‹†|Š‘‡Š‘„ˆˆ’“”‡yˆŽ~ƒ„ƒ‰‹‹Š‘…†Š’ƒ‡†„„‚Šƒ’“€wˆ‹}„Œ…|‡ˆ†‰•†Œw™~”˜w€ƒs“‡ƒˆ–”–’qŽ}}ƒ€‡””𣀂˜‘™Œ‹‰•„w…•€˜y“‹{¢“‡v”‘‡‚‹‰v‹r‘žp¥“Œ{xƒ‘ ƒˆ’ Š’{‡”ŠsŽ‹‹|‰}ztˆ’•–s—‘‘ŸŽ‡ž†”Œ|‹¦ŽŽ‹…x›‚˜{‡‘‘‹†}šo}ˆ‹‚‹|–‰}š™“~…ŽŠ„ŒŒ†Šqz“š„|…w”ƒ˜††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…‰†††††††…†††††…††…††††††…††††…††…†††††††††‡†††††‡†‡†††††††…†††…†††††††††††††‡†††…††††††††‡††††‡††††…††††††††‡††††††‡††††††††††††††††††††††††††‡†…†††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††“‡‡‰‰ŽŒŒ‚Šƒ‡Œ–’“†…{‚‡†ƒ†ˆ‘‹‡”Œ‘‘}zˆ’††‚‰Œ‹u‹‘Ÿ‡‰‡}‚„†ˆ‡ƒ›‡„‘Ž„ˆ†zŒ˜y›{†€~‘‡ˆ‹‚“ŽˆŠŠ‚ŒŽ‡Ž”Œ†‘ƒ~š‡€‰‡„w’ˆ”y‡†Œ‹‚ŠŽ•„ˆ–ˆ…Š–~ŸŒŒƒ{‚“‘…†Œ“Ž™€Š‹zŠˆ…”ˆ‡†t•†”„˜‡€‘…“‰…˜ˆ‘ƒŠ‘—‘Œ‚‰…ˆ“Œ‰…‚†}’p…€~‡ˆˆ“‹‰•Љ”…ˆ…€Š‚pŒ”‹•‹~‚‹‰~ƒ„—uƒ{‚}i{u~|v…€}…¡…†œˆˆƒ—ˆ…Žž–qz|}Š—„„¨”Œ›†“‡™……€~n†š|†ˆo€|€n{Ž’˜ˆyzx”ƒŠzˆƒ…Ž‹Œ‚†’†‰†ƒƒŒŠxˆ—}Žz‹’¡|„†††š†zˆ€Ÿƒ{ˆŽ†‡€r|ˆty}{ž‚|„ˆ|‹‚€ƒ…{pƒ¨t€‘“Œ…††~|„Їv”‡~œ•{„vy’‘’’Œ“‰yŠ„˜‡~”€•‡‡‹ƒ†uŒl…xy†|}ŠŽ~’y‚ƒ‰~’™†„ˆx–ˆ„††“”˜„€—y’‹r‘Ÿ”‘vŒt†˜…ƒƒŽŒ‚˜r¦•kŒŽ‘‡x…Ž~yŒš}™ˆs†{ŽŠ‚‘€‚rŒ„—І¹‚—¿–‡tŽž¼”¦vjt‚©cƒ•ƒ’x•ixˆŠz„žŒ‘u‡tƒ–Š~’yx›{‚”´‹–e|„ˆ’ƒ€Ž|zƒp“±¦Zo˜~‰{¡†Š—„œ”h›o’r†„~”ƒ£Ž…‘•É„«ƒ„n€‘˜ƒ{’i²œ¦™z–Šx–¨Žœ˜x¤’|ˆ’n›r|q›™zŒl‹ Œ¢hŽƒœ‘’L‡…‘j£–~ ‚šzz‘Š}qpdu‡‰~–†ŠŽ“†~¢ƒŽ†‚zˆˆ•„‡ˆˆ‰‰€‚ŠŒŠ˜ŒŽ~†‹„„††ˆ‘‰†‘”‹„i…‚„‰ˆ‹{‡Š›Œ‚‹ˆ{˜ˆ‰}‰‡“…ˆ‰†ƒŠŒ~Ž–u—u„‰†ƒ‚ƒŒŒŒ„’“ˆ”…‰Šˆ”ƒx„‹‘Œux}‚€‹€‚—ޔЉˆˆŠ¢„ ŠŒ…}ˆ…ƒ„ŠŒ‡€˜„‰ˆ„“–Œ‹„~…‰‡Š‰€Œ“–‰“‹‹•…Œ‰•Š‹’ˆ‹Œˆ‡…ŽŒŠŒŒ‚‡ˆp‘“‰ƒ†‹…‡Žˆ”††††‘ŽoŽ“…†Œ‚Š‚“‡‰†ˆ‡„‡††Œ†……‰…‡…‡‰††‰„†„‡†‡„ˆ†…‡„†…ˆ‡ˆ‡„……†Œˆ‚†ˆˆŠˆ…„„…†„Їˆˆ„…†ƒ…ˆˆ†„‡†„†„އ††ˆ‡…ˆ……‡ˆ†„……ˆˆˆ…ˆ‡…ƒ„…„†…ƒˆ…„…†ƒ†ˆ‡ˆ†‡„„ƒ††„……†……„…Šˆ†‰„„†…‰„††ƒˆ‡ˆˆˆ…‰…„…†‰„І„„†ˆ‡‡‡††ƒ„†…„‡Šˆ…„………ˆ‡„‡ˆˆ‡…‡……Љ„„„…‡†…ƒƒ‚„…†‰„ˆˆ…‡††ƒ†ƒ„„„‰†…†ˆ†‡…†„І‡‹ˆ†…†…†ˆˆ†Š„†ƒ‰‡†…†‡…‡‡‡„†…†††‡††„‡†††††‡†††…†††††††‡…‡„‡‡†††…†††……†††…†††††‡†‡†††…‡‡†ˆ††‡……‡†‡†††‡†…†††‡……‡†…††††…††††††…†‡††…†……†‡†††…†…‡…†††…††††…††…††‡…††††…††…ˆ…†ˆ†…†…††……‡†‡†ˆ††††…††‡††††„‡†††‡†‡†††……‡‡††††††††‡†…††‡†‡††††……†‡…‡†††‡‡†††††…†††…†…‡††††††††††……†††††…††‡††‚‰~…€†€‡……~†Œ‚”‹—‹}Ž„}Š‹‚~‡“„†‡“…Œ“‰‚”Œ‰‚†„ƒ‡Œ}‹œŠŽ‹Šz~…€•ŒŽ‘…’€~”ˆŽ”‡ƒ…•w›v‡‰ƒ€†Šš‹ŽŠ‰„‰Œ‹‰Žš‘“}y—|‡‹€‚‘~t†“„‡wŒ‹‘‡†ŽŠ‘‚”‰ˆ‡‚ “‰†|‰Œ„‡”‡Œ…††‡€‰˜Š“Šy’‹Œ‡ŽŽ‰‚„”‡‡Ž…ƒ”‚†‚‰‘Œ‚Š–‹Œ’Œ‹‹†ŽŽŽ†€l’‹Š‹‘‹‰Žˆ‹—އ‰ŒŽ‹Œ‡‚†ˆ„pˆ‘މ‰€’……†…†‡†‡†††…†ˆ†††††††…†††††ƒ†††††††‡„†††††††††††……†††…†††††††††††††‡†…††††††††††††††††††††††††††‡††††‡††††…††††††††††††††††††††‡†††††††††††††††††††††††…††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††…†‡†††ˆ†††††††††††††††††††††††††††††††‡†††…†††††††††††††††„††††††††††††††††††††††††††…†‡††††††††††††††‡†…†††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…‡ˆŠ……‡……‡††‡„І†‡…ˆ‡‚††ƒƒ‡†Š……†‡ƒ……ˆ†…‡‹‡„‡„ƒ†ˆ„ˆƒ……†…†………ˆŒ‡†„…†ƒ‰„‰‹‡…††‰ˆ‡…ƒ††‚ƒƒƒ‰‹ƒ‹ˆ‡„ˆ……Ї‰†‰†€…ˆ‰ƒ…‰…„…†‰…†ƒ……‰„Œˆ…††…‚……‹„‘††Œ‹„Š„…‡ˆ††‡…z‹Œ‡„‡††…І‰Š‡‰Š„„‡‹Œ„††€‡‰‚‡†„„†‚…‡ƒ…ƒŠ‡‰‚†Š…‡Š‰‡‹‡‰…‚†„|†ˆ…†ƒƒ…ˆˆ„{ƒ‚‰ˆ‰‹Œ†ˆŠ†…€†‡‡„ƒ†‡†ˆŽ‡…І†…‡‡‡…††„†ƒ‡……ƒ…††††‡†‡†……‡…†††††††………†…‡†…†‡…„†††‡……†‡…††††‡†„‡†„…††……††‰†…‡††‰…†††„†…†††‡†††‚††…†††††††…††††‡ƒ††………‡††††…†††‡††…††………………††††††‡†…‡††††††…†††††…‡†††††††……†††ˆ†††‡†††‡†††…†…‡ˆ‡‡††††††††‡‡†††‡†‡†‡……†††…†…††††……†‡…††…‡††††††††††††……†††††††…††††…†††††††††††††††††††††††††††††‡††††††††††…‡††††‡††††††‡…†††††……†‡††††††††††††††††††††††††…††…†††††††††††††††‡……‡††††††††‡††††††††††…††††…††††‡†††††††††‡†††††‡‡††‡†††‡†††‡……††††††††‡…††…†††…††…†††††††…†††††††††††‡†…††‡†††††††‡†…†††††††…†††††††††…††‡††‡†ƒƒˆ“’š…‚‚y‹y’‰ˆŠ€ˆu‰~І†„“‹ˆ›‰†‰‹ƒŽŠ††ˆ“‘ƒ‚ƒƒ{ˆ†‘€‚†ˆ‡’Œ–…‹‚Šy–Žx“}w€‰Ž‰{yz€‹ƒŠŽ†ˆ‹Ž€†‹€Šˆ†‰|„‹††Ž…Ž–‘ˆ}ƒˆwˆ†‰–‹…–ŒŒ€{Љ“ˆ•ˆ„‹•w‰‚“”•‰‹ƒ‚‡“„–œ‰˜ŽŽ–™‚‹‰ž…”€ˆ‰Š†‰‰ˆ‡}ƒ‹Š}—j‰‡w†‹–„ˆ“ƒŒƒ‘‰Š‹‡‹‹‚„‚•}w}†“{|Šw”yŒ•€€††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††“Œƒ…‰–ƒ~ŒŒ~€xœ‚•ƒ€x€‰˜“Šœ‹…ˆ—™„‚Švƒˆƒly‡ŒŒq“”ކˆƒz‘€•Œ‡ˆ“„…„ƒŠ•Œ‡›{‰{‘‹†€‚‘z‰—‰•osމu“Ž”u}ƒ‘q“‡‹~ŠŠ{v„‚‚‡ˆ‰‰’‘–†ˆŠxŽ”ˆ†“}—˜‘ŽƒŠ„’sw“…|“…‘‘Šž‡‡xˆŒ‘’{—”˜‡ŽŠœ|†‰†Œ™Ž‰„”xˆ•Ž|†|”‹œŒ˜††Ž~yrƒŠ‹…ƒ„‰‘“‰†¢ƒŸ‚~{Œ‚|w€…l•zˆŽv…‡†‰šz}•{Œ…‹‹ŽˆŠˆ„—ˆˆ‹‹‰’Ž‚…†vz‰‹†…„ŠŽ‡‘‚‘ˆ‹†‹zŽŽƒ…Œ‘Ž€ŠŽ—††Š…{ˆƒŽ†~…Ž‘—Œ‡…‹’‘’Œ„‘f˜~‰ކ…ƒ†”‹‘†|‘†‹‘Ž|ˆx{’‰‹ƒ€ŒŠŒx~Šz…h„—wŠˆŠ~…€œ‘“›†–‰“{†Žˆz„€„{”‰‰{“†}‚›Œ…Œ‰‚‡Ž’‹Šž„‘–ކ‹”Š‚Œƒ‡†•‘ŽŽ‹“…‚‘‘‰‹Œ”—‹‘‰”k”ƒwƒ“‚šˆŠ‚Š„Ž‹…kŠ–„šŒ›{‡Œ‘ƒ˜…’„‚‡}‡ˆ˜ƒ†„sŽŠ‰‹Šw{’Œyx„—‘†‹•ˆ„†‰š…„’†„‡~p‚ƒ‚zˆ“†‚ŽŒ‘w”•‰š’‡t|ŠŒ}”ˆ‹“‡ˆ~~€u }yŒy†‹‰Ž—rvŒˆwЇ‡ˆ’‘‹Ž‚ŒŠŒx|}€{„‘ˆ‹†‹•…‹„‡€‚Š‹‘—ЅއƒŒ‡vxŽ‹|•Œ‰€‘—w”z‘ƒŽˆ‚‚‘’„Œ“‡‘‚‘‰~Œ–†q…‹‘ŠŠt–…ƒ—}‡}Š‹„‡{‘Š€‡}‡„“ŒŠ”ƒŒ…ƒ„‚ˆ†q}‡wŠ}t‹–y‘šs…Љ†‰‚Œ•ˆ‰†‡‰x…‰ˆ–‚ŽŽ}‹~…‹…“ˆŠ‘“’’‹xŠŒŽ‚Œ‰|’‡ŒˆŽ“|‘„Іƒ…ŠŠ‘ƒƒˆ‰ˆ‹Ž…†ƒ—u“šx†’Žƒ‹ˆˆˆ†ƒ‡†‚‹Ž“†‘—„{†“„ŒrƒƒŒu€‡‰x‰~ˆ‰‡Œ~ŽŽŽ–……‰†Š—„ ‰‡€Š‰‹…ŽŒ‹“Œ‹ˆ„•‘€††‰‡ˆ‰…‘˜‰‡ˆŒ”‹ˆŠŒ‰’ŠŒ‡’”‹Œ…Œ‡Šq‘†‡“Œ‰‘‹‹Œ‘‹Ž‡ˆŒŠo‰‘ŒŒ‰}“ˆŽ‹’‰‹„Žx“—}”ˆƒ”Œ‘w‚v„ƒy˜”}‹ƒjŽ„y|ŽltˆŒp|{‡}ƒ|Ž~“x€‡˜‡’†„rŒ…|…m’Šw•™‹{”g€Šˆ‡†›œ‚„²z€{s˜{‘‚‘yŒ—“Š„|€r†…™…ˆgv…–™q‡…„qƒ”„…w•~™‚¢„m”muu„‚Rމ‚|z{y”\y‡‹|on‹†›crˆ‰l™št˜re–™…ž…u‚l˜mŒy‡s‹{­vwi•¬|s‘¡­Ž‰¦s‚‡}‡”‰“‰—pƒ˜u‹”†€ˆ\Ž„rŒ†ˆ…‡…„†††‡†ˆ†‡†‡„†††††‡††Š†††…†††‡††††††…††‡†††…††‡‡†††‡††…††††††‚†„††††††††††‡††‡‡†††††††††††††††††††‡†…††††††‡†„††††‡†ˆ††††„†††††††„†…†††††††††††††„††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††……†††††††††††††††‡†††††††††††††††††††††††††††…{–—˜‰€…ƒŠ‹}ˆŽx|Ž‹}‚p€}‹Œ}Š•€†ˆ‹Š„yw‰ˆŒŠˆ}އ‘Žr‰ŒŠ’“‚x‚‰†Šƒ†‹Š–Š‹Žx‡€•‚€Š‰‡‚…‹™y‘ŒŠx‹†‰‰{“Žˆ‚†Œ‹†w…ƒˆ‹‡‡ˆ„‹u‹Œ…›wˆˆ‹†‡‹}Š–n„‹ƒ‰‹”‚‘‹Šx†…—Œ‡‚‡‰„‰ŽŠ‰ˆŽ‹‡Œ‹‡Ž“ƒ~Œ‹†‡ƒ†‹Ž…{‡‹‡y‡‹“†…‡”r„‰}‹…•ބІ‹Œ‰ŒŽ‡„€ƒƒˆ{„ŒŠyŠtŽwŒˆŠŠ‰~}|–†„ˆ‚ƒŠ|”ކv}‘z‚t€‡‡‹‡Ž‰}}‡†’‡†‹„‡z}ŽŠƒ‚‰‹u‰‡Ž‰‘ƒiˆ‹‚‚Ž‹™Œ‰|Ž„’|ƒƒ‚{†‰Œ}‰Œ{†‹ˆ‹z†‰ƒˆ‹‘‹Š’ƒˆ…€x…~†ƒ‹‹‡ˆ~‡u‡w‹wŒ…ƒ|‚†‰”q††…Œ‹Œ‰Ž•vƒ•Љˆƒ’‡‘’Œ“”‰ˆ’“‹‚Ž‹‰‚z‡…‹‹„wŒ‡€”v‹}‰ƒ‘‚‰Žv‰ŒŠrŠ‘}Œƒ‹{އ†•‹ˆ{€‚„„u}Œ„€‰m”p™tˆ‰Š‹}‰‚ˆŒŒz‰†€ƒ…„‰…††ˆˆŒŠ}…Œ†„v‹ƒ‡ˆ‹…ˆŠ•‡…‰ˆ‡„…Œv‡†€‹›ˆƒ…ƒ‹|€ˆ‹†}ˆ‚…Šˆ††‹‡†Š‰‚}†‘‘†x„’…ƒ~Ž„}…Žtˆ‰†…Ї|…Ž‹‰yŒŠ‹ˆ~„‰ˆ€‡“{ƒƒŠz…}‹”yŠˆz†ƒ€†„}‡Š‡{†‚‹‚†‰z‰…‘Ž}}…„††‡‘xˆ“ŒŠ…‘z‡„„„Œ…ˆ€ƒ„…Š„†‡…ƒ~‡Š‹ˆ……ˆ€‰yŠŠ…†„–‡…u‹„„…‡~‰‰…ˆˆ‡†w’‹œ‚•‡tŒŽ‰„p†}„a|”€›…j}r‘t‘›ƒw•†us”yz–‹ˆ|€b{s‘ŽŒŒyŠ‚œ¢…Ÿ{ˆŸš†b²’žÄ‡]Œtƒm—±y}¡Ÿ”’™¦¦›§ˆz|v}x޹Ѐ“€Œ‘[}‚sŒv‚ˆxjs†}NvŒŠ˜‹‚z£p…§”y…}…€‚v£~zj‘¢œH™Wz…‚uz•`w„¢`•~rzvt‘|o–x†ˆ—w‡¦¤›ŠŒy“t‚|}’ŽœX~r†m„›‚vŒŠ‡s‚‹‰Ž“§’r}‹¡—t™švƒšŽ„ow€pÉŸ‡—„‘‘‡’‘Œ‰‰†Œ’†‘Œ”‰‹‘†Ž†…€ˆ†•ˆ‘~…”€…‰“‚—„€Œ…‘yŒ£Œ‚†Š„ˆ„‹~‰Œ‹Œ‚„‚“…Œˆ—r‘–zއ‰„Š„‘…†€ˆ“ƒ†–‹~€‰~“‡Œ†ƒ“†s}ŽŒiƒ’ƒ†~ŽŒ‹‹}Œ†’…‹‡œ‡ŽŽ}„…Œƒ˜“”‡†Œ‡}…””‘›Œ‘ˆˆ……œ…–•‘Š‘‰‡‘“~Ž‹”…Œ“ˆ’ŽŒ‘‹”Ї‚’h”•ƒuˆ…–‚–ŽŠ•ކ‹‰‘Œƒ‡j†‰ƒ‰…}Ž€‹‘Š‚’‡„…|™†‡‰„‰‹k“†’Š“†Š†‹}‡„‚‡‹•ŽŽ‘•„ƒ|‡Ž„€†…ŒŒ‹„œ‹›ˆžŽˆˆ…‘†…‰“ˆ‚š†‘‹}{†”˜u”v~‡€~—‚‡‹ˆ„ˆ‰‚˜‚…ˆ›‚†£ŠŒŽ|ˆn…’“Žv}ˆ€Ž{‚‹‚ƒs|…Œ‡—‘•|‚Š‚€šŸ“{Š›•‡ƒ…–Œ{v•€•wˆ|Š‹—‚…„ކІ‘š‚‘„„“…‰Šµ’‡›x—‹“އ’’ƒš~Šƒ‹ˆŽ††y“‚”r‰–ŒŽo›y†‚‰•‚–‡…‹’ŠŒ{xˆŒrˆ‚‰£…‡«‹†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‚†ƒƒŠ…††…†††„‡‚…††‡‡††††~†‡†…‡††„‰†††‡††††…††…††††ˆ††††††‡†‡††…†…†ƒ††‡††††ˆ†„……†ˆ…††‡†…††††‡†ˆ‡†††††††††††…†††‡†††…††‡†††††††††††††…†‡††…††††††††‡†††††…††††††††††††††„†††††††‡†††††††††††††…†††††††††††ˆ†††††††††††††‡††††‡††††…††…††††††††††††††††††††††††††‡‚†…„††††††…†††ƒ†††‡††††††††…†‡††‡†‡††††††††††‡††‡††ˆ†††††††‡……†„……††††††††‡††‡‡†…†††††††††‡†‡†ˆ‡†‡††††…†ˆ††††††……†…‡†‡ˆ††††‡†††††††‡†‡‡††††††††††ˆ††††††††…………††……††††„†‡††‡††‡†††…†††††††††…††…††††††††‡†††…†††‡†††††‡†††††††††††‡…††††††††††‡†‡‡†††††††‡…††††ƒ†††‚†††„‡ˆ†††…„†††‡††††ƒ†††††††ˆ††…††††††††††„†††‡†…††…††††††…†‚†††††††††‡††††††‡††‡……††††‡††‡ƒ†††††‡†„††…†††‡†…†††††‡ƒ††††††††††††††††††††††††††‡†…†††††††††††††‡††††…†††††††‡†††††††††††††††††††††††††…†††††††††††††‡†††††††††††‡†††††††††††††††††††††††††††Œ„‡ƒ‹•…‡…ˆ‘†…~‹ˆˆ“ƒŒ~€‡‚Ž…‹•’Š}‚~Œ„†‹yŠ‹šŒƒ‹‡{~‚‡€…‹‡—…ˆ††…‡{†’v—™t‡‘„‡…ˆ‚‹ŠŒ“ˆ‚‡•†•Š‹‡”‚ˆw‚Š‹ŽvŒˆˆy‹‚‡Š‡‹Ž“Œ‘‘ˆƒ‘‹œŠŒˆŒ‘ˆŠŒ‡Œ†™}ˆ‡†ŠŠ“‘‹„ƒ†‹‚‡…Š€Œ–ŽŒ„†‰”„Гޒˆ‰ˆ“ƒ†ŒŽŠŠ|‰…Žr’”Šˆ…‡•‹“‹ˆ‘‘‹…‘ˆ‘Œ~–ŒŒoŒŒƒŠ‰€Ž|‡Œ‹Ž‰†|†ŸŽ™…}…‘Œ~|‡’…ƒŠ‹w‚‘‡ˆ{ŽŠ‰ž‘•ˆx_…‰Œv—‘Žš’‚€‰“ˆ„„‹|Œ‚‡„~}z‹ˆŠƒxŒƒŒ”{{zŽ–€‹ƒt„z‚›zŠ„‹Š‘ˆ‡“‰‡€€˜Œƒ†‰‚‰~}~‰†‘‚Œ†˜”‰l‘€Œ|‰•”ƒŸ‚‹ƒ…‚’“’‚€ƒŒ€“™ŒŠšƒŒŒ‚~{އ‹‡‘‡‹ŒŽ‡‚‹’’‡„‹•‚‡Œ–‘ˆxŠŠ…‘k—‘y‚„Žš{‰„Ž}“‹ˆ’†›ˆ‹tއŒƒ’x‘ƒ–’ŠŠ‡‡†‡††††‡‡‡†‡…‡……††††…†††ˆ†…†‡†††…‡††…†ˆ…††††ˆ‡…†…†……‡…†…††ˆ††‰„†…‡‡††…†…†††‡†„…†…†††††„††…†……†„†‰††…††††…†ƒ††††‡‡……††‡‡‡††‡ˆ…ˆ…„‡‡††„††††…ˆ‡‡††‡…‡†……†††…†††……ˆ‡†…‡††„…††…‡…†‡†‡…†ˆ†††††††‡‡†…‡†‡†‡‡†‡†……†††…„„‡…††††ˆ‡†††………†‡…†††…„ˆ†††‡‡„ˆ††……†‡‡„‡‡‡††‡……‡…‚‡„{Œ€”ƒ„Œ‡ƒŠr“Œ”|‰‘}r|‰„€‹Š‰Š—‡ŠŒ”wŠŠ„Їއˆ‹yŠ˜™Œ•ŒŽyŒ†Šˆ€ˆ’Šˆƒ‡–†…•…€}“u‹–wŠ…ˆ‚ƒ…‘•„ƒ†‰‰ˆ‹†‘—Š™Žyt™…ŽŽ‹†Š…t‡†‰xƒ‘‚Œ‘‰˜‘‹’ˆ‰€‹Žƒš‹†‚„Š˜ˆŠ‹‹•‹‰•’y‰‘‹Žƒ{‚ˆŽŠˆŠ~’‡€„†ƒŠŽ‹˜Šˆ“…‘‰“‰‚‹ˆˆ“‘Œ—m‰•Žˆˆ’††‘ŠŠŠ‹‰ƒ‘‰„Žpz•ŽŽ{‹~މŒŒ†ˆ†ˆƒ‡†††„†††‡†Š‚†††††‡††‰……†…†††ˆ‰††‡†††††††‡†ˆ††‡††…†‡††…‡†††‡†‚†„†††††††‡†„‡††„ˆ††††‡††††‡†„†ˆ††„††††…††††††††‚†††††…„††††††††††††…†…††††††††††††††††††††…††††††‡††††…†††††††‡††††††††††††††…††††††…†††††††††††††††††„†††††††††††…†††…†††††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‰……‚–’€…ƒyŠ|…u‰ƒz}˜‡€u|€„‰Š‹–†‡…’•‡‡‡‡†‰{w‡‘…}Œ„„Іt‹‡‰ŠŠ|cv„šv‡“Œ‹{x‘x‹ƒ}Œ‰€€‰…‹ƒ„~Š•~ƒ•Ž‹|Œ|ˆŠ…“‹‹yy‡‰„‘ozzŒ†Œ€‘‹Œ„†‚‡Œ—€‘€ƒ•ŽxŒ“u|Š…Š‹’|„„ƒŒ‡…•‰ƒ…}Œ‹‰Š‘…‚ˆ†‘Œ™ƒ{‹„~‚xƒˆ—‡†–ˆ•‚‘‚Š‹…†ƒ€Œ‹†vˆ›‰…‚‹‰‹†ˆ‘‡ƒŠƒ}Ž„xŒˆ‡†w‡s˜pŒˆ‹‰ˆ‹‰Š”|•~„Žƒ‡“‘ˆŽ‹s‰‰~Ž„‹ŠŠŒ„Œ|’yˆŒ…„ŒŠ™…~ƒŒ‡y“’š†‰Š~Œ–‹—„‘…Œ†Ž•v‘Œ…Ž•x•rŽŠ}…‰~„‘•†t|ŒŒ‹‘‘’‡‹‹ŒŽw‡Ž’z…Šm„ƒˆ†‹”ˆ†Œ„}~–…€ŽŒ™‹Žƒ„}“Љ‰ˆ‘†““~‡„™šŠ”’ŽŽŽ‹¡–†Œ“Š~™ƒ”€~ˆ“•‹Œƒ‡—‹‡Œ„Ÿ†‚‡‡Œ™n˜i’Š~“’‡€|ƒ”‘“ˆŒ’~“ˆ‰€wƒ‹‚Œ…ˆš‚‰„”„ƒ„‚†‡†Ž‡}„‚…ˆ††‚††‰……ˆ…††„………‹‰††ƒ……ˆ††††’†ˆ†††††Œ…‡…‡†…†‡Š†…}‡‚††…ˆ………†ƒ‰…†ˆˆ„„…ˆ†‡„†‡‡††‰…„…†ˆ…‡…†‡„…‡†…‡‡‡‡†……†‡~†…†…€‡…†„…†……†ˆ„…‚‡†ˆ†††ˆ†……‡†…†…††…‡‡ƒ††…‡†††‡……„†…††‰†………„…†ƒ„††ˆ††‡††…†…††…‡…††„…‡…„††………„‡†…‡†…„……†…‡Š†„†‚„…†‡…††††††‡†……„…†‚…†ˆ†Žn…ˆ ”…‚Œ‰~ƒ‹ƒ‚‡’{…€ryp‰ŒŒˆ‡Š—І…„…zŠ}’†“‰†…ŠpŽƒŠ††„…„‰†wŽˆ‚„Šo“‚‡‰yŒ…Ž~~ˆ{w…ŠzŒvˆ…†Šƒ‰”x‹~‘{‰€‰…‡††ˆ‹‚Œq’ŽƒxŠŽŠ‹Žˆ•‹xˆˆ‰†“‡Ž‡•ƒtŒ‹”Š„uƒ‰‚‰†Ž‹’wŠƒ‹‹‚ˆ‹Š“‰ŽƒŽ‡ƒ‡€{‘~™}v›pƒ…ƒ‹Ž„Ž’…‘’…‹“‹‘€‡ˆ~vއ†’‡z‰…•‰„†‡†‡‰‚†††††ˆ††……‡††††††††‡††††††††ƒ††‡††……†‡††‡…†‡††††††††…††††…†††Š†††††††††‡ˆ††„‡††‡††††††††……„†††††††‡††‡†††††…††††††‡††‡†‡††††††††††††††††††††††††††††…†††††††††††…††††††††††…††††††††††††††‡††‡†‡††††††††††††††…†††††††††††††††…†††††††††††††ˆ†††††††††††‡†ˆŠyƒ‡~†šŒŽ‹“|Š…—Œ}‡Žm‚€…‡†‹‰ˆ‹’’ny‘‰ˆ‚y‘˜‹’†‚{‡~†ˆ‡‡‡{…€|•“Œ“‡}”{…“{Ž”–x{…‡ŒŽ•Œ‰ˆ„ŽŒˆ“ކ’qŒ‰‹‡“‹„uŽ‹††yˆŽˆŠ›{†”Œ’†‚Œ–‰›‹‡}„ŠŠƒ‰’rŒ‰ƒ”…ƒŒ‹Œ‡ˆ“‰€˜•Іw„‹Š•}}†‡ˆ’‹Š‰‘’‹‰‹–™„‡ŠjŒ–‰†‚Ž„‚‰ˆŸŽˆŒ‡•‘‰Ž‘‰s††“”“Ž{…wІŒ†‡…Œ~†††‡‡…††€„††ˆ‡‡‰†…ˆ†……ƒ‡……‹‡…††…†…††…†……‚††‡ˆ†‡†‡„†…††††…‡x†~…††………†‡†‡††ˆŒ†…І†††††ˆ†††€…†„‡†Š…‡††††…††ˆ††††‡††††††€†‡†††…†††ƒ……„…††‡†……†‚…„…………††…†††††…‰††††‡††…††††‰†††††††‡††‡…†…‡††„†††ƒ†††‚††……†††††…†…††…††††…††……†‹‡…†‡†††††††…†‡…†††††††…†…††ˆ‡ˆ††Œ†‡†…†‡†††††…†‡‡…††††……‡†‰†…††…‰……‡†ƒ‰„‡…ˆ‡†ƒ†„†‡„‡…ƒ‡‰‡‡‰„ˆ…††‡………‰…„…‰…†…‡†…‡ˆ‡‡†ƒ‰„†…………‡‰‡†„†…†‡†…„„ˆ„†‡ˆƒ†…††ˆ‡†‰†‡‡Š…‡„‡ƒ†‡ƒ†‡…††‡„†…††‡‡ˆ…†‡…ˆˆ„ˆ„†‡††Š„ƒ††……†„‡†‰ƒ„††ˆ…†Šˆ†‡ˆƒˆ†‡‰‡„‡ˆ‡Š‡…‡…ƒ…‚…†„…†„„ˆ…‡†‡†ƒˆƒ„ƒ†…‚„‡……†…†ˆ††„Š‚ˆ…††Š„…‰‰†††Œ…„‡†ˆ~u†˜‘˜ƒˆ†{Œ‹uЉ‡Œ†„ˆ{x€‡’‡ŠŒƒ„Š”ŽŽ‚z}…Žu†Ž~”“‡rŽŒˆ‡‡ˆu•ˆˆˆ‹Š‚ˆŠ‘‹{ƒ‚‡ˆ|‚t˜vŒˆ|„ƒ‰{„•|}€Ž‚ˆ|‡”Ž…‰‰‚…†„yƒŠ‹‚Žˆ‹Š—{†ˆŠƒŽ‹Šˆ›Š‘‹•‚‡‚Œ„’Œ‹ˆ‰¡‚ˆ{ˆŽ‡“‰|‚‘Š‹Œ’‡’‹Ž’‰ŽŒƒ€‚Œ‹‰‚Š“’”„„Ї‡”p‘ŽŒƒˆ‰”‰†Œ…Ž…’Œ~‘„ˆ•Šuš„‰”z”‡•‘…‚†‰‚ƒ‡Š‰’…ˆŠ†‡ˆ…ˆ‘•’ŽŠ‘“†‡‰€‰“‹Ž“‰Šƒ…Œ’…ƒŠŠŒzŽŒ¥Œ‹Š€’…Œz~‡„†Œ…†‡‚ˆ…‡—q˜x„‰‰ˆ„Œ…Œ‚ˆ†…‹‰Ž„™ˆƒƒƒ•„‹v‰„†‰wŠˆxއ‡ˆŠˆŠ”Œ‰Œ…ЉŒ˜‡„Ї‚ƒŒŠ’ˆŠŒˆ€‡’‘†“‹‚„…‹ŠŠŽ’†•Ž‹ƒŠ‹Œ”ˆ‹ˆŽ‡Š’‹Ž‰‹ŒŠ•Œˆ‰‚nŒ„†„‘‡ˆ“‡…ŠƒŽŒˆ‡ŽŽpЇ“‚Ž‹‰†Ž‰ƒ†‰”€‡ˆ…ˆƒ‘‘ކˆŒƒˆ“€Š}‹‰”‘ƒ‹‘”|‚Œ„Š”‹‰‡‹Œv—ŒŽˆŠ}„‰Œ‘‘{†‰•ƒ’†Œ€‡‹”m¢•wŽ‚ˆ€ŠŠŠ‰…‚}‹Žˆ€‘–•v‘’’Œ~’t}Œ‰l„ˆ•Š€‹ˆ„›‹Š”ˆ‚Œ‹˜‡‹…~–Œ„˜ˆŽ‰—…‘Š“•–›Œ…ƒƒ“Š…ŽŽ’|Ž–‹‹Žƒ“|„|‰‡ŽŽˆ“ŠŒ„œ‡Ž“‹p˜w‹“ŠuŠ‘‡w‚“{Љ”„Œ‚…„‡j‡†…‡†€‚‹Œ”‰‘ބЄ…†‹“‚‚Šƒ’Š—‹z“„‚‚‰€‚Œ’„„‡ŽŒŒ–ƒŠ’|‘}~†‡‚ƒ‰z“ ‡ŠŠzŠr„|•ŒŽ‚Šz€‰†‹’~Š•qŠ˜wŠ”˜}‚ƒ”…ˆ†‰†‡”ŒŽ‡ˆ–u‡„|”“‚tˆ‘„xƒ†ƒŽˆ’‚Œ‹Š‘…š€†Šˆ…¤’Œ{„‹ˆ†ƒ„Ї„’‡‡Š””…„“‡ŠŽ…‰‡Ž|†•ƒ‚‡‰‰…’‡ˆ“ˆ‹‡‘‹‰Œˆ€‹p–•ˆ‰…ƒ‹ŠŒ—ŠŒŒ‡€Š‡|p†Š‡Š‚~Ž…„ˆ‰€…†€“‚‡‡ƒ‰|Љ•Š˜†“ƒ†Š‹€ƒŽˆŽ‰–‰Ž”}€ŒŒ•‹ƒŒŽ€•Žžˆ‘ކ‚‹‹ŠŒŒŒ—‰~ˆ……ˆƒŒ”szˆ‚‡Œ„‡‚“Œ‡†ŽŽ™‰€“ˆ}“†‹{†…Ž•Œwƒ’„x“ŠˆŠ…“‡Š”‰Œ‹‰‚ˆ…Œ‹›‹‹Š€€Œ‰€‘Šˆˆ…Œˆ†“‰–††„ŒŒŽˆ“„”Šˆ’‡ƒ‡”Ž’ˆ“”‡ˆ‹„’vŠq‘•ˆ}‹ŒŒŠ…މ†ŠŠ‘…‰Š‹‰†ˆ…p‹’ƒ„ŽŠ„„Š‘z‰š‡†‘„w‰‰‰š‹‚ˆw‚‘~†”‘‡’’Œ”}‡ŽŠ‰•‘„ƒ‰‘š‡ŒŽ~†„‡…‡Š…Ї“Œ‹ˆŒ“…„‡šr”¢w|‰…~”€…‹Š–‚ƒ‡„Žˆ‘–ŠœŠ€yzˆ‹—ŽŽt‚„wxˆ””x‰v‹–‘’|‰˜ƒž…{}‹Œ‚€†Œ‚Œ|•Œƒ’‡‰•ŒŽ‚…‚€“‰‹–—•“’˜ƒˆ•˜‘•‹ŽŠ••Œ‡‰’‡Š‚‚‰–Ž‹—m€‹†Š‘”‰‹Œ‡ŠŠ‚Œ”ƒ•Œ„”ƒo}‘Ž–wŠ~”y’‚”‰††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…“‰‹v‡†…ƒˆz„†‰††††‰‰Š‘†…}ˆŠƒ†‰†‰„‡}„‰‚‡††–‹‡–†‹ŠŠ‰…„vŠ~ŠŽ„…‰‘ŠˆŒŒ‹ŒŠˆŒ…‰‹…†…†Š~ˆˆ…„І†‰ƒ‚ƒˆ‡~ŒˆŠ„€„ˆ…‘“Œ€†Œ…‘€ƒˆ€ˆƒ}†|}ކŒz„‡‡‹‰€ƒ…ŒŒƒ‹ƒ‡Œ|…Š—ˆ‚ƒ„v…‡…}y‰ƒ‡މƒ‹‚u†ƒ†Š‚ƒŽƒ„އ’}ˆ‰€€…‰‡yv†‹†…„ˆŒ„†ƒ†|„ƒ‡‘ŒˆŒ‰‰Ž…‡†ˆ€‘ŠŠ{†„Œ‰Š•‰…t‰…†‰~‹„•~ˆ†‡‡Œz’|z‹p|„’‡…Œƒ€‡ˆ‰Šw€†€|{Ž‚Œ‰}‡ˆŽvˆ›…”|…ˆ†‡sŠsЇ•ˆƒŽrŠ…~‰ƒ†‹…‹‡††—~‚‹‘ŽzŒŽƒ„v𔇄†‡w†…{‚…„…†–|‚”‹z‚‰‚‡„–mz‰‹‹“•…‰Žvw’‰Ž€“ŠŒŽŠ~‚|‹Š„€ƒ}‰‚€„އ‡‡ƒ”zŽ~r‹}Ž…†‹ˆ…‰‚Ž€‰„“t“ƒ–ƒ‰ŽŠs‘‰‡‹€™•‹‘~ƒ‰Œƒ„‹ƒˆˆ‰”€ƒwŠ‚‰‹r„“•z††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…”†ƒ„…‡†Œ†……‚‚††‰„…‡……†…‡‡‡†…ˆ†‰†„†‰„…†††ƒ‡‡†‹†ƒ†††‡„„†…ˆ……†~†…„‹ƒ…†ˆ††Š‡†‚‹…†Š†‡„†‡…†††‡ˆ…†Š†……†€††††††…‡……‡†‡‡‡€†‡††}†„‡„„ˆ†~„ˆ‡†ƒ††‡…‡„ƒ†……ˆ†„††‡†…†…†‡„†‡„„†„‰………‡††………‡†…‡†…‰††‰†††‡ˆˆ„†…ˆ…‡††…†ƒ†††‡‰…………‡„†ƒ……†ˆ„†‡†‡‰‡ˆ‡ƒ„‡…††ˆ††…ˆ††‡‡†‡†‡…†„†††Ž‡|Š•‘‰‰r‰†‘ŽxŠv|„†Š‹ƒš‘Š”‰ˆx‚‡“ŒŽz„’Œ‚‘…’†‹‰l‹‰ˆ…}ˆŠŽˆ~t”y’–x–ЇŒ‹‚‘wŠ‚†‹Š•ƒŒ•ˆ‚‚‘~˜‚i•ˆ„|Š“€{†‹‹~w’“Ž˜ƒ…ŠŒ†š–~‰Š„ˆ—‚{Š„‡š‹ˆ~Ž‘šŽŒˆ€€y‚ŒŽƒŠŠ‚‡’–‡…“…“š‰Ž“ˆ€’‡†‰Šƒ€Œ…„†ƒ“އp‹”…ƒˆ€™•…Œ”‰ˆ‘…Ї†‰Š’’‘uЇ…x‘t‚‹Ž‘—‚‘•‡‡†‘’€Ž†—‘ŒŽ{“…}†‚ƒ”Љˆ‡šŠ‡‹„y{‚‚~„x’¥‰†}…z†Œ„ƒŽ‚y‰ˆŒ††ŒˆŽ›vŒ˜x‘…‹ŒŠ‚ˆˆˆŠ‹Œ†šˆ‚–‚‰—x{ƒ„‹~w†Œ†„x€ŠƒŒ’‰‰Ž„ŽŠ•|ŠˆŠŽ„£}}ˆˆ‡‘‡ˆ†„“}€‘‘’ˆƒ‹Š†Œ†“†Ž}ŠŽ’|‚~’‡Š‡‰†•ޔВ‘z‡ˆqˆ”†‹Ž~~”’Š‘Œ‘‡ˆ„ˆƒpŠŒ”ƒ‹’{‘‹‡‡…”ŠŽŸ‹”Š”„–‡Œ~‘„‘€‡~‚ŽŽŒŒŽ—ˆ¡Š„•††…ˆshz}‹„}€‚”„w‡}”}ƒg{yƒ†x”…™™—už†‹}Ž—Š„ˆŒ‚†…•”tq„“„}…ŽŒ‡’ƒ‰‹Š–™‡‰ƒŒ€Ž’ŽŽ~w‘ˆ‡„ƒœn›{†‘i”¨Œ’†Œ‚…z–…Š˜’š‚u¡rƒ‚}}{ƒ|™‘g‹‘~”v—ƒ‹Œ‹‡˜†Œ|ˆ‡…ƒv†”¡ˆ€„‡‚‚‰{šˆy|‚œ†|ˆ}¨‰„¥…Žr‚Œ“t‡„ƒyrŸq­Ši‹\Œv‹…x‡t~Œ’Іwz‡‰ˆŠ””“„„i‡ŒŽx‹ˆ™…~‡Œqn‹ˆŽ—‰{’„‰—…~‘‰{†‡Œ—¦†•y„†”£…‘Œ„ˆˆ‰•pzŒ„‡”•‘Žv“‚ˆˆƒ“Œƒƒ~r‘‰‰›„†€v‰ˆv…{•€•—†˜ƒ†Œˆ}šˆ‹ƒ“x‡“‡„ƒŒ˜†•Œš‰}އ‘‘‘ކ{Œ„›~Œ“Š¡‚„ŠŠ‹‚p”‡Š…‹‹‡™{‰‰“‰–‰…‡Ž‚މŽi•|“†~Š•ˆ’‹€}††ƒŒuŒ{†„•‚‡Šƒ‰Ž€‹‚†–Ž‚‹€…Œ……‹–Š‹Œ„‰Ž{|‹†–‘‹‚‰Œ“’‚‘‰‚Œ“Ž~Ž‘ …Ї‚ƒ‘ƒ‚†”‰‰}„‘‰‰“Œ{‘ˆ†‡“’p¤•w‰ƒ‘‡‹ƒ˜‡†ƒ†}“‡ƒ}“•‹Œ‡ƒ•ˆ~}‡•‹q|Š…qˆ…‹€‹ˆƒ‰ƒ€Œ”Œ”„‰›‰…ƒˆŒ‡†”“’u”‡}€Š–Œ—ˆŠ†„•’‰™ŠŠŒ‰“”€ƒ‹„~ƒ”•ƒ‹‘‡‰‰’‰•‰–„”x“p‘–„v‰’Ž‚‰–Œ“…›‹‰‘Ž–‡€‰‰†u†…‹ˆ€Œq‹‰‹…‰Œ‚‹‘‡†„…‹‹Ž‘Š˜‘~‰Š„€ˆŠ~Š‘ŒŠ‡ŽŽŠ…†‡Œ’…‘†|„‡Ž{ŽŸŒ‹ˆƒˆ†ˆŽŒ†ˆ“„€…†‚‰„ƒ~™ržx…‰ŒˆŒ‹“ŽŒ„ˆƒ†‰™Š~Š€–{‰z„†’–„wƒŽ}xŠ‹}Šƒ‘„ŽŽ’‰‰ƒˆ‰†¢†‰’€‰“‹ˆˆŒ†‰ƒˆŒ‹„‰“‘‘„‚މ‘‰ŒŽ‰”’ŒŒŒ‹‘ˆƒ„މ‘ŽŽ‹‹‰‹Ž‘†‹‰Ž‹ˆqŒŽyŒŠ†…”‰‰‹ˆ‰‹ŠˆŒ‰ˆ‡‰p†‰„Œ€Œ‘…‰ŠŽŽx‚u™Œw|Œ‚‘tzˆ‡•{r–Œ}‰ ‰{„‰ˆx”pŠƒ”†}‚‹€Œ†‚€Ž‰€r‹Ž‰ˆm…‰‡…toƒ|€ž†j––}‹ Ž{€r•|„zˆx|w—w‰”t{ˆ–™‚s›€‰ƒ{{£ˆy}’’’ŠšŒ{n–xz€z|–އ“ŠŠ‡”w‰ž}œ“|Žz|qŒm}•”’}‚|…‡iˆ…~‰„–ƒ‘š“”•œ’q{uˆ›ŠŽvŠsŒ†ŽzŒƒz}œyx‚Œ›†yŽ‘•t‰†Ž}z™‹‰††™•|wƒ‹{•‹’—`ƒ†…†‡‚‰…††‡†‡†††‡„††…†††‡†ˆ…†……††††‡†††‡††‡††††…††‡ˆ‰†††††††‡†††††…†…†††††††‡†…‡††‡†…†††‡…†…†‡††‡‰†††††‡††††…†††‡†ƒ††…†‡†…††††„†††††††…††††…††††††††‡†‡††††††…††††††‡††††…†††††††ˆ††††††††††‡††††††††…†…†††††††††††††…†††††††††‡†††…††…††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††‡†††††††††††††††††††‡††††††††††††††††††††††††††††…††††††††††‡†††††††‡††††††††††††††††††††‡††††…†‡†††††††††††††††††††…†††††††‡†††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡ˆ‰}v—‘š‡ƒ”Œ”‰‹—‰‹’|x}‡‰~‚†˜“‡•‘Œ…x€“€ˆˆŠ‡{‹ŒŸ‹Š†~‡†‰x…|…ŒŠ‚‡…‚…Ž‚”mŽšv„І‹„ƒ‹ˆ…~Ž‹•’‚‰’‰…–€’v“‹†Š•x€‰ŠŠx‡„ˆ„Žƒx”•‘ˆŒ•€Ž†–“š’Ž‘‡€Š„އv’€†ŠŒŠŽ†‡„ƒ††‘…Œ‹’’‘‰‚‹™š‘‘‹„—“…ƒŽ‘ŒŒŠ…ޓކ—…p‹‰‹†‡‰ŒŽŒ‹‹…–‰ˆ†“–‘o–‹‘‹}Š‚‡‡‰Œˆ†‡‡‡ƒ…‡‡„†††‡Š„……†…ˆ„ˆ†ˆƒ‰‡ˆ…‡…„‡…‡†…†‡……ˆ†…†…†„…ˆ††‡†…†ˆ‡‡†‡†ˆˆ„†‡ƒƒ„†‚‡‡ƒ…††††…„‡††ˆ‡‡……ˆˆ‡††ˆ†„ƒ‰†……ˆ…Šˆ†ˆ…‚‰ˆˆ†„‡ˆ‡ˆ…ƒ†ˆ„ˆ††ƒƒ‰†ˆ„†…†…†‡…Љˆˆ‡ˆ……‡†ˆ…‰‡„‡‚…………ƒ…‡ˆ†‚‡„ˆ†ˆƒƒ‡„„ˆŠˆ‰ƒ‡‡‰‰ˆˆ‡‡…†‰‡Š†‹†…Š„‡‰‡†…†‡†‹‚ƒ‡†Š„„…‡ˆ‡†…„††„††ˆˆ†‡†‰‚…‰…ˆˆƒ„†…††„€ƒ†‡†‡†‡††††††††††…††††††††‰†…†…†††††††…†††††††‡†…†††‡†††‡†††††††††„†…††††††††††††††‡††…††††††††‡†‡††‡††††…††††††‡†„†††††††††††…†…†††††…††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††…†††…†††††††††††††††††††††††††…†††††††††††††‡†††††††††††††‰‰…‹š„y‹”“‘„•‡‘†”ƒŽ”Œ†Œ~Œ˜Ž€„„ˆlŠsZ‚z~~ƒ~Œ—„ˆ‘|—‚…˜‚qŠz‚‡„Š‹¤ŒŠy‰|™…ˆy|‡‹j}ž’zs™’}ˆŠ~ŠwzŠ‹vŒ‚”}ˆ€‹ƒ{rŒ„yŽs‹}‹n™§Ž{¨…ª„c{©Œv‹“‘”†”y…m{}‹Œ‡›žƒƒ’މ~}n…™š•’pƒƒ‰…Œ‘…}’Ž ¢…–‹…’|{n•€……€‹‚†Žš€“Š”Š€ŠŒ‘w€z|y›d‚Žd{x‰œyŽ‹Š|ˆ€‚‰Œ…„€„‰”ŽwŽ’{€‰ƒ~†’Œˆ‡‘ŠŽ’ŠˆŠŒ…„„…„‡Œx‘‘ Š“ŽŽ€…}…†‰‰‹…‘Œˆ†’‡†“r‰šy„Œ„‡ƒ‡‹—ˆŠ†ˆ‡ŠŒˆš‡‡™‚ƒ”€‡€…‡“”t†Œˆ‡x†Š‡ƒƒˆ“Žˆ†’ˆˆ‡ˆŠ‡ŸŒŒ~‚‹ƒ…‰Š†…ƒŠƒ…‰Ž”‡„Œ…‰Šˆ‹‹’ŒŠ‚ƒ‘ˆ€ˆŽˆ“‘…ŠŽˆ…’ˆŒ‰…Œo‹‘‘Їއˆ‹Š‹ŽŽŒ‰ŽŒˆ„Šƒp†ŽŒŽ†‹ƒŒ‡„Š€—ˆ¤„}‹ƒŽ‰|~…ƒ‡¦“Š}’‹~{”}‡€‹šŒ—|…„ƒle”ІœŠ‚¥z†—ƒ‘ˆŠŽ€]‰Ž’ƒ†ƒ˜}¨WŽVo››º…v’•Š}j}’€x{ˆˆ‚zŒ~ws—‹x”…s‘’¥¡†„y††m‹…‡—‘y]’‘“‘‰‡b†z˜–‡ŽqŒŠ™’v |‡vƒŠ‚rƒ}~—‹yŽ|…_ކ\‹‹™z•‹kr}‰œ`Žƒ †€¯“c …Œƒ˜€u‰i’¢ƒ…t˜t•}„j|’˜‡…ƒŒ„‹ |–sps…rŠ˜…„«†Ž†‹ƒ‡…‡†‰†„†††„††ˆ††‡††ƒ†††…††…‚ˆ†‡……†‡††††ˆ†ˆ…††††ˆ††…†…†††‡††ƒ††…†…††††…†ˆ…‡††ˆ…††…†††††…†…‡ˆ††…††…†‚††††…†‡‡††††††…ƒ††††ƒ†„†††††„††††…††††††††„†…†††‡†††††††††‡††††„†††ˆ†††††††††††‡††††††††††††ˆ††††…†††††††††…†††††††††††††…†‡‡††…†††††††††ˆ†††††††††††‡††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††}}}ƒ‰…Œƒ‰ŒŠ‘Ž”ŒŽ–yz|‘‘ƒ™“—ˆ~txŠ“€€}}˜”|ƒ“ŸŒ‡}”—„p…‡Žš†v•‰†‚ƒŒ†”x™}xŠŠ€„‚‹}‚’މ€ˆlˆ|ƒŽ‹ˆ‰Ž‘yy‘’rƒ“|…€†Š™ˆ†‡„†Ž”†‘ŒŠ„ŠmŒ“ˆŒŒ…ŒŸ…wˆ–…ˆ—{ƒ”’ˆ”ƒ–’Œ’•‹†|‡ŠŒŠ–‘Œˆ†ŠŽ‘ŽŠ€¥Š‡zv““Žwƒ‹‘‰Š‹‡‡’ˆŒŠŠŠ‹“ˆˆ‹o•ˆ†~Œ™†‘…Œ‰Š‹}ˆ„’}|…‹†Ž’‰Š}Šˆ{Œ€‹‰ŒŽŒ‚އ‹Š…Œ„Œ–Œ‚ˆ…‹ˆ}Ž“›‡‰ˆ~ŠŠ‰–‘…‰‹‹ˆ…‘“‚‡’”v˜“x‘…€|‹}ˆ““Šxz‹ŽŠ€’‘Œ‡Š†Ž†‹|ˆ‘’‰w”†‰o‹‰†…Œ‰|‹‹Š†Ž‡™‹‚ŽŠ…–‰‹‚~„‚ˆ•‹‘Š”€ƒƒ”‘—‘Œ‹Ž—†’‰Š‡‡…‘„ƒˆ‘‘‡†”ŒˆŒŠ˜‹Š‹”o˜l‰~މ…†Ž“„‘‹ˆˆ†‡„‡l‚†‰„ކ‰–”Љ†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††‡††††††††††††††††‡††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††‡†…†‡†††††„†††‡††††††…††‡†††††††††††††††††††††††††††‡†††††††††††††…††††††††††††††††††††††††††…†ˆ††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††Šx’’•Œˆ|ˆ“‰‡„}…ŒŒw‚zŠˆŠ‰‰‘Š‚ŽŠˆˆŠ†Šƒ|‹ŒŠ}‹’ŒˆŒ‡w‡‹ŠŠy…‰ŒŒŒƒ‰ƒ†“ŒˆŽsŽx”Ї~Š„ŠŽˆ‹“}}Œ‹‰Ž‚€‡‡ƒ•†‰…ˆˆˆ{}ƒŠŠ{„…‰„Œ…ƒŒ‘‡‰‘““ˆ”|˜xw•‚‰Ž“„‡ˆ‘Šz‰”‘‡‡‹’‰‰“–Ž„‹”Š…†|‡‰“•Š‹‹ˆ‹z‹…Ž˜’†„“rБЇ‹‹’‰€Š„‘ŒŠˆŽ‡‹‰ƒŒ“ƒxˆŒ„…|’wŽ’ˆ†‡ƒ—•…}n€˜”’‚€‰tŒow|Ž“…ƒb‰oŠ€–€€ˆˆ€‚…Œ†t‹xœ‰qƒy› ”…~‘Œ‹‚‘s{–‡zŸs`•†}˜‚ƒ‘–~Ÿ†Š…zuxsšŒ†}Œ|rˆ„‹kŠ…”†v‰“l˜–ˆ˜‹¡y‰‹ƒ™‚z‚’ВЉ}ƒŠƒ†‡tŽ„†¥šˆŠ¡ŽwxŒ‰“cmŠug“€–‡“ˆƒm ~ˆ{Œ”u•“Š”‰†¥‡‡|™ŽŽ‰ŒŒ’€ƒu”uƒˆw{‘{„y‚’Ž€Šz||ˆ|“‰ƒu‹“‰˜…‡‹Ž…ƒ|ƒwsƒœ…”s‘nˆz|ƒ~††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‚‘y‡}’’ywŠ“Šzxˆ‘zŠy~}kŽt…’“šŽ‰~†}™‰‰…~x}q‘…›ŽxŒ…ƒŽ‘Š…mŠ{‰€n’…Œš†p{e„Œzm”x§x{‡œ“sˆ…Œ‚{ˆxŒˆŽw¤‹}•‘ƒ†ƒ˜“}žzš€†v•€…‡u†„ˆ„z€ƒ‰Š€“‡ˆŒ”u‰“ˆ”n˜‰„Œ‡‹ˆ‘„‹y‚v‹Œ”€„‹‘„•~Š‚…‹‰w‰Žu‚{›Žˆ§‚¡ƒ‹ƒ‘…“Ї~˜o„ŒžŒœ‘z|…†„«Š‚Œ‰x’rsƒŠ~}y’s¢—…††…”‡Ž|‘…†z‡Œ‹”ކ’zއ„‡ŠŒ‹‡•‘‘ˆƒ{€“ˆŠ‡ˆy†›‡„ˆ‹|Œu„†Œ…ƒ’ˆ‡‰Ž‹ˆ‰|Š™v‘Ÿw|‡’Ї†Š‡Š‘ˆ‡€‘…‹•‚„”‡‡–{Œ„ŠŽw„‰†Šx‡‰“’{‹{Ž”‚ŒŒ‹ˆ›}£ŠŒ…}Š‘~…‰”|’„Ž„„…†’Љ„€ƒŽŒ‰™Ž•”ŒŠ–™…І‹‡‹“‰Œ„‰’“‘Ž…Œ•‰††Žm‹“‹ˆ„…‘……ŽŠŠ”ˆ„’•Œ‰ŒzЇoŽ‘’Œ„‘€Œs•ƒ‡Œ‘”Š€„ˆ†~Šƒ‚‚g€Š‡‹…‡Œˆ…†€}“І’‹ŒŽ—‰~€|xކˆ”¨‘€“‚‰’„ˆŽˆ|w‡‚w…‰†’’tŠp‚j~Љ…µŠ~“ˆ€Œ†€‰tqŠ–…‚‹‰†}z…‘Œ†}{jŒ£–‚–„€ƒ…ƒ‚‡ˆnm‘ƒz„„ƒ‹r|ކŽ‹‘ހГ”ž}‚…™™q‚y†–f…~›||…™t‘xŒ˜qŒ‰Œ……zƒˆ‚‡|”Œ‹mƒ‰… x€z‡žž™…‘—‰~‹†Ž‚ƒ‘qi–‘‘‡˜ƒ‘’€‹ƒyœw‚‰‹wx¤¤‡‰‡€‡„†‰…„ˆ†„ˆ††…‡……‰†„‹†„‡‚†ˆ…„‡„……ˆ‡‡…ˆ„†‰ˆ†…‡‰‰†††„„…†‰…ˆˆ†…††„„ˆˆ…ˆ‡…ˆ…‰„‰‚†‡†‰‰‡†„†…ƒ‹…„…†††‡‰…}†‚‚…‚‡…‰„…ˆ…††„††ƒˆƒ†…ˆ†‚†ˆ††…„†„†‡‡…‡‡‚†‰……€‚…ƒ„ˆ…‹†‡†‰„‚ƒ……†……†‡‡………†‡ˆ‡ƒ„‰ƒˆ‡†‡†…€‡Š…‡†„„†……ƒ‡‡„„‡ˆ‡ˆˆˆ†………„„…‡…„…‚‡†‡‰ƒ‡…‡†„ˆ†…„‚Œˆ„‡ˆ…ƒ…†………†…†…††„‰†††…†‡†…†……††††††††…†††††††……††…†††††††…†‡†††††‡†††††††††††…†„†††††††‡†††††‡‡†††††††††††‡†‡††‡††††…††††††††‡††††††‡††††„†††††††††††††††††††††‡†…††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††‡†††††††††††‡†††††††††††††‡††††††††††††††ž…‰‡ˆ…‰…‡y†~‡€††‰ƒŠ‡…„ƒ‡†ƒˆ…ˆ‚ˆŠ‡‚„††‡€‡…‡‹‹†…†‡…ЇЇƒ…„††††ˆ‰ˆ…†…‚€„…‹‡‹ƒ†…„„………ƒ……†‚‡…„Œ…†††‡‡…}†„‡ˆˆˆ‡‰•ˆ‡…„„Š‚‡ˆ††‹†ƒ…†…†v„‹ˆ…„‡ˆ‰‡…†ƒ‡ƒ†‡†ƒ†…ƒƒ‚Œ‚†ˆ†‡‡†‡…†…ˆ‡‡‡Š…†ˆ„……‡…„‡ƒ†‰…‰…††‡ƒŒ‹†ƒˆ‚‡‡„……‡„‡„ƒ…„„ƒ…ˆ†„„†…†…ƒˆ‡‡„Š‚‡ƒ†„…†„ˆ‡‡††††…†ˆ†„‚†ˆš‡u‚Ž–‡‡„€ŒŒŠ”ƒz€–€‚s{„‰‘“ƒ‹‘}ˆ‹‰šƒ{ƒ€…q‰Œ‡w‰‘‡ƒ‹r‹ˆ•š’‚x‹–…‚…‹’ŠŠ…Š{v§Ž†}†}އ†‹‘—su“‹†r•ŒŠ‹€€•Œ”‡ˆ‰Š{v†ƒz‹ƒƒ‡…y‡‡}ŒŽ•šˆ|Œ†s„y•ƒ‹†™”›u——‘ˆ‰ˆ’‘“Œ‚‹Ž†‘‡ˆ‡Š„•ŠŒƒ{†„“…‹t’‰‘…yˆ‰™’~€|‡‰ŒŠˆz‡Œ“‡ˆ”yƒ‹‹‹ˆ†……ƒlw€‹{‹{ˆ‰t‹zx““{€ˆ…‹€‹Œ–‡‚ކŒ|‡ŒŽŒ˜Ž…ŒŠ}Žƒƒ‰††’‰‘Š’~w–†ƒŒ„’~‹‹šŒŒ‹’{–’’}„€‰“€‹ŽŒ†ƒ˜x—™vŠ‘‰†ˆ…ˆ…‹‹ƒ}ƒ‚‹€’†“–†Š€•ˆ‘uˆ‰‘”v„”~‹xˆŒ}ˆ‹„ˆ†‘‘Ž’“‹Œ„‡Š™ƒœ‰‰…ƒ‹†…‰ˆŠˆ‘•ŠŒŽ‚”ŒŽ“Œ€~†‰ŒƒŠˆ‘ˆƒ—‹ˆŽŽˆ–•Š‹‘Š‹“’„‡”Š—‹†‰Ž…ŒuŠz‰‡„ˆ•Ž‹‡‰‰‰‡…‘‹‹‘o„“’Ž‹‹||‘‰•”‘|†Š˜…€„s†‘†„ˆ€ŠŽˆx‹‡‡‡ˆ–‘’y‘‡“ƒŽ…‰‡……‰‘†‘Š‚’‡‹|~އ€‚ŽŽŒŒ‡…“†€‘m•”z‰~„–|‡†ŽŽ™„yy…ŽŒ|‚‚‚‚”ˆ”“ŠŒŒ~}‹…ŒvŠ”‹‡Œ‚…z–‰Œ’ŽŽ†Š”…‘uˆ‹Š“•ƒ‹†‹Œ~†—Šƒ~‚•Ž‘•މ˜Œ™‰ƒŒ’ˆ†‰‘ВІ‹‡‹ˆŽ††z‘…’Œ‚–uŒ‹†‡Œ’Œ‘…’…“‰„‰…‰‰Šƒ…‘ƒu~Ž}“}‡ˆ|‚Žz‹~y„–‡‡•ˆ‰‡‡…’Œ™†Š”v‹Š†‡›Œ‡zv†‘†“†‡‰ˆ‡z’›Š†Žƒ“‰ƒ††Œƒ…‚Œˆ‘ƒŽ‚~Ž–uŽ›x‡…{ˆŒ~‰Œ„Žƒ…‰‚–‘}”‡‰•ˆŽ‹‹w‹ƒŒx‘’‰Ž‰“…’ނЄ„‘‘†žƒŽ‰‚ˆ“‘€ƒ‡Ž†…Œ‡”’‹—‹’ˆƒˆ‡Œ†Œ‰•“Œ†Šˆ•”†ˆ“ŒŠŒ†’†‰“ˆƒ•‹Ž†|Žp‰Œ’‚ˆŠ‰’€€“Š…ŽŠ‰Œ‹Ž‹ˆ†•ˆmŒ“ƒ†ƒ†‹‘‚‰‚‘„‚‹‘•ˆƒ‹ƒ‡ƒ|‹†‹š|Ž|‘†‡……Ž‹‘–Ž”ƒq‡ŒŽ†“„ŒŽ|‘›ˆŒ‚‹Š”€zx‰Š’€‡„—‘ƒ‚„•wŽ¢z†ƒŠ€‡‚……Œ”“€‚‹……Ž›‚…|’~Ž…‰“u…ƒ€x‡•ŽŠŒ{Œ—Š“”‚‰†Š•œ‡‡Œ~}Œ‚…’‘‹‹†‹ŒˆŒƒ„~‹‰Ž‰ˆŒ•“ŠŽˆ‚ˆ’‘މŒ‘‰ˆ…•™‡†„Œ”‘„”p„~‚‚”•Œ€Œ‡‡•‘‹Ž‹~o„’—…‹}p’“Œ‘ˆ‡ŠƒŠ‘ˆ‡‰†‡’……Ž’‹”’ŽŒ„}{ˆ…†ˆŒ‡Š‘‹‰‚‚’†‰‡‹ˆ‹zŠ‘œŠŽ†}—††‚€†ˆ‡‰’ˆ…ˆˆ€…‘‹‚…”pžw‡Š…‡‹ƒ‡‚ˆŠ~‹Š„’”…І„‚˜ˆz‹„ˆ‹w€ŽŒŠx‰z‚‰‹Š‰Š”‰Œ‘Žˆ„†”‹ŸˆŽƒˆ’…Œƒ‡Ž‡€‡ˆ†ˆ|‘“Œ‹Ž„‚…‡Œ…ІƒŒ“‘ˆŒŒ”ŠŽ†›‰‹‘Ї‹ŠŒ‚ŒŒ‹ŽŠ‡Œ‡‹s‹„†…‘‰Œ”‹‹‡‘‡‹‰Š‹”pŒ”‹ŒŽ}‰}‹ˆ‰’††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ˆ‰uŠ}ƒˆ‡‹‹Ž‹Žy„v|‹†ƒ‹Š‰…ƒžŠŒ‹‹‡‡—††‡’’zŽ…œ‰Ž}„ˆ‚‹ŠŠ…§’ŽŒ’„‘o~v{˜†Š”’Ž}’v{‹v‘„s’ƒˆ‘…|ql’ƒ‡†ŠŒ„…‘Ž˜o†‚‚Œƒ”Š’‹ƒŒ’„yƒm‘{Ši¼ulˆ“sŽ£“„}‡yzv¢”ltgzoŽs_s|–›p‰`–m…š„«•Š¨—|y±„“m‹”–…›‹~•y™‘u{„‰–{‚q„}yŒ¡‡{ˆ’{d‹t~”Œƒv… yg‚™Œ‹Œˆy…}v§†~†Œy‹w|~…„‹‘…‰‡ŒŒŒŽˆƒ~‚‡„ˆ}†ŠƒŽ‰…„€††ˆŠ–…‰†ƒŒ}„‰ƒŽ’†Ž…Ž„Š†Šˆ–ƒ„‰……‰€ˆ~‹‰}~{‡Œ„‰~‰„Œ†Œ†‡~ˆŽ„†~‹ŽŽ‡ŠŠ“‰Š‹…‰…‹„‚|Š~‡‡ˆ‡ˆ€Š‚~†‡‰Š‹Š„‚‰†…€‚ƒ~…ІЄŒ…†Š‰‹‚…Š…‰ƒ…‰ƒ‰ƒƒ†„‚ˆŠs}…}ƒŒ“Žƒ‚„…ƒ†ƒ™’Œ€‰ƒŽŽˆ}“|†Ї€‡…Œ‘…†‘ƒ}…Œ‚ˆ‰ŠŠƒˆ†„ˆ‘€Œ…‡†‰„|„†ˆ†‰‡Œ†††‡†‰††‡‹‚††…††ˆ‡†Š…‡†ƒ…††‡‡†††……†ˆ†††ˆ†ˆ‡†ˆƒ†‚†‡…††‡†††‡†‰†‚†…†††…†††„ƒ‡‡‡‡††††‡††††ˆ††‡ˆ††Š††ˆ†‡††…††…ˆ††††‡†…ƒ†††‡†††‡††††††„…†……†††††††‰…††…††††……††…†…‰††††„††††…††ƒ†††††††ˆ††‡…†……††††………††‡†…†††††††††…††ƒ††‡†‡††††††…†††„††††…†††……†…†††††††††††††††…††††††††††††††††…††††‡†††††…†††…†††…†‡†††…††††‡††‡††……††††††‡††††††‡†††††††††††††…†…†††…†††‡††††‡†…†††…††††††‡††††††‡†‡…†††††††††………††††††‡††‡†††‡†‡††††††…‡†…†…†…††…††††‡………††††‡†††‡†…‡††‡†‡††‡†††‡††‡‡†‡‡…††…†‡‡††††‡††††‡††…†††††…††…†††…†††‡†…†††…††††‰ƒ~u‘•ŠŒŒw‹†ƒw‡‹„}lƒ‹‹ˆ‘ŒŒŠ„†‘y–ƒ†‰’ЇzŠ‹ˆ‹—Š‚…Š‚x‰q‰yˆ†‹yƒ’Œ‹‚€‡‹’ƒv{”~š…}ˆ…xˆ~„|‚Ž‹~zŽŒ’|‹ƒ‹Š‰„yŠƒ‡„ƒœ‚zŒ†„„‰}“•…y‡u•‰…‡„ŽŽ‡“‚ˆ•|‘‡vŽˆ˜Ž†ˆ—‹Œ˜}‘‹‰„††ƒ•ˆŽ™‹‹‘–€†‡ˆ~z‚’…Œ…’„–†‹‘„‹Ž‡„w–r€‹‹|“•†{ˆ„Œ€–މˆˆ{Šxy†ƒŠz„’–‹…††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††…††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††‡†††††††††††††††††††††…†††††††††††††††††††††††††††††††††…™……І„‰†‘†ƒ…€††††„†††…„††………‡„ˆ„††ƒ„…‡‡‡††‡†ˆ†……‰†Ž†Š†„…„†‡†„ˆ„…††……†††††……††Œ€†…ˆ„‡†ˆ††††‚†‡††…††‡…†…‡††…‡…“‡‡†…„‡††‡††‰‡‚‡†„……}†ˆ‡††‡†††††††}…†…†…††††††‡…„‰††ˆˆ††…Š…†…ˆ„…††‡…‡……‡†…†‡‰……„††ˆ‡…††„††……††…††††„ƒ†‡„…‡…‡…‡†…‡ˆ‡…†…†††††††…†‡…††‡„†‡‡‡…‡†Œ…xŠ‚„‹†ˆ‰‡‰|•Œ’Š’‘†t~Œ†ˆ‡‹Œ‘‚ƒ‰†„{Žƒ•Šƒ†{“”›‡—˜‹‡ˆ„‘r…ˆ†~ˆƒ†Š…‚{Љw„}…‚€y…†…ˆ‹…„Œ‹‰‰”—…{‘’’—€‡‹’y‡‹‹‡{…‘”}xŠ–…‚Œ•„Œ†’–€‰‹¢~…€†‘}…‚y€ŠŽŽ‡}Ї ’ƒ‹”šoŽ–Œ‡€|‚•‘Š£Œ|†‘‚‡†™Ž‰‡„…‰Œ‘އ“z{Š•†ˆ…‡†‰ˆ‹”‰|‡•‹xŒ‡„x˜†Š‰{ކ„„‰‰‘~…†„–˜……}……|~ˆ„ˆŒ†‰}|„Žˆ‰‘•”„„‡’“{‰Œ‰‡„„‡~„•’†Š„„|€¥Ž€~‡ŽŽ‘”Œƒ‰’€Žl“v‹„‰‘‡Š’Œ„~z‘‡ˆ‘€…‰‚˜‹Œ™‡‡Š‘Œ{~‰Ž’}Љ‡Š‘„‚™z’ƒ‘Ž“Œ‹‹‘–†ŽŠŠ˜Œ•Žƒ‹ŒŠŠ‰€‡“‰Œ“Œƒ…|–ŽŽŠ}“•—‡‰“Œˆ˜“†‡Š‡Š‰‡‰†…ˆ‡ƒœyŠŽ…x†ˆ‘•‹’…‡‡ŒŽ‚‘„|‚‹‡wŠ“ˆ†Š}ˆoŽŒ‡‹’‚‚|•‘~ƒ‡…s–‹–Œˆ{yyŠŒ‹„’‹~ˆ…‰˜Œ„•‚€‚u…„ކ‚‰™…ƒ’Žu‹Ž”¥€‡›‰›ŒŒ‡†{Œ€š„s™ˆt{†~ˆ‡ˆ‹}}™‡‰x”ŠŽy‰v–“‡œw‚€|€‰……Œ…‚‹”ˆw†‡†‡Œ”……€Ž…z‡ƒ~vŠ…žŽ—w›‡Ž—•„‚ˆ™‰‘}Š’–‚ƒuŽ…ŠŠ–†‚ˆŒˆ{‡‘–‰Œ{’•ƒŽ‹‘‡Š……Œ|€‡‰}mˆ—˜‰“–~Ž†ŠˆŽƒ†‰{{„€Œ€…‘‰‹ˆw™Œ‘Ž›…{k€‚tˆ‚“ˆ†~…‹{yv•އ‡ˆ†ˆ~šˆŠ™€|ƒ”ˆƒ~˜•…”‡€˜ˆ‚‡–†w{Œ›Ž”žŠŠ’…u€{Œw~Š–{{•‰„}’ƒm‚ŠŽ‡”€}Œs€{ƒ{€‰‘‹‹‡…ޔޕމ¡™˜‚‹‘’€Ž…Š‹w…•Š•›…|†‚z£Œ’™”Žˆ “‰’z‹~–•Љ‡‡…‰‚Šˆ}ŒŒŽ˜Š’ˆ–““„‡q ~ƒ€m„Œ{•…”Œ–Ž|‹Šwƒ|‡wƒ’‡q‡€Ž‘†ˆŽwƒ‘€ˆšˆ~‚{Œ„…“‡ƒ‰‹{|„tu…•ˆˆ|Љˆ~“ƒ”ŠŽ}Œƒ†€†‘–‡‰Ž…ˆ{”œ—‰£ƒ…ŠŠ†Œ”…Ž~‘“~v‘‰|x{}‰z„•Š˜Žzx}Žˆ‰x‘Žw‡{‚y™˜™‰„ŠŠ‹~’†’€…‘‚‚’ˆ€w–~”’‡™…‘Š€•‡ˆ‡|Ž„–‰˜–„—‘š‰‹†‡•‡‡‹‘…‰‚š—”Š ‘uŽƒšŠˆˆ‘Œ‹—Œ’}„yŠˆ‹Œ‚††‡ˆš~›p|s‰€“‡ƒŒ‘•}“Œ„‹‡ˆ€|…‰{‚zƒ‹“ˆ“zŒŽŠ’„‰{„””†ˆ}Œˆˆ‚Ž}{‚|p{…‡“‡ŠƒŠ}—‚†…{‰ƒ‚rŽ•‰}‹‹‡„‹ŒuŽ•Œ€w|ˆ‘‡ˆ“‰……„ˆ|‘zŒ€w–‡~{~†ƒˆ…‡’u}”‹t‰„†‰‡“•ŽŠ…މ‡”|{……ƒˆŠ‡‰…“‰…‰Š~‡‚•…Œ’ŒŠ‚ІŒv{‹Œ‹~ކ’ƒ…Š“‡…‹ƒ…‚Š~’‹„‹‘ƒš‚ŠŒ„‚Ž}“Œ‘Ž~‘€‰…Œ†‹ˆ‹Œ‚…‡|…‡ˆ‘‰ˆ‚ˆ…‡‹„Žƒ€†ˆxŠ…‹}…ŒŠŽ~‹y‘‰‡‹‰Ž††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††~…Œ’ˆˆ{‡–‡…o‡‹Š‹ƒ†v†„„„„ˆƒ‡ŠŒ‹ƒŠŽ†‚†ˆˆ~Ž‚‰‰‚’ƒ‰Š‰Ž‚”†’Š€‡†Ž}‘Ž~†Œ‡ƒ~€‚Ž…~“c~„ƒ“Œžކ„~uŽ–…›¢‘|‡ƒ…‰‹‰“‚€‹v‰‚‹…‰q~ƒˆ‘ŠŒ‘‰Œ„“Ž…‚•†ŸŒŠƒ|‡‚‹ †‚„wzw{—ƒ~‰†`‰“…„›—ƒ‰Šy „r|¦†‹€‡“…yhŒ†‘Žf•ˆ}qŠ”‰Œ‚’mšx‡„‡z‡‘‰‰††œ•Š…~…“ˆ„„t›‰‰¤‚•„ˆ˜‹”’{}†yy{tu’‡trk†—Š~†}ƒ‹˜žuz‚q{wŽ„k‰x–•r—šw’o‹“²‡t¢Š’jnmŽ„ ’Ÿz“t†‰™aw—ˆŸ‚~Œ„˜rv©‰”k¸¢‚Š„a“‹€¡†Œoƒ‰…l††•„…ˆŒqƒ„z–‘Œ‘Lv•r~‚ww}Š®€u…‘oŽ”‡©†…”†Œ•|…Škޥޒ”}yŽw“‡|€^f‚‚q…‚q”…Ÿ…z°˜–ˆ…‘rŽ–wž™…~–~‰‘”²{‡rƒˆ‘––—~„†l€r•wvž|{eŒ †™„’Œ…ˆˆ‘„ŽŠ‡‰€‡‚‡†ˆˆŒz‰ƒq‚“ŒŒ‚ŒˆŒƒ‡ˆ€‰z‡{v†Žˆ‚‘ˆˆ„ŠƒŽ‚††Œ†€ƒ…ˆ…‚‹y‚„ƒ…‰…„‰|†ƒŽ‰ˆˆ‹…‹…„„ƒ|Œ‰‰rw‹‡‰†Š„…ƒŠŒ€„‹Œ‹Ž‚|‚‹ˆ„ŒŠˆˆ{†ˆ‚‰Žƒ‘„‘…’ˆ…ƒŒƒ†‰‰{‡vŒ„ˆ…Šx†‰‘{Œ‚ŒŒ€Ž‘’‰”‡Š‡†“Šˆ…ƒ‹ŽŽ…‰‚……ˆ†‡~…†‡€‹Ž†††‡‡Ž‹Ž‚†‡‡ˆ†‰ˆ‹Š…ƒˆ„…ƒƒˆ†††††ˆ†††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‹‡‹{†–……ˆ‡‰Žx™“’‚‘‚yx‰y„ˆ…™”Š…~’|ƒŠƒŠy‘”œ‘|’‡ˆx†‰‹†‹ƒz‰’‡‹“|†}”q‡–wŒ“|†’Ž{†„„‰‡ƒ”™ˆ’y˜‚އ”‰…ˆ„x…Œ”ƒx‰Œ„‡˜…‚…—ˆŒ‰ƒŽŠ‹’™‹„…ˆ‡‹…‡ŠŒ‚‹…Œ•’ˆŽ†ƒ‰„Œ‰‚ˆ‡’Š…ˆ~‰•ޓމ•‹‡‰‰’’”‰…“ˆ‰ƒ’q‰ˆ‹‡‰Š‘Ž•Œ“„…‘€Œ‹p‘Š–…‡{~‡Ž~‚†‹’zЂЋ„‡‘‹†‰†‡’‘“…„ˆ‰Ž„Œ‹Ž’ކ…ŠŽ‡…‡„‹x‘ ‰‘‰~‡ƒ†ˆxˆ†•‚‚‘ˆ†‡†‡‹–x‘y†‡Ž„‡‹‘ŒŠˆ„ŠŠ†€‘–„‚ƒ‡–x‚„‘‰v†Œ‹ˆy†‹ˆŠŠ†‰†˜‰‰ˆŒ‰ˆˆŽ‹œŠ‹}†’ˆ|„Œ‹ˆŽ‡…{‰‘ŽŒŽ‰‰†ˆŽ†ŽŠŠŽ‹„„‰‹‘‡††‹’ŠŒ‡‰Œ˜‡„‹†„‚Žq†ˆŠˆ‹Ž‰Œ‘„–†ŠŠ†ƒ‹ŠqˆŽ‰‡‚yˆŒ‰ŠŠŠ‡…’‡Š†‡„‡“‹”Š}Ž’|ˆ„„Œ‹†‹‘‡„††Ž„x…ˆŒ‡Žx™Ž¢ŠŒ‘…~‹~‡ˆŽŒŠ…‘€‡‹Œ‚ˆ‚ŒšsŒ—z„††††‡‘†Š†€Žˆ~˜™‚ˆ—ˆ…“zŽx‡‰’‹t€‘‰y…’‰‚z‡„„“ŒŠŒŒ‰†‰ˆ†’š‡Œ€€Š}‰ŽŠ„~ކ|†‘Œˆ’‹Š„ŠŠ‹†Š…‹‰ˆ…‘‹’‰†Ž‚‘‰‡’”†‘†Žƒ‘€ŠpŽ‹…Œ…ŠŠ†’ŠŽŒŒ‰ˆŠŽ‡qŽ‹‹Œˆ„‡‰‰Š‡„Œƒ‹w…ˆ††Žˆ}‰‡’Ž’‡–u…‰€„‡‡‹“„ŒŒ„„Œ‘‰ƒŽˆ|Œ|ŽŸŠ‹}zŠ€‚ކЉŠ|†Š†…†‰”‘uœw‡–Ž{„‰Œ“†€ŽŠ„ŠŽŒ„’™|€”…•€‹x}~Ž“‘t…Ž‘„y……Œˆ‘ބދŒ‹‘}‡Š…Ž¡‘Œ‚~ˆ‘†Š…“‡Œ„}‚•}}”“‰”’„…‹Œ‹…”‹Œ…“‰ˆ‰‚•އ’‰‘‹‰—ˆ…‹‹˜Œ‡ŠˆŽƒ‰tŒ‚‹Œ‰††Š’‘”“‹‰‡ŠŽ‰p‚‘Ž…ŠƒŒ~Ž‘{‚„lŠ…‘w‘“€xƒ…ˆ}’}ŽŒŸŽ‚ƒ…‡„Ž‚„’‚“wƒz¡m‰†}ˆ„ŒuˆŽ|€{£Œu•–z€t‚ކv£ƒ|…އ‚Œ•‘wŸžƒ‚{‚ˆ}™’€–‡v—‹„—}ƒŽŽz†s‚„uz„v–‡v‡p‚‚‚•Œ„œŽƒ‰Ž‰k„‹dƒ½w‰‡‚€’|oƒ[€ˆ€uœ¢|rŒ{~Š{—…ަ‰™Žb’Žƒr˜‚•uv|„Š•…„…—„Œ„{‰“‹€‡„€v‹}™Œž‡z”Š€ˆ‘yŽš……j†…Šœ˜yŒxd‚y†—Œ†„•€}–~‡’}™ŽŠ…‘Š‹€‡|ˆŠ‰–wˆ‡“†‘ƒ‰ˆ‹‚ŒƒƒŠv‰’Ž’Ž‹y…‡‡‰’–|†ŽŽŠŒ~„„˜yŽ˜y“—|‘r‹ˆ’€’Љ›‡|‹‡‰…Ž¡}……‡’zŒuƒ†“އy|‹ŠŽw††Š–‰‡ƒŠš‹‡†{‘“‘—w””v“z‹…“Œ€™Œ€„ˆŒ˜Œ–‹‰„‹ˆ„‹“†ƒŒ™Œƒ”‰‚‹Š‚†–Š™Œ’•‡ŽŠ}Љ•‹yƒtyƒŽ…“ŽŒ•ŠŠŽ‰Ž‘…ˆŠ—…›Že”’…‚|’€‹ŽŠr†‡†ˆ…††††††„†…†…†††‡††††††††††††††‡††††††††††††††††ˆ†…†††††††††††„†…††††††††††…††††††‡††††††††‡†„†††††††††††††††††††††††…††††‡†††††††…††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††……††††††††††††††††‡†††††††††††††††††‡††††††††††…††††††††††††‡†††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‰‡Š€„Ї‡ƒ‚…ƒ‡†„†‡†‰…‰ƒˆ„’‰‰…‡……††€‚„Œ~ˆ…Œ†•ƒ‰…‡‡Œ†„~…|‡…€}{…ƒ‹ŽˆˆŒŠ‹‹ƒ‚‚‹†ˆ‰Œ†v~„ƒu‡ˆ„‹ˆ††„„ƒ†‰œ™ŠvŽ…ˆŒ†‡‚ˆŽ„‡€~„…ˆ|„ˆ~‡ƒ‡‹…‡Œ~†††„…’……‡x}}™‡|x†„ˆsz„Œ‚‚Ž}‡€’‰ŠŽl‹ƒ„ˆ‹’vƒs…‰…{އ‹|‘…„„}‡Ž{„š…y“…†{—¢ƒ‘†•uy‡”ŽŽ‚›„„††‰Ž„‡‚w‚“y†††‡††††††††††‡‡††‡†††††††††††††††††‡†††††††††††‡††††††††‡†††††††‡†††††††…†…†††‡††††‡…†††††††‡††††††††††††††‡†††††††††…††††‡†‡†††††‡††††††††…†††††‡††‡††††…†‡†††…††††††††††††…††††††††‡††††……†††‡†‡††††††††††…†…††‡††††……††††††‡…†††…††‡‡††††††††††‡…†…‡††‡†‡†††ˆ‘‚|€Š“Œƒ…|uyƒzŒƒŒ‹…}w„{z†}…‡ˆ„z‰…ŒŒˆƒ}Œ˜„Š}ˆ{–~„“Љy |–‹‰Šv~•€‘‰~„Іx𑄇€z…‰„‹‰Šx†…‰…}‰‰‡ŠŠ‰‚“‰Œ†~’vw‚w„ˆ•‡‹{€ƒ†‰”q†‰–~ƒˆŠ‡ˆ~|}Ç‹wˆ’•ƒzv„‰‰’}Ї„{ƒq‰‹Š“xtˆ‚ƒŠŽ’‚‰Ž‰ˆ‹ŠŒ‚}wŒŒ|y†Œ‰ŠŠ€†ƒx‚š‡Œƒ’†€„Žz•ˆ{z}~‹ˆŽŒvŒi|’…ˆŽy~šŠƒ‡…Œ{Ž|‡€Ž‹}ƒ„z›‰†ˆ‚ˆ‰‚…†’І‹s‰Œ‡w‘ŠŠ„€{…yxŽŠˆŒŽŠŒ’’{‡…ŠŽ‡…‚‚~‘ˆŒ’xƒ…†‡€’~‰‚…x{š~’ŠŽŽtˆ‡ŠˆyŠ’‰|“yv}Š‚‚‡~‚y‡vŠzŠ|„˜š€„‰‘ƒ‡‘„~ˆ†š~ŽŽ‹Ž}‰“އ†„~…‰}{}‚ŒˆwЄދ~—r‰’‰“’Œ~‚Ž„‹„}€~…ˆ‡ƒ‰ˆ‡ƒ†‹‰|‰€‹…‡ˆx–}†€Ž’…|Š€Š{‚„z†ŽŽ’r„“|i¥­ut’ƒ”„vt‰š“Ž”Œ—ˆ‘šŠŽk‚ŒŠŽz‹ŒŽy‹…uˆƒ €Ž™šj„¢o‹ŠŒ‰‹‘«¡™ƒ–šs’v‡š‹ª w“©š•€m’ƒ‡“‰¤tº“~‰›y†ƒ~~|}‰›‰|{Š©€mƒV¤Ž|€ˆg–ˆŠ˜†–”ŠŸ‚Œ‘€‚“‰vu–pj‰Š ¬†’ymv…ž€}ˆ‰pŽ—Ÿ„šŠ—|†ŠyˆŠ€„˜Œx†u”‘•†ƒ‘™‰p‹k§›‰yކІ§|‚x„y‡€Š™—ozmt“€ˆ„†s™”~™Ÿ …rpŽ‚—f„ƒ……ˆƒˆ„†ŠˆˆŠ‡†„ˆ‰ˆ‘‹†‡Œ‚ŠŒ…€†ƒ‚‚…Ž‚‰ƒ•…†‹t‰Š‰…ƒˆˆŠ‡‰Ž„†ˆˆ‡‰†Š‰…}‰}Љ…€‡Œ„‰‚‰ƒ‰ˆ‚€†††ƒ‰ƒ‹‡‰ŠŽ‡ƒ†ƒ…”ˆˆ’ƒ„„€††„†Š„‰‰ƒ€‹ŒŽ†“ˆŽ€‡v‰ƒŠ‘‡‰‹|ˆ‚‚‚‹Š‰{„ŽŒŠ}Œw‘‚…ˆŒ‡{އ•y‘ƒŽˆŠ‡ƒ}‰„„‚y„Ž’ƒ„ˆŠ‹…‚ˆ’„ƒ‰’{…‰Š‚Љ…‹†‡†€‰ƒŠŒƒˆzˆ†‡€…„z{Š|ƒ…‹†‡‹‡ƒ€€ˆuˆ‚pŠ“•€ƒ˜y†‰v‡€ˆž…Љt{ Žw„~‘“¡y–‘‘cŽˆ“‰˜ƒ‰Œ„‡’Œˆ‘ƒŒw˜ƒˆ}Š˜‹‹‹{‘‰ƒŠ—……z‘uŽ”zv…ƒ~Š…~ƒˆ…‡•‚މ†š†‘Š‚›‰Œvˆˆ’‰„|wvš’ŒŒz›“€“–‚š†}‹„ˆz†‰†‘Ž‘‚ŒŽŒŒƒ}’‰‡ˆ‰“…’€•Ž“†•‰‡“‘‹”‹“”…€‡ƒ‹‚€‰”…‘p‡“Ž|Œ‘‡|”†Š‰’ˆŒ‹„ƒŒ‰’oމšˆ‚x™„ƒŸŽ…Ž~ƒ““ŠŒ‚‰’ŠˆŽ‘‰Š~t‹‡~†Ž”„•‡’“‡Œ€ŽŠ’‰ƒŒŽ‚Љ‹ŽzyŽ…‹xЇޓˆ†‘ƒƒ}‰–t’–€ƒ„†‹Ž‹‹Œ€‡‰‡‚ˆ†•‘‚…†{z“•”—–Œ‚~‰v‰|‚‹v‚ކŒƒ†ƒ††‡†Œ“†ƒ”‹“‡‚„‘Š„ˆ‹Œˆ‹†††Ž„ŒŠ†…“|Ћމ“Œ‘ˆ˜†…~œŽŒ‡Œˆˆˆˆw‰Š‰ŽŒxŒ‹ˆ‚‘†Ž’…‰‰””‰˜‚ˆt‹“ƒš˜rˆz”Š‹ŠŠ…‰„‡†ˆ‡‡††Šˆ†…„„‡†††‡‡ˆ†…†…ˆ…‰ˆˆ‡‰†††…††„‡…„‡…†„†‡ˆ…††‡†€‰…‡‰‰††„…„†‰‰ˆ†Š‚‹‡†ˆ†}‡‡‡‡‡…„‡…ˆ‰‡‡ˆ‡€…‡…ˆ…†‡„††…††ˆ‰ˆŒŠ††‰†…††„‰…††…‡†}ƒ††…†Š‡‡Š‡††…€††…„„‡‰Š‚ƒ†…‹Œˆˆƒˆ…‚„†…†ƒ‘y…‡Š‹†‰‹…†…‹…Œ‰‡†‡zŠˆ†ƒŒ‡‰……ˆ‚†ŠŒ†……ƒ…‚ˆ†‚’„ˆ……ƒ„†‡‹‹†„†‚ˆ…ƒƒ„ƒˆ„‰†„ІŒ„…„†‰„„‡‡‚Œˆ”Ž‹‡‚‰”}„Ž‘‹††™‘•uŠ‘†„ƒŠ…ކ†ˆ€•ƒŠŠ…Ž”‡z„’‡‡‚ŽŒ“‡‚Ž‰ŽŒ—Žˆ‡ˆ†‡“ŠŽ‰‹’’‘’…ŽsŠ€ˆ…Žx‹Ž‘‚‚wƒ‚‹‘‚‰|’‡–‹‹Š‡‰‡‘Š…‚‹„Œu…Œ‡‹Š“xއ‰|—€•‹Ž“†’‘}Œ‡‡’”‚“Ž„„ƒ—‹—‹–„Гޔ‹“†Š†ˆ‰‹Š‰Š•ˆ€†“„„“‡Œ‹•ކ‰–€†‰‰‹…y‘’–Žˆ‡‰}„ˆ•„y’|Љ‚‰Š€Œˆ„…ˆˆ—…““…‚ˆ„|‹ˆ•‰‹’Œ™Ž‘•‹‘‚…ƒ’Œ}„Ž…Žƒ‰‚‘‘~Žƒwy‰ƒz‚•‹‘Œx‹‹x“‡x‰ŒŠ†~†~މ…†”‡‰ˆ”u‚…Ž}Žˆ…‰ƒˆˆ€ŽˆŽŽ‹Œ‡ˆŠ€††ŽˆƒƒŽzˆ†’˜Ž~‹‘–„”ƒ‰Œ‰Œ„†“y”˜‰“…‚z‘‘ƒe’ˆ˜€†‰’”Œ|——“˜‡‡“Š‹‘’ƒw{‚š”„y‘ƒ’“–Š„—‹’‡ˆ’„„Ž~Œz’”ŠŽ…’Œ‘…ˆŠ“Œ•‹‚ŸŠ‰†{Œˆr‡‹ŠŽ‘††v‰‘ƒ‹‹„€“€—‰Š‚‰™Œ’|{t‚‰‹‡ƒ†‚‚…˜“ŒŒˆzwŒ‡ŒˆŒ–Ž~‹…‰‡•‘†‚Ž“ƒ‡‰”Œ“…–މ…Š{…‹|ƒ|‰•z‚‡ˆ„†“ˆ‡†|•ƒ{‹…ŽŠŽ‘„‹€ƒŒyˆ”І”vŒŠ’‚˜†‘ˆ‘‘‚‘‹†ŒŒ“”ƒwŠŠ—‰‰‡‡˜„˜w†˜‹™ƒˆ‹’„‹–އ‹‚~‚ˆƒ‡˜¢ˆ‡–‡‹‚‚‹ˆ‚‘‚Œ€‚„•…ކˆŠ—Š™€†u{’’†•|ˆ‡‰‡‚‡‰“‹š|‚|„ˆ•“Œ‹†‚†ŠŽ|‹†‹’”x…~}p‡Š‡z“‹‰Š‘‹†~‚Šy†Šˆz‰‘ŽŠƒ|‹„}Œ†……‰ƒ}~Œ€‘‘|ƒn’t›š}”ˆ‡ŽŽ„Œ…›†‰ŠŽŠŒ–—‰Šƒƒ“‚‰xˆ€ƒ‚{}w‹‡~Ž„}Š‚~ˆ‚{‹ƒ‘†”‡¢…ŒˆŠ”Š…†‰…’|‹ŒˆŠ–Š…Šx–ŒŽ“……“—„‹‹Ž‡‰…Œˆ“ŠˆŒ~‘‚Š…{‹ŽŠˆ‰u€Š{„‘„…†ˆ’†Œˆ•‹‘|†’‡Œr‘‰v}”ˆ€”ƒt~„ƒ†’‡‰…‰ƒ†|Šƒ‡‘“n…~}zƒ‰ƒ…••“€Ž…–‹žމƒ‹yއ‡‘—†“…ˆ‚jtŠt„…w„‹„‡–Œ†‹}Ž‘„{†—w£“{„‘Œ~ŒŽ„‡—wމ‚‹‚‹‘†Š…ˆ•ŽˆŠ‘‡…Œk~‰z’vˆŽ‡ŠŒ}‚ŠƒŽ‰‰‡}•ƒ‹“‹–‚‹}Œ•‹“„††•‰‘…‚Ž”ƒ‘‡zŒ‰}“}…ƒ„”ŠŒ’–‹†‰—~Œ‡Ž‘Œ‡‘ƒˆ›Šˆ‡Š‰„„€rˆˆ‹‹ˆ”Œ„‘“—ޔВŒ“˜Œm~‘…ŠƒŽu†iˆ‘Œ€~’pƒ‡’…|˜‚Œ‹š…~ƒ‹Žˆ‹}y…‰‹‰‹‘‡€˜{“‰“zƒŽƒˆŠ|ˆƒŒ’ƒ“Œ…Šˆv‹‡z‹‹Œ„ŽŒ{~”‚…–yšŠu‹ˆ{y’†ˆ‡€ˆ„Š…ˆ}Š‹Š‘Šˆ…’Š~‹p‚Š}Š{‰{Œ…}€‘…І…y{‘…Ž“‘‹Œ“z}Žˆ€Š‡Ž‰„™‹‡ƒ™’„†Ž’†Ž„ŒŒ‘ˆ‘ŠŒ”‹‰…‹„Š„Ž™Žƒ–„‰~‹ƒ„ˆ‹†„o€…‚ŽŽ€‹…€˜…ŽŒ…‰™†‹ˆh„„‹ŽƒrŠ}Š“„ކ„†……††…‡‡‡††…††…††‡†‡†††…‡‡††„†…‡†ˆƒ†ˆ†‡†††‡…‡††††††††…†ˆ†…‡…ˆ…†…†††…††…‡ˆ…„‡†ˆ‰††…†……‡……ˆ…„…†„‡††††…††††ˆ…ˆ‡‰†‡†††‡†‡‡††‡†‡†ˆ†…†…‡†‡ˆˆ‡„†‡ˆ†……‡†‡†„…‡‡ˆ…„„…†ˆ†………††……††††…‡…†‡‡‡†‡………†‡„‡‡‡‡ˆ‡ˆ†‡‡……‡‡…††‡†„‡„††‡†ˆ††…†‡ƒ‡……†††‡‡††…ˆ†……ˆ‡†‡ˆ…‡„†‡‡ˆ††„†…‡‡††‡Ž“u~Œ‡ƒy…ƒŒ†“‹€{~w…Žƒ†‹ƒpz‰‘€ƒ{|‹ƒ|‡ŽsŒŽ}‡tŠ|vt—†˜„‹¡ƒ‹Ž|‡~‚‡}o‹Š†‚†Švuz…Š€Šxˆ—ƒ„€yr€„‡…Œwž…ƒ~ˆ˜Š„…‚}|…„‡‰~u„†{…‰Š†~Œz€‡~š’‹~€‹ˆ€ƒ“”‰|‘~ˆ‡vŒ†Ÿ|•wˆ|r‚ª˜™‡Œ‰”}}ˆ†}‹‚š~Œ‰ƒ|€~€y‡x„€Ž{ˆ„‚Š}zn…{ƒ€‰{}~‰ƒ‰‘ƒzuw}Œƒ€–‹w“Š‚Š{†Œ…w i‹„ˆ‹†‰†”{ƒ…ˆ’„€xx†‡š‹††…‹Œ™ˆ“|„‘}‰“†‘“…’ŠƒuŠ}€z…”Ž‹ŠŒ‡‹z…zz’zœ†zŽ–w†Š€†‡ˆ|‹ŠŠ‚‹’‡ŠŒ„Ž}ŠŠ…‰‚‹i„†Œ‡mƒŒŽ„„|„„Œ‡€‰…‚Š“…Žƒ‚Žˆ”Œ~•‹Œ~ŠŠ‹Ž˜‚’‹|•‚‘ƒˆ‹†…†•’†Œ|Š…ƒŒŠŽ‹“Ž †“ƒ–ˆ|†’ˆ‹‹€‰tŽŒ‡„…ƒŽŽ‚•‘˜…‚Š—‚Š‘}qƒ‹ƒŽ‡Šv‹qˆ‚Љˆ‚|‚‰Œƒ‘ЉƒŠŠŽˆ‰Œˆ~““Œ‡Š“|Ž•‘†ŠŠŠ„’“††Š‰€ˆ‚ƒ‰‹†ˆ‹ˆŠ…t…‚‚ŽŽ”Š€ˆŽ†‡‚‡–Œ‘„‰ˆ‹•‡…‚wŽ„’‡Š‹„„†‚‡ŒŒ’ Ž‚“†‡{”ƒŠ‡†zˆƒ‹š”„ƒ‘ŽŽ•‰Œ~’Œ’ŽŠ‡‚„Š€‘…Œ•‰ƒ†ŠŠ~‚‘~‰Š•ˆ”މ–€”—„‰‹ˆˆ„‰†ˆ„Ž‹yŽ„…†Š†’‰vŒ‚‡‹ƒ‹Œ…Œ‹Š‡Š’†ŽŠ‘~‰‡‹—†w‘|ˆ…‹……Ž€w‚ƒx…‰Œ«mšˆ’}”r–¡†…z‡ˆ™™iŠˆ|Šˆwˆˆ|hny”Š„‹‡gz ƒˆˆg„t“Œ¡Œ‚”‹r‚ƒˆyˆ¢©†˜†Œ¡ŠŠ•w”xŒtŸ‚vˆsŒ°y †ƒ”y”u€nªŽœœŠz’Š™j£›žpŽŽŸŽzˆc©ŸyŽž”‚§¸Š†£²g}…t€Š™Œ¢€‘…¢~¢‡E‡yˆ˜v”ŠŠ6‰«‚zµy”†™xŠ’‘ˆvƒp“„nšx°”£s‚¤s¬{–qt­}n‹{”zƒ¡{…€u}ˆ€„€‡Œ{v„ŽŠ’‡ˆŽŠ‘ˆŠu‘ˆŒˆ~ŠŠwuЇ‚…‘ŒƒŒ”‘‹Œ{t”„Œ~’†Š‰ƒ„ˆŽ‰Šƒƒ|……Š‚‰…‡Š~‡ƒ†|z„wŠ~‹‡‘}…‡…ˆ‰’ˆ•‡†‹‘‹‹’‹…–‘…‘ƒŒ”„‡z„y‚‚†xˆ‡ˆŽŽ‡tˆ‚†‘ƒ~—ƒ–„—‘‡…•Š–‘ƒ‹‘…Œ’‹ƒ‹‹‡‹‚ŠŽƒ†‹…ƒˆ’Œ‡•‹„…‘’‰’‰‚“ŠƒŒŒˆ†z‰”˜…}ƒ‡ŽxŽ’„Š„ˆ…ˆ‹†’Œ‰ˆ—Š”~Љ‡lŠƒˆt…‰Š‹…“‡~„{…‡~†Œ†y‡††Š…‡”…„‰Š„†‰…ˆ…ˆ„‚‡‡‡„‚‰‰~i‰‡“…‡…ˆŽ‰Š‰Š…‰Š€‰‡„Šˆ”ƒ‚{‰Š‰‰‹Š†Š„‡€}ˆƒ‰Šˆˆƒ†Ž†ƒ‰Ž‰„ˆ„€‹‡…‡„…~ŽŠ„Ђދƒ‘{‰Š|€”ƒŠƒ†„Šˆ€‚‡‹‰~ˆŒŠƒ‹…‚}†}z}ˆŽ…‰Ž‡~ŠŽ‡{’І„Œ|…™ƒ‰w|‹”†•’ƒyŽŠ™†Š—‰€‰„…wŽ„Œƒ…ŒŒ“„—‰Š‚}ˆ„€y‹ˆ~Œ…………Ž€‚z‰‡„‡„‡‰{ˆx…’zv‹ŽŠƒ‘ˆŒˆ„xŠ…ˆŠz’‹t‡ƒ€‘’˜“ƒŽ“’‡w“ŠŒ‚“ƒ‡Ž……Šˆ}‚ƒƒƒŒ‰‹ƒˆƒ…}€“zz‡‘pŸ“|ŠˆˆˆŒ†‰‡…ˆˆ†Ž‡‹ŽŒ…“†€‘‚‚‘ŒŠ€ƒ|€‹Œ}Šˆ”•‰‹†x‡‹‚}‹†Š’Œ›}ˆˆ…„ˆ…Œ†–‹ŒŒ‹„‚‘‡|‡‰ƒŒ“‘œ‰‘އ†ƒ‚‡–‰“‘†Š„ŠˆŒ|†‡ŽŒ‡‚qˆ–Œ…€”‚„ƒŠ„‹‰‹ŽŒ‹’ŠŽ‰o†“ŒŒ|Œ†‰’‡ƒˆ‹†‰…~‰‹‚Œ„ŽŠ‰‡‡‰‹††Š‹Š†Œ†‹……’…ƒˆŠ€„‰‰ƒ‰‡‘‡ŠŠ„†Œ‡ƒ}ˆ‡ˆŽŽ‡„ˆ‚€‹Ž‡Š‹z‚‹Œˆ‡€‰…ŠŠ„}‹†‡†ˆ†Œ‹‚…”Š‹†‘…‡ŠˆŽ‹†ˆˆŠ…Œ‡‡†~‡Œ~‹Œ†Š”Š‹‚†ˆŒ‘…‘€Œ‰}…‰‚……Œ…„ˆ—„†‰‰‡‰‰Ž‹‹Œ‹‘‹‚ˆŽ‡‰Š}‰Œ~‡”‰‰‹‰ˆ…Œ‹‚‹‹Œ„„‡…~ƒŒƒŽtƒ’„†ƒ‡††„„…—Š€‚‰†‡’އ‹……‰‚Œ…€†‚އy’‰ŒŒ†‰‚—€Šˆ‡ˆ‘Ž‹‹‹Š’‹’„‰†‘„މ‰‡ƒ“…ˆ‹Œ‰‡ŽŠŠƒŠ|‹Œ‚›Œ{—Œ„{‰‡‡Š‡Š‡…Œ‰ˆ„—†„ƒ{”‰€ƒ‡~€€‡~Š…‰‚†‚‚…ˆ‹ƒ„Š’•…ƒ‘‡…’†•ˆ…„‘•‘‹‰‰‹•ˆ‹‘€“€‰ˆŠŒ’€‡“Žƒ’‹††Ž„Š‚œ‹‰Ž–€ŽŠ{Œ‹’‰††v“ˆ|€‹Œ‘‘އŒ““ˆ‰‹…Œyš†’–Šu†Ž‹”‡x†‹†ƒ„€ŠŠŒ~„ŠŠ~‹ŠŒƒ’€Šš†ˆ‡zuކ†ˆŠƒ‰k€…Œ‹€…ŽŠy{ˆ–ЉŒŠ“k†ƒŒ‚Œ‹‡Šˆˆ™‰ˆ‰Š‚„‡ƒ‹‹ƒ…‰€‚†‚‰‰ƒˆ‡|‡”}–{‰€ŽŠ„€ˆ‡ƒ‚}ƒ‰Œv‡€ŽŽŒtŒˆ‡žƒˆ‰x‹‡‚ƒ‹{‘w‚‡‰‘‰ˆšƒ‘Š‹‡Žˆ–Š”„ƒ‰‰‰Š†ˆƒŒ‚Š‚“ƒ…„ˆŒ{…‹€‚‡Š‡‹ŒŒz|•Š…Š€…‚Œ“zŽ|„Šˆ…~z“ˆ~ƒ’Œ„‚‹††}ƒƒ†€{‰~…€~”€Œƒ€€Œ~uŒƒŒŽƒ‰wt‡~„Ї‚}ˆ‹~‡”ˆŠ„|‹tv€’‹{‹ŒsŠ‚‚†ƒ‡‘ƒssƒ„ˆŠ|‹Šw‹…•‰‚|Š„‡‹‡}”r•…‰ˆ}„Ž„‰Ž‚}Œ‚q}‰‰‚ˆ}~Ž~†…‰zy„Žy‰Žƒ…z†{–…‰”–Œ‚††„{ƒv‹ƒ†…zЇ€w{ŽyŠ…‹’„„ƒŒvŽ—…„‡„Œˆˆ‹ˆ‡„…‹qŒn€Šƒ‡‡’{‡‰“Ž~…‡–zˆ}„„z•‰ŠŒ‚…xƒy”‡‡…|}y{‡‹€xŒƒ~Ž„Œ†‡€ŽŒyŽ…Šw†{ˆ‚‰Š‘˜‘”~†‰“Œ˜†Š‡‰…‘€‚”…‹“‘ŒŠŽz}ƒ~z–‹Œ—Ї‰Œ{€‚€™vž‘}…‘’†‹ŠŠ~‹ŠŒ‹‡‚…•…‚‘‚ˆ‹ŽŽ†ˆ{ƒ‚|}‹„’ƒ…‚ƒ…ˆ‹‡‚“ˆ“†šƒŽŒ}‹Œ„†…Š“ƒ†…ˆ•…ކ…‡ƒ‹ŽzŒ’ˆŽ•‚Žˆ’ƒ‰š…‘’‹‘‚ЀІ’ƒƒpŽŽ‡††”„“‹Š’ˆŽ’Š›Œ‹q–‰‰ŒwŽxŠŒ‰›ˆ†„„‰~€‹†‹“ЄЉ†Œ•~„‹†™ŒŽ„Œ… ŠŒ€Œ‡‰‡‡‚Œ}‹„‹‡’Љ‡”…†Œˆ‰…††‚ˆƒ{ˆ‚‹Œ{Žv†„Œ~†’„}‚ŒŽƒƒ‡†‰‰…†‹ˆ‚wІ†‡ŒŠˆ‡‘‰€‰„‹ƒ~†“yy‰‹„ˆƒ‰‚‡‘—ƒ|‡’‰…‰Š‘‘†‹‹ˆŽ~}Œ…Ї„€Š…‰„ˆx‰‹„އ“ˆ…Žƒ’‰ƒ†‰Š‰„~‰•‹ˆ‹~‡†„‚„zŠ‚“Œ‚zy‹~…€‚Š…|‡‡‹†{…y~Љƒ…†‡Œ‰ˆ‰Ž“‘v…˜¨r}‚†h{{z„°|‘‡Ÿ‡†Ž€–gtsŽl„…p‰Äs€‘qŠ…e‘Dbtƒƒ†Š‰@‰“„›Y€qo lU¥œa˜ˆ™x§ ˆ‹Œw„†šŸl€‰trD~ŸnŽ”ˆ³y–ŸyŠ—„u—‹‰’†vy‡ªt…W|{|€qxŸ‹•›r‹‚“ƒˆwˆŠŒŒ‡yLŽsv¤uŸ«­G~ƒƒm„g‰¶ƒ”–f‰ƒ’…q…hg„ljµŸd–uœ˜g‹a˜œyy…“|~¢s€Ž…œdšŽ†}yˆn}£˜€ƒ}ŠŒvœx‘€‘Šyež˜§“†v{x‰ƒ…†€‰‡’‡ƒ‡Œƒ~…‹”Œ‹Š€~‰‰”‰‘~ƒ”’‚ˆ”Œ‹Œ—…Œ…Ž‹ˆ†‡ƒ€‡ŽŠ‚~އ“’‡‰‹‹€~†—}•”|†ˆ‡ˆ‰…ˆ™„…‰‰‡„”Œƒ‹‡ŠŠ’Ž‹’‹‰Š‡‰{’w‹‰‡‰„Œ‹‡Š’‹ˆ‡“‰—„”}‹„””‹ŽŠ†ˆŠ‚‹‰‰’‹Ž‹‡‹€‹…”}†”Œ•’€’ބޔŒ†˜‚ˆŒŠ‹‰{ŒƒŒ…Œ…Š…uŽ“‹€‰‚”…‰Œ‹‹ŒŒˆ‘‹‹ŽŠˆ‡Œt‹†“ˆŠw€ŠŒzu—„ƒ}”˜†ŒŠ†ˆ†Š†„”z~{{‚‹‰Šƒ‰’”Œƒœ…ˆ‹‹…‹•†‹‘𓋇‹€…vz’Љ|{„Ž‘†‰†|›•ˆ}‚‘{˜{…„‹wމ …’qŽŽ„’‘”ƒŠŠ„‘ˆ‰‰‚‡v„…yŽr†Žz†{‡}“‹Œ‘ƒŠ˜€ˆˆ˜|Š•{ˆ–Œ•‚ŠŒ’‘{y‡Œ˜•‡‡ŽŒ|ƒ”…›‹‡•“Ž˜‹‹†™{‹‚”‰”‰’…„—††ŽŒŽŒ’Š„n‹‚•†z’‘‡“‹ƒŒŒ‹‹‰“‡vŒŠˆyƒcŠž†††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‰“ŠŠŠ†ˆ‰€€€ˆ†ˆ“ŒŠ‰‹Œ}Ž’}‚’ˆ‹ˆˆ”ˆ˜…‡€…‰Š‰‚Œ~‡„}Œ€‚‹—†‘Š~‚‡“…ŠŽƒ„u†‹…„‹ˆŽ{†Š{މ‰‚ŽŒ…˜†r‹ƒƒˆ„Šˆ…’‹‚‹‹…‘†‰ƒ‰‚|Š’•‚†–„Š‹ˆŠ}ƒ–‹“ˆ†ƒŽ~‰ŠŠŽƒ‘•‰‡ŠŽ}Œ‚Šƒ‡}ƒ‰„Šv’ЇІ’ŽŒ…ˆƒ„”‘‹‘ƒ“†‰•…†}†‚•‹Ž‰~ƒŒ…‚†€†Žƒ‡„ˆƒ†‚ˆ‘†•‰އ‰ˆ†‹†‰‡‹Œ‡ˆ‰|€€‚‹„ŠŠx’”‡„p„Ž‹–—‘‡“ƒv”‚„ŒŠ’‰ƒ‹Œ††|’z}…ƒ‡Œ‡Š™†”‘•–Š’‰ˆ„Œ‹‰‘…ƒŠ†ŒŽz …˜–q„†Œ’}•’އ…„„‘ƒ€ŽŠ‚ŠŽ~Љ€†„Œ~~‹ƒtƒŒzƒ††•‹†„‡Ž…”~Žˆ‰†‰ˆ~Ž’Š~‰–‹Š’‡ŽŒ|ˆ‹”Š‹ŽšŒ”†Œˆ‰…Œ’‡‰“‹•‘™‰Œ˜–…ˆ‡‹ƒsހއ‰Š‘„‘ˆ•„‹‡Ž~Œ•†’~‡“ƒ„…£‡…„–~“Žr~ƒŒ‰“Š„~z’ˆ‰“Š{Œv†}…’’~~™”’…Š‚‘…Š‹œ…|‹Œ„†‡‰‰y€~r‰”‰•‰‹“ƒ‘’z’…ˆŠƒŠŽ„މ‰…‘Œ‘Œ„‰‹‰{“‰‘‰|oƒ”’x„‡’Šz‚tŽˆ…’‘Œ•†“‡‘‹’„‰‘†„|’Œ‡‘‰’‰‰ˆˆ‰†xƒ‹Œ‡’†…“„–œŒ‰‡”Š‹—ŒŠ“‰…„Œ€ƒ„‹ƒ’€†‹Š|‰‹’Ž”‡‡…ŒŒŽ‹†””‹ŠŠƒ‘Šmƒ—‰„„x“x…‰Š‘‰‚…zƒ›‚”‰ˆ–‡‘Ž”x–†‰‹‰‰wrŽ’‡}~‰Ž}”‹‹|u’†ˆˆ‚„ˆ‰~ˆ’‰‰‹yyƒˆ‹tz…‡ˆ~|q—z’ˆŠ~ŠŠˆ—ƒ‰‹‡Š‰Ž|™ˆw‚“†š›ŠvŒ|ˆŒt†‡‹”‰ƒrŒ’„ƒŽˆ„{œŒ˜™Ž’ГЇ’„“„†Šx‹™†Ž˜†„’Œ‰„މ‡‹Œ“‹‚‹‰‡Žšˆˆ‚“‹ˆ„Œƒ€Ž–„‹{‹‹˜ƒ‡„‹uŠ‹˜ˆ…–~’…Ž’‹Š™Š–€‰‡†‰j•‡ƒƒŽqŒ{†‹ƒˆ‡„†…‡‡†††…†††††…††††‡†††‡ƒ‡…††††……†‡††††††††‡„†…††††††…††††††††††„†…†††††††††‡††††…††‡††††††††††‡††††††‡††††††…††††††††††††††‡†††††††††††††††††††††‡†…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††ˆ††††††††††††††††††††††††††††††††††††††††††††‡†††††††††‡††††††††‡†††††††††††††††††††‡††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡~ƒ‹„ƒ‡‰‹Œ‹Œƒˆ††‡‘‡…‡Œ‰‹Œ„†Šˆ„„††ˆ„Œ‰‡‡Œƒ‚†…‰„‹†ˆ‰…‡…‰†††…ƒƒ€…‡‹„‹‰Š†‰…Š}…‰†ˆ„„Š„‚†‚‰‡‚ˆŽ‰‰ƒ†€ƒŠ€Š„Š„“‡Ž…Œˆƒ‰Š‰‚€‡~ˆŒ„‚‡‡‹wˆ{‹‹†Š“„„‰|„‹}‘”uƒ‚‰„u„|Їƒ‰‚‹…ŒƒŒ‚ƒŒ‰‡ŒƒŒ‡‰ŠŒ„‰ˆ…„Ї„‡‹x„‰~Šƒ‡‹…„†ƒ„‚†‰ŠˆŠy„†‹‡Š‰‹„‰„‡…•„‰‚‰€‚’}†…‡†‡‡†††††…†††……†††ˆ††…‰‡……††ˆ†„††„†††††…††‡„††††††††…†„†††‡††††…††††††††††††‡†††‡†††††††††††††ˆ†††…††ˆ††††††…†††††„†††„††††…†††††††ˆ†††††…††††‡††††††††††††††††††††††††††††††††††††††…††††††††††††…††††††††‡††…††††††††††††††††††††††††††††††††††††††††‡††††††…ƒ‡…‡…†‡†††‡†††…„†††ˆ††…‡†……††…†‡…†††††††‡††ˆ…†„††††††††„†††‡††††„†††††††††††…††††…††ˆ††††††††…†‡††††††‡††††††…†††††††††„††††††††††††††††††††††††††††…†‡†††††††††††‡†††††††††††††††††††††††††††††††††††††††††‡††††††††††‡††††††††††††††††††††††††††††††††…††††††•zŒŒ“’†Š‹Ž}‡Œ’†Ž‡|}Іޕ’„‹Ž’‘†‡„‘‡–…‹Š………Œ‹‡†|‹’†‰‰‚‡‰Šƒ‰‚†|„„“x“…Š”‰Š‹€‰‹Š‡†ƒŠˆ”ˆ€‰‹’‹‘™‰‹~‡w‚Šƒ‰w…‹†ˆ…ƒ‡„Љƒ“~Š’‰ˆ•‡’††ŽŒxŠ‹‰‹’„ކ€†Žˆ‡‚‡ˆƒŒ‘{ˆ‹‹–Œ‹˜‘’€Š”Š…€˜ŽŒ‹‹Ž‰Š€‚‰Œ~Œ‡—‡Ž…€†w”‘ˆ„ƒ”„‹‹’‘‰ˆŒ•ŠŠ•s™‰–ŽuŒŽŽ‹‹‰—lz‡ŽŠŒ{‡‰Ž„‡u}€‡…}k…€ŒŒ…uˆƒ„šŒs‡|‰}wŠ“‹†‰v‹‡||–~w’£ƒ„Šx~ˆ{‡‡…„ƒŒ’|‹„vvŽˆ~…‰|‰„€‘}x€ŠŠ‚†~‡zŽ”ŠŽ‘xtu”wn•†ƒŠx…z†‚€w‡z‹~‰Œ~†€…|}ƒ‚}…„…‹€{ЇŸ‚v†‹‚‚…‹‚‹‚‡|††™~ƒ„‡†…‰Žˆ‡Œx…‚‚€{~}Œ†~‰‚†}wzƒƒ†ˆz††ƒŽƒŒ†‚|€vˆ‚sŒ}„‰p{”‹‡ƒ‰ƒ~„ЉŒ•—ˆ‡‰’—”Œ—‡‘†v€ˆz…ˆ‹“š„ˆ…‚‰‚ŽŒƒ‡ƒŽ…‰Œ„€†–‡Ž‰‰–z‚€‘…‡„…†ˆŠ|ˆ‹‹Œ‡˜y†’i~ƒtŠ„ˆyƒ…‡“Œƒ’އ•ƒ‰Šƒ‘‡„‹‘‰u“Œˆ†‚„’š‡‘’†–Ž{ƒ†ŠŽ„–~Š…Œ“|ˆ‡iŽƒŽ€Œ–Ž‹qŽŽ”“‡—|ŠŽ‘•–‡†„‚‘ŸŒ€Ž™ˆ©ƒƒŒ•“Œ…¡‚|‘Ž‹zœ‰’‡†˜Š‹˜}Ž…‹“‘‡’Œ‰ž‰‚‚‡Žƒz‘}“…Ž•Š~†|‚–“˜‚–Š“n’‚…–ˆ‹Štk”~t‚‘’~š‚‘™by“Œ}‰ƒŽ†|ŠŒˆŽƒ~y…|’‡{…„Œ†…Š€’‹†€…ˆˆv€’|{†‡Œ‹‰“‚†‰}’€…€‘‹‘„ƒ†wŒ„ˆ†~ˆŠ†—wzŒ‹|Œ’o—“Ž””’‰~‰{‡–‚•Œ‰†‰‹ŠˆŽ“ˆ‘ƒ‡Š‘„†–Š{‘‰Ž‡|™‰…Ї‹’ŠŠ„Ž…zŒm„˜š–~•j†ŒŒŒy}•‰ˆ‚‰†”ˆ–„’†˜†”ˆ‹ršŠ”‘‘’tƒ€™‚‚~x|yƒ‘…‚ƒ„†{s‡†ˆ~•‰y†‹†ˆw˜’Š•~„‰•Ž“‚‡‘’‚‰…”†ƒ’”†‘‡ŠƒxwŠ€‹‡‹’‹”†ƒ‡ƒz’z¦”t†••……‘ŽŒŠŠ‰‰ŠŽ„ŒŽyŠ……•„‹†‹Œ†ˆŒv€†‹Š€‹‹‹Žvw{„€‰‰Š†‘™Ž‹š‰”„ƒ}‡ƒŽ„„‚‹‡˜„ˆŒ‰Š‡}Œ‰ˆz‹‹}ˆ’€‡’Œ‘–†Ž‘€‡”–‡†Š€‰…’}ƒ‚ŒŠ‡‚…n”‘€‡”„‹Š’’ƒŽ’Š…•‹””•˜s…™ˆŒ‡y”|Œ“†„Žq…}„Š¥‰…†‡…¡‹‘“˜ƒŒ|‹’‰Ž…‹‡–zƒ…ˆ‰”†ƒ—}‚Œ‰†ƒ……”ŠŒ”‡€Žˆwvˆ……~˜ƒ„…Œ‘¢Œ{”•ƒ‡tzމƒ}„„}“•ŽŽŽ{–‹…™|‡‰”ƒ‚•†”vŒ‹‘†˜’wŒ‚–„‡ƒ‰Ž†“u—‡‹‰~‡y|ˆ‹†’–Š—…‹Œ™ˆˆ“€Ž•…˜Žš“‹Ž˜‡—€•˜|‚u‘”‡ƒƒŽ”}“ŒŒˆ‹‘y–šŠ…Œ€y„‰…†›’…›€~•z‰…~‡™{‰Ž‘Œˆ’‰˜‘†Š‹~Љ“ˆ—Ž…Ž…“•„u~…Š„‹‡„…‰‹…‹u„Œ‰‡”š‹ƒ‹…Ž’}”‡ˆˆ‰…„‰‘†”ˆ‰‘p‰‚‰‹‚‡’–xpŠŽ‡Š‚•Š€™‹…}Šz‹“‘…Œ‚‹{•—Œ‹ˆ„š¥‰ƒ’ƒ}‘—„…‘…€“}‘‚‰x’†Ÿ––”Œ‰|’|Œ€ŽŠ’“o’„••„ˆ……Š“‘Ž‘ƒƒ‘“Ž¥‡ŠˆŠ•‹‘Ž“‚‹|•w’‚|Œ…šƒ“ˆ•ˆ›{¢ˆ“|–‘~‡„‰{{ŒŠŠ–Ž„ˆ¢~“„€{‰~„‹Ž†‹…„€y…‰‘Ž{•ˆxˆ‰…‘Š”~…™—‚ŠŠ…‡ˆ•‹‰Ž“…‘†ŽŒ{‰z‡|~‡ˆ‹•Š}‹‰ƒ–€{Ž{“’~‰’“…”ƒŠŠŒ‚Œˆ‡Ž”ˆŠ“‚‰•†„ŽƒŒ‹‘Žƒ‡t„y‘‡~ƒ‰Ž‰}‚ƒˆ’ŒŽŽŒ”‰‰‘‰˜‚Œ‰€Ž†……‹~ƒˆ“‹’’“‚‚Œ„|ŠŒŠ‡†•‘€‹“‘–‹„}ˆ™Š‹—”‹ŽŽŠ‹{ŽƒŒ‹„…r““‡~…”…‚’‡Š’†‹™‡”‘‘“‹p–Š”‘Š}“w”„”“„}Ž—”“Љˆz‘†ˆ‘‚ˆ‹~u‚Ž‘‰–’†‡’“’”‡‚’‰Ž…„Œˆƒ‰ŒŒ‘‡‡ˆ††~‰‰‡}Œ‰~Œ~‰‰{…˜‘v˜“€‰Š•Ž„ŠŠ‹‰‡ˆ”„„Ž„„ˆ•Œ~€ˆˆ‰yŽ{“ƒ†ƒ’u…t‹ŠyƒŠ„€‡~‘†††’„”…Œ”Šœ‹Ž‡–—’ŠŽ‚‡{€Œ‹ˆ‡‚„‰„Œ‘‘‚‰‘Œ•‘’”“‹€†’ŽŒ•ŽŠ‹‹“……†ˆ‹ˆvˆ“ŠˆˆŠ‡wŒƒ‚–„‹‘Š’ŽŒŽ†‰˜–‹‹‚s”‡Œ…sŒƒ‰ŒŠ˜‹‹‰™T‰Ž…z„e€’|Šˆv™N”ž‡†~‘‹‰Šq|q‡ƒŽ”‹€}ƒm†Žvˆ‚Ž„bkpŠ}d‹šg†ˆ€”ˆƒˆ‡‘ƒ”›–…‡Œ‹–††‚Œ‚n‹o†y”‡€šŠ‚„aˆ–“ˆ ’Œƒ……‚‰~pƒvbxˆ}‘€”’‘œˆŠƒŒw•‘–q™€˜ƒ€˜‹¨n’…Šl“Œzw‹€€u{ƒ„‡|{ƒ˜’† ˆ“ˆ‹w}|›Š–}Šƒ‚xŒ“~Œ›—†€‹…‚ˆ}‹€‚‘y£†’‹Žu|…ˆŠ˜qƒ…Ž|‘x‹{–Œƒvˆƒ‰ƒ†‡‡ˆ†€‰ˆ†…ˆ‡‡ˆ‡ƒ†ˆ‡‹Šˆ‡ƒ‰ˆ…ˆ‡‡…ˆ‡„‡†ƒ‡†„ƒ…‹‹„‡…ˆˆŒ‹ˆˆ{ˆˆ‚Š„€€‰…ƒ……|…„‡…Ž’ƒˆ€‰„…ˆ‰‚‰‡…‚ƒ‘…„ˆ„†‡‹†††„Ћކ€…†…ƒ…†ƒ‡ƒŠ„‡‰’ˆ~“‡†€Š‚ˆ‚ƒ’†ˆ‡}‹„y‰‰…Ї€…‰†Œ‡‰ˆŠ‡†‰‰‰ƒˆ‘„…‹†ŠŠ‡…‡‹‚„‰‹‡†ƒ†€Š‘…„„ˆŽ…ŽŒ…„…ƒ‚ˆ‰ˆ‹ˆƒ…‡„‹†‡‚‚Œ€‹ƒ…‰……~……„ˆ‹‡Žƒ‚‡Œ‡‚‚‹‰“އ‹Š†Š€•ˆˆ”{‹ŠyrŒŠv}ŠŒ‹€“…’ŒŽ‡~}ˆ€‚”‰‹xŽ‹‰ƒ‡u‡o|€|†˜†’„x™…‘‚z‰vŠ›w•Œ{…ŠƒšŽˆˆ™‰Œ†ˆ‘Ž˜€†’Ž’•tˆ…Š‹†‡uˆxŠ|‰„€–†q€•Ž‡ŽˆŠ{’ˆž”ˆŒs‹‹…‚Žƒ“œ†ƒŒŒ–Š”‰“ЇˆŒ’Šˆ’‰‘–‹–…‹†„‡’”ˆxކ‰ƒŠ…†„‘‡‚Šp†‰—ƒš‹t†Œ‹†ŽŒ‘‘‡ˆ‘‘…„q‹ŽŠ‡“‹v”zމ„’‚„„…’z‡€ˆ~‰Ž„‰„‚‘„€w‰‰‡‹ƒŒƒww}ŽŒŠ‰Œˆ‰„ž‹ˆ‡”€‡yv‰ŠˆˆŽ˜…‹‡~Œ‹ˆ•Іz„€‰ŽŠ‚”ˆˆ|zˆŠ‚Š…•‚Œ…‡€Ž}~‹‹ˆzš‹‚€‘’‹€n†Œ„‡‹ˆ—t}‹…w†‹‰‚Š‹Œ‰Š€ŒŒ~ŠŽ–ƒ‹”z}…w|Šƒ„‡ŒŠ‡|{……{„‡†ˆ‘’„‹t”{††ˆˆ‚†‹……}ƒƒ‰uŒp…y‘~‰†“’…„„ŒŒ‰’–~‡}Œ‚ŽŒƒ‰|‰y}„–‰~†‚‹yy‚x††††……†††††‡†††‡††…††††‡†‡†…†††††††††††††††††…††††††††††…†††…††††‡††††††††††††††††‡†††††††††††…††††…††††††††††††††††…†††…††††…†††††††‡†††††††††††††‡†…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††ŠŽ{s€Š—…{Œzˆ‚€’ƒ‚††„oˆ„‡Ž€„„‚p€‡|Ž‹‚Ž|wƒ}yŒ‰…ˆ††ƒxŽ…††’€„‡‰‚ƒŽ}Š“‡€‹‚v†‹‚y…‰…‰~ƒƒˆŠƒ‰|‹‚‘€„„wŠ†Žƒ{‰„ƒŠs}€‚„‡‰w‚‡Ž„€„ˆ†}—‚ˆsŒ‹|‡‹ƒˆ††…”‘…‡…z…‹…އ‰Ž‚‡|}…Œ…ƒ‡“ƒŒ~†x†€”ˆ…Œ„}ˆ†‘І‚€}…ƒ‹‡ƒƒ‚Œ„„€}‰|x‰ƒ’‹ƒŠ{†ŠŒ„{{ˆŠŽwˆˆw”}y{…‹”€d‚…|‰‹n†‡Ž”‹|‹m‹xŒ‰›€ŠŸv‹•xƒ“‹ƒ~}šw’…˜ƒƒ††…~t€ˆwd}Ž“€‰‚–¤‘‹…‡uމŒŠŽ„ˆ}އxˆˆ‚†}{¥v€|ƒ‰¢Œ¶~……‹‡~†ŒŽ—€|އ{„xƒ‘Œv~¢Ž~vƒe€ƒ|x‹Ž‡y𔋅}w|wƒun€vªxq‡‹v|}{iŽ}€‰„ˆ©Œ‡Šƒ€‚’kÒ‹~…rŠ„{“}ˆs–€†y‰~}Šˆ‡‚oŒ|‚€“—~…ˆ—œ‹’{tˆ{‹‹€šž›‘‚‡”xp”‡ƒ€ˆx‹ƒ‰—yˆŠ‡•””„ІІ‰‰ƒ’‹„Š„…„‹’„Œ†|x”Љ|…Š—Šƒˆ}i‚|Š„}Ї”‹“Ž“ˆ–‹’wƒ”އ‚|Š„‚‡††“‚Š‹‹•ƒˆ‚‡‹yЇ‹|ƒ“ŠqŠŒšŒ‘””w‡‹Œ‚•ƒ|†…ˆ…ƒˆ‘|•“‰‡‡„І”y|„‹’‰ŠŽ–Ž~Œ„Ž‹†‘’ŒŒŠ—ƒ}‰‹Ž•x~ƒ‡Š”—’އ‰Š–|†ˆ†‰w”“ƒ‰ƒ„†‹‰Š’ŽŽˆ–…‘|ƒŒŽ~ŽŠ‡•†•—xƒ†ŽƒŠˆƒ‡ŒŒw‰‰‰†Œ„‰Š‰€„‰†‰‘ˆŽ…ƒ“ˆ‹‡ŒŠ‡‹„~„’‰Œ†Š‹…‚‡ˆŽtƒ…z}}†ŒˆˆŒ„Šƒ„††…‹‡ˆƒ‡“…‚ƒ„}‡~…Ž‚Šˆ‹†‰‡…„p…„Œ„–‡‚€ŒŒ„€†ŽŒ{…ƒŒ‘€‰„…‰y‹Šo’„……‚‹™‹ƒ†‡€„‰z“Š—yz‡ŠŒˆŠŠ‘—€‘‡Š‰‰ˆ–ŽŽ|–~…„„ˆŽ†ŠƒŠ†ˆ|€~Ž’~„•‚–…†~ƒ…ƒŠ—„„x…‚‰Š‰ˆ{„Œ„‡} ˆƒˆ‡‡š€•‹‚‰’ˆ•Œ‰‹†xŠŠŠˆ‡‹…|~ŒŽ~ŠƒŠ”Š†x‚“†’‚‡„Œ‚ˆˆ‚ˆ‡‚ƒ”ˆ€„†”‘…†‚ˆŠ…‚”v”’|€ƒ‘ŠˆŒ‰ŽŠ‡Œ‡„‰Š„–‰{ƒ“ˆŽ‹‘Šˆ~‰|…~|Žz†ŽŠ•‰„…z‰‹€‡–“„š…Ž™…ƒŽ‡–’”‡Ž†‡…}“ŒŒ‰‰Ž‡Œ‡ƒ‘†Š‚‘{†Š•‹•“ˆ‹{•ŒŠ„•‰‡~‘‡‡†‹zޅއˆƒ’†tŽƒˆ…ƒ•ƒ††ŒŽ†Œ—Œ‘…І‡†w‹ƒ–†‹p’{…’‰ˆ~}Š“Œ„„‰Œ„x“‡‡•‰Œ…zzƒ‘Žz€‹Ž•~ž–Š…€Ž‘‰Œ‰“Š…Š‹‚‘…Žƒ‚Œ‘‰Œ…‡‡ŽŒ‹x‡‹Š‡“{ƒ‚Žy–…€‡‡‰Š‡’Œƒ‡‡€•ˆŒ†€x“ˆ€˜’‚€‚{‹zޅއƒ…‹‡{|Œ‰‹…“Œˆ‘‘ƒ—ŒŒŠ‡Œˆ„Š’Žˆ‹•ŽŽŠ„‡……‡Œ†”†…“Ž}‡‘‡‡–‹‹––Іˆ†Ž…‚‰vƒ€‹‰‰’„y‰‰‹‡†ƒ’“ŒŒˆŠŽ‰’‰ŠŠ‚‹Œt‘‡–Œ‹tŠ}‡Ž„ƒ‰…†{‡‰Œ„s‡‹ƒ˜ˆ‘‘‘Š„•‰Š‹’”Œ’•‘Œ‚–xˆz‚ƒ€sŽ|{Œ|‡‰—‰ŒŠ‹…’‹”…Žƒ‚}|‡h‹‘¡‹˜qˆ““„‘~‰‹‘…Œ~€†„}“Œ}”–‹‹“ŽŽ€ŠŠ‘ƒ|ˆ‘u…Ž‹ƒ„›„‡‚“‚ˆ‚ˆ’‘‹‹Ÿ“‡–ˆ‡‡‚Ž–g ž{„…‰–‰…†‡™‘…Ž•‰‘˜ŽŽ“‚‹w‰”•‰¥†Š‰ˆƒ•ˆ‹†ƒy““”‚‹{•w‚Š“r‡„“‘—‰…“£“ƒ€‚|”…‰sŽŒŠ‰‹‡}ˆ‹u~‹’‡€’ƒ‹}~ˆŒ†{yŒˆ‹‡ŽŠ‡‹‚…‘„…}Œƒ‡–…Š„–„ƒ„…Š‚v…ˆˆ‡Œ„„ˆ„‡‚”€‚’ƒu‹Šq{…„€’ƒƒ|„Œ~Œ€€ˆŒ…”ŽŒ~Œ’‡y‰x|’„y|‚ˆŽƒ…€„‘}‡xu‡Š‘’Œ…Š‹xv‰~Ž€ŽŒ”‹‚|•…“Ž|ŽŠŠ†Œ‘ŽŽ“Š|Ž•ˆ†ƒ…ˆˆ‘„„“~‚}Žˆ‚Š‚‘r~†~‹ƒ‘€‚‰…ˆ’‡~‚‹‚ŒŒ•ŒƒŒp‚‰‹Ž€’s„…ˆŒˆ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†ŽwŒ‡’ƒ‰ŽŒr†ˆ’‡Œƒz|ŠŠƒzŽŒ–•y“•šz‰‹Œˆ‰‰Œ…Еޑ‰z„‹ƒ‡}•‹ˆ’‡tŽŒ€†”~}t—už•|‹Œ~ˆ‰“€Œ‘„Їˆ’~Š…Œ‹ŒŒ…}”ˆ’•ˆ„…zƒ…’…†–z‰…ŠŠ†ƒ„’ŠŒ“—‚’€Œ‡„‚Š„‰‡††Š„Š…Œ‹x…‹}Ž“‹ƒ—–†|‰”‡ˆ‘‰‚“—“Œ‹‡Ž†„Ž}ˆƒ…ŠŒ……ŒtŠŠ‰„‰‰“Œ‘Œ‰‹‘ŠŒ–„ކ›ŽŒ•qŠ“„Œt‹zˆ‡†Š‰ƒ€‰•—†ƒŒ€‹Œ€y………–‰‰‰†wuމ‡~ˆ†’‘†€Œ†m{“‹…”ŽŽ‚‚„“‡…w{†Š†Œ€ˆ~‰‰†‡†ˆ}Š~xsœ•|‰‡‹ˆ†‡…‰ŒŽˆƒ‘‹„ŽŠ’ŠŒ‰”‚Œƒ†’yƒ‚‡Œ~††ŠˆˆƒyŠ‹‰“}Š†Ž–Žœ†‘‚€Ž„І…†‘“‹Ž‹……ƒ“ƒ~’‹Š…Œˆ…Œ”‹Œ‘“ƒ„ދЇ”‰†”‰†‚~‚Œ„‹‰Œ‹~ˆqŽŒŠ„‡‘…‡‹Œ‹‡‹‹•‡’†Ž”p’’‡Ž‰wŒ’І•ˆ”‚‡–•„ƒ”~††x–…‹…€~x„Š|ƒ|tІЄzˆ~†ˆŽŠƒ•„~Š}x}—‘€‹r„}ˆ‹„ˆwr€”‘ŠƒŠˆ‹wwŽz…‹~‰Œ…†“{€~˜y„ˆ„zˆ‰‹‚~ކ|~”|s‚‹~{ŒŒ‹~ˆ†yŒ€Œt‹…Œ„{”Šu‰˜‘†ƒ~{~}‡Ž‚‚‡~ˆƒ…€~~~€Žˆ„“ŠŠƒ†vŽt‰”~‹ƒŠ|‚‡ƒvŒ…‹~ƒjŽ”~ˆ†‹ˆ„‚…†Š…~Š~‡y‹~™Š‹‡xy‡|ˆƒyy}€v”‹‘u…€‡€ƒ††ˆŠ†ˆ‰ƒxˆ‡…‰ƒŒ„ˆ‡„Šˆ………ƒˆŠ…‰}‚‡ƒ‹†ƒ†‡„‹‰ƒ‹†…Š„‡†‚†|‰ƒ‰‡zƒ‡††„‰Œ‚ƒ‡…ˆ‡…–…~ˆŠ…†‡}zŒ†}††ƒ‚‡‡ˆˆ‡ƒ‡‡‡”‚‹ˆ‹“‰‚‹Ž…‡Š‡Š…‹…ƒŒŠ‹„‚‡…ˆ‡“‰€‰‡‚„ˆ„ˆŠŒƒ€‚Šw„‹‚Љ‹„‰€‹…€v€ƒ†‹‡ŠŠˆ‹~‡€†ˆ‰‡‰…‘ˆ{‰‘…‡…‰Œƒ€~‡‡ˆ‹‹ˆ‡‘…‹ƒˆ}€‹ƒŒƒ„†ˆ|ŠŒ‡†Ž~†ˆŒŽ~†‰‡‚Œ‘†††…†††††††‡†††‡††‡††††…‡†††††‡†…††…†††††††††…†‡†††††††††††††††††††…†††††††††††††††††…††††††††††…††‡†††‡††††††††††††…†††…††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‹|‚Š’†„‚††Œr‘~Š€‰‡„q…“ƒ‰Ž‹ˆ‰…ŒŠ†z‡†‰‹‹‹Œ}‡ˆ}„|y†’„‡~‹Œt”ˆ‰wŠ€€ƒŒ‚–†u–‹‚{‰ŒyŠ€•ˆ{‡—‰˜‹‚…‘€“†}“vŠ‹|†Š‰‘}‡vŠ‹‘Œˆy’ˆˆ‘“‘‰}u—…§‹‹Š‡‹“†‡Š†”‰–†‚˜‡…‚‰‘†’ŠŒ”‹†„™‡}‘}Ž…•„Œ”‹ŒŒ„Œ’‹vŽn†‹ƒ„†”ƒ‰ƒ’Š‡Šˆ††‡Œ•ˆ”‡}wˆˆ‰‘‰Œwˆ†ŽŽ€…“u‘’“ˆ‡ƒz†Ž‡…‘‚ƒ„}|‚‹Œ–x‡‹†–ƒŒ~’zx‡~y‡Œ‘‹‹Ž‡€†}‡y}—ŽŒt“‰vŒ’’‰‹’…|†{ˆ†~‰…‡~‰€‡†‰„„†…‘…|”ƒ†u˜•’’‚Žuz{€}‡…ƒ„‰ƒˆ‚„}€Ž‚‹ˆ’‰u”އ‚„Š|uyŠŒ€|𖆂‡€‰{€‚Žw~vŽŠ‚–ЂБu‰™ŽŽ’ƒŒ„“¡Žz‚‡ƒ~€|‰–މ‘‚‹Žˆ~ŒŽŠŽ‡…€{€†Œ“€‡~„Œ}{’Š˜w€~…™Ž¡…L‘Œ•Ž‹‡‡v…Ž~ž…ˆ}dˆ‰Œ‹£r~‹‡‚tœ¯†xž¬q‡Ÿ¦yƒ‹Œtk‘–„˜pr“w˜~’ †~Š“š•ž•Œ„•„mŽ“ŽŽ…–šŒop†~Šƒ‚Š…„Œœ~  —€y‘‚„{Œ“”†‚„Ž’Ž‚•Ž~›¡Œ|–‰€šq’r˜‰†Œ…˜yu‰‹j”_†£‘‘–—€vukœ¨‡Žª™¢‹‘”¡£mˆ‘z“{…xyŒŠ©—‰‹rx€‘”˜Š†–€‡‰’v‚¡”}‰ˆyŽ•£†‡”Œ…~w‚І…‘”~u›ƒx—‘~‘˜†„…ƒˆƒ€…‰‡„Š‹††‡‰‰ƒ„‘…‡‰‚…‹„„}…{‚…Œˆ„…Œ…y‹‹‹~‚Œ‡Š‡Œ„Œ…Œ…‰†‚ˆ…}y‚’€ƒ‚‡‡Š…‡‹‹ƒ{„‰†‚‘†ƒ‹Œ€…‚…‚…‡‡…ˆ††ˆƒ‚€„‹}‹‚‹•Š…†“Š‚ˆ‡}•Šˆ‚€~‰Œ{‰ˆ‡”…„‰’†y’„‘„ˆƒi„ƒ……{††•‡‚Œ‚r˜xƒ…„p†•‚Šwz‰}Œ‰‚­‚x|oŠ…}–Œ•z†‚‰„–€ƒŒ}—„ˆ‹Ž€yz„…‰€…‹t‡‰y†…‚|‰“†Œ„—„{‡Š‡yŽ„‰|Š{†ˆ|‹€ˆŠ‘•ˆ†Š…†Šv‰‚‹†Œt„‹‰Š‚‡—‰‡‡“‰‹„ˆ˜ƒ’‡{‡‡˜–€Ž˜‡†ŽŒ¢€ˆŽ„‹‚‰‹r|xŒw†›”Žu…ˆ~ˆ‡“†­”Šˆˆ’—‚‡•‡…‘ˆ‹}†Œ†ŒŽ{›Š“—Œ•zІ}“‚Š‘‡ˆ„”w…›‹“|‡ŽŸ„y€Œ…‰‘‰ƒˆŠŠ”ŽŒ†„Ž’‚‘Œ|‘Š€”Œ““Œ‘Œˆ‡n…ž€‡zŽŽ‹”…‘“€‰…†‹ƒŒ|‰Š€‹™€†“|„ „‰—‡yЉ‰ˆ‰Ž€‹‡ŠŒˆ‡‹ŒŠŽƒ†Ž—Œ‡‡ƒ‹‰ƒ‰‰Œ†Ž‹…ˆ…ˆˆŠŠŠ{|„††ˆ—…‰‹‹–€ˆ„‹…†‡ˆ{ƒz~ŒŒ‹›ˆo‡•„{‰‘Ž}€†‹“‚Ž‹€ƒ‘…ŠŒƒƒ†€‘”{‚„„’’˜‰~‡„ƒ—ޅЉЉ”‡œ†ŠƒŒŒŠ“™~–‰“ƒ‘ˆ’†‰‰‹ŒŠ“Œˆ…–ŠŠœŽ€†™“”‘‹‡’ކ…•‡ˆŒŽ”ˆ‹†ˆŽ„”‚‘|“~„Š~xŒƒ|–Œ†ˆŠŒ}…‡|Œ‘ˆ…”Ž„“‚‰‡†„}‹Š‡–†Š‚Š“ˆ‰Šƒ“Š‹…ˆ†‰‚‰†‹†šŒŽ€‘w}ƒ€‡‰—…ˆ–”ŠŒ‚Œ†ƒŒ‡†€„‰Ž„Ÿ‹’u|Ž‹‚‡zŠ‹‰†‚„‚€‹~z†ˆ™Œƒ‰“Œ‡€‘Œy‚ŒŠˆ‘…t“ƒ‹—‹€‹ƒŒŒ’„™|‘“‡‡Ž‰vŠ‘…•ƒ•…„—‹‹Ž…•†—‹—‘Š”š†“•“‰‘…ƒ‰’“‰Œ„‘”ˆ€‡‹“Ž€Œ˜|…Ž˜{‹ƒ‘†~†‘†{—‰‘ƒ…—}ŒŽ€•ƒ‚ˆŽŽƒŒ—†ˆu‰…†ƒŽ‹ˆˆ‰z†‘…u’Ž‘¢‡tˆ§‹ŒŒ€™‡‡„sŒ~Љ}Âzq‚|”z”„|”‘Œ€‡†Œq{Œ}…“•a~^„€ž—q™–~‰ˆp¢ˆ‹~‡oz‡‚z–ˆŠ’q¦”Ž‹ ˜’”“s‰‰|›ƒƒ}˜‹w‹•šp‹‡u“‡i‰—{”€†Žvˆ›‹…y‰ƒq€•~˜”}†™‘¯ms…ˆ~“|¢Ž’†“‹–𒆮ƒŒ‡]”ˆ˜ƒ~yt‹–‡„¢–ƒ{‡x‰p|hy–‹‚nšj‚–|~‘‰~šŠ‚Šq˜“`“‰‚‘|£†…‡‡ˆ…†††‡†…††††„†††‡…†…‡……‡‡„†ˆ…†††††††‡††‡††‚†…†††……†„††…‡†††…‚†…†††††††††‡‡†††…††‡†††††††‡…†…†††…†‡…‡†††††…†††††††††……†††„†††††††…††††††…††††††††„†††††††††††††‡†††††††††…†††††††††‡…†††††††††††††††††††††††††††††††‡†††††††††††…‡†††††††††††…‡†††…††…††††††Š–‚„‰ƒˆƒ~‘Ž‹‰—’’‘ŒŒŠ’‚Œ‰‹Žˆ™‹’’”ƒŠuŒ~‰ŽŠ}…z“{„’~…ˆ‹Š‹ŒwŒ„ˆ‹ƒ…{ˆj„Ž‹ƒ ’™u˜—…Œ‹}‹ƒ‡ŠƒŠƒ”Švˆ–’–Œƒ‚Œ|x’”{ƒ…Œ‡ˆœ†‰‹…Œ“„‡}’ŒŽŒ‰ž€ŽŠŒŠ—‰”‰‚ˆ•~‡‘}‰‡x„ˆ”‡ˆ‚~І•‚ŒŒ–Œ‹‰•ŠŒŒ—‡~Œ‰‘‹”Ž‹ˆ‹ˆ†‡Œ~‹€Ž{‘‹›qƒ‹}~„‡—”“Ž—ˆ‰‚ƒƒŽz‰‹’ޖމ’–ƒŠŒ~‡‹†…’x’…‹“‘Œ€€„ŠŠƒŽ‡Š‹ˆ‡…ŠŒˆŒ…~xŒˆŠ˜Œ…Дމ•Œ‡††…”Œ†Š…ˆ‹‘“‰™~“‹Œnƒ…‚€y‘‘Œ|~‰‚ˆ‡‘‹Œƒ‡‡€Š…‰”‰~–…„u}Œ˜Œ…”–}ƒ†€˜ƒzŠ…ˆˆ‡•†ˆƒ„“Ž€•ˆ”yw„Š˜‚†…ˆ˜…“u•Œƒ‰ˆ›‚Œ•‹‹ˆ‘‰„•‡ƒ‰“”¤’Œ–”‡Ž†‚Œ„˜ˆŽ|‡„™€†ˆ„‚’€’p—‚›Ž‡ˆ ƒ‹ƒŒŒ‡ˆŒ”ˆ‰œ}†‹ˆˆ{…„›“ˆ•„‘‡yzІ‡˜‘x‹Œ††——‚Œ•“•ƒz‡‰—ˆ‘ˆ‡‰Ž‰Š~€‰z‚Œ‚Œ‡‡ŠŒ„†ƒƒ€{~‡v––‚‡ˆŠ|Š‹‚’‡‹ŒŠ€’‰||І’ƒ“~–‚…’uƒƒ’{‡Œ‹„‡z“…Œ…‹’vމ‹–—„Œ‡„ˆ…Žx“€‘„Ž–‘‡…~†…„„ŒŠ‰‘Єޖ‘‡–Ž‹˜†‚‘‰’’’„„‚ˆƒŒ|†…†‡{„v‘†‡{…—Ž}ŽŠ‰‹Ž“Œ‹Ž•Žp“•‹‘‡Š|‰‰ˆŽ‰Šƒvˆ{ˆ‡…†‡ˆŽ•œŒˆ‘‹”•}|{’‰‡Š‘Ž„‰‰†ŠŽ—ƒ‹‹‹sx‡„‘‘}…—‹‹ˆ‹Œw‹‹v‚†‰€Š“‡’ˆ‘‘˜ˆ“•{|‰•‹{ˆˆ’Œƒ‡ˆ‡†‡Œ‰Šx‘ˆ„Љ…‹”Š|†”ˆŒy‰—Œ›{™y’’{—„…‰Š‰“‘•‰Š‰†ƒ~‘‘‚’”†|‹‹‹‡…‰™“Ž‹‘‰‡•БЄ‹…šŒ˜ŽŒ„„‰‰Š„„ˆ‚Š‚}•z…˜ˆ‡‰‚…ˆŒ•‰„‘„ŒŒŽŠ~‘‰•‰~Š“–ŽŒ‰„›Ž‰ƒ˜…Ž…†ˆ—‡{w‡ŽˆŠ‹ˆ…‘„~€†‹˜ƒ„„‰ŠŽ‡‹Ž‰•}ˆ…ЇБ‹Œˆ€ƒƒƒŸ£Œ™w’ƒ“ˆ…–Ž„–„z•†}І|Œ€‰‚ƒ‹ŠŽ†‡€ƒ‹ˆ‡}‹‹…‚u~z“žŒ„Šx}Œ}…€€ˆ‡‡‚††‡„ˆ‰‡‡Ž}”†€†‰†Œ„~ކ¡ƒŒ’|•“}††„~Ž“~|‚ƒ‚{ŒŽ„Ÿ‰Œ‹‰zŠšŠ‡ŽƒŒŽ˜‘…~Š…™€€ˆ†zŒŠ‰‹‡•…vy†}‡Œ”‹ˆŒ„„}ƒ‹„“ƒ††…‡‚”†—wŽs€}•„ŠŠƒ{ƒ“‘ˆ„’Š‹s‡‡Š‹‘ŠuvŠ’}ƒ‰™“–‰’‘„ty“Ž‹ƒ‹~ˆ‹†ˆ”‘Ž‹ˆ…x„‰ƒ|ˆ‹‡Š‚„Š‚ƒ’}~y‘r•’ˆ‚‰Š‹ŠŠ„Ž…‡’Š„‰…€“†Ž€–“…~…{ƒƒ‰€ˆŒ‰“z‰‰Šy†”ŠŒ’–ˆ’††‰Ž€‰‹ŒŠ…Š‹Œ‡Œ‡Ž†„‹†‰‚Ž’‹‰Œ™…‡‘‹‡…ƒ”Œ…Š’ŽŠ‘Š€…‹Œvˆ‰’Œˆˆ€’rˆ‰Šƒ–†Œ‰Œ‰‘ˆŽ…’…”‘ŠŒp””‡Žu‰‡Ž‰‚ŽŒˆˆˆ‹‚…„‡„}ƒŒˆƒ‰‡„‡„ƒ„‚‰‡„…’„…‡ˆ†€‡‹‡†€„ŠŠ„‰„†Š’„ƒ‹‡…ƒ…}|ƒ…‚‡†‰„‹Š‰„‡‡‚‘„…ˆ‹‡ˆ…†‡‡…†ƒ‹‹‰‡ƒ…ƒŒŒ…~‰„ƒ…„ŒŠ‡„…„‰‡‹…„………‚‡…‰‚‰‹‡Š‚Ž†ŽŠ„†‰…~ˆŒ‡˜„ˆ†~‚†††Œ{ƒƒŽ‰y‡…‚y†ƒ‹„ƒ‡ˆ…††‰{‡†ƒ‡†ŠˆŒˆ€ˆ‡†Š……‡‡„Ž~†ˆ€Œ’„…‚ŒŒƒ…‹††…†Š‡Žƒ†Œ†Š‹ˆ†‹ˆ†€„ˆˆ‡ˆ‡‹‡Ž‡’ŠŠŽ”{š„‰‘‘„ˆ}~‘‘Š’€•‰–ŒŽ‘”„‘‰†‰‡‹Š{‰ŠƒŽ‡|‹‹ˆ‰qƒ…ŽŽ{„}|ˆ‘†“‚”‡‚Ž‹ˆˆzŠ…‹ŠŒ‹„‘zˆ‚ˆ‰ Œ}ˆvs‰z‡‹„‹~Š‚ˆ‘Šˆ’‡w–’’ޓІ‘‹ŽŒ…ƒ‹ƒ“–„’„„ЉЇБŒˆ‡’„ˆ‹Ž…™†‰…“‹ŠŠ„‰ˆŒ†‹w‹”‚ˆŠŒ‰y‹‹ˆ†‡ƒ•†‰Ž‘Š‘’‹‘†‚‰r‘ކ“‘ŽpŒv‡Ž„ŒŠ~Šv•ˆ‹“—†€‡ƒ™ƒ‚…~ˆ¶†}–ˆ“{~o“|ˆ~Œ†}“…ƒ†“Œ •€„‰‚Œ‡‡‹‰…‡{||˜xŸ~f‰£Œu„‰‹…‹˜uj‡‘}ˆ‰‚••€‚•„~€“{~{‡Š~€Œ„‚§‰s”…—„…Œˆ‰~‡Šx‹w’ƒ£™}‘lŠ‹†‹€ˆšqzr‡‰ƒwˆg„‡u‰Ž™“}f”†‹„‡‡zЉˆ‡{€‡s—~w„††‘v‹‘†€’}¤‚yŠŽ›}†ˆžŠŒwˆs‹x}†•„‰„ƒrˆ”‡‡y„Ÿ‰ˆu‘xˆ„“{u„—‡€‚~…‰‘‚‡„|‡€n‡‰Œ…‹„‚z…†–Ž…†‰w†‚€І‡‚z’€y}Ї…{ˆ‹„ˆ„†…‡‰w‰‡|wƒ‡ty€Š‹‡}’~Œ‘…Ї‰vŠ€Œ†ˆŒƒ†„Œ‰ކˆ‹ˆ‚z~…p|‚…ƒu„‹…{‰ˆ~‰Šzs‘Š…’ŒƒŠ‡‹„v„‰€Œˆ‡s——}~…†w…Œ„ŒŽ„}„ŒŠ{‰—ŠŽ‡Œƒ„‹Žƒˆxˆ€‰ˆŠ„~ˆ{Š…}†‰Š‚|~…ˆ€Š„ˆŽ~…|Šˆ‹ƒ|}|w‰‚‚Šƒ‰tŽ“‚…‰€‚{ˆ~€zŒ‘„ކЇƒrŒ…ˆ–†’†~ˆ‹Š†~’~‹‡”•‡…ˆ‰…’™ŒŽ†ˆŽŠ‘„ˆ„y†Œˆ‚ˆ…ˆ‹}†‹„‡†x~•|˜“wŽŽ‚†‰ˆ†ŽŠ‡‹†Šƒ”‡Š“ˆŒŽ‚’…‹€“ŽŠ…z…†Š}Œ„‹Š{ƒŠ‹†‰„‰’ˆŽ—Š™ˆŽ„~Œ‘ƒ…†‡‘ƒ‰‘‡‡ŠŠ…†„}‡‹‚Œ˜Ž†ˆ‚Ž–‰…‹“ˆ‘†‹‰Žƒˆ†Š‹‡ƒ†rŽ…†‡€˜ˆŽŠ‹•…‰ˆ’’–ŠŒqŠ”‰Žƒ‹xŽŽŠŒ{Љ€Ž{ކ‚†”Œ“„‹”Ž‚€‰ŒŽ„|‘€˜w—‘’„ŠŠŽŽ‹–‰ŒŒ‹Œ†Ž‹‹{~Š‹…v|‰‰Ž‘€ŽˆŽz…“~Œ“€Š…‡Šˆ‰…€‰—z~ˆŠ„‹•…Œzˆ~}„“•‘Žš’„{…~€€‘x‡ŽŽ‰…‡ˆŠ’‰ŠŠ†€ŽŽ“ŠŽ’‚‡Ž‹‹‰…‡†–™‰‡–‡•ƒŽŒ„ƒ“}‡“‹™|‰ˆ“‚—€†‡—І‚‹‹~‰…‹x’“‚’І‰s’„Š€–Љ…’‰Š•Œ“ŒŒ“ˆ€”qŽ’˜’•wŽ|Ž“€†††††‡†††††…†††…††††††††††…†††…†…††††††††††††††…†††††††††‡†††††††…††††††††‡…†††‡††‡†††…†††‡††††…†††††††…††††††††‡†…†‡†††††‡††‡††††††‡††††††††††…††††…††††††††††††…†††††…†††††††††††††††…††‡†…‡††††…††††††††††††††††††††…††…†††††††††††‡†…†‡‡†††††††…†††††††††…††ˆ}ƒ…y‘|Œwƒ{ªu£‹›Œ‡•††u”‘~Ž„y•‹Œ†•os–†„˜„Ž~…€‹‘€xœ‡‘‹–¯–‰v…•Š‚‘}’œŠƒ†Œ‘Љ‹|ˆ‹„|‚€y…l¬†y–m’‹uy|–‰~{s¤~g~«”‹Œ…eˆ„~—žŒo}†ˆ “Šg£‚ŠˆŽ‹{¥‚Žrª“ƒ‡^“‚ƒr™ƒ—œ—‘€¥Œ}›•yƒ…enš’ny‹µ£Ž®“Œ‡|†‚—™›«„†„†““”†ˆ”‘}š„†~‘¤˜|ŽŒ†‹Œ‰š¦r|‚ˆt‘¦}qu“€‰rnŽ{zŽ’wˆ‰€}„ˆ†‡“‚‡€‚„|w“ˆ„‹ƒŽ†‚s}†ƒy…€~‡‰Š‚‰Šƒ~Œu{ЉƒŠ„Ї‡‚‡ƒŽ‹~‰‚ˆ}ˆ†•‚†x…ˆƒ‰‹z‰Š€„uŽŠ…ƒŒ{Œƒ‡‚މ†‡‡Šx‹ˆ‚‰‚‡ƒyŒ‰‚†{…„ˆ‚‹Š‡}€‹‰…‡€ƒ‰ŒŒ‚€‰ŽˆxŒ†“Œ‡•ƒˆ~…m…ދމ…’ƒ…‡„{Š{†Žˆ…|~‰Š“ˆ„…„†€†r„€€†–‰‡‰‡‚†€‚‰‹‰‚„‹z„ƒ…~ƒ‡ŒŽ†Œx}†Ž†„x“Š‹zЂЇ†’z[‘{…‡†“‚~‡–‘…‹Œ†‹‰ƒ—“‚……{’šŠŠ„”Ÿbž‡‚§ƒ”|~q‰}{‘”—‡z¨w‰‡Š]žˆ„y‰HŠwމroœŽz|›q”œ•ašt~š|ˆ]œ{~‡‚Ž“‘—¢†„‡Š|•¥ƒwrwƒ¨‰˜‹’—Ÿ¡’xŒŽ~‹‹„~q†‘‘˜wƒ¥ŸŽˆ“~sm‰…‰…ˆœ‘‰Ž™‘…¢t„“„ˆ•’‚žzƒy”€–‰‰†‰zž‘„—~…”–ˆ€ž™}|†¡•†‰ƒ ƒš}›|‘„’“x‘‰x£{yŒ›t‹~‚p†Œ‡Š–Œ’|†uˆ‹Žzx}„v‹upˆˆ‡„‚us…Ž}‹y‰{ƒ‰sƒ—ƒ~q‘|zq†–pŠ‚Œ‡‘Ž„Ž~Š„uy…€‰’€…†xp‹Œ‹ŒŒ‘ˆŠv˜q‡ƒ—|’ŽƒŽ‹…Œx„€ƒ‚z‹vy|ˆ‚€z~ƒ…wu–‘‚{›{ŠŽxˆ‹}˜’}Ž‹‚{~{S‹‡x˜žœ}m‰}‹s€ƒ„‘І‚~Œ‹€ˆ{y•–†{‘‡‹‡•q†u†z€‚v…”“v™ŒzbŒ€€…yŒ‚†€fszx|†‚”Œ}y€zruˆlƒs‹ˆ|‚š~š†•‚~‰|……†‘„‰†’‰š†Ž‰Œ‹‘Š~‘“‹…šˆ—ƒ{‚‰†‚†ˆ‘”Œ–„™{ˆ‚ˆ‡~Ž•‹ƒ‡Ž™„‹Š„€†„‡ˆ•‹Œ“Œ’Œ…‰}‹††zˆŠ…{…†‹‚ˆ†ƒ~ŒŒ……ˆ‹Š‰„‘Œ„……š‚–Ž‹v†…Œ†‚ˆ†’ˆ…ƒ’‚…—І‚‹‡Œ…ŒƒŠ‹w€„…Š’Œ‚‚ŽˆŒ‰‡‹’އ‹–ˆ—ˆ‡Ž‰Œ‰ƒ~‹†ƒƒ…ˆŠƒ’‚€‰†‡‡…„‡Ž‹ˆŠŒ„Œ…ƒ‚…˜„ˆ—ƒ‡ŠŒ‹‡vŒ|l’~x€~‘Ž|”xˆx’‚‚œ‰`~{ˆ‹ŒŒz“€–x“’†‚‰ƒ‚Š’†„“‰ƒ‚ƒn|…l„Œ„ŽŠŠ„ƒuŒ”Ž~|˜v“†{Œ–‹wŒ‡~œ†™‹eŠ„‚†“Œ’„”‹‡‘ƒŽƒ›‡ˆ€‹y’s|€~tˆ„–•”…‰Š{•‹™’ˆ›Œ‹zŽˆ‰Œ‹‹‰‰œu™’ž…ˆ€…‡•ކ…Ž€•‘vˆ•‡‘ˆ‰ƒ”‹Š‰š’‚†††ˆ€‚ƒŒš‹ˆn„•›‹Š‹Ž‚|ˆŒŒ”‘ƒŠŒ’—‹Ž’puˆ‹…ˆ‘}†uŒ‡’…‡ˆˆ†‹†…‰Œˆ†‰ƒƒ…ˆ…‘ˆˆ‡†Ž‰†}†€†…ˆ…‚Š~’ƒ‰‚€…†‚ˆŒˆƒˆƒ†„Š€‡‰‰Œˆ…Œ‚‰€wŒŠ‡‡‚‰Œ‡†Œ„‹Š‚…Š…‰€…‡ƒ‚†‹ˆ}‰ŠŠœŽ‹ƒ€€†‰†ƒ†Š‹ˆ‚†‡„‡†„†Œ~‰w‰†„Œ‹{…‹‚„~ŠŠˆŒ‘‹…xŒn”~‡‰‘‡†ƒ€“|‚‡ƒ‰‡{…„ƒŠ~„~ކƒ„Š…‹„ˆ‘~„„‡†…ˆŒŠ‹w‚}’‘‰„ˆ~‘„‡{Š‹†‡…‹˜‚†‡t…€‰Ž€Œ……ˆƒ††ˆ‚{‚‡ƒŒ’Œƒ‹|††xt‰ƒ„˜ƒ|ŒˆuŒ”Œ„‡Œ’Œ‘…‹ŒŒ‚‚“ŽŠ‚œ•„‰‹‘ˆ‰‡w}‚„Š€„‰…Œ†‰‹ƒ‰‹||‰Žs¤‘{Š…‚‹„†‡‡‹Œ‡„Ž•ŠŽŠŒŠ{Œ~Ž…‡”{„…ˆ‹‹ˆ•‡Š{‰Š‡Š”|„ŒƒŒ”Šƒƒ€Ž•Š‹‘†Œ…‘€“—‰‘Œ€‚“rˆˆ‡†‹ˆ‹›“‚’˜‚…‚Œœ……‘‘†“—Š‹{„‘„ˆˆˆ“‹ƒŽtŒ’Œyˆ~”‡„}ŽŠ†‹ƒŠŠ…‰Š”•Šp‚’{†–”˜†…„…†ˆ†…†…†††††‡†††††††…‡†……††‡†…………††††…††††…†‡††††††††„††††††††‡†††††††††††‡††††…††…††††††††††‡††‡†††ˆ…†††††††††††…†††…††††ˆ†††††††‡††††††††††‡††††††††††††††††††††††††††††††††††††††…††††††…†††††††††††††††††…†††††††††††††††††††††††††††††††††‡†††††††††††††ŠŒ‰}—gŽƒ„†l‡†‡ŽŒ‹x_‹”w‹„”…‰‰‡y|u†™ŽŒ‘›`ŠˆžŠ„ƒ—–…nsŽ}€„‚”’|’‹ˆ‰£’Œ‹‘‹Œ›ˆ¤}‰€{•‚ކ”•vy‡ƒ„‹ƒ“‰‡Œ}‚‚†—Ž’…Š„u„‡žˆŽq—…އ‰|……}–…~“‡–„‹ƒ„‰‹„‘—Žvy…’†vˆ‰”‹‘~~—ŒŠ~†‹“•Ž…Œ…‰‘”‰•ŒŒŽ…wŒ‰”{†ŠŠ•€…‰„‡’–’‘™Œ‚Œ¢Œ‹ˆ}’‚u–’……ŠŒ‰y…Œš‡‹‚Ž€‚ƒŽ‡‰„†‘„ƒ”sƒ•…‰ˆ€}}‹–Œ™†w†…xŽ‚›†Œ†ƒ”‚„zމsŒœ’€…ˆx‡Š}‡‡Œ{q‡Š„ƒ€oŽl–€Š¥µŽ™ˆ‘‰Œ€ƒy€†Œƒp…z””…†š{—–yŠ‘’Œi{¦~k…y–Ž‹‚z‚‰†Ž”{–w——Œv“s|“~‚m£{‡ž•ƒ|ªrЉ„z‘mœ”‹ƒ•ˆˆ“u“š§ž®•€ƒzuŒ†|ƒzw~{Œ‰™šxƒ–‡„{ƒŒr}‘~x•ŽqwzŽ••€œ™‚r|‘Šž€Œ„u‹Œ‡€‡…‚‡ŠŽ‘‹“‚}’“‘‰žˆŒ‹w”Žˆ‡†ƒŒ„Šˆ”Ž…‡Š—‡€{•‡~Šˆ‡†Œ“‘„‹xy€‹‹ˆŽ—‚‘Š‘”‹™Š“Žu„”„„w‹}…€ˆŠ“‘ŽŽŒ„‘Ї–І‡Ž‘‰|ƒ’ƒuƒ„‚‚Šˆ‰‰‡š’y’…‚‹—v•’‘~‡‰„Šƒr‹‘‡„’ƒ‡Ž‘•“—‡˜‰‘…‹‘‡‘”Š…‡‡”ƒ‹†‚…’”‡‡‡‰‹Œ‰Ž‚ŒŒ†…z‘œ‘ƒ†}Ž~‡ˆ—~{ІŒƒƒ†‰‡ˆ‰“•ˆ…Œ‡‰†—’‰x|ˆƒŒˆ„‰„ˆ†ˆx‹‹‰‡Šx‹„‹Œ‡†‡z€‘ˆŽŠx‡Œ„ˆ‰†ŠƒŠ„‚…~‹ŒŒ‰ŠŒ‰‚†…ƒˆƒ‡‹ƒƒ‚…‰€‚‹„Œ„ƒ…ŠŒˆŠt~{Žƒ…Ž~…Ž„†|Œ‹ˆ•‚{Š”…‚‰Š Ž~‰Š‰‰€u…‚“Š‹ˆŒŽ†Ž‰€Š†ŒŽ‘ˆ……{…’…‰’‹ˆ‹†„…‡„‹‰‘ˆ…‚Œzˆ•ŠŒ‡’‰Š‹Š„}ŠŠ†Š}‡€‰„ƒ’ˆ‡‡{Šƒ‹†Œ‘ˆ†‰…„Š’‹‡€‡€ˆˆŽ‘‹~“‰Šx—‚„„ˆ“……‡€€”•…‹Ž…wxŒ††˜ˆˆŠxz‡‚‚Œ‡Œ‘…ƒ•Ž‚s„…‡”‘–Š~ˆ‹†ˆ‚…{…{…ƒ†Š•Œ†‚{Žs„Œw’—‹‹~‚Œ~„‰‰Žˆ‡Ž…’ˆ“€‹•‹”€Ž„‘‹ˆ†Œw‰ŒŒ~ŽŠ…“……y{‰„Œ‘ƒˆ…‹‘ˆž„Ї}‰Ž‰ˆ€“–…ˆ”“†‹†‘€†‹‰ˆ‰ˆxŽ“˜‡‰}†‰‡Ž‡‘‰•Šƒƒ‡‡Š{‹Ž€Œ’„Šu‰‹ˆ~|„’Š~€ˆ‹ˆ’‹‹Ž‘˜„‰q‹ŽŠŒŠ‡x‘‘Ž‹–’‹}Š~†ŒŽ‡Œ‡‰‹u‡‹Ž‰z‡z‚ƒ“ŽŽ„„‘‘‹€“…‡ƒ”‰ŠŽŒƒ‰’‰‰…‰r†{„v„†ˆ‘†‘ƒ‡…ŽŠ“€v…z˜z•–šƒyŒ†ŠŒ†Š‚‹‡Ž‡‘Œ“‹”ƒŽŒŽ‡€…z†…ƒ~ƒ‡‡€~~€Œ†…Š‹‰|•Œ“…žˆ|{…‹Œ‡‰Š‚“‡“„ƒ‹ˆ“„ˆˆ…‹Ž‡‚”Œˆ—‡‡…‚‡ˆ˜…‹’†‘‰‹†Œ“Œ’ޓЉ†ˆŠr‘ŒŠ„„”€ƒ‘•ˆ‹’Ž”‹’Š‹o‰”މ‹Šx‘‹Œ…ŠrŠ““”ˆƒƒ’‘’…Š‚‹’‹}xƒŠŠ‡‰‚’w‘†Œ~‹ˆˆ‹‚‹•{•Š„‘ˆ†‰…{t‹‰Š’Œ‹ˆŠ‡ƒ‚€q‚~˜‚™Œz„sŠ•†Œw€’ƒŽˆ„‘}‹ƒƒŒˆ|„Ž„™’Ž“Œ…~†t}’…Œu”„„˜’~}††„‡‡xwŠ‹•’’ˆ|y…‚‡{ˆ†“‘•””xƒˆˆ€ƒ‰Ž€{„‡›‰‘“‚~|‡‚ˆ“‰†ƒy…|•w‰€„†Žt|Žy{€}ˆ””ŒŠ‹ˆˆ–Œ…Œ‚ˆ—„ŠgŽŒŒ†Žq‰~Š}‰‹„††‹‰Šˆ…’yˆˆ€Œ†ˆ†‚І}Ž”Ž}ˆˆ‚—~Œ†€Ž‡€ Œ‹„‹Š~‹ƒz‹“ŠŽ„wˆ…‘†”}w‰‡|~Š€„ˆƒ‹‚Žƒ‰|ƒ™}š„“z“‘Š„’{}‰ˆŠ—zyŒ‹Ž€|ˆ‡„|Œ‹Œ ‡€‰‹‘ˆ‰…‘—™ŒŠ’‰„‹ˆ‰—‹ˆ™†‹†ƒ‰‹‰ˆƒ•|Œ‰‹…‡…†ƒ‹„Š‘Œ‰‘ƒƒŒ‡„‡‡„šŒqŒ…ˆ†‹…ŠŽ…ŠŒŠŒ…”‘†‡‰ƒ…‡›ƒ’‡‡{Š~ˆ–ˆ„•‰ŠŒzЉƒ~†††††††††††††††††††††††††…††††††††††††††††††††††††††††††…††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††“‘tupjwƒ~•u‰xj¬Š¡yžœ¤©…¼n …‰œ‹¬†nŒ‹†ƒ—ƒ‘“Y¢_~›‰x‹€Š~rœ•€b“‚„XhŸtzkq•’hq…sb±¢‚‘zš—ºd„c‹yn}|ˆi‘‰…Š{q‰bŠ{‡l}€š}„{³„‰”¢ãzŸ{‚¬i“®„•j”{s§”›j­u¦›ƒr¯‘hŒ‰œ‹i…»]„ˆ€˜ƒ„–kœ„˜ys‡}¥gx––Œgv›t…¦n‘p”‰‰‡®}£”k~v‡hŽŽš€‘“~›”‰š€¦†‹uŸ”•¼¬ƒsrˆ~“Œ¨‚€[ˆ•x|}™‘„ˆˆ†‡…†‚~„Š{†ƒ~†‡‰~އ‹€„…“ˆŽ€Š}ŽŒƒ‚‹‰‰…€~‚zyŠŠ†ŒŒz‰‹Œƒ†€‡Œ†~ƒˆ”‡}…Ž’~‚ƒŽˆ“ˆŽ’‡€‚Šœv‚•Žu„†…‡‘ƒ‰‚w€Žzˆ‹•…z‹‹…Š{Œ‹€˜—‘Š‚‰ŒŽ‚Œu‰Šœƒ‘‹ƒ…}‡™…Žƒ„ƒƒ…‹†‚~‰…ŠŒ†ˆ–„އu‘™‚„ˆˆŠ†ŠŽ„x‡†‡„Š„ƒŒ}–„‡‹‰ˆ‹Ž€‚‰Ž‰‡}ƒ„v†‰–Іƒx…{‘ƒ„”ˆŒ†„t—‹ƒˆ~›ƒƒŒƒŠ‚|~‰ŠŽ‘qŒƒ~†Š£‚|o|~„…†‘ˆŒz‡‚Œ„~„w‰‰x‡”ŽŽ„Œx”•‹ƒ„t|q‡©}ƒˆr|„…Š‘‰‰zŽŒƒƒ|w‰‚ošŒŠvЇ{w{–…ƒ‚š„‹|‰q‹ƒ™x—‹„ˆ{y–oz‘|˜ƒ††…‰ƒ~‘‚“’‰‹w€“‚xˆ‹‘p‹u’€­’†„‡{ƒŽ‹‰†—‘Šm‹ˆš‚—…zŠƒ‚›—Žzƒˆ‡z“ˆ~~””“~Ž¥’|ˆ“„Žw‡q€‚—~Ž‹–„Œ…}‹ƒŠ†€‰~Œ‰~„€ŽmŽ}„Œ‰—–xŒŒƒ„ƒ‚}Œ‚ˆ˜ƒ†…}‚o”ƒ‚„•ˆ…‚sŽ“Œ‡†xx“Œyƒž‰}‰†}|x€ŽŽ–‚ŸŠ„—…{z„‹‹{~Ž–Š”€‰ˆ‰Ž‰€‡‘€ˆ€wŠz‚‡|ˆ€ƒŠ†Œ‰¢|uz„›’x…ƒ›qŠŠ‰‘xx~‹‚˜‰t‰”•‚‡›‡‡’ž‡ˆžˆŒŒ~‹‚•‘ŠŠ‰~yˆ”„š‘wŠy~‰r‘t‹˜’†˜|€~ˆ‰”~y~€¡ƒˆ‡~…z†ˆ‡ƒ‘Š„Œ|}“†‘~‰|Šz “xy„‰‘}t…{šk…‰ˆŠƒŽˆ‡ˆ„…‡‹‹†„„††…™‡…‰‘‡†‡ˆ‹‡†‹„Œ‡…„€‡……‰Œ†‰‰Œ‹„‡††€†Š‡‹Œ„†€{†Š„‰’‘Ž‹†‚ˆ„„І‰ƒ‡„x€‹ŒŒ~ˆˆ‡‰‰†ˆ…‰‡††{ˆ†‡‹„ŒŠˆ…†ˆ…ƒˆ…€†‚…………‰‚ˆ†Š†‹€Ž†Šƒ‡…„Œ‰‚ƒy…ƒŠ‚„Šˆ…‚…‡‡…ŠŠ†…ŠŒ‚‚Šˆ‡‡‚„‰|ˆ†‡‘€ƒˆ„‡†‡‘‡„„•Š‹ˆ‰…‡‚Š„‰„‹ƒˆƒƒ‡‡ˆ‰”‚‡~Œ„Œ‡†ƒ‡ˆŠˆ…†‰†ƒƒƒ–‰z‚›Ž‹†„ˆ‚ƒƒ†ƒŽ‰~…ƒƒx˜†…Ž}‹‹‚‰“‹†„€‹Ž€‚—‰ˆ‡‹}|{ŒŠŠ‡‹“ŠŠ†zyƒ‰Šƒ{ƒ‘‘ˆ‡„Ž‹”€“˜…‡~“z‰~‰z‡‰Š‹‡ƒ™‰w‚‡‰†Š~‰vŠŠ€‰{‚ˆŠ“šˆŽ–‡‡”ˆzŠ˜š„‹‰ˆ†~Š–Š’„„†~y…’„‹‘…˜€’vƒ••‰‘‘‘…„”‹‰‹‰„‡‰€†~Œ‡Ž‰‘††ƒ†ˆ‰€€‰Š‹„y~Ž’ŒŠ‚…u‹‡’{†Š†ŠwŽw~…’u‘“ƒ‹“w€„ƒ†‹…€‡ŠŒvsˆ“‡v‰†Š‰†’x†’~„‚‘š|‰…c€Š‚€Œ}z„{“|i‹…ކo„ƒ|„‘†z“ŠŒ”šˆ—ŽŒ”‹‡†…Œƒ‚{y†ŠŠ€”’“ƒ‘ƒy‰“ŒˆŠ„Œ„„|”””‚†‚‚†|Žˆv‡Œ‡‰Ž…€“}•ƒŽ‡Œ““‚‘Žƒ|ŠŒŠ}z„ƒŠ„{v—’އޒ‘‰‘š‰‹ƒ‹…•…‹„Œ‹–‘ˆ€‹~’‚„x‘‹‚‡Œ{’ˆ‹†Œƒˆ“Š–„Ž•Žƒ‡‰‹|‡‚‚‡~„”…†‚‹…~’†‡ƒw„Œ…†ƒ‚y”Ž€ƒ‚‡Š…Š…€†Ž†…ˆ‡…Ž”‚”tƒ‚‹Ž~‘x}ˆŽ“…–ƒŠ~‡—‰}˜~“™|‡…}“Œl…•w‘Œ„Š„‰•Žy}ƒ~Š~…o”‚‰€Ž†•š‘§}ˆ‰’‰w’†“…‡†‹€•‰‹ŽŒ’‹~ ´Ž‡t‘›~ŽŠ„Œ‡„Ž“–¢‹q‡z“‹˜zŒŠŠ„ƒ˜”’‰…ƒ™p’ŒŒƒ‹u’‘|Š‹wš•˜ˆp‘{~hŠœ•„¡Š•Ÿ~Œ’–yˆw€z“ƒ¡„‹ƒ‹–”„{މ{w“x–Ž’{~‰“„€”…‰z{›‘‰…Œ~•€–€„‹|–}|k”ŒŒ…‰tuƒˆ‰€y‡pˆ…|{ †‚…˜|†yq|ІŒŒŽž‘‰™}w•‡‹Œwš‹†’‚‹ot„Œxw‚’rŽ…~Š}z‹‡Šw™‡ˆˆ†ˆ}‚…•wy|Šˆ‰|{†Škž’‰‚{Œ‡‡ŒŽ{’‘ŠŒ†‰w‹Šš}q—‰‚œˆhŒ‡†˜ƒƒ|rˆƒ„‘|†ˆ{†€v–k€“|”–‰ŽŠ‡”x…‡z‹‰vpqˆŒƒ–…‡Ž”ˆzv‘}‘~ƒy~‡v{†ƒ‹ƒ‹ˆsv†x‹…zŠ„{†{Šw£qšˆžpœ†Šƒf€ˆz–‰Ž‹x”Ž•ˆw‘{ ‡‘yƒŠƒ}…‚‰•ž|‘”•ˆ‡ˆ•ˆ„…}“ŒŽ†’qy•’š•ˆ‰ˆ“‘šs“ˆ–’‰‰wƒ…ŒŠ•ƒ“‡…Šv„‰‰Œ‚’‰“†‚‰ƒ‚Š˜•”†’Œ–~…‹~†w…‹~“v€‰‰‡‘‹y‘}‡„‡—Š•{‹‰ŠŒƒ|w‘ƒ}ˆŠˆ”ƒˆ~ƒ„–ŒŠ˜—Š‹‘‘…ˆ‚‡•vwƒˆ™™Œ“”†Ž†–ƒŽƒ‹„~ŠŒ‘€ˆŽ‹–†›{‚‰•އ–‹Š„Š€…—v˜’€†“……”‹”„ƒŽr£‡v{ym~|ƒŽ…~~€n‰~x”‡—…zŒŠ~‰…ƒŽ€…r‹…•…‡{•Šx{š~|„‹…}•}~‡Š’}œ~ƒ‹Ž‰‰†€v…†wvyˆ‚Šsu‡~~ŽƒŠ€~ƒŽ†Œ’„†…‘u}‹‰Œs„ŽŒv„Šy‚wŠ~{ŒvŒ‘}€’…}‡Œ‘{‡‡ž’tu‹‹qŒ}mxs„„…t‰‚”ˆ‡ˆ|u…ŒŒ˜ŽxŒ‡}Š—‡††št‰‰~†ƒ’•…‰Œs~Šˆ{Šƒ‘މss‡‰’‚‰o€}„•|’w“z‹†uy…~†‚Œ†‹”ŠŒŒ‘‘‹Ž’‚Š|‡‰Œ†‰ˆ‰‹‹Š„ŽŒ‡Œs†z…‘{‰‡—Ž‘•Š’}Œƒx„ޅІ‹…ƒ€ˆ‚Š…š„ŠpƒŽ‹‚‚y‰„zƒ„‹’‘}Šv˜…„‰‰‰„Œ…€‘’–‰…~Œ‘ˆ˜‘ˆ–‡}އƒ”z…‹Œ”Ž•‹ŠŠnŽ’Ž™‘Œ‘‡yŠŽˆš‡‰’‰ŽŒ‡‰—“‡‘’ŠŽ‡†™“…Š˜œ‹‚’‰‚•–}„˜Œ„“Žˆ‰…–„‚„†‹„ˆ€‚Ž~‰‡t’€‰‡’Ž‘‰Š’„ˆ„………‹†‡†…‡…†‡‡‰„††…ˆ‡†„Іˆ…†‡ˆ†ƒ‡†‡††††‡…††ˆƒ†††‡…†„…‡„„‡‡ˆ‡†…‡‡‹…ƒ†…†‡†‡†…‡ˆƒ††††‡†ƒ‡‡‡…†††ˆ†ˆ‡††…†…‡‹‡†ˆˆ‡…††‡…‡……†……ƒ…†††…„…†…„†„…‡†††††‡…‡…‡†ˆ…†††‡‡††††…†‡ˆ‡††…‡…„††„‡…………‡††„‡‡„……‡…„†ˆ………‡‡††‡‡†‡………†‡„†…†‡„„†††‡†††„‡‡†‡…‡‡†…††…‡…†…†‰†……„††…‡†…†‡‡…†ˆ†‚‰tŒ‰•ˆ€’€†Œ›ƒ’ƒ‹“|…||{zŠˆŽŠ’ˆƒ‹’Šš~…†‡ˆ{…yˆ‹’“‡‹”†u‡„‰‡’ˆŒŠ‰Œq‡—€ƒ†’x‹z‰{€‘‰‰€”ˆ„‡~Žt€†Œ˜††…„’ޅЉ‚m‹zwˆ‚‰Ž{ƒŽ„Œ“‰†yq“†‡”•”’™|“†…ŠŠ‘‹‰€ƒƒ“‰„…’‚Ž„‹—‰Ž‘‡|™ŽƒŠ†Š‰’Œ“އ˜y†Œz‹ˆzŽ‹šsˆƒ‹ŒŒ„—…‹’‰…Š—ƒ‘Ž¡‰Ž“j…‹Ž‡o„‡ŠˆŠ‰†{Šo‘€—Œƒ‹†—”‰•n†xxŠ€Š‰Ž’ŠŒŠ€’™xƒ”}Œx‹ˆŒŒ•„•‡~ˆ‘Šp~„~„‚Ї‹ˆ†‚Œ~†”‰‚‚”z–ƒx†•„|}‡Œ‚…Š}ƒw‡Œ~}‘Š€‡–‘|Šy‘{…g{ƒŠkŠˆˆv|…‰…tr†‰‰—ŒŠ‘…“n„Œƒ|„‡ˆŠŠ‰…y}•†”€z•Šƒ‰„‚‘ƒz’†ƒ•—Š‚‹y•‡‡Š“ŽŽƒ“ƒƒ‰Š~ˆ‚ƒ…s}‰‹Žˆ‘‚ˆ|Žˆ˜vŒ„Œ„‘Š’ew‹†wˆoŠs‰Ž†‰€€Œv„}|…ŠŒˆ|ƒŽ‡}–Œ€‰ŠŠw€tƒ}„}„Šˆˆ‹z‡‹ƒb†“–ŽƒŒƒƒ„މz‹Š‘|y…‹™x}‘‘Ž}}€Œ‰ª‡‚ˆ„„z‡‡–‘~‚Œ{‚—ˆ€‰’„y…q ‚’‰{‚…vŒs‘€›~”‹‡Š‡w„‹Ÿ†|‡sˆ’€ˆ{ŒŒ‹Œlˆ‰…x…~†xUŽn…ˆq›‹v”‚‡d¤‹—‚‰dqž~k{••|Ê•|…˜_Žˆ¡›„‚¤}œ’u†ˆ„†Œp†Ÿu ˜˜•Š…Ÿlw…‹ˆŠ~€™›v™w™sy•ˆk‘‹“…sp}‰€†ƒŒŒ•‘‡€‰ˆŠ{‘…ˆ™Œ††€{{‹Ž…€‚’Š„“‚“Œ„Ї‰‹•‚‹‹Ž€ˆˆ’ƒ‡€u‡‘‡…†‡ƒ‹ƒvŽ~Ž…”|Š™€|‚“‰ˆ„Œ™†Š††‰†•‡‘|€‚Ž„‘ƒ…‘‹‡}‰wŒ„‘|Š‡ŽŠv‡€“‹Ž‰…“ˆ’˜…•Œ‘‰ˆŒ‡ˆ‰„’Š…‡ŠˆŠ‰‹€‘Š“ˆ‡ˆ‡Ž–ŽˆŽ“Š–†‡…‘ŒŽ…‰‘‡ƒŠ‰†x‡‡ŠŒ……ˆvˆŒ‡…„€•Ї‘‰ŠŠ…•‘‹‹…Œ„‡t“ˆŠ‰t‹|“ˆŠƒŽ‘ƒ‡~•“”ŒŒ𩇠”w ˜ŸŽ‡Ž•‘Šl†™Ž‚xÌ|x™|˜~ˆ„¤|’s„’†ˆ‚l|…’Yn’Ÿ‹™„†wž{™v–~ˆ‡‹‰{±…u‡‹|~–†”’so|}‹p³…‘Љ}…’y›‚•’‘‹–ˆ„‚•‡”r’†“Ž}Šž˜nŒŠ‘‰‹›’z…Žƒ‹tu§€’žŠŒ¢{ˆ›£‹’˜Ÿ”„—”‹œ•£‚{w‡™œ‡s™”ŒœŽz„‘yq…‡|—x€Šg†‘„‹˜—Š’šƒ‰„‚Ž}•wi¢œ–„ˆ‰š€Œ–{…•†œ‘Šˆuˆˆ–Œ—‚…™|r“‰‚•‘”…ˆ‹‹‡„“kˆ‰‚‹Œ~ˆ›ˆ“ƒ{€”v‚‡e†ž’„¢“€‰™s–š”q’…‹Š•‚~€€…•ˆ•‰†‘s‡„‹“’…Š–¤~vŒ|ˆq~Ї˜ŒŒ„€~ˆ—••‹}u~Žz”’ŒŽˆ‹ˆ’Ž‹˜x…y”›w‹}…”’y†x•Šˆ…•„˜‰†“•‚†ƒ†”wz‰“‰˜“—”•‹}ŒˆŠ‡Œ‹ƒ‘~€‘}Ž™‡{†‹ƒ‰†‘ƒ•‹™„‘ “‹“„…{••‰†ƒ—‰‘¥˜††††‡††††††††††††††††††…††…†††…††††††††††††††††…†††††††††††††††††††…††††††††††††…††††††††††††††††††††††††††††‡††††††‡††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††……††††††††††††††††††††††…†††††††††††††††‡†††††††††††††††††††††Ž„ŠŒqˆŠ‰ŠŒuŠ’ˆ“މ“’“Žˆ†€‰’††Œy}ˆ‚‚ƒ’†Œ…us†‡ŒŒz„Š“~‹ˆ‘‡…‘‡w–~Œˆ}Š„„Œ‡‹˜–ž™Žˆ†ˆŽ•†—•vzƒ„€‹‰}އx…Œ‹†…‡Ž’”|Š‘‡•“|‹Š‘•…—Ž…‰z„”z–‹‘„Š…‰††”Œd‰‡›~‡‘Œ„“t˜”Š“–‰Œˆ‰Š‰€ŠŒ”ˆy}†˜——Œ–ˆŒ„†Š|Žy‡‘‘ˆ‰{‡‹Œ˜Ž„ŒŽŠˆ’‹Ž†~‹wŠŒ‡‹‘އ„††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡„†…†‚‡‡ˆˆ…††ˆƒ€ƒˆ………‡††‰ƒ‡‰…†~†„„‚…‰…††‡†‰‡…‚‚‰ˆ‡†…ˆ„…††‡‰†‡‹ƒˆ€„Šƒ…„‚‰‹‚ŠŠˆ…„„†‡†ƒ‹ƒŠˆ…ƒ‰‰ƒ„‰‰‰ˆ„‡‰‡‹†Š„„†‚އЄ‚Ї……†…„†ƒ‰‡…€€ƒ‰‹ƒ„ˆ‰‹…‘„…‡Œ‡ƒˆ„…Š„wŠ…Œƒ††…‰ˆ††‚†Œƒˆ{…Ž…€…ƒ‰‰‚œ‰‡~‹{Šˆˆ†€Ž‰ƒ†††‰Š‡ƒ‚‰‚‚ˆˆŒ„~†„…‡‚‚‹|…„ƒ‰‚€…‚‡†Š„‹„†Š†}~~y{•…–Œ“p~‰€yˆ‡‰—„‡ˆzu›‹}~‚”„•‚Š•s‚ŒŒ‹Ž”ˆŠ‹‘Š‚„u‹†‡ƒ‰—ˆ‰…ƒ‹…†’„Šs”y—™v}‹…Šˆ…¤‰‡‹Œˆ…’‰””‹•~‹‘‡Ž‚xއ‡ƒv…†|‰ŒŽx€t‘‡‘†‹{–•„ž†›‚‰€ˆˆ†wƒŽ‰‰ƒ‘†—‡†ˆ‘‹…‹ƒ“އ}Œ™Š‹Ž•‹Ž‡ˆ‘„‘ˆ „ˆ‹‚Œ†Š…‰Š†ƒ‹“—†ƒŒnœ‰“‚‚‹ŠŽ‘†‘ˆ“Œ€”Œ”q‰’”|“Ž“…‡“††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†‡…†††††…††††††††††††††††††…††††††††††‡†††††…†††††††††††††††††††…†††††††††††††††††††††††††††††††††††…††††††††††††††††‡††††††††††††…†††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††„~‡‹”…‰‹|ŒŒƒv††Š’Œ‘„xx‹„~‰™’…•†–‘|‚ŠŒ…˜‡ŒŽ‹‚‡’އ‡ˆw‰‡ƒ…„…‹‰ˆ‘‰‰‡~…‘€~j•uœ™z|…Šˆ†ŽƒŠ”„’‰‡Ž€‰Žˆ‰‰‡|˜ˆ‹ƒ“…‡w}ˆŒŠ€“†‰Œ†~{‡Œ}‰Š—‡œ‡›€…Šƒ„‚„‰‚•„‡‡ˆ‘ˆ€Œv„†‚ŽŽŠ†‹—ˆƒ‘‹ˆˆ‡„’ˆŠ„•‰ˆ†Šˆ‘xއ‡ƒ€…Šq‹‰€‚ˆ”‡„…‰Œ‘‡‰Ž”„“…Œ™Š–qŽ–ŒŽƒy‘Œƒ’~‚jŽi{‚x{‹Wyˆ–—…x ž~Ÿ“ƒ†®Œ¡–„‹x~~Š–’zŠ®l«‰€†‹”ˆn‰tœ}˜ˆ’†Qœwutisš…ž“zt§¥„ޱ„–•œ|‡~ŠŠŽ}xŠŒ‰Ž¯sˆ¥|…{Žx‚„Ž{…Šœ‘zˆwµ|¡‹~xœ“r‘{ŽƒŽoˆ‹{ªˆ“†“tƒr’mƒ”””ƒy—|Z‹…Šˆ|xi—’‰™Ž}¥‹u’zœœ¢ˆw’„ƒƒtrsŒn›ˆ‰‡‚˜usŽsT‰‹xŠr}”‰ƒ»¢‚—Š~š¡}‰˜{£€’†‘—’s~‚[•”j“‡ˆ›h~”ƒ¡„Œ~‘‡ªv‰vo¢s–vˆ—’\‰”sy’‡Ó‹‡™††‡‡„¦}†~‹‰©™’ª‡ˆˆŽt¨Œ”Žt†‹…z‡¤‡“”x‡mn‡œw†œ–”Žˆˆ~‚”€ŠŒl’ˆƒš«—š—Œœ…ƒ™wˆuœ…xŠŽŠŽqš–š|‰‹“§‚£ƒ¡†”q…‹‚…¤z†”š†~˜Šx‹–‡–wŒš–•”}’–†•‡†•˜y†Œ€—‚‰ˆ™Ž”–‚‘Š¡‹ŽzŒ„Žs‘‹’ˆ|’™‚–’}†„—y‘Š˜…Œ}‘¤ŽŽ‰|†|ž|‹‘Šƒww…ŠŽŠŠŠŽ†„y’‡Š”ˆ…‘„€‰Š‹…‰ˆ‘~މ••ƒ{ˆŽŠŠ€›ˆŒ‰‰„…‡ƒƒˆŒ‡€‰ŠŒŠ…†…‹~™•}’{€Š‡Šˆ…†‘Œ…‚Ž“’€ˆ†‘ƒ’‚˜‰…€‹v‘”w‹…‰}‚…‘‹‰Ž‘’ˆ„“‡Œš†ˆ‘ˆ€•ŠŒ‰‡ƒƒ€†ŽŒ‰‹Ž‹…ŒˆŠ€…‰‡„‹~Š˜•€“–‹•ˆ—ŽŽ…Žˆ‚…z‰‘‰ƒƒ€……yŽ“ƒ„ˆ•ˆ‡…’ГЋ†”‘ˆˆ‰€Žl”™ŠŽŠ†v“†ŠŽ‹{ˆ‡…y‡‡…„”ˆr—Žˆˆ›‹’‰oƒ‘ˆ„€…†Šu„‚~‹‚”…‰“‹q||—‰Š…‰Š„~}‹qƒ‚‹‹€…‘Œ„Š——–”ŠŠŠ“ŠŒ‡†Š“‰‚|„‹‘•|Œ‡†‹…ŽŒ~‡‹ƒ„ƒˆˆ‰‹„‡…‡Œw†“†‚¥‡„ƒ‰y’ŠŠˆ…~€‡ŒŠ“o‘œ}Š•ŒŠ‘˜‘™“•Œ‰‹‚Š‰Šˆ‡‘—}ˆ‰Ž“‹ˆ‰Ž—‹—ƒŽŒŒ†‰~…z”˜”‹†‚‰‘Ž”€Šƒˆ†€”…zŠ‚Šƒ„‘‹†€„•‰†”‹†…Š‹€†ŒŒz…‡¦‰™Ž“x—›zƒx‹…’ŽŽŽŽ‡™‚Š€ƒ’ŠŠ„†s†‚†™”¡ˆ„‹|…ˆ€„ˆŒŠ‡†€‰“—~†Š†•Š‹™vƒ‡„””‚ˆ‰‹œƒ|…ƒˆ†…„‘‰…|…ŠŽ’’‹„|އƒ„’šy‹‡‹ Œ…•†Ž‚’{Œ†‹Œv–}’‰Ž…‰›…“ ŽmŠ}‰…o‹“ƒ†˜uŠ‹œ”Œˆƒ’“„‘“‹Ž†–……’–‡€Œ†ˆŒ’}…‰s—~€x…„ˆ†ƒ–œŠ—Š—ˆ† …–˜ˆ†Š~“‹v‰Š’„‚|x€€††††ƒ‰Žr†‹‡~Œ‚wŒ’„|‹—Œ€““ƒ‰†’‰Žƒ—†‡Š…Œšˆ‘Š‹v†”„~‘Œ’‰†~‰Ž•zv’xš{‡†Šy…‡ˆ‹Ž™Œ‹‰ˆŒŒ‘—’…x”‰‡‘Œ‹y†ƒ†‰‰“ƒ}ˆˆŠ‹‡ˆ€•†Š•„›ŒŒˆ‹Œ…Š‘†Œˆ…„ŽŽ„„–Œˆ{“ŽŒ’‡ƒ‹—†€„‹ƒŽˆ‚‡—Œ{’‡‰‰Œ}‹†‰‰‚‡ŽpŒ‹‰‹……–†‰•‡†Ž‘‰‘„Œ…‡mŒ”Š”…ƒv†’‹…‡…††‡††††…†…†††‡…††…†††…†……†††††††††††††††††††……††††††††…†††‡†‡††††…††††††††††††††††††††††††††††‡††‡††††††††††††††…††††††††††‡†††††††…†††††††††††…†††…†…†††††††††††††††††††††††‡†††††††††††††††††††††††††††††††‡†††††††…‡†††††††††††††††††††††††††††††…†††††††††‡…ˆ‰†„‡†‰††…‡ˆˆƒ„‡‡…ˆ†ˆˆ‡‚‡‡…‡„……‡…†‡††‡‡„„‡†‡ƒ…ˆˆ†‡††…„„‡ˆˆˆˆ‡‡ˆ‚„…„…†„†‡††„‡ˆ‡‡„†‡…†…ˆ‡…ˆ††ˆ……†…†‡‡‡…ˆˆ„Ї…†…‰…„†‡…†…‰‰†…„І†ƒ‡‡ˆƒ‡ˆ‰…†‡‰ƒ…Šƒˆ†ˆ…Ї…†„………„ˆ†ƒ‡††…††‡ˆˆŠ‡‰ƒ‡‡‡†ˆ„…†ˆ„‰„„„Š„ˆ‰†…„‰‡‰‡†‰††‰††‰ˆ‰†„‰„„…ƒ††‡†……†„€ˆ†……ˆˆ…„„‡†…†„„„‡‡…†…‰††…„‡‡††††…††††††‡†††ˆ††††††††††…††††††††††††††††††††‡††††††††‡††††††††‡†„††††††††††††††…†††††††††††…†‡††††††‡††††††††††††…††††††††††††††††‡†††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††’~’€‰h‰ƒŒ›y„‰u𙇓‡£Šˆy„{“‹…‡‰ŒƒŒ}Ѝ‰Œ‰®xŠ…”’z‹†”•Œ—•Š…“–‹•zŠ“ˆ˜ˆŒŠ‹‡–ˆ†—‹Ž‘x}‹|‰Šzƒ’Œ†…‰†‡‰ˆƒ‘ŒˆyŠ{ŽˆŽŽˆ˜’…‡„–w†‰‹’”‰Ž{•‹z–„Ї{‡“…€–€Ž€‡“˜ƒ†–‰€ˆ‚’…ˆ–˜…ˆƒ}‚™Ž•‚…ŠŽ–ŒŽƒŽ‚˜•†„Œ‚Š„‡„…ˆ‹‚ˆyŒ‘…ƒ…‰Œ‰„“‡€„†Ž’™„z–wЉ†•˜ƒˆ…‘„Š’‘‚™†‡‡‡†ƒ…††‡†‚††………†‡†ˆ…†„‡„…‡‡…†ˆ………†††††ˆ††‰‡‡ƒ…†††……††††††‡†………†„†…†…†††‡†‡ˆ††…††††‡†††††††„†ƒ‡††…†‡„‡…†…††††‡†††ˆ†……†…†††††††††††‡††††††††††…†††††…ˆ†††††††††††††††…††††‡…†††††††††‡††††††††‡†††††††††††††††††††††††…‡††…††††…†‡†‡†…††††††††††††††…††…††††††Ž}~ˆ|“Іƒ‹ƒ’„“‘ƒ“{˜’„†„…’‹ŠŒŽ‡‚Œˆˆ‰‚‚Ž‹ƒot†x–xƒ˜‡ˆŠ’Œ}‰„‘‡•‹}…ŠŠ‹‚›‡”—n~ŒŽŽ‚Žƒ’|Ž€‡‹‰‹Œ|‰ˆ‹„„Œ‰‘†‚‰’Š…~œ~Š…š’„‹‹”‡–†ƒ†ƒƒŒ}‚›ƒŒ‡—††’„’›ŠVƒ‰”{{•‡Œ†Œhˆ‘’‹‡–„“’†“€”€“‹’“£‘Š’‹‰Š‡™„‰†ƒzˆ‰‚‚‰“†›ƒ‚‹Œ›†Ž¦‡‹‰w…™ƒzŽŽ‡„‹‡Š„pƒ”–‘†Ž‰ˆ‰”„ŽŒ†‚‰„„‡ƒq–‰ˆ‹‰‡‚}‡ŠˆŠ‹‹ƒ€‰„Ž‹‰„ƒ†„‚’………‡ˆ¢ˆˆ‚Š—ƒ…ƒ’‡ŠƒŒ‡‹†~ƒƒ{Œ„}t™‚†€•…ƒ†‰Ž‡ˆŠ„ˆ‡€Š†‰Ž‡ˆx†Š…Œ|~†“’…t„ˆŒ‡‰ƒ„‚‰{‹“‰††‘”ˆ’†‚‰Žƒ‹‡}ˆŒŽŽ…‹‰†|‡„…‹“—„}§‰‰‰ˆŠ•‡‰‰‘„ˆ…ˆ†y€…‹†‰ƒ|‡‰}ˆƒƒ‹‡‰ˆ†‹ƒ€‰{†ŒŒˆ…†‹}{…„|‹sŒ{z’ˆ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…“z‡‹›‹„ˆ€ƒ‘˜ŠŒs}s‹ž‘rpw•…‘ ƒ‰r“„ˆ—‚zŠ˜s…|…–’Œ†tœ{ŠŒ‚|p…¤ƒ†š}ƒ’|w€‡yˆ†‚zx‰ƒ‡x–{‚‚”†Žuy…’vˆ…‚w‘€‰yu‹jxŠ„€ˆ‘xx›„Šˆx~gw€z}ƒŒˆŽ†‚—Ž‚vx~~~„‰}ŽˆœŸbrŽ}‘Œ†q†‹ƒg„‡Š“‡›Š„‚‰Œ€–žŒƒƒwŠkŠˆŠ{€r–{”zƒ‹|tp†Ž‚†ƒ€Ž}”•‰ˆ€‡Ž‚|ƒ„‡v”‚ytv}i‚‚…Љy„€„rxŒˆ„ƒ{‹‘‹Œ‹†…~Žˆ‹’‹€‡z€„‹‹’…‡‡Š€’‰‘†‚…Œ•Ž•ƒ‰ƒ†ˆ‡ŽŠ‹†„‹v€‚ˆŒŒ‹ƒ}އˆ…‡‡y‹Š„}‡”…†Š‹‚ˆŽ†‚†‡‰‰zƒ‰…|Œ†•€Š†}‹m€{€‰fŽ„ƒz‚w‰‰€Œ‘‚“ˆŠˆ‡Žˆ~‹†Œ‚†ˆˆ˜…‰„‚ŽŽ}yˆƒ‚’}ˆ–‡‘’…‹˜”‰”ƒ†‹••މ‡ˆ~„‡‹†ŒŠ‘‚s‹‡€}†‰ŽŒ‹ˆ†ˆ–‘‹…“‡„–r‹šŠ——‰sŒ|Љ“Œ‚’zxŸ‰}Œˆ~ŒŒ™Ž|‚|…‘~‚m‘„”Šˆ…‰wŠŠŠ‘†z‡|ƒ~w„‹‹xv€‘€‘s‘‘„“tn‰€‰‰ƒ‡ˆƒ”‚Œ|†‹urx‘†€y’wŠ‹ˆ‡vˆ’‰Š‚ƒ†vŽš‹~‚t~lsƒ}us‰‰‰‹„yy‹}„ˆ‹|Šz€r}‰†…x…‰ ››v{ƒ|…w‰’•„‹‘}‘–„„…ˆ’‡–„€uŠ}‘xŒh‚‹y‰ƒ‚ƒ†}‹zƒš…€x{‰ƒ††‚…~ˆ‚{€~†Š|n‚tqƒ|ƒ‹„Œn˜…w†‚~ˆŒ}„Š‘”Љˆ€~…‰“Š‚‹Š}Žˆ‹“‚‹“‰”€Œ•”’…Љˆ”…ŽŒ‹………‡Š‚‹‡Š‡‰|‹‹†ƒˆŠŒz}–“~І‡Ž‹Šƒ‹‡‡‡‰‹•Œ}ƒŠ’†„‘œˆ‡„‰y‚‰}ŠŠ…’‚‡~Žˆˆ”–†‡•†Œ”†”„‹…“ЉЅ†‚™‹Œ’’‘І‰Š„††ˆ‡’ƒ‹’—†’“‰ŠŒ•‰†‘‹‹ŠŒ„‹ŠŒ}ŽŒŒ‰‡ˆ††vŒ’†€ƒ†”‡‚„“Ž‹‹Š”‰‘Žƒ…rމŠw’ƒŒ’”‹ˆu˜ŒqlŠ~±u‰†o„……‡‡›—”‹s}~‹ps€…‰Œqƒ‹„{’…zn”–•„ƒŠ‰–Šo}u„¢„ˆ|Ž…‹qƒ„Œ€ˆŽx‘Œƒ¦i“}†‹y’ˆŒwus‚•†œx“Œ‡sw‘{“|~…š‘v˜ŠŽŠ‰ˆq˜c‹xx†“€¡•€„Š[‰–v d™‚ˆ„’‚‰…y¡™ŠšzŒ|…‡…|‚Tz‹z”…§—|~ƒq‰zyƒ–”‚…ƒ”Œ‹ƒŽ{~‹t‡€‹‚~~‹ˆƒ‹wyŠ}€”}}‡Œ–g~‡†„¤†…†…†ˆ†ˆ†††‡††††…††††††††ˆ……†…†††…††††††††††‡…†…††††††††„†††‡††††„†…†††††††††††††††††‡††††††††…†‡††‡…††ˆ††††††…†††††††††‡††††††††††††…†††††††††††††††…†††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††„††††††‰}~’Žˆƒ†}Œ„ˆ}†’€‚†„ƒ~sކ‚…‡ƒs}ŠŠ‘„t‹}xƒ€|‚…‡ˆ†}†{}ЇІЙ‰ˆ‰ƒކ‚ˆ€‰Œ„ކ˜†…ˆtv„…~Š}ˆ‹ƒ‹ƒƒz“…‹†ˆ‡|„…‰ƒuŽ‘‰†“„uvˆx„€ƒŠ‡~‹…€y‡……y’ˆ‰}Œ‚‰€u‡‹Š…|Š…†Žw‡“‹ŽŠ}Œ„„€zˆ|‡†ƒ‚…‹Š‰{„—Š€‹Œ†††‘Žƒƒ~…„„|ŠˆŠ…™…‰|‡…ƒ~{ƒˆ…ˆ„‚ƒt„€Š‰ƒy||Š„Œ‰‰ˆ‡r†z€˜†ŠŒyt€’‡ŠˆŒƒ…Š”…„||zrˆ‚…‰‰}o€‰ŠŠwŒ‹r†zŽ…Œˆ~z}…„‘ƒŒŽ‹…‹„}Š€‡•wŒ‚„‹’„„‘ss‹|„‰‡~„•~„‚~‡ˆ‹‰w…‰ƒv’‹…ƒys€ƒ{ƒ€ˆˆ‰}„•…ƒ…Šƒ{˜†‡‰ˆ†††…}q……„|Ž|†ƒ}”†‘ƒzŽ‚€†~Šm—ƒ‰”…ŽŽ†~‹‚„’І‰x„‰‘‚ˆ€yŒ‹†‡…Œƒ™Ž‚{Šˆ†|y‚Ž…„}w€€t„އrz}{‰}‡|v†…Žrˆ„yƒ›‰€‘ƒˆ\—‘Œ|ˆk…Œ™™‘Œ‘y†”„‡’‹|•“{ˆ„Œ‚–‡“—‰ŒŸj”ƒ‚~’Œ‰z‰~~‘‚›‘{‡‹„žz–€ˆ…Ž”˜„ˆ”u‹ˆ‡|…|Š…y“w€„„‘ƒ”’“y†‚~‘Š‰ŽŒo€‹‹fx‡“‰—w”„{ŽpwŒ~ŒŠ€‰†”“ŽŒ„|‰›™|h€‚‡¤’xƒ’—™…„}ˆŽ˜…y†ƒˆ™‹xˆŠŽ•¢Œ‰œ•ˆˆwšˆ€˜‚›„‰†Š‹‚ГГœ…‰‰“™‡“„‚‰}’x…}‹„€Œ˜}œ”‘€l†x†od~…ˆm™‘ŽxŒ}£Š{Šv„˜´€‘jˆŠ‰„‰esŸˆ‰~qxƒ–ˆ~‡}Šzk~ˆ…~ u~•°•ŸŽ|±rÇŠm‘Žwƒœy†~£’©š‰Š™˜s„™ƒqi~Šª¹|˜“ˆ‰ƒNq•“w™€mwsœv>•ƒŠŠ~™™u˜“o•‡·~a¨‰y‚ÅtŒ“ƒ“¢ygzœf‰Š•pq•a{ˆyŠŒŸk\ƒ…†‚†lŠp‘ƒ’À¹™”vuƒl‘Œ‚†š]~wˆl‚§}„f¦|œ„zŸ‘‘˜‹›’|f†™žpk‚œŒŠ‹¥}}‹fgw¹‹–ˆšŒ•‘•ˆ‰–†~„‰“ˆ…z‰‚ˆŠ‚˜‹Ž†~ƒšŠ‡ƒŽ‹ˆŽ”ƒ˜„’„’‰‰”ƒ†”{‰š„Š„Š†ŠŒ‰|s‰‘}xˆ’y˜ƒ}—ƒ‹„ˆ‰‚’‡z‹ˆ—ƒ”ˆŽp~•|–•ŽŠŒ„‰„r~‹€“q„ƒˆ|‰y‡‰…Ž“|}’‰Œ’ˆ}Œ’}…˜„„‹ˆ–’•„€ƒ‚Ž””‰ˆŽ„ˆ’}…†•’—‚ƒ’“„‚~އ“‘‚˜‚”Œx’”ŠŠˆƒ‹‰o‘•‚z|–†~”ˆ‰ˆˆˆŠ‹”„…‡u}ŽŠ‹Œs‰xˆ‹†Œ‘†€‚|¤–†ƒ†‡o‚ˆƒ—Œ•‰’x…Š…†|–—˜„Œ“‘‘Љe™—ŽƒŽ‹Œˆ•œ„ŠŒŒ†‰•„‰š•„‹Š”‘—„„“€…‚u›œz‚„„‰‹…Šy“ƒ|•‚…ˆ˜Š‚Ž’Š‚”‚x‚Ž”“w€ƒ’{‹Š‘„ƒ~xŒŒ‰Ž›r£†ƒ‡‹†ž|‰’‚ˆŽ”‡Œ“™Œ{ ‡‰”~Šz‹ƒ€‚Š„ž‘†‘Œž•šƒ„y–“‘”•—„Šuƒ”…}……Œ‹”Šs†”„ƒˆƒ‡“„–Œ~‰ˆ•}„”“‘™”p‰™Ž£‹ƒy…‹ˆˆ”’—|‘‚ƒ™‘Œ…wŠ•ŒŒ˜Š~’„‘™…s€„…Œ†Œ€“ˆŠ‚‡ˆ‹ŠttvŒŠ“…•™ƒ‚‹ƒŠ‘ŽŠ†„ƒ‡Š‰‰‘’•Šƒ„ˆŒ“|’‡Œ‹u‚€ˆŒ‹ƒ•–‘Žƒ€ƒŒ‰‰‚‰ˆzŒ‹†Žƒ†€†Ž˜„~†Ž‚‰…‹’…Š•Žƒ”†ƒˆ‚‡’ކ†Ž„’‹Š™“˜’w„‹•v€“‹~“‚‡ŽŒ™„“‰‰„Œ”‹’‡‰…•‚Œ„’Š„”›ˆˆ˜’’†‘††‰›{}ŽŒ‰‰Œ…’–‹ŸˆŽxŽ~–ˆ‡Ž}ˆ“ƒ…™…††Œ…’‚“’†ƒ†…ˆ‡†††‡†ƒ†††……†‡†ˆ††…‡€‡…†‡††…††ˆ†††††‡†††…†…††††††††…†††‡††††††ƒ†††††††††‡††††…††‡†††††††‡††…†††„†††‡††††††††††††††††††††††††††††…†††††††††††††††††ˆ††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††‡†††††††††††††††††††††††††††††††††‡†††††‡‚††‡††††††…†††…††††‡†……‡ƒ‡†††…††…†‡†††††††††††††††††‡††††††‡††††ƒ†…†††††††††‡†††††††‡††††††††‡††††‡†††…†††††††††…††…†††ˆ††††‡†††††††ˆ†††††††††††††ˆ†††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††‡††††††††††††††ƒˆ…‰ƒ†††††‡†††„„†††‡†††‡‚„…‡†„†ˆ…†‡†††††‡†††‡†ƒ††††††††…††…‡††††ƒ††††††††††††…††††††‡††††††††„†„††††††…††††††…†††††‡†††ƒ††††ˆ†††††††††††††††††††††††…†ˆ†††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††…††††††Œˆƒy~†”‘‹Œ‰Ž–…†s—„‹‹“‡|ƒ†Œ•‹ŒŒ„˜’‹yƒ“…Œ…—ЉŒ‚ƒ‡ƒ’‡‰‡Š…}…‡ƒ‰–މ†‚Œ‡{€Ž}Žz†‹—€Œˆ‹}…ކ•ˆ‡ƒ”Œ’Œ}“„ˆŽ‘‚…’†„~”u‚{’‹tŠˆŠŠ‹}|‰‰–‘š‡—Š‹Œ…œ‹‰€„ƒ›ŠŠŒ‰™„ŒˆŽŒ‡…†’……†€Ž“•Œ’•†ƒŠ•–Ž‘‘‹ˆ”…ƒ†Ž}…|„~y„‰ˆ“}ˆ€Ž˜ŠŒ…ˆŽŠ‡…”’Š‘„„ƒŽ†q”“†Ž‚ƒt•‚€Ž‹Ž‹x†›“…‡’z•ˆŠˆ”‹‡Œ€‹“’}•‘”Ž‹u‡‹…‚˜–Œ€†Œƒ†Š‡Žˆ„Ž‚}ˆ†‹˜‡z‡Šsrƒ“‰‰ˆ…{ˆ‰„‚„‹|…’|‰‰Žˆ˜…‡•ŠŒ’ˆ„•‚~…’‘€’Œ•™†~މ…ž‡•’‹–‘†މޑ†ƒ‘’‘‘Š˜—€ŠŒ‡||’ƒ„’ˆŠ‹€‹‘‘ˆ–ŒŠ„‡‰†~†‹“†„q–‹ŠŠ†Š“w‹“Š|Љ‰•ƒ|‘‡ˆˆƒ˜…‘Œ‡‰„„‘ŠŒŽ…z“‡Œƒ‡†Ž…‡„‹‹ŒŠ‘„‹‰|Š’‡”Œ‰{˜‹‡‚‰Š‘ŒŒ†~‡„ŠŽ–w„އ†‡‹–‰‡…މ‹Œ‘…}Ž|†|tŽˆƒ†‹””‘¡’Œ”u‹“†ƒ‹ˆƒ‚……‡”€“‹„•’…‰‹{ˆ„ˆ…‚€Œw‚•~’ª}~ŠŒzˆ”†‚ƒ’ƒ“’‰™tšˆ‡x‰ƒ‡…‡“Ž€š•w}|}Ž“„Ž‹™Š‹Ž–Œ‰–€€˜‘|Œˆˆ”Œ‹‡ˆ|‰‹”‰ˆ‹‹Šz‚x ~ž{{ˆ‘ƒŽƒˆŸ£Šš‘ƒŒƒˆ„“…‰wŠ„ŠŒ…”…‚}€ƒŽ‡‡’ˆŠ‚•ŒŠ‚‰†{w‚‘…‚Œƒ™“Œ‡Ž‹‘„Œ}ƒ†ŠŠ‚‹“‚yŽ…‹€{~ˆ”Œ”††…•‡†’yrƒ‘x†‘‹€…‡ˆŠ“|Œ†…‹†Œ”ŠœŽ|”Œ“š‰‰y}~‡{ŒŒ‹††‘Š‹ƒ~ŽŒ‚‘’‘›z“ˆŽ”†ŠŠ„…–Љ‰ŠŽ•Ž‘‰’–†Š‹†ˆƒ‡‘‚މ‹†z†ˆ…œŽ‰{‹ŽŠŽˆzŒ•‰Ž‹–x‹‰’Ž’ˆŽƒ—‘’‡‰…‡’–~„’x€–ˆ“–qŽy“І††……‡†‡†…†…†††ˆ…†…‡‡††„ˆ‡……††††„††„††††……††‡„†ˆ††††††…†„†††‡††‡†„†„††††††††††††††††††…†††††††„†‡††††††ˆ††††††††††††ƒ†††„††††…†††††††‡††††††††††‡††‡†‡†††††††††††††††††††††††††††††††††…††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††‡††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††p‚‰ˆ‚‹‚yˆ†€‚‰‰n“Žƒ„Œx„……Œ…„w‚|~‹‘ˆˆ…tŒˆ‚‡ˆ’’„‰„}„|Š‘„‰ŽŒ‡†Šv‚Œ†€‰{ŠŠ„~‹„ƒ€ˆ†z†‚„Œ‡€‡’w‡ˆŽ”‚rsv†‰›‘{ŒŒ~‰†ƒ€‹ˆƒŒˆ|‰†v‰‚•‹„•}~…‡Œ…ŒŽ‚„yz‡ƒ}y…‹~›ˆ}‰ƒ‰•~‹…‹€~ˆ{І‹šw”yŒ‡Œ|Œ„ƒŠz„ˆ~Žˆ|p†‹‰†‹‰„•‰~}€€‚~‡{{ƒŠ†~†Œ†‡sŸnt„Š…{†‡xzŽ…ކ„ŠŽr~††ƒ„w†…€‰‘‰…„’z‰Š•‰ƒ„‹‡„‹‹ŒŒŠƒ‘‹‹‡†x{ŠŒ‚Œ„‘Ž„w€ŠuŒŽ…~‚“„—†s‘‡|z‹Šu‰ƒ–…wŠ~†’•‰‡‹ˆ’…“‚ŽŽ€€Ž{„„sƒ†‹†€‹y‰‹”Ž‚€~‚“…‰Ž”•‘Œƒu”‰œŽŒ‡‡Œ‡‹’‚˜Œ˜‡Ž‹†ˆ’ˆŽ•Š‘{“…‘€x”‹„ŽŽˆˆ™„‡‚…„…‹‰—‰|‹jŽˆˆ‡‚ƒŽ†ƒ‰Œƒ……Š‘’—Šz‡€…’ŠŽw~‹ŠŠ‡Ž‚“ƒv„l†‡†ƒ‹r…ˆ¢˜“ˆ}••~€ˆ‡†™‰•Œ}Š…ƒ‡•€Œ‹ˆv’…’“}z”œ‡Œ‰r‰‹v†~Zƒ}ƒŠ„‡–Ž’…‰’‘–€–™|}Œˆ—Ž‚‚ˆŽ’‹ˆƒ‚Œ…ŒŠ‚‰…‹„†”„†„‰‹t…‘Š’l’‡“‘Ÿ‚|“‚’‚…‚ƒƒ†„ƒ•‡‰ƒ„ŽtŒŽywŽŒŽˆ‘…–“‰Š……ކš•”rŽŠ‘„Œ‡Œ†•‹†€v’‹z…„‰ˆs“{‡‰Žˆ‰}Œ‹ŠŽ–‘‹—‚›‡Š˜ƒ”“~†–—„Ž‘‹ˆŠ’‚“›‚˜Šv˜„|’ˆy…}Œ•Ž‹‚–ƒ{|u„ˆ–…‚‚zr‡‰ˆ‹ƒˆyІŠ|€‚Œ„z”ˆƒ––‹ƒ€‰Š‡‰„‡|}‡‡zŒ††zt†xˆ€ƒ‡‰‡‡“w„‹…ˆ„|ŽŽ‰…‚†Œ„‚‘vow‰ƒˆu†ƒp†|z‰…„€…‹{˜v€Ž…–‡u‘“€„‰ŠŠ‘x„މ‹†yƒˆ…‚w„z‚†w…|‚‚tl‡˜„Ї‰…‡‰‰}€ˆˆl””ƒ‰†…|‚ˆŽ‚…~‚†…—t‡yŒ‘‰Œ†ˆ‚„|¡†z†„‡yŠ…x§x‰‰ŒŽƒ“’“€‰Œ‡Ž—‡”‚Œ˜†t™‰…†ŠŠ“‹†Ž„}‚‘„šo”ˆ‘~‚œ…Ž|ˆŠ‘‹‡‹…‚†€Š…Œ|„‰šŠ’Ž‘vƒˆŽ”€Ž”„x‡‚„‚‘‚’Š‚‰Ž…“–‰Ž‰~‰€ˆ‘s‹’ƒ…š x}ŽzŽ”‰‡…”†‘އ–|“„„~‹ŽŽ”œŠ–’x“|r›‰‘”‡“•‘ЗކŒ’›‡|™Ÿ‡€…–‡‰ˆ‹‰‚”˜‰’Œ|z‘|–ƒv‡Ž~‹•Š•Žž…𣆒„Š~“…‘‰t„†ƒžŒ|t‹’‘„žŒŒ‹œm•‹†—w†{q–ˆz~…ˆƒ‹‰’Š‘vŒ€ˆ‘xˆ„~އ‡…Žx…}‚„{ƒˆ……ƒr”’‹}}’ƒ‡’‘—z‰‰ƒŒ•Œ Ž’‰‹Ž–ˆŠ{‰‰‡„{‰‹‰„‘‚v‘z€‰|‹…€‰y|‘‘‰˜‡Šƒ•‰Œš‚““ŠŒ†‰ˆ‰Ž€—‘•Š…ŠŒ‹‚Œˆ€‹Ž‡’‹‹ˆ•ƒ|ƒ™ƒƒŒŒŠ‰‰„‹‚Š“‰†Ž€ŒŒ”}ŒpŠ”‚‚•€ƒŽ‡‹‰–ŽŽ’•Œ‚Œ‡ƒtދޗqŠˆ–†…‚‹Š……‡‡…†††††ƒƒ…††ˆ†‡‡Š‚‡ƒ††€†‡„…ˆ††††…†‡…Œ„†€†…‡†„…‡…€‡‡‡ˆ†…‡†z†~‡†……†…†††…Œ‡††Œ……‹†…††…‡††…‡}†…†‡†‡‚…†…††‡…†‡††‡Š………††……††……‡…†…ˆ‡‡†ˆ†‡…‡‡‡‡†††……†Š‡††……††…ˆ†‡†‡††††††‡†…†‡ˆ†††…†…‡…††††…†‡‡††††…††††…†‡ˆ††…††‡†††…†††††††‡†…‡‡††††…†…†…††……†‡††††…†„‡††††††‡Š‡€}‡‹€•‡‚Š‘€œ‹”‘…’z}‘ŒŠ|†ˆŒˆ’‚„ˆ†‹“‹‹…z{ƒ‹‚‚‚‡–‰˜Ž€…’x~‘ˆ†ˆŒ€ƒ†Œ•’„œ‰‡Žx†ƒŒu‡Š’‚†‡ƒˆ’……Šˆ’‰ƒ€‡‰’ƒ„Š”Žq–˜˜ŠwŠŽ…•„sŠ”ˆ‰—z•Ž—„‰v‰™ŽUŽ…›„‡Ž‰—š¡ˆ’‰¨zŽŠŒ‘™”†ƒ|„œ‹„y›„“œ‰… Žšˆ–}—†ƒ‹•~“‚|’ƒ–‡ƒ~ƒŠ–†®‚‚yˆŒn‡ˆ‰‡‹†—‹Šˆ…y}ŒŒŠ‚ƒ†Š†ˆ†‡Šˆ…ЇŠy‹‰‡ƒ‚†v“‰Œ”‹„€‹‡…Šˆ‡‘Š}‡zƒ‰……}Œ‡‘‚…~†‡x‡‹ˆ‚{xƒŽ~€†{ˆˆ€‚‚‰ƒmŽ}ƒ‹ƒ‘ƒw‡†‹–Š‘¡yЀЅŒ‚–}Ž‹‘‘ˆuˆ‘{„’ˆˆ†ˆ…‰ˆ„{ŠŽ–ˆƒƒ|—ŒŒŠ‘Œ“ˆˆƒ‰ƒ‚„‰††€•„„†Œz‰’’ކƒŠˆ„‡{‡Ž…Ž~ˆw‹†‡‡}„ƒŒƒŠƒ‰Š‰’…ˆ‡‡Žˆ€‘„Ž„†‹{’‹€ŒŠt“‚‡‡ˆ‚€‡‹Œ“‡ˆŠ‡v†‰ŽŠ††y€†‡~‹˜“…Ž”‹†~†‘ŠŠ†’…Š‚ŠŒ“…‡‡xŒ‹…ˆ{~†€ŠŒ‹~†‡}‡€}†“r›”z†‡ŠŠˆ‹‹†‰Œ†‡‡…އ’†’ˆ‡Š‡}’‹}–Š…‰zŒŠ€Š‡Ž†ˆ|Œ‰Œ„Š“~Š‘”Ž•„‘„€‘‰†‡ˆ‹‘‰‘‚Š‹†Ž‘ƒ‚ŽŒ‡…z‰’Œ‰›ŠŒ”‹‹…Œ•Љˆ’†‹’ƒ’ƒ‰ƒŒ‹tŽŒ……‰‰q‹Œ‡…†{—…‡’ŒŠ…‹‡‹„†‘t’‹ˆ’wŽƒŠ‹‹~…Ž’’‹‡~Š‹ƒˆ…Œ‚ˆ‡‡‰tކŒ–Іˆˆ’’‰€~z‹…‹|“‘Œ”|”‹†‰z†xx€Œ~‰}މ”v–‰‘tŽŠwx’™x—‚‚{†zŠ|“‚†ƒ”ˆ“”z~“‹•ƒ–ˆ—ŒwŠs‚†•zŒ‘ŽЉ}‹‰ˆŒˆx“~‹‰‡‘}‰x‰§†††——’‰„…˜”‹’‚v”Œ|Š}‡‰’‚މ“Ž‹†…’‰z„Œ–’}”ˆ’—|‡‡v‰y‰‚|‡‘‘„†˜ƒ€‡˜ƒ‹†wl†Œ„‡‹ugƒ—ˆŒ{|…„„ŽŠ†‹‡†q…Љw†x…‰‘—ŒŒ‚Œ““†‰ˆ~“‡…–Ї‰Šƒ”ˆŒˆ†v~‡ƒv‘‹Ž“†‹‚|Œ€‹•}y‘y–{“”™{}Ђމ”Šˆ‰ˆ’”Œ”–˜‹~‘xЉ†~|ˆƒ„‡‡„“ˆ€†wŽŒˆŠŠ‡~”ˆ‹–†¡‰Ž‚€ŒŽ‰‹Œ~„‡‚”‘‰”‰‰†~•‰‰‘€‚ˆ•ŽŠ’І…„Žˆ‡ˆ•‰†’ƒŠ‰ˆ†ƒ‹‘Іƒ„s‹’‰‡‚“‚„’‹Œ”‰‹‡Ž‘Ž“ƒ†l‡ŒŽ‹‡wŽ|Ž…‡~ƒ‚€}—‘‹„ˆ}†‡zx‡„†—‹ˆŽ†w‹‘‹†“‚•‚”“•€|ŽŒ—‡ŠŽŠ’‹ŽŽˆ€Š‰‰ŒŒˆ~Œ…ƒ…‘z‘xž’|‚€ƒ€‹‹†ˆ‡•‡ˆ†ƒ‘Œ•„Ž‘ˆƒ’‰~‹‚ŽŒ‡ƒ‰}‚ƒˆ‹ˆˆƒƒ{‡…‘‡}’…‰‹˜€ŒŒ†‰„‹Š‹Ž~ŽŽ‘ƒŽ†{‡ˆ…Š‹ŽŒ™Ž‹‹‰}‰“‘“Š’‡‘ˆ„z‡‰‰Œˆ~‰r‘‘†}„ƒ“Œ†Ž‡ˆƒˆ“ŠŒŒ’‹ŠrŒ‘Œ™ˆŒ~Ž‚’„’ƒŒqy‹—šŒˆ™“xx‡ˆ†—ˆ‰ˆs†›‰‚Ž’•”€”ŠšŽ—x’…š}‹ˆŒ‹‹‘†Ž‘€‘‡~‹‰Š‡‰Ž‘Œ‹‰Œ‘|†…—u”•}‡†„š…ˆ‘ˆ”Œ‚‡‡ŒŒ“‘‹‡~‘ŠˆŽ‘Ž”Žr~‡—w‰…•“v~pƒŽ•”€”‚”ƒ“‰¡Œ‰”€‚ІނŒ‰•Œ‡•„†‰‹‡ˆw„‹~ƒ“ŽŽ¡’”ˆ“œ…ˆ–šŒ•’‹„……‰|…q†~‡‹‹Žu„‹…‡‰„“’‰ˆ‹‹ŠŠŠ„–‹…Ž{’tƒš}†t“tˆ‰“††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ŽŒ•€j„„ŠŽ‘r‚‹ŠŽ•†‘¢’…y†“‰‰•…Žˆ|„}‰……’‹žv“‚˜—„’•…v™~‰ƒŠ…x‹†‘ˆ‚”Ž„†Ž‰Žš‹’’……‚•…‰„“’v‘ˆ‚’ŠŒŠŒ…‰‡ƒ–‘Žˆ…‰‚‰ƒŠ}‘ƒ}ˆ‚‹|’”Ž„†‚Œ‰‰‡‘”‡‰ƒŒŒu|Š‚{€‚‚p…“Œ‚ˆ„Š‚——ŽŒ‰Œ‹•–‡’ŽŽ‹’…Œˆ”„‚‰†ƒ“Š›‹†‡€Œz”€ˆƒ€Œ‡‹•ƒ„‘ˆ†€œ‹Šˆ†‡—ˆ„‚ކ„Œ‰‹Šš|€…˜Žƒ……„€‡Š€Ž†‘€}€‰€zŠ„‰ˆ{‡‰…r†ŒˆŠˆ€†|ˆŒ…„‚ˆ‰„†…y‰zxŠˆŒ‰…’‡ƒ‘Šˆ‰„€‡†…ˆ~ƒˆ‰‹r€ƒ…Љ’‰‡Œ‰„Š˜vŒƒŽ’t‚Ž€znš„……v~ކ‡Œ‹w„‚‰x‡‰€—•‡ƒ„މ†€‡…|‰Šœyƒ‘“~†…‚Œ•„Œˆ~…‡‡}ƒŠ‡‡„ކ‡‚ƒŒv”‰‚‡„„“’…}…‚ˆ}…{‡Š€‹†„†„Ž‹‚‡‡Ž†„…Ž€†}Œ‹‰‹}o{„‚’ƒ‰Œ„u“„}‡Œ†…†‚„‚‚ŽŒ…Ž~Š“—•˜Ž‘’‰™“€Š‹Œ†‰Š‰‡Ž‡‹…‹‹Œ~Šw„‰ˆ{ˆ‘›‹€}‹ŠŒ‹|„„€ˆƒ‰‘†Œ”Œ…™Š—p~ˆŠŽ}Ž‹‰—ˆ{„‚…„Ž…ŒŠ„ŠŠ‰‹‡}І…‰ˆ{ƒ‡–wˆ‘¡ƒ“‡‡~•‹†‡‡Œ‡Žy‘„‹~Žˆ‰–~‚’Š}ˆ‰—„’Ž˜™‹›€…ŒŒ‰~”™‘ˆ‡„‡‘Œˆ„Œ‰…—‹‹~†€’€z‘z€}‹„‹Œ†‹”‡”‰œ‹{Œ†ŽŽ~Ž‘‹|‰‘ЋІЄ}}~Ž…‹‡‹‚ˆ‘|Œ•‹‰’‡‰Š”‡ŒŽ…‡~ƒ‚‰‘ˆˆ‰ƒ•ƒkx†‹|{…‘~–ЂЖj‰„x‡zЇ‰†…œ}™Ÿ”‘€¢‰Š€‡…—„ƒ–€‡…‘–€‰Œ‚†•Ї‡š‡ƒ…‹…t…˜…pЇ…†–Љw‡•‰Œ—Ž‡Šˆ”{–Œ•Š‡ŠŠ€ƒr‡‘‘ˆ’Š’v|‰‹…ž‡’‰‡‹‘‰™ŽŽ“Œ…‹šŠ~Œ…™’‰|”{’’‡‰ˆ…‰…“w–¥ˆ‰}‹„‰ˆ–ŠŽ‚ˆ‹††ˆ‰‡Ž™‹‹Šˆ€ˆŒ•ˆŒˆ‡|‹‘‰Š‹Œz|•ŽŠ‹Œ†šŒŒ‰˜x™‹‡€–‹†€ŽŽŒ‹ˆŒ‹~˜‚’‹”}‹ˆrƒŠ‰Œ~‚„ŒŒ‡w€—“ƒ‰—€ƒ’‘ŽŽ’„ƒƒjŽ‚}‹‡ˆ“‡‰Š€’Š”…•yœŠw…“Šˆz”•’މ‹ˆ…x„އ™—‘‹Š‰“ކ}‹•–†ƒw…„‡…Š˜•Œ…ƒŒ…‹yƒ•€Œ‹‘‚ŒŠ“yˆ–“Š—šŽ”’”†ƒ…ˆŠ‹}Š{†€…€‡}މ…ƒ‰““ˆ†–‰Œ†‰†‰‹‘{‘Œ‘z”Šx€‡‚–}|”•ˆ‘†‡”t’†ˆŒ‹x†z…Œ…‚‘–‚…š‘ŒŒŒ†{”ˆ‚ƒz…‡‡€‰“Š‚…Žs}‚€€ˆ…€Š†‘€ˆ…}~‰—w˜‘{–‘‘”€‹‡‰‡‰ˆ‘‰Žˆ’„ƒ’…’|“‹‹~‚x…~Œ‡€ˆƒ•‹…~‹†‡ŠŠ“y˜‹–† Œ“~}‰‚ŠŠ‹ŽˆŽ“Œ†‡ˆ‰ŠwŽ’Š€™Œ™‹‹‰“‚™†‹‹‚Љ‰‘~Œ’‘‘Šx‰Št‰Œ‹‚„‚–|’”ŒŒ•ˆ’“”Œ…‰pŠ“ŽŠŽrr‘Ž‹Œ‚ˆŠŠ“™‘ƒˆŽŠ¡ƒ„v“œ…zrq…ˆ”v‚‡Œ‚wŸˆˆŽo|‰}„—xŒ‚‚n€‡‰•‹Šx’²’}Ÿ‰xuŠz‹v†‹‰˜‘ˆ‹‰„u~ƒ„Žƒ‘œ˜Š›n„€Š•t£™‚’†Šy›Š‰…”w}’•‹…†ƒy‡“•‰—“ƒ†ˆ™„”Ž‹Ž˜‡ˆ{u„sh‹vˆ„™–žru—‘„ˆˆ|}‘‘‰Š‰–ŒŠ’Š‘ƒ€“‰Œ˜˜‚€‘xˆŠŽ‰ebŒŒƒ|˜ƒŽv›ˆzŒ‚‡~”Ž‘†‡ ‡šŽw“šn¥•}‰–‚z‘†Ž~…†}eŒz}uˆ—wwЇ£‹Š—ŠŒ¢Œ†‡i…‘–vy~‰ŒŸƒ~~ˆ€k…†‘“{‡›†˜‹“•‚‚v‰‘¥…”~Œ„ƒ„‰‰€Œ}—ƒ{•}Žˆyr”|‡„•š—›s›…‹…˜›‹˜…ŠŽ†‹s~ˆ‰z…y–“€œ“†ˆ•‡ršŒ„Ž‹‚’Œ{ŒŒŽˆ|‘Œœ|†Ž“‰ˆŠ€˜–˜Ž†’†¦†—•Œ…†…ˆ–Ž€Œ•‚‡€|Š˜|ŒŽ›Ž‘ІŸŒƒƒ{‚j¡–†‹€‹‚•‡‘•ŒŽ~‰‹•€x‰Š|‹‘…‰‚}}އ„Œ…ƒ•z˜‹Š~Ž„{‹‡‡‰ŽŽˆzv{Ž‘†“‡”‹ŠŽŽ’…~s…’ŽŠ“†‹‘ŠŠzy’‹|„Œ~€†“†•‰Œoˆ€y‰Žt¤Žy‘…”…‡Œ„‹ˆŠ‚‹‚“‡„~ЂЅ“‡’†‡ƒ€…‘n|††Ž|ƒ’Š‹~ƒ€yˆ}‹„Š“€€—…†Œ™}‘‚˜‰—‰…Œ‘‘˜xˆ‡‚ˆŠ—‚tŠ€‡~’†ˆŒš‰„Š••„ˆ††…•’‡Ž‰šŽ‹žŒzŽ”…Š„‰tŽ~„‚“„‰’”…‡Š™„„’‘ƒy„’‰ˆŽvŒn‚Œ’†Š‹†{ˆ„”‘…’ˆ‹‰w‰‚‡”ƒˆx„Žˆ}•’ŽŠ”ކ‹ŠŒŠ‹•‡‹„Œ“†Œy„†Š‘‡Œ‘‰…|ˆ‘}~~–vœ—|††Ž†‰‹‰•‡ˆˆ†”„’Œ‡€‚’‹Ž‹‚†{‚|„’‚‰‡~ƒƒ{‘‰Ž|Šˆ–†Ÿ|‹“}””‰…‡‰Ž†ƒ†Ž‘‡‹‹‹…w‘Š”}ˆ”—ŽŒ’Œ†‹’‡„ˆ•Š’‰‘ƒŒƒ‡Š‹†‹‰ˆˆu‹‡yˆ–‡‚•‰‰‡‰Œˆ’‰Šˆ‹Ž…‰u†Žˆˆ…w‹‚‹ŠŽ„“‘y†n—Šy|g‡„ƒ‡y‡w”‹~މ…—‰‚„so~ˆ‚‡}†y”’ƒ„~ŒwŠ€}Œx˜|rl‹˜uˆ‚‹y„€t…|t}ˆ†‘‚“Œšu}†tz~x|‚vŠ‚u t“t˜wŸ‡‰†“Š…‰¢ƒyr†ˆˆƒ‚~ƒyz…‘~v—“•y—‰rpŠ‚€†‡„Ї¤“‚†}ˆ„zªmˆ††{—€Šm„~y’ƒ””„oro{Šv††’‰’‡†ˆtˆŽŒ}†‘…”q•‹‡‹†‚€……†|~|~Šz}Ž“‰Œy“’mqŽ|‡‚‡m†qƒŒ–h—|}v„v‚—r†‚†…‡‰†‡†††„†††ˆ……†††††„‡††…††‡††…†††††††‡††‡…††††††††‡†††††‡††‡†…†…†††††††…†‡‡†††…†††††††‡††‡…†‰†††…††ˆ†††…††…†‡†††††††…††††„†††††…†††††††††††††††††‡†††††††††††††‡†††††††††††††††††††…††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††”ƒ‰ƒ‡”ˆŠˆ}†„Œ€„Œ‰ˆ……ŠŽƒ…ƒ‰“…‰……‹€Œ‚‰…•–…Œ€ƒ…r†Š‚Œ•ˆŒ……“€Œ†Œ‡…‡”ƒŒ‹‰€‹†‹‡zx‡~‚†‚‡ˆ‰ƒr†ˆ‡‡†ˆ„€€‡~Ž‘z‰…Œ€”•‘†…“’‹”Šƒ‚ˆˆ‡……„ˆŠ…Š„…ƒ¢Š€‘–„‚‰†‹‡‰{‰„‡Ž—‡†•ˆ•‹ŠŽŠŠŒŠ‘˜”Ž{Љ„ŒŠ†ˆ~…—‘‹}Œƒ‰“{†™…xƒˆˆ‚zŽŒ…’’Zˆ{–‹‡zŒv‰‡‚{Ž“{„ˆŒŽœˆ~††††‡††††††…†††††††††††…†…††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ƒ‰Šwwš•˜Œ…˜‹—‡tŽˆ‡–‰‘ŒyyŒ‹~ƒ„š—€˜‘ŽŠsƒ‘Œ‰„“„Œƒ„‡‰ŒŽˆ‡~…‹~}‡€ˆˆ€ƒ†…†Žx‚‘u–‘}ŒŒ‰†‰‚ˆ‰„’…„‹Œ„„—ˆ~ŠŠ„‡’„’}›‘|ƒ–u‚”tƒ‡‰„zt–ŠŠ‡Ž•wˆ”‘—““ƒ“…’‹…Œ‡v—‘ŠŠ†…‘‹‚„„Ї†’‰Š”‘†…Œš’“‹‘…‘‹‘€‰‹‹v‡ŽŠ†ŽƒŒwŠˆƒ–ŠŒ†Žˆ‰Šˆ”ƒŠ‰ŒŠ–o™‹Œ‡ŽtŠŠ„‰‰‰‹~‹ˆŽv‡‚~wŠžƒŽ˜”„tŒŽ†Œ…‡‡•|…‹‰€~’‹qŽ‹ˆ‘€ˆ”“†…‰sŠŽ†‹‚x†ƒŒ‹Šˆ““—“ŒŒ”yŽŠ•…Œ‚€€‡‡Š~ˆ‰˜ŽŽƒ{„†z‹ˆ‚…ŠŠv†’“„Ž‘€Š‡{“‰„‡‘€†ŠˆŠ“„‰~ƒ‡Ž–ˆ‡Š‡‹›€z”ˆ„’˜Š—‘™˜‡’‚ƒŠ‡Œ‚t„’–‡ŒŽŽ‹‡„‰ŒŠ€‘Œˆƒ†…„‘~ƒu††…}…‹ƒ•‘‹‚—‘‰‹“~ŽŒ††ž‡“ƒ‡ŽŒ…Ї‡…„‡…ˆˆ†‡†††‡††††…†‡†‡†††…†„†††††††††††††††††‡††…††††††††…††††††††…††††††††††††…†††‡†††††††††††…†‡††‡††††††††††…†††††††††…††††††††††††…†††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††‡†††††††††††††‘‹†ƒ„vŸ”s|—‘‘•„w–—zt„‘Ž‘’ƒ‰Š‚ž„…v‹~…­ƒt‹ˆw‰ˆ‰ƒƒ~z‘¸„Ÿ‰nt“š„o†}ŒwŽ„†n’Іz‰|”Š~””z‰‡|w›™}‰u‹„˜¢–Š•…„o{ˆžˆ„‘pšŒ–„‰Š€‰‡{“ƒˆŒ‡–—“‹Šy‹ŒtˆŽ}…†’Ššqs†™‡œ†ƒ†ŒuŒ‹‹……‰‹Œ~„—Œˆ“„y†Š‡‰š‰vjžt•…“|†—q†ŒƒŒ{”‡Œ˜†›„‰‰|Š‹{…Šu‹‡Ž‹ˆtЉ›ƒ†‹ŽŠy‡ŽŒ‰‘‹Š†ƒrƒ‡|‡u|‡|‰•“‘ˆ—ŽŒ’…Œƒ’‡‚Ž€“Œx‹ƒ‡‡‹‘‰„~ƒ‹ƒ…•~|x•’}ˆ‹Ž†‹†Œ‰‰ˆ†‘Š’†‰•ƒ|‘…Š…‘‘€}z†|ŽˆˆŠŠ’‡‚y‰‰Š†ŒŠ~ˆ•ˆŒˆœ‚}‹†‰€†Š‚‡‘‰ˆ‘‡‰’ˆ€Œ…‹€Ž’‡Š‹˜Š‡Œ„„’‡€ˆ“މ”Œ’†‡‡…Švˆ…”‰‡†ˆŒr‹Š‹„„•†ˆ‹‹‹‰ŒŒ‘†Š‰‚o‡ŽŠ“…†xzŒ„’Œ£„’€€˜”†‘n„„‹šŒ‘†ªŽŒy{’–€‡ŸŒˆ’‚‚zš†™Œ…w”Š“€…•š‰z‰iŠ’¦€‹‰…ƒ”ФƒŒt€‹{˜“”|•‹…€|wŽ‘€†‹‚v‚u„†‰uŸ“‡„…ŠyŠ¢—Š‚ˆ†˜ˆˆ”„”z—•„}›‰…ƒ“‘|„‹”‹Š’p’ƒ•œ‰Šˆ|‘‚‚‚„Œ«‡}‰‚„…‡ˆ”‘…Šš–Ÿ‹†ŠqpŒŠ“Š˜“—yx–†–}…’“ˆ‡€Ž„Ž’‚…†‡‰“{}‘Œš“€~†‡„‹„‰zˆu‰‰ˆ“…¡•‚…~‚Œˆ‚…‹‰ˆ‡‡’”ˆŽƒ…Œ…x‡ˆ‘ŠŠ‡‘‹Ž‰†‚…ŒŒˆ€†x‡…‰}‡—‡›Œˆ†™yŒ|…„†Ž}•{n‚’‘Š ‡’Ž|‚•›ˆ„{ˆ‡‡|Œƒ†ˆŒ„Ž}Šƒƒ‰–‹„†ƒ‹ƒ€yŒvƒ‰”Ž”…|‰‰ˆ’—Šy…Œ„Œˆ…”ŽŒ…’‚–zŒ’†}‹˜~…†—ˆ††ŒŽ…ƒ–˜Œ•‰˜‚‹~Œ’’“Œ‘ƒ“›ˆˆ‚’‰Œ‹Ž›z—˜ƒ‡„x€‹‘”‚„†ˆ›‡„‡†”~…ˆ‹Š‘†•ˆ“††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††“|{šŒ€–‚Ž~š‰z‹Œ†’|{ƒ•Ž„•Ÿ’“r“Œˆ‡€†‘‘‚™“Œ†‡ŒŠ•І–ŸƒŽ„…‘Œy€Š‹†Ž€vš€žˆ…y}‹†‹r‡’›€ˆ|ŠƒŠ~Šˆ{ƒ†…˜‘‡Ÿ’‡…}††p†…„}ˆŠ‹Šˆ…‰–“ŠŒ‡{އ€ˆƒ‰™Œ‘ŽšˆŽ•i‡•…‹|‡Š‘~l•‚†’–œw™‹’˜ˆŠˆ”{‹‰Œ”Ž—˜‹zˆ„™pƒ€šŠƒuŒw‰ƒ•„ƒ˜’•“‘ƒ|ˆ—Ž˜Ž’ˆo“Œ™…ƒ†’Žz’ŽwŒ„“Žƒ‰ˆˆŠz„Œ…ˆ‡{r‡…“‚…Œ‹‹„…Œ‚Š…Š‹‘Œ‡Š‡‹„•މŒ‰ŠuŒ˜‚‡“‚†€Š|Œz†‘~ƒ€‚”„zŽ…‚wˆ‹ƒ–zˆz•‡€’ƒƒŒ{”Š”‡‰‘†x„z~’†‹r†ŒŒŠ„}ƒn„Їˆz‡‡Š‹‹‘xމzwŒ…™Š’Š…Žˆ„‚ŽŠ•†‹‰Ž}ˆyŽ‹‰Ž’…“‰‚’Œ‹‚‰Š‘€€ˆ†Šˆ€Œ‰‚‚†Ž‘Žp‘oˆŽ…Šˆ‘ŠŠŽŒ’ˆƒˆŒ’‚ކ‚sŒ†Œ’„xƒƒ‹Š…Œ††††‡…†††††…††††††††††††††††††…††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††ˆ‡†††‡†…††…†††††††††…††††††††††…††††††††††…††††††††††††††††††††††††††…†††††††††††††††‡†††††…††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ˆŒ{u‹”‹ˆ‚„‚ˆŒŽ‘ƒƒˆpˆvŽƒˆŒŽ†‡~ƒŒ‹ˆ„|z„}†vЉ‡‰~„~…‡Š€Š†‚Љ„…Ž‚ˆ…„~Š‚Œ}ˆ}€~ˆˆ†‹‡„ƒ{|Œ‚ЉІˆ†Ž|ŽˆŽ””…~€Šs~‡…~‚†ˆ‹„Š‚x‹ƒ”‰‚k•‹ƒ’“Œ‡€{‹‹‚Œ~ƒˆŽ”‹ƒ~†ƒ‰ƒŒ…†‹…‡‹Š‚ŠrŒ•‹ŒŽ……‚Œ—†‰„‹†‚†ŠŒŠŠ‹…†„€‡€}ŒŒŒˆ{‹„‹‚†ƒŒ‹„„‡€ˆ…vƒ…}‘…Žu“Ž|ˆŒ„‰‚{yy‹†}|~oƒ}•އ€…‰raŽ€u…{‡„“†‰~„‹¦Œ„‚˜wƒvlІ€~pš„yh}‘y†€‰~—uz“†…Œx•¡‚™~¤x…sl„ ‡ŽŽv}‘‰‡}vs~„ˆˆ……Œ†…Œ~І€…}Šyy‡‡…’v†€‹yy‚x‚yŸ†’|V—l’ˆ}‚|˜‘qnƒk—‹b{‚Ÿ¢‚f“ˆ~y‹ptv‰{Œ“o‚˜u|hˆ¡˜Ž†‚ŒŠ†Š‘w~v““~z€†‘–„y£‘Š{…zx€‰„}nt|€’nr{„•{~ƒ‚vŒ„vŠŠ‡ƒŠu„¢y•ˆŠ€„Š€‰‡†…”‹‘‡””Ž‹Œ–‚‚z‡†ŠŠ‡‰‹Ž–ˆ”‚‡Ž|Š…€w†‰€}†Š—‹Œyˆ–xƒ‚„Œ~…Œ‹ˆ|‚‹‰“„•…v†Žš‡ŒŽŒ„‰€…Ž‹„‹zŽ‹…‡‘‹ˆŽ†€€’ŽƒƒˆŒŽ‚”„ŒŠ‡•Œˆ’‡Š……“Œ‹Œ‹“‡‹†…Љˆ‡‹‰‡†’‹ŠŠŠ–•”ŠŽˆŒ˜†‡‡‡‡‘ˆŒˆˆƒ…‘…‰ˆŽ’ˆŠ‘‹v†„Š‹{–Ž„„ˆ…}’†Ž‚”ˆ‹‚†‡€‡‰……Œ‹’…ŒŒˆž‰…“Ž}Ž|ww…€„u~‹‰€…~…‰‚‡{z‚uœ}‡„†‚}pƒƒ{Ž‘†~އ„„y¡ŒŒ„‰xvu€Ž‰~ŽŽw†o„’„„mwŠw„„’”ƒ‚‰–€ˆ|„}ƒw‹{s–‚ƒx…Šˆ‹‘‚‰ˆ…›xvŒˆ€”ˆo‹oˆt†ƒ€”•v’š‚‚‡†Œƒ„˜‰y‡‘šŽŒ‘Š~€…€|Š’––Šˆsux‚Œ“Šu‡ˆŒ€q’h…‰Š“‰{zŠ}|‰Œ‰~Šˆ¤|‚d‡ŠŽ‡…„†‰zƒ—”xz‡Œw{„Šƒ‚Œ‡ˆ}{ƒ‚v€ƒŒ…}”ry††y‰ƒzzˆŽˆ’‰˜y’‰ƒ‡‰‹‘‹‡Ž‡y|™‹‚ƒƒŽ„’Š˜“…wy‰‰‘šŒ‡‚‡†‡ˆ„w‰„…~w‰„†…}‡‰‰|z–y‘—{„Œ“ƒŽŠŠ‹‰—”‡Š””Œ‰}‰‡‹ƒ’‰„€x‚|‘‹vŠ‡šŠ€„{’Œ‹ƒ’–~•„‘„—Š‚•ŠŒ|‰Œƒƒy”‹‹†”†‹Šx„…‚‡‘Œ‰“—„’“ŠŒ—’†ƒ…Ž„Ž}‡‘…‹v’…Ž€‰Ž…vŒŒ‡Šˆˆ•€€†‰†“–‹Œ‰†ƒ‹‰m’Ž…Žv‘v‘Š“œŠŠ€™ˆ‚ކ€z¡”“‡•”’މ€q˜ˆ‘†š€|…‘ƒ‡“‘Šku–xŒvޤ’„‰ƒ†„†u„‘‹ŠŽx†”x€Žˆˆ™Œ”–t~Œ…“€ŠˆŽ€†z‰z‚‡…‚œ•Š tƒ‘ƒ–wjƒ‹žyz” “w…“z€ Œ‰€’t‰ŽƒŒ~…Šv“™‚•‡‰™ˆ“ŠœŸƒ…„{„„o‹Œ‹€Œˆz‰‘uŒŒ“‘Œ‰˜’z‹‹‘Ž…•‹Ž†‚ˆ€v‚ˆŒ›’„y£~‹„”Œˆ“ˆŽ‚Ž‹Œ›—ЇГƒŽt‡€Ÿ“ˆ“v‡“{†ƒƒ€†Œ…„’ž‰Ž–Ž‹Œ„“ƒx|Œƒ}ˆ‘›™…ˆžvŽ…ŠŠˆ{y‘~‹}…‘ˆ—‹›‰r˜€ŠŽ…‡‰€…Šm‡‰ƒ•†ˆˆ‘t””£{‚z†ƒ”€u‰‰‡y““„‡¥ˆŒŽŒ‡ ‡‰ƒ’‘}‰Š‰w…{˜}†‰“Ž•‰†Š’–‹~… Š‹‚”’–w‡ˆŽ‹‘r˜‚Ž~†Œ‰–‘‡z…އ’}—Œ†’•ƒ}€Ž†ˆœƒ—‰’‡ˆŠ‹‚‰˜Ÿ‹y›…zŸ’™{|ˆ‘x…€‹…ŠŸŽ‰‹“’Žyvƒ‰ˆŠ‡”ˆ•‰ˆ…‡†‡‡‡†††††‡††……†††‡…††‡†††‡†…††††…††††…†‡††…††…††‡††††……†††‡ˆ…†…†…†††‡†ˆ†††‡†††…‡†……††……‡†…†‡†‡…†‡†‡†…††…†……ˆ†ˆ†††††‡††…†‡†„††…†‡‡„†‡‡†††††…ˆ‡†††‡†„…†‡…ˆ††††ˆ††‡…†…†……††…‡‡†††‡†††ˆ…††‡‡††‡„‡ƒ…‡…†ˆ†ˆ††‡…†ˆ††…‡†††……ˆ†„ˆ…†††…„†…‡‡†‡…††††‡†††††‡‡†‡†……††‡…‡‡‡‰«†~ˆ|ˆ…ˆ‰iˆŠ„Š’‰“z“}„‡‹€“‰†‰Š‡ŽzŒ‰‘’ˆ†˜|†‡‘“‡}‹ˆ’Œ…‚Ž€ˆ‹€…ˆˆŒƒ…ބޅ˜Ž“}‘{‘w|’~‹†Œ†‘ˆˆ‚ˆ‹ƒƒx‹‡ŠˆŠ‚”Žƒz|‘„v~‰˜›“‹oŒ‘ŠŽ–†v…ƒ‹Š˜‰”’‚†Ž~Ž—|‚v€Žu…”ˆŠŠ‡ˆ‰’‚•}Гޗ”•‰…‹”‡Ž‰ŒŒ“ ’Š€ƒ™‰„‰ˆ‚Œ‚‚—zŽ‹”€‡ƒ‡‹…šŠ|”†ˆŠ§ˆŽ‘}‘•…‰}Ž‹‹š{—Œ–~y~›‡z‰}ˆ‰Œœ’”w‚€‚„~ykˆ…‡–ˆˆ‹n…‘z’…m„ywƒ{w}’ˆ}sŒ|•€vt‹˜€‹—v‘xŒ„}xx†~‡Žw…spyƒ€†}†‹ƒ‡ƒ}r‡Ššˆx‡|ŒŠs“žŠ‹€}mtŠtw‚Ž|x‚|x‡Š€‰‚…szˆƒŒ…‰†…u‡x†…ƒŒƒŠ„•Œ•w‘{ƒ|}ˆ†’…ˆ„}ˆŠˆ‚„†“”ˆŠƒƒ…Š}‹y‰n{y‹€‡|€‰–{rz•‰‚z}„Š„ˆ~ƒ„‡|„ƒ‹ƒ‰xj„jƒy„ƒxŽo”|}„Œ}†ˆ‹†v‹Š“ކƒŠ€}†Œ•ˆ‹‰ƒ‚Љ’…ˆ•‰–Ž‘Žƒ‘žŠŽŒ‰“’އŒ‡ƒˆ†Ž‚‹“€|Œ…Š‘ƒ‰‚‘|~“•{–{‘ŠŠ‹ˆ‹‰„Ž…€ƒ‰ˆŽˆ”‹„‡“‰‘Œ–€Žˆ‚Ž„Š{‹…ƒ‹ƒ~‰‘†Š‘”–Ѕމ‹–„’‚ˆ„Š’‰†‡‹ˆ—‘ŠŒ‘Š“Œ„†…†}„‰‘}ˆ”ˆ‡–~•„‘‹”–Š…Ž”„މv‡‡”ŽŒˆwŠ’|‚Œƒ‹•‹†Š…’‰‡‡“—…Š‘z‡”‘t{’ˆ”Ž‚†{~’”ƒ†‰{Œƒ‚‹ˆ‡‡y‹ˆ‡††~ˆ”{‡‡‰…€†‹‚“†‡„‡’…†‡…‰w~’’‡ƒ€’„ˆ„‡ŽŒ}’†„‹}‡…€ƒ{~–‹†‡~}†‡Ž‹†Œ…€ƒ€”“‹‘‹’}~‰z€‡„‰pŠ„Œ‹‹…‚wƒˆ‰Œƒˆ…~ˆ‹Œƒ‰ˆ}w€€†”„€Š‘„–‘Š„‚Šz†{ކŒ–ŒŽŒv‹•Іƒ‚‡˜Š€Š‰‚…oz‚“‡ŒŠƒŠ…‚Œ’€‰Ž‚Œˆ‚„Žƒ……‚…v†‰|œy”€~‡…Ž…w‡w„˜˜ƒ–……ŒwŒ‡•‰x„yw“‹~„ˆ‘ž|•„t†Š‡†y•€„†‡Œˆ‰|t~{‰‘ƒ€ŽŒˆŠw†„މ„y‚‹“u–{„‡yƒ„†ˆ†‰‹†‡‡‰ŒƒŒ“’‹‡”€–†“‡}„{ƒŠ€‹€‰’Ž’Š€…‰’ƒŒŠq‡Ž‡”˜ˆ–ˆˆ~…•“ˆƒ‡‰•†Œ‘…•œ‡Š…“ˆx†|Œ„ŒŽ…Œ†šƒ’Š…†˜‹‚„‹‰‘”„ЉЇ„Œz„‹~†p‡ˆŒ€ƒ†‘’€†’‚‡‹‹ƒ“˜„mŒˆ‡Žvˆ„‘–„”ˆ…‡zƒŒ–“…’{‰…†{އ‹–Œ†Œ‡€‚˜‹‹ƒƒ’†–Œ—–…~ŠŒ‘ŒŽŠ…‰ƒ‘‰Š’€‰Œˆ„}{…Œ‡ƒ”‘‘|ƒ“|Œ—€Š…Œ…ˆ‡††‹”€‰‡Œˆ’‚}ˆˆ„ƒ“|‰ŠŠ{sƒuˆ’„‰ˆ€…‡’Œ––ˆ†‘†Œ‘ƒŽ€ƒŠŠ‡‹‹Ž‹•”Žˆ‹Š…‡„†z‚ŠŠŠ”ˆŒ“…‘’Ї‰’’‘Š’’‹…‰ˆ€‹s‹„‹‘ކs‰‡~‡”•Œ„އŒ~ˆ™Ž’~†€t‘™ŽŠsq“ŒŽŠˆ‚‰‹Ž‰Œ†‹‘ЉŒ‘‘Œ„€|ŠˆŠŽ‘€Š“Œ‹…‘Žˆ…”ŠŒ‰‡‚ˆŽˆ‰Š}}‡…†}‰‡ŠŒŽŠ…ƒˆ†}|Œ’{’•~‡Œ†Œ†ŒŽ‰wЇ‰ˆ‰ˆ”ƒ‘‚ƒ•’†™‰‚ˆw…ŒwŠŠ€†‰‰‚„‹ƒŠ‘ˆ~‘Œ‰—Œ”‚…ƒ”‰Œ†‡‡€”‡‰ˆŒˆ‹‡„Žˆ†…‡€‹’‰€‹–‘’‘ˆ•Œž‹ŒŒ„‰‹Š†‚…‹~ŽŠ‚ˆ†‡‡|ŽŠ…ƒƒ”ŠŒŽ“ˆŠŠ“‹ˆ‰‹“n–…rŒ†‰‹‰Š†††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††˜o”z‡zw‡ˆ›•’Ž”y•|„•Ž‚£—„Љž’’ƒ†”}Œƒ‘z‘ƒ¥„¡‰Ž‚‡‘œ…–ƒvf”zŒ’•‡’š“‹„–q}”‚„wŠ„qu•ˆ’‘…ЕЗ‡†€„”–z™”m‰––…v“€…˜‰v˜Œy…ˆš|Œ|‘•Žk‰‡pju—~kŒ‰šz˜‹yŒ„”Ÿu™s€„•„„’} ‰Ž‡’•ŒŠœy—‡ž‰|Š‚{‘‡x„‹qƒ†Šžx¤{~ƒ‡y‚ƒ†pˆˆ”‡“‹…˜‚}z—{•ˆ€ƒ–sžqŠ|€‰Œ‰‰ˆƒ†ƒ}‚“€‰€‘†Š‘…ˆ„ƒ„‰‚…˜‹…’…zŒ„‰œ}—…Ž~‡‡ˆ‹‘……’„ƒ’ƒpyy’‹zŠ|vŠŠtš„z€’ƒ‰‡ƒ’„ˆ}ˆŒ†œƒ††ŽŠ„”Š€‚…‚}†“ƒ‹†Ž•†€€€‹†{Їމ•tŠŒxvŒ’†…Ž‘‰“…†y|†ˆ†„x‹‚ƒ‰‘}‚†„ŒyaŒ‰{•‹‚ƒ€uƒt™£•{yŽ~‰„•xˆyvŒ„†‡š‡y‰Š–ƒ‰¢„‚„xŠ€…‹ˆ‰ˆ~ˆŒ†…’‡Š‚‚Œ‹~|Šˆ…ƒ…„Š……†††††††‰††‡†…††‚ˆ‡†…†‡ˆ†ˆ††…†††††‡…†‡„†‰†††††……†††††…†…‡†‹†††††††††…ˆ„‡†……††…††††††…‡‡†ˆ†…‰…††Š††††††‡‡††††‡†††„††††…†††††††‡††††††…†††‡††‡†‡††††††††††…††‡†††††††††††‡†††††††……††††…††††††††††††††††††…††††††††††††††††††††…††††††††††ˆ†…‡†††††„‡†††††Ž‹‡•‡}ЗЉ…‚—~Ž”‹‹›‘™s~†‡‰ˆ†„|Œ}ƒ‡‰zr‰Žƒ‰“š‹Љއ ”‰Œ‹‡‘…ƒ‹†‰‚ŠŒ˜‡“Œ‡Žr‹ˆ†‚“‘‘yn…“…‹€˜‡z ŠŠŒ‡~Ž”‹‹~‹†Œ~‰’u†‡††¤Š|‹†~Š•‡„Š•ˆ‘Œ‘}’}€Ž–”–’‰s›†—€‡‹™„”“s“‹‹Ž”‡†ƒŽ†‹‰‹‘ˆ€{˜‹„”‘ ‹ŠšˆŽ‰šƒ‹ˆ’‰„{”‚™‰~‹}‹™‡—“zœz”‡‹ƒ’‡ƒˆtw‹“…•“ˆ“™zˆ‰zwzŒŒŠŠ€ŠŠwŽˆ…ˆ€†„€t“‘Œ†‡„|sŠŠzމ††‡}ƒ“ŽŒ„‚Šzv’…„ˆ„…Œ{†€}‘‹wr‡ˆŠˆƒˆ‡’ˆ‚y‹ƒ…yˆx‚€€zŒŒƒ“ŒŽŒ~–‘†Ž‡zˆŠŽzz{˜‚{…‹„v‹t•Š…|‘ˆ€Œ‰††‚Šˆ‹‰nЇ‹€–Œ…‡‰„ˆŒ•ˆ–ƒ„v}x~|Ž…ŽŠ‹ˆˆ‚|ˆƒ‰—„†Šƒƒƒ†„ˆˆ|Šƒ„‡Ž|€q’‹Ž‚ˆƒƒ€ƒ—{†‘‰v‰ˆz†p•€‚x‰†{€Š‹{އx’Œ†‰„”ŠŒ‹{””ކ‚‚…”€‰ŽŽ‚Ž••~uˆ’ŽŠ‹‹‘„މ†‹‹—’“‰oƒŽŽƒ’•š‰{ޡޒ”Šƒ’ˆ…‹ƒ”Š’Œ–’Œ‹”nƒ‚y‡z–Ž“~~„‡Œ‚…†–ˆŒˆ…Ž…Žˆ‘Œ‡Žƒ‚ˆo„’ŽŠŒšŒyˆƒy–…x‹Œ’ˆ’—„–ŠŠƒ~–Žˆ•”™‚z•Œt‰Ÿ~Ž˜‹“ˆ“•„‰†ŒŽ”ŽŠ‰ŽŠ…„’ІŒ‘™Ž‹“€—††zŠ‘”ˆƒŽ~ˆw™}‚‡Š‡–ˆ•‚šl›z¥Ž”…Ÿ…Šƒ‘Š‹z‡…‡Ž‰‰Ÿ‡~©‰}}’ƒ…œ…†‡”†ŸŽ”•…‰™~‚}‡†‰–‹‘…—‘‰‚’‰Š…„”€„€ˆ‘ƒ‚„¡†”€Ž{•‡mtƒŠ€{wŒ†ˆ…’„”o™y‡’w˜’v…ˆ†‡ˆ†~‹Œ„l‘yŒ‰˜‰™…“|~t‹Œ‡‘„†t—’–z‘‚’‡„–‡†›”˜“ƒ}‡“…~‡…•†„}›˜†„’~‡•žŒ‡¡•“ˆŸŒ‹Ÿ{ˆ’‹|‡ŠvŠž–Š‚„‚‘‘…„‚ƒŠ‘y’žœt€Šˆ|‡ŽŒ™…ކ“‡–|ˆ‹ˆƒŠ“†ŒŒ›“›ˆˆŒ‡Ž‡‚ˆŒ}•Œ”‰Ž‰}pyŽ{{~’ˆ–‹‹‚v“”Šs„˜Œ„{–’ˆŒ~~Ž|~€‡€‡Š‚Œ„{{”‰•{|‚‹t‹š}žŠƒ{zˆˆ‡‘ƒ†Ž†‹’œŒ›Š~ˆ˜yއ“‡ˆvŠ}†y‹ˆŽŠˆ“…‚ŒšŠ|Ž‹†{Š–†Ž’Ž€‚‚’‹ƒ‡ˆ†‹‘†‹„’ˆ“‰„—Œ‚ƒ„Œ’‘‡…€’…—‘ƒŽx‹ƒ‘‡”Œ“‚…‚z…‰„ˆŽŠ‡‰”‹rŠŽŒ‰|‘†‰‹Ž“‹–‰“–Žˆq”‘Œ•w{†–€ƒƒ‰‡y‚•’…~}ˆŠ{ŒŒ‡„ŒŠ’†|x€‚›‹…Œ„††zuЀޒŒ•Ž‰ŠŒ€‚zyƒ–”†™…Œ’‹—‰€‹‹„x‘ˆ|”†z’„ƒ‹„…‡‡‹Œ‰……†‚ŒŒ‰Œƒ‚–މ…{‡w€ƒ…Œ…}Œ‰ƒ‚~}‡ƒ„”z’ˆ†Œ‹ˆ‹„{‚‹‡ˆ’„‘ƒ€‚‰‹‘z‡Ž~|މ‰–‡‡Š|šŠŽ†‘‚–•‚‹|•‚“…€†ƒ’І…‰Ž…Œˆ‚ƒ‡„Œ‰Ž†Ž‹…„{‡Ž‚“„†ŠŒt•‰ŒƒŒrn{“ˆ—{}ˆ–…|ˆx{‚~|ˆ‰mŠ‹†„Œƒsƒ‹w‘vxƒ„ˆˆ‰‚ƒˆ‹z•€€}ބР~Š„–†y‚‘˜Š‚‚…Œ‰‚u—„‰ƒ{€ƒ„ˆƒ€z†Œ…€ˆ{Œ~…ˆp™¤‡ˆˆxrƒ„€‹ƒ™’t}~‹…z†‚€zˆ–‡Œ€{‚ƒ‡‰pƒ{†Ž¬ƒ…’{˜‹‚Œ€|–v~†Š“„ˆˆ™‚ s€€~‡‰†‰ŠŠ‹€†ˆƒˆŽˆ}wŽu‚z˜x}Ž}‡z’’|v}…‡‹Ž¬‘‡Ž††€……}‹q~€xˆ{Ž|”‰‘q]ƒ|{‡‚wŽj¢†€o…‘™’{†‚‹ŒŒst‚l”‡€š„˜ˆx’‰yЇ}‡y’}‰‹’ˆˆ‰‘€|v”•~~v…~Œˆ’{‘“‰†w”…xއ{Ž}ˆ†€™€€vŒ€z‚”Ž‚…ƒ‡Œ‘’}ƒz”ry‡‰zƒŠ‰Œˆ‡Š‰‰k’s|Їzˆ‰‚ŠˆŒŽƒu…{­Œ~–Œ‘‹{”z{Š’{w|“‚…lŠŒ‹‚‡Ž†ˆ™’‡‚‰’Š‹’”“›„ކ…y‹a‹‚ˆ‡‚š‡‡†tw™€Ž¢†š’‹‡zƒ‰‹¡‡‰”}vzš‡’„•viŒ†z‹‡Šˆy†‰…ˆ|z~Œ|Œ”…‡|…€z|‚…‰…y‚„~Š’‡‰Œ~“…|ƒ‰€ˆ‹ŽŽ…€{ˆ‡š‘”Š˜sŽ„ƒŠ‚‹˜Ž‰Š……{~ƒ…‚ƒ|…}—„’‡}}‡‰‰|•‡†‹|v–”ŽƒŒty†~‡|ˆ‰ƒƒ‚‰€ƒ€‘„‡‘‰‹ƒ”†‰…†~ƒz„x‰˜‚‰’u–˜……‹‡‡Š~|z‘‚‚’‹‚•Š{„‰o„“•‘މ‚†Ž–‡u‚˜ˆ€|ƒ„ˆ‘‰–‰–„‚Œ‰ƒ|Œ€†ˆ†ƒŒŒ‰|„|ŠŠ€‹„ƒ‹†…‚‘}Œ‡…‚˜…„Žzz€‡•ˆ}„…}ˆ‚Šƒ~ƒ„€ƒ~y‰†…’‰‡‚vƒ‹…†~‰…}€‚{ŠŽŒ†|Šw‚Šƒ†~’ƒ‡Œ|‚vŠŠ‰‡ŒŠ‰…ŽƒŒ~…‡s{Šˆ‹|‚‚…ƒy‰ƒ‡{~Š‚‰‚|‹†‹„Žy|–|Š€zŒ‹Œ……Žˆ‰€‰ƒ€‹€Žyw‰ˆ‰~ƒˆŠˆ‹ˆpƒ‹ŒŽŽˆ˜„†vy‡…Œ…€‘†ˆ|…„‚Œ„‹„ˆƒ|•‡ˆ‘€’y‡|І„‚ŠŠˆ†„‚{z…†€~‚ˆƒ…‡†z……‡z‰}~†ˆ‡†‡|މ{’ˆz‚‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ƒ„ˆˆz‡—ˆ…o‹ŠŠƒ†v†„ƒ„…ˆ‚ŒˆŒ‘Š‹ƒ‹†‚†ˆˆ~ƒ‘‰‰ƒ’‚ŠŠ‰‚“…‘‹€‡†Ž}‘}†Œ‹‚w€„~“c~„ƒ“Žž~ކ…~uŽ–†š¢‘|‡ƒ…Š‹€Š“„€‡u‰…‹†Šq€†}ƒˆŠŒ‘ŠŽ„“Œ…ƒ”†Ÿ‰ƒ|ˆ‚ŒŸ†ƒ„wzw{—ƒ~‰†^‰”‚…‚ƒ›—„‰‰y¡„r€}¦†Œ€‡Œ“…zhŒ†’€f•ˆ}q‹Š”~ŠŒƒ“mšw‡„‡zˆ‘‰ˆ‡†›”Š„~…“ˆ„ƒt›Š‰¤’ˆ…“™”~€}‚‹’€ˆ{€§|ugŽˆˆ‹~~}W~‚‰™xoz{‰ƒˆ¦|{•””r‹z{‘˜‚™«š‘‚”žŸ‰nxˆ…Š„x›‘ƒ‘jq‘ƒc|‹¤|Žs–ys‹y†zŒwŠiˆ‚l–ª{‹s~x‡”uy|‰|p†“Štƒ‰€‚’¯“x€mzW‚£›]lŽ”„‹~¤Žy€††Œ|•„…nŽ©}›‹„œ}…‰€q|„„ˆš…n““ƒ‰z~r}’ˆwSnŠ‹¥z’r}‹{tlƒˆ„Œ‹”h„y“€‹‡‚ŠudV€”Ÿz|zˆ|dw’ˆ‰˜ˆ‚—‹Š†‹„‰“ŒŽœ~’š„xv„ŒƒŸ‹™”‰Ž‡”ˆ„‹…‹|Š˜ƒ‰… ‹Œ“ˆ‚ˆˆv‡ˆ‰„‡ˆ€Š„ˆ†Ÿ‹‘›z{••Š‹‹‹‰Ž‡„€„Ž‹‹’“xq‘‘Œ”Ž‚Œ…†Ž’v…‹—’u‰Š…Œ‰…“‹‡”ˆƒ„‡‰‰„Š›‹’ŒŠ”—…‰|Œ•‰†Š‰‹†Š’ˆ™‡…Œxƒ‘–Œ“’‡‘‘‰ˆ‡Ž”‰ƒ‹’‡Œ¢‘І†‹‡‘„•‡‚ƒŠ’yˆ•‰‰…‘‰ˆˆ–‘Š“•‘‡†Œ”’ˆˆ‘|ˆ’Ї‹Ž‹’†‰‰††††‡††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ˆ‡‰w}‘ˆ‘‰…ŒŒ’w•‡ŠŽˆ‡‹‹yyƒ’‰y†‰“”|œ‘ŽŒŒ‹‡‚•‰‡‚Œ…‹†ˆ‰‘‘Ž…zŒ‡~‰Œ‰……w‡Ž‡Œ”yyy‘{Ž}™xƒŒ”Œ‰yŒ…‡‹†”…˜t•Ž‹žŽ~y…‚•…€Ž„ƒ†‡œyy‰Š‰†‰†~š‘•““‡…‰‡ˆŒŠ…‡’Ž‘‘Š’Ž‚‹…‰‡„Ž”„†Š“Š}‹‰Œ•Œ‰•Š”„ˆ‚Ž‹ƒz„’’‹†Œƒ’vˆŽ‰ƒ’ˆ‘–Œ‘…†„”Š‹Žm•ˆŒ‹pŒ„†‹€ƒˆ‡†ƒ„‹†‹…‰u’ƒˆŒ}’ˆy~†Š‡|““‘“yЇ•“ˆˆ…€’ƒ„’‰‘І†x…„…xŽƒ‹’ƒ|Ž…‰€„x”yœ•{‹‘І‚ˆˆŒ‹‘‡‰ˆ…Œ€ƒŠ‰’€€Ž‹††Œw„ƒ‡‹„‡†‰y€‡ˆ…Šˆƒˆ––Ž˜‡ˆ~†„Ї„ƒ‰†Žˆˆ„Š€†‹~Š“Šˆ‹“‹ƒŽ‘ŒŠ’ƒƒŽ†‹’‹—ƒ‹†Š‰‘|Š…ˆ‰Š‚„Šq‰ŠŒ‰„ˆ”‚‡‹Œ†ŽŒ†‡‘”ŽqŠ“ŽˆŠwxŽ…ˆŠ„~†‘—’†‹‹…s‘‚…’‰ƒ‰w~‚І}ŒŠ’’~‘’މw„…‰€’ˆ†ŽŽƒ‰w†‚‡„‹…‡Ž‡††Š€Šƒ„Žy—”}ˆ‹Š„އЋ‰‹„„Š•ˆ‘‹~’Ž~‰„…‹w‚ƒŽŒŒ…†‡yz‡„‰‡Š“‘˜‰‘‹—މ|‰ŽŒ‡‰‹†“…•~ŽŒ‰‹Œމ†‚ŽŠ‚„…Š€‘Ž„Šˆ…•„ƒ‡“„‡”‹•…‹ˆŠ‰‹u‡’’‹Š‘€pŠ‘Šyƒ“‡‰‰‘ŽŽ‡ŒŽˆ”“ŽrŒŒ†x‰„ŽŠ‘‹‚s‡”‚‡Šˆ‹t’ƒ…’Œs…x‡‹„–”‰‘€‚†•ŠŽˆ“‡…˜’…“ƒˆ„„‡‚vˆ‚Š{„‘~†ˆ‡~Ї‰‘~…Ž~š“{——“…}‡†ˆŠ…‰ƒŒ‰Ž‘€ŒŽŒŒ‘v‹…ˆƒŽw‡zˆ~‰Œ…ˆ{‚‡‹’Œ‰‹„”ŽŠ•‹ž‡Ž}Ž’ŠŒŒŒ‰“‰’’”†Š‡x‡’‡~„”’†•†‰‰‚~Š—‡Ž“‹•’‡”‹ŽˆƒŠŠuŒ‡†„’ƒ†Š’ŠŽ†‹—‰“ŠŽ–’q‡•ˆ‹Œ…wu’Œ“Š}‘“‰…ˆ‡’‹Š‹w{Ž‚{’£…„„”ƒ‰–r‡Š†‡ƒŽr‚Š‚€u£‹u”|ˆ†…rŠˆ…„ƒ©‡€“Žˆœ‚…†ht‡‘¡€{ƒ…—…’‡ƒ‘†–…€ŒŠw€‹™‚}—‰“‰€‚‡…Žƒz…‰ƒŠh†{y…‡„œŒ‚ˆr‚y˜ŒŒ‰‚‚Š•‘lƒuuˆƒ‡“€ž†y€~…vn¡y€‹€…‡‹ˆ‹‚‡Œ…–~‘‚ŠŽ„€rˆ}„v|n‚‰z€–…ƒŒƒ‡ˆx‰„ƒ€‚…І“¤„‚m†‘Ÿ‹ƒƒƒl†Šˆ‡˜~y‡™œƒ|~‰”|“|~‡Ž‡‹~t„z„‹Ž…~‡‰’„‚‚ކ‰…‚–y‰ˆ}‹‰‘ˆuˆ‚……’’‚Œ’†{‚”Œ€~“rŽw‘z˜†}‰‹t‘ˆ”ƒ„‹“‡…‘{ƒ„‡“x‰Š~”‹r~ŽŠ…~u~Žˆ‹wІˆ‡–qˆŽ„‰Š‰suˆŽ‰“–“’ty‰ˆyƒŒ‡“Š‚‹ƒ†ˆ‹Šˆ…ƒ—ˆˆ–†}ŠwŠ…‹Š‹‰’ŽˆŒz„x|v“p†€Ž‹w~•y~€}”†”“—‡‡‰Œ“Ž~‡™‡f‹–Žˆ‹l‘ˆ…wŒŽƒ†…‚€’‘ƒ‡‹Œ’zŽ”ƒ’’š™„r“Œˆ‹‰“†‡Š‚‘‡‡|…”‘~pЇŽ|Š’•|Ž“ƒŽ’y†…†‹‚Œ—‘‘‡ŠŠ’’†šŒ’˜s†ŒŽ‘Ž’–|ƒ}ƒƒ‹Š“‹‹’’“†”˜ˆŠ€‘‚‡ˆ…x‘Œ„ƒ‰…z…u•‚‘Ž„˜}~™ˆƒ‰Š{‡‡…“˜jŒ—sz‡“Œ•„€”‘””Š‡Ž˜“z‡—ˆŠˆ™†Œ”’…Œ}‹|‡”™’|‰xŒ‹Ž…{ˆŒ~’Œ™y ‡‰Œ–‹Ž™‚‰Ž}›—‰’’‰ŽŠŒ‡Ž‰†ŒŽ‹‡„“…’‚Ž—‹‰Š‘ˆ“…qˆŽ€€„‹‚Ž’†‹€•‰ŠŠ‘†|ƒ’†‹ƒŠ‰—ˆŽŒ‰’‰Œƒ‘‰‰Œƒ‡‡…‰„|‡Œ‘–Œ•ˆŽŒoˆ•€xŒƒ}{ˆŠƒ’ˆ~‹•‚Ž”‡Œ‘Š„…ƒ‚€‘‹‰q‚‡ƒƒŠŸ‹{‰†y†˜Šƒˆ—‹•…Š|Œ•˜ƒ˜Ž¡ˆ}Œ…~“†‹“’ˆŠŽŽ†Ž”ˆ‡‡•›…ƒ‡„†”‡‹“‹‰ŒŽ‚‘‹‡’‡ˆ~œ†˜‚‡‡‚ƒ–‚’–w™z•„Ž|‚Œ„‡ƒ…„‡‹Ž‡”•‹~€ˆ„‹‰‰„ˆ‹†‹™ˆ——’’‰‘…v‹Š‡y„ƒŽ…Žxƒ}|‹Œ‡…y‹†‹–}~’˜„ˆ‹k‹—{ˆvv‰Ž„‰ŠŽ†œ…‡Ž˜~™‹”y€ˆ‡™”І‘†ˆ……‚‹}‘š•Љƒ”„ƒ„“ˆ~†‘•€‘Ž€‹£†‡‡•‘‘•†ŒŠ…„‚„’‰‹™††ˆ€…’˜Œk~ˆztŒ‘„z–’ŽŽ›‡†„‰“‘}…‚š“Š„•Дޒ‘‹‡ƒ˜Ž‰…Œ€Žƒš…Œ’…„Šƒ•‰‘‘ŒŒš•‰€«‡…„}•Š‚’‹‡‰‚„„†††‡††††††††††…††††††††††‡††…†‡†††††‡††…†††††‡‡†‡††††††††‡††††‡††††††††„†…†…†††‡††††††‡††††††‡††††††††††††††††††††††††…†‡††††††‡†††††‡††††††††††††‡†††††††††‡†††…††…††††††‡††…†††††††††††††……††††††††††††††††…†…†††††††…†††††††‡…††……††‡†††††††††††‡…†…†…†††††††yƒ~‚}…z€‡†–ˆ„Љ‚Š‹u‹x|}‚}y…~‚“…‰q…˜}ŠwyІ…€‰~uƒyyr……ƒ~{‚Ž{“ƒ‡€x„{…ˆ„•‚„Žq}}ˆ’Œ‡“|Ž“†‰€|wŠ{Ž„}€’…Œƒ„‚‹„zt†}}}’†‚|x‡‚…ƒy’ˆ……pƒ‘‚Ž‹€—wˆŠˆ‹}~r”…Švƒ•‰‚‹†z}xƒw~‚…~‚‡|p˜Ž…ˆ{ˆ†Žƒ‚…Œ„‰zy~•|y†…†އ|ž”†„†‹t‰‰ŒxŽ€ƒt†ŒŽƒ†Œ|vp‡uŽv‹{o‰…‚~‰‡Š†‚ƒ€ƒ‡‰‰“…‘–‹„‘„ˆ•~†ƒ‚€ƒ‰t‹“„Ž€‡}„“„r‰‡Š‡}€€‡}|†–‰Š”“‰‰ƒ“€ƒŒ‹†‡|z¡…x‡‹€†›{…Œ‰pyŽ}t„Œ‹y…ˆ’”Œ‡‡…Ž…x„‡ŒŒƒ‡—|{‰†}–‰Š€‰oŽ–“–ˆ‡’Š€“vƒ”©ƒ„…y‡•~’ˆ}Ž~ƒ…}†‰ˆ…‰‘‹}€Šˆ„™vƒ}ƒ“‰Œ¢‰Š~}‡}Љ”‰„š†ˆyˆˆ„Œ‡Žz~€Š–€~‚‡~‚މ‰€ƒ•p†–†‡€}™}‘{{Žy~Šš…‚{™‹œ|Ž|†…›s„z„’Г|z…‰””‚ˆŽ‚Š‹Žk¢|z~œ£}“•‘‘ˆ››¢”› z†¼•¨˜u…ˆk€ˆ{Œž”’z‘Œ_Š–‰…–”»‘‚–t–jx‘u–µ‰‹“Œ†‚‰ˆ•“~}Ž~™‘x•}…›”€…›z—’~¡‡ˆ™ˆzbŒ¥„}gpwv€‡ª\‘ƒq¡››”‰•x¨†Œ‚—{„¤‰p~~`z~¿‘o€yƒwˆ‹— ƒ–‘~†¬ƒ„—‘€“{¡‡‚‹™ˆ…_ˆŽŽ•Œ€ƒ•€ˆm—©—yjŒ¥ˆj‡ƒ||…‚ˆ‡†}‚‰‡ƒˆˆ‡‰‘…‚…‰…¢‰…†Š‚‹Œ„‰€‚„†‹„ˆˆ•ƒƒ†‰„€‰Šˆ‰‚‡‡‹„І…†Œ‰†‹ŒŽ…zŒ|}Š‘‡„~ˆƒ‚ƒƒˆ…„†††€†ˆ‡‰†Š‹†ƒƒ„ƒ“ˆˆ’‡†…‚}ƒ‡„‘ƒˆ†Š‹„€’†“‡Ž}Šw„„Š‘†Š|…x„‹ˆw|‰‡sŠv~Ž„†‘‡}‘‡•sއ‘ˆ…ˆƒ~Š…†{ƒ……•ˆ‰…‚‹Œ”‚Š€…‰ˆ‚‰ˆ€ˆ‚†„‡~ˆƒ‹|‡{Œ††€ƒ‘‚ytˆ…†Š~…‡…‚„~‹‡nˆŽ‡Š”x‰…‹†‹ˆŽ—ƒš‰†|‚ž’ˆ‚}ŒŒ“‚ z”Œ‰~ˆŠ„‘v‹ŠŠˆŽ€‡wŒ–“Š˜Ž~…™Œ›‘‰„Œ‹Œwˆ†’‡Ž~uƒ…ƒ‚‡‡„‡‰z‘‹‹|’ƒ¡Œ‡ŽŽŽ‡š‚z‡„‘€‚}„ˆ“|v}’’ˆœŽŒ“‚“ƒ„—•‘ˆˆ‘x†Ž‘އ‘Œ•’‹“ƒ…ŠyŠŽf…Š„ŒŽˆ”†v†‘˜|…•™€™’‡Š‰‰‚€‰o„ƒ‹‚’Љ‰›€‚…‡†‹ŽŽŠˆŠ…‘yŽ‘–Œ–ˆ‹u‰‰—…„‰Ž†|‰…„‹‰}…Ž„€–ˆ•ŠŠ–‰ƒ~‚~Œ‹”ˆ‘Ї†‰„”ƒƒƒ‰…„ŒŠz–ŠŠ‰‘‡x‡‡˜Š‘„‡‚ˆ|†˜”ˆ‹„~Œ‡€…‹‹‚‹zŒ‡‚„–Œ’†ƒ™–’€~~ƒ€Ž„ƒŒ…w‰‚w‹‰}‡šŽ~—ˆ“‹{•”†œ’Ž…Ž„|Œ‡’“}†ŠŠ}…~‘†}•‘ŒŒ„Ž{‡‰Ž”z‚Љž‹‰ˆ„”žŽ€Š€€{Š…ˆ†ŠŠŽ‚Œ—…ƒ„…š€†‹…Š‰Šœ‡v‚}ŒtŠ€ƒ‡|‹‰…ˆ…††ˆ‡‡††Šˆ†…†„‡…†††‡ˆ†††…ˆ†ˆˆˆ‡ˆ†††…†…„‡…„‡„‡ƒ†‡ˆ…††ˆ…€‰…†‰‰††„…„†‰‰ˆ†Šƒ‹‡………}‡…†‡‡…„‡…ˆ‰‡‡ˆ‡€…‡…ˆ…†‡„††…††ˆ‰ˆŒŠ††‰†…††„‰†††…‡†}‚…†…†Š†‡Š†‰†…††„„„‡‰ŒŠ‚ƒ……‹Œˆˆƒˆ…‚„†…†ƒy…†Š‹†‰‹…†…‹…Œ‰‡†‡zŠˆ†ƒŒ‡ˆ†…ˆ‚†ŠŒ†……ƒ…‚ˆ†‚’„ˆ……ƒ„†‡Š‹†„†‚ˆ…ƒƒ„ƒˆ„‰…„ІŒ„…„†‰„„‡‡‰xy‡“ˆ‰ŠxŒy‡‡¬‰Š€€†Ž‹{“ŠvЉŒƒ‘ˆ€Œ‚ˆ”Œ†„™‘—ƒz“ƒt‡ŠŒ–”‡†‰‰‡ˆŽ„‰‚†{‡˜r‡€„‹€ˆ’’ŒŠ‚‰v’Ž‹}‰‘{ŒŽ…—“„wއ’‡ˆ†‹€…ˆ‡™ŒŠŒ|zŠ{ƒŽ‡“Œ˜–†‹zŠ~x†……•ˆŒˆ„~…‡„”ˆ‡‘”’‰„‹Žˆ‘‡‹‰|……‰””†ƒ‡‰ƒ‚‰†…ƒŽ„”†…‡Ž‡€„t†–…‹’ƒ……‡˜ˆ€‹x‰–ƒ€Œ‹u‹ˆˆ…ƒŽ|Œ’…~y—}‡|‡•‹y•Єބ‘€€Ž“‡‰ŠŠ†‘Žz†•xƒ‘ƒ‚Ž’}ˆŠ‚|ŒŒŒˆ“‹‚‘wm‡}‘„Љƒ‰…|Œ‡}ƒ‰„†Š›jŠƒ…‹Œ‹†Œ…‡“˜‡ˆˆw‹zŠ}†—Šƒ…‘Ž“…‹„{ˆ—…ƒŽ…ƒ‹‘ˆ’‰Œ–‚~ƒ‹“‹‡’‡ˆvy–‰ns‡z‘…gŽŽu„‘Ž•‘—•‰˜“Œ”…’’Š–‚z‰‹ ‡t‰„ŽŠ‡‘…{Š–š‰ˆƒ‚‡vwŒŠ›ˆŠ‹›‹šx’’˜‹Œ‹“†•{†qŒ†r…—y}“‹‰’…ƒ†ƒ’…‰”‡x‡‘y{€ˆ–…ƒ‚rއƒƒŒ†‹•Š’”›“ƒ‚‡{ƒ|Š……›”ŒŒ‘‚sŽ„‘ˆœ}ŽŠƒ‚š‹uŒ‹y…y…Šˆsˆ~Œ”…›ŒŠv’‚„…ŽŽx„x•‘xˆ~w’Œy’ƒŽ~‹{Œ”–Šƒ}y’€„†Ž‡™Ž~’|‰‘~‰‚yƒ”“‹€p„’‹€‡‹„•‡žq‡ƒŽ“—~–s€…‰”މu…|„†€œ‰Šz‡Š’‚‹€‚Ї‘|{ƒ—ˆŒ„ŒŠŒwœ„{…y”Œ}|ˆƒƒŠ†‡‚}‰Œ“zŠ˜„vŒƒ‹ƒŒy‰‘‘s‰‘Œ‹‘ˆ„ˆƒpމŒzŽˆŽŒ‡”ІŒžt“‚–Ž‹‹‰‚‰„•ˆˆ„‹ˆ„~ŠŒƒ€†‰‰Š‹††•‹s†|•†„†‡…‡‰Œ˜”p‡’„†„‘‡šˆˆ„–†ˆ€}€€}‰{ŠŽ„„Ž“†}‹Ž~~ŸŒŠ€—€ˆˆ‡„”’“”‘y€zz„™Ž‡‰„€“ŠŠ‘rŽŒ™|†ƒ–‰†}‘ˆŠ””~ŽŽŒŠz‹‹‹Œ‚v‹|‹‘‹‘‚”…Žy{‹‰„“…’ŠŽ„‚…‡ˆ…–Šw…˜šq“’{ƒ˜„z‚t‡Œˆ‘ˆnˆ†…†ŒŽ’‰„Љ‚z|‡“‡„‹‹…ŠŠ‚’‰Žƒ–}”Œ‘‡Œ„{•„ŽxŽŒ…rŒ‘’‹‹ˆ‚~‰‚„‡|ˆr™Š‡z{އބŒ“z„†‚ŒŒ‡„‚ž’–Š˜“•”ŠŒ}Љƒ•j„Œ„~€p‘‰|‚—‚€€’‡Š‚‘‹Š‹“„t†„…–yޅމЂ{}Ž€‹~•q‘ŒŒˆŽ~‹“–‰‡‡Ž˜†‹„Ÿˆ‹‹ƒ‹}ˆ†Š‚„‹‡‡˜˜„…Œ…”‡…ˆ‘‰‰…‡Ž†‚ŠƒŽ†ƒvŒsy{ˆ‚†Œl„‡†ƒ€“y……Ž—ˆ–€…ƒrƒ“‹‡ƒˆ‡“€‚’‰’uy†Š‚އŒ‘„Œ}xŒ’ŽŒ‹{ˆ”ŠŽˆƒƒ„s‰u‘‹‰‰v……€ƒ™~ˆ‚xƒ€€‰„—}Ž…•‚‰Œˆ‰‹†’{~‹„‹‚{†v‘ƒ‹†|u–ƒ…•€v„‚„•‚|Ž––„‰Žƒ€‡„…Š‰Žˆ|t‘o’Š|„Ž‹„~Šz„ŒŠ‰Ž”„‹Š’‹‹w‹‹‘€€~€„Œ„‹Š‚€}…~Œy…Œ‰ƒ††{}Љ™‚…†Œ‚ˆ’†tŽq{~Šy‡ƒ†…†……†‡†‡†……‡†††‡‡†††…†…†‡……„ˆ…‡‡ˆ‚†‡†‡†‡†‡…‡††††††††……ˆ†„‡……†„††‡‡…‡†„†‰…„‡†ˆ‡†……‡†ƒ†…†ˆ†„„‡………†††…†††‡‡…‡‡‰†‡†‡‡‡†ˆ††‡‡†††ˆ……‡…‡††ˆ†‡„†‡‡………‡†‡‡„…‡‡‡…„„…†ˆ†…„…††…„††††…‡……‡‡ˆ‡ˆ……††‡„‡‡‡‡ˆ‡‰†‡‡„…‡†…††‡„…†„††‡†‰†‡…†‡ƒ†……†††‡‡‡†…ˆ†……ˆˆ†‡ˆ„†…†‡‡‰††…†…††„†ˆ€–ˆ•ކ~}w†€¦v~ˆ~€‰|x‡‰…ˆ‹u€‹zƒ†mzƒ…€‰€…˜}‹„s‰x†ƒ}‚u|}{}yŒ‚Œ‹…Œ†‚’~„‹‰…Œ‡ƒ‰nt{€‡…‚v„†‡€o‡{šm‚{}q~}w}†‡„…ws‚ˆƒ…†‚ˆu€€…˜}{†{…}‰‚y‰z†€ƒ~‡€¥—}„˜Šƒ…‚Š…–Œsˆ|ƒ{y}†™}ˆ††xsw|}Šƒ€ƒ†Œ‡y}|{~ˆƒ‰‡€}‚„‘„‹Š|†}ŒzŠˆ~ކ…w}‡†‹†x‹…}‡‹ˆ„wzuŒ‡…ˆ{†‹‹o‘p‰‚„‰ˆx…‰”€ˆ†Ž…ƒ‰…ƒy{‡…Š~ІŒ……¢|ƒ|~“’ƒ–€{ˆ‹€Œ•~‡y‚†Œ~„w†~„€y…Љƒ}‚Œ™ˆ…†…‹}„‚‡„€’ˆ˜~Œ„’ˆ‘“€Š†|‚‚€‹ƒŠvŽŒu„~‡†~}ˆ|ŽŽsƒ—yx’……˜‘‡‡”‡‘‰†‹Š}€€…”uˆŒ†ƒ‹vŒ˜Š‘uˆ††‡~vƒ†€‰ˆ‹‚ƒ…‹Ž‚Ž~’Ž”}ˆ‚ŠˆŽ‚„‚‚ƒ„“ƒ……‚ˆx‰’‘‹}€‰z…“yƒ~Š€…|ŒŒŠ{އ‚ˆ†‹‘‰ˆˆ}…‘‰ŠŽˆ‡‡‹Š…‰€‘‡†‰…‰…sŒŽƒƒ‡Šˆ…‡‡‚}Ž‚‹Šƒ”Œ“†‚ƒ†„yƒŒ’–‡„…ƒŽŒ‹ˆŠˆ†ƒ~–„}†‚‚ˆˆˆŒ‘˜‡‹Šƒ†‚~‹€~‰|†‡ƒ‹|~’‹ˆ‰—‡–‰‘†Š‰Š‘Ž‹•—…„‰„~~‘ŠŒ‰‹‰’„…‹Ž€…އ‰††‚€’‹’‘’‡Ž~‡†Š—„……‚ˆ™ƒz‹‰‹‹zŒ†‡‹‚…’‡ƒ‘†…Œ†—‡‚…“ƒ†‘ˆŽ}‰Œx“‚‚„ˆ‰…„‚–ˆ™ƒ‡‚‘~„‚‡’}|xŠ‹Žw{nƒ}…–ˆŽw‘Žƒ‰—‚}xy†Š|‰•Š‘‰Š€{}…—z—z…}‡¨œ}ˆ‡–‘‡ƒ‘Š—‚„‚‰€pŽˆy{Œ‹…‚ˆ’›‡z††w„•›‹’š„‰‘‚ƒ‚ˆy†y…•Ÿ~€‹Ž}›—–Œ~–£Œƒ‰rw}„„ltx‹Žƒˆ”z„‚qxƒŠ†£¢ƒs‰‡†‹Œ”“ƒ‹“€†ƒ¤Ž|¥~‹‹Œx{–‘|™t–„Š“‹‹‰}u‘|‹|o€—†Œˆ~Š~œupœ€…™‹ƒŸˆuzš‘’ƒ|„‹ƒ‹ƒ‰…}ŽŽŽŠ†–‡‡„‘‹‰ˆŽŒƒŽ’‹‡…‹€‘‰„‰†–‡‡{†‰‘Š’w~‹„€‚‡–•‚‹‹Ž…vy–”‹…„††“„…ˆ’„Š}‡’„Œ~ŒŠ‡Œ‰“………††…ŠŠŒz‰Œ†€Š‚|€†ƒ‚žŽŽ€š€‚ГЄ‰„‹‚„‘—ЇƒŒ„†‹ŒŠƒ”~ŽˆŒ„€…ˆ„‰ˆ‡ƒ‚“‹‰Š‘ƒyŠƒƒŽ€Œ‘”‘~†‘…‹‡††‹‹‡…€‰“Š…•”„{€‚Š€Œ•Š„†Žv‰Š‚…‚ˆ’~{x‰ˆ~…‰„†‹{‡ƒ‚„„À€…‰Š„†Œ‰Š‡‡……„‹…–ˆ‹‡…ƒ€‹ˆ’…Šƒ†Ž†Œ–’„Š˜ˆ„‰‰”„„”yŠˆz„ˆ…‡ƒ}‰‡ƒŠ‰‡‰„ƒ“ƒŒ‡‹…‚†xz‹‰†‰‰‚ŒŽ…€ƒ‡“}‰‰…|„‹}‡ƒ†‰€‘‚ŒŒŽ‹„uƒˆ…†{„‹}uxy‡‡Š‡“ˆŽŠu‹‚‚{…Ž…ˆr~ˆŒ“ŠƒŽ“‡ˆŽy…„œ„ЉŒ‹……w‚‡„„‹”–ŠŒƒ€m‰‚Š‹…††ƒz…„„}ކ€Œ~‡‚‹xƒyŽ–€sˆŠ’‰ˆŽŽ‹|Š‹’‡ƒ‰‡†˜~”Œ‘“‹Š“Ž‘‹†‡”†–‰ˆ†‘…Œ•‡{•‡‘Ž’†Š‰ƒ‹”ˆ’”˜‰†€ŒŠtŒ“Œ‘††ŠŽ‰Š“‚‚u‘ˆ“ƒ…‚ˆ†‘Ž‹z‚ŒŒ…‰y”„…~Їˆƒ{‰ˆ†…ž”…‚™{‹‘†…}™–Š‹„‡‰‡‰Š“‚‡ˆ„‹„€‹}ƒ•y‹„•„Œ‹‚‘„ŽŽŠ‰…Š–‘Š‚‹~…‰{~„}„ŠˆŒƒ‚ƒŒ|}}‹ˆŽ‹~}Š’†’|‘•—…‘€‡Ž…Š‹€Š”‘xŽ…Ž}ŠŠ‹‰‰ˆˆ‚ŽŒ…|ƒ€‡…‹ˆŠƒˆ‡Œ„Š„‹Ž’ŒŠƒ†‹Œ‰€ƒŽŠŠ|–Ž‹‹†Ž‹’ƒ„ˆw†…‚}Ž„‡‹ƒ†ƒ…‰~ˆ€‚„w‹…ˆŒ‰„…ˆƒ‹‰Š‡~Šˆ†ƒ‘€…“’Œ~Œ‡‰Œƒ…ޕދ††ˆŠ“Šƒˆƒ~‡~Œƒ‹‹Ž‹Š“‡‡~{‰’‡ŽŠ’€……~€†~‡ƒŠ†ˆƒ„‹‡‚‹‡Ž††‰“„„Ћކ‡†€…‡|„•‰‰Žˆ„ƒ„‰}†‰Ž‡‚†‹ƒƒŽŽy‹‚“……‚†ƒŠz‚…šˆ}}}†~†ŽŒ…‹˜ƒ‚€”‡‡‘~z‚wމˆƒ€…Šƒƒ€‹”}މŒŠ‚‘‰Œƒ•£‰‡‘{‰Ž…Œ†Š…}Š…~’ˆ„‹……Žˆ‰Ÿ„ˆ‹Œ‰zˆ‚ŒŠ†‡ˆ‡†ˆŽ•ƒˆz‡†€ŠŽŠ‡”€Œ„‹€€ˆ‰ˆ{‹‚‘Šv{‰‡ŠŽ|•†Œ„‚Ž‘Œ“~ˆ‡†ƒ‡‹Ž™”‚…‰Š‡†‰‚ŠyŒ“…ŽޕЂ‹‡Šƒ‡Ž’ˆ“‰}‡‡~‘Žˆ„Œˆ‘††ƒ‹‡…ƒ…‡”„zޔކ‚Œ‘†‰Œ‡ˆ’vЉЀ–‹~ŽŒ‚‰}Ž€r…~~}Öƒ†~šƒ”Ÿ‡†Š€}‘‹†‘Š~ƒ…¥}Œ…”Œˆš€”¤‰ŽxŽ…ŠŽ††ˆ’|~†z—†ˆ‰}†Œr~‰Œ…‚Œ‹‰‘—zŒŽƒ~‹l„u‘‘ƒ™†|‹††…‚{Š„ƒƒ’œ…kŒ†}ŠvŠˆ‚—ƒ…•w€{‡Š€„w}‚‘~y†xq~Š’Š–„€Œvˆ†…‹ƒ|ƒŠ‹Ž€“†‡„}‡‹‹‚Šwƒ‹ƒŒ‰ƒŒ†}sš‡‡‚‡ƒ€}™s’ƒ~ƒ„Œ•vw’Œ‰‹‹s‹‡‡}…Œ‡‡Œ•~}xƒ‡{‰‚ƒ”†€|“ˆ„mˆ{”€ˆvu„ƒ€‘…Žv~‚Œ‚|}€yzp„‰ƒzv„†€‡†€ˆ„„rˆ‘ˆŒuŒ„…ˆ†z~‘t}‚}•n…}ps|’’ކx…Œ{u‹‡„…˜„Ž~sˆŽƒ‚„’gˆŠ†‘ˆƒ†‚~„‰…~†§„~}„„žˆx‚™}y€z„ˆz‡Ž‡~‰†‘|ƒtˆ„ˆ„|‘}‰‹Š‡|‹€lŽ€†~š‰ƒ‚{ŽŒzƒ{u’~ƒuƒ†z‘…‡”|€‡€q‡‹w•„u†y•€yz“q‰’Š{†{‡ƒŒŽ„„‹€’Š‘††ˆˆ‚ƒˆ€‹”‘Šƒ„ˆŒŠœ€ˆ„‡ŒŒŽ‰zš‰‘|Ž‹…‰†t”ˆ“Œ˜ˆ‘Œ€„‰|ˆ˜•”‰‚{’Šˆ†Œ‘…†{†Œƒ‡†’‚‡•†˜”Ž‚„‰‚‚‚‹†“y‚€ˆˆ}ˆ~|‰ŠyœŒ‡|Ÿ€ˆ‘‰†Ž™‘”•‚‰~ˆ‡‰“}‡‹…ƒƒ‹‚‘„—wŒ’ŠŠ‡’|‰‹’“†‚ˆ”ˆ—‡‰Š€’‘‚}ŒƒˆŒ†ˆ€Œ‹…‹‰ˆ’‰Š„Œ‹“‘Ž‘šŒ„‹„Ž€‚‹Œ…‡’v†ŠŠ’—„Žƒ€Š…~‰Š‰‰€Š…ˆˆ‚˜‹‡•|…„†—‹Žƒ†‡¡‰x‘‹‰†ˆƒ‰ŽŠ†ˆ„‘‰ˆ—zƒ”‹‡‰€„Žˆ€}ƒy‰†‡ˆv‰x‚„„Œ„‰|„‘‹Ž‘…‡}„„ˆŒ}w‡„ˆ…‰Œ‚‹…„ˆŒƒ‚‡”‚}ˆˆŒ‰ƒƒ‰~œ‰w‡Š……„•ГЂ’}uˆ…ƒ‰‡Œy„Їz†ƒŠˆ†Ž‰ƒ‹€ŠŒ†…~†’‘ƒz„Ž€†‰‚ƒ…z†}‰‰~z|‹}ˆƒƒƒŒ„‹…Ї€Š‡zyƒˆˆ…‡…ƒƒ„Š}ŽŠw€†½””ŠŒ—Š~{v‹l¢€w„uy»p‰Y€s|y…v~…r•€…q{„’–Ž…•Œy™‹™†•”ª‰{˜xŠˆŽ™y{€}{{{{}n€}y…†Žv}k‹±wšr[‰†‡{ƒ‹’€‰y€“y“~ˆŒ~x…yz…~~Ž’}„‘n‘yƒ‹Žx‚„œ‘z‚€‚}it„{tˆ†u“€†Œ€|kw~tŒzxo{fpf€ƒs‚r—u–x‚|•‘‚}‚š|•ˆ~y‡{‡qˆƒŒˆ›xv†˜tyT{’|Œ‚„~†l‹•nw‚Žxzlrymw{~§ˆŠ†‡}€‰ˆŽ|†Œ†ƒ‰‡˜ˆ†…ŽŽŽ€Š‹ƒ…‹ŽŽ‡Œ‘ŽŽ†ˆ“‡’ŠŒ‹Œ„y“ƒ†Ž…‡{Š€ŒŒ‹„‡„‡yƒ˜”ˆ†ƒy‹‹‰††Š‹…€z‰ŽŒŠ‹‹…‰Š””†‹ŽŒ€€‡…€‰”‰‚ˆ†{ƒy‹‹†“›…|“€ŒŠ„~Š“’ŠŒ‹‹‚~ƒ‹ƒ’†‡Šˆ‚…Œƒˆ…“{ŽŽŒ‹…ˆ“|‘Ž‹‘”„‡ƒˆˆ˜ˆŠŒ…ŠŽ†„Žƒˆ€„‹Œ‹‰…ˆ„‹‡Š„}‹‹Š‚Ššˆ†„}ŠŒ‡”‡‡‘w’…ˆŽ‰‰„Ž„}†pŒŽ‰q„ƒƒ}‹Š‹ŽŠ‰„ˆ|„‚Œˆ‘„‘‘‰…ˆ‚‹Ž‹€”{‰“‡‘‡‘€•€~’Š’„}ŒŒ—ƒ‡qƒ„Šƒ‡}–Žˆƒz“—~‹‡Œ›ƒƒ†ƒ‡‰Š|Œ““”x•‰’ƒ…‡~’f†}„xw‡w’‡‡––†q‹ŠŒ–Œ}“’‰’’ˆ}‰Œux’‘†–‡„Œ}€‹ƒ‰ˆ’tŠ–|—ˆŒ˜w’‘Š’™wˆ{“ƒ‰Ž‘‹Œœ‘‡ŒŒ…„†……ŽŠy‡“Š¢”…€‰…‰‰—y|“†z†Š‡Œ‹™‡“€‰|†yz†‹††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Œ‡–ˆ‚Š„}†‡‰~‡Ž‚‹ŒŠw†ƒ•€‡ŒŽ‰‡ˆŠšŒ„…‹‹Šƒ‹Ž††ˆ„‘…‘Šzw…„Œx—vˆƒŠyxŽˆ†ˆƒx‹x‚†„‰–Œ•‡‡ŽŽ†›Žl‰|…‡†ƒ‰ŽƒŽ‘•ˆyˆŠ‡‹‚‰‚„•”„†”„ŠŠŠ†‹|ƒ•}€˜Š‚”ˆ€Žy‡Š~Œ|Ž—ŠŠˆ‰~‚~‹‚‰}†‡„u’‡„‰…Ž…‡‰‰~•ƒ’Ž„•‹†‡Ž€u‹‰‰ƒ…‚w†{€މ…ƒ‡…‹‡“†˜‹‡Œ~‹„…ˆ……………‰yy~€{Š”…‰ˆ—‰“oŠŽ‰‚‡~Š”±‹ƒƒƒ–ˆ‡‹”–u‚ƒ‘€‘†‡r‹Š‡›‘ŠŠ†‹‘–ˆŠ’x£‹œ›ž†€‡”€Ž„|†…tu—x›‹†t‘„˜™“—““‰w—€Ž|Š’w†‡z’Š—‹†Š‡˜‚„Œ}~„‘‚™‹†~…p‡„…Œ†Žˆ„‘–…}‘x„€‡‡‰‚Œ…ƒŒ†z••Œ“Ž~Ž}›zƒ—‘œ—ƒ~‹‡‰…—ˆ¡~‚‡††…™ŒŒ|‘›š‰‡‰Žƒy™p†‰Œ‚ŠŒ’…‰‘~”Ž•‰Žƒ“s’‹ˆt‹˜t‹•„€†©€ƒ‡’‡|‘ŠwŠ€ˆ††ˆ”…‹‹ƒ~‰‰„ˆ„~Ž„ƒ’Љˆ“‘Œ‚z‡Žƒ“‰ˆ†–ŒŒˆ‡{“‡Ž‘ŠŠ‚†„™†”‘†‚ƒ„…x€ƒ”™Žƒ„‰‹ŠŒ‹Œ‡~…‰“’ƒŠŽzˆ„”Ž˜’•‹„„‘…}…’}†•‹z|Žˆˆ}‘Ž}‰›Œ„€œ~Žƒ~–’”•ˆ€Š†”Œ‡‰’Šz‹‡ƒ†”ŽŽ—w“‚†ƒŽˆ‰„…‡‘„ŒŒ–Š…}‚†‘Š„ˆ‰‹†Žzˆ…€Œ‚‚ƒ‚ŽˆŒz}‹ŠŸ„‹ˆ‡ƒ‹‰‹ˆy…ˆŠw‘…‚‚Ž„ˆ‹€‹}ˆˆ“ƒŽ…€—Š“ŒŠž‚ƒ€‡”‰~†‡Šƒ™Ž‹„~”…ކ„ŒŒ‡„ˆŒw”…ŠŠŠŒr‚€—‰Ž‰†Žˆˆ†x„™›‰ˆ‚…‰‹Œ€††‡‡~™Š“}“‚‰€‰–†‡•„€Š’{„Š…|ˆˆ€Šx€•{›…‹~‡”Œˆy˜”ƒ–’‡‚‹Š|~–Š…€›€ˆ”„„›’‚•‚•Ž”‚{‰|‹†‚…“‰„˜‡ˆ|”€‹ƒ–Œ˜}ŠŠ’„ˆˆŽ“‹‹‡‹—Œ‡šŠ…zˆˆ…‹•Ž{|ˆŽu’…€Š†ƒ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Œ‡…„Šˆ†Š‰ŠŽŠ†„€„……‡‡ƒ„…‡‰†ˆ‰ˆƒ‹‡•†‰Ž‡ˆ„‡„‚ˆ‡ŒŒ…‰Š‰„‡Š‡ˆƒ††‚…y†‡‹}‰‰‹„‡††€ˆƒ†ƒ…ƒ‚……ƒ†„ƒ†’‰…€…„†‡„‡’‡…Šˆ„‡‹…‡‰‘†‚†‚|ŒŒŽ‚†‡ˆwŒyŒŠ‹€„‘‚‡†‹z€€ŒŽ€r†„…‚r‰{‡…‘…ŒŽƒƒ‚†ƒˆˆ‡}‡ŠŠ‡‡„‰ˆ‡†‰…‡ˆŒv€„‰~ˆ…Ž„…†…‚‚‡‰ˆ€€z‰…‹†ˆˆ‰‚ƒƒ†ƒŽ–„…†‡‚…|ކ††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‘“‡|††‰‰’‹Œz‰‘Œ†‡…‡‰Ž€ŠŒ’ŽŠ‡ŽˆŒ”„‰Œˆ–Іˆ†{”‹~ƒ†~‡…’ˆƒ…ƒ‡w€—“‡„r……‡„Š‹…‹z•ˆ‘„ŠŒŽ~Œˆ†”ŽŠ†ˆ†|ŠŠ‹–€€ƒˆ†ƒ{‡Œ|œ’€™’ˆ€ƒ”‰—†Ž‹‘}‚ˆˆ‹–ˆ•ŠŒ{€†…„ˆŠˆ†’{’Œ‘…ˆ‰Œ{‰Žˆ‹‰“‰ŠŽˆˆ›ƒ~ˆ}Œ€x‘ˆ‹€†‘€Šƒƒˆ†Ž‰„…Œ”Œ‡{Œ’Œ„ކЗ‰‰‘uŒ”Іˆˆyzƒ…‡†w„}˜}‘}‚‘ƒ~‹†‚‚}}„ƒŒ~Žjv„ˆŠƒ~“|Šuz“ˆ€s„qvo‡…‰ˆ‰‚ˆ}€…“‰†|Š~Ž„ƒ†Šzzw‚„Šˆ‹s„|„tw–i‡„‘l}‰‹„zŒˆ}–‘€my’’ˆ…€‚…u€‹‚q}‰Ž‰‰Šw{‰‡†…tŽ~¨ˆ‹¥…}Žs€•‚Œ}€ƒyx€}Œ~€Œ}†‹‚u|~…Šˆ|pŠ’‰†‰|‘z„ƒ‰x”}ŠŒ‡z†„”‚……‡{†~–y€y‰vŒ‡s†}ŒŒs€}‘|‹…އtˆ†uƒxŠ|y“‡ˆ•‚—Ž{œ’‚€†Œ”_ˆz”‡Š€Ž{‹’Š}˜‡”…yŽˆ„ˆ†ušŠ‹‰‰Œ„ƒ”Œ†cŸj~—€ŠƒŠ˜z€‰v‚‹}„™f‰…}”›švˆŒ|†~x‰†„|™ˆ|š†z–‹„•‹oŠ{‘š†ŽŒ}z…Ÿªu~‘m‘ƒq‹}ƒ…‹|†‹‡…ˆtƒ‡c|~”‹|†b”¢–p{’†Œ˜˜q‘›‹‘yŽz•…¢~ˆ†Š‡Ž‚x~”“ …‡‰Œ•‘‰„œ€m“†…rŽ„•…„‹¢ˆŸo‰–“‡…Šƒ‘ˆ†r{ކz„Ÿ{‰’‚Žˆ•‰‰zˆ›–‘†Œ‰…”’|—ŒŽ‰‹ˆyq““ˆ}€‡’—„œ‡Š•“Šw}”Œ”y‚Œ’Œ‚ƒ††}Œ–…”ŒŒŽ‰…ŒŒ’šx‰•ŠˆuŒ„Ї’“„‚‚„~‰ƒˆ‰ˆ‹…œ„“}Œ€•~ˆ™~ˆ€‹ˆˆ‘‚y‰‡™~…ƒ~‰’ŒŸw{‹Ž~~Ÿ}…œ„•€””Œ”‡‡ˆw“‘“ƒŠŒ‘”„ˆŠ„Ž‘œx†’Œ{‹’ˆŽ|Œ‹x‹‰’™Ž‘Œƒ„Ž€†‹r‡r‚“™‹—Žƒ–~‰†ˆŒ}…Œƒ‰‹Š”…‹}—‰—‰—†Œ„Œšˆ‰‘Œs‰‡ƒƒz†‡ˆwzx‡ˆˆŽƒzˆ‡|‘Œ„€„’|‰ŒŽy•‘†…ƒŒŽ’ˆ‹–’–€ŒwŽŒ†ŽŽ‹‡x•“‡Ž”{ކ}ŽŠ’‹Œˆ”‚Ž’†z…y•‹šŒx{•™‡‰‰”І}ŽŒ“|‘†‡‹‘•„—Œ‰ŽŽŒ†…‹ˆ‹‚Š‹€Š}ŒŒ‰|wx„‚~‰œƒ‘ŒŽŠ„”‹‹Š‚ˆ‡|†“|Œ‡†Š‡‡„‡ŽŒvŒ”{ˆ’—‡Ž‡Žx•‰“”’‰‡“‘ƒˆŒƒŒ…ˆ„sŒ„„ˆ‡ˆ‹šƒŽ‰’Œ€†Œ˜•Œ‚—Œ}†Ž}—”‡”~‰Œ–y’‡|‚”{yžkw‹•‰}¨Œ†{˜ˆ˜‚Žj€|‰‡ˆŒˆŽ}Ž”w›q’‚‡†Œ›„€{—ƒ‰‘~‰Ž‹‡ˆˆ’ˆkrŽƒ†z€’‡œ{•“w‡‰Š”¤k‚Œ€‘‚„}v‰|ƒu‡w~|‹˜d™ƒ–˜“y}ˆ¢†‚‰””‹‚ƒƒ˜Žœix|€xƒ•…Œ“€†|‹šu„^j~‰„Ÿ¢‰vƒˆ”•y†šŽ‘–‹£Š“|‹•zœ€™ŽŽŽzt‘ˆƒˆ‡†…t•–z|ŒŠŠˆw…ˆ™‹|‡•…v„“Žš‹†ž|‡‰}”otz¡€Š»|ƒŒ•…|–Š}›†€•އˆ‡ˆ‰„‰Š}‡•zŠ€‰€„{}ŒŒ„‰Š„‡‚‚ŒŒ|…Ž…ƒŽš”ƒ‚‰ym‰y‹‚¡|…Œ…‘†€‹…Š‹yz‰m‹‚‚†…‹…‹‡›ƒ{ƒv‘ˆ„}”†‹†ƒš|‡Ž‹‹ƒŽyŒ}†““…ƒ‰‡…šŸƒ‡“q„|ƒ‹„’Š•…ˆ~ƒxv‰wš–•…‡x‰Š„yz‘†|˜—n“rš‹‹‰~ŽƒŠ—…”“‘Ї†‡|‘‰£†…y‚–‹“’Žƒ}ŠwŠx”‡{‘–‰‹Ž„“•Œ‰y¡ƒ–|Žƒ‹xŒ…{|‚‘|‹x‘ƒœ{ŽŒuƒv†„†ˆ„„‘‡€‹‹‰„€Š‰‰„Ž}‘‡’†‹Š’’І—Œ‘„Ž€‹Ž‹ŽŒ“ˆ}–‰ŠŠ†|Š„”Š•…І‡wƒŽŠ‘Œ…ƒ“Š~†ˆˆ†‰w†Š~“‰‰…‰Š›„”‹Š……ˆ†}‰‹}‡~Ž…‰…‡|‰Œƒ‹ŒŒ‹›‰†Šƒ…™Ž™‰…€‰ˆ’~ˆ‹‡ƒŽ‡}ƒ‰|•u…‰Š‡ˆ“~‡ŒŽŽ{‡‘ŠŠˆ‰Ž„u‡€Š‰ƒzŠ…ƒ‡ƒ’‰‡„ŒŒ„Œ„Œ’{Ž›‰‰Œ‹ˆŽ‚ˆŽ~Ž‹Ž{‘‚ˆˆƒŠœ„{Š˜‹ˆ“|Œ‰Žq‹ŠŠƒ„ˆ‚‹•}Ž‹‘Œ‡“މ”™ƒŽ…’ƒ„‘Š„‘…~“‹„ކyŠ|‰ƒ¤}ƒ…ކw„”—І€‚ŠŠŠ‘€’~™†’ƒˆ{‰“~Šz‡’‘”‰‰‹„Œ…ˆwŠ—{…~Ž}†xŒ‡†Žˆ}•}„’”“‘’†„ƒ…”ˆ“’‘~‚ƒ‚ˆ’„„™}ŒŠ…‡Šƒ‹•ƒ‰†|–†ƒ‘†€†Ž‚ˆ{†‘Š€‡ˆ‘†€ƒz{“‡ŽŒ{†Œ›‚ƒƒ˜–‚Šƒ……Œ…†Ž€ˆt‘Š‚‰†‰‹²˜z‹“Ÿ„…”r‹ˆƒ•”trk’šr€~ˆ‰ˆŽ‘€‚†‚‘•‚œ†‚{r‡ˆ”o…¨|}œ†“t“}‹Ë…€|²~}…„—„‚Œ‘ƒi…rqv„w‰|‚š¥­ƒyš‡ž‡l‰€€{tt–ˆ”Œ‚‘Œ~~{‚oŒys†„§‚‚ˆ”“p‹™€ƒ–•†€ˆ|‹ƒ|†Yl‹Ž~€s‹vl‡„‘u‹u˜€ƒ{™‚Šqv‚Œ„ŽŠvˆ|s…uw™ƒrui‘}–‘ƒ‹}~~Ž}†‰€Š‡‚‰whœ–‚†‹€uvƒ‚†‚†Œ‚œ…t§‹†˜ˆ†‰…Š€‰Š„††††ˆ†‰‚†ˆ†‹ˆ‡ˆ„‰‡…ˆ‡ˆ„†ˆ‘††„Œˆ‚‡‡ƒ‡†Œ„‡…ЉЋЉ{†…„Šƒ‰Ž…ˆƒ‡z„„†ƒ†‘‚ƒ€‡…†‰‰„ˆ‡…‚ƒ†‰‚†ˆ‹††ˆƒ‹‹Œ‡„…†„…†„…ƒ‹†‡Š’ˆ~~“††€Œ‚†‚‚’…Œˆ}Œ„w‡ˆ…Ї„‰†‰‚‡ˆ‡ˆ„†Šˆˆ…ˆ‚…}Š…‰‰Ž†…‡‹†„‰Šˆ†„…€Š†…ƒˆ‡Œ‹……‚„ƒ‡‹ŠŠ‡ƒ†‡„Ž„‡‚Œ~‹‚†Š€ƒ„|„„ƒ‡‡„ˆŽƒ‚†ˆŽ|{‡ˆ‰–„Ž–Š}‘Œˆ{‡‹s{„‹w~Ї“†’–ŽŽŽŠzˆ{ˆ‚ƒ†Š€‰Š‡†€|w†‚…ƒ‡œ†…”Šw‘‘zˆ{‘‡‰“~Œ’އˆ‰‹˜Š‘‚”‰‘‰–ŠŠ…“ƒ‹•…‰€”‹‰€~|…z†ˆ€•‹gx•“}Š˜ƒ‡|•‡‹—“’“žƒ‘}tƒ”‰…‡‚Š‘”Ž[†ˆŒxŽ‘Œ‹ŽŽ‹‡Œ’z}—‡“•ƒŠŽz‰z–“ƒ‚„Šƒ•‚ˆˆ…‘Š‹”ˆ}’’ƒ‘˜•‡„‡†‡‡vŒ‰ƒ„Žq•€~Œ‹‚„ƒ‚Œ‰‚{Œ‹~ˆƒ€…‰„}‰‡ˆ”w|…€”‰{u…Žƒ‹ƒˆˆ‚†€ˆ„||‚y|rŽ†ŽŒˆˆŒƒ}‚Š}‚‡}‚‰€}‹ˆtƒ‹€†|{‡›t~~—r‚z’uu{Ž}„‹{…‘|yЉ‡~vˆ‡‡Œ††qˆ‹ˆŠˆ~‡‡}€”ˆ€‚v}„‰}…Šz…‹„†ˆ…‚ˆ‹ˆ~‰Œ„•x„„‰ŒŒ‡……‘~†ˆ€y„……p‡„ˆ†œ‚‹{‡…~€ˆ…yz…Œ||n„‰„‚‹‹Œ‡€}mކˆ€{€{—„xuŽr†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††„…zŽ}Œ{xƒ}|ƒ‘…‰’…ƒ…w…|‹…wq…ˆ…‰‚Ž‚‚Œ†„zw€{xy”†ƒŠ‹‹ƒ{Ї‰Š‡ˆ…|†€‚Љ„‹|}|‘€–v‡˜ƒ†ƒzs…|‰‰o‡†|‘†‹{˜„|y…‚…‚†…†t…‹ˆyƒŠ‘Œvƒz‰†„‡ƒ……Š©}~‘Œƒ„~‡‰’ƒƒy„†~}‹—‚ˆ„†Š…€r€|{ˆsƒ~ˆ‡„ˆx‚ƒˆŽƒ‡‡}}~Œ‰€„†…‰…ŽxŽ|„…„}Š„‡…z‚~Œ~†Œ‰v††ƒ}}|ˆŸ‰™v†ˆ}‰…‡ˆ‚~‡tˆ{yŽˆƒ~—š‰Š†”›„’|Žœ{…–ˆœ‰o~Œƒƒ£¨ƒt‚…w„ƒ™]S‡~‹ƒ‹‚‚‡„‹~|Œt…w†‰}ƒ‚„‚––…‘€…|‡Ys†Œˆ†|†{|’u}„€~‰„Šˆƒ}†„’o‡qVvzxt…~x¥‡†€¢€‚€{}‡Œ…r_}„…ƒn“ƒ‚‡}t{‹‹~„wƒy€ƒ~}€†žˆ€†v]{€„V€€~n€t‚}†„i}x”Šƒƒ:w…‡„Žƒ|wz|t|„‚wŒs}‚~€–yu‡‡’|Œy‡’‰š‰‚€„‰}€†“‹‹~‹Š‰‰†‡‡›wŒ†”}Œ‹‚†ƒ„š‹—ˆ‹‘ˆ‘Š…o„†Œv}|ˆŽ›€‡‹…„Ž€‰”h€…‰Ž‹Š„‰‡Ž”„|ˆw‹uŽ„šˆ}‘‹’„‹{~‹™ˆ‚‡…Š‚†‹œ™˜…~ˆ|Œ€‚‡ˆ‡‰ŠˆzŽœvІjlŽŠˆŒvq‡•ƒw‡‹–•—~ˆ{™‰ˆ‘“‰–z“–}‹”…š|{zˆŠŒ‚‘’‡Œ|–›{ˆ†‡„|ŒwŠ—‰‰†’‘€‡t“”‘ŽŠŒŒˆƒŒw•~t†‘}ƒ¨{„†•‘ƒ’“–ƒŠŽ‘†ŠˆŒŽ‚w~ƒ€Œ›„†…|‚ŽŒ˜„‘†Š…Œ‰‚ƒ‡…ƒ…•‘ŽŠ‡Š†ˆ‡„š‡ƒ‡„sŒˆ‰ƒŒ………ˆ‚ЂЅ€„ƒx†~„“‡‰……ˆ„‰p‚€ˆ„˜‡‹€‡Ž†ƒ‹…†•Œ‚ˆ†…†x…‰r“…‹€‚ƒ…ƒ„|{€‚‚q{€…‚}Œ€Ž‹•‚‹‰€‡‹„‹‚Š‘Šx”†€…||Žƒ‡‡ˆ†€‚œzz†Ž}€„Ž–„†„…†Šƒ™…‹|…‹ŠŠŽx‚ˆ„…|žƒ…‡„ˆƒ“~‰‹…‚‚ˆ‚‡‡ˆzŠŠŠƒ“‘‰‡–‡ˆ‡‡Œ~‰‰ˆƒ‰‹ŒŠ‡‡‹‰“|‡‹ŽˆˆŠ‡{}‰†ˆ‹w|ޖЇ‹‹„z†Š”˜‰‚…}‡‹Ž…†ŒŽ„ƒ”ˆ€ˆ„Œ€‰‹„‘”ˆ‹‰ˆƒƒ†Š‰Žˆ‰€ƒŒƒ|‰Š~…šŽ…‘†Š‡y†‘”‚‰ˆ…z~’Šˆ’…‘|Œ‘…Љ‘’‹…‘€‘‘—„€†Š‡’…’†‘~“‡‹ƒ™€~ˆ|…”…‘‹‘‡‰ƒ‚Š‹Žƒƒ€ŠŒŽˆ‹™………‡š…ƒ‡|ŒvˆŒ…’˜|ˆ‘t˜~„‹„ŽŽ{Љ•‹†Œ‹~†‘‡|“‹ŽŒˆ‡ˆˆz„ˆŽz‹Œ•‡“‡‡‹ŽŽ‚’‡†Ž‡Œˆ‡‰{’ŽŽ–‰~‘ŒŽŽ—Љ†ˆ‰ŒrŽƒŽŽŠ‘…‡~„Žˆ‘Ž„‹|Š…’‚‡~…“’„‚Œ’‹ˆ‚‘ƒ‰y‡ŽƒzŽ’•€yŠŽ‹ƒœ†€…™€ŠŠ”—–ˆ…‘„‡‹ŠŠ““”ŠzˆŽ‚‰’„‰ˆ’|‘‹Žˆ‰Ž€ˆ‹‘†Ž†‡ˆŠ“ЉŒ‚Š€|†ˆ‹„Œ‰‚„‡ˆƒ‰|†’†ˆ€ƒŒ‡„ŒŽƒŠˆ–€ŒŽ‹Š{‹ŒŽtЇƒƒ†‹Œ‚Œ‘†‘‹oމ„Œ…€‚ŠŠ„ŒŒ‹–“˜˜‚Š“Šo‹xv‡€‘’Œ‡ƒŽ‘”~ŽŠl…šŽ’—š„‹ˆ~w„ˆcz‡„‡švŠ‚”‰’’ˆ‰‘™ƒt‹ƒ‰yŠ“v‰‰”‘ކ„Šˆ‚„Ž}…Š“‚“……„|€|‰Ž•““„™Œ|‰l‹‘œ‹e™‘w|އ—ŠŠ‘ƒ…ˆ•ˆ„—ˆ—˜˜ŠŠ”…Šz’Ž®Ž~†ˆˆŒŒ„”|‹ˆ’˜~Žy“w‹‡–y~Žyˆ–‰ˆ—–•‹ƒŸˆyˆ‰n—‡ŠnŒ“y~y‹Œ…ƒŒxt‡ƒ‘…„ƒ‰†‚…ˆ‹ˆ“…†……t‰†…Œ„‹€Š‚‚Œz{„‹‘ˆ‹‘ˆƒ„‡xy‡ˆŠ’“Žƒ††“‹‰€ƒ€‡…†u‹€…t†}†›{ˆ‚{‚xˆ}”|Šƒ‡‰z„†‹‡~Š„‰„Œ†t|Š…†ŠxˆtŠwˆ†‚j‘Š“Žywˆ†„ˆ—‡xˆ›{†ˆ•€‹xŒ€‰’……†ƒ{spŽˆ‰vˆ€„‡‹Œs‰’Œ|‰—‚ƒ‰‡Œ‚€‡ƒŒ~‚‚‚ƒ‹€…†…ƒ{ƒ‡‡w‚Š~Š…ƒ~}‰‹}…—ˆ†ˆ‰…„†sŠ}{z††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Œ‘wˆƒ’‰‡‰”€ŠŽ‡}‘‹”Œ‹ŠŠ‚}…ŠzŒ•—…”€ˆˆŽƒŠ‹‹Ž‹Œy™–‡‘މ‡w™‘šˆ™Ž„“‚Šˆu‡}˜Ž™’€Šˆ‰™‚†~‹Š’‡‚|‡’‘‹ƒ‰–ŒŒ‡Š‘‚‚}Š…“ˆz†”r{‘Šƒ‹†~¡€“„‰˜–“‘…„€Œ„†…ŠƒxŒŽ…‚’‚…‡yŽ•ˆ’†‡zƒ”“‰ˆ†’””—‰„†~”„ƒyЉ…‰„„І”†„„{‰‰‰‚ˆ†‡†”š|Š…•„”‰‡~ŠŠ‘sŠƒ€Œˆ‹…zІŒuŒŠ‰xЋЇšˆŠx™Ž‘ˆ„“„Œ†‰“‰ƒy’ˆ—‚‹Ž}‹ƒ‡zމ„xŽŽz„…‰…Š…‰‹”„ƒ†Ž†t‹‹‘‡˜€€ˆ‰‹‚……‡~•ŠŽ‚‡Š’~’”‰‰Š“}‹ŽŒ|€…‰y‡Œ{‹„ŒŒ‡‹…zŒŒƒ‚œ’}–„Ž„„•‰‘‹“„„„}‹—Šƒ‰„ƒ‘‹zˆ‹’…“‹„ŒŒŒ€Œ”‡‡…Ž’‰‚’•Œ‡އˆƒ„~‰|Œ‹ŒŒŒˆ€’’ƒ„‡Ž„Œ†‡“Œ†„Š™…†‹”†˜Œ|‡”u‹£Šˆˆ‚‰y‚’•€„z‰ƒ€}ŠŽ€Œ…ƒŒ‹‹‘}~‹z‹Š{x‡‡„Œ‚†Ž€~…{‚…‚ƒ{€}zx‡~‹|w„‡‡…Ї†‚‡ˆyˆ‡„‹wƒ’‚…‰‚Šz†–’{‚}‘p‚}}rˆˆŠ’sŒyˆ{…„Œ†u…‹~œ„“Œd‚Œ‡ˆ†…ˆ†‚‡ˆ†¦—„|}ŠŽ‚‰†‚Š‘ˆ…„„†‡„}†šˆ…„’z‚vˆzŒ…ƒ„ƒˆ{ƒ†‡ƒz‡‰yŒz„„–t{‡‡r}‚Œ„€yŽ’}zk‰‘ƒ…„–x{‡~xŠŽŠ|Œ‚p†}‰z|Žs…‡…‚…†‡Š†‰Šƒy‡ˆ„Š‚‹„ˆ‡†‰ˆ…†„ƒ‰‰ƒ‰}ƒ‡ƒ‹‡ƒ†‡ƒ‹ƒ‹†…Š„‡…†|ˆ„‰‡y„ˆ††„ˆ‹‚ƒ‡…ˆ…„—……ˆŠ…†‡}z‹†}††„‚‡‡ˆˆ‡„ˆˆˆ”‚Œˆ‹’ˆ‚ŒŽ…ˆŠˆŠ‡Œ…„ŠŠ„‚‡†‡‡’Œ‰ˆ‚„ˆ„ˆŠŒƒ€‚‰w„‹‚Šˆ‹„‰Œ…€u„†‹†‹Š‰‹~ˆ€†ˆ‰‡ˆ„‘‡{Š…‡…‰Œ‚€}‡‡ˆ‹‹†‡‘…‹ƒˆ~‹ƒŒƒ„†ˆ|‰Œ‡…Ž~…ˆ‚Œ~…‰‡‚Œ‘††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††„€t‹€†Ž…‚Šy•„Žq‰ˆŒˆ€‡uŽw“…€‡Š‰„„„—Œ‘}’„„„|Ž‹„€‘{y‰ˆƒŽŽ‡‹†‡‰Ž†…‚}‹†ˆwŒ†Š‚‰x‡‰ƒ‡‹€vuŒ•~Ž~ˆ™ˆ}™‹‚‹w‹ˆ…|w“‹xŒz‹z{yˆh„ˆŒš‡{p†Œ~‡’†ƒ’ˆ“o‡‹¨†‚ˆu…~ˆˆ‹‘…†}y„ŽwƒŒz‰ˆ…’x“}†Ž’‡‚“Œƒ‡‹‚‹‰Ž€‚„‡ƒ‚“‡‡Š€…Š~‡˜vƒ‚†‚Š‹“|ˆ‰{‹ƒ€ŠuŽ„€‚}Š{zƒwŒ‰ƒ‡}u‚ˆ|’‰‹‚•Š…{ŠŽ|„„’Œƒ†…‹~Šp‘‰‡ƒŠ‹}„y…~|…ŽŒ„ˆ—–ˆ’‚Œx†yˆ…ƒ†‡‰ˆŒ‰†€}Žy˜{ŠŒ‡…‚ˆyŒu‘‰”™{~Œy‹†“‰‰’•ˆ|}€—ˆ‰€ˆ€|Œ|ˆŠ‚‚“||ƒz—‘ˆІ£{~ŽŒƒ|Š‚}…†›Ž“•|‚…ƒ•Š˜Ž‚ˆŒzŠŒ}x—t~‹‡‚{Ї“˜’z‰ƒ‘‰‹„‰}†‘‡……ƒ‹†‰„t‡{~~†}‹†“Ÿƒ}w‰}„€hƒšu‰iu¤‹„…‘T‰xvŸv‡˜Švf{zˆ’x’›~Ž’u€–jq–„Œ“‘¨˜t—†††‘uŽ{ŒkŒoƒ†›¬Œ”‚vp…Œ\o¤s•†–ˆ‰…€ˆ†’Šk†r}yj–Žƒ„ƒ“ނމ„”Ÿš—Ž€x“•}Š Ž„†`‰vƒ‹y‚”’‡’t–Œ«lƒ‘qv‡z‰i{§eyx‰‘‰wŠY^’~Œ†…¢„€”™š–Œt€’~œ¥„‹Ž‚e_¤u””Œ€u”ˆ™‚u•Ž‚yz}zs§…v‹‡„w‘‡rx…­‹{~€ „œŠˆz„‚†Œ‘…‰ˆ‰ƒ€ƒ‚ˆƒ‘„‡‹†…‚„zŽ…‡ƒŠˆŒƒ‚ƒ”€ŽŒ…†‡Ž“Ž…Š…„~uƒ’~ˆ„„„‰~ƒ…„x„€‡…|‹„‚Š„…ƒŠš…‚ˆƒ†„‰‘‚‚‡†„€z†‚~‹€…š††…‹Š‰‡†‰„Šƒ€€†Œ{ˆ‰ƒ•yƒ…†ˆ‚‡‹}e‚~Šƒƒ†š†„•Œ‡m”ƒ………q†„‚„v}ƒwІ‚„…~‘p„†”†‚„ƒ‡~Ž“{†ƒ„†‹}…‡—‡…Œ‘‚…S{‚††~‡ˆ†sƒ‚{ƒ‡‰€|…ƒ†‘‡v‹†mŽ„†{†~z…‘|Žˆˆ–‰ƒ}‡…’Ї~sˆŽtlŒ‚Œ…}Ї„p†…ˆˆƒˆˆ›‰ƒs}‡s“‚–‚—’‰Šy«“‡ŠŒ}g}„†s{~„”–—Œ|Ž€~‡„”Œ©¤Ž‹Œ•’y‘‰{‰†„„‚‡‡†‹˜‹}|Œ}›Œ€‚‰~’z‡{}‚“z‹œ„“x‡Š–„}„‰†€–‡}€‰”ˆŠ“Œ—•Žu‡›ˆ}’ˆ‘…„€^Œ†›{‰}ŒŠˆ‡}‚‘‘‚„Ž‹…ˆ’„Š‚„‰‘ˆƒŽ˜|ŠŒs™‰‰‡u‚}‡‡„“‘†Œ„‚~ˆŒ‹„ŽŠŒ†wƒ‡‚€…Œœ‹‡‰ˆ‰‹•Žz‰‡’ˆŠ‚ƒ†ˆ‡zŸ—‚‹‘‘‡–‡ˆŒ•n“‡Œ˜‚Œ‰Šw…‡s|†z|Ž—tކ”‰‘~~„†‘†…ˆwˆ}‰–}~Ž”Œ‹‚„‹|‡ƒ‰“Ž„„„›•Žwy„{ޕГ’‡’€ƒ‰x…†€‡“˜…|‚І•“‹†‘€’ƒ…˜ˆ‘–„wŽ„”–›‘„Š•ƒ†‚ˆ€Ž†Š„„‰‹šŒ“ƒŒƒ€šwЇ“„w‡‰’‘†Ž€Ž„‹‚u‹ˆp~Š”|ˆy„Ž’€“„”|†‹‹‚Ÿ†Œƒˆ‡ˆ{}ƒ’…‰ŒŽ‰‰Œ’“Ž€€–~›…œ‚~”{ˆ”…–‹‘–˜iŠŒ„ŸŠ}‹‹•~Š‘ƒŠx‰…žw€…„„…ƒƒˆ‹‹Œ‹t‰‡Š}ˆ•xoˆ‰–š}€‰™‡x„‚Œ’ˆ|…‰“–˜mytˆ€‰‹†‘’–…†€ˆ—rƒr|‚‡’‡vxy‹ˆ‹““„€y›‡…˜‰›‚™~“†˜‰˜ŽŒŒ“m„ˆ†„’ƒ‹{‚˜’Œ‡†‰‘„ƒ…wx˜††›Œ}‡{˜Š™ƒˆ’Љ‹|u|‹š{›{‰…‘ƒ†‹‡Œ„}‡}ˆ‘€‡†ˆƒƒŒŠ‡†…„–‘†ŠŠ˜…Š„‹‹†Šz†ƒ‡‹{±Ž‹{‰…‹„“„|…†„†ƒŒyrˆŠƒ†ŠŽ…^‡ƒw–Ž~™’‡‡†uŽ{ƒ…Ž…}ˆŠ‹Ž’}yީЛ“Œ‡ˆ„Šž†‰ƒ””„ˆ‚ˆ‹|‹†Ž‡t€Š†Œ‰…„{—ƒ„{€Ž“’—w€}€|‰„–zŒ €oŠŠ€‰‡“ŠŽŠ‹}–Ž‘|Ž‹’ˆŽ‰m‚ƒƒ}~x}}‰Š‰‚Œ–}rƒ„~z€y“Ž€ˆŠx‘†’Œ{}Œ‰xŽ‚šŠ†‰€†…ƒ›”††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‰’€‹Œ…Ž‹t’’…Œ‹…‚‹wŽ…”Œˆ‹—š’„‹‘ƒzˆƒ‡„|Ÿ“}ŒƒŽŽ’…‹Ž…mƒ‡‹ˆ˜’€‹„‚”u|„c‹|v{œr“‹„‹—‡|Š~Œ“‹ˆv‰„„}Œ”o€›‡™Œ™“€ŠŽ~ƒˆ’“„ƒˆ‹†šyˆŒ|€Šy„އ‘’”‹”„Š’{uŽ”„‡—|„އ~ƒoŒ„•†ˆ„t›€‹Š™’”„„›‰‹š‹ƒ‚Œˆ†™‰Šƒ…މ‰‹”}ˆ‰u•w„ƒœt‘”‚}‘„–”•|•‘ˆˆŒŠu††ŽtŠ”}ŒŠ–ŒŽˆ™Œƒ•{“‚„–ƒ‚‰uˆ‡{~‚ŽŽŠƒ……ˆ††‘”Šy‡‘|–‹‹‘†ˆƒŽ‰”ˆ‚›•’Ž‘œp–Œ†•‹‚“‡‡†ƒ†ŒrŒ‡s~‹Ž€„}‚š‹‘ŒŠx“ƒ„ƒŠ”||‹ˆ“€‹„~–‰{‰Œ„|xˆ—’’~…t†ƒ‹†‘”‹‹„ˆx‚}}ˆ‹–‚•vsŠ}…‹„Ž—˜l”|Œ‰•€“€“„އ†‹Šu‡†Š£’‡ˆ~‘Œ˜‰‚‰„…|‘ww˜‰‘ƒ„u–‚šx‚‹‰…™Šƒz‚‡Ž|…—}—„—{ƒ’Šx„‚Ÿ‰Žw“Љy„ŒŽ†”‹‹~‡’Œ}‰——‰‹Ž‘‹ˆƒŽ‡”…Œ•ž’‡‹‘…~‘‰ŒŠ‘“ˆ††€‹ˆ–œƒƒ…‰ˆu}‹•“ƒw‰…ŽŠ‰Š‡~†’‚‰…Ž{…‹“‘‡ŽŒ~–vŒ–„|•‹|y†‚~œ”†‰™|‡ƒ”’“€‘‡‚ˆ„އ™}™‡‰Žƒ‡~ŒŠˆ}–~“„˜‹ŒŠ‹{„™‰Ž‰‡‡‘„”Žˆ„‘€‰ƒŠy‡s‡Œ…€Šˆ‚‹Œ…t‰‡ˆ‡€z‹“…|‰“ˆŽˆ•ˆŒŠ‹€…yŒ•‡‡ŒƒŽp}Žˆz•†Š„t•~…“’’€}{‰ŠŠŒ—Œ{Š–‚œŠ”|„ƒˆ€‹ˆ‰™”‡–‡„€n„Š|‰}ƒ‘¢Œ‰‡…Ž~˜k”ˆ‹ƒ|‹ˆƒƒ‚’›’ˆ‰v‹}„†“Ži‚‡“‘€‡’˜}‰’ƒ‘ƒˆŽ›–’…†{Ž…˜y|Œ…‹Š‰ˆ¡vŒ‰r}|Ї~|–vz“‡•—Š~l•›“ˆŽ‘xŠ’Š}Œ„…Œ„‡˜…ˆ‘Š„p‹Œ’Œ„‚‚…‚s–w{ŠŠ†‡Š„ˆ†‰™Œˆ•ƒ‹Ž‡•‚‹~›Šu‹”•ކŽz|š†€•x€ŠmŒ…Œx{~}ˆ~ˆ‹‹ŒŠ‚††~ˆ~†ƒ~††Š‚‡Š‹|‰‡Ž‰ˆ}ƒˆŒƒƒ{‚|}Œ†ƒŒšz‘”„‹Ž‘{z„s„…„ˆ‹Œ‰„}€|Šœ|’~Š‹…ŠŒywŠŠ•~†s–}’‹Œ–}|{‰ƒˆ…€~…{}Žu‡Š…z~}t‘†Ž‡‰€—ƒ~‡”„{‡†~Šš—‹Šz„„‹‚–Œ†ƒx‹‰€Šq“‹sˆw‰‡ƒ…x‡ˆ™z’„ˆˆ}–Šƒˆy†•ƒš‹…}ˆ„‘‹mz†€}ŠŠ‹Š˜Ÿ‚{…‹Œ~ˆ|nŒ‘‡yˆ•Ї’‘Žz“Š‘Š‡ŽŒˆ}{•’‹|‹Š–•ˆ•‘‹…†•†‘Šƒ‰††Šz”Ž‹‘‰ƒ}€Ž–ˆ‘’†ˆ‡‹‰t†ˆ“Œ‘ƒ‚Œ‡ˆƒ‡{”ˆ•„ŠŠ“~ŠŒ~‡‘Ї‰ƒˆ€ŒyˆŠ……~‘‰Š||ŒŠ‚ŸŒ‚|¡€“Œ}Š˜Ž”‚ŠŒ~Ї‹€„“ˆƒ€Œ‡ƒ•‡„“ŽŠ”‰‹‰ˆ~Š…’ˆ”‹ŒŠ‹•‘‰ˆz†Š‹~ˆˆ‡Ž‘‰Š„‡•‚‡…ƒƒ‹‘„€ƒ‰‘ƒ‰„Ž—ƒ‘އ„‹•†„‹‘t‰„†‹€Œ‹‚Š‹ŒŒ††‹„„„‡v…ƒƒƒˆŽ‡„‰†‚†€ƒ‰†‚ˆ„˜†…‡Š‡|„ƒˆ…‡‚‰‚‰†‡ƒŠ†‚‡„ˆ„„„Š€ƒ„††ˆ~‰…‰†ˆ€†ƒ†Œˆ„†…†ˆ‡…ˆ††‹‚„‹………‚…„~ˆ‡ƒ…‡ƒ‡‡„…”„ˆ„‡ˆ…‡‡††…‰‰ƒŒ‹ˆŠƒŒ†‹€‡ƒ‚‡€††‹‚„Œ€‰Œ‚‚‡‚ƒ„}††Œ€ˆˆ‚„ƒzˆ…‹„€‚…ƒŠ„…}…‚…ˆ„…ŠŠ†„ƒ††‚‹‡…‡……‰€ƒ„†Œƒ…ƒ‹†|‹‰„‰†€Š‡Žƒƒ„ƒˆŽ…†‰„Œ†ƒ‡‹€‰‡‹‹Š‡‡Š‘‹‰‰|™‰ŒŒ…ˆ‰€‚}Œ~ˆŠŠ”ˆ‹ŽŠ‡Œ…“„‰„…Љ‰‹‡|”‰Œ‰ˆƒ‰s‹€ŒŠŽ€‹ŽƒŠxŠ•ƒŠ…Ї…†‹Œ„Šw•„’€‡’„„‡‹…•“Œ‡ƒ–‹~‚„…–v…‰†Š~‹†—‚{‡„†œ…wœŒŒ~ ”‹—Ž‹‡‡ˆ€…ˆŒŽ…‰Œ‚‡Š‰‰™‰ŠŒ’~“Œ‡‰†}‰‹Œ’‰Œ„‹Š”‰ˆ„ƒ‰œŒ}‡‹ŽŽ„‚Ž‹‡‹|‚†‡Œ‹~ˆŽ‘‚‹Šˆ•‹Œ†Š‡‰ƒ‹‘‡€ƒ…ŽsŽ|€‰„…Švp•އ„šˆX…‡„ª€ƒ’†r†™ƒ‰}‚w~“†ˆ‚uŽ…‡{€Ÿ}œŒˆ‹Ž„„‚wŒ‚}ƒŠ€jŽ~Š…Œ„ˆ„‰|‚s‰…yœ”‡ˆ„‡•‚„ƒ‚Œ‚z†Ž‚Q‡™ˆ„‚ƒ‰‘ƒ…„†Œ‚§ƒ‚‚‹~‰{Š‚‡ˆƒ“~„z}‚Ž…}””}~zŒ}€‚‚€yrƒ‡–‚p„„†w‹†z„{~…|‰}‘†ƒ•†‚ˆ‹vŠ‹…€ˆ‚…w…€„‘—|„yŽy‡€…‰Ž‘ƒ€¦„€†}…†}›……Š‹‚…qƒŠ†~„‡z€…mŠ„‰‡ˆ“‚ƒz|–|ˆŒ‹“†ƒŽ‚ƒ“†‚Œ€…tƒŒŽ„‰w{Œ‚|—„‰‚„x…{y€€Œ‹‰‹‰‰‘z‹€‡||‹„‚x}Šˆ•r|„‰‹„Œxƒ‡ƒŠ|ysŽŠs…ˆ…‰yy‹‘vs}ƒ†Œ‹Š†u}ކ€‘Ž|ˆ‹€ˆ|‰ƒ€…„ƒ„ƒ£‹y…Ÿzˆ…„ž‘ˆ€‡—rŠ|}…}‹‰‰‰€‚zxvƒ}…ˆŽ‚ƒŒ”Œ‰€ˆzz‡~‡’€…Š„ƒ†~Œƒy‡{xx…†ƒ…‘„}~‰…†xŠ}}„‡‰‡„{xƒv~ƒ|ˆ„ŽxyЇŒy‰Œz‘Š……‚ŒŒ}Љ‰ŠŠƒŽ’‹‰£Ž†Š…•Ž•‹‹Œ†v•ŠŽ’‹„}‹…ˆ’Ž‹ƒˆ‰z€}–””†zyŽŠ‡…†Œ}Œ‡ŒŒ…„‹’Ž”‡ˆ‰‹Ž~އ‹‚“x‰‚‰ˆ‡‡wzˆƒŽ›‹€užƒŽˆ€Š˜Œ‹Œ‚‰…}ƒ„‡“†ˆ†‡‹†…ƒŠ’x€„˜}ˆŒ”Š‹‹vˆ‘‰Š‘•’†ŽŠŒ”Šƒ‹€‹‚ˆ}ŽŒ‚‡‰ˆŠ…Œƒ„Œ‡‘‡ˆ€‰‘Š€‹•Ž}ˆŒ‚’Žˆ‹‡u…‚’†ˆ‰„z†Ž“Ž~†“ƒ”†‘‡š†‚Š“‡‚‡Š‚•‹‘w…„‡–‹‹’Šˆ‡‰‹‡u–ŒƒŒ‹™†s€‹‡Ž…Œ}‰y‰…“‘ˆ‰€}…‡ƒƒz†}s’ˆ’~’Š‰Šƒ˜ˆ†—‘ˆ‰—}{…‡•~‡Š‡†~w‘ˆv‚‡ŒŒv˜†‹‹’y’”‡œ}ƒ…’„{‡‡‘…‘‰‰ƒŒŽƒ‹•ƒ‡‰Œy•ІŒˆ”uŽŒ‹”“‘„ƒŠˆ™ŠŠ…‡‰›’~Œ˜‰Ž‹ƒ‹ˆ…”x”ˆ…†“†|Œ‹‚‹}ƒ—€Š”˜……Œ—Œ‡ƒ“wŽ‚ƒ™…ˆ†††††…†††††††††††††††††††††††††††††††††††‡‡†††††…††††††††††††††††††††…‡†††ˆ…†††‡††††††…††††††††„……†††…†††††…†‡††‡††…†††…††‡‡††††††††‡††††††††‡††††††…†††…††††…†‡†……††…††††††††‡†††††††‡…††‡†…‡††††…††††††††††††…†††††…†…††……††††††††††‡†…†‡‡†††††††…††††††‡†‡…††‰‘‘uvœƒ€’x‚v—|ޔއ†”~›xŠ™‚‘~„‹Š”„…—™€vŒ€‰Ž‡“€‘Œ„y„w¬‘¤Ÿvlk{š‰‡m•£¢wy˜•‰‹„†„—Ÿ“v{€}}‰‹’‹‡Ž†rŒ—ˆ–y…€s€e–|‰oz{Š£|„‰€t~’Ž’‚~„‘Œ…“i‹‡z“€”‘‚¤zeƒŒ‹uiŒc™}¨x”±‘€‘~”›“t…js‚‘uˆ|± n£š•| — ‹ˆ•pƒ¡…ˆ’ž†…Žƒšr}‡ˆ †ŠaˆŸ{}• ˜~€nzy„–tm–“ƒ‡}t„ƒy‡ˆ‰{’‚‡y‚‚xˆ~‡ˆ‘„Šˆƒ„‰w~~ƒ…xu‚|‡ˆƒ‡p‰Š‚ƒ‚‡}z€|y{†…‰”Ž…ƒ’‹Œˆ‰Š†‚ƒƒ…‹‡Žx}†vƒ€|Šxƒ‰Š~x„x‘o{‚„t‰…ˆ‰‰‹‚“‹{v‡~Š‹„Š„}uyƒ‡†‡’t“ˆ…‘…Ž‚†Š„††‡ª™ƒŠ…ˆŠ~‚‡…Œ’‡zx}‡y}ƒ’ž{‚‰ƒ€z{o‹y††•‡|…†‰‘‘|€…‡y‰|‰‚†x„‰‰…zƒŠx€‚ˆ‚†~„Œ‚„€‹„ˆŠŒ†}~‚xxކ~‚†„€„u}ŸŠ{‘‚‚™ŽŒ~xˆ{…ŒŠs€y€w‘Ž‚‚Žƒx–Ž…‰}}rn™……‡•…†…€Š|x‹Š‰•wƒ|–q†}‹†d’p…ˆ‰{›†w€sš‘œ}‘{~†•n¦…‡|Œˆx˜o‰‰”u~ž}wƒƒŒv‚~~„‚ˆx‡š”zŽzv’zxi‰’‘†”€„ŠŠ‹†ŠtŠ€yo‹„|ˆ„‰‡ƒˆž’z†„…ˆ‰†„…~–‡j†‰‹„˜y…u‹q‘… ˆ{™lŠ“‰…ˆž„}›_ˆ›–}Ž¢‰†‚„œy†£ “˜Œ~‰›z|‚—“~Œ‹†{‚Œv†‚‹„…w„{’t‚’’‰€‹†t¢‡{jƒ‰……~ƒdz‰~„‰|ˆxtr€‰~Š…~q…wxl|Š„™Œƒ™ˆ‡‚}}ˆ…€z‘v‚……•mk{Šzyw|w…‡{ƒ‘|ˆŒ„{n’Š|“y‡x‹…xsu{Švz•†qyzŽ˜Œzƒ”‚…}‡Ž„y~Žªxƒ’„†{›”‰ƒŒ†…w{„ƒw—†€…ƒv‚xŠdn€“‹Œ†‚•‹r‚noˆ|†ƒ{Œ‹Žƒj…‹…ˆm€asŒx|€‰€s‚„ˆ{€}r{†‚oŠx†¬€‘Œz‘‰†‡‚•…‰‚Šy€‚Žo‹|˜‰†‰’†‡ˆ€Œ†—™|x„¡‘ƒƒŒ‹€ˆ…y…}†|¦„s„Œ¤‰€ŠˆŠ‘„‡‘€ŽzŠyŽ…‰„z€’•Ž|}…€ˆ‚‡„‚‰“ˆŒ‡‚…”‡Š…†“|‰„†˜yƒ{…z„…„„‡—Š‚…}‰ˆ“€€ƒhuŽ‹‹Šƒ”˜vq…‚†Œ™ˆzoŽŒ–Ž–‘~ˆ—‰’ŠŽ„’‰•{‰‹†„Š~‹zŠˆ…~{…y†Š‡˜€|‡„Œ‰„†‰q“‰‘ˆŽŒŠ‹‚z~‘v‚š‡}™†{”‚q~ކ}xt‡‹‹‰w{Œ‚‰‡Š}ƒƒƒwŽŽ‘‹ˆ~‘z›““k‹Ž‹ˆ‚‹Žƒyš‘„…‘‰…y‘‹‹o”–„~–‰Š†|Ž~…t•‹‹„|„–„‰}|€xƒƒŒ{•І†Ž™–Œu˜Š‰}…’‘…~“s†‚ކ…‹jЉ–˜†}u™„ˆˆŽ„•‘„‚‹ŠŽ{‰{ˆ„yŠ¡……Š{v‰š“l‡|Ž‚Œ™s‹‰€“’šˆƒ…‹Ž†”ˆŒ„…Šˆ‚ˆŠŒŽ…‹’}—Œ–~†Š{†„‡†•І‹Š’†Œ…Œˆ™„‚{Šzx†“Œ…ŽŠƒ…‰ˆ„ƒŒ‡‡ƒƒ‚ƒˆƒª„…‡‡‘‹‡}†}†…ˆƒ‚Šx“ƒ…†Š„މŒ‰„‰Œˆƒ‰‡‰‹†’‡„‹…Œƒ~‡x‰„€ˆ„‰†„Ž…€‹Š…Љ‡‚”ƒ…‹‹‰}‚‹›Ž‹…€€‡†„€‡‰‘ˆ‡…ˆˆ…ŠŒ†‰Œ†Œ€Šx……„ŒŒ•y„ˆw€|‰”ˆ}‡’†rŠlŽw…‡‹†…‘€sŠƒ‰ƒƒˆ{„„„‰|€„}„…ƒ„ЅІ‚‹Œƒ†…††…ˆ‰…ˆu‚‹~’ˆ…‰‰|‡yŒ‚……Š˜€~‚‚y†€‰|‡}ˆƒ~†ˆ‚ˆ~€x‚“Œ‡‰sŠ‹„†ˆ‹|Ž…‰~‹—“…ƒ‘Œˆ‘އ†‹“‚—›‚“Œ”ƒ—••’’ƒx‘Œ…“€‹„Ї‹‡‹…””ƒ„‡s„Œ‰˜‹~‰…„†‡€ˆ‰‚{v–‰‘‡”“‹šŽ’€‹ƒ……}˜ŒŠx‹~Œ|˜‘‰‡’v†‰„ˆŸ”z•}‹ˆ…€“Œ’{‰–ˆ‹‰†…ƒ™•ƒŽ…Œ}†zˆ‘tˆ‹”ŽŽ‘•{–ƒ†‡Œš‡„‹™‹z”‚‡‚~ˆ‚„Œ„“ˆŠ…”ˆwƒŽƒ€y‡’‰~‹˜Œ}Œ…‡‚š††…•z“‰•††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††~‡n„…œ‚rŒ„‹xŸwyu˜ŽxŒsƒŒ‰‡ˆ”“{¦|ŒŠ~€‡ˆ‚‘…–|„“›‰€„qu•}…³€z€‘ š’‹‰‚Ž„„›’v•}†t{o•Іƒƒ‘¢š–†p“~‡ƒƒŽ‡tq‚–n•xn’“•z†s~z‘˜£‘˜†„”}ކx†‡Š‘‹‹Ž‡zŒs}{ll‘‡ˆ}r“sz•‹™v…l•…ŽŠ‡~y†“‰|Š‹~y„~‚“x|‚Z†Žƒƒz‹†‚{•‚„Œ‘†Š‰Œˆ€u ”Œ„…y¢„‹ŒsŒŒz‡‘Š€{¡{y˜††•ˆŒˆƒŽŽƒŒ‰†€|‚…Š{…‚ˆŒ…‹’Љˆ‰…}ƒˆx„‚•”‰‹t’…‰|‹†t‘‹‚|w‹„‰ƒŸŒqv—Љ…†n‹|‰”Ž}ƒ…‡ˆˆ}‚ž…}Œ„…Š€ˆˆ{…q’~‰ƒ•Ÿƒ‰‹’†…†y™‰x–£xwƒ…‹ ~…ƒy‚Œ“j}ŒŠ‹‡‹†Šu‡„•^Ž‚‰™„˜„{†qˆ‡‹™y•wŒŽ“‚‘“z{ŠyŸ”¡€†…ŒŒŒŽ~z‚„g‚‹Œ…”…w•Œ}ˆkІ•‰x|€x„{ŠŸ’|€|‰z„ŒŒ‡‡ƒ‡ŠŒƒ‰‰Ž‹”Œ‹‹„{†|„«‚Š‚’}Žˆ‰Š{Œƒ”Œ•ƒz…ƒŽ‚—~™’ˆ€“Љƒˆ”p˜‹Œ‘‡‚}‡Žˆ—ˆ—…Œˆ…”šx”„ƒ|ƒ€‰‡ŽŽœˆxއ}ˆ•Š|‘ˆ‹Žšƒ†~{‡˜‚‚…€‚”ƒƒ‚€‰wŠ}‚’…ƒŠ–v‹’Œˆx€ƒv€|……Žƒ…†}t‹’“™–•‡”‹†Ž‰•ƒ‰‚‰ŠŽ†z…†„‹ˆˆy‘‹‹‰Ž†‡ˆ”w‡™Ž„‚–’}†€™ƒ–€‰‹ˆˆ†Œ~ƒ‹…u…”˜‰…˜|~‡Š–‰‹xІ…€„~}~‡‡‡Ž„…‡‡‡ˆ…ˆ…|Ž…Œˆt…„†‘‡Š‚Š…†„€Š‡ƒ~ƒ…€{†…‡”ˆˆ‰…Ž‹‰‹Š„‹‹ƒ}†Š†ˆ‚†ƒ€„•ЇŒŒz“‰rƒ„ˆˆz‡„~…‰†‚†Žƒ…ƒ‹‡„‡Šx‚ˆŒ†…„‹‡†‡˜‰‹‹„‹…ˆŠˆ‰ƒ…’Š„ƒ†ƒ†ˆŽ‹Ž‰„Š‚ˆˆ‰Œ†ƒŠŠ~|}Š{‹•}‰†Œ‹‘Š‹}z‹ˆŠ‰ƒ}Šˆ„Œz…Іƒ…’‡…‡„”~†ƒ…‹Œ€†ˆŠ‰}„‹€ŠŽŠ‰€…’Ž~†€‚€Ž‡‚x‚‹Ž†‹‰€”‹ˆtŠŠ†”ƒ~}Œ‹€ƒˆ•…Œ‡’”†Œ…‹ˆŒ|ŒŽŠ††…ƒ}‹Š€Š‡†zˆˆƒŠŠ‘~„‰‘Œx‡}އ„‚‰Ž†„‰…ˆ†…}–ŠŽ€…Š‘„Œ†”Œ’’Ž…‹‹„Œ‡•s‹x‰‡ˆŒŠsy‘…ž‘‡}•‡Œˆ‡‹’ŽŒ‘Šƒ~Ž‚™‰’†Žƒ†‡~‹†q‚†’|’‰‰Œ‡Œ‘„‹”‹€‘Ž„‘’’‰‹Œ‡‡‡†~‚tŒ‹’€„—†Ž–‹ƒ}…‹Š„†Ž”ŠŒ„‘˜‹ŠˆŠ†‹…Ž‹|Œs“”†ˆŠŒ‘…|€|†„ˆ‰‡Œ‹{ŠŽ‡„†„‚ƒ„ŽŠŽŠ‹†““ƒŠ¡‡“…Œ{ŒŒ‰‹‹Šˆy•ŒŠ‚‹w‡Š…”…‰…‰‰ŽŠ|€…“Ž‘†}“”ŠŠŒŒ„…xŽŒ“ƒ’‚І™„”–ŒŒ„‡…‡€ˆ…z‡‹€…ƒ€…€|……x‹ž‹‹t¤‡‰‘‡†˜„”‚†…|‰ ‚†Žƒ…ˆ’ˆƒ•z‹Œ‰‹‰Ž{ˆŽ†‹Œ‘ЇŒŒ’‰}‡ƒŒˆ‰Œ“‘‹„…‡Š‰…’Š}ˆ‹Š‚‚‰‡•’‰‘™‘…~‚‰‡††ˆ…Žw‰€†’„‹“xk…Š‘‡‹{‹‰“™Œ‰–“†‰…{€™Š‹~‹„~ƒŠŠ†Œ‘zŠ‚‘І—„”‚Ž}w‹Š€”Œ‰‡ƒ’†‘}Š‹‚€~‡j‹‡˜„‡w}zx‘ž€{vˆŒ‡’„…z‰†„…‘‘ƒ…‡ˆw„€†…“tw‡€˜“{j‘~Š”†r’}ˆ•…†Š’š|‰„~…Œƒ‘”Š„ƒ‰xˆŠy‚…t™€~™ƒ„Œt…‘|ŠŠ”•{†‡”‘‹‚‡u†}Ž~‡}ˆŠƒu~ŽŠ‚z|{‡vŒ…ƒ~ˆ‡…‡ƒˆ‰|“{•ˆ‚†–‡‡…q‹~‡†‡y‹†‡ˆ…Ž……ˆ„Š‹’‰Œ†‡…‹‰Œ‹…‡†…’~‡ˆŒ…‰“„‹‡†‡ˆ‰‚ŠŠ‹”‚‹Ž|‰†—Љ’}„ˆ‘Š‚w…“‘‘‰ƒ‹†ƒ†ƒŠˆŠ‚…–…zŽƒ†‹ˆŠŽ†‹Œ‹ƒ‡„‡”„ˆˆ‡{ƒ‹‰ˆ€„~†’†–‡‹ˆŒ†‰}Œ•˜„‚Šƒ†Œ|}ˆ„—‡‡‰‰‹‰Š}‹‡|‹Œ„„ˆ„‰‘‹‡Š‰Œ†~„‰‰–†‚‚“‡‹……†~‚ŽŽ…|€zˆ—ƒ‹‡„ˆŒŒ†Œ•……‹‹“pŠˆŠ†Ž€z‰†~€z‰€††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‹‹~Œ‰†}”„†uuwxzztŒu‚‡ŠŽŒ‡„‡ƒ†‡ˆ‹zwwž”|’’y‡„Št‘Ž„v–‡‹¤‘„„‹¼Ž†y|~Ž‚™„ŒŠn‰‘ƒ}‚„‘„y…„¡‹u~‹†}†•ˆzŠ‘œ€tv‚”‰{†ƒ‰wnƒ‹Œ~t‰–|‘ˆ’…’——ŽŠŒzŠ£txfm’—v„‚“…u{yv‹š‘ž˜uz•ˆˆ„y‘y‹†ŠŠ‘‘–……’wŒ‚…Š›xq‚ˆ”v…€„’|ŽŽ}•……v~dŒŠ†‹Ž“†‰ky˜…Ї”nœ‡v«…‡ˆ‹‚ŒŒ…Œ…‚„ƒ‡†Œ€Œ‡„‚‡ŽšŽ‡…ƒŽ…Œ†y†˜ƒŒ€…‡ŠŽ„~š„„Ž„€ƒ€}…†‘„ŒŠ…Œƒƒ†œˆƒ‡‡€~}’‚xŠŠ‚~ƒ‘€ƒ˜‡‚ˆ‘vƒ|†Š{„~€ƒ€Šž…ˆˆ|„†„‰‚‡~}ŠˆŽŠ‚„ˆ…|}”™ŠŠ†ˆˆ}yz„„‘ {‡‘Œv…Ї€|•…|€”‰‰…”z‰‹}‚ŒŒ†ˆ{‰ŠˆŠ‹‰Œ‡“Žˆ†|€€~……ŒˆŠ†}’„‰Š‰†ˆ†~y‘€~†‹Šƒ‰“††y€Žx‡˜…~Œ”~Œ€|€‹}‹}”€ˆw~y•ŠŠh}‹„Šx†{t‡’€{ˆ‡{|ƒŠ†‘…|xn}z—vŠŠz~xl{ƒ„‡…€z‰…”ƒ{Ž…„‰uƒ”oˆ†„ƒxy……œˆzŠzŠ~”|•‚›tƒ€‚|–}‚“€|q€œ‚‹rŽ‘ˆ€w„|u‚”|Ž“}{hˆ“z‡Œ~Œzˆ‰’‘«‡q‡“‰…‹’q…Œ|zux…~’†zˆ„‚…~„“—pv†ˆ…ƒŒz“œ€—ŽŒuŽ˜–’‚{‰€ˆŽ~‡€®~‰Š€ˆŒŽš‚“‚ƒˆ†pˆŠsœŠˆtv†‘w‰‹z‰ƒx‡pˆ”Œ}‡…‡Œ€x~•‚‘‡‚sŒ‰‚Œ†{‹€{|sw€…€||‰ƒ”Ž–‰‰Š ˆŒƒ‘‚‘€Ž{}•‰‰yˆ‰‚‰{~{s~”~p‡q•{ˆ—Žx†ƒx…‰‚zx‰„ˆ{‰…w‹sz––{ƒ€‚nš“¡‘’„‚–•€‡•ˆ‚’Š‹sŒ†Œ|ƒxŒƒ‰€q†˜‚|’~Žp~„—«˜ˆ‰„•”†|ƒŸ‘„}„€•~•xƒs‹‘Ž…w}}yžzp|™†‹•Œ†—‚•~‚ŽmŒ„‚ˆ~{‡{Œvn›k†Šƒ‡€…ˆ‰†‰ƒ†„ˆ†ˆ…††Ž…ƒ…‡…~Œ…‚‡„†……‡…ƒ†ˆ‚„††Š‡‰†‡‹†ƒ…‡………†‰„ˆ‡…|„‚ˆ‚ˆ†Š„ƒ…„‚†„…ˆ‡„†…„އ‡ˆ„‹ŽˆŠŠ††ˆ‡‘†ƒ…‡ˆƒ‡Œ„‡ˆ†ˆ…†„‡ƒ…‚…ˆ‚…„‰ƒ„‡‡ƒƒ†|ˆ†€ˆ…†„…ˆŠ‚ƒˆ‡€‡†ƒŠ‚ƒ‰ˆ„ƒ„ƒˆ‚‚‰‡‡†„†„‚…‰ˆ‡‰Š‡‡‡…‘~†‡†‚ˆŒ„…‰ƒ‰„‰ˆ…†ˆƒ‚‰ƒˆŠ„‰‹‚†…ƒ‚‡„„†‰ƒˆˆˆ‡„ˆ‡ƒˆ„‡………‚ƒˆŒ†…ˆ’y†ˆ‰}†|‡ˆˆ€…†~ƒ‰Œ”~„‰‘†ˆ‹{Œ„‹ƒˆ‹z‚‹Šƒ€‡…‚}~†ˆ’‚ˆ„”w–ˆ†’‚ˆ†z„wŒ’‹x‹‹†…Š…ƒ†Šƒ‚€”v…xz†šƒˆŒ†‹Œy…ƒˆ‹…‰ŠwŽƒ™x†‡o–‘…ŠŠ‚…‰…†œ–Ї‘…“‰’“…rƒ–‰„‡zŠ}‚}‡ˆ‹}„‘Œˆ~xŠ…ŽŽ™ˆ…‰ˆ‰‘‡‚‚ŒƒŠ{ˆ€—z†‚„€ƒ‹Šy{’š|†~ŒŽ”ƒŽƒ‹‹y‡‰‘{†‰yˆ|‚z}zz™u† ™x†£„†…‰u‰†x˜sxt“¨‡u‚|ˆŠŠw‹†{–Šˆ‹~ss‹…‘šy”„ˆ“Š}v–—‡€²ŽzЇ¥zˆ‚t~Ž‚‚ƒŒoŽ‹€†“ˆ„–Ÿ’†oy‘|j„„’†–tˆˆ€‰}˜uƒŸ†“r“Šu‡„ƒ‹…„…ƒƒ~y›}|‡cl—ƒŠ†o‹’ur|–‚–Š“‰u|mšŠˆ’ƒ–ˆo|“Œ•|ˆ…‹y“‰}}™‚wq’‚}¦ˆ‘„~ˆƒ•‚†“‹…ˆ„ƒ„i•Žƒ–…‹Š‹‘xo‡x…‹{}{”‚z“…{މ‡‡†x‰…††„ŒŽ…y‰ˆ”‚ƒ|‡~z‘ƒŒˆ“‘ƒŽr‰†‰ŽyŒŽ}…Ž‹…Ž†Ž“Šƒ‘z”›{˜’~‡‚…ˆi…–…|n‰eŠ‚ž–‡}~†~~ˆ…„v–†‡•ˆ‘™Œ‹¥{Š‘ˆ‹Žƒ…‡†‰y‘w”†‚ƒ‹Œ‡œ‡r‹–”„œ“•‘Œ~’˜†“‘™ˆŠ‡‹Št†x–™s‹„‡Œ…„•“ˆ„˜q•Œ†‰{’…}‹Œw“—„’“w‚މ`|l‹¡–…‘”›—€Œ—y‰iƒ|}‚†‚Š„…ŒŽ–†~t{–r•Ž–€|“Œ…‚…r‡s˜œŠ‰yЇ†|Š…€•‰~ŠŒ‡|‡~†ƒxvЇ‚Š‚k‰†|t}~€w}„uxwŒƒ‚Ž€¥Ž‡’‹”€Š‚Žƒ‡‹w…‹„‡tƒ…}ƒ}˜pŠ˜–oz…x”qŠ|„ƒv‘€˜œ‘„z{…ƒw„€~Ž}|tv‚{Œ‹‚ˆg•‰Š“‰“…ˆ“ƒ~‰’¦š‚zlˆ‹”ux‘{‚ˆn‘}{w‹ƒ€ƒ”¤}~{‚u’nŠr„‰‡ˆ‡ž…z•‹~|‚ˆ’t“y{Ÿ{xˆ‡s‹|†r‡z{j‹ˆy‚ЉƒŠˆ„ˆmŠ“Ž}{~~{‰yn”gŠšœ€’‰§’ˆ‡ˆ_„„†‰}wy𢇅…x—–ƒ›…“’†ƒw~†|x˜‹’”’‡ˆŽˆ‰Œ„€š–‚Ž­…tƒ—Ÿ‹Œ’v|‘ˆ“‹‡s‡‚€Œ“¢šr”u€‡”–z…ƒ™ˆŽŒ‹ƒ†’n‹~ƒŒŠ†‡„‚p…„ˆ‘|•ˆŽ‘„…Œ ‹~n†…ƒz’z{€œvs{ƒ…’މuŸŠ“‹ƒ˜„‰ƒuŠ“–v‹ƒw„ˆ‚}œŽ–ŠtŽŽŒ’„Œ”ƒ‚¡…“x„Ž…Ž}f™‹“~Œ˜‹‹†‰x‚u‰”…Š‚ž‰z¦–†šŠ„ª„‰Ÿm…}x„ƒy‚…Š€Š{}‡„…zˆk‚‡Šˆ‚†lŠˆƒz„‹‰ˆƒˆs’u{r~yyt‘ˆs‹“‰ˆ‹‹‰…kv~Ž~€ŠŠŠsyx…‚‹|„v‡}ˆƒxqx•pŒ…w‹q†‰~|ŽŽ”‡‰‡yt†|}Š‹ˆv|x‡‚¢‹~h{~vz†‚“Œ…€‹|¢„‘‚€‚|‹‘€‚™˜tzq|r”y€†x‚|}qƒwƒ|…~x€‹}……y{{‚…{„r‡…‰…nƒŒ‚wz‰–‚s˜€ƒ†€€{„ˆ‹||Œ‚~‚ƒ‚yi~{p‡’|ƒ‚‘Šƒ”ˆŽˆ‘‰‰‚‚Œ™Ž„†“~‡‡Œ†ŽˆqŽ~šˆ…ˆ‰|ˆ~„—‰Œ€‘‘‹’™kˆŠ‹ˆ„’ŒŒ‘Šv‡‡~z†txˆ•iŒ†‹Œ‰wƒ‰’ˆ„…xŒx‰˜szޑޙЅދ‹‚ˆŸ’ˆ€‘š’Š€’uŒw‡•™}އ€‹qŒz–‘{…†Š€ˆmŒ‚‡“™‰Œ–”Œu…ˆ—‡…™„‹Ž‘‡…‹ˆ–’‹‘„„‡…’š†’Š‹‡˜’’€~€„›xyƒ‘…˜‹ˆŽ–‰‰Œˆˆ‡„ˆ…†sŽŠg}“€~†‘}ŒƒŠ†Žƒ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Š‚mЇ‘†ƒ……ˆ’“ˆ~ƒ„uz…Š‚‰Š‡€‡…“y„…„‡‡ŒŒ…ƒ„y—‘ˆ•Œ†…––“‹“w‡‰‹yƒ…sŒr“†Š‹z‡‰ƒ…œ…’{…‚‚Ž„{yˆ’|•ˆˆƒŽ„ˆ‹{€~~‡‚’pŽzˆ€‰‘ziƒŒ—}†r”€‡‰–„‹Œ‘…ˆ‡„€Žz‰ˆ‡•…€~…†y•r‘yŽŠ‹ˆ‹y…–†‰Œ†™”’‹ˆŒ|‘Š…ˆ~‹€‹ƒˆ‡…‚€€…„„„‹ƒ‹ƒˆ„ƒŠ˜~†ˆ„„Œ‚‹‹Ž…pŠ„xwŽ‚“jr…„}‹r‚~”‹•ˆz…Štˆ€‹……ƒ‰r†Š}‡‹ŠsЉ~‹|‚•„•{Œ|x‰ƒŽ‚ŽŒ„Š””‡ˆŠ‡xˆ‚}„z†sŽŠ}|s‚Š„ˆ˜{„‹z‚‡~~vŽ…„™vŒˆŽ‹’ˆŽ‰|x|„ŠƒŽ‚’lˆ{‚z|u–y’Ž{pt‰‰ˆƒ{†‹–Œ„‹ƒ}y}—ŽsІ‚Œ‡rv~m—o˜‹ƒ~‹ˆ‰Š}†xŠx‚‡€’”ˆ‰‘Œ‡ƒ‹„€‚y‰€Šƒˆ~Š|—š|{ˆ†ˆŒ„~†€yŽ„~‡†Ž†ŠtŒ‹Ž{zsfqwŒ~‡€›xv|€‰ƒ‡‰ˆ‹‡Ž‡…‡‚³}€’‹†‹Š}†tƒ…€ˆ‰’…Œƒ‚~ˆyš’š“‚‹„’{ƒž‰„’–w{ŒŠ—x{¡w‘ƒv|…‰¶y†{„|ƒ‘~†zŒƒŠ€ƒw€†qž{‘Š„ˆ{„r”‚~£{‘‰‡Žƒo„‰†Ž’~s€‘~‡|Œ–‰Œ‡bƒ†Œ…po}‡pHŒjŒ…Žm‹¤‹x›‚Žcˆ™~}Œds’‰h€‰‘‰š{µ–š`…ˆ¢“‚‹‘uœ“wˆˆ……q„™{¢~“™—‹…”=v}”Œy€“xl{‚x•…eŒ‡†{†rl„|…‰ˆ„}…БޑyЇˆ{ŠŒ•‹††€…މ…“€Œ†‹Ž…އ‹‡ˆ…‹†{‘†‹Œ…Œ…}…‚‘‘‡“z…ƒ†z„€””‡ˆƒu‚ˆ„Œ„ˆ‡„–}މ‘€”‡Œ‰Ž‡”‡‡–|„…“y‰—xŠ„…ˆƒƒtŽ~’œ‹|r•„’Ž‚}‘‘•‘“Ž„ƒˆ‰Œ’•„ŠˆŠ„‰…’}“„‹…‰~Œ‚ˆ˜Ž„‡„•‡„…‰‰Š}€†„Œ’ˆ…ƒ‡ˆ„’‡‹‹’Š{†•Œ†ˆƒˆ|ˆ‚…•Œ‚†~‹tŒ…‡Š‹‰‰Š”{ˆ‹‰“Ž~Ž„{𛀅–`›ŒzŸ…‹w“’—ˆx…Ÿv¢ª€v¢•~†‰ƒ‘˜|‰ma”‰m‘nvt‚Š~rœ–{rwln€^‰‰…ˆ†žŠK„wˆ’„„‰˜ƒcƒ‹¢–ƒ’…’Š‹‹†‘‰zœ„‹‘Œ…¨¥xˆ‰ƒ|w~¥ƒ¥–„šz€‰z ƒ‚ž‹„ƒ~Ž|qy’ƒŽ†‹‹‘†‰p‘™Šš›ƒ›šŠœ–ž™—˜y‚wƒ™‹tƒœŠ}®‰o‡ysŸzxwšyŽ—ƒ†•Œ‹´‰‚ƒ•ž£žp‡kqz‡–vj‘}g‰t”Œ‘„”‰ š~„€…ˆ{ƒy|–†‡„‚–€Œ˜–wŠ€ˆžg„‚ƒŒ†‰€†–„x}‰›{„…„l‡ Ÿ‚›œ}~Š€~|•f‰}–ƒŒƒ‡–xŽ|”€‚|—r‚~‹—‹k‘sŒ””ŸŒŒŽŸ“}~Ÿ~Ž~x‹Š”Œ…€…€k‰˜~—™€”t}‹{‰ŠŠ˜zyކsš‰Š”w‰ƒ£‹n‰ˆ‚‡‘–}m‰›ƒ’z”‹”‘v€”•„ƒ€–y‚z—ކœ’•rŠ…ŠŠ†ƒ”ˆ|›|ƒ˜‡}‚Œˆ…‰~˜”ˆŽ Ž‰ŠŠ~zw˜‡™…Ÿ‹Ž“‹ “††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††…††††††††††††††††††††††††††‡†††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††……†††††††††††††††††††…††…†††††††††††††††‡††††††††††††††††††…††‰”~’{—Ї†’€‹€vxv—½Š~…ˆŠ˜‹„‚‘Ž|‰Žw‘z{„•ˆŽ™|Š’‰Š‡w‹‘{•–‚ŽŽ…¢ˆ…Œz‡‚ƒ—€uŒƒx~Ž‹ƒ•«Šu‘r€}’ƒ‡‚‘†˜Šˆš‡Š|”‡ˆ‘˜™“ˆŽ„ˆ{ŒŒ}•…’€…‚u‹¢‚€ˆe‘‚…Š…c‰tˆ—Š˜‘•™u’n‰Š—‡’‘Ž{ŒŒ}‡ }x‚Ž”…Ÿ˜‘q˜Š•†…‘…¢|}‹˜‚‹ˆ}‚‰tš„‘†ŠŒ‡–‰p’„–Š|p“zŸˆŒŠ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…‹Œ‚~ˆ…‰†‚……‰u‚„„„ˆ­‡…‰ˆˆ‹ƒ††‚ƒ‹„ƒ†wމ{……ŒŠˆŒ‹……‰ƒ‰Ž‡…‡–ˆ…‰„ˆ„…ƒ…}‡ˆˆƒˆ„…„‡Š{ˆ…Šˆ‡ƒ†ˆˆ‡†„Œ†‰…ƒ‰‡‹…‰‡…‡}…„‚Š„†”‡„†‰…„†…†††ˆ†„‚ƒ‡Šƒ„ˆŠ‚„y‹…†ˆƒ„††€wˆ„…~„„‚Œ‰‡“„‡‹„Š„ˆ€|†…‚†~„}ŠŒ‡…‰†‚Œ{††Š‡……„€‡—‡…‰…†ƒ…„†„†ˆŒ……r„ƒ‡†„Š‘}„…~ƒˆ„…|„|†ƒ‡‚…‹‚}†~s{Œ†‘‘s}‹‡„Œ‚‰Š~{˜††Œ‡Šy“…‡Š‹ƒ|“x–x‡ˆ‰„’€‰|“ƒ‡‰„ƒ…‡œˆˆŠ„ŒŠˆv‚Š—ˆˆˆz}‡‹†„¥‡Š~Ž|‡—‘}•–•‡‚’‰‰“ˆ†{…ƒ„‚Œ|‡††”†~{‰ƒ‡š‹–”‡‰ƒ{–‘‰…’w„Š„„ƒ–ƒ”ˆŠƒ‘Ž…’–|“Žz†‘Š…—‹y‘‚‘›“‡—†‰‡€ˆŒ†“‡}Žƒ‰‡ˆ‘žƒ…“}‹˜ŽŽŽŒ€~”БГŒ…Œ€“z“Ž€˜”…†’švŒ‘‘„‰€††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‘‹„x€ˆŽŽ„’Œrމ‡{‹’‹‡—‡€‘“Ž}Žˆ”’…‘ŒŒ’‰‚’’…”‰‘ކЋˆy•Œ‘’y‰‡€†Š‰’‘Œ‡…ƒ‰ˆr€™‹“Žu‡ŒŒŠ‰“„…ˆv•Š’~Šƒˆ‹ŽŽˆ…˜ˆ‡ŒŽ~ˆƒ†}І~ދЅzˆƒ…†›ƒ‡€˜–‹ˆƒ|…€‚”Š“ƒŒ…ƒˆ‚Œ”|‡š…‹‡“Šˆv‘‘Ž””‹ƒ‹Š†‚‰‹‹ŠyŽŠ„‰„ŠŽŠŽ…€„‡†~†‘†ˆŠ“–}‚Šˆ“‹ˆ”’~‡ˆ•xŒŒ‚…ƒw”‘hƒ}˜‚”}“€•|‡ƒ—r›w„“˜Šžƒ ““†š}‡v|—|yy¬”›x‰ƒ‘†Œ}x’Œy zn‡€‹­‡ƒgŠ’ŒqŽš|—ˆ‰ŒŽ „Žz†š”‹wz‡‚„’¤…•‰‰ˆ…’jŠ…†˜|‡‡Ÿ—‡oˆ—‰ƒp„ŒŽƒŽŒ•‡‰”—Ÿz€|an¤t¡{•gˆkˆ‡‰Š‘’•yZ©—{£†‹’s–ž‰‚“¢ƒ†“–zˆ‡‡ƒŠou|}rމ…‡Œuœ}ƒ“q~‰Œwx‹“’©ƒœ•Œ–•qˆt€–ˆ•}ˆ£tƒ˜€‡œ|H„{T‹ª–•’h‡wŽ‚¬”h‚}…vª‹’‹xŠŠŒŒ“q‹…€g¡†„‹s‡ƒ•v}‰„ƒu|•€‡1™•œuƒ†§[ Š“€—˜‡ƒŽžs “u}‘{‡£~|¹ ’‘}ƒsy‰‹œ’…‰d‘v¢…‚œ~„oœ‚~‡Œ†‘k…v}Ÿ†‚ˆ†Šƒ~ˆ‘ryƒŠŽ˜r”˜Œ™†“–˜‹–€jyxZއ”xއ˜Š’†zgyˆ‚}‚‰™|w ’~…t‚{{Œ‹™•‹˜~„y—‡€¡|m€•ƒ‚‹”‘˜¦Ž•zx‹q˜}Ÿy†{«Œ‘œŒƒ€{‡ŠŽ|‹ŠŒ‹ŠŒ’ŠŠ€”žŠ„‹‰ŒŽ†Œ‰Šˆ‡’Œ‘ˆ‹“‚šŠ‡†Žƒz„‰Š‹€ˆˆ‡†ˆ†‰‰›™„†ŠƒŠvv}““†…‚ˆ‚‹”„‚€ˆw“Š’ˆ‰ƒ†‘“’Œˆ‡‘{„‰–†Š†–Œ‚„ƒuŠƒœ|“†„z‘•|…‘‹ƒˆ…‰…š‹“Š„†‰ƒ‹–‰ˆ}‰‰Ž„‹“…Œˆ‚‘•’˜†‚ˆ’‰†ˆ‡‚‰…Œ‰…}ˆˆ‡‡‡Œ~ˆˆ†Ž‡‚{Œ„ƒŽ’x†Ž~Œ‡ŒŒŒˆƒŠu‘ƒ†‡„†xšƒ{€…‰ƒŽv”|xƒµ‡…ˆz‘‹…|‰…Šw‡ˆ…†‰“•}~}†‡…~𔆆ˆŠ}y“†{Ї†ˆˆ•ƒ‹„Š~„…ˆ““yŠv‰rŠ~‰Š„†…z}‘~}Œ†Œ•‹Šƒƒ†•…’ƒw‹“ˆˆŒ˜‡zˆ~z™…Œ……ž’‰™……|nˆ˜‡Œjz†ƒƒ{Žj†ˆm”•’›ŒŒ™”‘ŽŠ™‰ˆ€‰‰„…™‹„€‡€‰‚‰‘Œ„‘”š‹ŽŠŒ‡Œ„‹zŒ—šŒƒ‡~ƒ‹x™~‰ƒ€Ž”„‚v††„†›ƒy¡Š†…ƒ‡˜“„’’s†„Šˆ•…•~„–l—„†w‰„ŽŽ–€†œƒ‹„~Š„„‰‰…z•ƒ€›šy€‰lm‚x‹|u„€ŠŽ…’xŽ|Œ‚v‘hˆ‡”~—‹†…‹§•{ƒt‹†€Œ“ˆvz•šwŒ’ƒ‡•ˆ†…‡Š™{ˆ”‰‡˜˜~‡–„–€v{˜Š—”‘z‡’w‘†ƒ‚ž…˜—n€z‚m‘ˆ—~‰›z„nš Ž‹‰}—›‹‘Šˆ“ƒ„‚‹’‚ˆ‘„ŒŒ}{…j“x}ކ‚–š–‘šƒ„£y–}Žp’‡ˆwv‡z…r‘~Ž‚‰ˆx€x‡†…ˆ~„މ€’Œˆƒ‡‡€„ŽŽ|‡‡‹†…‹‘†ƒ¢ˆ“ƒ“…‡ŠŒŠ‹w•ŽŠ‹Ž†‡ˆˆ‹”ˆŽˆ†‹Šw‚‚–ƒƒ‰‰„…‘ˆ‘|ŒŒ’€‹…Ž€›™‘€—Š„‰‹ˆ€xƒ‹}†Ž„ˆ†‡~}‹‹|Ÿ…~u¡{Šƒ€›’‹Š‚Œ†‡ƒ’‹‡‰Š“‰ˆ…‘}Œ†—{ŒŒˆ…„‡‹}Љ‡Œ„ŽŒ€…šˆ{Œƒ‘†‚ŒŒ‘ŠŠ…„‡Ž†…‰‰Š†Š‚™‡ˆ•–Ž€Œ€Š}‰Š‡ŽŒ|ŠŽs‘ЅІ†††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††…‡†…†††††††††††††††††††††††††††††††††††††††††††††††††…†††††††‡‡†††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡‡††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††…ŒŒ†€‰…ˆ…„……‰€‚…………‡™‡…‡‚‡‰„ˆ†„„‡ˆ†ˆ††…†ƒƒ……‰‹…ˆˆˆ‹…††…†‡ˆŒ…ˆ†…„„………‡„ˆˆ„‚„†‡‡‡‚‰……‡‚†……ˆ††ˆ†‚ˆ‡…ˆ…‡†…ˆ…Š…„‡…Š„……‡„‡†‰ˆ……ˆ‰…†„ˆ†††‰ˆ……†‡‰ƒ…Š„‰†‰……†‡†††„†……„‚†„ƒ}……‡ˆ‰†‹ˆˆ€……††ˆ„…††„…‚„„€Š…‡†††„І††‰ˆ…†…ˆ…‰‰…„††‚…ƒ…†‡…„††„„†„…ƒ‡‡†ƒ†‡‰ˆ…………‡‰‡†…ƒ†„ˆ‡Ž…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Šnšy{ˆŽ„‹šuƒ{„“~‚…Žm„yˆ‰u‘Œ~–‹Š’}šz—‡ž¦}„‰‘‚€Ž†–Œ‰‰ˆ•Œnq’ˆ¢rz†˜Š‰ˆ“‘‘‹’€ˆ‹šp~‡†“u…ƒ~€Ž”‘ƒ€…s‡€“™kŒpœ—ƒ„€s˜œ‘„ƒ‰Š‡yƒ…••›o•‚ns‘‹z‘†„„‡Š‘k€„l†„“€‡™wˆƒˆ‚‡‡…Ž„s|”—•†’”yž‹…r‰‡l{Žˆ‚„‰‡rw‡†|}‰„…”~t‰‹ƒ‹’z’Œ‰ƒ„—•€ƒx‘svwŸŒsžy†xЉs•††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††“‡”}•‡•’‰{Œ~ˆˆx™‡”}‹Š†‹‘‘w‚‰›”„‰u†ƒ„Œ‡z˜˜{†—އ‘ˆ”mŽŽ‡}”“Œ“–Ž„Š{{†{zƒ•p–ƒ††ŽŠŠƒ’—’›†tŽ~†{‡•y{’Žˆ‡£…†‰š‡‰|‡—Ž„ˆ‚’~‰r”…z†Œ’‚‰“„~ƒ–t‡‚m~މZ|Œuz¢ƒŒ’—g‰w˜ˆ‚ƒƒ…•€ƒ˜…އ„™“‚‚”‰ƒ¤‰†s—…‰–ˆ•„€„y¤vs}ƒŒ‰—‹’‘y„‘‹ŽŠz™‘šv’lˆœƒp†}‹„Š†Žˆ{}o‘‹Œ†~€†}€‰‘„‰Ž‹ˆ‰ˆƒ|“€ˆ|†Œxw‹†ƒŽ‡u‹‚…|y~”…€‰z{w}’—‰“ˆ†Žˆ–‰ƒ{…‚ƒ|€†‹Š“}‚}š‰”‡˜‚~†Œw‡yކ‡v…š…}„†„|…„}ŠŒŽ„xx‚r}‰žŽ˜“…€ˆ|ˆ…“‰€ƒ‘†—“‹}ˆ‹–†‚†€}‚ƒ•‹‰~‰€€{w‹zŒŠŽ{Œr‰“ƒ‰ƒ‰‚‹‹y‡†‚…}„ˆ‰}}‰‰š†}tŒ…‚Š„”Œ†z…ˆŠ~‰•Št’ˆ†„„q‡€††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡l~”Ž…|€™…„˜|€„ƒzЇsƒ‚|Œ……i‰‹•~Žpx„…„z{z’†€}t‰nrd‰ˆ–„’x…~ip‚†y€€Š”€u…~‡‹tpyŽ‹o„}Šl†tœmŒ|†u‡Š‹xrŽ’p”‰mny‡~yŽ•„“Œl{ˆ’Œ|‹}Žwdzƒy}€}Œ‰“ƒ‹ƒ ˆ„˜i{”|‘˜„…—|€Œkxq}u‘q}‚ƒw‹q”pz|€uƒ€‰™‡”zƒ€pr€qx‹v…‹x‰ŠsƒŽsy|€r‚y€|r‰…‚tn‰y~€Šw~‚…‘‚qŽ„€}vŠˆ‰„‚}…‹}ƒ‰‹|‰‡Œ‚œ†‡„Œ“‚‡‹“‹„„‹‹†–‘‚”†‡Š„„Š…†ƒx˜‰}…ƒ”†tˆ€‘‘…‰—~…ƒ}ƒ~†“Žƒ…ˆrŒ‚‚Œ‚Œ…}Œ‰’|†‚ŽŠ}€ˆ…”‘ˆˆŠ‰}z}ŠŒˆ’u…‰Št”‰o‡Œ{ޛЄtŒ…‘‰~„”Œ•˜ˆŠ“†€€ˆ†“‘†~‹‰‡’Œ‹’‡yŠ“‚Š‹…Ž‚††‹–ˆŠ€ˆ„™~…‰Š˜ˆŠ“……Œ‡Š‰~†ˆƒŒŒ—†ˆ‚‡ŠŠ”Œuˆ’ˆ‚‹–ƒ–Ž…˜ˆ}€‹o…‰‡‚“…}†‹…Š|z†……‚Šˆƒ„™†‡Œ|‚‹‰~€p…‰‚ƒ‚xvv…s|ˆ‡„r‚xtl†„†’…†‰„r‘„…‰}ˆ„|†…~‘qsv‚š‡”r…‡xz‚w–lŒ„ŠnoŽƒ|q‰‹xŽ“yq|Œ„~~”zo€†„wŒ‰x‚†}vzˆ‡}’…{Ž„¬|y†—{€~~““‹ƒ†—‡~|r}w~¦…|‹{Š|n~w}{tƒŒ“’{‰‰}}}yz™}‚‰“ˆˆŽ}~y{z€Š‡Œƒy~‡yŠ{Žvމ|}}ƒ„Šzw…s…xo‹”ˆ‚ˆ•‘Œƒ‰Ž‰~‹Œ‹…ˆ„Žƒ‹‰‘ˆ’ƒ‰•Œ‹Š„Ž‚‰…—‹ˆŠ’€~ŽƒŒŽ‡ŒƒŠ†Š‰Ž•›…‚‹‡Šw~„–…ˆ…|‹‹†‰‹‰˜‚„w…€†††’‚‚{‘„‹€Œ€ƒ‹Šz…’ˆ‚~‡„yˆˆ‰“ˆˆ•€Œ‡‡€ˆ”‘…Š“…ƒ‡†Œ‹Œ~“Š„ƒ†|†ŽŠ…‡{‹‹‰‘…‡•…‰ˆ““………Љ‹ƒ‡…€ˆƒ†“ƒ‹‰†††Ž|~{މ‰†|„Š|Ž’ƒŠ’~ЉЉ‚Œ“x‚ƒ‹‚Œ‡™„Š™—ƒn~Œ‰s¢s€‚s‹nŒzŽu‘‘ƒ™ˆqsƒ‹u‡Œ”„|z›†’}‡„‰Šy‰„…§ž…€¬€€j‹}ž‚‚„Š–‹‚p‚w‡mŒ™swx”~‡Ž›‡ƒˆy„…}€|ty{c”œˆŒˆ‹‚|†~to„–„ˆ{z–~u„—„‡|yš}€€|“Œ­ƒ€v\‡Œ’gˆ|nŽ…™†˜‚†Š~“™…‚{—’‡hƒˆ›”mš~u€vx|q”›sŠˆ‚’~‚ntƒ„bs‰xz”‡ˆƒw‡€…~~q‡~}Š{Œ†›|s™‚…±€††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡x……’Œ…~{}Œ{††ˆ‰†‘†ƒŽˆ‚†Ž}€‡}‚Œyp…ކ…ƒƒuˆŽ…xŠ}…ˆv}xzr‰†ˆ‡‹†„ˆ…ŠŽ„‹ˆ„„‚„€‹‡„“v}…z†‡„x‹’Š‚‡ym‚~…o‰‚ŠŠ‹}’‹|u†™Š†ˆ}™€u}‡€‰„‹}‡‹†{z††Œ€‰…­~”…†‘|xŠŒŠ†Šz†‚€ŒŠ’~…‚†ƒ€„rІ…Žƒ~ŠŠ‹Š“Œ|„ƒ†‚‰‡„ƒ’{„…†…€‚ˆˆ‚€ŽzŒz„…ƒz†‡†„z“|†“ƒ{€Š„y‰†ƒ||ˆn‰v–„€…}‰~‰}”‡‡‘ˆƒ…|‹€Œ€zŒ…}p‹‚~ƒ~k„މzˆ‹Ž|w‡y{l€‰‹‡’“Šˆ‚‘‚Œ{‰~ƒƒ~„†‹qy†{‚Œ‹’xŽ•„€ƒ‘{‡s„p‹Ž‚‹‚€’Žy{‚‚‚‰xŠ|wl}…}}”Žˆ}““€…|“‹“‚€„±~{€’…ŒŒ{—ˆg~‹~€ƒ„{š†’xz€~w{ˆsހІ}Žˆ‰…¡‰…{|}…ƒˆ‡‡……‹‹|ƒŒŒ{} sŠ{~…Žƒ|Š„„€”ƒ}Ž“€~‰‡{€„{|‘z€Œ¤Šˆ™”…s‹qƒ}ŠŠŒuwx•l€zƒ|„ŽŠ„™”›€‰…Žˆ~~“~‰‚ˆˆ™„ƒ™ŠqnŽˆ®zo‰–‘|ŸxšŠ’“†•œ‹r‰s‡“…z††‚†‹}ž’‰h~…{‡š…xކ‚”yŠ}j“…y|}r‚uvœ‰•|œˆw—}~„z„‹‹‹~‘…€˜w‡„cj’‹’Œƒc‡”‚oƒ …–‚‡¤kŠy—ŸŠ„”gŽxŠ™}ˆ|ŠŒnq‹—–ˆ“u‰”{Œzˆ}”}„’Ž…Œ•““’f™’‰‹€–‡’†”v…zv‰‚Žti£}|{–‡…ŸŸ™|ƒzŠˆ­ƒ‘Š}w‹…€‚¡yˆ¬ƒƒ{}|Š‚”…‹…x‡œ’…|q‹Šƒ’‹w{ƒs}£‹ˆz—„§‡Ž𑇓Œuz|†{ƒ—}~ƒ‚¦„˜†|•ˆ‡„ˆ…“ƒ€„u|}‚•…v…‚…t€ƒ†ˆˆ•j}„“ˆ}‘ƒ‚›„……–™~€‰›ƒ€{{~Œ‹|“‘ƒ“vz’x{€„‹ƒ{v€‚Œ††}~y…€yƒz‚€Œ‚„—‚‡ƒw–‡€‹†‡{„z‡y~‡Š„Žˆ€Ÿ{‚ЇŒŠ}„Š‚ˆ††ˆ‡ŒŽ„‡‰Œ‹’ˆˆ…†‹”~ˆ‹†ƒ›…Œ…‡œŽ‹‚}–†‘’}{~”†„ŠŒ†‚}˜‹‰x„††€x…‡–Ž‚{‰ŒˆŽ‰†}z’ƒ‘Ї†˜ƒ€‰—†™„ˆ}|„}Š’lˆ€{ts‚}uŠŒ€›š‰ˆrŠ‚‹‚Ž‹‡†ˆ‚—{ˆ‘œ|…|ƒ|‡…†€‡ˆ€Œ’|‰ˆŒŽ‹„‘x‰•““•€†„‡†‘†–Ž•|‘‚‰€€Š‚„ƒ…ˆˆ}Œ„ˆ‹{Œ’Љ‡“†‚Œzˆz‰€–‡„t‘xz‡ƒ†‡‘‰ssŠ¥’…‡‹qŒ…‚t„ˆƒ”‰Œ{…•ˆ’|Œ‹––Ž“ŽŒh“ŽwŒŒ™‰ŒŽˆŽ€ˆ‡ˆ†‡”’ŽŽŠ˜“Š•tŽƒ‹u¥ŸtŠ€ˆ‘”‰“Œ„ˆ‰z‡™€‚‰‡‡’x‘y{…ˆ‘z†„Š’sƒ†Žˆ~xwŽˆ•…—šv“Š„‰˜„”y”|‰†‰“€Ž}¢’‰“x}ˆ}ˆƒtˆ~Œ•’Œ’–Ž‘Žœ†‰{…Œ–˜“’‹ˆ™}‰n…‡h}‡‚„š€ˆ|Š˜}‚‹‰Šˆ’‡Šˆv‹œ~‡‰š’‚‹“’tœŒˆŒ“‹“ˆ’‹…}ˆ‹}…}{}•™Šˆ‡y‚…ŒŠ‹Œ{¡‚š…‹€„ƒ‡’sŽ’‘€š“ƒŒˆƒr•„ˆ‚…ŠŒ“†ŽŽ…„„z†ŠŽtŒ{‚‘y~‰†Š•“•Œ‘†s‘…†‘‚…y‹’‘yŠƒ•vŒŽ…‡‚Ž…—ˆ„„‡ŽuŒˆ„Š™ˆˆ„ˆƒ‚‡‹x„ƒ~•Ž•n{…ˆn~™‡”€”–|‡†’”ƒ”ˆ‘w“„€ˆ†ˆŒx‚„‹‚|Œš‹ƒ‚w”’“†}†„›wv’“Œ…‡”†’’€¡‹Ž€†{—|‡‰rˆ—z†—†‚w‰|‡€‰{†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††…††††††††††††††††††††††††††††††‡††††††††…††††††††††††††††…†††††††††††††††††††††††††††††††††…†††‡††††‡†††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡‚}‹‹‡†Œ{’‡ƒŽŠŒˆ˜‡„‘‰‚Œ…މˆŠŒ…Š˜Š‡ŽŽ†œŽˆ‚Žƒ{†ˆ‘‹‘o„Œ{}†Š‡›Ž„†‹†puˆ’–ƒƒ‚ˆˆˆ„†…‚•†’‘ˆˆƒ{{‚”Гބ„‹‹€{“Œ|ŽŒ‹‡€’‚…Œƒ‚šŽ{xŽ„„~z‰“ŽŒ‹‡ƒ~x‚‘‡‘“„™ŠŠ„‡‘†‘‚„ŒŽŠ„‡‹‚‡„‹…‘œ~‹’†‚‹ƒ{ŽŠ„Ž‘‘މ‰Œ„……ƒŠ‰ƒ‚qŒ‘„}Ž–Š{‰~…|‹Š‡Ž‘…Œv™ˆ€‰‰|…“†€†‹ƒ‹‰|…ˆ’Œ‡„Ž„Œ‰…’Šƒ…ƒ†Œ’ކ}ŠŒŒ‰‚ˆ’„‹ˆ†‡ƒ‰’Œ‰…Œ‰ƒŠ„‹™ƒ„‡…ˆˆy|‹ŠƒˆŠ‚‹|ˆ†‡‰‰ƒ–Š{†‹†•‹ˆˆŽ‹…ˆ‹ˆ‡}„}€ƒ‚ƒ~Œ‹’…—Žœ¢ˆ“Šƒ‹ˆ„‰‡“ޅކ€‚z•€‡}’z‹—|ŠŽ‚…Љ~‡‰‚‹‡ˆ…†€Š‘”†‰‰Ž‡Žƒƒ„ˆ’ˆš…}ˆ‰Œ|„†ŠŠ‡„ˆˆ…€Œ‚„Œ‡†ˆˆˆ‘‹………ŠŽ‰…ƒŠ‹ƒŠ‡€‚™‚€’Œ˜ˆŒ„‡‡‡€…™ƒ†~‹†š‹“–‡Œˆ€‚…€˜„‚|£Œƒ„‘‘†Š|qˆ†‹ˆ£ˆz„–uŒ‹z†ˆ‚…žtƒ„ƒƒ‹…†Œy…}‡“ƒ…˜Š€œ”Œ|€……v‚Š…ƒ}ˆ’Žœw‚‹wu††…Љ–†™”Š‹{•wxƒm€‘ˆ“‘}’…€rt‹“„—“Šu¡†ŽŽ–‹—~„š}ކ£‹•€Šw‚†‹Œˆ‹|€“™Š‹ŽŠ|‰v’ƒžxŒ™‡|Š|Œ”¥‘‰˜ŒŽ…‚‡‰€|y‡¡z‚—‹Š…‹‰}ˆŒ~Šƒ‹‰ƒ–}†™Œ’†ˆˆ„‚€~ŽŠ}‡Š†•…–„Ї„x„Œ‡„…yƒ†ˆ†x“”ŽˆŠ‘…z‡Œ•‹Š‘ˆ…†…‡ŠyŠ“‡‹‚–ˆ‚~…•‡vŒ†Ž‡“…Œ™ˆu‘”ˆŠŒ‚r†{{†…ˆ‹ƒ‚”x‡ŒŠ›~Š„–Š…’•Œ‡„…‹{Š„‰†“„ˆ“‰|Žƒ…•€‰{Œ‘|Їƒ‘ƒˆƒ•Ž…„‡‰—‡†…œ‰Š‹‘……~Ž‹†‚‹‰‡‹†‡ƒ‰Ž“‡Œ‰‹Œ~‘‹—ƒ†ˆu„Œƒ…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‚y‹€‘~’{‚x~‚‚‚‹Žƒ†„€†‰Šw‚€…ƒŒusš‚ƒ‡€‰Ž‰‡„Š}‘˜‡†w‚wyv†ˆ…—‘„Œz‰“‡‰‡š†xyz„…‡Šz€{w–„’y€„‰€wqƒ‚£r‚†‘’€”‹w†ŽŒ‹†{…„‚w˜~ˆ‘‰zwŒ…m™y—‹~Š|†…„¢ƒ‚‘š}ƒ‡„‹Š|˜’z†{~žŸ~‡‹‰™ƒv‡…€‡†‰zˆƒŽ‹„„‚~„ƒyšxŠ{†’ƒ~|„‹„„€„Žx†Šq~‹ˆ‰‰‚‚‚|€„v„‚ƒw…‹’…~x‰‡~‘|{|u…ƒxyƒ†‡‡„‹€‡Œ|‹†‚Œ€‡r‡…’€€’‰‰†‚†|”„‹Šw‚†Š”Œ‚†{|ˆŠ‚ޓЉ‚•‹Š|~s†‚†{„’…‹w|‡Œ€ˆ{y‹„~Ž‚ƒ“€—’ˆƒŠrŽˆ‡„x€‹Žt”qŽyŽ{ƒ€Žk“’“•ƒ||Œ…š‰z’–r‰ŽŸ‹‚†‚‚‡z‘™ƒŒ†ƒ}‚‡t„‹’t‹‡v‹†‡“r’’Ž‚y˜‹…„ІŒ‰Œ|v€‡ˆ•”Š…€’v‹…{ЉŠx‚Œ†‡v†‰–‡’†ˆx“’•Œx†‰…‚‹~‡—s’€‰’ŒtŒ|‰~š{”~‚…—i‘}‹‚‡‡Œ‡ŽˆšŽz…”–|¢}•‚…Œš™’ƒy˜‰‰„fqŽuƒox|y–›Ž“zˆ’•c˜…ˆ†ƒ—ŠŠ€~Œ˜–ƒˆs…r†ƒ†”y~‰““xŠ}‰”–‡‘y–~‰™›‹€†—€|…‡Š‡‡ƒ‰žq‰ƒqc˜‚“~yx•toy”ˆŽŒšˆ}kŸ™Š‡‡„–t• ŠwІ‡€‰‰Œ‚}ˆ’Š„l‹‘’‹{|„……r‘y†ŽŠ…ކ‹Œ{™™šŒšƒ„’yœ‹uƒ‘—‡z£|yˆ“Ž›Œ…x|™¡„wƒ‹†Œ‹•‡ˆŽ‚††–l’~’ƒ–|zމނˆ‡€Ž€vxu{ƒ€|}|~|mŸ‡Š†€{€€~Œ„‡}Šxx|Šq„‹€†Š{}Š™Œ|y‰~‘sƒv’o‰s„š‰…‡t†‡v{‡‚™…Žˆ£{v—ŒoŒŠ…‚j‚‘}—{{…‡‹Œƒ„ˆ“ŸŽ†ƒƒ‚„Œz‰‘†Š‹w}‚ˆ‰‹}’‰Š…‚|•o~u~ˆƒ€ƒ‘ˆ‡|wƒ…{‰‹…”‰zˆ{‚Š„vv{|”‘}~q„„uˆ‰˜‡†~y„nŽ}‰†uzz}yo}uy›‚‰‰““|Š‚Œ†„…‹•}ƒ„‰z’‡‡Œƒ’–ˆ‹ƒƒŒ‹ˆ~Ÿ†yŒ‹ŠƒŒ˜˜xz‰io‰t‹‹œ~|€ƒƒˆŽ”z‹‡…ƒ‰sˆ‡Šzƒ—‰‹“‘“€‡sˆ‚Œ~“‹‰ˆœ”x‹‚w~„‰‚{‚‘ƒŒ||~~Œ~‡•Ž—‰•—ˆ€’…rz„‹’‰š ‰‹Œ‚sm‹™sŽ’‘…x˜ˆ‘”•Š™‡„–†‚š”–‚‡…‚……ˆ˜œ„ˆ‘ŠŠ}v}›‹r‹˜„ˆŽ•˜–šˆŒ}¡ƒ“†‹„‡u„‘yz˜v}i’™€‹‘}v‹}Ї˜Œˆ’“~“‡Œˆz‡ˆ~€‘‰†|ˆˆ‡†Š‹‚“„‡‰x†‰‰ƒ‰‰ˆˆ…|††~}ˆ‡‘ˆ‰‹zˆŒ†}‰’”‚†ƒ‹Š‘ˆ‹ˆ”‰–‡””ƒŠ‰•ˆ~ˆ‹†‹’’…Œˆ‹ƒ}“u|€†„zŒ†tz’”€‹›€”ŽŽ’‚ƒ–ŽŽž…Œ„ŒŒ|‹Ž“~Š‹}‡Ž‹—ƒŽ{‰‡ˆŽ‡˜„}…”‰“Š‘…„|‡‹š‡Œ‘Ž}‚Œƒ€Š€‡‡Œ‡Ž’ˆƒ–ŒŽ|‹—‘’–‰‚Ž‚„ƒ‰Œ}~‹‡s•}ƒ†”ƒ†‡‡‡†‡††††‡†††††‡††††Š†††‡‡†††††††…‡…‡††††‡†††‰‡††††††‡†††‡ˆ†‡††††‡†‡††…†…‡†††…†‡†‡„†‡……††…‡††††‡‡††‡†‡††††‡‡‡…††‡††††††‡††…‡‡†††††††††††ˆ‡††††‡‡†††……††††…†…†……ˆ…‡††††‡††‡††…††‡…†‡†††††…††††††‡††…†…††‡†…††‡†‡…††‡†††††††††‡††††‡…†…‡‡††††…‡†††…†††…†††††…†…††~~xЉ–xš†‚Œ—”Žoƒ†‡‚xŒ‚ŽxŒ‹n’ƒ„‰Œ‘‡‹ˆƒx‚Šˆ†‡‰Ž€jm‚ŒŽ†‘‰ˆ†‚†‹ˆ‹’ l‰†‰”~ˆ~ƒŽŽ•~„…uŠvŒ€•—~‡‹•‚‘u€‹‘•qŠƒ’†r‹}’¦‰vŠ¡‚xƒ„šŠŽŽ„Š’y˜|”txu†’ŠY–”w‰‹š‡‹™‚š•’‹¢w™Ž”ŒˆŒ€…‹¢†pŒƒ‰Ž…¡†„”˜|…„……—y‡|–‹†˜}ˆŸˆ–ƒ„€‹‰‰¢s‘~n…†t~™|{Ž’†ƒw…‚‹~‡ˆ‚…ƒ‰‡‡Ž’‡ˆ”ŽˆŠ…Šƒ~ŠŒrЉ†‡‰}‹‡Œ“ƒz‚|vŽ‚‡ŠŽ—}ŠŒ„…Œ‰Š„ƒŠ‰ƒ‡xŒ‹~~……–Ž„|‡„ˆxxž~Žr…ŠŒˆ‚Œ|”‡ˆ‚€’ƒy€Œ…ƒ‚†Ž‹y„„z…€zƒ‰š—†‡††„”w‡yž€€€¢‰|ˆ”‰ƒŠ‚Œ‘ˆƒ{Ї„€ˆ†‚ŽxˆvŠŒŽŽ‡‹„Š‹‹†~‰…†‘{Œ„‘Œ‚ˆ–‹…„”„ƒŒ‹…ކv‹†‚‹Š‚Œˆ”†‚ˆŽ‹ƒ”}މ…†ˆ€ˆ„~‰Œ‹ˆ‘~Œ‰}–ŒŠ†Š‰ƒƒ‡Œ|‹“’—‰‹ƒŠ—‹’‡€‹Œ‰ˆ„z–‹ŠˆŽ”€‡{‚‡Œ†“Žˆ€ŠŠ‰w‡‡”Œ‘…~~Žˆ‡ˆ†“‡„„u–ˆ‚ˆŒ“‚…’ƒ‹“‡|‰~…†zŽ{ˆ‡ƒ“€{…†|ˆœ‘|›‡Œ‹‹~Ž–Œ•މ„‡‡ƒ”‰Ž‰‰†Š…ƒ“……“€‰‘”‘Š{ŽŽŠ‘Ž•‘ŠˆŠ‰“‹€‹}‰Œ…Œ‡ŽŒ……€Ž‚Š‹ˆŠ†ƒ„†Œ”Œ„ƒ‘ˆ|Š}“‡•‡ˆ‰™uŽŽƒ‹Ž„ˆ’s†~„Œ‡†‡|~‡‹”……‰†‚„„‰x†~“††ŽŒ‰‹—ƒ˜œ€‘…Žƒ‰’Š„x”{u‚Š‹††Š‰~ŒŠŠŠ†ˆ{y€sЉ|ˆyŠ„‘‚ƒv{…†€‘~‡ƒ†¤„x›‚‡}‰Œ†‚y€ŽŒ‡‘y~Š„xމjŒŽ…{›…}wˆƒ‡„‹‚‰ŽŒ—p‡¦€|‰…‘‡™Ž‹}{ƒ†€‰“}Œ‡Šˆˆƒ’‚ˆŠƒ‘‡‰‚Œ‰z–…‡‰†‹…ƒˆz~…Ž{‹Žx‡‘z‡ƒƒˆ—xt‰†…~Œ…xqƒˆy~Š“‚{€„ˆ‡‡Œˆ…‰ŽŒzŽ‹‹‰„†…€…Š€…Œ‰‹”‚ƒ¡‡‘„Ž€Œ…‹‹ˆ‰”‡y’‡ŠŽŠ‹{ƒ†ˆ‰…†‹ƒŒ‘‰v€„•‘‹ƒ€Ž‹‘‡ˆ‘ƒ‰w‘‹’’ˆŽ‚˜—†Š”ƒ‡€†…‚„‡zˆ…‹‹‡‰ƒ€}‹Š„ŒŸˆ…z¡€ŠŒ‚„‹–‘„Žˆ…‚„‘•…ƒ‡Š‡’…‚ˆŽ‡ˆ–w‹‡ˆ…‚ˆ‘†‹Š„Œ‰…ŽŽ‰{Š‚…І‡†ŒŽ‘Œ€‡‚††„ˆŒŽˆ„„’‰’™–‡Ž€ƒŠ}ˆˆ‰„•‹u’‚‡†}‹‹ˆ~||šŒ‰ƒy†Š‚‰‰Žƒ‰ˆ~‰”‘}Š“ŠƒŒ”‰•‹‘†”‚“Œ“ˆ’’„y’‘’—’‹‹‰‹ŠˆŒ–ŽŽ„‰Št†…‘‰“Š‚y†ƒ‚Š„ŠŒ„ƒy‹‡Ž‰†ˆŽ„‹ˆ‘‰…‘‚‰„‹‹‚‹†ˆ‹ŽyŒ€’‰Š‡†x‚‡‡ŠŸz„˜xŠˆ‚‡˜‘”‚‰„ˆ‰ˆŠ‰…˜“‚‡Š‡}†‹z‚†•|ЇŒŒ’vŽ‘ŒˆŽŽ“z†„–’Љ“‘‚z‡z„„‰Œ‰ƒ†‘ˆ‰xˆ‰ŠŠƒ{†ŒxŽ“Œ‚‰‘€‘ˆ‡’Ž‘wŒ‘ŒŒˆ‰oˆ†—Ž…‰–xŒ„|‡‹“ˆ‡†~™‡‹€”Œ‘ƒŽŒ’‚f‚˜~‡ƒŒŒŒ…|…›Œ™ˆ‹ˆ‘ ‹—Ÿ|ˆŠ…sƒŽ“œ‘‚|…†ƒ˜‡ˆ˜ƒ‰‡„‘~‡‚”y‰‡‘˜ˆ–‡€‰Š‚~—„€}‹Ž€w{—‰†ˆœ‹uŠ”y’}ƒ€–›Ž¢‰v†ˆƒˆŒ•’˜“Œz‡‘ƒ‚‘Œˆ˜|‡”‡„‚ŽŒŒ‰Œ‚‘‚‹Ž’—‡ˆ†}ˆŠ{‚Š‘~‡…ƒ}ˆ†„ƒŠ‚|”‰w„އƒˆ~’u‹˜ˆ“{„Œ‹s’ƒ‡|ƒ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Œ~“u€’ˆ„–~‡z£’~}ƒ•_}„‡Š‡™†’‰‡ŠŽzš€‹“zv‡{ˆ“’Š–”‡‡“wr’ix—‡‚‡Ž‡£‹ƒŽ†ˆ‰†… {—}Š~…‡…†~ŠŠ–ˆx„z„Š™‚ˆˆš€•”ˆˆ–|„–€…‚ƒ…‹‹‹}‚ˆ{І‚‚Š‹‡…Œˆ~ˆ•z~‰rtŠŠ†w‹¦ssnŒˆ€Œ–†‡nœ‡–“€–‚’~„™…‰€’~‡—‚y„‘„€‘Œ“‡x„ƒz‚‹—}zˆ–ˆƒŠŠ‰‰k ‰†}‘‘Š…~€”w‚ˆ‹“Š¡€v–”‚‰†Ž‰†Šƒ…‚€}…‰}‹‡…ˆŠ’—†‰‡‹†‡ƒvГЄ‰Œ„|€€Ž‚€{€„}y†ˆŒ„ˆ€{|Ž€™}†‰€}{†’ƒxŠ‚|†Ž~Œ‹~…†tˆ…‹„yˆˆuˆ€‡“”ƒ{€‡ŽŒŽ‡‰ƒ{‰‡ˆ€…Œˆz‹•”’|‡‰u€{…ˆ¤|~…v€Ÿr†”ˆ‡Š}ƒ‹ˆƒˆ€Œ}…Œƒu€‡†…•……Š‚“‘‰||x‰ƒ„‰‡ƒŒŒƒ‰‰’|†‚ˆ‰„€‚y‘Œ‡ˆ„ƒƒ~}Œ~—v‚‹ƒŒ}…Š•|Ž||‚…}…”’}•Ž‹ŒŒƒ•‹•„‚’‡Š•ŽyЋޑ†‹‰zš‰††‘Œ˜—„‚yp}†‰„~„ˆˆ…‚…Ž‹ˆ‹€~ƒ”g‹ˆ‡}|‹Œ†‡Ž ‹w‰xЉЀ†”}z~“•—…‚‚ˆ‰…‡‡ƒ˜Š”¢‘~„”€‡~|‚•ˆ™˜ˆŠwˆ’t|†„““}‹‡}y…|Œ‘•›ƒŒt›˜‰™ƒ†•yŠ“‹‚˜–ŠŒ~€††ˆƒ‡‰‘‘–}†€‡}j’u|‡”ƒˆˆ•Œ‡…•Œš’‚ˆ›ˆ”vŠ‘ŠqŒ‰ˆwv’y†vŽŠˆ‡‡x‹‚ŽŠŠy‰“‘rˆƒ~€™˜…€Ž}“ˆ–ŠŠ“’}„‡–†”€€‚}’”ˆ••‚‡„“ƒ€n ˆ†|މ€„Œ¬„–†o|‡Œ}¡s–…‰ˆœ††‰„{”ŒžŒv†t~‚•~†Žƒ|”–„w„”Ї†Š…‰—†Š†|ˆ{Љ‚Œ‹šŒ‚Š’|ŠˆŒ t€Œex…Œ‚„‘ƒhx”‹Œ“ž„Œ‰‘™™€|”‡~‡‰˜€„„†–‡|‚—x—›„–‰‡ˆ†wŠšˆ‚ƒ•„Œ”›Œ”ŒŽ‚‹”u~•ˆwƒ–Œ†’ym“Š‹‰‘‰Ž‰Šƒˆ‰ŒŠ‡Š‡†‰‡†‘†Š‰ƒ…‚“ƒ‡‰…Š’…‡‹‰‡…’Œ‰…Šˆ‡ˆ…Œ€Œ‡Š‹ˆŒ†x”„‡Š‡’‰Š‡‰†z‡€ˆŽ‚Іƒˆ€ˆŒƒxŠ‚‹„€‡†‰x„‘’‹ŠŠ|ŠŠ‚Ž}ŒxŒ†“†|ƒŒŠ‚”‡Ž‡‹†~Œ}•ˆ•ˆŠ‰ƒƒŠ‚ˆ“ˆ‡‰•†‘‹ˆ‡„ˆ‘ˆ“‘‚‘ƒŒ—”ŠŒ’€†ˆŠˆŽŠŠ’…{…ƒ‹€‚ˆ~”‰‹‡†}‰‹‹€€ƒŽ‚‚Š‹ŠŠ‰“’€Ž‡‚ˆ}}ˆ‘x•€Œ†…Œ™ƒy‰”†‰ŠŽ‘†‰“”z•ŒŒ‡ˆy‰ˆ‚‰Š“‹ˆ‡ ‹Œˆ‰š‚•…‰‚†‚ˆˆ†‘Š{•ƒ‰‰„|‚{‡ƒ–‡‹†–‡‡ˆ‡Švˆ‚˜˜‹~ˆ‹„‘„Œ”‚v”Š•…Ž€Œ“Љ—~—ŒŠ|†‰‚‚†{z…‚…ŠŽƒ—|‡†zˆž‹w¦ˆŒ‘„ƒ—†“‹Š‹„‹}ˆ™Š‘ƒzŒ‡„‰–„…—w•†’‰„ŠŽ‰’•—Œ‹‚‘Œ‘‹€~‰’„‚Š““ƒŠyŒ’„…ƒt‹Œ€}“Ž–‡‘ˆ”˜˜†|‚€‹…„ˆŠŽ—r’~ˆ“_zŒmšžŠu€‚yŸw˜„‰u‚yyd‹{Ž„y†‰šŒ„€€itv…lp‰„‡ˆoŽzvbŠ{“r’^‰¥y~„†‚˜•ˆ‰£„Š…ƒ„Šq|‰‘„†–}†” ‰“w}y{~—ƒˆ’‹ys•…Ž„ƒ’t{y‘{…‘Œ}z’‚}‚{Š—…ƒz…‹‹•’‰n‘vy‡~œ‹œ‰ˆz€Œ”~‹ˆs”yŠ†ŠŒ€vyŽ~‡€{€‚“{‘ƒ‚n“ˆ}ln“…•…€„Œ„‡’p’ˆ„~†ŒƒxŠ~„t‘~ˆ‰eƒ•‘mމrŠ}x“™o„…‡…“v…p„rri€”‘Šdˆ‡˜™‹“ˆ“‹§Š|j„Žsqˆ~“˜ƒ|‚‹„‰sŠ‹‹‘ŠŽŒŒxˆzŠ—Ž“›‡‹|‰m‡€‹”w{}˜|‘{‹wv†Žˆ‡—’‰†™…ˆ†›†œŒ‹‘|‘z™Ÿ€‰‰ŒoŠˆ‹~ˆn”~˜Ž‹~~›Ž~›‘s’†|”ˆ‰u†‡“Šœ‚„‡‰‘‡w™Š›—–Œ‰Œ€‘ƒ”‹Žˆ‡~‘ˆ“„…“—x„†}u“‡–‘ž—”ˆ‹’‡‡‚‚v™œš‚‡”…•“‰€||‚|z‚‰ƒ…’‹}|•~‹{•„–ŽŠw}Šyˆ…}}‰„k‡ŽŽƒ„‰††}u{‘ŽŠ‘Š‹€›…‘‚Š›ƒ’‡”y~ŠŒ‹‚Š„|‘†ˆ{Ž–xˆ…ˆ€‹‹‰}{ˆxŒ{‹‰”‡Š†~Œ—ƒˆ†•„Šˆ”Š} ‚ދޖ„”Œ†|Ž…„{Ž‹s‡‚‰‰u}„r‚‚v‚˜†zŽ„”‰Š„ƒ“~‹‡•†z†~€œzŽŒƒ†Šˆ„‡‡ˆ…“zŒ”‰•ˆ‹w•†‰‘{‡‡’ŽŠŒ‚ƒ›Š~ЂЅ„‘ˆˆŠ‡„Š~’“†‡|Œ‡…™†~~ƒ“ˆ‹xЀЖ‡~‰‡‰z€~‚€…‡”ˆy††‹–y‡‹zŽ‡ŠŠ…„ˆŒ”|‰ŽŠŠˆ†Ž›‹ƒŽ€‹Ž‡”†|—„‰ˆ…†Šƒ†‘Ž‹‰…†‡t…™–‹ƒw…ˆˆˆˆ“Žƒy‰’†‰…Š‘}Ž„—†‰‰Š‚‚{‹{Ššs‹„‹‰ˆ€y’‹ƒ‘Š|{™|€†‡–˜‘’“‘‡…‡‡‡‹‘„€‰„ˆŒ{Šˆ›zŽ‘Žˆ‰Ž“‹‹”†Š‚Š‘•‹ŠŠˆ†‰~…ˆ€Œƒ‘Š…†~yމ‡}…‰’Œ†„‘–•€ƒƒ†€Šˆ„ŒŽ{†Ž‘t“‡‡Œ„СހŒ˜™‚x†‹……{Œ„‚Œu~¥“vz„~‹ƒ‚’}m}…‚‡…wœxƒrtš~‰„}~ƒ~w|˜Ž’Œ—¡ƒœ~‹{Ššt€ˆˆ†}xyŒps~‰uvs„yuz‚”Š}„ƒ‰‚xy|‰ƒ‚Œ Šzˆz}‡|‹–{‚–}~ˆŠŒ–†’q‚~‚~‡{’­||‚‰tw‚§zƒ…x…’~…~‰}ƒ‰u…††€nwˆp~v~’‚…x|Š™ŒlŽ„wx’…wˆˆ‚z•‚Žu…€šˆy‚ycˆ{‹w|z}Љ|x}††Š‚‚qoˆu‘zvwƒx}©{††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††“ŽŒ‘•‹Š…|‡…ˆ„„„††‹„„‹ƒ‰~‡‡—‹„ƒ†‰‚’~”Ÿˆ~‡‰r‹Š…–‡…Ž…{‰Š†Œ‰ˆˆˆ’‰ˆ}Š~ˆ‰w‹‹ƒ{…|ƒˆ†Š‹†q‰~‹‡…ƒ‹€††–”v‰‡Œyƒ„š‘ƒ‰‰„Ž”~Š‚ƒ‡€ˆ‹Š‡‰‡ˆ~„ˆz†œŒ’•„†…‹‡†{ˆ€‰‹‡‡•‰‚ŽŠˆ‹Š˜’{Œ‰…ŒŠ…Œ‹~Ž‚ˆ™ŽŒ}‹„ˆ|}˜o‰…ˆˆ‡zŽŠŒ’“\…z—‹†{‹x‰ˆxy’Ž|~€Œš†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Œˆw…š˜†‹•”І}Œ’Ž…™‡‰}‡Œ|އ™—†”‘‹ŠŒs‡‡‘…‡‘˜’„‰Š†}‰ŒŒ•…‹Œ‰‡‹”ˆ‡€‘‡rŒ’ކ…ˆ‚…€…}’†“‚‡z‡•z‰Š„‹‰ŒŽ|“Šy‰‰‡z–‘‡‹zy†…yœ…Š˜„”ˆ‹†‘“•‚Š“„„‡ƒ†‹Œ•Ž“‰~†Œ‘”†‡’ƒ—Ž‹†‰}ˆ’‚“„‘†•…”Š„‘}‚ˆƒƒ„Œ‡‚‰ˆ’‚…~}ŽŒ‚€Œ–|…†‰Ž“{…„”‹ŒŠ„‹u’…Š€u„”xŽ~‚yŠƒ z‰~€“z“…t‰Ž“†ˆ†Œ†…š„‹‰‡z†€Š‡~Žˆˆ„Ž—‰}„‡axŽ}ŠŒŽq†‹…‚}ˆˆŒ‘‰‹‚›qŽ}„”}…”‹‡‡ŽšŽ„‹rŒ‡…}„ŒˆŒŒ’‘•|Žy‹„…‚Œx‡‡“”Ž€ˆ‡‡v}‰ƒ‰‘€Ž‰Š|ŠŽŽ|w€|x”‚™‰†ƒ‰†w{—‹ˆ€”œ”ršŸ‘Œ’ƒ‡{‘”€x€‘‡Œ~ŽŠ„…ˆƒŒ…‡Š—‹„…†€‡{„v‹‰Œ}Œ’€“Œv“’ˆ†Ž†•}yƒŒš|‡x‘r…‹ŠˆŒ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††lqŒ€•¢Œz‚k…~£s„ƒ’Y„ƒsx~¤Ž—‚’‚‘¨‘z…v]‚y~|‹|‹w‰u{W•wŠt‘f‹ˆ¥€z’‹~’‡ƒŒ‘v‹„‰†x€”‰‹u‹x‘ˆ‰™v‡r€r{–‹‹‰y{‰‡†€ˆ|‚‡ŽdƒŠu‘…|–‘j„ƒŠ„€uŠˆv‚ŠrŽ‘¯…‡}…Ž‚ˆƒ¡…˜Š}|vœ‰qv}„mƒx‡’†‡„ƒ“v”…Œ‰‡š„‚‹ƒ{€‚‡ywrw’€„„wy…‚Šq€‡„s‡Œ…Ž‚Œ†Œy†{pˆ‘‰l‡y‘‰‰ˆ„ˆl”‡ˆ„‹ƒŽ”‰w‰‚†ˆ}ŒŒ†y‘ˆ‰†„І}€ŒŽŒ|ŽŒŽ‹Œ†‰”Œ”ƒˆ†ŽŽ‹…”ˆy•ˆŽ‘‹…„‡‡‡š‹“’ƒ…Š‹Œuˆ†“‘ŽŒƒˆ‰ŽŠŠ‹…Œ}ˆ”‚†ˆ‹ˆ’ˆ•…~‡‰„vˆ‘~‰}ˆ†‡ƒ{}Љžˆ~Ÿ’ƒƒ›‘‘ŠŽ„Œ†ŽŽŠŒˆ‚Œ†€†‘ƒ†…˜z‰Œˆ‡ƒŠŒ„†‘„„…‘”‰‚‹{ˆŠƒ|†…†‹ƒŠ‰„‹…‹‡ƒ…„ƒŠ“‹ˆ‚“–’†Œƒ‰„ˆ…‡Œ‹zŠ“Žu‡†„‚†Ž€‹˜£’‰Š†Œ†ŽŒ—ˆŠˆ‰Œ‚£’£’‡šy‹wwr¢y††€‹Ÿ‹Šš›ˆ‡\zŒ’Œ…“›|†™›§~Žg~˜ƒƒe—b€†ƒ}„lv“ƒŠ“‰jŽm‰x…x›Ÿ‚Œž‘¨šŽ†ˆƒ…€‹’™x¡‚z„€‰ŽŠ“‹„k˜…”|”‘‘€{€™–z{}‰ª‰•†Œxz’š™}£y’’™…ƒˆžyWŒ”ˆˆ‘˜‘„x‹˜„Š‘}Ž‘„}Š‚†Ž…ƒžyš—„„Š—ˆ€u‘•nx’s‹xt‘tz€¢‘}Ÿ‹Œ˜vŽ‰ŠƒzŒŒ|}Ž…u€}‚„‡”’~‘‡”~€Œƒz™…†‘ˆ„‰Œ†‹ƒl›‚‹€§‹€ŒŠŽ¦zŒ…eƒŠ‚‰¡u”„Šˆ•‰€ƒ†ŠŠ‰‘‡sŠu‰—‚ƒ„ƒ””Š|„‚˜‹yƒ“†ƒw„’•Œ x€Š|‰Ž{ˆˆ‘Ž…‹‰„šx{“e|€Œ‚vŽuuŠ‚’Šƒ—Š›}¢—…{“|šƒŽ†”†ˆ†ˆ‘x‚Š‘ŠˆŒ‹Œ£vƒ˜‚„†–~{‚’™ƒŠ•„…ˆ•x„w}‰š€ˆœ}‚–„‹†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††’„sƒ{”„‡˜’lƒŽŸ•‚’ˆ‚ˆŠŽ’Œ†††“Œ‹‰ˆqŽš„‡Œ‹ŒŒ™”Ž‚–{}—…’s‡‹‚ŽŒŒŽ™yzŠp‹•‹†}|†Œy„Œ‹Œ‚‚‘„Ž{‡…†…—–{™”•‹~‚Žx„‰‚‹o„Œ€Š€z…Š’”x€„‘“{‚Ž‚’Œ‚—t€Œ‘‚”…•†ˆƒ„‡{|€ƒˆr‡~Œ‹‡ˆ~…‹{‘Š’œ~|„‘zŠ}“Ž|Žu‘‰Œ‰Šr|ˆ…w€~†‰…~Ž„w…yz’‘˜ƒ”‡‰‰‡†’„†w„Šˆ†‰†„‹z{ƒ‰Ž„†Š€‹…‹ˆ‚Œ‡’Œ€†„yˆ‡Ž†€‡ˆ‰†ƒ‘€ƒˆ„‚Œ‚‹’І„–}x‡‹‰ƒŒ”ˆ€Š{ˆ”‰‡‚‚€‰‡…„oŒ“‘~„z‡Œ†Ž€…‹~{†„”}‚ŠŒ~…Š”…€Ž‡Œ‚…{{{ˆ„‡~“Œxzˆu‚„l‰’•‰twˆ†ŒŒ{‹šs†Š}„ˆ‚ЀЅ}‹~‚„€†…‰v‡‰{†ˆ„yŒ…ˆ’„‹Ž…ˆ…„‡„ƒ}‰…ˆ’ކzŒ‚‰ˆ‘‚|ŠŠ”~…‹Šƒw†ŒŒ†“x–„†€‰”…€Ž‰‰uŠ…‚‡ƒ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Š…‡}Œ…€ƒzŠ{‡ŽŒ‹’„•‹‚‚‹t‹†~‡„‹}y‰‡‡Šˆz‡ŠŠ‚…ˆ‚…‹‰x†{v‹‚‹|‡Œ„‚‰‹†„‰Šz~ƒ‡‡’z€„……ЉŒ|ƒ‚ƒy{ŽzŒqŠ€ƒ–y‡ƒ{‹‘ŽŒˆ~u‚‚–‰ƒ†‡ˆw€€…Š}}’“}…’€†~ƒ’†‚{˜‡z¤ˆ{‡Ÿ„|~ˆ–‰‚„…—{€}‚{•‚‡Žƒ‰qtŠ}ˆ†‘…€Š~v‘ƒ~Ž”u‡†‰‹{ˆ„‚‰ƒ‚‚}‰Š„…•ƒ‹€ˆƒ‰‚‘€‹Š{„‰Œƒ‚‚}}Ž€w…}‚‰†‰Œ¡ƒ~ˆo~u¬w„ot‚‡•}ŒŠ|Šp„‚„ˆƒ‚|†Š“ˆƒTŠ‚€ym•\}p{v{…‹‡z{§…ˆ—ŒŒ”pp”™†€‰‡ƒ„Žx}Ž‘‡x†rŒz•…i‡wg…€}”m˜†t˜“…˜‡zo„…‘Š‹sŒŠƒp†{“}hq‡u‚u|‹Œˆ~y|»†‡ŽµnŽ~ˆ˜zx§ht{u|w…q‰v{‘uyn{h‡y‚œƒ‡™”s•…po|‰‘Œ‚„swz|……p{‹…~uxx†u—••}|‚x|‡†„zˆ‰„{Šx}}‡]y€ƒruz|Ž„‹†‡‚‚ŒŠ€„’†Œ‚“†‡Œ‹’ŽŠ„‡|ŽˆˆŠŽˆ€Ž ”ˆ…Ž|‡†ƒ‘…ŽŠ~Œ’‚‹xr{‹}„y‚ˆ‚Ž~ˆ„w€ˆ€Žl††ƒŒ‹–~~‰ˆƒ“‹ˆ„z‘†‡€ˆ•‡z‡”‘„ˆŽ…ƒ…Œ‘‹‡ˆ”Š…‡‘…Œ†|Œ™†‰‹…‚„|—{‚‰„‡†ˆ„„€—ˆŽ“ŽŠ‘~–”‹†Š€ƒ‘„}‘vŠ„ƒ‹…Š‚‰ˆ—Š‘u|„|‹u…œ„އ‘‡—…“ƒ™~‰‚ƒŒ†}wˆu„ŠŠy€{Ž„„‹{„Žr‰‚zw„‹Ž‚‚›‰‘™Žx…‹™j„Š‚™}—‡o‡……„•‡unƒƒ“~{€}{y}œ…ƒ‹ˆ|o‰‰yŒ‚x’”mŠoŒŒŠ†sƒ…‡Ž}ƒ{…“‡i…|qƒ{ŠŒx‰€ž““†Ž…‰ƒz‰ˆz€“›ys|ƒˆŽm‹–˜€‘~†ƒ’†|Ž«„…Šƒ‘‡„„…xƒ—Œ—}{…ŠŒ…¢ˆ~†‡Œ}–t‚{‹ˆˆ|’x„ŠŸŽ|~€‚”‡{Ÿ“|„‡Œ†ŽŒuyx¡‚vˆ…„}’…‰š†‰~†‡qˆ‚‘oŠ‚z‚ƒŸ…yxzŒˆ†yƒ‡ƒˆ’‘{Œ€‡‰Ž“Œ‰™‰…ƒ‡“‡ƒˆ‡ŒˆŠŽŽ‰„Šƒ‘„’‡Š‰˜‹‡ˆ‰„yŽ€Œ’‹Šˆ‰Œ~{~”‰Šœ–€†‰‰‡vwŽ˜šˆˆ€Š…‡‡…’…Œw‡“y•Š~†‰ŒŠ““…‘~†ˆŠ|‚‰ƒ‹„{’{~›Œ†…—}•zˆ—†˜“Š•‡‡xˆŽ—†Š—†Š‹‚|“‚•~““€–ƒ‡xŽˆ‰Ž‹“‡Ž‡†Œ–Š|…‰‚”ˆ‚‘”z‚‚‹Š‚{‹‰ŒŒz€’ƒƒˆŠ–ˆ„‰‡ŠŠ‹ˆŽ“|ƒ‡u‘|Š‹‡Š™‹‘Š–ˆo‹ˆ€‚€Œ”†‹ˆ™•˜}ƒ}wƒŒ¢Š©“…‚‰’ˆvŒ‰…„‘‘‰†– |Ž”‘—‚‡ƒtxƒ…‚އВ’“‡f{’w{o•mšŒ‚…}’‘Œ‰–ˆs‘€Š}‡€—Šy‹~ˆ™‘–‰†‹†~|{™““|–•ˆs™ƒ~~p‹„Œ‘Œ›•}”‘pŽ£‡‰‘ˆ‚™†Šš„{y‰yˆ‹‹œ‹V‡|”w€–‘¤…‘…‘‘œ’‹—‰€ŽŠ‡ˆ™†€š‚”—™”~|f§~|އ~›ƒƒ–}–‚ˆŒ™‡Žƒ‰m–}Šk„Œy‚kšz‚€‚}š…Œˆ}•—€”‡‡†Ž€†€„~x‹z”~Š‘…šš”oŒvrŽƒˆu†‡…„„‘†‘ŽŠŽf{–“•ŒŠ†‹…‰o€ˆi‹}~†›uˆ‹„•™¡}†ƒ†„”‘{Іˆx”›‡€ª‘‚‘Œ™’ƒ‡‡|ƒŠ˜†ƒ’{‰€™…‰zŠu‰’Œ‡|…›‹‰‡—e‰†‰‰‘k–Žx‡˜Ž‹‡Љ”„‹‘{™™’Ž˜ƒ}‰§ˆ}’‚Œ—’—„…ƒ†…˜ ‹x”…‰x–‚”|}›ƒ‚–’ŠŽžŽŽ€†’—‡„ƒ‡lŽ‹‹€šxƒ€–ƒ†‡†††‡…‡†‡††‡†††…†††††„††††‡†‡†††††††…††‡…†ˆ†‡……†…†††††††……†…†‡††…†…†††‡†‡ˆ…†…††††…††…††‡……††…††…†„†††‡††††…„…†Š†‰†‡†††‡…††…ˆ†††††…‡‡„†‡†††††††‡‡†…†‡††…††…‡††††‡†…‡…†……„……†…‡ˆ††††‡…†‡…††‡‡††‡…‡ƒ…‡…†ˆ†‡…†‡…†ˆ………‡††……†ˆ†„‡††††…„†…‡‡†‡……†††‡††††††‡†‡†„†††††‡‡ˆ—”z–s˜Œ…}‡{~†|€˜T‰€„x„‡†‹Œ–Š…Ž•–v¥“ƒw„–’ƒ‰“‹†…’†…š‰„m™{†v¡t|…•¥’„ƒ‰ŽzŠ…˜q‘„„„“ˆ•}†‰ˆ‰Ž‹ŠŒt†wŠŒ“Šu‡x‡“‡u‚†ŸŒr„‚“…ƒ|oˆ“”£v~Œ|Š|…‰…†‹Œ‹›x|†xu†–“x{}£€wu…€‰…’…‚x—‘ŒŽ~”x›€‡ }“‰ˆƒ„ŒˆqŠƒ‡’”ˆ|x“Ž€‹‹}‡|šuƒ€˜†……Žƒ‘v•Ÿ’ƒŠ…œ…‡ˆƒ„€v’šŽt™~‡—w‘ˆ‘xŽˆ‡~x„€¦‚ˆƒ“ƒy‘Š}ƒŽŠ†|”p~‹„‡|xˆw‚m›‚|Š‚~pˆutd‰|†…Œx†ƒ‚uƒ†‹|ƒ€wŒ}y†„ˆqsy‡†„q„Šuy‚v™k“…~‡lzŠ|z‹Žy“Œqo}Š…’|wo~ƒ‰yŽ‹Šy…Šƒv~€Š„†ƒ{Š|²‚tœƒ~‰|‹”•‡…ywzp}y{‡›‡ˆ€ˆzˆsww…|ˆ‚r…Š•š€{’{}|€{š€„Š‰‡‚†„€—Žy„}”x}|‘tŽˆx~ˆ†„‰zŒt…Ž|wŽ‘€w…†€zˆƒyrq„‡x‡‘ŒˆŒ„‚„‹‘‹ŽŽ…„‰€’††€Š‡—…Љˆ‚“…‰z‰ŠˆŒ‡ƒ{‘‹…Ž”•†—ŒŒŠˆŽ‡‡‡y‡|‘ŽŠ‰€…’‡|І‘ƒ‚x†„‚†ƒ‰”‚†Œ“—‘†…ŽŠ}‚‡„‹€€}‡‚’‰€“ƒt€‡ˆ•œŠ…€•†Š„ƒŠ‘“”‹€…†‹‡‹†Ž˜€‹ˆ‚€y‰‡••ˆ“}Š‘•„‘“‡ˆŠ‘‰‰‘Ž€…Š’…Ž~†„…‹ŠxІ‚wŠˆŠŽ…“‡†•y’–ЉЋ…‡‘t€‚ˆŽ„ކqŽxŠ„ƒ†ƒu‚ˆz”†˜ƒ–“‚}‰†ˆ}„Œ}Љ…€lƒ‰…ˆ“„‚|‰zv„Œ‰Œ—‰’‹…‡†—‰Ž„‡‚ˆ{‹‹‘‚†}…‹ƒ}…‚„~…y‘t‹‡Žy”z‰‡’“€‡ŒŠ|~{“‡‚„†‹uˆ†‰€z“–}Š€sƒ…†Š€ŽŽ‚¤Œ€ˆ‹|~Žˆ‹‹˜Œ{€y~†¤‡~Œ~~x‰wŒ{‚|ˆ|ˆ‚†—‚~ƒŠŽy‡|‰Šˆz‚„‹„…Œ…ˆ„Žz~‹Š†}}’~€‡€‰ƒŽ—†rƒƒ{ˆ‡Š~nz‘‘ŠŠ•k‰–‘Š’Ž‘‰†wz›•ƒ‰ˆ’Žš†•‹ƒƒ…އ“’…Œƒ„—ƒz•†ŽŒ†“‹€„ŒŠŒ‡}ƒ‰‚‰s‚x˜‹‰||„|„’ƒˆ‰|ˆ{‹‡‹Ї›~‘ƒ—yŽ“‹ˆŒ—}ƒ†’‚€˜~ŒŒŠ€}”Ž…{˜ˆˆŽ’…”Љ‚€•™˜‚Š™‰}†‹‰Š‡Ž…–‰„{ˆz†~”ŠŠˆ~Бޗ’…ˆŠˆŽ|‡Š”Šƒz…Œ“€ˆŽ‡y„zŠ{Š‹‚‡Ž€ˆ„†Œ†€‘„‰~‚‹Š‡‘‰†w‰……‰Œz‡Ž‰y…†“†‰z‡‰‡„Žˆ„‰‰‘‰Š‰Š’ˆ‘Žˆ|ކ“y……‘†Š‹ˆ…}ŒŠ‘ˆ ‰Š•‹ˆ›—‚ŽˆŠv††‹“ˆŒ…€ˆ~y“†ˆŽ„“‹Žˆ†’‚‹„ŒŠ’‰~††y~†‹ˆ„vŒŒ‚…œˆz‰ƒŽ„”—––†“vƒ‡‡Ž††‹”™Žƒˆ‘ƒ€–‘|ŠˆˆŒŒ†‚ŒŒŽ‚†Œ‰†Œ†‡„‡‰•~}‡„}Œ‰…‡}‹ˆ…‹‚‹{ŒŠ†y‹‡ƒ€‰‘‰‰‰“yއ‘Ї‚ŒtŠzˆ‰…†‘“†„ŠŒ‰ˆƒŒ‹wŽŒŒˆ“ˆ‡€ŠˆŽŽ}މޒ†ŒŒŒŒ‰‰”Іދ‹Œ‹‡†Ž‰{•ˆŽˆ‘{Œ„zŠ„ŒˆŽŒ‘‡ˆ‚ˆŠw‚–‘‰Š„‚‹ŠŠ†‰‹‚ˆtŠ’‚Š€ˆŽ€ŒŒŽ•‹Š‹}~‰‡Œ{Œ“†‹”‰€‰€x‰†‡›‹“{˜‡ŒŠ~‰“‹—€Š{Šˆ’‘…ƒ’‚ˆŠƒ‹”‚…~’{’Ž‰ŠŒ|‹‡ŽŽ‘‚ŽŠ…‰“‡…Š…‹‹ˆ‹ƒ†ƒ‰„‡‘‡ˆƒ‚ƒˆ‹ˆ‚~Œ“‰‚‚‹’‘}€‰ŽŠ‹}‡ˆ‘sŒ„Š„‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††“eš{}}t‰’”““‘Šƒ~‹ŽuˆŽ™t„Œ…›u—…Ž”qƒ‰~r”‡†……—”€„p‡‡v‹Žc““|}v›ŠŸ‹u‹m“”{|˜œ‡„|†‡‹r‡‡‘ƒ~“ƒ…š‹Š„¡…‚|‚€——›†‰Š€ˆm‡™Špƒˆˆt† „„…‰˜}‰{‹”……~ijq–iŠŽ y—˜‚‹yŸvžh†Šy…†}®Š”wŒ™ˆ†‚Ÿ~–ˆž„€Œ‚}z}nŠnІ‹–„o‰¬{€•„…m…ƒ•o‡‡˜†™Œ†›…ys˜y‹|‡‘kœn•†ƒƒ‰‹•‡…ˆ™‡„ˆ‹u……„‚… Œƒ‡†Žƒˆ~†ƒ…˜ˆ‡„…†~ƒƒœƒŒ‚~‚‡ƒ†Œ…‰„|q„ˆ‰€ˆ‹‰‰w……‰‚„ˆŠ†…ˆˆˆ‚ˆ‹†™…ƒ‰ƒ„…‚ˆ‚‡„|Š…ƒz‹ƒ†„‡Ž…€„‰„‚Œ†‡…Œ‚t†’}‰‚ƒ”ŠŠ…‡‚ƒ|~‡‚‚‚{ƒƒ€’‚‡ˆˆ‹uˆ‚’Š‚€{„ˆ„†…ƒ~„}„„ˆ‚}…„Š‹ƒ„ƒˆƒ~“……†ƒˆ‰‚‡†Žƒ‰ƒŠ˜‰†{‡z‰‡‡‰ˆˆŽ…ƒ€…Š”„ƒ„‹…ƒ‡‹€‰ˆ††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††…‚™†‚’’…Œƒ‚~‡‹|{…Œ«ˆ…}Š„ˆ~Œ‘yˆ‘ˆ…z–ˆ‰ŠˆŠ…„‹ƒ€ž™™†|q€†’–™„’‰}ƒ†……Šˆu…“Œuˆ~“|{ˆ‚Š“˜šŠ~‡s˜‹…|Œ‘}•†Ž™|Šx’}Ž€‘€ˆ~‘~}ŽŠ•†’ŽƒŒt…‰ƒ†Š…–™ˆ†w‚}Š|•𒉇pŽzˆ‹ˆ›…˜•o”}‘†Œ•…”†‹ˆƒˆ€‹’މ‚z‹‹‚‡Ž Œƒ|Ž¢ˆ‹‡‰‹‚„wŒ‡›Œ{’”ˆ—…‘€‹x•‚•‚‹{‚’y’‚qv†–|„~”—y€‹ˆt“Ї‚xŒ‰€€‡}œ‰‹–†~‹ƒƒ‚—z„„€”|tu‚}ŒŒ†ˆƒ€tƒ‚Œ‘€~~„tyu†…ƒ‰‡‡|‡‹‹|†‰„„†|‚Œ‹s‚ŠŒ|w‰–~€|ƒ}‘n‡}…~u‰…““Œ‡|†‰t‰‡˜‚‰›zu€}‰Š“z’ˆ|€ƒ‡‰‡z‡©š‡„}xz™„‚Ž~†…~Ž…†y{v“rˆu„‰Š‰Š|‡‘~€‰x”…x€ˆy†ƒr†€Š‹vy„y„tŽˆ|ƒ}ƒ—€Š~ŒzŠ”‹{zuzŽˆzˆyƒ“†Œ›“‚“†Œw‰†zz†“ŽŒ…€€Žƒ‰…““†‰Œ‚›ŒŒ†›‚xŒŽ‡…Ÿœ™†~—„o€‰Ž–¦|Œˆ~Œ™Œq‰„wŒˆˆ€qŽ‹ƒ“—Œ™“ˆˆt’€Ž~‹~š~Šrx–†u„ƒŠ{Šuz“ŒŠ“›||‰|‡x„€…Ž“šŽ“††wtœ”“ž€v„…|…s„…™|’›v‹rއ•‘z•‡…’†‹ŽŽ‘ˆˆ|‹ƒ‹”Š„ƒ}œ}Š‹‰†wŒw‚v›…‹”‘‹†›†s‹y¦‡™~›‡„x”ƒ‰}z‰xŠt›ƒ}ŒŒxƒŠ„•‰xž’Œz›‰Ž…Š’^Š…†ˆr„ƒ†Ž™ƒ“š~ˆ“—…ƒ–…ކ†Ž‹‹„ŒŠgt“‰syyŽŽ—yŽ|ˆxŽzœbˆ‡‡‚Œ~x€ƒ†ˆšrˆwƒ„‡Œ˜‰_–~Œ”›“„Ÿ‡‚‹‰Œ‹Š‰”qu€™Œtyœ‚ŽŠ€†…z™”s‚…‚Œƒq“š‡xy{ˆ“—‹’tš•Š†¦š™{~Š‘ƒƒvŠŒˆ~Š“‚‘–|‚‰~w‹€rŒšz}„”‹|˜ˆ’˜šzŽ…—…‡–€ztz†–’{¢yŠ‘š†xœ‹„xŠŠƒ††‚‘“‰s”‹‹‘Œ‹up~zz‘}•™ˆ˜‹‰x|“‰’|ˆ–ŠŠƒ“†Ž‘ƒ}ƒ‚‚„„‰Ž~y‡‘•t‹{Œu’œ„—‰‰‚z‹ŽˆƒƒŠˆŠzŠ•‘¢†z‚•‚Œƒ˜‹}~‚|‹†{Ž…ŽŒ|vŽ—‰{’ƒ‚}“ˆ’’’—‘ƒ‘‡Ž‚‹…‚‘‚Œ‹ˆ“Ž…Šx–y‡„‰ƒ—–Ї‰•†’…ŒxŒ‰Œ‹™‹t†„~Œ…†‡Œ…|{”ˆ„Œ‡ˆ•ŒŽŒ”Œ|‘˜’”ƒˆ’ކ~“Œ€Š’ˆpކ’€Ž‚s|ƒr‰ƒ~‹us}uŒŽŽˆƒˆˆ‚zƒ‚Œ„„ƒŽ‡…„’ƒ†‚އŒx†‰Œ†…{}vЇ„†ˆ›wˆŸ€Œˆ…‚‚‡„‹~Ž„„…~Œ‰€~Š”‰Œ}Œ™‰{Š„’x‰†¡y‚…~”ƒŒŒ…„yŠ“ƒˆˆƒ•‰~‘…}€„yˆ{z‘w„†Ž…‡‰Ž{~‰‡w…v„˜„‘Œ‹†…ˆŒ}šˆˆƒ‡‹ƒŽ‚Šs‘…x€Š|‡‰…ŠŠ‡Š‰™Š‚}™††{Œ…‡€‰‡}}xw‡Ž†yކ“€|‚v…‰š‹†}‹‡z–‚~tˆ…–}…tŒ{zˆ}‰}•Ž€„Š€z‡…€Š|}…z……‹wt~‰Œ‚Œ”ƒ‘ƒu„€€}vt‚}yj”{}†Š…‹{‹…•ŠŠ‚uŠ„„‚‚†š‘€vqw†’€rŠ’„w‹{–q‹…Šur†}ƒ‚ˆ}…Œ‰vy†}~~‚||y…ƒ‰„~ˆ†s‹}p~›‹‡‰ uu‡ŽŽ€’sj–‹’Š„ƒw}Šwx™‡u‡z‰…„‰zƒ|†|w‰w}Ž„Ž|Œ‰‡‹rŽx‡‘‰|‚ˆ‘‰}Ž“Šƒ¡wˆsw‹t†‰ˆt„„…‘|}y‰ƒ‡Š‹}€„€‹x–„„€s…†—kŒv~z‰g„|––ƒŽ„„t|v‰Ž†€‘“‡‰y{ …ƒ‡‹ƒ‘‹ƒwˆyy€œ‚†q‰‰tŒ‚€‚v‹u…‚z‡Œ„{ww‰”Œ}‘|”’}‹ˆv|“u‰ƒ“~ƒ‹†x‹”‡{„yz{ŠŒu‰~‡Šq‘x‚ˆhi…xxk„†”‘ƒ”–}Ž‹‰…„ŽvŠyv“‡ž‹Šsnzj¤‰†}ŽŽ~‡ˆpƒ€z}‰y~…Œ™‹‰}‘ˆŽh†yŽz„q‚€’~ƒ‡™“x„Š}}Š‚jˆ†’‚‡~~Ž…’|‡rzy‰…uŒ†{‹~~ƒ†u~wƒxˆŽ‰ŒŒ~ކ†€‹~‹|€‚‚†‡‹{€y‰{ˆƒ„‹Œ|„||ˆ‹„~Š“ƒ™„–ƒˆ‡Œx€|xŠˆ††‡‹Š‡ƒy{‡|’–|Žt†’ŒxŠyŽo‰‡‹~ŒzŠ{‹“˜|v|•…‰ƒx€‡‡xv“sŠŒŽƒ€v‚…’„……£y~†œƒyŠy{~{—ŽŒ”Š€‡|†ƒ‹˜{{{j…‡yp•‚rŠˆ‡}‡~‡z‰„œ‹™‚‰…‚Ž”ŠŒ‰}Š˜€–¡‹~„І…‰o…~…‚ˆ•…‰—˜ƒ‡~€‰„}„„vˆ…‡{‡wƒx}Љˆ‡“ƒ~†††‰y…‚ˆ„‡t|…„ƒ…}†‚‚‹„}…“‰€t|xx|‚‹ŒƒŽ……†Š„’€ˆ„~†}ƒ„‰‚‹x|~y€u„‚„ˆ~„x–o‰Žr|ˆ‚€ƒ‰ƒ“Œt}‰Œ„ƒ}ƒ„‚rƒ‰†‰‹†ŒŠx„†zy„w‡}Ž{ˆ…ª„‚‹œ‚„}|}‡œ–†|}z~x}€ŸŽ|„…„ˆxq„{Šƒ~ƒŠ‹Œ‚€…|€Šˆ‚‰„€†‰Š€|Љx„‡…„w„Šˆ„w}z€ƒz…z‰€„…‹|{~‹|yˆ{xx††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…ƒ€‘‰ˆ‚zˆ•ˆ†nˆ‹Š‹ƒ‡v†…††…ˆŒ‡Œ“‹‚‹Ž†ƒ…ˆˆ}Ž~Šœ‰„“ƒŒ‰‹Ž‚“‡’‘‹‡‡}~ž…ŒŽƒ„{€‚’ƒ”c~„„”Žž}އ…}uŽ–†™¢‘|‡ƒ‘†‹‹€‰“„€‚v‰}‹…Šq€}‚‡‹‹€‹„‘ŒŽ†…•ˆ ‰ƒ{…‚‹Ÿ†ƒ…wzw|–‚}‰†^‰•ƒ…‚‚›—ƒ‰ˆx „q|§…Œ€‡‹“„‘yg‹…’Žf•ˆ}qŠ}ŠŒƒ’mšxˆƒ†zˆ’ˆˆ†…𔋆~„“‰ƒƒt›†‡¥‹…]zƒ…•s“…‰{€œ‹…‚ˆ„Q††‘|r•v˜Œ…ƒt‹…|i…r‰‹p‡yˆ~y†~€s|W}x„…†‚Žo„s‡‰„|Ÿ†~„}ž|‰q{Ž‚}v‘vƒŽv{|Ÿhz…wox~‹‹‚€‡†|y‹z‰„{Šo{{v‰wœm€†v„އ…z†ˆ…‹|„„n„ƒˆœ‰xŒ‹r’s„Ž}‚r•€‰Š‚z~”|†•€¡Š‡~zy‡„‰v—…w‚~€Š—kŽ…ƒ‹yŠƒ€~xoŽpow„„€…€‡|Š‹“x„„…y…ކ’sƒ~~‡|ƒ—›‡ˆ›ƒ‘‡Ž€’ƒ‹„‚Šžx”‰t‚ˆ™¡–‚‡‰–މ}’ƒ~І‘}“•‰‰‰–†Ž‰t‡†‡‹ˆ‹Œ’}‘{€Šy{‰l“ŽˆŒŠ‰“Љ”…Œƒ…x‡„ˆ‡šyc‘’“•“‡~…Žƒ‡ƒ“Ž|‹Ž‡|††‰Š†‚‰Œ‰Š‹‰‹’ˆy•tƒz‡Œ‡‹’|~†•…“ŠŠsušˆ•Š‡—–ƒ‰‡’ކ‰Œ†‹Š“’‚‡Œ„ŒŽ—Ž“†|‡{•yƒ‹‹ƒš‡ŠŽ‰š–Œ–‘‰ˆ’”Š}’‚t†‹‡ƒ x„†Ž…ކ†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‹}ˆŒ‡‹‹Œ“‰w—‹ˆˆ‰‡‡~~†ŽŒxŠŠ’˜ƒ—•ˆ‹Š„‡“ƒŒ„ƒ‹‰‰ˆ‡Ž‹{•’’‹—‹‡ŽŒ”†Š„‹ˆ†Œv‰‡‘ЉŒ€‹‚ƒˆ–ކ‰u•†”„Š{ƒ–‰—‹y‚“…†ƒ’Œ‚‚Žx…†‡}…ˆ–w}‹‡‡‡†Š¢‹Ž‹––—Š˜‡‚†…†€‹‹‰…†Š‹‹€‹˜ƒŠˆ’ŒŠ‹…ˆw„Š’”ˆ‘ƒ‰Ž‹ƒ‹Ž‘w†…ˆšŒ†‹Š†‘„ˆ€†ˆ‹‚…’ˆ‘ŒŠ†‡•‚“€‘†ˆ’—‹—t‰Žƒˆyˆ‰zƒ„‹‡ˆ‘ŠŽ”|•Љ‡†‰„†|ŽŽ„ŒŒ’Œ‹“ƒŒ‡‹ŽŒ‰ˆz—ŽŒŒ‰€ˆ‹tˆŽŒŽ‰‰…‰v‡–•Ž‚’އ…Š–ˆ„†}“‰’Œƒ‡Žƒ‰„•†”†‰‚ŠŒŽƒŠŒƒ‹|ІŽz~‰‰€ˆˆ€œ…ŽŠŽŒ—‘•Š„‹„‚ƒŒˆŠˆ‡Š†‰„ˆ‘w~–ƒŠ“”Œ‰ŒwˆŽ“Ž’‘†‹†ŒŠ€‹ˆzŒ„‹‡‹‚‹…Š‹‚ˆŒ†‡‚‹…‰“Œ‘„‘•‘‚‚Ž~’‹‚Œ„ˆŒ”w‚ƒƒ†€‹“‰}ˆ”‰Ž…Œ„w•ŒŠ‰„‰‡}€Ž}‹Ž‘…“‹“…‡‘‚‘y‰‹‹‰‡‘„}”ˆŠ‹Ž}…„ƒŽˆŽ’“‚ƒ‡wŠ‚‘‹”‚xŒ‘€ˆ‰Ž†Šz“†~Œ–‰‹š‡Š’‹‚‰ƒ‚‡zŒŒuЉ‹ˆ‰{y‡…‚‡’ƒžƒŽˆŠŽ”‹‘Ž……‹…ކ“Œ‡Ž…ˆƒ‰‘„xŽ•€‡“‰‘‚…~މ‰•Šƒ†‘‰ˆ‹ˆ’„‹ˆx‡€…“ƒ‰–…ހВ}ŽŒƒŠ‹˜‰ƒ‘’“ƒˆŠ{’‡‰Š|‡Š•wŒŽ~‹{…Žˆ~rˆ†ŠŒˆ}†•{ˆˆŠ„}ˆ‡„~Ž’”ƒƒŠŽ‚•±ˆ“ˆz’‘ŒŠ‹’„x•ˆŒŽw‹…€†ˆ‡Œ~…’Œy†‚’‰}Ž”’†€Š‡‚Šx‘‹‚•ƒƒ†‰˜ˆ••€‰€ˆˆ}‘Št‡}ދކ‡…z‡Œ„Žˆ‡wžŠŠŠ‹ˆ‰–Š‘Œ†‰Œ}~‰Žƒ…ކˆˆ‚…ˆ~’•w‘ˆˆ‰Ž”}†“‰ˆŒ‚†“ŒŒ…Ž†Žˆ€€‡Š‹‰‰‡……†„€ƒŽ‹‰‚‰‰Œ’†œŽ‰Ž†‡•ˆ‚Žˆ‡“Œw’€…ˆŽ›~ ‰‚ˆ„’ƒÏ††…w—…†{ˆ‹€‡•’†‚…ˆ…zw‡‹‚‚‚ˆ††…†~‡Œ…ƒ‰xƒ†ƒ‰{…ˆˆ‡~ˆˆ«ˆ‡…‡ƒƒƒ……}‡ƒƒ”‡~€ƒ‡……‰……Šw‚r‡…œ‚…Œf…†„……†„‚…†€‡Š€‘ˆ†„‡~„‚ƒ€„ƒ‚†„‡{€ƒ‡ˆ„‚ˆšƒˆ‚…ˆ†„†„ˆ…‚‹…‡‚‚w„ƒ††…|„ƒ„…ƒ‡„ˆƒ……ƒ„‚‚…‡€†„‡„†…„q„††ƒ…‹‡„……‚„…„ƒ‡~ƒ…ƒƒ„„„‡‚†‚€††…‚†„†„„„‚„„…‰„†–~y„“–ƒ†„Œ„œ’“‰‘„ˆ‡x…†‘|‰‰Œ|~‡’ˆ‰—†‚„Ž|„Œ~Š~uŽŽŽ‡‡ˆ…’ŒŒˆ‘€ž‚ƒ†c‚“Ž‹‹{€ƒx‘—„—ˆzˆu€‡”€|x‘w‰‘Ž}y„z‡{|„ƒ‰‘y‹tˆ†œrr‰•~–‚„n•|„ƒ’…•”“……‹{‚†œ…“ƒ‡qz„‚ˆ€ŒhŽ…‡›„Š€Œ}„“Œ‰‚Š”…Ž™“ˆ…o|~ƒ{„އŒ‡ŠŽwx”‡|„sl‰„zˆ†‰†‘ŠŠŽwz™|ƒŽx‡†…„‘Œj“™|„€†}“„‚‹–•’މ‡|†z|€–™“‚ˆx–„Š‹’•}‰‹’†‡‰y‡‡Œ„„‰–€™w‡nŒ‹Žˆƒ„†”‘’…‡„І•v“ƒ„’u‚•Žˆ‹•”‡œ“„sˆ…„{†“‰‚“”‡“š|•ˆ„…Œƒ‰ŠŒˆ–Šƒ~€†y“t€‹ŠŽˆž„ŠŠˆ‡v€zo…‘~—Šc……j{‹—Ž’˜„v’‘Œ“ŒŠ—˜ŽwŽ–…‡ŒŽ“‹„ˆo–”†‡’™~‘u‰u†Œ“Šw–ƒ”„‰ž|¢ŠŠŠ—…œ‘|Žrœ“‰šy€ŽŽ‡Š‡“†|‹Œ‹…ˆ}€‰†€Œ‹‚‰ƒ{€‰wŠ•‹Ž€Š‰‹ŒŠˆ„~’’wІ…–œ„‚ƒl‘€Œ“€†Ž†‡„„ˆyˆx€”•sŒ•‹|z‚‡‹†…‰y“Š~”’›Œ˜ˆ‰ˆŽwƒ…Œˆz~‚ˆ†—†zŠz„z‰ŠŠ’˜‹“„Œxz‡Ž›†”Œ—„ƒ~xŠ’„’‰Š“}‡Ž‚“‘‰yŽ––˜’…‰‚ƒƒ‹‚‰‡ŠƒŽ’‘І„‚‰xŽ„’‡~‰‰‚‰‘—|Žy–Œ……‘w„ƒ’‰‰{ƒv“‘zˆu›~‘}–‡|‰‰„™•ˆ„šh‘Œ‰‡y‡‹s…ŽwŸužv„}ƒpŽŠ‹‘“™‹|Š…frŽt†n‚‹Œ“š–‘€†ŠŽ}w™gއ‡ˆ‚Žˆˆ‚‘–ƒ‚Š|‚n†zˆ˜¡Ž‡‰…’ŽŠ†Šœ„~„•…‹‘‹¥—{„ˆ‚–Ž~‰–Š…‰…‡Š„‡¡x…yk„“Œm}”…ts”’‚‘‘…Ї—‰Ž•…‰€—}ˆ–‚†ŠŠ†Š“ˆ‰”˜€r”Ž—…†€‹‡‚›z€‹™”Š“•‚”’•’†‰™‘…§ŒsŠ˜Š„‡z‚‡ƒŠŽ‹‡~‰‡ˆ‹ŠŒŽŒŠ†€‹‡‡‰Ž˜x…‚r‹ŒŠ‹…ˆˆ„ЇˆƒŒ‘„ˆŽ‡ˆ‡Œ‹ŽŠ™‰‰Š‡Œ€‡†‹…†‚‹†‹‹Ž‹Œ€~‹’Ž•‚ŽŽ†ˆ“Œ†Š˜‡…‹’Š‘„…Œˆ~Œ‹’Œv’Œˆ~‹Œ‹…‹…ˆ”ŒŠ–‹‡‰}…Љ’†‹‹…ƒŒ‹††ŽŒ•ˆˆ…‡Œ††‹—Š“ˆ„…†‰†“‹Š‰‹…ŒˆŒŒ…ŒˆˆˆŠ“‘‰Ž‰‹Š‰Œ‰’ˆ—Š‹|Š„Œˆˆ‰‰‡ˆŒˆ“Š‘‰‹Š’‹ˆ‡}…ˆ‹…‰‰‹”‡ƒƒ„Ž‚nŒ€}†y„‚zˆŠ†‡“‚‡‹ˆ‡zЇz~Š~š‰†ƒ’ˆŽ…‡…ŒŽ‘~ˆ‘ˆ„Œ†‡Šƒ›•‡‡Ž‹‹€‹‰‰‡ˆŠ‚z†‡€„z‚~‰Œ…‹ƒŽn}†…ˆ”ƒƒ€”‰‡xŒ„’y€…‡‡ŽƒŽ|ƒ›~‹xŠ‘‚†‚†l„Ž~€†xD}‡t‡Šw€r‹Ž›™”£’އˆ}‹‰}‹ˆ„Œm…‰€‹}‚~}‚~ˆŒˆŠ{Ž~Œ€Ž~~}ŽŠ‚i‚‚‡{r†…‰‰ƒ€‘Œ…€‡q‹‚‹ž{™uŠŒ“˜Œs’ˆx‘˜“~މ“„Ї„Žvkw‰~my—†ˆ“€‡€y¢v…’‚…‡h„vuœ–‹~ƒyŽ„xŒˆ‹†r‚”‰‰‰‰x‹zn”x€—}ˆˆ‡ŸŽŒ{lwŠvu‡‚‡ƒ~w‡’xy’z€y‡†‡€“‰‡‰ƒx€‡x{Œƒz~†ˆ…}„Їn–v–Š€y‡†b’jxxjrˆ‹|’v‘~}y‰{‰Œƒ„†‰|{…†„†‡p†‹…{‹p…v„rt{ƒŠ‚}|“‹€Œˆy|‚†|z‰xƒxtxx}‡Œ•‹…†…ŒwyuŒ‚ˆvƒz¡™Š†vm—±iqz‰²–‹•r“‘Žƒƒ”ƒu~Š‚yˆ–‚t…w‚´Žƒ~w‡ƒŽŒ‹{|™–~ˆª}tŒ–s}˜œŠ†u—†f{‘w„†ƒÁ‚‡w…W~Š~}’{‘‡–†‰†Œƒ„~}†œŽxŒ•zІœ„Œ‚w€ƒ¡ˆ‘~p“Œ–Š{”•€z‚|tta^†“„ƒˆ{zy~’’o–ˆ”•y€‚‡_’‚p|ž„‡v~|u‹”“‘ƒ‡ƒ‰v¯¤¡ŒkbŒ‹…‚ˆ‡†z ‡ƒ„”q|‚šyn€zƒ€†Ÿt‹’{Šq—‚„g…zš†ƒ“lƒ‰œ‰“ƒyˆŽ“›|lŒŽ‡‡’ƒˆ‰ŽˆŽŒ‰Œ’ŠŒŽ‘ƒz‰„€tŒ‰‹ˆ„†‚ŒŠ‰†‚Ž“†Œ‚…‹‰…—ŠŠˆˆ‡„‡ˆ’ˆ‡‹ˆ„ˆ}†Œ†„†“~“‚‡ˆ—Œ’ˆŒ|€˜†ƒŽ‰Ž“„„…‘‚‹‡ƒ‹•„w‘‰‰~‹„‡ˆ‹ˆ‡€’’‡„ƒ‡|‚އ‰„‹‡~Œ‘‚‰ƒ„Šˆˆ”Еބ††‡ŽŠŽŽŠ’ƒŠ‡Ž’y…ˆŠŽ‚”ŒŒ„Š‹‡‡Ž„ƒˆˆ~•–Œˆ†ˆƒƒƒ„‹†’‡Ž†…‰†Œ™Œ…Ž~Œ‰„“Š’‚Šˆ‡‡’•™‡|–“‡“yŒ…„„ƒz‰‚Š€„–”‘‰˜ƒ”‘ŒŽ—‡„xŽ…‰ˆr€‡‡Žqˆ—‹Žx„™‰ƒtމ‘‰ˆ‘‹—…v—z‡‡y‚xŠ{‰…’”‹€tv‘ŠŠw†““Š…“‚ˆŒ•‘„˜œ…ˆ|Ž{”…Ž‚ƒ‘Š“{žyŽ’Ž‘“Ž•ƒ’Œ€‰|“yy…•}‹ŽŒ‹z‹„x‚‰Œ‹|–”’{…Ž‚‘‹œ’‘£‰ŽŒŽ}{–Œ„œ„„ƒ¡…ž‡”Œ”yˆ‡…‡ŠŠˆ…š€‹€€‡•ˆ…Œw‰yu€‘™iƒ~ƒƒ|–‘„‡…‡‚”‡‰Œ†Š‘ƒƒ|—‰Š~{‰“™‹‹…w“…‡‡™‡„‚‚’”u‹“‰‡Š’„v‹~Œ‰‡w…ŽŠ•މƒ~ƒkxu‹ƒˆŠv‡‹Ž‹ƒ‚osŠ€Šu–’ˆ”ˆ…‹Œƒ•†Œ„s‹…‰‡ˆŒŽ’Š}‚€„‰†Œ‡„’‡„‹Žƒx“Ž~~ŠŠ˜†‰}„šŽ‘•‰…Œ‘”™‰‰‹‹‘‰Œ…‰Š•‹„’‡~“Ž„ˆ—„‚ŠŽŽŒŠŠ‚††y‚”…‹†‡ƒx•††’‹Š…„‡ŒtŒŒ„†|‹|…‹Œ‰‚†‡€†Š‹Œ…€ŠŽ}€Š‰‡|x†‚s†Š„‰ˆ‹…‰’ЇނŒ†…‡ˆŠ‹ŒŽ•‡‰Œ‹†‡ˆƒ‡‚…‡‰Œ†Œ‘‚ŒŒ|Š‘†‹‰ƒ‹‘‚‹“ŠŽ‰•‹‹ŠŒ’Œ”€‹Œ|‹’…‚††‘ˆw“‘ˆ}ƒ’ˆ„†Ž‹†ˆ‘†€—†Ž|‡…ƒ•‰“ŽŠˆ‚ƒ†‰‰‡‹Šƒ—†ˆ…†„Ž‹‡„ˆ‰Ž‹Ž†’Œ‡ŠˆƒŒ†’Ž„ˆ…Š‹Œ‡Œ‹ŠŠ‡Ž•‹{‰ŽˆŒ‡Œ†‡ŒŠ“Œ„Ž’‘…Œˆ€}ˆ‰‰…Š…Žˆ††††††††††††††††††††††††††‡†††††††††††††††…††††††††††††††††††††…†††‡††††‡‡…†††††…††††††…‡†††††††…†††††††††††…†††††††††††‡………††…†††††……††††††…‡‡††††††‡††††††…†††††‡††††…†‡††…ˆ†††††††‡†††††††…††††††††††…‡†††††††††††††‡††‡‡…††††…††††††‡††††‡……†‡††…†††‡††‡†††††††††…††††‡‡‡††‡†††††††††‡††‡†‡†‡††††††††……†††††……†††††††††‡††‡††‡†‡†††††‡†††…†††………†††††††††††…††††…‡†…†††…‡††††††††††††††‡‡†††…†‡†‡†‡††‡†††„†…††…‡…†‡‡††‡…‡†‡†…†‡†……†††††‡……††‡††††††††††††‡†††……†‡…††‡…†…†‡†††††††……††††……†††………†††…††‡††††…††††††…†‡†‡†ˆ†…††‰‰„‰…ƒ†‹‡†ˆ‹„Їˆ‰‡„‡‡„ƒˆƒƒƒ‹…‚„„ƒ„Š„ˆˆˆzˆˆ‡Œ‹Œˆˆ…†„ƒ‰„ŠƒŠ‡ƒ†„~}zƒ‡†‹ŠŽŠ‚z‡†Š†‘‰…ˆ‰†……ƒ‹Ž‡‚‡‰ŽŒˆ‡†‚ˆŠ…Œr‡‹ˆ‰‡š‡„„ˆ‹…‡‚‰ŽŒ…„€‡Œ†“{‰ˆƒ‰Œwˆ{…‚Šƒƒ‚…‡…‰€ƒ‰†{І†y‡…Œ…ƒˆ‹„„˜‚“ކ‰ƒ‡„‚‰„ˆŒ‹ˆŠ€Œ‰‡“Š…‰މŒƒƒ‡†‚ƒˆˆy€‡…‚‰Š†…‰‰}†„†މƒŒŠ‚Ž–¡’ˆ‰’v›‘‡‹†…Љƒz‘ƒˆx‚„„}‰€‹–’‘˜€|’ƒ™‰…‰„Šˆxvƒ‚“‰€†œ‘Œ„‡‚sƒ}ƒuy”‡–ŒŠ•‡a•wœ„x…ƒ~‘mŒ‚ššou”‚~u–›Šz„†Œ†|‚’{ƒx†Š‡‡~”‘Œ€„€‰‹’Šp“€Š˜Žž‹„yމ}‘”“¤Š{‚w‚‡”‰Žš“ˆy˜–ˆ“Šz˜ƒ–‘‹}—Žp„y”˜‚|‰~†~©ˆ•Š—|Œtƒw•q}¨Š‡†“……ˆŠ…ž’”~€Ž‰‘y|s‰|r‡˜l€†—„“„‰{–‰~†‰Ž‰}‡ˆw†~v…Š„…†˜‹‘šy‚pŒ‚‰~}‘|’~†‚˜—z‡ŽŠx||Šƒ‰~ˆ„q‹†‹™ƒ‘‰…ˆŽ“~•xœ…uˆ’v~ˆ—’x‰nt‰€ˆ{‹”~†„†‡‚‹ŒŒ~”–…‚y‰‰{Œ‚‡Š‘‘‡tŠŽ‰‘ˆ‘Ž”ŠŒŽ‹Œ‘y…’vl‰‰‹Ž…o{ˆ‚o‘‹’‹…‹“’žŒ‰Œ‹’‘Œ‰‘†–ŽŽˆ‰Ž‰†‰Œ‘…sŒ“‰‰‹€yŒv‡‘Œ…‚“’ˆˆ‰}—’Š…‰Šš„™|”’s€ˆ‰†ˆ†ŠŠ‡“Š‹”z„“Š……›w†“ˆ†Œ†}y……ˆyƒŒ‡ŽŸƒ˜™r‚w€“n‹†v{ˆ‰—v‰•…“‰–†‚~™’ŽtŒ˜…‘ƒ‰ˆ“—‡uЇ~|’|•ˆ“ƒ{sކw“‹ˆ‡„Ž}•’zyšš‹‹‰~Œ…€‡‚’…”€‘ƒŠŒŠ”‰”‹ˆŠ’–ŽŒwŽŽˆ†‹Ž‰‡~–‚‹“‘Œ˜ˆš„‰ƒš„Š’…‹…ŠŽБޖБŒ”„z†‰”„ˆœ€€Œuˆ‰Œˆ…“Ž…€x‘Š—ˆš’Žw“‚sŒƒŒƒƒŠ~›‹Ž“Š€…ƒ†‚‹„„ƒ„Žˆ‚†•‹”‡™—“wŒ‘‰rŒ„Œ‹”‚ƒ˜Š‹“ŒŠ“—‡…ˆ|Œ–„Š„—‚„‡ƒ€‰ˆŽ|~”€Ž“Š“Œ†”‹“Œ˜ŠŠˆ‘‹ŠŒˆ{‚•…‹—„†‰‹v”•ˆ|Ž…‰Š‡‚‹…Š”„ŠƒŒ‡’ˆŽŠ‡†…Ї€‹ŠŽ„‘Šƒ‹x‰…•„‡‡†…”‹‰‚Œ’ІˆˆyŠ‹‰ƒ‹Ž‡““‹‰…‹Œ…–‰‘Š”{‘˜Ž‰Ž‰„ЇŒ”ˆ‰Œˆ|Ž›‰‹~—Š’……ƒˆˆu“yŒˆŠŠz„‚…|™w|‚i}wwx€…Š}tx‹€“ˆ‚v{~‰‰}„ŒŠ”•’‰{“…‚‰…Š–~‡m…†—„ŒwŠ„‡zˆƒ†„‹™xŒŠ…‹w‡‡Ž‹„ytw…~Ž|”„“ˆ€ƒ‘ˆŠ„„m~†{„‚|{yŽ€Šp‡|uƒ}„w†‹€’‡tŒ…‡ˆ‰Œ‹~‚~vˆ†ˆ“z‰ƒn|~‹~}Œ{‡{m€‡w{c„|‡€ˆ‘q…—Šˆ‚‡g€„€„”r€‡y“™…€‹u…~’}ˆŒŒ„~‚v††{|†r‚…†ƒ‡…†ŽŽ|Žy…„Ї‚…Š|†„€{Š…|ˆz’‘ Žy}‡‚ˆ‹ª…‹„”†wŒ‰}‰”Šˆ…~|‡~…€‚‹}ŽŒ”„€‰“–„€}¡‚w†Ž•pˆ}‰‚”ˆ}…xv‘‡†u‡•†„†Œ‚ƒ…Œ}Š“Ž~zŒ•ƒx}‘Œ“‰~‚{‹‚‹…˜Œ„y›“‡}Ž’w~‹~ˆ{„‡“‰šˆŒŽ•”ˆ‡•‰‰~šŒˆ…‡‡{ŒŠ~Œ‚Ž{‡‹—ŒŽ’’xy‡w’ˆˆ†˜‘~’…{˜‘—’…™‚‰„”|s„…„‚ƒƒŽ—ˆŠ†ˆŠ‡……ŠŽŒŽŠ‹ˆ‹„‰‡“xz„‘„ƒsw›‡{’‰†€‚Žƒ|™†ƒ„Œ‹~~~„‹…ŠŠŽt‘ƒ„ƒ‹‰sŠ{ˆ‡‹}‡†‹‡†…ЀЋ‰“t†mq‰ŒŠy†…Œ|’wy…ˆ’q‡ŒŠŒ‹‰Žƒˆˆy†‹‹Žˆvƒ€„~‹‘Œ‚‡}z…ƒvƒƒ‹ˆ†…‡Œ€Œn‹…}}‡‚ˆ}Œ”z‚’‹Šƒ‹€z’’„ˆ‹‰ˆ‹‰ˆŒ‰ˆ’„„‹r…ŠŽ„‡€€‰Ž€ˆ‡„†wv†~‡‰……Іƒu{‹‡ˆ†‰ƒ‹„ˆw‹‡‚‚‰{}ކ„ˆv{€‡ƒˆƒ”ot­ƒyŒq“~…‹{‡r„z‹‹‹ƒ‚ˆz|f”‰m…Šƒ‚Qaz„ˆ‰‰—„|~vŠ{›‡‡ƒ„|}ƒ’¤‘Š~‹w„}†xw“›zƒ‘‰}u”€x‹•l‡‹ym†z‡…€}”†‹…t‘‹Šu}Œ’…‹™‚‚‹…szŒ–}|qsp{ƒ‚…ŒŽ•ƒŠ‹|ƒ‹s}{xhlŒ†Œ€r~…‡Š—~Šv„}ƒopx‹t‡‰€‡Œ—qwzv†pm‚z…‡†Œ}Ž‚‚‘rox„‰…€z„‰{„Š~y‡€›w‹„ƒ€u|z€€…—‡rz—ЅЉ•ˆŒ†ˆ‹„Œy“}~z‘‡‰~ƒƒŠŠ˜‚‡ƒ…ƒ–‰‹zƒ‚…zvŽŽŠ‡sˆŽ‡ƒ…ˆˆs„p€’†|……‹‚ŠŽ…ˆ‚Œ†‰…•yyq“Š‹…€w€‘ŒŠŠ‘qzŒ’s”“‘‘†z‰Šyƒ†~rŽ‚…ƒ…„Œ•——Žƒzƒˆ–ƒ‘Šˆ‚„tŽŠuŒˆ‡‹†xŽŒŠ‡ŽŠ–‹ˆ‹Œ€’|’–Œ‰Œ„†Œ‚•‚‡‡…˜~‹‰}‡}ŽŠ†Š’‰ˆx†€ŒwВއˆ†}–Œ‰’І‚‰vz‡ƒsŽ‘„|ˆ{‹Šƒ„‡Œ„‰…Š‹ŠŠ‡…‡Š‰ŠŒŽ‰‘Š‹“ƒz‘ƒzv‹ˆ‹‰„‡ˆ†‘‡‹yŒ‰†Š„‹†ˆŒŠ‡”ˆ‹ˆŽ„††‡~މ…‡‰‰‹‡‚Œ„‡††‘‚‘ƒŠˆ‚‹ƒƒ‘ˆ‰‘…‰“‰Š’‰Š‡‡}‡Šˆy…€‰~ŒŽ‰†ŽŒ„~’ƒ‘ƒƒ…‹~…Ž†ŽŒ‚„‰Š‰…€Ž“‰ˆ‚Œ…‹†Œ˜ˆŠ”Šˆ€‡…†‘’‘ŒŠŽ‚€„ˆŠ‹‚Ž‹‘Œ’…‰ŒˆŠ‡Œ~Ž}’‘Їˆ†ƒ‰‚‡ˆŠ‹‰ƒŠˆ†‹ŒƒŽƒ“‚‰‰‰‹˜‹Œ~‰’‡ƒ~‹‹x…€y’Š€‚“‰‡œ•Ž—“y‚‘•‹…‹~ƒŒ‰‡…{„…v‹”Œ„Žw…ƒˆƒ”‹zˆˆŒˆ–{‰’‚‹—v›…o…†ˆ…nŠ‡Šƒ‰nt‘‰‰u‚•Ÿ…‹‚‹‰‚Œ…~Œ‘Ž…sˆ‰‹|‰‡’’’‘~Ž|†…‰‰‰„ŽŽ‡ŒŽ‰‹{ŒƒxŽŠ‰„ƒs‹Ž‡ƒŽŽ“~‚”‡•‘›…ˆŠ‹Š‚Šƒ‰ŒŠ‹„„„‹Š„‡Œ~†•‹p‹Ž—‚ŒŽ‘€‡ƒz”…ˆŒ‹ŠŒu~~x‡…ŒŒ‹ŠŒ‘†‡‹ˆ‡†‡|†‰ˆŠ‡ƒ‰‰†…†ˆ‡‹†‹‹€~‰€|††‹‹Šˆ„‡Š†ƒ‹ŠŠˆˆŠ‰‡ˆ‰‡‰ˆ†‹‰ˆ’‹‡‡ƒ†‡‰‹‹ˆ‰Œ„Šƒ‰†Ž‰…‹ŠŠ†‹‹„†Œ‰ŒˆŒŽ‡…‡Œƒ‹ˆˆŒ‹‡Œ‹~’†ˆŠ‡‰‹ˆ‡„ŠŽ†ŽˆŠŽ…ˆ‰†‰„‰Š‡|„І}‡…Š‹‹Ž„‡†‹ŠŒ‹‹…‡‹†ŒŒŽ†‡ˆ„…ˆˆˆˆ…‰†ˆ…‰Ž‹Š‹ˆ’‰ˆ‡†‹…ƒˆŒ‹‚Їˆ‚‚‡…†‡ˆ…ŒŽˆ„Љˆ…Ž…ƒ‚‰Œ‰Œˆ‰…‹‚ƒ‰Š‹—ˆšŒ€“‘‰ƒ{‰‚Œ†Ž€{‘‡Œ{|zy‡•‰Ž„ŠŠ}ƒ”†„Ž„…|‹‚}•‘x‘‘‹„…ˆs‹„‰€“€xz”‹†ƒ„€Ž‰q“u—~nˆŠŠ‚~q†„†|Šnw’}Šr‘…ˆy}„Ž€Šˆ‚p‹…‡‘„††Ž{y‰Š„‰{‹†„†Œ‰‰ˆtŠ•u€ƒŒŠ‡ˆv‰˜‡ƒ€™‹‹‹‡zƒ‡’އŒ‹ŒƒŠˆƒŠ„†‚‚‰Œ‡ŠŠŠ•‚x•ŽŠˆ„€ƒˆŠu…’—ƒ……‹…~—‹‹…Š‰ŽŠƒ†€{…‰w„‡Š‰‚uŒ€‹Œ‰Š„‘€”‡Œ‹–~‹ŠˆŠ“‡Œˆ‹‡—…}‚‚w“†‰‹~ކ“†‰„ƒŠŽu”€‰ˆ…Žˆ‡•Œ„Š¥Œ„Œˆ~ˆŠ{ƒˆŠ‹‘††’~ƒ‘Š‚‹„Ž‘•}ŒŽ‚ˆ‹ŒŠ—‡’t‚ŒŒ„‹„ˆ…ŠŽs‹~x•Œ…~ƒ‡ˆs‘…‘‹†ŽˆŠ‡‡„†ˆŒ‹…“†™ŠŒ‚}‚‡›€‹|Œ|†€†‹—•‘…‹ƒŒ‡}…‘‹‰}~Ž‹“„„ˆ’~‹Š…’{•…}”†‰‰Œ‰„Œ„Š‹Œ‘‘‹~‡Š“”~Œ|“‚ƒ˜Œ~Žƒ†‘|‚Ž|‘|‹ˆŠ†ƒ‰‘ˆŽyjˆ‡qŽyu‚~ƒŠ’…Œ{{t’‰”†zy‡‰‡‚pŠ“……|zŒŽ‚ƒ|…sˆm‰‰”ˆ‚ƒozu…Ž~Š—}‰~…„x‚‡‰ˆˆ†‚‹q†~އƒpz€mŒ|‚‚Š‹‰‰ƒ…„Œ€‡‡†„•€‡ŒŽ“’†ƒv„}mp~‰‡‚‚ƒ‚|ˆw}ˆŠŠ}~„‚Œ}Š‚’Œ‚„І~~“}—ƒ‡„„}…‡Ž€€~„}Žƒƒƒ‚‚‡‡–y†Œx‰ƒƒŒ„†‰’„‹ˆ‰~ˆŠ|€‚‹€‰Œ‡‰}‰€v€‚•z‹…€…‡—˜z‚“Ž˜†ŠŽˆŽˆ†Ž–‚‡y—ƒŠƒ“ƒ†•œ“‘”}…|•‡‰‡˜„ƒŠ†~w|‘“s‹“Œƒ†s‹ˆ}ЉvŒ“’‡‡†€‘‡˜„žuš‚l|‘~†w‹‘uƒmsˆuƒ•Œ~ˆ„ЉƒŠˆ}އ€wŠŠˆw‚‰…‡’Œ|‚„‚‘Œ‰ˆ‰“‹ˆŽ…‹Œy‘€zŒ‰Šƒw‰ŠˆxŽ‘‰‹‰„Œ„™Š‰‘‹–“„ˆ“—Œ”„ˆŽ‰–…‹“‚‚–‘†Œ„‹uƒ•’Ї”“€Š…x•Œ”‹‘Ž‘‰Œy„o‚Œ‹ˆ‚Œ€Ž‰„ˆ††…†€„‹ŽŽ…‰Œ…Œ‰ˆ‰„}‰z…|x‡‰‡‹…Š„‰Š‰‰ŠŒ”Œ‰†ˆ‘ˆŠ„‘‰‹Ž€‰‡Ž|„Іƒˆ„‹‚ˆŒ€€“Œ“‚‘„Ї”‰ˆ‰“‹Š„’”ˆ“‡Ž„‡‹‹‚‰’‹z“Œ†ƒŒ†…€ˆˆƒ’Š“‹~w†ŽŒŽ„ˆ‡‚‹Ž‡†ƒ‡‰…އ‚Œ‘‡Œ“ކƒ‡‰‡‘Š•‡ˆŠƒ‹…’Ž—„ƒ‹‹”Œ~‰‡’ˆ‰„‰‰Š‰ŒŽ‰€ˆ„ƒŽ‹†‰…ƒ‰‡…“’‡‡ŽƒŒŠ„ƒŒ•†‹†‹ˆ„‚œqˆ­„dq‹œw €Àzyw’l’|sx—••x‚kgc}‚~Œ€‚†n‰‹ƒqy¨ˆ‚€‘ŒŠwr‡q¯‡ƒˆ‡–yZ‘Š…n†ª‚vwŸ’Šž‹xŠƒŠ¨€Ž~Š~{€k•‘ ”žœ‘—us‰œv‡iŽŸw˜‚u’‘•qˆŒu‹€Ž†ˆw€k¤”–Ž~•zeŠk}¡—‡œ“š€u€‹„szu‰wƒ‘‘‰„‰”…•„‘{‘“šŒ‚žc}…©ƒ„…{zŠ“‚}ƒ‹€…Ž¡y”˜„{ƒ}´xm„x¥ˆ—ƒzŒŠz“šzƒ’uw…™”ŒŒ‚†~Š‡Ššn|Œ‡…‡‹ŒŒ„ˆ{“Œƒ}”ƒ‡}ƒˆ‡Ž•‘„Š„†zš…}‹€…†ƒ„zƒ~Ž‘oˆŒ‹ƒ}’sЄއ†‡ŒŽ„‡ˆ…„|“Œ‰›z“|o…ˆ‰…‰z‡Œ“”„nu‹„”rޔЉ‰‰€ƒ…†ƒ‹…‡sŒ…†z‹‹…ˆ‰‰~ˆy†Œ†Š‹ˆ‡‹‡ƒŠ„ˆ‹w„‘zx†„Š~‚|Ž‘”ˆŒˆ‡Œ‚˜‹ˆ‹“‘‰‡ˆ‡•ŽŒƒ„{ˆŠ‘’…‹’ˆ‚‹Ž“…‡‡Š„w‡Ž”ˆˆƒ…}‘…ŽˆŠ‘Š‰~Šxˆlˆˆ„†|ˆ{‹ˆ‰‡|—‘}u‹‘–‘„{‡Šs‘‚~|‹‚~~„€‹ŒœŠ“‡–}‡ƒ‹}‡‚‘‘Ž}Š˜|Œ†›šzŠ‹‰ˆnŽƒz‡“ŽŒ„z†ŠŽŸƒƒ†Œ’“p‘‘…sƒ…‹qŒ|Šš”r‚su‘yŽw“‡€‰|…ˆ‹‹•’}wˆsއzŒ“Ž…t…ˆ’”„š‹†‹†Œ–u–uyƒ‘Ž‘v‚‡‚u™‹–ŠŠ—“›}‰•ˆ™’ބހ•Ž ‰”ˆŒ„••‹‚€‹‰’““’–‹ŽtˆŽy…Œ•ƒy–—‰ƒ„Ž‘•Žq‘‡xv‘“ŠŠ‹”Š…›ˆ‰…‡‡ŠŽ‰ƒ€”ˆŽ•‚xˆ€s†Š‡‰ƒ†ˆ†‘Љ~Ž–†Œ‡ŒŠ‹‹šˆŽŒƒ‹{}‚…xŒ„Œˆˆ‘‹“ŒŽ|”Ž”…‰‹‰Š•„“ˆŠ‹–Œ‰ƒŽˆŽ’ŒŽ‚ˆ’z‹‚~‰“u‘ˆ…Œ}ˆŒ‰‰†ˆ…ˆƒ”‡–‚‡}…•‹Ž‹‡‰ƒ‡‹ƒ‰Š™„‘Œ‚…‚…‰•Дދ‚ŒŽ†ŽŠ…Š„Œˆ†‡…•Š…ˆŠ…Œˆ‹†Šƒ’†—Š‹‰{”…‰ŒŒ‹†„‰”“ˆˆ‹‰™ŽƒŠ}ƒ†šŽŽƒ‹…†‹…‰„‰‡‡‰Œ…z†ˆ‡Š‹ˆŠ„{‡~}††‚|…‡†ˆˆ}ˆ„‰ƒ’‰Œ…††‡†‹’ˆ‰†„~ЇŠ}‡Œ„ƒ‚ˆ€‹Œ—™ŠŒ‚ˆ‹ƒ‚ˆ“‚ˆ†ˆˆ}™†—†ˆŒŒŒ‰‹ˆ‰”~ŒŒ‰……‡|‘Žˆ~†Ž‚Š‘zƒ‰ŽzŒx„…|ŽŽˆ‰‚wˆŽ‹‘ˆ†„~††”‹‹‹‰xŠŠ…Š‹—„ˆŠ…‰–‰’yˆ‡Œ‘„–‡”€ŒŠ•ˆŽ„ˆ{ŠŒ‡Œƒ‡Œ‡‚Žˆ‹ƒ‡‡ƒz€|}Œƒ„‡Šˆ…Šƒ„Œ‡…Š~†…‡„„ЉˆŠŒ‹ˆ„‚ˆŠŽ…†ŠƒŒˆ†‘{…‚‰Š‰ƒy†„‰Œ„Œ…}‰Ž†Œ—ƒŠ†‚Ž‘Œ‡Š–‹€yŠ„‘‰€…}‚Œ‹‚‹‘…‡tƒ…‡…‰„„ƒ“|„ŽƒˆˆŠ††…ˆŠ†ƒ„€„Ї‘y†ƒ‡€‹„ˆ‰ˆ—ƒ~ƒ†€‡„„†ˆŠ†’ˆˆˆ•˜ˆƒŽ‡“††††‡†‘w•…““|ˆŠ‡‡“Œ…vˆ’|‹‡ˆ‚‰……‡‹…‰†…†„‚‘‚z–~‰…{ˆ†…Žˆ„„~‰~…ƒ„yƒŠ‚Ї‘zƒ‡Š~……‘‚~‚ŠŠŽ‰‹€ƒ†‘y}~“‰‘}xŽ„‡Šž‰Œƒ‚…~˜‡…†•‡†‚Š‚ŠŒŽo‰‰†‡~ur…|’‹z‰ƒŠ‡w“ˆŒˆ˜x‹voƒ’|‡z€‚ŽŒ‰q|‹Ž‘s‹Ž…Œ†Ž}„r”Šˆuy}‹|†––’……”„€ˆƒŠ‰Œ‹ƒ‚…Œqˆˆ‹„…‚Œ…‚wˆˆ~Ž‚’…’ˆ†ˆt–‹ŒŒ‡…ŽˆŒŠ‹“‰‹„„Ž€ƒŒ‘‰‚†Œ†…€€‚}Š„z‡—’…‹Š‹vy„Š‹‹‰‹|…wp…†‹Œ}‡z‰…‰‡†‹‘‰|‚Š‹’“‘‚ˆ˜€—~{~Œ€€‚„‹•–z‰Š…„ˆx˜‰Š‰•{…„‚~z†Šp„“…‡•†r‡z‡ƒ„†ƒˆƒ„ˆƒŒ„ŒŠ‹ŸyŠxt•Œ†‹…{ˆŽ‘‹Žnq‡Œr—“„ ‰w‰v‘†‡ƒ‚u}‰…ƒ‚Œ˜—‘‰ˆ‹|„~ƒ…‹‡”“–‡ƒ’“€v“‰ƒp•Љ‡ƒ•ކ”“‡…‹–}£y•’Ž‹Šˆ’‚‰‚ƒ˜‘ƒ‹›yˆ’…„~‡…„’“–†–„|ˆ|…z‹‡†˜’Š”€’u–†’‘‰„ˆ€}{‰‰p•…„‚€‡‘€Ž~‚‹Œ€ˆ‹‰Ž‹…‹‰€Š~…„y’€uŠˆ‰r‡ˆˆˆ‚ˆˆ}„Œˆ|†Š~†‹‘Ž˜†‹„‹Šˆˆ†„‹‹Ž†Œ‹Œ…Œ†‡‘…ƒˆ€ƒ’ˆ…Š‘‰”ŒŽ…•Š……–†‹Ž‰ˆŽ‰†‹‡‘Ž‚uŒŽ…‰|†–ˆ„†‘‡…–‹Œ„‰‹‰˜Š‡„ˆŠ‹†„ŠŽŽ†‹ˆ‚Œ’†Œ„†ˆˆŒŽŠ‡‡ˆ’ޅЇ“ˆ‰‰ƒŒ„—Ž–…Š…‡‘”™Ž‡Šy“’—…€ˆ„‡€†Š‰‹‰‰••’Š‹~}…ЋЋ…Ž“†‡Š“‡†„ŒŠ‹Š„‹Š€ŠŽ…Ž‹‹‘—vˆ„†p‘’‡‡Ž‚†Œ~Ž”‡s‹…„‡Ž‡˜Š‹‰‘Œ‹ˆ…Ž”‘ЅކƒŠ†Œ‰Œƒ€†|Ž”…‘Œ‘ŒŽˆ…‰™ŠƒŒ’Œ‹ŒŠ‡ƒŠ‚ˆŒˆu’‰‹Š{‰†„ˆ‹‰†Œ—ŽŒ‰‡„‚ޑމЂЇ‰‘‰–‰‹‡†…‰‹’Œ“ƒ‡‚†‡ŽŠˆ‰‡†…‰ŒŒ{€‰ˆ‰Š”•ŒŒ‰ˆˆˆ‰‹‡™…„ƒy–“”††Š†ˆ…‚ŠŒŽ‡Š—‰‰ˆŒ•’‡‹}ЇŒ”ކމˆ“‹…‰“z†‡„‡ŠŠ…†€‡’‹””‘‚x—‰ƒtŒ‰ˆˆˆƒ†‘ЉŒ‚Œ”‹‡ŽŠ‡ˆŒŠ•‡‹Œ‹Œƒ„ŒŽ‰‹…„‹‰zŠ‘ƒ~‚Ž“‚ŽŠ’Œ†ˆ„„‹€”Œ‹‘„‘•Š…ƒ€‘ŠŒ‰}†’‰x“‡ˆŒ}‡Œ…„‚‰‰‘‰ˆ•ˆ–‘„„~„’†Š†ˆ‡„|‰†Ž’†‘ˆ‚„’‹•……ˆŠ…“‹‹”ƒˆ…‡Š‡Š{Š‹ˆƒ‹ˆŒ‰„|Š‡ŠŽ˜„‰z›Ž‚Œ…‡ƒ„ˆ‰Ž‰ŒŠ‡ŒŠ…Œˆ‹€‡’†”‹‰‰‰‚’Š‹‰†‡‰‹’ŽŠ‘‚ŽŠ{’ŠŽ‹~•”ƒy‚†‰q“€‹ˆŠŠ„‘ŠŠ†ŒŒ†x‰ƒx…’ޑЖ‹“ŠŽ‹‰…„‹Ž›…‡‰‡†‰ˆ„|‘€‰•ƒ€’‡ˆ†”ŽŽ|Œš‹…‰Ž—„†‰ˆˆ‚Žˆˆ‘„s““Œyƒ•‚Œ‡Žˆ†‘’„”…‘†Œƒ†Ž•Š‹‡Š‹ƒˆŠ‰‹‹…‡ƒ‡Œ‰“ŒŒ‘‹ƒ…ˆ’ˆ‰‡ŒŒ•€ˆ‹•Œ’„‡‰‰Œ‘‹’†’‹Ž’…‡ŒŠŠ‡‰yŽ‘‹‡…‡†‹‡„‰ŠŽŒ‡Š†“†}‹–ƒ„“‡‘‘ˆ…ŠƒŒƒŠ‡’‰Œ‘Š~„Ž„ƒŒŠ‰‰z’wˆ‡†q……‰‰Ž‹’Œ‘‰†‡ˆŠ“‹‹•‡–މ…„ˆ‡‚”Š‰ŽŠ†ŽŒ‘~‰†•…„ˆˆ‰–†Œ’‡„™Œ‡‹‘‰–~ˆ}“†„ކ‘•ƒs—އˆ||•ˆ…Œˆ‚‘~•‚Œ‡†‘Š—Œˆ„„ˆŽ‡„‡†‹‰ˆŠŠ‹Š‘”“Œ‘‹~‹“‹‹”Š”‰†‘ˆŠŽ‹ˆŒŒ‚Œ†’’‰‰Ž†„ŽŽ‹Ž}Ž•ˆ„‰‰†„„„„ŒŽŒ†…˜ŒŒˆ‹|~‰Œ‡”‡„Ž‘ˆ…‹ŠšŒ†Œ‡}’‹‰„Œ‡‹Š†‹‚ƒx”z~Œƒˆ™†“…†ƒ•ˆ€Ž†€Š…‹ƒ{„€‹tŒ‘…†ˆ…uŠƒ„ƒ‹xƒ~ކƒ}‹ˆ™s‘{l|„‰‡‡r‡„ŒŒƒou“‡s’Œ’ƒ…‚Œ…ˆ‰€‡ŒŒ‡€o‰Š‹|†‹Š††šŠx~‰…ŒŠ…‹‹…ˆŽ€Œ„v—‹€‡†…ˆ‡u‘‹w„Š–‰ˆŠ€„~•“‡Œ“†‡Ž…‰Œ†ƒ†‰…މ“†ƒ”ˆ‡‹”„”ˆŒŠ…Št‰—І‡…Œ†x’ˆ‘…’‡Œ„‡x€„‰tŠˆŠ‰ŽyŒ‘„‰‹ƒŽw‹€}‘ˆ{‰’”zw‰lnˆ˜Šy‹ƒ‹Œ†ŽŒ„‹~o•ƒw–ˆv„ƒ|~ˆ˜Š‹Š‹€‘Š}…‰}™Š{Ž„‰„‘‡ˆ„€{Ž…‰‡…ˆŒ‹Š}†€t‰“s†ˆ†‹s‰†{•‚ŠŽŠƒ‘€†zŒ„ˆz~‹„lŠ›‰‚‚“–ƒ—ŠŒ‡|ƒ‹‹}‡ˆ†˜‰’‚”‡~€ƒ~‹‹ˆ‚xŠŽ‡€’€l‚}‰‡‘˜”u~{ƒ•~‹‘„|‹‡x‹—‹“†‹u„„y‡Ž‘qŠ”Š}~‡{ˆ‚ˆ†ƒ{}‚€{w{ŽŒŒ‡w~Š……ˆ”‡†„‰‡……‡…„‡ˆˆ‡†Ž†††Š†‡†ˆ‡…†††…ЄІ†…†ƒ†‡…‡†ƒ‡…‡††‡„„‡†„…†………„†‰„†„‡Œ…‡‡‡‡‡††…‡‰†‡…€„††‡†ƒ†‡„†„…†††„…†††‰†‡†………ˆ††‡†…†††‡†……†‡„††‡†…‡‡„†…†„†…†ˆƒ†††‡ƒ„††††„……†ˆ‡†……††…†‡…††…„ˆ†…†……†‡†††‡…†‡†‡‡†…†…‡‡……‡††…†‡…†………‡ˆ†‡†…‡ˆ…†…‡††Š„‡‡†‡†††‡…††‡‡†…††‡‡††††…†……†………™…’‰|ƒŽ˜Œ‰Œv€t…Œ‚‚Š˜Œ˜‡‹—•ƒƒ˜ƒq‡„{“ŽŠ}‹œˆ†Žƒ{ƒ™‡™ˆ€s†ˆ‹‹•†˜„…Š‘}ƒ†yŒ‰xŠŠr€†‘’‚’wu—†‚v†™x’v„Š|š‹‰’Ž‹Žv‡zŽ…€•‘u}«}‚{’„“‹—“Š…Š”’|…ƒ{ІŒ~’Žƒƒ—…“„„ššŠ|‹˜…~–•†›„ƒ’•‹Š–‹‹–ˆŠŽwŠ•…¨¥}—x“…uŒ‰’‚‰€Œ‹v–ˆ”yˆ}‘’–‡u{‹ƒ˜„ŽšiŠ~‚z•††“ƒ“‡†„ŒŽƒ|ˆ‡…Ž…„u{ƒ’‡‰•”“‘–}€ƒ’ˆŒ„†ŠŒ€„xˆ}“t…”‹…Ž‚wŠˆu‹‚r•ƒ”ŒŒŠ†‰Œ’’Ž“”tž„tŠŒ‡z‰{Œƒ•˜†‰mq‚…v„•‡‘ŽŠ‹…ŽzŠ‘ƒ‡}ŽŽ~‹ŠŒ•‚‰‘~……ˆŒ“€–Ž‹ŒŒ‹ƒŽ‰z‰‘zp‘Œ‡x‚„|t‘‘†ˆ’”‡„|›‹Ž”Œ•†”‹Žƒ™‰Œ|Œ‰’Šˆˆ‹‘‹…š“Ÿˆ‚‘‹zŽ~ˆzˆœ…Œˆ—‡‰v“–…Š”‘“ŠŽyr’zwŒ†‡‹{‡…‰~Žƒˆˆ…ˆ…†ƒ††…†…‡†‡‰††††ˆ…‡ˆ††……ˆ…‹††††…‡…„‡†ƒ…„†‰…‡†„…‡‡†…†……‡…„ˆˆƒ……„‹‰………ˆˆƒ………ˆ†ƒ†„…†‡†…†‡…‡‡‡†„…………†††‡†„ˆ…‡ˆ…†‡ˆ†…………†ˆ……Š„††‡…††…„†ƒ†…ˆ†‡†„…„……ˆ„‰†ˆ‡…††„†………ˆ†‡†…„ƒˆ†……†ƒŠ††‡‡‡‡…Ї‡…†‡……„‡†‚…†‡ˆˆ‡‰„††ƒ††‡‡†ƒˆ…†‡„‰†‚‰…ˆ„‡ˆ‚†‚‡„‡†‡‡††‡…ˆ†…„ˆ†‡†…‰ˆ‡††‰„……ˆ†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††‡††††††††††††…†††…‡††…†††††††††††‡††††††††††††††‡†††††††††††††…†††††††††…†††††††††††††††††††††††††††š„™€…}†ŽŠŠˆ††‹{Œ€„|”Œ€ŒŽŒœŒŽ–}‹—‹…ŒŽ…†‹Œ€’r’‹‰…ކuˆ‡‹y„{wމ’Љ‰Œ€—…Œ—rŽpƒ‡~ƒv„…xnt’~‹v™‹„ˆŒŠ’‘‡y‡ˆ‰|†ˆŒ…ŽŒƒ‚‡‰ˆ‘„•‹‡ŠˆŠwƒ–~…ˆŽ€…y…~~“”’—Š‘Œv–ŽŽˆŽ‹•Š’Ž™•”|„’‘‘ƒŒ’†‡Ž‘‘ƒŒƒ†–†‡tˆŒ…ˆ“’…Š}|‘…—ŒŠ–‰›‰Šˆ„‡qr‚’~Œ€Œ‹•ˆ‰•‘…‹›“Œ‰‡‚‡‡ƒ”{„}–Œ‹{{v„˜ŒŒ‘Œˆ}‹˜‰ƒ”“‡}Š„‚„†“x’Š„‹†t‡‚…ƒ‡‡|{‰’‰‹„€„„Œ„‘s™t—…p‰‡ƒ‡mŠ…Œ‡„•ot“‰ˆsŒ€‚Š‹‹y†ˆƒŽ€n‰†ŒƒŠˆ’ˆ”ƒŽ…„…ŠŠ}„‘‹‰‚‡‰‰y——{xŒ„‘‡v‡•uƒ‡‹‘†{„y–“‰Š–ˆŒ‹ƒ‰…‡ŽŠ…„†ŽŒˆŽŠ‹“‰ŒtƒŒŠpƒ””„‰‡”~ˆzšƒŒ‰‰‹‘†Š‰zzˆŠt‹ˆ‰„yŒz‘‰…Šˆˆr„ƒjb‚ƒ˜‰q‘„œ„ƒƒˆƒ‚’…‚w‡‡ˆ’sw_ƒ„cŠ}†ƒ—“y”„‘Ž…Œ‰……h€Š“ŽpŽŠ™˜“†Šž€‘ˆ} ~z”|‰‰ˆ‘ ••ŒyŸ„|„Šl…t‚v}œ†œ­xl—˜z‰‰’{˜€©—‰Œ‹ŒˆˆŒ‘w†w~|‡mƒy{œ‚ƒ¢‚sƒ}…h{‚~„wy˜•†zk—ˆ‡wˆŽ•Š˜ƒ†…†v‚ƒƒ’u’œl“ˆŸ•…v}x€kt’}s}•s€—†˜ƒ•o‘oz”…œ}“†ˆ–{ŒŠ}•ƒ—Œiyƒ…„\{ŒvŠ‹†‡ˆˆˆŒ‡’Œˆ‚‘ˆˆ†‡“yƒ‡€t‹‹…ˆˆ‰†…ˆ‰‡‚…ƒ‰ˆˆŠ‹„•‰††Ž‹€‰ˆ€ƒ‰‘‡‡ˆˆŒ…‰Œ‚{’{‹Ž†ˆ‹‘’‹Ž’‡„ƒ”‡‚Š‹‘†Œ‘Žˆ„‡†‹“…x‘“‹~‹}†Š˜€‚‚•…‹”‰ƒzˆ~‡Ž‰”‹†‡„Œ‹‹ˆ‘‹}‹Œ‡…ˆ”‹‚„‰ˆ…Š‹ŽˆŽ‹‰ŠŽŽŠŒ†‹‘„Œ‡ˆˆŽ‘ŠŠ…’…††—ˆ“‰ˆ€–Š‘‹ƒ‰‹…‹‡‹‹—ˆŠ‹‰—Š~††‹Œ€Ž‹ƒ‹‹–…›vyxŽŒšˆ“‰†w’Š}“…†‡}‹‹“ŠŽ•Œ}…ކޑ‰†‰‡|’…‹ˆŠŽŠ“”‡~ž‡{†‘ˆ‹„‚v”ƒ–Œ‘‘’‚ƒƒš€…y’ŠŠ€w‰ˆ‘Œ~ry‰‰w‚Ž„‡†’Š‚ž–‹’—ƒ…€†‘‡~ˆ‰‘ˆu¤|‰‹”€‰Š«“ˆš‡†}‹ƒ}„ƒ”€}x„ˆrŒŠ‰›txŠ˜¹‹…’™•u‡ ˜„•ˆˆ”š£–w•Љ‡”‘Œ€}ƒ•‡„…š~ŽŽˆu‹‹‰t€ž…ˆˆ†‹Œˆ—‹šzxƒ—™‡†~qwyƒ•™h‰ˆˆŠ€‡…„u‘„Ž‚|†‹}ƒŠzmƒ‰ˆ…vu‰‰…ˆ„}{—t‹Ž{‚ˆ{q‚ˆŠƒ†•Ž‚ˆ}w‰„ƒŒzŠˆ…z‹‚…Ž|z‘ˆˆŽ}‚€ƒ‹o€Žƒ‡Œˆ}…ƒŽŠ„{„…•t…„‰‚„Ž~‹‰„‚Žz…€Œ†zŒ{Š…‰™„}ˆ…„ˆ‚p‹ry‹|}†‚ƒ{‹o~ƒ…v…€„~ƒŠ„€‰…„‡„†…~Œ~}—‡Ž‡o…„„ˆŒzy}ƒu†ˆx‚…Œ–{‰Šx‹rއŒ„ŒŽy€~…ƒ}zƒƒ‚~‚‚€‘yu„Š~‚„Œy‡}”’„‰‹€„ŒŠŒ’ŽŒ††ŠŠˆ‰šŠ~Ž“~x‹‰ˆr‰‰ƒ†‹“~‰‘‘„}…‡’†ŽŒ’‘ˆ”‰ŒŒ’†‡‰…‚‚‹‹ˆŠ–v‡‹Ž€}q‘‡–‡…‰‹~…”ƒ‰’—‹Š•‡Œ‰‹•†Ž}‘–†Š†’ˆt“ˆŒ{Š’€Œ‡€†}‡w•ˆ‹Ž‚ˆ€›‡‚‘‹‘€ˆŽŒ‰††‡‰‹’”Ž”‹‰“Ž‘ˆ“„Ž…Š—‹ƒ†ˆŒ‰„ˆ‰„‰–ŽŽ‰Ž•|‹”ІŒ„‰‰ƒ†ƒŠ‰ŽŠˆ‘‹ˆƒ‡|}Œ’‰†‹†Ž‡~ƒŽ{‚…–‚†ƒ„‡ƒ‰q‚|j„„Œ‚uv‡ˆ„†‘ˆ…„{•v{…ˆƒˆ{s‡…’‹‘“‡ˆ‡‚}Œ›‚Š~ˆŒ~€‰}Šˆ‡ˆ‹‡‹‹ƒ}„‘w…‚ˆ†~„…†…‰‡‡y„Œˆu}‹ƒ‚Œ‡š€„…‰…‚}|ˆŽŒ~…ˆ‡“y„€‹‰zlŠƒ‡‰ƒ{…„‡€Šuˆ€m‡„{ƒ‡~„“Œ}Іˆ†Š„€Š†„ˆ…g|‘|”}xt…kˆŽˆŠ†ƒ†Žx|†‹}€€‰~‡€‡{{ˆˆŠƒ…y…„‰‹…€‚~‚|‡…„‰…~}„z|ŠxŠ„~“‹„€”’Š|ŒŽš}Ž”ŒŽƒŒƒ‹Œ‘†zš—€t†Œˆ……ˆj†‹ˆŒ…ŠŒ’‡p…‹˜‰‹”“ƒ•rŠur|„l”“¡„œ™…’vŽyx’‹…‘—}wŸ ƒ€“y„•‹Ž‘Š™…“•~z”ˆœ‡Žv‰”w‡‹€“‡‹…tˆ…ˆqˆ¡¦‹°Œ‹‰˜~…‘t›‡‹oˆw~›™{‘…¥§Š}…qvƒŒŠ‹–Œ—ˆ‚†˜‡u‰™“Ž˜”T|–€«‚—Š}ŽŽŠ§Ž‘‹šŠŽ~oˆˆŠ ˆ¥ƒ‹Š“u›—…z‹ŽŽ‘•o‡‡‰™m‰€…ƒ~…œ¥‡†…Œ€ˆ††‹ˆ†€ƒ†‡†…‡†‰†ˆ‡‰‡Œ‡††…†…‡…‡‡†„‡††…†……І‡…†ƒ†Š…„†…‡†……†…„††‡……ˆ…†…„‡†…††…‡†††ˆ…„…†…І……††…†…†…†„†…†…††…†„†……†‡€††‡‡†……†††††„‡„†‡††ˆ†††‡‚††‡†††„‡††‡†……†††††††††††………Š…††…††„‡……†††‡‡‡‡†‡†††…†††††††††…‡‡††…†…††††…………†…†‰††††…††††……††ƒˆ††…††„††……††–ŽŒ‰”|ŒŠŠˆŠ‹ŒŽ‰~…†…Œ’ƒz…„uІˆ„€‰‡‹~‰”‰‚Ž‹‹‡ŠŠ‰“‡Œ“‚‹Œ‘ˆ„†Ž‰…‹”‰ƒ|‰€ˆ“Ї‹‚Œ’…„ŽŒ€ŒŒ‰Œ‰‘‰…ˆŽ…‰…‡“Žv•€|‘|‰Œ‚‚‡‹‡†‹‡”†›‚‰ƒ…–ˆ’Œ†…‰Ž‹Œ‰…‰„Ž˜ƒ‰‰Œ–‹‰‘‰…‘…”„Š‘†……yЇ‰ˆ‚†”ŠƒŠ‹‡‹’Œ†{…Œ‹}š{‡†{Ž—ƒ‹‹ƒ‰†…ˆŠŽŠ‡Š‚‹…“Šˆ€Œ†‚™‡Œ€‡‰ˆ†ŒŒŠ„’’‘ŽŠŽ‡€‹‡Š~|{‹†||ˆƒ’—ƒ‰ˆƒˆ†ƒ˜‚‚z„‡‚{„ˆŽrˆŽŠ€yŒ‹rŠr‚‡‰‡ƒˆŠƒˆ‡‡…Љ†›p’un‰‚Šˆ‡u‡”‹ŒˆnzІŽq™ŠŒ€~†……ˆ†Œ‚†v‘€…{‡‰ˆ“Œ‹‚ƒ~…‚Œƒ~‹Œ‹ˆ„Žˆ…r‚}tˆ„Œ‹†xŒš‡„‰“Œ†ŠŠ}Ž‘’‰•Ž’‘‚†…„‰Œ‰†‹‡r‹‰Ž„ˆ•ƒƒ„‘…˜‹„‡v‡w‰˜ŒŽŠ’ƒ…x“…‹‹Œ‡‡‚}wƒŠrˆˆ†ƒƒ‰z“|Œ…ˆ”„ˆ‹xƒ“•‡†Šˆ‡†…†’}}”ŠŠ{w‚€‹•„Ž„z™‹…‹ƒƒ†‚‡’x‘Š‹ˆ‘„t„š‰‹Œr~Žt‰…Œ“ˆo”tŒ€q‡‰}†ŠsŒކŠqw‘†rŠ‘ƒ‘€~‚~•‡‡‘Žƒwˆ†‹…އ‰ˆ“‰†ƒˆ”†ƒ‹„†‘‰†ˆ‹‹•v’†ˆ†‡„Ž€ˆ‹†•‡‚‚‘‹‘†Ž…‘ŠŠŠ‹…’…‹’Œ’…„ŽŽ‡‚Š}ƒ“‰t€‚…Їބބ{”†ŒˆŠ…‹Œ€}‡€wŒ††Ž|ŠwŠŠ‚ˆ‚‰†~‰Š„€††‰‰…‡……†Œ††…ˆ……†††‡‰ˆ†ƒ…‰„†ˆ…„…‡†…‡†‚…Š…ˆ†„…Œ‰‡†„‡†‡„†…ˆƒ‡„…‡ˆ…††„‡„‰ˆ…‹††††‚…†…††ˆ…‡†…†‡€‡„††††……‰†††††……†…ˆ…††‡‰ˆ‡†…‡‡†‡††„‡ˆ„††††††‡‹‡ƒ‡‡‡†‡†…††„……†…‡…„‡ƒ†‡†‡…„ƒ‡‰†…‡„††„†‡„ˆ†„†‡†ˆˆ†‡†„†ˆ†…††‡„‡„…‡†††ˆ†„‰‡†…‡…‡…„…†…‡†…‡†…‡………††††‡…††…†ˆ…†ƒ†„††‡„‹ˆƒ}€‰Š‡†tŠ˜…Šƒ…zxˆ‚‰w…ˆ‹˜Š••oz{‹y…y’†‰x{ŒŠ‰y‡…“‡‘‡|—Œ…Ž|‹†”Œˆ“˜ˆ‡—x…}|ƒ”€’„”Ž‚Œx‘…Œz‰„‡€‡|‚‹–˜‰}Ž‹yˆ‰‹x’šwxŽŠ‡†”‡’Œ“‹Œ‡†’’}ŽŽ|‡†Œ“‡‰‚’€†~“ƒŒŠšˆ–‡‡ŸŠ‰”Œ„‰‰ŽŠŠ‚Œ•˜ŒŒŽ‹ƒˆ’„|™ˆ‘ˆuƒ‚‰Œ‡~†‚‘ŒŠ•‹“{€’‚}†Š†‰Œ}˜“‰ˆŠ…‰‰‰~ŠŒ‡„‹Š‡ƒ‘Š•‰‚‘€w„‰…r†ˆ…ˆ‰„…‹‡‹}Ž‹‡‰‡ŠŠˆ‘Œ‹–ˆŒ‰‚ˆ‹Š‚„†Žˆˆ‹Š‰Š‰‡Žƒ~Š~ˆ’‡ˆŠ…‹“…Š’Œˆ•‹ˆ‰Ž“ƒ‹ƒŽ‹Š‹‰ˆŽ’„u”ŒŠ|ˆ”†‡ˆŠ—„ƒŽ–…ˆ„‡ƒ††”Ž‹‰…ˆŒ‰†ŒŽ‹…Œ„ˆ…†ŠŽŒŒŽŽƒ‰Œ‹Š”‰—†‰„‹‹Žˆ„‹ˆŠŒˆ‰’‹’‹”‡‹‘Ž‹ˆŽ‹{•–ˆ‹Š…ˆ‡ŠŠ„‹‘ދЇˆ“ˆŒ‹†…~ˆ‘‰„Ї‡‹‡•ƒ–„„~”“…ƒ‘…Š‹ˆƒ’‡ˆ|œ‰Ž|„‰‘•Ž›™y‚z—‹’y„Š…ˆ„{vˆŒr…™‡‘Š–†t†‡ƒ~–sˆ‘“x“…Šˆ–Ž“yxš‡q‹ƒ†z“~–™{ot”…ƒvƒ“ŽŠ‡~ˆyŽ…y••ˆ†|ˆ†Ž‡‘|‡Š•Ž‚‡‰ŠŽ†‹‘ŠŠŽ‹Ž“yžŽyŒ„Ž„~‚ƒ{Œ…ŽŒŒŒ‹‰‚‡ŒŽ‰Š•}’„Œ‘‹Šƒ‡‘‹Š†“”“‹„|Š~„Œ’u}‡…‰‘‘Œ‘…x–“‰ŒŒ“ˆ…ƒy‰tŽŠ‹Š†‚…†‡…ˆ…ƒŠŠƒ{”’‰‰‰z‡‚…‚xŠŒƒŠˆ‡–ŠŒ–€ˆ‘‚†Œ„}‡‰…u}ˆŒ“†w…—ˆ…Š~wƒƒ‡‘†r|‹“‹ˆ‘„‡Šˆr—|—ˆy‰‚v‹•’ˆ”pt“ˆˆv„‘Œ|‰‰‹u’‡ˆ‰‡qŒƒ’…‚ŠŒˆ‘yuƒ‹ŽŒ‹‘‹’”Œ‹†’‡y„‡‡„’Œˆ˜|„ˆ}ƒ‚‹…𓆋|›‘‹Ž…’„Ž‘ˆ—“‹†ˆ}ŽŠ†|•€Šˆ‚žŒ‘‹“„Š…‘r|•††ŽŒ‚†‰|œŒ„‰Š“„†‚u‰t“„ˆˆrƒ€ƒ‡ƒŠŠ’o–‡’‰…އ~‹†€‰ŠŽ}l††xˆ}x€{ˆ‡•|ŒzpžzˆŠ|†”‚u|ƒŽˆ}’’†|†‹|{{}Š‹}‡}Š€ˆx€n‘}ŒŽˆƒ‚}v„|z‰‚r€‰ˆ‚u…€Žm‹}‡€‚Ž‹~ŒwŒƒ‡„ŠŒŽ‰—˜’zo|{kƒe{‡’ƒt‡„}‹t‚‚˜}~Œ{ŠxŠ„zƒ‹ƒŠ‡z‚}yŽx~›†Šƒ†……ŽŠuxz~Ž„ƒ|y‡y‡ƒ‚Œ‰Œv‰„ˆƒ{ƒŒ…ˆŽ‡zŒ~’t{ƒz‹…ƒƒ„‰tІ|s‚Œ„w€Š{•™ƒ…І‰…ŒŠŠ‚‰‹Š‚|‰‹“‹”–”x‡Œˆs’ˆ‹Œ“ŒŠ„ˆ~•‹ŽŠ…ŽˆŒ‰’ЉŒ•ˆŽ†Ž—Œˆ’‚Œˆ‰†Žuˆ‹Š~|x}’‚Œ’‘‚‹‰’‰‡Ž–‰ŠŽ‹’Š‘……ˆ{‡’‰‰ˆ‡‡Šˆw–‹“ˆ}ŠŽƒ††…ƒˆ‰”†‡‚~’ŽŽŽ‹Š‰ƒˆˆ…‹‰™}Š„‡‰”Š‹‰‰‡ŽŒ†Ž‚‰…‹‰Œw”ƒ‚‡‹‹„ŒŒ„’‰Œ‰•ƒŽ‡…Œy‘ЉŒƒ‹Š‰†“Œ‘†ŒŠŒŒ’‰‹~’›ˆ’Œ‹††‚††Ž‰……Žˆ‡‰›‡‡{Ž•…–‰…“‚x‡‹†rŒŠ†ˆ†‹‚“ƒ…|ˆ‡„Ї‹…‹‘Š˜‰‹‰†Ž†‰„„|“‰ƒ‰‹yˆ‹€€s‡’‰‡‡—€…”‡†‘ŠŒ•‰†‹‰‘ˆ‹†~‰‹…’‡uŒŠƒŒz‘‡‰†‚€†‘Ž˜ŒŠ‰ˆ…ˆ–†”‹‹†Ž„…‰Š–‰”‰‹„†Œ‰Œ•„ŠŒ‡Ž†‹Ž‡‰{Œ‰‰ŒŽ…‘ЇƒŒ‹Œ‹‰‰‘‡…„ŽŽ“•ˆˆw‘˜’‡‡‡‡Š†ƒŒ’‰†“‰‰†’‹…‹~…ˆ”‹‹„ˆŒ‡Š€•“‘x‚ƒ‹‡ŠŠt‘v‚†‚ww…‹‚|‚’ˆœ‹v}‹€ƒ“ˆ„ƒŠts‹‚‡}ˆ‰|Œ}}Œ‘ƒ…r‹Š“„›˜„•‚Œ‡…Žžƒx–„„‡‹t‰“‘‰Š|v“‰‰~‡”‹‚zŒ–ƒˆŠ‡†Š——†ƒs‹˜Œvƒ‰ƒ„‰ˆq˜—„‹ˆ–•„ˆƒ’x~–ˆX‘”ƒ†‡“„‘}‘‰Š•—ˆŽ‚”•’ŠŒ˜‰‹…•‹ˆŒ’‹‰|ƒƒ|’‹†”‚Š„~Ї™~“„—~“Ž„n‹Šw“”{|€†–‹‰Š‘Œq||‚ƒ‡ˆ…ˆ†ŒŽ‹‹Š€}‹Šˆ“‘€Ž}€ˆ|z‰˜„z„‰ˆ”}Š‹‡‡|‚“‰ŒŠ”Šy…‚†™Ž’ІЇ†“Žx…”›••€|{‡ˆ•˜‰„‘w|„|ˆ‚…{z…‹”““ƒ‚{z„}Ž…„™~…‡‹‹‡‹’Šy‘“…’‹‹Œ’‡qŽƒ‹}{˜Šˆ‹„………Œ‡x™‰€‚…˜{—‡ŽŠ‹—„“‹ˆ‡‹”‹‘†††ˆz“}sŠŒƒ’“‹™Ž‹’Œˆ…‡ˆ{Œ†“‰‚zƒ…|†‹‚†‚Ž„’……އŠ~{‘„†€†‘„…}‚“ƒ‘Š™‚ƒ¸zH†…ŠO‹ƒ†‘‚ˆ‚‹‹‡~މޖw‹‰ƒ€ƒƒ…‡€”Žx’§Ž‰‚‚’•ƒˆ~ˆ†t‚—‚’Žx˜€‚šwy’’†¥ˆ­vŽe—ez„„}|}Ž{s…‚——u‡w‡†›x€—…}{m~x“rƒ€Š”w†”ˆx…ŠŽ‰–…‘t¦˜v|le”{t}m€f€Žƒ–ž‰²k†˜¢Œ…’˜„‡«ž¦Ž‡ª‰gy“‹lgfƒ™}„zƒolqƒsƒ‡fŽˆ‚‡‰šu†††u…}ž‰}“‡„†…Œw~w†|xpŽz©ˆ[qš‹r˜x‡”‡‹‚“ˆ…ˆ‹ŠŒ‚Š‹…‰‘‰‡Œ’”y’ˆt‡†‡‡ˆ„„ŠŠ‹‰ˆŽ•…ŠŽ†‚ˆˆŠŽŒ˜‡Œ‰…‹€‚„„‰‰ˆƒˆŠŒ‰…“ˆŽ““•Š”‡Ž‹‡‰—Œ‡ˆŽ•ˆŽŒ‹€‡“‡Š‡}‰Ž“…x‹…Œ}†Œ‰…†Š…•‰”ŠŒ‡ˆ~„‹‡ŒŠƒ‡|‰„€ŒŽ‘†„ŠŽˆ‹‚†ŽŠ”…‹†……‚•‹ŒŠŽŠŒˆŽ‹‡‘”…“މ…ŒŒ„Œ‹…Œƒ—ЕކŒ|“–ƒ†…‡Ž‡ŠŠˆ‘ЇЋ‹ˆ‰Š~„Œ‰’ŽŠ‚ކˆ†”„…‡‡~ˆ†Œ‚|ˆ‚z‚“ŠŒŒ€„†„†”‚ˆ‡ˆ‡„‹…z‚Œzˆ„‚‰‡€–Œ“‡…‹…‚•w†ŒŠ—†††‡Œ”Œ}‡‘s†Œ™Š‰ƒ†ˆ}€…~Œ|‘†††ˆ†u€ƒ‹Ž•‚~„˜‹‡€‰Œ„‹…†…Š„€‚‚ŒxŒ{Œ{qŒ„ƒ‡“Ž˜‡•ƒ”z…–’…œw}v…—‹r‡~š€ƒ‚sƒ„~}€ƒ‹ˆx„Œz’pv€”x‚š„…†‘–„€Žšw…yw“Š–…~І‰~ˆ„„z’„˜Š‰Ž›…††~{ˆŽ}ŒŒš“††††††††…††…†††‡††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††„…‹ƒ…††‰‡†……††††‡†ˆ††……„†ˆ‡†ƒ…†††‡ˆ†††††††…†‡††††…‡‹†‡……†††„††…†††Š†……†††††††Œ††…††††„†††ˆ††…†…†‡†…†…„†…†††††††††………††ˆˆ†††Š†††††††„†…†††…††ˆ……††ƒ†…††††††††††††††††††††††‡†††ˆ†††††††‡†††…††…†††††††††††††††††…††††††‡††††††‰…†…††††††……†††…†††…††††††…††††…†Š“‡ow†ˆŒ‹™Ž‡Œ‡Š„…‡‚ˆ‹Ššz’ˆvv›Š—‘ˆ…•«†‰Ž‡uŒƒŠ‰“‡•‚Œ|z‰’ƒš…‹w…‡~‘Ž~’o†z•t‹‘€”‹Œ‹Žž”’‡~z‹‡y‰ˆŠ‹˜}y‘t˜“š}‰Šw’t˜ˆ‹‚~‘~|‹ŽŠ”Œ‚’{‡v†‰}Š‹Œp‰“…z‹~šˆ™€’”}Š™‚’|~kŒzŒ“w”‹}Œ’•‹˜’ІƒŒ„„‡ˆ’“…Ž……ƒ–€†o„šxŸ†‚•|‹‘‡‘€†€™ƒ}}¥‰}‡‚„œv~…ƒ„…ˆ’’„„’Š‰ŠŽŒ‡†ƒ‹Žƒ‡‘‰‹ˆ‰™‚s†‡qŽ„‹Œƒ…„‘……ƒŒ‘‘ŠwŠ€†ˆŽŽŒ™‰Š…‰„‰ƒ‰–Љ„’‹‹‹ˆˆŠƒ~†“…Ї‹“‹‹ˆ‡ˆ”‹‡ˆ‹ŽŒ•‡Š~Œ““ŠŠz‰Š‘†v“Žzˆ’„…„”‰…‡‡‡–ŒŠ…‰ƒ‰…•ŒŠˆ„ˆ‹‰†™“‰„…‡‰zЕГ‹}„‰ˆŒ‘†‰…‰‘ˆ„ˆŽƒzŒ„‹““‹“ˆŒ‹—‰—€‹ˆ~—ˆ•‡ˆŠˆ‹Œ‹‡‰‘„•‹‘„“Œ†ƒ}‹‘ˆ…Š„‘‹Œ’‹‘†††‰‰ƒ††‡†††…††‡†††…†‡†††…ˆ‡†‡‡ˆ…†††……†††††…†ˆ†‡………‡†††††††……††…†…†‡†††……†††††…††††…†††‡†††‡†…††ƒ‡††…†‡‰†‡††††††††…†††††„…†††ˆ††‡††††‡†††††††‡†‡†††„††††††††††††††††††††††††‡†††ˆ…†‡†††„††††††††††††…‡††††††††‡†††††††††††††††…‡††††††††††††††††‡††‡†††††…†††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††‡††††††††‡†††††††††††…††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††‡†˜‡ŽŠ{—‘‰ˆ‡–‹}†Š|”““~‡‡‰‰–‘‰™“‚Š˜Œ††x„‰„‡…‚Š‘sŽŒŒ…‚zŒ†€Œu‡’„‰Œ}‹‚Œ‰ˆ‚–w“ƒq‚ƒˆŠ‹m‰ƒpp—ˆŠt‰†|‡ŒŒ}“†„‘–q•ƒ’‹‹ŒŽ“€ˆ~†ŽŽ‰„ŽŽŒ’y“||Š…‰‡ƒ|~t}’‹Š‘‡zt””ˆ’Ž‹”Œ˜‡˜‹”ŒŠ…ˆŽ’€‰†ƒ…Š…††|Ž›„p‰ŒŠ€‡ˆ”…€–‚”…Žˆ‘‰Š’oƒŠƒx‹‡‘{zˆ……‹‡…†…††††††‡†††‡††‡††††††††††…††††††††‡†††††††…†††††††‡††…††††††††††††ˆ††††††††††††††……††††††††††††…††††††…†…††††††††††††††‡†††††††††‡††††††…†††††††††††††††††††††††††††††††††…††††††††††††††††††††‡…†††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††‘v‡ŒŠŠwŽ‚{€wƒ‰Ž…{v~ƒ‰‰ˆ‡„†‹y‚z„Œ—‘w…}ƒ–ŒœŒŠ„‚Љ‡x“Ž‘ƒ…|†‹˜”ˆˆ…‘‹uˆ{•€†……|‰…‘ˆ„|•{‹}Œ…ŽŒyƒ†‰“ƒ•†€’‘†}‡’…‰‘І‡“ˆ…q…‰‰wx”‚|‘~{‰ˆŽ†…w•}}‰Šƒ•‰‘„ˆ‰„’ˆ‚†ŠŠŽ‘Š•ƒƒ“ƒ}‹‰{{y‹‚Œ‡—ŒŠ•€‚ŠŽ†|މ„|~„‚x‰€Œ††‰”„€„‰‰€ƒƒ‹Œ‰€„‡„†‡„‡‘™ˆŽˆ‡…’’Šˆ…މ‰x“ƒ‚yˆ’Šˆ’Ž—‰‹›”{„“‹Ž†}~ˆ‡†u…ŒŽ†xƒ˜‹‹†x‚‡‚‰‰‡sˆ‡Ž…“ƒ†’‡ƒ™|‘†t‰ƒ…‹qŠ‘ƒŽqu’Œ…vƒ•‰~†ˆz…“Š…ˆw…Œ‰†‡Ž’ƒŽˆ„‹Šƒ“‹Œ‡Ž“{’‰‡z‘‹Œ„„}‰‹„‰ˆ””‡‹}•’Œ‰˜~Ž„†“Œ‡˜ƒŒŒƒ~Їˆ’’”ŠŠ‡z‡“ŠpŠŠŒŠ†Œ”w—Š’ˆ…އ„y}Ž€{–„ŒŒ|‡‚‰Žˆƒ„Ї‡Šˆ…‡’„|ƒŠ‚ƒˆ“‰ŠŒŽ’†r‹ˆ„pˆ‚…‡ƒ…‡ŠˆŠ‘Œ}‡Šˆ“‹ŠŠ•‰Œ…‡‹…‰‰„x‚‹‡ˆ‹‹†‘…‰Œ‰ƒ€ƒ“€ŽŠ‰‰š–†Œ‘‰ŽŠ“‹‰Œ…—ƒ†‡Š‡‡ˆ‰Ž…t‹“Š~‰Ž†Š‘†ƒ†’‰ˆ–Œ‚…ƒ{ƒ††ŽŽˆ‡|‰†‰ˆ“‡„ŠŽ†ˆ‘Š‘Œ…‚‰‡Š‹‰Œ‹‚‡Œ•‹‡†„ŒŽƒŒŠ…‡‡Š’’އ‰Š‹ˆŒ‰™‰’ކ†™Œ’…‡†‰ƒŒ†„Ї•ƒ‡‡ˆ“††Œ†‘І–‚‘‡‡”Œ•”‡…†ƒ~‹‹‹ŒŠŠ‘„—}|•~Œ}{yˆ’™€Žˆ‰‰€šŠ‹‹—…ˆ}„„€‹‡”x’…‰†r…Œƒ‚†yŠ‹Œ€ŠŽ€†‘{˜y…zt•™Š‹‚u…„}qu€Šrˆ•w’„‘ŽzމŒ‹ŠŽ‚t„‡‡}‡‰‰‰‡ˆ…ƒ~މ‚‡„‡‘š‹ŒˆŽ‘‡t‘v‹ŠŒƒ„‹•y‡Ž—Š„ƒ~‘•‹‚Ї’Œˆ„‡Ž”‘†„‚ˆŽ‘‰‡…‰€ŽŽ“ƒ{ˆˆ€rˆ~Ž…ƒ“‹€|“ƒ‘ŽŒŠ…Š‘‚…ˆq•„‡Š~‰{…‹‘€‰‚‚˜‚žˆ™“g„”’…ˆ˜‰©—›„‰„sw‘‡€ Š|“–‡›˜yЉ…Œ ~ƒŠŒ…”އ{†r“†tŽ‹ˆt€”ˆ{t…ƒ}—x…ŒŽ‘™Œ˜Œˆ€}‡†”†‚‘„‚…•ŒŒ—ŽŒoš}”Ž—ƒ|{Ž‹Œ“p‰‡‹‡†ˆn”„…„Љ€ž˜x¢—y„‡˜œŠ˜‰txœ”ކ‰‘{—}ˆ–‹yƒt{‡~˜”…‘Ž—–„‰’™—y{†t›† nv‡’f„Š~Š•„†™yqŠx‹„z…Ÿ“‚}‹…‘ž–š‘‚|ˆˆ…‡†‚tˆ‹•‡wk{ƒ}€z~Š„‹•І†…ŒuŠŒ}ކŒ‡|‚†Š‡‚‹†Žˆ|‹ƒ…‡~ˆ‡‡…‰„ˆƒ{€Œ€‰“„Žˆ“Šƒ}†Š‡‚……Œ‹„~ƒ†s‚†Œ{‰ˆŠŽ†Œ„‚‘…Ž‚‚„~‰€€ŒŒ‹|…ŠŠŠˆ“ˆ†Šx‡ˆw‘‡ƒŽ„…ƒ‡‰|†‚Ÿ‰|‹†“~‰‚•‰‚……„€}‚”ˆ}~ƒ‡‡{ŠŠ{„ƒ€x†‚„†’‰–„“‚}‡v…‰„ŒŠ”„Œ‚|ƒ”—‚Š‹‹Š…†}ŠˆŠŠŽoŒƒ…‘~‰…††ˆŠŠ‘’€‘|˜‰|‡Žˆ‹€‰„“…ˆy“ƒ~‰”ŠŠ—ˆ“‚ƒ—†„‰ˆ‚Œ‚}y„‚Žt‡‘Œ‹~އx‹‚‰Šv…ˆ€ˆ†ˆ’‘Ž„šz”‰t~†~Œ€•šy•os„Žv–€†…‹ƒ‡|ˆ‰‡‰wŽ‹‰…‚ƒ‘{ˆ|ˆˆŠ…ŒŽŠŒŒƒŒ~‰xv‹ƒŒŒ†€‡…wx’‰„Œ‘Šƒ}™Žˆ˜—„“‰ˆŠ‹›Œ„Œ‚ŽŒŠŠˆ‰†„—‘“އދ~އŠtƒ–ЇŒ‡–ˆ‘‰w“‘”„ŒŽŒˆ”‚s„sˆ‹‡ˆ‡vˆŠ‰„•w‡‚ƒ{ދޅ‰•ƒ’†„€y|~…†…—vŽ‚Œ…ƒpœˆƒ‹ƒƒŠƒƒŽ~Ž{‘’o†‹„ˆ‘‡u‡Œ’‰||ƒ‰‡†Œ‹xކšy‰zt‘‹€“†{‚~”•‹osŠ}rŒ™x—z~„ŽŠ“ŠŽ‰sˆ‡‰~‰‚Žˆ}„p‹ŠŒ“Šˆ“‡…‹”…t‰y……ˆsŒˆ•“}ƒ”›…ˆŒ‘€™‘”„Œ†—•ІˆŠœ’„ƒ…†€‡‰Œ’•—{‹„Š‹Šzw‘ŒŠ„’Œ‰z}—‡‹Ž‚“„‚‡m‰Š‡~†x‘”‚Œ‡†Œ‚ƒ„ŠŠ‰ŽˆŽˆ‘•Œ’“•‚w„‡ŠsŒ…ŽŠŽŠ‚ŠŠ€‡…’ˆˆˆ‰’Œˆ˜‰‡‹{ŒŒŠ‡†€‹‰‡‰ˆ‹‰Š‡‹{Ž”€–ƒ‹‘‹–Žˆ’Œ–˜ˆˆˆŠ‹Ž‘‡‰Ž„Ž“y„‹‡Žu—‰Œ~ˆ‰…ˆŒ…ŠˆŽ”ˆ††††ŒŽŠ‹‡‰ŽŽŠ‹‰„‰…’~ˆ}ˆ…ŽŠ‹Ž‚ˆˆƒˆ†’‰“…‰‰†‘†‰‰‹z…Ž‹‚ŽŒ‘‰ˆŠ…„ŒŠ‡‰y•ˆ‹Š†ˆ‰–ŒŠŠ–Ž‰Šˆ†‘ƒ’’‡Ž}‹•‹•ІŠ}‡Œ‹‰ˆv’|€•„~v•ƒ‡“‡—u€ƒŠjwt‰}Љˆ—††’…ˆŽ€—‹zŠ€ƒ`wƒ“”“…ž‹|xd‘iŠšz‘sœŽ‰’‡w›‘“}vŒŠh†“•k’~„”rwŽ–…qs‹„™mŽŠu –t’Š˜‚š‰p†’tizŠtuw†‚€t†x‰¡n{uyp~wz£ko€ŠˆwŽ„‡™”‰•cqŽ‘ˆvy|zŠsŠ‹Œœ–v……~–‰œŸŠ†h†ž}¨“‚t›|…„“xƒ—Š{vvy„Šƒo†pr“Ž’›…Œ~}Žƒt†|zj›~”––}†y‰z””€ƒ{y‹‘‚‰‚€Œ„†Š…zk‚„Š‚ty………’‡v“wwހއ‰ˆzyˆ‡’ˆ‹‹‡ˆƒŽ’€z“€Ž‰ˆ‰‡‹„Š‚‚ƒ‡‹Œ‰u„~||Œ‰…‡‡zƒˆxˆ…‹x…„‚Š}‰ŒˆŽ‰‡‚‚ƒ‡x‰ŒŠ|‚‹†„‰†„ƒ}wŠ‹oŒ‚ƒŒˆ„ƒ~‡ƒ‚†{…‰˜†ƒ‹{€‹‹–ƒŠ…‹†…ˆƒƒ‹ƒ}x€‰~Œ†€ƒ€y…†…‚„ˆ†–„ˆƒ‡€†~…“‹|ˆ~‡~zŒ†ˆ‹Š‚t‚‡„„†‹„{€‹~yŠŒ|ƒ}€‚‚…Š‘†Œ€”e‚wƒ†€†q†€mm—ozt„k~}lw‚‰‚‘ŒsŒ‘z‚‰„‡”“¡p|£rž‰š~~™|€˜…ƒˆyŠu€Š‘†vkŽ`t‰“t“©¥‡j–š{lŠƒx}•{ƒo‚‚’~–‹’¯¡vŒŽ…‡‡wˆqzcoŠŠ€‚™ž¬“„„†…eq}{pŠ“‘“”„s‡žˆzz…lysrz{h“ŒŠ…t‡ f±_…„ƒ†}—†œo”{\ƒ’„{Œ‹’|“’€‰hŠwˆƒmoŠ¥c– ‘kˆv˜y…|~†~…~‰ƒˆ”ƒŒqztox‘‡•‚ƒ|zŠzƒ’•ŠŒŠ‡{o{†Š‰ˆŒ’‹†„q‚€z’Œˆ¡‡†…Š•ƒ‘‹„‡–‚‡•‘‡}m|ŽiŽ‘|Œ”‰Žš~†~”‡”Ž€‰|…ŒƒŽ{‘‹—€‰sy‚…„Šˆ£€~‹Šz•‹›…Š…—†Ÿu›™ˆŒ{‘f}~|‡Š™m€•‰…Š…†Å„m––Š~Šˆž~ˆ‘’‰ˆn~•ƒ~‡zt‘ˆ–Š„v€†p˜o£†›Ž‡†{r}z‚w‚‚ˆ²’’}‚ƒ••|Œ£žv‰“r|˜Š—„‚€›”x~†‹”v{†Š}ƒ”žq ‡‰‰l…„ˆŠ†Šˆ‰„†‰Œ‡Œ‰Š„…“Š„x”ŠˆŠˆ‹{…Љ€ŠŠˆ”‹†ˆ‚€”‡‘‡‡…‹€‰…„””‰…ŽŠ‰ˆ…€ŠŒy}†Š†Š•„„‘Œ€„‚†‰„‡‰…ƒ†Š„‹‰‰ŠŽ‹€Š‚…–‡Ž‹†ˆ‡ˆ„‰…‹Ž{‚†‡†‹{‡……}~~Œ‡‘†‰‹Š†€€‹‡‰Š‹ŒŠ‰††……ˆ…Œ‡Š†w‘ŒƒƒŠŒŒ“ˆ…‚ƒˆ‹…‰Š‚ˆˆ†Œ“„‰Œ}‰Œƒ‡…x‡…ˆ–‡ŠŽ‚ބЉ‡Œ‚„†ˆ”‰u–†rƒ‡“‡ƒ€•{Ÿ“ƒvƒn‡y„†ˆ‹œx”€•z€k‘‡ˆ~„’Œ}„–~†w•n……†yŽ„u’˜} {’‰Ž¤‘Œ•~€”’‘z”މr‡‰…ŒŠ‚”—‘t}qq†{“vŽ—{”‰ŠŠ‘˜…{Žy‰‡~†’•u”y‹“ˆ…™’”“›Œ‰”‡zŠ‚“Š‘€‰†Ÿ|u˜ˆ‘‘„ƒ“–ƒš‡„‰‚”’œ†ƒ‘—†–Ž€‘’‰‰‘’~yŒŠ’~ŠŽ“›„x„zŒ|„–‘‡‹‰˜”Ÿš~Š|kz‘Œ”Œ‚{†Š|”…ŒˆŒ~„†Œ‘‹‹‰‰Š‰‰‘”—€y‘…~u‹‹ˆ„‰„ŽˆŽ…”„‘‘…‡Œ‰ŠŠ—Š“‹Œˆ…‡‘‡Œ‰ƒ††~‚‘‹Œ~‘’€“~Ž‘„•€•“ˆƒ{‚›Œ…‹—†Ž’•{†’€ˆ~Œ‡•Šw˜Ž~†Œ‡ˆ‰ˆ†ƒ”Š‘’‡Ž‡ˆ’‘…Žˆ‰v‰‚|ŠŽƒ”~ƒ†ƒ“Š›‚”„…†…“”Œ•Ž„Šƒ’’‘{ˆˆŠ‘•‡€‹‹Ž‡€Ž‘Ž…‹€ƒŒ~”ƒ€Š‰„…‡‹…’‘‹ˆ‡„“‹ŒŽ~‰Ž‚›‹’„„†ˆŒ–‚‰„z‘ˆ‡‹x…‹x•ˆ…{z†ˆŠ‚…Ž‚œ‹‹|{…“ƒ€”†Žˆ„‹•ƒuˆ’‰~‰ƒyˆ‚‘‚ž„r‡‹Š…ˆ‘‰‰„‚”y…sŽ„ƒˆƒrƒˆ”†„˜pv’†‘vƒ–—‰ƒ‡‰Š‚‰Šˆ“–Œ„r‹‹‹y‹ƒŽ‹Šs‘t‡ŒŠŽŠ‰‰Œ‡Ž‹zzŠ~{Ž’ƒ‡ƒƒ‰}w‰’Œ”šˆ€„“‡Œ‰‘”™‹”‡‹‡—„yz’†{‘ˆ„zŽˆ›‰‡‘†ŒŽp‰Š—~‘‡€‚~–Œ‚Œ‰ƒƒ}}m‚‹Œ‹€Ž€…‡Ž‹‹ŠŒˆ~Ž‹Žˆ…Š›‰†‡€”‡”‰‡–ƒx†ˆ†q‹‹Š†ŒŽ’Ž‚„‰Ž†ˆˆ†Ž‰™ŠŠ‹‡Œ‹†‰€“’ˆ‚ˆŒ€ˆŠ‰ˆŒ€}ƒ“|Š“†‰Ž‘…„“ˆŽ„™Š‡‡Œ’‘ŠŠ…{Ž„ˆˆŠŠuŒ‰Œ‹~‘‰‚ˆ€–€‡Žˆ–‹”‹‡††‘‹ŒŽ†Ž€ŠƒŠ‰™ƒŠ‚‰ˆ‹‡Š†“ƒˆˆ’Ž~ˆŒ‡Š“z…ŠŽ’‹Ž‰„‹‘‰Šˆ…ˆŒŽ†Ž‹‡Ž‰‰w”˜Ž‰††…‰ƒ‰‡•ŒŒ‹…’ŒŒ—ˆŽ}‡”Œ—Œ†‰‰‡‹Œ‚‡ˆˆ|~‰‰„„Ї…„‚ˆ|…ƒƒ‰ƒ„ˆ‚Š…†‹ƒ€‡ƒ‚w…‡ŠŒ……„Љ‰{„‡‰€‰…ƒ„……„……~ƒ‚‹ˆŒ‡‹„ŠŽ‹~ƒŒ‹ˆ‰Œ††Š‹…†}’€‡|…‰x€‹Ž…‡„‰‰Š‚ˆƒ‹†z‡Ž‰Œƒƒ‚†‡‹„Іˆƒ†wžƒ‚u†„z‹•‚„Šˆ‡‹‚…‰“Œ~‚„ˆ~‰†‚‚Œ…ˆ‚„†„…|‹‰‡…Š—„†Šx‡•„”…€†ƒ‹ˆ}}Š„‰‡‹†‘ކކ‹‡†„‚‰›x‡††…†–‡Š…Œ…“ƒ‹…zˆ‡†…†k†pއ˜›Š…€“›šˆŽu ~‘j–ƒ…‘ƒŽv{o“n„”Š€€ˆƒ“|yn‘€“}••‡—£y‰šj—…x¦›£‘›k“˜‚‹‰‡€‡‡r5—l’•|‹€~¡”‹“’‰—~–ˆ‚†{…‘†”y{™uš•›”œŒ˜w ¢z¡™nƒŠx|„Œ{‰ˆnƒ˜›„…„”ŠŽ¢Ž‚…‹Ž}ª”i ”™ŽŽ“‚‡xwŠo–Š…t–“—~Š—ŠŽžt”Š…šŽ˜„‰šsƒu|’Œ†{Žyˆƒ ŽƒŠ€›„Œ‘‡‹‘}…˜„ƒ€‹€‰‡‘œs„Œƒ„–Œrx~ˆŠ……‰†‰„…‹ˆŠ‡…††‡…†„‰‚‡„†Œ…‡…‡‰ˆ‡…„‹†‰†ƒ‚‡ˆ†„‰„‰ˆ€ˆˆ…‰ˆŒˆŽˆ…‹‚Š…„‰…ƒ†Š‚„‡Š†……‚…ƒ†Š…‡‡ˆyІ†‡ƒŒˆ‚‡‡‡‡‰ˆ„„‰€…ƒ€ˆŒ…†Š‡‹†Š††…~Ž…†…ƒˆ‡ƒƒŒ„…„ˆ„—†ˆ‡‰Š‰†}„‡‰…‚Ї„„—Œ‡ƒˆ‹}†‰Œ…‚‹{}Šˆ‰‚‰Š‹‡‚}yŠŽˆˆ†‰‚’‡‚Šƒ‚‡ˆ‹|€‰~ˆˆˆ„„†ˆˆ~„†ƒ„††‚‡„‘†ƒ…‰‡‚ƒ†Š„†ˆ~„Ž‚Šˆ‡ŽŠ{……‹ˆwŒ‹‚‹Œ‡‚‡Žwzt€ˆ‰€ttŠ„…†“ˆ‡€x“€ƒ“Šˆ‡x}„~…ˆŽ”‡}”„ƒ„ƒ‰z‡‘†‡‚}‰€…ƒŠˆ„‹„Š~“qy‰‰ƒ„‰wމˆ‹‚ŠwtƒŒ‹o…Šƒ–ŠŠŽ‰Š„‚~‚‡Žu„‰”}ƒŠƒŠ‹ƒ‡‹roŠ}„Œ‘…~‰ˆŽ‚ƒu‡y†‚ƒˆŒ}ˆ‡oƒ“…ŠŒ€z†vˆw€—‚‹‚‚z‡†„’ƒ„ˆ|‡„‹„‹‰‘‚‚ˆ}†…„~ƒyz|†‡‰‰€Š{ƒ}ŠŒ„†„ƒ‚‰‚|€ƒŠ‘ƒ‚yƒ~~‹Œ‚†¡’‡y|Š‹…‚’ŠŠ}‹Š„ƒ…Œ„š‰‹Œ~…‹–†ƒˆ€Š…„†~‘Œ‹y‰’‡z‡†„ˆ†wt„…’ˆ’‘‡Ž……‡‚’|…zˆ‰„ކrƒ‚”ކ‘qt—‰w•€z–Ž‹|’ƒŒ‰”“Œ€rŒ‰…‡†‹Š|x§z‰ŒˆŒ–˜†Ž‘ˆ‰‰‹ˆ|{‹…uŒ†‡‰~ƒƒ“|ˆ˜ˆ”}“˜•¢‹‚˜š”ƒ†‹ ‘ƒ‘…‡œš‡Šƒ{”Œ‰„ˆ~…’ŠˆšŽƒ‚‚ŽŠ†m…™‰Š‡ˆŒˆ‚~‚•…•€Œ’™„ˆ‚‡wwІ™g„‚ƒ‰„‰ˆ’˜Š“…ˆxˆŽŒ‰‰‹ˆ‹‡†“‚„y“|Žƒƒ‹‚‹›Žz‚‹’‹†œŒˆ€z†€‘‰uˆ”‰‰„Œ‰vŠq‰vƒv”†Œ…Žˆ‡Š”„‘Š—z•pŽ•™~{{„Ž‘ˆzˆlwŽŠ‹u„–ŠŒŽ~ŒŠ‹Œ€ŠŽ‹{€w‰Ž…zƒ„†”‰“‡|‚€‡—‡––Œ‡†“‹ƒw„€wŒ†Š…xŒ…ˆ~ˆŠ•†Œ’‹‡†–ŽŽ‡‰”“„‹‘ƒ”Œ‹Œ€’‡ˆ‹……Ž…€”•ކ‰|}Šs–”…‘’~‡ˆ}—‘ŽŒ‘‰†ƒ|r‹ˆŽ„‚Œ‚‰’„ƒ„‚‡††‘qŠ”‚ˆ‹z}|ƒ“‘‹‘•ˆŠ——r|rz‡‚v‘‰‰…|ˆ•„ƒ’‰‘ˆ“vƒ‰„ŽŽ‘t…Œ‡Œ‚ˆvŽ„ŽšˆŒƒ¡‹u‰}„•{|“˜„–xt“‰Œ{ƒš„ƒ‡€Ž‚‡Ž–Šqƒ‚{Œ…”‚—–r…€Š‰’ŽŒ•Š•‰~“‘|šˆvŒ„ƒ“†„zƒ‡ˆ…Ž•†•ŒŽ‰™†Œ™Œˆž†“‰‡€‰’}„‘‹™‰„‡Œ“†}‘‘Œ‡v’”y~Šˆ~‹‘ŽŠƒ{’†‡–‘‡‘’{Š˜‡rš…~{Š~‰•Œ}Š‚~|†|‹‘ŒŠƒŒ‹‡€’~’ssy‚mr”’…‹”‡†vx›rž‡‹…ˆ„vz|‹Œ…ŽŽuІxˆŽˆg•ЄЉˆ„‰†„{~†•‰Žˆ‰“…et’Šwˆ†…‚†„Œ‰yt„‹‘v‰‰†•ˆ~‰{Š„{†ƒ„Œˆuyƒ€‡}“‰ƒxŒ„lƒ€Žƒ€ƒŠ…Žn‹†wpƒxwƒ•ŠyŠŒ€†‹r•z‘ˆ„…„‚|€†ƒŠƒ‹Œ{ŒŒrz…‹‡‰‚Œz{}ƒ’~Œ…€|‚‡‹ˆ‹~Š‹Šsw~„ƒ—†|‡Œ{€{Š‹‡ƒ…„†xŒt–Œ„Œˆ‚…‚‡†ƒƒ…Œ‹~†Ž†”„ŒŒ”~v‘~q‡ˆ‰‰Œ‰…“ƒ…ˆŽ‰„‘ŠŽŽ—‡„†•‹Œ†ŒˆŒ„„‚‹‹Ž†Ž~~‰‹|‘„“Œ˜~‡’~Œ“Œ—ƒ–Š‹‹–ޑВ‹€{‡ŠŽƒ†‹uŒŠ‡}Ž‚ˆ}‡’„š‹‰…‹†ˆ’†ŽŠ‚‰Œ‡ŽŠ“‰‰‰Œ…ŽŠŽƒ‰‹‡‡‹‰‘”‰Š‰‹†‡ˆ‹“†„ˆ‡“Œ’‹Ž‡…‹Œ’‘’‡z˜•’…ކ‰Œ„‡ƒŒ†Œ‰‰ŽŠ‹œ‚‚}ˆŒ†„Œ‹Œ“Šƒsqx‘€‡}`ŸŸŽ~nŸ‚|‘ƒˆi’‘…‡}}u}g‹U‰Œ}‚\•fr‰y~‘|t…q¤…r{„}~ql…““p›—lu}~…‹}––ƒr|ƒšo–o™d“Oƒ‚rxŽ}™wge›€n†s’ˆy{z‡Œ¬p—ŒÒ‡€~z˜{œzw¤|v‹ˆ‚…Ÿ{Œw…\‹u‡x|q_†Žcb‘Œ~nˆ—ˆ–ˆ}‹nuƒz‡ƒ‚—„‚“‡‹kh}zˆsƒp‡ƒmŒŠi–z’‚†€`}„ƒ±ƒŽ•šu^}„y—z‚¿~gŒ„ŽeƒŽz‹qކ‘ƒ‘ƒƒ‰~}„‰qn{††ttkŒ•‰„†‡„{žz‹€…‡r’u}•’‘…‰„~Š||€~€”x€‘y–}„|‚…‡z€ˆ{„ˆƒŒ“‚Šk~Œ…†|‘v„†€}‘‰€tˆ’yІˆŠ„w–‰Ž…†|{‡u€†|‹‹„ޓހ„Šgl”nŽ‚†vŒ…}“pq{vxˆƒ‹yqŒ‹ˆˆ†‹tx€‚€}zš“…‡„‹’‰wt†‡Šw€€m‡‰vŠ|‚†z}‡€‡Š€†„–„’r‘{‚ˆy€yvˆˆ’‰|†Žvuˆ€{wŠx—–tŠ—•”„„„ˆ€{’—‚k~ˆ{}‰žŠ{Ž‚Ž~—Š|•ˆqyœ…z—vr‹‡ˆ}s”š€‚’ƒ‹‹‹y}ˆ{Šn‡w‘Šˆ–†žŽ‡‘€“˜‰x•‡•ˆ{|Œw’{v–•“‚‚˜Š€l„‚ƒ‡w€ˆ”“|{r•”„„”~ƒ‘~—}—Ÿ‰œŒ€˜ŒŒ™~x˜]w€‚†‘ˆ{‡˜‘š‹£ƒ†ž™{¥ˆ›ˆx‹„x£’…z…”ˆ†{u~|}’–•ˆ…w‰Œ„rš ‚{…Œ‰Œy€‰—„‹Œ‘’„…x”Œ‡‹~Œ•~“‡‚’‡–‡…t‘„‰‹‡zŒ…z‘oœsn“‰rqg—‚„’˜Žuzš{‚Ž‚ˆ~‹rqˆyŒŒ•Ž„r„z|g‘—xŽœ‚{‡•‚‰sˆš‚–„Œ™Œh’†qƒ†„’„v‘’~m†k‹„„ |‡wŽ˜‚ts€„‘v||‹{{yŽ…„„s€ŠœkŽ€v—–o…†„}y‚t–’x…€}‹ŒxŒz‡ˆ~‰“y†Šdˆ†„‚yyyu‰y€’…ƒ~€{€“z˜~…—~t‡“x›vm{|{xŒ…‹Š|†‡qƒx„‚†‹|‰t~rŽžsuy…~„““›uŒŒ‹|Œ‹Š‡Œ€…’‡™‹’’…wˆ…tЋЉ……ƒ“‡„‹‘Ž}Ž‹’Ž˜ˆ†Š–†…„‚І…‰‰Š‰‘Š‘€‚Œ‡’†ƒƒ‡•‚“І„’Ž‘ŽŠ‰‹Š…“Ž‹ˆ€Œ‰vЇˆuŠ„‰€Œ‰‚–†—‰’Ž†ŠŒ‡”ˆ†Š‹‡†~}‹•‘ˆŠˆ…‰‘Ž‘ŠŽŽ‡ŠŽŒ—Œˆ„Š……‹‡ˆ‡Šˆ“ˆˆ‰ŠŠŠŠ‘—…vž‘‚‰‰ˆ„ˆŽ…‹Ž…‚ЉІ‰€ŒŽŽ’ŽƒŠ’„‹ˆ~‡|Ž}›™‡„‡‚Ž‚˜sm€Šƒ{sn“ˆ“Š€€¡z€’€‡ƒ€t‚‘„‚Š‘€’ƒv‹ŠŠŒgЇ†ЉЄ||†ƒŠ…š“‰kxŒ‚}Š€Œˆ|zq‰€‹n˜€{”•‡~Љ˜„ƒ|w‰{}€„Š•Œ‚‹tyˆ†q•g„‘}‡}}Žq€ƒtq€†‰€ˆˆ€vކ}|‹|x}ƒ†~’‹‚‡‡{„ކzŒ‡‚Žz‚~y‚ˆ|†qƒƒŽ’‡†…‰~€‰Ž‹€Œ„…p~~…‰‹Ž……Šƒ„x€“{}Šy†““†~…‰‚z‚„…”††‡‡‚‚„…ƒ‹€Šƒ‡ˆ{Œˆ†‹}…ˆ‡†„ˆ…‰‡‰Ž‚Œ‹Ž„‡Šƒ…ƒ†‹‡…„†ˆ„~‰z…{‡‚}‰‘ˆ‰…ŠƒŒy…—“‰……€Ž~ƒqŠ„‰ƒƒ‰ŽŒ‡y‡Š‹}‘‡„‰’v‹†‚ˆ‚—„‚†‡ˆˆ…ˆ‡‰ŠŽˆz‡…‡ƒ„ƒzy…uŽ‹…’ƒ~ˆ‡{…‰††Ž“„‘ˆ…‡‰†„ˆˆ„Ž……†€„{ˆ…„ƒty‹}‘……†Ž‰‡ˆ…„‡‚†ŠŠ„†…ˆ‚’}…‡€Œ…ŠˆŠ†—†‰‡ƒ‰‡xŽŠ“˜„ƒ‡|}Ž‚ˆr’†•˜‡{ƒ‡€‚t‘‰‘‚’…•’‡†“ƒlm•…‡„r|‚“‚}‘‡¢‚‘ˆ——Šn†y—u˜}Žƒ“Mw𗙣‘|~Žt’Šƒƒw›“zƒ}ƒ‹†€‡š—œ†ˆ¡‡……“}…x”•…}‹™†l•’„Š|•• or”Ž… Ÿ‡‹†zx˜ŒŽŠw‚Œ€|’……’‡…‡›…{ƒ|„Šš‡•Œt‘~ˆ¬‘‘¨‡†“”Š…€±w‰x”œš}ƒz—€†”…uo™v–ƒ„~‹„“~Žƒ†~ƒ¨‡{x‘ˆ~Œ®›y‰sˆ|š‰Š€‡|ƒ‰‚Œ{e€ƒ†‡syˆŠs•‰‘r{¢y…Œ|‹€u€ˆ}~’‘…}Œotuw™Š•˜™„wŒuŸ}‚©‚†Ž“‚s‚…xtŠ—’‘ƒ|r‘‹x†{“k€‹™“ЉˆtŒŒŒ}‚z‰Œr‡…€ƒ…’ˆŒ„…r†ŠqŠ{~Љ~sŽ„v}Œs~‰‚œu…“st˜yŽš{}ˆƒ~{|{y{„€|‡‘{v‘}„}†¢€~{‹‡‘…‘‚†“‰}†…€“˜x{zˆzx’„ˆ€‰‰{ƒq€ƒˆŒ†‡zІtfwމ‡{…x~Ž”—~‡‡ˆ“‹Ž‰‹‹ŒyŒ~‰†„……އ‚ˆ‰}ƒ‹‚–†‹‰Š€Š”‚t‰„˜–†‹ŽŒ€‡‰|‹‚€†•ˆ†—€•‹˜ˆ{–˜‡‡‘Œ†ˆŠ„s†…‡„‰xy—„‡Š…€Ž‰„|…‚ˆ†˜~“‡††‘Žsƒ‡™‚†€uŒ’yƒˆ|u€‰€’z…„—†z†~z ~~†„†˜‹“zš‰v†ˆ‡ˆ|‰‚‹|w}•…ˆ’‡xŠ…‘‘—„ˆx‘™{Œˆ‰~‡†~c~yƒƒ|„‹Ž†…z†{z†‡•Ž{Œ‘{‹„ŒƒŠ‡žy|…xˆ”˜‹…~ŽuŠˆˆ|zžw‡€|x‡ˆ‚ro‰€‡ˆt~†’’ƒ‡s~ƒ}€ “ƒv–’“’†‘”—ŒŒ„Ž‚x‚‡Ž†~•~v‰”Œ…‚‹Ž–~•’y‹t‡Ž‡}Ž€‡w}~…{‹ƒ‚~€{†{šŠˆ†{„z‡‚‘y“pŒŽ‚ˆŒŠ„x€yŸ‰{}‚…ƒ‡„uŒŠj‹ˆ‰Žxs‰uiŠkŠs˜}‹Ÿˆ„ˆv‹z†}‚~…†‰{y~z˜‘†}{€’†„…„†ƒ’z{qx}y‰{Œ„}†‡†–t|™Žˆƒƒz“Žxˆ|fˆŽ‡™ˆŒ†‰†††††††††††††††‡†††††††††‡†††††††††††††††††††††††††††††††††††††††††‡‡†††……††…†††‡†††††††††††††††††††††††††††††††‡††‡††††‡††…††††‡††††††††††††††††††††††††††‡†††……††††††††††††††††††††‡‡†††††††††‡†††††††††††‡‡†††…††††……††††‡†††††‡†††…†††…†††††‡†††…††††‡†††…†‡‰…„™‰ƒ‹—ˆŽ†{‹“‰’‰‰…vЉq†ˆ‡‹‰“…„–‹~‡††‹ƒ„„Žˆ‹–‹Š‰…€€Œˆƒ‹’|ƒŠ€‹~€h•}Š’†€–{Š’†‚–˜Œˆ‚Ž‘“‹‡zˆ‡ŠŒ…s€ˆvޒЇ…Š~ˆ‘‚•‡‰ŠŠ‹‹Š•„ŽŽ…’‡„„„‹“ƒŽˆ…‡‹‹“„‘‚‡’‹‚ŠŒŒˆ€‰Œ‡‰Ž‰‹‰ˆˆŽ˜’ˆ‹‹’†…†Œ”‰‘‘Œ‘y‘–“„‚ƒ‹‹……Œ‹ˆŒ‰ŽŠ‘““’†‡|ˆƒ‚‹‹ŒŠŠ‰Œ…„y˜Œˆ…“€‡’†“‡€t‘y‡~Œ—˜Œ‘˜™u}wŽ~{u™Š~Œ|z„™y…œ‡‘ˆ“~|…Œ†‡Ž•o‰ŒœˆŒƒ}ˆ”‹¦~“‚›‹t‰€„€x–†˜xxt“‰|•“„‡~Žއv•„ƒ…‡‹zƒƒ‰„”•sŽŠ‰ŠŠŒ“‘ŒŽŒŒˆ‘˜}˜Žtxކކ‡„ƒ…ƒ‡„Œ’ГޔŸˆ‰‰“Œˆ’‡ƒ‹‚†ŒŠŒ…ŒŒ•‹”œ{x”‰‰†‰r˜}†q{Œ‹‹Š‘Œ…{—’’‡ˆŽ•Šwƒ˜‹t‘ƒ€„ƒ‰€Žˆ„™}s„ŽˆŠo’…ŒŠ‚zy|…‚Š…žˆ‹—ruˆ~’‹œ’{”‘{z˜”„”Št‘{†}‰‘ˆ‹“‚’ˆ‡”‰‡Œˆ•‘œ„„““yvŠŠyŽ„“Š—ˆzŒzs‡„…sއ~‰‰’’‹Œ™–“‰–‹lŠŠ‰z“šˆrŽŽˆŠ”Œ‹–Œ‚‹‡™„‰Žm‹……œ‰†}ƒ‚Š~‹‹Œˆ™Ž™“„ˆ†Š”’ˆŒŽ–„ˆŠ¤ˆ—‚–ŠŒ™Œ…t‚ˆ€ƒŒ¢…Ž|Œˆ‰Š‡‡Œ“‰„Š{ޒއ›”Žˆ‹y ‚u…ˆ~…‚š•—}œ¢Œ‹Žƒ•„‡–‡Œ’†Ž‡…‰—…x“††y…€„Љ~~‰…ˆŽˆ‡‹‹t…†‘†”‡{„‘‰ˆ„‚ˆ{Š‹‡‹‰|†…ˆ‰~q‘Œ‘Œ‹‡ƒ~‰ˆŒ~‹w…ŒŽŠ‰Œ˜€…t„¤ŒŒ}Їw‰ˆ‚‰x–˜}~Š™~z’Šˆ’ƒz‘‰|Œ‰z—‘‰†ˆŽ•}~‘—†{ƒ‹‰}‚’‘yБދ„ˆ†”„–ƒ”‘šwƒ‡‹’qŠyŽvŸ‹†|”Œt‘ˆ„”‡Ž~“‘€’”“‹z€}‡Š†‘Ї}–‰ƒ‡Ž…–‚Š€‡Ž‡~Ї•–„‘€…ƒzŽ’“Œ‹€‰„‡’~ƒ|“|Š~ƒŒ„™{‡‹…†y›„‹‰|‰}…Šy‡‚Ž‹s‡‘Іzƒuˆˆ‰š{…ˆ‡„zŒˆ‘‘‰œ‡…p‚ƒ‰„Œ{ƒ‡’–™osŒ…’s’”ƒ‹|‹„Šw‰Š‹Žˆ~sІŽ|‡”xŠ•z‘s’ˆˆŒ‰–ƒ‹ƒŽŠ{Žy‰‹€’†…{‰z}’–ˆ…‹’ƒz˜–Ž…‡†Œ•„‡……‹šŽ‡Œ†}~‹‚ˆŽ„Š–‹Œ‰wˆŠ••Š„’‹{•‡Œ†Œˆ…‰|‡ˆpˆˆŠy‰}‡|„„‰}z‰€„{…’“šŒ}pw™}„“Œx‚‚„•„z‰„†|Ž„›…’†Žƒjv€€…£‚€£xƒ…’‘o„¥‘~‹‹ƒw›—™r>†yŽ™‚‘‰€„аv„…Œp‡…¤‰‹ƒr’Љ–~“s…{}U¡…‡‚x††p‹„—…zxy~„ƒ¥‡Œƒr†nƒ§Š„‡Ž}”†v˜t{€„ž‚~—¤‡’†˜Œyy”…y‘‚“’„…s{x‘zt„Œ‚‘tnxˆ•‡u™†˜ˆi„wŠf~‹Š|¤q‰v™X~ˆ‰—m¡vƒ„~n‰’†‰„¥uŒžƒ“ƒt£–R•¦Ž…yƒƒ‰€ƒˆŒŠv‹ˆ…ƒ‡††Ž†Œ„„†ŠŒˆ…ˆ‹‡‘zŒ€‡~Œ–„‰Š‰‚‚ˆ‹ƒz‡x…‚‰~Œ…‹rœŽ’„—‰Œ€‚x…„‹‡™„ƒ~‡ƒ†‡“‚{„ˆˆˆ}‡‡ˆ¥Š•q„†Œˆ‰‰Œ…sm‰€‚“…ˆo}‚І‡Šš~•~z–{‡Ÿ‰‰ƒ‹Ž™‹‡z„ˆŽ¡s}‡v{‰„€tWx…ŠŽtˆ‡y…‚—}ˆvyt”„‰–‰{„zsƒ}Ž‚…u……ˆ“„£‚‰†všŠ€ˆ„{‚“’Š„•†…ˆtˆ’¦{v„u‰…Œšš‹…Šƒ‡ƒ†‹‰ˆ‡‡Œ‹‡”Š”Œ–•v†Š‰rŒ†ŠŒŒ…‚‡ƒ‘‡Ž‘‹‰ŒˆŠ‘Œ‹—‡‰Œx‘†‡†Š‘ˆŠ‰Œ…Œ…‹†Œ{‹”~–ƒŒŽ‹‘‚–…’Œ’—Љ‰ŠŒŠ‰‰ƒ‰“|‡‡ˆ’‹v–‹Ž‹}މ†‡‡ŽƒˆŒ‰Œ”‡Šƒ…ƒŽŽŠ‰‰‹‹‹‚…ŠŒ…“ŒŒ€Ž‰ŠŒ‡„ˆ†’Ž…ŒŒ…ˆˆˆ‰ŒxˆŽŽ‚ŒŒ‹‡ŒŒ……Œ†‡Ž‹†Žz™Œˆ‹‡‡ˆ‘Љ‰˜ˆ’Œ‰‡‡’“‡~Œ”‰—ŽŠ‡‡„‡ŠŠŽ†‚Œ‘……†’Šˆ‡…†‹†††‹…†‡‡‡€ˆ‰†‹‰‚…†…‡…‡‡ŠŠ†ˆ†‰„ˆ‚†‰‰†~……†ˆ‹‡„††„‡††…†‚…‰ˆ‡„ƒ…ކ‡…Š|…Ї„…‰‡‡…‚††|‡‚‡ƒ††„‡‹~„†…‹†‡‡‚…‰…ƒ‡ƒŒ…І†‡„‡†ˆ‰‰Š‰…‡†††…Œ‰ƒ‡………†ƒ‡‡„‡ˆ‰„…‹Œ~ˆ€‡‚ƒˆ„€~‰†‰‚ˆ…‡†‰†ƒˆ‹‡…„…ˆ…‹„„†ˆ††Š‡‚†‚‡†‡ƒ†…‡‡†ˆ‡†…„„‚‡‡ŒƒŒ„Šˆ‡‡†„‰‡ƒ†‰„ˆ†‰„…ˆ‰ŠŽ†‚ˆ‰‡†‚ˆ…‡ŠxŠ‹‹‹…‡ˆ’€‰ŽŠŒ‰›‘~vˆqŒ‡Œ‹‰†…’‡‘‡‹‰}‰‘Ž—‰’†Ž”†Š‰””’Š„ŒŠ‚‰‡~Ž|‹•†‘ŒŽˆ•†“Œ†š‹ŠŠ’Š‘„‹Šƒ„“ƒ‰Š†Š–†u–—Š{„‘†‚‰’††Š’Š”‚ŠƒŠ““’ˆŠ‡Š„‹ŒŒ‡ƒ‘‚Š„}Š’…Œ–†„‡‡Š’Œ‰„”…“ƒ‰Š’ˆ}…‰Œ‹Š†‘‰Œ„Ž”Œ†ˆ‡Œ„‹Ž{•ˆƒŒ‡‡‹ˆ„ˆŠ’†–†Ž‡’–ŽŠ}—‚–І‹”†‚…ŠŠ†~‹‰“—Œˆ„މ‹‹„”–‚y‚€r‰‹…‘ƒŠ‹Žˆ”ƒƒ‰…xˆŒŽ‡–‰Ž’‰Ž……Žˆ”‘’…ЇŒ‚’ˆŒ‡€‘ˆ–‚ŒŒ{›Š’•Œ‹„w•Œˆ‡Ž‘‹•Š…‘…ŽyŒ€~‹ˆ“‡xž‰‹Œ}‚އˆˆŒ””ŠŠŒ|~Ž„ŠyŠŒ‡„ŽŽ†‰…‚‹Š„Ž’•ƒ‚„„‡‘‰†Œ‰Š”……Œ‘’|‡ŽˆŽ’‘’„މ‘ˆ‡‰‘‡ˆ‰ƒ‹„ކ}ƒ„‡‹†…‰‰ŠŒˆ‰‡ˆ‹”‚‰‰ŠŽ‚—‰“„Žƒ‡‹—ƒ–‡‘„Œ–‹Žx…Œ†Š‚‡y“x„ƒ‚“‘ˆŒ’’Ž‘‘y…‹Œ€š‚ƒ„‹†szˆ‚•Šrˆ˜€x…‡x‡Ž…}‘ysŠŠ‡Ž’Œ‹”“…›s™ƒx‚pŽˆtˆ‘•™’vnr„…vˆ‘¢•‚ŒŠ‘žœy”Œ“|‰–|˜€„{™š—Šƒ•yŠ‚’o™s—™r’ŒŽƒv’Š˜‰šˆ•Ÿ‰r‚|€}~‹„}‹–‚ˆq–”‘~–”sšŒ˜ ’ˆ¡’”z‹z}‘¦ˆ†“Œx¢…ž}‰’w€™}‚–‡‰ŒŒ…‡£ƒ‘„zŽ‹ƒ„xy‘s€Ž—‘tƒƒŽ†“Š‚Œ…‚Š’‘ˆ‚‰Ž€ˆŠ—Œ‘}w‰‡†rˆ‹†‹Ž~ŠŠ’~ˆ†•ŽƒŠŽ“Œˆ•‡ŽŒ‘…†‰‡€‚ЋЕ{ˆ†}{’Š–…†‹‡ŠŒ”†‹’”ˆ…–ˆ‹Ž‹‰”„…{‘”‡ˆŽ‡Ž–†v—މŒ|…“ŒŠƒ‡„Ž{•…‰‹€†…–’ˆƒˆ‰‘†„Œ„ކˆ†ŒŠŽ‘‘’‘ŽŠ~Ž’”‡”„Œ…މ‰–‹…†‰‡‹…‡‹‹††•ŽŠ’|Ž’‰†Œ…Š…†…„Š‹ŽŽŽ†ˆ’‰‡‡‚†}Š‘‡‘‰…ŽŒ†ˆ‘………Ž…‹‹ŒŒ†ƒŠ‰ƒ„„†Š‹‘›~u„…q”‘ˆ‹Œ€Š…„Љ‘ŒtƒŠŠŽŽ‰š‰‡†’Œ…†‡Ž”ŽŽ‚ˆŽŒ††‰€~†~”•€‘‹Œ“Š‘Œ’ЕЗ‹ˆ…‘‰‘‹‹€‡’‰‹„}†ŠŒw“Œ‹|Œ†ƒ‹†ƒ‡‘ŠŒ—‡Œ‡‰‰’Љ‡„‰‰Š„˜Š›Š…„’‡Œ‹‹–ˆ•‡}€Ž‡ƒ“ŠŽ…‰Ž‘‡Š†ŠŠ†„ˆ‚†•‘‹Žˆ‰†‹•Œ˜„…ˆ|•‹”…ŒŠŠ‰Œˆˆ‹‹…—Љ†’‡‡~Šˆ‰–І‘‹’ ƒ‘‡ŒŽŽ†ŽŽ|Š‚‚އ„v™‚‚‚’Œ‘•†ˆ˜’wˆŠ•‚‰ˆw~„†ˆuvЇ’Šrƒ–މƒ‘~v†~ƒ~‹}r…†”†“„‹Š”Œˆƒ›w–…w}~Šˆv‹‡•›ˆnt’…u€’”‡…€„Œ…Œw“Š€‰xŠ…’‰Œˆ”–‚…‡’š{–‡Œ’‹ŒŒ†x‰–‚y“‹‘“Œ€†ˆs‡†ˆˆ‡•‰‰k¢—…˜•}•Œ‰†›“Œx‚˜{’˜‰{‡|‚™•’‰ƒ…{І–r}›€ƒ„‘‹Šz˜Š“І•Œ††…u~‡…w…ˆ‘{ƒ‚Šˆ‰‹‰€~}Žu€„ƒx‰q‚€z‡€‚…„І–‘x—Œ’z}•Œ†”‚}ƒ…{w†‡¤ƒ…œ“•Žƒˆ‡eƒ–“€~jŸyxr…†…‰‹€’‹x…—ˆš•~††‡’vˆ‡œ€†“•‹ˆ†}‡zŸ‹‰q…j€…y…~†|n{‡ƒš{ƒz|‚…ƒ—‚yzŠoŽ‚–†wˆ…m}}€Š~z‘tt…n†{ŽŸ‚}”‹Šq„{z›pˆ‡Œ‚€‘Œl|ˆˆ…•“˜Š‰|tƒŠƒƒ•†‹vp‡u‡“n}‹rr‘„„‰‰‘‚‡˜ƒiwŠs„…‡—‡Œ‡žozz‚‡‰rƒš„u”Š}vž“‘v‘uˆ—Š{Žˆ~}‚†¤•”k‘„‰„zˆzˆœ€šˆj{‹‚€}€u‚…•Šƒ²‚šÁœ‡x›·¦|it„«h’…‘|”j{Š|„¡Ž†ƒy}t…•‰Ž–zx›„€ƒ…²Œ“k~……®ƒ€Ž‰|€pб§Xj™‡|Š ƒ‡ z“h p–rƒƒ~‰ƒž†‡‘Å…«~‚nƒ—…{u±Ÿ£—j”y‘Ž~“¨zž™w£’‚ˆ“k¡o{p—šwŠl‹žŒ…¢T‚›L‡„•k¢…™}‹{œzz”}xkew…ˆu™z‡†Ž”†~£‚Ž‚‚ˆƒ‡”Œ…Œ‰ŒˆŒ}uŠŠ}{ކˆ˜…ŠŠƒ›~Š€ˆ„~‡}Œ}ŒŒsŒ‡ˆ~yŠŠu†|Љ”…qŒ…ˆŽˆ€†vŒ’‚}—yŽ~m†ˆˆˆŒu‚ƒŽ‘†ou‰…•r“‘ˆ…‡‡…†‹Š~Œ‘ŽŠ}uЉŒz”Š‹”Œ~’p‹{ƒ‰‰‡‰’ˆˆ‰†“s†ƒ€‹zЇ‚ˆ“y‚Œ‹—‰ƒ‰‚„w“š‹ŒŽ••ŠŽ†‡‰’Œ„†„†ƒ‹‰ˆŠŽŒƒˆ’Œ„€‚‡Œ‹z„Ž˜‡ŽƒˆˆŒƒŠ‹Œ…‹†}‘y‚}l…ˆŽ‰…†{‚t‰†ƒŒŒƒˆŠ‹†ƒ…Žƒ‚†‰‰’І‰ˆˆˆ‰…‰†…‰ƒ‰†ƒ†…„‰ˆ‰ˆ€††‰‡†Š‹ˆ‰ˆ…„‡„‹€…†ƒ‡‚||‚…„Š‹…Š„†‡’‰‰„ˆ‡ƒ„†‹Š…~‰‡Œ„†ˆ„~ƒ†Œ€‡…ˆ‡††‚ˆ……ŠŒ‹„ƒ…Š„‰„€€ƒ€…‰ƒ‚r‰……Š‹„“„‰„Š„}‡†‰†w‹Œ‰‚‡}€ŒŠ‡‚ƒ†„‚„‰ˆ‡‰‡‡‚†ˆ‚„ƒ‡„ŽŠ‡‚‰†‹‡ƒ‰ˆ‡Œ|‹ƒŽ‡…Š…‚‡ƒ}‹‡~†‡ƒˆˆƒŒŽ„‡ˆ‚ˆŽ‚ƒŒŠ†‰…ˆ†‚…„†€Ž‡…‡†…„††‡††…††…‡†††††‡†††…†††††††‡…†…††††††††‡†‡†††††††††††††††††‰†‰††‡†…‡†‡†††††…†††‡††‡†…††††……†…†††††††…†††…††††††††††…††…†††††††…‡††…††††……†…‡…†ˆ†…††††……‡†‡†††††††††‡††…††‡†††‡†††††…††††††…††††‡†…††‡†‡…†††……†‡†††††‡‡†…†††…††…††„‡†…††††††††…†††††††††‡††•ƒ‘‡Šwˆ‘‡‰†€†…„“‚„{˜z‚€ŽŠŽš‡”ŠŠ|‡}•‡Š‡€ˆ„‰xv†{‰v„œˆ‰…ŠŽq‡~Š€š‹v’ŠŒ‰v’ŠŠ‹—Œ”}™u—‚o‹‹~‚€‡…—‘ƒŒluŠŒt†”––‚zŒ{‚Šz‹‘‹u‚x–„ƒ€ˆ€’™’‰|…{‹Š”~“ˆŒŠƒ‹ŒˆxŠƒvŒŒz‹‡Œ}†‹›…„Žx”„™‡Š‡–‚‹…“Šˆ†|–{Ž‘€†‡”†š’‘‰Œˆ{ƒ|‘{„˜ŽŒ‹Œ‡ŽŠx•™‹ˆŽˆ‰……{s‹}pŠ…Œˆ€…}Œ…Œ†ƒ„‘€ƒ’~ˆ‰‰Š†‚’‚„Š…‹‰‡˜š}tŽˆƒp““†Š€Š†‘|‘‹‘’Šr‰ƒŒŒ’‘™‰Š‹•ŒŒ€ˆ’¡ŽŽ‹ˆŠ‹†„Œ‡€€†Œ}’–ŽŠ•Š‘‹†‹‡š‹Šˆ™‡‘Œ‹‹ƒ~“Š‹…ƒ‰’‹v““‰}„Ž„†‹‡†ˆ–Š‹‘‡„‡“„‘Šˆ}ƒ†Œ}™‹”‹†Ž“v‰ŽŒš…}~”„€•‚Œ‰ŒŽŒ‰Š‡‘„‹€~|‹‡Š“’‘—‹’Œ„ŠŒ‰‘†šˆ†Œ|’Œ—‹‹‰Š‡€‹Ž…‰—‹‘‘Œˆ”•‹„}Œ‘†‡–އ“—Ž‹‰”‘–€‚ˆ‹‰ˆˆ‹ŠŽˆ€ˆŽƒ‹‹†‘˜w‰€r‘ˆŠ…ƒ„”‡Š€…•‹€…†Šˆ›‰‰ˆ•‹€ƒ‚މ—’„ƒŠ‡ˆ‰’‹Ž‚‚„Œ€“„Œ‡‰‹”‹„ˆŠ„•‰…Ž’‹•ˆŒ…|}‰ƒ|†‘‹vއƒ}Žƒ„ˆ‡€Œ—ŒˆŽ††…Œ‘†Ž‰‰€ˆ†Œ’ŠšŠ„‰Œ‰|…‰—†–‰ƒ‡‹‰‡‰ˆ…‹…‡‰‹‡‚†ˆŠ‡Ž“‘”Ž‹‰…„މŒ›†‰‹{’•ƒ‰‰Œƒ‚…Š…ˆ—Œ–•„ˆ~ˆŠ‚‘ƒŽ‹†ŠŒ‹Œ†……ŽŒŠ†Š‹‡~‚‡†•‹†Ž–€w‰…ˆr‹ŠŠ‡Š‰‡’…ˆ‚‹‹‰ƒˆ‹‰‘Œ†—‰Œ‡ˆ†€Œ…†‹zŠˆ‹ŽŒ€|‚}Œ•‡ŒŠ‘ƒ„’‚‹’’Œ—ŒŠˆŽŒ“‡ˆ€‡‰‹‡†‹v‘ˆˆŒ}‘Љ„~†Ž˜Š‡‰…ƒ•†’ŒŒƒŽ‚‡ŒŠ—†˜…Œ‹“ŠŽ‘ŒŠ‚…‹‘‡”ŒŠŠ”x‰†‹ŽŒ’‡…†‹Œˆˆ‹‹‡Œ‰‡ŒŽˆ†Žy™Š‰Šˆ‡‹†‚…‘Œ…“Šˆ‰‹‰†‹‡‡}‹‘Š•‹Œ‡ŠŒ‡’†‡ˆŠƒ€‡……‡ˆ‡„~Š…‡†‡††‚††‚„††Š…………„„……†…‡‹†„ˆ„…†‰„ˆ„…††††…†„…‹ˆ†‹„…†ƒ‰‡‰‰‡…‡†ˆ‡Œ…„ƒ††‚ƒƒˆŒƒ‹‡†…ˆ††‰‡ˆ‰‰†…‡Šƒ…‰†„„†‰……„††‰„Œˆ…††…†…Š„‡…Œ‹„Š……†ˆƒ†‡†|Š‹……‡Œ†‡Š‚ˆ‚Œ‡‰‰…„…ŒŒ„†…†‡‚†††ƒ†ƒ†‡„…„†‡‰‚†Š…‡‹ˆ†‹†Š†‚‡„|†ˆ…‡„ƒ…‰ˆ„|ƒ‚ˆ††Š‹†‰†ˆ…†€†ˆ‡ƒ‚ƒ†††ˆˆ…ŠŽŒ†…ކ‡‚„„†…ƒƒ•ˆ“†”Š–ƒs˜„s‹†‰‰Œˆ„’†}‰‘Œˆ‘‹“ˆ‹Ž‹Ž™‡‚…‹Œ…‡…Œ…‹z…Œ‘‡…“‹|„“”“ƒ–ˆ•‚”ƒˆ‘Š˜ˆ“ЉŒ‹Œ’“|’Š‘{‡‹ŒŽwŽŒ†Œ}‘‹Š‡€†}ˆ“…„—ކ‹Šƒ‡Œ}•†‹‰…ƒ‹Œ‡„’‰š‹‡‡‡€Ž–‡‰~‰ŠŽ„Ž‘Œ‹‰‹ŠŒ†‰ˆ…Ž„ˆ‡‡–ŒŒƒŠ„š‘“Œ†z•”…އ‹Š‹ƒŠ‘ŽŽ‹€‡’€‚}‡Š‚„ŽƒŽ–’‹††‡…†…†††††††††‡†††††††‡†††††…‡††††††††††‡…††††‡†‡††††††††‡…†††††††‡†††‡†‡†††††…††††††††…†††††††…‡††††††††††††‡†‡†††††††††††‡††††††††††††‡†††††††‡†…†††††††‡††††††‡‡†††††††††‡†…†††††††††…†‡…††††††…†††††††…†††††††‡†…†‡††††‡††‡†…††‡†…††††††††††††††††…††††‡†‡†‚Œˆ‚†ŠŽ’€x†ŠŠ€‹~q‡’‚wyŒˆ’‚Œƒ{Š|‰‹|‰‡ˆ“‡‚…‚„Ž•ŽŒ{”‡~…€‹zx†‰ŠŽƒ€ˆ„‹Š‚•ŒŠ‰„ƒ‡‘wvІ‚~“~‡‰ˆ–ƒ†}ˆŒ‘k’…’˜†—ˆ‡……ˆ………x‹Šƒ‚“{ŠŽ¤‚†‚o|‰{z‘‡І~†u‘‰xzƒ‡ƒŠ‰x†„ˆ–‚†‰†‘ŠŠ‚”|–ƒ}…‰€’{†~‰ŒŽ‡“ˆ‘‡‚u€Œƒ‡Š’ƒ„{y‰‡~Žˆ‡…|‰ƒ‚†ˆ’…„z€‡|ƒ‚vƒ}ƒ‹„ƒ€†ŽŠ‹†{’Œ‡ŠŠŠ€ˆ‡•Ѐޒ~w‡‡„q‹‹†‡†‹…‡’Š|Ž‹†Š‰…‰ˆŒŠ—ˆ†Œ‡‰’‹ˆ‰’z‹‡•Ž}wŽ~ˆ”††‰‹‡Ž”‡‰“’…„–‰‰ŽŒŠ“‰‰‚ŠŽ‰†„Ї’–ƒu•‡|Š‘†ˆŠ€‚ƒ”~–…‰‰‹‚“‡•ŠŒ…‰Š’„ƒŽ†’‡Œ…ŒŽ‡’’‹ŒŒ‹”‹‡•~І‹†”’ˆ‰…ˆ‰ˆŽ‡‹Š…ŽŠƒ|Ž”‡†‡ˆˆ†ƒ‹‹‡ˆŠ‹ˆˆ…ƒ}І–‡„Œ…‡Œ‚ƒ‘…‚‡‰†{‹‡~ˆ——ƒ~ƒut‹z¢ˆ††š…›Ž{n“}v’‹ƒ™yƒ€uƒ‡…†}–~Š‘ƒ€‚ƒ|…s‘‹}‹Ž}ˆ†Žx‚ˆ}‹“ˆ‚Š}‘˜‰w‰‘‘‡‹‰xƒ†t†}‰‹ˆŠ‰‰‹~„ŠŒ‚‡Œ‘–yˆ—~˜‹”•{š‘‹ƒƒ‡™„•‰‡ {{‘›}ž›˜yŒ†ŠŒ†ˆŠ‹Ž‰|šu}Œ{„‡rŽ„{uŒ†…¡‡ƒ…|‹œ†‡~…„x’Ž€…ˆˆˆŽŒ•Š€Œ•ˆy‡Š™€~‡†€¥‡|Œ£ˆ‡…Š•–Ž„€‚Œ~’Œ„…‹–†ƒ‹‚yŒŒŒ~~‰{Š—ƒ“‰ƒŽƒ€”€†ŽŸ|ˆ†‰ˆw‹‰‹ˆƒtІЀp{“‹’šx‡‹•“{–t‡{u~‚|‰xˆ†’‘ˆˆov“w†r…Œ‚xˆ‹ˆ‘ƒ“ˆŒ|w†Œt‹•}„‚Žt„……‰‚“‚†‘†Œ‚wŠ‚Žˆt—‡‚‡ƒŒ–ˆŽzŽŽgŠˆ‘‰ˆ‰‡|}˜ˆŠ–Š~•Љ‹†x…ˆŒ…‡€“‰—‚Œ…ƒ‘š…ˆŠ–‰‰Œ‡zƒ„’†‚{‹zއŒ‡}ŽƒŽ‡ƒ~†‚n‹„~l…ˆ’ˆ‚‰r‚ˆˆ‚‡n†Š˜}v€kx†‚ƒyƒ{˜……˜‹…’‰rЉ|“€qx‚~‹Œ“Ž…ŒŽz•‘‰¡‹‰’ŠŒs„y“‡‚Œ••’„z€…•”‚Žˆ‰†ƒ„˜}‰vƒ€Š‚Œ’}„z›ƒ•‚Š…„Šz‡Š‚‡„—„Žv”ŠŽ{{‹ƒ”ŽŒ‚ˆŽ„ˆ‚‘~‚ˆŠ•‚‰Ž|y™Œ“„Œ„n~‚v‹r„z…{Š|s‚tŠ“’‹”‰ˆ„{‹†}‡‚t€ƒt‚†“”ƒ…ƒ’†‡Œ‡€„Œ‡€…‹›}†„‚‹…ƒ‰¡x„{€’‚ˆ‡•~‘މ‰„‡Œ“‰ˆŠŠ‹}”z|z“Їzz‰„‰—‹…Ї‚™†Œ~‹†}‚…‡ƒ‹u”†‰ƒxŠu†ˆ‹‰‹ˆr„‰€‰‡‹‹ˆ|–yxlŒ‹‚…n‡ŽŠ}‹qxŽƒ‘r‡“…w‹Š‡‡†‡Ž‹ƒq††‡xŠŠ‰ŠŠ‘„Œ}Šˆ‚ˆƒ‰Š„ˆŒƒ‡s…Œy|އˆˆ’|’Ž“ŽƒŠ‚€˜…Š••ŒŒŽŠŽ‘{}‚‹ƒ‘…„ŠŽˆŒŠ†…q‰˜ˆ‚€}‡‚މ‹†‡}p‡†Œ‰|v‹„‹Šˆy€zŒr‚‘€‰†y£‰uu‰ˆs~wƒ~‹‰{‡††’‡x…‹|y…ƒŠ…y|~{…‚€|v„†‚ƒ‹Œ‰™—’…‚އ‡|Œwj‚œs€™’††„l‡‹~‰Šƒš‘ˆš‚u€Š’Ž™u†Žv}‹‡„ˆƒ€„Œ‹‹‹ˆˆ w{}’Š…n‘˜v…–‡w‡o˜†‹Š‚–ˆ{—nºtj‹ag¢‰‰u˜’šy‚€‡w{~wr›y‰d‰‚¡_‚ˆ•o„Љž€Žf‹…‘yš}kŒsˆs†xŠ~²’‘zz‡¨rzŒ‹¥v~—xމ€‚}{ކ‰v„ˆ†Š‡€l‚x‰‹‹ˆ„ŠŠˆ†ƒ‚މŒ‚‘’€zƒ„„r‹ƒŠ„„ˆ…ŽŒ‘†ƒ‘„…ˆ†€‰‹†—‰”މ††|Œ“‡‡Š…ˆŽŒŽ€}{Œ•‚‰“‡Œ‹”‘†š‹‰‡‘Š“ˆ‹’‚†ˆ‰‰–†u”‹Š‹{‚’Їƒ€’‰‚’†–†‘‡‰ƒ’Œ‡‡…ŒŽ‡ƒˆŒˆ†‘‹„‹Ž…Š’“ˆ˜…‡Š’‰Š’‹‰—|‡‹„Œ“Љ’‰ŽŒ„Œˆ††‰Œ‰Ž‡z’–‡„‹ˆ„‰ˆ„‡‰ŒŒ†„ŒŒŠŠŽˆ~‰Œ†š‰“„†…ŠŠ}Œ~‰~ŠŽ…ˆˆˆ‚ˆ‡~i~ˆ˜v~Š„‰‰”†Š†y•vŠŠ|Ž„Š}y€€Š‹ˆ‹‡ŒƒzŒ‹}„|Љ‚‹v‰…ŠƒŒ‡‘‚‰…‡‰„x†„~‹~ˆ†…ˆ„ˆy„€‰}‡‰ˆ‚‹†—…‰‡‚„„ˆ‚wˆŽ†|†‡ˆˆŽ„Š…~…vy‚Љ†~…z’u~‡ƒŠ…”x’‰Š‹ƒˆŽ…ˆ€‰…ŽŠ…†wƒ‡…‰{z}~~†ƒ€Žƒ‡‡}‚‰‹Žx~‚€„}ˆ‚ˆ…ˆ…‘„Š‚†€}„yЉЀˆ€y}ƒ}ŠŠ{Œ„}~‡Ž†‘{†|€„…’„—ys€€Œ|k~‚š{t„‘’‰„–…‚~y”z}ˆzŒ„y–}|…€––šŒ‰‡‡…|ŒŒ{|‚|“‰‚…ˆ|‘ƒ‚„…‰„—ŒŠŽ„Œ“€q}ƒy‹‡ˆ†ƒ‡‚‡‰€ˆš‘‘€ˆ•Š‚~‡Š|u‰ŠxŠ‚‡‹’’‡”€~‚qr}{……‡x……ˆ~†qŠ…‘ƒ…ƒ‹mŒƒ¢–‰‡ˆ‰„ˆ†ˆ‚|‰€|‚k„|‹~‹z}…ƒ|„ƒ“ƒ~‚x‹„x}„}ˆ€Š‹„€x‘„~†‡ƒ{~‚}†ˆ}‹ŠxyŠ~wƒƒ|‹ƒ‡|yހޑ{”…†‡†v‹ˆ…}Š‚†’ƒƒ„‡„ˆ}І€”ˆŒˆˆ…„‡‚†v…†‡‰‹„†ˆ˜„†‡~ˆ…„……†Šwƒ…}{”‰|ƒ‚Ї€†‹†}……‹€‚„Œ†ˆ…Œ„|‹ƒyƒ”„€€Ž†…tˆŠ‡ƒŠ†{…‰|„Єއ…Їƒˆ~•……’‰{ƒ|‡”xŠˆˆˆŒ…€}†…†z—‚‹ƒˆ†yƒ‰š{Ž‚€„„ˆ„†Š‘w…‘‹Š†Šz‰ƒ…Œ‹„†‡†€„„†ƒ…‰†ƒ|‰†Ž‡„†‰…„‡x}‹‡€†„‰”ˆ…†‹zƒ‡†‚~†Š‰ƒ†ˆˆŽ‡ˆy”Œ£i›•v‰{‹gu{š‹aSŠƒ†’„—pŒsnŽˆ‹ƒ˜{ˆ‚…{„y—qE‰{z„aˆ‹—™‰…‹Š”†x¼w…s‹|º“w¨’Š“zj•€™w^›~ Šwƒ©«s”žzœš•t˜{t‹›€†±…z„†Œ‚‚„ˆvuk‘–”’qƒ]‚t†©œu‘mŽŽp€¦ž‹UŒ€Š”†fhufkoo¬wz‚ujy„x‹ŽzyŠlŽpwyuxe{“”t„‘f–˜“¥ŒŽ†”zx†›|gq“\š}~…rˆˆ£qb{”qf—‡r}“Œ{yˆ¦¤••¡mV…a…oi’kžž•‹yŒˆ“‡…w‘„‘‰ƒx‘‘ˆ•„‰’œŒŒ‘Žu€“‘€‚Œ‹…„‹‚†Œ|Šv”ˆw‡ˆˆ‡ˆ‚…‡ŠŒ}ƒ‰‡”†›„Œ€–€o†Š…‹w”Š“Œzv™|€…œw€{‰‡†ƒˆ‡ˆ…t‡e’‹‚ƒ–‰uƒŽ{‘Œ“…ƒ™’‰‚ˆ‹ŽŒzŠ”rr‡‘˜Œ‹‚‡‰‹‚•’†—ŽŠ‹”›‹€€›‰”˜ƒ‡‡ƒŠ‰–Š•|€Š’‹˜ƒ…“…†Š‡’‰šŒ”Št•‘†‹›Š|“‹ŒŽˆŠŠŽˆ~€‹sƒŠ‰„…Ž€Œ“”†Š‘€w™“†‡ˆ…Ž‹mŠ‹‰ˆ…—„€…ˆŠz””‘˜ƒ€Š•Œ‚„x‰Ž†€„€ˆŒv•Šˆˆ’}ƒš…‰™x‡„|Š|†—…t”p|‚„–pˆŠ–‰y…ryŸ€…z“‘…‡–‡€€Œ“š‘}r„“‚‡‰y†˜y…†€–Œ—‚„’…‰’ {Œ™€›‘xˆ’‹v|ƒ“‡v„‹‘Œ•ˆ‚”†Š„‘ž†Œ†–„‡ƒµ‘~’œxƒ–Œ‰‹‹…—~Œ‹‹‚’€s‡Ž•u…–‰pm†‚–˜‰“yx†y~~~†ˆk€~}’‚€ª…ˆ‹†„ˆ„†‡ˆ…ƒ‡††ˆ†ƒ„†…†††…„‰ƒƒ„ˆˆƒ‡Š„‡‡‡…ˆˆ‡‡„‡ˆ…ˆ‡†ˆ†ˆ†‰ƒŠ‰€„†ˆˆ†…„‰†‡ƒ‹†‡‡‰‰„„‡‹…††‚…‘‡€‚‡†‡ˆ‡‰€‡‹ˆˆ‚ŒŠƒ…†Œ„‚‡†‡†ˆ…ŠŠ~ˆ…„…„…‹‡‰Š†ˆ…†}ˆ…††……ƒŠ†Šƒ…ˆ…‡‡†‡ˆƒƒ‘‡‡‰~†‡ˆƒƒŒ‚‹†…††ˆ……ƒƒ•‡‰…‹„‰‡…މ†ˆ†{ˆ~‡‚‘„…€†{Š‚ƒˆ…Šƒ‰ƒ‹Š‰ˆ‹†‹Œƒƒ€†‰|†‚…ˆ‡‰……ƒˆŒŠ‰…‡Š‹‡ƒ‡…’‡‘„Š“”„q‡rŒˆ‹‹Œƒ”ƒ„‡‡ŽŠw‰‡ˆ„ŽŽŒ˜‰Œ†Œ”‡†ˆŽ†‹‹‡Œ}ŠŒ}‹ƒ‹zŒ‘†ŒŽ‚…‚މ‰‡—‹ŒŠŽ‘’ˆŠˆ…ˆƒ†‡…u‰”‰{‡“Š}„—‚ŠŽƒ˜ŽŽ‰ƒŒ”ˆ•‰‘‰…‰Š…‚ŽŒ‰“‡ˆˆˆ‹Š†‹Œƒ†‘ބЉ‹Œ’‡ˆ‹ŒŠƒ‚‰Š…‹‰‡Š…ŽŽ’‰ˆ‹y™˜“…ЄЅ‡Ž‡ƒ•ˆŽŒ“‹‹šˆŠ~†–Œ‡„Œ‘ˆ—‰ˆ•“‚ŠŒxŠƒƒˆ…€Œ†‚ƒŠ‚‡„”•r‹‹p‰’Œ‡„…”„Œ|‡Ž’‹m†Ž‚„Œ“ޙІ˜‰Œƒ”—Œ„‡‰‹Œ‚•~‡|ˆ”‡‹Š”‡…‰‰†‚•‹‹‡’”‹””Œˆ‹‰ˆ}‰’‡v‡‹‰|‰‘’ƒ„—ˆ‡Œ—‡™Œ‘‡‰ˆŽ”…‘‰ˆ„ŠŠ€”Š”‚Š‘‘Žƒ‰‚”†Š‘‡ƒŠ‡–€‡„„Š…†{†‹‹š–”ˆ“ˆˆ‘‰Šˆ™ƒ†Œ{““”‚Šˆ‡Œ‚ˆ‘…‡†’‰‰•”˜„ˆ}‡ŒŒ‹…Ž•Œ‘„‘Œ…‡„‘yˆŒ‹‰wƒŒy‚‰ˆ…‘Š{‘’}t‹ˆsƒ‡†ŒŠˆ’ƒŠ‡ŠŒŽ‡Œ‘Œ—†‹”Ž‚ˆ‚ˆ‘‰‹‡ˆ‡…‡~~ŽŽ~Š•…ˆŒ‰Š•‚Š‘•‹ƒ—Šˆ…•”‡”…‹ƒ€ˆ…„’•†r‘Їˆ~„’Œ…‚Œƒ—‚—…†Œ‚‡‰”‰ŽŠ‡‰‹‘‹’†€‹‘…Ž•†ˆ‚ˆ„’“ˆ“‘‹Œ’Œ‚†Œ‡‰‰‹‘Šˆ”Œƒ‰Œ†’””ˆ‘{“Š‹††ƒ…Œƒ‹ˆ‰˜‹’ŒŠ‰|~‹†ŠŒ‘…’އŒŽ…‚‹…~‹“ˆˆ‡Š‚’x}w‡‡}u‡ƒ‡—‰‹ƒ‰€Ÿ…‹{ƒz{„s‹……ŒsŒs‚„‹~‰ŒŠƒ‰}}‚”|Žyr’ŠŠ‡wƒˆ‹—†˜ru‰“q—…‰‘‚„Š€…„ކЅv…„…zކ’’„‰‚‘~‰~~†~ˆ‰ˆ„„‰ˆŒu…ˆ~}‚‚‹‹†”{ƒˆ’Œ„‡~w¡ŽŒ„‘‰ŠŠˆ…Œ„ˆ‚’vˆƒ‰†Šˆƒ’‚Œ†„ƒwŠ„Žtƒ•‘‚”|•‚Œ…~ŠŽ…Ї€‚ˆvpŒƒŠ…{}s†~ŒŠr†Ž˜‚“‡Š“ކ{ƒ—xx‹†ƒ~ur™€|’„{‚|މ™‹„ƒo’xzˆ’›’„lއ{x‡“pŽx‰ƒˆ{{„„„†„†‹‰‚‡†’u…it•“z„s|–ƒ~Œvy‰‘”nŒŠš‘Ž‹…”…Š|{‹†Œ‘n€|€Š•x‡—ˆ‹Ž…|‡{q„†‰Š•††„’ƒ„s‘†w{€~wyŠˆŠ˜†Ž€ˆ„•‰}ƒ…‹‹’ˆ’ˆ‹‚‰‹Œ‡~ˆ~‡€ŠƒruЉ€Ž‰‚wp‰‰Œ…„~„‰xk…‰ƒ}…‡‚ˆx}‘~ƒ„|“zŠ“ˆ‡‡†‡†‡„†††‡†‡…‡†‡…†††††††‡„…†…‡†ˆ†††††…††‡†‡……†ˆ‡††††††‡…††……‡‡…‡„†††††‡†……†‡†‡†††††……†††ƒ…†„ˆ……†…„‡…†…††††„†‚††††‡†…„††‡‡‡‡†‡‰‡††…††††„†‡‡…†ˆ‡‡‡††…‡††…†††„†††…„ˆ‡„……‡†„†††…‡†‡‡‡‡„†††††††††††‡†††††‰‡††††…†††††„†††‡‡†‡††††…„††‡††††…††††††‡†ˆ†…†……‡†ƒ‡‡†††‡†………•Š…}€v„“Œ‹ŠŒƒˆ‹—~„|•€‚|x}Š™|ˆƒ‚†‚|–‹†–…‡…Œ~‡q‰‘ƒ‚Œs…‡†‹…qЉƒ‰ˆŽ†“…‘•s…rtš}†{{‡–‹o}ˆˆˆq‹•ˆ‹|‹‘€“’yŠ‹ˆ~yŒƒƒˆ‚’Œ˜‡ƒ‡‡}Ž~ƒŽ}•ŠŠ‹‰~s‘Š„wކŽ{…z“ŠŽˆŠŒš„Š€‹}ŠŽŒŽŠ…‹Œ‰Š‰ˆ‰Œyœ‚‚“’…†‡z„Š•‡…Šƒ‚v„z„€’•ˆ„‹‡ˆ|‘Ž‹‹‹‰„|„‡†v‹†ˆŠˆz“Ž“…ˆŒŽ„މŒ“Ž•…Š}‘‘Š’”“„z‚„ˆq’Ž‹†‡ˆ‚‰†€Š„…Ž|‡‹‘…—Š‘•ƒ‘Šˆ„‡}’‘•ˆŠ‰|††‚~x”~‰–†„ƒ‘‰–”‰Žs‹š‡‰‹‰”Š–‰‘ŠƒŠˆ•…r•‹‘{†‘ŒƒŒ††Œ‘ƒ“†ˆ‹‡–“‰ŠŠ‹Œ‡…‡†‰’ƒ†‚ŒŒˆŽ‘‡—†€‘‹‹…ŒŠ€ˆ•Ž•}‡‘’ˆŒ‰‚ƒˆ‹‡ƒ‘‹y‹•‰…„†ƒ††…Ї’‹˜‹‰†ˆŽ‡Ž‚ŽŠ‹•ƒ•†•†Œ„ˆ…Œ‰‰ˆŠr‹‹‹Š‰~†‹…‰Š†’Œ‚‘’~wƒ‡ƒq†ŠŒ…‰ˆ‡Š†ƒŒˆ€‰Ž…Š’ŽŠ—‰‘‹“Ž‹ŠŠ„ޒЉ†Š‰‡†‡‘‚}Œ{‰•„Š„‹’‚Œ‘”‹…˜‰Šˆ’“Š’…ŒŠ„‡ˆ‰…ˆˆ“‰u”†Š‡|‡“ƒƒ}š†‚‹——„‹‡‰‚’‹‰…‰‰Ž‰‚‹‹Ž……Œ‡‰Ž‰ŽŽ…„†‰•†ŽŽ”‹‰šy†„‹†‹‹ˆŠŒ’‡Žˆ‘Œˆ‹’‰‰…ˆˆ‰‹z’™†‡‡†‹‡†‹ˆ‹Œˆ†ŒŽ“‰ˆ}‹‹Œ˜ŠŽ†‰Ž‰ˆŠz€|Ž‘šy‚‡‚’yŠv‚~e~„•ƒzw†ƒ“‚‰ƒ•~~„‡}Š~o…‹‹“„Œ”~Š‚„އŠz†q‡€’‚|y…†~†}Œv…†‚|’‰†}€}’†y‡Š‡uq€‡w{’~ˆž€|ˆ‡‰‚|„Š|Š}‹•y~ˆ~’Œxq‘z†…Šux•‡“u€ƒob~‚|Œy†}u‰z‰‘‰~€ŽzŠ‘€Ž‡ˆy}w’—„yv€~‡‚‹{„y‰Š‡~}€‰‡|x€|~|…‚“…sw‚”|‚r~ƒŒ„…|‚„|ƒ‹Š‚€‰yuz…„ƒ‡ƒ˜”ƒz„‹……‘x…’|„„yyƒ……v‚އ’ˆ›‘“ˆ‘ysŠ{‡‹ˆ‹‰‹rrˆ”‡{’‡‰‚Ž{{‘‹Œx‰Ž”•~ƒ’‘Š’…Œ‘ †v‹ƒ‚†‡uˆˆ™ƒ„‹{u‰Œw‰’ŠuŠšƒŠŽƒ}Ž–•‹ƒq™‹z‹‰ƒ‘…x‹Š†zˆ‡”‰—‡’„‘Ž’‹u„˜‰iŽ€†’„ƒ~“Š“‡Ž˜Ž•Ž–Žˆ‡¢ˆŠŽ—‹Ž€–’Ž€{Š’”Š„˜„Ž„|‹…£~‡‹“ƒ‘‹„oŽ€Œ“•‹}}ƒ—ŒŽz’Œ—v~Žw„††Šˆ…ˆ‡………€„†…†‡‡v…†„…†……‚†‰…Ї†„Š…‡“‰ˆ†Š‡‡…‡†…„……†‡ˆ…†ƒ‰Œ†‹‡††…„ƒ„ˆ†…{„†‡„„†„ƒ…ˆƒ…ƒ†ˆ‰Œ…ˆ††……ˆ††…†‰†„…„†„‚†„†ˆ†„†††‡†‰„ƒ††~‚„‡‰…„„†††…ƒˆ††„†††Š…††‡†„††††‡„‚„†‡†ƒ…ˆ†…†…ˆˆ†……„……‡…Š……†………„…„†…ˆ…††‡†ˆ††††††…††…†‡†„†…††‡†‰†††………‡„†…†‹…††‡…††††…‡…„‡†‡†‡†‚†‚ƒ…‡…ŒŽs–‚ЉБƒ‹ƒ„}Œuq‚‰„t{|ŠŠ’‡Ž„n›w‹Œ…š†zyŠˆƒ€“}‡w‰‰…ˆu€‚€†Œ€„{‡€™ƒˆ…‡Ž†ƒ‡‹uƒ‡y}‰zŽ}ƒ~—€…xˆ†Šp•z–‰š…ŠŠ†•ˆ}†}„„xƒ‰†‚“’ŽŽ„‹xx~o€uŠ“…yˆ€€‡{™Ž…ƒ…wz”u•…}Љ‰Ž€t–|„”†Œ‚ƒ‡…‡Š†k‚zˆˆ‡‡…††}ˆ†{’w…o‰‰„€‡Œš‚‹}ˆ—w‡‚zŽƒ‰~|ˆyƒ„†‚…“€|}†…’“…~††…ˆ‡…††…†††‡††…†††…†††……‡‰†††††††ƒ††††††…†††††„†††…††‡†††††…††…†‡…Œ††††††††††‡††„†„†††††††‡†††…ƒ†„††††…†‡†††††††††††††††…†††Š†††††††††††††††††††††…†††††††††††††††††††††††…††††‡…†††††…†††††††††††††††††††††††††††††††††††††††‡††††„†††††††††††††ˆ†††††††††††††Œ‹‹~ŠŠ’ˆ˜„ŒŽš|“}ƒ‚Žw‡{~“ƒ—‚‚~Š~Š‘†’ŸxІƒ‘‡Š†Š„z‘‰‡ˆ‡q…Š‹~ˆ…yŒ‚|’„€‰•…’Œ•~—ˆzm––Œˆ€z‡Š˜ˆŽqzˆ‹Œu‡…ŽŒ‡‡ŠxŠz‘Œyv}ˆ„‡{…ˆ…”Ž’›†ˆˆ‰‚€…‘‡ŽŒ‰ŒŠŠ‡u€‡|އ‡{uƒ„‚‰ƒ’‹…‹‹£z‰’†…‘”‚††’‘~~ˆ{†ŽŽˆ|‰’‰‹Œ‰‘‰•‹~ˆ„zŽ‚}‘†€Ž–Œˆ…ЉŒˆ‚€‰…iˆ””€}Œ}’‡ƒ„‹„Ž„}‡Š“‹‰u„‹~~‹Š‰‘‹…“‚s‹‡…oŠ„ˆˆƒ‰‘ŒŒ…‡ŽŒ†‹‹„‹”‰‹Œ”Š”•Ž‚ƒŠŠwƒŠ‡‰‰‹‰Œ†‰ŒŽ†|Œ”„†•…‹Š…˜‚‹‘ˆ‚—ˆ…‹’’†šƒŽ‹zŠ‘ŠŒ‡„‰Œu”…‰ˆyƒ‘‘~‰„ƒŽ‚–…Š„‚†‘Œ‹Ž‡ƒ…ŠŠ‡†‹Šƒ‡‹…‹”“Šˆ~Œ‡•‰‹Š‰”‡„‘‰‡„‰ŒŒŠŠ„„‡Œ‚ˆ‰‘Š|•„†‹‹‰ˆ‹‚’‰„‹†ˆ”‡Œ†‚‰|~ŠŒ‡”ˆ…‰‰Šˆ‡‹…†‰„ˆ†…†‡††…‡ˆ…‡‡ˆˆ††……†…ˆˆˆ„…†ˆ…Š…„‡„‚ˆ…ˆ…ˆ‡ˆ„†„†‰„†…†…†‡Œ„‡†„‡†……†ˆ‡†„‰„††…††‡ˆ†‡†ƒŽ…‡…„……‡ˆ††„……†ˆ……€„†…‡„ˆƒ†…††‹††ˆ„‡‡Š…‡‚ˆ„††ƒ‡‰„†…†‡ƒ‡…‡ˆˆ…†‡ƒˆ‰…ˆƒ†ˆ†ƒŠ„‚……†…†„‡†ˆ„†‡ˆƒ†ˆˆ†‡‰„†…‡ˆ†„‡‡ˆ‹‡…‡ƒƒ…†„…„‡ˆ…‡……†„ˆ„…„††ƒ…€ˆ……†„†ˆ†‡„Š‚‡……†‰‚†ˆŠ…††ˆƒ…ˆ‡‰xˆŽ†€Š‹Œ‰{‰Š€}p{‡‚tz‰‡…‘€…‚‘‚™ˆ}‡t|ˆz{x…Љ‘„r–…{‚€‡}‰„‚‡y†“|…~”ƒ}ЇƒŽ„‘yŽozš‰…‡xŠŠ…‰‚xqŠŒ’sˆŸŠˆŒŽ‰‚Œˆ€ƒ„ˆkzˆ„“‹”‰Ž‚„~ƒƒnŒ‡ŠŠ›†ƒ……{sˆŒvnˆ}€~‹†‰‰w‡”‹Ž~‚‰s‘„†‘ˆ€Š†‹††Œ„‚ˆ‹‚ˆŠy†Š‹‰ƒƒ|ƒ…ƒ€}ˆ‡‡}x€Œw†‡‚Œ‡ƒy„‰ƒŒ…”Š~Œ‚‘~“x{‡€w•ƒ€‘‡ŽŽŠ~ŒŽŠŠƒ‡€ˆ“‚v’ŒŒ‚…‹ƒŒ‘˜‹‹˜’z‚’ˆ†Ž†~‹€†…w†ƒ’‹v…‘ŒŽ€Žw‹~ˆŠ†‚v„Š‹‡zŠˆ‡‡ƒ™u—…s†‡‚ˆrŒ‹’ypt‘‚Œv‚–‰~€‰~Š}‹ˆ‡‹sމˆ{‹‹‡‰Ž‹|Š€ˆ‰‘އ’‰Ž‰‡Š|‹{rŽŠŽ‹‡z‡€‚’’އ’’…„€˜’Š“’”™Š‹‚Ž‹–ŠŠ}‰ŠŽŠ‰…‹…†‘Ž‹‰‚‰Š‹o…”•„…ˆ•‚‡†y•Žˆ‡‰„Šˆ‚q’‹v‘†‰‡ƒ‡Ž’‹„Œ’€‰…‡‰‹‹tŠt†ˆwx‰Š„…ˆƒŒž‘‰‘u†‘€†~–‚v„”‹ˆ‘ŽŠ‘z”‰z†ˆˆ~kˆŠ’…‘œ~Š“Œ}‰…ˆ‚¥†x“€‡ƒŠo‰‡Œ~t‰…†’zwŽ“†ŒŒˆƒ„™”Œˆp…’‡o…ƒ‘…ˆ†‰j’”‡ˆŠ‘’‘–ŠŽ†‰“yœ~[—‡…އ…†Ž—Œ‘““›Šˆ‚™Œ„…Ž‹Žƒˆ„‘Œ‘Š~€x‰Ž‡Œƒˆ„|‡ƒ›€”š{Ž’†t‹Šy‰“†ys„•†Œ‰”Œ‘Œ‘{Š“‚{„„ƒ…ƒƒˆ›Ž’Ž—–Š“‰‰{†’‹‡‹ˆ„‰‹“€€x“x„ƒ‘‹‹œŒŠz‚‹•‰„“}‰„ƒyt‰}ЇxŠ–ˆ‰‹‡sw‰{šŠz’†‡†z…‰‡—„’…—~“‚p“”—}}|ƒŽˆƒmx‹Žu˜”Œ‚‰‰{†‹yˆ“t}u‘Ž„~ˆ„„–—“Œ€Žx†Š‹ƒ—•‘ŽŒ†ˆz…†u‹ƒŠƒz–ƒŠŠ–‰‹‘Œ~’‡“‘ŒŽ~‰“”‚†}Š™‹Œˆ~‰zއ}…„‰~‰’Œ‰x†‡s‹•—Š‘†‹y•“ŠŠŽŽˆ…zznˆ€Žƒƒ…ˆŒŠ…ƒ—~’‘ˆ{Š”‰ˆ„{ˆ‰sŒ‹„‚y”€‚Ž‹™‘–~…šˆ…„q‰‰„ˆ€|†€‘qƒ’ŠŒ‹‹x‹”ŽŒ™‡u•‚~ˆ‰…’Š~–x™‡t‚ƒ‚…‹v‰”–…Žpo•Œv€•Œƒ‚Š€Šƒ‰ƒ‹’ˆ…tˆ‹|’‹ˆŠˆŒxˆxЋЋ†Ž‰Ž…‰ŒŒ|‰ŽzЉ†‹}ˆŠ€}””Œ‘ƒ„‚˜Œ‰†™‡“‹‰’‹Š€‚•Œ‰‰…™’ˆ†‡Œ‘“‹p†Ž‹ŒŠŽ‰~•ˆ‘‰‹Ž‰„‘{‰}s‹‰‰Ž}ƒ}„‚†Žƒˆ†Œ—‰†Š—–‡{Œx‡’y}‚—”†yy˜‰…Ÿ”Š…„›„‰€ˆ‚†‹„‚ŠŠŒoŒŒ‹…}‘u‚Œ‘™“s‹Š‰‰†’€Ž|”ŠŒœo‘zlz„„•v‡ŽŽŽ‘q~‹Šr‘Œ‘„Ž€Š}v’œŒ||…}‹zƒŽ•œŠ€‘ƒŠ…‰…|ƒŒƒˆ€Šˆ€r…‰~ƒ…‹…p‰Ž…~‚‰’†‹Š{‘“ƒ‘‰‘†•‹Œ†„‡‰ˆ‹“x‹“‹‰Œ„ˆ…‹”ƒƒ}‰~Šw„’‘„ŒƒzuƒŒ†ˆŽ‹Œ‚‘vt…xqƒ‹‰{‰y†‹†Œˆ|ƒ‰Œˆ‹ˆ††–‡’{ˆ“ˆŒƒ••€vއq•…ŒŽ‡Š“|†‰•ˆu‹‚€†‰‘˜‰ˆ‡ˆ‰’ˆˆ…ž‹’Œ‚‹Œ‚ŒŠ„‚z}’‹‘ˆ‘’ŒŽ„ƒ†šŒˆ‡‹‘Ž‘’‹Œ†’†ˆ‹„ˆŠ‘†v””Œ{†…‚†ˆ„ŒŠ•ŒŽ„‡ƒ‹Œ”„Šˆƒ„ˆ‰”‹‰†Žˆ‹w‡ƒ–…~‚’…Љ‚ˆ†‹ŠŠ‹‘…Œ‰€‹‡‡Œ”™ŒŽ‡‹‹‰‹‹’‰™‡‰‹z–Š›‡…ˆŒ„ŠŠŒŠˆ•‡”Š’†–šŒˆ}ˆ•…ˆˆ„“’ŒŠˆ…‡‡{ˆ…‡„ŠxŠˆ}ˆ‡ƒ†‰Š‹‰‚‚‰ˆ„„’„…Ї†u€„€j‡ƒˆ˜ˆƒ™ƒŽ‰‡‡ˆ…„z‰‚‡‘„‰”‰’‰ŒŒˆ‰†…Іˆ–z……‡†Š‚ˆ|‡‡€…‚‰‡„ˆ„„€Š…„‹†ŠŒ‚‚‚ŠŒŒ|‰‡‹ƒ‰|†Š‚‡†ƒ€‘‡vЉx†‹‹Œ‰yŠ~„„‰Œ„Œ‰‚ˆƒ€‰—ˆ|…„‰zˆ‰†ƒ‚‡|Š€ˆ†ˆˆuˆ„€Œ€‡ˆ„†x„‰’|Šˆ‚ƒˆ…ƒzp†ˆ„ŠŒ…އ‚‡‰{|„Œ‹ŒˆŠ‹ƒŽƒ‚‰ŒŽ„€…†„Š˜Šƒƒ~ƒŠ†Œ~v“ˆ”}Œ‚…‹‚†}ymz…ƒ}ru‰„†Š}r}‰’ƒƒ|‚~w~‰……‰…Œƒ|ˆˆ†–u…‘ˆŠy•‡‚…p…‘Œ‘ƒ’Ž|„j{wƒ†‰w‡~†Œ~€v†—yŒˆ‹’}{’˜„†€„xŠ„z‹{†‘…’„€‹€~‰xeœz‹†…„‚wŠ~ƒˆs…}{qy|ƒ‹Œ„y‡†…€†‰t{˜‚ˆ‡Œ{‰ƒzŠwtˆ€z”‡}{{ƒ}…}v€|Œv†}‹ƒˆ‚ˆ‹……‘r†|v{€‰††…„€„www†ƒ„…Œv„‚˜”tІ†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡‚†‚ˆ…†ŒŒ…‡‚…„„…†ˆ…‡…‰…Іˆ…„‹†ˆƒ‰‡…††††Šˆƒ……ˆ‰†…„‰†…†‚…†…ƒ…ˆ…‡„†~„ƒ‚ˆ††…‡†…†„†s…‰…„„ˆ†‰……†‡ƒ…ƒ†„‡„„„Œ…††„‡…††‡†…†††}†‡†‡„ˆ„†ˆ†‚…†‡†………†Ž‡„…†ƒ…†††‡…†„‡†…†……„‡†„††…†…†‡†††…†ˆ†…‡…ƒ†‡†††…‡ˆ†‡†„†…†ˆ††††…††††‡‡……†……††„……ˆ†…†‡‡†‰†ˆ…†ƒ‡‡†…‡‡‡††‰†‡‡†……‡†‡‡ƒ…ŠŒx‹…ŠŒ‘‚‰ ”ƒƒ—{|ƒwm}~ŽŒ‹ƒy€™‡…‚yƒwu‰‰Šƒ‘’u|}‡oŒ‰‚vˆvx‡€†{…ƒ„„’~‹oqŽ–ƒŠˆsˆ„ˆtŒywˆ„ŒrˆŽr‚…Š‘~•ƒ“ƒ…‡–qy‘„ƒƒ††…„‰‚‡„s†tƒˆ–‚‡Ž‚€t‹x‚„…}‡‰Œn†•ŽŠz†}~Žƒ‡‰…‚ˆ—‹•‘•˜v‚†Šˆˆƒ††ˆ‰}ˆ„‚„r‚€ˆ†€u‘†‡ˆ‡~Œ‰…‰Œ}“†{…}Šˆ|…yˆx‘p‰ˆƒ—•ކ“ˆ’‘…‰…Ž‚—€…w—‚Ž„‚’…‹‘›ŽŽ‘z~•“‡Œ|Œ„…z{~Š…{Œ–Œ‡vs…ƒ†u‘‡‹‡~‰…‘€–‚ž|”ˆp‘…sŒŽŒŠ|‹nx‡‰u•“ƒ‹‡‰{‡yŒ‹Š|„yކ‡~x‰„•“‚‰~‚‹Œ€™†Œ‘ƒxŒŽ}ŽŠ†u”…††‡Œ‘Š“ˆ‹…—‹‹ŒŠ–˜€„Ž””‹‘|‡„‹‹†……Ž‹„•’‘ƒ‘x„Šo†—•…”y„‰x–“ŠŽŽ€‹tŒ~oƒ„}“„–“ƒ„Œ‰ˆ‰š”ˆ‚†y›p|„}~‰€Œy“““‹‹ˆ…ux¡xz“‡ˆ‰ˆˆ{ttŒ‰|—{Š|†”‹†‰Šˆ„}}‡{…–†–™›†˜v’{“’……ŒŽ€‡—‘€€sƒŒˆŠ‚‹Šw|ƒw‘’…Œ‚§†‡s“›†ˆ‚}{ƒ~Ÿv”v–•f™¤†“…† ~¾Š•‘Š–Šy‡’†w›“kv‰’Žˆ€~j’ŒŠŠŒƒˆ~ˆ‚”•ˆ„ˆw|˜§‰‚~‚”|‘‚’ˆŒ‡“‡‡‚°šxŸ€…w…Ž”˜usŽiˆ§z§tŒ™s‡{pŠ™{wŒ“Ž…x€Ž‰††‹ŽŽ„„€‹{‹–™{‚Šœ„Š|Šxd~Œ‰ouž„Œ•sz”…zˆ—•…–•|‚}ˆ†ŽŒ~ž‹x‘r”hˆo‘vŠo†—˜”‚|tx‹ˆ‰–„ž’n€ˆŒwƒ„‚w“|‚‡“‚™{„Œ‡~Š“{‹~’—x•Š}€‹‹{Ž•™‰ˆyŽ‡ŽˆpŽŽŒªx …‘ŒŠŒƒp‡†…ˆ‰‰˜‘xƒ~“ޅЉ‡‡†ƒ’Œ‚—‡ž…“‰ƒ‰ˆŽŒ“’„ˆ…ƒ|Ž‹~Ž‚pƒˆ“„}}…ˆ‡’‹ƒ“‰Ž„‘‹‰‹€y…||‡ƒzŒŒ…‚|‚‚“—”ˆ’”}ƒŒŒ€Ž’†}‘ˆ~ˆŸ‹€†’‰}ƒ~Œ„‡‹„wˆ—Š‘…’ŒƒŠ|©…yŒ‚”w‹r‰Œ“‡†Œsq—€‚}ˆ’}„‡‚†‚Š…Œ…‚y…‘…{‹€‘‡Ž‘qŠ”„‹‘‹š‰yŠ‘‰z‡–|lŽ‚r}ˆŒ€Š‰Œƒ™‡ŠŽ‘œ†Ž˜Š”‹…Œ‡†Ž~†…‘„Œ‹Ž‚„‘Š’Šš‹“{†sŒ—‰~ˆ—”}šŒŒ…ˆˆŠŒ‡‚”ˆ‡†ƒ†„‹Œ‡”‰’Šx’†‘~‰Œ€‹‡{›ƒ†€’ˆŠ™‹“‘’y„™…†Œ…€‰†ƒ…w€}ŒxŠ“Œ|’‰t…“Œˆ—|‡ŒŽŠx…‡…•‹“z›z™Šq†~uŽ…•‡‘os“†u„’—|ˆŠ‰x…€Ž•ƒ„t‰‹‡{‘“Ž{Ž}ŽŒŠƒ…‘ˆ‘ЇޅБ}•’Š…’‘†zˆŠ}~ˆ‘Ž‹“Ž€‡‚‘ˆŒ‹“–‚‹‡ˆŠ’Œ‚…}Š”Œ„ŒŠŽŠ|‚–”q‚™”|”‚†’y–‹Š„Š‹…Œ€uŠnˆ…Їz‹‹ŒŠ‰‹ˆ{†‚Šj’€•‡„„€˜Šrj‰}pˆx‰€‚–ŠŽ‰px§ys‚y†}“yq‰…†lˆ‘“Œu‚—Ž„ˆ~ŠŒzŸ‚”z}{|‚…„„„œ…|–yx†x£Œ}Šœmƒ|~Žvo“‰xw„„‰”„‚~q~‰ŽˆŠ‡„†ˆžŒ‚Ž|tˆrpn€|ˆ„w‰…‚‚w‡›|ˆƒwop…wm‚›ƒ‡v”‚„‰}€Šz~ˆuŠƒ“……|†˜s‡r’‹“zƒxpuq†{…x€vos®„•{tsƒvƒ•Šp|ƒ}€„‡˜š‡„“x†Ž|ˆ„…ˆ|ˆr‡…ˆ‹a„‰Ž}‹‡ˆ‚ކ€ˆ‡Ž…””‚w…‰p—’ˆŠŽ„‘†~‰‰m‡……“‘ˆ˜‹Ž“‘ŽŽ…ޑޓ‰Š‡„‰ƒ‡Ž‚}Œ{‹•„ˆŽ‹Œ’ŒŒ‹„†–‹Œ‡Œ•‚ˆŽ‰Š‘‰ˆ€‰‡Œ‘†s“ŒŒ{†’„‡…ƒ’‰„Œ‘†–‰Œ‡‡‡‚‘Ž”ŽˆŠŽˆ‹Š‚”މ†Œ†ˆ‹Ž”ŠŒ€Œˆ‹‡‹ˆŠ–}‡ŠŒ‹}‡‹Œ‰”’Š‘Œˆ‘†‹…‰‘|‰…z’—‹‡‰ˆ†‰‚„ˆŽ†‰ˆ†‰ŒŽ‹‹~Ž•ƒ‹‘„”‡Œ†ˆ‰‹†Œ‰xŠŒ‹‰„}‡ˆƒ††ˆ‡‹…ŠŒ€}‹ƒ€{ކˆ‰‹„‡ˆ‰‡€ˆ€Š‰‹ˆˆŽ‡†ŽŠˆ‡Ž†‡ŠŽ‹”†’‹‡ƒ‡‰ŽŒ†Š‚‰‹„…ŒŠ‚‰„ƒ„މ„Œ‹…ŽŒ‡ŽŠˆŒ†‰‹ˆ‰‚†‹ŠŠ}’…‚Œ€„‹‡…ˆ…„ƒ‡Ž‘‡Š†‘„„€Šƒ‹†‰‰‡…ƒ‡ŒŒƒ”Žˆ~Ž…‡†ˆ“‹ŠŒ‡…Љƒ…Œ‡ŠŒ††‰†ˆ…‚‡ŠŽ„‚‚†‰„Œ‡•Š…€ˆŒ†Š“ƒŒ‹~‹ƒˆƒŽƒ„”|†‡‹†ˆ“‡†‹‰‡‹ŒŠƒŒˆˆ‰†„‹‰Š‚“‹’‡‘ދЋˆ}ˆŒƒ„„Ž…•{v’ˆqЇ‡‰†„ˆ‘‡Œˆ„‹€‰ˆŠ‰Œ‘Žš‡„’Œ{„…ŠŽ††‰Œ‘Œ‘‚€„ŒŒ•„…ŒŠŽ‘…Š’Ž“•ˆ…’‰“’‹‹€ƒ‘ˆ…}‡”’‡v’‹„‹|‡Œƒ‹ˆ…„“Žƒ˜Œ‚Œ‹}Š…—‰ˆ…}†Š€›‹›‰}‹’’Š~ˆŒ›ˆ–|‡Š‰ƒŽ˜†“Š‹‘ŠŽ‰‚‹Ž€ˆˆ†Ž•‰’‘…„‹Š˜‘ˆ‰‘}’Œ–Š‹‡‡ƒ’„Œ€–ˆŽ’މƒ}}ƒˆ‰‰ˆƒ‘Ž“‘‘†…†v–˜‰Š’ˆ–……“}}{•ˆ{z……ˆ”Œ†™‘~Ž–Š‚‰†„ƒ€}…Ž”“‹s‡Žˆ‰ˆŽvІˆ…y‘s|„ŠŠ†‡…‹‰ˆ~—v“t…‡ŠmЉކqr‘‰„s‘Œ•†‡Œ|”†‚‹’…rƒƒ|””‡ƒ•‚…x„Ž—ކ‡…Œ’v“Š€w‹‚ˆŒ„Œ‘z†‘‡Ž’‰‘†ƒw‘”Ž”‹’‰–‰„‰‡‹ˆ‘“‰†”†•|Š…ƒ…Š…‡€‹}”‹o…‰Ž†…”}‹‡}–}ˆ‹’„Ž€†‹sŠv”ƒŠ„}Žy‹‚†Œ…†‡‹ˆŠ„‹…‡ˆ†‡‡ˆ‡…‡ˆ‡‡„‰‰„ˆƒˆ‹…ƒ„†ƒˆ†‡…І‡†‡ˆ‡………†‡‡ˆ‡‰‡‡ˆ‡…†ˆ‹€Œƒ„„†‰…Œ‚†ˆ‡†„ƒ†…‚Š‚‚‰ˆŠ„…‰‡ƒƒ‰†‡‹€‹†…†„†ˆ‰Š‡ˆ‡„‡Žˆ…‰†‰„ˆ„‰„ˆ……†„ˆˆ‹~ƒˆ‰ƒ‹‡†…ˆ‡€‡ƒŒ€ˆƒ…„…‡ˆ|„†Š†‰„‰€xƒ€‚‰…‹„‹‰ˆŽ‰ˆŽ‹…†‹ŠŠ‚‡ƒ‰‹‘†ƒŒŒ…„‰Œ‚ŒŒ‰ƒ†ˆ„‰„†‡‚…ˆ‡‡ˆŠ†‹’†‡‚ƒ‰††‰‡‡Š„„‹~€‹ˆ€Œ|ˆŠŒŽ‹€‡Œ|ƒŽ‰‘ƒ—˜w„…ƒr‹ŒˆŒ†‰‡…Œ‹‘€‘‡ˆƒ‹’‹‘Œ˜‰’“„Ž‹€‰Œ‚‘‘‰‚Œ„‰•„}{””~˜ˆ‘‚’†–Ž‹‘“‚š‰ˆ‰”ˆ‘‰‰Ž‡†’|…ІЕŠu—ˆˆ}†’‡‡~‘„…Œ•Œ•„‘‰‡~ƒ”ŽŽ‹‡‡‹Œ‡ƒ„‹‡‹†‰‰‰Ž“ƒ•„€††–ŽŒ‰Œ‡’|†ˆ€‹‘ކ‘}Žˆ„Šƒ‹‹Ž{Œ—‡„ŽŠ‡Š€Š‡•‹’Œ‰†Œ‹‰‘Œ‰~Œ‰›Œ‘‡ŠŒ‡†ˆƒ‘‡‰…“‚~ƒˆz“–™q†‹~{‡‚šz’‡†Œ—Š…ˆ‹v{{|‡’“k‡€}m|ƒ‚…–”‚Œƒ‘}Š‚‰‹‹~’€v‡ŠzŽ€ˆŽ‹›}š}‘‰€†‰¡”~ƒ”‹‘…t™Š†ƒ…{‰v|ˆvƒ‹…~Šˆ‹‚{ƒ‡ŸŠˆ€}„‹…{“œ™“ž|¬¨{h•†ˆ¡Œˆ¥ŠŠ‰‚ˆ…’’€}–‹”“”zŽ—ˆ‚‚ކ…{t~‹‘š‡†r€ŠƒŠŠ„„|„¦¨“Œ‡Œ„‘€yt{†”ˆ‡„€Ž„†“x‹ˆ‡ŠŠ—œuz‰}rŒœu†rŒ™z‰ƒ}™}—‰—‡‡y‹’‰ˆŠƒ‰†‚~‘~‚{•‚Œ„Œ‹œ‹“”‘y†…˜ŒˆŽ˜~Šƒ‰„v†‚Œy‡”‹Œ†‰u†‡„“†y‰‹‰{†Ž„–…’‚˜u‘„r„ŠŒ~‡xˆ…•€ŠnxŒ‹u‚•Œˆ‚ˆ‰€ˆ…•‚€wŽ„ˆЇБ‹Ž‰‰Ž‡ˆ•Žˆ‰Žzއt‘Œˆ…{Œ‹ˆ‚’ˆ‘‰Š‘Ž‹€”•‰‡–—‰„‡—‹‘€—|‰†‹ƒ‹ˆˆŒ•‹ˆ“‰z‡‹ŠtŠŠŒ’“‚‹…v–’ŠŠŠ’ˆŠ{xyu‰†‡|†އЅ„—¦•ŒƒyŠ}€¦ˆˆŠŒ€“€|Ž|x™‘‰‚}—“Ž˜y…ˆ{qc’‹†œ„‡¡}‰Œ…`„š†”‡ˆ„“x®YXo’™•·‰ˆp“‡zm†}|—y‹„u~{œ†w’‹s”ž–‡|’—zƒq–†““x^Ž“€‚‹ˆ†„‘bˆœ”‰’u‹ˆ‹›‘p•ŠŠx…y€zƒ€zž‰|{€‚g‰]‘ŠŠ•~“‹fr~†Ÿ„c‡š€ˆ€ª•fž„…~Œ~—|‚z€Šl‚ˆ}–p˜{‚„r‡—…„„š‘ƒ‰¦w‘rnnˆq‹‘ˆ~«†‰„‡„‰††‰‡…ƒ†††ˆ……††…††‰……ˆ††††…ˆ…‡‡†…‡††††††‡‡ˆ…†„†‡†‡……††…ƒ††ƒ…††‡…†…††††††††††‡…€†…††††‡Š††††††‡†……††††…†††††‡……†‡…††„‰†‡‡ƒ†††††‡†ƒ†††…††…‡‡…†††ƒ††‡†††…†††††††††‡††‡†††„‡††††††‡†††‡…††††…‡‡††††††‡††††‡…†††…†‡†‡†††‡†…††††‰†††††…†††„††††‡†††…‡†††††…††††††‰ŠŠtŽŽŽ‹‰ƒŠŽ„‰Œ†”ƒŽŽ~w„Š„r„Іˆ…Š…ˆ‘Œ‡€Ž‡‹‡Šˆ‰ŽŒ‰–‡ŽŒ…ІІ’ˆ‹Š‹†ˆ†Žˆ‘ƒ~‹~†“ˆŠˆ‘‚”„†’‡~•‹ˆ‹„‹‚‰Š‡ˆˆˆ“•…v–‹ƒŒ}ˆ’‰‰†…“…€Œ‘|—…‡‡ˆ‡†“‰•Ž‹‡††ŠŽ‹ŒƒŠ‹‡ŽŠ‹“‘‘Œƒ‹‰”ŠŒŒšŒ‡”€Š†Šˆ†ˆ‹ˆŠŽ‘‰‹ŠŒŒ‡†‹ˆŽ‘„‰{œ†ˆŠ‡†„…ƒŒ‰‰Œ‡…‘Ž‹ŠŒƒ„}‹Œ†”‡ƒ‰…Їˆ~…|…„‡ŠŠŒˆ‰‡‹z”vƒ€’•š‘š’‹ƒŽ„‰‚Œ‚—w€…xœ–‚”‰‰ƒx†‰Ž‚ŒwŠ”‹ˆ˜‚…ŽˆŒ€Žr–ƒt{ƒ’kƒ‰’‡sxx–ƒ›„™v‡ˆŠ€ˆŽ‰…ˆ—ˆqŒ›„|Œ‘–„ˆŽšt‡‰†ŠŠƒ…~…‚ƒ’‹…”’}‰ˆ€cŽ€x†¢¨p|‰—ˆ‰—Žwˆ™˜™”…”ŒŽ“~‹„†‡…†…¥‡ŽŽ…‹‡}ˆ‚–ކ”‹Š|މ~Ž‹ŠzŠ”{‹‰˜‚‰~zŠ€‡„’†€‹~xŒ‹v‹„ˆˆ‚ˆ{“š‹”„‹’‹‚„ˆƒ†„t†~„‚||ˆˆ|„•„Œž‹Œr}‡‰Š„‹‰|sŽ€‘†|‚‘‰Š{‘{‹Œz‰ˆ†‘ƒŠ“ŠŽŽ„ˆ†xˆ€ƒ}xŒˆ‘Œ‡‚xtˆ}ŠŽ•…„‰Š€ƒŠ„—’ƒv’…w…†‹€ˆŽ†t††‹˜ƒ”‰Ž…Œ‹’‹{’’‰tŽŠˆ‘w‹„œ}‘†’ŒŽ›‡Ž•’ˆƒ—…“‚Œ…ˆŒŠ†…Š•‰‡€…‚ƒ‘€“˜ƒ‡x‰‹‘”Œ‚Š€–ŒŽŒŽ–Œi{‘{‰‚‰ƒˆ‚†›Š„„Œ”}……Љ†ˆ„Šˆƒ‡–ˆˆ„‘”—€wŒ‹†r•ŒŒŒƒŽ‚ƒˆ‹—vˆˆ†…‹‹’œˆ‡†‚‰Œ‡…‡–’އƒˆŒŠ‰Ž‚‹Ž}“”~‰Ž‡“‡‘ƒ”ЗЉ„‹“Ž’‰„‚“~Œ‹|‡Œ‰u’‹|Œ‡„ŽŒ…‡•…‘–‘ˆˆ‚„‘‹„„Š…‰Œ~”ˆ—‡‰ƒ“†…xˆ’—‚}‡…Œ’‰†‰Š‰‹Š…ˆ‡‰ˆ„ˆ††‰”“…‹‡‰–‚‡‰z–Œ”„‹‹‹‰Ž†’Š„“‡‘‡…˜—ˆ‹~‡‘„Ž…ƒ†ŠŒŒ†Ž‰yŽ’†‰‰Œ‚ŽŠ•Ž‘x|††rŒŠ…‰‡‹†…‹ŠŽŠ††‰†ƒŠ“Œ†•‰‘‘ВЉ‡‹’’‹†‚‡‚ˆŽ}|‡”††‡ŠŽ”Š‹’“†–‰‰ŒŒ“ˆ‘ƒ‡‡†Š–ƒu˜‹Œ{‡”ƒ‰Šƒ’…“}•‚‰…‰ƒ…””‰Š†ŠŒˆƒŠ†…‘„‰‚‘Œ‹“ŽŽ–‰‰’‹‰–Žˆ˜ˆ‰Ž‘‚‘‹‹Š‘ƒ‹‡‘Žˆ“„‹‰Š‰…Œ{™‚Љ…†…†ˆ…Š‹“Š…ƒ‹ŽˆŒ„Ї~Ž’…•…“„‹…Š‚‚†|ŠŽƒŽ‹Š}‹Œ‚Œ}nzƒ’z{Ž|„Š–†‡†‹{~†ˆ‡•†z‡ƒ‡‰ŒˆŽƒ‘ˆ‹ˆˆ€}„Œ…|Š„‡Š‚ŽŠ„‚ŠŒ‚€‡z€‚ŠŠ‡}‹ŠŠ„„…vˆƒˆtˆ…ˆŽ€‡ŽŠ”…††‚ƒŠˆy‹Œ”u„„ˆŒƒ{…ƒ„‰s‹ˆ’‹›„ˆˆ‚ˆ‰y‰{‰‰‚‡‘ކƒ‡–‰Ž„‡†€†„ˆ…Œˆ‹Œ„‘‡†‰‡Œ…„Ž„Œˆ’€‡”}~……‚ˆ“†}y‚|‚‘ˆ‹†|‚†ŒˆŠ‰‘ˆ€‡‰~…Ž€€y…~ƒ‰Š‡Œ…Œ‰‘„‡`“„‰„f…‹Šxxsf†‚—…y{”ŠˆŽ˜Š™l“}~’…½ zuŽ•¥…‘}Œˆv‹lpŠ{‰“lˆ|U“‡}›‹‰‘™{}…›y•vŽ‚˜ˆ’Š…†‰€šn‡~ssІx‡”x{‡zª…Œ‚“rŠx‹ˆŠ ˜‹„ƒˆ„›…“s‰~w…œ…”‰|…’„vqvƒ¥‰zŽ…‰f¢–‡‚‹…{‰wŠgŠš†€~rŒ‹‘ˆˆ•„rkˆsœ}•–ls–}twƒx}‚‚‘}„„…tl€§ˆ„†‘lŽ€Žt…‹†‘†€w•ˆt’Œy›r‚‰…Œ—‡Š‹Šˆ†Š‹„‰‡…„„€…‡‚Œ…„†„ˆ„†‡………ˆƒ„†‡‡ˆ„†‚‡‡†‹€†ŠˆŠ‚†ˆ„…†‡‰†‰ˆŠ„ˆˆ‡ƒ†‰‰‹‡††‚‹ƒƒ‹†‰ˆ‰‰…ƒ†‹†…†…ˆ†„ˆŽˆ…‡‡ˆ††Š†‡‡„„‰…„„ƒ‡ˆ†‰„†„„‡…†ˆ‚‚‚Šˆˆƒ‡ˆ‰‡ƒˆx†……ŽŽ…‡ˆ†…Œ‰„‚‰Š‡ƒ€‡Š‡„‡‹ƒ‡‰‡‡†…ƒ‰…„ˆ…‡†‡†…‚„Š€„…‡ˆ…†……‰ˆˆ†…†‡†‹‹„‚…ˆˆ‡‡ˆƒŠ‡ƒ‡†ƒ‚‰ƒƒŒ„†‰‡ŠŠ‰„‡†Š~‚ˆ…„†‚‡„‰„‹‚€„s‰‹€x„‹‹w’™pj…†yzft“~yŠ—‘ƒ€q}x—І‹spsŠy”‹{–{p—ŒŠtƒ‡‚kŽ‹t”r{–†q‹‹ˆ}Œ‰™hu˜‘~w{Šw€q–„Šs~ƒ‡ky|‹šŒ“†x“ƒ‰ƒ‰„n~Œ€u€o§†Œ‚zufyww•ˆ~{ˆwz†k~—„j‰n…Š~v€r—xŠ|”ˆ„‘s€}“‚wqˆˆˆ‹‡…Œn€…t‹‚ЇŒ‚‡||ˆ™‰ˆ|…ƒ‚‰Š€ƒy’“€„mv~}z†Ž}©ˆˆ…‰Šƒ‡ozsx‡|™›…z“ƒ‚Žƒ‹“Š~Šˆ‹Šzy—ŒŽ€ŒŒŠ‹—†‡„ƒŒ‰›†ˆŒ‰~ˆ†‰‹‹p‡Œ‡{ŽwŠzˆ‚y|‰†‚‰‹ŠŒ„Œœyzs‹ˆ…ˆ…vƒ‹’–‰quƒ”sŠŽˆ‰‹Œ‹}ŒŒ‡…z‹{ˆ„Ž”‹‡˜v‰z‹†‹‘‰”‰|‡Œ~q€…€‰Š‚‹ŒuŒ‰rŽŒ”~‹Š•ˆ‘m—›”€™†—Š˜“‡‰¢“zˆu‰’“ˆ{‡”„Š—‘‰Žƒ{“{‹vŒŒ……{†–{‘Ž}’„‡†„…†xkŽ“Œzˆ}‰‡‡‚…“’‹††‡‹ƒ‚Š„~hˆ…ˆŒ‡†…‚w“‹ˆ‘ŽŽŠ~‚…y|ƒŽ‡ˆ”¤†“‚‡‰“Šƒˆ‡ˆ}‡€v…„†“sŽl†lЇ†²Š”„Š~‰‰}sr‹™‚|‡ˆzy„’ƒ’ˆ~gФ—ƒ…Š€ƒ€‰ˆ…}l’„ˆz†‚„‹q}‹’†ŽŒ‘€ˆ—Œ‚…•—e‚yˆ™h…”w|†šx‘„xŒŒ|šrŠœ„…y…‰††z“ŒŠŒs‚‡€„œy‚{†z‰–‚‚Œ”‰}Љ„’rs—“‰—ƒ”’€‡†Œzžw„~Œy{‚¡‚¥‡€…Œ†‚…†‹‡„ˆ…†……†ˆ†„…‡‡ƒ‹‰†~ƒ††„†‡„ƒ…‡…†„ƒ†Š†ˆƒ…†…‡‡„……„…ˆ†‰‹‡‡…‹†„„‰†ˆ†††ˆ†‰‚~†…ˆ„†…†‰ƒ……ƒ‡†„„……†……„€…‚ˆ„ˆ†„……„‡‡”ˆ„‡‡ˆ…„††††…‡‰†‰††…„†ˆ‡‡ˆ‡€ˆ…†…ƒ‡……‰†Š…†…ˆ…………††…†ˆ‡ˆƒ‡„†ˆ†ˆ†„…ƒ††‡ˆ†‡ƒ‡„…‡……„††‹„†……ƒ‡†…‡‡ˆ„‡†……†„†††ƒ†…†ˆ…Œ‚…€‡‡…‰††„…‹Š…‡Š‡…†…………„„ŽˆŠzŽ‹‚€…Œ†ƒƒŽˆŒ‰‡”š€wŠ‚‹qœŠŒŽ€‹„††ƒŽqŽˆƒ‰’‘Žˆ˜ˆŠŒ‘Ž…‘œŽˆŽŠ‹ˆ‰…‹ˆ‹‚|‡€˜Œ‹…‘‹‹Ž‹•Š‰ŠŽ‘‹•„…ˆˆ”’މ‚†‹ŽŠwšŒ{ˆ’†‰†„ˆˆ†•ŒŒŠ‡„~ˆ”‰ŒˆˆŒ‰Žˆ–ˆ‘‹Ž‚‘ƒ…‹’ŒŽ“‰Š}Žˆˆ‘Œ‡‹“‚‡Š“Ž‹y‰‚Š„‰ŽŒŒŠ“‡ƒ’Š‰ŠŽ”{ˆ‰z‘‰„އ‡Š…†‹Š‘‰Š‹‹‚Šˆ‹†~‹–…‹‡‹‰‘‹‰—ƒ€Œ„†…ƒ‡xŒ…‡††…†††‰†‘ƒŠˆ‰„†‘…‡…†ˆƒ„‡…†…ƒ†Š„‹†…~‚ˆ……‡…††}„……‡‡ƒ†‡…‡‚„†ˆ‰†‰…„†~‡ƒ†„…†‚‰……†„Œ‡‚„ƒ‡…‰†„‡„‰†‰†ˆ†„ˆ†}„†~‡††ˆŠ„…ƒ†ˆ…†w…†ˆ……†ˆŠƒ„†ƒ†‚‡‡†‡„‚…†ƒ…ƒ††…ˆ†„‡†††‡‡‡‹‹…†ˆƒ‡†ˆ‚„†„„ˆˆ€‡‰‡‡ƒ‰ˆ†ƒˆ‡‡†ƒ†……ƒ……„†††‡†‡…ƒ†‡Œ††ƒ†ƒ††ˆ„ƒ…†…††‰…‘‡…†…†‡ˆ††ƒ„‚ˆ†‡€€……‚ƒŽ„ƒ‚Š—qz…lv‰Œ†‰|“‰†’‹…~ˆp‘…€‰ƒwŒ}†ƒŠŠ‚Žˆ‹”ƒ‹~‡‰Š~‹…ކ‡r‹ˆˆ„ˆ‹}Œ{‹Œ}”‰—wwŠ…ƒƒ}˜€†r„„‰‡—ˆ†‰‰~’…šƒ‡ƒ„yŒ…ˆ~†‡~ˆy‰}y„ˆx˜—š…€…{‚†Š~‚€‡vŒ…w‘~’•†’†ƒz††‚ˆz†~t‰t}„Šƒr†sŠ~‘‰„{y‹†’…q‰|‡yƒ’‰–ƒ‡ƒ„‘І…‰‚ŠŠ†…‡ˆ™|€„‡Š‚~‹£{}|oz‘‡ƒ‡“…‹‚Š„‹”‰ˆŽ‹…‘{”|“‰ƒx~‹ƒ‹–ˆ‡ƒ|…—„€‹„’„~‚‡‡{’‘oŒ‹†‚|—tЉ˜…m‡‡ˆ‚€Œ‘w—x•zn†”Šˆˆv‰ŒŒzŠrxŽzŽr‡‘ƒ†ŠŠ€Œ†Ž†ŠŠ’’ˆ†v„ˆ…sŒ‡„†ƒ€z‹…–…‡‚‹‰’‰‡‹Œ†‘s„Žz~‹ˆ€ˆ~‘‹‚|‡Š”Š–‚ˆ”‰Œ‰‰ŽŽ–ЉޖyŽ‹„‚}‡‰Š“Ž’†y‡—ˆ†u‡Œ„Šq‚‹œ{„†‡y…„‘„ˆˆ‡ŒŽ‹{’—„o„‹‡„y„„‰’ˆˆƒƒ‚‡‰‡…ƒˆ‡ƒƒ‚t€‰“{}„ƒ‡‡˜ƒŠ‹ˆ„|q“‰ˆŒŽ‰ƒƒ•~†‰‡Ž“އyƒ‘™ŒˆŠ„‡ˆŠ’’‰…t|~}‚~”‰|‘‰”„wŽ€tމƒšt‰ˆ‰‰ˆŒŽŠ“w“|—ƒ‰–Š|v†}‹{‘Œ‚Œ’Œ‰†„}•‡Ÿ†…’€–ˆŠ’†€™‡Œ‡ŒŠ‹ˆ…ŒŒ‘ˆŒ†|ŽŠ’‘†}ˆŠ‡““ˆ•‰Ž†ƒ–††‰ŽˆŽŽŠƒ„ƒ†y‚Œ‡Ž”Œz‚‘}‹“‚ˆ……‹|ƒˆ†„|……“„‘y„{|‹’Ž‹˜xŒŠ}ƒ‹†€{ˆ†‰ˆ…‰‘Ž„™‡‰••y„~‘†‹†qŒ‡Œ‰wŠ‹‰|Š’Ž}{‰ˆ”–ƒl‡ƒ†Œ‡“˜‡Ž…‹ƒ”{“†y‡‡~‰‰r‰”‚—qu‹Ž‡x†’”‚ˆ‹‘ˆ~’ˆƒ“Ž‹sˆ…Ž…‰‡‹Ž‰~Ž…ŽŠ•‘ˆŽ„‘’{˜ŠvxŒ‰‘„†€Œ|Š•‹”Š”†Š…ŽŒ™Ž‹…‰•“†€„†‰‰ˆŽxˆˆšˆ…‡ŠƒŠŽu…„…†‹Ž€x}•ˆ…‹Œˆv~•ƒuˆŒŽ}‡††‘ކ’Œ…Œ†‰‹”–ЅЉ…‚’z|“‡ˆwzŽŠ†‹ˆŽŠ‹ƒ…›…Žƒƒ“„~ƒŒ‹ˆŽs‘‰ƒ~Š’v‡•‘k‚‹„‹ˆ‘…’‰Œ‚˜s‹}o†‰€‡Žrƒ‡•ˆswŽ‚Œr‹’ˆ‡Ž†Š„–ˆ†‹“Œ‘€z„‚‰€‰Œ„‚•…‰ƒ“‰ˆ|ŽŠ‹…†‡ŠŠ’u”„{‚ƒ„Œ‡wŽ‘~}Š‹”Ž}‘šˆˆˆ‰’”†ŠˆŒ‰ˆŽ‡~ŠŠ‘ŒŽŒŽ†‹‰“ƒ†„”~І…s†‡„‡€‡‰||’‚‹ƒ†‹‹‘ˆ‹…~†}rŽŠ‘‘wz…ŠŒ…Ž˜‰ƒ€‹‹Š‹ˆŽ‰ŒŽ‚„y˜ŒŽ|~‚‡“…‹Ž…‚—ˆ‚ŠŠŠ‡‚†}{ŠƒŽuˆˆ„ˆtŠƒŠ}‚ˆwˆŒŒ‰…„‚}Š–w|r‰ˆ‡…u‹„Œ€ŠnrŽƒŒsŽ‘‡‰……Ž‹Žƒ‰ŠŒsˆ‹ŒŒ…ŠˆŽ’‰Š{‚‚†ŠˆŠ•Œ‰Œ‰††u‘xƒ„ƒŠ‰~‡u…†—‰‰ˆŒŠx”Ž‹“ŒŠŠ‰‰‹Œ‡††‡‰‹Š„}Œ‡‘‰}„…t‚Š’‰‹ƒ‘…Œˆ}–‡ˆŽˆ„„ˆ‚€Š‹s‹ˆ‡†€Š}ŒŠ‰ŠŠ‡ˆŠ‰‹ˆ‡ŒŒ‚‚Œ’‡˜‡“‚w‰‹…rˆˆƒ‰†Ž†„•„Ž~ЇމŒ‰ŽŠ˜†Š‡€„†‚Љ‡ŒŠ~‹‡ˆ…‚}†’~Š’Š‹…•ˆƒ•…†’ЋЕŒ‹ˆ‹Ž††††‘„†‹„‘‰v‹‡Œ|‡‘†‡†…“‚†‰„–Œ‡†„ˆœ‚“”‹Š†…‡€‡Œƒ¡‡‰ƒ†Šœ‹†‰’‡‘…˜‹ˆˆ‚ŠŠ‡Œ…ˆ‰Œ‰††Š†ŠŽ”‹Š‘y’ Ž‡…ˆ‡†„ƒ‡Š•Š‘‰‡Ž„‡Ž…‹~„——……Œ„Œ‰ˆŠŠrˆ…„’–‰†tƒq|‡‹€‹‰‡~‰ŸŽ‡‰Ž…—‘‡‰‡—Œ„‚¡~|І}•ŠŽ‹¢Š”†œ…‹ƒz†r~¢‡s£––{‹b„ƒ”}‘lpŸ‰‘„šh†…‰‰‚„‰¢›u‚‡„„‘‘œ˜‹yŽ‚{‹“v‹`¶y}’žr‘}°µ‚‡iŒ„kw©‰{p–o†r†zscnž€ŒU—v›Ÿ˜Š¬¢…‚ƒ ““k‰‡˜‡„ޤˆƒ‹~™“z€•ŸpŒg†{†v¡‡“…‚z~‹i›kˆ‘–”Š~q¢‚^†¤¤’…‹—lƒƒux¢xt‰“ˆ‰|~Œ„‡‹­ƒ•ˆ}~“‰‹zƒ€„‹‚’‰’||šŒs‰‡‰Œ–†Œ‚‘‰—ˆ†Ž…†“ˆ•Љˆ†„†…‚~‡€‰Šˆk„zx˜Šœ‘‘}ˆ„†…‘’ŒŒ–ŠŽ‰•“yzƒ†ŒˆˆŠŒ…„~‚uŠ‹|~‹r…Šˆƒ”‡‹‡‰Œ„ˆ˜€ˆ{rŠŽ{Ž’ƒ–‹‘‰Žˆ†‹„‘€|}x‡ˆ”ˆ’—†ƒŠ‹‰Ž•Љ•‚‘ŠŒ‹…„Š’‡ˆs˜‘‘‰‰‰‡‰ƒ‡‚ƒŽ…‰‹~†‡…~‹Œ’ƒ‡xˆŠ‹„’Œ‡Ž‘މƒŠ¢‰‡{Š’„”‹‰—…y‰ˆ†m‹‹Š„‰–„}ˆ‘„y†„Š„—Œ‡‰’„Œ‹ˆ”‰ˆ‚Œ†~ˆŒŠŽ~€k}ˆ’ŒŽˆ–‡“‰‰Œ€‰•‹Š‹‰‚”Œˆ‰‚€‹ŽŽŠrˆƒ{’„ƒƒ‡ƒ‡˜ŒŒˆ†‰Žƒ—‘‰‹‰‘ƒ‡Ž‹•Œ’‰‰…‹†‹–І‰„‰Œ…‘z‡‹‰€…ˆŒˆˆ”“Ž‹„ŠŒŒ‚”‹‰˜€ˆ‡x˜‘‰……ƒˆ€‡‡Œ‹Š†”ˆ‚“‰‰‚|ˆ‘‹‹‚Ї“†„††††…†††……††††††…†‡††…‡††…††††††…††‡…††…†…††††„††‡†‡††‡†…„†ˆ††ˆ††‡††‡††‡††††††‡†††††††††………†……†‡†††††‡†††‡††‡…††††††††……†††‡…††††…††††…†…†††‡††††…‡†††‡†‡†††††‡†‡…††…†ƒ††…†††…‡……„†††‡‡††††……‡††‡††††††††††††‡†††…‡……††††…†…†††††‡††…††‡††…††……††…†††‡†……†††…††…{‡„xˆ‡‚‹†‚~‡‡€xkƒˆ‡‹p}Љ|–ˆ…y“|{„ŽƒŒ|‡‘˜‘…•Ž}Œ~}‡†‡|wˆŽ}‰‘uŒ{‰w‰Š{—Ї‰†Œ€’vƒ‘„~…‹‰|†x’’…z„„m{ƒ’’ƒ†x†‚‡‡‡†Œu‡|‹|—ŒŠ†ƒ‹ˆw†€v…p‹ˆ‡pˆ‹ƒs‘‡‚zvkŽz‡|žv‡Ž„|‹‡ƒƒ‰zŠ}}ˆ„‹~~{‰‹z}…މˆ†Š‹‚~‚ˆ‹„‰†‡{w€„‚ˆ|ІŠz}}~„|Š} ‰„†~Ž€„{{‚~~}…Žˆ††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††‡‡…†††††††††††††††††††…†††††††††††…††‡†‡†…††††‡†††‡‡†††††††††††††††‡‡††††…††††††††††††‡‡††††††‡†††††…†…†††‡††††‡…††…‡…†††††††††‡††††…†††††††‡†‡†…††††…†††…‡†††††††††††††…†…‡††‡††††††‡††’€…‰„†ˆˆˆ‰…†„‡‡…„‡……‹ˆŽ…ˆ††ˆ‡†„†…ƒ…†††‚€‡Š‡…‡ƒˆ‡…‰†‡‚†ƒ…‡„ƒ„…–†………†„„‡ˆ…ˆ…†‹}‡†††„‡†…‡†„†‰ƒ†ƒ…„„…‡†…„‰††‡…‡†ˆ…‚„‡„„…‡‹‡‰‡‡‡†‡…‡‡‡ˆ†„‡„‚ƒ„††}„ˆˆ„‡†ˆ„ˆ‡‡…ˆ‡………‡‡‡ˆ‡†………ƒˆ†„†„‰…ƒƒ†………„‰€‡ˆ‚‚…†ˆ†††‡„ƒ†‡ˆˆ‡„ˆ†…„‡†…„†††…Š……ƒ…†ˆ„†††ƒ………†‡†Žˆ……†‰…ˆ…‡†„††“„‘€zy‰……ˆŠŠˆw†‡}…ƒx‚‘…‘Œ‰”‚„‰„ŒŠ|މ€Š~•މˆ|‹˜“‹ˆ—‹~ƒ‹…Ž{‰xƒˆ“‹„‹€|Šx“~ˆŠv€•„…xv…”…Žs{Ž…‡z‡–}ž‚‘ˆv–†Œ†Š–|y~‹Š†ˆ‘‚€…˜|‚ƒŒ„‰ˆ“Š•Œ‰£‹‡Ž‚‚Ї…‚x‡y}Ž™…‰‰’–œ•Œ‰Š’–mŠš‘ƒ€ƒ†’˜‹‰¢’‰}‡ˆ‰‚Š…Šˆ‰zŒ‡ˆŠ‹q|‚˜‘…‰Š…‰‡{“•Œ~ˆ˜Š}…ƒ~}—…‡‹u†‰Œ‡ƒ}‡‚Бމ”~tŽ„}‡„†{}‰‘‡|v€ƒŠ‹“€‡“†z‚Ž~ŒŽ‰v…|…›‰~‹ƒ‡‡‹‰}††Š~†”’”‘ˆ†„Ž‹}w„{š„€‡‡”~ˆŒ‘‹‰‡{x“z†Œˆ‰”ˆ‡|‡‰†“ˆ…‘ŽˆŠyŠ‹Œ‚“‚’™Š€k‹„‚‹„…}„‡‰‰uzƒ‡‡‡…—€…Žˆ~’‰ƒ…{ŠŠ”‘‹ˆ‚‰Žƒˆwz‚‹„’ˆ“ƒ•‚}‡‘ˆ‹‚’vŽƒŒr‡~ƒŠŠ}‹ŽŠŽ’–†‚ŒˆŒƒ„}††ƒƒ‚„’~‰|€„‚‰Š‹’–‹z”„„}Šˆ†iu†uƒ‰†vr~‹ˆ„Œ‚…|‡s‡z‹Šc†Šu‡…Œ…„–†”‰Œ„Ž‘…–z‡ ‡ˆ‰†˜…Ÿ…••z„”ŒŽ|‚w‹–‚‹…€‡‰†‘ˆ‹|‘‚…•ƒv‡„މ‚‰~ŠŒ~„‰†‹„ˆ…‘k{z“ŽŽv“‰‰‹w„Œ‚„ƒ~‚`}—y“y‡{‡r‘‹„‹‹~†‹…‰€‚‚k„xq‰ŠvuŒ{ƒ§ˆˆ‰ˆm‡‰ƒŠŸŽ‚ˆn’w‚t’{Œ€nІ{~†Š•ˆ…”}xyƒŠw„…‹•zu‰t„Љ‰„ŠŽ†‹€‹q–…‚…„sŒ‹ŒwŠ‚‚€Œ†{uu‘–ž~‹—’r}„Œ}†Œ§‰wš‰€¢‹Šx”‹‹‹”Š€•ˆ†“Žˆm~’™œ•›‚‡Œ•‡‰w„|¡ŠŒu“~x•Œ‰“€v—‹‚†Š††z€‚‡y„‹‹”„šƒ…‡Š~Š…„‹Šˆg”–ŽŒ‰šˆ~„‡‰Œ”‰„ŒˆkŠ‰Ššˆ{Ž˜yxq—„ˆ™…—«˜•€‘ˆ„w’‡……x„‹–†Ž‚w‹~ˆ‰‡Ž™„œ{•m„h‰|ƒ—~t€ŽŒ‡{ˆ–Ž”†y{”|~†“†”“ˆm‘‡¨…‹–•‡…t”‚Ž}‡†”{ƒ‡{p}€„}yx„‹Ž…’~Š}‡‘y€}ˆ‡ˆ“‰t€zƒœ„–}ƒ…€Œ„Šy‡ž—Œ•€ƒ‚ˆ‚™œ‚Ž†ŠŒ”~…†ˆ|†‡|}…‚„Œ“Œ}yŽ|‹€’Šz›|‰Š‘‰–ˆ‰‡ŒŠ{ˆŽ}…‡‡ˆqŒ€ˆ„r˜‡„“‹{€‹…‰ƒsŒ‹‹†ƒ‚Žz”„’‹‡…”„’†„‚†‰’Š“†‚‡€v†•…~‰~r†‰w‘†‰‰”ŒˆŒx‘†ˆŠ„ˆ~Œˆ–“€€~ˆƒs…ƒŒy‰‚“ŒŒ„z„‡ˆ†„€ƒˆ‡‡‚ŽŠ„‚‚‹‘ŽŒ€}w‰„†Š‰Š‹{x~g€€…w|‹‡ƒ”‹…‹…s‰~މ‹‰†t…†Ž‹•†Œ‰ƒ~‘…•…u‰u‡Œ‘”‹~Ž‡ŠŠ‚ˆ~”|Œ}ƒˆ‚‘…ƒ‚…ƒ‡……x†Œ~††††‡š‚ˆ‰‚Šˆ|…Œ‹‚„ˆŒ‹ƒ{…„†ˆ’‡p‘…‡‹‡‚}Š„…ˆ“z‡‰‚‚„€€‹‰}‘ƒz“€‹‰…‡„„|‡€ƒ„Žz~‡‹}”w~€x…‚‡ŽˆŽ„“…„…Š|€zˆƒ‰€Š~‚‡‡†‹ˆ„|‰„Š…‚“†…ˆ…Š„‚Ž}„yƒ…ƒ†‹‹Š”‹ˆ‡|ˆ‚†‰‡‹‰„Œ‹€Œ‡“Šˆ‘š~wŠ‹zr…‰‰‰…Œ„…ˆ‰•€‡ˆŒŽ‹Ž‘˜‡ˆŠ„Š‚‚‰……Œ‘ˆ……ŽŠ‘‰—‡|}ˆ‘~Ž“„ŒŒ„–Дއ•Љ˜Œˆ‡Ž–Š’‡‚x‹‹†‹“‰v’އ|ŒŒ‘„Œ‰€†’–‰‡…}……ŒŒ…zˆˆˆ‚‹”†ƒ„‰Œ~Š‹‘ˆ”‡ƒ‹‡†‚•ˆŒŒ‰†‹„‰…ˆ‡ˆ‡Š‘‘Ž‘‰ˆ‹ˆŠ‘‹˜‚”‘‹’|‘Ž’†ˆŒ‰‡…Š‘“Љ‰—’„‰}„Œ”Ž„Žˆˆ‚ˆŒ—ˆƒ~ˆ†t“–›„€‡’}yƒ…uvš“’‘‚Šš‡w‘˜‰†‰v‚›Œ‹…‘™—‰‰›‚‡‘‹ˆ‰†™’pŽ”ŽŒƒ’|‘t—™}‡–’ƒƒ‹Ž ™Œ‹‡†‡”‘“„ƒ“†‰€Ž”uŒ‰ˆz™‚‰„ƒ€‰Œˆ‰“†} ‰‰Š„‹‘~’Ž|‡„Š”z…’ˆŒŒ›‚“€y†‹}~ŽŽŽ’ˆ”‚‚€ˆ—™}“„‡ŽŒ…†Œ~„Š‚™Ž—p”„”Ї‘~š‰‘‘ŠŽŠ€‰~˜‰xˆŠšˆ…ˆ‰”…š{’w”¢•†~€ŠmŒyugs‚‰f‚†‰zv…‚ˆ}‡…qey…€}}xhx|ƒv‰¨¤•‘—u•}€‚Їž|m¡œ…†svk™˜†Š“„Šz‚Œcvtƒ‚€s‚lŠ|œ‘Œ…‚…yvŽ‘€ƒ–}wt…Œon‹t|jš‡‚}q‹™zˆ˜w—W]”rn}ouy„˜€}†•l‡…t¯€~†‡†“’„”]Šo{Š€€ƒp~hqƒ{anv{a|‚v‚ˆ”u‚‹”“•“‰Šƒvˆ|ˆ«j˜—‹~‰•ŽŠœ†Yr€ƒŒ–vŽƒm‡›srŠ¢~n‹yˆx€|¥‘І†…‡‘ˆŒˆ‹‹Š€…€Œ†Šˆ…€…x‚‰Š’‘€–„‰ˆ†‡ˆ~‡{ƒv…Ž€‹ƒŠ‰Š‡ƒ‚‹ˆ…‚ˆŠ‹‚ˆŠx‹†w‰„ƒŒ€}‰‘…‰‚Š…‹ƒ‚…‚{…‹Œq{…‡€‹Ž…„ЉЂ|ƒ€‹„…‹ŒŠ†ŽŠx…‡‚‹Ž…‘ƒ‘ƒ“މ†ƒ~‰‡††‰{‡rŠƒ‹~€„‰|…‹Š‹z‰„‚‹…ƒˆ‘’‹•†ŠŠˆˆ‘Žˆ„‚’އ…‰…„ƒ‚†‡zƒ‹‡‹‘ƒ‘…††‰ˆ‹‚ƒŽ…‡ˆ‚‰††€…„|ƒ‚ˆŽŠ‡‚{‹Š‹…†Œ}†‘‰‘‰‰•–~vŠŠ‚rŒ‡‰Š†…††—„‡…ˆ‡‰Ž˜‰†‹ƒ‰ˆ‹Š’†…}„’ŽŽ}}†|•€Œˆ“ˆ“Œ”‹‡Š™Œ‰Œ“‰‘ŠŽ†’„‰………–‡u–“Š|…Ž‹„‡ƒŒ„‡‹–‡‹…Œ‘ŒŽ‹‡‚ˆŽ‡€‡Ž€Ž‡‹ƒ…‹–†…†‡ˆ”Љ‘ކ’…‰‰ŠŽ’Ї‡‘‰…‹ˆŠ‚‹ˆˆ‡Œ‘|’Œ‚‘‡‹ŠŠ‡…‹”‹Œ‘‡Œ‰‹ƒŽŠ‰~ˆ’†—Œ…Ž…‹‹Œ•ˆˆƒ}Š—‰Œ‰ŠŠ|œ€‚v”†‡}|‚Ž’‰Œ‘‘Ž‘‚…†‚€pwˆ‹‹xŽ•…Œ‘‘u‡ŒˆŠ‘r‡„‰w‹‡‹‘ƒ’}–|Œ{t˜–……ƒvŽŠ’|…pt’Š…tŽ•Šž}ƒxŠ…†‡v‰„ˆ‡‹€ˆŒ”‡‡‡‚Љ…‡Š‰™œˆ†—ˆŽ‡x›Œ{rŽˆˆŠˆˆ††•Š˜Œ‡‡™‚†Œ“‡’…Œ†…ŽŽˆ…¢Œ–Ž}•ˆ€‘Š–|‹x„އsˆ„ˆŠˆ†zŽ{˜ŽŽŽ•‚Š…‰„|‹‰w›Ї|Œ}‡‡‘‚–Š—‰}“މ‰’…ˆ‰††•……w”‹ƒ„‘ƒ‰“–Ž”“{‡—‡Œ‰…‡ƒ‚|„€‘xˆ–އ“„v‡ˆ‡ƒ‰rŽŠ•†€~‡“Š~™|–†r‰Ž‰ˆ…v…”•‚“pu‘Š…vƒ–‡‚„ˆŠ‡Ž„~‘‚†|ˆˆŒ}††‡††ˆ‚††„‰ŒŠˆ•‹‹ŽŒŠ{‰‘‚mŒ‹‡„‹…~‡ˆ‘‹Ž‘Œ‡}›ŒŽŒŠ’•‡‰”Œ…ƒŒŒ‡‹…Œ†…’¢Š…†‹yˆ„Œuƒ›‹€‡’”ƒ‰‡x”Œ”†‹‘Œˆ‹n‹ƒs‹‡‰z†…Š„ˆŠˆ–”Žƒ“ƒ†Œ†s‚’€u‡‰…‚‡Œ™Œ“’{‰“‰Œˆ„ˆ‡~†~|‹ŠŽy‰’‘Єޅv„„‡‡Ž†r…ˆ“‡ˆ…Œ‰…‘…“x‘wˆŒˆ…†u‡‡”Ž‚rs”†‡v‡˜ŒyˆŒ‹y††‹Œ‹s‹ˆŒ„ŠŠ|‚™z„ƒŠŠ‹”ŒŽŠ„‘Ž{‘k‹‰‚€ƒŠ˜‘’‰‰••†‚—’†‹„•‘†Ž‹ˆ†˜Šˆ‰Ž…„‹†€‹†“‰™…‘„Ž{‰„tДބ’‰„‹v•’†ˆ“‹ŽvsŽ}‡†‹q„€‹‚ˆŠ…”‚–Šo‹‹Š„‡‚‚Š„“Ž„€vŽu‚„Š~‰ŽœŽ‹’}|€•…‡‘Ž‚~‘u“Žyˆ’ŽŠ}‹€wŒ{Œw†qŽŒ…Š‹…”‰’y“z•…rˆ•…{{ˆ‚–‹x–mu€‹uƒ˜„„ƒ‹ƒŠ„Šˆ’”…~yŠ“ˆw†ˆ…Š‘’|ƒ{‰ŽŒ‹‡’‹Œ’Šˆ{ƒ”sy‰Œ‚†…x‚””†”Œ‡‰˜‡’Š‹…•“‰‹‰ŒŠ“–‡“ƒ€Š‹†‰‘ˆy“œ‘ˆ…ˆ‚†„‰tˆ“†‹‘…†‰{””“†‹“ŽŒ‰“‡v’n„ЇЅˆ…‘Žˆ•ŠŽt™…БЫ† €w…†—†¡” ’ƒm¢ˆŒ„y‹‡wy~™’€‡žx‡…žŠŒ˜– ¡z ‚y‚p–w¨“ŠŽu‚~o…uu†–—„Ž‘•‡¦‘u’‡‚Œ•‰‚ŒŠ ŽŽƒŽ‚†–ƒ‘Ÿ„qŠŠozŠy†ŒŒƒ‹ƒ”wŽzˆ’Œ}“ |šŽj—Žlˆ“r‹”ˆv©†z„_|{„ˆ–𭓇Ѐ€Œ˜‹‰¡˜ƒ•dŒŒ‹•”œŽ‡”’˜’Šˆ€sŽ„„—Œ„Œ|„‡‹‘Ÿ„ˆˆ“•~ŠŽ„‹{œ”Œœu‘…€‹z„|‰Œ“‡~”Š€‚“€ˆ•ˆ‡’‰€||ˆ‚–{ˆ‘—ŒŒ˜•pt’€ˆ†ŽŒ‹†„€Œ‚’Œ•‹”‡uƒŽˆ†”•n…Œ‚‚Št‹~˜„žƒ‰…™‰u‡‡x‘‹r•€”““vs“ЇƒŽ˜z~‰‹ƒ€Œ~”ˆ‰w†Œ‘uˆ‰Œ†ŽtŽŠ‹š‡‡‡’“Šw‘“ƒ¢†v††’‰‡‰‰Š‡†š“‰ŠŒ‘‹ŒŠŽ…›ƒ‡‰ŒŽ~ˆ‡Œƒ‘…‰™„‰“‘•~}Ž‚‡‰p™€{˜“tsЇ”‡€{“’“‹‘‘ˆ‹Žtƒ›‚m™†zz~ˆ~†‘Š|ކ††‡„„††‡††…†…†‡†††‡†††‡†††††…†…‡†‡††††††††…†††††††‡†††††††††††††††††††††††††††††††„†††…††††††††…†‡††††…†…†††††††††††††††‡††††††††††††††††††††‡††††…††††††††††††††††††††††††††††…††††††††††††††‡††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡…†††††††††††††††††††††††††…††††…†††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††…††††‡††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††‡‡††††††…†††††††††††††††††††††††††††††††††Š†Š„ˆˆ‡„†Œƒ‡‡„†ˆ†ˆ…‡ƒˆŽ“‰ˆ………ƒ†„…ƒ…Œ}‡„Œ…”…‰„ƒ†Œ†„}„|†ƒ…€{{ƒ…‚Œ†ˆŽŒŠ‹‰‚‚„‡‡Œ‡u€~‚ƒuˆˆ„‹…†‡ƒ„…†‰œ˜‡vŽ…‰Œ€†ˆƒˆ††€~‚…‡|…‘ˆ†„‡Š…‡Œ‘~Ї†„†’……‡x~}™‡{x†„‡tz„Œ‚ƒ|ˆ€‘‰ŠŽkŒƒ…‰Œ’uƒs„‰†{ŽˆŠ|‘…ƒŽ„}‡€z›„y“…†{—¢„‘†”xy‡”Ž‚š„…„‡‰ŽŽˆ†‚w‚“zŽŽ’ˆ~‡‰†‹‹“‹Œ†”‡‘ŠŠ”ž~~”ˆmŽŒ‘„‰…’‹‰ˆ…’”……ŠŠ‡‘‘œ‰‹Ž‚„…‘Ž‘ˆƒ‹…ŠŒ“x}w“’–ƒ’’‰‘†˜‘”Œ†Ž›‹‹’“”ˆ”ƒ†”€‡~Ž“Žv—€†Ž~ŠŒŠ‚†ˆ{‹”ˆ‹œ‚…Ž‹“ˆ‘ŠŠ‚Ž‹†‡ˆ‘…‘‡Ž‡ŽŠˆ’“•ˆ‹†‰Œ„“Ž‹‹‹‹…Œ‹’„Љ‹„ˆ•‘Ž“‹ˆ„Љ’Šš‹z“†‹‹Šˆ‹‰‹Ž•‹Žˆ‰ŠŒ„“’“Œ‡’‰‰Ž‘‹‚‘††ƒ|††‡~mŒ€Š}{…|}…w††ˆy†q€ˆ‰‹€‚„~‚|ˆ“q}v‡~…|‚„vzŠw‡‚‘Љx™|‰ˆ~{Œ„w„Œ‰€‡zz‰k‰‚ƒŒ€ˆ€ˆx†z‡‚‡‡~~€˜’ƒz„Š{†x€‰z‰“…Žv}vŸ•~‹wyƒ~…ƒ|‡…„z„w}w~‚‚u¯…s~{ˆx€˜‹ˆxt†v“{rŒ‹tˆvt€‚‹{ƒŒzr‚†”†ˆ—€~„y„o~‚|††††Œ‡‰€‰~z‹ƒ†~‘{ƒv‚„‹†~v††…|“{€‹„„}†›„Šv†€‰~xƒ…‹txx…€~y•€{‚pŽ|y{œwx€|}{}j‹{„|}ƒ‚}}i”Ž|–}zrƒpxwwƒw…}t~Šƒy„vxƒŠ‹~~~pp…yš†Šnju{uu˜v{‡yp‡„…šoz…}e€€‚ym†ˆvnŒjw…‡vy|w‚|r†tr‡}lˆ}‹szr~y}}wv}Žuzƒ€m~yˆ‡tˆvƒ}~vpzouuy‡up…v|zit‰tƒ‚{|†‡|ktz}w{ƒzwu}|y}€}Љx{Œˆ€~€xq†{w‘ir‰x†y‚ƒvsv~}„~‚‰ƒw…„yxŒvj‡«¹Pcz’¼‹…ˆ„‘Ø…‚¢r‘‘†s˜‰¡‡wwŽŠoxw¥¤‹¦u]w‡‰€…oc”„Лޒr}œ’‡q®–d“›˜ƒ‰¿‹q²I–…†yhš¢{Œ€v¨Š¢•‡’—’~Y™šœ‹…•|j‹ z‡°ž‡Œdª‡„‹Ž»u„u‹nŠ›w~aޔІ„‰Ÿ‡~’Šx“Š–—§‹£‰œ{]œ–‘œi¡‰y|£tŠŽ…”ƒqv”ƒayz‹…‹‹†ƒw‡•–‚‡ ‚ušvŠœ†“ž—†{¨Š{z€œ†nnާx—iž‘Ц¬z›†•ŽqŒŠ{‰Œ‘’—‹–•z–Œ•Ž›š˜‚‡‰Šp‹Ž„†…Œ€‰’‡‚•œxŠ…‹„‰’›’‘‰…ƒŒŽ”…ˆ‹}‡Š”Š‘v{{–~Ž•„‹‘„—Зއ‘|Šœ–Ž–‹Ž”’…Ž“€Šƒ‚‹–‚€šˆ‰’…Œ‹Œ‹„‡œ‡‹Š„…މ‘‚ŽŒ†ŠŠ–Œ‡–Š‹‘„Ž’‹”š’†Š…„•’‡Žˆ‹…‡–””‰Š‰ˆ”‘’ˆŒ’‘„’}…„y“‘‰ˆŠŒ€ŽŠ‘‰‘‘–‡ˆ†•…Œ„‡ˆ~ˆ–…“”…˜ŽƒŠ†„ˆƒ…Ž€‹…Љ~„‹qp†~Š‚qq”“‡šxŒ}}Šu€sŠ‚’|{Š‹’“Œs‡‡‚sŸ€„l†€ˆ‰“‹~Š„›ˆ„‹ƒ”•”‘}lw{Œ„Ž{Š‹‡ƒ‰u~‰ƒ–o–‡Œ“†‘”…s€s‰……‚†ˆ”Ž’†„‹€‡zo{‹‚މЄˆ‡‰l€xov€t„‡“‰wžŒsˆ•ž‚…”‰‡Ž‹‹Ž‰~~„…‰‚„}€‡Šx‹”†}vŠƒ}}“†…~€~‰z™‡€q€‚}ŒŽˆ€‰„…ƒŒo‡„Їˆo…€‹{ˆ‚–~…„‘Žˆˆ—„€ˆ€†Šx†}Œ‡vz€ˆ€‹”„Š€{‡Œy‡„‡|‹m”†€†‹u–„y†Ž…w…ƒ†…ŠˆŠ‰…‹„Š|~‰‘‰š’}†j~…”‡~Œ|‚‚†ƒvs‰‡€ƒ|‰†yœˆ‰†‘}‡€}ŠtuŠq‹‰z‡„}Ž‚z{™z‰{y‰ˆ‡‹„}‡€~…Œ|ˆŒ|~‰~ƒŠ{{‰ˆ}}|‰„‘~‰††‰…‡~}‰Š†Š–‡z‹–††Œ…ƒ‡€‰||ƒŽƒ†…‘‡ƒŒ{s†…‡…—…}„Šˆx{…„€‹‰z…‚‘…u“q‚m‰ˆ…‰”‹‘Šƒ~…‚ˆŒŒ‡„Œ”{Œ’Š’Š‘”}y„€o‡Œ‰ŒŽ‰Œ–‡Œƒ’Ž‹‡ˆ‰‹–‘™‹Œ‘І‹ƒ‚€“’ˆ‡Ž‡‘ˆŽ‘•{~ƒ€’†‰Ž—„Ž”ŠŒ™€™‹Ž““•†ˆŠ”’‡ŒˆŠ••ˆp”„Š~‡‘…‡‚‚ˆ~ˆ˜‹„…‹ˆ‹…‡—ŽŠˆ‰ŒŠ‚ŽŠˆ‘Š‚†Š’’‡„Œ‰’’އ’‰ˆŠ„ƒ’Œ‰…‹ŽŽ‹‘‹‹Œ‰“‹Œ”{œŠ‹ˆ‹‡†‰„’Ї‰Ž‰Œ‘†‡}ˆ“—Œ‚’‡ŽŒ‰‚ƒ†~‹”ŽŽ†ƒŒx…‡—‡…‚™‘”~vŠ“Š}‰‰’„…†}‚††Ž”’‰€p‡•‹Ž‚•ˆ‚އ‘ƒ˜‘“ˆ†Žƒˆ–Š‹Œ‰€’““ˆŒvŒ‚ƒ‘–zŠ•—{y~†Žˆ‚•Ž‚œ‡‹…‘‡‘†ƒ‘Š€ŠŽˆ‰“–x“ކ™”€–Œ‡ˆ™‡“…‚„ˆŽ‘…’ޅއ‘Ž•Œ““Ž’–ŒŽ‘‹”“‰}Š‹‘ޑކŒ‰šŽ‚…”†““‹Š‡˜ˆ•„’‰˜ŒyŠ’†Žƒ‹˜‹™‰–|’’€‹{‰ˆ‰ˆ”‘€‡z‹ŒŽƒ’•ˆy‰~~ŽŠƒ”„Ž“Œ”“ŠŒŠ““‚Œ”’‚‚Œ“w~}|‚Š“„–’…‚t•…sx”‰•xƒu’ƒ‡yŒ†‚‹}•‰‰”‘ŠŒ—uŠŽŠŒ‚Œ‹“’–w„‹Ž‘„”’†ŒŠx‹Ž‡‹‰Œ‰‡‚…‰Œ‡’z•“‡†—‰‡‹Ž‰Œ”†—‰‘’Š„‹†€|ƒ”†£‹…—Ž’‘Œ¢•‡˜{‘‹Œƒ‘‰u…‚Œƒ‘‹‰†‰•‰†’ŠŠŠ†„•‚‹zŒ–”ˆ‘‡“’•‰‘”•‰†‰‰Ž€‹’“~‰‰“‹ƒ‹”Œ‚–„ˆvˆˆ‘Šw‚›‘‰‘‡‰}’Ž•{yxމ‚ŒŠŒ€{’}ˆ‘š‡•ŽŠy€…‘‰‘‹}’›’‰ŽŽŒ…“Ž}‘І“ˆŽ˜ƒ•…ƒŒ‰‘Šˆ…‡‘†‚‹‰Š˜‚…Œ‚˜…Ž†Šˆ”‹…Œ“ŠŠw|Œ†~‹ž{Ž•†‚›ƒ‰‰‹‡’›‘•‹Œ‹Žˆ‹‰”‰€Ž’‹‹Œ’Ž’‹ŒŠŽ‘…„‘ˆŽŒˆˆ“‘„ŒŽ‡Œ‰‰‘ŠŒšŠ‹‡”…‹„‹—ƒœ‰zŠ…‡Œ„‡‹•ŽŽ€–€‘…ƒ|ŠŽˆ„–•‹ˆˆŽ•‰—ˆŽŒ–q’››•ƒŒ…‚‰‚„zŽpy“Šoqƒˆ‡‹•}„‚yšy…—ƒˆƒxˆ|y‡eމ…ƒw”ƒ€Š‘lŒxƒ}Ї‚‚‹—yt|’Ž‘€q’€”xr•„‹‰tŠŠyšŒ”u€„’q‘£”ކ}”€ˆŠrƒ…v…‚q‡’ŒŽ‚{•–‰‘‰‡rŒvt|r~„„‚€„‰€‹uŽ{ƒy†wŠ„˜j‹‡…›ˆ{u“y‰}˜Œˆ‡ˆ…|‚…‡ˆ…‚‘„€}Œ€ˆ{’‰wzŒz‹yzjtz…ˆƒuދІ‡‰…€…ƒ{†‚€|{…r‡zƒ€‰qvqw„}z‡…ˆ”Š‹‰‚–…‡tzqŽo{‘ƒ”ŒŒƒ‡‰y”~ˆ‰„‡s—Vˆƒu••—†|‰—ƒiy‚„Ž}‰ƒ‘~~„‹{‘Œ™‚›“—l{„ž’b‘ˆ…ˆ…{•}}~„…w“Žr„Œ‘ˆs‚Œ‡„}n‚†€ƒ„„~‰~†ƒ|šs‚t‡x~˜†ˆ†’k{ˆ‚€†‰‹†‹x†‹r’Œz…ƒ†|‡†Œ‹‘“†ˆˆ‘Œƒ‚…†s}‰Ž…€˜|i…‡€“—ˆq…~v•Šƒ†Ž‰‚€~Œ‘ЉpŒƒŠ‚¡†‰p„}ˆ†}o€|†‹}Š‚q{“†‡–‚Љ……„vm„–…mu—‚‰‰œƒˆ‚}‘‰x“‚w‰{tŠaˆŠ˜•–~”†…Ž“pŠ„oˆ“‰’€‚‡ˆ‡Š‰„˜‘Š“ky†‡‚q…†ˆ€~‰†~x„‡‰s‡ˆŒ•‘‘‰‰—„iwˆ„†‰„p‚†€‚}Š€ˆˆ‘†i‘€yŒz“‡ˆk{‡…zƒƒˆ–Ž…zƒwš}‡x‘‹„„…‰‡u’„~ƒ{‚ކ„‡{‰ŠŒ”„‰~Œ…wy}‡Š‹…‚…w€„‚ˆ‡Š…’€vz|z‚}•‰ƒ’‡‡‡x…q„xˆy}‘…›‡Œ{„z„~xŒ†††„‘†|ŠšŽ˜ˆ ™•~y‘šŠoˆ‚—–}„~~ Ž”“މ•š‹Ž’˜—‹‡‹y™‡–~–ƒ„€’„“–xy‰“{•–“““ƒ•‰‹›‘–žŽˆ‘Ž–“‘ˆy›‡Ž¡„‹Š•Œ}š‰“Š~’‘†„‰‚zŒ–ˆ‚š‚Ž‘„‹‡—‹’ŠŒ‰…‹ŽŽ‰Ž~‰ƒŽvšŒ‰•ƒŒ†Œ‡–•‹“–ƒ”Ž‚„„ŒŒ‹Š†Œ‚”‰ŒˆˆŽŒƒ–‘ƒ‘|—–‘„“€Ž‡“†ŒŽŠ‹Ž”zŽ˜Œ„‚‘“’Ž“„†‡Ž—‰}‚tŒŽ}vwuz€sr|}ƒŠwyyˆŽsmp}vxa‹Ž€‚sp|{y~o†rs‹lkˆ…|zw„z‚‰x†t‚wy”ˆn{‰st‚{ur€yx‰ps‹u„}zyƒ‰zy…uz„i~zƒro„…q€€t{…z{‚r}‚€tk‡u{‰~wo…˜u†tly†|Œ~uxx€}ƒt‡up…b{‘~y„kv›zo}t||}m…{zq{‹qmƒ{s}|ujƒzx~pk‚q„||ˆ}€o‚}uwˆ„q“|{{ˆ„us{|{pv‰up}†uƒ‰iyyƒ€€„Šx}ˆzxtƒ~}‰’}‚˜{›†‡‹‹Œ†Š—}vxƒ…ˆmov‡ˆš‰Š‡€‘‚~‹‰ƒŸ‹‚•zŽ‹‰“˜€|€‡ƒpŽŽ|y‚˜‰‹Žƒ„…‘‚„’ˆ‘p|ˆŒl‰€„|‡€‰€|އsˆˆ‰‰‚‘Œ……†‚…ywƒŠ}‰†‰†~…{›k…~rŠ‘q‰‚ˆ‰‹s~ˆˆ‰‰ƒ‡‡~w€ˆŒx„‰}‘ƒŠ„‡|Œ†€‡…††Š‹ˆ„ŠŒ€†…ˆ‘{Žyo‡‡‚“Ž|„qƒ…ƒ‚ˆˆ„†Š|}‡–‹…{‰‹“’‡yu}†„Œ€‡v†Šˆ’ƒ~ˆxƒŒ}ˆ‰‹†‡xz†z“„Š–…€{–ˆv€‹†‚}m…‡‹z„ˆ…€o‰„‡€„p‹tu‰ˆ™‰…p‚ƒyƒˆ|‰„{€ƒ‚‹Œƒxnz†‘ˆ‹Žvˆ€‚|‰xŽ|†€…s€‰‡‹Œv~}}ƒ}{‘Œwˆ‡„ƒ’o‚†‹}ŒŽ„~‹yo„~}††€‡~‚Ž‹|†‚|‚„…„€„‹‡€€s…{•‚~‰x…‰ƒ†s‚ˆ‰†€†…z~‘€‚{~ƒ…‰}Œ„‰~ˆ|†‡zx‚†ˆƒ‰‰ywŠ}x‚w}€‚†‰z|ŠˆƒyˆzŽˆ|€~r‡ˆ…€‰‹~ea€|Žy’…‹¬{‰o¤‘—…Œ|‚ˆ}¦~†iˆ†f‚zŒ‘€ŸeYfq„‡qqy‡h‡ˆƒb’Šž‘s‚§•w€‚Š—}†r§kŠŠ}z|Š“~ƒ|^”‘x˜ˆ‹„bx›†‚©€x‰„rž}‹}¬‡xŒ‚˜“z„„–w‰’“–v‡ŠŽ‘„u~Œfš›w–”†–Ž€•¨…k{‹yˆ€“‘¢†ˆŒ—vjŽ—Œƒ…”†q|vœ{zwŒ”‹Š‚Šˆv†ƒ‡†‘v’o™‡t“‚¥…}ƒu‚€s†}ˆ†ŒŒ”…•Š…ˆœvŠ‘ˆ“q‘ˆ‹‹|Œ††‹uŠv†€ƒ‚ƒznƒƒˆ‰’u……ˆ‘Œ„ˆ}ˆ„uŠ…„‰m‡~z‘…“vŽ€ƒƒ‰z†ˆ‘€……„„‘ƒnyŒ„ƒŠv}Š…”Šƒrƒ…z‹–’”ƒz”~…‘‚„|~}~v|‚„Šy‹“‰Žˆ„}…vl…}ˆ„‚ƒ{„Ї€“€†{ƒ‹{‚y‘‰ˆ‚Œ†€x‹€›„Š‘‚–„‚}ˆ€‘y€€‚‡Š„€y‡}…†|zŒ~‹‚„€vtƒ„†Š‚Œ‘z…~„€…Œ|—‹‚w„ƒ}xx‡p‚†ƒ|q‰l‘€‘‚‡Ÿ‡xˆŒŽ„‰“‰‚}ˆ–‰š†Š™„‹Ž„ƒuŠŠŒ€ƒ‰‚•‹š}‘|h‚–……‰“‹’‘‘Šˆ‰Š”ˆ’„…’ކ’z{–”Ž“ƒ‡’‰Š‘†–‹ˆ™Œ”™’’Ї…’ŠŽ…u€“•‡y“ЅІ‘Š‘‰‰›‰‡‡†‰„“‰•ŒŒŠŒ‡Š„…”’—“‰•‹‘’”‘€ˆƒˆƒ‰–‹œŒ‹ƒŠŒ‘Œ”…†„–””–‹šŒ‘ŒŒ’v˜…–”}–”“šŽ‹‹‚”‘‚—‰„†ŒŽƒ‡…~ƒ”ކ’ˆ”ˆ‚…ˆŒ•mŠ›’›Ž†Œ‹„Œƒv†ˆu€‹‡um‚‹…™…ƒ‰‘‚…•‡‰ˆ~Ž„w‘•‡‰‰v•…}ˆ‘Šœn”}ƒŠ†}…Œ‹†ƒ}€‹…“‚nwˆ|…‹x‚„€……„x}ކ†wƒ‹˜ŠŽy’ˆ€‹‚„€u‡Œ‹€Œ~‘‘„‰„ƒz…€j€w‰Œ†Š„‰‰pŒƒ}{…Šƒ†w‰ƒŒ‚y‘„ІŒ‹‚Š”~†Š†‡ˆŒˆƒƒ†€ˆ~z†…‰‰‰€Š|z{†zˆ{ƒ‹w‰‚z}ˆƒ‘‰}ˆ‰‰w„zwtƒŠƒvŒk‹Œ†}–”……ƒ{މŒ‰ƒ‡Œ’~‰ˆ•‹‰Š‘“}Ž’…}Œ‹’•ƒ‹‘†Š†€ˆ‘’‘‡ˆ‹‹Ž™‰…›Œ‚‘Љ‹Ž†‰ƒŠ‰Žˆ„–†‰”†–~‹“މГ”Šƒƒ†ˆŽ‰•”†‹‡ŒŠ“‘‡Š‹|Œ—…‹ŒŽ‚}Œ–ˆŒš†ŠŒ„‹œ‰•‰‰€‘‚‘ŽŽŒ‡ˆ†‰‡ˆƒŽŒŽŽŽŽŠ‹‹’ŽŠ™Œ”Ž”†‰‹“–‘Љ“‡“†Š•Œ’x““|Œ„Ž…‘ˆ“‰ŠŽ•„’ŒŒˆ˜Žƒ††‰Ž™’Œ‚‰ŽŒ†’’Ž–£z“Іy‡€~‡ˆŒw€ˆƒr}w{Ž‚‚|z‡…’…Œ†ƒŒ†‡p‰‹u…„t„y•‚ˆv•~‰{…~ŠŠ‚xˆz‚‹ŒŒŠŠ‚…ux~‡u€‚†Œ~}u‰Š€ŠvŒ‰Ž}{”‹Ž~w‡€w‹†~ƒƒ„ƒ„‚Š~†v~~‹s}xx„€|Œ…z‚ˆ‰ƒ}Œ{ˆ‹€‹{€•{‚‡ˆŽ}ytˆŒˆ…’ƒ‡z‡‰z‘„„x†ƒw‰ŒŒˆ~ˆ‚{u‹†ˆ…ƒ“~„{‡‚‚ƒˆ„†z€‰y‚‡•‡„z†ƒƒ„‹|z…xƒŒ‚‰ƒ‰oŽ}‰ƒ†…¬~†v…‘—•…ŒŽ’€„›…Œ‰¤Š„¡z~¤Ž‹‘€qž}ƒŽŠŽŽ˜†aŽ~—Ž…ŒŠ’ ‚|Ž­’‘‹¡nŽ‘‘}Ž“—ŽŒŽ€|Š••{’†Š•Ž–’‰†…Ÿ…•’”‚‘†ƒ„Šžš‚†”‘Žy’Š‹uŒŽ‡…‹’‡€~”„ŸŠˆ‰‡Š‰ˆ†ŽŽ‹ˆ‹€•„—œ‰˜›‚Ž‘“•‘“‡~‡Š‰ˆ’™Ž›Œ”ŠŽŠ|ˆ’’‹Š’…‡‡–—“•‡•‘‡…‘‹•‰œ’r‘–‘Š‘Šˆ‹’„‹“„‡‹¡ƒ†‹€…‹Œ“|™…Š‘ƒƒ{€ˆˆ|tpzwq‹‚z{–‚}Žz|‰€„‚~{xo}sk~€„|t‹„~„q–||…„|‚o|wy|gŒ}`{t~o’yzputqy…ur˜u}‚Šmt~‚x€v{txy~‘Œh‡z€|l‹{Šy‚„nuz“ky~„‰…wn‚Œyzt†‡€‘vzrgzvrzt~€n‚‚{t{‰ƒ~z‹qxƒytxqql†}…ylxux~…„m~~u|orpƒxƒ…}|}‚zsiu|t~tuwlw‰€~Ї–ˆ€}xp~v–~‹euŠzrs‚ƒ†pŠs}{}„|p‰u†~~z‡gk‹”zŒˆ—ˆˆŽ‘‹‡’u}“ƒŒvvŒ„‚”—†„~Œ†”†Š‰‹‰xŒ|“||‰“y˜„y†ŒmŒˆ{ˆ‚‚Œ‰‹‡v}Ž‘“›ƒ•nt…œ…}‰|ƒ€†|ty„Š€ƒtŠ…‰Ž€Œ†ƒŽ|u‰ŒŒ{„€ƒˆ‡~‹}„xyy€wz‰Šˆ…‡†Žo‡‡‚††‰‰Š‹}†‘~t†…‘x‚w‡‰”~Œ‚†•Šƒ‡ƒ”…†‡‹‡z†‡‰Œ†{}Œ‰‹Ž‚…Žz‹~€‘…‰‹}ŠˆŠ~|‰’‹|‹‹Šˆ…”†{o}‰ƒ‹‡k‡ƒ‰Š†ˆ£ƒ‚‚‚†‡Š€ˆ˜Š’‰‹‰…‡”šw„…€v›ƒ‰¢Ž‡Ž†’~‹Œ„„Œ‰Ž ‘‰•™Ž‚’Œ–‚‹•†ˆ•ˆ†…šu‡j“‡Š™€†“‚–™ž‹Œƒ‹•‹Ž‡•—“•‚€˜‡‹Š…ŽŠƒŠ•”–x’†Œ{xŒ˜v~€Ž•‘›Š‰‚‰šŒ’‹‹•‚އ—|‚‰Œ’‡”˜’ˆˆ€‘Ž™‰ŠŽ†Ž–“‰Ž“ЇЂ™”…”Š…ˆŠ~š—’{‡’y“†‹†€†‹—‡Š‘”‹‡„——‡…Œ‚~•Œš’‰‰˜’‡mŽº•b¥kˆ’~Ž®c¢yuƒŒŒn‰‘”˜Œgls}ŠwxƒnŠÃl“}™~ž‰|k‘^s…o‘kLqz˜Zeqvi ‚¡lU~©lŽu†q¦‹œe—u‰…—l–”~s~‚~¢h‡ƒž’Ši›¡…unqjnœ–”ŽŒpt£b‚‚jz–Šuvq‘—¢wƒŒ”¤Žu•Œ•||“‹€˜ifv˜ˆnz‰‚–•y©q‘Š‹ƒ|o|žsŠw|kli¿‰wŠ€e“‚|œ…‡…o¤wŽ~’’µŒyŠŒ…¥ƒ•…u‘zw‡‡†ˆ}Ž€|„—“Œ†‘€u•Ž„Œ”o‚›Š„”z“„Œ‰‹‡‹‰ˆ‚ŽŠv‡ŽŽ‡q{„„Œƒ‰{z††~—‚ƒ‹z‹‡}‹˜~w‡Šs’ƒuƒšt‹Ž‡Šv‰‚†Š~‡„…}~އ”•„„ny}•‰ƒˆ{ˆ‡‚‡„uˆ‰|x‡„‚ˆ‹Š~“‹Œx„„~{ƒ‰tƒ‹‚{‹}‹‰†ƒ‡}y“y„~†…†‚‡{‚Œ~xƒ€€x‰}Œ„…”z|’‰y„x…‚‚ŠŒ}Šˆ„‚Š|‹…„‡{‚}}‰|…‡‹„ƒ~ˆ‹†„ŽŠŒw‰}‰ˆ†|‡‹|z‚‹‹Šyˆ‹‡€†ƒvq‚Œ†m†‡‹ŽŒtކ•…v–ŽŽ’†“Š‘Šz}ƒ†z‡gy’€‚“‘}ˆ‡‘ƒ‚‹Œw“uˆ‘–ƒ˜zƒ‹m–•†‰ˆ†„ˆ„ˆŠ‚ƒ˜€–‡š””ˆ‹o|‚™Žh‰ƒ†”‡nu€ƒ‘€…r‘Žz„‰†‹~‰ˆ†|{s„‰~sІ…ˆ}ˆxŒ†|“yŒ~u‘‹‚}œŠ€‚˜os|‰‚„ˆ‚“ƒ††s“‹w‡{€‡‰ˆ‰zŠŽŠŠŽ€ŒŠ‚Œ‹€—„‘††Œ–x~‚}ƒ”šŒ’{…x|„{‰~‰‹{{Ž~Šz}’‹‰•Œ‚}‚„†‘ˆk€q}œ…‘‰€†…„‰‹”†“‘ƒz‘—ˆ’’Ž–š|’Œm‡ŠŠŽ‚‹†‰’Žˆ†‚”—…ˆŒˆŽ‹“•‰‡Žy}ƒ‡v”‡€‹Š†‘Гޓzxi•|“•…ˆˆ’›‚š‹ŒŽš‘Œˆ’‹’ŒŒ‹‚Š–Œ…•Œx–‚„‹|ŠˆˆŠ…}‰˜ƒ‰œˆ‹Š‰ˆ‰’‰‘‹‰„ŒŠ††Š†‚އ~ˆ‰’“–‰ƒ’ƒ•‘Š’Œ†Š‘…ˆŠ”ŠŠŠ‰‡…’““‡ˆ‰‘ƒ—‡–‰Ž‹{‡Š†Œ„Ž’“‰‰‘Š˜‡~ƒ—Š“•…’††“Œ‹˜†‰„މŽr†‘„–””‡Œp—™|އŒ{‘‹‡Ž–‰‰ˆ„‹–„†”y‡Š„ˆ‚“£Œ„“‹‰ˆ’ˆ€†‰Ž˜†’ˆ‰—€‡˜„ˆ—‡‘‰¢›¡•‰~…‡†Š“†•™‡”Š‚ˆ„‰Ž‹Œs““’|‚™’„‚’}ˆ‘‹’˜Œ‰Œ‡ˆ›–Š{“Š“‹ŽŽ‹†ƒŒ‰‹Š–ŠŒŠ‰|˜ˆŽŒ‹”ŒŽ‹Š’”’—Ž‚ƒ•ЂЉ’‹‰Œ‹ŒŠŒ‹Š”†‰Œ‡ˆ’‹’™ˆŽ††…‚…—Š•‘ˆ‰“…ІŒ|Šƒ{z“”„†—|ŠŒ€“‰”ˆ‡ŒˆŒƒŽ“„“Š’‹“vu|‘‰uƒ“•ˆiu~€Šq~‹›…Š†Žˆz‹ƒ‹Š“†ŠŠ•Šv‚œ—m‚…{‰•|Ž™“•zŒuƒ‘†’ˆ”‰„~‡ˆŽ‚yŠ…’ŠŒ{Œƒ‹Š„Š‘‹v†…†‹ˆŒƒŒ‰‹˜†Œ‡‹‡‰‹‰‘–Œ—~”ŠˆŽ„Œ…†‚”‹Ž“¢Ž’•ˆˆ‹‡„’„~”Ÿˆ‘{Œ‘‘‚‹†„Љ–ŽŽ}ˆŸ’ˆŒ‰‹ƒ’Ž–“‰…ˆŠŒŽ…|ˆ˜€ˆˆ‰ˆˆŠ~‹ˆ“‰‘’~‡ˆˆšˆ‹…‹ˆ‡†w€ƒŠrŠ{s“‰Š‘‹‚v}‡€‘‰„ˆ“‡…z‹€™‹‰pŠ|‹‹ŽŠv†|„}‡›†Ž‰Šƒ„„…yt‡‹~§‘‡jw†…}Œwy†…„‚rŒŽ‹€Œƒƒ‰‘~‰~y‚~…rv~€‹w‹ŠŽŠŠ‰|ƒ‡x|‹xŒ}Š…‡„ŒŒƒƒŽ}‡v‘„‡|Šˆ‡y„u‰x–‹„†…‹‚ƒ{І‹‰‹‹„†‡€…|~…ƒ†“{†v†ˆ‹|Š}}…|‡Š‡…‚‘‰‡p|‡…|}‰„…}‚zm†Œw~~‹kŒ…‚…|‚–r€~›‡‹„‘††Œ‰Šyu~Ї‹|r„…ˆˆ{…{o‰Žy’Œ‹‹€‚x‰ˆ‘ŠŒ†oŒ€xz‘ˆt‚„€Š€l†x„ƒyˆ…†‹„‹‚™„ƒi|Ž~Šyƒ€„‰‚q…ŠˆyŒ„„žŒ‰•}„Št‡ƒut†‰‡s…•Œ”‹‹|||p‰}ƒ…„Œ{…Ž{Š€ƒuyƒ„„…Ž‚|€|‡¨yŠ‚ˆ›}†y‚‰Ž€y‹Šˆ}™y…ƒ{†zƒ}yŠ€‹~—~„uz‡ƒ‘{“’z‚ˆ€z…‹ƒ“ˆw~…}zŽnЇy~xˆmŽ…ŒŽ‡Œ‚ˆ’‹‰‡Ž‡€–€’’„‘‡v••yŠŠ‰n…•~‹‡‹…“‰|„‡x‰‚€…Š•”šŠ‡Œ‹ƒ‡’’‘‡Š‰†‘‰•{}z‰Š‚Œ•…–ˆŒ‘ŽŠŒ‰Œ––‘™ŠŒ…Ž‹‰€‰‡–‚sŽ‚„‰x‡˜††‚Žˆ‡œŠ“‘…ˆŒ–‹“‰†‰Š…‡•Š“Œ’Œ‰ƒ†–‡ŽŠ…ŠŒˆŒ†Š‘†‹‘Ž„ˆŽ•Š‚‡‡‰~’™Œ•‹‰‰‘•›Œ‚x”›˜‹}‰„ˆ„†Ž‰“Ћޖ“†ŽŠƒ|†Œ’Š’…‘Ї…’•ˆŽ‚‰ŒŽŽŒ‡Œ|Ž“„Ž‹–‚{„‰m‘”‡“†‚ƒ‘†’~‹“—‡uˆƒˆ’’œŽŠŒ’ŠŠƒ”‹•“ˆ…Œ…†„“‰y{ŽŽ’”‡’‹–‹Š“ˆ†‹ˆ’’–Š“…‹’‚Ž€ŠŽ’Šs–Š{Œ‘„ˆ‰€†‰ŽŽ–ŒŠ…ˆŽ’Œ‘ŠŽŒ‡„’‰ŽŠŽ‰…ƒŠ“Œ‘–„‰‚Œ…•ŠŠŒ‹ˆŽ’’~|†Š‡Š”™‘—‘Š…’ŽŒŒ‡œ„‡„y•˜„ƒŒ‡„‹ˆŽŽ–Љˆ”Š“’‹Œ€‰”‰˜†“‘‰ŒŠ‹‘–„v‚„‡ŠŠ’‘˜{•‹—ˆŸ—’‚š‘‹p‹ŽŒ†Œ„”‰‘…“†Œ‘БЖ›Œ–ˆƒ†Š“…‡‰‹‘ŽŽ–{€Š~’–ƒŽˆˆŒˆ…–†—’ŒŠ”ŒŽ’ŠŽ‹•ŽŽ}‡˜–•|–ŒŠ‹w‰ˆ…‚‚ŠŒ‚”ŒމŒˆ†˜ŒŠŒ„‡‰|”Œ™ƒˆ†‰ŠrƒŽ‹’•‹‚Œ‹†”“Œ••‰…’„Ž…ŒŽŒ‘‹’‹ŒŽˆ‡Š„‰ †ŽŽs–™“Єބ‘‰ˆ“„Ž„’‹Š‘„’މˆ‡–’“„Œ•…œ—‰Œ€ŠŽŽ”‘‹“ƒ’Œ|—‘‰‘Ž~˜˜„}~†ŠnŽ“‚ˆ‹Š…˜‰‰†w‹|yˆ““’—‘”Ž’‰‡‡‘ŸˆˆŠ€‚‘†‘{z{’ƒŽ’…~•Œ‰…˜”Š”yŒ†Ž’‘’˜|~’ˆ‘“ˆ‰‰‹“„p–„Š~†“‚‰~…€Œ„™ƒ“Œ†Š‘”‘“‰ˆ‹‰†…‹Ž”‰‡‚‹ŒŒ•‹Ž‹…ŒŠ‰ˆŽƒ‡˜Œ•„‘Œ…‰’“Ž–‹’“‡‘’ˆˆŒ‡”…‹xŠ—‰‚‰‡‰…ˆ‘’‘“…‰ƒ’†”Œ~‰™‡‡–‰’•†ˆŒŒ…Š„Œ‚Œ“Š…–‡{’ŽŠ“Œw”’~y‚‡ƒm„}ˆŠŽ‚Ž”Œ•‚”Œ‡Œˆ~‰Œ––‹‘–†‰‹ƒƒ•‹Œ‘“‡•”{|qƒŒ‘‡“މ‹™Œ—ˆžŠ•”›{ˆŽ~—‘“ƒ‰“•ƒm™‡‰†}|•Žˆ‚ƒ~‰’ˆ›€ŒŒ…ˆ“‰—’’Š„‰„މ‹•†‘†”އ…‹ˆ‹”Ž“‘‘‹‚‰ŒŠŽŒŽŽŠ”‰ŠŠ’ˆ‘‡‘„ƒ‡Ž‘†ŽŠŠˆ“Œ”‰ŠŽ|‘Œˆ‰Š‰ƒ†…‘ޓޑ†ŽŽŒ‡‡…|…—ˆ’Œ–ƒ•’…Œ“„‘“w’•ˆ”†‚ˆ‹ˆ‰…„€‹v…}˜…ww†‚ƒŠ•……u…ƒƒ„yŒƒŠ†}‹‰”…„ˆ„s“„w‹—ƒ“tŒ{€‹€‰Ž”€zwˆŒƒ‚“€‰ot|ˆ„‰‘s…‚ƒ’…zs‡Œ†‡xƒ}Šz’“†…{…~w„~s‡~‘~‰ˆ{†„ƒzw†u}xw€Œƒ„‹ƒ‚‰–‚€}…‡‡‚ŒzŠ‚w‚ˆ‚wŽ‘‚†ˆŠŽ“zƒ…‚Žƒ€…€ˆˆŠ‡ˆ“‚„~~’…~ˆ‚~„†‚€‡‰|‡‚†y{†††…†ˆ‚~‹„}}u„s„‚~~}‰mŽ’‹‚ˆ}ƒ€~Šw€w{y|ƒ~‚~}nt˜{w‚‹}~}Œƒy}r w}{z|ƒ‰moz•މ‹sŽ}{†w~„‘‚|h}Ž…Šƒ—‘„xŠŒtz……‚ˆi‡u„„x€„„u€‡‹„p{{’z„‚•‘€‹†Ž{ŠƒprŠ‚u{~…z‚{’…Šš~zˆwiŠ}€‚ywx‡rvu}}vmqxp…|}—tƒ‚s‡}}€}€l‹sƒ–y†x~~xxit}Šs}~tv…‹ˆx||w{qzu„rx‰vz€x‹‡||tztws€xvzr‰wu…ƒ~n{‹Œ‡~І€ƒ‹††‚‡‡Œ†‹v‹Œ…‰‡ˆˆ”Š‚ŒˆˆŽ„‰†’vp‚{‰ƒ–‹‰……‰yŽ‘‘”„’ƒ~‰ˆ‰ˆƒŒ†ŽŒ~‘Š’ŒŠ…•–’‹”Ž‚ƒŽ’‘Œ~“f‡Ž”„˜“‹ƒ„ŠŠr„“‚Ž‘•“’’„‡‡t}‰u‹’Š„–Š‹‰‹˜šŽ”‹•‹”‚…ˆ‹£€ƒˆ’”ŒŽ‡”ˆ•ŒŒ‹ˆˆ‘‰‡ƒ†‡„’œŽ„ƒ•|„ƒŽŠ„Šˆ€‘‹Ž‹€—˜”‰‡–Žˆ‹ŒŒ‘“†˜††„†‰Š€‰‡Š‹‰š“‡‰‰”‹ŽŒm„‹’’†“{‚އˆl˜tqƒ|…qoˆ€Œ„š~~“‚y–ˆ}ƒ“Š—u†“ª•‡y†~‹~ˆfl|”Š•{t‹‘ ‹‡‹ŽŽ‰ˆŒˆƒ“j{’†€”‹s|‰„Š‚Šs|Œˆ‹p”‰”¥‚~†vš|Œƒ~–zrƒrŒŽw‘–Œ„ˆ‡ƒnh„}™‰–ˆƒ€Žˆyj—…r{ƒˆŒ„{‰Ž„ž‰€…w˜„¡…ƒ…‰ŒyЉz‰†Ž„Š€’›„ƒ„‰m‹|‘€xq‡wƒŠŒŒ‰†vyŽq…”rˆƒp~xˆŽ‡…~Œ‹qІ—|‹ƒ…„ŠŠnŽ€•|}‚‰y{““~†ŠŠˆ†Šqz{nŒwqƒ‘ŽŽyƒ‹u•„†•‘„sŠe‹|{’uƒ€{„‰ˆf‘uƒ„ƒ‚}ЇŒŒz‡…Ššz‘•~lx‡œ‹{†€…‡ˆƒ|vƒ‰Œ“rŽŠtŠ„”’•ˆ…‡…Štƒ€†ƒ‚|‡Žq…ˆ~u„u|…˜ˆŽ‚‰Œ„Œ†‹jŒz†}ƒ„„‹Ž†˜”yyu‹Šˆˆ‡œ}‘Œ„„Ž„”Š‹‡ƒq–|‚Ї‡–}†€ˆ{‰}‘†‚†r‡€™‹~‹ˆ‰ƒ‹“y‹€…†…‡‰‰tz€Š‹oŒq‰‡‡zw„|€‚‘ˆœ}„‰€‘Ž‘‰‰Ž„‰‘“‰—ˆŽ{ut}…•‘މ |’‚€Š‘“{”}Ž{Œ‹‚€„‰‹Œ‡“†™Ž‡”…„”|Œ•‘x~‹Š—|ƒtЇ’“‹•–”‹ˆˆ‘x‘•|“‹”‹’‡ˆ•}”nŒŽ’w‘šk‹”™„†’…†ŠŠƒ™}”’Š‹‡£†„~‘ŒŽŒ›š„™•ƒ”’’“Œ…Š“‘‡ˆ‰‡”••‡€‹‘…„†•Š‰Š˜…†„ŽŒ‡ˆ‚’Ž•”’”…Ž‘”‚“|†ŽŽ•‹€}‰ˆ‚€† ~€„–Šw˜Š’‹†‡x’‹–~y‰–tˆ„™ˆ~ˆŠ›”Šuƒ†„ƒ‹–v|‘wˆ‰…—‰‹‡u‰‰†~™™‘‰‘•–Œ’Œ†–€Œ…‹Ž“•‹•‘††’˜w…ˆˆ“œzup‹’Ž™Œ‡–xŠzvu‘”…ˆ„”‹Š‘‰ƒŒ‘€Š„š|Ž‹…Ššˆ–‡–„‹•™š€‹x—’Œ‰„™ŠŒˆ“†•ˆŠ“•‘‡™˜—„…‚‡‹{…’Œ€ƒ–—”‡“‡…†”Œƒ‹‘ŽtŠ‹ƒz——‚„‘‡†“Œ™‡”„’Š}ŠŠ…І‘ˆ†‹‹’€…•Œ†x‡š€Œ€‰†Œˆƒˆ”t|ƒu‘wt‹ƒŠ˜ˆ‹ˆƒ˜‚„”ˆx€“„ˆ˜v›ƒ}ˆŠ‘jŽ~ƒ‚}‚‰‡ƒ‚ƒ„…“|’mx¤Œ{|~€ƒ‡x|x~ˆ„Žr‰Ž€ˆ…‹”Ž}‹}ˆ‹‡”yu€Œ‰€‰{„s‰‡…}ƒ“sx„ˆˆŽ~Š”ƒ‚Œ‰qŒ…{ˆ†Š†€ˆ{…ˆ‰•}vŠ|†Š“}†…y„ނމ’ˆŠs’{‰„‡Œ‹‚•{Š‚††ƒ…|ˆ‹yz‡†Šw…š†o‚†ŠŒ|‘Š‹’„}n}…‡mˆ‚‚Žš–‰‰ŸƒŒƒ…Ž{‚‘t‹„Œ…xzz|€‹’‚Š}‹ƒŠ—…Š€}ˆ}Š‹††…o‘zˆ•‰“t‡€…|„Š„{Ž”Œy‹{{†‡„…‚ˆvw‰€‰t‚~€˜„†tˆˆ†z‰{‡Ž…‰~‘ƒ…”†„€z{v‘‰†ƒˆ€‡‹‰ˆ‡Œ‚z}{tusˆ†…‚‚…‰†Ž‰™ˆx‚zƒŒzŽ•u€‹„†‚€xŒ‡„†Œ‹‡†€‰ˆˆ‰w}‡‰ˆ—’‘’‡„~ƒwƒˆŽ‰‡…w{~†€}ˆ}†”}‰€‚{‹„…Š{‘‰|†Œ„w{…t‚‚ƒnƒ„{…xœ‘‚nv„Š“‹ˆ‹xw“†…†–¤•z†tŒ†™r}‡inopvƒ†‹‘vHˆ~x„~ŒhŠ~to‡g‰qfzv›”“xy’Ž~ƒ…’y`—p’}•€‘–¢‹j™‹p’‚‘†”…Œym›{““nh‡‚q’ˆ†›…}‘–oƒ†„–‚x’}z‰Š‚ކ†“{ˆ—Œ“‘‚ŠyŽ–Š}‘—œ‚|vˆ‡‹r‡vŽc—ކ~€q„‡Œˆ—¤z…„—ŽŠ¡šw‡‡}”xnŒ}Ž’Œ|šŠt˜¢€‘„vˆšv—šŠ†‹wƒŒ‘y‚“œ†šŽ†yz˜ƒ{{ ŠŒ’†‚‰‡‚Ž’“ˆ’‰“”‹‘‹Žœ€„Œ‚qŒ‰Œ‰”„Žˆ‹€•’„‚‡ƒ“…”Šž‘ˆŽŽ‹†‰†|~Ž“……‹†ŠŠ–Ž”w„’І‰”‹’—ˆŽ“‘ƒ‰–‘Š•’•ƒ‹”„•‘…†}Ž’„v•…Œ}ˆ”Œ…€‹‡•…‹ˆˆˆ†…Ž‘’‰Œ…‰ˆˆŒ‹„“‰‹ˆ’Ž’‘‘ƒŽŠŒŠŠ‰‡Š‰“—…‡‚†“—ˆ‹‘ŠŠ“ŽŽŽˆ˜„…}““‘‘†‰Œ†…‹Ž‘Œ••ˆ†Š‘…”…Œ€Š‘Œ“’ƒ“ŒˆŽŒ…•…†…‘—„‡|Ž…„y”v{ŠŒs{†‰Œ|™ƒƒˆ‡‡†Š—Ž }¥†z‚„ „s’ƒ€‡ˆ††d‹vƒs‘x|„—|’‰Œš†•–ƒŠsw“ž‰ƒ‘y}’…ˆ{†m‡†Œs‘‘„–ˆr–†ƒvƒŒ„‰wƒ‘‡wŽzˆz|ˆ~Ÿ†’І—’Šk”‰wyŒ‡‚…—~|†”Ž–„„Žuu‘‘ˆƒ›‚v…‹…”ƒˆ‡‹~‰„‹ry„}ƒˆŠŽ‚ƒz}{†—–ƒ€’{˜“†Ž†‹Œ‚w‰Š…ƒŽŒs‘„‰v…|{Š~tr{t‚vp‘~‡“€|„~~‰ˆ|xzyu}e‡{{~†‚u—y‡q¡~}”…v€uzƒw€u…s~y€qw„ƒy|†{nˆy„vt€xr}}v~…€p…‡}‹r†{€{m”}ˆo{…|t‰–lr€‡y„p†ˆuwwŒ~‚—zˆwqzz{‚|y}nw„|o}Œ~wŠjw‚~q{y…zƒzqvo{p……o||~ƒvur€qƒ†~}z€zŠvmv€|w‚y~v~{z‚}ƒ|~”Œ{s†|}{‡‹ft„{vt€…~ousxƒ‡ƒu{‡z€…svuyh‚€Œ‘”‘‹‡ŠŠ‚‰”Љ–~zЇn‡‹„ŠŽ”}‹–“…‘‡‡–“‚’–’Š•‘ŒŽ–ˆ‰…€ˆ‹‰šu‰’’x|o“ƒŽ•‹„Ž~‡”‡˜—Ї˜’“‹˜ˆ~‚“–…Œ‰”’Šs“…Ž}ˆ“yŒƒ„x‹“Žzš‚„ŒƒŠ’€œ’‹’„–‘€‹…—Š–…‰ƒ‡•Š”—Œ•Š”’‰Ž“‘‘†‘ŠŒƒ†‡™”ˆ‚‰Ž‹‡Ž‡’…„˜Œ“‹•z”‘…‹‹„……’•‡’ŠŠŠ‰„…„€}ˆ–Œ“‚“…’އ”“€y{vˆxŠxtxu|~wƒˆv†‚{vzƒz~‚xƒp…„x€u„‘ƒx{vt}„{ƒ†{xu|~‚€Šy|~yˆ†{„ƒ‚‚y‡„q…x}‚€|p…n€„‚u{~{zx„†uŽzƒp›~„}‚ˆ‡w~‚n{€€xvƒmƒ~t„{‚˜„€†q…s|ot|vw†t~ƒ‰€|ƒx†€„ƒ~Š}yqxoy~uw‚r‚|ƒ…~qy…€‚xlwˆ…z€~€s~|z„~‡€wƒ}~z€„—}‚…z€…vm„|ƒp{†z{}ƒw~ƒ}|x‡‚†tƒ‚z…x{zƒƒ˜ž†t“›{€“—„•‰ˆ—‹…ŽŠs˜‘t’ƒˆŒ‡ˆœ‡ˆ‘†‚x¹†”•—…‘™|›Œ–z|ˆjnty{n–›t‘‚‰Ž—|“‚u„—‰yš‡u’—’„‰ƒ“ƒ„‚’””œ‚‰‚š†Œ‚x„“‰™……ˆˆ}†l‘’„m†¤‡x€g‘Š„~}†‚‘¨–Žw{ˆ–sšŒ‡`naˆ‘‚Œz‡o^–z‹ˆ«ŽŒ‡~„‰|…Ë’||[“”Šš‚{“€›xŽ} }’ƒ”™ƒŒ’„‚œl{‹€™™Ž‰ˆ z‹€†…ˆ¦›®Š•…‘‹œw•…Œ|ƒ†•}Œ‡‰”‰Šƒ“‘ˆ”Œ‰‰’ƒ‘v}„w|–Œ…“”Šƒy’Œ‹~Ž–”~‚“|‹ŠŒr‚„Œˆˆ‰ƒˆ’šŠ˜ŒŒ‡•x‰ˆ…Œ›xŠuŒŠˆ’{’•‡ˆ‰ˆ‰w‰”x’””ˆ|‰‘|xˆ”‰ˆšvŽ’‰™‡‰‰‡ˆ€‘•‹’‘‹Œ„•††‚”€ƒ…“‹˜Š–ž„’‰Ž–{ŽŽŒŒ‡†€Œ„’ŠŠ‡Š‰~ŽŽ’…‘‘}‚‰œˆ‡‡~Š••„Œ“‰Œ‰”‚ŒŽ‘…‚Ž‚€‡‹–ˆ„ƒ”Š}–Œ”ª„x–ˆ‘ŒŠ””™o‡”†”’…’™…sŒˆ…t’Šz|šƒ•†…‘…v‹€–“˜‡›ŒŽ™“…{|Š{‡Œ‡‹‰†Ž’Š“…™|†ˆ‡ŠŽ“Š”†Š‚~”‡—”•˜‘ƒw“…‘Ž|€ƒŸ’q”‡“Œ‚‰‡„““‚Œ—Œ„ Œ…‚ˆ‹‚‹™–Œ…‘Ї‰Ž~–†ž‚‘‚‹‡‚‹‹—’•’‰ŒŒŽ‘“Œœ‰’ˆ’‹›†ˆ’‡“Ž™–‹”‹“‰†•†Š¡|‘‰s“‰„Ї‰ƒ„„ŠšŠ’‰Š‹Ž„ †‰‚‚žš‹’„›€˜„’…’o‡–ŠŠ€Œ††‹€†‰w‹~‹Šwwˆ†{Ї}l…‰~„‚‡€{„}€…}…†nŠ|u…“z‹ˆ†{ƒl|ˆŠ‚~€††‰’{‚ou}ŒˆŒtƒƒƒˆŠ}s„‹|~Š„†z‘Ž„ƒ€„x}ƒ…w…~€‰}…ЇЅw…v†x€x~‡†‡ˆ€x‡€€†‚‰|ƒ¢‚ˆŠy‚|†x‘€†–}Ž˜ŠŠ}‚|•‚{z…w‰Šƒ‡|~†ƒ€~w„Š}–†‚‰o…‡ŸˆŽ{‡‚v|ƒˆ}‰„‚|y…{o„t…‹~„~…n‚ˆ„‰‘„•€{Š™‰Œ€‰‡t†Œw…‡„ƒƒxwˆ}‡Œ‹{…v‰‡{–Ї„ˆˆ€v‡pІ„‰‡t‚{ƒ–‹‰sŽƒˆŽ‹€~Š–Œj‚ƒŠ‹‹{‹ƒ…q}€}‹u„…‡}uƒ„€…s••…{‡‘…‰…„|€wЉ†‰‡xƒŠ~„‘…|Œ‹m{ˆ‡ŠŠ„„‰€Ž‚‚~€€•~„ˆˆ‹}ˆƒ‹~v|…‰ˆ’†‚|‚ƒ}‘Ї‡~Š‘†ˆ„‡~Žz•€{ˆ~ƒ…~‹‚€{‡‡y€„ˆtyƒ†…Šƒ„”‚‚Šˆ‚ƒ„wŒˆv€‰mŒƒ…{„ƒ‘ˆ‡|qŽŠu~Œ•‰’“‰‹ƒ•—|‹Œ‘›’›~…€|ˆ}Š–Ž…‹lŒ…‚z{“š…•‰Ž‚‰ŽŽoއ…‡‚‡’k‚”‰Ž’‰r‹‰ŒŠˆŒŒƒxšz‚‡Ž… ‰v‘Œ”Œvš“ŠŠ‰„Œ˜ŠŠz}“‰ƒ›}ŽŒ€’‰–“Ž‹ž‰“‡‡†’~„‰Žˆ›…†„Єޒˆ“~•„•Ž’~’‚‡ƒ—Œ•˜ƒ“”•‰ˆŒ†„‚y”‰Š¡‚vˆ™€Ž{„‘”š‚„—‰‚”›‡“……Ž—€‘Šˆ‘‡}Š„s‚Œ…‡…‘ƒŽ‰z„‚yl~„Ÿ„p}–Œ‰™Š‚—~yyІ†‚{†€†–Œ~˜„}„ƒ‰Žq‘‹Š|Œ‹Ž}ˆu…€€Šˆ„‚ŠŽŽn|ƒ~|‹„Œ†€y„„wˆxƒ„”‡Ž~‡’pŠ€ˆ…u€‹‡x…}{}…ˆ~€”‚Žjy}‰x†›}‚~‡n~„x~†y„Œ††rwz¢{ƒ‚‘…–‚ƒ{Œ‚|„‹„„y“†‰€‹‡u‡‡‰†~Œ€|}ƒ~ˆŒƒˆ€|~y~{‡{Šƒ…|yyxr€„ƒ}~Œ„‡Œƒv…}„s”‡‚†}z“‘‰Š‡‰‰‚ŒŽŒ‰ƒŒ‹{’•‹˜Œ‚•}xƒŒ†n„‰‡‹‹“„ˆŒˆ„‘ŽˆŒˆƒŒŠ–Ž™ŠˆŒ‡‰‹Š‚ˆƒŠ‰‹‰Š‹Œ“xy€“‘‹†ˆŽ˜ˆ—Ž‰šŠ’’’–†ˆ„‘”‰‹ˆ‹’“„t˜†‹~‹”„ŽŠ}Œ˜‡„›…†‡ˆˆŠ“†–•ŽŠ‰‰ŒŒ‰ˆ’Š•†–‡Š‚‹‡‘‘‰’Ž„Ž’ŽŽŽ‰‹‡‡‡’‚‡‚‹Ž’‹‹ŒˆŽ•–ŠŠ’{”’ˆˆ‹„†‹†‘ŽŽ’ˆ‰Œ‰‹ƒ†~Œ”‹Ž‚‰‡Ž‰‰Žxƒ‚ˆ›‘ƒ†‘†‰‚Šu}€“ІvqŒŠŠ‘€‹…|Š‚z—ˆ‡‡†Š€x‰p…‘‹u“‡~…ŽŽlŒ€‰z†‰Œ’zˆ€ˆ‘‰†˜‰›sv„„~‡€œ€w~‚‡sƒ™‹‘†|“„‡„yŒ„ˆƒvŠŒŒ†ŽtyŒ€„ˆŠx…Œo}w†ˆ‘}ŽŒ‡Œ†Œq”ˆx€ŒŒ…Œw~†‘€xŒ~„‘…†Ž•…‚‚ƒ†‰‰‚†‚‹…‹„‘†‰}šƒ}~Ž|Œ}~†€ƒŒ}{†‰”z‰‰Š‚{‡„Œ‹‰‚‹…~x…uŠ„{Œ{Šm…€Š…‹‹oƒœ‘„ˆƒ‡€{†pv…‡…ol…ˆˆŽ–ƒ~‚€•zt—~t‚€{‘~•–uˆ~w”ƒmŠx‚†„Ž}vЇ™†ƒ{€’Š‘„v€šxv€„‹tˆ‚“‰”t|“‡‹q‹’…‰”Š€‡ƒ€‰ƒqŠŠ‡Ž‡—‰„…†z†rm†|‡‡‹‡††‰†‰ƒmƒ€u{|€yŒŒŠ™m„‘~•†ƒxˆ…‰}Š‘ˆ‡‹Š†—n}~‚…‹z€‡‹{“‹‚p}‡ƒ…z€Žuˆyyˆ‰Š“}‡Œ„‚‹ƒ‹…„‡‰ƒ…‡y€‚s†‰|…ƒm‰r‹‡……r…‰‰u|xoˆzwz˜„€‘{|{ƒ‡€zƒ{|nƒwlƒ}~‹{tw€k”‚„€}vx}‡{ts€sw|Ž{ƒvƒ|zy€wq†„ƒˆqp}€lˆˆ{rvyu~‚}’kƒw‚€oŒ‹y{†ip”žfpy†‚}{vŽ{x|„ˆ‡uyotxwzt……wˆ†nu|ƒ~Švsˆz}y}yqŽ…„tpwr}r£†ps~z€mwr€{„}w}‚……ˆƒtmrtzzw†xu‚}ƒ‰~‚Š|€…y{‚ˆ‚‡p|~ss}}‚o‰x‚~ƒ…iu„|~„{{m]{‹v„}ƒ…‹r~†—š‰Ÿ“˜€vŠ”ˆrŠƒ”’”•~’‚„šŒ‘Œ†’–‰™‹Ž‹—‹Š–”„‡“‡Šƒ‘‡‰„†‡“xw–’}”–ƒŽ’Љ‹„„š“ˆ…ŽŽŒ“‘–’•y™’œŽ‡–zšˆ•ƒ–Žˆˆ‡‚x‰—ˆƒš‡Šƒ‹„ˆŠ‘‹ˆ”Žƒ~‰ˆy€’„‘—ˆ’“ŒŒ€…ŠŽ—–’”‡“‰‹Š‘…Œ‰ˆ—ˆ“Œ†”Œ†”†’Œˆ“x—œŽˆŽ‚Š…‘‡ˆŒŽ‡‰’{Œ€’’’‘‰‰…ŒŒ‰•Žˆ€„Ž“‹‡š‡xš…˜Šƒ—€xŒ†n‰‹‰‹…’Šƒ•’…„Œ“……ނІŒ“Œ›Œ‰‡†‘ƒƒ}•‘‰„ˆŠw‡‹‘‘“w{€’’…‹Ž‹™ˆ‚•ˆ’š”Ž‰“‘ƒ‘ŒŽ€ˆ€‡Š–’‡tŽ„…“y™ŽŠ‹…z˜‹~œ‹‰ŒƒŠˆ˜Œ‹†’€‰‹‰™Œ‘Šˆ‹‡‘–†Ž‘‡„“Ž‹ŠˆŒ†‹Œ‡“„”‰ƒ…”ŽŽŽ’‡†•’š‰‰‘w—”Š„‹ˆ‰„‡‡‹‘–‹Œƒ“…‰Š“ˆ’ˆŽ„‹ŠŒ€ƒŒ|…‰‚‹…ƒˆ€‡‹}…ˆwrƒ|~fn•y‡ƒ—y}‡œ|{’|ˆ‡€…y‰š‹†|ŠŠ}•…zzˆŠp–ŽŠ’~‚}u†€‚†‘‡ŒŒ‰‹’k}„’…„xˆ…„l‰‚w–‚”t„‡„ƒ€‘ŒŽ•…€|ˆv€’uˆ}„ŠŒ|xˆ‘ƒgŠ~ŒŠƒy’~x€Œli„€py€|€„‡Š’y€˜…‰{…|ˆˆŒy–‚ˆ‡y†ƒ„‰|‚…„…ˆry•‰ˆšy‚zz…ƒ‡ˆ€h}sˆv‹|‹~†z~x‡‰ˆ•“ƒ…‡”v{ƒ‡‹Š‹ˆu†‹‚Ž‘‡~Š‚‹r‰‚‡ˆz„s~|…‡~w~ox†ˆ…ƒŽ~‚ƒ~†ƒzŠŠmއƒ‡q…X…ˆˆŒ„{t}„†x—‡‘•‹~‰‰‰Ž{Š‹Œ†~„˜„|{o‚}‘‡ˆ†~‚uŒ}}†…‰ƒ„„–ƒxƒ‹}}}Š…fs††s‚}‰z†wz}y†|‡“o’{ˆzy€‡ƒy~{‚„{Š…r’x|‚…wŽ“~yy‚yq„~Œ„Ž|ˆ„ƒ~……Ž„€—‘‘‚„{z’w…‚z‹pƒ‘‹„…rw‹„y‚~wz…v“r~}z‰†z‰‚|‰ŠŒƒz€„‚u…†w…œŠl¬uMއ››qކ«€—„އ|”s„Š‚Šr†ˆx{‹d}ƒœŒ˜s”¢ºwžƒ¡z‹’’x‹†”Ÿ’“zvŽgŒr’¢…‰ƒ‰¥˜´f‰| Švz‘ˆ†}†ytŒzŽ—‹”‰x}˜¡~|¨’¦–Œƒy…™–q†ps‹¤w›Œ–Œƒ–…|†ŠsŽm“›‡Ÿzy„€ ‹u”Œ‘‰Œˆ…‹“z‹‘–€~˜”•ªŠ—…•…ˆ||§€u’…Ž•yŒ“Žšƒš˜|€~…t‘—Ž{’‰•š‡Š‰ŽŽŠ‰‰Ž“tx›“}Š…}…ˆ’¡’€›‹Žyˆ’yˆŽ•‹›‡y‹˜ˆ’ƒ›–™…z‘‘|m€Œz‰‡†‚މ‘Šw™›y”‘‘‹“Œ˜—”‰Š‘}{ˆ…„x™•{†Š†‰Œ•’“}ƒyx“„‹Œ’“„š’ˆ”Žˆ•™‘Š““••˜Ž„†’ƒ†„†„•‹„–’…ЇЋ†x–‚‰€†ŸŽŽ‚ƒ‰”’’Œy˜‡”ˆzˆ›‹Ž|‰€”–‘›ˆv‡|‘‚“•ŠŽƒˆŽˆ‘‹¤Ž}ƒ‡w—‹‰›ˆ„—†’y–‡£Š“‰yœ ‚‡‹“‡“~„‰’‡—…Š‘Ž|Œƒ€ˆ“ Š‘˜ŠŠŒm“}Œx„™‚…ˆ}z‰„††”†’‡‚‹’‚‚šŽ‹yŠ…“{€s‹…„Š‘—‹w‘‡”‘qš“ƒ’Š„†ƒ…›Ÿœ‡‘Ž„„y˜“}‰’Š‚’–uƒŠŒ~‡ž¢’Šr{|‰‰Šx“‹’¥‰ˆ‚‚𠀋ޡ…†”Ž‹“„†‹‡†u˜™‡‡‡›‘•ˆ—Š‘“{†}‘o„‹‘•‹‹š„”Œ•‡——‹Œ›…‘’”‹‰‡Š~€Œ—ƒ‰‘‘‘{†ˆ‘‚ˆ‹’€xŒœ‰‰r•“›Œ‰‡“‘…’…z’ˆ‘‚„“vŽŽŒŽ†…ˆ|މ€„Š”€ŒzvˆŠˆ‡‹|ŠŠœˆˆ‡•‘…„ˆŠ‡Ž‹‹“~}‹|ƒŒ}ˆˆ€zq„‡Š‘~‰™†‰‰Œ‰‘†…|ކy}’Œ•‹Œ’uˆ’‘‡‚Š—’‰}…‹ˆ~–Ž‚Š~Œƒ}‹“‰‡‚ƒˆ“›Ž‡ˆ‰Ž„’“}‹ˆ‰˜‡‹‰‡ˆ ‰‘†„…‹‡˜†ŠŠ„€Šˆ’„“šŒ…Š‡ŠŽ”Š‹†™‘‹‹–‘‹•‰‘†’”˜ˆ‰‹™‘Š”‰††•Œw•˜’‡Ž~…‰—ŒŠ†–€‹Ž†Š”~ˆ‰ˆ…’‘Œ‹„‘‹‚Š’‰~‘‰t€Ž‘‰’€Š’ƒ…•…‰ƒ†ˆ‰“Œ’‰‡Š’x{ˆwˆŒ—‘‡Šv‚„Ž“‰y—w•’{Ž‹…Œ…Š‡ŠˆŠ”‘‹‚’†–wƒŒ‡‰…Œ’–{†|†…~˜ˆ‚†‰‚z”‡Œ“‹‹‰‹‘ŒŽ‚‡Ž†}Š™w‰‹Š˜†ˆ‹‡‹Ž‹‹ž€••‡“Œ‰~‰‹†Žˆ‘ˆˆ”‰Ž‰”“ŒˆŠ—“–“‰‰—ˆ‡–•‡”ˆŠ“‘‘†“’†‰…”‹‡‘Ž}˜”€Žƒ”Š‹’‘ŠŽ“‹‰‡‹€‰’…†‡•‰†„“Šƒ‹—ƒ‡›—yp‰y“ŽŒ™…‚”’€‡“Ž…ŽŽ—¦zŠ—v€±›™ˆ¨ƒ‡zŒƒ•”„¬ˆŒ‰–‘’›”vž–‚Œ‰q„…y†–’’‰p|Žxr‚œ™šz‡Žw§ž‹•‹”y…‹‡‹xˆ“”‘‚‡Ÿx’ˆ£š“€‰žu’Œ¦‚‘€“„’‘‹e‘‘z™ˆt†…ƒ•“…Œl”•˜‰˜‘z„ƒ“{“Œ„“„”m„Š–†„¨ˆ—ˆ›¡˜šŸš‡Šsˆ•ˆ• ˆ˜„І’|“ƒ€•…„}‡Œ|Œ†Šx†•š„Ÿ„‚œ‚……£‰’Ž…~‰’“yv‡‘•ŠŒ™“އ†…Іƒ‡‘‘‹”ˆ‹Š‹”Ÿƒw‘‡‹l’†„Š…’‚‹†•’v…ˆ‹•’ŽŒ‰…†–‡‘Ž…ˆ‹•‡‘ŠŽwz}Ž|•”‡‘Žˆ–•‹Œˆ—‘Œ‘˜Œ‡Ž~‰˜’}ŠŒ‘Šu™‚‹Œz„•Œ†~‡€‡Ž‚‹œ‹ŒŠ…‡•‘‰މ‚–‰Š‰ˆ‘†‰|‹—Ž•ˆŽ…‰Œ…“’ŒŒŽŒ‰ˆˆŽŽ}‚ƒˆ‘’‘‰„•’‡Œš‚‰{”™‘ˆŠŒŠƒŽŒ’Œˆ”‰†Š“Œ‹Š‡’““Œ…“‹’ˆ’ˆœ‰€{Љ„€‹‘…›‰”‹…‰—‡”‹ŽšŽ’•}“|†}Ž{Œ“Ž€‰t„…’z}’…†‰„†ŒŒ†}•‚Š„„q„•‡Š‡‰‘›pƒ˜Š†ˆ‘…‹Šx|…†ŽŠ›x…‘{”†ƒ‹‹“†r‘Œ’‚|ˆ‰{ƒŒŠƒ‘•‰‚”ŠŽ ˆ”‡Šˆ–Œ‚…“Ž‘ˆ‡……‡Š‡‹„Œ‰„™„Žƒ“†™Œ‰„‹‘‘€€Š–‹’’ˆ‡‘‹‰Œ‡ƒ‹•‚‰yŸ–|‡†Œ”†Š••މ‹˜ƒ’…Œ†‡ˆŒ’Ž•‰ŽŠ‹˜‚Œ}‘’Œz„“s“„–Šƒ””‹„„‡Š‹‘‘}‹y‡•‡„”‘Œ‰xr„‡ŽŽƒ†–™€™’ƒ§‹“’Š’™‰Ž…‹œ‰šŠšƒ†’“w…Œ‹‡{’™›zy{‰…ˆ}—Ž‹†‡ƒ}z”„Š™‡††‘~ˆ|€š€y}¡ˆ’„„œ†ˆ‡„••š‘˜ŽŒ‡ˆ„…ŽŠ~š…Ž–‰‘Žˆ‘’‰‘‹‡“‹‰|Š‘‚†”“‰‡…”‹‘Ž’”Ž‹…†…‚Š’‰’Œ|Š’”…“ЇГ‰’‹m•…•…††}“‰‹Š‘xŒŒ‰‡™{‡Œ‘zŠ•€žŠŠ‚‰”rƒ†v‚ˆ‹‰zv„ƒ‡‘’‹~ˆ€}—‡|ƒ…Š‚z’…’‰‘“‹t”ƒˆ‚ˆov‡y’}z„“”‚€€}ˆˆƒz~‘w{‰Št„|…€‰r~Ž„‡tˆ‚‰‚ˆ•…‹……‚˜s‚’“‡’{ŠŒƒŒ„|‚wn}}‚ŠŒ…‹Ž„…ƒ‹{£‡y‚’ƒ‰}€œˆ‰†€y‘€€‹Š…Š•|…Љ‚•}Љދ‘Žƒ‰€•ˆ~…€‹†{€‚}~~~xŠˆ{…ˆŒp†‹†‰ˆ„ŠŒuƒŒu‡‡{Š€ˆn‡{Ž…‚{|…z{w‡†ˆ‹|‘–„”‘Œ‹‡‘•“€ˆ•ˆ‹‰z{‹}~Œ“š‚•’ŠpnГޒ„x‘˜’ŠŽ„Œ|wŠŽ}|~‰‰Œ”š‰—’Œƒ‹‘”{‰Œ””x„ˆ”•}’ŒŒ‘Š…‚”Š|†Ž€Œ‹‘އ†ƒ™‡{Œˆ…•†¡v•–Œ~š†„ˆ…‰‰‘‡—””‹†•€…Ž‹˜†’x“•}—‡™•Ž—{މБŒƒ–†“”‰‡‰Œ’Š|ŠŒ’ŽŽ‹‹‡ƒ„’ƒzŠ„‰‹‘•ŒŒˆ‹‹ŽŽ~„€“Ž…‚‘Ÿˆˆ‚އމ’ˆ–ˆ‡ˆŠ{ˆ€~|x‡Š{†z€‰…‚Œ|v…‚Ž{Œ„€…wŠ€‡ˆ‰tŽƒ…n‡Œƒ„€z~„€Šy—˜Œˆ“ˆ€„‚Š€‡‡‡{ˆ‹ƒ}u„u‘ˆ‡„~‡…„xŠ€†Žƒƒ…v‹–{}zŒ}x‰‚rq„€‚ƒ}Šzx}}€xЇ•p‹|p‡{xyƒxxz’~‚|•ƒy‡Ž‚~t}„~€v{|w~€|†„‹x„~€z‚‹‰~ƒ˜‰‘†Žr€•{‚}}„x†‘‡“ƒ„qv‡„s”v~tˆy‚q–o{u‹x…|“…x‰Šƒ…ˆ{„o{œ‹‹“nˆ“™Œˆ‰ƒ‹}t‹uz~„Ž„vk†“Œ•…‡|ƒ•ˆ}ŠŒ…x‘†Šˆ•’†u‘†ƒ‘‹k…}‚„€~‰Œ—|ƒ‚‡‹ˆ‰†‡•…m{‚{ˆwƒ~‚‘‡„t}ˆ†s‹ˆ–’‘|“І‡‚Ž€‡†uŽ‚ŒŠŒyБЅ‹…y…wj†{„‹€Œ„Œ‡nˆ€‚x‚€‹€‡‚’”}„„’€€x‘‰ŒŒŽŠŽ•‰„†‡„ˆz‡„ˆŠ‹~ˆ‹z‹xŽ‚~{‹~‡…Š}~‚y……Œ’x‡Œzˆ†ˆŽ‰‰‰~Іxƒz‰v‡‡†x‹l‚ŽŠƒ‚„—‚‹„’ƒ†––„……‚|‹ ŠŒˆ˜Žu‡‡…l‰”}‹Š‰“‚‹Œ‰…€“•‘ŒŒ‚“’Š‹œ‘‰†Œ‰‡†…rx…€‰ˆŠŒŠ‡–Žz…¨Œw•Ž‘Œ“˜Žœ‚’”‰”‹””ŠŽŒ™“’|”‡€‰ŒŠŒ}ƒ€Ž‰ƒ~‚„‰“ˆŽœŽŒˆ€Ž‰“—ƒŽƒ™‡“ˆ‹•Œz„Œ—Œ…‘‹‹Œy}‹ŠˆŠ‡ˆ‰…’‘…ˆŽŠ€††—†……‰”‡™Š…ž“—”ˆ‰Šˆ“…†‹“Žˆ’ƒ…Œ„‘†‰…Œ”›œŽŽ†‘“”ˆ™~‹‹‡Š…’‹‡…†ƒv‡ƒ‹ˆzyy„‹’~‚~xŒ‡ˆ–……„‰|ƒ€ƒ†‹tŒ~w’‹uƒ†‰‰{~ƒŠ‰~|€…‡ˆŠ‰„n~Ž—„’‰v~|„Šz‚s„ƒzˆtˆyŸˆƒƒuƒŠ‘‰zx’~vŒ‚ˆ}Šw…„‚‡ƒ}ŒuƒxƒˆŒŠˆ€‚‹‚‡‰‡y…†‚†Ž‡‰vˆŠ†Š}}tŠ„Œƒ‰ŠŠ†ƒx~†…‡„‡yŽ™‚‹‡……{†ƒ|…†€Š‡€€ˆu‡~€‹„v‡ŽŒy‚€ˆ‹‹‚‹–yš‰{q‹Ž~ˆ‡n…„‹‰…ƒ…ƒk§}‘š˜‚…‘‰¨†¤ˆ–’Ç§š‰ŒŸ‰kvŽ”…wŽƒ–Š•Šœ‘¨›•™‡”š•™™‰‰– ›‹’’ƒ€qžŒƒ„t‡™‹‘q††ƒ¥’y–›rš‡ŒŒ••‹šœ‘Žˆ•“l{y…•œ‰’„ŽŒ‘™‰|Žm¦‹Ž}Œ}ƒŒ}–™Œ’‚›‹t™z”œ’š‚Ž‰˜yq†Œu–ŽŒ|ƒ–w†s–‡‹Š†”“™€‹ƒ†‡ŠoŠ„sw•‡ˆƒš~‘–Ÿu‚Šs‚pœŸŒ€Š‰“—‰ŒŒ‰Š‹{Љ‚Ž‹ˆ…•‹š˜ŠŠq›£˜y‡z‰}y{u…~|sˆƒ}|€€ƒ~‚Š€|‰‚||t|ˆ„‚xwz‚yz’ˆˆ‡w~ˆyu|„…€€}}wx|{{‚€}Œtu‡~|€‡pn€„‡†Œv‡{y~‚‚v‚€Šz{“ƒ„s‡„w‰xx€xˆxv‚„†‚~…zƒŠvp”~yƒv|x…}~ˆŠz~tv„sz†x‹}Œ‚vƒx{…‰‡sŠ‚x}|zv€„‡vƒ}€‡€ˆ‚s‚vv‚t{‚wƒzƒ{•…||Š}l„}|s{u„ƒ{|{yp~‚}ƒ€~v†€ƒ‡†ˆƒ†‹v›~‘…‰ŒŠˆˆ†‡u~‘…‰uw’‰‰”‡Š‚†Œ‚zš€ƒˆ‘ˆy“‰}ŒŽwƒxƒ‡—j‡…†€‡|y€†‰“~‚‹ƒ†—‚…—„–r{€”‰‡‹~„‰˜„Œv}ŽqŒŠ|Œ‡ƒ’•ˆ‚‡‹‚‰†u†‡‚~†Ž‡|~„wzr~ƒ‘…’‚…ƒˆ”mƒ€t}x††…ˆ‹‘r”‰•z‡qЉƒ’ƒŒ”Љ‹ˆŠŒ~ƒ…}Š‚~Š‹…ˆ„Žƒ~‡ŠŠŠ„‚‡w‘|y’†…’y…‡ƒ‚Љ‹{Œ…‰‹‡~…r€‹‰…}‘m†xˆ€„ƒ™z“|‡‰’ˆ…ˆ†‡ˆw}‹Œrˆ~ˆŒ•…„vy†z˜‚~‹ˆŒ‹…—Š|ˆu•‡t‹rƒ…ˆŽˆs‚ˆ…~‚†‡‚އ“„iˆ–„‘„|ƒŠz†s„‰xt†qŸz|‚–ƒ‡r‰Šysˆ…t„€…}yŒ‡|‚…ƒ€|xv„yŒ€Œ‡‰“y‰yxz{€‰‡xŠŠ‹Žv„Ž’{u†“~‡…‚‹„…ˆ†‚††‚™‰vƒ…u‰ƒ|‡‚„~‡Š‡{‰ŒŽzx„…wŽ‹€u“qŒ€‚…–‚ƒ„›{pŽ‹~…’p‹ˆ¡‡„€€€Š‹Œ„‘ŠŠz–™Œ–”—š€z†ŠmŠƒ‘’Œ•†ƒŠ‡€ŒŒ’“Šƒˆ‹˜Š’šŒ‚‘|Ž‚‰Š‰‘І††‹Ž‰‰‡’{yp™€‘—†‡”Ž–ƒ‡™Œ–ž‹‡ŒŽ–†‰…Š˜~‘‘„ˆ‘{„—މ‹}Ž˜…Š™‡ˆ‹‡Šˆ‹“Œ“‰‹ŠŠ„‰ˆ‡~†‹„””Ž‹Šƒ‘†Œ–’ˆŠ‘Œ†‹Œ“€…ˆ‹‡“—‰‹‹Ž’ކ“‡’ˆˆŒzŽŒŠˆŽ…‘Š“ŽŠ‹ˆ“…“‘‹Œ€Œ˜“†‡ˆ“ŒŠ›€‘Ž{vŠuƒoƒm‘{ny…‹Š~†r‚€|ƒ‚lc~„Š}‘‚ovr‹zmwŽvzwsjt—¢‚„­Žz‡Z}††ˆz…z†“u›•‹€‹€zˆŽƒzŒnozl€‚j“o’w—‚„ƒh¢€r’Œ`lw™jŽlƒŸƒš|qvss{n„‚¡vu‰r}‘†mw{…}“‡‡`‡p¤}hŒuŒX“™“{†zš†‘‰m†{’œ‚ˆvioiŠs†qp^¢q‘r¥¯ |‡i€zŽ”¯†‚|žž{{Žu©mx‡nš”„qoŒ{q‚~v}œjzz‹ƒ‰’~uk~~ƒ}_sw†ƒ}zˆŒ„x~|u‰vt}‘}~†€†}z‚ˆx{}‚‰{wiˆ„„g|‡~‚‚ri„{‘|‰Žyzx{zw„„}{s‹ƒ„ƒ†Š~‚vwŠy‰}Švo€p‡„xz{u}~„‹s…v†|rˆ„y†ˆ„~}|‡{sz…t}w}‚zu}•†uy€yƒputy‚|y„tu‰Œ‚„†ˆ|„{‡|u{|ƒŽv|}v~‰†„s{|wiswtw|x~~z}‚…‚€~wu}‡}Œ‚}vv~„w†{‹u}w†Œ„qz}~o|}v‚w†}€|ƒx|{‹‚†}z‚vŠ|Œ{…ˆ‡z¡ƒ„“}~Ž}|‡uhk‡|‘s|‡‡†’ls‚u‘…p‚xo}€x™‚z…Š…–‰ xynn€nst’–x}ƒ‡‹”‰ki~dwrzq~†w•§|„kr–•yy›zx‡’wxx|{€‹ˆtÏŽmiblƒ‹…‡ˆk…U‘ŽŠw†•¢”˜“n{uƒ_‚‘~‹{‘‚•¤ªšy†i†ohysci„‚‰z‘nÉ\|xrtq¨mŠ‚¥t|€‚—šd–l|އ…y’…€ˆ—j‡uSqY’¢d}¢{|„e¢eyq…„…l†…iŸ€‰›t|_fp‰|£j†„•‹Š‰v~‚‚ytu~vƒ†v{~‡‚~yo†‰vo~•z…t‚wuxy‚…r|‡}x€mv}†hn}zs„‡—u€u}~ˆu}”yˆ€Šnt‰z‚„Š‹€€~~|Š“~zz–x‡}–†‡z|}zq’ˆƒwuyz|„{}†ƒv‹z‹Œu„Ž€‚yq{Œs‹x†uo€sq†u€ugz†Œ„ˆŠ|w{Š‚xqkwƒzu…y{Š€vp‚z…„Šyƒt†€}q„Œ}‰rˆ~„‚xzwŠ}‚€z‡‡ˆ|d…y{‚†xyŠ‚zp†{~w~{šz…€„šˆ{œŠ…o‡…†‰’‹†…›…„’‹œ~’”ޙޔނ”Œ‹Œ‰ˆ‰w‚…„ŽŽœŽž‹‚“”{™–“ˆ‘‡ƒˆˆ‚Ššƒ Ž…‰ŽŒ„‡‡—ˆ†–v‚‰–„ƒ’…ŠŠ‚‡ŽyŒˆŒŠŒ‹’ˆŽ‰’†‡’‘Œ‘†‘—‘„ˆŽ“–u‹‹ƒ™ˆŽƒ|‡˜‰‘ŒˆŒŽ‹„„†ŽˆŒ€Ž~“Š…Ž”ƒˆ’‘ŒŠŠ•‹“„‰”„Œ’••„‡ˆŒŒ‰‹‡‹‹‡ˆŠ„„’‡‰†„“”€‡ŠŠ‡ŒˆŠŒˆ‹Œ‹‹Š†††‹—…Š”‰ŠŒŠˆ”—vކ‰o‹‡’Œ‘ƒ†—ƒww†‰U‹l|vˆ’–†Šr…’…”€‘Œz”jŽ‚s””™‡sz‹k‚s„“‹z~†|„Ž–o”¡™•†ŽizŽ¢m†‹‡“ˆeŠ‚{~…q…Œt–‡‰”Œ™p‡‹‡{s„xxzxu€…{y†~’€|’r‰‡‚Œˆ†œƒ’‡’ctƒ†„ƒŠ„Œ‰Žtw}’•w•sz„‡zŽ‰ŠˆŒˆ‘†‹‡†‚‹q{’ˆ…‰ˆ„|{yŒ‰Š–z„w€™†~‡„}{Ž’qšŒ’ˆ¤„…Šlz{Š|nzŽq’›‰Œ‹u†ƒƒ“™–‡p‹ˆ“‡ ™œ}—‡r‡‹Š‰ˆ‰„“”І—œ~ŽˆŽŒŽ“˜Œ•‘ƒ…‰–‘‹—„†‘~„’Œ“v{q“‚‹—–•‚˜ˆ––‡“Ž{‹Ÿ’’˜Œ–𖂇•~‰‹„‘‰—Œƒ †‹†„‰”‰„ŽˆyŽŒ…†œˆŒ“‹‰…‘‰“ƒ~ˆ‡ŽŒ–І‡Ž’†Š•‰Š“Ž•˜’‰Š…™“‰ˆŽŒŠ‹‡ˆ‰—‰”…‚†‡Ž…›—“ƒ‘•}Š’Žˆ’Ÿ‹Žˆx‰’‰Œ‰‚ŽŠ‘ƒ‹•™†Š‘‚އƒŠ’ˆˆ—‹ˆ•†‘‡†q•‰‹•‡…‚‰„ˆ„py‰†}Šmm„ˆ†™ƒ~~„œzv–yƒ‹‡…y’~”‡z‰{…‚lŒzˆ‡”‚{ƒ‰~€…~އ„„“~šnw‡‹€Œz………„‹šz’p‹ŽˆŠ‰t”ŒŽ‡“‚…}‚s‹Ž~‹‘‰Œ|‚y|€j…‚‡ƒƒ‡„†hm{~t‚ƒ‹‹ƒ‘t€Šƒ•‚…x‡‚{ˆ‡‰Œ‰ŠˆŽ‚šw~„†„fs’~t{†yŒ€ƒŒ…{•…}yz|…|ŠvzyƒŠˆ’xˆ‘‡…ƒŠ…ƒ†mzŒ…w™l†~ŽŠƒ‹‹Š}|ŽŠ‰‡™Š‡‹z“–‡—‹‹’›‚{‰‰m†‹Œ„’†€”„†Œ‘„“‡†‡Ž’Œ™ŒˆŒ‡ŽŠŠ…Š‚—”‰…ˆ‹ŠŠˆ…‘zzƒ—€“‰…’‹‰‡˜ˆ…•‘•žŠ‡’’“‰”Ї’†„Ž“ˆx…Œ‘|˜ŠŽŒŒ‚x‹•‚›Š‹ƒ‰‹Œ’Žˆ‰†™Œ„Œ†ŽŒ’–‡ŽŽ…ˆˆ‹Ž†Š‰‡‰‹•€‡Š…Œ”““˜ŽŽŠˆ‡Ž˜„›Ž‰’xŽ•’Šƒ‰‡ˆ‰ˆŒŽ˜Š‹…“’ŽŒŠˆŠ“Œ‹‹‹‡ŽˆŠ‹ƒvš…yz£ˆŠ‰’z‹„†€ƒ‹€y‰”‚Šˆˆ„|’jt}tu‘—”~™—Ž~uŽŽ”‹w‹—vŽz’m†ˆ…‚“„‘…‹£™˜’•”•~–rˆ›|Š}Œ‚†‡št‡w…†“šŠˆ•Œ‘€s‚•ŽŽ“ŒŒŽ†‡“„€‡†€–‡h˜ŠŽ€—wœ€ƒ{’‹•“’‹…‹›‘‡Š‘ˆ–†Œw„‘‰Š…Ž”v”ˆ‰}“‹‰•”‡…‘¡”…¡“‰’Œz‹†“‹}‘š‰‰ŒŒ‡†ˆ†Œˆ‰“˜“Š’Ž‹z‹’ž‘„‹‘†ƒŠ›ƒ…ƒŽ‚‚Šˆ…””µ~ˆšœŒ‚–…xx–‹—™c˜…Ž…™rš…–‘‚‹~†€ˆ|ˆŽ”t“ŒšŽ •…‰†ˆ‰•}“{‹‹€‚‘Œ‘µ’•†Š~w~i’q‡’…f‚Œ§”Ž –ˆ‚•”€‚‡ˆ‘†q”Ž}t™“­‘›†…‹¢’”››‡sŒœ}…€…€‡–}“s™„”}‰‹‚‹œ˜Š‘Œ‹~‡ƒ‘–ž‹…‹‚Ž””•œŠ ”}‡˜‰˜‘™‰„}œ“Š„’ƒ”’‚‰¤…–u‹‹l„€ŠŠˆ†¢‹–†–†”“†Œˆ…Œ…uœyŠ‘˜Œ~€‡‡–ˆ…–u…އvƒŒ“Š’y†š‡Šƒ†‰}—Ž‚„‡ˆ“v|ƒ~ˆŽ‡{™…wz}—“ˆ„Š“Œ…˜”~‘‹‡‚ЉˆŠŠŽ„‰Ž’‘ЉŒ””w‡uŒ’”Œ|ŠŒ’‡•‰€‚…ƒ™Œ‹…‘‘Œ„ƒ“‰‹~Œ†€|ˆ•‹v›ŠŽ‚’ˆ„ƒ›†‘Œ‹‘ƒyŒ‡‘‰Ž‹“Š”…’”“€Œ”‹Š“Ž“††ƒ—ˆ‡Š‰ˆ—ˆˆƒŠ—‘Žƒ‰ŽŽ’‡sš˜–Š~’‹„ŒŽ”|ˆ‚”…ŠŠ‚‡ˆ‡‡‰Š‚š‰‚ˆ‹ŒŠ‰—„v{‚†}Š‚x‚}~‚y|…„}‚z‡|ƒx‹zz~…‚j†z„‹w„‰…†yvz~z‡€{yˆtt}‰„Ž‚ˆ~}…Žx}†}|…„y‡€z‚ƒ|o}†ƒŒƒp€†|}y‚t‡pŠx‰j–‚‰‚Š}y‡y~Švƒ}{™…p|‡†|…”…~ƒ€s|€‰€~~‚€z‡vz‘†}ƒx€~……z{zro†z‡€}†~Š€€s~‚†‰Œ€€€—‰z|wzŒˆ~„y‰€~„€|†~wˆˆƒ‡ƒ€ry‚z„uw†€€y‚{yˆ‰‹‚‰{…‚zˆ‚x|~’v”y””€†~ˆ“}~{‹uz†‰~†ptŒ†ƒ‹™‰€‡‡€{Ÿ†…€‚“‚}ŒŒ–Žr‡‚~‘‚…g‹‚{‡vz†”‡|‡zŠ“ƒ~”{v‰’ŒƒŠu~ƒ„ŠŒs~‘{Žq“€—|†’ƒ“ˆ‡Œ‹wŒƒq{‹’ƒ‰“‘s…„xƒxqƒ†’‡‡Š‹‰‹m”Š|}„†x€‹‘‘oˆ”‚•‰ˆz„€Šw‹‰‰‹ƒyŒ‘‰Ž‘}ƒŠy‹‰}Œ†‰~…‰~u…†ˆ†„}ƒƒ{ˆ‡t}yˆŠ‡~’†}†‚Љ’†…‰Š€ˆq„‹~†pŽwŽŠ~‚Ž•y–Œ€Ž„†‰‡ˆš€Šu~Œv‰ur‚Œ—††ƒƒŽ„‰“‰Œ‰“ŒŠv‘’Œ}Œvƒ{‹‡‹iŽ€‚|ˆ~Šƒ‰Š‡€Žs…Š“˜–„my–š€~Œ…‡xw€‹Šs‰‰ƒ†–…“Œ‡ˆŒ‡~}w†„‰}|Š‹€ƒ…€x{ˆtŠxއ„‚†‹‘gƒˆ~†ƒ‹ˆƒ‰}Œ†~€„‚–|z†ˆŽ‚ŽŽ†‰Žˆ‡…Œ†š†‚‡ˆƒ|Œ„}†ˆ~‡x’‚|ˆ’‚‡†y‹p‰|†’„Š‹yЇ„„ƒŽ‘ŽwŽŒ‰†ˆƒzq}‡‹zmŒŽ„‚~Žkp‰Ž€Š”y†v|‰su{’ª‰ss”“‡›Žƒ‚|’€–xw€ƒ‚y…w™Š”‡|‘†yŠ•n…|„{Š€Žwƒ‚|މ……€„‹mw„…ƒ‚Œ”ˆ”{Ž‚y€ˆŽ”o“{p~ˆy{€…i…‡Š€‰}ˆ™Œ~|„{‹Œhry‹xŽŽ…‡‚‹n|uƒ{‹”Œ‚yt‚zІ‚ˆz„„‰‚Œ„Œ„}’sƒ‡…‚|€‹Š‰ƒ†~‹{nІ~‚w„„wƒs‚|„ŠŽ€{~sˆ„|”„‡†ˆt…s‡y‹€x~uŽ‘•‚’t‡€‹v‚~~u|‚…y•……‡ƒ}™yz}€‚}{[|„{ˆˆ„~Š~}…p†‡‚Œƒoƒtsq‚†ˆ‰‚€€†u€wƒ~Œ}†„‡ƒyŽˆ…‹Švrw„††Ž„u|ˆƒ{~‰wœsˆ}‡gˆ•|‰xt„Šxz~†‹w‹y‹o‚…†~Š˜Ž‹u‰~€{ƒx‚ƒ‚y‡v~•€‹‚ƒz‰{ˆˆyЉƒƒ€vym}}”‰y||Š{{l€y‚{……~…‹~xty€{|ˆx‚z„ƒ…ƒ~yu…ŒŒ“rnˆ†ˆp}}„ƒr|…u‰‡ˆ‚‚…‰u‰„w~Ž‹€}€„ކ‚††{Š“‡•…ŽŒ—|yŽ•~o‡ˆŒ’‡“ƒ†”‰‘’Љ‘”‘‹’šŠ„‡–ŒƒŠŠƒ”~†ŒŒ„–—ty™}”‘‡›‘—|ˆ•€˜›ƒ›ŒŒ“™’•”•}}“ˆŒ’€‰”“v”…‰Š~ŽƒŒ†zˆš‹… Š“‡‡Š‡”‹ŽŒ‡ƒŒ‡„ŽŠ—Œ’Š‘†ƒŠ’‘“Œ†‰†‹””•ˆŽƒƒ„І…ƒ–‹‘Ž„‹„ˆ”‘––‡”{˜›“†ˆ‰Š‡‰‡…‘‘މ‘‡Œ›ƒ‚ŠŒ“““‡‚‘ŒŽ“Œr†~pM’z{‰z“Ž’…ƒ‡–•w¦¤°[ˆ…˜{‚a„~h‡}¬†¡J§}”ti‚Šp•Œd|ƒz‡pthŒ‹vvŒ¤‡ym|‡lƒ°]‹rŠˆˆc¢p‹‚U‘pU‘‡ƒj©‚˜”e_œz‰|uˆ ‹…”Ãr„¨„Õ†w–ƒŸ¤‘ŸŠ‹y¨™‚‹‹‡z‰yx‘v¬~„†…{yz‰‰iv†Œwr—’‹‹zƒˆm…„‚’Œ”{Œ|{‘uˆƒlŽ”]–›wxš}¢†l•‰švš”ƒ|}“‚w¤™Š€Ž£…o‡v‚Š”“³”ŒŒŒ‡—œ‘‘y‡y€zƒy’ˆ”†vw~„zkr||}š€m‰z{ƒ‘xw}€|~h‡~~„w{Š||€q‘Ž€‰{ytxpxu„…|k€€†|Œs~€†•yvptr•}„uk}z‚ƒrx‰y{‹{~™r‡~‘{i‚ˆ•spŠ„~†‡x|‰v}„yp{ƒ†€ž„z„t~~‚‚x|€vu‡…}„Šo„}rt…„ˆ}yptypxx}‰sw|ˆ}rŒ{‹Œ~y‡„|x€}‚}†|oŽ‚z‚~‡‹€‡Œˆƒ†ƒƒvz{‡tr|z„„ˆ†xv~€~wˆ……}tƒxv‹„z~w…•„x—u‹€{y†—‰m}vƒzŠ}ny tx—‘}‰z‘ul’~Š•wx}ztƒ†……“{tyª”q}}€€‹ƒž{y†Œ{Œ{‘†–tzhŽ€ˆ•…Šˆƒ‡Ž{€u’qx„t’j“Œ”ž¡Ž†xzƒvyƒ¨šq…“z~‡œm……‡Ÿf‡ˆŠx}„ƒi{„oz‹„z‚}{‚…x—’–w‹ŠŠ€Žwg…ˆv¢‡Œ‰i|‹Š“{l„}}i€‚•y•“Š„‚””t}z†ˆn€y~—‡ŠˆŠf‡}‰ˆ„–„uy‰†„ƒ|yzŽ…~ny}“pœr•ˆ‘“w{wƒy}zx{{nstˆ‰}˜ƒyƒs…uŒguv}xz`~‚‡ƒ…ygw†yyts|x{v‹tumo}†‰Šu…u‹”}}‹v~ƒ€{m„†‚ƒ’pw€uz‚Œrs|”xo|‡v“gŽzw[™–Šu…ˆssŽqx„}’ƒˆzy•|px‚ˆy‡‘…n€z†mz†‹xuw…xirœ”€€“xyz|Œ€p}u€xuqvp~Œ‰ro}€{sxk~vz|€~ŒŒw{y}ˆvƒ~~zƒwƒy}~qyi„y{Œymwš…v{†vƒ‡|nx}ky…—{…|y}u…qe‰d””}‘t“Ž„ˆ‚…‰•‡›–’“…|“‰‚s†‰Ž†ƒŒ‰—‰‡€Ž’‰’›‘•Œ–“—˜Œ‹Š—Š–ƒƒ‰ˆ…„‰Œ€‰‡““‡‘x~‡‹~“Ž‹‰ˆz„˜~}˜‰ŒŠ”Š”‰Œ•’‰Š‘†„“‰Œˆ„’‹‹q–‚ŒŠv‘|„Š–ˆ}‹”Œ—†’‹‡‡†…—†Š‰‡‰…ƒŽ†›Ž€‰„‚‡„ŽŽ†††‰ˆŽ„‹ŠŠ‘ˆ‰ˆ‰‚€Œ†‡‰ƒ•““‹Žˆ‡’…Œ“Š‹–‰~‹w”˜ŽˆŒ…‰Ž‚ЋБ†ˆ‡–ˆ•†‡‹‘•™Ž‹†Ž‘y„vƒ‰˜Šy{~ƒ„pp‹‚|’„uƒv”ur{z€‚i„‚ƒƒ„yszxn~wˆŠ‚’}…w‚uvpwv‹}yz}uŒ~~~‘€~{t„ƒŠnr{|{‡ƒ€tz|~}z–lu‚„e‹‰wv‰~z‚’u‚†Šz„†‚†}qt}ƒ‡œ†„k…€†xz„€~v|Šyxƒ‘Šƒ†ˆq}‡z†„h|‹ƒooyo…y†um}~v~r‚v|…‰|‚‚|€Š}}€xx†€|vv{‰‡~‡€z€‰†xŒŒxr€…†ˆuz‰x…}‡}‚wƒ}x€‡{†„|wƒƒxuoq£†’h’‹’އœ‰‹†Œ|”‡x““~ˆˆŒ“ƒ…”x€“m|‚…‡ŒŒŒh|‹…ƒŠrŒŒtŽ“w€…Ž„’ˆ†€~Ž‘Œ”yŒŠƒšgˆ›‡‘ˆ‰Ž‚…Š„v‚‹‹ŽŒ”‰€’…‘v‘~„‡‹‡ŽŠ~~‚‘ƒŒ’“w’‡‚–„‘„‰ƒŠ‰“‡‘‡…Œ‰™‹‡ƒ~““…‹……Œ†Šˆ€›n‰‘މ†‰Œ–‚“Š…ƒ…}‰‘€ƒ‡€œƒ†‹…|Љ”ŠŠŽˆ–‹{“”’‹„‡ŽŠˆ“‰“‚ŒŠ‹~ˆ„—„…„„‡†‰ŒŠˆˆ‡•ˆŽƒv—„z‰††„†€‚‡Š„€Ž†s‰—‘š‚Š–‘~•’”•Œ|y…Š|j…–ƒ’x†œ‡||…™oŒ”Š£‹v…“”Œ›˜n€™xˆ¨‘p‚‘v”‹‚“ƒ€}‹’t‘{{x’‹|ˆ¢ ’ŽŒ‡‡™Ž|vƒ„~Œƒ}‰˜€}”€“Ž…Ž„‘Œˆ—€}Œ•’‰ŠkpŒ‡’““’‰‰”„“Œ…‘Œ’‰“Œ‰~ˆ{‘œ€—u•‚{‰‘…‹yŒ—t’yŒ‡‰‹t‘tžp„ŠŽ‰‹†Š‰„‘‹—”‰{‡‘€ŒŽ|…Žrˆ“‹‹Šw€„‹‰Œ‚xo‚“}xww€“o}~ƒ‰‚~}€~x|vs}~…vbˆyƒ~ˆs†wzgŽ|z‘~y†xy{yzƒ|„h‹Œty‚{~|†hi„{„rzmk‡Šy}~‡wj„Ž„†r~„†e™‘}w~WoŠ™]m„…€{~k‰‚{†zz„‚xlrpv‰k‚{‹xŒ‡sr{–{ˆ›j†„n–€uw}Œ‹€yswpqz†…oj}tlwrmˆjrˆ‚Œ…†‹€z„‚Xw~…{{†›{nsu€r…€|~nŠq‡nu|q„ƒgj‚own|„sŠpuz„tƒs~‚ƒˆ|Œth‡Ot¥x•t˜™ŒŠ”’†‡‰r“y“z“‚‡Ž‡†~—–ƒ‹{†}‚“Œ€‰‘{…›–‡}oŒ˜“zƒ€•‹|‹†€†‡~–™ˆ‹Œ–“us†”p……ˆ’„Œ“‘Ž~ƒ‹‰“’‰•Š‘q’„‹|†‘†š‡y‰‹„Œ‚‰‚”vˆ›…‰“†~„ˆ‡‹‡–”“€…Ї‡}Žv“…™x—‹}‰“Šˆ‰|‡”‰ŒŽ“Žšˆ‰€ˆˆ†ƒ‡–zƒ’Š”ƒ‰’‹Šˆ‡ ˆŽsЇ†‘|ˆ’ŒŠ‰—Œ…ˆ‹‹Žvˆ’‰†€•Œ‰‰v”“‘ƒ†~†Œ†–…˜ƒi‹‡t‚}w’„y~›k|„ƒ|t|…†|wy‰Š‚ƒu•~‹€†m‰˜p|}v\}}t€“Žx‘‡|vƒ€„x{„ІŒv}€w†„†zz{{†oqy„xŠ€€€{‹g„~t{m„sz{‹uƒ~…ut…€‚‡zx{Ÿo„…srpvŠ}wkŽp{nˆ}n‡‡u‡v†o„…Ž‹…‡vu{u}}…yszt†t†rys}…lfz„uo„{{‰ƒ†p‡„ˆ‡t}~}€y~’‚„v‰€ˆz„q˜zy‹yŒpz‹{q{‡vv{ЉˆvŠ€€sˆuzŠ|yn“o‘uƒƒ„‡€†‚u‚‡‚Š’‰‘’—‹ˆ–’†‹…‡‰‰‡uu~„ˆŠ’Š„ovŠ~Š’vyŒ•ŽŠ”Žz‹Œ‚‰v–Šˆ‚”‡~‚Žˆ‰™’‰‘’{ˆ‰‘……ˆ‹“~Žz‡‘’r‚‚†‚yŒŽŠ‚…ŽŠ†‘•—‡†ˆŽ‡Œ‰Ž{•Œ‰“—Œ‘‰…Œ„‹„˜†‹…Š—„“ˆŽŽ–‹”Œ‹™˜‘Ž—‘…‚ˆ‘…•ƒˆ‡‡‡’‘•ˆ„“І•Šˆ’ Š‘ƒˆ„ŽŽ–{ŸŠŒ–‡‰ŒŒ—Žˆ–‹€ˆ‹Œxw€„ˆ‰–’”‡„“‡’‰„~}Žˆ†˜‰‡‚‘•ˆ”Š’‘…}‘s|ˆ…–ƒ…˜Ž…„‰“‚Ž‹ƒ†Œ‰—Œ’Ž‹’‰Œ†{Š–ˆŽ“}‰Šˆ•ww—•މ}|Š“‡ƒ”’{‡…’“ˆ‹‚’‡‹††Ž‘•…uƒ€‰•}Œ…‚…‚~”|›‡˜Œˆ‰‘‹“†Œ†”’ƒŠ‘Š•‹Š‹ƒ”‘‡‹Ž†~•ˆ“ŽŒˆ‰ƒŠŽŽŠ“ƒ‰”‰„‹’‘‘Œ”Œ†‡‰“Œ˜ŽŒ•xŽ›”…ƒ†‰‰„ˆŠˆˆŒ‹“ŒŠ„~‡‰–‘„‹ƒƒŠ|r‡’†Š…Š„ˆ|Žvu{‹€rv‰€†Œ™‡Šƒ}–‚…‘‚‰}„w†g†…’‘{”‰z‡–m›{xŠz˜ŠŽ†vƒƒy†‡ŽŽ”ŒqyЉ‹|‘|‹„†‚€zƒ„y†—œ”Š~Žƒux„|ƒxt„„‰x„x~Œ…}Ž€†j–lrŽ’vŠ—ƒ„r‡‹‚‚†ƒ…›‰|w‚‰‰‚„ˆŠ‰~„‚„Š“‚…€|{ˆ€„‚Œ›ˆˆ|“s†w‰‰wŽ}{€xxˆ‰Œ‰„†‡Š}‚Ї|Œ‹xŠŠŠ‡wvˆu’Ž„{x‚z„—‰~‹‡|rŠŽ†ˆ˜ˆ„tl‰~p}‘ƒ‰Š–‹Œ€†œŒ“€~•€‚uSƒ‹„†š†–~~Œ‰rŠs€w€ž”›~„}w„Œ‹Š y§Š†€nw~‘i“…‡‚y}„v€†rŠˆ‚Š”“‹„Œ}ct‡Ž…‡tz}Œ„r{‰‹‚†‡„y‘s†Žq™‡v†‰q‡x“„Šl|†}…ˆ‹‚„‚€xu—ˆƒu”†„—~„|Œƒz€”ˆˆ}ˆŽ‹€}”|‹‚ˆ‚wf}}r…•ƒy‹€‰‚’‚‰„…ˆ…{|}ˆƒtŒ…~‚Œˆ€…qx{ž„y~v¥y—„‹†q¦zŽ’€Ÿ„Œ—wСЙ}Ÿ‡Œ{”Œvx‹p‹†‰v”‹~Ž—„`Œ‚¤Š……”™ŠŽy•}‹ƒ‘‰‰˜{…’r~‚…}|¤”u—’Œ„‹…”ˆ“Œ~ŸŒŒ…™‰‘–“‚‡ƒ•€‚y‡|•’¢Œ~•Ž’ƒŠ˜~‡…||›“…‡†•‰’‹ˆxš‹Œƒ”‘~——’‹€Š˜‘‘…’Žz‹Ž‰“|’“‹–u‘‹–“¤”ˆ‹‡w‘—’€¡š˜‘…¡†—‡{¨Ž£’˜‰‘ž†“˜€Ÿ‰ˆ–wŒ€zƒˆ‘‚—Š•„†‡…~›}—ƒ‡‹‰”…‚‹†{“t~‚‹„qy‡y‡’”‚‡z|Ž‚yšƒx‰‚}…~Œ‡ƒ‹‰s‘…w€’‹nƒŠŒ€•~€…ŠŒ~‹„z‡•Ї”Š‚ov‡†‰’|ƒ„ˆŽ“r†‡€Žs„y–}‘~’ƒ†ƒ‚Š…‹~u‰…ˆ~„Š‚…‹wy„z€…€‹‚†‡ƒ†zƒˆt{ƒ~‡uŽ€r~Ž”€…z‹{“އ‹‹‰††|ƒ‹~}“Š~–…„…‰‚‡‚uƒ‰|Ї“€ƒˆ…‚}Š”‘|ŽŒˆƒy…Š‹‡z„‡…vysˆ‹„z}ˆmŠ|ƒƒ‰†~‘“’f‚ŽŽ ‰n…•s™°ˆ†‘—‡³ˆƒ¢‘}ŒˆŽŒ”s•˜†‰ j…“~ƒÅmk©r™‡Œœ”­b…¶‹{¤‹ŒpœŽš»Ž”‡¢—w¦}‡•~Œ‘x’o™s‹Š‡Š„dz™qtv‹N¼{€ŒŒg––Š”—Ž˜e˜‰˜‰•Š”rzu©›—†¥€‰…hžrp‚}š‚|}”²‰—”Š‘°•›‚¨¥…™‰†™Ž„z€u›—žˆ~”‘}zˆ’v†¬›vœ›™‘fuƒi|ku†‡~††˜„“_““—¥‘®~…’”tˆ‘q‘‹ª|Ÿnž˜…‰„n‰—z~‘†—šyŠ”‡†Š‘‰›ƒŒ„t’–zˆ™u‘ˆ‘—~x{ƒ‰˜{‚…‡ƒ…†Œv‚˜™•‹w‹‹Š…–†‚‰ƒ–| „‚“…•Ї} “u…€Š©•yŒ•–Œ‹n‚—‹Œ}••†o†‚ƒ—™„…’’‰‰{†‹ƒŽ~”|ˆ‰w‹“‘𔇫‡}ƒ‚œ‘“ˆ‘~ƒˆ†‰“‡šwš’•ŽŒŒ”ހІ‰“……—‰‹‡‰‰†ƒ{ˆ‹‡Š›„’‘€——އ}‹ˆ~ˆ–Ž–œyœ•ˆ•Ї—ˆŠ‰‡Ž’Ž—‡€‚Œ”ƒ‚Š’’ƒŒ‡€“‘––Šƒ‰~…Œ‹Œˆ„„~‘™‹—Ž”š™zˆ‰nŠ…Ž”ƒŒ…€–Œ““ˆ“‰Œ•”™Š…w’‚ŠˆŒŠ–ˆˆ†ŽˆŽ†‰ˆ’zyƒ–~“–„‹Š™…›†™’žˆ‹‹”Œ†˜|‘”†‹ˆ•‰{œ‡Ž€•‘ŒŒ‹„{Š“ˆ‹˜„ˆ„‰…Š‹““ŒŒˆŠŒ‰ƒ‡‹€‰‚Œ|‘–މ•Š‚…Œƒ”•Žˆ’‰‘“Œ„Љ‘~†‡ˆ‹Œ•ŠŒˆ‰Ž‘†–Љ†{“‘މˆ†Žˆ’Œ‘ŠŽŠ‘‚”Љ—Š•‰‡Ž‡ŠŽ‹{‹”h€‰‹‡Œ™Œ†•†‚“˜’‹Ž…ˆŽ‡‹zqŽsy‘ŒŽ‚™stˆ‘‡yv…”|‘’‹ƒŠ~…“‡{‡”Œˆ†™|„‘y‚Œ‰ˆŒ…Ї“’t„‡Š“Œ—‡“‹rŒˆˆ{Œ‘|‰ŽŒŠ‚Š„‘†‹Œ‘”Š”„“‘Œ›ˆŠ‰Žˆ‡—‡“‹‚›Šƒ…ƒ”ˆž‰‹–ƒ‰Š•™Œ”ƒ•u”‡‹Ž‚ƒ•~|‹‡“’’“~‡’•‘‘އˆ‚Œ‡y†šƒ’Š‹„Ž‘“’Šˆ‹†“‘‡‰ƒ€‹“ŒŠ…Љޑ‰‰•~‘ˆ„{‰v‡ŒŒŒ†…‰˜~|Š‘ŽŒ •|z€“‰nŽŒˆ…‡“Ž–Ž–‘Š„Œ‹|•‘–™‹’‡—‡‹‹•‰˜‘Šƒ‘Ž‹–xy‰~”‡“‹“‹™…š„† ŽŒŽŽ–”€ŽŒzƒ–‚ŠŠ‰Œ™ƒt›†“Ї‰‚†€Š™~‘‚€”–‹ŠŒƒ‰‘‹‡Ž†ˆ„‘w–ˆŒšŒƒˆ„‹ˆ“‘Œˆ‘”†•‹Œ‰Žƒ||‰‹“•Š‹‘†Ž’„Ї“„„|–Š„†Œ…‡‹ˆŽ‡™’‡Ž’†•”‰”—ƒ”’‡—‡Š‰‰‘˜ŒˆyˆŽ•šŽ‘‰•‰p“‡ŒŠ‹šƒ|…„nŽ’ˆƒ€–‚އƒƒ–˜n†‡††’ŒŽ˜Ž‡—”’…ŠŠŒ”›„ˆ‰†ˆ‰œ„“‚w‘„ƒ”…Љ›Žœ’‰’‰t‹™“—‘Ž™ƒ‰–‹Š“{‰|ˆ‘€~¥„‰ŒŠ‡‹‹‰Š…“‚ŠŽƒœŒ‹„‹•“ˆ’z‰‡’†–…Š“‹…“‡–Š——‰‚ˆŽ‚—Ž„…ŽŠ††™‘‘ˆ†Š–˜Ž˜ˆ—…Š”•ŠŒƒ|‘…yމ“‚ˆ…‘‡ŒŽ“‘‚‰ŠŠ‚“ˆˆŠ……–…‹•Š–“ƒ†’†|‡|Š‘‰†˜ƒ†€‹}‡pv€ˆ‚…vr‚‘‹{–yu|…yyŒŠŠ}un„€‘‰†qŒ‡x…ŽlŽrŒ‚އЂˆˆŽ›‹ƒ”zŒjwŒ›}„ƒzƒœ‹ˆ{r…‘™qžœ€““‰Šd†…‰†u~Œ†ƒy‘ˆx–……wŒƒt|ƒ™…•…}‘„‹‹…rŒx|d~{|†xŸ„—†~r†¤’ˆ—”Ž’‘‰‡‚‚€‚ƒ€‹zy‰zƒˆ•uŒ‚ˆƒŽ–‡{y„ƒ†”˜—yŒˆ…‡|‚Ї†€{Œ‚~}r‰rŒ…І…zŠtŽƒ„}Œ…‡‘•ˆƒ‰“‹“‹™Œ~”|zŠŠ…nˆ€‹~Œ“‘‹’“‰ˆ˜™Ž‘‹–‘•ˆŠ‰ƒ‚~ŽŠ‹Œ™{Œˆ’‘x|o“•ˆ…‹Š•ˆ’˜“‰ƒš’’Œ˜„…}‘“”†ˆŠ’–‰t˜„Œ~‚”|‹‡„{ˆ’Ž„š‚„Š‹„ˆ“…—”Œ†‰†ˆ‘‡“…•†Š‚‰“‘”’‘Ž~’‹Œ“Ž“’†“‹…‹‰‘‡˜“ˆƒƒŒ‹†Ž…І‰”‹“‹{’‘‡‡……„“Œ‘‡‹‹ˆŒ†ƒ‚~ˆ—ˆ–Š–„“Ž„–„”…~‡‘‡Œ‚‚‡•‡ŒŠ–¡{”…ˆm—“‰‘Œ†…މ‹–’x”‹ŠŒ•‘žŠŠˆ…†”Œ‘ƒ†Œ‹Š‘…‘Žv{Ž~š–˜Ž‘‰–‹—Š™Œ™Ž‹”•ŽŽ}ˆ•Š‘Š{‡Œ’v˜€‰Œ|‹Ž……~ƒ…Œ‘‰„€‰ˆ“ŒŠŒ‚އƒ“‹‰Œ…”„ˆ€Š”‘˜„Œ‚ŠŒ€–‘“Œ’Œ…Œ„‹†…Ž‚†‘’Œ‘†‚“‡—„‹‡{–™„Œƒ’ŠŽŠ“Œ‡‰‘ƒŽ‹Š‰“‹•š†’Ž‹’’ŠŒo‰”†€ˆ†€Œƒ}{‰o{|އˆtmˆ‹ŒŽ‘„ˆx„™‚}‡qŒ}v‹s‹€‘…n‹„‚|‘†l’}„„~|ŠŒŒƒ~€Œ’|•~–rx‚“‚†|…†ƒš†Žu‡‘o‹‰ˆ‰ˆƒ™‚†‹w‹‚~‹„r‹†ˆŒ…‘|‡‚vˆwoxw…†‹…‡…‡‚Š…pŒ‚yz}|w†|™w„‘„—‰}vŒ}‘ƒ›‰’†‡‹‚Œ‰y‚‡v‹„}€‚‡…†ˆ|‚{€‡ƒw{‰xxˆ…Ž{†„€‚„}‹‚~…ƒ‚~…uއ}y‰oŠ|“…z†k•xvV€‚v“\Œ•šƒ‘‘‚‰£•ƒ²šs‘¤Œ˜”kŠ¡rt‹zƒ悬ˆ‚}’|˜–›}“`Œ–Š›{—j”v~~yšŽ“w¨lŒ®p–Žvœ‘xn„Š{¼y”ˆ‰‰ ƒš“‡vs’h‰zŽ„–‰ˆmŽ…†¡}›†ŽvŽšzšˆ}p“…’Š™ˆ‹˜wyŒŒs•w„svqzoŠ”‰›˜‰h ‘ƒ‚¤‰’‰p“gž“˜Š“‰‹m……‰€‚‘|d„‚vovš‰ˆ{‰†ƒ—„…Ž‚’Ьm››x›‘’Œ•£p“›ŠŽyˆ‚‚—ˆK¨tZpœ›mˆ—]”{‰y”~Åo{x€®–x£[…‚“ˆcl{‘†‚Ä–¡›ƒfz‹„uš‚ˆˆµ«yw|}–r –‘‹‰Š‰vŽœ€}‹†t–“u•’œš‡lw‹|žŠ‚‹wŠ’ˆ œ¢†¡‡¡•}¤q~‚’‡n‹w~¡p¡ž ……’–•ƒ˜¤’Žr…ˆ‹€v‰…“‹œy†y{¤‡•š‘Œ– Œ„Œ—ƒ—‡‘—”‹‡™”Š–„›€rŠ¡~€Ž–|£nˆ ˜‚Ž‚“n–…‚y˜‰™•‘—Œ„”m‹}r‹˜~œ…„‰›˜…±—ƒr…zz‘}“†ˆ‘|–z†Žˆ„Š„‹ˆ~†€ˆxˆ|†‰‚r|Ž~„‹’‰|~|„}†•‚†ƒŽˆz†ƒ•‰sˆ}u†Š›z’w‡ˆ…”z„Šˆ‚€€|w‹€¡ƒ~mx†ŽŽt~‹‡‰‘r„ƒƒ•xˆ‡…ŽŒ|x’„‡z|€~{~u†y•w‹’‰Šƒˆ†}‰yn‡†~‡…‚‘€‡„}ˆz„zmƒˆs‰‰ˆ{‡™ŠŠ|†k‰|‰‰ƒŒƒ‘ކ†ƒŠ††€†‹†w‡z}‡‚€}Š€ƒ}v„ˆŽ~{~~„Œ‰‚‰‰|†‰n…}‡€‹yŠƒ‘ˆ„z„lŒ†}‰l‚‰Ž„|ˆŠŠx|‚‘˜”ˆ‹•rŒ•ƒ”„•›‰w„Ї‚…ƒŒ{{‡w‡‰Ž™„˜‰ny€¢†Ž{•Šˆ€‹‚wŽ‚}„‹ˆŠ…“‰’ŠŽ”‘ƒ‰ƒ„‚‰Ž…„†š†…ŒŽ‘Œ…”„ކ‰Œ‹‡‡’‚ˆš‘Œ‚„••“†‹‘‡›„†‚‹…‰‚Œ|„……Œ‹Žˆž“ˆ’™‹‘•”“’‘““”†Š‰ˆ}‰‹œ†ˆ„ˆŒ‡„‹Ž’—›ŒŒŽ†‡‡†ƒx’–Š•†Ž“‚ˆ‘“Œ‡‹‚†‹v…‚ŠŽ††Œ„’†Œ–‡„Ž~…p…ˆ‹‚„qŠ•™ŽœŽ‰„‘Ÿ|†’…†’Ž”q~œ}ˆ˜‚œŠˆŽq’’…•‰v›¢ŒŽ”p‰‹s‰˜„…v††ˆ‰•Š—ŒŽ’†x‡‡‰—‹ŠŒŽ•}”q„‹’‹‹–ˆ~…ˆ‹†w‘†‚…ŠŒ’„‘‚Œ–ˆ˜ƒŸx“ˆ‡„”†“‚ˆ”‹–Œ’‰“z‰yŽŽŒ†–ŠŽƒv‹•ƒ“•’™‡Ž•”†•‰„‰“†–ˆ••‘’š‰ˆŠ…ЄГ…‹‹t„‘ˆs†wŒ„††…—•™†œŠŒ‡Œ~”ˆ˜…”ˆŠ’‰…€‘ˆ”s“†“މ„‚ƒ‹€Žu}}Œ~ƒsn‰‡ŽŽ•{wt‰—…‹…ynw‡‡sˆ}€•‰—m†„‚’€…ŒŽŠŽt‡‚‡‰”††•†‹nw‘‡~‚€„‡˜†…v€‰ŠtŽ„”„”ˆƒy†‡‚{€xŒ„ƒ†…€y’Ž‹‰€‡y€nxˆƒ‡‰}‡‚„‹‰p……„yƒ†‹|~~‚ƒ–x{wŒ˜…‘‡‘‡ˆ‚…{‚…‡…€zˆw„‡ƒ}†|–‡y„‹z„Œƒ}y‚~“‰‰{‡ˆ‚„~…•…’xˆ†„€~xr|oƒˆ~…uˆlŠ}‹ƒƒ–x‘~‚‹‹Œ†}ƒ™|„Š…‰Š‰ž}}‹ƒn–•†”Ї“|•Ž˜“v“”„Ž˜”˜œŒ”’~ˆ˜žŒ’‰†‡ŽŒ•‚•‹’v{™ˆ~™•š‘Ž“„“ŽŽ–‰’ˆŒŽŽœŒ–‹‘’y|–ƒ‘‰ƒ”Žt˜€Œ…€—‚…’€„ˆŒ“œˆ›‘ˆ‹|ˆŽ“Š•‰Œ}ˆ‹‹€—ŒŠŠ‹ˆŽŠx†—ˆ’Šzˆ˜ŽŠ“’Œ‚‡’Š‹€v‚މД’‰–‘‹‰}”–„‡Š™†„‡{˜›}‹ˆ‡ŒˆŽ‹“Š’“—‘‡Š‘Œ–ž‰’œŒŽ‰Ž”œ‹ƒ‰Œ‹Š’‰“ˆvŒ’ƒŒŒ™Ÿy˜ŒoŽ‘ˆ‘‚‘„•‰…•›Šv‰‹‰‰’“‹ˆŽœ~„—…””ƒ‚‰…ˆ“‰•Š•{|Œ‚”„ŠŒ‰‹˜‰€—…‹‹šŽ‹“•“ŒŽ•|“ƒŒ~zŒ‘“Šy•}}ŒŽŒŽƒŠŒ‹‡‘…ŒŸ“ŽŽ‡…‹Š‘ˆƒ‰ˆŠ“ˆ‰‹ŽˆŒ|…“šŠ„ˆŠ€–Œ’Šˆ‡Œƒ’‹‘‡z‰†‡‡–™–‘‹„‹Ž“ˆˆ¢‚‰Šv“–’ƒ‡Š†ƒ‹Š‡”ŠŠŽ”Š“•†Š€‡ˆ–˜†“—Š’‰ŽŽŽ„…‘’‘‹ŠŒŽˆ}‡•†—Œˆ™€z†ŠnŠŒŒŽ‰‹‡‡•‘‡…ƒŽŽ‰„”‡Œ‹•Ž‘ˆšŽ‰’•ƒŽ…Š€‹‚‡‘}ˆ‹Šx|†’‚’•‹‹Ž„‹•„‰—Ž‹š‡’Ž–Љ†‹‘‹Œ…ƒŠ‘‘Žt‘‚’}‘’‚‹„‹†z†”ŒœŒŠŠŒƒ‡‰‡–Š‹‘†’‚‰‡›‰…Š‘Œ‘”ŽŠ††’ŠŽ”‰“ƒ‹‡ŒŠ’„‹Œ‰„†’”“ЋމЗ–‹‹x‘—ŽŠ‹ŠŠˆ‹†‡’Š”•‹‡ŽŽŒˆ„†€‹•‰‹’…’Šˆ‘’„w{–…w{‚†“—mƒ’u¨‹ŽŠ–‹‰{~™Œ’„ŒŽx{z~|Œ©‰–Š´‚˜Š”‹Œ”œ…•‘‘|š~…‹‘‡‘Œ“‘’‡šŠ’Žz‘‘–}„ˆ–’€…‘“”|‡pЋދ€–„„Ž€“v„“šŒ‘…™‚”v‰ˆ‹}‰Š¦q‘’}˜ƒ‰†‡Ž…”˜•‘”Ž~Œ‹ŽˆŒ€‹Œ™‹†‘’„”†˜ŽŠ†…ŽŠ”‰Œ’†Œ‘“ƒ‰ŒŠ’މ‡›Š…’‡„{Œ˜~‰ƒŒŒ‹™‰“‰‰‘{ˆ”Ž‘‚€€}‘‡‚Žšƒ‰†–‚‚ŽŸ}“†…Єމ„ˆ…’‹ˆ~…šŠ”†˜Žš‚w›ˆoŒ…’ŽŠ……~’‹–Š–“ŠŽ‘œ‹…‰ˆ‰~Œ‰Š…‘}ƒ‹Ž‰Š—uxŒ“~›•†œŠ”‚–†Ž•›ˆ—ŽŽŽ‹Ž—šŒ—Œ’™y‹Ž‘z“ƒ†~‘‹Œ‰wЇy‡—‹Ž‹‡†Š~˜‡‹Š‰ƒ’“…„†”‡“ƒ‰‰–•Ž“‹‡Š†‘ƒ•“’“”‰ŠŽ€„‰Šƒ’„Š~‡‘†‘ŒŽ‚ŠŒ‰Ž‹›˜’Œ’z”™“…“ŠŽ†Ž‡ˆŽ†‰ŠŽ}†ƒ…‡…„‘„—’Ž…”€}vw“‡ˆˆŒ|Ž’‹‡‹˜‰ˆ€•‰ˆŠ„’“Ž‹–rn‡{Œ‡…—Œ†mv‹“€r’™ˆ‹“‘ˆ{…”‰Žx˜„ŒŽ”‡…ƒˆ˜„™šy„‘‡†Œ‹•{šv…‰‘‡•‰{ƒƒ‰v’‰ƒ‘‘‹Ž‹Ž˜‘†„‰Š‚‚—zŒ‰Ž˜Š’ƒ†‡‰–‹šŽ“Ž‘~…’†µ‚“Œ‰‡’“€Ž‡’ˆ’…™Œ‘Š„ˆ“ˆ“‰…ž”‘’ˆ„‰•ˆ‘ŒŽ…}‹Œ‹…˜y¡…ŠŒˆ‹‹”˜ˆ•’„‹Œ†…†‘”{ˆ‰”“‘Š„ˆŒz{„|ˆƒ}€‚…‚„tˆ€‚}…zmx—‡€v‹ryw€‚„‚†|‹†„w|y„}‘ƒ…y“y~‚‰‡ˆ“š‚„Œžwˆ~Šˆ‰}“„t‡…ˆ‚…~myr||Œu‚‰~pŽŠ†…yŠ{Š…}ˆ~|‚ˆxly€yƒ…ƒ†•ys˜…І•s€„‚{{}…††v|Œƒ€ƒ„€{…|“t‚ƒ{‰†v|y†ƒ~Š}†}‚„‚…v…~€‹ˆ€„އ‡‡~~v€–|ƒ€ƒjˆƒŠ†‚xy„ƒ†{ƒ~‚€w…uy|{‰|~„‚€‡yry…‰t‡ˆ}~ˆqŽ€‘Ž}–“ˆ‰Œƒ{Š“ˆ—‹–}xˆ‰…nŠ‡ŠˆŒ†‰”’ŒŒ€‘Ž…‹‚‹Š•Œ’™Œ’”ƒ‘†…ƒŽ‘ЉЕ{ŠŠ—”w{w‚Œ”‹„Œˆˆ•—‡‰˜’…„š”Œ“—‡‡„ޑІƒˆ––„q–ƒ‹’}Œ’Šˆ†zŠ•ƒœ‡†‡‹ƒ„’†—‘ŒŽ‡Œ‰„‡’‰—†‘Š„ŒŒ’’’”‰‘’ŒŒ†’‡Š‡Œˆ’„–•…ˆ„’‘Œ‰ŠŽˆ‡‘’‹—†Ž’{‘‹ŒŠ‹†„†„‘”ˆŒˆ‰€„~Š–…”ˆ‘‚“„Œƒ‹††n”ƒvƒƒ…~ˆ}w„~n{…„zŠ|ŒŠu’}ƒy¥y‚‰…zx~wuy¬Š•’†|ŽŒ~ž‚vŒ…‰~x~iˆŠŒ‰t~zšw~zs‰sŠ€Žˆvƒˆ‘z€…‰ƒ„lyxŽ‚r•‚‰„zsƒp˜ƒt|€ƒƒty“‡€}†}u•~Š^f‚Žy…}‘vrtlmz~}{‡lqyŠz}‰‡|}ˆ|u‹tvŠy~{‚ws†~x‹…uˆ„xxw|Šs{„y|€ˆ~~y~uv~Œ}{†y‡†z€igˆp‡ƒ„}|z‰ynv„Œz˜u|y”q€‘‰|€ŠŒ†š†…Š‹†Œ…‚ˆv€{ƒˆxz€w“„zw„Œƒu‡Ž…Šy‹€‰‰††|“uvŽ„Š|„|…‚…ƒxƒ‚…‹ƒwˆ“„‹Œ‚wgv‰„‡‹y€†‚zo~……yŒ}wŒ‚ƒ‚Œ„„ƒ}{~‹tv†€…r‚†vŒŠ|„{v„z~x}†‰~ƒˆƒ}‡ƒ“~|…ƒˆ‡~vŽŽ€|~u‰€“€…†ƒ‡„Œ‚†……ˆ„|w‹ƒ†„†…‹‘…z€‹zƒŽ‰†ˆ‚ƒz€ƒˆy‹{€}z†~Љ{v‡‚„ƒŠf„‡…‰€ˆ€lŽŒ‚zt‚€yp†{‚y|”v€Ž‚‡|s•x‹l”‚‰Šˆh~ˆ‚kvuš‡‡œ€w‡„‰v}~xš|~Šyƒnyƒy}‚‡~r‚pwuq€{vlˆw}}ƒ…|z‚tˆs€}|…o‚Š…|k€ˆh~…x{zzz{‹|‚‚€}|‡˜…‚tjˆ……ƒwu…||„€{tx|lxu}„…€}x{q’~qƒ{u„ˆnvn„ƒt}†opŠuw……yr‹…uu„urzrsˆ{‡tz‚‹tq{~q~žy}~k†„suy~nzw‡ssƒ{‚ktt‚|{€sxxuyŠ”rˆx”Ž€Œ…І{ŠŽw‹„‡ŽtyŒz~†’‰€‚ƒŽ•ˆŠ†ˆy|†……ˆt|u‰‰›uކ„†~‡y{‰Žˆ}}‰‚‰ŒŒƒ~nw‚•„ŒŒp|ˆƒ‚…u„„{Œx†‚†Ž‰Œ‚‹…Ž€ŠsˆŠ‡{‹{‹†…†Žƒ‡„s}}†ƒƒƒ”Œ‰Ž„~‡v„Œv…†Ž|„‚ˆ€ƒr†‡Ž„ˆ|}‚Šˆ‡‡Šzˆ†“…‚ˆ‚ƒ„„„‚‘†‰w‚„‚}‰{‚„{Š}v…‚€ŒŠ}‚Œ‚‘†‚‚q‹Š}„m‹Š†‡††–}wx€~yw€ˆo‘jxŽ‘}mƒ™Ÿj|||€–s}{toz”yЋЄy‰yŽi‘†vx“pt|‹u•ƒ…q|~‰„q‹—ƒ“pš‚–ŽŠ~”…œ€‘€oŒˆžpˆ”|€{yˆ}o}}ru„“Š~€˜‡‡yn‘z‘Ž€‰Š†ƒ|‡w~rƒ_}Šv…›~‡…|}…˜{¡†|€…{•‡ˆˆ„~|wsˆ‡{‡~k|{Іy„ˆ“ƒtwz}}„ƒ}‹tt€ƒ|ˆ¡t•‰k‹z’€Œs|€}‰”€|…z…‡‡xw†w‹~ƒ“€Ž‘‹ŒŽŠ€‰‹’†ˆ”„w‘ˆ‚“—|‚„…lŒ‘ƒ……ˆˆ’‹•…‡”“…€‰„•ŽŒšŒ™‘‡ˆ‡Š|Š”‰‰‹‡„’Œ‘|{p‘€‘’……–Š‘˜Ž–Œ€…žŠˆ•“Ž—Œ”ƒ‘’Šˆ}‰ŽŽ–‡r˜…Š}†ˆ‹Š‡„}ˆ”‹‹›†Œ‹Š††Œ’Ž‘ˆ‰†‰‰‹†”‰’†ˆŠƒ‡ŽŽ‘”ކˆ„Œ‚Ž…‹Ž‘Œ”„‰Žˆˆˆ“—‘–ŠŽŽˆ‡†™‰‹‹zŽŽŠ†ŠŠ…ˆ‡ˆ’Œ‘•†‹ˆ”ŠŒŽ†—ˆ“”„•ƒŠ‘‡ƒs‡ˆ|„z~{tzys‹ƒx}vx€Œy|‚q€ytŠ€z€€u{‰~svnƒ„{{…‚xv{‚~{‡Œ„‚}w…yˆ€€†y‚~tƒ|†‚„un„qtˆtw|zv‚|‚‰y‚zŒs‡w†„z†vly€~w|‚r‡ˆ„w„~„}”{y€ƒr…~zytuy{|{r{ˆ}Š|zq‚‚„v}„‡‡‰o}xww††l‚~…}yvq~€„€„wzxƒ„yxvsu€‹x‚‚tuy„€‚~€}{ƒ€‰yt}~ƒoww€m~t~}r}ˆƒ„n}~€‚}…„}„r€†Š‚ƒz€„{vquxw‚ƒ„rŒxr•~}w„}zu„†zxp…po…Šy™|ƒ‰€swwz€€‰~ƒf‡‚z…|ˆŽˆ}‡ƒqƒx…os‚yi~zuw‚mˆx‰‰ˆx‘„v—ƒs„}{†€ix|{y~€…y~€‘ƒšŠz„z‡|zyovv{|‚ru„‡€‰†€u†‚”ly}Œ‚Šlzwxƒj•ƒp{wx|wxx~‡€xxvzƒ{~m|zx|‹s‚~|‡Œ€†x‡}”…€}pŒ~w{rƒquzƒ‡lz|{{txtw„}‚q~~ƒ‡‡‡ƒ{r›‡‰€‹Š‹‘o‹’‡‡Œ}‚…œ}v‰’…ŽŒ”rxxƒ‘“¦‡–™®†‰ƒˆx”’„“„Œp‘˜ŠŠ~ƒƒ’’ƒ›œˆ˜€Ž‹mŒ ~Ž„„Šˆ†œˆ”lŠo†…’œt‹‹ˆn†Ž…ƒŒ›}”…‹sv“’vˆŸk–”‹|“Œ‚„„‡˜„‘˜˜‰‹‰„‚x©‰—…‡•™ŽŽ””ŠŽ”Œ‚‡„‹‚’}ˆ‡€Œ}‰š“ˆ‰“Œ’Œ”v|ˆ~ ‰‹‰…ƒ‡‹…Ž‘”ˆ’˜‰Œ’‘‘ƒˆ¤„ˆ”…ˆ’‘€›|˜‹Œ˜Uy‚x]^™’^`s†•Ž‘ˆƒ›§n€{‹‚¾uŠp—vƒv„Y|–‹hƒ€ƒ—‚v‡c†„‡™‰p|—ygy¡yÂ’…‘¢s‚…ƒ|€›zx„…n¦‰Œoš“~„v‹vtxp‘‡u–¸€f†{‰„d{l•stq‹‰€|nžoŒ‚„sŒyŽz“{†n˜wyŸ“np”yrŒiœ—…~bd“vtx’€v‡•z†€’ˆpz}zškŽ|˜¿¯˜Šp€œyqƒ™“‡~‹^vŽ„ª„‡}‡xŸ—l‹’ˆv†o€„zx}‰¼q{–¦p™š˜y—~ivޱ‡•zŒ‡†Ž†ŠŽ•‰ƒœ‰yš‡lr–„ˆ—‚ˆ„~’‹”†ƒ‰|„‹~…Ÿ ‚†}–|u‰‹“¡t”Ÿ~€{”€…‚‘€Œ{|}І™‹…‡ns€‰†z‹Œ{…zƒ•~‰€ˆz„ƒŒkŽ—ˆ‡‡yq€€uƒ’hŽ~†yŒ‹{n‡‰~˜t†sŒƒ€€t„q|Š~‹|„‚‡šƒ‚Š€†’ˆˆ€ƒƒ’……{–‹‡ˆˆw‹}Œ‘‚sƒ„}•Žކy~{xŒŒ|‡‹‡„ƒŠz„zˆ„zŒzŽ‹…xƒƒ†‹’…Œ††‘j~~x…‰ƒŠm‰Š‰‘–ƒ‘€®š„ˆ„–†uŽ‹t{„ž…zu–ˆ˜—„“ƒ|‚›ˆ‹…—ˆ†‡Š™t”–‡„ŒŽl‰†——w{‹ž““‚Œ–†‚p€§ƒqƒ}„‰ŽdŒ†…‚Žtw›Œ}r†‰‡{‡€ŽŽ˜—~…Š}uŽ“”w•†‹Ÿ€‹‚ˆvz‹s‚‚“Š‚‚“‚’t¤ƒ‡‚{„š‡€„™wzžx‰‡…ty††“t•…•‘Ÿ}|yo‘Œ“•‰”„po}‡{uƒz{szŒŠ™ƒ‹‰•y‚£’x……Ž…„’rz”‘zƒ—™ƒ‹ny€‰wƒ‰ x„˜Ž‹y‚‹•‰„œ„ˆ|”Ÿ„rƒƒ‹…“’†”{y›}†‡€…˜‹tw|ŠŒ–…{— „„‘„’Œ’Œ‡‰Œ‡‚‹Ž•‡‰Œ‰”ކ…–u…‚ŽŒ‚Žš–Š„ˆ…ŒŒŽ…›Šƒ‰„‡„–Œ‹‘‰…‹‘•††‡€€‹†•€ˆ—…›‘…‰„ˆ’Œ—•‹ŽŠ‹~Œ‡”‘‰–‡“‘ƒƒ™ŽˆŠ˜‰†ˆ‰Ž‘ŽŽŠŒ—“‰Š‘ˆŠ‰™‹’—ˆ“‘’Ž‘‰‡„‡Œ—v“…†‹…’Š–’ˆŠ”…‹‡–ƒ‰…‹‘‰•Žˆˆ“Š‘‹‘Š{‚ˆˆ„‡’‹‘‹{ˆ–ˆ‘…•–ƒt’‹oŠŠŽŽ„”‚‰‹‰•‡}Œ‰††Œ‘›Œ„Œˆ‰Ž†Šƒ†Œ€ŒŽ„‘”tz¡‹}’‘‡“•ˆ“‡‰“ŽŽ‹œŽ‹“’–Ž‹Œ‚†’މ…ƒŠ’‘‰pŒ†Ž|Œ‘ЇˆˆŒ•‹‚Œ˜‹†ƒŠ‹˜‹ŽŠˆŽŒ‹‡‡‘‹”ŠŽ…Œƒ‰’Ž‹’†‚‰Œ‰’ŒŽŠŒ…ŒŒŒƒŠŽ‰…Š’•”ŽŽˆŒ“žŒƒx•œ”†ˆ…‡‡‡Œ‹’†‹”‰‰Š•Š‹•‹‡’ŽŠ„‘•Œ‘…Š›–‚{v‹„†Ž„‹~ˆŽƒŽ‰„—˜xŒ…n‡”Ž‘…††•‡~‡“–ˆw‹‘‡‹•Ž–œŽ††‚“””ˆ…Œ‡Ž•…™vz¦†Œ”‰‘ŒŽ„“ƒ”ŠŒ…šŽ‘Œ”›Ž™Š€‘†„yŒ˜‘‹q”}‡|Š’’„ˆ‡‘…‹ŒŸŽ‰Š‹|‰”‰Š‹‚‡Š‡…•Œ’Š‘‹‘}…“Œ”‹ƒŒŠƒ–‹ŠŽŒŠ‹Œ‰’…€‹…ˆŽ‘œ“–‘‡‹Œ‘‹Œ‰¤„„{’™„‡Š…„ˆ‡‹’ˆŒ’ŒŒ˜ŽŽ–†„‹Ž”’‰„‘“ŒŽ‰„€Œ}ŠŽŽŒŠxƒ•v~Œ…’‹x“•}y‡‰{o€€Œ…Œ…•Œ•€”‹ŠŽŽ‹‘’’˜ŠŽŸ‡ƒŠƒ…“…‹Š”Œ’†•‹•w}‰Œ‚‘†ŒŽŠŒ—‚—‚‰™šŒ™‡”{†‰‹Š…––‰n”……}‚“‰Š„Š}„“„‘‘Ї†ŽŒ‘‘‹„…†‹Šˆ”‰–†‡Ž†ˆ’‹“•‹‹‡‚‡’’Œ”…Œ„މ‹ˆŽ†‚‹“‘Š“‹ˆ‰…‡Œ‰Ž–‘†z™•‘ˆ‹‹‡‹ƒ€‡Ž‹“’‹Œ•Ž‘‘…ƒ~‡‘Œ˜•˜„‘“‹‹”‡ŠŒz’yŽ‹‡}މ~|†xŽ……†yuŽw†ŒŒ€|ƒn€‡–‡ƒ„‰†‡v†“‰…nus€“¢~‰‹~…x‡‰y}†ƒ}ƒ‹~ƒyqz‚Ž…‹Œr}†‡Œ‹qˆ|‡xƒ€ˆ™x|ƒ€†‚|~„…v‹€~’v‘‘…ƒˆˆ€uo‚“‰~ˆ‚„ˆ‘Œ„ytyŠ}‡‹—ˆŠ†ˆ}†t†}ƒ‰Ž‰’„‹|ˆ†‡‰‚€ƒŽ†€x}‘zv‰€z†|‰}€v…u‰ƒ„~†‡„r†}ƒ{vˆ|‚…~z~rƒ”„xŠmŽ€††ˆ€z{‚ˆ˜t‹u‡…€ƒuwŒŠ{ Š}›‡‚„~|s‰€|ˆmu˜ˆ“~‰…o‘‡Œ~|iƒrv“~„™‡‘p†…p~‚o‡|‚†z…‘~‰xwq}‡‹‰‡„pz˜‚x{†rŽz‚ˆp¤“…‰{ŽpzŒ}|w–sŽ}Š•n‡“‚†“Šˆ„‡yu†~€Œ€‚{€zŸ˜~Š€~€|z…“‚‡ˆ‚wˆ|š†„tƒ‚ˆ…y…~{„~}Ž~~šŽ{~zwzˆ~ƒ}t„yˆ†~„†uqxŠ…ŽŽ†{pŒtq’}€~Š‚|vŒy„‹ƒŠ†€€}s†…’~‰„ˆ‘ˆz~‘Š‘~|‹•ˆŠ‰Ž”Œ†™Ž„‰—~‚Šu}‹‰sŽ“†™uˆ’ˆ‹‚—u‘ƒ–|ž•ŽŒŽƒŠ‰}ƒŒˆ”’‹‡ŒœmЉ‰Žƒ’ˆŒ›|ƒ|ˆŠ†“}›Œˆ{|“~•‡ŽŠˆ„„‹z‹…‘Œ‚‡—ˆ…™…Š””‘Œ¡ƒ›†††ˆˆ‡‚†‹‡|™Œ‡Š€”ŒŠ‹’–’Šœ˜z‚’“„ƒ‡†€˜…‚Š“‰“‘Š‡Žˆ…ˆŽˆƒ‘‰‘€~y”’›~‚ŠŒ‡ˆ”ŽŽ‡‹‡–•Œ‰€‡‹™†Ž…ˆ~ˆ‡Š‰‹ŠŒ}ˆ}ŽƒŒ|}z~‚ŒyŠ~‚w†zx}Š‹„‰x‚އޑ‰‹“‡zˆk…{ƒ…oŠ€t„ˆrŒt‰ˆ‘pxˆ…Žy„‹‰Œ”‚h}“¢ƒƒ€x’‡ut‰|…~~‰€’˜~Œr†…{Žz|‚„ws}‹{wŠ…€…ŽŠ…~‚”x~sŒ~‚‹ƒŠ‡‚„ˆ‡†€Žtv}‡…ƒ}Ž|‚|…ƒ¡ƒ‡ŽŠŽ…€~y‚…“‰†ƒt†“}‚“€{‚}…~ˆ€………†yy†Š†Œ“ˆ}~„Ї„ˆzŠ‹{ƒ|”wƒ‹y‘ƒ‡~y‚n•‡ŒŒ‚Œ’Œ‘•’–…’‰|•”‰–’™—„|ƒ‰nŠ„‹„ƒ•‹„ƒ‘„„z~‰‘”Š—ŽŽ—‡•ˆŽƒ†“‘˜‰Œ‹}Š“{{o–ƒŽ”ˆ~„–‹˜•†”oŽ’‰‹—|™ˆ‘”~‹€ŽŒ•ƒq˜‚Œ’~‰‘~†„|Ž…˜„ˆ‰‹€‰‘Ž–’‘‹‰ŽŒŒˆ…‹‡†…„Œ‹‹””‹‰‰…‘‘‡ˆŽŽˆˆ’—˜~‡‘Š„••‰“•‡”“…‡…–ŽŒy‹Šƒˆ‡‡…‰‹‘“†‚Š“‚Œ~Œ˜„‡˜Š“‚ˆŒ€‰}ˆuŒ‹Œ}‰{ŽŽ†“ƒ‘•|zƒ‰ƒnƒŽŠ…ЇГ‹’††“‡„Œ‹ˆŽ–™‹ŠžˆŒˆŽ…‹‘…‹‡ŒŽŠ‰•yzŒŒ‚Ž’‡Š’އ–‰˜ƒŽˆ–—Ž–‚Š‘ŠŠ„„‹“•Œr˜‚Š~‹’‹ˆŒ‡‡”Šœ†Š‡…ŠŽ‘ŒŒˆŠ†‡Š‡”‹—†Š‹ƒ„Ž‹“‘ƒ‰„‹‘ŒŠ’†Š‡Œ†…ƒ„‡Ž’š“–ŒŒˆ‹ŒŒ†›Š‡z‘“ŒŒ‰‰Š…‰„ˆ‘‰’”‰‹Ž’’““„ˆŒ”Œ’”ƒ‘ŒˆŽŽŠƒsm|’‰’vx|q€Œw|ƒs†ˆz•u~|‡uu~„{}“v…sƒ†r|ˆwppt„€ˆ‰†…€tw†ˆ‰„†€i…u„‘…‹zˆpqu}~x|s…ttˆ~{uv~}…|……x‹vy{uy€yˆ†}‹‰vl~„ˆts”w“„}††‹t‚—ƒ‚ƒ†m‚‡kxqm„uv‚w~Š{ƒ‡‹mx‡}ƒŒqŒ|‚‚pvwz€lcn‡uo}~…‰„~u~w€{‚}‰p|€z‰z‚†‡x‡|||}~„”}•~z†s„{nŒqƒ}„}†t|Œˆv…Œx‚u€z…|ƒ~Œ‚v„ˆƒŠ‹ˆ†‹z…to‚~…~gu—€†€š…„x€—{wz}‹Ž…€Œƒ‹ˆ~˜…~vƒ‡}i•„}ˆ‹Ž‹ƒ{€‰‹ƒ~}”ˆŽ˜nz–ƒ~„w‰|ƒk„Žx…–r‰††ŸyˆŒ’Š‹„}‰q€ˆw{x€{“ˆˆŠf‡o‚Œ}ˆ˜ƒ~‚…pu‡p…w…‡…||Ÿ|Š~‡„’ˆ~„€y‚ƒŽ†ˆŽ‚ŠŽ‹‡sŒŒ‡–}†{u{Ž„ŽŠŽ…zsxv‰g†…ƒ}€vy|Š‹{†zž‹Œ‰„Ž{}…Š„ˆ’x‚‰ƒ‹“ƒtœ‚w|}††Št‰Š‰‘•Š‹‚|•™€Œ„‹„Ž–‰‘o|ˆzy”Š˜y—œ™Žt•š‰ŒnŠ}s‚ˆ[{xˆ~‚“‰™’•ŽŽ–x‚š™z€Šƒ——†Ž˜zšs‚‰‘ˆŽ‰„ŒˆwŠ—|…‡‘t‡•†rŠŽ—‚t‘‘‚–‡ˆ}…†‹’‰Œ”ŽŠ‚‘ƒ‡‡ƒ›~‹r’ŠŒz™‡ŠšŒ‚™ƒŠš™†’ˆŒ”y‚“Ÿ‘…“‹ˆ‰…y„‹–’wxŠ—†x†„Š€˜Ž‹‡ŒŠŽ…‘‘Š„„Ž–™€† Šˆ’‡‰“|t‹Ž~wvytxˆzw”‡ˆ|tz}„‚€y~o‚td‹€ƒ}‹zt~{~s‹€ƒŽ}‚}ƒu|{…€{ŒˆŒ€w{€’…„u„ty|tnˆ…‰‡st|uv„„oy‚x€y…{‹w…‚o”šu€†sv–˜cnt€z„yr‚Œ{px‚‰ˆt~s„z‹p€}’}z„‡hsx’ƒ}w„wt‚vty‚…qxux}w–€po}„|}vs‡rƒƒwƒ‚Œ…‡•|kp€…tƒ„~wyq~ƒ~‚zv‰o|ŽŽzzgŒˆp€vos~t‚uŽo{„…Š~b~ˆw†xe†bˆŠ‘Š€‘“”ƒƒy€‰…—†ƒ€š‡{™Šˆ‰ˆ‘™s…’{|ˆ…zŒ™ŽŠrˆš‹•†{”…wz’|•ŽŒ……ƒ‡…ƒŠ‡”ˆ…“‹‰…šn‡ƒˆ‹™…Œ“’•{{rƒ‰…’ƒ›Š™”z‘š‘›Š‚‹Œ‡†ŠˆŠ…Œ’}”yŠ‘„‡–ЋЙ„–ŽŠš„“‡„ƒ‹††ŠŽˆv’ƒ”€ˆ”‹Š‹”™”’™Ž—‚“Œ“•ŽŽŽ’…ŠŸ‹ƒ¥ŠŠŽ‰|“˜„{Š™††y‘–ƒ|‰~–”•‰ƒ‹Ž†™ŒŠ˜|•‹†“ƒ†‚‹ˆ†ˆŒ™Œ†”xˆ‰…‹“ŠŠ“‰‡‰œn•|‚‡}‡{‡Ž€—ˆsrЄВ‰•‡ˆ‰ƒ„’Œxˆ„„pŒ„y†Ž‘q{‡~„|…†ƒŠŽ†‚‰…ŒŒ–„}op’Œ—vŒ‡“€ŒqŒ}“‰|~€ŽŒ€Œ„}ƒo‡‡„}x{ˆw‡‰ww‹„€{~y€ˆ†Œ‚‹{‡‡‰‚–‚„wކ†x”yyˆˆ…Œ~…€—v©‡ˆ~—~‡~…•}v€އДw‡†ƒy‡~ƒ…~Ž‘x˜ƒ„|…ŒŒˆœ”|Ž…„‰…z‰¢…Šƒ|„†ˆy|…k‡ˆ…‡o”{‡{•‡ˆ‰~xˆ•Žw…‘|t‘Žˆ”އ‘•…|Œ„„oІ’ƒ•Іˆ’‡‹‹ˆ‰Œ—ŠŠ–‡‘Ÿ‘ƒ„‰t‚‡‰Œ‹Œ’ˆ‡Ž’‚|ˆŒ‹’ˆŠ’އ„œ‡Ž˜Œˆ›‹ŽŒ–‹ž€‘{Œ“Œ‰…‰’yœˆ‡€…‹ƒƒ€‡•Šˆ›‚Љ†‰Šˆ’‹ƒ‰‹‹‰ˆŽ‚’Љ‰~ŽŽŒ•—Ž…Š€‘‰’‘ŒŒ“ˆˆ…ŠŽŠ†‹‚ƒŠ“’‘†Œ‚Š‘…ˆŽŽ}‘ˆŒ‹‰‹‡…ˆ“ˆ‹‹ŽŒ†ˆ„ƒ…“‰“†”ˆˆ–ˆ~…‰†„’‚‹†Ž†‰‹Š‡•—‰ˆ‰‡”~}†”ˆ……’z}||„‹†Ÿ•Žˆ†y†—Š‘vuŽ•‹Œ•v‰Žs…‹†n†Š€†ˆ“‘‚‰”‘ŒŽ‘Œ}ˆ“Šƒƒ••†p‡‹‘ކ•’Љˆ•{’‰…І’˜’’’‹Œ–’sŽŒ€Œ–‰‰Š‰‹•Œ‹†ƒ†Š‘…ˆŒŽ¸†Š†…”•Ž‘•“¢“Š‹“’•„”ŒŽ‡‘Ž~„–Ÿˆ””“†Ž‡‚ˆ”|‰Ž–ƒ„‰Œ™’€‹‰¢’…“„˜•’˜”ˆ“‰ˆ‹Œvˆˆ…Œ}…š€ˆˆŒw˜ƒ}pk|{sƒ{„„~†z{ŒƒzŽ~€~}|І}x‹†|~uƒƒ…‰ˆxƒx…‡yoœˆ………zm‹zn„…—……€v‹‚yŒkx}‚…„y‚z„„}‰|{i~ˆ‡Œ…n‚ƒ€y{‹u{‹|u‘“‰…uŽsyz…}rv†’s†sw…”l„‰ˆ„ˆƒ‚~|n„uŒz}†~…{‹yz„r~xvtv…‚Žr„—ƒ…{|„ƒ˜€yzˆ…„p„ƒˆ€|z‰‚{…‰{„vxxƒ‰x€€z‹„Šv{y„ƒloŠˆ~…†|zxzxz‰pƒy†ƒywˆ~„|‘~†…€}ƒy‡„‹€ˆ†•s•‚‘…‘‹„‡‚ƒŽv€|‹›‡rr„~Œ•‚Šˆƒ“†”‡‹Œ†z‚’ЇŒŒwy‰k‘‰„ƒq€€†’Œ{€Œ€ŠˆŽ~†•‚p{‰’†‰ˆx…„ƒŠ‡y~~‰r‰ˆˆˆ†v‘„…ŽŽ~ŠŠuˆ~ހޓƒ†€xy|p†}‡‰…~‹~…ˆ‘mz„y|†ƒˆ„‹•v‚ˆ”}…v‹ƒ’†‘˜”†…Š‚‰ƒƒ„yƒƒŒ|‹Š{Œƒz‹wŒ†Š†‚†vŒz|•ƒ‘v‚…„‰‰†Œ~‡…‚‚„ƒƒyŠwŠŠ|Žk~†‰‚‰‚•k‚˜Ž‚‰‹‚‘€r‘Œsvƒƒ‡ƒgp~†~›…€‚Ž”™}Š‚u†‚v“‡Š‰{‹Ž–†{Ž”l—‡—wz{{wކ‡‹’‚ƒ„—І’j}‡~‚ˆ{€‹…tš‹‡všŒvƒ•{„|“ˆŠ€Œyu†Šm|“‰uƒ‚ˆ}‚n„ŽŒ˜fŽ…{‡p‚Œu‚ml…{{„y‰„’u‚…‰}|‡…yw†z”††z€„Œ~Š‚…‹~m‰’‘†ƒŠyˆkƒƒŠŠ‹€‘ƒ~k}y„„„y„‹’k…~ŒŒ‡{’–“„…’¡t{|‰}Ž…ƒr‡ŽŠ”’‹—s–Œ‡’ƒŒ†Ž„†•|t}€‰u„sm‡„‹˜~„y}‚†—ˆ‡…Œ‡vˆ’Šxˆ‰u„{‹ŒlŒ‹ƒ€“……ˆ††Šy„{Š‹†•‡‰kwŽ”Œ}„~~‹…‹‰‰x|Œ‹Žv‹‰Š“‰}“†Œ†…ˆ‡u~xˆ„„ƒ‚„‘ŽŠ†…‡w‡‰m~Š~‹Šz‚}„‰Ž’l~‡†{€„‡zŠ~Šˆ„‚~—‚z‰…’ˆ’ƒŠ‚ˆƒ‹—‡†ƒ……w‹{s‡‚„|ˆx†xƒƒ‘ˆ†‚w€x‹}‡……Œy‡€€‹ŽŒ•vŒ…„…‡~s}l{Œ„qk„ŽŠ…~…Œr•”•‚Œ‚…Šƒoˆuzˆ‹„poŒ‹—ˆ}€’ƒ{œƒ|†x—„x‚‘‡…Žv™„~”‡—o’€‚Ž“}‹‘†}†„‡Š‹†…’“rz€Š‡{‡ŠŽw{’€p†‰‘ƒ††’}ˆ…„ƒ‘‡v……Ž‹Š~ƒƒ|ƒ‡k|~އ‰ƒ„ˆ‹n†‚v‚w…†ކ†w•Š•ƒ‚t‡~ˆŠ“‚ŠzˆŒ}†…Œ…„‚€ˆ}ˆŽ’…€‰|‡†‚Œ…‚‚‡y}wˆˆxˆ‡vƒ†ŠŽ‡‡ŒŽˆŠ„‡}t„‹~Œkzˆ‹‚„ƒŽy‡}”Œ‡|o†‰v€ˆŠ…xnŸ{…‘„‰‚v†…ƒ–†z‰‡‚€u…z”Œ‰Šp‹}z…žyކ†Š†‹‡”}€Œ†|‹‰„’Šjt{‰‚~˜v|’Š•‰uŒЉ{‘w‘‡Š€ƒ‚o~ƒ‚‹xx‘ˆ~‘t„“™„‹‡’~†‡t{‚†~ˆ‚‰ˆ~ˆ‰}x|ŒˆŽx‹‹‡}‹…~‡tŽx‚‚‰Œ‰‘Šz‡‚„‰ˆ„ƒƒƒˆz‡‚Žy’‡†p…y†ƒŠ‡}ƒ€Š…††”y}v{~u|ˆ„†…ˆxvxyv‡…x…y‰i‰‰‡tƒ’z{ˆ‰‹‡ˆˆ“ˆ—~–‰‹„š€|“‹o–‘ˆ‘Žˆ’z‹‘”—‰v‰{†‰”’˜›ŒŒ‚‹˜…‰›‰˜’‚„‹ƒ‘„Š‘”vz‹Œz•’€‘”Ž„•“Œ“†‹žŽŒ•‘”‘Œ~€–ƒŒŒ…‰”„w“†ŽŠ†Ž’…‚~ŽŠ‰Œœ‰œ‡ŒŒŽ–Š•ˆŒ‹‡€Ž†‰Ž‰xƒ™‰‡™…‹€Œ‰Œ“‰Š‘Š‡ŠŽ‘ˆŽz„ЉВ‹Œ–ŒˆŽ’Ž…‹Ž—‡„Œz•“~‰‡ˆ†‰Ž„’’ŠŠŠ–€Ž—”‰€‹Š”’ˆ‡‘™ŒŒ„Žz‰“Œ…}„‰•y‚‘‘„”‰€Ž‹Šƒ†•€‹Ž…‚‹{{ws}ˆŒ‰‰”•–¦€—‰’ˆu“š”{”‡‹‚ƒŽƒ…ƒ˜†}‘†‡Ž—“Œu‰’—„y†ˆ’}‡”ŒqŒ}…„—Š–‰—„–‰‚••Šˆˆ‡Š”™ˆƒ•„‡y‚ˆ‹‚˜‡‚•|‹zˆ‰Š–‘‘ˆŒŽˆ†„“‘›ƒ€Šqˆ•Žˆˆ‹’ˆ˜Œ‘‘‹ˆ‰ˆŠˆ‚Œ”Š”†‹„‰Œ„‰…‰™…‚‚†Š}‹‡•Ž”„€‘’‘Žx‹ˆŒŒ‘‘Š‹ƒ‹Š‹ƒ”‰…”‹Ž‚‰ƒ‡Žˆ‰qvw}†~kq}|~”|t„z„”wy{yƒwc€v~ƒ||~vqŒ‚Šzxyyrwnƒ~|‰w|zŽ|’yx}ƒ€{‚wr†{Œ€wh{{x}Š}my~w~w|™m†yŽwi‰ŠxtqŒu„ry~ƒ‹y{tƒzoz|ƒœ~y…~ƒv}z„tvxw€‹‡u‚zz‡{~w„|~€xvqxnz{€tx~}‚xvvzu…€s}|~„‚‹€xt}}wnxˆ}~z…{Œ‚„z€“‹„†€€rz‚jƒo|‚x‡z€szx‚‰‚‚z€ˆ}s‡|‡|ƒ…Œ…lމŽv–”—‘ŒˆŽŠ¡”ƒ•”’ŠŒŠˆ’r€|z•ƒŠŠ–’ƒŒp”ˆ„•œŒ{’v‘ˆ›}ˆ…†~ˆ”¢†•“ŽŠ‹œq…‡y‘–‡‹ ~Œx„ˆ‡~‘Œ…‹z‚“xމЅ‡†v‰ˆ“–†›…}‘y—‡ˆŠŒ…ˆ‰–†”ŽŠ‡€‚…{ˆŽ‚{‹ˆ”‹„Œ—Š‘žŽŸŠœ”“—}“’ˆŒŠ„›“‰Œ’‰ŠŒ’‡ˆ‰–†“‘€†“‡}‰u‡„‰Š•’ˆŽˆ‘”ƒ”{’“†“…†ˆ’Œƒˆ‡‰z—n~Œ‹“…Š—˜‹”tƒš…Œ†‹“‹‘Š‘”„Ž’x{‡z}…‰‹ˆ“˜€js…Ž“wp…”†Š‰Žg{|sЇ|‰Ž’†wƒœ‹„‹„’y„’›Ž•~‚‡˜Œz•ˆ•ˆyŒŽˆœ‘‡‰ŽŠ‰{‰“¥Œ~•‡z€—œŠv‹—ˆ™ˆƒ„‹‡‹‰‚œ‡—„˜ˆ|ˆœŠ‡„ŒŠŠx•“‡‹ˆ’–’…‰Œ•‹™“‘ŽƒƒŒœ‡‹Œ’‘‰‚‡‘”›˜‰ŽŒ‰‰’†Š{•–Œ~–†ŽŒ‘”‰Œ“ŠŽ‡Š‡‘Œ†‰„›ˆ‰Š…‰‘’€Œ†ˆqŠ€‚…}‰Š}tƒzšƒ…˜†~„sz„ƒˆ}‡svƒ…ŽŠ‚}•ƒ†‚n~ˆƒ„ƒl…rs…Š‚Šzˆ‚w€ƒt}Ž‹‰€ƒ{{ƒ‰‰’„‡vs|€ˆ—†s~ƒ|yŒuww†~‰r{„|Žz€‚vx˜“pˆŒˆŠŒr„xŠƒ{ž……~~€€ƒ€‹ƒ‘}x}…¢…‰zy‡|†‹†‘sˆ‰ƒyzr€{wˆ†‡‹€{~rŠ€~‹˜„v‚˜‘~€|ˆ‚€~ƒ‡…‰‡zƒˆ…{ˆ€~~…Švz‚ˆ‘„}‹—ˆˆ…’y„Œ}w‰„}ƒ†Žšu”˜™‘‹‡Œ„†Ž“}s€}€Œrq„„ŠŒ–„ˆ~“}Œ’ˆˆ…y‡†€‡†‰w‚{‰ŽŒhŒ‡{‡}}‹…Œ„x|‡ˆ~™šˆmw’ƒ„Œy€‰|–ƒ~xƒ‹…‰s†‡‰Š—‰{މ‹€†€w‘‡Š„z}ƒˆ‚‰ˆvt…zv„…€‚Ž‹k„‚}‰‡”zŒ‹x‚‡~“„v‹‰ˆ„Ž’‡‡‚†„‚”„~ŠŠx†|ˆ‹ƒ{zŒ„uŒˆ‘…€…yzˆ{ƒw†–x‡‰ˆ€‹Š”’xŒ‹†ˆ}t‚m|ŠŒuŒm‘ŠŽ‰‰~z˜„|wŒ€†“–sŠtƒŠpz|˜}|yvŠ‚}žm‚‰Žr^„~‡‰…~rƒÁ…–ކ{…sˆ‚‰‰|ˆtŸ}ˆ•u†’˜€Šˆ€‡yŒ‘„Œ“‹˜‹„‹–Œˆ–{ƒqz¡‰˜š†’~s“z­ˆˆ–€ƒ•Œ‡‘ƒŒ€Œƒ~‘¡…tƒ•£„Ž{‡†Ž†Ž|o~fztxƒ‰Ž€‰‚”‘Œ˜†z†‹Ž˜‰}“u…wˆ•w„’€wu‚„w…ƒ†ŽŠ„vyy‹ƒ}~€‚wˆƒ„†‡ˆ˜„ˆx€l‘Œšˆ{pŸl…y—‚”ˆ‚t—€sž€‚ygŽ“v}„‘¡‡p€“‡w…‹“™ƒu‹{‹•–¡x”Љ… †|{‰lvŽn~’‹v‰ƒ†…ŒqŒ~‹–‰w}“w†Œ‰‹“™„‘“…mzuŸs‚nˆŽ…ƒŠ‹l~~‹‘†›…‘~“…ƒv’ƒ‡szp¢}—ˆ„—“ š~—‹‹~€–xr‹‘‚{‰‰Ž~z‹…~‘~o•„““€‚ލ•‘˜Ž‡’œ•„…‘usoˆyq‚˜„ŠŠŠ‡xz”€Š‘±|ƒ‡‹ ‰“‹†™ˆ…}ˆwš‡„€|—x~sŒmƒ˜‰ˆsއ“ŠŽ”ˆy‰˜€˜‡„ˆ~€“ƒˆ}‚v‚‚†‡…ltƒ€ƒ’…†Š”€Ž„‡‰…‰z”Ž‹ˆŒ”€€†‰Šnš‹|Œ‰†|€‹ˆ†}‹{†~Œ›t}Œ“sŠ|……†ƒ’v{|–ˆƒwŒŠ‹Œ‚~”ŽŒ•†z{†z„Ž‹€ŒƒŠ„‰‚ƒv†zpsnŠ…zy‡‚Œs~ŒŽ€|„ŒŽw‹•}ƒŠ‰|r‚}{~€…’…‹…ˆ†Œ‡‘„y€ˆ„‚މ‡’…†tvvކŒ—|ƒg€y€Ž…ނЄ”€‰”ƒˆ{††Š‹|z‚~‡„Œ†‚s‰‰‚……‡—|’‰Š Ž‰‰ŠŒƒ|…s‚’“ƒosŒ‹–‚vŽ~ƒ™„…‰ƒ…yŠƒ’€†ˆv•ƒz†”‘žl‹•…|‘ˆŠ‰‰Žƒ}ƒŒ‡…•‰Œpu}Ž…‚“|„‚~„†w~‰t‰ˆ{’†‰…}‹‡|†‚v‰‘‹ƒŠzŽ“„„„w„sw‚†‹ƒ„ˆŠ{‡—u‰‹}z}~Œ€’‚ŒŽs{‚‘~„yŽƒ‡„”Œ†‹‘‹……„‚…‹†ƒ†~„Œ‚ˆŠ{‰‡{„‰‚‹‰‰|Š{{Ž€–|Žˆ„wˆ…ŠŽyˆŠ‡„Š„xrztƒŒ{ŠvŽj‡ƒ„z‹‚o‘…jqwy…sn„{w‰ŒwŒ‹’tz‰‘}†|{}†}oxˆ}|{€zˆt€—pf{myd‡ˆuyin|g”on{vf‹†ˆpk}oxzw~šyšv“b…‡vs‡}€~zp{y……—v‡‹‘mXЇ~xw`‰y‚z”—r‚u„o„p€Š†nœŠu‰z‰q|yxƒr„ztr‚x~n‡ˆ€‚†…„…†‚~nƒ‚w’|s…€|pwxu}€„u}~|swy‹~x€t‰‡~†€“yw}„‰z‡}Žw…z‹t‚pˆ€‘lz{~x~~zxzpv|‡Ž†|h~{ˆ‰m}Œt’’‹€ŒuŽ”‰…‡‘ˆ{Œ‘†Ž‘†—™ƒ{„m”•ГБ…’†“Š”‘ˆuŠ…Š”“’Œ›Œ•”•‡‘Œˆ…ˆƒ•†‘wzЀޔ‡‰Š–Œ‰•‹††›‘Š’’—}†’…Œ“ˆŒ‡‰“‰o˜€}‰•„ˆ‹‡Œ‡‹›‰•ˆ‡‹€‹”ŽŽ‰‹ŽŠŒ‚–‹‹‰Œ„ŒƒŒ‘‹””‰Š€‹Ž‡“ŽŠŒ‰Š’z{Љ‰œ‘•…“’Ї‰š|ˆ‰y›‹‡‡‰‡ƒ†ˆŒ“Œ‹‘’‡†ˆ“Š’‹Œ€—„’”„’–…‹ˆˆ”™…‰‡q—Ž‘}x‡{Œ‹”‹‡Š˜~€†‰‹z‘’„‚‘…Œ€•’މ|}~ˆ„“¢‰€’Œ›„Ž”‰…Šˆ—…Œ€”‡ƒ““ˆ”~€…‰“‘‡ˆœ•‰y‡†…Ž’……Œ„€Ž‰–…‚’‘ƒs‘Œ™•‚‰•‰‚Ž‹œ€ŠŒ‘œŽ„ˆ‡‰Ž–ƒŽ‰‰ŽŽ}’’˜ˆƒ’Œ‡Š‹ŠŒ“ŠŒ•’š‹•ŽŽ’‘”…‹‡ŠŽ‹š“†‘Ž–—…”ˆ‘‘€™u—І—‰‰€‰‘†˜‘ˆŽ€‘‘ˆ•„‰ƒ„’š‡‰†‘”Œ•—€‘ƒŒŠ‹‹{‰’‡†‘…†~“™{{–Šn“ˆ‹‰ƒŒ‹”‹‘ˆ•’‹ƒŠ‹Š”Ž—žŒ‡˜}‡„ŽŽˆ†„‘‰“Ž—“–v{‰Š’”…“Іޓ†Ž–‹šƒ™’™‹™‹{ˆ’‹†{ˆ™’Œo–€‚‹{ƒ’†€„€‡“ˆ‰Ÿ•Œƒ…•‹Šˆ~ˆ’…ˆ•ˆ’†‘Ž”‡‰€‚•‘–‹Œˆ…‚“Œ‘“އ…†ˆŒ‡‘‹†€…‘ŽŽ‰†Œˆ’•‡Œz••‘…Œ‹…Љ†‘Œ‘‰’‹Ž’‡Š„ƒ€‚Žš“ƒ”‹Žƒx…w˜”ƒƒŠ“…uyŠu…‡˜{t†€‡‡‚z‡{‰‚’ˆyˆ‰€xŒ}‘Ž”…oˆ~y…ŠŒ”vw„mŠ~tŒ†€‰†‡†xŽ€‰o~‹†~Š’r†…‚‹‚‚r€…†wŠ~“•š|‘‚…’„‡u…s‹†Šƒ’r“‚†’†~„sj‰yŒ‹††ŠŠ…Š”y}w…„‡Œ‰–„†…w…}„ˆ‰Š‘–‚}Š’‚“|†…ŒŠ‡Žx’xƒ„€}†„„}ˆ€}„}‰’zˆ|…z€…{‹ˆŠ†z‚Œz~…Œvˆƒ{ƒ‡n|…‚Šƒ††wˆ„‰Œ‰„‡Ž’™|ˆ–‡Ž€Œ™•}‰“‡†‡‰…•~vƒ‹‹}›‘w‘އ‘ˆ‚•™†Œ‰’}‰’Œ‹|‹ˆ‚|ˆŽˆ—’“‘“‡}‹™wІ”’…‡’–x€‚Œˆ‰ƒ–Œˆœ‚Œ‰€}‘ЇІ‹‘‘ˆ}‡”Žz”ƒ‡•†šŠ”‰‹‚‰ˆ“’”ˆŒ…ƒ…‹ƒŒˆ‡Œ‹Ž‡|’˜ˆŠ””Œ˜Š”–ƒ†ŽŒ‹Š†z†ˆ–Š•“އ‘ˆ‰‹ˆ„‘‰†‡„‰•ˆ„w—Š‹}І’ˆŒ’‰Ž…‹“ŠŠŒ–‡„›‚‡”Ž…‡ˆŠ‡}ˆ}…Ž‹ˆ‘y{–‰•‘…šœ}}„ˆmˆŠ‡„Žƒˆ’Š’‚•މ†“‹Ž•’’™‹‰”ŒŠ€ŠŠƒ“‰…’Š’…˜ƒ“z{“…’•‚ˆ“„›ˆ›Žˆšƒ’ŸŽ†‹“––„Ž’‚ˆ”{އˆŠŠ—ˆs›…ˆ~‘‡ƒyŠŒ™‹‡„‡‰Ž‘”‹‰‡‡…ˆ†“Ž“‡Š„‡„Ž„‘“Ž”€Š‚‹€’‰Œ‘Š‹†‘‹“…„‰Œ‡Š’“˜‡ŽŠƒŒ‘‘‡“€•ŠˆŽ{Œ‰ŠŒŠŒ‡‰‘‘”•Љ•ŠŒŒ~ŠšŒ˜’‰Œ†Œ„~‚‡yƒg”|‚ƒy™{ˆŠz~‚¢Œzt„|€™˜ƒŽŽ‘uq”{……}|yˆ‹|”Ž~‚ˆ€|ŽŠ¨Ÿ•„u‚Ž˜—}€‰€ƒ‹|€•˜…‹ˆ“Œ–„–ˆŽ~ˆtwq’q’Ž{„‚€ˆy³†­‹„‰˜Š†’Šˆ––„Žˆ’Œ‹‡ˆ…™i€…„”‚ƒ–‚}x‘€ƒ|{xŠ}„uƒƒŽ‹žzˆŠ{…£Šƒu}}‹|}…€z}›‡z€zƒ†ž‚m~‚~†{ˆƒ‡†p†|–ƒ„ŽŽ}ƒ€‚v™‹|s™|€|‰†šŠ…rœ~Œ†–†pŠ”sŽˆœŽƒ‘‰‡Œ€{zt~€„‡unˆ€‹Š˜}‹ƒ|„ƒšŒ‰Š‹ƒs‡‡ˆ‹‹u“„}†—‹”k‘…†‰Ž‘wƒ……†Ž…‹“„Œly„”ƒ€‹|}ƒ‡†~w|އŠt†ŽŠ……’‚‡„ŠŠ~xˆ‡Šƒ†}ˆ‘’†ˆx†‡o~ƒ…Š‹‚…†Œ“p‡†~…„Œ}‚€‘‘‚ƒ‹„‘|‚z…“€ƒ‰‚‰‚†‚†…ˆ‹†‘|‰}ƒ|Œy’‚|„|‹„Ž…z„†}‡……†x‹xvЇ‡’}‰‹…†~…wys„Œx†vŒkŽŠˆ„……c©¯{•œ–˜ŽpzˆŒo~|”‚‘~ºu”œt‰¦—ut—Ž€Œ•p‡ƒ†{…Ц—†{¬‡‚“ƒˆ˜”†q‘jw~qŒ‰£†}ƒ~‡–—›w„˜Ÿ¤®Œz’tŽu†˜~…‰frg|‚™–‹v¤‚•j†Ÿ‰~‰ƒ’Ÿ‰wœ€|…˜‰w~‡–s‚„‚“~lŠ“…zŠ˜xƒ‡|œ†–†‰—ŽŒ‡†‹||™ˆ‘‘‰‰Š–‹|Ž‹„‚„•–ƒ„smˆ…ƒŒŒŠx“–~yy‚ˆ‡‹’€‰n‘“Ž”…’ŸŽ‰‘”™|„”ˆ†‚†ŠrˆŽŒŒ‡Š~‡ž}“k–“І‡‰ŽŒŠ‘ƒ˜ˆ……~‡Žˆ„„Œ‹‡Ž“€‚†{‹…ƒ€Ž‘ˆ„„yŠŠ•~r‹—މŒ‹Œ††v‘~“ˆ‰‡‹‹l“‹•…„wˆ““‹~ƒ‘Œ}ƒx††Œ‹›‘ŒˆŠ‰|“’‡…‘‰Š‚}•£}‰‹†‡›™tŒ‚”˜‰‡„ЉŸ†“…‹Ž”†Œ’† ‰ˆ‹‡‘Œ‰††’‰ˆŒ…•’’ދД‹‹’“Š”ŽŠ‘ŽƒŠ˜Œ‰“‡ŠŠ””€””ƒ“†ŒŽŒ–‹†•‡–‰„Œˆ~Š„ƒ™Š‚‚‰Œ…•Ž‹“ŽŠ‚’v‘‹‹‹‘„{‹†–‚Ž‘{x„Œ…n„‹…ŒˆŒ†Š’ŽŽˆ„’‘‡Žˆ†Š‹”ŽŒ™‹Œ—’……ˆ‰ˆ„Œ‹Œ‡Š‰Œ–yz|Š’‰‹ƒ“–„ˆ–‰|š‘‘‹•“•‹‘€‹’‹ˆ„‡Œ˜”‡t™‚ˆ~ˆ“ƒˆ‹†~‰“Œ‡œ†Š†ˆŠ†’ˆ•Œ‹‡Š‡Ž…“…“ƒ•ŒŒ„†‹•“‘‰‘„…“ŒŒ•އ‰Œ‰‰†„ˆ‘ƒ‰Š–’Ž‹ŽŽŠŒ‰ŽŒŽš†ŠŽz‘“Œˆ‰Š„……‘ˆ‘‘‡‘Š‘~ƒ’†“‹€’Ž…Œ‰“r‡‡”’‹˜”‚’‡˜ˆt}€¡‰tt“„‘†šˆ•zŽˆ”w’ˆ•‹~v‘“‹‚ˆzŽ›˜x”|†w›„–…‡†‰ƒŽ€{ŒŠz€{{šqˆ{Ž‹ŠŠ†‚’‚v‚}‰”„ }‹™~u‰Œ€…ŠjŽ–}‚•Œ‹†€†…|‹o‹w‚•†„‰}rŠƒ‚‰Ž}ŠŒ‚“yzŠ„Ÿ{„}ŒŠŠ††‹ƒ™‹u€ƒ‚y‹q…~……”‹‡~ˆ{sˆ…y„ˆŠ‘~ˆ|„‚|†™……„Œ{„‡‰ƒ‰|‰ˆvŒ~‡Žv†…{‡x„Ž‘„“€’|‡‘ŒŽ‚ˆŒ‡‰‹ˆ€€…xt€|”„kq—…›}„~’}{Ž}Œ‹’…~Ž‘ˆ‰‰‰•…{…†q’‘€€Šƒˆ…ƒŠ~†‰‰ƒ‹ˆ‘‰ŽŒj}†Ž{ˆ~‰†…t†y~x’†z‡‡Ž‡ƒ‡yޔЄƒ‰}ƒ~y„Šxˆ„‰ƒ…‡}w‹‚l…‚„Šzo‚Žo|„{m„…€€Š|‡zŒx—ˆˆ‚ˆ†‡„ŒŒ†€€…‹{†ˆ…ˆ…„ˆŠ…€€‰ƒ‚†•{†z{†ƒ~€Œ’‚‡uƒ‰|ˆ‚‘~‡z~xv~†‚‡‚|ˆŽ’}x‚yy‚ˆ{‰„Œv€ˆŽ•z}…}ƒŠ†Šˆ„“‘Š~šˆˆ‡“œœ}{‰n˜’†“‹†–šŽs‹Ž‚‡’Œ› ‹„‹€ŠŽƒ‡“—Š‚††Œ“‡””ww}˜•~”‹‘ˆ™’†–‡™ŽœŽ‹ŠŒ˜”‘‘ˆ}—~Ž|‡Ž“ˆv˜ƒ‡‹‘˜‰„…Ž€ˆ˜ŽŽ”Œ†Š}Œ‹’ˆ“„|‰Ž‰€‹Š‰ˆ”ƒ‰uŠ—‹ˆœ„€Š‹‰€˜”ˆ’‡ŒŽ‡ˆ‡}‡†‰ˆ‰Œ•“ˆŒŒ“”…––ƒ‡Œz’˜ŽŽ”‰†Š‹ˆ”€‘–Œ‹’‡“˜„„“‰ŠŽŒŽŠ‚Ž{“’—’‡‰Šƒ|‘’‹—~–}x{ˆ†nŠŒ…‰Œ…‡“ŽŠƒ’‹†Š‰†Œ™‘‡–Œ‹’”Š’‰„ƒ‰‘ŽˆŽƒŠƒ‘ˆ‘x{w’€Œ“Š‚‰Ž”˜‹Œ˜‘}…›’Œ‹“‘–|†”„“’‰‡„Ž–‚r›„~Š“|‹Œ‚|Š”Žƒšƒ„…‡‡ˆ“‹”˜ŽŒˆŠŒŠ…“‹‘…•†‰€Ž’Ž””Œ‰ŽŽ‰ŽŠ’‹ˆ‹ŒŒ•€”‰‰ˆ”Ž‘‰’Žˆ…ˆ”…ŽŽ|Ž‘‹‘‡‡Š…„ˆ†Ž““„ŠˆŽ‹’†„ˆ™…‰•ƒ‘Ž€‹‘ƒ~{ryx„z„‡{‡ƒ€y“ƒ|ƒ†‚vƒwv|{}Žƒ~~y‹……ˆ‡{‚‚yˆszu…~}€‡‡“wt}€„ˆ…Ž{}x‡ˆz†…~€‡yw‰~†„|xo{z‡‡Šq€tu…‚ƒ‚w‰€{~‚—yƒ‡†}v…}o|…}rƒ„…‡…|~†‚~z|…z‰–o•‚ywq„yŠ{s„}ƒ„‰|‡w}„{ˆ|‰vz~ƒ†~€t‰€y|…v~~………‚y†‘ˆ‡u€‹|}wv†ƒ€{‚ˆy|€}{€‰…“z‚ws|s„z‡~ƒ‹‚~ƒ…Žz†}†z‰u‚•}Œ•”q„{‚hlru€o}u{}–|ƒ„‹zS|†‰“shp…‰|x|šv~vyˆ‚q‰m}d†€vv}™“tyšdnbŠ{Œz|m™j‰vs~ˆƒŒzn„Š|z€olŠ‹Šv„~n‡d„‰e|z–e~dŽp†xzlmy€s€‰‡‡o”sŒsipzmŽwvožg‚ŒY~eh„‡y”lsoo‡d…‹w\pze“t‰šjy{ƒqxifywnfnŠpxyˆ…€|upp†“w…v|}|‚ƒ‚hw‚}ƒ‹€[”yz~®s~qd}y€|‚yƒƒi‡ƒvvz||€tvzeŽyj}„zŒ“€†v…ˆ…Š‚ƒŽ’Ї•—ŠŒ‰’šŠ{ƒŠŠŒŠŽ|ƒ’‡Œ†Š–Š…tqˆ‚”{‘œŽŽ‚ŒƒvŒ‰Š„ƒ~…ˆ~„ˆ’‰‰ˆŠ•w‡Ž”’ˆ…Ž•‹€Žˆ‘Œ‡’ƒ„†Œ‚ƒ‡ˆ‹…ŒŽˆ~—–Ž„Œƒ†‹˜ƒ”…™Ž‹„Š‹‚“‰™Œ‰ˆ’„‹‹‹„‰Š…‚ƒ™ŠŽ•‹„„•Œ’‡…™‰‡‰Š‡Šƒ”ЇŒ‹„‘‘‹†‘‹Ž•‹’}‰„‹x‘‘‹‰Ž‰‘ƒ…„’’–‹‹‰ƒˆ’ŠˆŒˆ…–ŠŒŽ–…‰“’xwq{zqxxpm……zvzª}wt„mwwxxƒ{y`‡}ˆvy‹|v|g’€wŽ}„t‚tzvr€r‰}dwy{s“tuwx{ƒmwt’ƒ”‡rgwy†‡rso‚xn~”ƒŒm„utŒe{s†y„xuqh|{ˆƒvw‚z}qx~t‚ˆ¢‰‚j}‚}~y~xyw„yq|Ž{‚}{z€ywn|„‰vjwjxvƒopw|~uth…v…ƒ|yˆyvvyymqqƒ|v‡‹|~uzŽ{ˆz€Œx{‰}ov|…†cz‹~pw‰ƒ„up|v€ƒ{‚†}„ˆqz„{|“sˆ”…ƒŒ€†xŠƒ}ƒƒt€~‡Ž‹xyŒ„|’ˆwwކŒ’Šz‰†‚†v‡›’‰‹‰nuy‚‰ˆ—r‚u‡…„t†‰‚Š‘y†ƒƒƒ”‚‰–|ƒmxŒ”‚„“x€Ž‚‡p…|„“x†‹“•‡ˆ{‚‚z‰…‚uŒ„…x…’…€–†z}{x‚‚…‰…ˆ‚‘Œ|ty€€Šj‰|˜}€–”Œ‹u‹ušz†’ƒƒ™…ˆ‚ˆƒx‹ƒŠƒ†y‰~ƒ‚ІŒ†x†ŒŽŠ|Їty„ƒ‰†”‘{†…xƒ|‚}“~Š}€…‚ˆ||}k…ƒ{|‡o‰…‰‰„ƒ¡˜„u–œŒŠ‘‹zŒ‡pš‘Šƒv„“Ž}–•†ˆž’{{†{~”““…Ž“QwŸ{‹”v~•”qœyˆ€Žy’Š…{¥–ˆz–ˆš«‰Œœs‡Œ‚Ž“v}|ox‹‡{™˜‹…˜mˆ~”gˆ†Ž†{“ †xˆ€‡Œ›x”uŠŽŽ•y…””Ž•Œu™zv”ˆ““‡}…Œ‹ƒšz…‚’t‚ž‚•Ž–ŽŒ†‡w”‰‹•–…Œ–…h„œŠok{{މ‘†ˆ™xœ—”‹Š•Œ‰“ ›z–‘Œ‘‚†—}“”‘Ÿ‰—‘…ƒx…ˆ†”‚t‰ŽŒƒƒ†ŒŒ~‘˜Š{Ž‘‰”ƒv}‡Ž†ˆŒ”€ƒ……y‘€‰Œ‹{q‡„ƒr{Œ‘‹””Ž‹p•‰‘Œk‹Œ†…‹fŒ“‡–€–‰†”~““¡„z‹‘Œ•w’v‹–“ŽŠŠv‡“wŽ‹šŽ‹‚”–Ÿ†Žr‚‹Š{’{z–•‚“”ˆ‹’““’‘„ Ž“|„ˆ“…–‰Šˆ•Ž•”‹‰„‹‹™Œƒ‡‹‘‹‹†ŽŠ‹‡„ˆˆ‰…‡†•ƒ‰—ˆ†‹ŒŽƒ‡ƒ~˜ƒˆ…œ‡‡{“•ˆ…†•}ƒ‘œ‰…—Œ†}ŒŽ~˜€‡ƒ‹‘‡ƒŽ‘”Š—‡”’Š€ŽwŽ”~ˆˆ|‡‘ˆ‹‹ˆ— yŒƒŽn“Œ’~„„‹„”n’‹„Œ–—ŽŽœ‹ŠŽ”“…“‰Ž‹‹Œƒ‘†y}…‹ƒ“—…‘އ•“•Š“‹™ŒŽ–—€‡€‰–’€†Œs“|ˆ•‰Š†€‡ˆŽšŒŽŒ‰‰~ˆ‰–Œ‡‡‹ŽŒ‚˜†‘‹‹…“…Š‚”‹’–‡ˆ~ŒŠ…•’Œ‘Œ’…‹‹‘ŠŽv€„…‹Ž–’‘†•“Ž‹‰Ž˜ˆˆz“™Œ†Ž‰‰€‹ŒŽ•Œˆ‘ˆ†Š‰‹‡‚•ˆ“”†•‘‡’Ž‚®€Žp«•ˆ~‰‰ƒ‘ŒŒ‰—‡Œˆw’‹…‰‹Š‘ŒŽˆ€Œ’‡ˆ•ŠŽ}€…‰•Žv•–’„ƒ‡„ƒ{–‘‰€ŠŒ’‰…”ˆ˜…~†‡“x‘…~†‘‹l‡|Š€–“‰}ƒ~„‚‹†—Šqˆ”“‰ˆ„Œ}ƒƒ¡r‰’‰‹™…‰ƒ€ƒ”•¡“’‘Ž~‹Š‘Š–~€ˆ‚}†‹‡‡•‰‘‹‹Ž‡Œ“””ˆŠ„™–•”‡ˆŽ‡‹†ˆŒ‹‚Ž‹…ŽŽ€•‡‚‹ŠŽˆ‰ƒ’Ž„—‚‘Œ—Š|‹‚„ˆ“Œ†‰™“…“‡Š†“zŽx‚†sˆ“‚wzuŒ|{uy}}x{~‡zz‹‰†wŒ}xxt–‡Š‰xw„}ern“‰ƒŠyt„Š‚{w‰u‚„|„|{…}…w˜uu|…l„~|…wh’u†v{…||zy‘w„v‡„}y““‡}p…‡slzs{z{z~Šr†v†|€~yv†‹mŽŒ‰‚uwt~n}s{wrm~n{‰|t‰lˆ€l†q…~ˆp€o…~€{€zq|~u‘svi…‚q}qsny€v|uŒ|l|…zvx}x‡—x|„r~‡{sx|rƒz„uxx€~ngv‡Š„i|u…xsŠv„‰…”uˆˆƒŒ†‹„…’‹w‡…‡‰ƒr~ˆ~ƒ‹Žƒ‚}ƒˆ‡”ƒƒ‹‚‹Š€v”…{‡ŽsŒ€tŽƒ—xŽ~Š}„~‹†‘o‹†‹v€‘…†oz†–ŒŠ‰y’ƒ€ƒ„xˆ…v‰x†{„„“uˆ‹„Œ†{††uƒŒs‹w‚€ƒ…}…‚|™y€€†‚Š„}™‚y~‹…uˆ}Šr…†ƒ“ˆ‚~v~…|†qˆt……Љ‚އ•ˆ|~tЇޅ„‹{‡†Ž†wˆ‹Žy„~‡ƒ{~Š}~Ž‚’†u†‹‡|Œw…ŒŒ‚Œo‡ƒ…ˆ‹„„‘w}€”…{‚††‰†€jŽ}}{ˆŒƒx{Ž€x”ˆ€€u†Žˆm’Ž~‚u‚mЉ‰Œˆ†”ƒzt…‚ƒwŒ‹††{†’ƒu‡€•‚~ˆw„n€{Œ‚†‰€{€z‡‰€ƒˆ…€……Šu€‰Š|ri‹jy‡…s‡ƒ‡Š{{‰„zxyŠ–l‹Œ}„wˆ†}xƒƒzˆ†~Œx‡„|‚q’Ž€{€}Šzt€„‚‚‚v†‡z|~{Œ’‹„ˆŒ}}y|{ˆ„v†x†‰…„~~‘}‰†z||€st‡yw}}‹ƒˆy‚‚{‚n€~…|~‡~Š•‘€‹n}{¥‘•™ŽvŒ}€’s{„‰„Œtu‘†€˜„Š{~ˆs˜ƒ~ˆuŽƒx“d‰‹Š“‡~ˆŒŽ—i’{€‰ˆ„z‡ˆ’ŒŠ‡ŽŠ”ކ”m{’{ŒƒŒ†‡‹ŠzzŒ…Œt†‘Ž—‘ˆ’†Šu{Žƒw‚‡h‰‚…ˆˆŽ”}ŒŠ‰|‹‰l‰|z‰ŒŽŠ‚Іˆm…†{s€Š€ŠŠˆŒƒžƒ‹€~|…‹ƒˆŒ‹€Š‰ƒˆ‡v‰€‰Š…Š…Žt†|††o|€…€„…‹‚y‚}ƒ“|ˆ›~w€ƒ~‡„€–‰†ˆŠwŒ…|u†‡}{|o‚‡•Œ’ŽŽ…ˆŽ|‘„~†€u…wƒ…„•…x~Ž„…”‚…zއ‡•Œ~…ˆƒ|…}‡‹–Œq~x†Š†šv‡|‰‹‰ƒ{ƒŒ“€‡Œˆ‡Œ‰Ž†mx’‚Ž“u{Žƒ‰ˆŽu‰~ƒŠw‹Ž„Š‚‰ƒ~|‚„–|v‡Œƒ‘y‡‰„ƒˆ€}†w|ƒ…‚„…Ž‚ˆƒƒƒ‰ƒvƒƒ€†‹ƒ††€|‹Š~pŽ|ƒƒ‡‡~…‡{}ƒ}†ŠŒ…‡Œ”‰…ƒ…}€…„…y†‰‹„††Šz~ˆˆŠŒx“†s€{†‡ƒŒ„€ˆ†{|†vˆ„‰‰…‚lˆ„…‚ˆ‚Œ•~‘„†Žˆ‚‡‡Šƒ„†‰w‹~Ž…x}ƒ†…~{†ƒ†“ˆ‰…‚…}ˆ}’Ž|Šƒq‚w‡“Œ’tŽ|…‹|€‚ŠŒ†~‚yŠŽ‰‹Ž‚„q|‰”„‰‰x‡„Ž|s„‰ŠyŠƒ‹šŒ€z–‡ˆ†zy…tŠˆŠ€‹y…††…‚‹|ƒ†t‚z|„ƒ…ƒ‚…Š”ƒ}|}‘}„€‹w…„Š€~v‰‚‚ЇˆŒ„~‚‡„‡†€„†{…ޅމ„€Š€‡}{†ŒˆŽ||„‚}„‚„„‹Šz„‚‰w|ƒ‡~‰Œ}€‰Šƒ~‡qЉzƒ€‡mŒ€Šˆ„‹Š~ˆ‹‹’އŒƒyŽ–‡šŽ‡‘–yŒŽ…n…ˆ…Œ‰“†“ŒŽ‚Ž‘‡†Š’Ž’ŒšŠˆŒ€‘€‡„ƒ†Œ’‡ˆŒŒ…ˆ†ˆ‘w{Š““Œ‰‰Š‹‰—ˆ„—‘ŠŽœŒ‡Ž’’Ž‹“…Š”€Ž…ŠŠ”ˆw’†‡‘{†‹Š’„w‰’Šƒš††Šˆƒ‹‹‡˜ŒŽ‡ŽŒ‡ˆŠ™…‰…Š…‹„Œ—‹•„‡‹Ž”ŒŒ‹‘ˆ‹…’…‡†Œ‡‡‘“‘ŠŽ“‹Œ‰Œ›Œ—އ‘z”““І‰‰‰…І‡‘“‹’ŽŽˆ……|‘ˆ‹Š†ˆ‹‡¡išp†x‡•Š”ž•ˆ•Š}—”—~“~ƒ‹œ›€r‚€•e£ˆrp|–˜‘¤…˜ž’t‰‘†˜˜ƒŽŠzoЉ™|¨£|ƒ™ˆ™“€‚Œ~ zŠ•„k“u}™“gŒr‹†Š’…ަ’“}…‡Œƒ£¤™™–Œ€…‘‰‘€‹‡Š|…ˆˆ›¦v““‹Ž……‰“…œ|™vˆ‚|€‰ˆ‡ŒŠqŠ”ˆ’œ”Œ~Š}‹—ƒ†~n‘•Ž™™”~“’ƒ~Š’ž“‰}‘š„„†’¦†ž”“ˆv›…žƒ†x”Ÿ„ƒ‡ˆp‰Œ†›†›€‹hwЉ‡€…{˜—ƒ…†€p{ˆ‚‰‰“Š˜s‹~’ˆ€‘”Š‘ Ž‚r‚…„‹‡Ÿ}‘ˆ–|‘Ž‹”Œ’”}ŽŒ…„‡…–™‹ˆŠyz‰‚€“†…€›“^~¢†|˜€™‰Ž€Š‡‰‡’‹Ž••œ‰“‘Ž–š‰v|Ž…†ˆ‹ƒ–Žš’ˆ„Œ†ƒ…„y‚ƒ{‹–Œwš‹„‘”‰ˆ”Œ…†‹”{‰‡‰†’…’†ˆ‹ŒŽƒwvŠŒƒ‡’‘ŠŒ‹‰{‰‹‡Š™“††š‰ˆ–Œ‘“‡ˆ†—€’˜r—“–…‘‚‰—†ƒŠ‘{ŒˆŽˆˆŒ„—Žƒ‡‡†•’}Ž–Œ“Œ—–’Ž’’‡‘£Ž‡”}Œ•…˜Œ‹‹š…y„‰mŒ‹„‰—‘ˆ|‚Œ—ƒ“…‹…‹‘“„šŽŠ‰’~‘ŠŠ˜‰†ƒƒ~ƒŽ‘ˆ‘v{†ƒ‹“’Œ~‹–ˆƒ’–—“ŒŽŒ’‘}›’ƒ„|‘•ŽŒs‘€‡–z•Ž|…„”‰}“‰}ƒ‘ƒˆ„šŽ‰ŽŠŽ–Ž‚‡ˆ–Œ“ˆŒ„Œ†˜Š‡Œ““Ž‹‹Š‡€‰“€„Œ…ˆ“–’‘•ŒŠ‘Š…”‘‰ ƒŒxŽ—‘Šƒ‰ƒ‡‡ˆ‹‘ˆ’Œ–ŒŠ•ˆŒƒŠ€Š‘ŽŒ‡Œ‚Žˆ‘„†‹Œ‰Œ|}–ˆƒƒ˜wŽ„—‡€‚ •˜ƒqƒˆ††ŽŽ–}}w‡…‘‡‹•Œ{s‰“†Œ„™™Ž‚“‰¨’”Œ†“‚‰“‹ŽŒ–Œ—…‡‡Œ“t„ƒŠ‰‚”–”xp}‰—ˆŒžŠ~ž{އy~““Œ„ˆ•ƒ‚Žzƒ€’|ŽŽ~ˆš‘’˜ˆŽ‹•‹–…{ŠŽŽŽ†‘–Ž’‹–†’Ž“‘ŒŽ”˜‚‡{‰„ŽŠƒ†‡‹“ƒ‹˜ŽŠ–‰Œ˜ˆ~‡–„ƒ„˜‚x‘–‰ƒ‰€˜—‹ˆx˜~Œ†…‹Œ•…‰‚†‘–˜††~pvˆ{}t}€y{€}–}|„€}{z~†Š€yˆ}~{uˆ„…ryŠ„x€qu‹~„†}ˆww}z}††y|yn‚}|zˆ€y…|z„zކws{{‡}{{w}w{„’ƒ…w|‚‡rŠ}š‰zqy|iu|‚„v}|xˆ}‚„…~’ƒ{|yt†|z{Š{~ƒƒ‹sŒ‡†‹…vƒ}‚‰v}ttƒ’y}ypzˆ†‚uzwxt~wn†‚‰~}ts}Zu}‚y„„Œ|{{…~‡€€€‡€w€}Žup~y“‹oxx{jx|}ƒ†ˆmy€}†yz}…ˆ}†ƒ|†tˆ€ƒ–’Іt‡˜w‹ƒ‘†ˆ’–“€u‰”Ž…ˆŽ“˜}•zŒ’†’šŽˆp†’‘ƒ™šŽz’”}¤Žœ˜ˆ”•ˆˆ’Šˆ¢ˆšŒœ€‡”‹™s…ƒˆ——’™zzwˆŽ…†~Ÿˆ‡‘‡‰†||’Ž–ŽŠˆŒŠŽ|†}”…‚ˆ }†€y™‰†’”“’››ŽŒ†‰{ˆ“†€‰…•}„„‘Š‘””‰–“œ‚Š‚ŠŒŒ…“Œ~ŽŒ’‘‹‘’xˆ…|‘”ˆŒ„wŒ‹“{‚ˆˆ‚ޛޓ†z™‚––ƒ’…Œ‘‘‰‹u‰…’…–ƒ‡v®‡ƒ‘‡’‰‘vБЗ‘‹‡Žš‚”€„Š˜ŠŠ„{’ƒ„Ž…‡’ŠŽ“n|Œ—„|˜™†—‹ƒ~€Žusˆ‰‰|€Š—‰–„˜v‹„Š”z€‰‰Š‘|“mŠ…‘…–‘|r”„w’yš‡‘ˆ—w€—€z‡‹„„˜u”—…—Œ‡…Œ„–Š’’’Œ…’Œ{›„†Œˆ‡Š‘•’Š”Œ—ŠšˆŽ“ŠŒŽ…šŠ–’„‡~{’˜‰…‘……‹‘„‹‚‰”{‚~ƒ”ˆ‚“{‰Š–Œ’|‹Ž…Œ‚z‰™‡}“’Šˆ†–‰‰Œ–|†ˆy’‘†„‘†s•|€~Šv{yކ—z“Š„•Œ•‰‡ˆ…™~Ÿ‘ˆu“€‘‰}m‰t‚y‚‡x„€”‡q……Š ”Œv‚”s¡Œ†}nŒ†ˆ†~‘pz”~s—˜®‰{mŠ“„„z‚€t…‡Ž…–z”Ž˜‹†…vz†~x‘›Š‘~u—‘}y…ˆ‡€…„mŽ‹…›ˆ‹•t‹tŠ•“Ž|r”‚‘Š•„“z‡}Œ”‡•‘ŽpˆwŽvp„‡†ˆyw{–€o‡€…Œx–“‚}˜ƒ‘ƒ”Œ•‹„}‰ŽŽxš‰‚„†s—…“z~†{}‚||ˆƒ€‰}}†„Œu~‡„‚t~rwƒƒ‚Œy„Ž€†}Œ…€ˆ‚†rˆgŒŒ‡|ŠxŠ…}†‹†Ž~~†ƒzŠ‹…ƒ„Š|ˆs……‰“€…‚„{~y€ƒ„ƒˆ~›‹˜zwŽ}Ž‚ly†z€ƒ{‰x~‡„~o€‚‡‘g˜‹u†zxxއŠ‚„lŒ•qwƒŽˆŽ‚‰†ytvtqyŒ‰’Š…|„…Šˆ†„‚}xЉŠ|xŠsˆ€~Œ{……€‚‡hƒ‹}†‰wƒ‡|Œx‹u•wˆo‚ˆ‡}}”Œr|z…Ž‚ˆwƒ€~‘…‡…~xˆ}ypsvƒyŠro~‚~‚–ƒuŽˆ~}„‚…rŒ…ˆ†|z‚•Žs€uzzv|t‡‹‚zo€Ž}‚~—‘‹~€„€~‡–rƒyŽ…ˆ|tqŒu€~†~‡~v…~{‰{yp­‹|~‹šy‡w€p€|„}rt—{v‡‡u~‘|{sv{‹†‹…~w|yr„oy…}qvŒ~y}‡’}‡‘y~‡vx}q~y‹p„o‡‰€ty{lo{|re†•ƒŽ{sq„wyt†ˆp~t€w„ˆ’z†mˆˆwr†}nŠ|‡z~|…wy‘x€~“Šˆ‰ƒ…‹„|r€Œ†‹Žyr‹Œˆ€Œ‡ˆŠ|wx„‰qsz}”‚œ‰‹’† …„{£ƒƒ}Œh‡¢Ž‡”€|‡†ƒ¢w™„…w–‹‰Šˆ{|”ƒŒ‚†‰ˆ‡|…ƒ‘Œw‘†‡‡‰‹“z‚s†yvˆ†›„y†‰wŒ|ut”†yˆˆ“ƒŒ„ƒ‰ƒ‡r†r†f˜xk“z„ƒ}‚ƒ‚‚|Ž|¬†w€ŠŒx„j‘”{ƒ}‡|zkw‡‚ˆ‹ˆƒ†~y‰„t˜›••†ƒ‡|‘r{‹_‘‚†…Š‚‡‰zƒŒ””ƒƒˆž{€—y†r}y’‚–„}ˆ€v|€„‚‰ƒŒŽ•ˆŠz„x~€‡v†}y{Š~}ˆ€s{yx„‡ƒ{Œ€‡||~z…r‰Žƒˆ~zk‹…„~tr}z{‡‰ŠŠ–~ƒ‚ƒ‚„‰}„{Œ‹†~„un‰Œˆ„yz‚‰‚\‹~x„‡}€‹{~•vˆ‹z{€‘„nyЉzƒqx‘†zzmƒyŠ„z“r€„}‚wŒ|tvsŠzƒ‚‡u‰zƒ‚{„~y†~{zsx‡s†|‡q~zƒ~‚|“~‰€•…‚~u|’~|…‚‡x€’ˆtr‹„l˜z~ynyƒƒq‘kz|l‰u†z{’Œ†€…ƒ‡€‚qŽ–ƒ†ˆxvˆ…yvz†€s‡†x~ƒ{}w}‰†zwz‡}‹lŒ{…ƒh…}}zryl€Š€y‹‡|{ƒ‚…‡}‚jŒ}~‡ƒ‚z‹v€{|~}{q‰o‡‚‚€{z{ƒƒt„v„tw‡€€}…ƒsz…x}‚†yu…sŽ}}€yx”‚‡}‰j~…{{zq{‰y}t‚…€‚sz{ƒ}y„xuv‘}u|~v}l|o~‚z|rw„w†€€yƒƒy„‚v€†~…„||~|v–wyŠ}„xrvy}p€t‚~y‚y{Š‚|ˆ†}y}w†}…y€‡ƒ‰…|…€‹†Š‚{}””‰•‹‡”ž|}vn†‡Ž…’…‡’‰†˜€”‰Š‘–’‘Ž‘˜š‹…†Œ„{ŒŠ‚‹–‰ƒƒ‘Œ’Œ”‹–uy”|””…”†–‰™ˆŠ›Ž’›ŽŠŒšŽ•”‘‚•y‘€Š–ˆwš‚‰‡|Œ—…‹Š‡yŒ˜ŠŠœ…ކƒ…ŽŠ”“‹‹}Œˆƒ†Œ’‡„„‚”Œ•‰†ƒ‰€”’‰‰Ž‹‚‰Šˆ‘Ž‹„‹“ˆˆ“‹Žƒ‚…‹’‹˜‡–‘Œ‘}•’‡ŒŒŒŠ‡Š’Ž”•Œ‹Œ‘‡•“‡Š‡‘”“š‡†ˆŠ‘‘Œ{€ˆto––‰„†‰ŠŠa~Ž‹œ„‡…™u€†us’Ž–ˆ‘…˜‹}‡šŒ„‡n™‡ŠŒŒ”—”‘€ˆ“y’…Š‘‡ˆ““v•ŠŠ€ŒyŒr ˜€Œ‘Ї§›Ž™„Œƒ‹†Œ”‹šŽ–|}’•Іƒ‰‹Šz•„ˆ}’ŽŠ…€s‡ˆ’€’‡y¢ŠŽ‹‰œŒŠ“‚—Ž…†ƒ–¡{‰|“šƒƒˆ•}‘Œ{sƒŒ~€œ–”ކ“zЂГ™ž„z“zŠ€‰‡‰Œ}‚†ƒ˜†ˆ£‘oŽ’žŠ¡ˆŒ’†–Œ•„{‡ˆ‡~Š””t‹¤Š‰‡ˆ†~Œ›}i{ƒŸ„Šuqsu~jqj“v‘„t†‹x|…£‡€nrkshƒƒe‚ƒolš†[~c½qy“tˆŽ‡€„p}{u}‘•|v x–€„d|qps—pxqwŒr_qno[ƒgys‰‚k‚qw†rN{{{€ƒu¢£br€}v‹z~lsz‚y†v‘œo‰|v{o–tzv{fŒ`n{œrp‘j{q”„¡s}wŒ‡Žwom‚tu–’™hx€tus}m{q‰}†ruy•‚bwiuw‡ƒ‰‘…zjs…{zŠjm•ƒymŽqyˆ’a‰€vqs…wyjf}Œ„xnyƒ‡€\ƒtqo|™“Šz™‘•‰…‘‡ƒŠ’Œ‡ˆ•‡ƒ†€†’—–†›™|s‘‡‰”‚“Šˆwv’„–zšƒ—€ƒ‚‡‘{‡‡ˆ‡•ŒˆŽ‹s‹ˆ’šqy–švŠ…‹Œ|Œu„Š‘‘˜“s}‘Ž|‰ƒ”ˆ‰„ž}}Š’•y”Œ‚‡w…‹„‡ŽŠ†ƒŽ‡‹‹†‘‹–›Ž‰€‰’‹—…Œ†ˆŠ‹Š†ˆ†Š„”ŒŒ“yŒ”‡‡‡†‹–‡”’ˆ‘—„‹„•Žƒˆ‰x‰€ƒ„r†‹‰Œ€‰•‰–”’„•ˆˆŒŠ‹Žw‡Œ‹†…Š‘„‚ŠŽŽ‹†~Š|‡‡†Ž“~|‹”‹’ŠŠ™š|{‹n‘‹ˆŒŠ†ˆ’…™†–‘ˆˆŽŒˆŒ“’”šŒˆˆƒŒˆ‰‡•Ž…„“ˆ‘’“vzˆ~”•’†–Œ˜Œš‹ŒœŒŽŽ••‹~ˆ•…ŠŠ„Š—‡q›‡‹€‰Ž‡ˆ„†|‹•Šˆ›„ŽŒ……‹‰•‘‹Š…ˆŒ‡‡‘‡…ƒ‹•Ž™„‹‚„‘•Š‘‡“‹†Œ†ƒ‘Ž‹‰„‘ŒŽ‡Š…އ•Š”ˆŠ‘}’Œ…“‰Ž‡Œ…‘ŽŒ“”Ї…’Œ‹€Š–Š‘•†’‘†ŽŠ†”{†‹€‰‡‰z“v„~€”~{q|…‚ƒ}‡†‰‘‡†ˆ†uŠuІ‰‡sƒ{…Š”m”Œ€’w€}zŽ”vƒ„‡“††zމ…l–“}‹†wƒ†„Žxwt{‹‡„s‹™ ™x|‘{„ŽˆŒy~Š…v‘|‹ˆˆq„ˆ‰ƒˆ†|Їl…|ˆ””}ˆ~‰ˆƒ{’‹y{†„‰„}‡”xy“‰Ž…‰ˆŠŽ‚~~‡…‡‡’މ‰~Œ …‡‹yŠv…}‚Š~…~…}~{‰~‡Šx†~†‡€ˆŠ…’Œ„Šz‚Šƒ€Žv‹ƒ}Š|†m€„†ˆx‰vŒ†Š˜‘ƒ‰ˆŒŠ‰Œ„’o{}…Œupއޓ…‹~Ž{™…†–‚w‡q€„Œ‘wƒ~‚Œg„‚|‚|~„Š”~ƒ‰…Œ–…—mt…™‚‰|„ƒ’†x€Š„Žr‰†‚Œ†’Œ‰‡‹„„tˆ‰ˆŠ|‚‘~‡ˆƒv‡|r|‰„‰‰ƒˆ‹Šl…x€…ƒ‡‰‹‹’x‚‘„”}‚wއˆƒŒ›†Ž•‹†ˆ„‘އ‡…y‹‹|ƒŽ…‹~†€‡Œ~Šƒƒ„€‚|Œ~}’„„}ˆ‰~„‹…•|Œ„Š…ŠŒ††q‚…Œ{nŒ}‹ƒƒŠ—u‘Šš’ƒ{‚€y—pv}…~€tnˆwƒ–‹‰‚ƒŒ~~—†ƒ‰Œ€w‘j‡Š‹v“…€‡†‡f~Š‹|}…‘š‡ƒˆ}Šˆ‹ƒŒ•l{‰‘‡ƒ†||‡‚‡…v€’„‘q“‡w‰~‡’Ž‘†‡‚~“~r„ƒ‘ˆ€‘‚„…€xˆ|q~™‹†ƒ†„†‰m•z…ƒ‰ƒ†ƒŽ“‚‹„‘zu‰Œ‡‹–ƒ’ˆ‹~‚’Š‹ˆˆ‹o•„ƒ‚‹|“~‚~†xƒŽ‡…{ƒ|€…‚ŠŠxŒ‚…|…‘†‡ŠŠ‡…„}…„{ƒ‰z€myˆ‡{‡z›Šx–……‚†‰˜ŠŽoz‚’prsˆ{„‘—Š„…˜z~—}†•ˆyv’’sŒ|”ƒy‚Žˆƒg‰yŠyŽ„vƒ…ˆ‡{Œ‚‰’•…ƒ“ƒ”ruŽž‹‚ƒ}„…~Šz~ŽŽq‰‰~‰ˆ‡ˆ’…‰ˆ‹€‹wu†ƒ}Š„ŒŒ‰ƒy„„q|‚‚‡~…Œ…ƒ‹‘l„ƒv€‘„ƒ‡ŠŠuƒˆ˜|ˆs„~‹‹“†ƒ†‚ŒŽ„–“€ƒ‡y…zv…Š…Œ€”„y„}…|‹€yˆ|}’Œ†‹y‰‹†€„Š”ˆrŒ‹Ž‡…”‡‡…l}ŽŽˆxmŒ‚‹…¥‰–_¢†‰ƒˆ¤Ž˜ut—‡Œ–››“¢€¦€Šq¥x‹–¢‘wš’”•¸¡v™Œ‹ƒ“‘‚}ˆ‰†x‹rsˆ¢w†ƒ|c‰‘_…znˆŒ™•’‰‚~Ž£›‡hˆ“ˆˆŒ‹ŒŠ†‹—‡‰ƒ‹{‹€‰—ˆu¢ˆ‡†w†{ƒ†œ‹‰sŒ‚“ˆ„…‘ƒœž‘‰w§~‘†’Š“wƒa”j‚”€„ƒ–~˜‡“{‚Ž„„„Š—’zŒ‹‰…“‰|Ž–Ž•›‡•ƒ”›‹m—€Ž“†‰‹‚Ž”w‰…u‡†‡{‰x­~„ˆ|ˆ‰£ŽƒŒœ{›ŠŠmw|œ–ƒ‰„Œ‰ˆlˆ“tx}‘¢‡wm‚Œ‹˜}‚€u—w|›~„†yŽs€„œ…‰…|‹‚z‡•‡—r–||w{{|€~}Ž€‡y‹Œ“ot~‡}—v‹—q…|‹|†~{š‡Šw›ƒy€ƒz„qЉ{Šƒ}Š—‰rƒx‚e‰m†‚‘z”††ˆƒŒmŒyrx†‹‘™†ƒt…|Œƒ|w’—p‚‡Œ„ˆ‹xŽ}€–w€}‚‚…‹‰Žˆwƒxˆxpˆj€{l|t•}r•€ˆŽ{Œ…‘|‚uw“„†‰„‰ƒ…ˆrƒr…ƒ‘Šƒ€wv‡‡ˆ–€Š‹€xq•’†Œr‘Œy‰–†…†”››ƒv•ŽˆŽŠšy{Žy{ˆ~†™•‘~k‹‘†~––„y•’”s‘¡‚†‹ŒƒŽ˜Ž‹””“††’t‡€‹“€–˜x‘{‡ˆŒ‘Š›‡‚”Š•w’•’”ˆ‘’’Ž‹€†vŠ‹‚}‰‡‰yš‰}˜Œ‡’„›’†˜˜‡ˆ‚“€‡‰Š‘‹’’”††•Š’‡’Ž™„—‡‹‹•’‰‘x‰€™Š‰’—‡’ˆ†‹‚‡Ž|ˆ}”‡”€†t”’–…}ŽŠˆ‡–˜…’‡‹’ІŒŒ“„“†Œˆ”‹‘–“ŠŠ‡}‘ŠŠ…‡‡r…ƒšˆ€‰•Š‘…u…‡†ƒŽ“€‚‹~ˆ‚އ’“Œ…{o‚‹‚˜Œ‡‰††‘‚•Š…‘‚Љ‡‹‹„ˆ”’–‰‰Žu‹Œ”ŒŠ€˜–|syŠ“…‹—‹ƒ’…‚‘—ˆ‡’…Œ„•’‹~„ˆŠ€|—’|Š~ˆ™‹‰”Œˆ›‰’…ƒ{†…•‘‹Šy‰†…„Œˆ’Ž‘ŽŒ•…ŒŒŽ‰Œ—މ“‚€ŠšŽ‹“‹“‰Žˆ“ƒ”‚‡Œ—…{™™ƒ†…Žy˜‰•‰†vœމ‚‰‚ˆŽ‡ˆ„ˆ~ˆ‡ƒ•ƒy†}~ˆŠ‹‡Œ‰‚‹–„˜œŽ‰‹wž‘‹„—‡s€’x}nŒ‘€Š{”–‰wŒ‹“vu”’‹“v‰‡isz‚w•ˆ‹‹xš‰‰’˜“Œƒ••u‡…‘Œ„‡š“}‹o†„’’‰’—¡™‰†Œ{ˆ’‡}‡‡–„œˆ‘‡€~—„uŠ–Š‘†Š‡‡œ‡™‹‰€…‚}…Ž‹§vŒˆ†oœ‹Œ’’žŒ•‰—’‡“’ˆ~ˆ‰}‰†›“Ž•‚’‹{l“’ŽxŽ•‘…‡Œ•v’}•™‡Œ‹”•ŽŽ™–‰‹‘†€‰Œv‰Ž˜‹„†Œ‚ŒŒ‰{„ƒ†ŒŽ‰‘‰‹ƒ€“ˆŠ†“™…“Š‚tŠŽ‹’„‰ŠˆŽ‹………‘‘†‰Œˆˆ‘‘“–ŽŠ‹Žƒ‡…‘~މƒ‹ˆŠ‹ˆˆ’sy|“‘…ƒ„–‹Š“Іޗ‹’”މ‘‰’‡‘†~Ž‘‹{—{„Œ‰Š‹†ƒ…Š{І‡˜Œ‘†‡ŠŠ‘‡‰ŽƒŽŒ‡ˆ‰„‡Œ„‰†ŠŠ…”БЉ‰„”‰†ŽŒŒ…‰Œ’ˆˆƒŽƒ‰“‹ˆŠ’‡ƒ‡‹‰‘‰‘‰‹~Œ‘‹‚ЋЋŒ‹ŠŠŒŒ‰‰‹‰‹‰†…‘ŽŽˆ‡‰†“ˆ|‹{Šoy~v„wœ~{z}€‡‚s‚ƒ†‚xop{x{††u}„zvˆz~k›†…w‚|ƒssv}ux…~|…ˆ††|t{|w{‚xz|€zps‡„…‡ˆp…‡|Šx†‡p~‰Šy}„‘wru…zxˆp|{€~„ˆ†‡Š|ƒ‚‡}ˆ‚|~‚z„rw{}}ˆ|xŒ~y–t{t‚y~{vŽŠ–||†zzu„|tyu~{…€{y…€‚Š{†||w‰ˆ~‡‰|}wŽtyxŠrˆoŒ‡…€|Ї||r…„‡k€q€†t}~ƒ„…„‡gƒŒ{~‰r…ƒ|xl‘Žˆ~y}|‡{yuzzš‡{ƒƒ•Šzz|uty|`Œy…}}ˆ|‡†g‚…†xmqs{y~†ƒy|‡„|ƒ}ƒ€sƒ‡…pvw‚‹šs‹lz€uzyv‰{€‚ƒ€”qvv‘wjz‡|…‡„ˆ|‰‡‡€€Œ|‹€z“yz‰y…–‚‚y‡‘ŠŒ‚}zˆ€…r„x„ª‚†‚‚…‘ˆ„‰|„‡„s{z}‰ˆ‰z}zƒ}‰}ƒ„‡€ˆ|rƒwˆ|u‡‚}€‹Š‚‰y‹‚Š……|†‘……‘z‰y…„tyƒ†y{Љ€vŠ€~Š‚ƒŠˆ}Š~|‘yŽˆ—„_zŒ˜‰‰…Œ“©€|Œ~œŸf•…}€~e”h’}~x‹ŽŽ˜£yvŠ–¹“³‚Žƒ|‹šˆ¨y¤‡q¨dšp¦œxŠŒž€‰s‚®Š†‹€¥‰r”‹ƒ•r˜h†®•\‰y~…d𠲉t§¡ƒŠ}‘¯¹k†yª”v‡ˆ²‚‡Ž¢Š‰rƒ{‰{’“z~˜“†v‚“Žj€ ºƒ}™‡f‘Ÿ—•y™±¯€…wƒ•ƒ¤~ˆ{‡u…~Àvr‚•{vˆs ¡Ž‘zu}’†Žu‚šФޑЙ†w’}¤‘ƒyb–‹Ÿ‹~¥†‚x€y yx„€{–‹Žƒ”~€‰‹ŠŠ™›…‹˜‹““Œš—…‡t‡Ž|…†…‹‹‰‰€’šƒ¦•‹‘†Š–™‡‹ˆ€˜ŠŠ‡‘‹ˆŠ€~‡ŠƒŽmxŒ’wŽ—Œ‡‰vš…š‹ƒ‘‘{——Œ‘Œ˜‰’‡Œˆ„Ž•ƒ‰Œ‰€ …Œ•‹‘‹ˆ’‹‹‰~•—…„„ƒŒ††’„‘„ˆŒŒ‹Š“ˆ†’‹…Š“†‹–Œ”““†šŒ“…ŽŽˆƒŒ‰ˆŒ•’”Œƒ…ŽŒ…Ž’‘…“š„’˜……”‰„|ŽŠ‡ŠˆŒŽ†‹ˆŠ•„Œƒ‘†~ˆ€“”……‘Œƒ•“‹…ƒ…vy‚i’y||„‡}“І|—’x‡‹}t‡}xƒ€ƒ…rŽt‡z€‹‹|kŽ‘„~k~lq…†‚„†Žz‹~…ˆ‚„Šd‡‡ƒƒ‡Š‡‘‘Œyr{wŽ‚ŠqyŒ‡u‚|qžn‚‚ŒkŠ~Œ‚†Žn~‰€€kx†…|‰†y€’r‡‰‰Œ‚Šs~€zj{|…„†…x‚…›u~Œ}~}“yƒ‚‡¡|‹…|m{uƒiš}‰„ƒ‚†t‰yƒy~p„ˆ‘}ŽŠy‚„s†wƒ‡‰t…m„€œ„‹Š~sŒ‘~Šux‹vv…r~y……|s‡Šƒ‡†Žzƒ|†‰i‰ŠŠ‹ƒ‚‡ˆzŒŽƒ~‚y‡€Ž|Š|Ž|—ކƒx„yuŒ’„‚r{……‘|j‹{‚ƒ~†‰‚Œv‚yrt‚‚ˆ‰‘Ž}|‰‡ˆ~„}Œ‚†™}r}†‹‘€}o{‰‚}w…tšiŠ‚m€‘ˆx—‰†|Їwk|‚‡xŠ€…‹mŠvxu‰Š…Œq‡†ƒ{y„„‚†ˆŠx…zµ“ˆƒ˜€y‹yŠx‡„~~w{vŠy˜…y…‚Žzxo†t}x}‚‚†tŠŽŠ•~…}y„‰Š~„sƒŠ}‚€{ƒ‹w“|€q‘‰„‘‚„€yz’v‚w‡€Š‰Œƒ~‹…xo…†{z†yІx„†‹Œ‡Š„Œ’„€Œ‘Š‹ƒ€‚†Ž€t‡‹ŽŠŒ‹ŽŠ‡†‘ŽŠy‡‡‰‰•‘–‘ˆˆ‹ŒŠŠ„‚}“‡Š†‡ˆŽ’“vuky“‡†—€Ž’Š—”}•Œ‹‘‘‘‡„ŠŒ“އ†Š–‡„‘z‹‰ˆŠ‹„†‚ƒz‰—…‡˜†‰Ž‡‹ˆ‘…“‡ˆŒ‹„‰†Ž…‘‰‘Š‹„Œ†ŒŽŽ‡†ƒ‡ŒŒŠ‹‡‰Š‹‡†ƒŽƒ’Ž„ŒŽˆ‘‹Œ…‹‰‹…‹ŠŽ{‰˜‘Œ‰ˆŒˆ„Œ…”І‰Œˆ…‰Œ‹‡Ž†Ž€†ŒŒ’Љ€‹Œ…ŒŽ‹y¢„‹vŒ‹‰Ž†‡ˆzƒƒ‚r„{„}ˆ}•‚Œss‡{’ƒ‘Œ‡”Š‹…³ˆŒŒŽ‰”–Œ†ƒ‡zr‡‚“Š•ˆz‡‹“ŠŽ“~ˆ…Ž™ŽxŽ†ŽŒŒ‚“‰™‚„p˜}Ž~{–Œ’|Ž—…‹œ™Ž}‘†–†Ž„“‹‰“ˆ‰‰‚œ‰††w˜ Ž˜ˆŠ~‡‰…r”ˆ|wŠŽ”ˆŽˆŒ”‡›”‚“ŽŠ”’†ƒ†…|“‚•’Œ†ˆˆ€zŽŽ€„‰Ž†ƒ†€–›Œ‹‰ˆ‚‰x€{—”Œ”Š‹|“‰‰‡u—“Ž„€€{}Ž‹“ˆy{€‹Œ‡ˆ}š€‹†z‹š“‘…“w‰Ž‰ŠŒ–…’‚‹šŽ~„u™†”ŒŒ“ƒŽŠŽŒ‰}•ƒ‘‘Šwu‹s‡~Œn…Œˆ„˜–„‹ŒŽ‰z‘‹”ŒŒ€ŽŒ‘~—ˆƒo€Ž‚w–—‡•Ž“‹…†•„‰—q“…‰‰ˆŠ„š|Œ—œ‹{“‹Žw„ƒ€Šy•˜™{~Œ“—”“‘¡ŽŒ‹Œ˜…’v’ˆ‚‹…‘’Št…“w…‰‡ƒˆ“}ŒŒ„|‹|{…‡˜“”’–’v‡ŽŽž~Šˆ|Œ‰yy”†uŽ„žrŽƒz†ŽŽ‘Бޗޒ€’€}Š™w„ŒŠ}‰‘ŒŽŒ‚€u–|€‰Ž…yŽ–¡‘’„”“‡“ˆ‡‰Š –ŒŽ†…yˆ„‚ƒx‡Š“ŒiŽ™•‹zˆ}ƒ~‡˜™›Œ…““•zŠw‹vƒŠ†”‡†ƒ~ŸŽ“ˆ“‡”™„Œ‰Œ‡Ž~„ˆ‘ˆ…ˆ‡|‘‰…~’Ž“†Ž˜˜Œƒ‹{z‡”…„†—‡ƒ€…Љ’…Бކ˜”~‘„‹‚ˆ‰Œ‚ŒŠ•ƒ…ˆ’Œ‡Šˆ€Œ‚†„€’š}‘zމ€™‚z‡ƒˆ‰‘Œ‰‰†ƒ’†’yŽ‹ƒ‰€‡„‹‘’‘ƒ…Š…•…‘…‘~•w…€x‹‰”€}‚‚—‚„€‚u}yv…މ~‚jy~‰„‘r…~}ˆ|tƒŠ}€ylpp‚’Œ’„Š’’tš†‚Œƒwu„…’yr‹qspƒŒ„Ž•m‡w‹r„sžvŠ~t¢›…†}y|—{skqo‡w˜ŒŽˆ—ot„‡Œ„†uy~w„z{„Šl„…¥–Š~}vƒjŽ‹}ˆ|…‚ƒ‚t…^‹€…†‰€vmpxƒ…ƒŠg‘†|‡‚}…€w‹s†n•‰y‚~r†}ˆ~‹|’zy‚~z‡y‚p•€lyˆ{€ˆ‡…zu{m•†m‡t‚’p€†€‡†}…x„x€‘†{—}‹…€pƒ€x†ˆ™†{ˆŒ|ˆ…‚jŠ}€’†ƒ‚Š—p~wv‹€…‹‰”z€r†}xy}„„ƒŒŠ‘~vs}’Œqw{~ˆz~w—f†…œo†„Œy‘ˆŽƒ}Šj{|„tˆ…{ƒl{vŒ„‰‡ƒ‹j‚~lzŒ‰‚}Œu‰°„‰‰ow„v‡€x„…„‡ykxsŒs†„~u…‚ˆ‚…u…r‡‰€‰~‡Š“ƒ‹}vˆˆ~{~w|~…}ހމ†tw„‰‚•s~|m‹€ˆt€†ƒ…„†~~p…ƒvu…rvnzŽ„…zz|ƒŠ}z”z“ˆ~‡„}t’~yvŠ|Žk‡‚|…ƒslw…}v•€‚Ž€‘mux}x‚’€ƒ–…Œp‘†v|„„|}„ƒŠŽ‡{tpy~…xƒvv€ƒs|„|’m…v€•f…Žyyxo|†„y|†€‚€r€w~„ƒq|~‡lz‡xyyƒ†u}‡¢{}ˆ~zy…x‹…u€z…„vhxr“n†|zƒty}‚rsz€„|ƒ„•†xŠ€‰‰u‹|x€{†Žw…„{‚‹ƒ†z|skŠ}‚orŠxz‰{{Žxˆzwƒƒ}ƒ‡…†tƒƒu{“uŠ}„x€{z‹…‡ƒ’‚‚‰—Œ“ˆ—”’’šˆtƒ‚’‘”€‡Š‚Ÿ’“Œ’™‰Ž‘Žš“‰ŠŠu”x‘…}“„…‘‡Œ€”—uyŒ‘w•„“ˆŠ†“Š˜‰š‹ŽŠŒ•˜‡~–ˆŒ…‹Š‘Š˜€•Єދ’‹†Š~y‹•†…•‹Ž†…Šƒ’Š‘‹€‰Ž…ƒŠŒŒ„Š€ˆ‰~Œšˆ‹–€†“Š’˜‚Š”~‚€Šƒ…Œˆ†Œ}‘‰Œ‰‰‹…Œ“„Ž–•†”„ƒŽ‹‡ŽŠ‡‹ŠŒ‡yŒ“Ž‚ƒ’Œ‹‡„Žˆ•Œ}o‹Š‹—|z‚y|’‚r|€vt’{u{~ˆ•ŒxyƒmŽ|€y{…|€|r}wicpx|mk~x{{v||yƒxx{“{‰wvz…„vwy}‡€{yƒqq…tzx|{|„ƒ{‰zx{lu|uxsz€u||u|ƒz…€{|vŠzzw}{}{Œzzv~~|ƒ}w{{w~€u‡}~v{~†ƒx|ƒzz}{pz}|u~|yn|{}wzƒ€zƒ}x}zr…t€yy|{}nx|‡}zz„y}€‚‚ƒsv}}uz‚|uwƒz~kw|{~}|…~ƒy„…“v„€ƒ~|„€w‡’y|y|‡„ˆw›}}’ƒ{„}sˆyzz‹•ŽjЇ€Ž€{†‹‰~zŽ|ƒz‚v‹vt~~v…ˆ‡€‹q…‘‘€wk{|„„€wŠŒ“‘…wyuwˆxq‡†x‰€•kŒ€yŽj†zƒ€Š†{‡€wr|{{‚‰ˆ…„rz|ƒ—„†h€}~q~ˆ„|††‹wƒ|¥‰ƒ~w„w}“y~}~lyyŠvŽƒ€x‡y€|Šy‚t…~†…‡ˆ{}{yw‚„{ƒ|ƒ~‹‚€}Œ†|{Š}zr€}‰rƒ†x„{ˆv~z~ƒ…ІЅz}‡ƒzx‹z‰zІ…†‚‚y~…{‚€~Š™ƒ‚І…v|’ˆol„„މx†s‚„–‚|tyvq{~…—Š‹„‰}w„ˆ‚„ˆ‚‡~‡‚Š‹‹š{y|‘„…q}Œ‚zzv—l‡†m‡…‡{…ŠwŠ}p€†ƒ~Š€ƒ†|o†}ƒ}†“ˆŒ€ŒŒ„‰}ƒy„‚…‡}…„¶—€Š„}€~‘Œy†€Š|z~}‰~–‹„}€}yozŠ€†ƒ„…}…‰…‹z„‚~yŽ„ƒ†}Š„z†‰‚†ˆyŠ}‰v„ƒ’ƒ‚‹…zކ‚€‘€‚†Š‡Ž‡‰v†‰{z˜y’{v‡x|ˆ‰‘‹ŒŽ‡ˆ‘Šš—j“†”‚m‡‰‰•{Š‚‘‰Ž’—•Ž‘ˆ™“‚€|ˆ‹„}›…šx†}a˜‘}Œƒm†œ†x„“i|y„Ÿm„‹‰ž•ˆv’†“z€„’|ˆ†•€–†ˆ‘z‹‰…„’u€Œyt™‰‚q—ƒ‰{œ®’“w…„”ƒ„Œz}Šˆ}ix¬‰v–˜—°ˆ ‹pƒŽ…€’¦o”z{„}“‹’†~…‡ˆ€©t””¨†z„ˆy‰’£‚—|ŽsŠ‚‚ku‰—t–ƒˆˆz…„r…z…‰l‘}ŒŠ’¤†€‡|’‡{Ž†Žž•„†‡•Ž“y‚v…“~z˜‰~›†|‹‰‚Ž}€†ˆ€‚^y‡…‘‚ƒœ‡„y…‰‡}~oƒtp„ކ‰ƒŠ†‹…ƒ†‚†~†Š‰}„ˆ…‘xu|‰ƒˆ~pƒ‘}ˆ†tŸkŽ„„wj“ˆ‚‚}‹€uƒxm~|‰|w„“‹n‘…|ƒ‰—†uƒƒ{r{†w‚~}‰x†~ª’€‹‰{ˆy’‰‚‡Š”Šw†{|uƒ{‘Œ‰‚ƒyur~vƒ~x‚‚‡‚‹„€‘{wwzvˆ‹‡„„‡„‹…ˆˆz‡Š‚uŒ…~{‚~x€w‚€‰†……„{~}rކƒw‰y™“•{’sŒŽz~‡‹Œ–І‡šˆ–’Žˆ“†…‘ˆ€s††™yŽ’’‚’}Š›µ›Šƒ„–š“•ˆ‹ˆŸ†…„‰€Ž“ˆŽ‹…Š‚s‹vx€x“˜Ž‡ˆˆ‘އ”……•†Ž‰•”‹‘‹†}•Š—Š‚š†‚ ‘Ž–‚Љ…|“š…‹„†ƒŠ†Žˆ‘‡‹‡ŽŽ‰ŒƒŠ}’ŽŠ‡Œ•Ž…›”†„†ˆ‘Œ†’Ž‘’‹…”ˆ‘‡ˆ‹‹’Œ…’–Œ˜ž‰‹•{Š‹“{Š’~—Š“†•—‰Œ‘’…‰‡|„†‹zŒ˜™†‰‰‚Œ„ˆŠ{€ŠŒ{„’‹Šwˆ€{‡Ž€Ÿ‚yŠu’„~ˆ‚†a†}‡„†} Š|”‚ƒ‚o†on†ƒˆˆ‰†„qƒ~†‘|‹|…|ƒ‹‹‰zvt~ƒ‚މo}{wtso‰~ƒi“ˆƒy‚‰Œ}‹uk|…ƒz‡’Љlƒz††ƒŽ…Œwˆ€sy†y}‚Šv……±Ž…ˆ{‹w‘Št„‹Š†u„s{rˆs…•……~z‡v|rr‚…{‚‡…€‰ƒ…„€zx{†Ž|~t|Š„„‚}~‡z‚‰tw€qˆx~ˆwƒ„„ˆu‚ƒƒyŠ‹|‚ym‹†}u‘Ž˜†‹†•†…{Ž|€‚„{„’„ˆ„„€Œ“Œ~ˆˆ˜“€Š“ކ‰ƒŠŽ‰‰‡“’ˆ““‹‘“…††‡{Ї€†‰ž“Š‚’ƒ€‘x’ƒŠ‘ˆ‡ŒŒ†Š““”xŠy“ƒŒ†‡˜‰Š„Š™ž“Ž‚‹Œ“ˆ‹ˆŠ…‹†€Ž†ƒ…”’•‘Œˆ†‹„ŠŒ†Œq~Ž’‘„‚{…’‹†‘Šz|–…Œ‹’ƒ˜†ŽŽŠŠŽ‹Š‚Ž†Šˆ‡‰…‹ŒŒ‰†ŒŠ•‹—x‡Ž‘€Š”ƒ‰‰™‹ˆ…’‹‰ˆŒw…ЙއŠzƒ‰ŒŠŠ’œ•ƒ}ƒy‹w‹zvˆƒ•|Œ‰‚z‚s|Ž…ˆ€m|‡„‹}Љ”Žƒy†€‡y„q†up†|vˆ‘„“uˆ€„}…†yŠ~‹€‰ƒ‘|ˆŽtz{…‰„Šp‚Ž€}~ytjƒˆ‚|j‰w‰‡ŒˆŒtm|„zƒ€Œl}{„’x„Œx…„yz{}€…}†Šx€}¯Ž„~||‰y‘…yŠ‹‰z~y|u…|}–ƒ‚…„}{tu‡†‚‚‚†|…’Š‚€~zz}ƒŠr‚„}Š€‡ކ‚€‡‡}w„Œw”„x|Œˆ€…w‹€††‡†…ƒƒ~q‡€|~~ž—ˆ˜T’ŽŠƒŠˆ‘”Šv•x‹—ƒ‹‹…š~‘}Š“Šwv‹ˆ„‹w„ˆ“ÿ”Ž•‹‹Š˜Ÿ‹ƒ›“ ¤“q…‚™ˆvž†“†€p‘Ã’‡—œˆ™~†ƒ††“€–z›†Žw–‘†ˆ~„„™ ¯›}™‰nžŒ~Žy ”‚†y“„”¦‰†‰…—ˆ…€ŽŒ‚†ŠŠ‡‚ˆ–‰y‚†–•‘Ž}š~ˆ“‚Ž—ƒ‚‚‘Œ|‹¢ˆ‘“|•‘‰‰†|…¡Š•Š’…ªˆ¢•„†ˆŽ‘u‘•‡†Œ‹†’‡“}|Š—Š…Š„•Œ‘†‰•Šš”ˆ“€|ˆ“ƒ{…p’‚Іvw~r|†|uzŽ{}™€}{ˆ’xq}~{jzwƒ|t…{}ysƒ~}ƒpm€rvxpƒzr‰wq{n’|‰~s†…}sxw~†ŒqŠtw„‚u€‰zvr{€zˆztvq’unz~‚Ž…~}{„†~…{„‚v‡z|~„~‰ƒŽ‚z{yކ‰xz„~wy…u…—‹~up…ˆ…Ї„{zw‚‹qv}~†„Ї|yƒtƒyƒ…ƒƒ}…z“v€wwx„€~„z‰‹}‚ƒ|…‹„ˆ‰Œsz‡†z†sw„{ƒ}{†‰‚vІu”yŒƒŽ}‰~‰y‡•}Žx{ƒ„‘Ž‚~™}…„~vƒywŒ‰„‰n{‚ІŒ…†‹||‚…‡‡‹r‚pq‚€~‰Ž‹‰{Œ’…‰yŒ|‰wƒ~Ž—Ž™zzr~Ї‰p{†€r{tjˆ„z—j‚„˜Š“‡ƒƒ|m}yˆ‹„m€x‚ƒŒ†Œnˆ…xy‡ƒ€Ž‰v‰­–‰„Žz†w“pƒ‰†„{r{sˆw“‹€€ƒ{”}zoƒsƒ~‚ƒ‡{ƒŒŽ„ƒ‡uy†Š‡|t€ƒ‡}…~ƒ“…ˆv‰ˆ}sŒŠ€•‡~xŒƒŠx‘‚ƒ…„‚Ž‚xqˆ†vzˆzЉ†ŠŠŠ€|Ž˜{‘‹ˆ„ƒ“~”“}Š‚w›Š”‹‡œ–Ž—…‡…ŽŠ¦Ž–‡š‹”‘’™„ƒ˜™‡y‹ˆŒz…’l}ŒŒ}‹”…Ž“|››‹‘ˆ—‘„ŽŒ˜w€“’˜žƒŠ•’Ž‚˜ƒŠ‹ƒ‚ŒŽŒ€„€Ž”‰’‰Žˆ‘‹‹ŽŒ‹‘Œ††‘~‚“‹„“}}Ž…‡…‰Š–’Ž‡ŠŒ“„‰†‰‡ƒŒ‹Œ‹Œ•’|‘Š|Ž‹‘Š~”†|„‰ˆ…ŽŠš•}Š‚Ž~‹‰€‹˜‡Ž‹•‘”Ž™ŽŠ‡‚††ž…‹‘Œ’‡‹‡v¦…¥™‰|€Žx›zˆm—z‡}†•‚ˆ“„urŠ|€‘¡y—nŠ’tz}z‘ÆŠr…{Œ‹‚˜‘~•…”¢—~•c—€žŠ‡… Š’†z‚‰xxt‹‘ƒ„pˆ‚wzyuƒkw‰zz“ˆ~•k‹‰qv¢ƒ~‡”rv¦€lŽ‚|„y‰ŠwŒ z|w}‡„ˆŒky‰‹”ˆ}|wl•Œ‹}¤‡{ˆw‹–…Š“Xu~€u‰d…†€–„wŒxxmƒ‘w„”x†“x‰«ƒˆuuwˆˆƒ…‡~‚†|†’’¦tˆ’†€‰pƒ|ƒ‚’‚ƒry€z…|ˆ|y‰Ž€ƒ~‚{†‚Š}|‰…™‹~Œ|’z„„„m{†‡…‚…Ž‹“‚w˜Ž„Œ†…qƒqq„~‡Œ{u„uƒ†…‡{}‡~‡…ˆ‹ŽšzwxxŠŠˆo€‹‚v{‡t kƒ…~j‡‚†‡‹‚‚Š{l}ƒ‡|ˆ€‰†lƒz„‹{†…ŒuŒ‡}uz~}ƒ}‰w‚ˆ°~‚†x{‡yމv‰ƒ‡ƒ€u{uv„Œ}€€€Šƒqƒt†€‚†‡„‚{‚ƒŽ…z{‡„~€{ˆŽƒŽƒŠ‰{}x‡}“}‚†ws‰……„w–€‚ˆ‡‡„‰Šp‰‡y{Žw€xŠˆ}ˆ‡€€w‚ˆƒ€Ž…}ƒ|t|u†‘„†€‰‡…†Œ{€|’ˆ€‚‚—u…rt†{}}†‰‰–|oy‚’‰vyx|‡z|‹™‡wuxt’s‰uЉqŽxz“j††yœp~ŒzŒ‹zˆ‹‘ƒm{|}x†Œx‡oxu}Ї‰‡uzm}Š”ƒ„‘“w|…°‡„ˆ–zy‡xo‚~†”…‡suxp…u‰€v‰t‹‹v„s†‹€†Œrƒy‹€‰“w‹†„|„w}‚“ƒ|„~މƒŸŠyuƒŒ€ƒyzs‡’‚„vމ|ƒ’}…{ƒn†…ymxvŽŒy…„ˆŠ’’‘“‰Ž’Œ••„ˆ“Œt…‰‹‘Œ…‹Œ„€„“”†ŠŒ‹–‹Ž–—އ‘‚{Št‹‘Ž€‹ˆˆŠ‰“sx‘’~–“†‰Œ‰™‹€˜’–Œˆ’Ž’Šˆ‚Š–ƒ‚“‰|˜|އ‹†‰ƒ…}Ž•€†˜…ŽŽ…‰‡‘Š‹‹‡Šˆ†„‚„Ž„†z‹ƒ…“‹’އ”~“„—Ž…“ˆ‹‡’ƒ…”‰‰…†Œ‹‹Œ‰„„‹‘„ˆ’‡ŽŒ…Š„‰ŽŽˆ‡ˆŽŽŠ‡ŒˆŠ‰ˆ‰’‹‘†…‹„Œ—‹…’‘‹†˜Œ‹ˆ}vމ’‡ƒ‚˜p–‰ƒ†”|–ŽŽ‡‹ž’ˆ˜{‰‹ƒ‡†‹……Š–‡‹–ކ‰ˆ|{ƒ‚“Š˜{~ˆ•™‰ zŒ‘„‡Žzˆ†„„Œ‚†œ‹–‘Ž™|‹‡‘‚…–ƒ›…„—‘Š”€Œ•ƒ{€Š‚Œ’™„ˆ……Žˆˆ•ŽŽ‹‡ˆ‘„†~’”Œˆo“Š~‡‰—‹‰‘ދހ—„‰’‡Œˆ“ŠŒ‘Š‹‚”‰Œš†„„~‡‚‘‹Š‘}‚‹‰‹‡Œ„†Ž}Ž–ˆŒ‘‘‰ˆ‹w–—‰„‚Žˆ”Š’†t„y‚†ƒ‚„†~ˆv‚‹Œ†‡…˜Ž{‘Š•–v•‰o‚z|‚›ž‰zˆŒ—‰{›ˆ’—Žww•}šm††„‡§–‡Œ’…w‰’€Ž™„†p‘ˆxƒ„j‡—Œ—…ˆ‹‘„…‘†Ž† ‹‚z†x|‰…“”‘‹“‚k•v‰tŒ…“ƒ™…„‡”…ˆl„¡ˆŠŒƒ™ƒ}‚“˜~†u‡‹|ˆ’‘~”„“}†‡{…†“’ŒuˆŽ•’’…{†ƒƒw’ ‘„›y|…•ƒŽ…|‚•ˆ—z‹Œ„€”’ž…‰…Ž‹}ˆy†Ž“ˆ“Šuˆ•ƒ”…‚ƒ†ŒwŒƒ{‹ƒœ‘iŸszo›ŽŠ„ˆ…ˆ‘€xv}„‚–‹†|™„{Œ{“„|~…Іgu„„†…’†‹€…‘ƒ‡€€p„ps€†„‡Šˆ‡‡xЇ…ƒ‚‰~†ƒ‹ˆ”Ž“xwy‰ƒˆ…€qyŽ„zw{užl‘ƒˆk‡†„†‘‰ˆzŒ}zn„‡z…‡’ƒoŠ‚‡‰›Œ‘q†…|oz†{„‚†x†‚­šŒƒˆ}‡y—ƒ~Œ‚‚q}u‡rš€…ƒz‡{p‚v}}~‚„…ˆ}ŽƒˆŠ}z~ˆ~}ƒŠ„y‚‚‡‡ˆv‚Œzr‘€u‰v}†„‚}‡x}„‚Š„ˆ„„„wtŒ†{{…‡†‰…Š€€w…€€†Ž{Ÿ‹‡Ž‹}|€ƒ`vŽv„‡{•…x™‚†Ž…€o|sqy‹„ŽŠ‚}Œ‚}‡…‡ˆŠ~І“€Œ…’Žœ{sz†„„vo€}ƒvŠtŸh€‰i†‘‚z“‡p‡†}l}Ž‘n‚œ~n†…uœ‰Šq†‡v{Œw„‡}‡x‰{´ŒŒ‹ƒy‰z‘~†…˜|†q|uŠ}¥…ƒƒ€žlto€t…}q‚z‰™“„ˆ‘}w|zz‰Š~{‚†˜‚ƒŒ€ˆ‚‹tˆ†ƒu†‘ƒ…‹zx~wŠ‚ˆ‡Ž…€…„~r‹†|xy‹Œ‚{‡Ž‰‹Š†Ž†‚–~‘…‰w•“ƒ…‹‰‰t„•€‡Œ‹‡‘Št„‰sˆ‚„‹–••Ž‹†‹‰Ž‡’Œ”‡Œ‚†’ƒ•ˆ’tyqŒ„ŽŠŠŠ“…‚•Љ’‹Œ™†•”Ž’‹‹†‘‡‡{„†•Š€{†‰‚ˆ“ˆ‹„…‡zˆ‹Œ˜ˆˆˆŽ“‹•„‡Œˆ„ˆ–‡“ˆ„‡”ˆ…Œ’‰†‰†Œ…Š‚ŽŠ„†“……‰Š~ŽŽ“‰Œ”އŒŽ”…|‡z‘”‘Š}‰…‹…‡Œ‘‹‘‡“‹ˆˆ’€‰‰‡„‰Ž‹‘‹„‹Œ„„‰{‹‡Š‹…ˆ}‘„‹Žˆ•š„„…ˆtŒ“‡“…‚…‡’|‡’“ˆtŠƒŠ”—‰‹‹Žˆ‰‘‰‘Ž‹„Љބ•ˆty‹~“ŠŽ‹Ž‡•‹†“‹‰˜‹‘’’…Œ’ƒŽ’}Ž~ˆŽŠ~”~ˆ†Šƒ‰†{‡Š…™‹—Œ‡„‰‹‰‘ˆ€‰‡ˆ‘†‹Œ“†‰…ˆ„‡“†‘‡Ž…‰‘…•ˆ‡ŒŽŠ‡}‰’’‘‚|‰…‹’‰’Š‹‘”‡ˆ…˜ƒ†ƒ|”Š…ƒ‹ˆ‡‰ŒŽŠˆ…“†ˆŽ‹Œ‡Š‰“”†‡Œˆˆ–’‹zŠ‹‹‡†‹‰‘|•ˆ”Œ ”’†Œ’…uŽŒŒŽ…ƒ•‹‘‹‘Š” …Ž•‹‘‹‘Š—˜‹Š’‹‡ŒyІ€Ž‹„ƒ‡„†Ž‰‘u{m‹€’–Œ•…‰’Ž…—’‘•Š’’Š•‡‡Š’}‚—‹‹„†Š˜”‹Š•–„‡ˆ„„ƒ{’ƒ“ޓЇ‰‹“ˆ‘‘“†„~ˆy‰…”|˜Ž‹|ˆv„”‰’Œ”…„Ž…Œ†ŽŽ“—…Љ‹†Œ‹—ˆ‹ŒŽ†‰ŠˆˆŽ€”ŠŒŠ‚ˆ”‡Št™‘‡ƒ††~šˆ‡Œ‹‰˜Š†~“„†ŒƒŽŽœ›ˆŠ—‡’ˆ‹‰Œ|ˆ‹Œ“‹ƒŽ•ˆŽŒ{––ƒ…‚ˆ‡tŠ’…‘‡Œ‰ˆ•‡~‰Š‡t‰{|ˆ”’“ŒŽŒ“ˆˆˆŽœ‰‡…ŽƒtyxŽ‘Œˆ~Œ†—†•’|Ž˜…Ž‘‘x{†‘ЇŠŠŽ€~•}‰ˆ„ІˆŠƒ…z‹‹ƒ–‡ŒŒ‰ŠŒŽ’˜ˆˆŠ‰‡†’‡ŒŽŒ‹„…‹ˆ‹“†‰“„†‰Š‰‹‡Œ„†ƒ’‹“†ˆ‰Š†‡Ž‘“‹’Œ’•‹ˆ…~…‰}‹ŽˆŠŠ‹ƒˆ’ŠŽ•…‰}‘ŽŒ†‘‘Š‘‹ˆŠ‘‰’…‹‰‚Œˆ‹{Іˆ‹‘މ‚„—‡€’‹Œv“€„‚Šƒt†~Œ‹Œ†Ž‘Žƒ†’Љƒ†Š‹˜‘‘Жމˆ…†~Š˜Š‹‰’„’Ž’sxm€‹ˆŽŽŽ‰–‰–‰‚šˆ‘””Ž•x‡‚–‘•„{Œ‡–‚}–‰…„~…І€zŠ‘„‹—‚‚ˆ‹Š‰™ˆ“•—†ˆ†‰Š‹•ˆ—Ž‚†Œ„Ž’‡Ž”Š”ˆ‘†‰„‰‡‹Ž‹ŽŠ…Š‹“†…‰Œ‡Š‡‹ˆˆŠ‘‹‡Š†‰}މ…‹Ž~……’އ•†‹‰ˆŠ…Œ…—ŠŒ‚’’„Ž’„ŒŒ~”™…‚{y‰‰‚~—‹„~›„~„€{Ž}xŒ‡‡ƒƒg|‡„ˆƒ…Ž|…„ˆŠ„„q…rryŠƒ‰‡‡ˆ„†…„Š~–}†}„~‡ˆ’Žxxy}‡‚‹„p}ˆ‚}q„ukŽƒ~zjŽ„~‡†’|Š…mmƒˆz‡—ˆŒ†ow{€ŒrŠ„€vz„€ˆ…x¯™…‰€|x•Š{‡ƒ…~{r|s†yŒ‹€„Œ„{r€tx‚‚‡ˆ“Šz”|yw†Ž}‡wЇƒ~ƒ~†ŠƒyŠ…xˆƒw{‚ˆ{|v}ƒvƒ~‚ƒŠ‹‡|{oІ|~‰~zoƒ‡†‚qvts}š€r‡oyw”~vn€”‹qmzxxz‚j‚ƒuxywr~{l€buw|zjk}zr†zg‡v~tz‹s{xnsy|qz|€vxhkˆ|ys}y}}„}z„}‚q{m~hjzsyn…xqvt€€s~x~p“~yv}|€€šp‚wpuwv…orxt}}i€€€}}twy~€jw{„}|z}kqyzw|ƒupzu‚zy‚yv„xuvxzƒsyyxwz‚{pv€„{k~}…v}{Œy~wu{npz|zss}||xvyxt|xˆ‹€{~t„Ž‚{vxwІu¯Š’““w”mc•~n~•À‰ŽŠŽ“…–‘†Š’‡|˜–”~ˆ[’€’—І›y“–Ž‘pˆ‚p‚ž†“Ÿ‹s‡Ž„w•ƒ–~‘‘Œy‘’”‰—šˆ”€mŽ{ƒt—“Œ‡Š”‚sr‘‚ŽŒ•tƒ‰¡z„šŒŸ€‰j‰‘›™‘Œ”šŸ’nŒ’}q“o‚“‡‡‡‘}wb‹••”ˆ|…މ‹Ž˜Žpyz~‹Œp“Œ’wˆx}t€Œs‡Š‰z—‡‹“•……‹‰†‘’™“}r‡‹“~‡‚ƒ†‰wd“s}‰yЇ€‰p‹w–©Š„w€‡ž{€w”z‡††~‹|‘‡|‰ˆv‚|w‹{~fƒŒxˆ˜‚ˆ€Šˆ„‚“~nnrƒ‰yƒ‰‚ˆˆ”z‹m††|‰z…‘‰z~‘kˆ~zu}Œ{†—€n„ƒ|~ys•j‚yˆk“ž~yv”htœ…{jzƒ}‘wƒ†Ži†”„ŒŠ‡q~~‡g}„€‰Šv†}…s©˜„‰†ŠyŒˆž…{yz~wŠiŸ‚zƒ~…o{t‚nt‚}zˆˆ¬‘ƒ†„i‰x}‚t„g‚‡”ˆ…ƒ}h…›v|‰sz‚~q~~|¡’…b†{vŠ‚“‹‡€z‘rk“…Š~ƒ‡~†}|‡tƒ†€{{ˆ“|–x‰yxˆŒpz‚|‹‚€Š}uЇ}‚„‹o{oq{‚„ˆ„Œ‡wv|‹‰y…~‰~Ž‹ŒŽ|yvw™”‚Šo€……{‚vrœi‰}jv|z‡–Šƒxƒ~l{„†u‡„‚~l€l‡“ˆ‹s‚‚}z„€„‡Œx‚‚ª–€…{q}w‹Štޗއ‚~ryr‚Š•{€v}“s‹m‰rŒ…€€|†o‘¢Œƒ††{|…‡‘u{qƒ’‡|‹ŒŠyws…~’~ƒvŒt‡{ЇwƒŠˆ†‘ƒˆ†pqŽ„~Ž}‰…Œlr°}ƒ–™­ƒ“ŒŒnš…s’’²ŒŒœŒ”‡”‹‹Ž‹‚‘‡”‚ŽŸ‰šxr‘‡›“‰‘žŸ”‡v‘‰wy±r‰“j¤¡†‹‡šˆ†“ŒŽŒ‘{›€‰ƒ‘“ˆ„o–Š“Šx›—‡‰‘‰Žg}—ƒ“u‹|™r†…–‚Љ‘p’n…ދВ‡—›’‹y‚Œ…v}¡š‹ƒx–{„mv–—”—‰™‹“‰ˆ’Œ•Šƒ”v•}˜y‘š{n‚‚‚j‹‚ƒžs‹ƒª~—‚’†Œ…‚…ƒw•†Œ ’Œt…w“‹rƒŒŽŠ†t}o|‡s©€…}}~››•Žƒžˆ‘ˆ‹€Œ’x’Œm~‡zv}™Ž™€“y‡”†…€‘~€“Ž‹–††Œˆ‡…q††•…†˜‚‹ˆ‚qvއ~„Š€”Œšˆ›ˆ—‹ˆˆš‚t’‡Š€‡‰y‘–˜€…~k–zŒ~y“˜—qƒŠ|„’‡†•…€w““}—‰~kœƒ“„¦Ž•‡œ—•s‡z†”o}’ˆ¡|އЇ–Š‰ŽŠ—‰œŠ…Š”††ˆ‹Œyu{•ym„—ˆ˜†}„„’|{–k”‡„„|~œ„…†˜“|xˆ¥~‡u|ˆŽŒƒƒyŠ}•{‚€Œk~‰“‹†ŽƒŠ‡s|†w…€”|†€–€wŒzŠw|€ŠŠ‚†k{…„‰•…™’{}•†„‡ƒ‰r„spˆ€‰““‡‚tˆ„‡„‡ˆ~ˆ€Š‘މ‹xuv„“‚‹o{ƒ~tu}s›k‰…y‘l€€vƒ–Œƒz‰|kx†x†ƒˆ„Žm‰uˆzˆŽ‹‹Œ…u‚‚„„ƒ††rŒƒ²›~ˆ†w}}Œ‰s‡ŽŒ|}zwu‰w•{xƒ{yo…uƒ‰~ƒ†s|”‡ƒ„€„}{ˆ…‘{€n~ˆ~„‡„~{†{€‡‚zu”…s}†‚}|‹Œ…Žˆ€ƒŽˆ{Œ~uo…†‡‡~Š”}–˜‘†€y‰•„~~†|™„…‡‚v†tyŠ…†n}~ˆ‰……†‰z‡wŠƒ„ƒqto‰ƒ‚Š„†‚ƒˆ‰ŠŒ}Ї‰Š}Ž“v{{ƒ†‚‹p~‚Šv„tœmˆƒ~j€‡‡Œ‹…‹ol|†‡{‘ЉŒŒowƒ‡‰|Žƒv‚ƒ€uz‚|„|x‰­ ‰~}x’†‰Š”|}||t‚v~‰„ƒ†‰xwqƒt}Œ}‚‚Œ†”Žxzyz‰ƒ~o…†„|~~†{…wƒŽ{u‡Žw€‚}~‘€tƒyˆ€ƒ‡‰‰‚…zoІ}uŽ€–”ˆqÃsr|~•›Ž‹‚•…‘~‡›ˆw‰xz‘¥Š…yŒsˆ”Œ‹¢Ÿ…sޏއ„s‡‰–›s”š‘…tr…—yyR“m‹‰v–vˆŠŸ…{|†Š€Œˆ‰m™|”s—y—t‘ƒ‡€}z€qŠ„‚x‡”Ž‘…‡‘…t…Šs—“ަjšˆ”™‰z†ŒzŠx}p—£ª|‘’’—†uq–’’zŠŠ…†~”šl‡€zwz…wx‘Œruƒ…Œˆwƒt€¡•t€ƒ‰…ˆƒ†™t„ˆ‹˜Š‰„z…i……sŒ{†ƒ‰‡‹„x—‹~Š~•‰‰‰Ž‚‹‚ƒŠŽ‡ˆŒ’–ˆŽ‰‘•„‹†‰u‹‘‹‹‹‘ˆŒˆ„~‘’…‰Š‘ˆ”‹ŽŽ˜†Œ|‡€†ˆŠŠŒŠŠ‹‰ŽŽŠ‰’v|¨ŽwŒ‹ŒŠ‹ˆˆ“–‚’‘‰†“ŽŽ„‘‘“…Œˆ‹”Љ…Œ‰–އ}”|†‘‚‰Ž€Š‹‹˜‡„•‰‚ˆ…‹ŒˆŽŠˆ‹Ž‰‰‡Ž‡‡Š‹‰‰Œ…ˆŽ’Œ“†•ƒŽ‹†‰‹‹Š‰ˆ‡Œ”„‘„ˆŽ‹Žˆ–Ž…’ŒŒ‰‰—…ŠŠ‡’‹†Œˆˆ‹ˆˆŒŽŒˆ‹†‚„ŠŠˆ‹|†‰„š}‰„ˆ€–ˆ—‡‡†ƒ‹vŒ…‚€Ž†l‡{ux‘‹‚|p‡…ƒˆ—tˆ‘x‡zƒ•†…€‰|m…wtoˆ~‡{އw‰ˆ‚‡‡~{w‹ƒ…†ŒŽ†vp|‹“Š˜o}ˆ}…‡wv”{…~z‡‘‰q••v|„uw‚{˜‚Š„‘r|މ„„‰€p‘‚x~[‡sŠˆˆ„ˆ£ŸŒŒx’‚‡|…v‡Œ‘‰z‘|x€‚N—…zy~”~‹p‚x€}sr‹qˆª†ˆ€€tŠ}{†‹y|vŽ{›…|‹zx…•‘€“z…Šy{~y~lœŠ”|x€}‚…zzއzo}…h†ˆŠ™€€j’…~z}y€{Œ~wtyw|‘‚~}{…™†yz}ryz’{hŽy…}t€||r‚w„vm|szwt‚~€€‚xw|w„uq€Ž††~zxw…Šp‚ox‰u‰‡‚yw|‚‚x}Œrxt‘wr€{€‚‚|‹ƒ‡€…wŠƒzˆwz{„„~ˆ‘||~Ž‚Œ}€ƒ}y{„t‹š~{t‚‡…ƒ€…x|Œƒru~€…‰‹‚|zƒ‚x’wƒƒ€Š}‚}y††twˆ€€‚Ї‡~‚z~ˆ…|ƒŽ|‚„~xx‡}u{„~€{‚Šƒ…wЉz‚~‰ˆ…‚‡€…y‹…‘zŠŠ‘’‘ІЉނ}ˆ’‹—‰€Œ’€„Ž‹†t‡‹ˆŽŽ’€Œ“ƒŠ†Ž‡ŠŽ€“Œ–Ž‘‹‘‹‹•‰“‰€ˆ„‡ŠŽ—x†‡Ž’sxg€“Œ„ŒŽŠˆ‘–—ˆ“‘ŽŽ“ˆމŒ‘•…Œ”ˆ~‘ŒŒƒ†x‰ƒŠ|w‹’ˆ—ƒ{ŒŒ„‹’‚•‡—ŒŽ‰‘–†”‡Œ‡ˆ”‡’•ŠŒ“ŽŠ„”‰…‹‘‘‰‘…Žˆ†ˆ…Œ†™’‡€‚ކ‰ˆŽ‰‰’†‚“Љ|Ž‹‘ˆŒŒ~ˆ†”Œ„’ˆ‰ƒŠˆˆ‡€‡…~‘ƒ‘†“‘ƒy‰†z|yur~Š{t‚†zz™{z|y˜Œvw€w€xql‹}y‚zxŠ|v…n|~y~{n~|€ztˆ}w‰~xx‚ƒŒxx{Œ„„v~{z}t~mw…~v}|yw}‡€ˆ€†vƒsuv…urw{‚†x…|s‰|‡xs„}vz‚€vƒ—~yx‡‚wƒ€€vv}„•‹…y{€‚}Š€„v~€{uy}w~ƒyr|€€}w{w|{|ƒ}Œyxry†~ry„‡„ƒyx{~€‡Œ€|‚ˆyzxƒx€‚|y{}{~w‚‚‹~‚ƒƒ„ˆ|ƒ||‡x—zˆ“›€~Ž}}‘„†~‚ˆ‰£ˆ†v„“}€•w‡~’‰ž£‹“‡Xo™“rŒ|‘{zƒ–Žš¨ƒ‹ŒŒuzƒj€˜‡x‚–}Š“…†y•~|Ÿˆ€ˆŠ¡y…~†—™…†‡š“ƒŒŽ„}“„v~\zyŸvЉƒ‹“›‚“’~„„„lw…uƒŠu|‹‰ƒ••‰x€„’i•…‰}rSŽŒx€qˆ……‘’}~”tsl††ˆŠ†Œ|ˆz€ƒxƒ‹‹€eˆ‚‡†‚…pˆ…‹|‚‡‹„¡€‡‹Œx{…†„‡{‚ˆŠy‰Š€ƒ„‡~v‰‡‡rˆ‚‘‡’v‹“Ž‘„’‡ŒŽ˜’‹Š‰‚u‰˜¥‘‰‹œŒŽ‘†œ†y…ƒš„“‘‰…Œ™„Ÿ”Œ•Œ‡˜„ž’Š€zƒ‰{oœy†—wž““„Ž„…–ƒy‘Š‹‹€~’……“‘ŠŠn‘}”}u—ŒŽ•‹‡’”–Œƒ†u€’Œ™‹‡‚‹‚“ƒ€‹yˆˆ‘•™“wŽˆŠwŒ„‘‘ˆ†‡•ŠŒ|p}’Œœ‘ž‹ˆŒ‡ƒ•wŠ„‰ˆ’…ƒ†’|‹~x„‰•‰ ‰ˆz‘‘‚ƒ‹x…‘•‹‹›Žu„‚xˆŒŽˆ†‡˜twŽ}š…sƒ…}‚’™Ž“¡¦‹›u‡‹‚ŒŒ••‘x„”š‘ˆІ‚z‹•‹~|¡ŒŒ—xš‡¯‘Š˜•˜œ““›”§x†vˆˆ†Š…|•ƒ‰yr‡‰––„•‰Ž†‰”‰‘…˜ˆ™‹‹™‹•yu•ˆ’Ž{ˆ‹‡x—‹”Œ“Ž|Š‚|—•‰‘‘ŒŠ‚‰‡…‘Š“ˆƒ~‹‡œ…‚‘‰…†ƒx†Ž‹“–‘„‘†Šˆ”†Œ•ƒ…ˆ‡‰™†ŠŒ™ŠŽˆ†‹—‡”’‘’€‹‘†v„…†Œ‰ŠŒ•‚Ž€‘}•”Œ†‰¦œˆ€Œ˜ƒ……„‡–‰…‚‚x„~Ž|†Š†œ„€‹Ž‚zz…€’…ct‡{„ˆ‡ƒ…ˆ‚v—„†p|sr|€‚‹Œ{Œs‚zƒˆŠˆŠˆ€†ƒ€ˆ„‹Ÿzw{ƒ„ƒ‰€o~‚…}ŒuœhŠƒ†~jˆ€z‡‰—{„xm}z‹{Š…ƒŒ‚m‚†…ƒ’†r‡‡x{}w…}ˆy„~±Œz{‚{˜ƒ{‰‚’‚s}w„Œ„„…˜wtq|w€{‚z†}’…Šz”}|o{v‹~€…ƒƒ„’€€“‘}“{ˆƒ…uŒŒ™ƒƒ‡…nŽz‚xŒ~‡†‘ˆ‚‰r‹‡z{yŠŒ„†ŽˆŒwŽ}Œ‚~ˆˆ~˜‡}‡Œ‚zwyƒ€‹„‡l}†‚†„„Ї€xˆ‚ˆˆƒ€p„toˆ‚ƒˆ—’€x‘‹y„•z}Œ„ƒz†Žv{{…€ƒ‰ŠoŠzuotŸm„€~ƒj–•zŠ}–zl„…{‰„†…lƒ“…†’‡‹{‚ƒ…xz…x„ƒ{ˆx³~Š…|‹zŠzŒ~}|r|uŠu‡‘ƒ†~…syq~uz†‚‚~‡|‹•…‰‰‚}zzˆ‚~t{‚„‚{†…y€}q„}tŽ€€„~†Š‡y„yŒ……‡ƒ‘‚„}p‡ƒv“‡˜€ŠŽŒz~•‹Š…yo{v€ƒˆ‘‰–Œ‘ž“‰„ˆ“‡‰{…„‚‡º‰“‰ˆy’—†ˆŠŠ„r—ˆ‘••†dˆš‡“ƒ•—p…Š„•˜“…‘‡ƒ’|‡Ž‡•zŠ}›œ†l‹y†…|“t™“Ž…”™‹¡’Љ…‡’nŒw”‹Ž‚†”„}…Œ”–Žx”’Œvzƒn~𛑉—‚x€”{™Š‹††‘ˆ€z™ˆ~–~x˜…‰…‚—r„”ƒ„‚Љ‚†Ž‹”z“w€z›Œ‡”“Ž‹“q•‰‹«‚‘”™|†‡|“š‰z•~‚Š•ƒˆ€|tn|“Šƒvuw€‹„ywˆz†~ˆ‚~w•yxx†w‰p‹~€}|~uoy…zq‹…ˆz…m}uy}u†~€Ž€†}|Ž{x{t…}{tx…‚„Šxqpq}z‚ƒtz„kyŒnƒw€†e‚‡vy„zw|~qv~‰‚{w€uxqˆ€„~w€y…v}†ytz†€wt„˜z~}~zz„zq}wt€rowrŠou}zs‚zl‚ƒtv}…„z€‚’{tˆ}{}Ž‹v{ƒˆ}|z}‚w…{„ˆƒ€~}usp{}qtˆw~{‰w†|w†Œ…ƒ†…‡w€‚tyˆyЉŠ{‡ƒ‹ŒŠ‰ƒŒŽŠ~”‹“Œ“€‚„†s„‰‰‰‘…‰Œ…†Š‘‰ˆ‡‚Œ‰—ŒŽ•Œ…†Ž‰‹ˆ„†…ŽŒ‰‡‹Š†Œ‹’tws’~‘Œ…‰ŒŠ—‰Œ•’Œˆ—‰’’’‘‰‡‡“Šˆ‡‹“ƒ€–~‡†Œƒ‹‰~xŒ—ƒ‡˜†ŠˆŠ‹“„’•ˆŠˆŒŠŠ„†’‡“‡‰†Œ†‘‰•‰–ƒƒ‹ŠŒ‘Š‹’‹ˆ…†’…“Œ‹ƒ‹ˆŽ‹‘„Œˆ’Œ‘Љ~‹†‰Œ‡ƒŒˆ’‰‹Š‹‡ˆŠˆˆˆ‚‰‚Š“ŒŒ‰Š€‰…‘‰‰ˆ{}ˆ}x†…“‚„ƒ‡…›ˆ€Šˆ€v|v†‚‘ƒŒh|‚€ˆŠ‡~€ƒˆ}v‡‰‹†Šp‚rqŒ…‡’†–Š…n‘‰‡“…€{„ƒˆ€ˆŽ…Ž”~q‡Š‡‰p‚„ƒsut¡lˆ}Šj‘“†|…‰‚{l~†z‡‰‹…oŒy’ˆŒu†„{|zŒ|‚‰u„„¨•‰‚~|Œx“–{…‡Š†}€q{s‹v‰‡‡~…|•€~n|tv‡‚‚|†~Žˆ„†‹z}ŠŠ}„…|}ƒ{~„‹€‹t…‰~o…}€Œ{|†„€~{…xˆ}€…‰„‰‚‚~n‹†~qv„‰u†ƒ‰†yŽ{‡~‹ˆ}}•Œ}”†v€{‡Œ‚z‚oƒy„†vˆˆŠƒ~u‰•€ƒylƒpq~އˆ…tމo‹ˆx~m€€}‘ƒ‰|‰…x{v|†Œ‰m†…~}ˆr›s…‚~p›Ÿƒ‚}’…~–…yjy€‰zŠ€‡”tŠ‹Œ’‰sv{„rx„„„‰{…ƒ§‰„Œ{vˆs‰}ˆˆ†w‚xq‚r†‘‚‡Š~ƒq…€xŒn{wŒƒƒ‡‰‰Š†r‡~t„€w€z‹}ˆ‰‚z„Œ~‚~ƒ‘|x€|x‰|z|ƒƒs~~€ŠŒƒˆˆ~y†~oƒ€Ž~pˆ‡„}}€y{}sv†|~’~ƒ{|Š™‘}‚vp€†|o’{w‰|v|~tƒ€}Šuuˆu‡xp‚xxŠv{{s~‚Žy{}މ…†{v€Š}r‰vyŒ€rŠƒ~ty…w€|vzq„wr‡ˆ~‡…‰u|•}‰ƒ‚Šv‰{t‚}zs‰ŽŒ›€z{xއ„€k€Ž…wp…y”œss„€‡…|‰…ƒz‰sy~|ˆ•zw€ˆo†{ƒ‰z‚~‡{y‡}€swu‡u‰‚‚†‚~Š|„†Œ‚~ˆ‹ƒƒx†}sƒ„~‰x‡„vˆˆu‘zŒ‰ˆ~ƒy‹|’v‚x‡Œ‚‡Ž‹{‚†”‹—‡’’}~Š’‡q€ƒ—’”z€™ŒŒ†˜–‰–‹‘Ž–Š…‹w”|‘|‰„Ž„”††ˆ„‰”vuŒ‘v–‘‡Š‹†ƒƒ‰™š‰™Œ‘‘˜Œˆƒ‰™©—މ‰„•| Œ†–Ї‹‘}xŠ”€†”…„‡†ˆ†ˆƒŽŽŽ‡‹‹ˆ…€Ž‹ƒ}’ƒƒ••‹’‰}€Œ‡“‡–‡ˆŠ„ˆ†Žƒ†Ž‡ˆ“†‹‘‹Š†ŠŠ‰‡—‰•“†”z“–‘‡Ž„ކ‹ˆŠŠ††„‰{Š‹€€‹Œ—Šˆ‚І‘’’Š‹ŽŠzˆ‹…“ˆwŽ˜…“Ђޕ†Œ‡s…‹‹Ž„’ˆ†Ž‘†ƒŒ‘……Œ~‡†Œ’˜Ž‡‰„”‚„•ˆ…‰‡}ƒ†’’tyl€Ž†ˆ‡|‹˜‹‚“”‡—”ŽŠŽ“ŽŒ~‰„†•…•…˜Œ‰ŠŽx•‹„™ˆŒƒ„‰”„Š…Ž€‰‰‡”Љ„ˆ‹€’‘ˆŽ”‡‹‚–†‘…Ž…ŠŽ‹ƒ“Œ€‰‘’‰Œ‹“‰’Œ“‡{Š”‡ƒ‹ˆˆ‡‹‹‚’”ŒŽމЄ‰‚ކ‚ƒ‘‹ˆ‰z‰„…‡Œ{{y‰}‘„v…||•‡u‹‡tsm}xƒy}mŒ†ƒy|‰Šiž~}~|{mŒcp€z~p†Ž{‰vƒtx{u„|z~yy„Œ‡€ntut~…}iƒ‹|izŒ}’f„{dˆw}pu‰‚~„„mzzˆ}}{…†kˆt„‘w€~…x…}ƒp„{u~ƒvyƒ¨h~}Œtx‡xr‹z‚ƒ€w|ynxvtno{|‡lxŒv‡tˆ„}‡€~ƒ‚}{‹vqw‚}|uw‡†}‡|„ƒŽ}†zqtpu†q…r{o‡ˆŒ……s„€{~“‰†z}u‡„y€‹zƒ€w•‡~x„{w{zuur€†}“„ƒ‡ˆy‹{x|€‡€†wx‹}~Žvxy}…‡z‡†{}{}}€vh|‰‚‹‚Š}„|‰„v|u€„x~Œ€‚tq„yˆ“}q}Œ‚l‰„‰tˆ{—|hƒ„qu†ˆttˆx|—z€„sŽqƒ{qxŠ…‚}|ƒzv}u“}…€{}t{¡Š{|Š{‚~pŠ€Œ€„…„{{ypz„‚u{‡{‡x|z‰tƒ~…l‘Ž}qzrˆ…z|ˆ‹€z†yy~‚wˆ†ƒ–}u€…ƒ„„{…||ƒvwƒ„ƒ•Žƒ‚~‚Šr‡†}|ms¯”’€{ƒ~—¢€k‚ pˆv“‘•‚‹„m”Œd’~}“‹ƒŽ‡…Ÿ’b›Œ~¥™z˜¨Œƒƒ‡¨y‘t9‘a•…k´‚†o„x†exzŠ‘j¤x•p‰‚“wq‰is†ˆ‘ƒˆŸˆ–‡„‰‹˜zš~‰† {”{‘k}‘‰x‡Œqˆ•t‹›˜šq‹€u{y˜±žˆ‹Ž”}…v•ª{~‹–y…”ŒŽq|”k€u‘¥y’ƒv†˜„oyxzŒ¥œ†¢zv„yŽˆtt‘†›ƒ˜‡}‚œŠ„‰‚”“€}˜§–‚tlu±ƒ€s‹ˆˆ…‡—‰‰|Šw„“ˆŠŽŸ…Ž‹•‰‘ –—‡y’•{p„…}‹…‰“ŽŒ€{—Ÿˆ“–—ˆ““›–”™˜†‡“€ƒ„|s™‡Š‚‹ˆ‡ˆpy“Šp‘˜ˆ‹‚„ŸŒ‰•ˆ‡—‹ˆ‰š“ˆ•‰~‹‘ƒ‹~„€–ˆ„Ž–††•˜Š‡€…†}‹„ˆ’…‹’„†‹‘Ž‘|‹ˆ™}—Š„{ƒ–†‚|‡Œ•‡™’Œœ‚†‚„}†‹Œˆ‡…‹‚‚ƒ‹‡vŠ‚}‘„‘—‡—”~ˆ‰•ƒ|•’Œ…Œ˜Š‰‹Š‰‘ƒŽ‚Œ‰~ˆ’Œƒ‹Œ~Œ‹ŠŽ›‰†…„n–}u‹’ƒŒƒ~ˆƒŒx}|’’“…~‚“”†…~‚—‚Žt‘‚’‹wˆ{ˆS‡‹†“‰{‹œ……ŒˆesŒXФs’‹‚€ƒw‡‚•†Š’z–‰…Ž—†l‹„–—‡†{€‰v‡·ŽŠ‘|™Š‘€yœ†‹€’†–y}‰ŒŒ‡¡ƒŠ—~‹ƒ‰¥†‘•‹‹vŠ¢ow€vu…°ˆ††‡„†Š…”“ŒŠ…ŠˆŽŽ””˜‚Љ‹yŽ|›ŒŽŠˆp‰‹‡wr„Œ“‰†‘ŠwœŠŒƒšˆ™ˆ}Œ’|z}‰€Œy”‚y”ƒ‰z¡{p|†”‚Š•†œˆ„p”ˆ‚‹‚Œ}‡‚€s~–‹Œy‹„‹Œ‰Œ”u‚–ƒž}‡‘„ƒÁ–Ž„’~‹Œˆ‹‹ˆtœŸ‘w—ˆt‹‘‘“ˆ|{…ƒ‡™}…‰…‹Ž}†Š’€k|’zy—ƒ…yˆ‰”ŽŽ›“yއ‘‹‹”އ†–‰Žw’•–‰‹‘„‘{‘‰‘qˆ†u†’’‹‰“y‹z“™‚‰™‡…Ž„……‘Œzš‘Ž–’‚†‰}y˜…ƒ{‘‘Œˆ‹‡x™…•wˆ‡Œ‹›Œ•‰ˆ‘z“‹‰‡z–—„’„…Œz””Ї~}‚ŠƒŒ…“‹•ƒƒ•„ŒŒ•““‡‚†‚q‡š˜Š‚Œ•’ŽŠ‘„’‰€‚ˆ“ƒ•’˜ˆ”ˆ…”‹™‡”—v‘n†“}‹˜Šs‹—„†€…Œ…ˆŒŠ|Œ†~…“‚‰”zk‘…’z”~ƒ„Š‘”‡Ž€“”ˆ€Ž‰‡ŠŽŒŽ†€’ˆ‘{Ž“•…–šy…Œu†ˆŒˆŽ‘•‡j‰€‘ЇŒŽ†Œ‰Š†Œ†•~š~’‡†˜Œˆ}…‹‰‚‹€„“„‡ƒ}™Ž›ˆ‘„—{Œ~†‰ˆ‘ˆ’•ŒuŠ„Œˆ€†ŽŒŠŠ€„‹w€žŠƒ|‚uy‹‘ˆŽ‘˜„Š|ŒŒ•‰€|އ‘‹v‰z€“f–‚‚’ˆŒ}—Œ›v‹¡‰ƒ„}‰ˆŠ†Š™Ÿ…‰’’…Šƒˆ„™‡Šœ’‹…‰š”“‰q~|yÞqšŠƒžu‰{ŠŽŠ|Žz†Š˜˜‰“|“’’—›ŠƒŠ“‘‰ƒ‰‰‰‰•v‡’‡Š|–žŒŠƒ…rˆ„Š—‚}Ž‚z„•x‹u„’ŽŠŽv‚›‡–‡’ŠŠ’……‹‡‡Ž–|g‰ˆ…““‹Œ˜Žk„ŠŠŒˆŽ‡|›z‡”Œ{‹{‰’€”ŠŽ—ˆ‘Š•“Œ‹€Œƒ˜–‘—¤~}‘‹š‹“‡z‹‚‡‰ŽŒ‚ƒ‰“މ’ŠŠŠŒ“™„‚‘‡Št‘ˆ’ˆƒŽˆ‘…ŠŒ“yˆ‡Š•Œ––‘„Ž„…Œ’‡Ž’„ˆ‹“†‹sx‡Ž~–ˆ‹‹‡’”Œ‰“‹’Œ”ˆˆŒ„‰•‹‡Ž‹‰|–|Љˆˆ€Œ|†Œ~‰™ŠŠŒ‡‚‘„‘“’…|‡‰ƒ‘…‰‰˜Š…ˆ‚‰”‹Ž’†’…„„‘ŽˆŠ†„‰†ŒŽŽ‚„ŽŒƒŠŒˆ‰’ŠŠ‚”†‡‹”„І}™‹‡‹Œ‹‚ŽŠ’–‡…‰‚„}‡ˆŒ‹‡…‹Ž–Žˆ…ˆ‡‘Ž–†Š|–ˆŠ‹{š‘”~zx„™™—Œ‘ˆ“ˆ’–ŸŒ‘—І‘†„ˆ“~‚˜Ž‡Š}–ˆ†‰r”Ž„ˆ‘o‡˜Œ x£ƒp‚•„z–‹‚„Š„‰“}Š‹›ŒŠj…‡…~”rœ‚„…’‘ƒˆ‹†‹‹ŠŒzŠy•€z‹Ž†{€‚‡~ƒ’{Ž™‚‘“•z–ˆuƒ‰y€™†€•~‡€‹Š‹–‹ƒˆ”„‚Žƒ•}Œ…}‘‡‚†|’Œ‚ˆ‹v‰‘†”ŠŒ}Œ†Œxy’Œ‚Š“’“ŽwŠ–}Ž…Œšy€„~{‰Ž}Œ~vŽŒ…”–Œ“Š–†~’ˆ{‰’rŽ‚‚w‚’œ‘}†…‘‹‹Œ•ˆr{š‰ž„}™Š‹ƒ¦ˆˆ’Œ„£—‡“‘‹u…Ÿ‹„š…›•€ŠŸˆž†|‰Œ…Ž‹v–z’„ƒ”‘‘Šx‹k•‡w~•Іt’‘…‹™—œ{††}ƒ‰ˆŸ‰„mŒ†…‚‡x‰™™‡™˜™•y”Šx–‰~rŽ‹“‡”„|‚ˆžŒ„”‹Šƒ‹…†Ž€{‘„“ƒŽ›‘ƒ‚y‡’Šz€—ŒŠ}Š‹š}ŒzŽ€|ŒŽ|‡†…˜Žˆ˜Š”~’ˆ‰s‡€”™‡‰{}•sƒ–Ž‚y†ypŽ”z‰Ž‰ˆ“ƒ‰€y„Š|‰‰~œ†›‹€z„|‡‡Ž‚‹q€~‡‡„›Š‹ƒŒ…ކ‚p‡ro‰€ƒŠ‹‹rŠˆvƒ|ˆ‰„„‡ˆŠ„{z~€‡†p~„€|w€tœo‹€~ƒj‚}…ŽŽ…œŠql{–‹z‡”ŒŽoˆŠ€‚x}‚tyŠ€†…„‡y€ƒ±š€‚‹‡}Žx‰~ˆ‰†{}v|s†u~Šƒ„†~€uto{€„‹Œz¤Š‡‚vˆy|€}€m…‚‚ˆ}~…‚„y|€Šww„…l‰z€€x‡~x†w}ƒŠ€Ž…€€vm‹†Š|އ—™~†Œw“‘˜~Šy›Œ‡…Ž‚˜…Œ‰‰Ÿ‡{‚ƒ™ƒ“˜Ž„“Œ£ŠŽŠŽŽŠ’Œ–’‡ysˆpŽqˆ”‘z” Œ–„‹‡‚‡v—Š‘Œ‰Œšz…|š“‘’†n“€‰w’„‹‰Œ–“…„”‘˜uŒ‡š~˜zšŒ’Œ‹“‹šƒŠ‹pŒŒ…ˆ’š‹w’‰‡v‡“z‹”˜ˆ{z“š‰“’˜‹ —Œ’—•‚„’v”‰€š„…ŒsŽžƒm‰…–‘”—‹Œzˆƒvq‚{ˆ{„—“‹‹”•x…‘Š‡ŽŠ‚}‰•‰z†‡¥ˆqŽ}{†””„™…r{–‚xx~|…}n}w}‚ƒ€„~ƒ…vty|wŠw|„‚~tvnx†ƒsz€‚uz|€€tqzyƒ‚‹|‡y‡…ˆŠ†tuq€w{”}‚~mv€q‡›…}q‚Š„m‰Š‚ˆs}“sk‚†u|}‡o|–‡t}€†‚‚Žz‡‹qzzs„s€†ƒ€w€{’|……~stž€u™{|~n†„†z~~‡w~yp{~‚{x}Œo„‰ww{|~…„qˆ„‰qp……zy€”wŠtƒ}€‚€qˆ‹{‡™szxˆˆ‡ˆz}|zv~x‡ƒ€Ž˜“‚ƒ‚‰x‡…}rozˆ‡|‚Ž—‡|v‘‚…€‰‚‡}›†{Œ‰‚uŒ||†Œ‚‡`†„……}™ƒŠ€zƒ‹‹‚…o…qq†Žƒ†††ˆ‘mŒŽ€‚އ|Љˆ{ƒŠ‹Ž†{vv„ƒ}„pƒ~}y€tžm‹~€jŽ’„z‹Œx’†yk}‚‡{}‰Ž‡o‘€„€Œ”ƒŠp‚€†szŒt|‡}‡v‡~ªŠ„Œ†‚{x†”zŠŽƒxƒs|q‡vŠ„‚…|t~qs{„x~Šˆ‰’…Œ‹ƒyƒyv…}|z~ˆ‰„…}~…ˆƒtŽzt‰zy‡y}ƒ„Š}vƒv€…†…„Š„…ulŽ…x”}“‚€†’‚“‚‚‡—Šž‰‹”‹˜ƒ†‰‡…tދІ™‰ŠŒŒ„~••ƒ‰˜“ˆ‡‡Œ‡………w{‹‰†Š‘ˆ†‹Ž‹x€zu•Œ‹‰Ž”„”†’Š”…‹’Œ’z•‘„Šƒˆˆ‘‰‰ˆ‹~ŒŠŠ…€Ž‡z…“}”އŒ†‡‡”‚‰˜„˜…šˆ™„–‡‹…ƒ†‘†Š„Œ€Œ|Œ‰‡‘ˆ…‡†‹‚†‰Œ‰„Žƒ’Ž‹„ˆ‹ŠŽ„‡‘‡Ž‡}‘”‹„‹‰‰‹Š‰Š‘Œ‘‰€ˆ‡ƒ‡Ž…„Ї—’„ކ“ŒŠŒ†Œˆ‰{zŽ•~…€{–†„}†xz‚‚Ž€…gzˆ…‡“ƒŒƒv‘†ƒrto}…„†Š‚†•€z†ƒƒŠ…ƒ“ˆƒˆŠ•uw}Žˆ‡”…o}w†tškƒ‚~j~•…Œ‰†vŽ‘|n|‰‰€•y„…lzˆ„“‚‰yˆˆƒ|zˆ{‰ˆyˆw³ƒ€•ƒ{‰z‹–|‡‚•}ˆ{w|w‹~Œ‚|‰|‰pyrƒv‚‡‚‚‡Š‚‘†‘‘€}€zy‹‚}y|‰€„ˆ€~Іv‹€w”‡}“ƒ~…ƒ‚’w„}–‡†‹‹ƒ‚†…ysЇ{x—}œy„m—{~Œgrˆš†‘„‘—’Ÿ˜›¢‚ln“‹’}~ŽŽ‡¥•n„•™ŽŸ¢Ž˜ˆ…x„‡Œtzvˆx“~†œ–ŽŠpt‡~”›Ž€†Ž†{žœˆ”|¡…ˆ|†‰‹ƒ‘œ‚~ˆŒ’‡€–‘‡{„‘p‚…–‹{‚€~ˆ–w…¡‡†€—‡€š‰‹}‹”„yŒ•–„u‘‹}“ˆ˜Š‚wsŠw†—‚“‰Ž€”„‘}‹‡†žˆ†‹˜†ŽŽzš‹‘–‚“†yŠš„ŽŠ‰…–—ƒ‹Œ‚…‹‡˜}…Œƒ†ˆ™…€~‰—†‰„Š~•q˜~yˆ•…‹|y~q{ˆzu{w~|’„|…„…’•u‚{sz€szˆx}zs‚y|‚kƒ~z…pr{y{|dw{ˆ}‚}|™|}xx{„ƒƒvƒvx€~‚}Šjt†~r|…xuy€~}€v„x”{n‰}‚w~‡}s‚€lƒ‚~Ž~uwŒ|{w|ƒ|š€~€…~‚w{~t}w€’||u€ƒ‚ƒ‚€z}{„w|{}{‚‚uz~ƒ|}ny€~||{~z€ƒ‚‚uyw}‚|w‚‚„„ˆ€{‰z„„Šˆ…†|x†s}|‚ƒx|‚‡||{~{u{…„‚}y‡†ˆ}„~…|…ˆ}Š{€y‰„}„{‡‹‚~—Œ€ŒŒw€y„Љ~‚h€ƒ~‰…†ƒŽŽ‚yŽ„†Œq}np‚ƒ†’~’…v|‡ˆ‡o‰‚ƒ‰‹‚•}|yz”ˆŠŠpƒ~†ƒ†s™k„„}€j„ˆ‡†„ŠŒ~†ˆ{l}†ŠzŠ…ƒƒk||ˆ†yŽ‚‹r‰‚yp|…|}‰Ž†x„…¥‡…|y‡y†™vˆ‹…†€s|q…u~Œ}{€y’~…n…t†Œ{‚€ˆ€‡†‰ŒŠ„xy‹…|zuƒƒ†‹}‘€‰yƒ†vu†|z‘v}‚tŠ|€„yŽ…‚ˆ„‡‰ˆ‹‚€k‹…y’€Ž„}v‚zŽ||}‚…’Œ|—‰|”–„zŒ‹}‚…„~{gŠuƒˆ€„ŒŽ•†|œ“ކ€qƒpq{€‰‡‹|”‚mƒ‚€‡xˆ}Ž‚††‹—‹”zrzƒ‹„“o}}}jz’tŸj„…€|jx|z‹‰ˆvx‘{l{ŒŒ€Œƒ|Ž‚im~Œ‚…Œvˆ†‡wy‚|€†’ƒwƒ~´x~•yx„x‹’t‡|~€rzt†zŒvv…x‡r~p…tŠ‚}‚ˆ…‰‡ˆzŒ‹}yv…„}zt€†‹‹…ކދƒ‡uz}š~{‘|ˆtyˆŠƒ‡vœ‡ˆˆŒŽ‰ƒ…‡‚mˆ‡v„”vˆ…y|yŠŠ‹ƒ“–‹“‘•˜‡ŠŽ†t„ƒ’“ˆ“ƒ…ˆ†’‰Š’…‰™‹’•‹…’}ŽŒ€ŠŠ‹†ƒ‡‹‰‡„…•sw”–}“’ˆ†‘‡“„™Š†˜ˆ“š‹ˆŒŽ‘”ˆ‡Ž‚†–ƒ’„ˆ’Š~€‰Œˆ–ŠŒŒ‡{—…„–†…‘‹‰ˆŠˆ’Œ’‹ƒŽŒ……ކ‡{†„Œ…–Š‚—„Žƒ•–‰†’“Œ‰‘ƒŠ‡•‡†‚ŽˆŽŽˆ‘ЕЉ‘‹Š‘ˆŽŠ‰†‹ˆ†Ž‰‹ŠŒ‹Š‰‡Ž…‰Žˆ‡Œ‘‘‰…‡Œ‚…‘“‹‡„¡˜¥r€sˆqžŠzr{Œ’‡‡±’¨ojŠ•~¢‘‹…tŽ˜‚¢Œr~‘lvŒ‡•|qzƒƒqw™|³Š‘”™zvju•}p†Ÿ‰ v…›†‡t‰”|’™…vszƒt|~€Šuƒƒx¨—€ƒuycŸwˆ€Ž~ „u€‹qyn‡~©—}~{‰‡¦xxƒ„…ŠlŒy§™‡oŠ’}f‘|{™q‚–x€‘}¶­ˆ|suixŒwŒv|J¨r™u¿¬„”a}˜uˆ¨~Ž‚|—†yŠ} k‹u‚Š“—Š”wq—}v‰ru“||p€…‘‹xmœ€}‡‡ms{t€u‡‡w}wyo}‰t|zy’}z{}’ƒ~y€v€~xn‰{z„zqƒ|zƒuyzwƒrp{~~hƒ{x‡t‡|vІ…}w~ƒ„zzvz…€}w†xu†vxzxw†|~„ƒ€Œwƒuˆ„r…|}z…‚x‰{o…Ž|wr„zzr}y~–|zx‚„u‚‚wzz“–}€x€~ƒ€†ƒy|ƒ}pu|y~{‰€oz€€wyv|‚~y‚||r‡‚‚t}v{ˆ}|~‡‡|€}z…}€ƒx{‹}€x~~z‚|€v|{ƒ|ƒu€€~ˆ‚z‡{Š{…}|‡wy…}†–ž†ˆz}xŒlg…}’Œ}Y{mt||zmo‹~ˆ˜}t‘ˆ††Žˆy†vv~|p’ƒ›ˆt{’p}vr{ˆbz’Ÿ‡†sr‹•—“Š}{‡€†Š~“|“˜x…xs™\n|xZƒŠxu„ˆ€ze‰r{…y~’Ÿ‚ƒ†w{rƒsx†w€§•ƒ{•}ˆry~}ˆŽ‰m~tŒ{´~|}oƒ{r˜y‘{Ÿeo‚€‚—›y‚…v}€{„~Ž{z}i~X‡¤ht™›uy†u©wgƒ}•€‡•g„zŠŽŠ‡{†t‰t‡„v‹z~}ƒ‚‹rqsptz{yv~†}v‰ˆtjzvƒˆ„spk}~|‡dz{kpjhps”„y~pjz‚gzr~‰’}z‡…ƒ}{€Œx~tkw{†€~qjŒ€n~}sso€ws‹}ˆˆ†xŽ’riu|zrƒmw}†r†txŽ‚t{myƒox~y”„yw–q†vttƒ€ufsy}~}_~Šqu{‰ƒ€u†rqt{†ˆmkxxzz…swuƒ€}}~rzumw|||w{‰ƒ‡„qƒx{|isŒ{‚ot‚woY~wuzmtztz}|k„ƒ~n~}‚•t}sŒn•˜}Œ¤vu–’•” ‰“ˆž—ª˜•ƒ›z–‹ŸŠƒ‹‘Ÿ”…ˆ‘œ‰•£ƒm•ŒŒŒŠ“‘†‡€Œ}€i™Œ„…r‰œŽˆˆy…|}‡¡Žz’‚Œ•‹‹’ˆ“{’}Š–Š‚“Œ“‡‰ŒŽ…|ŠŒ”‹~ƒˆ›š~†Œšw‡”zw’–Œ†xˆŒƒ’އŒ‘vyŒ¢¢…‹ŠŠ‚|’ž~€‹Œ€–}‹‡Œ……’ƒ™}~“‘}ˆ„’’ƒŠ†ˆ†‹}}†’‡œ‹˜‚ЂЀ€‚Ž{‡…‡ˆŒ—~‹€„€‹Š‹ƒ†Ž„Š‰Žˆ‡„œ“Šv€Ž†Š“ˆ›ƒ˜x|q‰€}ƒrxx‡‰zŠxˆ‹{m‚ˆ{zz…|x‰•yƒ„~…ˆ‹„ƒ~–•†„–p‚pwˆ……ˆŠŽtŒƒ}{_€~‹‚}„’‹‡“wu{~š‹zy|Šg”‰t”g†‹£i‡…Ž„’‡€…qŒ…iz„‹}ˆ{q€n†q}ŽŠ€‡…yƒ…mz‹Š‚|žŽt…Нu{…‹tv‚w†‡qƒ}‚wuysŽk†vx†|x€…uŽrމ~ŠŠ˜Žw‚Š}‚Žw‰€zs~r„Ž‹’|‡“Œ„€†Œy{z‚Š|{ƒ|p~‰…xšw„ˆ‰‡~Œ…{†rˆƒpxŠz—…’}‹u€ŒŒ‰‰’Œš‰‹‰“Š’Ž„•™””„tŠˆ~ˆ}†”ƒŠ“ˆ“†¶’”“’˜•Ž‹Šˆ‹ƒ‰‹œƒƒŠŠ„’ƒ}ˆ†‘n™yš†‘v šˆ”Œw‘—‹—Š•†•t‡•~‹‹Š•‹„¦„ŒŠŽŽ‰‹Š‹‡‹{•‘…z‘ƒ‹Œ‹ŠŠ‘Œ“„ŠŠ„‘‹Šˆ†„„†‡”Œ‘”‡”‘Œƒ™‹‰‰’‡†|”Ž‚…Šˆ—‡‘Ž„‡’‹Œ‹ƒ——y„’Ї†–†Œ‰{ŠŠ‡Œˆ‘…މ„‡“‚މ“ƒ…ˆŒ‰ƒ”‹ƒ‘‡‡–‘Žy†Žx‹€€‚‚y‹{s€yŽ™~€—yˆ~s“†‚{~}‚i‡ƒ„~Рއ}••ކ„m‡moˆ‰ƒ{…p’{ˆ{{†p‹|…}…~{Š„‡Šy{sxƒ…‡oˆ‰yy‹tmƒ†„jŒ‚ŠŒsŠŠ‚Œql{‡Š|‘~ƒŒj‰~Š•~„Œrƒ~~dz€v€‰s‡­oˆŠj|…wŠpŒ‡„yuzq€ps–}{†„ˆr‰tŠ˜|‚‚ˆ™}u}‹‚…u…wx‚|z|zŠŒ‚…|Š„€y‰sz‰xru}†my‹†|ƒuŽzˆƒ„‚‡ˆ€†n‹†~z•q‰Š‹z}‡‹Œ†ŒˆŠ|•†“Љ’˜ƒ†‘‹ˆt‰‘ƒ‘ƒƒŽ‹ƒ„ˆŽ…‚†„‡’Ž•†„†‹…‰‚–‘ˆ†‡Œ‡‡‡‰ƒ’txƒ”}“Ž‹†Ž…‰†—ˆ„•“~”™‰‡’‘‘‘ˆ†‡{މ„‘‹’†~‘ˆ’‰—ŽŽ‹ŒyŒ‘„˜ˆ‹•‘ƒŒ~‘…‰‹ƒƒŠŒ“ƒˆ‰Œ“‡Œ’€‡ƒ‘„Ž’Ž…ŠŠŒ‹‰•‚‡†ŠƒŒ““”‘Œ’Ž‹‰’˜ƒ““‰“}‹“Ž…„‡ˆ‰Ž„‘‰Œƒ‘ŽŽ†Š‡…‹‹‰†‡…ˆŒ“™v¸¢}zz|މމˆ~ƒˆw†™s„‚—}šƒ€‹‹‹’…†y˜‘„˜‘‚‹”’”‚”‰Š|–•‰‘”{zx‹|~un†‡„…X¨wŽž‹ˆŒ’€~«“Š‹{†‡ž…‚‚”Ž–{Žl•v‡‰wŒ”˜‡…‡z|…•–˜‰€†‹˜†’‡Œ“‰‡…’v—‚ˆ“q”ŽŒ’’’~‹x}zŽŽ“‚ˆ£{x…ˆ†Žˆ…‰’ŽŽ”Žƒ‡„~ˆ‘w…ƒ„‰}‹’€~•†ƒ|oŒ‹‹•Ї‰…‰u’}ƒŽ‚‚’Œˆ”{u‚{~uƒ{Žƒ—yƒ}wœŠtŠ…iŠŒ™’™Œ˜m“•‘—†„‰‡„{‰|Š†ŠŽ‚š€}~‘‘‚‰–’ˆ‡€ƒ“‹{ž—‰ŠŠŠ’††‰‰w~”˜…ƒ„„‹•œ‹Š{Œw…uspŽz‚‘„‹Ž“Œ‚”’{{…‹ˆ‰†~’‰Ž~Œ~’…”¨—”…„•Š”‚“’t•‡^ˆ“„}}z…•z‡ˆ‡–}…‚ˆŽ‘Š}‹•–z„{ŒˆbpŽ‘”‰Ž‰‹Œp‹p‹Œ}Œ‘„‚u‚œŠ‹Š•o”‚®y‚††‹ˆˆ–y…‹††—‡Š”ˆ‡„ˆ…Œˆ‡”•˜‡{Š{xžˆwp‡‡—”ƒ‚€”“Œ•†–„ƒ…Œ‰Œ•ŽŽ}u‡q‰­†Œ†•‘u’„‰“Œx‚•Ї•v‹Šz°˜„™……™Ž’Œ„žy“œŠ‚„‡‚…ˆ{—‰‘ƒƒ€—‘Šƒ|—…Ž„‰q›”„w™‹x€†”œŽŠ”“‡™Œ™˜ˆ€ƒ„ƒ{—†…‡|—‰šˆ‹˜Œ‹}…Š‹qŠ‹‡ƒŠ‰–‡ˆ€…‘އ„•Ž”ˆ…‹ˆ…Ž‚‹••‡™|Š…Šƒ‚Љ‡}Š—|ŽŠ|‰Œ—“}‘‰’ˆuŒ„‘ŒŒ„™””‡€}Šˆ‘‰ˆ„}‰‘zƒŒ¦}{{‚Ž‘‹‚sŽ‘z|€z‚€‚{x„‚~˜ƒ€‰Š‹…rzzz‡~‚qk…z~ƒ}Œ††v~}†}vy}€sr‚‚‰‹…„ywŠy~†‰ƒ‚ˆ{‰Šz€‰uyx|‰‹„u‰|~„xt…}‡xi‘„vއƒt…{}€‡x‹~{‡‚s€…Šz‡”ˆ‡€ˆˆ€wz‡ˆ~{€}|¢“|ƒˆˆ€€‡ˆ†‰ƒ~|~s‚„Œˆz†{ƒ†}|v~ˆ‡„}•™‡~w|…z‚‰…‰}ƒ‚…€‡‡‚€†~…‡x€~~†|†‚‡€|z€ƒƒ‰Œ‹‰ƒ…Šƒ€ƒˆ€~‰ƒ—ƒ‹{Š{…{“€‰‹}Œˆ‚zŠ„…r„€y‰’ƒ}p††}Šn†’Žˆ…{†ˆ•€‚|lƒrr{ƒƒˆ|’€{Ž{†Œp€~ƒ~‡ŽƒŠ…vuy…‘‰o‚~ƒ‡r—t„…z‚t‰”{|‚•x~‘ƒlwˆ‰{Š„€pƒ†ˆs’…‡m‚zolƒˆ‡…ˆ{‡¥Œ‚Œ|„zƒˆ„‹Š}~€{tzd|ˆƒ~‰Š€‚uƒ€‚ˆƒ}xŽz{˜‰Š‚o…x{~~ƒiЇЂ‡†ˆ}‰€€|Іp‹u‡q‚ˆŽ‘r†Œ‡ƒ†‚Šv„zlІ}{ƒŽ~“Š€ww‡€‘|{–ƒ~—‚y„ˆ€u€z|€‹Š€fƒƒŠ†~€–‹}ˆŒ~Špqpƒˆ‚€†Š€‚vŠŠ‚…lˆ|‹y†yˆ“Œzyxˆ’’ƒp‚Œ}…‚}tk‹‡}Œi…Ž‚ƒŒ†€ƒ…{mz~ƒz€‡†…lŽyy„†‘Œo‡ƒtsx‡‚{‚ˆˆt‡}ª‹‡…’{z‰w’‘xƒŠ‹‰~ƒtzr†zŠŽ~‚„}Ž~ˆq‡r‰…y‚…†ƒ„†‘‚rx‚‡‹|€€{…€~Їv‹‰|t‚‚Žz|……{’‚‚†v‡„††„†‡~tp‹…zv†uˆxbŽ‹sl|ƒ…|~Ž„|˜…‡‡„‚|™‰{€ƒ—|‡i†}€„}„ug‚†}vˆ„ˆ‚†p{ztƒx‡•Šƒƒ‡t}„Št‡|}Œƒw~‚†ˆŽvlu|}ˆ‚r|z„}~Œ}œq„zƒf–‘wo†‡tpo}€„t…‹†…uzz‘‡€ƒ~‚m‚~‡u{sv€z†wz…ž‚€‚p{ˆxŠ’np…tzmyo‘u|€t…|‰~s€t}…s||„xw‚ƒ‚ƒƒuy€‡|€~~s‰x{ŽyŠs~vwl„s€uu‰x}Žw}~tƒ{x„…‡ˆ‰ˆ‚tƒƒvy’v†n™ˆ‡}~{€ƒ†|~~~…ƒš„…І‹Š„{|‚‰_“€’„ƒ„†k’…Ž}xtt{su†ƒ‘‚”z}‹ƒƒ‚‡‡ƒˆ|Œ‚x€~…|™Žˆr~Žƒ~xŠx•k…€…„p•’…‡”„„|ˆ†t€ƒ…†uˆƒw„†Šˆ„’…ƒ‹”Œ‚€‚‹†€€‚ƒ†¿™†‡ƒ‡Š‡ŠŠyƒ…”ކ€†ˆ{vt€Ž†ƒ‰‡‹‹Š†v…Œ€‡€‰†}Œ‡‡ˆŠ†…Š‘‡ƒ‰†˜zŽ‚ˆ†‚…€Šˆ~‚‚’}Š‹ˆ}‚ŒŠƒ‹‚}—€ŠŒ€z€„Œ†‚‡ƒ‘€‰”‡‘†‹”~‚Ž“t…ˆŽŽŠ‰„‡Š‰‰‘‹”–‹ƒ†‹Š‚ކ‡ƒ~‡‚ŒŽ‰”•ty‹{”‹‡–Ž‘~ˆ”†•Š•~™‹Œ“•‘—”ƒ‘†Œ“‚‰“‹‰‡‹„‚„x‡–„Œ›ŠŽ‡‰‰„‡ŒŠŠ~ŒŠ††‡‘‰”ˆˆˆ†Š’„““‰Š‡…ކޕ‘†ˆƒ‚„ŠˆŠŒ‡€“†ŽŽŽ‹}І‹’˜‡~—š‰ŽˆŠ‰ˆ‰‰Ž„ŽŽŒ……ˆ—‚‡„„“‹€‡Œ‘‰˜•ˆ„x—xy…ƒ…œ™„wzŒ™¬˜›‘…„ˆu–‚‚‰vŽš™Š™ …•¦uœ•‹…‚†…†‰“Œ}•ˆš›Šs_ƒ“‹lˆ„‹ƒ}ˆ‰”d~¦Ž}}‚Ž›€ŒxˆrŽw—sƒ–ƒ‚•{ƒ} ~{¤y‘„šˆ“c‘Ž‹y’‰‹w—‘•vŸˆ’‘€Š€‰x€„ž¨‡ ˆ¤ˆ€t’™‘v‚„’‡“¥m‘|††ˆ‘†‰yŠ‹šp‰n’šœ„‚’u…›x˜|–zކ„zŠ„„}•“„‡ƒ–Š”{u|„~“„Š‘ˆ™‹‡Ž†}ˆ‹Ž…Ž”{x”Šˆ}‚|}ˆ|{z€t“†}‚ƒ—”‚|y€{‹{b‰†z‡{Ž„‡…q’~„yt{u}wr€ƒ†x‹zt€†’‡‡€|€yƒ…‰uˆv|‡‚x‡…‡szƒ…z}–vzŒ{tƒ„‚||„}‹ˆ‚ƒ€ƒ€{‡†~}|y~†‰€Š†„{†Œ‹‚{‚…z|ƒzˆ¨„‚‡‰|‚…„‡ƒŠƒv~z{ˆ€Œx†w„{~ƒŠˆ~‹‚‡ƒ„€xy‚ƒ…Š‚‹v‚ƒ„Œ…‡…‚€}…Š{†~…ƒ{ƒ‰ˆ„Šw‹˜{Œƒ|‡ˆˆ‚‰}”zh…‹‡w•~~}}w›ƒwv…nm„~Šbr‰}}v‹e’‰q‚wqƒƒ†œ€Roz{t€vwŠfrqŠ}dŠyŠ{{€xŠ„y„†y…}‚ˆ€horl~g‰wƒˆy}w~„cŠtƒm”mŠ}‘œv{unn~€trz˜t}„qi}y‘sšl…t‹uhyƒkss~{‚qx”„utˆ}ƒŒtŽ}vq{ugy|]q|}‚›k‚~€z{‹Œ|phˆzy{ˆs”y†š~r€}{i†„w„ˆ…~„”s‡t_™gzp~|‡w†}p}€‰†zi‹xˆwƒ}z…‚r—Œ’‡{~€x|’wyƒkw|Žvz„Š–xc|‡u†||]v†~q|ƒdtw„snvu}tv†‰’ƒ”†y€”Ž{‚’r‡„wzvƒou…u|‚ƒ}‹|x‚xƒ€|”sƒx†‡o ‡yŠ‚{’|z{{‚ztzr‡yy…Š}‘…ƒz‚‹‚‹†ƒwƒvy²™‚‚’ˆ‚Š…‡‡…€ƒ…r|€z‡w†x~Š‚}‚x†ƒ„…™€ƒ{„‘‘‹„ƒv‚›‚~z†‡|Šuƒ‰r…{Šƒ‚€‚{“yv…€~~ƒy…vƒpƒ‰x‹ˆ|’„{’|…„Š~~z”†“€†–ƒ‡ƒˆ„ƒ–“Ž’„„”Œt‡‡Ž’ЉŒŠ’’‰‹–ˆ‰™‹“Œ“““™’Ž‹‰‹‘„‡|ƒ„Œ€‹‡††Œ…•†’xyw‰„„ŒŽˆ‰–Š”ŒŽ‹Œ“ŒŒ‰‡ŽŠ‘{‹|‡’‡w‘}Š’}ŠŠƒ€‹‡}‹…‰Œ—„‘‚‚‰ˆ†Žƒ‰††ƒ‡ƒ†‘†‰‡…‡’Šˆˆ…‘„ŒƒŽˆŽ‚„‹ƒˆ†‘…}ŽŽŠ†Šƒ…ƒ{•ˆŽŒ„†’ˆ…‡|’”ˆˆ‰ƒˆŒ„‡‹†‹ŠŠ‚“„ŒŽ„~‹‹”Š’ŒŽ„‚{w™‰‘‹ƒ~z~}{€w‚”€}‚ƒ‰—Žs‚tŠ}Œ|a’‚y…~v†}p„zŠvqwv{wuwy’}‰†u€‰}…€…ˆ‡r}x|‹ŠuŒt}‚„z‡‚t{‚€ƒ{y”qyy…r„’ކ|‘…‡…†ƒ„„€zw‚{Žy’‹ƒyŒŽ‰ƒ…ƒ‡€~}„}­™‚†‘Œ„‘…—‰„|„†t|€|……‡‚}y„‹q~~ƒŠ‡Œ}…~‘‡‚w{ˆƒ~†z‹“z‘„ƒ‰‡…Šˆ…‚ˆ‚Ž€„Š„yƒ{Š…~†ƒw‚…Œv’ƒ…Œ~‰Š~| y›–‰}›Ž{{„ƒ˜‹“€¨wŠzŠ—ˆŠŒ~‘ˆ~Ž„˜‚‹x†ˆŽ…y‘š‘§˜†…‰“‹™‘z†ˆ­”•}U€„‰‹hƒ|}z|Œ~xœ§…w¢„Š‚”‡Žj™tp“t€™‰“†…‡ˆŒ£œ‰‰‰|ˆ‘€”…“‘†sz„zŽ“‹”g•“‰ˆ~Š‚‰Š|{{–œ¦€—އ„pž™‰ƒ~ˆŠvŠœžxŠ~y‰†‰z~r‰™s|tzŒ•ƒy…r¡€}ƒ‚‡„•†‚}‰Œ‚“Œ’’ƒŒ‰p‘‰‚ƒŽ”ˆ{†ŠƒƒƒwŽ€„˜zv‹{І{„y„|‡•‚}lu‹ŽŠ{ˆŒ‡—š|ž–{€bއ…’tŒ’nŸx†“Œ~†Ž‰~—¡…zŽ›•a†ހГ“amŽ{Ÿ”›ƒ‚‰›„~€z€‰——} ‹–ކ€y¢{……€€pˆ‚‹ŒŒ|ˆ†s“‡‹…€‰uƒz}Š}•ƒ|zŽ‚†‡Ÿy‹Ž’Ž˜•‘‰”‰‰…ˆqx–ˆ“‡†|‡Ž‘„Œ„–‚‚xœ‚ކ˜u‚{—‘xy‰„ŒŒr—†€}‹ˆ‰ƒ”n–˜˜‡“|x”}”v‚‡‘yw‡ƒˆŽwn’p|cŒ€bŒŠš|y}|xŠxx|tsv–{wyzžs„|}spˆ}d’x‡|tmnw†lxwxƒsmztƒyŠz‰oŽzz„„’ˆrz‡……ƒ{oyŽŽys†ox†p„}€u‘t€‡†‰y{q{k–‹Ž‰‹€i}Ž‹€~…”}„nu{hƒt~“x}}ŽŒˆw…Œƒ…x…v‰œ™}stŠ~‰†zŒ„€qs’‚pt|x{‡yzy~ut‘yx„r|‘|‹s{}€whuŠ~†~Š~w€z|†|…„€‚€Šv„tox„|~n‚‚†„vƒ~‡€{„‰Œ{‰€~y“—Ž©Ÿ€€…x‡P‰yŒƒ”¶ƒ…„o–“…™†‚|Žœ“Žr~Ÿ“Œ‚“ލƒ…Дޖ…¢uš”…~vu‡‘—k£‹ŽŽŠ|}Žw‹œ§Žv‚‘‰‡€†‡–~’o”pŸ}Œ€‰x„ˆŽk‚‹žŽ€‚–•€””‹p~a|o‹€‹j–|{Š™ˆ|‹z‡|’œœu~ˆŒ¡r|™’ƒ|‰‚†|‰Œ•|€“~{v€Š}yˆ~{‚…‰ŽŒ…z|‚~†¢¦Š›…“u……tt€yyˆ‚zŒ˜„‚“ƒŒ‰w‰Œ†~‰|†Ÿ‡u~ŸŽ}u}vp”’˜†{‚y’s€yzkyŽxpvˆtvŠ€}u{‡zxx|z|ƒw~‚{‚zmvvroŠn{zv€„yz€g|yy{xu}¡z—zrx„zvs€{w{wn€z{ƒp~y{‹~†wy{‚Œ~~zznz}rƒƒ~nz€x‚†x{z‚x}}{|yy’uw}pt|z†‚wvyr€|{{|~twu~}ƒq~zz‚xyv|~{omxyzs{€zz}{yv{}uw}|w{}~}xƒy}~|{yu…r}‚|’}ƒ€sz{~xz~€msz}quy|y~u‚t~ƒ{‚œw}||z‘‚”‡}…‰ƒŠ|‘’‹‹‹|t{˜›Ž~Š‘Œ”Š‹‘r{€›€–Œ“††‚‚ ›”Ž{†”’—ƒpŒ†‰‘o”’†žˆ‘„~‚ƒ€¡v’‰‹‚€Œƒ“‘‡n•~‹u™m€|Š‹‘”‰ŒŒŒŽ{—‰‰–’ˆ’”ˆ‡„œ‚ˆ–{Ÿ†Œ•‡užqw”kwˆŒ“ˆ—zz…”šŽ’›’‡’„–Œ‚’Œˆz~…‡˜œ}‰‡’~Œ…~‡…ŒŒ”™‹„‰„Ž¢|‹ƒ——Š…r†˜‘’‹†‡}n“‡pˆ‹Š„„™w†–Š‹‰…|‚ŽŒ‹…–’‰‹yŽ“…“‰Œ‘€‡‘u{ŒŽƒ“ˆ’Œ‡ƒˆŠ„†‹wˆŒˆŽ”‹Œ‚Ž…Œ†Œ„†‹ˆ†ˆ†’vzk‘|ŒŒ~‹€‹’Œ„‘“w‰–Œ“‹ŒŽz†…‡‡‡††“‘’„ˆ‰’‚‡ˆ~x‘‚—…Œ•‹ˆŠ‚‹~ƒŽ‹‚‰ˆŒ†‹†‹Œ‚“ƒŽ”‚€ƒ“ˆ‹’•…‹†‹‹‹Œ…’|‹Œ†Š‘”˜Žˆ’–ˆ†…”„|Œ•މ„…Š„‡‹‹‘ŽŽŽŠƒŽŽ‰Š‡…~‡Ž‡†ˆ‹Ž……sm}•‰…z}‚‹|~‡†€•‰~…‚„ryz}…{‰q„†…„uZz„{s{†€€‘k~yqˆ„”ˆ›‹‰…‡•‹‚ˆo{|‡}|†‹ˆrzoƒ…„l}Šwxzy•l‚|‹g›“w~……„‰yyl}|{y†Šƒx„rxt‚„‚ƒr„~†{{‹ƒwz‚„v{€©††ƒ‡yyŠxŠx}||}~wmxt“n…~uŒ}ƒq~tvˆ…}~†‰„|™†‘€‰Šv}ˆ}}||vv‚{|{‹~v†}~o}ƒ‹wt†zŽ€x„x‰xuŠˆ‚„†Ž‹v‰ƒqt‹zx€i…’z€y}lƒŒzkt˜zއ~~ƒ{tŽyv„{zvŽ…}~sQvx{~‹~~ƒ€qpwz{n}†‚‹‚}v”Ž~qb‚||‰q|‰‡Š…Œwpqxƒˆustsˆ…|mˆyƒ›mŽyŒv‰z{qw|oyys‹wouom‡ˆ…€}ly€d|v…v{€vt‚Ž‹|ysw…y~r|xs„khuq’nypy~vw‚vuŠ~yy|wŒ‰n‡vˆ}wu†ˆ}||‚}t”m|…{†Ž…zŠ~tq†…†jx‡yl}tŠuƒp‰{}‚ˆ‚}{}l~wvš†“ƒ›uŒƒ’ ‡—…•„𛆛Ž{™‘Œu…€Š|„‰€•—}‘ƒ„ …™¥ˆ²…—— kŽ–€†‚†“‚šŽ‚xŽ•yw€~}²‘r—‘šŠr‹Ž{•ŠŠ’…ƒŒ…ƒ}Ž•ˆŽŽ”‡–„‘Љ{Œy”‰}šžˆ•‡›ŠŒ‘w–‰}†‰’‚ƒŽ†‹Š‚}•’“€Œˆ„š“™}˜—‡ˆ¥ŠŒ{‚{–…‹‘u…•”‰Š‰‡‡pˆƒ‹‹ˆ‘«¡š‰ˆ—ƒ„™ˆwš~“‘™“‹˜•Œ’•‡”}x†zwu‹‡yŒ‰“€‡‹ˆ‰˜Šzs{‚}—…‚|~Šƒz|Œ}”‘€}‹‚w‰|v‡‚‚xi‚Œy†‡„„†‹ƒ€…†‰‡…ƒp‚rro‚‚‰ˆ‚ƒ‘{ƒƒ‚†ˆ‚|Š~††‡€†Š…‘–voz~‰‡‹o‰yŠt£lˆ„ˆj…‰†‰‚Žƒy‹vl†‘…~„o~‚Œ”yŠƒŒo†‚ƒlw~‚€‚Šy…¥Œ„†Šx|‘y‚‚Š‹{†{{|s€xŠ|‚~‹Œ‚r†uŽ…v}ŠŒ’ˆ†Œ~|xyƒ€|~„–‡}…~‹|І|yƒ‚}‚z„wˆ~sv‘{~Œ…‡…„|‚‰m‹†uv’€„Ž˜“€©‚†“Ÿ“jš’„™št~¢‚ª{‡˜Š¦”™™–‹m‹“˜‚µp’¢†}vtŒ…uˆ‘¢—x†Ž‘^p{£‰˜˜‚y|ˆ‹¢_£’Št†wŒ†|“]r€™‰x}‹ƒƒi‡£…w€—}k€€¡†’ˆoˆŒŒŽ|”…{ly™„¥’¤uŠƒ‘|w|}£‰”¥‹Žz•Š~£tv›{w}‰x”|‚n¤Œ–š—–„‘žŠˆš‚˜…šŽ‡˜‘†~‚™ŽŠnŠŸŽˆ…{w¦›ƒqx’™r‰~{š–‘Š—s‘¢¤Œpˆƒ¢œ”l˜}sˆ”|‚‰ƒa”€‰ŒŽ|w€ „ŠŠ„–x™‰|w|ƒ‡Œ‘±‰‰‚ˆž…w–’Ž–†‹¤Œ‰ƒw‡x‰“…ŽŒ–‹•…‹p„—‚rku}…ž‰“w|…~w}Ši¨•ˆˆŽ„Š”…‰†•¥ƒ}u•‰}~˜Šz…Ž€Œ’‘~y‘~{‚ Œ…™‰‡[‡y‰†„–sw—‹‘ŸŠ†‰Žvw˜‹‹…’”‹”t‚| •Ž†ŠŽ’|gz}{†•‰…“}}ƒ…ˆˆy|ˆ‹–’—Š‚|†‹‰ˆo•}ƒ–m’…‚“‘~m•’ІŒ”’y‹‰˜‡ŒŽŒŒ‡†Š•y~|‚}roŽŒ”Š„ˆy€{€Œ‹‡‚Ž‚–Š’——€†‘†t…„Š‘‚…‰„—’‹‹‘’†•ŽŽ••‰…zŽ€‹‰ˆ‰•††ƒŒŒ†‡Š•sxˆ“{”†‰–‡˜Šˆ˜ŠŽ›‰‹Œ“ŽŠ|…•}‘„‹ˆ“†~›Œ‡“—’Šy†“…†•ƒ‡Ž‹Š†ˆ†‘Œ“ŒŽ~‰Œ‰ƒ‹ŠŽ…†}‰†‹–Œ‹•“Œƒ‘•Ї‘•Вއ†’‡ƒˆ‰‰Œ‡‘’‰‹‹‰Œ‰’‹Ž‰‰€ŽŒ‡Œ‡Ž…‹Ž†Ž‹‹ŠŠ‰††Š†‰…އ‰‘‘ˆ™}™ˆŸos†ƒ‹†Ž–‰’w‹• ‡“ˆ‹‰ˆ‚‹wŒš„{xs“ƒ—Œƒ‰•™‹¬‘’„‹Š‡‹‘|u~œ~”†dys’–‹t‰’€‡•ކvŸŠ†„‹‡‚–‚}r•~’„|“…‰“–‹‡œ£‹““vš—y‹‰Ÿ–ƒw€€†™¤‡Žb‡–ˆˆ€“œ‡–‡}wŠ¥ŠzŸ˜§rmŸ˜Œ‚Œ–‰|›«¢”}‘uˆŒŠ‚‰‘‹j…|’¡|‡o~‚«Ž›‰…‚†o‚zz‰w•™Š’’Žˆ{–}~€‘ƒ‹ŠŽ–sˆœt‚„}}—‰…‚ˆ„zƒw„‹ŒŠƒ‚‰˜~€Ž‰ŽŽ‰œ”~‚ƒ“‡t‰ŠŠŠ‹ˆ‰€‹–’”ŽŠ„‹Œ}•Ž˜•‹‡Œˆ”„Œˆ„”Œ‰Žˆ’‚•txŠy‘„…†—Œ—†™…‚ŠŽ“Ž‘ˆxƒ”€‰†ˆ‡’‚}˜“ˆ‡‰•Š™‡‚{†‰Œ–€Š‰†’ƒŠˆ‘˜Š‹……Šƒ‘ŠŒ†‰‡…‰y“…Š—{ƒŒ†ŒŽˆƒ‘–‡Ž‹„ˆ‚‡z’„’Ћޖ•Š…‹Š‘„Œ‰‘ŽŽˆ†‹†„†‰„‘‡’”‡ŒŒ”„‘‘‹„”…‰”Ž…’‡Ž‰‡š~…l…‰”“Œ‡Š•„Œ’‘‡”~˜–€xˆ‹s…ˆ‡„‰‡ŠŒƒ‚“•ލ“„‹˜“•–“Ž’“Œ–Œ‘~…Š˜‡Š‚‹‰†•q~”Œv‰•ˆˆƒ‡š‡˜Œ„”‡y˜’‘Ž—|‡‘„Ž’ˆ†‘‹ƒƒ¥ƒ„‹‘–Їƒ“€{‡†”‡Ž†ˆ’‚ŽŽ”‡Ž†Ž„ƒ…–‡Ž”Œ•ˆ„£‘Š…“Š||‹ˆ‡„ƒ‰™Ž“†‡€…Љ‡’‰˜œƒ…’‘€Ž’€†{ˆ‰Š‚†ŒƒŠ‹Ž‰ŒŽŽˆ†‡ˆŽˆˆ„€“‰Š‘”…‰‰€~}u‹u„ƒˆx‹ƒ‚{|„„Ž€œ†v¥‡}vxv}x„ƒ„px‚}€ŽŠwxwŠƒ~|k|rm|‰Ž‚›ƒˆ…€yˆ~ƒ†|‚Ž}~‰‡ˆŽ‰ŠŠppxy”„|†ou™…vv}sžt‹‡’nž†‹€‹‘r~vyysps‡w‹}{ŒŠq‚‹Šy‰†‰vwz•‹€}˜‡tƒ‹¢|Šu~€qŒy…„›{„qƒ|z·”|qŠƒjŠv‡ryr|†}”˜{o€u~}uˆw…wŒ…”ƒ„w{‹Š…‹ˆ˜|{}p„„}ƒ}‹k{|u~„„‡‘„€w}‹jŽ‹„ˆŠu‹ˆŽzŒ†Œ”†„ˆ”~Š‘Œ”Œ~Ž‘€„ˆŠ…tˆŒƒŽ‚‡‹†’ˆ‰Œ€‘Ž˜ŒŒ’މŒ“ˆˆ‚„~‹‹Œ”Š…‘sxu~“Š‚‰‹’‡’–’‰€–‘Œ‘Ž”†„’–†…Œ‹“‡}“Ž‹„‚x‡ˆ|yŠ’…ˆ–ƒ{„‰†‰—ƒ“–‘ˆ“‰‹‡ˆ“€”‚•ˆˆ…‹‰ŽŽ‘‹’ƒ’†‡Œ‹Ž‘ˆŒŽ‰…ˆˆŠ–ˆ…„Œ†‹Ž‰‹ˆ‡‰…‰‰’…Œ‹~ŠŽŒŠŽŠ~†…’ŒŽ†•ˆŠˆˆ‡ˆ€ˆ†”ŠŽ‰‚’„‘•‡Ž‘…zˆ†‹Œ…|Ž‘‚‚‡“‡‰‹Œ“œ‚†“…ˆt“Š’‰’ˆ…ކˆ•‹x“ŠŒ•“˜‰‡ˆ†ƒ†Ž‹‰Ž‡…Љ…‘ŽtyŒ~™„”Œ‰ˆ“Œ—Š™Œ•ŒŽ‰”’†‘Ž€‰”†‰|…‹|”~Š‹†‡Ž‡„Š‹{‚‹{ޙބ†„ƒ‘…‘‡‰ˆ”†…–‡Ž……ББ”‚ƒ„‰•†”’‰‡…Œ‚‰‡Š„‡‰†Ž’‡„‚Ž“…Œ”ƒ‰…}”–‰†ŒŒ„Œ‰“‹ˆ“Œ„…€ˆ‹ŠŽ‡…“•Œ„މ‘‘‚†~‹„~€t„|€~Ÿ†{ŸŽ€}‡w~„‡€‰gy†|‰~|Š}w~‹‰€‚m{on†ˆ„‘‡Œ}€t‰‡|‡Š~ƒ|‰‹~ˆ…Œyuv~’ˆŠƒn„…|vo„r¡h…ƒl‹ƒ„‰Œx|‘ƒxh{‚ˆv‘‚„Ž”pŠ„ƒ}‘‚Žtwƒvw‚|‚‚‡†m†~«Žƒ‡‡zv„l†‡{…‹‹‚…u|p„n‘|„„yo†r‚‚x{…z…‹Šz‹‚ƒ…xŽŠyƒt…‡„‡|~……€ˆ„~s…ƒ€‘w‚z…xŠzyƒx‡‚ˆŽŽƒ}vn‰……z‚v‹…sv}Ž•…–‘•‹‚ƒz’•†ž’¡…—œ‡Ÿ˜‡°“ŒŒ†}‰ |Ž›ˆŠ}‰Œ‰”…|† —‰ŠS‚Ž–j}•”}‹……Ÿzƒ“Ÿ~“sŒ††k‡Ž –…n‡‹{” ¦„‚ˆ…‡‚|›†“Œ‡m†i›hŠ‹–„„Žƒw’„™|m’‹z‰Š“Š—}•‘}y‹už§“}†™Žr‰k“šx€€ˆ’†”Ž„œ~y«Š’z||Œžn~‰—yŽ—‚‡vƒu‘™ŒmŽu˜‰f†}‰‹‚‚‡…ž–Š€}{{¥n Œ‰‘˜˜Ž‹ƒ{‹| ‡yŠ‚|w’†‰›~Xr‹]Ä|Ž“­‡‰uŠ{†|v “4vhŠˆ–{~”œvž{|zƒŠ–{§tŠxœ˜u”o‰ms(Žž€ŠiˆuŽF£…˜ˆ„®”šmŸw{k¦†“‡|³Ÿ{|Œwp…zv‹†…–ƒ£…™T‹_~¤{w›‹et–z “‡”‚†o‡nƒyƒynt„Žm“~œ¡†{uˆ™‚kªƒ}}z}‰™™v{{ˆ€m‚ƒ…‡ˆŒœ€¡}wpa†‹•ŸxƒŒ~Œjn–Œ|€pz¡‰}†‹‰z‘u˜pgš‘€}¥‚‚t‡‚}}…ž‰‰…€ ŽŸy{{j{€’{qu‹¢‡‹‹Ž„Œ„‘w†x‰‚r‡ˆ~–Œz”‡z™‹~‚„†~cw‚‚ƒƒ‚ˆ„Œ’…~‰„Œ€~pppz„އ‚‡„|‡}€…u’~†‡†ˆ„‰‡Š‘wt‚†Š‹p‚•ƒzƒ†tn……ƒmjŠ…‚„}Œx‚„}m|‚Ž|…”ƒˆ…kŠ|‚†…{ƒmz~€ˆˆx~†©ƒ€††y|Šy‘ŽwŒ‰Š~t|tƒuƒ’v„€zˆ}‚quˆ‚{‚Ї……ƒw…zo‰…{~ƒƒŠ~ˆ‚ЇŒ|‰ˆzw’~sx‚}Š€‚w‰‚‡Ž…Šˆ€ƒo†z‚{–›†Œrv…ŠŠ‡•‰}‹{š™’ˆ‹•xwŽŽƒq‚v˜“Š’”…œŽ…–‹Ž†Š›”Œˆz~š„“…k‡‘Št™‹ˆŽ†ŠuŸ’…Œ€…‰†¡ƒ€Œ}•„‘‰“ˆ‹”Ž‹‡ŠœŠ‰Œw”–’‚‹‰Ÿ’‚w—ƒz“œ‰pˆŽ‡‰™œˆˆ~vƒ©‘|—‘œŸyz˜˜‚…“|‘¯•z’‚ŽŒ~•Œ„ˆŽ‡Š€ŒƒŒv‡˜…‰|„¤’š£ƒ„ƒƒv€w…‚ƒœ’‘މ…~’“x‰‹y‰‘ˆ˜w–ˆšˆ……|‹ŠŒ†‰ƒ…‘‡}…‘}r•”†–tu§^Ÿ…‰‚‚™ˆƒ‹—šŠ›“|žƒ“ƒŒ~„ŒxŒ‹Œ…›„ˆ‹‡]pŒk‡Š}€kŒŠžˆŸ˜”“”‚ …u„Š‚‹~”‰w•¢}mŽz‚†|…ŽŠ†““zއ‹‘†Šk„€‹—•„”„–wŒ…Š‚ŽŠ“Ÿ‘r˜Œ{zŠg•„£ˆ‹’ŒŒˆwŽŒ‰Œ˜—Ÿ…€”Œ†“‰’s‹†ŠŠ~Ž’Œ†Œ‚}ƒ‰v~•‰•Žf‘Š€w‡z•‚‰ˆ˜Œ†s‡¨„£|Œ~~“„}“—w‰„˜‹z {q…„‚…”„ŒŽ|€w…€’zz„…™‡z…}wŠ{xƒˆˆƒ€^}…†‹‚…Œx†‡‚ˆosp|‡‰†ŽŠ€‹ŽŠ†ˆs}„‡‡~І–xtu‚Œ‡†oƒ‹‚‰wys¦h†…ˆiŽŒ€ƒ„‰‹|…|m~nyŽ‚„ˆ‰m„‚‰‹„ˆŒk†ƒvrz…s~€ˆt‡‚¨Œ„€y{‹w”y†‹Š„{„r{r‡s—Ž~‡€y“{}ps‰{v|…x†€‚ˆ“€|y~ˆƒ|‚‚‡‰€ƒ~…Ž„Œ~†‰~pŠtƒŽxƒ„ƒ|‰}~…uˆ~ƒ†€ˆ…ƒ€|p‹…}z‹x’Ž€{ˆ{‰Š‰}†š|…І‡Šˆ›šƒ‹‚u‘“†’ˆ~“‰‘~“‰–‹u’—‡™›•‹‰ŽŒ}ˆ’•†Žˆ‚…‹Ž™†—Œ’uzŒ„|––Œ“‚’Œ—†’†™‰Ž˜‹“…–uƒ“}Ž…~€ŒŒ|•}‚ˆ}Ž˜‚‹„’{}„ƒ”˜‡šˆŒ‡‹—…|Š„‡ˆ—‡ˆ‰•†ˆ‰…†•—Š‹…‘—”ˆ‰‹‚ŽˆŒpŒŠŠˆˆ…““‚‡~Š˜‚‹•€€}œ–‰ƒŠ‰Š‡‡—†“Œ…—|‰”’Ї†Œ–œŽ‡Ž•‰‘†‡—’‰€Œp‡‰‰ƒ”„„Š’ƒŒ’€˜—„{˜Œ‚u€‰‘‚ƒˆˆŽ{’—ŸŽ‡ŒŒ’—šŠ‹’’‡‹€‚‰Œƒ‹Œ‹‡–‡’u}•‰|‘“†Ž‹„ƒ–Š|“‡†‹˜Ž‰’”Œ‘Ž{‘|Žƒˆ“Ž‹~š€~ŒŒ‘ŒŠƒ‰‹}†‘˜Šš‘„†ˆŒ‡ˆŒƒŒˆ‹Š‡‘‘†‡…ˆ€ƒ‘ˆ•ƒ†Ž‡“„•‡’‡‘ˆƒ†Ž„”‰‡vŒŒ‚’‘ˆ“ˆŽ–ƒŠ‹˜ˆ„ˆx‘˜‹€†‹‰‹ˆŠ‹‹ˆ‘Šˆ‰•„’ˆˆˆŠ‡˜‘Ž…–ˆ‹Œ†‹z…ƒ‘‘‘‰‹…‰ƒ|‡“…’Œ†Œ–‚…†‰t‡‹‘ˆŠ‡ˆŽˆ€…ŽŒŠ‘…Œ‹”ŽŠ•Žˆ‡”„‡ƒŒ†ˆŒŽƒƒ…Ž‹tys~“‰Š‹ƒŒ’‡Š–”‰•‘†‘Ž’‡‡ŽŒ†ˆŠ‰…ŒŒŒ‘„€Š‡xŠ‘„ˆ™‹ƒ‰‹‡†’ˆŽŽ†‹„‰„˜‡ˆŽ…‰ŽŠŽ”Œ‹Š…ƒ“„‰Œ“‘‰‡ŒˆŠ‰ˆ‡„Š‹ˆƒ†‘ŒŠˆ‹ŠŠ”‹•Œ‹‘{“ŒˆˆŠ‹††‡‰“Š–ˆ‹€ŒŒŠŒƒ‡ŠŒ‡’‚‘Ї’†{“yx§‡“”t‡Š‡Ž‚u‹“†ˆ‡ŠŽ}—‡‘€Š‡ŠŠ™~œ“¦–‹Vˆ‹‹Ž•™’€›‰‰‘r‚wt…’‹…_‹ŒšŒ‚~‹ƒ†‹€’‡“‹„•|n‘‡†zŒ„“ž„}yŸ–ˆt‘†Œ}…„‹ŠŠ”‡y‘gywˆŽ“|™š’sŒŠx}Š„”„ˆ—€…zu’“’ƒ‹…’Š†Šƒ“ƒ‹‰p™†‡˜‘ˆz–|ŒŒ€„nˆ‹”q}†™}–w–†€•ˆ‡‡ˆ†Š‹—v€……ŽŠ†„†—}ƒ{~‰ˆŠ‰w˜Œ•‹Ž…y†ˆ†Ž‰„ˆ„“ކ„˜‰†˜Œ–‚…›Ž‰tŒ‡ŒŒŠˆŒ†€ŒŒ’‹Œ’މޓ—Œˆ‹ƒ‡‹ˆŠ„„‹Ž‹‡ƒ–‘ty~’~™‘†˜Šƒ’Œ’’˜„”ŒŽŽ’›Œ‡€”Š™ŒŽŒ€’€†Ž†‹‹Žx‡x‡•|…™Ž‹ŽŒ‡ˆŠ}’‡ŠˆŒ}’…„ЄЕ‡”…††…•‘•†Ž„‘‚‘Ž•‘“‘‡†Ž‘ƒ‡‹ŽŠ‰}‰‘‚މŒ‚‡Œ‡‰‹’”“}›†‘ŠŒ‚ŒŽ‰‘ˆ‰†ˆ‘„†Š|ƒŠ………ƒŠ‘†ˆ‚’„Œ“‘Œ‘‹•…ŠzŠ‚ƒ„…w•‘Ї~u¥‚˜ƒ‹”†ˆ’–}w}š˜‚„ƒŠ‚аp•Ž‚„–„š€†v™ƒ…l–š‰••‘‚ƒ‰‡ƒ›†y›‹Ž„ˆŽƒ†‰v•—ˆžˆhŠv…y”y‡}†Œ“‹ƒž‰’—~‘•ƒ’’ޓЂ‡…—ˆ…v¡ˆƒ…•¤‘q›œzwŒlzЉ©‹¨‚}‚‹“ƒ…–—„†‹ŒŠ“‰’“z…–ˆ~„‡›‹’“|y~ƒ‹{‘Œ„u€‡š|‚“‡““’–‚w€ ‚”ˆŠ~ˆ‰|•Žt…›Ž~‚k~‰…ŠŽznƒŠ•‰{vv’yy|…‚}”†…‚uŽ~zr}}‹ru†€|‡ƒs„y‰€mˆzq…zxv}z{u€‡Š‹Œy…lŒŒ{|†|{Œwv„†|„Šxvytu‰ƒ€s}”…k}‰‘sz‚p—xwuƒ„}zxz}|„{xv”…wpŠ}|šŒ‚}‡‚z€{|}€v}}z›—z…‹~|}ƒ€~x„~u{z}u…ƒ…|ƒvwyz|‰~‡}~„sƒŠn|rƒ…{|ŒŒ‚}†x€€€ƒ€……ys{†sƒ}‚„ƒ…†€‚zzw’‹……Š‹‰ˆƒ…€s{zŽ”Œˆ…ŒŽ„y‰’‰’Œ~“€ƒˆ‰‡s‰Œ‰ˆ‹‰Š‘Š…†Œ‡ˆŠ‹Š•ŠŽ•ŽˆŠ“„’…ƒ‡ŒŽŒŠŠ€‡‡•Ž’txsŽ„‰‡Š”•‡ˆ–“†‚–“Œ’‘’††‹‰‹‰‡ƒ‡–ƒ{’Œ‘†‹|ˆŽŒ‚z“‰‡˜ˆ€†Š…‡‘„“‘ˆŠŒ…‡‘…–„Œ†Š‹Ž“ˆ“”…‹Œ‡Š†‹‡ŠŠ‡ƒ•’‰‰…Œ‘ŠŠŽŠ‰‰ˆ’ˆ”‡Š}Œ‰ŠŠ‹Œ†ƒ††“ŠŒ“ˆ‹…ŒŒ‹ˆ}‰ƒˆ•…ŽˆŽ’Ž„…xau†š~vvls—xrrb|wŠƒws|Ž€ssx}|u‚e™†yxuslumy`hswzl~ƒr\|{s‚p~o}{vxvg~{z€nxxo‚w‡spk…v{y€t†vz~|…}„ˆlw|Šosx{}or}rmku`‚ˆvŒpkzsk|sxxty nyyfh}y{uqt{ƒ‚jyzyy{vjzyx_x}f{tokvxwo~qkprrwwvs~~xruvw~}sxvk}{y}sv~vwut„v~x{x~mjqhos{€ox|rsxxz~||€yyuq}|‹u|wy{y‹‘žst}ˆ}{}zŠ‹‹€˜„vˆ„{†uyŠ‚…€„qp‚}}ƒ~‚~‰„„……€~zv~qrtƒ~„‰‡x|„ƒzpŽ~ƒŠˆ…Žls~x‹„…uz‰„vw€q›l‡ƒ{h†‡~ˆ‹}Œ‡zs‚Œ~‹‘|}‚n}vu˜…†Œs††~v{}‰‚€}z}­¡‡|†ˆ}‹{„†u‡Š‡‚‚su{p…v‘“u~~~ˆ„vƒw…xƒ„ŽŠŒ…}ˆ}{xˆ†ƒy…‚‡zƒ~}‰‚y‹€vˆƒˆ€…€}„uy„x‡€ˆ’…‡ƒ…‡~jˆw}€ƒ|c~‰‘Šyuwy|©†pzdzp‘~{z~u›Šys~v‡vŠjˆ†vwwvqteƒc|uywpt{v…{h||r€tzm|„x‹yty|‚qysw‡}||vaj|vv€sz|ƒ„{Œˆxys„rryuxqqzro~yk‚€x}v|vœx|w~vv|¥v|zst{xƒsvozv~|u~‚€{~wq{ƒ‚r|}|xy{xpvztt€{uszw}vy~~v€|txw||p{xwwz}zzqy|„}xvu}}~‹{€tsutuu~~sv€vƒjv{zv|y{‚–{~ƒ{€‚Šz|}{xЇˆ’‰~†zŒ€}Š…ƒ€•„‹‹…}Ž}z‚…‹‚‡oxކ‹…‚˜‰‚u’ƒ„~‚r…rm‡|„‚ˆŠŒ‚|ƒ…{€Šˆ”~Œ…‚‚€Œˆ‰‘sx}}…ˆŒo“z~ƒt™m‚|j†…ƒ…‰‚Ž|m|Ї}ŒŠ…†‡l†|…ˆ„Œ‹~‹†€y{‚}„€‰‰y…³’|†zŒŠtЉ‰‘{|{|w„yy•€‰|‚}|s†u‹ˆ‚‹ƒƒŒ†††€€€z}‹†€‚szŒz„ƒ…€y‹{†‰}y‹w‘}ƒ…u~Šˆ‡}’„…އƒ†€rЇ}}‘z’•†~y›~ŠŒ…x‹gp‡—‡—œ{ƒzy~Ž}t†ˆ’„€‡ƒv‘›‘w~wr•…‚˜…y‡”……zp wƒs’ŽŠ‹}„}†tw‘•|vzŒ–|€Šy~’|†|ƒžou{~†w–y{Œ‹Žƒ|‰“„z€ƒ‡}ˆ‡‚”‘”…Š}†~p|o‹ƒ€oŒzxƒ€‚¦{ˆž˜’urš‡{zv…„ƒƒƒ†–cŠxuy‰Šx¡{xz…xv…v~•ˆ{}}w{x¡}‹}Œz–ƒv€uœ€x|y‡™‡€‡wtx„€€yƒ~}–€~€ƒ{”€‡|–rˆŽ“’z†~ˆŠ“Œƒˆ”ƒ€‘މ•”ƒ„‚‡„tŠƒ‘††‰‰Š~‡”†|ˆ…„Œ˜‘”‡•†‰…Š}‡”Ї„‡‚ˆsx‡}”ˆ„‘‰”‹–‹‡—ŒƒŠšŽ‰Š’‘“y‹‘ƒ’ŠŠy‡Š†|–‹‹ˆˆŒƒƒŒ‰…|‹„‰—‡†‰ŠŠ‰’‘”†ŒŠ‹…ކ’ƒ†ˆ‚Ž’†Ž…‘…‚‹ˆ†Ž‰…ˆŒ‘”Œˆ†Š‰Œ“ŒŽ‰†‰‘‘†‘‡–ƒŠŠ~ŠŠ‰‚ŠŒ‰‡‰ˆ’‹ŒŒ•†‹†ŽŠ‹‘‡‰–‹‰•Ž…‘ƒ‹‘‡xsŒ‰ˆ€zzzt|ƒyx|…{{”|y‚~•Žszrqz„rn‹w€zr|x~…n}{y„soƒ{}|qƒ~v†{€yw“|…zvzˆ„ƒw{vx…€zuŒnsˆr|€vv}†~~‹€ƒ‹u}uŠrj…€zy{†}v‡~x…ƒ”y{€q‹{vsx„„ ~{|€€}n€}zx€v‘}|z~~ƒƒw…€‚z~€sw{vt}‡r{|}z~~{~y{~w†|~{wxw}‡}r€~‡‚†|}‚yƒ~€Œƒƒ{}…yx‚€xzƒ{„u}{}{ƒy|ˆ‰{†|‡…Š}„~|ƒwys‘x}zwv†w}}‰w{‘€|tš‹„vztp{‚tr‹|tzvx€~‰q†s„yr‚~…}p€~t†|‰x~„ƒ‘w{wЇy‚qrŠ{usƒ€k|xt†…~‰Œs€y‡€lztsƒ{uˆ}y‡†yŠ|zyo‡}}x€{‰£€{‚„‰|ƒk}}{vw”‹~‚{€…ƒz‚{~‡tu||x‚ƒƒw{yz|{€|ƒx€}{xu‚~{zwƒ~y~}ˆƒ†}ƒƒ|„ƒ€‚‘‡‚€‚}…|~|ƒz€‚{…t€€{‚xy‚Œ~‚ƒ…„…‘x…}~…yŠŽš…¨€y˜†z‘x„rŽ–}Ž‹‹‡“xyŽŠ…Ž‡Žš‘”—›~–”‹Žƒˆ‚„€Ž©Š{”ˆŽ™y’ˆ„І€‰‚_•£ž£‹Š~‘Žs‘‚”…‰„œ†”ƒu}€‡l–‡ˆzŠˆ…|~Š•‘‚‹‹ˆ‰wŒ{†Šš|‚€‰vv‡ƒ~ˆ‡Œ}—•‰œxƒtŒq¢}•‹ˆ–x{‹“„‹‡‡‘Ž‹„”m‘‚vƒ~‰Šu…}zŽ…zz›‘‚‚€…†–z†ln‡™už”}ˆx{~Šˆ‰‡˜™w„‡‡‘„ƒ‹|Ž}Œ‰”}‡}¡‚„|’q…€ˆ‹Š|“z”¡€|~‰Ž†©¢~„w~‚†ƒ‡…„–|j„Š´|‚ƒŒš”~•Šz|†§}•ƒnrƒƒƒ‚ƒz}‚l{t‘…‘{u‘~v{vŒ…~}jƒq˜yˆ’›xˆ…ˆˆ‡’‚}¤yŒ„ŠŠ†‡pƒnvuŽ~|†‹“…†•Œ„…“†‡Œ{Š”ˆ|v vr|„ƒ~j‹‹•ƒ¡Šƒƒ†~ˆ‡€•~{„…v‰Ž€—~†|™u†‰…ˆ€€vˆ‡{“€”–…z€}‚‰‚•‚z‡’„‰m…~}}|€Š}†sƒˆwŒŠ„}—†ˆƒ„ƒŠŽ‰‰†t}•‹€}|ˆ€’„{Š–‘†…ˆ}‹ƒz‚€“}Œo†‚Œƒˆz{ˆ“p™‰v‰ƒŠr‚no}lƒ‰Š}ˆ{ƒo‘Š…zŒ}†}v”’{wqr‰”Šl††s~‰|—k†„€i{|ƒzz‹ƒ€x‡vqy€‚{~–…u}nunlŠ~„w˜†yy}ƒ‰x}„‰x||§Œ€yšyz€y‡|z…|…wtxs‚zˆ{}}†„|w}u“„‡~ƒ„o{„…{’|’qx||Œ}‹~‰{„w€‡ƒ‹†ˆz˜q‚tˆ‘z—‰|v‘ˆ‰„u€p€‰‘‚’ƒŠuˆ…svxtˆˆ‚„x‰tŒw‚“}s“x|Žˆ„—{|r”„‚‚ކ‡ƒŒ“†yŠ{–ˆ|Žfƒ…‰ˆƒrŠ}|‡…}ƒ€…‰†‹€Š’y…~Œ††’uˆzˆxrˆ~€mˆ‡‚zˆs~‘w“s¥~}z‹–’™{…r€†…yˆš‡w‘˜‚xŽŠ„uy‡wŠ‘‹‚y‡x‰’‰‚}uš‡Ž~Ž‘yyz}w‡vd‰ˆ‹‡•…‡ˆy˜ˆ…sŠˆ|›€’‰st‹ƒuj…††‘ov~‡…~}†žoysœm‰Š…{u€‹€‡‰uŠ‹„‡†’~zƒm‰z€wwƒ‘“›’|•ˆƒˆp‹†ƒ‡u}¡r“„‰v‰†……ƒ‘ŽŠx{Ž•ˆžƒx€’ƒŒ°……u…Ž›‘Žˆz‘‹~…u€‘Œ€—‘’„ƒ‚ˆŠˆˆr’ЇŒ‚ŒƒŽ‚™{{‰p–vŒƒ–{…‹•“ªŒ‰“ƒ‡ƒ‹Ž–„„Ї‹‚Ž“„Ž–™“…––Œz–ˆ‰|~s‰‰‘§Œ”†Š…}„”„‰„™}‹ˆŒ‰Šˆ‹Œ•“Žˆ………ŒŽ‡‹‰|ˆŠ™‡‡ˆ~ƒˆ”v‡‘Љ‹“”‹’†‘œ‹Œ€ŠŠˆƒ”•…}“ŒŽ”„‡|pƒƒ„ŒŒŒ{‚‡ˆŒˆ‚ˆ‹’{‰•††‹””‚‹sˆŒ‰‹Ž†…‹„‰“‰z‹…ƒ‰Œ’Ž“–Œ…‡ŽŒ‡‡‰…ŽŠ„„‰‡Œ‰”’uzd‹z”‹ˆˆ“ŽŠ’‘Œ‰™ŽŽ‘‘މЇ‡€‡‡…Š‘‹‰ƒ‹ŒŒˆŠ‹‚‡ƒxŠ‘‡‹›‰”ŽŒˆ…‹‘†‡‰ƒŒ…„‰‹Ž‘‹‰„ˆ†‘ŠŠ’ˆ€„„Œ‹‘ˆ‘„‡…Œˆ„€ˆ˜†‚Бޔ‡‘‡‘ŠŽŒ—‘~y›Œˆˆ…ˆ„Œ‹‹’‰Ž‰…ƒ”‡‡ŒƒŠ‹‰”ˆƒ“‹‡–‘ƒ{‹yŒ‰…†‹|ˆ‘{ˆ„‰Š‚•–Іt…“„ƒ‘ˆ’Š’z†’”‰sˆ‹•‹™–…—†Œ€”Œˆ…Š„““‹ˆ•uzu…~Љ‹ˆŠ‘†”‹Œ‡—‘’“™Š’ŽŒ€ƒ‘y‹ƒxˆ–‰Š‘}‹‹‹‡†ˆŽ|ŠŒ‰”›š‡€Œ‰…‘†Œ‹ƒ‚‰”‹Ž‹”ދЅ‡“‚‘‘ˆŠ‚Š‚“‚„Š„†€ˆ‹‹…|•††’’ˆ‹„‹Š˜ˆŠ‡›†}‹{’—…†ˆ‰†‡ˆ‰‘ŠŠ‡˜†ƒ…‡†ŠŠ˜‰ƒŽ‰~‡Š„{ˆ‡‹Š‡z…—wƒŽ‡Œw‘“„ˆŠzu„އˆˆŽ’†“Љ…Ž‹’Ž’’““Œ†‡›††‡‰†„Œ†Š‹ŽŒ”…–‰”ty~ˆ~’‰†ŠŒŒŽ‰“‹˜‰€›Œ‹‹–™Ž’†—{‹Ž‹‰}†ƒ–‡}~ˆ„„‚…ˆy‚ˆ’˜‡‰Š‰Œ‡”ˆ”ˆˆŒ‡†ˆŠ—‚’†•‰†ˆˆ„‹‘‘‘‹ŒˆƒŠ~‡“‹ŠŠ„Œ‹“†Š‰ƒ‹ˆ„“…~„…‘ˆŽ’‡ƒ†}›ŽŽ‹‰‹Š’‚…–‡•‹Š“ŽŠ‘ƒ‰ƒƒ–‹“–“‚Ž‘ˆ•„‡…‰“…Žsv‹‚‡€u„ƒ~™Šƒ‰–„‚›€}ƒ‘|ƒ^t‡…‹„„ˆ‚‘ƒy–ŠŒ‡ƒzp}sq{‚‡•‰ˆt•„z~€‚‡}„€†‹…{Їˆ”xx‚‚†’•ˆpƒ€‡„u—m…€†fk†‡ˆzˆs‹Šyn|ƒ}Œƒi‹„„‹ƒ’‡}‹…n|{v|…{‰zƒ«‹~‚‰||‹{‹‘‚Ї–‚‹‚w}w€y…|…‰x†qwŒ‡~‚ˆ†‡yˆ}{‚{iŒˆ€ƒ‚‰…{Ž€†ƒ†‰|‡ƒ~vpy}‰z“}}wŠ‚‡„Œ“‡}†…p‡|€…p‰‰ŠƒŽ{…Œ|€€}‰ƒ™ƒ‘‰‡†ˆŒ…uƒƒƒ‰l–‡˜†€~„…v“ˆ~•~xwuzo‚}~¢Œ‰t…wt‡†t†‡™ƒŠ‡}ƒ™{‡Œ{{€†„ž…r…|v~wo‘€Š…pª†€y‰ƒ}xŽ…„r~ƒ|}Œt~~Šs†‰{|‚‡Ž‡‹‘„‡|ƒ‡€„†ƒ‚~°™€Š†€|Š{Œ‰ˆˆ}}‚‚Ž„ˆƒ|Ž‚Žwx…–‡Ž„ƒ‰€†Šv‹zƒ…‚…{„ކ€Œ|Љ†x‡Ž‚‰š€{ƒˆ…’ˆŠ‡v‘ƒ‚„ˆ„Œ‹Ž…„Š‚Œy†‹‘x‰x…›‚”‹‡™ˆ—†”uŽ™˜’…‘–‘†’ƒ—ˆˆ…†ˆ{“‡˜ŠŠ„‘”‰‚ “‹ŽŠƒ{}ŽŽ€z“‰‘“ƒ{–Œ”‹„’Šš†…|”–‚‘’‚n‚•{|”vŒ‰“‘†‹‹ŽŽˆ†€…h‘ƒŒ‹‚†|ބކ…†|‰““Š¡Œ€ŠŽ{u“„’Ž€’y‚r†‡ƒ„’•†”“‹†‰{˜ˆ™“‚Ž~~v‡ƒ~Œ–Š„‰†‹}„”‰‘—‡Šz{~”‡†Žš‘~Œ‚…‘iˆ‹‘’€ƒˆu}x“ˆx|€vx‰‹‡Š…‘‹†x…w„}”v‰†‚—€{†‹ƒ{‡v{‚‚|l{~„•}Š~}‚†€{ƒr‚xss‰‚‘І˜†{ˆ†ƒ‚}Š„ˆ|ˆ–†Œ”ys}†|q€”xwxuk‰‚€k”ˆqކ‚wˆ‰nv„|’n…€m‘}~’’…Œr†…z|{„…{…†y†yµ”…Љ~y†{’}|…‡”Žy…}|v‰xŸŽx†ƒƒŒxzn…v‡w„‚‚ƒo‡…{„z‚’ƒ~‚zz†ƒƒƒq†’‹x‹Œr‹‚˜„„ˆ|ˆ€yƒx•|‰ŒŠ„ƒ€‚}r†w|„w‹’zŒ‡Œ•Ž„‰{“‰‘~–•ƒ…†‡ˆtŠ„’…Š…†‘Žˆ‚††‹|Š’“‹“‹“‰“†’‰ˆ‘‘–ˆ‹‰~ˆŽtxy’‘‹‹‚–‹•ކ”“t—’‰Ž‹“}|”ƒ“€Œ|ˆ}—~ˆ…‹ŒƒŠ…€zŽ‹‚•‚…ˆ„‰Ž”•ŒŠ‹ˆ†‘†Š‡†‚…މ†“”†Œ–„ކ’‰Œ“†‡„އ…“Ž•ƒ‰‹Ž‹„‘‰’˜ˆ“‰‡ƒ”}Љ~ˆ…Œ‡ƒ‰ŠŠ…‹ˆŒŽŠ”„’€Š€Šƒ‡…ˆ’Š’ƒŒŠ€‹Š{…x‰Š‰‹zŠ‘ŽŽ†‘”ƒ„‰‚t‚Œ‰†‰‡ŠŠ‡“ŽˆŒŒ‰Ž–’Š”„‡™Ž‡‰…Š„ˆ‡Œ†……•†”ty|Š~ŒŠˆŽŒŒ”‚ƒ˜‹…šŒ‹”–‘€ˆ‘…Š‚ƒ‰’‹”ЇŒ„ƒ‘“„{‰…‘˜‰‡‡ˆŽ‰ŽŠŒ’‰ŠŠ‰Š†”†’…“ˆ……‹‚•‚’Ž„†‡†‘‰‡‹‰‰Š‡Œ€Œ‰‡Ž‘Ž”‰‚‡ˆŽ’Œ‘‡™ˆ…}‹Œ†ˆ‹‰††ˆ‹–ˆˆŒ’“ƒ…‰—–Ž‹†Žˆ{c”Œ~}|t~}ˆ…r€‹p—‚„w€~™…ts{s‰ylq„ƒx…|v€~ˆl†v{yxv|vs‚v‹u{z~€|‹‚…tŠ{y~}|zoyƒ~u…wzƒ…‹€–‰‡vƒn…wworyu„†s‡‡q…}Ž„w{‚v{…s†œ€…y€‚€‚„v‰xz~›€‰‡t|y„ƒ‹€†n†Œ…|s}uustz{{~~t}„}}zrvˆƒn†u{x~yzyˆ„ƒƒr~†ƒˆŽ|ƒƒ„~ƒ‚Œz‚w}„w€}yv€„Œ|‰‚’€Šyƒ||ˆx|‹{}‹~xx‚ƒŒ‚y‘}y‘r„€wqxyx‡ƒzq‡x~{ƒy|š„Šo—ƒ‡z„lŒlu||ymƒŠ…sˆŽy{ux}{€v}{†ˆ‹tsoj‡‰|j€…|dr‘~–g†ƒz‡aŠ…xr†Š{Š…qu{Œ}‚„o€x‰”xƒ‡ƒu‚{‡r~Œ„‡‡v}ƒ©q}‚Š~y…woˆz„yzzxnxs€l€‹}uŠ€gy‰r‡t‚Š…}…‘Š€}‹{„}yvxv{zq{„މ‚}‚…t†ƒqrowyu~ƒlŒƒ–€‡vƒ€—’ƒyŽu†…zx•z‰Œ€—’u“†‘z•¨„‹‚xŒ¡•ŽŒ—Ž…˜ˆž…€‡š€–•w““‰‡Šš…Œ—‚’ˆ”jtŒu|U•uƒŠ‘wš™Š‡“{œr—‹z¢‚€w••š…n‹}ˆv…Š‹•…€—–Žƒ‹†”wž|•Œ”}•~‰y‹Œƒƒ‰‘–u…†z~‚‘–ŠŠ—Ÿˆˆy|‰’|”ˆ‘Ž’”‡‰‰}”Ÿ†‘˜s†}~…––€‚ŽŽ‚nvŒˆ˜’—Ž—…p•Štƒ‚…‹~•‹“Š’•ƒy’Š˜~‹ƒ€‹……xƒu¨†l•~s†’¤‚n††—•rv}z„tz‚{{˜}|Šš”m‡ywƒ”|i˜ƒz…}rys†€buzƒtr~t}voš{ˆu{ux†‚sz†ˆ†…yyx{€wˆq|‰€wŠ‚|p|Žtx‡|Šrwr“yp‡‹…‰†q||~„€‘s•zzœ{w|‹r†–~{{w‚„z‚Œ…~r„w†•~r{ˆ~…yˆ…€yw‚…p{~†„—†~z‚Š‚w’}vƒw‚~‹€˜~‰€‚xu|€‚†ˆ†„‚xz~…„z‚„€„’s|~…xt|„{|…€~~ƒvŠŠ‚…{‡„„ˆ}~wyˆ‚£‚Ž™…‚”ƒ†xp€¡j”€–‚Š‘—…†—ˆ‘‹‘‡Š„y…ˆŒ‘‹‰•—Š„qtŠtv}ƒs…Œ…—›Ž’Š’’Š|’…‚Љp›ˆ…‘‰–zl“wŒ{’”–†“Œ˜Š‡–€”ˆŒ‘Š~uˆ„‡Š{†•ƒ„‰ˆ’”’–…ŸŒwŠˆƒv…€}ŠŽ†–sЉu…Žˆ”Ž–~Œ‰ˆ…•‘„{Šƒ‹ƒˆ‚Žz“‚‰†‹‹l‡˜’Ž‘ušˆ…€z{𙋑–Œ”„p’‘†“m…ˆ‰’†’Š‚~wœsvn‚‚ˆ”‡‡ƒ†„‚‹ƒ‹‡‘„Š {{Œ„ˆ‰„y‚‚z|ŠŠ…yex‰…ŠŒ‹˜‚‡wއ{……~s{tw…‰’†€Ž€€ƒŽˆ|‹˜„‰…‰€†„—xouˆ„…—q…}…‹‚tœt‹…ƒˆpƒ……~Ž{w~x}—p…‰ŽrxŠŒ—‡‹‰…w‰|u~‡}„v‰‹‡„¡ƒŒ~‰„‚w }††‡Œ{‰€w€™w§‡v|•}ƒu|˜t|}‹…—‘}ˆ|„~€vˆy‡‹„{–„‚…‚Ž’}“ˆ„‘{‰Žu‚™‚ƒz€€x}’|ƒŽ~|}‹rŽ‹z}¢ˆ‡|…†ŠŽŒ{ˆ“z‡ˆ…’†ˆ†€v‚Š„‰‚Ž‘‰‹ƒ‹‹‹ŠŠŽ˜ŽŠ‡›…‡ŒŠ€‰‹Œ‰ŠŽ…‹‹tz{Ž€“Œ†‡Žƒ’‰Š—ŒŽƒ—‹ˆŒ•‘•xŒŽˆ‘”Šˆ‰‰ŽŒ‹€—ƒˆƒƒ„Šƒ…ˆ‹z‹’}–…ŽˆŒ‹‘…–‡‡ŒŒˆŠˆ’|‘†•ˆ‚މ‘‘ŠŒ‰†Ž‡ŽŠ…މŒŽŒŒ†ˆŒŠŠƒˆ…ˆ‡Œ‘‰‹ƒ„†’†“‰ˆŒ~ŠŽŠˆ‰Ž„ˆ†‘Ž‹ˆ”‡Š†Š‹ŠŒ†‚–Š”…†‡™†…„˜w†œ…ˆ†„‘„’‰€g †uˆš“‚ŠŽ„}”‚€Š“‚‚ƒ’…Ÿ‡›ŠŒ–„~ƒ‰’Ž}‹•~m‡uˆo’‘j~‰†„š¨œˆŽ‹Œ’’Š ˆ~Œ…†œ‹Š“o™t‚{–ŠŒ‘’•’‰„x–…‡™„˜‰•‚ދЄ€’vq…•“‹”—“u–ˆšwpƒx„‰‡’“¯~~y~‡–“‡““‘˜€‹Ž‡ˆ’‡Ž”x|‡‡Š›‚œ””uˆ…€t‡…‹€gƒ›˜šy‰‰”“‹€zx‰œ”Œ–œŒo…’˜’„‰|ˆzzŒƒwˆ†¬‡~€xv‚q¢„ƒp‰‰‰vƒsƒƒ‚{{}~…}’’…Š‹xyyy…}llˆu|‰y‰z‹…pŠƒŽ|qoz}q}z‚“‰‹v„„|xˆv}‹{†ƒ~€{ƒˆ…‚Š}tz~xnƒ‡m… |”w†~Šlh‡{s|†zoƒ†x|‡‘y…svŽ‚o‹|z|ˆ†‰‚‡ˆ‡‰wz„†z~€z¦†~€™|{ˆ‹‚rˆ„{†||r}‚‡ƒx{}„‡~xt{‡€‡}‹†ƒƒv{€~qƒ‰ƒ‹|†„Œ‚…‡Ž‚‡n„zˆƒŠŒv„‡x†|ˆˆ‹“‹ˆ‡‰ŒŠ{‚ˆ|vƒ„|ˆ‡„y‚|‚ˆ™†„‰„x‰vx„…‘‡h†‚‡†Œ€„~…ŽyІ‰„‡p|oo‡‡‹~‘o‰‹…‰‚ƒ|Š€ˆz†‘…‹{yy‡‘‡o…‚‚€w†tšk…€€‚i€‹‹~‹{ŒŒwl{‚ˆx”‰†€„k„z€ŒƒŽŒp†‚~ry‚y|‚‡ˆwƒ¯‰‡„x{‰x‡}‹ˆ€~t{r‚|‚Œ}ƒ‘}„q„s‰‰~‚€ˆ‚Œ‚‰‰…‚zx{‹‡|€~~†‹ƒ„~‹‹€ˆw‰…zu„ƒ€“|€ƒƒy}x‚wŠ…ƒŠˆŒ…†‚ƒl†vwŽxxˆ“„|pˆ{‚sƒ•y™|‰Œyu‡u|}…’~nŠz…ƒŠ}twŒˆ}v¡z{~‚sƒmlƒn~x„‚ƒ|xr€|~„y‚|…€yvƒ’‡~}rs}‚†‡~m|ˆƒnˆ‰–m‚|}tj„r{ix‹‚|‡i~w„Šx|Žƒƒ€lŠoƒ†|z~‡tˆ}€n~„p{†vy¬l|“ox†w|‡t€zŽ|€|nxn{wn‰|~„|xtvtˆ‡}€‰n‡|~‘~|vs}oxƒ†~‚}†ˆ‰†ƒ‚nru„s“p~~rƒˆ†‡sŒ†u}ŽŠ…‡ƒˆypƒƒ}‡‹w“‚ƒŒzw‚‘{y›ƒ†~—‰vƒŠvŠ{Šˆ€}Z†ƒ…©‘Žy–ˆ‚€…o‡pp€„‚~†ˆ€Œ„{‡‰ƒ†q‡|‰„‡|…Š‹“vrv„Š‹“…oƒ“}ƒ€s¢jˆ‡}…i‘ƒ†ƒ~Š…x†„|m}u‚|ކЋl†‹€•†‹r‰xmz‡v|}€Œtˆ‚ª~ƒŽ‡yzˆw™Œt…ŠŽ†|†t{r„tˆ‘~‡ƒzŠ{zrƒsއ{‚‚ˆ‡‚€‰zyy{†„{}„z‰ˆ‡€Œ~„Š‹‹{„Š{uŽ}zw}„‚„€‡vŒ|ƒ†~‡†~|~s…|w“w‡…}ŠŠ~„yŒ{‡€yyŽ€—‡{™‰~x’{‹…†n‚ƒ€‡‰ƒƒ‘zމƒ„pˆop†„ˆ‡—‰Œ„u†‡x„ކ}‡†‡‚€ƒ‰‹zzwwˆ……Žoˆrtƒrœk‚|i†|ƒˆ„„‹tjz††zŠ€€l‰|Œˆ†‹z|t}ƒt‡‹†t„…°‚}Œ{{ˆy…”pŒ‘†||{zrƒsw‘‚}{€€r…t‚Š€ƒ†ˆ~Š„…‚ƒ|‰x~††{~n„ˆ„€}‡‰‡{„zwuˆzoŠx†‚r……‹y††‰†…‡†…m‡†„€†w„‚ˆ‹‚tƒ‚w‰ˆ€œˆ‚‰ˆzœ†s{‚€‹mwƒ‡Š‹|{~ˆ~}‡†œ€m~pp~ƒ“‰—…ƒs”†‡Š”Š~Œ‚€†‡ˆ‹Ÿ|zu~Š{oyŠ}{{sjŒ|ƒŒi•…ˆ†Š‰ˆ~“zzl‚~…y„ˆŠ~n{„’–Œx…„€m{~u„|}‹w„…¯¢€ƒ}~ˆz•„{…–Š“|yt}uˆqˆ†~{Š}|mv}…‚~„ˆ‡„Ž~ˆƒ…z’†€€ƒ{Œ‰~xw~€Ž„vl}vŠz}‰}q{†z„~|†‰|Œƒ„‚†pŒ†ptŒ{{ƒ…€‰‡‡†Žˆ–‹”‰ˆ„›–‚ƒ’‹u‘‰Š‡…|Œ’“‡zŒ‰yˆ‰“›–ŽŠ€Š”„‹‹’…•ŽŠ†“‡Š’’uzŠŠy•Œ‚Ž’ŠŒ„”“Œ’‹‡ˆšŒŒ‘‹’Ž‹Š|…“€‹ˆ‚‡Œƒ}‘|ˆˆ„Œš‰†}‹|…ˆŠ˜†œŒŽ€‡Š’ˆ”†zЉ„†Œ„Œ‰Œ‹†}‚˜†ˆ—ˆ††Œ‰ŒŠˆ’ˆ‹„ŒˆˆŒ~‘ˆ‰ŠŠ‘‡’‹Ž‘ˆŒ‡~ˆ}“˜ŒŠˆ‰ƒŽ‰ŽˆŽ‹‡‡•~‡—ˆ…‹Š‰’މ‡‘”‹ŠŠˆŠwЬt~’““ƒ–l‚€˜–£‘‘’Š‘v’˜‡„‹“–‹–¥}––€=‘‡Ž”˜‡‘ŠŒxƒq…ucœ~Š‚z””Š–‡‡~…|~‹“}‘‰}„Šˆš†ŠhŠt‚‡ŒzŒ™Š•˜Ž|t~އ€‡y’“”Œ…ŠsŠ€{‡Ž„•s’‰‡—˜Ž~‹Œy‚nŽ Ž}Ÿ”‘”q|†—z…‰‚‹•~‰–}‡‰…Š˜–s–…}ˆ…ˆ††Ž~†‰Št}|€„ˆ ‚“—{…€‚‹ˆ‚€•‹”yŠ„‡‰…~Œ|ˆ‡•‚yy ‹~{–’’‚}“”‡‡~‚|zƒzyy†t}•ƒ„ƒ‰š“~{~t~~‡zbˆx‡|~…‚‰sŽywˆxn{s€vf{}xŒ‚pŠz|ƒ‘…‡‚}x~‚‰tˆu|†v‚Œ‚rx…ƒ~~{“u€vssŒ†h…†ˆŠ|Š}†ƒ„x€‹yƒ}x~|„ƒ…‚zŠŒŒ‚r‚‰~zr„w¥‹†ƒŠ…“|„ˆ‚ˆ†‰ty€u{‹ƒŒ~|w€„wrwƒ†zˆ€|ƒw{v~‚Їƒ‡‰Œ‚…‘††‘‚~ƒ…‹{ˆ††ˆzƒ‚€†z}†‡‡y…ˆŒ€Ž‚ƒ‹Žƒ}‰€~Š{ˆ}œ…“y~Œš‹v“œ•yv… sž~Šœ–šŒ‰Š“š‰rƒ„•}…‰†‡œ‰~”‹†Ž˜†Œ“‰gx„ƒŠ‹Šx‹Œ™z“žŽ‘… ‰vŒŠ†Ž€yz“ŠŠrŒœ‹¡„m‰Œ|w’ƒŽxŒ“‰ƒ”Œ“’~ŠˆŽa‹‘—˜‘ˆ˜~”{Š‘‘‹‹””‹z‘‰‰v˜~txŒz”Œ‰|Œz†„ŠŽŒ’••ž•“‡•ƒ’™‡…™w”•‰‡€Œ‡‹—ˆ†Ž‹Š”˜•†|„}Žx{›…“‘Ž’•tŠŠ—t‹‰‘Šˆw›Šy˜€“†t—€rˆ€•™’}‘|††Š{Œ™™s~†uŸš„Š’—…„˜‰‚™‹†}Š—‚ˆ–‰ƒŽ—ƒ¨šŽ—•’ƒ{‰‘‘}Šuœ†Œcnr†Š|˜“Šs}Ї‚|œ‘ŒŽƒ }—|Š~œˆž…Œou—‡t“xˆ†•™ˆ›Žˆ’Œ€…‡ž™›ƒ z¢ƒ–€˜v’†…‡’‹‹}ˆ†Œp|ƒ–›…–‘©›‚}rŠ‘v”‡’‡‰Ž‡€ŒœŒžx†’„€Ž††’Š{qŸ‚y‚‚ˆ˜«–“”ŒŠƒt{‡}›‘ƒšœ‡~„†Œ›‡ƒ{ˆŠ„’‰ƒ|Š}­ˆv…z~‹—‹Š~ˆƒ‡„‚}‹‚~y†‰ƒ‘‡ƒ‡‰ƒ{|…~“€Œ~q‚‡†Œƒ†€€zˆ‡ˆ‡ƒ|w~ytx„‹†‘~{†ƒu€‹’‰ƒŠ‹ƒ€‹ƒ„Žv~…‚‡‹Žt‚‹zˆx‘p{†{p€†z’†Š–s”ƒŽ…~ƒq„ƒŒ…Œƒ‰‚‡ŠˆŠ„ƒƒ‹†€‡®ƒƒ~‡€‡…~z‘…‡}‚~…{|€…Œ}‡qˆ}„’‘„ŠŠ}‹Œ‹‹}‚ŒvŒ…{{Š~ˆ…‚‡Šˆ„„x„{‰|’„…~††„ƒ›ˆŒ…~€„’ƒvЉy„–€…|–‚„w…‚˜~ƒ˜ƒ|—ƒ~€‰ƒt†{z„…‹€€`„€Š……|”Š|t‘ˆ‡p€op{…‡~‡‚„Š„{…ˆƒ‹„Œ|Œ„‰uƒ‰˜ywu‰Œ{‘Špˆ{Šy~t kŒƒ‰jЄޒ‡„yl}xy–{‹Š€n…}‚ˆ”}Šl‡‚xy‹x{€Œt‰z©‡‰uz‡w›s‰‰“…zv|qŠz†Ž‚…‚{šuxp„r†…v‚ˆ€‹Š†…‚kx}ކ||‚y…~‚}„Š€Žl‡”}q“…–~z‡…|’{}…w|ƒz‹„…wwq…wuu‹Z‚v–{o‚‘ˆŒˆ|Y‡ƒ€Š`…Šˆ|xrs—|}ƒv¥x`Š„€„d‡qroVkƒot}‡xŽˆxr~‡iƒfu}tŽd{€ƒrw”ˆ‰ty’‚“‰|z†›k‡Š~yt}cy†ƒy††…~opvƒ†ƒzyzk{{ˆˆy|}†Šošh‚‘Škt‡{}†rsxhˆ†wŒ‹|ƒuz‹‹}u|‚ŒguЇpƒ|{ˆuŠtr”p‹xp}p‰}u€…tzˆwyo{‰ƒ‚~|j{Ž{m‚q}wvx|s–wztoƒ~zx{hu‘‹u€{…u…zœsrˆ˜——uŽx¦…Œ|‡‹ˆ ~syw†“–—{–‚‹™tŒ|ŠuŠq–u…Š|‚n‡}ƒ…‰~‹“g‰‰—tnx„‚‡ƒ‡’“—›…Œusv†¥„{r’ˆ‚v€s‰“Š~Šˆ“‰’o…ˆw‰tzf€x˜†„v¦|‡¡ƒ¬z„›„txƒ‹mw„‡•€}ƒu’Ž|†Šª‡‚{Žr–v’‹”˜ƒy„ƒ{žŠ…‰Š’œ‡‡€¥y†{–iˆxxn z†ƒ‘|”ƒ“ˆ²Ž|„~„‡’—Ÿ—|ˆƒ‡™’“u€|tu~r‰¢„†vkŽƒ‰~z‚„w’ƒ‚€}Š‚ˆ‰u‹€}€˜|„~t€zz‡†~’wЇ‚‹z||‰ˆ‚y˜{…xƒˆx‡qmƒ‚uˆ‘Š}~y…‹‰{z|}„{vƒŒ‘‚y{wx‹~}n†€z~x•kŠ‚„„iˆƒ†z„‹Š‰•…quz}‡‘†ˆl‚}†{ˆ€‡o‚€|z}…}‚…Šx{}¬„…{™vx‰wz‡…ˆˆ|…{syt{yy†ƒzƒŠ‚}zƒt…‰‚z‚Œ|~{w}‚|…tƒz†ƒ|…~ˆ‚ƒ~‹~yuy||‚zz{ƒs‚„‹„‚„‡wvˆ„~wyv‡•z‘‡‰}{‡†”~‰ˆ„}–‚‚…u’xw†…„„g‡ˆ‰ƒ…“‹‹|w‰‡ˆ…†q†qpw„Œ†ˆˆ{zއ‰ˆˆ…ˆ|‡††~‚†‘•vxts‰Š‹‘pŠ‚qxt£lƒ‚z„i‹†‰ŒŠ‚“‰rl~yz”‰‚‹ow„ŽxŽˆ‹s‹ƒ{vy}~€~Žuƒ‡¨…‰…y~ŽwŠy‹‰‹ƒ}u|rƒq€„ƒ‚‚‹‚~o€s†‹~‚Šƒˆ‚€ƒ‚xxŠ…|}x‹‹~}}‹Ž}†yŠŽ|s‚‚y}}|‹wŒ{|€†‚‹€ƒ|†nŒ…yq|‹|’zœ…lpi~|yu…rƒ“‚‚†‹“‡~yˆ„{€‰z„‰xŠomƒu©ˆ…|zkŒut€s~‹—…r„–|‚{…ƒx…|p‚‚‡|h~~{nt‚€|…{ˆ‚‰y}”v€o}v~vz‹—Œ~y€‹}i‰ˆ‚yx~€{‘‘“„~€š}ƒsƒ|u{„u|—‚|’}…v‰¡ƒ€wŒ†ƒsp„{€…“’\Šx|p}„Šw‚|t{vs„{~‹xŠ{|Žyz„~ƒ‚}z‚‡€€„x}†‹v}Š~iy~z‚n~{|{‘€{‚‹}|u„–u‰˜„‘’‹{‹yŽ‹’Šˆ‚ˆ‘Š~Œ…Œ‘ƒ•˜‚‚‚…‹t’‰’‰“‡Ž†“}‰’ŽŠrŒ…‹“”Ž—‡‰‘’‚‹‹†€‰Œ˜†uz{ˆ€Ž‹‡Š”Œ…•‰‰—ŽŽŽ’Žx‚†‰’‚‹„‡‹ˆ•~ކЅ…Љ{ˆ‰†˜ˆŒ‚ŠŒ„‰‘’ˆŠŒ†Š†—‡‰“І‡‰Žˆ‹‰…‰…Š‹ˆ‘ˆ‰ƒ‡Ž‰Œ‚zŒŠ‹ˆŒ•’‘ˆŽ†•“’‡†ˆ™yƒ‡|Œ’ˆ‰„‰Š„‡‰‰’ŠŽ–‡ˆƒ“‡ŠŽ‰‘…Ž’‡Ž’‘„“…Œ„ˆ”•‰•| ”ƒ‡ww‰‹~|†„}€Ž€‡‰……ŒyŽ–—“Œ„žŠŽ‹„‚‰€„”œŠ™•„…„…{ˆ“†v£ƒ€ŒŒŒ›œŒ†Ž“‚u…v’ˆ‰}ƒŠ‡‚””šv‹y”Œ‰•~{ˆŒ‰˜•—“yˆ–‘‡‚‰ŒŽ‡’‰‘†ˆ€‹†ƒ“ŠŒ‹‡…Š“~Š‚y}‹—‘–ƒ‹Œy~‹ŒŒ‡’‘€€’‘’Œ’~—ƒŠ”—Š–ŒŽŽ‰…‰”‹’ƒz™Ž†ŽŽ‡‘’œtŽŒ”‘}Œ’‚ž“’}‘•†‡ŒŠ‚–ˆ‰{€‡~ŠŽ’“‚zŽƒŠŠŠŠŠz‹”ˆ†‘ˆ‰‡‘•€…”ˆ„tŒ’‡Žˆƒ|‚”‘Š}ЉŒ‰Ž’Œ˜—Ž…‘މ‚‹Œ…‹Œ„‰Œ’Š–’’tyw‰€”ކˆŒ‡Š‘‰Œ”Š˜„•Ž‘™‹“Œ‹‹’ŽŠ‚{†™ŠŠ|‘~†‰‰‡…†{ˆ›…Œ‰‚—ƒ‘Œ…‹‡Œˆƒ”‚…š†‡„„’…’“ˆ”І‘‚‚’…‘Ž…‰„‰ˆŒŒ‹ˆŒŠ‚‰†…ŠŽˆ‚‚Œ’…Œ‘–ƒ‡ˆ|’”ˆ‰Œ‹ˆ‰‡‡‘‘„‘ˆ‹…‚Š„‚‘ŒšŠ’ˆ‹†„‹—ŠwŒ‚‹†ƒ€‰Š’Œƒz•~}‚€Œ€Žnyƒ…„Œ„‚‘ŠzЇ‚~n~ro‡‡ˆ‰„’ŠluƒŒ…‰ƒƒƒ‰‰Œy{~ƒ~ƒ‰ƒoƒ~{t˜nˆ}‚€j•’ƒ‡Šzœ‰tk||‡„’ƒn‹‹Š~‰–„‹|„Šuz‰{‚‚}‰x‚¶Œ~‹Š~‘z‹‹’€}v|t‡v†‡‡Œw„r„utŽ}‚€Œˆ“‹†‰w{wŒ‹€|{|ˆ†…ƒƒ‹„‚…u€Ž}t€€wŠyƒƒ…}v€z‚‰†“‚€†~nއƒw™z‰ƒ‘…—‚€|›ƒ…Œ‡œ|„‹~’™oœˆ‚‡˜Š†‹‰ˆ‰Ž‹•‡z€”ŽŽ{€…ƒ‰‹Œ‘•‹……€}ŽrŽ€w†‡‰ˆ‚‹““Ž›ŠŽ…–†qŽ•‰ƒŽ’uŸ„‡˜~ˆ{…x†Ž‚Ž–•ƒ‘’‰ƒŒ•‹‘{„†ˆ~‹ˆ‹‹ŠŒ—ŒƒxŽ”‘‡…“†’Ž~‡ˆ‰‹‰ƒž•€‡’ŽЇ…„”‚Œ˜–|–‡„…‘€‘†ƒ}€ƒ”‹ŠŠ’‚ˆ‡Š†|…Œˆˆ‘ƒ“…„~€z‹Ž‘ŽŠ’†‚‘~‘„†€‰‘”„†˜…‹†~‰}zˆŠ’‹…zw‚Œ‰€‰“wƒ”‰‘‘€™˜‡‰‹{t…ˆˆƒ‹„‰ŠˆŽ…”‹‰ƒ”‹Ž˜“”“Œ„ŽŽ‡€‰Š‚އƒ…””sxŠŽ}“…ˆ†™‡„œ„‘›‡‹’•““|ˆ“z…ƒˆŒ‘…|š‚‰ˆŠŒ‡–Œ‡z…‰ˆ•ƒ„‹Š‰‹Š‘—Š„ˆ…Š…“‡“‡‡‚„Œ…’“ˆ’”„ŽŒŠŒ’“ŽŒŠ‚Œ’’ƒŽ‹‰ŽŠˆ•‰…‡‚“Š•„‘…‰‹‘‰Š‰‹ˆŒˆŠ…Ž’Œ•ˆŒŠ’Ž“‡Ž†ˆ˜Ž†–‘ˆŒŠ†“ŠTqiv¨Šz€~t’‡z‹}|zzŒRƒ|t|v„‰€|ªŠŠ|xnŒ|npQr‹suˆ‘†{}‡x„~‰dzxt„t|u„qv}‚‰ŽsŠ~t…tŠŒ‘…z‚†€—}“y„~juowvy‘{…‹ˆ‹q‡ry‚wz}n•zŠŽƒ„v•ƒqrmkŽ~vlov|v«k€wi‡y~ˆ“l€w‹x€†t~{qxo}v’Šy†€o–~{itw•~‚‡…v‚€„~^oxt}Š„‚~|–…o‡‡pv~qv€t{w{†x|pŒ…zŒuh„†€€‡|ƒ|‰—ˆ‚‰Œ†‡~vŠ‘{………|š…{‡€uŠ{x|‰„„`†‚‰“…žˆ€|—†Ž„†oƒpn}ƒ~€‰ŒŒ‰~vŒŠ‡‡ŒŒ‚|‹ˆ‰}…ŠŒxuw‰‡Šo|…‚‚rxs¢kˆ‚y‰h‡‰zŠŠyŒ‡{l|~{Œƒ†‡l…}Š€ˆ•‰Œs…‚}qy†u~‡y‰uˆ«”ƒ‰‹z‰wŒ{†’”‡}|q|r†u’…„€w‹rvpr†€y‚~‡|”‡†Žx|x~…†||x|‰ƒ€€~~‹‹…y„|s|vyƒ€ƒ‚~†w†Š‰€‹ƒ‚ƒuoІ~t–zŽ–|ˆr©”vŸƒ{~}Ž‚{‡”­‡u‰‡‰‘€‡œ‡†”””ˆ¥Fƒ‘ˆ\‘}˜‹ˆ—x—x‡j}‘|¦†ŒˆŸl™¸œx‘Œ§‘€{„¤{u|†w‡”s‹l™\‹n—ŠŠ|’™“‰ŽŠžƒw‹‚}}„p†z‰{‹zqw«uuŒŽŒx¢›}•Ÿ˜–ˆŒq„c‘œŸr…¡”˜{~‹‰•€…“ƒš€Žœ…„”‚ƒ‡¥–†’˜{x•{ux˜“„sƒgˆ‹Z„…}›xœiˆ•zuƒ“”¯€‹‘“ƒ‹u€e……‹‹‚މxj n•„zp„nƒ~–‹›““‹}¢ƒ††›ˆ~w†…yˆœ †‘ƒ~Ї“…Š˜ˆ†“”Žˆ‰Œ}—„’Œ‘…Љ’‹†q•Œ‹Y‚“t…‘{—«o‚ŠƒˆŒ…˜ˆ‹}‰”€|‹„•‡šoŠj”u‘ˆ~–‚™‹†‘„‰Ž„…Šy‘˜ƒ‰‰ˆ}{‹||xš|“”‹†“•Ž˜{‰ˆrs„˜Œ•“–“”ˆ|{„ƒ•†ƒ†‘ŠŠŽ‰‰Œ…†–‰{™}‡†y‘‘„Š’…q‘‚€{Šs„Š…–˜‡•‚Ž~—ŒŒ|Ž“’‡•˜“y‹ŠŽŽy|—„ƒ‹Žp}‡…£Š{w}{||Ž›‚’Œz‘{‰‹Š‘ƒ|І’€~ƒŒ†t…‹†ŽˆŠ‰‹Œƒ‰‘‰‹ˆ„‹Œ”ŒŒ•Œ…‹”ˆ‚ˆŠ„Œ…ŒŠ†ˆˆ‡‘Œ“txv‹~ŽŽ‡ˆ‡’“„ˆ”Œ‰~—““Ž’ƒˆƒ‰‘ŒŠ‡‹˜Žˆ~–~Š…ˆ|ƒŽ€zŽ’‡™ˆˆ…ˆŒ‡”…’Ž‹ˆ‡‹Œ‡‘’„—‹‡…„Œ„“‹’†’„‘ˆ‰†‡‰ŒŠŒ‡‡„Šˆ‡ŒŒŒ‹Œˆ„Œ‹Œ‹‹—‡ˆŒ}Œ‹Œ†‰Œˆ„‡‘†ŽŒ‘‰ŽŒ‡Š’}†ƒ‹”‡Œ‘Ž„‰…„wx“Žvzoކv€z‘œ†|“…‚x‡„u–†z‹‘…ƒs‡‚…‰~|jˆ†{€”z}“|ƒ}y€ƒ‘}{Œ‹tŒŠ‘t…jŠ{…„u„‰“ˆyy~‰pŽƒ„}Ž|‹m€†‚xn‰š‘~…Œtˆˆ|d{€‘q‹†mŒv‚šƒ€~‰t}zŠm€‚}‚„…sƒ~®…‡|˜uu”€‡w{nŠ||q{s‰~wy}}Šwˆ‚Š{†tˆ‰Š…”x~‰|™‹y~}t|ƒn……†z†~yyŽ…z‚‰v{p„‚{Žp€†u‚™t†|‡„‡Œ‰‡…‰‡Š}w‚†zŒ{ˆvu‡{‡…x~…€~•…x‘zw‘z|zƒ…‰qŒ|„„}yŠŠ†€rš€~†{ƒq‰mtpx|{‚Ž…€€zrƒz|||‹|}€}v„ŽŽ‚tpvs~ƒŒ|p|Š„ox€|’gŠ„i~u‰ƒx€kx}…}}~“…~p~u„}‰~…u„}ˆo~ƒ|x{„xy„£}}z†{y‹xz€z}…}yxqxx€s€‡}y{}r|„w„u‰}z||ˆŽˆ~|‚ˆvx{{~z}€“ƒ}…|ƒ‰{€‚yvmx}xq„s…‡~†ˆs}y~Š~‚z‹€t„ƒz‡|Œ‘|z‚|ƒ‰‡‰ˆ~’’ˆŒ—ˆ…ˆ‘š˜€…‘ŠtŒ‘‰…“„ˆ‰‹Ž”–‹z‹‰ŽŒšŒ†‹~Š€‡ŒŠ•Š‚ƒ…‘†•“tyŠŽz˜€‘Šˆ‡—“‡•‰–Ž™Œ‹–Ž‘Žƒ}€•}‹}†Ž†~–~†Š‹‹›Ž‰Š|‡”~ŒšŒ•Œ‹‹†ŽŠƒs‹‹ˆƒ‹‰ˆ‡Žˆ…‰{‰–„›……Šƒ‹‚–Žƒ”’†‰‰„‡…ƒŒ‰‰Œ‡’ЋЉ”ƒŒ”‘ˆ…}Œš‰‚‹‹Ž{’‘ˆƒŒŒ†‡’†Ž’‹‡ŠŽ‡‘”†„’‰ˆŒŽ‹‘z‹~–‡†‰ƒ|Š“|”€{‰…t‰‹‡‰ŒˆˆŽŠ†ˆ‘Љƒ‰‡Œ™Œˆ“„Ž’ˆ’‡„‡‰‡‰…††txx}ŽŠˆ‘”–ˆ‰–’€…–‘‹Œ‘‘’{ƒ†’‹ˆ‹’~˜ƒz†‘~y’‰…–„{ƒ‡ˆŠ•‡’˜‘‹‰‰ŠŒ…•…“„ˆ†…’ˆ’Ž‹–†•†‘…‹††‹ŒŒ…Œˆ‹“†‘ŒŒŠˆŒŠ‘‹‰Ž‡Žˆ”‹Œ‹ˆ„Љˆ†‘ŠŠ—†Œ†‹‹ŽˆŒ‚Ž•ˆ…‹‚‚‘†ƒvŠ’y{rz‰twyy˜ƒ€~Š~‹Œs~z|„€~puˆ{‚‚pq…oŠ{vƒ}x|uwxps‚‹Š„~{˜{Šz}ƒ}€z‚{|ˆ}‡~‹wu||ˆtqx{€t|—‰qyƒ‚m‰vms”‰Šsx{p}}‚”€tƒs„yrwv€z~’‚x€‚„|v‚{ys}wx•v~ƒz{†’ykƒwƒ{r{xƒ„ƒp„€z†wnu}|‚}{||ys”Š„p†t€z{y„ƒƒƒ{‹r‚‘‰Œz‚m†w„‚~}~Œz‡z}ƒ{€|x‹Œ…‰‚ˆ‡‡}…r…Œ|zzŽ}‡~ysŽb{dnvpmws{wy‚r}qp€x~Œrwjqsm{pzxp|‰v…]{w‡{{rx°z›wpz„€„s}t{”|xz~ml‰…sw‚vw{}u‡…||{xv~‘”r}sxlv~uzzz}~vˆ}xxt|vzt{}|x©uz}sxww‚vt|zqwr}x}oxz„‚s|€ˆvwyxtwxƒw{xt]ywzq{x€zwwv|mƒu|wxsj}z‰wz„}ux€z{~|Š}ƒssx}tu|qpƒw„yuy}y{{v~ƒz~„yƒ£r~{€}y˜‰”‰‘~‡ˆ…Œ}x’މ†“y~™‡‘‡ˆ‚€”†‡ŠŒ™‰t‚‡ŸšŠ…ˆ„™’‹‡…’†–‹’“‰}s’”€{‰‹’–“z~Š„~sŽŠŠŽƒ…‡Œ€™†Ž‹Œs”Š„|—z…€ƒ”‰„‹Ž‡“‚ƒ…˜‡“ˆ“Ž‹ŒŠŠ††zˆ–|•Œˆ‹‘ƒ’ˆŒt†vƒ’Œ‰‡‚†‚}—Šš…šŒ‘ŒŒˆ‰…‘y‡—Œ‚Љ†‰Ž…{ŒŠ‡‰ƒ†ŒŠ“™“ˆ‰ƒ‚Š{“v„Šƒ—˜ŠŒŽ}’Š—Œ‚†‘†‰†|Œ•†‰ƒ‘zƒ‘‰†‰ut’ˆvpm}…Žxxƒ˜€| }x†~„•gzƒx{Ÿ|]‹|u„}t‘{fƒ‚|€ksqwvf‘|u‰€vtf~Œ|t€ˆ†‡‹[|vp‹”s‚„x€„|Œ‰rx|……“oxu‰~lz{†„ˆ|„{‚‰€€|uƒz“{{‰u‰…’ˆ‚y~’Š‚|v…‚‚yƒz‡©Šƒ†€ˆ…†„„€~}Žtwt‚‡™‹z}}ƒƒxŠ~|ƒŠ„‡€‰|ŠwŽ}uŒ‚ŠˆŒx‡‰‚†Ž…”…}u‚„…s}ƒz€tƒŽ€‡w‹|€‹„€‹~Š…‹}˜yƒ~‡‡…{…xˆƒˆ~Šˆ}›‡}ƒ|ƒxy„ˆ~…fx‡y„~~|”„yo|qo|†ˆ’ˆ„„Œ„v‚„€ƒŠ~ˆ~‹†……”–yq}ƒ‰‚‡‡oz‰‚‚|tk†‡l„‡ˆ…~uŒ…yn{‰z“|€–Šp‹‚’‚Œq…†~sv€o…†‹z†ƒ³Šƒ‡‡|}„x„w‰Ž‰€r}v‚u ‡}||x}l‡uˆzt|ˆ††ˆ‰|ˆ‡zxz~wˆz{…„ƒˆ‰ƒ‡„„†Šr•|y‰w}„uˆsyy’„ˆƒˆ†ˆƒ„~ƒn‹Šƒ•~£‘„‘b{…Œ•Š…ƒ¡•r‚u¤—z…ƒŠ†‰—‘ˆ¡„{x›z•‡c}‚™Å‘—r˜“q‡•~žƒŽmyœ—tzƒu–’—Šƒ™ƒ~„zƒ‰”~~“—„‚‰ˆ‘~‹{ƒ{†vŠ|‘y}‘Š€“€™’„†…o{~ˆ—Œ˜|~†š‰‚—vƒˆ‚šŽ‰£†}Š–|~˜v~‚…–ƒƒr’—•¡˜‘ˆ ”n“Œ“„…—€€‰~mŒ•”„a’—‡›ˆz‡”‹ˆi|„wƒŠs‘y‰‚€¸Š‘¡‹‰’‹~yŠšw™qˆuƒ†’›†y“†‰‡‚“wu~ŒŽrŒˆ”ƒp•ˆŠŠ“‚މp|xqw“§ˆˆw•~›ˆŒ’˜Š‚•Ž—‘‰ƒ„…‚”‡šŽ„wš”‹i™ƒ’˜Šeˆ•†“˜’kˆy‰–‚{Œ“—‡“š—’€™”„n”v…ˆxšw’ŒŒ’•„u€‰Ž~‘‚‘{yƒ‡{„Ž‚•|™‰’”Š—˜”‹x’•“ur‘g{˜ˆ™œ‡}~‰”ƒ›‘™‘„“ˆ”Œ†…Œ”’zv„s‰Žz”…‚f…†ƒs•}‚Šƒ†Š—yŒz‘{„xž—…Ž™‘‘…m“•Ÿ…ˆw‰“nt~}†‹‘‹€–€ˆŠ“›’‹{†xŒ’Œ~~ˆ‘†‚‡†ˆ‹†“›‚‹…‹t–‘Ž“Œ~”†‚Œ„”‹Žo‘Ž…–˜Œ‘—Œˆˆ‹’‘Œ†Ž—Ћއ‡Š‚‘‡uyƒˆ|“‘‰Œ‘Š’“—Š“‰”ŠŽŒŽ–”y‡‹†ƒ”‰Œ„ŒŠŒ˜~‘І…‘‹‡‡†{„‹Ž—Œ‰„ŠƒŽ‡“ˆ~‡‹ƒ”Œƒ“…އ‰„Ž‘‹‘‘ƒŽ„‰Š…Ž‹‹ˆ•“Љ…‰ˆ‡ŠŒ‡Љ‰‡ŠŽ’’Š†ŽŽŠ…—ƒ‹…|””Œ†ŒŠ€‰‹Š“–…Š–„ƒ†“€ŠŽŒ†‰Œ…‘†‘ˆšƒ–»‘zƒ†‡ŽŽlŠ}‘ ¨ŽŠˆy‹‡’„•Œ‰Œ™ž’‡y‡˜¡‚pŠŠ–”—‰’•pŒby‡‚“–n’¬‘“‚v~’Žvš˜‚”‚Š„œŽ˜l‚mƒ”{„•‡Š‰‡™„‡ƒ›Š‰€z„—…†€•‚†‰„Šv{’~Ž“‘}•——š|’Š~|ˆˆ…—–‘ƒ™„}{‰ƒˆ‰€‰Ž†‘‚ŒŠ‚ˆ‘‹š”„…‘Ž„‘™”Œ†{’{Œƒwˆ–x‚‚{€‡‰†‡Ž›‰€ˆ‘Œ‚|‰‡„‡†r}†€˜Š‚o€{syŽ’~xxŽ“–wxyvxª{lzrzq‘~x{€y›‰xt}v„xƒf……zx|wsuub~ez€ywol~y|e{ytƒqzn{‰y}xpy}r|vry~x|€ig‰}tt~n€w}{~~…yzubtuuvnppo~ze…ƒs‹uvxtvxtytwx•t}zsryyƒttrxs|{g|{}z~uo{ƒ‚s{{|xxvuqvywo|xupzwxux~uzuvwwupyws{z{zydvz„{|vv„t|{|z‡{‚osspst~}ttu}osy{uzzx‚Œz}‚v€u~|||xƒŒƒ‹z†zˆŠy‚„‰ˆ’†„xx„‚…‡wz‡‹…„€‡u„‘€uŽ…€‡q€rq‡‡Œ„Œ‰—‚x‚Š„‡r~Œƒƒ–ƒ‰˜y|{‹Ž†o…–‚u‰€t™lzƒ‡k†ˆ’ˆ~…†ˆ†Œ|m}ƒ‡{ŽŽ|~‚l…{‚“€‚}‹|‹‡{x{~‚w’Šxƒ²…‚”u~‡z“ˆu‡‡Œ€|z{w†sv“~~ˆ€ˆ‹sˆu…‘‚Œ†ŒywŒˆ‹ƒ‹ˆz“€‚}yˆuƒ„‰{‘‡‹~†‚~tЇ~‘~{Švyˆ€‰}œx‚‹ˆ|…‡‰‚qŒ‡yz†vˆrx‹•t„wpwy|y{oˆƒ{—„ƒ…|…xwx‚“~‰ru…yˆ‚pq~‚}z…Š~y{|xhz}‰ˆ~~v‰}„v€{ˆ{{Ž…ƒ„zrzv‰wvx~†oxŽŽt‰u„€i‡rw‘†‚p…‚ux~„“zyŠw‘ysuwwƒ‘†‚u}ƒv|w€}Šzx|x|Ÿ—y|y}}}up~‚~nyqŠxŒz{~{~v{s{z‚x||{{vŠˆ‚t€u€†y{‡‰ƒ}†Œty~…‹„†z‰v~q‡p€ƒzƒ‰z{ƒ}|‚y|‹‰‹~‰ƒ„{€…w~‡w…Žq€‡‰‚zˆˆ‡|‘Š}œ‰}ŠtŽŒ||‰†ƒq†€~ŠŒ„|ƒ„„ƒ~–‡•~‰wwu‚”‡ƒŽl‹€€††}…Ї~ƒˆ‡ŒŠpx‚€‚€ˆtyƒy}zwoŠ€‚Žk–‰s‰Œ‚w‰‡ym|’s‡ƒˆˆ…o„~‹}ŽŽ‡‰u†ixƒ~€„‰v‰®Š}‹w{Šv†‰|†„‘…{zozt‘v…|ƒ‚Šwysƒr{€z††…‡‰…}Š…zv‹Š|yu{‡}†x}†„„ˆ{„ƒusŠ|y‹w{~~—w|†t…„„†ˆ†|j…„}}‘oˆ}ŽŽ‰‚…x~Š€y‚Œ~”‡ƒˆ‹…v„u{ƒˆ€ƒl|‡~„…nŠ€ˆ}Œ“pvp}~€’‰ˆ–ŽƒvŠ‚†ˆ†Œ€‰‰‚ƒ~ƒ‰—zuz…„†‚‘oy‡‰{{ƒu˜n‡€„‡kŠ‚‰‡‰„އuk}„„|Œ…€ƒ‡m|†ƒ†‡‰y‹„ƒsx~|€ƒ‹{ƒ|°•„‚‹€€‰}‡|ˆ˜†Œƒx{}w‰v‹„yy„~zou‰‹‚ƒ…ŒŒŠ€€~€ƒy~ƒx}…€~s‹Š…‚…ˆ}sy‹{€…‰xr‰~ŽŠˆˆ‡ƒƒmŠˆ|‘€‹’‘Œ~€x‡€~‘€‡€š…|“„{x|‰‚€„jyƒ††‹€…‰ŒŽzƒ‡ˆ~‚‚qƒtr††„އ‹‡“€~†‚‰{‰}Œƒ‡Žƒ‹Žwx|…‰‰Œ‚p‚Ž~}v|užl†…~ykކ~„‹Š~ŽŠxm|†{Œˆ‘ˆm…{ƒ~Ž„y‹…~}z„„€€‡‰x‚°†„Œzy‘Œwˆ‘~~‚t{t…y…Œ~}†‚‹|~qt|†}‚‡}€‘ƒ‡“„zw…‡~sƒ}…ƒ‡‡…€‰wŠ„|uˆˆ{’}€€~~†~w‹‚†…Љ~†ƒzp†}zŠ~‹‹ŒyˆŠŠ‘…‹‹ŒŽ…~”†”Œ†”‡‘ކsƒˆˆ…‘„‡‹ŽˆˆŽˆŽŒ„‹‹’’Ž–Œ…Ž‘ƒŠ‚†…Š‘ˆ…ŠŒ†…†‹Ž’uxk‘~’‰ˆƒ‡Š•‰‹”–ˆ‹™ŒˆŽ“‹…ˆ’{„‰ˆ€’€…’†Ž‹ŒŠ{v‹’‰ˆ˜„ŠŽ…‹…ˆ“ˆ‘ˆ‡‹…ŠŠˆ•ŠŠ‚ˆ…‰‰‚‘“‰’”‡Œ‚‘‡Ž‘‹‡’ˆ‹‘ˆˆƒ’„ˆŠ…ŒŽ’‰Œ‹ŽŽŠ‰‰”‘…‘}ŠŽŽˆ†ˆ‰‰†Šˆƒ‘ŽŒ’ŠŒ…Œ‰‡…„‘Š…Œ…ƒ’†ƒ…iŒ~`§}šŽŒ£‰–”¸‰b…“Šk‡‚‹“’›‰„ˆž”…¢yœ¢†‡µ”‘‡?Š—ƒ‰ƒª€— wouotƒ‹˜š†~¡Œw’ŒšŒcšš‰’‡d—‡‰‘“Žvxyƒx”…|¢°˜Ž|—’‚kv¦ŸŒ‡‰~“o‡„}ƒ‰‚’™}Œ€Š}–ІޅˆŒŠ– }Ÿ}sŒ‹­‘Žz”’’„’}…†‰w–d€“ˆ€ƒ“‹˜†œt€“†‚…‘£‡••v}–|˜‰}‚œ~¤‡Š™wv¥hŠƒ—„›š’ˆ‚o€–‰¥š‡”‚x•oxŒƒ’u‡o„q¡”‡ˆˆ{ˆ‚ƒ‡„…šˆšŽ‚‘€‹„’“ƒ|”“Œz‚‡‡‡—‡ŒƒŠ‚މª•‹“‚ˆ‰‘‹‹„’‘ž‘‡‰‡_•{Ž…‡„x‹{ˆŽkƒs…sˆ‹‚‘Œ’y„Ž‹†€u“ˆŒŠ—‰•—‘‰uƒ‹ˆ‹š‘ŽŒ~‰ƒ‘ˆ„ˆ‚~˜Ž|’’Š ƒ—‚‰‰‡…€…z“‡†~‹‚ˆŽ‹‹……‰†Š‡„|†ˆ‹‡ƒ†•Ž‹…Š‘ˆ‰‰|‰…‘~†“Œ’Š†Žƒ†…‚ˆ—”“‹z‘•ƒƒ~ŽŒ‹‹Ž‹}ˆŠŒŠŒ‡”ŒŠˆ‡„„Œ†Ž‹‘Ž‚’“’{‘ˆ‘„“’†—vŠ“ƒ“‰‰˜„„‘†Štˆ’‚ŠŽ„‘Šy‚Œ“…~ƒˆ…‹‘‡–‘‹Œ‰’~“~Ї˜‹‡…‚€Š“‡uzp‚”ˆ‹{‰“‹…“€“’ŽŽ‰ŽŽ‘z—‹‘|އ‘’‹’~„—†“‹~……y‘ŽŠ„šŒ’Œ’‚‹…‡•†ˆˆ‹•ˆŒ‡‘Ž’ˆŒ…Š’‘“ˆ’ƒ‡—†•Ž„Œ††€Š“Œ’{†ˆ““Œ†”Œ„˜Œ‰’‹…™Š‹‹{ˆ•‹ˆ…Š„ˆŽ‹Ž†’Ž‹Œ~…†‰€ˆ„‹ŠŒ’Œ…‹‡‚„‘‚¥tŽˆˆŒ…ˆ‰i”}v}”‘Šu•~…x““‹t~ƒŒ™‘•ŠŠŠšƒ‡„ƒ|£¡‡‰€„xv‹ƒ’Ї{‘’މޓ˜•Š€™”‡u‹ŠŒ{‡†Š–“}}{ƒnŸxˆ{|”•“v‡””†Š£—ˆ—ŠuŽƒ†‹…|r“„••†ˆy ™˜‡ŸŽw‹w‰’{sŽ…Ÿ’‹‡‘…ˆ€Œ—‰“““ƒˆ€‚ˆ‚ˆˆƒ•‹‚n…‹„}Œ‚Žˆ€ƒm•”|x‡€x}ŒŠ•ކ|“™€}€v‘‘Žƒ‚‚‹€•€~}tƒŒ‹‡wm‚…„zutv‚‹yy~‚{š‚{~Ž~wy{z’we‹}{}rxlˆ‚„ssszyv„}{‚w~xw…’zrt€„ztvy„…„{Šxu}}u‡~{vz‰}‚~‡„oyvƒ„n€‚ƒxy’ƒ~x…x|›~xr…}‹„“ˆ~‚|†|~€{|„€~~‚€Œ”}|sŠ}ƒƒwЉ~m{Œ„w|zx‰€z|w€‹y€‚…„|…~–vwzxyx‹~~…~†ˆwz†‚‡ŒŠ‡€}‡xt‚vs}„„{wxƒ€{Šy‰…‚u}…Ž}‡€ƒwŠ„¨Š™‡™†ˆ…yŠŽqˆyq}˜o’{‰|ˆ›†x””Ž|‚‡„—Œz™Š†‘…‘‹‰¨›ŠˆŒ‰q€†˜‡œz‰”Œ­‘’‚“ˆ†‚Šˆ‰}Ž…•Œ’‹ˆ}€l˜|ˆyޙނ}–™€‚¡…œ•‘„Œ„y…€‰Œ‰„’‰„|˜–‘ “w‚xœŠli‘¦†„ˆ”v‘‰}Ї”Ž˜|…ŠŠ€‹‡~“€“‹Ž”Œƒ{ƒ‹’”Ї{eu—’všˆxŒ~x€Œ†‡ŒŠx–“†~„€‘”„‡Ž…“‘–‡}o|ŠŒ}„‡¤Ž€ẇ„Œ’™o ”‡kžv…Ÿ¼–Š„x•†¦„•‰€†©£ˆ›ž„|”“{h„‹•£ƒ˜ŽŸ–g| ‰vtx}—xwµ›‚‘~s~……ŠˆŠ—ˆ}”‡Ž~’‹ Œ‚p•‹‚{™i‰•‰ …¦ˆhˆ‡‹k‰ƒœv€•Ž•›€Šjƒ„†–—¡‹vŽŒzx}މ…œ‹p™Œ„…lw„‹‹–“œ‰ŠŒ†~˜‹‡”{‰‡ˆ‡•‡›“~g„y‡t¢xˆ•uŒ… ˆ›|~„€|v‘ЀБœ‰‹q–šŠzŠ‹…Š“w„Ž|x{‡Š‡†ƒ‚Œƒz •—…œ„„‘ˆy”{~ŠŠ‹‰x†‚‚Š‹„p||‡Œ‰|}wЇހ„Š‚ƒ|”uƒ”…‹|q’y‚~~u~uŽ…sŒ‹‚{‰ry‡Œœ†„k‹‚ƒu{š‚‘p‹{‹‚‡t†‚‡}v‡}¦§‹t€›|y”Š…v{„…{š~‹Š˜s…‹”|—‹||€xˆqiŽzˆ{„‹‡ž‘…|Š‘…ˆ‰zŒ{€ˆ|}Œoˆ‡‹‚”‹~€|ˆ„~…oŒ}‚˜ˆ—’ˆi’wr…„†Š†‰}}|‡Šx‹w…„{…Š‚‡Œ–n„‚~Љ€‡Žw„‡j‘€‡Šx€yy“‚sƒy}|{pyx~•‚‰|}xz|ƒˆ~‹o‰ƒ}‰zyf„€x‰„‚oy}€u€~‡‚ƒw††|ir€}„vyƒ}†Œuu‚•}r‘~}Œw‚{•ne†x}…€‚Š|{}{wxŒxŽp†{v}~„ƒw}ty{‡v„ƒ{uy¡€wŠvx€|w‘|„}‚†€vxn~p{y‚†€}vyx†€~}‚ˆo|‚{{ˆy‚‚xw‡‚‰|}r}|‚ƒ~„Ž‚Œ~†{yt|zz}|ƒ{ˆ€yt„†€†ˆ†„†‚yˆƒ~~o{x|‹“{{~sv}Ÿ~n~uwŽxzz€rnvx‹u}r€v{ƒxy‹‚s„g}…ƒttt‡{}wzˆyz„|†w}’ƒuzu{z„ƒtz}{vwnq„|ƒx||‚ƒ~~zƒŒpr‰mx„†lpk‚}ƒym„{ƒwr‰~y|{‡v€†v|wt|zŒ‚{}pzv{€t}†{~€uwz‚kƒ}‡w€ws{t|}wuo}||z{Š{r‚…}w}vy…‰vxˆx†yov€„„ntw†|}{…€|x„{tz€€t~vr{z{y…v„Їwƒz…„†|z|ƒv‚th•’tzy{|—wn{…w“€Š|~|‚r{wˆ™o’z†€‹{oB…€v†}’nƒ‹ƒu|r€y•|{Š…Œ„|š•xm^i{ƒ‹{zŒ’v‡~|zy{‹}qv‡†€…„€ˆj‰x“sr—‡’ss…o|•vouvw€~Ž„|u„rx}~vxnfwxx‚p‡v|x‡~yz’“cšws‹y^ƒwws~’€txs‡im{mƒ€{‚|{l…z}{„‰ƒ‚”xˆ|}zr†{i†f€f…m~{‹•t…{…wusp‚†oz~‚qo|x{…Œ‚~‚ƒ“}ƒ‡ut…}~€oƒ€|zwtqsy‡~Œƒ{Š„…†yxz~v€‚{wxŠqxwxƒwŠtv|~}~{m~u€€ƒ€‹}•s†{{nnu‚}zr~‘”|{iir†“ƒtp~‹€eŒŽ}…r~–zl|‚wvˆ„nwЉwƒ~‚‰„€k€t‡wmŠ{ƒ~{‚€…€vŽ‹{€s|ž€~t‹zi‡x{ƒ‡zyux{ƒ‰rzzŠiŠv€~ŽwŒ}ˆ€€}{tpt‰{z„‚‚Šzƒ}’€…‰€wŒ‘zŒs€}w‘||‰z}iŒw†z‹|ˆ’•Œ€„tŠ{ƒ†w‚p{~p…ƒy}{zt~†r{tv’€{v~‘†sv€vxŠqt†||‚yu{ws„qzzyysty|oy{|w|}€‡~ty„|„tzu|†}zxyiq‰}yy~t}y|„…„w~t‰tr‚yttxƒsƒr„€}Œz…v‡zwu|w|…›{|zx|}‚x|}xvw~‹{~y{|ƒ‚v‚€€r{~}ux{t|}{ury|v|wxy|zyx~{uzu}‚{t}€†ƒ€~z~w‚|~‚‚x}xyv€r}‚|ƒs|y~z~w€†‡{€~„„z‚~}w‡…y|Šˆ‹ˆ‚x‚‘”‹Š†‘™…‘wtƒ†ƒ†‰Ž‹‚“ƒ”ˆŒ˜Œ’™”‹†‚Œƒ}Œ‰~Œ”‡ƒ„‘’Œˆ–txšŽz–Ž…•Ž~’ˆ˜…‰™ŒŒŽ—‹‹Ž—“—–Œ{ˆ“}‘~‰•‡z™|…‰ŒŽ‹”‚Š‹Œz‡•††˜…Љ‡…‹Ž|Œ‹ƒˆŠ‰…Œ€‹ƒ‹‰Š—ƒ““ˆ“ƒŽ‚”‰Ž€–ŠŽŽ~ŠŠ†ƒ‘…Š”}ƒ”‰ŒŠ–Œˆ‘Œ‹…Š‹’‹‹‰…Œ‰†…†“’’„…‹‡ˆ‘–‡†Šƒ{“’ƒ‰”L‡‹“Ž”‚–Š’~‹š‹xwŽ‹”Š–‰“’…]‘Š~„sŽ—Žˆ“ŠŒ‰ŽŒ –‡Š‡…‡’•…‰†z‰l‰y¡‘‚Ž‘“‹‹›•‹‡‚Їދ–†¤Ÿ›t†•Œ€‰€‡‰Šƒ‘†‹{}‡‘…›m†ˆŒˆ˜“j•‹‹ˆ‰Œ–‘•ˆŒˆzŒ’”žz‡y‡…——†l˜„t˜—›š‹†‹˜{Œ{Š˜—“…|ˆ”‡‹Œ€‹‚†‰y‹{š…~Žš’‰Ž~}‰}™Š‹}†’{|‰‰Œ…˜•|ˆ‘†’‡‰‹|‰‘ƒ€b”…Ž–~zzqz‹pr‡itoŽt}o€Œ˜¡yu|x‚„ƒ|‘‘w}vp‚‚k‚^ZyrpiqˆqŠwpww€wxlqcmorw‰ˆ€umqˆ~ƒlxlv–|‚|}}wx†ŸŠŽrzoŠtx}umƒ‚qytpƒŒ„€€k„}tŠkz€ƒz€ƒ›q‚yŠŒ‚n††€€n…r|}ˆ~Œ…„Œˆnƒˆzxs‹|qx‚€l’t„y~s|‡}†t‹€všyz…z}pt{…ˆƒ~}sˆ…o†‚‡‚…†ˆ‡‡vvwk…‰~m‚„y€p~‚†‰„z€}o‚’†ƒ„yw€‚‡‡œ’Š~”ƒ—•vœ‰Œˆ{{ˆ£Ž}‰‰ƒŠž›‹¤‹‚z™œ›”}ˆ‰‘ޑІ™ž‰|r‰Œ~Ÿs˜‹’›‘‚Œ„…‹„“€…ˆ“{Œx‹™€p|ƒ}‘}|Ї—ˆ‡Œƒ’Œ}‹‹yƒ”wŠŒ‡{„‰x‚ˆ|ˆ‹’”““Œy‡{…‰‰Ž„†’•†‰‰ˆy„‚‹“”†€‰’•‹–‡’–}ˆ‚‘”‰‹‰ˆŒŠƒq‘‚‹†„„‚‹“r‘z~|ƒ|w„‘‹ŽŠ“•|t‰•‰ˆ‚|‹“‹‘w€†„~‹z|…‰ƒŠŽŠ‡z„{„Œ‹„ƒŽ•}€Œ’‹Šˆ—–€„Œ‚sŠŠŽ‰‰ŠŠ†ˆ‘‰”މ…Œ‡”Ž–•‰‹…‡ƒŒ†……’…ƒ‰Œˆ‘“tyƒz–„Ž•Œ—Š™Œ‰˜ŽŒ”‘†Šˆ”‚Љƒ‰…{—ŠŠˆ‹ˆˆ†z‡’‚†˜…ˆˆ‰Š†Ž…’’‡‚‰†‡ŠˆƒŽ‡‰„Œ‚Œ’‰–…ƒŒŽƒ’’‡Ž‹‚‰†‹ŒŽ‹Œ††ŒŽˆŒ†‰†‹‘‡”‹‘‡‡Žˆ‡ŠŽ‡ŠŒ„‘ŽŠŽ’‹Š†…ŒŠ…ˆ”ŠŠ‘Œ…‡‡„†‰Œ’‡€wŽ~Ÿ~…†u‹˜†|†‡ƒ{„ty‚„‡j~…‰ƒ•‚|—„Šu‰‡ƒ~†p„uoƒŠ†‡Œ’ŒŒnŠŽ|„ŽŠz}Œ‡Š|…“‰‰yw}‡‡‹’‚p…Ž|vvtœmˆ€}†jŒ˜ˆn‡ƒv•Œ|l|ƒˆ|‘w†Ž‚n€ƒx‡—ƒˆx†„ƒ~zŽ~~…ˆx†{²Š‚…Œ‚{y†˜}‰‹…{„u{uŠ{Œ‹ƒ„ƒ~trt{‚„‚€‰xž‹Š‚~‹y~†~{~Œ€‰ƒ~zƒŽs‡ˆ~tƒ~†Š€ƒ‰Œ‹ˆu„x‰††‡’„‰†ˆwqކ€v“y…Ž{‰ƒƒvŠ€’ƒˆˆ‚|”‡€~Œ‚wŒvy‚ˆŒ‡g~„ˆ…~Š…|u‰…‚††‰p}nq~†„…‡Œ}~y‡Ž„ˆŠ‚y‡‡}ƒ…Œ”{|s~“‹Šo‚~…y|sžk‡„zŠj€‡‚†ŒŠ‰€†‹zj~†„y…ˆƒ„n‚‚ˆ|‡‘‚‰v„zz„{„…ˆs…}§”…†Š|xwŠ‘tŒŒŠ‡}s{s†l‹€†{‘vqƒpƒŒƒ€ˆ{Œ•‹„‡ˆ…‚}ƒŽ|~v…‰……|€ŠŠŠu†Œ~pˆƒz‘{†z~ˆx’‰……€Ž„Š‚|o„x{„€ˆƒ‹~„x‰}ƒ~‡~‹}…{‘‚ƒvvw‹‰„„qz„„Š”}‡‹Šˆ‚|€„ˆ~‡pno€ˆ{x‰Ž…Œ‚z‹‰wˆˆ€‚z…„…zƒ|Š…vw{‚‹‰Šƒoƒ„ƒxwys›i‹‡xŠh~‰t€Ž}€•†zj{Šx„‰}‡o‡‚ˆ…“‡‰w}v|‡……‚ƒx„}«Ÿ……‡{‡~~Œ‚‹–‘‹yz}}r~u†“‚…‚‡s|pˆu|…„~Žo‡¤’‚Ї}‚zƒ€Œ~‚o€…’†€ƒ}|ŠŽ„}…†{vyˆr€„v…‹Ž†t‡z„Š„‡€|Šqp‘…†{‰‚…˜|”†sz…zƒz}{{˜}†~~Žt…y€ˆ‹…|}g……‡†“ƒ{…Љz…‡q|nq€„…}ˆŽt–{‡‰ƒƒ~q‡y†Ž€ƒŽ…”w~u„‘‡‡o„ƒ}‰‚…sœk…ˆ{‡i„‰‚Šމ‚‹‘wk|€„z‡„‹m~}‹‘{v†~ut€€„€‹Šs†©ˆƒsvw’u‡‰‡‡|q}q‰l}™|„z‡xƒq‰x‡–€~‡‚ˆ…ˆ‰ƒ€x„‰}{}x{‚~Š~‰|ˆŽ‰Œz„Œyu‹†x—w{zrƒƒ‡w•‚ˆ‰~…‡|pŽ„|zŠxš~~Ÿƒˆ•‘ˆ¼¢‘}c‹ˆŠ}ˆ‡“™—‰Šfœ~އ‰†ˆŽ‚‚€†—ˆn|•z€{z‰|†‡Ž†…‚…¬ˆŠ‡‚ƒ‹’}…ƒ}zmŠ€j‡€‡„†Œ„’ŠˆŠ‹LŠˆŠ†‹…—‹y„pyŽt‹{…ˆˆ„œzˆŠ}ЉƒŒ†‰…ˆ‡‡‡ˆ€‘„‚‰–‡‰’‚„‹u†‹‡Š€‰€†{€‚“Œ‰…’{†“„„’~‰‡‡†…„ˆœŽ~‹‚‹yˆŒ–ˆ‘…”Š’€„x|†„‰†‡ƒ‹†Œ„v‘{‹Žˆ„ˆnˆƒŠwŒƒŠ„Š…’‹Ÿ‹ƒ…qw‰”‹nt~’‚v”ƒ™Š†|~™lzƒ‰|Šk‚…‚ˆyr‡†vj}Œ}‡~ynymno~ƒ…Š}І‹}€”…Ž|}‰‡uq}€†Œw{izzs‘‰j|}{ˆcxuœl~y‘|c˜‰‡uy‡—~vnq}€‚q„ˆ{xsryxŽ|~t‚€‚|z{ot€s{w~…˜‘~vs}‹z’™l~u‚m{wmys’p}~{ˆuŽusu€usˆq{u…‡|†‰†“„~…vs‚ƒ€z€}„wp…r{Œzns{~j€quwqzˆt~vˆ}u‚}{Œ|„‹~u„ƒt~™|‹ƒ¡ˆ…|ˆ’‡ŽsŒ‚„|{k€žs”„‰€š”|ނޗƒ~|Œ“®}„”ˆŠ™›Š‹„……x•‘ŸuƒoŽš‹zœ““™‡ˆ†’ŽŒ„”ŠŠ‰Š‰”†”†—‚’—}nŒz…v”ŠŠ“••‘‡¦‘˜‹““ŒŽtŠ~‘„„‹‡„™ˆ‚|‘–‘ƒ£ Šo–“†v†„…wŽ…žš•‰ƒƒ–‘‰Š~ŽŠ˜„’ŒŒ‹|‚–ˆ†‘|‚„Ž|†‹zˆuŒЇ‡‘‹{Šr˜†„swŠ€›’”•‘€xŽŽ–‹†‘…‘ˆ|—…‘w—r‹—ˆŽ‘†¦‰}‡……}†Œˆjv„{t€ŽƒyŽu‚“€ŠyŠ‘{‹Ž†‘Š™‰Œ‚’‚‘‰˜Œ‡‚Š~oЉnŸ‹zŠŽŽ‰›ŠˆƒŽ‹Œ~“}Š…–Œ‹…Ž™—ˆs€mœw{{“”Ž}†Šš†‡œ‚˜Œ‚~‘„€‹w„†Ž~}‹ƒ”—™“Œ—~•z‡ˆŒsŒ‹lr“˜“ŠŠoŒˆz‹Ž„Ž…™…‡…„Œˆ”~•~ŽŒ‡’Ž‚ƒ‚ƒy’Œ~‰“…‹y‡–Š“{‰‰†ˆy‡‹›ŽŽŠ•‡‡x˜ŽŠˆy’‘‰ˆ}ƒs‡Œˆ’Š‚Žtxy…ŽŠ„„t–x…‹ˆ‚“Œ‘ŸvŒ~Š£‚’„Š•“‚|ŒŽ…Šv˜‡ „ƒyŒ„‰eŠ„…•…ƒ‹˜‚]n~g†zylŽŸ{•‘{‘¤~’x „Š•‘n“ŒŠ{—œ‡~q†„w’£‘‹“‰”‡h†ŽŒŒrŒ„–j‹–‡†‹Œ‡‰|‹†•zŽ‘“‹£‘}‹Žtt„‰Š‚Ž¦Š˜–€r{‰˜ŒŠ–Œ˜ˆˆ“–‘‘šsˆ’„‚ˆ|ŒŒ‚ˆ…˜gn‚„yŒ˜Ž}…z’‚{𑛉’‘•™Š ‘›xˆ~Š…“u–‹p‰{§‡o”zm„‰‘‘‹†‹z€ƒ‰“…–‰Œ}‹‚ŠŽˆ}Œ†|”‘†…š…’Œ‰…˜„‰€‘‚ЇЉ‰mŽ‹‰Šƒs‚†‡…‚“…Œ†ŠŠ‹ˆŠ‹—‘z—i’‹‡Ž†r‹Ž‰—†uƒŒ†Ž|Š‘‚”„‡‹…~ˆ„…vŠŠ|‰†‡Š‡}‹†ˆˆ„ŒˆŽ‰Š‹—„Œ‰w€‹‰„‰‰Š‰‰‡‹‹Œ‡†Šˆ‡†|ˆ†…‹Š”ˆˆ“Љ‰‡‰ŽŠ”ˆ‚‹ˆ‰–†‰ƒ†ŒŠ‡Š„Œ‰Šˆ‰‰Šq‰Š‡†Š„•ŽŒˆŠ‡ŽŠ…Œˆ‡ŠŠn„‰ŽŠ‡‘z‘ŠŒ‰}ŠŠ~Ž€}}€†}“‡{~‘u‡ˆ’…‰„†…„†…|“{{ƒv„ŒƒŽ{ƒŠ”‰Š‡Ž‚ƒŠ{…‚‰|Š†ŽƒšŠ…ƒƒ‹Œ‡…†‡‡‘xƒƒƒ”’Œ€Ž~z€‚}‡ŒŽ‚‚„|‡€z~‘Ž…|„|„‹…ˆˆ‚y||‡}‘‹‘uƒ‚˜ƒ……Š|ŒŽƒ}ˆ’„{Ž‹†ŠŠ‚†{{ƒ|‘Œ€‹Ž€~„}‚zˆŠ}…މŒwz}‚‡yŠŠs}Œ‡—ˆ‹’ƒ†…†zy…”‰…†ˆ…ˆ„‡†~{z‰‚‰Žˆ|‚„”Œ‚‡…l}‡„‡…yu‚Šs‰„–|u„}‰’†……‹ˆmz‡’~z„•–„€Žˆƒys¬x‘‡~„yŠ€{v‹‘‰€{†–‡€’{Œƒƒ†‚w…‡–‚„’…†……}}˜~~‚Šx€t|†Š~jˆ~–q„|zc‹‘Ž‹ŠŠ€†}~}„‰ƒ}‰‡}ˆ…y„~‘q~{„bŽŒˆŠwvŠ…r„ƒws|„ww…vŠrƒ‚}€t}€‰‰‘{unvv…‚~}{{„x~ƒ{|ƒy“ƒ}|w…r€|sŽ„}}zz“x|y‰„}}q€~……€Š„ƒ{‚w‚y“†‚‚{z„‰z}…€Žw|‡…Ž~†rƒ“ˆƒˆŸ”‰Œt€{“Œ€‹{‰“ˆ‹—†‹§|‰‚wvŠz•Ž}‰c™‹€ ›ƒ‡’Š…š‰xœ‘Ž}”~`—ŠwБйo“w~m†Ž’}ƒ‰‡Œ˜ƒ}{‘‘†‰j}~Œ‘†…ŒrŽ„z‰…Œ••v‰Ž€{ˆy“mzi“…{“„~“‡…“”€Žrzzw“‹‘‚„˜‹}~j‹Š€pŸ“”u†Œb”ƒŒ‹ˆˆtx·†“n{y„‡€~‰|u‹ƒx‰ƒ}‡‹vw€{‚vuƒ^}Œy‚”{Œ‰zwoxˆ—ŽŒ’k‹œ‚Ž„‹ž}‰Ž†‰„‡•‰“‰Ž˜†ˆ‚Œˆ~‹…€Š…‡–†’ŒŒ…„•ŽŠ‡’|“„††ˆ…‰o“ˆŒs…„„††‹‡‡~€Š†‹Ž•’{•m‘‰ƒ—Št‹ˆš}{v‚‰ƒ‘}†Ž“{“„„„‰}„Šˆ}uŒ…}‹‹ƒŠˆ‹‰~‡ŽŽƒ‰yƒˆ…‘‘“…{†Œ‘‰~‹‚‹‹‡Œ‰‹ˆ„‘‡†ƒ–ˆ’‰–‰Š‚ЉŒ•‚‚‰‘ƒ}„ŠŒ„†ŒŠˆ†ˆƒ…ƒˆs†ˆ…‡Ž†„……‘‡Ž…‚†ˆ‹”Œ†“q‹†ˆ„“{Š„ˆ…ŽŒŒŠ†vŒ‘ƒˆ’–‡’’z‡vtŠŠ•~‰›‘€”ƒ†’oo|w…Žˆ†vt‹„Œ‰~”z•Œ’Œ‚¬Žƒ{ŽsŠˆ˜–—‡Ž…yy”ˆ”y‰uƒ’“Ž‹’’{ˆzŽ„‹Š“‚t‚pŽ˜—œ’‰}•™m”ˆ˜ƒ†v’m ’Ž“‹ŽœŽ……}x™‘†x‰•’†ˆ“Œ•ˆŒ—ŽŒ}…Š‚‰‹‡…‡’y‹…‚‡‰™~Š—ž€‚€‰{x˜›ƒŠ˜ˆŒƒ£‚{o”—Š‹„”“‡Œ„‘Ž‚„“{pˆ‰ŒˆŠ‚†Žu—„†–d‹ˆuŠŽ…¡—†‘…‚„}Š|Š˜Št€ˆ‘ˆƒ†ss‡Ž|Œ~”‡ˆ•‰‰‡‡‹kŒ€xŠƒ„ˆ‘zŒ|†‰–“•‚„€s~‰||ˆ—†ƒŒ‹…‰‡‹ˆŽ•~Žy’‹~…ЂЉ‡~t‡ƒ‰v–Ž~{•yމ‹…‚‹zˆŒ{ˆ‰}‰Š{zŠƒ‹†~z|‡‹–ˆŽŽ}—•€Š‹‰ŠŽ‡€Š‡‹||…†‹ƒ‡–ˆ‡€†€~‰€‡ƒv‰‡~ƒr{…}–ŠŠŠ’†“’Ž}ƒyvˆ~’††Š‡Š„Œ€Œ“„~ƒ•‰|~‰{‚††– }ƒ||‚{Œ‰Ž‚Ї†~’……‰||‰‚Ї†Ž€|‡ƒŽ{™ƒŽŠ‹Š†™“‘…˜“І„„‰Œm‘†Žƒt†‹‰Š…z‡‰‰Ž‰…–‚Š’Š‚Œx’‹i‹ˆ‡ˆr€ƒŠ~†v„Ž…|Šz†ˆ}Œ“„†Š‰Ž…‹€wˆ|ŽŠ‡‚…Ž…~‹†„†…€‹‡‡–Š˜Œ‹†x}…‰…‡ƒ˜††‹†…Œ‹|‡ŽŒyŒ……’‰‹‹„•‡~•Œƒ‰„Œ‹ƒˆ„‹‚…ŒŒ‰ŒvŠŠŒˆ‚‡sŒ…Œ‰Š„™‡Šˆ‹‡•‚”‘ƒŒŠ}p†’„‹y}„‹Š††††††††††††††…†††††††††††‡††††††††††††††††††††††††††††††††††††††‡††††††‡‡…†††‡†…†††††††‡†††††††††††††††††††…†††††††††††‡†……††…††‡††…††††††††‡‡†‡††††‡††††††…††††††††††…†‡††…‡†††††††††††††††…†††††††††††‡††††††††††‡††‡†††‡…††††…††††††‡††††‡†…†‡††…†††‡††‡†††††††††††††‡††††††††††††††††††‡††††††††††††……††††††††††††††††‡††‡††‡††††††…‡†††…††††††††…††††††††…†††††††††††…‡††††††††††††††‡‡†††…†‡†‡†‡††††††„†…††…‡…†‡‡††‡…‡†††…†‡†……†††††‡………†‡†††††††††‡††‡†††……†‡…††‡…†…†‡†††††††…†††††……†††………††‡…††‡†††††††††††…†‡†††ˆ†…††‹‡‹‰‚Š€†ˆ†„‚ˆŒ‡„…‡†„€…†„Їƒ‚Šˆ†ƒ……†…‹†…‰‚rŠˆˆŠˆˆŠ‡………‹‚ˆ…‹†‚ƒ„}w…ˆ†ŽˆŽ†ƒy†…‡†–‰ƒˆˆ€ˆƒ„‚~Š‚‹ƒ„‰„ˆ„†Œpƒ……‡†~‰ˆŒ„††ƒ‚…ƒ€‰€‡†’{†€‹Š‚†~x‰x†‚‹„‚‡ƒŒ€Žˆ†}މ†ƒzˆ…Š…‚ˆŠ„…‡—“Šˆ‰“ˆƒŠ‹‚‰Œ‹ˆŠ‚ˆˆ†–“Œ…‰‘Š†ŠŒ†‚Ž‹y‡†‚Š‘‰†…‡‚Œ‹€€ˆ†|Ž€‰ƒŠ‡ƒ–Šš„ŠŽxž~„š€o‚„…}‡uq}މЉ€‰’’’‘˜‡uox‘Š€r‚‰—‹–~š€˜ŽŒ‡Ž„‘ƒƒŠŽt˜˜’’…‹‘‰“q}–Ÿ‹–‹‚„ˆ†|˜“€„y’‡„}Š„t‚Šv‰Œ…‘z‡™{…•…†‰…†„}“•‡ˆrœŠ•~¨™„…~˜š€‡–ššŽ„‰“y{€ƒˆ‰š‹Œ•’Šœ‚y{˜‰‚Œ~ƒf‚|– }‰‹‚ ‹‘Žš|–vІ{œ~‹’~ŽŠ}„œ‹†“ƒŠ~}uv•Žˆ™Žq„Œr¥Ž”—‡ŠŠo{~Ž‹ˆq‰Š‡†utƒ“’€‰‰Ž‹ˆ‘„Œ–pm„zuƒ‘}‚{‹Ž””‚’y–pŠ‘†“{{€”Š}’€‹Šˆ‘Œ–’”v––’y™…Ž‘“˜‚t†}vŠv‹w’Œ|„‘r‹‡Œ†”Š’€™–“Œ†€~Œ…~•Š„†…„މ˜•ˆ|’–’„~”Šš„‚Ž‹ŽŽ‹‡‘”‰‡†‚ˆ‹„Œ€…“Œ•Œ‚€‹‚‰Œ„„ˆ‰ƒ‘ƒ†‰‘’ˆ‚‘‹}„™Œ†‡ŒŸ‡’ˆ}Œ•†~…‹‰…y|”ƒ–‹ƒ‹‰†‘€Ž‹ˆˆˆ€u‰‰~‰ˆ—‚Š‘“‡y‡xvƒ“•}…ŒœŽ{‰ƒ“”moˆzy”y}ˆŒ…Œ{{’’t—„’Š€šŒ„vŽˆ‘–…‘ŒŒŒ”ˆtš‘‘‘‚‡‡„—ŒŽ‡‘„„‹‹y‚†z…š€{ŽqŒŠˆ…›Œ—’Œ“ˆ‰‚‰Šy|•›…‡Š””Ѐހ}˜Œ†ƒˆŠ‰‰“Ž„…˜„ˆˆy‡‚Ž‘ŽŠw‘…Ђނƒ”Š„€ƒ„Š‚”‡†”‡‡~‡‚Žƒ†’yŒ¡ƒŽ††Š‡ŽŽ‹‘—Ž}‰ˆ’|}†‹‹•Œ~‹z‘†‘‘‚‡Œ€rŽ‘…Žw…‡ƒƒ€‹ŒŽŽŽˆ€†„Š‹“„zŠ‘†‘ƒŒ‹˜‘“Š‚xv„‘ˆzŠŒ†ŽŒl‰–‹‡Œ~p˜u‹ƒ††ŠŠ€w‰‘„Ž“‰‹{˜‘h•‹’Š|q‹…ŒŽ„Œu€Ž’Š|Ž‹…~…“†ˆ‡ˆ†…}€vŒ˜‡|Ž…‹‹‰„}Œ‡~‰ƒvŠ‚‘†ˆ‡˜†Ž‡|y‚ŒŒ‚‡‚‡„xˆ„ˆw‘‘„•‚v…‡ƒ‰‹’ˆ‰Ž™‚…–ƒ„†|‹y‡…†‚‰‘‰“…ˆ…}‹~ƒ™‰‰€“q—މŒ•ˆŽ‘‹‘‡‘އ‚yŽ–Š•o–Œ’Œz‹Œ“…Šy‚‚{w„}}“‚rƒ„x—v€xvˆ…‚w‰}‡{uª|~‡‡ƒ€‡ƒˆ‡Œƒˆ““ŒŒŠ‰z|†…Š~‡v‡†}wz€†‘‚‚€ƒƒ„‚vŠ‹v……‚‰}ƒv˜uv|}}€…‰s€{Š‚ƒ‹yv…ƒˆŒ„†|†Ž}z…‡€Š‚ŒiŒv„t‚zŠ}p~{y†‘rƒ‹‰zŠ|~žŠs‡{ˆ‚Œz…r…||ƒ}|yt||…xyq„}”Œ|…|ˆ~„„|y{yvƒŒ€y’‡|~„Œ{|‚y„…‚ƒ‡zrr„{†yx„…kƒŠ{‡ˆ–ƒŽ}mŠx‡Š‡t……‘x†vw…‘•‰zƒ…„•€Œ…xmŠxz”‹‚}’}Ž~{‹Š”€Ž}”{‡‘‡Œ€ކ“‰„z…ˆ€‰Œ‡—|–’Œƒ”¤€†–ˆŠ“y~‚}†”z†‰‹‰„‘x„‡„~†‘Ž‚“‡ŒŒŠ’ˆ~‰€€Šƒ•„ˆ„„„†“‹‡’‚Ž‘€”‹‡ƒˆ~‡…Œ„Œ†}‰„~„’ŒŒ€Š|ˆƒ„„…z‹‰„|zŠŠ‘‡t„†Ž„“„Œ‹‘Ž~~~‰|Œ‰ˆ‰™ˆ’ˆˆ‹€y…˜ˆ‡ŽŽ‰ˆŽ|ƒ†}•”€‚‡ƒƒƒ’…ˆ†ƒ~}…|ŠŒˆvƒ{•‹†lw„†„{‡—‘€yŠ}€x›rƒŠ€Œ|}‹Œw‡ƒ‹‰Œ„Žž‡Œ‡Œ‹y}y‡‚‘ˆ‹„|‹‡ƒ†ŒŒŠ‰}Š‚‘Ї’…€ƒ~‹‡sz‹uoŽŽ†‚€|“€‰‚ˆŠyŒ…uƒ„ƒƒy…sŒ~ƒ‹k‹„Ž~~‚|‘‡‚v~…€‚wwƒ‡{ƒ‚‚€Ž‡†ŽŠ{}†‚|yŒ€v~z‘‡€Œ…}|pƒu‡…‘ƒ€Švy{‰‰‘‚~zzy†Ž{}~Š€Šz|‚Ї‹zx€y‹ŽŒƒ„y„zŒ€‰†„ˆ|\ˆ–˜z‚ym€}‚nuŽ}‰„ƒ{{‚–˜€t‰€‡†›ƒ‰„‡ƒŽˆ†z|‹Œ…„„ƒ{†”‚„މ€†Ž…Œ{t€„”}ˆ€“£Ž„|}Šˆ‡‡ˆ€†„„‡‚„{r{Š}Š~~„tx„ˆz€…‚Š€{žƒ€}€˜swy{ƒ…||t~ƒ„€ˆ‚z}|r…}xrƒƒ|~ŽŽ…„|ˆ‚~z‘€ƒ„v€ƒw‚‡…~•€ƒˆnm‚‡ˆ€w}†{…†€†‰wŠ…vyoy}oƒ‚‚‹‚ˆˆ€„…‚ˆƒ~~~‹x€„•„‚…„€ˆ•ƒ€„‡~‡“†‰…y‰‰ns„‹ƒ‰„‚•‚ƒˆ…Žk„{˜‰‡€‡Šzˆ‡ƒ}‘‚}ŒŒ{ƒˆzŒ…Š‚‹“‰”އz‰€–€’ŽŠz~Š‹‚‹€{‡ˆ”€ŽŠzˆ†z}€ˆ†ƒ‡€|‰~…„‹~‹†“€zŽ‹†…|Š—‡’|І„–‘…~r‰‡„~|†‡Š’z~‰‹‡…Ї‰„…ˆ‰€Ž~„€yƒ†w‰y‰Ž‡“†y€„ˆ‰‹‰“|†ƒ…€}€Šˆ‡‡ƒ‡…w€ˆ‘„††’„~v…Œƒ|•{…‚ƒ‚ŽŒ…†ˆ†Šƒ‹‚ŽŠˆ†‰‚ˆ“ˆ‚Š…€‘“…{šŠŠŠ‡‰–‘…•zŽ‹†ƒ€•‡‡q”ŠˆŽ‰‡y†|~‰…„Їކ~ƒˆƒ‡ŽŽz“‰n‹†}”‹u•ˆŸ‰y…‡‰‘~†Œ€ŽƒŒ††zzŠˆ‡xˆwŠ~Šˆ…ŠŠŒ„’„†„vˆƒ‡‘‡’Œ{Ž‹‰ˆ„Š‹ˆ‰Œ~‹ŒŽ‡‰Š„‰’ˆ€…‘†–’”‰Œ‰€…†’Ž…€Ž‘€|„Œ€ƒˆ‹~†‚€„Šv‰ŠˆŒ„ƒ‹ˆŒŒˆˆ}‹‹†‡…t‹Ž€‘|Š…ˆŽŠŸ…‚„ކ‘Œ|„‡†us„ƒ’ƒŽ“‰…”•„ކrm’~zˆ…ˆ‘”™yЉ’ƒ•ƒŽ}˜|ˆ‘Žƒ…‚‹Œ„‘‹”„…ŠŒ~x’˜ˆŠ‚†Š{Š‹…Œ“yƒ…†~‘†‘}‡‹”…{ƒ‹z‚…€‹Ž†ƒ…Œ……‰„Œ|‹Š„‰ˆ€–ˆˆŠŒ“Œx—ŽƒƒŒ‡ŒŠ€‰†~†…ދЇ†‡€‡ŒŒƒzš|ˆ‚‹…€‹‡‚{‚ƒ{‘ŽŒƒŠ…ˆ}|ƒŽ†‘~z|—€‰„ˆ~ƒˆ‚z~‡Ž‹}…Ž•‡…‹…~•ŒƒŒƒ‚~‰—Š“•‹‚‹…~‰‹‹„‹Šˆ‚‚‚‚‰‹‡‰†{†‰}„ŽŽŠ‡‘‹‡…}‚‹ˆ”ˆˆ‡‰‹yŒ‹ˆˆ†‹~‰‹ˆ‘ˆ‡…„‡Œ‹„†ŒƒˆŒŠ‡†‰ƒŠv’І†ˆ{‡†††~“~…ŽŒŒ‡„‹{‚‹‡}|Œ…І†…‰‹†‹{ˆŠ‹ˆ……‡‚І‡ƒŠ‡Œ„ˆ‰€x…‹‰}†ƒ‡‹‹€…†Š„‹ŠŠ}‡‹„†ŠŒ„„‡ƒ{Œ€ˆ‡ƒŠ…Šƒ€…ˆƒŠƒ†‰~ˆw†Š…ƒŠ‰ˆ‡|†‡Š‚‹ƒ”ˆˆ‰‡„ކƒ‹„ˆ„Œ††{‡ŠŠ†Šˆ|Šˆ‹ˆ•}–‹vŽz…ˆ|y}…ŒŽmx„‡ˆwŠ…‘ˆ~…’l‰ƒ{†’–ŒŒ{‘”‰}‘—Š‘…“wy~Ž~†‹x’|‚„„†‹†‡Š‚‘ƒŽz‰ŠyŽŠ‡‘~rvŽx‰‹Ž}„‰z„…~Žz…“‡„‰ƒŒ‹~„“„zƒ†y€{Žˆ„ƒŒ‡{p“–‚|‡‰‹ŠŽ{y…‰Œ„’„ƒ‚‰Š}„…‹„„~‹}‚}†s…ƒƒ|Ž˜„”Ž‹‘|‘€~|’„‡„†ˆ‡„„†}|‘…€ƒŠŽ„|‹„•†z‰€vƒŠ{‰‹„‘‚„†ƒ†ˆ…ŽŽ”Š›‚ƒ‰ŽŠv†€–˜‰”ŠŽŒ‹{’•“ˆ„—„’„}‰x•‹†t†ŠŽ‹{~€‡†’‡‹‚ŽŒ€…‡‰‰Œœzš†qŠx€¨‡£Œ‚y„‡ˆ‡‘‚–ys‚ŒvŽƒxŠ€zˆ|€ƒ…€ƒŠw~„‡‡}”ŒŽ‰Œ‡„}‹‰‹ˆ˜‹‚‰…†ŒŠzŒ~‡ƒ†‹˜“‰}„ƒ}…ŒšˆŒ‹~ƒ’Š€”‚ƒ~ŽŒ‡yŠ‹~‚wŠŠŠƒ‰Œ†‰”ŒŒ{yˆ‡Š”uˆxŠŒ„„™ˆ”}‡}ƒzw€ƒ„‰‚}Œ‹‰qƒ……ˆ‰†ŠŽ„{w­yy‹‰Œ}ŒŽ‚t‚‘”‹~‚Œ•“ƒƒŠ‘x„‚€z‚‚…„˜€†€Œ‡‚„~ƒ{ˆƒ}€‡{‰y||Žx€rry}ƒˆe€ŠŒ‰€‰€‚‚„z‚~‡ƒ~€‚ˆŽ{‚‚~•x…y€d†‹‡~yv|ˆ€…ysƒ‚~{~|…’ytr–|‚…€|†{~{wzzxwƒ|x~ˆ€‡y}€{‰‡†}~z‰d{–uŽ‚…€{}{x|y~|u„€~vz€{€ˆ„Ž‚~‡z‰z‰tˆs||‡{u„ŒŒx‡—Š‚‰w‘zŠn~‰”ƒƒvsˆ‡‘{‡Šƒ‚”‘‹‰qm‚~w“‹Œx‰…ƒ”““ˆ€š~ˆ‚~‰‡z|‘|“Ž“…Ž“ˆŠ‡˜‘}˜˜ˆ‡{“™‚‡”Š‘|„…{Ž€x…‹Š‡{•w’‰Š~‹}ŒŠ‘…ˆ†‰Š{}…€…‡…‚ƒ‡†œ…ŠŒ‰€Š“‘€ƒ†„††‹Ž…‡‡‰}Š‹‰…‡‰ƒŠ’„|™…ˆ†„Œ‰€’ˆ~‚{{І“ˆ‹Ž|}”Œ•Œ‹~‘zy‹ƒŽ~…ŒŒ“‡ˆ…‡~‰šƒ‰–‹„Š“|{“‡’Ї~}ŒŒ’‰€‡…Ž’‡‡ŠŒˆˆ„€‰Œ‚r‡†}‘†–~Œ‹…‰ƒ–Ї–w‘‚†„‹ˆs‡‹‰‹ˆz‚ˆ†xˆ†Š†Œ‘y‹}‡Œ†Š´’“q—Ž„„‡wƒˆ’‡yƒ‹‚’~‡’ƒ‡w…Œ‰€„†‹ˆ€z{‚‹†‚‚†‰€…‡ˆ…„€|‰ŽŽ‘‡‰†x|’Ї‚„„…Œ‹…ˆ‰ŠŠ„…‰‡†‘“ˆ‹ŽŽˆ„…‰†Œ‘“Ž“‰‹‹˜‚{~†‘Š‚†ƒŠ‰ˆ‰‚…‡wŒ}„‹ˆ……ƒ””‚‡‹Œ„Œ‘‹ƒƒuƒ€’Ž}‰€Œ™Šxv“Šf|†‰xбˆ{‘‹€‚}‡sy|w|ˆ}wf‡~z„žƒg…ŒŽ´yY{‡§Œ‘Š„¡‡‚z}ƒ‚vˆl’ †”w†wŽ“x~†ƒŒ˜|x‰’jrˆƒm…ƒ’o}z•¨~~o‰Š}wvz’s|‘…~ƒp…ƒƒŠŽk}“‡€€ƒ„~{|~„‰ƒ–hlŽwˆ‹†}ycz{uy‡Œm‰n›€}sz‹…nx‰wuz›w{‚„s‡r•”Љ}…f„‘|‚}Œˆ„{o}wƒ }‹„m‰}…x}~~z†s•‹‚‡†“€ˆ‰„y‹n„†‘oŒŒ‚~‹t†h‹Œ‰’‚„y‰|‰‰y‹†ƒˆos‰—ŠyŽŽ—‡…‘‹†ˆ…l€„x‡Ž~ŠŠ}‡ˆ’‹”y‡†Žv„{w‹†„|‹Žƒˆ„ˆ“”ƒŠw”‰„‘Љv…Š‚y†ƒ•zˆ“„Š{ˆ‡x‰…Ž‹Œ‡Ž~’…ƒ‡ƒˆŒ†}}~‚……‹|‡Œˆ’Šƒ„~‰‘{r“‹‰x€ˆŽ}„„‚†‹ŠŽ‰ˆ‚„‡|~Œˆ‡†…‰Œ€†‚…€w„…•Š‹†|‚‹–Œ}‡{€Œˆ‘‰ˆ‚Š‹‡ˆˆ{‰‘ˆ}’‹ƒ~Œwy†„“†ƒ‹}|„†„~ƒpp‚Œˆsƒ‰†‡wr{ˆ”‡ƒˆ}‰Š”Œ‡…Œ|m‰yu‹†‘—Œ}‰w„‘Œ€”k‰€‘–}ƒ’}•‰yˆ|„†ƒ‹‰’•‹wzœ›}Œ‘”‘”}s€ƒy†‚q–Љ|Š‹uƒŽ’Ž”~•„Ž~ˆ{zty‹q“”“’~‚{‰‘—~‡Œ“~‘’’‡‹|…‰‡‚“„†}‚ƒƒŠ}Š~’’‹‹‰ƒ‘€‹ƒ€yŒŽ‰Ž‡Ž‰Ž“Š~›y„“~’…ˆ•¦Ž‹Œ†v•~|y•‰~y‡„–—{ŠŒt‡‹’Š‹—އ}…€…‹‘‡—‹’Œ}Œ„ŠŽ~Œ„””ˆ‡™}‘‹‰†„𑇖{“•‚†…Š‹l‘’Š|r~z„ƒy…‹…„‰…‹ŽŒ‘‹Ÿ“u–ŽjŒ†ˆ’ˆq‰Œš……t‚†{†’€„…‘~‰~}Œ†…vЇŒ|†…ˆ‡…ˆ}…†„ބЄЀ‰“”†z‹Œƒ„Œ…“~‹‚†„…ˆ…‰’}‡‚‰‹ŒŽ‹•„„ƒ‰ˆ‹”Œ‚’Œ„‡„€‹…|‹‘ƒŠ†‰~Žp‰…‡‡‡™’‚Šˆ’“‡‡‰†”І‘m‚‰Š•‰‘yŠŒ‰‰…ƒŒ‚‡ƒ‡Ž‘…†‹t„ˆ€‡Š„€†‡~‡„‡“„†…‹Ž|’†Œ„‹~Ž…ˆ›ˆ‡‡Œ‘wŒŠ‰‚ˆˆ{}Š„…€‘“’Š}ˆŒŒ‰‘„Œt‰„€zƒ†‰†~|ˆŒ€Œ€‰vˆ”wŠ’ˆ…‚…†„|–†€‚Š‚ˆ‰~‚…‹ˆ~„Žm}Žt†Š~އ‡{mˆŽ|‘‡‡„†ˆŽŒ‰}“‡‰ƒŠ‡r†Šƒ‘Œ—‚„‡‹|˜€Šˆ™r€‰……’ˆ€–‰”‚{‚Œ”ˆ‰†Žz…„„‚‹‰”„†”ˆ‘Œ…‚މБ„‚~y{“~‡‰}{„ˆš”‰…‹ŒˆŒ†‡†ƒ†…Š…‰…€‹‰Œ‡‡‘ŽˆŒŽ†‡ƒƒ‹ˆƒŠ~ˆŽ„†Œ€€zƒ„‹ˆ†…Š……ЋЅ”…—‚ˆ…~˜ŽƒxŒ‘‡…‚}„Ž‹ƒ‹Œ…އy‚…‡†‰ƒ†ƒŒ}€‹ƒƒ‡ˆ‡„‰Š„І…„Œ}‰‡‚ˆŽy‡‡„Љ†–†„………†ˆ………Šˆ‚ŠŠ”–……‡ƒ…†…††…ˆ†‘z€“”†„‘y‰ŒŠ‡”Žˆoˆ|{Š…‹…€Š†††Ž„‡ˆ…†……u‚}’„‰‚|†ˆŽ’‹€„}‰€ƒƒƒ„yˆ‚Іxƒ†‡‚‡~‚…„Žˆ{€zŠw‰ˆ‹Ž…„o}…ŒŒ€…‘†z”‘„„|‡lŒ„{‹…ƒ…{Š‹ˆŒ†‡Œ‹Š€“‡ƒ‹ˆ~„‚~„˜ˆ‘„‘”…†~‰—{Ž…€‘‹v†šyŒ€††w‰’|ˆ‰yˆŠŒ†z‚Œ„{Œƒ†ƒ…|ˆ“„Œu€ŽŠ˜x‰†„†Š‹€~‰‚…v„ЉŒˆ…‚‚ˆx…ŠŠ‹•‹†‚„y{}‘|ƒŽ~~rƒ„‹‹˜‰}ˆˆƒ{„†‹‡~|}„~”}Šƒ…’ƒŠww„|‚—†€Ž„…†ŠŒ‰€ƒŒ‹…‚’’ƒ“ˆsz…}ŒœŽ{ˆˆ”tŒ†po„„—‚Š‚…~”{ˆ…ˆk…yœ€|€z„‚•‹ˆŽŒ“‰ƒ„v}„~vƒƒ˜‰‰‡ˆŽŒ“‡†„‚‘‚˜Ž““Š„€’†ƒŒ…‹}v€‰“vz™‰”zƒx‚…ˆˆ‘ƒ}Œ‚Œ}†Ž„~‹ƒ‘‡u€‹…†}|‡ŽŠ„‚{š™‚{ƒ…}Žy‡‹‘xЉ}{†…‡‚†”…ŽŒƒ€z˜pyƒ{‹ˆz…’vƒtŽ…‡Š•ˆ€‚ƒ{ŠŽ‰Šˆ}}z}‹Š…|Œ‰ˆ‹Šˆ‚…‹‡„…žˆw‚ˆ…ЛЅs†ƒ“†‹ƒ‡…‹…„‰†ˆ„•‘‚ˆ‹Ž|‡ŽƒyŒ‚|‘‚ˆˆ¢‰’‡Š’‹‡–‘‘‰•†ŒŠ„‡‡l“‘†}Œq…‰‡Œ†ˆŒ‰’ˆ‚‘ƒ‡“Ž’vŠh‰Ž†qЇŠ{u€ˆ‚‘|‚‹‘ŒŽ”ˆŽ…‰„…t•ˆ‰|ŒŽ‡Œ„‰~‡…Š…ŠŠ‘‚Œ‹œˆŽ…z‡ˆ’‹†Ž†…Ž…’‰˜‡ˆ‰ƒ~Љ{‡ˆ…•‡‰…Œˆ“‘…’ˆ‡‘†’€„‹…‹Ž…†‰ˆŠŽ‘†}…‹Ž”‡~€qŽŠ‘†‚…‘‹€ƒ‹‡†ˆ•–ŽŠŠŽnƒ‹‘‹„Œy€–‰„‹Š†ƒ†~‰•„‹ˆ}†€‹Œ‰†Ž…|……‡žŒ—Ž““—Ž‹‹††“‡‡…‚ˆ‹l”ŒŽ’†Šr…ŠˆŽ‰“‡Œ‰˜…‚‚‡ˆˆŽ‘€v—Žg“‘’މqŒ‡ˆ’{ˆt‚‘|ˆ‰‡‰††ˆ€‹‰‚„t‹’‰|‰ŒŠ„‰~‰„ˆ‹…|‹Š„†–Š’‡}‰Œ€ŽˆŠŠŒ“‡†‰…‡Ž€ƒƒˆ†‡„‘Žƒ†‚ŠŒŠ“‚w‡‰‰‘ˆŒƒ‰ŒŽ‰Œ{‰‡‡Š†qŒ’‡……”Œ…„ŠŒˆ–ˆ‰„’ˆŠŠnˆŒ‹Œ‘y‚Ž‘…—ƒ…„„}‰ˆ€‰ŒŽ‡ƒw„ŠŽŒ™’‚}’‰}š‡ŽŽŠ‘„…˜’އŒ}’Œ‡†‰ˆ†oŒ’Œ‹ŽŠuˆ€„ˆ…‹‡ˆ‡–ˆs‡‡Œ‘‹ˆ|Œw•j–‹Œƒs‰€‰Ž{~wƒŽ’‘}„•€†~ŒŠz{‡Ž„~}x‹‰Š}“ˆŽ…ˆ…‰Š„„ˆ‡‡‹’……Œ†˜…‹„|z…‘ˆ„Ž“zŽ‚ƒ€’ƒ‹ˆ‰ˆ‰Žˆ‹Œ–ƒ€†Š…{†Š‚ŒŒ‡…ƒ‹ƒ‚{“ŠŠ‹‚„ˆt‰š•ƒ‡…‘‰ƒ‚ŽˆŠŽ‰‡ƒ‹„‰‘q†Š’Œz‹‚Œˆ€’‰ƒ‹†‡~…””ˆŠ–‹”zŽŒŒˆ€„|‹ˆˆ™“–ŠŒŒ‹Š–’Š•‡“ˆ‡…„~{ˆl–Љ—ˆ‹rŒ‰‰…†…’‰ŽˆŒŒ‡ˆzx’h‡•ƒ‡‚qŒŠˆy…u€ˆ‚|‹‘~ƒ–‡†…’Œ‡…‹€t|Š…„‹~Š„”ƒ„ƒŠ„Š’š‡Ž‰{–Š–ˆ‰‰ŒˆŒ„‡ˆ•‰‘~~Šˆz……„›ˆ‡†…‰–‘‹‰ŒŠ•‹„‹Ž‰‹’„†…ƒ’†ˆ…ŠyŠ€|q‚ˆ‡…ƒ”ˆƒŽˆ‹Ž†‹‹…”nŠ•…{z’‚Žˆ„}‰yƒ•’‹ˆ…‰’ˆ†ˆŽˆ}ƒ~Œ~‰‚‡•„†Œ‹‚›’”©”‡‡–„ƒƒ‹‘l“Œ†™‡ˆt…‰y‡Ž‘‡‚‹Ž‹’Š…yŽhŠ„„…q‚ƒ‰™zu‰…’{ˆ‘y}ˆ~•’ƒ‡‘‰‹v’z‰{ƒ†„{Š~……”}„‚€‰“‹œ’ކx„†—‹ŠŠ„‚†‹‹†Žˆ”Š€†Šˆ‰‡Ÿ‡‰Ž—Š‹Œ††”‹ˆ‹‘ƒ}€…”ˆ‹}‡‡ŽŽ}qŒ‚…Ї”„„Š‹‰Š’Š„†œ‰Š„{nˆŒ†•ŒyƒŠ„ˆŒ‹”ƒŠzŒxŒ‹†„Š‘Žst‡‡y•…Š“‹†ˆ„„l‡‚yŠˆ…‘Œ‡‹ˆŠ‘‹’–‚€‘Š‚z{‚Š‹€”ŠƒŽ‡‡…‹{‘“ƒ‹x‰ˆ~„”Їނ~…yŽ~‡Œˆ}…Œ{ЉЂˆ‰}…‚Šˆ€‡Šƒ‰‡„ƒ…‰{ˆ‡‘†‹…ƒ‚ˆ}xzyŽ‹ˆ†Š’€v€ƒŒ‡Œ‰‰ƒ„Ž„†€“‰‰…}‚~††‚|…„w{™„‚ˆŒ|…“„ŒŒ~„{Žƒ‚……‰‹‚‰ƒƒ}ˆŽŠ€††€€‡‰ˆ•“}ˆ‚{‚ŠŒŠ‹Ž”~ˆ}z‰ŒƒŒ‹Œ‘q•t‰…•‘Œ‘Šv‹’ƒ„‹…wŒ€ƒ…‚‡…˜“€Š‘‰‰|‚•“ƒŒ‡“…}iz‰—{Œˆ‚’”‡†‡‡{l‡ˆ—’{€Š}„–Šˆz‡ˆŠ~‹„…|€‹…€„yŽ€“‘‰‡„„”‘Žv•w—ˆ}‘wi|š—‰—{‰…„ŠŒ€„–ƒo‡q‡“¦{•ž‡Ž‡•€„y‹ˆ}•rƒ|…Š…n‰|…ŠŒv~q„…šy‰Š€~Šˆƒ…‰‹–‘„’€Žˆ›މЛ€‹|†‚„€{~Š~|’‘š–ŠyŠ’†‡…†††††††‡†ˆ††‡†††††ˆ††††ˆ††‡††‡††††††‡…†††‡…†‡…‡……†…‡†††……††ˆ…‡‰‡ˆ…†‡‡†‡††…‡†…‡‡†††…†…ƒ†‡††……††††††††‡†…†…†…‡††‡‡„†‡†‡‡†††‡††…†††‡‡…†…†„†††ˆ††††‡…„††††„…††‡††……††…†‡…††……‡‡†††…††††††††‡†‡ˆ…††…‡ˆ†…††‡…†‡††…†…‡‡††……††††…†‡††…ˆ†…††…††…†…‡‡†…††††††††††………………Œ‚|‡Žƒ‘|‹”†‚~‡tpŒ|™‡…“‘‚•ˆ‚—•um‘‚z…~ˆ”‡ƒtŠ…“„™|•ƒ„‚Ž…¡…{‹tŽŒ†®•ˆ”‡‡‡~’ŠŠ—†w|Œ†„˜ƒ†y—ƒ†~Žˆ‹w’t†ˆ‹’˜Š€ŽŠ˜s”‰’–‡nw¨p…‹š„ˆ‰‡Ÿ‚Ÿy‰ ‹…}€’Ž‹‹ˆv ƒp’z‚}‡›š‡Œ”zˆ|‘Š‚›u‚މ|„—|€—…ŠŠ|…—’¨Šž~—~˜u‘œy‡†”…–†‹‹”~‰ˆ}u‡ŒŒ‡”Žl—§~•—gŽ‹oŠ„˜”†ŽŒƒx}yˆ„v‡Žƒ‘}‡vo†|“…ˆ”…’˜‡pnˆx‘‡Ž“•€Ž“–}“}™{‚|€Ž‹}~†z’„‹“’†„Š’•xŸ“‹}“‘€‹˜Ž†•‰ƒƒw‹}Œ€‹•‘|‰t‡†‘‰•…ˆ‹•ƒ‘ˆŠ†ƒŽ……ŽŒ‹ˆ‰xž‡‘†Ž~š”ƒ{…‹‡™‹†}†}wˆˆ’…„ŒŒ‡‰}’……}œ{Œƒ’ˆމ~~~”Œ„ƒ‘‹Š}˜Š––Œ~|ˆ“‡„Œ‘Œ–Š‹—ƒ‡ŠŽ‘„„™‰ŠŠ˜ˆ‚Ÿ€–…ˆ‡y…’}†Œ‘‰‡‡††‡ˆ„…„„ˆ†††Œˆ…†††‡†…‡‡…‡…‡‡†‡„‡††‡†…ˆ…‚„††‡††‡‡†‡…‡…†…ƒˆ††‡‰„ˆ†„†‰……ƒˆŠƒ„†…‡††††††……ˆ‡††‡‡†……††…†‡††‡†‰…†‰…†ˆ‡††††……‡†ƒˆ„†‡‡„††…„‡ƒ……‡†‡†„†ƒ…†‡†‰‡‰†…„„„††……‡Š…†††~‡††…‡ƒŠ„†‡…††…Ї†…„†……„‡‡ƒ…„…ˆ‡†ˆƒˆ…ƒ‡…‡††ƒ‡„†††Š†‚ˆ…‡„‡†ƒ…ƒ‡„ˆ‡‡‡‡†…„ˆ…„„‰‡‡†…ˆˆˆ……‡„„…‡†††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††…††††††††††††††††††††††††‡††††††††††…†††††††‡††††††††††††…†††…†††…†††††††††††‡††††††††††††††††††‡†††††††††…††††††††††††††††††††††…††††††††††††††Œ˜Œ…rŠ{Š’‡uƒŒ„Œ‚rr‡‹–‚†Œ‡ˆš’…‰†rmŒƒz‘ˆ‰Ž‘{Šœ}”…‘‰Ž’„ˆ†‚Š~€w“ŠŽˆŽ‡‡†Ž‚‘š”‘ŠŽ”ŽŠ–…‚Ž…{‚v€Œˆ}‚yš‡‡’Œ~‰Œ‘}ŠŒ†}‡‰†„މ…‡Œ~†ŠƒŠ}”‚|žŠˆ…ŠŒ‚…|‚„~‹ˆ€‘‡‰“„€‹…z•€‡ˆ‡‘ˆ€‘•|‡~zˆ•Œ‡‚ކ|„—Š‹}†x€•†‹‚‰‡…‹”„Žˆƒ…‚’€š‹ŒŒ–z~Žy’†€‘ˆu~~Œ‡•“ƒ›€‹‰„˜{ˆ’Šs…Šˆ‘ƒ‹qwŠ~Љxƒ†Œ‡ˆŠ„Œmz‘‘އŽ|‘‰ƒ„†“‘‹‹…–„„‘€‰ƒ~w—zŠŒ‘–‡†Œ‡‚‰~ƒ’”ˆŽ}Œ|‰ŒŽˆŽ|ƒ„w‚‹ŽŠ~|‹w‹ƒŒ…€‰{‹‚Œ~‡„‚€Š…|}ŒŒŒˆ‚}„‚ƒ~ˆ|…‹Šx““…~~‹‡ˆxvƒŽ‹ŠŠ}‹……“~„€zŒ‚€‚|xqyŠŠˆ„ƒˆ€‡“ˆŽ‹Ž|ˆu~‰‚}Œz€‰†|zŒ‰‚‚~}‡|„ƒ‚„yt‹”ŽŠŒŽ†b‹˜d~Љ{{…œ”„ƒˆ‰~ˆ‹†}„‡ƒ†‹ˆ‘ƒ~„‹‡zˆ{‚ƒy‘…“ƒ†ƒ‚{†|•„‹Š‹|…Š‚€‡t„˜†ˆŠ‹€ƒƒ†w}Œ‚ˆ}~{‡ŒzŒ€v‹“”Œ~lŠ—†{ƒ„‡„ˆ‰—Ž„ˆ’Œ‰}…u„~‚„„…†‘†‚‚Œ„‡„}|€€‡ƒtމ~~ˆˆŽ‰„‰‚•ˆ‘‚……Ž~Š‹ƒ‹~‡Œ‹‘~ˆ•vy†{Ž}‡„ƒ„ˆ}ˆ†|ƒ‹‡†xŒŠ€…}…›ƒ‚‰Ž†‚y†~‡„Žy…’‹„ƒz…u}Š‚…€‰ƒv†‹…Š~ƒ–‰‰“Ž~‹‹†}ƒ…}ˆ†‡€”†ŽŠŠˆ‡–‰†Ž|”Œ‚‰……Œ‰Œp’‡Š‹‡Šu~†ˆ…†…†‹ŽŠ…‹„ŒŒ‚|“‡mŒ‹‹“Œu‡Š‘ƒ~w…‰Œ}‰ƒˆ“†Žˆ‚†‹Š‰„ƒw•‹‹~‹ˆ|‡Š—~„Œ…‰„Šwx‹Š‘‹”‘Œ…|Žˆ‹}ŽŠˆ……‰†€s‰ˆ‚ŠŽ†‹ˆ‘Š…‘‡Œ„‰”Œ†ˆ‡‡‘“…‰‡Ž†{‡ˆ‡Œ†t„ˆŒ„†–‚ˆŠ‰ŒŽ’“€†ˆŒ‹•€Œr…‹‰ˆ‡yˆ‹Œ‰{”™uv‚Œ}Œ™“}”‚z‚‚yt†’‰‡‹’†‰”•Š™Œho“‚wƒ‹‘‡”}‹„ˆŒ—|“…™‹‹€žŒŒy—t—Žyº—‡’ŠŠƒ”“Š€‰ˆ‹‡”„’’r~}„ˆƒ‚‡‰…u‰‘rŠ‘˜’‘zˆ’’€ŒŽ…‘ˆ{rŸk‰‹œ‡«š‹œƒ„‚t›€‡›zsŽƒ‡†ˆ†u•pwŠš¼‹Ž•š†|š’‚•ƒ€›–„k™x†Š—ŠŒ}„˜†€“|’~„sˆ¤Šˆy›}‡Žˆ„‰Š…‘އo‰’™‡’yˆ”s’‰Ž‘‘ht†‹ƒ…„u—Œ‚|x}|}…„~†ˆˆŠr‰Šu…ŽŒ|‡‘„yt°z‹‰}…’~€ŽŠ†~‡‘—€‡…Œ{‹„|‚„}ˆz‚Š}€ˆz…‡„Œ{„†y‚}‚‡„ƒ…m†qŽt}~……nƒ…†Œ‡„‹y„†~{€|‡‰ˆŠz~v‡}{c‰‚ƒuz„„‰y„xsƒ†wr€€ƒ~…vx‰†ƒw„‘‡‡€vqyz}ˆz‚}~ˆ|…}~|€|}{ˆŒ†~{ƒoz’~„…€ƒ}{{s–y~xw…~{tny{„~€†‹…ƒwzŠ}„{Іƒ†v|‡}ƒ‡†‡wŒxŽ…‹ƒ‡›…‰ŽŠ{}‡ˆ—‹ˆ„Œ‰‹{™‹ˆ†•}•–‚††Šˆ…”Žl‘Œ‹‹‡wŠˆŒ…u„Œ‘–wƒŽ‰‰fyh…‹‰ˆq‰Š‚‚u‚‹Ž|Š’y†‘ˆ„‹‘ŠŽ‰‘v{‘Š~‹‰{„}‰…”u…€y’ˆŒ‘ŸˆŽz‘Š’…Š„ˆŠ…„†Œ–‰ƒ’‚Š€—ŠŽŠ“˜ˆŒƒŠƒ’Œ˜“„‘„Š‚ŠŒ†Œ|…‰’Ž~‰‚‡qŒ‹‡ˆ–ŒƒŠŠ‹ˆ‘†ŽˆŠ•‹„|„ˆ~n‹‘ˆŠyŒ‰Ž„w‰y~„y„‚|ˆƒyˆ„{o‚‰zˆŒ‡„€ˆ…†z¤zz†…y…††‹†ƒ~“‰„††Ž‹‰†‡žuŒ‡Œˆƒƒ‚‡’Œ„‹ƒ‰…~†z‚…ƒ|„‡}ƒ‡€‰Ž‡yŠvŠx~}‡~v†Ž‡‰Š~|ˆ€~‡zŠŽ~†‹‡ˆ„Š~‰y…„‡…i‚‡‡€‡‚}„„”ƒ|r„‡Œ€†{‹„ƒˆ‹Žu‡‚~’‚u~}ˆ„qz~Šy†u}t†g€ƒ‹ƒŒ{„‚ˆ|{†…}‚}…†ˆ•xƒ†‹}yŒt‹…ƒ‚†…}|~€Š}†Š‡{|Ї‡†„‰ƒ|€“~‡‘‹y‚ŽŽ‹‰‰Ž‘˜‚€}ˆ‰ˆ|……ŽŽŒ€Ž„‡‰q•“‹“ŸŠ–‘ЉyŠˆ”wŽ‹†‡‹‹x‡‡ƒƒ†zŠš†‹„„Œ‚‡ˆ¡Œz‘ˆsx‚„yƒ‚Šƒrz‡Žƒ“‹}~|{‹™ƒŠ„އ‚†€v’†ŒŠ‹~‰‡ˆ…„„…ƒ‹Œyƒ€“…ˆ}z’„ˆˆˆŽ|„‰ˆ~‰Œ‚ˆ…ˆ{’†Šš‡Œ„•‡ˆ–€Œ„ƒ“„†‡Žˆ€‹‡’x“z‰—ˆ‹ƒyŒ‡…‰‚‚œ‚”‡„„“‰}‘’ŒŒ…‚…t„‘{‰Œ‘z‰‹‹|Œ†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††‡††‡†††††††††††††††††††††††††††††††…††††††††††††††††††††††††††‡††††˜‰Š‰xŒŒ‘‘|~‚‹‘‡ˆƒ|‹”…ƒ›…‹ŽŒ‰€™’”Љ‘Šš‡†‘ˆ‡r’‹Ž•‡x}€Š“†‹”‘…~‡ˆ‘ˆ‰y‡y’ŒmˆŒŽ‰u…†Ÿ€xƒŒŽ~…†~€„‡€z‰y‚‘~•ˆ€‚ˆ‰€ˆ…Œ‡‡‰•‹†ˆ™‰—‹‡„˜Œ‹„„ˆ˜ŠŒ†‘‹}Ї“ˆ†‹‡‰‘ƒ‹‹Š‘„~~‰Ž†‡Œ‰“‚‹‰ƒ€‘…Œt”€v‰~ƒ‚u‡Ž’……†Žƒ€‰…‰‘‰‰Š†ŽŠ‰‚ŠsŠ‚„—~ˆz†ˆŠ„Œ‚~…‹†„{ˆŽˆ„ƒ‹ˆŠlq‡‰‹‹„€„‚ƒzk‡‡z‘ˆ…ˆ~‰‹ˆŒŽ•’Š€Žz{„Œwx~|~Œ‘‡„‚Œ€Ž‚‰ƒ…‹•€‰y‰ƒŒ†‰‰z‹ˆw‘y~‹z‡Œz„‡…†}ˆ{‚‹ƒ‡„ƒ€€†}y„…†ƒu‰‹ƒ~‡‚z|™Žƒxz†ƒv{ˆ€†—|}~ˆŒ†‹Š†‰}‹„||—{{…vŠ}…ƒz€xˆ~~€–„ˆw‹‚„ˆ“Œ„|„ƒ|ƒ‰|Š}ˆˆŠ‡…ˆz„ˆ„€•‚x„†…Œˆ…t‚††‡‡Œ‰‡„z”…ŒvƒŒŠˆ~‹my…†…ƒˆŠ‰Š…†ˆŽnŠ„|ˆ†”‡|†’„…‹‘‡‡’‡††‹˜“~€{ˆ‰œ€ˆ‡†‹‚vyŠ…‡“€†z{Š”€’ˆ}yƒxŠ€‰uŒŒ’Š~‚Œx‹‚Œˆ‹Œ{Ž|Š‹Œ†‡‡Š…€„‰•†}†”Š}ˆ|ˆŽ‰~xˆ‘ˆ‰†Špˆ‘{‰v‡‹‰ˆ„†Žƒ|Šv~„€”}ƒˆ‡ys‡}…ޖЇ…”~Ž„{‰|‘’€ƒ„„ŠŠ‚ˆ‚‹ˆ†€}‰‘€Œ†ƒˆ’Œ…‹…yƒ‰}‘‹Š††…†……††††‡…‡††…†…†††…†‡…‡…‡†‡†††††††…†††……‡…†‡„‡†„††††††††ˆ…†…ˆ…ˆ†…†‡††……‡„ˆˆ†‡†…†…‡††„…†‡†…‡„‡‡†ˆ†‡†‡†ˆ†ˆ……†……†…††‡†††‡ƒ‡†…†…‡‡‡†…ƒ‡†…††‡††‡‡†ˆ„‡ˆ„‡†‡†„†ˆ……††…‡‰ƒ‡„‡†…‡†……†ˆ†………††…†‡†‡†††‡‡‡†…‡†„†‡†…††‡…‡……‡††‡ˆˆ„ˆ††…‡…‡……†††††„‡††‡„†…††…†‡††††…ˆ…†…†…†††…††‹t‹‡~ŒˆŒˆˆ’‹wŽx|‚•’‰‹”‹ƒ‹–qq‡w|”}†ŽŽ‡Š†~‰†•€u–|‘‹„–{‚“…†‚‘ˆ’‹o•‰’’‚„‚Š˜…‘{‹‡z”‚‰€ƒŒ–ƒˆ„uŽˆƒŒ”‹‰ƒ—ŒŽ’‹•‚€Ž‚”•’…‹…‹ŽŠ‡”€~„‡zŒŽœ‰}†•‡‹~Žˆ’Œ†‡Š}ƒ‰‘†Šƒ†Š†ƒ…‡‡}‡‚‹”„‰‰x†ˆ…Šƒˆ€•Œ£ƒ‹~Œ”‹‹•–Œw‰ˆŠ|…‘‡‘‹‹‹|š‘’“‚‡‡v‘Œ‹}ŽŒ‹|‚”’…Š‹…ƒ‰“Š…‰„~ˆ‚‹~™‚Ž‹‰…˜‘‘ƒ~‘‰††ƒ‹Œ‰l’މ…ƒtŠ‹‰Ž„{…‡ŒŽ‹‰„‘††Ž‹‚ŽwŒiŠ‹‹‰‡q‹‹–„u€‹‡{Œ‡ŽˆŽ‚ˆŒŠŠŠ€wЉ{‹Ž…ˆ‡†’}…„‹……}ˆ‰ƒŠˆšŒ†z‰‹Š‡ˆƒ…„†‡‡€…‹ƒŒƒ†”ŒŠŠˆ“–‰Œ‡„Šˆ‘ŒŒ†‡‰Ž………‡‹‡ˆ‹‹|ŠƒqŽŒ…Œ†‚•‰‹‰ŠŽŒ‰…ˆ’’†‰‰‡‡n‡‘Šx‰}…‡ˆy}}–~‚‘’m„އ}‰vu‡‡“z‰“‘ƒˆ•Žtn†~x}‹‡}‡|}‹‹€—y›†‚‚“‰}€••Ž“ƒŽ…ˆŽ‹‰•€w˜š‹‚Œ‰†—™˜{ˆ‡}“Œx†ŽŒŠxƒ‡vˆ‰†‡“•Š~‘‹Œ~‘”}Œƒ†tˆ‘‹ŽƒŠ†Ÿ‡Œ‹‹}†“‚˜ƒ„ƒ‘‹~‚‡€†yŠ“‹‚„‘ƒˆ›…ˆ{™~†}‘}ƒ’ˆ}rŒ‹‘š‰ˆ’tz’ŽŽŒŠ~ƒ”†Ž|…„‹’…†‡}‘ЄГ{„†‰’‡—“„†‚Ž{Œƒ“ŠŒ†…|†“‡‘†{‡“‘‰z‰tq‹’…Œ‹ŽŠ’…”snˆ~wˆ‘ƒŒ…’„wŒ“ƒ“t–|—€‰ƒ†”ˆ„Œv‘‰‹‹Š‹ŠŽ}w’šŠ•‰ˆ„ƒ‡‘„“Œ~‹ƒy“‚ƒ}ˆ‹†vŠt‰‘Œˆ‡„™€˜}˜~Œ‰ƒŽu–ŠŠŽ“‰‰ˆ˜ˆ‘‘‘|†™†ƒv‘Œ‘‰•’‚ƒŠ”Œ~‹‹‚ŠŒ‹‹ˆ„–ˆ†‰~‰}‰”‚‡}zŽyƒ…‡‰šŒŒŒ–~’w‘‡ŽŠƒŒ…ŠŠ…Љ…z™„ƒŒ‚}”Žu––†‰rŒŒ{œ†”„‹o‡‘‡€wy…ƒŒ†y’…‡p…|~}ƒŠƒ~‘ƒ†~z¬y{‡…†—uzЉ‚‚…•„†Œwz‚|‚‰€Œ‚ŒŽ~‚}~|”…~}ƒzŒy}‚‚‚~z‰~‘rz~…€nˆ‹‡†xІ‡w€‚‡„~……ƒ~u…syd„|‹z}{z|zwr{€vrˆ|€~uƒŒ„z~‚z—‡€zyszwxp|zˆƒ}|~|y„…ƒ}w‡s|”zŽƒˆ‰|jvx~‚w‰€~rkz{x„‡€Œ~|‰z{zŠyŠ…l|zƒ}w…‘Š„|Їƒ{ƒ’ƒ‰‘‘‰ƒ{‡Ž’’„zˆ†Œ“ˆ‹™ˆ•‹‰{t„’ˆ†u‡…‹ŠmŠ‹ˆŠ‡uš…‡‘~†ˆŒ„oЇ‰‘ŠyŽ}”i’“‘Œr‹‡‹~vŒ|‰‘ƒŠ~Ž‘‚‡}ŠŠˆ„v‰“ˆ|Œ‰Œ„‡…}†‡ˆ„u€“““ˆ~ˆ‡‚Ž—{‡ƒ‘‘}’ˆ{…ˆ„މ‹‰„•‡ˆ†Žy‹‘ƒ€…‡Ž{‰…„r‹†’‚„‡ƒƒsŽˆŽ‰ˆ€•’‹ŽŒ‘‹Ž„ކŒ|‰q™‹‹zŽ}ƒ”ƒ…†‰„‚‡ˆ—~œ•†ˆy’…‡•Ї‹…~‹Š›‡Ž‰Ž‹˜”•€‰‹Ž‚‚„‹†‰l”ޑއˆr††‚‰„ˆŽu…ŒŒŒcŽuˆh‰‰—Œƒq„‰—…ƒu‚Œ‹Œ{Œ‹„Š—ƒŽv‡ˆˆ‰…‹vŒŒ|–‡†Œ‡„Œ|ˆ†‡†Œ~‹†Œ™ˆš†Œ‰}•މˆ„ŠŠ‰–‹‰ˆŠ‡Šˆˆ„އ‹‹‡‡‰Š•’ˆŠƒ‰Šˆ‰’ŽŠ‘‹†‚Š~‡ƒ†‹‡ƒ„…’‚‰‡q‡Žˆ‚•€„ˆŠ‹…“‡ˆ…’‰‰ˆn„‘Š“…Œy†~ˆ‡€†–}—qˆ‚}†‰……“…y‹pw‡‘–…‹„‹‚˜~‡’po‘y{‡˜†“Š‹—~‹Ž›}{™q†‹Ž…•~ˆŠ€‚‚„ˆ‰†‘s‹•‚‘ŠŒŽŒ“k†‚y•ƒŽy—|‰…v~ƒŠ‹…Ї‘ƒ••އ™‡€€x¡}‹…—‘ˆŒ…‰‘…š~Ž“…l˜Ž¡ˆ‰~…Œ‡…‹ŒŒ‡w~|‘~Œ‚‚|„£Š‚„‡‰—‡{ž„t‹Ž…ƒ‡Œ‰ˆ’~†ŽŠŽ~~ª”‰Š“‹Ž•Ž£€u„Ž‚{ƒ†–’ˆŒˆ…Œv–Œ}‰ƒ‰‡‡‡•‹Ž†„x‰€|€‚~…†„ˆ€zˆnwƒ™……„‚™Ž†”†‡…‰šo‹‚z„‚Žš‹‡Š}„Œ~†ˆ†‰‹ŠŠŒ~€‘ƒ€ˆ€ŒŽrŒ„|ŠŠ„„~†|„Š’|”ˆxއ‘‰†‚s‚’}•ŽŠ‰†ˆ|†z‹‹Œ~Œz‹‰‰ˆˆ}‘‰~Š‹p„€svƒ–—“…ˆ€ŠŠzƒ~uŠ„‚Œ{tˆ“†Œ–~Љ‹ˆŒŒ{‹z…|ƒ{…†‹Šv†x‡j‹~w‡Ž„ˆ—„‹‡“…ˆ”€Š‚‚‡y€’™ˆ…‚…Œ„€Œ}‚}‰‰v~‡……”Ÿz†ƒ€‡…}ŠŽo‰‰‹…‡Šˆ‡…„‚‡Œ‡‡„€…‡…††‡…ˆ…„……ƒ†Š‡„‡ƒ„‚ŠˆŠ‡…ˆ‡†ˆ€„……‰‚†…†………ˆ…ƒƒ‚†…„ƒ„‰„‡‡„‹†„‰‰‚††ˆ„†„‡‡†…‡‡ƒˆ‡ˆ…†„‰‡Šƒ†ˆ‚…ˆƒ†…‡……ƒ†‡ˆ‚‡†…„ˆˆ‡„…ƒ…†…€‡†Š„ˆ†‡Šˆ……Šˆƒ„‡††‡‡……ƒ‚ƒ„…ƒ†‚†‡„‰…†……ˆƒ‰ƒ‚‡…„‡‰‚ˆ‡†ˆ………†‡‚†‡ˆˆˆ†††ˆ…‰‰ƒ‡‰†‡ˆ…‡ƒ†‡‡‡…Š………„‡„…„‡†…ˆ‡Š…ˆ…‡†…ˆ‡…„‡†ˆ…ˆ……„‡…ƒ…€†„ˆ’„‘‡‰’‚…Љ†‚„~–’ˆ†œ|’‰ŠŽˆ–ŒŽ‰—”‘†‡†|„ˆ†n‘އ‹‚s€w„€ƒŽ†‘‡ˆ‡ŽˆŽ‡ŠŠ›‘{•k”Œ{‡sŠˆ‡’€€v†‹‡Ž|†ŽŒŽ}ˆ‘Œ‰‚{Œ‹‚zt’„Š}†‹ŒŽ‡Œˆ~†‹…Œ„Œ‚…‹}‡ˆ‰•‹xq•ˆ~ˆŽŠ†…Œ†…‡Š~‰Žƒˆ†…‚•Ž”ˆŽ…—Šˆ“„Œ†”†‡Ž„‘ƒ‚ƒŠ‹‚Ž€Œ…”‹‹~‹r‹–‰„……“ƒ†‡‹‰„†Œ‰‘†‹pƒ‰ŠzŽ…„…„‹‹…„Œ€}‡„z„†‘‚Šˆ„‚|…~„‰“ƒŠŠ†Œ†Ž…yˆ‹{ˆ}‡‰v€™•‡Š‚Œ„€ƒvЋЖ‡„…‚†‘~ˆ”s†—‰Š‚~Š{~‚ƒŒvz‘”€ƒˆˆw€‚Ž•‹‡}„˜‹‹‹‹Œ„„††{…€Œ‚€‹€y‹zŒ{Š|pŽˆ„‡“š‰•…‘|†—‘ŠœvŠv†—”sˆ™}ƒt‚ƒ|€‚‹…}…Žz“px€–xƒŽ—„……‹˜„€‹šs„{w•Š–އ‡މ†‰‚‹‡……‘…‚…“„—‹‰Ž‡…‡ˆ‚~xŒ‰ˆŒ‹Œš’††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††Œ¨ƒuw”†‰‘«‘…‘€Š€ŠxŠx‘qˆŽ‡ˆ†‰’Š„†Š‡}„fƒ’ˆw€x’ˆ‡|‘‰Ž†”|…ƒ†}¦~”‚Š……~‘}”—Šz’†nŽŽxxŽ‹v„w‹„Š€oŒ“Ššz€•u…‚~vƒ„wz„¡’€ƒƒ…{|ƒmˆŒyš~‹‰’…„“{ƒˆ|‹†‹ˆ……ŠŠ†„xv‚‘ˆŠŒvv„‰{|ŽŠŒy‰~€€†…‡u‰Œ‚‹ …}v„…p}’€‚sŠƒ…~wŠƒ‚Œƒ‘˜œ…Š€Œ–…‡ˆŠ~†˜“€…Š€…ƒ‚}Ž„w’†……‡‚‰”ˆˆŒ‰ŠŒ„Šˆ†Š„}ŽŠ†‡™”‹”…ƒ˜‘‰„†•‹€‡xˆŠŠlŽ‘‹Š‰Št…„…„…Љ™ƒ…„†‹’Žw˜g‹ˆˆŽ‰q‰‡‰|„t‚Œ…Œ{‰”ŠƒŠ~“”‰ˆzŒ‰€‚uŽŒ|Šƒ…†”‡~Š„…†„‹Œƒ‡Š‡›ŒŽˆz€ˆ”Œ†”‹‹Š„€Œ‹‰€Š‡„‰vƒ…‡‘„‰‚•‰•…„‹†‘ƒxŽ„‰ˆ…ˆ‹ˆ}‹”Љ€ƒq“…’ˆ††–‹Ž‹‡“†”ˆ’‚‹‡‚nˆ‚ŠŠy‘’˜‰“††††††††††††††‡††††††‡††††††††††††††††††††††††††††††…†††††††††††††††‡††…†††††††††††††††††††††††††‡†††††††††††††††††††††††††††‡††‡††††††††††††‡†††††††††††††††††††††††‡†††††‡‡††††…††††††††††††††††††††††††††††††††††††††††††‡†…††††††††††††††††††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††‡†“‡ˆ}ƒ’|ŒŒzŽŽ…Œ€Žqs†‘‚Љ‘ˆ‰‘“~’“‚mƒ{†…†Š€ŠŒ”Œˆ‹”€ƒ‡”‰—Ž~yzˆ‹“•Œ†‹Š…ƒ‡‹{•‹’„}‹‡‡“ƒ~‚€y—~‡‹ˆ{}yˆŠ”Œ‹Ž‹ƒ‘‡Œ€“‹”‡†…}ŒŠ€€ŠŽ‘‹Š}{o“–‰ƒ{ˆˆ…†~“…|Š}†‰Ž‹†‚ˆŠš‚‡‚”uˆŽ…y~†{y‡ŠŠ‚‚Ž„ˆ…}ƒs‡ž†Š†‰|wŒ‡‰‚}…‹„‡~‹‰€Ž‹Œ~“ŒŒŽsƒˆ’Œ‹–ˆ†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…s–p€|}‡t}€‡vm}ƒƒ„‹x††Œˆ‚ƒ¡r‡}}†„“„…~…‰†‹Ž‰‹‚Œ|†Žƒz‹|~‹Ž‹t{~u†ƒˆ‚ކŠ„’{•}ˆ‹‹ƒ‘}{…„sˆ’~”ŽŠŒŒ}Šz‡Ž|ŒyŽ„ƒ‹‡…އ‡y}…„ƒŠ‡py|‰x“‚‹ˆ„Ž„y|}‚Ž‹‰}‘zy‰‰‘‰‰‰}ŒŠ|ƒ‰‡v‚zŠt…‡‚‚‹x†lˆpƒt€x‰€Œ€Œ™{Œ‡–Š‘‚€sƒ€”–‡‡€†„|xv€€…|w~u€}Œ›w‚~…ˆ‡ŠŠq—„€{€†—’|‰Ž‘|‡vs…˜ƒ„Š‘‹ƒ“ˆ„•tl’~y™…}„‘‹‰vŽ‘}—ƒ†‰‚•…„‚‰{ŽŽ—ŒŽ‰ŽŠŒƒŠy’‘Š’„‡‚€Œ‹‹„“ˆ€‰…~“ˆ}ƒ‰y‹w……†ˆ““…‘}šŒˆŽ……}‘Œ‡ŽŒˆ„‹Œ}™‰€‹Šˆ†…†Š’ƒxˆ|Œ†‰Œ†‡Ž‹‡{™x‡‰}Œ}‰€~€ŠŠ‚””‡}Œ€…ˆ“‡‡~‘|…š‡„‰€Š‰‹Š‰„ƒ€ŽŽ‡ƒ‡‹ŽƒŽw—„’‡}‚Œ}‰‹•ŽŽ€ˆ}€•‰†‡Œ€ƒ€ŽŠ—ƒ}ƒ‡˜Š“‡‹™„‰—މ…‘‹Š‘‰ƒƒŽo’Œ‹’‚ˆu‚wˆ†‹š{Šˆ†‹“ˆqyšŠj‘ˆ–Žrˆ}Š‘}‰w„Š€}…‹Œ‹ˆ‹…y…Љ‹ˆ€v“‡}–‹…Š~‰ˆ†‰ˆ‰lŒ†x†‡Š’†}tˆ‹‡’‡Ž†…Œ‰Œ€Šˆ‡…uƒ‰…’…’І‚’Œ…’‡‡†‰‘‚‡ƒ„††Œˆ‘„ˆ‰—‹tŒ‹•‹…„‚tމ”‰€†™…ŒŽŒŠŒŒ‰‘„І‘‡Œ‡‡‘r…”†y€„‰˜…–…‚…ƒ‡{ŒŒr‚‰†‰…mvˆ~’‰„…€–†„€l‡{—І„ˆv…†ƒŒ†‰’ŽŠƒ•‹„„{‡‹yqŽ{Œ‰‰ˆ‡‡‡ƒ‰€Ž…†”ƒ“…’ˆ€…ˆyˆ‰}‰ƒv‡p‘††”xŠ‚ˆ‡‹…‹{ˆˆ~‰†‰|„Œ‚‹~‡‘w~‰„™‡„„‰“…{ƒ‰‹†…‚…†ˆq‡ƒ‰r‚ƒ…‰‰‰‚ƒ‡‡x‰t€Š~‰‹|~‡v‡’‰…ˆ…ƒŒ‘…“Љ|~{|‹{Ž„}‡†ƒˆŒ~‰Ž‡‚‚}’s‚„}‘”†Œ{|Ž~‡‰‹~‹…~Œ™‹‘†‘‘‚‹ƒˆŽ†}Š…‡“ŠŒ‹›…ˆ–†ƒq‚•Œ…u‡‚k‰…p‹†Š‚„z{†w|„…„›vˆƒˆ‹„’‹b“x—‹k‰‰¢†u™‹‹Œ€w‚‡…‹~…‰‹„‘Žˆ—‚—{‰‚~‚t”¢ˆ~‰‡z˜œ‡~……vŒ…Žz{ˆ‚‰‰ƒ“‹ˆ}†ˆŠ‹ŽŽŠ‚ˆ†Št‡ŒŽ‡‹”zvr‰…Œ„‘‰‡”˜…Žˆ…‘{|~“„ŠŽ„—ˆ„‹‡•Œ‘†—ˆ|ŒtŽš‘‹†ƒ•s”Œ•†Œ”Š€|‹ЋДs„‰„‰‰~‹‚†˜‹šx‘|}{~|‰‰{ƒŽ{‚q€~‰ƒ‡†„‡†~‹‰‡xœuŠ‚„Œ}ƒ„‰†ŠŠ†’‹‹Љƒ‰‡‰†‚~~“•Œ{}ƒ•†…ƒ|‚|‹†‚Ї€…†‚’|†y€zˆ~{†“‹„ˆ|†|‡Œƒ~„€ˆŒ‚‰†{‡|}‹Š„‰‚…ƒk†ƒƒ„€‚{ƒuz‡“v|‚…—ˆˆw‚{‹||‚…€€z‡…€€{wƒ‰Œy{v†€‚„ˆ~ˆu~‹……€€~…‡ˆ}”|{ƒŠ€ƒŒ|‰„„€„ˆ‚w}‰{yŒ†ƒŒ‚‰€†‚j„„†‚†‚t}z†pŠ‹ŠŽ€ŠwuŒ}•~˜…‘Œ€Žrn‰€v•†‘€‹~}Œ…Œ“~Ž|šw‡‘ƒŽ{|’yŽ…Œ‹…‹ŒŠ•”z˜–ˆ~•”€‹—‘Š’Œy‚{‰•~Ž{‰z‰‡u†…‹‹‘Љƒ“†–„‰Ž‰‰‚ƒyŽƒ‹ˆŽŒ‡……™‡Œ€‚–š{–ˆ€…—ŠŒ{‰”|ŠŒŽ‰††ŠŽ‚’‹…z—ƒ•‹…ƒ~„ˆ~“ˆ‡“„‰†…“‹‘”Š€‰Œ‹‡Ž…‰‡ŽŽ„xˆ‘…ƒˆ’‹ˆƒ“|ƒ””Ž‡Žƒ|€‡‘•‰Ž•€‚}{}„“‡…ˆnn†’”y‘Œœ‹šˆ‚~Œj†x”†„‡zˆ’•ˆ‹ŽŽ…‘€˜ƒ‚‡tƒštn‡…‚ŽŒ•‚‡„‰š~“‘~‘}–ƒ‰’‚yŽyƒ’w‡“{š‡”}}“y‡†‡Ž–„Œ€‘…”ˆƒŽ„‘‹}…|~’‡|…”†–„‰‘|–…}†Œ“€…|pˆ„w†ŽˆŠŒŒ‰…„†‰ƒ}x‡wˆ‡‹‡†~Œƒ‡}’…r‰†™ˆŒ„ƒŠ‡’’†~„|z”†‰|‘†‡†ˆƒxˆŽ{„•‘‡‚“v|ˆ~—‘†‰}‚…ƒ†‰—Ž’ˆ~‡ƒ€“„–’†’}’…ŽŽ}†}ŽŠˆ‘”„“‘…”‰‹|v~’Žƒ{††‹ŽlЉ…{rއ†€‹ƒ‹|Ž‚‘…†Œ•Šœ“{•’j‘‰Œ~q‰Œ˜‰”t~Œ‡Œ{‘ƒ„”ˆ‘’u‡Ž…ˆ‡€vˆ‹{‰Šˆ‡…|‹„ƒŒ‚Š„…‡ˆ‰Ž”ŠŒ…|ŠŒ‰€ˆ‰…‘}…}‡…~‡}Šƒ…Œ’††Œ”…ˆ†‚‰Œˆ’†Š‹Œ‰ˆ‚‡Ž†‡Œ‡Ž„„‡Š~‹pˆ‘‚Œˆ‚”–’Š”’†‰‡ƒ‘‚”‹Š•m‰Ž†‹zŠ|‹‘‰…†Œk|ƒ‹†€‚wƒ…u„‡oƒx}‘ƒ…ƒˆ†v}‡¹}pŽ‚ƒz|{mz…Ž…™…›‘ˆ†_…Œ‰„€tŽyyyf’’›{„q•“wr„–{w‰~vpŠs‚~Œ“~–|Ÿ‡€t‡z‘†m{‚‚|x”ˆ~}‚€|œ„|z†m~–s•~`{ƒƒ®ƒqvt€{p‰‡…§sdr„†…€{ˆ€r~p{pzv”w‚{u}zy𛇇y‰{z‘Œ‚}ƒ~z{†‰†q}|s}’uvus{c„yr”™ˆ}‰‡{~‡|…hyŠ’ˆ˜‹y…{z†Ž|~{…Їy…{ƒ…zŠ~‡p‰}‚ˆ‰…€‰‡|{£ywˆ‡}ƒƒŠ‚|€ƒ‰‚Œ“‹„…“{††‚’…‚‹‰‚…Ž„‰€w††|ƒŽy‹z|ƒŽ€‚„z’z‹u|…~s†’‡…ƒ‘~“€…„{‰{ˆŽ{ƒ‚‚ƒ‰w|ƒˆ|‚„ˆ‘i…Ž…†ˆ€…„…ƒu|‡‚†}~˜†…uw†ƒŠ„…Œv}{}€{zz…~…‡r~rƒx‹~”~†€Œx€‚Š€‡z‡„€}‡€”z}†ƒ…‹~~}†„ƒ†‚‚‡†‚~ƒˆ„~„ƒ|w†€sІ‡…l–fu€n~‰ˆw‰…s~‡qŒqtt†„€Š„l•zx {Šw…Š{t‚ˆrŽƒ€™Š}…“„ˆŽ†|„Šqe‰„yy‹gya€n•x“}…°ˆ~~z„€š‚~†ˆz„v‰‰•Œ~wކ‚‘w“nmxŒe|z|ˆm‹}–q{v‡‚x••’xnx|X^~yŒ‹‚ƒ}z—Ž„p„‹ mn~|gœ\h}s}€•€x‡¤v€ym€|yŒk~šr“~WurŒ†g‹žv‹€ˆz—–v|py‡tzˆgŽ^‚‘q‡††h•c’‡to{~€••{u}©~†…–tewq†ˆ{…}‡xq“…zy z}…‹‡ˆŒuy„€š‚Ž“‰z‰ˆ‡ˆ†y”}…Š…ˆ’Žˆƒ|†ˆ‡ˆ‰„…Ž”Œ…‰~m~‘‡‰y“ƒ˜œ‡Šwu‡‡”‹€v€‹‡ƒ€†ˆŒ}}†‚„ŒŸƒ‹{‡€”’Œ‚‹‹…‡“‘|šŠ…€†‰y™—x}Š…Šˆ|‹w‚ƒŒz„…–‰‚|•~|~Œ•„†zŒ~…’vŽŠy•‚€ƒwˆ†‘}…„|}”o‡ƒ‘…‚Œ{–€†€„xˆ†„•ƒ’ƒ…{‡…„˜Œ{“ˆz€ƒ…‹Ž‡–Žy€‚ˆ}Œ†q’”Œ“‹……|ˆ‹‰ƒ‹ˆ„‹‚„Œ…’†„„„†ˆ‰‡‹Œ‡ƒ‰€ˆŠ‹Œ†Šˆ‹{‰ƒ‡‰Œ’|‹wˆ|€~†Š…•Š‡ŽŒ†ˆŽ…Žƒˆx‡…†}…‹ˆ~~€‡††Œ‚„Œˆ‹ƒŒŠ‰ŽˆŠƒ|’……ƒˆ‡…ˆƒ„‰Š…†ˆ‹ƒƒ†y†„…‹‹‡„…yˆ†‹}‚ƒˆŽ€‡‡€‡‹‡‰Œ|†ˆ†”Œ‰„ˆ†ˆ‚ˆ‚Š‹ˆŠy‹ˆ|„‡‡‹Š†…‚„„Œ†‰‹‹†ƒ~ˆ’…‚ŒŒ‚~ˆ‰†Ž…‡†‚ƒ…†‘‡„Œ~Œˆˆ††ƒ‰Š‘‡‰|h|‡Žƒp„’š„„ry‘{†ˆ‘Š„–‚‡€™tkuzv™…•Šv‹…„•ˆˆ…•€’w“u„€Œšœyyšq‘‡|Š…•‡Ž’“‹s£‰‰—Žˆƒ’“rnŒ‡u„s’|†”—z‰”q‡…Љ˜’ƒ‘š‹~’†}…Šn…–„’Š™„Œ†“€z“”ƒ{„Š’…‡Ž|‹‰–”‰ˆŽ‹‚~Š„–‰~}Œšˆ–ƒŠˆ‹‡‡ƒ¦…Žˆ‘‘Ž–|{Ž‚˜„‰”|‹‹†”ˆ|𓉒…‰n‹—€’™…rs•’‚€}‰‰Œ‚‚ˆ˜”…Š€‚}…Š“‹•ŒŒ’††‚Љˆƒ‡{’“†‚•ƒŒ‹…ЖއЋx•ƒ‚‡‚‚‡‰oŽ‹‘•t†€…†Ž„’‡ƒƒ„€ŒŠŒŒŒ }—‘mš‹ƒŒ~t‘‹‡•}v‚‰‹‘|…‘’všw‡‘‹z~…†{~xŒ†Ž}І‡‹~„†ŠŽˆ‡‰Šƒ‚“‘ˆ†wsˆ—…{ƒŠ„ƒ“}Єމ…‘ˆ–‰†…ƒ”•Ž—„†‹€””€†‡ˆ™}{{Š‘‡~‹Žƒ‡ƒsŒ—}‰†ˆŠ‡”ƒŽ•‹‰ƒƒ‚’Š”qˆˆ‡—…”|~Œ††ˆŠ}vˆˆ‡‰‰w†”‰˜z…qr†ˆ’‚ŠŽ–}•ƒ‹ql‹}x—›„†“–}•‡˜}™xz™w…ŠŒ“~†œ{‡‹~‡‹‡‰’†‹ŠtŽŽ…‡„{†…‰Š“v|˜‹|Ž}—ƒ|‰•‰}Œuƒ…‰ˆŠ‘‡’™‡‡„˜€ŠŠ‡”o“ŠŽ‰ŽŒ‚’ƒ‹…“ˆ•€u•‘І‹‡‡Š–ƒŽ‡’‹‘|†‚‡‡ƒ‚–Œ™Ž„‰…ŠŒ†‰y£…w‡•†wЉ‚ˆƒ•‡’}–}Š–ŒŒ‹†Œ’ŒŠŒrЉ‡|„•…Šw˜x–„˜‡€‹ƒ£–””‰ƒ‹€‡†”’”™’ƒˆ|’„Š“‰~‹†}‰ˆ†œ‚‘ŽŽ—‘~ƒ{‡‰‹‡‰l•ދЇr‰‡‚‹„ƒ‡Ž‡~ƒŽ„‡ŒŽŒ‘v”h‘q…˜‰”„‹u‹‡Ž{‘މ•ˆvŒƒ†‹‡„‡v‰–‹|Œˆ„‡‚•|Š€‹‡„ІЇ‰”Ž”ƒŒ{“…‰~Š„‰™ˆˆ†‡Ž|„‰ƒ…‰ˆ†ŽŠ}‡“‘‰~ŠŽ”Š‡Šˆ„Š’ƒ„€„‡‡ŠŠ†Ž‡}ƒqŠŠ‹Šƒ~’–‹€†“ŒŽŠŠ„’‡†‹’n…’“‡z‡yŒŽ‰€††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††…††††‡…††…†††††††††††††††††††††††…†††††††††††††…††…†††††††††……†…††‡†††††††††††††††††††††††††‡††…††……††††‡††…†††††††††††††††††††††††‡†††††††…†††††††††††‡††††††‡…†††‡††††††††††††††††††††††††††††††–—˜z|œ“¡•Ž‘“}srpƒ†ˆey€`j€‘ ‰Ž—…‡‹ƒyukˆw¦{” Ÿ~„z†‹s•˜gˆ|ˆ—®‡„˜ª‹r€„€‹ €›o“pl—{„ˆ{{Œž‹{tr‹†‡~¬ƒsˆŸw˜j”¤i—t‰¡‚tŠ”~“~ƒ¥zˆˆy€nonŸ”’ zvŽŒwˆˆŒ{y~zžš€¤œ‡’ˆp…uvŒ£›š†Œz•„ˆvŒ€‚Ž‹~‹|xy‰–—t¢’…oƒ]…Œ–Œƒ~†™‡Œˆ‡uŒpƒŠ‡Žw†oŠŒ}t€y|qy†qy}~|…Ž””…yˆ‰†………‰„…‹‡Š†„††ˆ…†„ˆ‚‡„Œ…‡‡†‰ˆ‡„„‹‡‰†‚‚‡ˆ†„……‰ˆ€„ˆ…‰ˆŒˆŽ‡…Šƒ‹†„†…ƒ†‰‚„‡Š†…„‚…†‡Šƒ‡‡ˆyŠ„†ˆƒŒ…‚…†‡‡‰…„…ˆ€†ƒ€ˆŒ…†Š‡‹†Š†‡„~ކ†…ƒˆ‡ƒ„Œ„…„ˆ„—†Šˆ‰Š‰†}…‡‰…‚Ї„„•Œ‡ƒ‡‹}†ˆŒ†‹{}‹ˆ‰‚‰Š‹‡‚}yŠŽˆˆ†‰‚’‡‚Šƒƒ‡ˆ‹{€‰~€ˆˆˆ„„†‡ˆ~„‡ƒ„††‡„‘†ƒ†‰‡‚ƒ†Š„†ˆ~„‚І‡ŽŠ{……ƒ{{Š€y†|‚ˆuzŠŠ†mz‚~„„‚‹Œ‚{Š€{{§u}ˆƒ‹€†”…}ƒˆ‹„„ƒ‹Ž“ˆ€„Šz†ˆ…ƒ…‚ˆ‰‰Œ{‚Œ}€ˆ€Ž‰€|‹~}’…„†{‘ŒrzŒ}|‡‹ˆ‡……}„z…‰zw„x‰‡„}„‚Œƒ‚ˆ{†Š|€Œ‡j}Š„††z~„‚”‚{yvƒ‰w€Š|u}…„‹~ˆ~†ƒ…|~y}‰€x}~ˆ‚‚ŽŠrŠx‰†‰~€‡„ˆ„†„‡†{}yy~„}ƒ}ƒw„†‹…}ˆƒwxˆˆ„€‡ˆŠƒƒ|‰€w„„€ƒŒ‹‹z|Š~“„xŒ’ƒ~ƒrtŽ’‡„‹…–ƒŽno“ƒxДކГw‘ˆ“y~”}‰ƒ„–Š…x…o†ˆ…‘Œ‹Œ‹’‹~”Š™‡…Š’ˆ„‘†ˆ„y’†”„w‰}zw“s„ŒŽš€Œ†œˆ‘‹„’ˆur¬uŒ‹”ˆ‡’”˜ƒ‹‘{‹˜—ƒo”’ƒˆƒŒˆ€‡~•…{‘‘zŽ’§ŒŽ‘“„Œƒ¢‰~~…’~‹tv”‚‚†€„“”‹Š’Š–~ƒu•ˆ‡‡–‰‰‰„ˆ€Š†ƒ}wŽ—ˆqŽm—‘ƒ“˜bŒŽy¢‡’•…š‡ˆ{‡yˆ’‰r‡‹Žƒ…„ut…„‘‚‹‰‡€…—“†‰…ql~w—Ž„~ކ|†‰“Ž}–yƒ‡ƒ†‰{}x’„Š}•‡†’–{š–‡Œ„™š‚‚•‡‰{Š~Š‚’}†{‚Œv‡„ˆ‡‰Œ‡|‰‰•ˆ†‰‡€ˆ…‰ƒˆ‚Ž„‡•‚ ˆ‰‹Š†“•‚y—‡‡Š‡‡ŽŒˆ„ƒ€y‚„“‡ˆ‰‚‡Š‹…„}’„“…†Š}‘~‹‡‹“…yЇ}ƒ‰Ž“}„{ŒˆŒ‚†…ˆˆ…~‰šŠ„ˆ•‰„‚{†”€“‘}ƒ„‚”†Š—ŽŒˆ†|ˆ~‘Œ†Š•š†}yyˆ†••›‹…‹ˆ†’qn‹yx”‚†‰Šy‡‘‡•z‘u˜‚Ž‚”†ˆ†€Ž‰Œˆ{ЉЕ†ŒžŒr—Œ‘‘|€ˆ‘”‘‹wƒ}”‰yƒ‹”€{††u†‚ƒ’Œ‡‚žŠ’†›”Šƒ‚”’s‰‘ŒˆŠ‘ƒ„”†‡’|‹šŠ…}‰”}†•˜~Œ|‚~ƒ‹Š‰‰†…ƒŠ•Ž„›‚…‘ƒŠ‡€}€|Š~’”†‹Š‰sŒŒŠŽŠŽ…™Œˆ†€……ŠŒ‹ŒxˆŠ„~Š„‹ƒ|‰„‰zŸ˜ˆŽ‹‡Š~–Œ‹—Š€„xŒ……y‡†„…|‰ƒ„izŠ€‰z…ކw”€|zuµww“…ˆ|ƒŠ~u„ŠŠŽˆžˆƒˆ“{yމzzŒ|’‚†|…’…€‚Œ€x’z|ƒ–†~‚~ˆ‚‡mvxc‘‰…~ˆ‚…}‡†…‡}ˆˆ}{z‹€ƒ„w€v{ˆxg…Œ~|w‚x‹…|su|yts|€sxy€|ƒz‚††€ˆ{yz|y{~z{{y†‚ƒ‹‹€nŒw€ƒŒ}‡tw{‰{‰‚}w{x„z‘u€v‚‚€…|qr‡~z‡{t†€„{€Šˆ‡ƒs‚‡xp„‡{€„‡…€†“{Š‹y‡‡’†Ž‹ƒy‰‘‘u›|‹‹–ŒŽ˜’ˆ}…އ‰Š‹Œl’’މ„‡–q‹‚Œˆ…‡…ˆŠ}†€“Œ‹‡Šx–Œg•Ž›„p€‰ŠŽ„ƒuŽ’|ˆ‹†wŠˆˆˆŒ…uŒ”…|“†Ž‚„‰Š|‰„ƒ…‡‰qŽ†Š‹Š˜ˆzu†ŒŒ€Š„ˆ‰‘ŠŽ‹Œ‰‹~ˆ‹„‰ˆ†Ž““‰ƒ‘…†„ŒŠ€ˆ…•…’ƒ‡‡€…Œ†‘q•“†Š‚–‘„Œ‹Š„‰‡‡…†”ƒˆn†Ž•Œw‰}Ž‘‹ˆƒQŠƒ„„‚ƒdyx‹Ž‘{‘}†”rŒz„v’~nvx…y‚|‹Ž‰³˜k}y•ƒ‡ƒ„q„p‰‡—vq|„~i˜z~¨€}…‚€{Šƒ¡…oxˆn”‰Ž‹€ƒ]vŠxk„…~m€• €w}vy‹‡y’‹¡Š…€Ã‰…‰€“ˆ‡¾iuyŠuŽwˆ‡zx„v‚…~ƒlw‰r‚‚yh‚y{€~Š€‚†~}ƒŽ™†|ƒƒv‚q“„‰˜„‰‚š’—‰“kn~…‚ƒo‹|o‰z‚†y~•‹Œ„‰x~lx}‰—}ˆ‡›‰v…‚ˆ†ƒ—n……{‚„ˆ„y€‡—n†‹w‚Œxƒ„{…}~“„†k~ƒs~€”Ž…}ŠŠˆ€o±vŽˆ†{ƒŠ|~€Š‚ˆ‚‰€ƒ‚y…‚€ˆy|‚‚}†ˆ…ƒ}‡|}wŽ“†w‡r‚‡|‡‹~z}s’yps}Š„uƒƒƒ’tz„œ{ŒŠ~v„‹€|€‚|„Œ|~†€‰y‚‡m]•€‰†xkqˆˆ„vsuŽ{a€€„txp}{…}oƒ~Š–q|xƒ{Š{x‚Љ{|s{wqƒ…‚ƒ~x‡‰ƒu}‹†…z€}tŽ{uy}„{z‡~‰„t‹|v„}ƒŽt|ƒ„|v„”‘˜€“†‚{€…‚’„x‘v{œ–†—€Œ€ŒŠ‚ˆtq˜x}ˆŒ‡t“Œ–…Œ•‹•w“–vŠ•…š‚y}{“…{„ƒ‘†{‚z‘€r“Œ”œ}„˜ƒy’‘‹w~{~|“†wˆuzzrt€Œ‰”‰‹ƒ…””‘•‘–•ƒˆˆ†z§…‘ŒŒ…ˆ”~‹ƒŽ‘‚Š‚‡lž‰“Ž…ƒ|…¯™„q’|–zŸ…s§˜Š„€ŒŠŽŽ¥‰w„‡‚ Ž|~‡ƒ‘~‹ŒxtŠ€ˆx’t›—‰†~™œŠ˜‡•ƒ‡Š{~‡€€{‰rv‘}“œ}™x‚’ƒ‡‚€€v‘‘‡‰{|†€ˆ€|І‡Šo‚„i}ˆ|Œ€y~Œ‹n~µ}sˆ}z~Šw‰mІyƒ‘­Š…ˆ{ˆ”˜}…vŸ‚ˆ„‚ˆ~ˆ||”}u”qŽ…{~ƒ|–|{y•Œ‚€gv‘m}pu‡… ‹r†€y’€xy„{‰‹ƒ}}‚|„~ŽooŒdˆ—wŽˆvƒ„|kvqЇƒv‚{k~vj‘z‚lx‡}‘€rzˆtpx„€}‚vsp}¦z„{y‰ˆ„~|‰…v~€‹}……‚‡|y‚p•v~}xq‡{l{yrŒ{ˆ~{‰wt…ƒy†”„lwzyxv˜h–‰†‘‰zˆ”}‹‡Šy}‡‚Š‘‘‰‹…ŒŒŠxšŠŒ“Š‡†‘™—Ž„y…Œ~„ŒŠŒŠm’އ‹}‚„ˆ‡ŽƒŠ‡‘‚}‹‰‰ŒsŽs”h‡…–Їr…œ}€uŽŒ|ŠŒ‘‚˜w”†‡‰……}€‚w‰ŽŒ€•†‚Œ†Œ–{ˆ„„€†…{އ†‹Œ‡›…Œ†•‡ˆ€ƒ‡‚‹ƒˆ‹”‰‹ŠŽŠ‰ŒŠ‰Ž”—ˆŒ‡„…‚ƒŽ…†’ˆ…Œ†‰€ˆ‰Œ„ŽŠŠ‰€„ˆq†—Š™‹‚ˆ‹ŠŠ…Š’‹‚އ{‹‡r„І‰‡|‹|Š“€‹z•}†‚‡w|†Œ}|‡Œ††n‚€{~~“…‚…‰…{u¶x‹‡xy…{v|Œˆƒ…••Ÿƒ„ˆƒt…‡~ƒwŠ•–ˆ€„…w‡€‚€‹Š~|~…†~||‚€‚x‰umz|‡sqˆˆ”Šw…”‚Žƒ„w†„Š{}Šƒw{‡}€}z{xƒd„z†”|z€||€ztqˆ‚zsŒƒ…‡ukf“}xw†~………zxu{yŒ|‚|ry€…w{„yƒ‹ˆƒ|}ˆz~‚–tŠƒ…x|y€|—v}xuŠ…{yyy†‚€‚€†ˆzyƒ†r€w‡z‰vzxŠx|}†‘t†„†…‡ƒ„††‡ˆ‰†‡…ƒ‡†††…†††…††‡……ˆ†‡‡‡‡„ˆ†††Œ††††„‡ˆ…†‡†ˆ†…†‡†…†ƒ‡‡‡‡…‡††‡‡‡†…††‡Š††††…†…††………††…††ˆˆ‡†††‡†††„‡‡„…††††…††††…††„†‡ˆ†‡†„ˆƒ‡„††‡††…†‡‡„†‡……†††‡‡…‡…†††„†„‡‡†„†‡‡††‡†††‡„†ˆ††††…†‡‡†…††‡…„…‡†††…†…‡‡†…†‡†…‡†…†‡†„†„‡††‡††‡†„…†……†…‡…††………†ˆ†…†„‡††…†‡††‹“–~yƒ‡}y‹v–€|‡}ƒ{€“ˆ–„”Ššv~††~‚pm–”€Š‚xŒ}†•t“Љ{‘‹‘‹v”Œ|™w“‚Œ‚‘Nw’—£Œu‚Œv€†ƒ~xœ•}wƒyƒ†‡Ÿ•šx{xžˆ€…‰“}}Š–’ƒ“}Š™†k“…Š|•‘¡pr›ˆ‹¡¡†’€ˆyŽ…™‹‰‹w”ˆƒ‘n‡ƒ†ˆ†’ˆ†z†}ƒ{ž‰–ŠŠt„ˆ³Ž“”§‡…‘™‹‡~„³{Šx•‡œw™ƒqz”ƒ’„Ž“‹tošw“’~ƒ“€Œ…‘|‡‹}‡¦…|‚“ˆž~‹¯šŠ†mƒ‹ƒyt‰‰…v™‹„qŠƒ|€‚|ˆŒ€v˜Štu°z|އ…„vކx~…‚„{Œ’žŽ‡‰Œ€‡€†“‡‚„x˜†}’u‹€xwz‹‚y‡†xn}‡ƒ……{f’t}‰~p‹ŽŒ“”€|‡‚}}{‚~~‚‡kz€€~ƒŒwdŽ…‚Š}ƒ‰}qzzr{„u~І|r€}x–z•uu}‘“}ˆ~mqwuw„|xwsƒ…ˆƒ}„}ƒŠŠ~‰l€qˆw–…ˆ}{s‘z|Š‚„„}yozl„~‰…~‰Šxu…ˆ€{‹–…€{~„…~‰}”y„‹†€Œ‰„‡ˆ†„ƒ†‡‡‡€Š…‰ˆ€Ž€‚Œ•ˆ†„„„vw‹†“†Œ‡‰‡‹…€…Ž ‹„Šƒ•މƒ‚‘›‰„ˆ‹‹Š…ŠƒŒ‰Œ‡‡w…‡‰‚‡ƒƒ‰‚ˆƒ‰†ƒ‹Š˜€Œ‡„•ŒŒ‚…‡…’†Š€y|~}‰•vvˆŒ}†zƒ‰˜š„‡‡zŠ”~ƒ„ކŸ„Œy”™…}„‚€ƒ‡ˆ†{–€Ž‰„x‚‰†›ŠˆƒŒv‹ˆy‹†‹…ko…‰„…†~}Š…|~†xzˆ~’‰Š†ˆ‚~„†‡‹…„|wŒŽ†‰Š„‡‚Šx€||Œ~‚x}€€ƒyœqu‹{„ƒ’ˆz€ƒ‚…†„~›~ƒx‡…„‚…‘…“€‹‚|““ŒŠ~}…Œ~‰zŽŒ€n~uŠz}Št…“|‰~““{…‹~‹‰…„~m†z‚„„…{ƒ‹}„{“}†„{{ˆ{—‹ƒ‰’v‰ˆ|}”“„Œus}‚{†€Œ…—}~ƒ„““†ˆ„„‚’~x—wŒy}‚‡‹Œ}€Ž}‚€ˆ€}~|‚Œx|„mŒŒ–€„ƒ‚‡‘ƒ…†„Š…p~€‹€z‚‡Ž‰ƒŠ}ƒ{€€„ƒ€x†‘†‹ˆ~{{~{‹‡|~ˆw~†††††††††††††††‡†††††††††‡††††††††††††††††††††††††††††††††††††††††††‡††††…††…†††‡†††††††††††††††††††††††††††††††‡††‡††††‡††…††††‡††††††††††††††††††††††††††‡†††……††††‡†††††††††††…††††‡†††††††††‡†††††††††††‡‡†††…††††…†††††‡†††††‡†††††††…†††…†‡††††††††††††…†‡‚‚~Љ—{ŽŸ”ŠuŒ€Ž“‡Œz‹š‚Š’’ˆ›—~ˆŠ‰ƒŽ‡‡‡ˆŠm’Ž‹‘…“sˆ…„ƒ‰‡Ž’|€Ž~‰Ž‹\’v’‡f†’‰ˆq„ˆ†“w}v€Šˆ‘|‹ŒŠ‡™}~…ŠˆŽŠ‡‰€t‹™Ž~š†€ˆ‹‡}‹†Š…„p•‰Ž’‹™zŒ‹€›ˆˆŠ…‹ˆƒ–†‰‰Œ…|‰pƒ‹Œ„……‹’”‡Š‡Œ…†“ŒŒ‡…‚‡†€…‡|†ŠŠŒ€‚ˆq‹†•†~{–Žƒ~ˆ‰ˆ‰†“†Žˆ‘„‡‰r‡‘‡Œy‰~”„†ˆ’Ї~†{ˆ†Žv„“•‡‹ytƒˆ{……‰‡ˆŽŒ‰’˜po‰}y“}€‡Š€Žoy†‘‰˜€šv›‚ˆ‘„•‹|~›ˆ‘•Œ‡ƒŽƒŒ‘—|w—†ƒŽ‹™‘˜ˆ•‡s„Šy—y{z…Œ‹y‡ˆrŒŒ‡’}•Œ“…“Ž”„ƒ~…Ž|‡‘•‘ŒŒ…†ƒ–Љ‘‚Œ”‚ƒ„‘Œ’‚‰–~•w•‡„…މ}…€ˆ™‘ŠŠ€Ž†…ˆ~‡ƒ’ƒ}…†Š”Š‘‰Žt”Ž‹Œ}›|‰’}”‚‡‡‹•‡Š’v‚‡…“‚…ŽŠŒ…œ’‚އЂŒ{…Œ‡‘‰|ˆŒŠo}Šz„Œ†Œ‘‹{‰y}•Ž„ˆz†ƒko…zyŒ‹†q„ŒŠ‘“Žy˜y‘Šƒ‘Œ~|š„š”y“Љ““ožŒ‘‘}‰†—–‹ˆ•‚zЇzŠ}Šƒ…‡šŒ{„r‘…‹}˜Œ‘~••‹–‰’ˆyzˆˆr~™¡Š–‡‚•“•Œ‹‚ƒŒ|ˆ™ˆ€–ž†ŽŠŠ‡—’‚‚„{‡~•‡Œ†}‘Š‹ƒƒ’„Œ‡€…z‡™Š„™…ˆ„ŽŠzƒ…„Ž‹Œ’ƒ‘†”~Ї¢—ˆ“•‹„ŽŒ}zˆ†‰ˆšˆ…†€š”…ˆ“„ƒ‹ƒv‹Š“‚ЇzŠˆ–“Š‹˜ˆ„–‡‹‚‚~}†‚““…‚—„Œˆ…Ž~Ž…†ŽŒmƒp˜ˆ}tˆ‹Šƒ‡Œw‰mwŠ‹‚zŠˆƒ„‰|ˆ…‡‹‹vx•„p‹‚|‘€w‡›…|z‡“Œ~Š‹—z†uŒ˜ˆwt‹†xƒv•~‹˜Ž}Š–‚ˆ‡‡ƒw“‹†‡‘އ|Š‘”‚‘‹‡„yŽŒ‡‚ŒwŠŽ˜‡~–ˆ™””‘”zƒˆ“}‰ut˜€€’‹iy“‘…‘’‹{‚Žvˆ“z€†‰†ƒ“‘‡€™†…‚‹‡”…™v„‰Š†|ˆŽ˜œ‘}–…~}€ˆ“†‰Šˆ‚†Špq‰‹‘€Œ‰‡•‡‚ƒjƒv“‰•ˆ}‡}z‡‰€‚“w†Œ~“w„‘|‘‹†‹}ˆ•†‡Œˆˆ}™‡ŽrŠ}ޓЄ‘”„Š{xˆ‚š~‡”„Šz‹„uˆ‚“™ŠŽ{ŠŽ€‡‰‡Œ|†ƒ€Šw‹Œ†Š”ƒŽ‹€‡‘Œ‚‹Ž–|z’‰‡†“Œ‚ƒ‹‡Š…ЇŒ‰„‰‘‚‹…‡…ˆ‡„€ˆ„‚‡Žzz‚•†‡‚Œ‰„‘ŒŽ|ˆ|…Š‘ŠŠŠ‚‡‘…†yŒƒ|’‡„x‡wŽw’’„ŒpŒƒ„’“x‹~‡‘Ž|ˆ–“ ˆˆk…˜„†Š‡o‰„x‡†‰ƒ††Šv‹ŠŽ”€……V~{ˆˆ€‡Œ|‡}ƒ‹€Œ‘|…Ÿ•yx‹t“އu_‡|‰ƒ‹Š–„…~‚‹–‰‚~vt†ƒ‚Ž€x~€t‚ƒŠŽ~|‰ƒ„k‚„„ˆ}ƒ‹y…kƒŽz…}‰ƒ–‹†…}€„{€w€“„ƒ…‡ƒ|…‚~†v„†‚„šƒ‚Šˆ…‚ƒy‚‚q‘€€‡‹€Š„tm…†ssyІ†…o„|~„’‰z€‡Šzu‰‡ˆvž€‚wŽt’ˆˆ‹ƒ©v††€vŒ‡ƒ~€ˆ”…ŠžŠ’€‡Œ_ˆ‘Œ…{†„’ˆ‚‚‡~ˆu‡ˆ„ˆ…†‹’ƒ„„Œƒ…‰‹„’{‚ˆ}–„‰ŠŒƒ†…‰Š„‚ˆzˆ„‹~Ž…‡…r„Œ”„•ˆŽ~‚|†‚Œˆ…™‚‚‚†ƒ‡ˆ‘‚|‚ˆ‰†}ƒŠ‡¦Š†p„„ŽˆˆŠ‘x†tm‡€‚’ƒ‡o|y‰……‰‘š}•}{•z‡¡Š‡†ŠŒ‡y„†„sŒ|„†v|ˆ„sžau†‹Žr‹ˆwƒ…Ž˜{‹vws“…Š˜Žˆ~ƒ‘yvƒ~‚„ˆ‡‚ˆs’‰Ÿ‰†Žvš‰~Žˆ„|‚’Œ‰„†—„†Œr‡’§}„‚t‹†‹ž›Œ}‹…†‚‘ƒ‰ƒŒ„‹‚‘…|ŒŠŠŒ”ƒ’”ŠŠ~p€‡‰Œ‚ŒlŒ’‰‡zr“‰‡‡Œ„Ž}…‹‡…’‰”’|–“i‘Œ‹€qЇŒ•…u~Œˆ‹|Œ‰ƒ‡’{‡‡Š†Šv‰‘Š|‰ŠˆŠŠ…‹|Šƒƒ‹ƒ‡ƒ‡„††Ž”Œ‡}…ŠŽ‚‚††…“|‰ƒŒŽ~†}ˆ„†‹‹Œ„Š–……ˆ‡Š†|„‹ŠŽ‡ƒ„‰‹‚…€ŒƒŽ†‡ŠŒq‰•‰‰‡„“‹‘‘ˆ–‡•Šˆ‰ƒ‘ŽŠ”oБޓŒŒz†~‰‡Œ†††††††††……††‡†††††††‡‡††††‡††††††††††††††‡†‡†‡††††††††††††…††…†…†…†‡††‡††‡†‡†††‡†††††††…†††††††††††††††††…†††††††…†††††††‡‡††††††††††††……†††‡††‡……†††…†„†…††††‡†††††††‡†…†††…†…††††‡†…††…†‡†‡…†…†‡†††††‡…††…††…†††††‡…††…†††‡…†††…†‡†‡†…†††††††††††††††††††††…†€†Œˆw…„ˆ‹‘ˆ„Љ‹‚–ƒy‡ƒŽ‡”Œ’ŒŒˆŠ–‡Šƒƒ”ЇІ†{‹l”“ŒŠ“…q‘‹‹‡Œ†•ކ€„‡‡†‘‘މŒz”“gŽ‘Œ†…q~‹’{†uŒƒ{‰Žƒ…‹ƒŠ“‰†‰‡‹~~uŽ–‹|‹„†Š…Œ}‰‰ƒ€‹„Š„•”˜†‘ˆ{Š‚—Š…ƒŽ…‡ŠŽ€‰‘y…“ƒ|ƒ‡ƒ”Ž‹…Šš…Љ†‰Œ…‘~†‹‰’ƒ‚„…ދБ}Œ…‡‡~…‚…q‹†„Šƒ“‹‰‰Žˆ†—„‰Žƒ’“‰nŽ–…•†y‹ƒ‹ˆ‚Œ‹‹ƒ†y‡–ŒŽŒ‹ˆ‹ˆ†z†{†‚‹›Š”Š‚–‰Ž‘–Œ…‹„€zˆŒn–Ž‹•Ž}t€’…Š€™ƒ–ŠŽ†•{ˆŽ‹œ|–‘k•{•ˆs‘…”|‹v„|†’…}’ƒ“‹||Žˆ„ƒv‹‡|„Ž’ƒˆŠ~„‡‘Žƒ†~‚’’“‘‚y}Œš‹‰‰‡ŠŠ‡Œ…‹€ŠŽ€„„…–’Žˆ‡†“ŠŒ‡„”…„†ŽŽ’“}ˆ–ƒŒ†ˆˆƒ„|‡ƒrІ†‡‘‰‚‡Ž‹ˆ†…‹‰•Œ‰p‰Œ†•€”{’„ŠŒ‰ŒŠ‹{Ž‚ˆ—‹|~‘”ƒwo…~ƒˆš‡ƒŽŠ‘‹ooˆzw˜ƒŒŽŽ€Ž„s‰€Š•„”{”~…‹ƒ¥†}„„vŽ‚˜œŠ‹‘Ž“‡z›™Ž‘ˆxˆŒŠ†•—‹uƒv„€ƒ‚Š Œv‡t™›Œ˜ƒŒ}˜…›s—|œ„ŽŒ‹s “ˆ„‡‰qŸm–—q‚›šzˆƒ–™“† ›’„„Ž{Š‹…zŠw‡•†zœ‡k’Œ‘Ž€ššy‹g†m‘«‚‰Š‹ˆ…q¤„š„Ž—vŽ›“€Œ†Š…Œ|’„Ÿˆ‘„v’‰ˆ…Š™™~”ƒ x…„mГЙžŒz…|…—“ЉˆŒ~…€ˆ“‹ƒƒŒ†‰}™ˆ’††Žœ“•‡›~’ˆ†”‡‚Ž’l‘ŒŒ‰‘‹‹v†‰‹‚x†„‘–|ƒ‹ŒŽŽ‹ˆy‘y’i‰Š…Œˆq‚…‹žu‚‹ˆ{ˆ‘{ˆ{‘Œ„ƒ’ŠŒ€v~Œ{‹Œ€ŒŒ~„}†…”{„wބВ†›‘Š‹y†ˆ”‹ŒŒ„‡„‡……‘އ…ˆ~‹šŒ‘Š™‡‹‹…‹‡“‹•ƒ†’……„ŒˆŒ|‡†“Œ€ŠˆqŽ‹‡†‰ƒ–††Œ‹‰ˆŽŽ…‰•Š„†…ˆ‚n‰‡‘ƒyŒ‚ˆˆŽ‰Žˆ…‚‡‰“…‹†‹‰€€‚€‰Š‹‡Ž†|“„„š—Ž—Œ˜Ž‰‡†”Š„‰|‡Œ‹lŽŠ†Žs„„‰‹Œ’‡‰‹—‡††‰ŒŒŒ‰y‘h’Їq‹„‹–Šu‚Œƒ|ˆŠ‡‹€„’‰|{‰ˆƒt‹Ž‰|‘…‹‰…ƒ~‰ƒ„Œ…Œt‡‰ƒ…‰‹—‹‡|z‡„–‡’ЇƒЉ‰„‘…v~Ž„Œ†–ˆ‚”Žƒ‹…†‰ˆ€~‹ƒ…’‰’ƒˆŠ‹ŠŽzŒ’‹ƒ‰q“†‰†—ŽŒŒŽŠ‡•‰ƒ‚ŒŠˆŠnˆŽ‡‘yƒ’Œ‘ˆ‚‚†Ž}…–Šw‰‘†‰tr†Š“„Ž–‡‹“„–pm~w“ƒ‰…Žƒ‹Œw‹Š‡Œ”{˜‚‡Š’‚†{€…wŠŒŽ–‰‹ŒŠ‡{”˜Œ–‚ˆ…‚”‘…”Žƒz‘†Œ{Œ„uƒ‡uŽˆ”Œ†€–‚—“—’‡†|„•ކޓ“}œ‚“‘~–›ˆ‚wއЖ’”‹Œ‡|‚…ƒˆˆ„Œ†~–‹ˆ£Œ{‘‰~–’|w‘œzЉ|…”“Œ”’}wŒ“Ž‹‘}†‰‘„|‡‡…„—‚~Œ‰Œš“…‘|}Ž}™Ž‡˜Ž…ˆ€‡Š~‹†‡}†r‚ŒŠŒ…„‡„‡„Œ€ŒŠ‚‹Žy†„„ˆˆˆ‡}ˆ‚“‚ƒŽ…‰”Œƒˆ…Їz……”‚„ˆs‰~‰Š€†„„‹‡Ž‹€”~Œ‹|‡‡Ž}u~‹„…ˆ‹ˆƒ{‡„‹‰y‚o{ƒ€†ˆ‡v…t‰}Œ‹€~}Š¢{…Œ†‡††‡|ˆ‹Žƒ~‰‚|ƒˆ€„ƒ~Šz…yy…{‹‚Œ‹y†ƒ€†‚‚„‚ƒpƒ†„‰„Œ~‚Š~‚‰‰„‚‰€‡wy}†€„ƒ€†ŠxŒ€€ˆ‡ˆ‚ˆ‹Œ„tq„~‡ŒŽ‰‹‹z€“y…~ƒ€…‡‹‚‰‹{‡ ”z‡t‡‡wŒ…€ƒƒ„›¦“‹}Œ‡Žv|‰}|}uƒ¥ˆŒjz„…‘…”xƒ|}€¨›‹”±ww–£ž‹s„‡¤n~…Œ‰“ˆ“r|Šƒ›Œ„s€€‡—„x“ƒ‰•z|xx¯Œuƒ†ƒ»’|ˆ”†ˆˆxˆµ˜ahx~‡Œ ~†¢|˜Škx‚€z“¥Ž€•“±ƒ¦‰€}•’€ty€”™—”xŽ‘o’’€‚}•˜uŸ}€ˆ‡yŒu€jž sus„†‘t¥v‹ƒ’‰šaŒ„’~„‘…›~‡ƒ“|”twŠjp‹‡wŠ}…‡‹ˆ†©Ž…”ƒz{v„~ŒŠ‰†„‰‘†Œmw‡Ž‰–ž‰€’…‚ˆŽk„yЇŒ‘‹„‡‚…‹‹‡Š~}~‰‹z‰‹}t’y†„‚’‘„•…‡ˆ€Š~‚‡{‰}Ž—|ƒŒ€‚Œw€€–{†ŒŽ{‡{…ƒ‘†ŒŠ‹€‹ƒ{‹€‹ˆŒŒ‡|‡…‘€yŠ|Œ}†‚‡‹qq‹…Žw…›ƒ‚‡‚‡ŠŒŠ‹Š€‚Ž}wŠ‚‡Œ‰„}~‰€ƒ„•………ŽŠ‚ˆ…†‘Œ|€‡…‰€’€††€Š‰€}}‚…ˆ€€‘‡‚w‘~u„y…€•}„…‰|€‘Œ‘‡‰†…Š„……ˆƒ„‰Š‡Ž‰…‰…ˆ†‰…‡ˆˆ„‰‡‡†ˆ†ƒƒ„‰†Šˆˆ„‡„…ˆŠ†„…‰‰…Œ†…‚…‚|‚ƒ…‡‹‹…ˆˆ‡‡ŒŠ‰ƒ…‡‚€„ƒ†Š…€Š‡‚†„‡…‚„…‡‡…†‰†‡€ˆ†Œ…‹…ƒ‹ƒ„‚†ŠƒŠƒ†……‰…„p…„…Š‹†’…‰ƒˆ…€‰‡ŽŒ‡v‹Š‚…}€‹‰Š„†„…‰ˆ†‰ˆ†‡ˆƒ…ƒ†„ŽŒˆƒ‡ˆ‹ˆƒ‰‡‡|‰„Œ‡‚Š„ƒˆ†}‹…€††‚…ˆƒŒŽƒ‡ˆ‚ˆƒ…Ї‰…‰ˆ„†„‡€††‡……†††††††††…††††††‡††††††††††††††…††††††††‡…†††††††††††††††††††††††‡†…‡†‡†††††…†‡†††…††……††††††…†††…†††…†††…†††††††††††††…†††††††…†…†…††††…††…‡…†ˆ†…††††……††‡†‡†††††††‡…††††‡†††††††††…††††††…††††‡†…††††‡…††††††‡†‡†††‡‡†††††…††††††‡†…††††††††…†††††††††‡††‰•‡}}u”}•u‰‰}‹rv†…”ƒ‰‘„‰‡Š…„zkƒ}wŒŽˆ€Ž|‡‡ŽŠ–‚—€–€†‡‰€Š…|‘}•ˆ‹ƒ•†’ކŽy›“†Šz’‘ƒšŒ‡™ˆ‡}‰‰“|˜y~~wƒ{Œ‡ŒŒ‡uމ•ˆŒŽ‡‡‡ƒƒŠ‹†”…‚’{žz‰†~›”ƒy—‰Œ‹‘˜}Œ‰‰„‚–…ƒ…}€‹†‘ŠwŽ€~‡Š‹vŽŒz„w{ŠŒŽœˆ~‡‰Žy~“’–|Ž~ƒ~ƒ”‰‹‡ƒ‹‹„€Œ™‰„†’„‚ƒ‹‚…Š~‘‰‚Œƒ„ƒŽŠ‡’‘“ˆƒŠ~Š’„‰†ƒ}|ˆ†‰‚—„wЉƒš™ŒŽ–|Ž–ƒ~Š–Ž‘Šz~‹m”“ŠŒŒˆq†‹‡‘šˆ˜‹•ƒ„„…ˆ…‘Šz›“g”އ‡q‘{‰‰y‡u‚€‘|‡ŽŠ‚Š„„“˜ˆ|††‚|}sŠ™ˆ|ˆŒˆ‡‚~Œ‹„‡wˆ‡„†‘˜‚“‰{p€”|—‹‹~‡˜‘{‡Œ‰”‚v}”Œ‡˜€‰~–‚’††‚ts‹ˆ‰–‰‰ˆŽ‰u‹‘†Ž†‚‡rŒ•€Š†•ˆ…“ŒƒŠ‘”‰“‰Žƒ“‘ŒoŠ’‡“—y’…–…–’ƒ‚‚ƒ‹Ž€”‘Ž‹•}Š€ˆ‹‰{Ž„z”•‰„›ƒ‘˜‘Œ‰Ž‡““ˆŒ‡€ŒŠ†m”‘’ŽŒˆ‰s}‹ƒˆ…ž‡ŒˆŒ‰‹€†ŒŠ‘Ž‹Šw™‹iŒ„ˆŠrІ—‚€uƒ‡|ˆŒ–|Šx…ˆ‚u‰Œ|~u…|’‡‡„ŠŒ~‚„‰Œ„Ž‚‹‹‰’–€Žˆ|ƒˆ~ŒŠŽŠ…Ž’~„‡Š‡‘‡}Œ‹……‰„‘“‡‡ˆ‡…‰ˆz€Œ‰†‘ƒ‰„ˆŠ…ˆ€Š‡ŒŠ‡~Œr‡‹‹„ˆƒ•‘†~‹ˆ„Š’‹Š‡’ŠŒ†‹n‡ˆˆŽ‹–y–Ž„ˆŒ‚Œ…†‡—‘ƒŠ’…|†‚ˆ”ŒŠŒ†~މ‡†‘‹’Šœ““‚„‚Ž‹…‡ŠŽ‹l‘‹‘‰Œv‡’ˆ”ƒ€…~‹“’sƒ‰‡ŽŒˆox•ŽhŒ‹‘Ž‚q€ˆ‹¡„‹u€‰|‰…†ˆƒ‰‡‰…vˆŠ‹|•‰‰ˆ„‰|ˆƒŠ†‰yŒˆ‡—ˆ—ŽŠ{Œ‘†‹‡ˆ†›‡Šƒ“‰‹……Œˆ‡ƒ†‰‘‹‰Š’“‰ˆ‡†‡Œ“†ˆ‰„…‘ƒˆ}…†‹‡‹‡Œ‡Ž€ˆ‰qˆ‘މ„‚•‘‡†Œ‹„“‰‰‡Œ…}‰‰‹nŠ‘Œ”†Šy†}ˆŒ…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††††††††††††Ž‚…ƒ€‰‡“Ž}ŒŽ“‡€†„‰’Š•ˆ„~‘˜Œ~—…ŠŠ™…—’ˆxt…’ˆ‹‡‘‹‰l‰Š}‡t‰y‰…Œ‡†~ˆ‘†~ˆ~‘ˆ…yœŽh•…˜Šqƒ‹‰‡„u“|‰“}“†ŒuŠŠ…v‰Š|”‰‡‡Žƒ}Іy„‡Œv‡Š‰ŠŠ€›…Œ†{y‹‰Œ…‰‹’ŽŠŠ}‹…’ˆ{ˆ‹Šƒˆ’‰”Š‚•……†Œˆˆ‚Š€ƒ‘…“‰„‰‰~Œ˜’‹‹‚’rŒ––†ˆƒ–‹Œ‰‘ŒŽ„Ž~€‚Œo…Š“‡‰y‹|—Œ††††‡…†††††††‡††‡†††††††††††††‡†††††††††††…††…†††‡††††††††‡†††††‡††††††††††‡†††……†††††††…††††…†††‡†††‡†††††‡††††‡†††††††††…†‡†††††††††††…‡††…††††‡†††††††††‡‡††††‡†††‡…††††††‡†…†…††††…††…††…†‡†…††…†††††††††††††††‡†††††…††‡†††‡††††††††††††…†‡††††††††††††††‡‡ƒ‰€Œ„yˆ~‚†€Œ~}ƒ|{ˆm€…˜~‹€‰‹†wŒ‘ˆ|}œt‰‡~}Š…€‡|}‰”Ž‹‰‡‹ˆ}†}ކ—އ{‡…}„†ƒ‚…ˆ†‡…’‚‰oЇx“~„‡›„ƒ€|‹{„†|ˆy‰ˆw…‘zŠƒu{Žpxz–’•m…’‡’‚ƒ†~|u†Šˆ‚y‚‹‡Š‡‡”€ƒ„†‡ˆ}~€~‡rx†‰ƒŠ~|‚W~€‰~‘ˆ††}ˆz~ކˆ€‹y†ƒz•zŠƒ˜‡•ƒlˆ‡Š…‚}‰ˆ{„Šv‡ˆ–~|„‡‡‡|‡Š‚‡‹yŒ˜†ˆ‹ƒ}†ˆ“‰Œ„~Œ…ˆ|œŠ‘Œˆ‹‹‰œ••ˆ–}ЄЄ‡‰Žl”ŽŽ“ŠŒu…•†‘„ˆ†ƒŒ—y…ˆ‘‘ŒŠmwh‹ŠŒ‹‹qƒŠ‹ž€~t‚ŒŠ{ˆ‘‡ƒˆ…ˆ‚„ЋЉ€vŽ„{‹„ˆŠŒ}†„•}……}Œ‚†˜ˆšŽŒŠyމ”‰‡Š‰‡†“ˆŠˆ‘†Œ††Ž…‹Š—‹Œ‰‹’•‡Œ„І‹‰“Œ‘“Œˆ…‘ƒ…{…‹††Ž„Œ{„…qŠŠ†‡‰ƒ”ŠƒˆˆŠŽŒ…‡‹Ž‡‚ˆ†„n‰Ž†•ŒxŠ€‡‡‰†z™‚rš{|ˆ‘~•˜zr—x†{“–“Œ“Žz„……Œ‡x©vƒ…~‰¢–Œv†‘††‹‘{‘„•Œƒ˜‹ˆ†vu›u‡yŽ••‡‰‰|iŠŠž‰x~ŽŠˆˆŽ‡‰…x‰ƒ†‰Š{…ƒ‹Œ‡€}x…x‹Š„~†›—ˆ‘~˜‹‚o›„ƒ~~‹x‡‹Œy‹ŠŠŒx‚Œ{•™v„“y{„„‚}Š}{Š…‘€‘’…puy’wƒ‘Š—„‰š…€‚ˆ~x‚yƒ‚‰Œƒ „†‡}†ŽŒƒ‰ŒˆŽƒŠ}ƒŒ}€„~qŽˆ|“Š€‹–……І„Š}‰|ˆ‹~‡xŒ‰‰Šˆ”•€Špw…‡w•Š‹—‡……l|†zŠŒ’Ž|†‹ƒ†ƒ„—ŠƒŒ™…}}Œ{p{އ‘ƒ‡ˆ~†ˆŒŠ{”„Šw‘‡}‰”†‘ˆ}Š„s‰u‰†ƒŠ‡‘{‚Ї‹Š}Š…Œ{{ˆ†Š…ˆw}„‚‚†ƒ‹†}€‘˜€’~{‡Žˆ„{†y‘‰‘„†‰Œ~‚|~††„†„†{~‡€†p…}˜ˆ|‰…ƒ—‹‰‹‰~’ƒ…ƒ~‘~}”††…‡…x‡Žƒ‚„Œ‰ƒ~…„‰€˜‘~Œz|„†{‰š}“xn˜z|Œ‹x‡ˆ‘uv˜v‰~Š–ˆ‘‘…z‰€}—y~‚†|r•‘q‡‹‡Œ‚Œ†Ž“‘އŒƒ‡hl’”Š~‚|{Œ‹‰ˆ†€ƒy}…•’~z˜‡ˆƒ†Šƒ‰lˆ‚ƒ„{„„Ž…}z|Žs‚‘ˆƒ~’Œ~Ž„†‹„|‰†v“‚~sŒ}ˆ€‰‡€ˆ‹Šz‚|z‹”s‡…Žˆzˆš‰‚€|„…ˆ•†u‰…~ˆ€t…zz~uw…x~r““„‘‹„~z{–zzu…}‚{Œ‘ƒ€ƒ’†|„ˆŽ‘…‚z‡{†‚zx‘“t‹•~„†•{†‰~}|€‡”‚ˆ|ŒЉŒt€ˆ†™ˆ†lw‰‹…~†Ž…‚“‘…~ƒ‘n…}‹‹ˆzˆƒ„„ˆŽ‘‰w‚Œ}•ˆ~wŒx‰‚ˆ€ˆ†€‹ƒˆ“‰~ˆ†x„ކŒˆ|‡wˆŽt„‰‡{€†Œ{Š€„†‡‰{Ž‚Žx†~…‰Š~y’…„Š’‚s„†ˆŽ~ƒ}ˆ‰Œwp”{zƒ†Š‡{}‰z‰€‡ˆ‹Œ‹x€‚~yˆ‚|…~‚Œ…‹xˆ‚p}Œ‰†‚‡†ƒ†‚•‚|†{}vІ{{Їƒ…}{Œ‰|}…‘†€‘sƒ{“†|Ž„vŠ}ˆ’Œ‡uŽ’†„wƒ“n‚”ŽŽ€uŠ€Œ~{ˆ‡’€‚‹ˆŠ“…—„ŠŒ‚Œ”‡}‚†~zƒ„’†Œ‹…~™Œ’“Ž„‘€ˆƒzˆ—yw‘Ž€‹„jކs‹†‚zh†Œ„€‚rƒ…{„€‡ƒ€{{‚Œt}‚˜ƒ‡’’††˜•~ˆx•vƒ†…‚~uŽ}ƒ’‡‚n‡‡ˆ…‚…„|ˆvx}zƒ~ˆƒƒ~“|~……ˆ€‰ˆ‹™„ƒ…‡ƒ‚rw…‡…“‰Š}‚‚€‚ˆ~‡ƒz€‚ƒ‚ƒŠ‚„ƒ„ƒ…€ƒ|q„†„‡Žƒˆ†x‡†~„’‹†…’‘~‡‘ƒ„…‚„‘‚š„Œƒ†‹u…•‰ŽˆŒŽŽ‡ŠŒ‰zŒ„~ކ‡œ†–ŠŒˆ„Œ™‘‘¢~–…ƒ‚ƒŠŽl•‹‹š‡s†Š†Ž|Š†ŠŒ~ƒŒ‹Œ•w•i“’††ˆq‰Ž‰œ~€t€‹’{‡‘†„ŽƒŽ‡†~ŒŒ‹‰ˆuƒ‹{ƒ‰Š’}„‚“†„‡…ŠŠ‡““–Ž…xˆ‹–‹……††‘‡‰ˆ‹“„}‰…Œ…‚„œ‰Œ‹Œ–Љ€‡‹‘Ž•Œ‰ŒˆŒ•‚y~‡‘‚…‰‡‰}‰€pŽ€…Œ„’‹‰‡Ž†Ž“‹…‚Œ‡ˆ‘ˆm‡Šˆ™‘zŒƒ…‡ˆ…yƒ‚‘€z‡„”„|‹}Œp…‚ˆ†Œˆ}Œ‰‡z|¡x…ˆ…‚€‚†…|ˆŒ‚†~‰Œˆ„‰“yˆˆ}‰„sƒŽ„…ƒ„‹ƒ€~‡~~€ˆŒxŒ{ƒ†ƒ…w…|Œxyz„{qƒ“‚†‡‰‹|‹…ƒxƒ~ˆŽƒ‚wˆˆ}{‹|…}…ˆkƒŒ†ƒŠ‡•~v€s{‚‡w„Їy‚ƒ„‡{€}‹ƒƒ†Œˆu}w{„|€…~††xt„„“’~‚‹z‡‚ƒ„‰‡…ˆ|–}€‚Œ†€vŒ{‡€†€„†‚€|Ž~‚Œƒƒ}…ƒyЉ‹ˆsƒ|ƒz‰{y”‚…||Œq„ƒ‹u†…‰qŠ„v} z‹Š…~€p†‰ƒ‚Œ…Œ{ˆ„ˆy…‡€Š~vŒ’ƒ…}†‡„„}‹†Œ|‚„‹~Œˆ‚‡Ž‡†…pˆ~„}z{‡yj…—‰†€…yЉ|x~{}‹€ˆ‡o}‡x}ƒƒŒ‚“hŽˆƒ€‹~‹œ€w}k}ƒŠx‡„z||kƒŒ{ƒЀЋrsw|y€|€€ˆƒtƒ|€yž…}}}‡w†€€„…†ˆƒ†ˆˆ}y{šxƒzzˆt‹‚Œƒƒ‰}’‰v†–†‰‰‚‘†‡††‡…‡‡††††ˆ……†ˆ†…†††‡†…†‡†††…ˆ‡‡†‡‡†††…†††‡††„‡…‡††‡†…‡‡…†ˆ††‡‡„†…‡‡††‡…†††††……†…†††……††…†ˆ†…†‡……†††…†…††††††‡†ˆ†„‡†‡……‡††‡…„‡…††‡†„†††‡†††…‡ˆ…†„†……††††……‡…†…ˆ‡‚‡†‡†…†…ˆ†…†……‡†‡†ˆ…ˆ„‡‡†‡†‡……‡…†‡†…†…ˆ‡††…‡†‡„†…‡††‡††……†‡……†……‡‡†…††…†„‡††‡‡…†……†„†…‡…†‡†…‡†††f{©g……Ž]w}„~‚}ƒ‚z~mutiˆŒ‹€’zu¨„z†„…~´˜y„›w…‹s‰vƒzƒxŠƒ‰{œƒ‚z’¡Ž‚{›{pƒtt‡¯q¢ªs–xqwˆp‰|hˆ“V|uqz€{Úsy~”n…~Œ‹…w…}ˆ„}†” ‹x‡ƒ›x–‚q‹vpg‚yz€‡…•zƒ†…Ž‚ˆ}w~h~›‚œ„ˆ†{r€‹x¡p†Œƒ}‚…‰q‘~„wƒˆˆ¡‡‹yvƒvxÈnŽ|ˆ€}‡x‰~vŽ“z‚‡l~yxˆ}Žˆw||~Šƒ~–ƒu†Ÿ‡my‹|w‰…—s‚ŠžˆŒx‡}‹Œƒ|…‘‡}‡sxŽ‘‰…І‰Œ„xvm—€yЇ„Ž‹…ІzŽŽŽ’‡‹}—o‹Ž~‚‡~~ˆ”Œ‰m‡Š‡…ˆ…‰‘“{–…‹’˜†””Ž‘wˆ„}ƒ•r„€yƒz’‡|މ‹€’‡ˆ…Š~q{|‚ŒˆŒ‡–z‰„Š•†Œ‘†~w—ŠŠ„‹‡™…†~yyz•†‹‚Š}ŠŽ‡|‘ŠŽŠ}‚“ƒ–~ƒ€†yx‚‰†’y‰{’Ž•”ˆ~‘}z€†…Œ‹Œƒ}‡‘‡~‡‡~}€Ÿ”€†}‚Їƒˆ‰Š”ƒ€p¡…†‹†pˆk“y‹{pˆŠ‰ƒƒ„Ž™†ŽšqsŒƒz‰š}Ž‘ˆ•z”wƒ‰Œ~ªŠˆ˜Ž|‡…™˜‚~ŒŠ¤‚w†˜…ƒ‡„z—‹ŠŒ“r……|ƒ„‰†‡†~Žt„†Ž…”ކ‚Š{Œ‹‡‹|ƒ—lŒ‡Œ„›…ƒ¥‚u£{…š‹~†“u‚—‹wŽ{Š’ŠŠ‹„‰”†ƒ†‡žƒ…y’ˆˆ†|±“yyšv…|Œ„†„•„™{Ž€u•‡‡Ž‡‰—Œs”mŽ{„|Šƒ—ˆŽ†‹Œ{“ƒz‡‰c„†w™Š©ŒˆŠ‡„ˆ†…‡‡„‚ˆ††††ƒ…†„†…†„ˆŠƒ„‡ˆˆ„‡Šƒˆˆˆ…ˆ~€ˆ‡†‰‡‡†‡‡ƒ‰‡Š…‰‚‹‡‘„††‰†…„І‡Š…‡‡‡‰„…‡‹ƒ††ƒ‘„€€ˆ†ƒ†…†‰€‡…ˆ‰ŒŒ‚…†„‚‡†‡…‡……‰ˆ…„…„„‹Ž€‡‰‰†‡……}ˆ…††††ƒŠ…‹„†ˆ…Œ‡~ˆ†‡ˆ‚„†‡‰~ˆ‡ˆƒƒŒ‹…††€ˆ‡……ƒƒ•‡‰„‹„І†Œ‰†ˆ†{ˆ~‡‚„…„zˆ‚ƒ‰†‹ƒ‰‚ƒŒŠ‰‡‹†‹‹‚„~„ˆ|‡ƒ…‡†‹„‡ƒ‡Š„€†‚……•Ž{…–Œ„‚ŠŽ„•ƒ|‰‰~›Ššˆ’—’ˆƒ‡Œˆƒ††‡‡‹l•’‹‹€rŒ‹‰~‡‡…“Šv†Žz‰’ŽlŠt”Šf’œ†‚p„…ˆ‰}ƒuŒ|Œ‚Šƒ‡‚ƒˆƒ„tœ‡|–Œ‰~‹}ƒ‚ƒ‡Œx†…•Š›’‡{…‰’‰‚Š…ƒ‰”ŠŒ‘‹‚ˆ{‚Žˆ‡ƒ‘ƒ……†„“•‹‡‘ƒˆ‡‰„„~†Šƒ‹‚…‡‚‘Š~…‘БЂƒq‘˜††—’ˆŒŒŠ‚–…‡”†ƒ”‹‹n„š‘’‹ˆxˆ{ˆ—†Œ•Œ†ƒ|’Œ{‹Š‡‰‚}~Ї‰•ƒwŒƒ‰}£†“–˜‚”œ‘ŒŒ|Š’Œ„ƒƒ…‰l—•Œ‘€”sƒ‘ˆ–—ˆ‰™ˆ‚ƒŠˆ€—k†vŽf‘—…‹p‡‚‰x€uƒ‡“|ˆ‡|”€‡}v‹€}tŠ—†|—Š‘‹‘~‹‚ˆ‡‹v‘Їƒ‹™’‡|€‚•}‘…ŠŽ‹Ÿ’}Š€‰Ž}”‚ŽˆŠ‚‹†“‹ˆ‹‚…ŒŽ…yu†Œ‰ŽˆŽƒƒˆ‹€‰•ƒˆ‚‚‚€r‰Œ˜„†‚”‘€~ބЄ“‰„–Œ‡“…„n„‘‘‰w‹€““Žˆ…{‡’’†Œ†Žt‚…|†Šx‘ƒy†‰{Ÿ~•‡ˆ‡†›‘”…’‰‰Ÿˆƒ†m•‰•ˆ‘t‚ˆ‹ƒ†ˆŽŽ‘„‡‹†“‰Œ{’hŒŽ‰ƒŠq€‹›€uŠ~–|†‚„††‚”‡‹†ŽŠƒ~uŒ„†{Š‹…€‰}„„”ƒ†‚s“Œ„‹Š‘˜ˆˆy{„‘Ž‚~‰‡‹˜ˆ‹Š„ˆ‘‹~†ƒ…”‹•…‘ˆ–‹…ˆŒ‚‹„‘…ƒŠ‰‰”‡…†…“†yˆ…“ˆr‹Š‚І“ˆ„…‰Œ“ކˆ–ŒŒˆŠ|o‰ˆˆ•x‹…“ƒˆ~‚ƒ€~{ˆ‹‚†Šƒ’…ˆŠlz‹…Œ„ˆŠŽ…~‘„~„šlŒ|“†ŒŠ†‚ƒŠ~ˆˆˆŽ‰‹‹}‚ƒt„€…€‚‡†€•ˆ……y‡‹‹‡x„’~‡‰|‚‡‚u{…—z†Š{~|Œ†z…‹ˆ……‚„‰‚Š|€‰€‰w~„†‰ˆ€t‡…ˆŒ}ˆz~ƒ‹ŠŽ{t~Šƒq{‡ŒŒr†—z‰„…‰Œ„Œ…~†~y{||}ˆ{~„‡}y“‡{‹’„~‚ˆ€„ˆ‚†Œ‡||†Š}z‰}Œ„‚ƒo}„‰|…“‚p„z}}{Œ‰ˆy€ƒ…„…ŽŠv{}~€…‡r„‚‡Œ™ƒkq†z{„Ž—„t‘~}ƒy«vˆƒ}y|‰‡y„ˆ„‘|†‰©‚{…|}•Œw}z~„|†ƒ‰‘‚…”ˆ…q†{ ‘‚t‘{“w~ˆ„…{ˆ†…oyƒŒup™Œ…}†‡„„~z…|”yzz|zŽ|€‚|u‚‡z{Žt`†’ˆ‹xx‚ƒ‚‚~t~|‚vqnu„oz‹l|“u‚‰…‡ŽŠty‹„w„‚Œx{‰ƒ‘„|yzŠr}{„€y€w~‡y„~{wx…z‰y€…{„ƒuˆz|zˆ‚„w‰‡r}yƒ’’wŒ…|~ˆ|z…}††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††€‰†~yy€{‚–‡mƒŒŽ„…rxˆ‡}‚~Š„†–‰…€kŠz‘„‰‹zІ‰…„ˆ}…€Šˆy†y€‡y”‡…Š„ƒ‹‡Œy‚€“‡{}›‡}~‹ˆŒ†…‚€w††x‚—’~ty†ˆ…Šƒ…t…ˆ‹€Š‚ˆ…€Ž‚{†‡†p|‡•…†‚ƒ…•…€…‰„ƒ{ƒ„‚ƒ~|w†|‰ƒ„‘‡†ˆ…‚~}…~ƒŠ†x‘‡z~s†ˆˆ‚‘„‹‚ŠŒ‚Œ„Š}†}tƒu’yƒˆ†ƒ…}ˆ†—Š‚ƒŒŒ…{†w{‡’š{‡y„„Œ…†ˆ„‹„Ž…‰‡––ˆŽ˜ŒŽ“xŒ‹}‘…~Œ€†ˆ™”‰Œ‡‹†—“•‰’’‹…‰…€€‰‹l”Š‹•‚sŠ„ˆ„Œ„Œ‘‡‡†Ž…‹Œx“x’h‹Ž‚”†q‹‡˜y‚tŠ„Ž{Š‘ˆy’Ž–‘zˆ„’Žˆ‡‹€u‰‘{‰~Œƒ‹}‰‚•‚…ŠŠ€Š–Žš‹ˆ{–Ž”‹‰…ЂІƒ„—‰Ž…‹„„‰ˆ›‰‰…Š˜Š…‰‘Œ˜…†“–‡‹‘…z†Ž€“„‡‡|†€~pŒˆ‡†‚‘ˆ‰‚†‹–Œ‡‡‹Ž…ƒ‰n‹‘„“~“z‹‡…‡Ž‹‹Œt…’‘‚ŒƒŒ‹€‚…~‰Œ„zŠˆ€ž}’‘Œ†‘›‚”Їƒ‹†‹l–Ž—‡‹t‡Š˜†‡ŠŒ„ˆŠ…“Ž‹‚Šw‘h’Ž‚ˆqˆŒ ƒuŒƒ”|‡Ž‚†‚‹ƒ†‡ˆŠ‰‰~v‰‰†{Ž„€~–}…’‚…„zˆ‰†’“•‰‘‡{‰‡“…‡‚……ŽˆŠŽ‘‹…Œ~‰Œ‹‡……ƒ•‡‹‹Ž•ˆ‡~„„Œ‰‘‰„‡‡‰‹‘„‚€…‘Š‹…Š‹€ˆ}‰ƒq‰…ˆ‹‚’އ†‰‹‰Œ‹†„ЉЋˆn‰Œ˜Œx‡€‹Š„Š‚‚x‹zyzwv…|o…ŽŽ~š„€v‚‰ƒ}o¡{Ž…†p‡„‰‚x‹…Œ‡‡“‚†|‡{‰‡‹‚€„y|•‰ƒ‡zz‚ƒ~€†ŠŠ€†‰Žz„ˆ|„ŠŠ…„zƒp‰y~tnz‹‰‚†‚”€‰~y~†x›†v{…‹†~…|Œ‚z’‚€ydŠo˜}˜ƒoˆˆ‘}y|‰†„nŽxŒ„~t…†’rˆƒŒ‹›•x†~u”xy~–~…zˆz}{ƒ…‚ƒ‹||wŒy{‘p‚†„„z‡z‹„~~u‡‡‚wx‡Œ‚„w}~{€{{{…h{‚‚}ŒŒ~ˆˆƒ†‡|u‡Ž‚‘t}‡|‰†ˆ€‘†ŒuŒqt„•”Š|‘•~‘•€‹“onvz–Œ‘‚Ž‘z–ŒŽƒœ|“y›z‰‚Ž…Œ|„˜{ˆ‚„ƒˆƒƒŠ•‹xŽ—Œƒ‹‘…ƒ•p|Šƒy•†|}‘Ÿ}}„Štƒ‡‹‹Ž…‘‡Ž”‘š‹Œ†ƒ–x†¢—ƒ…‡…ƒƒ~•†q”’¡ƒ‡ƒ‰‡„•ƒ‹Ž‹‹‚~~„’‡†‚…xƒ™‡‡†›Œ}—kˆˆ„‘‹Œ„ކ…Ї~•w‰©‚˜‘ƒ’”†‘•‚o…Œx„‡ ‹“ˆ‰ƒw“’}ˆ{Šˆ€‚‘‘’‘††††††††‡†††‡††‡†††††††††…††††††††††††††††††††…†††††††††††††††††††††‡††††††…††††††††††††††††††††††††††††††††††††††††††††††††††††…††††††††††…††††††††††††††††††††††††††‡†††††††††††††††††††††††…††††‡††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††ƒ‘rŽ—{x~ŠŠ‰…rŠ…p‰y|‡v‚Š“‚ˆ~z±v{ކކ‡ŠŠv€Œ„ƒƒ˜‹€Ž¤‚…ˆ‚ˆ~€}y“€€|’Œ‚~|zy‡†~‹}Žx|‹Šƒ€rŒƒ”v}~~†}…‹{Š•ŽƒŠ|…ƒ~ƒ‡~y†ˆ~‚p€~—~‚ŒŠwsjy}€€„‰ŠƒŒuws‚xz~}„p‰•stzƒ‰‹z…{ux}…‚|‚wv}u…|…x„|zˆ…~}u~{–ƒŠƒ‚€‚}|xoy{|ކ‚xt{nƒ~‡„‚vm€‰z‹†{„o}||ˆ|‚†††††††††††‡†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††††††††††††††††††…††††††††††††††††††††††…†††††††††††††††††‡††††††††…†††††††††††††††††††††††††††††††††††††††††††††††††††–‹x†‚ˆ{‹|ˆ‰€‹…qy…{Œ€ˆˆŽ’‚‡ƒv„nˆ†{…|v‹Š„‹‡‡‰“‹Š‘Œƒƒˆ}‡}…™~’ƒƒ•ˆˆ‘ˆˆ‹ˆ~‹›†€…„‰„ƒ–Œ…Žšƒ{}xtŒˆŽ}Šyƒ‚•‹‹‹Žt…ŒŒyƒ„‚‡ƒ…‡~€„‡{z–‡˜zˆ‡ˆ~‹’‰}ƒ‚Œ‚z‡‡}ˆ‡„…r{|‹ƒƒ…•ŽƒŠˆ{Š~†ˆ„‡†|‰‰ƒ†v…z‰‰‘„‚{Œƒ„‘ˆŒŠ„|ˆ~Ž€‡ƒˆ€…Š…ƒ€‡”Ž…‹Œˆ€„„‰}Œ‡ƒ~~‰Šz€ˆ†…‹}ˆ‰u‚‘‘‰‹~ŽŒƒƒƒ}‹Ž{‡‡ƒ›€‘ŠŠ‘Œˆœ’‘Š„“ˆ‡“ˆ‡ƒŽ’n‰Š—‹‘t„Š‹Œ€z‰‰Œ‘‹‡‚‰…‹ŒˆŒ}—i“‘‡‚€r€€‰Ÿuˆˆ•|„~„‰‚Œ‘‡Š……‹Š‡vˆ€†|‹ˆŽzŠ~‡†ƒ‡…p‹†Š“–…{‡‹ŒŠ„Œ„’‹‰‡Œ’ŽŽ€…Š‚…€†•‘‰Ž‡‹•І‡‡„‹‘‰ƒŽ‡ˆ‹”ƒƒ~‚‡…yƒ‰}’ƒ‰rŠ”…‡ˆ†–Œ‹‡Œ‰‡‘„Šˆ†“‡ˆ…ƒ‰p‰Œ‰•‰y‹ŒŒ‰‡‰‡…‹…‡†„…†††……ƒ…††‡ƒ…†ˆ‡†‡ˆ‡‰…††‡†‰„…†„ƒ‹†††ˆˆ‡„‡……‡„††„‡‹†ˆ‹…†‚†††…ƒƒˆ‡„†Šƒ†…„‡…‡‡‡‰†ƒ†…‡†††„†‰††„‡„††††ƒ…ˆ…†‡ˆ‚„…††‡‡†Š‡Š‹„‡„ˆ……‡„‡…„††‡„ˆ…ˆ†ˆ‡‰…‡††ˆ‡†‰„‡ˆ…†‰…ƒ‡„…„†„‡†ˆ‚„‡††„†Š††…Š„†„…Š…ƒ‡†…‹‡†ˆ„€…„‡†ƒ„…„†ˆ†‡‚………†ƒ†ƒ†…‚…ƒ‡†„†„…ˆ†‰„‡†ˆ„††‰ƒ…‰‡‡††Œ…†ˆ‡ˆ…t†~ƒv}„~€}‚‹ŠŒŽlsƒ}Š‘—€tŽŠ{zƒ¤r„…‚y}…Ž€‚ˆ…‰’„…˜Œwˆ}y‹Œ~uq}…Œ‡w‚‹†Ž|€ŽŠ†z’}’‰…|„‡ƒm”Šr€‚’ws“Š‹„†‚}|Šƒt~z…‚„Š€…{ˆz†Œ€{‚j‰’‹…€|x•‰|xs„€Žxx~…‹u|…x€ŽŠ…†}Šƒ~v}Œ€‰}}‚‡}ˆŒƒ{ƒ†xƒ‡ƒ€‡„{‡…ˆ†‹‚|~}…}Œz}ƒ‚Іu~ƒŒ‚€€„‰xvŽ‚{}~„†‰|ˆ~…ˆ‚„–ˆ‰~ˆ•Šs‡‰‰ƒˆvr‹ƒ•„‰Œ‡‡ˆ’Ž‚’ˆsl•w™Œ‹ƒ„zŠˆ††‹~˜y„Œ„‹Œ}w{‰Œ‚…ˆ‹Œ‹‡‘‹y•‹Œ|’Š}‰‰’ŠŽ‚{‹‡~’{ˆŒz€ŠvŽ‚†ˆ‹†‡€”€–‡‡‹Ž†‰‚ˆ…„‰‡Œ‡Œƒƒ•‹ŒŽ‹•€”‰‚†“‹‰‚‰—zˆŠ‘Œ†ˆ…‚…މ‚š„Ž‹~‡Š}‘„„|‹‡ƒƒŠ’ˆ‚„ˆ†}‰ŽˆŒ~’‡†„‹„ŽŠ‡‹ˆŒ„{Œ”~„†Œ‡ƒ|‹ˆ“€˜“‡Ž€ˆ‹ƒ˜’•ŒŠ˜•rƒ„€Š‘ƒ„‘‡||‰rx…‘–ˆ‰Œ‘‘ƒ˜‚ˆrožxz†‚“‚•Š›x…‹‘˜‚Šz˜o…ˆŒ„‚ŽŠ‰‚€†‹Ž‚…Œˆ vš„•ŽŠ‰Œ’tƒzy•…‘v}–r~Šx……Œˆ”‚Œ„™„•’‰Ž|‚›„…‰†ŠŒ‹‘€zœ•†v™“œ‚†‡~•ƒ‚‰ƒˆ‘‘’†‰}‰ƒ‹…š„€{›Š†‰Œ~‘„}™z€Œ‚‰‹†‹ŒŠz‹ˆ•~€ƒ§ƒ‹…„‡Œˆ’šˆ€‚}w„„–‘ˆ}xƒqœ€‡€†—„ƒž„†z}Œ~„“†ƒŠ}ƒ„puƒ„•†Š„‚•…‚€vk{x˜‘‘ƒŽŠŽwˆ‡Ž‡•‚}“z†Š‰ƒ‡…€‰•}†‡~‡”‹‹~‹‡zž‘‡Œ‚’•€–„‹’}Ž‚…‰˜{‚’Žy†ƒv~ˆ††Žˆ|ˆ‡—……ˆ€‰…“€Š}ˆ‰„„˜~œŠˆ†—•t•‰ƒ„‡–ƒ…‰‡ˆ‚•†ˆ†}‡ˆŠ‰ŒyŒ‚‘ƒƒŽ{”‚‰„…‰’ˆw‡ˆ‡€ˆ‰ˆ‘‹—|Œƒ„†ŽƒŠˆ…އ{}†–Šƒ†“†‚Žy…xކƒ‘|†‚…”†‰–Ž”‚yx“‡‚x„€|‰qs‰Š”…š“Ž“ƒŠ“zm†y†•“Ž‚zŒˆ“‹”‘}•|ˆ‡Ž…š€‹‹x†Š‰Ž†‰Œ‹Š‰‹†y““Šކ|‹‘‹ˆ˜€€„‡{”‘}†Œ……yˆ„xŒ‹ŽŽŒ•„–€‰‡•Ž’†„{‰Œ‹ˆ‡Š—Œ„xŽ”n—•Œ€“†y‚’Œ„ˆ‰ŒŠ€‡„‘‚{“†ŠŠ‰‘ƒ„“ˆ…~‡~{|“”ˆ†Šƒ…–…’ˆ•‘y‰‘ˆ‹†‹‰‚ŒŒˆŒ‹|‹…€€‹ˆ‡z—‰‹sƒ‰~Ž’’‘ˆ‹Š}‚”‚„‹Ž|‹}ˆ—ƒ…nz‹Š‰~š–ƒ|“Œ†ˆ~ˆm…zˆƒ‚“Œ}Œ‚†……‹Œ€’‰‡“‰x”‡„”‚›‹–†Žz˜Š…†‡ˆ|‘“І€‡ƒv‘•…ˆŽ‰Š„‰z†}††~Љy—‰„•‰xŠƒmŽwŒƒ~‡’xqw“™‡ˆzƒ~ƒ‘wŽˆ|}ˆˆŠ|ˆ‡{z‡…’އx‚’‚Š“…‰Šx“„q‚y›‡~‡‚wd„‰‚‹›Š‡Œ…„sp‡ˆ™€ˆ|Ž~†~vƒ‚Œ–v~~ƒŠˆ{‡€~ŠŽ„‚’‰„…ˆ~‰…’‘‡}€‡‰€‰›Š’z†‹†‚†ƒzŽˆ•’’‹•†‰’‘€„€‰“ˆ†ˆy~‡†m’”‰‰‰„ŒnŽ‚‰|’—‡“†“…‡€Œ‘’‹Œx˜Žg“†…q’††€y‚u‚†Œ|ˆ‘†ˆ‘‘†„‹†ƒys“›‹|Œ‡„†‰”ƒ~Ž„ƒŽ„‰~ˆ‡‰†Š™ˆ|ƒ“‘‡…‹†ˆ‹‘ˆy†Ž€“ƒpƒ’‚‚…•Œ…™„‹Žƒ‚{‰ˆ†”ƒŠˆŠ…Œx‹‹‰†…r“†—‚‡‚”…‹ŠˆŠ‘”†•‚“ƒ”•މo†”Œ…Žy’„•‘…ŽˆŠŒ‰ŠƒŠ‡‚……ˆ‡†|‰‡‡„Š‘ˆ†ƒŠ…‡ˆŽƒ„‡ˆ…}††ˆ}„€ˆˆ‘‹†’‰ˆ‰ƒ‰†‰‡†Ž†††„ˆ“Ї…†ƒŒƒ…‰†Š‚{‰‰ˆ‹ˆ„…‚‚„‚†€…‹}ƒ‚…†‡ŠŠ„’„~‡‚„ƒ‘”ƒ„†ˆ‰ƒŠ‡Œ†ˆ…ˆŒ„‰…‰‡€‚ˆ‹Ž~ˆ…‚…‚‰‡‡‚ƒ…‚ˆ…Ž„‰}‹…ˆ„„€€ˆ‚‡ƒŠˆ{†…‰…}…‚‰ƒ‡„‚ˆŒƒz†‡……Ž„~w‚~‰ˆ‡†Žƒ€‚‹ƒ†‚„„yˆ†††‰‰†ˆ‰ƒˆ†‚„ˆŒŠŽ~†Œ…‰}‰€‡…„w‹|}v…„x¢~„}ƒ‰Œm{ƒƒ‚€„‚”Œ~ˆƒ†zn³xŒ‰{†’w|œŒ…‰€ˆ“’ˆ‚†„r‡‚~}ƒ…r‘’‚ƒ‡€…Ž„~…}Ž~w{u{|‚x‡xx‹pv~‚u‰™Œ‹‚‹}ƒˆsƒ„‹}}‡}‡„|€€Œu€ˆ^‰‰•„~zcu‰~‰utv„umz…‘t|‚|‡|}€~ˆƒŠ}wvˆxxŠw€y‡|‚}‚xv}Žx‚w€|tz}€ŠzŠˆ~€}wv{˜v|‚r‡xy„y}‚€ƒ|†ƒ€x‹mwz††‡ƒz‡ƒzp€Œ~€††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††…‡ƒ…††……ˆ††„‰……†††„†††……‡…†ˆ‡‡…‡†††††…‡‡ˆ†…‡‡†††‡…‡…††…†‡††ˆ††††……†…ˆ‡††‡††‡†††„†††††…ˆ†……†…‡‡„…††‡†††‡„†‡†††‡‡‡††††‡…††‡†††…‡„††††…†‡‡†††‡‡ˆ…††‡…†††‡††…††††††…††„†‡††……‡†††…ˆ‡†…‡††††‡†††‡††‡‡…††…‡…†‡……††††‡……†‡††‡…†……‡…†‡††††…ˆ…………†††‡ˆ††‡ˆ††††††††††„†~{‹{{…~‹‡ƒr‚‚„‰j|ˆ~ƒ‘‡ƒ‡‰“{}~ªr„‡€ˆ|‰›~t}ŠŒŒ’‹”{ˆ„|ˆ‡|Œ{wy€„šˆ†|‡…}‡‡~}€z†}ŒzˆŒ†~…}Šmz€†v~Œ„w„„{Œ…€€y}‹‡„‡„†ˆ‚‹{zƒ’p{Švhz‚ˆŠ‡ur†{{‚Œs~ƒ‰zuz€~uuŒƒv€‚‹‹Švu„‚}„„vv„‘z‹†~†}qŒo‡‚}‰ƒ~‡‰{”~€yyz•…Žy|u‚y…{w|z†€€€€…‹xŽqu|’„„…ru‚ˆ|uŒ‚€„Ÿ‡}†ŽŽ~ˆ’w€””…†‚wq‡x—†‰Œ„†”’‰ml™€x–“‡€|‰“€†€‹‡”ƒ€—{ˆ‰Ž{ˆ…„ƒ’|“‰ŽŠ†‰‰‚”‹}Ÿ“‹‰†ˆ€†ŽŽŠŒŒx‰††“}“ˆ{Œv‰…ƒ…‹Œ…{ˆŠ•}„’€‡ˆƒ‰„‹…Ž‹„Œ‹‹{¡ˆŒ“„‡˜™†ƒˆ—‹…ŒˆŠŒƒ‹s}‚‘Œ‡ˆŽ’ƒˆ„†{{’‹}€Œ{|ŠƒŠ’…~‹‚‚‡’‹˜‹Ž}”wŽ‹‰y‰ŠŒ‰†‰ƒŒ”‹…‡•ƒ‘x‚’z“‡“x~‚’~œŒ–ˆ~™~†}š‰‚Œzˆ‰zx–}ˆ€†Œ‹Œ}€‡…‚|¨w„Œ‰†‡’•s„Œ…’z‘‡‹‡ƒ‡‡†pj“€Šz“Žp‹›ˆ’‚zn…„›Œ‚t~‚ž‰‡ˆ ކ‚†„„Ž™‚|t|‡…Œ‡‚vŒ£Œy‹Œ”Šx‹}ƒxŠ‘˜r…’vqŒ‡‰~†xˆ}“‘s‹‘‘Ž}…‡Œ‘„~‹z}€‹ˆ|…ƒ†„z†‚ƒ|y{{€Œ‘ˆŒ†‰{ƒ†|Ž’|€yƒ™Œ™…„…‡Š…‚Šˆ™’‰„‰z†‰r”†t•’™…ƒ‚…{ˆ‘ŠŠ~‡ƒ‹pg˜Žˆ‚z†ƒˆv††{m„ˆ‡ˆŒˆ‹”ƒ‚“‹}t‡„s‰}‡‰v•wn…Œ‰“‚„Œ‡Šn…{…ƒ†}¤€o~™œˆ‚Ž’ ˆ‹Ž–‹tˆ~~‡‚Œˆƒ”–ƒr|ƒŠ‘v—‰”s|{xƒŒ–‚†ˆ™†}‡‚ŽŠxšq|t’‹‡Š‰†’…•’{~–—‰„…xƒ“‹ž‡‡{¢z™”Œz‡’‹œs›“‡Œ—”xŠŠ€€‡’|‰Ž}x‘‡x„ †‰€ €•‡€†}ˆŒ~Љ ‹}ƒ”ˆ€žœ‡~ƒ†ƒ…vŠu€|x•Žˆ†‹s’†w„‚‰†‡•}—{{†€v†Ž‹‡x‡ut‡Žƒ‹‚ƒ…‘—†‘Œzm’|y‹‹‹‹•‚Œw‰Š–‰–„€“sƒƒ”‰‚ˆ|ƒ†€Š„€ŠˆyІ“¢wŠ›€’žˆŒŽ”z}~~y–}Ž|ˆ‹†…{ˆ‹xŒ‹ˆ‡ƒ‡‹‚˜‹‘ˆŒ€t’ƒŠ‘„‰…Ž„€—‹•Œƒ—•‡€{šŽƒŠ‹…Œ„‡†{‚’‹‹Œ‘}‰†‰ˆ‚…Š•„–‹}‚‹€‹‚‚ƒ€v‡ˆ‚‰’ˆ‹‰‘~—|„–„Œ‡Œƒš’Š“€–x€…‰€†|‹‘‚”›…ƒw€Ž›††Š…™ƒ…u—‡”z‡Œ{…twЉ€ˆ‰ŠŽ‰Š‰‚wl‡|w‘”މ€ŒŒzˆ†’Ž‘‚˜{‘…Œƒ’‹€Œ–‚އ‰„ƒ„‹Žˆzu˜‘ŒŠ{ˆ€‰“–Š˜Š|‚„}ˆ•x“‹‡|y€wŒ‚Љ’}‘ˆ”ƒ‡‰„ƒ„ƒ~„}ŠŒ‡‡…ƒ”Ž€{†’’}š’{„”ŒƒŠ„‚ƒ‰†€‚…—Š„‚’†ˆˆŠ‰€Ž‡…ƒ{ƒt“އ‹‡}„Š}“w€’…}Œ‚‚ŽˆŠ€€{Ž‚’„~ˆ}Ї“ˆˆŒ~uƒŠ„•”ˆ’’||y…y{…‡…Ї}~z€z~‚Œ‰Œ‰ˆ{ƒ‰ƒz¬€‰„ŽŒ|Ž‹~ˆv˜‚|ƒ“¢Œ‹–{‹‡‰Š†‡~Ž…z{wƒ†Š„zƒ||…‚q†ƒv†s‚‡˜ˆ‚~z{‹wu…xn‚xx€vˆƒŒ†„‰‹Š„…„‡†|‚ƒ€ˆxŒ†zi—“‰{~q‘Šx‰z}v†””uvxw…‚z|†…xƒ€„€‚{‘‚~s…€ƒ{‚”|‡‚Œ~…Š|z‚~ƒpƒŽ…xy}„„y‚‹€š~€t†y‘‚}‡|„y‚„{„‚І‚ˆyz|‚{‡‚i€{‚v‰ˆŽ‹uŠ“”„†Œ‹ŒŽ}„~‹‹Œˆ‘„{‡~†…›”—’——ŽŠ‡•‹‰‚‚ƒˆŽl˜Œ‹Ž•†Žs‡•‰Œ‡ŽŽ•‹„†Š†s‰w”gŒ‘ŠŠq‹„‰–z„tŽ‘|ˆŽ~‡‡‰’‡…€Œ‹‹‚ˆ€tŒ’‹|“ŒƒŠƒŠŒ~ˆ†…ˆv†ˆˆ…–™Š‘†~Žˆ”…‘‰ˆ‰ŒŠ‹’ˆŒ€…‡„•ŠŠ‰…‰–Œˆ…†ŠŠŠ‘ƒz„‹‹ˆ†Š‚‡Œ‘‡Š~qŽ‹ˆ‡‚“Œƒ†ŽŒŒˆˆ’†ˆˆ‡ŒŠ†nŒ”†ƒxƒ‹ƒ‡†ŠŠ‚‰ƒˆ‡‹‡}ƒ‚‚ˆ‹†‰†{ˆ‹‚•†…‹‹‡‡“‰‰‚~}Œ‰”†‰Œ‡wމЇˆˆˆ‡˜‡‹‡†‹’‹„}Š~‡‹‰Œˆ‚Šu…„‹‹zƒ‰‰ˆ€–}‚ƒ€‰Ž}…‰€€Š‡{€‡‰†ˆ‚~ƒ€‹‡‡†|‡…‚ˆˆ“††‹}Š„…‚„ˆˆ‡†…‡ƒ€’Žˆ‚‡‘…‡†ŠŠ‰Š†Š‡‡„Š…‰‡‹†}ˆƒ‰ŠŠ€‡‚…Ž‚…†Œ€„qˆŒ…ŠŠ„І{†„ˆ„‰ƒ‹›~„ˆ‹…‹‘†…Œ†‡‰Š‰‚…z‹‡Š‰‡Š‚†ƒ‘’‰ƒ‡~“ŽƒŠ‚ˆ€~‡Ž†‡Žƒ{”ˆ{ ˆ“މ–„‡œ’Š•†“‹“†Œ‰Šl’“‹tz‡‡‹ˆŠŠ–‘……‹Œ‹”‹Œ‹w•gއ‰‹q„‚‰–zu„Œ‡’|‡†’•†vŠ‘„ƒuŽ…‰{‡Œ„‹†~‡ˆ‰ƒ†‹oŠŽ…Їœˆ†ywƒ“—‡‰‡‘›‹†ˆŒ…”y…І†™ƒ’†•Œ†’‹‚Š€…~‹ˆ„†‚†ŒŽˆz‹Ž“‘‹†Šq‹Ž“‚Ї˜Š‚‡‰‚‚•‡‹Ž‘‰‡ˆ…~n‰Ž‰ŠxŽ„‘Š“…’…u–ŠŠ—zŒŒˆ„‹ps…‡Šˆ‰Žˆ‡‘‡~“mƒ{’„‹…„…”“…Ї~‘‡„Œ’†€r{‡Šˆ—‡ŒŒ†€‚ƒ{Š‘†‘‡ƒ|Œ‹‰…ˆvЉz†„|Žy‡‡†Œ‰†‘€‹{€x•‡Ž†zŒŠy{Šƒ‘†~‰}€‘†yw„އxŠˆ…z†‘…zˆx„Іޑ‚~†‰‡™|~{”xˆ€†zx“|ŒˆŽ}€|‹~Š|…wˆ›†‹…y’‰…ƒ„€€‚‚Œ}u‰Œ‰Œ€’‘…ƒ‰‚’‹ˆ‡ˆˆŠ‡…‰…†‰‡Œ‹‰‡……‰ˆ‰†…‡†ˆ…ˆ‚†„„ˆˆ†„ˆŠ…ˆ‡ƒ‡††‰‡ˆˆ††ƒ‰‡‹††ˆƒƒ‡‰‚Œ‚†ˆ…Š‹…‡‹€‰‰‰‡ˆ†…„„‚…‡‰zƒ„‡Šƒ†ƒ„‡‡„ˆ…ˆ‰†‰}‡Ž„ŠŠ‹‹‰€†„‹Š‚……„„‰††ƒˆ‚„…‡„|…€‡Š†„†ˆƒ{†„‡‰‚‹…ƒ‡‰ƒ}‡‡Ž‚‰~y€……ŠƒŽ„Ž‚‡Š‚ŽƒŒ‰…†‰ˆ†|‰~‰ƒ‘‰ƒ……“‚†„‹‚Šƒˆƒ‰‡Œ…ƒˆ€…Œ‰‚ˆˆ…†Œ’ƒƒ†ƒ~‡‡ƒ‰‰…ЇЂЂy„Ž“‡‘†‰‹|€Š‰ŽŽu•†|‘„†‰š…–Œ‹Š‡—‹‹‹~”‰‡Œˆ‰‚Œl–‹““tŒ‚‰…–Œ‰†…~†’ƒ‹Š›’z••iŽ“ƒƒq‹‰ €Šu~‹‚‘{‡ˆˆŒ’€‹|Œ‰ˆ‰ƒ~v†Š{„Œ„z|ˆ€”‹ƒƒ„ˆ†‘–“‰z…Š•‹ƒ‚ƒ…‡Œ‰‹ŽŒ‰ŽzˆŽ€‰†€ƒ–‘Љ‰—‡ˆ}ƒˆŽ•…ˆ‹†”„w…‘‚„ƒ‚Œ†q†…Œ…“Œ‘‚‘†“ЖЉ…‹‹†‘ˆŽ‰nŠ‹š‡“zŠ€Œ…†‹…’‡ˆ€‰…†’‹œyœ}Š™’Šƒ“ŽŠ„‡‰‡{¡w„ˆl†‘}}‡“|•ˆŒˆƒ„ƒ‰†zƒƒ}”~„€pކ…—‰nŒr›‹y…†’•ˆ€„‡ƒŒƒ†~ƒ…ˆ’‚€…z|„‰z„uƒ‘‰…‡“Žp€„„ˆ~ˆ•Ž…“ˆ‚”š€Š™mŠƒ„ƒ‡œ‹‹€•‡‹€|~ˆ‡€‡{”ƒ‡—ˆ‹ƒ}’Šƒv‚„‚ƒ}‡‘{Š’€‰‡z„Šˆ ™†…ƒ~ƒ›†…†’„‰š}‰‡ƒ™”‡ƒ‰„„ˆz‡‚xŽy‘£‰{‚Œ‚€Œx“|‹š‡ƒ}x–‡™‹wƒ‡…‡€„rt†~–…„ˆ‰‡…•Œ†ŠqlŽx‹~Ž’xˆ‰Š”~–ˆŒŒ~‘†‡•‘‡‘…Œ‰‚Žˆ|–’‰Ž}‰–‰†”‰ƒ‚ŒŠ•x‡‰‡yƒ‡w‘ˆˆˆ{Œˆ‘|ŠŒ‚‡‡Œ~…{Œ‡‚‹ƒ›Œ††|—•{–ŒŒ„†ŠŽ“~‘‡zŠŽ‰†ƒ„‰„„Žƒw’w‰„~‘‰|Ž|{ƒˆ„‘“Œ‚‡…Œz„‹†’ˆ’}Ž|}Œ„…‰’…„€…•†ƒ‘†…”…Œˆ{‘„‹„~Œƒ™ŠŒ–“ƒ‡…ž~ˆ‚‘„€…ƒœŽ‹‹}ƒ˜€~‹x|”“Ž…‚“”v†zƒvue‘•…˜ƒ~¦x…—†‚Œ‹‹‚b‰‡”†‚Ž…‡“}±X’\o”’–¾‰~z•…}Žo“€{€˜…‹}wŒzy… ~„v}Ž˜¥™‰ƒ–šˆˆmŒŽˆ˜…Z’”ƒ‡ƒƒg†‡˜”‡“tˆ†š”‚ ~ŠŽxƒsyƒ€›Œw”~ˆ|„i‰_Ž‹Žš}“‹js‚Œ¨ƒ^ž‡ƒ¨••o˜ƒƒ}ˆ†™…|‰w‡ˆk“¡ƒvzž‡m„“–‚ˆ›”Š¢s’pi‚ƒqƒ”‡{ª†††††††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††…††††††††††††††‡††††††…†††…†††††††††††††††††††††‡†††††††‡†††††…††…†††††††††††††…†††††††††††††††††‡…††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡†††††‡†††††††…†††††††††“‚ŠŒu‰•‘ƒŠ‰Žˆ~…€ˆ’Œ„‹ƒ{…„Š{œ€ŽŒ‰ŠˆŒœ““‰Ž€‘Œ…ƒŒŽŠŽl’ŒŽŒ“ˆŒuƒ’†Ž††‡ƒŽ’…ˆ‹‡“Ž‹v‰yŽi‰‘†Šq‚…‰|u‚‡’|ˆ‚„ˆˆ†„…ŠŠ‹‘‰‰€wŒ„Œ{‹‡‰‡…}ƒ„|…†}ŠŠˆŠ–‹›Œ…zЉ…Š……ƒ‘‹‰Š’‰‹„‡Œ„‰“‹‰Š’–‡‰†‹†Š†‘‹„Œ‹‹‰††}‡‡‹ƒ‡Œ…Ž……qŒ‘†ˆ‡ƒ’†‰‰Š‡ŠŒ†…އ†‹……n‰Š†”Œw‡‰Š„‹€’‚†„}‚x‡ŽŽ|‡Œ‰yxu‰†“Ž…‹Š†’€‘‹‡s–‚{‚Š}…‚}Œˆ•—ˆ…–ƒ‘€‹Œ…pŠ‹„…†‰‘|‹ƒ’‚‡”y…†‰|‡„~‘‹Œ‹„z{‰ƒŠu‹Ž†v’x‰}ŒŠ‰ƒ“ˆˆ”…‹‹…z‰‰€‚ƒ“z‡ˆ…Œ’€Œ”’ƒ‹‰’}€–…€~‘ˆ|sŒƒ…ˆŽ{ƒ„ƒŠzŒ†“Š~ˆ‚~ƒ‚¦ƒ…{‡Ž‚u…‡…Š•”„ˆŒ‹‚€~”Ї~ˆƒŒ‡ˆ†v|‚‚ˆ…}‡ƒ…Œ}‡z˜„‡Š|†‹†”‹–•‡”ƒt~‰}Љ‚І†‰u‹ty†‘…Œ„“„Œ‡‰xnu{†Žˆ“†˜y‘Š„•{’|–r…ƒˆ”‰}„†Š…‚}…ŽŒ‰‹˜o“ŠŒŽ}Ž‘‰ˆ˜v{’„ŒŒ‡…„wˆ†‡Œ‰‡‰†‘‡ŒŠŒŒ†‚ƒ’{Š‹’‚އƒ„‡“}‡”…s™…{’Šˆ…„ƒŠŠ„‚‚ˆˆˆ„”Š„ƒŒ‚€‚~–w…‹†ƒ‰Š‘€‰‹†ŠŠŽ€“€†€’‹‚™Š‹™‰wŠ„{‚‰‘މ†•‡yš•~Œ‹}ˆ‡„€…‘’Ž‹…~€‰ŒŽ‚‹‹ˆ„‹††……zŠŠ–‘“Ž–„Œ“‹ƒ€v„“’‰|„ƒ‚†ˆl–‘‰††ƒq‰‡…ކ‘‡’~ˆ†Šƒ“Ž–y›h–†’ˆ…q…ŠŠ‚‡uއ|Ž‹’ƒƒ“‡Š„u‰‰‚zu‹–‰|…Œ†“‰}‰‡{„‘{‚……‚–„‘‚}|„Ž‘|‰Žˆ‰‘„v‡Œ„‚–€x‡‚„‡“††ˆ”‰„”‚…ˆ…‚€€‰†…€ŽƒŒ‹…Ž‹~ŠŠ‚€ŒrŒŽ…‹†—ŠŒ‘‹ˆ’†Ž~’ƒ“‹o…Ž‹ŠŽŠy€“‰~‘ŒŽt‡—•ˆ†ŽŽˆ{ЀВ€Œ…}„|ˆšŠ’‹ŠŠŒŠ˜‘•‰”}“‡†‰ƒ‰ˆ‹‘l•‰Œ•ˆuŠ—ˆƒ…ˆŽ’…€ˆŽ‡ŒŠwŽyiŒŽ‡‹q†ˆ‹Ÿ~‚u€‹„{Š|……‘~……–Œ‹vކŒ{‹‹ˆŽ}„„–|„‚}‰‰„‰•Ž˜“ŒˆzŒ”Œ‰ˆˆ‚…‘‰†‚—Œ€‡Œ‹„ˆ€†‹Š‡—ˆ„Š‰ŠŠ”ˆ“މВ†…ˆƒ…Šƒ‰w‡qŒ‚‹†‚“†ˆ‹‹ˆ‹‘Š„…ŽŽ†‹„‹†n…–|yŠ‚‡‡…ƒˆ}}~ˆ„{ŠŒ|ˆ€~‚…Œpz…„ƒŠ‹‡€Œˆ„~”r„‡}Œˆƒ€„ƒŽ€‰‘‡|Љ€„‰€}~vŠ“‘„ЉЇ|‚|ƒŒ‡€’І„„’€‚„s‘‰ƒv}Šyx‰‘„‚‘Šˆ}„vz†ƒŠˆ‹€„w—z…„…„ƒlz’ŒŽ‰zŠ“„v€ty‡‘}||‘u†€ˆˆ‚ƒ‚~ƒŠ„~‰u{x|~‰††‰Žw}sŒƒˆ{”€{…{Š€‡†y†‚†‡}€€Š†‰‡…•€Œ††‹€†ˆ‚~Іz…„€|Їt~Ž‚~Ž‚qj‘tw†…{‰v‘”qs‚z›’ˆ„„w‚‘„o„–z“„‰Š€‰–‡„†£‘x}„’„œƒ‰~¡‡u˜š“˜~f{|‘‘‹†p}‡v„}•Š„’Š€w–‹wxpŠxmor}a{˜‹oŒ{†}‹„{‡Œuމ{†¡‘€„‘{pgqv{~‰ˆ•™ve€}w’©yu„{ƒ}cŠ¥g|||yƒy„…Žr†{€ƒƒ„€{‡“•vxsoœ|¬{ƒypˆ„o‚€„Š„‘‚›s‚w‚ž”ˆ•yƒ}ˆ‰‰€t™™|’z}„‚›y†`†ƒ‡Š‡‡‰‰†‰‡…ƒ„‚…‡„‹†„‡„‡…‡„‚…‡ƒˆ„ˆ‡‡†…„ˆ‡†‹…Šˆ‰†…‡‡…†ƒŠ†‰ˆŠƒˆ†€†‚†‰‰†‡†‡ƒ‹…‹†ˆ…ˆ‡……†‰ƒ††…Œ„†„ˆ………†‰ˆ†……‡†Œ……€‰…„„„‡ˆ…І„„„†…‡ˆ‚‚‚‰ˆ†ƒ‡†‰‡ƒ‡y‡†…ކ‡ˆ†…Œ‰‚‚ˆ‰†„€†‰‡…‡‰„‡ˆ‡‡……„ˆ„…ˆ…‡„‡†„‚‚Š€„†Ž†‡Œ……ƒ…‡‡ˆ†ƒ†††ŠŠ„…ƒ„ˆ†…ˆ‚Šˆ„‡†‚‚‰„‚Œ„†ˆ‡Š‰ˆ„†„Š~ƒˆ„ƒ…ƒˆƒ‡„Šuy‹xŠzw{~‰„†r‘Ž„ƒmŠ…šxv‡“‡ƒ‘wzq¯xxЉ~‡ƒt…šƒˆ—~Ÿz}ˆŽ…€„†“|~~„›h†{z€ŒŠ†|Œz”y|Ž€wa”—ry|†|Z‰‹‰x‘‚}„€ˆ~~ƒŒ~†w|”}~’}w{`‚yŽov{‘{‹z…xr”‹zˆ~n€€ns™’r€|‡Œ†‡Žvuqx|†}ty{‚ˆ”}„y|zŠš{}‚b~wŒu—y‡o{{ˆv–z}ww‰Œ…}wyy{ˆ€€‰„„y‡ƒ~~{m†‚w||‹ywy†‚y„“†{€Œ€~–މ‰‰ŠƒoqŒ••€Š”—ˆv–‡ƒŠ„†jއy˜†„†‘†€‚‹ˆŽˆŽŠ|އ†“€‡zy•ŽŽƒ“‰†ˆw‘‚—“ƒŒ}‹‚†…ƒ‰Š‹—†‚{€ˆ™{wˆŠx…Œx“‚‘’‡‰|„ŽsŠƒˆ†…„–Ž„{|Š“y‘†y‚”~|~†–‘~x‹‘Ž‹…€‡…„Šz‰ŠŒ}ƒŽˆyx‡…—‹z‹˜‚j‰v{Š¡†‚|x‹~Ž”‡|t‚Œ‡Ž~†}‰„ƒŽ~z‹†‡…„u•z…x‹ux’‡”ƒ€…~Œ‹ˆ•Š–Œ‡‹‰„„„_~‡‡‡‚‡‡…††~’Š”‘‘‚ƒ}~{‚’Ї”¥ƒ€“’…€‰‡†Š…xˆ‡{„„ƒ“Ž}o‚l|‹„…²€}–‘Šˆ†trŠ™…€y‡Š}zx•€}|k¡–š‡~€‘ƒ€…Іƒo~‰z…„…ˆŽq|Ž‘Œ}Ž‘Œ‘Š—†…’˜‚~„ƒi†€™zy„š‚‡z‹‹}oŒ‰œŽƒ‚z~‰„†z’ŒŠ~Œ‚„ˆ‚ˆ¡€|†„‡‘~‰‡“–Š}‰ˆ‚…’€v~—‘“†‡~“~ˆŒ†v}ƒŽty…¢„£‡……ˆ‡‡‡†‡…„…‡†ˆˆ†…†…†„†…†……ˆ‡…‡‡‡…††……†‡††ˆ…‡‡†…„‡‰††ˆ……†„‡ˆ‡Š‰„†‡ˆ……†ˆ†…‹†„‡‡……І†ˆ‡…‡…†‡‡ˆ„…†…ˆ‡………†…‡††ƒƒ…‚‡…‹‡‡„††‡†…ˆ‚‡…‡‡……†‡‡†‡‰‹ˆ…†…„‡‡‡†ˆ‡†‡†……„„…ƒ…‰‡‹ˆ†……†„…††……„††‰„††††‡†…†‡„‡‡†‡…†ƒˆ†‡†‡†„†…ˆ†‡‡†‚†‡†‡‡ˆ„†‡††……†‡…††„‡†††…††‡††ˆ‡………†‰††Š…††…„†‡…††‰‹xŠ‘“†ƒ†Š‰€‚~€ŠˆŠ‰Ž‡zЇƒ‡™—•Ž–‚Ž–Œ‰…p‡”‰‡‚‚Œm‘Ž‹‹†vІޒ’ƒŽ™‡‡†‡†Œ†Œ|˜•h‹ŠqŠƒŠ–~‹u€…|ˆ“~„„Œ•Œ„‚ˆ‰‡vˆ’|Ž…‰‰Œ}Šˆ…ƒŒz…ˆ‡‚‘‰˜ŠŽ†|ˆˆ–‹„ƒˆ‹„އˆ‹‚ˆŽ†ƒy…Œ‰…‡•…ˆ„‰Š‹Ž…ƒˆ‚Š‚ˆ‘Œ‡“}ŠŠŒŽ…|ƒƒrŽŒ…‰„”†‹’ŽŒƒ•‡‹‡Œ‰‡‚o‰”‰‹Š‹z~‹–††‡†††…††…‡…†‡ˆ„‡†††‡†‡‡……‡††‡††††…†…††††…†††‡‡††„……†††††…‡‡†‡‡†ˆ†††‡†††††„……†…†‡‡‡‡‡‡†…„‡…‡…„†…‡‡†††ˆ‡†††…„‡†‡†‡†‡…†…†††‡……††……††‡†††…‡ˆ…†††ˆ‡…‡„†‡„‡††ˆ†………„†…‰††‡‡††…ˆ††…†ˆ†‡†‡†‡†ˆ††††‡„††††††‡‡…ˆ‡††‡†‡†„†……„††„…‡†††ˆ………†……†…ˆ„††ˆ„‡ƒ††‡†„‡††‡……‡…†††††„…†€Ž‚{r–{}Š“€—‡ŒŽpr—u‡‡…•‘‡š{’Žƒ˜y”{ƒ†„€|Ž”‰„ˆƒ‡†’ˆ’‘€ŒŽƒˆ€‡pu–‹yˆ„•‰ˆ…}~}q}ƒ“”xŽ~„Œ„ˆx‰xˆ‚Š‹…„„ˆ†|„z†zŽŽƒ†…އƒ}†…z”ˆt{‚‡vŒŽ‡‡‘Ž„‚‡Ž‡qˆ{w•œ{ˆ‚‰’ƒ˜}{y~…ŒzŽ—Švƒ‚~‡w†wuy‚Œw‚h”ˆƒ—ˆ‡‰€›~€s‚‡‚‚’Ž–Œ}„‹š‚ƒ†~™z˜Š„zƒ†ƒ‡|~u‡šv€ˆ–|ŒŠ†}‡Œ|Šxƒ‹„‰‚€„}„…‘oŽŠŸ†ˆnv‰“ƒv‰‘‘…”Š€†mŒƒz‹‡zŠ~‡‰€‰Œ{’€‡‹|”—zs˜{‹ˆ†ˆŒ~Œ‹ˆ„’’‚‡~‘…€ˆ‹Š‹yz…Œw‡x‰t†‡‹†w‹†‹‡‡‰zŒ‰„v‡Šˆ}|ƒ……}‹Œt‚‡…ކƒŒ‚‰ŠyyŽ}„‰ƒ†}„†’~„‡Ž“†€‡Œ‚~„‹€„Š‚ƒ‘y‰{‡~u„ˆ‘†Ž‹’z|…ž„‡}z€ŠwŽˆ‰yŠŠ‚ƒ}‰sŠŒ€|‰Œ‚€‹toŽˆœ~}}…Š}‘ދދˆ€ƒy‰~Š’‚}†}†…|‡pwƒ“‰„„‹’ˆ”Š„ˆƒ—p†‚|…~‘‰ƒ‡…‚“„ŽŒ‡ŒŽ…‰Š„Š„ˆˆ˜Ž„ƒ„†ƒ†‚…wŠ‹…“Œ…~Š’†|€Ž‹„x‚„|‚ŒŠ”„‹|’|ƒˆzŽ‹„Œ…Ї†~—“u~ˆ‚†x|}ŒŒ‡…Šx‰‰{~z‹‹}~‘‰rˆ…‹’“|€…‡ˆ‰‰˜‹„†zyr~‘…x~…}zkƒ‚x…š‡†…‰x„Š‹‚Šƒy~ƒ}Š‚Ž}ƒ€‰‹‹{‚‰Š|ˆ‰}…”—…|„‡†‰†ƒ„…‰Š†Št‡ˆ„Ž•“Š“Œ„„ˆwu„Œ”……‘z‹…”mn{w‹ƒ‡Ž…ŠŽw‡‹†ŽƒŠv™€‰Œ~”މ’}Œ’…—‰Šˆ›ˆ‘†…z–‹Œ’z…€~Љ†‘‚ˆ~„Ž|‚œwzx“v†ƒ“‰ŠŒ€–’‚–—„‰‰‰‡€n˜ŠƒŠ‰‹—•‹–…†~‡œ“ˆ‰‰”’€„‘‰ŒƒŒ~•ƒ‹†…‰‡‰Ž•„€–}…’ƒ‚–„ƒ‡†ƒ…މˆŒ„‡ˆ‰†Œ…‘~†|ƒ¥‰‹†…Š}…Š’‡Œ‰‡†ˆ†’Š„‡u›“ƒ„„{’’“—……‹‡ƒŒŽˆ€†„‹|‡†ˆ“„‡nv‹ŠŽ~ƒŽ”„€™…ƒ†Žm‘…{‰…‡‘Š}ˆ‚‰„„„„˜‹ƒ}‘z“Ž€‹€€–‡Š‚‰‰…“Ї‹~…€w‘ˆƒŒ•‰„ˆv…~z‹‡„Œx”‚‘Ž‹ŒŽw‹‹ˆn„€‰Ž†…x|…“‘zy~Œ„†‚€„Œˆ}Š“€~x‹…‚y†’ƒ‰}†ˆŠ„‘—‡†ƒ”†y„‚~ƒƒ™…|†}ƒuw‹n|…‘ˆŽ†‹‚‰~“—‰}Œ{}zŠ|‰ŠŒƒ‚‘|ˆ|†††r‰‰ŒƒŒ|Šy–Ž“‚q‰ˆu|†ˆ•„…}}‰zŠ•‹u€Ž‰„pu„‹€†‹…†‰lŒ‚zކ‰Œ}‡‰Ž†ŽŠŽ€•‚‡‘…‹yq{ІˆƒŽ‹‡‹ˆŠ…ЇyŽƒ~Œˆ€‚”‹ƒ‘ƒ|‚wŒz‹’ˆ{…‰z„ˆ…ˆˆ‰‹„ƒ‹Š†ƒ’~„‡…ˆƒ…‹ƒ{„Žˆ”‡ˆ…‡€‡ˆ~tŽy|‰‰Žƒˆ€{|ƒ‡‡Œ‰Š~Šˆ‚€~‰ƒ‚†~€†…€{‰{ƒˆ’ˆ„„‰}ƒˆ‡ŽŒ|ƒ}„“†‚…„ˆ‚~‹Œ†}yŠ~ƒŠ„€‹€~€Œ~‹‰ŒŠŽŠ‡‡‡„”‘€Ž”“‰{€Œ…ˆ•‹„‹‰Š|™‰ŠŽ†™•”€~Ž„††‹ŠlŽ‘ŠˆŽƒs‰…‡Œƒ|„‚‹”‚z‰Œ„ƒŽŽŠ{w’‹i‹‡•‘€q„ˆŠ’„„u‚މŽ{Ž…“‡‘{‡‰†Œ‡ˆ~w‹ŽŠ{ŠŠ…‡ˆ„Ž|ˆ~€„‹ˆ‹‰„‹ƒ™Œ‡z…ŽŒŒƒ€‡ƒ£†‡†‘†Œ}ŒŽ”Œ†‹ŠŒ†Ž‚™•‡„‡†‰Š“…‚„†„z~‰ƒ€‹†Š‰ƒŽŠp‰™ˆƒ“Œ„†ˆ“Š‘ˆŠŒŒ€Šˆ’m‚–˜‹Œw{ƒ‹†‹†Šo„ƒ‡‚„€Š†r€p|†„ˆ‹‡{š¡ˆ“Œ•ˆ„‰‰}‹†Œ€„|œzŒ‡}Œ‹Š€Œ•zž†„{~†s}ž„p¤•Ž–yˆa‡|n}•kuŸ}‡ƒš€d}ƒ‹ƒ‡€ƒŠ›Ž‹u€Š†…”’ž—Œ{‰Žwƒz‹’]»o~”qŽ}´¸Œ~‰f‹„gx¨…yoŽi…o‡xs}j ŒW–s~žžŽ‰§¢†ƒ¡”‚•j‰…›‰ƒŽ¢‡†~™‰“™pf†{{v•‡œƒx||‰hši‰‘–“p¢‡Z‡£¥‘„ˆ˜h{‚tx uy†’ˆ‹Šx‡”š{‚œ”…Œ€‚‘™…r•Ÿ‹|{ƒ‡…“‰•–’‡ysŽˆ‚u‰€‹‰oŽƒ‰‹ƒrЇ‡ƒŽ€{~ˆ‡ŠvŒ}Œ‹…Œy‡y—}iŸ‰…y„—yƒwz„ŠŽŽ„„Їš†}‘ˆŒ}…}ˆ†v‰‹€Š…ˆ|ˆŽ„‚~„‰w–‘‡Œ‡“y…vz‹ˆ‡ˆŠ}’‰†ˆ‚z‰”z€…{‚‰‘ˆ‹‘ˆ‚…†‹††‡‹‰ˆ–|Ž|‡‹|‰Œw‚…}‹’‚…o’˜•†}xŒ†€‹}|„Šˆ…€ˆ}~™ˆŽtŠƒ‹Ž‚€v‹~’™ˆ…“‰‰…‚„Œ˜“|“…v‹‚Š—Œ’‰…~‰‰ˆ|‹Ž’ŽŽŠ“š—“‚€„ƒ€…ˆ”†‡l“‰Œ’‹†‘t„…†Œ…|ˆ•Š{‚‹‰ŒV‹t’‰hŒš’…qˆ’†–~‚t„|‹ŽŒ‹›„sˆ‹‚}€u‰“Ž|›…ƒ†…‹}‹‚‰‡Œ€ŒŽ‰Œ“†œ‡‹‰}““ŒˆŠˆŠ•Šˆˆ•‘„‰‰‰ˆ‹†ŠŽŠ‹‰…‡Š‘‹‰ƒ…Œ‰Š“‰€ˆ‡‡Ž‡}†‡…‚އƒ—~Š„€q‰Œ—Š}“ƒ‚Œ‹ŠŒ‚”Œˆ€“„~‹ƒŽn†Œ„Œxˆ}Š—ƒ†‡†‡†…‡‡††……†††………††††‡‡†‡†‡†…†††††††††††……‡†††…††††‡†††††………††‡††‡‡††††ˆ†††‡†…‡††…‡†††………†††††††‡‡††††††††……†…††††‡††…††††††††…†…†††††…†††††††‡††…‡††††††…†††‡‡…‡†…†††…‡†††††…‡†……††††††††††…‡†††††††‡††…†‡††††‡†…†††††‡††††‡††††‡†††††‡††…††…†††††‡†‡††…††††…‡…‡y†|‡}zŠ{…v“‚„n†‰˜}‡‰…w‘‹~‚|¥zvˆ†‹ˆ††€ˆ€ŒŒŠ€‹Œ”‹€¥††z~yŠy„y‰„‰€‚‚‚ŒƒˆŒ•€‚ƒŽ†…‚s’…Œz|~…‚i‰Œ‰ƒ‰‰€‡}Œ~†~ˆw‡ƒ…ƒ‹x‰Š{zˆyw‹‰m‚y„~…‰€‚z}t‡†„t„zt†w{’‘‰ƒ‚‘Œ„{u{|y„ty€ƒ…‰~€†_y{Ž”ƒ‚tyw‡yyˆ€†z†‰{Ž‚~†Žƒ}xz}„~ˆ‹„†yx†€‡ŠŒ}}zŠ|~w‰€ˆŠ†††††‡†††…††††‡††††††††††††††††…†††…††††††††††‡††††…†††††††††‡††††…††††††‡‡…††††‡††††††††††††††…†††††††††††…‡†‡†‡†…††††‡†††‡†††††††††††††††††††…†……†††††††…††††‡‡††††††‡†††††…†…†…††††††‡…††…‡†††††††††††…††……††††††‡‡†††…††††…†††…‡††††††††††††††††‡‡†‡††††‡†‡†…„†‡ƒ…†…‡‡†††„‡†„†…††……††………ˆ‡†………‰‡ƒ……‡…‰ƒ…†ˆƒ‡‡„†ˆ†‡††‡…†‡†‡…‰‡††ˆ‡†…ƒ††„†ˆ†ˆ…‰‡†ˆ‡†„†ˆ„…††„†‡†‡†………††‡†„‡†ˆ‰…„‡†‡…†…‡…†ˆ‰†…ˆ†††‡ˆ…†‡††‡†„†………††‡……†‡…ˆ‡ˆ…ˆ†ˆ†ˆˆ……††ˆ‡‡†„…†‡…†‡…†…ˆ††‡‡†…††ˆ†‡…„„†‡…‡…†ˆ‚„†‡†ˆ‡‰‰…†††‡†……‡………†ƒ…„…ˆ……ˆ…‡ƒ††…‰‡‡†‡……†‰…††‡†„†‡€”ƒ}Š‚‡ˆwŠ…m…ˆyr“‹Ž{‡‡ˆ•–…•–sqŒ~y†Š†{ˆŽv–’‹ƒ“y•~‘€‹Œƒ‹‹‡ƒŽ}ˆz…Љ‘”{†„„}‘‰{’ˆ€Ž}~Œ‹{……™z}“v~†ˆŒƒˆƒ‰–‡Š’„ˆ”x‚–„Ž…‹—’–‘ˆ£~{“Ї…xƒ‚t~…–Œw{‡‡‹—¢Ž‰Œ‘‘všŠ}}ƒœ‹‹}Ž¡‡€‚†Œ‰ƒ‹’†Šƒ‘‹…†‹‡‡†…Ї‰‡wŽ‚„šŒ€z~ŠoŸ††‡tŽ{’‹‰†‰yŒ|ƒ€{‚Œz~~‡—„{‹r}ƒ‘Šƒ‰„“‡…ŠŽˆ„ˆ–n‘€{‰‚‡–—ˆ†Šƒ„Œ‹ˆ“‹‹{Ž‚~Œ‘}vˆx†ƒ‰‰{‚€ˆˆ„‡‚‹w‚‘ˆ’ƒ”ƒƒ‰ˆŽm}€„y…’|‡’Š}‰Š|„€€‡}ƒ’ˆ’Š…ƒ{‹‚‘„}v„ƒ|„‹Ž„†œ‡yl„ˆˆ|‡†‡…~…‰ˆˆŠ…ˆ’}ˆ„|‚‚’‚Љˆuzz…n…„“ƒƒ†Žy‚’Œ‹Š„‡~}Ž…‡…“Œ€€„t‚’w…ƒ‡~p}yŽ™~Š{Œ‚ƒ–†wЇ|y‹„†{{~ˆ~‚Šƒu”r†ƒ†€‹…‡’ƒ€‹w€€›y‚}ƒ|‰}‰‡†ƒ€z€†‹ˆŽ††x‰…”‹|‰ƒ‡Š~‰…€…‚‚‚’‰z…”{‰‡|Љˆ‚Žq|y„}ˆŒ‘‚ƒˆ{……{„}‡~‡‡}‚wŽŒ‚„“‹‹zuyŒƒŽ›s‹„~¡{ˆŠ‰‡‚ƒrˆŠ}šˆpŽ‹“‹€r…Ž”~ˆ‡‡sz~€}‚ƒ~~€ˆupˆjx‘ˆ…‹~ˆ•…y”‹ƒ„„‹†z‡‘xŒ‡œxŠl‹z„ˆŒxƒ„~†{|z‚{~Ÿ|Їn†Œ‚“‰ˆq€‡~“|x„y’Šw†‰˜…yˆ|}†…”ƒ}|†‹Ž{…–‹s{{–Ї‚”ˆ—su‰Œ‹Œ}Œ€’†„Š“ˆƒ†ƒ{–€Œ“|Šˆˆ€“…‹t’Œ‰”}’ޑЖ„‚Œ‹ˆ‡„‚w˜€‰|ŠŒ{—†Š‘ƒ‹Š‚†}u’‚ƒœwƒ……€~Ž‘”’’†˜‹†…”ƒ–Œ‡‹‚˜„ˆ|‰ŽzŒˆ‚“’…ƒ•‡Š‰ƒz„‹o‡„€{‡ˆœ‡zˆ‹‰‚“Œ’•”€~€‰‡ƒ‡’—‹ŠˆŽ‡{†‘v†ŒŠ€~‚vˆ~ƒ—‚~ƒ‚‰”Œƒ‚||ox}|Šw…ƒ‚†~Šly~“€ˆ|“Š€“‰‚}¨tz€‹”‹€|Š}Œ‡~…ЉŒ|ˆwƒ‰ƒ“zy†yŠp}|ŽŒ‡„…†}‘v~…‰ˆ…Žq…‡„n|Œ€‹’†‘†…‚|{xŒŽ„tŠ{Šƒ‹Œ†z~‹|w„…lz†Œz‹„†x~{t‘~~‰ts€Ž†‹–ˆ}Ž|€ˆop†i…‡ŒŠyˆr‹~‚‡l‡y„{ƒ‘‡‰Š‰„†ƒ}‡x“†{›˜…~„Š„vŽ‘yƒ†}ƒ}†Š’”z‰„ƒ€pƒz„y‚v‚~{€‚~‰…~‹w‘r„~‚ˆ„Œ‰€‹„…‚}žzƒ…wƒ‰‡‹Š†’‘‰„‹ˆŠ‡ˆ‘~‹ˆˆƒŒ…z…“‡{~t‰ƒ‡‚€„…‚‘z„‡ˆ‹„„ˆ‚…|Šxƒ{Šy}„Љˆ}…‹}Іˆ|†”‚‡‚Œ‰„|ƒ‡†~„Šƒ‚o€‡}…xІŒ„{{Š}ˆ€Š}‚š‘ˆ|ƒ„†ˆ~€”‰s…~…„|„z‡}~}‰~…‰~†‚€Ž|‡x‚‚Š„Œ~Š|ˆˆƒ„€ƒ“‡‚ƒ|€€‰~wŠ€|‹|„†~…ˆxŽŽv~Ž€‹{ЇŒ„“‹Š‹x~€‡‘Œz‘†z‹z™}‘‹Ž—„ƒ~’Ž‡ŽŠ…‹ŒŒl’•Їƒr‡yŠˆ”…’‰Š‡„ˆ‘†‹Š™z–i‡’‡qŒŠŽ’‚Œu‚Œ†Ž|Š’‡Ž†…€‰Љˆ|~u‹’‡|ˆ†Œ‰‰|ˆ…‹Ž…‡z‡€ˆ…’‡ŽŠys†Ž‰…‰‡ƒ€ŽŽ‹|ŠŠ‚Š’„xŒ‡ƒŠˆ•…މ“†ˆŒ„„‹ƒ‘ŒŽ††ˆ•‹Œ…„‹†ˆˆ…‘‹‚ŠŽq†Ž‹‡‰…˜‹‘‡‰‹–ˆ„†–‹…nƒŽŒ‘—y€Œ‹‹‹’z”™ˆ…‰–ŠŠŠˆŠtƒ•…„vƒ“ŒŒ•™˜””…‰t˜”„{œ—ŠˆŽw„}–ˆŠxŠ•‹‹“u™v…˜„}ŠŠ›‚r•‹”ˆ”{“| ’cއ€n’˜—ƒ…sxŽ…‚xŒŒŠˆ„}…‰‹„ˆˆ„pƒ—•u•|“…wŽ|ƒˆŠ‚v‘Œ•ˆŒ™v‚Œz|ЉЀŒywx{–‰‡ŒŒƒ—Œ}}Ž‹‚š‹‘ƒ–ŠŽ‡y…‘{’™•}–€y‹|‡Ž…|‹œ™žf‹{†‹‘€•‰“Œ~‘‡}Ž’Ž{…}rˆ‹x„~•ŽŒŠ{‰—‡Œ{‡¤w{w€€€ q€u…v‡‡j~}ƒˆ‹€|‘„ˆo~¶‚‰‹‡}l‹Š††…~–‘—†ƒ~||„z”€‹Ši—Ž{zˆ†~–…w‰’†•vyˆ†t™yƒƒˆˆƒ†lyŠww~pj„v‘‘{‡ƒ‹}~Љm}„‚œ|…€‚wŠv„–y‹z‡jpiˆosnƒ”Ž{x|w‡ywuŠŽwm‚{{–x€w„‰‘s…q€}|…{†ƒy„z|z|}‡wŒ‰‰‚{‹p|ˆyœ„ƒy}~|‘|}~r~|n{z‡z€}€‚z…~w—ƒx€ Œ€ˆw„y†„~ƒ†Œ‰‘މ•…‰…€‰€…†„„’„ŠŽ†‰s…Š•ŽŽƒ’‡„Šƒˆ‰}Œy€{tŠƒƒŽ‰„’…Ї‘ŠŠ‹€†‚‡Š€ƒ…sІ€‰„‡‰ˆ‚‡ƒ‘Œ‡†ˆŒ‰Ž‡…|ƒ…Škvƒ‰€†Œ……‡‹Š‹„ŒƒŒŒ‚‚ƒˆ„„‰ŠˆŽˆ{‰Š†‡Ž‚ƒ‘…Œ†‚…Ž„…ƒ‘‹…ƒrŒƒ‡‚„‹y‡Œ’Žz‹„ƒ…ŠŒ•“„”‡}Šˆ…‘ˆ……‰‘‘ˆŠ…†……ƒˆ‰‡ŠŠ‹Ž‚zŠˆˆƒ‰‹Œ…†ƒ„ƒˆ†Š†‹‡yˆƒ€„„‡‚Š€‰z‡…ŠŒ‹}ƒ€‡‰†“…|ŽŠŠ€—‹“Œ‰‘ˆ†˜‹‰~”†Š‡„†ŠŽl”’Š…s‹„Š‹„…‘Š‹z‡…ŽŒŠ‹x˜‘h’ŠŽ…qކŒ–~…tŠ{ˆŒ„Ž}ˆ’††x†‰‹‰€uŠ{‰‰Š‰‡‚ˆ}‰„ŒŠ„…}Œ†‚‘—‹ˆy}†–ŒŠ‡†‡}Œ‹Œƒ…Ž~†”„…„‡„”Š“‡‰Œ˜†ˆ‰†‰‹ˆ’„ŽŠŒ‡…”‚~…‹‰„~‰Šˆ‚†‚‹q‹‘‰ƒŒ„—Œ‹ŠŒ‰’‹†Œ…Œ‹ŒŠn†‘Š–‹yŒ‚‡‰‰‡•‹vˆŽ€…—Žp‚ŽŒw†Œruƒ€…†„‡†‡’ŒƒŒŒˆm‘{”€ŒŽ|ƒ}Œ‰†‹•‚‡ŠŽƒ‡}‹w†Œ’{Œ‰ŒŽz‘~”‹ƒ“†”Š‚’ƒ‘ˆ|„{‡ˆrˆ’Š“|zƒx{‹ŠŒ†yŒƒŒ}‰Š‚Žˆ„‡†‡~„ЉœŽˆ€“€–‡~|‹…‚‚ŠŠ‰q…ƒ„wŽxŠƒ‹„‡‰‰‚zuƒ‚|Š~}”|}x‰„Š‘‹ˆ‰Œ‰™…‹„•}‰{{Œƒ‡~ˆ‡…„…‡Œ“‘„„†‰|~†‰‹’ €Ž„€‚}Œ‚ˆ†”’‚{‡t‡‘‡‰…wpŽ|•‚Š’Œ…‹”ˆ”Žmnƒw’‹Š‰‹Š}Šƒ‘Ž“~‘}›†Žˆ~“Št“y‘‹›‡„‹‰ŽŽ‘†{–š‘Ž„…ˆ“”‡‘Š…ˆz„Œ|Ž‚y„r‹†‰…‘Š€ŒŽ”ˆ‡………}…ŒŽŽŽ‹…€œˆ‡€Œœ“ƒ}™‰‡…Šˆ‹Ž†x„“‰Œ…‹†„˜‡ŠzœzŠŒ}”ƒ€•‰€€ƒ‡‡Œ…‰ˆ‡„“Œ™‹Š}{‡–…“ƒ‰Š“ŽŠ‘…ƒŒŠ„ƒ•‰†‰’}’}•Ž‹„|ˆ‘}Ž“’‰ˆ—‹{‘‹‘„rˆŒ|Œ‡rqƒˆ‡ŠŠŒ—–„rn“yŽ‹•‘’Ž“{‰‹‹”€š„†“Œ€ŽqЇ‰šŒŽ‰ˆŒ‰˜’y”Ž•€“Œ|‡”Œ„’‰‚„x“†‹€~‹Žˆ{ˆŒtƒƒŽ††‹„™ƒ‰…‰‰Žˆ|yšwŠŽ‘Œ…‡†œ‹Š•{Šž•…x—‡‰…‘‹~†˜u‘…ˆƒ‹‘ƒŠ’Ž‚Ž|”‡~Œ~’Œ‡~Œ‹‡‘ƒ…ƒ‡„‹Š“Š‘‹š~v”‹†’ƒ—‰’‹Ž…}‹Ž„‚ŒŠˆˆ’”v–—€‹‹o‡{’‡’ŠŒŽ|wŠx‹†ˆt„’Š‘}‡st‹z–ƒ‹…‡ˆ•“†‰Žpmˆ‚x”™›‘|Ž‘{–Žšy~›|…†ˆ‘xxœvŒŠ€‰‰‹‡ˆˆ’Ž˜Šw˜˜Œ„”–‚‚–ˆ”€q„{Œz’~}‹††}„sŠŠ…Œ‘ŒŒ—ˆ‚ˆˆ‡Š‚ˆ‘ƒŠˆŠ‰ˆ}™ˆŽŠ–‚’•“„x›Œ’ˆ‹Šˆ€Š|€Ž’…ˆŒ‡‡Œ††}‘™‹ƒˆ‰“Œˆ}ž„“‘„{†•Œ…‹‰–‘Ž}ƒ…‰†‰ˆ‡‰‹†uˆ“Š€‰•‘ˆ†t–|“…Œ’€Œ’••——ƒ‡„ƒvˆ“‚…–Š‹~…}ŽŠ•‚•ƒ~~„‡‰Ž“‘†ˆ…“—Љˆ‰Œu„‡„‹“o‹‰–‘„v‡‚Š}’ˆ–Ž„ˆƒƒ‡‰Š€Šz j‚“ƒ‚rŠ…ƒ“uv‚ŽŠŽ}‰‘‚”’“}ŠŠ“††{}u‚œˆ„€Œ‘„‘~…ŠŒ…~Šƒˆˆ˜Ššz‹“€•…™‰‰…~€‚‹x‹•Žˆ’~ˆ“„yŽŒ‰‡‚€˜†„Ž„…ŒƒŒ‘|…•“„|‰‘}•}މ‚|…†„t‹‰†ˆ“€ˆ‰ˆ‹‰†…ˆ•‡zŒ„‘zsŒ~{“yŒŒ‹‰Œ–Š‚††”~‰‰‹„™•ƒxtŒ{“…š‹„‹†’Œno~zŠŒŠƒ‡‘‡™v‘zœŒ’‚™…… ‹‰–‰Žˆ‰‚Ž“pqœ˜ŽŽˆ}‰—ž„Žz‚‹|–„}‚‡—€x‡‡u‰†„{‘‹‹–Š”ƒŒ•‡‹‚“ŽtŒ‘Š”ŽŠ‡zš†y”{€›†€‘„‡“†¤n‘}Ž{yŒ“€Œ‰“›Œ…w |€Š|“€…Œ„vˆ‹™“ƒ†‹ˆ‡p†šŠ•„~‘ƒŽŠŽ€‡|y”‘€‘‘|Œ…‰ƒˆŽ„ƒ„‘€{ ŒˆŠ††‹}Œ”…†††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††‡††††††††††††††††††††††††††‡†††††††††…†††††††††††††††††††††‡†††††††††††††††††…†††††††…††††††††††††††††††††††††††††††††††††‡†††††††††††††††††††††††††††††††††††…†††††††††††††††††††††††††††††††‡††††††††††††††††††††‡††††††††††‡††††††††††††††††††††††††††…†††‰†‹~ˆ…ˆ‡„‚…†ƒˆ†‚†‡…„†‰ƒˆ“Љ…ˆ…„‡€…‚„‹~‡‡Œ†’„Š…‡„Œ……„„|‡ƒ…}|„ƒ‚ŒŽ†‰Ž‹‹‹Š‚‚„‹‡‡‰Œ‡u€~„ƒuˆˆ…‹„†‡ƒ„„‡ˆ›˜vŽƒˆ‹†‰‚ˆŽ‰ˆ€€~‚†‡|…‘‰~„„‡‰††Œ‘~††~„…“†ˆ‡yŠ~}€™‡†w…ƒ†tz„‹ƒ‡‚‘ˆ‹ŽƒkŒ„…‰‹€’r„s„‰‡{ˆŠ‘„…Ž„}‡†z‡‘›†~‘„…|—¢‚’†“~yˆ”ƒˆ„…ˆ†‡Ž…‡w‚“zŽŠ†|‚„Š’”ˆ—”ŠŠ€‹Ž„‰…x•–ކžŒ“‘‡‰Š›”‹‰‡…™‹Š–‹ƒˆ‰n‹‚މq†‚†Šy‰Š”‘‡ƒ…‡ŽŒ“€Žh—’Œ‡m’‡ŠxŠp††‹†}‹‡…ƒ“ŒŒ’ƒ‚‚€Œ€wˆˆ}‚Š……{‹|}ŒŠŒz‰–‡Š’ŽŒ‡ŽŒ~Œ“‹ˆ†‹‡˜ŠŒŒ‡‰‚‡‡ƒŠ‰‰‚‰‹‹ƒˆ‰ŽŽ˜Š‚‰Ž‡ˆ„ƒ„ˆ‚‰ˆŒ‰Š„†ˆu‰ˆ†‹‡“’ŽŽ‘‘ŽŠ€…Œ~‘s‚’‹“‘n‹€‰‰‚|~Œ‹‚}w„yz†z{„z}„Œ‹~‡—ƒ€€r}€|„Œˆƒ„|{t‡†‡zŠ„€}ww’†ƒ{Š{‡ˆ{z|ƒƒv}‚w~ƒ‚€|‰y~}„ƒz~‚Š€€}€}{…€€…†r‰‡}†}|{r‡€ˆ…€}‡|‡…‰€…|‚‹…€“‹{Œv‡~„Š~„†~y{q€y‹w‚y{yƒ‚|}ƒvy‚…€‡„†j‚~€…|yˆ†|‚}v~zˆ††Š€{€„xx‹z‡…‚|„~‰€Š€w‚€…y†uxy€‹ˆŒƒ‚ƒxƒ|u}‚ƒztdvˆ‰‹wxviz‰pcv–pw‹‚{zk{•’„yxzyzo’†z|wr{qr|qyƒxwpx‰y{~c{sszm|g}vƒyss~pyrpv{‚uzg†{un€mtztƒ}Œ‰xviƒvx|twjqny{rsƒx|ƒ~uztƒs}t{xxwŸomymkww€vovvm}|fzjztyjqwƒix}{ptwuouwm|sjlrxyov€ƒu~wvrs|x~rzwuzwy{wtzuƒy|xq„p{{{z†xmpzrns~zjut|eryyuxuvƒ†w~u€w{y|wu‰¼oŽw…u•}x†o‹ n—‰–‡†‹‹‹˜Œ‰~†ƒ‡z{ƒ‡…uƒˆ|•œˆ]}“ˆ‹‹v„Dvvƒxrz†tƒ‹ƒ‰|„’„v‡p¤Škv‰~{€„’y—•‡„‰¡|~¥xŽ‹ˆŠ‹~‡}{{Š”phˆ{{€…†w}w{w‚€–w…€‰{†m{z‡…o‘†‰‚›†}Ž”‡Šsˆ‹”ˆoz’n‚xŠƒ…ox…Œƒ‡‰’€€{sŠ‘qt•{Š”Œ‚………§ww•‚w‹†pŽ’˜‹‡yŒ‡‡…†ou†Œœƒx‰€‹ƒr›Š†…ˆl˜|Š…|}€€Žƒ‡}Ž~|“—Š•“’Œ{Œ„Žˆ‰—•„–ŽŽ‰ž”˜ˆŠˆƒ„–Š’u|žŒ†‚ˆ‡‚†pŽ€xtˆ”Іƒˆ“‰–‰‰“ˆ‚Œ|š‚‘‹b’–ž”kŽƒ‚Šroˆƒ‡{†‡…”–‘~ˆ{ˆ|„‚u”‘ހޅ‡‹†’z‡v~‹‹‰†Ž“~†ŠŽƒ‡„‹“‡Ž}Š¡‰Š‘ЉƒŽ‚‚’wŠŒ…‹’ކŒ‹xˆ‡™•™„†“‰‡‰‹ƒ|Ž—ƒ‡‡€Ž„~zs„ƒ†…„˜ˆŠŽ‘˜‹Š{•…”uŽv‡”„‹“‹sŒyˆˆ‹Š‘kv…‡€{w‚{Žƒ‚ˆ~hwˆšo€”œŒw—}ˆ€v¦tx‘ƒsˆŒ}ˆv{”„ˆ“€‹”—Š|~–r˜†‰‚v{}’y”Ž‘yz‰‘Ž‘~mz”|oŒŒ|~}†…js{‹xnŒ”ˆƒ‚Ž–z‡{Š…}ˆˆŠ}ƒˆ‡ˆ…z‚ˆwyv„ˆa”ž‚‚z€zЇˆtxz~}um€x†”€‘{}‹‹y„˜w†w}z†‹~{†||„|Š{x†„r‰~|†‰„z{y„‹y†€}}t€˜yŠ‚…x…wos‡€ˆ~ƒ‚„€l…|’ƒt“‚‚‚zˆ‰…„…~‚ˆz…|~{v‹‰†~ty†‡{u‘‰|Š{z…£~€Œ~{~u€ntwm……’Œy…zx‰†tv‰€ˆ–y~k‚†tswx‰‰ˆiŽ~“ˆx{†€ƒyˆ†€z|xƒxppŒ~{}„„€‚nx…~xv…•}‚~z~}y–~{Œl|w…‚„~‚Œ€~ywws†zsyy„Žur€y~{~~s€}„€†‰xuzvv‚~r‚|s‚ƒ‚u{{vyƒuxv}‚u}ˆ…‹z~yxv~r’s|z‚s~wuyyq}‡z|y~|zu{txw”uw€wŠuˆ|~‡~—„†Šˆ{ГމŒ‰“Œx‹ƒŒŠ|‡‚}†‹’~œŠ‘…Ž˜‹œŠœ‹‘„‡ŒŽn‹…‹ŠŠ–w‹ŒŠ|‡…“Œ’‘ˆ’Š’†‰Ž}j†‹›‡oІ„Œ‚zoƒ…Žˆ}‡~‚‡ƒ—ƒŒŽ‹†ˆ{|“‰Žx‘€†ˆˆƒy‹„‚…Šƒ‹‡Š”ŠŽŠŒŒ‰Œ•ˆ…ˆ†‰‰Š‡‰„Šƒ„ƒ„ŠˆŽ‹“’‡‰–‹ƒ‚•…ŽˆŠˆ‚Ž€‡ŠƒŒ…Œ‹’ˆ~|‘w„‚‹„”‡‡‡Š‘‰‹Œ‰ŠŒ††ŠŠr‡”‹’‚mˆ„‰‰„}……o}ŒŒƒ€Œq†{•€|{–‘“€ˆ“ˆ‘‚ˆŒ”s{…xx‡ƒ”’˜ŒŠˆo‰‘‰s’‹{ˆ’yŽ™†ŠƒˆšŒ‰‹ƒ”„Œ}‰“xŒ‡––z‰˜—u€m‡ˆŠ|•‘„—}‹r†‘’“†‡–ŠŽ‘‘ˆ’†Ššm‰ˆ“”‚—‡Œ‚‚™‹”ˆŽ„ƒŠ›ƒ‡‡‹Œ‘‹ˆŽˆˆ’‘‰ŒŽ‡ƒ|Š‘ŽŒŠ‡‡™‹…‰”ކŒ‡–‰Š‹‡…‹ŠŒ˜“Œ~‹ˆ”‚“ƒ–“‘›Š‚ƒ”‚’Š~•‡‹Œ‚Ž“„ˆ~‰€†•›‘w„‡o~|†ƒ}‘ˆ†—ƒ…‚‘’Œ†—•†“ˆzŽ“lsxz„Ž€™‡}t•œ…Š„s‘ŒxŒz{|ŽŽ‹Ž„‡€‘Œ”ŽŒ–Ž‹‹y•ŽxŽƒ‹’……ˆ—uƒŠ‡Žy•‹“‚‘Žp}ŒŠ†‰ŠŠ‚ˆƒ”‹‹†Œ–”u‘”‹€Ž…‹”‹‰‡‡‹™‚–†•‰€|}Œ„ŽŠ‹…—™Š††šyšˆ™‚‰ƒ’y‘ˆ‰„Š…“˜‹ˆ˜„‡Ž…ƒˆˆ¡†Œ‹‹ˆŒˆ†ƒ‰‹…•‚“—’‰‹‹†‰‘€Œ”“‰Ž‘}Œ„‰i‡Œ†‹Š|~Š‹Œ‡‡˜‡ˆ‡‹…}€‘“Œ€‡vŠŒ”‘‹‹wy‰†‰’Š’‰˜‰‹}r„‰‰|}•‘‚†ƒ…‘‹ˆšxy–Œ‘Љ›”—Š’…ƒŠ‹w‹†‘Šx‹Œ‚xv‰Žƒ‡|”t†€–{ŽŠ„’‹Ž†‚ƒ“’†ƒ‘‹~……•wŒ‡€ŽŠ‰ˆ‹‰‚Œ‚—”€‰~…’ŽŒ†‘™ˆ‘…Œ€‡”’ƒ†ŒŒ’Ž‚{‚ŒŒŒˆŠ‡‡“w”ŒŠŽŠv|†‘†‹‹ˆ„ŒƒŒ‹Š…€Š’‚†‚—…’—‹’ˆ†‹ˆ………ƒŽ‚€‰‹†€‘}yš‹Šy…œ€ˆ}‰z†v~‡|‰…ix„œxz„„†€ƒ}y‡Àu†ˆ~††{zŠ…Œˆ€„’›‡~ˆ}€’„…~u€’‘–z|{vwxŒŽyyo“Œr‚Žr‚Š”‰‰wˆr„€Œrˆ‰‚s…†u†€}{‡‰yw‹Š€ƒ‚‡‘ƒz‡ziƒ|Šƒ‚yŠ{|€‡vmІoqv†zq‚‡rˆ…y„{…€€x‚…|u„‡|y~zw†~‹pŽŽk|ˆ„‚yˆ‹yІ‹‰}‹ˆsŽ€wn€~ˆyx‡ˆ}l‰x‚{‡vo~{qx‹y‡†‚~Œ}~ƒx~~€Š‹v}}u…‹}†}›…ˆ~k‚†x||†—‹…ˆŒ³v‚ƒq…€‡†rˆ`‡š˜–‡{“Šzy‚‡|‚|“ u€tz†u‹}•‚¥Œ…†w‹x›x”“‰‚…q‰€…qyzƒto‰p‘†Ž†„yv|{…}‘…z‰“s‚…}ƒ|•}nŽd„†ƒ‡ƒs…€~{Œtrqx€ˆŒ}|zv}ƒ‰ˆ|ŒŒ€Š…x€qy{Іxt|{l‚†zƒxyŽ…zzx€…z|Š~Œ}~}‚zxv–s{~…‡{{wwmŽy…{‰€}xyw|t’†t€v†‰ux{‚ƒu}~†€u…{ˆ‰{ˆ†€k‚‡‚t„’…t‚…†v­zv‡xy€w‚ŒŠ‡˜–•‰ˆŽz–ƒŽ‘}}vv‰™‚‚vƒŒŠ…yŒ“‹‹†y~”ƒyƒ‰…{n~Šqu{‹tk”‹ˆ‚ƒ~—ƒ…„t‰}Š‹~|}‘€~xyƒ}ƒ€†c…‰„€xz|€us€|sx†„vw‚‚~|Š}‡Œz~{rƒ€€tŽ}~…’ƒ‚|†x}‰}{€}|}~y†~„x{z‡{“u|yƒŒxˆƒxrx†ˆ|‚„€„‡€tu˜ˆ}Šwƒ‡y{|{‹w‚††€t”‹„ŽŒ•‘–|……’ˆšŒ}zˆ–„“…‰’‹’š€–†€}yˆ™Œ˜Œ—‡n‰}Œ„‹wt•z‘†‚†Šˆ†‡}’‹”~’•g–“€l…}‘o‚‡•€}‘ˆ‘‘|y–ŽˆŒŠ‡u…{“š‰|—‚–ŽŒ|}‚w…ˆ~{€Œ“‰‹‰Ž‹‚w‡‹ƒ†„Š”z‰†ŽsŽ’ƒŠƒŒ‡‰ƒŽ˜Ž‘˜—‚…šŒ„„|‰ˆ‹‡€‚ƒ†}‡ƒ’ƒ–ЉŽ“vŽ‘†Ž‚˜‰‘’‘ŒŽ†’‡”x†v’‹’‹oŒƒŽ‡‡xh‘‰xry‚ws…urwŠmyˆ‚w‚šŽ|xrxs|„‚†—‡x‚rˆpl†m‰€n{un‘vƒvsysp‚v€rurx‰{sƒwy{…{uqw€iwŠ}i~py|q’}ŽƒwwuŒm{zmvw{zqzr„{‰€{€}{ty‰}{}|“v†z€|u„px}t}Žm}}y}~„|‹s€„zr‹ˆqƒz„~}|s‚y~my„sƒ|tƒzzqƒq‚~v‚zƒy|~‰‚v}€„|€‚ˆ‰€€„ƒx}{v‰‡{p}‚zw|}zzˆ…~‚…z€ƒz††“uv~{†‡ƒ‚‘w{t‡{~„‚z‘y{‚n‚†•{{ƒ}‚y‘‘‡w v†‹‡€Žƒtƒu…‰‹‚„•–€‘‘’„Ž~ƒŠ‘“zw€‰z…{€„ˆˆ‚s‹}ˆŽ{ˆ‚€rކ‡s{{ˆxqƒ|‰‡ƒ‚€{z|†z‹{‹’|~{{ƒ€|Ž€wŒb†Š‚„„wŠ„{y„~uŒs~zu‹|~~…†‚‡|~…‹}…u{}w€|v|||~ˆ{{‚z~‰…w{z~{yƒ‚|ˆq~‚{y‰xv}{‚€‰zxn„Œ‡~|„z~wvƒ||„x‚„x‰€€Žvzm{|‚†}}r}{zm|•‡y{…„yu‘ƒxn~uxxw’ƒw„}nvushxqƒˆ|„x{…‚€x‚yt}}|€kw†w‰€v…{x‹p|vw„}m€~veˆ|ƒzu‚yz|w†ˆ€{v|}l~xvxywxys}uƒ}w†~kulƒ€zxzzxv™}wŒwmxkƒs|rk†y‡nytwztnozsŒus{xuyyrt}x}}no~qv|{{tŽ{q}vtt{vwtprxw‚~tw„„Š‚p€mxuwtŽt~wpqzwxp{tpt†xxt{vs‰€up{‡~syŒŽr€y|}‰n‹Ÿv…~yw…„ƒ„‹…„vŸy}‹€ŒŠt{~”€ƒymz€y‚z„Ÿss~~}„sxtŒ…p…†}€‚wy{•€’€|}~‘“x{{€™h~‘„{ƒ‚{•–}€ˆŽ€{‚ƒ„zxq‰‚}‚„Št›†—ƒ‡†}¤†~•ŽŒ™~‚‹z‰w{‚hy‰ƒ~xŠˆ—†„ˆ‹xŽƒ…{‰ƒp}‡„k€‡†‹‚vŠ‹|ŠŽˆ“x|}‡‡ˆ{‹‡z‹€Š†|‰}†{„ƒ~|ƒ„…ƒ}l~~ˆu~‰ƒ‹‰ƒ‡ˆw„‰€“„Šz‰ˆwІ{vŠ”ˆ}v{x‡€t€€‰|vw|{†}qŠz~†y£{†‰}ƒ{|nš„‰€uˆŽy‰‡s‚ˆz{Žpˆ~wyŠz|zˆ…~{yv‘‰‚h‹ƒy„‡x{€€Ž„ƒs{v††i„‹ƒ€vz„{|‰yzw„yxw~…ƒ|}|x…zx…id~…}~}wsyz~xrzvvps{†rx}ut}~y€~€ps…wx€y}~s|~vywt{‚v||uxu|tv}y…x{€~xyx|”s}yo}z}qyyrz|z|}ytzww†ƒ}‡vx‚‡r‚ƒ}w‹‹€‘•‚ŒŠ‡w~Œˆ’ŽŒˆ‹€•†} •—ƒ†ˆš—Ž‚†š‹†q„…„‡qŠ‹Œ€’zŒ‹€‹’†‚†‰”Š‘’‹„‚ˆƒ˜”‘d~”Œš–n‚–‡|‚o†ˆƒ†}ŠŠ‘ЉŠޅІ€ˆq‘‹‰ŠŠ‚oŒˆˆˆˆ‘ˆ‹ƒ€‰‰€ˆ‘„‹†‹ŠŠ‹‚““ˆŠ†ˆ†Š‹•s†ˆ’„€‘‘Œ“Œ~„‘‚Š—…›š—‡‚„ˆ…}‚‹…€xŠ’†‡†„}‡w‹’‰ƒŠœŠŠ“’Š–†‡v‡‡qˆŠtŒˆ…Œ‡v‰|‚’†…m‡›‹‚t~}‚†{€x’‰~mxƒš}y‚‹”…u€‡w¬w‰Œ†‚Š‚}€sŒ˜Œ…‰€…‹–„~˜Šxœ€Š{ŽkŒ‡|ƒŒƒ„€…‚x„}‚ˆm‡z†‚z€€€ƒv†‚oyŠ‚r‡˜„‡u€„Œs~…‚v‚y‰}y~ŠŠvz‰x~†za‰„z…‚rzˆ|…{‡zrttz}‰tws‰~…p~{…ƒˆyqx€{sŠ{~zv†zzy…‚v{…yx‘Šyzy}zxu‡|Œ~†~zwŠ}t|ws†ƒ{|xo„„wzƒˆƒˆxys‚}‰…u€„u€ˆ‡v†ˆŠwv”‡‰€“Ž…~‰ˆ}Ї„Ї’…›‚Œ”“|ƒ”†„†€Œ—‰‡‹”z~Ž’‹ƒƒŒŠŒŽ…’‰ŽŠ~Œ|„‘ŠŽœ}‚Œ—rЉ‘‰xˆ‰u„q„ˆŽŠ‚šŒ~“„€’ŠˆŒˆˆ„ˆŸ’†…ƒŠš‘|Ž„x‘‘{}‘‰Š‹—ƒ“Œˆ„••‰Š‰Š“Š„ŒŒŒ‘ŽŒ‡Š‘ˆŽ‘–ŒŒ‰ˆŠ}—Š„†Š“‹Œ‡Ž‰ŠŽŠ‘Š’ƒ‚‹}Œ{Ž”ŒˆŒŠ•‡ˆŠŽ—Œƒ”‰…ˆ}†ƒ…Š…Ž“Œ‰‚Ž’ƒ…„’”}u{wuƒuy…‹€~x~uux}~€ƒwy{ªƒ…‡‚ƒ†}vxzn‚tz}Œ‹‡x‚‹ww€‡w{‰‡Œ‰|z{~xwu€|ƒ‚„Šwfˆ{|‡y€†z}†z}†w†v{ƒtƒu†~€u†xx|}yx~vŠ|{vy‰zˆ‰x}|x™mr~e|~yyrx{qp„ut‚ƒfr„‰‹sm|„r~zy€u‚x€puzw}r{~|qz{uyrk|zxwƒ}uxt|tw–……y~~‰ywq’t|s}zwp~ykˆ‚{xu€yzx~n|xŠ|v€w‰qyz‡z‰ y{p”–›œ€‰¡†~€ˆŒŽ‘¥Š’{¢«€…Ÿ›’ŠŠ”z¤–…‘ŒmŠ—”‡}ˆ{‰w‹”ˆŽ’{‡Ž„˜€|…{˜œŒƒ‹•z{YŒŽ¡‡f”Ž…”ŸjŒ‘Ÿ…r‰†€‡u‹‚ƒ”’—l‘‹—”z‹ˆx“ˆˆ}Œ…‚}„€œm}~p‹‘Ž]‡yŒˆŒˆ‰„„ˆ„–†‡Œ–‹•Œ†€~“ŒŠŽ—ƒ€su””“’Ž~’{{{‘›†‹Žš‹„ˆ†uˆzŽ•††‡œ„—‹‚y{§Š‹Ž‘”™‘“~ƒ˜‰‡rƒp„œ{||‹‡s‡}€~œ–}gx…|~z{€p|yvkwŒ}xŠ„‚{p}Ž•‡|xwŒ~†‡|}ys}sf‚i}{vuqx‹x}|g|tur}p{”xƒ|sv„€r{suŽyzƒyrk‡|tr~oƒvzu†Œ€ˆ€}wktyzsxlu|px}ur‚yz‚v|x‚vv{z{y›sp|rqyx„zpxxo‚~g|u}v{ktx‚ly~suywyxysz|voxuy|ry‚{yxuv|vs{vvvv||y|{w…}|{t‚s|||{€ntyspu|yxx}mvz|vyxz‚zy€x„‘v{|€wx„yŒ€u†}‚y~}’‘„~mz‰™xtƒŒ‰€ƒŽ‘ƒ}z¨z‰Ž„{Љ…xt~oŒƒ|†Ž–„{Š|ˆ‡u|€‡—y…~Š“ywƒy…Š‚j…}Ž…y‰Œ…†{ˆ€Šsv{†sw„}†††…‚”xw‚z‰{…xˆŠvˆ|€{”|ƒxŠc†yŠ„q~}{Š{r†‡o{…€’†uz}~|x{‚‚‰‚‚{zyt…„~vvˆy}u„x{€yv’†vyu…w}•z•}ƒ}}yvyw“s{v€‚„x|xynƒ‰ˆz‰~‡}pws~v„ƒu~‰w†xŒ‚„–‹€{…’Žˆ‘‘“‡Š†€‡‹|’’„z–‹€¤“‹ƒ…˜”†’„˜‚¤Š}‚•pŠŒŽ’„š‘u†—ŠŒ…{…—‹–—‹‹—‰Œ’‰‡‹‘jŠˆ†p‘‡~~v‰rˆ‡„Œ€‘‹o‚‚“‰‹w€‹Œ„”vw‘‹—}‚„•ƒ„{Žy™ŽŽ~…‹‰“€’‰„wŒ“ŽŠ’‡¤’—…„†‘Ž‚}Ї€‚Šˆ…ŒŠ˜ƒ˜~ƒ„…€{’‚~‰•ŠƒŒ|y‹“…‡“„–“ƒ“›‹•‘’ƒˆŠ~‡ˆw|’‰‘‹•z“‡zŽ’‹ni¨ƒq`zˆ‹~Žœƒškš€wkŒxƒ”}q~}}‡’u\—€}†{ˆŒx€Œmrt„{dt‹‚€‰~st}yˆoŠu”•ŠŠŒs”„zt•`z‰†Œ‰‚Œn{–•‘‰~‚‚hzgx‡yƒ‡||vš{†‹xWspxxŒst‰t„„‰Š‹sv~z‡ƒx”~“Šv{ƒƒ…Œv‹‘’ˆƒju~‘xl|pˆwzzˆ}y‚“˜‘„mrr„‚|zƒ{||ˆ|”ˆƒ~…€~І‹w~„{‰‹€y…|‚}„‘w•€ˆ…‚ˆŒx€„|„€Œ{…ˆ„v€z‚{~~zŽˆuwˆ“vm‘‰ƒ|‡†{|w¤{€v‚‚ot~€ˆƒ„…„Œˆz|‡{ƒ}ˆ„|yyŒŠx}~‚…y}|v‹}ˆ„f‡t…€x‰{|q‡‡‡v€w‹|rŠxƒ~†y‚„xs€y}x„|vw‰yˆ{~}y“xwd‡ƒˆ€€up…|sx‡st‚~jozz„sz„~v‚xw}†€svztyxƒ~{x{yzy~uzwtƒxvxzˆu{Ž}Ž€wxvy|—t|}qyƒ}stym|„†yy}|y~ymvwŒ}|}yvŽu€ƒ}€r€v…‹~x’~€‚q‚€tpx…ƒ‚…‚Œ€yw¬yŠŠ„x‚…‡{s{i|Š‚z“—Š}ƒŽ€ƒ€‘ˆ~Œ—‘žtvvt„x~t“ˆ„zr‰y™Ž{„‚…pŠ…ut{‰q|ˆo‰„||Šƒ€{u~ƒ{‰‰zx‡‡r~€x‚{ˆ„ƒtža~~Ž€Šq‡“}iw„yr…i~x‚‹o{‚„x„q‚yŽŒwsw~}x‰~wu|}zw‰|{†yw‰€zz}‡wx‹€Œv~}ƒyw†n™s}‚ŠƒŠw{rxg}zƒ‡}uuxpxt‘s€Žv‰…xxu‡ƒ“ˆ}ƒ•ˆšŒšŽ€{ŽŽ…“†u’—ƒš‘‹†Š “‘†{„šŠ‰˜‹…‡‹n‹Ž‚Œ’r~Š„‚u…ˆ’†•Šƒ…ˆ‡Œ‰{•€“h‘ˆ‘Žn}„œ~‰p‹…‹†|ˆˆƒ†ˆ–„Іƒˆ‚u‰ŒŒ|“{ŒˆŠ‡‰yŒv‰Š†wŠ“ƒŒ‘Œ„‹Œ‚ŠŽ‹Š‚‰~ƒ‡‹„‹†ˆ††‘‰n”ƒŒz”ŒŽ†…ˆŠ™ŒƒŠŽ‰…‰ˆ‰|‚†‰ŠŒŠ‘„ƒƒŠ€‹uŒ…Ї—‹Ž‡ŒŒŽ–ŽŒ~‘†~‹”qƒ’‰‘oІ…’‡~’’‰}„ˆ‘Ž‘„…ˆ‚†‰ˆ‰~~–‡‰–y’ž†Ž…{ƒ‘Љˆ¡€›‚‹˜Šˆ‡“v}’Š|š{†€’‘|„•Ž’•yŒ˜Œ‹‡—š‚‚ƒn‚Ž‹›ƒ|Š…}w†uˆ€‘™Šy”wŽ†ŽˆŽ‰u~•†|……‰z‘‰~™•ƒ†ŽŒ‡•†•“‡p‹“˜‰ˆˆ Š”‘|‚”‰z€•ˆ‰…}•ƒŽŒŽƒ—’~ˆ‡ƒ‚˜‹Š„…ˆ‹„†‹‹‚‡…Ž’…‹u‹{Š˜‰“އ”•˜‘…‰’…ƒ‹ˆ€ˆ{†™†™‰{„Œ†‹mz“‰Œ„r…’{Ž€v~v‹…Š˜ž‡ŠŒ™npƒyu€‰ˆ‹˜Šir‘”z‰Šcˆ{v‚ƒ…¡‰‰ˆ„…’”Ž€’‹‰ž‘vv‘›‡z„†~‰“€‘p{ƒ|”tš‰}…zŽ}u€„‚މƒ„˜€…‚ˆŠ†•€—•s‰~‡†“x‘ˆŽ|•’z”“Œ€…{‡y†Œ’‡s…€|’…‰Š‘‹}žŠƒ‡–…–“ŠŒ‚Š~¢ƒ“‡y‰‡‚“ˆ€Ššƒˆ‡ŠŽ…‰’„‹‡˜‚ˆ|‹•’“„•ƒ‰‚€„~’”–ˆ‰„••ƒ†ŽŠ“‰‰wx|‡‹yu€y€…t†ut›~tˆ‘‰}vŠˆ~~x™{‹ƒy†xs~‚ˆ‡’}{“t’}††xy‡ƒ‹’vz‡z†t€{w~y˜†ˆjˆ}ƒwy~Œuz{•}„uuvˆf…ƒ}t„y{y‚x†}uw‰…|‚z}{xˆ…}wgvŠ~ƒ}u||oˆw{st|zlxŠ||~s†€tyyƒ{urt€yu~|u„}t~…{y{yw}‹txvzwuuy|‚r|xxw~˜r|uux‡w|vxsqƒ{z~}z{ƒ‰~}w„‚y…{wx‹r†‚Š~~|ww‹—zƒzyx‚z‡{ot‰‚‡}‘‡ƒqŒz‚…w£zxŠ~z~‚€nnx‹€€‰…Œ‚{„~s€€}sw|o‰€w‹€†z‡‚|‚~u’‰‚i|Œx„‹€z~|…vpx‡ygŒŠŠu‚ƒy€€}pwƒy{xs~|w€~~xŠ‚zƒthƒ„ƒ‚sx“}|ws}wwst}‡us}…r~sy}{‚€†uuƒrt‡s~yuŽxvv{†v|ƒyuxw~zv‚y~†€|}syv{}“s}v{wzw{xvy€}{†|{v„}wsv…‡|rvŒs„€€ŒxŠ…‰‘•†Šˆ‘‚Š€rŠy’ŒŒ£—„‹…Š™˜”‘•š‡Œ~…{„†‚oŽŒŠ‚“rЂЇ™‹ŽŽ„‘ŒŽ’‰…Œ™„ŽŠ…i‹—„mˆ”€~o‡€‰}އ„‚‹’˜•ƒˆ…ˆˆ{…|x”†Œw‹ƒ†Š†xŠ}†ˆŠŽ™‡–‰‹~‰Š™‰Š‹‰…ŽŽŒ‹Žˆƒ‚ˆ|Š‡ŠŠŠˆ‹…‹‘ŠŒ‚“‡‘‹”Žƒ‰‰‚…ƒ‹€ˆŠ„†ŠŽ‰„{†u‘…‰Žƒ…Žˆ†€’‘”Œ‹‰–Š…}†oƒ†~’n’ƒ”‹…€“ˆ‚ˆ}•‹’‘’ˆ—~‹„‹‰†€…x’Œ‰ ›Š’—‰–„ŒŠ‰zЇ‰‡n‰ƒŒ”‰„s…Š…Ž|ŸŒ‹’ІˆŠ‚•ŽŒ~‹i‘‹Šlƒ€Ž|o‰‡…|ІƒŒ”‹‘ŒŠ††‹{‡~yŽŽŽ{“ƒ‰ˆ—‹{‰{{Š…–…†’‰†ŽŽƒ~—‹†ŠŒ€Š‘†‡ƒ„‡}ƒ|ƒ‹‚“ŽŒ†Ž~ˆˆ‘‘—x~‹‰ŒŒ‡€ŒŒŒ…‘ŽŒ‰€‡…~‡v†€‡‚ˆŠƒ“’‘ŒŠ„–‚}t‡“…‘Ž”lŒ„‰–‰‚‰s”‹‚–‚•”y|ˆ††€Šz›ƒ›Ž“Œƒ‡‚™ˆŽ~š‘…yˆ~ƒp‘‡‹„…xˆ‚•ˆ“‡Ž„Œˆ‰‹‘•Š•f‰Œ‘‹ŽoŒŽƒ p‰Šˆ„}ˆ†“‡………“™‡„‹‡ux‡}‘”’|ŒŠˆ›ŠwŠ€}‰Š…ˆw”ƒˆŽŒy‚ŒŽœ‚…„‰†Š“ˆŒ“‚Œ…‚“p‰‘„ޔޗБ…‡‘ŒŽ‰’†€”‘Œ‹„’x„‹Œ’Œ„ˆ‰‹€y‰{“Œ‚‰‰‚—|Œ‡Žˆ‰•‹ƒ’}‚Ž‹v†ƒƒ‡‹“t|ŽŒ‡‹†‹‚‚Š’’ŠŽ‰‘“ƒŒ‹‡„„}ˆ~Œˆœ”›Š‚Œ˜œ‰”œŠœ…Œy…}~ŠŒo’‡}Š’Žsšˆ~‰‡’Œ‰“ˆ“‡Š–~’Œ‹j„”‹‹†m“ˆ‚ƒu„o††…}Ž„uyŠŒ¡†‚ƒ‘Ž‚‘}x–ƒ„……~‚|Ž|„ˆ…“‡˜‹Ž—’Š’Œ”‹“‹‹‰ƒ•Ž…‚‰“Їv‡……†‹“‹ŠŒŒŒ‹€‹“š‚‡šŽŠŒ‡„‹~ˆ”›~”€Š‡‡€~{v’|†Œ‡†’ކБ“Œ“‡†’ˆ~—‹r‹˜†{n’ƒ†ˆŠ}ƒŠ‘x–‘‰†Š’„ŠŒˆwŒ|‡}Ž|žŽ—ˆ…‚¡˜•”¤‰Ÿ„‹Ž„{n‹}‹ŽŒ™uŒ›‹ˆ‰‹‘‘’“•…Š’€„Œˆh{•Š‹mˆ‹ƒ†uo‹„‰‰|ŠŠwy€‚¤”’‡}‹zy˜x}…‚€Šu„wŒ‰ˆƒ‘‡•Šž‹ŽŒ{ˆ…šŒ“‡„…‡“ކ…ˆŽŠ†€~ˆ“zƒŒŠ„Œ‹‹†•ŽŒŠˆ•‡˜“‡‡‹†ˆ‘}‚–|Ž~Œ‹’…€}~v—y€Ž„–Œˆ’—ˆ‡•Žˆˆ‹…o…™†ƒ—m•€‚‹†‰y‡œŠ{t†u…‡~v—€}tvƒ¨vqŽ€Œˆ„}}s„Œzƒƒwwv~‰€ƒ‡|ŠŽ†zˆŒwˆ„‹ŽvxyqЉ{|†xyzw‚~w‰‚„g†y|xˆ}}„z…‰v„v~ƒl‡}|‚|…Šy€yw€wŒ{ƒv†Œ‚€‰v~}y–rv}|i|y~€‚}ƒz~tƒvtˆˆ|v|z‰zr~~~‚vwz‚}~€€ƒuuzvuƒ~~qxxxz~t{|ws„rxy‚yu”‡€~|xw…{‘s|wu€yo}zlz~„wzw||zzˆv{v‹{x„{vˆt„‹†yŒh€”|Œtx€zzˆ…|}tzˆ„Œt—†ƒsƒˆ~{ „†‡ˆ‡z‡ƒ›‰{¢Ÿ…‡|…“Š„ˆƒ{sŒƒz}{mvŽ“{zuƒ}“‡s|y„v…‰ˆu~}{xƒ€ux}qqz}Šl„“…†{zyz‹Šyzˆˆˆ{†}‚~|}~†……‡ym‹„ˆq{}w|žw}tx{~‡ux€€„yzv…‚†y‰|‚yqh‚|~}†‡xwz}~~„…y’{‚v‚‰v†…}zo}ƒvƒ…€‘~~€~~‹}€Š}‚o€{€ƒt‚}y|™‚z†‚ƒ{……~v†‡{p‡Œ{l†‹ˆ‡‹”ŠŠ†uz“}‚u€“ŒŠƒ‹‹Š—€„–ljp~‰‚”†Švs‡Ž{v‰|‡”u|”Œ~“‚ŽzŽ‘Œ›‡˜ƒmŽ‚‘}ŽŒ†‡”˜v‹Š‹Œ{˜Ž”’|†“m‚ˆ…‰‹‡ŒŽŒœ‰ŒŠ‹—‡}š‰Š“}‘”‘’Œ}“–Œ˜Œ†ƒ‚Š~€|‡’Œš‹Ž’——€„–}†“ŽŽ™{”uŠˆ’y„…‚yƒ ‡˜–q€‹‡‚†…”o‹“~‡…—‘ˆƒŽ‰Š„œ‰’‡’y‹„Žƒ‰ˆ—Šƒ‡ŠŒŒq‡‘ˆ}”{h‰žƒxˆ‰›†|ŠqŽgut‚u|t‹†s•x}v¼tvƒŽ~}v‰p„†}‡•{ˆ—¢†ˆs”„ˆwnv‰„}‡ƒ‹}‚‡€}€€›k“†‹ˆu€†w†{…†p||€|l™Št…€{•qŠr‹~Ž}vŽ‹‰y‰u’‘fƒ}ˆ~rb‰žˆƒz}z{‘ƒuq~{yu~‚Œqs„Š~z…v‚}ˆŠ}tv{‘so€r}‚|‹Ž}uŠ„}‹p{vzxwx€€„€~x|ru~…w{ƒ‡vp……}…І†{{ƒp€t”‰€Š‰‡||†{€wŠuŠwy„‚x|~{”€Š}fx‚}~žŽƒ™ƒ}ƒ²v}…rƒ‘}p…v†‚ƒ’“š{†‡z’~~t|‚‰Š‹•z‰{‹|Œyˆ{Šš‡l„x–’w”’‡‚z‚€pvƒˆ{vŠtŠ„€‚‚“u~„‰y†|Ž~~v„…~Ž‹uw“|{xj}Š˜ŒŒsz‰x‹„‹rsxt{}Œ~rz‚t‹~‚{Š€t~~{{v…~vz‰†‚~Œ‡wm{……v~x…‚yu‡€‡|~}yxw‘q}†€„yz‚uz’™t†zŒ}}„Ž}x‰u~Œ{y‹zy|}r~”s…Œ‹‘™|‡‹~‚€ƒyƒ‹‡‡€’‡”~|“qwztq‘~~Š‘ˆˆw›Ž€{ˆ‘qŽ€”uŽ™Šƒ…‹—†…‚˜ŒŒœœs{‘‚”‰|Œ’„{…†v††‘‰‰v˜Œ’v‰“oŠ’†˜Ž‰Š—‡‡Œƒ‹Žˆwˆ˜Ž€ŸŠ‡“‚ˆ˜’†‡Œ—|˜•‰‚‹t~{…ŽŒ‚‹ŽŸˆŠ…£p–”—„–Œ†y„Œˆ†‰Š{|—{Š“†ƒ‚ˆ£‹ˆƒ“Š…~—’‘”‡†…˜Ž|••“ˆ“o„Єއ„~™’zˆ…fŠ‘‘ƒz‰mƒ‹†’}ˆ†‘s€|•€|}†Žƒ‚‹“†ŽŠ–lq’s€ˆ|ˆ•…‹€uˆ”‡‚w—“‘…”„ŽŒ†˜ˆ’y“–Ž˜Œ—‹r‚‹“~…Š•‹Œˆ•–v€zދޖŒŠŸy‹€ovŽ›ŠŒ‰‰…“‹‹†•„Š|ž„Œ‹•‡•‰’…ˆŠŽ˜•–†Šy‘‹‹„‡ˆ’‹’‹‰””}„•މ}“•Š€‹ŒŽr‡‚ŒŽw~””Ž‘q†—„ŒŠˆŽŒr†‡Ž}}”ˆ“†ƒŠ…”‘™‚~ˆŒƒ„ˆ‡‡Œ‰”„‚šˆˆ‹‹–…‡‹‰{|ƒ|‚wƒ‚~~{|Ž“zh{„|zŠŠƒ{–}x}¬wˆ…|ƒ†€{ps†„ƒ~”œ€•„{•{~{}„‰Ž’u‡‰vŒ}†ƒ‚‚ŽˆzgŠ}˜ˆs…Œ}„wƒˆƒqv€‰qv‰‰ƒyˆƒˆ~q~„z„z€~wx…‰}€Šw‡w}—}}†e{‹‰ˆ‡gy–x{€Œzy€q~€w~uz‹y}ˆw}‚|ˆƒ…uz}}zt{„xvz…z~€Šƒuux}††z}z…wp†€Ž~†~|yru”s}~|ƒu‰zsp‘yˆˆ}Ž|r‚Œ€u†Šz€‡y„{Š…ƒ‹Ÿu|z{†zs{‚|zx‚•{tyƒ~|ƒy‚x¬ƒ‡‹Œ…ƒ|ytzŒ‚†}z‹‹„w‘Œy††…sy€vŽz€x†{zy}zzx~Žˆlˆ€yƒyƒƒ€}Š…ƒ‰tv€€u„€z€ˆu†vƒƒzy‡wŒ|wwz€~‹z~|x’|‚ph€t€zx~‚z€m~{rˆ†hrq}~q~z€|wqz‚{ˆƒlu„}y€v~|p‹vynz~n|ƒxr‹‡xxtx}u}€Ž~{}~zv…{Žt|wvˆ€w{ymƒ||}xƒ}ysƒxvuˆw{€v~‰q„|„x~d§€~wˆ„‡|{€…†‘‹‚y—†‡yŒˆ›{|ˆ|}‰ˆ…ƒy{…{uŠŠ‡nv„~…xˆ~ƒˆ…~”||€z€†˜…y’…ŽzzŒ‰~›†ˆ‰†‚–‰€‹q„Š‚Š}‡‡…{…{n–Œ{tƒ™~‚|˜’‡‰ ˆŠ‹’–™˜~†ƒ„ˆ{{‚y‰…ˆ…Š‘ƒ‹‘ˆ}~†‚‚Š~‰†‹€„y…‰…ˆˆŒ“…‚‰†‹‚ˆ„…ƒŽŽ…ˆ‰•z}‹€…„}~ƒ…|•|…‹|‚ŠŽ‰‡‰……†ˆ‚‘…‡v‰ˆŒ„‹¥‰ˆ€ƒyyŠzŽŽŠŠ…‡ƒ{”™ˆ™™ƒ€’‚Ž‹ˆœŽ‰‘„’ƒŠˆŠ‰“—’‰’Œzˆˆ‡‚Žˆ…n‰‰Ž‰yw‰‰‹”yo†Œ‹’’……‹™Ž‡‚’u“€ˆ„g““‡™‘p‰€‹vˆpІ‰Š|Ž„x‹’ˆ‘}†Žˆ†Ž|y’ˆ~’‰Œ~…‡Ž~‰~{Ž‘ˆ‰‹ŠŽ‰‚€“‹ˆ‘ƒ‡¤ˆ„ŠŠ‰‡‚‘‚‰Š’†–ŒŠ€’†Žˆ“œ‹‹ŒŠ„‡‡‡y„‹„‘‡ˆ…†‹|}rŒŠ‰„‡—‡ŠŽŽ“‹†„’‡‘‰Žw…”ˆ˜‰‰u€~‚‹Ž‹’rƒˆ‡‹”Ž{ƒ€ƒŽ€i}ˆ}…†ˆw“Š~}ªq‘~Š‚€xx†‚~‡˜y†‘”ƒ‘}p”ƒ‰~{u{ˆ˜xŒnˆ‡ˆ†~‹•{‘‡¡‰wˆ‰‘{wz{Œsn–‹ƒ~…€n{”‡Œy‡~wŽŽ‡wx„”b‹Œx}o€‹‡Œuˆ”z™‡Šn‰€yˆ{|Ž‚ƒ‹‚h‰†Ž„Ї}‡zrŠyt’~jv|‘…„…”}u‡††ˆŒ}q{}us{}‘ˆ†|ˆƒvŽƒ•|sƒ†…~ˆ‹}}q€…|†’Œ|€{‘„…|u“~‘~‹zˆ~|~’xh~އ‚~z~i{zvkw„vv‘†{l}“‘„}yuˆz~}Œˆ}|€zt}sl…g|vvkxˆvz€l|tt~s€syœx‹|ut‚~ryst‹yzyvvkƒ}msp}u{v„އzxk“yxyvxlt~qy|tq…z|…w{vv}uzzyxœso|qtzx‚wqyxo„~e|v}wzkvx‚‚my}suywuxxx{|toquy{qx‚uxvvv}v€s|wv|z||y}yw…~{{s‚r}}|‹{os{rou{oy€v|muz|vyw{ƒyx„’u||€ww~Š‹„’œ‘ŠŠ‡‘ˆr}ˆƒ—‹„‡€‚ˆŒŽz™‘ˆ‰‡–|¡•‚™†•‡Œ‡‹œn…}‡†˜y’–‡†ƒuƒ‚•œ‚‡”“’„…‘o“h|‘ˆŠm„”ƒ}}o‡‰’†z‹‡Œn‚ƒ˜‘‰Ž‘†€y—|Š|ŒŠw€{Ž€{‡€„‡—‰™‚‹ˆ“~—Œ”…’ƒ…‡Š™‡‰†‡›Ž„‰€‡—ƒ‹€‘‘„ˆ‘–•…†“‘…„…“‹ž……ˆƒ|„‹y“x‰Ž‘…Š€€v“…ˆ””‹Ž‘ŠŽŒŒŽŽ„‚ƒ‡…q‰”Š~m’ˆŽh‚Š‹xu€ts„uq{{o~Šƒ€qr‡–…sw~†{„v•|‚~y‚wx‹}q‰szsyŽ{€xxuwp{t~…{‹ls~|‡v€‚x†tvxywxys~€Ž{|y˜{‚txmŽnw~€{wz|uzyr‚†{Žp|pŠo‚vx{{y€sr}~~sl~sz„‹pyu{z€owy‰‰rw~x~~x{t}u}quqƒyzsy‚~sƒyu€sz|€t|‡{yy}{}u{y|wwyƒs|}€|{€€svvk‚€~wx~x|oxzw{~yƒ…|tw‚€w€|ƒv€…Œ…‡†„‹Ž‹ˆŽ‘‡……‹ˆˆŠ…‹“Œ‰˜‚…‡Œƒ˜’™–†™„‹¥‰ˆ|†‹w–}’•„„’‰ƒ„„Š¡ˆ‰›‹~“ЇqŒ‡„”“r‹‚z‘~uwŒ„Œ‡|‡Š…€‰“Ž’„”†ˆ„|„€{†’‡~Œˆˆ…ƒ}…~ˆ–„Š“ƒ…€‡ƒ‰‡‡‡‘Š“‘†ˆ‘Š‹€……„ˆ„‡w‰€‡ŽŽŠ’€Œ„ŠŠŠ”„’Œ‰…“ƒ‚ƒ|ƒƒˆ“…’‹†„‰w‘ˆ‹Ž‡…Œƒu‡ˆ‰…ŒŒ‰‚‘…}„ŠyЂމŽv‘Œ~‰yŒˆ†r~‚Œˆ“~ƒ•‚~’‰ˆ•‘Ї•‹’ouˆwx˜‡ƒƒ”Œ‰w•“ŒŠ€zt‹€’xŠŒ†…ƒ‰‰†‡“œšŒx’ƒ}‰|Œ‘†€†‰›v‘‰Ž‘‚x”’„ˆ|Žr€Ž“„‰‚ˆ‹{ˆŒŒ†ˆ• ˆ„‘‹ŒˆŒ‰–‡’’„‚Št|‚~Ž‚Œ‚†‰’œ†‹‹œ„›‡™‹•xކ‡ˆ„ˆ……‘’Š‹ŠŽƒ{‡‹œ‰‡ŠŽ…|Ž”‡‰‡ˆ…€“~‘’ˆ„—~†…“ˆ‰’}‹‹ŒƒŽ‡ˆŒ‹u‰Ž†›˜„Љr™”€…œ‹’x†ˆ‹‘‚ˆˆˆ††Ÿ”’˜’ކ‘—“‰k{•‰sŠŒ‘Žˆˆ{~ˆ}‡~Љ‹Œ‘…•‰“‡†w‹‹mˆŠ˜Œ’o‹‰ž€†rŒ‹‡‡|ˆƒ€|€–‹Š“…Št‹…{›••}…ˆ›•{Ž„‹„zƒ’Љ†xŠˆ„›•’Š‹‚‹‹‹†ŽŽŽ‰‡‰ƒ‘–t‘”‰Œ•†ŒŒ‰‡“ˆŽ—“ƒ‰‘pŠŒ†˜‰ŒŒwƒ…{y‰vˆŠƒ—…Š”ŒŽ‹“Šˆ„’€…~Šu…‡‡ŠŠs{…ˆˆŽw}|‡‘„~w€uv{ztŠ„|zrƒ{v‹Šxt‚z~~sž‚z†vz}oou‰‚‚€~…yvs{€|ryk™‚{€~ƒ„wƒ„y…~t‡{c†x€€y€„uz~xŒ‰…|vv„j†{~}~|ƒ~z{‚y}}vˆ~zup‰|…||{v’wx~ye}~‡v|ulvq~ttvtely}‹{qy…xuv||~~|~su~px|w~}r€vxnor|}vrusrwr‡yt‚‹w~wyum|’s|yu{vzprzvzz‚zx}x{t}€nsx‡~}nx†st‡‚€…{‚…}‡wx}x‰vx|„‚~y|‚m|‹„…†v€{zx¬}ˆ~…ƒ‚xxum€{y…‘†Ž„s|…‚xx|††‡|ƒŠw}u€{†„pˆ€ulz‡vy€ƒ{…{|s‡t~w{xr„‡~tzƒ~w}x{†v…~pwx‘~~|y}|x”yzŠ…ix|ˆ€xxs‡uywtszvu|‰‰op}|u…msy}}ˆ|ptzv~y~~u‰}w†{u|~w|„‡yx}yux€‚{~€yvw”s|zr|{rw€xp}„}y|ƒx|€t{w‰…{|‹v‡r‰|€}}x|lŽ‹„zŠŠ•…–~ˆy‰–’Ž–…”—‡Œ˜ru‘vt€€€‹›Ž†•€Š‡ŽŽq”—ˆxšŒ†Š’ƒŽ‹ˆ‚‡Šs…–…ˆŽqŠ‘”vމ—‰…‰ŽŒ†u™„†‹zž‹’…‹†q‘’…‡‡˜€‡†Œ€Œ•‹‚‘Œx‚…‰‰™‡’‡Ž ‡›‡‹Šˆ…™€|€ª’‹„Š–„ˆŒƒ†‚‡„‘…‰z‡}“‘’‹Š‹‡t’§‡Ž–ˆ““‚x‚Š~’‚„‡œ‚„‰Š›}ƒŠ‹…“’—†‡–˜‡‰Œ”ˆ‹“’„–‘•‚‹‡‰ƒˆ†w|ˆ€}w†xƒŠ~}}އo†‰ƒ~}‡‹Œ„xЉ‚}yªzy‹ˆt{…{…Ž‹‹ƒ’“‡‚y’ƒ˜…‚vt‚–~r‚‡‡}{‡“…ƒ„xŒŒz‚‹‡}h„€‰s||Š~nˆ†Ž‰‡~z‹}Š{u‚|‹‰~~€~t‚~‘~~ƒ•fŠ|†ƒ…v€“‡|xt„„…€zz…{Šqp…„€{‚Œƒƒ‘ƒyzww‡†‚‚w†€Œ„|ƒ{ƒŽ|}‚„y„‡{„‚ƒ€{{|‰w“y~z†…Š{†zr|‰ˆ€}}ˆ€†{‡†{y“|Žz‡„{ˆv~Œ‚‰‰{ˆ”“Љ’Šˆ{“‚’Œ†„€|†ˆ€›‰Ž‹‹ˆ•„”’ˆ‘ˆš‡Œ‡„Š‘‹n†‹†‹Žs‰ˆƒ€‡‹Š‘‡“ŒŒ…Š‘ˆ“ŽŠi…‹m†€…o…ƒŒ‰|‡‚€Ž‡”‡…‡ƒ~y“„Œ|Ž„†Œ‚~{ކ†ˆ„ƒ}‰Ž™ˆŽ‰‹„ŽŽŽ†‡†‡—…ˆ„‹ˆƒ…‚’y‚Š…Œ’ŒŽŽ‰~–‹‰„‡—ˆ‘‘ˆ……„‘~…‹Œ„Žz‹‘‡„‹|ˆu‹ƒ‡’‹…•‡…ŽŽŽŒ‹Š‹Œ‘…އ‰qŠ‘ŠŠŒn‘ƒŒŠ‡‡ƒ€r†~…t}~ƒ~~~…xƒ‚m}Š‹|y‚‘Ž‹†z¯zuƒ}……z|{‹…ƒ‹‘‹—‹~˜ƒ|‰y}u†Ž“~Œ€‰y‡x„|‘ˆˆpˆ€‘€z„ˆ{wŠo}{ˆv~„‡††€z…Œ}……}xŠ|†ƒvz„“~wƒ‚|šƒ€‰h…z‰‹…z{‹v‚|ƒwq‡{vr~‚“ƒ~v~uy…‚‚ˆ}ƒ||w„zu‰z~€„€{„wzŽˆy{€yŠy€‡~‡‡€{zw€}‘s{vw†„uy{wn‚†€„{‰‚{y€{vs’‰w„†t„Šx‰|{z‰‡l„•ƒx‡Š€…ƒ„jwƒ”|tƒ‡‘ˆƒ‡yƒ|·wzŽ‚xŒ‰z„z‹’ŽŠ˜†z…y†‰}{}†…ˆ{‚ŠŽy…w…†ŠptŠˆŠ„~……ˆoƒz‚{xŠ“ˆ‰„Žyˆ€€y‰|“|‚z‚І‰~€~‚w|…xf†‡‰ƒ€xx€~†…rw‚‹ƒts}|nzŒ€ˆu‡„‚{“}{z†€z†}x{Œv‚ry†u}Žp€Ž‡„€z|}{}~†z{…z{z…~„’zm„…|zƒ‡x{†}v}~…ƒ€‚z‡ƒˆŒ}}ks„ƒ‰~v|vz‰xcxƒv{}{n{Žƒwvw}z‹{ˆ„zxvzuiezxuvun…sxxh}rssk{—y‚|uv~€q{sw†yz‚{ri‚}ps€mv|y„’€‹ƒzvnŒly{svmsqx{uk…zzƒ}w{u‹v}tzxxx•tv{stwx„|ryxr~}fzv~yzotyƒoz~}uwyvrwxuv}tqowyzsx€‰v€xtvvzw€r}wszw{|yuxw…}|zt‚t{}}zˆ{qsvsru€zxx€w~qty{vyxz‚€xxƒ‹v||xw‰w‰ƒŒ|‚“Ž‹˜ˆ|~ƒ‰•‹š†€}„Œ–}–‡‹™•‚•‹„xˆ—ŒŽ‡‡—‹”ŽmЇ‚„Š‚|—‘Šy€‰‰Œ†…Š€‡‡‹•“v’–gŠ‘Œ‹Šm‡‹†’z‰n‡‹„}‘Œˆ•Šw„’ŠŒˆ’”~ˆ€ƒ|‘–Ž|šŽ“•{zŒƒ|†‰‰{މދ‰‰‹‘‚’ˆ‡Š|ˆŒ~Ž…•‚”Š€‰…ƒ…ˆ…Žœ’—𖇉•‹Š‡Š•Š‚‰ŽŽ…’‚†Œ†ƒŒŽƒ–…ŒƒŒx•†‹‹‡ƒ–ŠŽ‘މ†‡Ž‰ŒŽŽyކކt‘Ž’Šˆ’o‹„‡‹Š‘ˆ†‡‰˜’ƒ•–™ƒ…x•„‹—‹}ˆ„|—ŽƒœŽŽ‹ƒ“‡šœ„‰‰’…t‰‡ˆ†n……‰ƒŠsƒ‚…“ˆ‰ŠŽ’€}’’†‡”z‘€ˆiЇކŒm‡‹–}ˆoˆ††z‚{““~„ŠŽ‡†€w–‡’z˜€ŽŽƒ{ƒ„}ŠŠ‚ƒ—‚І˜†ŒƒŒ“‰‹…‹Œ…„ˆ}ŒvŽ…ˆŠ‘”‡ŽŽŠ‡˜•Œ—††‹|‡ˆ‹‡‘ŠŒˆƒ‚~‰t„ˆ‡Œˆ…‘‰…‡ŒŽŒ’‘’‹~•Šƒ}ŒŽrˆŽƒŒ‚ŽmŒ~€Šz†„o˜“‰zv‚w€‹€…v‡ƒ„kz…†x}‚†„{‰œz‚u±xŠŽˆ‹‡vtŠŠ€†—˜™~•~{‚„}€‰~w„~{†…„{|ŠŒ‹y‚tt€ˆz†‰‚{fˆ‡Šmƒ{ˆ‚o‰‰‰Š‰x{xwt„|†‰|…v‹‰vƒ}Šnw…‰YŠŽŽ}†ht‚~tzˆus‚pxxunut‰‰rŽ…{€ƒŒ‰}rq|zyy€|z{||}‹xz‡yƒ‘}{{}…u|~†sŽs}~{z”x™x}~z‡ƒ‰zŠxlЉ‚||}Œ{‚v†wŽ‚‡x‰w||€w…pw|‚{z€}x†yu~~|ƒ{|c~x’‰ƒw…yv z€€uo‡ƒoxh„qŽ‹…}}zzx~v}{™z€ˆwmonzvxy|ˆ‹Ž„|o{™…{}‰|~}n‰ƒ€~{y~…i„n‡}tx~pv…€…n~w‚{wyr‹ƒ…ww||x…z{€„mt}Œu„xu…€}xrutuu}yqˆŽbn}„zz‰€vyy~‚sk‚v|rz€yt‚‡o—}…u}}w‚r{yzxoww{Šn{‚€wzz„rŒv~ƒyk|xk†zuz‹y{zm€yy{‚{y{›~}|{ˆ‚w~€€xw~”‰y†‚„‚…y‰Ž‹”‰‚†ŠŠ’Œ‚yŠŠ—€ŽŽpzž|ƒ„‡„ˆ‡|‰šŒŒ}ƒ”Ž‹‡†Žys~†”…€‹‰‘wŽ‘‰˜—v‹ƒŽ†‘Šƒ‹……†Š{…zƒŒ|…|š‡r‚†’„{”šŽŽŒ‹‚’|ƒ–‰Œm’~z~„ƒ†‡’}Œ„‹}‹˜ƒ~†˜‹‡Œ‹•’‚‡ŠŽŸ~r‹z}‚Šˆ›ƒ‘˜}˜‰…””–‚Š”ˆ’‚’ŠŠ‚‰¬|ˆ‰{~‹Š‹‰’•‹q{„–Žy€ŠŠŠˆ’‹•‰‹z‹‹…v—†‰…‹Œv˜‘ˆŽˆŒŒˆ‚‡‘„„{‰…”–ˆ‘Ž”Œw‡‚‹‡„’‚z”’‘‚Ÿ”•‹ˆ‹‰›—Ž„œ‹‹ ‹€‚…„n’ŒŠ…uˆˆˆ|„Š‘Š˜††‰‘ŽŽ…†Žˆ•i–•ˆ—†nŽ‹„‰}}qŠ„‰…~…‰†‡Š“‘Іƒ€}w’Œ{Œ‚†‡ˆˆv„~Ž‹ƒ‰‡“„†Ž‰Ž‹€“‡Œ‹„Š‹ˆ€ƒŽ„ˆ‘ŒsŠŒˆ„ˆ’ŠŒ‘†•‹Œ–w‰†Ž……‚‚€~‰…‡Œˆ‘…ŒŽ|‚w’‹ˆ„„…’‰Œ~˜Š–‡“€‹‹€‰“s’•p‹Š†{w˜†u{‚’ˆ‰~}ŠŒ‘~y~zwŒ‡ŠŸˆ—}ŽŒ•stn{‚Œ†ŠŠ–yw‘žŒ†r›‡ˆ„Š—€˜›¡žwŠƒœ…œ’v“™ž‘~v†™Œz„†„І{}ŒŸ†…s„{‰Ž‰zŒ• {…„tƒ’Œ”Œ‡}Šš—€–ƒ‡†Ži‹ˆ…‡‰„ŒŠŒˆ‰„”¦~–ƒƒˆ‰›ˆ|‘‰‡‡ƒ¡…‰ŒŠ•‡Œ}”‡˜‡‰„w†ˆœo€Ÿ“Œ‚†‰Š~Ћހˆ‘}“z€†™Š‰”“Š“ŒŠ‚’‰}‰‘’Ž|‹“‡‡‰˜’‡‡…”Š’†|™ƒŠo€‘ŠŠˆ†~‰x†}›€~|‰““†‡‹ˆ‘Ž‹•ou•uw‹~”’ˆ†‚v…Œ†s˜‰{“œŽ}„‹“…Ž‚ƒŽ}ˆw…“‹ˆw‰{†Œ‘“Šƒ…”„tyŠŒˆ‹„™Œƒ†v†}pŒ•ƒ‡‰Ž‹Žˆ’–’Œ‰‰‚‡Œu“†”‘Œ‰‡‡„Ÿ‹‘ŒŠ|ˆ”•‰ƒ’ˆŠ‰€‰ŒŽ…‹Œ†‹†„’„‰„•Ž‘Šˆ’†~˜ƒ•ކ‰”‡†ŽŽŒˆ†‡—~•€ŒŠ’zˆ‹Ž–‚‰“‘ˆ„Œ~…‘‡ŠŽ„‘†ŒœŠy‘ŽŽr„ŠŽ€ŒŠ~“~€}ŠŒ‹‰‘‡„Œ“nvtzŽ…„›’‰Šw€ƒ‘“u’Žx”•yŽ‹ƒƒ‘Іˆ†‹‹Š…”Œ‡s†’€†Š…Ž‘‰Š‘Ž˜v‰ˆŠ‰~š‚}†ƒrŒ‘„Ž‹†„ŒŽ‘•‡Œ}“Œ|’ƒ’“……Žˆ‰™€”•ˆ†‹ŽŠ„‡Ž‘‚Œ“…††|‹„–‰Ž„‹Œ‘Ї‹…–Ї’ˆ‹Ž†ŒŽ”‘‹Š–…ŒŠ‚“’Œ…‘ŠŽ‰‰ƒ‰ˆ‹‰„‹†ŠˆƒŽ‰~„‘€‰±}mi‰‘ŒŠˆ›™ˆs‘xŠ‹ƒ†§™x—£‘’œ‡¯”}€¥„xwnz‘‘‰´‡Ž“ˆ}xx”¨‡•€‚†’ˆ^ƒ„•ƒ‡—‰x}x}{€žvz•—lš ‚f‘Žƒ€f’o‡ˆ„‘†|‹Š‘‹‹‹˜†qŽu†yv~­”Žy“~‚›Žs„ƒ““–x’—‡Œ~‘ƒŒ†—Œ€žˆˆ•…„ƒ†ŒŒ‹„ž‡}x…™•’Œ‰‘x‹Š”‹š‡o€‘˜‡Š”•€‰„ƒ‰•Šƒ…‚ƒz†–‡…މ›s’™…ƒ€–“†—p‹Š‰ˆ”’šŒ‹}…—†~™‹•‹†„‰ƒ‰“‹ˆ‹•|…‚ކ†Ž‰‡z’‹Žœ–šŒŒ„Œš’ˆ…‹Ÿ‰‘…Š€‡‹‡mŒŽƒ‡ˆr‚…Ž€‹‰‘Œ“„މ‰ŠŒ‘‡Žz’hŽ‹•†l’ˆƒŒ…o…†Ž‚|Љ„†ƒŒ–Š€‹|Š€|Œ{Œƒ†€‹z‰zxŒŠŠ‚”ˆ†“Š‹‘Ž‹†z˜ˆ‹Œ€Š”…‘Љ}Љƒ‡‡†Š‰†‘‘Œ‹Œކ‹‹Ž”„€ƒ„І†‡~‹‰”‹‡Ž…†ˆ~…w†‰‡†”ˆ…‘ޔІ•Œ‡‡•z‰|Šr‡ŽŒ“Їn‘ƒŠŠ…‰š†‡rƒ‡‹ƒ„Œ€‹•”€~~Ž˜ŒŠ’Š‹Œ“–‡”ir–wz‚‰xŠ”Œ‚‰}ŒˆƒuŽ—’}“€ŠˆŠ‰~†–„„Œy…’xŠ™…ŽŠp†‰•{‡”†Ž‰‹‹†Œ‹u~ˆŽˆŽ}œ‹|—z‰…n‘„‰‹†“Ž•‰‚„ˆ‡‚Œ€“Š…‰‘Œ–‹‹“Š„Šœ‡“ˆˆ’ˆ’ƒƒŽˆ‰Ž‰‚‚ŒŽ‹Šˆ‚„yœ…‚“„ŽŒ‡€ˆ˜yŽ’™Ž‚’‡…‡†~ˆ‰Š‡}ˆ’‚˜’€…‡‡‰‹“•ƒ†„Žˆ…‚–ˆ‰„‘Žˆ‹…Ž‘‹Š†‰ˆˆ€–…Šs€˜„‰ˆp‹|•ƒy}•ŒƒŽ…‹’•’‘nww~–„†—’‡‹qvŠŽz••‘{“š‘{¤‡“¡†z˜†“‘‘ŸŒš†ww‰|ˆ~’Œ‹›‘˜vz~ކ„€—Š‹‰|ƒƒs|}Š—ŽІބ“Œƒ“‚†w”v““„“•’‘Ž’ƒˆ™‘”Œ‰„…•‰…†Œ™Š‡‹‡’„Œ…}‘“„ˆ„ŒŽ“{vƒŽ’‚ˆŽŒŠv ‘‘ˆ‹~}Œ‰Š‡…ŽzŒŒˆ”†‚‘Œ‡”ƒ†Œ’šŠ‡w„‰ˆ‹€‡‡Œ‰‹~•†y„‘‹~š‰~‘ys†“„„sƒx…„|v”zt{„‘|y‰‰…~†Šv†z¨}€‚††|ˆt‚Љ††ˆˆ‰—‚}˜‰v‹…‡†{ys‚€ƒyˆ‘„|€ww}‚ˆkŠ{‚|w‡‡„|‡|†|…ny~„p†‹z‚‡ŒyŠƒ€x‹x‘{zwŒˆ~‹|}y‘wƒtk„‚uzy†xs„vsƒ‚uxtƒ†mv…|zƒur|~€ƒsmw†~yŽ~}xtv~q‡†v|‚wu‰‡xy~}{vw‡‹y€~|zw‘€t|yt††x{~wn~ƒzz|ƒƒz~€Š|‚vŠxs…ˆv€„s‰„‹ˆ~uކ„s„€††‘z‘’ˆ“…€”•‹„œ„ބނnsyxŽ‚—‰wv–‘Ž‹„r”•zŽtzŠ€„ˆ•†€Š„‡“•‘˜Š’‘w’Œ’Œ‹’”†‰ƒ™všxŒˆ‡s•‹ƒ‡„‰q‚ˆ†ŽŒ‡‹Š“ƒ’……Žƒ‹Ž˜|—Œv†ƒˆŽ†‡ƒ˜‡”‰‹•†~ˆ„†‡“‰x~‰}‰y”„ƒ£…œ|™‚‹‘~„Ž…ˆ…Š’’‹‹œŒ‰Œ€}‡™‰…“Š{†Ž“„“ƒƒŽ“”Žœ“‘ŒŽy‹ˆ…„†•“•ˆ‡—ˆƒ‡nŒ‰„ƒs‚”–mxz~uuzqp‚|wƒŠ~mw~˜||u€xt{|™ˆ~tv|zt‚xn€‚|tz‡†|{†uƒ~{|‹…„Š}lhqspptzƒ‹ƒzzpŒ~†’|x…}~}l„Š‚ƒy€†u}e|…m~mt…xz{v…€rxsŠ~†wx{{x—{{~nsnƒj‚z~‡€mnnxw|{fzzŒ^s}…t†rƒ†rwzl~v‚i{€r{„mˆn‚s}vz{vmwz{ƒvwz‹Œuzy€{zvi‹xˆyq€ymy|o|‡}zzjvpp}vx}ˆ™{xx}…v€qŒ…q‚–”€u„~‚Œzv„lw…‹‚…‰rƒƒ‡w¯w€‹ƒˆ†„…w~š†‡Œ…†Œ™…˜‹v–„‹ˆ|||q†‰€‚ƒ€‰„|}‚“„‡pŽ}‡€y…„„~€}†€‡s~{ˆ|p‰”††v€…|‡„t†zŠ€z€ƒ{„y‚{Šyƒsf‰ˆ‰†|~x€xr~~yvx‡wy{Šz„s|‚~ƒƒ‘wv„}tŽz~u‰}z…€zzw}Љzzzw{y…}}€€~{x}‹t|v{ˆ{}ƒxp€†€{ˆƒ~{…{yt‘‰|‰‡u}ƒwŠ‚‚‹wІƒ†‚—’”„”Žƒ„Ž‹‹‹€‰ƒ†‘‡Œˆ›ˆ–‡‹ˆ†˜Œ‘–‡ž‹‹|ˆ‹€Œ‹oˆ„Ž|xŽ…‰‘p~‰‘†•††…ŒŠ’Š’¬’|‘Šl‹‰‘‘mˆ’Š‚ˆqˆ„††|†‰”…ŠŽ•ˆŠŒ‰…‚†~}‘‡‰}‰„††‡‡‡ƒpŒŠŽ‹{„†—Œ„•ŒŽ‡t“…‰ƒ†‚†€|†……y…‘…‘‰ˆŒ…’’Ž–Œ‹~†Š†Ž•Œ‘{†ˆ‹~„€Š‹†‚‹‡ŽŠ‡Š|ˆwŠ€‰‹‰”‚‹”’ˆ–Љ„Œ„‰|Š–u†’ДޔqŽƒ€‡‰…|€{†”ƒ{~z|†yx‚‡‡|wz‚~…y{„u…x~yw¬{‹~ƒ€}{nqq}~~ƒ‹Š{†x‚~{€rxy|‰‡y}||y{w}‚€~Šth„y~‡{yƒ|ƒ†xzwpp„|†}v{~|~~{tƒv|uvy‡€}|v|w›xx…yh}v‚€ƒvsƒuwzwt|ru‚}Œxi~~uvwp~y}…mq~wv|t~zt‰}x|~|qz€v‡~wwuxu}ˆ…~x~|yu„rŽs}vvvw{~xpx‚†y{€yw†{mqw‰|v„Žr„{€v‹„„ŠŠˆ’“Œ†™†x“ކˆ•‡€‘ŽŒšœŠŠ’—ˆŠi…˜ˆŠŽŒ„{‡o†Ž‚މxt‡ƒnŒ…šŠŒ€…ކŒn”ŒŽm‘‹‹ p–‚†‡ssˆ†‹€|‹‡ˆŽ‡‹„”Œ‰ŽŠ‰ƒ}‘œ„~‡‹Š‰z~ˆ„‚s‰Š‹‹†“„‡…ŠŠŠ|‹‰†‚˜”t‰€Š‘ˆŠŠ‹ˆ•‡Œ‰ˆu’ŠŠ–|y|‘ƒ‘‚€Œ‡{}“‡ƒŒ†Šˆz†wˆš„ˆzˆ“}Œ‡œ‹˜Œ†‰Ž‚„‚€i“vŽ•‹™“ƒs‡ƒ}“‰€ow…‹vy€vpvt|y‚ƒƒ†ƒ”ˆƒxw{ƒz—~„vs€{n…x–‚v‚vvŽz‚}us‚‚€„~~nŽ‚uxƒw‡ƒ…~‡sq}y~‹|ƒ€~‰€}€}‰ˆ|xyyˆkz‡~u{{syƒ„}z„yˆˆƒ}v}…€yz|}zŽzs†hty}vpu‚‘v||zw}‘xw„|||ynx‚{}wx|~{us‡xzyzƒ‚t‡zw€„w~€{|ˆ}}x~zv}‚w~{ƒu}}ˆ{{€u}z}tŠ€oz€|pz|y|•„zƒ†}ƒ‹yxw€w{ˆ“x†„u†‚€„€‚ƒˆ€j{ƒ•~x—†„}ƒz³v|‘„v†‘‹ws€†ŽŠŽ‡‘’€|’}Ž€‹~}‚‚Š}…{„Š…Šƒ{…u‡‘އn…{‰‡x‘‚€‚…†p|{Š|v…r‚†…~ƒ•xƒ‡†|Œ…x„ˆ€‘{†‚w“w}}|e‚…Œurƒz‹|‰wsƒ‰tsxŒ…lw|y„‹z~‚ˆ“y{{}t‰~|yy{„u„ww‰{xƒzz|ƒ‚z‚yŒ|†~~}xz~v}w}Š€}z}wlŠŠ‚{‰}€}ƒyk}un|”~v‰v|ƒŒ–{…†s‚‚›}z‡ˆ~€z‹rs†ˆq”„ŠˆuŒˆzzs©t~‘o€|xlnk†„†‡‡‘‰y…„x~w‚r{xvx‚}w~~~z~‹‰“‰ex‰‚xxŒv{}hƒ‘‰v€x…{drŒ{}yh{uzw…{vu—~ˆs}y•np‚Œe€€††kk‰|z|ns~|xr…}‚{hs}p‚{{~~}…zuqont{x~yx„~w|z~txƒw€„vyxu‡ww}‹xŒ…}‚wu…t”t|}{o|€y}xmvЇxz{…|ƒyi|y‡~qv‹v}Œ”w‰€†‰„€u”‰–‹˜‰•}“’“‚xŒŽ’ޙޕ”‚—‰‡x„™ˆ’ˆ‹nЉ~‰yp‹‚‰ˆ|~ƒŒ‡†‹ˆ‡‰‹|š†‘h–“‹“m‘„ƒ‘{™oƒŒ†{އx…“’•}ކ’~†‡„v•Œ~—‚’††ŽƒvŒˆ†r‚ŒŒŽŽŠŽŠ‚Œ‰ˆ‡‡„‡”……Œ…“‡…‰w“‡ˆ€‘™‹‡Ž“‰{‹ˆŠŽ˜…€‚ЉŒˆˆ„…‘†|†’„‡Œ€‹sƒˆ†‹‹…˜Œ‘“ˆŒ‚“ƒ•}Ž”sŒ–‰Ž‰n‹‚„Œ†{“x’‰|†Œzlofm|t|z{–}~ƒ|x•wˆ|€€zu…w‚Œsqyqktmx_rl}vmt|‹{fzrƒŠxzmh‚ptuu~v…rzqtˆ„}ƒdiŠ|‹ƒƒx‚pymy‰ˆ‹s€s™–~‡syw{iqhfzxzwkqˆu|oz”¡fx’lwwd‚njvwyo…‰}‡z€lhv€gq}yy–|~}‚€j‚p|—{‡bmGc‘}’…sa‚]‹h¸…a}Sxˆƒ|‡ˆ‚vzt…ˆtp‹iˆ‰q™[on†‰imhw}pƒq€‹’yrƒx†}{sS€Šspq‰o†zl~y†z{qw˜wo|„q~…ƒ~vu|’†‡xv€}€|•Œ€‚~tƒyiur„v{pz‰|…}zwspxƒozƒ{†„ry|‚w„xx‚|w|otŠyxx~v†z|{”|Š…xyi‡q}x{{z|zutz}|€z‚‚w{v…x„uy{|zŠ|w}r}tyvs{{|…†pyv{~‚x|……m{~y|€}}v}y~~{{xmx{pyƒ‚tyt{y|x|†{x}|}x{y†{}yzƒv{|ƒ|{€€zqum€~ky~y}ty{{y‰‚x‚‰}}~xŽx|‚}‚‚mz…š{†vutv“|kjwtpŽ…xb‚¡w‹`qu€spy…‰iw‚q„}œ€‚}adŠ{yr¨‚n}†“…vp…{||w}mtpqsy†‰‘…fŠtŠ„tŒr…pq…wŒ{•kvœb„‰”lep{yb€„œu_sr„kƒ‹˜|ƒy{…uŒ“wŒpzxqpƒ|}‰f‘voŽ~‚‰…ovvq‹ypŽŒwjqdŽ]…w}yd…“o‡Œpxtlp‡w{œƒouƒw{zxŠƒ~o‚vŽk‹zzz‚o„‹fƒTi~wv‡j„w~z‘˜‘yˆxxY}x†h›~„–l€uy~Ÿy~ƒ‚~|uˆ‡“‰œ†k‚€{‰~”‚†Œ~xzw„„‹–{~”‡˜~Žswˆ{ƒz}…{ŽŒ|‚~‡…•‰†xŒ„tƒyˆ{‚€’ŽŠ‚kŒŠxƒ‚†y–ƒˆ{z{}}“y|€„Ї„‡Žƒs~„‚‚yˆ‡†ƒ|‰Œ~{ty†|¥uxwr…Š¡†~†Š…†‡{y”Œ„t}„ƒp|ƒ…v~€v‡„x…}}Š‹}y‚}Ž˜…‘}z‚„…z†yƒ‰†‰ƒ€Œˆ—ƒŒ†„u‹…‚©…ƒt‚„u‚””k…y{’“ހЀv…‰‘Ž…“Žr‹Œ‹‘•Љ…“އ‚~Ž“‰†Œ‚‹†Š‰‡‹wˆ•„‹Š}˜{Œv‡Œ‹ŒƒŒ~‚ˆŽŠ‚}„™…—}…†“‡…ŒŽŽ€|”x‚ŠŠŒ‹{‡…„†uˆt‡„Œ‚y’Š’††“ƒ‘‹†‹ˆŠ‚‡‡‰šŽƒ‹†{ˆŒ‹‡‹‹}Ž}ŽŠ…‘‹‹‡Š‹‹{ŽŠ„ˆ‹‚‘†‰„ˆy…ޑЂ”€Ž‚Œ‰‰Œ{ˆ‘Œˆ‘‹Š‘‡‹ˆ‡‚„Ž—Šƒ’…Œƒˆ‚z“…ƒ’†‰‹Œ„ЄЄ†ˆ‰„‡‚‹}~‰ˆ“~‘{}j’vwŠƒˆ‚|¡ˆˆ}nˆ^ƒr‹‡Œ†‘†p³s„‰ƒq‰Œ|tr‡Q‡Šƒ”””‰x”x}}Ž€†|}™v—u{~x‘{‡€ž~¤Ž’vsy–Žx’’‚€`’„rp{ƒ{nŽx—†™‹yŒ„[sw€z‚‰‡yz€u„…y‚{€ys~“\‰~}dq—‹„‹wq}Ž„ƒ†‡„xs{‡}‰z€†~‚wyqsq„~swˆ}pƒ‡€y‰x€•„}zw|v{rp–rƒ~†wviŸt||‰x‡yyh‡‘€‡xŒ‰‚„‚pu{u}v‘|u“†xšg}œ‹…‚vˆx„”‘ˆ’Ž“”Šw‰Œ…ƒ—“t’“‚•““ŒŽ…ŠšŒ„u~žŒ…Ž‹„Š…ˆo’‡vˆŒ‹…‰‡’Š–“…~‰Œ†‡†…—’‘dœ›œi““rpŠŠ‚†~†Žš’ŠŒ”‚Š{‰™z…‡zŽŠ‹”އ…{‰x‚‰„}”‰…‡‚“‰…ŠŠ‰ˆŒœŒŒ—Ž„ŒŠ„Žl‡Œ†Š—‹‡Œ„Œˆ”‰—ƒ~‹‹ŽŒ…~–ˆ‹‹‹…€ŒŽ€wކ‰‡Š€˜Ž‡“…ˆ”“Ž‘‚™ƒ‰v‡‘‰‚”’rŒ{‰Œ‹‚‰h“ŽŽu}}€‚–…~k~‚‹xq‚Œ‘ˆy‘Ž€tºtŽ…z’Œwyq˜}”މ†‹Ž”~ŠšzŽ|‡y…~ˆ~…‹€|†‚}‡‹~‚{„’}‡oŠy{}z‚…€~}q†Š“lƒz…ƒoƒ…ŽŠ…{…ƒvz{~‚{‰z|~†Žzz}oy~\„•~…}ls~x€yrs€‰pq‡ƒzto……z‰rƒˆ{twu{{…„}zxx…u~…uw‹|“Œz{~vyv‰wz„Šzx€~“x}yq…ƒ€~wi††ƒ|{ƒ‹~€wyu|t‘p}‹v‹v„€ˆxŒ„…€Šˆ•”„–˜–‚|“ƒ•‡Š‰„y’”ŠŸŒ’Žˆ“ˆ——Š…y‹”‹‰Œ‹‰‰‰n‘…ƒŒŒˆ‰pˆŠƒ€‘†Œ’‡‹ˆ†…Šƒ—ŠiމŒ‰mˆ‹€’u™o‚‚…ˆ|Ž„‡‡–—ŒŠ‡…’…„‚v’{—ƒŒ•‰‘ƒ~Œƒ„‰‰w…—‚ŠŒ‚‹€‡‡…‰‡†Š‹“І‹|ŽŽu‹ˆŠ‡ˆ›Œ‘ŠŽzŽˆŽ’Ž›Ž‹ŒˆŒŽ…„‡ŽŽ’‹zŠŒ~‰‰~Œt‚†Ž‹ƒ…‘†’ŽŽ”ŒŠ”‹ŠwŽrˆ‰„ƒ‹n‡{{}t}‰…‰ˆw‹—~…z‘ˆ…Šˆ‹Ž„‚Ž‘zy€y|‚†™Š‹wЉvƒ‰v“xŠŠ…†„‹‰‡ˆ“—Œ“Œ‰–t‘•‡{˜”‚‰ƒŒŸ{…ˆŠ‚‡z”Ž ˆ†uƒ‘‹Ž‡ƒŒˆŠŒˆŽˆy‹”ž‚‡”†~Žˆ~y…Œ†“‡”‰‹‹†‰y„‡‡Œ†‡„‹†––‚ŠŠ”ˆ…’€ŽŽ’†‰‰‰…‡{‡‰Š‘‚œ‘‰‚zŒ’“t‹‹Ž~€–”ˆzˆ‚ˆš“…†‡“ŠŠŽzˆŒ‰Œˆ†‘—‹Š~†ˆ€Œ‚|…€‘—Œ•x’‡‰Ž{žiZs‚~™‹‹œŽz€††“~‡Œm‚‘z{ytrŒ‚“x‰’†~~tswp–‘}…~ƒj‰‘ˆƒs„ƒyq‘©‡|q€|…}…‹nmyŠšju…t‹~€w‹opu—n•’qw|€„‚}~—‘‰…wq†‹ƒ…s„€„|–y…ŽŠu„‚‹–•‰œŽ‹}š€~Ÿa‡’Ž“}wr|€’‹ƒr‡—}~€€|z‚z|Œ|r’…Š…€†Š†i•š~ˆƒ€”‡w…Ž–~z”Љ…”}yz†’ƒtŠˆ‡†w’|ŽŒ‡x„tvƒ{x‰Žƒ†…o…މƒ’’…‚˜~€|š„ˆˆ–Œ‚‘…ŠŽ“kv†||Œ€v“’—‰xu{•Œ‚zŒ‘|Š“v—‰‘‚€Œ„Š‹‰„…Œ‘‰‚~”“{“†‰‘{Œ–”–xˆxŠ’‡Šz–ƒ|tŽxx’’‰‰ˆ…˜Œ„„ƒ€z–„‚“Š€“†‚†š”ƒŒ‹Š‡„ŽŒ–Ž~‰•‹ˆ‘‰€’‘‹Š‹‡Ž‹•„‰‰|‚—‡…‡‘‰„†‡z†ŽŽŒ„‡‚”–Ž‚|”“‚€–†ˆ‘“ƒ~†˜‹Œ…}‘ƒ…‰ŽŠ}•‡ŠŠŒ…{ƒ•—Œzf†Žw|ywqƒqn|„|w‰v~rv€‘…~vr{|xv‰r{pv…xotwƒw€ru‡€‚{{}v€zwoy†~}uz‡y€r~wz…|o€„rhŠ}v|wƒ{yw~{‡„zwu‡mzzrxzx~os{{~v|rwj‚{|zvyyw—{v‰onvw‹mzvuy}…pxyyzzos}~…nu‚}w~~us€q{{vyqp‚uzrz€r‡}t‰z|t~|ywvqwyytvu‰ywv€uzxwŽvrvtutu~wwz‚u{ozuv‚z|}{€u}…Œr~€uw‘ŒpŠ˜†ˆ|‰ƒƒˆŠyˆŠhxƒ•}t„‹ˆ‡‘Žx~ƒ°q†‘€ƒ„€ƒs…Œ„Œˆ‘˜‚€‰‘}•‡{ƒv†Ž‡~ƒƒƒ~І}…|‹‡p“†Ž‡k‘Œz…†‚Œ…r‚y‡u{†•„‰€Ž}ˆ{‚„‹x~y‚‡…uŽ–d‡{~||e€Œˆ‡‰szˆxŒtƒ‡€ywy{l‹y…‡‚yކ„vŽ{o}†{‚ƒmv‚ˆ{ƒ}~‡uy}ˆ…€|€€rw…|y†~ˆy{˜ˆ“uvƒ}‡„ƒ‡€~jЇ|ƒ‡„ˆyy†zr~}•|}†y„€ƒ€€…‚‡zŠ|‹ˆŒ{t‚„}†„|l~Žy}ˆ†ˆ~’Ž…„}®uŒ‹„‚†‰‚xt†Ž‹„‚‰Ž“}{™“{Š‚ŠŒw}‚}ƒ‚‡}~~’•‚lЉ‹y‡~ƒ}…pzz†}t…}‘†}|ƒ‹…~…{€{‡„‰y‰}}Žw‚zv„wb„Žˆr{ƒzƒ‡zrƒ…sy…~Œ€u{ƒz€v€}Œ‹y}}}v…‚~vu…{~{„…tz‡w’‰wzts|vz‘~ƒ~…}†zvwu‘s|uu‚}vzwm†„ƒ{†‚{€uytxŒ‚v}‡vŠz}Žx„z}‚Œ†€tˆw}‡€‡ƒ„m†‹{}ˆ›–‡}Šƒ‚z´z{Œ†yw‚†y…›…Ž‘’Œ‡‰Žyˆ‘‡{~gˆŽ{†r…Š‚‚z“ƒˆ…‰yyˆ‚yŒ‰~}wz‚‡q}{‰xp‡„‰ˆ{‚’t‚Š€o‚}‰€}|…}}~}š||‰h”syŠ|~}“€‚us‚€s‚{‡sr~€}}„‚„‡ˆ‹€{vz„~x‰}‚s‰|„{ƒy–y{€|}†„uzzƒŒv}sy…†v‚xr}€†~}€ƒ~}z‹qu•}‡†wƒ‡y}…œy|epŠ~€qiw‹sf~~vŠ~}zvy‚xwzuy}q•ˆl|mvtucxo„mwqy…~€{jqur|vqax…xsm|„†orw|p…~l^yy~qˆnxx|‹}……vus‚ws}ovrr‚j|zth‡u…}pvp‡vyrywvvžtq€wqpzˆxptwnƒjzuzwykrr~Šnw„pryuowsp{}tlkyrusz~uƒzvwpzt}nvsspxyzy„ut~{zq‚vxwvqŒx|vrtrjo|wju€uzptxstsz€y|w|ˆ‰t€zxw{‘…ƒ†|Ž–~‹–‹“z‡Ž’…‡„~x‹•–yž~Š‘ŒŽ‘’𒆇–Ž‹Œ“…nމƒŠšr‹{‘‡~”‹‹ˆŽ†€—€–Šƒ“£Œ|i‘Œœ|‡l†”‡‡o„††€’…”™‚s‘–ˆŒ†Œ‡€x|Ž“†|—”‰Œ–}|Š„s‰Œ‡‚~ŒŠ‹Šˆ‰Ž}pŠ„…‡„–„‘‹’z‰‡|Š}„‡ˆz‘˜–†~–ˆ†ƒ„ƒ‡Œ~Ž€‡‚x„…€’’‹‡’}›vˆ•ˆˆ“‰ˆ“ŽˆŽŽˆˆ€‡„„‡v„‹’“lŽ€‡Œ€ƒh£nŒt‹vxl€–‡y{ €†}‰‡‘‡fsx|‡nŠyi‚~~y„žˆ~Ÿc“‡œz~|xwƒ Ž‚kˆ‚Œ{pc„†yo‚’³ˆƒtˆk€‹r‹s‚€^™d~n~}|sŒx‰~r€—„…‚Ž–ž„ƒ–°‡ŒƒwÃs‹‚‘Œ–¼†“‰‘…Šs†‚qqmˆ‡~šu~…ƒ„‹Ž€Œqˆ~lt…r˜€‹„€…€vpˆ~‹’•”‰……Ÿ‹ƒ‚—}„ˆ{uŠ~u~”w‡–†‰ˆ|zˆz~£~|Šxxy€„˜ƒŒ†wŽŒŒzŒ}ˆ}„‘—un}ƒ†Œxsxu|†qdu’sr”ytql€—•zzxu}{ƒqŽ‚yx~yx}pht|‰pwll„wvxv~sp„l€l|v„uvt~‚mxjw‹x}ru{g†{qw}pzu{z™‰„{wn–wvvtjs}utyv|}}Š{sws{sn{sz{‘ttyxt~x‚vuvuv…}k€z}zqsx‚bt}yzzvmqypywyvkt|sw|z}yzxxx|rqvvz€yu|€„}‚vw‰r€|~‰}€~psztov~~wmrc{}xs{xz}|w~}yƒŒx~y|{tŒ~v–‘ˆwuˆt|—‰„‹xŒl{…v†‚z„‚Žƒ‡{ŸyyŽ…zˆˆw —†iŽŒšŠ‰ˆ—tƒŒ€˜y{‰“•u‰—x†‚’zrƒ‰‡„|nwx”–{~}‡~…t{ms‡Œ†š’‹–Žsoƒ}“Іƒƒ‘‚z‰Žr–mp~“a{…~•€y}vv{t~ƒqˆy‹q„ƒs—z’…‚q†rƒ{|‡ˆj„„}‹|n~‚‚‰v‘t‘t‰€•tŠ|”{tv€Žˆ€¡oqŒ‹Œ‘‰t~|ˆƒ‡ˆ‚‡uz~s•Œ~‹†~v{Žƒ‡\~s{vox‘”xu€‚evŸpmqsw}{ym‚’€vvw|‚“–~z€vpsqqwj|‚wtmn‡~„|p{stƒqy`ttˆ{nu{prvxyxwkgˆsp~i‹qzw€…‡xw^y˜vwswkr~m~{rh†yŒ‚tzsxq|rzyzwšonzqqwvƒxoxvlŠ|e|{{u{hrw‚jx€wpsvtluwz|smhswxnw‚lwsstzsozvxw}z{vŒvu„{{voƒtz{|yˆy€nqxrnrzpttzwsxztwut~v}w€ƒ›tz{~wuš‹’Žw•”‚Žˆ”Š}|…‚‰‘…‰y‹“š”Œ…‰‹œ—‰Œ’‹ƒ‘”ŽŠq“ˆ‚’Œ‚”s†…†‰–‡‡‰ˆ{Šˆ†‡z‰Œl‹‡Š…‰q„‰…›~s‚Œˆ†~†…œˆ~’……”‹‡s‚x‰—|˜‡‰Œ™€y’|…ƒ„€‚t“ƒŽ‹Œ€‡€—‰ƒ‹…Љ~’‹„„†‰ƒˆn‹€‘ŒŽ€’„„Žˆ€„‘‹zŒ‘†‡”z‡…„…˜ƒ’Œƒ„„}…u‹ŠˆŒ†„”‘~‰Ž”‰‘ŽŠ€”|…ƒv†Žˆ‰’o’ˆ‚|vn{„Š}xz{k{mjsŠtx}{zk}Ž„wxr{}…y’‹y|~wvwri{j{wvultˆu{|j|rq€p}ez‰vŽypw€{o{rq…xx~usgˆ|sqmnzw€Ž~‰„twk€‹yxrwjq}oq}uiƒ|x„uyr}rsxyyw–ppyqtuvƒuouun‡{f{x{x|kpwƒ€my|{stusjuwt~{rnotwxpv€ƒtwrstys~qyvswxzzw†vvƒ{{xrƒu{z|y‰ymsurns~|vst{lrxztwww{v~w–u{{|vv†•ˆ~†ˆŠƒƒ†…†‰ˆ‹‡…†Š‹‰‹Šƒ‡‡|€”‚€‚„}…Šˆ‡w€†…†€‚‹‡‚‡‘‹ˆˆŒŒ{ƒƒŒ‹‹…ŒŽzŒ‰„‰ˆƒ„”Šƒˆˆ…„~Š„ƒ‹‹x’Љˆ‚‚|‘‘„ƒŠƒŒˆ‰„‡„…}ˆˆ…‚‰„ŒˆŽ†ƒ‰ƒ‚’ŠŒ‹‡‰‰Ž‰ˆ…‰‘†„ŒŽ‰Œ„•Œ…ŒŽ‘‹Š…†…‹†‚‡ŠŠ…–„Šˆ†‡Ž€ƒˆŒ†€‚„ƒ’†Œ•Œ€†„„Œƒ‹Š‹Š…ƒ„ƒŠ‰‚…“‰‰€Šˆ‹ˆƒ„}Š‹‰ƒ‡‰‹‰€’t‰‚–€ŠxorŠŠƒƒ†„‘…§•Šœ‘‚u¢Š„—„…€{{z†…‚І‘šƒŒŸŠ¤s¤•Œ”—˜gŒ”~u}Žwƒ”„’šŽ‰‰{‡”}Œ…‚‚z’‚¡†zm‹…xœ„¥tzx†‹‡q‘‘’€q~Ÿg—xŒˆ“—‘~†ŠsŠ|—Š““›„‹„{’Œ{x|~™‡‰Š‹Œ¦ƒnކ—Ž†ŠŒ‡}Ž“Œ‹‚w{…‚˜ˆŠb•vm„‚j„ŒpƒƒŠ›‚‰vЉЀt“ˆ„„‹‹p—‡Š|ˆ‡†v‘~ˆ‰†ˆ‘yŠ‚‚’{…–„xpl…|…€€€t|†thtv{…‰}|m~Іˆ‚xz|}މ|{‚wqwswxm~„ysp}†††{i|qruq‚l{–x~}tsƒ~‚srrxyzˆypk}nr€nt{v}ƒvwhŠ…z|yykr}o…zsg‹||ƒˆx{wu|u}zyzˆrm}ot}yypzxn…€b|p|tykvy…kw€xsswxqwzv{}vnou{{ox‚†pxquu||r|yy|}}}y{w„~zyr…r}|}{†{nq}spwylxx}swz|yyvy€w€y…Žv~z€wyŒ‘ŒŸ„z’‰†‚y‹m–Š…p‡€††„‹†‡‡œŠ”’ywŠ…ƒoƒv‚†‘zv‰’‘‘ˆ‡Š„jƒzŽ|„…u–‡…‰ˆ”Љ‹Œ†Ž’”yˆ‚‘…ƒŠwŽ‹ˆˆŒ”††v†“~}…sxІ‚…‡†”€‹„ŒŽƒ€…q’Ÿ„ŠˆŠˆŠŠŒ•‡”‹‘|ˆˆzt‚‚uzyy‰‹†Ž€‰ˆ†~ƒ˜‡ˆ’š‰‡‚‡€…‹„}†x~…‹„‡‡|’ƒ‰Š€~‰Ž˜‚ŒƒˆŠ”ŒŠ|tŒ‹‰ƒ~Šˆ‰ƒ•‹‰‹ˆ€„ƒŒ†—€l–“su{„u|€xs€‹lŒŒ†px€˜††‚t…m|ބޗ‡{…ƒ|ƒq}‹|q‚€mrw˜yŠ|šƒux‰x„|zp†ˆ‡}r€‚…|x~~ƒy„oŠŽxs…}w†yy{ƒ{‰ƒxpŠpv{~}„yw‡‚|}ƒ€yŠx’~y€~’ˆ€||}q|r„~„o{~šr…Šƒ}{€v††€s}|‡{~‹ˆn€|}u|…‰s|v{yyƒ|~ƒˆ{€€{zwŠŒyƒ‚…€€‡€†€€ƒ‚z‰zz|ˆu~~|x}}y†‘„‚†€}…‚xŒƒ‰{„s‹‡„kˆ…‰Šƒ‹’ˆ†–‚‚{‹–މ”Œ‰‘”ˆˆ†”kl…ry‹†“‹•ƒ{y…„‡‚n‹Ž}”‘ŒŽˆ}“„‚“›„~†‘†—t‘’Œxˆ†‹ˆƒŽŒt–€‹Ž‘…–tˆy€‹pˆ‹‰ˆ„Š„œ“„‡Š’Š–‘ŠtŒ‹Ž‡’Š’‹ˆ…|–€˜•‡€‹‰}‰‘’Šƒ’Œ‹™Š‰…Œ†‹‡—††Œx’‡Œ~—‰–ƒ€˜Œ‡”†ƒŽ‘—ŽŠŠŽ‹ˆ‹‡ƒ—…„Œ‡’~’ŠŒ˜Œˆ˜‡†„†s‹•މ‹‰Œ”’yŠ•}Žƒ‹‚pŽ•„–‘˜…‹{ކ’”‰ŒŠ€€Ž’‘ˆ›}’Ž~˜ƒ™ ‰†™‘†t‰…‚‡„o…‡‹v‹”Œ}‹Œ†‡Œ•ƒƒˆ‚ˆ“‰•z‰ˆj‚‰‰ˆŒl‡€†p…o„…Š…}ƒ’x‰ˆ‡†ƒ‰‹”…‚…x”Ž’’‚‰‹ŠŒƒ}‡}Љ“Š•‰†‚‹’€–Ž’††‘ƒŠ™ŠŠ‚‹Œ‚…}|Š’ˆ€Šˆ•›‰‡‘‹’Š‹™‘‚—މŒˆ‡}„ˆŽy‘{‹†‡€‚‰|‰uˆ‰Œ‡ˆ’‰ˆ„‹Ž‹Ž†“ˆƒ~‰u‡…’{ŠnŒ“„†~†~‚|‰‰€tw‚{|‘y†„k‰‚{z„Œƒ}~Š…‡‚·x{‰…€‚r‡x€v†Š„†“—”Œ{ŒŽ}Š„“‹syƒŽ›…h}ˆ„w…{Œ€Ž‹‡wŽ‚“y}Œ„m†|Œqw{ƒu…„‰y€‹ƒ}ƒyqˆ~‡†||Ž|zƒ}œ~~Žc‹x~ƒy€‘}{~tr„u{}~ƒzp„ƒw…ˆ„„Œ‰…z|wŒ„€}tŠx~|€‚ƒ{€xz•‹{{~w‰|ƒ‰~Žƒ€~{y{r—t}t‚ƒ‡y|yn†‚ƒ„z…ƒ}y|„qv–z‡‰w‡‰ymz†ƒ‡‡„‹muzt‹…ƒŠz˜…‚ƒm‰}|}—ƒ|Š~{®wˆˆ‰s}ƒŠ†usŠ‹‘}›žŽ‡€’‡x‹‚‘Š|€|“¤v}[„’’€‚~y¥‡Œ}Ž{˜Š{‰˜r†~‡pr|…~j…|‡ƒ{“‚y€ƒ…}ŽŽ€~“€~‚tƒ}“Ž‹tšc†Œ…„y}Œ|€xs€‰…€}v–—„vk{Œ–ˆ}~ƒƒ~|„{v‰…‚}q…}ƒ}ƒz|…“{|w|y~…‚z~‘v|{tw™v|w…Šwz|Œ…€}{€‚‚~†vmw•~~•—yz‰z‰qy”‰‡„z‚“t˜”…z‘‰ˆƒqŒ…‡”‡Š‰‘™‹™•‘‚ˆ†‹‘™Š‡m†™‡‰j„„ˆvv‡Œ‡Š‚|uŽq€Žˆs„€ˆ¡z‚œ†Šƒyƒtœu—c”‘‰›Œp‚£Œƒto}‡z†¨•“‰„‘‹ˆˆŠ|‚}Šp˜™y‘‡‡ƒŸ›wuy~|ˆ‘||”sŠ‹™‡††€Œ€‘ƒ‘œ†“œ|Œ’”}’•iЇˆ•’–›މ“•š‰¤„ƒƒzƒ‡˜›‡‰‘„‘‰{xx”šŸ|Ž—‚Ž–ˆŽ”}«„s•Ž}kƒ’y„zzŠn˜Œˆ‡–w‡‘ƒx„}€v€‰‚rrˆ‰~y‚‹…{ˆ€zy°u€€|†}rrŒ†€ˆ……މ|„x€}†Š„w†€†“|xy}|‡twŽ}†ŒlŠx€‚yŒ‹~zƒ|††„vvw…|n{‡Š}‚ˆx‰‰z‡wƒ†€y‚ˆ„ˆ}wŠ|x{cxƒ€}€}ƒ}„zƒ{q…qq€†v…‚‚ƒzˆw…‚{€xt†y~z}€v€€z|x{Œx||…{xz€}v†„~ˆ~}zx€˜s|~|~{wny€zzƒ~|qs}wtuŒ{{‚tx‡Šv…ƒŒ|f¦Ž§zŠƒ‰›‚„‡Žt~•ˆŽ„…¦‡™}‘Ž™}Ž]‹›t„˜r|}‘Š{¤ysœs}o†™¥£z…˜Ž…§ˆd˜„ƒˆB‘‘ª…“•™¢vo“€w‚š„„{‚{†s—z•y™Š—Œzs‡‚ƒje†>©ƒ„ny‘m‰…’‰­n’¡—’†—“„‘€z“ŠŽ“‡Ÿ‰zŒ”ˆ€‘œ ƒ|†Žš™{€•¨{™r˜™x˜‰z€Š|‡‹t‘•{ z{²‚…ˆ‚sƒ‹¦£‡¦—k}~kƒl}‡ƒ~›ƒ”ŠzŠ˜¡£¢y‹ƒ€‹q•†œ¤…‡›x–—–Œi•‚ŠˆŸy“‰sƒ“{‘Žƒo~v–‰…˜§ƒ“”’Œžšiwƒ…}„€‹“ˆ‰}b‡‘—‹‹€ž‡‡^‰€uz„–‡“x‡‚˜Œ„£‹‘„“|Š™‹vš~£Œ|ˆŽy˜€›„†Œ‘‚{s€ƒtyœ…wƒ”††všŠ•‰€¨z†—œo‰™œŽ‰˜–{y‘z›•‰t’„j~yŠˆ\І”z•’ŒŒ—‚š™{“Š—|Ÿ‹€‰‡{„ŽŽª‡‚‘ˆ‚ˆ€„‘œ“‰„‹…z–„ŽŠ””z†‚œ‹‰„„œšŠw…’Œ‡‰Ž‡Žvœ‹‹…Œ“”~’–‚—ˆŠ~…ˆ‰€y‘‰”„ŽŒ€x‹”‰–‹‹Œ–~–‡‡w‡™‰‘ŒŒnŒŒ€Šˆxr‘ЇƒŠ…’ކƒ…Іˆ‰Œ‘—„‘i”ˆ˜ƒm‰„}™pƒ‚„|ˆ„Œ’†Š”ƒ††Ž~„zƒx“•ƒ””ˆ€‰ƒyŒ‡‚x~ދЋŒˆˆŽ†ˆ‡ƒ‡Ž|‰…Ž~‘†‚“‹u‘†ˆ€œŒ‹‹•ˆ„”‹††‰•ƒ€|‰Š‡‡…„‹‚‹ƒ‘„’†…ŠŒu‰„„‰‰†—‰‘‘‹’ŠŒŒ‘†’€”}’r‘”Šˆ’oƒ‡Œ‹‚ІŽ~ˆƒ‡ƒ‚~Ž—‹‰—‰Ž—–‰–„ŒŒ–ƒ‰tx”€€’€‚€”’„xy“„‰‡zˆŒ‹Œ‰Š‰ˆ…ƒŒ„…Œ†“ˆŠ‹‘……ˆŒ•ŒyŠŽ†•ƒŠˆŒŽyŽ~†ŽŒtŽŽw‡‚‘†z‘…„Žˆˆ‰„zŽŽŒŒ‹ƒ‡›€‡„Žz‹„‰y‚‰…”“Š„ŽŠ‡”ƒ€‚Œ…ƒ…†‘‰ˆ|Šš}šŠ‚‚‹„–‘‹‰†€…•‘„ˆ ’„‡‰yˆŽ”ƒ€’ˆŠ‚‡ƒ€‹”…ŒŽ|x‹€Ž…˜”‰Š—€„‚‰…‡‘ŒyˆœŽ€……†…}ƒ…‹‡ƒ‰Ž‰r†‹‹‡ŒŽ““‹‚އˆŠ’~v†—†—‹“‹ˆ‹—‹…•Žž‡ŽŒ‡Œ|Œn‘Ž€‡ƒs’Žƒ—‰–ˆ†‰ˆ‹‹‡Ž’€‹hŒˆ‘Šl“„‚‰wŒo†ƒ‰‚}…~‰‹‡“Ž„~Žƒ‚{~{‘Ž“‚”“•‡}~Іއ‰Ž“…’Š‹’„‚•‘†ŠŠ‡Ž†‡ƒ’|Љ~}‘zˆ„‰‡˜Ž‹Ž”††•Ž‹„‚”€z‰ˆ‘Œ…†“€†‹…„’‚ˆ„‚{‹w’‡‰‡—ˆŠ‰‰Ž‰“Ž“€—‡‘‰s’—‚‹”n’ƒ†ˆ…ƒ‘ˆy„˜“Œ’Žx’Ї‡†“ˆx“ƒ‰‰¢™’‹Šƒ“˜“‰‘ˆƒŸ‡‹Šˆ„|„Œo‘‰‚Œ”†t‡ˆ“{“Š—Ž”‹‚Š•‰€‡…”„Œ‹i••ƒŠm“€ŒwŒqŒ‚‚‰~‡‰rŠ‘‘˜“{‡ˆ‘€}Œ}z†‘‚…Œ‹…‚ŽzŒ}ƒ•‰‰ƒ“‡„’‹…„„†”‹‰Œ†‡‰Š’މ‹„€’‡nˆ‡•‘Š‚Œˆ†–“’›}ˆ‡‹‡‡Œ€„š“ƒ‹Š‹Šˆ}ƒŒ}yŒ†‡‡’‘ˆ|”‘Œ–ŒŠŒˆ•tŠ˜‡Ž’oŽ‚ˆƒˆ{|‚y|‚‹‚~s‚“ix…Ž}{†’†q•~‡~…¥ut†‚f‰‹~…yˆ€ƒ—ˆ‘”‡{„qq“„{swŠˆ…–v~’‚}”|z˜”„k‰xŠw„ˆ†…z“ov„”}}’‘˜„sƒ…ry‹wƒz€{v‘‚„|~oq‚}ƒ|ˆiƒƒŸ„‹ys•{’Œ‘ukx|mt…xol{‘tŒ|€„t‘€ƒsyx†Šyw‡t…|„x‡‹}…zzz€‚‰‚††~’ˆˆ}‡„ysx—~~’†‚}~…lx—~~‚}„†Šuzyn–Œ†}~€‚‡Ž„‹Œ‹}™•ŽŠ†uˆƒŒ’Œ„Šˆ„Žy™“ƒˆˆ}¡––Ššƒš‡Œ“‰€”‘’n‡~Š‘y‘™‰‰~t‡ƒ‘•šƒŠ‘„ˆs“h|’m†‚}|p‹ˆŠ‡{Ї†wƒ€˜‘‹‡’…z•}ˆ}ŠuyŒ€ˆ…ˆ‚ƒ‡“‰†‰‘~‰‰—Š…ƒ‡…˜‡‰„‰’Žƒ„‚Š”ƒІ‹’”…ƒ“‡ƒ‡•†œ•އ…†…Œ|ƒ‹Žz‘zŠŠ…€€w”ƒŽ‚—Š‹ŽŽ“‹‰’‹ƒŠ††‡q‰–‡•…–m“€Š’ˆ†…Ž‘•‹†”Š‹…„Œˆ‰††y—”‹‰“šŽ}™‹ˆˆŠ‡†‡n‹Œ…Ž‹‰†u‡‚Š{’ˆŽŒ’‹‚„ˆŒ‚Š’””iВމlˆ‚„Žp‰‡‡}‹†ˆŠ“„€”‘‹ˆ‚‡z‡€}‹Œ‹{‘‰„‹z…{oŽ‹|”†„Œ‰ŒŒ‚s–‹„ˆ‹‰’”‡ŠzІ}ˆƒ‡ŠŠ{‘””‹€‹‰‡†”‰€z…‡‰†‡~‹‡‚‚Œ’‰Š‡‡w‰•†‰Š”ˆ”‰•Ž’‡†’}‡{u‡‘‹—••m‡„ƒ‹}w‚‹ƒ~y‚}}„~}ˆ€gwˆŸ{{…“‰}…}ƒˆ´w{ƒ{‚„ˆˆr~‡‰…ˆ†Ÿƒ{ˆŠw–†…z{~|}Œ{|~‚x‹‡x~€v–†Šk‹t•ˆr„Œ‹„v†Œ~o|}Š{vŒƒ‰…€‡ˆ{‰Œ„w„}{ƒ{~„ˆ„|y„“w|†vg†……yy…|„†qq~zulsyƒq{|’y€‡{€‹~‡…„z†z‡w{…x|†}}{z†t‚Žkw}vƒ€‡€€‚ƒ…ƒ}{t„~uw‚y„‚~yymƒŒsƒ{€„|{„‚x€z‘‡y‰€xŠw…‡ƒ‰†¡ˆ‘‚bvx~zzŒŠ£‘Œ‹‚ˆˆ–„š¢›Œs‰•€—‡e‰£}t†‚gpŠ“¤|¦Š‰uz‹Ÿ„wŽ€ƒh€wŠvx“o“{‘”|“±j~ˆ›{—n“’‚‹l”§}‘x‡†v‘˜Œ|ŒŽv…Žmƒz~–’†‰a‰Ÿƒs’|}}‹°Žœ€””‹Œ”…Œˆ•…Љ’ކ‡ˆŒ{‰ˆŠŠxjy‚€„…•š‘j˜v„ŽŠŠ–x…wfˆšŒŽŠ•„†Š{Œy‹Œ…‡‘™nv‹†„xx~Œ…„‹…zœ‚~Œ}xŒv˜…†“‰Š™ w”˜‚‘’z†‚v€š{b—‚mf}–~‘r~t§z…v{‘ ƒ}€{¡w–`ƒ’Š~rj}||zŠŠçˆš™‚Š|‹q€‘Ь˜‘±ªuw\‹›n–Ÿ„‡—‰…£š}’‚†Œˆ…w…ƒ’”~w~{v¦{~™s†s•†À¦ €Š‹Ÿ ywŠ™’z…fr¢iŒ‘ž€vŽ‚‘•ž—yˆ «‚‚Šyxz~}…Œq‚ŽŠ”•މ™|Žˆˆ™šŽ‡„‘†…~lu„}…›–‡¥‘ˆ‘™€zy~Š‹|‚Ÿw¥œ†‚{r–‘ix‰Ž…|~‹’–­x™‰z€”~Ž›“t‹x‰…€wsy{‚Œ|xŠŒx{szŽ~s“ކu„Œx€s¢v‰ˆ€}„{{s†‰…‘|~ˆˆ„|ƒ…yŠ~Œ~|yŠyƒ…vypyv{†u|Žv’††ƒk„|„~y‹s|~z‡ˆp|v‡†g†}}z|uo€r~€vŠ}|w{„‹‚Šy}{xŽxtŠpeˆŒz~ql…t‰|}ts}}‚nvx‚~ly€sƒy{|„p‚€fm}vtx|~|u‚zx„…ƒrz‚w}~uxvqv~z‚x…€zyyŽx—s|whyzzr|xot~{uyqz{l|v…u}xwˆŒr~|Їy‡‹…„v”Žˆ€…€~“”Š~•‘“‡‰‰‰‹‘‰ŒŽ|{ŒŽ‚‘‡‡}•ŒˆnrŒŽŠŠ~}–‰„‰|ˆ{t‰…t{ˆŠ…€ŠŒz‘…ŒuŒŽŽ†™|†…˜ƒ„t‡‹~‡w‹‚‹ˆ„~€Œ˜ŽŠ†‡ƒ’ƒ€}”‘ƒ„އ—u|Љ}ˆŽŒˆ~‰‚ƒž‹Š‡‘ƒ‡’‚ƒ†“‚„ƒˆŒ‡y““І—ŽŠŒ‹‹—”ˆŠ‚Œw—‹ …‡ƒŒ‚ƒˆ•Œ‹—‡‚…„‡Ž–„ˆŠ‰…™}ž“‚ˆŒ‡ƒ‰‡–ƒ‚“‰„‘Œ†zƒƒkˆ‹‡Žp’Š|kˆ}‰ƒ††wŠ˜ˆ‰€†€ƒž–‚–ƒ‚‘Ї‡‘in™uz‹Žœ~›‹ƒŒ{“š…‹†o›‰‘i‰„pŒ’‚„‡‘„zŽŽ•–š‹‘–jŒ’€ˆ‰šŒ†…–u {‡Š’‚—‡•„Œ’ny~€‹‰‡Š‡’†‹„‡™†‘‹›x‹…‚†Œ…ŽŽ˜‹–‡Œƒˆ‘ˆŒ†€Š‹œ„„{Œ—‡™ˆ”r™‰Š’„–Œ……„€‘–ˆ——‘†‹‡|‰‹‰‘—“ˆqƒ††uv…’’““…„‰‘•ˆ‹‹•z€…†€”›‘ˆˆ”އŒ’Œ„Œz‹ˆ‹€‰}ƒs}ƒx„{{Šv†„mv†y|ˆ’’x„}|®z‹„x‡ˆ‡y{€Œ}‡†”Š|ˆ…x}Š„|‹‚‘zyx‡wކ|ƒ{s‹~i‰xŒ€z‡”€}…‚„~‚oyxŠ}t‡‹”„w}„‚x€|}…y€…{y„|ƒ|}z‘~{|‘bŠˆ‚{u‚}‰†~r„~zp~€ŒŠw€‰|‚t~~x†€„‡|z‚zuyww‰~|w|w}‰zyy{ƒw€‚…„~|zvv~˜s|~u~€zx|yp~Š‚y‚z}|rru‹‚y…†vŽuƒ~Žx•Œ†ˆzŽŠŠ‡Š’—ƒ‚‰~’‚t’ŠˆœŒœ‹Œ}•—Šƒ™‘¢ˆ‡‚ƒo‘€‹‘ŽŠt‹~¦Š˜ŒŒŒ‡‡‰Š„Š—§‡~‘‘j•Œ‘Œƒl•ˆ‚ƒ}‹p‡‡ˆ€€Š‡ˆ‹“|“šŠ|…ƒz€}}ˆ‘‰}™ŠŒ‘Š|ƒx{•Љ~“‚’‡“‚n‰œŽ€Žˆ~‹‚ŽŠy…‹w‡‘‰~‡~“’Š‘Œ†‹ŠŠŠ†mxŒ‹Œ‰‚…Œ†„}‘”††…‡|x•‹„€†Š‘‹’˜‘‹”yŽƒ‘‰uˆ’Š™—šm…‰‡}•‘€{„‘“„˜—ˆ‰y~ŠŒ‰‚‘ˆpšŸŽ‡Ÿ“ŒŠ€‘œ”‘ƒ“›Žˆ‡ƒˆ‡oŒ†‹rƒ‚} ‰Ž‹ƒˆ”„ˆŒ}‘‰i”Œ‰‰mŒ‡€’|…qˆ‡‰†}†…Š•€”‰‹Œ~Œ„z…‚z…Ž}—€Ž„Ž•‘x‡{xŒ‹|ˆ”‰ˆ‘‰~‹Š„‡‹‘†‡Œ‰ŠŽŒ”|}‡„‰“„}‰‹zŽ’ŽŒ‰€Ž‡‹‰”“pŒŒˆ‡‹‚ƒ}‹€ˆ„ŠŽ„ƒ‡ˆ†Œxƒ‰ƒ„‹w‘Œ‰“•„„–ƒ‰€ŒŒr‹…™‘nŠ–…‡†‹†…•˜“ˆ’Œ—‚z{‰…Œ–Œ‡~”‰žŽ‘‘‹‰Šž–‡†‡’‹‰wŒŒ‘Žn„„‹ƒx‡Ž‡‰‰…†–™}‰Žƒˆ‘ƒ‚hƒ‹‹Žm„Šš€Žpˆ‡‚‡{Œ†‡‰‹ˆ‘‰†Œ‰Žƒ}ˆz”‰|•€…‡‹‚{‹‚‰‰|„—‚ŒŒ‰Œˆ“€‘‡‹‚Š„ŠŽ‰†‹€†‰Žv…†„Š“’–Žˆ€ŠŒŠ†‡—Œˆ‰‡‹‡”}†Š‹„Ž‘†…‡Šv…ˆ‚Œ‹„”‹Šˆ‘‹ŽŽ‡ˆ†~‰Šs‹’‰‹‡”l}‹„Ž~qw“…p~„Š‹’’z‡‘–‚†x‡Œ‡€„…‘Ž‘€€ru€w|Š™Œ”‰‰”w”†”~v‹”~„‘z“˜‡‚‡Š‚Šˆ‡š’ŽpŽˆ„Œ‰w’Ž€†‹œx“ˆ‡˜…Ž„ƒ—rƒ‡ŒˆŠ†”‘ƒŠŠ‰z›“y¡‡ˆ”~…ˆ™w™–„†—t„ˆƒ‘†v„‡‚ˆœ‡Ž›y•‘“ˆ”ހЇ‰ˆ…†ƒˆŒ~Ž‘‰†ƒŠ‹›„™ˆ‰{–ˆ€ˆ‡Š‡—Œ‹„ˆŽ…’xŠŒ‹“…zŽ‚‹““†‹…‰~…šˆƒ‘‡ƒƒ}‹Š–€’ˆš‰Œ|„„‘Š”…‚|”¥‘ƒ˜‹’‹Ž‰š‘†||‰’މŒ‹ƒnˆŠ„€‰ŽtŠrŒ€Ї‹ŠŠ…€’|˜……™“~•‘i–‡š„m‹“€Žƒˆp„‡•ƒ}‘‡˜‰™y•Ž•}Œ‚}„|’‹|‘~’Œ‚ކ{‰€k‚‹Š{“‡ŒŠ‚†‡Œ‚u‹„Ѐޖ‚”‹‰{ŒŠ‡Œ‘ˆ€†‡Œz”’𕑇‚”ŠƒƒˆŽ‡}Ž‚‡Š€~†‚x‚Œ‹Œ˜„Š€—v„ŸŒ‡‡”‰‹‘‹ŠƒŒ”‡€Ž{y‡u…ˆŒŒn‰yšƒ{nŒ’Š„‚Š{Œ’‘ƒ–ƒ€œ‰–‘ƒ‘““ŠŒ”jmuz‘‰‹ˆ—†|y‡†Œ‹‡q“–‰„Ž‚€ƒ‘Œ„”…~‘Š™„…‹’ŠŠ‘n˜’y„„•ˆ‡Ž‘“už…Šˆ…}–‡€‡‚„†s€zˆŠ‡ˆ€Š–’†Šˆ”„“†Žwˆ‰„†‚‰Š‡‚–™Šš–Љˆ‘…ƒ~—‡Š‚‡ˆ††ƒ‹w”‰…z•€•Œ“{…‰…‘‘Š„¢—“‡ŠŒr‡„…‘ކˆ†tŽ…‹‚‚…Œšƒ€‹ŠŠŽ‰œ‡Œ™ˆ†|ˆ”‰{‘Ÿ‹…†–ˆŠˆ‰ˆˆf€Š‘qzw‚qxˆssn€}ƒ€€‰q}‹‹„yn€}~{xŒ†q€ƒxx€wz|y•‡v‰sv‰†{uo{”…x~–y‘‰xs…mŠr„|sƒu€|r‰w~„}y„|||k{x‚‰q}…r|u||zƒ€tƒv€„kzp‚pw|{xƒ~ŠŽi€“l{{}|{lqxw}|uxes‡}…~†|…‰}ry€y}{|pˆw}q‚sƒp’|}xu{|ou{{wy{p‰mz€o{z‡z•wzwˆwx{}{t}‚z|r|wq‚ƒ„r}‘ƒ~‰}‡‡u}‚t€|’‡ŒŒv•™“‹Š‰’ˆzz‰‚Œ“‹‰‚|Œ‰~ž’Œ‰‡ŽŠŸ™”Œ“…˜ˆˆ†ˆ–ŒŽn‘‡ƒ‹ˆ–vˆš†Œ‚Œ‰†’€–…ˆs‚‹‹h‹Ž–m…ˆ€—{€oŠˆŠˆ{‰‡‰€‡†‘‚ˆŒ‘ˆ~‡}z–’}‘‚Žƒ„yŽ‚‹ƒ‰‡}€•ƒ‰™ˆŽˆ‰~‹•ˆŽ…‡†’‹…‘Š‚„Œ”u€Š‰‘ŽŽŽ…€‘‹Š‡‡—™˜Œ‹†‡†’z„”ƒ~Š‘Œƒ€†‚w‚€„•‰‚…ŠŽ•ŠŒˆ‘‡†……q‰’‚m‘}‚…Œ„ƒn††~Œuv„u|Œ‡‚…uŠz‰€•†‹s„‡‡‡“…ˆŽ|~~ޮމx€•„‡Ž†u™…Œ‡‰‚wf–‘…tx{~…Œ~vqz{‚šˆs{Œ}|ƒŠ€vƒ{‡q|}‹~v‚ˆ‡‡x}|ƒ{”†v~~ŽŽ‡‰ƒƒ€{„…€ˆƒƒ…ttŠv…„Šv{˜}|{‚~–{…€‚Œw€›‰ˆv‰Šy„—‚q‚|€„†“w‚|{|Œ}|ƒ„–†’xƒ‚ƒ|ƒv~x€‚y„ƒ‹ƒ‚‡…†„y…ƒl‚{„u…uŒŽ|‚{—„„}‡}‹ˆˆ†|Š{tˆ“xvƒw„Š€u†’yu€‰umŽ~Š~|‰ƒ}}z¢~„‹‚s{yuqfƒ}‚~„ŒŒzx‰z~€…‚syzƒƒŠuvrƒ~w|u|…|‚…~k†x„€zy‹~~v‰‚‰zzwt‚o‡k|~‚t~€wszuy‚v…xyw|‘‚ƒt}|x“xyz„gvq„z|n|‹u{rs„ˆ€yy€rrx{r~zyƒ€v}‚|rm{tus{}wƒ€wtƒvz{wy~syt‚yvz‹}‚wxxm‘u|w~tzrymz†~{yt}{xyŠvzyŒy{Šyx‰v‚~ŠŒ†ˆaˆˆ€‚xxˆut‚y}|ro‚‚„ˆy~‘Žu~v€‰‚–ŠŠ…‹tuvw‹~«€v‰~“{ƒƒ‹xr€ƒ~w\‹†yw{x~‚†{zŒyqww‰‘x}Š~zˆ~{y‡|„uvz†…qx††p|y{xŽŽ…{|Žˆv‚t…ƒ}wz~€|ˆ‡…„sy†x‡~€Œp‹~•tz}|xuˆ~wx‹€‚€wq‘ƒq}}ƒ}nƒ|}{…‹r{uƒ…|{ƒŒƒ†x€}x~†~n|ƒ‚wƒ‚€}€ƒ|{„ƒvŽ…ƒh|}|m~}zx™Žrƒ‡‰{ˆ€…‹y|y’„wˆzxŒ†‚uzy~„xys—‡w{x}up‹…z~w}|}v¢z‰ˆ‚xvpy„†}…x€…Žz‡z‹€…vy‡{‰ƒvˆƒy|tz€€zŠ‹yf„{z~yƒ|y|‚}‡€tuyp€€z}y{€uuyx€…vˆzxvx|€‡v}{w•tz‡oe€}ƒzzqrŒv}r€ts|‚lr}{mmz‡{z‹pr|z~‡‚cn„yu||~yt…uxyƒ…q{~wr‹{uxy~zuyŠ€‘u|zxv‹sŽs|xl}}vwwyk{~…vypyz†mzv‰t{„…v„‰p‚z„~y~x‚…~މ‚u€ˆ‹z‹v}†€‚ŒŠ‡‚x‡Œ€„|‚„{|}‰†ƒ‹†ƒ|ƒ™ƒŠ‰“„‡‚{v‰‹„’}‚„†ˆƒ{€Œ~„‡…{ŽŽ}|ˆ€|…|uzy‡‘‰~€tƒxŠ‘ƒ‰Ÿ“‡ƒƒŠƒ€€…ˆ‘Š‚uxˆ~…u~‰Ї~p’y†p€x‚…Œyz}‡ƒˆ~…wŽ„€|p}†„„•†‰‚|„‚ƒ’xЉ…ˆ~|z~„Šˆ…„}…€…Š‚ƒ‡…z}‰€‚‰‡’Œ{w€…†‡Œ‡„ƒ‚ƒ~‚…ŠŠ„}zƒ…}ƒŽˆˆˆŒuŠ’•ŽŽŒ|ŒŠ‡…Ž‚x‹‹‚Ÿ˜ˆŒˆ„Šœ”—އž‡ŠŒ†Šo‘ˆ€Ž’Ž”rˆ˜‰‹xˆ‹”‹ˆŒ‚ŒŽz‚ˆhˆ˜‰ŒmŽ‚Œyƒo‹ƒ~ˆ}‰‡w†‹™‘‹…‚}}w”…Ž~€…Œˆƒ„xŒ€Œ‰ˆ€…”‡‹”’Œ‰Š~ƒŠŽ‹‹‡††ŽŽ‡…Ž‰Šƒƒ€ŒŽq‰…ŠŠ’Šƒz‹Ž™†ŠŽ‰‹ŠˆŠ€†”‡Ž}‡‚‡‘}‚vŽ}€‹‰…•ˆ‡Ž•‡‡ˆ”€Œr„—‡ˆ—m‘€‡†{d|†‚ˆyx€vsŽzty†u†€€xv~”І{v{x}‚~’‹}‚ƒv„}u€r‚Šx|ox‰y~}s}uxz}w|€yŒvv~x…yˆ‚u{ywxx†{{z~{…{|y~’~‡uxt‰q}||wx{q{z{y„{‚z}s~}ƒuz{|zŠww„tu{{uw{yx~oxszzw{wx„Ši{~xy}€rx~uzsl}x{vzƒ‡uzvŠxz|€x|‹u~v}|x{z€~qzyƒt}~‰}Ž{€prvl‡€|t}y~nyzxŒ|{‚~|‚xtƒ‚s|}hz‰†‹zwƒqs›wqwtoŠ„‚zr†—€…wu}zwŠˆ‚‚sqrwy‚ˆx~lv{„yuvr|€{p~Œrˆ…kx~uz‡ƒxuyv€u‡yv{|†||x|—~ƒyxo‹k~€ƒzzy{m€{w~~|zŒ€v}rŒ{lz{{z†x€}v†€z{{}ƒoyw{zx€zvƒ„sˆ~|uv}…p|x€lvxmwy|pyƒƒp{ysŠqy€w}’y‚y~}~u{v}}|xuƒx}~}‹|€yk€{n‚ƒ}q|x€jx{z|–‹xƒŠˆ~~|ƒ€‘y€€~‹wv…ˆ…rƒŒŒ…‰‹‚‹‘Š…ƒx†ŽŽ{}‘ƒ“ƒ€Žxvy€“Œ‚˜‡‘†u‰Œˆˆ…–‹‹~ˆ|“’˜•Œ†„†Œ’‰—¡‰–|€t“ƒŒ‚“‚t—Š‰ŽŒ˜}ˆ‰„‹’‡€–‹”•ˆ‹•rpŒ†„ŠŠŒŠˆ…‰š€šv‚š|‰Ž}‘•„˜ˆ„”˜‹‰‘•v~œŽ……‘Š•ˆŽžy‚ŒŠˆ‘ˆ„„ˆˆ‹„ˆƒ†…ˆ”•Žƒ‘’{…”}‡…“‘qŽ…~Œˆ€˜’€‰•‹ŽŠ‚‰ˆ‰ƒ‹„~‰“’’‰~„‡ƒ†Šy…‡z`® ’h‰„~on‰‡wlmq¨“ŠŽ{wŸzf€Šzy„|f‚{sŠ|†—yŽw{…vruss}qŒ…€”„…zz Šd‘y‹ynqf—ƒ‰‚‡x~uxzŠp˜qoŠ~‡‡cxŠvƒo}Šo€‚m{yˆ€‚†ˆ‚™}oŠˆzˆž˜v~€’—ˆq|}’{i{‹€„m‡ŽˆŠŒ€Š‚p…‰„x~s|r|ˆ’y…ov‰…‹•g†•”}~”‚šy…ƒt„€~r‘•w’ŠŒ€z~ƒ€–{‚x‘yl‚q}އyo~ƒ†zq‚‡š‰vƒ|†‚Ž|‹ˆ…t‡‚†–{u‰r|€‚{„†s{‡¤wz‰†ƒ~€ˆ‰{yn£z“…s‚„rsv—Š‚€ŒŒ‹{‚‰ƒŒŒ{‹n›Žs}y…Šƒw{w~‰‚‡ƒ~m‰z†‰|…Š€ƒo…†‰u{{‘sr€py…y}‹z„‚xw€{ˆ…‚yƒp~€x~zœz}~“`ŠŽ‰qq‚hx„}s~ƒit{xˆ„v{…u}‚v‚„‡†|v~wy…vu€}|{~…r{‚{y‹xpzw}}w‡›ˆ„|~tzxzw’t|wtƒ~„uzyp€Š}{~ƒu|}pnt—‡}„ƒw‰„xx}{‡vˆ–x‹™|€Œ~z‰‡}•}…ms‚˜‚||Ž”…”Ž–‚Š‚œo†’}{ŒŽ‘„„“€€ŽŽ”‰‰œˆŽ €…ƒŽˆŒ‘„ ‘}Ž—€‚‚|†ˆ•„y…{‹„„”y„}sŠuˆŠˆwŠ~|š}Žv~‹’ƒ„‚’v€™y—~z|…Š„l„{„€†€ˆys€‹zv‚˜z|z„t–Œ‰p}Šˆ„œwo‰ˆyœ†r€t“~‰z€ƒT“‰tŽž‚„Šyse†ƒŒz…~Ž{ƒŸ‚nŠr•œ‡vŒm{¡ƒ}u‰ˆz†ŠŽˆ™~|‹›†|~ƒ…ˆs†œ‡‡z}šŽŽƒz|ˆ€ƒ™ƒ|„|”›†‰ˆŽ””ˆ‘utš}‘‡Š‹˜Š|ot‡Š“…xœž†„’„†y’‡’}Œˆ‡œ‡Š…‹‹‰|˜v‰…‘‘‚‹•˜Œ|v‚‡‡—‡‚…Œ‚v•ˆ†€Ž€†•ŒŠ‹‘†}‹…™o‹~—’Š…‹~‰Š•Ї„‡˜ˆŠŠŒ’‹”˜ƒŽƒ„™„‡Š‘ˆ‚“‰‘Œ†‹€„Š™…ˆ’”Ž…ˆŒ†ˆ•““„ŠvŽ~‹|†~˜†‹ˆ“}Ž—–‚‰“‰…ƒ„ˆ…{…–†…ˆ‡–ˆ„‡‘‚‡“‰”‡…†~ƒ“•Š‚’“x‹„Œƒ†yŽ—‘‰›‘‘Œˆ’–•„˜’˜ˆtŠ†Šƒn’ˆ„ЉsŠ…‡ˆ€™ˆ’‰‡ŽŠ}”€’…Š˜§Šx‹iˆ–‚‰lŠŒˆo„‡Œ„~‘ƒŠ‚’„‘ž‰ˆŒ†~z|z™‰Ž{”ˆ˜}}Žƒ}‚‰‹Ž{’Œ‰ˆ‹…І‹ˆ„Œޅއ‹}‡…€~ŒŒx‚‰‰ˆ“œ‰€–‹‰”“ƒƒ‰ŠŒŒ‚–ІЅˆ’ˆŽ†z’vŠŒŠŠˆƒ‘†ŠŒ’‘ˆŒŒˆˆ–‚ˆ€ŠsŠŠˆ‡m’ƒ•‡‚yœŠ†tœ’‰ƒ‘„‡}ƒ‚ŒŒt‹s’Ž¥„—–‰†—š“‹š•ž‹Šu†Œ‡‰‚o‘…Š‘€˜t~ˆƒ‡°‹“ŒŒ’|•’†‡Šš£…}‰j‹…’„l†‰}Šo‡ˆ‹…~ˆˆŽ…Ї}‘™‡ƒ}Œ‰x}{|‡Œz”„’ЇšŠ|€„Œ‹’q•Š‚‘’‰…ŒŽ~Œ—‹ƒ‰‘€‹Ž†‘•y€…w„‡w†‰ƒ™ŽŒ•ˆŠyŒ‡‘…’”zƒ‚Œ‘ˆ…ŒŠŒ‰Ž‡‚}|w‰„„‡†‰†z“‹“ŒŽŽ…Œš€†~Št‡Šˆ‰Žm~“‡~}†ˆ‡Œw•”Š‚‹Ž€ƒ‰ŠŽ†r~yŽ‚x¡|”‚‹‡ˆ‡ “––šœ†Œ™‰ƒ”Šo‹~ŒžuŒŽŒŒ}’‹Š‘–‡Œ’”‹†‡•˜ŒƒŠj†‹m„ƒ‚pŠ„…‰Šˆˆ…‡…‰š…z†‰}ƒzzƒˆ{Œ€‹‡“‚†y†~†Š…Ž…“‹‹˜ˆŒŽ{{…˜Š‰†‡“‡Œ‰‡†„w‰‹‹ƒ‹ƒ‹}Š„”‹†Œ‡‡ˆ‘‹„‹††‰ƒ†~†ƒ„y‡€Šˆƒ“}‰w“€ƒ‰ŠŠ’Ž„”Œ˜”‹‹—އŒ†‡…r„•Š›Ÿl‚Ї‘‚‡w{‡yv|v€‚€tw…†t‚qz‘}v“}}q‚{†lŸy„†‚z~qrv—„†‘}z‡ƒ{{x€wyv‰iŽxxxxsr}‹yx…qx†‰}f‰}|tzx†pyx}†ƒvttƒ„n}„m{yv~u~ƒw}tˆ{yvm|†€†y}zv’z|Šag}ˆsufut†wzuttysmlq‰yizˆm~†vx~‚s{~}gkƒuwtt~yt‡}w|xm{€vzs{uwy|stzxqwƒzxx|‘t}xbzysxxpsx}vyszzq{„jxwƒt…Žqx…ov‡‰}||_‚€‚{wt{zxix†”qŒxwxy•{}vo}hu}rˆ†v€ytpuofr€‚x„no}…~u~|vw‚‚rbvŠp‚urŽyzt|u†y‡`€‹t^Ž}|€zn|t}~v‹‰Š‚wx„dy‡yvyw†ou€ys…ur•tstiv}{r€uuvœtm‹tfpwŒm‚vn~|qdsx}xqgszp…qu|zrq„mw~}qzuxppo~t‚|um~~o„qqq|svqpowzyƒsppŽ~|r€qxttkŠu†uwsszs}lrn„tzl{wrƒxmx{ƒtw{’†p{ssrƒŒ‰t}Œ‹‹ƒŒxˆ€•}„Š•‰Ž–Œ‰‘Š„•pzywj‹”‹ŠŠu“‹Œ‚}‘‘tŒ‰•y›‡†…‘†‰€€”‹—Ž‘†{‡ˆ—{Œ†…““‰ŠˆŽ›vƒ~†Œz˜Ž‹ŸvŽ}qŠ‘…Œ‘…†‘‡‰uŒ’ˆŒƒƒ‡’„Œ’ƒ‹“Š”ƒ’…ž“†‡ˆŒŠŒˆ€~‚’’Žƒ†|’}‰ˆ€™—€Œ†Œ”‹„ƒ‡€‡r’ˆ‚‹–‹‘ŽŒƒŠŽ…‡‡ˆ‡”„„|Ž––‡ˆ‡…„”‚…ƒ…˜‰‰Ž“€…‘“Œ‘…€Š‚ˆƒ“„y}„}zyz|{rŠ‚Š{{{†p‚|‘{}}y‰{~z{šx€†}|xv‚luƒZ€|~t}ކwŽ…t}„zsxŠw}Œx|uw†ux……‡w†‰xi’€˜|wx‡}€{‡{„||wvdƒ~yp‚w{yt€€zvˆz~wqz}zxz{w•yz|~jt†w~‰uxxŽ{zxt‚py}€‡…nx}zyw{r}{|‚€‚}swvv{€xn†€r˜~wu|xuƒ„‡xxxywvt…†…|}‚wv{l–q}y{k{|i~{lw„~}yy{}{z{{v’›z…uw}Šrn~{|އ‹ˆ•—‹•Ž‹„~“„ŒŠƒ}ˆ‹ˆš—™‡™šŒŒ†›…‹‚‡z†Š‹o”…~“…vŒœŠƒŠ‡“ކ†”‚‹r–ƒŒŒi†€Œm‘ˆŽp‡oˆ‚„„{Š…x‹¥’w†„Ž“€|€w“„–Œ‚’‹†||“„‡…ˆ„—†˜Ž‡—ŒŒ‰†ˆŽŠƒ„š‰†ŠtŠ’w†Ž’‹“Œ‰„ƒŽ•’œ„–˜‡†‡Œ…—›~—„‡„ƒ~‡~xv“s‚Œ„ƒ’Ї„ŽŽŽ“ˆ“„’†‘{“ŽpŽ–~Š~’n‚…Љ|†‰‹Šn’’‡‡‘‰}ŒŽŠ~Šv‹„€¡’ŽŠˆŽž‘•ŒœˆŠƒ†Žoˆ‚Œ‡˜s‡‘‹Œ”‰Š‘‘“Ž„•‰‡Œ’‹‹ƒŒŠiƒ’‡‘mƒ‰~‹o‰„‰}Šˆ€†ˆŒ†”…‡ŠŽ…|‚|z’ˆŠ}•‚‰Œ{‹…€‰‡…}‘‹Š‘’ІŒ}‚‰‰‰†…†ˆ‰…’ƒŠ€~†ŠŽqŠ…Š|ޑމˆw‹Šˆ„•މƒ‹ˆ‰•€‰‹‹…Œ|‹‚‹‹}vˆ~Ž‹‡”Љ†’Ž‹‘•ŠŠŠ’†‘ƒˆ†s‡”‹‹–l~‡‡‰„€dƒ‘‡w|p€mnyts€ˆszƒy~sŒ—{ouw~w‡s•ˆ}x‚|}}uƒ„}{‡{ypƒŒ}z‡€„v{t‚z‚wˆwqn|ƒ‰r~€v~vu{|zw…ypw}‚}}x€“y„…nxp†knu†~mzzyxyˆ{“}p|q‡rtx{zy˜~}lr„{}trs|ƒjx|{x€fu}„…nx}x‚|{uo}€ssoƒyzyv‚|o‚yv}€{{u}€z{z|{ƒtz€ƒ|sxw‚v}~{|{€hxttrx€{v~u|fwzwtŠwƒƒ}}xv‘u€„mv…€r‰˜‚~w…wƒŒ|~yƒ„k{Šˆ{{„v†ˆy—zp¬xƒŠˆu‹ƒtztŒ†‹…Š™›†‘‘}”~–‚€‚w‹ƒ€w‡€~}z†‰Ž‹{tv„y†Ž~|f‰‰n€{‹{lŒŽŒ‰‰}|ƒ€}~wu‡z€ƒ|†“y„€y‚}‚yp†–\Š€‰ƒ†l‚‡~m{†ts…‡{}{xyj|x…Œx‘~y‚‡‰Ž€xpyyzy€x~}}Œ{zˆy‘||{…z{„r”t„~‚zy™vx}ƒ€‹„€ƒwh‚†z}{~‚~€|~vŒ‰}†xw…y‚Žzt‰ˆs|z…‡ˆ‘q—•‰“ƒƒ€–Ž…˜Ž‘Š}mu‡zx•ŒŽv—Љx¤•Š„v’”Žˆbwtˆ…j†‰„€„Œƒ“•Ž˜Œ’¡t”‰”€Ž‡|‘•Œ€ŠžxŸ‚‰…x“Œ‡ˆƒŽqƒ’†Œ‰ƒ„‹~‹‹Œ…}…‹˜}‹¡}Ž…„ƒ‹ŽŽ–ƒ’†‘‚‡n†€„€{~€|“ ˆˆŒ „ŸzœtŠ”†•‘…ŠŒ|‚„ž„ Ž„‰yzŠŒ›…Ž’™—w|””…|€‚ŽŒ•‰‹Š…Œ‘†‰~‡•†‚“–šŒ|šŒ‡‡“„s”‰|_q’†•z{nzˆxotˆ}z‰†}{lwއƒ{{{x~„…ˆ}yv}tg{f{uvxn„x{yc|wwv}sy–y…~uw|rzsv|}zŠzsiŒstq~r||‚†~{wo‘ˆyzsymu€r~{wf~{{~v|svtv{zzy™rq{qs}y„qrwwo„}e{w|x}osy‚nz~svywpwyyt|uqtvx{ry‚w€xttv{u€szwvvt||yxx…~|zs‚s}}|z‘{€ptvov~zxv€xzouz|vzxx€z~x€‚ˆwz|wxxŒˆk‹’‘‡€wŠ“z‰z•{{“”„”‡ƒ‚Œ–mw’twˆ„{‹šŠ‹wœŒ•Œs–—‰zŽy•zŽ‘‰…ЇƒŒ‘‹ƒ””Ž’p‹—}ЄЕ—‰‰”™u{x†‰ˆ‘w›Œ„¥|˜|oŒ™Ž£ˆˆ…‹’Œ‡Š”}}ƒ‘Ÿz‡‹ГЅ‘„””Œš‡•Љ‚ŠŒ†‡|~‡•‘‰w›•Š”€–~‘Š•—”‘‡q…r—„œ‚‹Ž‰Ž’‘„’ ‡|‡—}ˆ€”—™š‹’‡„ƒ‘‘‘‰…†‹„‘€‡‘ƒ’‘‹’Œ€ƒ€Ž…†•–ƒ€x€“„ƒ}€|‚…~z‘‹~uzŠz„~Ž}Š{u„|wmšy†|}{|pt}‰oƒ}‡„…z‚„y„€|{q|t‡ˆx†xŠ‚{ƒ‚~…}‚”vn‡„ˆ‰‚{~…‰ƒŽƒ}o‹xiƒˆ}y~€Šu{z‰Œuˆ‹sr|†~xt}|uh‹‡}‚mw…Œ€…y~|’|†y~z‚w~„‹…†}s~qƒ€€‰„xysu„{x{z‡Š~yv|€‡|…„xxt…rx†‚…•‚l~„{xy•s~}ƒxzˆ†v}ttp…ƒ…|uƒ|wo‰‚ƒƒl~‡Žz||y}‹ƒŠŠ|‹‘Ž’~’‹€‹ƒ„‹~}ŒˆŒzž…”‰ŒŠ‰‡Ÿ“Ž–Š™‰Œ‹†‹pŠŠ|ŽŽwˆ…v{ŠŒ“Ž“†Ž‰•‘…Œj~•…ˆn‰†„‡‚q‰€†€ŠŠv†‡‚‘•‡…Š‚{‰~|’ˆ„Š~‹„|„|ŒwŠ‹€“Ž”ŠŽŽ†‡‘€~‰‹‚ƒŠ’‹Š„‹‹…ƒ‡ŽzŒ}Žˆ““’Š}ŒŠ‰†‰“‹ˆ‡ƒŠˆ‰„Ž}‰„’‰“ƒ“€‹y‰€Š‘Жކ‘ŒŽ“„ŒŠ‘‰†„…w†”ŒŠ–n€€†“ƒq†Žm‚‰Š|‰Š„‰€—…|ƒŒ‚‚‡”Š”z€Œ–pqzq{…œ‰œ…Šxu’˜‰Šo‘ŒŠw‘v{v–…‘’‡‹‚z‰~“”‰}›Žv”†ˆ{‹”ŒˆŒ†–—’uƒ†ŠƒŠw™•ˆ‘„—os’‹Œ‹ˆŠ…†‰™‹–“z…¨›t‘‚‰Ž‚ŠŠŒ‹…£–€˜œŠ…„{…‡•„Ž‹„žœ†‡„’v––†“…}—‡ˆ‡‰ƒ”“¤Š‰‚‹€†Œ‰“š{‰‹‘ƒŒˆ“~”‰”‰˜„‰ŸŠ…—–‹’†„ŽŒ{“{‘’‚‰–z‹’‡o“–}{krˆŒˆvz{uwyrss‡ˆy„s{{—‡yj~xutu~trukmtz‹„|‰€p‡…vx‚x~ƒus|}jtu|}r€u€y}…„n‚yh|y‡zs~yzsiމ‚w‚‚g€yqz}u|fqx€wzvu…yyx]{€}xzyw˜qqekt‡n„nk€ƒŠqosxwsbm|rzbtu{x„uw}y}||„qpym{}w€{s„pxyu{}yz€atyvŒowx|†…‚nmyw}pŒw€{lpx|kn|s{y‚v{n}us„€t~}†€†‚i|Šs|yp„“w‹…w‚ƒ|~{‹„€nx€“y{…‡Š‰|„‚ƒz²z†Œ„„†„ys…•Šˆ„‹‚’z”‚‰Š‚}†ox~†‚‡y‚z~ˆlˆ~‡„y‚ƒ€y|‚‰tz†ys‡|ˆ‡~|ƒŒxŒ‰w~{ކxˆ€}‹x‚{“t}xb‚€ƒ…‰uv‚y€y„zq€iuƒzyo{||ƒy~‚ƒ‡‚‹rz}}x†{~{u…z€{‚~wz‡wuŒ†zzx{~xƒ‘€‚…}~zxyzŒt|ws‡|~v{xmˆ‰†€zƒ~{y€mts‘|~‹v‚„w„‚„ƒw‹s“Š~vƒŽ†t„ˆ‚kz€‘€ˆyŠ–}}|¹x‘Œ‡|‰x„s†„~‚Žš–€’~–‰~ƒp”‹z}v€w†}~}‘˜ˆ}v“u‰y‰ƒ|}nwˆƒo‡zxeއ†‰{~~|xˆ„…q‚|ˆ†{}“vƒxƒ}‘wy‚†`އ„lr‰~w|…vs~|hs|‚xlsp†…v–‚{€†€†„rt€x{|}€zx~|xŒ†u{ƒz|z{y‹t{……~‹|‚~w{z•|Žx||xƒ}„v†wr‰ˆ}|}vˆ€…}€s‚w“†€ƒ†x‡vƒ…u‰}ЉŠ}s{‚|’}…{‰‚m|ƒ~{‡ŠŒƒsŽƒv¯uŠ‹……Œ}zuƒ”…‡|„Œ”€|“x”~Œ„ƒ€~‰zuw~‹‹€{~“Ž|n‰{‚ƒzŒŽ}~}Š„‰n|y|r‡ŽŽ‡{~‚ƒ|}}}ƒz~……z…|ƒ„{{ƒ{wƒ]‡—ƒ‡‚rvy}‡€‹~r‚ƒzqz{„…wx}ƒ„s‚|Œ€‰‚wv‚zu|~}w}~~ƒ|t{‰x‚‰‡xywwzw}{…wˆ}‚zwƒ|–t|yr{|wp†y†ƒ~zƒywttŠ|‡~v…‹t„‹tŒŒp|†tƒ}}„y~uŒ‰ƒmt„Švrƒ‘‰yŒ’y~z·x}…t‹€~v†‡†ƒ‰€›ˆ}‡{”|Ž|€|ˆ€†‰|……~Š{„„{„~h‹w‡}v„‰~ƒs€ˆoƒ{†{y…††‡€|ƒ‡q{€}z…{‡~~y{ˆ~‡‡wƒ~r{‡Š^‚……|os‹|z|‡wr}…mqz~‰zrsŒ{Œtz‚|ƒ|zzw‚zvz{x{€…s}uu‡…z~€„y{ƒ|…|zu„~‘u|uƒ…wwjƒ‚vw~‹‚|m}u’zuˆŽu‡‡w„€Š‘|‚uw‰„}„v|}~†€rt—ˆzu~ˆts‚›’zq…}†||¢~v‰‚s}}{zr|‚ˆ‚Ž{Š–…|…zu|’uy—x“}…}wv€u{x†ƒkƒzƒyzy‡z{‚{v‹tvvƒmƒ‡|wvŒ{z„sˆ„w‡„ivu…z|{|zwˆ‡†…ƒcrŒ}t}w€tŠsusqxvvnlx‘€€{t~€ov‚w‚„ztt„zt†‚~u†{w‰‚u}||vsx‰yx{zuyt„}}uyv{{–q{tk~„n~mxvtz{w~}xv€…{mvŠ„z‚‡v‹tƒ…u„’‰‚ˆ„‹‡‹”’§~‰ƒŒ‚}ŽŽƒx–‘˜‘˜Œ‹ŠŒ‘‘|‘‹‡‰„u‡o‘‰Š~pƒŠŽ~›‹›ˆ†ƒ‡ˆ…†‘„‹–”Žwj™Œ’‰‚l™Œw†p…„’ƒ‹˜‚…”‘†ƒ„‹‚~€|“~‚—Œ‰‰}‰{yЉŠ~’„‹‘ŠŠ‚xˆ™Œ‚‰}Ž“†ŽŠŒw{“…ŽŒ‡Š“ŒŠ†”‡‘‹Š“ƒx‚‹Š‹‰~…Љ‰†„‰‡„Ž{Œv“‘‹‚†‡‰Ž‡“މ“Œ‹‚—|Š€–u‰‡”‹n’††ƒ|ž‹j€ƒ‰…Œ‚‹‹‡„‰‹…Ž“„Œz…ŽŠ–ŠŠrz„~‡‹ƒ€u“Љs›Ž‘Œ€Žˆˆv„Œty”{ˆ„‰~Š~…ˆˆŠ‘”‘ЇŒ†Œ‚~†ˆˆŠŠ†ƒ—}yz†ƒ……tŒŠ‰z†~ˆ–“‡‚Љ‰’”‹…Ž…‚€‘‰Š‡Ž‡|ŽŒ‡‹…•‡‚“†ƒˆ€€}€„…‹{††ƒ›”Š„ƒvŽƒ”‰‘‹’Š‹‰„†…‡€“‹Ž‰“†Žƒ‚‰Œ‹˜ˆ’z…€Œ‹‹€˜•މ‰‹Œˆ…‰ŒƒŠ|‰‰†ŠˆŒ’„‰ƒŠ‘‘…v‹‰}{h“„{u{qy‰lawƒvsyxzu}“‘ƒxzt‡x‡n„wyvu{s^}qzsvnn‹u||kyrr€s~h|“w„wruƒ}‚pxszŒwwxvug{qr~l‚vyw”|ˆˆzvnbwvqwjtzos|tt~zv„€vysƒs~syuww˜rpzoqwwƒwnvxm}k{t|wzksx‚ly}}rtvtsvwr€|tootwxnv†x€xtuv{x~pyvtwv{zxiwv„|zxr„pz|yz€~mrsqmq€zutr~dsxyuwv|w~w€Šu|{}vvu‰†…m‘‹Žy’˜‡ˆ†•‚‚„ŒžŽ‡¥–‘‡‘ˆƒˆŽhs‘vv˜€Ž—”ƒtˆ‰‡s—˜Ž}‘xŽzކ•ˆ†„„€—Š¢–‘‰’o•Œ“|‰€q‘‡…‹Ÿt~‹Ž„”‰‡•y‹†o}w‰‘‰”†‹t”–ŽŠŒ†…•w—”’„’ŠŠ‡†’‚™“†ˆ‘ˆƒ€•…‹Šˆƒ‰—„ˆ‹£‡—xœƒ‰‹‘‚Ž”ƒ…‡Œ‡‰zšŠŒ”‘‹‰ˆ‚ƒŒ•–“•„~Š…}‰”Ž–Š‰ŠŽ‘’‘„Œ‡‚†Š„{”“„Ž~ˆŽŠ|ˆ{އ~”†Œt{‡‡Œ‹ƒ’Ž’ˆ™‚‹‹Ž’†ˆ‰Ž}””quŽyu‰‡y‰•‹ˆfz•ˆ‘‘ˆr…‰s…ˆ’tpŽy}‰‹†~……r‚”‘’}›‹“Œ‡’’x‹~ˆŠ‚t•Š}Š’~s“”—†ˆ‰‚ŽŽ…šŒŒ•ƒ{|‡œ’}…“†ƒ†ƒŽ†Ž†Œ›„“Žƒ“‹‰}‡‚„}ˆ…‡v|“‡‹~‡˜ˆ›{Ž’Ž “‹‰Ž…ˆ|ˆ”ƒ‚ Œ…‚‹‡ŽŠ““‚‰“‰”ŽŠ“Œ‚Œ‚—„ŽŽˆ‰‹‡“ˆ‡…€—‹ƒ—Ž…™…“†‘u‹‰’Ž~sƒ€€~~yvuvzyrpƒv‘y~€|y–‰py}sysvmŒ€p}{uw}niv„z}q{…z|y|yvr€|}ptlzu„t„‚pllr…|}x€teˆ‚vz|o|vz€z‰‰ƒwqoyoutxwƒut€w€~vŽ}oum‡€}{yzyv¨wy„yourƒmxnm‰wrjwwz€{lt{€‡zo~v|uym}vmxw{qg‚s{uy~trŠxu|zo}uwqzuvx|~ztƒŽ†}s€wzu€yu{sxuwt}{soxsznzux€vqy{‰x}szƒ’pww„zyŠ~˜ž€v€|‰|}Š„„|m}€–|…‡Œ„{ˆ‹~{³u‹‰„‡ˆ…yuz“Œ‡€†~–‘x‘…†x~Œs‘”{ˆ†€€‚}z|Š—‚r‡€…y‰…€…„€€‹s}z‹vtˆˆ‡y€…•|‡ƒ…xƒ{…„ƒ{…ˆ{}Š{‚€{z~{qf}†y€„zŽ~…{qƒ…xt†Šƒux|…}s€‚‹†˜ˆwy€~u‡||s…zt†‚s{Šx‚”Žwypv}x…|‡€}}„{w‚|Žs{pxŠ{{{yp…ƒ„ƒ{‡€z‡|rrs€}‚vxŠt‹~|ˆx}e„v˜ty‡t|“‰‰}{”x„|†…‹‹o„€€…“‰wx€™y|w ‰‡½“‰ƒ|Œ…{™}‘„‚„““˜†y~„ŽƒŽ„|s€“–‰Š€–Žy”މo‰‡…ƒzz’|…Ž¡”‡vƒrƒ²xˆ‚••ŠŒ›€~y‰‡…y’}r€„‡ u„‹wƒˆ«„|†m‡|˜‚xs€‚‚‡Š•”•…”“uuu…ˆ‚–w‰}‡}}‹†|‚zžxŽ|‡ˆŠƒˆ„o…ƒ“ƒ‚…ˆ•‚‚………‹ˆƒ™ˆŒp‡~‡‡…zsƒ•Š}”’ŠˆŒ„›ƒŽk‰„|xz—zŒ†_†‡’€…q–mŽyq—„}„{~‘}wp‡zˆsŽ‚|uŠ{n†—Œ•Ž|\{ˆ{|š—oŒyrˆ„…r†„‚Ÿ‡ˆ’•_‹|¡„¡Ž€‚˜ŽŠ–u„~~šow‹wv’†‰Š‹~}Šq|‚‡‰„u—€‡z}ŒƒuŽo‰–‚…ˆqv–’€†qqu{Ž˜°s†“…ozƒ„’‚p’„|~•pl–|ƒ‹soou|‚}Š‚v…w—‹‘Œ~•tt‚‹}ƒŸƒ}ˆsg†”v‰ƒ}y‹suun~t›“~|oz“z~‚w›†z–“zuŠ~w~‚|Œƒ|‚q|€Žu~†„ƒ€†Š’{†€®xŠ„}ˆ†‚‡uz‚Š’—~Œ†…‹|~‰„‘yw|„{€u‚y{ˆœ{‡qˆ|z‰Šƒƒ‚u‹ƒƒr{‡}}ƒpЇˆx„‰~pƒ{‘z‚z‡Œu…‰|‚€|“u‚r‚d†z€‰s‡ƒƒtv„xs€‚cv|†Šjt{‡‚xƒŠxƒ‚“{„†xy|~€~zs}}~lvŠu{…y|Žyzx€x|–}„||}…{y‚zu|~†‹†€u€wl“‹{€|„‚vxƒw}u‹y~x€‚x…‚€}ˆ“€˜„s€ƒ…x||„ƒ„sx‰žyt„‰‡‡~‰‰}r°yˆŽƒzŒ„szzŒ‰€‚…Š•‡~‹~’€‹“€}…}”•xzƒƒv€v†~r‹‰}o‡vƒ|zˆŒ‡‰}}}‹q~yŽv|‚„…Šx„uƒ„|{ˆy†…zyˆŒx‚~{Œ‚‚c‡y‹„|{‹|mxŠ|q‰†wrs|ˆ†u€…€…€tw„ˆ~‡yw„|yyƒ~|v…z}}}u|ˆxw‹‰{y~|„wƒŒ{‹€…}|zwŠ‚”t{xsŠƒ|}}yj€‚~yƒ„}t|xrr|}~…u‡ˆu‰€Œ{ˆ[ƒ~xƒ{}ˆux‡r}Ž„|t‚—“Œƒyƒ‰†˜„~vwsiŒm‡‹uvy|wuy}wypi~†{€lt‡‚†w}xy†}†su‰{x}q“z|t„‚ˆ‚wp„nstyr|s}|u…€{~‹‰{€{|z‚x€}‚}xn„u„ƒ{„wuƒ}r{‡w€zzn‚|„†p{‡~sv€~u~{|~|zs}w}€r„v„|x}z‚{„sx{|€€‚}}~{ˆ†~}z†uƒ‰‚Ž€‚†uwr}…yp|…zv{~}{{…€~ƒ‚}…Š–w‚€ˆ{}’ŽŽŽŠq•’“ŒŠ‹‘ˆ‘{‹„ŒŠŠ‚Œ„y‰ƒ‰Œž”›‹—˜ˆ˜‡‹p…‹‚‹‹o’†ƒ‹‘‡Šw‰™Š‘‚šŠŽ’ŽŒƒ‹“‡˜‚ˆŠ‹j„ŠŽmŽ‚{ˆoІ„|‹ƒ|…Œ’І‰Ž‹„y‰{|’‹‘~–ƒ‡Š‘‚{‹~ƒ‰Œ{“Œ…“ЇƒŒŽ–‡Š‚Œ‰Œ……‰}~‹Š}‹Œ„’“‹‹|‹Œ’‡‹—ˆ~‹Œ…ˆ“}ŒŽ’€—…ŽŠ„ƒ…ƒ}…xŽ€}‹†…’‡ˆ†‘‘’ŽŠ‹‰•€ˆtŽ–ƒ‘†•l’…ƒ…€ƒ”‹vsšŒ‘‹‚yŒ…ˆ‚މ†Š„Ž„Šˆœ‹—’|€–ˆ‡‘„‘‘—Іv}Œ’—~}“–Ž|‘Œ|‡žƒ‘‘~•ŽŠŒŠŒŠ€’—|‡‘“q|ƒŠ‘r‡˜‹Œ~q„ˆ„Š‹–ˆ€Š†z„Š–~„„‰|{‘“}‹Š‰‚Ž‘–q‚y–Œ~rŒŠ„‹“„މ}‰›~Šˆƒ‡•–‹„‰‰xˆ’ކ€Ž‡Šˆ‘œ’Œ…‹‡—…‹‹Š‡‹…|‘’Œ“†–„‚}ˆ|‹—‚ˆŒ•„‹ˆš’†—‘€ŠˆŒyŠt†‹Œ––†’|‡u—މ—Ž…ƒ„{—•ˆ‘Œˆ~‚ŠŠ„xŠƒx–•‚¡‹—Љ„Ÿ–‘•”Šž‹‚ˆƒŠ…n‹„Š…™u‚ІŠ—‹‹‘“І”““…‡•–‰~Œi‡ˆ•„lˆ…{oŒ‰‘…}ˆŠ€ˆ~‡’™†…‰Šx…{|€ŒzŠŒ‚‡†v‹||‰Œ{–……˜‰‹‹Š~u‹ŠŠ„‹‡•‡”‹Šz†wˆŠƒ‰†‹~’…““‘†‚މЉ‡‘Œ‰ˆ„ˆ†ƒ‡y‡„ˆxŠŒ†…‹w€‡Žˆ”‡‰€’އŒ“€€‚ˆ…s‹™Ž“mŠ„„wv„‡‹u|w‚~wy‰xy{‚~|y†‹ƒx…z{‹v©|y†~†€~|s}Œ„‰‰ƒ‡|Žˆu‰„‡‚zwwrƒ}x„‰‚€~ƒz‚{t€†lŒƒ|x~„ƒ|€yŠxˆqyx|€q…‘€{z„„v‰…|q…vwzxsˆx„~}{x‹uƒˆigyzw€qw‡tzts{zrtn€ˆjqz~w{ƒlq€|xˆ|jt„yvŽv}vr•z|{ƒ|wzƒuuŠ„yywxvz‚~…{{~{yvŠ{Žt}snƒvw€wq|~yyww€‰|{v‰}~€v…‡rƒ}ƒy…„‡ˆ}z‡ŒŒ‰Š‘’‘€Š‰ƒ“Ž‹Œ“„“„‡|Œ…„Ї•}—‹‰u‡ˆŠ}–І†x…ޒކ†ƒˆ†„Œ“މƒ‚‹w‘ƒ†Ž”€‡‡‘‰v€u„”Š{”†„–†yŽŠ…†‹ŽƒŠ€‹„‘‹ˆ{‡Š|†Ž…Š‘ˆ‡‘‹‡‰•‰‘“†„}†‘Š‚‰…€‘˜‹ŽŠ~‘{ˆŽŽ‚ˆ‚ˆŠŽ‰†ˆ†€~„”Љ‚ŒŽ‚††ˆˆ‹…Ž’Œ‡€‹‡€†zŒŠ’•ˆŒŽ†‹ŠŒŠˆ’Œ~Œ†ˆ‹“…ƒ†‹’Š’Š„„‰‰‚„Œ‰„Œu„‘“ŽŽŒŽƒ‚‚Œ‹•‚vŽ€‹“‹‹…›Žˆ„ž…Ž”‹Šn‹}Œ–‹rŒ‹Š~‘†”‘…ˆ•ƒ‡‹Ž’“ˆŽi–‚—ˆmކ…y–pˆ…ˆ}Šˆ|‡ŒŒ‘…‰{Š‚}v†Œ~‘‚”|‰€†‡†’ˆ‹’‹‹‘|€‰ŽŒˆ‡…ˆŒ€†…Š‘ˆ‚€Žj‘‚‰Œ•‰ƒ‘ŒƒŒˆ‹—„ƒ†ŒŠ‹‰‹Œ„„‰…‹’‡…Ž~…vŒ{‰Šˆ•Ž…“Œ‘’˜Œ‰‰˜|q‰›‹‹’šn„{x_‰y‚€xŽsƒ˜“ž”xš{‘~t††„ŒŠ€ƒ|ƒŽ…{~ƒƒŸ}|Šœsƈr‚Šw……‘€Œ—•€|‡‡¨ˆƒ„Š‚yˆ…†„|qŠŒ¥ŠŠs“†…•x…}{rˆ’˜‚†Žr”„º‚†…Žš†œ„ƒ~“‘|†—„w…yŒzŠŒ‡j›‡{‡xŽ‹š{}ˆ‰‹‚…“Ž’wƒš||•mЉ |‘‡‘€ƒ‚‡tŠtšŽŸ€¢~…†„Š||…vƒ‚„ŒšŽ†{ˆ‚ˆ|‰“€”€{€††…{k‰‚‡†‹‹’‡–…‘yuwމ{„‚…t~‰Œ{{zƒ‡€lwƒˆ€{€†‹…s‡…z¯w‹Ž…{Šˆƒ{s€Œ†ƒˆ~‡Ž™ƒ€—Šw˜ŒŽ{‡z|€Œx‚y‹ƒ~ƒyˆ~k‹{‰ƒz‰~}†‚„|…p|yŒvq‡Š‡u~ƒŠwƒ‡yƒ‚zy…‹~…w€{ˆ‚Šbˆ‹‰ˆuzƒ{ƒ{r‚~try{ˆ}w}ˆ~‡ry}ˆŒ€wwƒ~s‚|~|yƒ|{‚~x{Šxzˆˆzywx‚w~‚†~}zw†z”s|zu‚€w€twrƒ‡€z……}}„€sts‹„|Šu}ˆtŠ‚}ˆvx‘“ž‡ˆ¡“žz{Š|¤Œ†{rˆª€Ž‘s|ŒšŽ‘t”~o™x}k€„„‡|kšœ—ˆŒ‘€‘‡“…‹ˆŽ~y¦zƒŽrb¢|‘”l¡œ”©‡”{€”yˆŒ‹Ž„ˆˆ†‡|w„‰ˆ„w‰œ}“w†‚›¥‘€††}Œ‡ —Š“—lz§‰ˆ~m‘’˜{ˆ’€’’‚z‚„~l˜‡~z‡‹—z|…o‹®Ÿ}Šƒ€™ˆŒ“pŠ“t|n~…”wˆ””Œy†ª~kŽ‹|–Š~’“އƒ—ŠŽƒŠœŒ…W››x€‰”sm€q{„™€ƒ’˜‚~‘–zŠ~”‹s}„І†z‡Š–{•}yz‹‹Œ}|‰‘†…•—ow‰v~†…t—“‹wxŽƒŽ˜†r‹‘Žv‹ˆ“w…“y‡…ˆ”ˆ‡…ˆ“q˜ˆ’•w†„’€‰••†Šƒ”vu‚‡‰}‰uŸ‘„’|Ž„pŽ”‹‘Š‹€Š„…“£Š‹†v}œ–„Œ”‘‹ˆ‚‰‹…”›„•”ˆ†‹†ˆ…ƒ‡‹‚„ˆŒyŠ¡‘‚ŠˆŽ}Œšˆ’…’Œ‘ŒŒ„‹ƒ‚˜Œ‡œˆƒŽˆz‘Љބކ—ˆŒ„‘Œ”„Š„•……‘Œ‡ŽŠ’‡”Œ†ˆŒƒ‘‘‰…„–‘”‰Š’p“–‘‡Œ‡“ŠƒzŠ€Œ‘‹†yƒ‡}ž…‹‹‰‹Œ “”Ž˜‰ŠŠ„Š•o†‚Œ‡˜v‡•‡‰…Œ‹ƒ’’–”Œ‡Š‘y‹ƒ‰Ši‚ŒŠ“mƒ‡€|~p‰ˆ†‰|‰ˆƒ…†‡Ž‘ˆ…Œ‰z†~{ˆ~’‚ˆŒƒzƒ†‰Š†„’‹‹šŠ„‰ŒŒˆ•‘††‡„”І“‰ˆ…‹‘v…‚ކ~‘Œ…†•‰“†‹……•|…Š~}Žˆ‡„‡…wŽ{‚‰„•‰€‚‹‰’Œ‰‘‚‹‰ƒrŠƒ‘…l‘~…‡‰‰€w””ˆ{z†yŽ{Œ~}yuˆ£|y‚Œ‡xŽƒƒˆt¦~’”ƒw…z‰ŽŠˆ‰‰‹~‹¤‡‰vyui‰„xi†}†ƒ}‰…‚†{‚p…x„‡|~}}†x}y‡xq€s‚€ƒv~~~yŠ}‰x‡—‰ˆ…t„~x—x‡~kƒƒ†Ž|††x}€}x†…q€…r~xx}w‚wˆ}~„Š…ƒŒ{v{{xƒ‚}v}||…~†wyys‚{y|y€}x„‰ƒ~}‡€†}yyw}|vƒ€zzo{†„v{w~{s„sƒz’€|‚…|…w‰ƒ„u……vš‘€|uˆ}ƒ~€{ˆ†nƒ‹vzƒƒ‰…}ކtªz‚އt‡†{v†”‹‰…€‰’“‡‰y‘ƒ”ˆƒƒvŽ}{†„ƒ„‚€~‡‰‰†ƒ~vŒs†{‰€|p‚}‡p}{ˆoŠ…‰ˆ€z†|ˆ‡|t{‡‚‡{‡{„„w€}Šxz€“]ƒ†Ž„‰tƒ~u€‚wt‚‡~zv~vw„y†|‚‰‚…}|r{wx|€{~€ƒ„‚|{„z‚Œƒz|ƒw{‹v†y‚„{zŒx–w}}}††„yƒzp‹…x}|ˆ€€zŠ€w’‡{‚‰y‚x}„Žw€…}~ƒˆ‰˜Žœ|‹‚ƒ…ŒŽ„t•™“’š“”•‹Ž‡”“‡€Šˆ€‡Œz‡„nŠ’‡‰‡Š}o‡~‰~žˆ™‰‡‚‡ƒˆ†”‡Ž‘ ~”iœ„Š…m—„Ž‚Žp…„‚}‡ˆ—€–ŒŒ‡{‰‚z€{Š~•‚›Ž‡“Š|‰n‹ŽxŠ‚Œ‰‹Ž…‚q‰–Ž‚†‘yŠ„”‡‰o‰|„–‚y‰‹†{—šŽ‘‘‡ƒ“‰Š‡ˆ’‰|}ˆ‡Šˆ‚€‰‡…‰Œ“’†…†}”v†˜ƒ‰‹—„’‰Ž‘…’†–}‹~’‘u‰‡–Šn‚‰„‹Œ„‘s–—†Œ‘Š~|ƒ’ƒˆ~€y}œŒ“‰‹†Ž‡œ–’Ž“ƒœ…Œ€„‡Ž’n‘ƒ€‹Žw‰ƒ‚‰ˆ”•Œ…Ž’ˆ‚‰t‘ƒŒ‹h‰–”mˆŠ€x„o‰„„ˆ{†|€Š‡š|ƒŠ“’…}Œ}z”…’~ƒ}ŽŽ‚~{ƒ†ˆ„ƒ€‘ŠœŒŒŒ~Œ’‰‹‰†–Ї€‘•‘€‚}‰•w‚Š‹’Œ‰Š}‘ŒŽ„Œ™…—˜Ž‹Š††‘}…“’~’y‰‰‚‹v’v“Šƒ–‹ƒŠŒŽŒ•†‹†‚ˆ‰rŽ˜ƒ“m‘|ˆ…~g||„…uxvrŒsx}‡}|}{|{”‹zt{ƒy–„}}‚qx‰yq|zz‹z~}’€{…vq{€q~~p|qyz|}y€z|‚€zo}ˆ}|‡x|~pŠ‚†€uxx„d}}‚}w†zwwq‚rƒx…z}yqˆ‚…vw||yt…yp†~yuth‚‚˜tw{xx…|„upxx{‚{}w{x}~z~st‰pq€v{rŠ‚u††wyzz|}yt{x€lyƒ}‚€}kzz~zwvxlv{i‡~‚t{…z}jzz€Š‰zu}ƒ{ˆ‚~|‚Œu~x‚{x^‚pvo{|u–zpŠmx†ˆX~†™‰…}rxsv‹…‰€y„‡zomlŽ{w˜zidz–x†t“mrm{o€}|{™Œ“}l…r‰ˆwv~|}r‹ˆu„y‘}z}”|‹~wvn’jo†ˆ}|ƒzexnmˆn€”~‡{„sy}|„Šftykdof‚…}ªl{z}…ˆœ…z‘zz‚vw‘r”rzxxm}vv|}}€{„n{zv˜†|‚{€–{w€€t{~`m€uv‚€€¢‚“}ƒ|kƒ—„|oy€{s~|x”—€ƒƒ†ƒzt~}]z‚†ƒ€{…Š‚†ƒ€‘’ƒš…€’”„•–‰‡ŽosŽ‚€‡Š—‘ˆ~vŠ…yw’›Ž‘†‡q{ŠŠƒ}Ž„†–}’ŒˆŒ•‚‹†}Ž‘wŒ‹†‰†—‘z‹u‰Ž”…‚y‚v‰‰…‡”†ˆ€–ŒŒŽ‡Œ~Št‹—‡‰†‘”‰‰……}Ž„…ŒŒ‹†‰‡„‡’ˆ‹€Œ“ˆ‹’’Š„…˜ŒŒŽ‘…‡”|”‰’”‹ˆŽ…‘|‚Œ‰…’‰‰†„†ŠŠƒ}’‡‹ˆ—‚’’•Ž…“†‡ˆˆ€…މ…’Љ}‹‚Šˆ|`xrz}tfy“ujw”ox…Œ{dyŽ‹‡}z|„uƒzŒŠ}~wpzq\cxuxt~‡wv~b{suwk{n{–x…~nt€|otqr~xy„ypgŒ{zp|o…sxi‚‚zviƒywzpwjp~n‚{sp‰zz‚szsvs~rzyxx¦pkzplzwƒrpwvm‰}a{n|vyjrw‚€hwoswunvwtz{rmvrxyow}{wurt{opywuyw{{xzyuƒ|{xpƒoxz~zz€nrwmuzrv€u{ssx{uxwuƒ€x~w‚˜u{z}uw‰€m†Ž„{v~~‚~r}‹{pt‚–~zŒŽ€jŠ|z¢rƒ…€w|v{ny ‚…’…Œ€y‚{qŽ~|v|wŠt‡x}‰{yŒyz‰vwއƒj‡z‹{z~z‹trvŽ{i‡Ž‡€xƒ‡w„ƒ~}‚w‹~{yxŠŠ€uxz|xŽ~|‚og{‡zyyv…yžxutsx†pqr€wwxˆx„†y~‡x|~po…vp~y~{w‡|vy„~sƒ…u€{ƒyyx‹yv€t~Ž€y}u{}”t{}y}y}vxqm}wz|z||w„tsxˆ{wt{|ŠwŠˆ†{«‡rn°•‡†–‘~†‹}…‰ˆwqx‘”‡Ž‡”–¡†–“}j›ly{œŠ’ƒ†Ss‘•—ˆ‰”…Žn’–‡ml}ˆ„’’Šw‡‹Ž‚˜Š–°qŒ—‹‹†‘‹›|‰Œ“–…}‡Œ“‰u‹˜€‚{„u“vt‡}Ž‚ƒ~–‚…‹|€Ž’z’‡‚oˆ‹’Љ™–Š’Ž‹•Ÿˆ†g’Šr‚ƒˆŒ£x“ai†ŽŸ~Œ„›|w›x‹ˆ–{ŸŠ††Š†Ž›†–œŠ~‘ƒw‡š‚€~…†Ÿ›}œŒ“„ƒŽ‹†~•„Œ§…|€”zŒŠˆ}r–…”‹‘’Ž’‰•—‰‰…p‡j‡‹…„Œ‹‡’Š~~–~ƒtŒˆx…Š‚‘†‹›ol‰tzzˆ|‹—ŠŠ|€‹ˆˆ’‡oŠŒ{’ž’w—Ž‚ˆ“…„Šz‰i‹—…–t†y‘š¡Ž{‰’“‡v‹}Œ‰ŒuŸ~Œ†’oŒˆ–•‰ƒˆ˜‘‹˜†……“–}‹‹‚€‰£‡‘–|¡Œ‰‡‰’‚šˆ‚‡†¨ŠŒŒ‡–š‹‰…‰{‰“‘Ž„‡t“Š•ˆ{ކŒ–xƒ‚š’Ž‹…‚|……”z~ˆ˜—~‡“ŒŸ‚’„Ž“–ˆ„™†„ƒŒ„“ŠŽŠ•Ž›‰“ƒ†ŽŒs•’Œ†ƒ‰—{ƒƒ‹……ŽŠ„{ˆˆŠžžœ“Ž’~—–ˆ…Ž‡Šœ‰’y‰†ŠŽŽoŠ„‹‰ƒŠv’Š…–…’„Œ‹†„Ž’‰Š‚‘iˆ”Œ†m…‚‹‚p††„ƒ}‹‰y…‰‚‹•‘‹Œƒˆy‹}|‘‘~“…‘…|‰~|ˆŒ€z“Œ„Ž‹ŒŠ…€™…‹Š„‹Ž†“‰Šƒ’…~‚‡v}Œ‡ƒ•ŽŽŠ‘‹€ŽŽ†Š“~€ŽˆŒ…Š—Ž…—‰‘‹Œˆ…‡~x“Š‚‰‡…–‡Œ†”“‘‰‰’ЇŒ{†u•‹‘l“…‰†€“zn•Œ‹Œ|‹ˆ…‘‚‘xƒrŽŒ…w‡Ž•‰““p{€|†“Žw‘“|tn‰†™x’‘““v‰ŽƒŠw–‹Ž|‚†•”~›‚™„||”†‚ŒŽ”‚Š‘’™y~~†‡ƒ†y™ˆ‹o„…’„“††€‹’•–ˆˆxz’•„ž~‘…Œ‹‘‡“˜ƒ‘ŒŠŠ‰ƒŠƒ‰”‹…ˆŠˆ—”€†‘’{Œƒ™€˜…–‡‰ˆ‹Œ‡ŒŽŒ˜‘‡“‰‰y|‹”‹Œ”Œ–Šƒ~‘€‹‡Œ•ˆƒ‘Ž€‰“…€‰…ˆ…‡ˆ…‚‘†€Šƒ…‡‹ˆgŠ€‘twŠu€~|{r‰}„†ƒ|‹ž’…tƒy„‡—‚†‚yˆr|ˆ€‡s{}•…ƒ†xq†‚{{~rl’ƒzox{w†‚w‰zpzv}‡’wz|}€ˆ}yy‡{ƒv~yz…t~‚‰r}{t}•Іz€|†ˆ{‚~ˆ~ƒv{€}„‚€‡}x‹†Š|„‡{v‹uyv{q}}x“xƒ€xtŽ|~tƒs‰€~ˆ|m€|u~†Œty{x~|x‚ƒ~Šx‰x€€€yŒ€a}…ƒw‚‚ˆ‡ƒ||„„k—…€n}~ƒo€}xw•w„ƒ{……Žx|ƒŠˆz~Šw‡{wv{„x{}„–…||}„„sl‘‡‚|~ƒ€{y¨z~‰|€xznw~g‰†~}‹‰Ž…x‚}|‡ƒ|x…€‡{o€…|t~x‚ƒ‡†yi†|ƒxv‚~o…|w~w~xxr†}‡w}u|y~€xˆzvrz}y~{x›l}€†b~€…z|uouvr~ss€€jtƒ€‰rxsƒs…qw‚z…rwwwy~…~xs…wz…~ƒtzwwwˆƒzx{~vu“zzxuvm’t}xkx‚vt{zh{ƒŠzvx~zy~xpwx–{y†ƒvŽtƒr~~…kv‚„~zƒ}v…yvtŽ{{|zyŠ••q…}~}~œ€n„bz…~r}}ˆ€ˆ~‡‘‡‡~‚wv{†y}qˆw{yxt}zˆ„~}p‘yŽ~|w‡|||oˆ„y}y}g…vˆ~p~~r{ƒ|q|w„tys•†tt}{yŽƒx€Œox}~~vxƒ‹vrwu~}„ytyovuy|……sw{‚|€‚|srt‚xzw‹ƒq„y|zy{{}w{|sy€u†yƒqzy}xw~yxp€ut}|}r‡ƒv{q€y}†r}‹‘y{€‡uƒ‡ŠwŒ{s~—…y„‘Ї€z‡‹~j{‚„yƒ“˜Ž{„|¶x„‰ƒ~€ƒ}sŒ†‹‚’„Ž“™ˆŽƒw—ƒŠ‰z|‡j…‘ˆ€~…†Š}|‡€††„ry™‚x…Š~~„{€‚ˆo€{‰{e“…‡uƒ‚‹u‰Žwƒ|‹†{†“†‚~{‚€|„„{‰„hƒŠ‰‡wu‹}†††sr{v‡u€„‹{r{ƒx~ƒ}{ˆ‰zo~†yv‰|~uŒ{|‚…~{‰wx‰„}z~zxz|…}†‚~wzyƒ‘t|~}‚}„ƒwo|…{||}ƒ‚ƒ†ups—ˆ}†‹u„u‰ƒ”u‡ux‹Žƒ†xy‰xq|Žˆ{ywztŒ„‹zn…x~vxªz~†€wpvowx{€ŒtŠŠzƒ†vŠ|‰qv’z‡}…j~†v{ƒ€z‡ŒxiІ~zz€|{{ƒ‚‹zxw{j„†‚}{{ˆu{w†‡t‡€qxs„…zt~t–{‚zdqŒxxwvu‹qrws|}qutwŒ{v}u|†{w}‡s}‰~sq…|t{||r…~wކzuz}ywvŒ}vw€tw~†‹}€}zv~rŽs|~t{|r†{xot|„{xy|{z}{ttxŽ€xŽ~z†ˆw€{y†„‹{u}y{||Ї~zz„Ž|y•€‡~„ƒy~{¤}„Š€†~€yxx~…‡~‚~‰Œ…z‘ˆxƒ‰{zw€‡†w€|zuvz{ˆ~‚‰ƒl‰}‡„x}‰„}…y€ƒtws†~†|xƒ}{‚xuw‡|{w‹€‚‰z~|x›vw„{kƒz‚€ƒxyˆzzuutˆ~wtxƒ‡qq{~t|vv€{~„nvzwx{~ys†yxy}}t{|w{Štx|~}u|†}}}ywˆx”t|wu}|yp~yn|{z|~yv~tw‡…z~}w…‹r„z†„{‘„…ˆ‹‡˜’ƒ”–”ˆ||“ƒŽ“|‰y‰˜—Œ‰Œ†”}“’}’‹‰ŠŒ‰Šn’†ƒ‹‰‰‡w‡‰„~†Œ…Ž”‹}‘ƒ‰…‹˜’ƒŒhˆˆˆ‹m„˜~Žp…„…†|†‰‚‘“’†ŠŠŒŽƒ~zw’Š{‹’“|Œ„„ƒ‡‚’…‹‰Ž|‡‘•‹”ŒŒ‚‡ƒ†ƒ„‰ŠŽˆˆƒŽ}g’‡‹ƒŠ›Œ”„’‰Œ•Іƒ—“…’Œˆˆ†”ˆ‰‰…Š‘…ƒ‡~Švˆ}„Œ‚‚’‡ˆ‡Ž‡‘މ“ŒŽ†€‹‰pŽŒ„‚†’nƒŠˆ|n•y–_‡{“¢‹Žˆ†r‹ƒzq‰Žw‰œœ†žx •r}l”‡Ãki–ЇŒ§p¨™‚”e}Ž„šŠ|‰€{«•„ ‚lŒƒÌ„„ŠŒœ‹•{ŠsŒŽq›{’•oz‡šb„}‹”ŒŠyŽž¢jw‘v’|›“¯¡“…˜{€•p|¥Ox’”šn‘†‡–…œˆŽ¶v»„„ˆŽ•ˆ|ˆœ‘_Ÿ„–Ž•”ˆ•q“—Œs‘ri‘‰‘…ŠŠ–Ž‹o“’…‹’ˆv€…Šs}{{‹x‡‚ˆŒ£Žq{ƒŽ}‘¢ze„“z𱑕™‹¡†ˆ}‡†’†}Šw‰”ˆ‡Ž…‰y‰••‹z‹š™ŽŠŒ†‡‘„‘w†‘¡Š†Œw‹…‹„Š“‘}…‰‹Œƒ|…†tp†|}™…”’‰€ƒŠ†‰š‚–x”w¢…r…†k˜…‡„„m‡ž€yx…t‡‡~Š‹v“Š•‡sŒ“‡ƒ‹x~z—”Š‹…€‘ƒ‚‘„…„„u‡Ž|•†Œƒy„ƒˆ‡ŠˆŒ‡†„††‹”‘Ї„ˆ„ŒŠŠ”ƒ’…‚‡‡’…Œ{ކŒ€‰†~…†‡‰~ˆ†…€||‡‰ƒ‹‡Œ~v‹…ŠŠŠ„‚“Šxšˆƒ‚Š‚{Œ‘|‡†‰‡nІ‘ˆw™‹†ƒ†•™–‚”˜™Œx…Œ–Š…„…}Œ—‰ˆ‘““„ŠšŸŒˆ‰“…l‹‰”‡„o€…v~Š€†ƒ–ˆ…Š”‘Šw‘’‰…•uŽ~‹‹j†‘mˆŠ}™w‰oˆŠˆ„{‹‚|”—Ž’y‰š†“…x‚y‘”z—€~‹›…|’ƒ}ŠŽ„}›‚Žˆ~…‚™—‡‹…”…–ˆŠˆ•„‚‹€‰yˆ‰‘’Š“ˆ‹‹y‡‹“™–„•‰Š‹‚Ž|ŠŒ–ƒˆ’…‰{„v†…Š…„‰Œ‚ŽŠ’…“Š|—‚w‰‹s‡Š‡ˆ~Šm‹}‘„y€Ž‰ƒp†’†Œ|ƒƒ—q†{”|}ž™“ˆˆˆ’Š‘•quxˆ‹‡‹˜Šr‚—…މz—”‘’Œ‘ƒ •”‡‘‚Œ™†”•“‡–ŽŽ}y†“w‡‹„–€‘••‡uzs‰‡{—Œ„Ÿ|Œ„q’ˆ’‡Žˆ“ƒ‹‘“ƒ{ t†„ˆŠ“‘šƒŠ‹†“”•‹vˆ—ŠŠ‡‰˜‹—’‰˜‰Œ†‰ŽŽ˜‰‰Œ“Ž~„zˆ’††„Œ‹“|—އ—~‰’|Šˆ‘||‹”‚Ž”‘“‰ˆ‰”’›’‚|‚ŒŒ‹‰„ƒ…’‹…Ž‚“‰€†‹‘}“Ž‘}pp„w|{sop~}tyw‚†‹my†x|‚v{‚€‘‹yƒptƒwq€{~„sy~…{|tiw}xƒ‚x}…x„‚yyˆ}Œwƒ~yyqtˆuo‡x}|w{xŠ}‡y|yvŒ{|{€{ts~v€v}q|ƒ}p}p‚|‚pz{zz‰{uˆ{t~~|xss{rƒ”mwr{}ƒ{{|x‹vy‚zt|…zu~vvz€qvr„wyx}‚uyv…|{y€t{†}€{}€{„{vƒ€‚x{ƒq{zƒ|Œ{€~pt†{lˆ{n€„z}txy|†‡l‚~yƒ€‚‰ww}ƒƒ{{މ†m‚˜Œ„}Š”v‚x}|}–‘‚††‘Œ…Ž”mv‘tŒ‹˜™Œ‹‰p}““‡t—–•Œ“|›Œ–¡‰ƒ‘‡‰–‰„¡ˆšwqŒ•€‚ƒ™“•“—›uysŠŒŠˆ{šˆˆž…ˆƒr~ކ–‹‚˜’‚•“†‹ƒ‰‰šuˆ}‹”Œ„Œ‘‹’’„š—…‡‹‘ž‹ŒŠ‘ŸŠ‹„އˆƒ„’Œ‡}‰“}……‘Ž…{’€•€ƒ–•’‹€ƒ‘‡€Ž‰‰…Žy‹‡ˆ‡„€š‘ˆ‡‡‘””ž‹ƒ‡‹‹Š}|އ‘†Š†“ƒ}‡‡‘}’‹Œl”Žr€†ŠŠ‘‚“’Œ„Ž}|}“……xˆ…“ƒˆjp‡yz‘Šy‰–ˆŒ{uˆ•Œ™€tŽ‘™u™Št|•y}™Ž„€p„”žƒ™s•y“…‰‘‰~’Œ‚‹—v”Š‹Šsœ“yŒƒˆœjŒ‹r „Œ„Ž„•”‡‰Š‹‡…‡šŒ‚‘Ÿ…˜‘z†“ЇŒ™†•‚‰ˆ‰z—‘›…ƒ„”¨•‰ŽŒ¤o™‹˜…’ˆt†‰‰‰‹Ž}Žˆ‚ˆ†Œ”’“€‡Ž…‘z‹“†Œ‡††…œ‹ƒ”š‰˜œ‡™q…‡‰‹†…‹‹‘††‹€’jƒ’Ÿt‹Œ’}‰š…‚ˆŒŠy‹lx‚‘…mz…€‘vˆ…£mˆ†z‘‡vv‚x›w€›‹‹‘€™Œ}†Šˆ‚…w‹‰ŠŒ†’„ˆŽœ„ŒƒŒ‰—‘‹|zŒŽ‘…wŠ„}tx’—œƒy„{{|—{ƒ‚‡wŽ‚…€’–‡yŒ|’v“…‹~}r~‹z”‰wˆ‚‡‰Šƒo€‹}…†€Šw||€|„ƒ„†Ž…ƒ€t…„{£to}y‹~††uzx‡zŒ•“…n†tsuy‰‡…}Šu~œ„‘‚ƒs€‰zˆ{y”…ƒ†~x‰„w”–†‚ˆ†„”y‡„t€{}€zrxvruv}€{€ƒ‚uy~—Žƒz‚Šz‚ƒ¢ƒˆ~ƒ{{†…~ws‹‚|‘‰„|ƒ…|€ƒ‘k~}Žx‹„xsio|{uˆ|ˆƒ“…z„t‹}“Žz{‡zo†€‚{yy‚ˆqƒqƒ€}t€wz~~ryxŒ~}zp‡‡ƒy~|yu{€vj}xww~Œsvtuxylzuƒeru{{z‰|z‡vŠusx{}|€~s„€t{w€u}vy‡}wzw‚twqzˆst~|zz~sw~{uuue€zu…‹{|zz}zuzs}{‡“{‰}{ˆŒu‡‚yƒ„n‘‰wwwŠrw…ov~n†Œ…ss‹ŸŠww…w„‚n›•Ž}†y…~€‹tƒ‡ttsv‘ƒ‡„„‰t€‹wr{ut„†ruw€ou{uzx€ƒxvx}zuy|s‰x~p|…w}„vz{†p{{y{r~|xr„ƒ{Ї{‰r€rg~w~˜ƒ‹}q‡|‰~„„„y„|sw}w€mw}ˆl‡|z‚~€rw|}‰€Žzb‚|zrz‚|s|{vx~{x}x{ˆ~}|†s}‡‘{lx‚w~v}Œ|€{{qiz…u~|z~w{|ut~‚ƒ˜}€„~’y‡}…|€„‚‰’Šwsw†zƒ{u˜|‚„x„ƒ‰z‰|~ƒz’…†¬{……‡ƒ†€z…‡~—„}Š”†„“š…y€ƒuŒ™…qO{p‚{z€‚‹‹‰|‘ƒ”’|m‹ƒ‚~||…|z}Œ€zp†‡†y„{”†v}|‚y~ކ…yƒ~•~Œrˆe†sƒ‘‹†z‡wuv‹ŠjyŠ}‚xj‹„„~€‹ˆ}Œ—‹sw~ƒ‚yvƒ‚|ˆ{|~~}z„‘~y„w|…‡€|‡€€~}|{†zz€ƒˆ|x{|tƒ„|‚{tr‚„x|‘‹‚Œ~|‚{„€Ž„x|uv„w|x€vƒvmƒv{~‹{`wx™uuƒxt€–„p}mqˆxn€x`oxŒ‚†yzyq~†tzz‚†w†wkqq|usw}Œ‹ƒyoŒy‰Š{t‚}~wgŠŠ„„}yu‰m†g†z~vycw|yuxv|yjˆ}ˆww{{yrq|†lqt„m‚ow€€~uqtx€v}z‚‚[syvˆ„v{~vx‚xdyo~f|zu|‡npx}wywky{|‡ryuƒƒ~w}z{gz€Œ~l{}i€~oyŒ}w{hx|v}|މ€€p„w{v‡x~‚iƒ†~‚xx~zyˆxt‚n~ˆ‚~ty…Ž‹}u}{zŠw•Œ€}ƒ~{€tyŠ~r{|v~ƒ€‚wyw}y}{‰„yu~~|~|y‡{~zuŽyy‚~†y~y|‘|‰}wyw‡my}~v|{tvx}ƒ{‚|€u~y†y†yy}}|ˆ|w‚zv}|uws………tzx{‚|}€„ny€x‚„„|v„}zŠ{p}y{y{ƒ‡s„{v…~|{|~„{x|~}„t}~xzyƒx~‡~‚|€€xuysŠ‚€w|{qz||z‰€~‚Š}~yxƒƒ‹w}ˆmz…{ƒ|’’‰‘‹“€€Žˆ„Ž„v‹•zŒ‰”ƒ›‘‡‚€‡ ŒŒ‰n€Œ…–‰qŠ}ŒzŽˆ–‰Œ€‚Ž‹ŠƒŽ•€’jšŠ”†mŒ‰ƒz”p†…’…އދ•ƒ„‚…„†~yˆŒ‡|’‚–‰Ž‡„|Š‚}‹Šƒ|„‡Š’ŽŠ’Ž}q‹‰„ˆˆ„ˆ—z‡”ŒŒ}‹‘‰|’ƒ†|“Œ‰Œˆ‚‘†„ˆ‹•…‡‰Š†‹Œ~~ƒˆ~ƒƒ|‘ŒŽ„„~uŠŠŒ…‹Š”‘…’ˆ“‘’‘‹‚’ƒ}ˆ‘t…‘‘“–Žo‰€‡Š‰‹‘œx˜““ ‚Š‹u‡‘{}‹gyr“‹”’“¡†qœ„‘‘‡}˜ax”†z„y„„ƒp¤u‘•Œ{”–zz¥Ž~Šˆ…•Ž‚m‘…ƒ›†r‘wˆ}t}‡q}¢|zn‡‰z˜•‡…‰…ƒxˆwˆˆu…u™”‘ƒ‚v…‚‚wƒ’‰€…ІŠp_‡’‡|ƒŒ“‰s€p’Œ…|{xˆƒƒ~˜‰‚š Ž‰Œ†„œ‘‰wŠžoŽ~‰z‡hšŽ‡‘‚‹ˆ Œ™\‰{‹ƒˆ—ˆ’|’ˆ’£‚“‹ynpŽŽw†Š|œl‘€}„—pw—„€|…w€{rv|sq…‚wr~‹|xr}Šƒ‰ƒz‡€~|{p~pn{i„mztrw‹rx|X{wy{nƒutz‘|pq‚~€u}vv†€qpts‡gxq‚wxm‚…€‡†pzmwp€{vusv€mz|ynw{}ˆ~~mƒ{z|~}~|¦wo„x‡yy~wvˆ€o|„i{}~zyk„†„m†|spƒ„k{„…y{qlxz€pzƒ‘u„|wyuw‰qƒuz}y}€€{xyŠƒy€v…wƒ………xr€wtz†xs€„xyy{€}z|~€–‚„{ƒ†™v…‚…y|zœ‹–|‚™Š‘z‰Š‘„{vŠƒ‘……‹†…“‘…œ’xm“yq–Œ€†‘…ˆ{‚›‚y‡ˆ{šo…†¥‰ˆŽ{•€†ŒyŽ‘Œ‡{Ž‡ŽŠ‚Œ’Š’}™…ŒŒ’o´rv‚…’oŠ—ƒ€‚‹—ˆŽˆz”„„Š‹€Œ”‡}‰„ƒ‘ˆˆ‰…‡‘|–šˆ…~…€yƒ’‰{“š…™Šƒ‚†x›‹’‘ˆŠ‹‘„€…„†Ž†Œ‰€‰„‹¨ƒˆ‡†wŒ…”‹‡Ž‹„ˆ‰‹‚Ž““~…“‹z‚ƒ~‡ƒŽ”Š‚‚Œ…‹ˆ€†„‹‘„ˆƒˆw‡“‘‹‹‹‘’…~‰ƒŠˆ†‚yމ“}™’“Œ‰ˆŒ†š‘‰‚žŠ‹‹Œ‰Œn‘‚Œˆ‘Št‹ŠŽ‰{Žˆ–Œ’€‚ŽŒ’†ˆ˜’h’‘Š’‹l‘‡‚|Šo‰†Žƒ}‡‡‡~Š“‹…ŠŽ‚€~}z”„€ƒz‹}ˆ‰ƒƒ~ˆ‡ŒŒ}zŠ“Œˆ‡‹€ˆ‚Œ„Ž~Œ‡€‘ŽqЂЗ‹‘†„”Œˆ‡…•…ކ‹†ˆ†ƒ‹‰…ކ‘‡’†„‹}Šwˆ€…އ–‹ŒŒŽ‹˜ŒŒ„‘‚Žs‰•‰–n€ƒ…އ}~‹‚‡x}{|‚z{|w„u|‚x€€†…vˆ|…{ª}}…ˆ€~…xvy‹ƒ†}Œ‘„~–†wƒŠwy{z†‚z‚Žz~w}|}†p‘Š€m‹ƒx€††}„~uƒr~x€tv…Žmx‚{uo…x‚{zy~‰‚v~x}y–z†zf„y‰ƒ‡~v‡w„~}zrzuv‚‡nr†x{‰ot}s‡…sv…{u‡w~{r‹}x‹‰€w|…v~€xy~rv~†ƒ‚~ƒ}|zw‡vŒs}yr}yys‚zp€‡ƒ{|yy‚€xzu{‚ˆv‚‰tŠv}„n†ˆz…‡ƒx„‚€Œ‚ˆ}gz„’y‚’‡†€‹†€z¶v‚„~ˆˆŒzu‹‹…†“—ˆŒ|“‚‡x|‚y‹€„†ˆ‚ŠŽx{{™ˆoŠƒtŒˆ~‚ƒˆoy}‰sqˆ‹„‡ƒ…y‡€†}Œ~‰†‚z„ˆ}†|†€~•y„„zf‚‰ŽŠˆztˆt„€ˆqv‚su~zŽq|~v‹y~‚€†„’z|z…}v‰€}zyŠ|„€†vxˆz{‹Šz{|‚}‰~ˆ„}|vzz‘s{u}„€z}…vs…‹‚„xˆ€€‹|szv{|Œv‰x€€|ƒ|ˆŠr‘†…z†„Œ…|„ƒ‹hx~†yxz‰†…‡‘Œ€}„¹v€‚‚„ƒr‚ƒ……†|‰”¤€€Œ…z‘€Œy{މ‡‘}‚„‡|ˆ†w‰–…„k~ŠŠpŽŽ‚|†~ˆƒo…|‚{uŒy‰‡€‡ƒuˆ~‹{~{ƒ|xŽ…t‰y€€d{‹žŒ†vx}zv‚rv„pyx~{l…‹~~~w„x…€‘vuv„}}wxy|‚‹†ypŠyz„‡|}xwƒx}‡ƒ…z‡~|{y‹~’q~{ƒ~{z†utx†}‡…z‡wry‘~{‰{xƒz}|†u…“y‹€xƒ~‚€‚“ŽŠ|h€~x‚‰„†ˆ—†{xÀt‹‘…w†vqŒs{†’”’}š€Š}|ƒƒ‹‹{}}‚…‰Œ†x‰—‹r‡ƒ‚‰qŒ–‚‚€xƒŒmz~xt{‡‚€„…yy|~‚ˆ{‰‰u‡ƒ{„‘yŠ{{“v€a|’އqv„wƒ|Œrx‡‹svŒ{Š„lyx{|‰w‚…ˆ€‘~x}zx~€zxy‚v…u„uq‚zƒ’|~w~€zzŽ|Š|ƒ~‹|wvt–u€u{…}|ƒvnŠ‹…‚v†‚ƒ|o|sp|„w„‡u…~ƒ‡}“‡ ƒt‘Œ„’Œ‡†Š€ŽˆŽ„ƒ{‚މŒ”}‹„™•‚†™„ŽuŠŒ‘r™‡š†{‘†ƒ‚z’…™†•†Œ‹†v‡Ž’’pŒ„oŽŠ‹wq€‡Œ|}‹‰†r’Ž–‘Œ‡{ŒŒ€|}Ž‚”Š‹‹ˆŠ„‚ŽŠŠ†Ÿv‰†‘Ї‰—€–‹œ‰‚‡|ƒ‘Œˆ‹‰“‰ˆ‡|Šƒm…†Š—Ž…‹‡‰Ž‡ƒ…‘~Š‹šˆ…€‘~ˆ“›x˜””~~x~‡{„{Žq‹–ŠŒ†ˆ‘ЉˆŠ‹‡yœ~’ˆsŠŠ‚…{‰oƒŒƒ†r„}~yŒ•‡uƒtzu†|Œ……m~ˆ–{}¢Ž†……„‹†wº{€‹†sŽˆr€Ž•x„‰ƒ€‡‹w‘„‰‘q€€k“‡€‘~“”…ˆz„siŒ‰v~‚x{ƒŒŽ„†tu‘p~|yv~–„Š~yƒ‘oƒ„pŒ}…†€|~‘€}…{‚}—x~‰…cŒw€|~u„{…Štr|ˆysŠ„tur{{l{†z‚‹›‚„„…wq€xz•x‰|†y|}yzšŒx{y|Ž‘y†‹‹y|yp…‘w|mrŽ{}wyz~zŒ€}ƒƒ…†unu—|†Žv|‰w}x…}t”†}l’Ž“ˆ†ŠŠ“Š|€”}‚|”š”†‹š‹€”†Ž•qs—wvˆˆƒ‡›’„x‰“ŒŒv–”‰}˜wŒž†„ŒŽ‹~”‘‰Š”ƒtŽ”“zŠ…ƒš˜ƒŽ“”•v–xŠˆŠn—ˆ‚‘…‰‰s‰’ŽŠ‹’˜ˆ}…‚‹Š‹„ƒt…Œ{‘†‚™Š‹”‰‰–“ž‰‹‹„………ƒ‰”Š‘ˆ€ˆ‹Ž„ƒŒ†‡†Œ}ЉŒ‘„‡z|‚•”ƒ’š‡ˆŒŠ‡’€ƒ‰}‚y‰–’~„‘™Ž†Š‹’Œ’“‹xˆ™†€‚‰Œ‰Œ–‘Ž…‘‹”~ЉŒŠ|“Œ‰m|’‰Š‹„„†k†v—|{w“Ž‘ˆ‚‚މބޕnuŽsy‰˜•‡‰}t‡“ˆt’–|‘ˆ”wІ™ˆƒ“€‰‹‡ƒ‚šŒ’ƒt†Œ’}ˆŽ•“ˆ…›štop‹‡‰~›‹ˆ˜wŒ|oˆ“•Œ‹Œ„”Œ––‘„ŠŽ„xŽ—vŽx–ˆ‘ŠˆžŒ’ˆz™†ŒŠŽ…‹‹ŽŠ„‰‹Ž„ˆ‘‘‡ƒ…—Љˆ‘ˆ…‰‚Š}“|~Ž”‘‡ŒŽ€‡Š‰ˆŽ†•ƒ€‘”›•‘ˆ{Š’šŒ{~—‡Œ‚{Š‚‹„‡‡€‹’ƒ˜‘•o—}m„„ˆ†…vƒ‘†Œ•}‚›‰Ž‘œ’…‰–lryy˜‚|–~o˜”•Œˆq•‰u‰qŒmg‘…{’{‘Šˆˆ{œŒ”™™˜’w“ˆ…‘‹—‰Žz“™˜l–†Š‚†ŽyŽ}ƒ‘o{‘ˆ‡Œƒ‰|…†‹€Š‘ˆ„…‘Œ–zƒŽ‹–†“Œ‰”„›‡l}wƒ‹Œ…|ˆ‹}~“£Œ{‹–…Œž‚†‚¡”†‹€€‚‘¥†“œ’ˆto•˜Œ‰’‹’{~ƒ‚{†† ˆ–‹Š‰ŽŠ‰˜’–}‰„ˆ{˜–’‹‰–†“–‘†t€ˆƒ‹†‚{‰ŒŽ‹•„•ˆ†‰‚ŽŠ„Š‹}–™’“Œ„‰™ˆ‡Žƒœ‰‘‡ˆ‰…{‹…xŠŒ{‚Œ‡xŠ—Š‘‹„Žƒ‰}‚Ž¥‡‡Œt‰ˆŠ…t†y†y‘sŽ~‰|ƒŽ~€…Œ…Љ}„y…‚†‡‹{šŽƒ…Œ|wŠŒ‹ƒ…Š~‡Ž‡€Š‘Šˆ€Œz‰‹‰‹‹‹Šƒ……‰‰‚‰xŽ’Ž‹…‹z„‰Ž‹–ƒ€‹Š†€‘‹|ˆ‰ŒŒ€…‹€ˆ‰€„Š‹‚“‰‹‰Š„ŽŠy‰†‹‰’j‡ƒ‚†”}€„ƒ{|‚„{”vyz‚†„ˆl~…|zƒ~wƒ„y…Ž‚v€‚„xxxxyw{“z‡€„{€ƒ|ƒ{~”~ƒrz‚x{…‚‚‡|}…x‚~‹z€}n‰~~€|‰‚‚~||u‰s€ˆ‡|s}€r‚‡{{‚}Ž’z‚}ˆ†…}|~Œz{€v|~ˆs}pƒy’w€pƒ}}‚y‚~€ˆƒ}y„…‰|{‚†€}‚v~€~€…„{ƒ}z}„€ƒ‚x~~€€|€}x{{€€r„s€‹€‚ƒ|€…~€~‚~v‚|s}}~†ƒ~„„~z‚„…Œz„tƒ|~zkˆŠŒ…z~vƒ€tq~Œup–ƒ€{tšˆ~v}skxzxcŠ€q{~x|swt}†{~veqsp}zx…xruƒ€†w€{„…yuxuˆvf‡~u€u~€t~y}†Š„Ž{s‘pvwrnxv…t€€|‡—|{z}yq‡€€w|~|–‚}ƒwˆzzn}ƒ{e„q~}Šƒ|‚„‰†‡~|~y~ds|~r€{~y|…‰x…t…}zs„qvuyz~‚}|}‰…z{~…‚‰„„‡yz}‚z‰zn{…xhy|‚€‰‡Ž„‡y„ˆv‡…ˆ€vœw“p‚~‰Žx†‹…¨m~}„“‰”š„zr„™‚ry›•†ƒŒŠg‹Œ}¦{Œ‹u€‡‹{—‘“r}zŽ~o’…~„s’†z…„‡„_ƒ‘‹}‡š•’qž‚…z’ƒ™³†|y‚‰yt„wŽ‹‡Žv~yŽ…„ƒ‹–€‡ƒu–—x‰ˆr‹‡ƒ€„„ˆ~Œ“ˆnŠ¡‚€™™Š‹˜†Œ”“„†xx™†ˆŽ€Šyq}œ…’y{–”…z†ƒv“}‡s‚†Š‹|u‚–––|€ŒyŠn†‹–{yˆ“‘g~ˆ“œ|~z}Œ‡„Ž“ƒƒw¢„€}~БІ‹’~ŠŒ‰“„”Œ”zŒŠƒŒ‘{€”‹’‹˜—“‡{~Š—‡’Œ‚œ‰… ’ˆ‡‡ƒ{Šv“™yw…š…„…ˆ—‹Ž£ˆ‚‚†„zŠŠ”†‰ƒr‰‚¤Žt‘~{…z›s„‚}~ˆ€ˆ‡Œ“ˆ„q€yzƒ„’‹–„Šx ‚ˆ‹x{…‰‰•š‡—z~‹‘„„БЕޓw†Š“‡…„Š…‚ƒ’—‡•x•›ŠŠ…‡‹w‰Ž ‘š˜w{{~ŽwŽŠƒ•Œ”†Œ}‰Žˆ~‘z}†~ˆ˜‘ƒ‰„Ž’““Š‘~’’‘Ž€ƒ…—kˆy†‘‚€cou_–xwwq{šrd„„qŠ€|jyq‰‰xv‚||{i›yiy|rpjsizoT~v{lw…„|uvf|}pj{…u€}i{qm‚l}y…Œ…‚‚zkaŠ{y}jƒhyyjžˆ€‰|vumxuszkyˆkynrpyyt~qvf‚u„y{utuŽgstqfqyƒaxrtrƒvovptpunlz‚…duwqr{qtwwvvsvmpqptz~yxy}lhv}{lu{fv€yoxwtqv~mwl„p{vzk™u€‚ojpqdmxwku€tvsnwwt{swŠwxo{‡‡{x{lxw‚s‡‹Š{wwgzŽpxvv}uyv|Žzv|vwzlˆ„yy}vtstlykurxyv€~|}‚fyxts|i|ŽyŠvqy|zpyrr‘{w}vdˆ{yq~o{qz‚€Š|{tyrw~rvtxkm}r||wgwurvu’s{swvwv¥pwuqitv„pqsuqzvty~zypix‚qzyvvrqorwrtzuruxuvruzz|xsruuz}qwxuswywv|uyw{trƒxywww‘w}orosorzpr}txuqxyrywq‚…v{ƒt}}ˆwyzxytŒ‰ŒŒ}„†‘‡ˆ†’‹‰~ƒ‹ˆ†‡€‚†”ˆ—’‘Š…˜”…‹™š„˜ˆ†…‘Œ†zŒƒv{‡zŠ‹~ƒŽŒŽ’‡”’ˆ~ƒŠ‡wˆŠ‘ƒ‘v~|wr‰~Œ‚Œ{‰y€Š‘Š‚‘~‚Œ€’„€Œz„‡ˆ…„{ƒ‰Š‚ˆ•މ}„Šƒ…Š„ŠŒ‹}ŠŽŠ…‡‚‡‡€}}‰‘‚‘ƒ‚Œ‰‰“—††ƒ“ŽŽƒŠ••’‰|x„‡Š…}‹„ŽŠ…’y€Œ‘…‡„†‹“Ž|‡ŒŒŠ„Œˆˆ{‹‰|…‹…“ˆ…k‰„‚~‰~”ˆ‰}†‡}ˆŽ‹Œq†€pw—”‰€Š‰Ž‘Œ{‡ˆ~‚Š‚z¢„Œ…ž“ŒˆŽ•‘u‘‡}Œt‘†v‹œs€‹…™Ÿ…‹~„’…Œ“‹„†ˆˆ–‘…š‰Š‚yj’rŽ}m‘š˜€…€’wŸ†~}”|Žˆˆ“‰…‹t™~ˆz–ŠšŒ‹‘‰ˆn‘•x{‰w•…¡‚„–‡Œ†‹ˆ‰”’ƒ|“„Š€‘vŠˆ‹”Žy‡‹€~ƒyˆ…„€x…ƒŒ…˜ƒƒ†}xŠ‘”•Ž›rˆŽ€Š…€”ŒŠ‘|s‡‰„•{~xŽ…’•Œ€‰Ž€w~…–„Ž‹¡t}œ†{‘•š‹˜‡ƒ•„…{z”†š†”„†ˆ‹’ž‡ˆ•w™–ˆ}}”‘ƒ}—zˆ›†€„‹›Œ•‡–‰€”†Š’ˆx“ˆ‹{‚››lŠ€‘xl–†—‘ŒŠty…‚•ŽŒ…‹€•k…‘‰‹~˜‹ˆx‹ˆ™ˆ•މk‡ŒŽz}~‚‰‰ššŠƒŠ„…•Œ„ˆw†‡Ž~…Ÿ€„’v…Šˆž‡Š}w–‘‚†z{€†ƒ|’ƒ•Ž•}•†ƒ‚‰z€w“•Š–š™Šl~‹ƒ•|Šˆ~ƒŽŠ‰’{•~—rŠwx”ˆŠ‚‘Ž”ˆœ€ˆƒ–‹‚yˆ‰ƒ{z•{‡|ƒ„}”’ŠŽˆ‚†–‚›Œ„‡‡‹‡˜šz›Œ„s†…}“ˆnŽ‘™™Š„”~•„†ˆƒ”…“}Ž{y†y†w—{zx‡Š‹’„}ƒ{”‹ˆ‚‚‚sˆƒ„ŒŒvˆ~š—~Œ—œŽ‰‰v‹‘tq‹zŽ–ŒŠˆ“€y†Š‰{„ˆ‹„‹…†‹Ž‰Š{•”Œ•‹„œ~z‹}y…}ƒ~|~ˆ‡‘ˆ†…€ƒŠ€‡…—‡…•…‘‡Š–†{ˆˆ†Œ†‚…”~„Œ‹Œ}†rvƒw“Žtrx›txsngt hlywt’}v€pt‹soluvnsl•pu{‡ofegpg™z„mo{yw„…yuˆs}›j˜}pwohroutxƒg€tf‚}q~mrv{‡ww€zt…j|ywytqev‚}Z|vr„€qur‡zxzxtuuœpu|fiux‹orrm}jft|vyxvkumpf~|xwyqvx~vtlnoutyot~xtptpƒntx{zw~mjzxz{mr„qu}kƒx{tŠsuzjtgumnzvmtzwxksqox|~r}ˆ~}vh{…‰w}}lphstz|}{vq{lsqu“z}Œ‚xxn{ˆ’|s|{}{xpŠx}|vruskrv€wyw‹ƒyŠ^ywsxr|mŽxœykxzw~ovqo—xv|{zbˆyzn€p‚nzy|•|}„nyty‰wts|ilrv{ut}}y”‚pvtŒr|rvwuu¤kutodtv…onnsnvjytwu}kfu~mzw€ttqopqvqwzrnruuvpu|}{vsotuu}txyuuuyvtwx€t{tptyvuv–v{lrpwnpy~hq|tvzpvwpwul†uz‚t|{txwuwswi|{€|z{xk{„sov‡uv‰ƒwztuŽŒ‰vz~wv‡jš‡wv}vquskpy†vvsˆ„‚bxvs|o€h~xv‰zlv}y€ovrsyx„xle‡x{nmpyq{Ž}‹Švxp†vwt{inp|}tt~wŠ…rwv‹q}tyxvw›npwnjvv„iortn†yj{ryt|mkvlxz}rttrnswox{smstvwov€€v}wpqtw~~qxwtwzzxvxx€x{sq„szxxx’w}lpromr|~pt}tzsrwyrwuo„‘v|u~~xzxxwt†€Š…„{ˆ‰{—Žœƒ~‚Œ‹‚ƒ{|‡—œƒ‚ˆ’Š€š‚“‚{}—™…’Ž’€…{‹…sЇ‹ry‘k’ˆyƒˆ‘‹ƒŠ}Š{“ƒ… “‚Š‘tŒŒ˜’Šu–¤{‹}’r…‘y…}”ŒŠ€u‘††‡‘{}…€”–Œ„’}˜™“’x€Š|z‡Š„z”‹Ž†‰‹’ˆmˆ‰ˆ‚|…ƒˆŠ}‹Ž‚‚†Œz‘‚ŠŒ•–£‚€—•„ŽŒ|‡ŒŽ}x„ˆz{‹†ˆ„ˆ‚–’‘Œ†‹–ƒ“‚•Ž‹Œ…މ‘І‘|‹sŠŠ‰‹‘j‹…‰…Ž|~‚†‹|‡ƒ€€y~’}yŒ„x€‡zƒ|}ƒz‰Œ||vxvj€†‚|xt~‰‚}~€|‚t’„‚‚}………{|xˆ}|‚|zŠ~yzt…€}{‚“„„—}oy…y{yzƒu†z‹‡}‚{yƒ‰|…€€‚~v†v€€|xqˆt„_†}v„ƒ…†v}‡€y{ƒƒ€ƒy€‚yx{„}…†…†|~ƒz‚y€y{}…‚ƒ„|†…‚~‡{‚ƒ‡ƒŠ‚ƒ†||}|ƒ…xƒ‚†„m€ƒ‚~‚†€„ƒ€†‰‹|…ƒ‡}xhys}wvtyŒrnxžqyƒyzqyuqz{~yƒf‹„zz~wsvtrtxvxyІ‹|„k|yv~v~k‚x—ymx}yqvsz†zy‚x|e…{|q€p‡syv~’„ˆwytz{svr|kq‚s†|vm}y’sywrzsxxvw©mwvqguw…opsupˆxj{zzv|njvo{z€utsrutwux{upuuwwqv}y}xvquxy~tzyvy{zxvxwyw|uq„u{xwx•x‚}oswvor{}it}txyrxyrxwt‚ƒx|‚v}}’xyyxxtww‚y•…{zyj{‹z{ƒs—}tz}“‰zs~s}yŠqx‡~}}yu|ul~ywzx{xm{lzl|{u…v~qy…|…vy{}~€swtw–~vvˆ{j„wwszx|ˆƒ’}†—yszsvssppsu{qŒ‚vˆ|wvp„zuyyxx¤y}zuuwx€pw{zw|zv{ƒ~€wq}†‚x}~~z{wwtv{rqzyyu}wxww~}|s{ywxq|wuw||z|{y|„|{xxƒ}|z}{{‚tts{tx€€qw€u|psz}x|{{ƒ‰{„v€€ˆx~}|z„Œ…Š…Œ†ˆzŠŒ’Љ|ƒ}”‡Š~…‰„‹‡†’‰ˆƒ„¨Œ†—ŠvŠ€€vŒ}x”€…ŒŠ‚€Œ‹{yƒi‹x„|ˆ“††‚Šz‹‰‹•…r‡uŽ}‡€ƒ‡~—€|z‡†–~„€‡………Œ‹‰’ˆ~€…€‚Ž’€ˆ‰‚‘Œ„‡z’„Š€ƒˆ€‚Љˆ|~ˆ‚††ƒ„ˆ{‹Šz€py„‡…ƒŒ“†ƒ‹‚Œ€‘…‚„€Œƒ”†zr‡Ž‹‡Œ…‡‰•„€‡Œ~Œ‹‚Šz‘‹Š…“‹‘‡‚‚Š€ˆ„‡†ˆˆŒ‹€ƒƒ€‰ˆ‹™ˆzކv’ts‹ˆ™|zzozzlzƒ{u–‹wz||”‡vsyvsu…i…‹{v}wtxrk~qx„uyvm€y~_zus„v|j}–y‡usx|{qzr|…zv‚‚nd‰|wr€p€vz|ƒ}’~xrˆdsurwln‚q€|wi‡uŽ{svs†t~swuvvšq{vrisv„spuurxlxy{wqky‚€r{z~vvtrxsxttytrpwuuru€}z}xtttu{~pyvty|zxxlvxƒy{us…v|yxx‹x~ornzps|}kt~syqqwzsywux|‚t~}‰xzzyyu–“”•€—Œƒƒ“‰q€†~Š…Ÿ€|‰‘—š‹—„Š˜Š’†“„Œ——†™‰}‰Šz‹ƒ‰‘x”ƒw““‚†’¯¥Š„z{…„Ž’‘“ƒqކˆŽˆwŠ}‚Š…v€†‹€‡‡ƒ†‡€’„‹‰}Œƒz€{‹–‚ˆy’ˆ…Œ|u’w…Љމ€”“„|z‚“zˆ‹Š…‡•‡‚€™•‡‚ŠŠ~€†”x‹†•“ŽŒ‰ƒu–‰œŠ •}’ƒ‘Œ‰{~‰r‚s„‘†wŒ}Ž€…‰z”ƒ‰‘‹„€‰Ž‰†}yЉz‰Š‡~Žm‡‡ƒ˜€uct‰•ˆytoeyŠokwŽxw•†xztxЉyqyvwsg‘…zv}vtxsgznv€uwn~{‰y}{zsr„s€kvŽvqx|yotqw…ywtrb}zxp€ovqz‚}‡ywsƒtrttzim~r€}veƒ€uˆ~rvpˆq|qvurušnwspcsu„lopsp‡tiyxxt}peuoyw}vuqoxqwqvyspkuutptsw{wupsvx|rwwt|€yuutuxu{tp†t{vuwŽv|mqlmnozbq|qxrovxpwvq‚wzs|{†zwxvxsœ•‹‰y‡†…‹‰ˆ|“Œ…„x‚|† ‚‚‡‰Ž•‡”ƒ‰†„Š‘“‡ž–…‹xŒŒ‹•‹†˜Ž}•…{Š{’ŒŠq–|ŠƒšŠ{†‚‡‘—ƒ‹Ž‚„‘‚‘އŠw|y„ƒ{‡Š}ˆ~ŽŒƒ“€……„~˜€•‚‘‚‰~ƒŠ{|”€z‚‘‡|’™Ž”u„|o“‘ˆ‰žˆ”‰ˆ”•Œ„†~|‹ŒŽ’‚†‹‡•Œ‹y…ƒ‰’|ƒ’…ƒ‚’xy€……’~ކ“€–|‹}‹„|€†‰•‹”‡”‰‚Š€‘…†…‡‹~‚w{‘’‡€|€Œˆ–ƒxo”Ž~wqrxyifvyw’zxs‚Œ†up{u|tzj…ˆ{y|xuxs]~tv‚yyuzƒ„‚}e{us€u}p~¥x‘uty}{€puryŒzvwyrd‹zvrozsz‚€Ž}|ws…oqtswlm~r}yhƒ~x‹zswr€tyrwvvvšqzvqitv„sqvuqƒwiy|zw}pkxƒ€r{y€wvsryswpvzurqxuvtvyz}xvsuvt}rywuw}ywwqvyƒwzxs…v{wxx‘x‚~otsspr|hs}sxhpwysyxt€ƒx|‚t}~‰xyzyzu¥}•žŸ}…„ ‚Œ‹‹¤–„y‹œˆx~ €›su”‘ƒ’™–„†‡wŽˆˆ¤z‰‰„nsŸu’Œ³£Ž‰{x|Ž­‰™˜‰wŒ‹‘{’o†}—ƒ•s‡ˆ}‡xŠƒzœˆo‹˜“ˆˆŠp||ˆ–“ˆ‡|™†t—|qŽƒzŒ†Œ‰‘p‹–„x€ˆ•y€Ž€’zvŠ‹š•–x€‰w~ˆ|‡ƒ‚Œpˆ‘™‘ˆ„…Œ‘~—™sp”ˆ‚‘}Š„oˆ”’‹z•Š~}†ƒ~„’“„•”˜ˆŽ…}‹Œv„‰‡Œ‰‘†™‰n}w‰q˜‰}ˆ‡…|~xu‚‚tu€Ž€t—€}|y‘Šyz{|~‚{kŒ€t|~vyuv‚~~~}}h„t…xk}{z„}ryƒ‚|z|ƒ„…zwz|‰ykw‡x~€u‚~~†‹…’Šzs“sz|vryx†v‚~–~~†{~|tŠ‚…y€}~~‚~ƒx‡}|€x~‡‚{m…v€w‰„€~ƒ„‡†‡}~€|€hv}€u€|€|…‡|…‚w…|tƒtwxz{ƒƒ}‰†|~†€ˆ‚ˆ‚„‡{|}}{‚ˆ~r…zkz~ƒ‚€‰†ˆ„‡{…ˆwˆ…ˆtpu‰Š{}trc{ˆnsw{x‘‚txpy‰…sqxw|x€hŒ„x{|vsuthvktywxuˆy~zu{wrr~k€’y“wsy{xouru“zw€xb€|zp€p|oz€}€rxux†tst{jnt{}whv€xƒ€rvs‡rzquwuu£nzspetv†pppsq‡uoy|xv~pev‚~pzw€vvqooqvqxytqowuurt~v{{wuptuu}txxtxzyuuuz€u{sr„w{uuw˜v|nsornpyjp|rvrowxpxwr…wz‚s|zŒxxxuxsš††{’„‹‡”‰–‘„…‚‡…Ž£’‚Ž…Ž€ž—“’ˆ‡ˆ˜ ‰‰‘“ƒšŠ‡š’„‚Š}”‹xš‹‡—y‚¤Šz…œ‘’’—’|€„Œ£‚‡‰zy“Šˆw‘{€k|„|…‚~|Šƒv}ƒ…‘‹™„t~‰‚ƒ€€“„•~…zš€…„ƒ}’~z“…’š‘“Š•|“ŒmŒ–މ”‡“ˆŒˆ†„}}‰…ƒŽ“ˆuŽŒŽ„‡„‹ˆ•Œˆt‚’‡{Ž~}ŒˆyŠŒ–Ž„–x„„‰}†ˆˆ˜‡|…‰Š‘Ž’Ž‚†“‡€ˆ•…‹‹r€~†•„‚—„{•‡‘‘|–†‰z‰ƒ…„”‹†‚Œƒ„…ŽŽ†€…““‹›ƒˆ†o†„s‰Ž„…Ž…€sŠŸy’ž…‘œ„ƒ‚‰“ €‡‚Œv|t‰†ƒ‡„Š…‡„†€ˆ…ƒ|‡Šƒƒ†‰†‡~‡Œ„}‹‘…z€~†p{‚}‚Œˆ€uˆ„‹Šˆ„’„‰‹„|z‰¡sw…’}€•™~ƒvx“†‡†}‰Š‚|ƒ‚ŽŒ„‚„އ†‚†…|‚„ƒz{~x~Žˆ†ˆ‰‚|ˆ‚t‡„‚Ž…‰”‰ŠŒ„‡ˆ‡ˆ–~~†‡‹ƒ‚Š~…Ž~‰|~x}u‡…{{nkzqmx|v•†wyx|‘wt{u~ve‰†y}|wsxt`ttˆxzt}w|{‚k{wq~s}o|”x‚vsy|zptrs•zvz‚nc…zxqp€sz|vxt~wptswkkrw}xpx‰|svrˆtzrwvuvqyuphtv‚pqtur~vlyyzw~pix‚€r{ywvrqqrwrtzurpwuvstxz|xusuuv~qyvuv|ywwuvyw{ur…wzvww—w}orstpr|€gs}rxkpwysyws‡x{‚t}|†wzywxut†r‡z|zr}}ƒqnt“v{‹€xxr~wp}v}|xfކx‚~wsztfqvzztއz‡d{yryt|r˜x”xnxzxpvspŠywz}wcˆy{p€qmzx—|€iystƒwst{jnr}|wm|zqwt‰syrvwwvžmwtpftv…moosoŒumz{wv~nhv‚~o{w~vuromrwvw{tppvvvqu{y{wuqtus~tyyvwyywuyvyu{ur‚uzvvv¢v|nrvwopz~jq}tvvqwxqxvo{vzt||uywvyt‰‹ˆƒ‚„‹ŠŽ™~š‰„‹€‘‰Œ„~}™‘Œ‹‰‰œŒ‹‚–‚œ‰‹…‰Œˆ{ˆ…w€z|„†‰x‡Š˜†‘šˆ‰‰Ž{„‡¦’Œˆu‚Št‘{{Œy™r{‰z}~‰…’…}ˆ|~‚„~ŽyžŠ€ˆŽ}w†Œ…ƒ€ƒ’‹|ƒŽŠ‹‡ˆ€ˆt…”ˆ}Œ„‚…ƒˆ}š‘v“–’ˆƒˆ{…ˆŠ‹˜‘‚|Œ„ˆ}…Š”‡‰~…‡{…~‡‰“‡Œ†’Ž‹ˆ“‡’Œ„‹„w„“€ˆŽiˆ„‚|šz‘˜Œƒ“|‰‹–‰‚ˆ}„‰……˜w’‚‹•„‰ˆš•’ЉŒ‹›ŒŠ‡—“˜ƒ’‚Š‹…ˆ‚Œ–x™†ƒ„y’‘Žs{ƒ“•„~“™Š•…Žœ}Š}Š|v‡‚‘…‰…„sŽx‚‚„€…‚y‹~…–‰Žx}}Œ“~†€˜o‹v‡„Œ‹~qƒ‚’}€”„¡ŽŽ‘”|„“€jŒ‘Ÿ‚…ƒ“€|‘ž~€†ƒ…—›„ƒŽ„ŽŒˆ€’†‰‰„‡|™z’Œ‰zxƒ}€—‰}zˆ‡Ž”•}’q†‡x’x””‘‰ˆ‹†Œty’†‚‡„‚’w{‰ŠŠ|tyŽƒ“Ž›{‘—w†~…„u‚~Ž„€zu—“ˆ|Š–’…‰…xŠ}‡u~~…‹„…‹¤Š”‘ƒˆ……~Œš|‚€™†l‡zŠˆ†z‰‰{‰}”y~„†‘‚q•†Š}—{—’uŽzvsŒz“|‰Ž}pˆŠ‚z’}—xޑД‚ŒyŠ‚~tŒ|„‡‘‘ƒ¡f}ƒ‹{}‹|‰„Ž”Œzz~‚Œv‡Š…‰—ˆ{€Ÿ„}|~€{wu€‹‚ƒyk|Ž‚“zyxˆ{vy’ƒ‰ŽŠ‡Ž|‡Œ{‰~Š‚—€‡‹h‚Š€Œ{ƒ‚‡z‚ˆ–p“•w’q„r‘ˆŒ•xl~|…yzyxl{•xpy™xv“‰vyvt‹‡{tz|~z…n‚ƒzv~xsxtszww|vyq{|„v€ezvvƒu{k}„zˆwry}z€pvsy…|w€xf|yro„rz|”}~”xwqƒssvsxln‚r}xo‰v‚twtsswwvv¢qyvrluv„vrwvr…xuzy{x~qlxƒ€r{z~vwtrztxpvyuslwvvrv€v}xutvvxrxwuyzzwwxvy‚x{tsƒw|yyx“x~orryps|}lt~txvqxzsyws‰x|ƒu}}‹y{{yyuu{€|‰Œzz{gz‹xvzx~r”uyy—„tx{u{w„j…ˆ{v{uqvsj|nv{uxts}wz„fxtr€r{g{yupw{{oyqxŽzuy‰pcˆ|wqotzz€Ž}y—yxs~qvurvjn€qw|wl‚s‘ysvr—t}rwuvvŸqyupjsvƒopvurywlyz{y€rjxƒ€q{z}uvsrurwpoztrvwuvru€~{}xrsuu{~nyvtwyywwuuxx{psƒxzyxxŒw~oqkwos{nt}r{upxyrywv‚Šw{ƒt}}Œv{zyxuŽ~މ‡‰ˆ‹ˆ‰†“}ŽŠˆ‚ˆ†€{މ›”™‚Š…Œ’—“Œ’~’›ƒ’ˆ‡~‚†{Š…uŽ{„ž˜Š…‘„Œˆ…‰|ˆ’kŽŠ…‚u…ˆ…tއz~{†sŠ|Š{Š„—†ƒ†ƒŠ}‰†—ˆŒ€Ž}ŠŒ…Š€Š|Œ‹“‚ž†‹“~…ŠŠ–†ˆŽ‡Œ„”‰‡Œ……}…‚€‡”ƒŠŽ~‹Š‹“†…Œ}‰“Š“Œ‡’Ž…’{€ˆ€‡ˆ–„‘‡ŽŒŽ†‚‰€z€‹ƒ†‹ƒ‰ŒŠ‚zŽŒ…—†‚“„|x‡~ˆŒ‘€‡jŽ…‡†‚ƒ’ކ†‹€‹‹Ž’ˆ’ˆ™€‹ˆ†ƒ„ˆ€z—‹Ž–”™Š†}•”‰†”††›‡‚ހЅ{„wŽŠz{…ކy”ˆ–Š’Š‹ˆ–‰zˆ‹‹‡†‰u‰ƒŽŠu~xŽ{•s…|ƒˆ}‚’Ž‹ƒ‹ˆˆŠ|x†…ƒŒ‘‘…’}“‹’‡‚ˆ|xŽ„zŸ‡‡ŽŽ~ƒŽˆ‚ŽŠ‰…‰z“‰ŠˆŒ„}†‚ƒ‰Šˆ‰Š{’“„†‰y’“•Ž}ƒ‹‚€‡€‰‰’ƒ‰–‰‡~‰†€‡ˆ€|‡…ˆŽ€‘Œ’Œ‹‘”„wŽƒ‰‹ƒ’”j„ˆƒ…|’ŒŒŠˆ‹”|•–z‚„‚•‚}Ž£™‹–Œ’ˆ‚„…”…Œ—…•–‚ˆ’…‹‘€|“‡z•‚x„ƒ‡|Œ€“ˆ‰«•~‡‹Š~ŠwŒ‡†t˜†‹Žw’‰€ƒ„x„€{ƒ|™Ž„—‰†ˆƒz|‚Ž•‘˜€’u’‰‚Œƒ}ˆ}‰‚wvž‰’}wŠ‘ŽŒš…’„…™‚‰zˆ€u„v‡}“z‹“—ˆ‹}„ˆˆ‘…‚ˆ}“~}‹t{‹’’ƒ“‚މv†„~І…–q„Š’Œ‡•ˆ‚“xzuˆŽ€‹‡‰”‰”l{‘Œ‡y‹Š‡Ž‚Š„Œ‡Ž‹‰ˆ~“ЇІЀ~…€Œ†˜›šˆ‹Š”™‡ŒŠ‰›€‰{ŠŠ|Š‚uމˆ‘}‹£ˆ–}Š–ˆ„‰ƒ•„z…‘~ˆ‡„u~ŽŒ–‡t‘{ƒu‡s‰|Š}ywx‡ˆ€ƒŠ‰}}‘ƒ™€ƒŽ{‹‹†~ƒ‚Œ|‚„І‰ƒ›‘|Œ‘‹žˆ‰ˆ‚‹‰„…ˆŽ†‡y…–ŽŠ†‹‘‰‘‹‚yŠ’Š–ˆ’—‹…‰’Ÿ|”ƒ‹ˆ}~‹€y€–|€ˆ‡†Žƒ‰‰“†‘’‰{’„Œ}”“}ކ‰‚j„}‚‰}Œ‰…‘†~‹‰‚‹ŒzŒ‡Œ‰ˆ}ƒ‚Ž|˜š•€ˆ†ŒŠœ’‘‘Ÿ‚’ž…y‹Š{‹„u†„™~Œ¡‰™}z†’‘Ž‹‰†š|†p‰‡‚uv’Ž˜s‹ƒ|tzxs‹~~~‹}{|„¤‘€„‡~€‚ƒœ„y€ƒw„|ŒŠˆ†™Žž‹|†ŽŒœŒ˜ˆ†‡‰”‹‚†Š‰‰€{…š{—‰Ž}‡†‹‘‚Š|—‰Ž‡Œ“‹››‹Œ{~Š‚‚‹—‰}‰’ƒŽy€•t‚Œˆ†“{{‰’Œ‹”‹’ŠŽ„‰†ˆ|ˆ“ƒ’‡ˆj“„z„‘ƒ{btŒŒ…ztrixŽpuužzw‘…uzr{ˆr{swu…fzw}wwutp{pvƒuytz}‚~n{wt‚q{m~”x†vqx}zpurw‹{w„{{d‚{xqp{pz„’}ƒŽwsƒwnurykms~}wcw’vswsŒszsvvuv£pxupivv„nprtq€vkz{zw}piw‚€pzyvvrqrswqwztqmwvvrur||wurtwx}qwxuw|zvvxuy‚w{ur†v|xwww‚}nrrunrz€ns}swmpwyqxwr‡x{‚t}|†zxzxxt€iˆŽŒ~}ˆw|ƒ~sw‹tt‹~zs{‰xxz}€…‡‡|~{sopk~wyxlkŽy~xw|vu‚x|g}“}ƒwu…€…t}|p‹{~zxuvŠ{yv|l‰x{m”ƒ|Œvh“oqƒqxtt€nys‚“w|—‰w~x€x†{||~“rk…m€ykszyrw‡i_|vfƒ}ƒlu…|ot€‚w|€‚|wpvs{r€…z†|w}ty‚r~xvt~~ƒ€o„…|}v„v€ƒˆ‚†uv~}s…v€…z‚r{|€}x„„Š|ƒ{}…Šu€‡x—€™‹›s€z…Š—…—™y‡r‡™z…†u“‡u›rˆ“‘vp”Š£ƒ…{²Œ‹‹‚ˆœ‚¢r~† š†…fu‘™‹lŒ˜Ž‘ˆšuxŽ…“Ž~ˆ‰Š…•Š”“z’ƒ”q‚u“{m•˜…q¢‡v¯›–“…ˆœŸ{ˆŸ„vru†ƒ¸Ž˜n~—Ÿ’™wŸmš•}€†™|€›› •{‚”––•‰‹‡ˆxt–˜€›z–„ˆ‡x˜xˆzl›…ƒ¦wsu‚~~”¢‚‰Œšlž‘|qŠ‹x„}«‰‹’s€t‹ƒŽ‡ˆ„ƒŒ…‹„ƒ§€‹q‹}kvœ’†y|lju‡{~m™v_‰y„r…{€v~Žrˆ|p{ruta‹…it|ukmn~o~wss{q‰…|j~l{‚vs_{}yƒkp~rw~r{y€|l„|p]Žƒ}x~k~ovyo–†€|yvˆmw‰rwgr…i~†sc{~q™xsup†vwlˆvtu’|usocuu„ip~sa~viqxwsynq€€Šlxu€tsrvmvxlwfyosml~vr~xpt„nng}|cutgz€x}wqtvv{g~q„o{vqt‰v‚jjbqmow€mqxxqttupuss~Š|‚l{†‡xx~tuvpwxˆsx{rhvsqkuƒty{oux‰urw|„vsn“ƒsyzmsrz`yqq}p|v‚€{€vpwy}€ug~‹~štzz…l†h|rw’|e€~^}wz~lny~w–‚|vw|€xjpyiq†rl{wovw†ovk}t~pyvtu—qwwsfqy–rxlrn€znyqwsznalt}lz~ˆusvqvssox‚ppnzpwpw~t}yztztwr|~wuft{yyytwxysuqƒvztqsv€qnjtgox€ozruvnlru}wtu†p„ƒn{…vz{w~q„|¥ˆš…yy• ƒŽ˜”kzš‡‚|Ž~•‹‚”o…Ž€ˆ{‘~~v‘u±ª‰…‡“˜y¢¨‚s~’„~‰|w“ Šcƒv©¢‰”¥|z„’šˆyˆ‚‡w„Œ£™—n}}oŽ—q‡™†~‡Ž¢™•‰‹‹ši|˜Š„˜“˜’q„‘œ†‡kt”}|„}q~‡Šˆ’‹xqu¤¤ŽŒ‰–n—‰Ž|Š€}z€~Œ Žvtˆšsƒ{™w~„‰‹”‚™€”Š{˜“™Žz‡”Žˆ“ˆ‹kƒ€|w†’‰~™…Šz¨v}p‡€uv‘Ÿˆ’œƒƒ|ƒ”q‘‰Ž{yˆv}’z‹™w‹†’ˆ“‰ƒ{‹‘‹“˜‰ˆ‡‚x‡˜‚†“¢{œ‰y}~š‰Œƒvt}‡–‚†’—Ÿ‚Ž™Šy…Œ‘Œtˆ‹}•–†—y„n•x‹mŠ–’pކ}sŠ˜‘‰€†‡™l“ŠŒ‡‘‚wf†’”w‡¤—‡”~™p›Šy†‹›ˆ‡©Ž“‡ƒ‹“Ž˜ˆ‰ˆ†”|£““‡|“‡‚‹vœs{ˆ’‹xl„‘Š•yxrˆ„Ž„ŽŽ‘l—}{yˆ|z ‰•…„•Ÿq‰x†‹}Žzƒ“|€y~švƒ}fœŒ‡Š‡}ox„„|~xml{„pl}£„u‘‚vpy{ƒƒpqvyu{fˆƒu}|ysvsdzri{s{r‚ty}vxvv€wi€‡x‘uw|m‚nys|}m{q`†yy€l~pz}|‡‚}‘uwxyxqstyir‚mxyxg|}uƒ€qvp…u|ruwtu¡q|zxhnyŒrxmtt‚roz|yr}riv{…nz{„xuvowtsqytpsmyrulw~r{}ssyqrs|rxvms|y|wzty€yxus„xzsqr’v~sokrqpy}fvzsxvrtvxxuv‡~}s{‹wx}wwqtrs‚™|vupz‹onv‹|y‘„xyuz‰‚wq{svt‚mЇzx{wuwtgufwxuxtvƒ„~}qzur‚r~m›wvpy}z~pyqy‚{v‚vcˆ{vq€qxpz‰~„Žywu€lptsxknr‚}x^„‚v{svq‰s{rwvtvœp{upjvv„oostpƒvey~yw}qiwƒpzx~wvrqtrxrqztqsvuvsux{|wurtuw~rxwtxzzwvqux‚w{usƒu{wwww}nrpunqzir}sxppwyqxxs€‡y{t}}Šyzyxxt…‰–‚—“‡‡‹‹‡‰ˆ‘‰…‡‚†žŽ„††‚’…†‰…€‡}—‡‘„‹Œ}ˆ„‰z€‡Žˆ˜…‘yŒ€ƒ|“}x‹‡ˆ‡|ˆ‰„‚‰ƒ†z|ˆˆ„†Œˆ‰‚‰ƒ‚‚Š…‡‰„†‰ˆ“‹„†ˆˆŽ‰ŽŠ‹Š†…‰‹‹ˆ‘Š‚†Š‡‡ˆ„„‘‘~„Š|„‡„ˆ‡‹„Ž„„„~‰…Š~‹ƒŒ†ˆ†Ž‰††Ž„Š„†€……†‡ˆ…Šˆ‡‡‡Ž‚ˆ‚u‰†‚‹‡‰‹„…~ˆ…„€„Šƒ‰…ƒ†ˆŽ…‚…‹ƒƒ‰‚‘‚‡„„‚ކ„‹‰‹ˆ†„„Ž–‹”ƒ„Ž‚ˆˆ{ƒ‘†’Š˜—”ŽŒˆ˜˜‰’ŠŽš‡‡‘‹Š„‡}‰w˜†Žwx„’‰ˆ}‰‡”’’‹ˆŒ‘Š‚‚¨Ž„€w†‹—’x‹‰{‹{’uˆ‚ƒ}|…ƒ…ˆ„€Œˆ{ƒŽ„”}Œ{ˆ‰€…‘|‰ŒŠ•“„‹”{‚Œ„‚‡Œ†…|‹‹†“‚†„Œ„~ƒ…Žˆ–ˆ”••ЉЇˆŒ—”ƒ–~‹~wx†“ˆ€‘“ŽŽ„ˆx‡}…zŒŒŠ“…Š‹‹‡Š‰Œ‰‹ƒŒƒ‹ŒŠ‹‰ˆ‰nІ„އz{v}}xxy~€®tlŠ’y†g~|„v}xp~zxjŸpz~‹rrovujŸx|}}{„wiot~n}{s’ys~{otx}v„Œ„ti‡~‚{~v~pz„x’Œ„Šqv}}o}…|}ly‚m{j‚cs{v…‰rvxˆ€ƒn}wvv“|}n€jw~]{vm|€ƒ…lrt{o}y€zu„vqm‡o~y‚vDypsoqrƒypxt~roie‡zltuvt~xz}os„z‚d‚w}uso“s|zqp€cv|io~~y}nwsqŠ|m|ˆwyhy|xy‚z~u~~‡Šy{}€z~…vu€€}u‘}€|€{”ƒ|w€{vz|{l‡€t|~z}uwƒ}~|}~}h‚t|wm}|z†~sy‡‚ˆ{|ƒ……zwzz‰zk†€x…€y~€u€}~…Ž…ˆ{s“v}{vryw…u~‚–~~‡}~|t‚„y€~‚~„x‡{}€y~…‚{l…qt‰„€}ƒ…ˆ†‡}~€}€hw~u€|€}€…†}…‚w…{uƒuwvz|€ƒƒ~ˆ…|€†€€ˆ‚…‚„‡{|~|‚ˆ|r…{k{~ƒƒ€†‡…€„‡{…ˆŽzˆ…ˆ‹†ˆŒŽ—Œ‹‡„…m‡‚‹‘~ƒ†Œ‘z–›’Љ…“€›—‚‹Ž—€“”zŸŽ‡{Š€u€˜€†‰~z†…“™†ƒš}‘b’Š‹‰ux•…sˆ{}yxsŒ‚{z“rŠ›ˆ€šŠ‘}|„™€…yy‰†y‚}|€„Š…{€˜ˆ”„~††“‡ˆ‘…‘‚…„‡”ˆŒ‹…›‹~‡~…˜|‰…‘†}‹‘š…„|™‹‰†‰‰¢ž†ƒ}ˆ…Š{‘z‡‘}Œz€“„„‹•ƒŠy…‰‘ŒˆŒŒ‰ƒ‹‚…~…Šz…‡’|Œj„ƒƒ„v‹’u}~†t{ˆuw“‚|xy—‡st|„€~q†{}~xyufˆ‰€€y|ykw{w|zy…z€q{–~•|{zƒƒ…x{y|{p{~vŽ€xzsˆy}|…“…†yq‘t||uvvwt‚~z|•|~”‰|~u„ƒx€}~}’}v„v…}|vz„€v|†sq†€~tƒ†…y~‡}wz€€y}~~}xt{}w…Š…w|z„s‚wx{}ƒ€€{‡…}|„{€‚ˆ‰ƒ†xy‰x‡yy…zs{~‚€~~„…}„„|…‰Žv†ƒˆ}‘‰‡’‡†ˆ„І‹†Š†ƒ„‡„‰‹‚„‡‰„‹”…€„Œ™‹†‹–‡‚…{Ї‚~…ƒ“‹‹‚‚} ‰„‡„Ž‹‡Œ†}‰•‹x}Œ‘~‚†}„‚–x†’}‡xy‡‘~ˆ~•††ŠŠ€ƒŠ„…|‡~ˆŒˆ‘~ŒŒ}‰ƒŠ{šŠˆ¡ƒŽ‰„Š‚|Šˆ„…œ‹Š…’‡Œ„’…†‰‚ˆ›~|…€‰’†„Šy‡ŒŒ™‚…Š„‘„ŽŽˆ“‹—}‚„„‡Šˆˆ|€„}w„{Žˆƒ…‹z‹‘ˆ’~†‰~|t„‰„Œ~”|ƒtƒ‰}u’Š–¢z€˜†‹™ †ty˜›ŒvŠ•˜Šˆ”‹Š”||™ƒ¡†ˆƒ|…¨œŠ‚†”•{œž‡~€Žž€…wŒ˜’~“ˆ›Ÿ’…‹œŽ‚…vvŒ‰~ˆ‹š‹šo~zo—ƒ†w—‰†‡••›Œƒ‚‡”i“Š’‹Ž‚~y„ˆ—“‹ŽwŒ–Œ’„‹lŒˆzІЇŠ•˜Š‰z‹~Œ”‰‘‡ŒŸŒŒ‰‡ˆ}xŠ„‰™Œ…|z˜‚˜x|ˆ‰…•‡–ŒŠx™~ŽŠ†u~x‹•‡‘šˆŒu€‚Œ†wŒƒŒ„“z•zމq|s|•Ž‰šš•—z–Š“‚‘{˜“†{†ƒ…‰—¥~€‡”Œ•œ‘’ˆ}~˜™‡† }”–‰Œ¤—†’“„‘…€“ˆˆ|‡¡z{ž‚”ƒ§¡‰‹’€zƒ…ˆŒŒ†~“ƒ‡‚ˆtŽz„‰‡‰y„…‹ƒ}€€ˆ{‡’ˆ•—„€|€‰…ŒŸˆ–wŒ€•ƒ{•Ž„ƒs—Œ‘Ž{{‰‹—‹~‚‹ˆŒ—š‰‰Š‹‚x€vŒˆ|Œ†”|ŽwŠ€‹‚…Šˆšƒ˜„““‚|–wˆˆ“ž“އrŠ„~ƒ‹q€…†‰š‡rˆŒ“ŽŽ“‡†€‰€Œ†ˆ…†nŒ€‘‚€€s}€ˆ‰‹}zujysssy†~t˜ty|“wr{tw‹m~‰}z{wrysc~qw|vyvp}u‚dzxts}kzŒz„vty}{€pxru•{uxˆweˆ}usq{u{~…}€“{xskvtsulm~rv}yovŒzuuqŒv}swvvw¡tzwrluv‚qrxvszxjy}}zrmz„t|{xwssvtxsryvtvyuwsu€€}~ytvvuyp{vsuvzxxpvyƒyzut„x{yzy‘y‚psmwqt}nt~sylpxztzyw„y}ƒt~~‡w|{zyvx|x~–{zyupx‡kiv€|u€zzwx‰uu}tt}lˆ‰zw}wvys^}tw~yxnv„€‚hzrrƒu~o{wŽvpx}{pvru‹zuv|od‹zwr€o~sz€…}„’xxqƒyutsvlo~p}}xhˆtŠ~rvp‡s|rxxwvšq{vrltuƒnpwur‚wmy~zw~skxƒ€r{y{vvsrwswrt{trowuvru€|v}yttuvv~pxvvz~zwwxuxxztrƒwzwxxŠx~ornpps}~gt}szopwyrywtŠx|‚u}~Œvzzyyu‹x†ƒ©}{x‹Ž•“•‚‰s€§—ˆŒ•Šwž•ƒ•ƒz–“ƒwŠŒ‚‹„‚œŠ‹—‹’~Œ‹~£z› Šf}†…€}ƒŽ˜tˆŒ~ˆx‰’ˆŠ–z‘‹Œs’•ˆo‚~—}v”‡“‚Š}…ˆ•ŠŒ‰„zk…„‡’‰†…{|’†ˆ•r“‚¡†™™hŠ–wzo…Žœ“ƒŒ™¤s•„Œ’yŒ…v|‚‰tŠz”|~’z~Œ„–’p|y‡‹„‹ˆ~‚‡~w|”m‹…›‚–ˆ‹ƒ€‹w‚‡ˆ”’œwŠ~Ÿ…Ž€ˆŒŒ˜–~Œ…“zz…zz‹‘Šzk}ƒ|{}p|rqsvty‡…}{r{’‰ˆz|{vwp›Š{y€xswtt„y{Žwwqˆ‚ƒ{„fywu}qr}ˆv‚{ou{qytuzzuri‡xyp~nryt|‰~‰ƒ{xo‹‹vyt{kq|p~}uy…~zƒtywsu{zyx¢po{omzxjprvn…|k}q{u{lqw‚ly}~quwuqvxr~}umtsxzqy‚‚wyttu|szwww|{{x…zy‚{}wr„s{{|z‘ynqyunu~}tvu}nuy{vxur„Œx~€w‹v{z|wv‹‰ƒ‘Œ„ƒŽ‹‹‚”‰ƒ€‘‹ˆ}~…‰’„–މІ“†™Ž‹ƒ…Œ›„‘„„‹‰{†tŒŠŽ}–‰Ž~|‰’‡“…‰•Œ„Ž~”Ї„t‰‘“Žt‹‹z„{†r‰}Ž~€{Œ‚‰…“ƒ…“†~}ˆ…‚“„„{…‰‹{|y‰‹Š|”˜†}‹ˆ‰‹ˆ‘ŽŒ…‰„ˆ‘†‰ˆ‹‡Ž}‰–y”„zŒ‘‰‘‡‰x—‹Œƒ‹–‰””‡‘{}‹~„†€Œz‰“…{ƒ€‰€ŽŒ†‘…‚‰‹‡ŠŠ„Œ‚†}†Ž}‹………i„z‚Žƒujvz˜ryut`z‡qqx†{u‘‚wzvuŽŽwqzu}q‚e’†vv|vvwuezkwxwr€z|‚{{sp†s|l~~w‘unx|x}pwrr”{v‚|nc€yxp€orz€}†}„Žpxsˆstr{klpw~wi{€u„rvq‹pyswwuu¥n{uqist†ioorq†tk{|xu~pgw‚ozx}uvqooqvsuztppwtuptwu}yrqtvy~rxxuv|yvw€ty€wzsrƒvzvvvŽv|mqmmmqz€jr|rxspwypxvqv{ƒs}}Œywyxwtvslƒ‰ƒzvnjw‹ogx‰xtŽ|ytts||owyzse›pt{zujlmyus~€|ut~‚{srp€u{t{ŠlŒxm{qwupyy~‡}u€syc†~|x~o}pzƒs•‚‰|v|ˆqzxzpp„nvs}iyys”upvf†x~q|usu—itzmiyv€gqpjr…zbtwuw}qitzxhuuzsu}lus{psywiqtrwto~ru‚wqspqy{ow}vy€xw|puwyz~ym„vzvr”vzpprrlyy{qu}rwsrvyv€wx‡zxq{ƒ‰w}szsu~‡“‡|~‚z‚…tv‰~u{w|‚“‡}y{u~…zkŠ€v}wwvy€w~w}~€jƒu€x^~|{‚|‚uy‚z||‚„…zy{~†‚zk~x‡„yx~†Ž€…•…{v‰s}~vszx…x€‘“~~‡~|t„…z€~€~ƒƒz‡}|‡‚}q„y‚‰„‚€ƒ…ˆ†€€‡|€€kw}€v|€|~…‹|…‚w†|v„u‚yx|}€ƒƒ€~~‰†|}€†‚€ˆ‚‡‚„‡|}~€|‚ˆ~s…{o{~ƒ‚€‚†…†€„‡{…‡yˆ…ˆ„‹„|~‘ŠŠ{–††…||‹‹‡Ÿx{…„”™ˆŽˆ†›Ž€’†Ž‡„˜‘•‡—‰›ˆyŠv‹ƒ}zt‘v‚‹”„ž“wƒ€ŠŠŸt‡t‚ˆ‘štŽ ~ŽzŒr€‚„|ŠŒ€}{’Œ–ƒ“w…ƒŽ•‘~—|‘‰’sŠz~‡Ž…v•‰’Šˆ{x‡˜ˆƒŠŠ„‡“s…’‡’ŠŒƒ–Š€‰ƒŒ{ˆ„‡Œ“—œ‚~’†ŽŠ‡„Ž{v‰…‰…{‹‡†„•‡~†ˆ~•z€Ž~”†‰‘ˆ‘†‰˜‹‹€x‰rŠ“~Œ†Ž‹ŽkŠŒ†z…ŠŒ‘’Žˆ‘–…Š}ƒŠ‡„€}˜“…•—”ŒŠ‚’ˆ–”Ї„‹’‡‹‹‹‰†‚{Œ€wŽ„„…{™„„|ŒŠŒ…~‰ž}o’‹†‡v‹††}‹tŒ€y‹w‹s€~€Žz}Š•Ž~„™ˆ}}…‡€‚•„—z„ŽŒ‹~|~…Œ‹}zž„‹‹€„“†–ˆ”„Œ‚‹~ŽŠŒˆˆŽ~‚„€‡”yŠƒ”ƒ‰•—‚†„w’‹Š—‹˜‘„‹„Š€…‘‚’„Œ„€‡ˆ~Š‚‡‹Š„†Ž‡”’‰x„xŠ‹}‹ˆ€}Žj„‹|Š}xtv‹“|yruzqdušmw‚€zw|€mt{uƒvvfŒ†z{~wsyqfƒvx‹wwo€ˆŒz€oyvt{r|o~—twnu|{€otrwxwwpsd„x|o~nryv{Ž~†„}xp…truqxio€n„|tr„~y’€rxp†s|qywtvžmswmduvdostm…xd{lyszkkvly{sssrytws}{smmrvwow€~w}wxqsyv}qxuu{zxvpxww{uo„q|xxx•w}mpvunr|{et~rxmrvyswus…x|€u}‹uyxywt{‰sŒ|…r|…xtxv}u}z{–‰y€wz{j‚Š}z€{xxtk†z{„yzy{†€~€bzxwy|pz•zytx~‚s}uz‡|xtzvkŠzxu~o‡v{†}ˆ|zpŠisysvoq{s€|wuŠ~y’xuyu‡v}u{x{xœut|stwx‚ytyys{}v|}~zqt{„‚t|wwxw{wyt{|xutzxyty‚z€{uxyy€q|wwuy{|zrzz„}|{v„wy|~{Š{‚ruv|sv€~vx€v~muz}w{xw„‰y‚w€ƒˆv~}~{y˜•–z–v„Š~‰z‹ž”…xwv“ €y‘{ƒ†…Žª€~r~±†”š‰„}~w‘¤˜’‚†‚ƒ•’‡|Š}oy”Œy–™zŠ…¥zƒ}‡Ž šƒfŽ‘‰‰‡Ÿ‹’u—†yy‡Z‰ˆ–‡†™™‡…“Œ‚Œ˜ˆ’n“‚w…€‚˜‹‘~|–‚ˆ “~†sƒŒ—~”–oŒ—‘Œ©‚u˜kwm˜‹š†z•‚‚””„{‘•w†€¢Œ„Œ~œ€˜‡wž”rƒzŒ˜{˜œ~|}—|‘~’‡y‚Š‹„Œ†v~މ‹Œˆv„†|‚ŒnŒ‹…€…tŒ„‹ˆ‚‡ŠŠ|‹‰ˆ„”ކ‚Œ„ƒ‰Œ’|™˜’‰ˆ‚ŠŠ™‘Œ‰‹‰ Œ‚…†‚z‘…w‘Œ‰ƒyƒŽ†|„‡“ˆ‹ŒŒ„ŠŠ|„‘£‘„‰‰vŒ’ˆš†u‘Š|{~‰t‡~‹}‚‰ƒ†~‹Ž‘ŽƒqƒŽ~|„‚‚•†Š†‹|˜ˆ…‚ˆƒ‰}~Š‹‡Ž…›†‡Ž‰}ŒŒ†‡Š„Œ„‡‡‹‡•‡…‡|ˆ„~‰‹“‹ŒyŠ“”…Šƒˆ“ˆ“–‡|“‡“}}}‚{†ˆŠ’…~†~„~’‚‰…‹“~”Œ’‡Ž’ŠŒ†„u‹’€‹††”k‹‚‹†Ž}‹ƒˆ‰‡‡‚…•€~~‡y}~r‡™}…v†ŒŒ{•‡Šƒž€v„|ŒŒ¢y~U‹~—‰‰›sІv„t£b‚‚„‰Œ‘„„‰•Ьˆ’‘‡|——~‡„ˆ’‚™~‡p‰“z‡ƒŠ€vŒ~—uz‡ƒ˜‰‚}’uƒ{‹…„{}xu•“‘kzŒ§‚›†‡‚s—tzЇ†s€žˆ‰’‚„Š‘¦ƒ’~|‚— •z„”Œ†x‹™ƒ|r’„~“ux{š‚sŽ‹Œ‹‘}ƒ}wŽt„ž–‡~‹}…”zˆ}‰‡†{‡ˆ”uާu„r‹{s†ŒŒ„~”š“Š†|‹‡ƒŠ’qŠzˆry›µ„†‰…އ’†~{”’„Š’……„³ˆ‹Ž†ˆ|{¡w§šzusˆ€œŽw‚€‡‹‹|Œ‰Œ‰‘‡Š}™ƒy†mŽq„n‹‘u…‡…‘Š”“}ˆ„™}”Œ”‰“€‡ušŽ–t“•‹ŠŒm‹‘y|ŒŽ‘””‘’Œ…ŠŽ‰Š‰†}Œ˜Šy‘†‚‘…z‘wŠŒ‡—w}…}‘w‰“~z„”‚„„‘z˜‰‡‚‰Œ•—Љxˆ‘€’‚|‘„‹Œ…—vŽ…‘“|‚u‹‰Ÿ‹‘›—’…†‘‰‹ˆ‹’–€„pyžŠˆ}Œ‹Ž‹‰Ž}ˆ‚‚‚‰‘†‰ˆ„š†Š‘‰Š‚“Šƒ’–—“z“|‘ƒ“yƒ†q”–ƒ‰ˆ›‰‹~Ž“‘z‘„ކ‡z‘~‹‘y”pŽyˆ€r’ކމ‡“”’‰…ŒŠšwŠŒ’„„’€š—‡˜u†•ƒŒ•—…‘pw“{†€‹‘›ƒ†~ˆzŽƒŒ„ƒ’”‚Šƒƒ“€{Œ‡—‹}y„ˆ}‡Š–|ƒŠ‡ˆ‡‚–†Œœ……Ž‹ˆ…ƒŒŽ“•’…u„†Š}…‰‡‹‚†z˜yŒŒ‚ƒrv”€“qˆXž}‚Š„zŸ‡žsu‹‹¯–„•’’…ˆ–ƒ¦†»’††‡§{“’{l‹œ†ƒ……‘|~“}‰˜xˆ›€\¯†›…‚†˜’‡]tŠ„Ëzt‘{‹‚‹}˜s–„ƒ›ƒ¤tzƒz‚‡„‰…‰‰Š}…˜”{zŽˆptš•{“s¢—}‡‡xwy„¡ŽŽŒ…Žs“~w‘“€ƒž‡Œˆt‰‰‰…„†‚x‚’~‚’›€‘~‘`…‘‚…«vo‘•…y’~|’z’p†y“Œ|‡„rŠŽ‹…‘ŠŠŽ†‰•Œ}ƒ‰—{•Š“ƒ‰’Š—„{€˜ŒŽ•Œ•‚ˆ…‡‹Œ‹Ž‹‚”ˆ•€ƒ„…™…}Ž“‹‰—š˜ŒŒ…”—ކ‹‹‡„–~ŠŽ…{‡†v‘‹ˆ‡{Ž‹†ŒzЇ–‹’Œ†ŽŒŒ{ˆ‹‘†Š‹s‡‹”‡Št’Œy€†s‹‰z…‰|†‡‰‘ƒˆŒ„Š}t„‚‚Œ††}™}Šˆ|sŠŒŒ~š††‘ˆ}ŠŒ‹‡xŽ‹Œ†€yŠ—‰‘‰Š‚……„‚Š‰Šˆ…wŒ‘‹†‰{‡‰Šˆ‘’‡†‰‰Œ{}‡{ˆ‡Ž{–‚ˆŒ€Œ€€Ž‡{Š‹†ˆŒˆŽ™ƒƒŠŽƒ€{†v‚ŠŠŠ‘‡Œjƒ‚„…™—ƒ™‚‰ƒ…Š•”ˆ–y„rt”¨—„–ˆŒ‡˜¤„™€„x””‰•‰ˆ‘…“~”|š‘’|œ¥‰€qu€‘—„Œ|ˆ‘v–‹uƒ‡‡‰‰€†z”“Œ„’~’„nŽyŽp”–rŠŠˆ•xŽ”•Ї{št—ƒŽ€‰‹y{ˆ…’ˆŒ‘zŸ•Šš—ƒ”i„zƒ‡–˜†‹’…ƒˆ{’€ˆŒ‡…‰…ˆ~‚ŒyvŒ‚~œ}xr„‹…’Œzˆ†{~|‹Š}Œx˜…†”…‡|‹ƒ—‰“‚j‡~}‡…Š‚’‚ˆŽv‹|˜w‡ƒr‰—…~Ÿ”‰“°‡–Š•‰Ž†vœup–Žz„Ž€”‘’ˆ‚~†”‰‡Ž‚…‰~}‹‡ƒž{•Œ€šx‰™…m“‘—“” „™€~Ž…„Œw‚rŠ’…‰Š–‡k’n˜w€‚oŠ¥„~Œ€}ƒšœŽw‡”q‹Œ„—€zqˆ{ •†›z‰œ”ŒšŒ†m”‘“y†‹„¥˜”ˆˆ‹–…‰ˆƒœƒ†Ž~•€vŽy˜ƒ„›ŽŽ|s”“y’•x}‚~„z~‰‰™y–‚œŠ‡}††‘–ŒŽ“ˆx‰“~|{„‹Ž‰Ž‡€šqŠ“‰…œvrug†‹—“}~avŠƒyvsny‡thvžyw’„zywz„{s|vyp}e‰ƒuv|wxwsl~tw„wyrzˆz~ƒztr†t~j~€w‰vmzzypvpw‚zt}tub†yzq€ozpy„~•~~xt†ppsqylkƒry~wb…u˜|qvpŠszrwwsv›o|sqjttƒgpttqudx|yu}rgwozw{vvrpvrxmrzsphvuvquow|ytpsvt}rwwuz}yvvtuy€w{uq„u{vvv‡v~mroroqy~gt|rvupuypxvp‹yz‚s||…zxywxu‘„“£ƒzyŒ”‡¡Œ}rx˜Ÿ‘}“ŠŒ†—ˆ•„~y’—‚•‘€†‹ˆ£”“‰wžŸ†ƒ}„‹Œu| “–‚‡Œ‚–‡Œž€Š„…y˜’x‡œ”Šm|‰tlŒ†ŠŽ‹~{—Ž~€™|˜z—ƒ€‘……•€ŒyŠˆ•‡–ŽŠŒiˆ‘zŠˆpž“—‹y‹}ƒ}‘‘‡ƒ”…›‰‡Š{Œ›‡~‘x’Œˆ–Šy‘‘}ŠŒ{yƒ„ƒ‹€‹”ˆ„ƒ‹|š‡‹‡qp••‹•Œi}“†††‹‰ƒ‚Œzx’~“…v‚‚w”ŠˆŽ}ƒp‰€€u{~swwyvŽz€z}‡–|ytw{{m€ˆ~|xxuh„{‚z{{{‰‚€‚j||yx~u|Ÿzyuz€‚u{v|†}zryzn|vw~r†y{‚Œ~…ƒzq†oqyswqt|sƒ}ypŠ{{w{u‰x{v{y}z§wv}uwyy‚wvzzs‚~s}€|~sw}…‚v}€€xxzyxy{{z}yvx{y{v{‚„z|xzzz{s~xxtz|~{t{{„~|~x„x{}|‘|ƒ‚tv~|tx~syx}kw{~y|zz„{€ƒy„‹x~€|zukv‡yuxhz‹rjx€xt€wzw{‘‚zvywstd–†vr}vuysiziyuwq|‚‡zƒnysr‚s}i}tŠvox|yowqxƒzvƒutbƒyxp€ozqzz|‹~‘yxs„vwus{jn€q€}vf}t‹zrvr‹q|qwutu˜nxtpgsv„lnpsp‚ugzxxt}pgvnzx}uuqosqwpu{soputuptzv|xtpsv|}qvwsz~yvvvuxw{rp„t{wvw‰v}mojpnpy~ks}qxqpvxpwutŒw{t||ˆzwxwwsމ„z‡Œ“‘‚’ŒŒ†Š€‚z‘ŽŽ„”“”‰‹Š‰†—†|‡œƒ‘Œ‹ŠŠ‰{‰ƒy’Œxzˆˆ‹ˆux‡Š“ˆ‘Š”~†Œ‹‹Œ‡uŽŠ…ŽvŠ‚y‹…†u‹ƒ€€ƒ€†‹Œ‹Š}z‡‡~–„ˆ†…ˆŠ…ˆ}…}rŒ‹ƒ|’…ˆ’‰Š‹‰…{‘†…‰‚}ƒ“ƒˆ„‚„‚‰ŠˆŒ‡Ž}”‘‡ˆ‰zŒŒ‰“Š–‚Ž…Ž„|€~ˆ‰‚|ƒ†‚ˆˆ‰€~‘|…‹†‹…‰ˆ”‚†’‚~ˆ†w‹”|}‹‹“ŒŠm‹ƒŒŠx|zr‹‘|yzs{Œsrz†~u‘xx~}|qv}ryz}h…‡{x}xtzuh{ku~xxus‚zzc{utƒt}l|‰x„ssy{{pxrx‰|vv…qe‹}vs€q}rz€~‡}€–wxs{sourulo€r|~yg†‚u‹|svtu|rxwwv¥s}uqltv„tsyur|woy|xsky„€t{{|xwrrrsylrzutwyuvsu€z}yttuuy~pxwuw~zwwuvy‚w{tsƒy{xxxx‚~prnuqt|js~r{oqxzszxw‚ˆx|‚t}}u{zxzu’„}ŠŒŽŒ‹Œ‘…–‹¤}„†ˆŠ‰rˆ|~ˆ™Ž‹–”—Žƒƒ†—„І‡›‚“Œ‹ƒˆ„{‹r“‡{x’y€ƒyy…†œ‘†‘„‰€Š¡Ž†‡•u‘ˆŒ‹w{І˜v…„}‡‰‚sƒzŒ—Šˆ‰Œ}ˆ}‘Œ‰‹‹›v…z‚‡~~†Š„”‡™}‰‘‰ˆˆ‹…†‚€ƒv‹‘‡–‰…‘ŠŒˆƒ……†‚ŽŽ‹Š~„—ˆ‰Œ”†wƒŠŽ„€Š†Žw“Š€Œ…†€~{ˆŠŽ{Š’•ˆ†ˆ€ŽŒˆ†p•“}І‚Š…o†…†Ž‡€sŽŠ†}}uƒƒy|‚vz†|zz˜ˆ„|ty„~€y~~w|uw…z€ƒvzskŠvxp|z{u€r|˜}„{xw„ƒ„wx~ˆ}{|…yu‰€xy~s„{}z…†‚ˆŠ‡zqpx~uutx‚s~~x~|“‡|~wƒy€|~~—|tƒu‚€|xw~uz†w‚s…~~s††u}†€vz}}w~~{v~z|€w„~…~x€|ƒs€xyy{‚}~{‡…~z…x‚‡‡€‚…wx}Šw~…z~~…{o{~}|…Ž}ƒ‚}„ˆ’x…‚‡{~vqs|ozrky{soxš}vŽ‚|tv|Œ~szx€rzg™rz|rwvwn|qwˆvyw‡„x‚uzur}v{mŠ{‹sr{}woxsy“yrƒ€xa{~qp…ozy•}ƒˆrxx„„owu{hoƒrp}wnvx‡€rwr„r|q{wtu¢nxuqesy„qnmrowlxvwu|mgu€ozuvtslpqvluysouvqvsv~w}{{vruty}svwsx€yxvvx€wzvr„t{vrt”v€}oqnskqy‚lu|svpptwtxus€…u}‚t{Šxyyxzumw†Š}|ojzzrrx|r‘yy}ŽŠ|y{v~z|d‹„yz~wsyte…vsˆxxux|{„czuszq{pz†w{trx|{€otqw–zvt}nb…zxp~n‚ryx}Ž|€’zxs€wlusvjl|rv|wt‚}uwsvrr|rwvuu£qwupgruvqutqxvmx{zvohx‚q{ywvrqrrwjvztrpwuurt€yy|xuruvw}pxwvtyvvvwyv{sq„wywvw‘w}nqqqor{€hs|r{hpwxryvs‚ˆw{‚t|}†vyywyt…†ˆ‘~€ŠŒŽ‘|˜‹•†Ž‚‘‹ˆ‰}~Š’Š“‡Œ’Œ‘…“†€|—…œ‡‘“z‹‹zƒƒs‹’}y†|Œ‰{Œ‰–†ŒŽ……‡†Š©—‹†tƒŒŽ™„t”Œ{ŠuŸq‰xŠ|‚‘{y„’†…’‰ˆŠˆ‘{}‚ƒ…‘‹‡˜|œ–Œ~€|t†Š„~™ˆ‹~‡Œ}ˆ”‚„Š{‡ˆ‡‹‡…ƒ}Š}Ÿ„‹{”œŒ™‰yŽ‘‡…™—y‘~€’„˜Š‚Š‹‰‹‘‚‹–ƒƒŠŽŠ”†Ž•’ŽŽ†‰‹…Žƒ“w“‘‚“ƒ…Ši‰„~…•{ŽŒ’h……ry}ytxŠˆ}q‡jz~‰¯vyƒ{{‚mŒrŠ‚v}Ÿ~Œ{w‚doyx…sfxyŒqvˆwˆŽ{txot{{~ƒƒwv{}„‰wr“|p}‡Œ|„xxˆ†€ŽŒ”{{u‡ƒr…qmn{„o}wn‚{x™ƒvwn}‚¦v{‰zˆ„invŽlˆ{’†y‡}„€~{€”z€Ž~‚‹ho{|—stSi‚Œ{€‚i—f”zƒ‰„o‚c|~Š‹vy|~z„†„Ž}€“lƒ€†žuwy‹”z‡>hy…xr†…‹„}‘~~~}wa„v{u—yŒ„zˆˆ’x~†zŠ}xzŒwvz{z~–…}~~z€†|u€w|xzus†}~zz{wq…v„|l}zz„w€uyŽ~}yy„‚…xzyzˆ€zr‚{v‰w{rƒz}|…†ŠŽyp“s~}uuuxtz’}|‡|}v€€„y~}Ž~w„w…€}{{„€w|†uv†€~vƒ‡…w}‡~x{€y~v}}zt}}y~…Š|…€v‚}{ƒtxx{}ƒ€|‡…}~|…|€‡‚‹ƒ†xy~…x€†z}…zr{~‚~~‚…‚}„„|…‰Œw†ƒˆ~z€s’œƒ†n„¡‰‡n|‚…Š~}€}˜fŠ||c†pˆ«Œ‚€€|zwzˆy˜|†{~~ƒ¤‡|‚|zy|‡u…m zŠz}…‚xw{{„’vt…|ts~m}t|t€‰€€|q‚‰ƒ{€ry‚r„}tm‹}”ƒx‚}‡y‚~ƒ~™sq€vvz€‚†xv{pxƒq‚_~}}lz{€ƒm{‚ƒrw|}€~~€yn‡t}€y‚ƒ€‚|yv{‚†~yz{|~…}‰~y~w„v~€~€~‚‚wu€†w{ƒyw~ƒ}‡ˆ{~|zxv†‚|‚„‰|}€{{†„|†|Ž‚ƒvw€z{„{~…‚…vpƒ‡…‹{|z~‡ŠŽ‰~~€‚tzmxy‡—Œwƒxn’€{„{|{v‚q„ƒy{„~zx€€~w|}Œ|z‚~n‡|}|}‚Š„yt“t€†ƒ~tuqzs‡}€‰…u‡}‚~‚€€~lƒ…~†{{ˆru™oe}w‡ˆ{€t–…|ƒw‡z}‡‡ƒŽz‚lƒ†ƒ†}t}z~……†‚u}}t{€„‚€|ƒ€€z…t‹‚‡€‚„}†‹v~„y‡€„„o~}†s‡Ž~‚~Ž…ˆŒzˆ€~ƒ|’„•‰ˆ‚†„Œ™}‰Œ¥€Š|~{„ƒy…ˆŠ‹””’‘‰ˆ„…“™ˆ~’‹u…‘“~Œ~~‹}•£†ry†‰{Œ{{—’‹ƒ|’އˆ”Œ†tƒ‘‡‰ƒ‹…|‹ƒz„„~y{Œq’Š‘‘¡„|ˆ‰~‚…†”‘‚ŠŒ{‚‡Žwƒ•„“€’„‰zu‹Œ€ˆ|~ˆ…~ˆ“yw‘‡€€„Ž„…”„•™ƒ˜‰€€‡•…ˆ‡€w~ˆ’„„}‹‡ƒ•““~‰Š„ŠƒŒ‚†}‹ƒ†“ƒ†xŠ”ƒ€–…Œ‡y…y‹€~“…‡…}x‡‚‡‚„Šv‡s{l||~ut~crhu•zy†zxwx‹Ž†xz€x{ti’w|~wp|th‡|u‘ywy’v{ŠQzrptp|{~›vŠynxyxosr}žwvw‚ebz}n€o‡ozyxœ|…†uwuˆ“zutzhq~r|{uƒy}x‡†rvr€srvxvt•kstobsv„vpnso’vrzyws~kfu~mzx€ttqorqvhzzsoruuvqt}{{vsotww~tzxvz|yvu‚xyu{rp„txuuv¤v{lpxzno{~pq|sxtqvwqxuo‚‰uzt||sywuws‹Š‰~„‚~ˆ‡’€š‹„vŠ~Š…„™}ƒŽ‘„˜‘‹ŽŒƒ–‹‘‡œ€™‰ˆžŽ‘†Œy’…x’’‘v†“‰‘Œ‹¢‘z‡|†~‚‘¦’‡ˆtŽ“…£Œq”††u˜q‡‚‚{‰ƒƒ’‰yƒ”ƒ„v˜~‚ˆ…•‹“Љx£ˆ‰ˆ††‹y|‡Œ‚“Š›‡‹ŽŒwƒˆ{Šƒ’ˆu…”˜‚ކˆ‡€‚~‹uˆŒs–”‹†‘‡‰}…ˆš„Š•‚x€‡™Œ~vŠzŒ‰‰…ˆ’€‡”~Ž€Žz€„„—Ž’‚‡“އ˜’˜‹“€{“–‘Ї”l‡€‡‚•|uljŠ|Œ{wfqyol`tšrw”ˆ}urtˆ‘uqvwys~c‘ƒww|wsxqf‚tv‘uwr}z‡y€fwroztr|›t‹wqx{{ntow‡wv|sn`‚wvnn{mx~”{ЇzwuŽtoupzilpz{vk„|w‹{qxp€n|pwvrs‘mwtpdqu„mpkrpƒv`yszrylivn{y~strpwquhwyrnostuqu~vu{vtqsur{t|vt}‚zuusvx‚uyso‡p{wuvŽx{mqslmm|}^r|tzhouvqxwp€†yy€t|{‰vwxvws‰‰‰…z‰Œ‰ˆ”…•Œ…„‡€™’‘•†‘ƒ’’ƒ…‡•ˆŒŽ‹~‡…{‰€sŒˆ‚z„…‡}’Œ‹”ƒ‡Ž„~‚Ž‘”ˆ†‡vЉ…‹†t‰yŠrœr‹{‹€‚y’‡•ЉŒ|ˆŠ„“{}…‡ŽŠ’ˆ•{–‰’€€‹|{†‹ˆ{}ž‚…}†Š“…‚Š’ˆ‰Ž‹‡Šˆ†‚€}Šz„Ž•“ˆˆq‰ŒŠ‘™ƒˆ‰…†‹ƒ‡“ˆ‡‚‹‘‘}‚€Ž~…‡€†‹‰‰’އ‰}’‡‡oŽŽŒ„‰‚‘i„‰‚Šz‘ƒƒ„ƒ|“‡…ŒŠ››ƒƒu€s‡„“Œ‹‰‹ˆ‹„z„„™Ž’‡Žv€ž…“ŠŒ‚‰|‚„…s†zvœ„”ƒžŠ‘–•‚‹ˆ {ŒŽŒ††‰p•‡‡…ˆvs–„yqŽ™œ“Ž’‹„…ˆ—…ƒ‰Š‚œŠŽ‚‡‹€†Œ“‚€ˆ~‚„Šˆ˜mƒ‰‡}~Šv“Ž›–‰„{ˆŽ†‘†ˆ…ˆƒ†‚•‚…‹š‹Œ“{‘€„‚‰ˆ~˜•‚ˆ’Œ„{€‹†o‡“‰ƒ¢ˆw…‡‚|›•‹„˜‚zŽ…€|…ˆˆ‡‚އžxŒ‰pŽ€‡‚v†‚“…Œ”‹Š€ŠŠ‰ž€wpuyˆ†ƒ¦Œw†ƒ‡‡šŒ¢ˆx‡‚‰‚„‚|„”‹Š‡’…{„xx˜ŠŒz’†‰–{q…—ŒŒ‘€p‰mry‰“Ê…|y€…l„œ}v†Ÿ„pxy‹z……zp‡„™ˆƒ‚wŒzws†€•†p~y—‚i‹{“‚xœy“‹‡‡|‘¦‚„‘’€˜‚Œy†’ŒŒ‹‡}„‚‰Ž‚y‡‘~~yŽ€}y‚‡Š‘|~qˆw‰Ž†‚ž”†””…•{„„Œ|›|†—|Œ‡’‘……‰•„†Ž…ˆƒ•{‰ŽˆyŒ‘u‰‡€•—“–𑇋’}‘‹“Ž„~l~››‚Œ—‹}Œ~…•†~}‡•…ŽŒ}„ƒŸŽƒ—•ƒˆ“z”š{”y•“‰p‡‘rŽ•‡˜ }†~€‘‘ƒ…‘—‰ŒŠ|…‚‘„•ˆ—†…o’q•{p‘Š{qƒ’‰š–ŠŽ“†™‡’›†‡|…•~€–“‹ut•Œ“ˆŽoŠ“v‰€~‹„’އ—‘‡z“‹~Œ‚ˆ€€Ž†~„‘‰ƒ’v„†—ƒ‚|‹„†|Œ}}‡z{‰”‹~u—Š…“‚„‚t‹‹‘‡˜Ž‘‚q…ƒ„…Ž~ŽˆƒŽzŽq™}›‹yŠ~z‚š…{|€‹}}€…v{‚ww|„~t’{~{}š…}x€u„zxu‰z|z{un„~{}y{zl†t†g|{x†{qz}†x||€€ƒvzw‹xtypŒyyt~{|‚ƒ“ˆ•‡zt‘s|yuutvtz|qŒƒy‡~zzru|v}z|{˜||~wz{zvy}xu~‚ƒ€€xy†„y‚{{{{~z}wu}|{w}y|x{‚„~‚~w~{{x‚rxw{~~~~y||†€||{ƒ}}}‚~~ƒƒvxyw|ƒ}x{‚x}qw|{}}€ƒ‚}„y‚„‹x‚}}xzrz}‘€zkwx“wb}w‹ƒ~qw|‰xwnwy|sv`™t|{{nrwnrq|}~{z~ƒ|{z€q{{x|u}~}Œxo|rjvpq{zrƒ{ycŠ„…z~f„qxƒvšƒ„Švvx}dw‚†yms…sz{ix}u’{puj‚€{nuruœpvunivspswxiwzsfpvurtuk{{puw}psorr|xruavkprqxxx~mw€{t{qh{{nust€xxktvuwsƒv{uzv•t€|gouwptv{du}vwsttxw…qq~Š}xfy„‹wxwv|lsrx‰x‡}uxpz†vmy“vx‰vws|Š‚poxztz}g—„wv}wtwtm{nt…xwv‚‡ugzvstzl’x“vrwzy€oxqx‰yxƒ|oa‚{ypl€pyy|~~Žtwv€zqtr{in‚s{whw€x…twvs{ruutu¡kyrodrv…vomso†ulxuxt}mev€p{x€utonsqvrwzrpsvutquv|{vtmtv{|twxux~yuuvuyu{tp…u|vtw“v{mspsnox~jq~qwspwwpxur‡v{t|{Œwwxuxqzf|Š€{u{fxuqvvxx‚y|p|‘—…uzusu€k¢ƒzu|vsvtq€sxŽwwu‚w…qyusom}‹u†wovzpzqq›zxvpe‚xwnm€ryy€„~†Œ{wr††sxs{in{pw~tn€~wŒƒtwt”p}txwuw©nrwmjwv‚nnounzzjzuyv{kkwly{€rtssnswqy{smttwwpv€|v~wrrtz€}sxwuu|zxvƒwx€w|vq…syyyxŠx}mortlr{€mt~t{kqxxtwuqƒŽw}u~~‰vyyyvtzu‹|‡‹z~wwŒtx~|€qœ€z{ˆz–ˆzx€r}t†t`‘u||w‚twˆqzxy~{dwm€vl~yv„zsv}†u{{‚„wuw}Œ‚tgŒuqƒƒw}€y~}‡‡‡„š‰yy„suyrmvsƒtu~’€w‡{{xo‡€u{y|{—€x‚xx‚s|†|wv|‹‡‚„|ƒ‰…€€„~|||zbn|}€s‚x{{yƒ…zƒ€uƒ|vr„qvvy{~~€yz~ˆ‚{x~„‚|}„‹„…xy~yy}†}m{ƒv~kv{€~€€ƒ„‚‡w‚„‘v†ƒ„~ˆ…|…Œ“‹‚‚˜Šƒ‚†yŠž—|–ƒŠ‹ˆ•˜Š‚ˆ‰—‡’‘Ž‹{‹‚vŒ€ˆŒzŒ‘‰y„ˆŽˆŠ€‘Š•”‹ƒ‰Œt‹’{‹t–y…ƒs‰~}†|’‡uŒ‡Žˆ‹|}‡”‡†’{Š’›z}‰|rŽŠyx”ŒŽ‹ˆ}Šƒƒp‰Š…€†ГБŠ~‡ƒx‰‰ˆ~„…Œwˆ‹–˜‰„{˜‡„…Ž‘}„‰‡Žy‡}†€m€„†Œ‘Š~˜€“€…“…Œ’ˆŽ‰‡…Œ‰‰ˆŠ•…‚Ž~‚z†€~ŒŒ“Œ’j„ˆŒ|–y‰–ƒ‡}•†ˆ‡‡Š}‘Ÿ“{Šz‡‡Š‰†…ˆ‚€…š†’–€z†ƒzµˆwˆ‡„Šˆ…‰…€y‰ ‰{xr…‡€ŽŠ––ˆ†ŽŠ{˜u{}‡™‰zzŽ…‹sz„~Š}ƒ~…‚…‡‘ƒƒœ•†’„…Ž„„ˆ‚†Œ‰Œ‘~‹ˆ‘Љ‰ƒ{u|Š{„€’…ƒ~™ƒ…•~Œ‰wzx†Š“}ŽŠ~„Œ‡ƒ~{“~…ˆƒ†w…‹†uq•‹‰‚‰†‡~Œ‚…}”ƒš•Šz}„}’„zŒz“‡y’Ž”’ƒ†’€}‰Ž‚Žƒƒ†‡|ŸzƒŠ†‚†z€}~zu|…tr’„}{y–’„y€w|}ƒygˆ€t}~v{svƒ|~†{~zi†u€vp|{xƒxpx“‹x}|‚……zxyy‹‚xj‡|w‰‚w~€ww|}†€ƒ{t‘rz{tqyv„u~}…}}†€~{rz‚ƒx€}~‡‚}ƒxˆ{|v~…{n„zx‰ƒ‚{‚„‰†‡}~€€{jv}€tz{~…‰{…w…~{t„s‚wwz|‚ƒ~}ˆ…|}†ˆ‚…‚„‡y{†{ˆzq}…z€nz~ƒ‚€‡†Œ„†{…ˆ“yˆ„ˆskxz…|xqnv|}qw•i€‹|||z•†zfwy…q{m™|€tw€wvŒ|O’tqs|’…}_zzrveuy„•ƒvqz~vw€‹svuˆxk‹v}c}}uxt{¦{…~wgˆhvs{{|s†gs„zz”…u{n‰l‹txxwx§dx}pf{t|gqt`sˆgyjyv{un‚ˆ‰vcyzwik~ix~Xnqoxvxlx‚xwwtiw‚~vv‡rvv{y„k{v’wrxtƒr|{yžy€~qk€}f”wmv}wy€vx|{“tyƒ‚t|{\‰xhz…yt~|”ˆŠ|~x€Žqrwxq‘ox|€zvu‚vo{vwg“€ry~€uuj}z|€xc‚q€qd|{w‰x~suŠ€“y€{‚‚…ysyvŠwg‚~v{ƒv~~s‡{~……‡Š—zr†{€zsnyv†r~€}z˜}{…w}{sj‚ƒv€}}}‹ƒ~ƒw‰|{v|…{v„s€|‰ƒ€~‚„‰…|~‡~}}~€z~fs}~€rz|~…Œy…‚s…|zsƒrutyz‚ƒ}}}Іz€…‚~ˆ‚‹„‡yz~|{‰{oz…xiy}ƒ‚€…„t€„‡z…ˆ’v‡„ˆ€•Œ„“–€’‹…Œ•…Œƒ‚„Œ‹†…|x‹—‡’‹ŒŒŒ„ŒšŒ‰Š…‹‘ƒ†‰„}uŽƒƒ}‰‹‚‰‰Œ’‰…|ˆš‰wƒ‘wˆˆˆtˆ‰‡†ˆvˆ|}‘uŠ‚}‚ƒ{™‰€“yx‡“…†{yƒ€„–’†“|‹Š•w‚‘~Œ~u˜Š‰‹Š„†™‰‹Žˆ‚„’„‡‡‘–y}‚‡zƒ‚x‡Œ‘……€zŒˆ…‰oš–ƒŽ€Š~…ƒˆ„”–Š|{†€‰v~‘‡‰•x‰‡‘Œ†‘’‡}’{}x‡Ž€Š“ƒl‘…‰zzuƒ‹Š{|yt‚Šps~€sp—zy|x—‰vy€uz~…xdŽr{~w}twr~|{zeƒr€uu}zx‡yqvˆ†x}z‚ƒ…ytyv†‚wh‡…vƒƒv€v|z~††Š„”yt‡uyztoyvˆu~€~ˆ~|‹y}zr†‚w|~}Œƒ~ƒxŠ|z‚s}ˆ|r„y€y‰ƒ‚~‚„‰†~‡}}~~€z~ft|€sz{}…Œx…t†}zt„rvuzz‚ƒ}|}Š…{{†‚~ˆ‚ˆ‚„‡z{~{{‰}o{…xjy}ƒ€„†…„‡z…ˆ’y‰„ˆ€‹”Ž„‹—~ˆ‹|ЇˆŠ‰ƒ|€•§†‚’‚‡}„Ž˜‡“‡ƒ–”‚Š’‡€Œ‚¯–Љ€„Š‹€Œ }ˆuƒv‰š”’ˆ|‹„x‚ƒƒ„‹—Žs†ˆz†‰“‰Œw’‚v~ƒƒ’ƒ…–’‡ŽˆŠ‰ƒ‚u~„ƒ|‰‡{‰‰~ŒŒ‚ˆŒ„†s…‰‡|Ї‚„–~}Œ‹‘Œƒ|„”†‘’‹„„–Ž‹‚Ž‘}އˆ€†ˆ€€‰z††‚†„‰€ŽŠ|Љ}„‚‹„……ˆx‰„…‹Š“†Š…ˆŠ‰y†‰ˆz‰€Žˆˆ’uˆ‡€ˆ‚w‚~}|{˜iky”‚„‚}—‚u“i‡qv‡…zrb}‰Šƒž|Ž}lÀ‚w‰y‹ƒsyq‘”‹~†ž…žˆy}r…†uu€}ާŒ‚Š’€Ž‡~“ŒŽu’€vb€ƒ‡{Œ‡ˆŒ{z~‹|zz‘‚”{šwx„vl“—z|tˆ„um{p}„x†‹ir}Š„v‹y[|“„|u„g‰y…d`~zsi{–ƒƒ“¨{u€y|{q‡‚bpŠˆ}”ˆ†vy†–Š{|‹wžiusŠŠ‚†tƒƒh[…uŠ‹‹||…{•vŒw{”j{‘y}†›txŠr†o€‡tp‹‰„Ž|nŽtƒonv~{„•”|„…„€ˆts€yt–{~|{™q}}‚yiw~yo€s|z~vv‰t}y|~}gt~u]}|z„}€sw‹‚ˆ{€{‚‚…zsztyiˆyw~w~r‡|}}ƒ€‹Œ{rŒx{uqyx‚t€€~ˆœ}|ˆ€}{s„€„y~~‚~„x‡{}€u}„‚{p…o€{‰„€~ƒ…ˆ†‡~|~€|€€gvt|€}~…Ž|…‚t…~{uƒt‚vuz{ƒƒ~€}ˆ†}€€†ˆ‚„‚„‡z{}~|‚ˆ|q|…zi{~ƒƒ€‡„‡{…‰xˆ…ˆ€‘‰›¦†“‡‹„sŠ„t’ˆzzo‰ˆw„}‡‰‰~~‘{ƒ‡Š‘‚ˆ„‚‹ˆ…„‰‡‡Šq€‰‡r›r†Š†ƒŽ‰ˆ€Ž~‚‹ˆt†‡’‹y…‚Š—}…{‘‡{ƒ|‚„Œ–{vŽ‚Šƒƒ}Ž}’ˆ‹„“‰‡ƒ†ˆ‚“„||‡…„szƒ‘{¦v„~‘€‡‚v|‰ˆ’˜tl‘y~ŠƒŒ‰Œˆ—u‰‡…”œŽ{y•Žxu|–€yŽ‹x’€z‡Žxr™“†~†x|„ˆ€€„ŽŒ“€“uiŒŽ~‚„„z{ƒrŽv‰~w–|‹„•suzw…”‘nƒŠv‚‚z|Žz~„€ˆ€szŒ‡ƒ‡~ˆ€~†‰–~~uwxs~€lv{w‚–€ˆ†„}|€|x‚v€¢}œ†zy…ƒ„z‚{yˆ|€€}zˆ~~w~pŒ}}w„|Œ|n‡x}ƒ|}t}s†|v~Œ}ŠŒ{ƒ†‰|…€€–xn†t€ƒ„x~ss‰r„bƒ}zo„ƒ†p{‡€sw‚‚{‚}„‚|r€w€„x…†Š€†{|}†€‚z€z|€~…€ƒ{„„€{…t‚‡ƒ€‚†xz€‚w€…yw†„y€‚||ˆ…ƒ‚€†Š{ƒ‚ˆ{~Š…Ž‚xz‹‰‰”‘‹}ƒu}šª‚”Ž‡‰–……‘…{wˆ—‚—Œ‡ˆ†±›‰‹‡…‰‘w•€ŽyœŽvx‡r‘Ž‚€’…‹~ŽŠ‘}“ŒŠ…ˆ„†’ŒŒ€“{Š–n‘u…l’sq„‡…‰|Œy—ŽŠw‹† }†“’„€ˆtw’šq𙑋€‘n‡•“yr’™ƒ‡™žŽ‡ˆŠ‡Š€|Š Ž”x…}ˆx‘ƒ‚ yu‚~Žx„‚y”˜‘‚–|“‚Š‘‹Š†{Œ—…˜†st~’‡…‡ˆ…’€Š•ƒˆ{‡‚tz˜Œ™Žˆ€„‰’‘Œ†‘…‡|‚‡ƒ‹„~y‹˜—Š•Œ’‘|—‚—–ŠˆŠ’‘…Š”‹|†ˆ…{ƒv‡†{Š–‡yˆ‹…Œ‘’„‰‘‡„w”ƒˆ‡v‡†‹†ŒvŒŠzˆt„tˆ‚Œ~‚‹|˜s~‰“Žˆ†ŽŒ”~†ˆyŠ“‚Ž|ˆ‘†ƒ}|…‚‹†ˆ–Ї}†ˆ’„™‹ƒˆ€Šz‚Ž‹Š~„„…–z…„ˆ‹–Œ›…„†x‘Ž“ŽŒ–Œ•Ž…ƒƒŽ}†‘“y“‹Š…‰‹€ƒ€†ˆ‚Š‹‚‚„ƒ‹ƒ‰Ž‰{xŽˆy†ˆ…~‡l„Žˆ€ƒtxv€“}{v{f{zovt}{w‹~xypwŽŠ~t{zow€n—Šyv}vrutg{mwxxt€„‚}ƒjyvs€p}p~Šv—xmw}y~puru’yw~zod‡zyom~qz~|…~ˆˆvxo‚wvszin{p€}uo}€xˆ‚rvs‹r|rxxvvªnsvnhuv„footnŠxkzwyu|mjvmyy~strqmswox{snuuuwqv€v}wqqtw{~rxwtuxywv…wy€wzurƒuzwxw—w}mprsmr{qr}synqwyqwvn‚v{u~~‘vyxxwtwz|kx{„t~ovuwŠz††yzlyŠ›‰y{€y„x—‰x}xptsxn}„vvt‡‰€„Txxvvq}o€‘x{mu~yp|sw•yz‚~rhˆyyonŠpzs}~…‚qxqŠxyt{irzq}|s|}}zŒˆsy{s‚uyxyx£mnznkzw„vopul||s|oyuzhov€ky|‚qsvtmvwn}{tlztxyoxwrruy~tzwurr{zw€zw‚z}vr„qz{{y™x~mrtwms|}{uv{lsyztwupƒ†w}€w‘s{y{vt‹{ˆy£ƒ‰{‰’ˆ|„†}‘¦…~‡‘‡˜•ˆ‹€‰}–…Ž}Š„}‚›¥ˆ}‡‹v‰‹‰qš‹ƒ~‚Œ}‰©’‡†yxŽ™‘”„q¢ˆ“ˆƒx“†Œ’w}}Šz†¢“—vv„„~€su|y”ƒˆz‰t¡‡y…~|zyw~‡—‹n”q’‰‹wœ~‡yv€Œˆ‚†’‡‹“¦|€‚’‰ˆz…”ƒ‡x‘|‹•—qŒ†|¢„‘‚ªT„…“Š‚}xztxnŠŠŽ’zyœ„t|Ž”ˆxœzœ‘}Š—…Ž”‚xƒru…˜~ˆ‰r”p‹p„’ˆxxs~|”z}rvz‚smwzŒˆzvw}‘Š„uyrxy}i™ˆx}}wswul}rv…uwuz‚ƒ`zuo|pzl|›wvmxzxo{rvyu~€nb‹yyooƒoz‚{”|}Œtwt„qrurxkn€q~yvn}vŒ{rvq†s{sxuvuœnxtnhww€umuso}yhyzwv~niw‚€mzw}uurporwtsxtovutvst{{}wuqst{~qvwvt}ywvsuw‚w}uq„tzxwv™w|losvlp|jr~txqpvwqzvqw{s}}Švzxyyuˆ¨vžw{ž¬•|“Š{‚Œ~™“¨†“—w~š¢˜‰‹ƒ‹Ž t§…sS‡sž|z‹¤žs•|‘swª›‹™†op‘~€rR­¸ª~˜“«n‘q‡Žs„jq™—w|Œ{”j“‹{}—uo“‰‰yopA‹–‰xŒƒŠ\‚}†—„Žl’€©Œ¦¢~Ÿˆ’ v„•tŠ•yzur”£†Š°}‚{Ž‚‹‡|’Œ¹’†€†x}k§Ÿ}wwއx‹‰z}Š~z‹Œˆ†£™v‡p{v†|ƒg†Š•“‘Œu‹ n—oЇ‚„”|€Ÿ…†¤„†‡yv€n‚‚u›€•z |Ž}Œs«ž„uuf—†x„ž‰…‹}„˜‹‹}‘‚‚‘l–~’…xŒ†•|ˆˆšz™Ÿ’†˜‡‚…gšx‡~}†˜Ÿ„v‰ƒ’{€„‡ƒŽk¢¢˜s”†•€…’j†}Œ‘pvŒ‰t††“zŽ–’‘|||‡ƒ”œ‡•zxƒŒv ub—uv~€|œ’Šf–}Ž|‹†„˜’g¶‰–sv”œ}}Œp„†v‡’y{¢y‰…zyˆuŠŠ‹šˆ‰ŸŒozƒˆ~x†”œm—‰weƒŒs‘w€~‚‚t—mˆ¬|wlym–ˆ€{n†…‡„€|ŒŽŽ•Œ‘…Œ€‹ˆ‹‡}|‰••‰†ŠŠ€“„“„€~“Œ›‡“–’|‡zˆ„t‰‡tzzŽ‹}‹‹‘Œ†ŽŽƒƒ„‹€‡Œ¥”†‡Žu‰‰…œˆu’•{‰z™rˆz{}‰‘|ƒ‘„‰„‡y|„„…•}ž–š‘|€ˆ|{‰Š{}™‹‹‰…ŽŒz„”އˆŒ|‡Œ€‹‰‚‰ˆ…}‹|š‚‰|™™Œ‹~Ž‘ƒ…‰–~‚‰}ƒŒ…„‡‡ŠˆŒ†‚‹€‘Š~…ŠŽ‰”…ŽŒ‡…y‘‘“‹„‘jŒ„…‡‘{‹‰„›•…‡‹“~‘Œ”ˆƒ€vœ‡“s˜Œƒ’‹£€’‡zz”‚™ˆ’ˆ…€‚Š‹•Š„‡ŽˆzŠŠ“–|ˆŒŠy„™sŒ“ˆœ”Œ€•‡š€‡ˆ—z†—Žˆnš‰‡xЇ–Šq•ƒŽqt”mŠƒŠ‹Š‚„ow”ŒŠ~u’x“„…ˆ˜„~„‰n‡ƒƒ‘”Ї‡ˆ‡m•ˆ”zއy˜ƒš‰…•Š|t‚‰}‰’{‘‰ˆˆ”‰{•x€ƒ¤xЉ•„~~‚zr|—†ƒ‰Žx„“…|ˆ{{Œˆ–’˜‰r†¢Š‡v†Ž„†{‹Š|ŒŠuŽ|qƒ„…ŒˆŒ‡…‘…zŒ‹‡„Œ‹Іˆ‡‹~z„‹•‰‘ŒŽŠŠŽ•‰‚‰œ–ž…Š‘uˆ{†uˆ†~{”‘•}Œ’ŒŽ†‘ˆ—‹€…Št†‰„Ÿu“{‡|‡s‡}zƒŒ|……w‚„…~‹|€€ƒ‚’†’}™¦z‚‡|ƒŒŠ~ƒ––ˆ‘‹~‹Œ†‚ŽŒˆŽ~‡Š††ˆ’{‡„€{Š’y”„Š‘‹‰œŠ‡€“‘ˆ„’‹|˜‡—Ž~}”~†€‘‚ЄЅ€‰€—{‡†“‡‡…‰Ž…”™Œ“†•Ž‚‘“’ŒŽj’„‚ƒˆ~„‹“ƒ“Š’‘‚Œ…Љ€Œ†ˆ‰™œ”‹Š„€˜–’…Ž”‚žŒ“‹Ž}ˆ‰{‚zˆ‘ˆ{„›‰Ž}—Œš‡…ˆ‰†x„Ž«†‰wƒ‚Ÿ„uy{x–sŠ{‹€‹€nƒŒŠ•’yˆx„}y†~‡†‡|—†‰ƒƒ‘}}ŒŠ‡‡›…†‘Š}ƒ‰‹‡…“ŒŠ‡Ž‰††…ˆ…„…z‹Œƒ›Œs—”‡€‡…w…„””™Œ†Ž€}‹€œ˜~ˆŠˆ{‚‹~ˆ€‘t|ƒƒŠ‘–‘‘‘”‹‘‹•‡ƒŒ€’Žƒ’ƒ‡“kŽƒ‚‘{twy’|Šxup‚‚nsn{qsuuxqŽyytsl€ˆy™}ov{woclcjwlyu’jvt|€{z‰yi‹}k}tƒs~c€mƒp€„m…l]‰vƒ{nqi|p‹‘€Œ€u†rsz{rv„\m_ph‚ur†ouc‚z‚|uuwuŠls{|fy{œh”jl‚Šmyxvvlzoh‚ruc{}‡wo„h}vxw}…wqlo~tu~xzqxlygu~z|wvf]yxrvwt‚x‚xzmƒsyuti—t€†~qm‚ek|sx{~tylmwspuyu~‰zsk{†‰trvvg‹ˆ‰’‡ˆ”މ‚Šp€‰Ž‹ˆ„|‚…ˆz”™’…‰…ƒ›‘†Œœ‘š‹{™‘‰{‰‚v‚„€˜‰‹|y‡‹‘’›‰…‰”|„v‰‰‡uv““sˆ{|zzsŒ‰|~{‡|„š‘ŽŒ}|‹‚„˜ƒ‚‚{{‡Žz|Љ†~ƒ–‰™†|‡‰’‰˜…‹‘„„ƒ‚”‰‰ˆ‰|‚‡—|’„€‚Ž“…‡}™‰…‰’‹ž–‹ˆ|ˆ„‹Œ|މ‹Ž‚€Œ}’}‚ކ’‰{‹‹ŠŽŒˆ‰‚‹…Œ|ˆ„’„j‘„€“‚‘Ž……‡ƒŽŽŽ|—ŠŒƒƒƒŒ†ˆƒ†€{“ž‹†“™–Œˆ}”—……އƒœ†“…’Œ„{ˆ…xˆ‡€|‰|Іw‹†•‹’€‹Žz…ŽžŠŠ‹sŒ‰‹Š‹t‘‡zƒ’sŒƒy†‹}€–ˆ‘Š‹Œ†‡|w€‚‚Ž…Š“‹…„|qŽƒw›„‡ˆ}ˆ‹‹†wŠŒ‡€‹v†–ŠŒ‰~…„ƒ‰‰…†„…Žw‹’–ŽŠ‰ˆ|‡Ž‡ˆŽ‘Ž€~‹‰ƒ}‰ƒŠ“ˆ‡ˆ…€Œ€†z‰ŠŠ‘‰…’Ž–‡…Ž‘…}|‡uŽ“„†Œˆ’‘˜jŠƒ†Žyvsvˆ†‰{xt`y‡pou‰‚r”}tyyzŠrtxwvsƒn“„svyrmptgupov}mu€uv|uq‚ytj|†z‡tqw{s}jwhxŠƒk~€t^tw~l{qz~vƒ‰wyvuƒktrsymoƒioztf}ysyrte†w{pusstŸhwufgplerpswqeytvozlcvvxcxy„tsvpwtxsuurmg|qycu~uwxwpvqyw|yvtkh{xzosu}{ztpƒuyvtlu€†mmjuhnxqhu}qwkstwwwsw‹y}„e{‚„wywzpqŠ›ƒŠ‰§zƒ“‡—žŒ‰€v}™—€–•ƒ€–¨‚”~Šx¦”‚©{ow†~uœŠ¢‚Šu}މ”“‚‡ƒšŒŽbjމ™“ov|˜‹›“‚…¢v}ƒŒ›z„z‘“ƒp~‹¤ªt€‚–€w˜’u”‚”Žs¨ˆ“~…m˜‚w‘ˆ’ž‰{›…€™Œ†„‘ƒ‰nƒˆw~–t†›|v‚{…y„†ˆ‘€‰œŒˆŠ‡|€Š–…’|„ƒ’‰gxˆr‡•–~Œ„‚}“–}y‡z„~|†~‚ŠŒ‡—ƒŽqŒxƒsž‰}އ“…‘™{Œ†rŽt„t{œfm—f»wyœž“›tz˜RŠ}lu‰B‹r’‚•‘€—j‡xsÇyi‹x‹tqq“x‰‡y’‹ž‘o•Œ`ƒwK€ƒˆ™d—t„_~Œ‚Ÿ•„°ˆœ”ˆbp–sœw~‹€‡‡‘r’Švu~~Š…pm”›Œe‡l{˜q|„“}kqpš|‡{vzz~vdq‰šh¤f§‘……woq€€gnŠ‘poq{g‰©‡|ƒzˆh}Ž€†l‚us•u¡|‘†}|q–“}\ƒ¬…~Œyw™—vˆŽ“|y…€cŒ‰zu~‹wz‹s›y™Šlƒxs—t}”ƒ‚yytƒ}’{|trzxjx|t’‹{zz•†u|wzw€k…‡zw}xvxsj€xyŽxyux‚{gzus~u}o|šx†tsx~{€pwqyŽzw~|od‡zzrq‚sz€Ž|‚‘{wrŒlmvqwlm€r~|xtˆ~wtvr„s€sxvuv–rwvqjsvƒxquuq{xtyxzw~okx‚€r{z€wvtrvswn{yurowvvru€{|}wutuw|~qxvuw€zwwqwxƒx{xr†u{xxx‘x~orr~or}~kt}ryjqwysywu‚x|t~~ŠxzzyxuŒ‡Ž‚‡Š”ˆˆ‘~x tˆtŒ|‡ŠŽ‰ƒ‹z}‹—~›ˆ†‰…‚‘“Š‚yŠŽ}pŠ€“r›™x…˜…¡|ŠŠ†žŒ‘“w„’‘†–ƒ‡v•Ÿyu’€ŒquŽy‚†Š†„ˆ€x–…‹‚†€zƒw„„ŽŽ…~ƒv„€‰ŽŸ‹ˆ‹‘€t‘Œ˜s‰€nŽš|„œ—ruv”ˆŠz€‰‹uŽˆ‹„–{•ˆ‘{›ƒ†ˆ…‡{}Œsp€Ÿ†ˆ€‡€˜Œ…|†„ƒ¡ƒ£oˆŸŒ‘‹‰„€ŽŽƒ…‚”„‘†z™v~wŽ‹‰Œ˜|”‡˜lwˆŒƒ‰“”œ€Š…vƒššŒ–“…Žz™¡†”†‚w¦’ƒŽ«‰ŒŽ~sƒ‹¢ˆ{‹ŸyŒnz‰‡Œ\’‹‹†s~ —‘›Œ‘…šrŠ’€‚Œq§”‹ˆ™~š–‡m‹‡m†ƒ—„“ˆ„}qt}ŽŽ‰€‹€‘i”~‚š~z“‡‹‹wˆ‘›Š™Ž‹˜iŽ„yp„”ª‹–“•‘‚ƒ‹˜{‡ˆ‰Š‘‡ ‘|„w‰›†w–€†”}xˆ‹‹‡“†~s~ˆƒ„‹œŠ¡’Žlš‚|mt‹€‹qœŠ™ˆ‰•†t|¡vš€Œs|€‹z†œ‰|‘ŠzŠ…pŒ}‚Œuwx…z{vtjxŠnjy}}v“ƒvyrxŽ˜xnxv|t~h”„yw|tqtrczrvuxs{€ƒ~€dytpu|j€¤x‘wrv{w~nzpv”xv€€ja‚yyp€m†szzƒ~~txr…vuurzin~p~{vkyv~‚rwt‰q{qvtuu›mxtoerv…tnqspupxtxu}ogv€~nzxttqotquwvzspqvtuou|z|vsqsv|}qwvtv~yvvvtw€vzsq†uzvwv–v}mqmpnp|}gr}qxpovxpxur‰v{s}}‹wyxwxr’‹€„„€ˆ‹‹‰‚ŽŽ…‚‡~‚‰w™Ž…”’”Š‹…~™–†‚”’ …•Š’…‚|ˆxŒŒ‹~|„Œ˜y”…—ˆŠŒƒ‰Ž|‡”¥‚‹t•‹…’ˆu“zŠ„Št‰€ˆxˆˆ~†™Š~~Š‹x‡„}y‚‚–ˆ‡ˆ~žš“ˆ‚}{’Œ‡ŠyœƒŒ}‹‘‹Šw‹‹ŠŠ„ŒxŠ’…‰‹‹~~ˆ€…‰„‰†‹‹yŒ‰“Š“‰‡ƒ††‰‹‹‘o‡Œ‘Šx‚}‹y‡}ŠŠ•‚ƒ„ˆ‹„š†|†ŒˆŽŽ}‹˜Š„–‘Šˆ—y†|“ƒ„ˆ”—–lŒ„Їƒw–‘ƒˆ‡†’Ї”ƒšŠ‰€……ˆ†ˆy” Ž…–—’Žƒ€–›ˆ’Š‹šŽ“‘Œ‰‹€{Ž…z‹Œ…{„‘„†zš‹•Š‚†‘‹|ƒ‹§‰…†Žv”ˆ~ˆt|{|sŠŽ~„‰‹‹‰€†ˆy‰‰zxƒ‘މŽ{œ‰“ŠŠ}wŒ‰’yœƒ‰‰z„Љ‡‰ŽŽ‚Œvˆ‘ˆˆ‹~yƒ€‡‰„‚Šƒ’qŽ”‡†z‡ŒŽ’jŒ’‹|ƒz„‡‹~‘Š˜†„‡~ˆŠ~ƒŽ‹z’‹Žˆ’‚ƒ”~‡vŽ‹ƒˆ‰ƒ•‰‘k‰ƒ’€Š{‹Œˆˆ…“”‹‘€—ƒ€ˆ‚Š‹ˆ‚€Ž›†–’’Œ‡ˆˆ–‹‹‰”†‘Љ‹†{‹€w‚ˆ}‡‡ƒ{‡ˆ‰Ž••Š~Š—|ƒŽp‰ˆŠu‰Œ‚Žt‰„zˆxs€…}‚Œ{Œ†‡‘ˆ„‡ŸˆŽ{|І‚ŽŒ“‚‘{‹Š~Œ|{‰Šs}›ŽŒ‰~†“ƒŽŒ‡‹„†€ˆ”‹ŒŠŽˆ~„ƒ‡Žz‚„‘~ƒ–…††wŒŠ‰Š”ŠŒŽˆ‡„‡‚†‰…„|’Ž…„‹€‹‚…‚ˆ†ˆ…ޑВ‹{Ž…„y‡†‹†‘…•j„‰}~Šz—Іx|‰š•…ƒŒ “zp€e‡~‰‡’|‚†„‹‚‡‹„œ‰‰‰ƒk†–ˆŠ‡–—{  ~{y~w•{~”}‘ŒŒ[ŠŸ˜”‚™Œ–z„’ˆ™y‚†Œ}ƒ•o™ƒqŽ’†ˆ›Œ‚|€œŠ…ˆ‹…˜x‚Œ‰}†–ƒ–”„Šmƒ…‰‹—ˆ†rz‘{~‰‰ŠŒ•zxmƒƒšŠ†‡}—•…ŠyŽ“‡Š{†‹”‰yx””ux“~Š”†Ž€›Ž›•{˜Œy€ƒŒŠ€„‘•ˆ†Š‰‰u}ŽŠ‹…€’z’‚“’‚{‹u~„žŽŠ‚…„Ž“Œ„‘~œˆ~……™€~’§”‚“‘‹‡‹—Šƒ€Š‰”‰•“‘‹–Š{ˆƒvˆˆyŠsŒ€y€‡Š‹‘Š€“—~‹’‰t‰—x…t‘™yЇsŠ€Œz…}˜ŠŠ}ŠŠ˜†}z€†€‹…‹{’“€‰€|‰|m†Œ}y˜„‹†„ƒqŽŠ„|ˆxŠ˜Œ–Žˆ„ˆˆ…ŠŠ…‚Žx‡’–˜‰…}Ž…†Š‰„Œƒˆ{‡~ƒ‡t}‹‡‹Œ‹’€“€}šƒŠ“ˆƒŠŠ‹…ƒ—€|‰|€rŠŒ€‚†‰‡‘k‹ƒˆzš•t˜Œ€{ˆ€}˜’˜’z„zw˜š—‚“‡†˜™†v˜–†ޙދ†ŠŠ‰›–~ˆ…”}“}œ}”˜m’}”•ˆ“˜‚}–€ˆ„‘w—ˆ„‡…w¡‘†Š›‡“‰“pŒ|}l‰‹‰…‡……‚x†x•މw„„—y™‰•‡•z}„{’™ŠŽw‰•†“{žj–’zyˆ’ž‰‡¢¡”€’€Œˆ€ƒ‡„…p}ž‡€‰~¢…‚x¤zŠ…’~t…œˆ–‰{vv}…tŒŸ‹‹“v¡zƒ{‹…~‹’†–‚ys§y–„„{~‚’‡„š‚Ž”}Œzˆi~—‰Œxzq‰Ž‹„z~„w|wt{zw”„{|x{—€xwx|zu{Š€|€{uzto~|}x{ps€‚€‚qz}z†ys}š|‚zwx€~‚uyw}†}z~wo‡~wvrˆ|{ƒŒ~†Œ}yjŒkwyuwrs~r‡}xv‘‚y“„wzt‘zv|yz{žxw~tv{ynv|{t„s~y€|}tx}…ƒu|}vyzzz|~z}yusyz|v{ƒ€y|w{y{}‚r~xvzz}~|s{z…|{x„w|}€}•}‚‚tuxty‚|yzw|rw{~z{zzƒ†|€ƒy‚„v€{{‹Ž’ŽŽŠ‘†z{‰Œ„„~‹„—™”Љ…‹Œ™”‹‹˜„ŽŒŠ„’‹ˆ{‹wƒ“~ЇŠ}Š‹‹‘Ž—‡€ŒŸ}ƒ‘u‰…†u|ˆŒŽ”tˆ€z†x€rŒ~Š{„‚‡“ƒ‘†~{†‚ƒ”ƒ”…{‰Ž‚‚€|ˆ‹Œ{|˜†‹˜‡}…‡‘‡“‡“ˆ…Œƒ…މŠ}}}ˆ–v‚’ˆŽŒ‰……xˆŽ‡Š”‰››Žˆ}‚Ž„’Ž~Ž€‹€Ž~{‰ˆ‘‡€~‰‰‘Œ‚Ž„ƒƒŠ}‹‘„‹i’„€~Œz^‹‘|‹‚€p}…t|rw~ƒƒ}m„”އ{zy|sƒŠˆ~~}rvt‡„sxi|”}€zx||ri‚y‚„utˆ„ƒv„yv‹y{pvƒ|us}j„y{r|†‰yˆxf‰ts„v~q{~o‚{s„z’ˆyƒ~†z‚zƒ€”uf†p~€€usw|mtŠl„]‚wvg„{€†hw†}ms€v€|„xjƒp„r„†–{†|zyzˆ…‚u}wz{{€…|€x„„€v…oƒ†‚t…tt~‚r|ƒt~†}„r~~€xw~‡~ƒ}€…Œ‹w‡vz{vnŠƒytp}ƒtqtž{u“yxysz‘ˆ|w{t{|ˆf„{w}yvtsp|pwwyx|€}„h{vt|s{q{šy‹vsx|qur}{wxƒzf€}us~o€oz„™}~ˆwu…{lwpvlp~s}}wpƒ}w–xtwsŽt|sxxyv¤suxooxwƒtr{vq|yt{|y~ooyƒr{|vvvtruxjxzvrmxvxsv€|~xuuvxuqywttyzzx|wy…z{vs…wzzzy–y‚osy{ot~~vttz_rx{tyxv‚…y}‚t~€Žx||{xw‚kˆvƒ‹y…‡v|kyz…}‚}r{™{…z}}zy†–…~~}tvtq…Œ„…w|uv~~~{z|w…h†z‰yw„†„wzu‹{€‚tvxˆ|yv}n‹|{r}…Š{‹yiŠtzƒv|t{qƒ}v}‰|€’z‚|”|„{„~~›yl†r|yvxrk‰pƒ[„|zl„~‚…oz‡~qvz~‚€{otƒv„†–~†~z||„‚u~w{y{€…€ƒy„…€€y†r„†‚w‚†xw†v„u~€†~„p~€zz€ˆ’}„€€†‹‹xƒ€ˆx}wp{ˆ‡‘}xtvyŒshx•xv“…yyy‚{r|sxvzi‡{y}xvysg}lv‚wztx~z}s|wq„tm{”x‹uty|{€qtry‡{uzrdˆ|xs€rxqz…‘}†‘zws‚spssvmmƒr~}yi‰wƒtvp€uzrxwuv—r|urkuvƒorwvrvny~{w~sjy„€s{z}xwtrtsyotzvtmxvvsu€xx|yuuuvs~rxwt|‚zxxswzƒxzws…x|wxxx~psrwqs|~gs}rwmqwzszxvŽy|‚t}}Šx{{xzv‚|{“›”ƒ‡ˆˆ}‡Œ‘ƒ„†‡|‡ˆ€‡„ƒ…z†~…Œ†‡€†…„ƒˆ“x—„‹~‰‰…‡Ž‡~z}ƒr‡}{Œ„~ƒz€€ˆ‹|‰†„„ŠŠ„†ƒŠ„‰‘ƒˆ€Ž„‚„Š~ƒ‚€Šƒ‚‚‡‡Š‡}‹…‚ƒŠŠˆ}‚„Š‚ƒ€…‹ˆ‘ˆ‚u‘‚}s‹‡‚™ˆ‰ƒŠ‚„„~‘ˆ‚„}‹xx‚‘ˆˆ“…‹ƒ~†‡„ˆzƒ†‰Œ‚‰€‚‡„‚~†ˆ†—‚yˆ†‚„}‡š„“–ƒ‚ƒ†ƒ…‡‚€†‡‡ƒŠ‰{ƒƒˆ„†…x‘‡ŠŠŒ‹‹„‚‹Ž„‰€…ƒ‹}€ˆ†Š‡—•–…‹…€Ž–‹”…Ÿ‡Žˆ†€‹{‰ƒvŽŒŠ}…—‰’zŒŒœ‹Ž‡ƒ‘‰y‡’ˆ‡…u}‰šŒtx{}v‰sŒ{…~{t‹‹†“„‡Ž|}‹…•…†yŒ„ކ€ƒŽ|{Š‹‰ƒ™Š—|†ŽŒ‹†Ž‘‹‰„‡‘Ž‚…Œƒ‹|~{ˆ’z”†Žv‹ŒŒƒŽuŒŠ‘ˆ˜‘‰‰‘Ž~Œƒ…”†Šƒ’‡‘€……€s|Š„‰’‹ˆŠŒ”‹’…†€Ž“‚”ƒŽ‘j„{|’}~„ˆŽ~†|ŒwzŽwv|‚|yy›…}~~x€ƒtŠx|~vyth„~€€{}sn‹uƒyr|yz…z~oy~ˆ|zyƒƒ…x|yv‡~{xƒvˆvz~rƒz}{ƒ–‚‡†ˆznŽsz}uvuwsy‚“{}ƒ|~v€~ƒy}~“}v„u…}}xz‚vv†u‚l†}tƒ†…w}†~wz€€y~z€|xu{}x…Ž|…€w|xƒtwxz~ƒ€€zˆ…}~{…z€‡Šƒ†wy}ˆx€†y|~…zn{~‚€}}‚„‰}„„|…‰w†ƒˆ}€{‰‹zŒ‚’ˆ|{„tz‹}{z{žs€~x€ƒzuˆz~v{us‡€y~un‹z€|q}{|ˆ{sy‰‰|}{‚ƒ…y|zy}zy…w‚€v{u…z~wƒ“‚€‚…|qtƒ|vxwwƒuƒz~•}~—†|v‡„z~–}w„w…{~y|‚€wt†rm†€~uƒ‚‡…w~‡x{z€|€}yt|~‚y€…‰~…€x‚}zƒuyxz|€ƒ€|‡…~|„{ƒ‡‚‚ƒ‡yz~Œz€†w}~…|‚u|‚~}€†~„„}…‰x…ƒˆ~”‚’”–‹€}ˆ‹‰‰‘ˆ‘ƒt€•…‡~‡€y”‚……‡‚{“††‹“Œ~ˆpyŽŒƒ„–ž€‰‚‡‚Ž““{Ž{~•‰\œ™ž¨‘~v‰†w•~…uˆˆŒŠ‘z…•vŒˆ‰ƒsŒ¡‹„™…j}—ˆŒ‹…Ž‹‰…r‹–„…”‰v†ž¢…œv”˜‚Ÿ”„œo}~‡}”ŒwЉ§Œ†ˆ‰“’“~‡Œ~n”{}†Š‰|–‰†ˆ~€… ›|—€x†•‹x”y–—žk˜‹ro……{z‘©‘†„œ€z€††Ž„‡ƒˆƒ–‘ž‡~‚ƒ‰|y„…xˆ„Š„~~‹‚‹v†~‰‡‡ŠŠ”„…ƒˆƒˆ‡ˆŠ…„„Œ‚‡‰€Œ”Œ„„‚}†„~ˆ‹„’‚„‚‰„„‡p†…‚‹‡‰v‹‡||{…‚„‹Š{…}‚ˆ††Š…’„„†…Š…‡‚ƒ‹•’ˆ‡Œ†‰‡ˆƒ‡|…„…Ž…ˆƒ‰Œœƒ“†‰‘…ƒ…w|‰‹…ˆ…‰‚Š}“‘’„…Œ‚ƒ~…‹y€„|‰…‹€|†ŠŽ‰”ˆ‡‰„Š‘‰Š…†z‡Œ„‰€†}Š˜†ŒŒs‡{ˆ}„„‚„‡™‹„~…ƒˆ‚…~ކr„~|‹„‰…‚ˆŠŒ‚ƒŒ†—‡zn{†‰}uqizuvx‘tx‘ƒzyw‘to|nzvzcŒ~z}ws{sk~guwxr‚€yx|{tp|nx‡vpw{y€pvrrŽ{xx‚wdzzqp€rz}…‹ryrttnssxkn|qy}vh|z€tvuuxrvvtw³pvuogtv‚jpqup{wiywzw}ojxƒ€qzywvsqpswsyzuqtwvvsu€wz}wurtw{}ryxttxzxwqvy‚w{ws…u{xxw˜w}orsxorz~hr}swkqwysywu‚…y|‚t}}‹vzyxyukqŒt€uovxŠqf|™€}…x‰{p|‰€•ozy‚t}oš„yƒ|z„x…s‚~v|…‚t„„‹Š||u‡‚„‚{z“u•‚tyuyxx‹„z‚‚mˆv…h‰|ˆz|m|r {Œ€zw€„~ƒ}sus|‹‚v{u™zyvf€|y{vw•w‚‡siyw–d{}dh†ui}€rworki‘’rm}…qv}rswzu{zln}uy~z}qoŽv†yno}wwzo—y}|€tiqƒp}~y{uˆ~štsvƒtjpxƒq~xwt}wvz|}ly•މ‡w‹Œz|zx^|—Ÿˆ“‡Œ€ˆ|€ŒŽˆƒ€ƒxz„ˆ‚‰ŠŠ‡†“‘Œ’Œ}š•„|‘”Œˆƒy•“‹Ž’¡€ƒŽtˆ{vŸtŽŒ„œ–œ‘‚†~…ƒ‘—‹ˆ‰ˆrš‰Š™…rr~ˆ|t†Œ€’„Œƒ‹xЉŒ€…}x‹Ž‰„€Œ‰…q”‹|šy”‹„””r–tu‹ˆ‹‚¨š’ƒ™ƒ|‡|„~–vŽ”‹€‰ˆ…•Š’z–‹‚ŒŽ•…Œ€ˆ€rŠ|Œy€–‡˜ƒ”wšy…r†‚ƒŒ”Š—„›£€‘€…}†‚ˆ€’s…‹~’‚€yu…‹Ž‘‰|†‹‰‘ƒŒŠ”‹Ÿ}‡ƒ‰‡~Œƒ‚zŽŸ—ޕޓЅ”ހބ’•ˆ†ŠŒ‚‡€{Ž‚uŽ„ƒ}yŒ•‰Žy‚‡ŽŠŠŒš•„’l‰ˆu’‰‰Œt“Žx‹}‚sŠ€’{…‹zšŠ‰„€…—ˆ|~‹‹|’‡’{‰‹|~ˆ|x‹Ž‹{y™‹ˆ€ˆ„Œ…€ŠŠ‡ƒˆ‘ˆŽŽ‡„……‰Ž}„އ‹”‰‚wŽ‘‰†‘ˆ…žŒ‡‹}‡€Š‚‚Žy’‰‰‚•†~ˆŽ€‰‘‚Œ…Ї‹Œ‰‰†v–|vŽ“~‚‰ˆ–…j“„‹|}œŽ‡ˆ{‹‡Ž…œ}…€Š†}|„‚vŸ“›—ŽŒ‰„•˜Žˆ˜€‘š†’}Œ‘‡‚{ކw‹‰ƒ‰|†Ÿƒ”|–‡“Œƒ˜€¤Š~†“…ƒ…‹t‘ƒ‚‡‹uŠy“‚‰t‹“|‡ƒš“ƒ†Ž~ŒŠ~‰v‚‡€‰˜‰’~މ’—†‰|z“Ž’ƒp›Žƒ€‡ˆ‹ŠƒŽŽ…‹„‘}ŒŽŒŒ‘ƒz†x…‰‹}†Š{’†ˆ‰†ˆƒv„‰”ŒŒ‹z›ŠŒŽ}…{Œ}ƒ‹~˜ŠŒ††…‡€€v†Ž†Œ‹‹u‹‹”Œ…˜‡ƒš{vyŠˆ†Œ‰—‹‡k„‹‰wˆˆˆƒ‡‘ŒŠŽŒ‹o„‰€‹Šˆw…~z‡ŽŒt™Œ‘‚Љ‰ž‹‘†‘ž‚“Ÿ‹‚’„{Ž…w‹……–—‰›z„†’††˜Š}„”‹‡†‰ˆuއŽt††}{€‚tЇ~ƒ‹Œ”‚~ŽŒ—†xˆ†€~‚‚‰ˆˆ{‡„œŽ„€†|“‹Š}‚—Œ‹—{‡‹ŠƒŠ†„„‡‡†‹ƒ‚{…†‘€ŽˆŽw„…‘‘…‰~•‹ˆˆŠ‘…‹z~~…}‚ƒ‹Œ†ƒ‹€“~ƒŠˆŠŽ‘~vŽŠ‘‡–Ž‚†„†Œ~†–‘kŒ„„…’‚wu{~z‘}{wsyƒ~o{}s–‰zz}’‘yt~w~v‹i†|x|xw}sh~vz‰xxvnƒz~ezvt~v|o|Šxsux~}€qyrz…{v|ƒqf‡|wtqƒvz€’~„“{wuˆclvqvmo€q{|ypˆ€vŒ~uwt‰t‚tyvuw t{wrntv‚xrvws{yszy}yqnzƒu||xwutxtxqszvtqxvvtv€~~yuvvw{pyvuw|zyylwy„z{xt…v{zzyŒy‚qsr}qt~~lvs{iqx{uzxz‹y}‚u~ˆx}|{yw~z}…‰‘|€zx’}zzŒw–‡uއ…yo‚rtw„tkƒ~{}vv†|}~{hzq}a€}v‡z|u||…uz{yxwƒuuŽtmŠ€||‚|w|Œ…„~‚›‡{wŠfvxvtws|x~w‹‚w‰w{voz~wyyyy™~…z|ut{o{}{~ˆypzƒ€ƒu…‚€€~}zw}w~ll{}r…ww|xwy€}w{ty‚rzwz{}|mx~†€}yz‚€|{}{‹|ƒxzxyz{‚kw„s}xv|~z€|ƒ‹€‡x€|‰w~‚}‘ˆ ‹œ†‹„ˆ†‡‰ŠŒ€„ryš~–ˆ•‡ˆ…ˆ“„…’†œsƒ|…‘|’‹’„‚–˜}•‹|…~‘“’ƒ|{uŒ™’“‚œ’™‰Ž™‰‡‰‡Œ‹|„xއ}Ž•‚Šnx“zs•—˜n‹’Œ‡~”£•–އƒaŠ…‚‡{s“ƒ‹”{Œ˜Œ’‡•ŒŠp‹Š‡y’ŽyŒ“~‘‚˜ŠƒŒ”z“’‚…‹‡ˆ“Œ†‡}–{•x‚€ƒ•sxrŠ~Šžy‡|‰Œ‰}€Œ’ˆ{•…†‡‚sŒ†Šˆžˆw‚|‹lŠŠ…ˆ†Œu‹œv‰“p‚lŒ‡Žr{ˆŽ‹||~hz–vvyt‚wŒ‡wzxz‘~uv|vsyv‰Ž|y~wvzui}qxyxxxxzySzuu„uzpz‘z“wvx{{€qzsyŒ|w}‚kfˆ~yr€p€t||€~~wyt€ˆwwuxlq}r‚|xm~x†}swsƒu|twxyw¡qxwsktw„wsuvs„xvz€{y€qkyƒ€r|{wwtsusxxwzvtoyvwsv{}yttvv~~rxxwv{zxwvz‚x|tsƒyzyyxx‚~qsqxqs}}lr~u|wrxzszwt‚Šx|ƒu~}‰vz{zzvŒ‘‘‡ƒŽ’ˆ’Љ„~”€ŠˆŒˆ‹~‚††‹”›™†‹{…ˆ”—Œˆ“‰›ƒ‰}‚‹ˆ{Œ‚uŠŒ‡~‡£‚‘€’Œ‘Œ‘…‚•ƒw†„“‡……vŠ€£‹tŽ…z‚qŒsŠ|‹|}‹z‚yˆ„£‘w…„‡“{{Žƒ…“ƒ˜„ŒzЉ|…ƒ|ЄЄ‡žŠŒ“}ƒ‘‘Ž¥†”ББ‚‹ˆ‰‚˜ƒ‹u‡™{–ˆ…–ˆ„„{…‹”Š”™‰”œ•‰„‚…˜§”…Œ…‡|‚…z€—l‡…ˆ‘Œ†~ŠŠ–‰–‘„{‘~–Œ|‡ƒ‹j„‚‡‰{‰†Œ†y‡‰‘~’‰‰€ŒŠ‹{„~{ˆ‘‡—‡ŠŒ‹‡Œ™‰‹’‰…‹…ˆ{Šƒv‰††}Š”Š{Љ’’ŽŠ–„…ˆ~†‘Ї…ˆu€Š‡‘Žt‰}|ƒ|ŒsŠ~‰~‚‹}ˆ“‰„ŽŒ‡Œ†Œ}~……ƒ‘Ž…”{„ƒššzŒ|x’Œˆt}–ŽŒ•|…‰‰‰†‹Š…„†‘‰…‹~Š|xƒˆw†ŽuŒ‹‹‹ˆˆt’‹†ˆ”’|‹‘~‰€ˆ‚„ˆˆ|“Ž……€‰x‹‰‡‘‰†ŽŒŒ˜†”ƒ‡‚†‡“ˆ”Žj„‚€Œƒw–…wƒŒ‡~{…sz‹ou•‚{{~œ‡xq~z†„}u€y}~x{ug‹€‚€{|xp“v{zp~zyˆx‚lz}˜||yƒƒ†x|yyˆzs~„vw{sy}v„•‚ˆ†‡zp‹qw|uuvuƒs~yy–{~š{}v€y}~}—~v„w†}|„vzƒ€wq†pp‡€}tƒ‡…z}‡|xz€€x}€z}yy||€x……}…€v‚|yƒtwx{~ƒ~{†…|}…|€‚ˆ{ƒ‡xyˆy€‡zt…{w{~‚€~~„†‹~„„|…‰‘w†ƒˆ~|qoƒ‰„x{psyletŸkw|yv|Žzzwzutxc†zwvsvrg„|vŒvxp††Šy„syvt|r~o–tŠxlw{y€orryƒxxxotcˆx{o~nƒqxszŒ}…‡|xo„xuuqzin€o‚|un„€w€qxoq{qxwvv•mtvneuv‚dpstnwczuxt{mjv‚lyz}sssqwswp{|smlrvwpv€|s|wwpsyt}qxvv|zxvtwx€w{sp„rzvwwœw|lpwtnq{|eu}ryprvxrwuq‚w{u}~vywxwtŒŒ—…t{Žˆ•|­–‰yr|˜’{Žž˜Žƒ”›…–‚|{Ž˜—‹Ž‡……§•’‡•{Ÿ›„i~‰‡b£ƒ–‰}ŽŽœ”—ˆ…¯|Œ‡ˆŽw€pš‘„Š‰§•”o‰…ŠxmŽ€ˆ‡–’Š‹†y‹‘’ˆ„ˆ„Ž{—ƒ‘Ž…‰‹‡’ˆŠƒ|‰ŠŠ–„Ž’k„Š‹zƒ‚”‰‹ˆ™Ž|‘w…‚{“Š‹Š}—ˆy{¦ŒŠ•xˆ……„{’˜Œ‘‹|x}‹‹~¡‰¤’x¥ˆ{z†ˆ}t˜•Š‘Œ…ozŒ‡€“|†~‹~›~q˜„u‡x}œ††”|Š•ˆyxxy‘sur™~}|€x˜ˆq|yhzˆ{j“€t|~xxvv‚p~y}€fzr~uu}|y„}pwŒŽy{|‚„…zsz~|‚xjwˆy€t}~~ƒ…‘€‡Žˆyt’tu}tqzwƒu€~—~|‘w~{t“‚x}~˜ƒ~ƒx‡|{€u}…‚{p„t‰ƒ~‚„ˆ†€‡~€{€hv}t||~…‰|…‚u…~{t„twxz{ƒƒ€~~‰†{~†‚ˆ‚ˆ‚„‡z{~€|ˆ~q}…z€l{~ƒ€ƒ…‹„‡z…ˆv‡…ˆš|Œ€|އx‹ˆ‡~‡o¡iŒŠ˜‚•Œƒƒ•‚„ƒ‡ˆ‰Š‹„†hr“—–Ž‘ž}–€x~~€}`Œ„‡‰‡ŽŸ‰•‰šŽ•wŽ—‹‚’i›‘‰„™‰”w…m‹}urŽš{–‹Œ‡{˜’Љޑlˆ‡{‡}|—’€y‘‹‰Ž†¡’”nŒ„z€‹‚‹Š…•}•~‰€Šš—w„‚˜–Š–vƒ€}Žnv‡‰|’‰|‚ƒŠ}Œ€¡Œ‹xž‚‰t†wŒ…œŠ™ˆ’’†z‰zt†‰€…ƒu‹‘mŽŒ|…‰rƒˆ’“zwwy”Žzz}r’yuŽr‚zŒ‚€€|€}qu{}‚€g‹†y}ypyvkxt‚n„q‚x…yr{x}‚|…o{‹sxxx|w{yƒ}~‚tgˆ‚v{€‚‚t{‚ƒ–‹‚‘wx~q|{nwvs‚…~u{rƒ†wƒxwr„|zpzyxw“|wxny{‚yx|v|…uz{zƒxu}z{ˆ…z~stw|wxmzyv}rvyx|{|‚vvqn}yzyww}zx}xu††vkƒ|x|v“w}|rw„zq|yho…zzzr{xuz}q}‹~„n|€u~zu‡y‹‡‰Š‡……‘ŠŒ“y”Šz…Œ€ŒŠ†„~„Œz•ŒŽ‡‹‡Š†šŠŒˆ”‹›„‘£…‘Š|†ƒw‚ˆ™~‹‹Ž’yy„’”‘Ž…†ŒŒ|„‡‚Ž‹Šˆvz‘‡v€~yyŠtˆ~„}‚ŽpˆƒŽ”†ŒŒ|…„’ˆˆ€‡{‚‚…‚Œ}xŒ‹…|‡”‰“‹zƒŒ‰†Ž’ƒ€…•‘…†ˆŽƒƒ„Žz‡Œu†‡ŒŽz”ˆ‹ˆŠ‘‡‹‰Œ‹|‡ƒ„ˆ‡€„€Ž‰—†‚’€€†|„‹‰ƒ”’€ƒŽ“ˆˆŒ…ŠƒŒ…Š“~’ŠŽ‘ŽmŒ„~ƒ—{‘„–•“yyx‡Š†‡Œƒp€£‚…{…|‘‚•r€–ˆŒz{ŽƒŒŠœŽ‡{‹˜”ŸˆŒ˜z›§‚n~š‡˜y~š|„”tŒ‘†‰›…Ž|Ÿ‡‡‰Œ€ƒ‡ˆƒ–€œŒ‘n†xwn•†œ€‘’Šf|™‚’…‰†‰žuŠ‹–“Œ|……y˜’y•uˆŠ“‰œ”‡¥izŒ}xw‡˜Š†Ž˜•€Œˆ…‰œŠŠ†ƒƒq£‹„–€ˆ–‚„ŠtƒŠ’“Ž”}–š|‚Œzvˆ„Šp€®šŠšz‰ˆrŒŽ€…œ‘™’”‡k|•’•€‹ˆ{’ŽŽ|ŽŽ{˜zx‹„{•™‘{}~‹pzy€}{~q—~{z‡‚œ†x~r|x|pvŒz}zvztm‹x„y{{j‚p~‚i{|v„v|rxƒz}uyz~€‚tyu}’}vvƒul‰vw|t||‚~Š”‰yqˆtswtsqq€rx~yw‹„x|yxpƒ{u{xyz£z{}uuxy~rx{{vy~r|‚~vv~…ƒw}~y{yy{y|vr|zxv{xzvy‚z}v}y{xp~wvw~||}v{{…~{zyƒ{{}€}Š|‚‚ttxvz‚~q{v~mv{~y}||ƒŽ{€ƒwƒŠw€€|{prv„Ž}ytmyxoqvˆ{x‘wyt}އtpyuquƒh˜ˆyx|vxysfykw…xxt}‚w€b{vrr}l~ˆvŒvqx{yoyqn‹yvwxazxppxoz€}Œ}…‹vxu}}rtsyjmru}wd{wŠwrvtƒr|rvvtu£oztpesv„pnmsp}ufyxyv}ngvpzwvuppnqvorzspvutuqt{z{wsptuz|rvwtw{yvuyuxv{tq…v|wuvv|nqlpnpy€ir|ryoovxpxvt…wzs|{ˆxwxvxsxwyЉš€ztpzˆrkv„pw€~zw‚ˆˆvu|uyvn‘†{z|vqvrfqx‚vwo…‹Št€rywt{qh~•s–wnv|{otqsƒwwysvcƒx{n~o|qxu}{~€‹vyq{nqtszimoƒ|toƒ}y€rwqs|ryvtw¡lrvmdvw‚inusmzwgylxs{jjvmyztssrxsww}zrmlrvwow€yz|wwpsxz|rwvuw~zxvnwwv{vo„q{xwx‰w}mqosnr{}_r}swrqwyrwuq‚Œw{u}Œuyxwwtpu}Š~‘zwspyŽqd{†vx“xxtz‹sqwxzw{e‘ˆzw|uqyrk{ow†uwr{…x_zsq~u|mŸwvqv{y}oxqzˆyw‚€ja†{wonƒsyx‡~‘swr‚nsurzio‚q‚{vl~€v‚sws‚r|rvttu™lxtocrv„rnqso‡uixsxu}mgvozx€utqpxqvtxysortutpu~z|vuosu{}qxvt{yvvouxvztp†s|vvv“v|nqosno{|br}qxtovxqxut€ˆwzt||uyxvws{po‰„~xnkyicw‘~t’ywswŠxqzu|pxb’…sy|uuxtbst†xxp}y‡|s{urx}o}”v‰srzzw€nurzŒ{pzwk`…x|qm€qy‚y…|ƒŒywr‡totsyhm€pvvf~}tˆxqum€qypvust™kxvpdst…inpspƒsiwxws{nfw€€mzv}vttluquntzronwrunsrv{xstsxv}pwvqxyuvtux€wwxq…szuwtv|mqoloq{}fu~nwhpvwswus€‹v|u|…xwzwxrqg‚~syyviz‰rov„u–„wzuq”qywzvŒrˆˆzx}vsxrkyszxvwnty|~kzvq„t}jz‰y‹wqw~zpvrr{u†pd€{ur€o~q{‡‚›|ˆŽvvo…yvtrwkmqy}woŠtŠ‚suo†r€swwuužrxwqnuuƒlpwuq„wrz~{v~ply„€rzz{vvsqqsxpqytrqxuvqt€{x}xqvutwqyvryyzxx|uxƒyzus„w|xzx“x~nonsor~}ms~rxlpwzsxwrŠw|‚t~~Šw|{zxuŠ~…‹†‹ˆŠˆŽŽ£†ƒŠ‚y‰€x—”’“–‹Š~Œ—‘|’›‡‚t‰€{އw‹xyކy”‹™‡‚†Œ…‰„“}†’¢‹‰‹t–Œ‰‹‡u˜•x~„t‰~z…Œ{ƒƒ…†|ˆŒ~z}ƒ–‹‡Œ~£”‰ˆ€„}|ŠŒˆ‘y›…ˆ‹‰uŠˆ‡“vŽŒŠ‹‰}{Œ‚ЉˆŠ‡Šƒ“”‰‡‚ŠŒˆŠŒ{ŠŠŒ€|Ž{‰ƒ‘}‘‰„‚€‡“…ˆ†ˆŒ„‡~•z†u˜‹‰„ŒˆkŽ„‰ƒ€z‘‚‰›“w‡…‰z‹‰Ÿ‘‰yy€‘iŠu‰€‹†‘Š„Œƒ‡~‹…’Œ‹„v‹r‘‡Š…—€–›‡y~y‘xŠ„x”‘‡ƒxƒŒ‰‰…™…‰Š‹„}ЉsŽˆ‰…†ƒ€Œz…„ƒut‘~‚„Š“”“ƒ†’†‚Š‹„˜ˆ…•†zŠ…Œƒ‡‰†„…}ˆ‹‰‰”œtˆˆ’|‡„sБޙˆz–x’”‰zˆ‚†‰Š“›ŒŠ|”Šˆˆˆ‘ƒˆˆˆ€ˆ|Š}‚—–‹‚‡ˆ€}~‚Š~…”…‡~‹|n|‘Œ‰‰y‡|…~‰‘xŠƒ|™€|Ÿ„†{‰„‰ˆ„€w~~xu}ƒvt’ƒ€|}™Š„xwq{yxdŽt|~y{twŠ‚~{ze‡r‰wj}{y†wrx‡€}x}|€……zxy|…‚xj†|vw~x}|}‡‹•ˆ{tn}{tpxv†v|…~|…€~{p„ƒ‚x|~ƒ~ƒyˆ{{v}‰|l„z~{ˆƒƒ|‚„ˆ†‡~~~€€|gv}€t{|~…†{…v…~{u„r‚wwy{‚ƒ}}‰…|}†ˆ„‚„‡z{‚{ˆ{r…z€lz}ƒ€‡…‰„‡z…ˆxˆ„ˆ€ŽŠ†–Œr|–“Œ‰”‘—‹†…u{˜˜€˜£•Žƒ“Š‚w}‹“„ž€•ƒ…|ˆ‰œŠz†“œv˜‹x|˜‡†n“z‡ŠƒŽ™¤š…—Œ¡v‘ŒŠŽˆyxv¦‹‰|“”‹l}‰…k‹˜z‡ˆ|wo‰“•Ž|}c’…’‡|‰€Ÿ‹–z‘އ‘‰o†Œy}†‹¡‰„—Ÿ‚‰’Š…‹Š‹Š‹©Œ‚‡‚„—„…•wŒƒ‚œŒ|vƒ‘”xz‰‚ˆ‹•”Švœ„ˆ~…~…n“™“‹–—t€Œx’z‹€ˆ…‡~š}›}’Žv…‚nŠzŽ‹“”—v‚~Šr‡~‘£Ž~oz¥™„z’„œƒŠˆ‡zœ~y–Šrƒ†¸•œˆ›‹‹{„‘Ÿ€—Žjsœ|Œ z“šŠi‚‘‡‡Œ•…Œ–{t‹wއ£Œo|›to‘q–|…‘‘‹œ‹†‡›Œ—„£‰{ƒ‡š€„‹ƒ†ˆu„…І›‘m~‰‘{‹x„‘‰“Œ‚’†uz„ŒŠ‚‹„“‹…†€Œ ‘‚˜v}“ˆ„Š{‰Š|Œ“z…‹Š€„œŠ™„„„œ…ˆ‹“†tƒŒŒšŽ‘„j†‘’……“…{‡Ž‚‡tŽu˜„|‘Š„|“‹”‹}vs…‹t}zt}†wy{ˆƒw‘ƒ{{‚„“Œ}y‚r|w‚ur‰{}~€wpx{„~|yq‡u|xxŠyyy‰}†wz|€‚wxwz€xr|o‹‚xz€xww~‹ƒ“‡–}zyˆ|swuuuswz}tŠzŒ~zyq|{~w{|{z›|‚|x{zy‚ty{z|v}‚~‚{w‡ƒ|€€~}yywx|uu|{|ryzyy‚|~x~{yzƒu~zyy~}|}|{}†|{z‚||}Œ}ƒ‚wxzwz‚€tyw~wv|~z~~€‚„~€…x‚Šy€€€|nkzˆ’{szk{„nmx‡vzŒ„uyq}‹„wrvtj{|m™ˆys|urysnr`w€uwq}„t€fzsq‚r}i–wwsw{yozqu‚yw‡‚ub€|vo€ovoz~}†€”qws€zuuu{inq|}wb|vƒ€rvs†q}rvutu˜lxsnftv…snnso‚uhysxu}mfumyw~utpprqvnxzsoutuuptzy{vsosu{|rwwsz}yvuxtxu{sq…t|vuvŒv|mqirmoy~jo|rwpowxpwvt†wzt|{Žxxwvwspƒz€}v€€}ˆ}zšb€szr†R|†™ž{s…|‚‘¢w}„‚‡vwt„‰[€ƒ|xv›|—y…v|yjr}c•ƒ…mwzІ‘xŽ…‰ŒyŠƒ‘|•ydŒ‚}|k™ˆwŒyzŠnzƒ…ˆƒk~j|‹‡x~ˆy{‹y„ƒ€–Љx‚Œt}|~}p stk|y~ƒ{Ž„mzƒŽu€ˆ‰vyŠw‡j{‚Žv‡”x‚~v–z|ƒ€‡|q‚z€ƒ‚jhŠˆ‡†ƒ„“v‚†ˆz‰}ƒxƒyˆ†z„‚w…|x†‹‘}Ž€…sy‚Œ‰w}w‡{Žrm™tq~zt~†vj™q‹{‚w€‡~txsƒ€…y…Zy‚…{i€„avyt„„|Žv”€†Hƒ†r{~~€Ÿ‡‰‚xy~j~nƒz€œ€z‡r[Žz“ƒŒˆuƒ‰ƒ˜Œ|†m€’xq‚r}ƒˆ‡†ƒ~€fx†}‘{{u‚Š}vw}xxxŠx‚n^rztjxˆˆl‚Ž˜v~~xlzŠ{†–yry†x†{ƒ~zŠxttƒ{m‚|‡t‚{}‚zwwy}zw€jpz|{~‡yvyq—t‚†t{v†wixsqzwˆu„r€oyywsv“zƒcv‚x|€ur}vzr‘‰‚}uvp{qlv™qy‘zzxr‚Œ~ko|u~y}e‹‚yz|wuvti|mwxxxsƒ†Œw€nzyu}u}lw™woy|y€purt‚ywztc{zq€o}pz{~}}„uyuytrss{jn€r}|va}€y“zrwtŠrzrvvuv¥mwupftw„mppto…vezxyv|nhv‚pzx€vtrqtswtv{tpnuvvrvvz|wvptwv}tyxtwxzwvqvyv{wqƒt{xvw’w‚|nsstoqy~jr}susqwxqxwrx{‚t|}Šwxxwxtwosˆ‰wumjyikvŽwzˆxzpxŠŽvpyo{t~e”…{{|vtxsftkw„uwo~†zn{uo€ro~žv‰wow|x~ovqs‡zv‚€qb‚zxp€p}pzƒ~†}ƒmws~vqtrzin€p|}w`€w†€rvq…qxrvutu›nytofuv„ompso‡ueyzwu}ogv‚nyw~uuqoqqvvvzsopuuuqtxx|vtpsvw}rwwuz~yvustxv{tr…t{vvv•v|mqqpmo{bq|rwpovxpxvr„wzt||‹xxxvwsŒ{ˆ”Œˆ{Š‹’Šz€Š€y‘…‚€|Š‹……s„z€~’€{|{}x‚މ†ˆr}†|~~‚€‚ƒƒr{‚†„‡„€{{~uƒ}ƒ~y“„ƒ|„ŒŽtƒz„~y~zˆz†€}Žœ€‚ƒƒ‚z‹ˆ†~…„„‚†|†}‚|„…}l‡zƒd‰…„‡…‡€‚‡‚„…ƒ„„n~ƒƒ€z€„‚†‡‹„†„}„‚‚x‚{z|}~†…„…†…ƒ„†‚ƒˆ„‡ƒ„‡€€~‚€…†}{ƒ†€…r€…„‚„ƒ‡…††ˆŽ~…†‡‚ƒ’ˆ‘ŽzŽŒŽŠ†ˆ‘~Œ‚‰‡‹‡€|ˆ‹–›˜ŒŒ‡|—”‹†”Љ›„{Œ€‹‰|Œ‚w†…ƒ~Œ‰}”‡“‘Œˆ‚…Ÿ‡zˆ“|‡…„‡uƒ…ˆ’u~yŒ{Št‰€ˆ|ƒ‰{~‰ŠŒˆ~ˆ”‹Š}y‰„ƒ””…“~†‰‘‘~ƒŠ}~ŽŒŠ‚z˜‡‘Œ~†‹‰”‹ŽŒ‡~Š“‰‡Š„†€ˆŽ…Š~Ž‘‰Œ‹ˆ‡z‡“‡Œ”Š“Œ~‚Œ„”€•…•‡†‚„ƒ€ƒ€y{Š…„‰ˆ~Š’ˆŒ˜Œ~•…~Œ“ƒ‘‘k’„ƒ€}–šŒ—Œ‹…’w‹z‹v‘ zƒ‘ДВ‹š‹ƒ…””ˆ˜Œ‘ŽƒƒŠ†•Š‘•{‘‰u’xŸ‰ƒ{žp‹ƒ¢¢•ކ|“{‰Šƒ€‡€˜xŠ‚‹ƒ„s€xŒ|{‹|„†‰‘„ƒ€‰‰‡~‰~|Œ‰†{~‹{pšƒu–ƒ†z’Ž‘•’w~Œš|t“–ˆŽ®‰‰‹ ‡‚„}wŠ•…‚†ƒŽˆyއ’•†„žŠƒ|–|tŠz†‚ˆ–ƒ†’†’v‹}…‡‰‹‰•…•ˆ‚Š•|–Š€ƒ‘}„†ƒƒ•˜†s{‚‹—~††‰Š’{’‰…‚‚…„„€y“žŽ™—ЉЅ•Ž‘€Š…•’‹ƒ•Šƒ{Œ‡y†€‘}†•„‘y„…“‹•Œ‚™“|……‰ˆŠ‹s‰Œ‚t‹ƒzˆ…€sƒz„ˆ€ŒŒ|†‡‰~ˆ€w‚‚‘‰‡„|Љ‰€Ž~‹|vŽ“…yš‡†™ˆ~…‡Š‰‡‹†‘~Š{…‘’ŽŽ‹ƒ~…~ˆ†Œ‹‡w‰‰’Žˆ„ƒ{Œ‰‹‹‰ŒŽŽˆ‹{|{…Œ|Œ…”‰‰……€‚€‰ˆy‰ˆˆ„xŒ•‰…’†…||}ˆŠƒ‹‰—ŒŠjŽ„„ƒ‰€tq|v‰ˆvvwlz„vov…{t“„yx{u”†vt~uvr‡j…‰ys{vxxrc|pxƒxxroƒ€{oysq„s|mzw‹unx}{€owrv‚{u{{scˆ{xr€ovqz‚~“~†{ws…urtqvkn‚p{}we‡t—xrunŠr~qwvtv˜rzvrmsu‚gpsur€wh{}{w~rjwƒ€rzy|vvsqurxmnztrqxuuruyv}yrtuvw~oxvs{{yvxvux‚x{rsƒxzxxx†w}oqotpr{~mu~qzqqvyrywu‘y}‚t}~‰wzzyyvމ‡ˆ‡‹…’‹Š…˜{‡z…q‹~Œ†}˜‰†‰„ƒ”†›•ˆ„o|†„Œ„‚—–}’‰‚|{‡|‹€‘€‚‘Ž”}Š’ƒ–††‚‹ƒˆx‚ŒwŸŠŠˆŒŒŠ{t‡…|w‡Œ’€‡Ž‘yyŽˆŒ€z†‡ˆƒ‡ƒŠˆ}’~‚•{‘šˆ‹’wŽ•y‚ƒ…–‘‡Ž€’‡†”x‹zˆ‹„‰Ž’‰‡„‰‡ˆˆ•’~…„‰ƒ…}ƒŒƒ}„zxˆƒ‡}‡Œ‰€“‚‡~‰€{ƒ“ —‹‹†w”}Ž}Ž‚‰„†€…|„‹‚…Š~‰x‹†‰‹–ˆ…ŠŒ~{zŽ~‡~ŒŠy‡ŒŽ~”‹ŽˆŠŠ‡—ކ†’… …“™ŒŽŽŠ{Œ…tІ‡}ˆˆŠ–|Š™ŽˆŽ’‡’ƒ}„¦Ž‰‡‹u…Ž£‡t‚~yšs‰z‰}‚Ž|~–‹zŒ‚†v‚Žz„…“‚Žˆ‘z™œƒˆ|€ŠŠ€v„›Ž“}‡‘ŽŒ‰‹Ž‹‚ˆˆ‚‚‡‡‹‚|ˆ•y…Œw‹ˆ•‡y‹†‰–”€†‘Œ€…‡‚ŒŠ‡ƒ’‰Ž…€†•u€ˆŒŠ’‘ЇŒ‘‘–’†“‡‘}•‚“ƒ‰—jŠ„„“w€j…y‚~{u‰€t}v¢mwzw‚†Ut“›‘”€}ˆ}€Šª‰ƒ€ƒs‚•ŒyVrw›y‰}Љp‡rfqzf‹~‡yyq‡‚‡‚”tŽw…Š“‘}˜xzp—‹|{w’uwŠxv€oy¨ƒ€„‡†‡y|~ˆˆƒ~–}„~†z†‹†€„€¤ˆ‚~mxŒw|ntŽƒtp§x‚oz†€~‚Šˆ}…„ek‹Œr‚…‘|x‚o‚y‰y†t™|‹~uƒ‘|x„Š€ƒfu‚}‹ƒ€€›…‡~~†ˆtz†ƒ}}‚}‚„ƒ„~y‰–x‹}…|†€‚‚‡v†w’ŽupxŽ‚|wtjy•okyˆxv’…vzv{Šˆvqxu~x€h•…yy}urwsiznx{uwo~ƒƒzƒoztqu}h”vvow|y~oxqx‰zv€|paƒzxo€oqy}~ˆ}‘txr|otsszio€q~|wg}‚t†qvs…q|rvutumzspetu…rntso…tlyywu~ofv‚ozw|utporpwwwzsppuutot{y{vtpsuz}qwwt{yuuqtx€u{sq…t|vvv’v|mpjomoz~cq}rwsovxpxur€‡xz‚t|{xxxuws{ŸŠœqxŸ…‹z}€‘†™…rvœ•vtˆd’}Œz‚‚“Œw’x·”’~xj–‹‰›Šžƒ›–‹Žˆx—ž‹|}…o†‡‚”yŒƒ¤‡ŠŠŒfƒƒ{l–€}wy“†o‡…`~c’†{‹–‚…wŽ‚”“ž~…ƒŽy…ziœ}d‘‹t…{‡|”wŠ«‰w}ƒ€‚ˆ“ƒt‰}‚xƒ‡…”{Šš‰n™‘‚‡…y†ŠŠ€Ž¤z…Ÿ—‡ˆzš‹‚ƒu…u†y‰y›ƒ“m‚™ˆz|xq‘›œwxx†Œ”zˆvw“‹•ˆhz{‡z‡uƒa~~‹‰d˜uš{€|ws˜q”‘šš”„Ž|ˆ†„}‰Ž“ž|nv‚~Šs‡‰Žƒ‚›…މ’‹‹zœ‡uމ•…“‡‡“ƒ—£~~Œ”m|‚€‘Ÿ„}–‰•pˆƒˆŒš{Œƒ…ƒw…ƒ}‘„œn˜m‰{ws—ƒ›{ŒŽŒ‹ƒ™“’އބ£w•ƒž}‰y…“‰’†€“yŽ…ˆ˜žƒ iz‚zŒ…x‚•‹—“‰…†ˆ‰n£‚‰…ˆŠvŽ‘ˆ…ŠžŠyw‡Š††zƒ”‰Œy‚z†ƒuŸ}‘„™…ˆƒŠ€€Ž”†˜ŠŽ…j‡’x‚•‹~€…‰n‹v…Šu}ƒw…‰”–…’ކ““{Š’†|ŠŒ‹Œ†‚|}„Ž…˜‘‰‹ˆˆŽ›‹“š…•‡…’Žˆ{‹w‹‚…’~‹‡Ž~ˆ‰‰’’‹š}†ŽxŒ„ƒ…u|†‹Ž“t‡…z€zsŠ€~€‰~Œ†‚…މ†ŽŠŽz†„„Š’ƒŽz‚‘Œ}€‘|€ŒŠ|–Ž‹›ˆ|ƒ‡‘Š•…”Ž……ƒ…•ˆ‡“ˆ‡}zˆ’x‡x‹‡Œ††z‹†‰“‹Œ™ŒŒ||}„ˆŽ€Œ~ŒŠ…Œ…€Œr€‡‡’ˆ€u‰Ž‹ŒŠ”Ž’Žƒ‡‚‡~‹‘‰…j”„€„‹…|kmŒyw}xwu|„uxz”x|}v‡‰{{€{‹k’|~{wzsl{ky€y|x‡…‡‰d{|x|s}m…zˆyqz}{syt{|{…pth‡}}u€v~v{~~…‚†…zz‚‚rxt}ns€t…wp|€x‰|uzz“v|u}yvx¡ttztjz{ƒwrrws}zq||zw}oo|ƒqz{yuvsrvyw{|vrtxuytz€y}}{yyw|{~sxywu~{y|~wz{}ytƒu}{xyy‚~qtzwqtz€kwvyqvxywyxsƒŒz}ƒx~„{z|yzvye{€€}wsty…onv–pxŒ„~zt|’u{v~w|j•„{z€wuxsr‚uxƒwwo……‰€€ozvu{s}m~’vˆyov~{pvsz‰yy~rvfƒx|pn€qyt}’~„„|xs†{vvszjq~p}uq€€x}syuŒr}sywvw£oqxnhxw‚iosun†yl{tyt|lmv‚€mz{~sturwtwq~{tnrswxpw€|z~xvrtz|}rxwuz}zyvxwx‚y|vp†s{yyx—x}nqxsnr}|ot~syoswyswus‚…x}€v~‡wzyzwuŒŠ‚‡‰Š|™€†ƒƒ€‰‰v“ž“Ž““’’‹…‡™“ƒ~‰‡›Š“‹Œ“xˆ„{‰ˆxŒ†‹xwŠ{xŠ™‰……ƒ‰†–~‡‹©Žƒ‰Žs“‡Š‹ˆu™Šy•‚“sŠ}z†~…”ˆ|‘„Šˆƒ‰}{z„ދД}¥˜Œ…€ˆ|qŒŽˆvšŠ…Š~ŠŒˆ‰l‹‘Œ„’s‰ŽŒ“ŠŽwƒ‹…‹„‘„Šw“˜‘ЕІ}ˆ‰‡‡“‰|ƒŠ~z‘|†„‹‰Ž’…Œƒ€•ƒz†ŽŠ’‘‰Ž‘‘Œ’…}‘|…x•’ƒŽŠ‚Œ’j„‚ƒ‹{Œ‹Œ“}‡‘‡‡‡u}‘€Œ‘ƒƒ}€€ƒ–•”ˆ‹…‰Š—‘‰Š‰œ‚Œ‡„ŠŽ‹{‰€vˆ€Žž‰ˆŒŽ•‹ƒ†™‡{„|†…„uuˆ‹Ÿ”t‰ƒz‚v„rŠ~ˆ~~Ž{‚‡„—~„Š‘}|Šƒ…•†•‚{|‡†|‘|„ˆŠ†{•Žœ‰|ˆ‹Šš†’ŽŠŒ‡…ˆ††‘ŽŽz€z‡™x“†‹“†Ž…‹x”‰…—Š›˜‘Ž}€€†”ŽŠŽ‰“o€Žˆ†’ŠˆŽˆ–Š“„„‹„†Ž}‘ЇŠj’„{‚~‡ƒ†…}…n|{{{~u}zz•‘~}y‚~…}|Œ€v~{swutƒy{€wyxq‡wo{zy‚t}q{˜{Šzsxƒuv}|yt…zoŠ€zv~r…{|}†Œ~…’„yoŠtuyuupu|r~}wz‰€x”‚xzv‹|‚v}{{{¢xutw|yƒvv|{tw€zx|~rx}…„u|‚€vy{zz{v|}yvxzz|u{ƒ‚‚|w{y|r~xwvy}~}{|z„}zw„y|~}‰}‚‚tuuƒtz‚~~{‚xsw|~y|{{„{ƒy‚„u€‚{{|…‰“~‚s„•‰}z™yƒ‰{„}uk‘‚||xƒ†ˆ•u{~tush~…{}uzzu›zŠƒz|€v€v€†‚©…syƒ‡ƒy}zv~{†‚y‚}w~o‹}|z‹”ƒŒzhŽt‚wwuw„p†{s‰”~€˜y€v‚‹z„€œwq†s€€ƒyy}€so‰r„W†~|p‚‚†r|‡qwƒ‚~k‡{ryx~„x…†“ƒ†z}~…€v€wz}}…ƒz…„~‚x…v‡‚†€‚†xz}x€ˆvƒ†~„}~€‚‚}|Š’|ƒƒ†‹“z…ƒ‡|~™“Š‘‘ˆ…Œ‚‘—‹€…€r~˜¦~Œ‡ˆ}—‰•‡~x‰‚›œˆ†…®˜ˆ„ƒƒ“–z˜ƒ…t™ Ž{{•Ї•’„†„ƒ„‚’‰‡€Š‚ŽŠŽp–‰oŠ~o‡tˆ|•€“‘”ˆ’‘œ‚‹’{z“„ŒŒtŽŽ¥Š–Ž—Œp”‹Žuy‰†–”‹Œ™’ˆ‘ˆ‰Ž‰†ˆ‡„‹““„Š‘‚„‘wŠŽˆ˜€{‡ˆ€ƒŒ{z“{~{€”…†‰yŽ€†‰ˆ„}{|•Ž‹œ…š„t‚‘‰“Œ‡ŽŠ‚“ƒˆŒ|‰‰‡‘Œ€ˆ€~‚„ŠŒ{x‘„vwrvƒ‹rr~œxmœ|{€u—†tr~vxt…zfŽq{}t{stˆs}~|~ƒfqxuj|zyƒrvt€ƒy‚{ƒ…xryx€wg‰€u†w~r‚{|„†ˆyq‘rv{spwy‡t‚€|˜}|„v}zrŒ„w|~}•‚}ƒwˆzzv~…zm„m€}Šƒ~‚„ˆ†€‡}|}€{ds|s{z~…‹{…‚t…}zrƒr€vtyy‚ƒ€}}‡…z}…~€ˆ’ƒ‡zz|z{ˆ|p|…x€hy}ƒ€€‰ˆŠ„‡y…ˆu‰…ˆ€€tn}}‘{xvq|ytv†‚s“„sw|yƒytxtpxŒkˆ‡vy}xqvlrwpx|u{tozzu~hzunw~h{yƒvsx{yn{r~zuƒ†qd…}xvpxp{€{‡~~‘yvwƒfqvvvnnovxwh„€tŽ|suquuvuuv—nvuumvs|rptwvzzpv|zy}rn~ozy~wvuvwsztquwoovsvps€}yzyprqw{qyvsqyzvzpu|ƒz|uq…u{xzvŽw~qrpxpo}zot€ryrqvxr{wu‚Œx|}o~‡v}z|zuŒµ}¥£]‰uvŽ{¢ƒ—›ŠŠ{qw•žŠz‰€‡’—‹™‚”nŒ†”šˆzqŒÁ†‰œŽx—€…•Ÿ‡^†ˆ‰~“…Œžƒ„w‘z|‡”„†|€†~–‡‹w‰h{ŠŠp|§tc“—Žx‚…uy†Š†y„}“h”ˆz‹–€tƒ•ˆh‚§–Їމzqyz•‰„‰‚Šx…œƒ{Š~¢|ˆ€¥Œ†¢Š‹Œz{œ†|{t‹Š—‡|p•‰v‚‹~}xš|Š{€’”‹{…ƒ{w“€†y›š‚ƒ{{|Œ—}Œsmy…wƒzŸvˆ•~v‘y€†n’ŒhqzŽˆ…–|wƒ|‡’{†o… žŽ™kˆˆsœ†…‘…”rŠ–ˆ‹‡ŒŠ…Œ½ˆ‘‰…ˆŠŽz™ œ}¦Ž™}uc‚˜„j|†”qމ}˜i~‰•‰¢†y‘™‚—j˜•†o‚xžvr•†nŠ”†v­‘˜ŠŒˆŠŒ¢z‹|’…ŽŠx‚‰’ŠŠk„³ˆ“¦€–j•™tzvŒ‰—„‡…˜£iŒ‹‡¤˜‘ˆx‘vt…Ž|‚‹x…ƒ—{{f}„‡‰{~‹€}|Œ‹~‹{w‚Œ~zƒ‚”‚‰–’Œ…o„|ˆ€’}{„‘~‰›…Šwƒ…x€“Š“ƒ‘‰Ž‚|‘’‰{“„€‚‚‹‡‡ƒ€}‹‘‰˜š•’ŒŒz›“ˆ…ޑЛ„˜~“ŠŽ‰|‹†xƒƒ…|“Œˆ‹|•„”‹Œ“…‹‘ˆz‰’ˆ†‚‡u{ˆ”Ž‹u‘‹{‰Œs‰€…y…‰{wŠˆ‚’‰•†‡|z‹……•„~ˆ‰’€Š~z‹ˆ|yš‹†“‹~ˆŒŽ‡z‹†„Œ…–…‘€‰‰…‚†ŠˆyŠŽŒ‰–‰‰{†‡…‰„‹‹Ž‹|{‹}‰ƒ†ˆ†~€•zˆŠ…’‰‰„‹˜ƒˆ–‰‰‘}Š‚’ŠŠŠŽŒ—i…„ƒ€Ÿž Ÿr™}ˆ’€Ц…zopš‚†t‡…Œ’’…•‰Žƒ†”ކ’zŸnŒŽˆ™‡Ž„¡¡{ƒ|Š‹y‹•t–™Š“—‰Ÿ‰…}‰˜’ys„r‚”Šˆ‘…ža›n‡z~zq”—ŠŽ”šŽˆƒŠ•†‰ˆ”y—Š‘ˆ…‡oy”ˆŸŒ}ž|‚’}‹›”Ÿl}‹–z‰r‡™ˆ–““y›ˆyy…‰~Ž‹u†”‡Œ‡Ÿ“‹wކƒ„Ž~‰¢ˆ„Š—|w‰}ˆ‚t¥€¡€£‰~s˜†{}ƒ¦Ž‘‹}m‰‘މxއ„…sm‡‰z‚Št}€qƒŽ•ƒƒrƒƒˆy‚•…tzuxxˆƒƒ~qz–‰ƒ‚|z|‚‚…“‡~|}rssl€‰„ŠvzprŒ‚}€zy|}xd~šzxv………wƒxu„y€„uvw‰|xu~k‰zzr‰…‚|‹zhŠtxƒs|rzoƒ}t}Š{’†y‚~Žz†{„~~€”wj†p~€}uz~pnŠn„Z‚zxiƒ}…ny‡}puy}ƒ…€zm{r„t„†”~†}z{z…‚‚u}vzw{…~€ƒw„„€w‡q…‡‚{‚†vw~‡t~„t~†}„l}~zy€†Œ|ƒ…‹‰wˆx|rzw€~‡|zss{vqlv“v‡{yuy‰vq|vtwh‰‹yz|xwzsa~ovˆ|zx{x}}^|vq€s}u{Žyvuy|{€qsss’{v{ke‰{yr€q{p{…}’}Švwtˆpurvmmr{~yq…}z†tur|u{sxxvv rxvqlsvƒprsvrƒwoz}{w}qkyƒ€s{z€xwsrosxluzusuxvwtu€zw}ysuvux~sywuw~zxx~xzƒxzws…yzvxx”x~pswsqs}~ks}ryhqwztzxt‚x|‚t}}‹v{{yzv~r„ˆm{}py„s}x}|s{{zyw“†y|x|z‰r‡…}wzuvtq‚{ywyt{z~ƒozywƒv~p{Žzƒzqw€~s{u{“|yw~vl†|vt~n…wz~„Š}†xnŠttytwns{ry}wx‰€v|vyvšv€u|y{y¨wt|svyx‚vtxys|}x}~{~ru{„‚s|€uxxwzxyww|xtxyyzsy‚z€{tyx{}€q|xvvz||{|zzƒ~|xu„xz|~|‰{‚rstxrwyyw~nuz}xzxv„Œyƒx‚Šv}{yyssƒŠ‘y{xm{sovy}yކx{w{‡—ƒx|uww€nš‡yw}vuutl}sy†vwr€ƒyhytsqi~ˆu‹wow{yoyqq‰ywxob„yzn€o|qzy~}€’wyrƒsxvs{il}ry|tmƒu‹€rvqŠp{rwusumwtoeuvƒonpsoujywwt}neu~nyw}utqppqvnw{ronuvuptyx{wsptv~|quxvy}yvuuuxu|rp„tzvuvŠu{mqhsmpx€hr|syxpwxpwun‚Žv{t|{†wwwuwsuov{Œ…}xsx„rlx…wƒ|yzw‹…†txvvv„j‹Šw{~{uxog|q{zvyvu~ˆ{i{tt€tk{‡xŒtsy|z‚qvsy{s€„od‰{yspzpz†||‰Ž{wt†srwtump~r~}xk‚~uˆtupƒt}qxwwuœtwxtmwx}tozwryqx€{x~ro|‚‚r|z|wwutssynrvvtvxquuu€}x{{qvut|pxvsv|zxxxvz‚{zxt„wzwywx}prprpq~~ktszlqwyszxp‹x}t~€‹x{|yyuzzv†‹‹yvuky…sqwŒ{v’†xzv€‘†vu}uxu{i…ˆzx|wwvtf|rv…xzsx€y€ozutƒt{o}“x‹tqy}{pvrw‹zv{|sdˆ{wrp{sz€€ƒ~}‘wwszmusxlmq}}xiƒ€wzswrs{rwvvv¢qzvqjtvƒnpsur}wky|zx~qjx‚€q{zvvsrtswruzuqowuvsvxx|xvsuwx~qxwvv|zwwxvyw{us„wzxxxŒx}orruor{is}syppwyrywt‹x|‚t}}Œxyyxyu‹Š‰ŽŠ‰“‡Ž‹•‰‡„‹Œˆ‹…€ˆž–‰‘ˆˆ‹~‘€˜Œ‰‘–•ˆ‘œ‡ƒ‹ƒ{Ž€uŒ‹}{Š“‡‹‚‰ˆ‹’}ˆ—|„‹~“‡†‡vŽˆ}tŠ—yv‹sŠ|‘|~{œ…ˆ†–ŽˆŒ‹zŠˆ‚†Š•…Žz‹ˆ–‡|€‹|…Šƒ|}œŠŽŠ~}‡–‰’„•‰†…‹ˆ‰…€‚„|‹”vƒŽ‰Š’‰ˆ‡ˆŒ…ˆ–Š…š‰Œ€}„‚Šƒ„ˆxŒŠƒ†}€ˆ~…{‡Šˆˆ‘‡ˆ{ŒŽ†Žˆ’’’…Žƒ…y‹‹€Žˆ{„Œj…‡ƒ‰z•€ztv¯‚„ˆ­¨¨†e Œvt‚‚z|…†~‘o¤‹……k‘Žtˆ†¦zr…"‡•¥…{­ŒpŽdpqw‚„‰ŸŠ ”Ÿw…q{ЬŒs‹~§zs€Š†x„Œƒ†y“{’u€‘™ƒr™”§•y[z›Š|‹lœ^™z¢s‚˜z‘¡s„‹sbeŽ¡}‚Œw}{‚r’އˆ’Ž•‘©n{|ˆ„ˆ„w–x€}vpu{Œ•€kˆ—w‹m}y}ywŸ†w|ƒv‰t‰{‹’˜ŠvŽetŒ[˜Ÿ˜Š†Ÿ~†qjzr’ˆ“ŠƒŽ|f…w¨nez|ˆ•œ® ˆ‰|‡‡”Ž•x‰”‘Œˆz……€†~Ž€Ÿ”Ž‡Šˆˆ†‹†„’’˜‡††~~ƒw†„†y•…†{v‚ŒŒŒŠ‹{Ž~ƒ’sŠz‡{Ž‹ˆ}‰y‘ž}qztxƒ‡ƒ~’Œ†€Š™ŒŠŠ‚‚‡€˜‰Š}ˆŒ‰ƒ}†~uŒ‹Š€}•‰‰}†„Š~~„‡‘ƒ…‚‡’“†Š|††ŒˆƒŽz’‰‚‡‹œ’†Š“’–†Ž|}ŠŠ…†††w†‰‡‘‰š€‚ŽŽ‹†ƒ‹|ˆ‰’Œ|’‡ˆ…}v‹’x‡Šr„€†Ž—‰‹ˆ˜’ˆ“”–|Œƒ‰Ž…‰€Žœ––˜‚†Ž•–ŠŒ„…’ˆŒ|‡’†‚{‹~w’‰†‡|~™€~—ЉŒ”Ž‹{’žˆznŠ„‰v‚ˆ€ˆtŒwuŒsŒ‚Ž}‚‰z›z’—‘uŠ¢…‘~v‹‡‚‰˜†”{€Œy‚|}„ŽƒtŸ„Љ„“ƒ–“…Šƒ~”‹ˆŠš~†‡Ž€€‰•ƒ“‰”x†…t~‹˜‹•–‹ˆ––ƒ‰‚„‡€‰–˜„‘‘‡~ƒ…€…€…€~‰Š‡‹‰}ŽŠ‰‘Šy’|s‰ˆ€ˆˆ„}j„Œ€}z›‹€™ŒŒŠ‘w’…kŠ}ˆuy“Œ‘ˆ’}‚†’‹‘Š~|Œ’‡• ‘‰Œƒ‚v•†ˆ‹šŸv–€ŒwŽ’‹~~‚x‡…˜“””‘”Œ‡Ž”x‡’ˆˆw•†‚˜‰ˆ~w{|mœtŽyp‹—uŠŒ‰‚yœ‹ˆy”p’€‡’†€q…{”ˆ—w“š¥Žˆ’ˆŒn—w~Žƒ“‘„¨‹’~˜‹„„†‰ŠŽ˜–‰~’†{‡€|vއ‘Žzu†ƒ{~Š‹|zvˆ‚™wˆ……}‰y†ˆšŠ‘‹‰œˆ}Œ›}‚{€‰Ž…˜t‚Ž„›x}xm•€Ž“|oЉ„|}|’{w|•zvš}|}x“‰|{~wy†ys‘u~}vzto‡z|zy|zo}rzvp}{y„}€nyŒ€†{~zƒƒ„xxy‹xvˆvtƒ€xz€q}|€…‹‡…‰yrsw|tuuv‚s|€z†–}{‹ƒ||s‹~‚x€|}}~yƒvƒ}|{{‚x{„s€|†€~x‡…z~†y|€y~pv~}|t}{z}„ˆ|…€u|{{„txwz|‚}|ˆ„|}}„}€†€ƒ†xx~ƒx†z}„zpz}~…‰~ƒ…{„‡‹v…ƒ‡}€œ“Ž˜†Ž}‹“’†Ž{Іr{”tŽ…‡‰—€…Šˆ‚Œ‰‰~’¡™‰Ž‚hj{•“Š¢|šxt’{€ƒˆ‚–{އޖ”–™†—€z‘Š”q‡ˆzž‹–Œ£}fƒm™vƒyq…¬’‹…Œ|p•}œŠŒ€“p“‘‹|w|Ÿ†~”{Š“ ŠmŒ’y€’€˜•†±‘”~ˆŒƒˆ‚Ž~”‹{‹‰~•…v™‚Š•yƒ„ˆ~–Œ~y€‹‡~wƒ„…Ž™z˜ƒ†ˆ~‰…œ…šˆ}™vˆ}ƒ„„އzšvŽŠ˜xi”“‘‡Š“¡˜Ÿ‚†y‰“¥ƒ ˜Œ‚nx¦ˆ”z‹‡ˆ‡y—‹–‡x‡–‡¤‰v’zw†«‘‹‰†ˆŒ‹›{¨¬ƒ…xƒ£™z~s˜™‡q}{³™Ž‚Ž™Œx‘s…•Š‚„zy”’q‡t£‹–m‡v†vplƒˆ‘¦ˆŽz”Š“†Ž‡‘œ||‚‹‚y„ˆ™—Š•oŠŸŽœ‘Š“j‰—z}ƒm‘Š‚— ‚}xx›§‡Š„…“t‹Œ‹z‹€ˆ|‡…ˆ–™yw—ˆ—zzš€‚Œ…£{•’•{ššx’wpm¤‹’˜f‰’‘|‡‘•ƒ…‡‡z…u‰™‹†„u|‚{r‘”…„Šww’pwsƒw”uo‰€|}|€‚wˆl„|o~‚y€j¢„v„xsu~–€‰‚|†‰…}†€l{tz{yqw•~s…~zr}„Š~yr‹~|l’€}€|w‚~|yŠ|…yw{xq€‘‚}uy‡y|„†uy€s‹x|v€‘€{w{yv¥~~xthwl~rwtn}lv‡tˆxztƒƒˆ~{z}r€y|uzv€wizkx}sqrtoŒ~up{i|{mvyŠˆ}x}xqsz„{zw~{tv’ttx~su{x{ty{{‰wwyu‚xxy‹||†zw€ty}tu‹x‘~€|€p|stux‚zt}€yu‚“ˆwtzy~qƒˆ}x|yuxtf„zzƒzyx{ˆ…{ƒ^yyw~x|s|y”xux~rxuxzxw|wi‡{xs~p„y{{„~„†|yp„ttxuxmq{r€{ws‡~{ŽvyuŠvuzxxx¤stzroux‚xstxq}u}w~z}nrzƒs{~uvvv{wyu{{wrwxxzty‚~zvwxz}s|wvuy{{ytzyƒ|{{tƒtz||{‹z‚€qtu}rv~}uw€uzkty|vzxyƒŒy~‚w€‚Žu}|}yw…f‰‹Œy}—z{xp|ztuˆ{…yu‚„l|}€}†u‚†‰}}~yzwq„{†„zyqqŠz~}u~x{…y~s{¢y“~|v…†x|zz‹}}xsxy~zy~pŠx}wƒ‰„~€Œyp’tywys{~s‚y{‹{}ŠŠ{€{z}…z€}~}”yo„nƒ|}ww‚|uyŠj€oƒ}{r„zƒ†s{†}s|€w{‰~€|us{~€y…ˆy‡~x}}‚ƒu€xy}{€ƒ}vƒ…zx…w€„ˆŠ€ƒ†vxzv‚„xo~„z‚o{~~|…„||ƒ‚}…‰v€€ˆy}zxx}~„x‰q{s}wv}y‰|€}p…Š{v}€oƒt—†~z~zzyxm}uzzw{‰‰|ƒZ||z}{}t—w•{qw„}s}u‡|{Šytl†|~t€p†v{€zƒ€}zuƒp|u}mwztˆ}wm€{ˆw||‹u€w{yzz©rp|rpzz„ruxq‚~p~}|z|mty‚‚qz~ƒwuxwryz}{}wqzwz{tz‚€~€zwuw|„€w{zwsx}|y€zz‚|}{v„u|}}|‰{‚€rv|wpv~vx€x~ov{|vzyxƒƒzy€ƒ‹x||~xx{’pŽr‰†~|~xzww{~v‹{z€—|}€x{}s{Ž€€}xyuiˆ{†||{…{„~Y{{zzy}xy™|ˆ{yz„v{w}zqzvpŽ~yx}r†y}~“ƒ„„zrzz{tusw~s„~z€‰~|Œ{y|u{€w~{€{œzv€uyz{|y}|u‚|~‚~t{…„v~ƒƒyz|{}{|v|~{xx|z}w|„‰|‚~x}{}z‚sxyv{}€}z~|†}}yƒz{~‚~•~ƒƒuw‚‚w{„|}{ƒyny||}|}„…{ƒz‚†‹w€ƒ}|ƒwˆ‰w€ˆ}}€}uz‹uw‹|…|w}—ƒ|~‚„‚€‹€w}~wzum‡Š€„z|~t’zƒ~y}zyv€q{|~wxƒ„…x}yz„}|v{„v~yy}r„{}zƒƒŒ†zosuxuyr‚~w‚|~Œ„{v}~„z‚~~{r„u„}xy€us‡rƒk…~|qƒ€……u|‡~ux€z€}}‚€|vzz}‚w…~…x€|{‚u€wz|~€ƒ€€{‡…}{†x€‚‡‚€ƒ†wy~ˆx€†z{€…|‚s|~‚€}}€‡‡}„ƒ}…ŠŽx„‚ˆ|Œ„…€{‹€•Ž‚‡Š€‹„r…zŠ““y•†Œ‹€–‡™Œ„‚Žž„“”Œ‘ŠŒ…{‹…v‹…’‚{‡~ŽyŒ‹˜Š‡“†Š€~“Ĉ‹‘t“Š„•‰t‹z€˜s‹}Œ}…‘~‘’Œv†‹ˆv‚~{x€‚‘ŠŠŽ|¡’‡€‰|z‡Œƒ‰x™ŠŒŠ|ŽŒˆsŠ‘ˆ†‚z‡ˆ…Œ‡††‡{‚‡™ƒŒy“‘Ž•‡‰|Ž‚ˆ“–†z‹ƒ{‚~‚{{‰Œƒ€ˆ~‰“ŽŽ‹’ˆŽŠŽ†•‰‰Œw€‹ŠŠ‘j†„…„–v~Ž}Œm‰Œ‹Š}~…wƒ‹|…z}“ˆ‚‡†ˆ‰ŒŠ€“ƒƒŒ˜’™‘~…~x‚yr˜Œ}‚šo•›‹‰œŽ†ƒ…‡|‚x’Ž…‡p‚‹ˆ˜‘s‘’n‹ŠtŒswˆ·qsv‚‡Œ††|†‰tuƒ|ˆ‡„xww’£”wŽˆ‡„l~„Œ†‡‚ˆ‘^}•Š}€y|y{’œ‰–ˆp‚~z‰‚š‚Žv˜ˆ~ƒx›„|ƒ…•k‹Š’y}‚…ƒ ’š}‡„‰ƒ˜‰~˜ƒ„’~˜ƒ‚qŒ}”ˆ•ƒ‡†s‡z‹vˆˆŽƒ…‚zo…‚w|u~}Š„•m†††{}x‚ˆ‚vŽw}|~’xr}…„x‚{€~‡‚z|~uzx{‚~yˆnŒz‚yx€€„ƒr~t‡‚~ƒ‡‚}xˆ‚r„}‡€‚€€w‡‚}ƒŠ……”sƒ|Š~yw‹w…ƒ‰“ƒ‡‚w‡„Š…€ƒ˜€†{‡{}|{„ƒ‡{mˆx‚eˆ‡‚„‹Š…}††€|zˆ…ƒ‡ƒn{~}~z}€…€…‡‹„…„|ƒ€x‚yv}|~…‰„„‡…ƒ€‡ƒƒ‚ˆƒ‹ƒ„‡†ƒ„…†{y„†€…l€„‡€‡…ˆƒ…‡€†ˆ„|І…~„Š–•ކˆy‚„”…}¢vzp–¡‹xŽ…†€‘„€Žpu‡‹}•ŽŠ‚z¡Ž™˜Œ„ˆˆx¹{ƒ‚‹”Šzx†„‹n}ƒ‘ˆŠ~’x‰ƒ€‘†ˆ‚w‡‹ˆ—v˜q„zžrt‰†ƒ…•‰‰ˆ“‹Š…Œ„‹l…‡„€‰†‚‹‘‹ƒr‰’Œ‚Œ^}‰|~Œz‰‚„‰’Ž€xz† ˆ|Ž–}€‘†{ƒ{œ|…z‡z…‡‘vw…€‚‚†}w„‰‰|€x†Š‘v”‰q”€”~{{ЉŒ‚Ž…„rr”†ƒr‡ƒƒƒŠ~€‡uz‚}…†rƒ‹„‡†ˆˆˆƒ€ŽŒŒ”‡‚ˆ€†ˆƒ‰~‹““€’•Љ‚ŒŒ—Žƒ‡”‡†‘”‹Ž„‡{…wŒ„‹ƒ|Š…yˆ‹˜Œ†ŠŽ“}ƒ‘ Ž†‰tŒŒ‡—t‘‡zˆ‰s‹~zƒŽ|…‘ˆ|‰‘……‚„Ž{~‚ƒ—‰Œ{•Ž˜†‰||‡Œƒ}{˜‹“ˆŠ‹Œ‰€†Ž‹Ž…Ž}„ŽŠ‡Ž‚‰ƒ‰’y“z‹Œ•ˆ‡|ކ†‡“Ž‹‘‰~ˆ‚‚†ˆ‚†„‘…‘…ƒ€ˆ€‘ƒzˆ‘ˆ’‰Šˆ‹†‘ŽŽ€‘‚Š|Ž•‹†ŒŽ”jŽ„}wruƒ„zw~mx˜smyrztŽ€yyy{˜zst|rss{eˆys}vxvse{hwxyqu„€z€mzsrˆu|j|‰wuqw{{pyru†zw{zkd‰zxq€n}rz{|}~’uyq}ttrxko€p}}wb„uzrwtŠryqwvvvp{uqiru…lprtq€vlzzzwrhw‚p{y|uvrqsrwst{tqtwuuru{t|xtrtv|}pwwuz€ywvyux€w{sr„w{wxw…w}oqloor{~ls}r{sqwxqyvvŽx{‚u}|Žxyxwytqjv}„ƒ{ywfyŒpm‹vxvwwЇrswz~t}j”„px{vsrwgufvuwsx|{ss‚vyg‚x“ssu|z}oysu‰t„ƒu_€z}u€ooy|zŠƒ‚Žtwy{ztvszjt‚iv{wfyu‚ƒuvpƒv~qzvsužmyvrjpyˆnqqsr€vg}uwv{nltz~iywutyuprurzsrosxrynx~zyyytvtrz|pvvmx|y{z{tw€|utq„r{usrŽv€|spjokrx€gw}twoouwwwtv€ˆx~u{€yy|xtsqwt€~Š}|umype~vŽ€{xu|Š€tt{yytrj‰uw{ztqpnzkt}uuu{……yqzsw„x|g~Œvrs{tv|muuv{k{{_†{|snmx~{€}zyutuwrxlr…p{ug{€v‘usupyw~nvuu™qywpgsx‡pnxpiwhwuwuzojv}„oz{|vtsnquuowwopqxszqx~xw|yu{sou}mvwk}}yyyuux|uvs„q|utxv€|mnishtxƒmw{tvtptxzwup†u€‚q{„Œvy{wztupqy~xssyunhƒ }xƒ{{nxƒ‡mrzzwxj”ƒuz|{rxykzppˆwxq~†u~hwwv}y|q—z•sqv€w}m|x{†vt‚q`ƒ€yt€p…mx}Š~ƒˆuwy|oyuxiq‚mx{wk{w…†pwvw~qzvsu¢nwzrhn}Šwqorkxe|uwtzljqzsy{usyossvl|woouwrwlww{swwrot|nxvp|€y{vzuw‚xxtq†u{usr•wzprsojrz~bs|vxpmvwvwus€{}|v{~’s{|sur‘‰€Š‡„ˆŽŽ€—Žˆ‰ƒŒƒ‰‚‰•ƒ‚~……Š’š’Ž‚ƒ‰“’†…‘’˜ƒ‘†ŠŒ‹Ž}”~sŠŽ~¡ˆ“yއ—Š„~—€‰™Žu‡‹“sЇxˆ…‡’‰xŠ—yˆvw|ˆ{ƒs…™ŒwŠ‰ŠŠ|}Œ†€‡‰‹~Šˆ…‚ƒŠ~|ŒŽ‚ˆ|•—†Šˆ}ˆ—‘Ÿ‹–‘†”|†‘ƒˆ…‡œ†ƒƒ}…Œzˆ‰Œ…‚‘„•†€{‹ŒƒŒ‘«ŒŽzyˆ„ŠŒ¡~’~–~}{xˆƒ€€–s‚†’Žz{}ˆ”‡„”ŠŒ}z„…’Œ‰…†ƒ…o‘‡€’|}x_‡”|zpxax‚guvvzw‘|}zns ytyqvt€pœƒzt{wuxsixlx†wvmv†y|}‚{rq‡o€l~u’xpv~z€pxrw•yw~reyypm|tzƒ„„‰~vrŠvtszipzow~tox}w„„tvsŒq}rxxsw qvwnjwvƒinouo~ym{syw{mlw‚€nyz~tttroswm{zsoxuwwqv€}y}xrrsy~}rywsz|zxw€wx‚xztr†u{yyx‰x~nqmqmr{€ou~s{cqwyrwww‚’x|u~~vyy{vu‹˜zˆ†˜~|Žˆ“Ž‘‹ƒ„s|ˆ™‡•‰“‹r—˜…“„†{ ‘‚|Œ’„ŠŒ„†w‹˜‚•—x‘‚}£|‚Š‹Šn“~˜€†•މ‹‘~€Œ’’‹}yž’…™Š—’€pŠ{–npˆ”‚‡‡Š‹z‹}œ‰€…uˆ†‹Œ€…‚zŠˆx„¤ˆ‘š‰Œh—ž{~ƒ{™Œ„™”‘‚ŽŒ‰‰ƒŒ„zƒŽ†q‚z~”ƒ“{–…{ˆ‡~y€†ˆ‹…~v€Œ…ƒ‡‚Ž}“y †€’|‹€~Š†Žš–‰yr‘‡‰~~…ކ…š}›}–Ž{‚€mwŽ‹Œž—œ‰š{Šz‡zˆj‰w†mzš™…‡Žv‚‰‰†—†€}‹‡‡’’˜†‰Ššy‹‹Š”–zšuˆyšˆs|‰z‡Š‹˜“‰}……Œ—{{‹ŽŽ‹sƒ‘Œ• ‚†hl’lŽ}n‰š˜o‰…Ž|«Šš…‘…œ˜ˆ†x€„x–‡~”u˜—ŽŸŒ‘n†Œ’y†•‚”£Š‹‰{“†Šƒ†„”„’žxˆ€’Ž|Žu……‹‰}w|‚‚ˆ”Œv†Ž€‚‚…‡Œƒ‘v‡”‡‡|ƒŸ‘’‘ƒ“†rŒ…{††Š’ƒ‚†’o‰‡–~}„vš‹——‘ˆ‚‹Œy{{ˆ”“xƒ‹®w›zt…–z“~‘ˆ{“ˆ„Œz}ŠŒ‰Ž˜•ƒ€Žm‹Š¨‘€†”u˜•†{~šzŽ{o r‰‚u„šˆŸŒ›„œ‰’‡˜m˜”††~•Š–s†…‹wjŒƒ‚—†|wxx’ƒ|ƒ…£m“~œ‰ŒŒz†ЇŽv{‹–Š“‰ˆ™n†Žx~‡‚˜‚’‘œ—„}ˆŠ•—‹€ˆz ’ˆx¡’ˆ‰{ŒzЇž€‘Ђމrju‚{‚ƒ‰œ…}¦ysi‹y›Ž}„|g…–u•}‹xu‹z}v–p–unˆ‚p‰ƒ‘â n¥©’’ž®y±Y¬k»…sxz‘›’ h£„w¤›~ÛocU´œm¦p’~du:ɸ¿‹¯…—L{{c¥Àj†w‰ÀŽ (¶Z­¼íšš’Uˆ…܉ˆ­Vâ¶Aˆ±·qŒ’m~¡¡®mE—–¼Œ†nn|R¢+’~ª¿¶µsÕ¥V¬‡^6ÈpÏp¦tÑS¾p±GÀ¦F‡~'Ñ•P+)@Ï:0q>y‹:P43‡DEf°2HðD 5H?% .€;«^ÌRzªŒZ|JhspnUVt5/iË&Y=( ×™Pai|7ê¥2.>qB%AZ3]Y2_TsoQ A:DmcFz&T=(YTlQfXIE€FS8mcaQ2KQXsgJ2,3DX<>JAlO[v|eI^b,ENCJFddSC[ZXM:Yr; 4AKr_]LgP;FKR8<:Q4dfRJg€=Y;MW +-–XM?97®Ó¤æ!QcƒVá_k”á1’–@R5ŸépPP¢LL†Vœs&L[–ªA•­Âp;?&Ê :}PNdqÎ:4}´¸…— oECm_yrEn ×Aè˜d’I¶iV,Z®XÆ©Ž“FÙW^Q+fÌ£!eZ|޵¼ÊRKÿC¨laj¢©Q}¨ŠY©“(msMIFK;§ÒNn—ÝŸN{c–›¶`~LŠ’i;Ü9ÈUzc`$‚CR‰‹Hdgtx?‘yw\K`©Q­c†£j1oXdaGœÐvÁp>b©_¢JޤšW4FpH6£TÊPêz£ÏK-Z¼$àiÒi?’[`ec`hch_dflfY]h]cdcdef]`^m_cpfifcabn^^hjjjj`egnege`cnUdm_cYeb_gZdXe`g]cd]bfkdd^b__]effi]b_hh_bchccmieg``gaiffcXdghkffac`[]bgibaWjg]Thchfafe`kec`Og^bebd^_dcgbdhah]cgihic_\\ibb`^[_]kjjblUZpaggceg`b`_iadla]edbabcZji_`ZYeb`bl__cafn^ae_^i`ff_\eedq__]bccfgffb[f`flcegafdjVkd]Ym]^h_defdZfd]dnlRfeb`bhdk`Ynbbsa`mlgclimdjihXei[bf^Vo^^W\jd_mo]iZde`^f]aki\hlhekbfdod`]o^d[f``WcDfb`V\k_bl^^oc\\nT[da[jctcch`q^[ch5_cgkidmbej\l]bd`fabecd[cb_ce^bi^ahggf]mbcp`a_accZk``a[jp\cafmb^mb`baej`cgWcp_ld`cdfcgc]ibhik\aq]g`\bil_e`cTc`dahaYac]gfcpZdbcab^gn`^^ehfdoidaa__ke]df[chjadae_e\ch\bdi`Qe_c]`[aam^ib]^^coh]g]d]ea\be`V^ie^bdf_i\\fffae[l`efjdnecd`c]\degYZai^^qg`gc^`dbd_X^b_haw_`ci^a\c_cXacifd\]c`dbeihl]fcd_lckj[c`mej]bcdfe]bm_blYedj`jgdbfkh_iae]fZaj]Ydgnelc[`ddeckdafj^cbjajfgcm`caf`ccehgmdijbahddj^`b_]eh]baei_g]^_^bqfc\ab]hf\ifcoi[jgj^Wi„pc^`\rgZbigggbaeifj[Xich[]\n`e\`d\gbfjnbej[cgbdc[oc`jhhlTeg]^lgebdbd^ahbf_f`d]c]f[ehcnb[`aRU_efj^ghiZbcf]_Zha]g[]dccfecj[bjeadf`ajcaObc\ld^]d^cfbiZU[gcfd_odaf^c`dRb`jZcha[a`ea^[kg`^]e`bbem_aecbb`b]hg^eabd`befZhcb^hgcbb\bY^de`bd]gcadcbeb[bjheda_cddbbccf`cffdhcgefj^aiifg`\_fb\_d`cjif^gkjehai]kkbndhcainV`YeebXigen^had`jefhbcecb\]h_jTjgck^ajgiehf^j^afbdegldoagdc`dfbh\\`aifkdg_cach`acgehggb]a[_a][\fbe]ji^`abdi^\abbah_bb_hcdacnfedaf^dakhg_bf`g`hh^jie^dng\gjafa]l_c]f^Zk\fd\[bb^_afie`\_kVia_`gr\heb\i]`icdk\^plia\gcZbhdd\abt^d]m^h__bfZpcd`abgdla\fcf_^aj^baefbdmae\`ceh`acYednkbd\][``iY[^e`hq_Zhcjeecea]da_]hqham_]fge_ee\\bZbbrcc_ZfZc[beg]^lcch`e`apdm[e^aZa^g\gabami`e^g^_che_`di\_do`ab`hcb_i_]sbhe_`geafj_c^_`add\hb``aj]d\fg]`^hbifk_`gccgcbb\hcfd_eddbf`^bdlej_ghdcea_f^d\`dd^_ac[dbeab_d`bcfbghmbdeef`ec_`bcjgb[bbfaj`bceb_`ihfeb\^cbf^ia`b^d`i_e_gaec\hbihcgYca]_`Wc_bc^bqe_f_ebdh_idhdhggc`c\`kgibedb^bbckeh\]b_``aa`ccdgecdackdcl_e_fehfkc^fg_^f_afe_dcb`aZ\cbbcecfacgg_f\hbd_bbbb_]_dibihg\b[gYa_b`]aic]egdedhjb^``cdcf`hg^ab`af`fda\bkkgXiica`[dajhakdadc`fg^ah[adbgddf`hlaaj^ade`becbddmtdbM[jdpbeb[__jcdhf_gn^]gkg`_^g`fcad_ab]\`ec^dbagedcc_c`hbe`dica_df_^^f]`\cf`d`iab_]deWficbcbigfcc`g`_]^h`bgc`a_hgdZ_b``iia`f_`deoacag]jdflgcfkiihabgZUilkho_dd\^beaih\bk`xkcbZkf^\f_[f\dd_\eafae\glfYihafZIf]ghbkmaf^pfc[diZZfc\f_hbbgi\``eii`^f`Yf`ga[^lgo^cc``ccaa\cedniYbalacc^_a``Ye]^ebdbb]kZdej\_ca_Yj[fa`fa`jd_cgkjcfa[gfbfa`ebc^i\ldadi]`bjdbj`ffbc^ii\`jbdg_cdedie`cdg`a_fejhgdf\cjNjaf\ehfeaachb^i_\_eeedjdfcbj]fige`e_bao\k``ce]hdf[h_e`^e]engabeZ]cb_bba`cfhfYdc^_ddedeaajaidabagd]icZga^d`c`df]iic`aih^idbe]_ideddhbckiZ_fa]dhcd_e_acfl]gd\gbcbdecdkdoje[eiacaa`ob`gfcgc_`Z]ca_d^ai_cngfb_eelfkbbdhgbcg^lp\acaaZde]kZ``gc[`j`_faebb^ee_cicdfbak_jk^Wecb`iZbjafj`e`icg``aeade`c^b^f^_ecff^afbeffd`bec_`bceceeccc`heehdfdccccgf``aelbc\cfgdk`bcbaf_daccadfeedf_daffdd`adfacaaafdgbdeb_cef`dbdcc_bddecbfb_^f^c^bceegcbecafdbk]bd`dcdd^ccbeebebc_cbe]ca`fgbebfeee`cdbh__cg`babfdaafehbgfccabfedababicb^d^ccgeaaadba__bccbbbcfceg`f_c]cebeacicZ^ebhi_dgg^e`dbhfc\ba_gbpcd^ceja`gfe^_eldhikdidjh`id^b^^b\f]nac]degagigfnfa_`]fabZ`gb]bYab[aichb\]_ca``djab_heee]__l`ejX`]h_cicf`fdajfcehcahbaXfbf]jh_acbl`c]gfi_b]f]dg_d_bn`]a_de``h^]jZfgd`f[ab`]ed[jd`c`\a^ceglgc`efed^defg_e[^fdleZceiea^hca]ddicbeahj`a`iddl_`ddggdidc`eh`jgeib\beedcejmd^d_`[^je`fb_[kg`^a]^k]cccbnmdgm`[a^cc_e[b_cXae_fcbd\`ecej_bbmjb]_gbbj^ch`acmb_mgjkjcddgjane`_ghf^c\_hib]_gofahci_ebcfdeSaegdbbi`d_ceb^edcjgadeg`ab[ek\pdcc_abffjcec]gaWbc]a^fV_g_b^_mg\hdqbfa^Zhkja\cl[]Yba_d_aa^fgi]\\]dpakagfcdddddcddcddccccdcdcddadcedcdcccdccccddccdccdcdcbecdecccdcddcdcdbcddddddddddbdcdddcccdddcdccdcdddccddedddcdddddccdcecdbdddcdddcccccdcccdccdccccddccddddedcbcdccdceddcdcddddccccdcdccdcdcdddfedddcddcecceddcdbdcdccdcdcddeddcddccccddddcdccccddddddddbdddcddcdddbdbdddebcbcbcacabdfcbbddc`bbbdadedfdbbddbccbccd_bcbccbbeccaccdbcbbfccbbc`ddccedabdbddacbaceb`cccecbcaadcdebfbcddbddbcccb`dccbdbabfebbdbaacebddccbcadbbcacacfccfbcccdbaccbabd`bccadaebbccedbbbcbbccdacdabfedcdebccbbcebbcecaccedcd`babfcbcaaaddbbbcdedacbcabcacaaabhd]j]ece\bagfedlqgf`i^eee`_cddfg`bje^b`fqbc]^ihi`ja]`lWX_^b]\akl\^^iiddbeg^gacZ_g`kccinh]jg`bZ\dfb^l_fecamaa^b_cd_lhafdafcfnchZk[e`j`a^nc_gfW`hdge]ea_cnh`lfd]hff_]cicjcXdcjjmancah[e_`c^_UelbjbheX^dhd^acieefd_h[ideedcpic^dbcf]ff_Xfgb`^bbeihc[^fXZ]bYh^lficdccdcffccbdcdbdecdcccbdbcddcbdcbddddcdfecddbcccccddcdcbbabdcbcccccdcbcecddcbcecbdedcfcceedecbdcefbbcccdcccdecdbdcccccdbcdddcddbcbeeceedccccddbeddcecddccdecddeacccccdcbbebcaecbcccdcddcddbccddbdccdcccbcdccdcbbceddbfdcddccdcdcdeddcdecbddcbdccdcbcbcbcceecccbedbd^cdfccccffa_bcaeeda_`e_^g_dcbcfhdf`cbcbgdfgffd_^cfee_jh`b]_bc`d_`d`ai^agda]bfhcfafe^ecc`gbdecehiaecacdaebccgcgcehdega]fjdbb`cZfdggfd^ga`ffcffh][ed^cdelZh^[deabbdceabYaffcebab[dcb_ibedgha[gced_bajl`fga^cgedega\idde^gb^f_dcdek^dac`_`^`_adb__cc`gecfecef]c`hcbbbcabbccbeebdcedbcbccaaccbccbcdbd`dddbbdcbccdb`cddedcacddc`cbaccdaaadbebeacdcbddecabbbcbbcccbcdacddabcbbbcccdaeecdbddbddeecbbbedabcdcddcbcebbcdbcaacadccdcecbceaccdbcbacccebbbbdccebaebacbcdcebbcadecbcccadebcdcdcdcdbddccbbddcecacdddbcebc`cccdbcaccdecddbbcbcb`b[Zf`ef^e]jamaafjfeZebgoagcd`^i`eYbXhak^egiTiciXgl]^jhidbn^_daeedc`ekia\icYc^e[d[cc^ddgh[cfoefa]^o]_cb[gdltfZvdhchcgdigb]cefc`f_]mfa`eccbh]ge\ikelefd`_ch`f]hedak`e`^^lhefd_niYnc^befc`fdX`\ilahied_`l\cg`e`bfcfiYf_dj`b\ie[f\gagW^^abhdldhee^bee\se_edfdeg[^`d^b`iil_cbaccb_ec``dagcc_`_i_k_bccebdgggbeg`bcY`ec\ijiVjfce^^^b^hgcf`_acaaadg\^]d`ccgec_bc]hch]cefh_`_fbgca`YagUb\^^aaYie^i\e[`ga`ebeaa\^Zcbfh_gem[a]b__n\hfdf^``igie\chkgc`\d_`a]idfff[bidig___ij^eadb_becbibiagpb`fc`ac`j_]c_haf\cg`]biccbdecchag_ea^d^a`lbhegccccccccccccbccccccccccccdbccccccccdccccccdccdcccccdcdcbcccbdccccccccccccccccccddcccccdbcccccbccccccccccccccbccccbcbccccccdcbccccccccccccbccbccbbccccccccdccccccbcbcccccbcccdcccccccbccccccccccdcbbcccccdcbcccccccdccccbcccdccccccccccccbccccccccccccccccbcccccccdcdccbcdddddcccbdbddccbcccccdbbdccccdcccccccdcbccccdccdcbdcccccccdcdccddcccdccdcbdbdcccbdcdcdcddddccccdddbcddecdcbccdddbcccccbdcbccceddcdccdcddcacbbcccbbcccdcccdcccbccceccbcdcccdbdcebcbccdccddbdebdcccddcbbbcccdccedcbbccebbcbcbcccbdcccbccccdbdcddccccbcdccc`befa`[eag]iYddiWdcd\c`jbgd^eih]j^_Ze`hgbefacd[bgijX^hd_ckZ`]hheidZakabgk^lihjg]fdgl^bdgdbd\`\_jfn`cchld`_fiqcdR`zjl]bb[aUZ`_db^\cblghdncahcgefggO\fb_dbX]edaa[lYba^gdelbXagd`ki`ih_dbekebbgccY\dfc`bed^cdd]bj[biabf^`cf^g^fnic^X[dbal`kf_jchedlga_pefbf\`cobe]bba`i]af^beh\clSdZh]d_mff`^lh`e_f\fhbeh_c`_a`Yd]^gga`ff]hbae[^`\iqhcaaZafe^gcjf_[g_iebccVcaddjlfad`\g_ga_kdac_df[c`fZghZc[]f``cdi\hafcbae_ei]]g_gax^djhgdda^adf]`][]onmi]gbj]ei[_gdcc^jh_dahmbih\bcYg]i`^h_\\c^ibjlbdehT^_dbU^`cxae\geea_me_`gibajhaeYYb\aagfbf_hhcilcbfg_hcfcdejd^fj`ecbcck\fbeqm^_gl\ec`^h\gZif``eZddakhi^oihapd\accj_\`kifge`_gfaccfcnbed`a\`abeeWghkdZ\fijc_geljnfdacjfh_chcgcZ_W\l_kg[fe``cb]]kdbbnbO[be\h_j``_X\gXeWfbfekben`^]g`dnocbZeb\edcegcbb^hb_fea]dcfaffe_caq^ciZe[g^eecimdWZi^f_ij^^gi_`[bcdj[ciac^`ch[_d_bd`g^ngb[g^jdje^begdap_biZe`f_ajebWdj]dbff^chimbbg`c_aghjZ`ecdidh]gjYc\Za^_g`hadbc^gfkioc_ejef]c[jkkf`Ydbmeocbc^b`eifkdd`cZc`eabhbddY_degheggkgeafhiib]i[_db_cbfcchbcfbnb`_ed_d]b^bTb]bei\Rj`ekba`]a_b`dkm^fdcdefcgdhaedbYadebc[a[d`dl`ih[ci_`dg[bgf^]^f]^b`mp^h^afT^gi]bf`lj_abb\Ycbf_^cagbhehfg_ibcdaig[jg^ejfdeecded\gfbacgheecm\e`^fcheijcd_cdc`je[]dh`\dfcde`ab^hane`c_lde_ibkcdge_jcYfjX^`_a]]af]fdff[``]ag`dlsbaadeg]dmjZee]f_ldbdhhi]c`d\jfY^dnmeemXgZenh]eibdagcmeeg`f`ajdb`ebdcbabd[le_dfggcdaekdd\g\d`[`^bcaVccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccafcbd]be^`fdcbmbef^j[```aadcd`ecbag`_`dbhj[l_ab`fbecfafdd_`dc_gef`ebfbc_d`_\biebcgcddefcfgdgdkifjdhed__gea`cadf`bf_hi]gdbdabc_iae^_bgbde`af_egd`i`mbbifec_hca`ddledajbaecegh_egbcjcc`ceadiiabcbb^ifecgh`beae\eb_i^aY_`cd_aedhge^\_`ga\`eb`fja[daab\lag^b^_`cb_^gfe`cifddje`gd_agab`a^f_baZYggmfbh[[d_jcj]elhehab^c`fgdjjgc_cdla]^`_e^^ZaeZ`agbd`mdfgb`_gd[ii`^bbfdh]^bheaZkhg^cVjefY`jaebbbhg`]aUW`cjeagXadcflg\gGh^`_abdcg`bf]b`ch\\]Yf`f]ff\cgfdbgidgjggac^[]d^bd]dX_[ghe^ehna_f`f_`ia`fgbg`afiZ_\idgl_W_dhg_^m_a^cf]`i`\^clc`_\h_jc^b^`gdh^gbkldeeYd\fbh`d_g[a]ljk_aghadeeddfcbf\[kga`Zbed_^ehjkagc^bgcifdhf\aib]hdfgaedc`[]gg`]cf\id`f_d`bcgcabieje]]_]`ag`\aZbacacflc`]_\bfegcbiac`^abf^bdd`eZ_gddadd`[dfegemciZd_`jcdm^idjfa^^^dc`cgi_\cfcg`nba\`b_hbi\debedgg_`bm_hfaj^bgf^nf^b]g[f`b^ac\nkfaahYjmd_leX^df`i\`dkd_d_f[^rdbh`f]feiZfhgdghhcihacgf\`gg^mo^e_aZc`k]bekhabg_feedd]hXndXg_Zd_W]f`a^bah_^fchbbl]dcd_ffheaYhafghfi`_djroa]copafgaKf][\fhcbfcecaj`bi_U__a`igheaabeZ_^dcafk_gaf^^Td_kec^chf`cchf`fYcbg_hgbdcjggd`cikdd`icf]f`Y]cbg^k`cZbg`n_jZg_ebcbccbcdcdcccccdcbcbbcbbdcdcdeccccdccbccccceaedaddddcccecccdcbccbccdcdcdcbbddddecdccbedcdcddbbbebdbdccccbbcccdccccedcdccddccdacbcdddccbeabcbcecdcbbdcbccceebdedddcccdccccdcccdccccbcddcdceccbdcbdcbbcdbeccddbcdcdcccddedccccdccddeccbcddcaccccdcddcccaecbccdbdccadeccccdccccbdcbbccdaccbccbdcccbddcdbcdcdcbcbbcbccdddcdbdcbccbccccaddcccccdccbddcdcccbcdbbdccddccbcccbcccdcdbdcdddcccbdccccdcccccdddcdeccbdcccccdcdcdddccbccccccdbdcdcccdcddbccccccdbbdcdbbcddddbccbdcdcccdccccdbdbcccdbbcddddbcacdbcdccdcdcdddcddccccecbdcbccddbf[c`ccd\g^\[aihYadafil]cgl_i`fbdccdeVdkdf\]_beg`[eejZ[‰cVgjc[Zgbdcbbamtndi[f[X_\[]im_hg_f[\`cqabY\bndbZZdf]cajc}ehbfhVXbc]lfcag`lbaug\qQebgbV_i_qzdh\je]YfcbdihdTYfmK]Z^kdmiWceaie\eebiVPdb=nleZebjcge`vXYclbUcqaUh`aieai`backbhka\df]e`gr[bb_]o`d`bnge`dhec_[bfccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccdcdccdccccccddcccccbccdcbccccddbcccdccdcccdcbcdccccdccdcccccccccccddccccccccccdccccccbccccccccccdcdccccdccccbdccccccdccddccccccccccccccccbcccccccccccdccdccccccccccccccccbcccccccccccccccdcdcccdccccccccccccdcccdccccdccccdbccbcccccccccccccdcddccbcccccdcdcccbcccdceccddbcddcddbcddcddccddcddccbcccbbccdccccccccdccbccdccccddcdcccdcdccccdbcccccccbddccbbddccbcccddccbcddcccddcecdcccdccdccbccbccbdcdccbcccbbbdccdccdcdbdbddddddddeddccdccddcdcccbdbbccbbcdddddcccdcdccdcdcccbcccdcdcccbddbccdccdccbdcbcdcccdccdccdcdcccedcddccdcbbddbccbdbdbeccccdccdcdcecacdcbddcbdcdddbcbcdbcdccbbbcbbcddccabcbddcbdddbbdbcedbbaadccecccccccbcbcdbcbcabbddcaabdcddcecdcccc`dcccccdbcdabbccfcccabccbbbcdeecbdcdbdddbccbdcbbbdbbcbccddbccdcbcbcbcdbccbbbcccccbcbdddbddccbbedbbcddacdaebcdccecccbc`acbabebdddccbaaccabaddbcc`bcebbccaacbcbcgcacdcaccbcbcdccacbccbbbgdbccebcabaabbbcabbacddcbbcbcdabdacccabacccbdcc`bccbccbcf_dddbdccbc_cacdbcdbccddbbdbcccdacaacbcdccdadecbbbbadcacbacccdcdde`ccbcdbdccbacbcbdddbabbbbbbdccadbdabcccbccbbbcbbdbaaccbccbbcccbbcbdbadcbcdbcbabidbc_gcdbccbe[c`fcbabfgddca``e_cfdadfaadcceedebfdceeaaem`affeejacebbfcabbe_bfc``ead]ac_bdfded`a_cace^efeccbaahaacacfbfbc``k`cb]ccbgbeb`e_deeaga_``bb`de`b_jbddadc`ec`a]ed]bdadbec`cehbdbabgdbddae_bccdacbeddhbcedeab`be_c_d`e`d`cadfabechcac^adcf`d`bddegg_cle^hcccccdcccbccccdcccbcccccccbbcccdcccbbddbbccccccbccddcccccccccdcbccccccccbcdcccccdccdccccccccccccccbccdccdcccccbcccccccccccddccccbdbcdcccccbdcccccbcccbccdcdcdcccccbccccdbdcdccccbcccccccbccccccccccccccccccccccdcccdccdcccccccccdccdccccccccdcccccdcccccccccccccbeebe_ceeccbdfdebjac_f\dedbfeca`ebbebdedfeceffggdccecd`dbbedbecfiabedccccagbb`eebcddbcdehaedagdiecebdeffebbcbegccbc_iefadebdcca`acbfjddgbfbaecddecedgeac_gacadecgfded`ddda_bffebfefd`ceaafg_ccffcbcd_cebecgbfchbf^dgafgcbbdbefeaeegeffcdb]_ecccbc`ce^`_`abfdeafcZdam_ac_h`b^fbh]a`gedgc]_f]agpf]`\bYTbccccfaaffg`]\jdeh`Wdce`gibb^afeg^`gccco^c^d^chf^f]ggdcebb[_edj``\Y_hncmgg^`iebe\abdafe`_haahel_egd\ajhhnfa_Wfibgd_]]dfhh_^hgafai`Y_hhgejilhc`_kgk``fdZgcddf]_fe^d^]bfc^g[ggad`ait`fep^ka_dc`fachh\bZkgdi_ei^ccii_db^gh`_gpZibY`gdj_iagn`]gcTib_aaa`djbdc`gaccdofb^^j\efldUjedaghSd`giWf^_[elc`e`agfb^dg_aqicbbo^fdbc_dc_hg`cln]ac^fb_fnggkdfda]b`^\ihhcgifbkshef`mfmdffcg[[[a]gaab]he^_Vc_ifcae^fcg`^kj\_Y`_Yedin^bZTmccg^\Uddab^eba]kef]``fgXf`S_d\h]dkckagheg]d_f‚_e_Wca[d`\fbifmkh`eia_cccccccccccccdcccccccccccdcccccccccddcccccdcccccccccdcdcccccccccccccccccddccdccccdccccccccccccccccdccccccccccccbccccccccccdccccccccccccccdcccccccccccccccdcccccdccccccccccccccdccccdcdccccdccccccccbccccccccccccccccccccccccccdccbcccccccccccccccccccccdccccccccek\Z`]g^_i^`ibba_[ff_^jhfgk^d`_nid[^o[iagab_hc`aj_g^YZ[edmc_g`jiefidaf\j_bYb\_bedd\b_^jgh\^bhahcadboegacac_msh_hcb]kd^`e^cie^ib`dmicbifllg\a_gcef`_gfmn[\cfY_b[agbYadaf]b__d`^hma`Zbcm`ehUYnb_efa`egcac^[`]gc\Wicmf]f_See\\Ue^ccZXhcch]_kwelhde^^f_ch^dlh`fdeh]\ccccccccccccbccbbcccccdbcccccccccccccccccbbbcbcccbbccccccccbcccbcccbcbbbcbcccccbcbcccbcccccccccccccbbbccccdcccccccbcbbccccccccccccbccccccccdbdcccccbcbccccdcdcccccccbdcccbcccccbccbcccccccccccccccbcbccdcccccccccbccccccccccccccccccccbbcbccccccccccdccccccccccdcbccddcdcddacbccccbccdbccdebdcdcccdadcbcdedcdeddccdececbecccdccccdccdddcdfccbdbdcbcdddcbcdddfcecdcedcdcdadcceddddcefdcccebfceebcdccccccbdccdcbebbddebbcccdbebbdbddcdcdcdecccdcddadeedcdedbbcccddcccbcddccddddcceccdfeccedcddebcbdbcddbecddeccceccdccbdbdcbbdcddbldae]je]ch]b_a^k]aadaddcfcfVc`eggldebhcbb`ebag`dggedbef^ggacaddbeida_ccefhbbceeh`cgdbcha]^bi`hjafbfgd`da`cbcicfcidage_cd\cjbbdbd_cgdebc_^dfead^cfcbcfaf`hbcdZbhaadf`[caagd``_addd^eaaedfbefa`hbf^bce^f]eb\^hh^ecbec]afcgjc^ffdj_b\bfdebcggeca`dfdb`^`ffbe_c]bbc\cbdcdccccccceccdbccdcccccdccdcddddccbcddcccddbdcdccbccdeccddccdccdccdcbccbccdcbccbddeddcbddccccccddccbcdccceddddcdbedbdbcbccdccccbccdcddbccdccdddddcccccccccccddccbcbcccdccccbdddccbbdcdccbcbcbcccccededcdbccbcccecbccceccecccdcccdcccccddccbccddcbdcddccddcdcccchfgdU[iceb`bgeefdcg]g^g`ghb`bc^__oab]i_daa^k`rZg]adcjijf`emh_Zcd]kg^ide]afg`dj`kf[dia`efjbfeY_je]aijed^`cdcafgfchcchg`badciidf]heide`aiej_fW_\Xie_c`]_b`fajgcXdakZZgi]hha_^gieghk`aic]h_c]b__boYb``d_^ejhdfhh`de`df`c^ebgejegc`hbg`eOhc_if]jae^h\`le\dbcad]che]dceebbadcaccabddbccbadbcaddbe`addagabdebccbbcabacaba`debbcbfbbacdbbacbbca`cccbdbdbbcgcfbbbbcddacdcadadb`adbdcdcddfdcacbdddbdbbd`bdaddadddbbccadada`fbaba_cdaccdd``aacdbadbaedcedcebdbd`abcc_acehbbbacccfccc`abfadcdddabbbc`e`_cacdca``dbcccaebacbcceebb_dccbdbab]bc_]md^dXejebjlcbd_i_Y]_c`Sc^]e^gfnkefifb`c]_i[d`ak^dqo_e_gadefgmc`dgifdeZhjZ[`d[d`jitf`\bbd_fkjj]jaTc`hdegYcclg_`gZ\aaccZjac]acbjemei_blac\ajijb\icZa`iclhbekXccd]Ui`b^hagf^fijmhfhgdeZdlZfi^j_aaZdf_fd\dgcXhd]gh_g`]i`kfkWgeb_`_jh]ajdl]a_]ec`\e_bcb][hb`cbZ^a`eqfpdeebbia\hc`ic\]gccbg_e^^`dfkhd^madc`_aab`h_agggdn_af`addea\f`f]faeeb`e]md_ebdke\^ii_i`\chechhf`bg`bfldc_[\hd^[[eldji_hcae]ch\dchd`h`cp_imbdY`ca_bhh_gdl]iea\gab_afaheac[bb_ap`c^bc^icWg]`^lf``]dhgefbd[hbe`Vbncdm`ob`o\fcdaaZ^hd^^aZfb_cebc[dgge^cfdfdbkgfb`^_h[hfccfame_e_cc`gbbhakgjf]\eejacidcc`dg`g\e`bcjcbc[hacadg`facifa]chdaffaaddh^__ceb^dbbe_cbfbfedd`bdcbf_afh`wa\f]afbea_nd`i[h`addajdc`_c`agia^j`bfh__gkbbhdccabfc_ah[cad_fca\_cgeaipbaigej`c]cghahdei^gfcg_feicn^gebcia_cbcjeeadbfgdlbhie[adaefbcdladei__ha``cccdcbddcdccccccccccdcdddccdcdcccccbccccccdccbdcccdcccdccccccdcccccccccccccccdcccccccdcccccdcccbcccccccdcccccccdccccccdcdcccdccccccbccccdccccccccccccccdbccccccdcccddccdcbccbccdccccdcccdccccccccccccccccccccccdcbccccdcccccdcccdccccdccdcccccdccccdccccdcbccccdcccccccdcccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccdccdccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccdcccc]\_kq^fd]e[hfYZeedfYa`\dacsfY[i_e`\hkck[d\cgRsda\chg]bdb_fgfbc`][e`X`ehcga[Vi]ibe``dej^j^gdqdadhc_lgced`h]acfgpfZfklcah_agbcca`kc`k^f]aZd`fb__``zh`Zc_a`cZ\]hi`_h]kfe^bjcadeh_\_gc`\ce``ebedbdZb^gfleadgbmlgZmi\_l_`hdeg`gfdajkchfd^cf`ea_ge\ejaldd`jf\j\i\bdl\b`bc_be__bbc_aab`ccfbeeaadbfbhgkab_aYcad]`fcc]ded`ababbd^_e_a`ebbcacedc^_\ebga_ba\icbdaa_affc`c`d^ddb`baacecdebh`dfcba_bfccb[a`c_`fdadeb__dagcge`ccdjd`cafbdbecacbce_ecbdcabd_]_db`_bjb__ae^decbc^_cadj__daacb`eahaefccaf_gbdbdifaaadfe^dh]e_dcbf`fabf[`fe`ecb^_beccbdcedcdddceccdeddeadccdcbbddcfcddccdcdbcbdcabdeccecbbedcbccdedbbbddeccccdcdbbbcdbccefceccebbbecdcbcaccccbccbeebedbecccbeccbeecedeeedfcdecaecccdcdcbbabdbcbdacbdbbcdeecefcbccbddccccbbccacdddcccccccbbcccbbceccbddeccddbccdbdcbbbecbdcebcbbcdddbeebbbcdcbddcddccbbebebbdcde`cbccdadedaaba`bagbedb`d`bbbbb_ddbccdaebfecdbcdcdacbeccbdcagbc`ecbfdeb`ccfgbbdbe`accdcecccecd`bcbdbaecccedbchcccccebacddabbfdecbfbaeccdaaedbfdfbdcdcbbeadebecbbf`bb`ebacdcbecddb`abcdaeb_babbdeedebcdedeeaeddcdedacdeegfdcdabcccbddcbdabcdcbdcdcddececccdccabdecdcbedbbbcdddbcddeabedcaddcecddccccdddbbcccdacccccfcdccbddcccddfddaccbdecbdabcbbddaddbbebcbdccfdcceeedebcdede`ebdcccbeecddcdddeccdbbcccdccdddbdcdeccdccdcadccbbfbdddbdcdbdbcdcccebbbccbdddcbcdccccbdbccbdbeddcccbdbcdca`cccbbcdeebcdcabadddbbfaaeeb`dbYibfYiX`^dc^c`bc^ih]bef`]g_ZgbZbabcabklZ_`^ach\Y^jZiYgmgaiZa`^_m\iZ`dfg_dZR]ggi[koafjaed_ghdjdj`dd`egdbdadW[\kS_e`gbgfg]kiavcf_cb`ejkkd][ebdbdah`befYe^akW^gOib[Ye[p^b`ebd\dfahe_`jc^kfhaeT[shebg`fYWbc]eih`agbcl]ff[eifZb^`figeeivfwjWdhagf_g_c_bc^a\Z]f[ogiccddbcccdcdcbbdcccdcccccdccbddcceccbbddbcdbdcdbbcdcccbbbdcbbcbcbbcbdccebcccdbdbdbcddccccdedbcddddcccbbccedbcdcaccbccccdceccccbcacdddccbaccccddccdddcdcbcbcdcddcccbbcbbcddccacccccccbcbecdbcadcddcccdbbddccbcbdbcbbcbcbdccbcbcbcbcbcbcbbcbbccdddcccbbcccbcbcbeccc\a_`id`V^abuZcgh^ab^X_YffncZfaobeY^h]fd^id]mh_[^_hUYkPcbef`ca`eebb\l`[bfbhggb`e]eX`rihkgg_^ceem_mi_hZ^fmdWidYo`]h^ie_db[df\fis`_aVcgdf_jg[\diapiddahh^ij_`gdfe_]f`c`dbfekkc`^cei_maZ\g]f]le\ddY\qgia`Ogh]Zla_agaifeaUa_jc[\Zli]V_\gaobafj[ef_eZ`f`gZfhfbe`e^ifZcdcddcddcdccccddccdccccdcddccdccccbcbbddddcdcbcdcecbcdcdcecdccdecdbdecdccbbddccddccdbcdccdccccccbbdccccdcdddccdcdcccbbccdcdcccdcdccccdcccdecccddcdccdcccbbccddcdcddddbcdccccdbcccccbcddcccdddccddccbccdcbdcccdbdccdcccdcccdccddbccccddcccccdbddcdcccccbdccbcbbccbfhc```aadged[djeb_laeZ`cecba^bcccadcafcddeamdbafe_befl`bff_ddZc^age^eac_hb`_feagecblaha^d^eacfhddbdcfbfceeffec`ddfghd^gbcheh]f^id`d`dfhfbb`d]c\gbbe]_c^h`cg_chde`hZfe``fjced^gf`hhae`ddcaafhbcfbbY`\hbgdabgedZbc_b_iecbfd_chbdbj`e^b\gc`i^aabdffdbeeh_ebai^_g^_cccccccccccccccccbcccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccbdcccccccccccccccccccccccbcccccccccccccccccccccccccccccccccbccccccdccccccdcccccdccccccccccccccccccdccccccccccccccccccccccccccccccccccccbdbdccccccccccccccccccccccccccccccccccccddcdddccccdddccddccdcbccccdcccccccccddccdccbdccdcdccccccccccccdcddcdccccccddcccddccccccdcdcdcccdddcccccdddbcdbdcccdccdcdcccdcccdbddccccccccddccbddcccbcdcddcdcdcdccccddccccccccddccdccdcdccccdddcdccccccccdcbccdcdddcdcdddbcbcccccdccdddcbccdbccdccdccdccccccbabbccbbbcdddcbcbbcbccbccccccbdbbdbbccdccdbccabcdbbbdcbcacabcccccccccbbcdbccbcccbccccbbbccbbbcbbbbcccbbcccbdccccbccbcbccbbbccbbdccdbccccbccbcccbcbdccbdccbccbcccdbcccbbbcdccbbccbdbbccbdbcdbcccccccbccbbcbbbcbcccccccdbccbccbcbbdcbbbcbcccbbccbbccdcdcccbddbacccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdccddcdcccccbcccbcbbcbcccdadccccbbccccbbcccbcbcbdbccdbcccccbdccccbbdccccbdcccccccccccdccccbcccbbcbdbcccccccddddcccbdcccbbccbbcccdbcbcddcdccccbcdcdcddccccccbbccbcaecbcddbcccccccccdcdcccbcbccdccdcbccccdbcbccccbcddcccdbccacccbbccbccbbbbcccbccccddccdccdcbcccccbcccccccccccccdcdccccdccccccccccccccbcbccccccccccccccccdcccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccdcccccccccccccccccccccccccbcccccccccccccccccccccccdccccbccccccccccccccccccccccccddcbcddcedcbdcccccccccccdcddcdcdcdccdcddcddccdccdddcecbcbccdcccccddccddcdccbcdbccdcbcdcccdddccddcccdcdccdcdcddcdcccccccdbcccdcbccecccccdcbcccdccceccdcccdcbbdccddedcccdccccccbbbcdcbcddccddeecccccdcdcddbddcbcbccddccdccbddbcccdcbdeccdcdecbcccdcedcccccddddcbcbcc`]_g_cdch^gdag^]cge[_megdehf]ie_egWfVac_`dgdgkcUVcnXcƒeYdfcdef`]admeeb\gcg^c`bdkW_da^cfngfdUekabp^dajpgdk`eda_\ac^ccccaik^l`ceid__gc[Zba^bbjglacdeadbafce]kh\edbfeZZ^cbpb`_fagcdj_d\hXbj`ecbjdcakk`\h\gddfab^hdadeeakdedgg]`_gbc`[g_d]b[[g`fgVcaahceimd\hdbdl`cccbcccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccbcccddcccccccccccccccccccdccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccdccccccccceccccdcbccccccccbccbcccccccbbcccccccccdccccccdccdcccccdccbbcccdccccccdccccdcccbcbcccdcddcbccccedccccdccccbdbcccccccdccccdccccddceccdcccbccbcdcccccdbbcdcddbdccccccccddcbdcdccccdcdccdccccddcccccbcbcccbcddccdccccccccccccbddcccccbcdccccccccccdcccdccccccccccdccddcccdcccccccddccccccccdccccccccccdccddcdcccdcccbcccccdccccccccccdccccccccccdbcccccccccccdcdccbccbccdccccccccccccccdcccdccdcddccccccccdcccbdcccccccbccccddccccccccccccccccbccdcdcccdcccccccccccccccccdcccddccccdccbccbccbccccccccccdccccdccdcccbdaagj`ef_aaedd]\dd][__a^f]]^le\dbj`fi_gbaece\ca`ebeib^lf\chmegZacbe_eebbagafhciabbfdfg]fekbi]\_[Yai]`ceada_db_maaca_daebachfe__ibdh_ea_Xjb`ai]gfgdfe_e]c]ldkd]hbdca]fad[igbdcbdceaWhakbWgaficbac_dfle_fmmi`edcgdcbhYgdaeibace^b_db\ecffkeae\feghfj[fh`ffd`^aaeh]^[]mdej__bZ`i^]c`^j]hjYdfifffce^`[hfcbafd]]`Yl`_ja]j`7^magiY^k[`af^cdc_c^ddg\Yefa[eabfdg_b]fYl`_f_lffdg\^\\bmcoc^\ifg\a]a_bcd`^idgi`eck]`_`\edhfz]fcd`aedcb[\hh_lYbm`tcaZZd`gPdga[hendd^gZ„agece_lijed`bfgmcZhdheefjgSdfib\hkdfVh_jbe_aluhbg^beeh`]dab_mdgfih]cdeecccdcdbccdccccccbccbdccccccdcddcdddcdcbcdbcdccccdccdccbcdcdcccdcccdcccbdccccdcccccccccccddccdcccdcccdccccdcbccccbddddccbdddcccdcdcdcdccddccddcbccddcedccbdddddccbcddbcccbdcdcbdccccddcdccdcbdccdcccdcdddcbdccdcccdcdddedcbccdbccbcdcbcdcdcdccdcdcedbcccdcdddccccbdbbcdeebcccbdbbdbbbdbdebbbbccdbbcccadbebcdeabcdcddbeebbdfcccbdcedcdcceeabccddccbaccadeeddcedbcabcbbdbddbcddfcadbccbcfcacdbbcccddabdcbbccccacbbccddcdcdbaccdbceedccccbccccccb`cdacdddccbddcddaccdcaccddcbdcdebdccdcccbaebbdbcccedcccddddabdcdcdebcbebbddddbcbcccccdcdcccccbcbccdccdbccddcccbccbcbccdbdccdcbcccddcccccccddccccbcccbcccccccbeccccccccdddccccddbcbcccdccddccdccdcdcdcccccbcccdcccccdcccdccccccccccccccbcdcbbdccdcdcccdbdcdbccdcdcdccbcccccdccdddcbccccbddccdbbccccccccdbccccccdcdcddcdcccdddcdccccccbccccccbdccd`bc`bdb`ebfagcbbcdadbccbbcdbbacacccbbfaedaecdccchaadfacgb`deccefe^eadbccbbbebddbbfcdedcdfcb`bdea`fbaeccdgbcbd_aeahccc`gcaabad`ccbc``edbadcbfb`ccdcdcacbdeb`bgbcbcaacdbbecgfddecdecgcdbdddccfbbbcbfbdbf`cdaded`cbdadcdic`dddgb`d_ecabdcdgaaeffebaca]facabbcdcaehedcccccccdccbcccccccccccdccccccdccccccccccccccccbccccccbcccccccccdccccccdccccdcccccccccccccccccccccccccccccbcdccedcccccccccccccccdcccdcccccdccbdccdccccccccccccccccbccccccccdccccccccdcccccccbccccccdcccccccccccccdccccccccdccccccccccbccdcccdcccccccccccccccccdcdcccdcccccdcccbcccdcccbdcccccccccccccccdccdcccccbcdccccccccdcccccbccccccccccccdcccbccccccccddcdcccdcdccdccccdccdddcdccbdddcccccccccdbddccccbccdccccdcccccccccccccccccccdccdccbdcccccdcccccdcccccccdcccccdcdcccccccccccdcccccdcccdcccccccdccccdddccccccccdcccccccccccbcdcccccccccdccccccdcccccdccbcccccdccccccbccccdccbbedcdddccccccccccccccbcccdccccbccccccccbcdbccccccccccdcccfccccbccccccdccccdbcdccccbcccccccbdbcccccccbdcdccddddbcccbcccdccccbdbccdcbcccdcccccccdcccccdcbccccccbccbbcccccdcdcdcccdccccbccccccccccccccddcccccccdqe`iafdbhJ^j]_mcfYnchfk\V_p^Yig^\YbiVi^df\m[_ccga[_}f^dc\egngfd`eodid]\bad]hh`[ibf^g`gbc_\kicae]bbdc^dfic_edTlmdQa`i_ghgbbkcbccalpZb\]dfkjchc`Wa_op_gm\]`gcf_bdlcZlc_]g^e_e`db_cadhZgW^iNfcerd\k]e`abefaaea]jdp^rg\s`aXbcdhdcUcaggr^Zf^iefnf^hbc]ebadb[^djf`dcecdeccddddaebdeccdfddbcccdcedcdcdcddabdcebdcbecdccbeebbddedcdfcdcbadccccabb`cbccceddddedcddbccbccddebccdcdcdcegbcccdcdbcdcbcccddcdcaebdccddccdebdcccdebcbbcdcdbddbeccbcddbcdcccccccdcdbddceddcbcddbcbdbdddbccddbcbdcdbccdeebbdcddcddccbcebeadecbcccbbaccfdcddddccccccccddcdcccccccccdccccccccccccccdccccccccccccdcccccccccccccccbccccccccccdbccccccbcccdcccccbcccccccccccccdcccdccdccccccccccccdcccdccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccdccccccccccddcddccbddcbcadaaacbbedecabc`bdadbebcdccdccbbcbaaecbccddeccddcbbbbcadcadbcacddaacddbddcbeccbbceddbdcdddccdcbdbbddddccbcacbbcbbbcbddcb`cbcccbcaedcdcbebccdcbgcgbcbcbcddgcebcddacbcbaccccbaccfbacbccbcaab`dddcdcbccdcccbdebdcdacccbadcdcacbbbccbecbbdcbfcabacdfcbaeccccccccccccccccccccccccccccccccccccccccdccccdcccccccccccccbccccccccccccddccccccccccccccccccccccccccccdccccccccbccdcccccccccccccccccccccccccdcccccccccdcdccdccccccccccccccccccccccccccccbccccccccdcccccccccccccccccccccdcccccdccccccccdccccccccccccccccccccccccc[bcedckha_hdbabac_eadge_d`ebd^d_camee^dleb``abea`^e`_bcZfg^gehbgfb]bYijdia`bgei``e_fe\cih]edafb]eZ^daedic^g_c^_Z^cgbcheheh[ijbae_c`fbfffdgfbcabbhefbaca`ekcfejeec`^fbecca`g_fjac`l_feb_gajbheh`efc^dcbg^iaf]e`ecedcceicefc_gh_ibgdecfcfefggdgifec_d`b`f_e]daadb`dccccccccccccdbccccccccccccccccccccccccdccdcddccccdccccccbcdccccccccdcccccccdcccbccbdcccccdcccdccccbcccccccccccccddcddccccbccccccccccccdcccccbccccccdcccbcbdcdcccccccccccccbdcccddcccccdccccccbcccccddccccccddccccccccccdccccccccddcccccccccccccccdcbccccccccdcbeieage`bic[ei`ca\hb]cdeb`^Zichcaigebd_a^fkchmcfahh__hef]\ff^\ghodbdi\bbbbbedZlbc^d`b`b`fdba]bjif^_c_ccfcdfbc\ca^abd_[ffjed_bgYegce`ef_a`gh`de__dbamaddcihbgbl_^hgdheg\`bcefaabfdd`kgl]Vhafe[dbejbia]`g[fde`cec`ebfaidd_geag^[akeg_g_ae_agaechbhegd[da^bcab^hdefcbbfcbebageeahbbebd`bc__b`dbdd^^fbcdadeje`d_gdbabagfbf][lca`cc`c_ababbbbcedbddd^iaab]\cd`acaaf[afgccbba`dhf_cdcbffbcdbfbhhdd^_hY``\ghjae`_fd_cbgdaa^facdbccbbbfb`debi`a\bbj`cebfdg`adb`jcceaejbgf\bc`e^deckf`c`decbeded_e\dicdg^eedcadedca]daae`bddbdei_fb`__g_ca\c\h\_hXc`l`pgjc`f`qeCbZeTageiaWjX\^j[^kbgour]adegoTdlixhm`bmflP^gq\dV^dilfeijaZUebVchagYgn_a_Yon^fbdijfee`fcod_bf]bd[__dU\OZf_g_\`_[gdeqa_^Vodeeceb_`balXg`Yeh^e\db`ealdgkdZb\\_dgamZ_ioaXcle[ak]]emqkW`e^\dVcpbaiaicWpebbdeYcdvWbUbfce_bhb]`ad_^gady[_^tXsct_eccccccccdcccccdcccccccccdccccccccbccccccccbcbbcccccbccccdccccccccccccccbcccccccbcccdcdcccbcccccdccccccccccccdccccccccccccccccccccccccccbcccdcccccccccccccbcccccccccccccccccdcccccccbccccccccccbccdccccccccccbccccbcccbcccccdcccccccccbcccbcccdcccccdccccccccccccbddcccdcbdbdaddbbcdcbbddcecddeacddcbccabacbdcddccc`dd`acbddbbdeebfbbdbccbcdbecaafbddcdcdbbccdcdccebdcacdaddcbdabcccdbcbdbeecbfbedcecbbabcbdcddcccaddedcdbbcbcccccdddbfbeccdecacba`acdccabcccdbbbccdcbcbbbgccbdcccdbdcdcbccd`bccc`bcdcfbbgbccbbcdecdcddcbfdadcbceahdb^Xf[_]^e^]iekehbccbphgd\\eb`^cc`c]deidg\d`[def\_e[df]ibck\c`d]^ake[n`]Tg]b_edlYgdheab]bi^fkTakhgfkf\`Yf``_`aga^cb`icdmfgqbmgfdc_h`hfnZ\d]g^ed^id\b`^dc_fbd__ff_dXj^lacfibhjck^cedadefg`a`afg`gc]l`c_dcd\d`haihbi_fiecdha[c`_c_bdfoei`ddbgchdcaf\iZddckdhdhlec``b`eaebcdhdeddddcdcbcbebdadff^ceadae`c`c`ccdffeed`fecehddb`edcca`cabhdcccfa_hcbdedbcadcebhhbabeacecaeebdbbcbb`debaa^gbecidaggdb`dcedaacafcbec`gedbcbdchddbbbcd_bad`cbecbab``debcebc`ba`bd`cccbgd`dagb`ddbcf`cacddaabecdfcdddebdbdcddcccc`dg`fee`bbcddcbe_cabdcccffcbcmf\`ayh`YY_gj_fpdWa]ujbgmY^a[__bjb_dd^RmWmXa\chj{bRqechjhj\e]kgWXb]Z_zc``dil`ef[^\^\iehdUdWjco[bdffTh`owke^[diX_de\^^_^`ljKggd_elX`f`ggbiZbdZmhm_U\k^Zr^`^neecYUa^hfjdi]]el\\glg^yerchbbeifali_mWbc^]]f[]wfcL_~XUVbv_jache\ei`cbXdfcfY`gZ^bYdg[b[^]iRX]^idcdbcccccdccccccbccdcddcccdcbcdcdcdccccccbcddcccdbcccdcccbccdcdddcdccccccceccccccccccccbcdccccccdcccccdccdcccccdbbdcbcccccbcdccdcccdccccbcccdccbcdcddcccccddcbcdccccbccdbcddddcccdbcccdcbcccdccccccccccdccccdcddcccccccccccccccccdcdccdcccdccccccdddccdccddccccccccccdcccdccccdcccdccccccccccddcccccccdcccccddcccccbcdbbcccccccccdbbccccccdccccdccdcccccccdcccdcccbcccccbccccccdccdcccbddcccccbccccccccccccbccccccccccccddcdcccccccccccddcccdbcccccccccccdccccccccccccccccbcccccccccccccccbbccccdddccddcbccccdccccdcbcccccdccccbbcbccdccccbbbccbccbcddbccdcccbcdccddcccdccdbdccbbccddcdcccccddcccccbccccccccdcdcdccddccdcccbcccccdccbbbdccccbcdccccbccbcbccddccbdccbbbccdbccccbbccccbbcccddccbdccccccbccccccdbdcccbdcdbbbbdccbccccdccbbdccccccdccccdccccbcccccccddcccccedcbdbbdcdbddccccdccccbcbccddebbcccbbeccccddcacccdcccdbdbbdecacdacdcbdccagbcdccbecccccaacdbacbdcbcccddbcdccbdecccccbbcbcbbaccddcccbadcbcecbcbccdedabceaddbbcddcccbccfcaabbcbbccbbcbaccdccabcccbccbbcecfcbcccbcbchcdbccbccacdcdcccdbbcccccdfdbcdbccccccbceebcccbcbedcacdddcbbbcaccbacbabedbdccccbcccbcccccccccdcdcccccccccccbccbdcccbcccccccccbcbccccccbcbbccccccbccdccbccbccbcbcccccccbcbccbccccbbccbbdbccbcdbcccccbccccccccccccccacccbccbcbcccccdbbcbcbccccbdcccbbcdccccccbccbcdccccbccccccccccbcccbcbcbccbbbcbdcccbcdccccccbcccccdbccccccbbcccccdccccbcdeafaebeeccecgcba`ccedbcfehdbfcbbc`cgacebcbaddfbdd_bafbaccdccbedcccbdedecbcbcceecddaeba`fdddfdcfa`af`ecb`ed_bcccbacd`bfcccag`bced_dcdeaabefcbbccbgccdcdc_bcdeeccbbedddecb`ec`caabbdeccde``ffafedddcebeecbgbefaccdddd`bbfdcaedddecdbdegaeeddb_ddbcagfbabacf_fccacccccccdddcdcdcccccddccccccccdcddcccccddccccdccccccdcccccdccdcdcdccdcccdddcdccccddcccccddccdceccdddccdccdcccecccdcccdccdcdcdccdcccbccddccdcccccdcdcdccccccbccbccccdcccbcddccbccddcccbcdcccccccdccccccccdcdcccccccbcccccccccddcbcccdccccccccccddcccebccccbddcccdcbdcccccebcddcdcecdccebdecdcebbbcccdcbbbdccbddcccbdbdbcdedbcbbccbcebdcbdbdbdbccdfccdbcdcdcbbdcccbabbccdccccddccdcacbccdcdbddbcdcbdcbcaccbcecbdcdcdcbcbcbccdceccccccccbccbbcdeccdbccdccdcdbccdccdcddc`ccddccbdccdcddedbdcdcbccbbbdccccccbccbbbbccccccebebbccdbcdcbddccccdcccccbcdbccccdccccccccbcccccdbbcccccbccbccdcccccbccccdcccccbcbccccbbcccccbccccbcccdccdbcccccbcddccccccbccecbbcdbccbbcdcccccccccdbcbdcccbcccdcccccccbccbbbcccccdcdcbddcbdcccccbcccccccccccccdccccccbbccccccccccbcbccdcccccbccbcccbccbbbcccdccbccccbcdbccdcccdccdccccccccccccccdcccccccdccbcdcbcccccccccdccccdccdccccccbcccdcccddddccccccdbdccccccbccccbcbddcdccccccdccdcdccbcbccdccccccdbccdcccdcbccdccbcccbbbcccbcdcbbbccdcccccbcdcccbccbcdbdccccdccddcccccccbdccdbcccccccdcdccccccccdcbcddcddbdccbccccccccccdbcccccdcbccbfebZa]j`_gbj__^g]\fe\^cbicagmgjja_`ecceg\fXkagbf]VVf^_ihfbed`djdY`dhk_g^^gdne_[_`jckjff[\eeha\abk\h_d`\]Xkgrkdedbkledd[cbgeaVhjdbdaeWgcYW^g\ecej_eeedp`i\g[defhadb^e\dg`bfe_c^]jic`jdbhcff]fec\]dbd]dal]^ikddhfaeag^[ak^h^ebindd]heZ_ahe`oig^eafcdbfbleZk_eee\c^g`ica_af^^bcbhgeja[eggeZ]V^a[Ze[sg[b`^e[e`QbYeh_hgredehSbm_eY`YmdhXjWem__addabhfeka^\aah_eY[kxd^geeba]b\b]gghfY^b`b^hgdoijboh[fd`^ZZmbffj\_lqcfXgbjrajpgndj_dgfflfhSiZ[[ahd`dbjjY`Zkg\ccbdb\cbihimZacghg_ic_]abQaib]pdfna`X^cecee^bcaScgbnminedhbfb`dZ`daec`dYVaeddccacdbccddbccdbcccecddcdbcdcccccdddcdcccdcccddccbcccdcbbcbcddbddcccdcbccddcccadeccbccbbcbadcbcbceccdecccebbdbdcbbbcdcddddddbccbcdcbccceccccccdbcdedcdccdcdcccccecdccbcbbccacdbdccddddccdcdccecccdccdbdbccbecddbcdcccdcccecccbacdcccbcccdbbadccbdaccddbdccedcccdccebdbdbccbcdcfbdbcacceddbdddabdedfeddddcdefccacccbcabcdcabbbdaeccdddbdddaccdbdecbfecddddcbbbecebdadccabcdceccdbcbddeccdccdccbedeecbceeecebcbcbdfcdccfcdbccecdbcbeccdbd`ceccbbbeedecbdbdcabbcecdecdbbddcacbbcdccdfccdddececccddbccdbbgbcfcd`cdbceacccebcccbcfao]dcp_YZcfgbShZn__P`cV[rk_i`eTgXnekeUcl]ddeceg_^bmjgX`edjk`]c_\\]ghbf_kchpifZbj\]eQcebdZ]keXl]foe^b]]lk]ccdYe`W^`hf\kfX`XZc^gmhbUv\iehf`j[][c]hbabX_N[_dqh^de[bg\ZYa^cfga]_Y^a[h`_lgbMiaVoWg[g[][g`lchbmbcfgmdmoe_]lePnqabMcbdbfgkecbaerbkc`kjddcfgl]kjch]jqmfjXhe`a_g`jV`lm`nj\\__p]df`bYYhbe_fc]ldb_fj\Xbafaa]cXaf^ijvbddnea]Sagj^[cgdacfabZd^Zeg\dbe]Yi]jjh[de^cgghdZgc_m`fbeojccha^ae_]ebgcZid`c]g\d]gh_Wabbiofc]p]ag`geinbg^[\Y_nfaiaag]akgdkbeiZ^jjlbWd^fcm[Tcbcd\jadgc`fdjqd__coljc_jdb^am]_Yc]a`ia`ahdddhbmchngccY_Wdedbccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccdcccccccccbccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccdccccccccdcccddcdcdccccccdccccdcccccccdcddccccccccccccdccdcccccccdddccccccccddccdcccccccddddcdccccddcdccccccdcdccccdcccccccddccccccdcccccccdccddcdcccccdccccdccdcbcccdcccdcbcdceccddccdccbccdcdcccccccccccccccdcccccccccdccbcdccccccddccccddcdcccccccccddccdddcccccccccdccbcbccccccccbcccddbdcaccddbccbcccccdcddccccdccccbccbcfcbcceccccccccdccccccbdcdbccbbccccdcccccbccbcdbbccddcccccccdcdcdcccdbccccbcccccccccdcdcdbccdccbbcccbcbcddddcccbbcdddbcdbdccdccddcbcddbcbcedcccbcdbbcdccdcddadccccccdcdbccccdcbcbbcbbccdbdccbcbccbcbccccbbc\df]\j`oj]`eafebjchgff`dm]ipfd^eW]becdhc\f__`aiib][_ee_^d^c_^beec_]fiegeefa`dXb[`bgd\bcfcbaaa[_gdidah[k`dceg^hagdda^^]cehd]^]eee_akiceg^fgbda\hbehigh\c_ffg`acb\h]bgd\k_a\Z^d_`fhcgfaebeadadcddifge_Zdk]agcndcaf`abjglf[adfecj`edeb^kfcggfa]dfbacbediedca\cf_fgcdccbcdcdedbacbcddccbddcccgcfccadcccabdbccdaccbbcbebddccddacdbbbfcbbdcccccacadcbdebcdcccccdcaccccccddbdbdbcdcebaadcbfccbdcddfdcbbcbcdbaeddadcbccdddbdcccbadbdbccdcdedcbbcccccfbbdebcddafccdcbdcdcbcbdbcceacbb`dccbbccdcdcbbdbcdcecfebbcdbbccccccdcbccbdccccdbcbcd`fcfd`bfbace`fdaadgi`a^beacgf```bffbeadebb`hhaed`dccceebc`fbbbef`cgadae`dbdfbgf`defbecadkfaacegjfaaef_eefb_b`hefbga`caiebcb`bbebe`dagc^bcbbfgbda_^hagbfeb_bahfabacaddda_ecdc`fbcbaibb`cfcbf`bbcbhfacbadbicdfc`abebedceadbbfjcbbbebabdbag^adb_bacdaefcebcaa`a`abbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddcccccccdccccccccccdcccccccccccccccccbccccccccccccccccccccccccccccccccccdccccdcccccccccccbccdcccccccdcccccccccccdccccccccccccccccccccccccccccccbdcccccccccccccccccccccccdcccccccccccccccccccccdccccccccccccccccbdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccdcccccccccccccccccccccccccccccccdcccccdccccccccccccdccccccccccccccccccccccdcccccdcccccccdccccccccccccccccccccccccccccccccccccdccccccccccccdcccccccdcccccccccccccccccccccccccccccccccdcccccccccccdccccccccccccccccccccdcdccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdccbdccdcbdcccccbccccdcccccbcccccdbcccccccbccbcccdcbcccbcdbdbdcbcccccccccccdbcccccccdccccbcccccccbccdddcccccddccdcccccccbcdccccdbcccccccbcdbccddcccccccccddcdccdddbbcbcddcdccddcccccccbdcbdcccbccdbcddcccccccccccdcdcccdcdccceccccccccccbcccccccccccccccddccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccbbcdceedbccccdcdcddccdfcedbbebcdbbdbdbcbbddcddcc`bcedcbadcdecbecbbdddccbdbdcdeccccddbcbeeecceeddfdeebecdcdccdbdcecbdecbddeddbdceaccecdcdc`dcdedbdbdfccdcbbcbeceecccededbeeedcdddbcdcbecedccbddddeecbcdccccde`cacbbcbdddbfbcaebedccadadabdddedceececdbdbedbcdcdddccdcdccddcddbcddddcccdbcddcddddcdcdccdcccdcdccccbddcdcdbccddcccdccddddcdcccccdcdedccddcddcdcdeecddccccddddcdcdcbdccddccdcdcdccdcdcccdcddcccccddccccccdcccccbccdccddcdccdddddccbccdccdcdbdcecdddcdddccddcdecdcdccdbdcdccbccddccdcdccdcccdcccddcccddcccdcccdccdccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccbccccdcccdccbcccccccccccdcccdcccccccccdccddcccccccdccccccccccccccccccccccccdccccccccccccccccccccdccccccbbcccccccdcccbcccbdcccdccdccdcccbcccccccccccccdccccccccccccccccccccccccccdcdcbcccccbccccccccccccccccccccccccccdcccdcccccccccccccbccccccccccccdcccccefgfeaa[difa[bbj[d^acghf`g`]edebiilaeeegk]dbc`gaiedcb^jcd]bcddonf^`dlgfa`ehb^def^`bfefcbj^g^\fib\bebefdj[de`be``ibfbgfdec_]kihVcdg_f_bd`ZdchefeaZc^fgfec_[bf\Xbgfih`]`^gbac\d]c\fhadhhc``eqgbddeW`ci_behgbdcni\dg`dffabd^_bcbci`]hj`bcdcbfhbYjf_^aYb`]hcdhb]ikgdccccccccccccccccccbcccccccccccccccccccccccdcccbccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccbbccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccdcccccccccccdc]`fdi[_caaei^ed_ceag]hccglfdaem\bija_le]cbgie^dfglb_a[]obafbcahaiegejbbhceijZdfjg_[higi[j``cd`fcaacgicbaef^bc]bf]cge_ec_d[^f]ge`eddje^dd`b`fb]`j]cfbodceda[h`^bc`eacjmggg^ajaeg`]bab^agd]_df`ce^fc`cnjajfbaeggcc`klZca`fc_abid^_\dah\fhcblc^dhacbacf_b_afhccdbecccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccbdcccccccccccccccccccccbcccccccccccccccccccccdbccddccccccccccccccccccdcccdccdcccccccccccccdccccccccccccccccccccdccccccccccdccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcdccccbdcccdcccccccccccdcccccccccccccccccdcccccccbcdcccccccccccccccccccccccccccccccccccccbccdccbccccbccccdcccccccccccccccccccccccccccdcdcccccbcccbccccccccbcbdccccccdcccccccdcccccccccccccccccccbcccccccccdcccccdcccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddcdccccccccddcdddccccccdddccdcddccccccdcdcdcccdcccdccccccdccccdcccddcdcccccccddcbccdccccccccccccdddcdccccdcdcccccdddccccccdcccccccccddccdcccccdccccdccccdccccdccdcdccddccdccccccccdcdccdddcccccddcccccccccccccccdccccdcccccddccccdcdcccdccccccdccddccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccbdcccccccdccdcccccdccccccbccccccccccccccccccecccccccccdccccccccccddccccdccccccccccccccccccccccccccdccbcccccccccbccccccccccccccccccccccdccccccccccbdccccdcccccddcccbcccccccccccdcccccccccccccccccccccccccccccccccccccccccccdcccccdcccccccccdcccccccccccdcdccccccccdccccecccccccdcccdccdddcccccdcdccccddccccdccccccbccddcdddccccdccbcdcdccdcdddcccccddccccddccdcddcccdddccccccdcccccccccdddddcdcdcccccccdccdcccdcccccdcccccddcddccccdccbdccccdcbcccdcccccddcddcbdcdcccddccccccdcccccdccdcbdccccdeccccdcdccccccccdcddccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcdcdcccccccccddcdccdcdcccccdcdccdccccdccdccbcdcccccdccdcbdcccdccdcddccddcdcdccdcdccdccccdccccccdcddccccdcdcdddbdcccccccccccddcddccdddcccccccccdcccccbccccddccccccdcddccdcccdccdcdcccdccdcccdcccccdcccdddcccdddddcccdddcccdcccccdccbcddccdcdddcdcddccddccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccdccccccccccdccccccccccccccccccccccdcccccccbccccdccccccccccdccccccbcccccccccddcccccccccccccccccccccccccccccccccccbcccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccdcccccccccbcccdccccbcbdbccccccccccccbcccccccccccccccccbccbbccccbbcccccccccccccccccdccccccbcdcccccccccccccccccccdcccccccccccccccccbcccccccccccbccccccccdcbcbcccccccccccccccccccccccccccccccccccdcccccccccccccccccccbcccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccdcdcccdcccdccdccccddcdddccdcccdccccccccccccccccccccccdcccccddccccccdcdddcdccdccdccddccdcccccccdccdccccccdcccdccccccdcccccdccccccccdccccdcccccccccccdcdccccdcddccccccccccccccbccccdcdccddcccccccddcccccccccdccdccccdccccccccccccccccdcddcccdcccccccdcccccccccbccceacdcbcdcccaddccdceccddcdcccdddcdbecdcdccdcbbbdccbdcdbdcdcddcdcdbdbbdccddcccbccdcdcccccccbfdccccddccacdddeccdcccddcdcddccccccbcdccdbddcdedecdcdcceceddcccccdcdcdccbbcddcddedbcbcbcddccccbddbdcccdbddecbddcccddcbcdecccbcdcddcdccccccccdcbcdcdcddcdccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccdccccbccccccccccccccccccccccccbcccccccccccdcccccccbcccccccccccccccccccbcccccccccccccccccccccccccdcccccccccccccccccccccccccccccdcccccccccdccccccccccdcccdcccccccccccccccccdccccdcdccccccccccccccccccccbcccdcccccccdcccccccccccdccccccccccdccdcccccccccccccdcbcccccccdccccccccccccccccccddccdccbcdccccccccccdcccbcccccbcbcccccccccccccccccccdcccdbcdccccccdccccccccbccccccccccccbccdbccccdcccdcdddcccdccccdcccccccbccccccccbccccccccccdccdcccdcdccccccccdcccdccccccdccdddccdccccccccbcddcccccbccccdccccccdcccccccccccbcdccdbccccccccccccdccccccccccccccccccccbcccccccccccccccccccccccccccccccdcccccccccccccccccccdcccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccdcccccccbccccccccdcccccccccccccccccccccccbcccccccccccccccccccccccbccccccccccccccccccccccccbccccccccccccccccccccccccccdccbccccccccccccccccccccbcccccdcccccccccccccccccccccbcccccddccccccccccccccccccccccccccccccccccdccccbcccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccbcccccccbccccccccbccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccbccccbcccccccccccbcccbccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccceZcchbgdbib`a]abcb_^gjblb^`ma\ao\__f_b_[bjccbaca]UchXgga_ifamdanf]el]efcbc]^cZdfd^``b\]phcchbcf`fbe\fae^dkjmcXaf^kgaiga`hh\bc`j`Whaeecd^ghbdeecY^bhe\i[c`nca\]bdd^gncgeblgbee]_be_jgfk^fb^Za\\df^a^aiadce`[igkbj\gidaga[dbb`kgbclek_p]ddchZh]ice\ade`dglgYfeRgi_ecdceecccddecdbdebbcbdbcedeecdddcbcddeccbdbccddecdbcddcdcedddccccbdeecccabcbccbdbdcdddccbddcdcccdcdccdccccddbbddeccccebebdfcceedcdcbbdcacbdcaddceecbbccdccbbbcdcdcddaceccccccdbccdccdccddddbbdccfdccbdcddddeccbddbcfcbddgccbcddeecbccdbecbfcccdbeedccdcbdccccecdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccddcccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccdccccdccccccccccddcddcdcdbcccdcdccccccccccccdcccccccccccccdccccdccbcccdccccdddcccccdcdddccccccccdccdcccdcccdccccccdcccccccbccccdcccddccccbcbddddccccccdcccbcbcdcccccdccccdccdccdccccccccccccccccccccdbccccccccbcccdcccccdcddcdcccccccccccccccccccdccccccccdccccdcccccccdcccdcccccccdcccccccccccbcdccdcccccccccdcbdcdccddcccccdcccccccccccddcdcdcbccbccdcccccccccccccccdccccccccdcccdccccccbccdccccdccccbcccccccdccdccccccccccdccdcccccccccccccdcdcdbcccdcccccdcdbcccccccccccccccdccccbcbccdccbcccccbdccccccccdbdbdcbddcdccbdbccbdccccdccccccddccdcccccccddccccddcdccccccccdcddccbcdcccccbccccbcbcceccddcdcccddcdccdcccddccddccddccdcccccccdcccbcccdcddcdcccccccdccdddccaccbcccccdccccdccdcccccdcccccdcccccbdcccdccbcdcdccbdbccdcbcdddcdcccbcccddcdcdccccccdcbccdcccdcccccccdccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccbdcccccccccccccdccccbccccdccccccccbccdcccccccccdcccdcccccdcccccdcdccccccccccdcccccccccccdccdccccccccddccccdcccccccccccccccccccccccccccdccccccccccbcccccdccccccccccccccccccdcccccccccccccccccccccccccccccbcccccddcccdcccccccccdddccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcdcccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccdccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccdccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccbcccccbbbcccccccbdcccccccccdccccbccccccccccccccccccccccccccccccccccccbccccccccccdcccccbcccccccccccbccccccccccccccccccccccbcccccdccccccccccccccccccccccccbccccccccccccccccccccbccccccccccccccccccccccccccccccccccdccdccccccddccddcdcedddbedddcdccccbedcbbddccecdbdcdcccddececddddccbcdbcdbceaedecdecdcbbeadbccccecddcccccddbccdddedcdcbbddccdaedfbdccbdedcbcbccbceddbbacdcddcdcdccccabbbcdddecccccdcdddbcebadcbeccbbcdedefcbddcdcdecdcbbebccbcbbcbccbccccdbeccdcbcecddbddddcdcecdbcedcbebddccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccdcdcddcccdccdcccccdcccdddccccdbcccdccccdccdccddddddcdddccccccdcdccccdcccdcdcccdcdcdcdcdcbccdcccccbdccccdcccccdcccccbddddcccccccccccdcccccdccdccccccccdccdccbccccdccccdcdccdcbcccccddcccdcdccccccccdcdddccccccccdcccccdcccdcccdcccccdccddcccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccdcccccccccbccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccdcccccbcccccbcccccccdbccdcccccccdcdccccdccdcbccdcccdcdccccccbccccccccccbcbbccdcccccdcccddccdbccdcdccccccccddccccdccdcccccccccccdddccddccbccdedccccccbcdcbccdcdcdcccdcccdbbcbcdbcdccdcdccdcccccccdcccbccddcccbbbccccdcdcbccdcdccccccccdccccbccccbccccdccdcdccccbccdcccccccccccdccccccccccccccccccccccdcccccccccccccdcbcdbccccccccccccccccccccccccccccccccccccccccccdcccccccccccbccdcccdcccccddccccccccccccccccccccdccccbdcccdccccccccccccbcccccdccccccccccccdcccdcccccccccddccccccccdcbcbcdcccbccccccccbdccccdccccccccccccccccccccfbccdcccbbcccccdcbcccbcccccccccccccccbdccccbccccccccbccccccbccbcccdcccccdccccdccccbcbcbcbcbcccbbccbcccccccbcdccbcbccccddcbccccccdbcccccccccccccbccbecccccccccccbcbdcdcbcbdcccdccccbbdccddccccccccbccceccccdcbcbcccccccccccbcccccdcccccbccccccccbccccccbdccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccbdcddcccccccccdccccccccccccccdccccccccdcccccddcbbccccccccddcccccccddccdccccccccccccbdcdddcccccccbccccbdccccccdccccccccccccbccccccccccccdcccdcccdccccccbcccbcbcccccbccccccccccccdcdcccccccccdcccccccccccccccccccccccccccccccccccccccccbcdccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccdcbdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccdcdcccccccccccccccccccccccccccccccdccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccdccccccccccdcccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccdcccccdcccdcccdccbcccccccccccccccdccccccbccccccdccccdcccdcddccccdcbccccccccccccccccccdccccccdcccdcccccccccdccccccccccccccccccccccdcdcdcccdcccccccccdccccccdccccccccccccccccccccdcccccccccbccccccccccccccccccccccdcccccdccccccccccccccccccccccdccccccccccccccccdcccccccccbdcdbcceccbcdcbdcdccbccccccdccbcbccbccdeccdcddccccccccecccccccdcccbdccebcbcddcdccbbddccbcccdccccccccbccdcbcdccccccdcccccbcdccdbdddccbccccdccccdcdccdccccecdccccccccecccccccbcdccccdccbdcbccdcdccdcbcccdccccccdccccccdccbcdcdcccbbdcdccccbdbdccddccccddbd]ekmg\``]_]_cY\^d^^mfe]cgjk\_ng]`d^b`ckgidghf__dki`lhhgdcfap^fdaPe[ad[jfWbedid`mijegb`_Y`dg^dYa^ffbi_cdbZid]e^fceeo_^hc_fWahde\baiadbhYjc`ii_gaZaa^le`dij_bj`d_a^nd\d]_ia`dae]beef\l^debbh`befjgeimhf]f__ggdcgf`eb]fcface`bk^agadYefd\`fdpcecc^becafk`aXibZ_c`cdddcccdccccccccbdcdcddccccdccceccdccccdcdbcccdccccddddbccdccdbccbccbcdccccccccccccccccdcdcccddcccccccdcddccccccccccccdddcbcccccbcbcccccdbdccbccdccccccbdcccccdccccdcddcddcbcbbdcdcccdcccdcccceccdcddbcdcddcdcccccccdccdcdcdcccbdcccccccccdcdcccdcdcdcbcddccccccccccccccccdcccccccccccccdcccccdccdcccccccccccccccdcccccccccccccdccccdcccccccccccdccccccccccccdcccccdcccccccccccccdcdcdccccccccccccccccdcccccccdccccccccccccccccccccccccdccccccccccccccccccccccccccccccdcccccbdccccccccdccccccccccccccccccdccccdcccccbcccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbceebadce`dbfdbdbdbcbdbcfeefeccdddbbbcdfbdccebccddbddfbbbdcedcedccfddbcdccbdbcededbdhccedbfbcbbccbeceabdcdadfddhcbecddcfbddbdedbdabfadccbcebdbdbdfbdcbddec`dbcdeebbecececdcadbcfcccabcccdddddddbcdddcddbdbdddf`facbfddeaccd_ddgeedccccdcafecbdegcccd^cbeeddecde`cccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdddbccdedcccccdccdceccbdddcecdebccddbccddccdcdcccccccdbabcdeedddcbdcddccdbccddcdbcdcdccceccdccccdcdcddcebdcdcdcbdcedecddddcddccefbdddeccdcdcccdceededddcbdbdccecdccccbedccdccbddceceddccbddcccddcdccbcdbbccccddccbddcccbddccdddcddbcddddcccbccdcccccbdaddcdccccaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccdccccccccccccccccccdcccccccccccccccccccccccccccccccccccbcddcdccccccccdccccccccccccccccccccccccccccccccddccccdbcccccccccccccbccccccccccccdcbccccccccbcccdcdccccccccccccccccccccccccccccbcccccccccbcdccccbdcccccccccccccccccccccdccbcccccccccccccccccdccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdcddcbcdccbccccccccccddccccdddcddccddccccccdcdccdddcbccdccccccccbccccbcbccccbccccccdcbddcddcccdbcccccdbdcdbccbdddbbccdcccccdccccccccddccccccbccccccdcccccbbccdccbdcddcdcccccbcbccbcccccccbcdcccccccccddddcccccdcdcccccdcdbcdcdccccdbcdcdcdccccccccccbdccccdcdbdbZa]b^ed`^jef`d\c[`i[^bai^aVmZWbgXc_]fi`ig`nc[cdjsWp^ZdbbnmicdXb`i^e]hgacf^\dbdaaXXYigbd`_aZfoic]ke`ahbgc\cblagacdfUd^fi^eg]g]_`ccicbhdhdgZ_aafcbhjhjd\adae]`djniaiabajtffck\^lkOebhcb`hbf\b]cni\cjYibc\pk`jabehgi_ggeckf\]kf_dbic_[he`bb`fecdedkafed^caghgj`[bccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccheacch`ed_[jhbad``fa`b_gdceb`ccaidbdfhedlcad^bg[fdgc`fdcdZdddcaiecgif__eceeddf_b_bjacd_d^ccad_ifdf^`d_f`_fg^b^\jh[cacafggccc_c_hg_ej^da^_bgba^cggn\dl]ia`jicZbd^dia`cc_e^^dcf`dfkhccb`a]ffcbdncbea`g_^`beddabageifbgf]dcgdg^fmde^\ccbhe_jab\dfdfgdecb`fggodel_ddccccccccccdcccccccccdccccdcdccccdccdccccdcdccccccdccccccccccccccccccddcdccdccccccccdcccccccdccccccccccccccbddcccccccdcccccccddcccdccccccccccccccccdcccccccccccccddccccdcdcdccccccccccdccccccccdcccccbdccdccccccccccccccccccccdcccccdddccccccccccdccccccccccddccccccbccccdcccccdccbccccccccccdccccccdcccbcccccdccbcccccbcccccccbccccccccccdccccbcbccccccccccdccccccbcbcccccbdcccdcccdccccbcbccccccdbcccdcccccbcccbcdcccccdccdccccccccccccddcbcccccccdcccbccbcccccccccccdccccccccccccdcccbcdccbcccccccccccccccbcbcccccccddccccbccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcdccccccccccccddccdcccccccccccccccccdccccdccccccccccccccccccccccccccccccccccddcccccccccccdddccccccdccdcccdccccdcccccccdcccccccccccccdccdccccddcccccccccccccccccdcdcccdccdccccccccdcccdcccccccccccccccccccdcccdddcccdccccdccccccdcdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddbdacbdcccddccedcdcbcbdbc`dbdccccaeddcbcedbbfbbbddcddecabdcbccccfddbdddddccdcdcbbeccbdbbccdccdbeedcbccdbbcdcdcebcdbbcccbeecdbcabdcccbdccccceeccabcccddbeebecdcddccdbbccdcccacacecdecddccbbbcddccccddbcdcdbcddfcccddbcccbdbbcddddbbbdccdde`dcaddcddcacdfecccdccbbfe^_bbkad_kch_mifbadg]dZh\^`f^]c_ageedbe]f`cj^ead]hiahe`_f]bh[cch]fdf]cjeditfe[dke^`^cfig`bdhhamol_cflha`c^`dcW^ada_fa[jeag`X_bb^c^_d]ne`iYw_`_`Oabgec[fi[gafdjgcliqYj`^iaagblcg^`l^fi^l]hbabddbe]afhagcnfd`mk`bdhdfehgchi_arfhcgicgadecc^i_b_clac\[cfk`a_gabd^bdZ_de^dcbg[ckb_dedg^bfbmf[jagbfdagaalb`ah]aa`ebe[agb[h[b]eheZlhd[j^nY^d\^`fZ[_f`aigei\begeagfjcbg^`hddccmfdeahf[hbbedf__bgZ^becm_`bcY`\daj_^_bd_oq_ef_fec_a[db`i_c`gglag]_e`cZaakcaW\cadhbZdabaghjhd`hb`ei`__c`had\^`e[g`g]_Zhkacejigb^j\Zd_ljaeadehfbbgd_elcak\hb__\iababZigd`ZefffYjlb\hcbijZb`diQ^\agZcamhc]g_bd^aphhcpb_abWaaf\dh_``f_e]fo[]acdfYnd\ahcaabbd\anhfbii`X^gf`WeVf`hdbdf[febghh`a^gahfljkdapb]mfeWcbk`dajddht_fdZbn`hWbm]lab]ei]gXji`boa^XUf^fcdgcd`e]gfj^_djdd\[b]bh\bdmnblh_lnbc`ecc^``ciffcdb^g]akfhccf`cieb_c_egonQodcZdk_Zafak\ec]beabe_ef^hcYflbZegah_me[pjcdje_g_ffba]kjkcjg_`ebehee^c\^ee_eh^fYcbhg^gh`_``doj^c^bi^^__^fTe`ee]ka_hghacnY\_e\dmfc^bab[^bljcgolldc[jfac`^iek_gfaZbgfcai^Y_iaieW[edjd^cib_]`Wiaggbbf[f`ab_^eV]^e]gZbjWkcjrhZadagd]i^jeboZhjebbg]dbbf]aajcio_^modaa[hhuaddak\acdihj_ehXe_dcbdia[kZf^TodbeYk`mdrWfVdmZ^hkabnXbbgfa`^fnmjag^V\^ja[]aYbcg_iegkUi^[[g_lgh^f_c`V\^gf^`le\Wfe`Yhmfha`bhX]\Zpkacgkrh\ig_oa]cccgabiV[e_hgfaX_a\d[dl\a`^g`mgZd`oak_^n]e_`eb[\`d^ag\ThahZ[bj[ee^qg`b\UbfcenejdXdUSicjhbmc^djc`ccegadfece`faedbcbc`dehdedc^beddefbfeedb`ffdbbegeegg`geb`g^fagcab`i``fgbab]bbd_ahkaccd^ccbbecafachb_gfcfaecebeeddfcabf`fgbgebfae`bceeacb`ab_gdffced_``cccd__e^cebaefacfadgbhdge`cci`gdbee`fa^ebecgfdbcb`gcabbecfdbf_cdddc^d_cflaic`bfabaafib`ce]a_d_ddeaahc_chbagbchcagcddcbccdbdcbedbcdbcecdcccbddcbcdbeddccddeccddbcdbbccdbbcbccccbccccddcbcdcbecccccbdcdddddabbdcdcbbbccbedecbcddedfdcdecbdbccabbaddddcbdcbddcccbcbcceccbbbabecddcdcbcbdcbcdecccebececedbdbdaccecbbbcccbddccccacdceebdcbbcbbdeccbbddbdacccdbccadcacdcdbbdccdccddccdbe^bdhldiV_fg\gnpnkfe\wbbcicZccZieVbch`dWih``]fWea[\fgRfpeSZkg`c[idfb_kee_\_ecjgi\e`c^_]jikggbdfbhb_]fac`iZe\b_l^oaceekn`afS`ghh^bZUZlbR_gcmhclgi`bd^knhef[dihc[ejegWkgghfo\[]ip`_gi`UofaidjV^dmnch`Xch\il`ceddi\`ccbf_h_caj]Recc^dbgeg_KgCa]cdaWfiddffem`_]]lfYZskmehb`h^cfe`X_cqfaiaddgehfce]cd_lfhee^ggZ_ajgckV`g`akjWcZejfl^_c]k^ac_j^Yaeecef`elgaf`d`dge^aaZ_ckZe]he_i^]_bddg]jffd_hdgXf`legcah\]dfdgdiZed_kg`acdcaeWg]c]dgibcZd\gfb__\agcccjlRfaZccnki_^d`kefdabbdhbXjenmkbd]gdbbaciee^dhfjdqfi`lcbWUe_fVba^fo\aid]h^bZqbfYfddbaaabb`afacdec``de``accfde`e_fe`feabdcdeaebbgeeedahe_haeecd_bbe`dbdecbfcfadecaf`dccaa^afdacbafbddacbdac^ccccac`bcdd`fbc^ccdde`eca^bcafadbbacedddcbacbfdefdbbdhbdacccdbab`e_bedbadeaccdebeadceabbbedbecacaeecadedabddjdgbace`aedhaceceadf``dcdaddecaidbadb`bcb\^f`hb_U`_dgiaidXg][hWf^^fZep`dZfbXhj]hcegkcec^ghjj\fb_\_dV]\]ffedfcneci`aeigf\b^eacbiaZ\b`afWdghbi`]cghdfapea\ag_f^gg]bddg[a]_gc`eji_d^^\c]Zkcd]a`e`gg]j^`lclff^WeW_`Zkdehebf]_c\gbfXaf]]henghYbecgh\ijboi_g[a^a`^nddmk`e^\]fi\gb_gajb_pc`gjadnagggdcljb[`i]]Yf`dbbcYd[h^]cN]hdgadh`nWfdvbfk]bg_bU_\ej^_\Z[mmbedfghh\bW^oj[ehedl`WfbdehjcY_^fhkeh_kZchegXb^Yjh[S_fhdf`Xd[f]l[`ggc_cebcuocakjqi_k_bda^pdd^balZ`cgYga`o^dhjhca]e_jc_e\kbfe\`ic`Zc[]hbbXaahaj_gfpg[ofhdbYbcbYpdd\maacj`daknVWYko_hl`o_^r_bac[fneadjecfd`ibf[h`V^nbbejf_gdpb``cl``_]f^cmhde`cmfgibejfa\a_hh_egi]_dgld^hccjdabcadge`ahada`dbiag`g]]a^eaddbde^__cff^d^deh^gg[kfcdee`ljeffafbec\baeaabbdgdja_ecbfgedhba_ddfb``^\be_ke_fcdeech_i`blcbbd[bf[jqicddgdgb`Zcdaaddcdfd^^d_^cllaahlk`cafcje`gbbdcefg_bkfdfaccfhbacbaeccc`da^eeeccc`dccbaeabbabdbdfcdcddebde`bcgdcfbcedcdbb`cdceddcdafbbddabbccecdcaea`dbacc_dcadadda`abade`ecbcde`bcdccbdac`eedbccceeedccccceaagbdcacdebdbecefdbecbd`_bdf`gcf_bcdcabac^bcdbedebbceebcebbcbbcfcbdecddfbcb`bddbdfcbae`adeccbcdbbcdbddcededcaaeeeab_cabcbccbeabcXj`bc]i]e`]jhY\[`aq]_lhddmihgfajahbdf_o]hle]]\ed^baa\X\[`[babcbpaiY]X^facboca`]gYc^_^i^qkYh`^`cdbe[mfjbhckbch]`k^`li[ddg`nW\enggeia[`edlkfda]lZkcff_npdkib]leY]^`ed_egra^[jea`cla]adUmWahb`qj]\d]mpekhdahSaac\fj]gii^_hpffTZb[j^ZZhe]sf`eaj\bgj^`en[]Xgcjkdh`cc`ccbcbbced_dedefbdfbaccabdcccdedaeecdcfdbbcacbcdagceecbbcdcbdcc`cfdcbacedeedcdaeccdecdbddb`dccabeadcbhbdbdcdddabbfdaedbeddcedcebbfaddfabdeddccbdccaadc`bddecdebceeebabbdebceeeedfcfdcbbgdbcddecbbbcdecdcebcbb`bacfedbbddcbebceddbebcdcccfcebbdcdddb_ebbeeccecbdcd[cgZpa\ie^ebekak_bb^cgob^dckefcR]`lgZk\dbh`jabc]]cXdjdhjac]cdflej^`_cgcd_fe\fdikrddmfdemhefadb`c^_]]egek`dZb`\cjhWcZdge`bc_cgajef]]ifa`dchd][]ecfrc`bb\fhejedc^`\ccil^bajdhZelb`]e^d`ccfUjfg\a_Z_lc_egX`cafhcdkWaeWk\f]c]l`gYbc[\ecfab`ehe\`ngahegYeh`acn`fk_ffhbbcccbbcccccbcbccccbcccccbccbcdbbdcdcbdccccbddccccccbcbccccbcccbccccbccdddbcdccccccddbbcccbccbcbcdcccccbcbccbcbccccbdccccbdcdcccbcdcccccdcccbccbcbdccbbbeccccbcccbbcbdcbcccbcccbcbcddbcdccccbdcccccccccbcccbccccccccbccccccbcbccdcbcccdcddcccdccbcdbccdcccdbcccb_WkNi[Tbdda^gm`gdb[d`Vbghc^obWa\m_ciVdiWbhZ[]MkdagehkNjfXhZi_SVke[Zbgbdcgmh^_if\`pV]^kRYUadjqojp_h]]f`e`kf_bhe]_T^`gheZgSbZUj[mdaiNnYnkhg^X\eb`\hrjpPekinghdieYk\\q\ida^gu]kX^mig\obcFf^ckfnk`dRZvejl]kegdocXgfR]f^]a[etZo]dYrjUl[hr`da[j`]ijebh_lhecauwbncncYegdcdaeabfcdc`fa_ddcadb`cebcfgbdeeefc_^bbbfbd^b`abbfehbdbehbbfgcaabcbd`baaceb``cfdddbd`cacd`dga`abh`bbeaaee^aadabbc_`cebbebcbafbcbede_bbdedfdc_cdceha`eefeebcadba_abcbeadddcec_bcafcd^ccabecbiccbbag`addc`dcbceadadb^b^gdifbb`cdcdcfdadcccdaecbfc`cbadbcdcbabcaffcccbccddbbccccccbcccdbcddcbcbcbcbccccbcccbadbcbdbcccccbbcbcddccccccccbcccbcbccbdccdbbcccccbcccbbbcbbccbcccbcccbcdcbdbdcdbcdccccccbbcccccccdbcccbccccbbccbacccbcbcbccbaaacddcbccecdbccbcddccbdcbdccccddbbbddccdccbdcdabcccccbcbcdccdcccdcccbbcccccccbbcdbccabcbccccdcdccccccccccdccecdddeccddcbdcccccccdcdccacbccbcdbcbccbcbdcccdcadcccdbcdbccdbadbcbbccccbccbcccbbcbccbcccdcccccbdbbcccedddbbcecdecddddccdcbecbcdccccdccbcbbbcdcaedccbbdbbcdccbbdbdbcdbdccddbdbcccccdbccccdccbbcbcbcbcccdbcdcddcabcdccdbbccdcbbccbcbbebbbcbcccccdeg\^e]`jY[kkmgim`^fo_gb_[YqSe`Zkshk`kY`jcji^cbbSgfjcZjhjhcZhbb^_ggh]gjeo]bbj\hf[b[ee\hcdddd^ddjf]rbgghjiiTfinamj[ldrcbj[[Z[banh^ipYea_[egehaacoj^k]]befgJcddjY_k]^^Xoekjg`al\dbf\epXdemee[_bYe^iZadjckjblbg\dgS^djZidi]cdaikoYk_U][\bNcikbaecjdf^^fwb]_`h^iiri[mlhggiadfkbk^l^```ie_eabg^bja]_c`_bf\bb]ghanf^ndabhic`jeh`Zgcegeedeg][c`fi]babibgca_de`aa`eahdeaXhe[cdigdhaa`cgb\f[ee_dgcaak^d_ce`b]aedaefcjdbcfickcbgfjfae^aceai_dcekbd^fgm`bgcdjlgcchcaededckhfi^_ddab_eb`[i`e^lcceeb`Zc`^[e^ao`ebeddf`b[laegae`ee^c`[ddb^dee^g`^hkbb_`hdb`ujmcnbn]b_hZZY_dcjjWajfep\pblhe[]`ifjWi]edfn_a\_c_dm`^adefZfed`hif^ed]na_g]o[g^]a]]vcjb\bdpkVdfeg`Z`e_ada`fflfSXdUjhk^lhib^bi_efh^d]`Vlddap^^_icSb`\ebf_[aVhVddooaf\\i^^mfcffjh^q[Z_fh`fnbn[]ga[e`]c`g^bgeeZejoedZ[Wl`ecca_h^bgmWdck_W^hd_]aav^tWgcggcejddgei``ik_ef^_bddeiaaci^aahkcacgp`bgid[ia_g^a]^dge^ebeafa]ahbkmi`g^e_c[YleXbc_d`alZj[Vd^_Zgmc`ij^gcf]eVn`[_omWZb^[ebmf`gae`^gWqdb[fahj]dReieZsZendh^_\_bYd^elj^i]W\_f^^`q`icWa^\icZejhakf[]obffce]eZ\`b`a_bWbiibhgX`ehd[gd_gec_g\][`gtl`_g[]^_\\a[WZjbddafd]Yd[a]fia^`hbadea\ccppc`bfg_fe[g\b]fgi`dgg`eflYg_aaac_a_nl[medhgbfc`dd`^j__djg]fi]a`\offgk\bkeabgc`]hgeba]haecefjbaddcgldkgZcdgcfd`hhe`^ife^ba_[gagb]a_`c[d[f\d`]df`f\a^bhd_akcng]eiccdgaa^fghgjf\\fh_a^fg`icf^dea_beei^]ef^h\]cedec^]eaX]e]``fbddf^^d\eZ`bl_`^g^cdccddccccdcdccccbddccbcccdcdccbddcccccdccdcccdccdcbcdcccdcccccccbcccdccdccccddccddcdcccccdccdccccccdcccbcdccccbcdcccbcdddccccdcccccbccccccbcdccccccddccccbcccdcccccddcdcddcccccccccdcdccdccdddcdcccccdcdccccdccddbbdcccdcccdcddeccdcccccccbccddccddcccccccccccceb`mcafs\falrfk_ka]cbhm\^bYgdXdhbdacuaZU\nZkGhg[omk[feil\`dk`fnnhjcdSmei^TcZlgqoep[]`^cq]cXaY|dV^gddqa_c{d`\^ccek^dafVmcfe`mhhqm`\U[gifdeaekq^kW\dp]}p`boh`ccjbhcsoSrS[kc^]LYg\bbaWdX\^Yabl^nkoTjemd_chX^j\nc`cYbe`RfuT`XX_Y^edb[]^pcZbf^_d]fe_ZdfYjmZdkOb\bm]Tf]l]c`jecfe`mfhdb\ci]bafbebb]fmdWcaWghh_mcghadpad^eY]_gfeaa]W[cif`p`g^c[bid]hkf_cc`bigad`_hgab_jchcfgfki`fdddgb`Vfdd^_i`]jbldbc^i]gi^kdba`jiYbf^eaMbbebbfdeafgeckg`a_^bac_fgeedj\dcaff`d_l`feegf\k`Yi`eh[cfg`c]_deb\rd^gaf[b]ieai`V__bidbhmfdadbaj`l\k_egk``fck`fb_dbjl_afdfcpeX_m^acdaj^\Uc]f`e_bjefihdiddee^dc\k_]daffeVg[b]^gkjhiZb^`bfchbj`Yaedl]beel^ee^ceZmgjb_eekblbf_\^[ad]f[dgbYb`k^Z`eff]h_bbegi^gWdhee]ackr]dbflcgVgiVbdae`iid_c_egh_ede`i]gd]d_as\i^af_^jia`bfgd^a]dghoh_jabb_ba_`]ejYgaei]ghfeeaa`eh]hf`[fel]l\eglfdaekZc`c]ijd`_[beVgddbemeafahd[ydgibbX^gc`a]ahie`fd\dgiqccdoWaffdc[`cbha^fgeeb`gkdfcbilaac]fcid^[bcjcd`Za\e[_icjldbYcrbci`f]jceclhc^_`foff`XaoeihfZb_Yg`__```bag_e]cdOgbddhgb`f^]a]_akaffi_dYeagX[dkge_g`ad`dekcg]c^ddfagfZm\fb`[hcc`_d`ddici_]dg[gda[ej\j`fcZ_d`eaceajhZbai^dfb`bbcif`Zaajbhea^accbgh_ka`e_ah\Zb_`j\ag_^f]ecf`a__becccef[`fgf_ajdgc^cccef``e]_iiegad_`b\akgbalifachbfgabhiZdaacd^hcfb`Zfebb^abc]]bfgdd[a]i\f`[cfgchih_gdc`e`m\bddcgkbdgbfccsd_^gaZ^[fdagi^^]`\ff^adgef`^cg\a^a_egc^bcihh[`ee`_eg`]e`Zbc_cdfj^dg\ccdccddcacdbdbdceccbdccccbbcdbbbcbbcccdccdcccccbbcccbacccaacbdaccbcccccccdcbbecbcdcbdcdcccbbccbccbdbcbccccbdecdddcddddcdddbccbbbcdccdcccdcbbecddddccbdcdaeccaddcdecdabbccbdbebccddcdccbcdccadcdcccbbbadccddcedcccdccdcbcabcebcccecebbcdccbccebddbecbaccdbbccbbcaafdc\ea`he^c]cmdb]cebb]fga]cbefddacaabcddb__af_a`a`eb`jeggb]ffabbcbegdelafcf^cebddddaabdc_beeeaf^cfg[gbfbgegdc\_c`dff_bfceleidebfh\eec`caedbbffcfdegbh`cj_hfddbac_ce`__bff`h_cddaee`da_c\_bbc`icecfcddee`e]`^aae`bhe_eededgeffcaec`ai_eca`^]ceehfdbdfbefahha__deccccbbcccccccdcccccbcccccccccccccccccccccccccbcbbccccccccccccccccccccccccccccdccccccbcccbccccccccccccccccccccccccccbcccccccccccccccccbcccccccccccccccbccdcccbdcccccccccccccdccdcccccdccccccccccbcccccccccccccccccccccccccccdcccccccccccdccccccccccccccccccccccccgdmgf\jodhbd_Wdeddebcjbbjbg^bfaefei]cdX^Zddg^ehgfagc]ndMk^Xiba`f`]gjbagc[eib^egVdbggecbdfeaiddcYf[a^bbge`cja]d`_c\cefebecgek`hafaiiS^`dee[`ibXaahhde`agaicg^m_ckahcZpklda^ebgfbfeiSbdj_a^\ac_ldom`cZZef]^ff`^c_]lZbfddgbgbekbkbbafega\ghaar_e`cboYg^`_f]_caii`^cbccbcccccbdccbccbcbccbdbcbcdbcdccacdcdbcbbccbccdcbccbddcccdccbcbdbdcbbbccbbcbcdcdcbbdccbdacccbcccbdcdbbdcdbccccdccccccccdcccdbcbccdbccdcbbbbbbdcccdcdccbdcbdcbccdccccbcdbddcccccccbcbdcbccbbddccccccbcdcccdccbcccaccbdccbcddccccccbcccdcbcdedccbcbcbbcccdbccccdccccccccccccccccccccccccccdccccccccccccccccccddccbcccccdbcccccccccccccccdcccccccccccddcccdccccccdccccbcccccccccccccbccccccccccccbccccccdccccbccccccccccccdcccdccccccccccccccdccccccccccccccccccdcccccdccddcccbdcccccdcbcccccccccccbcccdccccccccccccccccccdcccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccdccccccccbccccccccccccccccdbcccccccccccccccccccdcccdcccccccccccccccccccccccccccccccccccccccdcccccdccccccccccccccccccccccccccccdcccdcccccdeebbedebbccdbde`cgdbbbedbbdbadececbdab`bcdcdccddcbbcbcbcdaecbdbcccddbgceabcbdcbcacacdecbccecbadbacbccbebddgdeaebcbcddcbddcadbecbdbdbcabeabcccebca`dcdbebdacccdbddcbdbdccadcbcddbbdbecddccebcbacedacaefddbeddbbddbccbdcddfcdcbcbdddddbbacbdaddbdbceaacdcbaccccdcccdccccccdcccccdcccdccdcdddcdccddcccdccccdcccdcccccccccccccccdccccdccccccbccddccdcbcccccccccccccccccccdccbcccccdcdccccccccccccccccdccbccccccccccddccbccccccccccccdccccccbcccccccccccccccccccccccccdccccdcccccdcbdccccdcdcdccccdcccccbcdcddccccccdccccccccc\Yj`teb][`ihj\uQTsajl^„\hm>aoT^oheYN_R`O\]gXWAeN‚qUccUshAZU]HayUpXav`gelZ8K_Y\fZi^XqrP]wcTR_Kv`WKcL_eV`me`i>]jLcf:]gWwb\`UmaeiV\_lvPdZooTzVtjXKKfMkhYobKz3tiZ`_hqNls]wdlkuMuYWFViGwWgvffjjan\ZlooM[UkXZtbe=fU?€eVipp[j]ylGnYghBPtWe4cqrk`}Med_\Vr}]PNZW@jc]Zycccddccccccccdcccdddccdcdddddddccdccdccddcccccdcccccdcccccccccccccccccdcdcccccbcddcdccccccdcdddcdcccdcccccccccdcccdcdcccdcccddcccbcddccdccccccdccdccdcccccccbccccdcdcdddcccbcccccdcccccdcdcdcddccccccccbddcdddcddcbbdcccdccbcdccbcddcdcccddcddcccdcccdbbccccccdcid^feebdYZeo_X^gee_`cedb`_f`h[Xmeb^ca_a^bed`icc[`ccmceg[kebf^aa\ac``Y^ab^cZahkle_maci_c[]ab`iakXm[n_abd`pb]jjbbeeddgfeahdgkagel]^eg[`_cabqe`eggcig^b[gc_ed[hchcdcaYdgbf_ba`ackbeacjg^d_dli\oadgl^ia\bcdff`_afigfgWeibd]ggdXdif\feb`[dbeh`ddfebc[`ia`Xfh_jW`Y\`_\bdbdbdcbcccccceccdccccacdbcbbccccedcdbcdccccdddbdeddbddbcccdcdbccdbccccecebccdccdcdbcdcbbdccccabcdacdcccbcccccdcbbccdcddcbccacbcdeccedcbbccdbbccdfcbbdbdebceecdccbccbdcdccdeadcbcddcccdccccbbcbccccdcbebccdbbcddcccebbbcdddecccacbbbbbcccbbdcbccdcceddbbbcbdbccdqibghfahcSZ`j`\ea`je^jbebeecZbidmnocl[e_jee_VibZcUgaZ]jfg^`di]csedm_\c\kd_ahUl_eWblkXcZcg`cege`kc_cnlhlf^bbcja^`bd`eddcdgee^ec[amg`fce\ebdfa\^chdjYf_fg``h^hf_be_e\`af^afdaceloaak_ebbZdafgj`egjaZ``jagee\`\dbig]\c\W\d[k]l]e\af[jkcb^_^i^f_\occ]e`geUbdipkckdab`cbcccccdbec`haebfbeegacedbfdd`_cbdfeefccdfbc]d_bafc_f_ha`a`fceeeabadf`fh_dejbeabbdefbb`dfa`eacibcbdbddbdecb`haabgcb`ebdgfeafcd`g]degcdddedaaddbcaea`b]fcdedcbdcdaicebccbcebbabdeidd`cebbcc_dddgdcciddb`e_aaabcbcdcdc_cddfcd_dfeaa``ciccfb``acd`gc`dbbacdedceac_bcbccccccbcccbcbcbdccdcbdccdbcccccbcddccbccccdcccccdbccacccdbcccbbdcdccbccdccbbbcccccccccdccdcdccdcccbdcbddcccccccddcddbccccbcdccdccccbccbccdcccccccdccdccccdcccccccccdbdccdcdcccccdbccccccbcccdcccccccddddccccbbbddccdccccddccbcbdcccdcccdcdcdcccdcccbbdccdecbcc`]h]qcf`X_]afdbhgdcace_bcjgc`ahahn`i_echbej`cfdf`\gd`qhh^`Yfc`cdgdfY__]ff_hhdbcddfghcjd\hdefe^mf^ddjfb`dh\]d]_^eqbo`bfckb^a\hbUcc_iedfbddc_k`ef_\chc`\`geaidnhdkgelaoemfddkbfhbckheagbffZd]lhhkee_Zcbieg^^egejk^`fbmegjb`ck`hcZfgka`\_^Y]bg\aceeacjbgcd^lc\d^a`[jan`Zhdgha_kbfckYiqd_W\e`k_\cb[\dgni`efmegeg^]_[``___bhag_Xg^b[d[f`aZ_lfd__jcfb^iY^\fjhgh]aaobhf_emkigfee[_ckj`fh^i]beebi_`jj`akob`jc^]fd[i]`\dh]ajdmbbuk^fqpicbd`fha]elhbjbgdaiXcf_dVclbghh`fqbe\b_b`__ZaabZgk\ae^joadcSec]Ybbgjkiceb]cida^gmb]dfbiUih]plddnbgp\n\sW^c_qdZ_jih`jad^t`m]iggh[__eWp[S`lbf[c^zfiZ_fhacfalZ]ahc[`g]ej`he^^glh^[egckWYdnWZjvliafX`yhj[`Yja^`dc]UjfgebaZof^^^felmZjY\bdrf_fmp^e\e]]LlcY_cWa^febffVR^coXUb`_jka^dp[h^\nhcffemUeVd`^`oPb]YZgVuml^oiph^hcUla\[bZlcfdkcgmc`\bW]r^d]fl[]`hh^ieddaie^Uhul]b`aadod``dabd^l^`e_jca`fddfieab^]c`_bd_da^eagabd_ae\^eg_c`ca`beclbcc`cbj`bdf^\da^cfid`bid[e_\f[]ffae_egbafbcg\d\gacffd`bja``hf[gbdeeaeecia`]b_^e_facc__ajaifb]_abb^d\jbecdcof`g\]ddcabchebb_be``dYb_fdcfkeei__`k\fblgcf`e^_`af]bhbgbace^ccdZ^ecedhchde`^gdc`bkik\Rcmas`^baZnefkseTYbr^jib\\Ted^dbjike^bhniahf]jfhgej\hoicg]efpqo\bZSdfjihkahp^Nda^bYen_gf_bcl^jkag`dfimfcfjpYmZkecekPWlcbdijmq[f]dsgfknbpeUmSfd`j[[fdNcU`PnfkegYb\f_Wlb^X^_fe`etjggdniahY`gVmh\sdegYehY_VRabLS]nQmdgcg]ecn_i\idedW_icZhnipdYWWh^_Zk\`\]_Wjlc^p\bjceabecld[`m_fcjd_baa`_gb_^cdb__odacYZadh`_eck]d]mgeadlbfe_^_l^aa][cbcjbmacih[iefdkekc_lcahbhf_`coh^`afg\eb__g]\da]Y_]eann_eefcc]ghd]biam]ghgffibRjaffdlmkc^fYfig`l]ecdk_]cfbah_iYdd]UbcjbdXckcfd^aac^fjefabdnhe^d]fiedjhg`c^lcabaf__i[c`]ebchhbc][ccch^cc`^^iadbc`[``heb_eff]ddgcca_]\`c[\ki\dbd``dcaa`_c^^cc^j`g]becidm_ee]ccacchgf`efb``ndeae_jccdffb\bd]cfbd_hfde_hb^fefbaa`f_i_cabd`ecb`fdecgha^bc`fa_bi`fhdkhmYd`eufadc`cdecbfba^cagb`kc]i``eieZhc_dcgd]idccacf]cgbheid`edd^jie\dj`gecai_i`ik\`cdfa]ebcdde_be`\gggchcidde`dccccccccbdcccddcdcdcccbdcccccddccbcdcbbbbccbdccbbbddccecdcbdcdcccccccbcbcdcbcbcdcdcbdbddccccccccdcbccccbcccbbbccdccccccdcecdccbdbdbcdddbcccbcdbbccbbccccccccbccbbcccdddccddcccbbbdcbbcbcbbdbdcccbdcccbbcdccccbcbcbdbcdcdbccbbbdccacccccbccccccccccccdbcccbcbccdccccbcccccccccccccccccbccccccccccccdccccccccccccccccccccbcccccccccccdccccccccddccccccccbccccbcccccccccccccccccccccdccccccccccccccccccccccccbcccccccccccccccdcccccccccbcccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccbcccddcccdccccccdcbccdccccbccbdccccedccdcdcdcddccdcdcdbcdddccedddddccdddcdccccdcdddecccdccccddcccccccdddcccdcccddccdddcdcccccdccdccdddcdccdcdccccddccdddccdccdcdcdddccddccccddcccdccccdccdccdccccecccdddcccbccdcdcccdccccddcddcdccccdccccccdcdccdddcdddcdcdddddcccdcccccbdccddcccccccdddcdcccdicc_bqcfkkdWkaZabfajd_giiXgkhbcg_g_TgebgcckcaVgmd`geecX]a_h]ncf_[hj_c[fde^^TUh[icdg]ZdcVddgmlj\cj]X[bfbdjigbj`glibeifd\j\^`eaTb^i``g[j]]^[ccZhc]h{ged]`]]_dY^[dbgeahkhi^i^d]ed_Xihj_[md\bmenmaiccb^Waab\j`abbcockc`W\\[_fZ^`f^ajefhgchc\jYbbddahdqhefkadfb\a]`cedbcdcddbcdcc`cbdcdeccddecdecbdbcbcccdedcccceccbdbdcccccbcdccbdecbedddcccccccdebcccddbcdbcdddcccbccccadccccecbedbccaccebcdbfddbdbbdcbacbbdbdacdccbddcccccabccbbddccbddddcdbcacacbccdbcdcccbcdccddeccbdcddccccbdbdcbcdcacdcbdbceeccbbedebcddccccbdcdebccbcfcacecccccde`ecccbdcdcdabccddebdedccdcccbdbbdbcecddcdbbcbcdccc_cbecbbdecfcabccbcccdcbceddcbbcddcccdbdccccbecbbcdcbbacdcddbbebdcdbcbcadcdcceeddececdcddcbbddcccccaaeabddbebbcbcccddbcbccbacdaedcbdccbcdccddccdddbccdcbbddcddbcbacecaaddcdaaacdebededccbddedbdceb`ddcbedcdZc`aab_pc_de\kjhiac]edcbce[^``^[j]bnafd]ca^b]abbbk^ed_j]^a`baf^_ggabZdfck`gblgl[fo^fbhdbdaaW_keefqj^bcjk_dl`e^bX]^[h\_d\ac`fd_f`amYX^^h_eUbhlb_c`\e^Y^cgnp__iZ_pfctbsblg]`cjhgbgkWei\Sj]g^h^`b`\kadjecfs`dfa`og`[c\ei]fpfWYoajgb^goic`]ac]dn`a_fcehkabgfhegche_egg_df^haeefbbc_bech`^bcgdccedfcaadgbafdbeeafaebdfehihd_badeacceaiccdadg_accbbfhebdceigchdbdiaha`ciafgdbc_cfb]cek``h\bcfe_hZfe^bdaddcebhbbcdi`af`fhfccbbjgafahZac`dgfebaecae`bh_`b`acaca`bhbc_cdbbeeacc`ggggejefada`Y`dac`f_c^`e^efaca`d`ddafgbcabd`cb`ccaegdaefhXaf]o[]WdY[eZdbefXd^khd[dhcfiY^daRVhagcWltQ[cefci[SZnWkZ^ma]fcdhXYeb`Vf]jca\ZS\clc[snagm_cbfnoklbj[hiighj`ZnhKW_c^agbjbjerdrm\uhl_WhZkriib^^k]`Veani`ge_]bgdWfdUr[UYd^oaa`mfg_kfjgbbgjYjkdbYa[VkpjbnSf]Yabeogf`[eY]fXil\if`YZYaedchh^v`l`_jkefegg^_bhh_j]]ilUrghccbbbbbc`ccdcc`acdcdccfbbddccccccbdcdbdbdbdcdcbbbccbccaccccac`acec`cbbcacbccccbccdcbccfcdbdccccbcabbfdc`bcdabbbdcddcbbabecabbdcddaceeddddbbbcbccaecbcbbbacadacbbbddbccdddcaecfdbbdad`bbcbbbdddbbccabcbdccdddcacccdcbdcabcb`_ccadcdddbedbcdddbdcbdbaecbbbbcbdaadcZ^jflgbc]`VoVdjbUh[\`hZWcxdabcl^hWakZ`e_ib\mia]b`f]YpVWfa_il[`_b_a^`j[YWgckk`bgfXeXesbhgdd`]e^gefa`bgY_`ljSbfYe^ZbiiagfecaS[eqi[\eXkkehkdjbdb[Xqk]edjiZi_a`ghce_ctb\aadc_ofcoadpcYehdTcejdonfcj_[nkf^fXcfebn_ab]b\dcdTgif`ac^h][Y_jnKwcKWhd\glc_gfbd[d]]dpijqhd]ccbcbdccbdbcccbbbbdddccdcdcbccbcdccccccddbdccdccbcddcedaccdbdcccbbccbcddddccbbcbcbcbcbbbcdcccdcbcdbcccbbbbccbccccbcbdcbcccdccccdbcccacccdbcbcddbcbdcdddccdbdcddbccbbcddbdccbbbcdcbccdccccccbddcddbdccbcbccdbdcdbbdcedcdcccbcdcd`ccbbcccdddebdbcbddcadcccdbccccca``hb^gecgcecjdbbc_agfacedfcidbe[abacfcc`ab`bc_`bdbbee`bbadddebidd`dgjedf``kedbeaab\eddc_effibccbefcbhe`chececdbj`fbh`dgc``_jecfaea\daffec_ge`adddfggddb^c``_`edebedad`ejeai`ddcgaccccbgdechbgc`aea_c^ecgbbdb`dcab^dZfgd_cabbfcfaac_iag`ccae``f`fgf^cdhac`acabfafbc`ccbdbdddcdacdcbccca`bbcdddccacdcdddccbcccdddccbcccdd`cbcbecbbbcccdcbcbdab`bdcbccceccbcabcbdcbbbbbdcbbacdbbbcebadacccdddcdcbbcdbcccaacbbccdcacchccccccccbccbcbbbcbccbccbcccebcbbbcdccdbccbbdddccbcbcbacdccdbdccddcbcccdccdbbdcdcbcbbcd`ddbcbcecbccdccdcccddbdbccdccdbdcccddcbdceddccdccccbccccddcccbccddccddcccdccdccdccccccdccdcccdddcdcccdbdccddccccccdbbcdccddcccdccccdccddddcccdccdcccccdedcccccccdccdcccccccdcccccbccdbdcccdbcdcddccdcbccddddccdbcccccbdcccdddcbecccccccccdddcbcccccdcecbcccdcdccdccbcbcdcccbccdcddccccdbcdcdccccdccccccccccbcccccccccccdcccccccccdccccccccccccdcdcccccccccccccccccccccccdcccccdcbccbcdcdccdcccccdccccccdccccdcccccbcccddcccccdcccccdcdcbcccccccccccccbccbccccbcccccccccccccccccccccddbbcccdbcdccccccccccdcdcccccccccccccccccdccdcccccccccccdccdcccccccccdcdcedbccdcebdccdccbbecbccdbcceddccccdcccdccbdcbccbddcdcccdddbcccbbddcdcbccdccbdccbecdccdceccdeddcccbcdcddccccdbbbbcdccddccccddddddcbcccccccbcdedbbdddcdfbcceddcccddbdbcdddcbcdccccbccccddcccccccddcdccedcccccccdcedcccedcdbcdbbcbccccdbbccbcdddcdccdcdbcddbecddccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccecfebcedeabbhe_dc_`cdddab^a`aacjdcdbea^daabe^aedff_cbh[gefeeece__dd_aaabc`bbfc^eebc`bac``bbecaf^]`dec`bbeafbbdaee^daccbfa_fbcd_cbchdfbd^`ffcccehb`cddae_accaahcaaddgbb^^aa_beeaccabagegdgiafccc^cecedaha`gcad_addea_cm`b`dkdcd`gfbcce`dahecc]``aaaeaccabacdaefbadccdcbcdcdcdcccccccccdcccdccccccdccdccccccbccccccccccbdbbcccbccdcccccccdccbbccccccccccdcbcbdcdcdbccccccdccccdcccccccccccccbccbdccccdccccccdccccccdcccccbbdbcccbccccccbccccccdccddcdccccccdcbccccccdccdbdccccdcccbcdccccccccdcccccdcccbdcbcccbbccccbbdcccccdcdcccccccbcccccbcccccdcccccddcccdcccbccdccccddccccccccbcccdcbccdbbddbcbccccccccdbcccccccccccccccbbcccdcbdcddcccbcccccccccccccccbccccddcbdcccccccccdcbdddcccccdbdcbccbccccbccccccccccccccccdccccccccccccccdccdccdbcddccccccccddcccccdccccccccbcccdcbccccccdccccccccccdhehh`k`gac`[hf\hb_d^gV]ckY]cgghei_gcd^\ffZkjbbqcf`Y`fejb^[`cdf\_`bfc_ae`aa^faee_cjedbe[iUcf`]`kdd`m^fmhdahfbg_^cda_ahh\lgelbhX\gbbhc]]Xh`c`^efdg_a_f`\abhmg__]ejhced_g\cZdcejajdjikdm_ggde]^]bdlkb\mcUfeaYb]dgbngcegjg_de_^egX`gmg_\^Zea]\_^eae`efafbhgg`cddckn`cccccccccdccbccccccbccdccbcccccccccccdccccccbcccdccccccccdccccccccccccdcccccccbccccccdcccccccccccccccccccccccccccbbccccccccccccccccccccccccccccccccccccccbdbcccccccccccccccdbccccccbccccccccccccccdcccdccccccccccccccccccccbccccccccccccccccccccccccccccccbcdccdcccccdccccccbcccccccbcdcccdcccdcbbdcccccccdcccccbccccccccccccccccccccccccccccccdcccccccbdccbccccbbccccccccccccccccccccbcccdccbccccccbccbccccccccccdccbcbccbccdccdccccccccdcccdcccccccdccccdcccccccccccccccdbccccccccccccccdcccccccbccccccbcccccccccbccccccccccccXgkWf]`_degdbec`efeiYx^ZcUbf^b`iViheeec^\iaef]akdenfldTigdhag[cla`\W[aj`jadk_`ihXa^\[j]fi_f[mZhl^aomgceee]`dmhbb]eh`fiaeYfWljebYlcYkejgkihhgabf[fvnf^sra^dajc`fjZ_ijai`b_jd^b`cXf^Yfj\cY^a`ljbnc]Y^\njV`ljabgWdeZ^kdQgZej_gg_g_mVefWq_h]cgTf_nYgem^^][qk\rf]\j_\dcccccbccdcbccdcccccbcccccccbccccccbccbdccbbccdccbbbccbcccccccccccdccccbccccbbcccbddccbbccdcdccbccccccccccdccbbebaccccdbcccccbccbdccccccbccccdcbcdccccbccccccbbbccbddcdcccbbccccdcccccbcbccdcbccccccccccbcbcddcccccbcbcbcccccccccddccccbccccbccbccccbccccccbbcccZb`ctiff`dafYdgZf]jg^saXeil^aakmWi\cmh^Xfe^UZ]mZhq_Uai)cZ_feh```hclbYc_e``^ic\\km]Zi_dlgiV\_i`lW^f[rkabik^\[bhie^``fffe`Xdbkfad`cmp_ekjm^b]nRfheev[hig^gfdgebXma`lX^khse`TVe[iTagVXegkgf]MX\vmcaYfkdp`]beimlU`^ibfehjJ_r]ajapicXacoaZc`n€dbfecebwdXf[b\omdjkq^gccbccccdbbccccccccccccdcdcbccbbccccbcdbcccbcbbdbdccccccbcccdbccccbccccbcbbccbbcccccccccddcccbcbbbcccccdccbdccccbbbcbccdbcccccdcbcbdccdcdcccdcbbccdccccccdbcbcccccccccdccccbdcddcbbcbcccccccccbbccccccccbdcdcccccbcbccccccccccccbcccbccbcccdcccccdbccdbbbdcbdcccd^icm]fd`dgn>nnf__q`fefaecng]dfXb`le_cc[doV_b]hi`fg_Zcfchgkogbab\sYofeh_m^`chigwbn_icl[hb`k\gfqad^eWmj\``mh\Wekhgn\hfpl^ZgijYa]hieZ]`nd`incl`lin^kfagibX_XeUbgdbam]gZo[b_oa^ckf^g`r[]gkofeZXeaiipbbeeidcfhcdagn_`af]YofIfS`f[e^h^obcjcVk[Zabo]Z[f_`hadfXi]`i_l]idccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccb_ffbg^ff_be\me]d^ece_]bc_[hdb_ak``i]c_dee_jdgbijji`^ekdk]dg[b]kdh[j`_gbbe[d_fieblacXcddaff`h`bddc_dfj`abh`e_`gjm[j_c`fhaa\e`j\d^d\edibebekcee^b\dbf_jZeb`Zcbedai]aabp]Ye_gccale\ck`]eibageaj_ffdha^c`efZccaagfZheabWdjX[Y]l[bXhaieZhbW``d`db`i`c]W\jb`S`\e\`af`occcccdccddccdccccccccccccccdcccbccbcbcccbcbcccbccccbdccccccccccccccccccccccbccdccccbcccccccdccccbccdccccccccdccccccccdccccbcccccccccccccddccccdcccccdccccccccccccccccccdcccccbccccccccccccccccdcccccccccccbcccbcccdccccdccbbcccdccccccccccdccdcdccccccccccccccccccccdccbbcddbccccccccccdcdccccccdcdcccccccccdcccdccccdcccccccccccddcdcccccbdccccccccdccdcccccccdccdccccccdcccccdcccbbcbcbcbccdcddcccbcccccccdccccccccccccccccccccccccdccccccccddccccccdbcccbccccdcccdccccdcccccccdddccccdccccccccccdccccdcccccccccdcccccccccccccdddddcccccccecbbcdccdcdcdcdbcdcdcbcbcccdcccccbdcccccbdbbddcbcbdcccddccccdcbcdcccccdcccdcccccdccbccddccccdccccdddccdcccdcdbbccccbccddcdddcdccccccbbbbdcccccccbedccdddcbccdccccbcbcccbcccccdcdcccdcccdcddbddccccbcccccddcccbdbccccdbccccdcdedccccbcccccccceccdcddblkcmdgsc^i`iI[aeaghm[x_\`ajAWr_zskfcch``fabkTu__gffcYhfje\\^iYrame`kigfbS^]k`Ygf]ZfauVohsa[ggnnfcfaredY`hgi\ZceVkif]hehYdfogdiZ]Zva`lV\S]fhbgbcfm_^bisfjo_^a|Thcbf`b\pcW_e[g[fYdf^[`\nXeU]i`]iiwcWi_^dfha_`a][^gWk[l`Ri\c^n_cncbF\fjf[cQasudYo_YaZlV_RXejjgbcQgccccccddcccddccccccccdccccdccccdccccccccccdcbdcccccccccdccccccccccccdcccdcccccbdccccccdcbcccccccdcdccccddddcccdcdcccccbcccccccccccdcbdcccdccccdccccdccccccccccccddcdcccdcccccbcccccccdcccdcccccdcccbcccccccccccccbccdcccccccccccccccccccccccdcccccccccccccbddccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccbcedccbccbcbdbccccccdccdcddcbcccbcbcbcccbddcccccbdbbbccbdcccccbbccbbcccccbcbcbbcccbbccbccccbcbbdcbbbccccbccbcccbccccbcbccccdccdcccccdcccccccbaccbcccccecccbcccccccbbccdcdcdbcccdcbcbecccbddccccccccbdccccccbcbcdccbacbccccbbccbbcbccdccbdbbcbdcbecccdcdccccccccccccccccccccccccccccccccccccccccdccccdccccccccccccccccccdcccccccccdcccdcccccccccccccccccccccccccccccccccccccbccccccccccdcccccccccccccccccccccdccdccccbcccccccccccccdcccccccccdccccccccdcccccccccdcccccccccccccccccccbcdccccccccccccdcccccccccccccbcccccccccccfhgmemjgdbdgnXcVh\fibe[^m\bbW\ee`kgfd`im\aeS^Xfjchq_]dXaeidejaTk]h\aEda[ho[ehhb]]fWa]WjicSe]^f`eePfhabib]UeadfZijia\bicmk_Ysefa[mjnectnstc\na[dUoi[e[`b[cbfgacjfbfSbcpik\X_dmZjdgg[fi]bf^dcrvk[h`^[[eccc_ZbchTjm^^kmgm^kki^dfibcq\i[dadqaq\dhbgij^fZc]mjdo]bVkl\ccccccccdccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccdcdcccccccccccccdccdccccccccccccccdccccccccccccccccccccdcccccccccccccccccccdcccccccccccccccccdcdccccccccccccccccccccccccccccdccccccccccdccdccccccccccccccccddccccccccccccccccccccccccchmk\a^SigUWldV[^`elXas`a\[[wfdilLhsd_haeSec]oioe^clrjm_bf\rVfkcucWdpLmfXdb]cOfb_NZhbQfiipXdg\YbhYTah[_lbaaa_X_W`dhddQ`ilnlfqe`^eedqnhfqblid]mV^i`bmh_]`ke``^oa_u_c^xS]\`gohfe`c\]dj_mVK_\`j`\egf_`Yd]ZYenlcjc^`l\]doXccUr]mm]oajnkZZaZ`hej[Zihige\^deYgXjne]m`jfdcdebccbcbbbdcbcdcbbecdbdcbcccbbbccdcdbdccdccbbddcccccbacbccbdcbbdccdcccccdbdbcccdccdcbbbbbccccacccccbbcccbccccddbccbcccccccbcbccbdbbbcccbbdbdddccccbccbadcbcdccdcdcccbbcbcbebdddcccccccdcccccccccddcdcccbcccccbcccbcdcdbecccdcbccdcccddccdccccccccabccbbbcccccbbekg``d`dfa\kb`fb]hih]ihdbgfgd`]`ceacbieaccak`bgibdckcdfcgcchbe^aefcgaeadge_dbe`afcdifb__dgjb`egdagc_ibbbdad_bekbcbe_faad`dZbhi`ce^c\fddi_`^]ea``eec_dfbk`dg_gdbdbjebgefa``ecb`bfce`l^bckgafcgaehcbcdfdd__bcgd^c]b_`edcjbcfbackab_egc_eagchbaief\chf`figbkagbgccccccccccccccdcccdccbccbcccccccccccccddcdccccccccccdddccdcccccccccdcccccccccccccccccccccccccccccdccccccccccbccccdcccccccdcccccccccccdcccccccccdcccdcdccdccccccccccccdcccbcccccccdcccccccccccccccccccdcccdccccccccccdccccccccccdcccdcdccccccccbccccccccccdccdccccccbccbafdbddcdeeacbfbdddbdcdcceceddcbdcbbbcbcagdccfcbdddbbddcceecdcefddddc`dcfcbbeaccbdedcbbccdeedhcfddcededccadcccdccdefeffacfegebecabbcbdbecfefcbfejgbi`dgbdaddeceedceedefbc^edbdeadecadbdbbcddfbbdebe_dfabbfbebefbccabcbc`efbaadcbabdcdeecbccdcbedfd_abbbcdcbej`X\X]raUX]]iQZ\i^jml]_zfFhU]_kcWXjdW\brsdjKWeT]hoaebWisfreeeScQbjac~j[v\^ErVonklrX]acjW^^df[ekJbdX`jljXrCii_cc``rbjc[aae_kdncccseiXc_i_i]`ZdmupkeejN_g]efcamn\PlfXe`bPhcdlchgphZ[kiakpemsboOach_hacqaqW^XhT]bgWmfc]Zbe`Scy^d`Zbn^cihgagd]dkfjba]aa]_Kh_ajmdnfr_dbdeddcbabddbccecd`d`dcbdedebdbgbeabd``cfecc`eaebbb`eccc`becddabfddcebcga`ccbccdccgdbdecbbcccdababbcacfbcffb`adcfdcbabdbbhecddbeadecd_dcbde_ccbcbdcddbcddcacfbcbgehgadadcdbccbaceccbedc_bbbdbch_eccaceadcdebddcddb]cddcbde`caddddeeddcdac`ccfdi`dfgbddc`cdb^bccdqhoi]d`fi\XjnkWX]`fdcWfj\p_y\bqk_dWUljk][g]^Wk\ckieiwn__effmVnbgV^m][faf[abk^nTagnnj`kt][]bcZ`g]dNcqdd``pn\dda]ee`d\fWsZhg]cZgb\hfTcOQfTbaZel[bppjcZeXfee\ca^b]bbw[hh_qj[r\hhieXb\ie^ffT^`^ffrZfhie[fmcVmh_[bgau[^cZ[eOhrbcfguf`r`ddgc[`iu`fYbkj[ajaqcgaj_^kaas_\^tWt^phhccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccjljcdTby^YfjccU`gcs\^o\X[UaggwndUVi[SfVg]ke`Se`feabbgeT]^_fcm`eYcYkajf^[\cZgcnbd`_bfdgp^bgVhdn_]^bcjdWX\dda]]og^^mbla`achcja`^uZd^lj_]cgeil_gYkj]xngh]ceQ_a`wjk`Zj`wlX_ZcgleYe_dj`__^b\S]hfa\^d\okcfWgcNgnn_idZZj^iihllJ^bodbe[eYf]fcVfd]_mdWm[aXSabg[^W_hcpqecegg`_\Xha^\`agXa\jcail_dmfRf\`egaY^e_Z`cqkejV]l_fdo``f]ka[p_]a]iX_fbaldaq\aPgZkjimc^cb`l^aXde[doWadVdkjdYkJcc\bc\ge`_]``]dgjkt]g\ngiZf`kidb_]]boflacjTYe_fcdbgiaZhc^c^]Wkcefcbdld][ddfijecf_bWadejh^glahXX[g^\cfaj`]d]fbaYdk^b_`eeaiehc_ic^bfjg_hh[``j`d_dhcbmkpcdccccdcdbdddecceddbdedcbbcbcccc`decdccdcccbcdeccdcccccbbbdcbbccbcebcccccddbcccddedddcbddcdbdccccdcccdcccbcccbbcbcbdcccdcddcccdddcbddddddebdbccdcccccdcccccbdbcdcccccdccddcdacbcccdcdccdbcccbcccdcdbdcdccbcccdcddccdbdbbedcdcddcbddcccccabccccdddbcccddcccdcccdcccjkibeeie^aaj]]\Ygpceo_]bbwchmg[\a[dfah`[ka]\o[kWXXhibW]Tn[^inilbhZchT]i]^Zxechkfl_d`Z_i_amhh\WgYjcpabcdeVcTqose_X\fWdhe_fgi[dplBlfeccrTyb^`fZeYc_Sobh\V]k`Kt_^bhclhNV_^efeakc_Zr[`ftg`kildjg_]ec^oiemPcg\[]d\`xjgGa|PMXbr`e_dgaaag_f]ehe\c]bcR^\UagUY\Z[eVY^cibdbc`acedcaaddecadccaeeebdacae`dbfbcccecddbbcaddbabadbdddgad`baaegbedbcaeedeecbagbhe^bdfafbacecc_cfdabcbeegcdaeadeddfbcbd`ebdbfad_edbb``bbdccddbddgaacccddgeffcdedffgcedcaeadb_ae_fccef]bccacaacbeaeb`bdddb`adedc`bdcgd_aaccddeebddeddddc`acfcced`ffdcbebbce``cdTgdmhtQ_f_emkhefea_`ifad]hi_flcp_ZQdsi[Zmc\c`ffhYYWfm\\b^p^ei_iiaYU`i^jldecbmj]a[e\WiibYfdjc]odpj`e^gkckv_fcbafe[idZbZaX]^lblan__h[^\gjjnghaYgdfkemcjf`sgg\`doajeW^nchgjdfcjbm\fg^t_^W]afhcnd\l[`\nn]diQc[dWc`f]ahiqYceZhjebd^X^\Y^al]f_b[c^^njN]daachbiddg^ckfgccbccccccccccbcbcccccccccccccccccccbcccccccbcccccccccdcccccccccccdccccccccccccccccccccccccccccbcccccccccccccbbbdccccbdcccbcdccbccccccccbccbcbcccccccccccccbccccbccbbccccccbccccccccccccccdccccccccccccccccccccccccccccccccccccccccdccccccddcbccbccccccccccccccccfddd`^cbl`c\_djkaib_bd\bddbYded[fb[`cai^i\gabcfcerh`hcca^bhaddf\e_Wcnihdf`^g\ccnhhbccYf]d`jfe_d\\c_ele`fkVh`bi\\eTe`ieafnhhfag^lcdacdeng`b`_kcbkca_bZea^aZifacXecabXadb]Yfcedeeb\^b[_`iibe^^dhaleededYfcbjaajbadh[ehbic_ffkYabchffjfdcacac_m`iaeccfbhd^adebibaliccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccbcccbccccccccccccccccccccccccbccccbccccccccccbccccccccccccccccccccccccccccccccdcccccccccccccbccccccccccccccccadccbcfcdcacbbdecdabadcdbe`cbddc`edb`ccddecbbc_e_bdcbbfcaadfbdeedbccbcbdba_bfeececddddebdece`dabbaeedeffccecadceccdbbfceeccdce`dbbcfacafhb_baeaabbbdccdcddadcbccbcfdcadddcbcbbcbeeceddcbedfccbccefaadebcgccdcdad_cbabed_dbfebcbcaedc`cbbe_adacca`cgc`ccbcbdbc_edcjomincffinangi^cfaZehaf€hc`b^`y^\foag_a^ji`dVc_c_aeXda[aReZahgir`]aaca``geme^g^`^`dcbmmWejgcfdi\g^`jk\djbgjb^gdmfhd^jgXg[Zah][Q]ag```m[aa^ak[gbeYmke[`Y\d]Z`dmb``ZgrbijXdb_jb`[bibTaiedWdfdiUa]ifXfmegi`h`e]eealkigVqch_K[]^k^Z^ZdSkc`dea]]_fdldcfciZ[i`aagk[qdccdbcddddccccccdccccdcccccdbccccdcccccdbccbdbcccbbcbbbbbccbbcdcccccccbbbcccdcccbccccccbddcccccdbccccdccdcdccdcedcbdcdccccbcbbccdbdccccdcccccccdcdddcbcbbccbbdcccbbccdcccdccccbccccccdbcccdcdccccdcdcdcbccccbccccccbcdccdddcdccdccbccbadddcccddccbddddbdbdccbbcc_h]e_pm^chfV^gf^hb[a]`f`ekfa^`\ba`bjk^_aclZc_\\^^]bZbjjogdki`Zeeifs`cddlS^bb[[beg_ao_dg`fidZdbf^c_dnfiXiZiWegcdilXcsha^h]ane^ndgelaf_ch`a_`dYh_hh~Yhai^aedhhd\gfai[ahfwb[ae[coYbbfcdc^^f]d^`_f]egVem\khg\\ej_`hicb`l`_ecjdb^a\cb`lbaZfe\gglco`fj^hkbdc`XoXgebb`ijib_ijbmghfeh_e^k]bnk_]ehebcbaeeUlfZbffciXi_kcebdjY]kY]aWakbffeUbfnejfWrfehedk]kYXX_bbjdgePc_dj_Zm[keheYrgef`lko_aib\[cdo`iek_jke[ef\Wfa__occba_aji^c_Zhgae_m_e_bf^aa]_^njgdgd[`a]dc_h`[adj_[blch^ddZ]_i`Wbaf_^dc]fbgebRmPlicb^h_fhigec_[jYUgd\^b```njXbjeaOzeemab^ea^fbdfcgcebi]ffcae_bdebegjjdda_`bjah]cffal^f\hadfdeXb`b\fag^bebfeaaf^gbdcggei`cdgccaibcbccfcjcgc`d_caf`medcdbge_kba`fehacbccadhcga_\Xcd`dg`abgc^he`hg`cfehhcfafo_`feedc_d``_]b`__idc^f^bd_cXdbc^e`a^ckgdhggef_e`_`g_i]g_ad_^\a^\fjga^f]d`b_caf^fej`chafddb`daSl\dW^kYfie`s`mr`Wn_kaZdVb`\Rfcoc[_Y_\SifRcTelbmkdca_`kcp\c]`YsjaSiX`qZgem_^ddXcmW\_db^Vj[[ltindim[k\hZ^Vhneg]\Tf^`mdco^^rhcanag]QVfbidqX\]v[f]ahjdbpvfkbj\abhke]mQqc^`Yfj_Ugcjb_[b[SkTac]abaicru^bbnmi_u`gac\R_d]_neaucc]aZsjZc^hjgT_^cfhdhjdmfdfhb^pn\han\T[bcbhadchdbc_aXbca][f^Vg\_cl^dddfflgc`\deZ^]\addkga[Vck_n]ahc\_`e_`bbgZcd^Z\dp`g`[ceZsmafeha^ffcch^ei\b`^hahcki^eahcefbfaiddfggXa]cgZ]ee_`h`^gggdabdjh[_adlZhekdhg\eaed^db]gccbie_ae`^dh[b``c`adgbdhcgd_`lcd`pdm`j[b]ib_jhpbYg_df`ij`b^icjfjb`nhejbffbgc``bdfe_ejhcbbccbbbcbcbcdcbddecbbcccbcccccccbccbcdcdcccbcbccbddcdbcbccbccbcdcbccccccccbccccbccbcccccccbcccccbbbcdcccbcbcbcccdccdbdcccaccbbccbcddcbcbcbecccbcbcccccddccdccbccbccbccccbcdcdcccdcdbcbdcccbbbccccbbbbbbccccccdccdccbcbbccbcdbcbcbbbbbccdbbdcccbcbccccbcccccabcci`d`ca^_dphXVc`e^[TagQ[lhge_a]b`pbclSgdc\bcfhk]a_mhhYZU`gilbb`ecWcd_e^fffbleaghhdlZdd_e[doaYjfimdhfZRcfhjkkYka\\]`i_hj]_TdbbfefeR}X]b]jcqU]]l`haf_h_VechjmZ[fSdcm]b^fZg_^_c`h_^fg[jgeSkc^bXiZ^dc`igpc\dubed[jfgia[ZniLmydbNefimcahqebcfkbhhikdcgfib_Ynphkdgdpff\h_[`_fanViaoeoo__^_h^n`dfeajYdZeh`ga\`ibaU\^j]ebgUdfYhkqZd^fkZQX`bceKaca`dgZ\^hZbdci_affcd`inh`ei_]gmm`W_[aida]ppeedf``dlmflfelTkd_bgb]ia\ghWb^[kqfabp[`da`dgc^lZ]\\`ncbl\[gfbpc_lXYh[df[laUfimkk]Vb`k\ded^k`ebcfaicTltls_`mkk``h\_[becib_Ydndfby_d`fo_egSaWhYg]ojgam^Zifcdfjkdi_aXe``]echad_dactj\ekZdg\bk`c_io^g\gdbgg_e[e^caacf_^`^[ekbcbZ_aceg]dbf\a^edhtk\j]eted``bgllcgdaedaccg^^jeglapeZ`bk_df^\c\\b^^abcgd[iWc^obid]]ebbfgbcgm__iahdae`aaY]ck_kgRie]i]eYgh]^``jfUfceceYecc[ligrcgbea_\`ca_gcifag^[[\]ddidjeedhbieba^]`cabccccbccccccbccccccdcccccddccccbccccccccccccdccccbcbcccccccdcdccccccdcdcdcccccdcdccbdccccdbccccbccccdbcccdcdcccccdddcccdccbccccccbcdcbcccccdcccccdddcccbcccdccdccddccccdccdccdccdcccccccccdcccccccccbccdddbcdccccdccccccccccccccccdccccccccccbcdccccccccccccccccXbiik`drdocX^hnbRgq\Qyelc^ape`aZ`pa`gh[]fQbag_j[[W]mQ[ajlf[kesk_dqjZi[\`a`ikY[a^Qead^hnjc_cb]VybgUV^^`Xqmlfp[cUj]`x]hi_hX=K]dr`fZ_`bhZdgerhlje^^dcdmjjiLbb^Zbf]k^dnp_]XYachjY^`]dg_di^ffX[neWd\c{eWxd_ufeZe`]ckWfZihUYkV\vkdgaifgTZpcaIUaDk_W_]`me_bddijteRbje^Ybbl]iXocWah_gVY_jagtqqkc\YykiajL\bc\bhmSd[`]d]dgVTk`jgnchgWfgqdd_Tnqjhef`mXmJ`a\Xof```k[]ad]XVk_cWWf]ebfed_Z[\cc_a^XXd`o`iYUngf^Xun^jaY`Zf`a]fabak_n_cfa`b`YnUU]^`hg_v[aV^\gcR_`bg_`jcla_]egc_Zmjjfb`fP\jgj[a[hfldtccqNblueqq^md]W^qoahf_aVjaghk^c`knd]XY`shheilfc_]h[g_]^ca_\g]_Z\c\\riegcdUk]dlbhc]hhjTf_uhhV\sbceapSbijehfUUaj_`ja^udc^^Okhc\gb\^jY^]be_aeeg_`hj[gdidZU]gjdtc`[dia^j]g}abqdeflbi^hhhelgU_fcqgoP_K[^b_he[bedbZcWgMXN^ulceb`]]b`j_cMkaYef^Sgl`V]egc^Xrha]_fcjdfffg__cg`^aieg\affddaiY^qjc_lZ`i^o_dfjl`jcjWkefYdcedfaaffd``dggccecbaf^_cbdebc\ldc`_`b_[_ec]`fdbic^e^dn_`eee`bdegXecdghde\ccbagehicdec_hdf`dfgbi]fgbl_beeecib_gabgadbcfgfbccjbibh^aejddabi`gdcg^c`fche`en`dbedec`ce^h[de_d``agfd`ld_ab`cigg^cbfleidbbaj]ag^hbe_`b_`^fj]`def`f\baiad`b^`j]`e]`jfgb_Yda]`b__``Xc]abcc_^daide_cka_a_cdZcjbdca^ajjWbbgeakchmo]\WT`i``mjfkkXbf^cbc^jZ_adbdbhglk_eb^d]bii\amdd^abdd\did_cqb[jb`__hiWVgebbh^eX^gl[aU`a]fahm^a`e^]ia_ki^Xkg^h\ka[cgcd\bbeliih^jYecbYafaamUbdebic\gcshck^_]iic_aaalkdd_dbcV_dfgebbaihkbha\hddfebcde`^cddb_k^ahfgbXhjia`m\ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccbccccccdcccccccccccccccccccccccccccccccccccccccccccccccbcccccdccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccdeeeddeccddccdcdbcdbddbcdddcfccdbdccddcccdbdddcddebdcdcdddfdddaeddcecdbccbccaccfceddedcdebddeedcdcddddeddbbccfeecddcccfeedcfbbbcdddddcdcbddcccbecdcccdcdcdbecebeecccbdddcdbebbcbdddbedddcccdeddccacddcceddgccdbdbdeecdcdcbddfddccdceebccdbccdcdcc`ecbdddcdccaW`]cYbja_W]\fhfZbecm^WjtgbXqfia`^an];kbddmble`abkUo]c_hc\a_i\^khbijhfehgafg\calcc]hdZTehY`fXLo]Sn^AJghf\fWgcjfhjggg][ae]n^ke`bucXZflbhmmm[gcm`T]dcjdib_hjdcio\f^cjjfqiicae_``^cloeefV[`aeh]cqX\Vbr_^jccd_klhfjgh^pWX`YbiWaecllbijc^jjrnbb^fcohehb^ial_caegbcieddfg\]Lmn`femcUNjZacejf`dgf^]jieTkQ€XaUfZrZ[][lhhbbiiiYdabb_ejlo`kjeb^WahnU]Zbadfhlmndedga^[hailj;ecle^Ze_hZc`enre]e`bc_iejghkgk^YqimVm_uX^]ddhmkX_hbj\iY[`bW[__hk]j`mYi`eii]t\`_fj]Xc``hdlg`bbdofYccUh[kf\kh]aqlkodcfbf`cjSbnscY_bfcfjddd^ff\e`mcm`dgemdZq^aUaTl]ccbccccccccccdccccccccccbbbcccbccccccccccccccccdccccccccccccbccccdccccccccccdcccdcccccccccccccccccccccccccdccccddcccccccccccccccccccccccccccbcdcccccccccccdccdccccddcccccccccccccbccccccccccdcccccccccdccccccccccccccccccdcdcccccccbccccccbdccccccdcccdcccbccbccjg\aab`r_Xqclcllpcqhgcge^b\iqcRie`QXd\hlh\Saj[thnlfY^fgkiijX^XZ_hXUdlbcfock]abXie^\do[fajf`okeigladmjcjdZOeiWod`igepbanl`oYZS\^cqbpnhpiXll_pii\q\jYWloQkkj`kfReOiq]gscjeZfckflhb`\ephdS_cl\\iWbnh`fh[ec^[_ggxfs\iegddghbQlj_adjb`hUmmahc^`\[q_[BUqibiefegftblW]i^biY\e\dccjk^dlchfd]vdijabbqk_][_Z`_vckaeho_gg]Z_Us^`ane_ogg\bfhgdn]f[mdbpaYqkbi\fh[eagZp[Yhaj]cijod\g\eXqtagndicfdjhdY]`i^p]Z`rg]>hmff^eeeWhZ_ie^dT_eiejc`^haa_cfTdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccdcccccccccccccdcbdccccccccccccccccccdcdcccccdccccccccdccccccdcccccccdccccccccccdcccdcccccdcccccccdccccccdcccccdcccccccdcccccccccddcccccccccccccccdcbccccdccdccccbcdcccccccccccdccccdcdccccccdccccddccccccccccdcccccdcccccccccdccccccdccddccccccccccdccccccEYe]gsecWg`W]obifj`e]g`Gg`Yffoe`\i^gjfYVgabXa[odab\gqc\mer^h^\U`k\eimorja`bkj\b`o_[\jp`a\m^geaSd[^lf`^j\fYnnhhgfcffgvch]QYaiamdabcYnjTicpoReq`cU[rrkg\[b^cgc[_d`\yYbWk]bkd`X]fi[glge\c]b_a\l\]k]Pddfgf_hkikiiidcZhl\nlaeahidm``et^]`t;hnbjhejffr^ac_dQZgQ_ch\ec]f^ombd[dYcRccifrZcafbh^qgpg\aoiUlchh[dn`nl`j]lW`aca_p:]]g^[ha[`R]_igffZ_Ye]bfj`kS_W_ojada^[h^Vaek_UUphhe`j_el__dk^hi_g`^_cPVhdjTd_adgjiddtnbilfiXeZfanXi`_djcf^\m]dadjcjajgbgafil`gaa]mgdkmgghhT^ppelb`cb[ebc_jib`bdbYlh^]gg]aj^i_]e[njXbXNd]g_^khad_e]feccbhmdaddebb\cecbede_`cgdbfhdbgbcecdacbdfddcdadbefbceccdeecafccabbcddbdc`dcdbahad`abg_ccebeeebdaccbdf``aecddefcdcdbefgcbgbdfead_cbaacagbdddbbdeccebafbccb_cbedebbedbeddbdc``geefggbcedeb_fccbfgcadceeddfbabdcdcbbeecdcbhdccedabebcgac``hbdccdbdeeechcfffcfcgeedfcadbecdccbcbccdcbdcccccccccbcccccdcccbcbccccccccccccbcccccccccccccccccccccbccccccdcccdccccccccccccccccccccccccdcccbcccdccccccccbcbcccccccccccbcdcccccccddcdcccccccccccdbdcccccdcccccccdcccccccbcccccccccccccccdcccccccccccccccccdcccccccddccbccccbbccdcccdccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccdccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccdcccccccccccccccccccccccbcccccccccbbccccccdcccccdcdcccccccccccddcccccccbdcccccccccccccdcccdcccccdccdccccccccccccccccccccccccccccccccccccccccdbcddccdcccbc`qmgaZbrd_heaefdi\bfamdZcb^d]hk]\`gfdZcbYfadaffajabcWdYhid]bbh`fa^hi^mTdbgg]i_bghc`]dYebagbmd_Aj_ddbhb_ee[bYkgcej`d_ndeV]mhj\id^cdkefof^n`qd\]e^ci[ebdbd_\bgd_hge`\^jgl_aU^h_d[h\gR\^]lbafaleln[b^gd]ejW^adfhV^`hg]ctejbhclmdgkjhebfcWd`jfafm^eedgh_cb`\khfghbdflhdepm`fX`]a^aZihaaVbgbZbah_o[i`hb_bjb[dcp`g^cdddiZffgZa]`^ih``^`_ib_aX[mcQ_abchhe_`gk`h[aeeekfc_baab_[igigheSZ_kgfh_acl[gb[b]ocdfk`aghcg\a__bdefr^d[[bghag_[]l`gjXcmjobe]cdfbdgjccfbegVdihlie\^ho_c[ddd_WddebaTgd^if\fmdah\\\c`mcgkefejf]s]gfal]dea^cb^cdcojhlccdcccddddccdddcccccdccbcdcdccdcbcdcddccccccdccdcdccccccccccdcdbccccccccccccdcdcccddccdddccddcdcdcdcdddcdccccccdccdcddcdbccbcccddccccccccdbcdcccddcdcdcccccbcccddcdccdcddccdccccccdccccccdcdcccdccccccddcdccdcccdcdcccdccbcccccdccbdcdccdcddccbccccccbcbccdcccccbcccccccccccccccccccbcccbcbcccccccccccccccccccbccccbcccbcccccccbccccccbccccccccccccccccdcccccccccccccccccccccdccbccccccccccbbccccccccccbcccccccccccccccccbcccccccccccccccbccccccccbccccccccccccccccbccccdcccccccccccccbcccccccccbcccccccccbccccccccdccccccccdccccQk\k_]hcm]\a]hk[khe_c]`[mlcWhmknacdda\eidWZ]`ohhje[d^gffd`f^dbkYbadchogdZg^k^VhbVj_hjdcXTj[Yhkdi\Ybhimflgb]]fYbiiaeeq\abbXZ`[iflgd^i__U^m^Zhu`fkan^lkdcnW`fefgbl^aWd_fbi]YZl[cdgjjhc]jWigVc_geruflg\d_[a^bddif`m`iqgl^fblcqaijoYneiak_febfelhodh_deh^Zbec^ghNYhTfajinUM`NMe`cWefhj]amhfnW^clrpfUw^oek^[lWgfhe^_ba_liY\\dka\ibjTNhbaoc`af\jhpY^kjYZ[alvZgV`_ktXScZOkq^op\^XT`YfQcldcikag\cocpcrZV`j[kiZnenb_cadecZbVhBebho\jefhn^_cV\Sncdkl^[\Wjibl]dhdghd\``[_a^rPehhiiV`ck_jb_dy]foofo_o\qb_diioapfgYbliafb_^gihcf[gledYlabosVbdcddbcddccbbcdbcdcccbcdccccdddcccdddddbdcccbccccddccdcdcbcccccdcceccccdcccdbeccbcdcccccccdcdcdccddccccbdbdcdcccbdbdcbdcddcecdcccddcdbccbccdbbdccdcceddccbdcdcdccdddcdbcdcbbadacdccccccdceddbcccddcbdccddcccccdbdcdccecccccdcbedcccddcbdccbcccbddddeb`dbdbddcbddafR]ckZd_W[a\l`dfd`]Rhg\gkqYrjk_[l^Wcd^jVjliToa`[c^mijhcZdY`gkg_ffdhbubhr^jXk^iiaqkdelq^dgc\naR_[b[fkfcec^hbl^keiSbamegcXUegU]df[gac]dKknbh`^[j_^dh^d]W^Wdgebi[X^jmTlpeciph\^i`jkkpjf`h_i_c[f\Y_e`^h\pjggldiZdgd[kms\flfh[acbjeaZb\`mZ\`ge`hiieekgcbaafileXkhceb]cccccccccccccccbbccccccccccccccccccccccccccccbccccccccbcccccccccccccccccccccccccccccccccccccccccbccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccbcccccccccbcccccccccdccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccYZ]jsogjYVfi`_Wbcg`hmdRgc`]lffaf`]adfddegacicljkk_`[fVihj]ihb`g_ldadeTYf[g\fgd[a]h^dqo`_gff\ginJghkcdd`gSkUmbeZeTfZkfTcghd`]jnec`eba^a_i[f`eaokig_dg`_baf^ge_l`g]^`]b`fcfdlhyfcqldm_g]daX_g]dagdlZga^]abgadnX]\jUieibba\T`V]igf^W^[i_fld\N^e^cacc_Sefg^bdh^^bfjghfmfjm]hajanW\e[jcbf_jc^^Y\mgV`bZa^j`em_f\g^cgXl\g`f`jlne^bilibohjjf_rdfg^hfcfa^h[gelcbjgilec_bpfd_NiX^lbni]^Vhf[gmfna^di\ig^cfdebdb]``[_ncbak`ZXdd^`oaY[gaggiYb_m^Vbc]_h\aUdfpklW^cV\bab\idedfZd\e`kRfa_jcab_c]igipb`fYchgajdYXfehgehmWke_ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccbccccccccbacdebbcdbbdbeadcefbdecacddccbdbcce_adcbdbccdedcbcbfbcdddcbccdcfccccbfacadcecedce_ccbcaegddbcaaccdebfc`cddecdfdddddbdbcddbcfaedafccabacdcbccdcceedcbc`dc`ebbcbebbcbfbbdbbcdbccccedeaebdeceacdcccdbbcdadddcccabbebbddbbbedaedcddbccdbdbecacacbddaccbbbccccdbcbcdccccbccccbccccdccbcccccdccccddccccccccccddccdcdcccccccbcccccdcccddccccccccccccdcccccccbbccccbcbcccbcccdcdccccbbcbcccccddcbcccccccccccdcccccdccccbcccbccadccccdcccbbbcccdcccccccdcbcdccccccbcccdcccccbcccdccdccccccccccccccccccccccccbcccccbcbcdcdcccccccbccccdccbbccdbccccdcdcbcccbcccbcbcbbcdcbcccccbcbccbcbccccbccdbdcccccccccccccccccbdccadcccccbcccccccdcdccdcccccdbcbbccccdccccccccbccccccccacccbcccbccdccdcbcccccdccccbbcccbcccccccccbcccbccccdbcbbccbdbcdcccbdcccbbcbbbcccbccccbccccccbcdbcccbddbccccdcccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc_bXQbŠjkhZcbda]hbihab`fW\YdcYo^Sfg^iseZhe_Vc7[^_ia_a_^V[\\[_gabeedkfZ_gid[]^j_Yc_\lb^\gdTVaffu`fbn[chebgf_gblgd]hkh[g_ddfd`Zg^_l^b]]gsU\Yga[ahmoi^awddgekabW]ej\meed\ak\^dd`Z]dYflcc]lgZkfgdpgf]rdoa[bp[ahe[mcfZfc`Xhkcbfi`b_\]d]kbjhfbij_i[cfhd]p_Zbk`ehjf_fX\ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`c`deaccb`f`ddee_dcfacebc`afdccdb\_fa`fgbddcccea_`d^c`e`cfcdcdaadca`bh`ggbdcbbfccedbcbdbbaecdaabb`dddedc_c`edbabffeccebbdebccdheb_chddcedbfd`a`acddb]cb`bbced_`ddcacdaacaddk`hfcdcaecbaeafdcaddbaaaab_`bcagcbaef]dabdac_bh`dcddefacbbddbbcebbdbcaccgdcacbadeccgacdccccdccddccdcdccccbdccccdddcccdccbdcdcccccccdcbcccdcbcbccdcdcccdccbcccdbccddbdccdcdccccdcdddcdcdcccccccdccccddddcccccdddbccccccbdccdccddccbddcddbdbccdbbccccccccccddcdccdcccccdccccccbccccccdcbdccdcdcdddcccccccccdccbccdccdcddcdcccccccbccbdcdcdcccbccdcbcdccXYQ\ekgf^edffcacfiocc^egZeeb^^\`Y^[ax`cWSqakkfe[g^efocmg`dadbjc^aUrn`bffkccgc\\bccnjb^[^gfmgY[hhincaegbcZ_`lcZmajl^i__eX\fgogWqf`]gh`abh\cpgagVdfbm_eebdea_^c_hhibi`jc`dlifhedn\f]c\jjhll\]XgpcfaU]Wjd[j\_dabdabTdfkYih[ra`cZglhce]cbl^reba\niax_f`dcjfaibcd\\kcaUXOacd]b_bb`d^hdh`_pZkjdSbpich_lrbm^reZ]_mc^flgpglib]bkbcZc]e_lihcjdmma[bj_lsd]khfhfra]d\f\][ndhkaah`egd\`\ZheginkVehdfZ^k`a^]lmbZcc_c_ah;_db]dZeiiR\_`]hdfeck\hkm`[fd]kiTe``_e]ckcg`_ZXkegomb_ab_^oambjicdmidena]]dgWdcaaa_Y_jmb`_t[hoge`klYgiikgh^b[l^Xad`Xega`fbdfgfcddc_agdacfcb`fdcagddcb_aedb`_cdddcd]aab]]`__ea^fbacbef_aicdabadcdckg_bacdfjgd_a]fa_dfa^eedc^eff_cgcf`a`gfacbb`afa_b`gecfdfd_db^d\hccgdbdagc\b`bgefeg_dcdgdcbjeedaehcfebdbcdc_caceabafacgacad``cdegbbaad^bedebcaba^ecghbcagebce_dfi]agabdefbdca`dfbabcdfcccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccdccccccccccccccccccccccccccccccccccdccccccccccccccccccccccdccccccccccccccccccccccccccccccdccccccccccccccccccdcccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc[c[`]^jcc_ikhdf_`blga\ifkfdYf\Y]a^ccZ^[[qq`ml_dcfo_pbgb^]ucikgWbggbhXjh_cmcZgebVdS^cijdifdaYeqmihdc[`febg\bWmah`d^]Wg`gac]eabkeel^a`ccf_h_Wddd_g\pdbeebegadnYdnf`idcc]jwfj]j]addNien[^cfd\^aZ_hf_^cZj]dcmd]icleYjhcccqnj]]_eadcdcd`Xc`Vh_hXhdai`ncdide``kfikdYb^dcagYhl_ZdXaeXd_iffcjhnlbmre`ajdbo`Uid_bbhkQab`]lY_Xn^]_^g_jk^cgecdRfkcagg[gahYf^ga^oYYcdde`bUPhaaifhefZc_Whg^fd__ae^d`^cq^__WeYVaibgh^dZi]kRe_dgk_`Vc^eg\ga^kf]e]gj^lWm[haXaU_l`hdafcafgfwTgdj`lddf]`UnhaZckc^_`Ye]n\pf__bqick`a]apiiij__g^adia_sa]aieYd]^\ad^cdcbdccddcdcccdddccbccacccccccccccccbcbcccccccedbdcccdcccccdcdccdbdccccdcbcbbddcccccbcddbccccddbcdcccccdccccdddccccccdddcdccdccccccbbccccccbccccdcdcccddcccccbcccdcccccdcdcbcccddbccccbcccccccdddcddcccdccdcddcdcbcccdccccceccccdcdddcccbcccecdcccdebcccccbcdcccXbjY]jchmUdmjecgiba^nRgacti_\e^Nc[ajbZap_bm`j_YdUbgO[ai\d]r[`d\LdWhdvaahi^oqk`g^poYaV]a]fmdZfgOZ__hgWX_`Yae]bzje[^\c`g[\bncn`_^`gj^cdhgefd]g\d_nhjij__bZfcbo_Zh_an[j\hfjifnhcad`kVW_gfk[b_q\_nbddVgZZeeddnfbhleafelcjejk^fY^cZa__kegXggumbt[ns`i\brfgc]`kebeSYchdg]hShhb_fmb`cfZeelhc^bfk[sP\aii[ihhbb_cbZflic_iai^_in`bfknadlXk^njWci`_[b]^galYig_\caiicc`^[mgYbgbgd`__dg^gdhof]geem_je`]a^`cdiq_i\g\_g_bXg_ccig`jglgf]ij]ggg]bhg_abe_ljd`hh^gde]a_jmYc^QYZekoukk[ck_]add\`ddVnglcYikV]dd_mh^Sd]eZeami`be^hlcfma\faac`edbm^ZgfcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccbbccccccccbccbccccccccccdccccccccccccccccbbcccccbcccccccccccccccccccccccccbccccccccccccccbccccccccccccccbcccccbccccccccccccccccccccccccccccccccbccccccccccccccccbcccbccbcccccccccccccccccdbcccccccccbcccccccccccccbccccccccccdcccccccccbccccbcccccccdbcbcccccccccccccccdcccccccccccccccbdcccdcccccccccbcccccccccbccccccdbcccddcccccccccbccccccccccccccccccdccccccccdcccccccdccbcccccbcbcccccccccccccccccccccccdcdcbccdcccccccccccccbcccccdcccccccdccdcccccccdcbcdccbccdccbcccccccccbccccccccbbccccccdcccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckcaYcYdo`gbTbbjjh\`ebbfnj^bam`eeb^ojX^dk`d_jemmedhYif[[]d\fbb^\jegdikocaai^Yco`bYf\`\c[chni]fd]mVfZZhd^a`anggVgbjdadfi`f\fQbbfX[idj[YdYU^Ze\cgjdZ^`bda]idfcgi\]\siZWmbmhh\]gc^gf_bfa^ckeeidcbZde\ofdYPdYcqjjdl`W`h[_uXe[[_miaejfoccjY_bgga_bji]d^jmibbbmf\dalgl]bacdbicjbdh_gdk`\`_k^``ahXmac_kfbe]Z]cW`^^\a]_el\Zbcaklb[gdahgjii`na\fe`bUg[Zbf[f_lmYbcdi_q]dj^`[ie`\_fejb^_gc`i_\bd^eedcefld^ca[hY`hab^`XW``dc_ee[gc\c`g[gYn[lbfgacclfobikdahea]h\_gh^c]`[bdca\bg_Z_[^gbjfi^k_n`^\bibjgj\blbaZ_`kcgla[[]aebcd`kZo_\n\\]qdY]eh]dccccccccccccccccccccbcccbbccccbccccccccccccccccccccccccccccccccccccccbccccbcccbccccccccdccbcccccccccccccccccdcdcccccccccccbbcccbccccccccccccccccccbcccccccbcccccccccccccccccccdccccccccccccbccbcccccccccccccccccccccccccbcccccbcccdcccccccccccbcccccccccdcccccccdb^e^hnk[\lrgbgrnc`n[YZvlF`gbc^dacdZe_kj[^oifb]cfjcgpeW_bdVamcggca``ekniZbV`]bZTYi_OQ_fgbjtiYal`w^eY^hnam@eojelS]l`^bWk_a^j``kLZ`[`VfcWf[Tpa]aZql_X_kjjkh\f\bfZlgx\]cehe^[^beeda_`q\i_hdekdkcdifXeXZc^d``ZlXi]_aimfgeheo\hnelh[UXZ\UgV_idUY]tpeflpigej`[mY__ktqfgij`TnbmdiYgbqdlm\ffheaelkekW}kYcnpjkggjYc[\ZdbkdT\\jTfg^g\b`aWX^Ygbdo_eX_gfk]hVcbnbYm]k]_]oeVXhkb`hadj`b[i_ia^SVlhYbe__`pecfpmidiVUbapeh\g_eo\a`V]e^oYocil]d_Mceg]cWbk`f^`]Yaajcc`hb]f_[Raeeg`ZgbfclqgVa[[\gg`c]_gaecohehgai[`ngdfrpVidc^Zbghlds]hX`hcjbn^bkg`]^]]`blib^cgdfhji_h^e_cge_Zeceadfgb]ee^ag_^_ec[ab`bfe]gbVfhgce_i`bfh^jbkbf_f`c_fc^W]ckdc_eZdahkbfef_ffd]dZc]llaegh\_cjdf]a`gdedhc_bYe^idfc_ddabf^dc`bdgidn^n^b^e_]_b`idfcbcj\aafb\febbmhheebd`]`_ic__`dlbecge^fbabccekafecgZa`bdfbd^ead]ej`fh`eekdcjalfage]a__e\hcdde\cabfd[lXcarhf[fgaZg^\hWdhiWbh^hj[_a`gjjdt`ehmfjlhiblgcWdn]cd^Y`gdecg^bewadebi_Zie_mf_beZ`mffggbffp_dfc_`XcHa`e`]ccake]ha_fiXae[ee_k^lg^nZ_d`=e^aa\]fjZcX^`emb^ikadc_^Xfmh`bkg_k^kecj]gkfecjeb^_ecc`cbd_hhkdXfc`i_deikYacmaibkc_egafXdage^a\cWUa[edoXife[e`]b[chjg``ib`abdb^eehqcfiflgk_bffd_cnaZ_jgfig^dcgic^egXd^hebfj`]eaf^g\]ab_dbjfXXce]`ghhd_^m\iif^_bgfYafghaYfeghcfkgdagk`da``hcbfdb_]kcgfd[kafd`]c[cficddc\XYga_ge`^_X\_mg_cdjk_kg[\debcabgf^ai^gc]gaf\oajkdcdea^`ecc^ga^gde\^deZaehegcbhbca^i\ddhe`kee_d^\ih_^dgbigddfc`bfgbcedabbd`b`dd_b`aacaeabbfagfaddbdc_afad`efceab_b_fdcea^_bddaacdbgfdcdgcbjaadbaa`^bffd_cccbdbfecafe_cb`jfaiab`eagc`cfea_cdhbdebchbcbf^bffgc_]caeciagfb]edefff_d_de`ejecddbcc_aeadh^jc`bdddbdghbbjfidicia_cdeaecfdkdbhieecjg`aegdb`cadfb`c^cgebddcdelebecadcbgjj[aee]eecdhfd[i_b[eb]ak]Zacja\r_jeea\l_`ajkbgfqe\kich`cbaeeedgdb]_ccbcd`bf_d__ddc]Ygbfddfkl`igZc_dgc`a`eadf`c^bhdfdbc^X]]baahce_ea]aed_j^`hiccbgd^g]lg`cd`fe`d[\haea\^ebbb_hgbhfehgid^hYcc`ba_bhd[bbdaa__cicfVbbdhfbgba`eei]abacecgaci_g^bciodijda^i]gf`f^bbfbjWgbefgc_hacaebmdhldacd[jbgfiaib_ceac[mgacehd_^i^`ggh_caaemhb\bebecacbehhdgc`aaeidfaf]`fj]b`b_h^kbegfghd`\k\_fcbhdc_b][d`d_jda]e^\]aceeZcZafcfeekid``h]iddcb[efhei_b^Zf`d`bfdj_fhjee`gdcafgcjgc`cahaffcakgd`j_]^cefccajc_^i_`_mb`g^c]Ygcbg\eb_^c_ba^`^^X_e`fcccccddccbcdbebcbdcdcceccaccccbdcddcedbcbcbcabdbcbbcbdbbcabdbbbcddcbbcebccbcdcbbacdccbbbcddccbbdbcbcdbbabceccccdcabccafcdcacdbcecccbccbbcccdbcccbcccdbbbdbcccbccccccbddccccccddcbeddbbbbdddcccdcbadcbaecddcbaccabdbcbdbdbccdcccccbcccdbcbccbccccacbabbccbdcbddcdcdgchkcc`ead\^^bccd`]gbi_aaeadek^ama_bafg\`ib`dbbe^h_^bmk`]bk`ekc_ceea^ajh_^_ebac`gaddc`ceebfb\ae[d^geeccbapl^mkbaeshdc_b_dgbh]dfbia]`cb_bg[jXgc\^a]jbbdYk^^^beYcdfjc`_aece^k_`^ce`_bema`ffc`^dea_akidfghgeaji`\``fba`^[`Zd_bb`[_kfc_`ieaga[aai`fe^ba_dcbdk``acfcccccccbcccdccbbccdccccccbcdcccdcccccdbcccccbccccdddccdccbccbcccbddcbcccccccdccccccdccccccccccbccccccccccccccccdcccdcccddccccccccbdcccccccccdbcccbcdccccdcdcccdcdcdcbcccccccccdccccccccdccccccccdcbcccccccccccdcdcdccccdccdbcdcccccbccbccbccbcdcccdbcccbcdccccccbeae`hd_dfe_aad_daibdc_befcaffad_cfdeccacdbbbhahbagcdf`beeibbegbd_dcebfefgda]afffcj`accedbgebafa^daffdacbb_afcbfad_fbbafce`cdbafg`ccachf``e\bh_cccfbehhb^`aa`bcdfbbecafbdababdc`cdbcebb_caeafebbc^imdcefd_bdcccbe`a`adaac_eeh^gcebbbed^bd^_cd_fccceb`eef`dbfdbb`cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccc`^[Ykzd`gc__efi`_`]dd_gccefgaa]`_ia[_jdldeg`hbhgd`igecb^__f^_`dch`ecZcbbf`h`Yef`a]lp_`jacZhaig\dcdck]e`di`h\fef^db^Xbaf``\Zig^c]^lXec`]hk]dbbh^[a]fa_\ccnSoWma`Xaeebbkakcdceala\_cfXijae^e`hldf[`b`[ccclkf`kdh^dabacd^ej`e^iZ__gfdbddr[`^bbajaeh`g`iib^^g`Z]bbmgcccccccccccccccccccbccccccccccccdccccdccccccdcccccccdcccccccccccccccccccccccccccccccccccccccccdcccccccccdccccccccccccccccdcccbccccccccccccccccccccccccccccccccccccccccccddccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccdccccccdcccccbcccccccccccccccccccbccccdcdccbccccdcdcccdcccccccccccccccdccccccccdccccddccccddcccccdcdcccccdccdcccccdcdccccddcdcccccccccddcccdccdcccccccccccccccdccccdccdcdcdcddccccccccccccdccccdcccbdccdccccddcccccccccbccccccccccccdcccccccccccdccccbcdcccccccbcbdccdccccbdddcdcccbbdccccddccdccbdcdccdaedccdcdcbcccddccddcccdecccdccddccedccdccddddddccddcdbcdccddcdcdbccdcdddcddcdcdddddddcdebbececcccdedcdcdddccccbdbcdccdccdccccbccddddecdcbdedddcdccdbccbdcddddcdddddccecccdcddcccddbdcbbdccdbddccddcdcdccbcccddddccdbccdaccccdcdcddacfegb\jdc]dngibjgajbccce^_jjcf^ifedbfcbmaiiafd]k_cbZ]heeaeaf_hgcagoabgceddZe\bg`[adc`]c`aZecgd[_iibdfbf\]^h^ebb`[hedcd\f]ea_ceh```bg[h_bab]^dc\bdef`]ai`e\lb_g\c__``_kbff_m^`begdgbheh^]e_``cdW^cb_ehf`Z`akb`_j^hZk^]afYkdh^f\ic^g^`lfafccbc_kec_`fgicbcbe\fiebe^eeedbc\b]dhahecded^ah\_aa]gch`]^kcfafcZa]b\`bba_hkkbab\cbchffc_bcccbcg[ccece^flgiiejg\ebccgfZd\ahcce``jZd`Wca_dh]eca\bbijYia]bkgZh_jhd`gb^bgjfa`bdi`adelfamd^ddheg_ag^bYbc^`^gb_h]biVh`ggchgfdeddhhkfe_dtcheec\hYe\Zf_k[kd_fgb^dbd^a]hh^bicf`fe_^aZbbgffbd`Tdjddecacabdbbccddedbbcdbbefccdccefecccacccdabc_bdecbgabcbbdfbfbbcdedccdbbeccbaeadbbebcdaddabbccdcdbabdcadcbaabbdbbdcecccbccbbbddcbcefbbbcdcccabddecbccbccbc`aeaf`caccbcaaefccbcaace`ad`deeccbbcdbbcedbeedcbccccbfcecbcccecaedcdedabebcdccbca`adedcaeceeddeacbbaeaedeigdfddakfb_hbfcgjd`egedfgacd\ik`da_a`ba_cg^hbcec_^f_c_ehaadic`jeka`bb[eaj[`d_^g^_dYf`b^Zf_djab^cajeZbab`ababbhlg^_^fcdjbacc_e`debi^hbe`e^h`bbcbb_]_`[db^bc``[dcih\g\`cW`Z_fe`fajfeb`kclbcaec]`g^`ebfg^bbhfcf[fj]f`_daach`hg_a_hfahg`cedgk`]`[afcmqZbgaadicba`d^`caS]g\d^f__keccfYjgg_`hbeeiald]eia`cdcchdad^^lbbecac_`jcd`][]]efq]iedkddeaaag`faghd[ae_]g^eaef[a\cecec\dYdgmc^hek`iaa`fcglde_^bmX`ga`f`acabahaachcobafb]cj^[ad`hcbc[[]anehd_`jbahabbej_`bhXmbjZabdhdZecdjdfc]`eheg^abbdcX`hiafcg_icm^e^ciabid\ibg\fe]]hgfcb_Wfgdgf_]eebabd`eic]fcgaf``edaaeada^_dbef`efedcaabhace`hb^efjc`d_edibc]a__ead^g\fe\a[idacgdbac_caddi`a^j`cjfh`\e[ldjg_^Y]eflagddg`bgj_gde_]big`egic``[ahcceal]d]\ffhj]gib]a`dh_f`ddd^gj]_j_hd`cbfbc]ebcegbacc\hcc_fbheh_kibhi\\m^eehbbd_gf]cmibef_fiefd[bbdbcg_daf^]cdcccbccbbccccbcdcccbcccbccccccbcccbccccdcdcdccccbbbccbbcccccccdcdccdbccddcccbcccccccccccdcccbccccccbcccdccdacccccccbccccccbcdccddccccccdcccbccbccdbcbccdcdcdbbbccccddcccccbccccdbddcdccccccccbcdccbbbcccbccccccccddccccccccbbcccdccbccccccccbbccdccbcccccbccdccccccccccccccdcccdccbdcccccbdcccdccdcddcdccccccccdccdddbdccdcccccccddcccdcccccccccccccddcccccdcddcdcdcccdcccdcdcdccccdccccdcdccddccdcccccccccccdccccccccccccccccccccdccccddcccbdcccdccdcccccdccccdccccccccdcccdcccdccccccccdccccdccccdcccccbdccccccccccccccccdcccgZfdabd`dgijdksbcijda`ae]``l`c\agkhehfbd\a_]]`]\pnre^[tcYqT_dbb\i`Xchhsi\^eQW_mcpcadf_deaXh_Xhkn^_YfzZ_Zce`QU\ZRknWmo_e]k]iea]_`gc_jf`\dY_`dahif_aS_ejgdoeg[ba`]YZt]heiƒgcghfg[^\ek_[Wpi`ijbjcVXemd``fk`\iiaYekkafrXdpobbe`kbcaMe^a[fYVqPg_^a\mi_cRtkj_cOg_gch^odfecb`dcacdiagccchbceefcceeaceeb`gebf_ceeacccef`cfccedebabebbcc`cccfcdffcbbdcfefaddbdfcbaaabffdddbacddcbcebaccc]fcbabccdccecdfbf_eda`eccecadcbbbbaa_e`ccebbcfbfbdabcghgcceeb`bbabgbdbdcebdde_cdfdd^aedfafbddadbeeaebdccdcdb`gdcbc`dddecdecc^`eecdbfbfbcbbcafhc`c_c_i\hdfjcglbfjc[daa_gae[_gahgb_geac`gbc``_f\[fjcfa]agf[cgdd_eebd`egafbb_dc_`hddgd_f_aiee`l]_cjd_iedbccidccaie`eeiib_debfh`f`a^f^_\_fiaabc\b`dfdcY_ccfgcj`fgicegbbga_fekXfbdabjg_`bacdeedee`jadchd^f\ae`emdg^hcgi`aci\ea_kaddh[`bagaadgcb`bfff`e_adfdea_ffe`dd^c`acbfbcf``ageceddf_fece`cdmedefah]fgcbjcfblcdX^`_ddcg^ifc[`j\_aff[cecbgcbZnedj`a]`cecfg`iea`jdcekee`hg___ediecb_dmbkeba`a`^abg`d`c]cbhaffdaa]d`cgibgbjgaYbejacdbccj\dhdfcljgcf_cadga`cdgcfecdlbd_f_`dfk^gdca[a]ed`^ca`ff_f]d`]`e`bbd]eb_^Xb_cgabehffccbf_hb_ga_hdcgaddbbffiadd`ffa`acd^aceejfbcbhc_ab_ddgeh\hdcdc``fdc]adecec`fb`fcdafbac^eabbeg`d`edee\e_`dfe`addhb[`d_^ddbf^did_hceaabedaaeed`_de`bcb``ad`figecmecdccaaadddeaaeeabdeecfcdaeea`f`cbdiecde]bb``ahbd_iacdbeigibhgadechbgeiadcffejdhd_cdgbagjcachceijbdd`^fad`edc^ccbbcdceafcbbccbebbbebceecdbcbabdceebbcddccddddecdabcebch`efebbdbcccecccefcdcbfcbbdcecbcbeeadbcccdacbdcdaebddacecbfddbdcbd`bceccedccaddeeefbebbdchcfbcdcdd`fbadcccddcbbecdaadbdecccecdedbfbdcccdacbcfcdddadcedcbadddcbcbccbbcededfec`dfabcd`dfdbdfebacfeaeddbaebibbab]adcceddbefebec`c^be\a_a`jbffbdbecgfcd_ai`i_fcbbffgifcbb`agchdeebc`befcbbbejgfaehfa]]dbbbca_ga_a_ded_cghbc`bcdofabfbejgacdahfa`dcfa_c_edaeedidg`cef[acaagecebaaedaacacgea`e^e__aah^aa^d^c__hddbbbcbaefcdga_abcdbdd`dh`befa^dfcg^]gfcbbea^`bbf`dcmebe`ide_dedbehldbffaeh^baddg]ffif`cd\\m]oladdejaf]eeodhf`bhda\ic^fd]d``hfhcagchd]]^_cciaXcbbddca^egabc[\jba`j`afhhg[affgcU^a[Yaggga_Y[bhfc^b`_e_fja[]bgl^a`Ocdddhhhge^`[cljdbcel_`\dXefchc[difk\bnhghh^`[eZfaajdgcf_c]d^b\eo\`k_a^bcfd]Yakh[_fagWcgaf_f`d_[rbZna^ehc_hcmg_ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccae^]YdcamfabV`e_`^db^[ag`d\iflha`\`eYdbeQb`aidbdaWcb`dm[Zgn^bmeb``bbb`iafZibaVbaebpf]ddng`ng]d]cVebkZ]`d^i^ddfh_adc\alec`qgg\g[ebicibggg\^Whgq]ecWgadc__lchdhjid``]aPf\`afdb]cbad\_dlegee_Zag^ZVb^bjd_`\ck`eaogo\]hfbhr^hbjlfgfhg]_YhgajcddcgYfjae_]ml^fhcbb`dbccddecdbcccccccddddcccdccdbcdcdcceccddcccccbccdbdddbcdcecbcccbcccbbddbccbddbcdcdbddeccdccbcddccccceccdcccccccccccdccccbdccddddacbcbddccdcccbcdcdccdbdbccdecbdbcdcdccddccdddbbbbccedbddddbcbcdcccdbcccdcccdcbccccccaccddccbdcddcccdccddbdcacadddccdcbbaccebcdcbddacadbdecedbccdcccddbdeddcdbbdccbdccdddcbbcccccbdbeccccdddbddccbcddbcddccccccccbdcdcdececdbcbcbcddbdbcdcddccdcbccbbdcbccddbbbcdbddbcbcccccdccdccccccccecddddbbcbcccdcbbdddedceddbddbddcdcccddcccbcbcdcdccdcccbccecddcccbccdecdbcbddcbddccccbccdccddccdbcdcbdcccbbca\cgd^``_aj]fcYabb^egbnglgb]j^eh_cn`]_gebb^gg]c]f_bhcaggka_h^Zebca^gcfjjcedfa_ee_b^acla]c`c[kgg\ca^_di]`\e^gdddr]hljj]ahfd^a`giYld]ibXi\^d_db^^aa{_m^ghi\egcfgdhYanke]d`i^k\gdcfab]ga`iedia[cbedcfc^keegeYf\iebdoec`dabdb`^hbceedce_gcfZccjafmbhba[m\bfYeeef\bjbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbccccccdccccccccccccccbcccbcccccbccccccccccccccccbcccdcccccbcccdcccccbcdccdcccccccbcccccbbcccccdcccccccbcccccddcccbccbcbcccbccdbcccdbcbdccccbcbccccccccdcccdccccddccccccccccccdccdcdccccccdcccccccdcccbcccccdcccdbcccbccccccccccccdccccbcccccbcbccccbdccccbcbcccccccccddccbdcccccdbcbccccdccccbccdccccccbcdccccbccccccccdcccccccccccdbccdcccdcccccccccdcdccccccccddcccccbccccdddcddccccccccbbdcbcccccccccccbcbbccccccbccbdcdcdccccbccdcbcdcbdccccccccccccccddccccdccddcdccccccccccddccbdbcccdcccbccccccccdccccccccbccdccccbcdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccadiaebcb_dc_kd`ea\]c`afc^`_fddd_fcfhabaac_gahde]gb`hac`qaaca_ag_e`f]_babcbeece^d^bbaiaebeg_gbbbdcagebcbcecbdbfej`dcc`dbead`bibd_a_gddaedbh`_a`\chbcdd`ccba`cbdb`e^ddca__aecjaggbehdaa`bhbgdd]`_a^d^hdc`ebafeabadbgc[]c^cbfff_bieibdbc^addgb`__f`abadd`bcbfda_ece``ddecddcdae\caadhfebbeccgaccdddbc_c_eg_effcdcabacaeaababfcb`cb__dai`ce_fbcbe]b]b``e`bjb^d]b`cbbcaafdgc\dcdccfc^]abccbdfcd^fiagbbccb`bhda`aec`_adcadcbcfg_gaedchbffafeceghag`cadb_acfbcccca_bfbbdacde^^ceaaaded_e^efaZccabeedif`cbcfeaaaccbfig_bf_fbeai`ifbei_akbccccbcbbccbcbcbbccdbcccdbbbbccccbcccbbccbccbcccccbcbcccccbbacccdccbbbacccbcbbdccbcdcbcbcccbbbbcccbccbbcbcccdccbcbbeccccbcdcccbbccccccccbccbccccbbcbcbcbbccbbccbbcccdbcbbddccbcbccbbcdcbbbccccccbbbccbcbbbcbbcbcccbcccbccccdcdbbcccbccbccccbcbbbcccddcdcccbcccddccccccccdccccbcccccccccccdcccccccccccdcccdcccccccccccccbcccccccccbdccccccccccccccccdccdbcdccdddcccccccccddccdcccccccccccccccdcccccccccccccccdcdccccccccccccccccdcdccccccccccccccccccccccccccdcccccccccddddccccddccccccccccccccdcccdddccdcccccbcdccccccbcccccdcccfcdb^\^g^d`i_\_`bba`igfidgbcgrcmccicXecab`hdk_`\ei^hjf[hd]kf^ah[_deiZb^`Ycabjj_c_c^njZaYjec`hbcbiafe^a`UmegfbgeiXn_d_`^aY]mggaefccggZgd\daei\ed^`cab^jgg^`gbffWla]bg`g]bddlbagabfYladZbc\cahb\g]ckcbic_dchfgb]cfjgdf^_bclca^df_i^bd]fhbXhag]efc_e`eknfdbbgdfij_igd`e`db`bi``]^daeb_[diaecjefeeY\bh^fcg_`^_Zbdhea[jpef`hb]`ag^``a_cdheeg`bkdVafefeebcgbbddbdg`dc`cb]e_g\__cebckdij_fagcb_fmfce^_^`dh`ccfedbacepb^_ace`dcc_obc_a^balbd[[cfeec]f]baiiXhbbdY[bfef_jm`\hgcbeiamddgkh^bZ_cigd^_```ieaaibecc`habg`dd[_fc`a_c`hed_ideb\^cccbcccccbccdccdbbdcccbcccccdcccdcbccccccdcddccccccdddcccdcccccccdcccccccdddcbcccccdccccbcdcccccccdcccbccccddccdcdcccdccdcdcccdcbcccccdcbcccbcccdcdcaccccccdddccccbcccddcccdbbcbbccbcbcccccbdcbcdcdccbcdccbcbcbdcbbdcccdccccdcdccbcdcccccbbdccdcbccccddccdcccddcgc^g\h`blab`cc]`gZbfc_fdb`heb`ZaddZfeac_kgc_ehh`b`q^]bab_hhc^bhj`b`fedfgbdhc`ecc_ecg^`fhca^ddefbh`cebhiceYgepgb_]k`h`^e`afei^bb^c``agihiiid`bjhcd[hh`ek[Xbo^\aeca[bdb`bcg_i_`djgfjcdcb]`d\bb`bafcdejfbhffga`g\bhf\ddac`fidXej[^aa^f]bd__`d^bh`bb_l\il`dhdjagbd\hcccccccccccccccccccccccccbbccbccccdccccdccccccbcccdccccccbcccccccccccccccccccccbcccccccccccccdcdcccccccccccccccccccccccccdccccbccccdcccccccbccccccccccdcdcccccccccccbccbcccccccccccdccccdccbcccccccdccdccccccccccccccccccccccccccccccbccdcccdbccccccccdcccccccdccccbcccccbbcccccccccccccccccccbcccccccbcccbcbccdcbcccbcbcbccccbcdccccccccccdcccccccccccccccccbcbccccccccccbcccccccccccccccccccccccccdccccccdcbccccccccbcdcdcccccccbcbbcccccbccbcccbccccdcccccccccccccccbccccccccbbbcdcccbccccccccccbbbcccccccccccbcbcccccbccccccdfcebacbddcecebdadcdbdcdcdddbdecedcbcbbcbceeebebbccddbccbcdccddebbcb`ddbdbecbebecbbdaccddcbcdbcfbbecdccdbbccecdfcebfbdccbdbebcbdaaccddcdeceec`dcdcddebbccbbcbdccebcdccbgcddbcaddcacccdddccdddbbacdbddddcccddbcbddbdccbededccddcccbdedcbbccbbaeccebaebebdee`bddbcccccccccccccccccccccdccccccccccbcccdccccccccccccccccccddccccccccccccdcccccccddcccdcccccccccdccccccccdcccbcccccbccbcbcdcccccccccccccccccccccccccdccccccccccccccccccccbccdccccccccccccccdccccccccccdcccccbcccccccdcccccccccdcccdccccccccccccccccccccdcdcccccccbcccccccccccccccccccccccccccccccccccccdcccccccccccccdcddccccccdccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccbdccdccccdcdbcccccccdbcccddccdccddccccccdcdddccddcdcddcccccbccccbcddccccccdccccdccccbcccdbcccdcdcdccdcdcccddcccddcdcccddcccccccdddddcdcccdcccdcccddbdddcccbddcccccdcccdcddcdddcccccccdccdccccccdccccdcdcdcdccccccdccdccccdddccccccccccccccccdcdcbccccbbccccdcdcd`f`kcccedbc``debac_fibabe`]g]dlhjja`icfea`eaci`k^eac\^k\_behgehdag_bhaeeiacf_c_k]affgbcicaahcabbc`a]cfeb_ae^`jhe`]`ia^`calcged`fcfdd`g`_adeaeacbg_]bacbc^j^g^dcfd^ac^bcbcbcbb_abha_ijjgbcjec_\f__fcef_gbYgceb\gceacbab^_]cd_adacaakbe_gcbedbbfccb`d`^cbfa^cbgghcebd`gaebccedhbf`bbdb`adacad`caededbdb`edebdbd``afcbecbbdcbb`dbaab`acddgecce`cgbcag`efcf`bcacddbeedcbdcf`decdbchcchdfdbf`bccfbbdae`cbfadd`eafebcbebdcacbfebecbdfcbdeedbbcbcab`cebgaeccb`daafbbeaddcegccafdcbcgdcacecdcbfdebcgfccddcagegccdacchcebdabcehbebefcbbb_erVoTgYS]igqorWWl_idcodkdOal]`gigXH[[e\hbgekljbdpcccccbccccccccccccccbcbccbccccccccccccccccccccbdcccdcbcccccccccdccccccccccccccccdccccccccccccccccccccccbcccccccccdcccccbccdccccbccccdccccccccccccbccccccdcccccccccccccccccccccccccccccdcccccdccccccccccbcccccccbcccbccccbccccbccccccccccbcbdccccccbcbccdccccccccccccdccccdcccccccccccccccccdccdccdcccccccccccccccccccccccdcccccccccccccdcccbccccccccccccccccccccccdcdcccbcdccccccccdccccccdcccccccccccbcccccccccccccccccdccccccccccccccccccdcccccccccccccccccccccccdcccccccccccccccccccddccccccccccccccdcccccccccccdcccccccdbcccdccccccccccccbccbcccccccccccccccdddcccccccccddcccccdcddccccccccdcccccccccdccccbccccccccccccdcccccccccccccccccccbccccccccccccdcccccccccccdccccccbccccccccdcccdccccccccccccdccccdccccccccccccccccdcccccccdccccdcdccccccccdcccccccbcbccdccdccdccccdcccbcccccccccccc`]abekkh\`k`bb]`c_ggkghacgfpb^^jaeecmhhi`f`gbZh[Y]_]`eYWdcbei^id`hja_gbda]^Wbebb\ci\be_Zec^^df`ae`_mbfa_]i_bcl`gdYajl_`adeechb\emcafab]_bca`^Zjda‹e^_f_cbd\be`ebcb_efdd`j`ccfcd]fd_hhhaa`jajabcah^bbhbccfbce\_nc^^i`b``eifcabbfnbrilah]^`\e`_`ci[fdabbg```b^gadgccccccccccccdccccccccccccdccdbdbcdcccdccbdccccbbcccbccdccdccccbccdcccdcccddccccdccccccccbccdcccbddcccccccccccbccccccdccccccccdccccccccdccccbcdccccccccdcdcccccdccdccbcdcccccccbccccccccccccccccccccccdccccccbccdbcccdcddcccccccccbcccdcdcdccdcddccccccccccdccccbcccdcccdcccccbbcbacdccbcdcdccbdccbbcdbddbbdcbcbdbbcccdccdcccdcccaccdbccbdddcbcdcbcccddbbcbdddabbcccbccccacccdbbdcddcdcbbdbbcbecdbbbcbccccbcccccccdcbbccccdbdccccdcbbcdbbcccbcbccccbcdbbcdcccbcbbcccddbdadcdcebcdccbbbbdcdccccbdcdcdcbddcccdbcdbdccdbddcccdcbcdcbdedebc`bddddadeebcbb`acceceebbbcebcbecbccdbddbdbdcbcddeacebcdfbeb`cdbba`eaccbbacecfabcccccccicddacedd`ddbfgggcccccchbddddcbdccdddbadbeeccbbddbbcebfeedfebadabdeaccecbbebddeddbccaca`cbdcbabadcbddcccdbecdeccddacccdbcbddbcbdcebcdce`dcdcddcedecbdddcegbbcbbebdcbdccdddddccccccbdecccccccddcccdcddddccccdddbdddccdddddccdccccdcddccccbddcdccccccddcccdecccdcccddccccdcecccdcddccccccdcdcddcdddbdcddddddddbcccccdccdcccddcccbccdddccdddbdddbcbcccddddccddcccdddcccccbddcdcadbccdcdccddddcdccccdddccdcccccecedccccddccccdcdcccdcdccj`bcbh_]g^[ee`f\e``emhb`defde]W_ed]`jba`emWa][[jh\kdgbi`gfcch^]dajYec[ffcfc\bdc`]nec_ecba`[afimi\Y[dadiblbfmb_TgibcbUcbhhchdhbgimk`c_afnba_g[fa^c]hf\bm]`aed`eeahZc\eejhg^Z]ihoee^g``bdbda`\b]ajge`^bebfde`dbbbej\``hhfekcdd]^dgfggakjhdfafmcedbe`^`afdk_``dfk`^ccdccccdcccccccccdcbccccccccdccccdcccdcccccccccccdcccccbcccdccccccdcccccccccbcccdccccccccccccccccccccccdcccccdccccccccccccccdcccccccdccccccdccccdcccccccbcdccccccccccccccccdcccccccccccccccbccccccdccccccccccccccccccccccccbcccccccccccddcccdcccccccddcccccddccc^eegdheaccYefcjgae[bacechg^chabd`_abc`f\hddgdee]iaacbbaYabeachgfhZea]b^^efd[[edbgh_`h]biagdaa`cdb]aambbi]`^da`fef^_kcahcdcqjca`bab`hhbieb`fgb\fcbb`bga_i^``ec^efgn]]d^amaa_k_cbc`bdbbZckg`bh]ehdc`egee_bhb`f^_fabj^`dgbdd`dfhkd`a^diZee]cfe\k`e_dhZg_ad_cdb_`jigccccccccccccccccdcdcccccdcccccccccdcdcccccccdccccccccccccccccccdccccccccccccccccccdcccccccccccccccddccccccccccccccccccccdcdcccccdcdccccccccbcccccdccccccbccccccccccccccccccccccccccdcccccccdcccccccbcccccccccccdccdccdccccdccccdcdcdcccdccbccccccccccccdccccccccccccccccccccccccccccccdcdccccccccccccdccccccccccccccccccccccccccccccccdccccccccccccdcccccdccccdccbcccccccccdcccbcccccccccdcccccccdcccccccccccccccccccccccccbbcccccbccdcccccccccccccccccccccccdcccccbccccccccdcccccdccccccccccccdcccccbcccccccdcccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccdcdccccccccccccccdccccccdccdcddbccccccccbddcccccccccccccccddccbcccccccccccccdcccccbcccccbcccbccccbcdcccccddccccccbdccccdccdcbccdcdcccccccbcccccccccccbccdcccbccccdcccccccccdcccccddcccbcccdccccccccccccccdcccdcccbccccccccdccbccccccccbbcccccccbcdbdcccccdcbdccdcdceccddcbebccccccbccbccccdcdccccccbcfcbceccccdbd`cdcdcddcddcccdccbdcdcdcddcdcccccdceccdbcdccdcbcdcdcbbdcdddcdccdcbdbddcdcddbedcccdcceccebdddbcdcbcddebdccddbcdcbbcbddbbbccccddcddccccccddcdbbbdcbbdcdcdcdcbcddddbcddbcccccccdcdcccddcbdccbccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccabggaccfabchb`ceddaef`ddaacbbgccdg`cddcdecfb`cadjaecbcb`c``ceacac_ccbhebcc_abd_bbcbcadcc`cadfcbagbbej_e`ecdacec_efbfc`defaba`dacgdgchcbahbaeebce`_cgbeeaefeddcadgddb`jbdbcbcbdaadeabccdecccadf`cedcbddf`agbdcbbacccaffefcbfdgeaadbacfccd^`ca_acc_cf_hfbea`cfdg`acccccccccccdccdcccccccccccccdcccccccccccccccdcccccccccdcccccccccccccccccccccccccccccccccccccdcccccccccccccccccccddcccccccccccccccccccccccccccccccbccccccccccccccccccccccccddccccbccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccd]aaedYif`dekg`e_`gedhag]gjcfdjefedbdacab_fiea`b[dfdkabkq]bdgagcfdibg_fhg`b_a`eggdf_cgc`mccc`_^`a^_efhcgegdehaccec`bdc`jahb_fgeagf`ecg]b`lkeifcc_c^gbdafeef^cbjchdhcfcc\hiiefeefbcagadadiefd_beebcglebgbchlgeccabeebXajdc`Zedff`_bbbgfeaZ]j_dcj^ac\[dc^`f`f`cba_fa\a`bcdfdcgbd`^cbcbbhbcbefdbga]eb_bg_`c`_ebbbdbee\eid^cfc`ce`cea_`df`bbac`dbfeg`agaabbebchcfdbbbfcdbbahgfddccebbebeccbfbbak_a`ddfbc^`c^`ccadkbdc`aeb``cbaecaaebfigdce_ddce`aeb_habecaef`debafa^_iehacdfabggddeed`acdfbddacheebikbcedg]ac`aaieafa_bf_`ebaa_bdeccbccdcdcccdccccccccccccdbccccccccbcccccccdccccdcdbccccccdbccccccccccccccccdddcccccccccccccccccdccdcdbcdccbcccccccccccbcccccccddccccbccccddcccccbccccccccccdcbcccdcccbccccccccccccbcccccccccbccccccbccdccccdccccccccccccccccbbcccccccdccdccccccccdcccccccdcdccccdccbdcccbccccccbccccbbcccdccdcdccbcccccccbcbcccccccbccbcbbccdcccdccccccdccdcbcccbcddcccbcccccbcccbccdcccccdcdcccccccbccbcbdccccccbccccccccbcccbccccdccccccccccbbbcccccdcccbccccdbbccbbcddcccdbccbdccccccccdcddccccdbdcddbcccdccccccdcdccccbccdccccccdccdccbccccccbcccccccbccccccccccccccbcccccccccbcccccccccccccccccccccccccccccccccdccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccdccccbccccccbcbcccccccccccccccccc^cj\ad\ge^ddb^l^Wicagchc\kchac]bfaccaef\\l_^adgbhde^iak\_]ggcifbdhdgaih]agfbd^dak[bfcee_i`_cf_^d__acc`ac`c_a`a_ccaebW_h`c^ajd^e_p\_cbdgk_[bcmai`ahheddfaj`ccgdYh]jf_a_^i^fndfddecac_ncc_ecgci[^am`hbhnZbirc`gf^[^k^e_caddh^a_hfda^ciak`cbjihjadnghe^fbcg_`g]`]\hcccccccccccccccccccccccccccccccdccccccccbcccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccbccccccbccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccdcccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccddcdcbcccdccccccccccccdcbdcccdbccccccccdcccccccdccbcccccccccbccccccccccccbccbccccccccccdcccddccccccdcccdccccccbddccdccdcccbcdddcccccbcccdcccbcccdccccdbcbbccccccccccccddccccbbdcbcdcccccbccccbccccccbccccccdcccccdbcccccccccccccccccbcccccdcbcdcccdbeccbcccdcbcccccbceccdccccccccbccdcccccccccdccccdccccccdcdcddbcdbccbcbdcbcdccbbccdccdcbdcccdcdcddcccdccddcccdccbdccdcccbcddddccccdcccccbdcccdcccebccdccccbdcccddccdccccdcccccdcccccbdddccccdcccbbddceccbbddddccedbdbcddccccbbbbcbddcccdddcbccccccccccccccccccbcacdcdcbccccdcccdfbcededccacabcaabeddeccecdcecddebbcdadbcecddcaebbbdbcdbecccccccdfedcdcbbeedcbbdbb`bccbd`bbcdfbe`dgcccccdcdcccbceddcdbbcdbdfcbadbbdbedcddcecbbfcbecfdacacecbdecede`badhcedecedacbaccdcaccabebdbccbcdadaddbbddbeacddfcbcccdebccccbbefcddebedfcecbedaccccccccddebcceceadcdbccbddcdccdbcabdddddbcbebdccbcdcddeeddeccccccdbbbcbcdbcdbcccdbccecccffcedcdcccbbbccccddbbccccdcbcddcdd`bdedec`dcccccebccccccccbcbdbdbdbcadcddddedbecdbdeccbdcbgceddccccdbcdecdceccdcfeeddecbbdbcdcbdebcdcaddcdcdcdecdccebcdccfdacddfdccccdfadddcbdbccdbcccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdbccccccccccccccccbcccccccccccccccccccccccbcccccccccccccccccccccccccbcccdcccccccccccccccccccccccccccdcccbccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccbccccccccdcccccbcccdcdccccbcccbbcccbbcccccbcddcbdbcccdccbccdccbcccbdccdcccccccdccccbccccccccccccccbbdbcccccdccccccbdcccbcdcbcccccddccbcccccccccccccccccccdccbccbcbccdcbccccccbccccccccbdcccbcdcbccccbcccccbccccbcdcccccbccccdccccbcdccccdccccbccccdcbcedebbbdcccdecbdbccecbccdcbcdcbcddccccddbdbcccebdbddbbbcececbdc`fdcbdbbeccbebbdeddddadbcddeecabdddb_aachbccbfbdcbcbcbcabcecfcbdcbdc`bddbccbeedbccceedddbbac`ccbdbfcabadbbeba_febbccdbdaacaddccbcbccebdd`ecbcdcdccfdcdcbddfbdabcbbbbeccedcdabacadeaabebcc`baccf`ccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdccbbbddcdcdbcccccccbbccccdbcdbdcccccccbcbcbcebbcbccddccbccbdbcbbccbccebccdbdccbccccbdaabbcbcbbbdcccbcdddccccdcbccbcbcbccccccccbcdbbccccdcdccbdccdcbcbcdbaccbcbcccbcbdbbecbcdccbccccccdccdcbadcccccccccdbcbbccdbaccdcdccddddcdbccdbdccaacdbccbbbdcddcccbcccdbccccccccccdccbcbcbccccccbbcdbdccccccccccccdcbcdcccbcdbcdcbccdcccbdcdccdcdccdcbcddccddbdcbbdcccccccbccdccccccccccccccccdccdccbdccccccbccccdccccdccccccccccbddbcccdccccccdcdcdccdcdccdccbcccbccddcdcccbcbccccbccbcccbcdccccdccbcddbccccbccdcbcccccccccccaddcccdbcccb^dYb\ecabfid]]idbi_gc]]eaaee]bacjcfbebaaf_^dc`ce_`bfcdmcf_bekabbf[b^j_hmfe`e\_gbjfccdeWeedidk_]dcafaakcj[`cgjh^``bc\ehe_cbiikdc[bZb^_jcgbbefaicbe]ca]^_adhcaf]fabcacj\`ca^\`^^l_aid`b^gi_f[ed[ihban]dca`cldYhfcb^]mh_`ik\df`i]fecihbfdalk`ebclc`gbf_geihibidig]]ccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccbccccbcccbccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccbcccccccccccc_h^cgceddgca^fc`ca_^degcdd`cbccec`b\kedbcfa^aahg^f_c_hbhbgc`_aecgageadagbbbgf_llib`h_adfebc`egef\cdibcdac`ebhabdbegd_ebf`fgjeebc`edcegfadf`adcgdc___dc`gedbdgc]cdb`hdacc`bdd_ee\`c_bkda_cc_kdbgbd_chdcb_^abafbZcbbdcff``f`e`dbdac`fhccfebcf_fkc`bbda`_fbhbbdcdcccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccbccccccccccccccccccccccdcccccccccccccccccccccccccccdccccccccccccccccccccccccccccdccccccccccccccccccccccccccccbcccbcccccbccccccccdcccccccccccccccccccccdccccccccccccccccbbbccccccccccdcccccccccccccbcccbccccbccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccbdcccccccccccccccccccbcccccbcccccccccccccccccccccbcccccccccbcccccccccccccccccccdcccccccccccccccccccccccccdcbd\\dab^idgjicgjTab\fafd\hg^bdcdadpdec[]a_cfdYheg]adhj`aX_ca\cfalfe^ikad_e\ej_eaaf_`c_Ubgfcccfj^`hg\fhef\kca]`__gd^jlfeb_a[dSiZd`]eaaj[\g`a\le`l`_gbac_`dbgfbagbi_dbd]clbbdeefeZgbicmfefadhacce\[e][lafj`Wgl`cgbjamcibbgjf`jehf_c[h_c^cadija_hccmfhp`eadafglhd`efh^\f_`aibicmhff`gc]_feY_]dci_b_cadeajaejffbce`km]bhkjefa_bdh^igkdh`faccbd`iccecg_fcecdclja_edebb`cde`abd`bh__bfaadfheg`fcbc`cadgahgdefdeg]ddba`dd`]d_`^ddeee_b\b\ce]iefgfbgb_afc`j]agi_cdgh]f\]Xcbii`_fe`_a`dd[dbeeb__cjhdgk_k_^bf[cificdc_df^`f`dld_kibceicfbddbdcbdcccdcccddcbbdcccbcbbccdcdcdcbdccccbdbdcccdcddccdeccccccccbccdccccccdbcccddccccdccdddcdcdccebcccedccecbcbbdccccccccdcdcccccbbbdbdcbcbcccdcbccccdcdccbcbbcccccdcccccccbccdcccbbbcbcbcdccdbbdcdccbcdccdccbbcabdbbccccedccbbbcccecddcbbddccdcccdccedcdccdccdddccccbcdcccddcccdccccbdcccccccccccccddcccccbcccdcdddccbccccccccccccccccddcccdccdcddccddcbcdddccdccccdcbccccccccdcccccccddbdccccccccccddddcbccdcccccccdddcccccccccdcdcbedcbbbcbcccccdccdccbcccdcccbcdcdcccdddccdcbccbccddccccccccccccdcbcbccddcccccdbcccbcccdccbfbdedmfcda`]fgccfgegedieacda`_f_agf^bedghcdb^\^_gea\c^cc`ecZa`lbh_dbbf_c`e\^_e`dbafh`_fbecad[fddcb`ahgcba_cddebcdc^_b^ecc_fhbbehdcadecbfeace_`bc^dcceb```_f`cdbba`e`fidlbce``ii`bck`adigcgdhdeea^e``ebihb\dc``cbeeddfdbbcbib]agcab^gad^bdc^fa]bebbdgfc_bee`hchhf`bhbkca_egd__acg_bf_aa^caebicbedc_adbbbga`hhdbeddb]a`^fd^abddfgeadc`gdc`ba`baeded`ddcdfdecg_cfgfdabbbdbicbbadgcbceccbe_dbbfdcdc`ed^abb`b_^a_dcbcd_cbbd`acfdgcggegdbbecbbe`c]d^cbceccjeebecicc`ccagjjdeachge_fb`ej_`dbbca`cefcdd`ebhj`ibbecbecbpeaceg_ccfe^cee_bbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccabccdccddaacbceebcdcdacbebdbcccccccdccdeaabdgcc`a`bbdcaddbcbcbcdddbbbcceccdbacacdacdfdabebdbcccefcbedcbcdabedfecdeccccbbceecdddebddccccdacdccccefdcafcdfedfccccacdbdbeaaddccccad`dcbcdccdecbcbbbcbdbcddbbdbaeabbdcbbadccadbcdccdbaeabcfdcfcbaccbccccbbddchcadcccbcccbccbcccdccccbcccccdcbcccbbcccccccccccccccbbbdbbccccbbccccdccbcccccbcbccccccbccccbcccbccbcccccccccccccccccbcccbccccccdccccccbccbccccbcdbccccccccbcdbccccbcccccbcbccccccccccccccccccccccccbccdccccccccccdcbcbbccccbbcccccccccccccbbcbcccccccccccccccdbcccccbcccbcbbccccccccdcbccccbbcbcbccccccccccccdccccecccccccdcbcccccccbccdcbcccccbcdbdcbddcbcddcdcbccccdcdccccccbccccbdcdccdbbcccccdccccccccccccccccbcccccbbbcbcccccbbccbcdddccccdcdcccbccdccccdcbdcdbcccbdcccbdccccbcccbccccbdcbccbbbcccbbccbbcccbccccccbcbbbcccbbdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccecdeefaabcc`ce`cbbecdcccdccbb^cagbcbcecbcd`ddecbfcfad`b^ebaceccacde^aceadbdcaaccdddebdccbddcdaaacbecbcbccbbafbeedbabgacedddec`fcafdbcfcdc_gagbbcfcbddab`addb`dbedbcchbd`cdfaabadcbddbcbaebcbfcc``ccefadedcdc`fdbddjceccdebbcdbbddadccb`ffbadaddfad_hb`bdbb`bdde`cgedagchdhgV`hcbdbZ^_`dba^_lbe_cdac^hec`gbc\cZiZcaqahh]]b^^cdeb[acf]db_aaaie`gcfchlbbea`d]afdea`e^b^fcccei`f]d\hbgc[]\hke_ee_a`adcbeba]c^ffdhe`a_bh\dbggk`jkbdhf`dgcgbfcd^ebdabjaedi_ekf_abegbdbeadgafcbgecjgge`_^faWgg_\deefba`hbahah`a__ifjfg^afachbakbffbgffcddbdccdcccccbcbbbcccdccdccccccdcbccbccdccccdbddcccccccdcccccccccddcccccdccbcccccccdccddccbbddccccccbcccedecccdcccbcccccccbcccdcddbbccdccddbdcccccccccdccbdccccccdcccccccccccccccccbcddbccccccccccdccbcdccdccdbcdcccdcdcccdecbcdcbddccccdccccbcccccbcccbcccbdcddbccbbbaebbcbcbebdbab`cadbbceba_h`dcbc`deaddbecdgbebefccddbchdeb`abcdcedfbabdaddfebdb`bccaedbgddcdedcdaedebedeacadcdd`bbfddccbba`c`edbcbbbaaccbedge`lbdde`fa`dddbcccedbaeddabdabhbbbcebcacdbccbec`cbcdbaddgcceefbcbbcdccbcababbbdccebcccb_cbccebdcddd_cabdbcaddc`dccccccdcccccccccccccccccccccccccccccccccccccccccdccccdccccccccccccdcdcdccccccccccccccccccccccccccccccccccccccccdccdccccccccccccdccccccccccccdcccddccccccbdccdcccccccccddccccccccccccdcccccccccccccccddccccdccccdcccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`ca]bcabac_l_d`c`da`Z_b^f`bliikghcb`]iYd_lZjj__[f^hbddjff`gdf`edcckib[kcdcegfa[_afkjkke^kaf`dfgak`fZa[^_]kcli^h_adbaeec`aa[`aeede`^b_bdbZ`jdg_^geegakm`bceabeefafgm]`ea]dbe`fbaehl`c_cfcefgagea^_\`abe_bckcbc\cXj``_[\ihe^bahjgaacb_cbh_`deijeaff_]`_pf^iaeec^d`cccccccccbdcccccdcccccccccccdcccdccccccccdccccccbccddccccbcccdcccccccccccccdcccccdcdccdcdcdcccccccccccddccccdcccccbdddccccbcdcccccccccccccccccccdccdccccbbcccdddcccdccccccccdccdcdccccccccdccccccdcccdcdcdcdcccdccccccdcddcccddcdcdcccbccccccccdcdccdccdccccccdccbccbccbccbcbcbccbcbccdcdbbbcccccdcccbcccccccccbdddcccccbcccccccccccccdcbcbcccbbccbdcccccbccccccdbcccccbcbccccccccbbcbccccdcbcccccccdccccccccbccccbcbcccbcdcccccbcbcbccbcbbcbdccdcbcbccdcccccccccccccbccccccccccddccccbccccedccbcccccccdcdcdccbbccccdccdccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccd_acbacddec^_fcbeaZegYehhbiebdg]hebccbejccbd_d_g_ddhZd`\gfb`ebbdacgca^bbfeg`achgckbaccebddc_gceeeiaaagkedegbfd_ebacdida_`cgeabbdcibaabdcid`eciccdfaf]fbebaeba\dcf^bbl_gagcccagaiccdc`cc`_b_d^_abaaidcbgf`bceedgeaaebb[bhd_]efbdc_ogededee`ffeebcdhdc`egcgad`hfab`bbbbaccdbbcbaebacdbaccbeebccdedbcdbbfdcbbdcdcbabccedaaccbbcbadbebbbbbcbcbcdabebcbcfddcacabccccccedcaacaabbbcdbaadc`cae`ebecaccacdbdfadbaebecccabbcccdcddbdbcccdabcccdcbcdddcdbcbbdbbaddcbcacbccccbadcbdeccacbcbcbdcbcecdccebbbbbdcacdcdcbdcdcacdabecbcbaccbcbdbccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbcbcbccccbcccccbccdbcccbcdbcbcccccccbbccccccccdcbccbccbccbcdccbccbcbcccccccbbdbcbccdccbcbbcbbcbcccbcbcbbbccccbcccccbbccccdcbdccbdbbccbccccccacbbbcccbcccccccbccbccbcdccccbdccccccbccbccdcbccbbccbcccdcccccbccccccbcbccccccdcbcccccccbcccbdbccbbbccdccccbbcccbcdeabccddccbcac`cbcdcccceccc`bbbdcbccdbcccccccabcebbcbadeccabdccaccdcdbccb`cdccbdaccedebbcdbacbcb`cdabcccbdce`baabbabadccaccbabccbbdb_bbcce`bdcdcbccecabdcccdcdcbccbcabcbbcdcbccecdaccdbbbecbbbceccdbbdbbcbddbbcccb^aebbccbdecbdbddcccacccaadcccccabf_ebcccdcbdbcbfd`f^^blg_ag]aacfcfbcfcmf]ilef`dX^^eabdaaj]adedhg[b_ahfbce``hgdfk_\`rhkhdeaYb^l]a_h`X`_caecce[^ddg_bhagcbbhac_aaeab`faccde`]aekhecgacjd_eYe\ea`d`]gbfbh^pddZ`fbY]^cdacp]_^\``f[cg`dd\d^`^cadigfdgepf`ef[\c`ebbbgib`ggnh^cXbd`b_iaaaekobmeg^bdbeabgii^ajda`co]af`ccccbbcccccccbcccccccccccccccccccccccccccccccbccdbccccccccccccdccccccccccccccccccccbccccdccccccbcccccccccbcccccdcccccccccccccccccccbbcccccccccccccccccccccccbccccccccccccccccbccccccbcbbcccccccccccbccccbccccccccccbccccccccbbccccccccccccccccccccccccccccccccccccccccbccbcdbbdcccccccbccdbccccccbcdccbcccccdcbcccdccccbcbccccccbcbcccccbcccdbccbbccccccbbccbcccbcccccdcccccccccccdbcbcbdcbcccccbcbccccdcbcdccbccbccbcccccbebdbdccbbcccbcccdccccbccdcccccbcbcbbbdccdcdbdcbcccccccccdcbcdcdbdcccccdbcbdcbbbadcbcbccccccddbcdcccccccccccdccccccccccccccccccccddccccccccccccccccdcdccddccccccdcccdcbcccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccdcccccccccccccccccccdcccccccdcccccdcccccccccccccccccccccccdccccccccccccccccccccdccccccdcccccdccddccccccccccccccccccccccdccccccccccccccccccbccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccbcccccccccccbcccccccccccccccccccccbcccccccbccccccccccccccccbccccccccccccccccccbccccccbcccccccbcbccccccdcccccccccccccccccbccccccccccccccccccccccccccccccccccccccccbccccccccccbcccbcccccddcccccdcdccdcbccccccccdccdcccccccccdccddccccccdcbcccdcccccccccccccccccccccccccccdccccccdccdccccdccccdcccccccccccccccccdccccccccccccccccccccccdccccccccccccdccccccccdcccccdcccbcccdcccccddcccccccccccccbccccccccccccccbccccccccccccccccdccccccccccccccccccccccccddcdddcdddccddccbcddccbdcdccdcccccbccbdddccccccbdddccdccddddadcccdcccdccddcdcdcbccccccccccecbdcdbcddcdcebccccdcbddcccccbbccddcbddccdcdddcddcccccdcddccccecccccddccdccccccbccbcccdddddccccecccdccdccdcdccbcccbcdddcddceddceccdcdbcbcccdccdccccbdddcdcccdccedcbcdcccccccccccccccccccccbcccccccccccccccccccccccccccccccdcbccccccdccccccccccccccccccdcccccdccccccdcdcccdccccccccccccccccccbccdcccccccccccccccccccccccdccccccccdccbccdcccccccccccbcccccccccccccdcdcccccccccccccccccccccccdcccccccccdccccdddcccccccccccccccccdcccccccb`ielchfadd[gqjgc`edhlijb]jej^l]]clYjeaegi\a`_bbibk`aZhqj_q`f_i^`bga[``hi_abbkZZei`g`d`Vp]gdcae_g[`\ag^e_che`Zi\jZWjV]abZnf`o`d_e]Znfgkajij`f[o^`fh\iedbcshbiib``nXiahjaVXeadcdbdd[]lhYjfec]`be^efdb_dggc]`\e]bbmiab_amedbbffW_e~h]a[`jk^dfd]Xhgfe`^Sidbc\ligah`kcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccdcccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddbbffeccdccccdcccbcbfccddccddbcdcbedcbbbcccfcccdbcccdcbbccedecdccccbebcccdecceccddccccfdceccdbbcccdcgcdddcccbbccdabcddcbfdbcbcbcceceadccccbcdgbdddecdbcddbcecbecfdcddcaccccefcbddedbcbdebcbccedccccdcbebdccbddccddcdcce`cbcbdbcccbbdcdecabccecddededddbdcbfdecebdbddcbcdbbcecdbdcbcbcccbdbcaaccbbdcbbeccccdbcbcbbcdecbeccddbbcbeddbcddccbbdccccccaccdcdcbdebccccecddadcccddecdecdfcabbdbbdcdbdccdbdaebccbddcbdccddcdceaebdbcceeccccddcccdbdcbbcd`bdbbdbccbbcdbcbbcbcddcacdc`dbaccfbdbcabbfcecdcdccecba`bcfdddbebecbccdcbdabcdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccbcccdccdccccccccccccccccccccccccccdccccccccccccccccccbccccdcccccccdccccccccbcccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccacaaad`begbb[``b`a`be`addfb`ce``gdee^fhdcedbfe_e\dejbceZ`bdcacba[bbd`dcbdfddb_bbdbegbdc`bbacebfbefa_\cegedfdbcabdefd`a]dddebecddadbe__cad^eb_f`aedee_fdjafceccbebbe``ec]bbef`^`bfcedcabdaa`bdddc`ceecbdjadadcccea`cg__egccabdecbcb_bdchfebdcg`bdfce`_eddhadcdcd`ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZd`efeegmfdNakd^[fggZdabbm^icid]e^f`[^chdcfhkdjdgb_f_bg]df`gcXfj_ajkehd[dilaajgal^adcZdb^bb^clZocbd[co`d]lkaf`dee^bclpe[d_ZfjbkeY__m]beob``Zl``Udc`glged]a^b[Zec^fjbfd^abZagc^]`bf\bga\[X`X^m`]b^h[ebbjh]kecgcgm\`aghY]ndfcklbibh^aZbffj`b`e`hbfdjqg\]icccdga\e\cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc[[khja_ddi[c`\ccacjcin``aei_ojfkagdddg^Z^ifaahbh_`cfcZjpebichhiibaedidd^^m`eele`dfdehm`Wcg^cb`jbh`e`^_k_eea]__k^aidn[Z`d`_jc]`gejeca^WbebbdaicidW^fjlbbfb^]g]_dakd[l\Z_laiadlabho`j_embemdif]_dlgaim`i^bmd]`igdechida\c]e\if\`dc_]eibbgZ[^cf\Zccfead\_ghXig^b_]`cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdbdbfcbcbbbbcbab`bddcbccbdcccbcdcaccabccbdbccccabcbccbedebccccabbfbbcbcccebcbbacbbbccbacaccbcbbdcbcabcaddcbbbbccdcbcbbbccbabdccdbbbcccbcccccbcaccddabcdccdddbccbcdbcabbbbbccabdcddddcccdeddbdbbcccccbaacaccbcadbdbddcdefbdbcbbdddacbbcbccacccabcbccbbbedcbdbbbdbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcbccccccccccccccccccbcccccddcdcccccccccccccccccccccdccccccccccccccccccccccbcccccccccbcccccccccccccbccccccccccbcccccccccccccccccccccccccccccdccccccccccdccccccccccccccccbcccccccccccccccccccccdccccccccccccccccccccccccdbccbccccbdbccdccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdbccdfbddededcff`eeecebcbcdaaecddbdbbfcccbbceaceccadgcbcebcdddecdcedbcccdbbebc`dfbffcdbhefececdabaeceddccddgfdcaadcdebdcecageccbcdcedfcedcdbccedccdeebcddbb`fbeeffccdgbicfdcdddbbbdbdcdbcbecdecbecbadbdccefhbeaccbeabdbaeddadeccccbccdcaaddccgcdccagecbccccbbfdecccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccdccccccccccccccccccccccccdcccbcccccbcccccccccbccccccccccccccccccccccccccccccccccccbccccccccddccccccbccccccdccccccbccccccbccdccccccdccccbcbcccdccccccccccccbcccccccccccccccccccccccbccccccccccbccccccccccccdccccdccccccccbcccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccbcccccccccccccccdccccccccdcccccccccccccdcddccccdccccccccccdcdcccccccccccdcddcccccccdccccccccccdcccccccccdcccccdddccccdcdccccccccccdcdccccdcccccccccbcdccccccccccccdccccccccccccdccbccccccccccccccccdccccdcdccccccccccdccdcccccccdccccccccddcccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccebddebcdcdbdcccedeeccceddecccdecdcdcdccdcddccdcdcdcbdbcccbdcdcccedddcdccccdcbdccccddddcdddccccccdccddccccdcccccccbdccddccccddcebccccdcccdcdccccdcdccccceddcdccddcccddcdddccbcdbdccccccdecccdcdcbdecccbddcdccceccdcdcdcddddccbedcccdecdddcddbdcedddcccccddcdcdccccccccccccccccccccccccccccbcccccdccccccccccccccccccccdcccccdcccccccccccccbbccccccccccccccccccbccdccccccccccccccccccccccccccccccccccccccbcccccdcccccccccbcccccdcccbcccccccccccccccbcccccccccccccdccccbcccdccccccccccccccccccccccccdcccdcccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddcddcccccdcdccbccbdccbcdccdcdcccccbcbccbcbccccdcccdcccbcccdbcdbdccbccbdcdccbccccbcccdcccbbccdcdbcdccdccccdcccddcccbccdcccccccccbdccdccddbcdcbcccccccdccdcbcdbcbccdcdbdcccccccbcbcccbdcdccdbcdcccddccccccecccccccbcddcccccbcbcccbccccccdccbbcdcdccbcccccdccccccccccccccccdccccccccccccccbccccccccccccccdcccccccccbccdccccccccccccccccdccdbdccccccbbccccbccdccdcdcdcccbccbccbcccdccccccdcccbcbcccccdcdbccddbcccccdcccbccdccccccdcccccccdddcccccbccccccbcccbdcccccdccdcbdcccccccccbcecccccbcccccdbcccdcccdccccccccccccccbcdcccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccbcccccccccccccccbcccccccdccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccbcccdcbccccccccccdccccccccccccbcccccccccccccccccccccccccccccbccccccccccbccccccdcccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccca_bedafcech^ed^dadcbdgfdid`ihbafabadb^f]eficbbeee_cgbeccbfiabedeeaf`cbcgdbg^`cacecca`fcdcbddffcd`cbhdbdcaecedeb_a^ecdcbd^dhdeche`_ccgdedfeddbac\cccebbdafdeg`bbdaccfdbcbcddcgacbecafgcacda_e`dd_bcdgegef_fcea`dbbdccbg`ibda_d^addccaj^edgciacdececa`cbgeaeef]g_bdccdcddccccddccdcccccddccdccccccccdccdcdcddddcbcbccccccbcdccccddbccddcccccdcdcccccdccddcbccccccceddcbdccdddcdddcdcdcccbdcdccddcecccdceccccdccddcccddddccccccbcdcccdccccdccddcbcdccdcccbcdcccddcbccccdddcdcccccbcddcdddddddccddcdccccccdcdcccdcdccddcdcccdcccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccdcddccccdbcccdddccdccbcccccccccccbdcdcdcdccccecdecddccdcccccdccdcccdbccbcdcbcccdcdcdcdcccccddccccdcccccdbccdbcccdccccddcdcdcdcccddcccccccccccdbcccccdbceccdccdccccdccdcdcbccdccccdbccccdccccddcccdcdbcccdcccddbcccddcdcdbccccccbcccccdccccdccccdcdcccccccdccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdbdbcdddeddcebddddccbdccccdddbdeccdcedcddddccccbbddbdcddccddcdbcdddcdecedcdcbfddedcdbdedddccddfdbdccccceddcceddcdbccccdfdcdedbcccccbecccddccccdeeebecfdddbcccdeccddccacccec`cbdeccddcedccdcdfdeccdbceddcdecdcddddacbdbcdbecdcccdccecccbbbcbdddccccccbdbdcbcbdcdaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddcccccccccccccccccccccccccccbccccccccccdccccbccdcccccccccccccccccccccbcccccccccccccdcdccccccccccccccccdccccccccccccccccdcccccccbccdccccdccccccccccccccccccccccccccccccdccdccccccccccccccccccccdccccccccccccccccccccccccccccccccdcccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccdcccccccccccccccdcccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcbcdccbccbedcbdbcacddbcbdccdcddeeebcdcdeccbbbbebdcebccbeecbcbbdccbcddcdcccccdbcdcbbcccdcccdceeddcdcbdbdddcfdbcefcdbccbccbdccbdddefdedacbebdccddccbcbadcbcfdccbdcbddbccdddbcbbabaccbccdbccccbbbccedccceaacbecdacddbeaccedcbadcbccabcecdfcbddbeebcceccdeddadcaccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccddcdcdcdddccccccdbccccddcdccddcdccddccccdccddccccddcbccddcccccdccccdccccdccccccdcdcdddccdcdcdccccccdcccbcccbdddcccccccdcccccdccdbdcdcdcccccccccddcdcccdcccccdcddcccbccccbcdccdcdcbcdccccdcccdccccdcdccbcdcccddcbccccccccccbcdccddcccccddcdbcccbccccccdddcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbddddcccddccccdcbdcddccccccdcdddccccccedcdcdccdccccccdbbcdebcddbcdcddcccccccdccdcdddcedcdcccdddddddbddecdcccdcddcbccdbddcccccdcccccbccccbcbcdddddcdccdccbcccdecdddcccccdcdccacccdccdddcdddcdcdccceddccdddeccccddccdcccccdcddccddcddcdbdcdccccfdcdcdccbcdccdddccdcccccdccccccdcccccccccccdccccccccccccccccdccccdcccccccccccccdccccccccccdcccccccccccdcccccdcccdcdcdccccdcccddcccccccccccccbcccccccccccccccccdccccccdccdcdcccccdddccdcccccccccccccdccdcccccccccccdcdccccddcccccdccccccccdccccccccccdccdcccccccccdccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddccccdcccccccccccccccdccccdccccccccccccccccccccdccccdcccccccccccccccccccccbcdccdccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccdccccccccccccccccccdcccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddccbccbccddcccdccccccdccdcecbccccccccbcdcccccbcccbcddbcccccdcccdcccccdcccccdccccbcddcccccbcccddcccdcccdcdcccdccdccccccdcdbccccccccccccbcccccddcbcccccccdbcbcccccccbccccccccdbccccdbcddccdcdccccccbccbccccdccdccccdccccbccddccccddbcccccccbcccdccdcdcdacgcacfaeaf`efdcia`ckh`agee_e_``accffafbg`feagafbdhbdf`^b`a`c`cfbbbcdc`chebd^cbbai`_dfb`edbdag`efadbeibahc``Zidea_e_e``dc_d^aaeadbd__dcibba_bba`b`ebcbabef`f`cahdgbchdl`abcb^ace_gbed`abcgedaedbedaf`feba`cdfbdbabcccbeiffbaebbfdf`ha_eiabfibafga`gbac_c`cfdddgaccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccdccccccccccccccccccccdcccccccdccccccccccccccccccccdccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccdcccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccdcccccccccdcccccdccccccccccccccbccdccccccdcccccccdcccccccccccccccccccccccbcccccccccccccdcccdccccccccccccccccdccccccccccccccccccccccccccccdccccccccccccccdcccccccccccccccccccccccccccccdcdccccccccccccccccbccccccccccccccccccccccccccccccccccdcecccccdcccccdccccdccccccbcccccdcccddcccccccddcdccdcccdddcccdcdcccdcccccdccdcccccdccddcddddccdcddccddccdccddccbdccddcccccccccddcccdddbccdcccdccccccddcccdccccddcdccdccccdcccccdcccdcccddcdccccdcccccccdcccdcdccccccdccddcccccccccccdddcdcccccdccdccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccchihh``ibca[abhag^egi^faceacdghhdkfdce`dgcdff]daed__bddek_ibbda`edhegjec_egbcdc][a`jb_fegV\dkcf_fd`fd``e_aabde`fX_\f]gd^cflZ_``ke__fj_lh^badd_d^djgfgiacefn^jflncaajdcc`fjgcb_]_fl]dgbe\dba^agabc`iecadk_dgZbl[dc`jXfacgheeehdcj`fh]gdii]ch^faedefhc_^cnebeehkbb]cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcbccccccccccccbccdccccccccccccccbcdccccccbcbcccdccccdcdccbdccccccdcccccdccccdbccccccbccccbbcdccccddcbccccdcccccdcddcccccbccccccdbcccccccccdcccbbccccccddccdccccdccccddccccdccccccccbcbccdccccccccdccdcccccccccccdccccccbdbcccccccdbccbccdccccccbccccdcbcedcbddccccbddccdccccccccbcdccccccdccbdccccdcccdcccccccdcdccdcbbccdbccccccccccccdccdbdcccccccccbcccbccccccddcdccdccccccbcdcccdcccbdcccccbcccccbccccdbccccccccccccccbcccdccccbccccbccccddccccccccdccccccdccdcddbccdbccccccccdcccbccddcccccbccccccdbccccccbccbcbcbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbeddcbccdbdc_dbbdaecdddcddbbbdeadeeabccdcbdccfdecbcebcadadgddddcbcdddceabgebdccadeccc`ceedcdbadacdbgcceddcbbaccddceddcdacbdbdbcfbebaccdccdeaacdeccebedaba`aaaeececbbcbcdcdfbeeabedcacaacccddebcbdfcccdcdfebcbcabccacbbdcdccbcbedddcdcbdcbbacdedcfbfccccadcdabfbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdbda`dbbbbdbdabdcdddcbcccdbbbcbdcbccbcdbbdcdcddbbbbaced`dbbcbdcd`cbdbcaabdedcddccbbcccbcbbbcdabbacbcccccdcdadbbbcbdccacbbabbbbccdbbdcccccbabcc`c`cddbccecbcdcccccdbdccecceccbccdbcbbebbbbcbbcccdbcbdbcabdbbdd`dcdcbdbbddaaabecbdaacdbdbccadcdccbcbceddbbdacdbbdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccdddccccccccccccccccccccccccccdcccccdcccdcccccccccdcdccdccdccccdccdcccbcccccdcccccdccccdccccccbccccccccdcccdcccccccbcbccccccbccccccdcdccccccccccccdcccccccccdcddcdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccdcccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccddccccccccdcbcccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccdcdcccccccdccccccdccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccfcc`d`bedcdfibecaccecc`bcdacfdicdccdcgadbdedbedbeacbbaadccb`c`aceccccddcbdbddaedgaefbbcbdcbcbaeaecbcebbeceacc`ecadcid`ceeebgecccddgdhagbacdedbed_cc]dbcbbdcdbabbeeadacadccddcde]ce_dddebddccbfcddf`dfcdbdcacdcddfbebdb^cbdd`dedbecdccdcabdccdbecdbZhededcacababcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccdcccbdbcdbbccccccccdcbddcbaccbbccdbccdddbcdcbcccccdccbdcccccccccccccbccddcccdcccbccccccdccdcccbdcbdbcbdccccbdbecccccdcccdccdcbcbddcbbdcdcdacccdcbccdcdcdbbcbbccbdcccddcccccccdcdcabccccdbcdccccccdcdcccccccccccbcbbcbcccbcbbccdbccdccdcdedcccccccdbcbcccdcbdcccbccccccccccccccccccccbccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccdcccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccbcccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccdccccccccdbcccccccccccccccccccccccccccccbcccccbccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccdccccccccccccccccdcccccdcccccccccccccccdcccdcccccccdccdccccdccccccccccccccccccccdccdccccccdcccccccccccccccdccccccdccccdcccccccccdccccccccdccdcdccccccccccccccccccccccdcccccccccccdccdccdccccdccccccdccccdccccccccdccccccccccccccbccccfaake^fmdY_bigbb]ciXaZfjkghfagiTp\_bd^dfj`efafc[b^dd__ie^[b_g\ahcaWalZWejfef_jccVbf^bf[ifhhemhiih__hcZsjddV]_cU_dbkcekggdega]efjceff`h_k`[gYkcbhiYad\]gb`_dgibeeg_Wb`]^Zf_f_cc]bca[d_^lgdhhgbmh]`haab`fb`gdeechbpf`fbWfnbabe]gif_behZniTte\Zhhdehhe^bciehtceo__bbgcca`ababcc_dfkfgg_abcca_bbfed\ehf`cah`fdb`\aeeggcedecaddadcccc`ief`he`fa^cbg`cedfdafcb_hdbfdbcdfjdcgef`cdcfcbadd_bdbbbaefdebecbbddedcafafhcibfcccc`e`jeaeeddgfbbdedfecb`ed`ecabc^af_fdccbebcebdeceeif__gccce_`cd`ccbdhcaaggffZbbcdd_bdecc\bcebacn`i`bbfc_g`faccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccbcddaccccaceccbbccbbbbcdbccddcdbcbbccdcecdbccbdcccddccecbcbdccbcddcdccbcccbcdddbeccdcccdcbddcdbdbcbccccddcddcccbcccaddddcdccdcdcccccccccccdcdcbdcddcddcebedccdcddcdcdccddcccbcbcbcccbdccbdcddccbbccdcccccbcceccbdccccdcdccecddccbccbcbcbcbdcdccbdecbcccccbcccc`bfRagc]c]x[e^le__mj_Wj]^e^lfrjqk[mddd]_^ndXqcZiccd[W`al_YKiqUf\eZ^c^`kj[]lsgn`^k_Vlcge_YYdajjdfbkb`emprg`wschLXnlt^_[Zf_dedaeaUjc]]akhWgjYzQYY]:\Xjcabe~Lf\k`flbhenZjYbcT]a^\^keahYlhae_gaid_\bY`bbbh\\c]_nnp`[^_^ub^m[b_aeii]bhg^oahbTm`d\fXZg\NkX]kr[dhkWidWbbcccbcccacbcccbbccbccccbcdcdcbcbcbcbdccbcbbccccccdcccbccccbcbbbcccbbcccccccccecccbcccccccbccbccbccbcccbccbcdccbcccccccbcbdbbccccdbccccccbcccccbbbcccbccddcddbccccbcdcccccccccccbcbcccbccccdcccbccabccccccbcccbbcccccccdbbcbccdbcbcccbccccccbdccbbbccccccccccccc\fd^b`h_mjfnei`^Yfak`cagl]]^_igug_bgdc]m\dQa[ebbdaX`\^k`fqaf]Zff`j`f_]o`cld^aZbZc_Vifdbh]ed[hccogpe_^ddl^hk]fZfki]deojf]Zajlflfjci^_[fZYlb`dj[paebc]knbmR`fb_f\diW_gXgkeb_mZgZcj`ghc^be`hjVe[ZZbjhpg[b][itie^fna`blcYZpefu`\fj`iRfhU_ecgh_hmgia\h\gfaijj__h`gfiakb`^]ag[gbed[[hcubbqd[bcg]a^cZ`kaW_iriheaj\eh^bfe^j[dVbTe`Z]fXdgbhiobeg[^de_`a`daa_]VdcddehgZ[dlkVYYem_`cceqa^egce[j_eikkoVhbkcfdb``^hg`dj_caa]^^]oa`j_f\dd\^dg`pca^U_h`Ub_gbdeaXZfe^gfef][_ce`h_^e\ZYc``dhd_edaXlbc_bkhbXikaeifedegeoZfbfWi`Zb]cbagZnh_`dafiim^mjaW]]a^Sab_p\]adca[i`fh[]hbkY`[^ho`gdhehe`pg]j\gkqf]jpggca_ec_rhfeaohjfemfb\ib^a]g^ccmfc]^aei`k\d\hjcYchbYfbaef]bibd_b`_`Xga_ihcjWrc`]cdhk`b`\afvg_baqmhcdfi^j\_gffaW[^`eVUaZm`Vncabdch_^jc`lYmWa^^af^idVbjhjZ]fbkeghYjW]f\f_mb``X_Z_gjjiejfr^gY\Z[YVnb^d`kh`__bebbbd_bcaebchdbfcbc_ehbdnefdh`_ebaaa`egd`jck`bege]faf_ccag`_ee`cbebec_ae^_hgabch]`^cbbaacecedggeacdedabbg`eaeeef`bd`bdefdhhb^a`\adkccfi`ddfbc`d^d\gd^^bh`_b^bhadfbafcdbdcdcfda`cdaaecdhba_edfd_b`bf`e_`b_ah`c^gfghafgcdf_baf`cfcgaccibgfhiabfdaefbadecbdcea^jbe`efdibececc^ebhcbjebbdad_df`becdebcad`dfdagebbhbbea_eccaaabg_baef]ca_a_bhd_^bcfdced^iecbeabdbb`dfcfehgbbabafbbeifddkkbhf`dedf`\`gagfhedga_af`\^afdda_b__``[d^cebceaf`badggde`geadgcdeeeicccecbad]`gfggbdebebbbcbed]cdebaddbafba]gc`fb_ge\j_`aaagedafaiccg_bb^e_eccccccdcccccbcccccccbdccccccccccbcbccdccccbcbccccbcccccccccccccdcdcccccbccccdcccccccccccccccccccccccccccccccccccdccbcccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccdccccccccccccccccccccccdcbcccccccccccccccccccddcccccccccdccccccdcbccccfjmfge][jjabVZeej]e\fl`Zaq^\ilio\eY^fe\akM``crdgchccehglkiqffn`pha`ddaUljaaj[dcifXxeg_e`ojfhea`c`bik]bZi`fcdcgeQ`[blnW_b[hoi_]efgb]_ccnk^am\Zfkend`ghnemVlgec]ja^__bUUfZ`eic^d[aei]ga`c[cdgjTdk`aYdr`eWilP[cba``fbkb]_[Zja`dcdY]`bebdfi\`V__ga_^hgll[igabij\^_habedccdcecccacdeeecddbdadebdeecdedccecdebbbdcfbecfdebeecdceecbbcdgcebdcdebcacceeccecbecdeacddacddaccdebccdfccbdcebdcedeadcfbbdcdeccaeccbcdeabcbcddbcddcbdccddbcacbbceaccdcdegdddcdefdbbfdcbdadbecacbdcdccbbccbcedeebdeddddcccdcdcfcaacbcccdaccbceebcecdcccebfdcdak_dWnmV_Zddgf]e`Z^Vke^jh]d`jhadhhj^brgV[_aV_`_dh`]Zkm`ilh`cgh^Vpa\[sqXje]gkfZeXZd`d_\ibbSajieWei`ghaZZ]hYb\ydKkheR[]i_bkc__ge`\kafZdU^eaNfo`Xbifesj^bjgk_]mbkhhYh`mb\de_ds^]g]db]KW[j`ldji^]]\idgWjc]TqehvgegodT``Rh_iqfeomeYm[dbb^l_m]UiZebrgaliqcVi~aeaUc_`Y`mddcdecccecdffcbccbcbabbddddcdcdfecddedceccecfadedcfadbbccbedfeadbadacedccbfcecccddedcccccbbebacddceccaccbdadedbfcdbdceaebcedbddccbafcddebddacabcbfdcdddcgb`dbbbecedbddceccaceabcfcaadbddeeccecbbccaebedfcbcbdcccdc`cccedbcbbbegddaeceebebdcbddedfcbdadeebccbbccal[e\[`r]coakbb`hiP`baf_h]^jqdobg]ecijWdw_lhcdf]q[^Yb]^`agi^c__je[mgmc]c\c`^Ydf[ecb^agh_[^c\lc_]an_qfLgg]enli\]e^cXbOcY[b]ihegf]`gfhVZ]cT_[kWbmleZdZoUcdfffjf^[i^i]affcehg`fcn_eegZ^ev{\Uio^j^_gcqe\fXbra[o`ahebgicbfrVeUai`_Yjafaf_jbi`ogggWWLdj`moaga[jdanbcb[kdedcdccbaccdecacccdbcdddccbcdecdcbabdcdddcddcdcfceccddcbcdbedcbbccbcdccdcdddaecdcccccecdbcccbccddbdddcdccccbbddcbecccccdecdbccddbbcdacedeccdccddbddddaedcbcbdcbdbdcdecddbecbcdcbbbdbdcbacccdbecdcdddddedccdcccbcebccdedcbbcbdbdcdadbeccdddgddcdccccccdbbcdbeccdcfgfd`in\heZfqb`i_U^gU]eie\oebbpcdh_djbYuofsdfi`fUalVWjkgfleblaekb_dd`e[kc_fd^`e[\]]hie[dk_gp^cfhgi^h^_fc\amhl__^_hflm\ZcYhaeafiiRdic`ucd]ie`\nY]cOiq_ec[mdsdkZ\`dU^cgl_^gatddXg_e^cahp\df^Wj_aQ^YeRkaajgdWhYpaee^dY_Z^dcj]`^bZ_lbm[Zbie\gka][ak`[uf_pdc^iqnc_shkfciejeb_iZ^_Yqeibjhc^dea][Qedfa[`ceic`q_f`]c]^_mbi^kedfY`_\wfc[[fZ\ag\gWjfeebkSagjlkde_Zdhcdi_]egje]deg^^_f\Ni_be]iRb\fdajje`]cdaXgcd]\ibW_eWXb_o_lƒcecgsmfg_^alZbpcblde\c]fYe`vj^jmbScfgoaeackk^i^fe^_ngh`_akl\d`_[[igdcx]bVsacbfi]^\ml]Vf^iadjckob_bfchhih^^ga`cdfbddbfcebdccdfcdabeedccbdcebccbbebbdbddbbcccebcdcc`daabbdbaeccdcedccaececedcbbdccbccfddebdddfbcddbabcddbcdbcdcccabedddcabcdcccdddecfbddbcececbdbcddddbecccebccccbcaccebaaebbccdceddbbcedabccdcdbcccchcacdbdcbdb`ccadf_acdbf``decddbccbcedcdddcebddbedbccdedcacbcbcddcdbccccbddcbcdddcccdbccdbbdcdccdcdccdbddddbcdcccccccccdccbacccccdbcddccccbdccdcccccddcbceddccdcddccdccccccccccdddccdcccdccdccdcccdccdccbcecdcbccbccccdacddccccddccccdcdceccdcbcccdccccdddbcdbcdcdebccccccccbcebcccdcdbccdcbcddbccccdbcccdccddcccdcdcdccbcwjio^b\ana`Saf^iVgc]`jceccd_fcbdo`W_[TlYl_kh\Xj`j\j_a[gceegeil_]_X\`kdgca_fcda_^Yhejkejb_cYggfce_`^afg`_fd\aasbfel`f]c_ld`fU\[iXeUagceelaffaadhbeacpc\\\Zc_^UjfifX_ebeafggfq^l]knfl`bc[iagcbfgb_khldjmeb`YZWb\b`olZXbk\Wgc`kg]a]iYd`heh^^dlfcdfg^m\l_bW[ceicd^Z]_edbbggaegdb`eabbec_edbfddcace_d`fbbdbeccfgebdccbffbe``djde_e_cd`abccfeadefdeccdbe``bff`bdfedbifdacbcibbgcdbecdaaf`ddc\bab`bc^aebhabadacadde`eba``ddcac`_efahfadaacceggaeeagdja^bfb^afdea_dfhfdbaghcgedf``cfa`ab`a_`eadef`e^difbbbcebbb`ed_be`defdedcfffeeddc`efcbddccdcdcccbcdcdbcddccbdcdccccbcdbddbbcbecccdccdccdccccbacbcbdcadedccccbcdcecbcdcdddccbacbcdccccdbbcbddbcdccccbecbccbdcccccbcdcdddccaccdcbdccebccbbcbccbccbccccccdcdcdbdbbccdccdcccccdcdbcdecbccccacdcccdccccdcccdcdcddcddcbccbdcdddbbdbcebbbcdcceddcccbdccdccdd`gdia`je_bth]VgfakYbc[iWagu`_oXc^lhf_hfch[_dgjefbZ_^mlooac]ffblcal^Xechdgbdb`cbh]_fgk^`^`[bdmf\_]che`oYRjVv\^^\Y_cYU`^dhcikg^jed_lfe^fjfebdjbaX__bbhVicyc^a`[``gjYeg][dilc^ggpafkfhbn`]`gpXd`daqfXYad\d[hg`aejaj`gdj^`Zf`_eZ_di`jhb]fduecf]dbcadgTd]Zjdcgga]d]_dbfbcfcaacda`ccbcbegabbdabbddedaccacdbecbecbgbcdabfcdbabafcbbbca`bbcdbc^dbccaebbccbdcdcefeefaaedd_decccecbdeadcedebdec`dfabdcec`dbdebdcdccdddc`c`db`cbbddbabdccbfdbdddceafbddebaccdba`ceeddcedbecbadabd_bccfccceddeddcdadaa`efccccdgbcbbbb`cbcdbabbcacacbdcc`ceecccabcbbabccdcccbcdbbbbcbccdcccacbcbcbdcbbebdcbcacdbcccccbdcbaabbbbcdabdccdcbccdbcabccddcbbbbbaddbcbccc`ccbccbccbdcccbcbbbbccdaabacdccccccbbdbabccc`b`ccecbbcccacbccbcaccdceecdcbbcbbbcdbcbcb`bcabcdcdaddadbccdcaccbbbdbcdbbbdbcbcdcbcbc`bbcccbbcbaebccbcbdbcbabC``ugb]Toc`hNmhSz`bNWcfZir]b^nfXWdgcbhjec]adjdOihqp]TWjf_[mDc`qnakla[eLhfUVgfogah]`cblbFhe]\k^fdodQeoc`cfhZbijdje[vfjjleb\biW[jl^aba\memce[akdjeejVdclcajh`bflUecca_\_chekccifebkn]Zfl`jhY`^jfirjd`gi_a]rYcbaif]dk^bbe`o`cleUYkda\oZhhWU`cdced`a[dmc^\_f`ecZemfc^Z`ejf[M\[fa[QWVham_[ckUl\n^fYd_g`ad\iX]keh^[kgjYcb]hZWQddkc[ic`^h[]i^]`]i[jilfccWahiZgcif^bsXej\dajX]rqhbj]ddagllcjfa^^u\]ae]b_heqtceafe_ahSbofc^gZ[jeWl^pi]l^ohgch^qld][pTZphZeU`hYjdie_v[g_l\hap_\HcibSe^^qik]eZeZXrb`_]hfejjniW_n\dZfmmfjjbidx^bfbjp`h]dVW`edU[`m_\u[XaVqkcY]_agd^mlqpcQ^_on`mmdVdjZ^ka`mg\ecZ`Vgk`^lLdibehdpcdMfd^\m^[`]``ag`]]qhUZPdX^SekZZ^d^`jfe]`gZ[g_\ckg`nch[\]qelamjcYTdoigi[f^kgmdfdp]diiqk_chX_kgfcnmVcWv[uY^^_`bcT\c\idfd\g^`jkjcYae`b_i\j_iaZalg`ae^Wcd]bbd_clkdkeik^^^^qeif_eighcif\gXeodah_aeT]go\dfijbe^jXlac_cseddjhk`ceg[b`da_hjc_^gjj^geae_e^bbigiTd_onugf_iaicce`hf\bfbj_gYjlgfcT`f`]n^[hed_ddfgaf]^ijfbWXc``c\eZbSnhhi_\Ze^adfdcdh^i^`eaWadnmicb^kbg`^vdighXjbmklccbcbci]h]cebg`elhrh[aib_`k`X_fge\chikcm_a`dmbf_c\gYdb[`]dakfiXh^g_hbi`Webddgbf_^b\hkcfg^ekchb`ahgg]hgYmg_bcc`gg]f[^gffhf`nhhkjflajchebkjhefb^e]d]gmid_Z]eca^jXaenfdagdidiba]if`_kd__[_ae_ae^i]gnj]m_``][_bRgfa`m^d]iiX^d\a`jdbk]eYau_efckcgad^fdcb_ecehgaccebgVdO`hbdcbfoh_ckh^cjdqc`cZ_fbeai`geb_b`Zb\de`hYWjdfh`Y_d`jadce`]^nc_[noe^epe]kf\ajba^[`Zm[_ebf^c`dd_^ga`ebckeihabcjkada]`b_`jccm_geehng_aidieaeggn[k^[hfe_ac`jhcYt`cagbff_g_\dbbgdTkjii^Ybcb^_fgkZcfe^_c`Zh`eMiefYj_Xaejbj^f_\bciae^^c`dbad_c_ZZb^`la^XafcaZhgbajbej_\bia_caid_b_]ajaeWeekdSYhbdct]n^kl^bha`^gmfdan_\bd\e_ed[c_k`Wfb_fdbafeeb^\dWcbecfi`feeek``fdfcce]ggjZcbfhi^cdcdafopdef^Year`dYcqh`hhpaa]d`\ci[g^^Z^Padgd^bU`ghfbb[`[fbcb`dk`cco[fb`_`]eYka_d^gddUgaf_kpbhheoafgba`_afb\gaidegc\pfj^Wg_bdbjXa]V`edYX^ctbiacYehb\nigeg^c`bbg[jb_ehecf__]`ddf]cikddiX_foladla]eg_d^a\^_dgdahbjanjeak`d^hgd\__cjfbeacaaahaheb`e_]k`cck_`cgj_aaeccaeddbaeec`cbcbbebbdgfbaddgbeabgbabcbddfecedfddfa`aceddgcddcceaaddcccaddgdbecd`dfd`decfdbbfe`bded`afbbccbdcgdde`ffdeb`bdcdadceeddbfcaddda``dgcbcabcdbgaecaddceaacacbd`cejeegcbbddcfbcfcd`c_bbdgccccadbfdcccdcfbdafdediadbdbledcedeeccedeceeef^fcacdebagcccebccccccccccccccbcccdccccccccbcccccccccccccccccccccccddccccccccccccbcdccccccbcbcbcccccbccccccccccccccddccccccccbcdccccddbccdccccccccddcccccccbcccdcccccccdbccccccccccdccddccdccccccccccccdccccccccccdccccbcdcccccccdcbccccccccccccccccccccddcccccdccbccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccbccccbcdcccccdccbcccbccbcccccccccccccccccdcccccbccccccccdccbccccccccccccccccccccdcdcccccccccccccccccccccccccccbcccccccccccccccccdcccccccccccdccccccccccccccccccccccdcccccccccccbccdcdccccccccccbccccccccccdccccccccccccccdcdccccccdecfbdbcdcabedeaadcbabdccccdbbedcdacccdcdcdeccdbcbcedccecbccddfb`dcebddbdecbceacdbddbcdbaddbecdbcccdffd`dceaceabdcbedccdddaddceaebbbdcccaeccedddec`bbddfbdcebbcbcdccddadedefccccbbbddbdcccecccfdeddecdccbcccccabbdecbccdeddccdfcadccaccdacdceddcccccabbbccfedcddc_dbec`dgfa_jchlhe_dfcdbbcdbahdf`ie]hcldgafcdgT`cgibc]hbmc`ef]cg`agafdg^fjk]anghk^aad`j]b[`_e`^j^c`h]bb`bldf\c_hdagc|d`a^^delcdlibce`cafnkig^ej^`]_b^`kXdkhbb^b`cefcehjafmeai`abcYg`dcehad[]Xifa]cch[eaf_cYd`dlj\bh[bm`b]a^`]c_lifkbebc^Z``ch_bgchhbbfee_heefbmkbcch`]fSZfd[_eUefZcbefn?\bt^dWbck`bX]dagr[`e[dg^jbbhn`cdb`g`bgch`gl`nj[ee_Vb_Ul`^^^YddhZdgfe_heid_]kh\hem`ffhaiiYfj[`bbim^`gc]^[cfjcked`i`]hdZjW_[calekcaa`a]j]lgjcpaqaitbe[f_hilic[fh_a]ogoah^daY]oeqd]ahkbabm[d\qhc]]kb^akf__\c]eb`dlchVg]cb_\fagb`defe]`ebkbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccagcahegc[g_^cd`dX[^a[cgdeeQag^`hgehggc`efa]e`]fdcdaac^`fac`baffe]a`_accbcbc]bhb\bga`fejiac`bbf]i]_jgcbedfijfgbdacbcjcc``^b_dihQhgdbf^ge^abbcfjgeZbacbh_db`e_ba_adhgef\^cbdebcab`g`idhce^ahhbh]ad`bbdc]he`cjgdfn`hcdjigb^dcfhhjma``a_d]`fda`i^acffh^fh_eg\aae^ghibcaccfdabdccc`cbddbdcaddcbbbdaabcbccdbbefddceccbcdceccbdbcccbfeccdccbcddcbcdcbbdadcdeaececcbbc`bbddbbaddddfcdbcaebbccdfbedcdddacceedadaaddcddedeccb`dbad`becccebcdbbadbcccdfddccaccbbbbbcccbcbceabdbcaaecbdccbcdafaedaddccedbdccdccdccccdcececbbdbbbda`debccdddedbcbcbcbdcdcdbcdeecbdbdcc`bbccbaccbddcdccdccbddbeccdccdbbddfacbacdcccccbbdbcccbdcbcbcbddac`ebcabcdccdbccdccaaccddcccccdcdccbcbdbabbcdccbcccdbccedbbcdbceabdcccbcbdbcdccdcccbbdbddbcebdbcdccccccbdcddddbcbdebcceccbbcccdbcfdbabcdcebcdcbcbcccdaddbcdccdadaddddbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcbabcdccccbdccacbc`dcecacacbadbabdbccbadbbabbcbbbcedceeaccdddadbdcdcbbbbddbaceecdcdddcdbb`dcebddbdbbabcbdbbccbcbadbceccdccbebbdfdbbbcbcaccdbdcecdbbgbcgdbecbbcabdadabccbfdbcdaccdcbcadcbddabcecccbcecbccdabdddbdaacaccbbabdbcccccccbfcdbbbecebcdadccaadcecccaddcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdadbddbdcccecdccdcbadaebccccdcccdcbbbccceccccccbcccecbbebdcedbdcacccdcddbcbacbccccbbddcccddcbccbbdcbccdbcdefbdbcdbdcbddbcccdcdcdddceecccddcdcccbaccdcdcfbcbdcccddcccccecdbdccbbebbacbdcccccdcdcccdccccbcbdcdcbcccabecbeccebbccbcbccabcbcbbabbcdcdbcddebcdbdcbbcbad]eacc[cafcccacedeccbf`fcdebdbcabdaceddcb`f\gd^`h`^ceac`bhcaccc^cacc_bb`gebegc\ebegabfec`ade`ciba_dcc^bcaadddh_bfaeeaaefZcah__^adaedcehbd^c_`c`cdaceaedgcce\a_ae`bccd``lbaidccegag_a_debddbbedbcb_b_eabaiedcdcaabfg`caca_bdeedeefc_gdc^bccfdcbecaecaeafccceacbfkfekde]hcldfi_^YcchcYde`igda^ikg]]d`ebhd`e_ffdfa`Ya`f]ld`cg^]ebi`gZ`lc[heehaFfkb_a]gdad]`]hjbc_bdg\fckjhj[^eiefdefagdcjh`befgheYe]afb\jd_hcib^bl]_cdX[dbjeh_fcn`m[e^_abjgaa^dcgb`jc^]c`f^Z`cbXemgeb`cgjcba`a]ba^b`faddhcc`_d_dlib]gakc[hhae_ccdad`d^fkc`edhbjg^ccccdcccbcccccccccbccccbccccccccccccccccccccbccccccccccccccdcccccbcccccccccbcccbcccccccccccccccccccccccccccccccdccccdbccccccccccccccccccccccccccdcccbcccbccccccccdcccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccbccccccccccccccccccbccccccccccccccccccccbcccccccccccccccccccccccccccccccbcccbccccbcbcccccccccccccbccccccccccccccccbccdcccccccccbccccbccccbcccccccccccccccccccccccccccccccccccbccccccccdccccbccccccccccccccbcccccccccccccccccccccbccccccccccccccccccccbcccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccbccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccdcccccdcccccccccdcbcdccbccdccccbbcbcccbccccccddcccccccccccdccdbbdbcdccccccccccccccccccbcccccccbccccccccccccdcccccdccccccdccdccccdbccccdcccbbccbcccccccccbcccccccccccdcdcccccccccccccccccccccccbcccccccccdcccccccdccbcccbccccccbccccccdcdccccccccccccccbccdcccccdcccccccbccdbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`dcb_dgYdbi_c`engbYWZ\``mZ^`bge\ghdk^dlh]e]QUidcd_ekj^a_e_a[bkbped``\eoecfkf`c[Yifd\icnk]`bnegjc[_aaaScb_gahgba\g\c`bocl`efcg[c_]dbjecei\jfh[ecle`bbd]hj`ag_gii^[bjcfbca^blcfh\X`ahefcekZ_e^j_kN[d[aY]eagdYj]p_feaae`\cbYe_n_be^e`[bj]ddd^ZX]jihf\ahcdfmdfc]dp^eccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccbccccccbcccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaabfacdc`ddbc`accebadbdddaccbadddaccae``bccdadbccbe_bbde_aedcdfddfccbbdd`cccfdcaccadadecebbaabbabebdd`cdec^dagccaccdccccacabdccb`cc`cbbbecadfeccdcbc``dc_cfbddcgccbdcca_cdddccccfacdbfbad`b`bbcceabbcbadebdaedfde`cddbfdcabacbcc`ebacaaaebdeeacc_cdcfdacdbcbebdecccccccccccccccccccccccccbcccccccccccccccccbbbccccccccccccccccccdccccccccccbccccccccccccccccccccbccccbccccccccccccccccdcccccccccccccccccccbccccccccbccccccccbcccccccbccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccbcccccccccccccccccccccccccbccccccccccccbcccccbccccccbcccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccbccccbcccccccccccccccccccccccccbccccccccccccbccccccccccccccccccccccccccccccccccccccccccbccccccbccccccccccbcccccdcccccccccccidg]iEdh`Srcei_]m`hda\kecfeflc`abec]Yicmdigcfd\a\`d_`hgfd^caec]kaZd\bifbeegeb\c]lj`db`il]ebkjZbgha\ba[eb^eN[ei\c]f]ajgYebdaaf`k`V_li`Y`mn^j^^odnjdnachema[f`loh\bZcdigkadok_cfYc\__b]d_bi_e_deb^_k_ac[kek`^`\d`figabfaia^ac^Y^b\i]aace`[]dif_d`nW\gafhf^hde\faab_mjkWd\koklck[dmVefkf[`rrd^cpac^UqWcW]e\ggi_jl\aflYdmchcebndcaefcadbcm]haehYZl`Y`lhe_Zi`dcab[ni_gio\a_ihcgibcgdaa[_`]fccj]\cl[mjjd]`afhj]\hbgi_al_bbiaidf\fah\fk9iiUg[][f\f`bc`_ghdef\\b`hdgliejc^^]^cX^YcIieejhfdac`cbg`cidbCdgadckej^WjbeYddagdjdbc_li`cj\ihf[cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclQ\e_fcch`bdf_\hXh]e`mc`dgdadeb]j^^khc`gdjfbedkfaeicg]cfdcbjbdeahiahgckf`gd_bgahb^gael[_iZd_dM`]_eficci^egicd_`d]g`hcjbcfgd_ak_ca^b`eek^bf^``eg^Pdja]c\Aa_a`_dggecgd]backea_bah^bhld`dccahhg^fff`dfd^^befld\`ccUbfU\_m_`i_f_knchh[_cgccec^^f]`dr`^gcgd_]]agddgehccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbghd_ag\\dciogclWfe^bed^il`fk_]_alY`f`gchOdRdgVf\Vebhd^f_ecZY_f[`dV]ikUhWbacbp_dfdVUglfadccgcoh\l`rdmbnifkifcf`afagcccndhfai^ba`g^ihj^^j_\cmicj^fdcod[``aeai`gjdU_dq[bXYldfZ^`dc\bglecfl^d]feb`_hkebZhqbdpcf_bbdkbefma`hc^ifbkfdd_d[ame]fbTaYjfQocbgbjbbk_Ylgb]bbghgahYgae`eaeebd_XZgb^\ncagNa^_c_hftbjps[cbckhjda^Vc^gchhde`n\^_\`ogccaghYc_[hmhafflkahacYffcOdgaedmhcbdek[hedd^ffck_bfcX`cmje[bcad[_g[n_eedchhmheehce_dhbdabc`p`]h`h`b\^ha_dge^m]dgXcgabccRgUbcdkiicd\sekZ`cd]ageehgd`fhc_qqgdf^a^adc_flgbec`Z_fa_codeb_if[__eRbZe^bgg_`Zdkie^e^bc\]bWjah_hfa[_bdgbg\g[\dXbeede_fc^^ehbahfafhad[`ifj`fXgcdh]im\j\ceedg`ee`ek_g`f``jbnhdhZbh^biddidd]k]__ZiZh`edd_cc_VdiaX\rh`cagejm_iga_fibjfecgccbc\eYWc\bfkkegfjZf`djbdggkoj^fb^d`a]cfn`hcadbfpbgc`aheh^kakfc[aZkcjjd`]hgicgdccbWbgjeae`S_d[cccccccccccccccbcccbcccccccccccbccccccccccccbcccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccdcccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccdcccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccd^Xhdq`eaV_dk^[`agi\mlcbbchbhY`_gdebaib`ad``]]esf[bjhl_ag\fgbh^^idb]ib^iafhmffhfkhejccbmjbiao[_Wgidc]]baa\eaj`abcfgS\Ye``ba\]e_U[ajf`deebg\a`_]^cc_hdZ[dga`idbhUf_]`dhfneeZSc[joY]fcbd^g^g`_cfffg_c_hdlZi`kkce`c_haag`cf^\eaebd^^\`^dbiWck[ahwb_`fZh\\Y]e^bkbn`Xfbbn[_ctglPahfdaafecb^ejlfb]efib``od`fVcenlbmeafdidig^ccdZkh`_h^c^abcL]nfZ`i\_[`[`jhjgPhlnfb^ja_aeodg]`f^mdfdVRhkfagaZboPig`X`]macbfcnaTc_jd`h`[]aadW`lWa`^b^fpli`e_g]Vc\egb`d`f]XXeef_focecklf`_bc^`j[aa^nk]naacbcgij`ahclad[ld\Z``fUdebcbfmZfumiaedgaj\eabf\faZdXkeiieb]p`iWeemlX>X^dZjaSa]^]_oT^cje\^cmedXd^kakb`dmej^acibd\kd\lg`adfxd_W[fdil]`[cfwfch\o\k`mSbc_]`ZxXkd`ndd_gXhhdillZi`biUcZ_jfmbeab^cmdk_mmqgchq`gfceg]bjhW`meii[k`lge`dg^dfd\aagabh_c^m\le\`ih[bb^_lcgmd_d_ahf_Yj^Ufg]`c_jbeiUe`^ep^belfgcXe]`beeigg[kh\fmkdm_Ocejmc`^jc_\[fk[nd`hl^\^dcQaZlgcgbgib[^gcfkicfXei`bb`^beZZbca\gbeThhnc_c^]fPjh_gdic_gbgemilbVegmcgheeldb]^^eXe``a\cYfkk[]o\bbd`P]eebbb_a`fc^[idceg[Tdabd_afrk[hiicdld_gbac]a]`i^o[ffc]`aiiZg_g`d^e\clt`[cj[][c_]hggdedejg]bdS^\_edba_bdfhacnW]n\fk`fWjaddkocadcfi_dc_d`h`dgfcadb]eabacabbacbh`aeeadbbb`ddgfg`f^bbdbacdaefddebdd`eaa_ee]eabbadbdf`cbfefabee^ccggdda^e^ddbb`gaagcbfbhcbbbcdfaa`b^becda`eagab`eh``gbdeegcdebbcbadaabbcdc]d_bcbgddachecbab``_dbgdeadeaaa`dcdaecdb`bfc`dfedacecbadac``dcfc`bcdbdaadgcibgebdec`abdccccccccccccdccccdccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccdccbcccccccbccccccccccccccccccccccccccccccccccccccccccccdcdccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccbccccdcccccccdcccbccccccccadcbcbbcbbccaccbcbbcbbdcbbcbbaccbcbcbcabcbbbbccbcabbccabcccbcbbbcbbbccccccbba`bbccbabcccccdbccbbccbcdbbcccdabbbacacbcbdbcccbcccabcbbdbcccbbdcabccccbcbbcfbbdbbcbbcbcccbbbbcdccbcbbbcbcbbcbbcbcbbcbbbccbccbbccabbbcbcccbcacccbcbccccccbdabccbdbbbbccadaccbcccbbcdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcYeZdff[iV`uhWg^cbgn\^dmc_bii]gjTfacmadWjjmaa`eg^gdk_`gae\c\hfc^`ffSRgcUfa\`mb_dja\fjabjYf]^dg^WWcgbme_lgohhYeoekfenhdZffXmdga_efa_b\ajafa[edZfagakecc\Za^aYhenccohk^`kdY_cc]af^i_bbg^^bk_e^_^VZekfa`g]aceZihcip_^c]j_Sb`n\]ggZdgbcoke\[g[nffagse```_]^mcdn]h\gfhfecx`eohg[debd\h`labeed^[be^^mf_cficbdichmdbamee]`mf_^fg`g^_idiZdb`fcimb^ead\ee]nibVqcgfb`ac]eclaXgabefbeec_dbcele^_c]ib`fgcbga\g\]imadce^\_m`hkgad]Y\jh[ccZib_gbkke`mia`^dc_bh_bff\[f_hcjfdajc_gb`ZjaTcageZj`bgUc]id_fka`d`gifjkbdkdfg\h\f_aaatZdha_c^[a`mjigccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdaj\leLkggj[ag^mgdjhfdhWqdciXiac_i\im\pdio`bqhacbZ^^e`d`^dm^cc_]b[ajlb]cfc_kaa^ad`^ibflhfkgflkqdiicf_^aY[nab\bhaHic_m_agjUh[d_p\ccaj[cjaU^ec\na`pbfggnglcamicdlTe_c^el_ddWkbjdX`ck`ecm`gblf`b_Y]aj\iWhiYafZ^eb`h^ih[_Zb_g_c`giGc]daj]caUac`\fb_Xaifdghch^fa\`b[[ccccccccccccccccccbbcccccccccccbcccccccbbccccbccccbccbbccbccccbcccccccccccccccccccbcccccbbbccccccccccccccccccccdccccccdcccbcccccbcccccccccbcbcccccccccccccccccccccccbccccccccccccccccccccccbccccccccbcccccccccbcccccccccccbcccbcccccccccccbbccccbccccccccccccccccccccccccccccccccccccccccbbccccccccccccccccccccccccccbcccccccccccccbbccccccccccccccccccccccccbcccccccccccccccccdccccccccccccccbbcccccccccccccccccccbccccccdccccccccccccccccccccccccccccccccbccccccccccccccccccccccccccbccccccccccccbccccccccccccccccccccccccccccfmg]`jXghcX]cmhn^k_ei`_]h^f`Y`gaZ]_aqYl\]fbm`cbW\X]eagZ^l]b]_^ogaaicVk]h_g`fXbgndnVd_chch^n`ami\dl[Yoin^ge`i^ccdnab_hbfhcbli[p^ZfZ^^\je]^hYcf_d`dijd\ccZ[Z^j_hcji]Wdddbba]_]`acias]^ecsg[\\^hbgjabbmfifefggUa^cd`^ejkZ`ci_n]ae__egdreYeghafn^dfZcmp`ed[aab^dpfbgcbcbccccccccccdccdbcccccccccccccccccdcccccccccccccbccdcccccccccccccdcccccccccdccccccccccccccccdcccccccccccccccccccbdccddcccccccccccccccccccccccccccccccccccccccccccccccccddcccccccccdccccccccccccccccccccccccccdcccccccccccccdccccccccbcdccccccdccdccccccccccccdcccccccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccccccccccccdccccccccccccccccccccccccccccccccccccccccccccccccccccbcccccccccccccccccccccccccccbcccccccccccccccccccccccccccbcccccccccccdccccccccccccccccccccccdacama^f]l[[bjcd^hie\W^b`ia``eim_kYZdedWjae`ngabbfb^iic`b_Vg[bhaj^aZWbjcd^aagen```k_gheZc`iifdl\\ccc_k[Vic`\nbX]hZe_bhp\`big`nk]jb_`lkadab\ak``c`cg[bg`Sgjbcggc^eea_fjmaeie`hlbemagbdfgdh^cc`ihgebid]hlfbYg_eih^[ia]^ljkfcb[afg`ebj^f^^g]`YbgpecUZbrg`eda_kbl_c^`hjaibdmbbfnYaejbfdk^fqf^\YccccijVk]elj`ekdd_djZ`cd_nmgdZbYghlbd`f]kfcpf]g]\]_djYa`]im\Zhdc`ebpdxbcfe_cdi_bm_f^kah_gdg``Y`U^i^dgdcV\gXibnk\\_fa`cghck\]dbe`]_c^icfe[^cW`ZXTap^cbgo^_Zfagcac^\eZcecdX_]^d^hfm[bajU`^s^jYd^hTabdfoge^`hf^eeb\jlfjed`b`pf`^`]i]_d]\fa]^cdm_[acfd\hcla\ZgXle]^\aYbffcbV\`ZpXjcfdcg\dcY\`_gdccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdpVmhfbabnfibljhd\c`[e\bbebc[fdcmab[e]^_c_a`ffbi`iZdgk`b_l^`bkc`bdcae_dehm^b]d]fibkaT`cbjfjbiebmYdpg_hbjXdm^fgb]dag[mbedVewge_Zdgeabhd]_Segi`c[YjZcacb^js_g`e\c^_dfacjja_ZgeL_cc`ccbebchSc^heb`]de^bd]a`Ndag]_]f]iai^`geheabf`j`dT_`mmgfkbe_]fe`bhkgr_ecfb]iYedjcccccccccccccccccccbccccccccccccccccccccccccccccccccbccccccccccccdcccccccccccccccccccccccccccccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbccccccccccccccccccccbcccccccccccccccccccccccccccccccccccccccccccbccccccccccccd_dabgljgcd_^eVhf`g`a[X]h[bVjk`bja]g]hccp[]\b^dYbsi]j_abcdaebeiZX_i]qihede^_fan`ibtae`cidk^b\ZgdgZ[`kZ_hc_\^nm`[jjaudbabZ`d^ZVddf]ai``iedbZf_f]e`naei[cePc^]`_k_adk`bf_qbbjfgg`e_cffabcibdea\e^ccj_fcb\^]^dk`cYhdd]Ycid\ce\jtmZ^b`[bdc`Z`Z_Xceihebaj\o`icjd_Ue\ZZY`]ig]abOc]gcgj^e]m`]e[f_eheae`fih_l^fehb`^atgc_^ZWbh^bed\Yei\dhbq]dmjim__fbYefmhfcbcabW^`b\d`cakecYVshcacjgb\hdeack]djkam_egbbQ`ck`]```[lheg`jhcnhd_bbfZjbafc_aqajgZb[kne_]Xacb`cc`dk^dRackb`d_ecgebegj`a`]fbhcefafhef`_mejncqfj`bh`adoeaWbffhaffbkfgeR\]b`adeccdcccbcccbcccdccccccbcccdcbcccbccdccccccccdccdcdccccbccccccbebcdbcccdcbcccccdbbcccccccbbccbcccccccdecceccbbcbcbcccccddccbbcccbbcccddbccdccbcbbcdccbbccccbdccccccccccdcddbcccdcdccccdcddbcdccccccccccbdccccccdcdcdcbcbdcdcbdcdcbccccbbcbcdbbbdcdccddcbcbcdbbcccc_eb]Vyifb^^jaegamdeflcdbhXah]okY\iafhbZ`f_ld`fe`m_aflegen`[he[WZc[]_^deoZbacjYY]fllncfal[]cg\aiYd]if^bialamdfcde_db]kf^jefV]ki^hacTTg\jdfk`c``aal[feaigdibffjZMngi^cdi`X_gZegZtj`p[fdbdb[b]aijhc^_fjgg`eo_`^`me[l_`hdejh_k^_a_bkfegriVhcodafih^hoccWl^eaa]ejf][f㨓‡£lvPœ“{€®°§{¶R€»ÿŽ™cb¼”¾€w…y£Ž˜Þ@wŠQ`tŸ¨¨ˆnƒ‰p‘ƒŽqm+ˆ¢¬y_®†N¬­½g…v­Z–^ ´Œ£­›Q„«\>w{º|Çsº„s„]gÙ¸Yç„[¬tŒ¡µ‘²·bÌs—«©Ê•[°’’N¿—¡{ºR¢h TÁ%¹œŸ<ä¼}ÇA¹¨‚®””Œ JŽ£r™’¥¢}Œã°‹½xêo¬¨Ášg°‹©™p{’ž‹¨ªÙ"ŸÀ²¾{€‹½ÞÎny›³Zqpšàjƒ„p¼Åvœ•Åêé’yóë8˜Ð†z•‹¹€ywÀs»…‰uA6*C191-1GCPF}I‹$,E(š@?(,2@:‡,?9.5F7(JIZ–%h)7Ü­B?Jï(X2·{.*64,$(Š,ATq4/=NS"\eEL5D'%4&@J?JJI *7 A:+Pã'+@³@?R-I(,2GMXˆ(;24] Ñ+u';B 8 A)Q+?°Îa[6-&+"NdN%UÀ5ÔkXà?Ó 37È!T1?$=9/:&M£9=6C,D'„3ž+:¯9W+0.T4J8Ým=•QC&;ÿ-0Q>53: +4,AjC™s1@¶>6C;¬’ŠCkŠ|pŽ“¨ˆ]KŠj–†`f‹UM}@˜jjœ¡t‰’L|±upgJ©›³uv“À|ŽBj|¥œ|–_Ž(RÿUž‹K†gzB‡¢¦µ¿Œt“Ò_‘v×}¥­lr‚l°koX¹6}—‘³w`z|V^Š…IbˆÓHy˜¬n‘‹Ž¢Ž½TœPWN®ƒáu—•sGk^{Mj’²àd’©œ9vmi’Ÿžv~mC½Bª±’zx‹ypIw–W‹e£6Zmh…tŽW”‹^±ŒiœzvšÁjWV¢•EeŠD¬c„oY“:hÂÂwmo‰]ˆÇ­HY_~6v”…” n‘_k—nsººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººÀ ¸¸«Æ¼Ä±·ÍÀÿ¯¼ÀʹƳº¸¸½¬·Á¢¹º°¶µ¸°ŸÄøƼ¾¬Â¹°Â¯Å¸§³µ¹£¸Â²¹Ç³º­¼²¿­´­ÊЫ©±Ê½½Å–º´¹«À¨¸¿¶Ê¸Í½±¦¬¹¿º©¯°É¹º¿¶²³·Å¸¶ºÃÕ«»Ä«¾¿º¸·±¹º­¨¼°Á§¶ Ê®¦¼²®Ñ•¾À¼¤¥®¸©¨µ­·®µ½¶ÁųwÀ©™ÉÞ¼™°­–Ÿ¯¾¢“˼Ÿ±¯¬Á³Ð µÑù²¾§—À¦¯­·¼·Ê𲧍­¥¥ËĘ̀¶¯²§±°ŒÀ¸¯¬¼»«ÀÊ€»¶½³¨ÁÀ´ÄÀŸ¯»µÈ­›©´¹Ã§¸¾À²°¯·¢²» ¹À¹ªÀµÄ´•µ´´¹­›Ê²¿¶¸µ½²­§¬Å·±¹©Â¦¼ÃÀ¼Åк·Àƻ¸ïɾ´·¨¿³¿á•Ȫ±ÄÀ«µ±Æ°¹Ã½³¢¸¸¹¬½¢Ì¹ È˿Ŀ´±Ãº¾´ÈƬ®­°Ã±±‘³µ¯¸¹Â¸¿³µ°»Êº¶Å¶ ¬»˜¬¼Áɽ¥¹žº±Ã‡Ç¾²¦®¼¶²°¼µ¹®˜²½Ñº„͹µ³²µ»¤Àº¾ÌòʳøŨ¤¼É³¼ÄйÁ·¨¶¸½¥ÈȰ²Ç·Ãųº±ÌÙÆÁŸ¦˜©šµ¡¨µÃ»­«§µÁ’½­©»¿ÀÀÊ̶À²y¸²¸·Ã±½Á«Å»½¯¼Æ¹¢­²¼ »¼·¶¨Ã¬¶Ë»À´®µ¸ ¹Â²Ã´È¼Ä¯®¹µ¶°¥™µÈ­¸´·µº´Ä¼·¬³¸Êƺ¿¿Õ¿š·Ë®¹§Âº¶©¯ª±ÅÀ³¶Æ «š¯­Íµº¯ÖѤ°´³»±¸¼¶£Â³Í¹®¸¹­ºÂÊħ±©¬Ï²Å®³ž¯™©¨½·³¹¯±Â»»Æ¬°¢Á±³Åª¾·µÀÊÅ´Ç­µ¡¦·©½´Ç­³°¨¶˜²È²ºÆ©¬Å¦À¦Ë¼¬¡±»Âµµ¸ ¹Ï¦²¯¯˜¿­º¢Ä­©Å°©¬±±‡£¡´±»„ÈÃ¥Ÿ¨®·›®®´ª¾©¸”ÉÖ³¨©¦¾²ª²ÃÀ²¿²ËÆ´ÆÉ°À¼Á°»¹¼µ¥½½È¨´Å¸Äº›~º©¥¹¹³¹Ç´¢Á½·¼³Ð°½›«¾»°®¹³Â­ª»°°¹³¯«»¢À°Ê­Â´¼µ²žÐª¼¼ÉÇ¿·¶´Ÿ²ÂÈȪµµ¶§Â¯·ÌµÃÍ¢¸±È»¾º¬¢Ä¦©¹¼¾­°ÃϮǻ´±ºž²£®¶´Á­ Ç²©¦¼¸¨¤º¹š¥¤Ãº˜µ»ºÌž¯µ¾Å¹ºÄ͹Ѷ¬Ô³¯¿³«®½Ÿ¥·­·Ä‘­´±¯§¬ž–ªÄ²´­¸¿®¤¾°¯²²³ª¦Å¨´¬¼¹¹Óª²¤²Á»Ä¼½ºš¿¤£É¸´ ±¬¸¼¨©Ãıª²¿²«¤ÃÀ¸¼»»Áǹ¼º¼©¸¸¶Æ³´³·µ¬¬¯¹º¿½¾«º¿­­¶ÈºÂªÆ»œ½À¨µÅ´²Ò¸§¤ªÃ³­¿µ­»»¿Àú»¹­®©Å½±Ç½¸µÅ±Ê…°Ã¹ž”£±Àº±§ÈÇ«›§Å¦Ò©Æ³É©±¼¨³·Ÿ®­ª¾¬²´¸¨œ¯¶ÀÄ£¬ ©Œª¨«ºÃ±Æº¾Ë´Ë­²¾¸ÁºÔºÍº¤¬¸¥¿›¯¹°¶«À©È¦Ã¯½¼°»œÂ¥½Ì·¨·¸²º³¿±Ä©£ª¥ª¬—§¯­¯¸±¸Ã·³Ä¾µ¯°¶žž¥µ½ª´¶³¿ÃȺÀ¨ÌÐÉ© ¾Â½—¸²£ºž»¾ÁÆ¢¯¾®£¿´¿ºÅÄ–©¶¸«¡ÇµÉÀ¹§¬¯Å¯°Ã»¬«¨µ²¹£³·»¢¶²È¼¬Ä´™Ã»¯©Ú¨Á£§´ ¯²œÇ¼¯Âª§Â°°»¶¸¹Î¯ÀÁ®µ»¬··¹°Öº¬Ç·Êª§¨»©³¶´®¹ŠµŠ¥¦¾´ÆÈ¾Â°¸¯´Â‹»°¾º®²Ë½¯½®©¾®»Âª¹¡¢š¨µ¶¼²¥°ª½±µ­®º¯ÂÅ¢¥¤«¬¿«–®š³¦®š·¿¿¾¥·­Á“À¢Â¨¸«£´ §©µ·¬É¨¡¥©«­¡¡»£»¯¯žÂ¾Ã§²¨Ä´¨·Ë™¹¯½¬¸³°®ª®±¶¬Çº°¿§ºÈÅ ³Í¦­Ë¹¯¨™¤¾¸«£½Ãºµ«¶«¦¿µ¿¸´Àǯ®¾ªªº°½·¾±¯µ¬µ·°­¸Ë§¸¸µ¿®¶¸È½»»®°ª¬±ª±²¤®¿Ñã¯Ä¼ºµº±Æ¾µ«¿¿¬±´¢ ¤µÁ¸±¶Ã¸½¾¼µ¬®¹´¬º¿·À¼ÁÀ°¾Îª·Å½©¹©«µ¸¯®³ÄÁ˼µª²Ì´¥±µ®±´¢¦²Å¢­²³¿Èģã±À¿µÇ¡²¾°³¨Ÿº´§¾©¢¥£«ª©±´©»ŸÃ¹Àœ¿´±£­\·¬¬¦¶¶¹È§Í±·Ä¾¼½¨©½²¤¡º¯¾¶²»¼š­±¯²Ÿ¬£°Ã¤Æ»²¦Î¡À¸®¦¹º¹žŸ¯§ª­®À²˜ÆÉÅźºÆ´¸¶Àü»µ°¹³ÅΧ´Ã¸»Å­ª¶½¦µ±®³¯²²Ã®©¾µµ±±­´«¯®°¯¾·³¹»–µ¨³¶´¼©¿®¯±¬¶Ã£¼Ìç››À±Ä­¼Áʰ­µÉº¬©¬¸ÇµÁ¸º¦¨«±´´«¬Â²Áʦĺ°¼ºÊ¥Ê³¼ÀÁ¾Â´›Ä¬·È­ž¹­£¡¡º¹¬š½°¿©·µ¨¶”Ê—­Åµ¶µ´¬¸µÃ¤¯»µ›©¡Äɼ¹ª˜²º§¼¹¹Ã¦»´¯­·³¶­­¼¢“²½È˜¶µ»ÚÅ®œ¹½¾žŸÁʹ©¶¯³¬¿²s¨¤º¼²µÅ¤¤Ç¨ªÉ´¨¹·Åʨ¯£Å¶Ê³ª·²Ã¯º¸¶¹À¹¢¹¸ÁÂò±³·­¹¿»Â¢³µ»°Ì»¸Á¢Ã›´¿¡°¯³Í»¹»ºŒ¶¸«¼©¶¨§³¬ ½«°²Á³¹¼´±¨¸¾Î¥¸³³»¥º¶¤¿Äè­Ê¥³¦Æ¼¹Äµ®²®­Çº¯ÅØ®´˜³Æ¾¿Æ¢²À¿º¯£²®¼°ÀÄø°¶¹½œ´ª³³¯œ™¸Âµ¿¼¸« ÈÁ¶½›Ê¥Ã¯½¶Æ¾½¯Ò°œ’§½°®¡¶¤·§°†´¾ À¹²Á¯¦¶Ë¸£Ê¶¥¾£ªÄ¹Ë•°°¦ É´Ä}¸®¸Ä©žµ¹¸«ÁÁÏÂÃÁ­®¤©º¸®ÄŸ°À¶²¶­£Â—º¶©ŒÍ³œ´ªÑ³¾¾£¿­¹Æ¼«¨¿ªÆÃ½¯ªÁ´¾µ¶À²´É¶£±«¬»±¸±ÂƵ¤Á»·¸»²¸½Å²ºµº«»­·©¶·«¹µÊ°¤³ª¹À½ÅÀÃ¥³ËÁ¹š·À©Ç©µË½›»®ÃÁęϤ¹¶¼¯¾±°«°³¤Â¨¼ÁÈ­Á´±­¹Å³®¿´À¼¶Á³¾¸¹®¼¾»¸±©­¼­½ŸÀº¸µÒ¯®¶´Ê­ª©ÃÒ´¨²·À¢²¹¹¡±³Áį̲±Çͨ¯¶¶¯¾¸¸¯ÂÂ×¼¶¥§­Å¼¨ÇĶÀ¤²¥´¼Â¶½«¬©Ÿ€¯«ªÀ—¹©¼¿Ä©¸»Å´Å·©«Ê±²½·«¦²²¨›«ÒÊEϲ²¥µ·¸À°®¶´¾¾©¨À¼Â§¼´³«¶¾¯ºµ¸«Á»Çɲ¹Ä£Ö¯´®Ä«°´£­À¶®¡Æ»Ã¯¹·À¨º½Å­¾¶­¹¶¢µ·¦ª‹­Ó¨Ã³»¼°¸±´¥¿µ²ª¸­¬¹ÇÀĽ»Å¯¸¹³¹¼Æº¹¶­§§µ¶·¸¬”¾À¿Á˹²¸²¶°¨µ¡©œ««±­¦©°¶´¼£§±”›³¾»¾Á¼Å£Â°½¼¬‰­²·­¦®¹ª°¯µ¨®œ¹¦¬²½É¶¿¦Í«Äƺ«¶»Å¥·¼°±È¹Ä¡ÀšµË­°ÏŤ¤´ÈÌ´Ÿ°¾²Ì¯—°¨«—¤¾¶À¸¾¨¥²¼§¤£Áxµ» ¸®¹º·šÊ¶¼¶µ²Ã§»¹µÇ®¶¾²Ã¿¹Ë¸¹ªµžª“´»Ò°±µªÃ¾¤¼¿Äº¾´Ÿ·Â­»¯®¹³¹¿Àº¬°Â½É²µ½¸¯ ²ÂË®»²»³­¤¹½¸°¿i¯¾À¸¶¸ÄªÂ´¿®À³º¢ª±œª²¹¿´¬Áº¼¼Æ»¾Â»ÄÇæ½Å¶§Â¾´¤¯»¬±±±ªºÄ»¯¦¾³j¼¥´œªƒ·©Ê°ÁÀ¨½¹Á©©«²½§¸Ê±Ö¯©¯ ¼¬ž¯¸·ËÁ¢¨Çµ¬À©®²·Ä¦·¸£À·¦­«³§Ó«¬º¹±¯Æ´»Ä·°»±¶Â±´Ê§Ç¨Êƽž¶Ï»Å½¼®¹£»«­Å±®§´Ð»Ë¦»ÄŸº¬µ½»§¸²¿Ä·»®º»°²Á³¹¿ÄÌÇ·­Ä«°¦³º°°¦Ëª°°Á¾¸±­¤¬Äȵ—¶¹³£ÆÁ³Ã¼º°¥µ¸¶ÁÒ´¼µ¸¸ÇǶ±Ãø®¨°¿¢—­±£¹±»±¯Ð¦Ÿ«¹»¾¸ÆÏ¸Š·½³Ë²¸¢¬´£Ç¿À¬ÂÑÆ¼¤ž»«Á£»Ä»Å¶ÅÑUÙ±¸Ä£ª°¿³Ÿ±©¯¦Åº¿¯¼ÅÀÁ³ºž¿•µ«µ©©´Â¡£¨³Ç±£Ð»Ä®¸¿³¶¬«ŸÇ–µ´Ò»½³Õ©ºËǯǩµ±¤®»¹ ÏŸÄ¨­§´«µ›Â¦°Ò´¹®¦±œ°ÊÑÀ´ŸÑÀ¶¶Ä¯²¼Ç¬ÀÀ¾½ÀžÆ¶Ã¬·©µÁ¾µÂµÅ³È¾³Á¼½Ä¿¿¤¯º»¸¬©­¨Âø½°¬´¼¾¯³¹©­¨·±²»œÅ¯˜¶³·¿‹ÁÇ©¬¢¿­¸¨¸Ç·»·º©¶¼¼Äµ¶¢È«Ç£§Á¨¥¬»º©¶¾®°§¤ÁŹº±±®Á²½Ä¿¼¶¿µ¯µ–ªÀÃ˼†±œ¾¡°¸ºª´ˆÀ¸¤ º´ÀÁáϧ¶Á¡¯£‘춣¸À¸ÀÏПª¥¤ÂÍÁŸ¹¶·°º³Ã³¬¾¬®—£±¤´ÏÁšÑ¬³µ½ÀÀµ´±¶µÀ¢ÃÈ‘ª¿Çº¸ÂÀº°¿µÏ»¥¥«¨®±±È¯¾²¯´¹²½Ã­°Äñ¨Á½¾·«·½¼­ÉɳÍò¯©«©Ÿªˆ´¨¶º¢œ½²¹¿À¹Ðͬº½¶±Ƚ¬°¤Óµ²¼¾À¾˨­¨Ã¾§Â·©´Î¬³¡ª²½Ì»Í­«½ˆ®ÒªÀª®ºÓ¤ÀÀ³Ç¬©¹¸­Â±À¸ªÁ´´Æ¼Á¹µÈÁ̬³Ì«Ã·º¤ËÿÎÊÄÆ™©«º˜ÃÅÌ¡Ì¹ÒÆ¡È¸ºÆ’´Å¾Ä®©Í›´²Ò®ÅÎ˶¨µÇ­À¿Ë¦Í¸ÅͰ­´·ªÁº¹­Ì³Ñ¸Ç»§´·¼¹µÐÕ·À À²³À¿©¹ØÇ¿«¬¼¶Ê·¹§Ã¾¼œËÇÌ¹šÆ»¹Ã²¯Ç´Àˤƻ´µ¹ÄÂÃ¥º°»¿°½Ã¯µ®¯À½ª±¦¶ªµ®¶º½¼³µ¹¹ŸÄ¬ºÁ¸ Ä´©´·¬Ä´®Ÿ·¾·ªÅ³µÈȲ³ºÁ´¶°ÌбÁµ¬®­¶©©Ã¬¯¹º±¥¶Ãµª¼µ¤¯¹«¿ª®§¶®•»±¶Ã¼¨Èµ°¢¶©Í´²¹¿¹¶©¯Á·«½±§¶¿Å¬ÁÄ¿­´¬¾¢œÂ¢±¸µ¶¡Â¯¨¤ª·š°©²¡¬«¶°¨¥ž¦²©®·Â›§¯·¶³¡Åµ¥Ç޵¥£¹Ê²»©©‘¼¬°·¸¦²™°®¦µ¯«©µ¤£®³­¶«¿ÃƼ¹­³µ½”«¦´}©¬§¼£Ò´¤¬£Í·´µ¾™­¨©Â¡¹Â«¶­³·›®¤½ºÂ¬·ÍÂü¹¤Æª¾¼´º»¢©Á¾´½®´Ã¼¯¶Â¨¥©¯¶»¼µÅ¾¬É½¨§¶¸¾Å¶·§¿ª²¶Ã¼º¿¿«·²±ªÃ¸®œ¯©«µ¶´Â¶¡Æ§±Ä»Ã¯¾»¶œ°½«¿ÂʪÀ¼¬œª­µ­­¨À´Àµ¢¶¾¬®¹Â³–ÅvÄŸ»À®µÒ³ž®¿È·Â®¯¨¼¼·¡¹¸¤·Ô´¬¨½«££®²½¥³”¨‘°’³…°¨¬¸Àº¨°›£¹ªÍ·©¶Ã¹¯¯Æ¶“¬®½´£ª²»Ñ¹¸¯°¶¡²°Ô¬¤Ç°Æ«§³³¶»ª´«½¡Á±¤¹È±¿¿¹¯ µŪ¹ºÀ¸É°º±­°¤¨ºÊ»¸¹´ÈÔ»§ÌµÇ¸¯©¾¤©®¯º­¼Â§²ƒ¸¬°ÄЙɶ¨µµÀ ªÏ±««³ÄÖ²»½¶³¸ª£¿¬Æ½§Ìµ­Ì¢Ð¦³»¾®¾½»¬­½°·«É¥¸¬³ª¸³Ê¹©Í°²·«¶Æ¬¾à±Ðµ·À½¬¤°È¸®¹¸Ç·¿³°¾ÇвÙŦÀ£Æ©¦½ÂѬÀ¶Üݳ¼Â¸±»¸ÁÐÈۤ¸½«àŘ¼Ë·¿¾Õ¸ÅÀ«Ð»±ÊÁ¢¹À¹¯Á¹¢³±Ýº¸¢¯°»¦«±¹º­Â¨Ê­¹²­›¶®Ù¾¾³Ê²Â¨Õ¯®ÍµËÈ´³¨±Õ³³¬´²§§´›À±Ê­½Â®È­·«Ä°Ê¹»·¼¸²ÄÈǸ‘¬³×»¶º´ª»¨±Ëɶ·¥¯ª Ä¢´»·À·Äɵ­±Ãºº°Ë«Ìºº¼²Á«»¾µ¨Æ«®®Í﩯¢ªœ¿º¦°¹§Á¶Å¼»½šÁ·¯¤Ãº¸ª¡»¾¶®— ¨¼ÂÂǾ«Ã¨ÎË»¿¶¹´£Á²´¶¼Æ´Ã¹¹¹³Ì²¾­³©©¸¡­ ­³™Ÿ¿±À¨¨±±ÄÉ»ª—¸•¨³¹¤¤±¸’¦›¹§¯¾±µ½«¸Ëº¾¶Á¤²Å¯¦º³µÂž¾µ¾°™Â¬Â³Ê­¯Â³Ë¾»¬Ç»Ç¶¶ÃªÂ®¶­ª¬ÂÁ°«¯ËͧÅÀ¿¡½›µÂªÅ¸·ÇŸÃ¼¶¸³ÌªÂ·½Ã¾®¾¦º½Á´°²¼³Ÿ¼Áťź³µ¾¨³¹¶­Ä²È­È°»´Ö©Í¾¶¾À©¸¨··È¿Á·¬ž³©À±°µÀªÄ¹–¯´¹­¯É¯›Ê³¤¶©°µº—¹¼µ—¤°±¾º¬©­¶Ä³­¹¬Á½Àº©¶¼¶Â¥ÅÊ´ÇÃÂÀرµ·»Á®£Ã¸Â¾Â¸­¹ÂͰ½¶½ÍŴú¬°¶»³µ°Å¹¨Á¢¨Ò±¶Ÿ³¡ »·¼µ—£³1¨Á¶Î¾œÄÏÄ ¬ÌÁ¦¬ž¹¼§¸¶¦ ¸Ì ®ºÆ¼ÀÁÇ®»À¥‹Ï®¤¨¯§ª¥šÄ·¾Ç›°»¿¿Ç·µ·½®Æ¾¦¦¾Ž«¦ Â­À¹µÄô´¾¯Â¹±º®¬¸ºÆ³¶ÄºÈ³ÂŶ½Ä´¶Á¹¾°´»´¼©¼¬¿±µ·¿·¸•´ê¶Æµ¬®¹´ªÃ»¶»¶««¹·Ä¶ÆÇ­¿´¨É­¯Î´±¶©Å¹µ¦³µ©·¶Â¹ª»Àµ¡ºÂ¼Æ¹¶¸µº½®¶·²¬º¿ÁÁ¾¸‚¿¹Ì¤ œ²º§º´´¶¶¹Ð¤¼›Ê­©ªÃ© Ä•½°¶¾£¨¸¨¾Ã¦Ÿ£¸µº–ÆÇʱºÆ¤ª¬©³™¬¸­Í¾³»¯¯¸žª—§¡·ºÁ­¹·§½½¼µ´“½§¦¾¯«³²Ê¾µÄ³ž¸¹¹Ÿ¶Ê®©¨²º²ÄÆ»¥×®¸ªº­Ë¸·Ë¿³¤Á¿¾¸½²³­«°µ´ÈÄ«¾°°±²È¼¿¶»¸¹º¶Õ³£º¤Æ¼À¹¾¤Íɸ±³¼ª»§»²©®¬²Æ¶²¹º··©³¾Ã¼µ¯²«­Ã¾©Ã½­Ÿ™¸ËÈ¿¬«»»«º˜ØÈ®Á°±Ë¹²‡£¾«§³µ¾­ÁÃÍűº¦¥¿Ã«¬ºÃÄ£´Ã²Â¼»—²ž³±©³‰¼°§¬É˹¯´¸’¨²´²Á­ª©¯­Å³²³¦·´Åº¼¾¹°°˜À´¢·›­·¿°¬µ§ª£µ°¥²´¨¸·°›¶´Ÿ¿Ã¥¸¾¹³¦Ÿ¶´®±·¼¬­¹¾¿µ¯Â·¸¼«Á»¬šÄ°®ž®¿ÂŸ€¦ª¯«³Ñ¦¢¶¿ÃÂǾ´É²º¿Á´½¶Ý²ÂˡԸ޽¸Ð§¯¼¿®¸¾¡¥Àº¿¹Å ¾½Ì¾¿ÁÅ«¸—µÊª´¨¿®©Ô®·«Ä¡²Ç¨µõ¾ØÒ¨Ó©®Å­´³£»¦ÅµÂƺ¥·¢©Õ÷´Ä²Ô¤°¹¿ºÎƮĮºÎ¿¤ª´¶½µ­ºÈµÓ¯¬°‡ËÌÓпÅɸÁ»¬§µ¿¬‰ÊÏÚšÆÌ¿¸½´Í²µ½¥Ô²½«âƧΤ«±¿¾Ê¶ÎÁ«½Ú¡Î¬²´Æ»©Ù˜Ð­¥¸×±·¸Í½«µ±®¯Äµ»¶Ø¿Á®¬­Ã±½¿©­Ç·³¦Ëɬ®¨·Ä¯Æ³¼ÊУ»²ªºÍÔÔÎ¹Ä¾ËÆºÙ··¶Ï´°¶Á°¹½Ä¶¶¶´°®¶Ã´Â¡Ã±ººÀÆ«´´“©£³·®¶¨¶ÃǸެÆÌƶ¸®•¶³²È¸»´¼¾¥È•¨º¿´µ¨Ç»·¢¯±°­»šÈ£½¨½µ¹¶³¸žÁ«ºÃ¯»¾¯­¶²´Í§À̼ƺ¼Ã½½¸µ«²À­Î¨©Ä¿¤¼®¸±«º·«­šÅš›Ã«Áù¥±³¹§°¹¯¶°¦–£°¨À¹º†¬´¸´Ÿ¯¯¾¾Í¨¢··½œÂÏ´ª¨Áº´½À­´˜Ê¦Ç¿¸½Àµ¬º¯¬»ª¤°¼Çº¡Â»»Á¬Æ½žÉ°«Ÿ¹¾±•¥»³·Â¾È¿¡»º´¶­·¾· ¨©µ­µ¬¼Á¿Æ°£Ä»¤¼µ¦¿¿¹·¯¡©²®¼³Â³¼±–Ê­¶—¹³º³³³¾«¸¶¿™½½º½¤¹³¹µ³Ã¯»±«ÈР¨Áô¹¢·§½žŠÍ®¤°±´ÄÄ©¾»»ÁÄ´±ª¼Ì¸ìŸ¯¸¶®¿²¬»´ÄÀÆ«°¹»¬§·ª°ÇÑÍ®ª·­Å¹À¶¼Á´´ªº©£¼j¿Â±³Â£µ²­Ÿ—ǧÈÄ̬··Œ§Á» ²¾»œ®®½Æ¯œ¢¹—Ψ¹¡³—¼º·«Õ¨˜²¬®·Ê©¿­³½­¼°Å¾´”£»¸¢¿»¬¹»¨˜£²µ¤©«ž¼´´¬²¤©»«È´´¶³§·ÆÌž±³Á°¤©À²«¼Ã¸¶­²Á¹¢¹»«­¸®°¿Ìɸ­¡É³Á½Ž¬½¥´À¸²¸®½Èµµ·º¾­µË·¿¸ºÀ¢Á·´ªÁ»´¿½®½Æ«³ž©©²²¿³²°·´ªÇ¯Ã­ÂÁ¼Å¯¼·¶À¤³¶‹­¦—º À«¼³“½ºÂɪ¹¾Àø¯Ë¾¼Ê§°½±»¾½·À¼¨ªÃ/­¸³­¤·¹¶™Ì¦¶¶½¬µª²´³¸¶¡¼¸§¸°´®²¶šÊ¶¾®¼È¯Á£«ºÁ½©¬š²¹¦§³´ŸÁ©­Â³¶¿ž¸°²Áè°¶®¶¼¶¡¬¹³º°³·«º©¥¬Â±¹³½²ÆÂ©ÈÁ›µ©Ù§¼ÄÁ´©Å«º–Ç¡§½¤µÃ±³³¹Ê«Ÿ¨Á¬·À¯³­µÒ¾¼¶´½É»Ÿ¸£±À¿À¿³Æ¾º¶·µ´··—±·ÅµÂ¶®¾¢´¾£Î´¿Â¶Â²³¾“§Ý¦¨¦¼¼«¤·²›¨¤¼Ì¬‘§ªÃ¸¯»¯¾¹ÄÁ¼£«¬Å²µ²¤Å´´œÂϽ¯´—¨¨Õ´·¢º»µ»Å¼µ¸Ÿ³¬˜¢¬¦’¢¨³›½Ã¾¤¨±Á¶·³¿¹©¬±¿Ã»¸¿½¤­­®®º¼¤¸Å³Á³¤´¯°¾¾²È¿¨ºª½Óм©¼¤Î¬‘»Ä¬Ç¥²¬½ºÁÀ§ÌµŸÇÁ¼‰½Ä¤¦½²³¯¡¿·×¦ÀÁ›œ½¯¸º½µº¢«¡¸Å¸›¨³¬¯©Æ¡²¸Áº¸±Á£´Áº¾¸Î¹µ»«½¼µÁ¸³²­¼Á¬º³Ï·¯Ã¶Ê°ŵ·¬­´³¬«¡Ã»¡ºÂ’½¼¾¸¿Â¹³µ¹ÇºÃ³¬³»¿·—®¹¢½¨È¾½´³œ­®©©®­Ê¯Ä«Â²œ¾±¾¸·­¼°°¯Ä³À±°Àº¾Á¹Ä™®¶­È­³³²³¬©¤®°À¨Å¬§§À°£¸´¾™¬Ê±¸¹¥¶Ä·±¯²¹Ä±¸Ä…·¹¦°ÊÁ º©•½Ä¿´¿˜Ê¼¥¶½¾¸«¦À±Æ©Ç¦¶ÀµÊ®¨¦»¦ÒÁ°¾ž½»§Ì¸8©¦¡³¶¿¹°±œ´¶¨¸¾¨­´©¶´°º±¸ª¸—µº²¬Å¶šµÄºÂ½Åµ©¥¼´º³·ÃÁºÂ³Á¼Ç¯Áµ¾µ¢´¯¤¶³½¦¯½¨Áίµ²º¾¿œµ¨§¸¼¼¿µªµ´©µÂ¹®¿ÊÂÀ´Á­¯´¤Å´¨Æ³Î¡·­À¼É³º­¬¼¤—¶Êº¹¶Î¸·¤´»°©¨¯Ë·¦Ä·Æ²Ä©¸ÇűǾ¹³»¸¯½´¤Å¾§¸³¶‹²¹¾¾±»«¨¦´ª¾²´®¹ ¼¬¤§·®¿ ±¯À ¦¹½³²¯ª»¨ž³°¾ÊµÊ®¸Ê³Š¸°ª‚°¹ª°¶¶º¯Æ¬Ã§¦Ç®²Ä§¯·µÇ½¨°³«Ÿ±©²§¹®²¿Áû­Ò¿º°µ¾À¥À®¿Ã¬·¦À©³Æ¸¼Áϧ©½“¿¼±­±¸¬Áº°°–´®¾ÇǨ¿»¼²¸Á´«Í¸¢ÊÂñɘ­À¶®¼»ºº­±Àĺž¯¼¼²½¹°ª·º²Ã¯À¯··©°«¾¸£º²¢­¯¸ž´²Ò²Ÿ·­³¦©³Ä¤·Çµ°·½Ê¿¹·Á¾¸··¨¿ÈÌľ¯¢Àª¶ž¨¾Æ¯¿±ª¸³¿«¸¸p° ¿œ­²¤¯ºÆ±§Ë£«³ª¸¥¸šµ­¼­¸¹¶ ¸·¤­™—À©½«Ì•°º¶¯¨³¤¬¹²ª¨Á°¨£³¤É¸›ŸºŸÈ°­¥µ·“³¤µ¹³ªª”´´º©º´¬º¨¼À¬µ¡¸·¶Â»À«±·¯¨² «Àºº¹±´¶¼·§Ã۰²´½³¸º¥±Ç¨µ¼½Â¹±¦°¶ÃÅ­¶Æ£±ªµ¾·²Â“ƹɻ°µ¯º»¿·¾ž½¬Ãº´³ª³Ê¦¯¬º¿¨²Â»·¬¥µ§¯©±©°È»¸£±¼¾©§±©¾¡¬˜½ÈÁ³´¬®¿­ª­À½¶´Å¸³®³•·±´®ÆÂ¼«Èª¶³´­©¿»±®ÈžÂ³¹½°¤Ã©¬¨§®§º²$þ¾²±©²«°¼É°¹»³ª³ªÆº›Â¶¸Å¥¬ÒÈ·²¹¸¥ž¶·¸ÀÄ˸Áœ­¿ˆ¾Ç¶Ä»¸É¸¡Âº·±®£·«º¸º¤¼³«À´¥ÄÀÆ®¦‰»½Í¯µ¶Ê ¿Í°¦Ê°¬Áººª»¬¿À©¹Ï¿Ä«¸º¼¶ªµ¯Ñ»³¾¸ÈÁ·Âº²´µ·²·®Âº˜ºµÑųÀ¼©©±³º²´¯¦½ÆÊ´¤º¼±´°¹³¶É°¾Ì¦¿´Î˺¦¼»¬µ®¾¼³Ü®¹¯°¿»Á¬ª§µ¬­­´Ã»¿±´¾²»¾­É·¾»¤½¸ÇºÁ¼ÊǬ­·¡ÅŸµÂ¢¬½Ó¨ËÂáºÊ¦¸±Å˼³Ð½¤¿ÈÆ¢·ÅÌ®²¦¶§·â¾¿Ë²Ó–›À³¿Á¹»¾»¸¼´©¸¾Ë¬±ª»Ò°Ñ¸´¹°¤¦Áµ°»¶²ª¸¼´¿¸¯¼»³­Â‚£¶¯˜µÂ±¿±¹ŸÇ¿±ºžÐºίÀ‹°Á¢¢¹´¶°¸À¶ǽ¹½¼»³›À¸¼±³½¬¹È¹´»°´°ÏǹÀ¨¹®ÌÀº±Å¿»Ç³¹Í¹ª§³²¼Í¿©˜¯²­¹Â¬µ±¶¶¶µ«°Çı±È¶°Â¶¿¹Çª·µ¸¶·®´¼²¨³“¶Í¥»¼¾¿¥¶ ¸»ÔëÈÊ·¼Â½Ãµ°Áŵ¿Å¨¼ÅºÈ«³»›‹°~½¼±²®£ªÓŠÀ²„À«››ÉÀȳº°™¯»¹¢­²‘ž©©¨±²·´Á³¾Ÿ›Ê­Ą̀´³Ï§µ¸Ñ»Ã¬Å¡½¹‡Æ¦¹Æ²½—´§¸© Çı¾¹Ð”¶¤¼²ºÏ¿À®¶¼ªÇ¹Ñ‘͸°¾¹­¸Â®»º¦·¯§ºÆÃ®À¸µÊÈ«›£¾µ›´µ¼³·§¯®¹Á½¾³°½½Í¶µ´°¶È±°¶¹¼¾½ž»»·ÀÀ°Ä²«Å³±Ä·«º²³ÀÀ½®¹±½¬·»¾³¸¶•µ¹ÍÁ¼Ä¸¹£²¶¨˜À°Éº·³Ä­Áµ§À³¯ÈǺô¹É²¹Á¨®¶À½·É³Ã¾¶¯À‘À¹·Á©½°ž²«Î¦¦ª­¼¯¯¯·£¨­¢¤ ¿¥¬´´±µ¼¹¹½³­¯¥¼¸¢¤ Ÿ¡®«“±£º¨½¡žŸÁ¿­®´¯Ã§±µ¢®·£³³°±«¤“©º­¸ÃͲ¬¹Ð´³ºÊ§%»¬ž¨£­ºÍ¬Êdz©»©¿¶»¦Á©Ð­«¾¶´³»½¡Ï¼°­Î¼À³³ª¹ªµÀ³Âžµ´­¶Ç˼¿¹±»®·¬©°µ”¶°ÂÂË¿µ¿¹Á²µÊ«Ê½«¥¾¸À­³°À»Š»®È«¸±¶£­µ©Á·¶µ­­ÊÙ²¾ª¤¾Á·4»¹Á»¬µ½¼±±­Ê¨¥Í¤°¹¨£ËϺ·ªÄÁº·±º´¯¸¸”½·È˜‰À¶¹ ¨¶¦ºº´Á¥¾¾Âѧµ½¹µ¾ª¤­Ä¸±´¹­²½º´³Â¨¾À³«º³¹¯³¿«¹¬»°½ÉŸ¸¨Ë··¥Ëº«Íº·®±»±Á›´¯ÂË›½´ª¯ª²£¦ª¸¯¤´Â½°µ¼¹»Ë£¥­·¯ª¨¸²Î¯À¿¦¼±ª°Ì»Á¼®Æ«·£´ª×É»ÌÀ¬¤´²º¶¹·Ë·Å¸µ­À½¶¹³ªË¿Á¹Í¾³Ó½©Á½»ÇDz··´ÇºÊ¸¹ÁÄÆ°¾±ÂƩϥºѷ٭´¥µÁ¯¼½¿³²ÊÚÀ¹Á¹º­Ì³ÀÇ¿Á¸ÆÓܲÊÌ«³¹·º¹µÃͱ³¸ªÀºÓŒ»°§¯²±²ºÅ¿´Ï“¬Í®³³ªªž¯¸©²Å”ª®¶¼¬Î«Ò·ÃÁ¬ž˜¨°¸Á®¶Í¨¸ž±šÔưǫ½®Ï¥ ¹ÚÑÈ´¼¬­ÏÅͮȴÀ®ž´¸—Ó°¢«›»Ô¨Ç³Ìɰ¹¢´Î©º®Ëª¬´Í¯ÜÛ¹«½©ªº¬¤®°½®°¹±§¶²Ã¸À³Á¬Á¸ž±³¶±Â¢­­¹Á¸¶½¿·¯º µ½²¶¸¸«´±µµ¶ÁÊ·¹¶Ê¶¶©¸·Æ¯È¸¹ªÀɸ͵µ¶½°´µ¹»Ã ²É¹«¶¿±´º¿¶­ÅºÀÆ—·«¶Â»Â´¼Ðɨ¶«µ¿À¶»±®®´±Ä¹°¨Â¹¨£Ä·Ÿ¬ª¼´ª·ª¦Á+¯¶½¢¹µµÁ«ª¸¤ÅŸ¶£­¥¹ªš¾ª£©œ¼ÂŸ­ª«£»Á´«º©§ª©ªÜ¯½¸° º«¯—´¾«¹µ§©¹³©Åž¬·¸¶Ê°Ï¶‘··µ­•±¨¶Ì¶±Áµ§·›¸ªµº´¯¯º°³Å›¬Ê—¢²Ã¯Æ¹¯Ìº©´»Å­ªÀ¶®Á³¥¹Â«º®ªº±­¡ Ì»Ë«Í§ºÀ»±¹­Î±¬³¥—È·­®Î°°³Ÿ¡®ÁÁº¼Ä¶®¥¾¿¶¿Å¯ÃÂÆÆÂ¥µ­®³¸À´¬¾¶Ä¸±¯ªÂ·¬§¾³ÁŶ¾®¾ªž«Á¢À©£Äª“¾»ÃÉ··µªÃ¶³µ·¿ÇÆ­§¹¼¶°§¹¼­ ˜®¤½Ãªº¤µºÄ¿Ã¨¦²º¥·¬ÉΤ¾´¶ª·§¼—¢•©·²¦˜µºÔÅ·¡£® ¸Ç»®¼›¸v¬¡¬¹Ç˜´°·¶©³·ºµ±­¶¶§«µ³µ ¿Ã½Å¥¥š¯šÓÖ¶²¿®»ª»©¾¹º»²·µ´Ÿ¾¶Ÿµ¯»¹È°ºÁ²Ç¾»¼³©¹¯Ã°ªÀ•ȸº¾Æ·ÁÁ¯»¼À¿™›°¥®¢¶¿¢ÇÍÁ¦±Åº³ÃÇÁœµ¹¾Í¼´ªÌµ©¿¹¸«Ñ½Å©¸«¿»¶§¨—麻•ªºÌ¸±¼³²¶Á›¹¶³Á²·½·Ä®Ë·¯²»º¸³³Ô³´¶¾Â³¦ ¥»Ì¹¾ Î§Æ¹ªµª³©»˜®¢´¢½¾´¹¬¥µ¶­º®¨²¼ÃÁÇ·Á¨ÈÏ´©·¹¤½¼µ£¡¿À£¨¢Æ¯—¬ËÀ¨¥ÖÍŸ¦¹¾±Êº˜—š¸¹·»¬‰´¹·Á骿¶œÌ¢¶ÉÄ®³²°¨¿Æ«®¬Á³µ¯²¯¦²ž•­Ä·º½»µÉ° ¸©Áµ²«±¦Â¸·¼¿Â­­¹´¿ºª½Áº®ÁǼ³ÅºÂ´»Ë¹¯´¾Áº¬Ÿ´«°·Á¶­¯—ººÇʬ½¶½¥Â°¸¤§¤½¶Ì­™Å²°³¹†Üº¹¢¯®È§µ¯·¾¿Áú¥¾ÅÀ´·¿¯©ŽÆº¼Ä¶Å¸È¼¾½½Ì¾²µª½Ãº¸®ÂªÈ»¿Ïĵ¤»¸ÅÅž°º´¨´¬¬¿Å¸¿½­µ©¸ž²Ì©´¸¶°·ÂŸ»Í­˜«¶Ÿ§µ¯»»²­Á°µ¯¾°ÉÂ¬š´¼©¼®±½¸±º¬¿¶¢¼«²¶¦¾¼°¬°¾®¼¿Ç†¨¿Ã»¥¿²ž°W£¢®µª±Äñ­¼¯¶ª­©³¥ÃžÂ° Ç®¥¶½µÆ¿¸—ºÂ³º«ž³¦¡µ½¤Â¼¸¿§È«Ã®ºÇÀ¹¼ Äµº¥µ±º¸š¸´±Ã»š±ÂÈÊÃÁ²°Ã¼±¢´¡¼´½Í²ºº¹´±„³¿¥ŸŒ¾¶»Ã²¯«±žÀ¹¢¾¹¼¶È¬¾¬¯·ß¯Áº½¾ÈÁ´ÍÂÊý¨®¸¹±œ²¬°Ã´¹»Í½ËǺº¬²»Ð°ª¥¯Á¹£Í¼À¸¿£À»±¬¡¼µ£±²¨®»²Â³“¥«°§¸¨´©ª¶ºŸ³·²¹ªÈ¦¹¤º°Ãº”É¿µ³¯­­¤§¥³´§Ê³¸¯¶¥©ª½¹³°º²Ð¯¬ŸÀ §¡ £Æ§¥·§­Ç¶Óœ­´œ®ÆÅ¶·¼¶¸Ì¶²ªÇÀª»Ä÷®¢¼º±²µ´»¿³Å®²ÅÁ´·°À­¥³©¸®À¶´³²¼¶¯·Æ¿š£«½Ä½©¸¼·¬Ÿµ‰À¬²¬¸¶±¶»º¹·ÃƵ¥£¸»§´¤¸·¿»¶»•®°»º³¢½»ž¸®­Ã¨´¹Ë¤’±³Æ¬µÂ»½Ç½·À·¦©£²¹»¨‘¯±¾¿±·º¡¤ª£›³Å«§¹¦£”¯Ãžµ Ê›±Îªºµ°¥À¿©Á±²¥Å ¶¨ º»»©©¶Å¯µ¬°š°«Æ½ª¯ÁÏ­»˜¸¬š¹Ã³²³¨²²± ±¢¹Ä’ª¯Ä¿¸Æ»¸·¢¤°®·¸¹¶´Â¹»¾µÇ·ª»µ™µ‰²®¿¸³¶²³¥°¦²Æ¿À¾·¼ÆÄ•¿½°²ÇͰ³Æ´º½·È°³¸¯«»¹ÃÁ¿±·¨½°º½´µ¸¢¿¿ºÀ¡·»¶¨²²Å«²Ä¶Ç–·¤º­­°¦¼¿›¨ÍɲÁ³Ì®»«Ò·Æ·´Ä¸ÁÉ©‰¶È¶­·Åõ¼Ò»®¯¼ÄÄ·Æ­ÀÅ¡µ½±¹µªÆµ¬ž´ª®Ë´¶²¯§­™®¢½ºÈŒ¼£Ã·Ã©¦ºŸ¸©µ š´‰®¾¨¹œÄî®§­¬Ñº·¹ÂµÃ´¨·¬¿±ºÅ™·´¶Á²Àž«ª’¦Â¸½ÆŸ¸Ù†´¼›´Æ½·­¶°ª©¯½»ž¬¯ÁÁÂ̼®žÃšµ®¶Ã³Ò¿µÃÀ«¾À¶¯¿®Ÿ¹·®´µµ½½º½©º­ª¥¦·¤Ç½³ª»®µ·¶¶°º½Ã¾¸£­Ðº»©˜ªÂ¼¤¿±®·°·Ã©ÁªÀ¯¯¯´¼°¼¼Ã—»¸»µ®¶¹ºž¸·¼ž¸· ©³±«Àª™¯Àµ­ÄÕɰ£·°¬¨¾¦¹§»Ç¼Ô¯À¡½Á»µ¯¼Ä¯¡µŸÃ·¸®¾¿º¬¨”È­ªª½›²¸µœ­¯¯¸Á͵¼¨¸Æ²Ð¸˜µ¿¬´Î­ ¡¯±µ¿¶²™«°§®±¤»Ã¿²¼¤±Ì±¬¥ž³¯Ç³¿Àž–ªÀ½¤§­Â³¹’‘²´º¿‘ÁË·½«¿®¶À•©œ³±»°¨·ª­¸µ¹º¾˜¶®·±¦Ç±»Â®·œ¤´»¸¿¬º·¼´ÄÆÁª¶´²¶ºË¸»«º¼Í´½¸½Â°¡µ¸Ãò´¢¨²±½¦ºÆÅ¾¸°ºÎ¿á¸²µ¸µ´±´±Î¨Á£©À¼½¿¶Ñ À°ºÈ¦Éɱ¥Á¾¹¨µ±·›˜Ò¬°µ¬·±É™À²²£Â¹ÀÌÀ½Ä¿Ä¸½À¾´Ò°±Ë²«°·¹Å£ªµ¹µ °¹ªÄ§®¶›¤¥®ž¾§º³±¼¿Ÿº©°¾¹¡¼°­«º¬µ¯¥º²Â¹°Ë¸½¯©ÃÔª· ¯¹¤¨¬¼´­·Å²±•ª»¼ºž¨¥ªŸÁ¶¹½Ê©¼¦¶¿¸°¨¹¼¨¼«½Í¾º¶Æœ¾ªÂ«²ºÐ¶¼­¾«Î¢·Ã¨§¡·º¶Ã³Ñ´¯™¸¿ªÄ¾Âȶ¦¶º²ºÌ¥¸ÁÁƽ¦¯°±»¾À®É²¾¿Á¡¾Äƽ¸½°¼ÆÍ»ÁËÎÆÃ·ÉÈÙ§¿ª·Ã¾®»Œ­˜§½³·žÀÁ»Ã£ç̽ÉÄѼմ»§¶Í¿¼Ç·¨·¬ˆß´¿Ï¼»¾·¨¬°¹Ë·¸ÃŸÏ¯Ä¥»®ª¹°Ä¯È½ Ÿª«©²°¸´³Å¦ÇŸ¾ÓÁ¤³µ¡¥¿“űª¦¬µÅ¬¹±¾¹´­ÀÀºÂª¯»¤Í¶ÍÀ¦»Ö³§¸Í¯«°Äæ³È¥Á¹ÃªÁ¯›½¡Ì¼•¨ Ë¥©Íµ»³½¨¡§¥¡Áªµª³½Â¿Åή¦°±¯™°¥·ÂƵ”ª‹´¿·¾Â´¹¼§µÅÅ®¾Ä°¾À°Ã©¾¹Ê±½«ª³ª¼«¸­¾³Áµ±¿Èº¯¥Á¥·º²½¥Ë»²´Ÿ§¥½–³À¯ÉµÌ±½«¸¢Å ³Ë¥·¹§ºÃ·´´±Õµ®±§À‹­£³Ë¼µ³Æ¢¦À¼¥À¯°ÄÁÂË€»¶¶±¯¬¹¶¡»«Ú¹½²½¶ÄƸ±§½¯·»­Ð³©¿ªª¼º¼´²­¬ºË»«¯Ó³³Ã¯¥Áv¯­©µ¸¦½¨´©Ì±½¹©ÑŸ´®´Äĵ¦ÁŶ¾´«³¶¤±˜µÈ¤Îȷ´ɹ¨ÂÅÆ²´Ð·¸±’½»”žÁÅ«º©Å¾©´¹«³¬½¦Ã¹Ì´ÊºžÆ®³Ð±­®Æ´´ÃÁɸÄż©­¦ªÚÉ·ÎÂÁµ®·²È®´È¾¾¶É´¿¸¢À¼¾Ë¸¾©Éɦ»§ÀÄ¿¥Ã®·ºÃÇ­¬³¬¿¾µ¿«©ªµ²»ÜžÆÂ´ÆÅµ¨®»À´È™¸«Îǯ¯»¥±½¬ª¾Ç´²¼¿¤¥­¶¾ÁÁ“§­Ã¹Ò½½¹Â´Ã·½ÌÀ°¦ŸÀËÅ­¢·±°žÁ©¯µ¿µ¹²ÖªÁº—¾¼´Ë¨±¬Áº˜®¦©¶µÀ»¯Å¼¹Éçɦ¯Ž°²£ºÈŸœ¶³­³É½»¨¢µÀ–Ǫ®³¦²‘°§Ç¹Á¦¬Â©³µœ¯¸¸¸Ï³À¦°ÕÀœ§¶« ¼Ê¸­Ã¨©›Æ¯¦º©·µÅº³½ÃΘ¾³³²´½¿Ã±|º»©¸È¨ªµ¼Áµ°¾§»¾»£µ¸²Å¹®§®×¸®ÇÁ¬º¢¶¸¸¥±±³¨´Ê½µØ®®··¿»µÌ¬¼ÃȲ®¸¡ÀªÅ½¸©¾•¥Ì³²ÃºÃ¥¸Åͬ­¼®½³¡À®«¾´ÍËʺ´Ë¨ª«±®©Ä¶ÇÍȤ¡©Ã¿¼ÀÆ´Ÿ·¯ËѺ¸ØÇȯÀÕÊʸ¡¬··ÄÚ¹®¿½°“¾´ºÅÇӯʱ£±²¦ªÆ©Ðµ×›Ä¸´§À®¹²¶¶Ì¶²»¤ÖÄγ´¨·²Ë¯·µÊ¸³ÂºÄ¦²¿¸Ô«Õ«ÓÅÌ·Ê®ªÀѵ±ãÁƹ°®Ï¯“Ƣ͵À¹ÊµÀ¸Â³¹É¨²ÁÆ«¦¸¥¹¯½¾°»¾¸Â¶¨¸´£¼­¼¯Â°»‹ÍĬ¹ÊЦ¬Âñ¿´¬±°§°ž¥­µ³–­³‚¿À¶±Ÿ©Ê½µÄ±¨®¯§©¯•¯¨®«²¼Å¢½°¬ªÂ¶±ÉÀ¶¾¾¶£¶±¶¬¢¾¸À¤¶Ç³¬·°±µ±»»¬”Ïj‹¸®°¾±±Ã¹°´²­¯«µ¨§§Ç› ¯¹ºË®š¼Ã¬¬«Ÿ¿´¼¸¯¸¼œªÏ¼®©š³Áª×¯­Áª«··´Í«Å©½±Àž¨»¬©Ã¬½±¬Ã«¬±¬´ È¨¨ ©¼¥±Ä°²­¦¿½¦¸Ç´¢Éº¦µÈ¤ª¯²²©˜°³¶½²²®·»Ä¥´ ¯°«¼¾¹¹·µ¼°½¸ÉͰ§¹ÀÆÉͧŷ»§¹²Á°€®µ²ºÆ¬Á««ÐÆÆ³´¥ÂµÃÈÆ·ª¸¬µÇ˺µ¸¤´¼®»«²£É ³³¼Ê»´ª¶¶¾ÌÎÀ˪°¿·¨ÃųµÁ¼¶²Ãͽ¼¿»Ð©¬»¸ÆÀ¤¸­½°¹´ŸÇÔª½Å¯¥Ûº»Á¤³‡¶¯³£m¹˜¶¢¹¥À¾ÁŬ³»¡¡ÍµŸ½Â¡¼ªµ°ÂÄÆˆªŸÂµ£««¨À¿¨Â«Â¥°¿Å³Ãž¬¬¼¼‹È¢©¼‘Ǿ¹Æ¼®©®¢ÀÄœ¿Ð󴼪Ҳ¢¯®²«³»µº¯¼±º·±Ÿ¹Ã¾­µ­ÆÁÇÄȰ·¯Å¼¯¹°¶¼¹»º²±»Ä³º¥«§º©Ä´½µÁ¦Ç±½º½±¼Ã·¸·«¢­¸¹»®¯ÅŸ¼°ÄÌŹÉĺ©Î·É¬¤¾¹­ª¶³Áß¾®³¨²Â¯Ã«±¯ÉǸÐÙ¤»Ã³¬È´Ë°¢»¼­·½ªÄ¦¾²¯¾Ê µº¶³´©®³É¼»¿Ã¬´¶É£«œ½²­¾¦Ñœ©Ì§±ŸÈ±¿¼¼ÅÀƵ‰£©±¾²ËÆš²µº¤ÆÇ½£¦»½¹¦¨¯¦´¯»Á°ºž­¶½©§Ë±¬²Ê±¢§Ã³œ·¸Áµµ³µ­ª¯´¡½­¿­£ÜÊÁ¬¥­Ä궨±»«wÈ–£¾·¹ª§ãÀ²·´¹ÆÁ±À±§¼µ¶Å½µ³º·¸µ½¬½¼¿³žÏ½ÈÁ±³¶±¥®½¨º±ª°À¿®ª¥¦¡Ê¼À½³Å©º·¥«µÅþɣœ½Á´²£©¶º›ºÃ¸²È¥»Á½±¸±¤¯¿´Ä̸±žBÈÑÁ°µ¾¸¿Úž´»È¹°¶Å¡­­¸¹Èñº²«¶ºÇÀ¦Ÿ½¢°¦µ¨¿ƒÕ™¹°°¨¨²©¸º¸¶§´À¯¹´«¶¯£ÀŸ¡š·œ²¹¹ªÄ­À¿·³Ä˾§¬ÀµÈÂÇ ŽÆ«¿§«´ž²É¬¸¯Ï§©¾¯¼Ä³®ºÍ»´­Ÿ—°¬ž¸¿½ª¨À·ºÆ¯¥Á¶Å³¯¹¶¹ªÀªÀªÏ³ªµ²¹È®±´¶Çµ°®Á³¤¶«˜ÀüÁ²Â¼Ç½¹·®Ç¶È·Ì²¯Íº­º¹·¥º®¬±¿¶µ­´Éŧµ½¾­¿Èĵ±¾¯Áž¾²«½»ª¹Ì¿·ÀºÀ²º¶µ¡¤ÁÀĬ½¿«¦Ó¿Ê¾Ã·¯¹¢¨µÅÄË·»¬«¼É¬ŸÁÀ§°¯²Ä¦´°±¢¼± ¼¶¤¡¯»µºº×³»±À¨É ©¯Ã ·§ÈƤÀ½¼³¯%¶ž¹£µ¼¯³º½Å¨§¨½Í²Ö³Ë¿Çű¶­ºÁ«®§¯«°ÃȺµ·ÀÆ¡µ¦´¯³¸À²«È´Ì¨«½³­·®š«Ä´¨¢¶Á¾½Å¾¹«ž¾µ§Ó¸¿´¹´®¢¥ÀÆÈÄÂÀ®¸âĹÆÄ¯³Àµ½­ÅÁ¶¸É´½±´°½£³¹ ½ºÁ»­­´·¼¬¼¹µ°¤º·°™°¦Ê¸¾º²É´´¸¨¬ ±®·¶©²­—¶·Ç´³¹&¾Õ«Ç¹´˜¿Ÿ°—­¨µÂ¯²³·©Æ©®Ð¯²»»¯­Ä¾±É¾±ÈŹº¢¦­Å˜Ç«¹¨Æ§ª¹¼±Ö¦­¶È¾®° ˜¥¾ºË§Ä¤±Á¨§½¯·™¤»¾²´µÄžÀ²¹ŸÐ°¬©­´Âºº™ª®À—Õº¶·©Ÿ§¶²Ãº˜··¾¶²¾ §ºÊ°½¯ ¾»³·Â²¾¢¿´½«»ŸÃ¬—½¥¯ÃÆ¿¨¬°ª»½Ëŵȼ©º«¬²²¾·µ¿¿¸Å½¤»ª¿³µµ°·´¼À¾¾Âµ­½»·¹·»É²ÃÀ±»¾¿´À«ÃÀ½¹¶¾§·Ÿº»µ´·ºÂÀ·¹µÈ©¸»°µº»Àµ¶¯¿¼²ÆµÀ·«¯´¤¯µ¬¹Ç¾²¸±¤·¶¯É£¶ÅÀź»´¬ª±½¹®¾Í¦ÁƳ¡¹¶Æ¡½µ­¯·Àº¼°§´È¸¶«È¾Ç½Â½›»¹»µÀ±À»ž»Á®¸¾½°Î±¼·¥¦Å͸³¼±´½Âª»‘Èɽ¬µÈ¾À³¹©«´»¾·¹µ¾¶¼³´ª¹½®··®¿·¯Ä§Á»”À¶ÇÇ»½Åº¿¿ÂºÇ¤¯Å·«­¯º¢°½²Á°µ³Å²°Ä¾Ÿ´›¸¨³Ê°µÃů“Ç Çů·Á¶›Ô«¾È£¾¾»¹Å¹««©¥²Öß³¾¸¾²Á´Ì½²É¸Ë»´Í¼Ç¸µÇÊ̦¼Ô¥Å¼Å̯½Ç¦Ï«²»žÀȵ©±Ø¼ÈÄÈŲÈÔµÎÒ®¾¬ºÔ²´µ¬ß¿¢·»Ëʱ´±ÌÀŸ¾¬Ê¿º¨À®²¾À³¥™Ç¦Ê¹µ³Êʯ̤Ƣ§²µÏÔȹ¶±©­º±Ú¼Àӯ¨ÃϰÑĵÍÓ¬¼Ó­¯×Þ¯¿Ê¬È¹¾·°±ÎÁÁȸÂÔÛÜȲÂǾ®²»Â±Ñ·¯¬¿æÍ±·¸°²¹¾Ð«¦¯Ó³ÔDz³½²ÉàáǤӨ¤°À·ºÇ®®¹Ï¶ª¿§»Ã¾´Å©¶²µ·µ¹½¿¯±¹Â·¯¾¨¯³ËšÃ³Ç¿°¦ÍŬ¹°¾µ·ÅÊ͸·³¿±¼µ¼©Æ§ª­¶±­º³Æ°Ã¶½¿»¾¬ºÄ·À§ÃÁ©¼©Åº¿¹®Ë·µ·ž³Å§šÃ¹Ÿ®ÖßÀ¿±½Ÿ¦±¸Í¨¹Ç¼¼¾°¶Ñ»Ç·»®»Æ¹ÂµÀ¯Â´µ¶Ä·”¼·¯©ÆÒ¬ÂµŸª²¿©¥­¹Î½»©Ç±¯ˆ¥¸¸Ã­¼¼¥µÄ±š±µµy¬È²¼¯¨©¿·¥®¬¸¯¶Ã¹¢­« ž²®¬ª·¦³¶§Êš¿´°¸¯¿©®º²Ã¡°Íμº­±À¸¯¤±Â±ª¥»®ÆŒÀ¾ŸŸ°»±¨Ã³Ã·Ã¬É¸¼²¹·«¼°¹¼¶¸µ£³µ»Áª¼°²Á Æ¼¥™±«Îµ¤¬¿±µ»¸¼¸È¨Â¹³³½³¿¾¿ÃªÐ½Õ»ÌºÆª¯ÆºÇ´¢³µÁÀ¸Ì¹Ôµµ¹Ê°¾”¹¿–Äп·¾”¯¾°È½§Á®¾œ©¹¯½³³³¸¬»±ÇÀʬ¶»¬®·‰º¹»³½²©·Ë«ŸÃÇ¿ŸÎ·É³°“¾°À­¦Ç§§±¬¥²¨À·º©¦±ÁǷ̸¼¬¥Ä±Áš©Á£±Â¿³°À¥®µµ¾²Ï°½£³ÂÉ¥º¶³–¾¼²Í¸ËǦ£°«½Â®“©ž¹·Ã–‘¾¸µ©Â·¬’½À˨¼¡°®³«¿«œÎÁ“Í»´§¦°¿ª¿Á»¨ª·³¼¼²¯²ª¸®Á°œªÂ±Ê–Ÿ½¯ª¸Àº¹»¹»¾•¸¯µ˜µÉ¹¹›¡µ«Å·­»Õ³¼¿º´·¿¹ÿÃÂɩѹ³Ä¤Ã¯¹Ç¸´ºµ½ºÅϯ½¸œ±©Ô½×˜¶Å¾È²ª¶»¾¼«µ¹±¶Í¿ÍÌ´±Æ°»»¨Åų»¡©À­¶Äš¥¦ºœ–¨¤¾¬³Êѹ¨¿¡¡¹Å¼£¤¨¶«ª­ŸÉÇܰ¦Í¶¨¬°©œ©¥¬¨¶¿°»À·±ÍË­½Å ¯ÁŸ»¶´³ –²º­§½ÛÄ®ÍÏ«¼¢³²­¶»ÊÓ¹»£³³´Ã±±ª¾µ»™¾¯È¡²°¹¡À»¶•Á³Ì«ÅÊΰÄÁ±Ã²ÁÆ­¸Ï°°ÓÉ¿­®Å¿º¸¤·²µ´¯¸ÀÏǺɯºÎÀĬœÀÃÆ¿¾ÀÈÁƼͿÆÂ¶ÁÑ«¼³¯³š®Î¡±¶Ñ¯ÂÅǦ¾Ìҵº¥¸©Ê¥¼·¥µÄ­Ù¸È¾¦Í©¼ÁÅÆ´£¸Ê¹™³±ÃÌé³±§´Ë¯Âѹ½¸µ»®»¨¶»¯º¥ª©©¬Ðµ¥±´´µÐ¸Þ´´¾½±Ð¿º½»Ï­ºµ¿¶½°²Ò·äð§°ÃØ­¯Ô®ÁÄ¿½¿ÛâÁ®Ç¶¶±µÄØÔŰ㵶ÌýǴÁÀйˮ£¬Ö°É¬±¶Ç¯Üº¢© ¶£¨µ³±°±£µÇÏ¿½¼·½¸¹·ª¦½«»¢¾µ¿½Â¯¬¬°»²¥Ã¬¼¬¡®Ï¡®Âµ«º·´¾¹Èµ±°¬Á²»¬¦­»Ÿ®¸¼£Î˲·­Ã»Á®³´Ì®»ÕŸ¶«°¨³£Ï׸¸¦®œµ¦®³¼»²£¢¾¥Â¯¥¨¨´½¤®‘´¸»³²²¹ ¹ªÊ¹ÈÀÒÅÇË©­¡ª£±«µ®¶Ô¿¥µŸ©´¬µ½©¯¿ª´Ü¬®Æ½­¾°´ž³¦°¡¨´³»­¸°˜¯¹°¨´ÂĨÀ©œ¤À£²¯¶´±™º·ª­¹›À§Ä¦²¼¨½¯Ç»³­Ì¸µ¤´§²¬·£ª¤Þ¶Â¹¤Æ¿¹¯¶­Á¹Á¾¼¦¡Ã±œµ°ªµÚ¯§µÂ²ÀÁƯ¤žÈº¯Ä¾Í¥Í¹¸È²³¾¶·°À¤Çµ§ª¹Áº§ž˜À¶µ°¹¸¨²¹¹ °·«´¶®¼³±¤Å’Áư²Å¹©ª±¶¨Á»¸¹¢ËϹ·À¦·Î¾¦¶µ²Ø°¾²¬¼«·««·ÒºªÌ»½Ä°›»³®£ÅŸÀ²®Á¾¸ ÐžÄǯ¨Á´´Í¼’¥²º®®¹¹¤ÁÁ¦±Å´²£Ñ»“¹¹«µºÈ®º¾±³´¯§Á²¼”ÁÄ¢º ¸­¿®¢½­®Æ¿­±¾¼¾§¸¹£®²º·¶µÊ²³´¬¸Ö·ž¨²Ìª²·Æµ—´»µ°¦¹¾»¾ª¿¹Î·¸ºº¡Â³É¥±­·ª¹Îí¯Ì«¬¸µ±À¿²¸Í³Á¾·»¹©©»¸¼´Ã§º»µµµ­·­°—²»­É¥´¼Ã¾¦ª§µº³³µº¥´¸À½¯®È­½¾¸¿·¶¼½¼Ã¼¶««Â´­ª”º°®¤¶’®Å¼º˜Á¬¸ºÃÀ­·½£·³¾·³¨¼µ ® ²½¯Ç°¹¶»°¿Éµº¿¡«¶¦Ì¡¸º©›¥²±ª»¿©¡¯­¨·§¢¥ƒÇº§¼¶°·¤¹«•©™º¡Œ·¨©®ª±z§·¤®«º»µÎ¸œ¾«¹°œ®½´¼ª©Â³É¿¢§¿º¯±°´¹³¹µÀœ¬š·¼Ä¹¸²±¡¸œ»³¢µ® ¶¬¿Ú¦«¤• ­®¡¼»²·©¹Ã«¶Ç¨ªÇ²Æµ¹±º¨¸º«»Ëᄬ£¶Ý¸±¥»È·³´«ËDzʱθ®¼ºÙ¢¡Ö¤®´¸ÈÅ£º²¿»®¸ªÈµÁ¶®Â¯ª¸­Ñ½¯®²¹¸°µª®¯œ±¯Ä³º¸®Â¡Ç¾´¥Ã²¥š®µÂªÇÈ­°¶±¶·¯¯±ËǰºÉØ£«²¬¥¹Å͹Щŵ··µ¡Á·½¯ÊËÕɹÃÜ˽ª·¿Íɺ¥ª·©°¿À¬®ó©¨Å¼Ï¹Í¯¶Ç¾›È¼¦®½À­Ç¸É³®½Êº¹¶Ä¯¬Ä³«Å´°¿®ÆÁ̰À¤ÖØÃ·²½µ¼¤ÎµÀ®Ã·´ªÊ³¹Ì¸²Û³¶Æ°¾·¢ªÙ­ÆÐ¸ÉÉ®¢ÈµÃ¯ºÉ¹´Â±¼´´µ·¿¢Èð¹¹À£¸½§º»¯¬¹¾¸Ê¯ËÊ×αŸÇ «ÒººÕ›Äº³À³¯ÆÇ¯¶ÏÁ¨¸Ã¼Æ¿È¾½ÂЯ¨¤Ã±·µ»ÓÂÅò±¸·¸¼¿Åׯ»½°¯µËŸ¼Â¬Áǵ¿Ê·ÌÖÍ·½Ì½¨¾°Ó¨­Çµ¶¯¬µÁ¸·­¼ªÆÅ¡Â»Ã¨Ãóʺ¨Å¯Ê¯¦§¼µ½Õ¹Â´»¹µÆµ²°¹´¾°¾½Êž¢~ ¿¥± ´³±¥·¶²¨ª³µÌµ”ɾªƒÅ»½µÆ¸¤Ÿ±¾»°¡¼±Õ¥¨½·¹Àž¿³ÑÌʹ¢²½­«·©²»¨ÉÉã¹®Ó½×µ±¬ÁÁ¶Ï¶»¹º±´·¾Á¼Á¹º¬º¨¿·µ´´¾ÂÀº³¹ÉÁ¬§¡¯ÍͲ¿®½¼´±¸Æº¸Å¾©¯ÎœÃ¤Ã¼»¯¹²¸Áº¾¿³•®Æ¹´·¯º°²§»É¬ÃÁ ›®žÄ±µ²Óºȴ°´¿µ¦»ÄЯ¢¾¹¾¹ªÈ¬«¼½ÁÜÁ®²³®¶±§¹¶›°ž®ª¨Ä©²¶Ôµ§»´§’»¦¡½±ž®¸¬Ÿ ½—¶Æ©¤¤¾¾—̱¨¢³­©²Çž¤µÎŨ¥Ê±²¤¯« ”½¨±ÃĹ³‰¿Û·Ê´Á£Á±©·ºº¼®½«¶aª¬©º–ª¯º±¥¬Ã¶²²¬À¶®ºÄŸÃ²°¾¿Ë°½®ã»­¤¸½Ç¬¼¿¼´²¿¹¨º­·®±©ÀŸ´°´Æµ™¼¼°¾œÀ¢ª«º´¿¿ÒÁ±¿°»¦À´µ¼¿˜­°¶¢Ä¼²±®¯º±¶Ÿ£±°Ç¡†­º·§²¸¶¼ ´»±¸»¬¹Ò¼¦²³°´±º¦º¼¸³²µÀ¦¯Á´±°­¶À¹º¸£¿³©¶·º¼§¼­Å¶ ™£¿—ª­µŸÁ·Ä©¹³µ²¤ßž›±® ® ±´Å–¢ž´ª¯º”¡¼È«Áž­Ô­§°Àµ°Ç¼®—¯¾¹¼Ä»¸«±¾²ˆ·³¹žµ²¾­¸•¦¶±°··²¶µ²°¨ Æ~ÄÀ¶¸¯Á¼£´±Ÿ»¸Ê ©ÀÀÀ§Äǽ̱¸©¼Á¶µ±»¶½¼°´³¤¸ ©·¯½©ÂÁ«¶™º¿º©À™©½­»­¡Ãº®·°°¸·½§¤¶¸±Í¬°À·¡®º¾´ÀÀ²·•À³Â´·£±Ê¶ª¶«¾®¾Êº¸±°²–¿´µ·ÃºÇçšÍ‘©²¯ÊκªÃ½´Ì³Å£±Ã·¹¬ËžÂ–¼¯²Ð´°Ê¶­¹Å°º£©¥·Ç¶­¸¶½®Â®´®º±µÆ­¥ž½®Ä¶®§º¸¿· š§Ä·Â®¶°¸¿ž¸ª¸¼¹ ¯©¹°¯¹³±¨Â©½´­Æ°µ­®´¦ª´Âf´Ê®©»Áŵ´¦±±µÅ³§¶Ê¿·¦©²Ç¹¸Å­›šÀ½²±Àš»·©Ê¿¦Ÿ«·»»·³¶¹º¸¼¯¯µ«²½¯¹Á¹·Â²Â²±´¶­Ë·¼¯±¬¶²»Àì´Á®µ¬»¸­³¶Í«»¹°¢¾šÅ»¯²µ»¢Ã½­¥¢»Ï«ºÄ·ÎÅ£´¯¹¹©Ä¥»­¨Ÿ¹”¦µ¹Ã¹¾¼µ©Áº³µÁ¨˜¹¸¦©­¿³±Â²´¶´·º±ÁƹµÆ­·¹¨¥—µ±²µÀÇ´¼¹Â½¬Á²§Â­©³²¿©´´¯½®®«²¸¬¥¬ÊµÂªª¬§¾º§°œª›©À¨®¬·¯²Å«²¨³½x›¾È—¯º¤¢Á´©°¥¶º¡±ÂÃÀºµ·«²¹žŠ±¬²¿¶¸¼ÃÀ¿¸ÅÀ™µ²£¸£¼ ¬Å²´´¼·É¶ÂŽ¿µº±¯šÄµ½±¶Áž»§½¬Ã»À´¸Âº»²­º©½Å½À¹Æ·¬›²Ä³¯½½²£¼Á­¿Äˬ°À½¯»Á·±´§½£Ã¾­«¥­¹º¾Ã²·Í³³»±ª¼Á£¦¼®ÉÆÉ¨Á¾¸¿²º»¶ºº½°Ä±Ë±·´¡À­¡²·¾¦º´ŽÁÈ®½Ÿ¨ªº¶®´±®°¦ ³ªÆªÄ¼ ¹¹´™¨ÆÃ°À›­›µ§©²‰·¾Ç¥®•µ¡¥«¬˜—ÂÇ›ž¼ µ¸¾ª¯±¼²©µ½¨Â´¸¦µ®·­´¢Ì•½À¼³«»¹³¼§¼˜½»Ê¿Ü¼¹»´¦¿¿º³¶¸¦¹§ª½¶Ä¯µ’¬·¹­±¿½¸Ãѵž³º¶¯»±¾½¯¯»¾Ð¼¬ÂÇ›º§´»©ºÂ©­µ´¯Ä²»¢£·À¹°Ç³³²´ÅÄ̽Äȶ³ ¸®­°ÃÓ¿ªÎ³³º‘¥¯¿ž¯´¶¿º¦¼¶¹¤½ª«ÁÄ¿½•Dz ¾Ô¨½¶¹¼¶Çª¶¿¹Æ¬ž®Ã¬ª³¿ÊÁ§­¾ÅÀ» Ç«­¨ž®«¸¼Ä³¬·¦¬Ã¥›¹½–¶¶™¬¿²§Á¨°º¤·°¬« ®Æ¿±ÖÀ²·Ã·Ä³¸¢¯³§·¥ž¦­¹·´©²¼°®£ÆºÉÊ¿»µ³±¢¶Ã¨µ®´¼¯¼ ¹µ±©°µžÄ¾´«¨´¨½»·¸¶—¸¡¹¾µzÏùƜ½Â¼Æ¼½Äº½§ºº¬À«ÆÁ»¬´°·ÃÅ´²½¶°©²¶´·ÄŸ®²¸©±¡µÁ½½¹¼©´¼¼Àº¹£Å¼­¹±°³ÅÀ¾¸¯Æž³§º³•­©§¾±¿À¸¸·£Á¼š¯µ¿³¾³º¦¹À¦¥­»²¿ºÁĸ´³«¼¸°¬›¥´·ªÉÏÆ´Àβ§¯´¬œK¢£¥º®´¾«´ž²É·®Ì²µËº¾¯¢£µº¾«¢±³¦®¡¹° ½¾¥«®¼¶¹ªÄ°²µŸ·½º«¾À©˜‘¦¼ž¾½Ë—¯«»Â¼³¢³½¹µ¶¿§ ²¼¸¶§¶¤ ¾žÂ¸¤¨Æ¼¥ÀÛ¤©±¼²°¤Á¨Ÿ¡¸Ä³®µ˜§ËÈɬԭūɨÅÌÁ½°¥»³¸ØÄ¦ÎÇÇʦ¯Á¶ª¨¸´¶Ä½¹¿Á­»ª»®Àô¾»Ä²Â¦à¥¿µÃ¾©±Ç±¿Â±»¸™¸ªžÁ§©§ÅË»ÀƹÁÎÍϨͲÀºº¬ÂŲ±¡¨»ºÂÀ¶ÌÊ¡ÉÐÕ¾¬ªÁ¸¹¾¿²ÂÁÒDZ¬«´¨¯Ò°•𴦤¤È½°±­Ã²µ®¼Îø¶±ž”Å·Ò«¡¤¯•¯¹¦¬²Ì² Ê¤¦Ù­ÇÎË£¾È¬ÆµÎ©Å²¹¤ÐÄĵ±ÆÉ—¢Ç¾Åµ«¥Î°Ó³¬°«Ę̀ƞ¯Á³½Á»¹§ËµÉµ¶¸º±ÁÔÉ·³½´Â³Î¨¸²“ž±Æ¯º¹À¬º¾»¾³¸²´¶´¥°µÂÀ»¹³©¼Â¿½¶¾Å¬·¶Æ»Á§Ä¦ÃÂÓ³¾˜ ½Àϲ¢²¹¯¶¢« ½¾¹§¨¬ª»½¾º««¼À¶Ç¤«·µºÆ¹Â¾¼ºÊ¼©»«¬Âº½±½¼¤§¢¼¦´®³À»§¦¿µ­Ãª­¶¶ž´³¥¬ÙÁ¼®¹²­³Ä±³«£¹¬È¤¬¬À·À²¾¸¹ª¥Ê©¹Ã«œ®Á®Á¹œ±¦º­„™±ŒªÄ¹Ä¥º´±…»¼°¼¢±•·­ŸÕ¬µ»¸¬Á”«£»Îº¸Äµ¼¦®¶¢½Å¨¼ÉÀñ®º´º²¦®­¸¨«´¾³ËºÄÅÁºžªÇÉ׿ø½ËMº½¹Å·¨Ó¦²µ¶´¯Ê­´½º¥Á¶¶Í½¾§¸µÆ°Çɼ¶³ÉÀ»™Æ°Î«˜­Ô´¿§¼¹¹º¤¬ ¦Ã¹²³¾Ç¸½·¦´¢È«Å»Éµ›°¾¹§Ã´¯¿²¶´É´¯±‹¾µ±À¿£Â÷½È·Ä¯²«Èªª¬½¼¯µ³¥Á¹¿ºÀ¯¯½Â½¨À·»´º··–ÑÅ”±Óž¡¾ºÅ ¸¤§¿·°²¸ÄºÁ¼¸©©ªÌ£Ž­¾ª¦°Ÿµ¢‚²¯´Ö¹¥»··˜¼É²ÃºÆ¡»¸ÀÀ²ºŸÁµÈ£­±³·È¸º¤´–£¬©À®©Ä¿ÊÚ¦¾À¬´µ©§³°©À™¨¢±Å²ÁÈ£¶³¸Ë¾©¨©¿ª™±Èž°·¹¾²³Â—³¨ÀÉÁ°µ¢¤¼´¿·«­µÄõ»¶¦Å“Ƨ¯½»ÊºÊ¸µ·¾É¸°¹­±¸¶Â´Í¸²¿¾¹½Ï­¶¬°»È»·Óɾƾ¾º¾»º²¹¼ÁÆ›´Å²¶«¸ª­¶¸¥±¦¹±Ä¨»¹¿»£º®Æ¬°Â¨´Æ»¦»²É²À¼‘³¢§Æ«®»¯­¾©·²²Ã¤Ÿ¨£œ·°Ãȱ½®£¸°¾»¿½¸´¶«²—¯·¯ª¹°‹š¿¤tÑŵͫ¢Ã³º¢´©³¼ª¶¦¶£®±¼¿¬®È³¼»®Ç¯Ç·¸°Ð“ÎȲ£¶ÅÏÏ¿¦¬ÎÅ‹²©¯È¼¹­¼ÂŸ«³Ä®¯®ªÄ¶¯§°°§½¯µ¶»§ÂÊÁ®­²ª´¹µ½®·«Ç²§ºÀ»¬·¨¦­°°¸©²°µ©ÄǺ¸¾²ºÉ½Æ¼®µ¾®±­¥ ­¹µ½”¹Á¿¶°À¹¹¿œ·¸¯Ÿ¾´¶°Á¼À¿³³±¿·²¼¼ÊѵµÃ·©ÆºªÁ³º¦°¸¤®ÀÁ¿½¼¯¼Â¶Ä¼ÁµÀ¼«¹§´µ°´¾£½µ´¨²¿«Ç±Â§Ãª(¢¶ª¬˜Ÿ¹¢µ¥¶­š¼²µ²¨ÆµÃ¹ ¶¨½³À¯·¶´¬¼¹¢µ°¸¯´¥’¬½¶¼¤Ë® ºÍýºÁ¨À¨¨´”®ª´Æ»¸¬©À»«°­¿¬¾¶Ã§É¿¢ª¥»£©¼­ž §¨º½È·ª¡¥ÁÔ¸§¾·ÈÂпžºÁ±œÃ¾À±¨¹Ð¿®¹·³Æ·É¾À¿™µ¬¹´¿Ÿ°ÈªÅ®­¶³Ãº­³·¯·©¶¬Ç¸®¹±žÄ±¸œºÅ­»§­¹¨Æ²ÆÃÁ´Ò®¶ÃÇš½¾¡ÍÀ­½ªÇ¶›«¼±ÅµÄ¹­¸¼ª²¹À ¬«¯«¢¹º¼§É´Æ»Çʮ˩¼º±«ÇÊž¸ÀÁ³ËÅšžÈ­·µÄÄ ¶¼¶¹¹·ÅɾºÑ½¬º¸Â¹²¸´¡¶µ¼­Ì”ÃÈÈ·£®©¶ßºÌ¾žÆ¦¦³º¸Ì¹¥É²§ÁÑø»Ä¹¶ÀаÀ¹ž™­Ì¸»¿Áº±¶¤°Å¶É¯«Æ¯¬Ò“°Ä—µÆº¿¼º£Ÿ©±¶¹´³·­¸½»µ¹À¸¿Í»Ç´°´§­¿º½Æ±¶¾¸¾·Ã¼¦±±»´¾ª¶Ê¸½Ìù¶Ã½¸À»¸–®¾¹°¹¶¬¿À–³Ô³»­·¼«¹»«¼¸°ÇƳª¿À¶­µ©·Â¾À͘·¾v·Î¶ÁÁ³±Á´Â¤¸À±«¶À¥¬µ¼®¸Ã²Ê­¹´¹›º¸²¨š¨µÓ¼¿°Ãµ¦¬Ò³¯·ÊªÂ¼´±»¹¾µ¬µÆÏ𼱏Á«àñ›¦´°©—¡ª²»½¥ª¶³Ÿ±Ì·¾¯®£\©¾±Å«Ÿ®œ´¿´¤²¿»¯¼Ï£·Ÿ ¼­Ì¥³ ˜¸¡®¾­Ç̤·¨Å¨¨´¹º¯—®½»Ê¯­³­Ç¼¸¶ºÅ¿º«°¼¡Á®²°»µ®º¦Å·¼¹«¼Ã³­¼¸Æ¸¡¿²À½·µ½¼ÇÁ®À¸¶°¸ª¿¬¼ª±µÍ™Çº°ººÂѾ¨Ê¨È¤¸©ª¸®µª½¬ËȾ¾¾··Å¹¬šÀÀ²Á»¼•½©Æ¨¾»®¶ÇµµË´£¿¾ž´©´£µºµ°·¹–¤¯ÅѰ¬­³‰Âª°Î±´¢°¿ŽÆ·²q¬´¶·Â½­Ä±·µ¾»¹Í±¥°®´±¼¨£­ÌÅ«°ÂÀ±¨¸»–¼²²¦®­°¬¼Ä¦¤²±³Ç·°¸²Ä­§¢¤£Ì¹¨Ç¼º®º¥Â¦²Ä½Ê¯¸´³¶Á¨²¢±£­´¾Á«­¦¥ž°¯¤¿­»ŸÁ˽±¦©¸™£¼¿³¸Ã´²»´½¶Â¯¿©´’·´—«®À°´Àº¿ÃºÇ¸±¶¾ºÃÁ»¸­¾­ ®Ä”¶º¶²ž·Ã½Æ²°³«Á·«°©Ä·ª·£§·±®°Â¾¼®º¼·Ë‹¶¸¸¿º§Ç߬©¢°¨¯¨¿µÆ±Á·µÂº½Æ–ºÇ¦¹»°º´¬®ÇÄ­©®©£¦ž¿¯›Ï­½ƒ´¸º¾¶»Âµ‘µ•Τ§±°Ž°½½´»¢”Ä·¿½ÆÉ¹µÊÀ®¾¦±¹¸Ã¾£Á§²Ë»ŠÁǺ»¶±­¬—£¿œ»¥·¯¹Ç—®·¹Î“œ¶¾¾ÆÆ™¦ÀÆ¥ºÎš·´À³«·Åµ­½¿•­´ËÁõ³½À©ŠÎµ»¼¾®³Àºº´°¨©•¾À̱¼¯µ¿µ»Ò¹¬¡±®ºÃµÌ¯¿±Æ¹¼£Ã§³¼À¼Ã¯Ã¯¼Âº±½½¸´¨¢Æ²ºµ©µ­¬°¯ÀºÔž³µ¸°¼¾‰À¨±º°º¼Êº©³¯­¾¼½ºÔ³¶Ã¿½¼¼´ªµ¬³¼µÃ¹ÂÀ¾¿»ÅºªÈ¥¾¥«³½¦­³À·ƒº˜£·¢»µ½®À¡­È¨¾½™«†»­¬¼²Æ§¸«ž­¹®Ã°­³¾¸±°À¼¼¶¹™ªš º£É±µ¼›Á½Ä¨ª©¯»À°¹•µ§·Éñ§±ª¥¼©´Å»¼¿´Ë¹¬ºÀ²¥š¬¶°¹¶Â»®Ç¸Ã¿ÆËµ½Ã¼¾³¹°¯À¿Îº¦Ã»¶Ã­±¼¶´ªÂ©¾«²ÁµÁ½·±Á®³¯Ã²¼«±µÊ»»Çµš¾«¯Ã®µ½®·½¸¶±Ã¸­ÍŸ¢Æ·¾‘Òº¬ÆŸ¸¸Î«²Å¶¿¹Áš¿±Ä»¾»¹Á¨˜¨¸¯¡š´§¼¸Ì¹ª±ÁÃŽ·ºÊªº±¬»¿ÁͿɯµ»Í½²Žš»²£É½ÇØË¢³­ÌÍ·»¶Ë³°¬¥£Ã³Ê³¹§Æ¶«À³ÎÈ©£Î׸ű¾Ç·®½¶Ô¼©¹¢Ì¯Á¯¸ ´©­­¥°ÒªÃ²–©¨´Ì¯¸µ¬¹µ©²Ã¬·›Â¥¿²¿¥¬½¼³ÆÂº¸¤¦Çɱ¹°¹½¼ÇÁ¿ª»½»¸»Æ¹°ºª¤³° ªµ³¾±©«¿°«¨¢¡¶¯£¸Â¨­£´¸©»Íµ»¿šËÍÁ¢§ÀÆÂ¸ÆË­ÅÁ¿µÃ°Ç³À¶ºÏ¸Áªºµ˜³´©¯´ÅÀ˜Î³ÁÁ­¼·¥Á©¼¿½œº­ª¨Å¿²´µ¨°Â·«´¸¶¿·À¾¸ÃŸ¿²ª Ç£ª½«³º§°¸µ©·ª²Ž¦¼©Ë¼±²§°¿¶Á´¹´¹¯´¸·nô«Êª¼Â¸¡ÌƷû©Ç£Æ©ÁÅ£œÊ¶¹´±»¬²¶Ã¹¢ª¡½¹´µ°Ã´¯¹ž˜Á¸Íͪ¹ÀżµÅ£´°¥¾±½¯Á¼¥·¬»³°Æ µ¾´‰¶Ç­¥°¿À©Æ·¥Œµ³œÉ·Â¹È¥±»®¯¾¶°·Å®¼º©®§µ´´À¸«¸«£¸¦»Ã¯§¸´Àº¯ž ÁÁ¯»´©¹µÁ¹°¯É¾»¶³·®¹¼§¸°¦¶¸´¯»¼´¯¦¹µ²¬®Íµ ³Ã¼­µ²½¨­³¾¦®´ºµ¶°­·º±ª±Ã¸»¯·¸¬°Ã¬œÂ½Á­±·²Â­¦Ä“®”±»£¯®³¸ÁǨ•°·©¶Ä«»·µŒ­¬Ÿ­®¼¡º¯›«½Œº¢Á§°§¿¸£ÀÀ²²¬¿£’®¸¨¾©Æ©©°»¿¢¨›®Æ¦§»±«š¸ž±»¯È¤È«¹Á¹–­¢²´²£°¼Å¦µ²·¹×¬Âµ¶°¿²¢¸³ÃÀ ¶¥ž½­¬¡¬±¿¹¨É¬Ä§´»¶Á¬ÈÀ½À²¿»³¶¯È­–µ«Ä˺ÆÌǯǬ±È¾«´²¸·¢¹£Á½¹ÆÅ±Á°°´¯Ç¸Â½¾¾²¾¾ ³¾»È§¨µ“«¥¿ÎÀ¼­¾¹©­¾ž··¨Çº¶ÇÆ®²¹´¦¶¦ÈÀ¿®Â«Ê³À¿Æœ»Å›¼ºÃ•°Æ®À«È¤°›Àµ½‹¹«¸Ä½ª¨¬¾§Œ¡«»¶¶´®¿À¨Ç®¸¢§Õº´Ž¯À¼µ‹Á¿¶«Æ»±¹ºÀ»Ð¾´›È¯´ŸÄ©œ¤³«Â¾¿·¹´¿¾¶ž¾¬Æ­µ»¿Ä£”­­Ÿ¸¦¼²¬‡Â¢ªÄµ±Ë™ºÅ»®ÉÈ–¹±¹µ³±¯¸ÂÀ©¿ÄµÂ¨¦¯²¼¹¸Ê¾²È¯¬½¸ÎÑŸµ§¬ºÌÔ¿±¸»©¨²£Í·´¸¸¡Åºµªµ°µÇ±Ã²½·Â¾±½Ç«°Ã¢º¼¤»²Ãʱ¯ŸÅ¶¤Á°Â±À°¯ª°¶½²Ä±®¨º¯¶¡¯¸º½¯§¹¸˜¾²Ì¹»¶°ª³¯ª³µ´«ÐÍɸ¸Ÿ«Í¸­¼««ÀÂÌ¥»šÉ𝳩¬¶¼¤Ùå²­ÄÁ½¬Á¹³°¹¥¢¦¯£¢¨šª¿ÆÊ²µ¬«—°ËܹÀÌ©ÔŪ·¯À­¤ÂªÍº›®Ç´®Ì°±¥¡·»ÃÅ´©£®Ã°®É¬®—Κ´ÆµÅ¯µªÍ¬¼³Â¿©£½¡ÒŸ¢»µ©«¾¿¸¸ÂǷ®¾Á·½¼¼°Å¸³°Å¯¸±¯ÊÃÁ¹³Á°Ãµª¨¶±¼¶»³¼½¾»¦¹ÂÂ˸¼ÇÁªº¾ÇÒš™ÌƶÅ̪¥³¾¦¨ÆÀ¸³¯µ»¼Ñ¸À˜ÁµÉ¾¼©¯¤²¯§Å¤œ·ÆÆÉưº¨¬Í½Ã½¶¤µ°¾Ë¯¹³Á¹¾¯ºÁèĒ´¸ª¼Å³•²š½®Æ¶È¿ŶºÃºÅÎɭɹ¼­š«¦½ºÆË™»Æ¿—¤²°½£¶›¼Ç Â±³Ì®Á¨¿¥»º·¥ÁºÉ»»«¯º»º§´§À×»¹ÇÄ™·¸•IJ²¼¹ÄÙ¹ÃÃÁ~²ËúѦ­§µ»¾ª¸¨¤²«±¬±·¸¯³µ¹ºÂ©¶´´½®»¬²°Á¬¸ ®¬¶Â¬¬±Æ´¬Ì­Äǰ¹®«¬¿ÃÅ®®±²³±²—µÄÇ©¹ŸÉ¿º¹´·®ÃÁ¼§Ê¤¬¶ºœº²¹¤¿¬µº¶±¸£n°²»ÇÁ¿ºÆ²Å™»Á®Ê´°±²«¹È·Á¾Àº·Ï«°²¼À˺Ʈ¼¶¾Ñ¤º¶Ä¨¤§«¸ÄŸº«Ä¹³´¯¿¡Ä¶³ÀÀ¬ž À©º“¹ª§™¢¤¤±´¨¶¯¦±¸¹ªÁ¸·¨¡¬§±Á¬¿ÅÉ£«¨ ¼²´ÄȲ©®¹´·¨ «¹±£¬®ˆ¤­ªÇ²· ž¸·º»ÅÏ¿ª«²·ÂÁ·»¹®¶Á¥ªŸ²²Ã·®‘¯²¬°¼Èó»°²¹·¯ª¸µ»²»¯¡´¤µ®¬½·¤¤¤»±Ä·¬¹­Ë±Á͸¼°Á¥¬¸³Á£«½»Êµ­·«Æº§ºÆÂ·´Àª°È°ºž¶¹´´º²Æ®·®ÈÁ±É³³Ä¿ºº¿ÂÆÂ±§Í‹–¹¦¾°Åµ–·Ê³«Â¨¯»²Ç³±¯·ÌÀ£·Íɼ§«Ì®¥¨¡±žŸ­°´½»¸ÊÁ½Æ´Âº´—²¬”ºÉ­¥™¾¡º´š«Å°±¨­·Ï«´Íͱµ¶¯µ¯º¹®ÌĨǼµ£§È¹œÁÁ©¹±Â¬£°É½¶Á¾Š¹«°Æ·¯¼¿ž®¾¯©ž¨È¤³·Èǵ§®Ë»°­¯­±±·Æ·¼Ãª¸±Æ¿Åœ·³£Çº¶£¶À°¯¾µºŸ±µ¯¼¿·½»¦»»¬ ´¿©»²´¬­´ŸºÆ´µ¬½¾«°ÄÀœ¸³³µ²ÃÉÀ·ÄÂ˰²¦¥»²º·ÄÄÁ°¶¾Æ¦¿«ÇÆ¿¤¾»´°°§ÀÄ©©É¯Æ»¶½ª¤¿Æ´·¿°¨Ä®žÂ¿¼Ç½¦¿ÂƯ®±¾„¯´µ•‘¶¼©·®À¹´»§¾º½¦•È®¼¬œÌÀ£³›²­¢£³²¾À¥ª°º®¿º¶­«Å·µ·µÀ°²®¦Çª³Á¦¼¬žŸ³°²À̈´§¬Äª»Ø¸¦¬µ±±°¬´±¦­¨“¹¤¹´Á¤¾»Í´©²Ç¸µ¨¾Ä®À¸«¼µ£²µ²¸½´¡¯Æ´È¨©°®°ÄÍ´±¯º®·®´²²½¸Ç»½ÎÀ¥¿º´ÇÃÍ´²±ª¢« ¯Ô½»¾¾Ížͪ ¯³Æ¶Â½ºÏß´°®¯³³®´©Ë³È°½±“ó˷ˡ¨¸»º¦¥ÏœÄË¢¶¼¿¥¶¬Çª¼½¿¬¾©½¼®¾§ž¾¾§·©´Ÿ³¸°‹š©²¨´£µÄ±³¬Äª²Ÿ¯Î¾¬®¼­·”À¾¬­´¡¢¼¿žÁ¹Æ²¹±¦«³ÂºÈDZ½»¹·¹¥¶ª›¶«º¹Ì·¯»¶©¼±³¶¸¬¡¬¨¿¦­£Ë¨ºª¾«ª½¼«®¬£¢¶¹¶²·Êɸ² ¬ °·º¿¢­§®¤¦£Â¨Ã¼¤´ÃÅ¿¼²°ª´µ´È»»·µÃ¯¯±¸À±ÀµÀŸ± ¿Ã°­Ã¹¿¨¸°±¸·Ã«—½®¹´¬´°Ä²µÒ¹»¢³¸¿Îº°ÄǨ¸·¤½´Ê¾­º²¦®˜¹®¬ºµ¯¼»œ¯¹±ª®Åޝž˜ÁÀ»¢¢¾¶¹Á·­«­Ãº¾¿¨³ª°¾¿¸À··¹­£°¶±¨™·± ª¾µŸ ¨¹—«º²­¾²ÁƼ™¸£š¶§`¢ªÃ³²™»¼¹ØªÄÁ¸¬¤«¶ÑË©¹¸À©¹³´¯ª½¬´§¸±±°¶™´¾¿»§º£•¿Äȯ­²¥ª°·’įµ¹º³¹¾¯©£­ÉÁ²³®Á¦½¥¡¤·²´µ·À²ÄȺ·¯³ž½¿ž°À­¹±­®¼¾Â¡È¾¶¢´Å¯¬µÉÅ•¶¿Ëµ¾·§»±­»¨º²¨½Ç¾º½° ®ª·Â§¹Í»©¾«·Æ¿œ¿°ËÄ´Äг°¦´·¦·—´µÒȼ˪š¼ÆÁ¡¯±Î¬¹Ãµ¶Ä·Ã°¿ º¤Ê¶­§«Çµ²¿®½¥»¯¯ »¸´ÃŤ›º±´·»ÉŸ¿´ºÅűÀ³®Æ´œ«¹±Ú¯˜!½º«·¦¼Å¡¿·Ï°³»¯À˜ºÀ¹®µ³µ¨½ž±Ä¸¼¹¾»¹›¬¡º¬À½¤Â¶¾ªª¯»µÃÀ³£ž±ÂÌšÀ¤¿­ÀÑIJ±¯Ç°©¡Ã¡ŽÍ ¹±°¸Ÿ­¸Ñ³¶»Á»÷·§·Ð毴з±Èº¶ÎÅǽ®ª½½¸£µ³¯¿³®¶¹µÁ²¾Ñ¬¸°¾½´±³À¯¬»Æ´¿½¿Ó¹º’´Ï»À®ª°œ²Ï·¿Í·¾ºÀ®¸¼Ñ³µµÂº¾±ÆÅѲ¨½¨¶š±¸¾¸¥Á´Á­­Å®·ºÌ¤µ¹Ìµ¢Æ·¶Ï¶Ã¬Ÿº¼¡­¼½¼¼È«®®°²É¹¬®Äʽ±µ¬¯¨¨¦¾Á¥°Ž¹³½§¶£·¬¸·­ÂºÄ´´Áº³§Ë¸µ±°±°¼®¬Â¿¹²´Âœ½Ä¬¦°œ³¼»Ã²žº¥ÐÊŲ¹¯¯ªÍ¬°»­É²¬Æ¸¶Ç¹·²Å›µ®ÈÈœ­°«¼Ì¾°º¿ËÂɾɫ¹´¡ÅµÀ½¸¼¯»º¸°¼µ¢²³­É½­¹¶©¯¼¯¼É¯¼¶«±»¶Ç·ªÁ¹Â¬¢½¾­·´Ã¯¡½¦²Ëº¨±¯¾¥¨ª¯­½²Ã¿²°Ì»¼¦ÑÁ«Àš½«Ãϼ­Ñ¯°¾¶®Â³¾½Ð±°¶¿«¸É¨¢Å¸Ä±®¤±ž¹¶©œ%·¨½¹¬Á®»×«ß©å¡´¿Æ¾¨°´¸¸¬—±¼¾¥¸°»´¥¨£¯®¬¿Ãµ¢²Ã¨“±¶À§Ÿ¸‹°Ä§±Ì¨¿¥»©«Ÿ®¾Ë¢¾½²¹µ«¬¢¬Ñ¹¤ÆÃ˜²©¿®Ÿ´¡Æ®´¾³¨¾º±ºµ®¹±²µ´°­Æ›Ä·µÂ“¸¹›¯­¸´Àµ¶ºª¹¬¾´¶©ÀÉ´µÈ¿±°ºÁ¼¸Â¥°§¸Â­²··¹µ»ÂÁ¸¿§·º°¨²¸Ÿ¼ÁÉ·Å£¿¼®¿¼Á±¼­¾­¯¾¨¿»Â¯¨§¿­À³ºº·Â«ºØµ˜«ªÄ¼§À´³¤¨ž±Ë£©³É¬Ô¬‹´Ç¶½¶½½ª¹·Àǽ½®ÇÉë³»½ ˜¸·Ü®¾º˜¬Íϲ²¸¦»¹®·¸Ù›Ž¸Í¡¯»³¤½Ã™¾Â©—¹£•·Î¦¡ÙÅ®º²Ï¶šµ»­’«§«£¨Â»À¬Ë¹ÌÒ²©¬·±¿É¹ª¯È´Æ¯ª²§µ”¾©®Á»±¸¯¶¼¶¶À®Ä¿»Õ¶¼¸¾¦¥º›¥¦Á­º¹À¬·­Ê®´¿Â·©«´°ÊÁ´³Â¼´·¿³º½²Ä´±²Áƽ°¸³ÊÊ«£±·¼´­—²´ÃÇÍŸÅšÁ´µ½¶¯»Àµº©µ³Â¶Ë¿¿Á°¯±Ã¾¸³‡—»´±¶Ä˿éÀµ°½²š»±Á¶¶¾«¶²§·¿¾Â´¹Èµ³²ªºÂ²²Èªªª­²®eª¥Œ¸Ç½È²®›Å´°Æ¢À£®µ¿ÃÀ®ª²Â¡·µ½ª¥¹’»–ÍӲů«´±¤³±Ç²‘»¬¦Ïœ«¼¸©¿›¤Å®«Á³—½ÆÃ¶È«Ã²°¹À¹³¸¢Â¥Ê’›¹¨Ã°®¼»µºÅ¬«ºÀ¼—ªÌœ±­¶–±·Ì¢ÎÅã´°Ç´±¿´±±¬±²¡º®¬Ã¶°²¿ÄÄ´¸¯²Å©´º·¨½ ·»£±­­¶Ã³¢ÄÍ©½¿©¥¿Ä¶¼¶Áº ª³¹¸®¹¹«µ¯¸¼³²»²Æ¤»Á¿¬½ÂÂÉÄ·½²´¬¼¨¤°ÃƼÁ¶·§¿¾³Ä¯½Á©³¶¸±À­º®º¸¯¾ÐÁ¯©´»Î®ÁÀˤ…¤°±m³Äªš¨³­»ªºÀ¬¶ÆÁ«©³³À¼·®®¸¦¸¬–¬Å³²º½¼³´®¸³²®½¶¢Ä¯¬…˲©ºÆ²»¨³Äºº¸µÓ¹¶ÊªÂ·¡²¿¶Áª¶¿¾ªœ¾± ª³¾©Å³³¾ºÆ¾Í«Àż”Èŵ´¥«¸±´§ª°¿¾Ã·»ÔÀ¬¼©¶º„½½¿¬‘ż®¥¿£«¼´ªÅ»¹š°º½–À¥±¸¸Í¹´ª©°ÀÅ«Á¯¾²µ•¯¡­¢¶½¶´Ç´½¥ºy·¨¯µ¿©°¯°¹‘¹Â±¹¯º»§’˜À¿º¼°¼ Ã³»—Ͼ¬Á¶²¹ž¯¨ª¿§³º¼Æ»½¹½º¤ºÊ³±Çª¯±¿šÄ©§½µ­¼¿¾¹ÌÆÎ¿¹¼Ì¨Õ½³ °¯ÉÁ¯³Ô¶µÅ´À³ÈÅ«ÁÈ·Ä£º¨Ä­½À´Ãº®¿Ã¹º®±´Å³Ã¯Ÿ¿³¦·ËÀ®°«¬Ë±Åµ¾²Ê¹šž¾©®®ž³»®±½±È˸³»½½¶Â¤Æ«Æ½½Â¶®·º§ÇȮýÀ»º´Ôż·Á½¨¾Ò¾½±´«´¾Å±°¹¼¾±·Ä°½¡½®³±Ä¶µ¸¶Ê¦Î±®¸¨¬ÃÁ¤­¿¯À®¬½¶»®§Å±±À¶´¼­œÀ••»ÍÁÅ»¦©¯²¯¾Áµ½É¸·¿°¬®«Ë°Îȯ¿Ñ·Ëº»½À¬©­­·¶ÆÂº¼¸¼ŽÂ¬Ð½¯¥±ÄŸ¡Ê©¿­¸²¬±¾¦Á¬Ä˜ÂÀ²‘±´žÎ°„¥À’²Ì š·£¸½Ê¾¯Å¨¹¶ÁŸ½°·¾´¯¼Âµ ´ž¬¨¸Ã¸ÐÁ¼ÄµÆ»¬¢´ÉºÁÁ·¶¸Ò·¦È¹´¡ÈÁ¯³Ûš”±¿±­¸Å™·¢µÀÀ¸”¾¯¬ÃªÆ·¬´Äº½À¸½¼¨¹ÆÃ¸¬¼Ç¸·º»©¨Ã´¶ ¾£¼¹±·¤¹¸Â½¯º·¼Æµ¯ºº¼¸±³§·»Åɼ¬¦¾¹­È²®»»±³£·¨Â®ª¼»¯ª«À§¶¸·¿Å¾ÁÁpµ¥­Â±»²ÀŹ¡¶¶Â°¥Ç¢¬¹¯¯À¡ž­¼±»ÈªÎšƲºº§´·¨¤°§²¼²Ç³¾¯®¸¯¼ª˜¯²¥Â¦²¤­¼¦´¹±­Ÿ¯¨¤½«®¨­´²³ÆœÐ¡À¼¼³µ®­¸ª¼µ½º´³}·¦¼µ´»Æ§½´©°®¢´°¼ŸÌ±É¦·Á¯žÄ³¤¶›±³Â²µ ¯Åµ±Ë­¢Æ­º°¿Å»¤»´µ§¸•¬§ÄºÀ«¹¢Ã´±·¹½ÆÇÀ¶­ªµ”­·Èǹ¸²®È™¸¹¶¹Ç»¼¬º°Ã¬Ã¾Ã³¶«¦ª±¹·À¥Ï°¹·©µ½Á¸¡¶¾®´à³µ›œÀ¯¸¾º­Ç³¦¶£ž«·˜¸¯Ç¿µ£¦­¯Ðƶ»°¾½¿¾©Á¸´‘¸¦²°Ã†®¹´¾À»ºÌ§§¶®§¯œ¦²¨¹·´²¡³’¸°Ð¯Å±¹ÄÇ•¯Â ­§´«ª¿¸™°¯¶µ£Ö¦žÈ”¶·µµ¾¼´¦§´¶§°•²±±˜·Ÿ¤°º¼²³½Ãº¼¶½¿œ—®½«¨¬¼¤·Ê¢³°œ®È¹¿½›š¼Ä¹ÀȲ¯ÈÅΞ©³¤Â³¿¨¡É¬©¥¶¾¹ÂżÀÄ­½²Ä¶º¼²¹¸¼¯Ê³Ì¶“À˵´±£Å±ª§¸Û§¨£º¿¶°Ž¸¯»’²Ñ¿¨Àª³Ã¹Î¼¿¶­ÂÀ¯Íµ¾·…®§½¦³±´¾ÄƯ¢É¿¢ºº²ºÓ¿´½Ã¹Ä¸»Äœ²·¯¨»±½ ¾¿žÀ¹œ¾«Â²²¯³Ãäƺ¸¨º«¡¼ÀÀ½¼°©¹¬²‹Ëª£´½»ÇÊÆ¼´Å¯ÃÃÒ¯¤ ¹´·­ÃÃÏð¹¯Ç«£½²¿Â¼«¿º«·®¶²¿µÄ°©º³®ž«Ù¶Ê§½Ê™¾ª³¢ºÖš±¥¶°½©Ä½¶Â¤µÊ°­²¥«³¹ ¼È¹¾¡ÃÀת Ä¬µ¼²¤Â³³»°Ä´¦¬º²¸ÁÅ¿´¬È±¶½ÃÀ¹Á¼¬Â¥¢µº¹§¦¤À·º©¸´Â¹ÉÄ»¶«¥³·¹¹Å§±¸µÊ§¸»Çº½¯ºÇ»±¡»¥»·©¾¢Ì°È¯®°°©¢¼­·Ã–«½±«®¡¹§¬µµ¶½´¸·ª»²¿º±Ã¶º±Ì³Îº§¸°Á©²¥º¤¹†®§³µ«¶³¸š½±±¹Ç¼Â²³¹¹œ²·¬¸¨±¯¥É¼®²ÅÅÁ¢¹¼ªË½¹¹¼®µ«´Êͺ§šÄµµ³´ª¡¶½Åµ½°Â¿°ŽÅ…¹¨¯³®µª¨²ª™³´®®À‘³®®¹Ÿ¬·»§ª°¯©¶ªµ´º¬¸¾¦°•±ƒÆ§ËƸ¯¹¯²³§½«Àûƪ¶¿¸®µŸÆºË¾º¶½±Æ¬¦¹«»¦±´ÏÀÃÃIJÀ²´¯³½§Á¸À¼²†Â±½Ä­¹½°Æ¿“®Ê¸¢Ã½¼´Ãµ¯¤¶¹±°´ÂƵ«œ¶¢¯Ì¾¬´ºŸ¾¾¼±¬¾Á«§·¯°´Ç¾¯Åº­Í²»µ¹¸º°É¾É¼­š¼­¨·ÀÏ«¬­¦¨Å–Í¡¹©‚¼ºŸ¸Ï³¼¿·¨Á¥¨°¥Ì‚´¼Á¯Ã¥¦½¿Â­¥ÉÏÄŸ¨À¹¾¹®ÏÊ«ÄÄ·ÔÄ´²©½“˜²¬¹¸¤´—»Ç¬¸®·ÁÃ£·¸²¾½ÍÏĸ´ž±¼¹ºÉžœ™œÁŽÀ¸¢£°Ë³¤¿½Á¹¯¯È¶·¸À¿´¨ÃÆ·˜¸¯¹¶´·Á¡¬Ï•³¯¨¼°²¬­Ý»ÇÁÇ®¶¶ËÀ¯ŒÇ¹¾Çµ·¡Á˼²ž¿Æ¬¢°®È£ª®©¹ÅÉšµ²ÍºÁŽ¦Ç¡È©Õ®²¨¨·Á´Ô׬¿Î°¤¸ÀÆÅÄ˼¾¾­±Àª®Ð¯¦»Æ¨°µ²®¤°©¢¦¯µ±º¿šº­«ª‰¸¤™£ÏšªÃ½¬½«£ÇÀœ©¶³››™È¹Á¨¦¿¬ª ¨¼Ž®µÇ¦¸¤œ¢´¬—œ­¯­Â«¬¹Ê¾¸­½Ã®¥Æ±Ÿ½¶¯½¸¶Ÿ«¨§—§¨›µ¡¿¦†Ä¹Ÿ¿À»Ž¢¸½­¯¨¬œ¦Á·²œÔªªÃºÐ»À±Âµ³¾€›ÄÊ̶·´À£·°ÃÇɲ´´¹¿§¹Á±’­²»Ï±­¼·¹ÀÒº¡šÈµ¿Ç§»»¯·¥²ÄÓÁ¿Æ¦ºÄ´°¯¼­¥´¤É”¸£Ä½·ÆzÁ©¿±´Æ¯Â»®Ï´‘¯É½š¯¸Ì¹¬¶ÅÈÀ¼Áº±Â´ÉÊž¸Ë¶³§­¢¸°˜«¯Ÿ«œ¯­¾ªÄÀ«µ§Äˆ³¤Æ²¿È¨»¯©©ÉÀ½»Ä¦¢³¦¹¤¼²±Ž˜ ˜º¿°º­¥Áµ²¾¡žÂ·±µº¨ºš”º¼©µºÀdzÁµ¾¨±ª¯Å²¶®µÁ©·Ž¨¸œ²Á¸­²¹·©±Ç¾¡¶±¤¸²©° Ê£«¾´«´ÄŸ«¥Á¸Å¾²¯¸»¸«­¡À³ººÌ¨¨¤™½¼œ¼´Á¬¼¼¬¹¿»¯ ±¼ÂÆ¢¼Àª°ÑDZ­½¸«¨»À®½½ºÈ´¾ Å«½Â¿¼³¨ººº¹º¾²Àò©»£²¿¡ª¹¸ÑªÁÎÓµ·À·É´²°Éª¿Àͯ²³Æ·¶Å²®Â¾Á´¶µºŽ¹¬”¥¸œÀ·Àɨ¹Ë·§§°¶ºÃ¼‹—¡ÃŸ¹Æ·¸ÈÂɬ›«°¢©®²³‹±À¯Ã·½§¦¨ÁÁ·“¹¨¬«®Ÿ§´±œµ–Ç¡¬±»®­À¿Ê¾ž²»³¸½¡½¹­¿½¸²©´µÄ·¦¿È½ª«µ¶Éƾ£ºš“ĺ«ÅÆŸ¥¡Å´ª¾Ú´¶ºÁ¾ÆÅ·£¨¬Ç§¾§ºÁºÆ´´³¸°©Ã£Á ¡¾««Á»Ñ¼¨²¹Å°½ÁµÎ¿Áº°»´¿º¯¼¤·¡¦»¸¿°Ç·«À¸Çα˱Àµ®¹©µ˜³‘Í–¶¶¼—§­¦¸¯ÃÚÁª³²µ¶¼°¶²¾Ê´¯Ÿ´Â «˜²®ËÁÐÀÐÆ­³«×¾Ÿ®³£¸³° «¾»¬Á­®º©Á¢¼­µ¨¯Ï§£À®±Ã´ ¢–—¸”ªž¹¡Î£²À©ž¡ÄÄ¡¾»©¯©±¯¶Ç˜´£²»®²ª•®©»°½À¼­£³²¿¹¶ºµ·´‹¡¤¼®Ÿ¡¦£»¸È¯À±¿¼©¾™ ¡¯«§³ ´²¶ÁÀ¨É°ÇmÍ´¹°¿¼«Á·«·›±µ³¤¼·ŸÇ½»¹°·³ººÀ©ÀÈйn®§¹ÆÏ»¼¼ÃªÌʸÀº¾¶´Y©°ª­É®µÁʳ¸¼²±ÃÉ’ÛÊÁº¸Â¨¸Á²Ò²±¢»¯Ïſ¬½³¸Â¶ÂÉÈ«»¾®Ä™ÇÆ¿ÈÒÍѵ¸½Â½È¹²»«¨¢±¶—ǻȦ̮¸¼º¸™¶ÒͰ­¸¹ŒÂ»°©¸¾£œÁ´²´´¾²¹£³²¦¹¥³Ã²¬±¨¦ ¸¼Å»Ç½ŽÆØÄ¢±Ä¾½º®¹³Ú±µ»°ªÌÀ¼ŸÀ¬ÉŸ®®¶Æ±Á»¸Ê¥ÁÆ»°Âš­­·¬Ä¹°ªµÉ¯²­´Ôª©¹Ç°Ö±³²³¹¾¾¶Æ©µ®¼¸«À³¤º¹Á©²Ã¸£º·¿ž¯«§Îµ´­±¦¦¦Â¶»À©Í¶³­Ê·µ¿¸À £«®¯§°­Ç¾¼Í¹§®µÇºÂÅ»¥¯Ä²·³Õ®¶´¸º¾½ Ñ¬¼´¹Ë°·¾¿¿¹ª¯¶¼¬»Ò¾´½¯¿­¡µ¼µ²Ã¿£±¸¬Ô¬®È®»½ºÉo³š ¹Î¶ºŸÄž¹²¶µ¶°°–Ô´±¶Ìœ·Æª™¹¤ÆÃ£¸Ã©•´±œž¨Í¨¹¡³µ±ÁªÁ²¶á—ʤ–±™™Ê¾©®µÊÀ­¬µ™ÁŹ¥»®É¿Â¬±¾¹Ÿ…®§Í­¤ÃЮ©È¾˜´À«¬²®»µ¢¾¤¹¥¹ª¯Â¦¢ÍƱ²ÁÀÁ·¾¼¹—¥´ÁɹºÌ­¹º¿£¼¯µ®¤È¹È¤È°¼¼…»³ãݰÇÁº¯ä¶Â´ÊƲ¶©ÆÉ¢´¸Åµ¯À­Á­È®Ä³ÀÅ«²´Ã¥¸¨Å´¤´·£Í¼´Â®­º­§¯®µ¾À³À¬­¾¹ª­Ñ¾ÅÊ»Ḛ́»Ø¯³Ô¸µ¶§¬²ª¢|«Å³Â±¤¢ÁÁ½œ¨³›¥·Ä»¨°¾À¼Ážª³•±¶½¨¦¹©¹´ÉͰ–µ ¨¬³¼³Ý°´®º¸Ÿ¿½»µâ«¼›±Ã¦Ã½®³»µ£½“¨ØÀ»Å¬²É¯»Å««¢Ñ²·Òκ¥ ¡¸µ¶À©ª­³›´¯¹´Âǰ´µ«–µ¨²­º¾Í«È­Î̵¬ÀÂÇÇʶ¹Î½¶Èºº¶ÖÈ«´­´ÆÄ½¾®À¹»ÆÎβ¶Å½¿Ï½Ä­Í×ÁÇεº©ÕºÍ®°´¡ÉÏ¢¶»ÔÕØ²Ë·£¸­ÌÀÄÇÌ®¶ÏÕ˧ʵ¢Å¸«ÇÀ½Í·¨¼¾·Ç«Òµª·Ò¿Ë®ºÄ¿¯´Ë¢Çß×Û«¯¤±º­Ç³ÁÆ®£¶¬Ë¸«¨¢´¿µÂ³¼Ñ·¾§®¾ÈÀ¼À®¯º¯´³¶¼½§Ò¤®°®¥Ã§¬ÃºÄ§Ñ«»¯Å·¨²ÓÒÆ¬ÐÀ©ÈÒªάÀ­¥ºÖ±¿­¸»ÍÐȹӿ²²­Â¬°¶ Ë®Ä°¨«Ë«È¼¸º¾Î´°¦¬¯¦­¢²Â¼¬«µ¨ÊÁ½²¡Æ¾¢¸º‰¶·Éâ컑¸Ñ¹³µ¢©¶¶§¨¥Áž³­É¸Ž¿£¸£š¦Ç¯±¤ºº«Å—®¿Î¼Ð½´µÂ§®¯œµ•¦µ®ÀÁ½¬§ÊÆÅ⩸¸~¤Ʊ¤¡ÎßĭĬ¸®½¨¶¨Àû¼¥¹Æœ°”°¤£¶Ì¸´¸Îœ¼²Éí¶;­¢´Ÿ¤¯¾³¨ÁÃÈ”¦ª´«ÓªÊª³ ¥¤»±´§² ©°£´«šÇű¶¼µ±¤¡´¢®Ìª´¨§ºÈ²«¯ž ›¾¯­º·´º¿¨°¼Ÿ²—¬¸¹¯²¾´ª§›«±¹²š¸³Â¬Ä¸Á¥¸¹È¯©œÈº¨Â¬»¬¨¯´Ÿ©Ä»Ÿ´¸½¿Â¦Éµ´Á±Ä¹¾Á´º¼­½»À¹¾»Åµ®«º¶³¯º³¬§¾¤»Ÿ¸·»À¼ªÃÆ´´®´¬®¥¡¤µ»³´®Â£Éɹ¨µ¯Â¸¤È·¬´Â¥Á®¬¹ÀüÁ°·²¬Å¥¥Ç§¸¥¶Ð§¼®Á¾º¯½¿´³¹º¼¿Ã¸½´«¬®¿­›¯ÍÁ®¬«º¯Â˜»º¿´¬È§Â¹¤—°¸›Óʸ¾©³p°Ç´¬—¯¬§¢¹¶º¶¹©µ«Ð´±¹¶¨§Ã¥¿½¼®Æ²Ä¥¶®³«¬¼ÁÀ¯¼º¹Ï¦°¼³Ç³ºÄ«ºÁ¶Ä•°Æ€¥¸›¾Í½§¼¼¸¨´½ªµ¢¶ƒº¯­·µ¼ªª¹©’­À°ÁȺ»¹¸±³²´¶ª¥½µ·¶¥¼Á²ÉÀɵ¶Ãº“´³¼ÃÏ»§½µ·©¶Áɸ֥»²­®Ëµ¨ž£ÄŠ®¿ÄÅ…±¾·«²Â¯µÈª­º¤“²­¶±´³¿¤¼²½²µ®ÊŸ¬È¼©²º³Æ¦Ì¾¨Ê«µ½¸­«³²¹Áµ§¶®½·¦¸¯¾¢´ºª´¶¬¶Ÿ®²Ä¾ªµ«Ã¶·¾¯¤¶µ©½Ç³¯©¦¥¾Ã¢°Ÿ¦ž­­¶³¼²¸À¶i¶¥¶¹¶—«º­½²®©£À¶²žª©¯¯·ª ·ª²·©½Á®£·¤°¶··¸¯¶¤°¸À¯°³¼ª»´«Â£¾ª¾Ã¨¹µ¯´¯É›­¶¬«¨¨¶±²žÈ»¼¶³¶Üʰ՞ºÌƪ¢­º¬Ä²®¸¹«½Á·Ã·¾µ¾ªË¸©¼º¹¼ŸÇ«®®®ºµ¨°À¶Æ²´©­´Îº©Ð²©¼­á±¯×²³¿µÅëÁ®­¯¶°··«Ð®Éðɰǣ­«Ð³ºÅ©Õ´¬È›±©²¾¸¿°·Â Ä²±«ÉÇÔи°µÈ®ÊËÅӯō¸Ä¶ÇÌ¿¶ÅÊŸ¶±ÍÈÐÇÊ¥´±×´±Â×´›¾¢¿·À±±ÄƯȸ¡«¸¾¨»»ª¶¼ÄǶ«¯§´µËµ®«µ±Ù®Åɹ¯º¢Ä³Çµ´±Ç·Ï·ÈþʭÇ×Çɲ·Õϳ֯¨¸¾Ì™ËÂÒվƪ¾Ä¬³Åº¦¾¸¾Â¾¢¶¬œÁ¹§¬Í¸À¹Â¹Ì©»¿°§¿¨³º˜½¬Á³¶¨®«ÂÄ­¤´·»È½¬¬ Â¼¯¬¶Æ½Ï³Åº«Ï¿À»Û¸¶¢³£¿½Ðª»«²Ä³¸¾´¾³¸Í¢®ª§¢£ÀÀÀ¾Æµ®º±¬¸§¸¦¹¿¿½º·µ°Äµ°¿½½©µŸÐɾ̖ϳ©¥£¬¯°¹¦¤´­®¬«¬«©·½­«¾¶Ã¿¢Ìµº–½¬›¿±±¸¯Ê·®±°¸¶²¾¸¨³›µ¯¹µŸ½Á¶©½´­K ¬²ÆÀÂ¥©¢¨¦²Ëĺ½»ª­Š¸³—½º¬š´¤Ç©ÕЙ³¿°½¯·²“Á©¿¬½®ž¶¤±¡ÄÅǹŸ¹¶´Æ¹­±Ê½º­Á±¼·µ¼«¹Çƾ°´®³¼¦É«´¸´·¹³´Í ¯®¿Ä§®­³¸½®ÂÇ›©±ÇºÑIJ¹¸¸Â¨­­¼³À¥¶»±¢´®®¦±³À¯Ë¯Ä¦¿Á²Ç̽¯²¾¬¤Ä­¹¬±·ªÂ·¿´®Ã¡’¬Ãµ¼Àæ±Å°µ³½Å¹³²Âº¥º½Á²²Ä³À¸É̲³°¶³Â´¸¼­¾Î–©´Ÿ±É³¬©È½¸°Ã¸œ«³Ãʼ½Ò²±±½µ©¨Ð¦«º¼¢‘µÂ¯¶¯·š§¼¯¯§·Ù²¡·É·µ°­Ž¹¤ƒ¯«¶›Á¾¹´»·­¾ÆÁ·¶¯»·ÇÁª»­Ó­µÂýĴ¸»¸¬š¹¥¯Á¿²¬È¹²À¼ª¾¿¢ÀËÆºŽ¾¸¶Â¸º¨±¼ «»¸¿µÀ¹ÃĽ°­¿Ä°²ªÎ¨¼µ¯Ç¿³°´®½ª°Çƹ³°Â¥¾¾®Ð¹­»»¯¼¶¶¿¿Ñ¸§¬º®¯¶Ä°©¾¾±±¨¼Ì±Â»½›»À¹À²œ«ÁÁÁ¶¸­È³¶À§ÀÕº¤º¶º“ ¦°¶£§£ £¬‘§¾µ¶¸¼›³¨®ÂŸ«À¹©®º»¯£±®¯Âµ¹µ´ÅÁ´Å³¸´“§·º¥³±ÈĦ¹²ÇƼµÈÆÃ«¶³¸À°²®Å¹¿Á§§ ™¨¶ª«ªªÈ¥£³»ÁòƲªÅ¬«µ¸ž¯ª·µ¹¡¡©Å¾®¿Á¸¸¡ÁǰɶÀ›ª¼µ¹´­¬ËÁÀ¿µ½žÆÀ÷°¿»¯»½¿¯°ªÄɫǬ»Ÿ¡ºÁ¼¼½¬±¬º¹¯½Ë½¦Àž·¶°¥ÀªÁ·ËļÄ뾻ð»Ç·Ë¡È¾ºÈ¶±µ|Å¿±ÁË·¿½Â·³®ÁÊÁ´¼³¸Â©¹Ê¼µ”ɶ·À¬ ²¸¾˜Ì¶µ»¥É±¾¦®Â¬Ñ»°Cµ¸¶°°°®‹Ç®´Ã¨µ§¾­­¤ ·ÂÄɰ’½Ò²ª¢ºÌ´»Áµ­ª¬»¾¶°¯¼É¯µ³·³Àƾ¥ÄÅ˱·²Ï®¾¿´«×ÆÂÀ­®¿«¶êÄÀ°µÄ¼²¶Ù¸Áª½ª¯¶¹Á®µ™Ê·Á¸©®¬¶£½¿ÅÀª§Ä°È½©Á´½µ¥·­°°™´»Æ³°­µÂ¸ºº¶·¥·Å³»³²°¯¹™Å¸®¹«»©´ŸÅ¦»¼·±Ð¶½³·¿ ½Ç¼Æ·Á¥²¶·»©Å­ª¶¶Á³°©Ë¹§ÂÀ´¸–°¹¿¶¼µÔÅ°Â¡ËÆ¶±°¶Â¦´Å¯©±¾»±»Îݪ²±¥º­‘¢¸¯ª°¼Ä¸Á½¸¶ª¼Œ£ºÇµ±°»¯´µ¤¨«œ³•°·½³Ê¿„œ™´¸´»¹ºÁ¶®Â›¢·Ì¹´ °ž ®Æ±¸ŸÑÁÁ¼º·°Àµ¦·²À¦»¸¹·¬°µ°Á·È«Ó´°Ì¹Â¼º®º»¿°¾Ä »¯Â®Á«“¬¥¸µ¼¯ÀÀô·®•³¯¶Å³»º©®Â¹Â¾´°ª³´®ª³º½­¾§¾¼®®È³®¹º¬³Ãº¶Æ®¦»¶¸–µ¶Á¨Áº¿Ç°¾¶Î¹©¯´µÀ¢³ªº§¿®¢½´¹¯¤¢Â´§»ÌÌ·˜¬±Èϱ«¼»ÎÈ´ÀÒ¶À¹È³¥Ã½·½¹¬¹ÇÇ°Â­Ð¾š¢¤©¶¡º¶µŸ¯·¬¸Ì®°¯ÁºŸ²ÃšÅ­­Ä¶¥®´µÃ¥ª³°¡Å¥Ê€¿«±ž´¾²Ê£¬Ã»³±¶··ª¹®Â¨¥·º¸Å³©Á›¡Á±È­£ °™«¶ËŸ«ª²·¾¾ÃºÊ»¦²ÄÏ»º³·Â¾¶£¾¬©ª¥¾¥·«¾¼¡¶¸¿´ÅºÅ¢¢¯¸¤¼º´¸Å­Æ¸ÆÊ¯±¯º´¶œÇÉ¢½ÁÄ®¥Ã¥ɳ¬´³¸¦¬ÃǼТ͸À˼¶«×²½Ï¡®Åº¹²¼¡ª·¢½¦¾¤Á¦¶´¶Å¾¯«¿Ë³Â°»ª»£«²°¬©¸Ê¯Å¹À·­¬³¼©Çε‘³Ëº³Æ«´º½Á¼´¢¦»¨ª®¿Ã¦µ¬Ÿ®À¿¼¬£Ã¸®®ºš¬É¼±º°³¶²·»×³²¶©­¾ž¶µÇޤ©Ÿ»¢°½·º¡¸¼®Å¾·º±¾ÃǺ®Ã­Àœ´· º³¯Â»¬žµ°˜¬­ƒŒÀ¼£Á³ÆÏ´­°§³¬Ù¾¸ ¤¤»¿°´™¸Æ¸®¸º½¹º¬­§·´»¤£«»º¸¹Àƹª©¾µŸ»ž«¼¯²¸»À°´ÄÃÀ¹«¹¿Áµ»»´Â­­··²¸²¿Ã¹»º²ËºÍ¥À¾°º¶¥Ç’°«¶À»®«®«£¿°Ä¶˜¢Âµ·¸ÆÅ­°¿ÂðÁµÅ¬­Ã³°¿Ä²Â½¢¸¶»Å¶º¸¼½ÃȫƵ³˜Âžª°»:Ë­»¡¥Ê³´¼Î¯­¹©²¨¶‹ÃÀ··Ä¦¸”®ž»±³¸¦ ™ž­»«²Ë¼ÐÉ¥µ£´µµÈ›¢°§®¯²¶±¾­Ö¿»º«·Ÿ¿­±§¾Â»±³Ÿ—³º¯´·¬È©½»¶¶½©´Ä¯£¸°¸º¦ÄÉ«¸ Ë³·¡²¸½··´µ½ÇªŸ·µÈµ»·²´«¶»Ì»¶Ð·¸³Â®©µº¶´¶®©Çµº²·¼¼±Ð´¸²ž–£¼¿Ì¤Î´Â²µµ¶¸¶Çº¥™Å·¨»¾´¹¦¾¿³¼´ª³“±Ã¸™Ä°À¶¸·Àɺ©Ã‰¦»¿¹°»¸»¸­§«¸Ò®Åɻŭº³±Ê¬Á¾¹Í°Ëݰ·³¶±ÂŷŬ¹¸³´Ò“£Õ¶°³¨À°¼½’𷫞ͥȫ²©È²¿ž¢Æ¨»»´˜“²²Å±™œ¸´±· ¨¨§µÇϴ׿­•À›Ï¨¼¦¬±¢¹°Ãº¸¢²™°¬µ¤±¦Å¼°ª»¹¶Ä¸ÈËÁž¨Ê³º³–´°ž§Â«³¹¸µ³»¡À¼®·¹È¿´©²º«¦¨½ªÈÆ©À÷§®¥Ïä֬µ»½¯Å¸²À¸µ¶ÀÊ©¶º˜²½·Éµ¡°¹¸·½³µ»¸¶½²°·¡Ë°‘µ½¹©ÌŤÁŘÀ«©°Äµ½¼Á¶»ÍËЦ¶µ¶¶³°Æ±±Á©Äǹ꯰¸»Ç¬È°À¼°±¹¿™³µ¬Ïœ¼¨È²¬¨³¾Í³»¥­ÌÑ·º½¥Ë©«°²“´«¦§­·¥Á·Ä½µ³´µ¹–¹ž½±Æ½¨±Ã·¹I¤»¥¾ÆÎ¦¨ºµ®©¶µÅŸÐ¬¾Â˜ª®Ë¸­²Áº™Á®­ÌÀµ»»®¾°À¹ª³ÅµÄÅ›¬±¨µ£´©°–¹²³½Å¬¹¸Î¹µ¯¼½Ï¹Ã³®·±º¾ÃÁ´¬Æ«Ì¢¸·¸œ´½´Ç¹±²¾ÇÁ¯½Æ¿£·±¿«Æ§Ÿ¯Ê°»°¼¥·§¸Â»» ÃÃÆ±´­»Ê²ÂÄÄ·«¨³¶È±É·ÝÁ¤³©¨Ë¬º³p¶±Ð—¸É±¸»“´Ç¤¹Å½Ç·¯¥·™¾¶«¬¶§¦¾²¬´Å´´§º­Ã¿¼­·Á ÀǶ¾¿§·§ªµ±¬¿¤½À¥¥¡½¯¿­ÁÓ¯»À¯¾“»²¶¿ªÅ±»Ã²¸Â»¶¸Ä©¶ÒºÇ¹¢ºÄ» Ù¦»½’͵¿Õ¾Ë±Á£§Í¸­Á¼¸ÃÀÈø¶¹ž³­¹¸Ì®žÊ¾®Ç«®³¨›É­·°¼»Â­¯§Ã·Â©Â¹Ë¬¿¯©²¦¿À»Î¿¦±¼·Ã½°¦µ¹²¬ÆÃɾ¼Æ¸¦»³Å´ÊÔļÁǼ»Á´¯×Áº¶Á±Æ›¤ÇÄ®ư±´º±Â·Ëñ®¹¯®£¸¸­¥ªÄÈ·ÏШ¯ÊšØ¶µÆœ§¸Ä¤À¹¸¯ÃDzÀ»¬¨Ï¬±»¶°¤²ÎºÖ£¯¥ž¾Ð¦»‘͸¶«¹°ÂÀ¼»´Ê°š°«´²©«»¼¥®¶¼Ï¹ž¥ œ¿½¼É±¸ª™·©¹¾Ïª” ¬¸¤Ê¹©±½¼©¾³š¬Â§¶¨¯¸¥±½¶Ê±Í¢¬·¤¯‘˲³§¹»Å¡Ã®«Çª¤¾»Ì§®²¨¾¿Á¬²­—¼Õų¢·¹À®¹¦¸¼±¤¬¿¾²´Àž²·«Å²Ä¯¹µ¶ÈÀ­Ä“©¼·»Å²¸º·¼½ÌÇ´©Ä³¿«½¸¶³¦Áª°´½´ÄÁµÆ·«»Ë°Âµ­•öÀ­¬¯º­¿°–¿¦Ç¤¤¸¯Ã¿¸½¯²¶¹¥¿·Ä°ÅÊÈȯ±²¬´³¾ÅÁ§Ò½²³ª¹½¿ª¡Àº·À”ªÅ³Ø©·º¼›½Áƹ³°¨ÅżššÉ¸³Ÿ¾Á±ª³¯µ±´µ»¯¤Ì¾À±²¬Î»«¹¹·¨ŸŸ¶¢Â¶ÁÅÁžª¾šÇÌ·²¸®³°´£™¶¶¦½¨¨º­»Å¬®µÀ±Æ¯ž¶º¸¿¼§±°´Õ¯ª´²“°´Æµ½»©¯Í«Á’¶ÎÀ­Ì¨­ª³¿¶²±½Ð­º¸¶¬Å›Ç¸°³¶Â“º¼©¶«»®°œ©Á¶È±®©¬¹Î§ƽ§Ö·Ö¦²ŸÊ·²Â¾±³»¼±Ð§½½ª·­Ó»Â»Å¯¸¿ÂµÉ´¶Ç¯µµ­¼°³±¸»Å²¸ÀŢͻ®¥ÙµÇÁ˵ȿͭ´»¾½Ò·´Â¬Ç±³È›¨“¸ÄÏÇØ¶¯£¯µ¼¶¾ÕЫ´»ÁïÕ±ƻ¸É⟲¡¾§¾Æ°½°Ã¸»²´Ä°´°··¹Ç¬»¦×Ì­¶º¤ÂÃǶ·¶«³¹ÀϹ¾¾¤Å¨ÀźÅʱ²Í¸¯Æ¼²ÃªÁ¤·Ú¼½»«ÁÔ¹«±Â»¹½À°½­¾«¹¼¿Â¾Â½¹½¨¶¹Á«Äº±Ì¶¥Œ³§›¦Ä³¶™¾½Ä¨Â®Ö±°®°¿º¹ÃÅ»·Ëį¬ÂÆÉÀ¿´§´·¿¸»¥»’¾Ĺǩ¥°¾¼®­¨¶º­¾Ä¹Á¹”ºÈÃÁ¹¶²¿··©¿¹­¾«¬«µ³²¼±»¶¿ª®¿ªª§°Ÿ³««¥Æ¼¨Ä¶ªž³·GÀ¹É¦¾¸§¿Ïɲ±´¦´­”©«µÒº¼¸Æ¦µ˜©É§¼Å¬¯§½¾«·¯Ã·Ó¯Ê©° Ÿ¿¸¿¹ÐÅùµŸÃ´¾³Â¿¹«ª¾Å©°¶ ¶¼¡¶¤ Å™¹³¿¯ÁÀ’¦²µÊž½¦¾ž¯Ì­º´Æ¾§­µ¼¶¾À¨Æ²¯¯ª­·¯³º¡Â«°¡ºÂ®ж¶©»­³¸ž¸¢µÀÉû³›¾¹¡­­±º±µ¬±»®¼²¹±³°º¼¿½Ã´³°¶®¬¶È£»½Â¬²¹±¸¶¸Ä¶²º ¼··´±Â¯•½¨¨µÉ½µÃ´Â°¹¼º±³©²¯±Åº»§³¶Ï·´¹º³¾¤¦²½²´§µ³¥°³¿¸ˆ·¦Ã¦Ç§­­¥Â¹½¬³¶»¶Ÿ½¤½Ä§Â³½°¬¯¹™Ì¶¤Á·¬®“°¿©¬±©É°®¯ˆÃ»¼·Â”›¼Ê´º¯ªÁº´·¹®Î²°¹¾®³Ç©£±Œ´Ã¨À·¯°³³¬Ã«ª™£Åµ«“¬©È¶µ»»µÆ¼ªÁ¼¬¶µº··¼¸½»ÄºÃ²­½·Ä¯½¹Ì¼ µ³ÂÁ¬µØ¶ž­Å·­¼­¯­Áǯ˨¾¼­²º¸¿»¼´²Á°¶½«°Æ³¶¸¨¹©°¶½»É·´¼´¨¾«³§·µÈÊ »­¸­²¨µÃƩǩ¨»­°±–»¬¯ÂɶÀ¾³³¨º¡Â¨¿Ä³Œ²¹Æ£Ã³›Ã²¤´²Íªš¯®¨ÔÉÁ²“ĘÁÉ£“Ƭ±¦µ£¦§³Ÿ§·Â·¢·¡Äø´¡ºÊÁ¬¯Ë»¶ª˜Ÿw¾¥µ¨Â¹¡¾Ä°¦¶¾¸­¥¿¤®¹µ®´©Ä ¸Ä­³·ª°Ä•·œ¬È«¼¨¡Ãž·ÏÁ¼¹Â©¾°ºµ¼·Å­Á´Â¹Å¬ ½½®Â±¹œ»±ÁÉœ¤šÕ°¼¹°³»­²š¬º½¥¨À®¯§¹¸¸È­»ÃÇ´ÆÀÉ®­ªÃȸ½Å°Ã²ÄÈÅÈ´®¶œ¿º¹Á¯£œ»Éµ«¤¼Áɨ¤º¯¸³Å¯Â“²ª®²ºœÆ£ÅÉжij¾Å€µ½¸²²£¨¤·©ÅÁ¹µ¯«¼À©¹±¡ª¸Á§º±ÖÀ­´´¾¬¶¿¾¼±§Ä‘¤µÁÄ¿µ²¥ˆ¶¹¸Ã¿¶·»¹¯½ÆÒ¤½¬¾¸¯²¼µ²¸•Á·º­¿°¬¶É¨¾µµ®¬»­ž´½ª×¹»¨©¸Ä¢À“©À½µª¹Ç¸½—·°¿¬º¤±¶¸¢´º°³¦±Å¨¸µ¶º¿º«¥°¢¼®¸¾Æ¾¯´¹Âµ¹°·¶¬°¶À¼²ÂƩĶª©¿Ä»Éª®Ï¹¹·¼­Ê¨­¿·ÀÁµ¹¸·¶°¹¯¿ÄÀ¶Ã¸¾·²ºÀ¦­·Àº¨ »©šºªÆ·¦Ë·¶©¶·¸¼´‡³ÇÎÒ»ÃÅ´¾«²Å˶¹©º¿ªŸÂ¹±¥µ¸Æ¾¨º·¾®¦¼¾¯§Ô±½±º¬¶­Ÿ®³½¹ÀÓ°¼¸ª¹¯Ó°»°´À¨™²»½·µª²µ³²¯¯”®´È£¸¶¿­¶Á³¨ŸÊÉ ÀÅ·À°­ÃÏÃÆ¸ÃÅÀɨ©¶£½«`¹¿²Á°¸Èù«¾±ºµ§Ã¾©§š·³®¯±³·”Ç´¿ª¨¼µ®º°ÁÁ´´ÃµŸÂ¸³Â³¿Ä¹¨¾Å£¸Ä¼­¦ª²ÀÅ´­¥¹²¯¼¸§µ³œ¨®¥»®¿µ³¹Á»®§·¸¼Í³Å¢Æ°ÄºÂ´Ð´¼§¬½ª·§³°¸¶±¼«ª¿¢Í°Ä¨¥Ã¿¹Î¥À—™§º°Æ¼Á½Èµ¨²Ã°µ¹¯£œ­º²»Â¿¹¥¹¼Á¸¿Â§±Ÿ®‰®´¶«Ÿµ¦›Îºœª»ºÆ½¶´´°¬»µ¾«Á¿¼”£¿´¸Ã¡¬´Ã˜Ê¬²¾½»¾»§Å²¸¨Àè« ¦»¼ÌȘªª²¤·§»±²¼¸ µÂ»»«½£¤¸ªµ²›¹´Ÿ¸»–µ°²¼«c·¡«¯¶®ÄšÉи¬–¼®´¹Ï§É¸Ä®¾¯Ì·³½­¸Î°£º·Éª·Â¿µªÂÁ³¿Å¤¬Ì¹Æ¹¾«Áº½¼·Å±­³¹›À²¸³Ã½²´ªž°ÌÈ¢Ö´¡É³Äœµ¸Ë±ÈË»·ª¿Ã¯´Â½»¹«À¯®½µÅӴż·ÈÆ©ÈŭȲ«Ì²®¢´ÐÍÆ³¢ÂºÞ¯®¯ÂϿָ·Æ³¸Å£»ÐÑÄ­³ÆµÓÈÕѰµÒµ£½ÃÓÎÐ¥¹´È¶»¥¨Æ¤¼Á̺ÉÇ¥ÃÄÊÆ¼ª¬ÊºªÙ¸±³Æ¹½¹Ã§½®´­µ³·È¸á®¾»²²Ç¢Ç£×÷·É¹¿µÄ·ÁòÒ×Ǻ³§Ëزñ®¸¬Ü†ÛÁÒ²¼Ã³¶Äí¿µº½®Ä´²µ±ªº¼°¸¹µ´§Å·µº³¾º¬¾ÀÅÀµÀ´‚Æœ¿Ž˜«Àɸ¯¹¸À¼¹»©´·²­ÄÀ­´¹Ë»£Å¹¦Æ²Ã¯Æ½¶­©»¯¿Ë‘¾³ÀªÄǰÁ¦·©©“¬»·À­Ã¥¨º«·£Ä¹¦À¶Æµ®®´¯¸¸›½¼µ¶Æ¼¹¼³¶«·µ©¦¯£¾§½¼²º½Á¤±§´·Çž¸±¯¿¬Æ¼Í¾²½š•šÄ¢Ä™¸À“œ¾·Ç²–Á²¶´¼¹’½Åµ»¹Æ¿±±¿´¿¼²³´µ¬Áµ±·ÄÂʰ°·|±Ç £³­’¬·Ç©Ÿ¾¼¦ª´¼²Â·¨¼¨¹³É²®ºž©Â´¯³›¨¸Á¯Æ¼»¾´¦ºÁ²°ŸÖ­Îµ·Ç¹¢¾Á¾«¼™À©¥¹²À·¼¢²À¶¦¯¸œ§Æ¹¶Ï´ÉÁ”ÁµÀ¬¶¥¼Â®°¾ªª°¬³­Æº¹©¯Åº°È²Â¹ŽÄ̬·²Ã»À›¸ººÅ¶°¿§¡°±Î­ËżÆÐ·°¯·ÂĽ²¡Ð¿½°Æ½¿À¹ªÂ¯¶È º¨¸¨´¹¬Î»Ç‹¸³ÄŸ¢Äº¹¯²¨¹½±®ß¹±®¯´È·¦¹·¾º¬µ¹Â©²¼¯¢º¹¼¨ª±Ã°´µ¯·»°¬¥±¼§ÊɧÁÈÁ¥¯°º·¦U°µ«´º²Ç·»¹®·¹­Ÿ¯·¦½Ú¹Æ¸°¨§Îżǽ³¯»Ñ±³ª»¿²°¼Á¬¹Å®§±Á·¯±¦°¾»µ¯®µ¯ »¸À ¼Ã¬½°½¹Æ ¾¹½¬º­§¬´¼¾¯µ¤½º³§ÀÅ»Á·­»²§¸«¼ÆÂ´¤Ó§µ¸­¹·Ä¨¥Å°Å¬±®¸µÍÆËµ³±šº¤¿Âª´µÉ£»Á¸²¼µ»½£¥¦µ®·±³»¨Ù¿´³­«±¦Â³©¯£¯º¹µ­µ¼½º¾©¨Ã¯«Ç»¸·©¥Ã²¯ Èžª®À°Á³¼Õ¬§©«¯¶¬Ã©¢Â¾¼½±ª¼¶Ç°¤°¸¢«²¦ÀÈÆ¨¯¶¦²¿¿«°¬±±¹¯³ªË“½¢¤¶®…½Ë¶¼¿ÂDZϤ´›ªÄŸŒ»1«¸½µ·¦µ¹¹®´ºº¯ª¯²­›°º¯º¯ž±±²²´¹Ê¾ºÄ¤¥³¿­·Ã®²«¼Â¯¨«½¸¸ ±¯ªÃ·É·Ç°£°¿¾Ë¿ª½©¼·³º²¶¹²Ã´•ËȪ¸À²¯«³¬¯¡Á´¼Ô¦®µ¥½Õ¦ÂůÀͨı»±®¿¿¥©³É·¹Â¸¶¤³¾»Ñ° ¾»¾»¹À¯½¡´¼ªÂ¾¹½³»Â¦Ÿ©º¥¹¿º¯¿¹²¥¨¯²ŠÇ²¥³²Çºº½®´¼¯À̲ɖ«»Ä¡¬®Ã§¼¼–¥™Ÿ°ŸÅ³¬µ²Á¬ÃÄÄ¡¶¦¬£·¶À¶µªº«¥´Ÿ¾š¸®¼´­»©©Òº¨—¶Ïƶ¯Ã®ªÇš¾ ÊÁ¿²›À¾Ç✺к¸ÄÉÊö¶Ö¿¸¼¼­¶Ê¿º·Å²Ã–®¼ÀšÁ¿¬Ã¿¼¿¯®½¾¶½²ž¸¦¤œ¬Õº¾±Á¯£¶Ä»²½ºËµÁת¿À³¼Ô³¯Ç›Äƪ¹¸µ¤Ä´²­Ÿ»³·É¼¾Õ¾¼¤»¾¥¯½›¯µÄ¸§¸·±¿®®»¼·œ»¹¶¾Ð·Öœ½´œ¦´Í˨º·ª»¨¯Ãµ¼Îª­­»½Ä¬²²°´ª˜«·›š¡¿¶µÔº¬Â¼ªµ­¾¾³²È²¹µµ¤¿±ª·¢«©´µ’¥¨£µ±Ñ¢¦º¢Ë¿¤¶Á¾Ç¬ÀŸ¯¸¥¶²²¹Î»´±Èµ·Ÿ´Œ¿°¹¸¯Ê¦¹£«¶¹ž§£¸²Ï1²°Âš«“ÆÄÁÂü¥¹¸«Ì´˜Õ´©³Ç¼¤¦ËºµÁµÅÇ8´µ³¶ºÇ¼Â®³Ä¾Ç¼¶º½µJ¡Ï«¸¯¾¨Á¯±¸·®À¦¹ÃÒ¬ÄÀ»Ò·¼³ÁŽµÂ¢¼ÁÅ ¯¦É£¥¶¼½Ä«Âü̴µº½³®´¢Ã´¹ÆÀ˜½­¨Ã²Ø¤´¨ÀÅ¡°É°£«¥¸©¾Ê­§Á¹®Ð¿¬ª¥Í­§¨º¤²¥”»±£µ¨·´Æ©¾¯¶¼¼¡³ÇÜ´ô³¥Å¼±¾ºš¬°¾¥™±Ð°±­Ï« Ò»³¬»ª¶§Ì¶¡©ÈÄͽʳ°¼¦§¼±¸²½£Ÿ£¸¡¯¹Ö³³©­È¿°»¤¼³ž¾­´¿µ¡ÈÁ¶À¹¶»Äª­¶¨±ÂÁÄÆ»¶·µ°«·½¢É°¹±Ä¾¹±Ã¯©ºÈ¼¹±®µ»­µ®¤»­ÃµÃÌǬƾ´¹²ÉÁ̾Š¸Ç¦³´Ç¢ªº´°Ã¾¬±¼­ÄÂÆº³Ê¸µÁ»¿»´ª˜ªÁÌ¥µ¾Á¿¾°¬ÇÔ®¹Ë½µ®¯Ä¸µ¡É·Á´¬™¾­ÊÁ¯¶±£·¯³»«»½¼¹¹ª°¡»Î§®±Å¸®¹·´•¸¬„ʬ¶®³³¡ ›Ëª¯·À¸¢¡¡®½©Ê±¾¸¶¶Ê¸®µ¼ ¦¡¶¸Æ°¿´ŸÎª¢µ·±ÃËħ¢»¯¼¸²·­ÁÁМÀ¿´Ë¬¥œ»·¯·ž­˜Ô¤µ°´Ì‚´Í£¶°Á¦¯¹§²Çºª¸³³ÈÀ³®¡®Á¿Ã¸¥ÆÔŠ«Ñžž°³¼»¸™ºž§È¥¼³ È᮲À¢À•°¦®ÌÃĪǯǶµª±º¸·´¸‰’ÁÁèÁÆÀ´°¶±·Ã½¾ÄÃÅÉ·»»»°³—µ¥»«»ÀƵ¯¹±Ê·À¼Ê§´´¶Ã¨½Ã¡¦§£¤¤Ê²•DZ¸¥‘Ä»¤  ¢±²¸«©œ³«¼¾¯§µ¡¿¥¢’«Å¯­ž·¢º«™•º˜Á«¬¤¨¦È¯Ÿ™º¹¥¡´©™·°°Ÿ§£ª¢¬´¾¯»Ãº±¶Ì¸ šªŸªª¦¶¿¹š°Â½®Â «­—¥«½§­ž¬¦¼µ­°²¯©À¸¾¼À«¢®ž»Ì¦±¼¦ÁÁ½·Ã̼¹¹¿¿§­µ§¬·Ã½®²¬À»ÂË»¾¿Î°³»¢²¯¬¸©¦´Í²Á¡ÂµÂº¶¿¸µ½Â¨Ì¦·¶—¶²¥¿·º­¶¦Ì§´¯¬ªÂ´µ¶¸¢¸¼ž©ßÏǸ¤ÁŸÂÃÍдó³µÇÚ¶ÀÆÇÂÚ¯£ Î¶²±º¥®µ¼Î¨©©½ºÅ²§¢¥°Ð»À·žÌÀ¾ºÍ°Ÿ›±©»²¡š»¾´BÇ®¢°¬¼«ª¦³¸£É²§±µ³¿¸È“¸¬À®°¨±³´­¹º¹´·²Ê¨¾´·´´ºŸ°°¬¡Â¥­ËÂʾºµ¹»£ ¿¡±©Ó³¿È¯ÅÚ›ËÑŪ¾³ÈÃÀ®©®ÀƼ¶°¾¶³¹®Ã´ °¹»®¸²¦¤®´±Â¾Ðğȸ¶²°²Ì­Å³Ê¯µ¬µ“¢Â¶²Ã¯»ÆÆ±·¼Ã¥³Ç²Äµ¨É·°¸‚¨ÉÀžÂǺǺ²¸È®·¢ªÌ¿­Á­°µ¯º´Ã¨É¸¬Ëª®¸½Ã½Æ©¹¸·³¬»·Å›¸£ ­º¥²¨·¥ªÄ¥´¨°º§²¶¯°¯¶³³º©µ©«§ÄÈ«¥· ¼«¥±›À±Ë©»¶³¥Ÿ¨·¨¬¶¹…ž±·¨¨©ÁÀµ§¿Â­Æ¬¸¾¹¸ª°Áº¾¹ªÊ½­¾º”¼¼§¯¤ª{Žº¶¸¥­Î¡À»œ¡Óµ®¢°¶¡™“È®­·¾»Á¶±ÃºÁº£¹µ»Â¦´¯¼¼Î»±À®ÀËþÁ¦§Æ¬ÃÀ³¼®Å¹¾Å±°¸Æ²¹¿ŸÀ®©¶À³Æ™Í·¬É©Í³¾µÈ´Â¿Ó³¸Ÿ°¿¡®±·½¼Á³³±¸Á§Å¡¿›¯»Á¶É³À¾¸«¸¶¬Ï»»Ê½©²Ã¶¼¹Ì¿¯Ä¥¶¹½Ç­Äʲœ•¥¶½™š»¢È«ÆŸ²¨´Ìö¶¥¤É¼¤´»¾®®¤­¾¶¯¦°¾–²´µ¶½¼¹±Èȵ½·¸Ÿ§½º¯º±°ªº¸°¸‘¤¶µ¯•—¿·¼Ç·˜§°·º¹ž¼¬±ª¸±¹½®Ÿ»²³¤¼ÃׯÁ¯ É¿É±›Å¾±¿­¶ÁÇ´ÆË¢ºŸ´»µ½Ãµ¼´­¹¯¼µª¨º°¼¶«·¹Æ¸°²ÂÄ»·©­¶¬¼²¸¸ªÄ·¸Åº¬¨Ä°­ÅÀ»«¬ž»¦©²¹´¬µº¶¹µ·¡¾À¡³µ²¾¥¦¼«Ã±µ££µ°»§ÃÄÉ´½¹¾²Á¹Ê±¶®ª±º¹ÈÀÁȽ±·Â«Ãºº¶»Æ»¯½Àº²Ó¶´ª¾Â´›¢¹µ¬ÄÅÉ¿³º®¾©²«±Ç·¬ºÑ•­ª™«¥µÇ¦½¥Ð(²®¾Ë¾š®»Çš©‹±¸¬±É¥±º©¼§¸ª¸²»´½Ä·³Ôµ³Áز´±¢Òº¨­—³¼­¯±œÁ¯¸£±«Æ¸ÉÀ·ÂÆ¿žÆËɜִÁ™Ç¹¾¾ˆ·›Çµ«Ä¾¸À±˪¦¶Á ×ˆ¯»«É›­ÄÕ³Þ³ÑѤµÞÔÁ¯¸¼Ãµ—Æ´²¦Ä»ºÅËÂÄ­°¬Ã¸â¡¿°Ä§˜µ¬¶ÁËõ¥°{§­¬½½¾©¢Ñ¼¶½ºÉÉ‘²·£´˜¹®ÃÒ²ºªª¶Ã²ºË¿ÏÒ¬×Åݽʴ£¬¶Ã³ ÁÉ©ÐӸĬӶ¥¿°©š¼Ãµ›¯­­Ã¯¯º‰ºÊпÕǹ£¯»Âº¯„­¹º¢À³´¸¸Ã¾¶¿¯ê¶¨§­Å°¯Ä½ÆµÑ͵ÎȶÀ¤¯¬«±­¿Ç¨¿ªÀƒÉ¥Í¿·Î¿¶»š»«´­·Âº³›¨Ã¯½»×±ºØ«©×¾®¶¶µÄ®¿ÂÀÓ¿«¦³Ì»½²Æ°Â·½¯»ÏÃѾ¶ÀÄϸ¶¹Ï½»Ïº¬×»¶«Åœ¦µÕ´ÃÂÀų°¹»·ËÅÃdz´ºÎµ®Õ²½ºÍºÅ·¢ÀΥ̸Ñȹɽ¸Ú¥À˘ɮ»¯ÈʸÏÂÞÓ¨žÚ°»Í¶À»¹ÂÆ¡²«¼Ì¦½ßÀ¾³ÀÉ÷§ÊŸË¼Æ³µ´ª´Ñ¯À´ã¼­Ã¯´Ä̰ɧ©ª¯ÁÅ Ô³§²·¿ÊÏÄѱµÄÎÐͽ·ÎÊØ­½¾¼«º°º¿Â²¹×¬Ã²Û°ª¸Ô¼Ê®Ð»¯ÐÔ»²Ö®Ä¯¾ÀÓÄÀ·¯«”ÄæµÆ´É­ºÄ²Ì½¸Î°Úʰ³È¨Óƻּ¼©½©«¦·È¥ÀÈ·­ÈʹȨ̧»µ²¬±²Ü¬ÇФºª£ÀϽµ´ Ç¬¹´Ã¼º¦·Ê¬¡¸¶¾Ð©Â×½´¢´¸³›µžÏƪ°´¬¶µ° Ç¨¥Ú¹ÙخȻ·Ã¸¿¸¶·®®ªÆÄ¾²­Âܽ¶¶£Å¸¬µ¥Åʵΰ±À´¥Îß­¨­½ä¾¾ªÖ±º©«œ¯ÒËÈ;Èϰ¦´Ô®¨Ê¼ÈÏØÌ¥ÀÇÆ¥±°³µÊÓŶ¾²À´·°¿”ˬòdz®Ã¸³Ï¬³¼¼µ¶½®Ý¬»¿Â·´­µ±Å¼²±Ìе½ÀÕÇÁ±Ä¸¼µ¸¯­´½´¯È»ÀȜɻª˵ÄÌǮ߯±—³ÜÁ½«ë¨ÇÅ´ÅÙ¸º¸ÂÈêȬǹ¾¶ÄÌÅ­Ç¢«È½ÊËÌ®ÆÁÚЛ´À¾¬¿·¾²ÅØ­­ÈØ«¯À¬ÀͨƧÀ·¿¾Þ¬Ç»ÇÄɴǺ®Ó¼¢³¯¼À¨ÃÀ¬¡¬¾Ç»ÑºÆµ«Ôɶ˳¦Á´°ÜÉÃÓ©µÁžÉ½§µÃœ¼×¿Ì¯¯ÙÀ³«ÄžÓ¿Ò¾±©©±Á¯Â ©¶Ä̲¤Í¶¦¢¯¿¾¦«¾žà°½¦²¨™Ì³¸¬µ²À¥¿ºÇ’ºÐª«Ê¦ª©©ºØÏ¶µÓ¤©°Ã³º¬Ñò¹»¨Çßľ¦à®½§´²Ó´»¯¼·ÈÉÇ´ÐÔ¯¾´¯­´µ™°®¾­°±»³Î¹¶ª´Áªµ¯¸°·¹ž¬¹©³¿ÂÈ··µÄ¤º­Ä¨¤Á¾­°¸¿¶¾³¸Ó°ªº·ÂÆ»¼²¿¾»Å¦²·¢§Ä§º·½¼”¦®·º²Å¾•ÄŽ­ÌÀ®È²²Ä»Á­š´¼´¦·¸º¼ÁëƳ¨ÅºÀÎÜ·¶¾¤»²»´£²»Á­’¢Í¾¸ÇÉǼ³ºÖ½¨ÌǺŸ§®«¯¾ÌÊø¢¾­±È­œÉ§ª¦½¬¹¯ ¥Æ±¾¦½µÆÇ¼Ì¶Ê´›¼«¸§Ã𝶲´Æ¨Ä´£½±£¤¶½¨ÏºÑ°­¹Ï®ÍÀ¹¼² ËÖ¬ÇÉÆ´¹ŸµÒ¦«¡¬ÇýǰÏv˳·¢­µ¦´¾¡º©½¯½¶¾¿·¯¹¿Ì‹®›´²¾ ´µ¶°µÊÈ»À¸µŸ¸È³¿¿²§²Ã¢¿¿Ê¹¬°Å·ª·¾Ç¬™¼±£°½±¸º±ºÂ¢Â³¾¯ºµ½ž¸Ÿ¨¿¿¶ÊÁ¹ÀŸÀǾ¾Ã»À¼¼£À°É¼µ©À×É·ÃЬ³¼¶¯ŸÀ¨½Á³··Àªœ¶ÆÕµ§º¼Ö¿¿³¿©´º¿žª»¸¡³·Å²ªÎ¯¾ªÂµ´£©¿¸­·¤¥”¼Å²±¨º¤®´¢­Ëº¸Ç«ÄÕ®¢µ¤±Ë¢Â·±¸³´Á¸«ÇÁδ™ºµ­Ä¿¶ÏÂɱ´µÀ¯µ±°™É¼¨²Ç«¸·¨´©§¯½¬¿¸¹Â¥Ë©¦µº¹Â­¾­­ÂÄ…¾¼«W¢¼´½±²²«·¹Ã¹¼Ã´¾µ¬Çº¸Á°£³µ¸µ®ÇƱ»¼¯Áº³¦³ÑÌÀ¨­¾©¸±Å§Ȧ¼¼Ï°±²¨·º´®·¹ºÀ¦¹¯Ç­Ã©²´°»¾´¶¹¢»¯À¾¥µ³µ³¨ŸÃ̸ֳ¥Á¸¤¦½°£­¢ËÀ¾¹¨ª£¹®»´Ï¬¿·Å¿µ¶¸›³¼µ³»²¨¶Æ»»´Ã¬ª¶¹­¨­¶­·²±ž¡¡¯­·³²µ—´«ÉÑ«²°¹¤¼º¦¥­®Ÿ²­¢›ª¿´½³Ã¹¼¾½É¾©±Â¥›¸¹«Ä©µš»´¢Ñ°¹À½°ž¹¶›´ª«»¾ºº·°›—°§«£–·›Ä­Áµ§¬µ¯¶²°«¢¸¢µ¨Í™µª¾Áž­¶Ó¨¿¹Â°µ¬Ä¶»À¹º¨µ¶°¬¹¶°Ã²µ¶´¸Â”°µ¦´›»¶ÆÃŸ¼¸±Ì™Ç¸±±¿Ï¼¹¿±¶¨§±¿Ë¾¸ª´­¼¯³¾¼¤¼°wľ¸½¸Ÿ»³¯À©¯·ª½¾´³¿´¶¼´¿¾±¯²¯¹¹¯ÂÅǽ·Å¤®° ¿ª¢¿»¹Ë«²Ù¾±º£ºŸ²ŠÆ©¦Â­³¾£««Ì¬±Í¸œÄ¼¶¬°°ª²È®¦¸²²«³Â¡©ž°ªÇª¥¦º­®Ö¸£¾¼½®©§­ÃÁ°½£µ¶ Æ°¯µÇ±£Á¬¡½¨»¤©ºº½Ê¬§¯©·ª¢·¦³Æž¶¶¼­¬Â°½Í£«Áµ»§È¾¨È£³™¹À°¾®¾»µ®Á©¾»µ¸´Í»¶¼Á±¾¥²³ÆÃÊÁµ¿®¬µÌª³¯’½Ì¿ËÇÑ®¶ÅƱ³©È±¬¼¬Ê¬¹ª¬»©ºÃƼ®¸Ò±»¢¥ÂÀ¸´¿µ­°³Â³ª´¼«¶ªÒª»¹²³¨Å©²Ä°¬œÈ»´¶«Îŵ¦Ä½É¬°Àƺ¨À¨¶®±Î²§»© ¶­§µÆ¦—ħ¢®¶¿µ¬Ê¹µÅ·¤¾½¬ª¶µŠ±U¬½§¦±«´¦±±¿µ«­»¼®Ã£§É™¶ªÆ·—›¡¼³¤¨¹²±¦¾º¶°¥¬³°„“ʪ¾¹¬¼Äµ£¯¤«µ ¶±­Ë°Å©Ã°ª°­»®¨–µ²¥«˜µÁŹ©·¾Â¬¶Æ»½®§¬´Ã­­¶·²ÈÁ®¸®¦£±½¬Á¬Â¶Ê®°Ê¼´´«º·Ã±³¦®À³¬²··°Æ®­¢·“»ÀÁ²±È¾¼²Ç¢Êµ¿Æ›Å®¸º§¼¨µÀÆ£°ÃªËº¬¯·Ä²»¶­º¯—µ¼Ã¥´²¼¶¹¦«Æ®¾¶²º«¶½ÔϪᬩ¶¨»¸¼·¿®¯µ¶¾°©ËȤµÆ§¶ž­ÄÊÉŸ©Æ­³½Â´¾¬¤¨µ¥­˜£¿¼›½¨¼§¯Ì´£·®µ¯©´³«»¦¯°°®²³ÃÁ–¼³ÖÅÀš°Á°Èº¨¯¼ÁÁº}”®Ë©šµ¼£–´³À®ÆË»¹±²º¸³³Í½«À¨Ð¹«½»°¼·¶Î½·¾»Î¨©´µÈ·­Á®»©½°·µ·¾¹Á¹²­À³°Ç³¾Ñɹ±¹±Á¶·ª»Åʵ®´¸À¶Å³¸ÇÉ´Æ´±®¼¶¿½¬©´±ª°ÁªÂ۵µºŸ§¬ Åɺ©½È¶¼ ÄÉĸ½§Å¾Â±¢­º³»ª¯È§±¾À¼­Ê­¯·«¼³Ã¢¬·µŸÌ¹•±Ÿ·³À°Å©ž·‰¼¤°«ƒ·½ª­Ç¾¥É«¸¹ ¨« ³i¥˜¸¹¶­‹Ë²¦©Ø¾¥¯§±¾£¶¾¿¤Êɽ¦¹¹Íʏ½º¼Î­¯¶ŽÂ·°±­¡·¥¹–“¹¸¥µ¯ž§Ø¿¬´ÃÀ¹º²ªÏ¾°ÍƵ¿¶®°¢¦¨¾ ¨²ª¹Á»¬¡¬·½³³À­½Å´³®µ¹§§½¹º«©«´¿¸£¾¼¢Á—ÄÆ´Ç²®Â«»ª»´½Â£© ¸¬Å»Æ½¸À®Î³ž¿º½­À³Æ·Æµ¬°¶Å¦½º ¾Å¹–³Ãƹ¸À¬Ä¸²‘¯¶Æ¿¯Ë«­³ºµ¿±·”¿²´±Í¦·ÄȾ¾¶°ª³ª®¬¢²œ®ÄÌ¥¶¸´­´½¾¬¥Ä®Å·°¤»¯±±’©·À¨¥½©”¿Çƹ®·¼¯Â´Î¶¾ Æ±®Ë¶§¸É¿œ³°½´£©º¤Æ±¨µ¼Á¹«®½±¬±³¬¼˜°À_¹³¶¸®³³¾¸¬¶¼¿²¨°·›Á´½Â«¸«±»Ê¥¿¢À¾©¼Ì¼³ÁȾȷ¹³¸·¾·ºµÁ´Á°»­µ±­²»­ˆ±µ©Â¾¯Ä³»Åž·»´­Æ¾²´½Ã­«‹·¿¸Ç¹Ã³µÂ»´¬¶Ÿ¸¼¦¬©·‹µ’¿±·É¶¶·¿Ã°¶«œÅ±¸¶Å¾¥¶©µ¾·®¤½°¿ª¥¼²§°±Ñ´À´¡Å­¾®¸ªÊ·­°¹²·¼²ª® Ãz­²ª¢±¼¯±ºÊ»¬¦¯¦³ÃÀÈÀ¸´ªÃµª¢§²¢­¸ µÒ µ¨¾µ³É¹»½³¸¬®µÉÀ”·­£µºÃ¥Á²º½±¯¹³±§Å¢µ¥À¼ª²±©»±´¤°°³Í©©µªº¦°ºÎ²¯¬³´¬ÃŶÒÁ°°®¥¹°Âȱ·Ì¤¹¯³¦§¸°ÇÉÆ· »¦¤»¦µ­¸¨¬Ë±¯ÁĹÀ¢±«ÆÀε¾¶¿¡¾·Ï¨Æ®Ã¼®ÆØ¤ËËݹʞ¦±®”Ъӧº°¤½¨Ë²½³µ³¾±·µÖDZʟ®°µµÃ¬¹²«ÅÏ™®ÉÑÎÉ·ÁºÃÙò¦¾À±´Ãº³­»Ç¯®ªÐ®¡¨¯®ÎÀʪ¸«Å¾¿»Äĸ´®®«¥¼¿Ÿ½œ¡¤Å¿ÃººÂ¾»ÐÉÂÆÉ̺˜µ±¨Æ°¸Ñ¶´®¾”Ò¢»¬»¥º»´­°¤Ÿ¾µ¶Æ¬ÌƼ³Ïº£¸ÔªÇ·§š¬±ÈµÊÏ›©·¬³»¦¿À¥·¾Ç¼µº°Ç¥ÍȬÊÂÁ·½ª¶¼¯Â¹£·»œ½Á»¸°º¼½¸¨½Ê­¯·³Àµ§¤½¶¶®Áº·«©¯¯¦²¯²²¬›Æ¼°·¶¶ºÁ··É³Ãµ¶Á¹¶ÁÂ¥”h¼ẕ¶¾¼¹¶Á­¹¾°²»°²´½¡©®¾°©²¥²Ä¥®¤¬Æ¾­½²ª¶±Çµ¹»¾¼¥­›“»»Ö¢¸¼“°ª©žª ¶ÎÄžÁ£¹¿¼Â¶º¿É¥¸·½´´¦¶°®´««³·Â·¶¬¸­²ŸÁ¢©ÁÊ© ´¸µÄ®¶®®¶¾»¨ÂŪ¹ž·¼³³­¬¥‘ȳ¼º´®Á®·¸½«¶¡®©½¶½¥±¹´¸²Ê¤¼²¯ÈÈ´¨¯¾ºÁǧ­·¹¯²‹ÒÇʺ°«¾¬²¬Á´ÀºÄ¨¦¶¾¦ˆ”±¹Æ­®°Ç›¢¼¸·¶¥½¨œ¼£Ü±®¿ë£ÇŒ¨¨¯}µ£¾¡²¿¢·Æ·°‘°¹­Á«Ÿ®š«¹®Àǹ¢Æ±¦«ÆÆ´˜¯·œ«ÃÈŠ|ž£©”¹Ø¿¶ÀÞ¾¬µÀ¨´²£²¨Å¼¨¯¿¼œ½»µ¯ªºR›¸¥šœž»¶°¿Ã—Ū¯œ ´¡¯»·¨ª®¦·Ç£›­œ©£š«Ã±°¢©Â¹¹¹¡À¿Êµ¬ÁªœÀ ªµµœ·›¸¡±´ž˜Á°±ºžž¯­¯«ªÀ®¾¿¹­¢¯Á“¦°´¹»Ë¸§Çš¾À¶¿¬¯¿º¢¦»Ÿ©É©š³š¤Ò¼­¯ÄÐÀ·µ¸³£±¦³®ÉÊÀ¿°¼¸£´´Ç¯¼°ÂÁ¬»ÀÁ²«¯´¹¸®¼²µÁ¶°·±¹¼¹À¶§Í¸¸³¿Ã®³³´ª»²«µÃÉ®¬Éû𸩶²°»²¤´È£§§·µ·Ãº´½Ä«·ÈµÎº·Ä¯Ã©¸¶¹±«´»©¹¨¦¼®´¡«¿²²§Â·¦®—¢¬²¤À°¯¢º™©°´±³±~ÃĶ«žÂ™»Ä°¤±Ã¶¦¬¯°½ÍËÁ¼±Ä²·ž¯­Í«º·º°¤¹¤›µ²º§¥Éº¶¯®®®¶¢µÅ®±µŸ¢¯Ïº»¹ ¦»¢Ÿ¥¬³Ä¦·¹¥É¯¨³À¦¯¦·¤¥±«´À®²Èµ³ÆÐ«®·Áɾ°Õ©¹¯ªÆÉļª²½±¯®²È¾Ò°¿Ä¥¿¯º¹µ¦®¦®³ºÎ¿È¾º¼Ÿ´ £»¬²­°¾º¯·«Á§½È·Á¡µÃ±¶¦¶ ©»¼´Æ®²¿Áª³¿µ°«Ê°§²·¿¸¢¾¥¯©Æ¶«¹Â©»«ª¦µ¼Ë³±º·¹·Á½³ª¼°¼¸µ¦·¸º±¶©­Æµ¹¾«Ê¬··®¦¨Ä¶ÊÃy«¸¸ºË‘¹¨žž£³§­Á¥É§ž­°Ê²¤Òª¼Ç²©Â²¤©É×®¼¾±À½§Ä™Ç±®¾ÏÄ£ÀÚ·­±‰¿Ã¸Å¸åw£–¬ªº¯¦˜§¬ª¥¶¢ŸÃ°½­¹Áɪ´³›±º²Á»¸¶Ç¹¿£¸°Èµ±Éº¸»®´­¼·»±³°¾³°·´Õºª¬±°Âª¹¸À¹°¬Ã´¯¹È¯¸±²¶·¼Å·¿¾¿º“¸¢Ñ²«´¿¯À¶³Ï¢®¥ª¿¨À±¿¾ÀªÄ³­»°Ð®½³™Å¿¡À·­º¥¾Ó¾¼¾ÄÅÀʸư¼¯¶¬£¬ªÁ»¯±¶½ ´ªÃ¸«Å¬±ºÀª©°³Ÿ¯À½¿²ª®¹ ¯®¥£Ü»¹²£·´Â¹­ª¨Ë§¾À³ÊµŸ²¼¥´°¼ Äµ´Èż¦¿ÑÀ¿±¥ž½Â©¯¬µæ²¶³½®°Ÿ«Ý´¶œ¸­¾¸¼Ž·£®º®À½ª¶Àһ˰°¸¿È«¨® ±³Â“¹´Ã½³©Õ¦»¯À²Ç¬²¬¨¹»­­¨¾Ô­³·ª±«¢¯«¨¾´¶ÁÂÑĺ«ÈÔ¨¾¹º©±Ç¼·°¼ÂºÅ³¸´´¬Ê§²³åƨū ¾»Õ ³²°³±ØÃȱǫ´§Å­½¹±Ÿ¾ÆÍƳļ¼»È­¯¼ÏºÁ²·­Å®®¯ÛذÃÌÙ°Ú±ª··Å̱Ƶá˜Á§»·ž·É²ÈøÆÂɾ¶¿Ñ´ÉºÉδ¢´É²»´Áµ´»¡ÇÄȼз¿ÌÎÂѯ¬±Ê §ÇÛØ®«¯Ò¯Ì²¿¬±Í²°ÀͳȰ˧¼²²µÆ»Çͯ²ÁµººÕ¶ÅÔ¶ÕǿలÒÌ­Ê®´·ÉОʿ̫¾Ï«¨©½¾Ì»ÄñɽDzÀ¿ÁÀ³¹²Ãê½¶¶¡½À¯À»¾­¾º¥Ã­‡º»Â¹²·Â½²¶¾¿ËµÀÀ§Æ¾°³›Ñ«¼»ÁƳÆÌÅÈǵ¶Í¿­š¸³¼§¹µx´»»²¼Í¯²®˜º¬±Íª«·©±¼µÃ¾£¼¥Å²ÁªÃºÐº½¸ÅÒº¶ÇÀ³¹¥º°»¬­¶–Ä›¸¥¡Ã°Âñ¾·µ¶¾Å‹ÃáҲĽ¸¢ÖºÉ¶¹º¶ÅÇ­®¹Æ®«²©yÀÀÙ»À©É¾·¯Éœ—¾Ã°Î®¢Ê¸³Ä·¶µ°µ¤°ÇØÀ«¹¼¹¸ÉÖº°­¿¯Àž»Í¾Ä¹¹œ¹ÀŲ٬ÿ­»´Ç¹š¯Î±­¿ª­Éµ¢±Ì¯Ë¯·¸¼Á·©¤¸É쥿¸«¯ÁÉ ¿¼Â°·¾¦½¹»Ã³µ¬º¾Ò°ÃÊ¥¬»¾³Ì«¬£µ¤®»«³¸Ú¿­Â¦¨¥²Ï±±©±·µ©Ã°¨°«±¬¾Í¾²­Ã¤¿Å´Ãɱº¡¯ËϤÒ˶ð®Ô¯¬­³½È£¿±Öº½©¬­ÔÍȾϺĔ¿ËÊ©½µ¾¯Èн¿ÕÊٽɰ´¯©ÄÜÏŸµÅ²º¹ÈûµÃ«ÄжÆÊƸܲջ«°À¦ç±²´À͸¾¹Ì«×ˬ®Ã¾´Ò®ÖÄÀµ¶´Ö´Á¾°´Ð·§ØÄ½ÅÁź»¿Ã§ÆËÓ·Õ°¥¿ÅÓ©¿ØÂÿڶ·§¸­Ñ½Æµ¸½ÄÀ»°È“¼°¸­ÊÅ»»³Âö¦¾Ä°Àâ¶Á®¥¿»ÒÄ“²ÀÏÀ¨³Ì²Á­Í·½¸´Àµ¢Â±ºº²À¿¹É¼¿¾·ËÀÁ¶´Ê¦¦ÂÇ·µÎŸ¾¶È§º­·¬Ã¶ÄÁ¶ÅÇ¡¨˜ºÁ¹¿°¡¯»ªÅ¶¹»¶¼Ã¸°µ³³Ÿª·²²ÄÔ²µ£²°»§¸¥´ÁÈ¿®³°Ê¸¾¬³“¿´£¥®§‘¼ÃĤ«‰¡¹Âªµ¡½È±žÃ­¬©¼ÂºÔµ¬ÈºÇ¢¨²´»ª´¸ Ñ¹¸¯™´¾Å©«³µÒ­°Ä°ºÀ¿³µž¶Ã®µ¶§¡º²³©“Ñ­¸ÁËжÀ³·ÃÌ™¼«¸®Óϯ·²¾½¯»¶Èª¶¼½¸Àƪ»ÁÀÅ´Á»»«¼¼Ç¹´ª³²Á›‘¥¹µ¿¨°¾Ï¨Ò¢±Êž·®‹¬¬¬©°´«Ä…Á¯¢º½½«®¯Ê³»Û­¶Ë¦Æ¨°˜À®Ð×°¶»°µº«¹ÁÏþ¾³Ï°Ó¼“’©±¡º´˜ÅDZ µ½ª¶¸³²¸»À¹²Ä³­©¯µ·¨´ª²±Ð½¨¾šÄ·¬Ë¸ ¦«¹²½¯È·³¢«Æ­±¤ž¯²¬®¿¯Ö¨žº«¶ ¯¡Ã¿¯½¥¥µ›¦°¸±«³¥ª²µ«¼­Ê¨¹µ¯ºŸÁ¼œ°Å¨­»¶§³¬Ÿ²Â¯®ÛƼ¢™¶¸¬µ¸§¯¶Ã¢Ëĺ¸¼¾­¯©¶Ç̰Ȯɰ¼¸º¯ÃÇÏǵ§Ê´¥ÊβºË½Ä»¹ºÚ¯¥¨ «°«Ç´ÑÙ¬¼¼Ê¿Çɺ«˜¾ÉÅË´ÃľÀ̼ÄÈ´«Ç¿Êº¸¿½¹Ð¿¡¦ÖÆ£·©Ë»»ÅÁŦ¾¨³¸§¾¹¦Èé¿´Ç®œÉÓ§·Ï·Áµ«Í¾¾™Ä­Û×ļµ§¨­Â¨Õ¯»Âº·À±Ô޵®±œ²±¡Ä´Ïͱ¶©¢¬ÀÑȲÀ¡Á¸¬´¼Æ­Á°²£¬¬®³ºÉÚ¦®Á¸´Ä´¼¯Ç»ÄÄÓ¶²Ìº¬­¹²Ã«µÉÃÌÅ­Ò •ÃȶÑÌ¿·Áµ¶ÂŸ¶¼¬ÆÊ°·¹»ÃÍÈϪ¯¥²°Ë«Ù°Ì©½Ä³£·¹ÆÁ¯Ç¹¼¤¹µž²º»»½±½±ª³µ¸©±¸´À±´£Àœ»¬´¶°À»¯¹¸Â«¼¹µÈ³¶©«¹…ïµÇÁµ«µ§À©Á¯¼¡¯À©¤½£À®¾™«Ê‰¹¸¼¶µ—Ì¿¹Ä²°¶­»¸±¿¸­Á¯º··µ½ÌÁÀÁÁ³Ï¶°¾š­²¹¤¥±˜½ÇÆ«§Ã¨Ÿ¨½»ÉÀ¸¯¨¼­–­·¹£»»§³ª—¿²©µ¹»¯¼§«¸Ç«¦¬­–¯µ­³µ¿º¹¦²±¶ºÂ§Â°ž©¡°´ »¹¶±¬¹ª¼£®­¯²·´½­œ¸§µ£¨²¹ª–ª¸»³ºš¿¾¾´o®²­´ª¾À¹¿²¯­Æ¨¾¹É¿Àª·Âº©¼¸¹»»³¿®µº·º°±Å«´µ«©³¦¶·¹·¼³²¶¹¥œÆ¨§¹¾°È°¬»¹ºšº£·²½¯ÆÄ·Àµª¶É´¯¸¼¦¬¨¾®À²¯ âưʼ¬­±©­¿«ÊǺž³È´¸È»Ð´©º©ÂÀ½Ñ´œÁ¥»¯µ©µ´®¿¡¹Ä«¬½¸ž³ž¸¿¶´®ªª¸«±²ÀµÙ›¸Ñ›¥­±¸¶¸›¹©¤¥œ¤—Dzº§©ÃÈ¡½¯±·«ª»¨½¬¯¨®Í­º·–½Á¯´³ª¾ËÕ›º¼³ª¤¹²º¤½¾¿È£®¿½À²¸¿Ë£®®¨¿¤¨¹”¿«¯¸¹±’»ž´¯¼¯¿±È³È¹µ±É²¸£¾ ÉÎÆØË¥´É³»ÈÀÑÐÀÓ뫯µ¹Ã¡«§¹·Ì±Õ»±¹½·Àº¿Ð³É¿Ñ̪ÅÂĿݽ§ÅÈ¥¿¾¢Ä¿ºÕ´¸²Âȴα¸½¬ÁÜԪε°±¶®ÇËÉɲ»¾µ·Ê®Çݦ¾½¾Å³¦Áé¸ÃŸÎ½Üœ´­ª³°¯É¾³¿¾ÄÀ¸Î¶©¹­À»¶À˻ַ¯­³·³ÂÓѳ®Ã±«Â®ºÏ·Ë®«ÈƬūÀÉɺ¢Ñ¨Ä´Ú®ÄµÉ½Á¼Ä²ÁÈÔ³°Á­È­±ÈٱIJª¯„ÅײǺ±¿½²¼¾»¯Ã­Å§¬°Û²ØÌѵ˴¬Ù¯½²»µ¥¤Àµ¶´ºÉ¹·¬«¿ªÄŸ´±·¼²Ç¹±¡¾µ½²¬¼´¶ªŸÉ¬«Âª´±®¨¹¾´À¦½µ»§À¼¬Á²¶Ä»ªÃ²¹°ª¡¡°¶Î¹´°®©¯¬©·Æµ»´Á¤¿”ÒÃĶ£°“ĸǺ±±Æ¯µ²ªŒ¼Â·ÎÍ·ÓÇÂÀº±­²¹¶¬ÊÀ¸¯»°­³ÎÀÊÍDZ“½´«²Ç¹«Ÿ¾Ÿ¸‰Ì¹¨¨«´´¼«¨¶¢¾Æ²¼­±Ç³«¸Ô»›®Åµ»Â¹Ÿ·®°{Ä®¼´­«š³§£»§¨§«©É®Äµ¬¬Â­´ÃºÇµ´·¸¶Â}¬©¡¨œ§§³¾¿¾ÈÁšÂ¸Å¡®·¦´»Ë»³¼²¶¼·¿¶„®¢ÆÁÁľ¹À±ÌÀk¾Ï´»¹Ì»Ç¦¸¼ÇÈÄÁ¹¸±·µ¬¦±ÂЩÁ¦¹±¬¥ÉÀÂË¿­ª½´½´¸¢¬²ÂįµŸ³½Ä¼º¹³È±¹°»¥µ±¤¿½Í®Ç©¹ªÌ£¡¼¤ÇÀ®Á³°²²¬ÁÀ¾Ì» ººÔ®Ë«¾ª³»É¸©³³»³Ë°¹½·³”«Ÿ£±©¯ºÁ¨·ÂºÆ§Ì«´Ž·®¤™½£«­´¦¼µÈ½§²ÊÏ®°µ¼®º¦¸¬·¼¾º½³ÅȪ¨©­¨­ª½™Ê°ÂœŽ´Á»«¢³É¶«½¶¬Í°¸«º¯®«—Á´®Ÿ¯®­¬¿·²Å¡Âɰº®›—£Ô³¡³ªµ¤¡ÍȞƺ®Ã½½É¿Â£¾Ÿ¶¹µ©¢«½¼”Áº¨Á·®¿Å§Ñµ¯¹· ¿®º°ÌÀ«°°Ãª°³·´¤›²Ä·µ½Ä‰È¸°Ãª¿Ãĺ®»À¼º¯º¬²·­¯¥°µº·¨¹¸¶±œ¶¹š³¯³¼¾Ä¾Ä·´ª²È·ª²¶Û¸¯´¸À³£¾­µÅ©Å¶©½¹ÀÁªºÂª°Ÿ­¯È¹·¼²¬½¿¸Ê¹®É³¾¾¼®ŽÂ±²¶Éœ¶À{©¨›«®»®­·½¹Á¸»­ º°µ°ÔÔºÁ®²šÄ¡±·µÂÀ–Áº«À¿Ê»¶¹™³‰¨µ¸¦“µ± ‘À±®¸»ÇÂÆ¹«½ÃÅ¿³ºÁ˜£«¶­¿ÃŤ·ªÀ¾¼´¸È¾ÃѾûº©¸±ÀÍÓº’³¶²ÁÀ°®¼¶Ã´¯»¢Ùœ¹›»®½»¸ÎÁÆÅ§­«À¦­Á³§ªÓ¯¡¶«·Ã»µË±¨¥±à£¶®Á·Î’ÆÂ°¹¿±ÆÌÁ¹³°›©È«½Æ³¹¹¹À­£ÑÁ¯¿»¦É©±µ·¢Í•½ÓØŸ½¬¹©µÂ´ÁÄ×ÕÒ²¸°Â²Ç¾²ÃÛ¹¸Íø¹»Ä¹Ã¶µÖι§Í¶Ì¡¦¯’±Ö°³Ô¸Ê±¶¯¶–Óº«´»½®Ã¾·³ºÇºº¿­±·¯°µ·Äδ¿žÆÀ¸մñ·¬¸µ³¸»ÂËœÁš»¾¿»Â²¤µ·´Ó³¨¹ÅÄ­Ö¶ÅÅȪÅÄÊ«¹º³¾³ÃÅ®¢Å»µÇµ¶¢¾¯³Â±Â²¦Ã¶Ì­»À®À¯ÃÅ«¹³¯©Ìµ·Åµ»Ç¼½¸«À£»¤°°½«¦ºÂÀ³¶¿µ­¢¥Ï°À§gÊ®Ÿ¹¶­©£»²ª Ÿ¦½º¿¹²¶¯³¾¼Âꮲ¯µ±Á½«½£´µÁ±­»­¹±µ»À¸Â§¾§²°¿ŸÍ¨¿©Æ¢¾—б¯°Å£°ºÏ¯º¿³»Ò­¢¬¼£·Á¥³Ã¦º­ª°ž­©°¶Ì¦š²ºÆË¥¶®yº©«Æ³½´½¢Á°º«¾¶³¿§­¶¡§¬³²Å©¸¦¬ËÁ¯Ÿº…œ¦¶£Å£Ä¬°®ŸÇ´Å ¤¿ºÄ³œ´—Á¬´¸°ÃªÌ±°É¸¸À­®Ã¨Ä¿¼½Ð«½¾¾ÆÅ³«¶¹·¿Á¯¸·£¢Å˜Á¢ÑÇ­´ªÍºº¶©¼±¶£Àª³½¦§Á®°­±±±¹±´Ã´§±Ÿ¼Ð¬¦Ì·Ä̰õ¸ºª¬¾Á¸Æ²¥½³¦º³³¯¸Ì®ÍÄÄ¿»Ñ±±¶§ºÂǵÁ´·ÃÊ¿¿±¢µ­©¾­Å¯¨µ »µ¼Â²¶­¡£º¶¯¬Ä ¶µ±·¸ÆÊ®¥Ò²¨¯¸§®À¸¼²Ö·°¨»Ê‡³ ½¶™¨ ­´¬¨¼¸¨¹©Äµ¨¶¹ÄЈ·ÏÊŒ½µ¤Ê¨·½µµÊ·±¤Â‘¬Ï¯¦Á¾º¸À¼Ñ§¿Â¨˜¸”°¬·¼¾½¸Ä°Ç¾­±±Â¦¢¼©¾¿¹º¾µÁ¯²©»¹À±°­Çµ©¾­·­³¾ÄิŸ¬À±°¢´³¯¹¤´²¦¶¬Å²¶§ºÇ¬«¼–¥¸¹°¨·¸Åª«¨¶»¹Ã²¸©±«»¶·¸Ä¯•¼Ï»¹Â¬«ºÊ¶´£°¥Í ¬¥¡±§À¾§®¼´¥°»¼¾­Æ·°Ò™¦¯» «´©¢´¦«Â½§¿°£±­¨Ïµ–±©­¬½¯§¹Ã¯»¬¾¶¸®¢¢«·¹¼µ²É³­¥©¶§Åü™º±«ºË²Ä²ªÊª¸°Å¨³°Ÿ·¿¢°´±«¡ ­¶¹¹Î¼²¤»¯¯Â¯®¸ÀÉÆÈËÊ ¹Ä»¯É·³¯©±£Å¬©¼¹¹É®¶­Æµ¿È¦ÇĦϮ´¼¹Å¸Ã™®½¡²Âо²¸¯¼Éž°´¸¿´±Ö¶Ðž¦±¦¹Æ¶Á¿Œ¹º­«´Åµ­¯Ï²Ì¸¨®Áª²´yµ¯kÕž¾¿²ñ˰¬Â³Æ¸‚½¶³¸±¿¿¬°¨¾½ÈѺ¼½ºÄ£¹µ¡·¦º¿Ï¤È¸É¨¼¯¯¬µ©Ä®ª± ·²¥¡Ëº°Æº¨¶©¾°¢Ì°®¥¥²·º¯¿¯¹¬’½¿§­¯¹¶ÅÍÀ©º—Á¤¶«¦Á˯µÅž®ÝÀ¿«¼«É¿¹Ã°¿°«ºÂ·³ªÁ¤¸¶°—ɵ¬¾· ºž¹°—¿¯Ç¯¶¦´œ²·¦Èͽøº²°µÐ¹É³«µ¸´´Ç½¹Â±È¨µ¸´¸²ª³º½¸ºÁÁ¾µ³¸½¬È®³¨£»½²¼¬³±´®°´›£­±¶¼³²´žÆºÀ²¸²¯³¬µÄ»¶³Å­¬À­™¨«±¬µ¸ƒµ²Ç¹µ¾¦ÊÍ¸š¸´µºÂºµ»¸©¤°µÉŬ®Ä½µ½¾¿¢Å³²¸¶«µ²Ä¸Æ—É©·¾³¯°¸®­Š¤¯¼«§‘µ·{¼Á´¹§¾µ°¼•®ºÇÁª¿œÉ¢”©¾±¯¥µ»Æœ¼¶ÓÉ¥Á¼¼¬Ç±«¼°¸±³«ª¯ÅªÄÁÀÅÀ¾Ä¸‰«¹¨²¿¦´¯ÉÀ¼·²±Å­¨¤¶®Ç¹Ê¾Âœµº±³­¶¦Ä—ɾ˴Àµ ­³ºÓ­Å³¸»µ¶¼£¸À±À§°®²È¹´•³§Œ±Á½­¨°³²¹Ì¸±¾±·±¦»ÃÀ¨¿´¹¯¿®½««´Ç°¥²¯¼¦ÄºµÆ½·¼Ëƨ¬­¸º¡¹«­°°ÍÇÁº¼Âɶ¼¨¬¶¬Æ°Ç¯£¢À³Ì¸¬¿¤¿½±µ½Æ®›¶´«Âʨ¾±·Æ®ÄµÅ­¸Ãª¶¯¶¬¢«›¶À¥»©º¸ª¥Ÿ´ÀÓ¦¶¹Ä¯¶Ñ«­² ¼½·¨¦¼«É­¯Ä½Ãž¬°Áž¹±¢ÆÁ£¿¨®˜µ¶ÐÁª»Ã«´¿Ç°Â¿‘¹±¶Ìµ½Ï¼°Ë¹·±¬·±Àªœ¥¬¯·½²»£ÁÑ·¤³·¸¡µ²²¹­™²µª¡Ä±¾´Ã«Á¯•µº¤Á²ª¾¸§Ä¹µ«±¸ªË¶È½‹§—¯²Ÿ±®ª¾»Â°²ªª±º½°¶­É¶°¸¹µ±¶¹ÁÌ®°¸À¶»¯º–Χ²¬±¶”°Áµ¿¹°ª·¾²Ä»Ê°Ì¶¤Ã¦Á¨²Îš—Ó¨ÇÀ¢´±«Ã¥½ÀÆ¥¦¹¯±´±±¦È½µº¸¶Èª¨¹¤£°¬¹´¼»Æˆ½ÅžÃб©žÉ°¹°»›·­¬¼·¯¶¡Åœ©¶°¿´´¼¹¶·¦»Ë°Ä¼¸±Ã·Äî²·º«ÌÀ˨²¡¹¦»˜Á²Ä±¶¶ª¹Ëõ³­Á»£­¾´¢Àz¬¨Ì´¸Ê«·´®Á«¡®·„¡¼´ÊÀ—²ª³–»¼µµ»»½º³Ä»—ƽDz²²²¶Ã·¥¯º¯¼½À¾Ã¯º¬¤ÉƬʘ­¾·°Â¯À¿¼®Á´Âý»·­Àº¬¸Â¿¾´»ª³Ç³È£Â¯ž¸²ÈÆ¿¹¦² Áµ­®§­¥È¹¾Å¹Åȯű³ª¬¸«Ì±¯º¹¸É·½´”ɽ¥»Ã·½œ®ª¨³¸§Œ®¿±¶´£´¤²µÌ®¯Æ½¾°Å³£°œ¹¹»³­Ã·Ä¬­¨{©¬²®¨°¯®«Ÿ¼À£ºÄ¸ÀşŲ͡«²±¯©–µªÄ¦¸µ¾°º±« ¹¯£ª¡±¶¦¾©Ìɺ¨ÀÊÀ°Ç§‘ƹµž­¼°¹È·¹¼™¹À·’·±» ¶¹¼§´±Â¤³ÈÀ±Ä®¸ªÇ½¾»¹¾¹°¶«°»¹¬Æ³ºµ¥¯Ã¶©ƒ¸­¾´·½Ä¶À®Ì°µ¹Ä”¾ ¸²»©Á¦·¹šµÇ½Å¿³±¶¿¾¢¹º»’¸®¬µÁ¥ººº®§® °¿«µÈ¼·§—½—¿¬¯Á¥¿ÄЯÀ½¶ÅÄ·¸µ’º¶»¿§·¼¿»©«¨¶°¥¸Àþƪ½¤¹­¦¢µ© ®¼¢›º­¸Â­«Á§À°±»—¿¢­¸ÄºØ®®À¿½œº©¹¸©ÇÄ¿¯ª½ŸÃ¤¾¤Ãβ¸¬Ë´±½Ï¥ÃË£­¼³Àž©¡£¯¼¯¦Ê¸°ÀÆ¢¾Å¿È¯Ê¾¡³°¸Â¾˜¤¼½¸¸¦­µ¯´¹¶·¿Â»Å°²º·ÁÅ´®²¹½Ç­¹¾Âů¼Æ³§­ §´œª¶©ª¿Ñ°Ì¨º°º½±«½¿¯œ¸³³¸º¦Ã§Æ«º´Æ«­µ´ªªª¿¥³´½ÄÀÀ¾Ã­Å¿Á£µµ»µ¨º¥¿¨ÆÍ·¨Â³»µ¾µ³¶Â¶¶®È¾¿¶Æ¹²Â®·¹Å«®¼¬¶ž§¯¿¡½Â—¸¬²¿À´Ÿ¬»´Á®°¹©Å©§¹¹¿³°¦›­«¶«³È¸­É»¸±©Ì¯ ­©³±¼³Ê²´«»¸¿Ÿ¤¹±dÁ·¥¬Ó¹™È³ ­¶»ºË¸®Ä¶¦ÀÀ§£²Ã˜°«§¬¼º¯È±Å£§¸Æ¼ŠÀ´›¼»ÊĮʘ¿¾ÆÅƹʦ£ª®»À­©¼¸¦»¨¥¸¡½°ªªº»ØÊ°¼½¨· ²«­»‘¼¿´Ë¯ÁÀº™¿Äª¿°ª°¼¯¸²·ªÌÁÒµ®²Ã´áÀ»¤Á»¡¬¼¸É¨­¹± Ÿ ²ÊÀÊϾµ§®¦ÇÊš¬½¸½®¿¹¹¼®¸›´·Å£Ó¬ºÌÿÁ¤›¶«½¤µ±´»¤©Ÿ›«Ë®³·µ˜Ã½¯¥¿Á®²´¶¸¿¼¤ÀšªŸ¦¡­¬¶½Æ¶Î¨§¡Æ¸”¾¾º§™Ê¡¨Éȶ¬ÁĶŸ¥­¯»­¯Ÿ˜•¬²£Ÿ´¢Ã뼳ѿ©º²®¥²²¿¥¼¡¹°®«©¯›°¶µÄ£µŸÈ¿¥»©»½Å¹¶Ã·µ¬Ë·¹½›³¼žš´¤¦§¾·¿—ÅÆ¾Å»¿Å­²»ÍÀη¢¹´Íɧŵ¹º®ÄÈ¡«À»Å¶ÄǪ³­Áν»À¯Àû½¾”»ÍÊÐÏÁ¨±Î´­®Õ´·È¦¸Á¶º¿£Ã³ÒÊ¿¾»®¸°¸Ê­ÆÓ·µÆ¹¶¿ÉÑǪ¹¿ÅÐÃÐ×·Ãĵµ¥ÀÍÓž³»ÀÉ¿¿®°¶Î´ª§Âçð’µ±°ÁÒ«»°¿ž¿Ë©½¿¯ÏÀ¹«¬»Ì™´Â¿°£¨Ê»±¹Ç´ž´¼Ã´¥·¾ãµ¹µ¸·¾Ö²À¨¹Ò²«¯§½Á©Áý¢ŒÆ¿¯Íµ¾¸ÚÁ©Ÿ¾Ä¸Ú¶µÉ½§º·§ÇÇÙ¾«ªÅÖª¹Ì±¹®°ž¼§®¶ª«¸Æ½µÇÀ´¯·Ó»À®È±³¯¬µ»Â¶¬°£¯¸¹¿¥¸¶ÅÁ·³˜˜¼º¶­²Ç©»²Â±¨½¢½±»¯¨­¬³­¬¿À´´ºÄÁ¹º½±Ñ·»¨¬°±ºÅ°¸¾µ¶³³ÏÀ««¸¸¿¹¢À­©À´¹¼ÃÆ©¶²»¾³·¸¨À¶Ìʸɪ¦·¶ÄÏ®»¬¿«¼œ°·¸Í¿Ã²®®²«§±½µ´´¤½¼§±È¦¾º³¢«§¸» ’½º©Æ¾¡»¡É©¥“·Ÿ¹»¬¬»ª»¸À©›¯Á¥²À¬´Á¾² ¶·¼·¼©º¶§½Ä²´·Ôº Óº¾¶¬¦¼¤µµ¹§š¶º¿Ð·±±¾·³¼¿´»œ­¿¬°Éº¶µÀǶ§·»¯µ®¹Àµ¿²³²¼ŸÊ¼¿°ÄËıǴÁ¸®Ä¾¾·²»Â¿¸½¼ «Ëµ®Ã»²¿¹ÈÉ­¢ÅÏ·±¨¦·¸½¶ª°½›±ª¼¨¸§½´½ ¾¼³¾®°ÊÅÀ»¼·½¶µ¾¼¡­ÊÀ±¹ª¯Æ´±½¥¾³¶Ÿµ³µ¬©°¢»Ï—¾³«­±§©ª·¶¦¸¯®§­Å­ÁÃÌ¥¬›º³±²§Àº™³´ÍžÅ­¸µ¼µ²É±¼®´¯½º°»¯®¥³¬ÀÄ—¾³¿¾º¤ÀЦ¸®§¹Áª­­µ¸·®ÄȺ¥µ»»¸®µ¸²®µµÈ½Åº´¥»¹–ÇÁ®»¾½º½µÃºÌì·º±¬»»«ÃªÃ·Ä›À±Æ¾©º·­²©©¸¸ª¼ª·¯¿Ä£¨¾º¦Ø«®’½ŸÂ«µŸµ¹¯²¦ªÏ³·´¢ËÍ®¡¹´¨£·½³´²¤ ·Ã¶³À»¬±Â¼««À¼ª¶··µ¤»ÃÀ¥´±Ç»¼´³´Á¨·µ©´Ë¶š¸¨«Á¦´¯œ¶±­ÅÅ ¾µ«¾‚«ªÂ±¬¶¾ËŒ¥¶­·¤¤¶²¶¡¹¨¶™º¨Àн©¬¬¥Ì¥»¤·¨´‡»¹»½¬¶²¬­³·¾¯Õ¶·Á®¼¼»¶±Å¡½²¬À±Æ½®»Æ¼µÇ¥Ž¼¥Â´º°Ðɸ¯¼Çº¹Ã¿«¹Æµ³»Áôªºµº±µºÊº½²·ÈÈ®­¿®Å¾µº¸«Á´À¹³®ÄÒÀµµ±¼½¯’¹¾½Ñg³Ä½»«¶¾Àº¸¬¹¶Á¼´Ï±®È±¸Á¾À¤¶¸¯½Ç©¹Æ±¬Ÿ¬µ¬µ´­´º¦«¿Ã¿²©È¹¬°­·ÒŠ­µ­»®Ãª¸º¿²Å¨—ʬ´³»»šÙ­°¤¾¹¢¥«·½¿«Ç¶¾µ²¿·ÓŲʻ»§¿±ª²È¨Ê“¼´±°ª‰ •À¯½®½À¿Ã¬¸Ã£®’¼¤¯¾Á¨¨Å¶²·¯°³¨Å¢®¬Ì¶°É¯³¸Ç¶®Å§®´Ë¨š°¿ç«¢¿°ÈÓ¿¸ž­¸Åµ´ÆÐǸÀ½­ÄºÅ¡«©¦§Ò³¹ºÆ¹°²ÀÀ¯°¿«³»¾¶´²¤·®½¾Ç³Ãµ²¾¬±ÂÍÆÂ¾´¡ªÇ®»»¬©³´±®¯µ¯¯²¿Âµ²½²ÄÀ»¿Â¯À·Ä¦Á«nµ¦Â¯¹Á¸®¶¿µ¹Àɨ§¶Ã¼Å¸·¾Â¹«»»Îź¤Á¬”¾½ËÀ±¹¦­°±¹´·¶¹¸ºË¸¹­¿¶´•·¤º­Ÿ¾±Ê¹¶ÉŸÃÅš§±·®ÍµŸ¼Ë’²¯¸¯¸¹µ¾Ìͪ©ÀШ±©É®Í¶·Ê…®¨§µº™·¨×®—¾»²©É¸¾³–±ËÁ¯­¹®·¦§»È££¯¸Æ°¶«¿²ª·²š¬¸®º¼½¸Ï›µÊ£ÔÀ±°½Â§Ä¼«¼Á¶µ°¿¢²À³¶²Ä½³¯¤²Â•³¸¬»Ë ±¶¸Æ©º·§Á±½Á´¿¶ºÄ¨¦«Ñ¹²¾¡²Äʯ¤ÁÆ´´´¼½³½­¼·¾ª¸¢³²µ¼È¼À¾´¾¯ÆÐ¿¯º©°¶¥¾¬ª³¥¨°Çϱ¬®¤»´«¸©¤»½®±€¯ª·¦±¹³Åº±»®—µ¯ª¢½ª¹ÀÄ»­Ñ¬½¼£°¾¾«·¨Éª³µ¥£¿–­¦¬¤²¿¶¶Ä°½¿ž©§¦¯´Äª·¾Â¶À¶³¸®Ÿ´²Ò­ÂÁ¸´ÂÅÄÁ²·¤¤¢´¢ªÈ¯Ö´¿À±¨£²j§¨–ž©Àȧ¯´«Å¹¸ª¯Ãµ½¹­˜ª±´Ì²­¾°´³·°´´­¨¬¤Í¹¯Àµ¯¸¯»¶°Æ¸º«ÀÅÍ•´¥Ó¸¿Â¿²¯´³¼¿¼¨ÈÅ¥À¾¸Ÿ¿Æ¯²¸­¾É¶¼±¦Á¿Æ¾Æ»Á´§Ç˜»» ¸º¶«¼³·«¶Ë¿º«³®Ë¼³µ«®½µ±Ð¾Á¶±²·©´¯±¹º¢²™¸¹¬Ã¬¾¼´²¯Ã̲©¥¶±À¹›·¸¸Àù¤£«³ª­³©²Ÿ¹Ê¢ª«©«±™¦±¦´jõ³®½Á¬¸Ã¿ÆØ°¼¹µ±±Å’Á¯¤»¬ÂÇÀž¼Ä³¹²©±©º½Æ»¾­—½¼´µÇÏȜȫ¼©›¶®®°¥®°À­Â°¼Ä̧¦Ã¼Å¸§¼Âǿȷ»«¹·¯·œ»À¹´®±µ·±¨¶¸¶Æ¾»¼¥Â­À¶«³¾±¦¯¾¾µ¾Ã°¸°²·¸È¿ºÈµ¸¦³Æ§Ê¸®Â´­²Å»œ·»¾Ç¹Å¶¬¬°Çª½º´¬»¬¢¯À¿³¹°¹»ºª»¾­Á¶ºª¬»Ä´¾ÂÀ¿Â¬¼½¾º»¾Â¥Áª¹»µ¶µ ÔƵ¼ÀÄļ´¹£Ÿ¦›µx¾¯¡»¢´¾«ÆµÀ±¸«³ÃÀż£¹¹¡·©²¯±š¶¿­œ³°££ÆÅÃÄ«¸±¼Ï§Á²˜°º²©¯œ¸º¦·¸ª°É©¼Í£¦³ž»«Ÿ§ªÆ»Á¬¡—±¸¬«±´¨±¿§¯Êʳ­¸»³tÇȰ°·“ª¤´Â»º¼½Ç®Î­Ô»Á¯©Ä¸Í¯··Å»Æ¿ÃÓ¯ÍÍÀͰ°´ÆÏ̿ү¿ÄÍî¹¼³¿ÁÒª»µÄÇÄÆÍ¨¸Ëβ´·ªÃÃκÌÏÆ²¬Ì»¼¯ÃÉ›¾±Ì·¹ÑÏɲ²¶µŸÆ®ÛöΡŸÈ³ÊÄ ÁÂÂ¥ÆÄ¸¹¾ËÀ½ Â¯ÌÐÊβ¬¼±¼©ã´Ë۰¿¥±ª¾š°Å¸²±©·Â°²¦Ÿ½ÍÄ«¾¾È²®¦®¾²¹¾Ü¦¬½±ºÍµ°·¿È¹Ì¬µ¤®»´¤Ã§Ï«Þ¬¦¿È·¿Û·½­Å»½Ãͳ­¬ËΪƞ¦œ¹¥±¹²ªÍªÁ´ª§Ç¬¹À¢±­Ó§­¯¡µ°¹¼¿¹¸¯ÀÁú¿İֻ¾¹¸Åµ½¶»³«°º©°½¶©¶¬­²·¿°­²±³ªÑ·¾¬½°Á·¶®Ã’²¸¸²±À¿­ÁÀ¼·‹¼Æ¶³¼¼º¶¡’´”¤©¨Ê¸Ã¾­¯¼¥»¹”À¶³°š¿·¢Ã’¿·Ä¶©²Ìµµ¼¥Âµ§©±¼­¯¹µ»¤ª»­µ¾¨¸Ë¸¯¯³¶”Í´Á©§¯½¯°­ž®ª˜¸¶¼¹©Ä²¼¦Ï±°´¬µÁŸ£µ´Òº¬œµ–®¹¦¹Ã¹ ª©Ë§² ®›¬¶«°ÀϦ®´»²Ç¬À´ª½¨´¬­žÂȪ¸¸ž£¤‘³µ±·¬¬®¥Í§­½¹¨Ç¿­¹³µ¡Å´¹¨»¸‹®¥¿›Å±Â­°Ÿµ‘ÎÄÀÏʲµ®Æ·Ã¯Á®È¥µ¤Ç¸±¾²§«Ÿ¢­·Ý·¶ÊÔ®ËÙµ¡Âµ­¢ÑÅÇİڽ»¼²½Ä¯Æ¹™Ã½ÁÕ½âµÆÎ¨Î¨Õº§ÊÓÆ¹Ü©²˜µ·ÍݼïÀÂÁ½Á­ÇÓ§±´´ª·ÌÄ·°˜É¨ÍËÂŽ¾²°´Å³ÆÊÏÁ³ª­¾Ï¯µ²´Ã²»Ê¼Û¨²¶ºµ©ÕÌÖ´ ¼­¶³°Å̳ͮ¶À˵´«®Ô̯²Î©®³Ð¬¶º½®Ç·Æ¸ÉÍ̶²¾¼Ã°¬ ÂÊη¾««ÏзƤ­Ä¾¬´¯ ¶È¬¿¿±±Ò¯Ìͱ¾»Â²ª±Ó»±µ²£²È®¯¶¯¸¿®¾·ÄË´©¬¼Â»¬¾³ª °¼Ç¨À¾¼§£­Çŵ¬¿§´¯¬¿¶À¾®¬½¼µ°Á»·±¿À²¶ªÇ·Á¶À·±¢¶½˜»¼¯°­Á³¦«¾¨­Í¦ÉȰ¥¿Ÿ¹©»¹¸¥½É·½ºÀ­¯®³·Â£¿ººÄµ·³ÃÀ¶ÒËÂÀ¦´½·Ç¬¼®²³©°˜¾Ë±Åº·«·ºž´­ Ë©­¼¹¢«°Ä±¬Â®¢±Á½—»¬±¸³°²À𶲩«·n²¨”˰«±«³¯±´Ä”²Ï¸²¤»§¬š¢ÅÊ®¨˜µ»¾¿­ÁÌ¡¿©½° ¦µ±§Â­Ñ¬ÅͶ¬£²¬¦¤·´Ç¤²š¥Â¬´«Æ´Ì¸À¥Ã ¶•¹¹”¬±­«¬º§ÂÃÄ£§¦Ì–ƹ½ ¨Ã¿¥¢´¨Á®Ç¥Áº²°Ç¨¯±¤É ±ª¶¨¯¾¥½§°Ê¬£Â­ÇÁ¾±£®­¬¯£½Ê¬›°½³Â¸¿Äµ§œ¶š»Å·²¿º²ÁÕ±¸»ºÕ½º§§²Ë̶½ªÎËÐÆ¹ª²Ô½¶Â¨À¤ÇŘĶ¥Ê­®¾¤Õ³¦Ã𦥭±³»¾Ä²Ï©¬·Â³£©¨Ø¤˜ÊÀ½ÈɦË«À½­´²±µÃªÄè°›¸³´ŒÀª ¹½«¹¹Â·´À¹¾˜²¹µ¬»»µµ¿³§¬³Ç¶¬É·¾Á´¸¬»«Âœ¶Í«¦Ô ºÂ´Ï¶ªÉªÇ›³¶ºÅÑϧ¦«½¥¼µÀ·¿®ª»³ÑÈ¡³¾Ó–ª¿¡É¬»Ì½É¸¿¿¦Ã¼ÎÄ´®Ä«˜·µ³ Å©Ìº¼¶º µµ®¬´®ßÀº¯Ç¸É³´««Ä¨±ª¶¾¿°°º‡Á¾¼³¸µ¬¤É¾Á¥¬»³½µ¯Ä¦°¼¾ÆÐ¯´¬æŸµ³²ª¢¿ÉÁɲÑÑ¿©Æ¾Ç»°»¼Æ›ÅÀÈα­Ã®¿ÙɦµŸ±¶Ì¾ÖÄ¡À¹¹Ä½±»¾³²ÄÀȪ³´»¹®È¾Ã¸¸”ݶÞ«¾»ªº¶Ãı¼¦ºæª¯©®Õ®ª­º¿¶«ÉƿƬ¬¾Ä­Ä²©Òݳ©º±´ºÚ®¼¿¼¬Ä¹Â°¾¬Ä›³´·¼¿­Ä±¯Ã¾¨ÊÍ·¸¼°¯¶ÁÂű½±»º§Ç»¿Ÿ¼¼µ™¨¹²¯»°ÎÊ¥¯¸±°É÷̣»¨À±±µ½©»©°Ã©¸©·Á¢¨§¡°º®¥ÁȬº™›À­Ò£«®¿Á±¿ ¾Ä¸¥Á­´ÃÀ©·Â¨Á»°¸Ð¶¬¥ÎÊÃ«š¸µ¿³Ï®­¸Ã¦¾¦£¨¸§»ªº¶§¨¢°Íµ¦À §ÀÂ½Ž¥º²Æ³À»¢¬Æ‹·™»¸É²®³¦Ê±­ª¸¬Ä¯[º½¢®¼«“¤³§®§Å«¹·¡Ä¦¾°Â¡¦¡ªªw³ÄøµÁ­®«¾¦·¾³»¯Å²É¬·³¹©Á›µ Êž¿´¾É²¹¹Å¡Í²Ã¼¶Â¾À°À¸Ë½¸¥»¾¨³¹¾¥®¹É¾±¢ª¸¾ª·¯½ªºÇ¡Å¬«¸¡·½¡°Î»½Á»Á«¶¤Å󾼸µ»Èª¸´¼·µ¿·ž»Ç£À¨®Ÿ´²±Ä­«µÓªÁǶɧÀÄÁ¾È¹Æ³¾É°¾®Õ¾²°¬¤½±Ý©¯§¯²º’§»¹®º¸­µÈ¿©··ºÂ¿´Ñº½´´¢Ã»Ž¯»«½¸Ÿ¸¸­¹·³À¨˜­¯²¶ÇÁ¼ºµÅ¹¨¾ÈƬ¬©¨º¡•©²Ú·¼¾¶¦®Ëž«¾µ¥µ¡±Ä¯ÆË±È³¬À»¶Æ¯Ã½»Æ¡½¶ºÄ£²Ã¯ÊÀ¸¿¿­¬±Ç“¿©­À±®O°¯ËÌ¿­·¿¸ºÁ²™¦ºµ°»»»·¸º±°½¿¹¾»º´±º¶¨—°¼¼µ³¥µÇ¾¤»¶Äȯ¹®²±ÃÂÈ­Ê­´±¿´¯±¹¬¹¼¼Ð»¾¬¨¥­¹²³¸¨·¹¾Á­ª®¹»£¸´·¾¼ÅÏÀ¡·¥Ÿ©Ç½¬¤¸®¨¿Ï¡·½£¾°Ḛ̀Á±¯½¦±¥¿¸®¤º—º®¬»•Æ¥¶ž­È™µ³¢Í¶Ë°º¨½¼¨Á³™§£”¶±µÄ­·¿±¾¿©¨²³¡¯¢¤©·š®ÆÈ¡Ã½Å¡«É˪­°¯»³¼¶Ì ·´µ¥¦µ¯¥ˆª¢¬·™°¨µ¢¥©Â¯²¼³µ´ª¦ÁÊέ¼ª¬¥µ™°½¯­µÅ¹ºÊ¾µ»³¥Ä¯Å² ¹¥»¹–Á· ®Íº°º¡ÂÐÉ£¿¬¬¶™·­»»Ä« ²»¸®Ä³›ª©Á½œ¤¹­¹Á½Ã·¹º­¯½³À¥¸Â´´Ì¶Ã¨³¾¬¨Ï¿¼­¯©¶£¬²¸Í°½µ«·¤®§¦º·µ¿¸¦“ƴɲ¬Ì¶©»¶¾Å­§Ñ­Á«² «Ã–ư¢±²È¼¶ª‡Æ¼¼°¼¬¸¯ ´²­±¨ºªµ¡¨¬–­¥Ä¨ À³Ý¦¯ª³Á¿’µÍ¨­²¤¢ÏÇ–Æ´®²´´°¯¨¹»£ÉÊλշÀÌ²Â©ÇÆª¦Áœ­©¨©©³§µÒÇ ±Á¯·ºÃÁ¤Äœ¬ºËÁ¼À«°©¹¼µ­¤·¬®¾·Ã·Ã¯Ú½¼²Â¹ª¶Å³Â²µ«Í¶¡¼¿µ¸·´¯¸¸´¯­¸°±¼¾Á²±£Å¸¦¼¤¸±±»Ã È¢ªÃ­Ñ¸£´¾¼ ­¶½Ã¾¯Æ£º¿Á²¹Å€¶¹¬¶³£·¶·×¿Å±¹§°”¥³ª¿“¹¬¾¼±³´¤µ¬½ªÃ§»±Ì­¶¯©¢Ãº±«¸´ªº±²½¿¾Ëª²Á›µÀ°¿µ¶º¹¯¾²®·¬¢¿³°°®»©´·ÇÊß®¶Ê¨¼ª¯¡´Â™­´º°×½©³·È¬¬±±¥r³Õͬ¿À­¿”ª«€°¬¹Ä°½§©¾·®±§¯µ¢¸´£¬›§Â­®¹·Í±¾Ëɰʸž°¬³½¨¿ÂÁ³¹Æ½¨¶µÉžÄ´·¯Â³¸ÀŽÉÄ´¿ ¯Òï»»Íþ¤°¦¯²³¹¹¹·¸Í­«—¹¸§¿¡Â…°·ŸÅ¨ÀȰÈŶ´~¬Ÿ¸²´¼¶Ë¹·±¶Ö³´Êùº˜¬Æº·Ã̹°Î·Ã°Ç­Ê³·Õ³»Âµ·¯ÃÕ­·¿¾œ¦Ê»Â­¹¹¾¯¹Å½°‡¹³¼µ”«´»Æ¸¿²¥»®Á¹§«²µ¯Ï¡À±¯³Ãµ®¯§«¶ª»²ÊµÄ®Ï··½žÈ©­µ—¦µ°Ö¹Ïª¬½–˜ ·±Æ°¯p»¾Õ¥¤ËÅ·½¶Õ¸©Â»¨·¯³¿±Ë¬¨°±Õ¹³¹¯ÂºÅÓª¼ª¶È¨Î³´Ë«¯®¯Àº¸­»Åý¹À¢··Á²¶½¬¥Î™¬«ÃԲȽ¶Å °¾§«¯©µ¦§±Ä­¸ÂÁ»Äµ¸»À›Á±§µ¯»¼®Ã¼Ãœ¼—³©¾Ã¸¢¶¸°¼ÀÆ·¬´Äµ»¨¿©»¯½È¶Å¬´±®¾½Ê¸É¹Å¦¦ ¾º¹ÅÅ¿ÒÈÅÁµ¥°ÆÃ»Ê´¸³¢³«·²¤ Ä¬ÁÉ­¶ª¤² ¯T·¾¬Àœ¹µÀ¨©§Â°¼®¤¸¹½»¿°Ð«½•­ñÀµ¨²¿¸³®·³¨´¾¬µªµ¡Ë©Ãº±·³¨ªÙȼ¸¸´Ë¹´°°²˜©¢©¨Ÿµ¬¼´åµ»Æ·Ð¿¼¶ÐÌ“«´´³ª¨¸«ºÈµ´µ±¶µ|–¸¿¸¾¸»Á¾°½²´®¼¦Æ±ÕÁµ£´©¿ ¹[¼¦Í±®¸»ÃŶ±º¼¸É¬¾±À¤¶´¬ºž¹¬©¯¼ÁÁ¼º¹°ÀÙ¶¾ÇÅų²½Æ¾»Ã±Á¶¸ª°Ä¼»É¹Ò»£·¿ÄϵºÉŵ³Âª¿±Éú¬Ê¶ª²¼¸¯Ë’À·¸£Êº®“Ã̬­ÎǺ½°··®¨¤¹´¬¦­¾´¶¼»¬ÆÂ²¤²¥šÎ¦¼Î½¾·­³šÃ½È¼¦¨»¦º¸º¿Í²» ÁµÈ¦¢¾Å²ÇÁ½Ã¸µ±‡­Ò³­µãÉÇ·¸¾«Ü«½®­ÊƸªÂ±±¹¼¬Ç½¥¿¶ƒ½¯¥Â©³‘¾´ºº¦Á²½»º²Ã¥·³ª¯©½»¸È»·¼´À³Æ¾ÂÀ³¸Â·»´Æµ¾ª¶·¹Ã»¥®¥º°²¥Ã­¿°º¡«¤Å¯­±¾´£Å¯Ç¸´«­Ä£¶¶À¸»¸ÎÍ¡¿ÀšÃÁÀ¢Ë•Æ­À´ÄÐέ¡Ç²¸¹¶Æ¹Áȳ¸¿ªÅ¶È¾˜¬–Á·Æ­²Ç̵¹®«Â·®œ®›©§¼Ã®¿Á»Ô¬¬¨«×´¼¬ª««»®´¾¾×»¦¼Á±²²¿É´ºÂªÇÀ¼©·µ¥¶°­·®¾¸¨•¦±¶ÄÇÆ¦©ºÀÈ¿¢È—¥½§¢¦»ª½±ª¨À£­O«­É­¥¾Æ¸²¹£½¥¤±²±»È°¯»Ã¶µÄ·ºÁ·½Á°»©¾··®­Ä´³¨Ã·Ï·¹Ë±Ê³œº¸´¡¹ª´¾Ä¶¼Å·±½µ½¸œ¶»¯±®Ê®º§¡°­À®Íº«ºÄ͹¾±«­¹Ñ¦º­ž´²´ÈÁ°ÈÇ–´³ÔÁ¬°›·Ó¶¼§Ë´Âª³¶Û¦Æ·¨½µ²³´¿¼ÅÁÆÃ³ÂÍ­®½µµ±©Êһƾ¿³¿ÊÁÁÜɬ·È±Æ¸º™½¹¿¾¾±È°³·¨°¹À³ÅƸŭ«¤½¯ÁÀ¿¾±«¾Ï®°© ¯Æ¼Ë¸º§Â´Ð¶°±Æ±»¹£Ë²Éª¾°²½´¬Ô¥¯±°³³¿» ÄªšÃ»®Î¼Ø²°·À´Ð¯µ´Äǯ´·ÊÂÓÖ—«¶¯±½¹Á²ÃŶÀ°Àž˜À³|Á±¶ÁÁ´®À—˺¼Ò¶Ÿ½ÆË»®À½°©Š¹Ã¶¾¯¿Åª¼¼Ä±´»»À§¡¦¢­­Á´ªÀ½·²·ˆ´z½²¬»»³¶¤°·¼·»À°¸£½®ÉŒ¹«³¾½¸´§·¾«¶½¶ÊÁәȶ¸ÅÃ󰨿ǹ¾Éɺ¤¾¥²“ÀµÔ½°®¬À½Âµ¼´¦–­´ª­Á¸®¤ª­§Í±È£¢­™¬®®®®±°½°¶¤Ä½»œ²­µ±½Ä¸ª¸—¹¬Æºµ§Âº¹¾½¦¶¡¾Ãµ´›Ã™¯Ÿ¶Å½¾¶´¹§§¿£§²¨Â¼º¯²ºž°£¾²¶Æ®®³¦¶¥®¯Â¢¶²°¾­¬µµ¼À¦Ëµ´·¸³·¶¹¾¶©°®³™²«¸¶¹³©¬À³¯µ§ÆÀ¹Ä¾¥±²±´Ä»£ÂÆ®Ð͹¹¼½¸¹»«Ê¡»²º³££ÂŸ°± Æ®¿®«²¼½ÂĨ¤ª¼´ÄʲЦ§¸Â°­·º¸»³·ÄÂÃÃȬ°·›ÄËÀ¯ Àɽ¦±Ü«²±°Å­Ä¶´¨²¦ª¼´Ã¯¯´¢¯«£¶ª´®Á´¦Ï’¯°ŸœŸ¼E²­¯Ÿ´¹Çžº½©´½²¾³ªº´¼«ªŸœÁõ­¹ÁŸŸ©°¡±Æ¬³Ã«±®±Á™²¶ª¨´­Ñ²¸¾±¦§¢´ÀÁ¾¿¥½È©ž¬®ªŸ¥šÄµµ£®·µ½¦¹²±¼±·Äµ«´¶·‘¶È¯©»±³¹µ¹¿»ÅŹ»¹µ¬»Ñ”ÿ¯¼«¿²¼Ÿ·Äª¸°®Æ¶³³¾¤µÀ®¹»ª¸Æ“ν¨Æ¿Á¯»Á¶¼¡˜µ²«ºÂª¤²¬¹­«´ªº®Ð¨ªÁ··Ã·»¬¡¹¾®ÒžÅζĴ¼º½¼¾ÆÇ•¾È£³¿Ç¬Æ²¾È°ÉÈ£–·½’·Ÿ±²ÂÇ}¾É«°º¥³¼¤²±‘©Á¤p¶¿¶´¹·–¯±»®ªÅ¿ ºÇ¶›¢ÅÅ´­¶¥·½kº«Â²Ê³Íº¼Ä¾žÌÑ·³±µµÅ Í¾¨§®ÀººÆ¬¶©–¶³Ÿ«Â¿Ñ¶°°¿­Ç¹Æ´Š´²»©³ÀÊÀ¿½¦¶«¢­Ÿµ¥®ÁÃã¯ÇÇ­²¹Çµ³Ä¥«žÆ‰Ì°°©²À¬Ñ—¨¥°¸½ªÔæ½²¨µÀѼÆÔ³·ÊÆÅžÏ½¹ÆÃÇÈÀ¬ºÅŠÆ¿èÀ®©¶ŸÊ¡¶®°·´¦¾Ç¾¶®¿¶½¾­µº¦Á±ÑÀÁÃÐÁ¢¾½­¬¾¸¶À»´º¿À­Ð»¶¨·‰ÅÂÎÕ³ÆF¬¸²³¶À§ÏÁ²³¹Á¿½¼¶¼¢°£³Á¢¼µ§»ËÏËɹ±ž±±°ÁÁ´°Ð²¾´Á»´«µ¾·À°¦˜¹Íµ»µ É«À¶º«´±²¸­Ñ½ÑÂÀËϾ°¯Ã纭¼µ´¨¾¬«ÀÄ·Åʵ²Î¸¹À²°¾É¾©Çµ¡§Ð›Ù¬´¼¯©·º½Ÿ¹µ¶¾´Ë´¹ªÀº¶°®Á²³ÄÆÁ¯²½¶·º¿Â¼»¿¼µ¸Ã›¶®»²¼¶»¶ºº«¥­Â}»µ²Á¦´²¾´¼»½²®½¨¿¸Í¹Åµ¢Â¶Æ¶°¿»»°š¤Á±©¼ºÆÃ¬«§Åº¸Ç²Ãµ¾ªÁ·³ºªº¼­µ¯«µ³±±µ©³Ä´¾Ä¾±¼Á¹Ã²­µÃ³µ˜Ë¹©¢©Â·Á–¹¿»½©É°¯Ádz¯ºÁ̵īÂÀ»¤º³¬›ÊŸª±ÂÌÄ¢²À´£·¯Â‰Â·¬À¾¼©Ä˜¥ª¯Ç»Ç°³¹¬¦©©›·ª©ª»«¯¹Ä§ ©Î¸·²¯¯Ž´®¬±µœ¾°¢¬‘»µÀ¸­ºª¿¸Í½®¯ºÃ¼Å­Ìˬº°ÑÃÂË¿¾ÒÅÄô·¾µ¨¿½ÍÐÂ°ÄÆ¹½ÇÁÁ§©ÇÃʳÔÖÁÁ°Ð·ºÈ°ÇÏìÂÙ¸³¿ÅÅÄ­´º¼ÏÅ ÎÎØ½ª¨Æ´¦Ä²Ó԰¿¹Â¨½«£Â·¶›»¼­­ºÉ¸¾¢»¯ÌÌǾ¶²´¯ºª½®®ÃÆ·½³»­¸·²Îµ´Ð®½Å·©¸­º¡Æ°ÃÄו´Õ«»¸¼¸À³±´²¾¸º»ÁȱÑË·¢§Îס›Ï¾¼³Ð©À½Â¹º³¨ÈªÃËÅÎÈ­£§šßÈ©Á»«¨®­Â©©»Ñ¥Ó³§¯Í©·Ç²Ä±·§ªµÍ­À¾»Ç¹ÈÅʲ¾»Â²¹¾Á«¥Ç·²”²º¹Ç¿²¬œ¢ÂÁ¸ºÂ½³£¹µÌʾ±°º¸½©µ¨¾®ÑÂÇúÀ»Æ²©ÄÂ˵»½¾´ÃµÈ¤ºÂóɩ¿¤§¿¸Ç‹º¾Á´²²Ã¿··ºÆ¸Ç­¾º­´¬¯ÃËŠºÄȹ¼¼´º¸¸¢Ãª¹°­Å®ÇÁ´µº¯¼Ãȹ§®³¥»±´œ¡§Æ­¢¥¹¿Î­Ê½ººÈ¶‡¿Æ¯º®Á¬À›À¡Ê²¾ÈÆ­®·²×ÂǾëʰ»¬¾À¹Á¶ÊÀ¨Â´½¸ÎÁÁµÌϮɼ©¤§˜ÇÌ»»°À¦¾¡É–}½ÏļÇŵ¨­¼Å±É¼Ì²£ÁÔžµ´¢Ä¯Ä¬ºÂºˠ·¹ž·§¹•»Ä§»¥¹¾³¿µ¶´¹Ë¹Â­³Ë½¼¬»¸·¬´¸ººÄµ¡Á½½¤¶¾½«°¾³À¼¨Ç¶¬ª¾ÁÀ¸¹¥ž¹´¡±“¿¿¬·Ä°¦Æ²¦²¨°½ªÁ¾ª¬Ÿ±¥œÁÆ¢™Â£­œ¾¾³¢ª¡µ»Ÿ·¶ÅÀµ¾¯§®®¸³™¶¤·°ž½®«Â¦±§Áº°ÁÅ®¹·³ œ¾¤¿¶°³Æ§°¶¯³šŸ¢¤µ®­©³Ã«Ä¤¨­¥ÅȼÊÀÀ«¹Ö§´¯«Òµ«¿½¡°ÇÂĨ­Ê¸¢¯±µ²É­«­ª¥Ë¯´Ë°Á³°²½Ÿ¸µÂª»¸°Ÿ®´½¯¿ºšº©µ¬²º¸¨³¼±Ìź·³°›¿®³«±›¹ºÀ©¦ºÈ¾²±È¹Ñ»³Ã³Â·­¶Ÿ±Ñ¶¾¡·´Îµ¸¯®³¨À´²¼ÃªÒÆÎÍ©½²ª²¼Æ»Ç¾¸°³®ª±ÃƳ²·Á ·³µ¦µªš¹²¸ÌÆÂǺµÌ£¯µÃ˺¨¸Âª¿³¿À°¹¯¿Ì²¤™¯½µ²Àɽµ«­Ìªµ¹·¹Ë¸¨­´¬~•°·¹«¶³¬Õ¸Â›°­¼Â±˜ÀÂµš«¤±­¸¨¨Ä¯··±À®´·³Ã«³Á®É®¼Ë±¼¼³Ï­À±¨¨·¯¨§¹±¹©¾¯¡ž–œ±¤°Æ¾Ä·§¼¬´—È»º¯›ÁÊ´ª¿ œ«¬¬ ¸´¹ª¹µ¾³»É©·­¤¼Ê·«®´¹®Ë´¸·œ´½¶Ç»´·½¼¸µÁÈÁ»¹Ç¸¾¿¾µ½·´ªº©£¶»»Æ©·¿»§¯³ÐºÂȼ³½Ä²¥žÄ¸Ÿ¿§±¿Âº··©º½Á½¨Ã³Åµ¼¼¡Á®§¥®ÅÏÒµ¯²Ê·´Áº±´°»ÒÇ޺ǫ°¡³µµ´¿Õ®Ç«—¹¹·»°¼¸¬½º¼Ì¤³¸µÌ©”ÄÅÁºÊ¢.­ª–¯±Ÿ˜­Å°¡­Â­³«¿²Ÿ¯µÎ±­Å±Å¶È°¶£À«®Ô»›«¤°µ§¼¶º³¸Â¡¨­»°¯°³¡¹—À´©¢ªµ¼Æ±Á§ÃÁÁµº¨ä¾ÅÙÒ´³Ñª£¼¹¹¿¾Äɭѩʱ½Â´ÄË­¼¶·Ë¾¼Ä¿§Ä¼ÕÅ—Âû³Â±·¬ÁÁ½ÆÓÕ­¯²°¼É«¿¨Ã;¾Õ¥Ã§ÐµÍ°³Â¥ÌË—µº¿Í¼Ãȯ§®¾Ê¾ÆÂĶ´ÍÓ̫ȶ Æ±¤½Ä¶¾½«Ç²¹Á«Ë½¢³ØÉͯ£Å˺¢½¤ÊÙÇÜ©¨¡¯µª¾¹¾¼¸½À«Ð·§¨ªª·«µµµÈާ±¼Â˩ަ®·³¾Ò¾Á¨¯×¥²¹® Â¦³Àϼ¯Æ§¹³ÉÁ­ËÍÀ¸Ù­°ÛÇÀ©¾¬Áª©´Ó±¿­Â¹ÂÎǶÏܽ²µ¿ª¸´§Å«Ã´¬³¾¬ÊÄÀ¶°¼°½«Æ¥™¶–ª¹µ²¢¼¼¾¼Å´¹³¸ÁǫˬÄ­±¿»¸°Â·¶£¾´©»¥Àª¯´ ¾­¹¸¼½Â½¤•¶·¾›··¶·“°½œÅ¹ÁͲ°Ã²©²Àº´¯­³±ª¨·¶¿Å¼¹¿²²Èóœ¡À©´½½ÂÁ¯´¿®¿´·¹¨¯Çµ´¥¶¦²±Ä¸¤¾»¼»‚½Œ·Æ¸¾­Ì²¢¹§È°®µ´ÉÀ¹¯¼º¸³§¤¸¨°¼¿²±¿ÃÀ¾©µ²½­²®¨¾¤¹¸¿Q¼®É±µÐݪ¼¸r¾µÁŸ·­Ã¯¥¿Ø²³¿À²Ï§š´“¬²Ã饻®´»²§¢À¬ÁÀÀ±º¶®§³¯·¹·¶¸¼´¾»¢¢¬·¶¢¹¤Ê¨¿ÆÂÁ½¦¥«Ä¬±¶±·¸º¨Á¬¥»¼¬ÀªŸ¼º§··«·Óα½ÌÁº¸µ¯µÍ¹±¾™­»°Ä– Ã»™­È»Ì˜¬É§ Õ¼Õ׸±º¹Ê¸ºÁ«º¥³³É…·µµ©¿¬»¾®Æ¯¥¼²¯ÄոׯǺ¬µÃ±´»ÍڬϹ¿£Ä±³º§Ö¯²»¥ÁÄ¢ª¬±¦Ç³±¼¦·°±¾ÇË£¬µ¸sΙ§Ê­¹´¤°Ÿ™§®­¨×±«½¬¤¹£Ü¾´¹·Å·Ã¤Ê¶–¬¯©°¼¶¯ª²«²²²ºÁ»¯É§«±¾¯¯¼º¹¸¼ÁÇľ ´È¹©Ê«©Ó¹ζÁš›º¬½œÁŸ¶±ÅÅ ¦¯Ï²¶œ³Â¾¿¶‡µ°«§´¾Å½µº¯´´›§®°¯¯©¼½¾Àª³° ¿¸½µ®±¼ºÊ¬ÊÇÁóͲ¤¤³¯³¬¸µ¬°°·¾½«¿º·¼¸¯´¶¼««¿¾»ï¿°¨¯³Â²¬®¸«ÃÊÀ·»¸ÊºÂ¯²ÉÁœ¬Â¯Âº¿¶°³Ã¬¼·À¹Ãº´Ä´¨»Ã­¥«¿•¥‰³Á¤Æ¬··°¿¨¬¹À·´À±¢¿¦Àµ½¬§©­µ¼ºÉÁ²¯±«§¾¯¹¥¹™¹Ä´·Å¬RÅÒµ¯²´­«Á¹·²¶’­Í•¥º§³Ç°·®¶»¶¶Æ¯Ç£ª¢¥ž®ÀªÁÀº¿´´Ä­½ªÆ«¿¯»®Í½¸Êµ­·®¸§º¾³Ã沈»£¹¶³ÁÍÆÏ»ÅÀÊÁ¸È̲̾IJ¼È»Ä»ªÌĿͺʽ´ÂÀœÍÀ²¾­ª½ÊºÀ½²³À´µ¸Í˜Á®Ã²»¾¬²¿¿Ì°Ìº³µ¹ÌµÌ͵­ºÏ¹ÒÔȶ©´ª®°žË¿ÀÈ›׶«¶Â«©³¶Ç³’º¦À´°£Ž¼²±Ò¬«¼£³³½¹²À»Â²Âž¶Ä®¬°³©§Ä½¼²µržÀѱʷ«Î¹¤§Ä°±¤ÎÄɬ¦ÒÇ©˜±«Á´£Åê¨ÃÁ»§É¯¿¢Ë¡¼¼£¿²«§½´Í·¸Ã¼­š¿¯œ¸ÁÄÀ­µ®¸Ø¦ªÁÂÅÁÆÈ¶º¾Êœ·—¼‹»Àº¾±¹µÊÔÀ¼Ë®¿Á¹«¾¨Ä±¿··¯¶¼ÃÁʽÀ¹¹Ž±·¶±–±Æ¤¼¡´·«¾ Ã¸¼©Å°¬¾¥°¹ÑµÈ¥ÀÏ˸¢Î´½¨µ©«¶º·ªÅ²È¾µ¶µÉ©·ÇœÌÁ›Ã²³Â˳·»¶²·¨º´©Á¼¯·Â¿×š´«³Ëªµ±É£Àµ¬š°¼¶±¯»­Å»Á½±­£Å¾¶ªª·È»³¶·²Ô¶§¶´š­©±¤­œ²©ž¢µÀΰ±Ãdz¢œÅÇÀ§¬µ¥®ªÀ§¸°´±¥¼Ã«±ª¾±Â¤¯²À··®Ñ¯±¶±µ‘¹µÂ鿺­§¦¢½»¬Éz«³Î¦“¾µ±šÀƺ¡ £Ã²µ¶Àƹ®»°»Å¸­­®¼Ñæ·±ºÈ²¶µÁ¡­²½ÈÍ²Ůª¯»¾Ç©°¨Ä»Ê½®¯¯º£²´ÃŸ¼º°¾¬µ¶Å¬È±¿½„µwš±¯ÅÅ»«½±»³Ä²¥´¦¸«µº¹»·­®«Ã»Á¬º­±À°¸Â¸²¨™¨©²Ì¡³º³µ³±²·ŸÆÂ«£¢¸Ã¢¶»µ§¶½¿ Ã»¥°²ÂʺŸž½±µ²¿Ì³ª®Â¥«½¨»¿¼¥©Æ¿¥Â·¯°”±Ç¤ÂÁ¢½­²½²´±¶«»³ºÆ¼Ã´Ä¶¦¾¤³ÆÇʬ®²¾­Ê¸¯–¯Ç¢¹¸¶ ­¡Å»›º«¥“û•¬Ü´¦³¸½±­¸·¸ÂÅĸɱ¹°ª«¸o´±¸»Â·¾ÃªÙÃÃØ­´»Àµ®­ÄּƺǴ¼ÄÆÄ°¿²º±¬ƒ¾¦»¿¬©¸ÇÈξ¢¯£‰¸©šÐº¸¹°ºÇ˸±ª°µ¡®¯³˜º¹§½¸¼È›¾¸£¬Û±¸·Ä²·ªÂܦ¼¡¬­¬º¦£±¹Ç¶´¡Á¼®’«¤´­´»»¦¢¤¨­»½«®·«¬«Ã¶¯ž·¨«½Íš¨¸²ÊÓ²¦›Æ•»˜Ÿ¹¼·¢¬¦À²ÏŤ¼µ¶Ê©­¢´¹½žµÅ¨ §ª¾š«ÁÍ¯Ž­µÍÍг¹Æ­É—¥µÂ¥–±µ±ª¾¸®—»Å¯¨ ¼Çʬ·´¸ž½¡¦µÝ¯¯¾Þ¸¶°¸¥©Â§²º¶§Òµ¢¯¤›³®Íž¬µ³Á½¦º®À»¡§»¯¾¸Å´Ó«Ã´¢»±°À¶¾³¨£²¦¶»´ºÁ¦¤ºÄƾ¶²¼³²´²·¹‡À˜¹y´³À›«¡­¬¦½ÌÁÆ›¡¬ö·c¦³º´Ñ¸²°¢²«–ž¼±¿Ò¾ÄÌϱ½­¼¼¨¸Ñ°¬©¯¤© ©À§·¥­¶®ªª³®Ç¬± ´œ¬¯­¬±¹±¦¬«ž·°Ê¬×²­²Ì¥’Ÿ«¥­¸°¢¯¯¼ª¨±¬¡¤°´¤²²¯©©¸Ÿº¨Â¾¦Äǰ¬©®Ã›™¡®§¹¡´¸°¶¯·³É¼°¦µ¬™±¹®·ª°Î­¶°­¯Ä²½Âdz£±©µŸ°®È½Äµ´°»®¼´Ã±¸Ë·žÃ¶¸«´¨¼Å¸¹Â¬¶¹œ¼»ººÁͼ«Æ¼­Æ­µ¹»§Ãº³Ó´±¾´ÁË«´¸ªµ·®¯·Á¹À±Á»°Â ª®º¯°µ¶Ä«³ª˜©±Æ§²ÊȻδ·¸´Çªµ½¬±µ±¯¯®§¥µ¾¶Ç¯±ª  ¨·¦¶¾Ÿ´»°¤Åª•­­¤ž°Ì¦¢œ”Ù¦–Ì«À¦¢¶¨¦§®²«£°·°¦ÔÌ©•¬¿¡´®Œ®±¶³ž½¹•ÀŤĬ§Æº£±¦µ»²ž¢¾›³µ¼ªª´¬¥£º«­˜¬½Ä¼½°´¯Æ”¼Ã½¸Ÿ©¦½»‡¿ª¹µ«Á»´¿Å²º²¿©Å¿™²­«Á³²ÃªÇ¶¬¼¸¼­²Ã¥«¼¨¥Åµ±±Á˴ƬÁÁ¬­Å¨³¹¼¼¤´²»´½·™·¿º»¹²»½Æ¸µ¶¯Â¨›¶ÅÄ©»¶³¾°¨›´±±´®´º§¸»Á½²­Ê´®¿¢¶¬º´¹ÉÀ¾½ªËÇ»¸¹´µ³»Ì½®½Ë³®³”²³©¾±¥»¿¨Á ª¿º´‰¯²´£µ¬¯§º»°•¡ž®›·³Àѱ¯¶½ªº££µ­µ›¼¨²Á§¹ª¶½¥½¯³Å¿¸¦¨·¶®¯˜­¯¹±¸¸¶¼³ª³·¶°±¥²Ë­Â¤º¢°ÑǹÂÁ¬¯sÔ¶»¶¹’±Â«¹£«Å­Áš½¼¿ÃÀ¼·¶¯¿¸¼º¶ÑºÂº³Ã¼²¹¾«Ê¯¯¸¾ÅÇÅÈä··¹Ä±¬¤»ÕƧ£Á¬©±¾º©¼ÁÍ®¾Â²¶¶½È´°Õ¶¹¥²µÍ¤¹–ƽ®½·¸ž¾³Â±¾¶¸®¦¶¨°Ê¡¼¯¸Àª¯©¬À¸¿¥µ·Å¹±º£Ä°°°µ·¹¿­œÂ ºÓ®©©‹³¬»±¸Å©¨¬¿¾©¡˜•µÀ¡¡¦«ÂͰ«¾µ¿¡ ³·»­¶£­°ÊŪ´¶³µ±º½©³¾®Âº°´›—¨¹º¥·¾¯«¹­«Á½®¿«¬¥ª¾¤³½µ¾¥µš¬³º´°´¯¨¸¹³¡½¦Ë­Ÿ­—µ·Á«œ°Í¬Á¿·¹¼¹«ÈÆÂ¬­µ·Ä ¿¾¤¯›¬Ò´ºÄµ˜“¾Å¯º²Ë¶¬Ì§¶Ò´±²¼·¾Æ©É·½¥´¿½›¿¾¹Ç®Ç±Ç±¹¾µÁÀ¸¸®©‡À±¹»¯°¾Á±³¹¼¶±¹Í²Â¾®®¿Á´Æ°½ª¸Ã¦··Ç¾Ì¿²ºÅƣŽȨź°­‘•º²Á«²“¦«»®”ŰѴ¬®¹–ÁÄ®¥¶t¸Ãº±Å›¿¿µ²¤È² ¢µºÉŸ¡º¹¶¸¾©Ã»° Äu‘µ´°±¨²²Á˜Å·¯½³»Ä¼Û³³º°¬±Ä¿ŸÉ½¶¤Åº´´µ»¬¥±ÀÇ«¶»®ÈÇ³š·°š¤Ç¬¿ªª¿Èݹ§½¶Ê®«£´¯ÍÁÄ¿¹²½½œ²ÁÌÂÁɬ·žº˜¶¾ÄÀ­©·Â²µ¿Ï°œ°À¬À½¯¿»µ¦Å«¥²»º³˜ª²©©¼¯·Ä¹¸­tÆÂ‚Åǵ¼°ª³ŽÃ¸¾°Ó¿Â¹¶½¶™®Ì°¾¼ºª±²¶²¤±±£¼±ÀÂ¥¿¹¼¬ÂšÂÁË´¯°¸½´¿Á²µ¯Èq¿¼Å³ÅÀ¾¯Á·Ä¦©·­¡Àž´®³Ä´¦¹´³½®§Ê³Ì¥·¢¾¿»±³¸¾Ï§Æ¿­ÆºÀ¹°Éü´¿Ä«¼ ¸¼¯Á»¼ª»³Ð©§µË¬´±ÑÆÎµ¾±°Á­œ·È¸º¾³œ£¶¾¦ÆÀ´ºÄ¼³³½µ¶½ª·¹±º¿±«±»°²ÁºÈ‰›¾Ê§²®Ê´ÀΞ¹µÇÈÍ­®«ªÍž¹·ÃŹÎÑӢɒÔ̷νº·¶µ™±Ä±±ÂÂî§Í²Ä˜Æ¥®Ü·ÍÏ—¹ÕÈÒ¾»ØÄ¿¾Â¯ÇžÏ½ ¤È¤»¹™ÑÀ»ÍÈ­¼»ªÑ®ºœ¿½Ö˜Œ¯ÆÁ³¯¶ºÆÆØ ´«¼ÉÅÇũʹ¯Á´½§Ë°®Í¿Ò¤ÆÌ¸ª·«Ÿ¼È¾³Ä§£½¿­°½·¼¦ÔÓ²ÍÏÇ·¹ÈÉÈ«¨É¢»Å¼Ë¡Ä¼¾±°¹½°Á³²¨·Õª¿»¼¬Â®¥º¼¯ÁÆ»·È¦Â¶·³¬§½¢»«½ÀÅÇÂÈÆ¿Âª±Ê;À¸À±Ì¹Ô»³¹Ä¿º³¶Æ¾¿¶Â¿¦º¹¯»¹Í¹¡²«¾’´¨²»¸ª´¸Î±´½ÂŸ¹±É¿¹Ì¹¾«º´¾¹£«¸¼¦¯Éʵª½»½¼¾½¹º¨»´¸À®«Ä±Ç¸¼¾ÂÁœ±Å±®¶³¤ª§°½ÆºÄªÀÁŸ°¥³¼°Í¶¾³¶¹¿Ã½Á¨µ™Àº²¬±»ºµ¥¹Æ´«œ ²´¹´¼·°«Å´§œ²—¬˜²º¡ÄÇ´ªªÁ¾Á­½Ž³¹¨«¼¥«´ÉÀ¹ ¸·Å¼²ºÅ­Ë§§½¼¿Â‹Å¼Á­½§·ª··Ë¸®²¬¥¡¿ª»ž²®±«Í°µ¼ª¦™µ°­¸¬¨´¯¼Á§½²¼» ²·¬Ê¢¯Áµ·˜Â£¬¿Â¾Ÿ¼ªÆ²¸¿¶¯ºÂ³«Ê²Ã¿¶²º»¾Ö´ÂÁ°¢º´´Ãº«¼ÈŸ·ÅËÈ·»²°¿ÉžƓ¹¾¼ÄÍÏÁ»¹È»ÁÁ¶Ïˡʺ´µ´º×ž±Ÿ°Æ¼ÄÁßÇȾÀ¾¾©¶²½¤ÊÆÃÈÔ½ÉțǮÔӪζ¿ÃµÎ¿®²µÉ©ÄÂÆ¬¹ªª¶¾°¼Á•¬ÃÐîƷ¹Å·Ñ¦Ã¬Â¸¯¶·¯­È²Øº·¿®ÂЩ§ÁÝų½«««Ð­Ï¿Õ±¾É¨Ä¿ÑÆÁ¯Ú¾ÍÀ¿ÍÃϾ¢³Ð¹×°µ£Ú·É°Ë¶žÐë¯ÕÐÀ³¶Ì¸º¤º»´¿Âµ·Ç³ËÀ»È¬¼®¿°Ã¨Í¨±°ÀÛ¶µµ·¯É¯Ì·¼±´¾Æ¼¯¯­Ì»·¨Æ¥ÀÀÆÀ¦¯ª½”¸§«§Ë½Á©²ÅµÀ¿»¾»¯Ê´šÄ½Â̳ʰ¹É´¿«®ºº½²Éµ»À¢°»©£¬«Ä¿Ã¸¼¸­ÉȽ©«À»´Ì¼ÇÀ¿Ì»¿Í¸¢Á±Èߨ§ÎµÈ¶·²Å²²¶ª¾Íâ³¾º²¬´º¿¿–°Á«¼žÒ­±­·µ´«¦² ØÃ­£Á´¤·²Ï½ÄÓÁ«¦¦¬ºÅ©¯±‘¬’¦¹¹ÆŽÊʲ¸¨Ó°´¸Ð²­¾Ò±·»Ã³±Ù´»·³³Á¶»³Ã­ŒÄ¼¯É½©ÅÅþ§À°¶¬Í±¹´¿¼Ï¾·¢¨³Å¦®ªªÉ·¸·Ç³µµ·²Ä¸–¶´Âɹľ¹Ï¶Á¶¯À·™Â¼®ÆŸ³ÀéºÀ²¸¼ªÔ¿»¶ÅÈIJ¶®»°¤¯¹½³¯¼¹À½¦ÁµË¸Ç·È¶ºšÁ¶·À¯Á¾ºÈÁ¹¼ËîȜ¸ÍªÎ¸¶Ç¾¨¯µ©®ÈĽʹº¾¼ºÄ¦±»Ä½·¨¸¹¶z°¯¿¦©¹½ª¢¼­Éµ³À¶¶£Æ¸®—³²¸±²¼Ã´¶¦Âе¢¶­¦¯Ÿ½º³¬©¶È´¨²£±¹·°µ¯¨Â½°«´¼ ²¾Â²Œ¯Á®¿½Ë¹´¶¤Ä´½¶¥žÆÔ¾±¿°ºŸ¨¾½·²¨°Å£¡¼¨©¤°²Ç«¸Ð½ž¼˜· ¯¥£®Æ¸·´´¶Åʹ²¬½¾¦¯¿À»´¾Åª¯§±Çµ¨ºÀ¹¯Îµ²¸²¤µ·ÁÇ˼•º¤±À¤±¦­¬¹«³»¶´¸¦¿Æ°º±¢¾·²»´¶¹É²«±«´Ã°Ê¡½£ÀǹÇ̨µ£¶¼ÈΩ°›¯¯³¨°¾Áþ’µÈµº®´ª´®µÆÃ»£¸¹À´Äµ²µµŸ±¼¯˜¦Ä§Æº­³¼Š§À¬¹¸·ËÅ£µ¼¯±Ä«»´°¯¥©°¥¶Â«±¸±±Â±­¸¹²¼¶³ÄÈ·©ºÊ¶®š½±Á̶ »«½±«–´¹±¹•°É¥·¾¶¶Ä¦¸º¡»Å¥Ä¯À§Á­¶²´¹–¿Æ¥·´¼ÂÉ­¯«žÌ·¼ª¾¨Å¬Ì°Ã½ÁÀ©Ë®³¾¸º¯¾ªÈ»Éʨ¼¾¶º±ª¾¦¹ÊÄÑ«»À¾ÅÌœÔÑ»ÊÆ±¼°¸¾Çº¼Ã«¿°¼Û¬Áº¾Ñ¹½Â¯¡§©Ê¬¼Ë°¾¹¿¾ËIJ§Ö¬¼ÆÁ¹Ê´É·œÄ§Ñ¸¬§ÍÊ¿ª§ÂÕîÀŸÄàÆÑ«°­­»®¶Å¿Â¡¬¥µÄ¬ªË§œ¢£¹ÆÄɶ¡ª¯»²É¨Ö³À½Ä³¨Ð¨±´Í­®Ô¸³°§³ÆË™¹×­»«ÊÈ…«Ð°¼²¿¶¶ÇÌʫźÁ© ¹ÄºÝ°®¦¸ÐΟáƽÁ¦¶¥±¾³Þ³ªµÊ±ÉÖµ¼±È«¾°Æ¤¾¸¡­É®®¯½Å®Â¹Ç°¤©½¹®°­Î¿ÁÏÓµ½¦ÏË·±¸°¾Ç¼²µŸ¼®É­¿¾¶«¬¼“µÌ­¹¬Á¤¸©¸«­¨½º·Ã®®±Â¯³°«¶·¹¹·°²¸¾¯¨¬½Å°­Í»½®¶¯¾³¸¦±ÀŶº¾Ãö²¼Ê¹Ã®½Â©¯¹ŸÊ¬·ªÁ²®¿¶·È¯Ç¥¸º¼¡ŸË®—³Á£´³À·ªÅœ¸¹²³¼©Á¯¨Ÿ©§²¬ª£™¶¦¨²È¸§Ì²¼Õ®Â´É³Ê½»·®—ΦÁ¸®´µ³ÈÂÇĤµ´£À±»—¶¹Â¶ÑÁÁËÀŸ¯µ±¬¦¹°»›®©¬¢½¥Â¿¹°Ÿ¹Í Ç¨Ëº¬Â¼Ù©·»¼·¯º²º½§»¹¯¤°´²Æ±Á»´¶¨Åµ¿´¹²Á®Ê¶Í®³Î°²¦£´Æ¹¼¾½½±³®µ¬´Â¯¼²½¹½¶»Â»žÆ±¤°·½º©Á´ºÎ»¬ºÇ¶Ã®¾·²¾ÃÕªÓÏ£¼Á¤·®¸›¹³Æ´¾Á°¯±¬žÂ½Â³Âð­Ë¥ÄÖ°·¥·°­Ÿ¡¹¬½¼® ª§«®³º°¾»Ê®¤Æ¸¥«¥ºÃ¹ÅªÅ¯²•³¸«¹©½Ãµ½¸¬ÓÒ·¹¤À›¥¹¬¼Æ©Ç­¨ž»¶¼¤É®°»·¦³Ï´Ñ¶¹¸¢Ã¬&¹ÈÃÁÙÒªÂ}±£¤³²²¯»³³Ë¯§®½²°ºÌ¾Âª¾µÈ禽©­ÂÎÃÁº·Ç½Æ¶­³¶®°¶³¾Â¼±±±´¸»±º´½œ¹ÄÀ¯ºÎ°ª¸²°Â¶ÈÈÃÁ¸Æ¶³«®µÅÉÁÿ§¼¿Çµ±¸Ç·¼±Å«³³ †µ¨·¹¬½«¾µÉ²´°Á¼¬¥œ¯¥§¼Ñº¾Â°±½¯¸³ºÂ¥½¹È¸¬ ¢®ž™»®µÂ³»ª¸¤·¼¯½¶§§§°²Æª±°³¢¹´»¿®•¶²Ÿ«ÈÌиº«Á¸¸Ë·Ã²¤µ¼¨º±´»—²¢”±±´¸µÊ¸Åµ¶­®¼˜·›Å¶¶ÉÒª¡¹ª¯¥ªž¥À¹’¤»¹Â–³ªº“¥±¨¬³³‘²¾§µ´¿Ã¯È¸¾©¯É­©º¥¦£±º¤œÈ®¬¶¶½Â«ºµ¸±·¹µÃªºÀ¶¢¹¹¯®½»¸ÄÀ¨ÅµªÅ²©©œ·Å¬Â¤½¾³»£Å¸µº«¹¯¯©žÈ¹²²·´Ä·Éº¤®¶½¢­ºË§È©´²­±Ã°²¸À®´¡™Ëµ¶À®ÄĨ»½Ò©½¥¸Á²ÀÀ¸Ã¶©¢¯¥µ»ÂÈ¿·®´¹Â»±È°°±­¦´¢¯´¼Í¦¶¹²½¢Ê¶¬Ìî’£³¬ÃƬ«²¶§²´©¸³¨Ä¬’¤ÀųԹ¡·È¥¨À½¤¬´ÆÄµÍ²¯²·Á¡¾·Ò»°ªÀ´²ÍÓÓ·£»º¢Œ´¾¶`¯¬´À«¤³ÅŠ¢ÏɳžÈ¸µš®­¯´¿¼¬½ª±¹¥Í¤³©É¼Ê‹»Åѹ²¾µÄ¸™³Ÿ¹¿½«Ã¥»¼²¬¿À¶²ÔËÇ¢¨•ؼ°Ä¥Âª¢¸°»Â§ÄºÅ¨­¤ÃÁ·¿­Æ«ªÉ©·­›¿¾ÈÒª±¯ÊαÎÁº¹Æ¯¥Á»ÇÄ¥¬ÊËȼ½²½®ÈØÂʦ̻½£™®Ì±£¸«À©Ö¸²¡«Æ»»Ê¯¹‘·½Â© ¬É¨·ºÈ̯Ӹ¾³¹±¦¾Æ½Âº¸»¯ÆÁ¡¸ÕԵϸϹ³ÀÌͲIJº¡Ìº°È½Ô©¾Åѵ§ÆÁ§ÏÁ²ªµÃ©Û±¿Ãº°½Ä¿¼¸È´°Á²»¯ºÃÃËÒ½½¶Î¸¼ÓȺм¼¶ÀÃÀʰÅɸÁ¶¶¥±¿ºººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººººº¸É¹»´Â¬ˆ•§z딫ϣ™ŒÇ¶«ž§ž ~È»½š®Ìª—²¸Àʲ­› Š¿ Ê¥Å­šª°‹Ò’»¢¢ž¢Ç¨Ä±‹±§°5|›…¶¦–¦Óܯ—µ¾¤¶Šð¨†Â ÍÆÐ³H¤©Ê¡Áž‰º{Ÿ½ÇŒÒ«ÍÁ̯¦ž·ßwIJ¨”É—˜\‘\]‘ZG8^b'fefBLe‹lFc/K}+\k—SZQn©M8/BµosÂ3nª‹7DYtv“i¦Ae4eSêa}uxÃkS²ÅŽ7ºkUl8—>Ù‰\D²:çAn:ÔE@F>ˆ’ ŸJ—Ⱥ`ÊAf6{kôJEÖQÈM˜c.'WopÝNFSax?2?M«AX;Rtc@í5YIj‘}qleKanV ¡]ƒ]“‰x‡tˆ‚t\zSU¡yšФP~gsvn‘kpS¢a†ªT\­¤x…ts’z‚š‡“zo}kœ}‘|€Š}™dpcXmrp\q…“›wŸ vgªs€‡†‹”Vs}rub]ƒ‰up^h^ioœŒi…_tkz•žvšo‘tmœ€ƒwldn†x„gŒ{ey’}{k}ƒzi}c”¦Œlƒ†“jŠ…‹}„‡~~p‰‚~Œckrk‘ƒtŽd“……aŒxav„’’ƒ„n™vš€Ž˜m…o‰‡‰qz¦ry€z¯~ts˜hŽ}‘—XeŒfuiŒ€†s}„Žstv^kt‘¸Žp_ž—nx}~…y´p…€€†‰cŽstf‡°v††tzŽs~£xr½Ÿh‚~‡i†op|‡‘[€ƒjhxŒ’’‚Zi„†c„k¨|{|efmŠ‚ƒ^’ºg“‡§z_V˜h\v†^’m‘vf[”HyZM`{w“n|ˆ‘‰±z…Kš¤ynr]vµ˜Œgp’”•~Ew†vvY”‘…„v˜GsŒb‡§ˆšjq}y‹‹l•bˆuGc™\œ|Œ—o¿¨˜by{~´—”pr‘’fs“‹tg…q€pŒuu}}_Ô°kÁl{ž™NI–„†…|}l¡Ž‰“t{|‹œjiŠgSo‡_v‚vl« ‘bt¡tuk‡•šqŒom“j x†u‹m~¤fz‹yf}hu‡}™u…rœruU„g“s‚‡Ÿ€~g¢trªƒ¢—eŒ…’Žgt]V`•š§„„uw†nz‰b•—rŒgtgfe‘t™‹„•y«‹Ž ˆBx{”o•a•šŽ€|y]{™¹´vc|¢fs’y‰¬c—{žh–…„o†”’‚–cŸj†‰’z‚ˆ‰tlŸu}q‚–WŸinŒ‡Œ‘•uŒxvŠoŒš“im{‹š„ƒe}–yrr¨u˜ws„t–Ÿš‹`x—“|Yƒ|~}[yq‘|k€z‚‰i€kXt]‘kzw\¡}o‚ƒ‚–Y‚lc|„†ƒw_¦^‹—Xrq€R”idu”Ÿ‚…ˆº‹‘€o`uj™bM{{“xœx†”etˆz€ŒXpwa}ƒ¬ˆw†~e”}zŽj™m|sSu•‡ºxvg…ff~^{†o§cqˆ‘tth‡r†ŒW|eŒž~‰zjq…€ill†vŒ…ƒjvn’ˆThm†qxZˆ£‹…]—xŠ„žwj†Z‡iQ[Š–yfbq„”~jŒvq‹˜l•yœ`xb‹vXŒk[ˆ|{cƒ|{ž–o˜afz®r~{EŒ}}{¤šŽ`”­o…h†{o«T˜‚tŠwYekeY‚ˆŒn}z‹hƒjZtˆ‚myŠ—Ÿtdxˆ‚ƒŒTZ~“u~Œž{Œ­•h}}‘y~‚ƒg†ºyˆy¤dŠ—…“emw‚p‹†|›”u¢rtа€ ‹ƒhenws—kuƒf|x’iy‹„–•¢y€ˆ}m‚ˆo‹w’¨y‡ˆxyw‚yq‘„……„yupVz]nq©Œ¢}b^‹_£W\rryŒgˆ‰|‚tsy¨y‰j}oŒkŒˆw_v€nlo·…œ…ƒ^€Im‘ކv‚‘jŒšg†Šy}|ˆw„†}}h{”´´ŒŽyt—Qriš¦z†‚‹}‰ŒŠ¦‘o šŒxg™ˆŒƒ‚’ˆŒv‚{‹z|k™‚vr“˜‹kx„’pmuuy|hˆg}v‚”’|‡zpzlvr¦m•^›ƒ‹Š‰ˆqxtxidtލ‘fŒ¢”Š–hu‰c}ovodŠ™£[¿’lc‚fw…b‹¤‚lЇxqxv”z‡”ˆgœ” †wLolvz„k~‡x˜{|€€x††‘£‰p}”Œ|p}Š}œ€}„brchŠmoy£ŒŒj–¦Œ…‡‚„†ƒ•{zq†‹‡“„tq‘z‡–Œ‚}s‰œƒinrŠe†z°Šv±†¥{‘p€e…ŽOxŽ{€£¤¥oŠyˆ¡Ž—]†aœˆŽ¥‹•S{oaY–‰jO‡™a˜–gœž}dPˆe„Yo”v†œ“­”¿o„o‘e˜„zy—‘“¦g¾V©Tp|dl_Žbdy€”»…—j]š« ƒ}Yj‹‹¦a¡„‘ŽŽŽ‚^Ÿl…Ž]ry|•[Nx•Šnwvtr_Xs{’{i˜ŽU†mm…wrˆ¨‡~{zX—oQ‹BŸ·U”—›Š€vfUw‹ Msm@’{z…lmU_p•›†A˜}€~k•h†„…«•c–z®„Bz‰€xº„ƒe¦¦x‡¦RxŽ˜ª‚ƒ‚l””wr{uލp‘ˆ¨uwˆXŽ j‚ž™zvŒ˜os^€ †Œ˜„ˆš‰m•”n†Žœk“€wxiYsƒu†–i~‘‰‚¯mp™‹—žv’xlN€y{…v{—€™j¤„o‰„……€cœql|u_ˆ‘wœ}Št€†£Gœfƒ‹pmN{‡‰›“ƒh‰a^¤x°Œ‹žc„\‚|zw‚sWf¥|Áev]y™qe{qa~‚bRhcŒsy¶h˜—† W Žvv”QnqŽ€T®kŒi‚Sqma ~‚]¤\šuJ{\‹w—q•|th˜‘u–‚Ÿd{_‘¢S‡uynˆ—|s£h|´|¦‚mrŸÆ”h¢k€š„‰+‹~~>y‰wYx„‰g§…n“ys‡{¢wŒu{h‚xŠ—…f€{‘™†l›‚p˜¨ˆ{—}Œ‘‚p„‘u`h–¢[…{‚Zˆap2ªym—®zMˆ“ojœXx”ŽEp‚jjbnI†v–gPw…j‹pŽŒsg‘•œalŽ‹\i€r€œ“—Žr†‹wˆhcs€…„¡k‰‡–\}w§e—ŽoŒ‰}c’r[hv˜˜Šwr—W‰yu]†„~™rlyŽ…xŒ–‡yŒƒ©zw‡HšˆzŽzšxƒj€¤`n˜wxxy«n…N›i| aš~“x\s|Šfpy„¥‰w™’s‘qQ€Š„xiiˆ–ƒll„lŠŸf‰yp”qŽˆ¤¢Y||{|ƒƒy¦yŽj‹¬‡¬yXktfƒ€z…žtkk›ˆ‰xašZGL¢ui€ˆi˜™ˆ}ˆ‹™’q˜ˆmdv~||…ŠŠHqž{f––^‰c…f†tolˆ‘‡m‡…†ˆSxŸAh£xpŸX•‘¡v•”§^vG‚suk‚—kŠ]¬Czx”Nwˆz˜¨€¢¦{€[Š“ˆ|[^qš”~……tfošY…ŽqŒ[zd‚¬e‰tQ”tafžv†svs¦ht†‹‰suŒu‹_xŒp™‚_b‚¢sp‰”“‚^w‰fycšx]‰u|¢z’v‰r™•´‹g]ƒžp„ƒkuž†zNt®t’‰„ŽŒŽzkrt}svp|j|£s˜•y€pŸŒi¢˜Šrzx|fe›xq‚Ž}“•gšr…›ƒz{uuŸ}|„­ˆ}vœfv {lŒ|z†[tmyc‡lšgl€Uqit‰`soˆsž‰€s~ ”Œ€~‚eƒyƒ{¢m’€†^zŒ¢›tvywGœ…{k§m•¡O¨m‡Z‰wqveq„iŸyxmŠi~qpbnŒ[ˆ–WmNrjhc‰y}\xgm_£‡d‰¬fŠƒd€”v|ˆz•œ w€«uqœ…z^}vs—…{SIrFa} “…P¢~¯“r– …„|_ruy¹h›”Œ›†Cˆx’i|‡²q¤’ˆq‚Ž¡e~pœ…´Žr’h~·©fŸ|xcalƒ‰§“g…Ž„’|yxi…s•xˆ †l”‚Œ‚jp¥…K„‰h€’€ƒKiL–…‰@xfE…spvzŒmŒsŠq`ƒ‡¯“sT‹±·o‚™‰…Tz{pylr…¯o“œŸ|~µq~tuo°Œv“Š‚–…”o{dl…‡‘žwvz”Šnˆy|‘œ‹}}°p¢}•¿q`‹”a‰g©„´^®„p|u¾og{§zŽp–[z¸Y«k_€´§ŽŠ„}‹…w¬d”–U”tUm›l~n€k‘vx}|Uhd¢q‹‹‰ÄR u~^©l•Cc˜˜hi𼑉šq—‡tly{z–”žŒX^™Ši{lbƒxoq†SƒŠz”|‡^Šuip”dšŒ„fœ˜Šczgƒ‚„‚|mtƒ ‡Hwvˆ“”ur•lr„…zƒŠk¢g¦_k‹“{„£wˆq‡Š‘’€wq†‚˜wf¸w¶jjs‚p~}l}¥„sƒ~’J|Ÿ‚‰‰„Šk‘ˆj›jkDmnp’wt\i”yr—…nˆm~Š‘lz{r£•ƒo~š˜wkž„‚yo{œ”xn[•“§gž€q„šŒj€m…zq…Zy……_¨r`kpŒl‘`„‚[‡YvXe_‡r˜{kov™<~|¬On¬zMjžŽ“‘z†v–bªƒ€{’w`‘„»£Œa¨Ái} ”ƒ¾Ž˜{Œ•˜N xZŠ–yމ‚Š~H¡z€d~±•]udg¨^„—”bœwt…n‹|“‡}b”šŒx„qyŒ}š¯e’¨Y‡~šƒ’…Q€¬W‡}›u›z‘Ÿhqz]~²bore˜ˆgepX„r–xwtsŽ–¦Šeovgb|}RZbwL¦d²c·ŽƒQ–k®|•o‡ƒu…e}}s{_Šlž§}d”Š~`yx|ƒ’ey¾x§`h†…‚‰r†®{t†¤o‡U…”Z‡sœ‰—_j^’–|€szoX‹||ˆms¤‹¸Œw}nuyMl‚˜zWZxsm‹K¨«wjˆ’|q†}®Š–fquœ|‚„y‹u xk‘y}€Ÿ‰€‚yzrŸˆ†¦¡«}XT_‘‡‚lnyzn‚„†‰jŠJ€œx‡Ysj•Ÿq¡}]z€ˆt¦O”’˜ej“Y’®…mcp„„`~|¼ƒ~ƒ\q€‰…p^{o€sŸlƒ‚‰g—‹ƒg|œˆ´unŸŠI›pu}€Œr€‡kufv}OŒ‰pu‰m“zbb¨Š„•£‹ƒmwupk®~j…•s‘‡V‰§^Yg…¥q|eV›–Rƒcµslky–bb“uK§qmƒŸr_‹`rseT€p|p¯Š€”v™›jzžuu¥}Psq‘„x‘¤€ir¿“W’auƒpx«cs‚§ož§hzt‰“kgmn’€}‡ž†ž~Oy{}›ƒ—t…´pjT{x}Žƒ“ÃemŸ‰‹ov}ln·vi“wdv_j‚|nk›hƒ…„oZ~\–U†yq®|‰ZWwƒmˆmŸy|~ŒŠƒ“}c‘˜{†‚]pVœ{ŠxqsŠˆRyrwœËSƒ¢`lt’®Ž¥Rcas‰qb‡o…Œv¬£t‰†k•Âfn±€•kQ›`‘ƒ‘tžma¢„xz•wqxºpuY\…|‡‰z’¤–e…{xšM‚nq„‚©–wl¢w…·…•›­©X€¬u§‹ut¢”‚€k_rlµ‚~˜Š‰„{wgnyz€q…u|„\G\jme{t|yŸzŒoƒ‰}brmt–‚Œrƒ’x›™Œj𛂀H”SnŠvr¨t‘€rulx¶s–z{zxujo«R™€€Š»|zmœv}˜w›rp˜–Œ=ŒšUn…uy‚}Œnc”›Q©}ŸŽaunJw’`Xžˆw‡kyƒ¤˜‘}~m‚žula„ŠlhpŽ~xˆ‰‰—‘}~v~[Jxhf`wi~fl™xt‰«™Ew{Bwy‹‰y@vŸ†tgŽ•pzh`ZˆUoh—–kiziY‡XŸ£‡eyxˆq¤{isžhwƒ‰‡fs‡”u€emn—Wx|a•šŒ‹Xs…€}¤€Žˆx‰xk¯xp“|Œu‡†_–`r™owlšƒ„zy¹“Uwzp £“mY|‚P—enf|Y{‰–mt¥s|i©`ky»‰nµ~x…wf—†rvb¯judqQh˜•V~|“mp’zj†lƒ‹q•‹{t˜…ir…{Ц“’Œ•ƒm¡~‘>eƒkvškyr€‹š}Š…{‚—`‹Œ\d~›~z€v˜rq|sfƒ|“’“l‹w|gmh{}qŽMWnnx¦m‘sˆqˆh†‚ƒKa•|‰‘sp€Œ„bk›sšjnŽqƒsx‡mxFt“Œv¡ƒg‘y«qœ›7y”ަyla‘y–‡ƒ|´mqke¬ˆ€sw’n˜¡qx^c†miT™‡˜w~€o„[ªb{`ƒ¤f…~{wsypo•†wŠƒqc‘vp|wŸrVšzV‹Šd‰{}ƒr‡|›€„}¥Š•g†Šx³_}ŒWr„’{o¨j„r—_¥s…yh‡–mš„rmˆnˆq«‹±gpuœ”U˜s—jn{€[†¨wœ‡‡x†ZuŠª ‡„~o™€‡Ÿ€w]q‰m™‰`«¡‘umnkga¥‚ozŒ\fqœy™—oyŸs‹t{††Œ„—z€{žšh„¡œf”}‚afo}®•–¸‹™z…b~b|]ƒ’b³mzƒe…rˆ¥[l[¸sz‰ˆ^ˆ‹lI¥lqŒ}žˆlŒ|s{~ezˆ–‰oˆ|uŒ«šE…]ypŠiƒsr^tvz‰vª–’e„‚shœˆ_|Žs€Š‹sw}V«„{ƒŽÕƒzlqqmq‰ƒžw’ymƒ{¥ž‹rr©“‚|{¡ˆœr^xuu€†v”’ˆ‹Œ‹—vtnr˜a„“‚ ˆ‚]ZžŒ~‰iiž‡Šz£}w³iŠp©g¡£‡‹h}ƒl¢}—¦Wu„{™–€„„ƒwkv†e³oiƒœolv‹z„‚tŸ´•˜r–Œ·…¯|^®}k k‚~Œ†t¯¨kg}|†lrx™”ˆ¥‹‡Ÿ•Ÿ±€˜†}Šutª‚‚}Wk ŒTxž_yb‰‹‚s|z›V±·›”|®„v‚˜uŽŽ{“W}}wzi uj^p­j|‚if‚—‘–wj…xl˜n’œ]>@z^ˆ–e}”lps¥¡’£„;vާ€cy{Z’q™ƒVq,ކi \`ž O€Z‡€p¥Z޵…‡Œwm†…‚`ŠpŽx7­‡bfX­¶‚¾’a|lˆž™b‡€Y‰\dª‚‰ƒ¤š¾Œž=Uu¡ˆ’=py^`”‡C—qxƒ€j f€ž”i’z“R‡„„uv“ŠŒny’ƒtku}›Žuwœ]o™‡jok€‚‹{•••‰^ˆ]~ˆ€wzއ•”•‚Œzs†Œxc_Š…Ÿƒ‡žƒy—™f‚£†}Фqsnx‚Š˜Š~\ƒ‚œg`kusmt‚u‚—}“˜•wgQztl´xc–SŒ¯•yBs€]y„q}pE¹otZ®nˆ^ÈŽ‚‹v¤ywgjUd‰}c`{¶¤o`ˆtµŠ“žuy±slf›l’œ‡q³™ŠŠŒ‘Ž©z‹mn“~rš‚alx_€Ÿ’}ˆyFYˆQq‹”{cƒp€n‹…du™vxzy|lyU‰v•ž/iy‹–Lv°q‚“_¹šfow”Œ’lˆ’“†{ˆ‰]mvwx‘‰ˆq‘{“|Hvƒt›ˆd‚vq‰‰¦^l_z•„SUewRˆ—R‚sT?vo§”•^‰}ˆ~mŒfª‘zŽ¥ww… ™¢…hs¢džS‰sˆ•‰‚…„©s`R€u†z”|€”YŒapu…Œw€°‹‡u“fM~Â_b‘ŠzVxžtˆ‰v¢fŽ™¦wg«‡Qƒx‹ˆ•‡]u”‡šn~iˆ˜zj~|’˜v€œ‚m€‹m¥¢š››€´¡ˆ–l€•WRf•ridwx’™C~oœU™Žq[{Ÿ‹E›z’Ÿ‡‚nkŸƒ‹A_¢‹¥¶¢›Š}^x‹‰™vq{~zuO{V€ZXDŒi}ƒU_…‡Ÿ®·{}£jZˆmƒŽW²ƒzœ…fDˆov‰d™n€—¥•xaƒq‘dd†grsˆ™ttq¢Xd{~O­™£ž¡’”Vw”ŒIX±–zy†]u[~|˜‰{{wfj5‚xb›n²xz|wz ¼—Ÿoq‹ŒM in¢ƒ‚Œ“¹yfk|’€¤q«’b”YAd‚‰Sqš…“…kwp…ŠhL…ˆŠ…uu-q|Ž€”V]s¤tCx”t’ƒˆŠ“aW’…Œ˜q¥žo”Cx‰HYÌp~‚¦ˆR—Žp|h‹‘k”’xPko‡pS¥w‰”i_m†¨†{}kx`’grd†„m]ny™Ep”†º©bo‰N~ospyZn¡lˆ™o_§Uv^Y¼„›hnˆš‰oez¥]†Jd˜ŒaЬXˆbƒ^Zvb‘Z–|{r†c„€•p{c…}ªˆw‰{”‰–š{|Ž‚‘ ¡]œ¬œ”wq•s}”{uƒhr³o„€†z‘žo‰{„Œ_{nv‚`z}¡~i u¨“_®Œ™„{w|…v‡Ÿœ³fˆpzw‡¤x€msƒ|{}ko„›„{k…l‹Ÿ‚‹zzŒbr‡_p’˜r±wžmƒ‚o‚‚¿‚n•«_v[Œs~‚¤’Oˆˆu„m”u‘’Ÿt’z†q¢–u“wo„dµÀ{Ž‚nŒng™SvAkšŠ¦w˜{8£hƒh„f‹Ž‡¥yz“z`ž‡ž‰fŽc°evmouoœw}™g®²›giž‘shGˆuŒx§ƒwŽz‡Z††c›œtvˆ|xŸ\ox‰„‹gZ‡dˆ§|–rda—_|[Šv‰”kgipŠlo‹ol‘|_†˜kžd˜Q–y s¥–€Š“r¡ˆŠ‘–‘‰£“…zŽygx’zVŸ|œt•Oj…g•–hainŒr¤zqŒr‹wˆ¯Z|€z…šˆ„‘p†€vvbM~rz‚ŒZ„~daY|ƒ¥{|Žrr‹p„‰t_ˆU•]tt}†„‰W¨œk{‘€”‡r__´Ÿfx—ˆje‡…¬›‹’”yƒ Ã_n‹Ík‚©wzqstlo–}˜svo}Zwu‰‰Œz}¨¡[€tmb–{š¦}v†Žru{j¼|K·”šz—DzbeŠ‘s]š€u¢m¤Kmq{eXY‰vr€™…‘R‚ƒaVŽŠ€–’kŽ“v€j—™~„ˆ†vZ‰yRgªopb{­”ŸU“O…cT`–{e„[€†uc{{Žrx‹yp¯n]cKŽ~Nj_NoQ‚wŒºn‹uXsvš`˜§]°§V€}r=žcd^„´‰}s¥“{³Œ«£{‡cg_£“€„jމptŒX–›W£€gFƒˆ–d‚­cˆgbžtZ–aŒ ‰¥fq´p£ƒ¨ “¦ˆziz“w›€„¥uN» g€vR•hnfb‹ˆ^i€hdn¡r’~|ƒw}s¦xz|yagf–Ur™sz¾Ug™“Ÿbv˜€†g™‰Žb…r^YgsÁ}ˆkXˆahN‚‚f²x”p¥“€ƒ™~pi¤oZ yŽ}¸uŽys’ˆ†]zhqˆ¬ˆ…f>pyt…w˜‚d„c‚¬cl„{`¬Œn‡~”Ž…Ctpœ_º‘[¥K_†„X„s…©Œ¥®›••ižz…Œezkc’U`c}€šu}H¶‚iªp©k¤no†^ƒWX£ŠST¦i’ž—z¥£rx¤uwbZkpнŒ†gÇ”w‰‹†¾’Xw†zv€{¡sŠ„yŠ~†J™‹`y–K©ž““•`stlnƒ„Q€vg’z·ou•S“£n“Y³sY¿o¤„«Ž„„|…‘vàbÂlqcw}š|n¡¢ƒƒvsšrZhΆÇXb†{˜½hQ¥”ˆžla|}Žk~Ï”¨½e„‹|›£€…™ˆX–p~€†pi{Lc‹‰¤s\’wV™ƒwQipƒ‰™^Œ“†›Š§ix‹d¢jkd€f­x‹®wp\t\C‹x~gp|ejmpc†}€g¨re\L}šŸ£š‹x˜z“dž‘¡e›gJ„ˆ†uk¤urœ—Lf„l]S…n‹mŒ£‰xky†v‚b €fuŠro}tµ{„jDS­T“‹Ÿ€Ã—k©…\¦‰?Nn‡ªb—p^žX2¦‰h’€ˆpPˆ”Xm h`£€ž”žp´†z®‚ok‡l€z„Œ—¤yŠª¨’¸g›ƒ}–|{{‰`rŒv‹r‚ˆT†bc|u{\’_Yš’Œ’¤X~Іm„‚ygxh•trim\–m…}“ë“­‡Š¼’†n“ „^Œh©…†ªvв–dh_r„‰ƒbƒ©Z8¡t¤Y™f§ „|‰topm¶g‚¦w‡œŒ^W¨¥[…¦‹©¥¿Ps„soO›¥T}[=p™“y—epŒz Xh ”s{sh‡}qxdg”`l{µ†wrV‘gq—tl`~T›Ön~†•]rsw¤Wœ«›oL»‡qs¿wcŽmžŽyo‰jˆP’ ŠŸkšhT•[k°…Ž€RX£™»­¤„œs®sqlu›l/ž¢[‚š‚¼zi´¥›emšneYœ¹”®·Wƒ‰©¶ccgˆ[¢n“P{‡„|À’“eµ`lR{}Y}hzc¶wy{_‚}z™he¶pcˆao€€Mwx¥r°­Ÿ†ƒˆrŽ„t€|i‹h¢Žy“£s¾‡v^›t`U°špˆ„\ih—t{ŒN‡w‚ÀƒjXŠyw‡•šˆ |ˆf¦g„€{˜…h‚“ŒiTbv[„¢·’ªpizaA{`hmfqƒID‰¢s‰_]v›’`OބЗ—J›wzÅ ¿y¥ƒƒw•d˜¦iA¶‚r~duw„m§_rg¥‚†h y£„M8e˜Z”^oGL•™`•œzyw‚‚gp}‚Le—ty¢ˆ‘•ƒ’O˜†«žƒUpƒ¢›‹efj¸„pœƒN ›~ˆŽ»s¨‰|x›_¹ˆck†“ªŽ„HtmŽ•v˜ˆˆ˜‰r‘’h´y¶G”š£n¤XKpwv˜u€Ž}¹Sgci˜zs…\›Œª¼ehšr˜…pCŽt`h{…¤wŠœ©ºn†x‘Q`£s­‰•EVŒ‰ƒ‹‡}‡Š—ƒxnœmG­‡l`Xm¤…ˆ†™m”[Š—y›Œ¨~•ƒy{w~…v˜wsˆ…‹…f‚„ª…‹]gƒ“wW_ZIœ|uvŽ–ª—€w¦x^š—„]Vea‘f}oƒ”wrg°‚‹t?? `«Wx‚Žf€ˆkq4eywZ”hˆuit¤‡º~zys„j€ˆ¡Ä“Žˆuuˆiu˜¤¨sv‡§wx…dk\¨nœŒd‹•£‹Ž¥›™«`Sp¢wy‹YŠ¥¯œZsSnizŒ|’ƒL£Tu††^•sP‹v…g|¹u{kl‘†vprb|€˜S™…—Šš‹‚¡€£˜oŠv‡“}™§cx”bzph‹sŽšži€–¤“€„gms­_—´tq™“Xe—RpT}bˆ—Œ||v™…fo_t¶…‹”[¨]„x^‰r¹Ÿ•žªomz¦e”nl}‹›’X‹x}•xhœÐlˆe†|vk–¤yzUŸkxƒ®‡£r˜œmu{›ˆ|¥‡lWzkŽ¥ij_V…Œ‡jw‹K{‡…ˆ‡šv§~Šbƒ†ˆe—‡x e£bsš‚‚t–’~ahx‡|WŽay³Œfu~‹ZŒˆŸ€yI{V~™|ozh£Lxr°³ukpm„¾d€ˆ”W¤œcM–zhUh® ¼ã­W«œ›q‘N{k±d˜sh”—Wˆ¥M–Ÿ[ž¡tcRfd¡kflˆ¢“_^†h¤}re|~jv•pmhz¹{ynyha|k‘€ŽÀwu—¿W—]¾tkvogF’vhiÐrz—cz’bXlmÉ¡§žŠŸƒ²_z†pQŠŠ´–p“s–U•©…«’‹‰Wª^•¡Y{UY¤¡qxny‹|rsšem‘[™8:C‚_šj‹šs‘f­’x©•z„˜‘x–wgš‡†£X˜o¨“WJXn}l]ozw•›U}u]—zƒ‹Œznrn“nbAjIµ“AœAM|gx¢vÂP…~¤^zkgŠayŒƒ”ˆzv^ˆt¥•he¦”iUcrc·ž«\¸´«‡‰tX–‚†§€‚¥}dWp•š‡t‹•ml†™rw…Ò‡‘h|—“luL¯Žl‹]v¦˜€“q‹Œx‡“I’~|k…ggqjpicxžc¦~ˆt…Fvk„iwl^–‘°^ŸO‡‘Ve’³yMs­’S|c‘’y£WWš•UgaQ‚v~”cPk9šYl T•†r…˜™¤ŸÅŒ£IDŠˆu‘­’YJ?·Ê¼l|ÔχXu5‡™m¯¥w‡ƒk“¥s}cž‘zÔjXÃftcV{yGL2®¢…aÉc¸2’.’¤Ugfƒh}Tªr:«~X”YŽœx{‚qžÁ¨‰—ª¦|Qˆzk›¥ssœ AÂM‹‡z–‚X›De”›0i•`vdah|¯p^cbžzg¦f‹xpw…|Èo„Ÿ«‘u¯S€o fo€^~§~qZW‹[¬“˜‚žƒn‹U–txtnR‡l«q¡¥_‡†ˆ“yÈkˆOT™˜›Wy]r‘{ —¸¡~”Vt–„~vƒg¨kg¶j”Y¤Šus”ePupL¨e³£­¥k®e©ƒRcg…Tw@ib´s“Ѝk{‹`oV˜Z•Ke†dª¥e’Ÿr„«d’•“zŒmT\Ž}y–~vQYvkZ{œ{Š~gox›sp„c§†‹tq`f[”’y`l“vzr˜¡x‰‘ƒt„„pygz‚l}œs†o•YQq—c|{srK•wºp¹tŸj™’atƒbª¯«ˆxjPˆ‘³­’‚vW}ŠŸYxŒwl}£ªšI€d[¤‹•‚¯x}m§w‡eˆxi—Y’c€–ˆxrhy€l’…ŒVn[oZŒp‘oˆr’‡oŸ“vœ}€›rƒ‡Š——’ ]”Št˜ˆ–i„‹¢’‰x}sœ™‘€p™z‡ƒ|Œ‚˜upv”•ŒŒ†„tysxxv–}y„qlˆ˜yŸ—o”t”X¥o‰‹“‹™fy‰•aS|¢j‹‰OY“™h¯p†Wi…c¨wŒ’°‘Œµ–iZ«NÜ•ŠŸQÑ…]M‚ƒŠ–yŸ¹‰f‹nˆy]hˆœUu“­•Vr•‘𔕆f\ys„ƒslƒ¡¦›¢¤¡m’^›œY™c_¡XP“³|ygZfK”re£‚„°z˜°hœm•½‚ªšE—ŒÁš_ ~štCx‘™UN~]’|K–X´˜vybƒfZJix_Dq´‚ZHb´fŒ•’kr“ D­lœx‹ŒÅ“•_jl_•d`’€´z}p)gk†{o²}v§‡zI_ªh±vŸ´‚Í¥‘šhlK²c®°¡Œ{tP‡f«e›]]r]}§ˆ‰‘Œ[qkªSebosN^k[žnbY]j„r‰Êf’Œ¦T©¦¢y““‹udUo‰Qd‚f…®†ªq^ÂV]¡œº;†eWŸœs}cH•hŠt˜“v|‹¾±šŒŠj—{‚±£[€u˜dyž±ekcµ/ƒW·¢…fwwsd€xY’‘b{ ¾“¼~§\{Ä„ky“pg™P˜Š…y•YQvlWY’LZ¥â•'ª®iœo&Q}>§†”‚—Zƒmy‡Clƒ/Œq®§‰c`k|o±_ZX‚³šFj€Ž›u®‚{4’jªqžV‘N›ˆ_vg[€šIzt€‡MŒKt‘dŒ†œlgc lq‹Ÿ}užU’†}ofš—q…R¡uŒ}·„ޤid–\‚^ƒp…£¨ff¨|šuk{p¿ep^a¡€‹•vGpyzƒ›“l¬oZZln~°€¤xŸž—kyHqˆ¨‡u~ƒrq^¼`O’uxˆ¢šw_ȈU‰¨wKijUj“cv¢jwmx”}•y‚~‡‹Uƒ€“̧”vy¤¦i}‡]Z«p£mN~sEŒ”a~ˆY­¦…oŸ§¢kE™yt°“j‹ošv€ ~uœew®‘ºY…wŸmƒTÙkz¢˜ ˆtZTp¤‘r‚b‘…–€~‘tn™…xw‚V…‘|žx§sr‘i~rq‘Œnœtm \ynh…„’„ƒd¨€†ŽŽ}“‹šs²…S†s…«¡TQŸt”p‚ŸRu›‘{„§nm«‘¿yrr|®i|tŒ‘qkE‚“y|v© y„LT£ lOi vP?ur{»¯Œ…pN:WÜO¡ˆÆ€°¬˜‰¬}„ެ`lŒu‹{²ž3oiph’‹fœ‹–™œˆ½9•tih˜KŒY@óK®S¡¢—¢Œ¬˜wa»Ÿ‰fª¢R¬•4fq§uk¶•™Q‰hNu™—¥jmhV£mlVƒ¿‡ˆ‰¦Æ~‹œ†}›l•p[}•~„X…zµš“X‰se‹`‹}p•ˆ¥{Ÿ”­’‘››o›xtžƒlƒs±eVŒ—w„XRgbˆœon£…^‹†m£r„{’€œ«y“mjwn…€zdiPgrj’ps’¯Ž‘@}”£ˆy‚dŠaœnÀÜŒu©dS‰[ ¤_œ¬’X›€aw}ŒZ¦h]¯–o”{‚`Á¥nvuZÎs‹¦¢{±˜eyC}‚h‹`]€„z¤g_¡ez l“_­fÃE†zo=e˜b´“¢q†a—uKm|vˆ––„ e¥x¤ueµ“-‰“ŠP¦~iKx¯t›‡w©ªz ›a‹M‡—¸_„Š€Ÿœ‡“iqm½‘…½—dÄz¤|—®{yf²a¨`…žR‡U‰“‡~AŽ‹na˜8d€–z„W±\~Ëehµ˜§kÖ†²žmw{hŽXÂ¨Š­S†Šucœx‘…~­pŽŠ²€kœmoŽ’y”ºmZ}mz}{·q]n‰‹…’•wy­o¡}ŠtyŸn–™N~o`p€Ÿp|8Ex|–BfyŠr¸|ul«Žt¶ž‚oQ…y…uz›ž‹’‹lKkaxnSrŽ—£j‰sgW‹‰šq‹‹Šn–t«c˜~Ž~«w\z‹‘‘aKƒ•cavvzqje?Š|p‘r•p–o¬t€¢–š’lŒfŒ‹˜n£pŠ”bnœ|’xŒY‹nub[VŸ’~‰lLJ‹Gbo|gŠ‹¬uÄvzIP€iªcnzjŽc¥–mU-ž¡j\ƒJYŽ?›¢fÙkySƒ´hŸmrWbƒYr}d˜R¢—z¥m½zŒšu—^kŠwwpŒf Š·qUv…˜™Rjg˵Cˆª\¡„¥ ‰\†‡RcÙ›··‹Tu¨Œ¾‹”M@€[• Š•­‹XogŒ¨~t(o~7”•fµ¨ksfq„v˜~” šhwŒ†ye{~‘\K‚ˆxvy|j{r­Î“Ž•¶y‡—~y]z§–{i}nht”‹šuŠ€r@hLb~sbu—P’r¤¢m˜˜f±wž~li1lQj†xG|n]T ›~„>ƒt®ƒƒz|ƒ£|wU¨wyPƒK“?{¢x‹¤s_€[–r›b“ž~˜{Œ”“d¦xf|‹~ƒx‚ŒÃƒ‘e\tyz–†€³y}nj‚ˆrS{dZ€p`™š`›V~Œzo}©…‰ l–t]‹vgx„džs®„‰Œ`‡gp~oƒa–”ƒšgpkv’˜i±€z´‹’r•.~‘[ƒ›z„‚•‚[oxytšøxŒuÄ¥r…—w}’„rF”s‘Ëz¢¨fi}­kz‘ƒP[‡–mƒSZ|†V‰±š†g˜›Z…“©¤ƒ…xŸ®Ž›sŠ‘À§–ˆVx|ŠijŒ£|›@•kœUĶs¨q‚²—¯•h~Y:z‚¦¾rƒOT[šŽ{hoe¤x¨mpc€†|S¦ŒW}OPe¸”…œ¶°wc|•£±Rm¿Ž‹rN®}m¥h‹®o¢l¢[ƒ†’¡ˆwV­¨‚]Z–[a—‹Žlj‘myxby~y€“© S9‚“prhtvSyˆ˜X¯‰–x_‚Ÿ}xi{©Z¬[6n^¯›}CœgtžtŽxc‘¯V–Ÿv¦ºÔ‹u°cŸ˜}`l–X¢Ou¨m‹uY–_«PsÃ|hˆ©_g](«€`Šl¶_’¯qy~@yat¶…`J±r†m«‚GmŠÆ…ž»–wtŸ™†b\šŽ‹“˜£‹q‚“}nYlU·x`rm‚•Kz€‚nl„xk_Z™†}’\Oz”wŠ—•FŽ»–kuh{¾]~“ˆ@·CdM˜‘kDVHo™DŒU\Hk–zRj’›„q„·‡ÊwK®8~†½„€‹zxq•Urx|¢‰¥p€‡i¹‹³‘š|”hÆL•¤hœhv†|b¢c`€m}ms´Ÿ¶ƒ¡‡…lv§ˆ[ºvf”}‰vg¦€‚’•Z[otH`–i´h›¨S‹yDLºŽ™xfân£h‹¥žJTP©U“z}š†€NŒÊ{©}sVše|‰e£Ÿl_¨›Zl’Ãqf•’šxŒ¨’‹ÜbtMmŠujxGœ‡¦xz§§—„ql³s\ŠY£šŠ§“‰¦ŒŠWmNŒ…Ma¹cv‰wˆY]mܘU—‰~pXW¿~Χb…[ž”4€§/d{zuXMͶP„ž¢’lpe›o£Ž[‹Š’­œI‘zu…—u†g¥„’†² …sW‚}£“n„nW™IªÃ”qˆš‹¬`Vx˜}±n„Kƒlkw…ja|{ˆ?+ŒP›‹>}H‘Yv€RŒn¢‰w‡£b`|«‹Ÿ…˜o¨‹a ØšzŽƒ„e“–A®qTYÎŽpA?t¤wz[Fq¼¬­i|Szv€œr€¯ž”zwÁµq…Yß“C¢³Ys…cÀ4oLˆ[}zXrb„{°žtˆ‡œG|b>‘€r‡q7¥kgsA]tŒfX8“vˆÌƃVšµ𢾷e¡Špv³ƒ‡±³ÉqyW•–\žd—§§…gŒAtdšË˜OC€†\hcr8†F§tžq”Àtcvo[1h•Ut—›†|H´˜¡˜·§P‰c‘Za‰vŠƒS†–ns¢œv•m†#¯ z‰f¯iªŽe’’j\|jh€º—¶¼wby‰¤”…°q°‡s˜L…sc6Ÿ€uiŠVV]®ž™–aQÅH¦…I~{ƒÃ²g™‰tŸgd¾—s|^¥–`_]x|¢ŒEj«‰WÅLd¶z¢ƒk_˜¦wWŽ`ŒxYÀkƒz™Ÿ¤”ž¤’z…kPe¡›€FN¤ˆn™Np¤dK _¬irp–j¢žiš‹”¸[’±ŒRo•{Õn7¤‘MPƒkrQtŽ£n›g…li@““†¾¡—£xp±s„ex”^TmUŽq’kbkœjƒÇ†KWƒ]cq‹­r£“£gv”…†§sf„ž¢g–r}’yv~nvtŒ}‡pŽ…hy|xig€r„„qg~C’‡“Ž•t‰‘˜‚ƒk–‚±¡Ydxa{Š}‹|qi~p“‚aYk£‘ˆŠ””t|[vˆ”sb“­”Šˆ‡Š—ŽŸSešŸtp}eo­c‰|[“…v q¹YŽL~©­“u’L•|‹•{¬s…b‚g†‰l|bˆ}mŸo—|Y€h”ˆ~[ŸŽµt‚¢h~‡ŠTsž‘Š~ƒgxZn‰sqze\Ÿkž”‡§›mHf|oT`jŒLe»FoZœšvlhzllv‰w°{t‘tŸŽ‘£y–|›[µ§º¬kp‚]s…Z†a1`l™s^]aªSyËk²Sž9’>Vˆ‰Qvi{Ò _p[—œc{Ÿ^]žm§zŠŒVx~»’‚¿¥ož«Z𗤬[FUhWzi–k[µ‰‘[damƒ‰ÊnÈedž±RIe†AvRvS›x—rc¥c^bDˆ~}~§Ò~uÂ['ŽR“‘¦²€ax–n~r™¸‚•[‚…N„r‰Šo†²UupeQ§Œª‚@›Çvj²„xpŽŸe¼fßq‘~o‡žÕ†Ìq‚]ŠtqoX‡¿”—ƒ~¡“t¤’qzœ“_{{ubzme\…®»«}lžf«h[u4VtZ‹ˆg_Äq`~rW²Ÿ}Z_†l”ƒ;~–’x¹Žš¢•˜Œ“ŒFulm[i~•w`œjpˆokW}V_¥=“Ójƒil©Ÿ‘graГ>tÊz¢Œl}™ŸS8vŠlyW€q“ŒvÃQˆ„ŒSJ«Š¢sY„€T˜pcjˆ±™¬ŒHrsY—9uK“ˆjŠF„[]®yÂodek”šµb‚s¤gYrƒˆo‹‘{P`\n¢c•\»mŒmǨ¦PÒ™E_i’|Zœ¼¡…žh:——˜f€Wœ™kol7uyxª•¥…lÁŠbfVw`~fqwyoO¥H†7asC€a¹—a^éur°VfÓkŠohfŒžg‰^ЦdN˜oj‡†aŽgbTfzž}…}ŽŠ¼‡X­sŽYˆŠIidšgzvkŒx¤Œ¨g{£‰€›‰lpmšmu~„n…¨vv„h›kaR‡”¡†jhˆ~poqvŠYt£œ“t€hq¥ ž¬fŒ}œ^¡veohž{aD¡zTy‰Q•¢ E˜\M6ƒ”\UŽ}•Ôbi\k_|pV”f{/ mgŽv‘°–W'‰°ÆUd–¢•lŽŠ_«r‹ež²y…­a]޳n‚†ˆj`ZŽZ –cOd¦ÄJAsl|g²g›tŸx·šP¾jlolo]\‚I¸z‚“~d›Ml”³˜.”OX³ež“¥XvŽYžkƒÈ€˜rŠ:†~O’RYlpnª†ˆn“m­§x|˜AsxÞ§qTޤ…®br¦Š]bmŠØhŸIœ‘ŒXn‡Šˆ‹‰® ™UŸµ‚·~ŒW³ˆXl2@uMpŠ‚I_}§zxo‰¹šqtzˆ®Wœ“‡Vz‘®‹V‹Á…ž¬§]N{Z­aP¾¨n‘ŽŽ—s†¤¢˜b”Mq{p’H™‘˜Z]†W¥u›RSc»¥oŠ¥„w„¡¸™Xi¤UW©fnqq‹‡|”w“­’Œ…5…¯l„p6lhLm–šªvvWnÇz^jAo‹žLxw…Ÿ\K{¹Ÿ„”{uIWQpjb?3¢—‘€Vnza‡–Œ©—l‰t™gl¡™œ™—|{‹¦vHzsuU’¢^µ{“…™¾sphy“{‘‚žlš7 ti‚ƒ—†{¦myix„‰slftš~‚žy¢TGnW–~Ye¢‰h™l“¸º‘y‹FdyQz +r„»ˆ“ny¾c–›…“¥‰›™m–‰\ƒŒis}sÃÚ†–z±X®]z©NÀ|”ob„•ƒ»l{­µY©l«j”¢i“x{†­P`P^f_˜‡“mkvÀœbxbD•©aŠž•fŒƒÄ›xvovœ·Vl™ Ž“”q‘f)¬oªdÒjŽP¨¶«K~jm„p†b„©/™£»m¢’´™\Œ`’j–—a“‚Œ…ev¨p}¡†Åk[©X•–©…[ µ|v‰™u_‚Œ©mv©­«C•a“—¨–¯›„iœs®f`§…mMš—epf¨o²Ã¶¹wm^K³r|y†˜S{›u¡‹‘ƨw|™«s¢[©–“|n}…wt}§Y¢gy•´xØ™m´N›osŠI‰JŸXiœ’{ކœKŒChföuO}µ°gŒƒ–^d³gÊqŽZ†¢}„„€¤Âœƒ¨¸×¯ƒmV²Úb’‰Uuz)Xo}Lj‚gv—w‚ni™O”u@𙩅¡x_}™MlVÖqDkp‘¦¢€¼£GQ¦oYІØY€OX[vx€s¦€S¦¤ž~Fƒ„¨‡¤™À¯d‰z»›©ÇVqG£n ‰«b…g£cvx°=ªºh_TQ„hŠd²€³¾|rœ.qx°fti™}uh¬ˆ‰«˜k›{†c>™Ž`DA‡‡¯~–Q™{˜‚®b­m¸ª}m }¸©Ktmsaw{Mš…u xm–‘cw}¹Àƒwi…‘‰Z{nYrXipd‡OzŸ‰tvkpgv²‘CˆV|^UŒyq|¸„Šž™†up†gP‰£¨u@†‹e`zc}ƒgbn’Š`­oiÍf›¬Ž”p`„A€}¬v—aw‡×‰—{€l•œ±Yžewmclikp“º—DY€~¡=‘šc¨?~Šys_{rn¡‰x‘Ž‚yŽSh…xEˆhpƒÞ\~Q”ST†N€x´˜šf¤_[²A›_cskydŸ™™…bi—ŽuOU‡€Wˆw„™¢Lu{’Š_±W“QYy†N“‘H_±„pacm¨kH¥b«qÂ[p¡qbh¯aKÂ`‰}Ž•}•„½l„[jc–®<|QN‰f«q{…Šx\1“vlži„¦V{MpS†’€v¡§zJW€Íj¦`ª‡¤„—xX†SrN›b/t‘a–¥“Ï|‰X†U9‡t7e‚£jNˆ‰¸H}ˆ®a|g‰ªxgñŒ€‡¦‘yœ¶À”lR˜zU{g£ŸÓqP>lœxwX’ƒmk…[wŽwƒN„¯~j;wyl„m¥¨…¥vbzœ|¡{Œ¤KN™q[½w¼„^s‚rFP|or‡€“v^™¡tª›zuˆzžŸx€Hžg¾„‚`°dt‚‹dArvq|ƒƒ‡”VNQˆŒf¢|Ÿr›Æ„[}mµ`Ìžh¹Æ[u­vhzZ}r’Sˆ¦H„Å]ÿ q\ŸVZzµ‚m~W{Žxn ‡dŸIvIpb‡dw•“”8€‡á}…£[‰±¨ZŒ••m[JT€›ˆrt¡ZOyˆ¬™˜{µ•‚i•Œw†ƒ7Og•td”x†YŒŠ`›§k“‰„¢h¥¡m‚ŽtgŽdŒv‘›q¾¢’•sš—b‡{›d_~¡z[¡j{oŠg’|v•x¨ˆrt–`oc¡fUezŒ¦fjv š¼s}t›n‚v’VkŸt¯‘—¤–cx‚vy{ž©˜pp–¡¢t‰|™s•~„°€qwup”f£©mp~ Œ“9‘Ÿ–qˆ»’qsÂr‚_œ’“ž¤€fÁ©•Žk¬°NŠœ³šjZk¾˜˜j ‚¡¿YMt‘–Mx“˜€¨¼y‰¬_‰}’yˆ€s‰·`u§O£‡¡wYN¡gª©X=m/r[l“9ŒkŒ€†Fpg“lj«gˆ\h¢|yhsLrã<7¢}ŒE§¢;†¥·Z“\4lbYˆœ¼\–tŠ~y”Ÿ<Œ–˜cwkšŠ=pž¬y›“|uµNUÒ©¨vTsq‡}©|CŽg£YY“˜ŽG ‰Ÿ]†3gpÉ–}juSp¥]V“u”€l_[Y¸ªft‘x³]ebBx¸tž’eaww|C‰”Žp|—¬£x˜h|Q{‹Œe†x{¬ÅF}fu|7mªMxT¨ˆ€‹l‡xçqº…¼o~ƒ}c‘‹›j_>r|€Ÿ{c²«”’–pMŸ”r™X‚]Osuw|ˆ‹Ž}|r–ˆÐ˜ox+q`yšo¢¤I›Žz€zˆ€d|‰wIc¸k}ªe}k]‚‚f|\Ÿ„nnož“{“`˜Äu`u·Yµ’yvy°‡¯¤‘”«^tlEz±T‚‹|{‰h¤]Œ½q®Ž¬NŸgÝi{ÙÕ‹‡Q­Šo’zi«jm©Qe°}¬u£M„­IÆg~SŒSX~­—ª®v„…Ž’‘ewFjC>G}Ÿv’–s^ЃŽ~^}nL}É'wiejŒ™[°›ƒÄ¢uKb…ZesYƒdœhca¡€ˆœ‚t”‚j‰xxTŽgr‰D°F•t³„Rn‰”‹{ctt[y¤€‡p‡p^y•«¥ŽXa‚PŽ‘c{¦„jŠroaŠv\­¦²uˆzµCc—€V Žxbœdžƒ¥~ ¾ m1y„Én…Ž}c`q•wÏ‘›PE²‰cÏR›s}y‚„yt|ĉ;¢x—˜›a@lŠuH^N3{„’—Žm’±‰ÅV£„“­ZG<µžmZj~šy¨—‡rx´9PŽiwº¯‡u…{Z»f˜…¬n¤K‹FiŒS»Ubgo~˜‡_‘R«‰…tYpŠ«—„œunSm/|‹ª£œ•‰€l2h¦d–Ÿ‹yujE‡‰|žœ”„y›|u›„x‚žqv`oh_bo6š—¤’šssjfƒ‡€`›ŠcQ¤ƒƒ{ˆhw™x¨yƒ®@ŠŒy‡dy§oŒT‹€wSO`?sŽ|dvjg¶c˜vqc²lnL©ÜlŒj–q]ª±pxfz´D«¡XŸ‹‚¦•œ…f”Œ¹‹[W¨œ†ÝÃpk¢³ZÔx…µž¹€py™i‰PyvVxp\a{JŠ…h¿o§:PwQp\^„’s—˜|Ÿ€´Z—‹ƒUʈÃMá°Ž™ÉŽ~Ò‰†œ°O‹Œµ’­¢_{’zŠxjb|££F—{zŠ‚etR>ƒ™²ž}šŽ°akЉˆ€Ïuk•XKvÍ‚/[F”œoxÀ•nh|ƒ”‰?JS€†;¯viS’[„¨Vpxe†Š_rW‰zŒŽg~ƒD=e§~†]|V…©™pŽŸWbyo[K›ŒÈ~}Vƒh·BYzlWbžU¨ ¡H~cvYTNo|zp¡–{|{šÎ`—Lž{Št€xS{Ëhœ’‚xŠb·OˆoŠ¿†š²n¥Andx››y±» „€õ€–\ŽQM¬o£f£ª…~™˜khƒ¦ˆ„Puhnš¬€r‹Ëx_ŽRh›ƒP™`‘~ƒŸ„¥w]~>²l¢„¤Ž¨ª„²º…@ˆ‰2Š~Z®Ï“ºt^ž™vw€T‘ˆ{™€m±‡qyq–@uRu–“¥o…¾_—–‹šY^b’¦n±J¥¸7WF¬ŽR”]†•–;XORr|’jÐXQq€¤^ƒrRrvªOŠu~oNÀ¦EÁ]mG’†–®q…^£Žy™¾’nXsŽŒ†Š”yZXd‹€{ZŒsÉ‹€›|_Še]hT¨Äªfc“‡«Zh«­Ž]h\‰lƒU|–gˆˆožµ\¨Éw¸©¸h‡y•ŠËh¿…š˜eR}•tsŸIuRAgx„¬žÇ„†‚Šmvfht™‹V…ψdU§Mežhˆ­nl‘…X‘‡žh}®ugnKXÀ]yŒEˆjOur‡z«V1œU]d¶‡k™bkp›–€fƒk•u™dsNya†m†Xƃq‡§`¯lJyr~˜r~w‹aˆGz‚¤‹„…wc•yu‹H¨oy‚Jo‘\¢oz„^–w=r~¡ŒVQ~A•ºƒmÌ^Co™gªƒxwtÙŒe³Pt£™dšŠLi€ƒ8©mndŸ}•qQ®*¨t½†ß—Y¸²§dYopX‡“K_ œfqs…UEuœT‰D²n€‹Xwˆ‡œŠŒp¶pИž{£c£^Whªkev‘q=±ŽEÃ=‘j8ºq¯_«É¡qqŒ©l–ºQ§€¬SršÍƒxGt0iœAxŒ§{Fuybf‘sµpY„@Gj>¨Š†—Y_c”‹D‡\ŠIš—¢š¯’ñJmƒc†Œ|¥‹@¼vmp¿S{‘p;—ƒ‡?g\=q¶–Y|ck‚aÈŽ»š[nˆ‰rz…v•‡R¢cu|‰…ƒ|¥`O8£‚Œtp¬†‹ˆÐˆœƒ§QQÈ—c…QŸ˜ŠS„¯›ŠVc|tB Iv‹[‰‰•žxY‰‚œ˜¦S~ŽŠœÍ¡y’˜PnS[e[}{AŤ±;—¸Gyž©{†³fwkŠO¦m—VS[”Q®‰j}m—c`ln…j›‹wo–¹h¢XiÂe°’£…šgjm|‰lc…‘uŠ€d\kˆŽ`¤—|¡yU`¸kº‡vßLX‘«\b‡ªƒfaVrtoW‚M…„ŒÉvmSmypFu†™by™“[ŽqÓˆ{Tvh‹‚§k”‘Ì»~]všKy}[~‡\g–vTf‘Ÿrq«¤¦Fo‘št¶Nvo¨¯”‚ºl²Q]”žc‚“gzsÊyIghVw˜¸owˆs\yV¤œ…Ryˆo„rw™†‰‹[e~nŽ’E­z‘†mž¢Šdxufo³¬{UgpŒhS‰^”H‘}o™Ë~ixu©˜ˆ]ª„ˆ²K‡w”_X‚±“[©j›£z|’˜tq‰xˆ•x}ar•{i•j…pc~iƒ‡Œ€yycoVw—x„uƒRc„^w¢wtc„»q‡r…OsbŒ…†_g6•]X~¡sidS‚W[†‡`ŠT‘=kYvS(vvV«¬ƒs‘mrކiqec„ŽT“qwˆ³“ˆp~”™~˜¨€/Mª¨LÀœ‚Y §E”™•¤­qx›g^—™~ƒ|Ðw[”s½Šo„do~uZ¢€˜˜zb~qxV’œ–;ˆŒ¡‰GŒW¶_dth¯jc¢oj_p”_}¤œš{\kw]~¥¸“„ˆ”O€œŒFI©nz‰©rŽ"o*ž²cjY€¶¢d²„k sc‰y5­‹qQp’ „®}yqmr‚p›¡^•¬`e}€u”™×}„[@«–¦ŒwLhW~‡‚¶™¢r‚¤˜6yŠv¤—ÇjktsT‚‹Œ?“™¡¨‡{Çq€ƒd‡”c†\E •w†]•X•‰–™—hQOn‡_z…•«[qÏ­¤‘”††z{vÀ\¯y¥„^Šq\`”¤ys¢qm[‚©s¦£º[§¦ºjƒg››cQ{Y›}o†5³q­bª¯aƒ†]v…“Vl‡b‚q|~œY…“~|m‹xx“‡¨~o—|~{\Œ[nU_r†\ lžeC’WjŽ‚ƒ[kWXƒ„­š€‹KhI|fTz~• —]“Š„fª“^y©¡œ€’h œj}SwK‡•œbxº©‘†m~QQ¤OŒ›†Qk`—x’+~uk{xfcyTY_}Šo\fyy [ªz„E{–žS”®jMx€šg’qjÊrJŠ7xhQi.¦ZOUm8i”P}c­nsœÁ’¶ƒ™J~Y†€šn}…Vy™¢”£«µ¡–—h‡gd—^¼˜„Äb`½™–c­m ‹}e¡viÆ‘¡†|qœ³p|ÀsmT•uˆŠž„Oˆjnr“tom„°[²gel›¤œw•Šˆ—Ušuˆqi[q›©bbŠ~s~pŠvŒÆ”}w¬qx’qlŒ™–‘Š‚qD›d^‹`•q”{¡u}U‘{Ÿ]|†b«‚zŠkl”†qˆr“lo‰eu_mq¡«uO°„¿™ˆr„‰—²“w˜kHƒ^h€nobGa{ž¢£©n«ƒ€h©h“ˆ—l–Îi|‚Sއ>‚~{a‰P{bm±•ŸŸatU”nŸvc›„g[~anX‚šˆrhzAšlmT RŽM{hjT‰iƒaPw˜È¯p|‡¯Ž‡l›£ÄÁ›Š‰†cŸ¯ƒc½Vio…nÅ ”…€…ktlœ–tW^}b§­“‰^¨z{‡l_n~–e®‡X[”v¥¥…‹|q€ ™s¢…lXŽ…×Av[ž’\j›A’€À«ÄS´‹¸y£‘p†{…®¦CJtŸnO\gTxa‘ÆyjÄ[|ƒv’RkHm‡ƒOrk8‘œ‘.†1‰„щ´fŠ–N~‰¿’ \s‰l[WÃ[E›¥f¶¶¡´‘ZYgtug*aozwkŒÄƒl‚ºpX@69„²…`ltX^a‡mvbqaq‡Ucg«¿x‰t\sz»qS„E‚gyv`Fvnay‘_‰aT³VOFªVR}X‡hˆh‰¶’¾Z]ÖˆeR_Y–js@ƒ“¤i¹©s|›hˆ«’Ó}_—˜™Ê™¨}„jžm—Xz•x±ÀUn«œv‡jvnŠsk†u“q‰[›WogcWƒrpz=Ÿt~tdvtc”š=dc¸‰€}wg>qœŽ}ŽŽ€pJ©W]mU–ÆUjwh~’l¡un†®‡†d]s}|Zs£x‰pme_zƒ‡ˆ`U³˜ebµ“œP°fQ’»‰£·M vru_§x^±‹žu¢ƒ©e•½›WŽ\Ijž²h˜¾nÁŠ“‡P°X…Ÿ°À„O¡i«Hf‰’œi­y[´ƒcTM|€µ‹[¤”5ˆl°žŸd„^Œrfˆƒkhrl0ki{hx{nN¬‰yF§kY¦ŸW²o™YÀd°x?m¡Z´•Ÿ‹ov0CLx|KG—n‡Zj™bqW{¤X~>»bnvY·”¢¥‰ZlŽŠSšˆ•Ïœ{‚o~O^n¡[uxNGyz0oJƒt—Ýx~ig‚_T‹l·cRŒÊœh™Zd¤–v‚|y‘›}¯¤ŒÐŸ§¥`¡ pŽ«‡~tas‡Tz†¦›j‹Š{ogºÄBfzw´z‹‚¥v6Zq~¥da‘wo†he¿yd¬,sŒ€Bš…k|y‘R|z™[Q¦¦—;‘k»§±‚miQÄouVi©bˆ—Ž~a_^‘R­¸VA‚–…‰ˆ¦‘{€vjckŠ||¦l‹•eŽk¤{Tm­pÊ_†€|•„–|‰gŒ~’€’ŒŠ†¸kl““_q¤rx{j¼‹”B›G‚h‚`_pw™‹«pƒw‚Y¥È_e|oDƒ”±R§•x˜xÕª„‘bs?Šn ¢«‹²Ÿ¨a…w¹,{ƒ§£W]Œd‚zuxf;sˆ†rVQAd‡aJnG†rUƒtЙІ³j†mZ˜~žŽC?x´©‘©lqqrr®±™jn¢œ¯œ±•¸œ]Œ’vå¾q}Œ†gfWŠg¹wqz¦ŠlXƒv?‹k|ŒzS5ˆ‰J —LVzIyzÎI¶hºžŠorwŠu—¢Žwc¦„Ž¥¯g€}\Ÿ—š„†TdtMi’Œ“n¼–¥W‚µq€j™´“‹“{yH•¡‘P¤_YŸ”vOŽ‹Y¦©ž°Žštª€¬gH½`~fv¨k’Špx¡™¨¥tŠ«b¤uŒ;ƒVx¬y\˜Hsv†YTmu†Žs¡J€@[—|<Ž‹›M|w’oŽ­_«Žb–€m’imylŠÑpSkŸ‡^œeC§k¢µjT‹zhs¥¦swo™œlYyz‚€„G‘‡ ˆ¼xg„n‘gsˆ˜bI^_›ž\wxvn‚{] ÆÒ¦§{YcY‡¥t}h[IucŽU„†VX‘njR‰ªd¡4N›}»°GwlŠ‹iN`‰„ˆt„Ž«•x¨„£…~dtk°Ã†Pfœ“K ‚W»o€q‹e—j—X|sc”\|—”g„‘²”i‚…´€h“‰a†—O|²‰—„\bpS™‡ƒukˆ}†xj‘dt–p’‡¢{’}~w|{RšuzƒV^hz”ty¢“–Œ‡}„p¥{‹~©…nš}¤W¯§mH’«‰Wh’|‚¯†lè –rX“N¨x„‹„’r¤¨´h‚cC€N—u~™ˆ¡eexl‚VW‡tŽƒ‡› t”™ahª¨‡Œ¶€{–V{‘T—‹[`~†h_gyq›|mqrQVˆL«…yXQk˜„d…gy˜xˆ^Œ}l}[\lu^yuuÀ¨b•t¤…Zy§y~`w„ƒbƒyf’¨|{YƒYpq~“nRul`ws–hj~`““‚‘|Œ ›snrr{ˆ¥¥U¨gº·WXRªh’S£VGek¤Š›ˆ±d„—…xT“«lp²›ªšŠW?–˜ŒdiaË„jƒV9¯Ê}—•g}žawhPIc”]Xg4‡et~jŠ;™_NÆO”7¥ˆ§ƒhŠru¡”`H±—‰xª‹½‹€xƒˆr®‚F‹pмA…™9sPv€u~wvq˜´‰6Á°–j+¶ˆXs³g£u†‹”‰Rfš‹wvª`’¡ŒA¬+—„Cz“¥›vXŠ‹•†^”W†¶³k ?ˆ›kF^ÝÈc´f“FP±z £»yC¯„}n‡°–]—uH’•}Fh³jzR|g”sJ¥{Šã]Àf©œ„vŠo•¡7•_žYnz®ž†—U¥…tvzaty„µftcx¨P„j¤^O|{£hd†ˆ‡™u¦¼tfb¤YkÃŒª?h–l˜whKp¹‹tiW_‘œª–ueQ˜q„¡rŒ„lvŠ”Ž|b‰‡Ž¯zY™€–S€‰¬¡œažia–¢j|eZTn{•dp‰Œ›‘©_Фˆ|yªKz}Fˆ|sYªuXwzœžlN‡}ynzvŒsŽ˜Ÿnª˜wI–s¢` ^©|`Š”‹{Žqf仺mgBŸys†aw©›^¼_OÃvƒÂ‹vnv¾Drl–Xn…ŠŸ¢s6j”Éz€usqqaP‡]ª|]x„ny‘h~Y‘–^އTdwŸ˜xq}r}”rrsš‹—_Šž¤o€ƒ“r„£™dvld„“›Œª‡‡jvˆvŸˆ‡z‘rv†‰„‹rk€˜Š¡mm‘zm•ky’}J‚«‚p“²†…–oop\¡•—‡…‰LeHup^¾–—p§]'™Lf|›€ÛX”†S´rd†qŠ|‰VZ}¡¢c/’y_rvŽ˜Š‰s{‡WD­…|Åo¢srˆ?L‚}“[ƒ˜V“Š|±£½t‡–f†”(„Q‹¶¦«h”ƒr›ž²7{_­bV™98—§Tbf_¦k{Ž^u|€q‰€|—•{v𝅬ˆ„˜‹¢‹k”ut³Š™–”vcЇ~Vnp™„¤œqÃ~´P€Æ‹t¤qg‘_Upl•b¥š¬™±¥‡f‰¥ƒ¥›Š†ŸBQd;‡ˆˆŠYy˜±u|ë;™u…smk¤„ypš–]Î}vnqQdmexƒ„©|‰’ä‰\€~¿|b‰~za‚w£`˜¬†Ã†“ƒ¢viEH­uI|†…œ~›\uy|_E‘}Stž‰|UƒŸ”z§‚svNq’—ƒ“yjcf© |yjZvJafŠÊ‡†;€]žŽZ³ƒQ€qiy9„c^x”v‰nr•„¢j’‰]ŽV‰^­|–VT¶’.XK™x„šy–®6“JZ”0J¨Šžif¿N£GqƒX|™{e.‘²Ây_h‹Kªh´ ¡yyXazTbkvb”R\”«dxO]„‡…§Atio£k{ª€\•­gVv`ž…mn¶Ã€¾‚«œ^YYˆQ‚Kv›¤‚¬g„—}k “§dxL¦{]M‘Ypz š†£“M‚rˆ©W§™Œ¤“§•¹aq^nžx™qotšƒrŠmlˆQ£yŠ_\JrY}¼s’_sS‚¬–;>x`‹„מca†Œf“n]q€_q…Љrs˜‚xoÅiQoˆcqkŸŠ“™‡’€œ„œ›b©¢¡WI–„¡ŽrÃV’Ÿhv™Mƒ‘²_’}y†Wol’˜LQ’Àx¯}¬nŒ¥z£Œˆ‡…jbˆc±qn¢oš2[fStŠ~c}^”Á™vy“ÒK…ˆ–¤fj€sƒŒ•lppmgšpPŠƒŒ¼šj4o—p`y~M]‰ŒY”rm…ÏŸ«c„¸†mSŠ3’‰ÆŸS‡a•s«wrVn p…• ƒ\¡„7—utVЍ‰°r’…v‘šdnŸ€Šflƒ«¢¡¤µ‘‡¡©‘•Ä{WR]_eoµŒcrU‘ƒ_Šei…šª‰h†m¾p€‚†”ˆv±´Œˆ?•²wbzm¦’˜8SŽ”‡Y·N£n}(Io}°M°“²fPsbjuVtwm_­v‚º‡‘‹¥1“ >‚q~|–ªtЉdv{‡\yÎs‰…ˆqRvg †¬y”x††œ§²ŸŒYˆ˜ˆˆ¿°C?›q~˜J¨Šdn`‡ºSTfkY¤8†–š\ƒ”œ˜w™m‹´cÂ}ƒ}’v@QÀ“Ysf¢aˆ—S|{³„CªÖ‘l‰L¡‰z’©eBpg¦hrU]QzYbˆfƒb•o„—ccŽˆgX‰ŒŒÃv~‘²‚’•ƒ™–€_w—}zjif™ƒ¡}U‰‡©vhrž•¬e„fh gl¡|µG¨”„–ŒƒŽ]dŸ\ŒfbEˆg“7³Œž]yŽ¿x\“ygŠu‹•¤©lZœˆ‰‘¡uvF“•}r^”ÜKŒŸiaUd¤kr–·u¥qkrqTž˜¼©{rWgІ}› €Ÿpp—ƒliYZžœb¤€qm…¦R^jtlN^[§›pNdu~gd‡MŠ©–¨¢ hb£rk_ˆšGktu´4~œžzƒ^‰2h˜”…r{¶;k\ŽL“ˆHvˆ?‡¦Zˆ…Hž›a¢OyK\œs cczŽ»XkÖ|c’¦’³ŸfZo£r|rДˆ~p«¿–™—aˆ³o,mj†}wŽn`¡Š3‰A^a„žN–„©–ÀiSv`‹aǬ{oŒJ¬umto4Úmb•g†ËYS q›Â+£‘-P'znszƒuol¦Vˆh’©o™•Œi¤qU‘kŽ{‹LƒuOAq‘hš`w»vUd¤“„lg¡ˆGp›™“˜w‚Š“\i’Ê|nÏ—“x‰m¢œ_—O[zŒ‡|uqlXjZŸK•¿†~zÛy§M{Š™th`§u‡v£Xr„mSeawmzŠÆv\›€Y~Š€ŽGh\·omŸuar‡€~œ¸i”‡›k¨±Šµ™ƒ|e–m¡¢¡¯œ}knl¬…YYfrƒ‚f¸uš”‡šq¥v¤„‡Š¥x’¯„Ëg~ˆƒtyv}‰ŽY¥vc9{¤nšqtp£l— ¡XvˆRqwd}ƒc`wrŠz~Ò|šYmpP@ˆžpC±¸Lqqq~{±ŽuY’ž„”C||c«Žˆ€¨Ss¤‚zŽy°MZŸwwvž]¤‰¹x{»Œfc¬•›t¢‘NŠŽiŠ–ÆŒzŒ™™msn‰§nPU”‰m`ËCa©¾©a{‚jj—„R»5X†¨kNŽbž“¯)‹nk`Œ˜•¢«Y}Ín£Ã†›[ÒÈ¢‹LrbZV|n¥‰’¯Ns`‡°ž“·b]Ys”˜‚¤p‹¨†žmlZ°¥UdŠHlžw‰o¡£]†Š¤žx“—^jrn[¼§´Ži¡’©• ’{Wx–7¸`›^o±MމB›¬žÉ•q¬˜‡}‘“yzew£kqr…„qjqZ€Ersf„oljcuœv®€r|„£O`vzO–ršx§cm”}wx—{R†z^›\n†ˆ”z†t‰€Œ”mCj©fy£W€g±v’rª”rwt¯¬‡B‘xVzœo›0•jšr\ŽŒtm†xT‰vtoS½§ei¦y¡·eiO™ˆ‘eŒ~¨cCx¯¨ª_„bŸŠUF‹u–[Ž’B–uiyO…Trvv{Ćš ›t§G…„z°]¥g{†peG^Åt‡‰wtn~¹Zžc†uœ‹„nkcˆ]¤>«¦ŸoHº§žy—¨]®gm”}v€œW”’s|lž†k¼dƒC†Šf‡{¢–Ot²«†t]Ÿt`~vPxD…ž‹ŽŽ†|±Vƒ€ry•„bj’DbŸš‡«[IˆmŸq}v¥Œ*”ƒi”o“‰lv®{€†^blˆ’QŠhŠ’o¦v›~x^ƒ3Df œ†…“Š{Ušq¡¨aOg…^ž£–qZf¤˜ªG~jd¦s§u“w§k”Qwiš”dµQ›~„SxnpŒº¡qxiKu¦ãnˆ„©„lÒlª~“Wv—§§±:X±gm{ÃI‚™©Zƒ„zk¸|¤ƒ™º‚±u|}ºŠ„…h—ƒ™Zµqlx¤–no ˆ{¦o“…ˆJmKŒ›i¤ŽÄ—”h\™‡ƒ™zo„|_¡´v–€“Ib[”¥šŠ‚ƒƒ€–Jw„qUR‹jor’”F~ŠM|žWpg‹“dkˆ~Š'q£iu’–x|…l¯­…iOYdouNeŽž‰yPvy‘²­”m~™uv–]Vjy‡¡z‡L‰œ¨O¯† ªqvjV’Š^J‚c›‹Tvj©Ot¬ˆ†f˜Œš{ss­­uPp~•~¥Wbm…]žqrÉY{[|r†k´n[]Ž©\¿p†«lgLŠoyW{@‰‰« Rw¡bsÃ]t–¦Jjjqšº¹j@“W…²¢ž¥{l\«m§§¤h¯cSrqœ£µ‚n¥Y€«Vª®r’›ev{µh• q´SyR¦x›¡oXx9œœokw¡ºBŸ~|Ÿ®d±„¨_x‰xiŒu€w‡‹œk•š•e~hm˜Mi¥€z€p†‡Eˆ•|jxš\ƒl|vж~z‘…eRqK‚}‹gi_‹qBpGf‚hƒ~”€X}Wv€…š…{Mu…zzzrw‰€€y|~yˆ|tv~z‰n|‚œ~€wn{{~|pjnxpyp|hw†rƒ|}{\˜‚{}†nnv}šyz‚{|ƒ†{|uŒuz…x}}€€}yi€~{€‚v‚|†}rƒ‚ˆ{u|y‡y|dSƒ}vˆx{}z€}‰f|†{€v}yt}us€l—„‘zz|`tz}s|pŒ„z|{}~}lzƒ„lƒ’w‹}{‚‚~}x‡{{n}~Š|txn‡{w„x€}~}|€}xv‰z}}xƒz‚|…zk{”€ug€y†u|}x|yn|z|ˆwƒ~y~f†{~~{v~‰nxsx{}z|Žˆnz~{{‡€z|y~xt}ƒ‹{v‰€‚€vt|}~‘~z{‰†u{~v~z~}y|yv|jzvq~uuˆwysW}}~~}yztzvxzªƒ‰}|z~xˆ}v€w‡}‡‚|€c€xyŠ~…€}Š‚q‡ˆx~wy}wqs~szr{‚|ƒ{y}…~zz}o|v{‚ˆ}ƒ†}†{€~~{y…pz|y~}|„z}|zŠ|xy‚{…y„€z†}j†Š{y€}|ƒ€|f‚zy_{ƒyz}zqƒ~|y€wˆ}|x{vru~}‚‚ƒ~{uqt}„wx|urr€}vx|vw~}ƒ…i€z|x‡z}u}\rzwz‚yxzwm„tn‚{z€…€|yˆ~ur‹v‡zwrk€|{†„}l{|}z€{q{}r|rd~f†sœ€wƒtƒ~xw€{ƒz€yxtu€|‚wy„€|‰‹†xƒ|zqfl”Œ‚~‰|€|”n~~~x‚wu|w}|€ƒ{zyƒ†utˆv†p}x}yri}€yqrv‚dpe†}{}my~}‚x}Švyƒqyy‚„€st~|{sv}{v~‡}€}‹„v|‚|tzrŒtu{…“ƒ€z~x˜u}€a}vrxu{~~‡~|z}}І€~~}~~…nz„…yu}iywv~•wH\z|u}Š‚vv~‚rzn}t|tsŒoyzzw~n…Š~|~zx~xi~„|s€||vwwpxoŒt|mz~lj||~t|{~€{su†r†zƒwzw~…€q|m€‹||}ކˆtyz{z„v}|znqw€y€r…{‚„rw‚|{‚x||zwyuy|fdh}‡…{{‡ƒ~x~Šy‡y‚y€€ƒ€mx†‘…uw‡‘‰†}rutjy€y_ˆym’€tuˆu{z|„ˆx}|{†{{~Y{}xz~}z{Ywt…}‡b‚w„Œvxsxwyn|uWzƒ|~{ˆi”ƒ‡}uux~†…uƒp|t€ƒ€kuw‰~w€‡‚~_{†xkyq„€tpv|zƒz}|zƒ…€€…}xƒ„y‰‡€yx||‘‚lyw~q‚•ƒ„{|x~ƒx{t~}o€y|~…y}|ƒ{|x€€~†„~|qƒ‡~lz€‚w{‰‰tiy†}~~w{{}…„‚€z€~Š{v{‚z‚j|xi~„‚wui~}{~~„zyxu{~‚‚€ˆ|zz}…†z‡x„}‚y‡n|~}|}s…uЇx|‹hx…{}}tjƒu|uw{{ƒwzyv~u‡w~u€”}‡‚qy|y{~…}ysxˆi|v}†~{|~}}v‚„‚„t{z}xxvt}zwby~wy•{owv…|}‹…z†€„‚‚zu€m€rx|ˆp~Š~}ƒ~ƒzz€‰}{‚z{“{uy{‚†kzŠ}}Šs„€y€xsv‡zu…y‚}{~z„zv{‚x“yxwtƒz~~~zw~{v†x}vvytŠzy†}v|{Œƒtw†„z‹v{txzƒ‡zˆx|y{wvsz|~{w~†€xr|‡ƒŠ{xrŠˆy}ˆ{‰‰u€y‚{„Št€‡t„y~ƒ|‚}zx‚~‚zƒsoy—}ƒŽvƒ‚…}|tˆ|ƒx†x}|{ƒzxiˆ}}zk{ƒ~py~zwuz~s{~ƒU{zg‚{p…}€w}jwr{|†‚y|z€ukmpuƒ}~ux„~y„~qx€€€„{€€{x|€c€x^‡~€vy}}w‚vqtk|~{{~}€{€v{ro~€t}†u}Š~„tz~z‡mzrlƒ‚kl€†y€y‚€}jsm{{Š}|{Špzzq€ƒ€€|}yugv‰|z|~w||„І|{ƒym…}x…~uy‰„€vu~v{}‚„{~|Ÿxƒƒz‘}~{x}x~„~}wu„os~u‹}{wx…uj}’‘…ƒxhr‚pw‚~yw|~‚†}~x}Š}yyŠ}‰~fw’s‚{|~n~|rjƒ}y‚~z{z|znvxtsz€mu|u}~}{ƒ~{ƒ{rzxvzƒr•x€€~~~}€„{}vzz{tu}yl{‹s{}ƒvz{}}‚|‚ƒ[xŠ~q~|{ƒju€xywyx€\{{|{l‰zj‚ƒz‚xv|{ty‡j~sryl{|Œ€vyspw}‚~z}p{}}lƒšs}zxxv}Œz{z~ƒ~†}|vv}}}x{~h†~z}{y|o‹€‚€v~zg_n~~{~zrsmzt‚‚{|x|zz„„}}€‹y}ƒz}|z}t{rx}Š||ˆ}s{m|†~€{}Œ~{z›}|ƒy…}€„‰ƒp…{€}|v}zz€…’}‡}w†t}‚v{zz~vvvq„|v†ukm}}vw|†€{v…{||yx‚z}wz„yy}~lz}}w}yˆz„rw{s|z„ˆƒy‰n}…~x‚w„y‹~t~k||w{}‡tyvx}yŒˆx‰}ƒu€ƒ†uŽ}€ww‡w„qvt}i~~~~tx}|zz‚y„v‚w‚‚€ƒƒ~…zx|{ppxyz€|„‚ˆzx{w~€o{zzu€‚n{‡xy}v|x~zw{rw‚‡z~sˆw}‰ƒ{{rxy‚{o„uv~Ž~}zt~}‚‚zx‚vu|tzyzo}{m|q~vx†~~}~‚xh€Š‚~ˆ~n‚~t„w‹{x†}}~xz{‚}wˆvzu}„oz~vuu{~o~yqr„{u|ˆ~x…‚xy…z~r}‚zx~yy~€…}uy~~z„x€ƒu|ƒuu{|†r‰‚}„‰‚|~…}z|~~„xu‹x†yv{‹|x€ˆ€w‚vs}v{‚{z~{i~|‡o‚syiŒ…|wqƒzu…z|t‡u}}}‡yy„|qz€~uv}qyq}‚…~y{‚s~€ywŠyƒ„…x}ln|rw€ƒ€{…wˆ€}zu~||~}|yg„{|w‚}‚|†w€ov{€€{l{€|€zxr~qt}}x}{}tƒx€z{{z…~}x~q„†y{‚€w|„x~~‰w|vw…yt}ƒ‚‚ƒkh{€u‡ŠwŽ€~swŠŽ‡|„w…~y€‚|‡~‚x{|ˆy{ˆzu†|~~}{w‡{}Ž}ysx{|~~{p{{zi|ƒj}x}q€wp|y}ls~xyŠz…}€yzo|s‡ƒ{xspvx„€†€~}‡|yvtƒv|~|Š‚†|rn|oy~}†v}|v}s|z{}w}€y{xvrvŠwŠ~|…p|yx}}u~j€„‰wy‡}‡yz{|q}vx{w|‚~~ywz{€y‚lt|z~yƒr‚{‚…{o|xwy~ƒ~‡zr|q~t€y€zz~~z~xz‚{‹wy‡qj}€~‹k†~~}~zww¥~‹x~t†w€|}x{{{m€p€‚uuƒvxy…}Š~ƒny~tyŠ|iv‰yx‚~€€Ž|}}wyy|v}~}|z‰wƒs~~s{vk}xuxz||wyvMv|iƒy†y€jxn‡{ƒzw‡ž—z}mupy}vO~g…}|yz{€†i{z`z}|€l€“{€…}x}‡„}{ƒn…}o}{wwˆ{|swrs}r}h{z‹zu~w|€{‹{v‰‚wŽ}}…}vy€~‚}uy„‚|ˆ{z€‡wyxxtk„yx‹†syto‚ctwx|z{w€ƒ}„€y‹}~|}|~†‚x~†vwƒvw{x‹}x„q‚w~‚z|z~ƒ€‹zzYz„„yƒ{wz}…‘{ˆ}ƒ|~l}€t¡x~vƒv}Š{C|r‰€ƒˆ}wz€zto„nk‚€x}{„{vsƒ‡|y}…w~y€r„‚~†~k|‚ˆxy|}}yy¡†{z’uƒy~˜€~€yuƒƒz~€}€{yˆ~ytrz€o~}z…ws~€zkxŠwx{~vw‘y|w‡v{v~•{{w‡|sqzˆ|{…†ˆuŽwr‚x~{ƒ}†uzy„~‚zyuqv|}e‚l}‰p~zw{”}wyƒ{‡{w€ˆr€€‚}}‚‡|€~x{}„y}n„uy‚rtˆ†r{l‚‘|{„‰z„yƒ~z‰€‡wM~~}v}xzwt€€qrw€„~~„sx†}€€‚ˆ€~ƒi|oŠvovm€ƒufwƒx€v‚}l~u„„w{~{yr„€y€ƒt‡‚y|tw|r„p}†j†‡xj}nr|†}‚}Œr~ƒ†||‡wy~q~suu‘zyx€w}tx|~|€{‚……}yo~q|ˆ‚v{‚qwƒ…}{nu‹“€|lzxxz}z€’a{q‚„|€p{€y{vlzwƒw}˜skrƒ‚|‡}z|mql~~{vvx{zrxˆ~……z}uz|x„u{ƒezz|w{w|‹}€€|kg{{zz€€tyrk~zw‚yŒ{ky|{vvu{zvyf…|€…}v\|n}}t|w|z†u†|zŒ{w{wvy€{y}|t{…z‰xpx|qm|z}||{y}yu{xvlke‹z|}zy‚zyzw|Š|w}|yp†|}|†ux}ŒP‰~…p€y\„qyjz{vu€{{–wzzur‚{yƒ~x„cq‹{rzwv{xY†|xusryn|swU‚€wftx‹ƒ`xw€|}{}nˆtztƒ‰x{‚u|}ly|y‚nq{yeyw~zuvy…{Šylz`|xxxu‚†{‚ztŽ|€w~…~yxx~|€Šz€ƒz{tzq||{u€~‘v†Œuw„sŒypm€~{„y‡x‚ƒ„wwƒw€u„t}…~‘„{}zmwq‚~}zt‚r~€y{}„x~x}qŠyun€‚~w‚m}u€z|vy~y‚~r~~y‰x€zŒt‚vs{tpzwˆqyƒ†rv{~sxx‰z†…{h}„ƒw‚‡y~w|tv{r|k|x„}z{x|‰uƒ~qvy~…|€vy‚Š{tyg€y}{ˆ~{€~ru}ux‚€‰|sywoˆox|y„|}ˆ{|{uz‚€”|Xyzyyxb}€z}yzyvxy~w~‚~€vz€~zu}yƒwŠsx‡x{uszw~{r…y€}ƒ}r€‚s~r{~|ƒ|…{~€||‚~€|~~…ƒ„ƒˆvy„v}‡z€yz„ƒ‚v{mq|€|ˆl|€ix‚Іwvty…ƒzz‰t}€{~m{‚†u|w~Љz}{zyr|„||{€‹yvŒ€y„n{y‡|…wnƒƒ{‚sts„m†~w{…xyzz}}‚†v~pz‚zw~wpƒt‚||„}|}uƒ€w|ƒzxƒ…ƒw||„~x|xu^†yw‚‚t|„|z€ˆƒ‚}yxuo„t‚jp|u‚p†ˆs}{ˆq‡~~lˆ…~…s|n}‡…|ƒ€Š‡~Š}lƒv„ƒdƒƒv~€~}„†‹€~‚†‹z}„ƒwk–}v}}…yx„Œ‹ƒ~€r‘~}†{z…v‹tƒrv„‚‚~‚z…}~ˆusx€†„sy{zr~zmŒ|…~{v‚‡‹…gty~}€r|‚wy|i~…oƒ‰~‚}}Œ†Šs†|w€n‚v‰x‚|Šƒ€…ƒ{~…~Ž}ykˆzˆ|„‚‚Œ‡xxu…ztpzo„r|w{}ƒ€‚y…t‡‰{s~‚u|€uƒmy~}›‹…€xzz‹zƒ}~€ƒw€yˆx’sŒ†p}|z…{u~~~{q‹„‡v}uŒrv€€‡u‚{‡Š€†nx„€t|†{…sr…{{{~j~zw}wzxsvƒ˜{{m}uŒoy‡zvˆ|z€w€o…zl}‚‰zmsˆ~}|s€„Žw{‚€|…{y‡oƒxx„sw…‚‚€„‹x–}ˆz{…y}…|‚„ƒqj~|‡v~z‚‚r†}wx‚ˆˆŒ‚‡€|Šxyƒt‚‚†††€‘‡|~{{„€}{„Š‚r…ˆ…‡f‹|…™|~}rnus |u„‚ss|{~‚„}—|}z‰†‡€}v|lwpƒŒ–utrµ|tytr|zxz…y{wk~†zr…j€{z|k~‡v~ƒw‚vsqm~~‹vz|uy}z€x|‚‘}ƒ……|yxƒ€l‚‰w|~‚w|}Ž~t€|x{ƒz|hƒs‚z‡……v•…\‚zzir„eyv…q}wwz~xk~~€~€…tz„ƒ~‚w|yj‚€t|rtwz|‚„†w}„xn€z}{y~voxrzu‡yz~pŒy‚g‚†|yx‚rj‚x~z~~„‚{l‡q{|{y~Ž€|€tzyƒ‡‡‚z‚€|xoƒpx{€~nu{†‚|{vuz…v~m~|oz|}…|zt~v‚y~n‚‰Œ‹y}…|z~†~x{yyw}‚ˆ|gwvy~ƒv}|‹|x…}ui…ˆ~~v‚xr{…~‚ƒ||sm}~Œuvƒ}|ƒ„‡{…y{…s|i„x€|€~{ywƒ}€{}r{„~Ž{€v‚|œ~|wz{{{}uˆ‡x‡€„}}€uqxxzqyqƒ|z‚|{pxˆp‚€‚ƒ}wxk‚…q~–€mz‡r”|‡xŠwƒ|}}w„yƒ|ƒ‹y€sz{xc€{x€„{v~‰ƒz~y|it~~{y€xzy|Šu{€wqw~~xz„}ˆ{zw‡zmxzˆ{‚‰}w†k}€zxx€}~}{£yvw}„{~yz~y}v||…x€|{~q€‡||}…~t~‰„||ƒ‚ƒy€{{p††ww{{~u‚‡mx‚~txy{†y|s|‰v~y}~\xr€ƒƒw{x}h}ŽˆŒƒxtƒ|x}€|‚~uq‚z{|Š}y{~y…„qk‰„t‚w}„u{x…„€ƒ{{|nwrwšƒ‰y}xyty||…|z€}lzƒy…{nu~xw{ƒtuyz„vsn|upzŒ{}w{…z\„~|msy~z‰‡Uyyx}ys‚„y„ƒ}ƒy~{zm}†~tu†„yuƒy|you‡„€yv|v~w{t|„ƒ€]€‚~r‡‚r{‚r†{o{ru}xqy{yq„svyuv{}{zzzŒ|ƒ„x€o}~z€~„z€tqyz}†y\‡}m†e|‚†~vƒƒiƒzyv€}l|sv|y€}ƒr€w~}iz}€z}zw€{†}‚„|ot…x~{q€‹x„€€{ˆs‰Œw„ƒ€x}„†uŠy~†‰}¢~‰„€z‚{†|‰~}}|kyso€ry~w{|}{{|€„ˆu†‚xƒ{Œt|xt€|{‰‚g}•‡‰‰}}~x€~|}‹ˆz€Œ~}wŠ…~†vƒ€ty}~zvŽyŒ}‡‚yyzx€‰„|~{ƒ„ƒnz|Œyuy}qƒm…›‡x~r‚|‘€}„’†ƒ„xszz†}{|u†{€†}}…~‹z{‚xp{xz“}tŒƒ|}~€|€{†}‚t}…|‰vŠu|~†}„™Š‚{t~…€‹~~|‡jˆy‚|yyzŽ„„|“‚~…‰}y|xx|‚†|~r|y‚|…}v~yzjŽ}wu†Žw~y}„y|y†„~~txt‚bv|vt~€€Ÿy…}x‡†gp~|~Š|{w€y|„|ƒ}}|“}y…t–xŠyyv†|}……|wy†|ƒ~‹…~ƒw|Œˆ’~އ‡„‚}~}|‚…Ž}‹€…„€ƒ}rr€„zy‹‚su‚~xuw‹|ˆ€„…o€Š‡†n{i…ŠŠ…{tq€}{ƒ{€|‚€z‚oƒ”€ˆ€„~~tz}{…‡}s†‰‚w}‡ˆzyvŒ{uzx}|}~{ƒƒv}{}Œ…|v}sp‚„‰€…y}u}‚€~s€}Šp‡msiu|{nv„zwzytƒy{†z|Œrƒˆhƒ|~v|ƒ}‚~~~snƒ|urzƒny€‚ƒ€hrvvp€ƒzz‰x•€}wˆy€„xˆwz‰}vtxz{ƒ€wx|{zyxvvxwm‚ps~|„vy“ˆwwjz‰ƒwxs‚ƒƒzu{xŒxy{wxˆqf}|s†††t|‹|z{x|€„|ˆwq„w„{‚n|tl€‚y|ˆy}~€‹‚{€‰z„w„Ì}}u}vg~‚z‹‚}…{s~|‚nƒ„zxy…„}‰zƒ~xx{ƒtx|€w|qs}{‚„~1q}yq€|u|}xr{„~|—€‚ksf~y†‚y~}“o{{w{sƒq€n‡‚y}x…€~rv‚‚tzƒ~|Š{‡wx~qmssvuy„…{xz}qv~‘“~~}zy€‚y}vt„ƒp~xz€ywxˆ‹}…aƒ{‚uˆ†|tx~…~…‰”t{uy}‚~s‚|wr~zvpzz‹…‹|w|{xw{~…‹v}wh|r~€}y~|y~ƒv~o|wv‡nrzƒp|{u{~qxz„}l|†tj€v€{}v€}z}€{‚fy„…wŒzx€}‰{~~us|€w‚|o}wƒ{q…s{}{|‚zv}x~††w{xf‰rww€†‚~w{€~„vlo}t}~–~yxy‚ƒt{‚z€|zt}}„Upyh‚~a}{|}{€~wz„{l{‡Œv{d„{‚Œ~|utnx~‚}|y‡{†{z}v|„}x‚o|†‚ˆ~y}iwryˆz“}ƒ„}{~‚‡wy€yuyˆ‹~~„v|iƒzz|~zyzz„{ƒŠ}zz}m{zy}|~}€i|{w|{{pp€a‚‚xxt{{³u}}€qzsyUt~ˆ†vvq{w€u€x‚{„z~€Ž„~›{yzo~‡wm€o€z~x{~‡†o||€}sy€~€r}†Š†lztspyzs||t}‚†‡txŽ}y}”}z||…|xƒ€z|€hx|zy}u|„†…y|‚|~‚€‰x|w„n€|p~~}yy€{|€z~€}}}rr€~}‚zy|‡u|}nz|ˆyt~}xzw}w{yvz€~{~e}~t|v€‚‚xxax~|{{‡y}}{{~uvj{~ˆ†{|lŒ|z}{ˆ~S}ƒy~}}ƒ‰€|{…‹~{}u|ysqwz}yv‰|€rzf|†{‚‚€{~r‚{y‚w|‚{•†€o|ssuqyqx|cuou|€€x~q{zˆuyz€|€ƒzŠyƒt^u|€~s†}oxy‹‡r}{m„{xzˆ€~s{ƒpv‡vz‚v|‚xyu~e……yxyjx‰~||sv…‡mxtv„‚{s|‚}Yƒ~‚|}{…x‚{……xmr’|yt„€€€~jx—|€€{}…ƒ‚q~ef~‡X{ƒv|x~wo€}†‚y}}…Žˆ‰„~jrˆxyz„{kx|w„g‚|x~{|…|€sx}{s~†‚o}„…}z[t|„u„up…ˆŠ{sq|g~€‚†}oŽ}xz€~izvxsxƒwtu„wzz’z|€‚s„sq‹x‚‡„w~z‡{w_‚„ƒ€puy~Ž}}ˆu|‡c|v{tuzwƒy~yt{py{‚~€†yfiƒ€…zh‚xs{ov{{{xs|sptˆ€mu~{twyx‚x|z|…zwy{}t‚ozx€€bvyu{nthuy{‚Umlyz€euqeˆ}sr‚ˆvy{~‰y|‹Š||Œƒ„‰xy|xz{|~|sy€‘|u}uˆwlƒq‚tŽuƒ~|uzz}uevŒw}{||~ƒvƒyrw„}rxƒowz}s|i‹{„u|…x‡zp}tbzy}u‚€u~qwj‚u|}{z}~{…~mx}t€hn|€{ynytp~~o‡tŽ|ns{z}ˆyvw€zr€x|stz„}x|wnwƒ|tw€„Š|vz}y…ƒg{ƒŠ~y~wn‰~~pmv||…fkz}……x}~yz‚rvk~~~vq}m{uu‚ƒ~t~u„iŒuyn‰‡yz‡q}‘{ˆi~ut{z{{v…~Œ‚v}|}sus‚†‚ˆx€„}{ttqxЇ‰{„€‚~‡x|||oytƒss}{†z|€{hvy}wy‚x}{l…xy†~r{||€qs{u~y~wu“€}~‡_}|v€Šˆz|…ƒouywsv{‚{~{}z†‚Šz†wyymjzvyƒ„~€€}qvxw}|ˆw~jzxv‚tyz‚‚vx€}wt}‚‰v‚xˆsy…u~‰q|q…}v|x}ruz‡x€q‡vs„~†m‡{}ƒ•ˆwxtvwyqŽ~‡‡}—nv€m|vy€€†wƒ|„|…€v{}yz‚hsz~xr~vy‹|~†Œz€ƒ{}~{‚yv‚€‚}†}wxtx†qƒ|xy‚pz{{v†€~yvƒwsƒ~ˆytv}|uƒy{}xz{zwbŽ‚‚w}}t~ƒ}||~‚~moyz„{{€s‡|‚xvyjƒ‚zvq|q}wy|w€{s}z~zztqx~€†¤z~wpzxuz„yhqx†y‡{{w}vx€Šxw|qxzx}€…uŒxg|~|{z…{‚|{t|u}tzp~w{€zzx}€xvpxuxpvw†n{~‡}‹h{t†…x}z{‚z}}}wr|‚qxwyxz|€u„~w…vŽw~mzxk|ˆ{wwyy~€€|w‚‡w€nov}y~~|€~zh~„qxp‚ƒ}ƒw|m…w„zk„s{‰p€||€~{ƒmz†{~s†|œu‚zm‚~|yx–{{xr|€|†|y€~‚wwt~|ŠŠi‡z|{|rv|y~{„~…€ƒy||„g{vy}}”{q}‚{ˆy„}|w•z…ƒ{€~†€yr’m„{p{{{‚|zy‡{ƒtw{{~ty|zˆ‚vp€iuˆŒ~fv}tfiy}Žzu~Šzt{t‹ov|ˆ|xxwy}||~p~rvs}ƒ}{qzt{v‹~…x±ƒ|~y}pv{Švvyz‚ww{{w‚xr}|kz|‚yrzxuˆ|lz•|}„ˆ}}Žm‚mŒ{…||}xqyyszxwwnn~u~|pƒzv~{nz‡eƒ~†~vxxvxoz…|‰…zi~„bu~~|zw‡}ƒ~†xwt‰}zyzvxys…~u”‚|ifyz†€ttv{}{z}r~yt}‚‰u†z‚}t~~nyvn…mw€oo}x‚{w‡~|~y€s„~t~€Š{qvyy~€x‚v…z‡ƒz|wz}ƒ~xm{yaw€zxt{{†Ž|u…€Ž‚zqr{|xv||y‡z‹yznzs|“oƒzyywˆ€~yƒ~z}x}zwv{zzypƒ{xxgvƒstpyu~yx{€{~rŠw‡y„|x{tatpy‚yˆ††{v{s~‰tyy“rYz}x—y‡x~…q~xsx|ƒr{}}v{ƒry`t}…ƒazƒƒh‚zw€Š{Œ‚upkq~‚yuq{‚€~ˆt|‚w€lx~€~}k‰Œ{zol„‹ux|y{}|s•~p‰€{w{{~…~lz…ks~x|~|}}|}z|„ˆ†|„|†ƒ}{s€uˆ~wŠsˆzq‚r}„„‰z~ƒ}w‚vuty}|}‚wyivt~~}„‚|}{|‡zyptm‡…xp{t}|…|q…y}{Ž€€w~|s}{|hl}€uz{uzu~|„€z„|s~s}ƒw€y}yv‚|„t{w„–|}}~~j|wˆŽ~~sƒŠˆ†x„r|{yr~…{ƒxw~wƒ{z~{~„~wv|zx{‚‚}{p‰{y}}{{|€„‚st…~wƒ…}aˆ~‰n{{ƒx}…€ƒ{t†r~€zj‚}{yz|u}~v†|†€sy†ƒŽrzwzyrƒ}x€{I‚U{~zŠz{{~ƒy|€}|zxq„tysg}|}v‚uˆ‚‰~~€{z†ƒ|ts„—zs|‚syzw~ˆ…~n|Žt~~p~tz~s~{r…†}ƒtƒªg€yo~|Š~uƒ~„|…~mr}€yws|~~†u|{Šup{Šoi}~Š‘}y|nyƒ€}q}}‡}x€rz{‚~~~v„~~|nuVu€~{|z{r{t„u|z{zw€r†x~ev|wx{Ž~r€€„z}€y~~‰~€{y~y†wŠvn{…x€~ƒ|rzˆ€~…w{€ƒxtƒ~‚{•‚}‡q|z}|‚|…z‚ry€zzz~€}}|z}{zuuz”{z}‡{zv~zsn}pƒy€…€yl€y~|€~|~€}z~}}}|‚~„ƒ{swƒ|r}~||x€~~wo{‡~rh‚‡yr‚‡t~~~‚{{x}xwx€z€w}x…}„‹€yx}rz€ƒw‚~o{|ƒ‚{x{w|}xz‰wzw€|y}~z}…|vz…}…wƒ|}}zv‚~~u†tv‚~}|{†}yxŒ{~‚y‚~{{€w{z†vzr~{‚wy…x†~…t}}||€zyƒ|u}……y~~w{{}o„p}v‚~}z{ˆyƒw|ƒv}~|€|~zyw}‚z‡ˆ{ƒyv„|}}}t‚x~{‚yyt‹{t€z‡w~€…„ƒp„€y€~y}~|‚„zs}}y†vu{{|ƒ€y}}‰€xv~z‚~ƒ|~€|€h}zy{~†{„€sƒ{x|w|}„}zv~p€{vz‚x~}{~}u†wz{‚~Žxy‚y}u‹}€|…|s~z~ƒxv|‚ƒ€€‚x€}…x„vxu|kjvp€}~r…|}wz}yx}€{~u{|v}y‚}ƒ‚||r€|~‚xzr||{{tq{‰{|z‰u€yysx|­vr|}€}}‚y|}‚€r‘}ˆz„t†Ž€x‚|y}„}{€v~ƒk€~}‚ch~†}~xvyzrt~v{Œz˜|€}{~x…}|t‹ƒ}v•…vvxxxw||‡~r{…{{z€}z‡~“z||}Œy€|~~~“y}{……q||z|u€yx‚‘t{|„zx|}€|€ˆs„‡}w…‡||‰w{~yƒv}mtr€{v~||€~f{{xr€}ux‚oŒƒ{ƒ„z™}z{€‰xpu€~h…v|}y|†x{x}}x„|q‚x}zzyƒ}…}u†yn}Ž~qx‘~yk†|yz€zw|p~‚}{Žƒ…{u{|zl†z}„„~yyxxz„|†wy‚~~|tz}{~yxv}z€{v†p|€wy{pzl…ytgzn}z}}k{z|zq{vutz…y„w~‚zwyyh{zy~s€{g}†}vx€„ˆox…{||xzˆ…hzx}‚qvƒˆwzx…ˆ‚~}{x|zo}wo‰x{c~||}}r~{†x„~~z‰‚{}{|u}u…€¢~tƒxd|{†s…‚}y|}|z€mƒ{_‚{ƒ{€qy|™~~yul~{~€~}v~y†€}‡rs|vl‚Ÿ}…Ž€v|‚w€try|†jˆ}€~‚|}sy|{x~}’j|j|‹…et‚xƒ}v}}…v~‡u~n€ƒ‡„|~hqƒ{‚€}{y{xxv|zw}m|€rwu{~„‚{}hz€ƒ{mžyp}wn~…€s|‚„|vy•otxzw{†v€}zxx{’†Œt{…Š}…z}|ˆŽ|r€}€‚c}}|~||ƒ‚qƒˆwy}{{‡wrs|ˆ{€||b~|}y{~šxx}~‡r„{n“{ƒz|l€{wr~}€zx€}€t~ydtwp}ƒ{ƒpp~}€„{}~ƒz„yxy~q‚‹†}€…‚|u€|~}yrzyƒ‚tk„„}~µŽ‚ˆ€~}†…{x{ozˆu€}|qk}ˆ~xy}…{|z}‰ƒvw°|tss~{|zoz~}€xƒy€|}މ}gx…~|m…{}|‹wpyoqoy‰ƒw€…y}z‡x~u~sx‡€t~gu‰{vyrqzxw}ˆu}~…{vx|ƒ€€hn|syt}}{w~~~{“{{}|‚„Œy{y~І–|}wy~xk„€~†xxx}n‡‡}|€{}„zƒ~~€€|~z‰}x{wvv}{~|€|…wŠy†|R~y~~‹~€wz|‹n‡€w„{v||‹s}q|~~…s~x‹sz~ˆƒsz~}y}~y|}{|nzznv|dƒq~}ˆ|{{r€ƒ†{|q…x†x~{y€ˆ{€‚Š„}w‹|r}w€‚zuƒ}…vpsŠ„„}€|‰{xp„e€€‚|€ƒ…~~}uy…m|‹{u‚{~‚y|{vj~‚w{‰~}‚~z~}my{n}~‰{…j{‡„{„zwn~~ƒysxz|{|gt~z}q|‚†|z‹‡ƒn‚}†„„x|m|qjux•m|{€e~ƒbv|€ˆ|}t…|{y|€z~~ww†cwi~€x|{{{…‹}}|€‚x|ajjx}ƒv€€|}€{}w}|ƒo~‹|z€||†}p{ˆx’|x|}~{„‚‚~€ˆ{|||‚yirx|z{{~uv{y€‚y~osgp|h‰wuz~l}{|‰z}|s~~z{uƒˆ€z~u‰zv„xwy†}ƒ|~‡{x‰u{…yƒzƒ{‡{}€szy}m|{€ysxx|~…r‚yp|ˆ€y~}xƒqwyx~w{}u„{pv€wv}lzx€‚sƒooqzu{}~{~xˆ‰}{uz{pw|~€„wuvzy€r†}r„z„zzvƒ~†~n}xeƒ~wƒvƒ||„pwtŒv{tƒ{…k‚{…xuqkxx‚pxzv‡~~€xƒ~|ult‹ovuwpx}|zz€uv|‰z‡wvx€r~vo|y†wt|„[zmx|o‡{zy||€|}‰|…x}‚hyˆy}ˆ}y|zu|v{ƒyx€€}f€†pjhqv~~„{w{nk{tg}|nvu}xzi~}~Šz…„l‡Šˆzy}ryum€}|‚Œ|‚vu}~‚o}{wvstq…}w€}ld}z‹|q{u{zsswt~tzxr€vyfyƒ€ˆv„{zƒzud{{‚Š|}z|v}y‚†|€v{€€pi„wzztx~w€€z€z}€}p}|h‡‚{rky€ƒ|x{u{~duj~tx{ˆƒ{||{‚{}‚x}tz‚|w}‚‹Qzs‚€~r}|€v}~€}u{{†ƒ~z†‡my}‰tƒxzy„‡sqxwŽƒysvqt{yz‰‚}~vzw}q‚{}}tq}‚w„xvpn€|}|szyw~zrzy{nz€zwwp||”vvxxy|wn{z‚{x|xz}Šz|}}|~wptquu€ms}zt€m|ww|‚zq„yt‹€‚}€…xyu{}qw‹{|}w{„rp…zq†uu€€{zy†z{}~yu}ƒy‚€‡hx{y}}€y~z~z~}{€€{€vˆƒtwwzzw}|}…}u}|{zwz€ƒƒ{zz{}yv€‚su‡uwx}}‚…{€cƒ†zy~{|yƒ‰ztyxu}‚r{||‡wŠuxy|q|}v€vqwt~€l{€€†syvwƒ‚xtwrxzy|t{…€„}|‡w€ˆ…uƒnyuw{u{y{{€z€€x{q‚†~‰z‚v‰‚…w~|€~sstz~xz€„„vjŽ}p€€z‹‚vz‡r}w|u{w|~‚w„‚†…‡{‹m|n€pryŠt‰‚zyi{z~€}„‡x}z„i~vv|{‚~|}y~‡ƒƒwx‡}Šxƒ{„‚so‡{…y~|{uy’’…u‰€t˜{€|z~y|tzs{‹‹|q{|‚v~‰…y~‡~†€uuys~„€Œ}soƒ{|xo„z€wu}xpvs|€{qyy}…uz}{{{ƒ{•~v|†r|‡…|u|zfwy„„€yxtƒws†‰x‚…n~wˆxr{yp|zv…~€t–ƒuˆ„‚m|ƒ|{~|…|‚zƒ}rŠ„…„‰x}wpz{€}v„Š|~ˆ|{‚{x‚ˆuw‚‚oz€{~uV{†~…}†|ty…{‚…|€|‚„‰‚lƒ|jyy~|x|t~”~s{|~‡|ƒz€‚~‰‡}†~v€|z{€‚t~m{xw]}|Š{‡zvˆy„†ey~…j}}zvq…pƒ‚xmzs{†…ysrŠw€{€‡€}~xw‚‡}†}‡‡Œv‡ƒus}u~gsoˆx|¦mƒ…ƒ‚{}~{ƒ€u‚z|{€st|‡|y€sƒƒ}}xsi’v‚v‹„‚u†~„zt~†wz‚††twƒvvvƒuyn|{„yzƒzt{}pw|}‰~ƒw‚ƒmuˆ‰~~‘€t|{‚~‡|†Špx‰v„…sp|€|zv}wy~ƒvuz}ƒswˆs…‚‰qjˆyw‡}…r}}{ur~„vu‚‡~”€}m…w„‡w‚qy}d{rz‚v|€z…†rƒzƒ€†€€y|x~ƒƒÀyl‚sz{{€z‡Ž~v†„Ї‡ƒ…r{|xwz|„‰v‰v{‡r{t}ˆn‚…€„ˆŠ†|Œkv‚{{„y€€|~‘~‡yr}„|‡{u{ˆ~i}‚{€¬s…qxy‹|Šz…{t‹{v€~||w„}„|o‚sƒ{~‡‹{|wyx}‚‡•ˆ‰y‹‚z~|}{t}|‡{{|vŽ{‚ˆ}}z†y…wsqx‹ˆ~{x~|zv~tt‰|v‘†~‡s{zqnuyƒ|ƒ€‘vx{€€…yy|y}‰wtuw~‚…€€„{xzy~Œ„ }‰€z|‰…ƒƒ|xw}~„~„†{‚w~lvx……‰~Šw‹}~{‰~|y|~z{|‡}zˆxzrz~ut€z‡|y|{~€‚|€‡ƒ…„‡|~}~†wy~‹‘uƒ}…v•€~y‡‚…„}‚|€…z{€iq{xƒ|t{~sm‰}‚~v{‚„~||„}u|ƒ‚y…Šzƒw„}Œoˆ‚x}{ŽyƒŒx‚zn{Šzw|z‡†yƒ{r~Œ€|†‚tj‚†…Šu†‘gvŒw‚…{‹z€–x{zw…w‚‰‰€‰vƒ|€xr~‚‡y{}wy~{mw†v€…€rtˆ~€™s‹~z}‚z‚|{w}xy}||}z„y{u~qxx|yv|€yˆr€}t{vy€}††xw‡~x}w…~qƒ€||~{wv{stxv~ƒ}}…{†}ƒv|…~Šz~{…x…~€|~|xy}ƒrwx}€o}€{u{yvz|{z|‘w„…ˆ~’}zv†~ywŒ}wy}{yyy|„z„}v„–xs}~{y„~‹€y||sy{‡v|‚{w|{zz„€~~w€vu~{‰vyyky~|q|~}€€wx|tywyw}zw}|ƒt‡{}|x€ˆz|pzƒx|w{{ˆxz~}ƒu„x‰~zzy€yt‚zxx‚Šx‡x…zt…{y‚v‚x}svy…z}o‚|…€|y|}|wyypvx}z~rvz‡{xˆ{w{w}x||}|~~{„ˆy{yŠw|zy}||{}}|{zyyŒ~ut„|t{z€v{u~ŽtyƒŒyxx{z‚xw|‘n‘v|uƒwn…u|‚z…wt{ƒwz{}…}}ˆwyyzwx€{lu|v€}ƒˆ|€{v‚yƒ}€v}~z~…v‚~v‚~zz{Šy†|„wy|rz†|s{€r~yxrx„Œx}‚r~{qw…tuvz€rƒ…ƒ}ˆ‚z€„|~t{b„Ž|upzˆ„ˆz}—‰qxˆs‰•i~s…€|xuizv…|‡‚‚‚|mt{{|ruŠ~„wqƒ‚{{~€zt|rm{v}|’t€r~‰}x~€}}€}ˆq„z~~}€„d€}ˆgp‰v€€€|ŠŽ‘’q„ˆ‰…}cz{†ixvs~y†…„‚u€€€xymyŠvsw}€y‰€}r|pqyƒxz}…‰{ƒz“xy}|uzu}v„{€~~}zzƒy}‡‚y}ƒ`z…}„vƒ‰ƒ‚uyƒuˆ|…}uz‡Šo{{zr‡€|{€€r_†~Œ†Lt…‹ˆ€{{xl‚ƒx~|tu{‰yg~ƒ{y}zxs€ot{}}vwy€„v—twyx|†€Žvwo–u|€|y|xy}}€€Š{‚|~ƒ„ƒ‚ms|{wu“sy…}y€‡…vtx’}}uonyd~„~†~~y…}{{lw‚ˆ‚|€y„zŒ~~s€u‚…‚Š~€€‰w|ƒ}‚{}osgrgz…u[€m…„s}uƒ‚Š‚‚rox]oqˆ‚…t}w€‚‚x{s‚†q…Œw†ŠŠ‡‡x~yyw€rwu~sƒ~yyyzzzt}j}‰}Gx|~ƒ|wrz{p{…„u|{|„wz~~~†|€‚yz~vx~xzmˆ}Œ{|…z{‚•yv…y€‚uw{qyw‹|}|x…‚~zƒ|„ƒ|nx…y„w~u€s€‚…{z‚u‚n|†„umwxvx„|w|rtwzz…‚|wu|zqwu~zdˆ€mrwvt‚‚v{|‚y|}}‰wxuŒƒw€}n{~}zr{tuovrxz}z†iy|}~€}xv|yw‹{yw{{‚|y€‚v{…}ysz{‚zƒ€‚…wzzww{t|…zsw{’{{}‚t}qV||z‹z{zr{¢xuƒt‡u‚h}ƒ~yzw„}v~|‚yz~zw|nuz{q|||wƒƒƒ~x{poo‘‚tz€„…|{t‚~ƒu‚~vn{x†vz……ytpy‡}yx|wx{|„…w}ƒ‚}}~€|‚|~{~w€ƒqzw{r‰x€–iw…~rˆˆlvzyq|z‚pxvŠy|s~|my|}oyxzyw~}ˆo„€}{|wy|lx~v‚~uy’€‚†’‚r}|„|‚‡z„|r€~g†{w~|z~vr|zv†z~|v~}‚„vy^~{{rwxsxzƒ‚w~Œ”€~{~wwƒ}|~ƒ~Žpw~o„vwx‹p€}†„|znv}~Œ}~}|€€€Šƒ‚„‚}|lv{|qy{z~}€€r…ˆk…uo€~‰‚r~||}}zw}ƒttx{ˆƒ‚z~„}~||}|zzy…~kv‰„{ƒ‚{}xl|~uwuyzwŽ‚zv|tt}€„Š„‚|ny…xƒe‚~t†s†ny{…}}~€ƒ„€ltw}z}z|s€}|z{~vkyŠm~}z‚z€ˆwƒƒ„tx…|s|…p{}b|}{|}y|€}|fs…z|…}ˆ‡ˆ}e“ˆ}yƒ~zc€€|…ˆx{}yw…z‚|ˆy}w}{{ƒzryz~zxwusw‹u„Ž}w}qi‚}wt}pu{|‹{ˆx|‡s„†}w‚‚{s|‹€“ƒ‚„kƒx‚ˆ€{€{|„{|v„‚||zz|†{|xŒ|z‚~v€|’tzv|~z†u}~~m}txx~{vz€‚~€yeŠzk‰vsy€…b„zv~y‚~x|‡}‚}|‚x‚zzyŠl…˜zŒy}wpŽ}}z}yˆ…s|€}z}}|{|„~}‚p€}z}z|zy€…‚{vt~|||†~{‚€}xŽ|}zx|‚€‚wvs|xƒ{vr†mknzyzƒ„€€zx…~|‚y~o€r}}mwv†|}wƒ‹ˆw†z†yzzx‡|ƒvug||€wxŽ}|…~wx|‡|~~x€xsƒ}rq~ŠŒyp{w}„~t|~€{~s}{~„€}x{„ƒx~‚z~z~}‚„}t„~y|}uƒy‹x|{„‡x„€~{ƒ‚|„sz}uv†€q|~yz|u{s~}px|€{x}€|~‚€{ƒ…s||~‚‹qmt|xw€|‚vy~‚zyzŽ€ss}kssz|w~iz{€‡|u{|ƒxq~y|wrt}{v~‚„~‰}jŽ}‚{xzp{w…ˆh€~otdxtˆq~ozkw‚’x€„€z}yƒ{whm~‚d}€‡‚y{€‚}z{utn{u{‹…‚v‚ƒuƒƒtu…uw…xw~{x{ƒ~v|}~r}|{~„„…„}—ƒ‚m„|}…‚{}sz‰|vx†vxyvzyzzw‡‡v…uv{}}~‡y|sp‚~w€~|u{tvj|v~{…}wwy…‚ƒwƒ}ƒ~xm€Œ€Š€‚t„{~z}}}~ys{s‚{|yx€y‹}rvs~}…ˆŒ{mw€Š~w~f~“u’ty‡ƒ}„{x}z†z}„`„|~zxwtiz…„zr}~||…y}{‚p˜yv€}ˆqvx|m{~}€{ƒƒ„€zuˆ„‰|‚Žy{}€z|vo{†}k~}q~{~o}{}‚}v‰~{w}s}ƒ{ZŒzo{~€xyt}z‡ƒ~„zz}y|–zryz|{u€¯…z}k‚€}|x{tfrƒ}z}ƒ||€ƒa}~~z|‚uy|~…{}|h{€|‹yzux€{‡sƒ{xw~}}ƒ|~}€~|wŒz‡|}w}|ƒ{w|}zsvŠ}|€o|Ž}{{op…v‡‚‰w€}y~z||€€~€y‡|Œ€’kŽ}uyƒ|†|{~~yyox{w€‚x~~u~wzs„ozv{‰|n~v€x{}ƒ€v|x{tb‹w}q~}|{n}€{v{h}x}{{}‚~|u}|~z€|kut}v‚|}|…}{}|‹{|ˆo{ty†ˆzf|x€vh|tx{y€€qc^}€~y~xx|r}€|€|}~€wzŠƒ{z{|ƒ€zn}}}ƒ~~€y{{€{wƒz€x{w~|}~€‹€…m|~„q€q‚~‚{€r{€^}~{~q}s…{„zx{‚zyq}ˆ…†zvw„{yzyr~€x}y}x|„u‚sxsyywt€lx}€}|€‚zw|{†yƒ€s‹w€}€‡|{{{r{‚s{€‡r~ƒtuq|~‹ƒ}{{|x€zx{~t}ˆp{€ƒy~ƒ|ƒ„……z€ƒ|}|~p~zyyy{„zƒ~t{wƒw€€r‚x€}z}{yj~y}y‡ˆ|{{}|{‚wz|‡}h€}‹}y„w{||y„yo‚z€s‚{‚x|†{r}~x€‚|s|‚}~ƒ~|ƒ€}‚‚}…}„vw}…„~xzslr„wryv~z~{ƒ}ug{yvx~z}}‚‰€„xj€~yrx‰Žt…~xytx…}‡‚w€‚u`{€y{‚yx|}yyv{tyv{yƒ~v€Š}~x{x„w‚s€ut~€ƒ{|€qs€s}w}‚€‚{z€…€‰j}wx‡s|‚~€xwyƒ|z‚†}‚z|psx†ˆz†}|||vyy{x‚yw{‚€}}~}~}x}nz{|w|py€ƒz†„|ny~y€Š†{{zvv‚~v}n‚u|t~‡€}~y‡„€}{{z}yzzzawy{ty~y|‚szx€~„zu‰}~{zuw€†|x~vz€p‚xet€~|z…y|}zxz€ƒ„q€{‚…v~z–y€~}~y„w‚sw‚‚u}|ƒv|~wx|ptµ~r‰z€w}…€{v}ˆu~‹{~v€|z……‚vtz‚”zx||‚q}~‡„{‚{‰|…ކ{r€zqum‹~|xo~yƒŒŽuoˆ}xz‚‡}~|‚‚ww|€‚ƒ}‚xop{vvu|†{v|j|…wˆ~}vou~zr~}€s~m~€‚pt|xƒˆuww‡y}r`…t~{‰‡s~|~tur…v€‚„~t}w}€~s}qŠƒ‚Œƒr|ƒzŠ„‹y†vx}|uƒp|wgx}{~z‚t…zyx~o|o„}e{}{‘{‚|z{|r‚…€u~z\yr|p{s}†y{„{x~t~z}x†ipx€|~z€o†yu†nƒ„|`s}€}z‡q}x{qz‡qfy€wu€|„}~|~Šq~uŠw{‚zx|{}|…yv|‚xy|…y€~u|nse~y|tu†‡vy~„}…}~}€}|qˆw}|‡yr~~€‚€xzƒ€z~v||xyzvy}zt}}|ž|wWx}w{z‚ƒˆ€t~sxw~~‚{ƒtx|ƒx{…|my|{po€uz|yy~tŠ}t}v}ysz‚u€‚…{{~yx}x€~yxˆ}}…~xtw|}…Ž„k‚€r{{{‚t~yy€x}€y‚p€yz||‚x‚xvy~…uyzy}†y{y{yuzy~ƒ…z}xr|||z„{‰†v}‡~|}xvv~ƒzt‹}|~y~‚€~}|‡|}~y†m{uƒs…xxwyy|y|m|~v‹€‚x„~~}‚zƒsw…ˆy~€|{y‚}€w‹rz~|ƒ†‚z€€€~}}t€ƒ|~vw‡|yƒ‚€}|†~‚v{}zxz„v„„…†{~xuwuqz€~w‚w{|wv{z~x|{‹~z{{y€vx}x||…‡sy|†„zvz{y|rƒxp{}|x}u‡s}{z}~|}~|{|~p‡€}}}x~z~|{xy‚|owzuux{‰{}u{wuzu…€u}zyyzz{€~y}w|z}~tƒzzr||‡x|wth|s~}‚{‡ˆzkvyxs‰}}Šzzp‚~€xy~yzu{}{€{€ƒƒ„{z}q}€|}‚~{x‹zy{qw‘„z}~yyv}ywrw€y}‚rx|{}w{tov‚~|z„„w›|zvˆyu{pn€„{z‚}…|€‚x€xz€‰}yˆwz}yy™u€€‰sw~‡||tv€ƒ}z{}ƒruuyvv}~€{z{‚€z}v~|tu}‚}€yw‚|{zzƒ‚zt€}~‰}v‰‚{‡|t|†„|x€||{sˆ{|xŠ|}ˆvyzx|y~v†nŒ{z~|—~o~|‰r„~wy†x}w~z‹‚s}~{n}}}}|a‘…|}z{‚y{|yu~€„}wuqz€~€‰‚gx|~~z{|{wy‚‰zs€}|z}†t}v}vwzw{y~|zœnp•|xzuxy†k|{„{zy‚|z{zƒ}€v€€w}w‰~w‚ƒƒ{{|z€}w~{€„|z€x€w}‰zw|}|wz|}k…}z||{yt{{}z}y~y€w~†w‚}ƒqxx}~‚zswt}}…}~~‡y{‚yy~x{x~v‚ƒ€yzts~tz}}‚|kw|€z~rwz~z{|gy}}}{x{~ƒ{yzyzuwv‚€‰o{u}€~Š€}€r~v|oy…|x“v{x|…vˆwqv‚…ptw{~}}Œzuli‘€}msn|b~zzs{~†ƒ|{w‚‚e^…y‹ƒx…x~|{}}g~xmv~uŠˆz†œ}y}|z||r{yx~†€…z–~‚}‚}zŒ~ht|†}–Œs„szvˆwt}iz{Œqzxxx||wvu„u~}~ˆw„yw€„‚v‚v‚{r€j~y‚zu‚}zv‚—~y€v}ny|v{vj|{Ž~{‡z~”€~wt}€‚}ƒty{|u}zz€‡|‚‘v‚}ƒll|†vy{xwwr|{|~Œ~wyy€‹f}‰hy‚}{~ƒt}€gw}z‡€zt|}}}‹tvyhŠ{}{yj~~w„w€zwv~l~{|€x|ƒr}ƒ—„z‡~r~wvy{s||ƒ|Œƒ|V{k}|}{zjzx~}rf‚{€}{‡v}~xŠ€r…^xw„|{xt€wvƒƒ~~}‡{„wxˆ€o‚{ƒ„w}x~y~yu~•|tˆz}ˆzt|{p†sx‚}z{€p|¢zv{~kzy~{wƒ~~ux‚t||ƒ|u‚‚{…t~y‡}t{ƒu€z}€tr“zzv{|zy|z‡~z„}}xzz~|u]{sy~‡s}ƒu|‚|‡xvzy~‚€}|y€~sŠ|zyyyƒzh{|†f~‚†yzzu~‡}}xz~}wyv}y{ƒ‚y‚„y{~~z€u€…~t’zmx„u{y‰vy}x|}‚z‚~€}~zyx†~€}‚€xx|…|xnz††~rr~z‚}…ƒ|v~~y€ƒƒ}|…{zyy€{x{ww{‚o}w{w|}u{{w‡w~}u|p‚|||x…{v~z|~}}}~|}||}x{z}ƒ~~|…zyx€}ƒ~€wr€}†‚}yq„€ƒs…~y|~yˆzywrz~w{x}}ƒ¼|ƒ}}…ƒ}z}|{‰u†|{~}‚€‚yuz{{{†}wƒx€~Š~qwszqxyƒpƒ~u{xx}w}~€~z|y}xq||€y{u€€|w{‚~y|v|z|s{}ƒ…x†{|‚|xsy‚ws{|zu|y{wsboyw„‚}yvzzy{€€‡€ƒ}~}y†pu|ƒ„|~r{r{‡pr‚|xo‡yz{ƒy{€{vx{{Œ}y}q‹x…|s~}€||~„yovvr{€uvxzzvv†xw€o‚‰„|„†~‡w}uz~uz‚}~~€l€ty‚zwz|ryy‚yy‡Šx`tz€€|{yuy~x{{y|ƒ€}tw†|{v~w{|€yy}u}yƒ~‡n‚€‚~eyƒzs‘{UŠtzy‚ˆ…~„w|‚pz‚|s€ƒ~w{o|…zy€„‡wƒ{suqh}}y†ƒ…ƒzxyt†‚vy„n}ƒˆx|s~‚Š„~€yy…‚wz†x€|z}t|‚z{{z{z‰„~vy†m‡}~€}vƒoyyvz}ƒˆy~z€’~po‚z~€~„€„{€€x|~}x{rz~Šur„z}€‡{uŠo‹}y~s{{|~Ž}‡{~r’€~|y}…ƒy~€s††t}|ˆsƒywwƒ€„z‚{}€…vw€w~xƒ…yw|€u}{{ze~{~~}|…ux€}{‡rl€{}Ž{uw~zwp{~„~|€s~|„z|m|Š}h‘wwƒ‚z}vv…‚€rq…ˆ€u}€‚ˆz~y|y|‚y‹…zoyƒxy|~y|‚ƒyz‚xw{z€]ƒ}x•t‚‚€}{Šv†{|‚{‚ƒq{s†‰z}yvt{ˆ‹~{€wzqys{zŒ}{~u…v}z|t}‚€{vu}|‚‚‚~zqduuƒ|u‚s†zqqxzyu‰•ƒq}nxzy‰z‚‹žszq|~r{€|pr‡{u{yyŠur{‚q…ruzz€|x{z}€|f‚†w„|…}y}€w{xz…rs{…tz{tx~ƒ~s~…}€€„x|w€rsw{x{xxtƒgyxƒyty~~kp‚w~zƒ{}s€~x{w~zuuzyuƒz„yo|€ƒyyuvhyq|l€y€~{~|ykxy~}€|…jƒ€|‚oo~{ƒ…wtsvvv‡|€n~‚€rrY{x}|z‡rv€˜‚uxn„|yq{xp„{~hzu|€~}…y€wz}vk‡†}†v|}uww{v€y~x„}vq|p‚~yp}Ytv|}{}~pjxp~†sˆŠ†„yt€{}wytsw|Š‹ˆxz„{ko€n€o~}n~y}|}}„uƒˆ~{tz‚xxvxux}qtx†w}ƒyrˆxy~yxp~†wtuqty‚z|u„{z{tƒ{y‚vx…‚|tmu‰z‚x|†|v‰x{}ov{v}†|†‚|„{jvƒ{}v}x|‚y}ƒ}‚yz‡xmp„{vuu|„zm~nn…€‚…ކx{zx|…†„ƒ}~€w€ˆy€€‚~~rƒ~‚~r~q{ƒx{rŒ{lv‡y|uŽ€}z{yv}vq†~ƒ|‚„}‰‘w‚}{ƒ|}wv||‹…q}~sn‰uƒ†r{znn|snq{{~y}u‡w‰~}|tˆ~‹~lx{‹€‡ƒ{pqxy[zp€€‚„€‚~|……tŠv}x~}v_v~}y…€ow…~€Žt•{y|ƒ|ƒxyzƒw~z‚wz|ƒvvYl|†‚vr~{_|szŠ…€{‚{zz{qz~|}}z‚€z|z{wƒ|ƒ|€…€|…¦u€{„v}‚€w…€v…z|z„w|€€|„t{t‚~{ƒˆƒ{~€}qz}|~ytyo‹€w…w„~Œ{vƒ„{}uv[~m€z‚~{|‚|tx}~„~r|zj‚Š}ƒ‡xw|…oxu‰w€w|{wt€Uwzvzƒ~~pzx‚~„g{x{]†lx~zyl|‚x~|„x˜†oly†q|gy~z|}{‚~y|{€~}}sx€~‡€qw~in|€x…{~qv†‚‚|w~€{xw€}~|w€zkwx‘vz€y{x}~z{Œz‡~}zyp|w„t‹‚¡v}vsrx‡xqƒ{~l†ƒo–†ƒ}}wu|j‚{ntz|~|v‚x|xy„x||u‚xsu{{~ˆ|}|‚|z}€nx€x~cu€|yŽ|u~~x~q{v®zc~vx‚ƒ‚s}zw}woy|v}Ywy}}‚}r‹}jwpr{sƒ}†|}ƒ~q}xx~‹rŒ‚~l{€|‚}hƒyi…Š„}y€„y~o…t{y‚~}zv}xx}~„|ƒ|}†wz€€yw‚‚r}}~uˆzƒ}}}}}eƒ}{„zmŠu{t}j€~|}xv~ƒ}…is™|€|zvmxw…v€~€r|}wŠ…|x€|~~gz‚ˆŒ}x€uzx†zz|qwy‚|}z|y‚{…~|y{ƒxy~py|€{|‚ry}„ƒ‡„{„{|}t}f…yue‚s|{|y}t{t…vlz}z}€wƒvvvzvznƒ~z~}|…~}y‡zi‚}z{p~~z€x|yvˆ|ˆ‰}{‰}w…wz{s}|}wnzwuyux}}z€}†j~‡…hx}|jt~“}}{x€x~}wƒ}{sw‡xr|}ndz|~|‰~v||„{}{£u{€~x}y}|z|v€^~|ƒx}ƒ{q||~ˆ€|Œ~‰z|s‚~|t{k„}~x|z|„†zw‡{}{}}„‚|€s}„y}€wq†ƒu{‡‡qwƒvv{€zzv}|{jµ|}~yx|yv}v{…}n{~tz~€‚„Œrz~–ƒ}y{lz~u}|z{zzƒ{€zy|†€{}~|}{}|ty{oue}„xt|lzm€rƒ{~‡~}~hn~|y‰~wg~~~{s~{pwu‚‚|y|}zz‘|„|uunt||}}~z|az|z‡‚|uz…r‚Š‚{|{´€{}‚ƒ{~‚}}€Œy€x~yzƒx{…|l}lˆy€ƒ‚v…ƒ{||ps}ru~}y}r~{nŠyy„}vv}‚{||u}…xvƒy{‚x€oz|x~„…|l…Œ~ƒƒ€o}‚{}}|{m„~|}{w{t}{}|vƒ‚~w€„}{}|‹x|yxvd~~wx~{}wt€w|„~}ra{utulo|{zx‚x~y{~{{{‚€}~‡i}}vz{x}n‡}x}…{~€x~jk{bnƒ‚|}t~c|z}|Œˆƒ~~€{u‡ut}‰j|~€‡~~~x}fk~†~|€qŠ~|x€t„„c}h}}|†…}‚„†y}}nv„†jX€€{€„u{€tu|pu…{{r€€y~y‚}~~qw†xŒƒ~}„€~u€€ƒ}}yƒ…ƒ†zrp{ˆ|w{”t|~ux~~‚v}‹…pwz~}|f}}}ƒ{zŒ}|s}l|soivƒ}vvyvxvƒ}‚ˆˆv~u…}…|„‚v„{ˆ~y|n|‚{ƒpiu‚‚yt{…†}wgxx{z|}…wnƒ|„}y‚z{}qxv€€`}€ƒw€|}€‚}†}~pr†}y€|||y„|r€„}v~‡n‚tvŽxx|€k…ƒ}€x}}vr|€uw‡x‚z{{~{ƒz}€}”hz{„}{…|r}{q|sˆt~y~}‹|v‰szv‡wvp}||ƒ{ws‚xsz~‚€u}€zƒ}‚{ƒb{x]sz„zn}€Œ}~lz~|n€x~„ojh{€~sy|}f{tozx||zv|{v}z{{ˆƒ}|{xq~„t†|wowzs€rwtv{vƒ_~„†y}woy}~}{…v}…kwZmu{m|kx{|€zv|~€ˆ‚zƒk……€uw†‚t{v{‡†{ot~n}x||yƒmwz|yw‡~r{kvƒt|vƒ‰~‚†{{‡…{vyv~ƒ~…y†‡xzxm|zf|{ˆw…w~‡}~ƒz~€€y‹|t€iˆq|q|x{|vwx„‹‚€yu}jwu~|u}~€}€x‚s“yr~tl{‚s}yyzzŒq€†Ž–„„˜x†wvˆ†y~|ƒ‚}‰y…}}v‚|„€‚ƒkw€ƒ|r„}qt|€ƒ…€…uto{‚{u‡rrx~z}yz‚†|€‚y…X‹€v|wk€x}|yvy}}|€}~„€x€zzzŸs€…}~xuuyt‡y…s…xz{xƒ‡……€y…mhv{‹v|€rz‚xŠz|wjzzz~vpx€rzxux‡Šz|‹m‹}xtxwsns|~†}|†€v†xІ{~|~x€|„„z•u{~Š„sˆpˆ{lzˆ‚~}}xzw€yu‘tu€…|wr†{|ƒ€‹u‘u}rƒy„c„ƒwl€††Œrzx€‚n†sx„v€„|„t|€v…‡‰|€tvp~„ƒ~€‚}€xwsw}w„…„€}†‚`~‚›‡ƒtw‚q|‰ƒz{€}„…‚‰…t…†ƒx|Ž„~ƒzzx~ux‚vƒu{{~pwpvzƒ†zo„~¦ƒ‡~~y~{€ƒ}ƒyw|{‰‚o~}p~~ƒ{‡…|~x}~~z…‚}~}‚~Œwyyty„t€Šyoz~|o}„z|j{{{†|„‡xu~~{……z|tƒu~€}z}{}~qy||Š|†x{xz|qv‹zwx‚wtxr||x€~|}x|‡{}|~z€€~vƒu~}}†i„{€Œ|tt…‚}}|{~€|q‚~|ƒ|ƒ~„}w~zvwƒ~‡x{€€~~‚tq‚q|sz…~xz|~~…~{~}~xzq‡h„}t}‚|u€|}y‚‚v|j~}yvwƒ}r€xˆzz„}x‚}~•~…z†u{~z‚~†|rƒz{u|wwz|x~Šsitvz{‡{v‚qy{ˆ|}u‚d~|„|~}yˆƒxŠjvq}{rf}}s~ƒ|~ˆjy†|ov|z‚s‚yp€{~~|~„†zx|pyytw}x|v„yz€ˆme{|~€o‚„wŒw}‚s{s}‚~ˆv}uq“ƒy‚™z€€ytyŠzƒƒ~}~z~np~xuŠ~|ƒ{|{{zy‚}}~}t}x|}„‡x|{ƒzx~~}€~~~f…p}{yd|u‚{zo{v‡|x~}}‚l‹†z†~}„ww„w~q„|€}x}~z~~|—w€€{|}s|x|z€zo€||bvvyzw†}|sz{yyr{vz{ƒy‡~}†ƒz~‚ts‚jz~|À~~yx€|ww}ov|‚{p}q‹zyyƒtx{u}€}‰pyw€|~|‚z‚nk{zˆx}ƒz~Œpy{}}n~ƒ…|€|„{ƒ{|{zp’y}{~|w€}†|z„ƒl~w{€Šv|€~{{„vs„zzvtsƒ|zx}}}z€v|€vx}yoƒryxos†}„Xv„}|}xp|y|x€w€w}xwy{{€}z}’‚y…‚‚|y|r}pƒˆ~~{€w|~€t}z€~yvyzƒy|}xƒiyzsr{ƒƒ~€||{}†xy{||ƒ{{l{z–€~||‚ƒ|z‰w|x|}{}u…{{y€zu€r|t~Šƒ€~€~zq~q|{~|€‚”€|vvtvxx„x{ƒx|ƒ|€ƒzwi{ƒ{||{yw~|mx|}sv}d{z{zs|ƒ~€vw„‚}|Š…{{ƒz{yzŠ}›p|€€~{t€|‚|~y†vfƒ{~{zv{yrzf{€~z~y||wzprhv‡|x‡„p|‚t|€zot|Œnr|uqrr}z{z{em~o|zyu‹zxt“uyjh|x~‡gŠ€pnr€{rv…|lŠ‚}yqtƒkw€{nz~†zn~€hv€}xn||ƒznZ}vlvƒ€~|sŠ„vf]|d{z‚}€vvxm~zƒ„}zz€}|buvw‡~uƒv‚|ƒ}p€||}{}oxx}{|x{k‡‚|zŠww‡mmƒ~uv}vz†lo‚e‡‚vs|~€|z{|y}ƒptŒwƒƒ‚yp†n}{y|oy~|‚w{…zwwu…x|xyp{wƒyv{‰zuƒˆzgyx}}‚‚{r†}yu{„s}…unu…u|s~ssuz‰‚z„†znz‡x‡ƒ~}†r„u||ƒ}nˆ}}‚rzzn‚…sz{†{‚u‰s{~~|p~oxs~wt|z€r‚s„‰…ly{zw}ƒvW{q}}ƒwq}‡|‚ƒ~dƒyxvxx€xzpq€~v€o€|r}xjt„~||~š{wxv‡{ˆzsy€~˜|‚~x|{~w~mf|†rw„wvn{‚}yx|~z{‚yxŠ}w{{|ut{ƒx~{r|o‚~|ut|{…i{}|xw‡{s~~p€r„u~§tt}kxh}~|yx~|y~€vsz€x‘}|~zvy~€{x~zrrr{{‚ƒ†|}v}}‚„|nzx}z‡{~|}y~zŠ|||{ˆ|{‰s‹s}~un|{tw}q†q}vz}wt{‰…Ї}|„~}}zvŒz{|Š„{‰w}v‡~‰uz{x{}}~e€ˆ}}~„t„v}}t€ƒƒƒz‹‚}zƒy€~y…„xz|`|}~|~{ƒ…}€w}|x†xƒ†y‚‡{t|}xz~{‹{|c˜…zx~x‚‰~€w‚|Št|}ƒ}||yyq€yo~‚€}}uvŽ{{wt}}y‚~}€~lv…|v‚€†x~}€{€k„y|{|‚y‡x|~{||~v~€x{pwv|z~zƒ||zy‚z{q„yp‡~ytpƒ€}‚zv||}Œ|€Š†‡yzyƒtx~~r€qz{v‰}r}‚y€ok{y~ztjƒƒ~Šy€y|~vsŒw‚~zz„‰|wzƒz{~}{|ƒ{~z{†so~{“tƒ}~€m}“t‰y€zˆwf}~zxˆ{n“tƒsp}z‚{t‚uqy|ƒz{”„|€p}v€{…}zƒ{x~yw{su€typ}puuqvxqƒ}wnn„rp|zŒŠƒxy~‚|‡o‚yu{„}~yyw{ƒsz~y‚{{ˆyz‹|x{z~o…ƒ~k{|~v‚{€‡d|…ƒ€€y~~~wx|vlvy}}jyu|‡ƒ€yzzs||}xyƒ‚z€t„Ї…~|qu†|‚rvp„†z~€y‚w€{„y‚{xvxxƒzwxvt€rzˆdxtfx|tv|zz}|~†€zvxo{k~w{|u…}n…zvsz}s}h~q†l€{o†‚nxŒ|twtwj\Ž}w}zx„y}su}„|yt€{n~{y~ƒp}pwzzžry~ƒxu~}|‚n‡{vxvs~„|z~z€vƒz€‡pƒn|~y}wv„|ƒ€~yx„{uƒzzpxw}ztyzu€}|€~ƒƒ……pr{„‚€}rw}k}|‚k€z}typxo‚v„†q~‰}}ˆŒzwqr|„s~u|v€}yyu•z{vrtr…€lzl~h|}xl€wr€€y|‚ƒ„vwn~€˜‚}…xf…yˆŠ|~zƒw{ry{z}‰ppq|~~ƒu‰yv‡o‚}~„„|y|~{„ˆxk†…yzvy…}‚~u‚{uz…†vvy{~…vz‡†–ds~„}y}s~tw‚‚‚†‚~{txt~~ˆ€|{o|…~†rƒzsyj~€{‚}y€p|}„~}Œƒytoxt€zm}„k‡‚}s}t}s}}yyqxp~‚wˆ{……t…~}‡|}lxww{rb{}zŠ€{z€nq€~{xwƒt‚{zty€~w}ƒƒ‚~}{f~}ƒ‚yxtx„y~|u~q€s{}…}}~}vt|Œ…q…u‡€}|v}zzxŒ|~zv„Ut…~t€~x„s‚z{{|€~‡x€}zzƒŠ€~vk€x}|vv‚{†xjo~€}ƒv{‚wz‚ywys€‡y„Œ|xvw]v„|†{ƒz€zu€mz|~gq|€}||}€~ƒˆ{|uyy{|{wsuƒ~ƒ€rxy†ŒŠy†‰w‡ts~ƒ‚{ƒ†|y…||ˆ~}yu…€‡‰~Ž€‡wƒ}yyz~ƒq‚}‚€~z{xr}}„€xzt„…{vy…syzxˆ~}zs{}zxk~wxuv‚s€y\~‚ƒy„{ww‡vx†z|€Œƒ„u{~ƒƒu‰u“v[y€sl|~|…„y}}|ƒz}œw|~f}ƒ€}Š}dj}‚‚y~€}~c†ƒŒ~„€ts‰‚ys~sƒƒ„}ƒ|w”‚ˆvt‚iryo{uƒ|~~}}€wyw†‰ˆ{‡y~xv{x†€p~t|uv~w~ƒz†vw~†x|zzss{^€z…r{y~|wwh{~z~ƒuƒd„ƒie~ˆ}{Šƒsuq|~zx†u}x{yzq‚{{v‚„}|r}y‚z•†€}…{u–o}}yjv|}nuk||p|~}z€i~r€|Œow†uƒ|€‚‚yx„pˆ|~w„y}ˆ|ttŒ}l†}t‡€‚z|z€v|my|ŠrŒ€{~wjƒhl„~„qv|€’‹…xx‚|y…x~~~ƒ~|‚„‹yr†~‚ˆo„w~{{…}|ƒxu|„{‡…uƒ‚xq‚}rxr|xv}}Šzjx}vw|~€}}Š~ug¤t{x„€x~||vƒ{v{p{x€u„‹„xv€ytxx}v€zouxsrvyv‘{z|uhm†‰„€€~…|€„i}dŒy‚wqš~|zry}v‚z~€ƒyyyjˆz‚}~ku‚x~rz}|s€…}|zy|}hz¦{{~gypuJ€…‚vwn€z~{s|„{h{€o‡}~‡|z€†z†}tŒz|}}~†{~~w‚‡Šƒtxxxw}uw„„~t„{}ƒ}‰…r‚„m}‚hf~~}}}~y~|}n†r€_t~{‚}ƒˆyy}†|wz|hzTp„qw…}|‚yzŒ‚{~yw„€~„‚zOs€…‚v~~€„x}‚}oozƒ‚{iyxc†x•|€€~~xzm…Ž‚y~xt}~w€m‚~zv|…yy…ƒ}~z|q{€v^x~|}~|}}}„~‚‡~tƒzŠ}mywxp…v{€„{x}x‘u‹||zuzuj‚u~zx|~‚€}ul}€~~x|~d|{osqf~}{{ˆz}†ˆ|}~„zys|{qzuybx‚mŠz{|€†~†~{€…ux†{‡ƒyk]{rw|~Šoƒ…}„n|}fsryƒuy||‚y‹|xwpy~{w~y{~†vƒ‚qy‡~“€ƒ{|†sz~qo€ƒƒ}xvz€}ys~‰{z~€}y…l~|~zu}ˆmkz~~}”}y{|x}}s†~}k€~~k„|zc‡z{zyx{}…xu{€u„y}{‹‡Š}}ƒx{qx~€rƒw†xz}yƒy‹czŒyz“}„D‚}˜s|}}}y…xz„{Œ‹ƒuŽg|v‚yv|n|m~}‚vsw†z{r”s¡}…|ƒ}€p~~w…g|rƒFcw€vsˆtt}ˆ{|z~x‚}izxzttz|xƒw||ƒww}‚ywstsvˆ‡’s„|zy‚xuzx}zs}ƒ}t|mwwwu~€€†v†yŒxszˆˆu€wy|x|}xwwv†‚z]rnxz|u‚|x`’zvƒƒz|~ƒuy‡†…tq{wz}v„w|v…q|rt‚qn~~€|p„|~z€q|y”{‰Ž{zˆ}p}{z}w{d€x~z}wzxy„ys~€z‚~SvŽzxs€s€~wd…‚zw|ƒ|„b€v€z‹Œ…}}‰b{u|ywq||y}xz}}Š’~}{…xhn~{|{}…`kvo{ƒt|y‚yŠ{„w„lƒƒ[‚sv~|y~„y{}~zsˆ~g|ox~{fv}}tsuƒtx{{t}|}wfz|„‚}~}„Ezvyyu|‹„}•~|‚~~}‡€~szŒ†~zyks€zx€}†||{~i~~‚|‚‚†vˆyfwšhƒ}‚†o…‹m}|`ws~Ž’yv‚Œo‚{ˆ„p‚yƒnpra~{u€†l}j€zgw|n}{‚||‚Œz‡uuv…r‰xm€swŽvŽvrxˆ|hƒigpxsp‚v||z}y€|‚}{‚„z¢ˆ‚€†ˆ|twtsnsuƒ€yz‰|~~‡…Mu|~u{w…‚onvxrt}yr}ƒs…]w‹yiƒ„p‚~j^xu„…~€~‹e€quzwz}„_xq„xCy€†wŒ„zq|ƒ‚|]~}ŽzŽ›dxz~ˆex}\vn€|„t†oyoyxy\wo}`Œtqom|ntk{xxˆ|}py{}t|w~l“z{m~ozt|my}rzw{…‰ˆ{|ƒ}{u~Tt}‚~‚ytwz€ƒt`{ut}n~z|€‚{uvqvjzŒsfr…‚uƒ{…„ztp‡‚‹mvƒx{€qvšh€}yqjx”‚ts}}n~ua€ryzstd…€ry†…wywƒwqp_vž|y}w‚ruv|‚‡~jnkxw€f…|ra|di‰Zpu{x}owulr‚|}„`{€j„|u}‚\‚p||‰†y}~}SsŒz^~yˆzjlh~|€e{€‚ƒz||˜n|l€€v}~‡x†u|~z}f~z}z~}}„y}e{o„€ˆv}~‡€yƒ~wv€ƒ}t||†„t{€gƒ{|‚z{~}{€ƒ~}yxx{tyt|x|yp{†~‚ƒ~km|vq|ƒ{d~„}„„rv‚e{{vpk†ƒ‚}x€|v~“u~}{}„j…n~{t“~~s}~–k~u€†ƒ~xzxsq‚{†|w…ƒ}wq~qh|‚qy‡vxƒˆ€€‚{t~twx›€|h~}€z{|yv|}Œ€zzp„ƒ{~hz~|}v‰…{w€}ryq‹‚‘~v|{€}ƒ†y„Z€~|ls~v}`ƒ“y}}~~x€}y‡j||€†wy~{xz}wxˆ}bm|ˆ|}‘€}{w}t€{e|h†{o’{{|}{€~„^€}zev{zv–jx„‡ƒs}l{}|s{~~‚\n~|yyq|…}~z†~z…}Z„…~z€u|ƒg‚~{kr‚Žxvˆ||||uiv‚yz€u~…zo~|~‰{‚„€‡s€€|‚ƒ}|p{}{€|y„‹„z{‚||Œ~|ˆ†w}|~}hq“z|y€‚vu~ƒ~vzp€ytz{yx{pzzyuwvt~†}wv|z|€tz„†ƒw}vm„wp€u~vxƒyŠuvo„ƒŒ|}{|†w„|x~y|y{vx|…x|{yz{wr|wz’x…r€zvƒ|||Šzxxtx|thy…€z‰utzzzl~‚|yzwyuwyz|y…pv{ywy}z‡qx|}…{„…qx{ˆ}}uw€~|}|{q|juji~}p|‰wur€ps~ƒywwv‚nu{xuuz}t|}{zgƒ|y€xz†x‚g}}wws|{yv„„uxq€€}…€ƒ{nt_~€~huyt€‚miwyyu|{v„{}‚‚t}zƒx~~~{|lkxlˆvs{xzyy{pƒsztt‚|xzwov…{|~…|wy‚ƒoq€rt{ƒtx‚y}xx{|w‚}yz‚~{„quy|Š|z|w~~zz}ƒn}{rxw€‚yyn|„z{‚l}||xŠwvryp€~tvvuv}„{nuzƒy‚…y{zxqsv‚tzyz{uƒ~~wf~uwqz‚qks}yttqˆu||„zww}|ƒwput~€{‰€ƒpyyuv`€„uz~y‚wu|q}d€vx‚|J€}€‚rŠ{}~s|z‚|z~vt€|k{|‚vx{{p}t{“„€wq‘wr~xŠ~znx}y‚rxr„Šjzy|}~ytz~q|€„roxz{q|}~ut}…~†ˆ‚„vzo{}ƒ‚||}}~~ƒy{ƒƒyq}}‚~|w€x}kr€Š‚w|wt{€„€}wy†~ƒz{}w‰{y„{€zn~wx‡yyxy~|e‚z{€†o|†{{~~|yw~‡|‡vwj}~vp‚x|xqvxƒ‡z~{…{w~|wކ|}“€‚†~x€~„}up~€{†y~}Š|†|xsŒ}~‹|qx“z†lsxwƒxzyzz|pz}xz€}x|}“ry{ƒxz†ƒzj‚|y~{„vs‚~|…x{“†|yw|m„x€|Œy|zxyyƒ}y„{y‚v{{w|zyt}oŽ~€‡€t~u~{€{szy€ƒxƒ€x}~‚y‚wˆws|ƒ|zzw}szІwxw€|yq‹y{|›}|~{wz}}v|w†}~…qz~z„~}u‰z—„|b†~y~‰hr{„y{xw|z}€|rv„ƒ}Œ{z‚lu|‚|yx}‡xQ}y||wt{r‡ˆeyzv…‰…y|’xzyxw€ƒ›r{|{~|‰|h…{€œl~|yz‡zzw|}pz~w€y{}Oy„|ys~{‚|~z…‚|w€sy‚ƒr{‚~vw}~}ƒu}~woƒmy„~‚…}xv‚{{{~—~€or~m‚uw„|€ˆ‡€y‡u~yz|wz€{y‚}~tu‰}}ƒ‚„~w{ow}nx‹{}y~skŒ‚t~{ƒ†}wrsz|zv~ƒ‚Ž|‚|{€|b{|}yv{fs~{ƒ€n‚xu†et€|}}}{~€x~ru…~~„y‡„~wr{}iww}~ƒ‡r}‚|v|~|v‡}†{{v}€}}|v‘~{k€q}‹}„|q“z|z~vzi~sŠ~z~‡}€€w|~}}‚ƒ{xv{|{|‚|~}…}{‚|tyxƒl}}‚~€xz}ƒ†‚x~z~{ƒˆ{t~~z}~|‚‰{{ƒ‚€}x}}z}…|‰||x}sqb~t{‚twx}|yw‚~xuvƒ‚~vyˆj|s|~}}y|u€lƒ€|vƒ€vx€rvzs|ƒy~‰ƒ{ˆ}~{ƒ~}lw~xvx‚zjkv…|€ƒ…}„h{„y}|rx‚z{f}€f{n~x‡}}zwq}|€{€~Šyz~Œe{u†w†…{utt{{…i}|}t~‚x{|Œx‡ƒ||}s~zyx…|‚x|z~„vvy‚y„wnzƒ‚…r~‚x~€{}}twx`y€}}ˆ}€~|}~|~]t~”x}n{“~‡|y€y{€~|v{u{}{‹x‰pt}x{€†‚{}{}jƒ}|yueމ‡‡m{qw~~‚}‚}vy~{||ƒ}|‹v~xŽ„s€yx€z~}~tzˆ}~wvio}xˆ|~{}o}}}v}†~}g‚‡‚‰vƒyhŠ”|u†vwtuzsa¤q~z‚w~z‰{{{…t}xƒ}zwx{‡~s€‡i~tyxp{{|Šy}„€{}{z~~{{…„ƒ}y€mwzt€z}€€}|{zt‡yp}ht|}}~}o‚|y}‚ƒ€zy}xsu‡…{{v€z‚‡urzrz|vng|{…}†t~xo`iƒ‚€y‰|€„{‡~zƒ€ˆ|yx…}ƒu{‰}twv€}z{€„sux~xxw‡y}cx„sl†~‡yƒ|{w‚‚~|‚}~|r‚ƒxwz…~w|n|a€|‚x}s‰|ƒyzyƒŠvs{€z†|„xv{Šƒqx}z~xmt…u‡|vvws†‚s‰y~y‚r||€zyz|z|ƒ~‚Š‹x‚urvu}x}…zivƒ}€wvzr‡szƒry~|‚|{|{‰€ƒ|v†k}~{u…‚}~stŒ}}{~|{w~~€n|}}|~p||~|~}ƒuz‰w…†xt„~w|ˆup‚|uy€ˆ€‡v}|tmmt†uy}€{y‰w…z}–|‚r€zƒ€†y†ˆuwwy‡ˆ|m~z‚z|‚ƒx‚{|{‚s†{|}x~y„~p‚||cxstw||yq†…uˆ‹†|x…„{xiz}yu‚r}zyr}‚uƒw…|zs|{}x|—‚|wywwy€‚‹‚„t}ƒ~‚ytz…}€w€}€‚sxƒ~{Š…‰~…€qx€r†}z€‹|†|„{mvxw|{w~|‚€s€ƒƒ{†{~€x}ƒy~zƒu€}‚xyr‡wr|voy€xuv…ywqz~~{ttr€~„|~yˆ|vwx~||€|www~…|„€€r|z}€‚ƒsƒz††}„}z„€•ws€Ž„Žƒn}~s}y†phx{{xyq‚v}ƒ|}€s{x|…zxzw‚w}|„s|vszŠ~tz{|m~}y~y}ƒ„vv…u}~~vzƒy|xx|wz}~~}‡q|yvˆ„{€‚}yym€y~zzŠo~}z†“}r{ƒ†x~xw‚t{w{}~r‚qt{t}x~€}|~wuy~|{~†|„}suyt|~‚€‹v…ƒuzy{xqwz{z‚€{te‚{{qzyšw}}€un„‰}~w€|w|vs€wxhyw~zt†Šy|‚{hx†|l~u||tƒ~~€t||…‚s~€ƒ}z€}|k„t€€u}xyy…„y€v}o€|}‡€|€€‚s}„{y€~uyz{€z€‰z}~|||x€}€xy}~|‹~|~iz{~{~‚xvy}{„|~}{€€~Ž}q~‚€}‡yp{ƒ€xxƒzwˆ€t{Šy{w‚~}zzƒwz‰}xyz‚}|‚€z{}{~}y~vv|}†q{„}|}Žzƒ{~}‚z{z†€zƒ}y}x~~„c|…‚…ƒxx~„x„}vzxvw}œ{~q‚ƒƒ}|z{zvwr{z|€{zu€}z{€~|€z{|yqŽ€v€‡€tx{{€~ƒ„yw}u‡w|€uy€{‚hzvr~€~ƒ„†|€y„||}}€{}{xz{xrywƒ~zx|~w~wx}|}}}{†y}~€yo~{|€ƒ}z|y}ysv}w}ƒ{r{{u}w‡}€…z~€}zz€€r|‚ƒ~{|€€yv|z~tzpw~{€r}~…{}o‡{‚~x~|~tu~}}‚}~t{‰…z‚z{x‚zxy‚Š}|†}}~wƒz€zz}{z}|}x|{yˆ}{|€v€wtz~‚w{~€~z‚zuz‚}}|x|z}~y|‚ƒƒv‚|||…~u‡z}~z|~~}z€zyoz€}{fqvzw~v}€}|xr{„v{~}~ƒ}€{z{މ{‰}‚‡†}z~‡~zyz|z|t€{xiz~mszt€z||y|yƒy~‚‹uwŠ{|wˆx‰}{€|n}†~x|~z}y~~vˆ}~}}€z}††Š|~vy{Š{z{€x€y€~q‡‡z‡s{{}„‚~|~{€€‹…xx}x‚z|~y~x{y{…wt„x{||„||}~‡|}x}zz‹€{{€}}€}~‡||ww}ƒ€‚}u|{z€wy~„z}yuv‚}|zƒ†‚z}”|€Š|…t€„€‚}|ƒ|wƒkmq~zz|||ky‚z’€||}v€}|Œzy|~ˆ‚t|wu{|{~{o|z{|}ƒsˆzq~{t†y{ƒ}}}t}}{‡z{€€vpƒ†x~z{w€zy}ƒr€Œ‚y‰ƒ|~|w{|vw€w~|ƒ€|~€ƒ|mx€{w†~p|wŠ|}|‚~x|}u‚srww}~yz‚{ul~{ƒ{‚ƒvs}|z€ytqys‹y||€„€€}‚~~|y~‰~y}ƒ~|{}–€tty|yzy|xy€€z‚~}w‚‡|yzvu}v~ƒv‡vy€yx{{†|}{€€}s‰‚{zv…{~z~€„u}‚€|z}sxz}|{ƒt|{vx{|y€‚{ƒzu{w|z|{ƒz}||wu„}ny{nƒo|y{{€}Œ}€„|t|{~||…‚}}ƒ{|z~v{~}pvqy|€}~ƒˆ{{}{}…„y~~{‚}†|v„r‚sxy€€~}o~€‚z{€zsy|~|znz{y|zzs|nz€yz}†t~€vq}}{|yz‹h…w…}mzymu}x{z{Š~z‚{‚}|‚x}~~|ƒ~€h|„v{y|wx}uw|‚y|y}‡ƒy{zs‚€~„vz}{w|~‡{~}{y||~‚…{€€„}z~ˆƒzwy‚~…}~||st‚tz‚z‡„|w{yu}zm€{wƒx~^~…s{{|}~}||{pƒs|jsz~|y{zxv}{q‚|xyz‡|ppzˆz|}s€†‚vyz}w}~tvƒy}|†„}}€zwi{‰{€z…{{}x}unxxx‡€xwuyvx‚‡~u{y†|ˆz}†{{x€kx{z€||xnw‰ƒƒu|ˆ}~‚~z~yw}}…xzƒz{ƒ€ˆ{}~z}txw‚|~z~…}z~‹~~„y†€‹‚}{~{{{„u~o}y|€€}}y€{‰s|zw€‹m€|ƒƒ}|v„|†Œ€uƒ‚vj„†y„€€}yq|ƒ}‚{{~~~}vŒ€n|{{{€{ƒr„~{‡xƒ~ƒ‰{}€„x~…ƒxxn€zz|ˆz~|zz{{{}ƒw‡vop||xy}‚‚~yu~x{z‚t„€w‚{{{|zvr„~ˆup„†w‚r†w{}{{suy„~{~~€|€~}}wo…€‰z‚}y|uzz}}y}qs~}ˆn}|z…}€y{yzv{|t†t~~y…}yx~{~†ƒ‚€€~v}„|x…Š~yzu}|u€x€~{‰v‚}|‚zyx€}t|‡z~{‡€€y{xv}s…|…pun…t|…zo~†‚z~~y„{r~|y‡{{}tƒxvn~}~~|€z‚}~„|}€…}{ƒ…}~n{~}|yz„€‹{{jwzupy{}~~v}~|ŒpŒw{„{‚}t~zw€~r‚Œ{{‡}v‚‚v~…}yrv‚v‰x…{}z|{‚~z{Šiy}uuysŒuyqu…{„|}{|x€€|~}u}{{}w|~€t‚Œz}|€|„‚‚‚€{|yx…{‚v||€z…v~ˆ{yy~wzvt{t|z|ˆy~jˆ~w€€{sw~u|€uˆ‚„x~|{}‰s{y~{z„{sw~}x~{€‚€w‰yu~†w{w~~{z{t†x‚|y}‹~{~zx|t€„~…ƒzƒu‚„rxm‚q{€{qv~{~~„{w}x{x||x€„€v{w|v|ˆ‚}€q~Œ‡„}z|w{}||€{…zx‹w|€dxyv~x}~{z|t{{~uwu}t‚‚|‡zf€pz…wz{}{~{z}wr€}‰rxŒ}s{€‚~x„~{y‡y{}v}v{q~„tyr|}ƒs{|z~{„}~|yysp}}zz}}‚w{‡n|}ƒy~~lw|}‰y†t_}ƒ~€ƒˆv{tvƒ{v€vŒ{x‚~…q€{v€y}ƒ‚‚x|zq€€…y†‘w…vvq‚v||‚…srwr{~{x_x‚t‚x„e~||y]t…~€{qy{}z€‚wy}„su…s~‡„xz‰{y~€zx{‚€zy‚|v{{‚|}ly}~}‚z€|v‹v|wq{ou~}|v„||q‚{y‡‚‚{tw|w~z|z{|~~vu{}{y€~v|r€z‡||sy„zyypyj}wxy{s||~w€y{‚~}Œt{f‡x|qrp}‚x|ˆd}x†x…z™~~pw€xz|}„y…u†€nz}p€‚r~~}{w€zxn}qqƒƒ~|xr‚~lvwzƒqtwry}ƒƒwŠrtwwv|r€}{€y‚}ƒ~z‚…ˆt}~y„|{‚ƒ„„Š€|{e{‚u~||…t€ˆv{‚~z€w~u…tnylzvsvmvw{†€tp}|r|z|xux‡‚zm~~€r‚k„z„{xz~{mz‚y{{‚pwzxyzz~yxx~vƒ|~utoˆvzyl|v}|z…~z„uzul}{†~}}{~x€{ƒ‚y}{}yr}xq€ˆy}‡yu{x‚n{}t~p{|t{{t†}y{‡v|}€y„ƒ~z{|{u€{~Xy~ty~‚y|r€rzv{}tzr€€~|}nƒx‚i~‚~x€}…‡|{wxn{€€~p~u|~{v|}|}‚„‡€~]~‚{}}ju~y||‚|}|€w{_€~y€yƒqy||~wqy‰v}}|{zw†x{ˆx|mx|~u~{xymrw}y†€w|‚{x›x}|€€z‚w}q|vˆ{€ƒr{y~|{~ƒ~‚|xzy|~y{zƒ{vzus‚|ttx|~}o|}}|r‚{{†|€~um…sy}mzwx~r…y{{nƒy‚ws„‚|v~|z~wu~y~ƒ~zxy{„{…‚rxo|{†t}}y|}~z„€|t„{{u~}{yto‚yvy~|~r~€uyvztz€{…y|zxƒ}{m|‚wyx{{yxvv|~~‚}‚rxwz|x„}swzwl|kt}|ƒ~†ƒ{u{}~i}Œ~}„ƒyy{~}u}wƒvˆ|y|w}}}}‚…|…~iywx€z‡stzv|Ž}‚x}x€€~‚…zƒ€xqt}„ƒŒ||~…„zw|x|{Šz}Šty€z‡{z†y~m‡‡|yx‰vz}€{}•‚z~vxxz{zƒ}€wƒtv‚‚‰||…zx}ƒz‚‡‚~y||„u„|ˆ‚xx‚ƒ~€ˆ}v~‚~q~ƒ}vˆˆy„}zqwƒuz€}{t€}ˆ‚€tŠ„{„~|t{†„ƒ~‚†zˆy{r„{xƒ~x{‡r|~yz…~}}u‚}ts†}|~„ˆ€‚~y€€‡ƒƒt~|~…wŠz€}w}}‡„vyw€yƒ‰~}€}y}ƒ|†„s|t|‚s}€y}ƒ~{‚}ƒ„{ˆ‡‚†ƒ}|‚tˆ‚~€x}ppyx}}ƒ‚ˆ{~~•‡{|r€€zv|{tƒw†…|†u€€tƒ€„~u}u~|s~ƒ}~‚z}„qz‚‚ktxy‹z~xŽu…{ƒƒ‚Šxx€~}~{zvw€t|‚‹u€yq‰‚}~’–‚€‡xy~w~{†|w‚z€u‚y‚}yˆ{‡z{{…z~{ˆ~|ƒ|w|vv‚†y|ˆ‰|‡•zm‚‰ƒƒƒ~~~q†tˆ„xmyˆ€{|tpt‚„x}ƒ}„}xƒ€vyx„{m}{‡w~x|€ƒ|{~|{ysyyz|}x€}uzs~z|{„uz‰t|‚}hŠtŒ}F^|yz~„}|„xz}€|j‚s}€„vm}€}y~}vuŒ~x|{sby€mu‚„}„wƒw~xx‚‚€su~z{vy€†~{|~~€||o~v…ƒvyˆy}|‹„{~€s†€}‚‡zr{}€x€~|r‚rz{‚{~}z‹{Šry‚x{|…‚}zx|}~~Žt|l~~y}{w€vo~…sƒ€‡‚~}~†m{v}zq}ˆ…w€€xŠ€~wy‡|†}qw||~~ƒv~zzƒ~x}x~}‚{x{x{}~€}q|z†|{zvy{}€€{{uzy|}}„|~€ƒ€tw~s}|‚i~~wxˆ|yyyy{x€{€}‚{„~yq‡|^‚u}z|~{td{{}{€s}€€‚…|‚€}{€}{|vz||z{„…y‚zz}އlv{‚zvy~„‰€s{^|~…x€€€~yzlv{|}„xx‚z{†‚wz~„~†v††z…zx{v|op}|t‡v„‚y€{ƒz‚x}‚€€rx„|}x~ƒy~€xƒ‚|s}{|{zty|x|„py{~„~‚}~zvz|‚}{~|„zz€n|ƒrz€ƒƒzs{}‚ƒ||{z|yz€…}’zzzu}}†{}{y||x~yx|}‚„w…}„|}|}xy}w~~ƒ}xy€|€€{}|‚}~vz†€sswyu{yw‚w~xn|ƒ‡~‚tvz|{{{w…}{z}}z…o~€x„r{}n‚~‚|}…{}~y|}}Žxwh}{‚}||}~}zƒ|{y†w‡…w€xzzzƒ}t}€…‚x~‚~}yt•ƒ€z…~|~‚{|z{q~{t{xƒ{|‚|Œywz|}€w{€y{}€w{|}|}~€€{~„xŒ}vv}z€z{w|y}‚st|y}v‚x{†~uƒ~~{y…w}ƒ‡~€||~{Œv~~}{v~}kz}||†‚‡{x}}s|sƒy{€w†…yyˆ~wu{|uz|}w|†|…z’w}r€‰‚}w{~{|~€yy€}w|zy}~oruu|…|w†sx|zwz}x|}}}vz‚wxxywƒsky|{€|„sw…ƒ~{†€g{|wxzwwx}~}„y{~wzzxww~s€}~|Œ|‚|…}{zy{‚}€…u|†yzx‹yt“~{€ytz|}iy|n€x}ƒcy}}|Šv}‚~zƒyp„}xnrz{ˆmƒ‚w‚~~|m€f„kw^|{„t‚j{€t}}es†{{y€ƒ„|{pƒ}ƒ{xw}pwzw{yˆƒv[‚{ƒwyw„wm~{„txƒ}{~syxx~‰vu~|z~}ljx€zx‚†{}ru{|~s„€€n|„xrŠuxxs|‚~z{s€ƒs{yry|{}{sy‚pƒyzy{{|z‚„{Œ}xy{„zlw}‰oz{‚s‚€‹uu…v‡z‰za‰ƒxƒ‚~~„|ˆw~uƒ€w}z–mp—‚uz}|pzˆrz‡|~w~w}vƒŠ{|x}u~{z|yy„}|t~‚y„‚uyw€‡~ƒlx~†n{|~[tx|bvys|nzƒ†„}~€‹|s||tw|vw„~xw~Ž~k€‚z…s€x…{„{u{y„}zw~}|qrxqot{}ˆ|z~tu‹pu|{uƒ}n€{x}~wvn~ƒ{du‹‚||zw€}ƒvxuz~vpspmtyozttz|~u…‚wzs}‚{~‚…{€m‡q{‰wxqe}z~‰~zxuc‚y{†{|{‹{{ttt„{uˆ{|†|v}w€†|~zˆ}€}{m†xy}„…‚~†zsyt‚}v}Šz…|vz~~y€|€}ƒ…€~}‚~z…yr‚mƒƒ€…|~ƒ~~{„ƒ|{{~}|yzv~y~ˆx|†…|€ƒtr{„|zwz€ˆ}w‡z{{‚q{|w‹{Œyƒxt‚i‚u~oqy{t~xx‚s{~x}ƒ€s||t…yw{~Šz|v{€€{„yzy…}z†ˆu|z}yz‹…€y}}u}‚€wŒ€…†wy‚~||vuzv~z}}~z}|z{}|‡{Œz~p€y|€{}y{}w{|€‡Œyz{ŠzzŽ~{zv~|y~|zo‚~wu€uyv€~|~ƒzˆ~{o…|z€‡‚{~}w|t‚…|€w‚vz}y€sƒ|‰z||u|}ru‡|‚€†ˆ{~}ƒ€}„}{{ƒwk{}v|{x|Œ{ƒ{k…ƒz}Š{~z|‡”|€r€zy|v~ww}‡{kz}u}Š{€}x€|ƒxszx€}~‚€}~{|v}ˆ~}p~†yv}€}|y}‹…‚}yr}|z}uwƒ}|xz~xzw|—yˆ{t~{mvzƒss~}t|}}k~zzr}{y€{}€y|…sx„{pxmwƒ~ƒ}l||}ysp}|ƒ|€pr~~…ƒŽ~|~}{ys~‚y~„f€xw„|~{x‚~x}‚z~t|{~wv†}zzxukw‚v}xy|wxu}ƒ‚~~€€}s{}ƒ†€ˆwx}w{†u~‚…Žzr„}yw||{~}€~‚tz€{p|w}…{€|‚|~€zzyy‰}x‡~~yv}~|u}}}}•xƒys}z…t€{}€zw{{y€{}|}y}t}x~}€~x„€…}z|wy„ƒ~xy{v…~}€|{z|€~ˆ…‚pk{~ƒ{“}xuw~}ztw}€|~~x{xw~z†}xszu{}}zxvvxvx€g{y{w{|wƒz|€|…z„{~€€€€lz€z†z|†{ƒ~~|i}}|~x~}ƒ„||}~su||{}r~‚{wnŠ{zx}|ƒ{{€‡p|„mx„|{y|~|}|{~}{{~„p~}l|}ˆ}€zt{wz}‚{{{p€yzs‚€xu}}|w€{~|{}}thm…|m~ˆ„zˆ|v~z‡}xxƒ~€vv{v}s€y{vo~{{€s|r{xwy{€}€‚nƒ}pl~‡{y€ƒywyu‚}u‚†…|Š‚xuzz~wq}€†{w„xvzˆzyyx„|vƒw}l{~‚wv¤~y|x}ƒv€wz{|‡x‡~{„w}€qyz‰‚wyy„€vy~‚ƒd‚€†|}|‚u~…o…p}vu‡}}€~…y’ˆs†jux~}}yƒƒxh†€}€‚ˆ‰zyy”~w€{z|}•u‰~|‚‡}z†}|o“€€yy}‚}s}y|uuuzr}{m|yq€r}‚}{{t‚x~€s‘|Šq€~{„~{g|xzvkxu{i…|}uyy…†|ƒx}z€}‚{{}|vv‰~z‰||‚gzov„w}~}{ƒ…w|‚€wwt||{‚„vx€x{u|ƒ~‚r‡€…{‚‡}zƒw|lr}z]„|}z~„}~svs„tz||y}uryx|‡l}ƒw‚}†‚|w†|€y[}w{lz|xŒŠywl€„‚vy†~z{~~wg{†‚|n‚|vl€|v~u{wz~€xx|‰wp|w}w}z|{r~y‚oy€Šƒ|ˆ€|}|~yur€|nƒ{y…u„}~ƒfzoz‚‰uv{…|ys€wx‚~}w€xzl~yw€t{v‚€|yuty}mu{u~‚}xxzxŠ}€~{z}‡zz}}||y‚yw{qƒy|}z}|z{x€zvxZxy{nŠ>t^u€€|…x|x}{€y~†{rƒ{z|…~|x}~v€~|ƒy}‡v{Š}…w||~wp„x~zxn{truy‰[zv}|†ƒw}~{xx|„z{~|€xy~}€~{„xy}r|h{zwz}€~t€|z„u}r~…{{wz}}z{|~wx‰z„}ƒ€|y…yy„{{}Šx}}…p€€u€y}‹ƒ‚{v|t~zx†r}‚}„{I~|ww{‚~|{|…}ynƒ}‚‚x~{}qyv{o€wywt~‚ƒ‡z‚t~}~p|t~vu{Zxs{}i†q~€x‚~v}qzxeyqo|s€{€}|uu‚{v{z{‚yv|uvt†~€qm…}]€‚‰siu…Yxq„xw|ƒzw‚or‰}}}‚s€€}sywu†}}yzxz€yawz|}|z~~t~wyy‹cˆs‡ƒny{rg€€wz~r‡‡}{{rw€|z€„€vs|l|zuw€c‚€stx|~y€{{vƒ}ƒ||„ƒ€||y‰‡y~}zw€z~ˆ~~|‚‚y~x}~y}}}}€y„‘vwu~[|ƒ|w}‚|y‚zs€ƒŠ}y~wpn€xІl~~~~xx€{u€xzƒh~z|~}}|~~ˆ~}p…}sy{||~usw…€{}zx{}zx…€}„zrˆ}†ƒ{w‚~z{zv}yx~z{ƒku€sƒ}v}z€ƒŠ‚~z}~ƒ‚~€y}uw}z…|€u{||„„{{vƒ|€y|~}~}x|‡ƒ}q‰ynt~„€zy~ƒ€w}‚„€zz…ƒo†y„~~z}…€‚{~{y„ztz€€x}ˆ|yr‚‚Šy}~{}…}zˆ}}~z|u}y{{{‚}{|†}}x{y‚}||y~~|zy{~twƒwz}‚x€}}{€k}{€}z‡v~|€ƒ}y~|x||}}xsv”ƒ{quz€{€}t~wy‚{y„t|„‚{}{ƒyz}€wzv~~utw|}ƒ{yz|ˆux|}wyˆ}z~{z}~}vw|€€zv}}yw€~}{}|v{t|yƒy{sˆ€{|~x~…ˆ‚}zw|r€ot€yyuwxw~y–‚tt|}€xƒ{zy~{~zx|ƒ‚~}u}‚xx{yЇz}„‚~~~~~|‚v…€€{xc€{{tw{ƒ}~{}€}~pz{x€xx…€o‚|~}|~|{Œpq}ƒ{u{w|~y}{w~€{|Šz|{phv‚|}zws||{€~xp…uuzz‚€Œs|‚|{{€€‚xyu~z|‡„{€‡n{z~~x{}zz€{|r€vy}~~{Œ{~|y€yvwwr…†|~{yj€|‚|{yw}‚vx|ƒ~|{z{‹{‚~wz~s{|v{}tyuz{w{{{xvˆz|j{„x|~xƒ~€~y™uuxy{|t~x€ozz}}y”~uz|„v|q‚€{{|€ƒy|xv}r„€|q€ˆ{|}y€m~€zz‡{kwwˆj}{~tyyzx†yr|~€u~ky€~x~€Šqvswmx}}|€nx{zruv~„{mztk€}xy~z‚s†r†v~€|w€}}‚y~{}Žt‡‚~s}{}~€lrƒvn€||y‚|x…zy~z|‚}~}zx‚||ƒu}z†z~z|xsy†x~{€yu|}v|ˆz{}}{y|||~|tdsƒ|y„}…{zw}€vƒ|zƒz}myvxuzr‘‹x}utd€y{q~ppƒ†…t{~_w}‰q}myƒ~~o„~vx†}‚OŠ…~~~|ƒsr‚†|€ry|}v{‚zz~y}p~}|ƒ~~ky€‰~|vzz€‡ƒ}Šxw{y~{y†xo€ƒ‡€{yt{wsv€}w|~xzy_{uƒƒx}{yƒ}{wh~ƒ€||}p‚|€}|q€ƒt|yƒ„yr~|}zƒx{\|dv~y€n~|u€ƒ€ƒƒ…„‡o~}~Z}v‚~~ƒi‚~‚|€rdƒ‘~†}y†ƒ|s€}‚|€pz}€~‚y~sy{`yz|w„‹|z|Œo|„†s{~xw€z|‚uyˆy†€r…}Œ{y„|†s|w{{wzwyƒz}vy€i|{‚ss|‡~€Wƒ‚}„}fzy}…ƒ‡u}wz‡w€ƒy‚„‰|‚s|{}v‚zsx|R†„rrx…w}‰~|}~z€_tzŒp~‚‰{†€r}xw|uxv}z}l{†y‡ƒv{q€ƒ}i…x|{iho~wywuo‚{{~v~~€xz‚yzz}~€x|x†{x†y€~yƒx{{|‚}|zy„|~sw‡€r‚€‚ƒ‚Œ{z{jl{wy}}||}~~}s{uw}{t{zwr€p}}…}|wk}|{‚ut}}|~€|…gwvsx|’}††z{ƒx~xw{{~~„t…q‚}}{ˆ€~}}y{~|~}{w~{~|x}}}o}j~„z‚~…ttow†~sz}xy|}z|tu€}~}}u€ƒxn}tx{}}}~y„w~{voy||}~~~„œ|{zz|v‚w„}{}xyxžw}‚…ˆ}s{{rx”yˆy~…xzz…z~}o…{y}ƒ}{}~qz|os{~{y|zr~{{x€|v{{|~}z„yvŠsz}‹yx~{zx~}z{‚ƒrzyx{~y|~}€€~yy|u|z~~|‹„€}z‚||v„{x‚f{stzys}~z}y|w}„‚€|}„}„~ƒ|~‰{ƒz{zt…|rxƒ…|†z|v|„|o€‹v}||z€wi|…w|wy‡}}v}€}r}}|v{uq{~~w„x}v‚}}{{ƒ}xƒzz||||evˆy~€|o|y„}ox~¤{z|ys~w~~{wt€ƒnv€‚mx|z{}~„…}}}ƒz{{|~wƒ€zz|xzsuƒ{€{~wy|~~x{x|w€|ˆ{z|}sy~yu|ƒŠh}}wxt{ƒxzyy|€vs{}{{zz|~ys‚|‚}‚~‡€{‡€}ƒ{{v{w€}|{}y{zyƒu{„€|w€|~~{z…|}}|€z|rtvv~~{||€~xz‚ƒ}~€{{zŠzwv‚iwuz|u~vx~€„ty~ƒ{~~‰|ˆ~‚qu†„€ƒ{€yˆ|€}ovz~„vwyy‡|€x}~y|‚xz{}ƒ€ƒzvv}ƒƒ|{v{y~}t{zs€xy…}~|}yˆ€~j||{t€~u€}yz{{{y{yˆ|zz|yyz}}}‚~z~‚zsz}}}~~zy}€w‚y|v}{€€z{~}x€ƒyv†zr€|~~ˆz€{u}ƒ}}€tˆz~‚zw|}€€s{{xwx~szxy†}|‚€y|}}~}~{}ztv{}y€~y~€|{vxpw}ƒ~zz‚„~z€z€}€t~‚zq{~‚t|Šu{€|}ƒy€{}‚€|z|}z‚y|…}‚k|x’‰t…wvzs}sw~v~‚ƒ{ftƒ{}u|t‚†|vuzo€x~wˆ}tt~{ktvzz„€‹zy|qy‚ttŽƒlp„un†|ƒ‚t‚z}{‚z~y{ƒ~}ƒsus‚‚tr~€}yt~y{~|}‚nyxƒ†x{ls€x}~ƒ€~{s„‚}w|u…tƒyvx~{€‰y~xy€‚tm~kƒux}r†{zƒ|}…{u€„zz{ur€yq~z~„uwo~€~†p|{tƒ…||~{yxzŽ{t{yuz‰€w|‰€ohƒx…‚|v}u}„tfw…‡€ˆ‚~ˆvlostˆ|zŠ}y}u‡czx€}ywt}€€}qˆvŠzxsw}zw|†zwwx€s{ƒˆ}w‚|{~pˆ{|~…xfz|}|€}{xƒƒ{€‰s~ƒ{‹v|zvw†‚}w‚x{w{z†{€xrx‚€y~~uzm~zˆ~x~|~}ƒqvv‚w„zƒƒyv|ˆ|m€u€v‚z}nw|z„zz‡v~‚u~…uƒt~ƒ~j}{uyoz‚y|xyƒ‚„€~xt€{m|yz~„‚swvˆuv{~€|wƒz{}ƒt‚t||xr‚z{wqƒvwyt|\w}xˆ‚€~w{{„Šu|„€~€}‚yx{|€z©€’{€€†‹~ƒ||{}}€w€~€|||y†z~{s|qy„{{}tux€xƒtx}q€…€}…~ˆv{x…ˆ‹~‚Œ}ˆ~y~|€|{|„s‚}z}{|…w}tzw~x{w€tzz‹}}‚||i||{|zwyƒƒ|z‚vˆ~xzŠƒ~‚~„‚x{u|{wx€z}|n||}z‡|~{ƒƒx‚|†|…r|…ƒ~~~{~…ƒx…{{}x€€‚€}ƒ‡ypm{~}{…}}}ƒwp‚w|v{{†}}pzŽˆ|~~~|€w„y~|~zy~xz{z‚€}|yz~€}}sv|x…yt~wrs{…ƒ}†~ƒ{pu|}zrt|…~{m…„m|w‚†€}rz{vi|ux~‚zz„x{‚|zx…x{~zx~ƒo|{{~yƒz|y‘z„…s€zxxƒ{u~vw‚„ƒƒx…{~{zy|}{ywy{†€{|{wzz{{x…~{~w€}…~„~†‚€y…{xsy†…¨yyƒzzƒ…x}z|{€€t{vo}}|sr€w|vt{ƒs‚}ƒ~{z‡~„€{}y‹|ƒz€|i|}x||†€rw€ƒxƒ}yq~v~{wrv‚€{y†}myn~t‚}gtu~‡q{{Œ†w~zu‹~uz…|u}{€~x|x|wywz}|~{r~n€ys‚‚‚wy}{qƒ}}†{€wzzzzx‚‡‚yw{q†t€{}ƒ}|zt~[xƒst€z€u}~z~†{|zjw|‚€|}yyzyyƒ}zt{tzywy€~x|~}u~}yyƒ{z|vv|x€yzy~i|w{€|~}€~u€~zu}„{}~ƒ}umˆ€|{|yq}w€}{z{y‚xƒy€e……s}y~~‚‹zw…eˆ{~|…}{|~€{€{~u……|…Žp}€xƒ~}}g|Šy~|s|p„~…€„|wz~yz~‚{ˆ}‚s{z‚|}q‰t~ystz‚y}v|v„||…|}|{~~|r}{€v€€}}„l|x||€~w€’~~…ys~y~yw~rtyyz{…ƒt€{zz€zyz„|‚†}|‚‚x|~`z€zwuu‹xz…€zs~€{yƒ}v}~‰x~vz†|}|xy€w}{}w’{€|€}ƒy‡~s{~}{}{zw€x‹{€Œ€ƒ~o€ƒ~w}€{yp~{xv~w|{y{„…t‡s}€u„~|tv||€{~~‚‡|x€||}yx~ˆƒzŽxzzy†‚}yx}~ˆzƒs‚zzyu‘~|wzp|}z|{ƒvxƒ|…u|~|}|t{x‘‘|€ymy}Ž|xv{yy‡|Šƒzv~yx€|ƒ|†}xzsv}ƒ}}}zz‹|ƒoyz|yx€†v~||{z{ˆ}{“}zz~„|z{z„m…}…{x}y|w|x{jwzurv|zx|w~{|‚t„{€q{zx€‰~Š…yzt{€}ˆ|k~Œnˆ|w{{‚ˆ|…|{€x„t‚„€ˆz~…|}{‚{p…t~zp{ƒz~s{}~‚z|x~~m€„x}s}v{p€u~yyƒ„z}}z€qo„}|v{|z}…~€yy€y€‰~{zy‚„|‰z€†€vr€|h‡~‡€‚}wxs~y‚s{x}|………‹vm{{Ž€~‚v~}€z~}€€vy„y~}ƒ„|mxyyu~||‰ˆ~}†~|ˆ…vyƒ{€}z{…|{q€z{r…Šu~‡zxƒ{~~€„~zz{|{o‰y~†…‚€„s‚ƒ}wx€{v|x}€x|zyyƒxk~†ƒ€yg…„{kˆm{{{~~€{ul}t}vrxr|~z{xz€}z€€x…zsx€~|u||}|ˆ„}}}ˆy||suyz|{rwy|…‰zw|}{}{~~‹r{wk~}{~qƒ}}}y}y~‚wp}‚{„~vxo}y„}x†ˆz}|ƒtyz†t€~dy{ruˆ{xt}w{hƒ…}{{Š{u}}z~|u}~y|‚||zŒ}}{{{ƒ}{|x‹tzz€~|{|tw}|w||‚u‚t|w€yƒ…q||€}‚zJw~us}uz}~}…z€€s€|yg…ˆzuw|}y|hy{zzvg~~vwvƒ}‚u‚}|y}‰t{‚bpzwt|„{}x‚€q|wwp}d‹~€k€}~{y…€n}z}€~|€~…v…{€x{|z}zzyk„o‚}d|w}znuƒv}v€xƒ|x|~އ}y~~{‚zwu~yx|y|ury€{{x|z|tvx€y~z|~w}x{v‰|rz{r‚~x~}yt~t}{|{|vywxƒ~~t‚~Œuz{||}…m}xwv~z„”„€„|{†|e{|wzi~}txn„Uum~vs}{]z|~o~{yx~ƒsxˆ“~{†w”|z|yv…{„€n~…‡~yv|ux{t‚rzw‡y…r}z„t{~}‡u|x†|‚~v||Š„ˆ{€x|‰€€†xw~vu†‡v{ƒ{n}{w~y†i†y‡‚yz‡p„ˆ‡}~…ƒ||x{‰{tv}f†x~~~_}‚‚zz€†€|„~qw|„~|z„u~‰w}{xx…|ut}„tˆ{|„w~nvv~x~q€|qx{zštz…€s|}x}Ž}y€qz~ƒ~z}z~x{x…‚€€‚x~}‡|}|„wt|v}y}w}|€€|Hy}x~~x~y|vng|”{j„ysƒp‚wv|€~r„x€|‚~‡U‹…xZu~}‚„~s|{yn‹zt€„t}€wv€i…}|zŒ||~{„~z„v‚…u„€~x~|zr{zŠ‚‚uwd€zw{u„‡j‚u‚‡zyz†ywv{†‡ƒsuy{xwxzvˆxzu€~{|y|vz‡z}„ˆs{vo|tt‚b‹‡~€|{y~dŒo‚y}~x‚t…|‰zwx„{€|x€z~w^{xlˆa{n‹|Œz{qu}s[‚y{|s~|€}sr{~‰}~oy}t†}y‚t{Œ{„|zƒwƒz~ƒ}v~uz‚{vg€€}w}…}}†…€~}x~|‡suzq„sm}‚…€€~„€|~…k€{|vd||ƒ‚|}}x~ˆqy‚|yYž}‡z}|‡‚~}}x{mr„}zw{€y„~uo|y}„€„{€„zn{„ˆz‚lu|}|zsv€wzz{Œ{~€€†oo€nxwz|sw~y„ynƒt|x€|ˆ{}z}~}~r{}{y|‰}{|€}~s||†||}xzw{~zyn|ouuƒ„{‚}|~z|y€}}|}~~zunƒx|yr||wsx}{ux|~{‡}{{{|yyy}‰mƒ…{v‚{}z{tz{€tu€z|bƒxzt}||„…z}o}}z€|{…{w‚tz„~y‚z€‚zx~…rƒ€wƒw„xl|u{~€|y…}}‚uunyy…|xy€„}{vvƒ~‚‡‰}|zz€{zpsvv~~|ƒ~w…y~v~—}x~}|‹vxz}yƒrw}~{|w|orwt†ywwxw}{~|yyp|‚€y}y~u|z~|}€‚}j|‹y€y}jw|~y}xw~ztt`}}}€x‚~c}y}uk~|y€}u„{}~z…€w}‚x‚ykˆzy|}xz~|~‚~‚x“‚…‘n€…‚tx~}~}~€ztssmdƒt{o||‚}~}}u}†€{‚ˆoƒy}~wwu{z|q|€p|†}€€a€wx}{w‚}ƒ‚{}xˆv}€„s}n~}s{x||~~‚ƒ‚zz}}ˆ€}~xr€yx…}y~{€r~zƒ€z}yw„z||…~|}{}‡{~€~zz‡v…p€}tx|‚{hzx}}q|pyo|€~sry|y~{€†zz|}€~}{ƒƒm…ƒ}‚}oyu|wm‰w{z„{t|}{…y{{‚…}t‚y~€|x}n}ˆ{lwƒ‡yz|}xy~zrj€{ƒ‰u{y~}x‚n„~{~{zw}~z}rppŠ€z}ziŠ~}zwrk}}„ztv~z{~|xg‰{}|z~~vy{tq€†{x‡t€„z{rk}|}xyy‚{ƒry€zz|iw|sy|wo…‡rry|€}v{}}r‚|€p€z‡w~z }„z{l€‰v}~x}~pw€}ƒ~‚~~||syux~zzxz†ƒ}w}~ƒ|€m„wv{~v~|{{y~zzz~{‚€w†~uq}€ˆ~‰ux‚o…~€tƒ{„‹†~wyzu~„z~z~}zyv}€{x€~xw…}srytz|ƒy„~…||zjz{vs~€|{„~||w{…}|stv€~yrx}zz}u†{}sr€~zs‰{p€s„vx„ry}{€ƒ|ˆŠxŠ|z~~}†~u‚€y~†yr{s€vƒ„z~|}€|{y{yu~‚~}z€w€s|~~€z~|ƒŒ{}|x††x‡{|y|†yuv{~ƒ}}Ž„xy|uu|vz}€€€‹~q||x€x}€{€}€{~w„xwz{„{}~uƒ}w}zq~ƒyzw~x}~{x~s{ƒz|€ƒƒ|}u‚ty‚}„}z}{|y„€u€zyr}yy„ƒw…{y€|sv„{x}ƒut}~‚y|w€|†}vƒ…wƒxv€oxw„yz}{{yzx|z{~x„†szu…y€‚„~ˆ€z|…|wz|x{tw}|z}}{z|z…|Œ|zƒy…u{ƒˆm†{~}|zz~€}y~€||y{~Œ|‚wwt}}€x~€€~}|r†ƒŠ}~‚{†{Œ{~|†}€~}r}~‡{yx}|y~~~{xry|w‡l€€†€zyy…}}zz|ywzr‚t{€}}tw~x„€€†u{„„s{x|‰y€|x~‰x‚{}…†~~s‚€|y{rs|wxyt|z{~ys~u}z{{}{ˆwy~‚}‚~xs~sz}v}vw‚y†u„ˆƒzzu…xuu{†x†}{u|wx€vx‚x…~‚zxw‚{~oxo„„zrzŠ{z}rƒ~}vz~~~€xo}€}~x{{ƒƒyz~xx{‚|z||‚u||u~|{‡{w{ƒ||szz‚y~|u}w|u|{|y‚u{u{o€„x…ux€w€}|}}{{|~zyy‚}z|€t~|}y}l||…v„|„}|uz‚x|xo|~}„|zx{z}~|€uy~vvw€z~|„{u{||„sy~r‚xw†x‚~}y~…€|ƒ}Œ|rŽ€yzzyzˆ{{{…w{wy|{…}w„w‚x{|yuxz~€z{~wy„wz…vt~q€yv|…‰z}vsx~†w€yxx~tuyz~Œz{w‚}{w‚‰‚}~x„z„zzrw|}w‚w|vtw‚|{uƒv{xƒl†~€…z~}‡zzt{{uz{ƒysy‚}~†xs}n‡zz}x†z~u‡y|ƒ|}zst‚|‚ƒ{|~~z~{ykzut„}‹†||‚„u|{y’€‚‚wˆ}x|€||…Ž|z~|‰s}€su{|ƒˆz€…|ƒzvz{˜vyrs„}~‚s{f‰}w~}}‚~xw|‡v}w~†~‚{{|{‚z‡‚…ƒ|xƒˆ‡||ƒ{}|f…{w~yƒw€|ˆy~€z‰€|z‚†}|y|z~z„~{y}xz‚‡Œw{}|}l{‡y}{zŠ~v|jv|ˆ…y‚ƒ|}„{vnu}†u~{{{v€‹~z‰|}z{‡ƒ‚u}s|xyz{z‚vjˆx~~„v{|{x‚‚z{s{y}ƒ†wv€€r‰tv‚x|zƒ{‚~{€|~ƒ|pi€…ƒ…Š}~{}}|z}||~{y|}~‚€ƒ}|vwX~y{z|ztx~~ƒ‡v€‚~|„qˆ„ay~y{|qy‚r}|}}yx{…~Š}{p}}y‡}z|{…†y‰z‹ƒ‚y‡ƒxx‰s|Œ}‚}€‚|tƒ‚|Šxw‚€ƒ„wtu}‡|}|}}y}ƒz}|„|~z}wq}~€wsˆvz{uu€€|‚‚}‚~x}v~y‚xcs€t‹~q|{}}{}{†„~zq{„z|uŒ{v…y{~…€|~|€†w|{wzƒ~|p“yr|}~~~t~x}„yƒ|‚‡}w}{„|sw~‚}ˆk}{yytu{rv„€}{szyz{|‚~€Šƒv‚{|ˆ…yv‘w€‚ƒpu}{||~ƒ{q†y„y||tx}pyy}u€‚€€~‡{‚€ƒ|}{ƒy…}y}‚}y}yxg|zxŠ‚{~wy€|~‚†~uwvx€|u€yxp‘z~~ohv||vz€‚~€~|m‚z|oyws‰~~~p~~wp|}t{{z€|ƒuwu}‚u€}xy„|}v‚ƒ|w{{~wx|{„|ww‚‡}y||weuw{€{‚~vz}‡„ƒƒux|~xyozzyy{~Ž}ƒ„zv|€€~xr}~wx}}{z~€~y~s{‚u~‚|zwƒzvq~ƒw~{€zr‚~yqqyg……}q|z~€uz~oy€vvƒzxy~wyt†}t}uy†‚qsv|ˆ€„}z€}{|||yƒ€zyˆt|xz|xw~tzry~€}v‚y}yz€}yyz~r}|qy{w{t}…~{uvp}x€ƒzxwuyˆ€…u~zt€||†…€z…u{‰z{ow‰x€z–qyŒxwwy‡„{†ww|yw}tx…|€t‡}}z…zz„q‚w~vy€zxƒ‹try„v|xz’|wy{{x{}ƒ€|v…އ{„}~„{uˆ~tt~z€{€}‚€ˆx€{€z{~v‡yzur|t‚ƒ|tvt|€{qv|o~~~|zy„~…{jx‡z…‚|oo…€€l…w|v€†‚yzw~~v|ry~……~x{}€zt{ƒa}‡uz€„yw„r{w‹xs|~~{{{p}xy}ˆyy}s„ƒ{uyr~}r~„vz€wx{y}oyvr~q|{zŠ€u~{|xyƒn}vy}yw|pƒ€|„|ƒˆxtsq{xz†~}r‰y€u‡}wn†~z†|vxy‡xyl€zƒ|x‚zz{uz}~yvuƒz„}xzzvyxx‚}z}zƒ‚w„vf~zr„‚…sƒ||uƒ~z…‚ˆ|„}ƒ{~x~uƒw}z‚ˆ{{‚{~}}~~}z{z{†o”{wz}zy€w|m|{Ž€u|ptwxu~w{}€u€|z}|w†w~syr€ƒz†™ƒuwu„z{‚s~‡€v{‰‚yz€r‡~u„}x{„x~~ƒyƒ{xvzp|~€y‚~|x‚}r„|}y|{‚‰u{~{…{wz~~z€{€€‰~|x|‚|{…{ƒ‚„zŠ‚‚z‚zqkzŠ~~|~‡{||€yrƒz{{}~yy‚|}x„||xz…}}lxu…}‚x}{~~zyw{zw…}|€W€zƒ|~~~~}}}xzy}|wr{|}~‚zƒ}}vzz}v~{k†~|~||€wx~}‚~|~~€~ˆ}}x†oŠwzzz|€zywˆ||~}}~~~}ˆzˆ…yˆzyt{y‚{}‚{xz|€|s~‘w|u„ƒ‹{{}‹z‡u…v|€{‚{wve~‚€€|‡{x…~†}swv‘|s~yƒzz‚|v{‚{}u|‡„|…s}}~~†}~~ˆ€w~xy{ƒ€|}~‚€o|zzŒ„„€}|g‚{‚‚‚„†~€‚|‚v{„r‚vhƒ€zy€ƒw‚|z||ƒy|{rs||w{w~‚u†|x…„„xvro†{~‚{~|~v‚v|zˆ{~}‡sƒv€{}{||~~v~~v}|w~i€{|€{~{€xzx†~yzz€z{zq–‰~~ƒ|ƒ|n|hk€{zq|{zyw}}}„||y„‡q}|t~ˆmx€†u}ˆ|}{r|w„|qyu‚y†…x†~{w}}€|}€im{ˆƒx{y{€{}x|y~|‚|„‹}||}~{fw{z}………xzzƒ„‚~~j|{‚~{}t…z€{‚|‡n€…}v~j~}†y{tx}}€pyu}€€‹}~||v|wu~}~v|~‚{{€{€vR„|~y}~{}}}|q‚}‚~†ˆiwxŠ{}‚}}€o€}{yx{€~‚n}||ˆ|~‚y}m}xz~y~s}{~~|{‰x{zn~‚|}zx}{yx~{v€v~z{}|xw|z|ƒ|‚v|t€|}|x„~{~xst{px||{fƒ}}|€w~}zu‚g~ƒ€zx||‚„yŠxd{|zx}€„~ƒt…z||{qs~y…}wy~p~y€vƒxv}‚z€x…}y}|x{|z…„}|qz|…{€|k€v€wvypuy†m}€€qx~~v‚|~qz{‚v‡yy…yywz}€}t}‚{{zw~{}†{xs~Š~~{{z}~‚y|€{wˆˆ{‡w}{„}~{|„v€u|yzyƒ€zu{y„~†xy‚„||‚}zz~|y‡qx}uzd|z}~{€€}ƒ€ƒ{}‚z‚|{z€}vˆ‚}|ˆ‰|w{‚„z{y€}xy|Žz…|{s€u~zv|€|‚z†ƒsvˆƒ„~z€…{s€ƒz„…}zc}€}xxuy•{Žt€r†}z|xu„v}€{Ž}}wƒw~|}zƒyt€|||}|{{ƒ}zy‚ƒ€tt€y„{}z~z||w€|…}ozsw{}x~{~vt{}s~|‚|zŽtzƒ{ƒ~y~y}}v~y„~‚~xy~t}ƒ€y~yx||}y†v€q’‹}Žxv„tzZ~ou„rx„y~w|w~~{r‡vy|qx€…~|w|{€ym}‡}z~zywy…y|ˆx†|ƒ}„vw…v}~|zz‚|z}|xƒzxl}zƒ‹…}{u{ps}y~}€vxh}|ƒyv|y~„|zyˆ{‚‚{~~yu||{~z{|o|‚}v…‰~{yc€„‹t‰€v€x}pyz€v}€ypq}{ƒ‘„}~y|‚|}‹szv|r{~qzo{~y}…|‚|€~~}}……x~v€sz}ryy{{u{{{|sƒ~s|}u|‡–ƒ~‰zi}~|‰~~lsx}t‹ƒx~}{y}~t…|‹{y‚{}ux}u‰‚vyytˆb|u…‚|{{†}}z~…|z…vs}{‚|€}z~z||‚ƒ„ˆ™|~qv~~{{€}mz~|~‚{~~t~€tovxt€{‰z{‚o|k{…|€wx|~|zz}y|v~’w‹‚v„‹€x~~ww„ˆ}yo~y„~i€{ovt{ys~quy|x€€€‚y~}z‚…}v{ƒ†‚}yz~‚{„jtx…~‚~}~ƒ~w„o€u~|x}}{{w{•zz‚|lv€ty…y|{z|‚zx~}yv{p|„y€u„rw{~}pr„}y}wly|™|~x}{wwrwv{Sy{vz~…‚€u}ysx‹y|€{uy€}|}}yw{œv‚svzŠ}xy‚y~s{~{{~‚{R€y~‰{{x€|{|y~y“€z}{z}„pxtvm|t~z‚x’ww{yz€v{xz{}‰z€xkƒys„…‚zx}y€p‡~}}xun„~ˆ|}€‡zjx{M{…z‰~||{}w~…su~…z€ˆ~€…u€…}|}z{vyz†|xyprsy…€{xƒ€ƒw}xk{„„zsx}y‡{ƒ{xzx}ƒ~}z„tvu€‚|~€ƒyxy‚v|u†y‰xt~w|ƒy‚vz}€‚{‚|{„|€……‚ƒƒƒyzon€~{|w~‰€~}s|{€y|zxyysnw€t€…xzyzur€y}p…~|€‚Œ€€|z‚r…z€|‚zw€y…|‡…u|{w‚w~~xƒ€|nz…z…wƒoƒw†z‚}|u}z}}w†€w„xs~zx‡uwzgv}vr}x‡vw}}{~ƒ~‚xx}~€x|}nxxw}}ƒ~y‡“yuy}{n‚|tu€ƒy~u‹}}€z‡z|€v~wp|v{~j„„r}|‚w}s{~{~|{‡z~ƒt…€xs„i}t€„x„|{zxt{~Œw~~|{||€w|{m‚v|xz€}‚xƒu~u‚‡{m}v~wzz~x‚~{{‚ƒz{}€zpt}…€}}y~…‚w|uuy}€L‚ˆ„|su~~~‚~wv‰~yxpq|n}ryxr}{}x€xszxby}yxpw‚zm}||„uu{zw‹{~{|ƒ||…zx~‹ƒ|{|{}}{v}‚~i†{{}y‚ƒ}||wlpoyx‚yyw~wz}€{|„{u‚yx||€wxy}€~‚}|p}~~y€uˆt†€u}m}€€}~m~ztzw~}{‚}~}€€to|{€ƒ}~rxx~||{z‚t‡‡}{w„{u‚y‚‚|}w…{}ztt{wx{uv|}w|“mq{y€o€ƒƒz|xƒ}~x~xƒy}yz}~}x~}}}‘|…z}}€|}{„|{yz€z}…sxxu}{{|~||†~xˆr‹w~€‰r~wƒ|{z}~„|r{~mw|{‡€~…y|w~xvŒ~}|€o|~ox|{}}†|~xy|}}~zІ€|v{zyr|€€€{}|{uxˆv{vzy„u…x{}{|u€v€o|~{|‚}ƒ{†€}||‚n„wv‚w}|~‰}}‚zŠz„x||‚vzi~|x{€yw€|†}||…~u{|m|s|y–zw…~x|o|{}w~~|~{r|zt{{sy{~t}x…{ux~}}z{}}n€uw}~{az||vx}rŒ|~y~~~tvs|}}}uv|•|zwo~}~v|{}}x}~„}…z|t}}}€t„{n}n}qŠ„zz~y‚z|~‚y€w€~v‡xosr|„€y}‚~‚zzs|‚€ˆ}{z€tŒxz~~vvzz‚tbzˆu…‚}|€z}}‚|‘y|}~iy}}t€€rt}{y~|xƒ|wy}{€}‚„{ƒ‚y|ƒ|€{‹ƒ~~ƒu{zyy{Š~ƒ}{|ˆty~~uƒxy|{€wu}|z~s‚x„ƒ{‚xwƒt}~~‡|y‹}}ƒwvx{{|}z~w{yz{‚~vr}€w{‚|ƒ„|‚z„uxrx~…~t|‚…~v{€‚~„{pzxŠ{}uz{j|s~xu„z‚{‹}q|}ƒ~~xx}~{~~z}}}}{w|~ty}}zu|{z}}|~s“~sz{i|ryy|h{}}z…q€{‚|}|€€}~‚~Œƒ„yq{{ƒu€x}‚€ª||ƒ||{xz}|}€}ƒ~|~yˆ}z}z|xx~uv€pw~~xƒ}r…~„zŒƒ~y|xwƒ{z~€zy„o{†xwˆˆ~‰w{‚v|xz{~}|{|xq†€v€wƒ|…Š„„yy{vt‡y{ƒ{|}rv}|‚vxƒ€}„|wy~~ƒx|}vz„€ur~x}q„ˆp{}€|tyv{g}~x}}v|‚}}€~}xr‚…„}†u„€„ƒ‡…|wu~yyzxvz„x„„}~qv€ƒy~{|€€ux‡z}z{y~y}…x|ˆ~~‡t|}|~uxmr{†yˆ†v„yszw{y€~}…zx‚‡xv‡z„~~‚„l€|syw„}‚{vz‚€†y|‚€n~wz}€|~u„}ƒ|s}}‚‚}r€v…r}z„y‡‰zyyu…n{y~}~}}|xx€xvx~€€|€|qxw{uo}w|x{}„ww‚|xx…v}xƒ|y€t‡z…{w|t€‚v‚y{|€y~w|xuy‚„z{}wz€||ƒ„zrx}~{}~y|p€†}~~‡y”}}~|~|y‚€y}€{‹{}q~~{~|‚pƒxz„{{}xrp{~~|w{‚w‚}w|—{{}ƒ€€x}€~xx~}px~{„†‘ywƒszy~q€s„nts~€}y‚|x}ƒy}yys{}wy€x„wsyt†zz|…s|z}xz~|y}zvqtpvwtyj{y{ƒ|uk‚~‡}}qz‡Œz~wszƒw‡zZzy‚wzzyƒ€€w}‰jz~|…x|‰‚s‚zvˆy|{}~{~~~{€Š~…€€x‚bzy‚z{‚yy~~€|v|€|ƒ‰{€Œˆ{|ƒ}z~€†~“|…~yy|€‡‚{z…„}z€z}{t{xz|z{}y€{~x|€~xzz€}|‚ƒ†}{~€€z…Š|~wt„z|z‰vy{~„~…k{€~|}~~}|vuyy€x‚x…z~‚zƒ}rl…yr}„x‡y†f„~t{~‰{}„~|~{|ˆxz}}x€z‡†}|z{‡~{p}}isyƒzƒ€|s†{~€|v|†|uz}Šs}}€~|~‚|ˆ{}q|sƒ‡„z}{xvw}{xx|yw€{z€yhx{„~~y}z‚‘€ˆ}‚}}y~vˆnrjuv{|w{~€z|€w‚}{„}~y}ƒƒ}z…€z{€zw|mys€~yz|z}ƒ||€|ux~l‚~{~t~‚{z|}sm†x}‡yv€|}x~€zozz|||vywƒr}{{ƒ€ƒx}wyŽ‚wtw‚‚‚ƒ}…y}{~„{z~yx{|w€~}k‡}~z€~…‚{}{~qysn{‚~{g~v}|py‚j€y}zz}„}|‚z~†€|€‡‰{}}wzv|oz}{t}|{ƒ‚}†~uxƒx€}{ˆx~||r{}yzxv~€‚~ww€{|}q||y|‚||„ƒ†‚sƒv€s~y|€{~~ƒz‘z†€€zph|o}}„y~|…y~|‰|‰€}{‡ww|„v|{~{„zzuux€|…t‚y{twt‡}‡wy|}{~‚ƒ_{‡z}|lˆv~|‚€p€zs|€}|‚s~€xxt~…~}n}‚{}~~q~€€t}}‹|z…}„sv‚{vw}|~}}y†}—{{nzt|||}s~€ƒ~‡|}z}ƒn‚v~~}v|rqryx~yz||v{}~ˆ{‚{~y}z{}q†wy”rzq|~}~|{x||}‚|z†~zsoz„€y|x‚v‚{€€|ˆ}z‚|~~xz‡~„„|}}}p€ƒzqx~z†~~s}€}}|}inf†~yzx|ƒ‰~}y~€}x„}~†{€€€|ˆ~…‚zw}…~wy}~v|}ƒ~y…{w†ƒ„y{y‚wvy|||{v„~|{‚{„y|ku‚y{y‚}y”€‡‚y}|‹we~q~‚z‡w}v~†~|~~}ƒƒ‚q||~ƒyz~~‰~~qp{€{t|}}w~€ƒw€u{wtyƒ}vvvy€z{qvz{|{{ƒ|€y‚|€}~z~}wvyzƒ‡w‚{‚||r~tbmv}z„{|{{ƒ{~{{~‚wz{w||x}x}„}€†s€€u|xzvxy|o}}Š‚|m€t~|y}{|y|~w}|{y~}s…}€~€‡z}|}zmƒ{|}y…|€xstxyyz{w|„xx…|}}{ƒ~‡}ƒ€v‚wy{y…{|}~z~svx{w‡|v|zvo{~vx‚€|{z„qz€x€xz}~s†~•v~|z}}ƒy€†sx}|‚}€~uƒ‚z{{}{}}w…}€{wxv|€}v‚z~~}†{„{}{}fwr|~„}†‚v{ttƒ„uy|~u{}~}{€|yzyy~x~~~}ƒv€ukw„€~{}€yŠx}|mw‚€ƒzqƒ€z€‚ƒ}{zy{x}~‚‚‚€}zwzu„~|~‡~w|v„}{z†|zrwj‰xŒx~€‚€€xy‚{vŒfx…}wz|zx}zz}vq}z~v|v|z‚}ˆn|„€€ƒ€yxƒ}‚zz‚„|q…‚€z|~~|z|u~x‚‚}sx|}}{}tv|„ƒt|}zwu{x~t|zŽˆs}z||}vvk{~y|{„t}~€s{{tŒx€€gyhy…}…x„u~|zl‚†v„w~~~q}zzx|~pyy{ƒƒƒ‡w{l€‹y}s|rpvy{|‚o{|…vwy„‚‚}v‚v}{r}{~ˆxr|…zm|py‚‡x‚{w…†~x€}s€‡|‘{ywwoŒywt|…~z‚{||yx€~|y{|vt~…‚„xŽ~{Œ|{v||y{~{uus€ƒs„y~rzr{ƒ‡€os{ƒƒ{j€}|v~‡z|„ˆ|zz„{w~€u|y}„|u€}yzv|~ƒx}wz‹{|w|€~vs}…}tzyu€~x|‰rw}y†w€‹ƒ~v‰Šv}u„t|x||ys€‰vx|os{{x……|~ƒƒ{{~…~‘xr{x}|ev†p{vt}z€t€ƒ|u€}tnstw}w|}}“||tz|†r~~u…‚€|z‚„‚px…upy€|~|vzƒ}‰…{|~~€t€ut}{x~~|t„|}}z‚xws~tw€vƒ}q|{{|~{t~t~yz~v}sy~xŠ‚{z}yu~yw{{t…†y}‡„ptzŒ}y}€~~}~~w„}||}z‡~‚v~€‡|}~s}|€{€‚ux‹|z…|yŠ€|}€wu~x{px{‚{yx€~y~w~~p|„{}n~v||u~||y{{€~‹}|}vym|~|„~~~|rv{z{~s{{…€{}~‡x…w€€~€‚‚}~{ƒ€{|y}{y~€s}y|~t{{x}|yy{t||uxv{~}{ww€ty†}{wx{}zuy€ƒzvvu|yzx„€ƒ|x{}zx{||‚€yzu|ƒy~~wu…y}r€wyzƒ~zvyv…„yw{…€†{|„z|u{w{}~|xy~z}‚{|€„–„x|y}}„€ˆ€|…ƒ~{€|{w„r€ywx{ˆ{z€„…‚{r‚†‰x…‚~~|v{y‡v†zxƒ|v‚€u€~w|ƒ|{{x‚ƒ|€z~||†v€ˆy}€sxy‰~wƒ‚€~~{|ƒ€zƒ‚…‡zx…Š€{y}z{xx}|w{…Š}‚~€oƒž}uyu~|{€„yo|Ž|w‚~{yz~~ƒz~yw~y}ytzv{xwu|qw‚€€€~{uzyz„‚z}}~z€{{}{{x€u|}|}|‡ˆ|{†xx|asby|~~v~ƒ‡‚}p{}{z{uxzv†oz‚ˆƒ|}ƒ€y}r{k~s„}||y|z}€z€~wy{„xƒ†ƒxvw}r‡~sw…x{{€‡l~~z~z{xuƒt~}€}„yuyyv}z‚}r~€{|z}€z…ty~~ƒ|{~u}rvƒ}uwsynƒyƒwr€x{}„uv‡‰†}ys~t~|€}„t|p‚u{||‡w|}‚‚vv†}vr{‚zzxoxw{}~‚y†|uy}z{|t‚y}‚x}uˆ~‹|{{€k„wzwˆ‹|y|††~‚w{~t‚…z||~x„…v}z‚q}vt…‡y|z~€u}†…w€}{‡€}{yx‡v}z€t{|||„wnww{„t~†{xy~€‡{ˆw}zƒ‚€x}|}xw“€|Œ~vxryvuˆ€‚~s{{zrzi€ƒ~yz}‚ƒ{iŠs}‡|z„}ƒy‚}€}„€{wz}z}~|€{yg|}{ƒys€€~vt‚zŽ~{ty~yvŠ|}}‚xzx|y€~‚{}v†€}Šƒ{~€xƒ€zˆzzzƒ~w|v}}~‚{{{w~…’„€ƒz}~|s†wx€z†sy~€xlj^~x}s…{v{yu‹z}€z~€}tz|zy{ˆ|y‚€†€}€y~€€‘xrzux}qŽ~€xr~s€t~}}{ovz~{z~}yup~|€~~~~y}~}€~p|zt†wz‚}}yly{€~wƒ~wz|ƒ{y}v„‚yz||wz{~u€xxwy}€xƒz„€z~z{ˆt„uz‚~‰mywuy}~{uw{}~„|z~…||l}u}~|q€z€ƒ~€€y‚€~‰ƒ~}zz„€ƒz~}~w|†y~}}lu}z|ƒ~y„ty{v|g{†~z€ƒ}~†ˆ…t{ƒ{~~w€z€}~„ˆ~vv}tp…ˆ~~|‡wu||~x}‰t{f†|t‡|oˆwv‚†|~‚€}qr„|„uv~|{~ww~„qrp{|xu}~‡‹Š}y{ˆ}sƒz‹†{y€xƒlŠ‹wt€|Œ~}w{w}x|~}x{zvt~€†y|z‡yy†u€€}€}y~‚t|m~|n€€z{|€‰||z‚|ur~†usƒ{}z}‚|{ˆ|z}‚yІ‹vi‚|†||}{~Š~„y‚{x{x~v}~€x}v}~~‚v‚w€q{ˆ}s||m…}{{‡z€~|zwz}ˆ|t„xuy‡~zy†zz‚‡{~s}ƒ}ux‰u|zx{yƒ}ww{ƒ‚{y~ˆw†iu}—yw}ˆ€ƒ~Š}~|‡{x~{zƒƒ”zy|~„yy‚}w}z{~„Š€€„||y~~€~|„w†u€~ˆ‚z~€xzy|~|{{||||‚v‰w{|w|ƒxqu}{rƒ||z†ƒzˆ~~{yyxt„„€}‚q~||Œƒ{…€yv}~}{‚yoq{v{€~}~||}~~zt‚xtu}z{}y}~|}}z|…z‚x~wzux|zq||w~€€…€}|‡zz††|„zw€xn|~|€~wŽ~v{~z||‹‚‚r‚|zz„„{n†~„}u…yzztv}vy„yƒ~}‚…|€z€€~€w}‡~‚|‹€„{xw€Š‚~rtƒ‚|‰”wu|~~€{w€t€~‚h{{€ƒ|„u}‚xp}~}ƒyw}xs„~Š~|z}v„‚|tvzˆ{x{|ƒuz}suƒq~‚…yŒƒƒvˆ}yzy€w€xywƒ†€~~vzzŠs~†~z|zwuƒ{‡vz{zsytyy‡~}|vy{‚€zzzŠ‚€…z{zˆzy€}yv|xƒ}x}{}~xz~vƒy‚{†}‚wz{~…Š|nz}u€qv€xnƒlx{}}ƒ€„~}~~l|~yxŒ‚t€st|wvz~y~wz|{…|{z€}~|xy}oxt‚{r|xryxy‚c€€~}‰{zxujxyx‘|}„u‚„|‚t…yyy„t|~}t~‘€{p€‚‘u{{x}nxw~|‚v~‡o€‰z„s€}~…ˆ}z‚x’rv}€~‚t}zxqˆzw}€†v‚~x~~x„yx}s{ƒ…o€w‡‚z{y}yp~ƒƒ|~r~€zx{xnw‡|r~~}}zr}y|{zywp~€w†zqm€|}}wˆƒz…|{xw|u|{w|{p|}ˆ{u{txp‡r{xcz|y{h„€„{~|€x}s{}vzˆ€x~}wyƒyfzvy~t~‡|y{r~Š}w}uƒz€z|v‚~q~}q|~tl…~~ˆzyx‚†……|v}|||{†}{}~x{„q|{|€|…}|{v{ww}{~|z|€t~xq}}‚us}‚}|zz‚tzpz|z~|z}‚‚}z~zu}t~|n‚~uŠrvz|}{€xx‰o}zyxx‚ƒ{~„€l}„}}‚|{‚u|wyx|g~~zzr}k„x‰z~}zƒ€n€„|}~}yr~~…v~w|nypƒ~{v|}xz}~ƒxx}qzxrx}|w}}|v|q}|{xy†zw€}{x†|z}‚p€~|}xzuvƒqri~{†{{|y~w}†{€|zƒp}}v{{„}z‹ƒuuu{€€}~w€vu{z}|€|z|„†~|}~o~€xyq|y€|~~}{s…‰}…zq‚v{z||‡{ryu}o}…„v~|xuq{s}~|}}~‚w~x~|hzy†‚|z„~~|{wz„{xt{vzƒ€z|€ƒ|z|{‚oy{{{„u{vx~|xyy~|v}}vwƒuzvƒx…}zuynx|ty}}„ƒ|}}|~{€wo~vz‘€{x}ƒ}}y€|ƒt„wƒz}zrŠ€x€ztzk~|‰x}…qw|{~‚|~zy}{|}zy}„zƒ…€tr„}‚‡z|~|vzx|u{{s€€|v}|~v€~€y~~~{x|t|m~}x€||€‡|~„}z~{w~p‚z“„xzz~}y}wv}tw~|t€€}…{†{ƒrz€v}‹‚{||z…z…{y‡{€||€|x{x{zlzzun‡{Š}x{z}y€~{’wy|{‚w~}}}zyvwoƒ{…{}hƒ€w{uyzy~€{~||}z|i}{yƒ|{€|rw~z„x~sy‡~x~~—ƒzt„x|{v{{x~xwz{z{yxoyxv€|…}wx€‚„‚|}||}}t€|~~tzvƒ|€€{}~ƒ†wy‰†}‚„zw|z|{„~}~z~—}|‡}uz}x€}|yƒz…y|z{w|w…}~z‚~€ƒ|w{ˆw}{}|}{z}|z}yv{~}rz~|€}‰}}~{t|~y}x€wz}xtx~||€‡{z}z‚~‚~yx{˜}w|z{†}‘€vƒ||{‚|qq}w}މw‚r‚‚|}z|s}‚{}…Šv}}yz„…w•zŠ}|„yˆ€~z|xƒv…ƒu}ywvuz†‡|€zr}z|y‚€yzrtspfs}€€~€y|m}}y~{wƒlww€x}{vr{~{||q‚u}~}}}}xz}}ƒysƒ‹|ˆy~xvƒ|~xy{}ƒ~…|€„w{}|z~|z~ƒ|‚wzƒuFz|xz€~„}…txwvy|y€xrtyz~yz|}‚€€z‡{tzztzw|„~}{~z~zt€|‚†xy€}y„m|~‡z{uu~~w}{{}z„y|„|tƒx†y~€{z{Šy~}€‚ƒzƒtv{~‚yw„~€w}€xrxƒ|…u~€x}}}hˆ|~|~|}ezxuwz„ƒw„wl‚}|z|{zr}||}|}j~€}tvu„yk|{ƒ…‰wxw{|q}}y|…ˆ‰}q„~x|xv}}~€‡~uƒ{v|}{t€|xwy‚€v|y€}{{qr|‚~~v€|…{„wz|y}Šy}tx}{tƒ}|x|{‡zy}~{z~Š~ƒ}ƒ{{‚w|pq}x{v{{l}uzu|}}l†~{‚ts~wzw|~{}{r{~u~|{r{||}{~mv~}vnx~}z~}w†€‚w~ƒ‹rx{~}}}†‡s{‚{mx€€}}x|uƒxzƒvzz{|xˆ|‚€€}|†€|uz~||}€…x€{z|‰‚ˆ|~z€~~}…{w„u€yˆƒ‹{‡k}z„y€†wzz|}}y~zˆzx~|p~€w~~yw…‹}‚{‚z{€o|‹zs{y…zx’ƒŠz€m{l€{~v{drw…€}w}s{„s}uuv€v„uqyy„}s‰yz|‰ƒ‚„yy‚~~yuw|ou~x’}|x€„|z„y‚yt‰|x~Žyz‚{xyx€r~w{ˆ|wƒtqw€„w†}}}‚{€†z{|su‡€Œzq‚~‚s|~xzyy|†zwz}pw{l‡xsr}€|‚|p„yw{‘z~ˆ~zqƒ{y„~†‚yo„y|{r{vs|z}Šuv|‚s€}w|…|z‚—|Œ€x„…x{ˆ€vt{x}y~‚~€sƒŽ~}vu€‡‡|{†y„|†tt€{{„~q„x†ƒx‡yt‡„|w‚yˆd|ˆ‡vm‹ww‚‚zuxq|~vŠyp‚Œxƒ‡ƒ{€€t}}€~p{{~z{~p~„„|u‚ƒ„y‚€ƒ„{s}€€{~|wt„vw~t|y~€u{vŠz~}€‚}}}u€|qw|z‚~uxt‹uz†€„t‡v…z{|„yƒ‚q~~{rvt}…‚…|{~||{~}vzv{yˆy€y‡~uupv€{}yˆ{z~{~y}ƒ|y|€}}~m}€Œzyz{|u}v{|}xy€y|~~w~†wq|vy|u„|xnŠ…xzx‚zx|v{ƒ‚€t‚~y~‚pu†ƒoz{ƒƒ{…~|{xq€}‰{x€}}|}}|m„}~w‚z€Œx~tƒ|Š}xz}uƒ}}{xz€~~zyu‹{…xv€{€ƒ}ux€†||…ˆ}~{|w~vzy…z}†yyt~ƒ‚w|z~p{ƒz€€{~ƒ|z‡zx€xsuz~x}…}}zzuŽmy|‚ƒq|€{|~}xzzs‰xwyˆ|€uz€|z~{€~vx…|w|{‡|~v~}~r}ƒƒ{|~‡z}€qvvqx‡z}€}„||“‚}~z~}~~x~v€ƒ{t}€†…x†wy‚{q€vƒy–{ˆz}…‡ƒ~€{}m}z}y…{|jx~}€‚†z}}€z€s}€}{‘}}z~~zz{{twƒk{–{~{{}‚„ƒqyz}‚‡zrƒuy‡}†‚w{‚{{x}Œw{|z„‚|v{{vz|z~vw~}€y~~}}v„z{xvtwr‡ƒ|Š€~z…‚Št‡Œ~ƒ~‡‰~x|z‚~svwzxz}|y}yyt~~ˆ‚y{||xƒyu|ww€ƒx€~zƒu‚~}‰{s~}€y|‚€}|Œ~€{{ztv|v}‰|€|‚}u~w}|wxy|{Œr}€{{|z~~~}{zy~|p|wxz~€xz~yxx{z…~„z|{{wywˆz{~~xu~z|ww‚}v€|~|{|~€{j†}€~€~€ƒ}|}zz†|‰zxu{xur{~ztzz|~xx~y}~~ywƒ~{|nh„|v|z{…v{wŽtv}{‚wq}}z|…~~{{ƒmx‰tr}}x‚w…xƒ}t{x„|zy||txvzz€otwztƒuƒtxww„†{{€~zp}xˆv|z}~yƒtt{Ž~€zy}yƒv…z~}}rz…€u~‰y~{tzv‡ƒzxy{t~y~}w…}zvƒ‚|{u‚ƒx‚€€z{zxs‹||z}v}{{}x{zˆ€~y•ut€{€yx~uwƒ|z|zuz}…~}‡wxy~ox~€|y~wv…{pŒ~€v|‡„z|‚hzry|}}€‡wr‚}|z|‚u~yxs‚|wzƒƒz€€‹y~wt‡~‚q}ŠsŒyw€…|ww†}|{i|y|y†x‚‚€pu}x~ƒqtu|tƒƒz‰‚}}ƒ{}|„t~y‚}‚x‚x€}ƒ}yx|}‰|}…z~{vyrzu|}wp{u|z…ƒ€uƒ…~…‡u†‚~z}ƒrw~m{€xq€}y~ˆyy€w}x‚s„„w€‚ntv€vvv„„Žp~‚v…}…|ryny…ykƒ|}}~~†~v|xˆt~€z~ƒ‹s~z~xu|{‚}yu|y€w{zxyz…w~~{€kzxy}|zm€~~ysƒv{€xzwz~tx||}y‡~~~y…ˆyyy|{z|}|{{{~~|z~d{‚ˆ{|~x{zpsw‹tƒ}zˆsy€‹y{{qt~Œ{~€||xƒ|w}{{vl…wu}~|uvwz‚‰xtxŠt‚tqtw~‚|}{ƒ€vƒx}z{€}‚vz|svv|zu‚{qywy}~‡‡ruƒ€|w|~s}€v€uvvlƒ€w~wt|ww}uwtyx}u{|v|y†|vwy„r~jvz‚}‚|t‹y…}uw{|‡v}vzyywp‚sx}{„z{ƒ}†}u‰||x|ˆ|€}…{r}|‡y€ƒ‚ƒp…xu{w|‘xzyr|~vpzzs||‚wˆxƒ~||z|ƒv{„ˆ}„{v{ƒ{xˆ}om~„€rz~{€€{}m}y}uwvx~{}y}|k€m}{}|uƒxy€{~s{‚„v’~}|€|x€wz{zzx~}wq€|x|}wy{|u€…yyx|~p€v‡w~{t‚|u~}€z|w~}yw~ˆr‚‚{ƒts}y{u}s|u~}m||‚‚~{‰w‹qg„…€yzwzznyw„…~}ƒ„wz€qƒw„{x‚„t|‰z‚q‰€{{yy‚so‚}„svw}}xx‚€~p~‚‰k‚~€}u}w~zx}wxu||‚jzxru‚t€zu€zwsyx|tw{zwyr†|€x|yŽŠwx…}{w}‚~}‚v{vr€w{‚„…o‚|}xs}€…|zt}{to|…|€~vzvwy{|{pw~uos‚wƒx~utvnzw…|yˆ}y‘v{|zqxyz‰sn‚}}}yz|{tbŠ€s{w{~wx}vziy}|uw|}~|zu„vv}wƒuw}ƒws~†~~€}|€ƒŠyt€|}ˆ|‡€ty~x}}t~…~xvƒuyu„z‰€}}lˆv|mtzy„{‚z‚t|yszzx‡uzƒ‚}{€i~ˆw}|p€{ztw‚}yŠn€„€{y‹zŒ†}yqx|zƒ‚Xycy}~tƒ~„{z‚lƒtr€}~uwˆv|}‚|r…tw{¡…z{}€~{{~‡y|v|{~ƒ}‚~‚y„sxzyj€€|€v~ˆqatˆshvu……xw{‚|ƒ|}v|€€qx|ztƒpszvc|yz}qz{zv|~„zzy|{vwx{{sŠˆ€ˆtl†‡}z}uw|{m}ˆ~z~lq‡xrqoy}{…|s€~{n~~x†v{†}}vƒy‚wvˆ|rwjy}ƒt}ƒwx~sxrƒj|€„‡x}~~vyzz}{w‡…{{|y‚rwk‚}o}u‚yxzzx}~€n~|nyz€m~„zwryx{‚‚}w€ƒu‚€|~y€}yrj‚wty…tv‚m‡xy~‰x}~}ƒ|qnŽ~yz}w}n|rqzŽ}w{w||‡‹vw}}r|{ˆ{‰€…p|z{}ww}y{~q}sv–}}~€‚|‚€|j€t~x‚yxvw|{}‚yy{‚zxz{}|›|xƒ|{u}x}…}uŒy…xz|u€‚|u{{€y|{z€‡{‚€osy}vyz~o€t|u†{„š|€f}‚‚‡ƒ}u€|z}r€„zƒrw{}wz{yz}~q€t}uyz‚}~‰z…{˜~mx…|w{|v{v|ƒ~~x|zƒ|~yz…|ztz{€{}s‹s~‡w‚y|txv~~€zyr€}x~x|q‡j}z†k|yvs„v||~y‚…y}‹y|~‚x}}s|€}€~~}u€y{|‚x~‚ƒ‚x{|}|w‚†}~{y†wb~}x~…uq{‚}x}{}}{†zƒ€{yz{‚}ƒ‡xnwz{~txu†~{v}{}}||}|n{z‚u~tyy}yyy{~‡v~l€xŽ|„v||~ƒ|ƒzƒ~r…‚{x„€|€ƒsˆyz„z}}{†}‚n‚zzv{y€{zyzak‡€{z}~~ƒyv~‚x}|wxv€x~}wz}y~|‡xs‚‚ou~„tˆ‚sy|tw{tsh}w~xzˆ€{z|€ynx…ye|wtzrƒ‚‚Œ{‚ƒ{|~ƒwu€{yzz{x}z}~{€„{}‚‡w†~yzv~}|ƒ||€‡z|yy‘u}||z€}w€Šxfzuy€ˆ|zxt}~z{‚{}‚|x…†z‚|€€z…|y~„}}€†}yyx‚w€~}}kvzv{~~z~tyzw}z{dz{…‚‚‚ƒ‘w„|~€~~‚y|||€xu|v~v€†z~s{w€}z|‚€|{{~r~‚‚~||{s|zy‚y}uŒ{€~yxv}~}’ƒx}€y„€o‚|~‚€}y}yv~wƒ|}“}}€j{}~z|vz€‚{{}‚xsz…~{†~~|}y{qww~|}t{}}{xv{Uwy‡€‚‚z}}zruz‡{yy‰}€ƒ{}xpƒvx}w€x}„}z{~€}€x}|…y‡yr}†~wt~}{~v€{z„„xwtƒzz~ux„{€q…d„y|tz…|xƒ{{‚y…}ƒ‚~|s~z€rw€‚y}x}—}€w€‚ƒy|€…[|„€|€tzx}u{p‚|mx}„y„zvo{}{v{‚‰y…~€~{|…x{€\‚~|„~€{}v‚xvƒ€‡tv}~€yxy„rz{~ƒ}ƒ€}zzpwqjze|x‡‡z€v‡}~Œ€|up}€Šo}w{}|x~‚†{u|wqx{wm~q~w~|{Šz€pˆ”w’ˆx}€‚€w„{€‡ƒ{xu}srn}€‡|{~}yz~}€„rx€oxzz|ƒ{ƒˆ|uvƒ|~xz}„ˆƒƒ‚…€~x††x†€sˆ|}{z{p€{{ƒ}†m‚ty€~t–†~o{…vz~{„ct~ƒo{ƒzyy|ˆy|}uv{izxt|‚rr€‚y|{x}‚†z†‚€}{~|ƒly†|ƒqyuy€„kwz{szx{€~‚}~}}zW†q‡ƒ…„‰z~zx„‚‚l{~y€|w‚|z~]…o~ƒƒzpztR„{|rz~mxssxx|‚†‡~›{{…u{}|…y~~xyy|~~s~x}ƒ|rz‚}~…€w}qw|…xy||~ƒƒ~zƒ„‹ˆvx{z|…Š{xyƒ~q€‚y€~„~s‚…rv}‡vw}|yv„vz~„ƒz„|~}wk~†}€y†ˆŒy|‡{„y}r{|zs„v}~|}ow}z‡€Žƒ”ƒ‡{{€~uzv~{†‚rzyu|qz‡„}~‚r{ƒ€}xz~s€Žx€~t|yƒxz}r‰z€w|{}|}z€ƒ{z~|y„y~†„w‚h…zzu„uzx~}w~xŠwŠ|}}}ƒwu~yƒ}xx‚t|t~€wyƒv}wvz~w‡}ƒ€|‚wns…xz|pxz‚}{}z|}„||u}z~{tx|}{~€…yvo}u|y‡yxt~{u~}xx{}~{{sƒ{…z‚~zjt|€{t}~zw~zwy|ƒƒ„my|yu~{xwz€y~uv~|wŒˆxpy}yot}|u}…†…‡€x}€u~}{~|yu}{Š}}ˆz{}x~z†t~{~|ƒt…xq†zvx~„{}‚tz„€‚twzu‚‹ƒ‚}y|v{y€vqo~z|y~ƒ|w~x{w}~„zz†|{w||}€~t~|y}}…‚|~z„zb~}€~wrx|y‡{y€y€y~€€~rz„{‚uu|~„xƒzzw€}{†yƒt{{z{{ƒq{„wsrv€}|„‚{}}}~‡zy†v|{}}xz‚‚xw~ƒ|{‰‚†„}ˆ~‚ƒz{}…|r~‚„y{xw{uq|oƒ‹}zxyz€w{{qx||…m‚qyƒ€{|x{|}|x~}~~}‚{}y|„zyƒ‰~xy‰{|‚ˆwr~~vw€}{‚zysp€|€ƒmz}~z{|€}ywrvsŠwƒ~y|yu{x{}{|tq{w†}y€|yƒ}|~v~{rƒ|t}z~|~xx~|€~{}y{z~w|m|„x„{zso|}‡v{{}}…}{„}v€zzvz{|‚v‚wq‚€ƒ}{~|}|…~zo~|x|}{{x~zyurtwƒuy~|z‹~z‚‚†}{x|iƒvx{{„„x{}v€ƒ{qƒ}~||‹}‚z~x€‡‚v}xtp…}}{{x|{{{{w„wyƒz‚{zŒnx|ƒ}p~|~}‚|z‡„{yzwwƒsyx~}~}||zz|…s|z{‚v|}m~vp|}|~„|€v‚Œ}~yitzv~|~{†~€}||t~‚€z€v~z|wwzrz~~}~‚{ƒz|vuzwx†z{{t}xu†z}€{zzƒzsw|}y~‚}~xzyu~ts‰||qs‚~}{„}w}„ys{wwz|€zw{x}€}„x‹…{|€|€t|x{z‚s~u„y}|‚||svs}œx{~||„†{v…€t~v}~uƒ{{€vƒwy~{|~yxt€yz||y~|wz|~Št~xz|ƒˆŠ{{}~sˆzxs|~‚~vq~y|xrzxw|~z~~…~€}y|~|~t‚z€}{x|zˆ€~z„|‚€|z{{}~ux{x„€{€„z†ou…}ƒ{ƒ‚vˆ}w~|{~ˆ|w|€xz}wwŠ}z}}}w~uyz}|~|ˆotzzv}|z|zvto|€|~r„ƒ}xŠ|€€s€~z{y€vw‡~sus‰{ƒ€xwzy}yvy‚€v{z}v}~uk{€‡}€y}umwzx‚}€~ƒ~ƒq{|}€‰zv}w…„{|wyyq|ƒw}~w}|€€||~‚}~{xƒvv€~rƒ~‡‚~|z}wx~yx€s}~ƒvzut€~a€x|~{x‚{x{w|x|sxx}rvw‚a~{ƒwv{n‡‚{€~y‚€{x{t}y~{„v|x~|†…}}wy‚~|}u‚yz€~{yˆtƒ‹tzx‡uw|‚zwƒ…}xuvyuu„}r€€‚uzy{~x€u{y€x{}€|zˆzw€}€|{|z{‚}€‡}z„zw€z~vz|{z‚xw„{x~o…~‡~„z‚xm}|w~t|„}‰|}{ƒ€zy}€€z|’‚{Œ~x~}~v„e‚{|woyv~t‚z}~‚~~u€‚‚~ƒy~}€w‡x{w‡||tvo}{}yyƒt‹x|}w‚ƒ€x{|x}~€€|„zxvur~‡}sw‡~wr‹‰|„t|r‚x~‚€˜{ˆzx{ƒ†|}uyv|†€zƒzyx†yy€|…|~|€pƒu€w‚yt€y}ƒvvy{Ž~{‚wx{~|}{ƒ}xypv~y~r~osˆ€†ttv€}~r€{p‚{}„€ynv‚z€~wz|€{z}gz‹zywƒ}„†{}v„„‹zž€xtƒs‚~xv‰x{}{v{ˆ{y|yz…{_ƒx|vru~x~z||‚z|ƒv€z{~|~~}~}…|„€prpw„w{y|wu|ƒ{{{|z‚}†~ƒxŽ„wu‹y}‚{€€€s„|yzˆqyz…{txƒu„w€|rˆ}w|yx~p{‚y€{„q{p}{v‡}|{tw|xwyq„uyvy…~„v{xwz€€ntz„‰w{Šq~~‚€y|{‚~‹…wywŒz}€}‚}vx|€}…vy~l~†vuqvƒ{{xw{€{zwt~„rz}}~€zxzx|…zy|wyu‰|wx{‚pvnvƒttr€p}€yop~}zyzz…x{}‚‰‚w~~€~€~wƒƒ|€}‚{u}{‡joyvy‚„{|€}wun€yzxxz€†|z€w‚nzry~~}~€zz€€~}‡}‚z}}y€}yw{‡y…|vƒuy~~}nu{_x€xƒu}„yv|~rfƒzƒ{u‚…x€s…r}zz~~z‹u~t}y‰|~Œr‚ƒ|Šd~q~kƒz~wv}o|y||z‚xyo†|v{€Œ„ww}}~w|„z~€}x{~|}w{x~ƒ…y€ƒ…xv…‡†|up|…~vz~w}vxw†‘rv|v€vov~|{ƒx~€zyw|†…€‡s‚yu}v…}„swxisz}it|€|‹\y|‹†y€z|ƒ}}y}i~‰€y„z{lvz~Œƒ}vŒ}‡†xrxrtor~~‡ƒz}{v„zz{„yƒ€wƒz†~v€€†zq…y|€}}t|xwZ{€{xu}x€{{xvtz~}}|ous†}s{}‡}€}zztwy…u‹txt|‘|z|gx{z‚uwzzt†w}x|t|ƒ~||yvyqssro„€}v{o‚rtavfƒ|‡…z|‡z|}€y}y||z‚y|x~†€wwyy‚vƒrw{{“€ˆl†{{‰z€}{m€y…{z€u„‡}†vls{|s~}xx{~{m}z‚}€}v{|{r}xy~‹m„„zrvy}|„vus|‚€s}„~|qw|yum~szux|zox}{xv„Št€z||}€|Š|s}xssyx€Œu{„xky…j€~uy|yu|vzpx}gjƒuyx|i‚zvxn\}}‡€~r…‰{€zz…€uw~yr{{x}uu|‚s{xru‰w‡€zsotŽy|{zzy€bz}e‚~{€ƒ€€~w|q…~r‚uv{l}v‚‚‚|“~‡zrŽ|xzrƒƒuzh{~om‡querz}{|z{w}~{|€ms~†‚{xy„]}z}w‚pruqmm}„vvˆˆo}{…†x~y‚i€‚zƒizruy}‰|y~…{xmstƒ~}vz{wyy…uuy{r|}o|}~x~Œ{€†wv|z{€„p~zox{v~z‰‚}u|zwv‡lsuuz€y|{}}~x|}ƒ}„€y~‡€yy†wp~‰x‚zupx{‚€{zv~yhv•u‡{||‡…x~zzu€~~|€~|~~€€}s‡}†y}{ˆvwwz~i|€zzt}xƒ|y‡v•z{z{‚‚|vz‚ƒqj€€ys„x}‚|€}yx}|}o‚y”‡v}†~t~y~s‚~xxv|€}}€r~~}s{u}Œnx„y{un~{|z‹tjƒu}ƒ‚{‚ws„€ƒ|p€}{||{zzyv{ƒ†‡{ry}‡y{…r€{{„}zp…xw|~ˆ{}~wy|rsxt„xrt{z€x‚‚|†r|~|{r‚z‹wyu{|‹‚g~}zszu|‚ƒz~vz†wœw|{{†€~}€o„~x|€…}vwzys|||ƒ}€r~qwwƒ~Š}{z~‚€…oq}|€€ƒwz~€zxyy‰|rx{|€r~}~{€yu‚ƒ~‰}ˆ~{|tŠƒtss}~zz€hx}w|~|~Šs‚‚sqxz…€‚€Žtsƒ€y‚s†wvy…y€z€}{|xy~~|{y}xƒ‚€q‚r{„‚~}}n~p|ƒ~z}j~ˆx}r~…€z~}„z€|ƒ|yyx‚|~y{ˆ~}z€|~~y}|}|~|v|j€{~}€zur}zƒ{|x|€y|ƒ€€}…€zƒx}x~€{{zvx€€|{xe~}{|xz~{~€~txu{y€x…}yyx|„u{„{vu{yt}vxy‚y|v…{~z„~y~ƒwƒzk|||zw{wz~€}s}x}{|}~~€€{{u|}x}~w}z{q~y€„|…€…|v~yz{„xƒ€wu|}xiz{vƒ{„y}}y{~|{…||wv€|uy|vxzƒw~w€{|{~}€vtv|‚}~‡w}{|ƒqƒ{~w„vsƒ€o†|t|}…|ƒu}|y|wzzgx|}||y}~~wr~w†}‚y{{y}€yo}†o„x€y}nzvy†w}zzxs}}~z‹wz{}~ƒ{xz}z~~„pw~}}y~~p}~t|zus~xwz‡xv~gu€Œt…z||w~}€|vu„ux€y{y}x~z{‚v{ƒ~}|‡|}{xxo|zy|yz‰}t†w†~}…zy}|‚~ox€ey}v}y{|}z…w}wyx}{~|}‚vrz€xzx€v~€|u~t{„†tvu~‡ƒy|‚ƒ~~x{€{{‚}y{s}{v{{}|vy{ƒ…|~n~w|€prx{|€}†q}{y‚y|…w|vy||}‡|yx{}€†€{uuz~xq{€~tƒyw|szr{~r‚~ezz{v€{s|}~ƒ}€v‡wpzyz|{~z~|‚{u„{{vv{{z{n~}}x€xz{xvx{}ow{~xxzs|‚w…nx‡{€{ŠsŠ‹€ƒz|}€ƒ€v€}t‡s~z{|}z{yv•~†…|~zrzzzz}~€†‚{w€~ƒy}s|ƒƒ…{zr~€xyw~w~{z~zz†zz~~trrxƒ†|}„~f~}~}{{}~{|o†„}€uy|€{z‡~f„x„||}{p‰|{y…w€{z{s{€~„z…‚‡|z€€u†‚xtm}…t{~‚wut}}z{†}}…qux{Štxy}‚u€w‚{{„}}ptx{|xxzvw{ykx{~zy…~{y„…‚|z}‰ƒw{tzzw„p|}€yt~~‚‚x}„zxw‡|{~|}|vw‡€|yv|yzu‚€v‰~„}„‡~€„‡~x†{{„|…x€|{yƒyzz{|~…ƒ…yu~~pr|uˆ‹zz‚|yuz‘o|u{…{|ˆ€~€}‡|~y|€|…~~€x~}}‰„}~~{|~…xy{{vxyvyt„‚€yy€r‹vmt„~{wƒ†w}ˆ‡{†€€ƒv‚{}{|v~~€€~v…~w…ƒw€‚swx€€}w‚~q{~}‚|~‚|y{‚v†w‚€}‚~xƒ|w}‡w‰‚~yzx…†z~„|~zw}v„†xž~„x„v}ƒyƒ|{k|ƒv€}~}ƒzwi~‡x}€€ƒ~†}wxx{{}‡{yz|}€u…|‚{}„s‡€€~~~wz|‚„€{}}~z|vy|€€}‡|…މƒyzzƒzŽ|‡z}~€‡|~‹‚}€w‚szz„~€py{y‡~y}~rrz|{‡†zj}‘ƒ€|†y€z€‚‚{{z~}‰{w}}ˆpy€~„v‡||~|†Ž…~}xs~{ƒmz{~~|~vu€|~q„y|€p~…q‚ƒ|x€y~“‡‡~‚…€€uƒ||r}Œt|sz{‚uƒ{~~|~}|z~€t„z~{|s||€|s~x{ƒ{z‡}~}~~~‹zuzƒy{xxm†y~‡y|{|…{ˆp~~€wv\z}ƒ€tu~„w„}|~~{q‡s”…€}~t|‚x€|~qvz~…Œ}†|ƒ{vu|{…|}|v{‡y}t~~Ž„|†v‚w~…||~yvu}x}}˜y‚zlŠxtr}{}‡z|€‘{y{‚q„ˆ|}ƒz‚z||‚„{}ctw‡z~t~zr}z{~~~€}€z{z}x{Š~}†‚…€ƒ}}ryz}~||}j|~„•}|w€xw€{‚{~~~n€{|r~y|}|}}‡‚s~o}}u{†{|x}‚~~€~{{}ƒ{{zm‚ƒsvt{yzv€|v{~}|x|‚‚c~‚u|“€n}{|}~~†x~‚tƒ{{}}j‡ƒ}‚€x|}{{‰Šz{sfu~€z{}~{}s†n†‚v‚e|x|z~zŠ{…„vw}…p~ll}|†y|y{u‚{v{~u€|y}‡y}†z…zuvƒ|‡}~…}{}x~z‰t‚y~zv}|Ž{€|{„|†z€yw}|s}wy~~~y|x€ˆ{~ywœ~~|ƒ{~€ty{xv}~yv~}~€€|~xz~~~wv€€}„pj‚}ƒwŒ{x€w…y€suˆv{vz€vy||{~{zzŠ||x{w}~|„v{ƒ„}}nz}sƒ}us|€†y€~{€wy~z€zvpwz}{~x~{~y…x|~t|ƒƒ…†“|}jv}zu}„‚}ƒ~|sz‚{}z€y~qxnw}€{‚v{swuwzy}‡€m€y~swyx}†vˆ‚€€w‡{x}~{~yv‰w{|{~}~||~|€w~qs}|}‚€ywuƒ}}y|~zs†{s…|{{}€}||„~{zs}gzzwt|z{{€ko{‚y|s€w~‚w{ˆ}{v{‰ƒ€o}|{ƒŽ~ƒx~v~€y~|{~‡}€‚y}{~|€zzu„o„{mry~|„{|zyt‚{ywƒ†j}}„{}ƒ}‚~…|€€~u}€~ovzu{€quv~x‚‰€€x{„Š~u|€l„{gyzy{~}‚€~s€„z}~~€sy}xu}ˆl€€ƒ†|t…u}†‚‚{yx€|Œqƒ~}|}x}vz‡ƒzq|{{„u~vz|€x~xx|ot}xyw}u|xy‚ytyv€h||{{y„}{{{zv{{ƒ|~zu„Š}€€‚tz}ƒxz}{|v|z~v|u}}x€{€~}‚{{‚zy…Šywzyv†}}z€}…‚{{{z~„‚}|t }}‡ƒ~~{zz|„†}yqy|{€€‰v~|zzzz~ƒz~‚pv~€€z€{†|~w}|wx~}ˆw|Šx}txy…‚{…€€v|s|zx~~z~’u€~{~}|~‚}|{z|{x~~{|‚}}|…{~rztv}€{s}}|||†€{x„u{€w‹z}}€|zzqƒ|~{{vƒy€zŠ€‚w}{{{|x}}{vn}{~|wz‚z~nw€~|q{€zw}|‚‹„yw{}~z|~s{zx{}r‚}|~}{xz€}w~Š‚z{ƒx…wz|‚~{~yx‚~v…yv}u|x~o‚w‰{z„}sz{ƒ€{~{xw‚{yx‚yz…y~ywtz{}†|t|wz~sx}€‚vx{xw|z{}xwƒtyuu{{}{w{}{z{x…t~€zˆu|s€x~†u}~z~}sv€xn{x”‹~y‚w€{|}|‚}|~…‚}z‚|q}}q|oƒ||ut~x€|v|}{|zu~qu}zy{o{{zuŠ{v~}txvy{}€}uƒ|‚{{yq€w€|ƒ{~x}~ƒyst|}z{‚z‚}z{~|s~|{‚xrŒ„€x‚€{~|v}zw}xw}„„x{}€u‚y~†~tƒ{{vŠ~~t~vyy}zuy‚„}‡t|€yy|„€}„xu€s{yŠw|}|z‚~~stx|}{vw}zuz}}}€yy~‚w‚~{qƒz~u‡~tƒŠw~}{~}w~t|~ƒ‚x€}rwy{u€~|}xƒl~|}{w||~{€‚€yzuv}{‚„vz{ƒ|ztŠxyqw~zvx}„}{w‚ƒv~}xw~|x~}wqoƒy€~}}}}‚}„y…|xŒxt€|€|…|{‚~|}„u{|zu{{yyj€{zt}xxx~€zŽ„zx{{€~w}}uu|~rt}ƒzym‚~|z{~{w}z€†{Šu€~‚„…~ioƒvw|wƒƒ}}yyw|~|{{……nyz|wrp{|Š|zz€€•x{~sv€rt~}„t|„||‚{„s|„Ži{w||{syyz{zz„uƒxƒ{}yƒƒƒ€€}‘…|„~ƒw‹€{~…w…s‡€zy|yŠr}|~nxy~}{s„}ƒp‚^z‚y‡vwfz~€|ƒs{uƒ{zx~|‚ƒz{z‚vv{w‚|‚z}yr}wm~~svyxtl}~~…w‚z‰wz‚ky†}xy{ƒ‹…v}szy~f€„uq~{ŒŒ€‚fy}|€qzr}„~‹{}yy|tq~|u€pzvwqm~…u}ƒ}}yz€…{€‚~€|€}ˆ„Šgˆo{y}s{ƒ~€{}f|}sz€|y}w}|bvwu‡gpuƒq€‰y}{l~fƒ}}{xzrm€Šm~xw…ova†Mw…~rzzpxz”€‚ˆ|ƒp€~x}vtrƒ~{}‚|rƒ”}|€x}w|ƒ}sx{z}qŒ|rƒy[€g|‡vˆz›{…€x…{€‹ƒr}~q~u†ˆ{xo{ŠŠ{y‚w|}h‚~‰ƒ‚}~nv~}z‚xƒu€žy{€‚yƒ{‚ƒƒ…‚|t|y€}€u|{xz{~€lvƒzxz}y{~z€uwqu‚}qw|†t~zf€Šs‚ƒq…z}xrv{†pyN~uk|yvƒun„‚sl€kuwˆwx„{wy{„{{~w{Šƒ|‚ƒ‚w|€‚k|{~hs{‚€€wty|zw’~qzv„}vy~~}{€yz}zy|~~ˆtzy‡uyŽ}wzz|y{€|t€~x„~t~{z|r{s}ƒ}z€€„{€‰uƒ{{…~x|y”|}}rppžr—x|zy~~zqyw{…v|‚|zz‰||~rŠ~z~ˆ{|ƒus|z—’zzsv…wy~|o‡u€~€ƒ…~…€vyw„x||vŽ|}}‚}z€izvz‡xyxy}zvursˆvx~|†}ƒwm}zz|~mr‚xx~~v{uzxk~tz{}t}}„rw~€ˆvzl}zƒ‰‡ˆzxr{ys|ƒ~„¥}{z{z„‚}z‚zx~{ƒ{x{~ˆ€~‘}…}~zˆ}xyxv|ƒt{€r{‚xƒyˆx†~z{yz‚}s‚i‚xx€ttU|€p€{v…€’t‹~vse„zz}zzuŠ}{xl{~~~€€tŠ„€zg‡zz~Œ}}†|‚ƒ€jzxzzx{|“ƒ”x|‚~|z„}~‰~~y‚y‡}xxvr„voŠ{vr}zuz|~|}zxyƒ„’}zz‚u~tnyz}yy‰‚}ywyƒxzƒzv}z‚v…pz|y~ƒƒ~€u‚xt}…y‡~zx~{~{€otp„ƒ{ƒ€y€|‚€~|sy„€‡v£x|Štzs|~†n‚{ƒ{|t†{vxu‚}ny‚ˆ}zxxy„†€‚v|~†€}‚€~}q‚z„w~~|yz~‚ytƒ€t{zƒ}‚x{}|{Nkx}sƒxƒ†~xzp}w~€}uy€x‚}}f~„x~nz€ƒ€ƒ{‚€|Š‚t{u~|u{ˆiq~p„}st}‰‚qs}‚n}w|s†{€|„zzƒ€yƒ|ƒys€}}yq€‚Š{v|‡}qŠwtw{zz}x„ƒrzq‰{xhwƒzxus€…‘xƒyƒ|{€…xve€{‚z…~wŠ—v|€y…{}|wy{€k|‰†uy}†||p‚{ƒ‚n‚Œ…„}bƒq~yvw‚„„}yy‰q‚szˆc€~|‚|‚|wutvn|{y}~wt|€|ln~€„~ˆ€~…vƒƒ‚vvypr}…|v}~t~|z‚||xy‚…y{…|}ƒ„{}„y|‡€rƒzx~|ˆƒ„}’„w„…s|zi{ƒz|ž{{|€z‚xk{}yw~j‡wy~wt€Š~z~}{z{{y{ƒ‰}t~Šxoyj|w~t†ex†{‚x|}u}‚}}r|€}‹k|uz„x‚‡‚~vo|xz~y{{~~|€€rŒx|{xyw}…€}{yz„uŠyˆ{‚s|{‰}s{ˆ|‚…{~quqpz…~s{}}||€|uy}h~}y‰zt~uy{‚w{yv|}w}}q„€w{tƒz}~|ƒ}~y„ƒ|zzw€xw}„}su~u€zw}}zv~z…g{zŒt{}„€„z|{m†|z|}{|ƒ~€{‚‚zkƒfy~{y}~~~w}|ƒs€{~…zˆ}{}{w{€yn…x}~w}t~|{r‚{‹„‚x{yy}…}}|zw‰}€|~tv‡|n{{~…‚˜ƒ}zw||‡jw~|xw€~~{{†{xx‰z[q||ˆyt}|w}z}~}€}w€†pm€ƒ‡z|…{‚}z…zu†|||zptv|~|}€||„z{€s™‰zi}z{{}€xz~€}ti||ty~}{„s|y}pw}||{{‹{yy}y}ztwpz…|yxz|tzn}ƒ€||…€t}v~|w„{||~{x‰xsz}w€~oqxywsŠˆ}qy|z€s}yz~{|{‡x‚{ov~j}y}~rh€}z|}ƒyƒƒ}zŒx}mxƒ‚~kyn|y€~€wyq~}s{|wtvt|ws|{†}–uw{~s€€uŒw~‰}x}jqy‡€{‰€|z|~rwqy}wƒzx{~„…ƒ|q€tt}{ƒ|~ƒx…tv}xr|x…vmw|x{…‚{r~ux{{€„„wvt€x{h‚w|€t€„{{vn}j|€{ƒ{}n~tn|w{z…vƒw‡~~x~qouw{wn}~rƒ}~q€^z|ˆ„|w€y€}|~}uykrig}y‚qiˆzxvs|‡xxrxuzoqmyzr†my†|q~ˆyz{|lo|€tzv‰€x{ww€uzxjz‚utv‚x~ˆ–r{|vyz{}xv‚‚y|‡z‚x|y}oyy‰{h›s‚ˆ|‡wq{yhu{m€{t†‚Œvv€qx~{~k€we‡~y„~uƒz€‚tƒŠzk}|‹‚‡|tt„ytnt…}x€vis}…}dz‚}s~x|~|{|}t}y‚w|}xw‚…xr•{Œ‚ƒ„\zy…cryx}‡„z|€ty„yx{ƒ}|…}„™_v„}uqy{tt‚€„~‚…|‰|~{{y~x…cƒnuƒyyuyy‚…ƒ~}zyws||‰{z~~}}}}iƒxu…u‚w‚zt€†zv|}{y~|‚u|{}rwz|‚v|‡vyyz†‚{{~t}}l}~||x†‚~w„up„svw|}{|v}}{z|{}ƒz{}z~r~xux€yy}€}€y|‚wrŠz‚wz‘†‚‚wvy~~}xwŠ|‚y€tyƒvsz|jrƒ~|~{{€tx{€}}{v|€t…€‰}{‡€}}u}|a|yywƒ{u}~|qrƒ„‚{„t|‚€}r~u~z|w‚~z|b|„{†~z{y{{€rvvŠ|x„…ƒ‚zr‚…€|n{i|„|wq€‰vz‚€{€wyyƒs}„|„…t~z{t~~~€]„~…€t~{€ˆz~~…†w|{{~y}~y{†‡x€}y}„†w|zzp~‰}€v{z€€‡{€ƒlƒ~|tl|€{~ˆ}…‡‰yy~z„€|z€~}€qŽu‚‡„}v„x~€}uy~w}{{uu{†‚z€vs{zw‡~ƒu€{ww}}}|k~n{}|€|{zzsu|~zƒ{yr‚r‚„~xyxuyynuw€‡yyt…wrzwˆYvz}y}zltbzˆƒxy}‚v|~ƒwz||‚ylyt}vs}“ˆt‚||}rk}xŽ‚|vsvx~pr„‚~t{x}n{}{kp|ˆj~xz‰}y€wxwwjwt|€~ym}pw{iq‚zu}~x|v‰–yyox€|Šwx€x†Œ€f‚zyz|ƒyupw{€}‹v{v|ƒt‹yr|ƒt~}o}}}tq‚r{z{}|€~s}}pzyvu|o{kˆ{izu|}„m|zˆsz~p|x{|tu~zyq~}€}ky€x„†wyŠ„|tusy}}zs{wpuwuzz|‰ys„‘—|‚|†…|„z€~zosx}r}u{|{wŽjv€yr~†rfv„ƒ}y€s{|~zŽ}€€|y€u’lzv€y†|{|~†—{p~…}q‚’xf}}ƒ{xpz“y‚w|{sy|vt~ˆˆou|{‚|o{|ƒ„~~xw…|{}xT“{u~ˆ‚‰b|€zu{t|u‰…}p~‚{x{}y…v„wxoy~~ˆ|ƒznˆ{s}‚|}u€y…€s|†t|{s~z…ƒyƒ€Žyxu~|‹ƒw‡~x||ƒzuy‡Qud€†Š|{zzk~—|z{‚zX{{}p€}r{r~}ƒƒz}wz}y|…wv|}zƒŠ~p‚zw~yˆyty|}v‚x~v€u†„x€‡ywyx€…z{x‡r}{~x|~}~}z€}zzv~}zt||~}{s|w~|‡z~ƒ…}y|y}|ƒ€xutƒz†w{u‚~~}€|}ey}~u€y~r}sqy}}|‚ˆ‚zs|p~|y|{}|xz~a|‚yy{~rw{}}y|~w‚{y€ƒ}‡{€{†€{z|~|yt}~x„€~{…tˆuy{z‚{}vy„~z}y}yŠ}}w|w~|t‚{u|}zx~}†z‚{r‚}}€€…z~z|~u}‚ƒv|z}v€…yy||yv~ƒ‹|…€ˆƒ‚x†~{v{x‡ww„z}zz{z||}…{}v…†~‚„w{{~„€„€‚{{u}~z~xu‰vzxu|yu€€{u~{|wlryy…~t„‚y‚}{‡oypƒ}{~}uz{v|}€zsz€y‚y}€|zx|…ƒv|x{k{ƒvyyzwx}~}w€}l|y}v}ƒ‚zy|z{ƒ‚{{x{}s}ˆ…|v‚|{y€i}„|{Š|}o€{~xrƒ||wz{}~u„~xƒƒr€‚}u|†z}ypsŠux}y€}†~{x{qyyy†|yx‚r{‡€‚~z{|‰{yw}}„}{{vt‰wq~u‘sv…xz‡u€u…|yss~|l|{Œ{tƒƒyw}‚€€{z}~yv}s‚€z|‚s}ƒzvx|txˆs|l~x{zqzz}~u{zorlym{~{~|yszr|uz€ƒyyv„jrvwvysw}zq€||s|z[}r‹y‰xwu{‚}b}†{…~ozy{|z}{tˆ{x“~z|‰~yz~{|zz{‡{{oz{u{m‡~wuyuuƒ|{~~v}|ww{ow†~~w‚{zzw|}y‚ˆz}{†}ƒ}y€s‚zƒzp}€{‚‚yyymtw|Žvƒuy}yuƒyxzx|usv„~wtt}€y}wy{{ƒm‹v~ywuztqu}tƒvv…v}~…st„so}h‚w[rvƒ~zw|Znˆvtxv€|o|y}uf|ˆx~vsv}f~ƒvq}pywz|Žƒ{zx|~{xypxzxƒ~}y€Œzy~z…}|†uz{Œ€|~}}€stwr~z‚uzqwvyvu}}z€†€‚‚u‚mx{}|}{y}~mvx}w{€}{urˆ~zu€y‰‚…x…x}}zxƒ‡{}xzt|…}}z|~„zxuvx„†y}}‹€yz„‚n~‚|}}~v€x}p~ƒ~ˆ{s|zu}~…y€m}}|}z„t‚‚{{€zv|{yu}z{z~{~€}sz‚}|…y€ts|€~}}€~k~ppv€‡x~zw}||t}y€w€~~||z|zqt|}yŠ}vq…w€w~ƒuy{z~ƒyys}qx{x€uxm‡nywx…‚suxzxƒxw„zu‰r{€zyvƒq|y‚…|€‚€}zz{uz{~|„‚Œ{}wЉ€‰}ƒyy„ƒz||t}x}{}z~vŠƒzxŠzy‚{{x€|yzwnzxywsv…}}…{|}€€€|•…x|tx‚|stz„t‡‚|xz~|Š}z{„~††€ƒ{€ƒ~ƒw„zƒx~|y‚†~|ƒuzs|x‚ƒ}|‚|yƒ~|{u€}yzx‚|zw€vl~l}y}r|}uu~|ŠwŒ}w}~v…q‚y|„…{{x€zm|}nzv€x…n€~w~z{‚€{yx~“|ƒ}t{y…z€~|s…x€|}pwxzƒ{{‡|Šw}|y„qƒ|x|x‰}„y{|ƒ~u‚{~|…„tzƒ{t|zm}jw~„‡…~~‚p{€„…~uyrsƒ|to}|~z{{y|vz|y„~‚ˆ{~}y…}‹~€„€~s|wt}†{{wwzy€‹zv~~~y€‰{pw€|x…~€s‰|~€yyy‚i…€{}y}ƒx~v|„‚ƒyqxzmryv}{|}~}zx€o~z€Š~~~y|‚uˆv„ywyv~}z~~wŠz}yynxxy~†~€†w}€||x~x€w€Ž{~}s~|y‚o€}vz€ƒw}€€u|wy~ˆz~~€ƒ€~‚q„‡~|ƒ}v€~zy€„{w€{z‘„{y{€|‡m||v|z€z|~x„xy~x{|u~}w|’x„ˆ{x|vƒwz~}†}l|~w…€~…xw|{€{€rz†~xw{ƒ‚ƒpy}vv~€}}v}tx|{qz‰‚{j|oz…ˆ—ptu„w€{…|}w}ƒ|rƒuy€ztƒ€y|zx€t~~w}~…}‚t|Š{€y~{xƒw‚‰wx|rx{|y„…‡m}|{{~spuŠ{‰w}z~[{v~~uwv€y†}v€„qxxw}{Žr~ƒ€z‚{€{u€}~{ƒ|{uy|‘‰yz€ƒ|€ls‰~{„†x|i†ƒ{~€‰~ƒ…tJ|~z{~{|€w\‚zxq‰~{}…ˆ……€{\xuƒx~{yzots~„z‚y|…|{{txz€}}yn…v…€kwu{}~~{~‰y„{~}{€o„g~q‚€~~uŽzy€h‹~w{…wˆ€{ysx€~‰{{tyy€~vrz‚ov‚|two}}{‚xtzu€€Œ…m‡|‚||~€x}q‰~}w€Œ{‡„}€y‰|{||yŒ}……}y‚zn}{‚…s€w†{‚u?~x‚}yxw|{r€w[pvwr…ƒv€y|w}z‚ƒ„{w‚~u}}€w|z‚„‚€b~z}yƒ“x~€|}}{w|€|gv†€z„vx|ƒ…wƒwsu‹g}|w|w„l}|yr}x{‰z†~|~ƒwx†}w‰|x‚jww|yD||zzt€ƒy{w{{{€ƒ|…‰z†zq{„n}t‚~z|zƒ~v~|yuƒ~|„yxr~|~u~wuz|x€yŠu}‚{{„€ƒ‰r|~xv|xŠ{‚z{|{yz|ƒ„~Ž„€}v‹vt{r€ux{€{vw{}v}}}v|}wtz{sx~y|kt‚}~uz}|w{€|q€yvz„„|„x€zx„}†u}z||~{}}v~zz}|{yu€qz{~€wx„mwuxw„‚v„{vx…x~ƒ}uwv„z|v|y€Ž~{{v|y|~l}~}~{xuty{~„€qƒ‰‚u{xr}yrˆ‚ƒo€‡‚p€~}py€z}{v|q{|x†{zŠt}u|{~t…~zv~ƒ||sv~}}y|{{x|u~}vvz‚{}|~ƒt}…y|}x~zv}o{{€y††Š|vyyy~|„…~y|zxz{}€€ƒy‚~|tw‹u}zu~r~|z|†t„v|t€yyy|}{}w|{r€z€ƒrzyx}{p}}}}…}oi~~‚|o{||„w‰wzv}s€}ƒ}r{}„u|xƒ}{„€w}o‚}o{{sˆ~xz}ox{|{{xz|z~ƒ†…z}{g|€‚{‚ƒwo„‚~n|w~wy}t‰w„}ƒr€~xnww~z†{yt|rx}|yy„}{‚|wm|opn†}}zryˆƒs}y‡su‰zqzn{}‚‚`|€~‹zuv|‰swnnoy~‚syry||„}xŒ{y{€{lƒx€{€†v|zq…|v}{su|uq}„w~u~|t}}|~‚y|†|||‚•}€u||t€‚~{}on}€„~pw{xgy„y~wx‚v|€‚ozu‰~wv{{}…yty~h~~…€„~{y}€‚|}|v{‚z{|„yytx~ox~wy|y}‚z{~vvy†}}€w‚…‚o~w`{…{y|‚Šy~xxz}x|{z{|ƒ}pyzz{€~{t|~{~yuu~‚……€xzi{€rzzyw}quz{…ˆuv‰syƒ|xt‚~uxvrƒ~}‡}yz€€|t~z€vyz}ƒu€}y{‡xy’zz}{zwuw„zs„us…ƒ|yb~w|{{…zz…y~{jj||z|w€t|z|€~}„€t~ƒkt„yzrv}„luzzyq||~tr}†}|•‹…~w~r|‚{|m|‚toŠ|twqqT}Œsru{u{zszvƒtz‚xvn‚vsw|y{€||ry„€„€||uxq~{|{wu„z‚…„ƒv{z‰yw{ysyˆ}}…v~yvy{z{~~|}tw{uy{vs|v…x{|~†w~{r€|‚y}|q|ƒ|{‰€o||xqvz…|‹{}{{{wywzzƒx€~‚{€{}‡}}z|rŽ}}y€~{vz|ryp‚xt~€v}{yyŠ}yy|ƒ}}„zs†s|‡y€t~‘z|„u‚v}~vtzwxxl~z|{|€•~}y}u†py~ƒyw€t€€ŠŠ€y}~x}wzr{ƒƒxyvzƒ{|x~{~z{}|zuwv|w|{uvƒ‰st‚u†z„|~z}x|z{z{p€l‚u}yvwƒƒx€{p|}~}|‹{‡}~{wu{ˆ{}…q‡~y‡|w~kƒ{vzyy~zz~nxx“zopƒ{z€‚w|r€w|}x}wx{¡‚‚Œ}{w|{€|~…y„‚Š~€‚„Šy€‚|x{ƒ}}‹zz~z|ƒƒ€|oy~€wv€|}~€~{~€zz}y~p|}{{}~sy{{€|yx}}€‚u|~~zu}y|}~‰}|†|w}{y{vqz|x{tsszw|{~|w~f|vwz…|ƒ~‹‚yz|{w|„“w|†y{w…|xxttyp‚eyy}{|x“ƒ|y}ix{|||y{yfŒ{€{|‚„ƒxy{|xt~|zƒ}}€uƒ|~|„}_wƒ|{€|Œz}€~v„rl~„†}~‰zv‹‚Œ}€yx~}}v}y|…‡}m~w|Ž|€€{|€„|ˆz|}}|vŒ}u{y|‚†yzyty|l~{k€}€†ƒ€„~~~|…|yrŽ}x|ywˆzƒ~q€Žw{fszz~~wy{f|x}y~ˆ€…~zwz{uv|ˆ{x‚z}}~ƒyn€ƒ}rszo{|ƒ€}zƒ|‹}€€z|x€|{}‡wƒ~{~…{|~}l}{yz†‡„„|~}„…~tu|€}|x{z~{qy‚~ƒ€‚w‚x‹zj|{ƒvx}{y}{||‚~}{{u…€‚…‡t|‚}z{{}}}}|~zy~z‰€quwy~~{|t}|}‚}p„€~~{ywq~z~|ƒz{wx‚„{€€}{~|‚y€z}‰uw~x}ƒ}„w…€{y~s‡yz}ƒ{~€ˆ|~oz~xy€ƒx||v}~{ƒwvu}„{zyn{zy|y~yt}||~vw~}~€{|z{}{{}{vs~{‚~usz||w}y‡|Šz||}{x|u„w~w~‡uˆ}|v€rr{{ƒxyyvy{xx€„zzyzry‚€}|ƒys}€~y„}v~}{|ƒx…•y}yxq‚€z‚|q~€‚}€|w}…‚„}€‚‚x{ƒ}xwy|zu}pu|{vx{||‰ztru{€}yvu~zko‚{v~yt{~€wv€s||‚‹rŠƒyq…y}†y…l‡‚~|{y~€w|‹y€{y„€„|ˆ}ƒ€ƒw|}z…€~}}yuxt}~~v‚{y}yn|yzzƒ|~€€‡‡‡yxwr~‚}‚|‚ƒtv„u|z€~}uƒ{}w†|„v‚†ƒ€qz~z}wzurw}ƒw€}~|~‚ƒz|z‚y…r€x~zxy{ƒ€qs~w{|y}{v€€zz}q|xz€zv€|zz|z„sx~„~€h}y}‚}|}~€uv|xzttƒx|}}|yz|‚z~x|€x{wx~…‘zrs{wwxxx{uw}†|{…‚€r}wyou{zw~|wƒ{}~vswƒ|}„xzt~…|z€}}}…‚”tyzw}yvyw‚vzz{€zm{s~um‚z‚}{xu|z{rty}x}|vy}}‚xŠz—{{{|y}z}zy{w‹||z~……|y€}z†}{~}k€{x{gz–€„†xy€Š~ƒwƒ|€r|l|‚{u‚€}ty‰~ƒ|x}vy~||vz€€xxtz{xˆrŠvwy‹rzvswy‚€‚r~ƒ~|yo€|ˆtx|p~‚q‚‡š|}i~xsu€yvv{€‚z{z{{x{|}|yu{}…ywz„k}t|}†~u€‚…€ŒŒ{{wu‡u~|j{~€yƒw~y}tt{tƒk|qrw€|{{zzx†nrnvr{}l€ux„{„~‚{}€|pŒ{otw{‡|€ƒ{zx~vxtu{{}w}z‘ls„|wow}ˆ}{wu€€{|p~w{~|ƒ|‡uyuyŒu{~{tzx||}xƒ}…{ws~|||Šu|xx~{|w}€€‚n~y€w}~q‡x~|xvut‚……~|r~‚z†yw|~ƒ{ut‡}ry‡sr‹~€|}|x~…}‚„‚‚yu|{tz|‚tzt„k€o‚y…}}yˆ{‡“‚‚~xzz|’…zy†ƒy|ts~}}yƒ{|‹‚w~}v€sz|{~uy„q}{t€}y~vozw|~|x{z~€rzy}zy€pzzƒ|wx}i`{~~€|{x~vtrxƒ~|zu}}u…z|zz{uƒ‰|}}oz}~|}€wr{}|}ƒ}†wƒtqwroxynuyƒut€mzv{v~{~xz|nr||uy{xowz€zymŒzƒ†tz}~z€{~~y~…ކ||w~|~{‰~}€wyy}vuyy‚~~~z}u‚}u~~r„~tzuxyvw{}~y…n{yv~ywy€|xoy}}ns{€€…sw€ƒ~o}z~yz||xo}€€v}||{~y…zx~~’rtwn}yy{{z~ƒwr{‰x}~‚ƒ}€‹x}€}}€‰otyy{|‚vwv„{zy{~‡ypyww‡y…}mw}~zŒ{|v…€m}h|y{||tv|yx}vzxŠyz€s~}Šzy}v€z}x…ƒƒuŽvz~ozzŽxƒm|‰zw‚y}xrtw~z|m}|vx€€x…}{|yy|y{yyx€{|z€yvryxv{‡ƒt~‚qtƒ€~xr†sp…n|z„ƒyxwyyt…‡qz{t|}x~€znzŠso}ƒyzwu~z{|—v{zzy{~{€z{}ˆ…z„ƒ‚€w~z{z|„ƒ~x~w||{s{stsu€~~tz€~{}€vz‚{~v~{~|ˆ„|€}xzv}|€z{uy}†€{q„~wzu€‚x|yy~p€~|xy€y}p{~xw~€w‚ƒw€‚zu‚~€~zp~xwx€yƒ}tx~uvz‚|~}yzt{€xy{…~€€{~y|y||‚…~}xy{w~{xy{„y}uysx|ru|}u|‚~v|wup~Œ}~|}zxy}…€€{v„x€|}xzzy}…{p…oz‡|}{„ˆx}xƒvnz||u~{}„x„ƒ‚tz|ys‚t„}v~tx{€w}zwt{{zz|‰w†j{u‚~~z}zz}x}€w|bu~y€…v|‚wyvb|sxyy€„wyx‹y‰uv|e…t{‡||z{}†yx€}‹|||yz{~z„{ww€„k~}to„~yvuuy†zy|~x{zny†‡zyz|ƒ€zxu|~z~…r‚{u~|{}zwxz{~~vy{{€ˆt…z|n‚zn}x}€pƒ…yzy„v€€}w‚{w~}€~€w|z~ygz„~y}pzyw‚|{{q…{€‚yvv~€~zxƒ~y|ex‚|v†|~n†€ywŽ`Zqw‰r†‚~||uƒ€…t~wy|}~p‡‡p€xˆf~†s€{€tk{|y{q€Š~uœuƒ~‹n|vy„{kztŽ|uƒ‚o‚…{vt€Šy…w{}}}y„wvv¢ƒ{ly‡‚ˆ‚szz‘um{||‰y€ƒ}}•€{…ƒx‚|z”ƒp~||||b|‡{|o…vv‡xit‡|’z|ui||pev|{}ky~}w|“l}vwk‡{Œ|‚‚v|u{‚{€ƒƒ‹Šj‚tx~~wu…zv}’|wŽyz}zƒ{z~}…|‡v‚w€€{i‡r||‚j„„„zu‚y|qtmkvxƒz€u{€sŠzt|…h€znr€…}~…|y“rƒezxxzw„‚v|œ|~€‚~}wy‚yv}€}ƒoŠw~‚q|szty{Œ|a~‡„p}ˆpvz€‡y€…|}ƒy˜uyxx~ƒu€x‚zzr€q{qv‚|‰~|{ty~‹‹~}Š„w}‚„‡‚ƒwz~~qy{}[ƒlˆs}|‚€„x~~xkw~€rz‚xtŒm’yt„“|h}ˆ}}vi€Œ‹}x||}{~}y‚}}yƒ{{w~}~~~v}xz~z€~yz}}xw‚wtƒƒ{q€€zwws€}…r€€x‰x„}~}r€ƒ{{|w}q{tƒ‚{ƒu{pyw~…x~x€€~||{ˆ|‚|}x~y†~~{||v|w€}w„w}~zt‚ƒx{}y€x~ƒwz†|tuŠy}|{{~y}w…u~zz‡}{zzz{p}|w}‚~y~zzw‚|~{|o€}}{{z}x€~~‚‚zwz}}{†|ytvs|Œƒq{~z~{ƒ…v~s}{|y~€u{wzh…{„|}€yv|y~|‚~}y€u†ˆ}xˆƒyyzvƒx|zztxxy}|~}y|†z|z‚„€€zp~‚z…s|}s‡ƒ~{pu~u}|„z€x…}wj€~|}xwƒz{nyx~‚}|{y‚ƒ}{{xypu„‡~~€„yˆƒx|l}qs{€z~€u{~|v{y„~}ww}zzs|ytqty}{vz|}t|y|z†{wwx}„€~x€€~‚|y‚w€}yq}}q{~{{vw‚ƒz‚y€y€ƒ{|}€€|{|ƒx{wy|ƒ~o|~|{t~zt‚€|p…~‚‚}xty€e}‚z{‚{|}|{|p|‚rk~{u|y‰‚}y||xwŠ€{|y~{yy{}xzˆ|u|}t}{…‚w‚z}z~{}{€y‡u~yzz~~†wy{zy{ys|zvƒ~|xw}{|t|ƒxv{t}}{l~{ƒ{‚|w€wzzŠsznz€w{|ˆƒ~y‚r€u‚}z€y|{}‰xy€‡{ƒv~vƒw{}†€‚|€~}|}~zytƒƒ~wzzz{|€‚|€|x~€~ssz{|}„|{€zx{€qz}w|€}€‡r|z„ƒ|‚|~||ƒ{{|tvw}y|zƒ{vi{}}…}~‚v{x{z‚wuu‚{w|‡{~}}‚ƒ‚„z}{z‚{‹‚{}wv}xzyw~v€}{}‚}~~}x…w{€}…‚‚‚q|uz€zz}{|}}w}vu{v€}{s~‚‚wyyxr~{yj‚xx~€x‚}}z‚t}u~~|€ƒws}y‚І„ƒ€xw~‚‚z|†{~}}zq}}~sƒy€yy…{{}vy~zux€~ƒx}yw€}{|}x€f~u}€|†€}sxxWpj‚ˆ{s~x€x|qz€Žyr‚|uq”uƒo{Y„q}w~Šv|wvy~ny‡‰q‡x€ƒ‚‰†|ykyx~s{}‚{sp‡‡~Šzl~z…\Š}w€˜yt}Žr~zyz|wr€‰}|v|sP}}{zkn†v{…€ˆQyxˆ‡{wyr~‡nx~€{„‚€|z}i‚z~…h‚€t{ywuv~†€{}€ƒ€~r}zzyyyzx„soxz{{}…o{zƒ€{„€|€w|}€xu€€~mzz€mˆ}…ƒ€zxq}{b|v€|x„vzw‰px|€~~zux€}{bw}`ww~€v‚ƒ€Ww|~r}{yŠp|xw~‡}wq{‚‚ztvv}}ƒzƒ€…ysC„Œ…rxe~~}‚„_|yyzfzv€{|‹Š|zl}wŠ|q}‚yrtfu~€z~}z}sx{ƒ‚xwz{€ŠuZr|‚}un~qz†vlˆ‚€yœ}|…we|y„~m†pqˆ}ƒ}yr‚vš|„‡ywnhyor‚œs{Yy~„t~yj¥nwƒ‚wuv{y‚}~ƒ}r}rz{•€wvyf|Š”ƒf€g†qy„qp‡uwgys„zo}}€w|{zy‹~~yƒwqy~~{s†€x}}|}z~~v€€z~…y|ˆ}€}wx||€}{qy~{xp~{}‚ƒm~}~{~{~{€~zy…|‰y‚f{}y~Š}y}‚„~z~rw€{|ƒ~‚}}t{‘‚}oƒ{†|}|tp}vŠ{yyu{{~‰„}w}py‡l{„u~}yzy}‚uƒ}}w‘}wr|Œ†€w|‰}|‚ƒ†~|‰|bu{{|~{~y{{‚~|zu~€{z~†|}|or„~|€„t{y…t{|…x~w|~€}‚~~y{~z{y{||s}uq{…‡„€~m}‚}y‚‡y…|{x{}x||zŠ…ux„w~x‚zu{z}{wn}s€wk}z{‹{|p€„xvww}{}||~†„‰€t{~|{~~…‚|zx€Œt‚w†}z}xƒz€x|p~u~‚x}€kv|}{}r…v€ƒ„{t{}twy‚‚|‚t}y~u}|sz‚ov}tz‚€{‚…„xzx|}|{|~z…€~uŠ}y{y‚{~vy~||€{€…}‰{w|{ur„}zwx‡|xxz~|}}{||‡t~n{y„vzx{ƒ{|‚†yy{|syx}}zx}‚}w‚zu|€…w…}v‡…}|s|yƒu}vwxy|wuvr€|~v€x{‚y}ryxu tƒuwr|~ƒ{~…{x~‡xy|}sxz}{ƒˆ€zx„‚}~u}}}|{‚y‚…w{s~{zyzxw|s„~y~j{v~}„‚|‡~{||…z}†|y}z€}xzxyx{€€~{}q||zw{~ƒ}}€x~xy}~}~|}’~zƒ|ƒ{r}„t…€}t~yx|~yu}{‚yƒ}…}z{yrn}z€€{|~~y„€}lx{~~|||€z†zs|x{ƒ~}}{|{{€{x‚|z{†|z~‚{n„{{€}††z{{yx~Œ€ss„}x€|‚|zu€|‚€}y|s€ˆzy~}~wuyy{zw€z~yx€€Wvyq‚{~{~€w{{}xtxz~ƒƒ‡|w†rzƒy‡{zr}y{uw{‚|y„~wy„|{ƒ|ˆ€€y‚zu}}€}}‚wz{…vt|{x{||w‚~y||wx|}…„|‚s|„}}x~w‚|{|‚~€|xu„|’}zy„|s~{}s~~‡uƒ„|}‚oyzw}xz~uz~„ˆ…‚Š€|€|v~~l†{y‚…~}„~p}zz}zy}‚‚||„…y~~{†}u}~v€|rk•ˆˆ{~~ƒ~ƒ|„}{|…wƒ†~{lzz‚~„z‚zw}~w†€€~‚‹|}y{„}x‰z}}‰|wy‚|‚€‚x~„…|ˆ€„{~€~oyƒq|~v|}zu…tq~}…€||€|s}zuŒƒ|€ƒu…}‚€}}ƒzu{{jŠ{‡}ru‹z{~…w|r~‚„~|z}‚‚|mw{‚~‡‚‡}zŒŠ}~vv€p‚x~|€€|{qz‡zw‚‚}‚—‚yv}€v„}|s€y{r}pq€ƒ€Œh†|„x}|}||w„‰|{~|ƒ€txy†€|ƒo~zu}ˆ‚{}{|}‰~……ƒu~wvz{|}oƒ€w†f~†ˆ|ˆ}|w€v~povy€…t€}€†€z„‡„‚q€w†{uz…~}|x‡j||ƒ„}t~…„€€}~‹w~ˆ|u~r|‰~u‚€|…}xw‚Œwy~rŠ}‚z~x~~Šxv{|{}x‚~s‚yu€s}}xzuxpk}u|~~wy‡ysw~sqy‰y~€w||{Šw~xv}xx‡‚ƒkvx||}v}yw~}}|{‚~~|y‚€Œ}u}uw|yx€‚u{€{x~i„xywp‡vyw|~|…‚rƒ‡y‚w„†xvzƒxzz‚zkv}|v}ƒ‚y|mht~y„€~wŠu{otƒ‚}€qo|€~ƒ~……wƒ„‚x€|……z€mu{€uzzoytvw|{z}s{ƒ~y|…|~†z~w}‚z|‡‰€yp|~~ysƒ‚~w…vƒ{w€{…wxyz{p„~x}{‚wsux{~†…|z|otz{…y|ƒkvv…€Œr‚|€€u~}}€{s|†€~Œ{yv‰{t|x~}||{y‡v{hw€x~}|~€ƒŠ{}…yyyv{{}‚n‚}pƒ€‚{zv…o}xw|Š|x~~~rz€xu‚~ˆxІzˆw€~z}…€}{z~sˆ{}vv€x†{{~|z~zŠ}ˆ|}y‚rƒiq}|o‘rƒ†t}z{ˆv~z‡†}z}z†uzn}vrx‚{~~|~‚‡|{zyy{€‘„lw~wxoŒu~†quˆˆ||€yznvx}|€€„yyy~v‰{uk…|~{wyt~{|zkvƒ‚}v€urpy{y†{}z€}y„ezt~zƒg{}}ƒo~}~xƒ~€||~‚}wxz|x…‚€|~}‡}€€u€x‚}xv‡wo{‚s}ƒ~~~|||ƒ‚|‚|u€xqr~y‚Ž‚“€|{xwpz|x}qv€€u†}{|~u}y€|~ƒ}}ƒ€~{€~n‚„x~|~z|z~{ƒv{‚vl€~{}|z}o€‰}w‚ƒy€{z†€|~~x{||~z€{y„€u‚zyx~‰~|v„|‚ˆ†~•€{s|‹{{x‚„€w~u|w„€}~}|x}x~{{~zƒ}sy}‰y}p}{x‚}z~|wy€€x|‚s{wwz}w‚{€s‚}{u‚z~ƒyƒ„yzy€zz‚…y{~‘{vz|~|„vw€{|~„‚iz}~z~z{€||ws†zx{~|ƒ}€„xn~‚|{}}yxz|wz€x{z…t}yx|~|}xƒl~{€mt}}ƒ|y|qz…y}|xwzr{v{w‚}€€xƒy|{‰~q~|~p~swwi|ys‘|y}}„k…ˆ‹{}x~w}~ƒ|…z€~{„~}oj‡}|x}{…v€}{‚{~v€|}|~„€}‡z‚v~ƒ~y|{zu}x†~{vwuzv{zsuŠw„sutxˆun€‡{Œ{€€{|b€{€~swyw~„ƒ{}{x‡|w~{x~w†~pz{w‚||‹n}z…r}{{€†{}}|‚}}}{‚}€s|p}}yzyzrt€€zz{€|v~wz€m€}ˆ{n‚†…u|}l‚~|v|~|~}yy{yu{{u€|ƒ~}€zx„xwx{€~}v„ƒ†{{ƒxŠ‚‚}„wt|{Œyq‚‚~{~{{|y|z{ty‘‚‚…zŒvy„~z|~ƒ~…x|p}}}uuzŒ{}x€}}}}~||zƒ}t‚€€Ž~‚w}‚|||~}yyy{{‚v€…}zy{}ƒƒ„|n~z{vumy‚ƒx~y‚q}’†‚t~z†~v{Žyxlry—u|y‚xuv|}vwx{p~zyws€~|{v‰v|zx~q|zq}wz…x{zpˆ|ƒw}{t€xx{nu}~|…yw}s†|}€‡€~‚†„zz€vxqrxwx}}€vq‹z~nt}}xyw|‚zxy|}uz~‚uƒ}sx{{{zzyƒ~‡|w€yysp}{x~z†|†nuyuwz‚€…{|y|z|}{~~{}z}z‚wy…}{|~€€vyrp~‚{y}‚|{pƒ}|‚}€z{zzy€w€~ƒ|~€}‚y{~|z€o|y|x„ypyƒvy}}wƒ€wzw€€{~‚{~~vz{yvƒ~{„‚~|z‚{{{x€~x|ytx‚w~€v†~~…„x{y|…z}xyw}€}}|}€ƒ„}gs{‡wƒ{z€‚usu~}~{{~‹{v{}x|u‚†~s{†z{|}y{~y€{xyyx~{y{}„{ƒ|vl{z|x}y|‚ps~xpƒz{xzˆ{zz{{w€r€‚{x{}}‡v}Š{yztq|}||v{x„yz{vy~|z…{y{€‹sz{|{yƒy~{ƒ{vw}vzt}x}uˆ‚~|‰w€x|sz†{~~wzp~y}{}ˆ||z|xƒ{…~}„~yxw|†{p{}~{|kxƒ‚ˆ|}t}|~ƒ€x}|z}w|„{y{v‡„{|zƒ~z}~ytxw‡|xu‚{w€s}}‡€o|r„vy€zii{z~o~{~{‡i†~|}x~zƒrw„{†ˆ‚€{{€|}~}u|‡y„w€|{zz}€‚y|yy€~x|†~|vƒ~|~uƒz~{‚{{}xri|uz‚ty~}~z||€v}o|rx{xwvw}~}~|{m…~}u„|y{~‰‡€m||rzz{t|zƒˆ’w€|~†€zxŽŠz{||}zy‰}w|{|z„‹w}}ƒ‚|y„{}wƒ|}}}wx{}}}}‹€~uoq‡|}x~}~w~}u…wytu„rzw„w|zz}xu~zrz€fzˆ‚{z€€„uwz|y}||}s‚‡„~ƒ||~x„{ƒ|u~~…|~z{zx~u€~{|{{~„hz‚bya}hƒ{uy{ƒ}znvƒwq‚„€p}}…‚x}~tŒ}€‚ƒsxw„}~twv„s{ƒv~ƒ€uux{d€vw}{zŽ|w|z~tr„„~ymvs{}y‡tyyy{‚v|yex{w€„z~}yw€„i†~}yzu~t{b{|m|tx~ƒ|v”|y|z€{w‚to~||w|}w„y{|ƒ|`ex‚{||‚w{~y~…ˆ|’{qvyP}ys||Š}„||}ozzxrs…|}y‚x}y|€~sŒ†~xw€‚€w€x}w|v~‚k}„ƒ{€~}|yv}m~„~}‘wx‚|{uz~|‚‚~~~~ƒŒzj~xx€s}|{w~~|y~l|†ˆ~ˆzzˆ}|n~{u€~cz‚ƒ}€}z}‰rvu||†}€}„‚|€|t}u~‚†yy~k}„€y}€vsz~}|y|}y‚„‚xx~~z‚{~|}€†€|vt˜v|~}}}}}…€yy‚z†q€|s€k{ˆ{}k}}€uw}q}€‹t|ƒ‚{~€wx}{zyƒ|‹s}€‹{„…v€ƒxs€vv€|~o}ƒr|}|zyw{‚{y|~‚~ƒsy|lxvxz~{zy€zz|…z|~Œ}€|w~}‚}€q~~|w{}~v|{xw€€}}|z}j~o}uˆ~r€‚~zyo€}zz…‚|j}€v}~€{xx|yux‚ƒxy†}~~}p{€{zkvzƒ‚vz|x€kq|~}ƒ}„{}€~ƒ|„„z}}†ƒ}~ƒvy~~uq„wju{|n}~}qƒ~~|~vx…}||~ƒs|t”ƒ‚}{|‡x|‰y|}~~ƒ{‰|€‹{tz{}‚{ƒ}|wryw}xow•vz~~wyz€|~†qq~k|y…€|t{sy~|}‚{{Š…‡z‹‚zg}„~{z~~zq~|s~~~†Ž€~wƒ~x||xz{…{€|{Š|}jknu||€†}tyl~„||xo~€v€tz…ƒzu€€~y{||muzz~|}ˆ{~€v~ƒ~ˆ~t…z}{ˆ|~ƒ€z‡}|urƒ|z|||{}t|‡p}q€srt~‚ƒw|~y~…u|z}zsx€ƒgzty‚r}zxƒ~~€~{m‚~„ƒv{|~w}€{w„uy}}€yƒ}{|vy~yˆ{ƒy…}€y~|{xƒ|†z€}}€|~}xz}wxˆ†€ƒ~~~z~„x~z~y~}”x~s}{~~|…‰q„€w||sz„|suˆxvww}y…|mu|{|s~wˆƒ„{y{y~…v|zyvv~y|€v|yxuyzv{pz€w€‚||‚o€‚€o|{ps‚ƒˆ|}~zx}zŠƒ}|}‚ux|~x€}x{{vy€z~z‚~|{}€u|€ƒ‚}„‚•}•~|€||}{yƒ}Ž{t{‚~y|||qz~}y‰|{|~y~u}ovv„tƒ{ƒ}w~€r{}yo~‡|y|‹~€}ƒy~z|ƒ‡~{|…~u~~~wyw†–{|yzŠ\e†‚zy†x{~…y{–y|}~rw||~{v}|y€‰}v„tut}„|{“|‚mt€|}€‚…‚{|z}vw~€}xŠw~{…~{{‚}{€€Œz~€z‚z€v}|‚‚‡xvz}€€x†|w†~u||…mo|~ƒz|}}z€t|ƒ{wxxxylu|y}|mwyw‚w~yƒ~~€s{uxŠ~}oz…xu†yy‡zyow€}|‚Š‚y€„yw„„‚ƒ‡€‚zz€v…sy‚z†tw{}‚{~„{{yq}~€tzwws„r|‚‚v‰z{z}xs|zv||‡\}€}|zƒ€€xxvwvz|ƒ|{|~||€‰s~~z€…ˆ…r}tq}t{„~|t‚}~‚‰„x}{}‚‚yy}w€~}v}…{{}{xtƒnvu€€xpz„Š}ƒ}‰€o„zz}ƒ€|w~t}xr|w‡qy~{~|w~x~~t†€y‹||{}t~…™€~}|„~y{~|yurƒ}~…€ku‚|ty}€ƒ€xyst€{yywwx}ƒ„}r~s}{v{zv{~~xw}~t‚…}}ƒvzx{{ux}ˆwq{~}p~}{{oyzp|{x}|Š}€~‚{}q~‡u~{{|tyqvu‰xv|~sxv}rz}ƒ…|‚v|}€‚~‚“€z|}|~zy|{†‚y|z„y|yw{|suyx~{xz…x‚{}}‚~…|z{u„{ƒv~…~z€zvŠt||sz|y}z‚}€{~ƒzvt}€zƒ€y…qy}ƒƒxz|}€s{vw€~zr‚y†vzvy…€†|{w{‚~yu}ƒw„{w}z€||mx}v{|‚y{}}~{‡w}z€|vy}ˆzz}u}tv~}j}Œt~†{tz„{u}‚{†}}yr{x|~z{~w~‚xqv{ƒz{z~‚{t~|‰~~‹u~z‚ƒsx{x|‚z~{†zu~v‡uƒ~{x}zz„€|}z{{|ƒƒw{~€€yum|h~p†v}‡wyz{x|uzx{„|yuwz|zzv„o†u{…wyz‚~t}}}zŠ|{|y}x€ƒ{{€‚v€y~p}}vy~~}yƒ|y‚‚}ƒ||w~wz‚„po}~ƒz{|zq}w€u’‚„ƒ‡x|~u{v€}~€ƒ…i…z€w}zyx„wƒ~z~|‚z‹ylq‚z…€‚|€x‰sƒvˆvz{„{|z€|uzt~…w‡m‚}~}ƒ€~v€qm‚~†¦€~†…~‚‹xŠ}~„v~„}}~i†z}|€|}u€‚|o}]t|{ˆw|{z}†{}x|€|~yzo„ƒ{z„|€}z~€ƒw„w}z€xz}yz{{{‚y‚yyxv{|€r{swsx|vz„|vt}~€wuwv„tu|~‚€{ro|x}v‰|ƒr~x{z~€}wuu|‡~{x…yt„{{{|†~{}{‚u|€||}zuŠ}~ve’x‚~q…{|||ˆ|r||tz~xv†pz„x‡Žr}}r}s|z}„x}„y{{~}~|~“s{„n‹xzp‰x‹vysu‡}u…{zƒ|ƒ„~v~yzv„€t€}|uƒzu||w~€~tt‰…ƒ}€y~x‚‰|wƒw~{ƒƒvs}zrzy…†zkz~x~€‹m|{|„‚xwy{wx…{z{xzlx‡||tyq{€„{z…†|€ƒ}z„€€~‚}„}z~€„uwxzwyt|yr‰†}†ƒq€‡……z‚}xzywmy‡u‚yyy}}{x…}€€‚}{x}}{~}x}|ƒ‹}‹‰yr{z{~y}x{{z„x{ƒƒttx~ˆ|x|…€w|€ƒ}{‚•‚Œ|ƒzo}ƒƒmƒg~|~‹z|v‚xnƒ{‚~{|t}xy‚{y}v€{{xxxz~||}yy€z€Š€sv€s€ˆ{€~xz‡}yƒ~|}z}€f‚|~vƒ{t|z|}ƒƒ‡|~€}†ty{}t{…ˆ}{x}z{wu~Ž{t€x†zz~~€y~‹y€€}~‹~ywk{yzw€}}z~€}|‚…z~~|ƒƒ€zzruz|‚€puˆxƒ}xt‡~‚‚}zz||€r~x|…v‚uy†x{x„|||„‡}€‚~~x€zt}ƒ~€‚„q€‡‚|€€wz}|ƒ~y}†bxt}zy~|{~zzyƒ‚€|„ƒy€v„yƒ‚r|€}}|zƒ~…z}~v‹‡}s†{~yzy†t}Š~y€‡oyˆ{}y~~s‚xmyz{z„z††…iˆ€|{„‡y|w{un‰x‰{{ƒp}€{}‚zryy|{€ur‚zxy†uszsut|{‰zyvzy†|s}…~~|t‰}|‡yz‡w|yxuyz}zzs~z~ƒ|}w†||sp}zy}{}…‚}}|}|{p‚z„z|‚|}x‹}y}gs}}uyƒt~o€|~{y„w€‡~ys‰z|€t€€{uuŒws~}xy{pytj~tŠz|y„…}z‡wz}w|{x~tw}|r|{zxw||zyv|w}zzx|€ws|t~w}„vxˆ~‚z}w~xy{}{wvw|€‚tŠ}wy|j|‚zvzzsv{Š|y€}}}tx‚zrxy|ƒtrx~z…‚}ˆ…‰y€~„s{{{|{~pxŠ{w|†z~pƒlƒ~€‡€|‚‚tzy„syyu|}{€Œsw…„{~‚{zƒ~~~z˜|„}x|w}r{†u~w’z~y}€wysƒŠ„zƒuƒyyy‡wy•uyz‚}x~znzƒur•|qp„}w|v…ƒ‡z~|z|s}uq€„Šv{€y‡u~txy~t†wˆ‡vpuyv€„|}~su€}ƒ{|~~zyyz€y}{yyx‡v|zw}‡‚|€‚|u~}{y|€{~}{~€||{}—{‚}€z~‰w|v}~~€zz…}z~Œ|~ƒ€€Šyxy~}|†}|„„}y|ƒƒ~ƒ‚~~„{y}~{zz}ˆ|}x„}}€{|wƒuz~|z{z}w~|ƒƒ~{€~…z€~x€‚|}‚{z‚~}}}~}u}{|„~|~‡„„|z€x…zo||z{w~~}€{}x‚}|{€y|{z|}|z}ƒ€…|‚~{€~z€‚‚y||}‚z€€}}r{‚€~{w}€€…t~‚„|}}~€€{~x€†{|€ƒyz~}|wz|‚‚~ƒ{zz~}}w}€}{…z|wz|‚‚y~|v|~}}||ƒ|€w…€z‚|}{zvƒv}}w|‚€|€‡‚{z…|v}{||}|{z€{ƒ~}‰}}„}}€}}}|ƒs€|„y‚{{†|||ˆ„‚€~€€}~~y{{€}t€x{‹~}zx}†ƒ…~w{~|~…€{•‚}{}~}||}€wƒ€zw|{„~{y€y|z{}„}‡|wx}Ž~yx|z„}Ž{‹„z~€u~€joo|t}x„‚}q…†ˆ‚€ƒy||€„z}ym€…‘s€|ˆvˆ~€r}ly~~}‚}r€r{z~ƒ†{wƒu€pzwwoqw}zvuvqŠjv†}kzj~ot|vv|x|gs|uˆw~~†ˆgzw„¨wx~pqs‡gvy{z†€‘€w{vv{y{…yk|yuwrw~x…‚~b€{i…~wxz|ob~ƒ‚€}Šƒvyvvw€mtvx{Šv}wzo€„zŽxww~€uy€p‰zynqz{p}‰quwt€}~„s€€}†shupu|ƒy„€yxK„~x|wu•~nrˆd†ƒt|xv{y}puzu‚x}w{…€q}h‹y‰{xu…nt†twwzƒ„‚~ˆ{zzztzh¢y{|~‚‚|x„ƒnsžyiz†pn}›}|v~v}{{|qve|‡kidy|zy{†o|q]ˆ“z||nxzjŠzy~x€vwz€`‡rkrv{‰dlzo}uv„Šw}‰Qx‚ztzu{y…€~f{z}}o~}z]z‹|iqrsxzhu…yrs€nl„wxƒw…zqv†kw~…px{|}{…~‹ƒu€~}wot~]}{€|rt|z€hwjzttMƒ}z}}{}y|{|z~skvy{€}ww€€vz{ms€}}x{{z~}‡|{z~oz„}}‰|{Œƒu~uym}vyw‹‚~y‹„€}tƒ}~„yyƒ~ƒ|„…{x|}x‚}zz}y€}{}{w}q|{~xwz~„†zxqz||p~~}~€vyv}}w†|{|szy|{|€x€lxyŠˆ}t‚{‚w~ƒvx€}z}‚~{|x{Šww‹y||z~zz~€||uwz}~v~|Œ|~{|{|{~†‚t€}vmЇs{€y~‘~x}y‚x{}izz~z}pm}{z…tw|y€w~~zyy€m~z}€…~€qzŽ{‚z~†‚‚|}ƒ‡u|…€„€€|{}qwƒ‡‹„‹yw}{~v{„}|…~}|€„…y‚{~~uƒuz|}y}u…y|}w‡v‘€w†xwr}zxxy{y|~~ƒ|~}w|zyƒuy€x~~||€}yv…{}‚‚}€{y|xˆ~}}}|{q~zyy}ƒ|‚{…z~xyu{{„~}t}|y€€{}|}~xx~‚}yz|‚{wˆ€w}€|€„„{~€|}‡zq}~€y|x~Š{uh~xtj€y‚~~{|}~€Ko}‚„wm†ƒƒmxuclŠt€t‚€}|jzq‘€|}l}{{z~‚m{„rz‡{ƒ{vus‰zyyu‹ƒ{zz‚xsvƒ„qv…wo|||ow{nwvy€€p…}i–z}‰nuzT^u€kyƒfy|~W‰}vzŠmyor~‡ƒqŒy†|†}u†‚u‚zo~w}yi‹}~~|uq„t€ƒwƒcvyv}ttqml{…qx}‰|„‡_ƒwyŠnu…k…†‹x}€x€yws}||Šz|x{xtur{‚z‡}t}Wruz~wxˆsŒŽus€y{uux}}z„~}€|t||‚vuqˆkqs‡y€z„v†pius{w|yk~rqz†|{t—”wudkl}sy’Šˆ‚‡q}z`{€j{rІ~uh}}‚t…ƒšu~z€zv€vzzzmzƒ|~†…Š|{|sus{yƒ~~xx{”vwp~Œor†}…t™†u|{s|xz~{zi…Žz~|{t{s“†y}Šw|ntw„~…vf‰|s–€{z}‚{^z…|Šzsxxu€xvpxu|}…|w€mx{~}h}…{pž|l{lnU„‹€w~}Ž‚‡‚‚|y}{s{‚ywz‚†zs~v{|zz}ƒ}s|‡rq}sxq€~}†z|‡z}€z{{Švwz€w~v€y}{|w‚€fŠw~}v{{€}uxq|‚uxyy}z€‚Œ{{t€t‚‚zz}t~y|{~vw|†{v€„~~~wxtzt„~zz}}|u}r€}xw|‚{|{y|u‚€‚zztw€y£|}~~~|}x{{r€|v{syŒ€„…mr{„|†qs{s{†~…vw||q}hƒ{{j|†uww}‚z}{z„ƒˆ|ƒr}}}r}ƒ€{m}ˆ}y|†{€`~„~|}zy~„xz}y{€‚ƒu{uqƒz„|„~}xv„z€zyzp†‚}ƒ|x~vrz‹~uu}ƒ‚‡{}z‚‚„{|or†…{‚‚{}zytzu†y}…‚u†}vv…~|sƒzu€|u~|…€|†s}…pƒ€{|~xyxwzw|ƒ‚z€{{|‡trƒsyƒoz„wx~}z~z‚|ƒ~|ƒ†{€„zoxw€uŒ‚}z~‚|z{…s{|€€yvv€y|srƒ…‚‹„z}u|†s{x}‚t~{um}‰ƒˆˆy}{}~y€zn}m~{y€u~z~x~~y{|n~{€†y|z|x|‡„{†{‡v€x|€|w{{€q{|ˆzu€z}|x…†}zz†{tl}€‚}}€†|‚yvtŠrz€~szy~}z…~„}€Š|zxr||wxw„‡{€ƒ‚}~}ƒ~oy€~zz…‚r~k‡}|xrd€wq€z~„xz}€wxzˆ{“uwz{w}|€s}|yx~o‚~€{x}…w‡€tywƒ{o~z~ˆ}{|{{’y~ƒ‚zm†‚zxxs…†{w‚|qh‚~}„‚Œ|„|~xo€x~q|}Š|ƒwjy{~€}†|{suƒ€vr~yvv|~{}xƒ~{sf‚t~}€|‚y|pƒ~x}‚€p|{zzŠ€~‚ztƒv|p|}z‡|~||~x€|r„s}‰z|}yyz||z|xz…{yz€‰~|zy|ƒ}W~vy|z‡||ryyz{wzrw}z…|‚`wrx}|{…{x{y{~‚€u|‚‚u{yo…zu}y‘Šuw}{zs„|{‹zt|}…ˆ~zv‹v‚y€€Šˆ‹€~z…x~}zzz}|s†x|€xy†{{|zzŠ|‚~xŠ~†{…xz}ƒ|„‚zw‚x~|u~†~}‚„€{}„vz~}…}{||xˆx|xt€|‘ryyz}ƒ~€~‚€{z{~{}m{{xˆ}~zuz~|m}~†w‡n†}w{u~€yƒy}z}}{w|~y‚|p~|pz}}|w|z{w}xtm~v~ƒƒ~{}vy„‡†€{zx|w}yzz|z}Žƒ€‹z{z|}xr~ƒ‚yxry‚|~y~ˆ}tuƒp|†}|~ˆ{{}…v€z}xu{{{z…|~}~}w~|z~{|{}{„~€}x…}z}ƒ|ƒz~}€x‚}……}ˆƒ€{z€|z{vs~}Œ}{…~{~‚ox~y…y~Œ|vz€||„}~…zx…xrz‚€yz€“|}|€zƒ…‚|q~€€|€~{|y„xy}€t‚~„z{~w{~‚~xvzˆ€zsy~v€{…|kv~{t{{z~vy~}}ysv~{‚|xƒ†‹€{}€€|‚~}{{y{†x„‚‚‚|~w~~||sz}~~|{nxwtx|~sx…~~}r}|„€wx{~{ƒyw€|{y}€€zk|‚r~†wƒ|‚†~z„w~z~€‚|u…}ƒ~|}z|~x‡|‚~}{‚v{‚ƒz‡{|~{|vv}z€|{y|‡€…~†‚‚{{x}{y}|†wh|…~…zuƒv|‚~{x{}zƒ‚z}v€€vxyrz~yz}||{x|ƒƒ{€|}Š}y~z~}zr|ww~z‚ƒo{r€u‰…z}w}“}x|€t{v|~vy|~|y‚w{w|}}‡k}y~~ƒ|‚‚~z‡…}zwx›uqƒ~yuy~~|}ƒ€‡|ˆxz‡€{~€z~z‡uz|„{iv€}|z}}x|Œ}|x|q}}{s„~}Š€}z“„~{{ywƒ„‡‚€y~’‚v…|‚w{wx‚}{zvt†€…{}~v~†~~{{yŒq€q‚u~wqŒv…}}u|{}|~}w‰‚ywzwx|Š{y|}{z€ƒ~Œ„q|€€ƒ~}|}|І{}|~y€|}}uˆ„}z|}}yu}}uyw~…|~}|}‹|~y~zo|wz€{€ƒ{€}{o{‡w{}‚y~‚}„vw|vy{|ƒuy|{€~yrz…uy‡~yyŠ~ƒz}o…||~s{€ƒs|„€Šx~‚wyz{r}}}{€y~{†v}{~~~€qy{v|ryyqˆ|~~pzwz~€t|€€wxss{yl~x}xz‚{€{„sm†|‚}{~}y}}p|…„z~‡zx…}†zu{ˆtnŠu…~|€k{{„‚‚xu„{ŒŠw}q|z{{w}}y|‡|€yuzx‰x}}r~ƒƒ€q„wtqr…|{n€ƒ}v~{{{yys‚{|{v‚|v|}z~{s|„x€x~wz‚y€}ƒz{}~y}~}|}v„w{y†€‰}yoy{|}y„}‹uxwu|ƒu|‚ƒyy‡z›zvƒ{my~…‚|Š{|†wˆ|~xz}vz|‚‡ty€k„~ƒˆ€k–ƒwv|w~}‚‹uy~†y€vw€ˆtvz‹{s†|}~|‡x~xƒ}xt}xuxz|‚r~z}zy|vtw}|ww|Œqx{}}„h~‚xx~ƒ|€}xz|z}|‚~}w~}{†~wpˆ€y…‚wyj{ƒŠw|€vrzo‚uy~Š}…ys|r•xy€€z€‚}z{{t•pvu|{z}~~z~y{}•~zzzpw}|ˆ…†|‘{zw€~}r€uyt€{trwƒuwrx~yzz‰w€†s~€z}|z|‚‚˜z‚{uym„}|w€wzv~}|‡w‚„†i€}q€sˆ€~{}yxy}{z|w}}{|ts€w„t‚qtx‰ƒu||‡y‚~w‚sn{{|sr†z~€}|||}zx€}ˆ…m~vx|~}|}€z|}}vy}y}|zv\ƒ~xƒk}|wq€}~uzw„ƒ}y~zuy……€v‚s{p€y†vx~us}~{{€z~ew‚}z{}ƒu~y€dy|s†„ux|‚~~z|{}}}yvuz~{}~{}~ƒ~{vw{|m‚w‰p‚{qv|}b|z|~|„‰v…y~z‡xv…qxyyx~€}o{}tbƒ‚€~|}{y‚wƒuu~}z{yz{p}~|z~…{y{|}‚u}w~ƒzr‚r}„|ƒ~~}}|~~~}y~{wy€€owz{x|{|y~zyw|€}}Ž{{~v~}~}y{w†q}€p|z€ˆz|w‚s}y€~…~‚x„vv|ˆ€xzpy|t|sz|~{z|~~„}…|{u‡…{€qv€||‡|„xwj…xufs||vyv~yv~~}pyzzxy‚qˆ€vŠ~|}|}~|zyw{†yu{z†}nwwc{s{~q}{|€{€ƒv€}~‰x}{‚”{€wy‡{~‹~ƒ}p}~|}}xz|{}~u|y}}}xv‚†rz}u…|{v~~z‚~t}}xxst€}}„v~~s}€}x‚vzs¦„…zz”|„z‚{†€~ˆs|t{‡yn‚}~~„wŠ|x{€}z{‚vzy|‚{w~|€x‚‚wzy~‡x~{‡z~}ƒ~vz…}}€{yzz~~Œ‚ƒzy~€y†}„y~„v†ƒ‡~~y€xŠ{}}uŒy}wuov{z†€}{w}u~wszxx}{yu€{zv€€k}€{|}€{€}}tw‚|vv}}‚~†{‡ƒƒ||u‚r~~u{„wx~s„zvwy~|zy…ƒ…y}x}}xwx|}xx{‚{uzr~y~w}{zy}|~z~u„su~x|~{ox€‰}v}pƒ{{€}x‚p{xtzz€vƒ{z|cv}q{„~|{|yuzt…w|€}|zv}y~xx†ˆ~u‚‚{}xz|}v„{wyy€{vŒ|{yz…|‡z{~}y{l}vtyyy{€xw€wvyz||{€|u|‚vz›}v~{z}{„o~~v}{zrx|€y{t„uy|syyn~o}zwz~{~}|…|€†v{Œ{‡‚mw€}s‡}{y{~~}}y‚„}ƒ„~w€‚‚wzq~~|€y~}Žž|w{z…xz‚}Šuƒvx}y}|}|nƒgy„z~”|}‚~†}{}y{~vx}ƒ{|{†||…{|}u‡yy~{‰|{~„|kz‚yy{†€€ww~z}v{~x}„‚ty‹{€z}„‚ˆ…€€y{|yŠ~€{{}„ˆ~vnƒ~x|w}{{w}†‡€}twty{{}~}|}|…{}‚xx{r‚q‡yw†}z|‚e}x~w}}‚‚zz}ˆ€~ƒ|~|€zƒx€~„|†€}|q{‚txlƒt€yx€{ˆy|}yv€„~~s}‡y…‚Œ|z€„}”{z‚|{{kx‡„z‚‚Ÿqw~„|}‚{{‚€}ƒ~~zyzyzІ{€y„|}€z{uƒ{|xŠˆz~~„{}zy}‚‚w{y|€q}ƒ~}‹~~z€€u†z„zju{{{}ƒztwz|{{}€}}}z„x€‚‚y€j€~|‡€„~€{|~|}z{|‚Š{t‰|yoz~}‚~tƒ}‚{st|m€{z|z}z†y…€‚|{z|uz{†t†uw|~€{w{{x{‚zr‚‚x~€v€‡wƒwr†tx€€yƒo‰€~‚|ƒ|‚ˆ€{z~~}zyx‡€{„~ƒv}xˆ~~}‡yw…u€€„y‚xx~z„}y}mƒ~‚t}uƒsZ„~‚‚}‹‚q{~}zdv}tƒ{€‡ˆy†}}€…uyz†‡v\~€ys}z|}uuw}~~py{~€‚{{z‚‹€‚}‚…y}w€‚x{|~{…}v€~{z‚yw~€‚„~x€vn{ww†€€}}v}‡z……}}z~{~rx~xxt„ƒ|w}ƒyzy€~|x~€€w‡€xz€~}†‚ƒ}}u||yp†ƒ€}‹y„‚~zu}‚~zw‡t|w~y{ƒww…}fŠ‚{€}xƒ€|‚y|z…u|€x„z}zp|yxƒ|…z€{†iƒx{„€ŠwƒwvuŒƒ~{€s€‚€‚{~ut†€}|u|Œ‚}ƒ~€y|y‡|{„{u|†}v€}‚„}€}zk}~z~xw|{‚pˆ†u„t…{|{~|}~†‚‚w„~x…{y}|z}~y|€|}‚{†||ƒ€~†}y~~†u}‡~…r€w}}usx~p|v{v{}ƒ|{‚Œ}zw|}sz{ƒuyw|v|{„€‚w‚w}x|z}{ww}†‚{v}{y{€{‡~€„z†„x}‚‚|}Œ~zz„}}„mxz†|€ˆ‚v{z|ƒ~z€~‚v€|ˆ|wxv}†x„‚~ˆkoxt‡}||ywu{u‚v}x|Šƒpy€…{z‚~t„‹}ƒy„y}z€{‚{z€}‰{{z†yˆ…{z‚r~€y€~z~€~y‚|‚|w|}y}}~p~zs~vr}~xtv|w~‚‚xxo{tƒz{‚|}x|wz{†o|gu|uy}y~zx}}}}ƒ{€€y|x€|wz…}€€xy{z†w}}‚ƒ‚|{x~~uy{‚z€}}x…}u€t|„~y~wƒƒ}|{z{|z}‚~…yy~}„xnu|r~|z~||…x{…|~{x‡w}p}~{tu…z~~}{y~~uŠmt…{€{}||{‚xx{zpˆ‚}|€~|y|{…{ƒys{z}}xxx{q{ƒxx{€€~wƒv~y‚sx{x~„…tˆ}„{uwu}~€|t}}†zxv~}w}{}|…yrmpx|yŒ‚zy…}zv€~szz…‰}}zv}w€~~}s“^t|j{q~}€€pŒ{‚„~}…z‚~ww~|yy‚z|…‡w‡|g„wwm~u‚ˆ‰yzvos}Žy€€vzy€r€‹‚€{|ryx~w€‹utw€y‹{}†„z‚pzƒƒrvzƒv‚xu|~~„wwƒ{xy€€|~sszy{y€‡€€z‡c||zt„x}„xyl‘f{y…x…‚Œ€}xx{~|}†yGƒ|€‰„ƒx|}w}i|…z…mu{wy„}{o„}€{Œ‚|~~}f„€zf}ƒo~|ny…‹}—‰y|ewƒrx‚m}w‚yt€z}wKˆ‚yz€Œzw€}v‚}…xu„†‚~~~u|w~~ˆ€{„€‚†}|ƒzoy‚}t‡ƒ{z|~{{u}uv‰|}…Šx‚~|{|}{{}z‚|x}y~y{}ywr†|m}€ˆz†{`uny{†}€wx‚tˆu~‚xt‡t€{†€{„x€…}s€Š|{~{„ƒz‹…|v…{ry{~}’Š}~wx~{u|}€y~~|„‡y|v„}‰„yƒƒ…Ž…y€x|uqs„}zwz…†g|†}g~‹‚…y{~|xy†{z‡}~wvz€~†|…y~}|wx|‚v||}€vsqyrt|ƒ‚~~‚t}|~‚~„€†|yvw{{|{{‰€€x}w|~vtuƒt‚~x‡|€‚z¦ršxp|zˆ|~{}x‚y‚{w}z„}yzr„‚y†€~x}‚ž…trr|~zv~mŠˆ{|xwu„|~€‹y}‚uˆ|…y|x|}†{„€}y{zpy|‡€yˆyv~‹s„€}qƒ|u}}uyz|‡z{t|€y~€zwrzyv}~v€y€}vx}u|…{vz{{€|~„||†€}qusf}qm„€~y~|w}|–s|ƒ}{‚ƒxx|h€€z‹z‚„tzw{‚‚u~xy}z€||}~~‡l~u‰|€z„~t|wwk…€{‚ƒ‰Œˆyx~~zz{ƒˆ~u…}vy}€zw|xux„|~€y~zq|v„x€{€~€’|‹ypwu{‚u}||{€~wu„cƒ…ƒq€ˆyv|zƒ}wzz{y}~w~~txŒvqo‚|‡}x{ƒ|~†ˆw~|€…z}~„}€zyt~x€~z}~„~w€|~€{„vws}€…|y}y„gzqyyqƒ|}jt~ˆ‚z{z‚}€{wzu~|ƒ€|z„{}z~~}€~w€Œ‚||ƒ{|‡su~€tuvˆ~€{{|ƒ||€‡€„|†z~|~v|~w}w{€vyy€ƒƒ€†|z~}‡€||y~}„{|~{t„{€wk{~}}wz‡x†y‚~}vƒ~ˆ‹€}ws€}€ƒ|}yƒtw||€„z{z€z}…~}}}x‡{{}ƒ~„zz{u|w{vy{„{~wz}€z€€~~~qv}„vstxy€|z‰~ƒ|‰z‚z|~|v€|Œx{€u‚|‹vywrŠ„zzŒ„}|{zxx{~v}}z}x}„„uo{{}€}|„€ƒ“z}~pu{z|z„€z„‚zpwy}ƒ~v~‚{w~~…€{†z…€|w~€m„‡{ƒ~ƒ‚|zzxw~|zzˆzzz}~~{}upx|€|{yŒy†wr}‹‰}v|†~}w„„}~€€x…{€{y€suvzvz{}}~€tt~u}u„„|}x|€~vuw„~{ƒy|z~z‚}t}‚|vz{z€txwyz€v€yx|‰€wzƒ|††ˆ‚Ž{ƒ|||}}„xx€€yz„„nx}€~‚}{~„ƒyz‚€†„€€yxp‚t{|x€y‚u~w…‚}{–v|uy~„s€€‚{zzy}yv}}{xt€‰}€zy~€{w~€yvz€~€s|t|yƒs|wr~wz~Š€{wzw|~ƒ}{wyvvyzu{‚|‡ye€‡|||}…|}†}€{ƒŠ|…}p{{ƒ{x~yzv{z{|{s||}|‡€€}…}z†xy~‚zv‡zx{}x{}…fvq†‚u}€}|€vyz|„{{‚~‚„y~uz‡l†{{‚yyy{{xy|xw~~‚|svx|{qy~yƒ€|wv{syq{hƒq„sy}w}}|}‚y}|}r~„y}€‚{|x„„{|€|uz„z{w|qps{Š{~y{ƒ…||}}y‰y}v‚„yzyz{€‡{u€€~|}x}t}}z‚‚z‚|y{|qxw~}}xyo‚uzƒ{~†t†y‚{~ty}z†z}…v€y|vzx†{{{€}z|yt„||}u…|vƒ{vv}}x…yƒ…s„v~„}€y}y{xt|€ˆy}€{uy|„x‚~u€ƒ|~…|~vy}ƒ„yr~vƒpu~x{u}~y‚z}‚€†ƒ}‚v~€}y|}z€yt{{|ˆ|uˆ}|{x~€}~{yxt|yw~|w~z}vƒ€|}~z~€{p~ˆ‚tk…„{|q‚}}{{{w{}|–‹xus€||{n|||€m|…y|wv~€tq|„}Іuyz‚t€|‡s…t~{|~ƒ€{‚vm‚{}x}zzts{y€€ƒ|}||‚…txx‚zu~„€€‚‚x|y{tu}‚{{w|s||{|‡}}||~‚~s†„~|~}}zx|{w€†u}ƒxz†{{y}€|tx|~}ƒ{p}v€~†Œ…„|zˆ~x€z~~u{€yzxw}y‚~u{{‚€‚„jw€p…y~ƒ„p~y|„xz}~€~~ƒnsu€‚€{y{}€y|}|w^s{n}||yyv}{}{~{„vzuƒ}y}z{|~~|wt|€†x~sut|’}†w|v}z}{{y}n„yx‡€ƒwz~€w|zxw|s…†zuy~|}{y‹|z|†ƒ~zryƒyrt‰Švn~z‚‚|u…zvz{yxƒ‚{}~{}€~ƒz{{Œ}{j|z|~€}y~€€|{zv‚€{uyosy{q~}{{‚‰ƒ‚‚€~Šwwzy}†}zzx|w|xv|vzt{‚€}~~ƒ€€~ptwz|}~w†|xoyzm‚s~~x…ƒ}€z|‡|„‚yv}z}yp|}~x{}~}vx{u|u{yƒ~{u‰|z}yx|p‘x‚y‚z}{|}r{~t~x„ƒƒ€{{}yzvwwx€~ƒ€|{ww~}{}z€}{|ƒ‚Œ“z||vvz}|‡|„„xs|}|vz{t~~~ˆ{}trpŒ…xtyy}{vy|xrx|{‚|w}{z}v‚}|wwu|xyƒzx|w€x‰ts~~€}€|v}Œx}~n}‚zyuŠ…}‹€€x‡v€€‡~yrzxy~xz‚x~|{un||‹ƒwƒuy‰…x}yw{‚yvzz}}zzŠn{‚{zs‡|~yxzƒ‚w|‚…|w|zxx|‚x€vyyy„yy{zuƒ€{~ƒ|w~zzy€}‚l|„|ƒvu|}}xt€}yx‚…b|~xƒw€~}|‡|…h…~{yŠx{ƒ}~y~}‚w~}|ty{wtxxr†wvu€|tŠx}~||v‚v|{p}~~€…|{}ƒz|‚xƒz{}„{„xy||~}‹z‚zypŠy~xu xv}ƒ†„~vw|x}z‚{~„†zjv{€}‚‚~vmy~}„€y}}‚x‰~{€‡||z~x|‚€~€ˆxz}|~~{y|{sƒ|~}}w~‚~~||‡}xqtpƒ}|x||~„r~|w~ƒ|€~{ƒ†q~‰w{|w}{ww}€zs{{{}{~{rg}}~}}{„Žqw{~u}€|x|~ƒvy‰zƒ‚|€žuzxxzv‡„|€}|y„tz|€~w{€py~|z†|u‚zx„€}‚}}}z}~zyy{}||u‚{{ƒ~}†„{€}|~Šz…}€~„›|xz~z~y~{~z}€y{~wzw~u|}…zp€~u}t…‡~†ƒy€u}xtƒvw|y~v{‚u}|z~yw|{‚{†{{{…pyyuzƒ|~w{z…||{‚{}~}w…~z||~}vty€{€~~{pu†y}wzpƒ|~z~ˆ}}{{~‰„ƒs€‡ƒ}{}}€vz}‚€z~€†„xˆ{–}~v{{~}|r€~|x‚~‚yvxz‡ezy{ƒ{~€‰}zy}€}~w|}~xx{w{{ˆ€v{…}{{}w}ˆ€…€{€ywƒƒzx‚z“}}{{p}€|w„‚xsyquz€~~ry€||{{w}wyw}…†€x€yzxy}z|~vzs€z€r‚|~~wy‡{zzz|ztx{w‚€y{}Ž…xy€z{}y{r~zw„~xƒ|‚zptˆ{ƒx}{Š~u‡vwy~yug|€ox}tŒz{tww~za~€}{|}ƒ~}{ƒ~w…€w|wuƒzhƒv€€{||s‰}{‚zy…‚yp|~„p‚s{wiq~‚|~}}€{x{uxs€~~~ƒ~}|{z|xuw{‰kwƒ|xy{€w{‚W~v‚}‚€t–{xz}{~uw}}v~svr~|r|}„€‰q}s}}€~}zuƒ„|xx~x}vr†q}{~~†}z|„†yw{€}z€vˆzu}~tw{z}x|{~|y~y~y~}zw{‚†y€t‚„{v}x‚r|}†|~zy€{~t~€zˆ}}‚r‡{ƒyŒy{yhq€{rt{mw‰wnz|x}{‚hƒ{…{€x‚ƒx~€v…{|zv‚ys}|~}wx}{{t€uu€s‚zŠyjwhz‰z|}{ƒ…‚nxqxr~|yz‡{ƒ~{wk€s…{}|„|zu{y|~q}t€‚w|p|u‡{‚r}€wu{yz}}zzx~ƒv}z|xv}€„yƒzzy{{w}}yˆ{~…„†ƒ{||€}|z}z„{}~††{w~}Šu€m€~||Œ~ˆƒ‚s~€€zx~€…x{x|}‚sz~}Yz‚}{‚s€zƒ{ox}’x{{tx~‚yyy|‚ƒ{n‡„{t€y|w†~‚~|‡ymq|y~€px||{y€y}|~|}}ƒg~yyƒ€zƒ{{ƒv‚„zv}y}|€{~~Š‚‚v‚z}x‡ƒu„~€†‚~{Šr‚}{xw‹„}ˆ~|‰}ƒxyz€y|ƒ‚Š€~s{„v{~~~|xzy}€ƒz{|{|}„o‰}|‚ƒ{u{~}€|z{}z}‡„‚‚~v‚{‡~sz~‚y‚|ˆŠqwz‚š€{€†…z|~}~}|€‚†xyƒ}€€‡|t{xz€|qwsy€€x{„y‚zzw~x‚{{Šzyxwzƒw‚„…‚|~ƒ~y{~‚{€~€{zz}|zxz‰{~zƒƒ|}wu{~‹w{z|Œ„y†{{„{nq‚~|ƒu~~z‚xwu{nw|pu{zv€x„}|†}}||‰}Œ€{ƒy~…~w}~|‡_‡}ˆ~€r„z}‹~…„‹z}t~v}z|‚“€~r„}|}~uv~~}€z}„€|}wx€xy{‚|r|ƒ|~}}‹w€u~xwŒ†}zz|}{rwy}uz‚t~s€{|o|~„~z~{€{k€}†}y†|ty~{|z‚{|u~…{y†zw}{w}z}g}|xq|~y{ŒsyzƒŠŽ}ˆ€|w~‚ƒ{€}„†}‹v|~yz~|€~€s}}|ƒ~~}w€z}xƒ…{sv{}~„€~xv~‡{y‚|{{h{xvxŒƒ†‡~|€rxw}„‚w~Y}}tu|uy|u}~}ˆ€…}t{~w{‡x|}|Ž€kv€‚|}~{„||„{}|{ƒ~€|zy€|}y‚wu‚{zs|‡{|{z~|€ƒ‚ƒ{€‚q„x~|}‚{}uu~|„|u~€|~~‚yŒƒ}}}‚{}z‚{z‚x}zƒvz~}rxz‚|ƒ|}‚t~„ƒz„s}{€y~xp‚w€~xtuzt|s‚}zxw~„z–|~{|…}y{‚u{nƒw‚…vt€…n‚†{|{€}~‚|}qyp}|vƒ€}ˆ~{€Œ€ƒ{z†„}|}r€lw}~|wvƒvl|z„a||u{z…†v~}}r}{‹qyw‚v~Œx~j}ƒ‡zwUv|mzŸ}pu‰vˆ†‚t†~{o|„~€sw‚ypszŠz~yxv€ˆ~ps€xeƒy‡‡‡™{„}z•l‘„or{{Ztwƒ™|~ƒ€}Šw‚s}tcztyuwu„€…{|{uwzwvwwvu€n’p{|z~‚z{}y’σr|wst}Œ†{Šz‚}z~}}ƒŒ€€uz{~o_||Šy‚„kngv…|†}]z€o‡ty‹m~iu††dp~w}~xlt}sutˆ|kta……w‚†~•€ƒwpŒxw†`sˆu‰n€~€znƒv„‘t|xr{|ye„ƒ‹w|x{t|~~m{{~}‰v‚€‚zw~}t€|˜|€|€yž|g‚qm¡…w~{nšzy›s€|xw„€€r‚}v‹|}‚|†~w}xm†i…}znp‚|„xtoˆcwy€t‰”fˆ{sm~|~Uƒy~€†}yk}wz”|}}y…yzƒX‰‹|uz~~||q}zmjƒxz…{~{uŽz‡}‡tw„{}yƒ|j‡€|ˆ|Š„†ˆ‚uzwxo{{]x“ƒzxŠwbtzn{z‡†r{v}z„€y€xzs}~tw~~}}}n|„wp{|}‚w}vƒ|˜vh}xƒ€j}}‰twˆ~{…u~yt}€~€†t}v}{}{yzt|}…y|vv„}‚uuwvks{‡~…}uz|z„y€{|}yt„‚}zux€|ƒ~€~q€‚zu}~}n{zy|‚}ƒxuyˆu||u{{yxxx}Š}{yv{~yx~w„x}v~u…|{~€~~~|€{|t~}zxŒ|~|u‚|{y–whx}‚n{|€xx~t{v|t{}~x{{ƒoƒƒnx|s{tvt}zz}y€{{xrmu~{y{rzy~xy{{x~‚r{v|{~„€zˆ|t„€u{‚z{y€w{~wzvyˆuz~~‚{|r|{~{w‚‚x}€y|~€}ƒ‰~{}~w|~{‚‹x‚}v€|s~~z}~nƒy…{}ƒx€‚€|‡ƒyywwy€~ux‚xz{k€p|‚xxl€uƒƒs‰yz{‚pt}ƒ€~€su{„}~~„{|~g„w‚~|x~„}t‚z…{€„~{‚w}m~v~o‚w}ws|w{{ˆy€€v„€opw{{]€‚x€ˆ]v‚x‹v|yyƒy‡{{z‚•ƒ„wyyŠ|~~|z}~€{ƒ|syx|~u{w~†xzsx{s~„€…xz~|}z†€z‚|t~wy|}€z„y|vxu|z}l€{ˆu}|yƒ}~pyw}}{„}€w}|}}||ur}€u{yˆw}x‡~‡…}pz|vwŽ|{k{|tsw}~}|{{x{x~x}}|{py{n|||zxz~y†w‰„}}|“w~vmv}‰y~~x{†xyyp|u~€†{‚v{zy{qxpˆx{‚|z|}}}wuw“‡|ƒ}~Ž€sƒ|||yxz|~|~`ƒu}Š‚{‚}g~z„~‘ˆyn€…}€tŠ‹n{swqzy}„{v‹|Šrx~~{p|zv‰zg}v‚|iŒm||ua~w~vz‰~||{{}t}{zzys|„}‚|}xz‹€{‰‚{tw~zu|}vu‰~~}…z{~Žsz€‹{w{~vxƒ|~{‚€€|€u}}ˆ{}|~wz}{€ƒz|€o†…z|}|~ytlyuw€g…€†wY{~}s}{y€wx}tk…yz|€t|‚|zyy~vzv{~…y{vt€pp{f‚~~€~{ƒ}z||y“~}z†u|~ss}{~|~hxwwyn¢{~{}…|€x||v~pz}z||v~xxŠ|}|}}w|Šy†ˆ{q|‰q‚mq{xŠrt~ƒ~~wx”}…|r{~v|xš{‡y€|s„‡zjyy€}|s~€sy€ysdv‹€y}‚‚|‚n…„~|‚‚wx}~vƒ•z„vv{€‡wwtxƒzŠ…„~€|€w‚y}tv…Žx~|ƒ‡}j||u|t|tuzvvy|}‡zgv|‰S|v‚yr}y„‚zwjt€}‹{{€n†~s„z~rx€~{nzw†tzp€}ƒ{zu}r‚€|o{‚z|{l‹~xwnƒp€vzz{{x~y‚o]‡‚‰~yt†xywx†k„p„w†r|„ywqztw…†n|w~w›z{z{z}yr„wŠz|q~€rvtq{„‚}t‡~}‘iwr~ys„…wƒ{v}w‚{€mutw€~|~{|{€…{x•y„…gƒ„~t{}t€…zv€‚~‡vw‚€Kƒwxyw~ƒyz|uvq}}‰}…€t†€‰w}yz€s~‰uz„y€|[uk€“€x}†‡‰ˆpmyn}~{{z|z|}qƒs{s}}vzpy‹yz‡~‚~z|yw{~‚vz†‚‚†z|~|x}ƒ}}‚~ˆzz€x†z|~~o|zqƒ|~yw|{zx~†z|wy~|}}x~{w{~ƒzƒx~ƒ|s|y~|z„x|x~|}w€y}~‚tz‚k|€x~€xxyx€ˆxt||ƒ€~u‰‚ƒrvv~xy~ƒ‡€{wlx‚~y|z‰~}€x‚wyxvt‹vy|~z|€wzy€tx€ƒ}€z|z~h~}{|yy†z„u|}€wzxx|uwpurk{|‡Šy…zx~‚~…}€uz‡y|rr€…„~y|z~zvz~v†wxvz‚x~z…€w{vyy}y|x……yyutxqz€v€|~{}~~~z{sv€q„}w~xƒyvvwˆ}xz~‚‚wx~…x{~ƒs‡w~~yz}z‚€€y{zw|{ƒlz{wtz‰€|‚€q{|}vx…zx…y~~|ƒzz„x‰wvvv~ss|j‚sv|~zt††yxwzzyz€~}z‚yƒfxvys†yy}|~z~…x‰‚{z|}y‚}v{€ƒƒ|xt|s‚yk}s”z}‡~|}€}rq|…yuy}}{vn~z|~~}ƒx‹}€€}{~}z}|~}zy}{}ƒy~rxxv}vy~€|xƒ|yxx„€€|‡w{~yu~}€w|€h~mx~‚s~t}|}€x~‚‰}ˆ€€{‚|‚~sd~|tˆz|ƒ{}~y|y€‚|‚‡y{z‚ƒzu}~|yxz‚z{‹{t‚v|ƒx}z…zq†Š}||{Šr…~€€{}u|yyl|}ƒ{z…y}~vzsz|€~|}ƒ||||y€~{~ƒ{{ƒƒx{{z|u|}}ywuqx}z‹…~|{{t|}€€y~~||†~~€y|z}|p~Œu|qˆu{{ˆ|||€vp€x~|~~‡…‚‚|~z€€wp{~w~xp}{}{~€|xxz‹|‚|o‘}txz}s~vx~x|{~{€~~zpo‰~}€zx{~‚{u|z{‡„~h}|€}~{‚}~up~~z{x†€€{€zvqu|v}k{z{fp|ƒt|~zx…{‚zyp~ytƒ|„p{ms€„‚k„}w€}zz‡€€|||€}ƒ|y|ƒpw~‚y€€x|‰vz~}ƒ|€yu‚|y„yy}z~{|{{i~s‡yyˆ|z€‚yqszv~zs|{z{{}y~|…†wx~~{†ˆ€|}}y{zbv{„~wu||„|…uzix~wx{€vp€€z€}~|†ƒ’‚smy~xv|}~|€{w}‚{~{z€iuovz}x|}{‚ys{z{tov}‚€ƒ‡€|‹j{‡~zƒ€€t†lxzyy‡{Œ{ƒ“„ƒw…|ƒ||{~r‚v„zzƒ…}†~„}€ssƒnˆz€zyuv||„kˆ|zqyŽz}z~€}|†~‡y}opy|z|||€|r~y€|j|e}~}€”fz††sou‰„uyx…~‚zt|~‡€€‡s}Šzk}xpx{|z|‘}y‹j~zvs‚‚u|~~x{||y‰x€duz~x}t}‚s|y{~}|y~~‚u}_vyzƒ{}y}€|€mz‚w€‚|}„‡{‚u€|z{~{}wxmvvxw€zvƒv{€|uƒƒqwos„‰|‚~|z{‚‚y†{…|‚‡~|}‡‚}nuƒv}{~††wx~r~…t}{~††xv€~}z}xy€|{z†g‚{„}w}|{|p€…x|{zq~{}z{{vwq|swmr~z„r|}ƒ‚|€z€y‚‹}r}x‚ƒnv‚{€„€€{x‚}}ƒyu}wƒoŠ|yx…€ƒ‚~k{€}w{q{x…w€{q|qŠ~€x~||‚†ƒ‚~gzq}~€l|zŒ}…}†y|[zyruy†zyt{x|y†u€}xt€~q~~‚x†~{‚{xv{|xˆ}vx†{yx~w}|yxyƒƒw}||{‡x{‚~~Š}}z€}~}w~~}{jw~€…„~|€€‰€z|~}‚‚}}{‹u~z€}z{}‚y{ƒt{~‚t‰pzz}}}|vq‚|~{zƒxŽ{‚{…zyu}y~‚|€~n~}xq~zk~v}v|~†|{}zx{~u‹€|{|€€~zz|x}swx€w|{€ty~y}|~ƒgzz‹yu~“ˆ}x|~€uo~ƒ|}†zz‚x}}€uˆ‚l|v~~~|x|}Žvw}~}r}yy~v{€}z~{ƒnwƒ€z€yzz€x’{}z~{|y}xy~w†||{}qzz}‡…ƒ~|z}‡r~q‚‚}x€x‡‚z€v„…}|y{{|zwy}{z€zkŒx}~zx|yn{~~x|wy}{|}~ww|u||~s}|€~~l„}qms€~ƒt€|w{‚|_†{~~‚‚k~|~{r…jzw€ƒ€~|}‹n€}~~x…z‡„{…ƒƒ}ƒpxw{}uyz…€Žw…‚†x|~yz{kƒmidu{†rt{‚wz‚yuzv|‚wz{z‡wvv}}ngxyv‚v{}~yjƒ|z‚|}xyp|}~ozo‡zw}xƒn…yz‚†}~zn|qs“~~~zw}r‚‚{pt‹~}‚~xutu~~u{{{}}j}w€|tt|{~x}|}x|oy‰w{{{~}{w|}ls}{yt„tp€ux~{€v}„‚ux‚px‹ˆo‚wzxy{‚vcvs|„x}}rzrƒjy|{xvx}‡xux|ts~v€{zy~r„}|„…‚kwr}|~ys‚z{vm‚zy€€|zzpx}s}vzoˆ|||z{xpsyx—‚€ƒy–u}ƒ|v‚‹~ƒun{x{{uv„a{}‹u|~x…€q{nŠƒ~{|tq}y‚}{^uy‚x{…{~w€„‡€s}vpr~~qstnr`‚{}}m|o{ux~syso|zx…{ox~„v|xu€qyxvƒ…|z€xƒ„t{yvt||c€†q}z{~€q€tƒl}€}~|o}{|y~}…vv}|xx€‚}{|„w{…yq€€pƒy…{‚w{~s‚||yx_‡~}{ƒxf~zy}{}ƒz|d€vzn~€€t||xvu~tzz|€~…‹Šxq{{}€x…†~~‚‚|s‚z‚~}}ƒ‚{||~xˆ‡s‚w‡{€rzz~ƒx‚†‚}ryy†|~z~‚ym}}|‚„vz}|z{’xt…~zz{‹{}€~~…Š}}‚ƒk‚|x€~~}€}xx~{}{}n€pˆ€yƒ{z~tˆƒ{{€xl|x|ƒ~‡}Š‚ƒˆy}}|~{{~x€€r{yv{|‚{ˆ~x}…|z{€€{‰w~{|z}vx}zxzt„‚v‰t|ˆz}~~ƒ~‚‚}z{zj†z€€‚‡m~tl}~{n}~m‚z…x|}~s{z}|xxˆp€}ƒw|rp|u{Ž}~|{rz~hq~~w|‡ƒ€u}u{€†|z€v‚}}r|v‚€ƒ|{||v‚„}ƒ~tƒ{y{y…m{{„z€‚f€€€{yv„…~~}wƒ}y†ys‰{qr~q‡~z}€€‚y~€||qp{€{‰t}pw†x…€zp}‚}vƒ{‡€|n|~„q~€vv‰‰€|{z‰{‹€|„wrs‰xz|ym||y„€~{qz{xvw|~{w{~€wzwu€Šy|€z|€v}‚„xz„‚}x~xˆ}…yyx„y„}‚z{|~~|z|y†yƒ~s€|q‚{}‚|x‹}‚‚q|{z}‚}y|‚zyy}“~„ssuƒ‚utzy€x…€y{zzŠ€‹‚tqy|y€€€|u{|‰ƒw}€h}{†{~tx|yy}€{uzyr~{|}€~}†ˆzˆr|~t{~r‹ƒ€„}€vt{{€~xv……mz{€†xv}s}~‚}w‚t~nvzy€€y|‚‚ƒz}zz‚|sƒ‚wƒ~w{yz~€Štw}†€‰€y|€wx}|w€€}ƒz„~€‚xx‚€~|x€ƒx{|~x‚v‚z|}zj{€x}z{}y€„y||}}{‰xzy„|u~}|†yˆn‚q~{z}{€~…}‚„|syw‚w‚}}€us~u{}‚}†~vxw~~~~‚y€ztq|r}‹‰~|vyu‹|ƒ{~€}~y|€z}z…†‚v~€x}€|„z|‚z{v€|v„‚x~€zˆ~t|~|}}|y‚„hŠv}w€|z|~~}yv~{‚zx}v€yp}ƒ…mŠms~~ƒ„{‚p}~x{„€ƒƒzy„xw‚|{{„xz~€„v‚{}y}yyzrqowg†zyzzz‚‚|ytu}|ƒ~€~€yzv‚†~{zu}y‚wy˜…}kyv|€j|„sx}{y}y}~ƒx}l„~…uu~w„z„€€yux€‚~ˆ}‚s‚~†|_‚u€‡‚€~‰}wz~y{}q{vyzy~u}vx|~~}~†}m}{v~Žy‚z}w{|qwvƒzw}}‡}tƒs~~~qr€z{z„}xhmyƒu‚z‚wzwŽ~‡{}‰{|z}p~xvm‚q€}{€ƒ~…‚}ƒ…„~~}yrx|{~ƒ€„~t|uigxƒ}v{€y{|~r†„€x|~rƒy‚…„…p}~z~t‚n‚{S~{t|~|ƒzx‚t|€xˆ xz†p‡}{xƒ‰wƒyq|„}ƒz|z}p„v…r}zx€z{€|~€xz~€r‚z€Šz‚w}y}ys‚~}rp~wtpozp|n…sv‡ƒ„jpzuyŠ…t{„z{r„€v‚{„vw€~{w€fxos…Žwy‚|zzx‚|x„||‚}y}‚{v€}|}vzu|v~„~y~}h}ysr{y‚€~Žzvt|z€~~|ƒ{€’z|~…€v~z}‚zƒyyˆ{uƒ|~x…x•[ƒu}{~{y}yu‚‹}x~u‚}€‚{}|†t{|{…vz€zn…{}ywv‡yrx~~Šxy‰‹z‚†x}‚||}‡~‹~’{z€‚‚~€{yy|}~nxtt€†|~}‡~}}Š‚††~~}‚}~z{ƒuy|||‚|{†x{uŠ|szv~‚}|Œ‚yy„€~x€|yx{w†vn{ˆ„yz~{~†}y{~‚~~~zu€~…xu~u‡|x†wye}yw€‰{z€†x}~}‚wz{v†~‡s~|€pƒ~~yy€€~xz}w}…y}{sy~‰„y|~x|ˆ|y~„x‚{}ˆ…~ƒ…z„€tys„zŒ~†}x€z„yxwy{…~z~z}•|‡~x€|…{{|†{}q€„{v~zyxv~syƒ~€€z„‡}ƒzvz„{…|~w{…rp…|~‚qtz…ƒ{€‚y|€€~„r„u|{{{zz€z{šƒ~|„vƒ~w‡r||~€„|ˆ|}zt{{‚†zz„…x€}€‚}€z{r~z{€~nx{w}€tx}{~z}z~ƒ{s|‚t„‚€y~}j|w}~‹€y|~€{€|‚~}p‚ƒ}w|wz|{€}{zs}‚~vˆƒt‚†€y}‰vz}ƒƒ€vxwwuz€}|~ƒƒ|~}‚|‚u€~…|z„yzm{z|‰„ny}v|yyƒ”ŠpywxxŠy~ˆw€ƒ|ƒ€|~ƒw€…€€{|~z{sx|~yƒ}~|‡u€s„‚…‚~qsx…~yxv{~~{†€‚|}|~‡}ƒt|y}wx~ƒƒ{}~|€‚{yƒ|x†€ƒw‰vs~‡t}xy‹uzxyƒ|z€v„€‚{}yŒw{y|’zq‚~{y~{|y€{etxwz~swzzww~€}‹s}‚|~zx€}xzwxˆ„‚}~|v~z{{y~lw€x}‡{|†}~ytl‚…‚y‡}€ƒu|}‰y~}|€}€‚|}z~{~…{€}€…~{|}pvƒ€‚~sw||~yƒ{}‡{yy~†€‚}smx~~xvu€ƒ~u~ƒxk„y‚|€x€‡uƒ‚‚ƒz}r}t~zxv‡~xz}€‚}my}…}sxmx„rxyƒ‚…}€ty†{z~zq||z|‚opsq}Šx~€€~x|vszzzv|t€v{}x~~x{yx~zyzt{‚‚|~zxt‡{zz€szmd€„|€†q~‚zs…pu}}{|}|{…k~}~oz{vg{zs|}sš€n~‚~‚y€zv€†wƒ‚}{|‚z„tƒ{{}€~{{zztzp{€zxƒz}‚ƒ~|p…}wŒnzz{rž}}||€{“}}}}€v{{ƒxv…{Ž~}}|~}{~yy~ywa€x{~„y{zƒ€€}|€{‚{v€hb„ƒ{ƒv‚ƒ~‚}~~pz~~|†}‡t‚„nu}{sŠ||v~vap|{{~my„s}Š|{}~‰‹w{vy}x}g{}ys…v~ty€m~j€}u|~u{€q†€…rxˆ‚zx{}‚{y‚y€ƒz‡}{wƒ|wz…z|}‰xtz|x~~„xŒcy…{‡y~|…€fu†‚ur}n~zyx{|{y‡vr€z}vƒfŠy€k…“|{vlw€{|~t‚}vy{z{t€†„zw||€wpƒz{{|yuyu~ˆzxmjzx}zx{™|ˆuzƒyzrx}zyyzr}‡v|†pw†v…ƒ‰|jo}‡…„wqƒ€vzwxŒwz–t­€y|{}w€€’~}zvryvy€u‚yr†‡}€}r|…tƒ~x~x†~xupU€y{Ho§Žov|~m{f|~w€‚}vsu„„ƒwt|~||z…{}‚ƒs‰}ay~„x€~|z‰|wwz‚‚yuq|fs††„‡}}~‚|{‚zzv{us~ƒ‡€p|…|x†{s~P‡~z†u€bt…w~}ut{{|ƒ‚yyyw‹]{‰}z€ƒ|†|ƒzƒrtvx|}xsx†ytvxl}„€†v{{Šr{z|}z}[{€ƒu{€ƒs‘wz ~qƒˆ~t|ˆzh|sux}{†xˆ‚~x‡~~yŠw{{‚z}~}†ˆ„‚|…•u‚ˆzz~y~us€{u„"ƒwqsŠyusyyƒƒ~y{p}€}|€|€y‚v{~{ztz|wn‚rrƒŠxŠ}x’|ƒq{‹{x{ut~‚x‰xt|~w}{s}u{w„w~Pz‡‡‰{xvŠs€zyv‚tvŠwz‰~wƒ{syzt}‡vus{rs{~}‰ƒ}}„t~…€„p}Wups‹yzƒlzx}zmvwŽx†t‚p||{{y€u|~~}x~wy{s{}y~ƒ|qz˜”osw‹€}ƒt}|ƒ‚ryjw{sx~z|u…‹zu{‚|{uxƒƒt|}‚€yvwjfVv|x{xyw~w—~xwq{†p„{{vwv}t~x†}zzrxxˆ•~|{z…wv…ws}„}|ƒ€‚w|‘tvwtz{…zqszx|w}sm{uy|ˆx~~}r‹x~z}‡xs|s–y{py}‚†~z|zz€x~ƒ|„zu€lv†{|y|‡wx‡upvokw}nnsu€t‚~p~zuz’~sx…x{s‚‰‚r}~ƒ|yvz„sw†mŒƒ‚v{}t~qztwxvytytwy{~y{€z‚t{|z‹„~€r|„w|~‚‡‚z…yƒ}‚|‚{myŽ€ss‡x~€yz|‰t~~‚z~€€uƒ}€w„a}|…Š€x}yo~s‚v{uurŒ‡xzxov‚y~€o~~z{pŠwz|qq}zZ‚vx‘‡s|z~z|€w„tzuƒ}zszz~|{y†\}s}uv{s}x}…~||€}z‚xƒˆ€|€|z…}€x‡|€„{{y{‰xyrz‰‡|‚xxy…}x‡‚ƒpz|€wz}}}y|rƒ€{zyz‚~ƒ~wrqy~€s~‰†u~Œ}zty{}l‡}fxŒxy}y}{~w|}„z|}€ysx}k~q€}~o~}}‡}}kw}uyzn„k|xx~t€‚s‡}vwuvux…|…†}v|†|~~zvw~ms~Š‚yy†z{rt‚|qz}v}x€uy|‚{||z}‚y„u†{wƒƒ|uz‡‚z€ƒzˆŠv}rk\€|z||~|}‹yzt{|q‡|xv†}„m‡€{{~v}}y}i‚€ngz„v~uu~{y~~|†jƒ}b…qz{{~{|{y‚|}„‘yyv€~yuwvzw}y}vpwt€uv~n|z||}vz}pi…z{{utw{|x‚‚woƒ„€…{tz~{~x†uywƒ€rt}}}yzƒ|svsvx€|yx‹~|€xn}…{Ž{u}s„ƒz~~|v†}zˆ|{†ƒxyˆ}wy{|xkz€wƒtz~syqky…xy{„{€swƒ€}x}}|ƒ…‚yx„~zz…w{|z{|z{}ƒ{€€~{|z„s|{„t{~m€ˆ{utZ{‚ƒ{u‚~†|‚~ƒ~z|‚}x{~x~†|{w|j}}}~y{~~}|y~u{zqxu”x{‚qzz€|€~{~r†t‚x|z~…€|q|}zz~€{t‚|ƒ‡t~vvuzr}}t~x}ˆ}u€~{|~†yymx†€€€€|y{wuzw|qxz}Š€|~u„uo„w„~€y~„{}ut|wy‚~wx€{|ƒs~z|}vyt€|x}‚}||}€{y}uxl|x€t{€…}{zz…yxw|€}~~~~}~|xz€w|qw„~~||ƒ~y{z~uŠ|}zuz€wƒ~~||†n†€zzu{‡|€x„vƒ~zzƒ€{wx~u{vuzƒxy{{‚q~}|qxy~{}z|uƒ„z{~‡||xv{}w}ˆ†v{„yo|u}{|~‚z‚}zq†zyqw{}wzzt‚…{vrz~€„y|y~z~{†yv}|Œw}z€z€||Šx‡ˆu}„‰w|{zxŽnwu}x~}|{}€yzx}{ywrzzxyx{xwwy~~prw{}{€v|w†zv€xz~~…znv|q|yvn~‚z|ƒy~…pyxt‚}|v€„z€~…‚tzww}‚uus€n’‚}v€vy|‚€…y{€…s{}€~x{|€{z~|yw~}||t|…z…‰zqwtt…}vv~vz|{{x~ypvwry‡{|{|~{x}xƒ|}€{{ƒ€~yzz}}€|€}ƒwz|}yxt‚z‹|€y€w|{~„zz|‚ƒr‚…{vv}€~€€qxz‚€|wq‚€…z‚…~|‡xx}ps}pt~xz|wz|y}umtj€z‡‚€{{y~†y|}x€{yuw~||{z|y|{v}}„|€~x€{{m€~{w‡‰|ˆˆ{~b}yxuzyƒ|w€‚…{|{o‚x}}v€x€x|€|y€‚€v„{u„‚}†zz|wun}€}|}}uzˆzrnx‡†Œ†~|z‡|z}{}|€|z}ru„}|ˆxz„z{vyxl}w}…„}„}€‚yƒ‚{…‚z{w…~|yurƒ}zŒ}{|‚r}‚‚zwu„{{zx„~w}vƒw…t}tz}xssƒ{€ƒƒ…€yyvz€{yƒ€‚{v|xvo~k€‚vt‚‚tl…{‚v}‚v||{|‚|u‰†ƒwv}‚{ƒ|€||w‚{{p~z…{€‹z}rz„}~uwvv‚xx}s€{|p†~„}vv„r|‡„v€xy{„x~|ryp~|o€y…„vvŠ}Šq„v{„~r€€~y|}q|{‚|s€~|~{||}y}}sxwk}oyx„|q}~Ž~~u{}~}‚~s~‹x|‡~~zy€}}€qsv|~||uy|ƒ~ˆz€v~vq}~yz‚xz}|’~}ƒp~}z…x{€~z„pzxx{y„~‚}‚}|}€wx|}~t~~‚‚ƒz}|wy}}x}†y{€}€~xx}{yyvz€v{y~ƒ~„x€r~{|y||‚ƒzƒx|‚…tv€}yx{}y~{s{}yzxs…~v€|…~v…ƒy|}wy~|y{‚|}s‚z}‚~~ƒ}|u|q|z€„j€{}ƒ~y|{…jzˆxm|}t†‡€v|‰oyzy‚{€{|…x}}y€~}…wx|{}}}wtƒ†}‚wŠ{~u‡z{‚x„yxy|mƒu‚ˆyw‚v…|{zx~wz€wzr€}pzwxƒy{~u~~‚…wz‡~zy€yw{z€u…‡|€|uz{l‚v|xzƒ†urŠ~tzƒ‚zz‡~n€{vy~}xww|x{{Ž{†zv}u~ut‰€„|}|€ƒzzsyy|…~‹|||~€r|~}{zr{{€yw€‰oz†uz|†s„|v}‚wz„wyz€}|‚z„~v|||€{†qt{v|w}u€~y~†x}qy|zˆ}ntrzz{~}€y}r€}ƒv|~z€}y€t€“}p€}}„|€y†~†€y{w~n{|}„t~€{z~x~|uxqz}y~…|}|‚|†|~{‡€‚}~v|z|€}|€{x}r€ƒ{}}{{||t|~€€zz{‚ƒ|uŒwyoux~}w€|u…€{x{y’t†‚|z}~zy|…‚|‚„}z|„z}|~~ƒv‡|‰xyu{p|x‚|}}yŠ}|u~z{zxrw|‚wmz~|†~|~~y€vz{yz€{kqz}€}w}‡~}ly|}~}~zxxq|}~v‚|€}v}~o€˜wuy}zw|u|€€{y}‚nj‚yn|xw‚„{w~|„€„|‚~‡|{|~x||o~~}{€t|}xq€wƒ}ƒx{…t}{ƒw€ƒ{{ww€}{o‚zv{|ww‹x}zys}y}}{~vv€ss{ƒ|r…}|ƒ€{ˆf|{]|{q}{€y‰~}z|~o|v‡ƒ|n}„‡€zzvr{€y…{{u}y€€|y}ˆtvyƒzwuk|‡€z…€w|v}~ƒ„‡~z}zqx}|ˆt‰}}u}}z…‡||ˆ„z‡s}v~{€{s|~}{||ƒ„~{„Šy}w{€w}y{„ƒ{€tz{}„ssz}ww{|…†|‚~x{|…{ƒs†‚q|{zƒ|}}}Š€ƒx~“‚}xv}‚y}q||{ƒ€€yƒ|quj{}„ƒz‡~€z}{~zƒ}~Œzvx~xqx|v€~|~|u€‰vw‚{|vuˆwxx}{~yzvw{€~~…~{w€}t}yz„x†y‚ywvx}}~u||{tz€„zz}}~x|}o†€|€kypy…z†zƒz‚zˆn†^st~Š…}€ou}„„z|sw~‚}wƒ€{ˆr~{|x}{vzx~ƒƒŠxprƒ}zv€z|~ypx}kƒtyyw~ƒ|}w||tˆw~y{oŠysy|t||s|}†u}v…t|tƒ‚{v‘‚…xtt|y€}pu|~}}z…~‚t~vކvuxy{|~q{v}zw„z}ƒy†~zt~y~t‚|w}xr{‡j…|~s‚~‚€yyr|}~{}~‰~‡€|y~€}|y|zzy}‚y}|yy|zƒ€lz‚{nv~ry€€|„vr{‡€‡œr}…{‰~}€~|}zz…{‹…x‰~~v}€„|{y|s~}z~hx{u|ƒwj„ty~|Œs{…|}‡~~|€~{wv|y…‡}ƒz{~{~w‡u|~{qzl…zwwv{}|}|~‚su|xw€z…w}z†|ˆy}wj†~€t€~€y{}~zˆ~}~pƒ{|s|||~|wz}}tz}y~……†€|pu}€x}|€~vxv…v~t€uvrr}}z|€|€zy}q|}v„tzb}ƒŒls‚{~†|jq~z{}{ƒt€|w{uwsŠ„v}{t||{}}}|zt~€wy€v|€s}}z{lƒ~}|}~}{}~}z…l~~€{|}xyˆ}…}lw}†ƒ}x}{‚y€{zz}~oq~zw‰{{u{}€o‚}{ty{~}|„z|uz€{{zywƒx}tz‚t€v€~x{~w~~n‚~y~p‚~|y€{yŒ}†{~{{€qzz{zt|t|ƒ}z~|s‚}~}‚vwu}ƒ}§yu{€‡~z~p~ywx‚…}~x‡|~‚|yx}|q‰zu||x€ƒx{z~||x‚|w}{|{†~€}x†ˆ€x†z{v€€‚w„}ˆ|}v‹t}x~z}…y~oƒ}}r‡Št{w}x…~€ƒ{ƒ|~€}~xusw}z‚ƒ‚u}}‚xv€‚zmwz€~|„‚„„yz…zz}}y€{w€x|€s€y‹wzr{‹~„x{lzƒ~|~{y~~}z„t~†q€Šy{€}}u}}ys}~|}|}x‰||oz~…|}|{†zuy{q{~|z|‚~}€‚x‰m~~{€‚|}€}}ˆxƒ~†||}{z|||…}‚n~|€x{xx~ww}wwy{|||~|†|€{„|y~~{{y€~|{€x‘~o€m~|t‚|{~ƒy}‚s~~}v{‚y~ˆ„ywvzz~|{~†p}}~€y|{‹v‰{{x€ƒ}vxz|~rrx€}€…w‚~y~|‚€|ƒ{w‡|x{w„u|{y{}z|}xzz‚u‡yŒy~‚t{}~{~~z€xyxzv{|~{y}€t‚~}}s€}}}uz‚pŠw~z}Š~‚}„{tƒ‹€{r…Štxs}y„z}‚w~ˆ„€~{vu~€|}xx‡{x†…q‰}w~‚zvxx}uy{x}|y}Œ|t}ƒv{€{Š{l~{‚v|{yy€x}tu€ŠŒy‚‡|qvy|x{}{y„y€~~‚w}~wy{yw|{w€}€u…‚z‰~u{}„{x|‚v‚z|u‚ƒ{~ƒ~uy‡‚}~{}~~w~€nyu~r~uƒ{y{}‡}|y€€|q‚z‹|~}u}}‚y‚ƒ‡‚~}‚z~~{‚}z{y{}{z„sw„ƒ†}}‚‚v‚}{xrŠuˆ†v‡‹nx‡wu~z{|…yvy{|ˆ‚}yxx‹‚}|zˆ}…„vƒ{}v€{s€}lv‰}~zz‚€xzxƒ}{sxk„p|†zx€€‚|nyzoŽwƒzyy‚u†zx‚}}†‹„|rƒx‡q‚~wy{„}„y~„x€~~tx†{ƒ}z}ƒ‘‚~zˆ†|€‚}~„zt˜}t€ƒ{€…y€|…xƒ„z‚~{€q€…‚yŒy{{|ƒx|‚}t„y‚|w~urxr€|tx†y„~~{‚„r{„}wz}~us~{wqu~}t~~}Št|‚~~|~|€}}‚wyv}yr}wnz||rp…x}}v|w{ƒ|€vz}‚{|{ttt{{o}~zƒ{|w~{~{{}xzztv~}|}uvv|y|~}€z„~|wu…uˆuq|xz†ux}€x€{ƒs‚€vr~}urvp|x€|~|||{‡x€u‚yzr€ƒ|q|†s~‡~w{‚yuzyxq~~wƒ~}~„‚}k}u||m~u{|w~ztw„…wsv}{x|~{||sf€}|m~}{v~„s{xrw…zqzz{„yƒ{~||‚}€‚y€}‚nusu}{u}{~ƒzy€xxy†v|p~~|z{„m|h~~r€}xp€†}z„~e{s€v{›}ƒz}~†y€…z`}xy}put}x|tw~~z~x}}xxt…vqˆwwzzƒ„u‚z|}‡|xu€z}~js€s|€yw~~€€x{y{€x}ˆ|x€|vy|z†„†€m}w€x}~yl„xt{s…}ƒ‰}€}~|vu~†|}tƒw†tw‚puwu}y€o€€‡w€xyt`vy}|vyzuƒxqvzvƒ†vy|{z‚}ƒ}uw~}~xw…€|p€{xhts|€uus|vƒr}zttry~||y„z}yxz~}q}|}|yƒŠruŽvzwp†y~zwpƒus~}u|q€ryz{„~„|{zwtxoƒ~€‚y}€yv€uyo€ˆr{Ž|‹€ytyzzw}zqy|~†yˆ‡y|vt€„xnw}vx€zz}„‚q~h{ƒzsz„i„r}Š~w}„}{vxzxyƒz€{w‚{njx{{ˆ„v}k~}Ž|u†€‚‚|yy|v~vrƒq}~€‚~‚ur{tz|€{{|„…‚~v‡w|~~p€zyw€n„~ƒ~{„yz~sv‚{v€|}u€€…qpzsƒ~{ŽŠ}‚v‚zz~q‚‡xszŽs|‚zw{}€v{t‚|}z†{v{~yx|yunz~ƒyqv|}w|€qzuy}zˆz„}~p{|€}‚zhww|ntzx|„nq€}€{~|u}~€tzws€†x„}m|ty{jw‰„nv{w}{r€n~t„x€u€€{txj{‡~wz~ns}x„r~|w€x€‰k„‰zznzo~„p{wuwx}~x–qu‚}…}ox}|z|u‚ƒ€‚y{„tyt|pr{~v’‚tyrwwyoq„x}Š}}|zy€|~y}|v}‹y†uz‚tu~f}t}vuzˆ~~ˆx‰~€{„{˜}|~z{y{y|‚†‡Œwvzrmtsz~{v{|}y|}yy„Œ†|¤…{l~x„€~~y|u}|p~{…ƒ…x‚‚z‡}yzy…‚~…‚‚xw{~‚‡|ˆ~|{z„€s~q~vyzo}}„„€twxt}†|›x|}€{z~~€„~ztz~†z}€mu{}}yx{…~wxt}||v{~{}}’zz}ro‹xy~…~xˆ|‚~|}€~{tƒ{y}ƒqy}}†zw€y}y{u{yl‚y‚~}zyn|q…o{ƒ{|}~|o{}{w‚{€}{~||{€}ƒ|{yu‡{y|yw{…~€€†v€ƒ‚py‚z}~z„{~u‚|…zz€z€zp~u~€€€q~|‹||€}ƒ~zr€„x‚~€†{s}†…xy}zs{‡}s€€ytwvs~ˆz~{€ˆt|ƒx€}‹~|‚sz~~yxuu…zŽ€‚wz~||{vƒ~u…}}€|x|zˆƒxyz‹„|}{w|€ƒx|zw~€|‚~{w|x}wm‡~y}…{{z€x~‡|t{{{x|zw€v€sp{ƒ|w†€w€xz‚y…~ˆƒ~†{wv{{v~{{~~}zv{y}}€wz~}s}w}€z}z}ƒ‚}~s}t}}„k{vuz}u„v‚~ƒr€~}||y‰txq{~}y}€zwz}vz{rmzzv{wm€uu‚ƒp‰}}vˆtp€}t|y|„|l{q|v|†{„ysxvt{x}„ƒ|}u€vzr„wyyyˆ}jz{€€|m}‚~~ƒ€|z{||y{‚xsxqzwx{z~†wvp€}u†…|o€}pŒxŒ~t‚„‡x‘€zs†z~|u}|s€†vw~||}ƒ|xvuytz}z€{y}{}|u|ƒx}t{|x‚tu…Œ|}zr€…{‘€|„}{~‚}z€~lnwƒxaƒ‚{~xv{{|~zxƒ{~tnvtƒy…y|t‡‚vu|vyz~|svx€‰zn€ts„v}x…yxzz|y~‚v{‚}|}u‚uzg€j|€}uy…xxo‚‘s~uqqtpy|~{†x‚ƒsvw†w‹w„~x}{€wgzqˆ{zw~†ƒzr}Œ†w~o|ƒw|‚}x}x~{x€{t{yryzƒz~~s|€||y|{{‡xn‚€|}~}}„{~}€}€|}vx}y|xzƒy}~{{€|~~~z‡‚z~yx‚~z„ƒ{{m~j|x†s…}€„y€|z|}wƒ}|{€y|}xx€}{{wz~}{y~ƒ|y‚~€|~ƒx€yzxu€|z{z{zswvz€„x~€{{zvtŠy‚‚€†|}y}y~{ƒ|€„‚{€v‚w€w}}}{ƒt€€tw€€{~{z}†x„x{{ƒ€t€x€}{|{|‚w~‚|u~{y}~}~qs€w~{vyz€zx}{†~~v{„~w€x€zy‰{u|}{…t|~u„…€…||€{}€z}}}y{}„ƒ}w‚}{y‚|†‚~}z}|€}|}z{~yy~„}w~‚x~…z~|}|}„~xxŒ€~zz|†~{||w{}†vz~}}t‚}|v‚|r‚ƒ…€~z{ƒv~yƒ‚s‚}‚{~}{t€yw‚~w‚w~xy{„}x{‰||…}€yƒ|}y€}v}|x„}{w~yz€~z„ƒyˆ€~wy~ƒzz‚x…}x~{{~t}~p~z€v{~{z~}€r~~z|yƒspt~zqyyjpp|w‡xs†xy~ny€q~us€|s‡q{}{~z‚„ƒx}r€p…|ƒv€zr~’‚‹…‡[w9zuw{~tsz~uz}uz|~}}}x„}|ƒ~z~wt}y||ƒ~|€€l|}€†‹m|€{||x€r~z|ˆ„x€~€|w€~|~z‚~}{}‚x{…}~|n‚ˆ~uz‚ˆ|vˆ{€w…‚{‚}€~~|tz~v|wˆz}€x|{€{|}€}‚|oƒ„zz{}vy}y…}†{‚}{~y~ƒ}p{~‰ƒyuvt{~ƒ|||{ˆvx{~x€xw}‚{{“{‚x~…€†xyo~}{y†€x{„}x†}n}}ly†y|ƒ{jsƒz~st}}v~|m‚‚z{™{{|z|~~~|€||zz‹||~…y~~„}|{…|}y~‹yzy€}€€{tr„}y~Œ‚‚}…twˆ|w{}‚€}zvwŒ€~~z‹€z€‚yxi€€~x{|€}{||s‚„wxy||p€v…‰~}vz}y}z}x€~zwp‹prŒ†}z…sp€|}u}ˆwsy{x{w{|€~ƒ„‚|}{ƒu…j€rxr|‚uwq}|Œ‡x|~{|y~†€{†||uz~ysx{}vvuy|€y{|uj{yj~€€{{uƒ~|{ˆ}€t|u|vi}{|ƒ{v‚|}ƒ|}dp}~ˆzwƒ†{y}}ns€lsztrq~‚~ˆ‚s~€z~ny}Ž€{y}z}†||€z„trkr|‡}y{}uz}Š}‚||}xz}v|~y}‚‚ƒo†ƒt}|„~~}‰y}pt}}~p}|}~z€€{uy†ƒ~Žr‚~yƒ~|y€|}vvx~z‚|tz…€z‡‚|€w{ƒƒy|‡|{n||n|~€x~ys}yv|yz{yu~{z}yzw}yzƒ…ƒxnuyux}ty}yw}€}{†‚~~v~yuˆu~‚xzzƒo~zyqz€|||‚}ss…zq‚{„€~}xzyxq‰k~yvyv~|z{{—s‚w€rq‚zyz|…p~vŒwy}z~‹xtw€~†zsw„z|€„|~wwŒx{mzzwz~|‡x|~‚|{}|‡w~zІx{ƒ€xˆqzzy~y}„~v‚€€~{~u}€}~}}}ryx~x{{ˆ€{yxxy…|x‚}}v~z}w€vxx|uw}‡tx|…}y}z~w|~І~}}|‚„}u{v{xt‚‚|}€[ƒ|‚‚uvz~yq}}}ƒ||}€xƒ{|†wo‚†yŠ}|‡~‚}{}|{{v|€~…ƒ†y€|}y|€~‚ƒ{ˆl‡}€vu}‚…€~‰}~~y~~ƒ|z€ƒ€~€|rz~Š{ro~u€r~„ˆ|{„†u|{vp€|€yƒ€wƒsv‚~|‚|„‚z{z„|w€…—y‚|}|}{|~|tx}|p{‚ƒn{p€ƒ„u†vz{u}€|…}€u‚…€yo€‡}|…~†{~}{€~Š„wz}…|ƒzƒ~{|€qƒ‚‚zƒ‚€~vvztyu{z~{€€z{y|…„‚¨y|y„y€~~„||ˆqy}ˆ‚‚|sˆ{l~}|q}‡a{z{{{„|y}v~~€ƒy{ƒ||{~ƒˆ…~}‚|}y}}~‡~…‚€|}szˆˆ‚‚„€|††€‚{‚y}‚Ž„x|„{|}|z„„‚~nƒ|{‚r~€}z}y|x„‚xz}y€t“~~~{|ƒ}{z€„|{€u}|{rƒy{ƒx€{‚‚ct|~…€x||‡~x‚Œ}„€…}x‚‚|uj|{q~y‚„ƒyƒv~}}w~€wzy‡|‡‚€|vˆ‡yuv‰Š„}{„|}{r‚}{}{†~v†o~xvx|u{‚€x~{{tz{y€}zsxzzx|yƒz{~|{yƒvvx…s}rwv~~}|ˆt|vx†y€‚}…zz{ƒ`{€ogty‡‡‚„‰|…}||st}w^ˆ‚zzw„}yvn{}‚~‚|v{~t~}}u{~|z|s|}€‚w~|tzyu€~€||}†}ph€}‚{~z|~p}‚v…z{rwt„z‚‚|‚zzwˆ„u„zutq{z~}|}„‰}|x‹}y{~xyuso{‚„w‡w…~€zv…wƒp{{€‡€y}~u{z‚‡}t{||vv‡y~}„|„~}p~z|v„v~{€}……khy‚{~zvzw‚o{m{ƒxxxt€„x‚tƒ…ym~sxvwtxwrzxu„ypy|w‰€€yƒ€‚|||s€yuz}wy}u}~x„tnz{|m€ƒ~v{ƒƒw{‰uz|p|~x…}}„€ƒ}ƒy||€z}€q~w‚~~tvus}ˆxƒyyx|s|~xp€ƒyŒ{x€{{x~ˆ{~xx…yr~o}uzz{ywet}v{{|xz~w€{gŒxwu}€ˆ}rsyƒ{„}ƒv{}}€~€{„|{xŠ||{„lŠ{„}†tz}{v„uzŠ~|t‹{€ypl‡qt}tw|yƒ|y}|x€x{€}||y{pyz{|z†xpzzz{sy{{‚€„}{{ƒ‚†…w‚z{r„||z†ƒzzvx€‡|‡ƒ€}}‡}y~ƒ~j{{€s{w|~†~~{~„}ƒ†pyx…„w~r{vyœqupxxzŒ~„xvv„}q{„px|}ywŠ}xivŠ{{}vƒ‚v~†e{y{jz|wƒrw†v}„xz‡z~€s‹w{…yxu{{„||r}„x{zƒpzzx~zz†v||xkz|x„y|‡~w}yy€x†y{|€„xzy{~~xnow~z‘~„}~~~‚zz}}€zzmŠ}„r~~ry†xr…{€~xryuy‚syƒp€Šqwn|n‚…vxxw€||ƒutr‚xsy{ƒ~}yw|vŠn~yŠ~vxxx~€pm{ht{ƒ~‰ƒq‚rouvy…‰x}|„{{tz‚u~‡}vsu‚~|||x}uy¥|‹p‚{xzy‚„}w„…€ƒ…}x~‚x†}ƒ„ƒƒ|z}€wƒq~”†~vŠxozƒz}€€ƒ„}x‚|€€€wxy€w~ˆv|ƒx‡}|z~ƒw~z|lp}|t|ƒ~x}‚uy†x€z‚qw{z…€z|w‡~yw}{~€}y‚y|w€„z{}yqy‡~|„{}zw|€†”{|‚ˆr~u{‰wwuo†z€w{~xu{€zŠv{{{{}‰ytyu‚}w~‚€~~‰|}|}}{„}‚‰x{xv€w|†€{v|z~€xˆ{€u~„{xz~q“yw…x}†‚z~zwk|}x|„‚{yu…„…ydvŠ}{z~Šx€‚}~|~w‚rƒ{€xyszzzyz{~}v}v€x~x|ƒxs„{xsr’€~ƒq€y{~p†ˆ}wƒ…{‚€€‡|€~z‚ƒ}z€z_„|~zˆ‚u€}|}„~~rvww€Šw‚|€~|{zx~ƒ~xyr{xƒq{{{‰uy}vs‚p{x}Œy|’~‘{tzy}}u{€†}{ytz‡z…ŽVŒw”‰~}€}€‚~rƒ|~{€~‰ux‰€yx}||ƒt‡xzt†}yvzŽ|~t{xu}u~xm~}p|xu}y~}~qv~‰€|‰z{xy}’ƒ†}usvz{„z„{~‚„|r…zs‚{yx}ˆyv|‰w~w†|vƒx‡~y‚{|‚ƒv|y~€€t{|zteƒu~q}€~xt{…x}vq}‚|{~„wt|t{u}z{k~|m|{uwyˆ‚{ƒ‚wu„}zy~‡|x~i„z|pu€}„{„p…w‡l}y|y}x}‚…}{|†|wo…~}w{}‹z|’†~ƒ€{~x|ƒ{uy~}•sll||z}|~}€„|}}xzzqˆ~|||}{j~Š}z‚…‚‚x~‚‚qk}v~yxx„|„~x|u„„{v…p{€{†{}{~r~~|yz{€zzy~Š}~x„||x~}zz~Œou…p~€{||~ƒy‚‡wzx|x|‚Šxzz†}z|z|z||{}t}~uo}~u{|ƒs}r|n|~}rp|{}|‚s{„ˆ|w‚r}u~||x|wzt{x†xzƒ€ut†ky‚…z}}zyy}py~}v~‚‚u~™€uyyw~„v~ƒ}vu€|}n|ysŒzz|y{|x€}yx|†~p{}„‡{|}{~‡„~wvyx‚s|{}}~{syvz‰€{vwv€j{|„‡„xt‚€v…}ƒtz}{‡€}xv{v„ty‚z€“|w„w}~ƒ~€{€r}„~‚x€||r€y€y|xz~u€€†}”‚‰€~}m…†{‚vzy…€x…€uv€}|{ƒ{xƒ}|uŠzww„x„uy|‚zyy{‚x|uz…u}†ƒ~€uqkyq~‚£|‚}v|{{b}x{ƒ‰ƒ~}k†xv€‚}~v{€}{uw†}xz†“|‚‚oƒ|ƒ…y‚…}~}zxƒhx€|j||u‡}‚w{w‚€~p†ƒ‡€{}{„}xw~‚{~l{€‰Šv{s{~ƒ€…|ƒ‚|zu}x~{pm~€€{{…q„q‚|ƒƒ{ƒy}w}}{{†vvr|~js}{ut|z~yv{wy€|t~–|{{{||x„s|‡y€€}tw†w|ƒy}‰}€kz{sr{|€zˆ{z}}…{u}w|xr}uqzz€|~†{Žm‚„~}€zwŠƒ{~‚Œ~w~x‚||z~{|{„„‚~…w…{…}‚€gu‡~}{{€yzt|ƒ{tƒj…|rm|z}v‚|€q}x~€~w|„yx|sƒv€}}|Œ€{x}…~ƒ{zw€w}}ˆ€‹v€o~}€~xy‚€yo…{yus€vsv|ƒw|zx|{vyu}}Š}{zˆ~rw|{}~{x|„{€{o{{~}{~€l€uŒt€~{p‹kpq‡}…uz~z{wxwxq~ƒ€‚}}‚rx|w€x{||x{~|f}~uu|~yt}r{€~|~w~|„_|z„€u}‚~~yy{{~„z{}€~||z€„z„ƒ|ƒ~„~vŒ€‚{„svzvˆt|ƒz„y}€€|}z‰„uz{€€y~‡w~yƒ‡~†y‚~yv€ƒq€wŒ‚~}|v~}{z~{{|~w}|~€€m~z„‚ƒ{v{~{‡~„v~‚}„|{z‚tvw„}ƒ‰}€~}‚€x‰{}y{€~{w€}|ˆz}{{€ts~€{|€z{~ƒ|y~~v€|zyx}ƒ†vfx€z…‚„†|||„z|}|xuu}Š‚|wy_zv||†|}…‚‹zqz|„|y|z{x~}~p}w}~…€„{oz|…u€}€y€„}~~}|uxq{wƒ€}|uyxwxtƒy‚r~|}vx}v}…~€€x‚wz|}ƒz|‚u}‰{x{}}~€q„{~}}x}~~}}€}mi||xy„t{r}z}g€y}‚}z}}}€|qˆyzr‚v{|y{€r‚z}‚„|vz‚|}rq~„q}~r~}z}}kvx}{|“}|ƒ}|zw|ƒ‚{|t€pv€y}r{yyy{}‚~‡~~€}u|}z‚t}€z}y~y}tx†z€}Š}}}€wˆ€w„}ˆ„~~~~ƒ}~€~€~~ˆ‚€€s{‡z}Š}}|~|y€~y„€€‡|{ww~}w|}|v|‡|€zw|y{r{{yvt}y~znw…}}v~x‚}u{ƒx}{}~€{~}€oz}k}}Žƒ{||~‡ƒrq{{}|}y~|†}||€{y|z~}|„{pt}aƒu|~q{|||{~~}~q~{x‚‚|ƒ€u€||~|wr‡x~~‘r„~zo†y|t}†~x„v~‰{†w~|‚p|}y„z†|‚|‚}„‚x}€ty}zu„|}zƒ‹|~w~~ut}†ƒ}~~€‡q~x€tvqu~~x|z…y€~z}|}w|~v~~u}{€~€p„~}}|€w|ˆx}„xuu~€|}xxŽ}zyxz|t~vw|w|Šz†{‚€ƒv|y}ƒvu|†{oy~{x‚k|}|yux€€yqq€}{}uwwz{r{z‚€|~ƒ}z|~ƒ~|yjz{{z€~}z‚}p|us{ox}‡z||{w|‹^w|yw}}|ƒsz{znury‚w€}yy„~‰k„†„‚~wo}yxu|l‡€vwj~}s‚zt|~xv…zykxˆw}‚…{wƒ||~yyyv„uusxq„z~{{o€~ˆq~vtŽwƒz}y{…{€s|v€wz|uu|ƒy{yt|„~{||yww~{ƒ€z~|~}q}‚‡€yz€z{€{„|~{~ww…„†|~Œu`~vrz~ƒz„‹}w~z|yv}ƒy|‡€x|sut€v}z{v‚y{ƒ~ˆnƒ|€’{y…|~zxzƒ…‚{ƒe}‚v†…|zˆqx~{t}x~€|‚ƒyu„~v}x…~}ˆ|ƒyo}y€„ƒX}s~|v€xy‰v…{ƒu~{~slw{€€|z{|pruzy~p‚€hw‰yp{tp}uwswwx{€†vŠ|z}~{‚…}zt…q|z{}|ry||yw…x|‡p€x~|y||†€{|Šx‚vt|txw€txott}w‡}yxy{yv„o„wŒxy{vyuxzz}‹jyv{…yƒ|}‰}o‚}t…k‡}m|zq€x€ct~ws|z~i|od€€‚†t|ƒ†x{}|szqyzŠ€yny~ˆ}r{\zn‡ƒ€‚~z}vpszo€u~yttqy~„w›‚‰t„uvwuv„|x…}ow€…{wƒŒ{xpanjYzy{us‚€~…Qx{zz|‚ou„…zoc€i‚oz‡yqvvy~~‚szUk}m„‰}xupz€|}Rn|‚njv_hplq‡xf˜o€vv~‰}u|ht|fg~}{†Š{t…‡ˆu~{y{…kd}~{zx{tq}††ovy{p}z{€l~€„‘€z‚zƒ~x}„„‚x|stz±w|u~{qw{xŽfu}zˆƒˆnlgntizb|qz‡y~†}~‚†u{t…o|w‰x†}ƒ{wmˆ{y~|u›ƒ}„~tq}u{Œ}{v~hvw}ˆ‚|‹t†|}qx‡|x€~~tv€rp|zk|iŒˆ†uu~D|j}duy|‚zugy}}}vz~{zq›r„tvq{s|otx~„zVy‚}uz{y{|qz™fywyt}€x~€z€ˆ~zx…“r}|tz~o€}v}~„w{}~~w|{|{}z€y~|‡†¡yt€vw}s|z{}}{„|‹}zz„v|{ƒƒ„|~|€}xw~~}z‚wt}|{|yw}|||}l}~{vouyw|€o}€}{yz~uw†{xr{w{|Š}|ƒ{|{ƒxy€{x‡tŽ{y‡„|„tƒs~yyˆ||{}‚›z…w~wqx€€zw‚wtvw€‚{~|zw…„†~€Šu}€{q||}z|…€}sz~€ˆ~ux‚xuvx{}p}€w‡‚oƒv€t†ƒ|uz…ƒ€vy~{umwz{x|‚{}ƒ|v‚†v~o|y€}}z|y~€‹‚|~vyw||}zt}qt|}‚~‡~xz|v}y~€xsquy{}~}z‚xx~wxx}}~{Œws{}…€~|ƒskzsrr†~n{}z{}|~€}}}{x~€z‚‚zz‚}v~†„‡…„zvzƒt~wy|}ƒ}u~qv{{x‚z†~‚{€z†y€z}{†‰u}~~~‚†}~~‰}€{x†}€wxu{{pyvz~{~{€‹}{{zy€†‚zy€€ƒ}m|sxvo|}‚…yztu„{|~r}tx{y„|}{uz†~€€~t‡s{ƒ€€~€ƒxt}~|‚{}|zxƒz~}†€€|€wwy~„{‚zt‹}s|y~€…}|x…Š€nf…v†{…›~}v€y~„z{}yz~nl|{zlyqy{€‡„–}}ƒ€z€|}p}x~‡ƒ}z|t~~~wx~‚€~}|}yr€yx‡{x|oƒz€€||zw}z‚t€‰€u~”…‚€w|€€u€||‚u~~yz{tzrzymeo{ys}{z~yq|z~|xs€~{}|Š}|€€w…vx…{„t€|tywy‚zƒ~Œ„l{ƒ{†||}€ƒˆy€†xw~~}Šsz}u…€z‚{„|~yŠrŠfzw||~€…~{ux||{”€ytw‡}yzw}|wq}~ƒx‹‚}vzƒ…w||‰yr|{u„|{zs|z}~{zw‚y‡€ƒ€zuƒuŒ{zzxvwzm~{v~ztmyxut|~w{z~r|„x{‚~†x{yom||…€{€„|}~ˆ†y€yx~yy{„u~s|r|ƒ|…{}…||‚y|‚}xz‡y„{~ewr}€|‡p|xwtzu‚n€~||€z‚€x€~v{x|g‚€}{r~{{{|{~vzvsw{}ut{…ƒ„{l~}iy{{}|€rr|Šzcjz_‡§z~zq}~‚}„ui|}~y}r~|w~‚y|€y}€{{~vny|„|y‡{y}{z€‚€‚y}}…Œsu‚‚z{ƒv{ˆ|†bo}}tzzcxŽu|yz}~|_{s|†€tu}„}su|vr„}|z{{„€€~|rƒ{}spž„~~Œ}|~}l|„y~x†z€vb~„xv|yq…{~s}|‚ˆ~~€|os~s€{wy~{{~„z~ƒv}€€|~r{ykv€†z}„y‰{znw~€ƒ}~|~{|{|‰xy{y~y‚x|{zwz|€q}uop{o}z{z„‡‚~ƒ„„zoƒ{~y~€…ƒ|}|{y}€vyzv†w{wŠw|yŽr{€ztck‚~‚t~€‚v}{q~txvu}}y~u{~‚xz{zu{}†w„}~v{}l{q€{t‚…y|us~p€}}{{†}|yf‚wv„y‚{r|||zq{‚i|r~|€wo~~~‚tŽwoz}yu|}tz{}{v‚ƒ{‚wy|ƒ|€}x}€‹‚|tx}yvr{}€|€y|}yvz~‚|uy‰|g|~}{}€z}x~„zƒ€zo‚r€„†z€}}}€€x|Œz‘{ƒ‚t}~|}|w||€ws}y|{zzy{~{}x{|y‡s}…z~€~z~wo|}yz}t„}zu|q|~yyqŒ‚‚Šz{|{~{v|yvz‚|wzuy~|t€~qˆ}‡z{|px€}y~yw{yt€~s}}}€~p€{|~y|y~s|}w‚€|z‰ƒ|}}}z‰ƒt€€sfut{†{„y{~q||tkz}{v}~~{yn~t|{~t}}q…xy€ƒx€€~~~~~‚„|„}}~Šxy~€{~z€xx~‚}~€vnu~‚~|{~s~k€z|…‚y‚~|{}y{|yy€|}z‚yx„…~zyr}y€x†z|z{…~{xzz}v€~r~~~wv~y{|x…}}~pz||r~€{}q~z{y‚z€ƒ}o€uzyyt}{}~zz€|r|||~}yzy…x~{pu€‚j{€{y{~…m€s~€{{ys†~€v}w|p|xy‡~{€}ƒt„||t€||j}}~„{xvss|‰g‚}~€r‚~{~|Št~y‹„‚„t}x}s}|zz}x~yƒ|z{}ˆ|||„‹~~zx}{|}~{~‰{ƒ~zk}w†~t}Š‚}q€€‡}{yzx}ww€€ƒw}~|€zsƒ|‚v|y~qx|~|{…}z}€|wz}€}y€xy|xy€w€z‡||‚}|€z~~|z|ƒw{~v}~€€~p€{ˆw~{|x„}‰~~}~~|}„~€}x‚z}s}{z{{…v|x|~tr}|xxƒ‚{€|pŒyuƒ~Š}|y€||r‡{|o}{}{}}t…‚…†z~ƒ~~x||}‚z~„‹x€‚€|}t~z‚w}zrn{u|y}}zˆ{w~wwyz~xƒ}…sz}un‰zƒ~ƒƒy~}}}|}pwƒ~|z}q‚rwvu}|‚w~{z{}y~z}Ž~|…|y}„ƒ€‚}†€{y{€}„‚{€vjv{y‚‚€vww}ƒw{yxx„ƒv‡yu{tˆ{}ww|‚u|w|{…€€|‡y|{ywz~zswz{~x~uywƒ|}~x„‚~}}†y…•}ˆ~t~|—„€}ƒ{|z~€{~|a}{|}x}€‚|ƒl{|z|z‚||ƒ{|}ts{y†~•{xxt}€}}z„l‰z‡‚€}}t€|v€}ƒxuzyjxi|”}†ƒ~|~€{‘u}w€~}Yg|q~…rs~w€s{|{w{~|†„zz~q‹}~y|Švzs|„{{€n€ƒ{|hl{l‚‡}{|€v}|qp€}~€{x|~‚u{}‚ƒny|„‚x}v€€‚x‹‡xy†yxw{}q{‚~}}jyy{ˆ€u‹lzŠr{~{rxw||t|~`€|v†lwy{…s|€‚z}}‚}|s~x~}{~ezv‰€ewy€u†g{yxqz|y†~uwyvyy}‡oys…y|t{€wz}|x{……~{v{™‹|‚t|~~~†Š‚„p{kzw}|€~wx“wz…{xƒz~„s‹‡{~u‰yzwzƒ|„p‚}zy‰€m}y~xˆr|xz}n{vƒw|vsy†zys{€xmz|w}ytkwx}…v~‰{y€‚…{||‚|{ƒw{~z|†|p|{~}€q~‚z}€{z€}š}|zz€~‚n|rz|Ž„„xqwŠ~{|u€€{wzŽ}x}‚}~yy}{~„ƒv}|‰tv|sv~ˆvv„‚„†‹š|~|~~€‡w~‚v‚…ƒˆ‚u‰y}o{…z}{„}{z}xŒ€z‚ƒƒ‰v‘|}}|ˆ~s~†zzx~wv|~ˆq}zˆ}‰€„|~~€…r‚v€‚„{„zly|Œ„z†…zsx‡|…}€€‰}wy}…r€}}{~s|}|}x}{ˆ€ˆŽ}€|‰}Œz}~q~vt…}‰ˆo‡„€~|~}uz„{sˆ‚‹|~‚v‰y~x{†t{~w†€€ƒo}y{Šƒ‚‹p„||ƒv‚|{vƒy{pw~p€|}“}Šw}€w‹„…‡€‰}ix}‚{y|€x|}ƒˆ„‹k‡‚…xˆ~‡|z‡ve{~}€‘…‰{|‚‚}y}~…{u……uw{€tvo…~€„y‚x€ƒ~}~‡ku|{q…€z„†…xwu{qy‚‚vŒy{Ž}}€{{~|‰ƒ€}…}…ƒ|y†€su‡v‚ƒ~€€x}~z„›•{„…‚„‚z†}vw…}~‚}|uz…{†‚€€~‚ƒ’{€€w|}yy~t€z‚w„€{ƒƒup‚€}ƒ~{zzy€|ƒ€}}‚yz…€‰}‚z~~||}m|r~|}…f}uz}”~ywy~Œwy{€~}~|ˆ~…‡~‚y}x|„wy€~~}vy{{~€€‚„xz‹|yh‚y{}€vy‚‘{w||w~{~€…{~~z‡z„xƒx}~‚u‡†‹z‚~|ur{y†ƒu{€}‚u}‡~zx‚‚{|€z~|}v†ƒy}xx’v}{}…ƒ}~}xŽzzyz…z}r‘~{€‚{|ƒuz{z|„}}~x}|zu~‚u‚wƒ~‚wyzuy|…{€{‰}€x‚}z€„‚|}†z|{w„xz~}~€}€‡}y{zƒ|y}{‰€}{z}‚y{hzuzˆ|~yyv{y~{„xt{z}ƒ}‚~}xzwds|€„}‚{zw€}y{uz‚ƒƒ||ƒ|~z|‡r„u„x‚{|€||~€~{x~ƒt|xz}~‰}~xz|‚{}…{|s{~€…yw‚zs|ƒsz|‡€v~{}ˆˆ‚}|€k}w€„x„vws{x{s~„{€Žu|€€}z{‡j~‚y{|€ƒxwt~z{}~‚ƒv}w|z‚xƒsy€}ƒz{…zv€yz|‡x~x|‚w„zw„x}zt{swz}ƒ€ƒm{uz~‰”|]tx{hv}„w{{‚{ƒ€ytwr‚|}x{„|‚|‡||xw|†zx}zxz~|‡‚zrv…‡ž~|xv{p‚}w|}€}x~}v~††xuˆ~{€qzz€‚vˆw€–y~z€||{~{†€y}y‡†}~xx—u„‚|{z‚wƒ~yw‡~{}|Š}y‚r|xq}†v~}…„wˆ€‡Œƒƒ{s}vsŠyx~|‚}z€~|}Œ€}ww}vƒ€}u‚y€zz|‚|}~‚€yr}‚uŠ€~xŒzzwyxvƒquwzmw}zo€~}„|rxw~xy„tŸz‚{yz|w€y}w~‚}y€€|~‚uy€Šz{{}€q„{v||…ƒzz~‚{z€z|yx‡„y}~’‚„n‹x‚|{}y|u}zˆy}||x€zw€z‚‚j}y‚w–‚‚‚r€s|uzz}|‚{wv‚„ƒyw„yyw|~|~„|‡xzxsy†ƒ{}‡€€€e„ƒx‹}|{…€vzs€ƒ{‚w}~~~xq|r~€{v|ƒ}€}x|‚{zv{{~}ƒƒ}x‰‰y‚~x|{~y}‰…}ƒ†~……~{€ˆ~vu„y€sz{‹„u€ƒ`‡x€vyu…}zx‚‚w~z†z‡}€xŽ}{{{~|vv~‹yy|‰u€yy…ƒ|{ˆ~}~u„zˆwr~ky~{r~~t|‚~~~|„…}s€{„†~r‚x}z‚y}}‚~o{u€~{ou{||}|t…x|{|~„x~v…y„z{}vŠ{~{{|„~ƒ~„{~z‰€|y{v{rwy€ut||†v~†w}x‰ww~~z}rwy~~€}u€…z}u~‚…~t€z„|wzzox||n‰|}s|zyrt}s‚€€ƒw‚~vz‚‚~nw{€y~€{€u{€€s{~„‘{z€{u†~x}zuyƒ{xƒz†y~|Šz|t‚{v…sy‚Š|}†}uvx{oy„‚‚{x~{€–~„{†y~x{~~Štwyz‚†‰}|„}„‹uŒ†s}x~…‹|}|x‘ryp–‚}~ƒ€‚v€z|zzv|ƒ|„xwzyvt~wz{uvx|{~q‚|‹~€ux~}}€‚‰‚‚y~k~……|{|yzwxvˆy‚‡{{…ww†|}xŽƒ‚pw|‚y€|vx†‚€€ƒvs~ƒ‡„}s|z~‚|„~uy}xqy…r}o~pt~}y„x|tvysxz|sr‚{ov|~{x{q~q||}~tz~}oz€|zƒy}u{p†w„~x|}y{|€zyyy„}~~€„|{{y€„~wv{vw‰}p||Šr‚z}ƒr{ˆw{w|xu‚z’u€}‚{y€}~w}z{{|}}}{{st~~~Š}}zƒ~‚w€…z‡r†€ysxxs{Š||€xytmƒ€|}ƒ}~]yy‰rvvo}~{v€{x‡yyyu{x|y{€tqx~|€…}|€zwv‡j~†w|Š‚|‚{}|}~}|€{yuwu{z†xxƒ{~|xxvy…„}~€yv€|}€{|{u~l…}y‚s~y{|Ž~|{yƒŠy‚}€wz‰yz{~}~}k{{~|vy}}‚z‹~z|{dvkƒz~{‡†{{}y}ƒ{~|{~‚ƒ~zr‚vtxt…sz{~~}|‚€ƒ€€lyx„|~uwts{yxz‚w}y|{qu{{u{~†iqu€‡{y}‰‹~|€wfttzŠu|x‚|u}p|~{vy{ƒ|„{z„|{}d|xx{z†u~€~y‡}y|„y~h]}l€…v|~|z}~oy{{€u}~~|~|}oƒz†zwez}~~pq…€x~}z‚p{‚|o€ˆ~}z|„{|{‚sr€~zx€u}{t‡v}x~|}‹v‚~~{{~y|ƒ€|r€ƒ€wr€{ƒv{y}yzyyzw~…~uƒy}~ƒsy€‚zwy…y{w{…~}|~˜‚{|~z|x€y|~zxz‚€‰|ux}v|z}‰€‚|ƒ†{|v~z‰~x~~w}kwsq‚vv†ryv}lt{~{~|y|x||{zœz€|…‚ƒ|Œzw~‹€€€wk{x}„|„€€qƒ‹wy~wz~yv|€{~qx|‚~v}‚}}y{qxyz€z{ƒƒw€||z|z|x…„~|{€€}|€Š}y}zx€€|~u}†ƒtx…}~vx‚‚ymy{fƒ€wz~€v‡{~€…x|u…||v€uku€€€}|€m}~t~~}yyr}€~xx|€~{v{€nz{…}€l€myƒ}€€y{vy†qv~{{€‚€|…vvw‹x†yupxyz~ƒ~†‚z|z{~||~o|~x}‚…tzt{‹y~}‚}}vu‚~s~„{~{xˆv|€…{tztz{{{oyƒyuuwwz|~w{yx{{„|}}u}|y‚y{zƒst{‹yxyyzsyzz‚w…~‚y}p‚~‰‹‚|€„x‚||vv}v|w|{y~€`z‰sv{~vrx}~z~~wyy}|wn‚z€zzsw‚|z}{xxv~uy~}}o}|s€€~|}€u{v€{~|u„{~~‹u|x~ˆ„|…vƒ{zszy}}|{z{€}‚ƒ}|‚t„{€{zƒ|{x|xv‡|tux}‚j‡zw}ƒ||~}€uwxw‚}jz{€~}~}zp{v{vw€~|{yww€z|s…wv€vx‚|~„|z~{„€Š}}w€zn‚{x|vƒ}y€|{‡‚tyx}}ƒ}~‚{{Œx|rs}||wƒƒz€|~zyxxx}z|~}{z“w{w{{w{€zz‚|{ƒxd€‡}vxv€xmv€u‚€u{‚|ƒ‚ƒx~Œ|~}o|ƒu†}y}~{}x~~x|}}‚}u‚xrˆ}…€‚y‡{w†~xqx‚uxs€|€{{wwwƒz€„{—yƒ}{m}…xŠ|€{~zu}vƒ‚{„u‚{{…xy€w|yyŽ~s‚|…}yzyƒ€jz‰|€yqxzŠƒ}|€}z„„|v€„~~‚|ƒt{y~ˆ…z~yq…€vdvv€}n~‚qw€{yw‡“{‚€…~€xƒ}}}xt„‡…q~{~{~r{y{€‹€|€z{zw}y…n}|‚}xˆy{}z}|sv‘„|}ƒ}ƒz~|}pƒx€x„|}vy{x‡‚yu†sy€ˆ‚|y|…}z}xy€|{~x}ˆvz{†yu}{‚|xx~}xƒ„…w{wƒ{rz„xxoxz€|y}{‡zŒ{{‡yzˆt€z†…„z|u|wƒvqo…zq…|z}w…x‰z‡yz€{{x|ˆ|~x{vs~zyvƒx€uxx‰z~€}z{x|w|ƒv“g~w{ozy‚y{~z‚y~zy~xvzxƒ}y|~w||Š~„~Š|ƒ|v{~|Š}u‚n}}{|xy}zy}|€z€€zx…€†x|‹uxv~„ƒ{€|‚}~yrz|zy†~ƒ€~€z†z‚x}x~}uy•~}„zz‚zzv‡|~€|y‚ou~vn‡€}‡}~}q~o|~|~~xzy{}}^zy}o{€rŠz„}}rvz|||‡w~yƒzosuxƒw}xsw}{ƒ}ov|z|w†|x|z|l€{|€g…€v}|}~yzhzq{{w{~€†|x|z|{y~€u}€‡€}{~}‡kzup…y}ns€v|y€~~€b~up}z~€|{vy~u€}y~u|ˆ……{ktƒ{‚{}|y{„†}„|~p€~‚||†‚y~ˆƒy{~vy|ƒ{‡†}}“x‚€}|‹}~|{}‚||†w‚|Šzq}x‡yx{|†~o|y‹|ˆzw|€n{‚vv~w€y{}€|Œv€~Š~{z†|zny€‡rz{~t~€vm|{z~‚w‚}€}{wxvuylˆ{y|€|}x||}so}}{‘}tŒ{~{~z€‚…z|w€|{y~}r|x|‚yz{|}}…|„‚aw…}o~y‰€rv|x~o}{o‡yo}~}{vtyzt}}k}~y‡p}}„|z{xwzy~‹y|zv|}yi‚˜z€}zsz}|‰~x~ƒ~~}‚|€yv{}y„€…€„v|z{|x|s|x{|kik€}z}zwzo|z}zx}x|w{{y|~€y|y}{~€„{vxtr|t~w…„|zt{‡€|}z€ˆ€x†{y|y€}~yƒƒ„ˆw€}vxƒ†~}„„€ˆ|wŠvt€z~~wp…zz™u…ƒw}ƒ€q}xƒ|xwxŠxu|~z€y‡€~yx{y†yx|p‚q‚|w{‰…}x„v€ƒnyu‡„„z‡szs}~y~wŒ}}s{pzzuƒ{q}z{x}‚„s†€|‹„{|}~w‰x€€ƒyoƒ}w…~s‰‚{ku}xztty}}…~~†ztvy„}|{‚~ƒut~p|ux|z|x‰~ƒz||{~{yznzrz„q„{€~~ƒx„|sy}x€†z„u…Œy}ˆ‚{€yy|~xr}xz~‹|„~xw}€v|~r{y~}xz†|‚v|~xwv€tz|w}}€z}z‚}k‚x{z€{zˆ{zwz|‰{{~sz}}}{|~nxx}yzws{|w|}yr„wyn€|~|w}}sŠ€|{z{ƒ~‚x|ˆ~w}|}m…}~‡zz…ymzxw„ƒ‡zyul‘{ƒ„{}sx}|w‡}|ƒ†j‰xrx~su…x{|q{‚}„t‚z|h„‡vqo~{q}vq~€{t†‚‹wy~}w|‡x~vx}„zƒ„€y{zƒzz|z‚~yŒxz‚‚}|yx{xx‚}‚|€|‚|…{Š~|uƒ{y€{y‚u€|}z}{~ƒ€}ƒzz„|Š{mzz‚zx|{‚}u{y~z…{{†~y~yƒ…{zŠ…‚p€~„{xyz‡~~}€‡}z‚‚uv|wyˆ‡v‡†€oz‰‹‡~w~‚v~ƒ~t}{~xy‰s|{z~‰…€€}x‚~…{|~}{}}|wz€ƒ}vy€n}{zz€wxxuvsn€~~zƒ}‚v€y|tzv…y€u€}|ƒƒ|y|uy}wx~€‡‡‡|tz{xv„|…w€yqxv~}u‚w{~{u{qŠw|‰wju{q‰||yzfr‚†yry‡zy}w{v~„|€~|z||€r‚uyw|„q}|zƒ~{q‡}xt„y|t~tz‚‚}}y|x…|}~~†}†~}‚st{y‚~}ˆ}{v{x‚{‹uzw‚y{y}|…yƒ|my|„zzrrm~‡x€€€xz||t~y‚jl…€|€|~{Š~}}pstx{wu„€ww…zz€s‘}w}yh€{uvz€ƒ{u{|‚pwz}y{z}zw~„z{y{‡y|„mfm~’tqzt}yІz…zx}}}y€w|}{‡w{{†|{€yy|‚zŠz|”~€x‚uv}uy}‚|~{†{~|}v€Š{||x„y}~}zy€uŒƒ{~x}‡‚v}|||iyj’}v~}ˆuq‡z~zzwt}~‰wxz‚z{|z‚u€yz…}ˆƒ}}‚‡€yxkx€ƒ{w€z{wx†{€~w†|}y{}}zw|……‹o„~…v€y|†|‡~j}†~z|zz†…v{}}}}x{~u{n‚’~z‡‚‹{xs|x†u{p{z{z}{x|}~z}|„}|txc€v…‚ƒ‹s†{}…€x|~x}~x}}}x‡~‚yu}n}v}{~t†…yw‡ƒƒy{s|}†zxw||„y~„€||}‹y€~|xˆ}{v|wxz‡ƒt{xztx{€wut{‚~zw~|…€tr|y~{{}v|g{‚yƒz|†y}€v‹y„}wvˆ€yƒ{vˆ€~}~{r‹u~r}s{„vxxƒu~‚‚‚xyo~„}|„z‰rytuƒy}„~y~~}|v‚m…xzvvt~xwr|vvs‚vyq{xuswˆ|{z€q€|r~„{}a~z…{|ys|€ƒsy|{v€t|z‚v€€zurz‚}{|}ƒyxtx€z}r‡q}w}‚„€sw†qŠ~}ƒ‚‚p{s||r}~ryvww}lxƒ{}€ƒ}zyyx“{ƒ{z‚vqx††z~{qu‡€~{|x‹”y{s|v}x~‡zwˆ`vn|‚|„ˆuvyzx{xgxw~w€pqw~z||ƒv|xxrƒp}~}q{„{Ž{y|vq~z€yw{~}ƒ€…}{w{||o}††yvˆ|qyz{{~ˆ|Ž~v‚zz~wƒ‚y~r{z~€xy~|mqow}x}b‰o{}trv~v…t}‡u‚~zvƒw~‚}‡txyx€w|{}xaz}l~|}}}w}{{z|{xzm|v€}s|{‰{v{vŽz€yƒ~y}‹{z‰kl~‚~`q…€†]yu{x}vuu€~ƒ€†€v€~‚q€„{‚}}xkˆyx}}}uaƒxsr€w„‚zzo}ˆzgtwž‰{€~‚zstt€ww€|{y‹ww†€€z€|ny†W{|wu‚ƒ~†{}{wzu}z}}„€v…ˆy†}~}†{~€…€~‚{‡w~x|y}uz~xyr‡†|~„ˆtrsƒƒows|€|~sƒ~{w‚x~ztxy|…|‡y~z€~‚‚rt€‚€yz}wˆ}y‚ƒ||}yˆyp‚~{w€svx{‚}z€{}uq€z{‚~}wt|ƒ}yw}v~s…w}{y‚q…}zv{x„†‰yq€†u†}{~€€m‚x|vƒ‡‚r~y‡}…u~xƒv…|ƒuw{‚}€|v}‹wszi~{{||}s~o{|}„q{{t‰zˆ„€xzqwtŠsy{t‚~|†‚l‚~yzpyyƒwxqmpx‚w€‚{}u{yy|vw~v{|zv{w†z{z}z{x…Šwƒux‚{z{…~n}|~„…{„yw|{{}€„„Žu}‡‚y{x€v|z}w~…†Š~‚~p{|€z|~„{y{ysvz…sztiy……z‚‰|~|yxŒ}x}|mw|‚‚€x{|y…}{ywux„vwz{y~rxƒ…}ƒzx‚…ywvƒ}}€€rvw|{u}y~„{tzzv‚|…|€k~tto‚m‚xy}~r‰z{zz|„{{‡ur…x|‹„z}z{tvƒ|y„€|xƒƒˆ‚yu‘{‚„‚x|szwy†‚}}v}{ƒ~k‚zyz‚yz„‡€‡Š†tm|y‡€i…~z‡ƒ~„{}‚ƒ~x‚v}†ƒ€{}‡‡†€~y€}y~~Œzyƒz„y}r{w|Šv|Š~p†€€‡„}†tw~~{v{v‚€txyz†zˆ{z‚{{wow}~xƒƒju{{|ztrm…vz‡p}†}z‰~†ƒz€‰|‡ˆˆ‚‚}†{~vt‚xx‚€|~‚z}„}n}…€{…z„…u|…€‹†~€~u‚€{{q~zzkz€{}{x‚u†x|krvz‡}|}{~w~}Œv~ƒ~Šƒw~~yˆwƒ|x|~œ|ˆ|~xŒy…|xv{{wzjŒƒxs{~€z€t‹{†{…Œ~{~~k}}}|ƒt€yˆƒz‚wƒxs|yz~yzrt„xƒ||€yy†s„u†‡~€z~vy†„„ty|Šyƒvruˆw„w~zzŽx}„€|}z{‚yo|ˆz{ˆ€zx„…Žxv}…‡„‡tz~n„…t†€}|€‰€…€|~†…‚}}|…wv€€…|‡Š€‚|}{w~|vo‡{~x‚u…t†j‰||||tx}‚Œ}x|†‚vy~€}x™~y|‚ƒ}}†|w{z~p~ˆ‹yv z{wt†x~~v{tvx…~yx}g|}~Œq‚~}}€‚y~}pu}x‹‚~{}ˆƒvx~~€|ƒ{|ˆ„~ƒ}zw‡‚x„ˆ{|~€ts€…}r€y…}„vjz†t…{w‡…u}ˆƒo||~p}b†r…|ps‚{yƒz{u{y~{v‚€|u~p‰w}{z|w€„y€{up{~~€{|y‚‚~|x}w{~‹|€~xƒ|€tu€„|€zu{ƒ}y~‡†uv‚zƒƒz…‡z€}ƒ€zy€}~~}{yx‚xƒy†€{€pw~vzz€}t}|z~€w|„‰Žv‚|z}|€ˆ{z†~rˆ€|{†Œˆ€x€}~w~„‚‚‡€€ˆwqpxy€ƒ|zz‰y{~€‰tŠx}ƒ‰~xwz‚~…~z|tmq{w……}Œ|}Ž~‡…x~~y}u{ƒ~w}~~}{||x€y€ƒ€†{‡}~|•|u~x‡„||€w|w†y‰€}||}{€zixt~‹}xzz~xw„w€~‚}{{vu…yxv‡ƒs……yŠ}{„v~v€‚qxv{yy~~|ƒtw{„~…xz||}†~n||xx†w|€t‚~~x}wy{„}z€|x€ytr{}~two{qt€}|xtu{yu{€|~€…|…w‡|~ˆ€zv|t|‰z~yy}zn{€€|„€‰s}€}„uu|pxƒvwz{ˆ}xl„|~x‚y}uvu~wƒx{zy}m„…y{|z‚wyxv…w„}{z€{|yx}{}z|v}v…wxx‚h}rw|ƒzy~}}‹uxwx~|{z}}{ƒŠ~€vfwy†pt{{q‚xˆŠ„zƒv~ry~zq||y~ƒyuyƒ}w}}ƒ}z~‡|t‚‚l|ƒ}z}z†|{…xt€‚{y‚|}zy{z}|qq~~€}uƒ€z€ƒo~…„{ik}yq|{z¢|t€}x|Ž~~z~{ƒ‚mm‚|“rv„p~zy…ww~‹y|‚ƒ€w{}{v~wvtƒo}~ˆsu|{‚uy€ozx|uyy|~o}{wƒz|€{v„~€{Žo|yy}|‚wz†}y}x†„xx}~s‚|“Št„z|{|uuyuyxy}v}„|~‚y‚€x~‚uv„]~e„||y}r~xyw…}‡uvu„w{‰x{{~„w‹„…€|~Šˆ|Šy~€‡ˆƒ…‚x|zt„|ˆ|z}z€xyvƒz€‡r‰€v‰v{|yz~|†|z„uƒw}q‹q‚xvx„ƒ|z}…nzŠxŒ}x~„}„~zz|Œ‡…ˆ€~ƒ|y„xˆ…vy{yŒ{‹y†€zˆzy€zˆ†|}„~|}ov~wyv€~xƒt„—}~m…zˆv}€Œx‹ƒvu{}~†~||xy‚yt‚}|‰w€‚~~ty‚|~z‹„†|{€ƒ|}~{†}{~‚…}ƒŠ{…v‘y€sŠ‘‡z|~‡€„|y€Šo„z{{‚„}†zŠ€z}†€}yy‚}~z{‚p~vz|……x||yl„}{s€‚y}ƒ€€~ww}~~~n|yzkv„t†u|}†—{u|nt{„‡zzˆ{z}|ˆ|€‹t}x‚v~t~‡w|y€{|‚t{yƒ‚|{v€‹{{~…‚|ˆŠ‚y‰~|„€{‚|Œ„y‚~ƒ~€}{t}…|‹†vt€wzy†€{€Œ…Šƒƒ‚Œ‚t{p‰ƒy‰v‰v}~x|t‚„}|y„’~‡z–‚|€~vzx€ƒ|ƒzzr{Œxy€€~~‰~w|’{~z}s~p}ww‰†€}|up‚~v}|v|{~{{zy}r|z†zju~€ˆ„€w€vv„{„wx|~n{{y}{€€y|‚Šzˆ~sy{|trusƒ~{vuws€{vW|{|y{|‚}€~„ƒ~yvyz†…{xwzy|€z}yl€|o|pu|}|zs„|zt~}xzy}y}vyƒ€w‚{€t{‰yh„}q€v|ˆxyzx{wˆruvw}ƒ~v{}{x}†~€y|„€€ƒ|}|{u~†°†x‚{€uu~vy|}w„€v~|{€y{u€„Œz„y~z‚yvvzƒ{w}s†€€‚uw|xv€{zyuy}{‚z~x}rzo}}x}}|~€„z€ƒ{€{ƒ|€x‡}y‚|x€yo~…zzƒƒ~ƒ‚{}suytv~„‚ƒ|{}€t…}|€‚€z„€ˆ}{p…i€ƒrzs|„v‚€xˆ{x{ƒz€„}‹|xwz~~†w€}{ts}€x|}‚||…}xyƒ}€{‚|‡‰€{yssv|w‰‹€|}}|{}|r}vƒ€vrt‚…m}{y}~x€|z{zrz‡|ww‚~{w}|zƒr‚l{ƒv‡€}|Žy~€xoz~u|‚|q{…w‚|q†uxzz‰zw€}y{ƒˆx‚}zzl‰t}z~{|o€ƒ{unn}|w„}{}w~}x|}vz{{}~Ysx}k|‚€e}ƒ}x~}…~„v~~qŽ‚x{~j…}|„€~o„wt}y~|yx†z‡|€y{„|„‚€|}{}~qw~}ˆž€zy~ƒ{{}vzyu~x|‰}‚}{p‡€}€x|}Šyz}‚‡y||p{}x~}}~p}}l€€~yl}`~}|€€z{|Ÿq~}}q~n~Ux{Љnxq{€zz}x{z||y~‡ˆ{~š{ty}tzƒym{ty{y{|}s|~}t~{x{|~xz…†Šq€vsrvs}u}~w~}€{ˆpzˆ~yx•{…{}|}€~y…}‚|zky}~|t‚ƒŠƒv}€}„‚~ˆox|tƒ{u|}{}{‡€z}Ž|x|uy€z~‚z}~‚…w€‡ƒ{v{}y†|‚t}u|~‚yy|uz€|{z†e€~€y{„{„…h~„|ƒƒ}{~z}|mm|x}‡Š{l‹}x|‡€z[~†‹}||}‡…‚~€|…‰wt~u~x{}wu{|}vzx†v‚p‚‚z{‡ty|}~~zy‚{}„wxown‚|{yrosxz’wy‡z}{z~€ul{ƒw€y}vy‚vz…{|{y†wz}‹|‰}~uƒyr†}svƒu{z‰zzu~y„‡yz~|}~}ywz€vwƒ…vwvrv€}€{€€u…„xƒ~zzu‚ƒ†y{mnz|{}~„ƒ‚„}wv`v}xq~i†z€}tx}~ty~‚€ƒƒzƒow…ˆt~…w~z~ytw‚€u}|}|€ƒ{u~yy{}}{zx€ƒozm|€{w~†{zw€x}~zzywy{}Їxowx‚yyƒrx‚vvvq{ywm‡r||ƒt€|s|uz€z}€u€€v…yv|€{m{‚}xzn}vƒr‚u‹{{tzx|u}|ny~j‚o€u…zt}voˆ~yw}zzyp‡€z}hˆ{|†}zq‚v}{v„rn}~u…ˆxv†x‡uzƒ‡{}z~yptw}z~v~xs‚}t~…‡frsz‹~}o…}i|tsqxzvvvx~zЇ‡†|}zww{z„m€‡{z‹wz{{oyy…|€~€ƒpt~zuw€}ƒ{yy|xy}vi|€yy{€€jwzz|‰Š~z„ty†st~„l}}…ownt|tz~wƒ†y|t~wvswlpr€|x„€ƒwxp„vqyjmss}r„|~„‚~z~u„~|wtzucs{‚u|„|lsu{q}…tu†z|}t}pt‹€†|†x{}yytr~{ˆ}w}‚‚{ƒ|v–o‘{y{zxr„ty~€‚€ƒz~u†jx€q†{}‡„|}Šoy‚rwyu~ƒ|zo}Œw{€t|€z†q‡szww‡}‚|ƒ|ux}~ƒy…€€ƒ}ƒ}t|ws{sr{y‚r„z`s}~t‚{v€„y~„_y|‹†„v~€z…xuƒ†{x|}q}„€€„Z„vup„m„|qs‡ux~~r€{x~|‚{~yˆ‚€Ž›yul€}u{ƒ…|€ytƒxu|€s€‚q‡uv‰w‚‡xr‹wxw‡ƒpyz„†}u}wmƒœy~sv~pl€…{†uŒ}r‰€}y…‚p~€„s~Œ‰xzxjy}w†‚n†ƒq|}†x|q~sy~€€€v‰v‹s„w}~~w†€„nx†}xy}uzŒ}ƒ†vz€}‰u‚{~w€|}…}“„~~‰z€w|wŒx~†{|„y‚’‚‚‚|zxy€v}x„u{‚~zy|„v|†w~z||‚€ƒ{{€xx„~|{txi„€~~}}yz~ˆ|t{~~r†u{~z}‹z~tx}y‚‚~||‚uzv}~vc|wyzdy€{~y}‰fv‚kz}}z„z}‚x|ƒx}„…z~}‚„ux~}‚}z…}y|z~~xyy{~w|€{‚||}wwdtxw€z}|‚~‰wwˆv…v|x‚‡‚r…}qszuzz~~s€qy~}‡v~~€yˆk€{€~~~~l„„pƒnu{v…ƒ}„~x„y‘s|zƒz„s~t‡|ƒtvtxŒt}ˆ{|||yyˆt€~|~ƒrxw„yp„q{~w|tgy}{y~ƒ}…{€}{r{sƒˆ~xzw‡w€|xw|}|€}‚ˆq€‚ƒ|}z†u}{n˜t~x‚}„}~~|€†y~wq~~x‡w‰€j€yŒŠx{‚yz~rvuz‚|}}|uv}~}vu|{qy€p‡|~‚}w~ƒu{|w|{{‹~}wvw€ƒ{}vsuƒ{zx…{‚~zt~}yuz‚pzhvxx{ƒ‚ƒz|~z{v„ƒ…{u{x}~ƒ}|~xƒ|„|{‚~ƒ}{y|„yƒ……|sw{~‹‡xwuuyw{~so{{xy‚~}q}‡|~u}}x~~u{‚y‚x}‚x{}siv…{€{|€}z~||{€z|}w{„‡}ƒ}{yw|z~}z…v|u~€–‰ކx~€y|}nz{w‚w{~zƒ}€‰z}svxuv{{tyur€zr|€€‚vx}}}~|‚y‚‚Š~x|ƒƒzw{ƒx|†|~‡|{|zx|yw}|x€€ƒ~yy{y{‚|‰v…}ˆ|||xˆzz€z~|yz|†u}xy|xƒ~u~y‚€}r|‡”}ƒq|}x{€ƒ€|u€t|„yv~ƒ€ƒ…x|‚}~‚‚p{}yŠ}„w€€}n‚zxt~|uvxyw}~‚y‡}}}~€{€„yw}{ozxw‚zy~†ry‰‚‡{{|w}‰|}‚tx‰}z{w‹z‘‚‚zys†}tyŠ|v{|quov{€x~}Œ}z€|~wz|y‰q}€rzu|ƒuz}„x„€€w„vq„xsy|{v}„trw{ˆlgyw†txu‚|~|yx}‚|~y|tw€|ˆ{v{…‚}x{ysp¡‚{‚}|†‚…y}zz||zwr|~}v{v{xvw}}w}}yu‚|€wyjwo‚~yyƒ|ƒxw‚€{iy~€z{}}}}~r~z{}wo~„k|}~yƒu{x…‡z…‚zt}}i{||‚‚~}zxzz‚‘{~|‚r„xx€ƒzx‚x…€yy€{t}uzŠ{~~}‚x‰~€{€}|w{{s~‚‚|}}z{|{xŒ|{xz~…wx‹~{}yf„zƒ{z}z‰{‚yv…x~zy}s~|€|{{~{v}ƒzzz{‚tz‡„uˆ|t~~~ƒ~y‚|Y]z}€ˆŽ€sƒ|z„„x€}|x„~qx}tx~z}|€z‰€ƒ€‚z||~xwy‚Œ€uxq|}{€xŠ€t“}|~€‚q|u~w||s†€ƒ|‡‚‹w|s}}|ƒ}z€z‚|x}}‚~w€~x~…v~~‚wq{ˆpn€…{|†uv~€}w|yy~{z{|~y‡}ƒ‹~r‚‡~}xxh|{x}vwu‚x…s}{€€tƒsvwz|u|}‹zˆuy|‡}}z~}†~xsyz’}w€{‚‡z{}zw€€‰~{v„x€|ww{Š€‚}~‚}y€~|oq‚vx}€‚}~xu‚y{r€z{y}x|w€z†}u{vp|€{‚q}€{y||s{x‡Œ|~|~yzv{€€z|xy}„„}~‚z‰ƒulƒx„u‚sw†wŒz}x‚~„}€xz~„…y}w€€||}ˆxy‚€jp…ƒy~€…bw}†€v|{‚qz†}|z{„w|~€}{‚t‚|…~|{{Š…z‡„uŒ~|}{|z||y}€{q‚x„xzp„y{t‚}z€yƒ|ƒ}~|€ƒx}w‡p~o‚{x€|||y|Œ‡zx{}}c{p|~~wx„{}€†}u€y||zy~}…z„p}yƒ…ƒƒx}‚w‚{„‚xs“w}ƒ~}y|~„„|}{†„ƒ{}[~iˆ|{q‚€…|~ƒ€ˆ‡€€yx|~ˆ{{}|~z~s~€y|v{d}‚‚w{{}}„|€zsxxy€€|vzz„}|{~}z‚}y†…€qƒu}u|r{€zx…ˆ…zwƒ|Š€wxu~y„€ƒw|v{z|—{~…y{m~~€y~~~‚}{yzw‚p…us€ˆ†{{x€{}z}†yywv{{‚Šx^z„Ž„rv~€{‚yy}u{{ytt~tuƒ€}|y€r~|zvw{šy}}|ƒ…{y}|{z‚€…|…uŒ…„~x€|~{}„z}z€ƒwz‡p~{}€ko~{|{|~|{v}|{zŒ|~†|w}ƒ|‚x€†€~Œv†|}zx{{u||€„y~x€}zw„|ˆ†…}}|~„€ƒ{~{y}wˆy„~}€€s|z}x||€ˆx~z|y~€|}€†}„‚‡zx|{‚|}}ƒz†|~~sv|r}u~}{s~m{~wr|y„xŠt…}}~}zˆzy|y…}u{~€]…v~}x|‚v…z|vƒ~…}{y{}~ƒv‚|zxyz‡{w~‹~|sˆ|xs€|€}y€€}~{ƒ|Š|}{t€u{x|ƒ€|‚{}x{s‡†z„~w{v~}}|}{€|}|€{tvz€{„{|uzk}{ubxv‚|y€€q{z{q€yx{z}‰zy{|ywzwu‚|{~xz|vz‚~||zx€~‰x€}€~}{‚‚z|}y}|yw„†~{xxxƒ~}|zv~}x~€{p’xzg~}{||y}‡}y„~z}€„||yy}wƒy|ww{l{}ƒwƒ‚}{~{‚u~Š~q‚z}{y‹~…{vr~}{||y}„‚†wpy€qty~|‚‚€yƒ{~~|†|q~z|{v|}}{x}wuz}}~…x‰t{s€„ƒ|qw„z‚}yˆƒ}|‚{~nƒ|‚~{sp~„~ƒ„vzzww|zt}y|~zsx}~„Š~yvsŠ{}uŽ|x|}oƒ}ƒ|~ƒ}~|~vv{y{xx~zz|wˆ€~ƒ|y|€{|~€~‚‰~~‚…m{|||q{~…y}xy…tttz†€~xm{€}{|y‰{„|}wˆ|r‹v€}{s€|~y~€ƒƒŠs}}‰€|~|ixz{z‚zxs}{„z|€ƒz|zz€}u~ƒ€„‚xosz||„z‚rx€|}vp†x{‘‰|‚~}~„{|zw‚„z{}{sq†‹w†z€}|z€{ˆ~r{šryyp~{{~s{~{€|„€}|€ƒ{sx…‚|r…~{~xƒzw}yurz…ƒ~{€}y|zx|xz†u}uyˆ~zyˆz|}xx‚z~{‚~}{zv|krz{›z|{}z|€}|‚z}w~€‚}y{{y‚‚„~†{…t~|t~zy|r{z‚~q‡~‚}||yz€}z{„u~v‚|z~z~~zy„€v†~{€|d€x}z}„€zy~…‡r~y„vzzz‹t}zsw}‚}{~z}|ƒ}qu|„€{€€}s~tt~j{t€}‡|yt~‚‚€w€p‚{ƒyz|z}€x†w|{~Š~r‚yw|}…|t€yt‚uus†‚‚‡~}}}zo…l}{€|}€}{yyv|‚}|~x{€|}~{vo€{~wv|}}~€~~€|~p{{oy|„x„~sw†ƒ||u€sn|}}€vw}}€~{kx}yqy‚‚}w}{~y{„€}|~~y|stut~‰o}}{m|ƒqqy}„}‚€s{|~}}}~‡zwnt†pz~yx€€‡}}{€{xpy~nv}~}ƒ}~ƒƒ|t|}€v|ƒƒ{~z~~‚€}†|v|~†{t~}€…€~||~ƒ„{rt{zuzs}~|}|~€vxuwzr|u}l€ƒxx}x€}‡t|v€€|xv|r|~}z}‚y€xŠww„…v~z{€{}~z{‚u~z~„~ƒs‚u}xsw{‘„}w|}w„€uvr~wyy{t€ƒxiu„ny€s~€~{q‚}vpyykt~t{„}x|ƒ†{z†z}yr~z}„wt|v~qx|€…{q{}ƒx€~|u‚…}†€w}s~s|}y|upwlq|z„~~w„ƒul|qzz€vi}zz„~}x{r~y…€xotjxx‚yy}q|‚|swvw‚†y€}qdqppr||„{ƒ€{}[}p{}uŠszyyƒ|‚…x~ƒ€‡sxw}{zr{xoorw†r€p~~~w}ˆ„xqjwwjƒƒ}}ystj{ow}m{xwƒw|t‚}m{|}‚sp}z|‚zsr‚Œ€yvy}xu…o~}uwi€rƒ~y|~gr~}…tww~€z{m~q~~tz|‚g}wƒˆxzu}{|km„}}‰}w‡v~yyz‚y{z„~y|ƒ~{|yo|w}v{sw~|€cw†‚~u}wxr~uo{y}s†…ips}nzw‡„|‚yv`€yxn~z}~y~~x8trw|‚tuz‡uuvt|rur|vw{|}rwryvu]|zp}}z‡‚„yw…z…yuƒvsqy{|‚ƒunt{vz€ƒ||~‚xyux}t‚‚ƒz{|yzz‚~s~|{€rvwy{}s€‘}x€oz…{‚|…„yx†~ƒ}€wwyxƒ|~€€~‡…rs„vz}~€}~}|s€€|vw~~†zx}w~€‡}‰|y…wvz}i}}tts~‚svx~zyt|t‚y~}|‚{{~}‚oy~}„mw„}|~{uw}y~}|z‚y~xr‚uz{u~w}|z‚w~v{~|~‡zuxy†z~€{s~}x€uu€…€€|z‡z{x€‚xzƒz|}}z~{|‚pv}{…ƒsyvi„}{{‡u€vyry|yo}|yu}€‡„xzwƒ‚|y}uyvxz|x€~ƒƒ„y}yr}|„|ƒ|{x|z|}v~x}|{}{s‚ƒy~‚€z|‚}{v}~€€{yzn}~}~}€|zqƒ{Qƒ|w„z{€}r€y}o†vxƒ‚ƒ|}u~~|{ƒ}~j€‡ww„‡Š~wbz„y|zzt‚x~‚vvƒzx}€y~{}xŒ„urzyzy{wm€|‡{{z~Œyw€u„Šv{†ƒ}zxz„{‡z|vvxz~|}‚y‚~„|~€€€…†{k{sz{}ƒuy‚€~ˆz|qƒy„vxv~wwys~‚‚uow€zw‚}x|{vvy‚}y~p}ƒƒsmz‚e||‚~yr…r~{y„z}vƒx~€‰{z€{r…‚€v{ƒzt€v~s{z|„—ty~w~zˆx}}…s|‚ƒ‚‚Œz|rzwyy€‚|„~„}z}w~ˆx}~s{~wzv‚x€}~{……y{vƒwƒ€y€m€wy{€|r‚|xv€}}|}zƒ€€sƒ‡{ƒ{{s‚‚€y~€|yr|}€v}}€wvpyuvnu}€|…wyŠx‰‹}}z…uu~w|styz|…t{}v†{vy|‡„z{†y‚|ƒvtyƒ||}v€}„t}…t{z€wxr€vƒ‹‹€‰ƒy}z€zƒƒpy}sp‹‚yyyvvu‚€}‡o‰Œ|Ž~u‚‚v||‚~t€…~u‚yzƒy}|†w{t‚{w}|„z„y|ƒxl|zwuy|–{ƒz}}p…†„}}„~vzˆ€‚€ˆ|y…}v„w|zw„yz}v|y€r€}u~ƒƒy‚|‚‰|q‰tx‡‚xrz|€~vy†sƒw‡{s|r}}|„vultvzƒlw|y€v}~{‚ƒ‚s||ƒ|‡z~zy‚}‡‚©~rvvzƒ‰xw‚‚}„‚|…ƒ}‚~„z€„v‚|xx…~w‚~|{~w‰y‡x|Š}ƒ„u€|‚‚u}z{~z„……}ƒ€{€„„{‰€…€wu‚€}€€‡sƒ‚yƒ£x€‚s}ƒz‹ƒ}ˆƒ~x†}vwy~}t|xŒ€ƒsw€~}~‡‚{~’€€ƒ‚…‚{}ƒˆzzƒz„~‘z}‰Ž}Œˆy‚€vz€zp}|…ƒ}y|~uz{‡‡…~ƒŒ‡|{€~w|uyw~v€Žrƒ‚}ƒƒ|x€ryuzxp|Œ„|…w{…|v†…}‚~|ƒ†‚•r…|„u{{„‡†wu|€‹|t}y€…~xƒ|‚zv}y|†ƒxw‚‡z‡‰zz„xz~~|‚€‚z|y{}„|‡ƒ}}†|†w|||€}t‚…rz‡†ˆ|€|–|‡~…~€v{„|{„|{v€{|€}{‚}r’€|€|z†z„†~„„†‡‰}…‚~„}‰‰{|ˆŽˆ|z„ŠŒ€t~…~|€~|z‡uw„‚z‹…|†t„ƒt~†ƒ|{’‚’qvqxyv‡…„ž{€qxz}~vƒ€‰‚‚€‡y‰x‹u~‚ƒ€~w‰}†uzƒ€‡ƒ}€r~‹„un„uz|‚u}|Šy€t||ys~€‚ƒ‚~}v|sw€yzyv}xz}{…|ys|~†{w‚ƒ}{}ƒy‚u|}x}†yzgwz€~†Œ|€|€yz„…{„}z†|ƒtƒz{€s}zt‚tx}zszvtzx|~€‚z}y…|†€z‰z‚€}‚|x‰{€vƒy~l{{‚ˆz}~t„—|qv||€~|Œ}|{pw}|||‰€x}‚€x{x{u}x|zŽzzzmuƒ{u~}~~ƒ~vv~yr~~zx~zƒzz~}|„}|z}{~u{’|‚oz~}z|}}{}t€~‰u{x}~x€{{w†z‚xwzƒ‹wz{~~x…zzu|}~y€{†ƒ{w€‚{{x{vv‚„{|uy|€vy„}}wzz|y€€w„‰~oy†z|}w}{y~|v{y~~€|€{Œvvvƒ{zw}„x}s|…‚v‚ƒz}z}x„xzvŽoy}z~ƒ~s„}|~zzx~xv‚~yz}u~xuˆ|ztv€†}jvryy}|xz|~{}y|}}{€uv‚|{v~z€}y†{‚„}€€}|}xxw…~xx{{‚{ss{†|…r|~yy}w„x{x}{vzty{„†ƒ{€z~zvt{}Ž||}wy‡yyˆ|ˆ†zw€{|ˆm|ˆ…|xrox‚yy‡ty…~q}ƒyz}{xew|~€~}ƒy…zyuˆ|yyyv~y†r}w~~wz‚{|~xx{t|y„{~~‚w}‚u|z…~ƒ}šˆu…‰ˆ~Œqƒ}z‚Œy}x|€˜}|ƒ‚€~yxru}ytxzy€}px€‚x}}ˆ{~…„|…|…z|t{}}~‚‚ƒ…}{zy{{~…‚€nz|‚t‚}w~€~‚z{~v}{~‹„}|t‹}wŽyvs„y€‰zƒ‰ƒˆƒ|ƒ|j€…v|||sxyƒwrw~‚€{n}~ƒ„vy~}|z{€u„w€w„ˆst{‚|{o€y}ywr†ƒ„z~}{}x}{„sn~‚uzzŠ|{u‚‚|xlz{z}zy|hy‚{„||||{{t…n€€„}…†v€wpˆ}‘x|r„‚‚}|{„‚}ws~yi}‚†|txzyz‡„yšzuxuw~lx‚~‹ƒ}x|~}xyz†s†su„z}‡…~}|…€z~tos|rx€{y„|qvŒƒƒzt{€†|wy…zuƒ}‚{~}zy‹y…ƒxxy{n{n…w‚~u{{‚}}x~z||yuyy€s}{tƒyv€yv{zy‚|{v|…y‚~zo|w‚st‡~„}~‡ywx†w}†z‚zx‚zn|‡~{ƒszy‚xxwx~€x|usƒ†€u}ˆt{|z€„vhp|y„}Šwtym~|y‹„q€t}w}wwˆ{x}y|wxp}~yx}z€z…zƒ…~t|‰zˆ}t†zx{…z{r~{z‚{v|~ww{~vz~}‚€…tr}|{€||zz~„zu}{ƒy~{}|†~k€w‚tŠs~tz}m‘{~„}wzz|zu}x„€q|„z}{†wƒx}}os‡xƒvy†ˆƒy{xy„y‡€„r}€€~€{xy~yxy…w{z|yzxryv}~h{’r|y{{szy}„y~|~y†tyzvotz”|}…xƒlzzrzw}wy}€†‚m|s}ƒp{z}w~{}v}}xyzqx‚z~q{|}{‰v|€w{ˆ}†~{„‰}x{y}xv†t~Žƒ†t}v~}{z|u~†zŠy€|x~{}}€‰wƒ…|Ž{w{€z}w~|v„{‹~}…v{zx€z~ˆ{~tƒ~ƒ„~us~yŒ}‚}‚}€ˆ~}}…~{}fz|~wu}|v{~„v„Œ~r‚tn|„††x~€ƒ€{}~{‡ƒ|z|‚‚|x~‚‚y|||ƒz{~||qz…‚{|{„}zxx€„{z}}w|‚}zts—{~€„zzs{|~|{h€wy‰pxƒ}t}ƒ~ve|~z}{yww€|}€xv€…x~~~€|‚|zz}zv‹w|~s}}}}u{xyy~|jr†wy€|„|€|r†Œ}|~}|fz~{€ƒz}|y€‚x|{€|u|{€„|ztz‚|x|zvsŒz…€x|zxiz€w}~w€z~€}„z†„z|…w‡€ˆ}…y‡~~{|‡‚‹€€}k†ˆ‚‡x}{€‚€ƒ~~€|€q{|~z|yƒz„ƒ|}‚}z€{x|~„yx‚x}x}wz‚~|‚w}{y}}€v{w€…|yjŒv|v}x{€j}y|yƒw|sƒ{z|{…vzx{…o‘||zu|zywy€…v~~|y~|zƒ|zt~~u|€|{~‚„}vw‚}{€}z}€~x~‘v€ty…|…sxuwz}{v„{~rsly}€|€|{v|x€‚~z€x…€wz|{zƒ{y}{‡}|t{…v€ywl‚w}|‚|†~xy~‚{}{€|~}€rt‚€{|tz|‘„}z|Š|x„{y}…‚||zz~q€†‡xk‚€‰†t€€t}Œv~||€}~xuw‡z}‡s|…|‡wˆ|v{x„€~x}{v‚z‚|xzƒ}~z„ƒ‚{}wƒwyv‰|}xz}z€{y}}|r|py„stq{w|w{s~uy„x„}|||€{uƒ}}y}tuz€|~{ƒ}‰{z|}‚~|rvv„~}r||wqzz‚…p|y|pt~Šn‡|€€‚{{{yw€k|‰€z{}|xywpru|‰Šy€wƒv€xz…€w~}{‚€vyƒ~~}„z€~{{}r†z‰€r†~€……~{zy…|yy{wqy~…~x‰„yŒz‰ƒ}€|zy~„u|€~y…~||}u}u„€u€€}{vz„xv{{yt…xsqƒƒ{x‚}}}z{{wƒzwz…ƒz{zu~{ˆy|{z€€}{~zv…‰{z}xƒ‚qtˆw}}}z~y}Šx}dzz}}‚u|n{†…‰}yt}}}}||t~uŒz€sƒzov|{}mw{}{}~y}y{Š~}Šv||{y}}|xztu€|v|{wy|{|}‚„|zx~uz€tqŒzu~}‚~}x€}{|{ƒ|}z|€z}|}y~~~t¡€~zp€r€{x|}i„xƒ|}†~‚azxu|„u}}|„~}v~}|}xyzƒ}|~v€{~vw~{}}~{w}‚y†y‚{wx}~ƒ}}}v{||~‹~~}}v…Š{~m}~y€„{~|}}~|~{~z€€yy|ƒ|ˆ}ƒo}{|…wƒ|x}€|z}xw~}}~}}~|zzzxsv{‡ƒ}t}€~|w{€~€y|}|z|t†w€s||}{n}x|u~m‚„~}}yz{ƒ}|w~}~€yƒzrx†ƒ{ƒ|}~||}€{Œކx}r„}ƒ‰p‚}~xoxz€}€„vvi}x„}}|{tz|v€~~|||ƒxz€‡|z{†ƒ‡~u~|z{~z}‚uy~}yw€€vzzr~y}y}…~h|z}€}u{‚}ƒ~~u}€d~ƒx}o€y{}|z~y„{€€~y{~sqy~v{}{sx€{~z€z‡xy„~€y|‚€~zzxrx}ws{v~|€ƒ}yr‚~q|z€~~t„{}‚{}xww€q~~ytoƒs}trv}~|{~{‹v~€|{€xvx‚y|qy€w||}t‡}Œˆvz~~z}v~{x‚{v|{z|}„}}‚vu}v~~z†‚ƒp}€}|‡}~z{~}yvy{v|zŠ~}|ztƒw‚}zv€x‚u~z€€~{}t‚{r|„€{{y|„{|{|q~yy~||wvwry€y{zz}y{x~‚ƒxx|{{k|ƒ…z–}}„~}z}}{…r†i„}||€ˆ{vt{r…yy†€u{uuz‰w{{}ƒv†…y|yq}uwƒ…€z|zvq~v|}|zwx{o}{~wxz|~ywz{„}‚r{}zz…€v„€€oE{y~u‡{v}€‚vs}z{yz}~}}€|}x|u{w||~€{{{wzz{{„z†|yxy€~{}‚|zyzmv…ˆ~ƒ}€z}y{€oivw…~x}‰wt‚~{}xrq~v||€y€y€‚{†|€swvv|}~|ƒ}€‚}ˆ}z}usy~|y|~w||s‚}ns~€{y{}~}„€v}~~‚wv‘€}z€}“€€}zx~z{u|€‚xy}ƒyx|~u}}u}~rv‰yw‡z}t|{ˆw|„u|‚y}x…{zx…‚{u}€‰~z|yx{x~{z€{yz~€‡‡}yu€€{x‡€~~|o|‡‹uzˆ~vy||}‚~†…x{~z|}v€†~|tt{|vw‚ƒxzm{…|Œz}nzz{t}~w}hz‚nz{yŠƒvtƒt‚zvoo~v~y{€y~uxv~‡€~}|}}{†|ƒx~sŒ‚‚~uv}}†}€’{†{{v}|x{zlz€|s~yx‚}z{wv|sƒ~`{€|~”|z|ƒzywl€~‚}}~l€o{w~|xz…}~ƒ}y}~}}zer~~}|{q‚€}‡o†tjn|z…y~|{y€Žkn}}xw|~y}~w}‡z…x‰x{|€}|~}y{€}|ˆ|v{|zx€|‡€‚x}sw|u{€x}|{ƒ„ut}w}~t€xu…v{zs~y€|yyz}x€„|€ƒ€|€~y|z~|€v|o|˜{}Y~y}{}v€„€|‚y{x|}z€|~~„{‚{~zƒ}{x~x|yy|†€s~wx~m…|t|€}{…}ztu{‚‚‡„y}wy}Š€|~}~~{{x{€~zl‚mw|wxu~||u|~|ƒm€|}yzw~~|{x}|„€z€||‚…ƒ€yw~tu{‚tzu{~}v{}{|†|‡„z~€z~~y|xw€{…x~}„{{|~z|}y~||lzw~u|z{yy€{{|xx„|z†~}€~|{uw€‡€}y}||„}{ƒ€}{~}~†t~vx€€€x€~zwƒ}†rŽ~w„{}}}}{|ƒq}vww}~v…{‹„}y~|x|{|z||€z…w}s}zt€|}yy~zz„{}y}{|}ky€s~…w~|y|‚}|v†zy‚y€„†upozww{x|€}z~~ƒ~{zz€|lˆ{y}}qˆy{yxruz{uw~z}y~}ƒ~{{zrv‰‚ƒ€s|{z}{‡|~|{}t|z||u}‚~~}vx~n~o€{‚||twyx|~zu}}x|{ty€v~€v|w~y~|}|€ƒ€ux}t{~|}}v‚|ytƒw{{€w‚q{~wv†to{~|{sx‚zy{€y|wy}€}ƒt}y„kˆ†{‰t„z}zujg}†‚z…}‚u~su~‚}„€„{~wq€|p€€|}€{~ƒ€…€}wv—yr~sws€xlx{xxxw|}€€†z{€wq|€{|v|q|}yz~†‡uƒn„ƒ{t}y‚…vnz€|zy€z€y€zx{‡z~~„~|…{~x†„{€€tˆ~y~€™}q~|~„x‚qw||„€yr~zŽƒw|z†{€q||~||V•…}yzv†€|‚€sv€zxtr|z‚}€}ƒ‡sz{~‚~ƒ{}q{€•uv‚j‚yy}~…w|ywzxx‚|€x›ry›{{ytv…x†‚uv‘y€†‚‚}{}‚~{ƒw€}uzt|„€€zxƒy|y~p}{„zu‚v„||y}~ywys|~~xorz}{z€…‡u…x{x~}}ƒvt‚‹€xu|x{wz€‡t…}{w{|~†€wu|||~‚zqs}vu{€‡}ud|}‚~€€z}{w€vz~zsxˆ€…{zz}~}snzxur{zw‡ypus~{{ƒ~‚€oƒn|pzpv„‚v~v„wysr}‚ryw‚†{‚sxsp„{yvwv‡s‚}~}ƒuz€|{v€}}y~}s‚k‹}…€„v‚~{y}}|o€oyu{‡‚}}|~Ž~y}|{~~|u|}y…‚q‡‚{z|‚‹~px}†~z…ˆ{|„w}}‚vy|t}‹v|yz{|}{|{y€}{{{}}‚}~€xyw~v{qyw|z€y~}s€}}wyu}~x~zw}|Ž}‚}z|„Š}}wyyw}…wv€|}z}|yy|„{zŠ}}}~ŠukŠ}|{~z}~y|y€„€~}|uƒˆz}}xz~ˆ||~r}|w|y~r~xwu~€{y}{yw~w|v}n‚~†u|y{y|o{~€}wzpq‡’‡p‰Œ}zz}|€xy|€|ƒƒzf}€rƒ}z|{z{}p}}w|}‚qn€{}y~Š€€~y…xrf~|~|~v~{z…}~z~ˆx~z{~€tw~€|wu{€z‚‹znƒ|}|t}†t‚}y†}}~|}}w|†yz{}}y{}~vs{|||tz€}~€z~|z‚€uzw€y‡{ww€u{}€{w†}}}xx{€}Š||‡~|{z}xyvwfxw{|€n‡|‡‚y|wvv~}|‚}w€ƒv~|zx~}xt~~{k€{„yy‚w„ƒ||{}z~y{y…xƒ{y}ƒ~v€‡}|sx€}t}Ž~wƒ}}v|€Ö†|}…€zzt|†z|yty~yy…x~}Š‚}v€{ƒ}~~{t|†t~…yzƒz{ƒ€„€z~‚{ƒƒ~xz„~zo{z}vvr€{~v‚{~~|{{{z€vx~u{{}ƒ~|~}z‚}ƒ€wx|}z}~z|u‚‡z8}{€zu€t~yvzzx‚~|ƒ|yzwuƒw†z{~z|„|w|q„}}|~xt{€¦}„~„|„Šz}}}‡~{‚w…€x{‚~~„wxyzzzzƒ~w}z~zv…{}xw€|v‚ƒs€„vwyvzw|~~~u~…~}u†||zxzyvy}~}~|xv|€vr€~z{~z~‚yz{{}m€x…{y~zxz„}~„‚‚sqpz€€s{qyˆz~~z{|xw}{~‡uv|}v|}tw‚}t{‰‚x„€~x€z€}vwƒ}yxxuyy€w{‚~}~}y„{zz}wtq|v€z~~||…z}~w€ƒ…y…|…}y„‚|{}†€{w|s|px„tz}‡zs‡{ts†}{‚{{{‚yw|{zyŒ}ƒ‡uvw~zx|xz…~}z~w}~s|su„ƒ…k„~y€n|‚su˜‚Y€h~ww~‚‚}z~‡q€€~€‚І€‚ƒg„…wy|„vvt…{yrtbo~y†„‚…‚vƒwmƒƒv}‹|„w‚}yr|~‰‚€ƒƒx|xvˆ~{}z€t‚~rt€}|w‹‡ƒ„‡w}rƒ€z‰{wƒ|~{|{}‹||~†}}}~Œy{„pxy„ƒƒ„~z…€‰p€~|{ww{Š~o‚‚‚}wyˆxŒ„|zp{}zŒ{†u~o~€„{€„~€‚y‡€ƒˆyvx€‰~{vx{€{ƒx‚}ƒ€}tszyys~{xy|‰ty}zu‚v~j‚†|z~Š‚}†…ƒy€}r†{u~{ˆ~€{‡r}z€}s€{‚Œ}‚tˆ|a|z‚€~xpz{„}€||†„Žu}ƒ{‚u||}zy|v“zynw€€x~ƒv}ƒyŽp~zx€}|o‰~xqxƒz{{|z|€|Šy~z‚„uz‚‚zrt}{vx‚x”’}|~}um}zu“xw}y„zƒƒs|}s€uxxy{‚zvsd{t‚€€oy”wynxywuq‡y€v{~„ƒ€ƒnx|w}ƒtƒ~{wt…‚yzz€}zu„vwy~~}wu~€|‰ƒ|‚|yi~ƒu†oŒz}}{wy|}€uu„~x}t~~€€|w‚ˆ{|ts}‚}€ƒ„~w~z{ƒz{‚~pu|‡‡yxvzyxzZ‚{|zyˆzt„}{xx~sƒ~|ts{{…€ƒxq†~ux†w€{{~r|~„„„wx‚ƒvxv}zx‚n‰„~{x~uvvˆ|v|‚qp…t{}o{~y}‚q„€yw~zy‚ys†€{„rz}vt‚€ozu‚zy‚w€zs…s{{xƒ}{s{}|z|{€xvo€p|z|{zrz~w|xz}†ƒ~‚|ouˆƒx€…}ƒwj€xo‚wsŠzqˆ‰}}‚~xtnyy|s~}rxx„{“r~†w{u‡‚uwu|vw}|vtzqz‡‚|‡‹……z‚y|uz„zƒx{{~}v}x€}yy{ƒ…€€l}x‰„xvuz†¤o{{xƒx{z|€~u~yiuty…xrqvƒu|‚|zƒw{{xxz‡|xz|€yz‡m„{…~p‡€zy~‚w‰x‡€z€€„q„x€w€v€}€€†~}€“„|mu‰‹x}zˆˆ‚~w€€€y}}ƒ{‰‚‚€‹|xsƒ}€€„z}‚~x{}~fk†w‡„~zzwt}vso{ƒ}||ow†}x…€€|sƒzƒŒ{mqytw~tyy}‰~}y€~…€|v†yz}|…}wQ€||}~sqƒ‚~y{€ˆ~}~{ƒx}…{tz|}j|x|rŒ~‚}u}zy‰yrr†}v{ƒw~€ƒ{ƒw„„€‚ƒw}{z…|y~€wƒx‚ƒv‚uƒ}y~“„€|ou}ƒx}‚vzzyut}ƒ|„…~y€vwyz|ˆ†wu„y}~~zzz…yrw‚}zy}S€s~|~f{‚u{vƒ€~„„zt|~m„y…ˆ}ut‚}u{u„zt{u|}{Yy~‰}€{…x~‹~{{hˆnn‚‚~ytt}…„}…x‘‰yv…‡†‰s}ƒhyŠx}~zxˆm{uƒz|„‚{x~z‚|t{iw|€y‚pv……}zz||yy‡}zpz€q~|…v~|w}|~€y|y€€ƒyy||‚‚t~yy€€}}…z~xttt€t‚‚€zuƒ€rŽ~{|z}xzhxyqv}€{|€v{~|y}ƒ|~x{vyus~ƒ{…}~yzz}z}l~y}z„eu}}~„’}u{~‚zz~vz}Š|i~€wz~{€{}„x…w~o{~v†`x{~|„z‰x}‡v{n€}rxy{ˆ~~‚~nw|y~‡w‹…x|m~‡z}„n†zi†…Œ}~uw}ƒ{€q}y{y}|€w}y}‚‡z~~ƒ‡x~~€~|ƒv†€}y}Š{{~}|~}i}~q|€€ƒzv‘ywy{lw}~‚|w|€{|h~£€€|{pum{‚y{z|~|‡}}~~‚{‚…|}{}}{{~k{|„Žz~|y{€‹z}uz|{~~}z€wƒ‚|x~}ww†y{uu|zz{€tsƒ}‡ƒˆ’|v„{€}y}_…xd}xx€‚}}{€q‰}mzw}wƒ||wzyyq…|}…{y…~{vƒ{~p|||~yr€|z~uxxu…~Ž{{}~z‚|xx€y~|{p~tq~xq~w}zˆq|ƒ…kuynvy’ƒ„~z{||}x}~uzq{}uu~y€qpuy€†|v}~‚z{x•tw}|~xxwƒw{sx}f~€~|{€|r{}|‡z€~€‰}~‰~{w||}u|m†ƒ||€ƒ}}z|‚„{xƒ„ƒy}|~‚€z~s|„x}|utyw„x‡Šrw€ƒv|{{z}|||€~ƒn¨v‚{yw}zx|v}}ƒ|p|zvy€‹|zu}}‚yz~o~|www||‚{ˆ|y|Š‹|{y|}w|wƒwtn~ƒ|to~s‚wy}}€y}€`r}y…}v{i~ƒ{~m‚{s‡~ƒ|~w}|~~}~|y€ux}{{|}||}`}vx|t{ˆs…|„Œƒ}z}œ{}‡{w{„x}‚Šƒ{ƒs|{z|}{€ƒ€x}}tˆ}wƒ{|y{uzz{x~z}z~w~zr‡zy}zyƒ}}t{ƒvw€xx~w|k~‚~}ƒzvrjvŒƒ…z„j„€s{}|r‡xy‚{vwy„~~y‚…|w}€}}Šx{|vxq‚|zx~xzƒt€ƒ}†}wqj~up€tpz{z|€pz}€z{{}€€„~i€|||}}sˆ}|y€t‚‚x|om{qww€{p{}j{|}€„…~|€u}wut|Šm}~‚~~y~y€jo|~ƒ|ww……}~y|w†{m}mu|„~†‰~€z~†|€yvyr\t~|x|{xyy|uz‡z|€~~}wz{y}zv|u~{‰~€‚|~yƒ~}}|~€ƒ}|vws‡ww}y||z~{‡z{ˆƒv~~w‚{yr|}}z||†}~v~‹vwjz‡|{x{~vywz|}„ƒ‡{{w†|u~…n}~~‰Šy~qx{{‚tpv‚€{{t†€€{py|~||~{‚|r€}„‚z„x}}u}x€a…y|}|~{|€zŒ{}yˆ„~y€||~€~‰€~v~~}w‚|mzx‡p‚|{z€}}{}}{wzz€|tyƒsz{yu|w„}Žr~€{~~z}qx€u|xt€|q~‰||†s|||‡„{w|~}|z}}wyƒyu„||}{z|€w}o}}n}r~}xrŽ}€yt{‚zt}z~„srqz‚}}zv{€q~€vu{}|}~ƒzxwz€xy‚~~}}s‡|ƒ~zyp~wƒp}w|{~yk‚‚{xt{x{{|y|x‚}v‚{€tzisxu‹{{vz||}x}}…€€{ƒnƒ{~ux~{}{{w‚ƒz{xxx€v}x|uw||}x„€|xyt{zr}w‚ƒyvz€}y…‡uƒ{zyƒƒ€~}†rzyzt‚{€‚‡t}~†x‡z{}†yŠux‚]ƒ€wt~w€{}zw}w‰{‡|€†}}u{~…wŠ{‚‚„}}w}ˆ…oq€x{z{xy|tzy‰wt~~ˆ|†|{{w~t‚y€|zŒ{€s~€ytw‚‡€„„r~rzuvŽ~}†}|~‹|Šsp}Š‚{y‰txuy{u„…||z‚€„€c‡~v||vt††xzs~{}‹~ƒ~y|ƒx~w“s}|yxx{|us€z‚€{}€|Šyˆy‚y~wxw„z{ƒ†~€{zpx€|„yvŒ~{}{n€‡…ˆ{x€}ƒ||wwuu„x||t…v‚}~†ƒ}~l€yr…|t}zƒ{{n†r„u€€}|}~s{w„zƒŽ„‚|~y~{r‰…}wƒ|w{‘w|zyy‚ns|{p}…z†‹zx|ƒ€€sˆtz…ox}‡…w{‡{{Š}}ƒ‡~ytyz€ƒ‚~{x€{ry}||‚‰jy€™ƒƒx|qv…‚u|x‡‚~‚tu{‡|y||„}{zx}|xw‡{qyyzxw€xt€{ˆ’†y}~|{xy~{{uz€„o‚~‚{‚‚‚{€ƒt}u~}~z}…€~|~|‚zzvvxv‚}y‹{~u{|u~ƒ{r{|}†€€‚vz€€s{s{}~z{|€‚wx}ƒ…}ƒz{x||wvuzwzzz}t}€y~v||}}z„{}x€z|~}}€ˆ{€q{v~~g~{yˆ‚sy†~„}vz{}€€wz€{‡}~|z~{tyzƒtz}|€†xy‚xƒsr}y}~}~€‚|~}}€{rƒo…{x}}zy|}zx|~€xm‚ƒx‡€{‚{u‚swz{q|ƒ“‚|y~€}|}y‡…ƒ}ƒ|z|{{|}yy|}vxtz{€wwy}t{y†uvt~‚|{~€~xŠ{zw‚p|qƒ{un~|z}}w}l{ˆ€n|~~‚u†sw„}}~„zzwzwv}x}€ov}{{~z„zŠxo~€ƒyx„‚||yz‰v~|‚ƒzƒxw€zŽ||{zyˆ€z~}~€}{qt|}y{~†xz}‚zz||~|yƒ}}yv~€~x‚‚„‚w|€x~~ny€„{}hw}~x~x|z…zw}}}€„hƒƒ€x†}‚|sƒw}n€~~|}w~{~x~~~‰z€}}y|xx~}|}…}}r}{xk|uzzŒz~}v~zz~w‚{o{{~€y†|{€~}€y‚wt…|ny}€›}‚sv|ƒ€}mz|‹uxo‡{t||rw{z{Œy~~s{{z‚~|w~…puzz}‰y~ƒ}‰zy{vm}‰q~|…{„z|~{€ju{{~|tƒ~~€m€{€{|~ƒ{yƒvtƒ}|zs|}z{~}}}~s|~vww€ouywtzƒwz|d{€}{~{zy~|x~o‹w€~zz{}}€t|~Š‹|zƒ||r|‹|t€vƒ‡z}‚}x|yyu{|€…€|}z|yz}~r~wpwty…~{}€ƒ€}z}{x{€xwyrxy€~|~}{}†€r||€‚|}{Šw‹}z{y{ux}€z€{{r€{}‡ƒ‰{~}wvu‚u{€{€Žwz€z~†€|}zs{‚{|x€{ƒ|z|{rv{€x‚q€j|{|wu~†‰ƒ„zy„ƒz|}ƒ{yƒ|}~{‚w~xzƒ‚~w}{ƒ‡|}|ƒun}{zxxx|{|{wy~€{}€{}xz…o{[~Šyx{{ykyzp}~yj{ˆ~}qr{zkz~jl}~rysy€€vv|u|€trkzzw{†wƒ„rwys}€w{€vvz~|v{tzwtv‰yzp|‚{uj„~…{€zoyz~u|quzƒ}mU~~pmu~zs~{zƒ…v6]w‚uv}|x}lffŒz}‚txz}‚bq~n€‚ƒƒ|ly„qy„€|}r|xt|y}}„…xy‚}sxil€t}l{…yrsvt€}r|x€~{}{€{~„‰}{~|{ˆ…yyƒl†uqz}o|Œ}‡{q~|lwzyl~|}kWsysvx|}wxƒv|[v||x|xƒƒz|…h‚vt}qy†r€t€pŠ|uƒtx€‡‚{‚‰ƒt~~ƒ‰{|wzz‹{tzwwm~zy„uyyƒzˆyqz‰ryˆwz{}{€z}uyuxsh}~z€zo|~zv€xz{zsre~wvƒ‚u|€yu{Š~b~svv„Šlzyq~~v|syuqgv€|wsz|›}vmx€zuxyqw‡|~”x€vg}|vu|xm|‡tyv|{sy}z|ktƒu|€ƒƒ|w}vxp}r{z€…}ynyz}}vw{‚ny||zw‹}€nz€}ozy€v˜ww|o}o||zy||€y{€Š~wƒ€€}ˆ~~}~}~z€|€€y}{{yxtz|{y€}ƒ}}|~ƒ}~€{{†w~|€|zy{~|‚z„~|x€|{{„|r}up€~vz~|s†p„}}xz€~†ƒ††~~||z~‡~|{‚}{}‹{„v‚|‡u|‚ƒ|z|q…~~{{yƒw}{z~…|‡|}|}€|x}}„}‚y€xyzk}~~}~}€}€~t‚€z~‚v||…v{|{„{x}|yx~x|}€e‘…z}}z‚~}{~y~|}wy{‚z€„w~|y€sy~r…~{}~u|v{ˆy|yzz~~€||z€}x}~r{v|}}q}|€z}‚}n€x~z€z~}x||€u~~}€x~x€}}z}|sx…{€€|€t€{zv…ˆ|xv…{{x€}~}‡}†Œƒ{~~‚y€u}z{w}w{zu†~‚z€x€qw‚}{|w„z€†u€}|{|yx‚€|Œ}~t…u{…yt|w}{}~rw‚jo||y|z€~r~Œp€€|…{m}}|~yˆuu~y}|mz‰yyyz{ty€‚{z}€|v{w}ƒz€xvyz‚}yt†€qy{€{sw{v†|w„zw{zu€z}}{}|}~x‚{vy‡}|y‡€~ssr{†tywo…€ztƒy}|~n{}}xr~{€~|{p|€~€zz…€}~xwvyzzps~~†~|zy|{{|w|xs{|ƒ’z~uy||~pƒ‡~}y‚s}…€€~†~|~xz}q€~~ˆ{pz}xƒ|„…‚…|yn}zt|ov|}y}{~w~{v{x}y~qzy}zvƒ„ƒzr„vv~y|ƒ}||w‚ƒzw}~uw‡~{v‚vzmw{v€w€|{xp~€|{€w‹…ox}{}}w{‚w|yr{z†{}}v|}xt‚{~w}}y„‚|†w€|u†n|}sz‚‚ƒ}€|ƒ…~‚z€}uuz|ytzƒr‚|}|~{‚€€sƒ{„|…z€|yx|}u€w€{€yqxzy€v†„Œw†Ž|‚‚wzy…yzuƒ~y|„}{}wƒsxt€p{~v}lzx€zus~{€}z€~{wƒu|€…{{}€„t~~}€}w~r}}w|}zyn}zq}~{w{€}{z‚{‚q|vv‚~y}twxyx…{€}}ƒŒ‚yyy|x~{‚oy||€…~„Ž€‡„‚…sƒ|uxqzz{†€„„{}t…{{„xŒv~‚{}}‡}{|x}twzyŒxv|p€|~vz…}xy{}yuw}„x|~Œ}†{p~v|z|v{wwxz€ƒv‚|~…u}†~~rw}nxw~‡xz|{t~‚x|…v}zx|{y|z}{x{€uwt|vƒ~wq{v~vv}u‚sƒ†|‚‚{sn}„}v…€€|wƒrˆyo†uy{w†}yu‚p{x~|€‰s„{z{~{~|…jy|‚||xvx{uy{€|z}zsv~†‡}‚y|sy~x}rƒ~vŒ}‚|{{gr|€n‰€ƒxƒ€‡s€w{{}s}Œ|}w‚}}~ruƒv|ˆz‰|€zw|~|~x€wu‰~†‚…Šs{zy{y{†z„o€wy}Št„}‚yxz‚y„{{w{y{ˆ~ƒwty~w~€€x€€‚wzzq|x‚z}‚||w‚|€€{†t|~€z€…~}‚p€p‡v‡€{tƒz~|‚wx‚t€€y‚x|}x~€y}u|~s~yzm‚|n~{}€}|~}‡’~}~vyˆ…ƒ…Š{{l{t||~~}}ƒ‚k‚†|€wŠz†~}u~|ƒ}|vx™yyxŽpw{x~~zƒ~|~w||t€w…~…~€y~||‚€t~u„}}|~€~yzwx{z|€€tz}zr€{‚{{yx‚}~mv€‰€y~p„{yri}‚~„€zvm€y}y‚…~~{‚lz~~z}u|ƒ~}v†v„‚yŽ€‚|y||Šy„yz{uw{~xq‡s|||}|€ƒ~j}yrƒ|†xxƒ‚‚}ˆ|{y‹†~z€u}†‚zux‚{q~zx}}y‚y~u|~t…x~‡o}~s}xons{{‚vzz…‰‚yz{}€€€}{x|wŠ{qyw„~v{x|}~„yw€u|{z|„„y‚€|s‚|zyx~~}{}v€utz}}~‚}Œ{{q›~w}†~}}€†‚~~~uut~€z€‚…{x‚{€|‰{€~~rpqz|z|zƒx{znqr†‚‚z~zo|uz{}zs—€{‚|‚‚su~{}~ƒy|{t‡yx€„px€u~x|{€u{xx{{qy}~t|œx~o|wˆta‚~€ƒ|r~~v~{yrxw„}‚{}…|ƒzz}y‰|yz}‚€}€~€…~}}v{vw…†y~}{z…}‚{†‚xzr{}ƒti}vz~{w€€w‚~~h{€{ƒ|€†}€zy}vr{kt‰s||y{w†|†{|~y}ƒ~Tw|x}{„|}|…|srw~~xxvw}o‚t‹yy}~x|}f~‰~v}}z|~|y}s‡~~{w{z€‚y€}~u†|}xfy~{€}|~ƒ}†x€‰„ˆ~ƒ~…vo{{}s||{ˆ|zx{Œ~ˆ}||{ƒviƒx{{z‚~{~ƒ||xuƒ|~x}~my„u~zry|{zw‰{€ƒ‹}}~|yzt|{y||{}wlx€rˆs}xƒ€y|{v‚o{†|„…}rn{ww{~‡|r‚}€„~„|l~{‚jp||v||~€‹xƒ~{xyz|vz~|„z‹y{ƒ‚m{‡†‘|}ƒ~~€€~}rs}{yw}x~v{‹v}|ƒ|{}~|{{}sv}~|„ˆn}yyxy~z{yt~€„u|}|p{{hz€r‡|~ˆz‚||~€yt}yu‚zv…‡Œ„zx|xu†ƒ|p~z„||x|zs…}~…~~{}Zƒ}ƒzy„t‚{|}‚sƒ}ˆ|r~r}‰x}uz„y}yu}€}„w}xs~}zv‚u~~o€t||{y~w~~}r€„ƒjcw|}z~v…vy}vzt}{yt}xzzx|puzxvx}~…}‚w‰|}zuxbwƒv}x~r†€ƒ|„~||vtyƒ~{w†bvy€sz‚{x}‹xz…}}„y}{|zz|„{€|s}€u|€|ƒƒ{|{z}w‚…zy}ƒw~z…}ƒ|uƒxx†}{€|ux‚‰y~~uu~|}z‡}{z}uw|z’yz{s|Ž‚~jˆ{|}…znz\‚~{|typ~x}~zoƒ~u}bvoƒo€t~uyu„x[|vz}{z‚i|zzz}qy‚~}l|zx‡spu}x}{‡‚~†……|||}cs~ƒy„}Œ{r{uk}zs{ƒlt~}~x‡g‚€evstswz|}Šƒ||~„‚‚y„~~|€~tz~o{€v{u||€„|„|„zy|rs}Љy‚~€hjry€“q|{†~|{|~yy„ypy‚wŒ~t}}zz}{‚~~†v€w{xzŠƒx|‡{z|wz~|zƒxz…ˆ}|xt|ƒxz€z‰yt‡ƒx|k}szxr†€†‚y}€yuvvx~z}w~i}~{|w{ƒ{{ƒ„{|ƒx†vmv‚€{ƒt{€†ˆx…qyp€rvŠxqƒsx}‚r…y{rƒ}€Œ~zw{„v‡yz€|~|s}‰|y„vz|~|€zwyz{{w|u}}}xyx{x€~€yŒ{r{z{ƒ‚k||}ky€~ƒ€{ƒzw|~€wr{x{}vqa{tx~…„yvrz|‡€zƒ€~~vyw}j~{€~~s||qvt…{~yiz~€}zx‚|yŒ|zo}|zx‚€{uy€yk}x{ƒ{~y}ƒz€~yy‚|ƒ}‚wpuwzowqs†u|†~~‡ƒvƒ~s~|y|y€pz|}…w|vsx€}wo†z|xxƒ„pl‚voz€{y‚{p|}tƒ|v~wx~u}xrz€v{z‚|€jƒzrty}€wy{o‚{w{„~p~oƒ{y}z}r{~t{~ƒ~xvuˆ}€y|{|xq}v|{€xsk{z€{~}y{€rvxƒ~|€ynj~€€~uuwwv|p€‚y€}€‡}u}€u‡{Ž{oz€‹qy}yƒr|}ƒ€~}}–u‚t‚~|y}‡}ƒ‹uv|~€l|{{xxƒ}‚ƒz„j~sƒ‚…|y‰~y||wwvƒ{~~vˆ~v€{bu~†}{}}{€|~ty}€w~s{swyq}~ƒ…y~z}ow}yw}vuzl|„zƒ}p„t~oz~{mw‡…zƒ„y}€‡yy|~‹{uqy{}‚{}yz~€„ut}r‰€~{‚}|wv‚}Š}vƒ|{z{pp~†txz|uv|€|zp~~zy‚|}k|}}vqx€uv|‰‘zy€}zn‚~‚o}x}{|……|x}~yo‚z†{{}€|xƒ|}fz€u}r{v}r‚Œ|ywy|‡}z{w~i}|y}y{ƒx|{}z€{€o€€€lsx†‚€„‚y|}v}{„}kwn}x†vy„}~w€|‚izox{|y‰m‡r…‚vy}}wxzyt}|}eu~ywwty}€ƒp}€‚~~‚{‚i}‚€zz}{}x}oˆx}x€z~†…zuƒzzt{{€u}{{yvr~z€€v~~ƒ|{zƒ}y|}s~}}|~{‡€{rx{}}}Š}…t€|{t{‰~}}€€uw€|y|yh~€w}zxx†z~~{€v}y~{ƒ…w€w}…||}„…zzvrryt€wz|}|ynvtƒ~zx€wyƒrƒ~|~t||~rsw€Šƒ~}}z‚{{v‚z”sp|vlv|}z…xy{zy~zr}{~{ˆx}}uz|…wx{s„t{|{zƒ~q{~wz}‡w†|x€zz‡zk€{zƒ‹z~ux‚{}y}ftzkyoo|…zv}‚{}w|~€}~z|z€q{r‚|€x{€w|ƒz}xzyyy}xzuvkzv{{sƒ~‚w†zrw|}€z„||o}{~qur|v{xmz|x{|vt~|Š„ww{…r|‚yzmwwqƒwx}|†|ˆs‚{†|}sƒx€‰~€|r~……v~†{x†~ƒ{o‹ww‚{z{|u{y{€w|~xƒ~z}}u…xyvƒ†}~{„€}z|zy‚|m{}}z{{ƒz€ˆ{‚v†ux{yvŒuspm}wwyut€k|w|ws‚w‚t~€{okwy|wy{tyrˆ€{ws|xt€~{ƒz|‹|x|ww~u{}z€z€|yyrltw|xxsr€€y|zuwnypzyz€xvzr|€vv{Œy_t}…‰v‘‚y~~t€y‚y|ƒswx}€uŒ€Œ{ˆ{|†~v‚s{€v…xy‚xŠ{wo{}y„wyu}Œk{{|y‚{{ƒx~}mzwzww}}x{}‡uw‚ƒpty{z}‚~wƒ|v~{x}€‚}s|ƒzzbuu€{wŒˆ}}†~{}n‚x{kz|†„~€v‹€~u‚}s|s„~z‡wr{€||…€xƒ|‚~fy||€Šqz{}€}{x|z~y“}‚Š{…z~u€y~{}zz„†{||…z~{~qzƒ…ƒˆ‚‡vu}‚~rp„|{u…{€€zƒƒŽˆ{{uw‡€‚†zyy~~ކ‚oyv{‚x{yx€t„}~†}|wy}x}||~{y‚}}p‹l€~}ƒzzz~‚w‚u€w}‡‚‹x|x{p~‚}yzvu‡{yƒ{x~xy}r|†y€|tu…{o~}ˆy|zh|v}u|yt}||„„„„z‰swv‡|„vl~wƒƒvuxyy~u‚zˆv{|•{}wy|‚xqvy~}{u~y{y~v†{}ƒ„P|}~vv|r}‡|}z|w†‚„{|z{ƒxv‚~z„xx~yu{u„‰{`…{z‚yœz|l„†…zvˆ‚{€Ž}}|~s}~‡t{}„~€„xm€x}‘n€}}{ƒx~}}x€u|v|{}]zyv‚~{|~…ƒ|x~{~}ƒy}}~xx}‚~vv€{p‚x|}y~}|„ƒyz{„z{ˆv~ouq€ƒsv|€‚}}…|€v€x|{{€xz†z~…{€y…p~|xxŽzu||ut~~}}ƒ}}zt‰vu~{{z‡}|Š~€q…~xvw}zƒ€s‚|zw‚qw}}}}~}z|…}ovƒ|„|‡{ƒ|v{†€{p}u}ƒyo‚“€~y„zz‹€„yuy„†€ƒ||xˆznuz|}…}vˆy}~u||w~m}}x|}|}z}€}{u~|‚€ƒvt|}{zz}{|}‚~}~{€yƒ~s‹„x†z}}z}€‚‚}|~{}„…|||x~~~~…}~‚yy~vz€€}‚zƒ|yzxul~ww|ƒ|zz€‚}‚q‰€z}w|w}Žr|v~~z|~{|y}q}€~zzwy~nu|w~‚z~Š~z‰|€„}|vw}|{{{}o€}ƒy~†y~|‚{†n{„u~{~ox}|}‹{kv~j|q~xƒ}{‚wrƒz‚~€‚v{†qv~w|s„{sr|ƒ‡izz||wƒƒ}‚z|†}ˆ{x‚j~}}uyƒz~~‚zuysyz…vq{…q~|„|~„y„xqzt€™€x}}‡€y|†z|ev~‰s}r}“Ž}|w€€ww‚y}z}‡wyŠy{…€Žp{{}z}€~…ƒ|„~}|p‡|zxkŒ€„…q}wy~{|u‚{{xy€|x}}}|ƒw~‡‚‚}~ww~}yv{ƒ|}ƒxfr|y†~|||e|z‚w}„zlƒ|q‚xu‹|~u‚zzuuzpnžr‚y€~{{yz{‚}†€s|€{y~vw{ˆxs†‡px~}zn{}~Ž|ƒ~†}}z|~{x„‚€y‚ns€y€…x{|~zwr‚…q~p{iyy|||{~m}|„}ƒx|‚||wwt~…€|y€y„x{q}‡|ytl{z€|~vƒw}yoil„€}w‡{€~„}}ƒ‚…‚|z||Š}€v{ˆ}uvy„}x{t„|„~~u…„|i‚w|s‰|€€„ƒ}r~}}wwƒy|}|}yƒ{x{y{~o|p~„{|~}…‚{ƒxz„‡tt~}}nŠ‚yu|‡zuww}{w{~w|xu}‡|x~ƒ•~u~€xx}}x{}{ƒ‚~wƒswtw|w„}…x€~€{w…{|{p}y{}}{}|‚€€w„~ow}vƒ}uƒ{ˆ~|€~}|u|€z€‡o{{€xr|~ƒ|zw‰‡„ƒkz{€‚ˆys~zsƒu€‚}ƒt}}~€}uqu{ƒz{~{x…‘xn|vˆ}}z‚v|€}|y{‡{}yz{~|{}{‚t~}xy‚z|~€xz||{}‚~{u„yw~€|sv|~vƒrˆx‚y„~u€w}x‚ƒ|~~vƒxyzqwp†}yxz€v|}p~„‚|…~|ƒ………}{}{€vƒ{{€ywyzƒ{{€‹}~u}„~z€wx{‡‚€€{yzwryyu{w‚|~€|€†}{ux}|€v}€u~‚|€|€r€„€z‰wx{{s~r~€|sƒ~~u~{}xwy…z€{|„~‚zx{w|~ƒ|}yv€}€€y}x~}|~}~|‡{ˆ‰‚ƒ{~x}¥u|{‚|„~ƒ‡€}€‚zˆ…zyƒw€‚{ƒy{w}zz{{€y~wx…z}~|€x~{xu~y}o‚|xx{}vu{{zxqm~~{‚~s{ul|rz|„y|…|€}yz|‚‚|~‚xxs‚€z€s{y}z€|‚‡{z|…|ww€}xu|y}}|{xrz|ƒ||w€wz~}v}}t~z{}xzs~}v|ƒ‚|‚‹~~{ƒz~†wqpy|}xo‚|zum€{~u}zx{„xx}wy|{y~…‚€wxwt}|v…uw{~…}†‚~€|}k|}y€{zƒxxu}€…€r€wz€~|…~}{{~w|y~‚v|}|xz{€zv†…q}z}‚z{x{…~}‰xs‚|xv|vy|~ƒ{}y……}€twy„|r||w}y„zs{}|u~ˆ|~}uyˆ|ˆ|~|€…{zu€zw‡~}‰xw€{~v|xy‚~p€vqƒ{z~w|‚}zzw~u~{~~€{|~}w‚„}{v{pwy„x{{w„~{{z}w{|~€ww‚ƒ}w€€z~}‚zc~‡{€||}†{u}yw~ˆx{|zy†qz|t~wyuxx}~€€|…~zu€v}z}}~„w{s‚ƒw~†p‚{}}€{xw{…}€„y}u~}„}€j€|ƒ~~{……€y~Œx~}{w|zx}€zx{}|xz€{r{zzzy€}~{{}syzu|t~tv~€ƒ~|}z{~uy}z{}„z€}zn…{wˆ||€z|{†€l€z‚}~|w~zx|zpv}yt}€…t}|†~r‚~‚€ƒ}{xx„z}yƒ~†~uwƒ€zzƒw|~{tƒ|zqy†~xyu€v}{z|{z||wy~…r{~}{zƒ~||xy}€us|u‚|{w€|€srv{~v}}y||ƒ}~zz€}‚ƒyy‚~x‚zp†p}y€}y~w‚}{rƒy~|ve„mr}{ƒx†zƒx}yy|‹r~€yu|€z{ˆy~}x‘yy|{‡|zŒ„~}‚…{}z}|x~q~ufzls‡|u}„{z‚}}…‚uƒx€{c†€w…z}€p}{y‚~|~x|z|x€{rŽy|w€~{ƒ„‰{~ryz‡Ž{v}„}~~v„”{zp„…„€~€{wu{ƒ€‰zzz€x~‚{{ˆys‡|z|x|ƒ|||ˆ~y~|yzuz||z}†wz}€‹~|ˆyzˆ€„zzzty}}||{~ƒ}ƒ~|z|yw|z~}‚}~w{›€yƒ{€z…‚~zy|{‚onx~w€‚zvwxƒ}“||~}~|z~{uz€||zxzzz{~z‚‚~{~}|~~x‚~y{}t…y~€€‚~{|z}z†ƒ|}umz|zyz‚~y…{|}‚€€ryt}~u~€}y~}~~{€„|~s}‚uyr€y‰~ƒ}u{y~{|y}‚|}€{|}v€qv}w~~~|t|wq~v€zƒz‚y}||€tx~w‡ww}„€{{{|€€{~y}z|}}w}†zxy|€~vx€}u‚~~|}v€Š}zy{x}w}{}|}yo€{}†}€€~€z~s‡xwx€r~t‡{…€…}„}u~v|z}€}|~y€~~|||y{zs|y‚|‚}…z€~}uv~zs|{s~pp}zx€~|}{€ƒy}|€~zz~€x|}}w{||u{€zw{‚zƒ{xz€Š‚‡yz}|‡~~‚x}~€‚xx}|t€ƒv{~z{rwy~|€|z{„…}y‚wr|y|n}yyw„u~{€{}}}{y~Šn„€…€s†wisyz}}{zŠ„|xzƒ}}ˆ{|€|{}}}^|wy|}w|y€|}z~||Ž‚~w~y}…t|ƒz{ƒ~€x€ƒ~v€|xy…{zyyx}…|~†|†z}€}~|tv|xq€€ƒ†y{xzq|€m{}}{yvt€c‚’w}w}ƒs{}|ƒ{}x}w|wut~}‚„|ƒx}wh~„zz{|}rv{v‚u‡~{wq…~u~‚}€{†}~v|zy~‰‰|}~{€„{}‚{‡xpy„}px‚z{t{y{{‚~ƒx{y…z€|{‰}xqx}z€}v{yt{ƒ„‚s}€~tz|~v~{|~}y€|y‚{{}t{||wy}vy~€v|€ƒ{}„}…‰yŒ‚}ˆx|{€z…z~wzw€†{|~y}|‚x}v‚|‚y‚}‚€uzƒ€yw‚ˆy~„{m€€w…~ƒ|y‚y~{}~y||}z…~y}~{yƒz}~x~zz„|z†‚€x€~„vvt~…y|„q€z†~€z~yy‚yxzy}}tyyx“ƒ~„ƒzz|Š…zz…r{~z}ƒ{†‚{xuo‚y‚„w†ƒ|~}zy…|}{yy€{xy}{‚†…€y€~q„}€‚~x‚x„~zvxxrd~…xtwzw}y~‚…|„‚yƒo}}ƒxz~|x}€w~~€|{~ƒ~sy~ƒ~€‚ƒ~‚q}{ƒr€y~}|ƒu|z~~z‡z~}Š‚~†t{zz}w~~up†xo{ww‡ƒ‚j~ˆxv€}|€€‚|t‚x}w||~|y}zƒwu||~†y„~u€~{~}{~~{}~w|~x|{}{~€}t€v}|z€{y}vƒŠtz|€ywuy}w}…|z{wv~†z„„u}x€~z…xŒ‡€{}~}{}y{€v|}~~y}s‘tut„|—‡~v|{w~~€Œzyw†{€€{||}…t|y{~‚s|€ƒ€‚…{}~‚w}†x„vˆ~x}„y€Žru~„}x~wyz‚~}‡†zmƒ}w}†z‡„y~€€|wy}}|€|}ƒz{zz‚€~}~y~€~z‡~z~~~zzx~|y‚t~{}|…w|}z|zx}s€~y‡}u‚|„}yz{…o†{{r{|}~{~w}‚yw}{…|p|x~~||}‚„ƒ‚ˆxwd~‚‰Œ~‚u}‚{}yw€yy|wƒs…x{x}‚zx…z€…{xwyz~‡~tk|„„}|€{wyxwu{€~„t}}r|‚|‰zk|u{{~{w|„rypt}s€~‚uy|x|~zw„‚twu|s~y|{wzuv}‚|}ty€ƒwƒ~|Œororx}wz„y}xyvx}u€yƒznŠ€†~~z€z„~€ƒ…z‚‹ˆz}~{}w€ƒmx}x~vy~q‡€€qr€{ƒ}o~|y}rzu…~‚vuv€z‡tƒ~}‚tv~sz†~‡~€yt~uu…xo‚‚~s~znƒux„|x~}~z€l~}sxwzxw|t}txˆ~{qx{~w|{z€€u}|lwy€s||qoˆu~|||}n…{ƒj|zuy|zqtqˆzv}{q{u~qxgxuor}|z‡zwŠ„~x~v~j„y€y‚~w}~kx{~zy‹‚Œ~ˆ~}‚€yzkƒ}yŒ‘xv}~}u‚w}uzyƒ}w€tpv|…€_‡}}t€yqxz…lz{yx†r†{rx€„„x}s„€}~zƒ{{€}yz|}‡{}ƒ}t|~€|€t”~|xs~~{vzzlt~|}~xŽvƒzvl„|€vuwxy|ƒ}€†z{‚r~tzy||€{{}iƒ€~k€e{}~„zuzuqv{~}{‚~|z{|yvz{…€x€y~}{„|~zp€vx|wƒ}zs~|xz}y†w|u{zw„ƒ‡}{}{vx…z|{|zƒ{„{‚u€{€t‚{|y}d`x‚}}~t~}ƒ†{x}{{t~~}z~zx„†}z_i|‹~~|}lxh€~~{vq{ƒ{zh{yzv|~t}z‚‹|Š~~y~|}uƒu}ƒ~|€g…~||„„x}‚{o€{~v}|y~xy€{„u†‚~y{|~€„ot|v„~…||wr|_w{€|uz€€~{€~}~|{|}zz…tt{ul€wl}{ƒ{„†}~€€…~€zvcqz‚}zvz~„z{}}€zxx{z†}|{}p€{ez€‚x€‹~y|v†xz{z|~~w|ƒ„vƒ€{v€z|{wt‡y{}{vy‚wt~~|~~|ƒup‚x}yx}}€ƒ|q~{|}y{v}w{€‰v†€z‚„~z}~}jvuz{|‚xxvw…|„~~‚€|}|xqzxrtz~}ˆ~|{x„€|{xƒs†y†}}}~zzw}uuy‚{…u‚z}v{‡{†~x‚x~}z{x~}u…{xu‰t~…xƒ…~~€wƒpƒ{p|f{‚}y€zˆsw{||q‰ƒ‡|†|ƒ~z~~†~‚{tw{}x€|y~~~‚xx}‚t‚qo{yt}z‘ƒ{}‚{w{~}tw||€y|wz…w{‰~‹€|{eyŒ{{z}}tz{€…}‚„‰yzr‡}u~x‚{~zwy}z~z‰{|‚z{€wƒƒ|}€}‚‡ˆxvx„„z…zq‚~†‚~~w€}|y~|}z~ƒ‚y€~z}ƒ€|€yz„w€t|}{ˆ€|‡€†€…~z‚…r{€Œx{Šƒ‚€{{{i~w}~ƒyzƒ|w‚{rˆ|z|‚w|~ƒ}ˆw{‚‚„ƒ…}€ƒ€zy}„ƒ‚}„u~‚zz„‚uzyz€ƒ…„ƒ~yŒ~{ƒv~€€„w|}~r|y€uˆ|{xŠƒ‚€ˆ‹{|ƒ{}w~y€vu„z{u‚w~{z€x}…v‚w‚|„~w‡|v{ƒu†vy‚~xƒy‚€{v{€…‚{tŠw~ˆ~„t||rv}}ƒzz‚v…}{{‚‡ˆƒzƒz{|~z}yz|‡q„‚y‰}~}}|w}y~‡m|‰ƒ{s}€x€vwƒmj€‚}|}}{o‚pq{y}yt„…|l„||y‚lt~Œ{ƒ„„~‰p{|…{„…zoz{tx|zy€}„u„r|y|w„}~zv~xtƒ~‚‰z’|nŠ}v€k|~‚tx‚vz||}v|}‚|uvz‚mzz|‚v…}ƒyp‘~~‚€~‚~q€r“{s}€„„||}psx†€}z{{|}q„€‹ƒ|}€|t|‚}|~{pƒ~o…ƒz}z‡‡€‚zx}~~|~~„tpzƒ|xuy˜|xx~}„†ƒ}ƒ‚v|}vzq„sws~~‚{†q{‚ƒ„{zv…‚~ƒwrx}ƒxy{h|w{u€~‹yˆ|{{z€€‚yzjwŠ{~fpx|w|zw|ƒ„{ev‚poy|}}‰k}Šu|k„„f}€|€x}ƒx€‚‚}ƒ„x}||ˆx}}z~u|y}‚}x{€|‰v‡‚{€‘y‚{{…k}r}ˆ}€|z€g|–x€}{ƒyy|ƒ~~tyƒkw‹~|~Œ~yz€yr|ˆ|ox{z}m…{p}|w}d‹wz„~…||„|ƒ„tu|~z‚ƒwttv…yt~~{~|ƒ‡yvzz‡ly}‚|x‚xy{€‹~p{~z}zw|€ys|†|x||z~„~x€}}‚~‰h~y{x‚‚‡y|zq~z„~€||{v|t{ˆs|~}†~h~xƒz}~|yy}xty‘‚{€~~vtz}}}|tƒw|}}Šw€}€x{‚v‚|q{{}v~ƒ|zy~€z{}ˆ}xu~|ƒ{pyyx|}r€ƒ}†z}„‚€t{{{ƒ‚zz{z||u~~t€~v|pƒz}€}€{ƒ}wz}~~wxb{|„}}|€~y|yx~ƒ~y{{y„v~€yz|‰{z|}y†q~€„„}Œ„„‹|‰€z{}x~y‚w~‚z}…~{Šz†~€‹zw€}{w}{‡~~„~{}}€|€wŒ~€zo{x|€{z€|{}}r{„w{w‹yzˆz‡~|xy~~z|„}…|ƒ~~~{}{€y|„|v|~d{{~ƒ…†yq}z€}{‚~}z~€‹v|ƒ{{…ƒ~~ƒ…q|„{}Œw{~„ƒ{u€}~w€{x€||x|ot|€€‡z}‰pvw†zx|z‚v|{t~}|{}y}‚txxo~|w~†l{ƒ|~z‹p{~z}zw|c}y|x~vx{†|ƒxz|yƒvy{‚Œz|€xƒwt‹{|€…xwt}€~vx‚{ƒˆ~{y‚|x‚n€|€€z~†‚}~|}}‘z„}|‡z~y€yx‚{o~w}~kˆu~k~|zƒ~x~~€y€ƒ|~y~{|~ˆ{zx}{yz{‚}yz‚{€€€r|x{|ƒ€„{€v{r}ƒy{€ƒ|{yzxww{u}Œy|‚}z{yw}|}{{~|{vn~|{svƒzz}zw‚{|r}|x|z†xy{xyt|wyy|{yz‚vy‚zvy{€||w„yzz~…ƒ{vzz|~€v|{‚g}‡}pz€|t|~zr~‰x|xƒ~~xnprƒzz„ww}}{u|~w~…zy~|€‚v{|suv{}v…}x€xzyr…|xzz‚€„||x~x~Š}u}ƒ‚sv„z{zz€~}ƒ}‡{€t~{~Š}{x~~|xv|…Œntxp}ƒ{pyv‰y€wu}y{~zwu{|||w~ƒq‚†€{}ƒc‚y…kzq†|yv}u~}{x~€Š‘‚zy|~q|{}„‰~{w†z€uŠ„{€~‚uv€‚~ƒˆy~{}wmxw{}}y€}‚‚|uvumz|z|{z{{{“w{r}Š{~xzq{‚€|wy~ƒ{w…}…‚wt…|~u‹‰}~zz|ˆ…u€}||‹z€|z|ƒ}‚€{|z~…}€‡„z}…n{wƒzƒ}yw|}~zv{~|}€|€€~}xx{yŠzz}…‚~w‹xr~{†‚y…{{„|}w|‚x}{ƒqy{†‚}zyƒmy~{ƒsytx{{u~uz€~{z}…v}{u{€r{„~„{z|{‡}|}„x{~}zˆ‚yz}‚~~u}zwwr}}€…t~|zp€l‰„|wu€{}rŠz}{t~‚|z~vx~y|}Š}||o‚}|}w|ƒuy{x|€x}€zz~–|x~zyy||~„|||ƒy|{„{}}w{ˆywl€|y{€{~y{|vv€{zo~w}‚~~dƒ~z‚v{}{{t~zƒytƒ{|}~|v~‚}}xy€p|€rv~|…z~zy…~t}ˆ}yy}{†yuzy†yqu~w}x}‚|{ƒ{m~|ƒ}z€{uy}~wu~ww{|€|x~xw{…yu}pw{}{}wy|ƒowƒ||€uw„‚~q~{€„vz‚|}Šy{|x~hv}„lv}}y€|~€„‚ou|vw{{€|z{‚{|}}…x„zˆ}yzgzƒyvyg€{}ywzt|€z|…ywƒ†}~‰~}|{~}xx†dv‚|~‚{|€zw|€{~{||yvtŒyz}{|s}~~~y~wzv|t‚}y…r{}„~…t}xz}~†u~…}ˆuo{}~{z†}|~}‚qƒkz|{w|{}~x|}~z|~s}}u|z…}z€}wzwz€|v}~~~…}‚}zƒ{…y‚}y|€ƒyx‡v|{}|xyt{€|}‚|€}‚q}~x|}s}v|y€zv~{€}‚ŠŠ|vl€z€{Š{zyƒ|}z€‰~}‚~}zy~z~}x}{|~~}uz~vzxyoz}y{|}x|~~|{{{w{‚€~|‹‚…ly~|„z~}…v‚€~||}u}{|‚‚„zy|…wxu‚xz~vq}ƒ~}}v}|{|z|ƒy‚‚r~„q|~}|x…z~}vzt}|p|x~€v€|~zyz~|{{{{t~†n„}v€~|{}|w{}|uloƒ|xn{…‰zƒ|nvyzw{„~xxwt|}|ˆ}}xvzrx„sy}zz{€x€€‡uzyxz|€{wo‚€yt}}ƒ~|q€qz{|y{…„xy}~{z}~‰}‚…o€ˆ…vu‚z}t‚}w~|Œ}{y~z‡|z}{}px~ˆ…w{ƒ|‚y~o|~ƒ}w~}z‚{z€}wv{ƒ||}…†mw{}zy‡~wŒvuˆ~z……†}}y{‹~py€‚y…}w€~€}‚†{|{ƒ}~|yoysƒ|ov|p~z{}x}v„ƒw…ƒ~~y‡v||rvz}‚|†t€xy‚su|€t…zyzzyƒŒ}~t~}‚|xƒk€ƒ}|~zˆ„~wˆr‚€‡w|z„~oz€~}{xv|{z}ƒ{†||€sƒ{|}ƒ„‚~r~~{|†‚y|…}|uyey}}s€{€…‚s}yz|€s}€zvx}v…t€€|„€…z}q‚{{ws‚ˆ~x||z‡‚q{sˆ~‰{‡z~}z{x}wz…yzl{j€}}€w‚zz{€€~}zŒr~xvq€{~|{y~…‚}‚v…|wƒƒ†ƒƒ}}}{}}{~€}|z{ƒwy‚~y{}p~}‰|{{}twx}{xŽqyy~|}€…}|…zs‚z~~€}y{}tzywz~pr~{y~}v~~{|r{{€zt}|||yz|}€‚|†~„y‚|}~u|syy|xƒ€rƒz}|{zƒz{x||‰z}€y‚u}~}{€yv{‚z‚x|ƒ{~|ˆ†€{~€u„~y†}}woŠ~|{zv|{y€€vx}v}yz~u{Œxz‚{|}}}~ƒ{‚||~v~‚…r~y„{w{}y}lz~…s|~{z|{y}ywyyv~|x{z{{€|pz~{…}}ƒy{€„v…~}||~zw|yŠz{y€|yv|}‚|txwƒ…€€†ywtzƒ–}{w„y‚wwyz}v||x{u~‚€yw}~‚o|t}{~xz{vswwx‚ƒ~€{€{}{}z‚y‚~€|~sv~y{‚||z|o‚}„z€‚€z~z…„{~ˆ‡……v{}|~|x~{wxx‡~}v…yw~|txz~v||yxt{|xxy‚]xvw‚{z~‹~u‚|~{uŒy‚v†€|~y{~qyx|~ƒ‚x|u||{tŠ~}|zz}}|w}z†€~yw|z{}~‚‚y}|ˆ{|Œyz|ƒz|‰|€†ƒ|}}}}yx€uŒ}wy|~}|y~€~}{~zt‡~Žsy{€n‚|{z{z…|‚{|}‚€|yx~wz€€s}~ƒ|}€}}€ƒt€|yw{u||~|}{}ˆ||x€|u‚{y|~{zwz{„~{zy†y}x‚yx‚{s‰„v~z‡{€~zx}z€w~~}z{ƒz€v‚{‚~z{}{|}~~|}„}}y„‚‚xwt„‚~x€z~}|}z{…{sz{w|}}}~}|}zƒ€€}qzwvxƒ‚}‚z~x~}~}}{}ƒ||y}xz€{yxz}|†|y€||yw}zw~}z|q~z„|}‚t~}‰„~~{{‡{y}{~ƒ}{„~x„|yxy|x‚~}}~zxuz‚qzx|}x€|y}yxz|}„}|xy‚ty€y}~v‚„xyt˜{yw{‚|‚zz{wywwyyz}|~|z|€}}}ryx~†yvyx}‚yx€{vwyvz}vƒ~z{zx„z~{ƒx}…{|~z{}|zz‚‚yt|}{x~l‚z}€}v}€~o€{~x}z{z}zxyx}{t|ty{€y~{‚~yƒz}‚w‚{{x}~„y‚€y{‚y}z†|€|y}v€|~|r~|||~h€|}uz{ƒv}|…{}v{yx€y‚}€u€|ƒ~|‚}z~zy€yyx||{zx|ƒ}}v}|z€|}}yx{ƒ{{zuy~}|v}‡„ty}y|~€‚z||}~{x€}|†{}~t~y„z}wzyˆ{}}|wxzz|}~wx~}||{s||w}~€w{|uy{xy}z|t€o|}}}|}‰€y€~y}y~yƒw{„zyƒ~{{~xƒ|}~€t…~ˆ~}x~†s{}}v|}Ž€{€z}w{y|}|{}{{ˆ{~|}~‡}‚|{|ƒ~q…z}}}y}}€vs}‚~{t€yy~|z{y€vzƒxut…„qy||€w‚|z€}}x€{€}qz|{z{~|~„|x‚yzm|r~€x‚~zwzu~vvy‡{p‚zs|w|}}‡€}~u~‚{}|}~}~z|y‰u‚{x€~z}}ruxxq€€v†{€{}~{x{|~{z}{€|}{|…~t|€‚€}{{z}xt}‰}y}}~}yz}{|xr|{x~‚zƒ~}xcŠ}u€†r„z‚x†‚€x„x|‚s~††zw€~s€`~v{‡w}}yky—~r|‰ry]€~‚y€ˆ}yxz}w}i‚s€lw†ƒs€Œ~~}f…ƒj||~k€xzvz‡q~‚x€}~€…‚ƒ{tq~|wtu{kxƒ|u„zt‰|}~vwx‰r€|ŠŒ€v„„}€ƒzu‰…|‚xij{o„}x|ƒ„xwr~zx€|Œ{{~x{[zzyur{{t€y{„y{}†wz|ƒ|~^|‚…ƒ‡li‡|v€ƒ~tƒ€w{xy~†vWy|uƒ…mw{‡ts}}„„‚zˆ{}‚ypy~}€n}‚wp€{ˆxlwi~}…p~‹vu~…}‚€}vyxx{yy„y‹uw‡}†r€€q†ƒ‹}o€…{‰~v~z‚}tz†‹v‚…Žƒvy~‚w{~‹sƒ|v‡j}}Žƒyy…t{Pvt~{uyvˆz‚…„ƒ“zzt}{p…ˆdj~„€Œxz‚zt‚tur~|–iy~—‡ƒ~~‡|}}xr†‚ƒgƒƒv†se~€‚Œ„zv…ydkcs…l|gozs|||‡}~ƒwsƒ{xz|~€l{…xˆz€„jx€x„w‹€{y~z‚{pw†u~x€ˆz}|so‚}z|}~‚|}z€yw}|r{}{€y|rƒ}w…€z€y}{p~|zzƒ|z{|xq||‰|€x|}l{y|ltƒ~}‡„~{~€yz~€}ƒtt€~|t†~vƒu}€}{v|{zƒ{t~~zy{r~„w|wo~…|‚y{„~xvv|}v||rzz|~€~}}€w|{|…xwsx€~y{yz€|||ww}tk~{}x~}z€ƒ~€y|~}s}„z}}ƒ€y€{~}~x„{}†{sxv‡x~ƒ€}{x~o‚|v{‚€€{s~x|qw{„usƒ~xy{}|}{€€…y||{}|~|}‚|z~{x~}{y~ƒ‚}||€w‚yzlxv‚{~{||~~|x{ƒ{sy}}„€~}~|uz}|yy†}‚oyvy}xyz{w}}~t|yƒ{|~…z†{u|z‡qqx{yz|y|{€|~~‚}…vv}ƒw€~w„wp|„‚r|x…z‚y{~|{z|yy~|w{zwr~~wr|~zx}||}}|}|wk‚{z}w}†z{{pyŠz}|}€t„{tw‡y~p~‚}€‚xr{||~y‚}~€jwq{}…t‚†{to{w}~x‚n|vtz|x|}~{s~{ƒ|y€‚|{{vt~†€t{zx{psnk‹{y{‚zww~}x|}}~…xx}yw}y‡ƒz{|‚vw€|‚{yzƒ{u€€|yu€}v†|ww||€{u{{{zzw|zzz€‡wxvz}z}|€y}{|~xs~y€~ymvirww|z{wƒ}„d|r{‚|€zz~…}†}ƒq}‚€x|x…~}{~{uvt€}~{‚us{z€|z€{~w‡zq}y{zh~{zs}‚y|t€{x{yt{~xtqwƒ{‹ƒ€b}_„t}ˆwrz|r|}wy|}~„~{zz~{‰u|zƒ‚ƒ€{…zszy~~vz~~~{v}}}iƒ}{z€|€y{ex|z‚€yz€|u€~~€|z{}p€~zv|Šwt†€v‚o{~u{‚ux…~}„„~~|}|€}~|€z{}yq„t…s{|~{|cypx~wxmx„|€|}|zz}€z‚Œq†vyŠx€€||ƒ{yyvy||zz~{s|€xƒ€€|ygs{}ƒ‚}„„uyx|xz}|ƒ{€…z„~~~vv{|zˆz{ypu~{„‰{{|y}xsxƒ|€|{‡{€z‚z|yƒ€~~‚€y~€zˆ}z|ƒ}~~|~z‡u€€|€€}ytx€„~wz}ƒu{z}wz}u~zu}…~…wy~~|yww†{||z€tx}~wxzzz|}t€‚w|{x{pw€qwzyzv~}~€}|r€}€€}{}x}~{xz~yy}v|~|~‚xy{wv|‚~y}}}}x}{}t~ƒˆz‚w}{|ytˆ‚z|ˆ}{{t|qj|ƒ„zwƒzs~{…zŠ~|z~€~{y„{}{|{p}{}„€y€„ƒ~wz{~|s|x}‰ƒ…}|z„~tuvz}xw}}v|y‚t…‡yv‚t€x„}~~{vzv~|xƒ|x}„x{|}z}€~~uƒ{}pz…z~s…y{zy~s|r}{y~‚€nz{z{€}zw‡q{w‚ƒ„|…}~x€y„~}z~yxt|z„w|€yxx‡z}}w|}~{~yx~}{z~…x}‚z{yzƒ{‚„}~||w~y†xzzz}„€xxy„|~zrzlvozw~v…z„u}{‚r{zyxz„‚€|}tz|{z„€z€xˆ|zzy|~}}v€z„p‚y€wˆ}{yw{~|{~‚y{{zrz…v‚„{€z‚|~†€w}‚vu~{zq”p|z|€|„}}~}€v€}{€{}ƒz„‡…„v‚z€}{vƒ{xs~|}v€||€xz…w}~~wvx‡~„||~|ƒ‡vƒ}|€~{„vrzz}…zy€ƒx€‡€~wqwƒ€~…z|„w{wz€~~€y}|€z{vx}xw{|z{~x}{l|€w}{ƒ‡~…~|~~x€|y‚ˆzx€}{r{zy|}|‡z€s|vzwy‚|z~z„zztyw{}||‡…€ƒ„x}y{|„~vz|yxƒ‚zvzw{|~w€{‚€ƒ||€z~{€xx~x}„x}~xyzvyƒ~{{€~||~‚x}~~|}{~{‚x…}€€xƒ}|wy{}z{q‚~xz||}s€~{€ˆz~|yz|~y„‚†€{z}†‚w|s|‡xq†{~uxz}vzqv‚t}vy‚€‰vz|z…|~z†||„|€w€}€z~…|{}‚‚‚ƒƒq|y€zƒ€†‚†„yv‚gp‚o€~|z{}x‚pwso}tm‡}qzxt{xy{€{}~~zr~uut‚{~{~x€o~z|z~py}ysww~rƒ}‚„}wŽz‚|}}u‰}}‚z~kr€w†„ˆz}wyz}|{}utx~rz}{rs|‚ƒ€x‚~y~qn|‚ƒ„p}‚}xze…xw—‚{{{x{zzl„}yy€|~wuz~x|}ˆ€w‚€r‡h}zw~|{ˆ}€|izx}€~~zˆ~z{€zzy{†}y€}{rƒlˆ†{~}uv‚|||v~‚v|ƒƒ}€yz|x…{|xvv|zr}|…q|‰x{z‡€Œ}€yzw{yƒ{ƒ…{z}~p{€w||{€~zyzx|ˆ{zxum€~€€|w‚‚qw~z}€{|~|y~y„’wxy{~v{uk€|‚†|t||}€}n|yr{~ƒ€z„qoŠƒ‚{}‚z}ƒz}}y€~Œs}||ws„‚x‚v‚€t‹ol{‚}}{…{€Š„t€|rl’}x{|€€w„€ƒ|x|z{€wx‰uz‚s…€zxwzz€{uz€€~‚|{}||{€†{ywo}|y€~~…yz}~~w€‚zyvƒx}‚~}‚}v{zvz{}zyx~v|y‰r…tx‚{zƒs}}uu|z‚|€…}}{{z}wz„}~|{v|xt}|}v{‚{z{|€vt{{|†vy}s~|y~„|}z‡~y~~y}|z{z…„xz}ymy~x~€luz‰~~{|}xzz~}uzsx}y}Œt}І|~}~}|}y„…{|y…{€w|~€{||~q|„}~t|~~|~ƒ}{}†ˆ|†z}ƒ{…q}€~yzxŽ}~x†€~€tyw{}y{v‚€t€}}|„ˆ{‚{~}}y{‚swzˆuw}|~wz†|x|€~~y{rzƒ~u€‚|„zxpu€{}ypst}z{|{xwy}||ƒ‚}xvh}vƒ…ym{€|‚v|{t~{}€ƒ|zysz†~wz~|}}zq~}y{‡}y„|~}k€s„‚{\t}r{{v{}z…|{ruz‚ƒ€}|w}›sw}€~u~u~€‚…‚q{|€„|zzy‚z{‚€ƒ…‡‚vzv‚zsrz~~{~nwzwzzx{yˆv|uw€t€~{|ƒpyzux~|{v‰v…€zy}s|{y…}zz€}~€y…{yw}j‚ˆƒwo€vzq„v|}€zt~}~€|sv{s{~w|y€}zuz{ˆz~|x~{{yv‚‚{z€{‡ƒ~}v~~€…}|wtu~ˆ‚€…~‚zƒ~}}t‚zˆq}vŒ{}}y€r|}}~}„{…sl{{€‰€}}}qy}‹}}}†Š}‚}{x~yƒ{~jv|vu‚}{x{sy|z‚€~|€{‰v€z‡xx€ƒx€ƒ}|…x}~zy{~z†y|}}}|{}~x|‡v|||w~€s}~u{‚{yz~|~|ƒ~g|ƒ||g„x}€}}ƒ|ƒ|u{yj‚vur|xy}l|}o~ˆn}}…}z~z|r€‚~~|u~…y|{€uu„uxy†z‚w~‚{~|†}ztv{a‹€v~|€}€|ys}z|||~|}y}€„}xy{{y~}v…l~{„c||}}xu{r{~w{{z‚€w†„‚{z}€†yuxss€zuvƒusx}|{ƒwx~yz~|~vwzƒqtxztw~y€u|…v|}}xxzyz†|~~zzw}€‚nu}w}z‚ƒ|…}|z†X}ux‚t{~x||u}„pyx{{uw}~~|t~‚‰v€uzzxy~s{yzy‚Œv~‚}ys{~~€}‚ysz|s€z{wz‚ƒ|}€|‚…z|~}u€}ˆ{zztpw{ˆruƒu|€s€}…wƒ}|oy€}{~ˆ‹ƒw{|ƒ€wx€„~{~‚„‚hy|†v|z}}|}|†{yy}f~ˆu~€…~zvz„{||t~…yƒ{zvy|~qzu}z……svi|}yx{~yy|„{€{||t|wxzx{usy€zuu~|v€ˆ|~vu{qv€{|wx€zy…ƒ{‚zy{}t{…€r~}‚†ƒxu}qrv€y€zxyu|zz‚‚~}{uw„vk}~z~~}u‚{}z€{{|€e‡|€v{uzyw…uw~‚‚w{|{|€‚~‚…‚€ƒpw|{}~{~|}x~x}~|}sy{zv‰|{y€i‚}wz|o‡|ny‚ƒ}y}€|€v}t„~{‚zw€‡{z}†xz„{~zv†mzˆz€||}||}yx‚eo„vxp„{u{ˆ†€zy€v{tpzu„|‚u|~……r„{|~~{|y|ox€|{syz|„zzv€||zyk|zt}€ytyw{”y}{|€vƒv‚z|ˆx{{€€~~x{{yƒy‚€}{x€|~}y~ƒ…z|Š|{{v{yu{lu~}}‚~{}}~ƒiw†{p}x~y}ƒ†~x|{„}ezy}{z‚zƒˆzzxw{~|{|}~|zsw~}ƒ€~~‚ƒ}yw~‰~‚~|‚|{~‡~{v}{€z{~‚~~w€}}‚x|u|uˆ…€y|y~x~~‚|{|{w||†||w|}}|}|{yyz}‰{}‚|zxuz~’ƒ}|~|ƒ„}u~~zƒz}qv~p‚|€y}€}{~{~~||}~z~o|‡y|v|quqy~t€{}{vuz|yzw}‚‚„}|{z||{{~zt‚|ys~w€wx€{~z{€w|b„{{}|~|v…ƒ~w|z~|†v|€qy€}~~}x}zƒpzt‚}ƒ{ƒ|}||}‚~ƒƒ~~v|‚|‡{~ƒ„…u|yv‚|€…€z~†~~sy{x{v~|}|€}}u{~€xƒwxz}v{~|z{}†{|™x~u|t}zy|t€}€}zzr|s}}w{}„zx‚€g~v~}|„{€y~{||{{yxwwt}}z|ƒ{~~lxt~xo}€~|ƒy|‚~|}†|}x{ƒvx…€zv}{{y€~{z€|…}„}€„†x„€qw|yz}€‡}uyvt{lvx{l}~†}}†}‹xzƒ~{†ˆƒ„…w|zyy}~wzxxn‚w{z|{ƒo‚tw‚~|„|€y„€{q|{}tly{t~€|‹‚|}|}t|{}€~…ˆ~~uw~„€†v}z{s€|}ux{x€}|~y€}„}}}…}|}{{€„xƒtswxz|…„|xy~€y{}ywv|{uy€p}~y†|x~‚€v~}}~w{}yy~tzxv~ƒ{{z{xv||~vzyz€}}}€~s~€{s‚‚‚~~z}y|~wxv}y‚{v€y~…~y~u{}{}|}{|st€Š~€~~}n‚z„zwl}~}q}|~uv{}{}~yo~‚€|€t|€tyx{€z‚y€‰{‡}vu|‚z{†{{{x‚}w€{ovx}v}xs{„qx||{|~{{u|~t~{„ˆ|y~}{z~x|‚}~‚zy}{€v~|yz{x~|w|w}{|z||}€‡€ƒ}yxyw~{y~|…~ƒ|€|}vz€{~z{w†}{p€y„}~l€{~}}}x€xxˆ~€|x||{€z{y~€}zpy{{xs|wƒ~|€|ywƒƒ|~ˆ}‚x~‚}|†v|{yvxƒzyw~||{{}w~ƒtyi‚u|{|~~s}wyy‰|ywy{{†ˆ}€z}|y|‚{y€}~|ƒ~ƒ€w}{}~‡xx€ƒ|}zŒ|x~‡u€w†{~‚|}{|~zy{{z{~†}syt{~|~€{}}‚w{{{|~‘tƒ{}|€yv„†€y~}{‚~wzt{s{|€y}|†||z…}v{~ƒyy†~uxsyˆx|y|{wx|}‚|u}|ryx}„€~}„}u~~z}pq{w|{€‚z|€Š{z„{|}~y}~‰z|yu|‚x~{~|€ƒ‚}{}}p}}‚zz~švzys{s|‚{vƒ‚{‚{x{{{sxu{„{s€~}|}r~y}wyuƒ}|{„qƒ{uy†wy|x{yy‚{yxw{†~„py„{||}‚{‚}€…}x|}…t~{y|{{|†vzw|}yyy€|‚x{up~ƒv~€‚€}€zxu||‚‰z~‚}|€„€€ƒ„ƒ~|z{zyu€}~„€{yw}|xƒz„|‚|~{‡x{}€t{xs{‚ˆ}yrxzx€ƒ~€‡w„q|z|†€||…„…€{ˆ}}xs{ƒ{ysvx€€zv{ƒv~pƒv{‚‚„}ˆ{~z{|~‡v{wy„~v~{zx~}„€v{~~x~|uvxw}tz|{v’}‚wƒotz{z|tv{|o}ƒu{}y€|y~~€yx|ƒ{xy}‰wz‘|zu{ƒ€tv|xŠ|z}{vz~{z‚{}zxs‰~wyy€q|zv~w„vwz}nx„z‘~xu~~€|„|{z{u|x~|€{y~s€}~~w€r{~z~ƒ‡}u}ƒw€zwvt}}w~€}„|x{z|tx}y|u|‡s~†zy}z}|„uryv‚‡~}{}~|~Œ‰y€„}y{us‘wyzz}‡zƒy}t}~yuv{…y|ƒ|vz„zzv~€{}~ƒw‚xz€{tuƒƒ‚q‚„}v}w||…{x~|€w{ux}{z‚{€†~y‚‹ˆ€z|sƒu€€wypu}w}w}wow‚~€z~z~ƒ‡†Œ€}{Š}~x€xu}hy}}yzzws€w~zwx}zy‚z}y‚…|{‚‚}z€x‚|xy‚|qyzyz€}wy„{sx€~|™|~y~yƒ{zz~s{†„z~x‚€}}}…ƒ‚w|}ˆzy†{‚xy~‹{‰}z~{‚‡€wzƒŠs}‡n‚|yqs€{{}zr€{sqxy{ƒvxˆ{{my|}„{{„|}}yko€}zƒŠ}wyzuqx|zƒ~~y€|€xu{}|{„…{x|pqwpy‚z|†{wd€€…|x|t~Œ|{‚_{€yŠy€€„sosrhƒzu}xt}q‚||~{zzx‚~‰vyxtnŠ}z~€wm}|‹V}{}qy|x{‡|{{|„y~˜}€ywvv€‚{{p|‹~}†…‚„|„€}‚~…{„}v}z†z~|~|{{…zi}v}~ƒxvu}yw‰{€€y|yƒvzo„„zzŽ}€€zn}|ˆy€~ˆ{u{uuz€y~x€yyo~u~z~z…ssy}y€vu|€xƒ~{‚‚Š}t}‚z~~‡wˆ†{{†{Іx‚‚{y€}x|y|ƒ}€~{~x}vz}|€fy|sx}tp…~}€~}ƒ}…zfxzt}uy€zwuw€…ƒ~ws~ƒzuvŒ~v‚‘}{}~z‚y~|€€|ƒz|~€u|{o€xzt‚u|€ˆ‚~y‹rz{ƒyu|ƒ~}z|}{|~w|yzy€ztr{|yqz…~}‚yzs~‚~†}xƒ‚€€~x†~z‚o{yzt}}uy‚‡…p‚‡xm‚{zwy{yx|lƒ{|x~{t~}{zƒ€yvzy}x€ƒ}w{w{„}z|ˆˆ}wv|}zv‚}€}€y€v~q€~vu}z{…wqx|wzƒy‡€}rq~|zs€wlƒ|||z€‚{ƒuv€~}~}{w{|wxx†u~ƒ||xzz{‚z{y~€„{€w~||}n|vu||Œ{‚|}|‹~}y{v{}s}vuv}v|rƒ…w€y|{~€|~{„z~x€t|~€|{}|xy~|x…ƒ}{€}sy}}sy|zŒ{x„yz|}htwiƒwˆu~|ƒ{}€s|‚t~{~{uz{uywvzzvz}xuyˆ…}x~‚ˆ{{yy}~{|}w}z~‚y{zz~†}z{z€zxu„|q|u„v}u}xƒ‚{yxuyvs|‚{zs|‚€‚€||}‚|sƒ{t‚wvs„yƒ‚yzuw{€~{‡~z‚ys€†suytx‚xtt`w||ƒ|{sz‡wx}€{|xƒ|rƒ‡w„u{~xu|}{v}z~€vr…yszx§ƒ{}ˆ{{„€„~€‚Š…||u‚„{‚‚‚‚x~…{}}{x€|‹}~z‚rwyt{‚z€€wt€ƒ€wx€~{wu}ƒ‹€~~w†x„wŽ}u…q…uw‚~y~zw~w|v|sv{„}{{z|‚€}fx…†vy|‚y{x‰}wxƒv}}z|{w~syyz„‚{rq}€„‚vv{u~y~l‚yh€y‚‚z‚{|zxnƒ€{‚„wxrqot††}~€v~{|{ƒq…}{vz‚€}„~‚mtr}~~‚{n‘z{‰{uƒ~y†r€ruˆ||~|z€n{zz|‚{{vzt‚q€~ˆ}‰‰}}rƒzƒ{{„vg~~xƒz€v{ƒyypu†{~{†…‚€}z€w‚{y}{~w„sz{ul€‡zs~wx‰x{|{{u~{{|€x‡w}}v|€m€yzx…}ƒ~†|~|„w‡v}|o„zx‡~‡|}po}~€~ƒ‚…v€vx~€€yq†v{‚y„y‡}‚|~|{‚w~v€x~zs…|zy~yx{€‡qy‚z~|zy€w}r€}~}|w|s†„€~†‚z…‡~ytz„„ˆ|{q{†{~ƒ}~{|x€s{…xz{‚e|w{„|†}}}uˆ}j{x€‚€s~{€~{z€{rzzƒ|u€…t}…{„{{x{€}v{}yysƒ~€~„|†x{z~{}~w{…}|„}~u{~{yx~z{{|~‹€|€z…twy}|{|z‚‚qˆŒ{}wz{‘|‚€utz€€€‚y~~‚‚~~tx‚{‹|y}~Œx{ƒxƒw~x}x€z{kŠ…~€|zz{yz‚v~~d|{{‚€~}y|{x‚~}zzƒ€uy‰ˆ~€{z€~{z}y‚xxzyzz€ƒ~~€~|ow}{~ˆ‚€ƒ~„v~y}‡s†‚‹„{w{€€}~~tƒyˆ{qzx|‚€|€y†xz}q{ys}wz|€…}|y„z„|‡~w€wzx„€{~€‚z}€x…~yƒ†y~y{…z†yƒy~„}s}x}}~zutxl{w„xz{€tz{…}~w{}|t}}r’}}v}u~wt~uŠu}{yzx|}z}{z…€xzyxzo|‚†z~‡ƒ~|wyŠzx{ƒz}ˆz€~|x}}}„|v{ew~…ƒ€}|€y{~||x~Œw~~ƒ{}}…€}{vr{z‚y{‚}}~yv~‚{u|v|{{ypz‚y‚z}‰ˆk€……v„u}t{{|x}q~}pyyz~~‡}}}~|tyuwzz~zy{ry|}€|y€}}€x\}|{{}}ƒ}z}€z~{…ƒ€rwz†w}|~z~|t|€w}||~z}{r€v}y}~Ž|{l€zx~|vv~z|€†|}‡p~|kw{|~xt|y{…‚m~{|x~{|x~}€w€y€u}x{{|~|v}~†{z’uq||tx}x{r‚z~y{{€}|{nzƒ{zx}|‚ƒ~‹xk{|xz~‡~n|„z{€t‰pƒyŠ{wxyrƒx~€~|vƒz…|‚yy|xw~yz~|‚‚}zt{ƒ|~€yp{€z{wyzw€p‚x{}zz}zz~{}wzvuu}€y|xsy€~xv|}}z|{€‚~z|}t|~‰}{x|z{|{zu}z~€}}…y{€z~qtƒ€ƒw~{~€twy†z|t€}{{{{}}~vuxuqz€…syˆrvh€z…ƒx‚}‰z€|{ux„|y~{~€€€||{„Žy„{€~t|zƒ{‡€|‡~|Œ|…|z|ˆ}z~|wx~~‰‚†~ƒ‡ŽzŠ{~|ƒs|t~‚‚‡~l‚~}|uz„|r}}wƒuƒ}~}~w}z}{x‚~}y~|y†‰w€ywy}‚}zy…{€u{}u{|y|~€oz}{…€x€u}€wx}~y}vxw|}„}s€€y€~x}€q|r}z{uw‚{ƒxuz{‚|ryv†€z{{{ql~…|v{|‹‚}ƒ{}|tt‚…{†f„l‚‚‚|††xz~w~€€{}}}„|y‚{}k|}€vxk{‰{x…{|}~vzwxƒ~€~x}|w{…x{xv‚w}ƒz~|z„w‡€„~~zd{{†~„y‚|uz|y‚~}}ty{mzxrƒm~~|€}zt~†„|x~{vvzƒ|}xzn‚ƒw~‰~‰||x`u„x{yx~„}zxy„}~†€z€€~„ƒ~yƒ|„€~ƒ‚ty€‚nwxyv€tw{€Œ{t†xˆs~…‚|wxu}„|vvvƒ{yp~z~{u||sƒ€|{€z„{€{‡vƒ‚‚~„{Šx}…}‚o{”v|€{‚„{€w‹{€{x€‡{|„†|{y…|w{…~}tz|}‚~†}~ƒ}v†€†‚ƒwƒsw}‚yrz|{ƒz…€~„y}rzy}rvz|ƒ~r†wtxwŽ|y~|ƒz{€tƒ{|}z€ˆy}‚}{ˆzvz|z€€€w|z‚€}}€zz}…~{~|y‚‚|}v…~xv|~{~||r~xz~~|p‚t€…{x‚m‰~‚{~‚„{{pŠ}{{}}}€s}„{smx|}u{~zz€t~{†}ƒ€~}„|x€|ztz|z|~|t}‚‚v}}€vˆ|xy„{€}r}‚‚„}~€u~]y‡}yuv{{xx||}|kx‚‚‚zw||}w}€|ˆyƒz}xƒ|~y|‚‚x{~v‚|r~}‚w€mz}zz„}zy†€~y{hkg~Šxtxuwv{€„y}uˆ€z}z~xw{t€sx|€v|†‹Š|~yx|ywx€|Šzyz~‡}z}z…x€utŒ†x|~~y{w~…€uƒu€{|€y}ƒw€vŒ‰€~yƒvzvƒ~†pƒ}‹€~|x~†‡ˆvx~ky©~‚~z€}~vƒll‚‚}|w‡z}w~€…‚}}urƒˆ|ƒ{€|tz‰‚tl~~zw|‚~Štt‚{ˆw„‚vx|{ux{~ƒw}€‡‚vz€y|z{‹}ƒ€x†yˆ{ƒ{~zx{zz„Š{‚„wyy€n{†‚{~ywo|zw€„zƒw|vƒwv‚ˆ|~||wƒx‚†^{z{sx…}}{{y~{||u€€}z}{~ƒ{{yƒr€{~zw}~{ƒy|†~zuxvŽwu{ˆv„€„{ly|yw€†ƒw}tŠ~ƒwƒyw„}sy‡ƒ}x{ƒ~|x{{svwxmŠ|{|z{{t€¡t|†xz€v‹€‚y‚ˆxo{r~„kl‰|{‚f†…„yˆz„†~|€{z|„w…}s{yu|}{€€y€~x}w{{~{z}ƒz€‡c~{Š‘€v|z‚i{€„u}r{|~k€zvŠ|~rqyˆ‚yx‚~qz‰€xz}~€‚ƒ€uv‚‚‚v…yƒ|y€zIƒzwxzƒxy|y|x„~uu~x{njv||‡{{qzƒƒ{Z|ƒ~xw{~~x„t™}o}~…z}v~~{||~„‚~}}~|u|{ƒ{}~f}~|}{~„}~€quu€|‚~xv|~ozzx‚}~y‚}{{u„}}~ƒz|}|yyy{~}|€y|z“{sxxn|€„z|~~y~~xs}}{z|~w€~ƒƒ|}ryt}t|y|{ˆv~{x‚{{{z~y~yx€€{‡zwt~t}|zwyy|Štt|}t€y‰~xx‚wƒy}t|w}}~‚}t||xzƒ{„{‰||†|}}„}w||ˆy€wv~z|{‚|z}{~{†ƒ~~w‹{ˆƒ}|yyxwz~ƒ}w„zz€zuz}r}{yw|~…y{z}€€zŠ€x…t}t~}rx||y€ƒ|}xz{~{|„y€‚zw}y{z}ˆ€„||~yuzyxyy~y}zy{z}y|r~„|{€yyy„zz~~tz~ƒ…ƒz…€{‚{„|}{}~~sl|~~‡|yzŠ}zx‚~p€~xp}€s}xŠ|z‡}‚~ox~|‚{y€{zzsvtxq~yy|t~ƒuu‚yƒty{v}~{x}yzƒzƒsyz}tx|„{|z|u}ƒ~wx}{xt{}}y}qv{ƒz‡z|„}w€~y{~€‚v‹v{u{|€~s€}o€€o„k…}y~v€}~|‚x{}yx€€nwv}~uz{||~y~t~r‚„~ƒ~€{|w‚~€w{~}y€~ypyƒ{‚z~€}wv{~}Šs~o}}ƒzw|xu}‚wx|wz{vwƒz}ƒ|yx~‚€~}{|}ƒ†x…y~}u}~{}{{€‚wu~~zƒzzz|xrx~~}yu||{wx}x€|~€z‚~y‚x}y}{‚|}|y~~|zw{~}y~v}„|ƒ…z}ƒ€|{‚q~szˆ{u~„€~~|y|~€yr||{‡{{z~}{z|ow~y€s{€t}}€|~{z{~|~~|ƒz{vy~yw{w‚}ry{…q|~}‚~v~€lxwzs{|}~ˆ~}{{~z~~€~€€|€xy{}€ut|€{«~}‚~y|~~{~~…’}~€ƒz…x|y€s|}}yzux|x|{rƒzz~}€|€|y|}|}~„|v}s|…|wˆ€€|}{z{}~}z|€||x‚}{z€~}“}y}{€u‰y‚xx}{~x}€zzy|€y€ƒ|v|}}€|†|xy„up|xm‚||ƒz~xxt|q|{z|zx{~z}}}{u|‚„~ˆy‹|~ƒzxz{}}||yz…{}}}}ƒ{yxox~~~…|zx‘€€‚~w~}|~‹w{€w}‚zx€~}w}~}}„u}}x€yyw€~w{}y€‚zy|u‚wx~z}{†u€|ysr~‚~z~‚~z}y}|”ƒ~z}~zt{x€~~sƒ}z‰~||~{ƒ~wz{z~„v{}{†n}y~z}|~}€~ywwyywwxq{y}{wxy}~xw‚zƒ€z{~‡z||{{€z|}~u…}y‚u~ƒ|{ys}~}yq}vtz{ˆw{w{€v||}|{{s}}‚~~ƒ|ƒƒ€‹‚€€‘}|y||~|{€|}ysv€}}u||zƒ{|u{{‚„{}€z~wsyx~~|zx}€„{€{€€€ƒw|u{}~~utx€wˆ‡‚{ysw€…xsu‚swv‚zx{}z{zuy†}z~yz~|‚}w~wv€„…~~w‚|‚o~xzw€}u|}zyw|wt‚vywo}€‚{€vuˆ{z}}{w~†„{wvvz}z‰~n„ƒ}wtu|‡w„€|~t€‡pƒy|‡€x„{y|€…}l„€{~}{{~|ƒ…ƒ}ww{vƒ{{|{{y~w|}z…{|w{}z~|€ƒ}Œz€€~}|}y††x{}pu{{|~jwn||t~zx~z}t†{zkvu‡{|w†~€wzyy|†‚€usxz‚t|~u|znpzy‚z|y‚€z}x|{{€‚y†v}‚ƒƒx‡w{r‚vw}~‚rƒ}y~bt{}s{~z|~||{}yz|€~|ƒz‚y{…„‚{{p…u}zujvy„|}|uk}„}|x}q‡}ryyxz~t~‡x~u}†yy}†|†~yyyw€„z~}{}~€l€xŠ}x‚zww{|~~~{‚~~|uu„usg~jw|}vx{€{}{z{}}|yy~‚„|x…„x~w†}zt€|u€p~ƒt|‰|z€€}}‚o†zy€vwyv~xzx{kpo†|u~|~~rw|~s~}„€xwz}€}||‰v€tvƒ}{xuy‚‚ƒƒ}y~y}||~{~x|xtypw~|ox{€||ˆ||{x€vlz}wyktxp}r}}t‚}y|{€}~{w€ƒs}w}…z~…{wu~~s||}{l|€|†}€}yƒ‚rzƒxx}†~€|~pk{|‚€~xp{€v|zz~yzvu|||‚{y€v€u}|xx{s~~{{~~{‹}}‡€tpwt}zy|}‚w{‡†|z~x~}z{{z€{‚|{t~u~{}uowt…|‚€x{‚}€wzn~…v~~zw†z}~€{z{|~wzz}y{{€}xyrz~„ˆk~|}~|~t||~y}…~{}‰v€y}z{n‚~~x~v‰{ˆ}|~m}vz}€{‚}|~s~}ˆƒ}z|zz€}|}{tr{ty}~u„‰~{€~z|{†zzyy}~wƒ„p‡~y„p€}u€v{‚„zx~€su{zu‚{zol‡~ƒz}s|u{~|w„~rz~}}zq„~…{{y{m‚{u~„zxyŽ€…v~ƒ|‚~v}nsb…x}€…€yx}„~„{~„ƒu‡|€zw€}~‡€„xx~w}{€z{s{‡}Š~†zƒ{z~y~|}|u}z~}{~‡ˆŠx{m{z|~{}~~‘}|z~}Štm‚~}t€{w‚n~}z~€}{†zxprztxq€€~‰€‚ry…yu€ƒUƒ{„w||wxŒzy{ypx{€x|{ƒ{||{|szƒ||y{„y„tyxƒz€|z}u„|~€z{y‚{„„sx}p}ƒ~yxƒ„|‚z{„q{€v|€ƒ‚v{z{€|w}|uxwz|~xo™|wxxxy…j}z„y}}}}o}w‚xˆ|€{~znq{€}‚}{y~w|ux~{m~‚‚sz~x~~u|qv|~‚z|’zt€t…ƒy{€|~„~yv~w|ƒ|~yƒ‚|uˆqu~z|r€ƒyq„g|zƒo~w††{{x‡‡}tpu‹ˆ{|p}‡~„x|ƒxƒ~„~j}w|~x}wyxzŒLz~yyyux~wx‡~{~ˆ|‰~v{ps}|{‚›w€‚‚}k~z{€{|v€xtqƒ€y€|z~x€z~{~}€|n}…}xwˆ{|……„mˆ„…~~ƒyo}€|~|tr•~{xz~†y€ƒ„|…y~€‚yo€~ƒ|€}„z}z‡w}vy~z„|‡†{~{z~ywuzwx†‰yy‹xy|‹tu‚{~{yƒ{x~~€{|ƒ}zyŠ~ƒ{mfyy}†x{ry}Š|xy€}‚}oy{xu~}‚€~rtt‰vw{Šz†ƒvŠn|ƒ|z~}}~}zww~}x‚‚€~}|q€„t}|…yqyw†v{}“y{}x{Švuvw“†ƒxy†w|€ku„}v‰wy}{zuq}‚ozoƒ‚uxx}¶†‚|‚ƒ}ƒ}|}†o{{{~„w‚„z†{i|{€tr|pƒvƒ}}vˆ~q~‚‚~y~„x{‡z‘x€€€w{zs…xxwz€xkx…o‚}}uzzvˆ}suw€ƒyˆpu}y||l}|s~zx{}}Štw}x~~{…y{}‚}€{†€‚tvzq~u{yƒq{}„„ˆ_Œwy}}|w†…xwr€€u€~tƒ…y€ƒ|~z}ƒl}~z€…v}z}†xu|€€{ˆ€~s|~|…|x…ow‡ƒx|{}tx€{‡r~|||€|zz}se}}{~qz~~…~‰r„‚xZ~‰‚}u€|uŒz†~z€w{}‚|x{zq}ky„~uzvˆtt†n„…x€€ojuŒ€€‹€|{{|w}ƒ†qu{Ž„€sxx‹{u€ys€zx‚„zy}}w{~}{„g……{„y~t~{}|€zzzxx}|y…}€}{~}{v~}~|€„}u}{‚€yy}{ƒyx€‚}†v{{‚z€vz}}{y€~{|€y‚|yu~z„€u~~€ƒ‚|{w‚~~z|uzv†}yz|~u{|‚v~x}~wzu~z~v{{|€‚x{{xsr{{€o}w€x{{‚xz|€|‰ƒ}{~|y{|xw†‰~{}~‚~€~|†~sx}€…€|~€zxy||ytz|~v||zyz{x{z…t}~}~|y~ƒzxz…‚|~|}zƒ{~zzyv€z}|xxt|}yˆ‰u{}vx}wzy|s‡|~~y}w~vr}}y}u|‚|}}s„€€~|€}z€€€~‚~||x†€}n{{z|yƒ{|t||„z…v~tzyz~{z~€~€{{~€|ˆz|~~x|}~‡v~w‚{}z|~{|z{zzz}z|{}€x}x€„}„€|}|~rŒ„‚{v…}€}|z€||€ƒ€z{w{€{y€€y…ƒr|x}€ywƒ‚y}|zˆ|}~~|~{ƒxtzy~z†}~z}~|yw‚}ƒy~€}€w~„}sz‚{z„s}…ˆ…r†xrww|‚…{vy}y~~}~‚„mm„…x|vu|xuzu}}}|vxy|…tz‚xŽ~ƒ|v~x…}€}ƒ€}zƒ“x€‚|vƒm{h{€|~y‡y‚~~~ˆ€|†€y|z}x~wo|vr}‚y€yz~~r‚|u„|yy€}v€}€xƒ~€qrz~…‚ˆ{ƒynw~{}ˆ|z„z€hZ|r~zt|x~€„{|v{ƒ|~‚~u}vzz|‚nq~‚{{‚‚†€np…x‚w{yƒ{„{~|n€y{‚z}ˆh…†‰ƒv{z‚~xxyƒ€}s{|xr{eny}s{qv}v”‰{|€{t{…v‚‚zw|x~}€}~yz{†xqy€}y||{}qzv„|pf{{{sƒ‚v|vs~Vzt{‡ƒt~|z€zx„‹}|~|p{€}y†‚t}{q„z}ˆtx}w~~}~…y„‚ˆx~~†}us{{€ˆuy‹€v€}€z…ˆ~jw„ƒƒƒ†y~zy{}zwpt„€ytw…a€{s{‚‡oxzo}xzz„u}wu€}|oyvwh†”†|~}pz„€„{|t|zˆ€vp{wz}y„x{q|wzƒ‚ˆw~~xƒ€~ˆtwx}‡€…~|v€~y€zŠ}††|€w}y}s|yt…€xy…}†w|}|{€u€z}x|{|}~†ˆ€~zrvx||„z}}z~u|€‹z}‚ƒuz|‚{p{~{u}wŠ{y€~y~zyxx|x‚y{xw{}q€~}o~‚ot{}†~„s…}|wzyyyˆu~||~wx‰{‚|~‚{z‚}‚z„||}y€{~xzx€}{‡‚}x‚}„~‚{y€xo‚Ž|}€y|}}}x|z{‚|x‚}~z€vyˆ~sz…w|€v~‚~|~‡y}ˆ~{~{s€yvu€zq|wƒ|‚x…yz|‚yyx…u~~‚||€|x|~}~||~||z~~xƒ|}~~~x{€{yy„ƒ…~x…w€x}‚||‚w{~tw}€x€€„{|zŽ€|y~x}‚}}ƒyyv‡~€z‚rxƒ€}ƒ~qvxv|~u~l…{zˆ~q€„}|~„~us}}€}{~yv{|~}ƒ}y{zŒ|}€~ƒy|ˆwz€~„|}~x~{ƒ‚yz}y‹…}‚ƒy}}{w{zƒr†|}|ƒv‚x{|z|„}xƒ€x…t~~x}}y€{{‚m}~‡x}|€x{vru~‚yz||€~€t}€}{x~}rwˆƒƒ‚~€vy†€y€}{‚}†…tv€~sw~ƒv~~}yu|x|ˆdv}r{}n{v}}}ƒ|yx|r}s€~w„‚w{‰ƒ~{xp~|}p{{v‰o„yu‡{wy|x{x€…€~~‚}tw€†{~|}{||ƒw~†‰{ƒvz|}|„}}{…uy~v~x|}~z}}svƒ€…~{}}v~zƒ€}€u‚|Œ}{†{‡gŠ}{}z{„‹€{‚zxtvƒƒ‚yz{u|tz|~w}xŠz{x†}w}€zzxw}€~{{{|r€}z†yy~~{€~vsuz||yv†|~ƒ|}~€yw{vq|~zz†~|x{}}{zv~~{{€wu{|{s{v}|{€w€ˆyx„€‰|z„yu}w{}zv€ƒyƒ…}v…‚n|{‡}yt}t‰w~s€€…}~sx|…tww|wu€‚z{xs‚~s~u|yy‚ƒ}{{|~|~‚†}x{zy†ƒys}}{~y{}y…ƒuy}~|ƒƒvxy~q†‚zxzzƒw€~hzx‡|z~‰zŽ‚{†t{z{x}„†xv€€|w„w~}|ˆ…ƒyˆ~~€…€{zy}p}x†{|Š|€{~‹~~x}„ˆ}~{vz}{ˆ‚xˆxƒ~€y†|‚zy}z|sz}~|€|†„„x€qŒ~€~€xv€„|~wxxyr}€€{}ƒ~{w€ƒ|€~€{}~tƒƒ~|tw~{yv|u|}xzzvz}€€|{†~|~hw„}u’{z‚€su}€z~|}ƒ{vzz{ƒ~…z{~{{‰z~twx~‡}t~|wx‡vƒTwyz}ˆ{}uxSy€‘~€€ˆx~r{w~€}|„vƒx|{~ˆw|}ƒƒ€{~}sˆ`yz€v…}€ˆzxˆ|‚w}~~‚€y}~s€y†z}…ˆv|zs|Š}tx|f}|~†}{{€|zz†‚wz|‰|pvy{{{w‚‚„|v{{rouvt…~}~zy‚}nv‚{|}ˆyq~wwŒ~|lzv}w‡}€{ˆ}†€|~}tˆx{us{}}{€‡‡yv|~w‚lzxg}vyi€ƒ}~|€ywxƒr†ƒ}{{„|sz~‚|izx~s~}€|w€yy|v€g{z~u|v‚}{z{o‚„rvŒ~~ˆy{|~†u|€x}€{ƒv{~}{~}~uyvw~ƒ|~vz|w{|~~~~x}wu}€…}y~}zz~~v{€||†nt€t~~v}}‰€|€z}|}|x‡~tˆ€~|y€†{z{‚y€|}}|s}|‚}x|~v~{~y~ƒ€{z{~w}f~wy~~w‚}‰…„wl|‚|{}{v}}x„z|uww‚{x}||u}~yw|{{€yuv~x}~~}~s}z†y|}…|{x|€y~|zt‚~~{z{w{w€yso~‚|~z~zvy~}~|w{€ƒƒ}t{~}{€|~€}Š|‚€||}y~~y}x…v|~~‚}}||zƒ||€}ƒq€z}}o|~€€}}vx{wˆz|ƒ}w…xx€|}ƒx€}||vz|€}|yywszvzt|{{wƒyzd~vŠt~€}z‚xy~‡wyƒ‚|ƒ|…~{ƒk~}z{}~€}wq{~wzzy}Šz~zyux~{|}€}w‹~py|{q{|w{{z„}‚}~|{|‡xvs{~Š€x„€z€|}}~ƒ}|}‚‚„ƒ|v€||qvo|ut{}‚y}ƒ„~~||t{z{€y}„|€|…~xxu|w††|{z€sz~{zxp}}€}u}{|z|z|}x~}~x~vt~wƒ{„|z{x{…|{}z|€|||pŒ€xxl|{}€~xy{uu€|z‹ƒ~ƒzƒ€ƒx}{|{x}ƒy~zy„{vz{{€~}~y|}v’|„|„zl}zxv|r|y‡yuz€q€}}’x|yˆu~y}~{}}|mp‚z~yxo{~|}x~ƒ{{~†Š~z‚{}}|x{|{~€|yy{x|†}~‹~}~€„Œ~~w{|}z|z€}{x{{|v|xvz}su~z}|}|{€‰†~||~|{€†~}|{zy„x…}‚}}|€|xŒ…‚„‚w~}~|ƒ{y|€|‚x‘‚}€Š{~w{~€||†„x}{z|{|z|pz}w‚~}}yo{„w|z{}ƒ{ztv|~€~xw|ƒxƒ{||u~‚y†{„Œ}}w{uwz~yu{x{}{‚~ƒ‚‚}{~|{}~zzŽ|t{}xz€|Žy~|‚y|{{~~}zqv€~ˆz{†„{{{z~yx|€Š~z|{{|€|zuœz‰‚„{|}€s}}n{‚z{~}‡sp{‚j|}}{„}{||€~oy~Їwt}~€…}m}{}yv|v}zy}|‚z|„{{|y€w‚~z{z€{w…ƒ}uƒu…y|{||€yz{~xy{}y€€~†zzw~|||€„~}‚vzˆ~}‚}}zw|€{|xz‚||ƒ~y€x{‡}‚}w~}z|€{y|}t|†y~{|}„~|{}~}„€{€€}‚{~~oƒ€…“~}z~x|{z|}y}||wxw{‚ƒ€|~}€{€t€|v~~~€|~Œx~x€{{‚†sx„ˆ€|‰…x€~‚|{{u{€}ƒ{uzs~zyyz€w{}~w~{…|‚€}{~|{z|w€z}yv{~v}Š~vyƒw{||~|€}‚|u}…€~{~z}yv‚{}w|w{}~{‡|‚|{…~„zƒyo‚…z{z€y‡‚‚{‚w~†|yz…w{~wz|€v‚z|}€€}w|…u~‚}~}y~yymŒ{ƒˆ}wx|zy†ˆz‰€„|wwwwuxy|}€‚{€|s|€}w{‰„oƒzwv|‚w€zz{„y…y‡x~Š€s{uyx}z‚‡qƒu|~j}y~ztw€z}z}„‚t}ƒ~wxzy}|†{{y€€}‚ƒy„{~~}‚{€†sx…Št‚Œ~uv€~k‚~‚}}wzx„|„}{~w„€v‚…‚tƒ…€y{~wwqtr|ƒzvy†zyx||~Šw~{€~uz{~~{z{y}wƒyy{‹y€|ƒ|o~|™„so„q~wkm€y€{{}}z{~m„t‰z|{|z~w|~~zyv|‚z{‚~zˆ€~„z}y}vm}€€r{z‚~|{xn{~~y{‚~…o~}}}…|}€sx…€‰Žw†}‡}x€{|uzz…~†w…|ˆ€‚{uzƒyyzx}‚~v}vj}wƒyzw†{}‰~x„ƒ|r}r~ƒ‚ƒz|z{v}y{~‹€|ƒ}‚{‰zƒux~„…n€|m{{ƒzy~xv{yp~~s„ƒ’|‹‚}‚Š~{|~vƒ~{~q}~y€z{v€sr€‚xxzxz‚Šxq„ƒjzx~‚‡z|vp„~zv€k…ƒ€}|w€†|~q~{€}}xyƒ|wx€~}rvh€o„vz‚|‹{w}xn}{t‚k}|s|vt~}ƒ|}}z~ƒy{ƒ}y‚€|x|{‰~zz‡|w…x||~|~y|ƒvyot~}„‡„ƒ‚~~yz|}{…}{w…€~{wsxvy|yˆ{}}~t}~€|€‚y‚„p{‚„~xz~{|tx}y€xz}}~u}~‰|}tƒz}}vv~vuz{€zx|‰}„xzxz|€}€}‚y~~€~„t{€z|‚zƒ|z†z{wŒ|…{„~~y|}}~|s{v{w}y‡}€w€w~x„v{‡r~~}y{„|z‚y|v€†xz|{‰€zw~~‹y~†‚y~†}}|{~u|„‹zz|…€~{}}}|‚|zzx}ƒ€|ƒy€€€z‚zvƒ~t{|†zzxƒ‚€€€wv{‚‰z€~||}y~x~~|ƒ}y{x‡{v~ˆzo€~~z{{w}m}{€€ˆ…s„||t|}€€}}{zysxyzt…{~|vƒ}z“w}z|~|ƒz‚ƒ‚w{}z|ˆw€vv€~}}x{||…z}~ˆ|€ƒ}~{yƒ}r~~{x€vƒz€}yzy~~{w}}„‚}y~|zy~ƒwz{„w{€v€z{wszw„€r}o‚ys€z~w}x|{z|vz~€}†‚z€y{u|s~€w~y{~{zxy‚‚~}x{z~w}{|x}y†}€y|‚~{z}}…wzy}}{}~Š€w}~ƒ{nuyyxx}zxuu}~}„|{szvy~~‚†ƒwv~wƒ|{u{~~€„‚€‚x|xvx‚xx~yw{|~xsqz{}‰Ž|€w~~|~yy|z„z€}z|}x{y€}upƒ|o€z|{~{z€}~~zz~t~}x{€xwy‚~~€{{w{uf€|}{}€z‚}xzs‰z{‚||‚z}€}sw|{s€}zy|‚u{ƒx}ƒ~t|ƒ{v{vt~|{}}}x€~{yƒp€y{t|rw€w‚‚t‚…z~s~}}z|{x|x„|w{ts€~~wuq€u|kp}‚u}z~huzz‚zu~|s|‚z|r~}…u‚‚z~}{}xv…wq~{|yzw{{ˆ|{v}zzy|ƒz}hy€q}x€‚x|su€yx~{m‚„x{|xz}}x‡uƒ€v}yz|…vywxy~xz||}zxy}xƒ{r}Œrv}|~}{~x}u…|ww{}|}€|~€z~zwzz~‚|zz}{yx}~w~~ƒ{~zs|v~|x~~|~‚z~€}~x~}}z†z~wx|{{‚€}€vy}~†|{€{yzy~}zyw€‡€wwz{}„}{€}z}‰€v{{}z~}}y}~{€x~€z‚}ƒ}{y|~x|y„‚{€|z|}}z}€|„{ˆyyy{~}…‚z{€~{x…€zp}t}~zx|}|u}ztxz{~}v{w{oy}}~zws{x~s~xxz|{€vq{zz~€€y||}yw{~}y~w~{‡v~~}ƒ{~‚x{zƒzƒ|~{w|{}}zu€o€|zzyyz~szxv€}yyŠ|}~}}z€}„{„{y}xz~~}{~|ww~||z|„}{Žtz|w€zzyz~sy‚y€v†‰~|zw~ryz|v‚|u{x{x~|}u€v‡~z{~{|{zxo}|„‚|yuƒ„t{t}x{}{…uw{|{|uˆ|y„{~}y~~{xy}|v}~yw~y{w|vz€„u}}x„yzx|yq}stƒ€wxpƒ}‚…v|wƒˆy|{„|z|}|w{|tzvyxq†…‚…‚z|z|x{{~}x‰wwx‹yxz~‚Š{‚}v|~z|x‚ˆ‚}€v„sz{~‹r|{~{t{€wvw~z}}€x}„|}}‰|z|‚|z‚{zvxq~{yv}ƒ}|ˆz‚y~}||z‚qx|€€}~|}zx~t{}}z}{{|{v‡‚~y|†|€v}yƒ|}„|€|t€€z{~€~x}}{v~‹zu}}€}†‚{‚‚ywty{~y{}z}q~ƒ|vuƒ‡~‚…zyy{}€}}x‡yw|w{}u~„ƒy||{‡r|‚}|{xy‚ppy{|€‚z„}w~ƒn~|‡xzƒzs|„}|sƒ}{|t~{yt€|np{yx~|‚y‚~~€„ˆŠqt~|xy|€|~}zy~|y~u}nˆz}u‚~{€’yw|{myzt~||{zwx…~ƒy‚xw‰x‡}€|{{z€€zƒ€z|ƒp€|z}yy…xq|{|x~|zzxw{…„„ƒv}r|…‡ƒ€{€ƒ~}zxzƒs{t{zsv}z}}sy|}~{|y{||t†|}~}ˆ}y†zu{y{xyz…z‚~}}x~pj‰~zw€x|ƒz{w~zwyz{€~{|y~€wŠwsy}‚|~z€xz}|€~~|ƒ|ƒw||‚z†‚ˆ}t~|x|~~||~u|uxy€|t}‚„y~|u{€ƒ{}izuw}y~m}€u€w}{~y€s}{„~‚p|zt~xƒ}|xo}†}{„y‚€vv||x‚}ƒ~|t|vzm~wy{y|„~zyƒ‹u~zy{|xw}‚||€€€y€v}~~‰‰}}|~|~}|zuvm~ƒ~}zxwx~yv{‚q{}~€wv|tx|uuzuzƒ|y{{‚~ˆ}|~tzx|~{{}z|ƒywxuy…syzv~xw{{x~|€|}~{{xzw}‚~Šu|~||z~zz||~xp}|~xzs|‡}zyz{|„{‚|z~~|z|‚€ˆ}~y…|y|…{||}‚m}|ƒ~r}~}~xƒ|zƒ}~{}tz~w~wy~{z€vs~{s}yx|~~}yz{„ys|u€‚~r{ywt}|}€|~zu€s}x{~|‚{{vxt€q‚xxo~~z‚†|‚x}|uv‡y|}u|wqzts|z|}}||}‚„‚ƒz‚„yy|x„‹~z{{sxn|wy}|w~kvwt}‰w†‚z{~}z|x‚€qy€~„z}~z|{|{{zy|…}‚}x~zz}…|…||ƒzv‚~zz{y€|wwz{}v€~{„~ƒ}{w{z{|zv}y€~}oˆp€|}†‚}x{‚|‚{x|~€}yxz~‚€w€{w|„{ƒ~u~x{}y}Ž‚u}yx|yx€‚ƒszx€|uv{|{}zx|zup‚u}}uyw|‚{}|x{~€{~|q}€‚|wwsz~|j|~}}‚~u}zxu€uˆ€}wz}„€|y€z}~{‚|u€x}{}z†uqx…z€€{y~‚ƒ|zy„zs~zˆyƒ}ƒz|x€}}~}{ƒ‹€„|y~{y|~…‚v{yz{ƒ€€w~€z‚vy}vy|||||~zqy|‚r}|„zt|‚tzss~zxx~zqyz~w€~ƒu‡~u~€}…~{~{~‚ƒz|‚}|oxz{~zxz€vz|„}urƒ„z€|z}}r}{|z{zzy{ƒ}„z‚~~|}~}||x€z~{|y€t}|w‰}zq€{{{~}‡~€{~}{vz‚zlyz€xv‚{|}|zu€y}|}„€}~yzz}ƒs‚|xz…{w~z|v~z‚{}€}x}}~yxy˜zz}x}}}wy}~wc~w{~Š}xpy€…„‚||z||~€~…y~„{r~z~y€„s…{u~zƒ|‚xy{}€€|tv}}‚uz~|~z€uzy{y}|‚y€}}~|~€~|zy{}ww}xx€zvyvt€z~~€{„|x„†{|}|}{l~x}{„x„z~€{‚~€€zxw~‹{}y|twv}|v}~}~yv~}ƒ€w}vy€ƒyywˆ~€}~€|}ytwxz{…€~€vz}‚‚}|uz~{|x€„„‡|y}€z{}~~p€xyˆ…vx~{zz~{|x€~{{ƒyuu{}}~€~ƒ~x„{{{z‚vww€zzm~}|€zz~€|†~xssw€}~w~zŠ€{…uu~|~{zw€|}y~{~x~y‚„|x|~vy…~|}n‚Žy|}yƒyƒƒy}x~x€x}~z€†rv|z~}…{{{~|}zt|y~}„‚}€~‚}}…e{xŠ„x~ƒ†ux}zw|z~y}~~sz||{v{‰}…~zyv„lyw}|ƒz‚‚€x…ƒ~}~z}ƒ}w~}}€~{}ƒ…wy|{w{€€w}}z€~~|ˆ{~vw}ƒ{€|z‚{o€}~}zz~y}€q…v‚~†y{‚w€‚|‚xu||yy{€Š~qy|}~y{ttzn~vu}~q€{{zzˆ…yuwr~t~„…~}yy}y‚}z|u€}ˆ€y~|{}€}|zx†|}ƒ}yz}|z}o‚wvx~v{{~{{}{~ƒ}z{z{{‡v}vy…}~v‚€~}{{~„v|q‚u{~u}ƒ€}ru~y|~v}‚{y…t{x}Š{ƒv|…‡~|}‚y€x„{x{~wsz„}vux„~{pt}|~{w}~„{z~ƒ}wx}x|u„~rm|}x€zvyƒx{~}wxxxv€|x~†{}py~€rs{xy€yo|„„n„}x…w~r{xw|‚zuy{}~}v„„{{€}‡„uƒ~{€}|‚€v‚|zz€‚~|t‚€~|wvu„…ƒ€~}…}€{}{z€{€|~vz~}y~‚}z~~{|‚|szˆ€}|‚zv€€…„s~}vƒƒ|y{€{}„s~|€|y~}ƒ{u„ƒ|€r‹{x~zƒŠ}wztvƒtw|}†}x|€ƒ{{{‚‹y‚w‚}}~|}€yx{z~~y—yƒus}|}{Žzx~zz~}„{yy|x~}|x}{xz€y|j~~{€z{}r{}s„ƒ€zyx~~z}r{z}|y}zz‡{~w|{Ž~~€{w~‰…}x{~o}€}~€€|r‚}|z†€~xyxx~~„~„€€y~{{|}z|‚lz~zzz|ƒƒz|y…k~‡|€}ƒ…wzz|}kv||~€‡tvnw|}r{{…|‚…ryz†xx~‚w€ux|z~|z‚y|ƒƒ~w}„|€}~~vƒ‚€„ˆ~|{m„€€€~{xv}w~u|szn}‚xy|{‰t~w€~ƒ‚vv€zz|~{‡~…p€z‚~ss||~yˆtv‚|r{~‚}zu|r‡{}}€~ƒ€~z|}ˆ„wz~‚‡u}{z€ƒ}~‚|‚†w}s|€|u}}vx}uz…|€~z~‚€€|€x…‚ƒ}}€{o{~‹}Œ|yrˆ~€€w€|z~~}vy‚ˆ}{z|‡|}t{€w€‚„€xŠ{y{yxyn|y}n}ƒy‚w~}{~€~w~y‚||‚z{~‚{z~s~}y|„}t€y„€|€w‚z{{{{w|yu}|{zw€~~ƒ€z}~|v}}‚||xpysƒ„†„yz}{y}}s{~|r}y|{u…‚}x}{|~yz{|zuyzr{}vy}…~~}{~zr~‚}~„~z{q€s€|z‚}~€{~„}|~w~~zxv}xy…€x{zu|}~y~|}}zw~‰yxr}}z~}}}{~}sƒ|{‚{z~|ƒz€|rm‚~v|y€{wyŠ‚~{‚~~„~{z}x{pz~x|~}‡zv|||zt{u|{‚z|}€w€{tx~x~~wzƒ|ƒw}uƒwz|…|{r~x}{zy}„}{~ys}ws~}|{{||x}}„u|vyw€||mƒ|m|{ƒ{z{€€€~uy~„r~}{yˆy€~xw}{s{|~r{y|qv€{xt{€€}€w€{€w{‚y|t|{|{}~|ƒyz{}z~}z€y}r|u‚}€‚z}€|x€||ƒw}z†ƒ€mw}‚z†}u…w‡{{}zl…w…|{t†}|p‚}w~€~wrvxx}xz|~}}ƒuw‚ytu{~{‰ƒ€x€|{~†|y|~t||ƒ||~{~txuƒ}‚xyy~wƒ†yv}…{z|{~z|y€|}~‡z~‚‚z‰z„~z}x‚|yyx~‚€}w…|y€}t}€wwzy|ƒ{v~~}u€…yz~{sw|t{‚yy|{€}|x€xyy|‡{}y~ƒx{nƒ€‚€w€t}{}~{|{x‚…}z€€y€t{zˆ}}xq|x€€||ƒ|}tvu|}u‰}x}vx{x|ƒ‡ˆlz~{}}x|~w}€{„xz†~}ƒx€yw|€~}}sƒ~ƒ„wt„|{rzx€€yu}~€ƒ€|€xnw}v}~|w}~‚urx~v‚~x{wzvv~|z{€z}ƒ{}}}€€s|~…|‚zz}q}€†}}z„|~{}x}€|€}}|}~€‡~t€|q~„}€}wƒur}x€r~~xy}~wƒƒ|wx|uƒm‚€„{x|~x}wwƒv{}|…„v{z|Šqw}‰{€}|{~†Œy‚u…vx€zƒ}~zxz~~uzˆ|}‚{}~||z€o~‡h~zƒs„‚~€w|}|tˆ{z~zr|z~}„x{|~y~Sxy~€{†|„z„m€‡Šy†|zsq{}€u…Œs€ƒw|u|vƒy‚yˆ}†}}r{‚†€x„o„w…|‹zƒ}{Ї|}tw}z†€‚}‚v€ƒ€x{uzv~ˆ{xŠˆvyxzus}y†y}~|Œ}}Šy†xy|„‚|Š~~y}w}~zuuvtƒyŠz}Švƒl‚|z‡vŠw‚~zƒxpzs~|„~}v‚€m‡{{}{}t„my~y{vy{|yx{‡™†r‚|w|†w~ˆz„”z{…vy„€w‰x€lx……ƒz„~}tw}„h~wiƒzzos}}€‚syv~€}n‡|>v}•„w„zxyŽƒ…|‚m‚€|~z™|y‹v^u€€z}r€~yƒy|y|vp|y{‰w{}|x}‚‚~†‚ƒz€‡‚z€ˆ|‚w‰{t€tx~||uyt|}’{{y}}~kƒx~‚uzx€z‚vz}‡…v{}}tv€}{…u}„}w|ƒwv}{˜m{sƒm|ƒ}~}†‘|…t„x€~}q|tx~}x…}z‚xz}xt€y{uvzr{†7v}€{†||y…†~‚}x{}zvwx{}|xz„‚|~{‚…‚p|{y‚{x~…~zw‰€~{y||€{x{{}|{{~}|…~~{ƒx{}€|}}|wyz~~~x|…~{kxw}|~|}„|€{y|{z||…{‚~utz~x{€€u†|x„x|‚|}}|v}{zz}{‚y‚z{}ru„{y{~~~‚}}y}y{yxt}~‚~|€|„}|}{{q{‚€€…x|~~~|||q~w€~‰|ww‚}€z~|zu„‚u}{ƒ~|o€€xxxƒzy€xty|v}ry|v~wv{„„|„}‚€€z‚t€}ˆ}y|y{|}~x~~ux{|}x}}€{zƒ‚v}sƒyx€~„y~z€|~z{{€…y{~ƒ…€wu~w|{yx€v}x}{zt~€{}z}||„}yƒ€|{{€~yn}sr~‚}ysz|z€|u}w…~ƒ„{vz|{zw{{}y~zƒ{|{‰|z||ƒ{z~t{{~}x‡~}}~xƒ}†}{†r}z‚xˆ~x{„y~ƒx~……~u}yv{y{~y„t}v~w|€y{}~}nwuy|Šxp{‚wvˆ€|y{x{yy~|‡{ue€ko~”t„‚}yt~{‚t}|s‚szyƒ|{z}{xxs€x‚~}wt|‚}mw}zf~q~}ykkyw||Œ}s‰zx{{Œ€†x€}{€vz}|{‚t€|uww€wzv{€{kˆ‰rzuw~ˆ{wswyv…xws{ƒƒmƒ~]rzqw€{„…q}€j{†|‡{vxzx~g}v~…ˆvnz]nƒ}Š}vmu“‹p€ˆzvzy~rs‚{|s{pzxvoyp„i‰‚p}y~‡ƒ{„€p{ƒzgr{}}…y}q„~r„vtq||w|~{||s€mysus{w}t~x{xvlzuw~x{~„|yz}t~zv}|„x{rytŒŠy~~z€tu‡~{zru||z}}‚y„~„†\nxy…zy{zŠuy}}xyw{y|y‹zz‚}sc‚h‡{}h{az|sw„„uyYn~ƒ}z{‘u~wu€tt‡h}Šy|x}||_|w|„xeuy\†„wuƒwwv{u~y|€s†Gƒ€xry|n|}x{{p‰†}~w€Kx„~~…wƒzub€‹zƒƒ|pŠu{|‡}|‡y}„zwz{‚~z{‡x}}zw{z{}‡|{~y|v‡|zz‚}€z„‚z|xz{t|~~~|~~ƒzz~ƒy†}|t|||y}}€zzo€„‚s|}ˆ†s|~{uz‡~~‰~}x}~~{y{||zzt‚}|„€}„zv{‚€yu||‚|{†}€||~…€€y‚{{zw~}~‚}€~}}z{}{||}~€x~€‡y~{€€xx~|„|{~…‚|{|||}{}|…}…|{|‚{zxzy|}}}‚‚s~…|{}}|zz|Šwz|‚~~}w}~z{{{z}{|~z€~v|~~|ƒ|}€w€~ƒ…~}|{€€€{xwywvtyy||~||x~|{{y|{|w„{z{|zz||‚xx|~~|v|y€€~~~€z~||xz|€z~y}x‚{}ƒ{ywyz}{|qzw{†}z}{‚o{{}u}ƒ€w~|}~|xƒ~}„|}s{{y|~||€|v|}{|zzx}ƒv{…‚„z€w„…~rwƒ~~{}‚v†~‚‹|{}z|€€{€„wzw{u„{xx}xv}‚t}vx{€€~}}}yx}ƒ{yƒys~€y}‚y{}uxxy†}|zuy‚r}r~€}w€€{|t~{}wz~u€|z~„z|ƒ{{„}~}ŽŠ~}‚xƒ|zxsr{{zy}||€ƒ|„{x‚ƒ€„„z~‡y}y}~}w‡‚z{†|q{€{€y|}…ƒ~~|€{y‚||~„ƒtz~yz‚{}y}|v|‚n{z€€y~y~~~}~|x‚|ƒ}z„|vu~€xƒ{|†}tyx}{}~{y{zƒ‚ƒ€}x€|€|zz}‚zƒ{‚~~ƒ{‚xz‚s{€‡y|{†u€{|t€}ƒ{{wy„u}x€|€yz~}‚~€|}|{ww|}u|y}}€|vzt}|€†|‚}~~~|€€~{z{uq}‡w‹„~{}~~}z~x~z€x{u~z{yz}||}€}|~ƒ}…zx~‚~x{…~~~~€t€xzy{{~|z|{z…z†|~yx|„z}€|}€wƒz€w{||u{€u€z|€„~}uyx}wz|„{Štz|z}~€w}€€}‚|u~}x|~}|{t{~|‚|€…{z|}~u{zz}x~|„|}‰y‰„~yv}zupu~f~~v}rwƒ}y‡y|}yt|y{~zzwr|ƒ„u}y}v{~|x~w~|€~z€syq~‡|v~ƒxƒ|}|}}x|}~|xx{s}€z{ƒy}…v|s~ov~||€€y€w€|‚~{|}}t{n{ˆ||yˆ{sz|€…}}zut€}q{|}z}qv‚xƒu|‚…~s€}p||zyƒ}w|z~„}†zƒy~o€}z|}~y{|‚x~{{y}u~}yl|~|}~x{z|xy|ƒ}ow…t{ƒx€|ƒvw|~z€p{~x}{…u}…‡{„{€|~~||x}~uƒ|~{yxw{tvs€yƒyt|€{{€„z}y~{|}z|ˆ~yƒwyw{…z~z||wsuxz~p|y{~ƒ‡~}…~k}€€‚|x|„vƒz|v{zz|vt{‚€z€}x†€~ƒ‚z†u‚}€y|w€€zz~‡~yz{x€y€yxglyu|~}ws}{}€}|~}ƒm|}}ˆ{z{‚‚rx{{zv‚z}~r|z|xwyu~wƒytz}}{~„~}‚w~}}v…~z|wy~}v„{q}{€|z{…~{~ƒ€xz…|~y}‚€|€|||~|~}z~}}rƒ…z{ˆ€|~~wˆ€}{€†y|sy|rƒ|}z~s„z}}q‚|„z€€ƒ„{wrzx|€†z~vy€{†}†v||}~~}{}ƒz{ƒƒy~€z{…Š|„~~ƒt}}}|‚{yx}}qws}}ƒzz‡„€~}w~z|~y‡z…}{rx€{z{}€‚}s~€€rz}q‚}…y}|u{ƒƒ†{€€{~~ƒŠ|{yp€y…w}€†|z}‰‡x„|…}}}z}z}s‹{{„ty}‚|{||}}‚w||}€„|~vu|Šz|…„~{wz…ˆw‚m}ˆ{|uˆx}yƒ€||tƒ~…xy†v~}ƒw€}y~~xzƒ~{€}€{~„}}}zƒyy~€{{u€{v€v{‡~{}}{}zƒ{~|vx€{‚l}‚w~tƒ~‚„ƒ}}‰wzzv„|t|z}{z†y€}w€~|xƒ}x}}€y€z„~~‚„yƒz{Ž€€vv}q„uІv|~z€~}ƒs{‚z‡z„t{{v€}zy|yƒˆ}Šyv„|‚€zz~z…~v~€tz€v~„xzƒ|~€y}s~~sksz{uz…|zz€~w}z|~~€{„wu}„~vyo€y}||ƒy~€tyts}€sy|€ƒƒ{…z€w…u‹‚z|y}‚zz}}‚~ny|‡|‹€~yz{}~€‚€€{vy}‰vw{|ˆyyz}€z…~|y{v{ƒ|‡~•y~yp‚€€yvxy}{x{~€uw€{|x‚|}€„ƒ|~|v„{|}my|~z{s}|yzw~|~}}||~€zt~€|‹†Š|‚yˆƒ|…}€s{{~{~yxo~~†}yz~x||v‚}{zt€xz}~|z€~{ƒ|}z{q„†|‡|z€}‚}}}€x{}~}}urw|z~zvyp|vy}„wy}z„xy~m}€|~€z}{~€{wvx}~}|qˆ~€}ƒ}~{{v}ƒ€ruhz}…~…{}z{{w~oƒƒz}u|u|…~z†vy~q|v{y~m€k{†{|}€zx‚}‚~~v€}y{tuyz‹z}x}€{}|€y}ƒ{{|}†v€†€uw…{|w€yw~€w~x}~|y€p€}~y{|o|…~t€z‰~€ƒ‰€}yp„y{}}€{w…~xŒ€|{‚z‡y{sƒx„}~x~}}ƒ{†‚‚{ƒ~‡||ykyƒx{}wz}zw~ƒŽ€||zw{€‡w|‚„pt|„€‰u}t{„pxv~p€~}}zw€ryp|y~|Šxu‚w„€x„„{|€u{{}yx~|…|‚wˆ{€~vz„{|y„yzgxu}‹u~€{~‚~{xx}‡yu€„ztzx|x~ur‰v|…m†|{y|ƒtx}x•|ƒ|z~{u€†€{v†€ww{}~€tuzy~uut~„ƒ€uyyr‡zz…~z~|Žoq~wg~{ƒw„z|~Šx~~~}v†~x€w{{yz~€u††j|x~‚w†ƒy|‚€t|~€}}†{€u}~x…}y…v}ƒ{†}uyƒ{„uv|y€s}ƒ†e†€„v~}||zw„†wz~|q‹€~~‚~ux€zƒˆƒ|u…y}}~€~~r{~|oƒ}p‚ny|€‰tƒx|u‚|…~|…x}}‚€|l|‚€xzl|{xˆˆ|xw}u‚ƒy~‚„}~{zƒ…„w€€zk~‡q~u|„svxm~~ƒ}ƒs}w„„t|}ƒ|z‡h|~zz~t„€€yv|y‚„{~xy~„‚ƒƒz‚„|z~{w{~{|…€~s{|}‡ˆ|v{ƒ~{‚x|„~z~|u‚ƒ~x€…|w}}{†„}yy s~{~{‚w}‚x~‡‚zt|‚uv|‚}~|€€vzyvzyy|Œ…x~}„xw€||{|~„r}‚zy}}w{„†yzztz|z}}xz{~}}‚q}|~€}|{€v}‚r{{z}ƒ}}y~~|x}y{y}~yy}}‚~{€y~{}~z{z~~}yˆƒˆw…||y~{”}zyny~w|}xww|v~}}|}z~{|}{}yw}€€€yq{w~xzy{~zƒy|uz€v€}|}|yvu{z}}‚„~|~‚w|€u~{{vy|‚t||‚{{~€}y{}w‚w|uy€~}z{…y|{~}z~€{€z|t}ƒ~yt„„y~}~xƒz|‚~ƒ†www€~u€x||{~u{|}w|{|xwzƒzpxzx~}~}||{y{{{}{‚w|t|||}zy~~y|…wy‚~€v{“ƒ~~{ƒz|zw}…~x}}‚|†€{z~~{~zk{w…†€u|~u‚~y~{‚}€xw‚}o|~{wr}yptx€~z††~~€~…}{ƒxu€|ƒ~~|x{„z€y{q}x~{‚xx}|x}yz}}~sz|}€p|}y~€€xŒƒ}~ƒzu|tƒ~{~w|z}~y€‚{€w|yƒ€‚|…z†wƒ…€z||u{yut{w€€}yy~w{~|Žtwzot|}}uzwz|y}€yx}|…}r~}{z€y„„|zv‚‹wz~€~|„~~x€€}}|l~Œv{…~~~t}|x€|‚v}zwuƒyyzuxƒv{d|}y~yy~~€~‚}‚y{{uƒwyu}†u~tˆyxp{}‚s{„{~r„…~w{}€{€w‚yjs‡z‚}{yƒ~u„x{‹tƒŠ…w|‚‚}|z€{}z‚u€u~}‚}|€}ƒqz{zzx~‚yys}€’€vvw}|~}y~~t~|twƒ„‚€kƒ~{{y€xmzzy‡Šz€{‚€||„}u}uoww|{€‰ƒ‰€{ƒ|{{||}o|ww€xxtu|ˆ~z|{‚~Œz„~€yy‰x~}{‚€|}†€|{ƒru‚ix{~w€~y~ƒw~ˆrty|y€‰ƒ€…€ƒ€p|}€}†u„¢ƒ~w‚u|rvzyyxzzŒ|}€sz~sx…InŒ€~x‚v‚€x{s€„Šƒ{€{ƒx€€}zr||y{t|zxƒ|{‚€ut{Œrx{}q€y{|z‹{‚wyxz|z‘v„z~vq~z{xygyw…€||}ˆƒyrw}€a„uzs~zzŸ€‹n{y…wy{€otz}uu~zv}†q{mv{~s~yov„}z¡sz~‡}z{zztƒt||}€}ny€v{‰v~v~w“|myˆtwezvz~}~y€|šxŒ~m{Ž„Šypv~€€o~yht~w{cƒ|{|~|u}}uy–}{y’„ƒu{xt“|ƒy}}yx}lsyz}ˆ†y{~s{y}€ƒ~Xz~zx…”‹{wqwzŠ…x|y…z‚}ry€mwqz…uŒr€€~~ƒ€~z~ƒn€|ƒzy~m‚r‹g€||}st…~€‹†uwštuzxwz~yyˆgzŠz|zƒyzx‚yz~€nyŽvt{~q‚rzvu~yp…ƒuzƒ€xsqsyy|}ƒ{wx…w~jtwws~}€„{…†ƒ{}~{y|s~w€z}ƒwt|qx€xx€z{„~v{‚}~z‡‚‚xxx~|z‚|{†w€xyz}ˆ}{ƒ†~€w|‚zuz{y}|‡~{s~|w~y|ƒx|€{ƒ{t}|‰y…}}~|€€‚}xy~w||{†~w…s_w‰|{w†wv{y{}~‰~|z}|z~‚}†{zx}}}‚ƒr}{r{u|ƒywx}‚|~zx~y|‚}~z}‚Šv}|€yu€€}€…„{ƒ„|~~}{~x}†€}z~‡x{|€|v‰{}‚€xƒ|~‚}jt†|ˆxu‡x{z}}~}l|€zzhzx{yƒ}|{z~z}|~{}ƒw|}‡|{wu}xwz~z…yy}p„y|€~y|’||~z}u|€„€}‹€‚|tƒ{x…}vƒz}|ˆ‚}{€‚ur|u~yw}…{xyzxxy|€|~‰~|zxyyz}{xx‚y}v|yzwyyq‡u|~{„y†~z…ˆxyz„‡{tvxvws}|zyzv‚…|hzx‚€|{u|~yx†z€{’ˆ|yƒy}‚|q~x}w}}yu{w‡ƒ}„y‚}|}‰{~‚{‚g|}ƒˆƒƒw†€„ƒ}{v€v†x€yzywzprr{†~“p}{z„w„~~zpw€‚x~‚wv‚€{{}}|pqxu{rŠ||…‚ƒwx}vb|qˆ|xw€zzwo}}y„ˆ|{‚}w~wƒxvz}‚u‚b„|qw†ruw†{p‡_|w~‚ƒ€{y~vxy~€z~ux{r}|„€m|u~vzmxŒv|xw‚v~xw}ƒx|~€‡uu~ls}uu‡u‚‰ƒ|uw‰t€}w{|€t…|ƒ„dv‚v|…onx…ovw}|€yw~ƒ…x„w~„}xty~}t|}„w}zu|wo„{in‰|}m~k‚azzvr|€pwwyy€{zw†r}‚…y‚}‰zmwy{†|ƒ†q~|t~y~|s}xtxm{zŒ„‚…}zˆ…q€mw}ywuq{{ywzyƒ„‡x~ˆ}{u}‚y„uzc{x{{x~xq~}w~~…zs{„|n~s{zx~~}|“}|{~‰xw~~vv|xw‚}~{†‹w{ˆ……|yŒv}‚‡zwg‰z~xzz}t~p|u{}|y|vu{ƒrt~{y™€{€|ƒ†~‰|{|‰…ƒj~ƒ†lrw~vvy~|z{s~zx‡œ}{x}~}w}qvi}v~ƒ€~w…~„‡yz}}y|}|{{r}~~u}w…|x‹~uty}|v~|~~}zpŒ|y}~‹zv|{zxzzz|~{‚€~„„t|~}}pp}€}~||ƒy~vzo€x~Œ{u}}z€}{t}zz{u{~|ƒ€|zyy~z}xn~€y|x„~~y||z~x||x|w}|~x~~xy…€y|€{~yz~€{z}{}‰~j{}}~v|}‚}}}‡€v}~z{}}|„€~{‡€yƒzq€qy~{z~~~{~€z{y|}‚}y}t†{…‚y~{y{}wy|ƒz…}w{ƒ||}€{ƒ||v‚||€u{{~tw{„~{z€‚x~{€zsz~{z‡w†{€}‚yƒy†z|{vz}u~{x}z|~ƒx|zˆ|†f~€…}||~|~~}~~{|~}||~uq„t|}{~|}x}w{‚y“Štj~~€{~|~u{|vlyt|ƒvyƒ}~~{{u|t}v~}€zx{r{|z‚|qyw}y€y|z~yz~w{~{€|}v€zu|}twz}}}}{‚~x~Œvz€pv~~}}|ˆ„~w~~twz|}€yƒ{s{}vyv{rkvxy|€€~}~z†s~€~l~‚~„x}v~|w€{t{w~~{{~€y}{vs||xzq~r}zv|{~t‚{‚z€“}|‡ktwƒ}}…|z‚yuz{}uƒ†y|zz†ƒ„}j|}€y…y|{…€„tt‚~~yƒx„w€|x}ƒv…}zqy‚ƒv†‡}y|a€}€t‚s|wxq|‰{ry|jt~u}~qy|€v…wxlƒ~‚‚~r~vx|ur|{{x„rƒzˆ‚}…|}x‚||||~‚jy~nvk{v{slt…z|‚y~€yxv€~vsu}~~ryp…z†‚~pr}„tŠ{}ww|~yz}u~u†€{j}„v|{|€…}t|ƒ{}y}€x„n~x}~‡||xv}zzz‰€xštv~~|Š‚z|{lz{}lƒvxƒ‚€y‚ys|€w€u{…zi|†x||~ƒ~|lŒ‡…{zŽ|uv|x‚xu}z{}zvw~uŠg{‚z}|v‚ƒ€‚|‰z|€w{xuy}€omŽ}y‹z€ky„Zs|„vxyƒzxvv†|uz~zƒ~yuf’€…z€€w…}}uz}ˆy„u|„||z„yx~{yr„k|‡|xyt}sƒ~}x{‹‚{uxwyyu„„vvˆŠ‡~v„uvj‡nƒx€}ƒ}v€uf}y„{wzs}||zxkx}zwƒw|ˆyyzgg{x}Š‚w‚ˆ‡y‡tp‚€z€s|}~y€|{oqxzŠ}‚y{u‚{~}Š~vvzv}ƒ„‚{s{u~s”zr‚}…|Œ†Ÿz‚wwƒ{z~~w‡…{yl|z}ƒvvtxzmwwqwzz…su~„w||}y~}ƒus|€‰Œƒyƒvd€ƒoƒ}w†wy}€suƒ~~v{zu…o~€‚“‚Œ‰‹ƒ€y~|z„Ê~|~uzk€[zt|rw{zw~zp‚„z‚xz~sx}…u}y…‹t€yq}rrwmw{z|‹u…{w„€u†y‚~j}Š˜‚vsvua€{€sƒzq}}x{€…s|z†{ww†~k~€~}€ƒ~ƒ}‚ƒ„s{~x€€ƒ“x‡zp|‡|ˆd€‹qzrz|s…ydu{€‹rpƒuswz€…q€y{}„zŽs€„yzysy|ˆj{~wv{yv„y|s{ƒ|ƒ„um}xs}|‚‡n‡{†~‚w{}~€q}„zxwzu}p}zix{t€p}…vxu}}}y…wz…}yy~{u†txz~vw}uw„}€{{||x}~…zz‡{{x}nu|wƒ}w}ƒr‚lx}t}v}ˆw~u{~x{}z~~{s}~t€|~ˆvr‡ƒ}‡v|rua~|py~{y‚xy}z|yy‚z{{y|x{xwz|€}z{xzƒz~ut€{yxx€tˆz|v}u{‚p~zzz~„‚€…tx}~}yz{{|}yrrxs~r~o}}}}zz~‚€‚tr{x{{zu…~€€zrq{yu{‚w€it~v|~{€}tvz†yyzuu„|‰{}|}y{~u€ƒ{lwŒˆxu}}€{Š|ulpw|~‡u}putyyz{z}v~z|€€{‚w}{|xyyƒ}€~zw†zzz„yz€~y}}€y|€w€}u‚€„~{‚|~{wj}‚x}}|xvˆv‚w}{~|€s„u{x{€€Šx}v{zu€s‡‡yuz{{{|z}}{‚~y‹|~†rv~}~w€|y€~…z„|}rxxu{{‚‚|xyy€zƒŠz{}…|zt€‡ƒy{{‚b||„~‚s}wuxx€†zyƒ€pv{zv~pxv~~~~}‡z{z{|~ry{}|z|{~y‚}yz‡„{}yz}ƒ}|wƒu~z}ƒ{†€ywy|u€~|~{…ƒ}}~}y~||ƒ€w‡z}n{|v}{{s{tyy|}€{||~‰y}x‚|€|z}{„}xtr~Š|vq{}z~w|w{w{|ƒ}yos||{~y€yyy||u€u}z{uy~x|o{|{y{|{}}|~xˆ}{‚v}{‰z~{~€…‚|zz‚…}~~~}~r}~{|†}y‡‚}€{t~{ƒulx~z~z~zzŽy}Šzs€}†xƒ€{vw}ƒ}z}vv†}~}~…yw}|zt{z„Š{xƒ„vˆz||~}|{~}‹}yƒ€}|x…~}~|w€||€|‚|}wx}|~||z~†v€}ƒ}~||}‚y‡„|t}}|zywy|€ˆŠ{€x}{u{z€}}|zznn}}‚{{„ƒ}z{zxxou…zzz}ww|{y|y€€x|~„„|||xtz…zwzt{{‚sy|€y~‚z}~~y{~}lx}z~p|s|Š|}z}w}{|z€w}‚||~z€}|v€o|{Œszxx{~}s|ny…w‚|‚z‚{vtw|{}~{{‚|wz‡xx}{u…‡ƒ~~{…t‹y|…wz‰u~zv‚y~}vu€€yy{s|||€|x‚xy|~|ƒ|s|{t]z€|xztv€…z{{v~{€t{{}}|{…ƒyt|gzw}z‚„|p}x{u‚zy|}„€{y‚vzv~|~x}|ˆv{‚xsy{}{€€|v~syxw€|y}z…{xu‚€{t~€zv„r…{€…~yy}ly|ˆzŠ{{|}~~|y‚}|j‡v{‡~~Œx|{u€yzu|}{hrx}ƒ||w}€}Œ|‚Ž}y†|€u~ƒ„muƒƒz{zyv{yŠ‚u}~tƒ~‡}‡z~ƒuu€{t~‡y}}q{mu…‡x|s{|x€€~|~~ƒww{„zoq~}|zƒ|‡znƒvx{r~syw€o…|c€‚€twwi†|w|}†zxp}{y{zz|zuƒ€tz„€ƒ{q~€w€}yn„yxo‚yry~r}{v{€w‰€~€{p{v‚w}{|}o…xŽz~†w„~{ƒ|ƒ~}}|vp{~…~v|s{{‚syƒ€~w‡ƒ{u€u~z…{€}€ƒ|…t„ƒ|…}‚~~zx|{v~wz}yv}~}{||t{ytw{z{…„}{~|u~{}y|ƒz~{}’p|}ƒ‚{ƒ‚{x€€|pt}z€y}yw|}€{|t}~}‚{†z€{~†~x€w~xs~„~zz}xz‚~w‚„ƒ~x}|y€s}‚~rwz‚€}‚ˆx€vz~v}y{}}w~w…ws}zy}|~{|€u}}€v}|{v~s~|€}~~|~zz{u|€wˆ~z€…{y‰~€pxs}~„„l‚}vws{|ƒzyw~}‚ƒx{}|~z…xz{x{}|‚x€x€}vŠ€}||x{sv~v€{}|||…x~zs{xq{|zw‚€~}~vv}}p}o~y}‚|}€|zz{€€|w}~{€{p}ƒ€u€z}‚||ƒ|~††y{w‡|ƒw~}u~v€{|{ƒ{{„z{vsyp{z{‚|‚|{{‰{zƒ{zx}}|w‚y€x{{{u~{yyz|z~‚{x{zz~|z}€~}}t~‚{w{~zƒy|z}wwzwxsz|„l~~{v{{zn{vr~Œ~ƒw{{y€x|ƒ‚w€zvv{v~y~uƒx~u~€||{€€ox}††z‚}|w~~Œ~r„~y|€|†‚{x€z{}rwky}z‹~~|†uyƒ|†„}du~z„~oaw}€z|w|}m~yqƒ}x{yy~ƒƒ†{‡€‚…~y{€~vwuy‚zq{‚‡q~}|Ž|x„w‡…t|y}xy„y‡vŽƒz‚ƒzl‚~‚ƒ||ƒ{wvz†{‡y€ƒ}{x|vz|{q€x~€€}|y†~ƒ~‡{xy€xs‡ymyu…x{z|q{…†‰€~wpzu{…~w…{‚{~{t†}}Œ€|~t|ws€v‚ƒz{~|€Šyrv†|„€~}z€„z{}…p€‚{z†z~u€‚€{„y}|ƒz|y~‚x„wxo~t‚yu{y}zr|z…vy{{}z}~ƒƒˆ€{z{}~rƒz€u~{y|yx„wy„vwŒz}zyz†x‚€}}ƒy„‚|vz€vƒy‚z~k€yvyx|ot‰zn|ˆ‰†w|~~{}€‚{{‚z|ƒt‚Œ~Š{}€}xx|v~yv|‚y‡}‚x}‚€y~~{~€‰~†‡ƒxt}{|{x}h~}}{€|y~Ž||€zx€‡€p}~ry{€xz{n|ˆz{„x~€‡wy}}|€€|z|}zzwr}{xŠzz~{ui…]„xp…ƒwx}~†„Š{~zyz}z‡~vz‚}i~~xƒ~zƒ…~{~€yokx…}ˆ~ƒzxv|€r„{y‚‡„yt–wŒxx}p{|v„‚~w~yw~zy||~}…yw}€{~}z”t}{y€}€{yt‚w†gŠ~y{€{„€ƒ{xz„~z}||{…~rqz‰Œlz}yw}z•zyy|‚tuw|„q}uˆz~~~|{{€{}~|}~„|t‚qš{~|zz|„„~t†~{z|„o|}~€}„y~ƒu{_~}€}|i‚€zusfxx‚yx†~‚v~{|~u|‡z|yz†w}…z~‚z€‡kzz~{~†ƒˆ„~|€{z€n|‰x‚{{t~‚y{}tsŽppr~r~{zk~|~xtxy}†w‡€ƒ€‚y‹o€|€{€}|€rvzz}cvqƒ‚„‚~}w|}y€w‡zƒ|zƒ†xz}~ƒ}yƒŠ‚{|p€y~w|„€{~ƒ}‚~|r‰su}z|{ƒyz€‡|‡{~{|}ypzz~x€x}|…x€x€}}m„zx‡~‚v|{x‚„u{~w{xzx„y|~|vu~}|kwt{hu|zq~|€ur†~vy}ˆ|ƒx|{…}{{u‡{|sxu{xz‚vzy}x€tyw~w‚}t‚r„yz{w‚„~||yw{…zxot†y{{w…}{|}p~}j~‚‚w|xs}v}u~‰zx‡rzvwytˆv„r{ƒkzu|~||}yr}‚x~u|m|…}~u€~~u†yxŠu…‰~~zv}{{~{u}vx€t|Ž{y…ƒy‚†{my~qy…‰{yvu{w~~~w~~z€€v{x|€{uxyxxx~||{}|‚z|€|y„}€||~|{~qxt|wz|€v{|x€€}r}‚{„zm„y|t}wƒhu|y€}wx|tzv€z~smvƒ~|z‡v‡}vƒy}~{f~‚{~€zy‚{r‚~}|ƒ{u{}ƒwy{z‚~w„ƒ|‚t~{|w‚y{~‚‚}x€{zqq„t{„y}ƒ~g„}~}x€|„…}~{u|wv|yysƒ}~|xsˆ|wy}onƒ|}xxv{‚|}}xv‚wxƒ|v{†t†žy~|€}~|j„vy„j„rnvƒ~}‚o|xƒy}o‚w†zzz€t}„uy}u{{}‚tr}~‚{{x~||x„„w|z|Š~wz~~}{t‚€{|u|‰zƒ|ˆ‡|~…y}|€uw{‚x€vxxm„~xp{{‡sz~zyzˆ~€p‚yƒŠ}~ƒuz„zvv}~x~z|z‡ox}x|u{}}xy€xqnv{€}{{z{uwvyz‚€t}|‚z„zzl“†|}€€Œx|you…m‚wywvŠ€~v~{|x‹wr}~y‹|Šu‚tx}xy~s|yc€rv~y€uv{yvm€{‚†€x~‰…wz‚yx€‚zk„~‡x”~{ƒynvz‚‚xqv{{v~}„{‚|‚ƒ€|€}yrswu€„n|ƒ‚€w]ƒt{€‚ˆzy‘€zxmk‚u~zu~s†{€|xw~u|ƒd~xx}x}y~Šd|}€}uvr}p}ys€}r€~ƒ‡ƒ{„rvxou}}|ˆxtu{tx€n…m„rw|€|~v…~zw€{zzs‚sptw|{€ƒu€y}~|„}‚„q~u|ysr}‰g‹„m{y{x†{z|vˆ„yƒ|€}…|z{€}ƒ„xu}{yzs|~||†|‚t}~†„~‚€}†w€}z}|}€z{‡zyrz~}|‚|€z}{z}~ƒ‡Ÿ~x{‚}~|‚|‚|{|{|‰‚{~|~{€wz|zy}€}z|~{}{u~{}{}wƒ…z„{}x|xz†y~{w{}|€ƒt|z„y||y‚y}}{t}w{}s€zt|}yx~xy€~‡…{|{xu~zyu~}‚w{u|Š€yy€||}|}}sxx|xt€|€‡x{pr|~}€{y„~v{vƒ~ws‚|x}„†xz€~wv~„~y~‚}„€}€‚}wx|…~u~~vƒsy~{|†}z}}€|€yn€~tŠu„}~€€yr{€x}y}{{yŽ…~}†||{w~„†|„y†~€}~„zyƒ~x}ƒy}|xƒˆƒˆ}|~‡|~{{x{Ž…€€~|~x~vzy{‚ssƒuw‚~z‚}m€}~}x|€}„ƒxz|}{y~€{zy„vwyz{„uy€vy„zx|~zy|l{|€}w|ƒ„y~{}‚‹zx~z|„w‚z{„vz{†v|y…‚€|x‹€~~uyy|{vx~eŽ~~|‚}{wy~uy€}{}zzt€}~~‚€w€€w„~fwƒ{|~€„~~}y{vg{‡‚~w‚z…{††}}}}}}{ƒzr…}zƒ~‚}~€s}{‚~€x}z|ˆ€zxx‚~|xry|p‚}oƒ}„„ƒ{z~~w‚~|m}~{€yy‚~|€u€€ƒ|yzt„|swwl€|€€‚~~|qsz‚†…z|}|wzx{zn{‚|vxƒu||€|~|y|}{}}~‚|}x€~q~z{{ˆ€€}}||r}„||‚x„…}~~{€|€‚ywu}‰…v}ƒy||~{„s~tu~‹€p{~z‚~~}ˆ}}}|}}|€~z|€z~t||€}}€}yu‰|†}j~xwz~z|}|€~y‚|„wq{{w{~{~z|€‚~Šxz~y}~‡yx‚z~{t|~ƒz€y{||}‚z€y||ƒƒ€†‰yts|y{pˆzw~}~zyzx|~†x{x}{}‚„v€{||z{}}€‡€zs}~r|~y{s|wo€w}|||‡{{zvzzƒƒ~}{yrƒ{~zu{xzyx†w|x‚wvy|x|x~|€|zy~tyt~}{uuyu€}|{xqz‚f€{}‡€wzz€zƒ||‡y‚{|x…~~w€{q{z}{}t|}„z‚xw}~wvƒ}|uw}l}}{y{xr„~}}{|{~€zx~vx~~wu{sy}€uwuƒp||†u†y€z†yw|~x‚n|v~zx|x~|{y„}}~x„y‚{ƒ‡x{yx‚z}yus|z~}€€vz|wzr€}{y|{|~‚~|‡tyvurz|~}}syzˆts~zyz‚{ƒ{s|v†xƒzxxwwzw{su|}ƒt|x„{}p†ƒy‚|~}…xz…|xuy~‡~v{{zw|}{„vwyxvzwˆ~€yzsƒ„}„~€tp~ƒ€~u|y{yƒzussw‚z|}€z€tx}z~€ux{}¡‚~uvx|yyt„p}uvyˆzw€~~uz€w|{oƒ€}}y{„x~||v~t€yyqy}‰ww~}y€ƒŽmxzuy|rzwz…|zz|z‚x€}tzsv~t‚z}…|{zx}~ƒuˆt{~‹„|€|z~yzqxŠw|ox|{‚}‚w‡„rykv~zŠ~zyl}}w…zyw~xz–v~~‚~…Œryt}}€xy‘}‚…z{~}‚}}x|zz€~€{~Ž}zuxzzx††‚{~z~e‚ly€ttxyzvt‚~cƒ€€Œ{€‚„|vvtx|€~{yy|}yˆ}Šux[p€†`€~{v~gŠ‚€x{}z}xl{€wzg‚†y‚x}€{‰u‚‰y}€|‰|{~x}p|„z„|‡~jw{{‚{€€nu|ut|}ƒ~~gyyx†r}xq€|€zzˆz|ˆ{„y~|†„€jˆ||q|}y„s…†‚lwpz‡u{{n‚w|€ˆv|ˆ€|…€r‰yƒ‚{ƒ}{||}}v~~u}„|xx}……†|…z|xz†|{‚v€‚„~y}|zx{€‚~zv~wsq‚x„w|ƒy{}Šz{ˆy€xƒ€{q}y|{y‚rk{w|xzRxfyvp€ƒ|V„ƒy}p}k}v†‚‚ƒ}}y}‚x€o…€xy}}†p‚ox‚{kƒ|€”‚ƒ|yy~}…{|~}{qy„…}}€~’€~z‰vwzyyz{rz}x†…„Š||ƒswˆ}‚ƒƒ|||s{x‚zz}u||s}m~xtt}}|ˆ~u~|yˆw‚Š~|u~yxl|w~z}tr…x~w}y€woz‰‚~}~xyy{‚w|~Šƒ{‚~zzzƒˆv‚{usrk…v||“{u}rƒ{s|‚w|qs~z}{zzz~€€v~{zr|~„{qyo|{v€|~|{v‡vxu†{}„|nsy{|z{ƒ{Їzxy{|s‚€{u}uƒ{uwx|‚{}|{y€}€~x€€t}€€…ƒ|~ƒ{|~|{zz}r‡|€s~z€}w|}€ys|yzzso|}~{ƒ†{zu|w}}{{xƒx}}…q€y‚tx|ƒ{ƒt~~‡~x{{€zƒ€y}|€}}}y‚x}|su„{€ˆ|ƒj‹wz}w‰v€~~u~w{€{|y{t}‚vrƒ„w‚s|{x|uƒ{|€||}vy{|}w‰szxzp~}|ˆ~zvixq~zo…€vp|€|z€v}nsw€}{z†wx€{x|t|€zx|zzys|t}…xxt~uz‡‡y{xyƒ}x{z}…zv~ƒŠ~xw€v|†yˆxt‡|~|ƒ|Š}}xƒpw~„„|~ny|~zz|}{‡ƒƒ‚ƒ‚}x{|xw•‡{~{yy‚{z{zysx}fxz‹uxw}~vz}‡{{|ƒ{r|{~…wz}~x‚~{}u„‚zq‚‚||„vw~ƒ|rhƒ“vyu|‹x‡yz{|}wstvz~ƒ}u€~zmŠz†wxx€ƒ|€xw{w†zo~zw„}„€{x€~nƒ€€‰‚}|xvvxxy„}wq€~€‚{€|y}vy}„{Žwx}zx}vvŒ…vyy€yw^~~p‚y}~{~y{y…}€‚€~ƒ}‚}yz}x{hfy~x||€xrƒŽu{{€jxly||ˆƒ|‚x}~{{€x{~zy~t|w}‰~x‚‘u‚zyzwz‡}rzu~„v~‚w‚€u||~~}g}~{‡|ˆ{wzuo{{{ˆv{„x}}…~‚}€{‚s~„xyw~xw~{€‰‚ˆƒvt€z„~~‹z|u}z}rn„v‰r~{g~pp~‚t{~}z~l†zy~x{€|{z{x~ouw…‚|t€|zwywr€{}z„ˆ{|yƒ|xˆww|xyy|Žs|z}zu€…{yvƒ}{sv}{„ˆys}|~y|~…yr|lxwxx}txz‚…}x€zz}yzˆz…{~{zƒ|~}ˆ€z~Šw|}z{{€~‚}yx|}}|{}{|€€~y|‚x~ƒ„y}‰{€}{{w{|x‚‰zpv}m}ˆs{~‚€y~€€{‚€}‡„{||xv|€||w{u€ˆ}~ˆŠ|yx…Šv|yvzz…|‚x‚o|y|}n€}y€‰€v}twt}sz€z~|~‚xqw…|ƒ|{{}‚‚u€{yˆ€ƒ†y|vƒu{v{z€€z€}sx~z|€l|yzy{w}u‰}{t‚}€|z}t}}‚‚yy~x}}rxˆy}gzˆ}|ƒ~{|x}{uzu‚~x~~‚x…z~xƒ„ys}x‚~~~yt‚z~x|yrzzw|{{†{|~spw€{s‚Œzw}}zvxƒ‰txƒu„n~ƒ„{v~~xzy…zzz{|z„„z}ƒ…x€x{ƒ‡yx{|€|uzvx‚~€y|…gu{{x~€|~€€{~t†v{~€}stz~‚u€sw}x|v}|xz„|z•}{ƒ€~x€~ƒ|x~qv{zzŠy‰~}~v}xuz}ƒŒ{{€…|ƒ|_{„‚ˆw||zz~yyo‚‚€zt€}{Š{}y~~~zo|€xyƒzp„eu|tztƒƒv…qz|…x~‚zr…v{z|„|d}‚~~€x‚w{~~{v}€}s„‚~ywwu€}zx…p||}€ƒz‚|€yˆ{w|yvy}€|€yz|}{vyvm„€wyxvtrƒ~w||{ƒƒnx€€{||v{xv‹…{ƒ~vvi|zu}{‚vy~|€z{z~}{lˆ~{yˆx}wwsvz{|zu~v||z~w~‡{†‰‡}w{yr}urt{Šƒƒ{€w{uxvyŒ{srs|yt}}‚uw|x‚z‡€€|yw|~‚s~}€}w‰wmy|‚{wvyxux}zr|~ƒ€‚zwvzz€y…{oq{†r}u‡z~orr„~w‡„|~~‚ƒ{€zzv…~~~x|~g}|u|}{m~‚{wƒ~{~|}u~z„s{…€z‚x~xz€~{ws~z‚v|~||{z}{~tq~sˆy}|zyx|€v{|~†{~v}}{{{{zumwˆ‚w|v|v„€~|fs‚xrx}y}vyyr€€{s|wvx}‚t‰{~zx|{u†x~v~…~zzv{€x|~pznzso€vyu|x{o~{z{u}zz|œ€|iz{ˆ„{wxz~rx}z{‚ut}{x}{{|‚qry€y„x|‚€~y~}vwˆ~€{{z€zy{y{}€||yx€‡ƒ{ˆn|~x|x€z~€‚|}|{vu|…mxy{yzxzx„{~{|~y€wzŠy~y{w{ƒ~xz|}|m€~ƒ{}€|ˆw{x~}yx|„…}ˆ}}|ƒw}€p‚~{{u|{‡{||x…y‚t~€€‚~}{ˆƒ}~y~|}{||}s|~zy{ƒzvxy‡}}w€}|€€tv„t}}||€zƒ}zt~}y||z~x„~‚‡}rt~y{~†sy…|xv}zvxƒyws~€€~}~wu‚u{„~s~||‚|||ƒ~{~~ƒ{~zu”‚zu~y{|}}€wz{z…||~wƒ}|†|{~|~z€‚{{|y|uyyƒ~zt||r{‚‚y|ƒ€}z~w„wzvttv~€…||{xzw|pu~~xwƒz„‚|{}wƒy{{s‚~x~|y{}}}y‚w€t|’{}|z}ts~x{‚|xx|€}{~}z€}~w~w{y‚z~~z€‚w‘†~{~|€z€ˆƒ}}v~ˆ€‚gywvxwr€€…o…„Ž…‡z}|ƒv|~n€z€ysyx|„€€€~q|}z~„ƒnr||‚}}y†“v‰~z…s†zxjq}}Ž…†v{|uzsxvx|sy€vzx}„}„zw{{}‹~„x€xˆ†mˆ|€t€u†xk}ƒ}ƒ{zƒ|w€y|~}u‚yzu|twq|qy€z}yyz‚ˆyr|}t}xxz{‚}~yŽxvŒz{€‚€~{xy}w}z„yw|su~_xkw„„s€v{wx}{w…m{Ÿ|}z~r|ƒztvf|}‚y{…}||st‚‰~al‚†w€o}k€~u{ƒ}zjwuzzƒooxt„h…}}y„zx‚–~{{z|l€syxvm‚„t}„z{{uw~~{„ˆz€v€y‰}uuŠ{mq|y{~r…o€tˆ}~z€txz|Œ†…|yc–}{ƒmp…y~s}}ƒ–|qp|{o||Œ|aŠuz€y‡||€{€}¥zzƒz~sƒ€†{szzzl„zw}|~tƒ{˜”‡„vvwzy„ovxu‚xw{qxy~ˆy…€|~}w}uƒ}~|{}‡x‡w~}z{sЉ{yv~{€{mƒz€vƒ||‡~y|r|ˆ|r†|x}}…x€~}}{~m}€|{~}zz~zt‡y~|~{s~…vzwwz€ƒyt}|}{{{~ƒ}€|z€‚sy‚{m~z{w~}„x}||w‚€~u}{}~€€~{|{|{‰€zt€}Š„{t}|vz|‚}{|x~|„ƒ~€{rw„~~~y~€|~|{yˆ~~ƒ{|†z}{}z|‹}zy|}€z€~ƒ€€‚yxŒ„sz~}y}~u~}‚{€|u„{{†€yzut|}zt‚x~{†}€}x…uƒ€‚z~}}~||Š}~ƒ~€}~}zƒ~w~x}€ƒŠƒq|~x„„~€yq‚€{y{}}||}~‚zyv}…~y€}}xx|z{ylƒ{r€„v}z„||r}{€{~u~}}‚ƒ…y‚€€v}Œ{{{€†€u~}|€|}‚‚w~xw‰w|‚z~ƒn~z{~}}u‚w‚€|}y}}‚m}~u{~}~vpz{zzzzvwzq}x}{}„~…vuzyy‚}…{||}}}zz…}z|€ƒx||yy|z~|‚Œ{ˆ||€ywmx}~€†{„z{~~‚~}€„€‚q~|€€k}w‚q{~zŽ|€‚ƒ€„xƒ~u€}z€~w}x~wv~‚z}€…†~‚{x„€ƒry~o|€uxt|ƒ~~t‡s|yx~}ƒt{zz|‰{kz~}t~{‚z€…|r|€yz{~yu{}|„x{x†}{{{y†xy|w‚|€|y„y{|s€vu…t{uszuw}€y€‡}w€|~y~„y|yz€~}‚t‚ƒ~t€w„†v}w{~{|zwzyw|}yz{~~~xx~~~}‚~ƒ~{ƒ{z€yv„}„ƒzr€{„r‚x}x…~x|€}€zs}|~zpz€‚~|ƒ€~}ƒ}‰€~~yxq…}uz~r†z~{w|xz}}v‚|v†€}€zƒ}|{}{z‚‡†yv|{|~‰{‚}€~‡~y~}sxw{{~{xz|v€}yy{}~{yx{zyuy{}|~||}zru|}}…ˆ…y{}†€xƒ}|€‚|}…{znyƒ€yyr{||}|w~y}x‚}yz|€yyˆ}~z}|xv}t{xz‚u|qz†y}x„z{}x}{|y„}xu€s……y€}„}}ƒy|xv€…}…z|~}{~|yŽ{{x‡‚|{ƒzl~ƒ|yv€€‚€xƒƒ„v{y{}|xy€h~€|‚„xˆ{{{z{w{~y‚|†…‚}}{s‰u}z„„}}~~…|~|~†€}yt€€s~‚…w{xt‚……„}~•‡„~‚‡}‚y€|wƒƒ†|}{~ƒ{€xwƒ||yzz€€{zv}‰€‚…xyyqƒ}~{s~|}…||‚ƒ{}~}{s‚wˆ€‰€ƒ|w|€z{~yz}x‚ƒys~‚w}€ƒ€~y{|}†}|}r}}~z€|zzƒ‚|‰{{}|{}o|zsz…}€~‹{{€x{qwt„y„y„€z†{‚}v}~{X}{~~‚~‚{z‡„y…‚~}~zzzƒz|‰wxz~€}z‚†ƒnnvpu}|—}v~„„‹€}{„~}z~‚~ƒyz|y|…~€}y}|s€w}„y|{‚~z|x|zƒ€ˆˆ{v{€€us‡vq|l}‚€|Š‚t€v€zi€rt„z|„‡ƒ†ƒx‚|„vxs||‡}~ƒ…}‡|zƒƒxx}x„vgˆƒ|ˆzz‚~z|~qty‡|„ys†ƒ~…†z{€|y~„{z~}‡}„€~y}v}y}}vwˆy}{z~zvp{ƒ~ƒy„~zmimx|€||v~r{vx|wtzzy|}|xz€x|€‚p~€qyzy„|||i}€{€~yuxy€z{{}|ƒ€sxz~†}ƒuyv~|{}ƒ…r„~xpsp}€}wt|€uvzs‚|‚y}|{ˆz‚††xx†v}Ž~x†…r|{€yz€z‚~z}‚ygmrwq||{‚€ziz€wy…t€z|s†z}x{~‰w~€wƒ}€~ˆ€xi€{njz{wy{{ƒ~}r„vtp€}|€|rw|„tŒƒ„ix|ysq|~~‚~~y€w{hxvzlˆ|zqz|ƒ…zl|wu{‚xoƒwˆ~~}oyw‚„†}u{~…|ƒt|zz~}r{|…{~s€ƒxz‰x}~{ˆƒ{€|{mz€x{ut{€y…‚xz}|z~€€r€~ry}~~|}yv||{ww„w€|~m{x{ƒxzz|zl}wƒŽ|yy€|w‚~|~}i|~†zy}~zq‚xm|{zx€}y~tzt{v|qz~}ow{}‡yz}ƒ}|‚~‡€zu~†~‚yyuwvuu|€|{}y€{|z~|}€‚zrz‰zlwy~}tƒw†|~z}w~p€tty~~…s{y}on}|€€yx…}{y}sw„…x„wepw}€}}‚q€{{}~l|{{zy}}t|}{}~ƒ€|~zq{{n€‚}‚~|€vz~}~}}{x†|x‚„v‚y{{z~{|{|„{~†x€|w~|yuz{|‡z€~ˆ~zyr|~}~{}~|ƒ‚|Œ}}yyz‹}~€}~~~~z|z|‚{t|€~}wx}wy{{|y|y{{‚w|x~|~{|}~z{~{€|~{z{yz}{}v}~€|~y{v{†y€v„s}{{~…}„„v}€€z|}x{†wzyv~‚}{~}}|swz|{t}wx†{u~{|†~u~‚{{~}|}ryy€}}{{{}zy}y~w}}s}}zx|€{†ƒ|€{}w|{‚€€y€z‚šz|}~|y}{€}v}‚‡n|t~{€v~~~ywk~z}xwz{€|€qv}€|y|}€~€}„u}{|t‚z~t}{z}~y{x|„|{|yƒ||~z‚x{ƒ€rz|vw€u~{||}o~yuy|w‚vz{‚sr|g|z„v}w~t€}Œ|qz|€‡‰ƒ|…~y{€„{nt‚}yzƒx‚}€}~„s|z‰’€‚ƒ{|}€{~}ƒx{€swz€z…‚o{uxy€z|u{s}vr€}…„{y‡x}v|zoy}~|zz€u}„yƒ„|t†vw}ˆ{~y€oƒ|r†{{xx|”w{}s„~zƒ{y‡~…ˆƒ~{|~w~x{uz~yx}|xs€~|z~›x}v}x|v}yq~v}|w{}†€y}€tv‚r|€~z€€{|~w„v~|ƒz‚z~w|€t|‚€}|zƒ®y|}}ƒyv|€u‚zƒ”~„{}uy}ww~su†…†‚|”{y‚w€‚y}~‚}~v|y€€{}xyx~‚}|~r~~~~‚€}u~}pƒ„{vm}€|y|ƒ{~wx€{€ƒz~{}z|ƒ€~|€t~|{|wyv€yƒ}x}ˆ~s{†x|—‰ƒ}z{|n~‰|||yuz“v|~‚uwx~|xwv||{€xpx‚}~{|{z||{{~~|{yrx€x{xw|{|z{}v€|t~p{z~ƒrx€xv}~{‰{‡–‚‚|i{qz~uy|o„q“v€}z€x}|vŠt}z~}}x~~~…}o}wƒ|yyx}„xvw€yy|…„xx~|ƒ€€v€wt~xy‚}€~}}z~}}}x€€z‘}|~w}{€}}€€|||zy{ƒ{ƒy‡|||~}sƒ{y„|v|~z||x{sy}€x}{wƒ|†~ƒ}}~‡„}sux‚wr|l‡}€q€{}†xw~|}{}yq{{y{ˆ}}tvz~‡xz„sy}y}xv€{|‡|~|||~||wy{}}w~‚||{y€€||ƒo|„{z}yy€u|lv†}…}‡pi}|yƒyƒ|{~„z}x{}€y{}‚|†ywqz€…y|{~|txƒ}y~w€ƒpoxsw}zy€‚yŽyz~{†‚{|xxƒy|€y€z~…zxmwƒz€x}{|wry‚t€€~}t|}z‚t~}{€{…|~{|hƒyxqy„yx|‚‡‚y{}r|sŠ}zlw{wƒyzu{v{z~zz||}|~€„xw~{{y‚|‡~|ƒ~†sopƒxƒuvt„zst}‚~~{}x{‡‡€y€‰{…|~€}€w}ƒyxuu||}‚~{}€{s~„zwƒ†sƒv€{|rn{}zx{‚~€tƒ{‹k†~‚zu~€}zƒ~‚|z~€}‚|xv{‚u‚xxy|zŒ~}}‡v}{ƒw{{€y†}~y{ƒ€~€~||ˆ}zy{~‡u|ƒylg{zx}yv|rx‚|{w~|my}x{r{‚|y~tƒz{t€w{y{„|†~pyyr}|yv}vƒ‰x~€}†{ƒ|~|syv‚y€zŒw{t~~‹€s{}€u„Žy~~‡„z}~{y†ƒyzuz}~{}{~}€rinƒ}}u~~~ƒ}€…‚|zt}ƒz}|‚{x|ur|~||‚zˆlzy„€€xx}y€€}}s{v‚|z|…yvz‚†€wƒz~„~|{v~|„}o|{~|wz{k~sr€‚k€|zx{xƒ}uz†|pƒ…|ry€€„z}}‚{€}~z}{xv|ƒ~xuto{ƒ„t…|~us~~gƒ{v||…~u}}~z~xwz‡€xy{orx{{‚~~}z{z|v…v‚szpv~‚y}x}zz{{uz~q…}{p~szd{|ypx{r~~y‚|~}}y€~€‚{u{{{|€y€|zx„ypk}x{~|‡}}wz|ƒ~wgk…fyyvƒ}€~|x€~gzz{v}}€x€~|tyz}y‰‰||{~y~{~|{p}v}€}}u„€€x}|}z~{zv~p}ƒ|™€ty{p}{{€~}x~€‘}i~†yy{}}x|}|‚€~l‚ƒƒ}‚r|}…}zxˆ~}…zw|`„}xy|‹qur|}y…}y‚v~€z{ƒ‚Š|‚€vyys|~w{}us~|€yz|}z~}w€€}w||~€ƒx}rv†z{|~€~z€~z€|{vƒsyqn‚ƒzxe€|x{}yy„~~‡t|†y~~}|ƒu‚zrƒ}†u|z€{~‚y}{{€vvƒ~}€|}x~ƒ€t€yxz||{||~€ƒ~€u{}v|ƒyy~|€€~€{{wv}…w{€~˜{€x}}ƒy‚~u|„€y|~~€uy|xy~{tz~{u|j~vn„}q}‰zz‡zy}„}}j‡ƒqƒvzwx||x{}|u|y|ƒ||‡„{~s|ƒz~{h|y{~}{yzxrs~w‚x{{ƒyy|~{y€}{„}}}y}€on~}sfz~~€|{u‚|xtz~v…„}{yyy€ttzw}{wƒ}}€}|€|n|„y{~~vw{€|{‚{}ƒx~yz€zz€~}z}sx€xt{xyy|zy~~uz~|{vzu{ˆ{}~xpy}{{}…y€w}}…v‚`~}†‚{|}}w{zvu}„{€|…x~wz€{~{}}‚{„~~‹…}{‚vst{|ƒ}zwyy…{ux‚w}y|{€}v}}|}€vtx‚}}}‚zƒt{‚{€‚~zy~|||†~{{vzzzz}|zx}}|ƒ|x}}zww€r|zyx||€~}y…x}€y{w||qq€{€z…|~„‚}o€z„€|{u~{}~{w{z|||z{|~}||€~x€z‡~~~‚|z}||{|xwz‚„|yu{|x}|x‚‚y|~|{~|€~€{zq€||€†}~z€}zzƒ„‹t}~z{z|€}}yxvsy€}€z€t|}{ƒs‰‚ƒ{vƒ~||…{€w|ur}|z‚y€ˆ€€w~|~ƒ{{vxz€}~~|}‚rz‰ƒ||}twy…ƒ}€zy}~~||ƒ†{z}u‚yxwz{y{yw}€y|||y}zs~sƒ~|~~‚Œ„}z€‹||{|€~€}‚{|w|s|€~{v~||€}‚|t€}z|q‚~|s…‚~y}|~}ˆ‚|zzy|…}|~v}}‚€{€~|ƒ‡{}…|€yw|s~}ƒ‡……~†x|{x~~w|}{y‚~~ywz{€}ƒ€}wy||}zq~y‚u}}|~zu„}xwxzzz}w||{€}x€~|‚ƒ†{|{}x{{|~~~€…€uƒz‰ƒ|„{€v}{}…}}‚z„z€„{‚~‰~}w€su~{…|€x‚w|}}x}}~zz€†w}|‚}|}||~~ywz‹z|{ƒz~€y€‚}}€€z„‰w€|„~}y€|„{z{v|zwy{†~‚}||‡…}~‰xw}{…s€z|x}x~‚y|~ˆ}}‰{z{{yyƒyyzoxx~zxz}†‚|}~y{~z~stwuxz†x{…v€‹~yx~{€€Ž€…€}zywz}zz~}{yz‚w}~x†ƒx~{{ƒ{‚r{|€{yz„€|x{~z}{tyy||€x}}~}y{{w€x…}y„{‡ƒ|‹…u€y„}z~s€‚|z~|pu}~yr~~€y}y||~||y{wz|}„zv{xwwuy|z|…~|}v|‚~~{z}w|~~{v€|€|x}{r}}{}€zw‚ƒt‚‚{‡x€}€‚|}ƒy}|}z~wnz}{‚|z|w{xv~~~wu{|€‰s€v|~‚†{z}w{~|vxz„€~~sz€…xz}†€rs}z|}{}yƒt|w‚‹}{tuu|}uy€|z€zuuz€z|~u~{|{}yƒ}v{…{xq~wƒzz~y|w‚‡{Š„~x}†{xzx{Œ}~{r…}|sy‚{yƒ|{|xt}zw~~p|}}|{x~}ƒ|}tz{}{}~€~|yy€|‚|€y|}x‚sz|xw€w}{‡zy~{ps‰t~}€yƒ~z„||„z€}‡{{‚z}urƒ{|{}z‚{{n|}{{}~}xztz{€}Švzz~|sy†zs{€~Š€s}|n|{~uyyw~zzyƒzv…|€}}{z€|‚‚‡xyvwu}u}p}z{€{€zƒ}yxz|{z}v{~u}~zƒx{uƒw{{}x}|~|y~{{l||w}€|€|yz{z}z|€~w{}}{}€z~|‰yz{ƒx„}ƒwxŒ|{Œz~~€~…tx}‰ysw…€{w}‚€|€‚„z||†|vywzz…|}uyuƒ}r|ƒz…€‡~}€‚u~r†l{v|„zv}~~r„y~‚t~xƒ|yw{~z€‚Šmyx‚{Šƒ€zx€€€‡~ˆ†~}xz†zyyv~…m†vƒ}~{|€~dq‚|}}€}z~{‚|Œ€|{xq‰yz…ƒu„‚wuzz}y‰|‚uz~}w€y~„…~ur‚ƒ„z{ywƒ{€|€~€{w{‚vu‚yyjxwxy…wy‰}‚‚~~{}}‚~ƒx{w{}‡‚}y~}}{~~{ƒzw~tx€zv€~|†ƒ|x{v{}z{…kzr€}‚”{s„t€c~‚z}v|ˆzx|{|ozƒ„w€~‡s‡x}vy†y|uv{~r~}~vx€z‚{~w‚}‚yqvi|€vq|‡w{|y„r~yƒ{€yr{|€‚Šz~wyƒ}ƒvƒ|y}{†|~qxƒy{€x{z}…}y|}‚ˆw€x{‚y†m|€{~{yvw‚{{†|~…}{{‚wz‡{~l|}zuw|{xs}{||n‡zxu{€‚y{‰…†€~}‡y{‚y„r‚{~zvz||€}y{…~}€}sˆuyz~uv}}}zy‡w|~ƒ|}ƒƒy|v…z€ˆ{‚|v€z~€yu€Šz‹~w„„y}Ž…}}~€|y‚‡{€ƒ…z}w}|q|{w€ƒ|€‚€‡‚{}y}~z~x„„‚y‚{}z€zŽw}}‚‡o|~‚x|w}z}‚‚|„~yy|ƒ{z€}{{y‡‚}}v|…}‰€…z†}~uw|†~u~~|z{{€|~…zu{{w~}yr~„y€y|}}‚}w‚xŒu}y|{zx{€u…|x|{~z„u{y}|yv}…}z|€~}o~|ƒ~x|€t|}„x‚~„~}|~|}x~„|€v||z}{~}rut‚}y~‹wz~y}~z}}|}z~„€‰y|„zw~€|}{|~z„†z}zŒƒyyƒ{|}y~|x|ˆx‰†€ˆyt‚{z€y}yw|tyxxwxyv|x‚€}u‚}z}}x€wz~{ƒ‚y|‚ut€€‚{|yu„zƒxz{~{ƒ„~{|{~}wxvƒ‚„}~}|~‚€{{~wywzwy}„„z‚}†€ƒ|ys~zu„z~‹}{yz~{y„}zw†|ƒz…}w{|~xprwu}}x€w€|y|u‹~s€€€~|‚zzz}{€}{|…~{…{xvv}uuz|}ƒ}}z‡ytƒ„}‚xw~€ƒ~}€|z|yu~}~xƒv{‚~{yux€xy|}~z€‚‡}zƒ~{x‡}ƒxw{€zq„€x~y~{yrww}{uy€q{rv}mzƒ{{~{}|x‘y}yuvr~wzryx|z}}~~zy}€~xwy}~€~|ƒ€xmwz~y‚|z|…~€Š…x}~|q}}‚|zrz~€€|‚yfyx„ƒ~v{|{wxzzr}v‚~{|{{|ˆx|‹yv{{~sysuƒƒ€ww}uyzz|}ys‚~|{w…s€~~~x~|w~€}t|z}|~yzvw{…~u}}}zƒ~‡†|~|zq{~z…{~~€~}€{tz€}~~†s|}’}u{w~|ƒ…x}|{~}~x~ƒ{€t€z‹zv…ztwxzzˆy€w{}zx€~~w~~€o~|uz|€€{y{xv€†€ƒ{zzzv~}~€~‚u~rx{}€xx€v|vƒ~y€ywy~~€z€„ƒ€~‚‡tƒx…ƒyzxz‚†‚f†z~|~|‚~}‡z~}€ƒ|}nz~zyz€w€yyo€tz}{}x€}…~y‚k|„}‡z}|‚yuƒ~„|ƒ}~~wƒ||v}zy|‚z~†y~xzˆƒvy{x|~‚|}|x„}t|}}ŽŠz}l{}ƒu|„}‚ƒvƒzw|{w{zz…Š„‚}{‚‚zz„…ƒ|‡ƒ{vz„w~„{c{z‚|pƒ||€x{~}y‚}yz}…ƒz{{}~|}…tx~tŽs…{z€}€}€|q{Šy}t{Žzr|p}||v‚{z|}|‚y†{|€}|ƒ„{†}€}~‚{}w‚~‡utzzwz{~|v{m}~€yƒ€{y…t}}|‡‚{‚}z‡|wn‡yv~‚…zx‡~xzyx{|y}…}}ƒ~€‚|vƒƒ}‚{zxy€|{w{€w{yq{‚y„†zx{ƒw|ƒwy‚†…v}†||ˆ}‚‚}~ˆ~}y~{t€}€zv‚}}Š}~x…~„{}~~|‰†~†rx{t…~‡ƒ…‚~~}~x€y‚u~‚}…v‰y|z~|‚uy||}€t}{yyx…}ƒ‚|‘|x~}x|}}ut€‚p‚}|{zu}u„‚~€€‚u‚‚uz‚~{|tm~„€|v€u|€x|||}|w{oy‚yy~{ytxuv}|ww|vwo€|…‚€xw~Œi{…ra€{…{wy|zn‚}rzzw}z~„vs~‚y‚ƒ€z†uy†‚qvw~|}sx|}|ƒ‚{ƒ…wxvu}{‡ˆ€w|w}z|}x‚{h{‚{ƒ|ƒ‚xx}}x||u{„t‚{}|w‡|„‹zwv{‚m~}~€vyp|~„yvkx‚|€x||‚~‰|`n}v{„u~‚xG‚|~sŒ}x‚ˆ{…z€w~~~}x{s}y€s€|~}{r}VŠr„}z|€{yŠwv~y†ƒz~~|€|}z€w€…su|z~ˆˆ{y{t~g}xz{mz‰}~~|~‚{}~ww€}kv{wywy†ysc{ˆ{}p€z|{}z†r|z€yso~{gmo}qtŠ‚y€uw‡{s‡u‰„{{zy‘yz~‚}{{q‡{zwx}px„m{tvy‚w~zƒt{tw{v…~st~s|}vt}t…pyƒ†x{†{}x€‚i~y{}y}†}tr~„‡~m~ƒRzxu}v}y€}€}€r|{ulqy|py~|‚x||ox~}|‚|{‡|t‚u‚~‡zy{ur|ƒv‚‹z}…~v‚xsvnw}xƒ…‡~~z‡€{|}}~‚€~{{ƒ‚|xƒ}~}}yy€~~~~x~{}~qyk{‚~~€xx|~…‚}vr{xz|zy}ˆ}€y{t|}€{~†€x‚~|}|zzow|ƒ‚y~„z„~x}„|‚y|}}~~{|x‚s|wv}u|}u~zzvszv~|v}x†}~|{~}€s|{‡|}us‡ƒx{€€{~‹r|wƒƒ€yt}~€z“pnx|„xy‚z€…|wy{vv||‡}…ys}€~u‚Œ…|}ƒ€†€€zy‚}{|€‚o€}…}‚{ƒƒx|€zv|ƒ€}„x~|†„}~y~r|y}ƒ{t}|y|yŽŒ{‡‚w~€ƒ|zv€‚|{u„x|s|}~yx{…{†y‰x|yxw}€uyy~ƒzyxw}}v~v|{ƒ|u{|x„zuˆ{~†w|ƒ}x‚z||~€rx|€{wx}ƒ{~v|}†€wy|r}„‚|~†w~}ƒxt”z~€v|ƒ†‚€|~|~~„|o‚|wx}xx‚vxy‡}x€}{€€‡ˆvˆ{~†~†x‡†~y{tovv€‚…~kƒstzwyu’~|y„nzz‹z€r}~v}‚~‡~{‰wk~€{wyvw|……ˆx€k~r{Œu|}‡~}~{uv{{hwwy~y…ux€~Št‚~q€{x‡~v{~Žxƒ„}x~‚‚€|vx{z‹w‡‚z~}~t†zu|zrrys€|{uzz||ƒ€wz‚~r„vu~}tyo|v}„yz|‚|~vƒlƒ€}yvu}•}{|t}t†tzy|y{{€qyƒvww}}{~wug…r}|x~€‰x{m}a~z€ay|~zxv~€†||ssyu|~vzs€Ž…{‚}|w…tl‚v~€y}}|‡zt€€vw|}‚s€oms~„y€…Š}€~y~u‚~xs€vtywˆ‚twƒ‚xv€v€}~z|dz~ƒƒz~‚„‚~|~}ƒ~|}²y{‚‚‚‚{yuˆ||n}{{~u‚|Œu‹qz{u|‚w}~„~x}y†y|{zr~{‰xz}ujƒy|u{iyy|‚u‚y{‚v…t}ƒuymu~‘sy}~ur}€x{‚yu‚„u|z{|…{{y€t‚yyuw„yW€x||}y€y‚zx|z}yz…€‚x|wy{v}|zz|xƒrw}qz‚}‚„ys€}„~„‰|v€y|}€z}~|~yz~€~|€wz~~|yx|v~‚xx„uzr|x“||{{|~{€~€}|||}|y„}z„„‚}|}zu|z†z{€~{x~‚‚z{|~€ywv{}zx€…{ovw‚}}x‚}v|}€}}{‚{{€~vx‚{x}…}v~€~xy~~}|~}}v|z|}u‚zty€ƒy~~yw~}z‡y}wzxw~„v|‚{€{yƒ€}{ƒ}€˜{~~~y}|€o{~z†v|y{|~wuzo€~{~~y}z€~vƒ~y€x‚xz~z}‚}z~€|}{z}€x|ƒy}{}{y~{y~ƒ‹s|ƒ|}t€ƒ{||~~wz€€€{~z~p€vpzw||y}y‡~~vz‚w~x~q}…w‚}}uz„w~|{|~„w~~{~y€x|vˆ{|||}„w€}‚y{z‚||z~~y…}~~}{~†}zx€zz{}u~xs†€vxty|wx~}}~}„t€‡€{ywoxn€x€~~|{s~x}z€uy{tz{€}}yx|{z~|z€‚€}}{‚y{€~x}„{}}ˆ…‚~vt}u€€yz|~y}zy}~v|wz„|s}pv{}s€|}z€}~|x~}„t~{‰~z€~€~x}Šy{{}{}Œvz€~~tv{€~y}z}{zv|}‚vy€‚r{†x}‘vyx€|„„~}|y‚{o|zt…w€„|yn{|{z{{~~x|x€}}w}„~wso{|y|}yŠƒ}ƒwƒqvsx{{{‚x{ur|‚ˆg‚€‹„z€Štyu}€}m}}}ƒ~‚Ž}y~y~w||~{js{~|}€~}v†aw}€}zx|ƒ…|x€~{}€†‚€zupz}}~—|t~ywx{€€z{|€{|}|x~x}}y|„…|}}ww€}{yx}€h„zxx€z}z€‚€|€u{z…~xw|y}z|‚€km~yv€|‚y~~„w|„uˆx|ƒ}||{†€yƒ€|…ztyzƒ}z‚€}}†~€{|‚|~~€…|x‚}ˆu}v}~€}ttƒ‚„|„|{€w‰†zŒ€v{r…x}z~‚€…~|€~wwx„tz~ƒ€}‡}„‰€y‚{v{{v}~}|zƒzr{{yz~y}y€}z€‚~~y|€{}zsx{~ƒ~{z{wy}~€}€oyŒ{yx~{‡‰z~o€{w|}}‚~xw€v||}~~zs}}yys†s‚v~{w€yx€~€ƒ{}}|zˆ}|{t}…}|z…x…{}~y}p}wrz‚€{{z~‚wzt|‚}q~}{||ƒ€{|€vk|||xzu~zƒ|}}||v}|y}x{w|€yxz†‡€{…|z|†€{‚{„ˆz€t||‚y„z‚{~{‚{…‰}}oz}ƒry‹†~u~~txwz€|wz€|‚zyt}{~y“r|ƒ~~…}{}z~…z…v|w|„yv~~}ƒ‚x~z€€|{{†~zs~|vy}|tx~~|~{r€y}}~ƒŠv‚}yx€zt|zr€ƒ|zyuw~}ˆ|xzvzz~{x{x~„y|€~v~xt~ƒ€{…}„‚z{ys„~ƒ{sz€~zy|{t~~{…€‚x…wu}wy„v~~ƒ€|~€zz‚}t…~{}zyxzxvsƒ~‡{zƒ…‚lyz…z}x||‚|{|vu|yyy†{‡~‚‚y}€{€{z|||„p‚‚‡~z‚v{u|~†‚|~~|~y}{z‚yxy{u}x€}€~{}|‚y{~‚‚†€€ƒ~‚}|{w||wv}qzx†€†ux~s~Š{z|ˆzr|~}{u|y{}{y{~x}{{u€zu}~Œjy~€y‰}~†ˆ|{ywq€‚z€‚~€v‚y{}y€yy{}~ƒ†p|}}nv~}y|€u~…z{yxƒz‡|{}x~‚ˆ~zy—}}~uwz{w|€zsy~x„}z}y{}{vz|u†€|„{{yu}z‚}~t…t{xp{~wt‡{{{qƒ{}w€}‚y‚uy€ww…|z‹|zw~€~}~s€…‚x||ƒ|}~€ƒxz‚‚ƒ|‚}~ƒ|€……}‚}}|~yqu}zm~{~z‚y€‚~z{s…s}}†€y‹}v€~zw†‚|v|€Šn{‡}vwzv{{~„€„†x{z~}~uszƒxy€{€{|ˆ‚€z~}€rƒt}|t}|qy†r|w{xyx€€yv~w|xˆ}€v‚{}€}}jxxv|oy€yxzz|‚tt}zvu}~}€{t}|tw}{„€}{{€zn„~€~‡‚x„{ywtz~{}|zrx€w‚~{{‚w{‡ƒ{z~~|z{|vzv€}|€z~x‚v}xv~wwzs|~~z{~t{vy}ƒv€„y}|~}z€yzvv{‰{}x‡}~‚ƒ}{€~w{}{xt}†}z‚{~|y~ƒ‚v}z€t‡…{ywzr}~{|zv}}~€y„€~€†}tv‚{~||z‰ƒ}}{x‚}x{€||{~zvy‚‚ƒz||€zz†|{z}z~x€}xv{}{„|‚†vtx‚s}~~~z{~ytzw|}€zy~vƒ|{€~zzxw„†}v|‡y}}{‰}€{~~~xxz‡xx€}~‰ƒ|zx€xj{€|r“~y‡w‹r}€y|x|yzz{}{xx{x}w{‚zyy{…{|~ƒzzo‡z…|u‰~q|~‚xy†z…ƒ~y‡†{†}}|t‘{{ƒ†z€†ƒ||x~y{}~‚„„z}z|€ƒ‡€~u{ƒƒx|ƒtx‚xtzz€‚€vx}~…‰|||ƒ|€€…y}~{{x|tszy„€x€~y~}y‡{st~{zzx}}{|…}}ƒƒm}txu„|t~n~sy{~~ƒ{xy|}y~u|}zƒy}t~x‚€z|}~{ƒ~zxv{ru|}~}}ƒ~}x}|z{{{~{y}€vwz~w‚|}|‚{zvy}~~y{xk{{~}w}zr|~„u‚|x|€~‚‚z~€zy|y€}}|y‚z}z{y~ƒ{zwo|~|y|~€tƒ}p}|{y}r~€{~nxx|}x}y{y||€‚xz{{‚xx|€}|}€}|}~y~n}v‚‚~}zƒyju}z}|‹‡x~‡€w‚z€wy{{}}xw|wl€€}~‚w|x}‚~||x}~yy~€z{}zw~s€w€{~|€|q{ƒy€yzw‡|ƒ~„{}w|}‡ƒzyx€}n~}w‡~{|yvz|y~x~|z|†‚z~x|€r}€y}~su~~‹||u~zy}€€x|~yz{x|ƒ|€|zzu~ytxw€}…~q~ƒƒ{{{|xƒ{x}|z{€}ƒxr€q„w}wz{}{|}‰~}n€y|~}ƒ|szz~}†}||Š~|~||vz~€…x}yzv~}r{xd~x{yw~}y€‚|}~||{wz|wŽ~t‚€‚|~Ž}{hy{y~z{vz}x~z|zƒy€v|z‚y}~zx~}||‚yy€{~y|z…yz}}t|~‚}}ƒypxŒ}|€}}‚z}}tyxu|‹~u‰zw{|y‚€w|zw{‚wz~~„„{uƒ}{w~|~{w~†‰u{u{‚…y€zw|€€x~y~Œy€}}‚z~~~}€|ˆx‚€w€|{|x{…{~‚y„w~ztwy~{„|~||vz|xy{||wx}||w|~…s}}zw~zˆ{wzz||€v|}z‚}…‚{~z{‚wv{‚y}ym‚v|yz}}z~€ƒ|yvyw}{{{uyy}}||ƒzpx}}}xy||yxyy|r„vv€{~}v|€{ˆ|{}s{~{v||y{xz}|u„y|{mxzv~v|ƒw{y|vz|xz|{{y~}|wyz„€{||}}}z}t‚xww|{„yy{{‚{x{|}xup{}v}{x€{v}}~z€yx|{~†{}„ƒ€€Œuwy‰ƒ€}|„||~qˆs{}y{v~}‚zv…}{v~}‚v{|~}}{{zzxzŒ‚u|‰‚„„vux}…}ry‚~€~y}„}{~{~‚~~€„|}v}{€v~~}‚€‹—ƒ|~{z}|{}yv~€sx}|y|}lZ|kzy{”~}ƒw~z~}z{{‚}‚s~t{‚{vywˆ~{v‡~„z~y~|}sx‚|}€~€€|x~}y|l|}{zv€€u|ƒ€{|~ƒƒƒzzŠ}}ƒwwuƒ|„m‡|y~y|}~z~ƒ}}{€tx|y|~~~~~€u€|xx{‚vwy|€Š\‚v}u}ƒx|ƒ{|xvƒ‚„~|„‚w~ƒ{{ƒˆ{|„€€~qyƒryou€{}~y~y“y~yy‚yxŒ}{€s{…€†~z‚†||ƒ|}{~z|s{w€€{ i}‚~}z€{{€€~|€~}w„|~‡|~}‚w~r‚wzw‰ˆ}y€~‚ƒz€}u€{{t{ƒzqyˆ{}€|ƒ„ƒ}|†‚}‚y€{hv|‡z~€}s{z|}}|zy€}~|„†|s{€|{†ƒ|yz~}{~}}|~xsƒ~{ru|}||v‰~{ƒrvm~||{ƒƒu|”z}t|}€}}€{o†ux{zxw€ƒzv{~j{zyy|t…‚xzz}p{wz|~ˆˆzx„z{€|‡|w‡{~„{}||{€y|~‚zxx~y€v~qyw€o†wwr†zyn…z~{}|oz{xmru~‚vƒ‚}z‡†zp{z}{|u{}„€z‡x|ƒ}~~‡{‚vzx€{†}xn}~y€{ur~xyx|}„ƒ}~ƒz~€†|~}}}|qyv‚w{qn}…y}|{y}€q„}{Œ‚ˆy~~{~ƒw|zm‚}Œv}~wzyw€|“}}{}€wpx‚~ts‰‚wv~{vzo{~‚v{v}~|x~wŠ‚z}yx{}{~sx€zzy‚|ww}{wu~…}~{xz{‡o€ƒ‚}}|nƒ|ƒ~~{~~v€q|~}xs|……ww‚€z{„wƒ}€x~v€€v€ƒ„{€|mƒ€€z{{~}ƒz|‚vwˆy}twˆ„oy}€yxuz~~|~}w~vuw€y~†‚}|}ui„sxŠ~yxzz”y{†~“~y{}yƒ€~||ƒƒzwy~|}u~€w‚{€„…€Š…|‹€x}y{u}z|vwum~}}uƒyzzo‚t|}y{xƒ}ƒz~}xt‚o}}€|yw€ƒy}u‚…|{xv}~u„|}y~qy~ƒ„v€w„|{z‡|||ƒw{z}…}}z}wˆ„}„ƒvxƒ{y‹x{}|~„}€|€uzyx‚|z…†~zƒ€y~tqy}€|~|~y|ƒt~yvz}o{|{ƒ„srx~x‚wz||wƒŠ~|y|~~~u‡|{€}~}~xyz…~{}sz~~x€}tx|zz~~€|€}h‰z€€uvu{y}xyyx|z|…z‚€yyo|}„rwz{ƒxyƒƒ…zxptsn|€uwx{yz~ƒz|ƒ{zw{t{ƒ}~{x}xw}‰wx}„{‚}‚x}x~~w{x{}†€‡}{y~{zˆx~z~~€z}z€ƒu|yxˆ~{j{€||vz|€}{oz|z€x~‚„z‡|{}ƒ†~~z}ƒy‚t~~{€{|€‚ƒ€€ƒvŠxxƒ‡ˆ|z}}q|~}{s‰z|‚~q€€~wƒt~xzwyy†}ywyyx€y€z€~|€{€{y~Šyz{rw‹‹x|€z|†‚Šxxˆzzx}}x~{€z‡‰zr‚}||†|ty€„„€s‡zxr…~{xvy‡|ƒ}y€ƒz{w{~q†}„{|v}yxv{|‚{‹z}vƒ~x€~}}x…|rl„}~…u„„zw{ˆ~xvˆ{”}sy}‰‚|~}†z~s~}}{€{w‡zv}{u{€z„€‚~e„~~t|z}}zzw€~}„v}{u€„xr„w}~zƒ‚€w|}x„}~~|{x~~|}z‚~}~}„}xxt~‚„z~|q}Š€Œ|‚ƒ€w}ƒ~…x…ƒzv||u„wx„rƒ|~yƒ‚}…€{€‚Šu{}}ztˆ|‚}ƒs{‚yv|zx€v}y~zzz}y~„z‚zs„‚|{}z}~{‚|y|||‚}€ŠŒ„|€…{†„~w|†{‚x~‡uy||{~€zy|z}z{…‰{zvzx|‚zxy|{z~yw}z„‚ry{ˆrxywwƒxw†z‚{„‚€‚~~wwxxw„}v|xzu~zx}{†qu}{„x~€‡€‰zŠ~‡„}€{~{{}~‰‚wt{„}{vs~{€„}g|ƒ{}y€Žs{|}}|‚}}†}}}szzv€‡}Ž€}w††}z{ƒ€{~ƒ~~€xv{y„€ƒyw|yˆ{‚€{xy€n€wy|ƒ~}}{€vt~{xz|ƒ‡‚‹x‚x}}~|…{‡x}y~†‚y}z„~}zz‰x}zjv~yzu}ƒ„zy‚{w‚yx~}xy}{zuy†}vx~‡|ww}~v†wmyv~q}z}{{|x€{€w€|y~wy…~|x}‡{}ƒ|}~|yz{~zz~Ž~x…€w}€…{v}v|€}w}x~{~}z{~}€~|}}m€{„}{r}{‡z~}~ƒ€~~y„‚|zzyp„x|z~{v€{|„xy€ur~Š}{}}~w|{py…~x€x‚s‚x~x€}€…y{„~‡w~~{|}s|‚zz‚€xw„|ƒ}ˆ{€{ywzs|}sˆ‚|{x€„{yz‚z|tzz}™z}}€wv€{zm|~|z{{z|ƒ{~u}~}x†wƒ{s}~~t„ƒ{}zz|{{l~‹oz‡yzzxyz{}s|z~~w{x~zy{~}}€€yuw{yv€‰y~‡||~€~zxy{€{||t}|€€}}ƒ{ƒ…|v€x‚wu{‚|o|v}}€~{w~z{zuƒ„{‚‚{…z|~x…{|‰…~~x~z|y|}vz„Œ†w„}‡vv}w{yˆyz~z„}~||Š€{~{€}|n~z€}€vu~xux‹€|yŠw~z~zz||z~z€…|}|xvx{wz{‰zx{…zr{}ww}|ˆƒ~~tyy‚„zy†{{}rzxz|~{}u}w†x|}…|y‡{}}}‰‡}w~}n{…‚€w~u}{{yˆ|~n‚~‚~€z€y€‚}{zrv|z„z}q‰€zƒƒqy€}|vzˆ‡Œ|‚z~‡z|{{|s~v{Žy|€uyv€„t€xƒ~~}z|…w|v}~{‚‚ƒ„ˆ~{‡|y‚y€zƒƒ{‚}|}„yr„xzy„}~}‚sw}€„x€|‡ƒˆ~}y{y{†{|s~z€ƒ|{|z{x”{€|}z}}tybx|t~}‰{~~ƒ‚€z{„…xx~~‚€{~}|‚|}{ˆƒt|{tu|vy~~}€y€mzzr{~†‚{‹{}€€yusp}}}y‚z{~€„}mv{|…{oj}z~zzw~€‡€~yƒz}~~|‰z€„~€„ƒzz|~€z}„~„uw„r}~zz{y{x…}|}}~|~y~z|€}{y„|}{‚|xŠx}€|}|w}…|}y|w}ƒ~x||~x‡‚|vz~}‚}~|}uz†‹|}}~}{ƒ}z~yx|‚~‰€|{}}{„{|z~z{zy{yt~~‚{{s}„~~v{|ƒ„{{€~€yzƒ~|uy~uƒs‚{z‰{}zxƒƒ{y~~|ƒyy{z~r‚z~€|||~xu}{xz}y„z~{}|v~wƒ}uz‚z„|yv~†„wzw{v}…}ƒz}|yz}~zx~~y‚…{||tx{„v{x|y…z|p{rƒs…hwyu€~|z{…‚~|y‚~}wy‚{{}€ˆ|}~‚‡}z{€~|wzx}vtu€€|{„xx€‚~}}y|yzw~~€{y„€~€~y}}z}}}~wy|p€vw{|sz|}{w|{}jvu}†€u|ƒx’w‡x‚u€‚z|}}x}}{vz|ƒw}x†}v}xxyˆv~}}}m„{}{w|}{{vyzy†~{u€‚€~qz{}wƒ{~uyz}|u}€‚{z}~{|ƒw}w…v|~ƒu…€~€€~{~{w}||}ƒ‚~|~ƒ…ƒ}~‰|||xz|€}z{}{x{{{{tr}|ƒx}}|u}|~ywq{{tq~‚}y|s|}~|{}{y~|~|’ˆ}vu}xy}{jx}|u{…w{|w~}~|w~~|y~z€r}‹svyv|€„|€~z~ƒu~}}ƒ|yuv}{|z{…~|yz|yƒ~‡z~p‚w}x|xwux|€z{{€owy~€yz{‚{~w|~t‚†‚~~z}}|w{t|~€„€~|uz~~}w{‹€}rv}}{}x}|Œ~}Ї{‚„z‹||}y|}}{}€xz{ux}‚†|x{}…€x}qzp{q}w†yƒ~}‡€y{{‚{u‚…lqv}†{{}t…‚~€‚txpv{u…umzuu|}„€||uzs}€u||{}|€y|~}€}ty|„{œˆ{†o~t}‚wtx{‚sˆv€~€wy‚‚zi}‚y„‚y~t|{rz€y~~|€z†}‚vs†q{ytŽ‚{w}x~‚ƒ„~}|u~~„~}|z…y~nyyyp‡yzu€|~{z{z{€z€ˆŠ€v~|€€yur{q~…ƒx|€z„€}€…~~qxy‚€‚€y€zyxxv‡~xz{z€~y|z~~x|y~}|~sx|n€x€€ƒ„}~|…w|}}w‚{w|€~|€{€|€‚„yzzx‡|ƒ€}v†|{ƒ€y{yw{€{}‚~lz~|{}}‡…v|~}x|u|…„‚…‡v{‚{€„|zz{~ˆw}yx}„€yz}{Š}v‡~pz|~xzr€~}‚z}{ˆ{z€€uˆ}ty‚‚‡|z€‚v}z€~Š„†€y~}~x}€~|‰~y|zy~q~uŠu|ƒvˆƒ‘x{‰|}‚xy~}z}y}z|{t€‚x}‹w~~{‚‚„zƒ‚p~z{y€ssˆx~w‚}zo~|z~}ƒ{‰u{|ƒyoŒ~zxw~|„}yvy~||zy|wƒ…|‡{{€s„~€‚qyzƒ~}}ƒ|zƒx€y€Š‚‚†}‚r~‡}ˆ}|‚„v~ƒ†m}{|t€{†€zz‚my{x}|xy|wz{zyy|ƒwy}{v~z~}…{}{€€}u{}‚y€y„‚ƒ|vzt|z„€yz~~‚ƒ}€tz}~}{}}}|~ƒz}wyƒ{‚z|uy‡{€“wuw€zzz€|y…‚ƒxsv}‚z{ƒ†w}oy{~}„‚z„}€€|Œ„ƒyyzky‡|ˆy{~~ƒ~~…yt~r€}zy}|Ž‚}}y~}}x}oyu}u{~}||~|w}{}z„{€‡v€€zx€||~€yyy€ƒ}ƒƒ~…{v…ozyx€‚Šxz|z„{{z|}{y…}yr†{€z}~xƒxv}~†}€{yy‡{y‚t€‚{{|w‚z~}|}xx|||{}}~~{€|z~ƒ€€|wzvw€x}z€y…Šz†~y{|{‡}}y‚x{~v„€€‚}z|w|~{~€‚ƒt||}~w†xq{Šz~oƒ|Œxxv€„sˆ}s{yy…|{|‚~x€z|}}~}~w{}|ƒ}}„zp}ƒ{ƒw~€|}„}}}z€ƒ}zsv€t€ƒ{}}}|‚q|„xƒ}q€}~v}‰}}€{z~Š{z{~}€y†|}||…v}~~†{ƒ}’€||w}x}|{xv|z|wz{y|{y€p}~|~‚{}€‚‚usvz|~|~z‚wz{{wx€€|x|z~zzy}|vv}ƒ†|o|z~zƒy’|z†Šx|„€x~|zu‡epus|vs{‰z…{ƒx‚|yŽ„†…|q~luyc}}|os~wz‚r|u|vw~wvv~„~psvw{‹xwzxŽ‚‚x‚‰|}€„…yzuv}‚}’‚{|im€„z}‡}|’ˆ€}‰v|{q~wmsxxw€‡yˆys~{|Wqz|zvu€v~v|€{{s|~~zvp”mz}y„x|„}s}€†~p}u€zp„~‚w„n€}m|wss}}|~}wrzyŠ{|ˆ€m…€€}€}v~€‡{„g„t~|‚zy‚‰{‡ƒ-„|}y‹zm~x|uwxa†‹sky}s}z‡…ƒ…oww€‹x†zu‚{wk|wv~{y||quzx†‚z€†ozh€~y‚€L~‚Š‹}|w{m?qrztxw†vty‚wwˆo~w„~|w€{…x~}zy}xr‰q€lv|ƒŠ{~~€y{~‡‰sy~y}ngƒnpoqzx€œ}p}ylw}~fw€~~{yyƒw|„uˆ}y{}|s€z{{vn€†yw~wpn„zˆ||di|low||vz™ƒ~zb~|}u„ƒwq}vƒ|~{g|yŽ{„yz‚~ysv}z[s‹‹yzs||y€‚vz}‚ˆ|z}ruw}…{~z|~x~}Œuzy}yz‚y€x{xs}~~‡~y€}u€||‚{„vu}t|{‡‚y€w~}{~}l|~}{}~v‚{z|t|wp{x}}€}„vzt{t}f|€‚t€y{n…€’„xu{…~…x„|‚v…~ƒlv€‚~qƒw„wy}xy„ƒxnx}zy~|zy{|}€|vƒ€|‰ˆqƒxuszs~z~v}€|‚{l‚€€|}}}}yu€||ƒz€€|{}ƒ€|€‚|‚{…‰w„}zzŠŽ~u‡|{z‰{xyzy{ƒ|~ƒ€u{zvyyxyz}‚€~zx|}‚~…v}‡}|€vƒz|vƒy{|€{}yyy‚ˆˆ~{y{“…}‰|~€w€„z|‚zr‡|‘€…„~|xyx|€wƒy‹~u{}|ˆ~‚w{~{‚€|}m|s}zyt…~{„}~|wyz||}~ƒx‚z€y|}uxzyt‡y~}ƒ~€~}r}yƒ€}|wq‡€yuƒz€zvv‚}„‚~}}‹†ƒyv‚zsxv{~ƒ~z„‚|rf|zvq||xz‚}v‚€xw~‚…~ƒwzu}ruh~}w}iuƒxx„€{|}{|€”t„ˆw}~€ˆy}|„‰u|q{x||{ƒ{{|‚w|~|w€‚~sƒ|z~~{~x€~|z€|‡{y‚x‰„†}}~xx}}qz|€}vpgtt|xr~}||t|dy{‡|{€s‚{wz€yxƒ|v‚€‚{…~€~~r~xz{|{}ryy€|su{{|}ƒ~}ƒ€z|{}sx€uwˆw}}|yŒ}~{|x~|†~€‚z}|„wq}{yxz{€}}|z}‚zx€ƒ|q}|y|}~~|zxyzu~zƒy|‚ks€zuruxr}{~|r~xuƒzw€~{‚}…‚ƒoy†w{}€ƒ~~z…{~‚xzƒ|€~€|~|†zvx‚€t}€}{{w~{y‚ty~sƒy€~|w}~x}y„x‚‚€||z‚}ˆ~}|}~t‚v~{y}}~x~w|~sv~||o„‚}}„~ztz||yyzˆv€|xyszz{oƒz}x~€‚{ƒ|z~€€zy|w‚{|x„{‚‚|x„wr~{{{{}|z€hu}ww}z}~„|}}{…Šyxzy~~p€x}~}u{€sv‚}}p|z{w‚~‚zh~|{y{~‚}z€x~|ƒ}€t}z€q~ƒ}€x„z|~~{r†‚}ysx€w„}ˆly€|…ywxu{}‚|x€~Š€w„€xt†x|…š€‡|s~r|}pwvˆ}_x|Œˆ{}xƒw{z{u„{~†z|…Š…~xvz}vz}pqv‚xzsyvˆz{zŽˆ„uyz}‚~’‚p||ttƒ~v|‰|{p~ƒ……zz{~Zsu{~~~h}uq}x{{u~|~m|~{…r}w|€‡|vjƒx~…oqw}}{u‹‹x}l…€~‰z{{ˆ}{|zz†w{€v‚€€e‚|m…~{ˆ{~ƒ…x~x}€||~q|„}|~|€w„~ƒ{yy}ƒ~‚x~v~|³uˆ}}sš}uƒdx™…€z„†€…|}~w€x{„{s|yny‚z~uw|}rh€q~€uiz|yt{y…mrv|w~b„y|€~yo~€z„sm‚uww~}ƒw|v{~vz{n†ˆ‚wƒ{€{jx||y|vƒyy~†ƒ{xƒ„~wxƒ‚w€v€xz}z}r{|Š€nŠ…„€†€~}y}„e€ƒ‚€}ƒurxz}€}v{ˆƒœux€|zz€}}zz†~z€t„z|‹~vv{{„„†y~ƒtv{s~ƒ~|{}y~~tƒzx{x‚{~{w|r~~{ƒz{{}y‚y}z€y|~w~‚u}r|wv|~}uvz€t{zxt|x€uxƒ~v€wzw€}~€~€€v~}~ƒ}€€{}z~|‚z~xz~…w{~{~z}{t…v~zu~z„{}}‚y|y~{z}‚}}{lyz}z†‚y{~wƒx~{t}x€|v„|~y~…z~yz~xz‚x|zyz{x~{}}}}w~}}~~~„‚zx}{‚|zy|~|„ƒ„„zy|~yz€†x~s}z|}€xs{wsy~x‚‚wv|~{~‚}|€‚€|€zs~€zyv|wy}~|xu~y‚|†…€x€|zy}}~zw|ƒxtz‡w€qy€‚}€~}}}vsƒ}yx{z~|~t}€z†v…{Ž€‚ywp~x{~u€pi|z|z|‚v~{{€}†v{{x‚~„‰z€u}~{|zk~xy€{€|ƒƒ}~|~ƒ~w~Š}}€y‚}lvx‚€ƒ€ƒzƒ}{yz€}€z~{ƒsy{|}}‚|€|{†ƒƒ{{|€}~s€ƒxz‚zwx‹‚w…‡{€ˆ}€‚|xz€ulq‚PtzŠy…vzv€‚„yz}„sƒƒˆzz‚|€|{tvszŠz}x€t…ƒs€{‚v}v€x€t‡‰uwy}zz|z}qzz…y}€|‚yzw|zx{‚}€w„~zw†}†e|zp{z{|{†‚€‚qy|{srx}~‚x{‚|p{wxv}{{|{tq‚{wux~{…||™t~y‚}tu†|y~xzyy€jm†u€}Šyzs|z~~r~~‚}yvv~y~{uj‹r†}|w|†„}‚„|zoz€vi‚}sŒqˆ~{y€}zxy‚vs~‰ƒ|x…ƒx…y€o|v„x€ƒy{|‡~~s~{|{…}{~z~„zw}ylt‚xމv|vqT~…‚xwp‚~~|‚{‚zu|x}vxƒtuu||€{„~q~~ƒqx}yy~{x‡{zЉ~~zzrƒ‰}su|…pwŽzsv}x{„|†yf€€{‚{{}~|}„buˆt{w|ymuwv—qjzzz‹y‚w~ovz}u~~|€}yxsy„xq„~{o‹†{~€|ˆƒ}†w~m~}~„wk‚|zv‚yzs‚z{„~„€xlu|‘v|x€{v€xwz}z{y}{~||„†{v‚n{z}zsy~|u}€||Ž|ƒu{}}€|{~y}y„ƒ{yzm€yztŒn|І{‹gŠuy‚Š€{}~xŒ‚†{‚y‚ƒ~wv†yx~ƒvƒ|wz…‚xx†€mƒ€~||€ny~~}yx~{{†o„qsy…x€|r|‚s}€~€}~|z}ƒu}}}}zu}t{~|~x}~tƒv€ƒ}}y|wy|z„wy‚{u€}{}{‡y]s€|Š{€xzN€|ts|‚r}x‚xurƒ~v~w{ƒƒz~{||t„‡xzƒzƒ‚t~x~ƒ€u}€u‚o‚~z}~{„€}|~yƒ|||‡z}vvu|n|w{l‚spr}v~~}ƒ{{}~{|v}v€w}yvz}zwuy€„}}yw{{kƒyuy†tu|ƒuveouzxwyw‚s{j€~wwyz~‚y~…†ƒ|~€|zzy}uƒo|x|ƒ{y‚r{{{~‚ywtp{||]p|}|xz~„}z|{tw€}|}~‰{}q|‚~z|€ƒh~vx€o…zz†ƒ†rƒˆ‚y‚erxtx€w|u|x…}yƒ{€|w{w{{|wv{s}~‚zw„}~}|x€x~|‚w}ˆ†~~yƒ|~†|{€|€‡}zxŽ„zy€|xq{|n‚|€z}|zu{ƒ{y€{~vtw€~yz|yƒy†{vtw}~y{}}€~‚‚t{{{~€|xv|wzƒ}~z}syw€…}vx{„s„|~}zŠ€xƒ|}w}{||~ˆ{}}w|{y|z}|x„†~z~}{{€|v|v|ˆ‚}~||yz|u~ƒ|}v…}…€xzˆ|~w{yyz}y}ww„s|~ˆ}yx{~‚~~~||‰{}xp}z~wy~‚~„xxy€yx~~ƒs|€„v|x|w}xyw~{w~q{{€zy|}s…|~x€~~z€wpŠ‚~x~}zn…{xx}|€€‚v}|ƒ|~sxzx…tz‚~|‰~{€~}~|{}z}Šu„…q}||~x{y‰}|€v}ƒwvx€|}}‰|}€„~‚x}~~€yˆ~x~}~wx}v{xrƒ~ƒsy{}~‚||w|€x€yƒt|yxtˆvz‚z‚€€‚†ƒƒ…~r}{{{z|…‚yt~{‚zyv‹{|Ž{€|hsv{}u}€t~x‚v~…rˆ€|~v}€}€ƒwƒvyy|y~ƒ€yty{w}|}|€{„}…y}ƒ€}‚†y‚z~~p€~~}vy€d…s{}x{vq{~w…Œ}…{}~ƒ}ˆwqmƒƒ~u{|€~~{~|‰x}€}~}„ƒyw{}‚ƒ{~{~wƒ€|v|~u|‚z~www|€‚}z€}o|Š|~x†v€}~~x|ltƒ…yv}s}|‚~y|{„{zz|}~}}‰|u{ƒyz~y{wxz€y~}s}|||y{u„~„…‚z~{uzz}€}|~}}†v}~txx~|tyŒy}|o|~‚xz{wz}}}yz€Š‚|}}w~{{s|}‚~kyw|xvx„|u„ƒy‚|rŽ€v|}v}z|{zx|}t{€~|nq{~‡~yy|}~}n}u€ƒˆ†m||†~w†{y|z‚{s‹{€xs‚yy~m~Šr{|zs}k‚w}cq~|o|}yy~|}sq€{~p{‚pzwrv{{sswv~|vszz}{}{u€€€zƒ‚nyww}~~|€„{{~{{‚|}€†w|~v€w}}tt|~|zx|x{†}}}|€~‚yxw€|~~ƒtu}vx~}zv‚|~zx{|}ƒ}~~€{{‚€~‚y{z~r||€}|‡y‚~ymƒ{ˆwy€|s~~€{{}‚~Іt€zƒ}t}yzƒ€|yw}yyssrxz€„tw|x~ƒztu}~v~„x€rv…||}~sƒq{ˆ|r~}y€†ƒtz{Š€{|}~w‚{~|}‡|z}‡~y€qw{tŠ}}}z‚r|{~}mw€uw‚x~|€~}~~€…~zƒny€xzz~{x~€zspm~€…•‚t~ƒ„}vx~w{zƒ€|ƒzzzx|~}yt~„{zqyvq|}|wˆŠ~ƒ†w{uwz|v„€€}€||uƒ{|s}†zx~}}†w{y{}|~~„}ycu{z~~zƒwx‚{x|~~|‚~y}€~„||z|‚‚yzxwzw€yxv„z†}{}{y}€†rzwy€z…}|ws€€|‚€}…€~}|€{syz„wz|~„€wnƒu|‡Ž€z‚‚}z~|~~{„‡}y~…o~}ƒ†yw…|~}~~„|{†~~vy{ƒ{z€|zuxy~w€z|{€~xz|xyz~}y{‘~~t}{„zru{~}~…}~~x|}}y~wƒs€‚ˆ~€ƒ€€Šzlx‚|y‚zy|~wz}ys~n„~|x{}{}€x{ƒe€lxw~e~y‹rz€~d€q|z~€zzxyywyzxuz}g€…{}y€}yvs††x|‰ˆ{rz…|uwty€yw…†k‚~€Šw|x~€€z|||yrx}z~}p€vƒ~zyy‚€{||{{†u}{~}}{z}}„‚q|~‚|pƒsv„y{z~~o~€}t~|„~x{Š{t}~vy€~|jƒ~}xz~w|~pr}uzƒƒ~ƒ{€€y~y€}y‚|{{v~ƒ|‚|~z~y}~{}‰|r}}{~|{~t„~ˆty‹†||v{}‚€xr}|…ƒ||z}z€sƒ€sws{|yy€‰}p‡y~s}x|}}z}~vx€‚|~~zy~z~~{‘u|‚z|…x‰{x~|€~vzvy{}{~‚x||~{€n}z{„‡zx~w}{yy€€||x}|}wryvxwyymŒw€{~y~zw|v|z|{o{~~yws}…‡~{|v}z€~w~u€~ywywzv€x|~z€x…„yƒx{tu{{xv„{…w{vuy‚z€z€‡yu}{||w|{{w{{‰€~u|~tu{{~}ƒ€Œ€}q’rz~|uuv}~z~st~€w…z|||x}|{|ƒzx€sxy}‚€‡zy…~}„x}sw}q€Šƒ~}{}q„|xxƒ{rx|}ss€{~{|{€€}}znw„z€‚y~„ts‚|}}ƒ|zz{v{€yx~z{{}|}u…}|†ƒ{}€|utxwpvq|}xy~u€f}{v}‚€{{s}q„~rsz}sy{}{ry~y|{kzwzuh‚vz„~€|wvwxv}|„}~~z{€|~}{nƒ{‚€py€‡|xxu‹x„~ˆ}ww~~v€„z{{{q~~t{{|}~us~{vˆ|}…€Šs‚yzy„}~~€upv}|ˆ{w~doyws…~z…w…yxxz€~€‚€|vo|t‚z|…x{€‚vx„z~‚{wkz|}…x{„}x€‚~€z~}|~wyyz}||uu‚v{ƒ€w||xvw}y‡yy†~€‚…ry|€ƒzz‚z{€o||}€~~s|z|zz~{zz€€|{~‚x~~€}~{|}~~€zw~†€|‚~|€~~~€u~ˆ}€|]xzwq}€{}zƒ~|o{~{r~ƒzw}€uwz}{|w{~s„~}‚€z{~{}…ƒ}}}||†€s}~~~w~‡~{‰|t†{v~yypzy}~~x|}}|yq‡~€}~„p}y|||{y}z€zzy}€yƒ~ƒ{~‰y|ƒz~„ƒy|„‚y{||}}z|sy|yƒ~t|pv~uv|}}k€‚~yy{rww{}}{y}†€ˆz„€zƒ}~{}{x€z}~xxz{}z„}vwˆ~}ƒ|}~}‰‚}„||{|{tƒ€xŒzyv‚}}~}z€{zz|€~{€{xozxt}}€}‚|}~q}}{yƒ|||~tƒ…€{|…~}‚m€{xv†vƒj}|w}€}{}u{nkyrˆ{t~x|€‰v~}€|z{uyt}€€{}{v€‚|†{…yy{{„tx~…ƒzy€n}~|€}}€„}}}zt}{‰qƒ~s‡o~€†€z~}xyx|x‚|{|†yp}ƒ„v‡{}uˆ|‰„ou|z…qƒ€|{}„}~}‰|‹{v}|z{n}{}}{‚„y‚{}~yqzyrz|~}yv}|€s{x„ˆz~}|z†}}}}Š{x…‰‚y}xz~…ƒyugw|~xu{w€‚y€„{}yx~ƒyxwxv‰~~†zˆ…x€{nzss}„z{}€uyvŠz{uyw~t|t|…~{zw€}€xyˆ||y}€w}wq€‚x„ƒs†}ry‚r…|x€yzv|qˆƒ}}}|~{ƒ|}~{|pxyx}~u|€}}rs€m~}{}u~vf}~~‰xu{xy{v{s{}€}ys}w€„ƒ‰„~y~xzx~qt…z~€z~‚~xzo†w|vy~…€|y„}x|…Š‚~{xxƒ€zxqx~}}w€{ˆ~|{€~|s€{v}y}ƒ|{z|y‡v}~~€€€|€t}€‚xr|Š‚w€ty…~}plrtx{€x„€zƒ|€‚xvˆ‚~}~{pn{w‚s†‰~wlz{y{{€|x„rwt{w‰‡|rvzpu„‰‚|}ƒ‡ƒ€vy€{€‚zu~yyz{‚~|z{‚~‰„uvƒyy‡}‚€”‡srs~u|{y|…‡¥„t‰~xx„y€„zw€€{l~~ƒ{pv{„bv‡Ž}yw‰w|yƒƒu~…Š‚s‡}|y|{zwo}qv||~|€s||{yztˆ†yz„}urƒwy‡|}}~~‚€‡qyu…€yz}p‡{|y„zy|{‚†uw}}z‹vzu…z}y€}vwmyz~|€Œ…x|x†~|xu€}Šwƒ{|ov€zvz|‚~”}s~ˆ{€|…‡x}vuz~~|k|zmƒx~|zx{oxrs}xe{yttx{€{}y~‚{{}|ƒ}qrLyn|‚mtvƒ{›u~ƒ~~|w{ˆw†{yt{{uxŒ|z}„}w„„|‹rƒ|`…t€‚~v|yz}€…u}l…wŽs~v}ƒz:y€yy~~z€|~xw}ƒ€]„xw›v€€y{Q|}z|x‚}€vz{zr€€w‚Qš~€~wz}|‚x}m|ƒ~q‹uw†‚‰’…ˆ~|z‡}†‚v|}u}r|{{~w’~zˆv~sq‚xƒ}}ˆ}|}ˆzy†v€†}|}~{x}}‚z€…uz…y{z‡ƒƒ€x…‚‚€y|xuƒ‚‡€}€n|y|z}|wd~|€||€{€p‚y|x{}z{zvxzˆ{“€}€}x€{‚~t~„x{|……y~~v}‚v{}z€y}‚‚ƒ‚{{ƒ{|}{|z~x‚‰p‚z€u€z›wo}~|{{€€|…{…x~zƒs{{w}{€xƒƒ||‚„x{ƒ}|zwzu}ˆyx~‚€y|yzm~†ux€~}yq|{p|~w~Œzƒ„|y€v€}xy€ƒ~{~{}€€}zt†€|~{ƒ~ˆ|ˆ~z„vƒz}~|{|z…{ƒq|z„‚{x{ƒ|Œ~|tƒ|y}~ƒ{tx}~{€~z~|‚~y|xy|zuv~|y|‚|||€}ƒ~…„w†~~}|yƒ€|~t|vwzƒw}{yx†}yxw…Š|‡€u}x}||}‹‚‚yƒq~€~z{|wou{‚zƒzz‚ƒw{z€|w}{yƒs|{ˆ||w~ƒq€w~€{ƒy{z}|}„‡|v|vo||~‰{|~~~†…ƒv}wƒz€{~z~|wzz{€}‚zz{zx‚}y{…w}†vtˆ€w{y~}|~~}€zz|‚‚o}xyv€{}z‚€y~‰yu|z{x{~{u‚Š}€„…~}|~€x|t~}z‚uƒ{{vp~~€ƒw‚w~‚Œz{{€z‚‚‡|~}|h~|~|u€{|ƒƒt}u…t„ƒƒ{{z|hx~}‰|‚~w‚u}~„~€†zs€|wzz|yz}zz€€t€v}}|}…}~‰}€z}|‹zuy}x{w{{„|„}w~yy}x„~z|}~~„ƒ}…‚~w}‚{vz‚t|yz}{ˆvv…€|yz‚ytƒ}|~}…~y}r{}||}~~€„vy~}yŠŠx€‚r{xƒ„}vy‹}ˆ{z‚{‡zy€{y~r~y{z…ƒ{€}{yst}~‡z}{t{}„}s|~|€zwzy…|}}yzƒw‚}…}w€v}tx„€|€vz{uyu‚€r~qy~{tr~y}||Š~~€vzo~~z{~}o}„€x|}}}‚}€uvu{r|€‡|€~}vzy†ƒ€„‡z|€z~}~x}~~†‰Œzs~}}z†xx€z€y|z|}vox†wvz|w…xs~–‚‚z‚…vs‚{€yy}ƒ{|{~wq€x|}|x|~„~€v}ƒ}…v{}{ƒ~{m}€|ws‚‰{wx|ƒ}vxxƒ…y|~x€|~€v{{…{…ƒsv‚n|v…u~…t}r‡}}t}tƒˆ}|€ytƒwƒ}~x~v~Š€}||{|{„ƒ€zt‚pq{ˆ‡€|uqt}m€~z„{y‚}†wxvzx{{v~€|~†……~~ƒf€z}xƒy|ƒt|…vu|ƒw{wt~}‡w‰zx‚n|{~z†€xŽ{{{|€r„y{~|„~z|u~€~n†~‡~i{~z‡€‚yƒ~y€||‚|zv~y}x†~ov{|ƒz}vƒlrƒ|t~Š…€x}‚{w~‚yvwƒƒxro|xyt~~s|~vu€†yƒy~ys|†‡zƒ}†~uq€„|r€~…~~{ys||{‰{…{~|zŽz|ƒnw‚ƒ~~€x…ƒ}~~yzywu‚w{€wyƒp€~{z~Šzw{‡pz{}xx~~s}~}€€pw{z}yyƒ}pz}~t‚v‰{q‚„yy„‡z†W}ˆ}y}€yy‚|€oƒˆ…‚}z„~……ƒwy‚|‰y|ƒwuu}qsz}}|„r~tv{‚…‡t~~tsv|z}|w}{~†‚x~ˆzn}‚y{sx‰‰vx|~‚„m~€ƒy}u|w„~u~}~}€{}}€}zw~u‰y‚}x~|€{€y‡{€yyz|‰~€|€{y|ƒ}y‚„|„‚„z{}}p‚w|z…v€{†v‡}€y}}€|z€~~|{yx~wx{v„‡€€‚}}y|ƒwz~€ƒxzƒ~€wƒt†~~}~wz|‚€}‚x}zy|}}zz€€}~€~}}~|z~ƒ|}~m…ˆ„{‚|~€}z~|z|„z€z}||m~€‚x€~x}€‚|ƒ~€}v€ƒ}{|v}~€…}x€x|~ƒ~y~z~‹~z~‚‚zˆw{y€zƒ|~wzƒz~†z{~x}|{ys|u{{ux}}~~„{~yx†}z„s{~w‚€{‚‚ty{†|€~|zz{~‡~}yt}y~vwy|‚w{~||~y|{…y€†l{~y{‚y|„ƒ{‚u|‰}}‚v‚{~|€v†~}~}}„y~z~|ƒ{|€ƒzwy‚y~ƒwzy„~zyrxrzƒ|}‡{‚ƒy}}x€€€€yv€{{‚{„}|yy…~„‚ƒ~}~rz~w€ƒƒ~ƒŠ{}€‚|‚€u‡x{{€‚w|s‚yz€‚{{€sv~}}z{€x~v€„~u†{yz~{{ˆ|~z|{~w|{{xw~}}„|ƒ‚ƒyz‚€t‚‚yvxw„…‚l{vzv†||rƒqr{€€‡…y{}‚ys{ƒ‚ˆ|{„ƒƒw‚€}{|†|{[}xnv~oxn{|yzvtyzy‚}ƒ€}xtpƒz|xvvyw…z}€|{y~~j„{x}ˆ}w„{x‡z|„yZx‰y„~u}~}q{{~|zt€t‚y~z~~€ww€z€u„y|‡„x}qr€~t~‚lvƒy‡„~s{zw}ƒn|v}|z}w‚ta€‚‚{{z‚}j{†y|}‚{‚†€„}w~€|x‚v~‰…s{x}„ˆw~ˆ‰t†yz‚~s€v€ƒˆ‰zu€…~y}{~y{~}zwy|†‚ƒ~xy„yw~€€€‚~`}p}ur~|uk‚xxƒŒzu`~x{‚ƒy|zxƒy|}s~|y|ztxy‹ƒ„s{q~p‰Ž‚vw}†{ˆ~}‚ƒ€|zˆpzˆwz†|‰}„z„{z}†~{r†z{vˆ}zz‰ytˆ}€€‰t|wu~w~z{||€|„q…|z‚{„€~}w|vz~~|€~||z}ƒ€rt|}yv†~‚z„z}qy‚€ƒo~qwˆy|z„~€|{ux{}x~€†xxvm|zuz}s|„}q|rs|suyznwx{x}x}x~w€szt~|€€†…zy}w|ƒ„€€|Ž~y}x€‚~sƒx~xtt}}{{|||xv|€„|y|yu€}„|~†yvv~~vty…}}€yz|r~zvi~{y}{{{€y}~yz€xxu{†{„~o…s~}~v~}rw€|kpytr€{}~|s„zy{‡z…jw~€u|x~…sz|{‰€~|…zzzv‚‚{}‚wx|}~{wxyxuy‚tuxpw{ƒyv}}p}~‚ƒ{z|rxƒ|xz~{w~y„z€{{~{}{‡~w{yƒxx~x}‚~‚x}qyp}xƒw~~ƒp€|†€un†yyx}z}z†‡xy|y~~‚€{z{€}}w}{z{w~„w‚wz€v†s‚oyw~‡w{~~vuz}ywy|{|w}{~‚€q‚yy}|rx~{€}|}‡‚{{‚~{}~x|xxuv~€}l|h}|~~ƒ€‚{yz{}ƒ~zwpw‚q|{zg€~}{s~~|}‚z€|}|tvo•u|r|{z|€}~|xp‚z€|€x~{}u‡z|v‡€}|}}‰ƒyz€x~y~z|‚†ƒ}s€|y€|v}v|‚z‡uzu|v|{}~rzv}„…}wr„v€~{Ž|…v|Œ€wtt|{}t|v{{~{}q{z{{y€€|v{~z{z„}y€ysy|yzz{|v€v||~}y|}~€{~|†{||{€n{|€}vyw€|}†‚|q}†{}wƒ{‡~…q|€x|}yƒ‚wz€†xv…|||t|y{sƒw€†w{u}|}~‚y~€~x}~{{yz†|||yx|y~~…~€~}u|xˆtyƒw‹‚{~…{v~|xx{{{}~z|tr|{{~{„{~€yzxwƒu|}~Œwvx|~‚tƒz}z…}€‚z~{‚Žp€z}{|~s{|…zvw€x~€z||ywz{u€~ƒty}„{y|wyƒ{w{„}w}z|~ƒƒzxq‚{zzl~|ymtx„€z~u{}v‚{y}„€y{z||puq~„zv~p†~|~‚|~z{ƒu|{~€}}z~|||~}x}|€‰{~€…zzswu{}‡|x~w~}y|vws}‚~yyy}ƒ{xŠ}{yz{€…y|z‰xƒuz~€z…y|}|€zy}€x}{}x}}~w‚x{~~z|}w‚ƒ‹t€}‡|r||n}€~{Š~{t}zv~€~y„{…x„uy|~{}|‰{‚z€{}|p~~|‚wvŠƒ†„ƒz}‰~}}x…xw‚‚wy}}€}}}|~}‹‚{v}~|z…x€ƒqu~s…ƒ|w†}‚i…~~y|{{†{€}‚{}}zŒ|}z{{w}z~r~„{z~x€p~~t€~|‚}xw‚{zy~€€}qsv€‚‡„rvy|„}ywz{{~|}yvz„€vy{}|}|s~}|w}~~sx€€‡v~|~{|{‚}y{‚{x~p†{u…€‚{z}ƒz}~{|y|y~{r…{}w€}{u€€‚z~{xzs€ˆƒƒ|~{y~{wz†‚}~v‚z|z}€yzw~x~t|~…€~z||}|€y}…‰…|€yyx~‚z|~€}{ƒzyy~€„w}}v€|€j~vyƒq{…z~‚~{‚{}~u„wƒ‡Œx|†{{ylˆ~{€‹{{v{|ƒ…}wzyˆz†{~r€x†}~y€‚xz}€mzyv|q€…}w}z{}{y~w{{‡x|l}}yo~y†{zv|{w€…~s‚Šx|€~€|ƒ{y}|pzzuu{~‚}ƒ€u|ˆl{q|xw}yp€y}z}}y~}€}uƒ‚{zxvww}x~~‚~y}‹xxv|~y}zxz‚~w~{u}xzz‚‚y|z}}||ƒ{ˆs‚{zy‚|~{€v}vz‚‡s{wyu|ƒ„y{†|wv€zw~vy~{zz{ryy|€ywŠ}{|†|{txw|z€z{xy{{}yƒ€€y|v|{€€ˆ…y‚€{|‚~‡}‚yƒzvmxzz||€‚{~w|‚…~ƒx{}‚zw{v‚uy‡|z~€zƒ~€uy‚Šx{z„x€u~ˆu†„ƒ~{~v„o€v€w|x…n„}{z}zw„€m€€w„zr{s}|€{~~€w}~z€Š‚yxy…{„~x…u‡tz{€}~|rytw|„{yv}yz~‚}ƒ†{‚}z‡…yzz}|‚uw{€||ƒƒnyz{yu‚{„€y~wxu‰|‚|‚}|z…~~w{ƒ|t~z|~{ƒzw|…‚qw}}ƒy‡}x€‚~y{uy~z~~y€|€€r|}‡}~{~x~‚uy}ytz~v}ƒ~z~vw~y{{w…{g}xy{}zy‡vyw|sz|€‚}|u€w‹~m{‚}~}}zƒw‰}€~z|yyprz†w}€}}u~~st€~~}}‡}|u}t†wƒ|}{€}~|x~{y}vŠw~~~||}}q{~{yz~‡~z|…ys|q‚|€w€…‚€}{{z‡zƒz{x„x}|}|„‡{}ƒuy~}{x~w€}Œ}}‚zw}{v€z†}yyz{{}‚uƒ{|zzyƒ}ˆ|‚}}|€}zvy~{‚w~|€{}~}{~ƒ|p{xƒ~~‚w{n|€€{{}}w}{x}wuv|{}q}€~}}|uok€€n}wq|€xz}‚wvx||{‚~€‚‚|}‚wx}}|~q~}y}}x~z~x|€~†v}z€|zz}v|}}…|{oy}Œxzu}‰{}xuy~}y{|xw}kƒz||v„ƒ{‚{zzl~yzsk{€u{‚|Œ|{|}xt€sŒ€zw~‚x~yu}}~{{{{„†~}~z…xz‰}x{px~}{ˆ{qzx|}}x|{{v}oz‚‚…~ƒz}~z|‚ƒ‰‚}~}„|z{‚v{t~x~z{{}€}‰y„t~{z|xƒ|w€z€w~~ƒv{}‚~}zz{z‚„zzx€„~u„…z…s‰}u{vzw}}z‚‹}}}€||{yx}yzwv€{†ƒ|}€w|g€~~„|€}~~z|r|x}‚{~‰}‡ˆ…|{~{x~zwu}}|t‡||}u€|wx}„{~yz}w|‚~~|{x~r„t~€|€yuz}vx|~z€}‚~y~€x}t}|~|u}t{|„~|€‚ƒz||‰krl€€…|ƒv~€}€o‚}}z~|†wyz~|~u~|r{„|…€{u~€v€{y}}sx|vƒz‚yr{€€xuy†u}|vzr…{w{yu|}tƒz}z{~|‚}wv}‰~|Š~‹xts…x‡x~ˆ€zww|{€}…ƒ…r†~‚||uw|~€oz‚wz|yƒ{€„‚…~~|x‚ƒxˆz|z†‚yyu‚€‚}}{}|~~wzut†||x†€~€‡~~|€{z|tz|{†|x€{€~~„ez„}q|~o{‚~ƒ€yx|y|Š€|~„€s}}}~|~€ƒvw‡ux‰|„€„|v~~‚€}|‚y}{~r}~u~o}|y€{z}yzv|{x|Š{u~{~sv{‚‚}~|{v‚n~v{lywt€y~{|ww|}t{~{yz{}|}}€€z|~|m~|y{z{}~x}xut}zx|}}}~{|vwz}‡‚€|}vz{|k„}~{tu†…~yzsuru~z~…zt{{y{{ts|z}„vzm|y…‚|y~|~}}~uq}{z}}r€zu|w{x‹€…tx~zv~€}~„y{{ywq„rxt|{‡}}}{z{z|z~€{y‚}ƒ~wxz}€v€}tz‚†„gy||}~ƒ{„y‚~|{‚{{lu}|‚~zm|ˆ|‚xy~u||~|~{|zx~z}~€x{€}y}|wt|q„€}wr~x~x{sxv~~|s~{}„|q}ƒ{ytv{|~}w€tŠ|zx|}}n}‚{|~x{p|s}{œutz}|‚|}}v~ƒ~x…y„z|||w€}}u…€z}|yv|}y~|v‚}|€z€}x€v|€{}€ƒw|}~tzƒw|~€z€{v|z}|~‚ƒx€x}u}zz€yq~yv~{‡}…y~~~|}|zo{yz~s}|~||suƒ~ƒ}x~{‚x‡}{ƒz{{t|}ƒ{Šw„~x€t‰wƒy|„€€wzwuu|‚|x~€|‚|„|‚‚t{~…|}w}w}z|€~x‚ƒt}||{{z}v~|…xy~|{z|vx‚€‡’{v~~z}||ˆ}{t‚€…xywyzy~€~{{…}}x„o~‡|m|„wzrw|€~~}{ˆz€x†€€z‚~‚}w{z|~wy{|~€|€{}wuŽƒmypuy€z|€{€w{y{sy}~}†}zzw~}yv|xƒ†ˆqr{‚w}…~†€„}x„€ƒxzƒzw{€||zzƒ…}†~|„ytwz}„~}€{y~z}~}{v|l{|€‡x€~~w‚|~w}{{†~~‚yzƒ‚o€z{}„€|~z€z~}~‚~{q~~w||x{}w‹z|~xw~~ƒ~„zv{|v}v…yv€uz{€ƒ|„yz„„||uw€|x~p~}yˆ}{}wwˆ{~x€}ww{}y|Ž{|€€y|ƒƒ~t|}|€|y{xvu€‡‚z‚|v‘{}z}|}v}‹w~ut‚{z‚yu{y}{{~}~y}ywuz€ˆ||xxs€y{{||zxy|vu‰r€‚~~{}‚€~{s|€~€{~}~{r„}z{~‚|xƒ‹z~{~~‰}~~ˆ|ƒ|€}}w|€r†zz…yv}xx|„x}v{†~}ƒty€‚rx‚}yz}{~…~ww}{‡€}v~~}{}Š…„…ƒ€w{{|y|}|€€eˆˆ|zx}y€}€z€z|‚vƒt|z€t€|€……„Œyz~ƒ…vˆ€|}{}y~}z‚~z|Œy{€x‚}sy{uƒyz~z~{€€x‡}{~{z€„y„~z|yy‹‰v}zuƒx~z{†€wƒˆx‡|†z…xƒzy~}}y‚~q‚‚|~{{|zw{…yzƒˆ}|ƒ|~z}ƒxz‚}|yƒ}~„|‰€~zwr{~~|z„z‚xw~„zss|~~€‚{x|{…v…|}x„|zˆ~€|‰~{}s~z‚u{~|o~‹zvƒ}sfq{}|t€w{y{f†vo}xtxx}}o~‚}{~{slv}€{u{ƒz~|x{}€tz|‡†~w|~~‚~y}|oz~vƒ}s†…~{}~us‚o{{zyw‡|‡zyx|}n…xrw~z~€}}~‚t{€|x…{xƒ€{l{syyzp‚ƒ}\}x…{jvvƒƒwv}v}yuzƒ€tv€~{}ƒ~t}wzqt„ƒ{m}ƒ|zy~}z|zo€th€xz~ywy{…|}‰†€|y~~|txt~z{k€~}}s„zs„ƒu}z‡r‚„~y‰yyzsvƒxy…€vtsxpxx|~y€‚}}qZ}}vnu{i~z{{wƒ‰vw‚uow~~ryw|‚xy{}ƒx~…u†z}‰uir‚}z{ˆt~ly€‚~ur{{€{„z„zy‰~xy|y|z~‚xzv|x|vsvzx€‚€mbwzxz{…{~|ˆx€}}}ww€zz|~ysz|uw…vuv}w€v€~v€‡yoŽiz{€‹‚|oyux€w}y€~m}€~~~{{zs|€zy~{{zuvh}n|€yw~€t}{{|‚€‚{y|{z}y|w€}~{{{~‚x„zx}ƒ€x…~ƒq„}xƒ|}xs~x{x€{z|{xz€ˆuƒ{}v‚‚ƒ|yyz{{†‚…yyy€uwpx|‚ƒv}zv{u€{}z|x‚|}q{‚y}|…|{{|}ƒ€{s}y|u|}‡{~‚y…~“€}~}‚~z‡y€vs}}}{zx}~u}{zz{{}}r|}z~|z|{~vuy}‚~{~{{€x}y{r|z}x}~~y{v{|v}}|v~zvyv~}z{y~~|wƒ„‹ˆw{|€|z…xŒk~|h„xz„€xtsx€}}ƒ~yy{~x~~|„}y€ƒztww}ƒyŒ{}|uy|zx{~z~~zvuv‚}~yƒn„zr€„€~{xz~|†‚xrx€l‚~z|u}}v~€|{|€v€€{sz{€qx|€„t…‡}~…wƒy}w}}{ƒ}‚Š~„z‚~ƒu}~{}€w‡‚‚y{‚}ƒzy{‡zx€‚‚s|{€}w‚…}€~~{~k‚…wzs€xzz|t|{}}}}‚|€ˆ}v„{€r}}{€ƒ}}Œ{}|€y~|~|z}€€|y|ysz}‰w€{x{t|ƒi{s}ƒvyy|x{}€‚s€zyzw}}}y€}{{~ƒ|‚{†‚}xtrntwxs}€{}€z{y}~‡n|…~n{w{„v}zƒ|vz}†w~†‚zx{|xy{Š~|€{†y{xyz{„wˆz|~u}ƒv€€yw…i€}†{€ƒ{}|}|r}}‚v~w|s|zv~ƒzu|ƒ€|…zzrut„{}qzz|xtzx~uvy{}z}|~z~€vxuyxz{sƒ‡‚t‚}{{~vzqwywvqut~…y„y~{{|~w~~|}€{w}†~~|{x|rz~‚|~}}~yy~~ƒ}|w~€€w~€ƒ}|k†wƒ}y}yƒ{€|zw|vz€{p}{~ƒ|{z{€‚~}x{}zy}xtt‚}{~}…„‚|}…}ru~ˆpx|€{‰}{xƒ‚u}}€{{„|{‡x|xu{{ƒ€€€ˆ‚‚yy}y}€„|€|{~}~|{}v}z‡ƒu}‚rƒp€€|‚}|y~ƒ‚{z}~‚„€€|vy|…€~~hw€|y}z|}‰{yr|w‚€m‡~r}…ˆv}~r~‹‚zwanxnƒxtuz~|xuu†xyv|v€~‡zp’ex€pt‚sz|€€|x‚~ytx|w€ztvu{zr~t‘uwuw}r|{‡{v‚†~ryytu„ƒw‡€|}‚tz‡€j‰x”†ƒ„„z}x|xneo‚ƒxŠ}€}t‚z‚Xmq|mwz}}„[”tpsx~vu~xŠ|ƒxi|‚wy}†€}ƒpznytxx…y{x~~fv„r~}zƒ|{‚c}~…}{gw}t†u‡€…{z}wz|iˆŠˆnswx€u†ƒ‰ƒDsu†|€„|ˆ‡rL€q‘„y‚h|ˆ†ˆnzu|…€}}zv€yw|{v“w€}~{{bwyuƒ~|{€kvz}~~€~ƒ|ƒxw~ƒy}‚coƒ‹€Œ…uz…srb}…qx…}ww~wxw|o€{m{„€{xo…~‚t€€„rv‚v‡~{v~ysˆ‚„zˆ|tvs€gplsuucƒ{}{|ƒa…osztx‡„~€{€{t{rp’zt}|{~…ulƒˆ€s|wu€Žr‡…}}zli„{zv~|ƒtƒ‚|†bŠ‚|r‚‚y„l|xy€z_{t…|†~y}€€aw—|pƒqˆx’o}~}|x}ƒwz}zvt|~|||~„…~x}„zyz{€ztƒyw{u~€ƒ|~‡x„wx~xwz}y~~|{€‚„|}{y~zry~{}~v}z|v~‚€ƒ|ƒ~}|~|~x}{|~}{~zxwuy€}}ƒz}€~{}r‚y{zz~~ˆy|~}v‚~|{‚}~{x}xw{wyu}~‚y~~x}ƒƒ~y{y}€‡u€w{}||{}zz~ƒw}y€u~}|~ss{{{‚}ƒ||||}|…~zx}~€ƒ}‡{„|}|€|zzy~~„wƒ~{{qy€}ƒv‚z~r„z|y||~~„vy}}~|x{~{{z{€~|€~t~|tyzz{}|zz€|{„~‚~„€}}wƒ€xzv{…~ƒ‚yy€z~xƒzq}}wzz†‚|{}}{|}}€ƒ|{€}~ƒ~‚}yz}‚{v~}x{|y€|}€z}ryz|~€‚{{}m‡szx„|}||}}|…~z{}}ƒy„z„}~|zx…|rzvy~z}…~yvu„{~{€{€{v|†~y}‚‚y€}||y~|…€{|~}}{{€w{€€wz€|~w}}€{~†zy{|}u€z|}}}xy{{sz…zy€s„zk}{‰yy†z{}|ys~}}‚‚~uyx{|}}„~‰~~ƒ‚zzv‡xx€{|y~z|‡z~€sv~|z}ymƒ||„|z~~v‚~yw„‚~~ƒ||{ƒ|€zz{}qzqx|}}yxv€z{y|xxt‚||€…}{ywzx|~‹‰}~~yw}x{…~pz}ƒ~xz|}‚vs…~|{~}~{}~|}{…zzz}~~}uz{}t~w}}|{|€}zz{~Œ|}{x„y{‚|xw}|}vzx……w}‰w{u‚|||€x|ov~|~~|z|‚jˆ€{|}yxƒ~~ˆwxyyƒy|€v||}|€v|uy~~z|}v“}v}u{wy|||…€€‚}‰}z…~w}xz~ƒ~}y€~Šzz~~qz|w|€~{~oz€}{~ƒtpx~}ˆ}{|}zu€„z}g€|}|x„|z‡z|zsx‚{|x‚‚~~~€††wx…z€€}„|„xt~ƒ|€‚y~t„y‚…}|}}…~{z~}{{}xy‚ƒƒz|z‹|w|}}{y|w„z|zy~y†}}~ƒ||…{u~o|€v€sƒ|€x~~u‡z~z}~„|„}~}€y}€ymu|}un}~}{}yzqzzwo~ƒ||}nƒ|{}€}Œx€uywf€zz…z~~ƒyzy~y}mv|~ƒy„w}‚|~~{wu}{€p|uus{|€‚‚|svv~€{Œ~|}~x{~Šw€yv€yxvqŒ}s||ux}ˆ‚|{}zyy{v~|zƒ„€{||ox}vyzz…}€~zyztto~~|s~}z†}|‰~|~z€rz€…„€p|~}~w{tx{}~|nu|‚…{€|x€{ƒ{zzv}tz|{{}y{w{‰{}yy|}}{|y„x{q}€€|~†ytow{w|€ƒ~zz€}}{}ƒy|‚…{€y}‹u}€ƒu~€€y|ƒw|zr€€{|~kv~|u~}|xƒ|zv{rm}ƒtyuy~~€†…‚‹uy€„wu|wyz|v‚l|ƒwŒxw~~}|…|{z}x{{y‚~ƒ}|{…y„y|m{}u‚€‚z€€{}zz}x{|ƒ€|x„}q‡~{‚Š|~~}|wxˆu}yysz‚~{||tzƒ~tt~~{zv{{|}vvrxw„ƒv~„~s|€x~~…|t{y~xtxyƒzvuƒ|€†z~|‰}}{wyzfˆƒ{~‚w~|zz€vyx~ƒqv€€}ƒ||~{ƒx€}}vx‚|ƒ}„†€„}}y{{}{~ˆv„~€yy€y†xy}xŒ}}y}€u|}~€€~w|}}…‚ƒ|„}qzy~qŠqrsƒz€v||~…{{z}sy}~{t†‚{{zrƒ}~~|ƒ~{xx‚…}{†ˆ{}||}{r~ˆ{~{vz€zvyy€v|{…q€}}z{€|‰z}z‚†v€ƒ€x}€€~ƒxv{€Š~y€v~zy{zx}}|ƒ|‚{ƒ|sy}x}~yx{~ƒ€…rxw}z{}|‡~y‚v‡„wt{ƒz}}o†}€x}|x{}||~y~~zx‚syv‡~€}~}uzƒ}€~{y™vz~zyzƒ~z€}€yz~}|}|y€~uzzƒˆ{‚}z{x|…|yyw†~z‡xx{~x}~u|‚…}…x}{}z‡w}|~{w{}}w{y„}€u~xz}{v€„ƒ}}„†|}|~~z~v}x}|„s|yy}zzy~~ry~}€z‚zvzy{w~|pzws}y}ƒ‚~z…€}wm‚r€{‰ƒyyl|}z}‚„€u‹yy{}z€w|p}€s}y~|Š~wvy†~„~wzxp}w|yvx}w|z~†}{|u…‚‚y~‰€…x~„}}…„ˆz|}ƒw}‰zuzƒ€€„}„|{ysl‚ƒpxw{ƒw…„sm}€}n}||€„tz€z‚x‰€|{xx‚~uy}}ƒ~v~l{t}€{‚zxm|{w}€}€|u€}ƒypt}€{}…y|€|yw{…}|qzyywz}~€~~wv‚ˆuuv€‰tyvx„w…w}…€|€}||…vz~‚~rxˆƒv‰s‚„}~}{‚}{…oz€„}w‰|uƒxƒˆ~q|‰z‡nz|}„„||y||ytx‚xˆ‡m€~~sx|}vv{yq€~|{|v|s~~€|€ƒyl{rxxtzw}}„z|}vˆx‚~|}vx{u~zy{€}…x€‚xv…|wl‚†‚vv†‹~~{p|zwoƒ…„‚uƒ€€z€}}xuw|u…r|r~|u}~{‰…„}~|qz{y~‰‚zt}y||}y{ˆttz|€z‚wvƒ~{|{||†€~uv~†w}yŒ‚€xwu}…r€{„€€ƒz|}zr€€„ƒ|}~ƒ†~|vx|~y{‚r}€~…†|yt}~}|~yy{sv}z|~~w|y{x‹{x~}v}€||~z{~ry||‚~ƒzy{„|…z{~}~ƒ|~‚|zƒ‚ƒq}{||zv€w‰{r|~y€}xu|„€uzz€~y~x|x~}v|y}~{z€{}~}x{}}{v{v}}xv{}„‚{z|€zzt||wy}{zu‚s‚w}€xx|{~~‚‚v{„|s|}€‡}{}~zt~„~y‡ty~{||vƒ„}}y}{}~y~}~vz~€wyuw~~wz|€|…{tz‚€|s{zzt{„{{}w~€{|y~{|€z€xz‚‰~{}~x||}zŠ€zv|zyx~yzƒx|z…wx|{|x{~~{qƒy~‰}ry{~z~€x}|z|y~}y~}}xt€…‚~vyy‚t|ƒs}x~yz……€v}~~wszw€€ˆ‚vwz|y‚~€„|y}‚so„|ptv}„w€zt|y„z}„s}zƒtŠz|y‚w}z‚ƒ€|ww}wzj{ƒ†~{u~r}vu}‚€zƒ€|v~€wƒxw|„q†z…}€{~€vz…~…|}„}sj{}‚z{y†~qwƒ„„~t„t|‚‚v€~y~{y…yv{|…|u~€{~~y‚x{‚yz~„u~€„~~y~~{y}…ƒ~t~}{yp|€‹y{rƒ}y~{{„|rˆwwu|}~‡z‚}‚z~x}{}||y{jƒ~…}}€„z€}‚{ztv‚~|€~z‚xw|€xv†zxz‚zzzx|y‰ˆ|{‡}}‡xyz|s}„y|}€~‚y‰„{e{{{s„k‡u€z|t~z{y{ƒvs|zvxx„}swy„~{€}{~~||‚{y}y{}}wz}€q{~vƒy}r~„~~~|}|wkyw}†{^~}†|‚~y|q}|||tz~~oqz}uƒrw‚v|zvu„yz|{v}y}qƒ{vŽ|yu‚y€|u€~„y~~{…~}uzoyƒ{ovz€zzx|s}Œ‚}~‰a{x„y‡{z~z|€~‚n„„‚{zŽˆ~|…uƒ~xzy~w€|p€…{u|{zp~‚t‰€rj|zxv{{~w{}€|u‚|}x‚~~~y}†||{†~~|w~~z~€{…|{t€‚jz…~xw{ƒu|{z‚}tzxƒ€‚{|‚€†}|ys€}€„~ƒƒnixxt}yr|~y€{‚{wv}„}}{‡yy|{~ˆz{yznv{{y}}s|‰ƒ€ƒ€{uq{€ˆ~wƒu}‡}xu~‚…q‚yx‚xz†€}{‚z„|{{‡s~w|{…v…{€Ž{‚‚zz€€‚{}ƒ{~~}|‡wst}{y€}}‚}‰}y{xz|}…ƒz|}€q{‚~€‡…ˆt{||€}zyz‚{„|ƒ}x~||x}v~t}{vƒ~{‚ƒƒz{u}z€zzu}€€{y{y{{€‹wzwz~|y„z|}z€€z|x|x{}{~|~}…~}w}€yz~|~wz{~ux}~€{}ozy‚‰~nt€||y‹r}~€|~‚zs€€w„zˆ€€€w{uƒ|}{xyz|x{v~~€y}}{{{y}s}ƒz{{x~}t|‚~yww|l||~|‹€xy†€wx~u|{{|…r…ƒw}|w~z{x€z}vu}l{~z}{ywv€…y‚xz~{y|ˆ†„†x‹}x}}}‚€‚|{{‚uzƒ~os}v}€|{tu{€swxqyŽ‚z€y}z{vy€~zvn}ywŽr~{€„j‚y€qzvyyww‚yyu|z{†}ˆ€ƒ€ƒ|xyw|ˆz~‹x†€z…|~‡}zz‚–ƒ~wt„…€~w‚‚{}„|y|u{u~Šz€”}‚€€r}{t{€‰~Š{{{†vz{|rzz‡{{|q{vzt~|‚‡ƒz}ƒ}y€„}}}}~z€x„…y~}|tx~x~z„w†zx~qx|ys}‰zx‚~‚pv|sz€„‚k‚Š€…~z~~v~}|†suƒ~„|s}t|zt|„‚}zƒ…„|p~{s}zvƒ–u}twƒyyzƒx~}ˆtzw~„{Œ||ƒ}€z€yyqvzŠ|Žxzy~{w‡xw~„†z‚І~zf†wu„ˆqz~€sy}{{|€{xƒz…~‚€~p€|‚“~}‰‚u„€sŠ…}…~|xst~}€szŽ~„zƒ€€†l|ƒy…{k}y‚}‡€€xƒx˜o€‰yv„xx€{}…y}{‚wv~„ƒ}€~yzz~|t‚‰~ynz…i||{~w~n|xƒz}„~r|}}t}w}‚|‚}y|~‚|w~sy„t€{{~~€}y~†€{zrz‹}}{~z~|}…€~{z}{~|}~{}{}z|w~wq‚yuyy||€€ƒy||€€€€ƒs~{~{{}}ƒ|{~{xƒzyy|ˆy|p€sz}{~{{}~€{u|€‚‚x}…}x{yy{w|„|~}‚x}~‚…|~zz~zw€~~‚€{‚y|yt‰x‚ƒ‚‚~}|}||}†zwy~}|u€{z‰~†|~|{zw}†w~€zxz{{}|w€zvu‚}~‚€y€€||z„}u~{rx†{vz†u|ƒtx†||{~~}€||{~~|}~…{xy}w‚‚z{~}|y€€y„ƒ|}~~y~~{€wuƒx}}u}€||}€~z}z|{}‚|}us}zwy€}‚|}~Œy{}~|~~~ƒ„z|r…s{vvt‚€…y{z€~wx{|€~~|z|~|€}ƒuy{~€z|…yt€†z~x~}y~~€w{‚|‚~}{||ƒyz{~y}}w€~}}s‰~}|w‚}ƒz~tƒ{}}||‚|xƒuj||}xr€|{{€~du€{€|{z~x}~o~}|~qƒ~z|x}yy{„y{}xxzxw‚€q‚|n{}|}~y€hw||{zƒx‹}{}ƒ||}{}ˆ€}tvpu€vƒr|z~xz~z€{}|{}w}z}}|~~ƒ€|u}w|psz{€Ž}||rp}~wt‚|„{zz}‘~y€„z‚„†~u€ˆyxŠ€~‚|}|u~|„~{|~zŠv|t~~~|~‚~€‡xx|twz}yvzy‚w{vtˆ~{y€{ƒx{yqx†w}ƒ}v~~}z~‚u{l…}€†}}x€}z†…yt€v…||}{|ˆw€}„€€w€~‚|}€‚|~mu|tƒ~}‚x|z„{~~€„}‚w|„x†~‚yxz{}z}}zz}|ƒ~€}‚zz}~p‚q€u|ˆw|‡s|†}ƒr|~z{z{‚w€zƒ}z|rr~u|w|y„||~ˆ|y}‚}zp~ƒ|€|xz}Šx|{rxw|{y|}~v}|~z|y}~v…qwo†~{~‚{ˆ{y†€{}‚xp}z…{|y}•|{{{z{†|‚†s}wrƒux{}w}„…€{~{{xt~v{|zyvƒ{~z|€€€…x{|zlty}xyr}x{x„€|{„€}|||wz{†€‚y}w€zv‡}r|v{|{y|‚‰uz{x{xv„xxx{}€‚wƒyvtywuzˆxx}s}{~w„{ƒ…v‚x€|z|{ƒ}|‚~yƒ}xyz}z|sy€w|u~}wzz|‰€‚z}||Š‚x‚}v}~~{uyzyƒ|}„€u|ˆxyƒyx€w„z„‚ƒv|{}yz~zv{xƒ›ƒz|~†€zwzƒty}{ˆz‚…pz…pŠƒ€ƒ‡}{€…~k}|}|u{€~‚}y‡w{s…w{|z}w…vuw€€€}w€}z}||€{€s}~{‡xxy~yxiy€{xŒ~‚}‚y}z†~{~‚~‚xˆ{|z~~~y|z|~~}‚€}y}}€€‡uv€y‚n}{€{s|€}€|te~ˆzt{‚{|Š}|‹x}}{}~z~|‚}z}w‡x€||{~x}zc~€„|y}wzƒ}rywuwy~„x€€x~|}{{~|z€z‚x€~}yz~u~{t†ow‡}€|~€~x€s{‡|‰zƒ„t|y‚xzv|x€x}{v~~ƒ€}}ƒ‚}~}{~{{‚{|{v~zz‚}}x†w‚t„x~}€z{„rt‚q{‚z}x}€ƒ„~w„u|…{|w}v{||}€~|†Šƒy‚„~y~{ˆ~…~ru|€t{~z~~ƒ‡…tx{‚‚z~yxz{zy~‹y€|†z|„ƒƒ~‡‚{„wƒ|{zz|||‚|€…wt}yqt~x‡~vyx…tx~~z{‚ƒ~xzv‡x…|z…zzx|z€‡p}u€z|~|~zƒ„zƒ€z„xvw„y~~|}€t}z„x‚~„{||q‚„‚zysƒ~}€zz}|}…{~|q}|~~~‚{~‚{~€~{~‡yƒzuƒ~{|xƒ{‚„€t}~ƒ€u{|€zr{€~~|x|p|†x~€~u{z}|~ƒ||€‡~|t~~|w~‚†~{xŠv|‚w€„|}r†~„ƒ€zy|†}xyx~}‡|r‰‚|}Œ|ƒzz}}vu‚€x†z|‰‚}‚u}‡}{}~ƒ…ƒ‡~|x‚x~€}y}w~„{txy{…{z{|ˆ|xs€zŒŠ‹|yz}„|{{{|~‡ztz|zƒz‚zzj€€|‰~wyz}xyx|~y€~…‚Šo~}y~~r~€y{{ˆ~zz~}y|~}~uv{yƒ}€y€Žwx€zy{x}~€€}„{||w‚}~zyz{}ƒ{|w}y}|vw~}{€|}||t}|{~}oz}ˆ€~ƒzq}|z‚xu{~{u}}†yx†}{|}yz~„y‚‡|zz~}{z{v|Žw€w…zwsƒv}w{‚x{{{}€zƒ‚}y~yuz}}€{{tt|„}~€|z{v‚}|}‹„s{~zv|}}w~~~}vy}}€}‚vv…{€wy‚z{{}{{y…ry|ƒ}{‡zv}yv|zzz}x~ur{yƒv{|w}‰yt„ƒ}~{‚{{~zx{~~Š€z|~~~y~yvy|ux~‚{{z~zz€ww€€‰|o€luyzwx~}~ƒ}|w{xuv~y~€|}|xz|}€{~y~wt}ux}Š‚~t|~‡{€{y~||wyzrz€wz}‡wˆz}†ˆ~~u„ƒvt€ƒzx€zw~w|z}€~~|{}t…|~{‚ƒxu‚zt~{ƒ{|}†x|v|€~{y{€xyuy‚|{‚{|…‚}|x‚ƒ|zyzz„{€kzo{z{„‚|€‚‚u‚rwƒq€}{{|{yxy}~€{€y€‚z}{‚‚|v}y‚{u„~„}~wy{~€}}z€~ˆx~€‚yq€|„ƒ~„vzwƒzyz‡z~q}…}}’sx~~|€|}~~|z|~vvrwv…z~„~}€zŽ€€}l{{y~t„|ƒr€v€|{€}yzˆx€{|…y~n|x}|xyƒ€…}z}|‚~{|~zy…‚n|z{x|xwv~‚ƒpz}}{~}yx~xyzvp€w{|†{€€~‚w|tz~€€~|ƒr}€}yŠ|vwy€ˆxz~w|}{~~~zs{w…ƒ€qv€t}qzx}~~|}v|o|s€ˆu~‚ƒ{yˆ~w|„yn|}v}|€…wqr…ty€|zy~|~y~|€‚y…}}|{…{{}{y}~y€{|{~||x€}~y…‚~o€v~}z{ytŠp‡x}u‚~~w|}€ƒbo}zu„z|}zy}~|‚…ƒƒ€~||…|x}€|{xx‹{}|„zw‚|}{„|s…|~||w||uwy~€†{z~ty}}~ww|wƒ|z}{}|y|‚zzvy|„‡|nx~|zƒor~~~{s{„yu~~}~ur‚|c~}}`u{{~}zzu|||u{~~{~x{xƒŽ~|zpw{iw||v}szy|w~ˆrk|ez™|zz{|€€}zu€oƒ}}p~i}}}€w}ˆ~}{w{{ux}|wƒx~w{x}}ˆy}~~€y{}s~z…ƒ}|yw‚ƒ€is~‚z{ql{}y|~€~v{}s|t€{ƒ~z}ƒz}u|~‰w}y{|x„z‚~v~{~sx…ˆ{~|}ƒ~zu…„{}z~€|iz}}}y~v€z}}{}‚{Š‚~‹zwzty}xxx~|~}‚vx~wv€{xz|x}v|ƒ||z|}v~}‚€w|z~z€}y{y„xzzy{t|~zx„r~ƒt{€|zdw|~|z}z„|{‡€w{w|}z~t}z{y||{yv{€€}~yˆy{’z‡p||{~zvii‚y~‡}}€y‚w|‚v„„„s||€„|z†w{„z~|}v|€„z€tvw{xvrxovu}{†{€|x{„{sy…|~†€|z€n‚yyt{zxy{{|w|}nzm}‚|}s‚}}y{}zs{x|~n|u{yvxz}y}€€}‚{|}|{|ƒz~~„uz{xx€zz€}|x€yzy€……‚†znz}€‰w}yƒ{|{‚€†ƒv‡|sz€|{|~…‚}}x{}ˆv–~†u‚€w~|}{|}~u€€†}su}rvx}}t}y€{{„{z~}ux†w€{zz}}€z~~|€z„{x€q||{x„vƒ~ƒƒ€~~€|wv}}ˆt}|{{y||{{„yz€vƒ{}€~|}{|}}z}…|}}wn}y}}|r~|{{{€}z…yƒ|y|v}€||z}w…{p‡}sfxzy€}€y‚{n{~xq{€{v{{€Š~€~~}v{ƒxy}}~w{y|€}~}|y~|‚„y~w†zv‚}{„{~~v~}y|{{~uzu}k}|}zy}|{x|‚zx~ƒw||{}u~|w}{€}}wy‚v€€‹~{~~~|{x…~€v€|y~vz|yu}~‚ƒz|€‡utuxv€|yvx|~s‚zzw~€||€x€…~yw~e}x}u€~|z{{|~v~}|z||s~xsr}€‰o}„|||~xƒt‚}~wu„~~xzi}€}w||~‚|}v|~€~uw||ƒg}~zw~y|wxs}Œh€{|z||ƒ}€{|ˆy|v}€ƒt‚z~y~~y{x~x{y‡~~z|„‚s~||zz}~€}{}l{†zƒ|zl~z‡}}{|…|}q}~rv|xtx{ƒy{~ux€y‚}wƒzr}y„z}{~yu}w}€|v{€vy~~uz{}|‚€€y†~~{|x€~|{{~xx|u|~|{tz|}w{€zz}{€Œ~}}}}|yx|‚~y{}{~ƒ|€wx{wv~}…z}~iwxzzŠ~x~yy€~y{zoy}{{…|w}}„…}}€~|{€{‚„x}{}x{t{t{u}u}‚y‚|ry{u}~{~„~…xxƒsrk‹}ƒqy|tz|~}~{{}{zw~ozz{}~|}n‚ot~q}‡~t~rz{}‹xw}’~~}ƒ~‚„y{}u€~„„{}~vgw}y€}|qzz…y}y||‚}syˆ€vv€|†r€w|}}s|{{{‰}z~‚|y~yp|}ƒw~{zt}w|yty~x~‰{{|x{Š}xu~Š|{„‚y„€~}}€~{w|n„~z|{†~{}wq}}~z~v{}}ƒ{t|{x|}{w}y~|„u}~{‚yw}}|~Š‚~z}}z„}~}}~|z{t{{gww}|‡~†w~ƒ‚||y|{y{zk|z|wyvy€x}}yy‚~{„…|o‚…~|{ƒ„~|~ty}~~~h~ƒ|~|p||w€|€{|y{~mx{}…{|~{v||~}~wvz}‚y~zy{|z‚u{€yu|}}||}}„}}}~y~~~tws‚|†x|k€|~x|}ew~{oyyyuy~zy|…|{{~~{z|t|{w~w~€m}u‚~}}z€}}{{}y|xw{}~~|||~„ƒuyˆ}€|}}|€€|€~}v{ƒ‚x|v{‰w|v{{|‡€}}v{wwz~y|}‚{z…y{€~{€|~y}ƒq‚ƒ‹z€}{‹v~zz|€€t†~€{|}~x|€~}toyv{w€{z„{|{|zy~sz{v€}{€z|xo{|{y}|~y‚„~{~}ˆ}~|}|~{z|}€y{||~{l}‚€x}w€€x{~ƒ‡‰ƒ|€€‚w}u}s||‡}~‚||q}…~szsƒyz~y{ˆzzv†|‰|„}y|‚…‚‚Œ…zuy|wqxƒ†„†™|z‚†…{€€~ƒ„x„m€yx{…{„€…~x‰~Šv€|~Š€‡}|vx‡|~€ƒ„‚}~sy„†‚‰z‘€…zz€~yuz|ŠwŽ{}‚w}th|}ƒŠxx€‚†}nˆ~†{ˆ~ƒ†~o‚„xy…{y}~vv|z{||‚n‚‚…ƒ|†z…}rƒ|u}w‡|~…r|{~}~~}k{x‚v}yˆx„~}z…‚~x{zˆz~}u}‚~‚v|}r‚|~ˆ}€ˆwz}z||‡…x}{xr~z~yz~„z‡…m|‚€}‚z‰~€}…|~{}€~}€|…€‡€ƒzƒv{€{”z{{‚„„}”‚€{}‚ƒˆƒ}€ˆx„{{~x}xwyƒy€v~z}…r}{“svx‰zz‚y€~zux|„r}‡€|•z€‹€…{ux|‡y{†|~|„~s{vƒy}~ƒ‚ƒ…y‚‘y—}}‡‚}x…z{„~{~|y{yƒ‚y~}t}yƒ{Šv‡wx€x|‚|‚y€}Œ€~{|v}ƒs}t†€}xzz{~u„€y}s~x|€‰‚y‰w€~y~~u{…|€s{{yv|x„~{v|ˆ{}zŠ}‚~|~x}€||{wz~…y€z|}uxz|€}‡€ƒ€m{‡‰„ƒ}{}w‡z|y‚|{uxu~yƒ‚zxu€{|~~|q„†ƒ|ow}w|x{{w|}‚{{|{€uy€€zƒwƒx{{ƒ}}~€€w„{r|z{x€y{|…~‚€{||ˆ}yx„‚z€x…€€…}z~z€|~|z}{~~‚‚vrƒx‚z†|…ƒ}z}v…‚|}{}{€r}w~‚y~}t…||q}|…v}€}‚ƒ}u|€|~„}}x~y„ƒzz|y}zƒ~€p€vw}~{†|w}xynm€y‹|„y{€~{‚s|ry~Œx{}~~}|{„ƒ|ƒyŒˆv~„||€t|{‚vywx}~|„„xz}{‰t}|r{tw{~w€‚|{{|x|y…r‚„wy~ˆ~}}€yv|y†xm‚}{ˆvzˆ{x{xz}{|yƒ€||xq€€z‡|}y~xy€zv…‚ƒzy}ƒwz€{y„|y}xz{z{{‚mw‰|†‡||}w€}|y~{xy„{~}{|€w|~||€vzyƒƒ…ˆ|~~}‡z|oz|ƒ{w~€x}€‚~}ƒ}}|~yˆƒ†t„„†ƒ{~|y‰}vzxo|vq{|…~€{…uy€x†~yzxvx}u}yv„~{}‚€~{zy€Žy}{‚}w‚x…|z}|uyz~}~ƒ||q{}zvx‚x}yzzsqy„„}qt}}}~}|ƒ‰yu†sz}{€~|{{y{€€€z~{|~}wx€ˆ{zzzu{}yv„|x}||~…zwjƒzzq}y~|{y|€€~x€~‡~}~w}€q~y}|~{w}{~{ƒ†{y||‚{}|€x~ƒ€zxƒ€|z|z}€zw~€‚~{|~~}zry}z…~„w~{|{{{€}||{€y{xz|~uw€~~z…~}|y~u~ty€zq|yyy|{ƒw~~zx€xt‚ƒ|~k|€‡{|}|~€ƒy{}tw|x~w{zx†z{€{z€}z‚~}|†~‹vy}tztyz~wn}{}~“x€{{}€€~z}}}wyzuv‚‚~|z€ƒ„z|…uv}‚w}}w„ƒ‚€t~p~‚}€…{zƒ€…{~x|„{}zqƒ{}‚€z}‚y€~j€{‚|}|oty„t|€y|y~{|}ƒ‰‚}vu{€Š|…q}‡w{€w{†…{z|~}{w„yuz}uy}~zz€l~|~~x„}ƒw…‚}†‚z~|ƒ{{ƒ€~ƒ€{ƒswzosxz~€‰ˆ}zx‰{{z€z‚u‰{~|‚zyy{y{t{|€{}}‰z}}s|‚‚|€‡„qzz†„€z|{€zw|ryu~{{}‚u€~x|……v|yy|zvv†„vy}zƒ}ƒyvu|wsz}yv€‚|u~‚uƒz€~‰}}{„wv{†}s€~|{}‰xz‚v{}{v{…}‚{€|‚v„…Žz}|}n{€zvƒ|„€~xy|€x€~„t}‚~€}~‚{~~vt~„w€w~~wƒy„x€y{ƒ…‰f}x€y„€„z…€ƒw‡|y‰{z}Œ€}ƒˆ~}uz‚€ƒƒ~…s{yyzwtz€‰t|‚wy~z‚wvv‚y{z~~†zu~y‚„xq|~€}}z‡‚us}‚p}ƒ€u~vxt€ysƒ…|}‡|z|z„†yzŠz~‡v„vs|„}…o~‚y}xzz}w~ˆw|x†{y}x{{…{z|~ƒ{}‚z~t~{xƒ~v}}|wtzy‚z~}x~}x{}zwz‰}~zv||zqs~||w}„„w}€{zywphx‰}~‚wt{w‚}ƒy}zu{|y}~v†}}€}}‚{€u{wdxv|{|€z„~zv‰z}|€zzo‚wo~z~~€|‚y}…|z{x|‚ƒ‚}u~|zt{x}}„x{v}~|{vwz}v„t€…~€€z}}~‰s„{}v}v€~|x~w~ƒ€o}{||Šƒ}}}~„|}z}wzv|h}k|zƒ{s{||}yx}{|€|€tm|x{z~~}}~o|‚‚{z‰}y~z|||~€€{~„€{}y~zrv{€~qy~y{|y{{}|z}|ˆytzx{y‡}n|~y{ys†}q€y{}q{‡x‚~yuzzys~}Ž‚zz|…xƒ€oŽ|‹}x‚|ƒ~q}xƒx}z{|€t~|k~yw€€u~z}‚}z€|~sypx…{~|€ux|…‡{p†€yrƒ‚{}|s†z~€|}}|ruvo€pxˆgxy…}}€{‚€zy}ƒu~€r_€}yy|w{w}vzi}|}}u|~w}r‰‹t€vwpy{€|uzoˆzx{€}„~qw~~s‚‰z‚}~|~y}}zyt}z{tyŠy„||t{€{€}‚~~„}‡ƒ…z€‚„…|w€z~xp{{y€€zx€z}z}w{†zy~x{z~nzx|~|vz‰q|{wx‚}v}}‚w|~yƒ…ƒ~|{szry|‚xu„~~x{~xˆ{~|„o}}||{}z|{€€uˆ€pqqƒvy„}€~~lƒ{~y{vt~tvy{{˜€„~€z…}x|{|~‹€q}z{~ƒw‚†vЇtu~}}}yy|{}zx}„~ƒz{€{zzt{rt€x|y}}|x€~}€{{ƒx€~~…y~~ƒ~z|ƒ}|{|„„ƒ€rzyz€‚|p€|}kr‡z}~‚‚€€~|z~}}w||vyrx}€y}~ƒuyxw{~}zyy€‚zx~}~~x€p€{‚x|z{ly}z€tvzzz{{}y{~€xƒz“}vw„y~lxy|}}~…~~z}}y€r€~yu{„{qt~uy€†xz{}zw{mvƒ{|{‡}ƒu~~‚ƒw}u{€}s|~|px}x‰{nxu{z|Šr}{{xy{r€‚~zw}ˆz~s~~{~{{|y‚own‚~‡€z‡|‚„€x{|„}ƒ{}€‚gzp~x„v„}€zpz‚qu}x}x{n~|ŠnŠ|~vw{yv}w~uƒ|x~tŠ|w‡|x||xj~wux€~€}€{zs~{„}|n„|„vˆq~‰‚~z|{}‚|p}{x|~v}}{}t}}ƒv}w…}ƒ}‚~v{y{€}wy€†‚~yx‚€m~~ƒu|~wƒ{rwqszzsƒ}ƒvgz|ƒ}q€{|uy…w|ums‚|w~~}v{{u~xtiz„u|y€‚€wu~{oƒvu}“xv{~ƒ~‚qzq{ƒp~|y~~szzwy}Œz€vxsvz|||‚{|r€}z|~|}}||rx€€u‚ƒvzzƒpv‘~}wzd‘{t{txutu–v€ƒ{y{w€€y}{}rtpkx€v„~†‚‚~~w}€†{}}|~y…~ƒ‚‚~…tz~ƒ{“|y„…u~~tuywsy~vu|wzzr~}‚|†ƒ€z‡}rƒuwtz|r~€{~~}|w~~‡ƒ€z}„€|yy‚x†|q}y~|€v‚sy|ƒyw{y{y€”}}‡~~|~x€~‚~y…}{wƒ…|…~~z~€~‰ssx{†rzs~‡v{„zƒ…|~z€€‰y‚~~„xyyv~~„vw~{w„`w|‡„ƒƒv}zzv~z‰„€{w{{z}‡sz|…u{…u†ƒ}…{y€z{|€ˆ€{w„y~€|~|‚~ƒ}ƒ}z€}xŠ{x}z}€t{|}‡{~|z|…{{st{‡w|{y„~}}vz{p||z}u{zw…yƒv|}€|€~‡yzŽ„z~}ƒx|{x‰u{rƒzy|‰}ƒ{~}€~{€ƒq€x†{}‚v~€x|‚qˆz‰‚}~y~}ƒ~zyƒ}„{‰„}ww{y„{x~xuw€~{~|€„z€…€ƒ~y|{„|„Ž~y{ƒyw}|z…~|‚‚€|y„{|p~|‚|{v{ƒruv~sx€ˆ~‚z…~‰€tzy{}t{}zuq{y~|{|}ƒ}yy…|{~‰‚‡xyzzz{†ƒ}€}w€|€|~vp†s}}zyr}{~{€{y}}}{w€yygyz~m~r‡|||wzt}z€{yy~‚||wyxz€yxz…}x„~oz}~{}{{u}|wp~~€~e}~}w}|‚y~}y{l|‚ƒz~‰~y{~…{{v~…~€}„‡…~yzw€s}wv€{mt‚y|‚ƒ€„€s|ru~{x‡{~|‡y|€s}ƒ|€x}‡{€|s~|Š}}wzz~|~}„y}p{~ƒ}„ƒwzz‚~‚}w|~y}|{ˆy~Š~ƒ~|ƒ}}}‚}v|€€~}…z~wxyz‚{„€~}{t}|†|‹zƒ}€js€w{{}z{~u{„~{x|Šzy|yz~{x{z{lz~yw€|€u|~us‚}{ƒ~w‚{~~|rx|zz„wˆ~t|€~‚€~{ƒss{zx|}uˆ~{‰}|{|{{}‚y{z}}}py‹z{|~{~{|ƒƒ‚ƒdw€w~y‡xy|x|w}z€m{w„sƒysw„}„qq|{r~‚uzwzys|z„|}~|xsy€|~w~yzo~‹w~|€ty{„~z…}~‚~|€ƒ|‚z‚‚l‚x}xx~tˆ}}‚|}xms}yƒ}~tyxp|d{{v{vƒ|~…}€~~zvŠy{{xx}y|o|t‚yszv‚‚~zzz|}~|}€{zyˆ{w{x€|qzzy~xzyw}yx‘{ƒw|ˆ€x}ty}z|t„zy’sŒ„}z{z~v}~…|{~|‡}}zx|‚~ƒ~|ywvz„€z}~‚rv~}}yŒ‚yty~n{~…|x~|x|zv}~ˆu‰‚„x}ƒs}~||v|z|{y~z€{ˆ~|‚ƒ}~€w{w€ƒƒv€z„txz}pz}}~wx{}xt|~v||‚€€‚„}€~x€w~‚z|}{x„Š~|{x}vx„z{y~y{z‰w€}y||w‚t|y}}…}xƒoƒ‚ˆ~‚vsv}x|yv}†y{~z|…w€zy{}zyz{‚w{}wt~x|~xrv}{}}z|}|n|„{zƒ~€}r‚zyxv|‚}€m}yzy{y}qyx~uyy‚z|ts€vy~s}‡|‚ƒ€}ƒ|‚}~ƒ}x‚{|€‡zzx‚|z~n}€}z{x~€„|{|u€zˆ‰‚‰{p†|}z~{~||y†|}y†y‰t|†…q‡}~{~v€z€t„xyy†{xo€{€x†w…t„}wxzx|~y~{~~z}|s€uy€u‡y{u€||}y}}y„x|}€wy‚‚|}€vxv}|€}v|„…€ƒ{zyx}€{tx}{x}|}ul}|€z|o}z~~~{w}u{}{€~y}{€|€}yy‡~zv€ƒ‚v{€zzt…ƒ€€v}‚||x…{…{~ƒx}€~s~ƒz|ƒ„wx~wu~†}}€z€}{|~†}}z}€||{yyy‚y{~~~z„w}‚|wz{|~~{x}~|ƒ{…}{qy}{x{|wxtu}yu}„|v~}‚x|x€„}}~€~‚€‰vv{zz€u}{‡}y{‰€|mz}xz}{Œ{xv}yz†~‚|~{u†t{xzy‚s~xƒwyƒƒxš€„pƒ{||{€z€}x‚|€w}x{}€|€v}|}{ƒv†~||}}ˆ{{{wƒƒ„zn|x||x}{|{u€x~uv{‚twƒzx{|†„~v|}~z‡|{Œ|‡~{}{‚~‚‚u{‰{xzov{Œ}€zyz|{{~}y…z€zy}€mw…{~w}zŠ€|zr‚xˆ{|}‚{‚ws~}|zpw{yy{u}}r||w€zv}~xy|v}|}‡y€~~q{~x}„}}z‚„y‰‚z…}w}~xˆ|„‚{zyzz‰~wx…ƒƒ‚{…{|Šz…€y‡x‡q†‡{~ƒ…~~vyzŠ|y|€wzk|x€„x€Š€}}|z{v†w€†~|„‡z|ƒ‡ykv|zyz|t}x~{y|w|zˆ€ƒu}}ƒ|~}xˆ}}{ƒ~~u‚{|„rƒ†ƒ|‡z{x{ˆ€}z‚{|w}…~„†y‡~|{|€w~‚q†€~|{‰y…v„‚y}{{…q€ƒ†ƒu{‚}~„{ƒ~‹„€cƒ~}…‚„|t‡„z€}}v†|}y|„‚€|{}…y}z~y„u{~|w‚…ws|b|…v€„ƒ}v~€x||xx{Œqw‚x„tu}|ƒ}„~|xy|}||{ƒ†{…y}†z~„‡‚{t{}{y}}zyuy‚z…z‡mz}…||ƒx||‚ƒ{€€z‡ƒ~u€ƒy||{tƒx~~}‚‚{~“ƒ~€z}}ƒ€}x||z|r|t‚‰‚x|{zy~~€y‚‚„x}|ˆxx€…zz‚}‰Š~v…~qzz€x}ujz~v€s|}ƒƒ|tv‚„}wv„z{|ˆ„z†yv{v}x{{xzzpv‚{{f}n|w{z~xyx~z|„x|~v„z~}~x}~„{€…‚‰pƒw‘p‚~}v‚~{|{y}xxpuyyzŠ}|zƒ|{|ˆ‚u€|„q}{v}€yt|y€†uv}|zvzy{|z}ˆ||l€{xwyz‰|}|g|t€}~~|yy|u~nuƒ}{vy|€i€x{|zy€„vtyx†~~yvzx…z€ˆyxw~t{{{xy~~†{hw~}w~|…xp{}xp}~…x‚y|pty€}y{€†„wqiv||€yy~€~r|nuz~‹{wkƒuxvwr|v|{x|†y€|}yvŽ~…|}…‹nzxtyƒ{{yny{~{~||x†}x{|~nyzzw}|w{†}u…†~~wy|‚sŒw‚x‚|}wy„b‚p€xz~c~t|zsv~|„w||ƒ†€€{z~‚‚{v„ƒ|€‚|xa„v}‚zy‚{|trvw|wszu€}~†}~}z~twr‡ˆu~zƒp{€‚}}‚ytp{o}vv}‚z„|ƒxyƒm~szˆwy~{€y‚‚|†€zuyw{}†‚€„yx…szxy€zy€y{‰z€v{}t||‚y…}}}~yx{~|€|‚{€~‡y…‘ƒ|wx~|z|‚y‚}uy‚w|r€~…y|{|{~urzx{zwƒ~|{yzx„ƒ}~t‚~~y~{{~|yv€v~y‰{~y|}w„}z„xxu~~„rv~~|x„}uw}€€}w{y~vy|~’„}|}yv‰|~xz|}~vwƒzw~}u…‚€{€}~w{€~s{{yz‚€}xt~{nt|{p€}[}}‚~|‚~x|‚~~z‰€x‡r}y}rz|qzz{ƒ€~•€€|{€zs‚ywƒw‚}}€{zv}y€yxƒ†€‡zu€‚u||€€|€ƒuƒ~{y‚z}{}~||‡y~„|t~|}xƒ||€€~t{||{{‚ƒxj}ƒ„~zw„}ƒ‚y{†ƒv‚{€tt{~}v}w|zq}ƒs€…xz|}{|z|sy„z€}z|zy{}~{{ƒ~y|xy‚{ƒx€‚z€|{~‰{z…€wt~{‚…x€|z{~ˆv~€}|‚}…|}€y{wxx{{€ƒ€‚}}€w{z}‹{€‚~Ž|{‚€|yuq{|‚€†~„ƒ‚|‚xw~€‚}}€ƒ‚†™€‚€†~xpyyw€xƒ‡‡„…zyw†ƒ‡x|‚…ƒ‚|€††Š{‚‰y€€y~‘v{}|y}z{yŒ„}~……x…ƒs{‰‡}…ƒ}{~~t{vzy~…€vƒxy|zv€ƒƒx„|~…€ƒr|{ƒƒ}z}‚~wy}|j|{~|{ƒ~‡x}}‚‰„‚{ŠxŠ{z€yŽ…‡ƒz‚‚~|€n€uz}ƒzy{|{~ƒ†€…w‹{ƒx|t}z~x}w„~|xy{†|ˆr‹†y~‚€}~u€€{‚|ˆ‚‹€|†~{‡‡‚~|~‚†x‰xƒ‡zŒ|‚yv‚‚wz|€…}{vƒ€‹z|y}‡†‚}ˆ‰x{†z{{}…€‚ƒ‹|‰{|ƒy€x~{‡{zyxy{~{u€~†|{Š|€~~ˆ|€ƒ‚~}‰ƒ‚‡t~žŠ‚}sz€‹‹}…v}w€{~†vv‚‚~sw|z‡zƒ‰x‚…z†‚……|„‚~yxƒ{‰†‡}|‚‘€z|yoކ‰ƒ~vz„}}q‚‡‡€ƒ†}‹}€‚~†€z}‹ƒ†{†~ƒr…nˆ‚Œv|~pxwz…”sq€†}y~}t„~|”{z{z}Œ~{‚sz{ws€ˆ‡uiy~~w~}ƒ}ƒ{{qu}~ux€qz…zŽt‚„{|~{~}zlv}{€}{v~x}|||}…€€†}‰‚€ƒ}†€~„ƒ‚…x|{y„|k{‡z}k€z|s|{…u~„k€y|gvnv~|wmy|ƒ‚wt~ƒƒ€€s…‚u|†s~{{}suv{}|ˆx|~{t||{€}}y~pw}€wwuzƒ{‚u~{…j}‚}ww|m{{x€~~‰|q{s‚zz~u{y‰wz||z„tx~ƒ|€€Ž…~†}‰}{„vƒsxƒƒzsƒ}{v‚|uz|‚||n|zl|wwvƒ„}{t}…€nz€‚Œwy„~~yz~vwy€z}{|„ƒ~mo}~z€€|†zw~~}w~„x“ƒyx|||€y€xtmy{t}y‡€qˆ€……y‚ƒxx}yr‚{}||z€ƒyz~vˆuw~}†wz|}|}u}w‹ƒow|…uq„{ƒz€‚}z{}t~‚wy{uw|}s‚…y€…€‚uxr|~z‚|€ƒ‹u€x~Œr{€||}}~„p~s~y}s…w„€y}~v{|}‰~„{t|rx{}‚~n†||wƒ{yŽ|v|€{x}~x}z}z}x~‚~€|z~x€{~…ƒ{xxuww…ƒ~…ƒŒ€~zt€|v‹}x|zrzxpuu€z}y}ƒyw…~}‚‚svyr€ysˆyx}™w{€~{}sz}~v~~Œxˆ~x}~{j‚}x{z{tzpwƒ~‚v~j€s}|z}tv}~}^q|x€xvp|ryƒs‰‚~y}„jyy‚v{ƒ|{{x~…}~€x|~Žw}t|x~t|un]yƒz~x}‚x}wyr„zuŽv€‚ˆ}k{\{pz}€y|ss€„€|‡u‚z|„{x|lt|}w‚~~ƒ|}t{{r€~Žw{Šyx|}t“…s‚}…^ww‚ƒ{€‰}|~~wy•|zƒxv}w„k~{r}x~{€~}|h…„{|y}|{mzyvzr‚ƒ~Ši“vƒ€~~†tzb}zw}rw~|Ž‚‚v…}vyƒ€~{€o†|‚}{…{~|€xtx{yt„z{yz{€tzƒy}ˆ€pzzy}xvz€€‚~ˆ~…w†€|‡||}wnxkz[}~}y{v}gxz€–~‚py||„|{}}}„v‡€„ˆ|y}ƒw‡|†›}…}‚€{{y}‡zzx€{€|w€r„}q‡‹€…}{yy~„z|€q‚€€}~z~€z~}|xv|€z‚ˆƒ†}|…x~z}}„‰|ˆ}zˆ†}‚y{xw}{{ƒ|ƒ{…|‹}~‰y~|v~€wt~}}‚w€}~w‚˜yzy}{€|‡}‚€~€|€}|{}}{€€€x}…~}|}|z„~zzv’|Š‚ƒ||{~||w~s|{y‹|‚†€yŒwr„‰†ƒ|z}€~‚vz…r{z~}ƒ~~u|„ˆ€~|z~{}x|ˆ}|w|w„}ƒ~vƒws~}zƒ{}y~~~x{ƒ{{|ƒr}oytvƒt|~…‡ƒ†y„}~y{}‚|y{|z{|‡v|Š||ƒ~x{€|„yzx…€}ƒ|‰xw€}y€†|~€v†‚†‡x„~t‚ƒxw‡}zˆp{|‡‚‡~†zrr}‚„}z‡yvwuŠ~xyŠ€w€„~{}w€†|~x}|~‰v…|{}Ž~€„€u~wzz€‹}{}q}‡|{€„}|‰ˆƒ|u†}{yu~r†w{{…‡„‚„~}v€‚€y~‚vw€|gyuƒz|u€qƒw‚†|m…~x{wƒ€€p|‰tmz€v€y€w…€x}€†}qtyvzƒ|xz€y|~ƒ~…~k~w†v{‚}‚T}u}rzzp‚z{x‚~t„zxxw|„zws‡z€xxxx„zx|u~z}w…ˆzxtz}r{xwˆƒxtv„wŠ~}…}t„ws†~xƒƒr€}t}zzy~pyvyz{}o€wsƒ~ˆ‚zƒŠz}ƒ…ƒyx}}‡„…£‰wyv„mz‚x}މ~u€{€}{€v€ƒ…z{z„‚Šx€xuyq€yx’‡{}¡~w~xu|{~zwƒyzx~~’}lws~~|z{|z{xw}~u€zw{†pŠrŠ…z{|~~wsƒzz…„ƒˆ}|}|}|{†r‚jzz€xs~ƒ|‡v}~w}€u}wŠ}ss€zr|‚z~pv„{„iŠvwwŠƒ{zx}|‡…wŽ‚wwx{†„|n}…}us…s|z}~„}†wwut‚‚x‚„ˆ…z‡l€€‚„†z{ƒ|}‰mƒp€€{{m|€|n€yvu€{‚ryˆ|}‚‰…€Œwx‚€ˆ{u}‚|y†{|~‡y}‚uzz~~}ƒwƒzs}~‚{|{{}|}‚…y{{ztz~q~xy~ƒ{}€v~ƒ|vzyv~€ˆz}z~…{{|{y{z{||gsw~†~j{}|ƒ‚~~€}z|}„}m~ˆƒy}}nz{}…€|x{„u~z„~}{~}„~~x||}}xƒ~|€||y|u{zx…€|}€}~ƒ‰z~}}zŒ~~~~€p€}}€y}~z|}{}{|yz~wys|||}}}~|yzƒ}|€szw‚x‚~xy}y€~vu~€zp{tw{v}}~~}|}s|‡z|€{~x|{vx‚wz}}t€‚ƒ~||}„yy~{ys€yz~~~x|{‡…u|yu~ƒs|~}‚|u}€…†s€„}€|ƒ{~}||z~€€}}{w~{€~}u}ƒ‰}|‚~~}ƒ{€yn‚~u{y€‡|zy€vx|‰€~{yuu€~}|s‡}r€}~€x|€y‡y}z~}||qz||z{u€w~}|vyny„…„p{}„|~{€}}pyzu‚€Š€|g‡~~wnz||y}€}y{x†|q~su~v|y|y„zˆuzx‚o~|~uq‚y|‚ƒ}w€|€vxzvzk‚x|€mtsu€q€‡xvw€‚}}}x}}~ƒz~zt~}‚„~‚{lpw~}wz|~z‚wytyyrx†jvyysŠ{v~}s‚~|zƒy„ƒ‚zv†Š}y‚ˆsŒŽqy…€z{tz~}‰x~€ƒ„…s{|€z{u|xy~ƒ‚}|yz}~xr~zŠy}x~†~€uvŠ|ˆxw‚}gz‹uq}|€x|}ky|v~w}†}{{}yq€yƒ}xp„wz€yzv|r€‡xsgyx{w„…Š|‚qw}{‚€†hy€y€t{}ry|{z{s‰yws}wt…|{Œ€‚|„{r|sopv|‡|‡wz|€tu€{x|‘xzy{„w‡xzzyxƒ€€zwy„‰z‚€{}w}wjz‹}r{€~ux€vŠ{{y€†}€€tz|y‡~wŠrrˆ}{}t|tuxx{pl€„{q‚‚t|o‚ƒo}sˆ{ny{€{ƒwj€z|zƒ~‚‚pttuoxy†qwryw’e|†s‰kz‚|{{‚w~€}€}~€Š‚‡|zu|~xŽ}{}Œ|y|~{x€sz}€ƒv‡w†a~x~y{€|f‚‡x|}„wwv‚y_wƒx}y‚y}v{y|vwyuwr~˜xx}zry~o„xxuzw{z{}y}xq{Žwmˆ~‚†nyq~~ryy~~€ƒq‚pyo‚t}ˆ~~x€|‚yvuzz{vq}‰zw}~vw~€yw€z{|‚wyx‚’ŠŠ{ƒ||‚„ˆ{k„‡tv‰x~lgnwyƒzyzƒy{hvw‚w}‚‚ywwru|vyz€r…yqrttŠ{~‚ˆy~{t‚y}z~~|{||‚yqywx~l}vyr~t‚}v‚zt}{x}wz…v‰y}yt‹„yw„Z‚ƒ}rw~‚uz‚w~`ƒ{z{{zxvx{{~~€~w‡‡{z…zxmzzx}~}wzjz{}k‚{d‚{w||mƒ~zu€gs~|x|{‡€|x{}}~}ˆŒv~‚uj†yy{ƒyr~xˆzxyƒ‚~k€s|yƒ|}€x€…†x‚‹z}„…xv{€x‡ƒt|‹€|v}rx~€zz{{yz“y{z€}„|b|~€~|„xz{qpq|{{|‚ƒxuv€€z|~}rvv„‡x†xzp{y}{~{iuss|{tuyy|…||xˆ~€u†~x~}~€ql‡w{{€{|x~t|}€}~{ƒ~n‚z{vg…c}|pƒ~~u}{z„xz}„|u~‡†€†~xz€zvp€|‚{}r~xz€|pz‚uy}z€q…vv~~‹yxx}|ƒx€}yzx~r|€€oyx„y}…|…|{}w}~jw}|{{xx…€y„|}t{{y{}~w{Žz{…~~{„}|t{‚ƒ€w{txx~y~€w{‚{ž‚z}„{vƒ€…|u€v‚~||u|uz€u}y€o‡€y„x|rxƒy‚y€{€‚{zƒƒ‚~|‚}z‹{€y~{k|ˆv}„x{wz{|…yƒvƒxyq{r}w‚{}‚‚–{rƒ~ˆuvzx{†xz||}ƒxuhˆ€|„€K~€zz~‘m}vzX‚‚|u€z}xz‚|~ƒ|r|rozpƒx„„wy{y}p{Ž}xt~{|~ˆsy}zv‹~}xru‰|||~vs~„yƒ„~…s~zˆqrw}ˆˆ}urx‚~€vx|wx}~{{~‚ku{~zmw€~sƒ|}ˆ}Ї…{y€~ƒ€}{{€„w‚ƒ€{€€‚r~uƒ‚…|€{Œ‚ql~{€yƒxz|q€†zs?|€€~}|~|r€uzz|x{{{rx~ƒwƒ{ƒ{y|~|\ƒyx}…sx|ƒ‚‰|wwz|rz€x€ƒ~€~‚‚xz~’s~|uzx|‰‡sw‰|_…n|„u|eŠ{{yn}}p{€‘†~}|‚|q{{z‚~{y„ƒ}{{‚vz{{ƒ‚xrn}w~z|‰v{yqƒwƒ{x|„~}{}czzxxzŠƒz€v~wzz}…‡x|€~|yxw|€{ˆxx}l€€{~{|ge~yŒw{qv||zzx€‚y…q€{x}‚{‚nŠ‚€{€~~x{~}z~xy}q}w|uys}n„|wz}|†y|t~v„yy}€r|xn{wx€}|…z}x{s‚~ƒ|~|{}|~z†}xz|„Šzy}ry‚‚~‚kx~|x|€‚xy‚ˆw~|‰„Zu€†€{ƒ~t€„~‚w{~}}{‡~|ny‰‘|~y|†{ƒ„m{zr}‚€h~{~yŠtyzn‚Šuy‚{t|w€…|}„m{Œ|yyyW~v|€i{€|€Œ„uy}zzvt{‚}|~‚|o…ƒz{Š{~vtƒw€‰|{}|~tzw‚ƒ‡|n~}…x€{{~}s|ux„}„{}}vxwrz~|€‚t}}tzv|yy‚€x‰}y„€€}umvty‚€wy€tzx~m…{€|~‚ˆ||}€u‰{{~{zqs}|x{~†ƒx{wˆ|xr{{zv|}o{|~{y|wz|†‡|‚|}q€~tƒ…„}z}ƒ†€|xww}s}‚~{~~v…x€~~ƒ{€}{||~zz~{xv{|~|}zz|€€{u‚~~‚{uqv{~~y{€~{yuƒxz}wv|~x}|{€~t‚€€{{y…‚s‚„y||p‚vx„y‚~x‚}`{^~y}Š€q|‚{|ˆ{|}p|y|v{xt€t}~y}~~{„ˆ€tˆ€xz|„y~‚ƒ~x€€x}~}|x‡u€t…|ƒ}ryx{}zx~{r{…q€{~—u{z{€~}x{}„rw€‚|€y}|{‘xtƒsp…‚‰~€|~{x{~zw~€{~}i~r€z|zŠ{q‰}}€~wyfz€wy}~y}w}z…~|z}wn|vzz|{…„ƒ€{w€|}|}ˆ}r€w}~…x~t‚…~|~y|v‚x€~|…{‚„€yvƒ|~v‘y}€xx€‚ƒ}~…{‚|ƒ|}‚|y}v€~|{x}j}z{}u}€€u‡Œ†{y|r€€~ty€{†x‚‚€~€x‚y‚zywƒ|v}||uyz€q€yƒwyyvs€yx}yƒw€}{{|zƒƒv}~€ƒk€~}€‚ƒ}~€ƒz}uƒsƒ{}y‰wu{€zw{~y|……zƒ†uvw|‚„{†€yzz‡†{€wz||kuy„}‚w~x|||‚{}}v{y}u‚‚{}„|}vz}sxuƒuˆz{ƒy}}~„{xsƒs{}}‚x„€xzq€ƒ}{||wu~‚tvƒ„{p€zƒy€{Œu‚x€~~yx†ƒhn‡{z€~}v~|Šw„„||}†€}‚‚‚€~y}~‚oypw|€n…„}‡~x…}u~||v€„|{}}}u|{Œ„„y~z{†sy{~}z„~ew}u{{{~tz}y~u¸z|z}}…~x†{„xp‹‚{zy|}Œ{n|‡tx{x|€€€~}||†‚|~€{~|r‘q…{}trtvzztqvzx{yy€~€t~}}~twxy|q~~Š~€}~|w‚‚†€x}|€nzz|z~„{}|}yw~v€{vz~{}}€y{xyw€}ƒ{}{€q||–}x~|~{y}w…‚u„€~z„~}…z€vz{zƒ}‚‹€}‚‰uƒy}|ju}€}}€z}}~rsx€~„‰|xˆ€z~‚{|}}Š„~Šy‡y~|}x€z{~y‡|p‚~„~z|yƒ…}}y}zz€}„ƒ„x~}}€†…}€{}}€~~||vz…wx€€~€}}~w‚vz{z}xv€~„{ƒ}}|u|ƒr|}|z~}z~y|€{t~~v{w€y‚~z|~~~’y{|}|}x~t…~}yzzr{€z€~{€||}xy{{€s}‚xwƒyz~Š{t}‚{|w€|y…q}yy}|~z{„ƒ‹|zqw||}y}|~~ƒ||{w~…ƒ}ƒ{{‚|‚‚|{v|„|~}~}}|~}z|‰xw~{~}wyt~vdxv}xx}vz{ƒ}~wy}…‚{}€~}~||}v}w€qxy|s|‘…~wz}}|€z€~|‡~|{x}€}{~u~{{{€|{€x|†x}{uw|}|t|{{„~€qƒzyszz„}p{ƒ~€ƒ‚„z|}~y|~‘|w}x{~‡z|w~|x~‹{‡|r{|ŠvyxxzŽ€‚~|tr~|~ƒ~|w„|€‚yywr€Ž}}~~q{x~{ƒ{y}{z}t~}||}€x~{}z~}ƒq…hz…ˆ‚kx†y~|}~w€u|m‚|ƒ{}vy~‚~tz||x~|}y~yynt|yˆ€}z|q~|v’~w|zt}‚†Š}}~|}€y‘vtwz{|xƒ~}uwt‹†{‚z~}~~€}{}€…Œ‚z}}{„n||x|}~}~{}…x|}|ƒyuyƒ|y€}q{{|{|{Š}{z€v„|t…}zƒr‚}€}‡~~~€{~‰zxxy~{}vszwu}~|}uv}~|ƒ~{}{xv„{y|||v{ˆ~}‚€}|x{z€{}zu|v{x{|s~|y›Œƒ~~{…zƒ„|uw|r~‚|||tn‚||€}z~y‹{yvŽrxzvz~ƒ}}t}y|{t‚|€}w„zt{~‚u‹|{yx‚xztw|v{†~‚}zz~{ƒz|w|vz}|o{zyvz‚}|zwy|~‚€|{}}‚uvs{w{r{v|}w}z|…{}||v„Š||u~t~„ƒŠ|ƒy„z|}€„{vvy|~}pˆ€€„{~xz||}‚ƒuzs‡||}{zzƒƒ|yuŽ|{w}yƒm€‚z}}}|xy}€}ƒr{…y|{€zyz†n}|ov}|ƒƒ~|‡yr|yyxy}}„z~|€~}y|uu}rwƒ~~z€zz‚w~vy‚{~~„~|Œ€xyƒ}y€‚zƒz‚ytz}vy†u{}†~y|‹}}€p~€z€|||}x}v…‡€‰~|€x}z}xwz‚~t}w{}~~}~}x|||ƒs‡~{…}s~„‹…†uwnz||€|swtv|yx}z|~|{{‹|{|„}|~~nw|p|uxzv‘q€v|s{}tx}y„~uw€|~{{~„|}‚vt~xuƒs{xz{|€|z„{}|{„~~ly|}ry|€{‚}‚ƒ~{€~€{~€{|{‰‚€||„}{€~|z„}w‰~}~xy€{„~„y}ˆz~|‚vuz|z|u{{|}|~‚}€{ypv|o‚~u€{v€‚w|}}{yz‹}yv}~€xƒ{w~y„ƒz~|}}€|~w€|‚}|y…w{w{~~{~u~z€y|€s}zz|{|qy{„‡{y|…|s{wz~~{s}zpw|{}{x~„y†x€xwz}‚{t|zƒ‚yy€y{|~€{ƒ|{|}xxxxz}ƒyƒ|}ƒ}||†~…z~t„‚v|zv|{`uw}{~~|v{€vzvr|z|||}}‡}{t‚„~ƒ|u‚{yvw~{‚z|€uy}}vzw{„y|t{zv~}~€~{‚†|xh|~xxvvƒz|u€}{zŒ{~|{{ƒ‚z|{v|…‚q}{yz}t‡}‚{}{|€|z|‰n}ƒv}ƒ‚~€yrzss~}q}{‚~‰‹y}‚~s||‚|q|z{t|}}€y~|‹|~t„u|‚xz|ˆw…xz~~txyyyw||zxx€|t~{tyx~q{„†{€|}}z}y€z€Š}x{|…rz{€€z~o…„…ƒr~|{}v~y}}vw{{y~~}zzp}‚|zsxp}}}„pz|xwƒ|qxk~uu|…}€{yzŒ~~‚sz|}€yzz{jƒs~{„y|z……{u}vzqx„xzz{v}kŠ~zz{€zz}|„{{‚ƒ‡yzu}zt}z|„}yy{‚y}v~x{zu~x|z{~z|‚|yy~€~~}|xw|x~|~y}mw~‹{|t~}Šs…~zx|y{Œ~|€z{|zx}uyx~…}|„~u€ƒ„l}€uy€„}z{yy~~y|z}|yuz€z€{‚‡v‡ƒ{su}{i‰{}||w}‰sy~zv~vxw~{y~|€u~{‚r|}{€~oty‰€}y‚yw}}x€{|{~}uu…†xx†x{{zy†ˆ}†~}„||€z…‡€|z}|~}x|o~~{€v„tz|‚ƒ}r‘y‚m{{z€|€yƒvutuy~yz{{{e€‹t†~~o||x‡wrwzzp}ƒyƒ{yx”x€|~{„}|}€zqsyƒyƒ~‚}…x€‚u{ˆ‚z€qv€{y„~v~}}s€~yv„{Œƒ‚z}t„~}ƒw}{ntv}|€yy}~€{yŒy‰yƒ|}{x~y||t{{|{{{|…‡|„~ˆ{q€ˆmw„†‰€€sr}w€‰}‚‡„z|‰uyt|{‚z€y…|‚}~}ƒt{‰wx„}}‚}…z}w„€|v†tŠ}~Žƒw{|Šz€}{tu|„ˆ~z|vyv~|{}€}|‚€‚z€ƒy€x€}v€‚~’}‚{~z„||w~}„}vrvuƒ|{ƒ|y~y„z†zz€}}}}nv~‚|z||€|x~€tuu}~{{€y~‚zvy„|~†~|x‡…s{‚~{|}}}†~u€‚u{~}q|z~|•{~„}{|z~y~xv…€{wwzy‚{t~|~vy€~}…~ƒ†{}}€€€ywv„‚~„{ƒ~~zwxˆ{w}rt€ƒ~p~s|~t|x†u~‡ƒ‹{w{€~yw„…|y‚€{x„}}…€w}|~~yy{w|€suuƒ€w~|{xzyŠ}||q}|†}y}}}uxxs|yvz‰|‚}ys„}‰x€xw}tszz|yˆ}„r†}yxy}~|oƒt~w€„‡ƒƒzƒwx}~twƒzy‚{~‰u~|vu‚x‡~p‡}x„|‚yx}€t{~~|}…|zƒzxv~‚w‚€{~~||qx}t~€|…vyxƒt…~…w{}…€‰yw€€~p}xw„xy~yu{zy{‚}x€€p‚x„v~}|~qƒ~|yz~||w€}|z‚~x}x|y{|ƒ|wuu€j~€zz|w}x{|yxz{yz~~}{~{xz¥q~{}|y†|ƒ|†„‚|Œ€{{u…x}~ƒ}|„‚{€€€}t‚}ƒ„‚‚‰€€twz‚{…w}z€{|z}€~€…tŠ‚v…|~~}}y|…„|~w€’uuy‡|}€€‡|t|y~‚€zŽq{z€|{{uŽx…†{„ƒ‹}€z‚{z€|x|zzy‰}†x‘{x‡z‡€x‚|‡‚~xrrz€x|w€t}wt€ƒ…}‹ƒzy||}~tu„{r~v€}|}}€{zy{yzx}yw{yo†x‚š}€~{€‰‚|ws|„zxƒx}„{…ys€wu{vw||s}u€ƒ„ƒv€‚rwz€zzƒ}|zp…„€y}z‚~€{ˆ|€‚……‰zzy‚†„…wo~{‚|‚‡†€‚z|€~}|{}ƒˆm~|{{€{z€}rˆ}}}„€|zˆq‚yd‡„}u{{~†zs~ƒx‚y{v„}ƒ‚~s€‚y~z|‚~€‚w†{…€~‚yrxz„u„ypyz„tuƒ{}†{ƒ}v}|}‡{zˆ}ƒxys~ys†‚|‰zv€}}|vy„‚|z€uzx‚€}ƒ…tx}€y|{€ƒ~}ry|}}tx}z€„}~{ty€„~y|x{}|{„}‚~z†r{v~y~z|‚}xƒ~}s{ƒz|wzx}~wx{}wx}~z|zy|{„{}}‚xz…zz{u|wx|u|z}s{„z~{}|~{™}|…‚}…~ux}t~zˆ‚||wx{y~}z‰|‡}w‚„zw}€yvzz€r€€tˆ€~{}‡y}wz~€y€€u{w€zp|{yqƒ‚|w}}x€€yy}ux€z}z€wy}yz€zƒ‡~z|}~t‚€|‰~}…€{{z}€€xyrzux‚~ƒ}ux}|zx}z‚xz~w‚{}}†ƒ~{x}}{}y}…u}}|z{|„{x{w€|~}~~}yƒz‚~v~z€€†|…~~w|zx{‚}z…}{€utz{€{|{|€|{}z|~{~|ƒ~}o{|vvy„z|v‰zywq{w~||uy‰u€‚ƒz}{v{{{z…v{~|z}~ƒ}~zw{s}x|z€|tx{xƒ€|z…{}x}~zw~~~€~ywwu€„}}ƒy…y‚|„€|}p|~|~u{xx{ytl{ƒ|tw€||}‚~tz€€ozv~|y‚z€|€}tz~v}Št{z|‚x{n…~€~{|…ƒˆ‡v€|‡|y~x|}~z~~{|‚~}ƒ~yy}~vvuˆ€…€€z‰ˆz{€{€„{zzyw{yi~z}x…{„yt|~}}~ƒ|~~x{}||zz|…€†Ž{‚†p}ƒwˆ}v€}xzw„v||‚||†{{s}‡zƒt‚…x€{y}‚vu‚ƒyw~ƒ~p~uˆvwww|€|}w{‚„xz€†€}~|ƒzzv}€€‚}…xx†}{z‚{sŠz€~x|€w~‘{{{‚uŠ„v}‚y}€€t„€ˆ}{€~~~zyz}~}‚€vzy€umxx}ˆ€}tytwv~{t}s~|~†~~„s}z‘wpzŽwz„}~~~}~}u~u…‰|€~||~szz€„uv{‚€vƒ‹ˆzyxx‚|y}€ƒ{{|~‡|uc‚‚yxtpx||€v}p{xq~{‡wx€}{€~{€~z}{xvpu„ˆ…~vˆ~}~…ƒ}‰y’„}{uiywx|{~{…†o{y{}Ž…zŠ{ƒx}}x||u|t{{w‚‚vxzƒ{yƒyƒ€€o€„}zs‡yu{~xy€w}~z}u}}{ƒzy{€zt|vy_rxƒwƒz€{|sw…€|…}vyyˆxt…zy}tr‚n{y{ƒ}zz}€|sqx„r~~y‚€Œ|‚v||…{‡u~u{zjr„wwt}zy…z}y†z{wzwwp~}z}|t‚xw‚|zvƒz{‚}pzwx|‚†„x~Š{q~~xyx‚vpy}zz~u„g}u|{‰|~ˆzw|}r€~sy‚~€S{~tyƒu{‚zlx‚yv~€{€|{ˆ|{vzyvƒvy|[x€w…y€ƒw|xz…y‚†tŠ‚}z€||x‹}}{{}xv|xwyvy‡sƒrˆ|…w„z~{~v~ˆy}uxz„}u{}q„tƒ€Œ€zxy†€}}~€oy}‚|}xwz|z}|yƒy|ws‡zz{|}‚€}‹}€|x|zuzwt}wx~t„ˆŠu„~{vz…~z{t~|€~m}}~wozt„zz}vuz|}pu~xt|z{j…||…~{€…ƒs€‡€}…{yŠur|v}‚m‡y|xpyuw~}‡‘~}|~zwŠ~a}z|€tyx{…€yuqqK~}|}}|z‚yz}Štx~{yz}€~x†t{|~„~ysy}~ƒ}~|‰{z€€~||wnw}~s}z}z„|ƒ~{ˆ€}€‚z~{ƒp}„~~~……~…w}~|€~‚~~v}†w|„nuy}zƒ€„z|€yv„|uyzv|{‡yt~zsƒyzƒ‡}zyp}w}u~oƒ||x†pƒ€€}r{w~}}†u|{€~€|wvrzˆtv||{|{{~€wƒ|xy„q||o~~~xz„€|ƒ~}}kƒ{v|€~‚ƒ„ym…‚}}}{y€wz~}‚‚|€‚€|‚€~~ƒ‚{xw€|„xv|{}|}zxy|„€{t†z|€xs~‚o~}u~‚‚~€~‚~yƒp~{|€z†}u~‚…ƒ…‹€ƒ}i|ˆ|t~‚~|}€ƒ|€{‚{}s€z~|~x‚z{}~{}{y{|‘€v|}}{s{zuyƒs}}yx~|||z€x„z}|vv|}iŽyx€yƒo€||{~„}xvŒ{~‚v‚{~€{†z‚‰y‰€|xxux„x~~t}|{x~}v~~w~y||~}}|z„ƒ‰~||zƒ}x~~zx}v‚l|~ƒ‚Š|„x|tw|}w}xvr{ssuzyw~‚€w€}†z€~~}{„n~~w|‚|w€}€}ty‚‚|y}q{ƒ{~u|i{|‚ƒ~‚†{t~}{xzz‚{}ƒq{t}ƒ{€z{‰‚€x|~‚…||w€x}€€}z€y‡|yƒ‚qˆ„Š‚}|€|€zƒsy~x|~€yr|„v„yws|{ww|rty}|y‚†€}~~~|z{€}~~y}{~~}ˆ~y}…v€z}yzq|}{{|‡|~}~~|t||wsˆ}r~v{t}}px|Œ‚zv}~}ƒ‚x‚}{yxzwzu}€z„sƒzoz|~{}utwz{j€tt|yyxso~‡ƒ}y|t|}{y|‹‚z|…y~€|wwquz}y}‡|~|w}ˆwƒ†|{wyutz‰yv€|~v}}z|wu‚{z~ƒ~y~‰}|€‚{zƒƒ‚‡…s„{‚t…{{‡…{|…vz{vx„||v„x}~~}}†y„|zxz|€}{…€z|y‚~|z{{}z}{{{|{~xxzw|‡€yw{ƒ‚u€z|}{ƒ‚€u…€w}~yy}s{}~„|~€uz|„~}~v‚z„sˆ{y„{{{{€zˆv~~v…z~~wywpz‚‚s}}|}{~ƒƒ}y€{n…~yw{…u{z{|w|ruz|€‡|w„z‹ƒƒ}vŽyz~vxxw{{€}t{p|~|y}{}z{y}{w{|y|ry{~t~€|}|‚}~{yz€zv~{xx||xu~w|z}}tu€‚yw…yps„||…|}{zt}~vzv{}{€x‚}yuy‚~yz~x||{{ƒ€vy{yx‚|{{|}{y~‡{||x‚€x}€„z~xp|tx…~~~€tƒ}}ox~„w}zu€}}|vz~y‚}|}{yzw|~~†y„qy|}z‹~|}xz}|yzz{~z~~z|szuyz~}{k~v€|w~||wx|y}k†}}yz|{€v|wwvr}…|z{‚|~~w}|y}{€uyv‡{y|~€|}‚z|}…‚p~s„z‚zw{z~}€ezx~†t}~uol~{„yz€€ty}{|{ƒxyw{vƒy{z‚x}|ƒƒƒ}ty€v|~~ƒ}z€z{|…x|{r~|~€‡|z{x{‡y}v||ƒxuƒl{w|{{{z}xyƒowx{ˆ{‚}{y{|‚€|w|~l~v~~{v€‡~†u{w{lyw„}‚x}xw|x{„}xŒu|zˆx{€~~s„tƒ}{‚xk~{s€€}…r‚yu}x„o„zur}v}ƒu~}z|{v{‚y{}v‚€~…‚}ƒxv{€„}„z„€‰}€zw€z†p|usyˆ~s}€{zlzvzx€}wyˆ‹{…€€{}w„rƒ|||y}{}€}wˆ~|~}x~}{z|‚xz~…†~{~|€…}z{sw}…€p}{€vo{yvi{~r€z{|xt{}{xy‡z}vss}‚{w{zx€y‡{}sq}v~ƒw{†|{}|vwy|ƒz{{zˆc|z…u{~{‡€ytvЉxutz~ƒyŠ}Œ€v|ˆ‰q…x€~u|uƒ|„‚}|z{}{zryo€y~…z‚ycyx}uu†~~†~|xs…„ƒ~l~~w{y|ƒ{|€v€uwwƒz~z~{€ƒ‚sƒz}†{v}Žyr€{x||€}€zv‚‡…twkv‡€v||w|zz{zh€}zxxŒz|ty~z‚xwŠt{y{{„~|ˆ{zyn|z†ry|vx}z‚~‚{‡y„€|{s}‚x{{y~yyhux€|uxyzy‚z{…~z{‰w|ƒ~}uƒ…{~€}~‚}v„~€{~x‚}{q||~}w{mx”u~}}z}„~||zƒ}„}{~z{wx‚||x}…~€~‚tu{u…tƒ„~{}}‚„‡u~~~}wu„ƒ{~k€|v}xt€z|{z||~Œ‚€€xz}zz‚~|…{|z{py€…zy|w}{€ƒt|y}xu|||x}}~‚z}|y~x‚€vƒy||„~vm‚u~}yw}ryvt€zƒ€†}~y{|€}€}v€}~yyztu|ƒ„~|xy‚†t|{vx|‚€‚yx|zˆ{|„|t~u}xy‡€}€}w~x}}xt}€|wjxxvz|{€€‚}{~|zz||}}x}‚ezu€t||t~wwnu~l}}}€xyvy{r‚ƒtizx€z~u}†~z{~yv„l…}{ƒz{€|{}|z~{„||ƒƒzz}|||x|y}‡zz~w†{~x~€{†x|~yˆ~}z„u„||‡~z€ƒ„}{y‚}„‚z„€x}}uƒ}~€y‚x|€u|Šx}v{~xzzz‚||z{~v~|}{~|}†~}z€}~{y{ƒz~oz|ƒ{u~€|„{y~‚zy|€{{}ƒ|yzxy€€xrz||}x|}}|}{}{ƒ†uo€yz|{p„|v~zy|zn€z{zz€~ƒyxw~…„|‚|~Œ€mzv~|y{€ˆ~y|}{y||}v~y}{ty~‚t€€~ƒt€}€{x{z}}}}{}~‡q€yyx|}{zz}†}x€‚o‡v€y{~„}uq~{}‚‰}}|{v|„†x€v|}}~~o}~†Š{z€Š~z|€v€x{ƒ~p{~€‚s€y~{{v}€yx~†‚z‚…ws€z{uyyƒ|ƒ}||€zz‡}uwy}€y|x|zy}€y‡xy|y„uz{ƒy}w}y|ww{}prw{v€|v~zu|{}~ƒ{rz}~z{vq{„€|{}{~tƒx†y~|~|zzz|{‰„ƒz~u|yy†x{ƒ{|y|||wƒ{y{{|‡{|zp|r‚~ƒx€ox~{|u||}|~~qƒ|{„tx|}|{€}‚ƒƒzxv|r~€w~x€vmw…|v~||€|~z€ƒƒ€{{ru}€x|~tv€y~zƒ{v„||}}~€{‚|s~}…yy{|‚~~zƒ{}~u|}wz|sx}{|‚{ux{z{€€y~t‚~€yu|[‚{|‚|‚xt~}}}‚ƒ~}~~uy~€}~€|…€z}ƒt{{{~~{}zu~~ƒ|zy€‚€†xƒ{€{{}~}zrw|y€~‚p|…}uq|}„x}~€}q‚n{w…y|zw‚nyxuyywnw†€€…~}~{~…y}€|~ryz{‚{yzv†xyry{~‚}|w~€yu|}|€}z}|†y~~z|}|ƒ{zƒv~z{~~}}|l‚}q|€}{€{~|z{„xz{vˆ€}}z~{||{|vzw€‡zy}wy‚~tzwyx}|y}{ƒt||‚{}{}~vys}x{}w|„{y}}ˆƒvzw}„o~…zyzn|w||q~†y}|~z{}‡}{|ƒ€zƒw~z†~ƒ~ƒ…{~{wƒ|„v~sv€‚yŠ{|{y|{x€x~z~~twƒ…|}}€ˆ„tv}~}ƒ‚~{~{x}€„w}†~p||}…†ƒ€…|ns|„tsx}~‰~|}}„w}pq~~szyt„€rƒ†|~u~€~|{{~||y|~oƒe}v…{}y€ƒ|t{|zzq}{o{xz||~xz}‘~~†w}~}wyzwy}y‚|ƒy‡}~~€‚}Š|xv‹„|Š€~s~w}v}‚u‚ƒƒxwyy|€|€|y}}}{}yt€„}…„~|~}€ƒxuy~y{}|z€|{}{n|“}|}v}qv~}ytv~z…u„u{~Œ~zwy|„~{€y{ƒ{}|}~|s~}z†w{‚ryˆz€z|z~y€x|z}„…x€…~€‰r|…||z|zyƒ€}l}€|„ƒ{y}zz|{y{w„w}uy~w|q}€}x{yy~k…y}{€wztqzˆƒ‚€Ž€w~ƒy†|wv€z…‚…~ht‚r†z}ƒ~€€€}{v€}{|}ƒsmx€ƒ}~{{€~ve}z{}v||~v|{{|€‡y„v~„{u€}|{y~‚ux€|€Š{s…z|ƒ{|~„t†|~„}{|ƒu~yuzœ‚|v}„yƒv}yƒ}z€~{y}w~‚~{||wyyy€}‚|t||€y|szˆ„}u}€„~~…}z€w|}€uxzz|zYws|€~y}~yƒ}…{wy~‡y€vxƒsx}{x|yz|~€i}ƒ{ƒ}u~…€|z~zs€|…z~uy|~ytƒz}r‚x~vusv|zz~rx}q{}Ö†x}zw„€||{}|~}€z„s{|„€twv€|~n}yxy€z†…|~|wxy{}z„‚}|}‚~xywz|{|v}~~ƒ€}}‚‚|}}y€}{s€vy…‚x{w{~x{|x…uz~~t‚€||zw}‡|…€€pQt{{€yv~‚‚~yv‡vƒyy|†|zx}v‚y|w~„{wxy}tzv~w~}txxy~~E~‚{~z„wx{y€yy‚tuƒy}}{zx|yƒzx{„|yz{€}‡}Žr{x‚€sƒ~x€ƒ~~{z}|x€{|x~sz|~‚}x{w{{|~€€{x}|v€‰}|yy‚|{€}twxŠtw{|lx{w|€„ywtpl~v€}w|vyzzzx‚z~~{r}s{‚y}x|~{qw‚~sw…{…q}{|yu}~‰z}~u†}ƒ~~~…|}zy€{q~x~~y}s}yzuƒ|€x€~zy~‚w€†€v{wk{~uywx{k€y~y}|{xy{v{zx|x|yƒ}zz|vzv}wt}‚|zuz€{z€s||wq}z…z{‚}}rs|v~wz{zx„xx†uy~{ƒ{ƒ€„|z}|~€~t~€}{~yx€}x}„{xzv|x}†{}†{€ƒyxv}z|‚wƒ|…{x~{~…‚|~yy{yzww~€y|}zv|w{|~z~w‰ƒz}€{}|‚‚„z€~}€…{x…yz|€{|Š€|€z}m{w{~ƒ}{‚„…yztsw}ƒ~‡yzw|z‡„{tŒoxy{u}w€}|~~€{|v{zz{wypyƒ€~|€t|kxvx|pz~{{~{€}|zx„„|{}vmy‚{|zi€w~zqz„v~ƒz{~{~}{}€†~wyvƒ~zz~x€yxy}‡yt~~x…{yswys€}z†‡}ƒƒ{}~~}}yˆx{~ƒ€ww}|x~‘u‚|}‚}{||{}y~t{”zt}~ƒw}‚€y~v|„…††}zqy‚€n|z„}gxƒ{{yz€Š|x||‚…ƒv~€z|z}{y||~uvyy|vuy€}s}|}woz„|yu~‚y€|kž|‚„ƒƒwsfvw}y}u†d~xwwywx„z}wˆy{yz…y‚Škxyr{t||zu}x‡~}}}xrƒ‚wyz‹}w~||utz}xv‘~zq|ƒ|ˆzx|„z{y|ˆ{€vmr€u|yww~r†wx€}€xzz||‘z{‡…|„yˆx‡n|{~utƒ~{q{mox{}|~~‚€qi|ƒeppu{wzzx€z~z¬wz‚yqrx{|€p~}ˆ~uzyz|oyu€{}o‚‡rƒyqzz{|‚z„usrt|{‰uq€t~}t„{z}~|{€|wv}”~p‚~yvz{zo}p}ztm‚{z€ƒ~|ž‚||wx}{xw€kyˆv|}‡yw}w€{yyyU~~†|w||unq}„q~}ƒ…„~vx|zqvozƒ‰wx~~}sp~|yŽwn€|{}…~{ƒ}vhrx‚zr~ˆ~{zw{ƒb|w|v†sv|ƒtzyy}xxtu„}t{}‚v‚tuƒtu{t€||guƒ|ƒ||t||†kz…xzow{r{ƒ‹}|pyu‚vv€~svt~}€~w€{„vsuwvt|~€ze„yrxy~wYtuw|~{w~mˆy~x„„ˆ€l~ƒ}{|x€{qw{{}ƒvzŒ‚…y…~~ƒz}vz’ˆ‰~z}z|ƒv‚}“{ƒ€ƒ€ty}v€~ƒ|}€t‚z|}€lƒ†t†ˆ{„zx}v|†ˆy~€~}zox‚z€ƒ|‡†z}Š…||€„{z€z”{‚|z|}}}ˆzw‚}„d|~~‘|uˆ~ox€vwovt~v|‚wyy}ƒ†m~||Štzy~„|„vv}ˆ€|}ttxxr„|}~z~zz‡z}y~ƒ||||„y|„{t|‡|{~}|zs{‡‚]‚z}~{{€†€…t‚ˆƒwu}{u{ƒz{or}~ƒ€€{z€|‚~}‚}ut{ƒˆl€y€z€€yt}s„}}~h€z|{‚t}x|€w‰~x|z„€ƒ~xx{‚…€„‚tˆy{w‡}tpv|ƒ‰}ry{y{†~~{yx›€~p{x„~zu|p||}„}‡z˜}„†„~vzj…v}|}ƒ|xxs„||€wr„ƒƒt€p€q‚ˆyŒ“y{~rzzyxz‹‚s}…x{{tƒz~yz~}w€y}„„z†‚~}ww‰‡crˆt|wxv}~q€{|n„}r“|~„‚{{}}p}~}z}}€|€}{z~~z}|u}v~|w{{y€€}}w‚{}€z}}w|z…sy‚…|{{}~„y~|ty–{n{‚~{|€…{|~~„|}v}|l…p|z…~}{||x|†|s‚„rq~„}€x{€j€‚s‚|xƒ{r}{~|zm…u…€|}…}}{z€uxy{}{xƒ{~}„|}†‚}~{||{{ƒww€|y|…~}}|||}„||{yy|{vs}v||€{ƒ|ƒ~uv}‚|…q{ƒx€us}r{}w~„~xv{zu|€v{…}}€~i}}z…}€}~~zy}}}}y}||}~|}ƒ†}xz€v‚u~u}xy}‚}‚pt~ƒ~Š}‰€}x{||{r||}lxw{z€‚}}€t€nv~~|}€xyw|~|q{zz}yƒ{€|…~~r{x€ƒxs~x{‚xz€x|w~…zz{{vuz{€||}syzyt|zx€{}u{s„~n~€|x|vyxv|z}}{}|€|{}sy€‚v|yuqƒz~~wz€~uz€|yŽy|ƒ~}{~„{‚}t|u~|y€||~~~x~x|}€}|{{{tw||~z|zw}€|ˆy€~xwx‚{‚x€‚{|€yxsx~Š{szƒ~u~|}p|~}~{}tœ‚‚ƒx}{|€{{x~}{~v}„€z‰w|„z‚~zn~}{}|yvxyƒ{‚}ƒ{yy{ƒzz~w„}xzjƒ}s{u}xy{„zzyzz€tut}w‚{~zp}wx~x}}{ƒ}|z}~{ƒ…z{{|~pt|zz~~}{|~z}z~wz||‡‚|…~~{¢~‚~{€tz|w„~}}|}}w||u||oz|p€|€zyw}{~~€z…ywyy‚zx|}t†|{‚{w}|x~u~y~‚‚|…{~€y|€z{{‚~vw„‚{…‚wq…€|y~{€r{~w{~{}{|€t~{…|x‚|~}€{z|~zpƒzz}€{}{uzyz„~~ny|xƒwyw|~{||z‚y{|{€|}‰s}x~|~{~r€w€x|}|z{osyuw~xxxq|z‚|ƒz}|~€{~t€zyŽvw||€~{{€vp|}~€~|xxx|}||{v‰~r{hp~~|ƒ…y||‚{~{|xzyg~}€{x}{}mw‚|~ywu~}~‰vw…z{yzˆ~{~ƒ{…~‚~y}„|~wj~yx}{|x{|}‚|€ytyƒ„~r|‚}~~}{„~w}z|q~‰ssp{~z~y€x~||||‡ˆw{‚{wƒƒ~~‡…{~}z€€zqw†~yx|}~|r{‚}xy~tv€}y}x}ztƒv|l‡xz{y‚y{|}|~~zx}tx…€~{w|}}y}ƒw|~y~zv„uw…|}~l‡€}€z~v~y|‹|{ƒq€{y…|€€~|‰|‰iy||€|zw|}|zu~qs‚ƒxƒ}|}|yz‚}{€‡}x€{|~„}yx‚w}€{v{{~z‚ƒj}|j~‚‚s|}y~ys{}y€{|†uxrz}}}xw€{qtut{z|{|}|{z|~~{€‚~z|zv€ƒz„||us|~‚{~w„€‚z„m~„€}{~rv|~€}t€„‚owjs‡|s…|€tx~yuw{}|€}|ˆy€r„uwz{{v‚~…}r{}swt}}ro}zt||ƒt€|p{yƒ|{І|y|ƒ|z€‡m~zwy„‡‚rƒ‚~{}u~|}n~{z|}‚‡‡ƒ~…|~ˆ}xwuo‡x|~€…|€|v€z…~ƒ‚~z{wzzz{}…ˆ‚wwt~|sxu}}hz|u|v‚}Œu€‹}‡u‚ˆƒzŽ}‚|q€„ƒƒƒ„}}„x~{…zxo}‚‚{|„mx~|vtކ|„y†ƒ}„€uyx}|wxqvw{{x‚~v†~†y~€~`~…}{}|w~sx{}€z~~x}|ƒ{~z‚ƒ~{~~…vy{wƒ€…zŠ‚}z}y„~„€{}truƒv„v{‡‚y‡~Œ||xq~~|‹|yy~‹~{s…€~xvvyuˆw~…x€}ƒ}‚~Š‹|~vvz{{~~}y€~x~oƒx„xl‡z|}z|}|xŒ{„†}~{{|‡Š€z}ƒz~„yv€|ƒ‚pui„€{ˆ~}zz€ƒxˆm~ˆu{‡Œxm€}~‚w„‰}„u{|v€Ž}€~x„~z{€xvxƒ‚…~€„‰k~~¦ƒv{xz{vŠ}|upƒ}{…‡y}ƒ€‚ƒ~‰€z{~v{|u~ƒ„wz„vwoz‚~}€|t|‡—„†~‰l||{€|~}{|‚|x|€…€w|}v€zz{w…‚w}x~~}}~‚~||}‰z‚ytz~ˆŒz€‚v{sw}~v~‚|s{}}~|ƒƒ{u}|~~}}{~vwŠu€{|~{|zyz~€‚}†z|t~}x|ƒx}~zy}w~„€}s~}{t}|~|€|}€zw€€~{ƒ|{r|‚‚j‚{u€ƒyƒ~€~z}}~z~z{}}~|z€}|{‚p~yr}xy€xw{|~„xsux|u‚}|}{|}z€||ƒp„m{yƒy}ywtt}{zt{v€|‡†y€‚{{zw}€s€}|Š{~~|v|{zrƒŠ|n€~{z|}ˆxv|~„vh~|~~|‚z|}{w|}†y~zzp~w{}}uˆy{}o}~wyo{|vx||~~qz}|v||…z}yvz‚€{}}~†‚yxo‚|yy}sz{}€{~…}ƒti}w|zwvx€z~yytw}€{€x~xz~|}Œ|~y{{y…x}z}~ƒ~wrv|tx}|w„|€€w}‡~{y€|}y}||~}|}~€€~}z{z€~s}x|€{‚q€xz{€|~r~vy|zy…‡{~vˆ…€y|‚xy‚y}s|u„z{~€~}~v€zz{}{~}|€|y„†ov|€„l|y|zv}ˆy€}}y€}zyx€}‚xz~}|y|{‚|€}x‚y~s‡~u‚„¡}xz‚|~ƒ}wx~‚…}{~{„vyy‚}z}{~‡y~|w{x„}{|t~‚uw|‚z}|‚~}‰vv‚yyx{‰~{~|€pˆ}{~|yyz~€}ƒ…ƒs~y~xx{}}zxƒ|}x~{zyy€|z€}}}|~{}|{w„su|{zx†‚vzj{|}|}~{v~x{w{†}}}zyyyx|yy~……wy}|||ryt„†{|~‚yx}|{|~|{|}€€~{{€{xm|x{‚~~†|„}}~†yv}}~}{t}|‡~}}€ƒ||€|z}€~|€ˆy‰~€~||€v~s~y…€y~}~~|z{{~y€~|‚„{{|vyv‚{|~||Š€w}‚}}z„yzwx|€ƒz|~€z|x}v~{z~wzuo‚„~y~{…~z{wv}|†…~y†…|‚‚~y‚x}}}}zzv~z|x}uu||}xˆ€y|lxu€z|x€zxv~vv~}vy|‚y}†}||~||€~~ywwtx|xv|k„€€~{‚ws€zz~xƒ~}|‡{t{„{}ˆw~‚~~‚|{xwxxr€~y‡‡}kƒ…‡†w|{}{{|{y‚~z{zwƒzw||tyz|{r‚|~x{‚€o~€}}x…u€ƒ€x}†|r‚€|usŠzt€r|ˆŠ{w‚}}}zx‚||t}€zƒz~~x}‚|ƒ{‹uv|}„zƒwjyo}}t{{~w~}zƒo|xƒ}†vƒx‚€|wou€y}{{„~v~wa„z†|||€€vryƒfs~z{„|}…x}o}vuy~x}|xƒy…}{xr|z€wrt|„|}v~wxƒ{{~…tw‡uƒ`t€~‚zt‚x}|~€‚|y{}|‚u|…x~xx„ƒz~ƒ||~€y‚~}}z|||€~‚†|„ƒuor{q{†‹xv†€…}vy€‚{”ƒzƒzswŒtŽnyƒy}yv|€z€ry~q{‰u~z…{Œz~‚}…~€€{n}€vŒr‰~}|w~~†{…~~…„}m…‚|t~s|x€|{‚~z{|fx|}~z„~z‚uzux}‚|€{{{u|‚yn‚}}|vŠ}~u~€}t|u‚{–z{|kxp~{}{zyƒ~{{~|‹y}}{|zz€uw€s~}||}}{~}xwouz|zˆ|}|{{||x‚|}vyw‚x|||†~|€|‰€}x€}u€v}|zyvw|}zw}|sy}v|~x|†ˆ‡{€x~|}‚‚|~„…||{‰|xƒ‚€ƒz|~„y~~~†|€‚z{x}€{vy{y‚}}{{~{v{{~}‡xr}{|{j|~~}x|||u‡}„}y€†}}{~€u|}|yƒy‰{€e|xu{v€{€x{~z|}„|x|}|~z{}|}|p„|~rw}v{ƒ~zzy~zt‚}x‚}v|}~w}{x{s|}‚‚~zu}z}{|z}}}}}{z~xzxz|{zz|~|}|x|}u€xw|‡€w€|xyz{~{}€…{‚ƒyw}‚}|wm}s~†}y…yz|sw~{{~zny}†|y|xxzv|Œ{~y‚{|}z}|„{~{}{{Ž{zz{q}}‰{z}}t|ƒwz‡|‚~€ƒyi{}zz„|vƒ|€u{~|x†z‚rv}€~x~x~vu|x~~‚xw|}‚vz€‚~~vtv{}wzoƒ|ƒ||xy{l|tw‚‚v}~}uwxv}ƒzw~~|}}}}~uszu{„wz~}vzz~‚qx…~u|o~€{||}vx†‚t}x€††„€~zmww{vx{yx‚„zyvy€zy{y{~z{}|{~~|‚y|{v…svt|s{€~ˆz}€}~y‚}~u†x‚„v|z‡{€|{t|u€yz||z~{|s€~yz|€z~w~zzoƒz|ˆxz‹}y|zƒ‚€‚ƒ~€{}|v{‚}}y„†p}{}z€€w€rw|s€vu|}oƒ|x{~|}}zyxw•~€z}„yuƒ{{sƒ}w|z|vz{zyrzƒ„ztsy†}€pt„~€€||‚~w|…ƒvu{{}|e„|…w}x~‚{‚xt|zw…~ƒy|zuts‚||yx„spƒx‚}x~ƒ|†~†qt}zy{€w}xv†wx}w|{‰|w{q|o|uy~v|xlj~~€urv~{Šx{|}€…}z…s{~twq„~z}€{wy‚|wv}y}}~wuv}|tyŽ{…}q~ˆ{…}{t|ovz{z†‰‚x~yv„zs†‚‡~Šwxxw{|x}€x„z…ˆ~‡€|~‡{€yv{u|r}}†‚z€w†}…Šy‰z€€x{…yw~t}q}~~w|qxlvzzz€}‡||~vuy‚~ƒvˆ|Ž~€}}{{|{z„sv‡{…us}rŠ|yƒg„|‚|}sysr|{„‚}~}{}|y‡€n‚w|t}|€~Šv€ƒ{a|~€v{v€xoxyt„}||‚…w†„„ƒ~~„q~v|z…|†~†ˆzxv{tupŠ{{zm…„zv]zy„wy~ƒz}zvuwt{{‚}‰z}}€x~w…u}ixvtz„€„|€€‡†{t}u€{|wu‰}{v~{qx}€~zqŠ…x‚…{w{p~x€ƒ€ƒ‚~~|Šz‚{|ƒsz†~zzqƒ~zy„…|…}’~ƒ‚u|}n|yx{{€€}‰|s„~†z~„…ˆ€‚€x|y‚xz€~w{w€rzyt~Š‚ƒŠ{swv~ywx{x{t…yy}o|}}‚|y}}y}~{p~z€‚txww}v}{‚u‡{Š€ƒxƒ€x‚†u|tƒƒ…~|nstx~t{|{„s}†Œv}}uy†€{ƒŠ{{_zs||{|€||}g‚„‰{}~€ˆy†}sq{}„}~€{x”z†‚sŒn~}r|w‚}}‚{|‚„~~‚~…|Š}|t~{‰{xtz}||~€|€‚|€uzx€{||z„q{‚~p|z…x|xz{w€wswx~€}z€x~€|kj{}z}|y€kw‚v|†~z}ttv‚}w€z„}€uƒy€~Œ…~w|~‹y|x}wry}zu‰l}{}€|}v‚wtƒ„uy…wx€y‡~{„y„}}~v‚yzzyŽwuyyx{‚„w…x|x|q…|}…w„|r€wyso‚iq‚|zˆzzz†„ƒ|yyxxƒ€€|zz{|}„yv€wˆ|r‚|€|{}z‚sx‚}……v}o~xxx|€}|z}…v€vvƒy}w}}~‚Š€yvІ}{‡€‚~€…}}„|yxqx~}yŽƒ~xy{||‚xyx‡{‚xt‚wzw}|‡„{y|€pr‡}€ƒ€}x€s{p‚r€~wŠxt~ww„}{{{~v~r†{s{n€z€uswy}}yz~|y}zlz z|}oxruyV~~~‡uwxzwr}|€xp}‡s†ƒ~zy„€€uu}s‚z}}{~}y‡}~„~q}zƒƒ~ysv€ˆ€}v€}~€}{‡{|~vz{z{kn}~x}}~|€}~vs{rvz}||€‚{|x€{x}|o|gtmy‡|~yvx‚t}…|{x€~|€|d|v{|€||~‚}€}qps€€q|{|o~~Šz…~|xv|uˆ‚€tz}€y~n€y~}w€‚y|z|ƒ~~~{‚y~€|t~||}}€}‰{ˆ‡…}†€l}}}~}ƒ|ƒ€~{{z~‰y{z{Œys~~u~ƒ~…„zvy}xwz{z}|~o||{|wp}zt€{~‚}~|Šxz|‚‚~{}{€}vnz|v}|€~~{w|zwz‚…~{ƒwnm€w{|}ƒ{z}|ƒ|x|{}p€{z|{}|ƒ~‰}‡{}vyw{~|~yƒ|x}ƒˆƒzy€€~y|ƒq}€~|||}y€|~„}~|…}|…~oyzy€„x|~v‚‚‰}{|||sy„w}|tz~yu…€z|k…y|€{|{ƒ}{y{tz}}|~„…~z}|€|ˆq}ux{„~x~wv~y‚mtz~ƒ{„}Yup€…€|o|y€~€}‰‹„}h{wx{‚ƒ‚|{x~}{|{{p~zwuwxz|}ƒ{x…||†m„…†xpyyrw‡|^‰{w|p~ww‚z{yƒuu}wztw~}s{y‚‚‚‚wz}{ƒxMr{‡~~~|qx€qw‚}y{a{~zz{‚st‚~~t}|{yƒxx}‚sq†}}o~€yywy€ƒ€‚wx~z~|ux~ƒv~€ƒy{}ƒ‚x}{w~{~ur„ƒxptz~€~{~…z}{{‚v}†y{„€‚j~}€{…v|}w„}z„†~r€ymwxw{|‚nq{y{}t|vwz†zi~j}||ƒ|jw}…{}qx~€€~Š|y|v{wx{}t~€„w‚yz~p}}|z|€z|‚xt}|u}y€„{|y„{”„€zj~xxxywv‹‚…x†zz||wxyywzj{z{}~yu~€„}~~…‚yƒxŠ}}jfry€ulqxr}t}|{{x}s}v|{‚{u‚|€r|xƒ{~w~|}~€„y}{}~|„„lv}zl}‚u}~xx€~‚‡|…~{zz…p€ƒ|}}|t€jy{z…|yyv~‰|}v‚~usk‚ty|m|w{€~{|€r~sxx~}ƒ|~zpyvx~t{wlzp€zzpz}ix{zx{{ƒ|~{|x||xw‡„vuƒt€xw{vz~rpst’ˆ„hyw{„}xƒy~}†…zq~{zs}y†}n€yx…~v„yx}‚t|~…ˆ{yz~z€tw}€ynz\wul{z„~||u€†w}‡|yvxy~€yƒ||}t}}uvp‚„vx‹„m|v†vy‚xqqsztˆ|wux~˜f‚~r|ˆ{g~~…zvs~x}~tup{†ƒx[}|iyt{||…y|r„zw{‚ƒlx}‰€z{}u„„wr}{|tx|„|ypt€„zox†u\~xy…Š{|g}u}~vy‰y~~jbxq{€wŽx‚}_‚€|x~‚~x~}qxvuyˆk~‰zƒq}{t…}‚‚‚}zvˆzy€„xy~{vdz†v~|r‡zq€nx€tpŠy|v{txv|~z~ozvxuzw}ˆ~u}…|‹|‚rw}z{|{x|{vo}|{yuoz{gl{{†u}€~€€}{vƒ€‚{{ˆw~ƒt|}u}p{{}}{|…|‚…|…u~m…‚‚„w„~€‰|z}}~}}|{}~~e{z|„|v~}{„{€z~w|}sf|x{€{v}{|}}~‚|u{~y~}}v}u}|~zvz~k~xopކ}y„}~}|ˆr†{z„ƒm~ux{{‰Ž{~~y|t‰|pww~y}~}z}|u€}„uz~|}t‚x€‚xw‚v}{„‚}~~zvwy‚yyŒ‡|x~}w}{{}~u|†‚|~}z{‹u|r~}|}x„t‚~|‚v~y‹„|}|~€ƒ}{‚p{|€{uzv~uzp‹ˆx{‚Š}~~u†z~{{y{„y{~€}|iƒ„€tt}…ƒ‡}w€|u|x…{p|qyvx|zy~~||}}‚h{€vy~y‡t|}yƒu}}~r}zyz„~nn€w~wy}{„€}‚~zwo†€‚~}}yum…|}x‚œ{}{‡}z}}~r}}}Š{|~}v}~yˆ{ƒ~s|y†~ƒ~}v||€Œ~~|zƒ}|t„|||yƒ€z{y€{}pwƒ{}v{v{zxs{sw}|z~~zys„|zvztt|s~ƒ|…y‚q|x„~~ztszz}vrƒ‚~†‚hyx{{‚xy}u}|~|ƒuz~~sy€€Š~{{u|}vƒ†xz’wx„y|m|v|zvyw}szzvtw{|{}z{|€w…ƒ}}||}|{yywz}}y}z‚w{‚{zz|y~}‘~|}wx{y{~z}{{z{{|ƒzs|p~yw|uƒ}||}s{ƒu{w|wxww~~~~|y|px…z~w{z|z€†…xxo‚ƒ{y{z|€zx„{u~€~…xt}rv|yx|zz„zp|ww…zz†|}‚uz„y}s{xxƒ|x„y|†p‚y~yƒ}|xw}€~}„|}‡}{x}{•}{€€|~uƒ…}‚}wy€}{~z}‚}~~z}‚ƒ}}…z|‚xy„…{„}|y€~ƒy~ƒ…z{ƒ|w~{x€|~{~{ƒ‚yw}ww}xv€zv€tŠxx~w{†xƒ|}…}xq}{|~z}~{{}|r~zs…†t{ƒsux{p~yz{{yys…‚}{yw}y~}}|}}†}x{€wzv{oz‚s€vvyuu‚}}yz\~y}ƒ„y„ƒ‰‰|…‚‚|v}xz}€~r‚}|‚€J|w„z„y…l}}jysv‡yt‚y‡‚wzfz}{vquqti€{{ƒ~|€zpƒzsx}ry{~x‰‚yt‡~€„y~x{w}}zzy~ˆx}€ƒwƒr‚zw„{~‚€{}†€‚Œxr~~}Žzy}zuƒ…s‡‚zv€zy}x~„wyy„|€x‚~wˆƒ~„x|‰ˆ}}Šs~~z‚w„yƒ|€Ž‚t~€‚gxw}z“vz„ƒ|y}z{…{€‰Žsx‹{y{yx…rv‰wyŠ~~‚~„{ˆ‚q~{}‰|ƒy{~Rrrx}zv†z‚Š„~{~v}‚xz}uˆ„yyy{~…~vYjy†~€xy‡‡||~‡zwƒ…vzwƒxrx€}u}x{vuyŒ}ƒ{~|zxq}|„}{q~xƒ~}‚|}{}n€€xxxy}n}zv†Šqƒ{ƒ€‚vs}€zur€}†ƒ€…‡{‚…~t~…†|}~|ˆ‚~{~v…~}}~ƒw{}{~~z}wx~‡|‰Šz~ƒ:‚}€ƒ{w|}‚u}y~z}xŽ||އz{xu€|}uŠ~fyviwz‰…u„y„‰uzq‚‚{~ƒ„}~zy€z€Œy{{tz…}€ypw}’pzyƒ|m}{{‚rz|~}~\z{tr~xz‚ƒz{€~ƒy|wv|~ow{|y|}|}yz€r{…}‚zy~|†uz|x}Ž~|qy}v‚ˆx|€|z}€€‚~wz|~~}€xwy‚x€~~}{rw}w~{}|~~|r|„}{{sy}yt}zyx}}}~{€‡~~€{†„‚n‚~z{|wy|{|}~y|€u„{|€~y}}|~~sz~y‚~~z‚ƒ|ƒ}t†{~vwx~}zzx‰t|u|hƒ{†|€~{|{€z|}w†}|pyzys{‹ysŠ{zƒ{wwyu~wy…yyu}~|€u}||||}yx{{{rv‚|y}}}}y‚}z€}v|}†‚‚|}}|{{}z†|}†{}}€ƒys|~€}~|€†|‚x…tx~~~py|wyzqmyx‚‚yyv|‹z€t„€|…||~t‚…l}zzzx~|{|zr€{|{ƒ{ut|st‚{ƒ€|…†€|‚ƒ~z~~}wyy~uy‚{|{ƒ|†{z{€}‚€…z|rx}}ww~|~‚zo…xr|{y}ˆ|}x||y}~ƒ„zƒ…q~€u‚€tw†~ƒv€~||yy~~|}y„|‡}w€}}t~~ƒ}ƒ~~{|€x~~}†{w{}€~r|~{}y}zz{o|Š„‹y}€~‚{}y|lw}}z{n}|||„|~zƒ~‚z}„~w~t‚‡€x„ztx~{~~~}€‚}{v„~y|x~nz|t~v~z€|x||vy|{{y}~~…‚~z{€yzƒz~|~‚|‚~z{yz|x€{‚|}|„}|~yzxxx„}„v}|ƒ€~~}t…‚|x|t|x~}}o}ƒ}zz||yy|€~{|€}z~{}ƒ}wx~w{t~„}y}x}‚~ƒ€€€y‚y|~€zƒ~…|yszvz~€t~|z}{x{}€ˆ|y{l}}}€{||~u}zz|wx€}~|w{w€~~{{€~‚zy{{|xot}{x|~w‚|}snu{v‚y‚|y~y}„yyx||‚|}y€‚€y~€}|||t€}z|wz†}zix„{~z}…y}}€z‚{||y}xr||{…}€{|{tw|€y{}p€|zz|r~…|€{x{{„{€{yvyz…}„{wy„|{€‚|xw{…z‚€z{y€€€u}ˆ{€|z}y€†~}|w‰„{„}w~yp…}wŠu€w{|€€}yv€w}…tq}|v}{z|‚ˆhzz{v}|}|ww|}~zz|}…}{}‡|‡~w‚xy}{}~y|{}„z€~{…uoy}~u~y‚y‚z|{|q|~qws†wz|ƒ‚}}x{„z€|y}}€{|‡zxxy|sy}z€w}}ryz~yyˆwz{|€y|wxv~€€€ww|t…v|wƒ…€~xt|{~’u|}}z~zt}xq}ƒz~uvzu}|{}x|yw{{wxy~zw}zvx…|x‚~t€|‚~€yyx|uˆ~€yu~|~|‚y‡wxzy~zwu|{~|{yzy{€~„€wq‡|}vqw{~{|z{zzz‚ˆx‚ˆz}zƒ}r}~}}v}}~}~p~€y{€{{wt}sz~{}ww€ƒ{~{ƒyv}}y„„{{zƒx~{zƒzx}yyvs}{‚x{ƒ{~|}€vy‹y„}y{}rruzx€~~ƒ‚ƒz}‚‚|ty~u‚zxy~y…~x¼š¢“”Kd=|‘h”—™¦‡p¤‚™“º‹ŽfsÎ~˜ •¿Œ„‚†¾ª„‡Æo›,|™XiŠV \l|p•±`—wf”po1o–Ч`†q‹¬zD_c]meK~KxvdxÞØwBn”Šu“Ç[Àvhœt¥_«Žƒ€Œ^v›KLºlOf‡€©g¦’{g‹m|byZ‚pUn‡˜£gzn|‚Š‘b¥œŒ~ð„t—| „•‹s~ˆªzŠr˜˜•°«hkujleiœIiÇ©‘°V|X¶s‚µ¬UŽSž’‰ƒÃ˜^mv°ƒtƒsL¯…lg~Ë‚…}‹Œž4¨y¿q™¯Œ¯YHƒ¢WÀES~’·²˜I£­†—md‰œƒrbžŠkv„o’Q®—Umÿ¥EƒŸxq‚‚‹yŒsy‰„`C‡a^Tcx6™#]ƒ‰y–½†pf=|G‚~…•˜Fy\^½£Z„+³%o®g¡± }{bd.–¦vff‘ŒÉž‰iœu{|`—„l–†€¢mŒƒ’“ŒŸRƒŒ˜‡bžo‡U´]t¢qk˜vk»†’vu¹_oV¹ŽŠ!dxœ†rö‰k•|Y[I¢}`Œ:wyyg Ž£1’<ƒ¨]1ue„pcaŒ~šf\†±gKI“‹‹Ã¹qš„£tj|­]„Ûú}s‰}‚‚ƒx‘€‰z€†€€x˜z€„‹†}…‚„‹‹†€}‚ƒƒ€z‚†„sƒ|…ƒ‚‚‘€}|„{‡‚}‡~|y‡€‡~†{€ƒwsˆ€y‚xz‡€x}‡†ˆw}{|€‡„€…€qt†ƒ„{‡}ƒx‚||zˆ€‡y†„}v}‚„ƒ’‚ƒƒƒ{‚†€„‚ˆ…‹‚‰‡†}‚u„‹†v‡{€ƒ‡{…{€ƒ„†……ˆ„ˆ„|€ƒ„ƒ„ ƒ‚ˆ€‡Ž€z‰‚„ˆ‚‹„~€„Š{†Š{‚z~Ž„„~‚}Š‚~‚|xˆ‹‹€ˆ‚…‰†„|w‡l“†|y„x€‹||“†„‚‡k~‡ƒ‹ƒ‡p‰„†‰{‡ƒ†~h‚‚…v‚Œp‘€ˆ‡€€Œ…r†‚q…kto†wv€†–ƒ•Œ~}ƒ‰‡ŽŠyy†{„ˆˆ†‡…Š’‡‚ƒŽ‘u‹ˆ‡„|‚„†Š‚„€‘Žl‰‚~€ˆxŒ‚…s€ƒ‚‹†„ƒ‰x„Šƒ†‡ƒ†u~…ƒ†‚~…†‡|†y{ƒx‡…“‡r€z‚ˆ„‚€€‚€„€„ˆ…†Š~ƒ€¦x|Š€‰}‚‘‹€ƒ‰’w€‡‰‹|€x}‚|ƒƒ„€~~u€ƒ‚†ƒŠ‡yƒ†„~€„€…‚Šy‰rv„†Šƒm†‡€‹Šr‡Šy…‡€‡…y‚wƒ}„Žz‰…Œp‚ƒ„€€‚Œ‡‚ƒˆtw~—Œ€|…‚t~ƒ“„…ˆwwy‚{‰}‰Šcy‰{q‡wƒ€ƒ‚†z‹r}Žw„„„‡†‹{s‚”…„†z…u†Œ„qz†‚‚‡ik‡…ƒ‰†‡ˆo†iu~€s{…‘–‹’sŠŽ”„|Ÿ”ƒŠg~‡{…ƒ…ƒ‚€¡Î€©‡†t„‚ƒ‡ƒ‰}~zˆ‡†{y…€…vt‚ˆ‰„d€¤{j†w…€ˆt†…€xHm“…„ªu„‚‰~‡¦……‚‡‡|‹‰…{||{…‚…ƒ…€‰Œƒ‹€‡ƒ„Ž…|ƒ|‰‡yˆ†‡„‹{…x†‰‚‹t‡ƒu‚„‘“™vy|€’‹‚†„ƒ_z†‡Šƒˆ|{Šhvˆ†r€…x‚{…ƒ~“|Œ|‰Œ†‡Ž‹…z…~‚{‚y…~ˆƒ~ˆƒ{‡‰„†…€‚ˆ…Š||‡„ˆ‰ƒ†‹~}yŽ|Œ~{ˆ|km‡†z„‡†††„ƒ„z†‡wˆš‹„„{‹{–‡…ŠŽˆ†x‚†‡|‡w‚sŠƒ„‹‡‡|t€{yƒŒ„›ˆ†„k„Š‘Ÿb…‡‰’†‰z§‡‰‡„ƒŠ†~‡€††„xˆ€r‡ƒ‡ƒz…Œh’…„‚‹…Œ‰‹€‚‡~„|’Œ„‰y„„‚ƒ€€…ƒm€°…„€…††€‚„ƒ‰ƒ…€}…wˆ„‰€y€‚‚u~€‡†„wcˆ…}†y†ez‚…‚‹ˆo|†…ƒ~t|ˆ}”‚††„‡†ž†…„„~€…nކ‰|ƒƒœ…‡|„„q€„‹pz|Š|~Œ~‚‡‡p‡ƒ„…ƒ„‚ƒ‰†„ˆƒw‚„‰†‰lƒ€ƒ„†ƒ†ƒyŒ‹ˆ†‡‹††…w“x†p……w‚€Š…‡ˆfƒp€…‡ŠŠ„{~‰ƒ‡mv…€”Ž¡„‰w‰„}†pƒj|sv{~{iyzv€u‡{~ˆŽwyz•€zz€€‚syu}~ky~€¨~Žtˆ}s’€„~{™~|„u|ˆvt~}xz{‹‡l~q†~({…u~…xx€yvˆxu~wz~~}r|‡z†r„uƒq§{~syl|‚{‰ƒƒ‰„ƒ…|Ž„|Šˆƒz‚€€{~‡…‚ƒ†ƒ€Œ†€†…ƒ~ƒ…|z‹‚Šƒˆ|‚yŒˆˆ{ˆ‰s‚~}‚{‚ƒ†…‚†Š‡‡ˆ‡~~ƒ„€„Œˆ„{€†z}€€„‚†‚ˆ…||…†{„ƒƒ…†yŒ„އƒ‰…Œ~ŠƒŽƒ•€{uŠu„~dŽƒ‚”ƒ…„{€n†…™ƒ‰…ƒŒˆ“~‚€……iyŠyq|xm“•˜…Šˆ†Œ•€}y‚{ƒ˜k€•ŠŒ‹Š“k‡……uƒŽ{„Žˆ}†z†ƒƒ……{‚v€‚‰„z˜~•‰‹‰„„{ƒ‡‰„€’‰}‚}}‹w~|zjv‚€‚–x}‚Ž|…{|xo~f‚za}…}‰U†ƒ€tŒ}‚€~€Œ{‚yNyh|ˆ}r‹{ˆ~}‚Š|z€z€~‚{|‡–†{…ƒr„›…ˆ‚‘ˆ…|w‚……v{˜‰vƒw}FŠ‹‚…•tD}‡„ˆ…}‰zyƒ|w„‚‚‚†~…€~ˆ†„}…†y…‰†ˆ„Š{~†…~‚„„€‰„wŒƒw‚†Šˆ}z|„{|…~y{pw~Š„{……qn€‰„ƒ‚uІƒy|ryƒ‚ƒ‚{‚|ˆƒwˆ€†…ƒ†‘€‚~s|‰}€~ˆrˆ„€€{z‚‡ˆ…€ƒ‡€‹}„€‡…†ƒ‚„†‰‰„|‡…„…ƒ‚ƒ~„„„ƒˆtƒˆƒ€x‡}‚†Šƒ†wv„€€…€{‚‡}„zˆ€m•„„ƒ~€†‚~…u€|ƒ€ƒ‡}}€”Š€}‡‚„…€€z‚ƒ}}~„{ˆ€†ƒŒwˆ}w„~‚‡€‹ƒ‚Š„…ƒ„…uz|†Žƒ‚‡Š‹‡’€{ŒŒ‚…‚|‰‹‰‡lƒ†…Œ’‡€‰|ŠŒ…‡…†}z€|ƒƒr€Žzs{‡„„ƒˆ~‚ƒxy‚~ˆ„vˆtv‚…„„ƒŠƒ‹‚ƒ‰y†ƒ…€}w‚€t{{€|˜z{~ˆxxƒˆx€~–yqy~v~}}‚‚Œ|‚‡~~€|{~w…zˆy~|w}r…{f‚€u|~q} ~|‡}{~}“rsyŒ}…}Š•{„~lƒy}]||w~vrytqƒ~zu„gqz~ƒ|ƒjŽ…†Ž‡†v}…„Œ…„„|Š‘‡…˜~†VŽ_Š€~† ¨˜‡€†…‰„„ƒ‹‘‰„Š‚†„ˆƒ‰†wt~ˆ‡„„„……~„s‡x†Žˆ†……{„„‹tƒ†~{‚‰|ƒs‚„‡€„ˆŒ€ƒƒ•L„…†«™™…}{‡„„ˆz{Ž‚‡ƒŒ‰ƒ€}~ˆ†„€„€ˆˆ…‰„€‚‡ƒƒƒ€€€~|€zyІ…†„‹w‡}ˆ‡ƒ€‡‰ƒ‹~}v~”‚ƒn‚ƒƒ…‡}€ˆ„ˆ€|ˆ†…†…ƒ€†xˆ…„‡‰„‚…}‚o€…‚„ƒ}ro}†nw…z~‹‹ƒˆr‡‚€‰|£‚‹ƒ{œzƒ…|Œzƒ†‡}‡„‰|y€|‰ƒ‚€‡……~r†‡|……„z‰w‚}‚ƒƒ‚€{†ƒ™|ƒ„‡‰…}‹ƒ€†|“w~‰ ‚z€{‡¡°‰m‚z„tyƒ…„j‚“‡~ƒ‹vˆ~Š‚{tƒ…q‹‚„{{†‚x‰…{‰‚‰ƒ†…ƒ‚{|ƒ‚…~|ƒ‚…„‚~‹†€…|r€~~†ƒ†}„ˆŒˆ‡‰…w€s~w|z‰{|y‚{ƒ„„|€€Žƒz‚……€{ƒ{€~…€‚‚{‡„€‚~}|‚€…{—………„€v€}{‡rƒ‡…ˆ„„…ƒˆ’Œ‰ƒ~ˆ‰}†}|‚ˆ‰ƒ‹††sƒ†ŽŽ‰ƒ~‰‡—~ˆ‚‚o{Šyv˜‡‰Œz}t‚ˆƒƒ}‡ˆ€‡‰…‰‰~ƒx†…ƒ†pЇ„ƒ’‡‚„„…zzˆ€‡€ƒ€‹‡…}€’€ƒ…}ƒˆ…ˆƒƒ…y†Ž‚ƒ††ˆ†‚}u‹‚lv}ƒ„ƒu‚}…€z€‚€~ˆ†w…}z~‡}‰}‡u…}‡y‚†‹~€y†Œ€Œz„‰…„}ŽŠ~zˆ‰Š’†„‰|†„Š‚ˆ€‡{r}‚{‚t~}e|ƒ{}{€x} †y|}†m€~q`‰„~‚„‚}xq~yjs}…~‚~vxq|qˆ~{†’t‚qp}{||zx‚ƒ‚Iw‚……at|}qx|||‚ˆ~€ƒtTvs{}xy~q|‹ƒP{}oa{}wVš{‚€x}’ƒ„Šƒƒ{ƒ‚ƒ…„€„„ƒ‚Љ„‚„„‡†…‚ƒ‡…„„ƒ~ˆz…€w{rf…„…u‰~‹|‚|‰…|g‡r‚Œ˜€‹z~ƒ…Œƒ~u|…{p}|ƒxƒ€„‹}p„ƒ~†‚‰€~‚€‚†‚„‚ˆzx‰€•‚ƒ‚†q‰…€z‚……r{‚~„‹‡„|‰€ˆƒ‡x‚ˆ‚„ƒ‡‚„†||~„~…†or}€„„‰ˆ‹ƒˆŽ‚†ˆ–‚}y{„ˆ€~drƒx‡}|„~ƒt}}{‚{x€‚‡ƒ}‡†‹}‚|ˆ„‰•’‡~‚|‚…‚|vgqqyjbik`Za{nj‡kc_X‰‚c\nx^jb^hfovi„unmy}i}iLjnq|bk`fbciˆ]nnpe\elhl_cdcciala^yxž]aizoppq‚p‡gq‚ai‚‹‚jotq^|`_‚\ema{I{©p]z}sn|cifgƒ‡‚~€}„…sŠ‚~~|‡€‹~ˆ€‚ƒ}‚„Šxv‡‚‚~ƒƒ€s‘€z†‚€€…}…„‚~|‚t‚yƒxƒr‚‚€‚‚ƒƒƒˆ~„‘…‰Œƒ‚}І‚z€|‰“…†tu‚}€€„~f|€€‚†z€‚ˆ‚qrƒ‚t}}}{z{}}†t€ˆƒ‚}}„…‹…ƒ…Œ|}‚u„€€z}y…ƒx|€}Š|}~}„Š„€|~{y†„€}ƒƒ‚€z|}{„…Žr€€}‚€~wƒ~†|||zxƒ‰‚~zy|‚‘z‚|{‚†}‰}…~~ƒ|€„‡’‚{ƒˆƒ€„n‚v|‰{„{y{‰sˆˆw‡u„‚…|„~~Š‚„†ƒ„„}‡Œ~„‡ˆw…}ƒ‡ƒ‰xw‰|{‡‚‰~‹‹€j„ƒ„šˆo~‰‚…~|€}zzƒmx}…‚€„{|ŠŽ‰†v{‚~‚{‚†‚ˆ‚~€‚|Œ‹ˆ†Œ†x‰‹ƒ‚~€€‰w‚Šƒs…€~}zƒ„ˆ…}€†…†ˆ€†‚„‚„†}ƒz†||ƒ{v‡‡{„„|…˜ƒw~xƒ~„s‡qˆnˆ~‡„‡~{„…‚„‚y€}}z}u‚‚~‡Œ‡‚v€ƒ‡‚‚~{‡‰~ƒx†~…†ƒw„‰‡sƒ‚„|†Š}n„€ƒ„gƒ“€‚lgv…‡œy„~š…†‡ˆ€…‡|‚„~€}}€z’~‡‡„ˆˆ‰ˆˆ‡„€†€Š„‰ƒn~}’€yx…v}Œ“†}Šn†€„r„~ˆ¡t…qއƒ€‰„†|sœ„h‚…‹zx{~Œ{Š€vo‚€w‚€{Ž~€€„ƒy‚œŒˆ”~ˆuƒ„|^”|„‚{ƒ~z~xzyy}Š‚€…‚~…~z|€~Šƒ€€‘‡wˆ{ˆwƒ|€€z–„ƒŒ„}zj~y‡„hfŽ}~‡†}~…o®‚ŒŠŠ††r…Œˆ†Š††ˆŠ€‰yŒ”ƒˆ†‰ˆ}™|ŠƒŠ‡x˜ƒ‰…q†Šy€Ž–€Œ€‡œ…‡€‡ysŠ€„†zŠˆŒ†€…~—‚ƒ~‘‚}‚…œ‰‰Š}Œƒxˆ„†~•‚€†yŽ„ƒ‡“„…ƒo…„‡~Š‚†g‹ƒ…|…tƒ~‚†~|~ql”{ƒ}‰†~s†k{Št€€|~ja~€ƒ€€z„zmƒ{‰}]‚‚„o‚‹˜|ƒ~‚‡‚„u€‹…~wv–Š‚€wZƒ€}~ƒ}x{}yp|r‚o‡„}x~‰~­ƒƒ…x‹}~^hn…z‡€ƒu‹Ž„{…™~…y|€„‹„‚¡}Šˆ…~~Œ€‚}„‘‰†z£|†ƒz€€ƒ~€„‚€Ÿˆ‚ƒƒ‚€ˆ‚€…‚‚…€…ƒƒƒt‚~„ƒ‹‚xy††tŠ{~‚xƒkƒ™€†…ƒ‘snt€m‡…y{¡ƒƒƒƒ…u†}†…‡†„‚ƒy†ƒ‰zƒ‚„„s€‘…†}‡xЉ‡‹„z„††„€‚‡}‚€€Š†‰„‚‚†‹z†„ƒ‡ˆ‰‹…„|‡ƒy|……u…ƒ…Ї††vw‹„~Šq{ЄЇ‡…†€€{™œš‹…Œp‡„›{‹ƒ„…„x“b†ˆ‚‰{‚…†£‡ƒ‚‰{„c€€‚‹’…{’|h€†`qŠ…v˜ž‚€t‹…І†ˆˆƒ‰ˆ|aˆ“‰‰†ok„‡‡„ˆ„tzŠ…„‚y‚{„ƒ‚ˆˆ„~‚|sŠˆ…Š…}‰ÂzkŠ˜…Œr”ˆŽuU˜ƒ‚m„Žœ§ƒ…ƒi„y‡‚ƒƒxwz†x„{s‡h’‹„zly€ƒio‚€„‚~„~€ƒŒƒ‚‘~€…„ˆ†ˆƒ†…“…ƒ„‚fƒf‚y~‡‚„Œˆy{t‡tŽ}’œ‚‚€[i†o|‹ƒˆŽ€‡¨ƒƒƒ€‚‹z†‡€}„€ƒ‡€‚ƒ†’zz‰‰~ƒ„Ÿƒuks‡…|‰‹~€ƒmŠ„|†„‰…€€~…n€ƒƒƒ…vt~‚ƒ~‚ƒ……„~}„~Œˆ„‡Ž~€‹{s€†w‡„†‚y|†€ƒ|†sq…ƒ|…†ˆˆ”„ƒƒ|o…‘pox‚r†™x{~lu€ƒl”my›}|}¥[}€u|Š‚†Œz€‰|{{z}{}tˆzqz…~›‚||~yh{uƒ}}{y|y‚y‚{hŠxƒ†|l‘v‚††|~xƒy{s•Šˆrƒe{pz|j€pk{~s^»~x”…m~}€|€‡l‚‰Ž„ƒŸƒƒƒ€‰ƒ…€y}ƒ‰Œ„„…zz|~ƒz„„ƒžŸ††€ƒ€‰………ƒ€†jƒ…‰‚}…‹r}ˆ€ˆ€…„„w€ƒ…~‚Š—~‡‚~††Œ„‰Š€tzŒpƒz‚†ƒ›s‡‚|p…ˆY€……Œ€­…„‘€}„„¡€„€€x—††f{‚„ˆ„„r’v‚Ž|~y€ƒƒwz‚„z}Œ|…{‹~y‘~€ƒv‘sŽq~~}~xq‡†€ƒy„£–•z‡‚‚Š~…‚~ƒ}‹„~y‰xzz‚v„x„‡{|”u‹|„…”}‚„x’‡ƒw‚zz{ˆƒj}‚…~„|u‚†…„ƒx‚‡~Œ‹…ƒˆ~x„z}ƒƒ{ƒ€ƒ…ˆ†}o‹€q‰‡ƒ~y†u…•‚|“Œ„{„‰zvЇ”ry†„~z‡z€‡z~…Œw‚€ƒr{„t‡’‚ƒy†€…Žp{‚‚‡‡}uw‚}tƒt€ŒƒŠ„ˆ‰|s‹|ˆ€„‚‰Ž„z{Œ‚~q‰ŒˆqІxšŽx‚x€k~Šu„†…zt’zli~…‰…‹m–|‚ƒ‚ŒŒu‰†‡klƒ‚Šuƒƒ„uw‡ˆx~}…tˆ„ ~…‚…†‡|‡‰y€„|‡†…†zqŠ~~ˆ€Ž‡†…†ƒ…€‚‡………ƒv‚~~j€€}€„…€€€††„„‚{‰…ˆ~|z}~ƒƒuŠ…‚|ˆƒˆ‚„{‚sŠŠ†€„ƒ‡‡……ƒw{ƒ‡wˆ…{|€s…†{~{Œ†€ƒt†„ƒƒ†Š}}‰……‡€……„yq€†ƒz~|ƒƒtp„jƒ~qZ~ƒ‚’}„Ž‚si„žrz†~ƒ·{yk‹u†€z†‚zv~€t„€z‰‡}‡‹t†”…ƒ†‚‚Àx\‚†€…‰…Š}~ƒ]‚…}…‚\‰Œ’†ivgzqƒ~•€Q…o‰‰zsZL:‰ˆg€‡ƒz<–ƒ‚‹{{…œ‘„ˆ„‡…~ˆqƒ‚qƒ€xx}o…†e€‡†z‚…Uw†…‚Œƒ~‚ƒ…ƒ„€†ˆ|…ƒ|oƒ‡ˆƒ††‰€†…}ƒ~}‚†‚™{~€ƒˆv€‚ˆ‡v€‘Šr„ƒq|…wƒx|…†Œn€—„†„aš‡~Žx|„‡y„}†{ix‹„|ƒ…{†…†††‚†…‚…†ƒu…‰„††‚‡}z|y~{‰‹xv†}Ž‚Š~~ˆxŒwx‚‡…Šy…{ƒ‚|Їt‡y†ˆˆ†|zˆ‚}„‰†€‚x„„‚|‚u…‰z„ˆ†„‚y†{xƒ‚}|„‚ˆ„„X‚…œsŠŒ‚‰g„‡›wƒƒ„‰{eƒy{‹‡{ƒ‡}„t„„†i\|ˆ„‹‹†€€…€„‡€†‰‰†mM‚vˆ‡†oŽ€rƒ…†€‘‰‡ˆˆ…†Š}}p‹‰’…~†ƒ„‰ƒ’„ˆƒ~w˜€{}}ƒ„†¦†šr‘—†‡Oœ€‡©|wu‚ˆƒ~„‰}w‡Šƒ‡‚~yƒsv…ƒ„w„…‡}|‚€z‡„y}‚{ƒw|}vƒ~y‚„}…ƒ‡{ƒ…zŽw~y}~}|gx‘ƒˆ„€ƒ~‰‡py†{xv„‚ˆ~‚‚}|‹‰€Š~ƒ‰w‡~}–‚~}ƒ…x~|‚|•Š„‡st‡||‚}g€uŽ……‚~‹€”Œƒ‡ƒzІˆ†€‰{ˆ‚†ix„™‚‰y{qz}|zƒx‹v€|q€†}Šˆ‡zƒ€|”}„|„zƒ€…nŒ†ˆ‡„~†xƒˆ‡…‚ƒsŒ“}„…€ƒ’p‹~t€†€~ƒ€…y}||ƒ‰‰{ƒŽq|‚ƒŒ‹ƒ€ƒ‚…z…‹ƒ‚ˆ†‚‡€…s€ƒŒ„{Žo€}Ž’Žƒ‚„„„…s‡ƒ‡s~†‡}}†‡‡}‹z„ƒ‡ƒ†ƒŠˆ†‡”‚€y€sz‚‚zx‰Š„‡~†~†‚‚ˆ…€zˆowŠu~‹~y†ƒšpƒ†„„š‰v„‹€Šl„vxzƒƒ€kY‡”ƒƒ…ˆ†„}y€vxˆp~ˆ}t|¥g}€†…€„˜€{ƒ~o‡†|†…‡a|}ƒŒ|‘lˆ•q—nŠotƒ„ou}j¨m‚‰¤q‚…«upƒ~Ž|††t{yp‚‚zvn‡ƒ|t†ƒpx‡v‰xƒ†‚„v‚yswvƒw‹pm{…‘z€‘mu{Œp{‚|yytsyq†‘qo‚„~~¤Š„†ƒƒˆu~†|||„”~…mvh‹~€‰xЇ‹s}†z}|w|nw‡ˆ~|‰ƒŠ{†‚…Œ|ƒ…‡‰‚†‚€‚‚…‰‚€‹ƒuƒ‚†‹„‚zŒ|‹|…ƒ†‰x…‰z~…~~}|z†„†ƒ}…ˆ~z„‡„‡“~}|~~|‰~€‰„ƒ~†…†…ƒ…€‘„‰†€…{Š}‚~‰ƒ{Œ‡ƒ„€yƒ|{‚zyz~€‚w…‚z{„ƒ€‹}„…zŒ{}‹yƒ‰‚ƒˆ|~ƒ~‡…ƒy„~~ˆ{„‚s‚‰…‚ƒ|±ƒ„‰ƒ„„ƒƒ‚ƒ†{„€~„}‡Š„~„…~oƒ‡vm^„˜‚ˆ|}}nŽ~q„‚‡s{}x}ƒ…ŒxŒ‡ƒyƒƒ‹‡ƒˆ}…™{t†~„~…ƒ†„Š~„ˆ~†}€†„ƒ€~Š}z{z{Š…Œ†€€…“{“~ˆ‰t‡…{Š|Œ‘x‡„|‰w}€„ˆ†‚~{’€„„{œ~ƒ}xƒ€~z”Šw|ˆ€€†€‚{z‚†Š€€|‡€¤Šu„‹itƒ„‹t„~‡sƒ‚’…”…mƒƒ Ž„‡’y„”€w’ƒt’x|„ƒ~‡ƒ†ˆ†…‡†}j}r‚{‚u‹…n”†…ƒˆ~‚›ˆˆyˆ‘މޕx‰Šn‰‚}o®Ž_Qfƒb…¡‚ˆoŠˆ—Ž€€lz€=j}Š…‚—„pŒ}Œ„€|t…‰}…€—„ƒ†š„‚{`ˆ~Š‚x”†‡­t~|y}…‡„£~x’bƒ„†l‚p|£…{†…’‚ˆ‚€nކƒ|ˆmŒ†‚€‹‚³‡c‚„|x„™‡{„š™z€„‚†w„Œ|{k|„‚s„€‚‚|y„ˆ‰~ƒu}{€~vƒ‚€„z~‚u„‚d|†~}€|~}g‚ƒwy„|~z{‰|{~vk~‚|®€‰‚z„ƒ€€}€n€{}‚†…†‚“~}~}u~‚‰l{…ˆy‡|‹€zŒˆt‹Š{€„Œ†ƒ…nw†ƒ„„…yŒ€Œ{{ƒ†…‚€ƒˆvƒƒo‚z{…ƒ…xˆˆŽ…†x‚‚Š‚†|€ƒ‡ƒƒ‚€‚{†cm‚j†‚ƒŠ…”„ƒ€ƒƒ†€…|ƒ˜~Š…€ˆ‡ƒ}€ƒv„†~‰˜„…Š„†‚v€‰‹€€€‚…އ…ƒy˜†‚‚ŒƒzŠ•‚s‰‰y†‡‰€oƒ{‡…ˆ†~†ŠƒwŒ‹ˆr‹w‡{‰ŠŠ†~|Œ…Š€†€|……ƒ‚…†‚‡‚z…‡s}w‹y~s~Œˆ}…‚yŠ…f‡ƒ~}€ƒ„……Œ‹†v†u…vm{…}Š€‹zy‚‚ƒvzމ„}…|ƒ‚‰w†ˆ„~…fr…pˆŠ‡†|Ž€|ƒ†‡}ƒ„‰‡ƒ‰}‚‡€†u|}€€…uƒ‰}€†Š‰t~~}ƒ|ƒ|„Š}ƒ€‰…‰€…gƒƒˆƒ‡…‰ƒ…ˆ{}ƒ…‹…}ƒƒ€†z„„„€‹}’…ˆ€‰ƒ„ƒyˆz’~‚~ƒ……†|ƒuoƒ„v|Š‹‚…€‹‚‚…‹Š„{‡‰{„……„„ƒ…{ƒŒŠ€Œ‚„mqr‰‚‚ƒ‡€„v„ƒ}„‰g…wƒ‚„„h‚„|ƒŽ‰Š‡~}‚ƒ„‚‰|~Šxƒ~„y‰‰†ƒˆ„„„ƒ†€…‰†ˆv†„…І‚|}‚{‚Œ„‰…††ƒ‚~„€„~ˆ†ƒ„||„{~†ƒ…€“ƒ€‡xƒƒƒ{Љ€{~„zƒƒuy€ƒ}ˆ€y‡‡z†o€{|…„†Š‹y‰€Œƒƒ‚w}„ƒ~‚„‡†‰š…‹ƒ|y††Œ~~‰‚†‚„„p‚†‡ƒœ~ƒ€‰†„€ˆg†„y…“uƒ‚‰„{ƒ†|w~ŠŠwˆŠƒ`…‰p€{ƒ‡‚†‰ƒqv‡f€‚€zš‡„‰€†††p‚ƒ‰„‚‹ƒƒ|xˆ†‹x†~ŠŠ‚„Œz|“ˆƒ~„y……\|q•…Œ…†‚t‰„£‹‹†Š|ˆ„~z}„vv‚‡‚„‚y}‚ƒ†‚†‡„ƒŠvŠ‚…‚††}}‚ƒ}‡~‡ƒx}z‡ˆ‡vy†‚†‡‚y}~}„‡‹†so…Žz„ƒ‡zƒyƒƒ€€|~x}……ƒ{‡€ƒ‡†ˆ‚‘‰|‚€…‚Špz„‡€~…„~Šˆi‡†„ˆ‹Š„w††p”ƒ‰†œ~¯—~…€Œ…}t‚}…Šx…~ƒˆˆ€x~†~‡Š†‡j€ˆŽ„—…†€ŒŒ„Š…†‰…‚…}…ˆ„ƒŸxuz„ƒ€z…Œz€ro«‹Žz……Œ^‹‡ƒ†vsƒcp‚…ow‘u}¾‹‡€}ƒ„}z–‚i~‚‚^†‚‡€‡…€‚}…‚‡‚……{~‚ƒt‡‚‡ˆs‹yˆvŽqv„’y…Œ†vœ…}}„Œ†~s}„¨y€‚ˆ}…nn¦‰yˆ|†‚–‚{„‹‰{‰‡†Š…†‚€ƒxz…t‡‰z{ƒ€ukqƒ€†‚|‡~‡††|…„‡x„€u‚‚„ƒ{…Š}…„„‹|“”}†{~…}~~‚…y™{Š‚u„‰„€{„uˆ…q…|t„ƒ~n‡}‚n„‡‚†‹|‡w…€{w~„‚o~‡‘ˆv˜‚†{‚ry‚ƒƒ†}‚€€‚†‡}ƒ†‰l~†€†w†ˆ†„…|††…Š‚z‚}‡}‡~|…|„py…‰‰€‡…{sƒˆs„{€Š}z~ˆux‚’‰Š‰Ÿ•€|††~„…kƒ|{y…„’‰„ƒy€‘~Š‚‰”‡’|††‚~…}s‚~}Šr…ŠŠ†‚–x‚’„|†„Œy‚|n‚|†‰|†yŒ|}†…~zqˆt}‚‰’…rd‡‚…‹}€r}h„Švm‚ƒ{€ˆ]†|ƒ€{zx„‚‡€~†…{…‡†‚w„{†ƒ„ƒx†„„†z„ƒ…ˆ‘…ƒ†††„…†”„†o…ªy„ƒ‚‡w{€„~‰‚€wˆ‡ƒ€š…‚~s€‚‚‚ƒ}‚‘t‚…€x~ƒ†€†~„ƒŠƒƒ~u‚‚‚€ˆ‹„ƒr{„zŠz‰zƒ~‚~ˆƒ„ˆw~‚…li…„}ƒ‹}€~އ…ˆ‡tˆ€t~€z‰T‚„‚‹‚ˆ€s‰Šƒ€}||‹Œ‚ƒ†‡ƒ„{[t€†k…w€„‚…„x{„dz}…Œ…x„r~p}ˆ‚…„{€“†’}€‘s†•’‡}vˆX’…€…„„‡‰„‡Š‰ˆ„…€ƒ†~„y„„„‘{†…ƒ‚‚€tƒƒ¯‚‚…„€‚†‹‚€‚€|Љ…~–oƒvˆ~ƒ|†‚~z}†u…†„€„‡„s†~}‡…~‚Š„q…}†‚‚™‰x}ƒ|„lŒ}‘}}‡€tuƒ“‹‚tv~ƒƒˆdƒ„mš¬|ƒ}†ˆ€ƒ…‹€|›x„„†††ƒ€€qƒƒ‚…„}u€|ƒ€‚„ˆ„}}‹~u}~„|~€Ž•‡Š‚€}ƒ‰|€‚€x‹‚‚|‰w}‰Œ€‚€„†ƒ~‚‚‰„wš†y‚„ƒƒ†‚…w‹ƒƒ‚€…ƒ„€ˆ~Œx‰‚oy„}†~†y††ƒw‹}„„€Š„€ƒ„x‡‚ƒƒƒ€ƒ„ˆ…{‚…‹€…€‚†€ƒ}„ƒ{sŽˆ…‚„€~~€„„†€„‰x|ˆy„d‡}‚‚ˆ‹„Š…y‚{~|y€†€ˆ‘†uƒ}‰tˆ„ƒ†~ˆˆ„Œ‚|}ƒ~‚ƒˆu†‡vˆƒ‡}…ˆ~{ƒ€‹}~‚astyƒn„s…w“‚…‹„~€}–aƒ„y‚’„ƒ‚„‹‡s‚ƒm‚…€€‡}}z‚ƒ„‡„€‚|‚‰€Ž’€ˆ…||†‚€„~Š|y‹{€~Žw†’‚’„€}wž„‚‹q|ˆ€ƒ”Žƒ„…€Œrƒ‚„ƒƒŽ…„Šv€…}}£|€®…‚“w…{v{€ƒ‚‡„{‹„‚Œ€…€…€~z‚Žƒ„‚r}ž|ˆƒ…„ƒ…„‡…ƒ†‚ˆr‹††ys„„x†|s€tf}n„‹€|†‚y…mkŽ…ƒ{ˆ~ƒ„yo€„‡v‡z„Šƒˆ~cz„Š„|‚|{r…ƒ|yƒˆ‰ƒ…zƒ~‚€‰„ƒ}x‡~~u~ynއ„……„‚…‚u}‚„‘~Š‚yxƒƒ{`vq‰~}ƒ€ƒqz{˜~~~‡…ˆ†‡z„rzzr|}|w‡t‹€}‚‰‡“ˆ…u~‚~}ƒw}{m‡‚~o€€|~v_‡_}„{|‚‰t}€k}t|w’›}y‡•y…x|{~t{ƒxz‚i|q|}|ty„•e{xzxt|z€€v€py„‘zz¢}z{p{„ya|††muO|j}{~|Œzn_id‚|k{z|zQJU|~†€woˆ}}|z„‚x|yv}€}z‚u‚‚z||‚x{nx—{|ƒ„|zz„y}|„w{…|{vz}yz}r}~yw|“zv…y{z|x|z{„€|x}v…u~{‰|x‚yw|€|y{r‰ƒt}ƒz|yzotwy†xyxx_…ƒw„~}‰w‰u~ˆ…ˆ‡‚u‚ƒU„Œ‡Œ}c‡r|}~„€•U…r¢{z‰‡‚‡‚®ƒ„Œx{€tƒƒƒ„„‡†„„ˆq†t†Fqwˆ…‡ƒ|‰xoˆ‡Šxˆ†‚€’pŠ…ˆkކ„~‚“€—=‚`…‰}ƒŒ²u †„ª_tƒ‡³“„ˆ{€ow€syzz}ww“o~€Ž[w`}|„}~y‚n{{bžz{ª~†dozx|zƒvf}uš{~zzŽwx€„yzzx}f}~suz|zur‘fwƒ}u}^a‹nW†[zsay|vrjSyNyy_k‡wm\šp|{‹“„§‡‰ˆx†…q†ƒ•ˆ‚І‹…—‡†‹ŒŒÈ„–tƒ†{€‡]~¬ƒh‚Š‚…ƒŒ‡‰€|‚²‹…v™~›ˆ‚…ˆƒ†…€l‰†–z‡€_ƒvƒƒ‹†…~ƒ‰yƒwŽœ‰±‚p{†‚ƒvŒeŒˆ„–†}}Š˜…ˆ|x…|††€‚€y…‚…€†…€ƒˆ|}‹x€‰‰†z|†}ƒ€w}‡Š}|z‚ƒ|z~z€}|}…€~ƒƒ……€€ƒƒ~~‚u~Š‹„‚„‚y…zq}€‡x‰ƒz‚‰…|{„‚€{]s„Šwˆ…}€†Š„‚Œ‡‚†‚††l‚|…uˆ{‚—…†‡‚…„‡¡ˆ‡}}„{|x‰~Žƒ…ˆ„{І}ggy~|‡‡u|—†‰ƒ…‚‚Žr€Š……ˆprx‰x‚~•Š…‡sŠsˆŠŠ…ƒŠƒ|†{€¤€‡‡†€’އ„r‚‡Š†~”~z€‡…ˆ{‚ˆ~‰„Œ‰y‚†}††€‚ƒu‹‚€‚ˆ…€†€†z„…}€‚‚~†‡†ˆ€„†‡†„u†€~„}ˆƒ‚‚~ƒ€‚gn†|‡~†‡Ž…†‚‡ƒ~y„~†€ƒsx€{ƒƒ}†„‚‡‹~}‚z‡„ˆƒ‡ƒux€‡€‡|Іƒ†Šp€|ˆvŽ…‚v‰z|‚}†ƒ„r|ƒ{qfw~„sqf‡g‚Šˆe}rq‚yŠˆŸˆ©€}‹zŠ‚‡y„v—~}|tˆƒxŒ‰ˆ„{‰€n……k|~„†}‡žƒ~…|‹~……€„€‡|‰}ƒ‰‚•‚}œz‚}„„„}’‚…z~z€ƒ‡z€z…„…‘Œ‡…ƒ~‚‡ƒ‚ƒ€}„‘‚ƒ{ƒ‹…Œ”ˆ‚†|}‹x‚„€{‡„‰ƒ„‚y}‚‚|‚€ŽŒ„{ƒ„†…€Šxzƒ~„„’ˆ„‚|ˆ|ƒ‚ƒ†‰{‚vvw‹‚|zyxy€€‹~}ˆuy…~s{„‚u…x}Xtz€Ž}|}}~uw{y€{‹ƒhxx~z‘z||z|y|z•…~x}‚yˆx~„{|~‚vx~†~‘}{„‡w‹yvt~}xmz„wƒxw„{‚y‡sux€w‹u…ˆ‡{€Š‚†z…€€|„„Šu{ƒ{„v}~„€‚„ƒ|€‚}|x|ƒ„yƒ‹|}‰ƒx‡}‡v}…xƒŒ‡‚ƒy|}W‡w€~…‚wxˆ†€~€xˆ†‰‡€‡~‚‚€€yv„„†ƒƒ„‚xŽy‚„€z~~}‚}…{y{‰}~™yxz}€Š{‰{ƒz{|~z{ƒ~ƒ‰{ƒŠxY}}~yxyyyxx|y~€…|z{ˆ{…€vzz{zz„w||}€„}}‚|‚z}u~{~‰€‚‚„zw|{yy}y€z~{‚s{z~shc}ƒ†zv|iƒƒ€€‹ƒ}•’~‚~‡{¦†‡{ƒ£w„ƒyyw†‚l‡€…b‹‚€•x|~‚~ƒsƒZƒ†|€‘”~…„|…t‹œ‚~y}‚Ž„ˆ}|~„w޹|vm“€„~…r~„‚µ‹`…x|€tzv“”}–…‚~‹Š…„€ƒ‚r}†„Ž‚‹}„€ƒ”ƒ…„…‡k|ƒ¤q}{ƒ”…ƒ‚g—‡~~†ƒ€…‰€ƒ€~•ƒ—†‚‰~z‡o…„„Š„„„”„“‡{~„€ˆ‚…~Ž~„„€~Šƒyuy}w†™‚ƒ†y„„©}„€uŒŠ…‡’5ƒ‡„‡‰ƒ„€~†|€„……‚ƒ††vzv€€’~‚}z‚€y‚{ˆ‚‚†‚„}…{{}}ƒ{‰}„~„€€‚†|€‰{€{xs~Š€€€}ƒƒƒ‚ˆ„}…€~„…ƒ€~€€€‡Œ„‚{ƒ€}„~x•……ƒ…|~~|ƒy|ƒ†‹‰‡“}‹‡Š{†z˜˜„yŽ€K~„s€¡m{…xˆs‘s†‚ˆƒ†……}…–~k…‡€…}~ˆ~€‚„‚†|„†“€‚}{€Š~ƒƒŠ’–yp~[x‡Œ”‡ƒ…}‚Š€‰‚nˆŒ~€w~mŒ…n}‡~ƒ€‚{}€€s›}jvz}~|^{yrowzy„x„‹n‚‚s‚‚‰~u€ˆz}‚<„}~g‹”iƒ}{ƒ€„|€{ƒ{sƒ|†}„czƒ‡}„|މz}—w‹„|€‚Œ„}‚k’xŒ‡Š„}’f~x‹~~|s†…‚ƒª†s…„…w~‡…ˆ‚…q„…„{{~w‰~‚ƒ~ŠŠ„t†„~„Šx‚„Ї‚†ˆ‰€…‹Œ‚}n|Š‚„€…t‚u‚ÿ…‡w~‰‹zŠ{Œu|……t‚‡}€‚‰‡ƒƒ}|k‚ƒ„m‡{r‚ƒˆ€|{|š†€…„Œy„~…މ††}Ž€Ÿ‘“‡„“‰–…‘“n„|}‹z{º€•‡‰†‰…ˆŽƒ~³ˆ…¦‰wk††~€~‚„‡|‰Z‡v‚€z‚”Ž{…ƒ~šbr…’xQr|ˆ‹‹Žƒ…~ Vu‰†rjˆv^—e‚}y„|‡„|Š‚|xyw€{~„†ƒ~|‚~z{‚ˆw€€{‚€}|†v~n}|t…„xuwu‚uy„}€…~„zk††ƒ~€‚~~}†t½…‚~‡y€|„k|{€ƒ…xx€…ƒz|~yyzz€ˆx{|u†|}‚‚‰…~ƒ……ƒ‡~w~~Šˆ|Šxˆ˜€ z~˜€m‚ƒpQyz‚|…~qL…|sz”ˆ~‚ƒ…‹‡‰ƒ”†„T|ˆ„v€ƒ„~€€…„€’ƒw‘…z€‚rp„|†‚dx‚oo¼^‡{ƒz~…l–€•m‚‡b~‹¦¼ˆ€†v‡spv‚{„†|ƒ‚v—„Šfw“}ƒ—‹„x‡‰„Šw†}š…‰€‹‚{r…‡z‚‰†‰€‹¬€›†‡‰}zƒ„„‡…ƒ…†‡€†ˆ‡†w„‚ˆ~~{–†„†ƒˆz‡‰ƒ}‡yznx†œ‰††zcƒ|vˆ„s€y•¢†€‘‡ƒŒˆ…zi‚~‚‰„jŒ}Žw‰‡…ˆ€Š„ˆkŽ„u‰’{t„„€yz{‚Œp‘€{r‚‘†ƒ“v„†ƒ€‡†w{{q‚gzˆ‚jމ‚†‚†‚x‰~€†ˆƒƒ„†”k„€‚q}Š„ˆ‹†Ž|}‰‰…‹‰|}|r}ž›‚ˆ„ŽŽ~b‡…€…ƒqv}Ž…‚ƒˆ€}v„yªmsˆ}ei„€€€‡†‡ƒ†ƒx€gr€m†€`~kŠ~„ƒ„‚†‚‚~„’t{‚|{…uš†„yƒ~Š}n‚„……}d‡’i£}£—„€~²zz€{Šƒ}~‚ƒŽˆ}‚z”…€~q†€ƒƒ‘|„…”…ˆ„Œ…{‡„‚„€†~„~ƒ‚|…{„~€€€wˆ~„‡ƒƒ~}up„t€„}yˆ„†‰|‚}‹|…‚‹~ƒ~ƒ„Š‹t‡‰‚~‡~x~…x~€ƒ‚†}ˆƒ‡v†~zŽ{…‚}ƒ„‰‡€‚„{…~„‚†“‚™}ˆˆ~{‡…m€sƒp„„ƒ‚}ƒ€‡‚ƒƒ†ˆƒƒŠƒ†ƒ„~€„‚–~sƒ‚‚†{€‚€€}’‚ˆ…|……‚ƒ…ƒŠ„…‰‡t‰•Šu„ƒ„‘~~„ˆ…ˆ~}y“€Œzƒ€|~„€r€…ˆw~\y™|w…˜¤lƒ{~~|x…j€~|x{…~}{‡{Œ“y–‚}|~‚uƒ}}~yz€|„y}Š}s|{{€s{‚œ~{w{~€t}‘†s€Ÿ€tx€ih’¶€}~Œj{}‚™Œ’}~{„€†‰€‚w…}„~„‚…ƒƒ‰k}ƒ‚{q„Š„‚~‚…y…‚„†‘€‡‡}„|mt‹x‰€~„‚‹~‹‚†‚ˆ}ˆzƒ„‚~f…‰„~‡…†‡ko}…„}…Œ‚}…|„†{€Œ‡…€|vˆuŒ…~†ƒ€‡ˆ€}z€}ƒ‰‹…ƒ€‰~‡„„•~„q‡ˆƒ€v~ƒ„Žˆ‰„€…~y……‡Š„ˆƒ‡‡~…„€…v‚„ƒŠƒ„x‚„„w}u€|w‡ƒyz‡ƒ‡r}…Œƒ|‰y€…‡†‹‰‚†‚…ƒ„ƒ}‡ƒ€‰’|t€{~}‡‚‚}Šy}‚w[€€~r€‡^{|t“{o|‡rƒ€[|~s„tuq‰€£„€|„u|}ƒxzh}tx@~zx‡m{]t}‚w€m›v~aryz}”n}x‚`xzwy~|t£i~t~{€ry†–|~ve€šlpw{z„~ƒ„‚‹…‡ˆ€„~‚€‚{ƒˆy……ƒІ†~„†…y€ƒ€‹‚ƒ~z}…„z†}€ˆ‚p€€v†z{{€~„ƒzˆ~‹{~|ƒƒp~}†}q†Šl}xƒ|{„†Œ‚…„ƒ„†|‡€†Ž‚ƒŠ…„„‰‚„‚‰|‡†ƒ†„~…v…Œ…q{‡‚|s„މ|ˆ†‚ƒ‹~€•‚Ž‚€€‚t†ˆ‚uŠ~…ršƒŽŠ€{’ˆ†u‡Žƒ†€z|‰tƒ”ˆƒŠyˆƒ€‚”˜x…|†ƒqŽŠ–{‚††‚‡‡„~Šv}ƒz{ˆ‚•—y‹„y…ˆ|‚z€€……”}y‡ˆˆ‰‡„l}ƒcŒƒ€€}yˆ†ƒ„…‡„‚€†l†‚†Žw……u}|‰ˆƒ’Š„ƒ€‡ˆ…‘z€‚…‚v‡z…ƒ†’‚€ˆ}†~……w€š€ƒ}z{„‚‹‚ƒy‹‚€‹…xˆŠ„‚ƒŽŒ}ƒ„ƒ|Šrsx…u„Š}ˆo†x{ˆ€†…„‚ƒƒƒ‚€‡‡~‰‰—„‚ƒz‰ˆ|‚‚‚‡…‹ˆ‡‰kŠš€‹ˆ‡r‡uˆ†{ƒЇ‡}}{s‘€y–{v„{~…{€†€wŒŠ}ƒƒ„„ƒ‚‡}ƒ„œ‡ƒ†€…„”v…€‡ƒz‡ƒ‰…z}€|‡g~ˆƒ‚wtz‡}l~x‹yƒ‚ƒv‡†w†‡‚xr…w„x€vƒmch{v}ovb€u€€tsy‰}s}}r‚yn|r‡tM‚q‡¢{|}r…ln}vj€}q…„zzƒs‡q|lqƒ~ƒu|qwx||~‚}{zŽ|„‘€Š‚ˆˆ}‹~ƒ€Šˆ€‚v“‹|€‰ˆ…~w€……|~…‚„‡‹tuƒrz€‚lŠ‚„„ƒ|„u|y‚v~ƒyŽ„‚q†ŒŠ†]}s‰y|t…†o…„~‡ƒ~‰„ƒ„yzЇ’•†}……€‚wys„„ˆz†|x‚{w€Œ…{z~Œ‡ƒ|yw}}‚†v…Že~‹~…x†ƒ€‡~x„„Žœzƒzzz}x‚ƒy||y§|{€„}€k|~~~wy„|Šzy†‚t‘}y‡}{†|wƒ…š„€–Š€”–|{|{m~„‚}|Šˆ‚“„œy~‚‰}‘v„‡€‚’‚‚ƒx€}„ƒ‹‡ˆ‰‚~ƒ~‰”ƒ€Ž‚€†€{zƒƒ†€‚ƒ†}†ƒ|€ˆ„„„ƒ…ƒn€‚Œ‚ƒ„ƒƒ}„|‡†‚€‰‚…‚€t…‚€€‰~„z„ƒ{…‚Ÿ‚……ƒ‚‚Š‹ž‚„Ž©„†‚gŒ„‚…x‚ˆ‰d‚r|„ƒ~Ї‚“…~u†€‚‚u…Šˆ‡‰…„„€€ˆ…ƒ~~}€}ƒƒ^‹|†‚„‰…o‚†‡Š‚x”€žkoƒƒ~|‡‚|†ˆ|qˆ€Ž€~s”€~~~„†ˆ‰n”~ˆƒƒ}‚„Œ†‚…‡x„…|‹—~Œ…‡ƒ~„Œ‡w„…ƒ…~†„ƒ‚€‚„Ž~Œs„ƒz|‚Ž‹ƒ€Šƒ€ˆŒˆr‰|‰‚‚…‚ˆƒ{|x€ˆy‚{„|€~ƒ…xs}|w†~u‡‰ˆz|z}y‡}€„„‹‚v}‡y„z~…†‡h€…„†…†‡„yƒ„„“‡€‰‚›“ƒ‡‰™„€‚|£|‚z‚„­r~ Šx~‰€e’†…~u~~£€†y†‰€‚…}„ž†ƒƒo‚xz~€ˆ}ƒ‚r‚Žƒ|x{Žy‡‡‡Œr}€{‘xŠ~\h’s„Œ~ˆ„ŠsŽ¡€Q…›††¡f|€}}{k|z‚zy¨Ž~‚“„{x€rzÛ}o‚}•pw“ly|}{{~x{}‘|z}{z‚zk‚†u|’|z}”€m|ƒ€€€‘„™zm{Š€z‚˜„z||{ƒow~u††d~^|{{šusfXg{€u5—ƒrWvu~|uyˆ…Œ€mh|r†{Œ‚†s…„~}ƒ€}‚‰nˆ~t}‚‚‚‰‡…‹~}‚z{ˆn‡sjšŒˆ„{…Š„‡†€„„ƒ‚Œ…|}r…yŽ~€„Œ‹sˆ‰–ˆŠ‚}€€u{iŽwˆ€‡„zzm|…|~‚||…|‚€xƒ†ƒw…~€‡}~€f‰€…}b‰†…ƒ~…{Š‚ƒ‡„ƒ…~‰€Šˆ}}‘}Š~|„~†„y€‡†„…„„}‡x‚†v‡~ƒtxy‚{€…}‡‡~ƒz€~v‹‹|‹€‚v†~‹q‚…‹ƒ‘•‰‡€…‚€…€˜vsvj†|}kzƒ{oz}~Œtx±‰„~«„„‰jyw~|††I—€„{~w|€~l†y™|{€€y‹i~ƒ|~{ˆ‘}¯{z‰‚o„{‡j~„twx‹‡w‚j|u€z|ŽŸx\m[~yut~zX~~†ƒ†yŒ„ƒ„o‹„oo‚‚€wˆ€¢…„}~†ˆ~ˆfx€…‹}‚ƒŠnw€ƒ…€}„‚‚…‚…~€€€p€„„}‚ƒƒ„ƒ…vƒ¡zƒ„‹ƒzy‚†‡}z€„}ˆ‡}ƒŽÁ~^nr„„…{€€yk‚Ž€|ƒ‚€‚‰|{|x{{…}‰Š‰y‚~Œ‰xyƒ€†wƒ‚w€‚}v~†ƒ‚€……‚}†‹{txp|„z…‰}ƒŽ{Œƒ¢x†~‚{†Œ„~‚ƒ„ƒsŒ{z„ƒ€{ˆ†„…†…}…{zy‚|s„„}}Šy|‰ŒŒqk’…‚…q‚ƒ‚‡Ž„…Ž€ˆx„†‚|„†…ƒ}i{…Šˆwt{yv…Œ||‘„ˆb’|‰n…x‚ƒgfy{}K|ˆw~xƒ„‚†{‹•…|…~…‚„}ƒvi~ji‡ˆ‡†‰Š~~ˆˆzƒ„k‚‘†‚~ƒs‰{’„} †€yŽŽ†‡zŒt‡~‹‡™€Ž}~v„…Š}„‹lˆušŠw†Ž€„‡””ˆoŽ‚‡„}ƒ¡ƒ•…|‡‹Ž‡†˜“`—’u€ƒx}s‹ˆ¡˜†ˆjo‹‚ŒˆpŠ“’qˆ‡‰stvq‡‚†Ž€v“—‡–~zˆyz}‚ˆw„†~|{€{ƒƒ‚y†y„†€‡…p†…|„~‰ˆƒƒ‚z‚|€†ˆƒ‚{‰‚cx{€„€‰„w||||g‚ˆ|„‚…~ˆ‡]w|‡v|z‰Ž„~‚€ƒx€y‚qˆ}€…„}yŠƒy‡t„u|~~ƒ{ƒy}~…~€…s‚†…Š€€…€‡x‡|t„……ƒ{‚†o|wˆ}Œ…uƒ|v‡y~u†t‡…‰‹{}z€}„†…‡‡–€‚†ˆ~„‡}~ƒ‚t{„z|†€†€ˆŠˆ…rƒ~z†‹…vƒ€‰†x}y~~€}z{xŸ€€ƒ}ˆ…„u|€{…„‰ƒ~……€€ˆ“yzˆ‚ƒ~|€ƒ}‚…‚…ƒm}‚–~ƒ„{v{~{ƒˆ}|’y}…‚…{~y‡~y…€}€zys†~’|~€‚vu’{ˆw}†y{€|Œ^z‚v‚poz„…ƒtƒˆƒƒƒ‡ƒ†–w‰†……oyƒt‰ƒy‡†„ƒ€Ž‰‚†k€ƒ†„„†„€{†yv‚…„†„Š‚uz‡‚„…‚ƒ‡~‰€„‚}€‡ƒ…‰‡…ˆ…}€–‡ƒ„†}“‚‡ƒ€ƒ‹~ŒkŒ‡ƒ–|€€€…„¤„‚~k€†f‚Šfru…¹‘~„{z€šv€‰„Š{†^¢“ky|ƒƒ€‚‹xŠ…`„‰††…‰ˆ…‰…‡†x†Š„‚ˆ‰‡„…„‡‡s…Œ„ˆƒ…{‚…L€‰yy|}™ysy“~ńЉƒ†ˆzv‡‹}mˆ‚Š€‰‘Å™n‚ˆ‚{|¥wŽ€~r‘Œ‚sy†‚}…[„‡…yƒ}‡ˆ†„uˆ†…~‡ovX‡‚~Š}~x‚{…ˆ„{}‡y„~‡{Št„„~|}І…‰iˆ‚‹~t{|}‘g€x‹xtˆz~~„£oƒ„l~kzz„~u¡c{}qpƒ|~h†‚”ƒut„ƒ~’‚|u|~ƒƒ€ ‡ŽŠ|©~„uy‚|ƒ‚‚o‡€‡‚|~~~€~ƒŠ‡s†ž{€„~…Š€~‚}ƒ€|…†ƒ„y›‚s~ƒ€…„‚‚}‚‚~„€‹‚f‚r{~ˆ~ƒˆ€Œw~€}‚o€‡ƒ~‚‚‚xxv€}}‰„{¢ƒ}Žm~´{ާ‚ˆ†}švy‚…}‡€~~‰†‚ƒ|~‚{‰‡…†ƒ²„„„wŠ„r€€ƒ‚‚y‚ƒz„…‚††x‚‚‚}‚„€z„€~„t{ƒx‚€‚‚‡h~€~~„ƒ€vy†xio~ƒ‚|ƒo…ƒˆƒŽ†…‚m†…ƒ‰y„‚…z}€~ƒ‚‡………‚{†‡€yz‚ƒˆy„~šŒ€€‚ƒŠˆ„yz„‚‚…„t††‡†g‡zƒ„ˆ~‹†s…|}ˆ}}„~{‚‚‚€~‡‰„}ƒ‡‡ƒ{€‰‹v…‚Ž‚„‡‡k„‚Œˆ{„ˆ‚z‹h€†„~‚ƒƒ†„ƒ‚}‡†‚}Œˆy„y~xƒ{Œ„{„}~•ƒ|{‚†t„…{}t‡‰|rvƒ~€„|€‡zƒ…~„ƒŽƒ€‚ˆ‰††ˆt}u‰„†{‚ƒ”€‚†€†ss…†‰„nv€ey‰z}v‚Š„‡ƒ}{y€€|†€„„Ž~ƒw|…………yxƒtz~n†€‡ƒ…{Šx…‚oqzsŽ}rzqyt{|Ȉ|…ƒˆ{n‰Ž¡r‰~‚€‚Ž‚~ƒ}…ŠŠ„{{uv}~~ƒƒ~t~zyƒ…„ƒlwy|~zv~†v}j„‰‚‡m{‚Œ™‹‚‚‚€€{…†z„t€w}„„‹…™„ƒrˆ‹~z‡”‚y}ˆ„|v‘‡}€Ÿ„ƒq€Ÿ„€Á“‰€}‚‹‡…s„~~„‰{€~}„‡ˆƒˆŠz}‚…y‰‚Žtm{‚†t~‰ˆƒ•ƒja’p‡…ƒ`„|ƒš€…~‡t¬zƒ”hƒ…bu††jŽ„…R’€‚‡…‚‡ƒ~ƒŠw‹}ƒŠo†…€‹„‡t‰„‡ƒ„„†‚Š‹r‹}\ˆ\Žƒˆ“‚ƒ„‰Š‚šœ‡]b£ƒˆ‡³‡Š‰}‡‚-a…‡€€•„‰¤ˆ†…‚—„wŠ‚~ˆ‡ˆ€†‚y~ˆƒŠy€“‚}‰„†€•‹Œw…‡†~‰…y‚‰„€Šz€‚‡‡†‡x†}€„ƒz…Š‹‡…€„‚|€l„ƒŠ„‰‰‚ˆ‚z‡ƒ‚ˆ‡†x„‚……‚ƒw„ƒˆ‡‚‚އt„z™‚{„s}|‡v~{|‚sƒ{……~}‚kUy€}{{€“y}{„ƒ¢ykƒ}ƒ…ƒ‚{‚{{Œ}z€~‰{~†‡z†}|ƒys”}€oŒˆz|w…‚|z€}o‚x}ª€‘}t€‚~w‹†‚{y{xŒ„†„„ut€†„‚‡|ŽŠ…ˆ‡r†‚’}}‚Ÿ‚……Œy|„{ƒ…•{zˆ™ˆ€vƒx{y„‚†„„“|‹~|~€‚…{|zˆ}†…‰|‚wˆxwz‚‰ntzx~~‚{€€™ŒŽy{€u‹„y}xx…w„…z•{†…{‰l‚€~‚€…~ƒ€€{…v~†|…|„‚ƒ‘u}|ƒ”€‚^tŒ€y|u{€t‹}‡€w~~’~‚ƒ|‡}{zƒsy…w}š€}tŠ~}}yƒ€z‚‚ƒ|‚ˆw†ˆ}„x€{vy…†~’€„m}”~q~y~z|€v‚s€~{mu}ƒs‰|~}ˆ†„‡v‰‰v†‰‚ƒ„”‰}v†…a}ƒ€††…vŠ{ƒ†‹‰ˆ–„†~a}„„‡„‰„†pІhx~…€‚}”ˆvz}Œh……„’…|Š…‚†€…zƒ„‰~zƒ‰Švƒ„ˆrr„{~‡ƒ‚†~†~‚Œvy{†ƒŠ€‚…„‚€zƒ}‚ƒ‡ƒŠ‚€ˆy‡‚„}„‰}ƒv‰‚z€ƒy†ˆŽ’€w}†…|Œ€qˆ}‚‡‰{……‘}€y†o~†}x|}‡z‡ˆŠt{ƒŒ…€Š‚Œƒ‰~ƒ‡ˆ‡†ŒŠ„‡ƒ}}‘‚†‰ƒ~ˆ…{…ƒƒ~~€|„€v‰‡‹~{„‚†{z~~l~ƒ…„ƒs‚‡ƒŒ…yu~€†x‚|€€~y‚…}€~€}~ƒ†‰‡‚ƒ‹„y}}}…Œ‚€}ƒ…‚†}‡ƒ{ƒƒx|z€vy~}y„€€ty‚„ƒ‡y„…zq‡vŠƒwƒ†‘ˆŠŽ}ŽŒo†…ŽŒŒˆ‰‡‚Œ|x„†€u„xosŒ{r‹Ž‰sƒƒ‚Œ}¥u‡†€ƒ„€‡z†‚€}v€‹Œ€„~‘‚wu†|„‡oz}‰”‚|‚x…ƒkw€„ƒ}ƒ™‚‹„ƒ†Ž“€‚ƒÅ…wޅЇ„ƒ˜vŠ€pxЇŒp‡o‘‚k…‡|r‹…w‡…‡…{…„†{¢¦‚ˆ‰ƒˆˆ„‰‹Š…yƒƒ†q‰ƒ„v‡x_††‡‹†………€‰‡€ˆ`ˆ‡„kˆ{ˆˆt…‘yp‡z‡‘ƒŒƒ†€’kqJŽ€…¶€ˆ†}•dŸ‹‡€€€|‚„‚~|‰ƒ±…{ƒz‰}–v„€†ˆ†z~}€ƒƒ|„il‚|ˆŠ‚ƒ€†}ƒ€‰€ui„x~ˆƒ‰‚‚…ƒ€ƒƒ………x~~qƒ}„‚†‡„‚sw|‡mzw‰|„ƒ}ƒ‡žƒ™‹ƒv†Žƒƒˆˆs†‚~~ˆˆ††Š‡‡{†‡…€‚„ˆ…‚€…‚„‚€~zwƒŒ„އv„zt€‚ƒ‚‡zz‚y…†ˆˆ†~…Œ†‡|u‡……ˆ{€twt€€…ƒˆxˆ‰††‰~Œ|~y~tx‡}vƒƒ†}~z‡}Ši†‡ˆ|‹„…ƒƒz~‹…ƒ‹€~‚€†‹‡{wˆ€€‚…zwƒ}j‰‚„„y‹‡€|†ˆ‚……†ˆˆy‚ˆ‡…ƒ~……}m~t‚‹`‡‡†…€x…€u‡††r|†…Œ{iw‡‚ˆ|ƒ†ƒ}އ‹|~‰†€‚€„Œƒ‚Ž„|zq‹‹Š†‡}‹†€ƒ‡€„€~ƒ{~€†z}„~‹Œtˆ€‚ƒ{„‚|y…‚ƒƒ‡„€|‚‚…~„zuˆ~‡{Ž„†‡„z{‚†ˆ…ƒ€„ƒ‰~€}€‚‚……‡Š}……£wˆ|~…}ƒ…€‹~†„ƒƒ‡„‡yƒ‚€ƒ…‰‰}ƒˆ„ƒ†€…„‰w‹„}€„„‡}ˆ„y“…utzssnyr…€s‚p‹wvrw•x‡q”|~xzvu‰”j€‚ˆu‡rx{ˆy˜wso~††}„{{}|}~z„|U„mw…‚€{|Šz{|†‚{~oš}ƒˆv’‰}xzqrsrutg’fv|nŽqhw—‹ywz|ކ|…{ƒ{x~yƒ…~…{†ox„‘‚}wzyyr€sˆ~“r}}„ƒƒ~‚ƒ~{…p€|…{‚s{‚x~†hiƒ}~w…„‚t{…}w}Ц{zqŒŠ‘’ƒ‰~k‚€u€Šw{kƒ}€—og€ƒˆ{v}ƒŠyˆq‹ƒ‚†‚„ƒ…†€‚¡œ‚Œ„|…y‹€„vYˆƒ~†z}z‡~z†|‚™…{|„—~†„…{„ƒŠƒŸ}}‰xw~ƒuŽƒ€}}‡~ƒ††ƒ††¯~~‡{‡}‘v€h‚‚r‘}h„Œ‰ˆrxzqx€„|…‚…}u„„~wy~|‚”€yŒ€€ˆ‚}ƒwz||†‚~ˆ…¡ˆ‡Š|‚„ƒˆ{†~ƒ™Šƒyw~‘z|r€†€‚ˆ†‚Œ|z‡‚†wtƒ†||‰„~{…€€€ƒ‚‡…s‚i€|€}ƒƒs|І}…€†‚ƒwq{‡‘{u…xІ‰~„„ƒŒ‡‡sŠƒ‚ˆ~sƒ‰‰}~ƒywyŒ}†ƒyƒ‚„‰‹Žrr…v†…†xˆ‰‰…މxƒ‡Š}„zzŒ€†{…ˆŽŽ‚‚‚€ƒ~ƒvn‰ƒw‚…ƒ…‹‘ƒ†„ƒ|‰~‡€ˆƒ„‚sˆ†‚ƒ„„s‡‡“‡…i‡„†ƒ|Žƒ„„…†‡}ˆ~ƒ{€ƒ‘ƒ{„‡…ƒŠ…‹…|ƒƒ€‚‘‹…™Œ‹…‰†„x…Ž…ƒ‹’wˆ…„Œ‚{…‰~…ˆ…‚…†‚~ˆz™‚ƒˆ€……|†Œ‚„u~‚Šw†…y…Š‚…€ˆ€~‚ކ‡ƒˆx†ˆ€{„‡ƒ‹„…|„ƒ|„…„„u€‡{‚zu€„ƒy‰„xh}‚„{v…u“ƒƒˆ{…€…‰v…x‰Žƒ‚{‹{|€‰„{‚†‚y†y€ˆ‚€‡ƒ€‡|„w…r‚ˆ~|ˆ…†€†‚Š}‚u„…ƒŽ‚€€„€……†ŠŠ‹„Š‹‚ƒ€†}w‚‚ƒ„‚‰|‚y|xˆc‹~†€vˆ€‚Œƒu…‚†Žk†}ˆ˜„‚„‰‰‹€„ƒ{z…†}|„Š„‚‡†€ƒ†|‚Œ‹ˆ{}ˆr†|‚ƒ†„…†}…vty{†y}‡„‹‹zˆp‡~vƒ‹‡~‡‰‹†‚ƒ‡u††…‰€ƒ‰ƒ~~†‚‚€s{€€€‚~ƒ†€€|„†Œ‚{|‡t€ƒzz‡€ƒ€y‚‚ƒ†}†‡‰ƒƒ…„†€ƒs}{„‰x‚„ƒ„~†jˆ†‚ƒ„Šƒ†‚„ƒ€xŠ~‡€|…ƒ‰€ˆƒ{‚€†††„€ŠŒ„}Š„‹ˆz€r€ƒŠ†Š‚‰‚€|€{|€Šz‡~†€Š„€€z‚€ƒ‚†{}l†ˆƒ†‚ƒ‡ƒ‹ˆ…ƒ„„„w‚…‡•‚ƒ€€|v}‰„}‚‚‚‚‚}‡ƒŠŒŒ†Š„ŽŽƒ‹z€y…Œx„ƒŽ}‚ƒƒ‹†€€|~z‚‹„„€‡‡†Š„†„ˆ€€‹€}‚yˆ‚ˆŒ|}}z…ˆ…‹Š‰~‰~}Žˆˆz€ƒ„j~ƒUŠ…‚w‡~|‚†„‡€†|ƒ€Š‚‚ƒ„ŠŒƒ…‡‚y€…~~t‹ƒ‚y‹†‚s‡|Œ‰~•ˆƒ€„‚sƒƒ†{~€€—€nˆ…†dj…ˆ†š‰„|–…t‡—†‚y„ƒ€„ƒˆ„ˆj~‚ƒ•‹†…—;€Œ…„„‡…ˆ‹‚©€}x~€Yž‡‡|‚„x‰‚}»m†h…†‡ˆ~ˆq…t€‚€ƒ‡|œsj†„z„Œ‰‚{Šzjz‡|‚jx‘€wxf‚ps…ms€|‡|…y{…sŒ~sw‚‚§v€z|ls~„t}€sp~x…€€€vwzhytn‰œxr|ƒƒ}yt‚Šltly…‚v}„‰uusš~o|lŠŠ{|qxn„|t~w‚txz~|‹ƒŸyxzv”vq€‡Wwr¯{–r{~|g|}yx†yzrƒ…uqŒ‡|Š€~ˆp‡t|t‰qpnv{vqyp€}~Štu~{w€€y~“…Œ„{yˆw|…wxx‚Їrjznx’x}i’t¤p‘~{{u|†}‘{}~{u€Œ‹}†‚z~€}ƒ†€†ƒ„{|‹ƒ‚l‘|‰ms€€„}ˆ}w˜‚„…ƒƒ†{{…‚~‚€‚€†y†…{‚‚|€ƒ„x}‚|~ƒz†{‡€€}……‚~w‘Œƒ…ƒ}{‰pƒ„p|†uq……}‚†tdžt~ƒ~~zƒ€|~}|{„‡zZ—ˆi|r{~‡tzs„{‹sˆ}{an|y„€{u€€{ƒ€‡¯{l~w}|ƒ”~z}}|…dƒm}}އz|y†zœŽg}~{‚}šŠy~o„€g‡‹„~ž…‚‰{~`~‚‡ˆ‰yv„i‡Ž}|…†…‡†‚}x‡†ˆˆ}…ˆƒ„…Œ„‚Šp€~Œƒƒ‡‡z…†x—ƒ¤‡“††ˆw}z„©ŠˆŽ•…v„‡„Љƒ‹q‚”‡‰˜‹ƒw†‡Šy}…ˆ‘{wªŒ}ƒ‡}¡ƒ«†Œ†ƒ”Œ”¥“‡‰’ŽˆwŒ‰¥‡Š~Œ~‡‘€†}|p“{}€{‡„yŽ~e€Š~”„‚x‡‘{‡{‡€ˆgŠ~†‚…}€}~{€|}r‚}€}~…€{…€|€ˆ€}‰€€€ˆr„}{„ƒ„z}ƒ…ˆv…xŒ†‚ƒ|{k‰}€u}…‹…‹…p‚„„ˆˆ€‡‡~ˆ|‡ƒ„…‡„{}ƒ„†ƒˆ~‚…‹‚ƒƒˆ…„†‰ˆŠ†Šƒ’~‚…‰‚|‡tˆ{}„~‰€†ƒŒˆ…wŒ€Š„…‚}…|އ‚~‚~}€„‡ƒ†‰|†…†„‚~{–€m‡Š‡|}’€~‚}‚{€Œ€u~ˆ~„„†‚‡ysƒ…{x„~‚„x|‚ƒ…€‡€…€‚…‡ƒ„{~x~Š{„}zˆ}‚t}ƒŒ‚ƒ‚ƒyŠv|€†u‹qx‚ƒ‚ƒ}Žw}‚„ˆ‚„†ƒ€†~‰t‡„€‡ƒ‚u‡‰…€€ƒ…l„~„y€ˆ€ytƒw‡~‚‹……}€ƒŠ|zƒ‚„„„ˆƒ‚„ŠŒˆ‚ˆ‘…€ƒˆ|xm‡‹|z……€‚~ƒ‹Š‰}ˆu€•~ux„’{‚…ƒˆ‹{ƒ„u}…Ї…z„~€ƒ†‡‚t„‡‚†…‰”…†~‘Š…€ˆƒ‚}…‹‡‰}mƒw|Œo|‡u€„|y‡~xƒ‚ˆ|ƒ€‡™zx}†ƒˆ‰‚‚€ˆ„x‡‹Œx|„u|‰syx|„‘z|}‚‡~‡…}y¢{~ƒ‹ˆ|…jŠ„‹€‚z|š‚{‚|n†Œ…wˆ€{‹…~~xƒˆˆw‹tw€‡„€s”}„€†ˆ‡‡†„‡„‚w…†Šy‡€„z„‚‚………’Ž„y…‡€‰ƒ€‚}††Œ‚{~ƒv…}€q}Ž|€ƒ‹„”‚‰ˆ„‚ƒ~•Ž„ˆ|…€‘‰Š{…ˆ‹Œ€‘‚†‚„xx{…‰ƒ‡–|ƒƒŠt€}}t~y{x€”€|oŒƒq~€ƒzc†’xˆ…‚}™m~Œht†|ƒŠˆ‡sn}wyŠ„w…y‚|h€ˆyˆŠ‚„†¡|{¨­…„€‡ƒc‚l„|{wuw}€]t“‡‚ƒ~~‘YX|Œnay‚s‚x…„Žfo`q‡„pxŠƒpf…†‚†ƒ†p…o‡ˆƒ}‰~|Œ‚„ƒ~u‚‹ƒ®}†‹Š…}xx‡Š‡}£h‡wƒ€†w„}…ƒ…€…–€†„•‹‹‚‹„‚ƒƒŠ‚‡ƒˆ€€„ƒ„‚‚„~‡‰ƒ~‹~†~}t…{„qq‰’„Žƒ€ƒ~”…Žˆ‚†‹‚‡l{ uˆ}„s‹ŠvŒ}†€}x†~Œ‡‚‚„ƒŒ~~xƒ}yŠ…tŽ…‡Šƒ†zˆƒ…€|…zz……‰ˆŠyo~‡…’ˆx|„x}|‚|~‹rz„~„ƒq€}~~~ˆ…~zƒˆ…‚t‰x|ހހ‹ˆx€“x‚–€|u‹‚‹y~ƒ}}~}‰††zƒƒ{|ˆyƒ„~„†}|†‹~{‰~…}‚}‡“ƒ|€‚ІŠ~~|‡‚}†Œ€n‡€v‰~|pƒ~†rywƒ„‡‡ŽŽ…ˆ}|€zˆ‹wƒ…ƒ‚{sƒ…„‰„ƒˆ‰€„‚x}ƒ‡ƒ‹€…zx…y~y€ƒ€’‘w}ou…x|†{x‡‚€}zy„‚{p‡ƒ|……„{€z‚†‰{€~zz~v|zs‡sv}uƒ‰‚‹ƒ|}‚pƒ~Œws{^zr…ƒlmo‰xyŽ}|‰yx}svˆ|y‰}‡Œ†{‚ƒuuwy€І{Œ„w}‡~z}“n~r‚…“w}†„~~‚‡v€Œ „Ži€§|ˆ™ƒ~{†„b†[“‡€|¯”‚‚y‚ƒ‚zƒ¢„„‘€…‚Œ~†Žx‚|ƒ„}Š‚„ƒ‚f†yˆ‡…}–Šƒx}€{¤}}hs~kd„t‚ƒ›vJ_w†[}yƒˆZe†ƒ‡y|yxsiz}{„ƒ{pz~}}†n¶x…†|| fz—l“r‚~„ƒƒ|ti”€~z{xxw}tsvzu}•{{€¥ztvo~|{y}}zt‚‰}€‘~t|z€š||{wwyƒwc}{pyWsz^v‰z~†bbOTy~rkz|belz|Œ„Šy„€nzu†‚v††z‡…{†…†~€‚|q†ƒt}ƒ…{wƒ‡{‚€|{{…Ž„‚|”}ˆ†€‚‡„|Œu……}zˆ~vy||‡€ƒŒ‹‰ƒ……‡t‘…‰uˆ€|w~‡Žx††‹‹„w†…€|‡‚zw€~v€†ƒ†“}}Yn™”|†‚|‚‚‚{’y…|~‚q‹hz~‚uƒcƒ‚ƒ„uƒ€y”…|†|z‡~q|‚…|Œ~~}„‚}…ƒ}}‚‚}zq…„}}„{~€‡uzw‹Šƒt€‹‡|”z†~‚zŠq^ƒ~ƒŸ…€“vr~€‚€€‚||y€‰€y|}„u‚…~…€†€x|q}ˆˆ}}€€€‰~}z‚|†t~}ƒƒ…€‰uy„€v‚~zzpx~zˆw‚‘…|v‚Œy}w…|y‚yˆ„‚†{…ƒz{|‚~‡€‡€‡~ƒ|އ†uƒz‡…‚ƒ€{Ž€†…v|†††ƒ‡€‚ww|}†„‚Š…†ƒ{|€‰Š…ƒ„|€|€ƒƒx‰Š†zˆ~„€z…ux…Š‹„€„{u|ƒ…‰‡Ž|€„~‰‰ƒ}€„€|}ƒ†…‚†|€}ˆƒz€y„vŠ{€ut}„}~xƒ†„zЇ†“…Šq{„€{€†{u……‹‚ˆŠ‚‚‡zƒ‚…ƒ‡€{Š}‚|ˆ{uŽŠ‹t‡‰ˆ…ˆt„Œ……ƒ„€p“…‚‚|}Ž•‡w†ƒŒ‡qytˆ€x}‡“‰ƒƒ‚‚†s‡zv‚‡{}{ƒƒty†‰u‚‚……ƒ‚Šw•|‡ƒ‘v˜‰’ƒ˜‡s{†€ƒŠ†Žƒ†€w}p„„‚”¥€€„zt|…Œ„‚„’†|€…‹|†Ž}„€u„‚‚yt„oˆ‚{ƒpn•„‡‰}ƒwy™ƒ…†~…szƒ£‘|o…yˆ‹{‰€ƒ††r”|Šz„~ˆ„ƒŠqƒr„}ƒ‚…€ƒl‰…ƒ‚wŠ„…‡…~‚|‚…‡‹~…‚…‹}|y€s…Ž€„s}†Œ‚|…„w…~zƒŠ†}}ƒƒ‚‹Œ‚~ƒ}}zŽ‹ƒ‡ƒ†~Ї„Šy€…€†€…~w„‰‚ŠŒ‰~z}yzrw~Y||„”ªˆ{quy€„~m{•ƒ€‡}¢tŒz‚{}}}z‰sh…yŠ|€o…t|zƒ~qz’ˆšx‡t{{}v}~†‰v…{zvt}ƒq‹ˆ{†|†wjc}}iutm}c~{…•ŽgWiMƒoStNun€w~czŽ–¶€Š€v‹~z‹‡‚ƒ‰Œ|—p‡}}t|„p}s†|nlwƒ~q„qƒ†w‰€‚}†zƒ|}ˆ‚~sx„~‚~{€¡ƒm~ƒXŠ9„‚€¢Œ{~‡‰†}~¢‰j||‡”„•„ƒr€geyxˆ‚ˆ››•€€wwšx†zu{u{Ž||t‡˜~{z†|v|}{\qŠ}hˆ{yŸs}Їtx}uzytzzŽ}Qr~xxy†„sv{nzywŽƒ¤zqYzyz~{ƒƒŠ|ˆnv{…~y€Œw†r~Qz†}|rp‚†aš}x‚e~w‰dl}|z€}ƒr‚“‚‰}ƒwl„zq‚hŒ†‹€}ŽY‡k“„~y‰}…€Ÿ„‹}‚†‡ƒƒ‚„‚‚…|p{‚„ƒ†it_ƒƒƒ€…}z‚…}…‡ˆ†‹ƒƒ°}Œƒƒm‰m𣇑‹šƒ^‚T~€y|‡˜•€ˆˆOs}Št‰†ƒŒ~‘ve€‚„ŠƒƒŸˆ†‡~˜ˆ¯‚€ƒ‚€x†œnŠ}†…xLŸ†~~„†‚ƒ‡…l‡o¡Š~‡y ‘l‡|ˆ‹ˆƒtƒ}€}nw„~œƒ†yz†yon•‚‚„ˆ—c{O~^„‚|¸uƒsVn„‚t€†•x|‚€ƒ}‹ƒ}{†z‘{{{‡}R~|€v‹}„‡€ƒnƒ{yz€€~~~€…~„~z€™€‡Œƒ€€|‚‡€…‡x…€„v€‚ˆ„†…’ƒ}™uz…~yy„‰{nˆ}ƒ„†’c}ƒ„}€||~ƒu~Š€vyƒ†€†{}„Šz„~‚v€†}Œ}~†„€ƒ„‚}|†~{‚€ˆ~~h‚„€…o|~€~‚}€…z„–yw‰€„u|‰ˆot‚z„wƒˆ„Š„……€qx…‡z€†~€†}|‚}~~„{‡x}w~„~p‹rƒa…}‹zuuvŠ}€‡„~ƒ|y|šsa’}Ž™ƒ~h„vzn¤s{{„qzux‰zƒ€w€f…‚€{ƒ~{uuyuE€p‡ŒwŒyš…t{†‡s‡…’qƒ‚Qupxz~\r|{}Ž‚†ˆ{…‰„wy|Œz~|€xyq„gxw‘zyH{„d{‡{Œ~sƒ‚œ~^„…kŠ|~_„–}}cv~z~y~xr€•py¡y}j}x„u{|}yƒzyƒ{}}‰zy‚ƒ€w{|Žwi¡†|mˆUvqza~}}{ƒšt™{}‚_sxmwsˆ‚ˆ~‡‰S™‚‚ˆ}‡„ŒŠˆ€y‚†§~J„„¢Ž‰p‚yo…ˆ„ˆŠqÂs‰ˆˆˆ}†‚‘ˆ†|…sˆg†…‚“‚mš‹„ˆˆ‚ˆ†|ƒ~u…Š‚“ˆŽ…‰u„…r‚oŽ’¬`Br‚Z‚‹…†…”m€v…†ˆk€€‹@f™„‚„d|†‹‘„~q}}|ž{~y€{|a‚‚~‚…™›€rƒ‡‚x||’‚cŸ…~x„~zu‚€}z}j}wy‹ƒyv’}|~‡‚¢‹xr‹xˆ‰†i–…{y”‘w€wz„ZvB~uƒƒƒ‚y~}kw|zsy„…chz}u‹~z‹‰ˆ•‰†nrzƒ„‚f€‰Š‚ŠŠ†~…{~}‰ƒ{‚‡‰ƒ…„Šn‰zƒŽƒ‚zŒt‚ƒ€†}…Žt‡‡…|”‰ˆ‡vˆƒ€‹qމ„~‰z…Œ…Ž€z}ucƒ…‡}ˆ…{‘„}qmt‚‰‡‡|uŽ}‡‚~ŽŠ‘‹ƒ‰‰€‰‚‡„‹ƒƒ†ƒ~€‡‰€}}†‡‚ƒ…u~…€€‡„‚yƒƒz~†~v……‰€}†…l‰‚g†tŠz‹…‚‹‡{zyuz‰|’ˆ‡†ˆŽ…ˆ‰•…}‰}ˆ„‚~„€‚~t„€—€ˆ€}…jy€}‹~|€}m…‰‚ŽŒz‚{Œ…{ˆŠ†ƒw…}…„k‚™…‡}†ˆyˆ†‰z…‚„ƒ†ƒq„wzƒ~ƒ…І}‚‡‰‚¤…„‰‹„‰y~‡‰ˆƒ…‹‰„€y‡~†Š‰‚t‡†ˆ‚‹‰†}nwr{І…“ˆ‹ƒ…€ƒ’_‰ƒ|‹~‰•„Š€€†mox‡{„„ƒ‰ƒw}ƒ„vsŠ^„„ˆƒ„ž‡‹†z†~uŠ…~°±ƒ‰w†ˆ†‚…‡ƒ‚€j†‘‡„„€‚ƒpƒ†„„…ˆ}‚……ƒŽ…{‡ƒ‰w„ƒ‰…ƒ‹‡ƒ‡’|W„zƒ‰‡‡ˆ‹…K†„€x•Ї…sxŸ†‚|~p•ˆ}z{{x~€t‡p~|ƒ–~uuxv}|„x\‚fs‚~uw‹~‡qZ{„l…z„|vys‚v~~u~q|s‹ˆ~zt{u{|rwx…„x•zzuuo|{€~‚‚“~†vˆš{€~h€x‹ƒ‰q€{vt{‚|z…~n{{{€x€Š‡ˆ}•‚{ƒ‚‰~‰‰€ƒŠw|€{„‰sŒƒ~‰{|ƒ{z…ƒ€~€}„Љ›‘†{y~t~‰}yx†v|~‚…}…y€‰ƒŠƒq’z}‚ƒƒu…~rƒ{Œ€yŒƒ}~„€“‚…{‡uƒƒ„„ˆƒv{}…‡€€†€}‰Šˆ…‰z{މ‚}€‡‚Šˆs|{…|„„‹†}†Šš‚…‰€‚‡ˆ„…zv“‹„Šuz‚…ƒ‘‰Š‰‡’‹Š€~ˆ~€Œ‡„ˆŠ}}•€††ƒ{†ˆ…‹‰•‹€„‚|‡‚{v‚‹…”Š‹ƒ†~‚œ‡‡‡™Œ…‰r€‡Œ|…†~„„|ƒ†~{€‰„f€†…„„~{ƒƒ{‡ƒ„w‡|‚‡{…ˆz|{~…sw‰z}xˆˆn„w…‚‰~‚‡xq|}Š—sr‡|„z}‰‚‹„‚|‚‚„{‚n~ƒ†‚‚Šx…|‡……†€x„‚Š€ƒ†€u‰ˆ‰ˆ†}ƒ‚ƒ‰‚‡‚…x‹~……‰z€~ƒˆ€‚z€…xŠ‚„ˆ„y{~Š‚‚wt‰€ju‡x†ƒ}p…ˆ‹‡ƒg€z†€…€vxyƒˆ„ƒ†˜ysƒ~…†…ŠŠƒ†yŒ†|ƒ‹y€‰‡‚„†„Š|„p‰‡„w‚|}„‡~}„‚}yrŠ|~s€‡ƒ~€–‡€vz„‚‚x‡„„–z€ˆy„€}~{Šƒsy|…ˆq}‰†‚‚‚ˆ|}‡mvxˆi†qˆp‹w†€‚€†ƒ‡z„•€~mrƒz|‡kƒ~†h‚‚x}}…zu–“ƒz…}„}›‚uŸ‡‰ƒ€……ƒ…žtt„€~{}€x~~ƒ‚~v~ˆ}€ns}†‚{pƒ‡~yv|~Œo€~‚{€€‡‚€„€~…~}~~‚‚€|z‚€tƒ~‚–€{~~uzy€„„‚ƒƒzv}ƒ…~‚€€{ƒƒƒp„~z~}w‡ƒ~~k‚‚‚ˆ~…|‡ƒƒŒ‰„€zv‡€ˆp€‰‹†‡‚……‰…}€ƒ†€ˆ€œy„|†Šƒy‡x‹…d„ Œƒ†ŒŒŒyt€|……|rw„qoƒ€„sjiІ„€‚„‡‘z‘„v‰„•‚…~{€}„}|„‚…‡„‰u•…ЄЂ‡Љ…zs€|sz{}‚z}|}…zz{|…ˆ‚‚xp……z{Œ}~~x…x‚€}||{™€~‡z|Š~}yxˆmy‚|z}•|‚~‡}y~}„€…}{vŠu†ƒ|y†y€‚€{ƒu‚|u|‚p}e|{}}|yt“az}ykyƒUˆ‘|~}ƒ€Š€x‚€Ž~‚|€wƒƒ}ƒ„€zx„‡~ƒª~n€e{ƒq{ƒeVv€z~‚}}t…‡ƒ‚ƒ~uz‚–‡y†€Œƒ†€‚…~|~…€`˜€x†„ˆŠ‡s}{|•~”„¡†}~€€p†h~€ƒ…€†`‰…ƒ~‚€jŒ‚{}z¢ƒ„}ˆhz„‡yvwr{Šš€…‰Žf{‚}†v}ƒŠn…€††€‚…€†…l~€}}zf„…‚…€…‚…ƒ{yƒu}–|a†~Œ{y~|ˆ‚o_•p}Qk‚{{€mtu£¤|}~ofƒ‚„—ˆ€z}g|ƒzˆ€“yyf‰‡†z–ƒ€w‹i€ˆ„€ƒ„§†‹wŒ{‚y‚‚zRl}‚y|€{~{vˆƒW€£v|Šys³q|‚‚y|„{‚{{†ysƒ~ƒ€‰``‹o}|xRer„tu_‚d|i…~y]s’`†‚M€ƒ†c€R~{{ƒ€‘–†}z‚|‚}‡ƒ~‡§ƒ{Œ„ƒlz}iuƒi‹‚‚Œxxv„†}{{†{„‚ƒ…Žƒ‡ƒ‹~„€‰‚[‡‹‚„„€{†ƒ~…‰‹€ƒq€€…‰€„…ˆw„†wr‚{€†~†ˆx‚€‡w…}i¦}…ƒƒ{…~yqƒ…ˆ‚zŠ†Šƒ‚††€‚†ˆ€Š„…Œ‡€‰†z„„ƒ‚Š}Їˆƒ€†„}ƒ’‰‰…‚ƒ{…‚ƒ‚‰ƒ‡„†Œ~ƒ………y“Š…ƒz…‰}vr|n„šŠ„ˆ€„€‰~ˆ‚ƒ…Ž ~Š€x†ˆƒ€‰€„†}ƒƒxv‚“›‚}ˆ}’Œ……kz}|„z~ƒ}{†z†…‚‹ vy|{{y}}‚~‚„„W{€}x~‡w€|y|{{}‰pyzi|Œ€~‡}…€„†~’„nƒ‰xŒ‚~‚€t€‹s›~}šsއ‚‡s„€€€q‚st€wy{‘€|ƒrz€zum{kŒ|sz€“}€xr‹j‹~ez•€}p†{yy~w~x}xqƒ~‰s}{}fpz||}~ƒuv}}{ˆtq}pwo|xx~z–kxw~}~q]c~|‘sQ{‚wu‰{~hX—|€~…r‚zyŠz„‚ƒˆ„‰ƒ‡€‹‡‡w}……„ˆŒ††‡ˆ‡ˆ€„…Šv‚t€‚|Šzt}Š€”‚…y‘s}Š}y‹…ˆ€~~Šƒ…„e}‡ˆ~‚zv‡Œˆo~ŒŒuxƒƒ‚‰…‚šz~|}„‹€…†•„}‡}…u{Ž‚|xƒu‡}ƒw€¨}€¢‹„~„†s€~r~‡gx|v}„Š€ƒ„tw€„i‚c|†‚†w„„|‡wƒ}|ƒ‚u~…„ƒ…††o‚wj~æ†~mx‡ˆ~y‡|k‡}ƒo‚yz€‚ˆ…{‚w‚oj‚„}†y‚zvy€~‡}‰—y—s|€š}€š_|~}‚{‚…zƒx¡zy¸€f{…vx‰~€dd€~Šw}~zy~jhl||}†ƒ|†}y~~|z|tyjsŽ}~s¨s|„u{qž{~‰r‡v“^‚€‚^‚v©”}yr‰…Œ‘dqzƒv†‚††‰„~„„ˆ|†‰‰|}~¡ƒ’†ƒus…|…{€……x†x‰ˆˆ‰y††‰}‚ƒƒ{‚‹s…ˆ„ˆ~„||‡……„‡…ƒˆƒpƒ…Œ~†ƒ|~ƒ…z‚…ˆ€yq…}y{uiƒ–…І…ƒr…†„„Šš‚„~‚u}ƒˆ€†~zyx†ƒƒ€„q|‚~‰„†€‹‚ˆ{z„}‡ƒ‡€~x†‡Œ†‚††‡~~„‚z„‰‚…‚„ƒ}Š{ˆƒ†„‡„‰sƒ‡‡‚‚’„}ƒ‹‚€ƒˆx‹‰‡}‚‡€€‚wƒ{‘†Œƒ‚…’ƒ„…„Š{{…‰ƒŒ‚ˆ‰€y„„zu{„tzn„ƒ„wn…ˆ}s†€y€{~~„€€Œ†‹y‘Œƒ~r‘vkƒu€u}owƒwƒ††‚~…Œ~ƒ‡ƒ|xr€xzƒ‡‡ƒ‡†††zs„†j‚ƒƒ‚Љ†~y…k|†ƒ†{’†ƒ‚€x‚~€†z€~ƒ‹}~„‚€su{}v|z‚wz€„‡r~z…€Š„…x‚†‰†vƒ‡~~zxr€yˆ„‚‚ˆ‡c…xv}‰†u}du}yw€uš|u‚x|„Ž’v~‡l‰‚…„|„‹Œ„…~|w€sƒ‰ˆ|„{lr„|}ƒyŒ‰t{x}ˆ{†€‚~}ƒ…‚‚€†‚}‚…ˆƒ…‚†t†‚……ƒ~ƒƒ{„‡{ƒ~€†|z€y„z…ƒŽ|‚‚~}„‡€ƒˆ‚y}|€s}~„|~„tŠ…t|‚vƒƒˆyƒ‚ƒˆ„Š„z}ƒ‡…}{€€z{€‰€†„„‚†Œy‚‡†z€†…†„ˆ‚‚tŠ€†z•Š„ƒ‚|Švƒ‚…}y‡‹‡€‡…z‰|~ƒ€psƒ€x€…‹‚||‡…x…x„“~‚v…ƒ€~„ƒƒ|Š…xŒ€…Ž‹†Š†„z„–†pwu“‰†Šƒ|}zt~yƒ‚‡‡u…ƒx~ƒ•ˆx‡‡h†Š‚‚¢€‹……†—‡’|І‚ŒŸˆ‹Š‹‡¯‡š~~‹‹}ˆd„‰‰…{{„„ž‡ˆˆ¡€—€›ƒˆ‹Šw‚£……—Ž”S}ƒw|y“¥~ˆuŠŠŒ„œˆˆ«}›€„{„…’†³¥¼Š‰–Š„{–‡Ž‰†‚ƒ|‡}p}ƒ||††„ƒ…z}€vz…€ƒ}zŒ„~†‡z‚‡‡†ƒ}‚‚†‰zzy€vw‚ƒ‚‡ˆŠ„€x‰ˆ‰‚‚‰€……€‡‰…ƒ|yŠŠ‚…ƒ…}‡…ƒ‰ˆ†ƒ‡{ƒ}‚‡~‡„€€Š{p|‡……xˆ„ƒ„z‚Œ|‡}|‚‚†ƒ…€‹‹u‚y†ƒ}o„~ˆ„„ƒ„‡€€†‘††…{‚‡„‚‡}‚~t|‡ˆƒxzƒŠ…Œ‚ˆŠˆw~vŠ‚‚}v†z‡…w~…‚‚‡y‡Œƒˆ{„„|‘„‡€„ƒ„†x‰‡Š†ˆ„}†…ƒ‰Œ|…‡{l‚…†uz}~|…w‡ŒŠ}‚Œ”‹y†•|wˆ†ƒ•~~yˆ‰z|€ƒŒ‡q‡–‚yw‚€}Ž‚|ˆw€…y}vv‚|…xz†uyžˆ~x‹ƒ…ƒ‡–ƒyuŒ|Œ}{}}~…uƒ…ou}‡‰{…‡~zu“†Š€€Œ‚‘„€ˆƒ~‚zt„€|…£‚{…†y˜•€_{~‚z„~^€††Œx€‰g^}|€}‚}}‚~|„{šƒb…z‰ƒƒ™y‚|~‚€€{‰~ywz~‰‚„u…‚€”zu›Šzdl~zl‚z‚e€ZW\xŠ{ƒ˜ƒˆ…‡ƒfŸ€~†„Œ t‘‹‰ˆ–€†‚„‚Ž•’€|‚‚‚Šˆ„‚•„¤›€~xt‰…tT‰•zŠŒŠˆ–ˆ““wŒ‡ŠŠ}‰†¡—†£‹‘ˆŒ†ƒ‰’y‡Š‰`}Š•’’tyi‘…p‚˜³‰“‹eЉ¾£†‹¥m‰„‡°¥”Œ‹~{’|{}€|‚ˆ‹w}t|w„}~{ƒ{|p……~vy„ut„†|ƒƒŒ€…€v€†„j€~€ƒ{‘„~„z…“‚|„€€x…~‚w†€„wq|ƒ|†jŽ‚v€x~‚{ƒt’…„ƒ~Âl„‚ˆˆ}„‚~ƒ…}Іƒ‚€y†€€ƒz€€€€ƒŒ…}€†‡‚‚‚~}ƒvzz€‰ˆ‚x€w{…‚‹…„x€Š†z}‚r‰}ƒ…„ƒ‚}~‚r|††|ƒ€u€‚‚|…‡€~„€„~€„„…xŠ}}„‡ƒ~‹‡z„Žƒ„ˆ{„{€w“€~€€|‡•ЂЂ†Œ‰„ˆ…‚†|„ƒ{€Š…‡~Œ„Љˆƒz„z„‹~‡‰„|ˆ‚„„‰€Œkƒ€lz…‡†ƒ€„€ƒ{„}ˆz|†€‡Šˆ‰Œ‚ƒƒ‚„€€€‡Šwtƒ‰}zƒ‹‰|y…‚Ž‚y}„…ƒŽ…|ƒ~Œ€w‚}‚……‡{†ƒ}v€„‡ˆ„‚„މ|ƒƒƒƒˆ‡„†‡…Šw‡”~x€Šƒ‹†…{ƒˆy„tx…}ƒƒ|y„‰{x{ƒ€x~‡Ž‚”€…x€|~‹‚‹~€…xƒ‰y‡†~|…‘|Š€€’‡‘„c„Šˆ†x~‹~xˆƒ€{td†‘‰„µƒ‡Žƒ‚m¶|‡xm|…”P††~€rƒ€‚…‹pˆv…†ž„‡„„†˜…Š‚ƒ~ƒ‚‚w€‡uu{ƒ„~‡‚ƒqŠ{ˆz¦|qg›a¬…“†uƒŠx‡f‘{ƒ„x›€Šocn‚„x‚„c|…‚{rІqy„‡Š„{{„x„…}Ž…‰†–…ƒx’‡„¢h®ƒ„}v…Š‚€„€~{€}Ž…‚ƒ‹‚‚}{”‘„~|„y‚|s~}‡„tŠŠ†€ƒw†Œ}nˆ‰o‡–{ƒ™ƒ“ƒ’ƒ‚ƒ€|u…yˆ…oz€‡}ls†‚Š„‚w……wxƒ‰…‡‰|‚€~z„€„„‚‡‡~v……~ƒƒ„…€„~‹€y€}‚x}‹‘io–Š~†‚z……~‡}Š„ƒy}{}Œ‹~€kˆ•|…|†€…ptvŽq„|ƒ…Šw‡…qƒƒ…‹†|€…‰ƒˆˆ†ƒ}ˆ€‚¢‚ŒŒrƒ€‚ƒ{‹‰…†‡Žj„š}‚†„†‹y„w£{~…†‚’„ª„}‹‚€„„‹„…‰‚‹‚™…„¦€u€o†‚ƒˆ}„o‚‰ƒ‡”~z|„ƒvŽ|‡†|…€v€mf„t­ƒ¶ƒ|€††€ku~nƒ…y“}…|gx†}„y‚}„„{‡ƒ‚ƒ€‚Š„‚„†ƒy‹‚†‡|‡†…„€’„|ƒ‚~}‚‚€}x€†‡…€z}Žˆ†…ƒ„†‚€…„~„ˆ†‹z‚ˆ‰„€{‚‚†„~|ƒ€††s}…vt„ƒ„z†Œ€„|Œƒ…uq‚ƒ‚…~p~‚‚€xˆ†„†zƒ¯„ІƒŠ‘~…‚‡}‹}Ÿy…‚wfƒ‡yŽ{u›yŒ‚†¤€|…¤ž„’ƒˆ††‰ˆ†£„ˆo‡„~‚€‚ˆw‡€Š…‡~‘‚ƒ‰€€š‰„ƒ››}…vŠ…v„Ÿ“”~ƒ‡„w„š‡‚oq°•z~™pzƒ}„‹†“Œ‚{€‚Œv„ˆy…ƒy}‡†}‚…˜‰‚ƒŠ‰ŠŠ„‡…І†‚‚‡‡Š†|~‚ˆ‹—‚mƒ…~{‡ƒ…†‚e†}}…~}|}„‡‹‹‚~š„sˆ‚„|t…xŽˆ~‰„y‚y†{†}z†€Œ}ˆ}Š„…‚…‰v…ƒ‚ƒ„~{ˆ‡‹vu€z‚ˆz‚„„€~‡}†‡~†„”ƒŽxv‚‚…~„|z}|ƒ‹…€…ŒŠ‚ƒ‡„„ƒƒ‚‚‡}…ƒ‡…‡†}r’…‚„……‚Š€‡„ƒ“~†‡‹§‚‚wˆ…˜‡„~…‹„€y‡€€ƒ‰y†–z„‰t…|‰~Œ‚†…†vˆœ€ƒ„‡|}ˆ‚ˆz‡y†®†“†ƒƒ˜‰ƒ|Œ‹ˆ€”{„}ˆ†ƒ‚vˆƒ€ƒ{†Œ‚x|t€{}•„†„}„„•€††}ƒ{y„¤‡€†wxrЇ„…„™mp™€\‡~€mkŒ†|œƒ€†_x†[”¸~€‚Š{†Š€|‚y‡s…ˆŒ„f„{k~|~€‹†ˆ€}‹~—†z}|‡~‡„~Žt…„‡†mˆxƒ{ƒ………“vކ€‰‚~‰Š{|ˆƒnž„|{‹}~y}‰†}ƒ„†wˆ…ˆu€}ƒ|‚|}ŠŠ…|‡|‹†‰yˆz…{}ƒ†z}ƒˆ~‘€ƒ‡€ƒ}‚{€ƒ€Šy‹{Š|†‡†Š}„€„zˆ††‚ƒ€…yxyt…w†„|z‚ˆ‰Ž‚€y„€Œ†…‰†…{z€‰³€|„}ƒ|v}ˆ‚…y…‹€}‚|ƒvy„{ŠˆŽw‚‰{‹ƒz~‚„~y‚‡‹zwŒ„„†€…tˆƒ‚~‹~~ƒu~„‚‚ƒ{ƒ}†ƒ„~‚‚„}~€‹‚І|„Ž‹ƒ€~„}}~Šƒ~‚z‡„}~‰„y~~~|‚ƒ~€…‰…‡€‚‚t~}ƒŠ‚}Œ„}‚~zw€’‚~‚w‡Ž€{Ї}‰‚{€{‚{ˆ‹}†t†ƒƒ{x‡‚„‹‡|„|{‚‚s‹}•‚…€t”}w}Š‘€Œw‚‚‰q…q{~…~}‡…}}†šƒw…s†ƒ…‡}}†}‚‰~‚…€t’ˆ†{€€|ˆŒ”†zˆŠ…ˆ}zˆ|€‚”w‚~w…~„„…ƒ€~…ƒ|€€‚†|}…€†…}…†€}‡~…~€x~ƒ}€{Šw…ƒ„h‹Že‡p€ˆ†~m„‚‚||ow~…€ƒ…o~r‚{ƒd†‚€z‡†‡‘‚…‹€…‚s€‚|€z~ˆv‘ƒ‚ƒ‰‚x”…ƒ†ƒ‚}¦Ž†„‡~flzxˆp‡…‚„‹„ˆ‚ƒ‡‚ЄЅ€„‰—……}y„v…˜’‹zy‚~€us‹ƒ‹y‰‹wo„±p‘‡y„xŽ•—~€‚ž{„|…‰‚ˆ|€‰qbzw{ƒ…‡†„’yŒ‡ƒ‚€‰n~vƒupŠ€z}y}||~~ƒ†tyl{}€€€zv~v†{ƒ‡~zxz|{‹}ƒ‚}€…~ƒ~}~t~€~¨}Š€yv†}€€~‚„u€‰€u|ƒ€bow{y~„rn‰‚ƒ‡ix~|u}}ryuf…}|hˆƒ~—ˆo}}~xyq€‡€‡}k…^{ŠzŠxy‡s…†{~ˆvxv|ux„~{‚€€xv€|ˆeŠ‹{€qŽo€n}~uˆpƒyr~…ƒx…|Šx~}‰|À~sƒŒs}†ˆ”…o‚||‚’•‹~z~ytv€„kzs„{~‘rry|‚†‹Ž‚y‡‚|“€““†ƒ€„{†|†kƒ†€|‡‡x…wu†‡……{v††‚mcx€‡z“w}€‡„~†‚ƒfZh‚|‰ˆy‡€„ƒ‰ƒ‚…†y…x‚‹˜†„‚~ƒ|†‰~„ƒ‰‚‰]„¥ƒ†‡ƒ•‹uš„„o‘ˆ‚š…v‚†z‚ pq‚|ƒ†ˆˆŠ€{}Ÿ„‰„ƒm„‚Š…„©‹™ƒ‚|€„¢‚ˆ‰}€ƒ‰|‚‚†d…‰—ˆ}Ž}„„‡}}v‡†{‚›{“ˆ‚t~‚‡yŠ‹…v\}}›šrˆp~‰~|„u‡¬†€ƒo…ˆ…v‰‚†ƒ}|‹{‡{}€‚€|†v|{x~{z…„r‚}†|vvu˜z‚„uz~ynlxu~}…|{{~~|€ˆŠy‡~x‚yx|~x€{~{}Œ~†z|~z…€|}~v{~x‚†k~w{€v‚a|€||{e‹yyƒuy|t–|~}€Œ†h~…|€}‹~‹}„‚„vtq‡Š€}”x„~ƒ…jysq†‡s´†}y|‚‚€~ˆ~`Œƒ„€~z„„‚€|„‚žx{q}}€ƒ~||’‚y|“|}ox}y„~rsb{‡€|…ƒ~‡„^—€€~n‚m‡—w~ywr~}~€ˆy€zyhq†txykqzru€‰|‰Œ~zwiyƒ{||||y||„x„ {sxzpys‘|w~w}y{…€…{uJ€ƒ~{~„{y}tt{h~ƒŒxtz{~zkwŒ~x |šm‚Œ¦n}|w„‰‡h~…‘tƒb~}ƒ€R~ŒŠŽ‚®€sƒ‹|}‚–hÆ€~s{ƒƒ‚xx†Ž{Å‚~„¢|{k‚ƒ~}v~|¤…‚‚€]‡„Šs|w“wvuiº€zxz€lga–?vR¬z}wU«h€~‚€„z‹}„ˆwƒ…~…~Š}x„x„†p€t…‚~~ƒ„x~‚‚‡Œƒƒwƒ‡ƒ„„}‚}†ux‚€€|‡Ž~~ˆ€‚‚…†„z†ƒ{ƒ‡…Šn€†‰ˆƒ€…|„~†~p‚{‡…†zy„x‰‚ˆ„~z†–ƒ„„‰€€‡†…‚|~„ˆƒ‰„†‚Ž{~z‹…€}……„‡”ƒˆƒ~‡ˆƒ€~€‚€|‡}‚€‚y€~„€‚†€†€…~‡ƒ†‡Žƒ„ƒ€w…w„„}ˆ~‚|…‚…‚|…€†ƒ„ˆŠ~ƒ€€ˆ~€†‡~…q…†„‰‡‹†‘€ƒ}‘‡p‘ƒ‚q`†‚‰n‡‚}eŽ}v€…{^˜„xv~†wƒ‰‚ƒw…‚¨z†‚‡…w“mŠ„„„‡ƒŠƒ|‚dxv|w‚†¶o€•„ˆxm…x|fsƒ‚‰‰„|†‚|sZ¬j€‰—ƒ„~†”|‚~…Š}ƒŠ‘ƒ†‹ƒ‡‰‹„z€x„z†bƒ~‡x‰„’ˆŽ„c€€z……„}ƒ}r…z‚€€‚x~‚†}…ƒ‚……†‡†‡tˆ‡|‚‚Šƒ…ˆ……„~Ž…€vz€‡mv~¦ƒ€ƒ††—q†ž}‚€ˆ‰y|„Ÿh€„‚“~€‡‰{o†ƒum…‚…{‡…„xƒ‰y†}€|‚‚Љƒvƒx‚€ˆˆ†ƒƒƒ}…€~†~„„w‡…€‰†zbs‹|ˆp|‹ƒ„„€„‰ƒ„w|u…h‰~‰‚‚„†„†zƒyƒ……‡‹z|Ž‚Š{Ž{†Šˆ…ˆŽ†ƒ{}…†……ˆu‰‡~ˆ‹‰„„ˆ|}‡‚š…‚ކ„€{„‡‚„Š€|ƒ‚{~Œwz€…v€–‘y|r€‡`|v”‰zd‰qƒ†lq‚ˆ{Œ}‚…Œˆ……€‰‡ƒ|ŠŒ’Œ|ˆ~‡|„~†‡w}‰†~‚Œ|†‰yu…}‡ŒŒ|‡~…‰s’Œ‹e}›‰‡‚Œ}¡€•ƒ††Œ{ŒŠž~‰‡{މ‡‰‰~‹hƒŠ†…‰€Š‹ˆ†„‰‡|‚…Ž‡š„‰‚‡zŠ…Š‘‹Œ‹|s„ŠŠ˜‰…_ŠqЉ‡~~˜jЇ}m}†s“„ˆ…}€ƒw„y{„€„f‡‹ƒ~z‚vx‡„f{x}}l€‹…ƒ•”‚’„€vx’…x“‡xx~y©|pz†ttˆŽo{†‚o}†ct‹‘‘{y†|”‡€t‡€zz¤]uƒqu‰k‰^{„Œ}„x~bwŒ‡|z…p“ƒvƒzƒ……~ˆ‰zŒ†„ˆ…ˆ‚t~|ƒ‰‚ƒƒ………ˆ‚ƒ‡‚}x€†€‚‡„ƒ€„†{|Žƒ‚~ƒ…ƒ…‚ˆƒ„ƒ‡‹Œ‘€Œ†‚€„ƒ‚Œy|€wzuƒ‚}yƒƒ|„€ˆ‡xŒ‚‰†…|ŒŠ‹‚z~|„}Œ†…„yn‚|yˆq€wp~‚Ž€}}yk~v}x{tqso~wƒ‚vmz||‚ƒ‚~wƒ~‚“{m‚~z…txt~}‚|„{Šƒz}€lƒIzz€zp‹u{‚w“©Œpuƒ…Ž~’€u`…Q€œz„‹}£…€~~‰…ƒ‘Š„‚Œ…{‚€‡o~€Š‰…€~„Šƒzƒ…p„o†…€u…‚w‘„„‚‡‡Žƒ}‘l‚‹t‚Œ~{r}x‰yz‚o–rއ‡‘lq‡„ˆ~‚‰Žqt†ˆn€‡~~‡‰†|„•zio}€„‹’Ž”€ƒŒu}{ƒ†’ƒ‰………ƒ„„ƒ…‹|…‚‡‡‚|ˆƒ«‚ŠxuŒ…|‚’…u€‡d‹„‘ƒ€‚€…|‡…ƒ…‚}„…qyƒ‰€‡‚€†–ƒ…€„ƒƒz‡†}‡††}†‹q‹{¤}q}}…ƒ…y—‚‚„rŠy‘™‰~…„Šƒ“{~u†›€z¦ˆ†Šz‡€u‚…x‹‡wz‰ˆl€x …‚}ƒ|z|„sƒ†a|~‰‡x…†w‡y~Š‹ƒv€}‚Ї‡‡‚‹Šw„~}m}Ûˆ„vr…‡ƒ|{~ˆt|x‡‚‚z‚w€“‰‡„y~ƒ_ƒ}}|s‡{z{|~‰„u~kb†‚†˜x†~†ƒ‰{~§ƒg{ƒM„ ¤…Xyil|ƒ„„|‚p°™‚„xƒ…Ž‚Œ|…‹Šr„†…‚‹}Ÿa…~‚†€„‚†{…‰†Žx‚~„‰t}…„u‡…tej‹~•Z_p^„“~ˆ{~{Ww‰„G|†ˆÊ‡‚„€†‹……—Š€ˆ‘‹…€~qŒ…„†yr‚…‚ˆ…€…ƒ€}~ƒ‘y€|ˆ€ˆyz{„u€Š„ƒtˆ~{}Š…ƒ€‰Žƒ‰yˆ€†’m†{‹~qx‰‡ƒ‰{yƒ~„‚€Š…•ƒwŠŠ}†„…’Š~~‡z{Ž„ƒ„Šˆˆ‰Œqƒ„Š~~x‡‚‹€Šƒjw…‚‚l€ŠyŒ€‚Œ’‚†„„…‡……‚„‚€…}ƒy…„p‡€~‡†Ž„†|…‚}‚ƒ‡–w‡‚}ƒx|„k•…~q–|¢ƒv˜Ž…}†Œ{‚~ˆ‡„†y ‹‚xuŠ„Šrƒ}‚€‰t‰~„}‚ƒz……ƒ”€„{†‚ƒ‚€|†ƒ~‚{x‚‰†‡€{……{„‡†…~‹„s‡€|€‚Œ€z}u„‚…‚W~€kŒ‚‹‚…y‡„ˆŒƒ‚~‚…i}p€}€y†‡‡„€€ƒ€|ƒ‹†„†‚€„}‚€ƒ|‡‚t‹‡xš€‚‚{y†g€‚€ƒw„x€~‹}„}}‰Ž…ƒw……ƒ€yˆŒŠ{‚„€€‹z†‡„„‚lx{‚|‡ˆ€}~†‚zˆ…Ž„‚ƒ}†}|ŽyŠ„‚ƒyˆz}†‡}€‰yvŒ†Šƒu}z‚x}}…~†€†{†ƒƒvt‰c|‚…„}~†Š|wmz…{|zyŠ‚†uŽˆqy|†„d€†‡z•‚€‰€‡ƒƒ‚yvs‚ƒm{z€tv‰‚„w„…€~€ˆŒ„‡…}†z„}…{r{ƒƒ…{m…‚}w€ƒŒ{„ƒŽŒ‰ƒŠˆ~ƒ…ƒ„‚‡}ƒ~ˆ|z‚s…ˆ†vƒ~€‡{†‡r‘ƒz†~w˜~ƒ‰}y|‹y…‘zˆ€’†…€‡…‘w‚{z|€‚‡‡„{ƒƒ„`~ˆ‡|}‚‰w‰‚‚ƒ‰…s{†Œ‰‰~„}‡€„y}{y‡ˆ{Žo}€ƒ‚‡†„j‡‰„†‡ƒˆ†‡ƒƒ„‡‡†wx„Œ~„”…“‚ˆ{‡†{ƒŠ~|Іˆ’Œƒ~†ƒ…w‚Љ}€„}’|Šƒ~†€x†…~„„„Š‚x‡‰‚v}‰tu{†‚€Š…‡uˆ†‹‚ˆ€…|~†|‰Ši„…€‹~~…„~‡~€‚~}‚€o•˜ƒ€”„…’‚„‚›p„ˆ€†…tƒ€šzy‹~}w‡Ž|„ˆuƒ„~}‚n~†zƒ€„y|}„”p€|ƒ‚‹w”…†€„‚‰„ˆ‹z‡€„„Šˆzx‹~{uw|x‰uv†rwxšrv|s~~ˆz€{ŠpŠ|‚Šƒx…z}ty€…}z‚‚iyxŽw{€x|zv€v~xv†w~~Š‚}}~yw€‹Žs~ƒ‰ƒy}wguy€zˆƒmv€u}v†‚†Zƒ}{~x„x‘|€„„†‚ƒƒ€ƒ„ˆ~Œ~w‡j…qr‚•uƒ€†€Ž”ˆœ~‚‚ˆƒ‚…ƒ„}…‚„†¨…ˆ†ˆ€‰w‘€€ƒ…ƒ‚‚}„Ž€‚}{€€„€yƒ……x„€zit‚‡”ƒ‡ƒ‚†‚{…~{‰…‚”§…„•‰x…„œ‚w„ƒ„ps‰z‰}h„€|ˆt}…‹‚ƒ|”~‰{‰}˜x—xƒjg€||ƒ€t|Œ||„|{™…~{†~„}}x‚“‚{‡z†„}o–„wƒ{~†Œ‰„€ƒ¡€~zw‚ix~‡urw„‰‰…ˆ†~r…|„ІtŒv„q…‚‰~„‹…ƒ€‡ƒ…„„v‹‡„ƒsˆ‰w|Ž‚ƒ‚‡ƒ…|…ˆ€Š‚~€…‚~„…yœƒŠ†w€zƒ‚†…‚…ƒ†x†‰ˆzˆ‚ƒ|‚x}‚|€†~‹wˆ„z…††‚‚…ˆŸ†™}†ƒƒŒŠƒ‡dv…zsƒ‹}…†~‡}ƒ|†‡t‚‡ƒ„x‰|}„‚~‚‚ƒxƒ}ˆ€|‰„{{z‡z{y‡|y…}|{„‚€…ƒxf‡‚x`~|unz„ƒ‹ˆ†……€€l}~~’ˆ†‡w‡v~wƒ‚ƒ†z~sƒ~„u‡…€vh{„‰w€}‘~ˆz•‚ˆ‰†€~ˆu‚i{—‚{|ˆ„Š{tyz{ކŠs‡ƒ˜†}}ˆ€‚…„v‚€†vƒ†‡o„œ™„€„‚y†…‰Žƒ’|u{zy~€}†€r‚€”’~Šhjx}‚Šˆ‡…œx‡‹|¢‚„‘†€ƒˆl‰z…|~{u{Œ~…vu~yoc„€|™zty}~„wŽ~‚}{¶q|neˆ~†‚€‹€}|ye`s|yˆoŠ€‘‰w}}…z…‚‚‹z„˜‚Œ‡{ ˆw‡|‰‡€zŸvy‡ž‹…‡ƒ†~‘€|`s•œ–‡w£x€|¤z{ˆ‡‰„~†„ƒŒƒ€„ˆ‚ƒ~‚‡…o‹‚ƒ‰„†‚Š„‚„€€„~‚’ƒ„x€€w…‹{‚…„„‚‰„ƒ~ˆ†|}z}‚†|‡‡ˆ…„…t“Šƒ„ƒˆ€„t}z€‹„||‹…s€Œ€ƒ‚|vs…ˆ~y…„w|„lˆ€~€ˆz}ˆˆ„‡€ƒv‚{†…ˆ†~‡†ƒ€„‚‡ƒ„€€‰ƒƒƒ€…yƒ}~Š–…‰{~„ˆ…{}‚ˆ|}‰‚‘||„…ˆ„†Œƒ€‡‡‡x€}ƒyw†ƒ}woƒu~{‡€|…{І}‡{qƒ‚††ŽŠsƒ{ƒ‰Šƒ‹€˜‰‰†ˆxœŠ¤„„‡€ˆ– †›l|€…‡Œ…„ƒmT„‰„}‡ˆ‡…†…‰Ž{‡¤‚‰…›«‚ƒ…€Ž‡x€‡{‚‡ŠŠˆL„€Š•„‡ƒ…o†{mŠ}©ƒ«†t‰…›…Žf¢Œˆ†|¬„…„uj„ƒ…„‚Žqu{…„„k|€xq•i‚_}„o}„Mhzu‰}‡“}€wŸ‹~~jv€ƒ}€‚ƒxl€y|”„†qtz|y„‚ˆ}s~………wxh€w‚~„‚‚quv}‡…|€~¢€y€•Ž~~‡‚~~«Ž€v……„}€x†~…ˆŠ††k|xt†ˆ†‡†zx‚…ˆƒ–™‰†ˆw‚„nvt‡„Žƒ‹€…”qƒŒŠƒ‰ƒƒ‡‰Œw‹Š~„‚{„†Š€‡š…‹xk~…{{z}}…‰xud‹‚}o“žˆŒœ‡…„z~Œ’n‚uwy‚pq€Ÿ…„ˆy‹‘—‹ƒ{†•h…Šm€ˆŽz”|t˜Š‡„…rz{”y| …‚…w‡w–e‰ˆp‘‡ŽŒ‰‰„t……ƒŒ}h˜o{”‹‰…Ž‚†Œz|ˆƒ‡z‰•x…‡…“—Œž”„†•‰š„™†t…’ ·€€¨›…˜™}Ž‚‡o’nqoaosedo|osv]bfXzUgkqu\oniXhj{mttm‚ƒsjk‡Somqtnreokrnpfs¢qgnnwl_|Qcklcpogsujf^q}xtqf’pnpwbna¡peuavoufscjsav\oneenorXgqln„‚‚…ŸŠ}’ˆƒw~ˆ}z„wu_‚\r†w„†w†‡oxo{ˆ~}q}†€€sx|pƒˆƒ†}mŠƒuˆg}…†„‡ƒ}†€‚}y‡„xy…†kŠ}€˜…‚„n_k~‰•nR~^„‰Œƒ}~wˆqQ‚vgs€zYhO}†„†Š‡~„zˆ…}y„„p†{‰y€‰…€€‚z„Іz‡…~z€€u€‚‚ƒ‚~t„€†‚…‡u‡z}‚„ˆ„v‚‚ƒ„€u€€€„|…~†ƒ„‚~zŠ}„ƒ„ƒ‰Œ‡€„~ƒ‚~‡‡…‚†ƒŒ‚ˆ…}€‚‚z‚†^Žv‚z‰x‚vtrz‡ƒ{‚‚€m}x”|›Šu¡ˆy}wƒ€wy†vt~sxuxx„{‹†‰}q{t‚x‹–y€|‚~Œ}„€vx‚vszy|xzxކ{‰‡~wzit{y|r„ˆ{}}tt€~rvu‹zxd‚€y‡Ÿ|‚eƒw†’‚ƒ}{†—~i}‡{v~„†{f™~w‚rŠ|zr‚~€xŽ{{z~všrp|‚l}„x~„ts‚t{€wŽt…{o‚~ˆzv}{xu{u}x…¢~†u|‡}c†„‘v‡‰€€ˆs€€ª‰wzo…‰Y‹„‡…z†…†bqƒ‚Œr|‹ˆzƒ‚“‹~¡j˜Vw„|‘wƒsƒ†‚…‹v…„€„ЬŒ…~|X†‚}†€~„€ƒ€€gƒ}r†œ‡Š~–Š}‚€ƒ~~m„‡|`ˆk„‚‹„‚r‰p}r|yd‚}}”™’}‚‚g‚y…{‚„‡ˆŸ‹€sjˆ†–‚p†a|o‚š†jŠ‹w{“‡|…®™ˆ‡w…Š‚‚‰‰‚‡}“l‚‰Šƒ‰ƒr…~††ƒ€…ƒ‚v‚ˆ‡Œ–„ƒw„|Їz…€o€…€‡–{Ÿ†pˆ„…‚«šys˜t……wž‚…Ž}‡·€‰€v~~bv„r’{w~~xƒl€{tyc}~}z{wrqy}uww‚…e|€–z€~yx|„€sw|b€€€‚‚‡oŸ{}y~}€~€}oumy‚€€qy}l€„s…hvyr‰m‚€|މxa‚yh|{~ui‘‚{tys|~ˆ‚y|…t‚„‚„‹ƒƒƒ‚{€€‚Ž|‡‚m‰„€Œ…€†„ux„…p‚‹††•{‡‡„€~vˆ|‰€|„‚•ƒzr…‚k–}|ƒ||yŠŒ€}„z†vŠ€ˆy†~{~‘‰v}‚‰‚…v‹…ˆ~z‡…”‰†~„ƒƒ›„€…‡zŠˆ„yw‹„‡~‡ƒz‚€z„…††”oz{……x‰Š}Œz„ˆ‹~‚~}†…n„zz„Nˆ~y‘‡€ˆkƒ|€~}€ƒ‰„y‡v‰€€ž‘Š…xŒ„qx„…‚t’qg‹†‡~umRŠ}Š„‡~„ªh|ƒ†l}€‚Ž‹€€…†ƒˆ|ˆ}€ˆ…„€„‚……€‡…†~…„‡ƒ}‰€†‡‚~ƒvxƒ‰ƒ~„„ˆ}€~u…„ŠŠ{„ƒ„€Šƒ}‰€†‡€…}‚€‚}„Š~‚zЉr‚ƒ‡€†‡‚…ˆ‰ˆ|}|‚rˆ‡’€u}€ƒ…Їނƒ–‚†°€†l\Œ‚a‚‚zv‰“’|‰ƒ‚q‰€‰~‡sy}}tƒŒ]…ƒ›„ЀЅ„€‹’‡m‰‰r„”xƒˆƒƒ‚x„†Ž…€v†x‰‚…Š\†|…‚}ƒ„’t…‰{w‰ƒ‡†€U™‚ŒrŠ}Œƒ…ƒˆ††ƒwƒz„ƒ‡…}‚ƒ„†€{ƒ‚„†„}‡|†€ƒ}Š…„~}„€{w‹t|~u|q„z~{ƒ…‘‘†ƒ‚ƒz€r~s‚…l~~€ƒƒŠy}~y†‚„ƒ‚€~…~€‚~„{‚€|…zŽ{Œ|z…~…‰„ˆ~‚ƒn‚“Š€}†††„ƒ‚yŠƒ}|€ƒ†„ˆm„‚ƒzƒŒƒ€ƒŒ†~‚z‚ƒŒx|qy{‰‡}„ƒ„ln‰‘z~„}‚‚}ln„}|€yˆ‡~€„zƒ†}x|Š˜ƒ€ƒ„ƒ}‰‚ˆŠ|}r{…‚†|€~wŽ‚…ˆ‚„„|‰|„‡‚ux‚yu‚Œu†€…{nxsn€wŽ”ƒuy€|{‹‹Œ‚||ƒŠtm…r†sy‹{}†ƒvq|~Š„~sy„{u…‡‰„‚j€Œ|~}yŠzt‚tyum„„iv‚‚Šs~yxs‚€x‹pƒ†{ƒ€„„~Š}‡‚zv‡†€ƒ‰}}~‡‡„…‚}~’‚ƒƒƒ|…‡‡…†‡~‚€†‚„‚Ї|ƒ…„w„€z€€†…‰…€“ƒ‡ƒx€z{€‚ƒ€uv…€ˆ‚z}z|ƒ‹Šƒ‡Œ…‹„~ˆ}…„‚†„}ˆ„‚…€…ˆƒwz|ƒ…~‰Žt‚t{„v™Š…€¡‚…„oz‡ƒ|†y‰z‰€~…ƒ‚€ƒuŠˆzœ˜Ž~oƒ†z‰ru…–Ž„‹‘s€„‡ŠwŽcp”‡z†‡ƒ„ƒ‹~z†u™|}ˆ‚r‚†Šƒ‰‚~„†™€€‰†‚{†{…„ˆ˜~y†y{„€†||€ˆ‡{Šˆ†„ƒƒ‚{†ˆ‡€Š}~‚„„}Œƒ‹†q€|~|†„“€w~u‰~„‰~†ƒƒƒ„€‚…ƒ“ˆ‚~‹„ˆ{~~‡€‡|wƒ~~†‡ƒŠ‰Š‡„„„~‰~Š…€‡p‡††…Œ…z…‚‚…†Š†„ƒ}‡†„‰›}¯˜ƒ…ˆ˜‡”ƒŠ†‚‚…‚{oˆ…ˆ{……{Šˆ‰…І‡†Š…†€Š††wˆ„‡Œ„‡†Œ™ƒ‹™}zƒ‹…‹–†ŠˆƒyŽŠ†‡q˜’މ‹‚„†€Š}•y‡v†‡™†‚†~†„„~‹‚ˆ‚…„p{„}†‚ˆ’…ƒ}ž…†……ˆ‚Œ„‘}‚{‡ƒ„|„ƒzzˆ‚ƒŠ‰i†cƒ^††…‰Š‹}|†ƒ|qŽ€z}aˆ„}y‚‰ƒ€z|‹Š‚k€ƒ„Œ‚zƒ‰|~Ž…„Š}~‚‡Š‡sƒƒŒ†ƒ…~x‚|j„ub~€~‰~„zp{{{s}fއtyz|f~s†‰x‚™Œ‰}ˆ¥ x„‚y€~{s}„s~l…k|}„qxˆe‚~x|€}€z}zs|ƒ€|z‰ˆˆ}zu…{|ƒ¢€zp…y{xo_’©tzyˆ“ƒˆpk}~„€‚†‡†‚w…ˆ€{…‚†{Ž„‡€}Š„…„ƒ|z‡‚}‚{‡}€x€Ž‚†‡…Š“~…v€†‰{ƒˆ…~{ˆ„…ƒˆ……}ƒx~Œ|…~c‚~„{…‡Š€ƒ‚„}‡††„”}~~ƒ{‚Œou€ˆ‚„|{ow€„{‡z‚†‰‡q|‹‚Œ’’¬ƒ†ft€y~|…Š}n{~€zƒ|xw†sp…z€x‚‰„ƒƒ{us„b‚{}ƒ~j‚‰rq„wwmgƒ}…v„zy€ly^ry‚y€tƒ€r{€v….~‡ztˆw€t||rtupN~~}uq}…\wx|{‚˜a`Uƒwyywu~„iu}€q}Žz€~~®‰€‚l†~zˆt……{Š|~ou‚‚{{k|z}}Ÿ{…ˆ}z›b|€~€}~e€ˆ{wµ|®‚y~X}ƒvu{|uVhpƒ†\{n€\€|i‰`{j@€€]lŠˆyV f}†…vŽˆƒ‘‡‘€†˜‡…Š€~‹£€€„y‡|rŽy€¢’†‚w¡…€‡€z‚…‹†‚‡x‰€ˆ‰……„Š}ƒˆ„~†‚†€‚‚‚~mzƒw€Ž„}z¯¤„vj‚‚x…€…y„„’¢x^n€‚rsŒ‚ƒŽt–ƒ‚nuue„ƒ…ƒ…€…yЇ„ˆ…’xŽƒƒ}††}„ˆx„Ž„†ˆžt……u†…„‰„†n§ƒ„‚{„€{ƒ„ƒ„„†…x„…Š—……‚}‰€ƒ}z†„‚yŠ|Ž‚ƒ~‚s†Š†£{}¥€v†‰{t~…‚–ƒ‚‡{y‚z}vw…€qr{€‚w|z|vwz†}|—…}€€ƒz€…|€|sˆx~ztx{}{o|y}~r‹vix‚~Œyxxmqy|ŠwUvw|xŠyu}~~€t‡ˆvy~’‡~€‹Œu•y˜vy€qŽ{yys‡‘j‡‰v{y‚~ˆ‰€‚‚{ƒ…x”„…ƒ€…{~~y€z€uyƒ†~™‚‚wƒ‰}€„„}‚~}„ƒwƒ€‚ƒx‡‰†~ƒƒ„„‚{‚…€[„€€}‚‡ƒ‹…€pte‚qŽq~{„€‚_s‹—Œ€…„†Ž{ƒƒ‘~‡|~ƒ„uƒˆ–ƒuy‹Žc}Ž€y~…}‡ov†€mz„~ƒ‹wvq‚‡i†ƒ„~Š‘†|‘z€Œ]‰‹}n†‰ŠŠ†}ƒ‰zu“”‹‡}ˆˆru‚‘ƒ…„y‚‚r{q‰~”^zx‚–y“}‹‚y~€†Ž}—}s„Š€‚†ƒ€y‚€€‡x‰‰‚Š|€„……~…†€Žˆ~}|…‘‚†|ƒ€x†…†…ƒƒƒ|†€€z~y||x‚›€ƒt{{‚z…~}{}‚|‚}ƒ„†y†~|•ƒ„ކv†u‡…h…ƒ„~ƒ†tŒx}„~ˆ~xŠ‡Šƒ‡ˆ€‚s‚„…‡yzz|ˆ}‘ƒ‰€€‚‚~ˆ„‚{}‰|„‡‰‰€ƒ‹~‚‡ˆ~†}†Š„‡†ˆ{ˆ‚{…€Šƒ‹‰‰~ˆy‚~†„ˆˆ„Ž…€€„Œx‰~|…}€z…ƒ…‡zŒ‡Š‚Š‚|ƒ{†‚Šƒ|‡w‰ˆz‰‚s|†y†……ƒ€„hvƒ€†‘x„‡}h†Š‰¿p……Žƒ…‚ˆˆ„‡s„„~‡|‰„ƒ|ˆx†††‡ˆ‡‚w…ƒ‡‚‚ˆ„nm‡ˆxz…‡yq‡„}šy†‡†¡‚w…ƒˆ‹u–€™ˆ„Ž“•„|wC†€Ž†„€{„uqŽq…ƒkr}„Œ‚‰†„‚p||‚t‚Š‚‚w‚~z||€uƒ{~v}z‚x~e€„z…xr€„†||u{†~€|ƒ‡svx{~zroƒ„dz|‰y†‰†‡……‡ƒ‚w€zxwƒ‡„y†…ˆ{z€|ˆxˆq‚~{“~Šx„…Lxq‚…wz†}”€†‚v‚{|}~n|nyŽysŒ~~x{~¤~‹ƒƒ€}s|‚v…qw€x…Ovq}y~zx{rz²€~zy‚{|†‚šg€o„¢œ‡|„w{€„vŒwš{vt{€~˜Œˆ~€|Y’lŠzt||†‚ŠŠ‘‹z€t~†v…‡ˆ‚ƒƒƒwx‰Ž…€{€t€„ƒt}‚€‡|o‘†n„{…ƒxˆ‰ƒu‚‹}‚€‚x’‹s…†…ƒx~ˆƒŽwЉ~}ˆu€v‚Š˜x~{h~Šyo‹u}ƒŒ}‡|uxƒ‚{Š~ƒw‚~ˆˆ€†}Šˆ€Žzƒ‚“~‚‚n~…„‹…ˆ„~ˆx‡……ƒ‡„„z|‚~z~€j…u‡…ƒm‰…{„‰……„~z‚~†€}}g|u~z‡…{ˆ„‹i‡uƒ‹Š€„‰„…ЇޅŒ€‰‰…„{Žm{‡‡…†‡‡…{ƒ€Ž€}{Š}‚x{ŒŽvt€zz{wq‰Št|}s|‹Œ|x…}‰‚{s€}¢€{ƒzzxx|~ƒy{x€y}“‚}‚z€~}…{{€‹s{Œtzx{y}}tt€ˆ{|Œ{y~y„~p„~~|†yx~rpR~z†„‚}‹†s‚‡t…‚w…‚„Œ~€~~€~†‚‚~ƒ~€ƒyŠƒƒ~Œ„€ƒw{‚‘o~†‰…„š…}~„vˆˆƒ~€‰’…„‚‚~‚{„ƒŒ~ˆ{€€~„€…ƒ€†v…ˆ†‘|€~‚{w‚|{ˆ{€†zzƒ~…ƒ…€„ƒˆ~ˆ†Žx‰€ƒ‡€|„€†‰ƒ‚~„‡€„€†~ƒˆv…Œ‰€Š…€‚h†xƒy€~€Œ‚€ˆsx…{‰€…l{‰v†„†v„z~„’}‚ˆŠŠƒ†ƒ|€w~Š‚ƒ{yx†„ˆ‰‚{€|Œ…‚||}~vƒŠƒŠˆ}ƒ‚u„„}yz‡€{ƒ‚{‡ts{u€ƒr‚‚Š{u„|ƒ‚~„…‡…„†€{ˆ|„c€†„Šˆ‘„|‚€ƒ}€€‚„Š‚ˆo†wˆ€‚†ƒ„‚x|‚€‡yyu‘uŒ~k„{†‚}„jƒ€ƒ}…‚„y‚~vƒ†Œp„ˆ‰†zy|„eƒ„{~†€‚zƒ€|ˆ‰x‚Œw€‰~‡d€‰~†|ƒˆ…yx|†‰w{r|}€tƒxys‘Š~‚…~z}„uzƒƒ—}…‰ƒx€‹xu€„€b{€ƒy€{~v‚w‹‚€}|y~…}‚zˆ„…‹l€‰…€…Œ~‚‚ƒ†„‡‚‚~…†|ˆ‚Œ…ƒ„|€‚€†ƒ||„„‚}†k†‰„€ƒ„Š~€˜‚‰‚†Ž‰x‡|†‰{…|‚tƒ|‚€‰yz‹ƒ}t„l†…‚„‚„Š‹ˆu~†ˆ|„ot€‚‡‹„xz‚‹ˆ‰†{‰Œ‡†‡†}‰Š…ƒ€|‡­|~yƒ‡ƒ…‹‡‡„ˆ‘‡n‡‚šˆ…‚‰ƒˆ„ƒ€Š|Šr…Œ†‡‚„‡†‚ƒ‡„‘…}ƒ‡r~‚†‰ƒˆ†ˆ‚„|ƒ€‰x}}‰‹{Š~‡ƒ“††‹w„ƒ‚gt}…ƒ‹…†‚•€‡‡‘‹„†x€}‚‹„}„‚……zƒ”‡‚pŠ€|‚€{š†‡‰ƒ|€‚‚•~ˆ…i€€‚o~†{€ƒ}‡ƒ„vƒ{ˆ„w€†x~‚w|‚Œv‚Ž€moƒ}„‚{h†ˆs‹‚}}†~Žutc‚€’~s†z‹ˆˆŠ…ƒ‡€s‰ƒ€Žqƒ…{ƒ„„‚„u†zy‚‚Œ‡Šƒ‰€‰yŠ|e|m˜|‡€‡…ƒ‰qzc‚€……‚“yˆ‹pz}‡Œ‚…|u„‚†w‚†u„‚‚†‚€…vˆ†xk‹„ƒ‚‡}‘}|†ˆ†{‹€ƒ’…x€Že:‡‡†¨x††sy‚‚ˆ™‚s•w†„ƒ€ˆ‰y¨Šoy†Žzt…x”˜‚~ƒ…Š‚„‡~pƒ”s†ˆ‰~‰„‡q‚‡…‚{ƒ‚n|ˆƒ‹ƒ™‚€‰z}‚uŒ~B‚ƒ†rz–I…€ƒ‹‡eir¹„h‡„wz€…v¢Ç…‚‡ƒ}~…Ž„y„€}ƒ†€i‡„„ˆz€„‡„€€†‚‡‚x†††ƒs‡†||‡uz„†€ƒ†‹‹Œl……ƒ}|ƒ†}€‰z‹z~~{}€‡~~…u~‚…{~…w{ƒ„Ž„„„‚„†yz„ƒ‰‡†ƒŠ}‚{Œ†ŠvŠ‚…zƒ|ƒ‹ˆ}†m‰Š~|}ƒ€‚xƒ}v›‚{†y„‰ƒŠ†sŒ†~„‰vˆŽ‹„ƒƒ‘}wƒˆ€‰z…}„ˆ€{y|‹€~o‡ƒ‚ˆ|…Žƒ‡ƒx‚Š~ˆ…Ž„ƒ|‡}ƒy„Š‚z}tƒ‰~x‚ˆˆv‚{}‹y¥€Š{‚x€{zc~€ww}|jv„vvƒz†{f‰‚–z†owd}hskwjmkq¬q€nogzjWesrvnero_[mRvnpljmttaodkmlphussqlolknr}Œuppijud^con‚tnowlTlZoi€]kpm{ccqqopm`zVlropglqspeipk~chmpl|relouqkori}qpo{ipoammo{hninTnmmmuŠlsoimkvoinolkwsick†ok`FopoUnYgz{l^jasiqtnjQklrp[Zsˆ{uvuesirkgglWkt†mprv|rxkssxmkcrwiUkz{rkQj†zlkqZlxonrnptZ‚hvmbsaimp`nhtitnlfmoRZllnhojte{l|zk}mymas›pnin|…kxƒorlr“fnopyifpqgˆj{Ž\nmkmxpkjn_miooopoophokqwslqihlzd‡irƒqa]ndp{pqgsiiqssfvqy‚okXenpz˜xuxjiynmyle_srrc†`n}qh\pnintmsvqo`r}m_ppolpnrlpql{jfqnjpmonigospGq^kppkmskwkoonŒ`k{qgo~d|lnh_umyik\iihmqjyigRkilmjd_qmmsmq}m’llmeanpnkblenmrhyh_bgrnrslqhqHvsmpththplvmsl^ihNkoj~tur`‰nfnsmkn`pgkqSunqntrmmq~npZersioYntpmgski\wlwimoopkvkmzygdh|rophqphnkmg\{[undtnhvhjlkYofX^noplgoi[Yjqq€sluhYyboijldj~_rppVppmzijnloSkinj^ng`…lko[mer]sjxbxdtZumopYniQnutsh`fKjlq|elinwmholkpenio`o^hQWttmoZjersoqnjqVY`x…kktcmgeosyagrvsquTlqopqkcgirdkgc^nlitidnXtQpfnigrr`coucyvlfs]hdhjuslmwkybQshef\jjip|pdxh|ojkYnginzwrlap^g™ifinl]p\rvddubnknrjqghjvuusjrnVxmwvpnpruqjƒpik\ykXogsmWlq`rnhnpog_~wfoukgqnq`–llbl]lwrxdner]zmnrjTswjjbrqngpHuodkfdoogwqolkiqsntsnPt{omZ_nhv‡nhloqgoiijjrapji|utr_ypnUnopf|}nlirawVkvWhtipoollllRem]njenuopvpcd`oim{_mUj^ivhsblmmsozmuredfkjn…‘nnqnntalkldmmpqq[rotn…olnomqppmo|\mursqkbpsvcpnmŠn}l^roWrsnokpnlimxqklmr‡vvpJolrqqLqrmbzmoqmspjkqlsoŠfvrrznkeom|pFaqtiˆmzin‚hjo’SQmnUl^npkrwlimlutklnn„œmrmeru]irn‚oswp\l€o}onsoQimc5bnqrmmmqnkolhl”mi€vpinqtjmZoaovnnmoqukmnŒe[fqsgjppedlmc{w`obm„qhfokxmpcg~tmoŠn[oyhhkjaqeqpQkfpqh~n_yeoyznlcmasje…dca{i`mfpplxoq_gl]\nntcv[vttoqlpsfqmqcegŽyS_aXmo‹vp\iwszkrhrwnjmirsncjHsk†|qjnw\sgthnipm”ngipmjmZgoq^{ppnŒumqlW_tm‹eogtdjs^qftirgpps}jlng\gljciiodnbrpgxŠxrlxc{alw‰s[ik_tqbm|npqg{phektkfgjshsiosŒiurkno\kqTpkomiplmo†jriphlxmnphulmndQsenjmkmnkhnrlrm†ll„qNKk‚drVmxlnlDqnRsfqmnhrozon|kz{qnm‡Yrgqnoon\l^mejkphfcmmeokool{ilkghqkq{jdlmmnynTmkklmq…[—lnxjplRlibnomj}oihnnŽ{nmnqnl…Š^pgnNolŒŽlvqnhp|RqsP{lql†‰mmyenqojmbp“^On’niknk\jcolnmjgoeoinYlC€kvqsokxvTlimM€„qth|mcnnhod\oqp`orkilor\lqonuŠpnvyi?nqmiplrsno‰Yn~ykwp‡ist{l`q~qomtmnOvbluknpqrmƒŒp€mp~qw[qjnokphnJf`iophlTl{poqsm|irmlˆok˜kp[j`ˆolfjmlomrnrwgxpo~k{q€noainniurjqquNˆnpjnrnSe_oUqpIks\pu^popnpDkƒEjnpoQpo€smjluiUyI}tr}pjxrhƒlSnpqlwqkkkpoyxƒmoynclokfEppud_ˆq~nlnpyxpmvqd†ouct^r|kWnywŒiiotrcmgpfnjmƒv{tnQos^sŒertfim]ajhqql{sfpvtwojnƒwguVyoŠkll‚p}m…qUlzykmainotkihwoTtaz\†czptiŠrkqoanj{pnfymjbnyokw„‡hvouqpyvlo`ªs‹}jTwdqnh_rlgdpnZRumq_aj`shoiqtred^qksd|zjx„lrddZfe{Yi^txqknZmedu^mj|uƒzucmpgˆ~gj^lr’j]tZ~~p~Zntqnqukitflpoixhmqlumbuh{uqxsqloknlkqoklnqjk_hjanwivjnmlfkƒlsfllkmixllepmpg`psgkbmozro|gjvnljgao|—k\slgip}mgqjnmw|cmWtwciousoeqwzrhiqzjzipkuplaxfrhfenkhqei_brt [_klxmfsmjX\vhtjlnpvqmlqppqqnoroplmgfxi{tgntthj]tIhhvrmojfhnyteg^hvhnidckndmm€iojjr~syrwjmohq|nkhkvjkpiohoksomlsocmmivs†sivoirWdpoomonpujjqpiunl€rvVzbqqwuO…exjoYodhqdpZkjlejjvpi”pvyu9…ugmqnikkpifgr‚kgg}bnlsfiWnj_ghnYtbvlm}pybljconiqNfls]jh€mvkqopgjtlukv~zbhmjcntrlwb~o\oqgnUoŽtlsjmmjtf_dc}Xnvji‰lodrjkoV_‚utœ|ikpmjplro_oqqkqelyjok}hwo\trfujlV^ogeor…txdcrjeuhqdlnsuhglgŽowgeplkPqkVtprdlptge~pnsxchanovot„`ixlt“kyjahjPg‡ujlpqi~jzqvlpupdXvk…itmpsqmzpzos^mxnblfx`n\CTxnT_vexffnoeosnvqbjqwqsl[hj}qxornxqv{wloV>glsogqykimovcgU`ižjkznntqmtqmn`sghzxžp`vp†oefrxlqsaZxpn{ohlf\qbcihrpdjtmfMimz…v‚Xydmkjt~„jbkf{mlkZtom`wctl‚gji_†xletmpc}bvsmfvlr„p_ƒht{‚f‰mvxomnipnnhitqmƒ|upbnhjthnsk~\|lnlswlsobsqmrkqrlfflv“envocysstiŒn‡ig_qyt‘pcwqj`t_thslitdpugpa}tmqkvmnerynpYif`t\hou„nkwlm†‚knrkokfmo]mgsog[kgevbjibtfs]sorqc‚mh^inyMlfrpssqmh~~rhohlUhrvmvpfplpsjuekjsnhtsjpwoivkcoozpytwjeqkklrleqsp2lmgYlhrfXil{oƒsjn~wuhk…qr“pxZprmyhlmuj¤ronuqeOsl|VhfdhmjgrvYitYppqoˆrrn`pVszkpqmlZDxuluyzYxirmqz|vkoi‚rqUkhytwqkjn‚rUe|mmqgnmjkhmnrngnnfurpluqkprbfmkiqfjniipquqrkkl||nxlkptqnrp|ehv^7jbsppenoolii‚smfkzjwmaoukhrGsnqr`pikr€onqfppqnnQsvrxfopolY{npj\isnQklpvknonrckoobpilqnjmplqnnk‡oOpick`QnZphr~nun„qnRqZmnllnn…qq|nI?sndO`mšjnmmprjynjmnsouhtknnpo‹vttqmhy_mmgncenjl|l‘lnukos‘v€hnmrNnQpnmolonolqhtm“NkpsosoZpimƒik\nUxbmavpnqQnqfk_ooktmlmtlkqtsi…m‚¦]ogplqrm\osmkmqqim…nonvt˜jfwjRkl~qhmoows‰onrIuWrgij[vqmrXmmkrovqplomkrrloŽxo^jmppkheonr¤ogkoXt{:tyaoZoImlmpunˆsnmqlvmpœp‰mmg`i^p.hujkosop\jbhjWqpknenqikmfnuvtfkKjaksk]k[sqhqvl_njŠjukhBGmnjnˆp”ll}plmnenlurfPNpmnkmllgwmelxm~@Žqvolqo˜tpZ…]onkV‚orƒekomvjQ_Xgvpwmhilmwj†lmmsnhmˆtlpk{XykŠkdmn.Zxqky{¢}htmosrorqsux{vƒ`jrmolƒk{hy€jMcsmboiƒfpshtpxlqpjsp³xnTlq{hc…}wwav`dsppsn—knqnsnm[Uekya„|putgjanpsg‘n_|‚F{trfrcm^jCn_m€pggnie^oojfysfznr}…cuqt~rfxomegk‚ocwcivh_uhpnsƒn||xkpjouJmk}v~t‚oMhv|oVnyw{apfhhnglZ}stlXuXdgogk}z`bbjyhvq]|`h~rwkeZgrHnwUetmvqeblicnTOvimu[gdapqeu€o‚c…rrn‡hnacjjmpwwj|_poocUlhoc‚lp|sp\e„ttXxrtu|drt€zƒ~ypIkIshmnvYlpOsmyvkk_\qrslej‹g|tzqdthYsbqilvg_jnrk`oiu|oiZ_vodxYhid^evYcglD~cutresgkVtfcYzTr~Rhngmpnl›odrogu^mqhumo`nVsrhjWp€ohgmbjtwrqkmwtosodeZm_ltfomitKTn‚Pk`jasbaLtDjpqZqNnghZZkknJmqƒyThrxixq|puqxvof=}hmxhfYOqhoyoaC_ftsobpisyhmrftijb_sdr|ejn_gqsgfu\nk^fhqlrfs}hg`rjƒu]neg|njldrtSspnvaQhYpaqinqgkprwrYnwnRhninm ZnrnZhnlpqowrmpopokomPkHmrmqimnmnk;_njon|kous™mmmmmonxop_gimhmjlr‚o@‹qVlpcq,hjohqlkjl_nFOlrco’pjmfmoqƒsohl¤rdhhl†l„lmlkUlŠml}moo1zqqprozqMqqopmmqilqgmpTUporinopeul\gmˆlxskkntkrgnfBhllmzQmntomymho}{dPkmconvnm‚lamlptrnkumnp’|lvmsosmm‰†tnmekt‚odfnkoioeuupAropX~up…ntnwpJipmrqqs‹otŽ`‹s‰fwmliqidjujolihpˆkmcqlfjWokbrsjSirptwfp~jl]pmpnHnxkckak„fmnvoleŒn|usgnqfsmehaidhk`ftfqlkjƒpej‡mpqqŒqhlzqo“ohmm]rsgzmixk|kmlo“bzreumkdsh_qgphqdpmdogkpvttbooAkljsssv`rljukiqnkikht‘sthemydjpfjlVhompm]rhh}driiznwqmoenzomkz|ichhr`hkbjlki€hkzW_vjmmnpj_o}jwl‚ˆsgfoei`m{kronbjhbdm`vioekeon’veyqpm]hkih_kt{timr\u‡ogvnr`krlht^}koqyŠ[y[lgsqjj‚ifmrmkhrhmukoll|mon‚bok`tqxlQrmdp[lbtihk]fujhuiklmrkljofmigwjgngptjXyjkfejptunklpzxeyjehlfqkXl€hcn€”vdovmyiu_opeh„qqjhvhj]nogimpkojhjp}ranpupnƒelhmˆVtq{mt“tZs}[‰pojeurzsˆ||}‘‚„jnj{u‡rzy‹‰twez`vp{suv„p€lmvo„||yyzfqtmgotmossrpg|•z~vvW{naz„…_kzzŠym…{xyz{vquWˆj~qx}{tnrudwq}tjzxslvwYy”o`wwpz|wµsfjrp†€p‡kv~zckt|wryiuz|tozpzvj|efqyyw‡i^›Šruceo€lq}fo‡mzjzgnmyi|eosW‚axqkor~vwnn}•eswv`hngu~rokanlqe‹knztprvlptonbll†grkzrb©XvƒuweqGoqlmrvukitcqmjnen}fntisnbt[ocngynesiXljX]gmpkkTvgg[rho‰tvjs`rp_f^scqrwg‚trAleQoqkmjotpqasl`nf`olmp{Fqwpvncyp€pnqyzqqxelmusogBYgukolgrs_kkmhoe^w|rl|qsmxiforl‚dwxOonjuppxŠquƒjXtuwffb~s{pjnxTqtlnjSr›ply~to{ptxmmutwul£lmpnknnkwqmpŽfqupofk}xlpiˆnqmpsslokoni^EmSumqmTŽupDglpxqmjgcn.y[nokproToo:tkeohK¢k€pholn„m}qZ{mqkt~otonlruƒtvhjœowvqkRlM]mherqUqmlpms†Ylum‚khq~rq’qnnswogtll@ŽqinloqSwKl@om~n—\_nkipnuvIqcFlpvqR\nmlllqrxoci]kfsˆopmko^oGlorgvpmymlno^mtn…osokrlƒpnavndjjohkqqppm\[mhpulpi„pwpzmmqm†Uno@bfbnjnjonblnvLvnpp}mgqrenjSktoziTqn€n}gklopr_q“mrb‚q@`{ˆhoksupm†n‰uKnqlnkTjlliibqOhtrlhjˆ”loemqSmkivljitpjrnsamo‡igmYjh}knp}wmtqpp7pqogmjUqnkŒUxsmw}]h‚qmnkh‡lrŠ\rrf`gkqPxnph_wPtkOboHilxpkpYnnimpirSlooq|qh_nzumgrqqe~„lpNoLno„mbhqoa‡mrkgmolubkfmbthfjqmmRmn_hvn‹‚qngclpjvoxpqmfpqnvklhkt€pojfmdgkeagqptkkg‚nmpkflackuoik€vniiYwapq^w}p[nutqtskcg~jipsqolonjwriydˆpirkop|niicidk{Visnszokjhs7mhmekjiiql[onmkhmhkpyiknp_gmnsngklri]opwmhhrkkbshtwt­h^lol‚jkkonkv¢tfphdwolksvhcnzvljkihlqn|nyximfl\†lw\|pqemipg}vVunmrnhqjTstk{dŠlohoYsnunprnqjkmofgrm_rxooqo^rainpwmmkolsesmemjrXoohbmhm{sour{l\t^XtospkkwktkgQgqiqnlevi_rLWrh±|hoimysmj€o~]n…kufqjlommf^t{vl|Sqvp5djgoaillapbl]5niqpffs}unnjodnf{YlmswtqtqkI^geot`gs\vksm[rbTtmiry~qhositntslssoqgl¡r|\mmpo6ovimkmnpykinjrmxootlnyo`nimrrwtnkn“coXnoanmOds=i^mŠnxq_toqjfonnoqsƒnhaqsƒkwbfTm_npilkrqmg~umokk„popokup‹sljkyxqƒlrm€`nqlHn}mmbnmjŒK“hnnpvo‘su…mmndlkndpmm|ooskrm¥jqoXuihmG~Qm‹lopnjwn_•€oqj‘BmnLmnip~dngY\ur…oqgnnglullrimnmppolWy…wlYlworrn;mnnb{ejysTim`iwsmntwmfdqpp\eqk‹jw‡xn^llktlpuiqs_q‚brgtlo†Wovihetskojkgrwnihsgl|gjpfwjxniqop‚rkphoq…uxfeqngercwogrˆbŒmkooYpnvlrqpowldoqihBhsožhnkxzphjdlqo…p‚RjmwkMYmng}\vq`}k9mjjq\kpukgvqsjpl_namq]mgav`rnpmz€„n~rcnhs7m{ztlbsrl_vfovqhj]ikrwsdglkrz^[oh}aeelnlqsrajzqpjuohhptmkiior_o~ŠŽkhohnqmms]nqtt|Xqqoro{grxssqkpjj[xgoumpl\nmzisqqpsisirmQtkMoqvsilbqhvkgkr{uooe‹wpegao’qqsoowpqhhkfZnnmksvrZm\fp`\wcotlptlouro_uftjƒq]qmytdswleih…xtppogdq_mesokqjgŒklwvpf{‡jntpbavuSdiejrqjnnqodtm]reywv`rfp~luj`i_lwlw\obrsjnjuoihpwljqoqexelclngwhofm~ovzo…qWkxkjs^uoftqXƒfpmlevso]xjje]ngttaronth}qobpqsnfqnOh^jnkunhpnzmop]ronxcconmmdXmtpomqBplw|sYlrqxvƒnrpkeZmqs{bqph‚`s|axoqgcXvmiŒmttjcnewsjprqinJ`ql—Zdfqpjlfbg{nvijqlLƒmkhmosjyfveoi}ƒwstoZfjebk,qhz€tqowjiz}rkqbr\ljmvljalžtqsQslhy^isj`lvstnkujfbm~wvmwqnwqutq„rbfqwnjmwkovgXfWzgeuneuqqw`dqcsh{osgiwfol‚mqn‚okoplmmkpj|rja~opo‚imh`koajd_jmniXg†xlpby\ljd`e”fdmroWgqrkommsvsuhuntpsgndlnidbmomfzduljZvaplgo|herskclltjhhpqllmvpn`llqhl{}jsptgkf`\sqgocplstj”pqVlllzhmrdmpqmk^kqgqfjhrcwsbrjmsytfrsfqhshp]bˆbtmo„t^[uoW|dngoecrienVdSi}[oh]meopcztqzvxvjszomifl}sxliphksSsvSe‡jlcprjtptyVidrmmkunbT{pi_jptj^TpfsljpdzXyxVVnfgjliopnvjcblosqfklvjmlptugldumUf^xpfMxiufmypetZbdVlinliWqc`jfppoywiuŽkpfaZdovimhhnTydbvxrbgsohxhmYxsZehmuldgrl\q|qfwptgfc_osackhj}dpsavsvrYyfusopcdqmfgf`qsjuqshm~dln‚bj„mjjqolignrhjp`~i~j„qkw€vOnUnhl`pl…v^oliotmSofts|tj…\~mocilmkore~fh}mrkfkn]bljrodlconOc}-mz…f^jlpafm‚ojxrmqq^{xn‰loookqwllzmvcpggTkhi]lhveomtduSs7]RmnqqtsiVt|YUnonspnk>kofl€wa[˜cizqjwsnhjVrphowgkwhlo@bqafqwSoo]dƒnn^j‚€olnx€nZjgmlopzpkq~mlrmynsjsjkrf\fljjafupk[uIm=isjn[hlbsqfknynTknn`l‹x^jQgejqqpfjl}ko[tmtgnph^up`pso^qzn|WHomxXi_a…tscYeqnkrp`nNjlbljtrmmnnoz\okkrrmqmlqpspvVyekui{mwpuj‡joqeklmpmn[kysolslikwojnjwofceSlnWffi˜QKp|qsoprlkpllD„oenC`nu€koznLzonrrdokvlkqqs`us|eo†lkmzoc}ln‚pb{hyivjghg{jesopopfial_o_~pŠsmprrwquoc‰kp~|‚zgV{ktsvp{plksfNrkiiuoka`mmtkzNspowjpstvao‚n\lzwxh\nler`lylzooklljmj~ps]vrirakl\go`kygkzsqsohwpvcmtjs{ytt{mdu{kuklyngntstjicpboikkommjsjtvjHuZsehwncq~asukdxtjllbngscdgedp\mjnnvqfgcfsmi]shfcmrpaYdiqdn]uwdwaiskibSm|^heqXpqmtSKxlpdi\jfj]gf]aDvŽs†fgqmtSgflf‡p~gre^dj[p„br|snozgklovg]pmilmlib\c|ngmW^gbtzrnNykpViXorbjtf^ŒmjjU”fm|`lujoegfL‡p\cip^k^opdmispZw^shzhWfpmfoq{lp‚o}gww]fgmuk^rOncqƒwqphvjmhqrsdhgn‹qeRa`vghcfl~|zLYapdrsmpkwjWrniokonlrmd\qjmxt\glgduixUq„HhnqpmCpjnNkknWreo^rnjqdoon’llgmrtqjnoonnxnobn€mrŽakOqolqlyilo{s_kppipovogeli—nu_uakˆmmpoipi]j\egnpw^jlmmmun}‡vqo†rr`pnaoŠ€rqq›pŠrmonkf§p\ionxjrojomjiuyomllmhlrroojtŠl]osntxjnTHqunljmXdg|spnhlbkqurltmjiSp]\kt…roijoŒjulmnriom^pmq2}pxocklnmuN¹lno\Znl|itgpoeojksmlhoqftvnglqY|z'ulkpll…pdygpoxblsptkr\Ypmrsooa}rmsmpspiqlqsdspelgmdbtIkorrtoqfmjpilovttfsmjwfSn>nm`vqjxsrYmm=sopkliomqi‹nep9qpvJhlvpjhmhs_s‡tgX`soq^nljsskRz}ªv\opksnrcrmoljgnqmu^iouwsjqihojbtiiRXijoqnpbq%kOiomymlirotq`mgruexmqqiintnvnwpgsmrugrkSnnphdiptpjoo_ilxxg\r]mgKrkhloqkdglmhgefjjlrr`aohotukmhp\k{nqsogpkpkqoTklqa|{Xrqk^onm‚nkkvjivmvdsikqvswpbsc4jpqum|tr`rohekakocppsasynlR[hiookqq$j\k_mlernoamqhwmpfiMgc•oxppcm~qgmqswknkYvkmlumtebnlqqPrZulqhpkqujsrhhmafnsjk{2momktc]lpSljhpgohc\ol`slnplrqhrho_ztmql…^eljoko|mgp`btzmphrkpcnbXhvxƒl_clorjkRljeluum\jqepmj~oimjwrec|Zuii_hndqnwlonu_lpt{n_pSv|kojjtxmg\yqf…ae{{ƒgs^tlitsnpidnyqgjinoyp‘iokklmgtovulho`Snpkgyekomhxnc|qxpmlodhmpkrbpppb[ivoYtossqlpjtpjmramnqgnqgsmhb_¨Xkhhfjnrqhgr^jstyqan}npqloqcrlmyowqhmhYvmnn]‹oinSsntVkkoŠmsmqrbpm˜fixnmlkmmjono^qjVjppnaflwUk?pyopmmmo_telrmrnq\ow@pV„jph‡etcltnlrosšs‘yqom{‹ksnotmt`˜vejLnk€njrp]vkkjonflnmoqm6c{lpgnmpyhmhopregkptom¨pmnnns™RnkKmq€m€eDollpqoW}dMmomo]]nnujljlakaa|0frbnhlmojmnnookqljppsn_Š’spglšol>“kkw~Zƒn\pLeOymrkz~oiscqppisno…pvouevnnVnj`jojmsnumnlW~m}btjpQpeiJjrptpkozfnkm«qnoqkiagk_d†ˆt^cXproliorjqlƒfdZisqfscxliueo:€fqm‰p_wdhzl{klpj}hu]klpiq“afqo`tgmhktxmmo\dtfjmm‚hrrordimtdrƒoj›gnqprXupoumjjZN}smsygqmiipgvqp˜z~]v~dueyqkgkisriomjVolnmjpPikrgtgWƒsrxjgOmv_yidnƒqlmoicsgtyaUw~psV}~stumrllfe\~erehoerjXkuUkdkq[nqhtpc\rwpckntithpjmhoir:pq…ZojlNpyWtzgtWfŠo`x^jOmivNeapgysn{up|osZQfYplukmosj?urkVfwmiwfnsnlc_ycmQdalqjYqŠgiqdhfs|ijoqmsepl}ikcsrh3˜rxvko}[”llfYlnfozlZgvqjjmmkmirylLjsojpekixbvilvk_hnDrqcmjpVlimlpmo@lmzlfokYlekbsoietl{ldgiilKrkp]yqgr`kxhkhijtmxn~nl…pwnw\dj{i’oXon}kLqPslrxhipt_rvlgBngsziphfqr€k^patnnejqubgur{ryR€rqqlR\tn}cripodsq}zmSsrpftmvmmlhpŠsralbtsormhqgtwpmsdjcZ[[lOym{n‡Šrw]ulfisz‰Wu?lqp[vhvJrjrrjbg{|fvnokotmwbqkr‚kkr‡malkqcekmhtq…olrpgtftfo|~sujmmqiko;eswq”jin„jrk…klzkM^np@Nl|mplmrosqmmyŽqgposkjkw`l‰m4nrmHmo{hnopkoiŒjl†oawl_b|{imokkpoZpoZmlnok;nvqpqsraznn_mrapgmox…krlknxrphpopRLpoq~n‚lvor}mhrikutlkquGqkppip‚{hpWdmwoWŽKmQnmll…Zstnkqpq|jmnurltmak=tto_pemmtlpwramnpolommolk~c˜ypmn{jn@]Pngv{bpal\gƒlsog\zlkpPnfpJsyqknsfoi_wn]ou`lyipxt^pprysf{wva_^Lpd„k[tpsdo_kn~{rzusmi_j]fiRsii`nirpkpq}sYj`{iFqnm|Pnmfisgji}mgy‘dzYujprtVmjqgnmemYmlp„ioaonfhuwmh_xfw‡j~hdtoZ`tjxtpj~ZfoVqnhkwqqunnhmz’ulXoqf|\€njbru}r_dmj{n€r€luifpnnqjjkdqvaklrg‡lvusfnk}w€kpdogzno|ikxgdqukm€lrk[kkq„oqoenqumvXknVwiUokmpmjsnnl\Rmvnmsslfodno–p?owpfoˆoOnklmpn…m“Ojrfnp‚egspmnmnngmypOgnrlb[kknkmpnwWpnits„€mpUlšpmli_oeflronjoZpenlnmq'qp~qomdrlknmpsanokmgoZ~Smcak„n’wbl…nnio‰ktqIjkslxulm~gpknrqc†|¡trssmpmmfm^prnqmlkzpll€RVrilo]ojTWUmjebŽKqi‡pAunmnjekawdrmjnklœnnqi„{hphhgNoekjqf]omsfvm}stRsqmqMUgkoˆnbeonXomlpkrmoTpsopfnf^kUfgplnltsorywLvumlqvsqikqqqJ~jon?fqfminmdllogan]hujmqqiˆkppadtr‡kieniqtmkavislzllohnn[‡Tj¥foEntfpqoqnrph]nadqlpmpxpnCmmtmkn~„hd}kwhqtjn…o}qtnfongmknV\]mjcfXlstZŒjlrin[k_s„l†qqnnH[lpmTknjkqhnommnl‚ŽqpWsmqqonsjqqonoŒsmduo…kpHevqmƒkml_nswoƒbUlrlqnmQnŒbl~Sni[xjowlgnno}dpluZgnkn€vjnmlvr}nporlph—mk{kV…ojnqpNppaqluS{‚nodm@oXqpxpkl|pmmjkqLwmmpmpnƒg^mknq›lSoxvXgnpvb„m~eqkqn€„moppkwnTkx|‡qodmplmqkmunlptkpnaponzuftsqmlmMVFnnpobTluml…kimq‘nntjdkkm`pkmblkgmg]lnT\rInspqklzsnvvlolgj‡vhCimQpimrnsnhjlgkˆqimklqRkdanOhivŽœ€nnpnlhl“l\htjmmnx…mktnroovtop„oinottjgwmslumbsowppnUW:so{rtnmrdroonhnwmmnGpllipk¸prnXxmPlisŸm}inpltmoqGpiow‰pkonlrqv3Sv’}m™qshmmgm„momokmlonnp_ril{mchq…ZCml{r_Ut_nji‚rniostlnqQlotLmnpcokwkzqnoR~nzmnnnplppomR=kƒhl‚rtFha™lhqvlumcnntrlpnhijpImrPswdsXo‡xjgppinhGjwp]xnolr†plkqmtnrfxlkWpjqpooo|Œpmo€oTnq}qor]xtplokzo{mmlpnnchmorom•lnpomo^u‡mGepwm_falUrmodjFsonmrjodMmnenkroipTM~OˆnVrokljxnlnlopnpm~plpBuWnmqn†oj^Q|nmo{m|kfnglo`nlsg‚jxognia|jdpvdfjmsmmmqslmg}Z[lag‚hjqZ]‚pdrnf_fqj…nlqghynq\dyqjvldpWgvThjcwieepg]pp`X_o{n{vfvqdp_elvmv‚`m‚lhao^x\tqubdfjnamzxmndk_foltovo{i†xpkZmvhhfhvhdjnein{ee_imljrlmuekisolZˆlerui{`wggik_u]qtƒqdqnuo{d_rXZfsZ_jwklfmdctSlpgo^„nildwlglVlpgfole}jNdgpnl‡}ihriqojyotoknpnpjpqnbvotnkmmqqnomogOqdvktnn€sqMlenEpkk“`pZxWkklmpi~m(rqŒko]oekynkpokbohr¥ukupsˆmmiorroˆ‰fipXqcojlvmHxjmmVienionnpl‚fontqotstpXojl|qoffmmylolkqpWƒ†o…own€Tmpnlnnk„kkn¶^nlrz~lm‚kmrnŠqRV~xnkhwliqmilqojnlnmm_qjmI}ssorpPonLorqkfVQbomou|mgtwqgiqflm_Znp|r`qitˆ`ieuJkm~jh€ty…wtZu`dq‹tltommesppvnyfgqlmQwmlQij`hnr_slxpidqiuljTc`roqpizhob|gMŠP\wpkojasqmlhor~kqkv}rnk?ƒmnŒzrnf}vkslUng}f£linyrmw€jhknpfz~stnapjwgvkpm`kmbŒFgiqkpmu_tkhždTvŠx7pqpunlm[ujSumml[rCTatznjrmcnhZpolaphe‡fljh{{hojnlhtkdigpskoehqxmelCoOt€dtrrqnZpm{mƒ`logghkkNgrXv``nbopbqjpmdippjtJpolu]mlqklpgqpntpausslŠqzbo|duxqm€gb}Orsos‹Y\mqwftnqYkpWdsemlaloqvrg`pY|ahlromtksqyv†p`[x€yhYu^qmk{pdijnrpqhq_kpzsnSopj^_spbug`\grpvqguqBalionqsqZklawX_qotUpuoip`rwYVpdot\myrfkrxocrzpidn|ruvlqqq^unvmjomrhomnckptnvTpmUdk~nknlgmoqntmhlUojep‚7tPunn>l}mScn…pjmlpoqokom˜qYˆz…iho›kmhmo_mƒhzrmonf‚kkipntmuXuqn]slYqopoQemtjsq]hmkhome~”fndo{lupqqnlnltshorjZŒnmpporZmngƒq0n~R–lZrpkjNkmDrmpq\Mllshkmo|nP…F)to‹nounk_nklongolk…lnoVP\xldj”pk„|sttrkjt‚nsqpknnnvdok`rqgsrzZbnuoshlodgZvspmuey†erbkrtofy_bulooswrlsbpproXopfqmowgmrt]urawnonsmkyjathm^vmuihteg{Fpvqofru^ztnjru\ptf|nthpTlonllWotfohqpgottsgs{woasv{jkm]fhqj‹pmcfppwpomkoqlhlkjihWpgxpoodq}nqs€rvk~jjyxnrnismnYzgxpf{km|pfmntsVpjkte[ssjhvjnrlpnslvjmnmb’ommmzxmmrpnmlSlukmso~q}Rnl˜nqblnlpuosglst{njuŒqm—tpeovjkqmo¥rlli^qrppjnbmŠbnyDszw]gstptlno]tyjoalojhWqppqmopm\sonwmm~lnjmJsnookmknncqnnT‚_oqnnnwml}jqnpppeqql\loronm~WŠm\rqonpiZmtkmroXrq\`qomol‡nrmnkl\n^qnyq`nmxnjƒllpmmqnpj~moojŽgllnllqˆOipncxg\k{t[m\nsml~dlapqoi‘kkm€jlwkypmÿrmmpmnokkfooq|njcqsLgrqpy\mvj^nnimtmxsjmnkvkkxnyqm`ˆokx‚bnloonmovkZmpllmtuimqnprmlƒ`lqrGet[pjwnycqjqJmTgn{rqm`BkmooiwoOjmgsmktngmrjjœupjnniprhXkt}opk|\oqmjnmmn_neErqonpqmmrkmtirinmSmalkiolklunhmnmpkpm{okn™bptlxltmlyyPpqrd†QuYn^pnfinqZtkm]rpxcpioWkhzpgynnZunamnpufnjmmpmjpqkoikFfrbqlqsmfkbiluykgmlppdq“gqMvpmpYVg8mfjhvˆnRw{jmjktnshujprlgcokrUn{vrevrjosmldpxmsYlmiMAtkliorˆwntmdnŒwnbrmng{nsnkms_€rlƒ_o…ntZUsˆnnoks~lx•}mspfykr„mknlng‘__PzpasoijkvjxnmoiusoYplmp~Z|njidpkjV{qlhvz jwsqsohxponquvoiopemurqm„uYkmogmoknptqrzqqceniqjmps]qknkfobqgslppiiSisotklr\mhmmlkqpq\}nlruptokbhrsaponklZwQ„hsfmiknmbmg©n^ur^mopxhmsm lsxdqlrpskjpqiqYsxturyqop‡||mkOpieˆvopkiqjdtlighcorkb‚mmgmsrspwkmllkjaSjmkunqzqpr[nFp“mƒtnrnowgj‹cnlsmsmmsulqsvg\ligjnbsqkplepjqkioqwn[npo~^iziTiejp‘^Rqiag€‡iuhkq{gnmlulomobiopflkonlmmroion_‰onjpmmokolpr-ioot|mtŸiˆ’qco„n_nhkn_pOpolsrnzmD¦kZVp\ogeuNqlmqqapuj}klkp—intsployXlonjqs‘qkqnw}pul‚qQrolkni¦—pkpTjhjwlprmlolnqnook}=ospoou¤]zm^mlqsJ~roPpmlpaseeiopqoxmoojfmphFjY†oo`qmkimnbnrpnhlq~omnlbkqirkeoqf‚TooohioVsfkbqnmmrcptqXppkynilrifshˆtnotƒkPpoophmrplpvYrfto€oZxjtOpynxlvmˆsmwl†pnmmnqwnuoPhoidj€gllooms–i{o€[llfq{pljqlpnXTxpkŠnmArq^lcWlfoXoPqnFhloƒGsodnpkoonzmjmixlmqpkŽŠpmmlqm_n}mrXldok}cm^mmlqcpoglmjWGkpvmmoo|cuUgi•m]mnoqn~plpkjqhmo^nmoUoLƒqYmgnj}gnmokw]qk`j}niunofhtcajsn{lklaZqdclxqokngt^n]ypp`e\kQhuQmnœ_tto^qhrsilps\m|mnppfmn^|fthmm‰mm\doon[vgY€jhu|usmjqNxPh}Rwmaodlni[nk[olYRlupileOpjlSylb€manmgvibrbhx^yu^gtjcejeLklslo"Y]tsr\fkxmgmuncslwvmnmpnhlgneoscrwxobge…kihmo£meWhrvrPfk]qvlo^ncpbigtt_oSojmpqlQ{nnqspo‚pwitvgmkwptvisjktjqplifkLenrzlygopmjfukokiZ€o‘fsnvRgGYz|p{pQjm{pYVtmrmsqj{noho~†_J“”tiƒfgxosql„xInlkso`hmpii~jsBUk_ljTdmhar~‚urrgluhvgtox{t_lolbhvlsvqigpVhlpjklXp{mvyp`JaoŒnp„lyeclwrnvnrˆia6chtltkeqUkbtrnW|uhQomtir_vqcrknnoxx|o^lsk`_ebuˆj‡sjy…€kmfR…_hjŒuorneikproiyogyilssgoc`jlovojnptq|qpmuj€kqposhrniWqvls_nknpjjiuˆpofgqatolfjmfgeplrgqnrmjsUl‡^pWozhqqbh‚qeoorjprsiutfdwqlsU{krijg{jppelpmezhnrnopngmvmhguJnoljk[yqheslŒwhldmtngqixnktlcelkftnitrhucnlqnfgiqm£m|[tpmlkmrgvtm~eaoobkgkrmylgjjnne{ifitomskgnojfjkkemgkpoml„xlkr`nph}lcnDmntng„qotOo’nkslfqjpnqu•mVtqXnp–f‡{qˆt\mpm{wmfsUrllhvrƒpc‹qpppƒ_4“prowlmrElB|ymnqo]konnpuqopsin‡ma]rrli|oolpnZlk5jqk_TNmnhj‚o\okXopklsnsopj^Xphkqrv^†qlkmZldi`rBnqpllZjn‡nnggysjk\rpmpqg:l„q|v°msmpownlpomijofnunzjukjeknqoh†gto}o]UpeoYp`srlnnrjspQnmeTklozukmq‚onmdgmlqlilrnmmqvmj¢pnch‡œtx¢htlqpwqgmn_qLipllpmYk{dkgŒnbP†]m[jrsrrƒfHqgQllmikqgksfoŠasnmKlrclnknh~kkgzmenoUnlpP_topƒnynsfk[opojtqsuqk6oqmnloiQFan¢plnm†[lnˆknmpKaluƒqnq`xkqrlninonlwUtzqloonokcploopilmlmomx}cldqldoobwenku{ˆuq{q~mk{iinyku†`nqmttoal‚‹Suspiwgp‰qeyax‰{|tbjqkƒtlblborglx_neqpqpauvkwXiwgbaqcio]vqzeiqqmoqahw\njessgŠifoopŠuowdrsqwjo^onTmlxpikdmo\neWogkt_ltinuppo|lv[ritcn]rjioisi^{WrpogomanRzongsncŠnpkavkkRz{qsa}jy]t`k]tlnkr]nin}dvom{rzvndpfpqTlttrimorttnpprlutsqqpnpcftti^qhxibŒrhtou\lwxp_kwdyk•ligkyhzvtcsnk^kn[Xjrdv]grkjx„vppqqppUrYtqrhpuufzjileovy_{raedi{u\s…szqwl^‡lmkp_lxjm]m\sggpemcbydƒfZkenLnljdrjteYYmbjpxrvuk{]ynohX`upvpufyooesjmlˆqibg‚aolaolk_bnqprlpwvppnŠn~‡xo^`mlQ_otewXel…kdngkj[mzyzmtbJnr|^i‚qxibSiehidrlrincryrthmpocljjslqmnjmƒumdpdo^lzkGvkl†tlzoilltnw]q{oq\igrm…mikeoevrxn~iforhudooWklpkqmrmWsrmbk†sem}nˆŠostzQ7cog{ork{njmn†govlrvvylivnrnxdwoqjjmkrojpkyofrpfzvpkmimnrnvpgylnliig_p]skqYogiv€mfmnmol6qporkkpxR…tZnrokmeqv^xr\pij^~lpslmh|n™n_onmoiid|{mupltqlqimvpˆrhdo‰oqj^gpiiPohehjcnkqgqom{phlqkul`pojolrnnppmikqkorlnipgknoqvnjZnq\jsfgjnoonjqqmeknimujoegsjpoxhkmgppmmlurilnhlrjhokcmcotlnpolqnnmmqqhlqdm«jlnnmelhhkkn`khk`mpnbijlsuleojodnorpepnrokpzknlklqlmfemmpld|ocmmhrarrlhnpocpgjpumvlzjqhrrppqym^ikfpjikpgiqmpkmkpilo‰gjtk¬km€nqlpioomlSmlkm`emno_vuopmosqrrnslniaqowfEtvwHk…oTppm[kn`p|minsilrmnht„cn…‹ˆ|v`lsnrihoKjnxkonlzrknqriphflmt^gw£flylp€lnp}n‚mhcrrp›v…€pcnslBmspqppigo{jxl€glrrpqlwvfiWyrpodlZkginnnhgnoolnmvoomropoih`lc„dlhtsmrno]nqnmspojk}pnn…[sgjeo_kwfXcki_lUrodsMo=npomšlppzllkiokpinnkrqlmonojoknkkvlhrmri]mtvk†hnQmc}mlm_lmcqmgs~ipmkpnmtHigrsg}~arzkmkoqRoˆkirnikqŠinlkmmno€tpm…hkžpjim{gomk_lvhnMnlm„ˆknEkVoKjhjljoqsn}jpq]cngsmnkalninkjny–‡jnojnjlovƒokqmn5jniqgyl~jlvwsooGpmionpo_kmnpnmnojlnZkntmXoQpoh8npmpwj\n‚hlhhntlhxj‹nrOqqlpUmqohnooo|spjŽqh,kqˆfrkmojmnXxkwmnsmlmin\o[kYni|lqoaxnnsqo`qmokmriˆHhlCam¦lYq\mXkmmjo®ktkppnkhtnp‹llmmrmjkeffrio{rnwl}qroruioholmŽŽjrfipYpm„€dmozx{ykhqdrvqkskXelrmknnn`sropsljmQvpm`do`noijkoikmio_o_opel‡]tork`mbopmxrp}tUkolwkh€mu“ly_nou‹omcnlrunzmfp¶yomrq‡iulmnwp[rqjlvmX6jlxoi`nlpq}fj…nqpSzbkpgjtjPkjZrknlmxskmkbknmspmm^opkJƒr^oddtOwopmgbsg|clptPlnOoo{m}fx„MolnYlovmnthymlksozv~nnkvkuthvgksp‚zdqiepdEkqlQomn[jqsljjho~qr†hziiVpnstskonsoTpfhudhaixnl\k^xndlskvmhoZkSt`s€efo}opvsdhiin`imauqlolnZhƒkkkhnhihg_t]h†b|CardfshspcTokzaoNnnpbbnsh`zswkknpplkrpofsmmpdejelkn]lmnrxihVpgnokcmlknjwyl\ijqDgpijikpSnoknHk|{MzŒjmigpujyw[lsnlccunqnqpnsxlsjslmnshpetlphY}qinselniglYfnmopuvq€mrs€lOqtN~pnr_ookumntlr}oƒpfdmojwdWeVjzdld`oxxqmxulpgowglp`tcldqujhrkpdjhpl^kTszpfbjj^~Nc}novl€mknrunjvmyaZoŒkneclpmvvrrhjnkptjjwmo]tfgahzklimXbbnpd{uefinhtgmplwtifpligSXrpqqgiknksjsirhiitknmqyxSulhYjtkqwmYqmrrjmu`coplcqp|nlmpsu_rsrposhfjmltspcehfmjinoeyfkowc\umpokjpwnusmlutkrmnkmxl‡tiptrhipqlfnwovnxopjmrvvibepdpiofqcpjuorooyy{wrvophnfkrzujwmfo`{pmjtsyjiqiptjlmgonornsvhbyfqvrlhrrsmlqnxfyqufqtollklu€vw\ktmkilntlxlnomklhmnihipve|olnsihkprgciqrentjkro…uviyqjuo^okssrjmoqqmjsgr„to{tbtrhlsp`jt€{vqltvhiod`dZvxohq{iisaydm_ua…spmkokjnlfTkpatfWkUxjnRdwrqsmc_umghmxlmzhlwj^‡kilovvhailkshqkxpf`ƒ]jmt_kqxqiimijkrf__s}qbitlpUjllmogmqptor]agvdoqkdo‚llmmzrqeaxpnrmhkgeO|Xr{frkiwzciNqllwcakp|oqqrlhop~or{tpt‰|lŽdnpipoynhlŠjnkufkicjtjnVk{mˆcnoeswjosovz†tlikcooŽqqjolioqb‡qown€rZD{iovssmYeKo|dobRpkRgk†slnvyoj\onpq”k}lalgxmwvvml_mktSthchkuglfjzqnhijrqmVuhispck[u[jeqhq_i\fyrhyljoZuZkusrdrwspvxpupVq^ximnkxxiiwacqfakomaqoplqgqcpmdQUrq{bbglkbu]j]urmtvnjqpzctml^krqrbyy]qmilll{potuqspanjimZkmasZmbmfhTn`Jkcnplhsgbqk]plpjv[mmflfkposlsJqciutyaqZpm€€bqmfyshoj]WjtheQ€mT|iqurbtskpjhqumhm`wsllwaae[sspjuxnd%lpmo_mtoWjrQykzjjin^cnkjkmmbspposeiytlmXophj^jxl|mnlessvptktaoreRflqOmhoEqtvlktipsiWHs[WrUiwoqq{i^hopvnpWtulxmx}n\ntljkl]ylkghhoyqtcjuqwlpqS…suzˆh…phsw`Tl|OSgkf€iqeq`t@j{m]hgnmfoMomppfkiv]nunmGivmjxsmraVzlssopl=ik‚‚jnL_rqpycpthu{lnsqpvkdjrmumgdiemgnmojfFsgufmqop:i|dzIrkPd}fqs}lYr[MmwppjFpk|foenopyhrgmilhhbkiylouoysgkXpmnNglolp~hsrfijijnrildg|tRe|nzqtmijpqoyndpqgplpfpqkownrn~ebiqsfljssVfmtm\lhgpi_t„uvkkrqzXxwn^qyhlrrfoix_kvyUiqhijyqtmsojjWm_moslkqhqjzu`rjZqnfkhghnhoh_llzoxqqnaqetlupuuoimZypiltoouwbqqssumsOfg_rhrrqsrfgZf~lmfvboimoojjTrsqxoPnyqrlcroieiosqfm~jnhsmkjlNlnqanoljjpo|krvllannWoTojmjloqmnqk{kbqq„qKBoƒYnTo\oapztm¬w~pkisplejf€qzWk‰ULlhenplknjjmZ~rqhnŽonpqomr^ztmkobšppkmo…lohj~mompoq‚bonuqwogkpLgnnilkmtjmƒwnmlksq`yl‰vmMnnOƒniqonky|q~GzmolXpoojfmlt^flap`oq\pmvpl[kdpqpwloixopmks€wltp„ll7SenspwPnm]r[qnb`iionShlq_j{{hopukRdqtfs`kphnmg)^hwc_pyfpYcQgrkor]emdnhrnrfiqcs\{|jlogehnluusqjph]prhj`eoIupoTmh_{|iV†fa~amurrgsknnopocnlghbrmqluoOwroorgmn"nknŒ_kjluzTlg]zrrjj/whnwipko`skontqvtqnmihomdip|j^aovhnzrlFfkgq]pjp`rrqoposn[gslisljinhrpstcnish~fMxyhdOnipelsqe^kqqo|ook‹pmj{nhnbillklppoQsm€lqplijpooqyquoj„poXildn‹n{oqofloBnrlmmomtkY4oN]l‰l=Xigkromn@oSoaWnnpl‘mmjminkh]rpnm]‚qpplpdnpj†ounoƒmilolGmmnocolnljpmmuoglmlos`piqlmnc{qoƒ_oboZg|punonqgpkpŒejlm|qln`onhnxsv`Žlam`orimnongmnorlolfnlnd‹{kyn”jrYhalpwr°solWppupljwss_ieqpdpuZrhyrcmhpjohmhroxrqjcdpn]cnnxd_fpo]`eqooyllm`qorfpwnpxsn`nyldklb‚nhgith^{lqkgo]cdlq†ektjcq…ld\ssjmevrdplxqxqjiniwkyojprsmympelssjkbilq{jqjziqgqjhpntikneohqeflgtfetppllsiyroyihqmurk‡wy{znnkhsxkbrtqhjndkvnvg†pcirmhk|rjmbp_nrtonnrpdhbgglofkmopxnnxwnjdhmegvmkwi_jnoiuqzokqkinpjoouNs\ttWlx.u`rt‚nHndivnoˆkfimnuipVlW€p~ŠsƒP|>ppkpoirTrŠgyfhtqf:gjpqktsy]otom9jj[kupquiTmurnVpnmj7tonnGnvon\npiprsxlop‰‹osnqosvom]ikRo€h†n‚dmror[fqmlmikk‰jp‹jopkblxŒzs`nulnmnn‹mqnopxmnl„lonL\jl„kxmk<‚‡ni^\R|npmwu“opqmjkmktWkq€guxcnmk‚‚|pmlkmliqjc‹qlscƒxmo\nujrr{kZpsnocpnnr’pksktr~i™osir`qllmjmmnz_novy‡|njiy¤is†smltomVqpXrpovk~wp^vVljrmonqisVkoxzrkqnoovpq`jfhfmksp^€oqnessjygn|fu_uh™ssroitcongn~Šmj`uspeoosungkvvtkjnleonss^rpppjhoephqjogmpvoeqyhinxknpylzcpgplsloggamkrvqnr|rllYnunajq[qpnioleg€mupqqk]mo}ugm|kpikrap€mofpknpj^olu_wmlTtrpcEkul]oopm[khgt†djaplSsztpfrkgpait‚uioVk`lqxgrfusimseg_kv^diqn`nFZvq{qzjc`cmq}Of†j{7ˆg[|uinnn\knWnpUks_]nlutOqm‡pugpoptmqstnz\qleiSbYhg\gjnodkmhUjqun_t^vmpho~pgqQ‡tnlvfdLmhpnS‚ug_Œfenfigmzjig|—„o_jjclyxg[tryvp|mtilhqmiXnjYjokhoOnrgnrjcnkmhazdrlnntAkgpgmSnmkbkbksqm_ju]lAplTlqYnhSrmpkgrbkp}tim]rfljgrqu]hmlo]uirnomnpoi‚ol^ikgq{npjyio~[qfwVhenhmmhsbpvopafsgnlqn{keomipƒnckrqhonhqksgvpiXsvyxkdrbqhfxsktvfrqojolnftslUrnhTgnqbnmefwˆmopajmwYvodkqstldlqi\jZkgkitzmdmhpcdsqYorkink[vxjrlnosvkanrkkk{pqiltmerj]tkrlonn{wnkooqolowjkvissp}pekojlx`lumren_bqctgl^pYlmrljnrrxgqwnmgfj[tnovcrlmwg{qmmzofjnsokmbi^^htnmmnkioosiiwmksumplpeylamtfmlsil`pqhsrqqƒn„khomsoqnhbsmigloijkkgphpeuulytnyhlengmrtgjoninszpmn`ktgqm^pwf€ftnkogcnhmrlimornglxaosljonnlxjjjrjjkmryrkibhlpjbjmqqg{h`gots\bsplpdoqppXmxoxudlkqqdtinrdoqirfcrtqlrjzlotewouyuperkjompr_tmnjfiidWr\qerom{kmjkvufqiyoexwhsewgjridiumnapmmoi\sorjaarqhnotlgozpgcuksajVboqgo{vtdVhqoqelhsrxqrvrijfmujnvoojmpkrsjvrhgqc^xquntjped\etteolbxihlnnk^lqkwmnsqpnljrs`jrvknjnwsmkljnnienqj^oljgpoaomjorxspŽXowpmnrooilpo~^jZkxTjlcvremxjƒokuVkopl…knpdorkoLolrJnppoyo~mmmrrqiƒtrjnojqjmjpkudlT_epzGmoSip]pr~orqSonjyrooNg†so„nOo‹hponmzvuonne|qqnkgppQuˆk]ilgoGc^qŒomlo}wlo[yppwdJkmŠmlxkznpe‘@|tkpqxfsml†oqpjtnqmlkmdbktjŒnwotTiqqhgdpjn‹oimsjgpnfalhm†ooiŠmpnYiovlcolnQXm‘mojomilklkxxp{qonnhior“qPn‹ommsmm|qhjeorolikeTnv„ko‘O_qblkqnk\miiqpogm…qhjkpln„qqo„h|nkkLm…[mpm]num€pmq¢'}opTq|penmyqhliopomlhTQnhkmqfymjjffnum„{eldonprXnoxH`njgƒplmmnomkfr…asBsh|kk{qmvlqqrgpnnlOmkprl;mlpo~fo&w|mmof!ovylžqkiŠ`iwm]fju|glu_jUs_ngpwobdlmWoqUnkWeroojnk_pXhugmognptnTlfnfnwunoq^u^}poljlstsnzlqmmuqvhesptuidj~ntbirkou„ohtsmkcJn~lnjop_okkboovsYru|n[owrfpr~srsvwc`ozsmkwZglnj{woebhnnphr]qtjptfnlmqoojjso`^r_lmn[qgd^Vhnlpqkqggkfr[_nfnd]}srowlec_jqop_ijqmrƒqoftntusupntsrplyvqpˆUmnpjihtorxniqqqfmnr\p[enwed;Ygeojersbkjlsvqfeqlknpypkhorscjvau`kfppimripslxmosmkoqp`jSsgddroomlnuperoo€r|kŠmljnifnIkH|nooh*jjnlftonjgrm1nz‰nkOo—cnokkq~hmqmjo\[ajoXlnqGko]okmlnmqpnovBmjooqtšw…m€kknn`ŠwuRpoj{lOqqewoqmudlnYmnxuirOWYµkp_oogpnvnonsmlinlmkqm}tfcoSoLkngtƒnntwPlki€rrhlqq4jukmtsqrZmjnxinnrkhlpŠUn”ksorqsurmli†m’lmsrˆJo}ZqWrunwsplkšo_qgpiqrk`{jcPs`Tjƒmblkjkqxv®o‹sjpnrimnpgilr|uwql}xVWphblkNpslklqjpgomi}GYmljmSsXzsxnjogil~cokUnkpupupn|zn¤wsfn—”Œp…pmkgS„nunsmjo`]jnroimqo~n‹•cpPrstilujpkiomoio[lloŒnPYmnodmkS~mlwtWgplm‚jhmomnmcpon}isjcjukdnnnplunnrllnnqnnnilrmjhvlirnnl`onsoo]lunorcrocn|jmpnmounanm|]jhlsznnnnpnkjmam€lmnqohonpptjohusnndot`lmwkmpopmmknrnilomkyhqo]kpnŒontoonlonmmhqaxqmnmrmgetooes[nvy|molnom{jhmzlmpoicomfpppnql}m^kkncknkjnuncnppppkonpmpVzbjmklkolp~lpltqndnnrvlo`cnlqjirmnibmrgnehg{lmplfojmlnmmmvogyelqkmifqdprovmpaepltgqsnhomiipporgjidiljlkvpqspflilkprlnnqgprfnkmselpxovlsjlsgasmkprptqopjqdomqrlqmlmlnnlomzpwrklirlrrnqoklkrojoqagkoqjpolVrmigglknpqrnpphminklsslkqZptvnumskbmklrgiiolniksckksngkohlnkkqonllitvomopnbpsnvroqpopxtrmllgrioonsfqqkt]qonjotninkknrlnmhmjttognxopfamrtenilnookiknpuqplcojpnhbqyvoytmkmlmnir]oƒqmmlltpspqtpmnhmmh\jvtmq_o}{pkpbjphkmopnerisngmnoynoknjonqnnnsrhjpqlotlulrqtmqmn{kis€spsoyudrnwopqmpqsrpntlg|ms~jjoqmmqkoodllpnmnooqqormsqoxolootfwmvtogkniltnji]YhupjxpqkinhplpmeP=nmkmown{ntoalwvxkokqgkmhgromtkjUmbhiqqoenkofnkmyepptollpssojxmWnqkfm„g`pfq^q`‰itscpwHokjkmwvnulpfymlqvhohojplakhnsjnnpkjktTlt^pivlbj]jujppkeXrkodnmwmmnsopdrtuik^nmswuin]uVrkosminokhlrillqppupo|ynsapdov‚nqrhstsxlnlnvoqjdnkbxlgpnhqslvosjpoqmxopplbrsisenthueojllqkƒkfvkahbbwlvopppbhagmhmphkpqxfpgjNkhnigmnkniprel_lmlfmjncmygfixnioljifjxnjvnzwpxrlnlidmcos|okvopnlhrtqnfmowjotlnkr\kcb\bmfmomhnuupovhkjimy„lpjhnlit|~oflqpm]wkmkrokm{wothcfrnzjrWmhjeodqapu\nphprsjursjji_{qskhhomotj^rno_ffmmgfƒmnkpunqsjgyopp_qilkrm^horemwnlmiqkxmrvookamugtlqjqjkjkXm]nhoeosojpnovkgpqnkgnsosnojIn}hbjfjhjxlqihdjdlt€|Uuispls|uiprikqndinfrmrnaqmwnoimqooo}nlokukhiftpekndenjmidll]impkgjbxqfdkxmksefokhnnapkdnkscmnm}dlwnmhlhjmmllŠvii{noxpqnjlh|mmkmnjoglnbnqoeqtltlkn{nilioknw|onprmmojnmpjjqmoocmnsolwolnnpopsmmrfmqpphlhlrvdmlpnsnionckjknlnojpnkmoslljzmpp\oltosZmqshmnnqkplklotroyjsnhpppglozl\fopnzormlwomo|`cln_mgqosnzmlmlnopjgo~‘plmntobgnmwntykeiqoymoll_hihYioqmo{pnropvnin|ls{otkqqomnblgohoomotspoq{jgonommnnvhrqpetlfknm}npj_r~qnqnrpwjxcatpjpeyjlmpkgkzqxcuhiokhrlhnhndpgqizpigppqkmmrnqmlbip`epgkptelgqoqmnkpplwg{ivrnaso_oj‘jmgknvtgqiqsmninmwlljwujklsnxoplimofjnmlnolpjpnolpmeuqqopvrsprelpl„jmlplojhnnnglkuop|iisknhjrffhilimnpnqnmrmyhkmrrojgmklodoqznjnkppbmmzqksrmktevmkltlimpjlnhmirlplmkkukqfRojoprmlnvqlmk^qhpomolpkinlcsnznp{ob\hyml\onommXlm]tlloomlmmpspqjxohh{gklmlmmncjnlgimnlnhoppopqnxulkhhqqvmqtocklpntm]lmmulryi„notkrofnlmmqnptqihnm|{ooonnp~vioƒfqZlqx|lponlkxcoocppooy|nqrnmslminrfbsmnmkofqhphnitjmkmml_l[thlpmmmyk_mkobywqqmxnlppomfbppndpmnflsjhjopnpnmsqpVpomlqorrnl~hoqtswmznrrlmijtpknnnm\qfpqnnonplyvnunmtlofo{qpqmmjqXpgjnlko_ostnjmlujqkqyoj†rp_mizmonqoolmtonrujompvlsmwnkcpmooonklosa|qoopmndkjpdplboujoneonkkqZivaoqro{colzomtmqieu]zpptomsrktmammpmponkqlptryootkfknnnUojsiluntokqgwgllkpl{fluijjvpnjwiqlsmfnlndnxilkhz‚skpnngqruvfkfko^cmqlgomrvlpgoqiq_lmxks}oluppopƒroqnt€kkqotnmirkrkwqgnezonfvlhsqtziysnkkqmcrŠikosslmtprkrognzgjqrneggjoridqnuuubimjnisl†nzhlujnmonpmkmqrljk_nqh‚ponklkpmnlmpipnnm~nnlungptrlmmmuvi|rkslkrskoolrjqmkj‚k|rpqlfWtkjsshkfjdqlwgthjnmocmikinhkjnjuufstllmlmqqznrgjlcoqwpmslbnmnqsnnh^uhwlpqolrjpmkrj_}kgxp}hnqkpw}]nnquYrhphqjvdumnmn~sljgr^lhppkkpqpkskmnnmplnrkmpm‚kmilktubsnfqopoxknsnmlktlrqkeolmvpofqrhmcpdtmotiakQmhosqhotdmljwippwqpnmsoblj{qivquopukymrnslqonkfrpohxmionmilngqeholpnvpjpssnjeooqqomouqnmretlrspnbmj|pl{ogkhsqqmejqjnkrapliikprnnvmrt|Ytqjsonkmlnilhrxpjnjumpnnpubnwdknmaqphoktqqlolhnmrim`nknjjetlsjunromxprnqxsnlki|llioirojtkptindr~lkpkjolpokgizhnwopzmocrllqhfuuq~qlegtiqnokZoeplkjonmqpyrfnntkgqolpenmlojwlrhrmmlwnmekqqqhvqj|nnlx`isqdvooapwpoponqfronhtknp{wknnzni‰shk†rqohyndd}mpqsjnunukukhcoedoisfgxmnsluqoqgipprmpknrrs[_elkdgpckmnsrhtkvqijmjpoojfdirqrmqlqhjrqjnb_nspmimyrropyw^geo„grypolflplnvfmkifvˆeropumnippsss]fpqj~nnmkhhedotohknwokbsllois]wimionttypnnkxlsmngloxfsjhozpjihokokrkmb[kotnnpko|jbfjjoxpei_sqgmlv`oioslkqsmogpgprjslgvjtkqmsmpvmsm^qnqustlqhjpueiqohnepjk{`vUijmUptmjoPqv|gomvonrgoqlhgpatulvkrlnar\nkbjflnfkpoohfqkl[s``ongndpooburrigmoiqkjjsmntq^ioqminivPpqtnhmjourirutmllbi`kseqgjfqumkquoonoonhfkkskdllopxjylylcrjmswrlkthjqmqlsjwlnqckjmnjbmnhltsoqgrokcctmtkhtmq^lrnkngnfnsiorjiv{ojvhomlnvnknmxotsoogjqhvnqlvdunqfjcwjjajop]rplhiattskolqltimijfrgmrnelkpkfyhdukxigplnlrqhkijmit€pfknlnylnlmusmvunupsipqhjqdmgqkpkkplinjntmgsitsusfjodifhswmjifuyrnpdhlnjtnkhouojhjinsosxiprmofrptnhkjlhponqgjjrminmmemnqtqhmktqnopxo^plgof`wvqnjl}mrkwunbmfhonnkitolon`Zhobgdkqkrkmljnmsplknjplslspmquprmqunsbnmkrihonlsnƒpmoqlnƒsvjnkl]nYjmeolnnnlotmp}`olnmpnbmlmtnpbodokonnool]ljjkiqnntnlnkppqiokwlu…bplonrmleqpnmmmmimsnnl{oqlokdhnzkinprsqzqop`ncpsol\ooqmdkmn{rqkoklfnpqjlyrvktqosnrijmr…ƒneomimwbrscmeh]mllwmmwkkooqrpnpzpsdjsgpMhnhqqppldnfkkdnrrqiomospploqpgnakenppimkqomnuldkltmpni^Zpmoksm€rpyppnsgpmspib]qoppoltlsotkoootc{mwnnniƒvlhxeornexpmumnrmomghahqohnkuontpznkmrqll{omnkpfxkzlgonMbzqktp…wsrnnnspmojnlsknmrlorjlltfjpmWjllkqtkzronkknrpnvoj{tenuvnfrttkmocjqymncrhmnqknpldbftnpqqorhkxpsopˆkgssfohepvjv{zkxndVcn_gpb„gpmqitmongn~qkvrotdkkooroopmmneifpfXikkllsomoiosnnF]mRrjesttqwqpomwngq]lrroqtsgimnmhrrtnnstpqqoƒpleiƒlkswj…o[pmgo{mcmtgqrnc}jjzXVfmhssolpyepnkorsmjpkoqejlkmlnfomhnmltosfikheoikbpnmsbisrmnhnfhqmqrrkomkk`mqgls|jqpepqmnxllnlmrdmppfkwrpngs`ojcshnhgvqmhim\kiqsdbrzthosrplpxcnrmovmhnnlmnihqjqllo^ktsjiosrihiolopjolnnwijomrxoskjiohbqsjmldrnspsmzjomnvkqynjjqfkbomnhnjmvlopkpbkhnkjmljnikhjtlmnngjmsqospprevogmvigcVthUlkmZtjvgnmndiSss|htnyikotjmeuyyrtmreodom{olmhpiintmkjpknmsdtm{nqitkkppnktmskhrpsprmlpoiqhgmrmdjqqcxygowrrnplql]fiisewqcrnlrrktmjoqnbcilhqatxoal\mgrprjXnnrkonlnmkfnlhoxkf]pnrqjplrqoopxmnraqoglrtnriojcsoenhrqoiesnfonngncntmobpfrrkoolnoolkmgntijoomfmorajlpLqqkqmolmtnmor`oYoomnnrprniXcqoqkxporqn‰poqoommtvplipnmmnkopnUzpborlmQjqrnmompppiq^\mnjjxlpnnoloxvpno…oknno{oqonnlhnxslzonoVwqonnoplemtqomllnkqnnj_fqkplmmqgnmblnwpql|mwlnjjsong[llnosfmqvnmolhlwsl`mjkpkusryokomormmnrnnmvupsqpoooo~txmjjiroshnnqttudzmr[xoqijnnglmj_olifojmkobkmvo{ntqcwqojajptqjoosinmjpnojkmhoohhgjZrlsnrrnppsnpmkknmlrtoukdfewpqlvylrxejunhfnlsupslmfjmzvqnj{nrm{plrhqqiljqpxkxnhqhpxlirqno~ggkonmpjksjjihkpkgphpqpvpmommujgjtihmhgwgoeapoxltmmjqkhqcwknmiollo{ljnmrnohniqnmrorsonkooolr^omkuljhepipsbmjznsr‡sxp‡vqqooglgl]rfmtkie^_mdmhzg{vnojhomnvryzrlnlhmp~oumijzitnkjggpsrphqsl\t~tvcipeukkirrriogYxontgjximnkijfpjm`rvnqntomolpcsleolhnmpjfrg{ktmnqb[totf|jki}qloqbjsgholr}qmnqikhjujlkimidmnqairncfkmfoqhtvz\jposnxmqjqijjkplhipamdmjkfhhogeholpgtnudfkrkprX^pinplu~spuyttonvksqzoeysuuto‚nsqoouruwonkjpivpomlnrqvlm|mnuoobpgorphqjwrnqqyl|svswoooemnms|rlpn‹kusnorupsvenr}‚h‰knkjvkukepwlxrumqqosnvjlpmhlohvws€yonytxwjvxoqmlungkynulewrqttplmmhqiytnlvkjaŠqrahkknkphkqvxtilvmrojzg]pju|rrmlvijtrojgmu_nkggklfozioepqopg`dlgunpu{qndq`itnumom€njghrzeƒŽnonopo\iiemsgqmgmtoulspnmkrkxfeiermtlneksznonmrndm~kkpmmmtkpkuwnq_rfoppmpms]l]nspnl]mmvkipkmfkmlizkrlr_nymmrtgpmtmdj{pu}omqusihq\rpmmlnvpmnqmolljsvlprsviosanprkkl{homwlpkyqumrjgexnpjcrrthkjnkequxnoln~punsokuaprtjomrkjykqkoroprjtnkrvorjuonuntykmvzkpqknmkqslmopdo_npnmi|rlbihnomqommmMpqnoqmpkdoqUlrhpl_t~mwunpkkslooiupmrptppourkpsrutors~llfq[ilonpoeomqnmnwpnrmwpnkxrpwomokpnlmnjZwnpqlmkepanXphvo€kbsiklkxq\lkVqmro`bominjmookhhfbloslkimmgrXomomnmmnmoophnpmxntnnqmlmknvflnjqjmlkmnpkipjoslrmujqmpplmlvemoahmmspoommgmlm`mnzqrskjkqjxpdmpmvn_jlsprlnonjocpznojumXdrslpnpnkqqotrWmnjqhapnpqnknbiprpmovyoqkonbmnltoklllknkqovjmvkkminl|jlnpsnrmhlTxolnnoqltklpaspoutkpwpnkwmtjt|mntllhmrjtmmrembtnegpfllkonxpdqrnmtjn_lmpvmqnmdltpm‚kxqojwwpr^rfpmldUmomceknjrhkxomnqu|rnphqkperkdknjtghnmqnrkfqninsfkjcqlmjllriomaqqoerkqofskqpmiooljxperlspqpnvipjw\omiq`en~iflnxojjkkqlsniiigjjqmnmmmpnhjnnotunzqhnlhgmsqjpqvsklqrhkxjiniqcoqhlhtj_nsjhpolroijkepirnbmercnmrsqnrmqrll`tnrktkzpjipkkjsorgnjpojrnlpubbmrmpofklptpgijmjjcyjrdikqlohmbaggusrkentmp|pdmaymhtknjllsikqqhqdcp_fqn[ramhmhurpfckrmmnlpplhnpu^pfcpfhmeotnrtiltrqlukxonsthrkmhosdoplrlvsonbkbhrn‰lmomonlerehsblsgntnjofphlhpqrhsaksnVkljvmmnolrhnhdlqlrehmsmjrrjwmqgqknnnqprwh]ficuonfoqttgmhpj_ippulkolrsikqoornpkpul•s{alonpWnmookommqpnmkqmnpjomlƒnpeplopopoonn~hk^sojmm[oqFlgr~ouocppojjmnoqpq}nlkmqujmkdavisrpqqvomp€toowmwkioonloxmnpnonirmn}mugmpl_mumljnml{\~fpoorm‚pkvnrnlpkmonmqonpqipm‰mrpfoljn[vdkomjkkrnj~xponyXoldmpomxkjhd[tqtnirolplspolloomqpnocuuyngmqnmrmYnknitelvqcqkduvohpzegppikpmfboƒxŠxqpdlrncjm`tistjujlwzquwifostpthn|pgryonunfqwkwjqvlnrmnoo{voqrnquploluoterimmrnqcquvsoesrmqsaprxlm[lrlldgnrfjplpwroloijtugmzljlsj]ojmpplmmfwnUvnomognssqitnopookpsptkimxcrnttwlonwƒrqkqgkoo^jktdtgmulmsnojploduntwsarnmrnmhnlpeimnkaodoWj}juopnutwja`glegpjnXklrljqrpkr{citRmucjjlwgnn}qnovhnijvarpogpkoomiktrsohvhjserohlpnsZpweKj_isljrioc|jongn„inmpplyut_opfknormnjilcn\emle_hpofoovpdkysklSpmmdjmiqohrnoodeuqpnokqsyverivojk‚pmvtqm_mowtwjkqtomemgmmlsrno[jvwenoWqjomjli`lnkznoljtmokqmemnmrnfnokbqvutmjrp]rdhtrqkjjhnkkjtlolfjyns\hi`olmllqttk\qewpkzohkmpnkrhrqmmnmumg]afmseqpkovnqpogsbkpgjlui€knmhilmifpbumpcjnlemalqojlvsnsynqlllgnmklpqkojonf\jirkqkpdlinmvqkn_grh{nomonplwhnljncqrnn{jnhkpsX{boosorqtlqpYhhipj]olm[rqlkkphqqmrepmulerugmm€npojtpoofjjkmpqojmvmyfpkqmpkhmlzkqhprnfƒliopmlsinvm^horkkunhjmyhjgpniimdlrqqlllmlqoulthruroonnnjpvqomjknwldhoquqkjrlmgpjusvvnxneopdyhygpntmljoqvgplljhoksirpljlkoqbggsmnjrqqrjipiuriijmplvmeqlnkhrkktnhnmwmnrjtgrknunnlowprhpmeqklirlo~llnnqpvneqjplpoknmmpmfrnphulmigdsswjpmjmhzqeqlxdrrsrmfepnkympwqiiwmulegllcnlnvnsznkxpulrknoowflksnrslootgqnbmnkqtnngkkpklnuakhpskxoxlhshe_dlqvjurjksfhpkhunlqqdlrrhsqqpjggnsmbnjiotqvjoqkrirplt`pkllppqfqrjerfhj`hiemmho]dqoixjprkmvpleiimnsmiooleqpmpqqgnplhsmip„unskomnnitmkkonwtoononnrronmimdknmfgqpncnhtolthnojwkpqcrumnqpmoohmophm{nolpohpnkjjgq_qkxgwrpwrndqjpjrjpnzqdilonomcmljirqovjoorisloqknlupjvhkrhlpdopqoruikmikttYhlzqgplngnompivnqlrisrn{nonrnoznjnptkqiolgalhnernriqnnfo\mWfforlortlfkzfikhnsjqk`qnxrrlyhmƒextrovjohl`olmkmlotmko[snpjmoennflxrgfkw{sqlvnkqnYqojllkjofvlpqpktn‚uhqjfiojjriofldbjorlnjk}foqpb[n^q†jwnkpvisyitnwl`dmjnmrqtjvmqnjd`antpmsbiis^€^phova`muulpqslmooqxljkndtikzlYlkwr|mnulomjmpnpdonvnvpdib`pnnj{tfvjqpljdmjopylozqhe€jnoimkotqlnotrlno^tofuqlip^mlpr_mnh{\wanwolmzhurrmp|onsgpjrldqlnsmrmnq|pqxwnut]sortklkohnqlphkpmhnilhirpowijkhsnoielpou}oskqgnlklsnhjsqpieqnkitsmjjluuqi`tmjcsough[jxnmoxypkcuk_ktnsmorohuiimgeupenmwlonhzmllogonivqmlobsjromqrnfrrrkiortzpmyyqqoqhowig`mfumjqybrvnrqftyxmitnYfunrnsftqnljjpjaokcpgstosxnrptnceejiuqklmmknjokdkhkqpfqomspvmlop[entuprhrmp|{wumohjhnsfceoetqqknqiqqufjkkidplmpuzjmomrunmkqsmslhiqqhmcmk{hkkk^jUlljejxhnmrisqinnodnnlnrlnpypuhqdpo†nkqhvkiqn]kmhephqionoqwlmjoojpfmlqqoiinhospsyuokrkonmgmqsfjomwppmhniabeonhoirtnymmklppsltloYlqompr^mmhlmqnswswpkqnnfkjhunljklqloonlwbkmoqm[ojo^lmnbnnnhqlsqcjnn‡nohplolpnkmomJmojjqwjjzmlfoqoimtltnoolgmookkpsoksll}snglck|oorpmog_nhjlnrpekloloimptrrlupnjknisxpnnn‚qlminkk„iijn‚mnokmnlmnlmpmmropmsokmooq}qmntpltoli[npponmdmkshmmsojrnntslnnjl]ompmoumnipotnuniplonofponQuozqglflpr\„mmphfmqwjnlonenldmojplsumnmjilcsoTlmmolnsknilvktikn[lnnnp`mpqwrnflmjsqntkmnqujwqogepjjirfllhvknsfoenumynhonnopkhlnbvj`pnnuks`Zk]skqskruojxynsnZoqmerhoirmkmnkryflgrlgoomsjjwkbov€lognlnwoksnqlljlokrhokpnwlplnqqpjuleavqgnpomlJh`opufqllohksmmklqsnpfmuplunmqplpjliktirnbjroxgpmnlo‡mqnabtmlmm€ncpfmkqnnbplolbrstdloirlnommgkqvormonqomrlolmmqpmq[vonmrvnrhkqtskwogpRjSozkyqjkmBsnki~`xioeprloqnprlkptprzifkdnwgjljnflolpm^nhnr_hppsZouoxcckljhslj|hjoqloflusnuzoonxgmqdqfwk_rkokbhiqisnglopxnvnnmqojnjkopflknqmiqtldoklonstomniqtkntlipolturpqillwntqjkp„qkpXl}nmpmjbsvppvtvtzvmntnplp}vpgqnsogjreqinamƒmqphmo|nkinpovpimYjquorlfv|gxpZiplvhnrnrkfms\ghtrueut`oqaukqssujlpjn}hn}fmisrgqrztonzpiptkdmlh{lmunuƒulrftqooentormpr]mgqqomnpjrfiphksrzgrhkmdprqmknqdnUqmnjztaksskpnruhqvl~jsipinqtq\{jlvnshs~gqphpl}lnnhkmsiopi~tonmninn|hlvnpmiomiroqjqnampopkmordkUopnqjolmmjllonlpqfol`lfvsjpybijqplmrmpm€ormntmokqnnoj~pkmaljsmrrmanllhpnkoorjoo\mqmnjonkoplkjqpkjorkmjuŠlnmjml|emn`msvpwm_oiqooqcxh]mljupalnnlkpmlktegxQjqmlmhnqnljnqmjvknooppk~zllhk}nnuY}mmrtjro`o^g_siqioymtrfplkqrojzifqqtrin\rkcwimnpmjkncawj}rsmq^jml^klesoooplnflhroqnjcmrksz…j\ldrglunjmmumƒlf^lihlpknmskylI|lph|ghpklrnqimpfxjomnlpom~ikendojtimixjjpfgnnsomrptuomilktfmwktqospmYspmeklsbijqqnqiqsinoujpxys}[sqmtmkoqllymjpgmmoaplge}opmiltlqk]}llsjm_sukpijqh_npmlehskrzlhu{oxiotvolppmlnmtvulkptthgqwlvejcmrgofroissooklmmjieopmiogwgrnjpvombljrbguwnikgtkcqk^qtmoy`apkrpm|jo~pnnllviopkimsmtlmshsheqpkmspxjiiltloijmjq{ioitnkivmdgpojkdnnmipqmkprcpovony\bekoililn}nlmisoin`hoqektxhzinodll[rdpln|lfpojozmdpjvgjnnqdoomjrlhqogppifmknloqxmisgulapompnspndjpkmnjjhqoupfrzookwiklom{lgtmnmXsflkoqmjzrlbqrqnXhhkuknpqplqlorgxkhlkxnlgmvptr]rkkjibkzourrmhlqrrwtl\mpiojpxmklmgwlqkkjnjnsiojgpnlirpioigem_spqo{~orhwnpmrw~joYgklhslllirsulfbvsxkkoljtiqfp`mnkko~kfqjornmwqooznmwrlvgrjjuttsmlkokonRiqom}klllmrktnppnelomY_mupmnmornlmnrylfsmlpnujramzoXmpo\mnsjssqnrnmxlwonkoqefiomqpmgooeotmkkoqnlUlqoqqqpBkrpvgkqvqpgmm|lnpgmrptiqnojgspowp{oollqnmnrnlpjmpjXppltlh€vjnhgmpmc}^l_mmpnwgpsiilpnvinmsjnqtfkXpokljlsoklmqqdmpnormopqnoojzvskmtknVk_pmtsvjmlijjwsrqierpdl^fpo[omklsimpjnjoiolooqjuuktvmsrvmvsqhkicpi~rjdvsingkmsnqkrrlqmplcsrfqndfnqlqlktnhjsrqdimkan^jotlotkismkn„mkmijqjlcpjoolsinbrlrzknknpriirljitksqlsojqljesqnmlgxcgmarqjkr{oorjmvmrojdfqtmdxqutmscpilppor{mtrmsprknzilpmhqrcplkn|piqqhlrlktkpjnnxolwjmmkhppntvoplkoknznqnfnjsmokkmmql`punqoosrnij`nrrlurpnrfqj~m[opoymnvjblnpnnntoy`onhiuucinnqrqlpnkqnVpnpmjinpppqpqrdqjorkvpmr`pwmlkmepllpsqpnrfrlppnokQrntnplmrmqnmoyoljomimfudmfhnumxoeq{mmjnxnmrcnpnmupmpkjmpknidyq~rqjnoomomqbojmoqnksplox`_tnmohqmeheojih}^lwsxm[mplpkitflmmmhslrh~imnnxtnmnoqfmkkqmphnmphplsvw]qlqo^mkhfqnkpvemessmonnimgoqrjnkghjdgirqoqoptpmi_volvmooqprionarotu]njkqmqnkljmmil`opiknlgxgqoikll|lkmknmjklfmlonkpjnlorf{fmŒkj]nlkkklolptmfjinlmulwkom`ommpntpyjsqrsoksmoynrnpomwomjnpo`ealjilfkmrfsqlpknkkhp~dtpknl_fkno]mljpqllnphlksynngpppolqpnprmnirpnlqp~loVmspn{koogoqqntjgopnopl`mzfmvfjpcjmiwoknnmpkklknlmmnzoqkpqopvrrrplpjklyl_|mokqmdqndokobx|mmjoZo_qoroloporojnlYtklooimpienopm{ncnwp`loqpj}ltgrmllvwkjnnmpo^ilvwuponnmqppjnsponpnnnbpnnntonnqlxlnZdgoopne`jnprlvlipptkprljnokbsrnjnomplhlmbgq^ljqliolnnkqhkjkqrqc]rnophqqnsohknhixlknqqpbojemeltu}€zkmoqplpslfprloopm}pmlpojpxtpql~krpooorpinoovocpmqjrlafZlowmpmxllkomnmkotmjp^xkmnmlpˆkvmjrq^nhr}pomonophlpVsomlnymksponmqoSepzrj€pkklhmoumpmqqnojmopk€njoplfkp{cfpnrnmcneukmqohnnonklpbjoocnukdopqnnsnnZsnunvmpnoonomcUorspwmp^keninqnnnitnnhljmoikmXpp\nvfohosqmlqmropZnqqgsmpunxmonqlnmjdskr_nmxrqoouzmhloobomsqrneqvknpmulvknqqslpljqlkn}vnlorkpfqyo`jmolmmimcmmolpbmqwmponi]nmnnnronn`_ydxn_oknmmpmklrnmpoltopo_ufnlplrmmdduqjnsiooknsrozk{ipktj{mkrfkkvmj{fhmklrmlkdvxjosl]hrkqwllkkzkrqmnkwsk]ojnglrolfkhosuuiqkplhkouwjgl`qˆieiekgpvkuqpfgntiteootmoxrrnodnnufkkoqlnptrhomjlmeqinlisbmsunjhkfmfp_irjlredjpfiillkkstwxjknoqn]rirmkhxnbuirobodooaogehi|stjimsmlj`lntngsolhokgoiibqmkmoignofbksmnhgskapjpml|wqnnojplnpsmjoklngpnneqnyppntmorjlljfpirmmgo|npcphp^pmj‚knhqelosnrmwm|Poo‚rmjdnqwnjmpmhmhp‚ujdqm€qolpsioyyfltapl|lkvl^pkqrkmjnlmlmqmxjpoppslospdpjppnmllmntunnqmmoawvn~ooxpzbkmnmnmjvphpˆjmrouopm|rlqn€iaertnn`rmylqkmqkjpokonfpjoUxommlm_nn[ohsig_`jppokrk|l~sjibˆooicmoeemmpyjlsnijhkpkryporhtkto|qmtqsojzosjjdpwlcu`qojfhiigmpssolhij„oknoujot^molqcprvopOukq}qtpojznlodlnnjgxp€qnwgyiqkk]ptolmnllqkqlpqakisymnsoo|isehsykurhlkpjmpzgrsnojoxlrslghrrgr~hjjqkrwmlqrimilekcofjmhsoponsiurljmqlmjdmmrnjmsklpeompmgppoomoi}rhkhnvvjqlnlskpor|lnmmfpmngr^mkn{qprokmpvm{nhulfdpcmj€qfpznfqjdjoetgnklwnkrjkuljko}pa{XxkljomsoqSvrmexSwzqgkpojnmoktnsujoqnrmrlinimrpjnlhmhpkmps]qnhZlaokhwmopfqstgjilmooyhmipstnkshdmtknop_m^llnkpa_luikjishjjikq…nhkqerzjpxojrlysmnmqnpqlqpgop{fhfljdrekwumhro_qnplopmqnhnlflntmnbnnkmpynonsqoqpnkgjp^tpcrsXreoowqZospbnnrpnlmkmokpppxjkrqushnk‚pkmorkqqrmlhnrvmjotspnwjqoodmofgirqdililrocjhoqmmhp{knjqyhknqqojnknnoelji~pqoqsplvopftpTm{crjnqoqeokq_lmrrhgnmmpkqoujbudPpnvprrinhomooonsklxtmncefookkppyo|ommpfbjslkoruvjqspigeprpllprqosnapopqmlm|qkfpx~nwlomkoorFckcokomlnlpnslrpfloettlqemnkpmropk‚rophgihormlktomloir\qitpzfnnnmptn^mjklqujhnntlmploeoqkpyjplhoo|jpoqxmorrfjzgx~lkkiomljjlonnmrnnoiknijvsltlm„lpikhsnlmjtimrvmsuqorkooupatopmqqpto]mmnensgclfnnqntkpkprfoopojorpomgollnpknkopmboqinmnumlakn}mscojnqpkolmpluojuloo†nlllsmonkq‡snrofoopproinvgprTixrfkollqqokjqsmjjooxjcpjnponmvfpgkomlznppmZqlmnrlohndqpofu_nowqnltnm|konimjmslm{_pnnnmlu`wncnolpzqenmpnoqfrkeasqomm{omzlmnpai€gpumsgnlzqpvnklloorpsxlnpszk{mknpmmv]ponhsijowpclenqhmskrlpkqj}mlhsirnnvsmn°ntmlnmpoijqnkznoltm_llrrtakqmfopnqonulkqmopmmnmsmjf}noplaononroklnihrnmpqhknqnnsllwconkXppmnnrkugonr^mbsjrqpll[kpnmorpaorhpnn|mlmlij{pmoomqnpn`lkvnhongqjqnmrrqltgUmmpnltqqopooomlkjbndlljmkoqqponsnpgpooqlnaqqoxktnoj{_oquk‚]siphqnqlnoerionqqoorjmgkmmmeqmmesnrqgltnmllmmslksqnjm]ltskrlrkomohkm~ornkpiplwnxfm`omorfflZooulq|obmsookqnkqklmrlpngnrpgmrvnispomlnskqqnlfknjk[sonjovc|qosmkounljkillwnlqkrsa}tlqijrnghalxmnpmujouxpnrpiolnoonkmqsygkaltitmgmnppnmkkioomjknnmpcnoolmlokhxrmmqnwmorrmo}omknqrhkkfrifporoqoyptmfnsnvqfqppl|vslqpllsnuphmkzpodkjlpolm`lokqrqvtqgjsnmkqsuorltxnjqnropvopuojmjcpauzjvopgpjpljnkissrklkjykpvntllqhrqkmolmxrbogjnsplenjowrxnleepmmhnppmpliprlijjmslpuoqqkkiosbknoppkwhnpZwiqvr[nuqvwxovplyrlupinfvqnsokqopmvkiogfcppnpjmwkvhlmko_konoijoplitkmllkohinoYmihokmllmjmndijk~tocqevl_]pxmonqppqoilynqorkmmnitoaopcsojkjqipom†oxo^cqhlihmhmoiqmeklplrqpjqmckyalmn_qmnnnqpm|vfqornmockrdmhnomkxkjquirnmpkjp|pniqqcmZneuelnnfhkl`~jhkkfbpq^jntqrw^ebexq|rlmpmpmtkrqnrlnpooofwchljmpnoytgomrrvvfdqljkwpepnmkkkmniksnstlhsrrmkhkqnypnipsnmrqnzookn\mnhnoillnopvnnioslnhomlolppimntvsoppmonnlhzrikqui|imiumjmwmzovflinnnditmnmpqhiopjqoprvooj~rnmifmsqpkkqplknloqnkruclpubnljkpjkmyktoipiifmnrfqmropukpifllopphljomotlonpin_r_ynnpflprqjolngrrnqkdqmtosokqnihnplmjj{l€lhimwiffzkdpljohoknrvjtioplwrorniojtlsgqbppnweqhogjfjqxounrmtj`mmmqmriylmfoltnmh~qmjminlpqrjiljpoomhtgevsij„jnkipicjfkd\omniqelprssainnjlnkllslntipoqoro~nvvrueprlrqlflgnkk{uulcqrowhxnedkomlmgpjtmjnmlfmŠtrkjjkcpcqiqjjorjnn{qifmin|mpmljgjqksnosjhyYllqlZjjmcsuf\qlokkjfpipjfpbsminluvjimsrksRp}rm~}l_tnroowmrfnlrftpskjqmpoklvmqqjŠmgmnmlcupvooqk]qrmkoltbxjsihr_iot\rmjolmjk[pnnmtinnlljasorkghugz`fpkvtmoeoqori\tXlpqbojnqapgfbgonRrntmnqrqqgtlcyoe`tmkvtgjionzkm^hnhkqjrkxrZmƒY~mkomˆ|gppjnp^trlsmgqeojjmqlkfntlrei†lf_pnumorrlnyjpk^lqjpokqovnnnk}mupmopnnnqnijemmstKm[brmlnwjhnqpelnzkimprnrlpnsom{qrYpdrhuqlvoq\l\j|qlmmnSnlsotnqletvthsrsllppsdolpqpjomronn_`anmynsodpiyonlirqqhps{^ppnmoouw{mtmlŠmUlqshiorwkmjsinqtnqopmgropnpmkh`Vnm\mnnmopmommmoplmcpomsoppnun~ln‹†spjojkmqooxoapprowbqponknnrkokiollqbolnkljdqpnkknoompˆqm\op\niƒsejoqospoonlljmnmikoplvofch^cowl{omomjnnrxnhlzplrqolmnjqokpkwrmpIlrullgregmln`oznnwmpnk|qxoxnplgnphommknoljjnnxkmokmpfjwpcujsorkinmomstp”hlqmmnpnnonormpmgmpoohoqnpnsmllnooomlroompnny_[xnhlqonghempooTyommziqpnnk{qlrhllqxokj{pqpmyjlmmcjhsnjnpurmonh~k`msdnwyigkcqtpkn}knemymmnpmqfmlpj[gpzlviqnoomorqsVmllnosmanqomhrq^sfostlsXpmqpggmkmkpcmommpnkjiponqtjponmlnmqqlmppl‡Ymmomgsiahmfmqhpsqdrdpmor}…nrmunoom|nlmqooonrwopdfpqolilpinmomqoonpmkplk_c~mhmxkpzq{pqojromlqklitonlxqmqqbnnpzqomhskolreqnhmompmmqmqoonntrl]lodmqwrq†ogozmqlxumwoglqmtlidp_`lzioslaekqkmrnsdkwnZvolkttpmmqlroyjlpkmnllojrsudpookk\rononm_g|lolnnlqnjqlloolnsrmnpmlkpongq}em{lqVnofsl‚pnlnacjbvumkp_llmQknlmgn`tsgzkxqounkkm{okoppklƒkmmqXtnrgnmnngbnnqotpqrjmhhnmqkotgqpnshlmxmllgklkmwjnnŒjnvqnlmkjmoolo}jxpnylrolrprrmjpjnuno}nulmlinljjl|knreoq[innnmmongmkn\jmjhibnlloknp`_pkofdnsjlqifnrlip_imnpnljlziofmipvop}llpqkopmlkejnqnnnolhqpZnhhoZl|pvnnmkmxqfqmpqnqmownmoktrjjkkmohpolmmgnlmkolktpfpmnoekundmllpshamnekzvouoqmuqpmmmrnnklkmkmjplomlnroknog{r~onpnqkjnkrnSkimmunn}qz€ooipnfnkunji`kmpqomon\ji_ohmokoamlsoronopwrjllswlnpnpnpwfqppsko|kknovunlqunanlkkqlƒkmo`nlnrnonomnomlnomoz_oonnqmˆgvmhmnqn`vno`nomjjqjgoljnoysnnrplpmooXjjonohpmrilwjfnqnrionvrlphlrqkwmfnqiu^ppmnvjmcpgolmhnookpjl_nooxmmlqkrrmvolnx{pfmqokpppjlxobpirr}ndnmlonpjxopqtpnqi~opmponopuum_moijrukilppmm‚jlhtdmoqpyplpnnmpqesmp{lnWoqbpd`mqq[peoo^mmm}n`onhmlhgnnxmnmfqnsjpmx}nppqqokhxpncjomkvjqjkmpovikognptmd^mmronqpwjr^hp}liolgmmynnnqmlnmoiplo`n]tsjoinnuinqmisauriqxipxYionqkldqmkpl[ssmdm\zlmtlhtfsaˆsicffylyjhwlo…jprkrrfpmohiu]nhon}mupnmbhophsclngpllkjr{qdppj^pregjistlsY†bcmdfioumhbqmsnl€tqloXslUcovjwglncokhkWhlhslqhqnhnkhZnjycmJienpiagnidsnnmojoqdlmxiupxˆoqklnqri`qhtrhnok‹ikl„wnlhrlzjokmfhsurpqolpkkprprmbehlsokosretlhnstomtvollioklnphapcipmripkluqijqnomrdqonlopinan^`qspkofinmkfgnlmnpolsporistje|{qnvmgymtrjpofnmdutjnrmlniom[hnkolfchlhyxzlpnnnrpiswrmunognqlhkjpmnmnmyglinmepcjhoptijjbnxndpxffkxqmfnnvrpZlhjmvqmhinoppjjrpnnpplmqlrpikklkmrrxllpnojakllxmzqkuxtlpkh{xbjmwplhuojvjmjomnjnpklmqolimmkloqjlmpqqpirjmomqoloulspkieqjonmkmpmihombqlpisqpnomtnpmnosunlpqnnqsrqnvhjmofnohsjootqkqmkqeknnnmlmpqmsmroomnjimqsmpfmqjmogknloknsksqusponqmopqnskmnirkolodrminlmnnuhlennmpqpnmmioqoplkopooorqpsoonnmnjngojlomnnmjkqmojrpnonnpnlmjptiliotlmomvqnpjdnmpxpqnZglmpgroongs‚mrnmnlnplqq~q_lo`jk|p~pl{ninonzwmnoellokpoxnlynptnsh\‚ouopolrai^qupnirngnjmplnozmojk€tohppwpjtmnohqklnUmomegallun{obpmgnjnsqkoknhjZnmrmnocwpnltojmiibr[kohgjjnqilpolromo`mprpqnZgwpvnˆpornqmntpspoljqermpzkvncfkqpojwmmnvrfcpordojsnonenkpq]nlfblqltrlinvmmmknouphnkonqlnlvmmpnsmz…pu†onlknwkgmodq\mokqklfmwfnlvldcxkjfpqook|m_ucenkij|lppnomm|bsokZlo`lpooisonjtlkmm`llt`hqknvmqmolmemmnjonvrnoYopqnokm[ZilŠnmqoaonwmmlm]inrswlqmcroprmlooqiinf~slnqkxrodpronpqjnmmnokozimntnfkodlarmsssmqtrzmlZcckrlrtfpmhjrvouowd|mongogqsnjlfeqli`i^rmlmbpthnqinhepiktkipfntkontkecmgdmmesoWhhpldmop}mclsk`ronlrWqlnc\fohsoluklonjhbsdokjginglcqrmjpnkqsnliplmowlr`rcqhnlnqbknroqplentpnlnhnqosbrnkgrnkjvgqwlwprlolhsfpporjkorwonn_gnqlrkxomgluin_nulrjkpopksmsqesnqrrhmql]nrnnhkormo{khllkchunjfnqkqksmrpoyotrlj{mt]nvfqmjioesqdntfnjookhnirkimpkontkokikfkvtotfkzfmqnbntpxiqkgnkllqwcnhlikjtlkrqjnhujuopklt_ljpihntgeglgrskqqzjqjnpmj_ggqvlqimjlcurklujiirvajoqfomkgrokslinhrutm†uupdmoknqZkfwknorqwiqmoonhnppoonnaonogjzolgf`koinhsuphiilmvZirqlmpsq}lopkjmhYjlprhpmqkoƒWmuv]shk]torugmrelnqmhepilokfkyppoveolqbjo^lormlnvkopplVhwptqslegsm\|]ql]Wˆovvqk]}k{hrt_plmlorlnJpjinkjcmtrqposrfmr~okPwMnlmslllmmztlhljnloloonTuosRmjlixpnoqglzjsmvsjmp\kmsmqrstnjrkPVmpgitbsldoglkTXpemkaoiqnwunkb{rtnppnmknmjkl„ojldppblTdoiqnkiqqmpvoonnmmoqjihjmpprplpknmyqmkjmphklniopmmnŠikWfrjkpnplkmmjhjmnmprhladquuhjhqosmrmnimgorlpmijmomwjnrnuosopkkhnqvkjhmkqknohmqtklhopjpmmejqqnjmniwothhpqprqpjnjnvooqenqpphyjomiihnkphmklrknjqhjpgjojlcinlmmk„eolpopmjkngiiiiggpgpkhnmmpqmheypoqk‡jmtlqnmopnmn_kknmdmqonhllosmoonnqmkltncpppl\puvdnwplpmqarmgnmjjmnokyomklrenxsz{nnmlppojkZknmmgkoomlpliooghorggou~nlrmmxpkruqqlkdkos}wtqpionm]ikoomolopwhirwhohlolnzogm`trlmkjcsdioqolikjrhmhmkpmojrmioephu~cnqploumngnllrmplnlujnnvbooohjennkednpklcqpdq\papqnoq|pmmwjopmormfpkkmpnjllmoopmmnkmhlnpomlmll{ju^sirmmngorojqnkqvqolklj|mrcmhkqfqylqxmkroqhlsptsniml~ksqnppqpvmnksplmjhrqlnlndpmonbpknr‚xjnZk`maloinknruntnonokllpmnmgnqonllrowuslxmnklmopslnrni\lmrmmsoujjsuhqi`oqqnlnoepppppkmonom^qimmlo^mmgqXnllk[iolmqpmdvkspkjhqhb]vkckxn{b]rmkumnp`n‚|sa~pfnr{oecmkZmppsdkaqmYfhhon`lhhtbsiigimksp[nq`koqmam‚opqjqrojenlflkkZw‚†dkfnpmmƒsjmpc\omkkkgqjrjkqof]tdpsklngn}lN}lmfg‚ngqekxgfvadcethpmolkehkfkjwplrm_lhejp^vX~qlqkin_ˆalijmjmgoxjf}scgqmQjkqkeqdwmlops^qYgbjqgmvlxokquk`nOks{cjklipljtgkjesqvkulqgnnokitloyzndpiqsupl`st`dqhnlhbnovmijbmƒkdqutelkepnvmpsmo\jkjmummnjk…nss_cpzpqkefrziXhkminl{fyjmssrwlfrnkqvpjfmvsofgnsokpfrmscepzixiof‚ronqqkjowsockmsppkjemniikueojfklmtcjnlokkk^je„fsphollfvjndjl}hngyymjjkyphklwognhplqilb{omnh€imk‚tppmobsovrrtivfqjqqnjwmrqpncpnlmemmhpnulengojkpxlr|mw]nfvdlfsz|lsqhnkphphdok`hqyqgptporbtprvi~iZjnaginnlppqno}lexojntblj€ucnmfulprgeujhpjoknlrpogqngnmimcrghpumukmpntownitqrmogjcfjjfmojrjxpniojglelnmfxqpmzsharyimrjrnmnlcbldokolinnoonnnguoi`qmcjlhrnflikqdqornmpl€wqjiprnlunpl^tisqqpmleqiotpnmqkomokuogprboeSla`qahpn`mfpmypwnroumocmwylvrthvq|emqmrlpLhuoxrokmrfoppsplsgocphvooqlsjruqmpmmm_roqnolsmoo[hgmfqhilooaqmonknhooqonlnhzdl‰dnamnhmtmlnoitvduvqqumkimnplnjogom}xVjqmlomijukjmqlonikomnnjiwioykqpl^kmolslelmcpZhqdrkk{oqmfqonrglaqcr€qhjqdm^rildsqgfonprtgrmh`jmsknup}kjwfimooqlqkktiihpyrtjilnnyskkn{nioenj^nifoiw€rsmoe^svpuogmfjrlirtxritmkvpyidgljgjyommkojoqnoiti|gnk`ioimiiijmulwsispurdnmhqufniprqmpsmlcdfrjkjxjemrpsrhnpolyhqeeommkphlgqphoirvqmqimnrokjnpnxhlihqntinhmpietomqykglogkqolmjg[mmqiooqrrfdidjbu|jhtc‚rraornrzlqnk}fgpopinqy}whfqlmilovyqqr|ilmntkpal_omknegqlqmtqne_uqmdlkhqifolzyoVojqmfpvlghnsyoijlklonldqgboiplbkoxflgpkogfXlfppi^nongocpodmvkecqqjnpnavjoq{uqnƒaqmsmirtoWnbmllijlolzpjnmmrqgtirnkjkjmimonmifimpmlqtqnppilm{{mqjvsnnzimjZjlqouukmveoeponnnwomnrdwm`puml|roqoqpltnqobsmvomlpnpopnpvgoVtmamsmkkppplqkp{ow_nquldpmltokoltrnp}iiOmsylrimrmopalmppporlsknhlbpbpqtnmnpsjosnkisornmrpwUmmYcp‹pfr`qblnmlqirmtmmrlmppzmkonxinjjcirvhoommuounloqqjmhlmo€zmxppn_pnztmlhutvorpvloolpimnjlqlmioobqpkpmmln\vnoekljknmimpruogncmfnhon{tookneropmjuonoujonpolmujo†tqfnnlxvhnnimnlxsom’rnjjkvonrqjuoetqgnqkd[plmqinnllzmxglroloewdmnkmoramo`njosjoooimdlnnopjkfkqm\zkhmziks]snrdkppktrlonu`mqmpnrrxiqq^ulqbmoqqlnmoloopftrtpontrqrivhmkpuomsqiof[jol_pmqldoirmyglqsovhsinrmhnkoqminmpkmmjkhuvlimepjxkihkfmvhwjnmojoplqeurmpjvnkqpogogi{lkherqkoljjnhntijjsb}llikmisqbopklndmnqrmojqujknqjjapmqpwsoknoikiuovnkpqgnmnpninislmkomppgkkmbolmyjqgumqnqnngifd`mprmkovt^ooglijhoprnsxlhsonjvshdpglpstllnjqsresnnkjoqpnnnakto{hfnouhheqwktitmpssjhtynkotpqksheuonjnkyormiwbmgrmoqpjczijemmntkmilnjgcnkbrujnsvgrnhjlmlomwmngbchimkmjihjpt[aoxqonpnkxqduhltmmjuylyqp}lgkymfoolloms{nsju|h^kil_hqmmkfjyjxofjqojeoqmglyroowhmxgjkdoucijljiukqhtinnnmjiiqv}jnpovmplozslinusksdrqprjjojftlgjnjqkgshjxhllljlvlmtjmtdkpovzdullxmioilgƒnmjpmtorornpulkqsnelckqnjkpuslpnofrqsdmjmuhoqknyjkrfilqwmntoovzmkusausqlsqpnnlpqnorojwkyllpkpzkqstjsluiqfnnmnlknpnmjmmzngmnqrmskkrmqmrmoopjipjjonfrxjlopknpsjtkqrgklpqddorpjhmmikqpompnhlssmslqkmlqqxposlqnkqhsjnosqekpndjqhsvougonsstpoidmeseqmm~k[ovomnttcto€loqkrsnsgrpczvjocifr\inkplqngcokimkppwmooknvjkmlvrqmhnuphkhrokbvekqosniqzrsoklnqt{mhroopowqboikvmijolrmilghiqdtpsmlwwhhmnssmhjkflrempfabtgnwjkjtusppbmmqokjjrnknrlphmo€ljoommsyjrgwqnpzvlknyopoovjmmoonomltkzlnplsmminpurvkspoenjylolotxjonlmnrqhl[tntnnjntngmwipivqetqhkpqu`qkkksaot]oontonsyjnnpkntajnsirljnmtdpgoklbhnwreknutl^hofeqckqniouhvtkjq_moznoibjmlkXcpolknnkktlhl~md\knmfjrokooopjstq^lurqrmmnohkvj\oonqtmmfnosr}qlrpu]si{dptjnorh‹rm__tml`ml\ep{odpougvdslfoYvhljpq`soorl|obmtmglsnfpkhnkt^fpvlpqyutdgoljln\ourtqvqaXlƒnphvnMnopk_ktpo}oligleirryppoimflZzmiokavpmsgvckVk[sxnrqqgqgetd{{mhjgoosu…dgllc~qusrnkhilo_ptkmxkqkrmdoblbplkqotsuumh\nfbpqrchitilmpstkjmnrmnknymrjjuulxxnkqqZxi^iqoptuojZnfcVv_hffgmmllpemprhn^qmupcqbqxunfpvros{rtnnpkwslqnspsjpglkpajkvhlmjssnolfknl]jtrrmgipexlphhiolntmqlooirmo^nlmslpqdldlimsgjodqqnoomlmmjmkgpkqqnjjikngkegrjkmmkfk`pixosimmkronsqjjmbjohpqwhwdqeqvgqmjpanjnZ`oqphgus`jkpnnkmmpolknrjdlismpmockkqmmqdnssQppkkjpul_qs^tkuiopkpkonoooodqrtlomo}rlpwinioqjllxsqlbncv†normpohjbnqkjin^k‹srmspgo|soeYpO_o{m\rnqns^jemqoplmsbtmrpfmluwlkonqslklktunrkpouv_nkapibqfmummkgk\kkeVxkp}krheRlcnuvdjnmqmtajirjmmno\jqpobhroergnlj^vapkm{q\poxykq]eplmtqnzjqwhmmjokWnpnrpjwicnkrqqnnarkckoqgkZkthjKmp`pkrsnlnannXmfmqlpqdmqjkqlqrkkjoeqmpko‚oinpmj{kj^zrpinqj`psklmomtnenjmgvƒulmjlpomeikypovphvjsrrqzo{npxjpjvk_hlviqyjpujmqklofsoltpmhoqiroourolkYf{gqloodptjun€hppnmgonqnqqohlqlnjkonmqpmnKro{k\hwpVooomoimr|qneomhozoovpmdvnlo\oqoksve}mppkoqflYnhgoklorihjq~}kjofnfijzndntyrmkpwrsrjvlhopjgliqkvrhnfilkjmu\qmofkklkloqqjmqoqepniƒqeqpnpmoqlnnmulfrs}oS[ny[lbofofrrom‰kwkknmlliphwpu`nzc[onlnppnjjmNodwoiok{jstppmnhvrkp€ml„pplomxknkrktmpnlnnuqesmqnrmvpkalnmkmjsojrxvomqonqiuvnxrrYnpezqhpnnknwmsXunqkbimlafipkdhiltdsrcpmponcpkmonnomnqroomvvsnlmwnnWcipmorbpndp`mrngcmnmrpnnqgro|jiosp€loqklnnzmlkkevitld~omslbjssoulnnnuohmppmjqoosqlnwjoklolopnjnoqfnkkfkml[o}udlrfxrndoknxnprossttmpvrphjnpdflkqkmlwmsnqkjoqOjoq|jmllqjhqimymirkQvktoolkmkkolsnwmtqolbilmdnjo_pomnnqqhqvnonqnpjnjrjlioool`nqiisonioklspoljqhltnmqqml_mjnemhljdnpqnKzpumyonmpkoolojgoiponckqrormlhjmonnHrlrlnynnemptkykuopnfimbiymoookmqpg\pajtulT_kmnlsmnXhbpkdonqnnrqkfmpgdppnvndnmonoqeomk{m{oltpnnoc`lmonimhohnnmmrmkqpjnofoopppoqkpnudkpphjoosoolmltprzomoqtfopiimskokrh|iilhoqploqnkmmnqplomomoj~}vormnnbjkokrm“nlzlbrivxlq~vqtmggiknc]mopdennqpncntsz~sljdihovkjdwpnbkkjeefqg_pipdqylxd}equpohdntofoq_yffias|apmgpklagilipprjsv}cƒj`anv|qhg~fkksnopsjoqmwfwrflhjlommimpvlpfpenz`pduisktqnqpxmjqcp}vmmndwknoooltso{sngopzqtlmzpjweprolm~ktusnilovkŒpcnqs„iWrqhmjrlnnglakssorkolju~kjketgshnfwqootipljkkntmjuohilm{qssnkllnnonnkr^lhpq]msPpfqlroZpiosnn}ymolktnmelg{lu€nu`vXokolnmpcmjmtojjnnMjljoomrpveoi~oqQmnfpvkoqhbotifdpjnqyZnolp]lnmrfmnnjopnjllvolomoqxllqjkp_m{sxnykmotvhiswokrok~ln}omppgkrtrqgkkjntnpynkmompfontpmm`bmtmylqppTxphhb`mmipuu~lponZronpyhoouonpfppnocxmmunkhnpnsoqnlphnqpennurjynt†nnkvmsqZlndnlmsptnoƒqqfonblmYk^tcponmrlgbphonmphppfmonklgwuliiqoeorekrsmkkpqolqvmoo€ornimusgoofmrmnpoupnoowqnokmnhchqlsmpl|entxmmqmryqqrgroolvpnnmlspinlsh[htboqnmqjnhmomplknlnlpirpjdlqpnaxƒtmnnvhnxjgomdn_uqneojjmumsnstngukvlj{mkpdmvjnufipamllnrn]noofipluvmmljponhtkgljcedeljkqplsljmlmlfmevxmlgXpjlfnpgmkrk`gipqppplgfysozlkyphslnvsjytmkwvunhpmksnimlwijtfZqymm‚jshfelfjhplpmrqdpwomnfiqjnjitrgnhgrlnlhoiqppop~kkjteqpmnoqjqqmx}nnhkjogqjmnnimqrnkqrlkjjknlmmlokasevyloiplmplsokrtfngz‹mgnxkiptncblvvxjem`jl|j{{mkpxiqd}ovktnrvsqonoqqjddrtipriou[uoplel[l‚hdluqirimp\wmdqdbfprqrsv[nnqqxmsnnsrospmplmkgipgpktoohqlri|prfqhnmkiugkjqnjnhpojqjblfppojurmpiampmpltw^xnrkjeofttnZnstsqkqnh‹onmglq‚olnlmqno_epoqrlgkgsrltigtklodpsqnkeoVomkcbnmmnrnethq]kwkrrhjhoimtgmnlohplmdikphvkdkillhlneihocqinhrrdoln[gqchjjmqUfmplhqz`xqqoaggaxolhgjzpubojroeuogkkkp^pimkcinqrm`otoecjnpyrnpptnlyom^ksnhfeijngnofiplhqkpjjmsolkkfiomcvmlnidjwmljrrlriozahzlhhtitohmvqlm`nnalpopfmlelsmjliqan_piqo^lrtjuukfkeqelYqhi_\hukpntU`lpZgicjpdr_popv[juV^WWlWroishcwjswxtcooulurdvlppuxhrajhou]tkopp@unshqnkOdimyˆoih{fi“Wuio[jqYisr_oxurnt]VsgdnidsqankpqimQfstrlwgnmslrunSsuupjtjmhnoƒlnsqmxtpdjwrjyrp`skggmomkteelc†qsnqh{k`pflqmnlpcnqiMRklgjmNvgcqltfL`rpvhgpnsairqjarprtjlkqWjhlihpqu\mouilw‰dkmvkjolkgplrmrllmQvnxgauop€pYZkkpmnuhbqznpppnptocvumsfqjrenlnrmlnrnpopljkmjr]suphkklutxfumqzlnnoopiimmgiraqjhifpglgpokmwmlnqkoElio‡^simojelm\pjjghRqcynmrjoemhmpqmn|olkosmfdoutbissqjtvj|gpljtdmpo]pbn[qjrmln^piknrkobjnqqnqmtosobwlwfjrnriour_pv_lmjhinqlltgudqpnmgunkmopgnnmuknyhyqbloppioutrloelqkjngrlpcqpqseleppqnhngnnlophgmepemse^lcjhsrlkmn``okjf{Xllwokp}sypljmhiqmmlhnklrilpoikkoloozkjrqushZp`odkiivnjngiphemkmnqmnpntqlroimlrrkkomjs_nlnsitjimllfqnpkttnkk_rqjhnqlplfnkmjhjlonfpqmmmjiloavomqkhowp]oojmphflnliopnznmnijinquqmnx^mvmfmmqroqllomohsnaqnhqkolsp{pmrblmpovnlnlpoon^tlmdomrj{rsonrokpsxqplnhnlnnnrmollffksn_onbpljntsnjjboqrltlmn`ixpnxmei|mqyplnurrohqkqnnlnjlp`txmhlnfobrgqxonjuplnnZokijl^omwnlrsumhm|Xslhrqppomjxnpnlrnqmlpoaaowotpyopfjjookhgpgvooovlpmonhppoymnh€rplbjjrnijlmbbm~mklpmlrnlhqsqqskolfcoqwp^lypmomklqqkmlprmmnmmgnosrp{`jrkkklnoioipunpimovolkjtpotoppmznuiol^mqgnknfnzmpvnon~UurpbnqklqlpojmmokoqnkbZlkpqllrmmmhnismzupnionkkemjwUpnnmupnorkojkmlzhl\qopkotmonlnpomonoo^mkmjlYsqpnumnTpponmkMrnzp„plis{pppbqjvqlnn^qwkrp]tirolcovpwpq_t~uorprihvkoyptesgtm`khoio[mrqepnedhdnrkditrfnroptlrrFfunnysxoufrqorxvkotltiŒkmomqqnooozojmqmwmpltollmopmlwnnsreojlonljeirouktvp_mnqojjPwtnrmnphkmvnqirebnulpknqitrWqrlprqimlhrmnvmmljguulfmtrotonilxmkriueqlnovloljhppq~vgqxmtkŠnnmqgjpohkmyk}mjpjofpdqYimetf^bhupnnrhdbknprppbpmiom|tglqluojsovgkcpjnporipntqmhkokmp‚l]qekpwxrfog^vro`mplilponYlmipkgklplotnoqnmkkqriqzrmn3pjplmlkhp]sfsfl‡gse}moqlpmjlmgnnkmmmljmnpjmlm_oqsolhllpqmvtestiureoornosxkqemgmqmnpkorqgljomplfqm]sp_rpnnfp`ivkfnqjdloo~`snqjhovlvjjneldnkjmbtz|{xbowjrjwhismmmyjgnqilnmzk}nigrovizpmormqoiqloovqeopysuqlikwfommoksthisgqisostalupllnjyuhqfxqqixompnxkejonqtngns`knspdpjnmiillkfmndhomdopf|qiqjmxkmoyxmnjorkrilpjlsojnunoskroskkqsjwvrnmjljpnqllpmrrllotojgivrmphufppvpsnholeppgqmsrqpdknomohjtjmspcdoornrjlkljqqpwkkvpncqtqjmmnozukojqonjsnwgoirrpmjkmoqmwqh|uxbumjotnpmnfudgmoiqfntmpnqoetkohglnnmnxusoomosmooimjnntcqkoyojj[lhwnkpmkpjgmoosmnnqppihnnsgphlrsmkcqpmnomlltkllfgmoqrfmne{rmƒsjljponrmn{mfqpmpnmqmomnljromaqpng_trkqtpllqjvogxemrnoqoodjtquknnahmlqlvpornwkkplosrvlcjujfssperllsgjrxtmsfjunqlvrmrlhjqsovnqna{l|qwqreuo‚ldjkdelrtgnmsh[_kothqdobutrdksurioosnhdnmmonysilpslwjergunkkjnsteifsnomsxokouupkighpomtxojlenlo^sq|gojtojp{qh{ii\rsnsprmhoeqsppdlepoodhslrmlwpxslorlrp~wqvqpqrnlhqpns|„kphbjngovlqnjmn^jpirmtkpn†mmKc|on{ƒm_mreridkqpximftpnrfpymfonpnrrmk]mpphmnppmmpnmcnldoilrnjpppsoihvgi[m\qrlqfkMhpllznjhojqxjmlllnoig^mmsqgjzjmpvrpi]sUknoelmyir‚js_hrppqpnsqpmko}ppmUprrpvslqrRmlthqho\flmoqoqmcopo„hwrfprrxmdonkq^nqlrrorqmmmsnlnlksnncl^laqxdvkmnepqqcnhngownonvhroflinlplmmqZtqlrdkhhhqsntljqmmljiohmmlqnrmlpoguplnxklrkmphqolqpsfblho…j{kimsccpnlptqinrnfpolpnpsipnlmrjrgsmqopblWmopflk{polnqno[m]nnhvwnrfr\omnldoolmpponomjnrmnpeoltnhdofilvqejbjssoyorngpmlhopkqqlkngomnqqmjqmoxkmnoonpqqopfmrpoplrsmplmgfojssgnpkhknqprn}npqqjlmumjrkskqouquohmnuiyopmpg`kpsqqoum\o_npbhwkpwtmllnmkrowmljmojkwidniphonkmsTsrwktg[smkkmmjnomgfjllonoltmlnsrokqsjlnhlqyoqoZ…nlkmqsplrqlooqnqg`qlnmorrmmmlorsnqmtlllojppcakqlnpkpbpnqmnnlrnmmmf|smqmutotnmosktmpqnmqojpnqlkplxollk\lsncvpgomezohkqnkk\nqlmomnmpqhpwnlcoqmlnllomkr|nxrohmkfo_|lnk{osn`roaiqmopqonflzXjoYnyskqrxnjpmjlj[neumnpjTootntqqooktqXnuxjmZqximnqirukorsjlkngknjipkeqiblmpppkqkkmtalqpnop~w}orimrofqxnfmngvn`iljokplsmmnmlkorjqdafˆqrjonofpplooqknpmpnplporhko`k^jnrjroptsgvonm~npiorp]nopmrssmilmnsklqniklos]notpplpmmonpun~momqy^mvgo`mmnmmqqo|pgnnpllnuncflgemqcotkgpmnmnriq}nnjtoeolopwoqrqpnoplefjkeqn]lpljprqjorknn^ennlpdldlnrnpnmmlrhlohlmqpnuseqsnˆposn{}iylonpbpopkpmolglnqqmlpooopkrjqcqrjnonjonmomqmo`nomxdaakslimnzerplrqarppkxltoloonjlipqnmpjmplmspqlfmmmumknqkpkjminojlvmpprpkgqksgnnmtnqlejnbpqkokonqomckovcrlgktjlrrkopmnmpqsqlimfposptkmgqoomerrdnprllunmkfomlicljkltqincoul‰nomllnwjnjqqroslnjlnnkionjlsfpojooqonspsuol|onlodnolllplklpunldnrboopmppiqonoponnjpplZmckmfljmovshmnqmuglmlklogysfxisthngtmcyohioiarutpmeopmmkikuopzgehtshnbpnrproj]snolqzsnjvspuvpgZqefgpdtlvwmplkrpenlel{njmumiqdznpsrfxhrnkkrnoslnuqjmposksgmrhofpqmooynnlpfquoqkgqZqlrlrbjkksorkaqtpoiogliltogkojd{ujdsmkbyxotstxpnkkpiqlrvlcolhiqmomkooopaipoofhkqohpjmnqohsrgjsmprtqmlnqjoopososmqokoolkntpjpmrjqnnoqxprookgmoksknnysonqrzie_nplenemvmmekqmpkoqkkospmhijnqlummtmnnrnngmonngoxslqtsquiiblnj\qrmkjhtvmnlocnkqhnprlfoipnon_jtnpjkjomgkihpk`omkkmkpefqlsqosmqrmr}qmfrrxof}ojmn|mlnfuqonngzkw‡jotqmtqnjmrmmmnoqn`mmnqmsnsuolpmnorlrqssjlonvmmvYmnmoz^ujo{mmgmkjƒe„vrlhnwrfnkrhuxlhenenrnhizviisnlg‚kwnfqoi€mpnegjzamkmomrlplasjqniqjo`plhbkhhfnow\pxlgdtii`mprvhskl~ulsnskmonxhpejzh{irloijtslrTRvtvl~lhoiqomgvhbihpljlfgoenlzqqonno}nrmrmdklbhjroosjkgqlgtrlmtfqxr‰pupznknmrgl}oxoqwphxpnkrmvhnmlemhkmompfn|}bqgiazkhhqtjrxkfm|rbolhlgmojnemhhijfpdpjjglZmtphipi{jlnmojpllhlhmpbmcngsrgqpq~kkcnjsjmjnhoknstrmlWcqkwchlpowllmqlrsnqsqpjmydkoqkwWokplkklonkolrgiuolnp„pkophmolktnpnlekpnlmnpojimcimrqqmmiodplRlpnosftrxpqwgnmilbplnmijghlrxihpk]nkmvnlevkmmjkqfet|gnoinrr_knjtrsrqnwltnbenrgmojlozmlmpnmoapinjbj`dbjtpjonsgfqb\jtjlbmkmamgnmpkvkrldmpiim_nitqpqrwtngcpidhdmthnibdrj_envkmjonl~jjmlslqipningkpknnntmqkslsonomvtplopeqzlfuhpnpiulpicypuoklltojujmimlof€mmklslt]prkpsklgadlvqkmkmnemhbjplntujneninwblkmgblrioqqpouplnjgnjlhnmsmplmxzopmponopoplinpelmdrnzspynpoopqsmml|emlqnnpimnl^nmpvmroipn]lslrpqkpvmkyoxhrnxntr`lnoom`nkkhqmmonwqpqipnnenknpnmnlpmppVfmoo{rynlxomp€fcmnhnkjmmqjlmpinmknpmymoojmojqnmutruoerwlvlmjoalnnShipliylqlrnjnkq}pizsolkkkllkmqooompqokmnm{kemqgnkpokqmoqpmtlohjrwmmph~pow`rnqegfrqlq{xeqijmbjqoijvhhocnncnqkm[nfgkugljwopihphqllpaiocgk`moogoqttqsmqpxpahwquugjlmoompqnjfVtnljpptcpitulimxokkczl€ol^nrmmensnmpikstqiroli}mhosionguhcloƒkrnlijmgntukejxqnjnmmprpka[ppmfnrjqnu|mokvktdpwekjnjhpnlh}jZpdgronr}ofuphiplivchkpm`okhdgonqnkppgnwkllZpimlrmpmmomoigmhqjmnnqmmnoqjmromjndkpv_nmmuokkglneofplnmmlvmgqlyrpms€iljpnlpmbrjrqonpplhonnppmokxmloorlwlklpmsolljphmnoolqvnzknrnkoYmmionmprknpqnvjoppmno{qeoyhhbpxwspronksraomXpnsjsulouiltoqgmjwmkhzopponmmjnlklmlmjnpnjjcpmpmplnjpfnkokqymlptmeumkprgmjqimonjmqomolpmnoononj`oomloomnnpjdnppl`iuioornhlqomrnmogoomolonpjrtwqyqspqpilvjmqpoipjkajpjtqgnnnlhmognkpnskl|prlmnsokmnpokorkpmuhpknqmpmlnjlnrmslqlokohvoolpor_oinaom^omjumkpnqkjcnk_vmljxplnvppooqmctcopihmmmnmtlonmolqonnpomgjppsyqjnnmoppojkfrmpqsnjrosntlvhlnqlkmpopo„oohqnnpkolnehgmqikmjfmhhmvkj}mrgogrnpkijmjmlphq~hujmmqmlqeknvgtpnvtgj]oispfgkrmewjlknafoqijqnlpfuolwunbvkfwqntpn\oflrlorglourcogkjpholikmqtnomkkqkcojopgkuutrjpmljqm_xlgnowko]kqlpookrhqlyoisoom{qnxsjqiorrvgmslnnsiqojiikljplrqrklkjmkodomliglokp{orkhjlekupniqsmjjkmdgirmelqoyitprvnnq|palwmisemdjplsjpjpkgnpnmlximfynnnaqnsptoujoqlkftmrpri~kpol^vmjwkpmmpqmooqktvqogiknrvdnpuontonkonlitillwrlnrmruomgrvkpqukrrqoqobkmdkq`rmjikofmjoqikoljglkkiqloooyqpl~inrgjkhgqkoif{oprhmlpsjrqoopqpwi|ibnogimppn|mfqklknprmgqqjorqmmwumr^lnnujmjloomnpmllos|rlpoirong]xompmgpovldrrnnrpklunjymptoTvphoknrlnolnsmopomk{kolrongmhjjmrkoiqrmtkukmmcplrri`nosgmhklnmpmtmqplorpopfmtmtpoppfqixoaloqnll}{nlmmmpnmjusysqmrk|oodmnpmemvijprsrwnmnlrpmmklkkrknhmqoosfnqrjrlojcqmxrynjkngjrjoqrlmodquphnueuoqwo^mcsjoqrkontnjgfmhnkkmkyjolkrsfetklqjemhekWfmohmpjiprljifji^qhwnvzjrkcqbujfupfzplngqutqmr_eponoflmkpsmmnqphvln\qplmkkh^nlnkiucroklldjjogrommpenjlqkn_kxrrxsixmnkqqdzolmnsbkdipqnhYqmtjrnkjbrgvppnrqnjfmqklnssbdjonhjublmmhmjtpuolljoplnmjeprsjmnoenhoudjhdnokmldqnmojolsnxpsc`fdqnhnfonXwnppoqduoiokpliqmlpjkkfcvzuksq{otuknfmkojnfllqjrbjiqqY]tppjmxjlsnjl{pvnoqŠodoltkjnqqzZjrkpglsaqlmotrmkslvm]nsn|mjmemecsictmokiqxjikrgkqlmrfphyntomLpomxnehqXnj‡npsinijjlsjljokpxmnsiclhjpqrmnoksliljlkomjkqiqngovrsstpqjilmoiosojqllqtqnloklqmmnninglhlonfqmmlcqasiqxleonpnonoqjnnllqhqemllokinppttrnobqmooolnjolrmqpwotqtkjonsknmqmtrrpinktsphpkpljripinlnmmumonlsspkkkrm|mhhlnpphikkhnwpqsopnmlkjoogkqmmmkrvntnkiioflmbjpmpqqmlpqoqfoofilkjpn|lmhllpjopjlmnomopqjhilkmkpnkmormlsomlloujpnjhjlhrnmpnknipinohmpmlprolqmonqjxlblkgsajpx_nnismnnsumhljnmoqlovourlhYnnocmmzpnnmpqmrkvknnmoknjkmmpoomnnpknqkoklqmlnpqooskijnqpsvnimppakpoknommrlnkorozcqlkpljprjorolipenktfonkolaqpupnjmntnlfkotmnlpox„llsjmrqnkmpommqmljropomtxmknodmm`rmlkplwunno^nfplpmkpokoehlpomoppnmulnqjosrmiliqlpkpooj{yrhlnjpmTtpbokrdnmqmfosneqommhmsoueqtdnmr\njrpqlkjhqjopfopjopqnmlqmknxqnjZpgsnmglgqlqnlqkokvmonbilpmpqvikntmnlyqnnnopclnlimoohlrmpmkkpobwmqpnooyptkmfmimiumnwgppllk_ohsmjspnhnrpmnnpnmnjetonmorcwkzookkjlkplnqyonnkzkojntnhwqmlrltkjrvnoipnginoommiqnmmnlmutmkllppigrlnugtqnsijnsnspnujslonqjmimioqqispnwtqpnkonhkgejkpklilzpukkons~kqop{nqwmfqtlqkjsoqmoerpoowprlnrmonjrnpkhl`tkynmiifkqtooi{hrnbmioqvjq{mjnokreesrmllmymmnvhnlmplplpnfllllzhrnnlmomnjmciginlrrjroqklkphnrmkiipvqnrjootjlumwjns{dnoijijgw`foovlnnepklfkkjk`ikuikelkgrwnko]wnmidmhkskgbqjlliorcirnhmowmqwptxmeekmidzgmbobnjokhjijonelqtffghl„pmhioljclpqlSrkoqppvkoolpmsfkpooojmrflmqqsu`ka`nnkpgloyxsairsonmapmkqphshRoqnrhjmq]drwniirk€lmm„qdkqcoshngiunqopktm}orihipjjvbpsmnpnr^qjwkgiqwkn{knsmuovqolkl|oljkmmqjoj}pubtmsqkumuop{rqilrk[hokltjsn{ofojjpmkkqspkqqfmqknoqkjgtjksngiqnklkirqnqlgkmmnjqoivrmiloolnkogtkopdtroieirjqnmonjpfolsknaoqprikslrpouhxtklnfs~mmklnvqkoeXpvlnquevmonmofgqvqkchlmcoeoupbokntsnolrtolloponmknomsjqpskklnrmkmppjrpfkonojkhoknloYnpnppolmlsnneim\nsqmommlnmgkmomnpmotosltonloopjoopmlnopnqqqjtldhtip^kninnooouleqgimnoqymoolpmoejookrnlrlqsnqonmohrskltonja|pqmkmrrlppmorpvinmfnrkknmplmnmhqodkrtlsmxopmnqmphps`mlolvgmllrpolnsoojgqpfoqojnnnkmppmppoulonvpfpjdpmlpmqmmknmuuoommllndmsnmdhqmrwihorosdngqoknnmmmnnksoqklmsvqnlonkpjllvnlljpjmlogkoplkho`qnqoslluomjmlhlnqolpqtnkotymnntkillpnmnppknrhetmokmqtiomomlmmqvmsnnslpfnmkotsqejmrmwltpprqslolpmktnllpuqnomlli{llordjpmqmimjkkmphmsmypknmsjrmkllkvlpnqomjmksljmospkqkponknknoqhqtolnjmnkolnquqmlj_jkjkmnngspmipdqkmomjdolpquuprpfoionhmrpoqsknhgpkomplhs{pk|movapsnonolhptgsmmkknohkpnihmwkmrp]rrtl{kfiknmmkgpkiehlqrhnloopllhcqjmmllkqmmjltorjpfjamoluploklnoiqxpqmookrmnmgplmnnhirjirjnoqnhmkkon{kjherqkjijpZsrskmnlsomqfibomfhmqjlikonpkbllnniprrrnrvowskontscrwemmwpsttXjumrmwmronzsnilrtgdns^q„Zquptlwetmh~gmur{fooqlpursqlgmttrqnomrtlpiguovugptjlrjl^prnrirkqouon~rxqtl~qpomoosooryRrpvokttiphnrzqxokofpfnyj‹pujisqwfjkomrimpyqjhwqqqgojlnfssrjgPqkrmrm_rvlmrtintu|irotdrqnjrvpiqmewfdmuyqsggrufqlrqxepspmzp`sqol^ntjrqrlsqnhinipmeuflnlnpophqnekoonnnmhormnmrossxwppotrmkpqkknlflnlokglsmkronijglkkorholnfosooqorophlikrjnpnsronuqgmpqmnopopkrprsskjfmslkriprmmnlpqoqqmhqkpofookqisyjjgpppimrskikpjnkoszpohqurpgqnppqkrrekmnqjroplmngukkjxqntnpomrlpoqwuoyukppmquunmdmoojklqts}oqlnthmmnurlqvpnkroqknspppizlvmknmlmoomoj]qjpqelgqhr]lnotnnjrkn`memrjlloflr`kkosj`qzoumlpnmrpvnvmrmimmplqknnmjmmso~mqgno_jchmkjhoiqiipjq}aiimomqmzlmwnnoponktpiZjnrknpoct]oblnnozdglpjmmrweonnsnknggnlojoiqnsjrmjrprnopmpmoennoooqolnlojfnlo|olkmkupkjpnonkqjumtklmmickuplonovnpnlmmmk{fpm[kofpmqnoommopelpwolrmnlzlkqgnmnrjmhnuppplnomssowjonqsdgrwljmlpolplkxeqnmjnelmjndhmnppnppivuqilmlhmkplotikrmrovkrnnrljojlnkmnnpsoopolZqqirhmkbnplqcreqsxdjzqmosptit|lnpohmmoppkrmnrchkbqn`kpqppplnmpmnmnmilqoqnpnkgkxopchorkkqugsdm_mppfdjhkenorhojpjlhnrjskorhljqcutznptoigncommmrtpnnoimmiliqqoiqtmtjpjogxkpnfsjpqutmpnlmnulshkpxnfwunppjrpmvulqirnnsqoollhjrpnjmjnofkoolnlqjkplornqqkpupolmqqqmtrkogoolgmpolnohpdnkjqslnlnnmpmrpjhdm|mtoyoijemmmjptsojssltr^kttnlpqnmkonoirbmqnmiqoltnrqkmpnrilplnniidlomnmnm]kjpnnnmnllkonppeknnoqsipollknkrujhumitjxlnpkrmjh^roprmmpplqelfhfjljrgqmlqsrjmpkomalmionoptondmguvojmoooheqhpqlpqqpjikkufllmtokomjml`olmsdlimninplsloohuelirfjkmlenagoqhotsrmmmvjsnmrnjjrllmnrnjopjoirjtykgoqpjqllnhmponcsinnnpnqmmojlmimqjpsrgqso|qoomnknanpkmljnnsonljpnhppmoounmlkjppslllnymmjtnmoolhmbkoluorqnjosmloookoppnldlrtlsnggnlkojknrptkknoqolmjonnpqmlplnlikuplqylqhomraouoinnkl|nulokpolwolspknqmrninlljpnlompƒohnlqolnetmkwmopropkk}ppmoy`qq^jknnnnwrjyrlwqnqnqlqppmokjokolkngsslnfnomkpoepplmfglsmnhofenrmmnfnpkjhlklnqnjurunomilgjpjronsmnpofsmopstklrppoqmsmmpqmhpospqqozkolploonnrmsopqnnkqqjplnrtknovrmhknnskpqlnqsk\nghestkojliiqsnqnvlkknkemmronnqqnmnorpmrpkqnpjurkqrlqooqmkiopjkopompmmsgljmowkpplsltjwqrmrirqnmlpllqpmpikbnpqkkqrtmntpkgolnlllivljniqnknpsehutrjplnsnknmkplorqql[_mnnntmuhlnkikkjrojnnjoxfgqpookmpotvinilgmmel~lkosrrpok]pnnooppdkjpoppnmwgmhno`gjjl`djkkrmjqimhmkrrlkoliuwowksdlcdphkkslhmnpjldltqkpphimlqnumgnvhkqrmlulrmkmoqojnlqjnpoqkm_joqlolrkapi}rfjiqji`mrvqqncqintlllnrponononminmqghjhjhkxrsnnlurnbkhhosbplsnnnnoqklu^iqmlpooioltidkji`kgrnjnfYgenkpmqroofiksn~ilspknohdqiogpjkritnktpjkizjdnflavjpgffmkƒjgkmk^inppm}piqtnrlknnsmtkwVpiopjnnmkolnaneeiqnmmqqgjpopldinmnhljmjjsnfreutklipgosfulhh`Xkmkljoppfoprojmyqlqppwroolqlkkqemijlmngmqzphqmnnjqe\rrjjltqintnmncpfpgrqnqrsqhtnkiitnommlimmnkjoksljnnfkjoswoimlhultpqnmoooinmloksnhhlgkqpmsnlqnoomgnmopolhlmmhkkiqiuomkklukdnresikrvjgkskoioisupjjpnqntooiljkmdjknikmlqompkmjsjkmfrssnrmnkoocnikqslrqljlpgjpjjjllimomommhsilnjsfglmnqomllmnzmejmhqppnnnmjnnolppqovslkojiciomwmnynrskikkolfqqnomncpjdwmpl`gklohlljininftnimkmyimudmfymjoolcnkkrbnloiqqoklmkmnkqnowlilnkjjirrsoivlj^lxlkjolqpkvnmqojlmrklpmklgifprjYljoilmklqqokwpmpgoflkmqi^plplnulesjlkplih{jkjksdwlmponglqmlg[voppnitscnqtrqtpoxnnklnmvjpnwkmhlkkrmnmnogfmijkmlqofunsomsnjofshtoplepvorhjpjnrlkonnkrislteqynqkgjlsnnhrenelkdosfjp„uio^mlkipmwohpimqikeqllkzov}j}mvjnmkniijpioloiylsmpflqmnlrlrfklxVmkvseqpommomjexlokn`onotntfrlktojpjmnqhomkimfrpipvrknlnlatWehlqnnkolemjjcmikwmmoSojfnujtsinojqmlosjphfolmjrmktkqp\mtjstm\qklk~lsoowxonmfgwlwsnlmogookzpkwkmjgrbimmlmgmhmoolnmminpgklphigqpphnslmrmkmphqrnnqnnlirqpvmriqmk{jnhplqjqqodnksjomlinpnprldsispnorlnrrfroqspnlirpmnodqkrflrnnonlmgthpmjrniqpnjhpmsmprtnmlmppkowwphqommtpfephkminokrijrlgliupleonlnphkommnkkmipmlmtl^rlqrdimjmltimlmtnxnoomjbqgptnkqqpglghhuglgkmsqwtmpplmsotkhhlwrpnnktpmnuqnopnqokimfommxmmqjonkbmnjkmmsnmmomopmcqkjtnkmxtosloqqprpzuojgnnwllprmqvlklqntnoqhlrionmelfpqmjhkdpipmtrnpjpjmgiqkxrmpqonmnnnnkppllrnm|lhoiqnoonppljlnklntmnqbmvmpngrpkr{omqljmmjnnvnkumikiomqlotimmvnknijpnilomnnll`pl{emqoldonw^jgfmoqq€Qhnkrodolnotrjcgknqiqlig^[aenlrplwriddgat`iliqlmdomuetderqkjmnlsgdomirldhmvineaptoj_`empgoqtmpfk_xzopfmq`keqroJsqwpreiitfgmvphbmjymlplolnmqucbktjjglkpqyhpl`mepnqkrtvqrbjfGkkmtgoprcmo€xkojm}lirnnkphbsjlorm`perrknlqjtkiqjfkmdkcikopn[pudksmnqbpklionmljhqkknmjmronzjqioqpkjomomqRvjukomjnueh]rolxoqjurnuihloolmmnmhppn~jtitkjyknrjnqplomhmnnqjmjnmkroutpnotqquntqoumnlpzmsmnqqln…vhnnwmumiommoloqnmmlppkkkrlnlnppcmqqriorc_mwlnoodmnrprmeqimnmnnmnmhsgolhkrpinsqnskwomnpmrngklo`wmflkompmojlrljelmmlrqtkrkicmiopjtjkhqjmneos`goslllqspnlvjloqocrkmlgcskrogldqqafslpspkqlfjrkomroiloqoklomsopqrjsgvgxihkoklddwirsrlhmssqgjl{mhmipqkpijnsjnpiqmdlnymtoljpspxmlnjknllkindsnhtqttsstmquqolhqlnmlonlcoqwqnsgk{isonrfqlitrjooknoliipskrlrmkkmnngmpinkkmknnvtronimoimlifqnemkmewlmqoooltknjjrmqniqrpkompkqhnoonjljqmkmmiplpotmqpopjkkrmnpootppijolnkqkohlnpslnpoolrmipnovqulqstnqmmqpojnqnqpnplntmnsnomqnqmmnkhqqsnsqqqootlqoiorshilkpvmlpmqinijpqlslomsqnpvnjmlqrioktkpnmsestmqknmomiqktqqonqrmokximipmormnqpmlnqiinntnospsoppmqnoomqnmonqkrpriilhnu_spjlmrnfnokoqloqjnmqolmbqmiqghmsqpooegkionqsrplqoomnmgnpnprqmnnppnljmnsoopmpoplmmkmntllnlloomlsmignnkmtlqfl[qijtmjrknluknghlnknhurspngongrokqoknkoqlskklqksmrkurpqmrsprmnmmlnrlllklilvlnjkikokhjoomkpojnoqjhnlmoqmqomgoilmlokllllnmqlrkmlpmmspqooreologltplmpvoqmdonokkpqompmnmhlmnkomqmklgimmlislnplqienjogmblmmqjpknsljlmkrpniomWpftogirlkgoppnprdzmxhqojkpqioknnjr|ppndrpcrmfokqlkpqrsnjqmmmY_olnnmnlwnnrknmsqkponkt~oljroodqnekm€oki\kojnqlntnlvmmnmgfopnopgnlvidplsmkmoimkjqmmxmninlhompcxwummowknlfsrlnpexmnkhrmjmrnjlonppkkmgnjmsvoknkqnnglsgnoolllpmnnntjwmijnklgnjnsmjmhnvqmspnojqkpnknhgpuwpkpavnknnmlopptpkpnprlsmjplppjlpnmqork|jmooupnkllsroknopnojidnmqiqnpmrpnomhgoonqvbnkokqlelfovqpzposjlcpoofkosk_elqnprommomommxyesklsoqsoqqjqlokmnlpgemnpj|qjojqxlmndonlkiedoulxqjtsgrjpsklUzhnupiljmcqmqqlilxnn\ktqnnki`sood|us~oeopdpihssqqphlenn…tunjnmlokOjrguniubrtqkiyowonjqli[ktfigrhphjnn~sklpjm_plenhƒfirmokm]hsljm{miksk~gnsphutknkgrkfopuofkokpmrtlpnjpmqukrjo¦qjqolsoW~nlpkfjmphquhnmtqnqriaolrkonfjn[ldqdnjkngvjmmllxftmyhrpmtfqhpkrpnqksmnmepmkkrnqnmkjhl^qonotlrnskllmorortqlfhmjlwmmcsnooskirovleumomprlprshhhlms`soooooplmlqhnjjqlkskrljkntoprdpopjlevoktnnqjoskronielllipmiojmrhunnnnrmrohmrmiumnlrjkqmchjbslimwurskpomkqlylqekmliukmljntoiknnp`onqnnnqrpjepnhkupmoqroqlrsqlmrnmormtlpoiuqopjnurlpn\jnspxnqqvqrmtmoqmahqnX]qzlmmnmpqqmonzopmnokhxntiluoYolj^mntoumjnkqk|lfrnhqfpouxpmonrnihmtmbnmkqlPommkpnobiqqqiinfllmmwvommkntsrgqnoddmjnmnunslmsollmlnpnrkqZmlpolnsrinoionnm|alaomkkxinjafommskmnpmmmolrbiqmqokpmqmlskjmmnmrpkiqknqd~lsmpilpsignqprpkinoljuskkmjupntgmgojhpjlivmolkoneqomlnlnlknlnjkqlkrmcsh_sksqgpnilojinjjrmjqnemjqkgnjqpkkhilnrlooofejmeopkwggongnnlkhvomqzotvmmrpkekjmmqnpjninnrgqdmmqmokjminpn{mkllssmknkmpjqslhnloooowmoophpjhpxqlelhjhkqmnpgqljnmyqvlplrnm|nljqtnpnpjpsinnpitohnplmkldrmjnqlrsmkfnjqllrnisolidmkmomplsmomqlimnepngolnimutpnoekjlnmnngislulymelqnznmzshrmonnmulr`pwjnozeklrkpopipkrlepnooknmmnjojoliimomntzopqq{knmkrkkpmmolnghoonqlooXpqtlnnllpoolqplppprmpgrgodijkoupkmponmpwpmieuosqqeormnkgpmootnxskulmnlminpngpmuoinmlmxehjlomfjmvfklmmix^osmolkvphoteqoopnplmnpkkmmgmrtlnlokipkkmrlmnmnronnnnnhtmoflilnookiuknqlaoilolmtonsqjtnriamtqokpounmpjvnoksmpmrlorklprnonipseskopeollulpmljplpndwnhmpkrkynilmnlumhjrnoojlkplnoejgmzlm\pqclgqnmkojimpshlojopllcimtmnmslepjmjjmnpmnphlrloppopopmlikykkjilkplwploohpornvnsojin_cloqkmknpkmnmnoqosynnctkoqnojonlonmytlnlmklrYknhkmovlkonjouifoolqllomunnsgfgbokkrnmpnssnmkljlqpjtpkmoppkksopnfpiwokokbtnnmtollqjkmocrnknjkaosonjmnloklmppnelpmmpnkwgiopnlwncotrennkmovnkosklktvoltppkqboqrptrloplpqlpmrpknqlmlfmonptnrkroujmdidoqsojjkpmqmtnjppwpmsolmpmmkoqplmondhlnhcnboqpmlpsronjgmskmlindlnfokmomqpmdojlsnmllmlmodhn_mmrrƒsjslltpnwjppkoopkrsnjmlvlmkrpsm}mlnmlrnnsmkllroqhmokmijVimtmmptsnnmkoshpqjkkdionrlop”osmjuikomt{ptmnmoqmnmmpnopq|nmzrnooorWmvzkoylpnmqjlloqkpkommjmoexphnqonjmpebomlkhckfkmqsooloqmqnpdmrqgolnimoroupnn_sppklollmmrlmibnunlplmcielllvmsnmonujrqnjsmoinkhksomckuvmilqqnn[kpfiknpumxpnomjonuhoknookntnpmtrnlpsojsirklodxjlmlmvntooopomvoinlqm{kmnnrjplhqoajnqpiokpdolmlhjrjlhlljchnmlpnominfmibtrbonkqntltnjopmqkoolo`icnopotlk`bplooqmqknoumotfoolmokooitnlqsskplqnnjlnjkrmmovpkkmuoitnqvtljuljoodkkmvqppldociskiunjmsqnglhphvsfknokztmlpniqkniwrnolruimoontqpnmeppirtmohokpkrqhiumpeqkplokjpezqolmwoglmrjokuyonlkspgqjplqthoppgsoplvsljkouqopkqlmplmglnodgqroogjtmplnlhrlsogqninosnkrhxjmllhminx}opoihlguoogmnknypkqontrippnorhqhkltqoioljpqnkljnnnhv`nekmkmmurqfqho^ljjzqnormoklpklootMmktsrengvwkkloiojjs|lnkiqqpqmlvkononoiimqhnikocrppl`mjodjnonknnqnoosnqlninlnvmnnlomsynlomrn`vvmwnu€mpfrolmnmmsqpj†kkfnvqnkoroknuiiozljlqommlongmnnnkonnjojobqnnspkgonsuxknpr\mtmijlrdumrunkjnroskiiuqkgslirlnoeolqijnghnrsmmnhfljdpihpqpjpoknnmolpkwiionmjcoimplqnuhnphkjghouklpmrliqmisdrjrimolrsgpkworqniusomoompljpphoqnjjfimpjmlrtpnrpnleqtoomolnlslunlfnonqkojjiijilpnvkojomslkinpnmqgnmjrsnoqpkpknhngomjmkolomkmgneqnlvlhkppskksrflpitqornirjtwcuqjpfbokpyqgpsuowkljrnjmrknsmsnlmmkpnqoonj_shmpnjjx\odqpkfkkkscnmlhjgvhlmmmtmqikpimqnlpjnqtogplnn‰oorntixnmownepkglgmqnrqmimhqnojmprmhtnspnglqaipmmmqlnvowu`poqtooryhjrlhy~omcqpeqnnjvkmwlnlionopjrjijmiqskqqlpzmot\tnkpfjbqmmnorjqlpsmsllnnkmtsqamlukjnkqltsnnompqonknrlsiopmnonnmtiomdnlkqnqpmmqpmqknkmhmglw]f[jrykdoplctmwospmpqikkmqynf€rxxhnr{oljqohlrjrlojqnznmpmtjnphoqnnlocomtpellhpoqjubqoonhwvnnontmlnmqoinnqmllpkhynnsomlnvnlqup]ps`}mfmokjctnnTqnnoj^lkmmojntlgu^Lor{kppmpkmqplnilojlnmmj]dkqkoyomzlsppqntmnxnrkn\_frpprejkqpimnipsmmkqlljnlminqiousunjjpslnokfrlslrmolnnsomooiqnstlpqhbvgklunuphlojingqnknwmxsgponscnostzqnrqlrplqoismfnrqooqoeokjhtpyqprptnpkkkohnplnkompnulkqpqqmpmshmnpmq]ornkrmgsmsqqnqmrlnoxopkrksnxjrnntjopmnkndmesiyncqlrmmpmmhomlnmjnnnnipollokqonnossxqnomsrmoltmqjbiqlkqlpprhmn}nhkmnmmlnsnoqvklevkjnovonclkoinjqmolignjnpmpip}ektemtmijlronooljkkrponnircqqnqmnmllrsoomoynmmlbjnsojnsolnpmme{ronqnjmvlnnnpnmmpmpqrvcmnkonmuqypbqmnrwhiosnnmkiwpqmlnlmmnnm|jpmmjitpuemmljolnllqkowmmppnxlpneritnmnnolphprlpohiorjljkpokovdmhoupqjtjknpjkojsqqnŸmnjmmnjnmkknn~imlinrqortqgolknntffjmplsknimkljlkppnxnjmrfllnjnmoomnljmlkfkinhokilkqfqmp\knfnjkmqknindomjioppqr[nnomlonbmkjmkmoolovmmxqrmiqnmkocmmooepnkshmloonndmncnmklsnomyrqpkrrislukomonqqnqnslnmmlnnlool~iumnnknmoooilnpo{jplmjoumqfmvfkropzprunhnilpjmjnpnkkqiojnopnmpnnkonkpfrndlpsfrkmmnkgjuopqxlqmjmork|om]pqpjphpXlhlopskbvxfqmfmqkormool`mtpullpnjptlpotjrpnmiakskqklqnnhnxrxmopmknklpcuotksoplmqjqsqnhfnsmo_gpoiolmiuoluxkoqjtqqwiiqlli{ijkpjthoqposmoolqmvollsnortptlhkolqzpnkqppuvnmfelpmhwliolqnjrllppsrtjrmunookrotnpkoxnzrlrooqhn{ƒpkospisqmncqprlhirporfvlpmorsgiokpnojupqpnqjsohitplmnmnfdhrpnqtloonkimglsoqpoootpoopinlmorpqjmmqqlinqrnnokonvlnnplvsmnxrlooonmgnnnloptkpqopdsrjnusjlkpjlpyoo]kpjjoxmntgqormgnqohooopnsonnpsnqnmsruuwkjopmjqmrixkqupjeoompirmoromojprsnpromdlmooynnqqiomnlnjulngrmmlhappntnooytmkojmiomokumjloVofkqiolnomppt}oxkdhnpugjnvqqoonroojkpspimrfnsejkqhngqnonqruyhknhnltfklinsoosioominhmlpmpn||pmksnbmmqkmjoohjjjni}mqojhhoohmpqnqucqifomtpnqqnjoonmmrsmonpnlrsrpthononqthnklsltmhnmpirjhntnrirqdjlmppxrhrknjioljlrreollompmltqqjo}uojmmnlpjwrpomklnnioolphfoqlmpuonlpmjjnlnqmmgqrreolnplnopormwkmqmnhpmoqknoprjonrnmosmnmjmnfjlimormjnlrlnlmpqljkofnl{jltroskpomjljmnnmotooqqknmpxlnmnokjnijonoslppomkxnxqbrnoptmjmjjnnrhqnmtmqpnnmqnikpmknnkljqjpsilxikkkszks]qfp|mnpfpffhqpnlntqmlmllnomidpopvwvjrochhnppkhmpqpkofqopwwVnpifyrkoqspshsnhdoosqqqnpklh}rnoleleojklmrjokqoouupllokovisjXtqlfunmdlnmnfnulrkawgpmqwqdpmqu}pjgiotkqr{otgnsfjlnojgioklolfksjonnemwmonwkmtlphqdi}hjknutodmZimdppnj[tqqlmpsvprmqnuodkpskntsoonphrfrulmnnnwprumiloojolcjkvmwrnvoorlch{imlppcntolopoppt{kipomlmmsqsoktqlnqlnqlooiorpgmrjbqjnpkiflopjvipwnpkym}mtl|numnnnnposqgmlqqjnkgnploqorkrnwm`pqnulnupkquoqslokoqixiovvoilmoxlmwunmpmqunnmqoirfolnsrhmmllfqznmolum{iluljjrqpnpllptvodooppuplhkoqoYlwholpoiommntjpnamqmrsormqnpnoyjvnnoompqoonnkkomrdomcijcpqjlnnqohnttkmmmipnulqgqxktopqrk{rpnmmlnhkpnoohodmnprnlnslnup]kminnslqkmmsqpooksmmm_mimnoppnnmqpoomnrrnnno~cpkmlnqlnpoqprxrdaukrnlrrihllbrolnhuolnjlonpjejj]sk]tqlnomoroqnmmmhmoqnsrpjppnxmnkzonmqmlmqpopkbsnkprdnqpnonjfmnlllrkjfqmnbnmnlrlkmkloom‚dnimejqi‡jiZrllpmonrmnfptjmqqgnjojeqbjpnfugnlnmokpsikhlpmmkjmpmlhimnwqnqmXmponpmodkkinforqgznqpn{ninspmnkqjmnnnmsnlmqld‚pmnommqhvncqnwqfrnlxomnjmˆns|imjrmrloummoklrnprujjanmvoqrknm{mqoonlnknu_emnfmlloerjimniWtpvh{jmlpomqhipjrrnqvmknupoflzjonljocomlnrksqpnmnmhplsvu|niocnomkkrkniisnomulojouorkhtssuklsnlooruo`lxsnpjjdmjomopmoompntrrapsnkfcrkinmkneuolncdpgnnmuttoqmnoojmrn{nqslmljonjkhrpbmnfnvhjk_mnmjuwoqvonjrrtoqplmjooptonnnkjkppmonkjnnnollpoonnmoiwjjnrnomt{lolnqfoonoqisnnovtnlnikjpkklmmmoqopommfkooonnqoolpnmthocqoopulng…oimxnplooorqjoqlsonpmmeotgokpdjkrpmhopepokpgkobgiimsoonpiromp^knojnmmskopmnnppnpopngsypoonmninkpnmlpkorlpkxnmnnoqntqenmjqZnsnnlypmnoqfnpwnlongsol]npnlgphqslnnqopinmrpomqntjmmwqopx^qkmmnjmlollnlnmmlolkjohonpopjmpotnmkwnhmhsthljmom†ppunnnnlnpqnluqnwqirrptnfiptjglnqzomknxlopmkmtko~onxhmp^iuiqlhkosugi_oklhfgowmoylo`ankv€zb{pqknrlmnhjoksflopqqrulmillpvoopnpphkgopordqlknkklpgpnQtlnnnx}msmmmgotpnwfmknospppmkinrqhlroknmpnronoogoonntomakkosnsnkdplloyc^kooluprsljlinknpwlqolqjnkopmmhkomjmqnmmulypqnqponjmkx^lpsmeoqiw„pkk}ngksumgjiqmlmopgja{mkdrghhkogknkmjpmnlokopilvslqgproogmlmrmqymonmsrmlkvmdmdppopzuoolpekunpsqknfpomsnmmamqqnmjiomgmorof{vkepnqqgqmpepjostkpqrlkmprket^wmpfkmoqomlloollqkirqlnpminlulkolrr`nnonwnnhnplqpoqojdmrpkokqrooloqloowqnonupgoqqkjonpnoqhmkklskfokqhoplqntpyjmolmkjmpnopopzo`pplgkoflrmoohxnrrqimmmntpjkonnqjfogmvjm\mnipkilnplqhqncjnk{ucjnonqphlhqnknjqnpprp}tpmjplrcnsolkkipsjhmkpmlpxhlmutkomfdlrtimqotmsiqzhshmmjojklhnnoqnnnmmmmhr_qjhlkmmhkqloimeoqompnpxklonna{jkzspkvmsmu}^uolqmprkgmdvhl`jnqajikkmuhnoieqfzdndpiwnmompisihupmpqmolrwulqjlsilmqnosjmlnjWhleckjknginnrdommnnhlqkimimosja^pgkgghkqlrisnmnhjmlm{sgjhxmpmtmdhoilkjmojtkhflnpksoqsmquliqqSokillglvvko~kjmmp‚ooqoioqmjmqeardkmopchoqepkhlrfjirinkspmokqkkmujnntlqpuqqiamnomexaedokounrqpqnmmilpmnnojlqaykrjqaprnmnlliknk_fmmokmkoklsnotqkiszwpsmlgojnmumosmm_g{llhpimmwcjnmhjg^oxlhkwqlpnmur_sqpoprpvnqnhstmlonllkmhssmljhonosihibnnnnjvknemklmmrnplrqVjk[rqerngpkgpmoneilldskhhlnrnnonmnnngrmhphmhorvopnndxtnqqipunpexogk{lnftosnimpqlrfjrmppptnsl`konnnurqiprmkorrqnuncsfbuiymksmlqqdljbjnsoppgnqlorllvrrvxjmksxmxulyohffmkcnfnnhjqhiolhjjon{p`jjlminootphqihtwfpmfnkroykjmhprlnvl^mvpewpikqeolkntiktk}outgnpijjwplfllqjtpsnyrmdmtstosrokivn€qpu{gknohboninootophgipqnnsqbugokrsqirisnljqo|wojqnnoploklinlrlvvplubozormphpionolyknmokjxrlt|kwnimlksnnhmmlnmkmphohxnhiswjaynpmqhlpdrmmwkmokmpogonuoovnommkllgnvmmksjuntmpnl`knlhbeinfopmnookmsoomponmjmlopmpmsbnkouqqlnomgr^snnlihmmysmlomqnoaqnikor_qvios~noqnnkprnspllllnpooxlkliqnenkopsnpjlcdllngpimkmqnqqonjooickpmtonkqwokofmjznqpjkmmsokoslpnnbo|~opnrjvnqpkpmlldmkkspprnnmojwla`wdghlntorpnbpkgokpp{nqiljkmtnnnrZpoionknionnrhnlonknrleojjmtmonhkkkommqpmmppockolpopomfonvnrrotolmtknpldhrottmpmknmlrkmnlqogqhkmnnnnlmkkrtopmpmminnonpqnhplomnrrmnmqrmvhnqmomlpgljwlxjnkr|ksrkqmvparppjmqjlnhmjmwqoakgjpqrwrpioklsnjn{wcomjsnpjlsnxnetpjmslqmwmlojrrgmtq_ndohqlnpnplnipestgipkkwjnpyrslkopnsmulknjpkklolmalpqoonuevrgmnoxnozpjqpffnkntqqnnnlhjqfojprmlolmulyqngepsqtjhuiih‚mqlnqwnbtkqmsplnormmmrklnlpnookoqwpoilpaoknrmnptowdxrlnkjvgslwjpbgpqklrnfqnmlpqeogfljkjicnfcipfmilklkopq{mgrenongkjghiomijrluplorkymqbuhkjhmpmh]otv_rfrjnlgfghmglnnmqffpntmjjfomiomumnUnkkmsgfeljonpthllolm€lojlurtsrkluisknpjvjwericugqksqkckplexhSdmgpmrlskipsmcaem~sjpurruninvlfimjtjqqhljoijniljen^rhlnatfogr^nvfhjqgepjdojlfefqshtkultkjovin}jxx|xlnpommlqcpkjlnnhcndqeniobompstpmtsoslqpfnpkkqpvgpyifkYr_uppfomtssqsxpeudqrrsrngmrkgospllxlpnnmdolhuhwqmokyqcsqƒlhknZklmzhflombojdgnrnkipbpqrlrbjrq_ummilkkivhklpsglgckjwskqppcoths|yjdioLptynokrjiqlpknmdolkrnm^jtpmqklwpyonomˆtmnnwrffYlgtkngksroqhnmkgmnjtdaildsmpkkthmkpptkqbfrjfjmirhmoZopSdjmmtvjqohlmcmpqrknooj_pfnnylqj‘rvloimemqnmotklvllmkjsonkkhlripimmnknkqFinnninmijqvjfkiklkxhlm\oliqooljktposvohpolpmqqmnpgpk_lqkfopjikkymisngpkvmmighpjpjjrymjrkmmrrrrrppsihbnnouilrghokjgsinon€pjqksqjjjlolbosnnjnnmvijmpjoihjpjoltollnkgp]kpucpvlfmmmehokmnnnpkkmsmivnlmm|xukpgoojochj]lkionlkprrknsomwpqonkusoommtonto{mssffpmktuloloqhYprsliohjorqpr|qmnmopowsmndsrtojibmkjoqtolnnkonlnnqpokonimhuopzhmotrmblnjpmopjkmpjlklo{^vnqkojkl€gopmnmgngknfg^lommiympmrljnkmmnqrmfookpnmrhrlnmjkoommonjolnqmoqhqjsnnmqnuiormjpolmnopoumf^objmpwpentmqmlpikupioooepvpmmimjmiqpknwlnˆqqlmrnnknmpkrnalrnz|{no_leo]kmgknnqpompooldnmnlmjuhxmgmqnpy{xpwjononrqnqoolomVomtlmnjnkrfsrpo^oqmnpmkdpnknlomolopjloto`ninoxqYoporZonpmonoghmnvos}orgbqntkok{t…hnmnlsqnngmqhnmoporgutpdnnrrocjoqnqqqljkQopooldrrsgjpjlknkhtogmok]zkrtncdztpjrmwhjpm^trrhilpeotklvmqmmoknrgmlqzpirmiqltlrloymegqlzonn^pirzqjlloknknikqjrtvokklvphoqmpljqtopjdrimnknj_opnporhtcqpqaiiqppjiorqojkjqtlmjujtokqskiiskkgjomqmmYnz_qrohqpekr`fpmtloŠlkinnmommoqo|opbrnqluolnppnsgipgrscpkelocm]loruimojŠpmkotmjik}opltornxlkonfgnhnlqsvwnpovuioruiuurlbqrjwnpljglrklhnpssmotjqqmimjjgimqlvhgkuposlopqjsogfoklpdksenljlimoqoqumhjr€mnpmsnmiulptqtkfqmqgwltmfl|ormwqklptlsnmglommnrlskkhkqrlstkjlzmpplospospptktmonlnjwnnvprnmsnjlrnlpnooliucjlqoommnexjqqnemhsyulrrgikphhoepvdkouq}cxrxmkgvqnreyrniolquyplonrsksqqnrbon`nlqqcsmhkcprn`rnsnjtnklnook|iqimkqllkkrortsmjugppitrkomrpocdmmkhohqntumujlgjotnmfjorfvnojr~ioidpllsjkiolniqlfolmplvtqoqkbklapiorqnxvjkmlppipmovpnmlklknmnl]omniutonhdkmnqnrnjqlmlpqnqljmioYveiqmnlnklclmwmnonppmorlkunsqmn{iwgsqnmlkVimmvhnmkjnplotqkmqpijsoosvophkooonlonpmiqomlt}qpnfjlmbnploknglisunoqflnkklm_tkn{moaqebkkhloponummknmjnoepmkmqlnfnolp]tomlmboonkhnsoqflhvmlmprtnmsmtmn[tjoopikoicialppnojpvpxhltlllzmoiortnpjmjmqokmipqyzqjkpmrjnvl{momlnwstpmmlpirmqrsouqqniiisorkoslpwrlopmkrqnupjjhjnmrqmqnmnppvqkfthiolnvotilllppsoqftlnkzwornnmnjrurqjiowolstklttmwvqjkihrnjloswfrrjolmjqmmnqhnsvmnp{slrzjsfqykosptkmfmqnnnmhrigmlqrnrqnpnoliclrvqlnanmsrsqpnljqphnnmluegwoiqmtop_teqeolnnposjkfkoqg\mjimnwmmhghqrpnvqerkkqmqlneriopbmskomuqkqppkkosnponiimgwhrhoinenipivjjoghivmtfjitsmsmopkilnnmaoprhmkofolllikdqonoorrqolnjminkiflwljmgiltnmfpriljpjemorkrniUomrmrpncfkkzimphlimrkqjkmmwquqkorsjmqpjskpnqqmjqeqhginlwpopjkqssopp~srupklopoptm_tksqnnkotkqeolnkmkkklliksnloomugiqjrqorokoglorijlmqkkpdsphn^qqiotnoopmrmhvk|rromnuufnvpkjonpnitfvqkUmjsqqflmpmrmlklino[mmhmfkkkkmoqmrmwpjnjpreqjlmmlrqemmdqmvoklopfqnghk†mkqomplkrknvlnlmtnpoevqkkpnwqnnlmnlklommoopmyynlofpeqkfvsmnslvpokqigoqokkrqmjkqnoklojpkimqnctrnfmnjnuorknmjmohimjnkmoumjpwpimskrhmqlqnsnnoppkjlruponkqr{jmppinjptmmjunmmpitlqmnmtmiqoitrtk]rmqmsinrmvmkolpropnomlnhopqqolknmnqpqkqmsqfninopllujmbnlhoonjqfjolglhqojlkkmtiqmanpnnqmxqjqomonnjonqrqotopmqnromoqiqkkjornmmxjjsnluasqkkjnoigsoojqmillmolspiqxxnmfnmngippapgkjnurijmhoiqoknmrotknlljnkpvlkpogpotngrorptgmntlglhoopqiukimslinmrhkuubmfmqioidejnmlmhlulogpjsroieqnwcqlolojilowpoliolxmhrzjqsmonfowrommqponpmmqnomtnudqhmlsmnpjonpgprruiqhthlsrptknWjmjqslmnllqjpkolmknsiqogemqqnomqlafhpyqqrwpvprjrtlp…iltmlljb†xprhrnjlhnickfdfheoqqokj`hnqmopphqmpojommyqlirjjjk€kkrjmmqmwtnlrmojmpplrilosnkpllrsigipgvyrnmmjlqopqmomnlilhqtuhufpomhqlkprjwtnpjlvnmufobqnpzdsppr}jmqopq|gknlkvrnnjghxlqctnhninqpiivkpuslqrmipkqhfghkrslvonhlvopkrnimtqnlllopikqflpmpvnkmppnphqntcwosdtighjomopomkrlmkmfnlgqickmgqjkimhukerpenrrtpfjnrowonofpgkomtssklgpppsolnqqsqsuqndnrmvpq}pjktnsjkntprwncnrfoshoonmlrghnrsm_inpom[mklmmpvrossqlnerlomlakhurlsfmvmtpkilnckfkpnowrslmtlqchmkmlmcispnonrntmocorlpklmmnikqlnhpiuolektotlkqmnoptrlmmlorkodwsuoqqposojglhjitmnkuhnjnlnlnivngohlgkomjkmljlliphrqslsxpfmrpnkmlijtgornpqqfzlhhkynjjmoolopomhho|pjopgrlscoqnqlqltooovnoonopkjolummpgjgrjohfjniimvrjhsmpmxnmllpkqikflkhqgqlnokllmfy`kdqnomklqhmmn^hqglk{omqmsvujkynprnmfkqiroornngpklhnpnbqxoupmkiqmkrrmmkopmiikofqymlogbekkeoskqlivngjqpvnymkmtwqocupqnjvkcllomdmpcrpqmgtpqfmrkksumudobrgopnkrmmjorootxdiqillolnmme\tqjbqsppfmolo|pamljsstgjtbkmpn\Njwmplsnwsgnohslqlmef`mvq|obpnxwkdojmvhkko`clqmndtlqktpilmuifhqlrqsljq}oijgmoosŽllnkwuocdn`pnxlVoapmqqslgjftlowqqfcmttwmmrmwpikvknpjSll~bpojgip‚zf`qlnojoeoquqmafgcoionmn[Ukdqqcgt{ohtkmblhknqrZjfnkrkoqkxnorsjqojsqmmonkmmqmfnlXertznl~nfoiknklnktymnmnphelnlvWsxtkkktojnommmqkjusrpprvwupknigelksmpmmqspnlithloqiimqprrnfZpkmowmeifhjuklqisjrmvˆoinflosrksn[lqjonskjnorgnmoqmkhjnmmimbhnpsovppnhhsiglpkklljnfynrqskmhotoflmsmripiplhjpgqllj]qo|nfkrooihmunnlnmtndqrmnoolhqokommopjopnslzjqejfmlwjyprgrmorjmrknfommsloommrqmylokpqmmplnqtnmlhqrpqndlkledqsjjtlYrniknmgptnqujkpmhoorntdl_kirtlqkojmbrjo\oqmrmqmmnwpkkqnisojxpgmuptqqnkerpjnmnlnsfjqmnunpkarjhyqsomaqlUjqruknpaopnnmslomljfaphpjlpfqkopihotlmlkksmriimkjlkmmiroifsnqjmiljrsmlqntoojgklocfwngpmpnmqf`kbsvrjnkaoamuwfrtmmnrcmqipjprrgksnvoojllpwpmlftckilyf[sprlmtbonpkqnqulsumppgsommoqnlnpnmjinmonlngnqjkknpjPonrWdrmdondomjm\qngoplshurkrqnnojqmnqroemsnmlxqunptryqo_qlrmsoohlymnlomqkkllkkgadn^nqsjrnvkmvsmrnhlmpnolki„pnij„ngmkokonggoqjoguglpwojqiohkomiomoowermpprnvkknmytomigmilonovnlnqimejmsjqsnjmolthprtlkhltmmjkkqnlkji{mlionntnmnoknlmko~lphljkojnnppoohrpnovmrnjozpkmijjolqqllmqlmklijkpsnlnqlrlljpqgmpmopqgkunrhlnrbplqprjnumlmqnqnmpipneumllrlnhlqomk\uojkofne^qvhnfjkomootm…nrpmknnlomjmpvdkikgtmmkpklljmTodlqllo|plnlrmk^mkiqshj~omionwmonnlmpioprnƒmilnhllntkofmlookmknmmymmjknoqbryl{ornntexmlpmokqlsgbononepmltmmllomkmoyoleiljplhlkntlpnoljlnohrtppmrmmmtkjnnrpblmhkmllkofpmouvlqrnmtoppkxowmnokmoqopoiiqtpqvjussvhponipsiqokontmrunwrpnmkmxcpjfnnerrrkpovqkooqhqjqgtrmpgliylpoodnlvprrsujnurkpnomsjkqnthrotpshppgmthtkq{ejommnqmhnjrnpqlqwfmpooikwpqvqlxopovikpijhnlgslmnnqqjxen`mskbniviofkgkhoiqqihlmnhqppotxeliqokqlommioipelhlhhlkonSklsopqmjpmonolojpoqpneqnwpooloilnnjQqksmloooikmkioksnnqnoocoxplnolorleaojgmwt^gmlmroplek`phponrloonknnnkgnsmqng{lpnomlonotmtrfupnmimdinlnmnkmolkolrljlqsonjmilnmnisnltkmknhgrlroolsoennxomllvjpnblnmnppxmumqllkpjmnolrnppnqnonkmmqzwnlooxopqnonnkp~wlymfnsrnnopkpifmkimkqjrc|rjl}ronmnjqllrnmjmsonkmr^fitorkounnntnptnsbksfilnpovipqomtonszkpjpnkpnoqjhglhnholnkpfmdysnusmkrmrppolkkqpkokounslrqskurmjkqlqnnjlloso‰xfjmlomllkmmkohiomthiijghhuvmnphnasxlillgsqos|kklljtvlnrjeojsimq€qbn}npqqlzqnptts‚pmkllqpnp‚gmqnnglnmepknlmqnplonnrkgmnninoeihlnnmtnzpvmnhjqmnslajfqknotglkrrpm_mmnvnmxrpnnpkpm]nemowvqnjvXoupplokjlumkvnhwfammnkkoqoqjlvtnp^pomnnsolqgnmtagsnqizbioso]rpkljlpmpmoqmqovvokroopvmtnpprhpnfunyioorqjplopmilpvnl~jliomtsgodjrsqjinoqnkoommrrjvmllccpkk}pslnjlwopnkalkqnnnwjpqnVjmhnmmpppfqmlhqrleulnqmodoopnjrlqopklojjrknmyks€rjoplqolfnnljmloppnvpnpowhosgl`mfmpvmntllunjmpsllkpkpnlqlqnooimkilllltsnokmnljoronjzmvimijsmglqjjpntnkokpotqohlurokqnmlpqqm~ilqvsnkpwrrn~oqoihuokqpmioqnkqiblmeqpqlpmlsoonnqnoslqlqftmrdojomou{mklmnhmrmdkpurnomiloskopiivkmjqltsrmnlllqonjppoqlmosontqmqrhifmsrtlpqqmukwnlnsjmpqjisnqrsmiqlnoprlftrqnqsopnlkorrjmmnkqmkumorbptonrlonrmllqqolprmmnmnrkemopokqmkonnoophnkfpjnlqtpqorkrpkljsoqvglgkkoelphmlmr{pkirrnnfqnklvhlnqkojocmkroolqmlqojnrjnrlmnlrolkqlirtompqliqwmmojvdqnkiqlurevohrmjfhZnjlinqnpuorpkgjp}mommmjqqhkpmtpjhqkqjmjjlnpaclnloijskjlgprgorpolkmmqloqvlimplu|fklmnuvkopjpiwoqoinlnlolpjjlbpdrknpimjoqnrjrpprknolk[irnnonjjnnmnpmtqrpnmqleilqmmkolunqrmmloijqipiioh\lrvmqpshnpmmpljpnnmkmttnlojlrlnlqmlopjjrmopsolfrnmlnsozulqtklqpjjtnyomnjtrcndllkhminmimjdgiomthnoploitnb[qmokikimfquomvrpjmorilnmjilosjniqeloteosjdkmpmonelgolemlsrihjimmznerknqkklnxnquhpnhsskkiomokmppqnpowlgoelnjtokqfntzigqkoclozqooutjoorxnpvmmkwvjllrpnmnlgqppimgvirkqaheqlrnroqlocgomugglkkssfnqhlryomkcqhmjlmp_dtjioiepqnmohvrlk€jzoilknuklmnprrttp|opimihismdmllprxnqirlfpnmmdpnolsijspnkonoerlknnqlnfprmcnliklqhohoshfqskmjjkhmmpglmspkrjjvlumtnjljsollmolpnoqgimqosˆlrkrcpojkssojoekomplllmrplulnlmnnogrmhtminmkjnmklspgoqqhmslvmtxtpsgjljtumpnnqomjqjpnqohqtlssvppnimoxqonossobmmsoigriuoqrjriioonpqfkyolgkvwjormpnhqlnqrjpruoliprtjoxmxohvqqqnkxpnjjrakllmnsosqoatnsi]iuvoigeuomnipjummfllhijooucsisoqulqumkojchkprnvonornggjmtdqnqmhlxoorobpqmcfkeprjvsoyrjnptnb|ngtm_xm^rkqljpom€mjxjggnpnmhrfqmtmnpbmpcrpjmmohkqftlgqrujqkjrrooomjjphcxocormrypowelmnuononykplpogohvosnjnuoyptrxptwxqmtusnqlnprnmfjmojnsnmitmjrsleytqelkskmojrsltrnjznrjqvmmkgggpjqjpozimflkojnokiogwlvqlwmlpoiookkkglzrilhfrlyiin\hqmpmomllinhloilsrmnupzlgqjmspihtnropptompspcqkiojmhsgjjlrdlksrktijypnolrpnplqurivirnkxmgklompmlnbtkeprfjmml^okjsksklnrojpsqox^nlonpjnhnnoqskqiorntn^orhmojnklldpmof€lmpllrpmc{mpflolppwkllpmopitqijplrvpinnmkhmvilsrallWrphnpqnolhoonhpomnYpqlmtniozjkpplnlnkpooqrunjonllbkqnpmolojgdiufnlovonmhnmllo\jkmmlmoonl|\qommnmhqpnynumnupoqmkpicomnotlnhosjlrnvpjxkvipjkmphhmmnvnnmzpqmninonnmnn[er€mmonnlqnnlioljkusqnnmnndkwmloonmykkpmpnokknlemrynp}hhngpmromlmunqtlosq€nkopmnonzmplunponkdqwelqkinvqovoql‚VomnlqpnplqnnnlsnjorlpeXrnsjmlsmqlfiinoxomrlppjinljk`jnqk{vmmunnnklmnroYlnsomqqnsmklpopmppjmpmtqarnmlxlm^xqnnlpMnonq~noqoglqmlhnoiwqqkhlnfbpisnflqq{povopqnohkjnknpjpmkqqwow^skqqmtqmkonpomo{duihnohrpksqmllnskkkoqxnoqrjizhtrsrscpkqwnrpltprkqpjjnmnoumpnnoomlnqqumkpulnsxprgnjovlltjrllmnowhqnsptpƒunjehfojmphmjnprnihsmopoohpngnenpqonepjjctpomnmdtotomppkkltrjqllqnolsn[srrllooxktoqwljtojpgrnonmuqlslyhppnnmlsxsotlnlrjlntojrsvhdnkqqkonmnmpmpnbmotqriqjsmkloonkliekqripnklmxozljlqnmjrjimyocroukphkqkoqcohwnlmunmsmoemqvphpkzmjrqmsbdimoifpsjlmgmol…jhnxrmpilmikmltowofmxmnplglnnpqrigmopmkqnsopolfqqntrnamrmmsnurorojrsipnrvslmnrigm]nnlno{ohjvlrwkkolkifm…pslqjsneffsntmiiopsjhxosnomqqneuojsorrmmpqmspoppnujwkohqo|kqpjnueotwphevjkqlkhxuznbnpqmjcitoluunnlkpnnqzpqo|mlvjmjooqqyclrfohrqtnkppnnsrqtmqvnpgpvjgfexolmmpqhnlm‚fnmroylkrkgnm}sdll`zpqnoofpjtsuqtlmvsnqlnnmqrrnvqpbqmkpiqqkkqqmgijxqrpjpkqrmorhpyflrsolynfkjofmukfmummlljgpljljnntolfpjlouxmigmhdnrfiiomhklplkqjwftlmolnpqokirzpmtrv_pjnkslolhlkphnkxjlnlrnssmlvkqnhlqnpsxnqkpmmqpzq`kqlolbqlppoqobmqtpqjkmpkjpnveolnmirghlkohrsmw{qlghpjhqnonpjgdnnhpkviokmnuˆnp…ntinkxpnlnvomltsqjsponjnmlompgkmpiVhoriwqqjkovrglpnpqnkoinqroqplsvjkpjelmcmqpmupprpjimkpqpp€lsronfnhsnruonpjhosmsrrjsrmkorllkosipqlionquiuspgqjpnpljtmuyqqsllnmnlnskljwqqqtpsokkmqsnoqrmqprnmknopsqomvnZoqqnhmiumnlkiohtqlnshtkjkqvpjmoonneifmmypotopjtncnmdomntuhqsmƒmgkp{mjqoqnjmmpmkvfiuippolrrpsjnorrrmsvkmqxronhpxjpnhmipfplaujelqrpmmgwoqkrktlnprmgfkudmtnpfjxgnegooqneloiifokhummkmnnpluiopttkklslnqjkrvkrlrotiillpnsxlqtiomnmp{gmtqr]uupknlontmnpfqqrntlfhnntoloekgfjmcclkefwuplkoqznqjvrpfmqbbjrolqnk^vopqnldlltnpvmq}n_ktjsoonkismmk{ohnwpkokumkmolkloupmglmqjqkhiqjtuoumo]pqqlqimnlmkbjivjnioqonpnonnjosrqrrhkuusmprjsowjmgmmnloumjhlinbqoojqpomkgmqroklmqn|pgnqhynlkkymoiompfposlnpjhnnlkclpipopxrrqpqjrjtgisamnunkmfilqomhmtptplqjkjpplyinrooihrosqnoqqmoissmojeocdnnkllpnmnlugoosjsmnmmrwlmrlorlvopolojmopsoohmmmknjmoomhmqnnrrpvvftspoqkmookokqmpjqurnkqnqqrmprpqomiooqonlrnvnpmnslikqmpnklqqnmemkksrsosqojtpmllnlnjnnmokrlmvfqnpntomkknomkqspnlqipipnnpmikpmhoomosmhoplilklojnojtriltmmlpnjnmlnnqmqqolqlqjphplsqulinoqhnoomrnorooknpgpnqlpnmmirkiskmhgijnnmomnnopoinlmmoorlrrpovqqmrsomoqoniqqmkkleojmsqhl]jnlrspojnrnmmjlmpkjnoniomkmluvpoqqllgŽrnjworofpmekvlnllnonkgiow^mwrvsnzpmppognhmdqonefbnkkommn_lkqrPlqtnqen|hmmosrtnmpgnogfllpioslhkpomkookmprmkzWplmoko‚rypolhprg~sncplivj^omizmjlqcmmdgmqimm`gkƒqp`npjmnlnknommonnhnmnrokjldkgmnjmtlknnkummmtqijlmncqnirmnopgkpnonrimmnmothlulmmqopqmnldvmyjionqcmngqrluompmln}nknppmmq{lgrolfxlfpuljnnkmlpm|kthllmfgohmksjpiqnmp{ngrmrllqanmrlqlonhopoqbhsnrpiononlnnoholqmpi`fnppplntvrn€pkhns{punnnomoorrpolojjporqkjhoqkqpurlgolqoqnlpnonkpmjkmlowlgknnrmmnmmmmlmojflmjmimrpmnnbpkninm[oso`iormismn{lhmqmmnojvpmim~plpmnqayl|hjbptono`pnimƒnonqonwm\um|Xqkmzzrllpqmjfrdm{gopmkgknqmorohousndnu_nnvklmkkopmjlngokpgthmnZnrolopipnilsmigkUƒololonkguofmk^nnƒtsonlsruseq{jppmecnn_qjrpqn„iauhkgiosto{qfoslppomonsnLudmnfmhknrsoprqldvmlzpmpeimqmjˆmnfjgpjnor^vyiqmjlmmcnpyowvgq{nlnpmq€gjhmhrrgnqirmlqkknynokqsrplnmmrspynmldtlqv…ntp`qusmqxgismqko{joomi‚gifkmkqrbkopneqlsglmvrqopjjoipp~uknnlxmemsnqpwrgkiijgimllpeqhrlllm…ornouljlopkj]nnpotgpmjoqusuqkpuorklniphrsuhhnnmrmmghkqtiljmqnnspubnlphsmvkhrjqtqpzprownqrinrlsdnkps_nnmklvponnnowsmonjkspnrf}kveRnoo]nbmlnncpmomotmhamnjokapuruwporjmoomoant}lqpi}qolpkqnlloooalsmshdmvtlloYmqpionkseznwmfq_o€toeljmrumktpj[doltppljlrovtiqnzocq„noim|yntvhppoujpmqsjnnrnyqzƒbojomspmhocopjoomkprmnlrtspnnloijpmovnacskrkmperylqnlfjkkfqrgnimzƒurnnlrkozgikmvxhvklyrp^oqfmhlogoafs€ndozp\mqplsqkknc{epqhqrvqmslVpdjflmqgklqrmj€_egmmaŒ_tvpdzjsolx[fllitoxahYpfunmpcmppknqwo~nx{njbrnr\infteqn}fjogtpnnlknpQqnmkukrejos_sfdghconlxpwl]{nbfponkhpi^†]jnxnpvtmupnut_imqrppnnpkbvmhhxmsfmjlkiqn[f|onlrcrmmuojaekpkrf_rqionndoidkpbrfljirpfjyieamlrogpqfkmsomtjn{mpqoeqclnnlmnimiqiqmlsrqkepnr{qckfnlm|g^oupojmplwoasphlmbqmst|lmfjupllklpnmkofpikuitmnnvhlrp_rokkeqŠyukononl`vlqnlpkrmn`pngnrlsrqolhnnoh`in\keghpbiilytppkmvplemmortofnpmlnjrkuhlnsukfnoi_rfpnrqtoiokWmjkhiprvkhiih‚vjmoqpm}nulhxzhzol^lsgntfrlhqmolimhmrkypdop~qgk[lsgijppgoljoprttngfzphs{lmspnd|nn_ugfvhnmkdxgqmlqgbklilktjleoYqkshpimt^onlrlmqqrfnpkpihbmpnii{llvqpmlnknvnjekjkmqkidjqfoelpwmknnwnvl[kjpnjvdoqwzk~gnknglquslmoohf`lphryktlmpyjpmopwwotkemfkjnlmyznqrxnon`lmllsqpnk`pn€qotmnqolspjnrscounmtpfqnqfmko|mtmdrnbnnlokomnjomkqvino~sps\lmpnnZnrncxmpnpsmmnlolpvisqnupmfoo~p\eopt~qthnzplm€bcpmcmfmrkv{mmmumplrnqx•opkrop^iro|nqqlWu{kxnmnm`gnlKdponjƒmlgkkrkeohmwtgmmoiilalgorkpmqlqnmp}e`jpnkdppuhumojthhojmyllpmnsekli|m~r}ipkss}tpuolvpahqvmpryqyfnqnnrqlcilgpqlkjgnznmlptqrlroolijokaqfyoorndqqfpmtm`sgvglvqhjsyidpyykrqxohxtmsptokwrmuzltlqgnnkpfgon}mmljrmrolsjjmzl_wukkqmlma‡rtpxkmkgnlyrymqkjjrl}ncitntjwomknu‚gsasrgynjqwrzfjnkvmloreq‡ofkpimmwynkovqjjgprnpmmljmlk_klmmpondm}mjjFlkmrjnjlsninn_thnmopnppfoklmltplxp`Zqytkcnukmn]nniuhnnoionlnmqpowokj}cqhjrspm]lZqermmmqigjsknqnunkoilnpkovlkinnqtnfmnsojmvizrnuovn^qpnlnntwqllkl{tloqsunƒwfmjo]mnx|jwlnkpv^muavoolzoqylnqomlmsƒi\pllnimeofnlmmohhfoimblV{rklollxrbklkc…vjqk|pgqomme`qqpimnmbntm^kqspinmxtuPopljtlplnp‚covslrpzhpu}o`lpkipvupVsjomnlnpwl~myfowpwis{lkopkhmNqilmnopaqsknuloomttqwki‰pmargvlrnpnjlpynmlqkonnznrkzmqdljontpmjnpXƒkponnlfjiommnmltlttcnmlipXl}eplpp}YnqyqhmpokfqT{pmxpmwmmtn`ojomslpknjopqykkyn^ioniXirsnizoumioqrfsmtjnwjkweqjfxghstfujjpqkq|rtuhqsygfoamjqkokjgohflnqmhqkottqnpekkmjlmigjoqomkhqnunejqlvv|lmhmpfnhsrkkmm{nlgkpmggofmftqjonmqmnlmpdflsr|nlijpixsznmxixppqkmjozplnhdlnvoghloirchkvnswinkdniksmikptsikjgjrqrqmlqlnskpmptwfmtoqynnkpejruopdjkhnphmnmmupjjnirwq|sijpqoqklrllgjhfnuiqltnnvjqiofpdunsmmhxulsfumjmmrkulfuotlslznnpjypossnknmnulupnujpqmiqpwotijxjyfpsenrnfqeknubnpkqqszknnjt‚pdhizmeipnummm~gpsjwojkolnfpqeˆjfkjrpugohmjkZ_wtnjkioylrtjpumkmoljyoeqqqqipurqiioUmpugqplrxrqlimeootkytqnjpkgxnlilsdheotrolkohqpqkln‚pTkppjljqmzm`ommjntkpoouo\kroejuqqonrknynojyslgqprkmwt^pmwn}odnmrogilljljnkoqo‚in}q^~lkkinnqjqhpdqqnhkjkejhoonmolfkkhcojijnriwdmoipotrranlkjlbtooopmnhqzkjngjlfhhr}kmspnhkrhekuinpl€{puinlnlmfdc‚kqlmpnsiplpo^i~tr„tnpklƒilkqmnusknqvovlj}noklyignpvjpqmmimwvpsjngofmogml`qpvpmpnsptrmimjwumhukolupofiptoutlrjnlxlksncvtmv~lnlfrl_tysmmomjvlolhopolchxpysmmoounwop}mogszrtqpt^sbdeks[nl`xmknlhlpopnk}pljooddwtloquvtohuopqlemhhehpjpmqffmej`n~kkprqphlgnlqookisvsoorgtokartgmsncyoauhdonemifjiosinyjqkqmpuhuf{ikppqwxrlkml{slqtcnvmgigtp‡ysmznlmefflui„gsouqufmo`btlvmsmhsmrso_rgksq^lwbm}toomoghnbqunzwsnmlmtjlj_rqpnsmmenobrugusqcfwjnnl{mlilhqn_ltjpnrTlpomkzduemmpq`n]rpmsmvTnqkhing^vsejuot„irrqt]wopqrmnq_uqqfkbiakjelnrur{nxnlemnmcqtqj{jksmuujd^Vrnqnginmdqisn\hqmjhoqsszfnsiljnoioloymmkvgodnkvsknqgpglShjpqrfqkipjtixsgjsoxsnpjvuqtxninr|jkvitolnsoshntumikpkgjtmtnlsjqloptqwp[qvptkxppqhesrxpoufffhmpnhijkoj{kcootpmnqmohmjksnrmkokmilr`rnhvlbobqfxxmqogiiensmkoemcilksonnmnjdqrmlhptuwntpgdup]_mbnqljmwknfi}lelinjplZnrinzelqqqmqnpwnkqsjjnmlqfoglhinooogrnsodoiqemsnuponpnjmocknmpsnnuknmoioxncqofmh^rvcmqntmpo}mn_p`oonplmslkuj_]onc]mn„qkpnlqinnsmnognoqrnpqsl{qpqmpmtfoneognnmsqo‚mkpslm†yqnoko[o^joeppnhkotmll€Zonmonpmulpshn`k_telgompnbjnkcinmprpporpnoqppwrp‡gtkpnmmlhlxnonlnmqzqon|lƒqnuk`noomdllmojwoom_qcnpjlbusooeqskpqkmpmpjqonjm|qtkomomkmokmj…~ohimfo~XpsmkcoSmkntvmymmkpplnm~o‚jsjjn`wCdnimprmm]ngqjhqpkqkloopkipntrspdmbppkhpconpqyndjm{snil]XpojmxqnrukklynkjimodboltplnlnrnwkqtlwW~orlmrh€ukjxfpjl_zprzmojosmf[^hxoopqtiqtqyolomoolzmmojydvn}rinoQhtnnvrˆtqkqqrtmgitoqpuwprougusitpwtwanpktmoyitlksoppomtonqqeor€giwnwogphoojpmqzpkleppifd^avjixunrwkdpmmg€pk{|Znpvpnrojcl`paZXjmtph{kukolqkkqklmntr`lleognsqwksohreimlEfelqwsqpjkqf|zWet`srkfvgsnkompfsocen•mngyilk‚knjnq{lahooulquakm]trmhlqh~mXgips‚fkmmqqklMoZatSRmdu~ckovnjiqfmonkqlplnodjqmilmpkpmenboetlkffslnrojmrlrtmqmvmmnmutopngxgrwqciqpillbunkrlovnsknpitminmeuzhohtiom^yhjnqlxogbwptqqlhsjmpmujrnmlgpkohlrllkmhtjmnkqimkkrsstqmixppjdkgpnormluhp}jueqsmlfoqgqtylxhotniwrenblmnjkejhlf‹ulmslgslhpjeqhemquqkomnrpepjusijklxs_ostntmolpgevjiooYqocmqjhqb[tmgohhusi]m\[vnhjqlvmmhaonnltoejnrslo^jknqgljpyrjmjhimktufookn_okdgsjkbpmoukqmi}co_khlkeoiqintnrwlldgoj`gisibknoikcivkmnbmspkhqlbqxfshRpompm`vnxhkpplgnxpnrlirshouxnlkqlpnmfmokjtmlqdqkmenjpjqivejgulcgotognmjqexptnkeosqqujopdcfkqq_mjmbkoplkƒhoumcproBrqlonprknlnnp`nXnjnommpjooWjnkoqpomopp‡rnppnlkrunpijljomkpxoTpelnfoVijqomolmunhnVdmoklupppnioossnroŒrlhmn|nrhmolcm{qmtkqnMoslmvppnYlkoopllpmsvjq``lppolrqhroemmzmqlymxnmkknfnf\lomnmanmtnkpojlxvm^igikmtko~qjmknqpmlrklp}~qmntroom‚urmjhnnxklrphlnupmpomrqp{oolbhqjuotljljpelxxkqmjowyonqonlphgohpjtppqltomoppilnhqwvsmqnmveptsluooniRkumionjjmnnplqhqj`kqocpfmmmijp_pqnrqklrtesono]oqkuvqootqjmpokq`lnrqfjpnpyhqopvnln_hglljrxfkghmyorno~hqrnrrimahooksnwrtozojjusjqnfcuoliijknpjpmjsplqrndkqimyhoonomjnpmkopljhqstkoln{tozdroridjcVmcknmlcpmqrmnl~iuiotnogkzspkonrlsnbifozhonorwkrsnsgmqmcokmhpplqqq}e{tjjdtxrimavpopes€Yrlmqmyojoplsppojqipofqrirmhcqeuoknmqo^vmronnnmlsj`dslomgot^lfqklnpjpppfkwmlnlbqpemkqnmnkomqgvnofnqqnpkqkkeivsnddltpkmepvpsqpmrrtfmkkminlmmiolfkrnmliryznosmc|sv}fofaedisgvqrrpoupkqt}qvskunrkqlolxh}snnqlhrjjlkqnggplrcwnoomwmvqphnotnihqcowxmrrijlpsrfsuqpbe}lquopmmtjmkhpnvhqunusnropst_kqnr}mo{ojlmup{oornylat}qtisl€flqillmswmlflrmipihnrytncfghnommhmy€snznknwhfqolfrjqnsnrntg~quibqnhqzmks|klh|wtklqllotwbhrhrusri‹rpXmkmƒlnhqoƒrjmwkriej`}lihnƒxohqnehgttlhnkorcf[simknŒno`tfginnwklqljgilsjhmopcxgiwiko{vwjpdphsdhh~mnnsVoenoSsnplnpeuloewrmgtnmmpzhp}q`fewksol`ueqdmjlkriljbfsmnfsowrhopn`lrppdnvohqs{jennndicotWgkmonmksnp‰jsxs|sqp}gnokicrsrimenp|sqrrkifrstmpen€qg|qqnnpiosnukroznkmtqkim{ukmr}lnonnroojnnnl`mhmohq_†pr]knnsnppdnoOmmnoknppeqlMmfcqiXuƒstnormr}l‚n`oppsrqlpqpjrmtjtrpˆrsumoap^gmsppqbnnkqllxinvnummoymp~lqmhsojplpVymoipnndn_rWklymjbugmnspm]kfZtoqq[fknqrotoqrljklplyoqsjlgq\ononsmrjmomsdlshwmskljp{prmqgntlminoqmpnherlornqltmloriqtowgnnXemlnfnloliknq_rm|rlznfhrhvlhqpmtnchnsqvmjpfpofq~ogivjYbtyrnkosjjozs\qnnll\omnkvoo_jruogmx„koirp`nomwlgltnmnmwmztjzjlq`lkukqotpqrmnkWwknsonpioqp€]ntmltfnwpljmn{jvugprijhmpdrpnncmfoobgm_oltln{rnnkmmqko`pnpyknlreossowlrmnktjn\oasrqdfmhlmnjqrvqtqmmioqfmpimopqnimskkhoyllkgoltogloojnnnrqpimpknwnrfokjqlkgqolokrnzrpnnYpimXjloukooqismtkuuujkgoplijppjpgmqerunnhjklnopjiwrknqmmtxrkmqrjmhriilpgonjjhntjmfqolllnqsrmchopimpjnkrorko~`mmnspjk_kmqnlqnklltpeq|seimlwonoopqkuirplsmnrvxjmowkqosliqlnanli]fir_|sodchpnestb{g|iiongklhismqcfdnubnorr}hqtnczlhsrpprjroirsxkmp`thro^kiZoqfoqmgimgvƒuƒm€m}psvzmhm^ng_ƒnospmlbmokrg]ndoiijrnhsRkovFnhjn|qtxjorm‡kijrcwXogeƒm^nyh‰]elpo^iqjpmxkqdsznhYolnmmbeiookphYgrjqpxrxokngmkwr`lyrkooewm`kgormcsvqmukjvqjnq\ptjmooBm[fopnoVknokkpqnrpmpmpololqom€vobqlnnlqmjpnƒkpcnmiojPloMlepntqbfmiqhmqkmopunognpukxe_]ojqomlmtplmzxmolpqmmrnon{nonooplxos|owdmkpVnplklkki€_qmmlyl†jovmspkonnrnpmrlolosqŒjvn`omim`xfoojpqpspi„zqnmwYmm^fnmntjgbd]viujpphkjounmmpqlmpkmnfvqrpcormqsnVknplrmovsdmlnjvpjofmqhuelnckrstsoktopmnm{qnzjxtngklopoqokrfrnomlqwjsjkntlbiphqodoghohulonnptokophimisinlwifpjmmksmnzwkoyneokkdnxoqljkomnprmmnovsmnoyopjzlnqnqou\jhxm_gpok{pqqqxhl~llmnmpnjhklmpqojijooisqmqetmopjrwjuzupvmgmkomnijkrmpzjfxlu_p_nvrlkonmujhpplmoustpngmoqvkXllporsqlkkqgeon}vami~yykmklsplg\uhvyoXnonnhjjiqviogqoppl]knjyk€mkufhrokmmi_ulgolbjosmvpUrjpZf^tsowjq|qkvssY|…kxmujxqmii_jsuopmermbmrvj`csookflqkljkcopaqkkz[pmwhqkrkekX{ooosqa|kbhmmmnollaorqgspqikjqmldvgt]oikupshsl|yRqekm‡erfqsr\upiattpnqo^pnoregtlokwlmprqbmkwklalngrtjol„phzrmsklqnknuipnourxpntojnnj`o{bkkkbvvxqolyk|noosrlcolmhxhutfo…qnjmgmrnkynnaylbuv\pqrcmtYgjedm_ckmghqxlfgltpaosnnhkrnrtqpwmksgwpiaje|i`o]rjl{rimlfaWrmkjhjofjknso_lwpt\losirnwnpsiunkUspjidipffmqenlxqimaqiqkl{m}l‡vkfilqpjpnwmiqsozlmpmhlssqlkoigltvonorjrxpnonrlxhllrnispqnsnj~[kejsimkpxujrpk}prjsjgrnvmnoumrmznnnjgsgnpphwovlikmcrslgnehnqnlqnljrvlmbynhnkff|olpgtfpprlhhlrˆlrjloyvqfljgsqokmogerxofhlrqvrml~hpsmelkmpmtlwjmjownoupmmph{qontthj}mh`kqjpklfqjpcfefllunourjjo`h{hmsojmhpjmkltokmmpoflodjskoildvcuikynseqhglltjknrgmenfioftkliijlslgyubsmficnrrfcglkqmmks`lmcxofpjih`ipjhnoibndrnojhlm]rwrjjlsfmkqkllizjuculhkropn_`mvmrngslnolommdrjqorlnkjmmya`ldpbqznoohlqlqtxnpfmiwiruekppqhhlqejrpqoupcrmnhfsjsgtvtwlgqcn^ppqjmemukrshmsnhkjmhntpaofrrgjimigkjqi_slXijtmrmmjlqotjhkgfqnwsnorqmkmkikwmfnpmdolmpjijjul|h€nustm^rgmj{eom{xbupopqlYmeoiwspuirjjgljonnuhnmfklniqppmlmnjqlijlqcruKnmnitlpkkmuokskpqlappmznmt~popolpnvolkjme`lkrpfqsknslbo[nSb_gmqprokjjs^eljketmk]rpwvznxnhvinvgssqlii`nnglkimutlnZhqfskmbrj`kullcm|siqnxtlhldmmpbrosu~npronnrnyiqgdjmƒpjnqsic|Xn_jjrj]kpkomflovmaulk_mc}sbjblcrmsoqnkbplcnnskirqeoklpsolsxptWcqrjjpo[xsshefognqqdkimlkuctql~lo|jejmxpmrmoipvnombujmoovqzlsm}edynkoiolnehuqmmvilijjmmrsjhimbmifboovi[qjrulpounpfhPumupPgcmunkspZpmcll|srnpjurmilswim|mslxqpjoo{ibnmovvoltkqngtmrwnllnnkkkrn{pwkpqmjlsqqvoqmrsmptsonpnomnnnk`gnkskqnndrjqqq^lklwomyispgtpkprtuijdugzhowkrqnlgfnigowqkpmpr`jnsrmhjmlmmtrptmkoroqmqrlrritwyopmmvdfilluppoooemdrp{memtgrhxpkZvslinvpfnpsnmulppyov{urnmngpsnujpmrnlhqrcblqhonpnlrntjrdjhlwnkkilolnnnmememgtnijhiojhzkrtopekljgirqhnkpo‰lr€juzssebnrtmlnnmtiswqhkkcqnuritrqlghlluitlgquonnmi|epptmpeyn~ilwsrwih`chwgfkhkfoip\nkkˆgl`nimbjjmlsvmlrnqmmvolmnmithmltoZ\ltlr`piopuqhotmdllinpkqrhvuplkqbrtpj_cvnlsfqgrcfhgst_n~knnhmtk‰dmtolgfolqnusqlpdlmjn]o‘sX[rnmov\pep_upocskkhnonpdjnnwpnhnmnlkmopnpCjkllopmnƒolnkmqplxhsrntlbnqlmnpulpkkosmjsfqvmikqlmmhkdqhnjnjrqronpjsvqjsxpp^lrgpuprhq…orksnjkƒtokm|mnkqoommkmuskkqjpnrnqmqmmyplmvomxlxf^oojlniedqu`liqpgrmkunmnmjifonenq}kmrnpyovmjpmkmrikooPspurlnjjmw^Žlnthmomsiqkkhuysjnfcmnpdnnkrmmjqs}gmombmgosc`f_nvju|ilncti}nqiliiqo€ahf_jxttsjnlbihkkolqiflotorsllrxclseproilnfrlosnoyqhlykqcolqjd~{nfijoh`pqmunmulhgnmhekqoffbarq~gztgni_hrojihWXiojtnawhjeblrqordxkdmg_pqoiplkjgsaflvjpkjkekˆmyrlmhsjwnrm–iiylqqnpvnpctppoqhztomhblkosnjpnlqon+nshmmsmmmpdg|eXkljal{tmknpll„khqslkrmpmqotskenrkptouryilooukmglirYsrmpnmppmopnnoon_qkrkjnjjjrobrqf@jrqlmi…hqntgkpmnmelwofq}snamndmpdop4lehf#lmko|mepvvmonscf]ntrppmghssknmrjmmgbohmyjuigk^mppm_nemnpsijmvhtlivgu~mZiktEnpjtl]qpmamlulepjmlsohmlnllboepforoenqqklpq~gnmfrjnzk|rpodnjsxphesw€vˆsilljlw_rqin{ns€imykpkoeommwqlrmomhqqmtomkmoq‚nspnnmqgjopskhi{vtd…tasnpotmasrqkhspplmotenpnxnmoiptjowlrhonp|zonyilmlonurllnhiigmkunonobolillmneisglpsjxwmijsokqvVe}mprmqpwnhpkkgstlimmnpmqpnnnwnposqtrqmwihmmnnoplhdsilg^smnogxqtofmooiofo}lqmovhnm}ipxpmmlonmlpj_lo_jmprglmsejSmlmuntmofifnpnmmpaonRibxjdk{cphkorlotlŠoƒrqols{sklnqqohtplVsesqkrpcnlroonhnnpqnkdlsnljjonopjjnnnkgksuhnr†nijlpm€jro\eqm{e[rlkpjqdro]pspljafnllmpnlgnmewUkjjqrslmprsoonjthoukoniyuqjslmy\ymowtpttam`oZpqpn}vmlqnjporrpm{mpmsqtombsnfllopmfoipl[shsrqupblkmSpolmnokuomniŠnpnmlkhmnemu{gcd^elsonlnkkq~hnfmmwhqygmnmkqZ{hiorpjkqtxnsoptk|nsvmkmomchwngppkgsl}lpordjhjjpyampjmrnsfoktkjnomsv`ipmfmnmlk|rnmxhqkmplqmkg}{{djqdsqakomqonstlrqrdljmu…ermlnwgong}hssmk\qsxvqfjkvjcqjpji{lsnjovntjgtrprovhgfmkkqlsivnsesimhwejllsjosofnknjhmpnfnirlouqcnolfjj€_okmnmpjjlcqjozqkklpgvnhtkdvsbotkmlfpykrjftmuojmmmkqomtgjnhjnmmoqnqpmugluorinsnfrjrfZbumhpmtoqnouljmqsm_fpwkmgyrmnmppjjqt_nrerqjduygsiviitlimonqkmyjrrpkwlkuomrwqoeqcqksssimxlgwjnjjkmmmggtokwgfmpjloeMploikmmoknvmffmlsnql‚pfmlxjkekmyl~k[moinYmZromolkwqocirssWrdsogksnknxaurdhooeqnlzjom€o|`rlokm\konoqwvmmukouhobvsmfrgulklkrlomjlkoagvfqdprjmftwukn[fmUuhtl€…xolqkknqy^y_oqnlukrUomvtslty{ovbrik}eoitvlklm…nYvordllkxpqwpoqssrntjeoonqj|nllgoOclqomorxpoluumwn`hooYZqyoqnrosppmop€khiojsm|mx^lzoNoqm[qnoipnpoppmwopukkqkdjo|moomkkndp‚pgkooolOukprksmNitimgpmjlqlno|lotlnqnklllpdavtlpynsorsmomninspollQoqkpnp|yimjhkoof|Tn]pnppzdpkjnnslvlmqqqnuogkWtpnjtlporqoppdmjpnmomroonve}xpnopnnSg^onsrujnhl_wyonjlivshneontlrnpjgmqhigqlftqhlsrpphtpmvrunqrdjkdheg|mkglnnmhrmwswprtvlphdeosckiokkirojgstjflhnq_mrnnZjijkjnlsqhjo€lujkhmxoeljsjmroohnnnsusknnmmrmnumnequkolhlhennrrpidqcjl[ojpmotkkqnlhpq…ns^spnje|okhlqolgmslrozl{mpfnssoylpskioiduiqlxrqpqqqkxyxljjqopnjutjlhkosnrzlxo_pnqoipqeqnliognobukapjmomqqpopf^kppmrkofrjqk…qVnqmfmn`okjiomyn}Ziqipu{ZemnlrkplcnpqRlrpukhnqsrqkos]npopfynpramƒlnmmiokqkpolmlhrpmlmhoKmn}qroqmriomqsekkorpr^o]n`immn}uijxinor}qpoaqksltuootkikonokxs…siomqslmmmcoqlpqnqtjnlzYZuqkqkpmdbglllmYl{o{nVtrlnlhqrrhnohwpjm‹jrwo†xinngqXlgiopqagmnkzmwqm`npuoV[mgn€nfp}lmiuqromgon^mmtpgse]khhqmlrolgxt}gQipofleirjlrloYvkwoRpirmtmqqionldncioqqqli{gpnijrnmmjjomthqfojohqmpinvoiy\o›hnYnxoltmtmrolemclrqnkqhouOlnrohq{yndzjvtlspp|rsppllypolkooa`bpmhpelrz`|prtisin_k}pupkmmRfqpk_romnmmnkpmjp~}pngoonnpornmqpmp|omooozklWgqxmxmtn`nimmslbqroqol]nzikvglm\qrsupkmlqsinmfgmojpynkvqgqmrpshkknfƒqowlb~lqppnZqldpkog€~knfmSrcnkpplknmrnkjoOrpllono{kfnslnwq\oqr[mmphk„osemopn{znotpmvm[flwuƒtplgnmoqlppnjmopqmbomo{rnuktn{kr[aUjmplb_mnpynznlop{hnkklpooalmngmommnkpni^nYlkprnpjqnp{lnhkm|uoVpshlfppnrnkmmdorplllmp\pskm[jmsƒŠvklpnjlt{ojmxtrlkj{rtoplmm{vskqwnhvoqlniqmlopoaqnsmpmb_Rrmzmtl~nqlornvonqnps[~nokpkp–isnaql`nmrlpiokmrkoqYplpmspn€onfqktM]n€xq‚kpkmmkqsomqmqjqqmnkdppnvm`mppg\nrzmidphrlnwrpknholrq]mmqSmoohhlnmurmnVzlvnpnnrlolmkcOozqksoubof…koprnrkepmsojpmookmZom_kwfqgo|wrmolqmjVjprhpmpngƒhmloononctrk_plnlmpnq}pjr}pXlrvtkndxoqnkoylzlkrokmhjpnslo}{nfsljmas|ndlkdlijhv_nmooi\ppymoolg[nmprltsno^Zr`~o]poxlmzognsknqlmwqnpQr[srmkslmpertqnoluljlxmjlinqorycpmgjiutmn_sdXhnnllptpokisllzln~jtqlkWlbop^krtlmkjnWrmlqcuqmthkifkgtjipkplgkmscjcjulgmlmuuqofgh|hd{ikhklsxperdpgqsukoknir\yrloqmrpuinropktmijgohijo‡lcmmdq}ˆ‡fnkqqloellfshejjqpfmlmtboouemmqrjlhktqjnlnflUheojiqhxktdppsl]mebomhulvksopoqoqilnpnommdfsknsrnƒqrlquqpijoqokqokofonm^tjloinmoqpomllbphrfspuwtiakbu\lmm…snblmtloklm€kTiq†olkfgmxkmrnjhllhnmnvm‰rpqjqlpz„hisZugqqmrm\pmolfljnltllolsgrmwnqkqos]nmnsosglohuujmqqnrhy{r|wl}lxfolonokkzpir’kklltvmp€qnqq{t\cnxll_moonljprnjmloonhplnQ~qplplZkrWdgisk`Seoqqoujiirqmkjkoqwrssztlnwpwzdmr\llpoj~lwgqWcphnqvpkjtemsroovihiolqu{enil[iqrqqqdumhrkfmrropnevjphqqpwfxkszhmrk{XXqmtmpjjorktnorxltixhrpnZskcfqtpnqqnmliqgbpfsqkmhskolmmnpfe^{ssoqeqekqmsnkfjgspnsnnqtgmlnpeipsfZormsnslylpklbglp\ednmq`n]mpmiiljoskgmykrtonqeiyrqmpmfpfqphe`mkmwgodnWlkmqzknvaukƒqzmixokffommqeldnrXsiqidspmknjhltmonpgpknfekkpkjrqopmmsopvhqswlvomjypiudqjj„|f]fppodcsmgs`jrkhnoq\oqnihnsklmmlvmpsmrqhkdergubrntqkkiqbhvknsingmWmktpp[ihoekmhrqfcof€qnvherpRqn\lpqrqvltnjkhmy{_imoiojspk]nioonmrukfymlatpupk~lmo~prjkp[pmpokpplbjklckplot_nmenqxqlnposqnpjkgo`tientSw_gjrQlsp`rpxqdpmlnlnppqjd{s~{gjn‡olqlmkpovskplovrtntqmpxermmekn_noyr_fnqnqoampmqkliz‡pmgptpfkmojlkqtknqmra}lrmsno^wgnbxnPq{f‰plsmqleymq\oonpiapnwiloqxi\reFrj|gptikcolnmolnloolnf]istkoƒpnxvƒkkslafpyltunnsspligyjqqqlp`snvrpupkolnsqknuhx|jtorzfmjugvkopotozpnolmosprmngqopqmqnvkokrwkzgrrkljfrnswztvcholmntivhqdmwhorrvhnqlkpyqqmknkmesnunqqktppjqomztirzvnkst_rfgrzikqithim_mqojqnvllkjknknqjvlnniursulmoflg{toj|qoojjxmwlUv}qfslriNprsgipkdtelpkgvupnmvipspthmpqY€oknkoqoqlintkgormhoprls`mm{ingmkklpqpkmpk|moopxqk–ov]mtoqnkqŒkmllenoorplknygosXmurfqmnkrimkdspjqkkmqg^ktnooqjdfqrpsmo~mqgr]oknikolpoernrbpaomzsmnsnoylqnqmgjunopbptnjqjpd€okjnqmyp`rwomnpgrlgejplok‚or~niemfp€^unvlioiuroyronorqrpnwlmnskzppoqmpw]hoqmsngszldncgntntjplk}poo€onmtmmuoxvln¶qlmoiplmnokmntsnemlWllqssVmrmhnnlpnntkplnokmmvluroc{kmwz\mklrnolklbnwmnmkpeplnlolmvbljoZonmopoqsgnrnZmbootpplfUhlmol|n\npimpppplhplnˆumlomllolhmlqipnt]wlwlllgnjke[hppqmtmotpolpmjsi\jjrsnprijtnfnrmsmootrll†`tqnvmtmosnToqtm}]ohrmtklmppdnkneuqpwvllatqllinln^qkloqnsoljooromsoqm|nanjtsnpsimiojzo~qpiljnnpwr{lk_rkjpX_oTjpmmj€rbnulmposjswpoonjogsmrsmr}qsqtumpspemspqhlmg_Rxrmojlunqslokpsigpnmd{lklompizpn~gjrolc^lynmngruhxxtqpnmonsxqmkpij„hn`tmmmorjksvrpgompqugpmomm`tjoogpoheoktirrˆgropokmniqtmnononojivtpvurbpjqpmqpusmtluspbfpfkspquxthojrsinmioqmmmplnkrljhpntqjljplpssrptrgqtvjqkulotlqoqhpnkhpnhkjinumepiarzrfkpqmwoqmnglnvinjgoplhofronnmylbmpkpldqgrninYxjnpprmsrnmslhltnmrljmnlkttlrtsnbmj_kkvkrmynststjkkqdeonohlmƒmlmldmjkokormxmhplmpmpklkrnTmsqnn]knpnilmomjmmmkjnoghoo_kjinnnnnhkonnojq…po[nk{m]Vj|jposqtfnguvnsllpmqp`xpVli_ojqnkmlomnˆivoacrquojkmootsqfelpqxjslnkcodojk_lmnnknony„fpokmrmcsp`phomhr{lhpu^njpmlq{‚oobwr^n[|cqejnqljep[€mmiok`kqcpljlslajdkttjlwjqkkvnumrqpoompqdzfpshmrop|vcotnmsqqcinrpf_\jnmqpopzqdl^dioircwqrr}oklffsoqT|`copgsprjvortldpokwlrvmgnllqepn‡ytqpnu]nqlpppnpmrfurjq|poijjsyaoXpkmie~isn`pnioshhkpqkldTpljmhrhYblnmhoopoqj|frj\ykjalts„job{nkvaqsr;kq`npurpzlfnpdkqnurgmveokmrwn^Uoltuko|qsq\eyMxmƒjvgunhkjriOmtqqnmmv|tkiuoifjozlpmpfelo}prjh|uelrdq`ppj|niqgipqrijpivmfjnqjrzrpqd|tknbelncukitrksnwolthremqkjlintprnojifTmn|gewfks|zerwnsilpqlƒnklilrufvjqqzqinouxhrnlfkixhrtebupetpmhnXts‚joljohq{jcojfrlnlellgnifmljrsonpregerinmwkfiolsmhlllmlnqvpjolrdr{chwuiyjlrmkkwjkqmmsgjmcqinzqlomg`kwkmpscrfone^mtbviplhimqjfopnmogllreptsxb`nwqjmiuhzopjlpkftwsprjo\ptdnfvnkvlmcyqgoqhwmugyoiiexnhylYkvih^ksaikj{nmwni`acompsepomqhmmkpohoov[phloqmrpomojzrc_vjuepoikmqs…s}rhpptrlmqutunmgtnmdhkaoxqjiu‚ppmgm_mzllivnrjrhlniYmvxpokdokyj`pzbhvkpcejlkdwyuji`rpludhJseZmmnkisopmxjnkZoqnpurpmnqmom€nunplkntppohgfoonkSn]_okdopaouq]qmvqprmnlqprmynmqpobnltpunpmnkamaq}rnpjoSpkmlnnndltlscostknkpoelonmmfrmqojr_kbonymvqftiqlomvplppqnxamlmlmq||zoqkp…oYdmqiomoikelublloopmmrjqlpnmlfobKre_mnsmpsqipqpnnmk^komqmtnqpokn}…nkltnlpvqiwpXojonvbpnnrkolvjloprqsn^moouinclqonnslpmm—vlToodvgƒpdlonpinqnmwnfigmmmkprvmghm]ckui…oofnpnmg}phlyqnplojplnjhnnpvvol?rm}mojpbdkrp]nwqr{lmlqˆyqowmpohnvdlmoonnmnklj†nnommlmmyp[ylamhofksllonn—pkbbppngonqwqpsp]rkmwcrlhnpjkjrplmtpilopnplp‡Vcsncorqk`ieilvrNrgs€mkpnnmunpmkoto‚ngpkornxlmoo`sanlmjmtmknpis\jlkvt}jaœlbsrmkg}kpdnmpmlhlnhnnkhVgi~h€honormmryqMp€ilomm^sojmipqhrjnrqomSrjpnjdpsqqnhmonokinpiokvmymoopehnletpmvhsƒdnrnqrqf^eqgkl`ovoYn^lmqm~‡l|xspqmq‚mmmmjqqliyox^fkyrpegkfobnhnmmmojmmjri^oipwml|q|hmnptnrovrn]rlnq~untn\ooo{nllhnolnyjpnonsvlqnjoomnmkxqk_jjbj{znjiftzqrlzqn~qepqljnkco_\o{bknt[grqnnpqibk{p[|pmwuhlponlpoyqqvnjqjipknl}eknmin[nnnokqcl}kollfnosnsomnhfpqhlpvnoklojon}bnykrSlmimn{jokh`am^zwmlp`hlqNonumbwckvj~pvjrvpnnk{munmmkkŠqjntWoisklhooqgeprrumpplldjirpsnqbopmvnlnwhloholmntjloml‚onomnionmnn{jvln€orvjp[kznknkoonuprkmolpllns{rpsitlWimlpjnll^lml[tnorq^fkkqjsmo]nml‹o]tlpnkgjpqngndnlbllhmkvmmimhjvpnymjkmkojkkn__nnqlpmnhrnSkkgpYn„q{lpkigvpp‹iqpnikmngpjrnqmitkrjplmmfmqmmjnoposvo_llmtogypdoojoh^koimvxptrrguqqnnrqpjmlrjnjoqmllpqotfpng€nƒlprrqolpomnCqkoltqv‹k€‚jfpxngliqmbs[lmmqmnvoVŠng[sdnpbo]qlrmnjqtquxlqhswklpmnlnvdslksqs…nllospnqn{pZqlmqhj‹qkm_mkpforelmmoooonhpvVpnrrjo€fyplllhn_zvq_mmnnfnlhfhkol{vlo€sionpiVq`ligmpnjkskfmflmhonymnojhfyoqkglpgzSmtpoƒns]knreoqjnsjnno^qkn}sgkqknkinlns|m\promnlkvpps[rmpi|pfzrnjnzlnmso{qnupynqnmoqmnrvn\qpfjgxnporupm‰jvktdmolmyinjlpnmjdspq‚ipVlqlp`\nio\o`rrWqqlyvVmmipnjkmqvmmmovlnoml‚tnljrjrmlznsdmpoqujlemmqjvglihmlnk^_klrlmun{pmfeh‡dblmxlpxkknslqnmodnko[qYqngmiolzjoknisbonimyklxwmnsspcskxorlriaruibwgloklrfoxclgqirqsojijeikfppsmktpsjkojrgimmolflitsnjxkhiqhsllcluopmnuqamoilsdmvohgr|kjrfkqnxkmldfzklxpoiammootmilpgoppnjlodmeloslqninhhqogq_fjdvjmhjirpwngprnhkrpmntmhkuqqfoonfikq|grlqlmrmgqjqƒldhklnojnqo{nxxgjhknjriqssjqlqgilollpqnlksrpliyrml{vommslonvnlqalqonehflpoki{aokscsx„jqorrel`skvowochqppcilqpoukntqvfkvqvSƒ{qnumkmpoulssZrjosxfyrtkgomsbggtqveimrfp{}mriopronolsnnznhojmknmvrorlmrhnpkjmljnprdkknlhk€qsunpgnmplk`uxmgX`rrlncnsckl}qjfnnu`rj|lmsktdmepismpxtatlmgdwklowsmqswnomiztmeqoopgnhxnpsmklqlugnolnoijvnooyiromolpnmsmnmrpknrmuphqqmrlnrmmojqoofjjjpjmrjnsorqisqsknimrtjmwnpjqmqlqpoqnlpsipkirkjporrvjsqnmrniroololmjmlrktnmmotnlnpskrmfnum|rntomnjnpkkrnlhnsjmrijnkkmronkmmooqnonnqsmgmfknjoio}pmrrommonoolmqjinmjmollqjnsknqmnosvlnkmmnonmpgyrjmj|okhmhnlnsrkqSqulnoxonvcqpoqrjomqnlu‚m^pofuj{o|ull_mqmumnnudnnroontpjnroqufS†oploqknYmTyx|oqescmnpolqknrnmi|mjilpvlloqolloesjSnjobc_jlrkunioidknmpootkktfYomjksicxpnesqcmgcimYjormkhnllmnmmmqmogtnsopk\nwl~comqjlpmxlqllknknpslujppmgnrqmotmomvrcatilbqernnmjjqlm^kmmeosorpnknzllonnmunllmljiklnrip‡nhnk‰nrjumkntnkinbo_mqmkqocmvjkfvhi\yhnglsqonvo]ok]onnm|joolpjmkbvoo[ps^pmjnqxnmpwpkpo]pmohmjonymuorqjclnnlqrrjmkTmlnpsnl\WloŒmlon|gklukolk[iksyyllnlxnnwpitipjppc€uigmnvjkhkwopqmologjiorvfsmolionaqfmlnuvrsnlwsngmlsnibnqnnckjvummrn[wimsqlnjmymg{nopsrjrklrftodpnmnq€oinrkpkrlbmej^nlfhtlfutlwgonqrnytgpƒpkfndmnsmrooorlhiihiqhfivl^frlmnttchfrqyikf{vomnxrlulmjcpfjqlbsfpmrtihjnfc_rimonisdfkiohqohnvjqjsllkjnykoqqlmcnkqigtrnl|mujzujilsmjnmilxlwtqikkirlnksrvsmeulprmejfinhlkikjojjhxnlqoplmprl\ltipnmllkpqkiglqlhdjsigipkqibrokrmjnlfvvmmvimqoaiq|ktjgnffvslyzahapuikkxixsskejilnilhsgwlmfmrlpoibeqlujhsmq^npfljn|haiodmoojtijo_pxlhagelomoisrjjtqouwjoplvgjdqqnf_ipkkrkilpsrknqonzmjsvrlldgxtx\uv|njnclqnmqtummgZrjpivuoslm`fmtrfojnnmlqltsnjmkekitlklaolmo}nllmmmfoyk]igmrql|msjnnlljpkklgmaukvegkpqxnonmtmkuhgphrohjozqmlqfn`usoph{grouo„silwhUeofsophiinnqnqntkqxsfofnegn}kwlqnmmonksojyphonmqconpviokdomsllhjnkioleilkjqimz`jofoirk]rkpnlgitaxoorrluismiio|emoihwlnenfnjt‚nnophsommkwmmwnqqfsimuloqmlpƒnolajihgVgjfmpjnpplprnpmpkrlohgefrmlglorkpklnqlsmlklknkloemc~nmSiimomqtrsuphoohmhkpkmewspqjoqpocnnksnsjmlhkkkmrloalmsjkgnirukiratlrglrr´pihoknclnpvkjmgnhhqokqjmlqplrnmkoomoqrlquhptpmlojiopmgompmrjkchidofmsitrom^reikplkm{hodrrsnriodkknnnkhieiuqkiplilpp„plml‘kmkswqrnphop`slincjpnicoqnjqnlnmonlirl_njupZopo[kyo]mokcjnfoqpknpmlvpeomzcqyƒxmhjkqnocl[mmsnlrrqglmljlmwiojtcquˆoiuqqwmlqqn|imhnlm{t|uoolqpPlkkpjnpptspoqvjplprqosvhoatsnpdlXjegplpjfhlklkopp_lrqqjuogkl}‚ghhqjiooqhmppipnqii{nmmybmnrkn`lp]\ennjp_rodpXlXnppoyqnnvnmkgoonkrlplinlokmlslmnomniknnqfkvoovij^niqkqrhnumfknirwmqlonlƒntYiiqlkvykqynhpkmbowoomnogr}uqrkqlmjynlklmlŽojjsvolol`otmmbrljo‡omWmcqYljfqlltnvwilph`lmmojmjpunojmfpuyzo~qorjnglq‰nlpmrVjrmpmunwllumrlm^ipplqriioippmnrmtlndhjprcn]mokvWlnohTlrqoqmcs{ipujawnoohrjfxknikzvnkqnetzlkkjjmrhqrpnmkhjcglpmfihlmhdjlhlrnosfpoeYnhquflohg\hvliamtjunrkfklp`kh€giujhqdqpjlpqtsojhtsqlhgk\npmmhrohoquwnlolohnpm_gsxfkkwopikmrnnksunhkmpfivjl^kjshjol~theomdgdbqpkmtwu…kjhekjfltprqˆ}rdoopciuhn}ph}mggl~olmfdkcolmyplgpymgu{huupunioqlesuilfpjupktvlonofoglnlrh`ejuroglnzppavgfokopsqwlmjrymfpspgmunpjvlproqsghjkohqwvm{vk|piaypymhtojmxmpgqolhqkkiuymikkslnjqjhpgurilzksqjncnsksalymngnklkpnglcjhjuhlmlounfqpppwdsrpiek}cffoikoqljkniislwoumlpq{uqkfhhmwqomjhrwkgqp_ndmnckgulxfpupkljgpf}gfxljln`qncuxovkcjipsilmqqphmepkipulqhpurotojrkm_{exrrhlaw]mepyxonuiuknkok_msXfop{cadurmmkoqozn„o]tehsvrkronlspvqeilmhq^wl{m^lvowklmjpwkjlhnotmpmomhmlkqgm]ojjqvipqkqrysvkuslkpoom[fckbvkjoossscjjrnbqlj_poos~hpgozrfwosbjnnq]mhlplmmoxknmvr^rmpaspbooektppphoolujnpmmwtnkmsulppqknbnqkrrmmogj`lqomrkfonlknnqnn`qiLhdomdosm`gdroxqrsmlnn\ox…myvjcƒozpmnornkMlqktvrowwarkpnumnevfrqrooopngrytptnqm_npqwkopzoo`nfpemqckpminqknjlc{nnjmjr_€mr•ckdligppionpdsylslpqkkgelkgmmrpblntpHhmpnqoim{opqqllqjupkloqlƒkn|ntln^ldlptneop]lPlhvkklopse`nuonjq]eigiaxivnplskpymssipospiitmua{e{mmoo†rphcnkfoclwknqmllf€usjgptmsqlnsslutomimqwbs{gihuruipvctkoojkjgqofopvmjqlqlmstrhopxj{krdotjsfqinqsynqcdkcjbjxordia|wppmnrnlnirsdpblqap|pklsmomollmbhkpqnswqtqtylofWilkkqpemkcr|ogtmkryghqkouinrillrjorepzf_rl^smzlteilsbgnlohodomkoljmirotluhlk^vggjwrdjjrkljmfjogpfmjrju\mjom`qqgpmjglq`wp^hhpjerchsiciqsserqksZvjfuehhphsggfsYlih\lqomhnaqekiqqijejsuqfrfnsjrvqo]qoomq}psjorkxsqupuohnqhtmhkq_maljtrnu{pmmulqqlnbopzcjpqmkugzimsfeno€emtskplTtsamjmngenypfrrjwqfknprjpeobrrjjnzsimqmmozpml^inmtwsiosemcmmonlonkmj^pmdrnkswprtfmvovnnogoowqtnnnqpolotjpPrp[psrvjmrpnrtr}lofnnpngigmlijmmpntl|niFjl~mlgkkmhn]lmtnnnujrondmaoUmoxksmltmpqmnamknklop\ho\gpƒphqboclnmqkjoepomqltnq}jkik|hieihmrwnlusouqymvmsrjn`kqn}|mnjrnamqyuimmssvuollsfrsolnlammmgplp_npoqgjmnYvnoeekklorgkjhknpokoinpenzjnhsn`l^nlkrgnwrckmpmpn€oolrehsu{lhhmgrmlypolŒqqnsoyjljnmwm_qojmnocQgjtoonponƒmzekslkm[u^lnqoulgureolmqiyolpobijqprmkmislVxsio~lfs_oqmikrsgfmmnw`mp[ohrnslwq^mpkblkpmolmynlopoxmqkmmmptrkyqjln€oumpjqm[pqp[ng{hqqqmkokjdguwllth_ggjlkmpllvncgjs{pqprojchfxYpbmkmmjimcpaklkdhmufƒnihkhnqfmknkukmfgZn`i|ktl]hqengzfcbhYSmpftifqamhmco_kRnlrlkmkb~mveupqhekiyojlbhp}fdboumdwymniijˆphlknjhktljnjmfnms\eiotjoecjhnkWtoqpƒ‰q€igokk`olf~ytpoptvhjqjmozttdkknrmsilmoromhlklndiZjWlfjPriir‚wrwlqsdqkpn_€ollioonjnqilf`kdqkbfumnojkVerZps[lunqjkkgpnrknmmoklklonknjmapgmeksjnmhpnomgmohxkifxfxrqpcomjqqjrlumgujmh`pommrmlfjnnlpknlltahaflslnnotkqpprnlilpsxjhnkbm{crndkvjnkkzphtlfue{rrpijongimomommgsloihxnjprnpenpupnjuljjgmnmkufpkajkhomhllousp~ojw}jjkd|kfrrmpxxmp{jzolnkmhmrlirgtyw€}onpiviiypfnmcjhlpjppn|nspnmknnojjbnrvtofoxrkpjton~dqqmnvxcqnow|wlcuptqmnnqcznjmtkylppktjspoo€qksmujrp…oqlrlnqnnl{nilhsttmknspmjkdoirpnpjnnokposkmspmlfintolfonnqonfoljannopmjkrsoropqopqo{orns~kwuknonlhpqokwlvpklilstmƒuulriurojlgqkgƒidjhfipipugohovtnshigifkjkbtekpmfh]qpmhlnmtnrj^Znknforqlsntikugmscjorkungapqirnrksimcnhnmrghouprmnlcokrhbinstalnouigipplokklkinemogytmxmfoqw~mejplqgmsulf_qamw`rslwninfkphlkjnyy`djmnhix{nkgslxurosk^nqkrmpnfmpmpqqnpnojjqnrup~mjikrwsgkntz|olgralfnxqonmrmlpkrkkpqlnvjpmjqosltgbpithmk|mkptoqkrmnmlfiutn„pqnamxrjloujlmkhriombimskkms{o[jjolqkpmqqmytqlzbn\ghpppqcnpekmkrjktkxqkkjlziktbkiomllpjnfv^liellor]j]pvjkkmiZfmwlkyolrp\jonponmoXlqrlqnrtnonggltqc|jqlpnomyswhehlmhklxlrjorkinqjchocprqnmuognuqplphlnnlqkonmytqrnpifkmmtorn{|nksllxmcqfrijo^VklcmtkqfprjjponikpXnqimsiqnhpZqqisknfxpeoocnnmk}mhifptkhnnoklmfamntr`\ktfqinYpbjrkgtsroggmrhqdilggqmgkqlihjhsWZjfjocnbonojonlljjc}jknpalfoiksnilslnkrkompwiuwnlkbconn\qlwmrqjwmqnmZ^qqreolp`rikm_koVnrvoopilrri`rolqpxmarhrglqnondkjm`shssrrk{riunoknwn^nnkljpkglqflnrrs{ocljrpkrmnoqinsrnmimpiksihlkqjpooqlloollx}oohp€tyrknobiiknrrkmkfmnd‡hvokmo[pls_jlpewmlnpllkpmqlvnlrqrprwmqomrzbpngkmfhsjnmnlkimlniwkmowmljjprnrgj`nlsnlmoj`qnfmlnirspelpxcowhlroftkhkqwojjokmopjlplkknnpltoenygxkrtlqmo†rhX[uosjmpcloujmomcqgtkgXjwWovklzonlz\rrlkbpimogqkrvjˆpq~sbikleirmjveppnljvurmf}oddmruyqnqr‚bsyhrc}jpoorr„ldoztvlptqlonslo}ljpqsmqnabghlpn[gjlypovdqoirnnljefcnnopl`lgciouu‘pgnddlmhdnpqxgqeqr†l`\n_lvuomokve‡jeqityomcjvrsrmnmqoXkktgyglxfyifnkvnn‰oijrnnnpi`qlWgk^ukroiZmtsdjgqnmmnlspxw^jgmvum€iqttljsfgrosnnqucljorrulhjpqkmzuumpttn_mlnmrbtsvojohoj\qgnopytcymjphpsmdprfinjtotrklqulimqoimolqjvwmtiesojhjdineoolxqghknnklopwmwjnhn^jilrpjollcmlqsoudn_micqqpondrijzutkexvjomtlwqtlmsnwpmoinpkprwgjmosqehsoaqnprnq[nppjpnpnmpnoprtoramnm…ndmlolmrppoquvliiq€r\Yqy[mdpXldjnrn‰lwnolokmjmgtis^l}eXomgnoprmnoBjovpqjrpskppnljxrhm~oiˆpnlrk~kmpvkvnommhlvvdqmrkqntokeklnoqonnemr|mjipnnjn~lyqjTmn`upomnpir}lpVlpsqhrnpdllqo_ltjrqmfYpnwllfsenqonmoptnlnwyysqum€jpM`gnokrbqoep\mrjjjqloealk`lkpnmpmflUgokhrhmpnrlqlXsmjihlrnpigljrsfnkqonpnmdnmnllhlnlznkknfnlpnihplofnmijmmryoigdniillmibmeuc{rmjdmklqhohbjljjqnoqogonplmtqwnpjqkpx_nj`mp_qjoipnlkiqrzgluqljqmgopjpoojnjjjkmomnlfltonoydlokp}rmonrkqerd{tknkidahpndqrmplsrjkmrolghrtqoopqmbndmndmlooHupnlxoqntlonimmlporomimjvnnpoolpmonDynrorxkl\orem|pvmloorn`qxknonlopldOodelzhSdlinlnpnSnaohanpkr„lmplomlhjropvmbllmmonflom‚mtmnslomff`kllplrhpoqoklsmhrlkms^nlqlqmjvkm|gnankizkqonsofloq{qnpnulnnclplmossg~hjnhrnqlkkolmoopqlrepmnl}yuoonƒlp[ijllrr”pjzn`poxpdkptrokrykjoognnhqunhojowgsqknqknmcjnfinl}ifnjjlhmliwzwnipp`ohfdxiohkmdm{pkqogmrfhnmgbophlgsanonlywnolda~xprcopgrtdlpasuqkrjkjmnihsp^mqmhtnnflmorsondomkwfllpoqtrnxkinoenjognnmkhnmtpllkn~ksrgkmmjipero€xqmivsmrjommeiiwfƒnrnqnƒw]kootuntlnjtanjkkarrmorrnaqusqkrndznnrqsonusnnroonqemqprrmqlkqkmpoqmpsSpfkf\mnRqeopzvVmijtnnypjonnrnoell~kuxr^qPrnlrpjmbryn{pjrqqNqvomlmozubps…qoHmnepqslpk\nnnmanknt{Uulqk\pvonbnnktrsqhkos}nkoqkppyqqefnemziymimqxtemouinomp„mrƒlppnbqowrrkenknnjn~nklkotkotsjknTirlp|lnkmTxijlh`xoomsomrpnQplqmwkmmvnnokkrnp[ynnxoqbqmlkmqqooqnliarnslgwrzŒnvpsnrmcmmlfmntknppƒmqjji_plVl_pcmlmporlblcrknlohphnolln]yuoptkm[iobotuqonsmlmkunpmƒjyrpjoro_oq`oplgrrtirlxrrulmhr`celdrnnk~enoxonpsu{lsycnutgwouqjopomhjrm^jreqpslniojnhomims{lnn}hukn`nrpmj€ƒnlpn{brvl^soqienuilxnnyqlxjeqmscjoofmnmpcmdoskuk|„mnmpvetoholitquhnphmprq|jthukhpzlppnpnotp}umhttnimkpulTsquqrkpooptxltlrfkoxqlxrodvjjplkkfnrl‚gmngoqrinknmqmqisrepqdqnljqqohprrklnkgkotqllkkpkwnggggomokhqqtvommmonfvenvomnpdlki|upxkptsoolkklpnxvfgmfbkonrptmtkelisrepphcnklnkxhu†otowqiuiwn^fyblolpipkmjtjnloybmcep€iykikjooolllatnrjmqqmtqfoupqkllmtpumjqpmo`unmxpgijtoruoaqmllkdqr}lfps|tuhrmvnpjwknn|qspa{qfhorsoflpmq`mturfkn]knmthhmtgiy„xcrnmrjqimnipnoiikpnoojnirmfyqjtjtqhgemktlqrnaqehjrtiqkhdrnkilp_kylxpjkmotlmjotfbmlmhjnbihkqjhquknorqfcvp]tuqokDosjcyokxm^`neovxqjcps\o|gniopWobbrzkgpan`kptnuoptelspdcgjo`inpkbiWfsqUonjjnehsjmhhdH{bwpirƒokmjgkqsklbYpnoomqk|efdirbmmovroxdpsckgguiZhphmfblvvdqmpndmzmmptm‚hgo^mpoimehWwgntUnqg\ƒzlqonmntqnkmr}wonmfpppxnqsstpiulqomsvpk^lhaonjenPmwmuokpkoljhzjorkntsqpqpqcrnmlooospjuiu}ujll`sugpmmpioscmfrpouookoipiglinflkgkctkkqllpqpp~okhbjom{ggmxhu€npisqbbrkppoqboqomlmlwknqiiqdnghlolokindptunqr`tqgbqbr\lmspknnrjjawntiljl^kipmjakqjljonrpoqbo}rmnlhliXso_noqloxstiimloupmywqkj`mqdsqflrjnusgtvnohnsopnsmfnpn^mqmksmiold`smvmkmgwikmonmkkmpmnqxchwcnjqkmnpnvgijnoTuohmiodngonojimymkeqohrhhqfktrvhphhujnjmmwkhhngdjn_fjtgiwrjgiopnrmeqzrtkzhoillpnsighnlomosjypnfumduupmsonlniqqohuimgrngkdmnmmtwnvjxbkmloogrylpmoswyqchhZhmlvlteyobeyptmrfincqkmtbilqkijkksljpfmtnmmkmjvpwqjfjorlekkl`nlhhqnqgt~glmhnhnpopjsg]quhkpmmhov`qlpkijdjlrtnqfojnsipokt]ojskjooqokrpjhuohgftoqpsmbknoeeojm]h~xlrpmflqjlllhmirkghtppqamrtjpjrpipowlqrusjnZocomllfcpnqxt{~cgejmkqommvgpmyplhkqhntpjflsksmurflionhprhkmjmep]tznroogkkql_qpemionhnhqhehmtrhlllrsmq_pkjnlqqieqpmdinn…ion_nnmloqnnz`lxnjlqmnlkoozekjlhfkpfoqsoyo}qopaonrmsnlklpotlYqqldpnpe|orjojpmotƒqlilpskanrnlnkogckpl`lsZopcpz{oqocntkowolk_kunlwnaj{no~ommkqioqnntljqkvpmboqmgmhol^eio€tlsoxukn]slpqjZlmvnjcmwjkj€Kploiooqnioqplmmonigopmejrpn|jvmopfomjih\sn|khlrklrkidpjm}pmnzmmndolorckom]`k„mlmmlnsrmlnsmpnkdoifopnXj{opppqopxkklronmmmkihmuir}\ijglosmoemlsƒppnim{jrrmrppqyrnlwnshokZsxgmmnbl|lnynkrŽMrjl]msqkqkqqnpsslqlnkm]lornmpvjhpijnpoxu`nnloopenquSnkniylllmtnpgnnvmnUrfpknuompkvnhlnppn]pnlgwYntkjwnmTpnoppmEqpyn†kpan`qooeemomumnJh`p`n{ssrfcvpzkrduqWZpnodmmgrblnekxdmfvncpfnblQsmqrbmccunsompjpnhkolkknsWlncn€ogkyprw`qqp€„gXyrqcqRonnoraohkjjnhqqr`ruqePrloenq|rsw~oiPujosnmhklon{jqvgkklqkp`mrrrkepjqabmhdsoh^kqmmpgnohO_mwmqlojujnbiPujsm^i~tyqsxeTfmqqnuklofimopdpoutl‡pdi{o_lmlqk€meliudgeuorfnlpmgokj_rbxvrux_hnzoqitqxpfqn|lnsmbwnlhi~jpwqrewkpgjnpqsopYppmnkjthwv}nsoyqlnldpunmvjjmjinlmsudpmhlqeilt_`qkpxmkpfqlnrnpnbmnrVsokquabosyivhipdnhq€mmkmmo`lslqk`j€jijlkfmqsi\nromlmikkjnrkqlnoyqta]lrrqlqnslojekomiqqmbopjqjhjsitolhoplnhmckpjqglfmlmd`exudvrqxk_psmqpqsmijgkx|zsoisjqflsomsokojlfpkwnrplgjmnnwzygnegjjrnjurmlkdwjlqjwdx\vqbgjkzplmqrfjodagrqtwqoggmgfojoltnontunuzk_ignosuilejqhbohqkgfjlpfpgrmuYdrhxpgmmilrtmmomidjbhmx„pprhmltekiouofpkevqqk^pwsjneo|mninilosonjrjomlmrr`mnkkmgwsmq^tn^ojllrujnodolmmljmqlqllcinmohhhoijrokkxmlqlk^ng~eyotm{mernoqncnn€rhnmlnqnllwaixu{t|[yiolmqldpkseqnqnleqqqoqvowtkkrhmmfro€nmjokotnplmkjjnj\yllxmroZmowminpsnmnhqlonknmghnhmokbrmlpusnaslqnlnoo€pnnnlamq}qlblxp€oi‹jpinqrqmlkookjrmloxsnqchhmuqn]oofePjqqltsnkqrpnwqjknrqelixiotsemoujoomjuo}mlrosumnuhoqolpzkkfzgpmnmxhorqmpikdstovstitrspqntkkppsoylotqocpimbhxo`km‚nfgksucsrqkpsutouqpjrrpnrqrnpdrkgnixokmnrmqmmrxtssklmtyftokqtylqioznnmnersmylpppjiwjmzZow{qqnornsnsrypl_hvthqbommy_gpk`oemokf{timlzqp€qvhqqourqgooqmqstrpunhyjpuoq|llX{hmntmkdryrhhqqpptmqbnqi€{otniiqlaniolraotsjqeml`nymuneqiqpikfteftmlocjpmZps{reyowmuucon€fere{mgirgmoi€vsofitqolsqijpoj\qgsvrlmoslqmtoq^mrzldmmn|inqpjlqoxklnrtqngupbimjigpskorjmlyrkgoonuu|jisu\pnvmj{muhzxykxfjxtoxpjgi}lijghjsmgibkfezqknhl}mslˆormjmtkhelpcwmjvnqpsshopmpokntrsskk]xkjowkqrqhpmjkhmppwkmjlinlcrthsqrhpognqgprsszmmjmYmpfle~mvhsnlooyookqrmkjlnqjqglplgroqlnlploknnWkoryjrmqqnjtpmljeptglgkqkt|nhkiolskoporvnvpjcqkkmkppiijrpnjtqgmplrychwhprvojnnuomfhokorqjbmgtjngdpmn}mpplqjpripjermnnmpofngrf`sgnllknpkpsrgpkqifjgprldlmnnxli{m2qnhoogofepnpkonbklegjlmqsnogjknijlll_rootnctnrfrmftkpaicqnnujmcuupum[rzklonbxpyookjrkjjkpspikakl_npioiln|lkl`“rtroquoqrrakpxcslZvpnolejoposvocsqlgrknsjhpjtriss[[qjbjmdqpjrlxlrgaoMkcglqulgk`ieenoVnnnnsnL€nnohmlnitbnqq^vlsho_}ounqnnqYlnpvwotlpvjm€ilcnjmnqkgimno‚o~smlotqp[‘mkp~nppWknaomoojponcow^ktOrmuxpptomtinnkUr\qrmtoOwsohonnosmtkPrwuml]n‡fnqrlqwomvrlka`frnejsqXnlfmomrnmupjqv]mllmnpƒx}o|foqmgxrudoolkl[isrrnojslmofrmqpisek_hlmprhknujhojmkojmjrmmunfhu^k^nmhnuinptkuosotpmlklnTkhpnnpqr`vmonnqnppfnnt_l}korpnpkpoooyo‡krnn€Rjx`fdrvmritmp†qcnnomlqxnbghgbniff|vflqplrzk‰r~wnlilkqmpnilltxtjsqrd\oogomYotoknnvmkrgpmQalnnp_parmvqrnjpovljqbdhjmkmlsnvopprlz}ryklsod|pukpoonhpmllllqmlpwoqzhkjfonknrptnhooknoapmni^ltroeppqbqksunbppop|nknllojemjntonl_mtkionmqnsnosllmoqjnmnspnltunjqnmreoptgqejqnqkdrofm|jmnlnmtngrmxigknuwnqoopnirmem|nnokljlpknpmmgrsomkpqjlmppklmorqnnkogomolnimncpjq~lksknlkotqpoq]wnnloolkkqoojlclltynnmmnptmjmwioonikmommoolkjxmdspqgjoonmqrdolnplknroomZiholgmfoop{{nlpqomlnkuhnjkupollsmonaosnqepkoonoplnpmnlpmkorhuhmbqntkemuimkkmmkqmpkoqq_jtrhnrkonmjmmolmmtonpjbqojimohrnlhnomrdnmhfsvmttllhnrinrnnqopmmfiocljonprjfnnrooomskvjqpjokpgoltppnmokospjmmmlmtk^llprrknhqojkrnlthljopnllocmphopsrnpkngogjqriosmtnkpprfmphrtrnnqulmjsrrkrmmitsmorjstqgurnpwjlqrmmnpkpuntdqomlmnnqpkjkomnlogorrlkkyrri`nrsgmhlsnorqqnopqoienhjpmepkqjxrpjinogliTmykmsksimnmsoplipsigmopmkdlxsmpobkwonpmluipmtokjbnynpbpootpoppml^eomsoomopqppptsn~ifu€qpqnvpindtlmnrtonqliqlplrivpkngsmonlrleokjopjmnmnpslmslzkpponhnqqpnapnimmknq`_nrqtjuorfnlkgtqpPLqomoovonq{sphkssmkmindqupkipviom_p^kkmlvroohnkjnppnolqjkormlmnl\izm_ojkhnqokmc|itklsOphxplnxusolilknlqkdtpimufnemqloommqrlYlnkqshmnoxngnojuq`rqplvnmolmmq|rpoenikbrplqplfnqmqvosoglwmnorlnkplllnp|qorpnark‚jolssjknrfgkrojnaip^qplimjpliklqobloquklnkuoplilplimhhkjnjnskhnkqlqarklpkfkojjgnuwnforoipnqnwmonlrnnimiqmmnnqlvopnqpjsnnmvseoqnlmnpljqjjgbmnjqpkrrhsmnmonomrqokollmksmoptknpopnfiikrnmmclgo}ofrhjenu|sitmpmqfnrrqpaiqmqdqmlnotkxropnuujmcsqhtimnkkimlpqoomjlojhpmknvloofqlinikllkljnnjkqjiljnsjgjjltijhltmuulkqoebnaomhpnrnvoavjty{nrllinplnilgooppninioinupnlsnivqqlmkmqiltpmxorlramostsqndiqrimj{nijlwqZufrhplhtqoihrqllkngkfsmjnkrntgonipmvmhidbqorefioilutrklifmxhdmqkkmikmcikqlgqgonmvklnijeohoalnmslppjdq`mrqoqmrnhlnikppmjlkvqksodnmoipimmiiemlhqelvnnnnsjnsrosrmoppgnmonpmmopflnypjqnomoonponkpcmspnoskjotinjp}nrikjoijlnnnmnlvmlnrllio~qmqeoonoodowjarkkulnkpoplqoymoiomnpjpn{k`fpkquornnpnppvjhmnblgpnmmlpnnnnsokk~}oomprnjionwiqpo\prixqmkn_jjkXioppk‚opjinlkhl|dl~slvqpkomlpgolmnlnmpnno}cdiomogppwnpmmnrjmlmjtlktsrsnlrinmuirlrmppsmuqmjjldqirrokqpspenmerjknujnprrjmplvnnmgrkommpnmmwqmlsnqplooknorqqkqlpkpqkhpjmklmlvmqompjmsrloummbjpirtllpkslrolmlpqjogimkynntrwmmmpwp{kjomkpnonnntkoqqnptinoysukrpsjkprnijormlomoujjwomnvphznslpmqwsplqpgsniosjmoskrjonqnqqntqrstprjunilkhhnoontlnnpulmiWipklknrqsqknjdqiomnonnlinmloionkqog_kxzlfonnnkapnetmomqhmmrotnnhqklnohqgnoonrbqglfpmnoplmoqqmknvnilkfmrrkmtmhjmmqsommmppllqpxuolmrpgoqskooosomnnmmomnqupq|sknymqbonmwlnlnlqvekohumoo|rmomkknmjqnqxmkqulnfnrfldomlnskkionmjmcsnfkklnunblmrhxonqluokmmnmnemnpipmngpunglokopxpniopYonnkqnprms{gmpplvivrqqznioonloqpp_jmknpqonumwvnqmovnomnwkkoolql]qnqkopogqsjnojnsnrprknismmepjtmnmrnmmmpknnrpinnvmmmrrmermorqnjmjqinomoplhklqrplkprkskgmnlss]iuhunrowhoouootorpmn`trlrmmlnpojfnkoooormmlnqqnnmsmelnilansnlorosrosqggeqnmllgksimqloppmiljplnnkmplogkgopnpklopjrolrkkignmjnvtnolpmmotsqokolofpjoppotoluolqoleornpmirmorrlpcsnlhnptrnhpoiknmqimoookcmcoomohrniqppmlkomsqtpmqliijljpjnlopqeuhnojnklminqmoqplmpkoomopnqjhoqnwkjpbpmnrqmjrnnfrjjkrptjnppinnmoiswpnnsmprskkonzlnssplpxqoqqiarffopdorikitmlpk~mnmokmboftmflqsutkpwpqrorolologmbilnoouqeno}snqonitismdtmpxommmrnh}pqvrvcjpmprresmqqj}nhoullktukhmtplmhpOeinokilmwhkqmnonrrjwoqrg{rtlcjbtiophmohppniomoo}knlrpkm_nqsnruskolrlnsoshXhjmh{hprcpoikpmrprqpm‚owjmipjrslloocmmnwpotkqeqovqnp{nmjkknmkrmnrhloljmmjomotqkhlnhiqrnonokosgnoqsihqptoossl`jnnumllqoonomnmmlnomoj|olqlfxopmkpkonmhp_mvjjlrjjkkolntnrmkmjimoflouqpfnnknopokgomqlolnnporjpnoxmpopnklkloumknnnmmfppoyjpqqupltppmronfciykprlovnqlopsofextpwssnonurqmljoeommmmpspluqnlgrliprpkopopmhspqlnrkljindonisqonlunpomkklqmurptqnonlllqjonlmxrprqmklhqojtjnr|qnmmhnissoppsnnulnlmmrnkdprpsigooiqlrmqrlljmrnsmmnhohhkqqfoqbmnpmndnmqnlmprpmkqjhrtoqnsoslpkojnljivlllnqqisgkocpdn|invoojhlkqlppksgjnuhqqmznnhomukoiblp_ynkinnllglspjmkulmhoijpanhkknjnplwtmlpowmiqqmpljkllkq~lophdippmiopepbptkmlljlkjn^{cnhilpwkoldfinrkkjhmntlojrnlnkpmluvogpjmrloomsksnnkngkoombphlhkm`rsjqmq^mlinoktq[qgaannqljmfskominknmopmpnnZoenliplkqngnnkmvmmocpmspllpikojmrphkonilmfniqmnqijnkqlsmhthjrgugmonrmmo^efqsmplmnilanrfjummellspsjeoqnhnklnisnnkomXlrlmnnrivgjiomrl{m€imncjlkdslpqikpooqkkonjhnqtkkolseomnnlcnhpmglqknƒosiqnivptnvlsikpnpiomgplqnklqghqsrojrlkqqoohipliolonomo^jiqqqlpgnkojjcnhmpdljhnmtokpjqqolokjhjjmumhnlkoymllmqlppspyofrooppnonjoltmrplqhklonmqhpjovjpnfkrmljmnlltrnpodtmnnqpiosmjnljmhmqomplnlpmrolmcnmmmjnlprkilgknnflmpnmnnqjslnlquihimnpjhqntqmqunooxhm`nhnlooonsojlmjcjnb_kovrknmqplljjkpmllqqqnrlmoptokkqinbmmjorhmqopqyknqolnƒsnooomfk`mlennnkknrmom\mlpokpmtnmqnmimbphmooomneqnkjimpnqolmlmoknsoijlskmjlommpmouojqomnnvnjnyryoppldkpomhmmookvnpnhhimnkpgqspljknlumnmqojlotmmmmirknrlnornlkmwzljqlnorinqiokpdmlmrrmtnllnqkmoumykpkhkeoUhqmpoolocpjoiomllogomnrgqpeqnjpjogkonkoljoqmrogklsommicaplnktlxmoslmnlnskpnpncltorrllhqnrllsmnmopqmnjiwropknsmfwmoropjnqrie_jrooootmsvmunlolookwomnfuhtoxqdlmdqvqosp€pmlnnktoovonppshsimnsjgmwpndnbqnmppppsioognjnnnluo{pncsq}mjwmqgtmelohmsmtjmpkknjmf`gnpmmqtsnjpoimnmlpujohpqnpppnethn^evhnpioslnlpoppjnukqmrlojihrnloqnslmnkfnkWobpmmnknjkqjn}_hokqknrnqmmionhnnrrdo}ooqssslqkllqpmonmpkpnpimqrksspmqslƒmejnpr{hpvpquropsqosdaimmrimlmplkomkpoirnolklprpirmotokplljlppqltnohlksnfijosjpmqrkiqlooojommplkninvsnnlojoolqmqrnmpklsnknpmmntjohqplpiprjpuunhprnsomhommpnfolllllrqromqomrmmsttmvpnjmnrlrmmkkrkliiprloqmjmroolkmprloompkmpplpjoqooiookpqlspinmlzqotfemnnipplmhhnonklronilrlrilsmohlpppllntllqprinngtjmrugjpoflkjqzhnppnkijkpjlf^ojmkomprsvnpjpvhotnqskloipxopplsnorgrvjolqmoehomrrlijsnoprsomulntbtmokjomlloivnrumxokkmkklfbmgkvuoelcjpqomqkninrwmfgrwpkg\nlilgljinkhoojklxljsnoqnilaromwtipldnnjolssw^vozpjpnnqqnpk`vvtorqukfprlibopfokjmrlopkprlnnspovnqrlnlmnmtimopdonm]onlqqmlnnmjmvfobnknppjsnolellmrnqnmlnqrqlounmnrmnolmolmmknqldtphmkoq^lmopoplmkpjodimonqsmpomqllvtmnm‡omklnqorjnpmjnoqpslmmenphonpjkamploknmplrsnlehmooporsilmionwojpxlxrmmoonnkcpnmnploqtmmnnpnwoodhmkonrpntqrnnmommommkntwprnpojmmvpqmlmlnqmkoplnmjoqnqrmooxknotkjpzmkinjnnnmnleojmkskklsnoojlkipvjjdomvqmlsnolurqmppprplpkqmnnnnqmokponmqanjkbjjholoohopsmrjkmphpqiouppnklpnalojlrmmlpqsspkljlrnmrhnktpwmmklyfuumrjooklolnmotlnqis}psnkkmljnnjlvkonnhnsnwqouuonqkjpdmjqmqljkuomfofjlmnlmliponqwoportcnopmhmsnmgj}{meoteululpoojrlwkufnmlnloinlnpjjogjolrilp{ipttpxrg|prlnmtnlqqcrxnpuomnuonkiodqqcpjugepnchlqrqkhmkepplgadm{{mkliklqjnnstnlkrplrqznmnotdmfeopjjupvjmoyl~j}rgfkmooopkfpkjkqtisgqdgsqolp€lnimlpnnjgmrhompqrsonqkjnmnj~gqlpiorkbmmhpslnwqlqhlmngnkkolkjllmjonokmom|bqnom`msyopgqkujjktrrksklojpmlnpqjvpnhqnhsnomglomntrpnlmmqjnnnuiknpnktmttoorjjsrrqnoqpxpqklfinoqoynhooqpjwmmpsfkvrukuqnpnpgnsnvrlgvkkvjospolkswqkksjrj~mbrjlrgtqumsolllmolguhlkwponnrqkuokqfskpokjmid{ih}nhhtfplksvxtojwl|qlojwlqmuqmkirmjrsoqkprmnkjklnqtrokilwtpk‚kikrgiosoogpnqjjpmsngrlklphqwvnrmnrijrjkmkilmkmljmmmkrnptljklriqitiosooqslmmromqmo}mgqmplqsp}jnshjognulnm[lonopfmphnoqriopoiimtnnoqpnnooinnggormlkflhwmpmgkpnmnqqnierpfmpmlcmqpnoponmiqslcjijhfnnpnqsloppnrlnlvpqnnsmvosijnojqognmmolqtnmrjkqootklnorllriolotmqlnqhnrvlmkmumlmutipyxnppmokksnhlonhphlllphzoofmmownpmfom[hnlnpolljnr`llnln`uyorrmomnvkrqdsmntnojnltkooqksqw{lpnmndsdjnirnodimnrklunqnoummmroksonmhqmsmonXspnmooofmao_kjwnsjaogqmnpoajl^ppqncllnmknolmmfjinqntkqpnpkn]ocnlokknnpkifmqlqnommkoqmlpqkrnljnkkmolntloilqmpptoopilpsopjlnjjpqmmmnpjimnpilizjkoqhoslrlirmnqkhlmkqrnmqlkoipujmnqndfrumpmqmnmop~p\woomlhllnojookloukiosrmmmmrhnlrppjkpokniwfvnnrkknirpuknonpnqqkn`ulmpososqin~fnoonqlooonrsosnl{inqmiknpmnrlohqenslpnklillovpnnmpmrmnhnmliklmqjnnppmjuormnwpmdmkrpfukopjimmpmmsgnppgnslrklnoqmitminmomippmglnkgoiikilksgpspmqmmoomdprqjtntqnmmovomlnpjkskspqlpenkmvlrkunwmhlqhkpkntgfoorpqkoknmdmhoqmiogmlsnplnkmppnnoimprujsqhoiltkkmqljpplqmqnlmfrmmkgmovpnqngokkjqgmlmmjmsnljnlosmlkosekpklmrommrtrmmqnnijsqjsnposgobppnpmhojspqjcnhpniunigjoeblrie[opnjopmqpreqi\lleoiotgjxmnspoipikkcqplknhoopomontnskinihprgnlopapulsomnrkknnoikhtfpbzgprlrphvnmoqkgqspsqatlfpgnoqTdnriymorogjkxhngqkqdneitjlnrq{llmmocknkgrypufosmwjrqmomfvhtqqqlmhmwmrysumpjgsgpildmupognkllgoomkqjqkpltrqtitmk^mqnn_oVjbgmnoncglkmqjoqoommnnomkmnnnwmnknpllnmplpovnmdnonmjZunYmip}nrnennmplnpnspnxkriopskrmh`mlnnnkmsnmo{tmnnlrolmoqomuoopooqmoooxkpjlplamsimmmmm}hyonmnukxonomookqmprnmsoioorni‚ospeoomocrjltomjnljooysplmtcomkjopqpnichcrlqllqnnmmsnnmopnolomolnnnoknplnnibonsjonnsnirkvlpqholspjhheeqfpnnqspoolmpoglmtomlqllnwlprkliinqpsrjnlnomouorotoinlsjlohnlnsomirmlmkkkgmqfnnomqvpgnkniqkknvmnqopmkronppognslepkmoglphoujskpoitmmoqgontpnlkiovhlsrsorijhkoqlprjqrlkzoqmehmjpmiqjnmmjumtninsqupljnlqllnutimshmzlsfnioorpqoofkliqslqnlshpqnonmhmqqv`}npkiypiouolrmroohehopmopmtmtpiqdur€mptntlqespnqZqidnmkmm[hjrnqilomhhgqpiufjppklmmlmqjVjyjcntrpnjywsorlspqspmojsllmmpsropopqwkepimgeipofmponqkdepghvjo]jphhmuqqmmsvnlpmhrmq{rrmmnemjlibphrlsgoxoppjwrkkwmq_jpkvpeomonskmmpqhmr|mnnhnlutovtkrkplrona{konjlpekip`votkoinbfuljpmpn{njpophnwnlomorpnvvtpdoqpo\swuljolliotqonmqfnjkoujijmqishulpvkplsjkkktbmypqivhkvmjpjslklnlqrolshfkljolkwjdmckmljslklsootmlnopjnnmnimtkcnap{m{qnjsicesmnokonwmjmpm\kzm}hljknrqqtivnkwg\mroohomigoomgltrkmgtmjlmrloloqniloqplsopolmqotqmnkbltqfmpltioomvlmllkvnsknnjjloipnkryohiqnzittjooqotivoppjnmchlptnrqkumtiolmpommhlqjmrk}jplpsklijnwxmolqnikqskigxjpppojrojeumupsmhpnppjhqowkommrronnmlppaptqrkomhpgiltworpskfihlpkknmqkorqnnjknkgnmkknvlynjunnnjuirnklkmptkmeopokooopyrlpkgnspomloliprmqlolmlskpoomjknhkorumgoioqiptjckcnsjgirrstmflvgnogueljrkkqsol{ebfomakfskijknopcnp~ihrtgffelpmjlrgiijqlp~morolepdcnymtjuimnt^pgntkrtnonlqlpliojvuopncloifqdpoqmppoknqobpemimrjggnkqrdu}tfjljrkqefvplrlmeoamqjrllprrnlqtkkrfnfmiqjlgi_kipzrwqkqjpjrsnnqpjoqqnkxipqnkqjfpekqkjsoaqfokujlxopkqxifrklqknnlonjmjnspgtmpmmoiumolhiknpnqlvqqrloepinkjfqmwliolnornenimmuommkmmnjngjoopppqfqlorqrriqmjsotlnkvmjq_oizmkqmmjqmunhsnmsqoqqovojmsolpolnjonpsikneklpshmmjopjknhmahgnmqnonlllqdnkkkjpmncrppmqo{otwnqskponmikfnoklnlkqrkl`pimnkkjnnnmsmmhljolqmyqtrrapqkgwiopqltm{uhnm{simqolnflidllmjulnjkinmvlrjokqowqrgskynrnphrvmqlejjrmhovonppvlhjhlmnnntokhknkogmnpjglisvokmgouplyjodhlnljmsmpllsxskmvonqqm{nmkoolpgnvmqnqmplnmmkmoojppknoomjmwnkhtkmujnpon_opmqjgnnnpomsnpmmojpotgtnmukymijmpntlnmnsnmoqkmlllmmqqnjmuouthnngrowkljhmqklmsrnpprerropnponkpelypnknoinrqrksjxbujlqkvosrmgmlolvnnnjukspmjplqrjflkhpklwlornuodaqxswcisooopglhoolkqmkihthmokpjegmnupjlrjomorokqijooolhnnjpkgntlohnqjkhqntmnivyilbvjqjdnrklcrqhrojokon_nqjoj{iyorozptomprkqto}sstqpnenmgejlnisktmwunmlommknlrkknrlnormmfgmmrkpgommeqorolonehnkmkmnoomhnshrmnqpqmjgbnrqnmnnompipminnormqmsmtormpsmpkplnhmlolkkefgpmnjponhnvurqnnonqhoilknnqmpnlgponthlpiimghnmkuollmorklpjnilpmfomjkoijmjtjhzopmnkrprlkmqrprrkklmpmojkqsjnrkmzknofpinmjhsomlioqkmmoqmxnsrojfiqfhmnimllgkkojkmwpognlloocojmcooneopliooophlnmxqpcmnmppnnkonTjphqklomqnpmljqnptmnmnmojmnoknqwmrrplsmrkjkjunlnppkmmjlokqqkgpomopkmurpluqpp`mmmmqoplnwoslnpmnlxnqom~kmomnqolnpmploqmqsrnnnookwtumoonyonl`pommohllnqeloonhloiwnolnjiekrpmlvononoqoqomnlnknlnnoXrqrnkmlknueqmrjllnrlokpbplpfqjfqqvhhooqumqvpujqglgoflmvgoukneqkmpskrpyorjjrgnkrdiknjktq`lmmininnmjqjerenoumkndljklo|hqgqltqrjtli|kjmvkrjrkkohjvosomhffpqlmlklipelnoglqptmgsmquqrqrsiiprthvhdafnpoxhfsmhgdlulzlpymfboigtijophkkknujmdnqpqqelwmhrnpcnrdllmq€kirpmmkovqwmruotultqqkmqqmpnlmnqljplyloncjlovnqrnvpqlpoolopinnjyhwsplpnpvorqmmlhillnqnpojohmnijkqomtnnoohorqupqnnlokkejinfxwhofuRjlirshbmthknjdrmmsklmlpqu\skplllpornknplnkoqmipwljpnfmmo‚oqkkjqrjmfjmkmnnwonrjuumnniipiwpppl]jononrlpioronmpqlnnkoshqntknuslmnqmkktrplfnkqpqlmmotminoltmjr|pkypomlktmmoeomrnlmspmkkmhloosmpiqptrsnmiuojlllpnjsrnpompppopkhnmjmqprmknkokolpjflkqnjlnmjojlnmrqnljpjmmjoiesrrnnolpjnnohkmmpmhlnloopnlortomknlnnnmsslolpknomgmujpkxompnomjolkumllkmhllmumlijnnooqmqmmrkfo„joiqrknoqpnnzoqnpmlmtqjotnilnlonnpqunqormjpnrjkkgnrmjkrsnolsqpojolqomklwsllmrkmnwmkuolmqnloqnjnlkhojiokqtqlm^nhmrltqlifikmonomfoobnhpijkvdnmplooorl€k{onjpoxopmshmpmtqkj^shprlomimmnorojlmsjnnfoslmnnrornoqnnnuhstnkom}nomopoviqmkjpyptlfpmlpmqfvmdjmmondmmmmnmnkgogbrVmljposnkqmonjokwimmnoqltromqoulnsfuolrnoqncmdlhlnok~pnuolqniqjoltjlfiuolnfqlkoknnhjqrnhaojnpmuqaktoekikonoinfndoqmmmmlinojnmsbglghoqpmlnkmozoglqknpsskkrppqexnmdqmjjnmoskhmynyjomohlnjsikpniimmkrmzklnjkukhhruhoonqsnumnlpiu‡oqmmn`koqmkqpkukllltgjnitjqpkgo|llnjrmhkpkmmpinoyqnjkkkm„izwnrqgomiwnsolhcoomtjj~okqeqqonoqpqjsqoooqsnmjnmnfnpnmlnjrhmptistkjrbhoubnlgqtpoomgqqefomnlmmtprhlqcu~npgirugnqnloprjpljrmjmjkmgrtplrmlgnlqpmwquqhnclrmkokhnxojmnomtophtlnjntmykkinqdeyhkkfquijqpsmmklouprtonloprspfrlhkjoilspqfukpnps\pwiqnnnmqmsnhmlqnrgqtrmupkrnmqxpqislopomqqoqjrosnlnlnkojiotookipojomm`lnmllquosokjmpllmsnlqfm}jliplihpljmhqgknfjjkompokopkmpqurgqlmllqrnlkqkvp]koifqkpplskvlrejpjdkbinmjoqvmsnpnoijgorlbekumnmkljnjtllokgq^omlnjolmrslndnn`qpklqzsimoovlopzlxcmrnkqoklmrqnljqynwokimoolmproovkkiƒlgqonotnloioqqnstmskonfjirrlykmfoo]fnlmxhmmnloopqnprkjlmhbnxmpmonrlmnlqxmkpomqrsmsckrn[oqp`ponolppmmpoqosjlokmfjmtrnmojmnilymolnotn]pnlnmooZknrnhnmrmupln{mnljlrjopnmligspnvqwljlosnsmopmrqmib]msonlmtsgllhqrofobscsmoqtimlqnnporjollnpmqlkdssrosiqmmpohndoomoommrlpnnpqtojnlno^mjomurpkolmfssnlokrsqmmjotqlompinonjqnmnpoqmqnomllojlnnvqjkljifgmoqpklpnlmhkmukloppqimmojopkpshmplkmngpkrorprnnoqhobptooplntqlkkxmmltknjmlqtlhkkspjpmluomvmmkmjqmlmjlnmlinhlnirnlpmogsigkflrkmnwlmqpnolnvlmdiokjj}njqnmkkqmolntsmwjnnmniormolojplipomltqnlopjmlnpkknpprgeqpoomnqnqxpokoflmppkpkilmopphlnmsphnnnqnotnolncjmrnzjrjqjimylinnntlnuliplmlpnqprdnsnlqv]glprqnkpeoqq_mojqsmojltmlpqeoopxjtlnoepvjnmqhqkimmmnktfpqonnkk[qmpoqmlonpmjmsdlkonop^nfpjlokowtloukmmlxhnqjtnnlnsnmmmmnlmojpp~spqpolokrliosnmommrjnmxjeqljprpmkkjolkpyfqyqtnetnmnujslpmqqouqpowmnmm}tomokpdomjmlsihmtdtjnoicnqwobjmljtlqlsukfiqnonmomfmqlonnlqlrhrlpqnmjypfUnnnqmdlqqpjtnltoqp^okeqkkokhmqmnlcjpplnljqdrnoikntqmohpnslrbqlnjpqpluqslxgnˆmn_ospiofnopmoenmsjprqrdmodpjlpnruwmtqjrrlkrqvloodnivonkpppefjrmipmllqjonlonrmnfl‚jssnmldkqnicphphniilomkowrkngqqropoponpknnvhkpqlxpm`lnsknjpnholonnqjlojprl_nwelokhncrsounmkmhnlnj]qnkklykloojtmwnrjoloi}kpxlgtmmnnl_nkhlnphuwkmll_pjmssmnnooqpnlq\upmnpnnrifpvroopgrwtblnrjp~qofpnnpqqnmsmqnqakppvmoohkjtopnrqnmnoqopdmmnyxrsnsnwloghbmlpngiojoroskomquinjmonlnbmpnkqnmptjonkfkclrplmnonolumnislumnkrsrpdnmmpnllnbpmomqlnqemriojljsuyxnonpqnpnijsznommmtlrnrlkmvrojwmokpknlmjkllnrngmkklmlgkhonulsnxnnsmpnppoopnqewmmnrmm„ktnkopaqnnunpjoqqqjmnZwnomqumnqmnpnkq`dlsmxknilnjnlmkpnokmtnpnnxjrkojdmovheqoumjjlhnlglpokoanmlrdnllbnmmimpnpmnmo]zjtoomilnpmnmj`nqvmrpoolg|nnjjnqjdnnrlmlnnmmjanraktjimnztmpqkqokbnupmplnpowkhlrmqlffpjr_noonnopmupkvuocimpllnlvqonnpynsknrmnnnkotlkptvnomrokkptpemqkmjphr`lnookdmmwsnpoh`mooolmmkmebvjvpcpntlkprfnloorlponoo\qgnlmmoloogvqqpmhokklrnotevnnqqdxmfyippmlkbnegnkomtmnpohimijhwlfpipufdjhmquoqmmokpkjqqlonproomigkogmplpxloloilpmwitmjksgmqjtjlkrltkhjhnoomjelhnoolpos{vjprhkmmmopivnlkmn_jlkknnkjlinulnsulhnuulonjnjmgnqjtohompohktlkcpjvomrqnlnlcoofrinopekoqoqkkrqmmmpxmfloqokqqfolpiqjmnnkimntngqiimohoqo„roimwiinqmqljqlimimloeqjpmsmnlnnjomuhokpmuntysqjmgmdnlk|pmepmnoqllptmw]nt{lij]mkunjmlfjifq€ujlso€pnormqnn|josbnlrmnlldqonkhmnlkjlnosrjqmqpokrjocqlmoptipkltujonnondrtpyppyn~onpjqnhp{nirzmqpmqsmkupqulyoakpwlqblqomlmjpmnmllmnnokm[woqmok`no`fnlqkfdfmpmqpnpl|puigjkooilpohnirpbnonknmogpsrmtmiqsqknonnknv}on|kitohnqkjnmnlopnnjktnpookgosulnpokpqz]omlrmyooos]rimnonbmnsppkfpmkuilqqmnpekljljennnlokmooopqpmksmhon]rgorpwjlkpjchlrjppgptrmnnqkoqlqkmnlssmkmlorohijrrlprlmqokykomqllongmsopknpolmkpnqsnmmlnpuqtnomoqmhnukejpv†lijngsfnmklhflkxsmvmnondp`qkvnimrrhpknomniku|nk†lbonpojnsmsmmulmgpkpkfqjinhqtpkrotqjshriolkzpmulZgunocawmjsnmuehqpqhtnpmintghmqcnkoqikjldpnjkwsgfjtvnlrgqzevqnlhngmjqnnnmoxfnkhtnlmp|klihonqq|iqspthfeopicjjnpoqlnjmmhhqdmklmlkqmrronwuqlhgionkqnzejkqg\orhntjhnnbsnjornqnimjlglpoophmolrptplmpnppqoirkrisjdkoasfqltqcnnpgloulolpomokqoowklvkswnonxokmmnmn~qoojprhroppplrnwiknthomlnktmeknloroekomooqjwypodswklkojmnolpmnojng~mnnonlntiofpmamyn{qkumnmivjpfmkptkmnolkpmjrijkgVrnrlntlojosmjpqpkosomqnbhjirnsprot|omomdcpqnntqmeipoki~npmddptlnpojpmhnrnmlnnlqsqp{monpproseptloialpiolpnpokkmjpojtopmrsmlqoqnjlnpptknlfsokgkrlqkqmrokhqmxmpooowjpomkqoimonlbtfmnqrpkujmsmonklomkrtlompcnddpsmilpwmqgnkmkmnqupnommmjmojtrktlhkmkrponokjrasnwipnllqlpp|lpmjnoznqqoyjpopmiqkmljkslnrmmlolnnunjrixlnnmhjnjjlmomklmpooknmsjlnuhnfnlnqmpmkkljommrmumk€lqcpnkmnnqˆpnprenmoromhmsippcjquhrplknlmkfomonrllonbmnonnnolgpnnlomrolplcnnknkmmnkimpqeqflnwnqntpn{kmopmfnlpoqcmrpntkvgzmrmpmpptjn{mmrrmrok`sllolyopuomppenxhoropqokyppsojnpmmxnlzmqmrsnppmnponybhpqoqmkoslfmhmplommrnmwpmp{qlmnppomqrjn”tqlpnmolnlonlwrnmtp_mkmjngmspsnomnqmmfrlopqnmlnuspjxpptx^tmnnqmnorojyqjnnmklqopolopepmrbmnyrpmmpdnjrfnhomtopme`hnomlurjpqjppntnmpmlkwvmmorolorknmqompckqpsjlhiljki^kojsqqorrkomnjnnmflpminonllqnnmlnpkomookqƒ_linzltnpvrcpnppvfnjnkqtlkpqugnomhrplxomnhmrnnhljndplpllmmoklknrsrlnkipmjlnpjnkojmlrkrmzmonlnnnquptkrmiijpZhqgmopnntnimlkooomlopkqmmmfnloorqpompnkqnomqjopponmrmm_rqlmovkqnospnmlqjnrolioipnonoowlpwknnoloemrinpgsvksoqmonkmmqrlorqovtltdomrnnoqmqoooqnmolnknnmjlftnlnlpnkhropoonumrjqkoguopriqzdkrepfonoootqpmlhnrolpmhkpnmtioskqplnvqknompsnkrlnmqmomhhimrnrnpzsoemumujqvkslnvqroohodsmlllorlhsnoqopplsifqmkpmjohjlXsloltonknoskhopnqqoomrolsp^jlglqoqwpnqqi{kmoqsnwvomlehleokuonoqliksiojnooihtqnzonjooulorxntrjilzplsqrnlpseomhrrnpunrrkmftomlljpqhlsrknmoniljkrpomnnlpk`kgjoo[nmnmoomkloqoklnkunkhmj|p]^oyounomrinimrnoqknmurftnelmiqkrmonnompxjxhbiqmhqmoljjjtmohsjoujjfnrap{hmsnerkimntpksugooqnqp`qmcmnomhvzokmxcqpnqnkxuopdxkdnalgtmmnqkmfke~hnplkenjirkimohajhqpl{nlqomopuonnrsolmprmrulrpjnqlopqlqpmmsnpelnonptVqnllloot\nnglgq]l{nnlqlknjopdlrmfq€ibniqrxmrqpohnlpqellopr_lkhonqonoljlhkconkoouq^liiljsumjwnpjjkerdmdmpmysokgdqnnovhlmmjkXkpqo`lmhiiprlgqtqljkmemndoblckro{moathlt`tmrUmlqmutqnzlllfilnrpompgnlpopnbidnqprjoolstViyZrkvlmŠsjslmmn_prsrrmpqkklpmmmfnopnbl|l_phfjqujmykll_lpgwmproqknklnngrmioolgulnkmmjrnooohqvphfrrppmlkilrxprqnvorlqromsleimiqipkornhoxjrmgoltakmsinpgmknljpqpplmgmonmp_jrkphlmskighfmmprnshlhpgfpqmlmktjkijnknllooqmknqtinnhpgqptprhsknprropmnnkqjwmonooqimpjmhtpnooplrqnoljnhloivnmlommnqqkqmomonjgmonymvuphiscqumapjk`ehmlof{olsmumzovunpuposrzth`kwgqppgvlmqkkkjl}kknnljgrfcqktguoltmrlromljzqvkjnnl`spspceo\ezuiflloo‚mlonhilmopqworlrhmkm^npojlmlslsnhzomimtqgotfsip|nllkgonsppirotononjorgsqhnihqonmqpvgdimfnluqojojkuhwvlmtmn]lixkjrsuiujsnpqkiegqpotbrrtjrhIqaalksmlqokntjnm^nqkqsnlnotmnsznpopkoolminrchonon_pabqm`ovljonlhooqommnooomuppnlirncoirlqpmlnofnfh}tkkklWrqoomqmimsmpenqsjkqmplonnkplkspolqhicnntnsmjoojpmokroslrqwgpnqplntuuoxnln[ijpgonnhnijqlnmqntkoplpopmqljqhVol_qnropopjnimnmioenpmrnulonlsnnwvrnltponopkqpfgmmnrdmipsmnnumnlpppmjcnknpklcqmmnrpmmmrrk]nrhqhxvggmlnonrpppnkhjknpnnoqnjlmgdmrm~monmqnmiwlon{qlmrkjokosojnmtonvSkpwmmhmiklmocopjkosnmozrpoyonmmppokmolnnpnkpq~jmooposloo`uklpgngnmnnqql„ongpnqollnqqoqqmdumnoippmklknnomkmopjonomnmnxbgqnjoppngisnntn]skjoroiijolvnqlkwmnn|njlyjopquoinjdqdnqhmmsklnomxmesnkrtzmg‰jimrnnmtnnbunjmpljohnolocmguhvhrnqoqpmqm_rtunnkmeoqnqimplriqsrlogpmjmicmnpnnejnlnlkooltmnmtkmnphkmlirnmiimvjkoouulcgiolkkmqoo_njknplt{ltpnqopqzpokmmonmirstenjpjncmpkplnlnmpmjimonrhj{omsslpzmxmnpqomnorvnhnsomvqqkq`pnu…lknlokmkuhonsqonnqklpololnrqmdpmgmwvsnpgmvnng{qnriglpolpljledludlqqdhoronponnmuo^snlqkomrmnjumrmpjtgoiolmopwdlmmkmbnlpmmphcyknlpjlttoolknklprsnmsmnmlnnnmtno}mrUpplqnwlmko`diismrnehmmcnnnmdtbjolsivrprrorlyolojriq}nlnk`pmrlonknohmpnsompnmnfmopomnmjrnkominwmonkjoilnmmn}kn{nmmlpqqflpusimrqymjjkuhkomlnmnsnnnoksonhpognnqrnrgpjblplmnpnobkko[norqjfklkmpnmqeoop{kgmppmrjomqmknhnjeqklmksonimjlrkj|lnlkmsqqmkhhmmksupnlrocjlho]ivotooplkxoi…tklnlqlqtpkjmsllrmtkplpokmklplonmpmsmnmmnpnkyqiqmlopginnimvtlunslomoooktnlnknnoqollolonnnhmmkwmwqropmkomoto[mkplwqt~nw~pljumjsoqneqcknnmolumczohanojpjocmlqnojokrmpkmhntklnrhrmsmtkotjnzomjkuoloqqodnlnplo€yilodpnknmoeomnpmmtmnoqconlrlmwmuqjknimfmnihnnnljiljoopnqwwopwoqnmrl]jctomgmmmomtphpgopfliuoooioomjqmjmoorcosoo{olbjjmlmoopnnookeqnkyomllmrpjrionuwlionomkoqmmqqdqnpnqijvlkupuksnpnponlkrrnolpovpqloelljliwqplpsoo}pgqikmlqrspnlnnkmigskm~no^oneqhanqpbocinapqmvmcqniptmknrvlmommptqkluspnnqpqjnvmrhjslmpfikmlvmqpjndpmpnaemmymkpntridijxpljowjntpqolnpolmklmndmetnhmkpounnpmnohrojpummksiomolhukrqslxprrjkummgpoiprogjqmqnmyogokmjmkrnqsbrkpqoofmjmjmnqlpkmvmklnmminlrnqofrptkrkpsgmpfiknshwjmqbiloonmlrqhlmvlpnvpkfhpskylsqnsoojomjokkmpoqlolhqnrpmlkijjfojpioiimnmlqqnskmfqenojlmqrkplnksjmrnmprnmjnligsilysnjnomspnkppqvlsskmmmonokoqjelijoplmptlglsnlqixsrotlokjsponqnppnlnmogkllpomotplltgkpsqlloobliontjpnjklrmnmrmnpponlmrmlmmsevqklqkonolvqkmenkkunhmppjhhmojjqmpqlknphouvonotqnmnrnnpossmnlkmmknqnorpvimmmnmmklqqrokuujl|lmvnujfnstomhomnjjinloojpnnjqonljqopnrjooomqphnfnknqkrmlpmonbpplupupponsonmkyuqkvqpmlsnmtmollrulfrummkmosnukmnzmlmllkiqoploopppookprjoqlmlnmlnmjhlnorplnokmrwnjprojljojjlmqqllpqtkrutpsmlmmrqompnlmmnsvononnlmqmmlmllmnpjtmorqmmnnrmlknnpmqnolmntnoknmqiomnjmonkmognuomllmmqlmjmoqppsoqonoqmnppjswiqrqokmotmmmmrnqpolookkpnqjprmqprmoooyomoqiiosnumukpnkmglokhnmrunnm]kkplkpknhjpwrqqmnqnlmkuzofmllpjumulnymdnomtmnklbmloknpwmmxkmqkikc‚hwlopnncl`qttmkmmfjmjnpnmnnllllhkjlsmhtjjmkohpl]mmohhdkmnoxnbjklmmolnlsqlmq^nmnopiashnhrmgkkghi`lnlloiosppkooqrnpcmlqhvteotm|nknuomoosmpllkmllqplvlqpjhmmoompkroupkiokhdnmnponajonmaloponpipmlintlooolqjpmnmlinjnntnk|onnowvpq…lnjhltilknekgknokmnimtfoinildrmqlnopplnlfpbinolnvimlrfnmteqmidnnbnnomlqnqlsnmnofonmiollnonqnlmpeolnonnqjml]kmpoqnmhdno}orlozjonrinonfmlqptjkolsmounkrmnojjlxqnknmtnoknqqonoqnlkmnltyhsmmnklmjkdpqqqvoqoltnpelemvmelerolhfvqnlvkxqlnjnqpnllvlprnshogrlqnmoqknwikrsprjsljpsnlposnjqimojtpqpjcnmlljnlnxjnisfqlnmmersqnigdwopoqhqojpmjiqlpmrYmqknsmnqqsklluoonmnokmhijnjpilwopmokumjbsnkrnlptjmqqpknpohlokvqqroktpknfkcjmpnmlookmwoonimlmloo{lpfkmjpmlpkmksonompeppaqnmmqpngjdpjookjujjwskpsliilrkj`hilrmopktqpnqjmmnvjhnnfhlghrrptvoimnjnmjlnkgfmkjokukmpjniklppsjktfmoinlpppmmmjignhsykjlhjnjmjopllmlrprpxpmqjlmpnkqsfjmmilpktooesjnsnlmkkprqokpqqhqlkqnlasnshkomtnihlvjiofqmoksoonzpigprlrlplhwqkfspqljmakmpnkproml^klihrplmkklksmnvosollkskienkoitmkmVoojjoqpdysjoinpoukydnmpduolhwqoqanopnjmlgbqehlogmbnnioinfiimuhoqglnnplqkhmkgrkvrqllpxm`djmvbg€msurhopoplxj`klkimXhmSsipnhialllonlordklzpi_p^oWjtmpsxpmjomkrmrrikwn]qroclnmgmmrmqgjqfpklq{fmqrjpjstnpnrnnjp\gksorapoqpoqa_cqhooxltkon|rokoqnn{odlrsfelnjnrimgrNtninmololhounjntnkmjhielnnmrfljjkpporskholqmninpnnm­ulXjmjmlnjrppqnohjrqrojegxjtosiqtr`lpmoqjknnipojlwlnvlrqmpnoqoojpolqkmknrseopgipwhksotl{omjqiskklhlkkljllohrpnmmnsrqqokmnhpminlegomnipenlqkcrgevkpmnobmejnpmgmˆbnkopnpmfnikjkpkjgkrltpqkpnqmmmwlkkm|nnjqurqropiohppmnjiqoinklpnolqloknjlqldomnjcoqodptqinlqhmnkonmljpnlrorqnsesozwonmjpnngnbnmpjkmmtljnonooqjmmrnpt|okunk{ljqlounjjnopprxmopmtsanmnolonsnylkosoomnqopppjniunhnondphonmolihlnlllpngnolmmrkhghs|fnnoinvmnjrkopmskjpsnnnxblmmilhnqgedpopojppcl[nfonqnpvppmxoopknonllhkmglloillwqkmonooknoqqlmkmtmqbmmpnomgoqkfdnokrmqmnnl~prbljplpnxooynjnmpkosqzmkhlkwmlolmnllrnnkomm}nljoqonqkgoqmqjopktrwkn^ngmamojnlnqmtvnhojhnommokmnlmqlnjo}n{pxsokmkljnjnpmnbnmvlnnlxikqgnloalpmknqlknjpnjmpjmknfelpogneonascppmi`pqrkrqhjtjlqmlbqnwwqplqjmrmYmtolngpmpqrknkkjqnnsiknhikjrrmkirnmpkjgsmqknmlqicjjnnjpphpflpimtmrfpplmjrfhjhk{fnzjkrnirsmtmnpllcmnsvlhj~knqmejnljqhsqolqjiusxsournym€vgkgppirommqfskrhpcimijhkrimfsmbnkoigrkmsjioirkiujnkmnonolmnncbsqapsmlyqnoriqk~skojkskognqnonqro^pmipp`sniuemnuqgqoprynsoqtroojlipnkpkiflhqmfrqwkl`ohrehloppvmjkxopfywninrlrjmlirvnoihgnokmqrpwypskenvspropthoummfulmloml`nmkpkjmgmjolnoqrumfpmtodpgsqllcmpoyfkfrqipamlnlpthpkmqsocnlsgvopoiqfn}iimijksooklmilmoynwrlpqqqkhlqmp{rtjmhqsnikrifkhlelnpnvikqilnsfmjxhksmmlpbrjouvksokoeqnnnsnjqin`rqknnkmjhjunnhkvlkiqkqwmqrlgqhnjroznlkjloolpkknmfmpn|igjrpkrikqsuo~n]ogjmplktnqmpojlglomorgrrwjinofupolqkuoktptmpmnsvghkljonlmqgixlgsmntmtqjfnomxmnlkhjlgcvmknnsqp\pnloeporfmqlhxnshjcsoskndqnopcldpmhjltqoplmr^oin`soepffkqmsqkrllpgqknnrrqomsqoqqqmlhnmkoxnlnromhnnlpnmllnpeqolnj_sc[nilmjmhnfiermrm~mpqjnmipp}nvlgltpwohponpl\orjtspnpnjnnoslolkpgjkunlypnorqnmlpsoconnnnmovqmofmlljmlekmormuirnpc|ommqnnnymo‚hnhonotkilnnfrtjmujmqnicnlqnopkjqorlYjolonmnrtpqolpnuhlonnpgewkjvoonplqiomsnlhncmZlrznhmonmgjlncykomqgsufqnnknglkrjtnkfhqppllpuninmtojgpqojrllmkqrmi_dqljlnzqppmsnrvrhprjplplljrqpgpqioqkjseehhvmmjok^lrnnqrsjipm\motpsjjgrosrmulpqpnnmjmounnjiggpdmplpmlglvnmmqokkljwmlqbpiilq{mjphejnpmfpfuormˆsiqoonqli\klnloopoglrsmnqpkjsdlpnisopjorjokoqhmxmjlykgvqnsqnhkkeqippp_nliromlqprjjenopfqrkhoonpiogrjopjphouqmnommnqvoolmochsnogsruznkgklppwtnrumnlnitmsmriitk|ekkkhj_ijmnmnmjmmoqeprltkoindjonlmmjnmmsmlglmbmhpqtrjnojgntrspojonlnmfqjen_qlimjzpmujoiooosgkujjkpnlpmonljlifkjumk~mikmarrhqkmmfifkolioumjkhpokkqnmdprlklzyqglvnpowplmhjqnpsnknwhmdorlqorommresolrrroqmlrsmplunqmgnmnlvnmommpqmrin`unbrqmqjoppmppu{ooilpmigmoponmoirposxnlYmmwnjfmpmfnhollkonpptqnhlfpcrmrjookqntmnmhpklnpqoodjobhm‚ojocmfjmjljkskllsqqqmqxmlfnukmgogkoqjnmmnrqtmkopplkemmovpnopsocppunpmsptqonmqmjljdlljninmogvemrlnlqkkdrmnejqknkrllilmoivolikpontoqjrpjqdopnojmligolmkmqsmj~omggtq{rnmqhkpmqmqp‰okmtrrnjnqotpgrohdtjfgpjnoorokkxmtmnnmllgyemmflqmfominimwlupmnmijilmsnlsesm^slmptllrfpoomnnvjsmolptemkjrnqkpmlscgkmdmlminlqqmknmisowsjnkvnrnupllnwjprrlpjcmmn_nnwrmrfqkfsnkuq{flnqplhpnknonlovnqoiljsnpjslkikhmfiviqntnvqqlronolqglninmnlqmjfhp{gmkmtlhkmqmpnpfhnln_upiihnpgsrmmh]upnfpiqlmnqjtkkkegpljnhlpkoqplkikroskpoplnospljnojujoijhnemgnpfkqgmmnonlvqpgkahjlnlnptosotoinpbqesnpxoknumjhpoenumvqokmocmhmhtkiviskjpnlfmhqumhqlojgn_tiourskiposs}omnsmloqnlsnhlkknqqmkhgkqxckewnc}egrkksnhmrknnomhihluhnkqjmofhjjguknmocdgtljiqcnxtixnqfqoplktwrnmwunhnomzpqunlqnnmskgmipknlushvowumjpzoujnquslikhyclrkdmZmsshnrnwlywqognletdhkrrke~pninhrpmgnkgjogmititlmmoinsiqsqlvlvojihlqplktklkhjwpzsuofqlookpjknwppomnoj|nnnmmjnirgvlqnohn}nqsummohmtuloullppnrnnlobmmsorkqpqlgunsqqorqjomhmlrbjwloqvlnoqjxmupkooquonrkgrmnnotnnppovrpomerlpsrkpntpnnnwjgiqxzopnwspysmjlsljlplnnlhs{noneqilnnsonklpqkpuopommnnktmkkmsooknmkmmqfiknqnirjkrpmuptthxqlooqmoruspkjmhlntspimtoktrnhtkokmymimimekhpsrmkqrtpoloonoplhhrmfpqmijtmrnsjeokrkgfmkpgnpmmhmpmrollmgprmpfnwienkpjrmionkrmmplqt]nojmlhohmsomnqltplqqsphomromlplnnnfknkmunrjkngp}oeiooolhqunhiqcprekqtppjsdlogfpjlmshsrgnlpjtpjpmlnplhnffllnrqrkmeiopnmkmpqknokrutwommnjntqlmmqpurpshoolhrprlxpnshohonjnlprmmopospjjpmlwrkkzplimpsgoiilqelpfnnnqnppmlislnmnjovvklohklfkronokimokoohhgwwplvkmuhfgnqrlopudptmrgnnsmnmcmkjnsrlmgoushinklmpokgglonioiihplnqlmjnitqquunqvuikrjigjljfnnwkmlqtuoqlmjhlvprwnksfkppqlljjnpikrlroqqpcilkbojrqpnilpppflmokpxnkoglp^zkmnqdrkoufrjktosornnsxlwk{pomiqpng`kqpsmwqrmlloimkogpurmgq`mjslkoqfieqesoeokjmnmoeolgWm`gvpmgrknirkhsyopoknmsiwidlwelsnlonkllklrgmgigsoqpkohjcpenn`ipcoflpnpnksgnrckoqmlhmsmrlonollmkfnhqmqrrhykhqigjjkqoallkpqvrsnalklshitmm`rqprlir^mkionohqrpocnqnsqlpincolkjmnolekjhwgnolqlsqqqlqmpnnjtjplojikooonnglirliqhyrmjoosmpuoqpnkonnnpgphnjmnpopjollomfzlntlpr{qfrmlemsjlgogmoikmzfupkrvmqnkqsoqpnjkmunllmmoplrmpomnnjrofliu}holripkj|ktpmmijegpiomng~ovgmotosfrmokomtjipnrmXqlocvoljnipkpinnjnkplqnloollnrliuloqnpqilkmmmnlvmxmwerjlmqqlnijhvqktmcv†lsnljhqhung`hlkeulpts{mc^gvjqvrqgrfkhociyopkjrkrndoklhrrpnepszswodk|ipq|qrsqo{fmqrrcvosimoqskoo}mplprniqunjsnmeumkmokihonhlijmmlp`pknwjpioghnkvpiqnmlppjkmslulnojvkinntlurcllook‹oKqjeurqnoootjgoupxgomtoooeldoprwoqdpsujrinuexkkkkwmwkypqznnmopnelofonpxkqvdwpnlknnspmdulwruzhjmqplrfqslqrpsjrjlsksvmlloqsknqgoepoionqpmllumnplndksshpypenjtvrkjmm]vjvoj|q}hnkriinqjojmnopmopjmoktmmmmvnkluvoriqfomjltuflitmtjonpkmmoonqtjofmnknjppmnsltwhnnmumVqnljjtoqjnhtngooskgwnoshrnpqvhlnnuoptqhoopomikkpqohmsoatrmookbqmnimkprnlnkqnkloeqnq}njnoomonlmmksqmrsprp`dotXoinbnfpisnzjsmpnoomoonskr`kof`wlmpkmplloWkrpkkkm}ormqrlngvnji{rkvoplkiunklmmtnokjopmhirnsmrnunlknloompnukmstpnmoknlnvmypnanknoqmknpgpskn_rqooimnofhqpqeooivnoldrninnmojnonkrmoonlqqxpoooynp_jmqpkohrpjncnmwpcqiqgtnndthkkoqnhl`pkltlroqrsqqurcjopynojtokqmnopmhoknipkvpxoptknpkslnmophpplpmnmlnjpriomsimmisphuipqpnninrnlr\mukllrqqkpnnphqomortrjoqnjommpnnthlrolknlnlrupkhiplqlonllmpjlphholnjqoqlnqohmpglnmosqkoqtopqpmplljjqwlomlomkkknoxoqqpppnlknkoikppjmmnpmlxmspohnnqlXwnmmwksrknsnqnpkppsnnrlnomooroqokooPmluqpvmkZlyiovnkompnqniktooolnnnmk]liiotl_hmjplnon]mgogmnpikxnnonnpmqlnqpuqggmploolnppwnspoqnmqhkmlnkqhnilnnonmlnlsmklofmnpommnmonrlpomelqqpponqfoloxonlnwmomenkpmomoiwkljirlnqlppininlplljnnnpxvolnn|mlfllonqoŠonuncnjwuolvprsqplllrmfnntbdqlnqomjqvxpnooqmrljlrgqlkrkjolkjpnbwnmlmbnocuhjnlolgmnulpnaqmonjjvieqsqmrcgmnjkqymnnxbsmgdonsuofumjglsnmwqnmqnmleekmmjnmhhmrnrmprboof€ahjnmkqoounhlkdppsipqognnoommrpmombsinklmnmtkxkqljuqzmljmkasoqmvobqmsobkrmpnmrqlpthnhijmoqnottrgpmlkoqpgysnnogoompnorqonnjlmnrpqnppolnkqonqjcpjnldptdpksnrpelkkppm}okolpumoimktmsummhobooonmmiincl|ulhnqZprqnqklkqipl}ooZnpdmqronrbnnikgplqxyZmmlodkolnipkolrjjimnkrnlptnpktookgoioumpo}mnjrrdloumpmns|mlrlppnfsuopckhglokppzofonnphlmolim`ilspupmnnhmnmokeyrmqpquknlm^pnmpymoqsnnrlmmnnftnotolhmomolksoomqmlfrpuojwqumnqknprannijlmonnpm|npnoocoq\q_qdnllpoplglmplnqoppmknlkngqqoprlqgosgmpmmnoqpojqsmmmskvppkqrpgmnhonmmoqrnnpkmqomningfemfooplzhntprmknrwmptgrmpjrnpoooookhkpniqphnklnoolbpkmmolprnnnolpqnentnnhutqqooumqslcrohodovnqfllovjmjkmonhoopoxpnoloqjktrfpfmqrismlyihonenhnkfsqqvqtpotqolqicqlqonlnqhqqkqutljrqmnfugkplkilrhlsojoiftkmolspjmpirrikhmnqnpiunkrhlljmprnkqjmonlp|pnmfuhrqkklostpnqklmamprklippjpjpkmpjrkbpnhmpvnqxqmsmllgjthdoxsnpssotpmfppnmojtkmejonppnqnjufmmsmlonkpkvxqgqkpsqrgpsojliojqroerrnmvemmpnmlolglojhkkpemjnmvrixoploosowlommplqtolkkppqnnjlmjslqemylegfrxrjpqmtmdlieommqmmltomskksqtnnr|qpoqpgm|hoiqlilnhnsulpoknngouspphlllkqskirmnplkknrmkmmlmkuhmvefkqlvvmqklbtihmmhtpsomiphnmsjhriqpmlpjkniseknksjnmkfmlmplgkjsnqpgvgmen\osllhsosfvlssjncprnjpjmjmqmohohjijmninsonmgnesthhkiplekohkepokojrjgakqjmkjqr[hspnjowfzpgretlitkltljhlsxfrolmgttfkndpboeomgelvomgpqhdihnsqlknmtiospmfnqjljdomqknthttpjskolhmqinnlmjjnktnlomiinlhmimhoipviktgojhglmlqqjikijlmmlqqtnnimjnlmyoqnektli`mrnmp}oeorsmh\ronhgjtlgprjjnoghhklprpnpdpt_qvopprmgpthlqkqnqygnimmslpqcsonmtkqnlenjthsrlqqxmonnmojl[lxrqjloqipuyrotohrmquljljurqopnskoptfnshr`omikkiknrnriplrngidemftblssxkgiwpbg~vntjglsoloqpblpmolpmmoqnnwxlomojliamlnrkoonmqujlbjlsslnjrljopnekocskmonuiiluoa{mlotqoipiojrdojqoyin^slqiiqnoibfllpmoqnpgmoqitnjnsksilvmjjorfoidrsvqoooinrrplmqtjknlnrospqornoormwqnmmqlmnkqn^glmohdiqjjkoqroiilropgojpsrnqmcnlrpmosmromjojsogommnapnoqldrlkntuusioopinmjoirqqpomntjlopnsjhrmpoyqmslokhjgokmujjlwpjqtolkkkgmlorkllglkfkhogmjpprppqkihoppopmjvlllbtomdtfnhinmnf_rhjqpkovnstqkoslrmlmjkl{erqqgrmkjmeiomoobonqjjnlZnjojpnmrjjmjjpfotmgnjrmhmfookgjniumq[thnlmnvjmovitncprmouormljknmqlmksononlkklmqgigpslimnppsjrvpdjoiqinyqlphqnqkmqkqmflkopjpjsroqeotjpnlimimmpjqmrqkrdnkknqmemkpjilmgomplhmvlofoplipllhklninppdknnmkljpzojlikmolqrnmsfnuoonkhonsnmpjnjpmkjsipnjkvkpnnkfjmvmnnonmnltodnpnkplsmwnqnnlnlijzsplmlrmdknkprtoiglqifnkbpojmqqnonknknpqmnodnnpmnnjjsonymoonnimpqrljlnonojiqmollqimfmflupnsloroplslrojalotlmloshklrcpmsnkzlknopnolptnpnlmmcnpmiqowoopopnonjcpmunmpskqolqmnrnvknmunomiknoqlhmnffnyommrpoqollklnnlommffqo}pantnppoioislpmqpooonommmprlufnmnlpnoqnnksxmmleptlonkmlpjoppmzqtkrnentiornjmqmqnnmn}^qjndqmojnlpoknrqjslonp]mkqqmnrmlokjotnuqiolmmppfjlvaumrjmsoqnonlolixjr`pmooounmmnposlpmnkbplpgvdpnijsnndlrqnpkWpjwi€nrvz€mmrodlum|mpcpmnksasimqlkknozplmjmkpmwsuljkghxpmvog~kjnmmuoomnrjplmdlcppofkrovmnkpposqZhqm€qeosmrlvs}huqƒcttsomytpmkg~qrnpoxaogtgnojloqnqopoinxppqkrxllphp]duponblkgfyjnoslJsoikrprfogcmjfphfrmnomnjk}rUhldlpjtkohmjRqdifkm]qnkrqpfqrrkqzommmvlgpquxmlpmnnwkfrkolopmpxhnnhhogvnqnlnljoknpmvmluqm{xgvm`npmpqqlmpoeonooqoomnpjmmlnplmlnknnmpnmoimmmnikmfjmtrmlojijpmqpwlpjmkqlmowhnjmmmljrmpnZgllntnlkljmqnnnqlooojpllkppmikjostmonnkotlmqrppsnokolokolfnnl{mpnolooonrvhurqolnulpkqpzjglompqntnkfmoknkoqjokqknpnmlnoqolntlymjncpogmkuigoshim|q|mmo~inmqploqtimmrqkyrtcmjmipoknpqnhlmdgslxprkjlnp]ljsmgshqlnrokqpjpsmfjlpflcrmwkhninotlkqnmhshllpljsppfjommmjqqklrgrjomsqmifnmmkmkmndplmmopnmnmoqlwppmnnjnjpghqmmfnpnlonjinlerrpmrplpnmlhmskqcsomipioooqtqokfmnnntknkopkmnnpjmmkqookijjpovnimkvpforomnqlkuempspmilrmlrjkhopimpiomnmqldkopoqoommskxnpnokolpmnjkorjlhppnpnljthnwsprpohqmomnooknhqcmmmkkfqtoqqnpjsipscnnkpopmmmnppqlunnmkpnqdqnopmqmemqqmnpppklpkrnommqsnjfhlomktknunnqhwoknplnkwqmoohlnoxlnlnposlk{qnolkmqmqnslolmonnrrpmdjkklrlbmnpp_npnlnsomlpokilapltollpmjppspkimkdkrjkozpivquppfompojqqptulvcrqwmrjrnqnpeljpknslooomrrpmqoikcnjzropofzomkkfrvkdmlshmmjmjhoqkiohwnsnqgmoqmkfvsollmkrpnookpprprolmqppnotmrzdmfkvkoouqdoomnsijrprkotrujkqpn\kv{jostmjlunlxkimoksnrkllqlprqkjojoqoeqolmnqllrppmipqkwqnnooirrlgoppsmhjpmmgomilkhipk_qrqdqrneshuieglglirpokyighlmiheogjkmfoibqqnqnhlimoikinompkmnmkkn€pk{nlslitxmglurrqxkmmiqknmof{srnipzrjlnn~lutmirmyhrmpjmoqmnrlp`qu€lYrowvjhlkfjrkzlrnmpppenmlhqsqolnooqjqirsvjfomil|m[qq^litmonkko\kclljocjiyploqtjqxhwhmqljqlkseunlrpkqyt|shmogpkkimfnfk{xqpkzlloktkvovmsknzywmqoqlqkqa{oinkdnshljpmlrjxkpptrnmqgooopkqtoŽnmsr}omutsrtgohqmhsxlinmwr{kmnjppXkylmnnoqsopznionhlohylmmmgomsponr}hovpppjlutkgmkmjiopkolnumnnmkqoimgpm|mmsllrq|oolppvjjstloskkknphslwmqottrsqllpolptoqgoilrjnpnssmkjpnokmjujmjqktmolq^njknkqrmrkhqdkomqnhkvthmoqorrmqgikqhlmmmmjhmqmnsnnqimymjnjrkokhlnuhbspkxltrmyploqqtjwpfilqpmrpkhmljnmkhnijjqrlgtpjromhnnnkmolnlpnfovonvmmnddprpoimqngnnlnrpmtoolktoknmloqlmrmnnfpnmmovmhncllknpmpojoomgmqmonvonotnllozmrjmkkonppkmiimplurlnmqkjmlkjptqqsmpmofpmproookZoqpppnqpnqjmukjhmlllohkmnnpynumkmnotodƒpinwoosdgpejoonmmmmcnwcn|_qosrlmonjomkmlesirpmin\nonpoooknmmnYotgmqflynnqroprgrsplnumhroinpkankemnplplvmlqoflponmoyrwo~kopnhfsnkrmrhjfinspopnronmmqqoollgonlqinnllppojpomlqknopmqpnennajhkonktqnqnpqkoowrhmmon\mlpnnmsoljpmonkqojhposcm}olmpomnknjuykzmjkrxajqkljnhnpmsknxpfkmoimnonb`jgfjnklzolpmlotvn„kyonkpfnionmiilhunmjlqj`lprlobnmpgqqnjmlnql`ijohphijnjvnnonml{kklj_kknrmmkkto|omomzl{qvkmmtejotmnkmfroqppnmkologjpmplomspomosmonpmikiopo|ihksqnhqprhomotmguoomvkrqlnptiriojmlmikommnpooglonkhpnnklmjpkqpmqmmkmrnpnospanlpulooinnmlymnmpmoumjnktmnonjsmpmqpnjrlrmsunnmnmomnmkpmjpommhppdnkumnoloqnppqopoooknlomhpjpppnmqmhjnlnlmnyonlilqjonppmoemjqvpmmnknuokjrfkqmmplnkopjnprrkkqqphrnjnngptnpoomnmkoonbggjqhllmnnntojnmpmnmkliojjmmnpoqhpnmnlqrimpcinprqmknqsninoqqxmlgjspnvqsihoiondknllnqoblmpojrnnsmfjmrmrnqmhtlpnshkpqjsqmpuokqjsojoodtgjplisogmksonololtgniohgkhkjmrpwnsineqpsrohnfklnjonmmppltkqqmljgmsqnlmslsmojjqknpqmkppmkopwjhsimhtoryknnjkfonprhopnphljismorqslkmopqphoqorsnlknrjolmlsnmoumqnxmqqlqomppooplmmmlmsnoqmqpmonkooopvprgltoph[mlslnkvuponopmoonohikmlnopnlnmsjpomhnhrolqvsonfmoitnnkllpnmtlfnlmlkkntkpushksojomipfonrnmpejvmphkipclljqoqakolnnjkoqmmmtmopxvqnpromirkllnnjnplmnnnnrllqprhspqkmlorlrkpmnrpplmngqjmkgmkjvnpmojolkqqqhonngpklskpnskxzpobrnsmskokrinqonqolqmsnsusmjphipmjmnmhqnUrctnlsqo|oxnrupnjvhnmipnpntmmopporqjpnmknlp^rhlmmkpsfdfrlmenlphqoomqqqorosmmmpohqnimjjqlnnohpjidisstnn€saohphqfntuhrqomjpnopspqupjpuinnumfmp`jopnqnqkfpkausnxssslmrslnmmmzifemoovtquktosngmjnnnmsknkmknoppnq}kkoqljlmoxnrlkirmjptqnipnpmwkmjkjdgjfoysgjggqklnlzoe{kjmlnlmwmghglmidmorrlokorrlmorikmljlmkemnrkqokcmjljmkiqkpimjprnlptmgmnp|sjmgnhkripjjqrmgmnloolksrmhnkozkrqrliktpriooqkkprloopigtqtqmvjkoqpilpromhompjsmninclflflxionokmoomfiwkpnmrnqtoliimomkiqlklolqmmntnumynknksqnamnovonrhp€ihpomplrnihmejimhmmmprmkgopjrnilmmmopjwkvpliooqmsrkhkqswllmkwpmunqmvnimdhpjkmmfpkmuggqtlofnonjsmaqkpifmnpznsqiprmpjfrlwntlsomrkqkkmppfqrjivmfmo€|ofomnmmwnitjippkoplngklpmt`mnknrphljglgrkonlemdrikjrrmpnkneminnjnkklkntnlqnlmnfjnoknkmklokojnlmpnonmprppnkmsikjqlkomznojpqnopsqqomvnnolqkpipnmhnip|morknndgrlrppnq{mjprtlpnwsjqkmqppmhrlljnlmqksprjnnokhnqptksmhonulcholosntooqpnmwnkonjqmmipvmokpkpnnmmpynqnmmsfnklrqpqpkoqhrsmlpfnnmboosrivmoionllmiumnttmpnmgnqnqtmnpmmpoonlnvnknjklenqjkqkmnmlgonmpmvqvpvqjulnpsnsjkqspluwosjmnhnloqnjpnqklkjnqnlhriipjlqemmulknjsoooluologjnhlktjqotqpnqymjmlniiqlfmilm}nqplmgqopgznnqskoekpmsrohimsponkshqrgjmmniomrvnljnnmjqykapnnrnpoqo|knrpnnudkiupqoonioqlnplimnkoonoqsqmktivponopqnpgqjqppnlmpmmspkioppsvknlpoqmqnpqolioqongsnlnqnpomloroppcknonkorpppnokinlpnnmmljnnonklklokmphooxojponnmimmmqlolrnpkomppsrppqq{hnjmoqoqdnhotqppmoimonmopprnpmkkooqjjlnpnlpoonpjonnlmtuqonnmrlmnlmkmoqqnlooqiulppoqlqqhoympfornkpskonruaonenlslzmmqolllmlpnouvorvoomonjmgmrnmomnkpppjngnnslqmojmoomrkoonlnvrouknlhlonqompmnnklonhorponnonnhmoprqpomlkugmqlqllsivosmompnoqqpneqnmmptpnknrmnsnopproprlmopmmniqepmnqrspiolnlqnmknlmtoeooonlolpmloqqkooqspooknkrrrurmoponrmqrnqmhoqnpenkfjhnkpmlprhvkqnllvmjnmbpnjktroptmoqnrmoncoqosrpnnqlmgklponpognmnpnlomplmmnqsholkomsqlsrmpngslpnstjnrqilmprmurnnmrpmonpnprowpqlnlnojslsnrpqqfpmnoqnmoxoyoookposqsiljprsqqomnqpommmgonmqzdmotrdshjsnlonispjjmimplmsqjnlomiimnmkmjskrpogpknlillmnmiqqmokmiqogqnljlinmrqrqmnoipnrnimjnnloklsljmmrqkofmsrmhqmoosompqvomomrqwopjmnpomnkopallngqknopjnmokoqqtqjqwriqlszxjlpniprpkmnywuknkhhloooglto~qxolnlsp}srekxTlqdregppnnulpsnoqqfjumqkrtjkitomrtlqvjppnnglrkseytqprhqkojlqnsrsnrpounqplfflposgkorpprsplnoomcnrlqjttsiglhlilllrtspoqopnrmlgqesjjqiiktjksmssqrkoonpnjgvonclynkpikoronqkmokrmnnoprhqonpkspoqirrnmsoipqjponqjwkjlonoqmrlmloigoqmolopjbklnnknpnpllokmnlnmupnlponolmjmnonumlptxnjpkomqoopmmhxmnsjaxpnllnomkrkmjhjwllomljpmpmrpokmnjmkjcqouotjnnoqmqpiijkskrihlrlqhnolqoopunojgpnwnkmtvikomllropoo}xntmmnnomipq{kmomlslrhnmpoikwmppnptmlvlqkonokqokqqkpmomimjmpolmpoqrqoslrnoqromlqgnolpoiqsprirponmlirocpnnuprnpnnophoonkjrpxoqlmkqnisqmornmrppngukkopqmmjnohomplelktgqqkjifooplptnmololnorifngilrlilkdpprlkiqpmmpstnqgjqcojlnonoesnhlppnkntpoqomprmrmnoejhoxnnrqzromfopiumopqpkmppixmnnoolhlnflohnrmmklpljnnooooqpplrnofimgokmknngskknnrlijoskjjvn_npggvnsrilgbfpsetdotoqoshhksmjoqoqtqutkhkmpmqnnrlmpprolnlkrphsikpejjljnirmsr{kokomkopcogpnownnmpbmqkjntoishoqjrnkipptkhkltatlqpljjjrolkm^ontjopjllrsmgqtkmtupmlrimjgmnlpom{llgrmclgmnpprsohloeplprpepqenpqospjnqlglqjkpppn‚okwmvotqlqoiolljjplnkjholmngprjphpjtupgmgqkmqjnoonmnkojqklklmngnoronilkoortmpkhlnrqmoovqoikqnnlilkplkjmipponmqlnotonopanmollnsomplsnmonnpujjhopkpmlqjnoihkopnnijmnjprkonpokpnonnplnojsjlnptoiiknulplomhnrlnqnornnkenoknmmljpmsokmqikqmmjgcpzinxmprrmrkpqojmnphnojlhnnklmnrhppkrnqolphnplmnnnqllnmoknjmlpollkpplnnoooqosoklnnqjnqnkmopllnnorpkemnlrngjqhmpmmnmntrmhlplnnmkouojlmkgpnhnopqnmmnonqqqtqlnqkpjomnnopkmnispkrrlrlmmgopnpnqhmkokn{rnqnlnlnglsimopollomsmwfnnnmonnskninpgmjmmnnqnooinopmjmnrslmprosmlmmmssyrpiknomnmopnoopopotqomsltlnnmpnplpgmnqmkskmjkmmnpnpirpolfnlmqlnoolmtopnmninnimimommmponrumjiopjl^oppokommmkusmvphklnjmkmorjpnlqlpggtnlmsntkljnjnomlmkliponqlqsomljokqnmhpmomopvnhomunlphkmlmopmmqmsppnmmprjqnoklnnlqoplqppmmjmlriyqpnooqtsrovlmmhjrnozpmiknnhmbhnnnkpmonrpsmgnllmqvonnkugmorlrlmnpsjnkp{nkhqulnoenlmroilsqjkkjhnqnulsrsmmzsokorjmkpopnenqpkspnopyinrmomhlqnokovjstpnfkrlpfommsnsouksopnnkmmpnoolmogttmmisnrjromrpunmygrqklomilojqjlrpmlwlopnsokljnntopmipimkmljmlnliooviqnvkmpnolsnknnqophdrptqkpulqotnrkpkmtrpnkomqlnnorrhnjnnqnojmmosrpkqnnopqpsjopmpnmnqgsnqkeikkpnxklnuhqonollotllmnnnpqqpimjnttlnoyjtqqirkspnovnlllnnklporojlnpmklknvglmlkktuklknpjlmmlrqkkonhpoqxpltmmpmmiomnnrqqvnenopvspkjkojpnrrqknokmvloirsinkmmntmpnqlqrwujpholnpjnpjlrmmrllkjolntmninnrkoqoiomqgmjkpqglnulqmnpjljmlgmmhmomomfmplnipoqmkkmqqoimmqrvooxeplkmdppukpnomoohjtjqnnljhmospjvmykuoimjntulkiopjloflmlpmijnolkqgmknjmmnlkmhjrlphlumjqxmoiustpmimqjuosniemjkopmoprmlqvnkllo^nrpnnumfmssgmqsqqmlrlfmspmmovjjkmkjqioipkronpmp{lnmmjppimgqmqrpsrkvolnqlgrnbrqjinmjlnpljivrrqopqoptpmkkrqknojgophonmnmmnmolmsoppooimoozinonfmllbkopprpmommjnskkfqlnnoklmonhnioomnmpfonvnrpklojminrrnqmminopmjtlmonoqgmpqoomnloogrcmomoqtpoolonnpqnmnujnirmqnolmpoilnmmqommdquilrmnnhmnhpnmomplsmpfmlqpnpstkmnkplpmjprjspoklonnqgopplpmmnmrljnonnqobmononmmlnmkmknnqnqrklmryrlpmnsjmrqnnonmftposqlklqkomnqhkklinhwonkqhxmorlmlmerohnqmliknnnlqrmmmjnrlovkpnmmpkkqokuqikqkkomlrntnkksmmqrnmnmlmkgqmspnmosijlnlmooompdrqmlunorossqmkqlolqmunnprooplnnmkonmonnumoqsoolmkkokkplonmsohlnjtmskrmflmjkmjjotnoonnqnholnknoolpirkqhmmmnqoqjprmklpqmokmolrkpmlipvlmorklqmmoqpnqmpnqpqpnupnkmnlmmqlcnmomkmljotpnmokumluomrrkmrqpbnhgxqgmpot`ooksqmpnmooniilopksumwqpijomikdrtinkppgugmpljhrimlrilgomohotitolijkswjnonogoimoopljtlqoionjobidmfkkoiqmmosqknkmtmknljlpimlkrqpmloonlmrjojiooopqomzgjmijnofqmjsqvonkolorgklmkmgpnnmnooelsljiokoknoljwqorjmmopukkoqdpknlgqonmlnrkvpkknnhpmmjkgosimfror~qsrnnmnoprfoktknnossrnnopjopkskkngsnmmqkinovsurjstjnpinfuomhpmmqkokhioqnngnmnlpuipgnpprn`ljorntsnoknqwkrmcmsplilqlrjllplknsllnqnrnolulqlnnmkodkmomnppqiqjpvkjqnhhrpnmnpqioinmjoxnomorlmpopmrmsjru{nlokkqpsoprnZmspkrmjommhlpnopkpsvskjnnnkklolpjpunmhmkqimppmmqupkmlspnqljmmnmoqnodlmnompjnhprklopkinomtunqpmooohsnmmmrnmoronspprnoopmklrliommolljomppmmdmrqqmmqnpoonhplpjpplmkpinkopksknnpoqklsnqplptonkrnrommmnqriqqkmkpokmrqkjnlknlkopnqrirmrqnnottqxoqnvmqnnpolmpqnmjlnrtmiqnolonpvgmspnnnprnklvooolrnsnllonpmompigkonkpoixqrdomlonmmnknfpknpnklolksbnnkslhkwpupmlooqrljpqnjqkpmmnpqloilkmr~lsimsklnmplmloukprpjoporjnomonpnolomlppoqppk^doqnpjniofpkjnsolhjnnnonsufllmjorpilmpjlkrloimkllskopklqnjpcpiomnlnjqpmhnjprqmnllknoipnmnqooljlqpljoskomnnnnornmnhonvpvomngjnmnlnrmnpknphmmtmmkmjoonnmoptmrjkimnqtomojnpnorlpnkmhfounkoqnnkqovjkwponkookqoqmlqhroqnnpwppllshmlqoolmnokqmononmoolonnmmkqmmonpmmkdummnlpnmpmnqhhroirkpomnmoomlqykprpmnnqimormglpimiqmgmnrmnrpsmlnnnoqkpnplnjooknmlmglsnnlorkqgmjoltmijmlkshoptqjvojpfilnpqlllqoqpfnkrkttkgposkusllmshnrqnskonjnonlmoktmimolonrmnuomjnmorllnlpspnxlrkknwpqjrtppoqmntotjnnpklmljojupgmitnjlolqonlmprklupkjfonlglkppiikvmmrllnnmmklnnglkklokojpimtlnqspsimlflowlntmpprqmjmkwiqknrmttlnnpqfinluomxnrnokmnilpnpknmpjmoow`rnolopqn\tjooillojmrlnqplppqquslellupkltorucpqphejpqjmrlnkmqposokoqnpmomgipknmlmpklnqqkpslkttkoqkmmncijpmnktlljsplmvlnjkonpksimrcpjraiptrhmonlmimqjnhmilljdjsojmsr~tpnpokiokmptlphtrnkcokrloipkjmionoinuonutkskrfscmlrnksnmgjhsnhirplnfnfkmopfhplpkjmplpjo^jahummninjsmomoqrplnmpmpoopnnvrognoliqkplonrnpiipmpiimkcmkmvnomplomvkklknnonnphomjtopljlonnpmlqponnvonqipnljpoompilsmnnompqsklkooofklnkmlllumvpnppqmvplnnqoklkourqqompmonlwlnompsonmrjovlnjolkksorolmneoliilopkrqnljqrnmoplmmklmomqompmnmnlmrkmlllpnplippnmoppslhqmnkpqlsl~molqdlpgopnkuprmmlljjgnliljtolmrqjsfikohnwcqmkililnlrnnp}kkmojnomrooqqrgtqmnolmehohknkkrrnjmljllrmiiolqpklggrlmrsouqnrlojnpfrmkoqihimnnoinskjqnrvpplerjqkntqogtgmnqvoojqupluqmnionlimonmnlmiqlovllloiniknijmoonsnlipmjntjnpspoqmrjhqnprtnrqtooomnptkooxlm[innnjhplrvpnlmopksiknlnmpipkolmkkljopsknknikqpnpfnpqktnniqnsnplpmmhhnqpnlkopmqloioollrtmlpnmmplqmhhlqsfjumnllpplbooiipmrplomrmmvkooonroonionlonkpemprmqonplrknnmomhonqnrpvmknjlqnpqnm{lommohlkhjkllogsqirnmrkrlrspnkoolqmlmtogpnskispnlilrlphmnllhoknonprlpkip_rooonm_ijtkqmkqqovperlolnoqmqnplotqmtnkqvhomyngkimpnmsvnomqktmnuosllckuoqoplrslnrolhrllglmpnuhljtjjimqcoocqomnnjkzpjqpllpkkmklonlvhlfqpksklllqjknmqooooplppplrilmpkkbymlpipnjlqnoqdjsmtmolunwkoolqniqqftwon{qlkksrmjhtnompwmnnjjpxnsompmttpnptksmprflplohkmpmunkgmnnnpkpktoppjpmipkwnrklmjonljpkmsmhqponnepiqsjpqrlutjurlosrjnnpoonksnnlppgkmojonmqpljmunrslqsonlipkohfpmmgponsowdimjoqmqqkjnmoplwmmrhnhmnnklpnnmlmmmroosmomnsrqnnlqksnlnoknqhojowzospukmnijpkkkpnlllkjmoonmlolmkkmnmpnomqppvolnoolvppniokgnkilmqjooolhgmnloloknwpmlpgqmpuhjbugjrnohqqrllnmflknmnjfljnpqjooemqpijylqvmisoplponqpolnnmskjnqlnkllokwmnqkonmknkjpeqqp\jqkwmnmqhikottjolhlljmhmnmkmnlshptkrllmlolqpsqkmjmkonnjknktnsmojinfrrmnropknnrlpklmrokcpodrmhknmqlipmmipropsqokgnpqosromlinplnpimmmpgjiokojnlttaxlnqmotoopgllmlnkknlpqmspneooppkmnqrnnqmmunpmimkvsmiojmttnljpljsxoljmnlpfrnrmnokrorojlmqnslpskpsolmlipkpmimqklqqqlqrolopoolonnsorgsorljnnluoonnhuhmqmjssmqqropoorponpmrobplinknqpklntpmgjnfmhmioktlkvpnqnhnpnmnqok]lmrlroorhopjqnnponqqkmsnnpnnponmiqmrpomjlomqplnpplpokrnmvjpnmlkkppqpjoppgqmmmkqjoloniiqqvolenmhnjjnojooupnrvlmlpkqnm`pgnpmomnjpkpokpoqnqrnglkjpoodkinwnowhontmptohmlmptkmhqinpnpsllnlllpllqjinmmpljilokpniknqkrpmtolmgmoofprnhfpnipplnxmnjmmolsno|njjpqmouspoppjfntknopjllonqrjlplpmgnnrnpmtqmnlnprnmqmlpsmookrpplkfnnotjnglpqioiklonhjspotjsnjqronmmpjmjnsrokgmolnprkpwrhrillgnpuonompncpooonmnsolgknhmniknhtqotmnpnroglqqquosmpmkqoimonknvnlropnoqfomnqplnnlmqkspnkmnjlltrrphnqwlpkprkllltnoourlnoqoimmjrhncemokklullinrntjpmtmqmojvnynpoktopdprporpvoosonllnrmojslknsqpyqqmmmoqkulnogosjdnvpspnr|fhimlonlttuoqpogkftqjilmmremhjppmixirkojonpptlintupqogojpnrmqrmjnkmpuqnsjjjnt[mljrnfptosammmehnvjrmqlmlqnknjzpgnnkeftltvgikkqqfimmkqomulroqqsnqnngjolhmqrlfkponmwntoppgsslhonqptkonqoijmnunumrklltrsrqljpqghpjowmokqrio€otlmkvmllrlqnqjrsolinmnomtjjpkinplljqhrkslmhqnknonlmqnoolhpmmjjkgpnn^gpoonermslnppklponjphnjmlglnimlsoqhonsmongolrqjinnjsjqomonnomnkmsjononqprrmqkmonjtmommokrnnnmkr{snpmqolqpoopolnpkpmlpspoohomimnlnonpnklsmiqqmniojonkninopgnomunopikloopsontnmqollponmnokqqmpnmfnomolkmkmopwmonjotprmokjn{qocnhejl}kmhmsqomkhsmmmjhiepwqkopkjnonikssksvsrkcpurpxknlgonqqjmllfqiqmnkkilnlmlnoqpgmfllotrfjnkrvlunotnokpsmofllpliipoqlmijhspmqikjlqorskiiulollppkonplopkfhnqipmegplmmqeotgpilmoomklqmrkomkkylpqplqiprrpqslrljgqoglrnnqqnfopsqspoqrkhllmotnjtklsjxmqlljqombntcpmmlnknonklpolmnjqmmtnoqllgmompsuroinmoplgsrnilopomqnnpmnjmroptlnoosmmmmjpmpqokkklgnnmpkposqnqppojllmrmornoillmpopmllrjjmrommnmnhmptnoljqopnqnqoqsnllpjmkorltnjnplnomnmolrpnmqgoljqnmlqnmlrkjkmsllqpnkoepnmnlnrlsnkqoomnrkoronmmmmmomnrnnkpomnpinorqnnillkuikqjwwokolmiospnoonrlntpommimlmopptlgnwpmlmsnrmhwronmlmhmntmlojlhnhsmplkgmmppnkkptmpnlmqlklkmlnoiotlnqknnpcpqlppspqospmnomqnnokokjrnouklgkqmolljjrsqprtppnlmnmmgounekqmhprqnopookunmijimnohkltmpmsqtnrsnloipsjlmnrrntjlmninnqoqmmltrompponpsonnommorkomimppnnnnkppmupooompvlgtlqonmonpoupniolrkmqkimnnmsjnlpmkhjookmkqommhnjmop{pnohiklknlnolpfokprginkolkmspjro}mooqkpqsokpmnjmwvoqodrngqnjnjrnqmonntnokkp^nrommnpqppokpmmhppoonjjrltpmlo|irohlq|msnmmrgppsjuosoomirggnpmpopgllciplokimpuklpnloplnpmqmolofppopqnqnpjhqnlomhvrmoinlkimowiltlopqonnqorktlomoomkqnonqmmronophknmkmmpshkipiokmlnlruonitqnknhkqjmnlmpspuhfjoqoqmnnlmuoprplhltnqotqonqoonmonlwlrmqonnsopptlpkmnmokomnmqmkjnlsnlorkrlknsminnlllsonolqlt}oopmnmholkkotpklnnoprkodomtmmwoqxpkpgonenljmmnqnkmoojllpszjpqlkpnpmjqknjlhhlqothoriojjhqskmxnmhuojmxormkkljmlrorllsutwolmjnslpoqhkpksckki}ppmknlhiueqnponillrqhpjnmbqhplmglilydhlmkoloonqrnrtmvompoqnkjmunokjlnikmoqljmqsmojkopppgynjojmrrkhjiodlliuleiknimnpmbimvwoqqsjmhpmllsqkuvkgnlwnnsmoimqnovgppkoqopnsnkophorltmppvjqqkompsrolqmsppppsunsnssplqjmeiomlojnpnhnjgojpommlpummmmnnlpnlrmofjkplpjpooooojmknonnjjelopknolqigppokhvtoopsqolnmlspfonnmmumkpqmjlqhnnpdmgipoqjnulnomrpjnhnlnjomgkonmnqlqnqpmolrhqnkojlnptvm}jlmjkpknqurnnjorklmqungnmkrpnnfjnmfkksoywjglmjooooqdnvmgpqlkqomklrmonmlmmwoktoupfljoonoklnolhinmktmoprorpkprmmhmmmgcmynnllnrsonmoymnjprniuutgnrm_npkbtnqpmlmnompomlnokrjolosrinmllpmpmiooopoiaqlkmtpnjmrqjqsmvnqolmrmrlsnmlpjinnihqomtproqomvnmniooornmi^knnmklvriljmorohsflcpnkpqbpnipmooqpnnknojmjnlqwtvmnkmiomnqjomnmpnkqmmokdsslenllqlikqnrlknmhoilvmcknprnkqkoosmlpngqmogqjpnmnonnpnmpqlqopkuojoolmhksmonlmonnjgiotollolrjmiljnniqkhonmkimlslsnnttgrnltoflmmunookqokltmmvnkqolmnongoljrlpknskokmrkoninmslompplpqmmlxnqlpnmpmpnolstkonrspnnkelzslfnjrojpkolkrnopopltmnlzpmrnjjmmnmmkmmqksnmmislmlnklnkklilllsogjpkkoqqnnqqjolgrqooomnrmnlpollmkomlpnmsmkoonkoenkjkqlllomtnslilmntpnvplnnmionnoobptimmrgiknrronnhpjohrpkopsooouwjnojnosnmopononuimmnrmlmlkkmnpjqsnonnnfqmrnqnkorlmlrjpmnmoomfmiocnmimnupnomonpslokppmsmijolhnogplktpjzqmrlnppkmqmmoplonpumpmqmjpmnoollsmilqqrtjmsqtoopbjnsdqrkpqlorlrplmhomrpplsmnkmjmpoqohnnkppmiqpksoskkmpmromqtpnnikmknqqrqmmonnkoullnqmkrnomqornhkmpoljpjjpllnpmmslhpqemponlqnnmmnjomslqjnulpopnspsokkopnsnnipmnjfonphpolrnnlkclklgnsomqvxfkrskkmqoinnknmgmsjkimsknplmlpnqsildnjkooopppijmnnmmkonimlmmkmlloksnplpnolojnpkgnirjlmnmqmpmntpneqntnoomqmoknqttpmhkrmmdnmllonkmomprnjlmllkkpmnmuhntpmmhpohrmjkmmtrtjiomlhnjnjkssomhqoopqnhroosjhwmponngoohkmlkvrnnmlilmlmrmmnqknqmpmenqpnrllpjmmrokqomromdoolglvporqoqlppoprolurdsqiuiopkolnmmrommjomopnjqmnvlplnrlpknhnhnqpohlkmnpqttkporloomlljnmjoorojwnomlmjimfonolqnooolnmnkonjkjjrpmnhprmopnnmjmkomomkphooknimopp{jonoqqnnyourrpninrqmqjrnnmirpnlponhnuonooplnpnkniniqlgodkmsknlrpopmqmkmssookeplqmpjq‚opmfprbnnksojkooqqpqognrqknynosplukmr_qpukpyolenmjmjopomookolqnlqmoqtpqmnqmjlqrmjlpgpnkormnomoomqdmmojojnhpoolqomnavonnnmllnnoljkhmlmqonjgnkzmjjpmnpolntnmklopjoiorjknnnnpmmnmplpnigqqkhinosivmpnomkjrmnlpisopoopmorokmpmmomnknofxqlmknslppmmmonklpnlomokmmlkmpjmmo\kphnnllpiqnjuijklxnnllmkmqpknglnhonnklniqlpporrnnpnolmnkompdikmmqonmofjrnonolqlnqmjruniqgkomsnpnjpkprikslqnlmlkkjmmqmminkynmollrhljipkvp^sphmnlsosnluqmmomlknqhgrqshlqgvnmnpyphqlitiopoooqlnjpqfntnmuuqmnfkjmmimnsnlrnjmnsnihlmjojojhrnmjoomgoko|mjoppfjfvuplkpgphkoonmspsnvpnomkkomhnmujngtohhngpstkonjrqgkpnmno}lgslnmlpkpqssskknmndomuhklnlnonoqkosqovjmjoomnlrlnlpmpmpnjlnqungpnlqqrlkopwklhonpilhnpkpmmomoptinokpompkmmwnsgmrqnnmgjrvonrpioljtwnknjlsojloqnnkskrofjlppmlphspsljnqloljnlilrknqlnnomjqnmlmmqjjqqr|lqjnnjfqonuppsoqntplpnjpnxfkvppomprnnmsoomnjpqmqllfqltmllmpnnqmnmtnpnmgomvmrnrnqtiqktmqjkopppmoi_hronjsjnqhjlrsoliolrlnnqmmlqnjnmkosrklnkqtnnrkqninoipkopnmofnvinqpoogsnmmkommmknnpmompjkjnorgpnlmjsqtjmkmomqkmlnqmmiopllosqglmklnmjoslhnqnpooiosolpmmolmjngrllinsnkklqnlpomrqmlrpkrlljonjunrkponoplnognsmoxpooorxnnnoopmljorqnjlrlknohukljroqqltoqioplqstmnlmqj_monnhllptkljtvppoldjmkqnrposmjnrnjlxoimllpoqrlmqdnmeqkinonpgnmommpmvlsmnnoomlspnjroolptkmjngbiilkrsolorjpgoqqmemkjonrmktnlkklsqiuongmlmlogmomnhgpnlorntokljmenroomknpornlmpxlomutmllnoqngqpnolkjqqipnijrorvlmsrmrlrpromknniqljmkkoirmimrkrnpnnosrniomsmlpknmnplkpmiroknjoqonmhoiolposjkohknloqmjmpmqnkitqinlhkt_phuiqokmonnnnxllpposonmoh|qlmhrxiprtnnpomjprrprnlwornpnpomlxlmquljshnlrllqmmupmjrlolnmiytmmjnpohrphkloormjqpohwllpnmroqllmqncn|jopkvmkrmrikhlmnmlgnomipjmrhhoo_niwnommqpmtojonqkqtjklnbnpsonmnnmssoomjejpxomsmlWeqmmqykntgbntjqnmnzommonfmrpohltqrsrmlrlrltoplopannjlgmoopp_nkxopsofkrqounlrnhriolpmqihnqloqpqinlgwqnmqqnholqnqpmiotmulnqoonhklkoqpitjnqnlmmlpsjrnjjmowmolgqlsmqqlmjmlkoplmjhqlooxklnixnoiqmuohrplpowslqjpnkrpopsnprslpljrmopnlntoionromjolqopnuololnmhmxlinltrnpolkmimpnnjkkopjlpsomiomukniohmpknoknmqnmqonihoxnqckooknokz|okolommmqninunmpfmprhnrkomfohksnmjsnpmrjllqomomplnmjqrmtpomlhnmpmonlplimlmgpljorpnoqmptpmnonipmolmoonommmoqsmjnojnppmnsnmpumtlsunmpnmonpusmqpkntopgnpmmmknmnljnllornpsonlmnhnqlmtnoshrkmqojmpnlmnqqnmntkoqmuonqrlnmnnopnoson„nojnnllnnqomrsrkphoplnmtjfmposnoilsnohsomlqmjgmnmmoormojesomkmokmlhkktolkjooololinrkqlmdkltlkoqngolohonlquqkrofqjmonnnqllmnmlpqiklmmrjmnpponurlmqnqlokltmuknookimngkkprmloorolmnnhkkhpnqtomtopmopoipoloqrqmmulqpqrpqmmnlilqnnylnplmmsfmpqimnmomqmmmljplmoknkkpnjkippimpnponnnvomklhrklnqrkonpmlpnjpmrmmnkmnlqkmnpolnolnhllfnolnkqrqknnooqmrpjnnoqolqmhqmnojmrsnrmnlknmlmmqlopggponnlspskkpnomioooqppnsksmkmnprrmpjommfjjjvpooqqqkqltorlkoprkpounrntkmgjlsrnlpiqqjngnoqkpqmmmunjmmhkporssrhqonqolknppoomqohlyolknvojlliprptoolmkqsesndmsnslslhplmryqkfqufkxpounqoho|klunnrrjmqrpnrosphmqjkympqkqqpgqnnkokcwlselnhmprojsxqjodnppmnnklronmopsgooqpkkpoonkpulwnppllhmnnkqmlssvlondlrmlhtmhgikoqktpondnilsoprimowpk|klqtrioozjpo{msmlqixnhmqonmqoljlntppoqpyppnstomnmmom|jmpmllnpoknroojkomlmoskpnnnmmihnqomsopnonjoosqnlljmocdrolxopppoooqojompnmlqlqmgihmqloomqosnsztsndnolkiqnomplpmmjqmnsqopnnilthmmnmojoopnmnuvglnnopsioqhkkolmnplkrthmropjr~{nmhpljnjolqjkotjodlkpjokmgkooqmknlpkfnlhnoumkmnmmopqqonjlmmnonnqorkpmnpmqmlrgmousoiiknork]otnnnopklonsmmmhlllkoonomhlnmqmlnqkmgimljmuomomdgsmnkhknlnjnneslrllipoljxjmjqistmkhponofjdlqhokjponmphnnntplriiohohqjlurpighmnmqjnfjkfmonnonolnpknomolpsofktnlnlnknntmogmnsesiooqnpmnqqpqkrnrmlmnkjhkmkmpltnssirofpoknmmsn{mirlnqnmpjnnslpqmqoklporjokmmnykkkqkljglpmhmorktoloriljotonnhnolnmjjmmklkjvppvppqpqprqnelstnlmoknrpkolremnlkmpljpnmkqjslmnbssokxinipjsomhpnrhoninlfvhjomssojplmoqrlsoeollqpmipnooqjlnmrrsommtqkjqjhmhsqvnipqklrvopnrknutmowtjpkomnoqqpovqkmkrmkrlnxpinsmosoltoninplkqixqknpqpmolnkpkkrlmqorkkkkpukoxnluplqplooolokontp„ummjottjklrrchmospxspmmjmgopn}pthoioolmnollllnjqyqkmrsepmifhpnlhoerrnsqcpykoll€pokllemomqmsnncnmmlqkogpjshnppstnovqnmignnjmxnnonpwlnnmpsktsrmirfsvnmkonoslmtiknkinrnkonjolhqgjpnkhfmnpoupkpqnonjpfkimqknekjqpjqlsognmtgvqnmohpovrllikrkefclobqononnonosmgmnnqompmqnqniupqnnkplnmonsjopiksioohlnfmulnmlnlpnqqnknlmmqkqnlkjhpmnnposnnomsqqhlqpmnlnbppmpohlfjnomipomoohmplmmlnppmrpllkplkpmpmjlpolmonnmlmnnpm{flkokmjpnnonlqsnkjppnrloorfmjpopmnmsmrrmoiooploojqkekmmmnnmplnnljmrlnoppjkrppmmpnipmmlpomrtromwlqomoogkrorqnnijopolspnnmmmmijiphlnnolmnoskohqprlkyojinmowmqookonfllmolnpmonoqklskkrioklqhnjtlooulnqqnqqeqpmmotqjjseonhmomkkjomslpsqiqqpmnqmlnppsnmlmqjpkkppmnolk{nrknppmlsmkmpjn]pokponkohymnlopprlipspkpphlokqsjmmfrmqllonoowqornokqmnnjnlrommppipsnmlhasroopwkmmnn{nnplmnoqnimoqrnlrqoonnfmennpnkmsqookplnnpsqnxpikooskonnoolrnqpmljppmquqosoklogsqopmlllphnnropnpdljmrnmouthopqilbprllkgqtjlojlmsnnnklmsoroopgjpppnoglmlkolvjotlmnpkolmqkpfnmndlklormpqkllmpqropnqerkmppooqvmsnnqkgmlnkomnppolsppoopngmnljjlpuoskrpmphoommnopnlo{trqogqmnqlinniqnppkonpqlronoqpkjmmnhlppnpullhkoxkjlmoonvmovqmlnkpnlqngijnjumnemqomlnopkjjnnkmpmnpnoomqpmpjlnolrlvknopmjmlomnjolnmnnjpqqnmmnpmlsponnpprrskktmnolnmnmpknulmdnpkorslnkrkjpsqkklnkmmmklmnnjcmnqqjnqnsmmpnktomoninosmkpufrppilnmppsjqooikqpmlissokpmnmonmsnkouomllmpmkipon{kpvmmmoqmrhnjwrpqnrstpzqoepvngmpqvqnommpmojmlllltjvujnlllnnrlmjpkooh^qqojpinmptnnkmgmoryqgtmlprlmmtmkmjlmhmgkotrqmpkiktmnqllmikllnnnctnmlqrmnkpmbqnmoiuuqqjotinwpovpnpojrmpjmlkoqukqpikmjpmiomprjnmlqorkjoopssskolnlmmmkjlnpnqpkomnlqllnntqknmprrqojlphnomjrmpmptpurnkmmlktnrpdkimplnrshqznmmwlilnomhmhkmmljnmokqmqfqikslmgqjlnnnolknknnmxujmnnonnrmrkpwnmuroplrmklqtphmlmnlnurlqmlqnmsmtmonofpomllmnmmqmpnlpmpomlpgniqpiknnjsjklpeonoqtsmopnnnjpkgpfjpkhgminlrpmnmommklrnloqnnolqnppmskekoqnvmgggqnnnlnnjkokmjpnopmlpjpqsnskonxtogonpopnrqnoojmnkoqlinmmnlonnnprqinmnkjnmpmnpnqtnljlrgfttmonsojvqilhsmlrotrnonnnpqoopnymngqqjpkgnknppnlogkopumfnnlplmkoqtnlnllrlppktxoromntiotopnojnqopjlimoowmiocmnmrfjmomnnnmrrpnpmkkhnmooonmoomnppnnnqnpmoelnkmknollllnoofrmjmqnlsslnqkmlnluhpkpmpphnhummlnlrlnmhoeknrhompkmokclrolnpksonopnmnjnnjulmohjisnnhnnonnpkkpoinonnqprronmofpsolmmpksomonmkijfnonpmjmqprooqlpqsskpkkmnmmtrnkimrnsrjnkmujpplolnmkjinempmnsnlfljo|tnnimfojrrpmnmklnqostmkjpmjslnilmkstmsmkmpqnvqoopkukommkpsllrkokolpojmgnrlnnotopjonnpenvoogqorhnnnphktrnmmovpmmksirlpqnnniqinnppqmkkomnebqmkllknknnlmoloftslsrpnelpovjrjrmnjlqrpppjlrwkmpmrllfkommuroojmmpgjomrmjppsnnllrqnslnjndlhqoskjkmqqjiosnkmmmpkmunkppvpporklnhjnosqhppilqkpoclhlqskxsjlloophlqnlpqpnlmmljrmpsmmooounhrroqrmnqpminoijpsqbsononjpmoknnpljknljoloopkrqlholrkmnkoskekonmloplqooklnnqkgirqlmmkokxqllvoullolqloopmttlpqkkldlnntrnqmtmluuwrormiqopjlrpnmsttktmpoprforqposquunlqdljkrnpiskqkjkhmumnjplominqslsnilmomokqinrmkmoxsijkipufruqnqnmkmsmnmmloikolorknnhmnmqosrlqlvnhmplkmlnosmnpqmunltpoqmmplloilmxmqoomzjoqnnlmolgmnkssppijwnqnotrmnodnvmqqnspnmlpjllmnnvrmonplinqloonmmeogookpklqlqnkpmrknropokollnrnmhoknrwrholhlonpjellnnplmpntnnohkoppnmmmlnprmoiiolmptgosijnjmnjnnlpnunmonlsmpxonkjsufqrvnntollqoojsnpnolnpomnnkjnnphmmormrqmplkgjnkposiplmmijoplpopomnomlommqnlmmnlnrmjnoopshmmwlorqojntxroxprnpornkrnkkklnnkolpmlnnnrkmfwkpjnoroommfogooolqqomnolqmrjoprcnojnnqnmnnonmnnpmhmomiqkhnnnomkllpmlnoomnkrohinoqmppjlposnrpmmromqlnqojmqoqqnqrqrnminlkmonjlqmlokknmmnkoqmnommmjmlnopsjpomnnmpimkoppmqokmlnknvmrokoktnlksfmnnknqntumkpnjmnrlpksnpjonfqilpprtfpiZpqknlnnlomulnznmkjimqrqimorntlllnqkmouotkgmiqkqig|lpkkm|osomprmnonkvmmtpoooiopngnmdqqpopkqkomplpkovslrnlmcvnjosmnplvmnmolqgonqqjsnmnjkppnijqmpnollsulerjqqpplmnvrmqskmmfnoulmmnpomqlnsjnunmjqosopommjmpnlnpwnronphnkpvpsipjlooldjmlogilmhjnnimimlohohnfpnololouzkjtpoolllulnphmljlvnnqrhsiiogglhsjlmkoqiloowrgjnlqoonmlfkpnglmlfrlinlkhnpmqwkqmlgonmlqkkjmjlkqwkohronpnlpojtqolpnqmocokoqivjmjlquwpqurplhjmpmmoonpopqnejqqpkjkpowooprlnnjnfmmmntqvppnfmogknlmnlpilnlmfrpknrnppOkpkngfrnj|ikjlmnnqjjpltmpnwqpyly{npxoirmpmntmdmpcnl`mgngooqhlmolnojmnolpjpkopylmonpkonjnqmbkgnnnjolthoqpxhfjoojkokmrgqnupkqwgompckljcnmpmlolqq\ljsmlqmpojmktjoomcgnqgpqpnjp_mlsnnnomqfpnlnnnqhzkrtpmhrjpmnemprlnroomqvrokjmhnrzomqmnlrusiolnqnlmmmfmnqmmgrrlmxlkk}tppnpokjRmknmilippriklkninnlslkogopmppmpnohmrqlpxjqljloksllu‹nm`kkjqkqsmqpjnlonrnqqijljrkhlvrpjxqqkkmqomqhlrimnnnikimrqqmfnmmmukpolikpoYmmlhmqkhonmjkojnmovogndpojysmqlnnoloqmknnloplplmoirloeqnmktqhgojjunnpjkrkrekgjlmnpmuqmkolnmkkqtmnoskkmmlolkloqinikvommpmvplknuqqonllmfnoiomkpmljlnnjnllkoqnnpsmjpjlojjqoipqnknqmkomoqrmlmmmkqlqqoohnpqvuqlqnqlohshnolniiolpnopnmniqmlpososrnpnrqoqnqntonillpyrlompmmmcnkrmlmmoospnsommoknmjnpnoeqoknjndmlmnnqninmomppomknqihmlnjnkqzmmkqpmjoinpomplrlmlmomnohjsmjmhnpmkoooppcpkiqfqinmrnnspqoqojokpooqnqjkmlnolnmqojnloplqnkuompmpmorhnlprksoomjlknrktllllmnsoncjilipmllkvonpmqqknmqqlmmmvmtnkrlplroqornn{qpplsnmookomsqlknmnspplgkklajphmpmlmvrplomjmnmokqikqnjopknquursqonmmkohvkojmrdlnklmonvmnlksoigrntmmmmmmonnjoolnomjipqlfninmpjhnooodrrmkmmlgqnmnmojokqgoqosmmjjnijnhmholnnljnntkhnhgoqmgipmqjqhnunnxqlmokpppomlmsqlunpjonndptkmrmfnqmlkojfokjqjcnlldijilomqohrrmimnrmimlikoolmmpmmjpwipnolkxjpoqmnnsllpmlgxoljmoknoonmhojoslijplmnorklmnmpgikplopotjjpmkookerllnmiponprmboqnpmpmnqjkkiqonjmodriuhononrmhmmiojhnngnoiorrcjsmntnpwtlron`lspnemnqjmkniqqrsnjmoozckpjnkonomrsokwplpmtoprmmjrtnkmpmomqnopqrmtvhmlsojpomomniqltsnokypmlnnlonlomoplpkpmnoohqohomooolwplojrxmkjsqnmdnonqppnnqnmsijpmrojdonjkmjpnhileqplplttlnkkmpspjpmrkkzntjpypnsmloolhlmonnoohmnlounhmiplllpmqpsqlkonhmknwlntmqlhrnmm}moolniioollnjonqrnlriokmolgllfueonnmklxtmmmhfopooqqfqokjlsqvhsmojorpoppmzsmjhlojtkunmknkknjrummooutjpdrmmvlnnnnoollipjlmlrtjsookoqndpkhnpqxljmmqnoqmmoilmomihliizmqlptokgomijltmleomlfxpjinpndnlmkpmsqiniponklvmomotvklkqiomaoefpnpsornomtonmkoponvkrmoptlqnjopirrrmnglmqrqlpnqommmirklnromn[ufpjooomkknnmshnoojonniojwlqmhoskrmmtnlpp_klnpmrqmrdoghtokotrjkjsqnxlolnqmnplrqmkpopmnkwupnjknrksnilpljmqmprjlhnqkhkohvlqvkmlohmrlmnpojtqnntjpomnhnmnrptlnlkonipmppoelonllnnmlnnprkookhpsnnmsnokmmmlpksiqgkeqotopmhomnnlrjsmnppnlqgmmkmmloimkhnppllimjolomyi}jojcl{vllolmvlenohnlnomrqlmltrlplijoloqmnmnhknoilijrespokjlttpqplppsonkproluqllooqingnkrkwtouplolismonlnnhliqellpxjsmsoeokippndnlmmvrokmkootlnplqiplnnmokqnjkjgrlqlilnnoonokjosomhoqrqmrrrmqklliqqtlorplprkroqmpkwfnojhm{mqjpgntgopdlollonokqlojtqoknnsnotqrojhmmnsjprqpjnnmqqomgtjmmlfkksnlnmrnbfmpkknnqsomkdywnnoinxqjmoioinkomvqqlpjmmijloomrpnpklmksmlmjbmpqkhpojjommirllpmxononmsqkomnmlmrnmgpgijfnlmntojimoompppmamikonpmoqkllngtmmonqloyphqkmoopomtlihlpknkmpnnnjmpjklgoptplonvqpmoqllnkopniontpoonnpkmenrnlkrmllngnnqrrllsnmpflmoxmpolwoqlinnnkmmmnosoknojtnrpmpkjpkxutgnmmlijgpoonnmpopnqntmm`pinnmjmlkmoololinofoqmomllmkptnnjoionnmmngkolommppfnnklmuphoonlrnpohvnmimonpksnnlolomujnkklnompklpqonpmjnmknnlooossokllnhmoootmmomvrpkoikrnklknmmpolkkpjjjmoonlnhxknmlnilkononnnokurjlloprmktmtojmnoppohmrmmnommmmhjnmqvnqllslpmnjmlopqpqmporllnmrnqoopgnsnldnkhrnpnoonrlqnqolmppljpmtnooktqoklpknmnokmkmremjkllmolmlgmpmmqkokoonpppkqpvomopqnnmjmnnpqjmoounllnnpkmiqpntmnlrorolnnmrnhjmkmlmnjopmnteptnhmnumlqpokmpprfnpoiojilqrokiminprniqphrjpn^plnjukulnnbnqkkhnnqhoenpigmnlhsnjnpmnhrmnkimdopnemtnppkkqnjhsrmgipfrqrnmkqykmrqihppoilqoipqiohmmernkmpmnrqornlnmqkfmljrsjqokxpproklkohgoslorppljgjjnsnipknlmnhvljrmo}oip~oktsnkmpgonmklnepmptlnoooloprlgnplizpmmhjiqlnqqe|inmomjnjxdttmmnnjovfpjfnpnkklgnhpomdogoklklowujl†lf{lsmonfnlnnlollm{llhpmjiyojriopikgoonmlvirntfp`auyomieiurnookdqqhrnmmnolfoonlpkrlklpgmnonnixkkqqlopnqgludqxsmtmmpunlnnmm|lmmeimmknvtlqdrjnhoqolqokmojmrjqnpsnihsplpipmmmsoplljqqlsprmllknhpnrjluqlqlnqnynhkmkipgmnfnmomopmgomqmlorojonlmlmpmhjlrnpsomjilqqnmpkjnrpxsinniqlj~oshkgpqhoolqnollqmrmppmplpknltmnrmomhnjrijosooomnelrtolljsmjlrkjhkmpnqosqwcmmqroorqpqrkmoslnppsmqkllkiqnpmmoknijrtnrnrplnuoopokmoplomnovnmvkkpompmhmjmmmkqnmklikspkroikjpnrkpopomtpnlqkmnnspqpoupnpromloojhropkqqpqpkpomuojrmnohioinooqnmmonmpmsotkpoklmmonqnornoklqrnlsioqlonknmlpolmmsjsfnulonngkppolnqptiiojnonppnplnkrlokpnntmkrniqrplokjkpukkmlwovmrnmjpoiloolppmtjlnpmokmsjonpomioqrhtppjgoummosnipmqmqpknsnjomfogkpnrljjqmkmpmmfnzjtlnkkklo}gnkjntnnmphmcpoljlpqpsimioimqpvlqqpmolprpnrnlnkltomnspkjqlnqq`nnolkrnnlmink`omqiikrpnlrmooilqnmnnqmkofjjppfkmnestlenrppoqmpqkqmjinspmplrlmolnkiflkqnqlsljnmlvrnnomngoqnhrijhmlkjeqomkpgqlglorpnmjolpohhlvnohnmnpkhoosmnsopmuprjwnuornlqmtporpunfmpkwlnolnuorzokmkrqopmopqeqkrvnlkqgookrnmoljmro|qmmooknmspmkioglimlonplirmnnnmnnosmkmmrooonotmnorklnmvolpnqsmqnmroqinnmoqmlolnontljllronuiojoljojmppnpqnqomlqqlqrnojqrqnlopltpomnpplqinkroonkrmllonmrolmmpkhsqnookcpkknkmmooqmmlrrjmlmsollthotnnpmmkmpnowoolnoopljnnlloosoolpmproqommmmorojiqkljolqjjogfkpjqnzhuspkkjiolqmsojnimtoztpio_cxfsklojqmktmmsrplmwo}qm`jumojkqrmkmplqdmpnlrlirxrjftmjTnmzqpdopsmpstlrrpqlmprnlrjqnjkooynngoojollptipppmlpgmkm}hongmoqmosnholfkkptsmhokvk}priilnhfhomujsljqxgkomnlkhgqllrmtoloktokkkrpkpopppkpjwlkrpinpsmmuqhrslsmvdnpmqtdfqtpjmmmrlcrmprnpmmmjmmlborhmgllooqsikqunmdoljroikljjjpvmpojslgsiiligsqqnlwqrqlnollpxngqnnsslpprkotinjnmludiqurulrlpfqqookresgkskqqpliwqimffqprqononmpklukeonjlumlmkpnlqpokzrmliuqkuoljndpmoqrnyq`xomonnlmhqigpqorurqmrollsnuoqsomminlolvppl_nllgpolxkrpuvrlfjpnhppimpomqqhegnupmnolxrkjquprnkmhqogqqvunvqupfpsxnpoqnzomhjqlnhhlnnpoinrjqqqpduinrmgnipinoilvgpiesm\nnskmvpokonsenooomhnsoknrofqpjnpmjlmqunspjoikhmqmmmvrinsrinwnklrjkxjllrnnthm}rnqoikdqhoplntp_wpoqrmnrtokmsipnpiqpmpkoflrnlolokqlkllmjpqhoksqtjlkmskhtropppgnrojhkmwjjmoomujrhnoftpnoonqmoltnjltrmiprmngvp^nikjlknpqowmpommsonjqmrkmelkhfsqmnmloomlmnepoorr€kolqolpmpojiwjkqpplmknmqrompmlqopprkonmpnlloqlolpnronpomlprmkosmplqvosqofmokymokoulnmnkfipnigkjsjmmjnkkmjnsokfppolnonlnqlmnoooooonvmnmlmmnojpsookoflnjppqrollomplwqrmhogpoomomqullqmmmkknqpogsoqqoskmlufrpqomndmigomlcownmvlkjlhmnmppllgijnnugplomnlkogmuivllwhmllmisssonowdwokfphljokmqknnqlxslpmkjlkmrmoukmklmmlrrkovitptjkojmnlilonmwmnqimxlrnnqnljpqrmshokomrniqjngnnkqjmlhophijnqmglllpsqlrpoqrwknmmlmmkonknlooqoimoeonkmiommmhqlmrjpmpnnlqnomnlkkqnkolomrmnl^pooirhmthjriprpnmmnotnlmtomlrommolkmrkpoufnoomlqoobkgshumnokvmlmqqmlohqrlfpgplnmklomlosmmqlnolodfqkmnmmpimlqmoolmpqpqqmenkomplkqnlpprkmkiuqkopmrnknnqpmnlvipoipmlpmntpwitpnmmpnoqpmmokkmmsnipnphsmoomwongkgnlnk~mnmsilmornlqhrkhqgoglpmnlynhiyqnlrkrtiqpjpsolqijmk[frxrqjppiqlmimropfopmgnioqmijqoimqksqlyiwqgwnorgckspmnrnlohaiastlmpmjgnopgpnmorolukkummlspgjonjhnllpuhnipltlsu{ilkkfdjnnkpmlmnnmglnkkeltqlppjogmwhnjiboinpurpemlknqqplljolfpn{p^mompwrjrmspzsmvkikmirmir~nosjgknnzjnntppnomsmiqoonkoopkqgrinonrpoqoilppltnooqfklkhrqteolopmsimllsmmrlplmmopnhmhqgrqsqktbononllelpgnxvqpnjhmsksqlrlpkmlrkpcpoiqlqmmtgnqfkkokqqnfimsmdqsmnlmsnnokkknootlorpkknptmipmimmmopnkomuqhklmnpplswpnzmmlplupfklrjuoliloooimuplmnqpmorjhnqssmnipqkxonqofoqloqqikmnncrppnoqmnsknmokorphnnmoolnplnnkmmonmohnpnsknmsmrvnomjmqpknnnjoonqnnowojnnmlpkgkjrgnllolrpomnmnooktooppnklpnpmsppmlmqoknmlqmloljoonmormlnnpnrknppnnqolnqplmnprpglmlrenrnjospnymqoprmppqvolpnqplkqnppmojnmllonktshnmnnolommknnnornomlonoqmgmummprsqlmopoqnlmqnlpsokioumknoimqmnorowltopmimnlgqnnpnmgmnrjnfhlimssnqerionqmrpmmllnqppphknoqqnlpjplmpnmiokmqonnphhmngnrmkshkpmgtplkeknknkmonooojpomslolorjndlnmmrmomiqnoognllrqspioolhmuelomnnqlliqmopkoomqoinmkjnrnkoqpmtnnmoolnplqjnnorkmnponnqkmirqspjjnrjomnoqknnqqnmoppminpne|bnktniplqgxmmomnomromkfoqmmpnhplinlynhjnhppnklqiokpnsqolkmkmrglnppolnlolnuumqkokqmnmnoqonuqnslkoqfjjqujplphmpmnwolnkjmikplhqmoofomrlfhmnloippsoghppjmhmkpuoiqoqkjpsojqipooriklqpokpnlsnooihvnwjnnmjjsocpronmqllopspkponokmcmnpopnlqokmmrnplolkpnkskpqpniqlojqrzpntjonmmittokimleqkolnnngkkpkolhmlqjnrkmopjfluooifxpomkndllnqerojmlqimmnojlmemopmmhorempllmqplnpfnnsrlmjsqjjqqsponnsknilqmonnoqhmqmntkolonmlptjsllpnoimjlnhxnmklmrqmkolpnoplqxmiifinqllnkoflnjnllsnnlqenpioninslnkm[nklovmgoosqonompjhnkqrmiqodmmolmmhlknogfpmWsmprpmnkoynooqnnyohjpnpolivnkrnkflmomhjpkjhrnlik^nhnkrkpmtowntvmpkqhflsnpnsqmgpnsjtpkqjsqngpfhjoojxnrifg{jkjmnpknmmiltqprplkjorilslnvlmlpjpognhohjprsoxlyplloiiulplplklmnlpmgmmonqoknlnompkqpnqionksinnpqmtkokuqwmpqlqlsmmlwhlrmqnmqmlhlrlpmgipoplslmplkqnrogop^ppipjƒprjslyljoqfmdkmpqpiplkpwlknpmrovumpnjjmjloXpdnpkronqnooh}liolankkmmkkqnggopnkmjfglonhqprqlllsrhqejvkolim~qgkltuiljromhwlol_pljqmlmkknpkljllioriimrokautjoiipxkmqmkqlhtskzphkponelmmqlotpblormommptomgomqqnkkfo~nnrnrnskqnpvltopljspmmjfkqlhjcrpohjhmjmkljrvjsojgrqgrqnoqmpummpnjpneljnmprjkhpmm†islnhohfpxvkmsklvphyiznpirqmnyvlookmrppgmqnkrqhuplvokopmsonkiljofewjgkqpnuslmilmplnnm‚skrttsmfquhmlnnmnrmpmlorppkswoosqpmkneslkqnnlrjnkkmltpjoxrlqiojskoiirmrlmqmlnjnnmmpnnrn_miitomcljnnpltmmnpnrgmhikjqosokkmomwnmnlnknmpkkmomiminrnolnijioltpmjirnnmpjmlmknnopomolvlqqsqpmimonpmihmrjoqkmnoormftnmliollvnpnopnlpktohkmltpjnroqisqopkmjllnfookkpomponoknlrlnndnomonmemtrmrlonlmmoomkjcmiopjjonpnrlnimflfmrpmqnthjkommnomdnpopqvotlmlwionorlmolnlrnkmqsnmolppklrlnmmqkpoqqppokgonqkrorljknkmjqosmkkrpmljmmqnmllnqgovprnnojmonnkppnjkpikgnq{meplntonjmnookpoppkrmnilqplqrmilmmmlpooooksrkklovlnoommlmrkqjuropqmimnjmqmhnsontmnowapnnononpnkjolnsmopiokoimmoqkmooongmommrohomonkmklrldsmqnqolptmmijlopqmbkmmjmonnmponsnonoqhnlpiphpmimtnmooomrooaqorlxlli`jmjpkoprpkqotlmpoiieoqgmmouonkoqxfptmgoqtugmntmq…okdphkpooshnrmrkno{kspmjnlsllviooelpjnmop}kngnlmmnknxqsgvlnmowmpnolnnmjnnkhjmms{kojiolponmlppnitsjmipjojjotjmqjtllnhrqqnpp†qnnoqpjiqnpmdpqrijlrkknlqkmtmolopsllmoxlnspkhknhrmllioljpihqlmoqstpdsnfnoqjq^mrmtmuxeollotnprdiioglmxqmoignllrjmtqmdpfrpylkkjcinimpkjptkhpmnhjtmkgqpkknnkvolklmiikjmocopjfntocqwlqpngokgrmolistpkujnkmifkmnnpmplkkkmkjuirhqntonomvpodfslozlnmukxomnmelkrmoqnipvunpjgmlsptonwkkqspnknqnlmlmmjqupmpemnmqotdknijoyqmjlqliloshlqtqpmrnmpiqonokpimlopoorllpjimlkkoxsq|qpyonnloqmnonnoxouxugjlinkttmompkphminljuqppnrolelnnokplqkmromqnpminljssjpmoylihsippnkljssinllnnloronnjsposinniipikmogtnndnvprlpnsmqmlnotqljindkmpsmlmmiqktopnfkhrnpnlneionnmqqpprjmoodlmjmpjhrmpsnnuorpkmksjvmrnnpnomnkpioklmlsqplgnmpnwprqpnsiopooptkoqeomopnjnukmwlkmmnikqhnompoplpnltkqmnopluhlrrmcnlnnolnnvmmnonlpngnrjnvtrpokfjlnjmmnmpkmjkmlolmnqqpoqnqslnnqlolnssmllnlponpskolllhenplsopjalouomngqmiomnipknknmnfljopjsinqomnlnnjnplmntvlonmlmoummnpon{ns}pomqmironoontpnpnoronnkspkpnngnllhdhoqpolrmlqtjnvnlmokpmkjjolrlppkohlomonqjonoippsqsgpolrmvpmqrrnxrlponxnjpikorksprpsnqhpnokjooclnnjmnpqknqvgokskojdlnjpofpimkqpvopnnjgupujpqlsqnlukqlllrnloqnktpquimooqnnslmufrptkmpiqnqmsnoqpmmrunnourrhinjomlrqtnsqrnikmrljtostpnpfonoptojpmpqpniporxjfkpjslpkrprpporlnnnolnmmrlnomhnqyfnllpmojlojmrsmmnqsopossgrjluqmimglrmonrnjsmipohsprormkomnsgqimrpkpshqkrtlolqmnqnuoepklniXoowlsyjfimohrnpnrimorpooospol|or€ljlolpnmppmektqkgodmpprqiknleokrfqrpkinnqolmommko{rklslskmimjrnlgvpknralnkomjsplgrsomkndmnjormqkonjkhskjmmohkrjckpkmkooqmrtQosloonkmqegoqokppmlumnmmfolpmhprkolgnesnoqmzunoknplpnhnmljoxnm}mmmkhposmqqmpkmpmwjxnnkomoljntnjplnutkimhumpkomvgsqplqmonollplllmjomiqilqmlolmpqottklmpkmkmrlsmilqolioomopni`lpmgpnlonkqmlhlsnqrqplqojplokmguohqmmjjkshnllnlnpkpnnnmlljmnpmnmmmnqklrkmqqmonkkuqpKlnqpoqlmrgjflslkooptommoemkonnqjmrumnnsmrjtoqkorqkmonjnolkiunssijomqqoeplnnqqhnkohkoplnktltmrlnokxkkojooknlonmmtlppjnqrlknoggnnpimnttmomniplolojrlolnmqmkmqqpmotqmjopmhmniphkpnoohoomnolikqsmloqmmqnponmonknonumxnolhnnnmiomqnnmkmjplpnmqjnmloltkonrllknnlmnpooilnssonmnsqmaoqmkvmpqqqonvnlgnpmmsnksnjpupvolmpmvpg}otoknlpkhnjkukknikpknolosgmptsporokplnflgomoolpkdppqpplpknonq^uoqpmmppoloopppkmnmoqijornnornmmlhopollkrqnmrammonmqvnrqnnkonjnjnqnnrsmfooitpnnpiknllqllnrgmjtoliokhopmppmtpmrnpkonotsommhminoorimoplqpmmmjnjpkinaoiolmqlppihmmppssmnnntgmqmokjoojknknqougmnnueprhpmopmqlpinrlrknmllnooghlnmoloipljllqontp~mqllnpoipplrnkojsnpoqqljlqommgmnqkqnkjilmsregolmpjnmljlrpmvrpskqpgilnmlmomnpoylogluswnssonsmtnouonopkolmrpomjqronprrlkpnjqntlpmnppqmqjmmmqlitqjmmrtkokllsmjsnmqroonlknnimklqpjnclqldrnfnfnlmsopusnmolkknomlolrlhhkzmo`nknhonkeknnjwonnhnpmlb|k|ajomstnjkopnrgncvippnmssnsmpvim[ktilbpnfpjqllqnklpmjnnijhndsfnnepiq‡noqknpnknnjoo`wojqkokrpqovnpdmouqpvnnqmpvnn|pmqohoolkorpqpo{d\sklcnmlnppoformmooljkoo\ghflnpqkoiysootmrfnlflprxiqolkkmonupppqmjtqmussjmlqnhqolomjmeknniuptermsmlnmklojmmmmriokisqjlnqrolmtpnqnjnnoplrrgpqosjltwomkoouoosfnlirnesrpmtkplmmqpljmpmvnkkmnpqmjokqmiunrnnoptolporkllpnjnooopqnqngqpjhhkoonlqoltkxnqwtqmrlgsppmnrqtpnosnmn^pimpoohqjklmjfnmjkqsnkooprkkmqilljjvmuomulhsmopkqnrdktloootopelblnnbrp|nrljjikonpmkmsrnmqpmpgUrsndpihurpjqionlkiobkqlmkppvglkolomhpnnlehkxmoklmoolrkulefminpmormoievknkpjrjinfmillumhognimsjtnnhmkkoilnmkeppnoofohkmlqjrmsmjrvpqkewtqqwkopothmoojnmrknvrvuloxpomqlookpnkltslcrnovllpnrmhlktlwqstkuclnkxpeoltkikmhpnqjlpmpmnk}ponlrnrtrnkkmsjgjvnvkfmhmrlorovklosxlhnlujoukhtqhvinskghmkoomnomemij_qrldhhosopmrkoiqdzmopmnimiokmouoemkkylmkkl|qmkkkojqlpsqptm|lopl_pejoimjulqiqohelqmpmhimtnqmqkndspoqhjrotnlqpolpsgxpjnlqhrrhjhigfmmloxmmqpkpsikkilmrmilnimmlilikkllmkpolk_ipolhepjWkqrrrklpihvjkpnjlklhiqocdspn{mltsknotmkkoriqljponnvqtjlkpsfgnljloepmjorjlrnqyfpmn^pykdkmihjrkqtmgonjjTXopmnnipaoqqdjhhplqlnflldmlosqopjgnnmeollmmfmtrilkghngpiltjnrmnpipinqmkbnmhiqxifoppckfkqni{mjukrrotoenllkvqkgnlmbjljjlmk]cmptuo|iomtlnnnootjkjicjqmnntnkkdlrnwgltkyhinpjnmgohenumwjvoqpornvemgkjakiarflsqjmrljynlhqgbmqhorloih{sunlrptzlnkhfutppe|Vkipijdkjthmc_oojvubk~tqmejplqiqmrusrhsepojoniicqglkelclrrtjjolkdpytkotijoocknoaokowdomvnqsmonvlkmajkSokdoppiolivpyoqoivmvnovkkmflcmgnhtnunplprpqqoofq]mun|fnlomormpp{lopmmkmlohkqleonprqonopmonopnormnronnhjwjnimlpwmnnhnnanmlomtolsnslnnotmteoldnolnqdlptlqppnpulpnlpplwppmryjljpnrpZnpmnynoqorpjqzljqnhmhjoojnrmmhoomqlqtxollqlijlkpqpqznhqqlponpmarmqRkrpkn~kojpnqmnhzphrmlnoopspqmimwpsnoomkpnqrimrloiqmxoujkhlkiolqqumqmjmitrnuloizijnrqqhuqmgqrbkmrdusphwnnlnisqtmnrkmxlkpiljjjknsyrosljrophmnldjmlnjinnmkoqllpjo\qumdkqzrrmimnpqulsn`pnqonpimdwlyninjqmsionjqulfnmnomlrlkpbknoukemvrbqrtlgwprrmomknlvvjqpglpWpuoppksxfnomolquzonevrmqtjmqjsirmnnmgqreowjniiiom|mimjplplkmwontlsn‚jp\goqpqrmmopokk_pmqrlqkqplomteogpolmtmsmomvgrolpyrhboruoem{mmq\qogomlpnrop{olro{{orn|fnlmpnoldllnblmrlkkqolmnpkpzkkmjmmvoqqkmqormpmanmrmnptbygppnmraiqimonnrgnsno}polnnkluxdnol[mnozhoollosmkqdtnknsjppuqqkirhbs~kitzklrqpinhpknkolrgoooephmmnlmrotlcpkmasompnwqdronoljnsofrhqwkspojnqrlnmnspkgploikqnmlosgnpkqwpznohiolnqmlkqpogijmplnnnwoktjyomlrsjnumnopmqmhkghplnokoolqrknqimlpqmpxofgkkrmkrhomlnlnmnoiqgmuknmnllkolompkrmnqgqnnkqlm]meobojdnmimjhnnpkvdop^pnpozmlmgqlskunaqihnmwomomooogmmpioqrorpnhlqiprnhooqeanmkj^smnomkshlvlrqcloq[drkppgpmnpsmoqnmmesikkighdcmgnipuwnnlowkppohefphlnznqmqpnopzosgpsefjrllpjlmlqztxrqloreiushif{mlnmnqjobomfnokhnnohqllqhscpoitmerplmoksoknslekpoqylvrwqqnookntrppherdyjprmantmigtqmljkinlomrdbjeksozpmtfjomq|jnglknnflhpmhl\jnfbplonvmqtrlppgoqhjriwpmu†qllrn€[tn~rpo]esjky]olskojpqzrmdhr‚umoiwkduzsi„nuyj|jozplqlmkkq`llnqlgvgqtojlpapoljlvcfpaljrf~qntw|{eksfniymskjypknjrlqrqkqqhvnrmmo`iiomlegklcophjrjmlxqtmioghljptlu~qnjgsqquqlipmo]mhulkdntiolunomthppiovforlurds~b€bofslnfxnbpunpkto~kzmigqrermcammpmuqvqQsihinrlmonklljpljmommjqllnnqoplnjmkkmmnplmrmjjqrolmnfxmqqoopqjgomfqlkrojmnpd‚hswvl{ljkqqmpmqplfpvumlkrdojnppplqcojlZrsfojlrvnmrlnmvkmfolmifproqshrmolrnlopmlinkqvhlnklpptolrtlhgpnzloqpmmhpjpsyinqmnpnhisnsmhlypk‰ktkkpjphlmilpmltrlpmpmoikmiqmcppsijpgjjjwqrpktjgkolmoiklffintomopmliqdsqnmrniigkmklnpotqkppsherfisiposm|nprhspep‚nnnojlrimsghoospdzrnourlminv{juotkZsnsplqdm`^ccikjllpljjpgnooyimknomho_kstokouprjooljod^jmnmriwokhqlingkrˆlpsomynlnsltcnmkluxpmjnrqgovqfqdmflftnfjrmsomhsqosipsrnd`oorsnhjolnmlnupkmjplomsarijmniqthkpjhmknqiinvbnqglopomno`lrvet{pmvpnvgqjpamrmlmnrzjqoskynpmmyqlommmkitkkj[uqqmilisƒp{ttmyumnnfjjvull}pkxrp^mlumpxkmmpslekmjq`mjqhrnrkrogkornusmkhm\oclxvxljmkfoomunowmsalmnlklmole`mnjnovmjnmufkkdtp‚nxpsrmwcqpiishknlknoloompdkkunpdjrsiwk~sefnttlken{k|qnh|pmkqopktqiicilknwqnkkoqjmnoopiigqmhmuqummutkogoqmjlnrkjnkowohjhopkkrjiuhrjhnhniiloomiQr{gnmunrrmsjuonnpqjnlqlbqnolnok[nioqrlqdlgkljkqjiqonpkjlhmrwmllnpqipnmnjsmkgqrpqormgmnjnlkkioidoqfqahqlimqilumwrrklqnnolmmommlrmlkqjmphpsltnhppmmkomooknqkhnqkplqpllojknmo\yojpjpmlfonoqkmhnoknnmkmmolmnhllknor{nbokpsh_inlkspinmnrkngrlsoorjn|oszla]nqmijgujnllpsstoypnnqmvuppooooqophmgopmnpoqhlokqqlwlnnnloƒuxmmpnandmmnjonqmonoonvcjlmlpqjrmmroh[kasnokmnlg^kniclnmmphljsromsoixq{…klflmiklfoulqnjkpsxknnrj|mpmnfqnullkoqmqzlln]mglkjmimopn`nmnhmmnojkdmkployqpsnqonlkpmnmwlmeemjrlYlrvlencnlmkto{oolrmkklznwvoofmmqgtlqmnqnnelhnohnompmtnnorkngtsilfpkhqnqkmsokmunorlvrlnklgnnknmmsnqqikmkjknool`donmqjncmhnnqnmnq]~rnophcxnllvnmnohimnrnnznrjk^hooqzmnnnlpl}lnmnpmtxrnmhogxlzopjnTjvmnsowvpmljprngnmoulntontmjoknojmmq|enmsnnwmllmsqdkmmtipqqqnoqtnqulolgotiqnouksnnplmnolhkgfjioxprhkqmqoiqoksntlmjfswmnpr`plh\mmtnnmnoemornknojwsppmklummlnnotthtwpfloe`knkknsyollqlpvcms^rtqnvhtqqlmhuus]pwwlknoknjxionokspcklhromlrklkonojjiknqptlmlvltlomkojdoqfm^gmuuqoooqlgdollkqrgOhot`ejoi\ztgnmokp`jggopaekzrpgqfssoomjnkhjnmbxqljtdprlrvkprpnnkptcvl]hltmckpvƒj|kus|gjoidh€lejlgpohcZgtrmlr]k~nsoonpmoiorlfmjmjlnnmqogktmvokrhppnx~qvllertmqcktpijofunsfkmq|[nmnnstaeijuibrvrUƒluprnxn[lqixqjmgsligskknlPoctppsigphlitjtz`kltjmrwmtkftpmpnknmkqxolpgopnsepkmnoqlypprjookrmninskqbepnlpgrlrmurmnnlnppuokplpnmnmpiomnwlmlujkstkjonvpnplltaitpmoxynnjrrpqugojmwmmrnolmlolhpoqvoinlqlkrkktonmmspYknlqgnkqiskqqqsmoknpuslhnquomnjioxxrojojoplqrohpknpdnklempkqlrrmtvqmjlmvqmlhpsmvnglotkontksonkmommmolwnpollrjnrplmppXjonomkmonojnhojfpmlppmomoocfommpvmmzqi{pkmnnirmromqulnmjlsqo`xkpmofk\noilonnrvngmZdopdj~mmmoomnuqkmo{kpomqomwmnkkjosmlprmqUuornjrrmjnmjorofnmsnllfnlomknjqhuodmqtnrmvrpnoqjssipdnolrkhmnonogkmtuokjrpiopqoplmnnfplmpnplookqoilsnopnvrmoihlmkroornmswinpsqqlstomoqskiqfqolnnhmolomlnmqnrpokopkrmmonksrywqokkojjionboqsnompttnnosqdpklq`lkftnpklirlplliplvkrjyequlnninnpmqrmkmmsolnplpogjpmhonjojpmmhgrmnonhmmjksmrqlnqmmtltmmmmmeltjsrooongopitfilpponpftnpqplxnsmrpnjpgmislqnowqjgkpnunlnnkqlmnlkllkjkonnosuqknmniorpohhnpnuqtmkkjosokjhlpljmnmoiilesihojltonqnqbkfertmliqmllokquxposgimhqpmhloqulnptlnrnhnlbflyvitlvqvxpmuokgoiqhokqnlmpipimnlumpeptopnojfmbmrnmlosqnprjymkhiimpnmqepkmiwmqumjhmktpoksnhjhrsmboulkkrpotrpfgjmiplipmllmhnjnmmnekphotilopqflgtkpnlkpktholmhqqmtotqokqksjhlpqgfhnjahnrWrsoslgmkltrn{iqannnnnwumuuvtoiqqrm_vsqsulpsfpmlkfsumbwoklqljllpnox‡‚qqvt~xbpqhpXs`jtmmneowoTnuzmvrem†uos{ftppkssmlnbpxnjrmprpqwqnhnugdlw|qjqrgdtwpvs{tlwwnf{sqoeosTpn†rzcgdwmotejho`psvkmnhnjl€exriorsilrjmkqhXicpkktnnpnztmkxaqsunopŒpqowhmrtkplqroveclillnkolrkqrllnuquknh|cjoimnrispnrlvlnphmrnknetjqojplnncjplsllqlmpipopjjpjnonrjlpmhqmutlopmktlponqurckopkqukoipovjprelmnlkjmntlcnnlsvlmmnnfo|sliipnphrtmsmtsmlsonsflmpkjonumhgpmilrmjslrlompjoirjqfqqpjtzmolpnpdorkjvnyokswkmujhmingmjhnlotmrkrncgllnoirpmqkipznsiqlkhmvwnohvklkipqnljqnllbmelnlpn{ovWnolpnmhpqn]lgrmomnncnpclqjlkbl}owmmonlnmmvitnoolnqkookpojpsjjzpoomlfngnnomingiooonktkummslqrsmnqnkpgskroto`ronrmis^pdkankxmuffnqrmqhtcsmlnonlkjmkjpnpqsjnnjrlnprmlipllZmqnnlnqlllnmpqmnvktqpmuxmlipgmnkmjtjhqjlhplmqjpmmvlunrkjqprcpp_omeopnjnnirpqblowqgymlsrkepgmqmuncnplonlqkmnojn|jkpxkkltoojolqqkumvrffnmnvlpkllpio^uqlilvsvlmimoepopsmqnsqlmnqhwhoroin`lldnmoornjhpp`uomnpilcjuq€fprlitahvnlgll{hp|fmsmldkjnrqsmmling\of]nponjmgknlnnokolmqonoxnrimuppuitoqmptipikdpmlzulrlrlkprkqzfhmojkof{klptqgmmijopk|olnqqnqtllrmipqxnrqnnlpmsmrnpikvrnqomjqrrqrynrmbilr`nokphekmmnvrfmopvuwljjolfsoqmvnlpnrkkonlnmqogknjtqjksorplylpvmopmtlcgirjjj{yyjktqllnmbqlhidlimsumltomqjtonhkrnilmjqypjrtmgkegjruqpfqgpnmnsqnonqjllllkpjnliqslpolhomkpoufawospfRhomuooyrmrrvgqeimlnoiidqjnwy}wpnkpqwqmxjiinhikqrpopok`ovkominciboaszdgqunjnk„kflahskfufnqpwsmfYjrhyqgumn`}nflzhqjmvoiniqdqwpl~d|gmnlourqqmdTpirjkoprnujnjsrd[dpkpp{imlokljlklonajlpojviligplou]skblkemxthioipw}}ifwnbjtpmzjls|olmielkvsqqosnuoorpmojnfkoqok`unpplornnollpokrqgpnokmkhpopokylkmjqvpqqrnlsgik]nkllnphnoolmkmrnnllxqmilnrjdojinjqknolylknmmkloklmhpplsotjlosopqljnyluholmgoynmhoqowntrmkopk{pnrnmofnmnhlnwkotommouikqhqlrok}gutlnjonlkg}qoor{doqonltmkonmi_kn~kmvlogosomqlkomopnmhiqqkjmopnkqmjjpkpkpmnmmsljpojqqzpfwkfmqklokovnmmlplmnrqfojqmupojvnrkktlnms{rmqpsjqpkpompmmmmnnmpmporomiiqqmprjnpgmiqrpmpjmrellqgklgiqppmdnqoqqtqlnkskvbooojnlnniuqmonipkqhmoopqoimjpnlpppnmqnlioltigppqqoshnqglmnqjirkvpingqnmsijnnkfsmropsopkomqkpdmlsjjknqpoplwsokmpipmmmkiuopqklpjptrtqrmlklsl_mmjvvhkkhzrknpqjpgmlnnkqdpspqpprllkgfprjskwncwkjml‚spjjcgoqjmhvlkplqcdrtoskknukvohp^mlpq{sq|sipemhknoatjqoivkoroowhplgl{pk`mqkjnsklgpmmnflsxksqvjksmkkkjlpngnnhstlksilsmoekqsnomuijrro`mnokpoup^t~mlpmmhnjpilhonpmtqslmwgqrmgospekhncljkjskoqkp€lsjipxmpmohmcnkadqr^klmkjgxipopkqiokorkfeluonsvjwlpkeorrjhlqkkllftlpvijulpifkwljnajroofithippumkderwmnqnypjqnpnqpnnjk_glolqdknborsiorilortqftolggmioklelnippmolmq^lupmmlehelgfmustfrmllsgkooicnsmhigmqmppkkkoqf~lxhttefvinohrfllqmuiqkoggirisjrllokpojdmpnmhggfnqrgmqkonkvjkorjvrnrmqqnksynmkomdlppnpljkomippmjkpskfihhjltpokvlhlftoljtluhqjkfprnpmlnmojujlgnkkiinlhffqlkqrpsmfsjofglflnsmklom`irpqyoolgrqjvmsrkvomrmklkdgomknmunoqhuqljhtgnqnhoyrmgjhquvnoqlilksissntonrinhmpskrumrmnqhlkkelnmronstmmqrlhmkvxojqllmmllsofpmmipnojltkmhdshmi|yg]]zmejhkgi}pnnho`jjpodj`d`jkqvpunlmoqigpbo`kulmmoeprmtjopdknmukplnhmomokxoaoowkddpuptlldmpenrrnm`nmlmpYnlnmpkppnfjpfmlqqvpnfp^hrpklnlnimngglpj_pjlajkmmeihinjpsqnmmkjgzqmtlnqhqtzl_mknemrlhwyq]wkwolpgnllnonkmnqmpklbrmjkinjpil`llssrolpkiznpbggk{lttqgqorklnlvfklmknnqomqtpknn|knrmoonmkklmigpqorlwuoror€kkqjmmrllmkjnojonmnkmjsnikkrrrmwhpxgnngufmswnqkgdojomoqnhonmlsmmbpslhnnkqnrnonkilnjjpkqnqkloqinhoqoirmtjoqklqknojfxmspbkm]oirljqglrhlloip`omilnqmnmkqmliqnforlmjpaknqrfokmomnnuknn`nmorlojsjzusmqnrjnoptsjpkeqlqhlpqszxjppgjowesqcmfjrojskioficobo[lphiepppopurgsr~jnnktpwqigdlncqvugnncrnkojom~lyfprnmjduwxouerkrouƒjmxikri[mgnksnkVqpkvdonspkn{gdpmjoonloltlspmfpgnlmqjxsmlynsmooilrgpmnulunknqmo_ujnljufvmmqfcggmbfkrlpprmnnnip_lmppcimheomqmesmjokwplksmuspahpkko€lfllkoppjulkvlpkgomwpttulloxpnlciqimeopnffkinnkqgyppltpopjmjloonpmsmnk^kmpnxmojhnlpmdhqfpkonxgolqrqvqpupkflsbtjhporrljpgqmqqmnpqlhwcpnyqloklqpkopnkmmsjtntkkoooctmmrphlqmhmpstolppghqnnotjlnsjmmlnf]pqnmnqpsoniloinnkyuppuowgnlqfmpeihplkjhrfyjlnnoirmfmlnwbgiolmrpzjqbmqomhdsk]djepodik[^€hlposndjdhqrgenjspmuymmjikikgnmnoanslhnmqkmktjrgepknjgXgimjpkv\lr€ijhatƒqqpql_olniqioidpjNXdknencmlmpmgjmjodumq^nukfcnerkilfgfhvlmpgpnsllsiandlhnpzumonmhnoVjsmkBrsrffan^hgkmiglq[zl|tltbjepupjwnjjfjhcolkek^unifqchnrhumonvzgpnilhj|ig`mkroccpkndiiifjjnljmkpgmpoqinnnonolnqjnn[poylnrjwwkkdooopponxkmqolqmppmltpkpks~jnhxnosrpolqmojofoimlillpmpkvnxlpjiwkmsnpmmqprpnzmqhnsminŠvniovnrlijlljpmopplllqlgllmpqmlpetploynpk_sxmmhgghkykfjnnnqmqjpkhtonflpbglvllkrmpnznmnqlplfkqljjmpnmniqnpg†mqpfgjpprpprsrnlykmklozfrqfrtiiofsmopnltpunmfem^punslqpmmqanlkoenqpmlmpnunqokmjnjtnjlepiwrvxoiq\lnmslghgqwvjopzhjplqyserlmnodplpovmhmlllsnqnqhonmljpolmgrqlrdhrqrqkynqljytrhknlejojvuhslvonpoknvsoikrkykkfmntltlpskuiolhoqojeoxalfkoventpqrpuqhliwqmromkniqaqqjemklifnwkjuu{imloquklfprupqqojbrpikhotlsokqkrnowsiplqjmkosnnmjjflotrjpsrsnqrwnloemoohopmtqljnppxoro_hdlfnfovomwwo‚msuikpunmprrmomiqmlmmnnnqoo}ujqrdkolrmmfkmjpomjjlnmmnsjoqlmkoxocxtpqnnronhmnvollw|nieknpjeemllmmrvqprnsonlomlgomorlanl}kmimvrrrkwlnnpbogororljmlqiupfqgluokmolsfqlmrnqkmqlpoullponsnnlmmslrpghmppokwprjmomolqmolbooomlnollspqnnnuijnqsllnprj{ppjknhlsksukjmpptukvooksssonpplosjojpnoqulnlqrqlhlmomqqnllljnlmmkjlulfnqppppnqpmpumnloumhjnvrvqojljenmrnrrmllptmnpkkomohmonsjnpllhhmmpjnwjpmmmqnkpmhkpioonilwqrhkpkpmsqlopkplllkwmkn`kkp`momoomloklnnxlprnnlnnominjfjnmohrqdgkp^qanmotmpmofmloqnklmilyYhjrhkltluknsrnipo}nwvoopeljrmnnlld|olm]mkhoikmhipmjmprllmrnjbltloqlmoqnnoolmhimocnmm|onksmqycmncflzkupdrwkolgjlmhopmmnjknlvmnlpkqwfnfmgkjlpmnoomonmnklotgmllm}wkkn|omqbvlhxrtupjjdldonrjeqkpmlhmomiqoqsimmjpqpjqpjpiqloprnnteqqnqolqhlouentmdlnqrrojlwmlrlpmjohkntpjxjdpilplslomlrvdmkqrqtmrpojdohwjksupjtoonjwvmqlroqskommojkqngmtnjnmkqknpmnqlnqtlnonhglyrppwpj{qejgleknpkkngmeuunothoopmpspllvnwrkoknpomkinrpokmlkhlnnnrjonompsmokhlosulbipjtnokat{ilnqpienkeoimmmisnpvuqsnplglnho|htfkkhymvyrdnhptoenky}pnooqmmxuqiynhqrmfnkkotmmlulghpkmlflvwkkisd_uhdoojlkeoihapspytpfhsjqzkukjp|lfrhsidginnprhfgpuiqomolgrvjsmishumkfrq~igwpvnogqpngcsnpmtompmipnwrmnmlmiklnjkhrpgqfwu~rqjqxllngpjpp}qzklhqnoqkmudjksjnmohuslgjmpomglodrjomjqkknmnhrlmopmoqpmmhjknoqkqt`ojpmlkjqepvsrnjpopogmhtoijjlkjcmmohojjiqpmrugjmgokmjvoolmqnqnrruotitfqqmgjlrpjojsipplnjonjnjomhmolnpneonkmpmiuqjpkpnknomqmlkmqpqhqvolrqkifmqdnllmnbomkqfqkkmkjopkunqklmmpjxlkxnnnnlomnvmgomppmiikmnuneskhrrsekmvkkwpppmo[iojq{nirylmmtkkfkikko`bnpoumilnjtmpiqkqnnkmjurrpsncmpmfuononkpmonlrmlonkoonnuunlomsogenvp_oommqYooppsjpVosnohqoxllqpjtpnrqmqkopoqlkailntoslollxnnnjpnpnnnfhnkpkir~puppkjompxelgpmpnmpnlomonloklpjmnojlo]onxorfnolnpqllmooqimnuoolrqwnmnmjjnZs\omonkmmfliotglhkcrlplfimoiqiojmokpniomikpdokiksrknnml}pgkfjkfekpvkmkooomlemyixqoilonjmkqhdlsofilugnvqmo`jmwk_prjnelsillhklpjijxptkkmhlskkioomihpiqioyhjjnonsoimkokqmhmnnjpmenlmgmllphjssljflrthjrnpkhq}njfpnqhhnpjdsnmqjlvqpsldprtusnyoomqhmklnqmqnorulojqowptqopnnmsugkmgsjmmlmmrprmcpkmqnipphorowlomnmofnhoprqnjmiiorgvpsrnjplrmtonnmpxqnvqfnlplipnowlpopkqyefnomrlmkisthmklqljpllqlphlthnnrjilvkrkm|klqmrmlrmpokprjmolnnloekmrmqprrpjtlnupmloppkm~hnnmpmnxtpplkmumtfqremslnofomjlmmkloiypxtkrlmjmlpqjmpprpmmslonrsovohojrlmmqnlnnvenlqlkekmkkqlkqnrqkljrplnomqlmusobtmonsokmmrwnrqpojkfddrslk`qoldmmfomookiolnonieiqnnol|wkmvloljrqkjhlucqkkvzojmpnqnlkqoejcnpgmfwqnoomrfmkornnoonulpnsnrlzmjorhoirliipsemnmullkiljmknVlehijulnlngfknkumronmjmilmxoxdupjuljnorsmpombmlonmnqvnlonjjmpjlhoorq{lnrlkmgolulwlnppfknon_qopnrjookmelnrpnenploonqinllnoyxnslm{ip`rtpmsopoolvimsommoophmgnromwmrmfnmmnnjqlsimtpmoknplnjopmnnotlopmupjxlkqk`splmplehrppipbo}vnindlhpmhomommklgnp`qnmnnlpsknorqn~nnovkmnnoji~nqkfnqnrqmpopnnoeksuvpkplkolnlkmsnpolnnmdmoppigompn{np^bijojincmqksipomropmkrsnommtlpnppompklmnjflinmlnqnmrnsurnmmmrttplj`omkxoomjsmripmloonm_kiomfimjrzwkrlpkpmtrqljqnmnixnppklkoxsnljwlkrkoqpormjpimhkmonpobi`loonmoumpsllouknmjoobqnkpnnp„kinknrenkq„lsmmlknllllkorpowpnhqnolnrZ]juilrmolqlmnrnnmmmonnlomgkqinolbko}mgkrsojgpklnrnimnntookmajnnmnpoeloiltqln[rnkmlnkookjnpjnp{olvksZjkxlpntmomjlmprqjnpinnbnpnkqqmfoxxnooqompanopcrnpnluoposqgmuppjniooloqglsvpmmsmpnopprnfiolookomnllpmrlhmppopivkmkmlmkdvtojllsmnnmjhrlllt[ljngqsnsnojioqplmrjhmkmmepoonnqnhmslmnnklqmn`mdkopommodmoormnpqpnmtqmgrfprnpvjlshqiwvhrfsjpqmnkhqlkrkliorllpsh{sjsojmkplnbjupplolrijth~jolqfkqmimllvfepiu{miognlstwdngpryhqtmqnjglkopnmgkssqupojfmodjlptvltjmwtormmjrnrkponqnlmffpnrkrluifgmhoknrmrnmqpioilmgsnmmkgvkmmofsoljqfcokqrgfspmplqnrqmoopllsl}ojnsloi~kklnjuljqmutnoliiggniolomoqprpjjmkokonrolprljpmnvmpnnopnimsoslipjqomqmnhn[kslpnomwknoljmlovmlmot\iosmmkukhqntqoqlkqt|nnoofqqjppspprulnnvpnjjimm_qnlpfiknkokjnlznimqnqojnopoophonkmpoptmnnklncxnltorzmnfogmkmojrros„jnsjlomnfqnmmonaevmnjmfqlkmlmrmnnlnnqmjllkdnpqonjomenopmleconlsnjqkdgjsrhenr_wljyfdliihxjkuerporrvkrsfgvmpnqvmttqhnjsjftj_jtoss‚iriiiqtpsqqgvrglrerprnzmysurolgfsuvqlogpzstrgvmtkrfdpojqtoq…mndpenlp{mnj`{luilnisjmqhqlcnpdodmiqmusjmjedtmpoukmlnmsmpbfniocpkonsjidmmjzgnkc``qrmojrkoppolodiklpnjpgomogcjigqg^msmms|qrygkklmtoosgopp`tomttinohnmmuhjxvvunooomohmugjggnrnmqfuqhnuqenqhjsmrjiknho‚lrhpnmqntnrqillpotolknnspoknxkdpqnsspukipkoyjpjhkoklplmmmmonkkkbjpqnylprkvloqlnlmnutosnmumkmfrfjpmogpliqsprmpwp`kistovlkpbulnfkimm`jmislpmncvmjllnktnkijwjipiprgmidpokrlmjillnpmmqjpmrnrmlkomkpmznnrlpoqljnnhmkkloqhpilqtenofqogoppnllilnqhlnooijnt`mbcrpnionlgrponooqmpkolnx}litoqvdnt}orqpnemzqpisnkkvlmmmkhkdgoknjgodlprkdjnosqmlllmoonut|gognonsqojknnfmqomppnqlsnnjo`xjpmpnSowj€jkknpi^uno_qonokgnqlklkmnliw^Tqm}onkqmnlsoqnlqlpmopm_pikmmnuqmvs€pprpxnluslorsijohlqbqnnphoq]poindilpnomkkloznswowvlkjuixtxfwojyltkjrsmppqenikplmtndtmgnmromdqpqnxoijoplpbpeoolrj}uarkerrnltr|xnnmpjtnkqplsskmodkppjilir€pelmhkrrolotxn}ojoeqoqvysvlmlhkspylsoqnpnlpm{nkvogipxtqgnmnsn€hoomskqpiphu\rnomyosroonlkrpqkutppihjsqqjjpgmorncmkib{oomotmqtoploojnopnjk~nsknn€qjnmnnkpmoqpotmppmizqkwnsdnnqpnkm~hnnkjqmjholfn|bnm\qnovrpolqnprfksnxhomsvboonnpnrciopuenmjomomfsrnqjposntonkbvnmnplnnmmpppsnrlnlmoqrhnsmojprizmbnorkllkpnlnnhhqqhoqmqmmqlqvlqrpjqz^ienlerrfjlsluorlorokvooocnmplmkkonpirlnijkgrroiqlgjqoxhmlkskmmzmqnpmmmpvwmoŸrmqmqrpphimmrykposn`hlqlskoopuokohnnomqposommvnrqojvngtpkinlnnkjnlmsoqmpuigmqqmsqisknmganqnhnpkljpmnclfnnkpqpddiimrmnkhmmjmlnknrlnun‡rlkmmonpngmunmkmq\rjtqnjlnipo_jpqilsoknlokoolflctspooqrsmsmmmsksmlmrjnnwopnolpsonuuknqnpvanhngo{nqllkspuqvtjqmooojjexqkonomqjplgprpvntkrmqsoinelkmnocpilponlkponipmknmmk`luefdjqfttmmckkuqgrlstsqqkqomoilhsmmjlogkbmsojdrmlnqqsjnojtlrmocmpnmlnyjwpltkhljojhppsnxnsqpnsgsiqrpq~lwmcjvlnj`lsgopnmqmoononnngpreteedkpojmslqpnonrnnknsmjmkqdjwllqnrlhrtrkmksrjnpkrkrkloqjsmpprtlmslqumsemnonmsmgnotnnswdlmpoekpqsqplqzknkmpronnszmlmomnjloqjlhxonoqsmjjvioonmknqqhxlorjoinijlomukqmqypkoapyokpmoqnspmkinlnpngoponmhominomvlxqqpsqgqwormmpritjlvptnqnttprmmqrokokcmriqrrqruhmfotnomjnrsgmm^likkqonpllnmoqpnmmnmqojwqrvnleiooyklppjbnupmmgrksojpolmnsohqqooslmmgoojoopoorppmqibqvmlqpjvpdcrrnoopoopmoipmnqmootmfvndruekognlpopnszitscnomoiepqqpnlnpiqhrunlnmscosjnpqlohrolnowy|rlnjnipiggdqsmmnrnpoqjopqphmowwlpfql_lkwmmpnnpmigoj|mpnnjnonqjqomqleojriisnomqplosltlonmpnnqmgoslnnrlnm}xamonputnhgnopdgpghssmlnriflwgtspwafqpntlkdpnh|{‡hbhammjr‚tritxzigip`{jo‰nPnqzxmnsjiljiprkpqoqtrmjk_nrllrsj\thmhPmtTkjf‹~ctuky|udjvh\osnojvƒrjqbprghuovrpeoksnmw„sagkhtjnenYjptr{€xionoomqiuppfpkrkjlimshmrpluetvj„wlhrfjelkojpaohsuxql|trmrlpnlqsjintrq|njqiolptoqnsro}k^iNqsgnjtmpcqrbminhonmlenwnplrrjbqjkrrljjknmsmqkpojonkjrlfpupoonoyunnjqlohhnnljpnsnsrjhklmp~`vmnsirqskocqttolnjpnorsejqtpsmhrlkmttmkknnoqkgmiqqllolrelqvjnnsdkepgphogpmtnjljnmsjmkknpeqqpdjv_ohjmportvptkjppnrwojtpsovkqojhgnlonpwqfrmpoilkrknrpipmyqvkgoulqlqsnrkqmj[rmmrrVnpRqgesqlopikqorlommcmmmmhnqtoogrelksmwmnnmngjogknmgprltwjnkpmooiojprmpipohlrlu{qgtrlbkpkkmetllilajkonoglnjhnhnngkmmibkomviopvxkvnqnjtrqqebprskjqtntniljlhfhntoqcx`ptqkljrgmnpqqqhmgflhbbqrotolianozsmjnruirym{vonuklpkzkri_ukrisnqjqrumjueptqqkwrmmoqaiphowqrnnomll^kqmiontpkrqnd|ovpklnnhnrolxmlglgZklikllkxqanppipnvormiqlloppportftopklmuoolopoohwqsnnmr]nloqmhmqqphogprlrktnljpmowlopllglmYeluntlnphjpiornpqsmqmowdlnqgmmsxsmont€mciloillqkkcineenoojvnmpqomprlgngknh`rniiknopnppokpnijmmgjrmlqo{ons}pnkqkiqpoolnnlmolrbllqfilpvjskgilimjolnbnipnkollilppqwombkjfpnˆqknoklnoqkktmhmplmnmipmliioijiditlnpornkknqjholnpohelpnmikkirmlqWmlinmimcjmmnhmrfnqqkld{shotlnnhnpspqpuolilnliopprlkbgxpcjnomionjtlmqjp~okorqqnkpnmlmocqhsmhwfvnblojqmpnqmqmjlrmjlqlmifqoilonmnglonqp]xllqzmrppgnyilln{tppxkontpfqoqknoikq`nlnknkiqorvojemonnwzpf†pmotollosomrlpplmnkhnvpngkpposskxlmqnkmoWqsgmkspconkmmumqkjlmkurXlivnfdsjompkmmqnlmhnigmmonlpklpomkjnqirolxhlopnnrkjmnkkqilgqdnemmlswumqknplmrmmqmmnrqirmmnnoqhnmnmllimtmnmonroookiltnlqpplxitnlmjsxmomoifmpnoynkjmbnlrvplmojkpmkmnommnoonljjnloppvlrcmohju}tn‰nlmompoynnlnknnmoondngcpvskrq`hqoqnkjplorpoulntkknmkqmnmvnmonhnlnnsmkvmltrgqkjnkjlninzlmqqpndonpqmmnoonkonuhomktorirlnnokXpomqo{nmnshgrfkmlnklrmpenmplgqivtkmqzlnlpmhopnjmlqoqslonwenlpknoknlgmlrkruiqnhgpmngkoxknlprkqkrrmpkqjfoomln†mmsmmomuimolqopmpomprymmoouphnoosinvinpqssnjulnynqnolp`jormmrmqdmitgvlnjhhpnnlirnvdpjl{nispimnkllqoonklmollnppznnmkhmsjonmmpompmsnpgjjloppiijml]kpkm^owounnplmmojqjplnnjmlroqmpnkhlopiimrokporqcmollmnmpmmnsokpmiojnoxojoljmqyoqpromrlnroplnrgjqmoojmpnlwpmopnhxmvmonnpqtpnnnWmmqqrknzqx{jnnsnmnjsnqrennntnptobpqcfpjmknjqpnnopnolvwljmntoolmnmqkfokimooqmnmottoopzqilqqlon‡{rmogpmistpikmpqrnpmpmh_mtmtjl†hnsdmmkoe{jqgmnmhkjpqnhmposynkslnnqoo_icopmhqohojnnjoioklnpqlpjpjjomqnjpne{]nqllypqhqksljqlmninpojonopnrnokokpslnnoxo`kmnnorrommhkllolyigqurbolokntousommnnnmoontmm€oepoiginmrjpnln{ltpsfomjpumplhspnlkoktyqocqjjpgepnjjnikqilrooi]pmjlppkrmkkollsnhjnntwmmplpmfkrlrjpomskkrdnmmh{fmohemqlkhkprknjkrnvbnrlphomknnsqnnqonpnkmpnpmjfppgmkloslinrlqjoiirknpoauonokankfmjjgkjksgdpljlmqnnqtrmkm^kcnlgjkplej}mlmljplbkrlsnkpotdfmohwlkmgtfinmhppkgsmhnpmirkllmpfmzlmngqknprmf_bsnmrcjsfyokqsllodrkhgllnmimjrmnrmjlpessormnqlsdgmmtpnoklrdnsolgftginoh[qnhqptonlosmhvllyhmxqornoluiobonllkmpll`mioskfknonojqnsojrnnkknnkgofnlstilkqnmipmenioneksjkmqckqqjgkpgrjubqnolqwyq~cknhrfoXajtiroclehowjuonnpflmllwetrorytnripwlomiry`nngppgttgglzpjVh^dqufhphhsouqmnuksfutlipnpwflipiiurlsklke`kpkorpqhjlrqotWissrmuloomkgooj\pwliatkoklahmqimq|nrpmlgkivpomngpqxmrjqnyn]flki|lomwnrnmqj}qphdtmlnwkrmchljgnftpgotpxq^rpjkfpsnommkuhsukoneptqmorofkomfp_nshqksnmlujool\knpfnoonpqrjjo{nrwnnjjukmiirr}gjdrjhelklpsqmkonplrnmvkvookvojj{pfglkgspsooklkvxo^unqsvodpwsmjnurnohnqjkqonnekfksmus€kjqiijmkononlsohrrvlvofdpvilqpmooturjmfjlkltjoqjqlsllnnrqtrmujonnvkiputnqjjslppgqpnkn`llkaorkoo|mnfdkzmloljujmojfrmekrarmymq}myrimolwrnmnlqononmrnitozplhjf}osmpmnmak\tgroolukqrnnmjnknvml`olflorstnnqoqmhknjnloajjoonotmhmnmmmkktooinlgalqmnqtsvnpnjiknwpglakoqlmdopllnlkoknkopkmqoj`pwwssqlnolmkwlolmklqmknmgslpsnlnnnexdnqzosmpkkhvkqnpnlslnlfpslksooppmppsplmoklzononomqpppqqpxllnmwwrr}nqpsoumhnmhghnmmpnokmohnlyqncygkjpnlqlwsgmhfopjryqnlopiloqnq`mpeqiolermnopokpmhornkmpqnyqlmnnngmmnomrmoro[kmqlonlk^gn}pozlomllulmlm`rpsvlnplhuqmmkornjrmmkrojqqoonljoqopolmooiqnotirpojnmknlpknjotystqnpsouklmvlvsomunpnfkpogbglqkkkukpnn^noofwimnjsiopmmonrwkgqmryqonn{kpbirnqjppkthmglrbomlmjloospzokmrgunnj^mhooqkgnrmmnaulrkqkoonkitkhnmptngllfqlknifoxqtiiloltoqojsrttkqqjskonovrqginmrosllpsojpmpvrg[jkoqksnimuo€kompnimojqisrrnlkoifmlnljmpjnrgjrprjuqrqjklskjooorhjgclnojolneklrithohfowkjonlpohoclriffhpk]lspoklponcq~iqdqojjpyopfknskinouhze`rohkqlnwlpzupnhjz|btplochmshlbkirmncejllokjlpjvkffsnhoonmjhsbjrnklnpemtlipmipjjnouoqkjijgoonlr~jghkroiinknfZkfokpejmqkopdqnfawmpnnqrlhjsmxonwmemgjppkgokmglpijkjtltruqhhptkpmcouosmnrylpqpfrmfillsomjpi[sinkmokotrufnoogjmpqlenmkoknlpmrrrfoltkqoqriplol|kulmpsmmnlqpmjliotrjjplfmpmo‚uqqikpprkslousnloikplnoqoooplosomlrtsjmuoprpjnbsntrniqnnnjhpmkfmfinsnonhoisprknvqojolllmljoq_vomqpqhrfnnslpmrqoqplrwionloqllsmoouptikmmespmmmskntmpropnkloonpflƒpomjxnyqXllgnngmfmmpmlonhmpmogjrjqqohlxreqnorjgqvooolohkoonyYvsiclimportipnknsmlsgoimnolkirstmnkunrsgzllpchpgneljixlkmnhimnumponllnmjvmwlklmnilqjoqknpjpnixfnnjfodsqppkkopylupqhjmnuijxhnkfnfpmrmicnippknsfkfqmqhn|millkqmnqjpumnnngotopsmronhhffqtolgtimhmwmjmm{lkloknrmhpkniljppqpomvomqlmniolomnrlfolroiq\wjkfmmqmnqnnjnfqrmorropnlipnmlpi{tpoopqqmpokcjqomnjnoiplnqjmjmliscpnƒolklpnlml{mpulpmlp~pvrnkpqn`riolmomnunosntrokpionxtilftr{nxmjhgjmrnjqokknlnnkjmfnqnmmfsmvwipkpstoroonqnomnmmnplonpjjgldndprsjgkmknnmmgpgrelknjo}lkopmhkokpnjllhrrnonrrptokooomqqmmlomjnnrkpknmnojmpnqnomoolppllkllylliikmtnmjirnosppnngxwinlnjprtjpomjninslj}skwommmoforsklqkljklo‚mysoimcmglnlmnknnoofonneomopohpmooikoglm{oowlmoikfohnlonmabmmnppuoqnoulxpr_mmmqnjpdnqkolnnpinnupnknhmdrnnzcqooshvmnlhundorxnjnƒphx\uo_omdmnmwkldldmlntikkerjsqutsukaunonpgplkpxbkhpmdkpxqqglsuumxgrj{d}uljrXnxrplkl^c}rjjqochlnlw^cwdiupnrllemtplorhjeiqqgkokjfimmpktfmpsgqmu„gqlpmkezoklghj]njcrgjjsqnqmgvtholupgxliouimqlmektoƒiq^jshinilrdq^_lnjkujrekrlnroljinltnkiiefhrskk_sqnvhhmuhrifmlijn]cgohmjpzr]rkmjnsntnimpmmqmkmpkojqqjowmphklqknnnnkonkbovridŽopgpglmrhqooloodg{sgpletglmrsoolrb`hqiqkj`\qjprhingmoksnnqgnqnsckckkqonummjnmjp^o_nhnrjnkleemrnhhmmiloerohgqdpnlfhlofmvlf\olphgrcpr~pxqqmnilknqlrrjdimlrrplnojgslspdqmmvoljruksksvk`nfqtlnopkkrndqejtpiklmoqhhqjrpnonkmoqmmoomllnmtossjvruekpcploininpmnukiojomioflj[ksontevnppnulolnlgoktlmjnhlmrpgqltnoflmrr]nmphfookqglrinpmnrhwidnnmqmolmpjomcmjosroqlpsmmomjjnphnbrnkhihtrlmfnkrlkprnoqgnpikllormunofslirkbqposlnnopimiuiplmmrhlrmhvmmmknnuopwlmskjqjmkl|pqsmkjmmwnnlfnhrnkunnogliknmmlmtqmkoirjskdovUokokmmoommjroppsllmlln_jn|iq}knwpskpnvuplXlnwltlqplemqmqpkngqhklqnnsoqkr|pmrqtmjjpmmnohrlmphmjocpqhnmmpplomssmsopkooqhtlo‡mh`molppiqmnnstln_ppmmkommtspknjlnuv_rnzoksojmqhmpnlrmpmjmkrkvmjqluolbvfjjqlnnpcr_plmjmglvqvehpkncplkmnnbqlrnoktolnpkqtrolihfvqljjo{mjbmmilqennkixnumolstfqrijphgsmslhmorrjqfvhfqjutskpcrknpnoprmstmdegkqmtrlknsiioqlnzjnkknsnoukonqmvrnfnducgllqmqnrjtsnnnwionopemmnlpdwklqcpgisixjfjkimsnlntqmjsnmmnoqpjahuutpncsmhmh{ogmlnrhlhwuvmlzbqxuptslmmhtlqckmujjmjofnjjlpppqgbmlmkosoioonortpbmpfpskdohlerhfnclpdorqohdpmnlmnrngkfofpcoshntgjnqnopqmhojrkurfisrkljnbsmopmenpqmeiglriompijpmdllliqjrqupmnojsiolrrnonpnjkrjwnjnmgrjknqjqmclttrnffonkqnkppjgponilheqgmsnpernndfkzrqskqkckknipooycrfmpjxmloorodrppljmecqnkouuojmnvoqrtojpvkrl`lnomlskpmem_pmnpmjqlnofsjjillj‚pqm^onopohiltpqnomnmilmjoobogrpnilqokllpporiuqi[knppgnlqollnooloppkmSjdtjrmnlqjnkmloinncpplmfkjoksmnploqommkopflmpsrmkocho^prmru_nkrnonq€mmuqmnmmvmnplohntjrmnloqpnnsqnnkpmpmrspmgsqntpkhmimhmmktnmnolommfhlhqiiqmpinqopinnmmknkmkemlxkmcgooolmjplipmknonfojinnill{lhmkpqopemvmlpqorlm{nrjrfqqm}npjksmliloau…tnnpl|qmnlfojmrlmnvogUontmnnopoznumnyjlo`linlomomeqmnnopmroskmomghkriqqjhpodjoioqddlimolsnlsoubmnjxknjononrsjuvijnlepqooqmloovjmtnltomnogqrpppltoumvpiklkdjvpkzlgltpeon]ojpowlgirrrk`tloqnzjaqmlhdcsdpstghhmfpolnehosmrlnpominosjjku_uomnlnnmgmtofklvptualjhckepfkjwvklrpihmppjo\zmomdsul`jorfnrsmnrknqshloforqjslggjrxksotqioljpnmYl_|menmimripqmheqqmimmspnldqumtxmlvprwkmrsjzhnjmntpn_ulmplnknk€husnlkjqkolourljkhxrmktfjvhzjrdonlms{nmgngpnjnmyfnvkojlmjjnsqnqqq_vmhkuqrprpjnk^nhfmfwsnmreotxrrorn‚yljlrluugjontqoqoxneqtpjimnp{dqjhvmkknkonlljknqmhismmksljonmhkjihozmplhfqr}jumhlpnlgqvmosihhmflzflhqilpgrronnosksdnhqjqrkfnvsonrikflmnwlpexurihtktrsjlhmkmjkpjkrnhtjhmrdpljnnoerssojnpdkpqtqjjkkrimxuhoqmknooyunommrmiqndplmjjwofqnuqvmmdqdslrntfnmksj|or]qmthopmqvptpglrkktogmpvstzqlylokpoitjuwlmtemqnmjslzosqrjoklomnumsqkkiqnmkpwmojpphiwlltr|osnrirtjsnljmpfmkmmnrnosskuiumvpjpipmmjhymkohnsgtmngopqlproinugpnossjpgcrrqislqfpnmloknpjlmncmnyitsqq{xorrnxnmulhjmkxhmkgnpuqoommrqovslmnmlllpulgvfjhimitarqlogjomjluojshlnmjmotlntmqklvnnsjmptmljpjotuimmmennsrnfofmmn`skqo{nlqlqhohponjmokosfxijmlqmimreolpkjwshkgipiqlinlthnqpsxhmrlmseiinpmkfrtkpkriplkprgingiptwonrhkrkmenhntonmmipnijikmiiqpmvsmioypnhosqmvkjslqnlhwsmknvthihng_rlrrpgtumqojnqndkoqjh_gnpmtglhmimfjemikptinldl}urhgzlkkbliqppbmldjpftgmnp_qhjinvoqpsfpmxhpckgkvqlT_ptjohrnVkluhpnkkhojjilkermnolnlnopdqjlzomognymdljmpjjppqwnjnoolqnhmknkXklvpllrxonni`qopq‚okqmffppljmfjnptoqslmnqmocijhjohgjsquimrnnjkpom`lrkkjuqjuopgjiKinofxole_uolnnqlpeokanmgfjqojplubtqiekjlljlrbqpormzqiuobgoljtcunpknpYoqopanlzyg€jchjmkkr_lktae]lkqko\[ormqsdqlmjtfhonocoijzkvmmmmgjjrowiouroliwpuvqjqljlm{ghpmkjhjgmokpvpfr|`ljomhokk^nkicospfojznjkmmippp|nmonikuspxifpOsdsfotloupsnkykvsrtjvkj€m{lwneohppjkpycnjwooujtnqrkqmkpokpkkqqawloonloonoiolmsmvnonqmomkeomlnhnplmqpkbrnlnƒlqmlooopnnmqpmjofnnpcmiinmoqlnqmj`krqitmjkpinjlqnpkmnosoflslntsqlpmoilpmykqkmvmlinqqkqlnqpkllskprqortmmpjpozojiomqlqphkfogni‚kmfmmipnlpjmkxomyqijoqlomqkqjplmpqpqumstbkqrifmrl\rrllnkmlprnvqlllrnpjoauplomkniupksmojcdmirpiqhlptqo}ollnnimmqnwpltjoljlrmkorvmmosmkpp]pmvfmqnjnroklmgmlkonkdildkmbZolphgnpfkomsnnqmfqnkgjqilkmpmpohjopqpmssvngmpslnnlmmintopoqvnpdpohkompmjgrmvkpwtmpqjvZttoornthnkkhtswgqknkokmqmplmmikomlfvktnrmjlriolooq^rljjqnwtjmmpallh{pqemonzs^mpmtmnosoq|pmplqmmmpnrpnwoflmnloqovillnpjopmoqolvlisqkshpkuipkojlmkgmgp…snqpqknrohlunzjkuqdnjrmqhrkkhoooxlkpohjmrmpigovppynkngplmdsrnsjjziqfpwieotrvpnoqekmfloqqskjktlnpdmmrpoqovrihislqnimpurlpimp}pwrojtkmognqhkgkrggqpkpqmrivfnmhjmsknsmlkrmhcmlofomrqlsnrrnomoommn{rjknnlqnjnnphzmenlqniekthnmpkojmnso€lwspjknplm`~jqmsk[\vminpnqmnodshyrlnnysoomtiphvmlptok|hnronnnqnunqnqompo~njkopnjqloqirnmnmlimomluonjlpolono‹ggekq_uklnmoknmjpaompldiooaonmnlntojnljfmktlngmtkulkontoklliltlnlmuon[kklmiofmqoojnnrlioornjnowgmhnhtmyqwqomoljmkvpojpklhrnjudohampphwsolkmkdqltoqmrnijmlhjkmkqkpplvomimpnronpip_jljoppmofpnlrmjrhnpsqpophrrpjfnkdolotqmooorunklorsookksmunovpvphhlsmlklpfuhmokhqrmnkmqvwonn}mpgpfopmonnpkoxqmhrkpkmpiklnnwqbolnonnnlnsprqmkqmmemnnlskqnsslmjmnqpqvcnnmp_slonymmmmmmmijpmlumqngompkkqpokpmmqQtmtplpnqoojgnpljmontlngtonoomklonfasignrlemmjmpnlp_mhnobmnni{oqnnpmo`folorqmqkorptnqlksmqknxlonkscnnonijnpkknpollgonjpmcjkioplmwnqtikjoolojqnnrohpno}mnomtmnoclninnnrpqooqlpmlnmoojopmoqnjnoopvwsnlqm{omgrhontrvssxnfimoosmpnk}knmojdknmmoprqmikmdnnwqfllkmjqqmkerfflntoi_t_lniurowrbnmlnrljdsndpprfskktononqoqjnqjogsrjkpumeinnujrjbhoposqhurrpinqrkehompepmmlfynqmjkqmzimknqmlolphotphlmjglnfhkk[ni\lskqromnopsbltltr`ntmogrlkzojiolvsllkslkllwsqlknikmksjrnonnwhfqumlininrtkmnqolsvqwhlnwnojrofnldjommpmrqrioostmqkmpmkkilovuhlonnjnojmumqonjnqmpqnsocpnnpijln_mfpsmpjh]jqlpmkpfipximnoobqhpknpoxrhjk{piYkngivtnhhblpmomphopsdsmkldosoojkonrnlumiqotollmnphllobrnnnsasnqfmo`qfqiuirqmppnm[mosrotozuktjmomeqmqmokiktmmorqqmdjomjlnlokdmqmofmdomqpmm{lqlq\ppeoijpqonoqkpprpnvnnpllappnlpoklnrrsmfojvhjvlq‹ksrlosngookoponjmpn{qpmprlpkatfp`kqlmmmlojfhonpqyklmqkpoXrrpropj^pplptrppmoohrnopol}gtnmnmsmihlvmrjpprommlploojmirftenglppltlrnslnstquolyepnkmpoolplilqnqtiilnhmmppmmmunjlmmomqoqptqulohkdonf{voqnoqhssnmilopjojonolputhvkpoqrqijjqmmpmkkmupljtpznmsjmnqkmlmmtpomkohnlkoflrephpmvosqpmmlksugnqrommhesjkorimjoljrorqpkvhpjpnkpkgtuepiqnmkokloonnpdjknonomqokoklukliqtpjpnmnqurrrofwonrktrtqoloioolijgpqil_vjylmtlqypt~dpfoonqlkjpithyrllsfhonmosrhropnnwplnpltmlhmpmqmknmnhlolpmkpqurk{droorrnxqxomnflomjqpflpowlunfjl}mmrmojqhpgjohjqjmlpnmfqgmljijpsmmqiqroonjgojnpmnknqrrppimulqoqopllvnndbtoojpjqmnnpjioojrurfjlpsgrnnookmgqjiniphqlmnrrtpkhohuslkurktsjonuomoonxlqmlrslokmnoounhjjlmhojplmjqgfsmoolpmtlkopolqqkqorgppktnvmnlpnlmijpsmyjhcooqmonhmjepljvnkumkolpfrnqnpanitgyqim\pujoeizkli[jgjrtunofnqjmninlmrlqhkijnofglnsqnkollcglcgpmkoqlinhndjrjwoljullj^poqnnnhckklmpplxiojqrlmqorqumjmrgmdntkrjpjiiikqksgbmmfjnmmmhkormmimvkxnog`hvooipohj||kehmogqllthgulsnllonospmrmpohnfitmpoqm\kgiqpkeqgljinrqoonpmtojmkspqkwmrobdmjlnmnqsnozqnmrhnlgnormujhlnofkktqhplmikykpphnhtjqqrssnphu`nkom^vlroqyomnomonowjmipwdgqmqnmqjtnpssvmxnoqyoqijoppprmgpolmlkpqpogklrnlhnkrijrsilpqmqmlmlrmcnlrlmpiunaplojlrqnlrrqomnglhjnnlqornklkixoolnmmyrjqjojvmonkqmmllrqgihsixjjqljqvpjmzy{okmprjbpmjnftrmxhpqlmlngjmiobnldakulksxjqbsrnjiurlplzqqnjtxolitripp€orpomqlhfgnjxvqnqspnqvofnmfky|iukvsfjohkrdahmqsmqnsuomogomjwqq`jnjmrknn_mpgmzsotoxnkpgjukkilqdlojrosimojpvpqpenklpnmqnkpmtpsinennisum{plkipfkpn\ifplunxjohliltjltcpnnppnpotmwppnqmkkquotloxivmun{lounlfhrnnfuxwomlliljjqdripvrttckulnoqqkimcjkiklrploohmkjmprjslpnqqlrmr~hkojnnqskrfnijmhknttcuqnougeqjlupukqlmhvmqmnndiqnr|nirmlolokoqspptjlhjxncnhovfoqqjjehfvppnnkltnnqnnxnipnppughhoootmrsphypklmpmjpvrrpmktfgnoqnxrntjvliprlenmqmjlilhmoprpmnozopmnhnioosaonnfnlkroopknlonovpmrbqmnnpmpktppt{mqjpmljnmpwmntmpmqmigormmlkojkptq_mtfhurkwompmrnnqxftupclkpssoqjmljlZnngn`pmmnifjpsohpcnrmpmqqrecpnnkmitsqjqppmvqrnmtkvroqqknnfruqrpmnlmbjjyloopwvpunpjmjtcnlwrnlnuqkn~ejnqjpjppoltlmpkkjllnonhrpnmtojrpnqrqjnmnlirnfjpmqnmhkmplvglovmloojpnonjlnoip~oqopnilrnnppmqokjolkojpnfptnlqoonnpmomollpgnhgmqmgo|cglkppnpgklumkpomjowsonlrpn{umumoppukmgkphmmmjlwppvjpow[nnndkzlqlkojlnrmkmkqoedqjsjonsnpnnprnnsyhiqnmpokumfbemlswlomfonqnlwsingopmsnlpplqonnnmlnmjnmnrp_qlqnwon]smpmmkdimokvkapyjtokuumlrigmrmrosvjsqsonklkflulrrpqmomprtoipinoqdplxljpkmak^mtikpmpkmoqooivmpuonipmrmhmkgnkqppgmpjknmnupgqlilqlzenmprurhmrnhmjnrhinionkpklnronkrkkljrnklkorkmmkqmnputnmoiqolumnqqqrjof~pnmoitllnnkmthokimqnoiksqtotqaijnqhnnsmpnohkjnljppslijgm_qqokqjipjoopgkssxjjiokooilorpjkpmr|qoplpmkjjkukppjmllkkqrqvjinqnnloqodwlk|onon|qpjsohmnuhptlkkorpidokkmkrliuolnorloskmeptkmnmkxpjtmooqmmrnqmlnpmrrmiqpilqinltpnqrjkpwrwnnnihoqjqplirikgqltlrpmpmozoqotvnmjkonpfithmvusrjlllitmjppilmzkrmksq{tnnmvlnqnhxptlonkknelvxplmrlqqqjcg^lpkolp^lqUnpjwpknkfhoqqqqllinjopmcngdlzkimirlqonosuopnlspmfpnqvnhjurnsoigvqkqqnlglrin{nm{kwvjkomlhfmdlegrhoiko^lmpnuppkdthsloqkqnmhksgngi{okntpbopprmqmqqozsonhoqxsncqooXnngenbkiajmqmhlotoktnvgpumottmQnoznmiylfivkbjmqpnogrpnjhmpinkqhmpqolqkonoksmrotmkrmslpnqjemlgpfaejtknitmonogmnphrnjkpopknpmmq{rjflmqojxmjtppltpinepnrmnpmnlmmtiksmtlisouqoqovrlrnodtsokqmjnmnlmqsmmlhajjnqykmpkklpjorlioollpopnqrmmmponrnnjmnoimqoqppkomlrtmmgnorqsrlrvnjcqnpfpgokrskjjlcnnqpofwetoqk{tkfqlrpkmlymmnsnnkklmoigsoknmeokpjVsnlkmrkftkompgoloqrmpnxwopdbnnkwupngpniiommmopotorlsmpnviphqlqhpmllwulnjskoukxlpqroojlprpkvrkomlypphfreqlhqsmjtizpqtpm{irnupxuuulnopopnppsmokrjrjmoimqpklpljkrnnkqmpanlvnirmtnwohunpkolvmnzqwjl{rqmssprmqmvqorrrnkinplnkhmjstqtulmq`mnlqokqokksgqhnmvpsuulnomnuopjtnllpqqoqjqsjlvrupsqkhpqqomoqlsjjpmqelhsifkmmvnflnpmmo}rxnpkfl{dlnknpmssknmukpqppmpnpstoo|tlusxqsspslm`rruiopfkkqguhpjkqom^mnodnfimojmctpmlimnjyvsqohqmlnmruoomrmvnlmjgwltpquprqyprpmnljolnpiknnunmtmkqptnpthrrraloumplnkwpyhnjvpoqoppmkoulvdlqqqwmleknjrp{tpweomnf\nrm`nptkvoqpomi{emogvoniqsqlkmofmhjpunostmgrgqqostnsmiswiqqnvqlkgl|lh_omlhkqljyjtmnkgnolmOlrkppuimimghqpzkcklqqcqmflmshtimomnmlspnkmlpsoilmlsplrullqrvphkrqthnkqrhojpilhol`jsmlohqjqkqimomlokomnfnfmqhrhpprpjqiqhqgqmlpgnmdvulihulowhrpwisrmrlsvooitngjkphpmiinkmdkpntqinjprydmhejqvlknbrskmskoqnjjlxhlurvmmfotgihuoqoopidhpjmonxjlnjgngnoltklfspgplvrmln}nbhjollkoufxhlg~noqhinxmnoqpwlfrjgnhjllmjopnlrqmhnooioukppmlrlƒpkhrgotnonsdsqyqokkspmorqmtmwwpeunrurpngpsqogkpmllhom|dnclloookkhpjhvljiljxrmnnprlmrjodiqptitquphlpopopnckf|jpmkfvmqnqimqanoksknnlvulnwojlmmijipmqoppzmssmnlsqnginremhn_onfitqlmjlmhjmij{fjjsuyp{oorrklneud}nnrdgltpqnkmnjmio\mn„ngjn|lkluokriqgklpcbmzninllgionnjlmnhnolkjdmnrjjkƒrvq{tiing~sifknohthllVljnkoknlfknpsorlggthicnmrnolmhnoolmmoihmolvjfkgmfpnovhlosbroktlsepjol^mlltpmmm_nmmprjnttipnugmsmmoppxlnonjsp|monlxWnphiknxmtoino€mkpklrlo~nbqldbhherusfounomtk„qrtmlmjptjnpjloqqoimlogjorhnhZpmjpkkpnilppycdonlqcpjlokoplkporolrhjmnknloxszrlmpow†}qvhmnkkrnonlnpnmhnljpolpoyqo{|libmllolnqqnjooqmociok}w`jknklrkvkpkrpqofpmmvpmkijolgomkoqlojnqljqnkphqpnrnqopojmmpklnlttpjojimrvrngnmlpnnmktnppynnlimpopgwlufhmjmolkoonmmplmpnponkkvpsoloikerqosirnslmoporlpnppptqknomeqlnmdpfn{nnlppopknnkkklumknhlptlvnppoimfnysopnpprongtplinmrollrsihoorhiopokplnloklkmkmommrqknoekminjmqomhqwoloqqhkmlokuoqqnpooonmmknmppnniwqmlpnmgjlmmmnpupphmspkmmpovnnnsjppoqlllnpkouklnmqklkkjqunpurppprslmlnomgqmmolpqcqrkpqnymmumnqqpknnkrpsooqnjljnhtnpmlnqlonkskrqlonljokomnomjonnkqprmmjopomlnmpjiollomoqqmoppooojpmpnrliprgnulpknrqornnnrppzmmonooskpmoknskmhpnostpjomlonomspsngqpqponojklqtpqnrmroijkonnplnlppmlmjloljnltmlnqptuk^kpnqnnmrtnltnppnpnnkkhmsnkkkloppooonolpogmlkmrqmsolpkqopiliiflmnsnqirvlkommkplploomlnpkminonsopmlpnoiolprnqfmnntjssnomlnqqnynknppomjrlrlxojhmqllmplmomoonlnrrltsphojnommolnppojrnmqqktmnonmnmnrponqoioooqpjue[lloqlkjnylmjorpkjglmllpqlrvtujnijmjopjliokhptlmknkfrbrlolhnoqdmlmmhrsrlnlhopzporqcq|pjkrnhioskortqqmmh|\pnllmgsplomjqqrppojtqlojdonjhpmifmpnriqmonuklerumormmkgdqqspojnlhpvvsqomgspmfepntmsknhrqplnmipolnoonqipppijasmmlmohphqnlrmpmlsshpnpllneprapnnnojkoiqntghompnmlhh|nqqynnrkjmkkloemxlmhqnomlsmaorllnpikqjejihsctmoroelokokopqiommimqllckpomgjpqsjsptoilmjmnohnkmhpkqilnngpnmjxdlwoonqlkqjmnnhomgjmonlmrodmnqpklpnrmlsuqjpmqmqrqojnjjssmjklkmmlommqhmoji_opnkhojnyjlnmqpgrlmxmntlriwmqoopnlkqosiljsnomomliiqqlonjlfkjlinelmoqnodomodrpfnorso^soirnopstrsmvrkwomvjnhjiqphmnhogfmokjmkonmmommoppqpkmromor}tnqqxs}qkijpngdqeilrtmimxvckfklmmllkpknnlnmilknfrjkmommkqokpnlruinh|pppnktulmomrimfllmrnmmqfknkqnlskllpnvqiwlkkovqqonhkmismodmiogrmron^phqgrnpqmpnnqymmkkjefqokoojokkkoljnemnqnimnkmkpqppoomsnnmmoonllqimmrqkonkopspkmmktnpolonqllkpqqlnuoqnljnjnlmmonnlpoikonirmvphsjpplmqlmmmnqonolkplookqnloppnprnspkpndkoolqmoqoqpplqlkrnlmknoplnnoninopqnnstmllknrjmmooqonmmmqnuqnqsdlmm`lmpkmvmornnpikk{lornnotnrpnmlonnnoqnoqnootljnnonmplxltlpjkloomosmmpmkmdootserssokglnjgukokomdqnvomoqusjqmjgpnsmqskpoqigqgemponmjmtvgjomrlnkmiqonldiowoqmqlrkujqtlpcmkrlpqonqfsnqonlfxplllrlqvrjtkrnoqsloonqqmfoimsngmlnpnmkpwjhmordjpnmlmpmmkrovnlvnnmsvooblntmqihlnkmkmsjkjkpcsrheorslmirpnqlljmqnnpplmmksnvplmhkloknrqrrkmjooimjrplnpjolnrponcnonqmkpplpmmuhnnnqlluklonmosnplmsnrhmprlnnppnohmomlknnnollrnntonuiroodlmlorlmkrjhnoonpmlqqphklnmopoljrlsmrjlnlnnlmoifonoopolunnplpkqmpkmrnpplnoompnnmnpmotqjovrrhojptslnmnsslokcrlqtumnlomljlklkttkpmtmmqnljlgnrompmpnlnmjllqolnlmnrldojmjpnlpmwolmkmnsjnqplnmpkorlmlnlomnpoprolmopmlnnonppjprjkriupommmrnlnmnlnntlflplrnoonoqmopnlqtpprjnuopioillmlmmqjnoljmnnoiqiloonmpkmonnmojhpoepqooolkrposkllqpnjpqmnlipkmooqpolonnblmpklopojlplopmrnvfmo_nkkoqommklkmqrkjohlootrnrnmnogmolpmnnkrloomnnjmljnnopmpljjsqmqpnmlllfnlio|fnhapjjnmnpniqqqklnojoqkokdnpqnimisippnookhokqmmkmnmknmmqpkpnjrmqpokomktsmrhkmjstkplmujifqpcsmroopititmpgvgpmkqnmtmiooqolpklqjqkonqtotruoltkkjmmomeroklimpmtklhrnrjnqmoqinppsmpfgmroslrqijpnnpthkgjrvrklriqjml_nnomklnjkrlipionrsoqwnnpnqclpmkoqmogkloqj‡yfopl{rmkdnjzeoikyksjkijlmmsrf_qt|npnomnkluqoykpcnŠmlvlnpplworkqhroegpjlnijkh|inll‚muixqWoqm`nyohyVrjjuvllinomuxwntglnnnlmjWnuilsfinjrulnkfotnnqnyrcttjfhhndhugsprjvpoohtlvoseqozlZkgoktloqlkmvmhsppegnilqlomop`iqa€jzjyiqwts^urujl|ipjpkqpitvppsr]spqntompdrgmknlsnmqojljjllmomnpqqnlmiollnonnrkmmnlnvpkkrkkkpmlhmojnpnkqmopkmkoprnpmpe|mluqjqkpimnnpmmlrfmwpjlqqhsknomrpqkmljbptkkqpornnlpnmyjmmnqoogrknuosjinpsnrokpinlllqnjlmknqlonnqlomniqipprmmmldnromksnoinomrnonjgrqornsmjqlpnilkomonoonnqonmjjnlqompojsolnllgsnnpmylkojmpnlnleompwnmjlkllnjrnnwtmhsknlskproikrpprlftjmrlagmiwopkpknko|nrjuppsmjoomnjfkipilmprmnosunrlminkkrqjloiqbmjejnlnmmkpvoennptmoinmklmkqrlnnnqrpommiknnjeqooplypolnmqgnko|lsmlloormnmmhnmohwwiknonokllsmjjkinfitjkrmolmiqqnilmrqohinkkkmimkinmpnozkomnolmkkimmqmmmniglllpynqqolpqlnmkmqokm{rnpmmgooinqoiomsejnltnntlpljlopmoojoooqilhjnqnylnnjoornoooljlso^imxrrppugpvlnbwlqmojimnqinpkgrqovulnngioqnsjjlnnnqplkpnhrkklmvjtliljnhkuwkplkomqshqjmhonpolgkpljnjmjkrulqighskjsmoqnimpmqguloniqmmnumokkslpnoeqmnlklqnqkmsoippkpjkmmglojkotritqmqniopqomipjjiskivnokrooltqnmjgmnmspimmptiphdpronjpnlknllvhpknkjolnkuppkkqnrtnljsrrglook\poulompnsolkjopkkqklqopohornkwmlkiljieelknpmlljoguloomlmocoogbkjmprqpkolrqlopmjumnqymvtnqkmillonrpnnlrmpokojiinkiwtonnjorpmhoqlgqroqtjnjrtnprlnsllooninvkpnknmnjtopqgppmkolmnmjmnknolpomroklnpllpnmuroklqopnhlmjnmkiomowlmgklommhonlonmimfnigklmpmkomlmnylnoqnousqplnjkoqmpkioooqokmnojnoooovmllnhpymplmomhkdllgmnlinqplomvinommlpholmtqlinrtpnqmnliipniglpqolpmlnqohkmmkms|lkhnnsnnnmnpommnonnmlnnnompnokmpmomllplpqtllkmklokqjpmtnhonotolktjnhmnmnnomlrolnpooomornmliooponlpprlmkgpmmppmpmpknmlootmlqokmrkphoprqpmmrjslljjnkiqgmjomhrmpomjljonromplrnmoktooolnnmmamjnnnnnmvokoonmmlnmpoodlnmnlnokhrmeopsmliuoponmlutpmrlmnqjoomfpqmmolkkckpionnqopokuprnommnwomnmqmlnrpnlnblomnprqmnlplouislluuonmjojhqmkjnnmipsklkkpkqmkmmlmmnoktkmsrmlrqtsqumimkrmjqsm{ilmqqmjovmgjoknirspnkmmokjovlnnroolnepoopjgtkjmiohijlwlnmnonmluipnimmpmrmrkkmjntnkqtinqopjinnrmvminmkllvmjonqhknohmmiomloprikxnltpqhmkuhminqltnsononmmppromvnimmnppmomjiklqjokpmqkqnpncfpplnkmlklpypnkmfsigoilfksnmnmnllloqnlmuimiqllonoprgstmhunusjxlneqnonmbnsnrlrppkplopmpsj^optmlljljolkjtjvpojwhkooljmmnlnkkkpkokiokrsmnplikvjjlhniqqldorhqlvpllqinxkwkmljsokhmqoiqhpnkmsummkmhpipshqjxknwkekqknkxqirnmgnmltqonolxkpintnomqlruljllqpmnrllplnjmqtkinniqnqkruqndkmnpquqo^oljeqorpnrrospdkjjrolniohnmrpirpkmpmsnhnmkqqoonoktqhxrmopkjorqtiomprloqpmnjpunjlimxohopngnfhlhqljlomkqmommiknnkqlntopieqmwklononokpmmnoiskhpanikdmmlmollgoomqopqldollnqjnpnuhmqupmnqnmoqnuotrqrpZpjohkknoieqlntqn`nnrnqmnqokpkhkmkisnlpmqsnphmnlvplrlpmnrlnrmhpml`plonrnopknmnihnglknpnpoonlkpojpqjlopiluqijlolkqhnoovlonmlnnmfnpmnlnidmmmomkkntqmpbhpmouonkplqrnnrnloylnvnmomrknlokmtprmnlmhmupornkmlmnjonnmmjqoolhomonmnpvmlniprvompojtonlpoxnmjqnnrmsmpqmmnnnpsrnnpoppolonmjpomnnkonkmmnoplrmrnmmlupnnkmnnjnnqolrominopqhopoblnp^minjzqlplnoljlonmnpoogovjsppplpmmluoutmkqmnoknmmsnlqogkqvlmrjnrhioqqyqketojljiqplnoljmmmoflmkppmmpnolpprolpkonknjjlhipjnqpsploqnrmnokpmnvqsnlqlqnpnnoqtnoolmptqqujkpoqndqkjnplfmqhmjpjtrnjjnpkrmuinmnphnpllikprstomkoknpsrsjlkkonrkmjnqlouqqokmmrghnnnlsuhthqsorrkuhznsnfikplkpljpvpqprfsjsugmnpph{njkphqqpllilmonrjjmqnorlqopjdqpqngoapplilvi{sionmsjsqkaqspvlnigltlljumqslngjmqjkimrhjlllimqpgbglqmhqnnlrpkkemramlifusloprkchngjroqummklqlrhrnlmliqmxpoeljjpkdlgnioWplmnojhohinumgpmqgknqloolrmqhpriiglmp{oupqrentfinorwkmlrqpnqwtqujomostkmiioqlpungmjsyjqjhntjpvksisoquroorhpoqnjoromqonjnknmklaontyjfqrthkkprpjlrlkkrrifpofstpopqni}rnhtmjrmolnpmsipqcloujolsljilovndpikonhpnomnrmsooumiqpkskwqmlqjopzjrmkespnjpkojnkqoolhdpmuvjnvuppwnmpmkmwonlvqsqimonoqpomorfnmmloprnplnpgspptfnlqp^hhcpklr}xqponqkoimjnrpqgmlhojnntommjnhomriwomopluosjrqorpkpponmoloikqkmklojnnphshcpjonpelnoipjhjmpnyrekpomoromonkokmnjknldovnmemknhnntrplqrpppnqlnnmdnrotpqlqmpaovpmqwnsnrnmngoiknommjpmsvkjfmqqplnorklrwqqmhknomvhmsrupruvopvjjolqqjltipnkpwpmnwwgrpopmnlionopsmookonqkoqonnqqkqmmnqqninkjlpnkofqkwrnhpnmpnpmjklgmqpmlnnpkmoioqmpnfoyptnnnomlomoirmqnqpplpnpmliqolowkmkomfolnkmoknlrmqlrksnqnntnjoimkimmnmolqnnohconnimnhqgldnnkmsqjlqonrmrfpkiolmmkqnlloppmkqpohkqqknomnlnofllllnnmooppqntnnsnunmlvrpirngogmmformsknrpokppopoujjohmpnpmjlmlllpplonmqjromlmnrlmomlyttipmlonojijlknrollononnxfmmpopkrmnjmqqmqtntldmlmrorplrlnjmhmomhkuonljnnqkonoqorlojmnmphqkmnoktkprjntnrrklrlnhqoonnmkqnspxlnunpxknokoqnmukmnilunkmmpnqrlllntmoerhhpopoqmknmnomqnkoppojmknnmoqmmpiyrpqqliijnmrolqjlukqymjkkpsmokngnloriomkptqlolpuophlnnqngsmojhmmuknnqrpmtmjnnlkmqoqkmokkloqlntwqqikmlqlfjtskinlpsbpjphnrlillmprpjrynnjhntoqkpnmqkpkmnlpnnkoksnpqmnfgquojofnklkmpoosjompoqmpknlpksngmslpwtmojshmpktsltmslkoqlthrhppngkrooglvrkepqqoikymrnlsjnipqoknjnpjlnpnonnlpimqnk\mjmvkkptmltiiklltkqv{psjlmsumdpommio`onlflfiqpoqnslilekrikrnjkliplnohiptqiqqimkmnkunxi]orljcZpantqinimpqkbohmnpjmqqpnnnjkqmgqlgmnkjlkofslej\iotmnppq{tiqpqomfepknnumm{sjlppjklnqqpjoomjkgotqojsirhqojromommm|nxwpmkwmnitpnvnquhkircpiiupmjrrmpmnlslnhnrlnnoogjplmlqmmspolqpojlipmnppmmppoospmnnlqqokmjimlopoamkmmnlinlnmmnnooqlmqokhpopnmrlkulonoqmtknkqqnnnipolpoonmplnokqqmnnlwqnipomjlsmkkkomqlrmmpkppuklnlpnmmlnonpumnknnllpqnokolmnjrlpmnnhoqhllsrnsnsgmlrlmqmmmhkoirkuooponkluoqmnloqmoonijqqnmnmnopjkpnolrmomniorrllnsklnnjqgmhlmnolqwnkkknmmjonlqimnjsoilnsnmlqsnmonnolminmosnoonkppnqqolooqolojmsqpmojnlniomrulnlnmwpplinoloqpmlkilipomnkhpligonnonlnnomlmknnqpokooopnmcnknnomnkplmlopnqmmqrlkntkjqknomljoompkknlomonpqnipmpktnqnoonlimsrolqoplnmknlnnmqqplotpoptiljmprkkrmnlohh`{ploo‚mlxlhmwkqpkogpiripinglflngcqgoootp~qikhqipdmjirmlnnwihomhrmmismlmoimnllikrplkojp^muqgpxispsudnklorklpbknmgjnolqoogonj|jlnkywnlvtqoqfmrgllrpenvzmwkrlki|ohnmjkdoqoklpopmnsefninbklqfkijidlmmolgjmhmqaoppkpljulƒjmoklpbnuvnrldqoipk|grrikrlliqxokmlkojnik}iiojjrenmlklmuookoogmmpilmormomnoqdinojouxnimmpnnuopmokfqnnphlqcqljooppthenpnnqmpmqcpkmrmjnnprhmpjobomqmkzotmmqmdkmpqmhoyoslhomkqzjmjotkonillmolgminiooomgnlpkjmjllgnsurrluppqlllftomnmjmrtkjmeknoqmopcmpjmƒnjighjpsonkmksjmujnlqmmpmkpjqjmmhponmorsjkkgheonfrmppsjvkioomqmnppjloijjljomngrqnpimssmujmppmhpnjponotqjolivmnjqilkgrjonpoholplmlpqnpvqmqoohnnoqkmgomoouljjpnhnoqlllpfoonpnmoknorqomn`hokppmphhnqptislmlrmnsmlijqpwvjrmpogqphlwmlgnjsvhhlmonmhlnqhlrqlknpqnohrppqmlwlprmmnnqmmqlkontnslqnllmprnimqnonopirpmmijhqlniihoorslvlhmhljsepkiujuopqmkkimfvlhlirrnsqkvqqhrkphcqcinjhlprpkns|mrnmhrqfpipmdprnnuimnjskmqkfq~edoqw‡kspnmnminulpprnnns{priokukmpiljhlkukkptnqtrlkonlsvplmojjnunnilonilumtoppdkmnqmnqtnejoprrqhwxljpohmwmljmrqntksnkfpnostgmqinpmkmotkrsykrplrnstriifsmogmplqmtmonmkmrnjppjiofpklooofjkrlm{pnpnpmoomoqmjimlqqopqpikqrokhjpojphnnrloooqlndojirkmfnrmmlhlmpnrhrmsmpmmoflkmhnirolkqlkwmkiqjqrosjplmpplmmnkolssrmrqnjskloqlnlmnpmmnnpionmmmqmonjinllomljpnmppoonokgljnnolmmknmmmjojljohmhmmpknoenknnmojmnnoblosomokommloopolorkrqtomopmnllnglljqlrypsqoquoqowmtlhhofjmrrfpompjjqxpklpkqllvpiutlqovkqmkilngroojlnnrjgkioqjjmowhusrldlopl|anmpfeujogpoiwsoomqgmxmrgolprk~lonttkqoqpknqtnoimkrpqlumdnpooqqmnjrlmloqokrjonkssllrfplmnemj_qjrldqlm_nosopseqmprlskmqmvaljmromlrnomjnfnropmmpnjononpolkjlkmklqhrpnudsrmoltjjmlrektonomlllkmqmtoklkkkillqpnvno|mokqgirqsjgmtmgmrqqmpcmnsmkkdholpikmlhmtnqqkkguljnktrlnolojoopjmqjxjhkonpnsokothpppgtompnonnlpioponimxokrtlpqlxulkmjqqlnootspmphppfnvjlmqosskoujnlocmthkpjipmmsoqvllrlomkqulrgjmpnppqsjjoininnjndkdilkrnppmpmomhnknlingknrllsqkkxqpmhontmmppgpooqmvplmmmoeltmpo`llhqgvorqnikpoonrjoloomikqkrjppmmlgevuqnidqnjmnjznnkofbntnmimcarqnqrfl„mmjlgtokjnjnnktmffnfsmyepmqkknplgilnnnkllnmkwunnpwkjqlnqnglposcltrkhccdmosmojgllkptlpsfmpnphwpplonmtnpnonoppnoslmiloknplkmwjhlkjdppqrfoilqpjphnhmmmlpopolomokmlmwkoolmnonlpqomeqpwmpnqp}omqkikinooklnkolmnmmponomtroxinjlomrnntmqeojqmommsrlljmpoqoplnmlxmobolmnppnqmtoojopmmnuomloyooonnoolomjonmlmomlnlltmrlqlpskprnmpdoomonomnoqplllmkunlppmtojriluolprpoonmnoonpnqmomoonpbmlpnmpgnmrmwslqmlhmppllpsqgomjnimoyhopqsrofrooknhkmommqhcmjbnpoolt|mlrmipojpnpkpkmkpmvrmmlnmomnoroksmlnxqnoq_mdlwlhqjrnlhjl‚gpnpsqukomrornjmpskqinkphbnjolwknjirnrlogprnmimujjtspodkhqlltjjlnjiqwsixmohpnrkrlkmqtqeukggkpqqopswdqyoq„kpqnlemjkgqprpinuolirokjssroremqmgmrjmmlinkkjklrknobvˆolimokjqpppqkfsplmojjaqnjpmhhkiqiqvohpquiqunlgmonwumdklonmbpuogkmmoopeslomqn`jqtn[iknYpqmdm|gwnmxzjinljmnvjllo^njoutolmhplvjllnvuki}yloljnnkpoinim{wm‚lslpoymopnpnpkolqlfjwlokohankqjtplmqfjjijnlnmsookzsetnnllmprp~msmojnfrnnmpjkpjiiiouqmomohng{nmpjorkepemklklkmophrpzkopriqcjohlnpktpunlkqlliehlfnlooqqngpomlmkmnmqnoqqljlliulhmmohppmoojrmtnhmkguiwpnn_jlnklcokpqkhpniknljnopnggjokpmt~srqronpnmosmpnqnoqkmlkmjqpodmxoronvvkinpktqloqwkoskkklkkjgljmlpofmqonketblcknormpoosoqqzehlmsmtkqmnonkhklonqlonliipqmp[oloqooatsrlsqniqokogmoqqnnrppokjkoonunmnonmonpksnjtmlookgnlnqrnpapkmmgrpmmknlkqlolknndoqoonotoojopnllpozmrrnnrkrnmnnnknlukpqinkgpklplmnpoomlijrjol^hvmmomopnpopmmoolorjnnhxljpktotgrmenl{msthpqlopnlqqmjonrmjmmnqnmjmjqmloknllsopnnlpnmhnkmmmlmpojqospxmulnplomnqpiskinelhjqmmplmkknsilupqmnnolnlnknkrlolknhtnnnnlhsmstprrhlsohmnqsomnmonbmwpmnknlmnqmmtokrlkmnmklommjpykrnqsenpqrmormnovnovrnjlognpqpnpppmqlkjqmlkknmnkoqsinlmmmmlpqrolqrjuslkinppompor|olomoelntmmlllomonosilnhlmomiiwtwlqoktmmonkponnnllmjjoppuwnrnmnpknjikpknqhgjmrqpmjsjjhlrpngshskmolljmvssnimkmmkqqdnpoqkmll‚xmpupiiogrell|tnpqokpjrlnkujruupflkhtvqnnvenmismgcussjdfnp`ljgptuppmrkcjqrpqktnnsgimftiirppfnhjemmertqfjopqhlq^qhm]kmloirrfnrbkuownq|otmntqsiqgqnmnmmpvmkmnsqfmnpkkrnloohunbpjwszomjonlmnhulrr{rnepllsopqssnlqkqrongposgqkplqgpkkokmjhpilokorqomkmusmmkpmmoqnnkulnmmrmnlmlokkhmnqqjemronmpkumogpmqnsonsknpmolpsimgpppdrnnpknkqdpwrpokqkinnlhporojollmrnjsnkoilj`npmpnnmjlmvksnllmgopkjijnolllknllqkoskeutmljnwjmllvwhlknpijpohmpnmwiokxmslpnnlkqnojkoogmpmnonpnnnlmnopmhshoktlhijuknpknlpmbhpmoqjklpojmqoncnnnmnkhlrqllmolmmnpownjppmounrqinnjknmnhllmmmjpnonnpnmmkqkilmlsmnonlmonpvlmnonplgpmnrklo`pqkljrmtmmnlmvlnnpkqjoonnoocpmnslolnmnrjqmominkkqhhnmpjjoxomnnjnnnlneoinomjnmokomlnqoinpimmqlmjfnoqqphlnmlpkoinpmlkmltkpnopsloionloepkllpnnqlkoippjnnlumlmonllohmlnjlrtjnpnmmkogrlmlnnmlnjnwogonmlhhmoimknomlolmmsluqnljonlmnvmrpoqgrnnlnpmlmhnptnnommjhmsqpzkmmsnkkssnpmkrqkkmqpnnjhjjmknqijlnqmmjknmplnmgpgokoqiwopnmmlrrmnllfflkrskponwkoqkneopoomqnrovopjjpvrptkmsplsmmojwnhkpmopqmnlmpvmpjmlnnipnlsppopkilhknusknqkpkohnnnqpkmnmolmqmkmqmofmilnoskqoqinmkrpomqknpqmrlpommpomojimnnnnnpmogorlkstnjsjppqmmlvknimolqrsllnminlukqmnqmktnkinnllpnnlpnmjnkmloponnnnngonmnmoopklqkqqlkmmpppjolmgpokoplvnnjomopmsofmnmnpmnoqnnknmqmvtrpmnnnroqsrlnpoponmukmpsroqmkrroojqllllooloqpopkjnjpnlomnorppqolnhnopojrmmlpmlnkompmqmmrismgkkinmfmliorknlmlmmnhlsoqnrolllnlmpiqwnssoplnolohqookrnoklmjlmpgrlmnhlmcnnipglppqmonioqeomlsoksltmoonlylnlomoprnmipoggrqohmipmoozlpglkllppqmqnqhjhfppmqpiojmmkinqeqjmunmopprnporjlmpodooopoqsnqihonkqlloqpjnmmnikookpmmpnlonskdnmpbnmlljkljmrmnlsmppooplnnkojnpntlorolhur{mqkhomkqpmqvpokmlmlinjllnnkqhkqnpnnkmnqpntomoljuqptkokmlqnomjkmjsjrqmeppqmkjhjpmjlmmpxknlnhlgjnknonmolqimpdlgjmkkpqpmntoqqmmlqljnnrhjtnmlgnrlugnmgqnlmhonqnwmlknnomllmqmpookmmipokqgpnpnprnoemllpkmmfnlkomunnqnroompmolmnlrnolpnjrknmiiplomomriqqpksnolqkmqnjosgqjktnoojpmrjqlmmsonhminqjomppstpooooplrporppllqtskollmonlonnmomnummnmojnokomjomnlolipgnntllpopnqmnnqmonnrlllmkpopoxnolknqemhjrkmmnmkonrkfomnnotnklpmrloocgnqpkrmmnnokrpnlnllnmlmnoklommopolptlpplrnommkjljjhpmplnmjnilknsknkootmmrqmneuppnmmlmphmnlmnqpponkpqjj{olmsnonlknsomoppnmmjnrlmppmnnsponmnqlnmrommqkolsvplnpthnorqnkirntnnnnmompnmmeoppmqllkrromluooorqmoolopqmlmsrmnnpongqqploolmjjnnkpnkjnfksqnmonlipkionmnmomholongopnknqmolrnoknnqnnqarjomjlnomokrlpnrqtnrlokukjuokqllrmvgnekpjoqnrqmpomfiiplilkormznnqrolknnomvipjjniololpjongokmlrjoiogknkrkkpnswmhqkkpmlsflkokwrtllqnmeplnql`emrsvoolgjlslirtvnlhmpoknkkollnmmfnyxmunlnnijonpomigpsmrnnnnnooilkjmnqinqelfnovoptnlihtgnqllsknomnennolnjlkoprpmrpmpslokyhioqmqtntkvolmmkkhlgqrlonppnjoohmntpomokljkmnonsnqkonlpmpnpnmnokokppppogncmolmopkwkmqonqnoppmkosfqovmnlmqrmmnoolnmeqzrkjksvmmlljrposmlkjmolqlsnhpknojnjgmllojpwqnnppmlnnhlolmiopmokppomopnqmftooynqmpulrolqoqisumoxjlsqmqmooqnokrmilmmiomimmpmnmpllmmommlonmhmkllqpjoleknlolgfmnommpqmpƒolqkwojkiiktgmltqmoqjolpmknppllkokxnlroqrqqsulhymrpmfqqnijrnqqqmnooonjnqmojpflnuummmkiormrpktpkphaimnpekrpspnnhrrotqiqymnmmkhlmqoojnotljlmnipulolikpmpqjnqopnjorpijhmmnshlvopmqonnnljqmnnmolcipkolhskktrtosjqmmpsohppltplrqwnnnkopmmeunhknnnlsjkxjpnprnoikumkx~mkij|kjmhopnjmlpjnkprnnotpnryopti~rmpjmqngiprpqƒoftsbonqmoijogmrjnibokonnmpkbrlqnjrgj\qmpulsljrpm‰ovrngtttunmpbqspnpsooopnpnijoZlncitlqhelprohlntmsjowmtigrjoflurjnhsonmnoqommlklpnlnlnhnqriqzonlmkppm}ppomlmjjjmdrmnklreqxnlmnlmkknvpslnlqolsqopolnljndowjrrljkofspoonplomimlljrqkqimlqwooopoooskoollkoqojmklfmkpolkpnlmmcmplknopmonoorslnsjpuknmrqooktnpsrmgmqomumnnkmonginojgpqomhroglolqpqhpnkmlmlrrnngmsoqrjmonohkhonpqmxllnoopkonompnhmvouliloqmhsnm^pjoqoqopqmlmjoplrh`nkxonlllontnilpqmoiompiokppmptpnqornmmnrhkrlpoilsnplmolrmmhZmqgrqoqpnrnuofmsnmmmpnpginnrneoondoqk_lvoiukmnumdosnionpleqjomkqkqnplmq|pnhnoohdllqqirvJnelsolbihqmolqlpiippoooroiikoloqllhmkmlmqkogpsrojtnxnmhlpmpqmhptpojnmoollnqipsnttnjxqrpodnmlpqpqostnourvrropimnmo{nploentmyupmkvqpkcmhikhokknjptjnnkmxpemwunkposknoomnmplnopjmptnpmnmvmqkonmqpnmponsofpkorllomokkjhmpnp|jmokmmljorohopjlmdnpqqqqiqrpmpiqpmnmompokoholmlmmfnqruqjpnnhqinmlkroqsnklnlgmnlnrnoovolpmonqmnkmoknnkknonrmoqnqoqpnpqnptjnommnsnnkonlnqmnjnppkhsrmmtnopppunqooonrnkqplpmmnlnhonoqmllkjmpoloefpqnmojmnlnwnopnpknrromnqqphlstmn‚nkmqooupnnmnmvmnnoohjkhkrromorppmmmmnjomppqmlpovppmspjpljmnlkolrlnrnrrmnphmnnqpmqljmmllfmoqlnpomnmmmdnhomqnqnhkllnmmrnpojnmnnkmnnhmpxmlmnmlpmnjpnllomkioonmmpnloomihoqlnlnompovlpnppgmspmlnknqlminnlokmlmmnl{ipnmqmrloopbrslopgpjjooropprkpomqpnklvnnmkkqsnmolnsompljopsjmlnprnpnkofmqiprnmllypppnkmqfnmmmvsmqollpjikiqonkgimqnnqpriqomklknjokopmnhoiljhtmwsppprkkrormpnqmjqnonnimhorlpplonqnmlhompipjlnnnkqppkmuoouornhmsnnqknsjkjlknnmpmnmmmpjoolllnqmoqnnnmlovmunnkmkmolppjmslkpnoliltqlmkksmpllmopnjppgsjjonqilsloqot}qopknvmpsohmpgnmmpspjongmpqkpnqƒlopnnnqouomhmnqmoiolopmorpskljosjjrrrqnroqqxllzfmipuojjponouhmpogoriojmpfqqplrnoqqoqkjlmmnpklntpltrinjisqiiwnsmprjprnmskupmrqljimnpuhnlqjqmjstqppxdjosltpnlnpljmjqmsoogplppsqrniqoklkpmonmlquqomlqookumsmrjmnmkmnmnlknnmppoomrnrjlqmmfrofmknmnpqpmnkdpulnlpiunfkosqxnooknnmjrnnpmtoulmujmmqkiskupnpnmktlwogqrothjsoqpnmonoolsjmpollgnsknootohoorplqxmnknonqmeookmonmlrppnpqerroolotumnjrodllsfnnmmsgiikjqkomnlklmtpkjlrjiomtnnnqonlnnotnllpmomnlnnmsqmlmmpolxsknnqmumqknotkmvpponnhqkpcnqoimqqjcjskrkgmtqsljun|enlwmkhniozjhurnnzmnqnpzp`muqrjoliijhmrpjppwpmspqoiosojjilbmjqff`vUkccq~bqnmepviqmj`pgnrlvtlmmcjnhjnkolpjrnoint{odkliphnmpcqojposomjlmrplhnvnlmcoflyrnrhoovm}hptptzonnikwrknjljogglvjl~nlkrrtolnqlmqknhhqonhnoppplmkspgogodlljgmokoerlilrlqgopnmkmkkrmpjmok`onlnkxojnoonpsplokojqiqhmpminomquknqotmnjponnoolrjommkjtyqyjfonqitkgfhlpmedpnklokjthoovlotoojqmjskjsrnirkkoppmqnnmpjmpsmulmltkkpjonoqoolmeqnkslnkpkmnpqqpoppntpghnlqkpnjhmjkplkqmnqlruhqjnnnjzkholinnrlklovjnqmplojfpjmjcrjorkpmdeltljwotqxkkiwzluj`imlukpokomnlehulto|jlfhlnpgklfmgrnmmojbkijptilkjqjmdongpsnlqmhq~nmpqlushkfi{nnv`qnxljjhqplopjmjigzroummkpfhukyqljvkkplpokgqrmi]onxhpkvmurhuigtpihknieobmzjiqkmomincxqjinbpn_jnqhfpnhjvqyqqshnpgpmjmohmcunrujolsrokknkkkplmgspgmssnopluistfnmpommpjoomlokinmjopurormlusqqnmjpnmrpnrvmndknhnmimmdkqjjomolkltjtnommoooonomronnnrjjtlnolrjsiqrmkkrskrlnommpqplkokopmnkrliimrlnpkknrknpblmqmunnmrponpsnnnmokmtrnolmilsqrnn|mmvmejpohqnnilejmninrqgonppqtmkpommnemojlqgkomlplknpknslmonposlonmwnpusqjkooiorplokklnonpimlokmmnoprmklqtmjnpmfmniomnoollmnjpnnjkngpqpsnfnkitpnokumjtklmompomnhfmmijkjqsnlnqmokmoekqmmoolrpnknpmnmrlmkgroloknrlpkonfptimonnnhqmontnnmhojqnpmlmjljmkq{jknnnojgqnjloplkuqqllorojuolornqklmopgonjmkrphphqpkoklplkrlmhomppokppqrjnqnnmqplurtkoplbsjokmlkkknnsmqmntomnoknlpmstpkonoeklgkonqolmlmmntopkmikstho}omjrmnspomkmpnpnnmmmnppsnulrkonotomollnmcojklomoglronpmorkjmolslgooplkglpnopllnojpplmfnomnpmilmnoqniqkmjllxgknnmimoplonknpmmpgnfknpnorplklqlmluophqklmnikmkoompiljmmppqniokjlmnoonqojsjinnmppmgononmpmnnkloioqpronkocmoozmommponklinmpqlooknipmkonpprkmqnmltrrlzolptnnhtpmknommokomgmhhpnimrnfhmolommnkorrkxnppoqsnilmrnpnloohokmlkjosknnsjnkniqkpkeitrnkkomlmlunpmnqmpslmnjnklqonoolnsoqeqiknrynmnqheonhtonmlkmnepjpnliiqrrlotnnpnllnullmmnpormponlorpnlqnmrknkolopnomnhrnoqionprrphojllpmmjomoppolo€lnsmhlmrlohmkqrkorsvsmtnqynrrgproqmnqollnpromnmnxqnnjominqnnlpnonrinknompnmmhkntpnomqnowqlojnjookmjjomjqmimmmhsroolnmkqjppmlnsknkomihjnlnloolntloprmohlvqmmnmolspkzkppnojopprmpjqlknmqoljrnoompnjoumnmnoqrknnqonmjmmmorjjplkpuolpoonmkmoopomlnnjpojpknkpkpotkmmmtosoplpmhopnpkeqpkovkoxpsvomopmnnkqnkoknkqnpoqmhyomhnlimslmpornmljjnspnmpolokmonlnqlsllmpovknnntrlnroohqnlmqn€snkokmrmtoolmonhmnmoknlnlknqomzksphnokkltjqjlolnnqnmmjklksumpnonpnnvcmkmjminomnmoommlononloolmmjnkmsnhmnlpeltopwnmhjnnkjkoolmmmmjnjnsqpqoopmnjjpnpuoimolmoqmmlnnmnpoopnjmrlpnqmnmnpiumrpolomnopsokpnjlqljqpsplpmmosnglsqnonhsqopmojnlnooquopismhomjnpnklimplkqnsdgpollokmpprlpngnjlnnksrompnpofmuksknqnhpmmhmmnnskllmkmonminmnmonnmrsgllnpjmlompopplropnnmkkoqpljsjmmkrlqmonmsqjmnjqqikkogonpmfrilkookmpmirhpphinjmoskjompokwmghklomsjintkkoolkqnnppplonckprpfifjnnnhmrjpjmlorsumolopglinlxamkcjldqllolcntknuokqsrsokspnlpllrpkjuoholknmmljilrmjorqtmdrcsmopomdpkodnokpqppljlpmdoqqksqkgmksnnmqihnrktptjtqrsktsmlqmmunpiooovqookmqjkonklojmvhqqmkjnplqpqilosmolsikgollgmkqfoqmkrloissopnrmqnonnlvnqknmnhjqflrpgsmjmhelwoqlqnkilnmgukklmrutqjqsookomsmqkfmkqrlkkolirneijjjwmmlmkjsqvnqnnmljnnooorptjnmlnloooqooojhrmlomrojjnosnvmlonqiomjlfginoohktunkprpjpgpnnqnemknlop`qlsnrhqkmllkjmolsoironknqplpotjomcspnjmumqmkhppijqlolmpqrkphhrnmnilqinlpnjjjponopmjsrnotqpomoqlpqprcokplnlojmniempoqilolnlsnmnlsltuoommfonotovapgopklonngupompktidjqwqqsmpkmnnkpspnikosqqhfmmqpnmmukpoommnpknmlnlonnohfoonnoohlpioqkwkmolglqgplqolknqpsltroanjownookpktnkpnnikjmnllnoplspqtnlqrtslqksnmhmpkqouujmmnlmmokmqpmhoppjoonpqpmnliqkqilroqnpnivqlpkrjmmqlmoprojonnskmqdnmpkqopmmjzosoikpmzisnopmlaoaouqmlqlpppiotkmltrprkpnmjmolmnlinpmmrqkloojllsnqmrlfsosolnloloqjpngmomkstksnlnnqnluipqenopnpimplnklprjnorokphpmfnpyqptmjpnikotnknmnlrqkoookpppmpsnodrfkmomkmojljpkkqpmhoqpjhrmnhnnmproomrnnnpklopllnnqqrmjnonvnjnms|qnzmmpwotmjnmngkoonppnpnlpqntmogtinpnoponqkjhklnnkprqmqllmmvoomnjqlcmnqninmllpnkpqkmrolroooomnlorqinnmsmmoonoekmpmnkojilo|pospvljlvlnrlgomlloinrnqmohlnomkpjnjvnmoqoipmnnplkloqmnmpomomlmonnlmlolhllpqrlppnqrmplqnpnnmlmqqfmhmtoqstmsopnumjkjqnkolvpmmnlrqslkpknppmlqoromnmtptkmrloilnorijnjooookopmfniouppornronmcqjoospgponnoulnptlmnmkoqepppmrsmmsmmpmvnmjpmihnmknmvmpkrmrjpnsslqbmppnmoslllumjlmoqikqjnljkinnplpjlolqmrpoqlmlnnlvjtorllnsrkmnksololmjjlknohnnmjmkmrnxnmmjoflmojqnfpillsmiqnsmmlpkmpnponnplnppkmsnkkppnjqnmmqroiplnsmlmosmkjmlpkkspqlkilonhjmloinsomnlmk|ogenlnooqllpomognnikjooonmmyjpmseorkpkoimkxgllmpngnnitlsmoomipmmpoqpkmimninonunhqouinjkqnnmofjjrlnpnhlmjopovjpvjpmtmopjrdqmnbolioslnonropklpuqkooooslljunjunpnillnldnrlpmsolu`nmmoopijnmmpooojqrinmtmsmomnlpilkklorrqjlnnplnnmjnngmpmnfdlsokkoootphooppkhkoonmmkoqmhvbknqjlxglnnlrnkinmknlglklalqfl{smkolplmqmnormrjplhnoeo`jjmnktnoloknujomskrngmrkejiotlnspnlqocumoovsnp{nkipniqimnjihlpoqjpgnmsnpnikkiopkqmonjgqvqnxsoqnwogrdsogknqmnshphItgdlnlnlnompmrilgnnkknqlpmpqhnuknpmpkmmzonntmkjosprpnlijhpkontklpamlqjtiqenlnljmnlfroornolemmqpknpkhmkkolonqqsmhlnmmngqjonpsnXlqinlnjllsql}ogikosipglorikniomqoovqxpmpopqhonlmomknoonnmnjpqjqmaqqllplnkkzpijlopnp€gmunvmooiooonkkjnpigkqmmtpsmfhhnkoplrlnplnnmktokononnpqqqnwkmmonmsnokpmmlnlmpqlmftkoenmmqoroklnfmqlonoompmmmonlmfvstnnplsmmmnflpomnsnmllmmpqkilmopkpoymjqpnrlnkknnpmnonovpyhnsnrlcmorljpnnlnomlmpmmninosqlojtlxoxhcufommqknnnpqmkonioopnktokmkxrclnnnnwnppqonpnpoookollpbmnqflklpqkgnnnhjnnhmhrmkmjnmsnintllpkmlllqiopgornqlpnolnkjnorlkutnnikpislomllflnoommmmnlsknorpmulqmkoonmkurnomlpmppqll}nnlnwnplpnmlnoonomnqnqmhorqllmnmoroonnmpqpnonkniojpripinpmsphlmpinorskormqqrompnrnqrtqnprnqomskmrmhhnmtlmolonnmipnmhponpjsnkliloqnnkpkmojpnnllhmlovkmonnkoqnmntmeqbusnoiqjuQommpnfooqwiq\pfocmjlilnlzqseupulisnsknplqqqrclljomornqrijnqvkqoqmop_tjmnankrkiimrlyhfhme|kzkoq_jspjmnqrjobqtofkmkdgiqqhljjhhlkmpiqliomigqoymqnmohgsqfnjihavjfmikmkpnclrsmtoktqgwlolr{jmpkjg|qrhodfrhskhloieffmgjufnnalwkfmrphht}oumov`selqnjglontjtinigrmmk_lnbojljvorlhelnmsonmisqotmklmlmjfmfnppngpqhgfrljxnpjkolofnmonijlkmkokkolqunnpougkospiiimjojetsojnynnlqkmfrosptoflnnlnjpjmkioommjnnnomkmkorojgncnqnrmlinhlnqonlelnoinmkppjnqrmrpihisgnxpmgpknojgngoikmnomrhljkrkmpnjjmmpqmmnqoniomifrhlsioionfkomwoqknkdonjnpenmrrpqnnpojkppqrlfokmrnnpnoolmslrmplmsoqoonlmij`mpisoompnnpsjoqpnnkilikotsgpmtpnknmmooklrqhijmoiopqmmmrrsmfpipromsnnmiskqohpmrmplnrkzjlmpnpnunniknminhojnkufillnlnnmnqkmksnpoffmumgiqmkmlplqqsinmknonksjpjl]pjslkmnktqpprnomlmspnogkspkoogpmdkhjlpjlpfmslhpiloplopmljmmrvmpjimnrmhpnolmjlkflnopsporonpekjgnr`tjbmpmknkmksmtirnnnklnkoowmrpjoovtlnjnopndqlnynokqnjpoljnkojqnljnpm~qglqrnmmoopqiolmmnkqnmnlqinknmkolnqppmnpmenoqpooplokoslllmtqtotplrmtqimcsioojimprmpppmhuspmilkroqpmllmomnnnmoqorrnornnoksopamojmmmkiigndsmqrdjqroenelntennphkrmnimomgqnspqlotsjsljeuomjlmplkkmmlkmjmmnllmkfnnlopfklohlnomlqmqnirpqlnfpqntpslomennllmhslrkoejvrjpnlpnglkelsrolifjplprlqmrrpnomnlllqbpnqjlkrklkmnpjumlmjpipkjstpkilknmpkpmolmhklomiqpkmjnjlompishjhooosonltgponnpqpornjhmpllojqhqipmnpomrposilkpolnqpluiinmjnqpnjplnposommqipmnofqnupqinrmqmpnkjnmrmrmlpkkoiuqlmrsepknonmllkhphllq|sknkphjnprorninnmorpjkikojplpnqgqhqgookooojtkptljknnjpllmmqhljmonlqgnskmhlomgkomqojokooiploonohnnoprohlormnojorhvmklkqgqljpkpunmnlmoiosoqromnkqnojlfqnjnnkvqjjiolpmnomslooisnmqqqnwojntronfkoomnpnnkiqenjmrpsmqnhgqoonmnqxkpmoqpmronljrmqkoqnnklnqnpjomnrlppprimmonqourklgmolllponisnogpnmmrkncokpmrolpolmmqnlinoktppninlnonlnllpprmplnsmspqpnnpnlllemtymrvglhmmpmlvhpqjimooqnomjpopqnqnkoomlsppmonmslmpplnonpmmmkjlomlhlnonprlmqsoliqmlljfnkrlqjoomkpmnoommphnnplnjhponloklmqoomjqlhkjsmlqkotmillmpppqnnkoqonoonnmo}jmkqtnypnoomnmjljjnxkmmprkonjqpoopsqnonpnhpnnrknmrjsnrmmqqonftjlnnnmngooqnmphmpqiolommoomlqjjtohkollqkkpfpnnrhppptmonmpimoltmlmrirwmpnmjqllmkollnqmlilrtqkmkrooomlqomtjqmolopgmqkknmmpjpqokomglslnofsoisrmnllmnlkrhnmikkmipkfqqniosokclpolnmvnqgknoriiorlnkokmlmqmoumqsjkofomnmlnncfnloktlipihinprnnohjloeqpjollpopnqmklnkqmiokomornjkmklomoqoklnklpllpmonlrqklqmrqoqrkkjlpnjnpoprhjkmrrniqpmmti{rnuprmllnqprtmsnunrjlslqprlqmlunoipptodtrtplqikslqovljotjqilklllqiommqsvpljrovnmhpqnnponjljj|pekspimfjgbwmpymlmmilozrlmpmiqmpkpppigsompnmgqqntondgpoloi|ondlgƒgmpsqqbmsltm|imnomiilllmjmlompnojmhmnmworllrq`niklrqutlqopppkonqlncnmuommofllfmfgpqiqknthtmprntllnpuqgokpjl`mmnprlyqqljkprkpnhootmjmqjqhpnjkoroomik^oqiloshndinn{nkqmpmrtylmnkogmqomummiloqpnromkttipposktgmnknnnjrmunnosnrrqgpqpmmjkjkkljjlmgpvrpvchqsqwpoorpimmtgomqvmplpolsjgpmopolrirqwnqkkqnpnoskrjrjroo~onjumpnmprlirqloonnp|opesiplnoljjlqoplqplmgmmkploprrlnnostmnqulnorlnrothnnocqqpmolrhnjmlmltlcmqhikkvgsnkgjllrnqnmnhnwlgoipm]nomjmosmwnrloplutptmmrjlmnnnjjsjfnhnlonknonmopkolmnrpjrnnhpvjqkmrmommnllp}sdwpn€mootjjjhpimiqqpoujiptqilrpnqlnkktjnlilllmohemmjmqlolqplmntkqjlofnirqpnllkqpgmhfoonpkknvksgtvmklko^srnkkoopnslimnj^kqkmfpbqknnkoomipwssstrpisvmqnrnniphonolok`hpmlpsqiheoqkkjngnlpmojmmljmreoqmkflpkqsooronknsgoaomanqnmksmndpjpjqpppmlsonjfqsnqamolpnllmqqoqnmodtqpfoglliuphlrnkvokoxouklmrlkmqgolmrmilmjonunrlnijnrsgmjjmqlomminktuoopppplrmmkplnvckmtotbifmlpoorlmmipjttmmlkqrmumkmronnlmimrrhnqoqpqlpqsqoqhssmonsnsooqqn_npphsncgm`inqhsntqpcojnqprpopnhmgkkpnlllrknmoppjlcnepqgiopojlljutnlmmorprpqopnnnsmqslnudmxohgvoermw€nroqplojqmrkdmmnolhksmkk€onvnlmjosovnktnlontmogpvllqnlnojpojlomippotnmqnfgkroplneoxinjilqlpsjmnnrlqplhhionjslrnmv_opkktnknjslcqlplrkkxoomlmmlolkpnklninnpmo~lhnplshflmfqmrqpplpuqnkonzornnmjokf{olfjqnjlqjmfpppmmjnmnommlnnljllprqntljunlkvlmlncllqnnnnqnclrlmh{mmjpl‚jrpqmodmoonpmkmknkemrklunlkoromlkmmtmqpkrppnrslomkrrlrnqnpojrqqnonslpnnlnhhonkjoopsjktnnppmp`mmll~pnmqnmqhudksoornxrmiollpklpikkrnknrmqnsmhmqujcllremhmorgqpgpqlemplsmjercslmjnjrlqpmrongnkngonmqijotroonsnommniqrhnnlnnkpkqlrmsmmlrulmjofrlspllogornhlmopsnjirtllpioikppojljlnrqk`ooqmiopijppjljmqrpjhouroqnkqjmnmvommmkrjijolptmqpnirpgrlo{knpnmvkjnnjomug]hvmo|nrpkkmknrmsmmijnnkkonklnnpqmmqlporqommtqhnmnnakkmfsqmrmlop]ptncmnplomopkklnommlrmqcnelnenmrukmmgupmsrimnokniqmokkprrphnmnlnrkleqqlxnooqtomltoglisglommrdu`mmjƒppnmoljpkmjinlkpqliosnrronqlkmornnnnppfpnnklpjmnrrkeqnqllohsrmqqlnlsorjlotonojqollpsomqplmsylleqqfsmrpljknltkpknmikoprnqpqopqoqimphlplqknnlnoqnmpfrorpnonkgplnhqnmtpsokpqnmpmqmuvkponljrpgnmmrupeoqnihomodknroomkoqmyktppmqnnnojspnonphksrjqpopnmkronwnmnovosoppknotpllykmvnpjpqiloslmpoolklqullmotljpnqlpponnnokungmtporjlpsoqo„klinlnqqipnpmlkknmnoooemnljrrllmnlplwqpntlklrpmomskkpmosnmpiquoolntnncmrojppmkkomjpofmulknpkrontkhofqnvmljmlpqonnnlpmmjmgjmrrljrqpsqrlkrmnlpjmjpknokkknnosmphmnplnrdmlrnklphmologmmnqkoqnnlqojtslmnpovoposlonmmonytlkpiplomjpuqnnmfkoqnqjnkluppnkpjkupoqrtnonsjomvkqrgnprslminmilipqgorjmomsprrsnsnnrjsqjnlnjopjpomshmoomlrfopqmpljlnnkoolonkqqlgnmimnmp`rqqokhmnkmpllkpojpqjnuqnpoqpnmnkmnm]onqnmnoonqqdmqnlomlnnmmppkmomlnmmlkoljolmllsnmokmpisjrqjnmomtnkolnlmngqkjqllrplmnplnkmtmqlmqmlmdppjonmfokmmlmnmrnnoopoilpollmpnsnnsmqmlnjjmtlonmnrnosolmprjnnknonlqkmqpnmqjpmnlmnjjmlmnlmlnmkonnrmotlvnninjmmnnwqormeljeornrmktflkphgilmkkgilqmpmllnzqrplkjvppemllbknrmojmtdkgmrkrqfklgjukpliknnllwktndzjolksppjfvnlpnpjqni|klgktiqljqrspyllsvphhjknvoinmchkliflmjwmjmnixonnrmmfipiukvngwsmhkqgjflVoq]jonkhnnokxuivtpkmiljkokkuphloWmqqrknpm^kgsnoo]mmkpsuirlqnk}khrtjrjssklypspjqqstoqplpmsmkphllmionppmqkoqkmmqqmonnnlonmpoksnjlptgnojmpioifspklljmpofnpkpmmknekjnojkmnmlrnmrlliqro|jnlpniojjkponnpllkummbrmmpoplkqgoqppookluubnmqooqmqommlogjllkolqnknnpkqkmqlomqnmplqpommngslomlklmnprnlfmmtoooqppholooppmmsnlmsnomntoqknlpppnjmmmpljtqlknpqlqnktvnprmhprnpmoqpmmipksknojqolnlminnnooqomnppkjmllsopjop{pplfnrlglmlmnnlnhomypnoonlpultjwjlolnnmlloplrnnilnqomnommmwmoisoiorknpnmqlkqlnlolnmxlspmmoplhjkqmqnlmspqmnqrknppnrmploqpotlpinqppnrrppmnuooqnpomnnqoiomlnqhpnhlpmqoospemipoinnooppnkppqlnkomltjpoqopnotonpnsrfqpprmtojucfhhokmlysqnpofkiiplinpnjjnqspiixrogsk_hymjtpojhntplqqnrnkmnopmnormnjmnjvmpjtokektjimmnkgrmmkljonrtlqximoriolkpmjmmqnihgnnjomlonmjrponmrmnnrƒrqpmrkiolfoqmqnlkoiobrqrtpomslmoolhnnhmollkqhvnokkltskjlnmmjhnrmmklnmnrkltosonqtmnknmoposrqmjnkntrnmupofuulmmnduoltkomkjoqkjhknrnwnpgijposmjnljrogjnjolrrfrfpmfnnnltmkolmookpllnmoponnfknppfmjnlkqljpmropju…lolmhsnqgnmmmpnooltltotmsmookkeolmsoqlymmjkkjnrlmsltoqpinklmsknqgpsmnqllipnjlpjqqmqonokjulqinljkosnuolprmlnnkllojrvirhjnsnoimtoxtiomljnlmoomskteklmlqkqlqgimeinqnmanmosoirksjttilmqqnnslrlmkmgkjmqvgonmknljrohnelmwkmkiovnnqiqpkmgmnhhfnnqlmpmpomqpslmngolopmrhhlsktrpmpijnouokkcpopimllsllqrumsllolpirmilrtolmkkqm`qmntnnuflngjjpdginjohohnnpnoookkrhqmfksekprnjnorjnmhplonqjepnpglqolimllipkqkpljojhpomknmhnedpqogqzpootpplhpmplvnoqhpjnxonhm]hjollnngliqplgn^jocimplhejompeicpmsfnnnpinrpmjinqtjqpqjgppvknnnaqholkljpk€juopnhplphnjmqkkqqokmohngonnnlouvqltxnlsltnnpmrilmnjfjloidhllnlzprhpnnlwsknkkppvjmkrqselijmtflhlgdimrmodpp\ononjklnpouoxgilmmoalnmmllpnmfhjmnnqpkjipmpwjjnj_sjmhkmlllsnomljnlpnpkkqpruppommooplmmnnoorkmijsollrkrnljqgjlksoorrrpohjpppponkomsolkmonrmkoonkpomsnooqmpnknqtmqomkurnminrnqnqkgpknflplmpqntqjnpmlomrkqroommkrjomkymmppnokpjpnppkqnmfnkjloqqojknslqpjljpsmqpqptknlqtsnmmnqknmlmrrmpqqqkmookjokmnrmlmlnpronqkkploqnmoflhiwllnnnkpszvosmmmooYpnjqomqnmkqoflhwposqvklhqqnmnhoheonllmnmjlnhqponuwmqlqwhlnojlli|moqhnongjspkpmttrnyqokpjgnqqrsnmlnjrnlk€kqqprokkmomnojnntqnripmtpohprrkiwqnmwnlcsqkpmoqvplvkokjelsqmrgmpgqynhtlefwpvfipjpqrskltvlekoirneoonmpljklmxl{pkqqlrrlhisnmklvrknrnimlonimqqjoompoopjqmjnornmriqmnkpnnksunmpmilonqhrkxqmpolpmrmmknnojommqnmtobkohmrnlqtpqlnmnqqoxrljmliriokkomolkklonllnnpijprpnqrgoqppnpnrheipnlphmrjjomnmsopmommrhlnoonjmqnoumpmlmhijqsnslsmkqmomonpfnninoumqkplumlkuomspmimmnjnookllsnminplnoompooppmrokhslqlnrqrmrmmkoknrnklvnojkomnnplpmlkouopppnplqmnkoormlfkkslnrqlmmnnkmpnjolnpnrlmpllnlqmmpuimnnmmpnlmonpnmnmmtulrmlqmoonorqsonommlnpmmpojlrpojmppvhninioppnmololpqnmojqmlioknlnoopinrnrsopogokqmmrkmmmejmomnpmrolnpllpojlkunjqltoomqnlkmonnlkqnlgjgoppkoloeoknnljekpqlsmln€wlipmlhnimrnpmdspoipoppmjotmoqmklmqjloiiqrfhonvroliuqlljqqqklndfjkmpnlnpnpppmvlmsmxnin`orr}vcnkqloŒkootuwwvromoirpqiutnmlpmwnphp_kpoikfonknpuolppnipjnnqmhiounpmtpkqutplptodpnmsllqlkafnjemhgo|mlsnfepticrnvmrglkrjpYmqnmpmlqnroioqkoqprqunsoopjnpoomnmodnnnkppokllhonomkmknrmpsnormrqloglkoonnpnuqgnklrmpuoopqmommlowmmlnplorlspmqqmpjoliqnqlnnjmvpmkjqnpwvlgmlongwmqronlksnnnnlnlrnslmpmoioqkpnpnrlmjmooopolqmqlilmpnmlnqmomgosqorloonmtpqlnjpqrloonkmrloqnmkplnqpnrmlrokmqogqimnlkqrkuxnopnrmpninokorpkkoqpnkpsmlopsmtrsknqiseqllkqroke{ngqrrkpnskrnlmohnmjorkulsnjilglloqnnlrmfnqnqoomljkkwmnnklnmpnprlpsgkiomkmipoilkkppopkmsehoqiokksumlmkjromulmsojpcqqqqfpmiphnbiqmnqrpmislqiihprimrqollqknkjnjlijjppmeomgnlomlnpknmqlinpmlriwnnoomfoipjomhllmmooqllpmylqpoomnoqqklpnolmnfllonnmoqnnqnpjnnjnmlrimmnvnlnsphojnjqngnnhlnommokmnjoqpllkoptsjmtnjinnlsosnmujjomnpntokkqpomronmhpmmplppksqognkqokmminllolrnngnpolsnlugpooronmmnommmrqonmpnmnlrjnomotijkppqnskmpskpfhkmonmjl{mnklpnmkrokononkmlilpwkjojkqrohupjmknvnpnnnmpnuomrpqolgisopomfolkkgosmmqkpmjkqlnlhmrnkioolrqprmknmkrnnkqpimmlpsmlqnlimjltnxqogkqkoounlqmnkfoloqp{qnpikpoknmnmsglkprpooksnirrlfgrkqljinpmsmqnknpv}hppsminmpmljnqnrjmlipmruqoospnjjqphmlpekmqkljormmmpoljsqptosrplkqxnxmlsnnkjgsqloolmqqplirllqklplslponrmmlrllpooookolpiijkqrkpmmpvvnmknnqpjlnnstunmiruekprqsopohojubkrldnoopnpjpiqfxqnfnojlhlioqhemhjpgmnovtolslojjmt~lvlnjpjovoknpammswliolokmjpjjklinykpqmmrkvoqkmbglmmlYqqnnvnnqlonrigmhqrsilnsnenuopmoj{lsoplnmwporrcmrgiqooeqmpyikqiowhklnknmpneh}iltvollmjpjzsjpqqppjplfpknhgmumlnmqtppmkolqdnpnkgljrdojhuqnnlxllmhcnosonnpoklosmknloiuojnkhblpoqqpmiknlrtmkjmrtmmsmonrhnmkoommksgjqnkcpslmmmfk^nsitlqktopo\orompflinmojjumpjmhojonpjlpnikuriqmkpoflnflmuqxmlomnknmlmqnlmtqpkkqjqlnowmonpjloklqqlqgpgpkhnlhqonjnnykjtlonkpqol€lnjpllrrykliksjnlloiqmojkhjmpqpmmqsrmekoqftrnvomspnloilmolmom~mrlnlinpqjsni{usknsninqorspmlqlxmovqolnplnkknqmmkopdsmjjqlmjkohvlmhgorptvuooknlqspt}npfpsslpdgroqojmpnsnhklojioohupolnolnrljqkofmqorrlmmkmgqotpljiwmmqipinpqrsgkslxslihotntrkmpmlpkpuorzkkqnljrjgtjonmnjtmvqnqptpmmln`pjmmnjosqohjjsnoposdumkmniropnllooiknnjspnmrpjnvtogomnlnqpronmxpqmkomrwriyookpnoqelmghpponnqnnoskpvikrqqpqlnnolkmmlvkpqqmpjoollpnnrjqkjdqpvlnjrnopqpookpokqoqiemmlnokonnllnomppnomkoilponkioumon~qlophlqppnmsmhglndlmninlmngmonjnlmhowjimonoookoklinlpnpmknrmpmnoinklpwmsqnmlqqmoqlplijmndkmrkqonogkmmlkqtojmomohnorimklmmromnqorlojmnampoqjlknkkkqnsonlmlnposmhlkkimonqsrmokrmpuquhponnpqmolkmmkmnnqnmlmmamkmohfmnnonpoimjmnleomohomsjmllkmmnonrsnpnirqlkjuqkpnwpqtnqywpnlopnjrkphklolnjmmrmkninlnmpqpqjroonolounnmoklojlmnshhnnslnqmqnknmonokmljrnrprmpmgpmnlonnmnmnnnponlglnpmplolmnmljtoqjqrlrjhnhtlm_ovmhnpnokoorolqkknqrqlppsojqmopqlornmoiipqjoppkrjmmllpmleonnpepnmlpqmorlomnrnsomqnmmtiionnkovnnlmqnrlpkjmootnllonpqmlnunnknjhlnoonrmksnkwlphmosnmimqqiksvnimmnornlnrrjjnnknomojlonjhnllknqmnqlpsllmojomnhrmnmflnpohqjpulioknnhkjplnominspoulslrnqlkmokpsnkgknimljsphmmrqmoopnnqospkjmnmosjliphpsmrkonqlpmpkwnntjznkqtamiommmpplnnjknpojnnppppgijmlnpmoroprnmoqomlgojnpknlmhpolpnqjmmpnqjoqmmpqllgqmookjooklkroppojmnmmoeommxptlomlqooopnsplqomqlnoqqpnhnstmojrjklqrjorrmprojjqnnmmjqqlmmtjnlommniepmnjuotnomohlpmmrnpktmlonqnokbmtlrnlrplnkponlmlkmokphqkpiplmnkjrjhnnnomnmlllironqomqpodjlhpnontnikptflolknmonipnpumllnnomolmnrokljlnnmpmkhnlikomqenmlllnoqvnimrnlisqrnqmkilljlosloqkpnniqoontmoimnnqqmqjmopmgoklnosoqkmmnlsknqmmnnlkqmpofqirlplnntklupmslkmspllpponlniiornqnnlpoppqiklqsjlkVoiqhirqmvjvlsyklnothnhmllnomifmkpvshnwlnlrikjlplulhkkherrkimkmjsommtnlmjllkigokuukkpisumjmkjsojigqmnokjmatmqjlnjmnphljkkoqnionpvnmommolrmhpuhlkromnpn`lmhqpqhuukqroljqsfkxnmmorntmmonhsoqpmjlrmhynqookvjkjjrehnonipjlibapmhoplgxgrjmmoomhpodpjiekknmnlkijlorpevjqrmlkmqnhanokpmmlpbssngtnnkismformo{_lqljvtslnrmuorojiykqnmjodtlpkpurnqnljjrqlihmhrjmfotolmmpjlmoooonnloclvjsqqkqnopksqlpoqnokrqlkomcphmqpqo\olmnkjklfonnnrnrovkmp_eholonilkqkgejhqqqmsnlqoonnppmknlmslroopijelseqmivmfrmomnsniylpgptnnpmsqgomqhkgniiiikagiqpebshrkpupkkowqomlmngn]wqlvqompwklim}io}\gmmqsbxknu^kknhlcqjjkjl\brgkmpwl_vmuepmsmnlkdtciqmtniltnkmmklumgolqklkrgkqhrpgpikshqtqliqpqkjnoenjrjsmngmquonrmnWtnmmmmqlsrnqolhmlpqsllilkjinqfcnfompiskrnpeqokjrmpzkemlmmoisnkluoppmplmkkmnomnooimslpnnkjokmnoskmpknnklnrjknoqmnonnnonmolpmmmoulqomllqnqmrrlnmjomdoknqmnlpqpoqkqqpnmponoronjnmqndmmnprlpoommlorponnqnmoqnplomnioqljmqnoprpnpniolpnomrnntsnrnnoljponflmolkvnmiomoomlullqrqornonosnnmimommonnmkqmjqqinjmmnprkkllhnmmoomwmofslnrftinoskllslnspnmkmpnplqhjlmfwjjjfinok[ojikonjjlolkmnkrgnlcenhnlemrklnojnornqmupfmkmpidrnmnqlqulpmg^ntmgqqgcplngpgkmqjknosvmlimiolgsomnjppqnnigpdkrnwlilqlemqlqqvppoplqpgorqssmspjblutorof\intkmpmjjpnoplhxnvvmp\plppioonpknmomhqnjltjklkjoonkrooqpunqrmkmpnpmmqqijrprlhmpnprrqnhrommoqokppmlhmnnomhllmnqpijopmkorlolphmn{llqqolrnwnhlpsmktkmkknpqsokhjnmqlonolplnnukklswnmoqkiqmnknnrlrpnptmqqlmnyjlhnomnpfjqmkrnqnnjrnktqmmnrnnlqkmmnkrnjppqjonpomjjqnmmoolknkvonromnnqmnnmljnlnommupunokonslonnnkppnpmnncpoqkllnqjmnmsesqmlkkmlqlrlmpplnqonookhnorlimomnmpnilnrnoopnonqnmplvookonllnlnnllnmnoqonohkktqoewrqnlnmqopnlnmdnokljmmnnmmjniolmmkopvoklompnlojmwsmjkkpololmnmqnlnpnnooqoosjlnpsmpkplkaljodopooohmigppokqhnkgrpnonvnllnnillninqoqjrlonoooploroooomnpomjrlgipmqpmmhjrommppmnlmgrrhpknnjhpn^tltmsppxqlojpqoposknpopikkgljrlnrskpqnsfmxljnklnolppmyhnontznrlmlukiongnehoru^npqnnillknawoimfhnojmnnjsjmoxgsikinrosrqsfglmrjmnmipmkpmopjrnlopnqsuhprnsqpvrbokoomroqplhlqnnomcpmpiopsborrmoqeloqlnsotlpukmmeopknqnflflnepamokmqaslokqjivmjsmprnjlmnpi€xhjvqjmmupmt~`ljm{‚xjmfhgijmpdhwu„mslmonktqklinuUkoosjops`spptdpnvskkgsoqqpqrggvnn‹pilmtej|rrtwnhmvqcspmsdusoqushqlmohrqnkyqpludjoqkrtlmfkrwlgoƒqjozfknhmmninivpriklqjmrqkoupipvphjmnpu`qnlmuyqj{k~yidkiSrunwrlpigmx„jpprlvmhrqpnkzpli|nvwmqvumk{rprkopmipjipllprkommvjqelhnommornfkpoenmkmomiokslpphqoiglpnrtjhzqokplkolqoqmprmjnklipjsnmoporghlporkmrqlophoompumolmljojpnrokkklklnkkunnmrmpmrmmmrmmqljnspisenqkmqnmonmoomknmomookummokllomfylmpmnlnpnlotjmkmosnlwmlppnlrnppmpkjotompnnnlmlnpnmkomilqfppmgomnmlmmjmnlhrpmkpimsnlnommfhlmnjkpsjogqeonnssliqkkkqhneolnrognkgntdklonjjgnojjmokqloqqqhnpqmnnjlkrmkpdqoqaolnkwosoomgnrpslijomclmgbnkojpmmmljlnmotnljkilohrndopqqmpkkhpnnknqqnnmjvnlopphknjq{omgnqnqromojinnomjjldhomnjsioqmiujmckirsnlhpqrlqnjllmnokknojkohhilppksnrqnnmllontiksyQoqtnmmpndsgojrwgsvZvknupvkltqsqigbkentpmmolhqsotlriojnoknsurrkhqminlvtqjdmmklwmionwjtpWrjtctpkopsYumliihsmiormdoulkpfyrcumpwlprrocjrnhmqlbomlkklpknpknzmorukrjfkrqmpetmqsmszsqpmmmkqnndollphkvWmkppillknmlmomwqoylsn_kommgoeqllkphhhogoochmjfropmmkmnpeopkqilooxzojikomlsnpoppjrsrrolmlkprfmqmloilknpunhpkgphppqsononcjrpfimkmpklhlltmqsmlnnqlrjsoepomhjgpiiniuom{_rpollcrpelomlktnehhmtlohrnmklqjnomrqlsokjmqqoikllvpxpollitmplglgkqmqqltljiqkmqloqkonimuopjl{jlnjiokkpfn~onjoknqojmomprmkbknoosrqpopjpmjjmrmoknlssmmoljnnnftpinlkqokomnnlkkjnniphokkmoqokrqllpllpinluwmjsmhpijkopnqmnnnpnppmnonqjrlponrqkommpnoljqrqhmpqmqlqglompkolmrmooqmknpimpqmsnooppqollrqnnqlnqtunoookllqpllnmolqnomlmmknmpnioljnlpkfpllmrjqnrnomqspnompnqproolompoonqpmmlkngonoptopolnqnrkoonkpkpmolnpcrlpnnkuplnoholnwponmkolfonlmmmokmhlolkmnlnkqnopqkfonookjniamrqgjlqnqnjknlkgnnqplnnoonquprnmqkdjrnpiroonnsokmmijpmqloolmknplponjnpmoonnootykmpsojpmtqplnomjmkolognnrjpmlopnipolvmpnopndkknilpcnjdssomonujntmpknijmionulnsjpqhllrqmshkimlilnmqnplmplpllnlpnmsmsklamnllnljonpqpinljuoktnflnhlioojonhmknqnponnlmqojkookkmqopmlmujnohns{lsmhmogmopstollllkqpmksmiljlurmrspmhmoahqjjpmnhqmojiolomotnqoylpqorlpqnmpqvotkiliknvlpemrlshjkoononqrtqjilnklomqqlwspmtonlpomomqkoooooesrklooohmmnmnompknqpilsqoorppootpjoojkprmnmhjnplolrnoktjonqrlnooorqmmagqqlqcppXejqgqrpq{bvmrppimhptppfgmkgkfrtllebosmr`mlpohgimeoksohomumromoprmmrjwrmqmnput[uaiaiqqrmlb~lmiihvnmvhn_dgfrgditijfqfwnvphbpllljnrlqrqrrotopp`qjjnniiprpovoymarqssisossimlqomsjYlnoqmooYepkmellk€nmenmixlvkrrPjrpglqjnjjlgnYfrrilcllolxjeoshsmksjjnvoetchmktomkqnn[rnrmmqqjnqnqtlhnbipoplrmmgmosrktpgsnpnonojpjponrnempvnkposmoqipqnikfqnojvmnsvmlltmprgnnerriqvmnqhrslimwpmusdmppnkhlpmnvmioijojkwonplkprrqheokmjklokogopomgpqlqlumiskuormpilrmnmhntupnoqorthotwnlootpiljnriumqquullrqmqppniqpmofglrjonmiqpmnnlpjpiqitnukmuqprohkomjmomkinnlnnlornnkmlopmrqrpqtplmnomnoqpkjknnklmikinoopmpomnqsqqjmnqmqkikqlloopswhqpmonoppwkirmoomfnklmpkojlmnpololojmlnpppnlllpkmkqmpnpnnlrmsmlmnmnormmpnoqjkooqnoooqplmpooqpsjqompnrlpllofolloqpoknknrmmpjolkolmklhooksospjmtnnnoommlnlnllnllrplomptvpmsqqtoormflpiljlivrmkmnkkopnjqpqnpmnkkoonqolmmijrpnrnnmmoqntoopqnpopnmminmpilmpnnlrntmilpowmkljqgojlqoeojcmpnnqpkmjnmnnrljmlonqlmulpotkfmlnkrenmjoqnooooluqkkonmlpqpmpprnpkopnkoolmjkllmmnmpjqolpmrprbpmkpnrunlpoommhhgsorljonqmjnnjjnvqrtpmormlnsonorlphnmnllqpkmidnmxrrkirpqsrmnlmhmjopoorkokkjmpquppolkpzknvmrmonoolnn_mkgoollmrnmoqlmunimmnmjlmpnlkjoospjnppupnonkcposopklullnpumolnppmnnikgjkkojki€njqlnppjppto`nrmqmjmojikpkpopmnmrwokiokpppoptoqomqkqbnqnnpkspjjkgnmpqlflpkvompnnmlpnjnommqnqnpspnmnotjlnhlpmgkgppkkrlholonidiohvjpjnsloylvoprqjppqvnnoqgpghlilpqedkwqmnrrsoghlmiqlruamtqrksqpgjolnnlpgoefmmkVpgnprsmtto^†jpu`cjufulp^nrimqgrohqjo}vnnobclkkmcpufonwkrpsrmoUsvlghmfrskotu{vcrokxrqmvueknhmsrpOplsnqlp[tlppkrdjqwn^rokxkrsojTqwomqrdphgpslf`vrpm`vomqrrqusrfnrnmjm{qgov{sqtnunnpqjemhfqiorpspqonpmmqmhjnmunonloqonlrjjmtjujomrolslpqnnjoopqmkornoinnkkpoppwmklqloooucxlplnsnnhroskmmojvqgloortqqkpmonkmsijmqjolnmfksloqrtnpqpmrrmqmpmnpmqroptppplhlmspjtnkmlnirpqjrshmsmlkqqgqlZmofnkqooirpoemokonoqlqpoqrplloooppllqjoolkopnmtkplorpqminnlpnnorjnkogroummknrppnmolqonnqmmoqnlpnqilinpnrgm_omlhmkrpmmniiooookognshmnoopgctpqonhmlmfskqnonqmfmsllqjliljgmplnmmlkimnmgnoomonlmpoplnrnklsnoohipnnokoqkppmdoomrmljjgpooltmmamjsnminpfli}rkkmrrnokhlnlnhrrhkpmlnphmktkenpmnnmkmlmnnrnhlolqnmrtmmmoojmjjkmjmknlkqnpkqrnnl{rronmmlnqonnosohnqonommmpsolompoxnmoohlqnkknpllhofknqroopqppkmkoortgqnlnnqoojohiqnumloowmmmlnnmmuqlkrklnmmoomlniojrpnknpklxopjnmolnjoknqpnporhkpnspnoormmfmromhrpnorinslnmmnhjs{nnlmpknopiormqmrifeqoljnqonmlpmoollmllmomnkomlookpmniqrmnotioiplnjoyllsgimnjpZqmtnmnqkkmmpilpp`nmwipklohnmnoommoskhltpqvjpspnmpcnpplknjpqlsnrpmlqkhgorpngkslflhoqotllluqmnpquvoqmpxlrvorommkninimomkqsmnmnotmnnjmvhpljgjkrpnkpcernlopnklknoqlonklpljjpinlqqmrklonhymljnpnsm}njypoqfplpsomjkqmlmhnoyopmqnnqmqjoiiumpolntrmqrqmnmoiopYzomniqopowokkirjmjppknzmdrxtqqmlgkkmo|lpomdoqlkoWkqpionnmpinojoikphgokrkkphjsknmsqpmirdlligpiqpqimjjflqg{pikkmmikkofmrnltol|qprmlnhlklpqnommptlljiptpmljumsviponkgklgimiunovplgnmsjip_tnjrmoonmkqpmgilnlpnrroqtrnlqlesopnim{lrxqtnttmillnhpipkmlmuiiqlmoutkqokpklnkrnrppmlnqkmjjkmoommnnfsjgolmqnusnokrpjukomonnmkjmmpnlnmsmnhpoomnnknkoofqmloiwortlpmjpmllrlnpommijlmpmlnmkjnlkjmpulnppognmkkoqnkhrporrolnirnrgompmmlimkqklnnjmlpkoqisiojopkopspmokpmpotlnngmjmpmnlkmljmfqovpilpspmnnojqknkpnnommonpjqnqkjnopliprqnonkjslomgjhnjqqnsmloplglnolmfnqqokqnekmlmhpoqwnmmmrpllpsyokujpknkrpoppnumtsqoommjqjqnooklrmomnupmjtonmolojqmokmooppqigmvppiqlnnmqprolrlklmlqkrnptoqhsjmqmirqltqoqnlmjolmlroqirnqrooqllkiinqpmlpolptmphmnslopmmpmswoapofmljsnmlnnuopkmnkmolnlqooroktjvnmqnqmnjnriloootnjmqklornqnnqkim{mrluqmwqdphpmnxpjrknkhjjjmkmnonjogpuklqjscnninojmhnjdnnmmlspmmkmomllrtqonmmmnqpoholtgqlXpqnsglnnormjhrqpksjjlmlmnpmpqmnjmrokmlnqmmlmmmmhmnjogokqsloosljmimlppqlrovinsknsiopuhlidklrnhiknlkngpzmivrmnmqokkp_lnmkiprqihmmlijpnlognlqnonoiljuotnmqlrhimmilolhljqqbejooqtoipkshmjoitkspmqmgctirhonvlahjkllgpjnohoomjphombmnnhdfqooqpmhmhqqkrcjoodmlmgrokqohgmrpqmbprnrjlklrongigonlomgxpqjresmlinkkspjqnmkmgjlimonssbpgqllngpnhnolsumoiphmsmmooiakroiyem]hrupiyknvnl{jpnwhzspo^qmmninkkmmoijfrmmhoepoklmnkompsljolissgsooijnjloimkshqnllnlmmnomknofnjomlmnjiktnnupiokmpkqmvrsnhsklljsnoqnponntlnqpqmpktsriirnqkrrplgjqnmnllvkumjigmnpollrqimprlrisonjoojqqommrnpohijokpmnfrjjntmhnpqplfppkhmorsmmloqmsiorqrrslnspoomnrnpemnpjsqoljnnwmjlsiljrncmpnmhmqnnkokinpqmrqrhqlimlrlswqnljmkmmipo^lipmnkntuccullmolholoqpjnokfsprkiljnhmdqlnqoemojl~nhqonkomknmnqyqoofnkollioioilmsslinrn`nhltnumljo`qjrukllosliqgjllmplhprijldqoopnelhgkmjkcnrnonopjnjgnpjgphikptjnlojgmqmpoosiqkhspoqlniqornbongjimlqdjnkmmqoisikojqniolpljmmmikljmjjsllokmmqnrormiionkmqmquklmpljmolproppomjonnpkrssqqpmthnlnlkkrnmfmiinpspnonplnh~imlonnomnnkqqjmmpoqhqnrnijhmpmqnooqmnqlqjmvjqmnlgnminmlnosolivomknqimrilmjronpimhkpujqgomolmkpjpmpnpnmsipmlrnpmqppsrsqlplhntlnomkooqojmllkldnpopniknfljnhqogtpnnjfqposlomopknlnmongoopkmnnrntqsmmpprlpnpkmpmrloqkppmmnlnkjrnltpspmnqoijonnjomofsgmkkkrnpluonoqprrqiwnqeqomnislmopcljsnnqlmornrphmongmmjsxlnmnosmiqnikjrmpmkfplmpfnxolkrmnnpppojoqlpolnlnlnmpoknqlqnnlpnjpmjqommommpoqouofponmmnprnkkkoomsolkmompnnjonjmnnqnpolnqjoolhqnnpnlqnnlmomjtnqmqoionpiqlqmmknpppqrmqiqnnmphknstponpnqqlhnqnponjngmxlopmmrnoklnmrnjropkqvlmqpmprnlngqomnlmrnqlpplnjlklnmjmnjmphsnkopppotsskpnrqnqkrplsklntmsmnmkntnoooklnpnmnkpdnnqnqlottnirskolpmoltpnqnhnslmkjmjulnqemjlkkqlkvknlpononlljlruppjjpllnmknoojommrolplomtmlmnqqqvpnmropopnolmnnjmmjnirk^aooioikn]eklhqwmfzctoooomolqwqnlibpbp_mpmhbakpjiiltvpagklmkdon`kkqielsqlkmkihltnlpklzvZndcelxmhql^}mrrcaijhnkm^olhpijmmhmjnfwpsjh^pikfnnlpniqmomonksanjmnlduwnjkujypjllnwxowhsgerjsnsh^phmlignPljmrmimjpinprrphlollnVqqmlgponkkjgn`krpni`nmmmuomrsdmnnqplovnhelimninoipjjoonqlnpkplpdnonnlnvlmlnpirknnlmovojrowsngnrqklnmqqpotmgomokplknpnnqtnronklmlsjnmqjpqqjojlmskqmhknormlhkrolsqlumqpnmlonmpirloqsmjpnlqsmjlkknjnjnopmmqmlkpprrllljooomkmnlhovqmqkinlonhkemnqpotloqpjosolxljonnotoromnjnqkplkmomrmoijkokootkpnrngimmjoqrumrsnmmkjimtqpoqonnijeskollcjqpppjnp`rumorqvnfjrnlknpoqmqnlqqjlprollmnqoprliyllkksnnq`keoolnmrronmnnpzkqrnjqlpsvnvgyrqnispuoojlkpooxjijipqmkmjjulggpoohlsjslpgjnmnjomikkktlnzmpfqllrljqksoohmqmeqqlqmpmmiiwomuosqtkgnntiroqmnmmkpgnsonlmprrlrpjoormponpmmnjfoximil{vnfnmnpmopsmmskqpnllspjnnksqogkvnnijojlnfjkjtgplxmhroqlnlttjnprkmnniiokjjomsoqmosqfmpo{lpoirjqjpmvmkmpnwmppjjmqotkljlmkropnmnmmpnnmjmlnmlmnjjmkmuooiqnrniplkllinlmogtlpqonmkmkhpinpmowuvqroognifmontmqnkqpvjlopmjirqokjulmmmomlluoqnmmrqmopjmloonhnonnhminllsrsmvjnoqjoponstlqprlpmmlpqohmnjnnmllnqommnpsrlrjnkijnpmnntllkornnvjmkoklonkqmqnpmqnmlwpoljpfnsnlgpnollllolmuorsqlpqronmruolmlpnilkmrtqnnpqktonnnmkjjqijomoqrnfnhnnpmopnmrlmmrrmjprqlrknlmlnoqknlmmlnrmkjoneosonpliokqrmnmmlpmnmnosmmponpijormlllnnlpomlooqkmqslrnmmmnmpnqnlkokmlnqnloknnomltpnkomnmjmplmlnlkumoupjgolmrpkcnnjppokhlmsornopnpgnrjmkmionlqolkknnkjmjokhpmnniojpjrqplrinllklgomqomnioomiksnlllnpnkplmroqsnmpfoqnklmmioqkrokpjioworunqllorkonmkimnhmnmomqnosgljmjnznklolqlmmpooplnkooknjommnnnpolqnunlnposnmrttpmotkmmktoklmmpnhlkqkqmrppgplnponnkllqmknllnmmqpptpqkkomkuknpnhnnmrunikkomphplkkmlminppkgokopminrpnoqpqmmkotnkmonkppmmmrsonklmlorummmmqqojplopiljjonmlnnoiiokmpolsilpjgqnqnknjnnmwonroqnlollnoklmmoknlrmqrlmkknvmntpmqspxqopqqnnnonqkmkmokompukojnlmnonikekoklnomoookmnvhjjlnujolpkelkkgqjxmrlmmfonwlnklqpkrmnhwooplrlpkjmaslomlnskjmpqitomoimkoikjirinpprmolkbqpjltvolnljkukhkmirnrqnagsnqlimnmkilrmpkolmnkokgmmrlokilqknkiiobnmlahopemqpmilqmkmmkquobklogolr^khlkqlnriqlrplnswlpkkiqmqmpplsokqtkmhoodmpolproqlhnonhnpppstqpnoonjnilolomnqomgrmhklpoonlmonndplolpkqmrnjlppknloomhkknlkrksqnoljqmmkopkkknomokmqonoojljklnllplqljlnkjknpoojrxnnlnoplkiomlnlkkkorkpnllnqnijjgopmloilmloqoqpogqolqmolpoowknkosomkklqtljxlolpihioojmllmvjmklkommuejppkropuoromlonpmolknikjqkmmkomnomnjmoonnlukpjsonnlsroptnppoekmsrsnmosommnpnmnmmonajpqnloomjmmmnpsomnnsjljnpollmmnnmppolpmnonjnkmlgjnlkjtrooonmkjnnmlnqbunmiqmkplqoopjwpikpplrnlnqhooqonooplkmplvohmnnnnmnrhnmkmgpnlhrhmqpoqnolroqqorjgmkqpkhnnlolmnpdomomkulpnljolkmmkpuplnoqmkmtnlmpmollkqnmkumpmmpkhmlioglmnooponmmjljimoqnleplinpsksqlmlkoplmnwpjioomjoplmnmrutojljmgsqqqmjmpmkjnlooetqmolonlqtlmpmomljpinlriniphmshfolkqmomofmkplpojfrnokklonmonlrjrklhokhlqngslproinkhmplmgnnonklqrkmsqlqmnpntsnmnmmipmqnlfkqolkslmkkkmoplmwlqhwppkjnqsqdnrknooekkkmmrkqqpmpiilokskkmnlpmnqminrghnpmknjnlplgqnkmpplpisqqpmnnhnomnknoptkklnnmokorkolykmqmppsmnpojoihpqpnnonimoprmpgotkprqoojplomnoklmpolqomlpohmlqiopnnmpnnkmtklmirmmrkilnrspommnqopmmnplnnmnknknmnpnqmnqolqnnjknfprkjrlmppqnsnmoqolnohprmsnmpkiiopnqpunnknonornpqnqmnonlqqlrnommhmmrqsilomsolnmnjmqsrpkokmqqkknolnpmnpkopmsnjlnjoqnnninnmnolpqglmhlnlqdqoninmkiomkhlnnoqononpllirtuonsmmollplpilpvkonettlnnnrnnlmpmogtomngqoipnlqgnqlklloohpqpnrqrormlpnimnnspfppktnknnnkonpppnsjomhpqnmnhokumqpllnlnqmndjmjotholjjkorpqnllooenrmnlnmrnmqpmkkmkkjpojpkonnlptmqnqqjljonhknxohmrmmnnmmoponjnnorpmmlomlnjmqlmjrprlknqmlomkkikonqppgmnqmlnojjmqonmopjjkjmqoqnoklpikzomkonqopoopmlknokjoliljqmnmnjooqqppjnnonmnliponnlpllkionqlkonqlrmiknmollnzjknnonwmtopplpnlhmnonvkoonoqknilopmmmrolmpplrplompknnkloppnjmomjknoommjomgktlpqoonlwmonskmmnannnrlknlzllltqrrsnqknjipsminnmlpnmoupmpqmknnnhsgkrorlnqnlnnljonnumnongnoihqmlnmqpkrlmormslhnnnnnolqkmmlomljnosmpjklnmppmplmoqmkrpnmnnhoooploqnolnmopnmpkmlhkmompnoqnimlpqhmlpqilopqmpomjuhnkmlxpliokfpoqfliikrkonqnsmnknimklnojmnmlnrkmpoopmrmrolpngprmoqlllmqpmolromnnppiopolnskmoonimomppnllmknnslpptmomkjlplpnrnlnnoopnnpnnmmnqopopslnpoqoprmirnjnmeolmllmmmnrprmmmnq|qnlirnmmknlpklnroqplqmmpmnofnfoippkhjmllonfpnpjnlplmlmkoqilinrnnqnfprlpoorqmlpksooojoqllioojmnmqoknmlhmohpmmlpooonmopllnnkghnnmnmolenkoplpqpqropmslrsotmoopnyklommkjomjjlmlmoqknmsmhsmoumuqpojpnhmkkomjqllmonnojoplrhmpqipvognnomnqpuqpnmnrklpprjjjloilroomrvrqnmrtpplnmmnmuhmmjllknxpkkonnmlimjojopmnnfkopnjnfnhqtmomjkvqqpjnntllinpvlnkovmspnrntsnlmnkkkuqonwrtntgnlolqmqmotpuomnnppukskboiinlplmlqxmpnppronji]lmipmnkpqrmilmshmmomqhnnqonjrpnqmmnplmmnluljjkninmqlqgpnkqmnrponvilmlpmnmmoljjolpiohnprmslpkpiqmukonnpjmlkmojpwknhmpoqgllskmpmjnlnkmhpjommqpjnpmjliplsonpimprqplqrmqroomhqonlplznfflfqmnmlmkojnpkjjljppjooonpelolkopnmngmonrknqpnmnkomknpioioloqsorrmpnmoojknpsopgipoqoqjpmjcinnmmniknokkpngmknnkponnrumjpqqslpnnsmhoqqnllonmnloqmljqnqdpcmgonlqikqilmppkqnjolslkuknkjtqmlnpltoknlpvkqqruoojsmmnqopqolqnmknsgoknmnpkoqqqqlpjnenkjqoslmllpmmpmonpqlmmnnnlkinknnmljjmnnlmoliiiprsonlqpmooimnjkhopononmmjlohlnqnmmlpkupnoljkimupkqnlrjvotmipsknlsjtvoomjghmlroqoonmwopgiivoommxkhnmqoqlopnnnorlomgpkhnhkmjprpnkrojotqsspmqnpplnmorhgqjno\mlqroqoqlknsmtmrmlhjuqolnorsg}rklolomqmnkmolnjemlrqqonmiidjnngkiliqooksnxiqpvsunnlspopwltnkokoqespliknnxooopjshrlhnlmwnjqnimpjjmplijqejmllmoroootlnkneoklhpkmpoosmlnpnnmemnqjoppmrloompmhmupllnmknlhlmrmlolnojfenmkqmokkknrjkpoonlmqoqtomqmozhmomkkmmklkpohmqlhsvmqpmnioqgnjkompppkoqjnomrkommjmmqmrjopnmnppomplojlrnlqfqooomklpkpgwmoqqlbolsnnjjoooiolqjtkfqqlmmlomnokpirifllxknnnrqnmoippqmomkmnhegjnmmpmnvltqmqinmlpnojjn}jqllvwomxm_mnlhgjr}qkpjpfldnobnrnnimmpjni{oemkq^mlnihnnnohwpoomlqoskljorlprpkmmljxsmgtnpjxkvrlqjtkroumpafgnnol|hlkbptooklnqlmhmnqkwplujqkqknmnrqkrolmhpgksrpkoooptrujjglsngmmjtrknjpemqsbnltonukrsjlxi`lnYlpkksmolibothkkpnnolomorjrykjxlorjnmkmnropnim…nmrklnmknhporjuoknqmlnpnoltsoontlkpkqnponrsnnuplhlmemoqnrtojnmnjjppnoqsmmlnmpnmtfilitqotqnmkopnroloqslqopneoqrnmomolslqisnjpikoikopqlmrpmqqmohpkknmnqpoopirmnokpijnrnnoookmlrmrnomlumlfnllkmjopmsksrmnoonnopnnjmunsmnllmmortjoknonpmlnojronormnnopomnlokmmmpoliommrksijnpmmjpmnjjnropompmkltronnkommrqllksoptkojlnmtmoqmppliqmnolrnhklmmmnmnlnpmmnrolmnnlopmpoqnknolkolmqsorlnmmluonlkhqsvnkkpoomorgnompolopujlomjmoogmnqploinrnlpmukomlomookelvnrtokjhgpoonpnrmngnnmknpnoqporkkllqnrkmmkqlqqtljnmmqnnnqlpmtipkplljnlqtgoqoqrjjlmfsrhhjomunoqqmilnjlopksbooinnlnomsmnokmprloojpsjgrrhiqmjoniinjkfepnbrnpokinjmqojmonmoqmfgpjjljmnruziongolpmolqjqcooemgqlgilskjmpjnmpkkkpkonltnonhmqppomrmioejkokpqtpoplrqmpmopljrvnqbinqonjoloijhtlfmoomqgnkpmqhpnkgojxpntmlnlporoommomilnqkmjlknlnorrqglpnxpnlmlklrxknvmvhlovoklplmqnpppnkpkyqqqpfolrtjmljmlpnllliiv_osllfioonsroqnphopmknpnpvnrlkqllpwmnlrmjpskkmorgrnjmqpoevirlnxworpgoqipmnjtpmqqkklmnqqwihmqrqirupolmqkkkjjpkiqnmpsmnspnlinjpnmlnqkjniporinsqntrqjnoxlhcljjvqpymhpkqlqtokintrknsqonmpjioxnrpmonunnqipqloskyhqqsormfkmimmqsounmnjqnrmupnnnkqnmsolkmmmnqnmpqkiilifujrolllmnmmpmrmjnpoqonpklqijponiplrknklntrllqilqnkqlloloomqplppntlptmjkqohnnqqlimksnjntormmsrmtimonoimpmpojmprympllknmujmkpremsrkkkmonjillmsnnnkiqmpopnkpnjppnempqmminkqommpmnjmnlmlmnipmqtpoolonlnnjorrmklsqoupoomnvhpnz`nprlroolkkmmonpqqnoifojno`mrnltgpptgmkqjrrmmjqprogovkjjmqdjonoqvinssopqnqohlhphpendoomjtjpcigfiwcknqdooknmsntjpklovpmolmplopnpnngmoqhrirqlnnkojpkj`poimttnpknnpimlmtriqkmenmunqmlqwk{omknvrsqjlnltlitmgoijiwrjyjohrrmnqpwnqhollpoptlrejumkmklpuqfkjrkeblummirkfrkolkqpcwhrmmqprkojogmmohkejmlsllslknkqlpqlnipkorjnoojkkoptinrhmpmqrpuoplllqsgnlojplrknnjnfnnihdnhummghopmmkplnmmmmporoxirjsrhnsgnornqqsmongmjpqoiopnnrnnrucjqmvcnxolkrlriipofiqoitnl\oomompinlvlnomrrqrpsphlpnotmqokgmmjlfpphpflmoppnhtpminomqoprkqmfoqrlrm}tq^kftisnqyuxmqllnyqkimrnklomkmbperkwmjltigmnntizpngpqmkomsgkjsolotkmmofknolhmlo`lqqinfniom]drmnedqnompnjniilomxqmqqollqnkmmsijjjqicoogkmumqumkmqldrzlgolnnnpmmmjkodnllmrlqqpnmkjppikpqlonlllglllvmnmpohjmvkmicnijjqqqmjomdqpnmllkenoqrojmtjmpmllmrokojtmnonrkpnnjmpmlnkmjnptqkqnogoopjllqpmmnnmruonmmlnoolopmpjnnoqnpnkjolnmnoonnpopnlmnoqnmslopoormnoijlkjrjnopmopnmqklolpqimnnononomwpjopoomqdkmommooohmnsoqossnpllqnqlplmolnmmqqlnhnpjpsknlqkojmprqmknisoomnnimpskmovnojqojmnnpnljmjpolnoooqmoonlmrqmoupkkomvokrojnnokjmfjmnqnnmmjjrpknrjnpnmnhpnoqspjlpnjnmqholrmyprtioqsllmnoonqpljopooplnknkgqonohjskkkppimjhpfhpfnoqpplllmmjkssolndqmmlnpmiqnmpiqmmmqoplpopgotmoomlmtqnnhmtpjpmnzoqnqmmhippilkoojqnnqiomnmtnospmkkmmnopmkpntmqjnhopipokomrknnoolpnmsnlonqjnmlnlmoqlnmlmmnjoooqpshjknxjkmnqmfmnpmnslldoqopnioljoommmrnqmivmpjopwmnwjjkmooinoiihprlsmqpmlmqoqokmqqpnppkrpmnloihhnlqojjrkplqoollikngkpnolmjongjmllkprpqnimrmoklnnlulrlpqqmpmmknpmrrknonnqkmospnomgohjkpilnlknnonumomplclppmnnnonnkgpnopsmoonsnlokloplnoplnknmjlhlonqwnwpkqqilmillsjsouoynmmnjkrplinnsjpionopnunmnnnpllhpqoormnommrnqoppnokqhomklwnnonponolopnlmoopnoigmmnnqllppllrplmolponqiosnpjkqoqjnkskqmqmqmojlmnnjnonntptnnnkmnjnlsmrljmlntlmnjklnkmlilonomjdnlspmnonlpormsoinmmqplqgmpmmloqtqpljlmlmkjpmlkmnnopnjlmlidqrlknjmoqmsmrpnlkqoimrkljmpnjolsnjlkomookprmljknmsmnmopoojlnnnlumqnjlmoo|qomonmonokpsornpmmlnjlllrtpnoiokdjrqrkjpkjkmrmnophrloomqvnnslqgnuirrnlnmnmnnrpnjpjoklotzqnopmmloonmqinknknonngtoroqmkfnrohkrpmnmpomlpnikprlimonmmkpololmlmjjnrknqiqplomsnhnlmlnmnqklopntfnlompnmomklqqpoiprmgnoknqrlkqnjgolskkpjnqommmonnklpnpnmnmmkmnmimjllnnpfmq{mqmunmkjkniltonlokotonnqrmmogjpmmklilnmkmsiponhlpnqhnimnohlmlonlplqkmsmmmkronjnomnmqprsoopjorrplolnlqknomlhhlojnlkumlpilomomxsqknommrlnnmijlplpnmuimknokiokimlgpnoqomntoonllmmmlnosjenltpiqllslmppotooqqkmnjpnnkjopnoqmmropomgnioqjnoolqkmpnmnpprnnorkjqnpmjurmopkkdosnmrmhlrjpoolsrmmuonqnwokkrlnopntoorompnjmktnnmookpjqoolvpooqllolonknnomomnnqpmhlknrqnndmnmmongnmmlnpqyommnqqkjpnrnpqoqfmponlnoukqoplkppqknojlnnlostjprijoknoomiphosomrmkmonopeijnkomnmimklmkmilmlonqmhlqommothlminlpqpmgqnsnloneslsmlpileunonomoplmriolsmlmmmpknolknojmronqtkqprnmhnckmsmfmnpknthgnppknospnpmhmnnnokletsjolrjnlmkktktlrsmkuomopmqmpkqpotlrpmmlmopsjrpnkpnpljjpnonkwkpvilnsmpwfojrqbkpjhkimmhomnlkjkrhsopulshlnrpooipnamoigqmkolnlmnrnohsimksointotlopqenoqplkrihekhfjopesjpcjjojkmrqkmkkolilmwpllgnqqrgmdrsqiqllkikoshjlnnliljmnqkqomppsotsopbolihotmsoogkpomhkpqnqfngjrjlojnljmsommpoqqepmplkmpkmmnmmrooomknmmqujnnlpimnouirnlnnsvwpknnomnqqinvrnkiodikgnrmmmjmkpinkmsrqplollqonnmomooonkhpjutolppqmldomqnnjqokpnpiqdftocqowwncgjnjplxloxivornhji|rqphlrzplinpogjƒjxjkr\ngxoolohjoljm~pnnnslkrsqirgolorjnouknqonqlgcckkatmyrjuonhtiqbgnporxtlojlglkpmstpmskuq`hnmhvsZtnriyn`pkrnmenimvklmljipqhegbkkopmmxmq~photuqmplqsl|jwexntpeglniimxuas_ljiimmejnmvkqnl€rgrjmrtpwntlqninqyilm|vnoqtrmpkommqpghmmmmnrorqpnshlmnqnnrnlnnknjmqkpglnkhn}pqlsnqkqqouioollnllsnnnpoflnoonvnpnllolkhoejnmnsmnkokllkplnqljllnlskpqqmqquoohnpoolnmkjmmonpoppronnsooppqpklmmnmqsrkqofqjlnrtqpenmmioinknnmlmomolrmmlmlonpnomornpqqpmmlnklnpnpmlmpspmlqrnppmdnnkrnmlmnkpnmfompnjnptploomjnmnpopnnmronjklroknmmmmlnntpmnnnjopspnooposoqnkmnikhmnmnlomnlnkponhhvonsommloonkmrnoolmooplokmlqonolimqolmoqmsnomiqsopkloostpknskipnnmooooomokspnhhpmmninnilnprpvmjsmntqmmlkqnmnjksnkomqfkmkmojjovhliqmnlnonmonlnnhpmsnnmphnnqmmnokxnnqosqmpokmonkhmhopmpinmlroroinnljnpoplnpngnmonljmkakqjiokuljhjjgpilpoqkokmipunmnpnmrpmmhlqnpinqprvnpmpmdlefnloohkslnnsnknjupqpuuklrpmmhmomjtpilmjqmjlmuv`nkomtqntoqhovksrdjniuqmmstiiqppqqkopllkkrnlnhorgltvilkhkliore{jkjnonlomjhr\joqknqglpsohrljltqtlpnjppkoukoomrsmvngpnogceqnjoaqmffqjisukfvjvkljphicppinjmnpemcmriqfitoqnnjzsnnokpllppi[nspmqjonnkononirlimmjnw`lclhynmenkctssoebjmowpjenliknmmnlkpmhjpuogdmjogliinpjrkkjnoqojldnmvgimmiopjpmnoloorhwjrhfssnoqqkkkfowlo`llpnlpkmfrooimmuizmrocoonkmolnjmmqpfnuevnlhjmgnnorpgskmirnovqckvfspujnlcmjvljfwlj…jqwlpunqjtsh€itnqmsm{kqmlywrrpnjok_nnqjnpnknrrixlni‚ospikmspmopqnppnimsmo[s^mgnhqrrnrkggskpqnskmknrknktooizikqndjmgiupmniomlojrlulnwomojufokomhukprojposnnkoqkmsomprppkrnjqoxdlmmijpetloivlldlqkfkbporqoopjqvnkqkrlnquikrppimhkppjpknpkkilnqrsk{lkoqujvgZtngmnkqwroqjnpjihppoliskioepfonhlefqtjnnosoqlpjtwpozqoklnfmpnommmqijoqkomlpgpkiotkonojguspmkgsrlqlnebsjnojnqpoqidkqmqdlmlllmsjLooomknromnmnqljnljnjqpoptnqqhroljkqqlmkklkmgonkhqjlqvkvupmqnlfrojqnjlnrpkmgpnmlqpmnodopmmiokjqhmlpqlnrjktpjmtmoknfgmlolnommsluolkupnohoqsqrqnmnnnnnopnoknknijlpkllgnclipmoqmuoqmqqohoomnmkknpojpqmkmlsmmqrnpjnmkoinmnnnnqnomplltllslplkomrqpkmrionnrnrooojnl{oqanpnnmfmqnmmoomolpqmqnmsmmljptnnkonunspioelnjmqoknkpnlpmmpnpmlmmlpmrrcnmomnpnlnmqnsmqjmqlhnnqgloqmmjoovokrnplssnkqlijkrmnhpkkoqknprkpnmlnjophnoprsuommkljomnjrskllnlknopnrnjolmmoirorjoolkmlnrnjpofninmhjjplopnpnlwljpnmlrmolllkmqrmoooymnnpprpngmlqrnqqjmiloumnnnrqfpnmjpnnkqnvlmijodmmnrmkjliqflmhmltknnnnokmlmonjqmkgiolgnnqnmornlqkpqmpjrogqlmmnnoooqmopqlmoplnjpmnqmmomnirmlmonnctlqhoojkmrnmerygjeomonmgmcmiopljsuprundlqsqiplutevkrprunpmnlvnmmkphkppqeoplkmnlytmjjlepujnkzjiqhiogksorotdlprmmncjrkmljrokrl`lrmprhigsokkjpjmollohmpfomdqljkhkmklnpolpojplnloomipojqikkhljmnsogujqmosmoqnsrlnmntlemkiwpllrpklmtnqnqlmrmjjijosnmojmukompgpkntpbpwixsmmnz`mj„jlkkpwqtvopsnqixonsjoosoonhnolnrnqkigoopgolpnnttonnksnnmjŽopomlokmnpkrlmlkmrpookh]hgki[ijjpenhlpdmnfvlpmsmjoxnij|fmmmpmpgnnjflpnnlomnlkmpnmnnfgwkrrrlpnntpimnluornpnnttipqhjmpnlunnhlmmklskginmmuqjmosoioisoljyogmprnikhpomonjnnorolkojodrqrqsmnknmqelmoookqjjkromilosojnkmonnmnupppmkjmllhlkjvjprnqmhoerslqnmjvjnmppqnmoiktmlkniphqktvkkprjolkmrppmnmnqnrkomhqormnhjjqlemmpljnmlsmqlsnolpnmspcnjnknipljnllonhngqlsrmrnnnlnmrnnllkmrltpfloohpqqowmlhjqlmmnnlnopjnoilkrolq`lqsmsoqnpinmnklomrsqljnknkgnpnopksrmmomcpppsqtnnonujmkqlrnjlpdokpnoploosmmnimojnslgirlmropfnhrmrogmonhunrjknolklqlmkrmlonnouphrnrjkicikqrnnmohtmlmmnkoponllkllnmrfmponjptpujiklokknmnnonikpnqsnoljpoqnolsmlnnoqmpqophnmkodnollonmlkqmnlqqeomnnmrmpnllommntnpiplikkkminqmponqklknkjorkmoonnnlrnppglpqjpjplfxplarllhpqruqlloihnpmqoolppnoohnsqnprlhxolipq{korpqopljtomuffksinlrmuunonqkrmnhpknmsnjqohrkwrisfiqeloojioeppttkgprrmosrrouplxptppkmpkqqoltqlpsovorpoohpnqrvmltopnumprtqjlnojoqojlqmrnlsunpgpsskkmlionsrqffqelkmjoeqrpopmtttlnokliqnpmttykrnjplpqpuioioproqolqyhgtjqrljkplmhojqmoprwnmoolonqglnkqgjhkmmsirltrflkjkkojnrmilmmphppinsrkwfmnnnmnjpijsippoksimlremprplnirpnqpbklnrlqfrsmjlomnlpjognnqijohmmnkmkkpoopkfsknnklykmnkkmolqmjplpptopjltlonponhgpmekqgkbpljmqnmjkvmunjlonnpprpon^oqrnnqilgomdhcnuqqjdhookqnsifojlptnqopmjtpqtoqqntslkmnupmllljlmoonmmnnlolnpqrnqokjiqrpmlltolkcmtmlnktjmnsnmjnmlnnfntnkkqnntrokqomponunnlkemnkmemlmpolnlpmlmljogkjlnokmjnmprlmonnocnslnnlonljomprljrrmkonfopkmqmpkjonmnokmmnnrjrmlomunovolnlnmnltkommojrmlslolkrqqomkomlnkmnnlopnojoqmhoimlpornlmktmsiikuolionpopnprgoppjhonnnhprqmplloopnlpmknompqoknnlmohinpslojpnpnjppqorllnklnonrrlopoptynpiqokomlmmklknmmsmqlqoknnrmmnmjqilmqmlshnnttmnnnrnonklmpnkmplommpqnlimoqhmkjknnmnmmmsononkknomhjonmnmjesoplqnlkqntmqooppgvnpospqnpitnnpnolnnmmipknnjjmjjlppqmeukmqkphjlrtqpevqoopsjnoozhjprlploqmxpkmjornnoklkplqqopmtrnmpmjjdmjklqdmopihgmqkjljmhmnruoopqpdrouigpmnommjrimsjolqnlikgmgsjrjqroosjmqthklngnflopsinlnlovqckmtkkxopmqsqelnlnkqsoeplpioqjfmeosdomrnmonkhmnqpplphllrlphxnjiilkmhsksdopjlnnnpnjmnomotmtpqodmoonqllopvbwnslinplqrorhl{nnskmennploovslvqlskhuojjoqmnokxjrimionpjpjpqqlrnqrmsomrlsrnspokmqpzpwnmppohowmllkknnrqmnrojtohsbmrnqjkkiknqrlrqmlwlsnnnpmomnonsiljqjuqnqnlnhnpiqomkpbqgl{fqxvnpqromllpopppomnmnqqlmplmnhnppnmmolqqulmooqpusmlhhojovonmssmrnnpjkqomonkpjnmkopmrlsjklnkrulomplzgkloinkmpqjpiqmlolnkoppmnjkrjlomkkkrypqnqsjplnlqnnpmmqpjllmnoniumpnqoppunplphnpqrvrsqjpqsrqdfzjlpmoqjlkjmmoqmjnujnqolstlfiolopqokqquqpqoonVmmqmrlihsromylnpujppnnnqkijlqomlokplntjsrmmgiqoopjkmrlrpmowqpsoooksrkoolindjpmonnkojemplillopnymrlqnpqqykpmpkippqonmmrlojpphojqimiimkrkpqpjljoprnomnqmlmijpnproopljsqrylunolgmmlkkokqinmkoqlnnpqntjiwnknioljqoiormtqlplfrrmpnogoohlmjspolujgmkqpljonnoojjpmlsokkmlpnksinllnnmnonnknmnkmkmpnqnjoompqnmklrjrophmssktovekopnrrmsmpmosolqloqkmkpqkpknmmkhpommonoiopmqmpkoqpqtkrmipmjolnwibcpmltfnqgtrnpmnigtdokpmojnlmrhlnipqml_jxpnhmokmrVmqnmfhlligmonZsmrimpmpjkjkvpfopttinmrgkklhouhlqj`somgaikljlnremplkqmkmmlimmtnooigkdlpglruolsmlnprpncormineqypgptktmdwnnroqmnqlsqmnlrmjnllpvrgaqmkrjrohnpqgtojpntmlncosnnqnqmkllojfjtvtqkkoptqoppqnemoonlmrmho`bcrpnpfqmYcoviunlgucopmqrhjkrrinegkkmjanoknecenmqsobsolljlimqqpknonlnhqopjrlmnnnqnqloowcmlqcmsq_ilgsqsrccjjotnmfbqjppgqoplsoempypqkketklnllplnntkznolimhlmlgfrlxmlnsxfommrkrlppqenqmhptelohmqshVcllokqsiquohmkqnnuppt]oorkmrjmlul\nYkrpprgllsnujlnlinjonlenxnht~dnnklm[kllkrkptnnhejjlknlprokmmhblxolfpolgngknipkztolkopontnjrqkjqlgq}iqolkhrnklnapjuqnkngkmkvmmgrip]jk„jvknn{qrjnsholuillepqpfuoniorlrlpnkupbjmopjoprmgrgklismlldhijsmppniimoooojmknnmkunrdorrqmilx`ktoj}pshgllqmtjlmptogtogpqinwnkmkshppgvklwtmeonnpjfrrmbprmqloundqoolmpmpqjfpkomnkoqpqonmlomhoinfsonpqlklmslojoljknnqoqnqkkgmlkskmmpompoplosmgnlqsjiqmplltlonlfqhhkymmnpnkcjkplnnotlmmhnvqkpgngponjoomqolmlolsnmonnpqjjmnqmnoormelmnqksimoponplpnrnkkppiokmkpnnqjojnoproltlllstirnmokmpokmppijoooolpmpojmlfmrpknmxmknqnwtrhtmjqpgnknquvqrrmokilumtnnoxqlpqknlrynrtltkmmmejitqopkhomljopoqrmpllkilllkjnklknfllqrkmmqjn`jsklnrmqmglmpqospnsloslpnpmppnhpvknljormqoqjnrrononnslrtpjntmomjopohpmkqlmliqmqnololin{ttntjrmsiksosjlnlmninzoooprptmkqpsdngmqknspihomqmnnmrornljrrrnpmlommqmjpnp{pkmpofeounrohlokpomoqrrsnqonqlpnpoqonoonlnpmignplskjqioprpnmmmqownsppomoqqoipkioplklqpimlijjroknjlmoqqspnomqmrkpjnkkorjiolpopnklmnkllrnlpulijnipjnlppknnnjmpmknnprmnmmppoimo|mnrnmilnmnnpjrkqngnlmjksknhrmtkqugniuppjtoqmnilrnonmooqkmmpourjmkksplprklpmkkornossshwrrqmnmqosdngmnmjvolkmmfmpqmppkqlroowoepirjthlpooqmotqvnlmnmtmrnrplpriphorpooliqkmkinpmynkkrknknonruqqonljrttjplprkokmpspnmmlmommnqomnlrsmonqjqnihjomlhnnmlqknmhnlmmjsinrijlrnmknjflonninrlniiqnkpjkkhutnkqjnoivmomklsjolqknnmmlonrllqmqrrnosmmoinqnlrmiopnklnjqlpnvlopmkkllinonljqopoqpmomqnnpnolqkpmnjppklmmnpnnkojlkmmoqommppnnolnonoommqoomooosnnmpjqmjklrtomokjvlqlkqmnmklnnmonnmjmporoomonlplpqnlpqglnmmnlmnmpnnoumnonqonommmmplqsophmnjmpnnnrloslnbqqqllpmpmmnjolnnplwqlnpmllonmololloolonmnkommpmompoqnnuoopnnlloktnkqnfnvopnmqhnmrorgtlkpkomnmsokruxmslolmxwnotqfpcnormq€orjpopnowimmogqpknjzpomqjkojnrinljopoqprklmivgpn`lpoqestloinonp~rnoljmnokkokmnjqlplomcjmklpppkqpkomkmgkjmvjrvkoloostqlno^pqkojnnmlmprrrmrpotqkjmkmsgsroopnlktsromnomnilmplhknlkmlkoqorskqhppnookiiiqmkrlrilgqollqslpuqskhlbjopmjqkpqlopgvkrqlnprnqlnmomkpjnmkqpgslnomnlopopoiknmlkikmkpklnlmlilihnnolfnkkisnmmomomnrjmggppopjjnxnnhnmlosqoknmnjqjnlqkspjkolnilrnqlnmmkmoqnmpnuqppsormlqolumiopbqlpkqkjufrlolkglpqnlenlplkoknpeuprlmnpoonlnqoqmmroknocipiknprplsormqnmjpmlnpoqlmkokksinlmnqlmnnommtnklooihnlmpomlojnmnnljkmmrnmnkoqomommmjpkonsqokloknunjomqsfpoppulmpmoornkkmmqnnqiolomnmqktmnmvqltlnnqoomlmqnkloknlkwonenpmojnnpsmmorknmnpnkeoqoomsnmmnomkknxqojnpmrprpsnmlqpmsjmnommkpotqlmsnpkmmnnnnnrpoopmqnmnnonglmnmmkllpnnoknrllonoqkoltkqvnpsplmlkpqhmmqozqooqlkmlrlnkqqqrrnllmlpqqoklhmprhmjtnmljomononmnnpmoooposmhkilmyomnrqpntqkqomjmeqqkhliomplnknlpjmtkmoqolupoopcmnjopojijlllnqponpwpmƒormqsrhlomnpnrmkplclwrminqtkmnqvsqjomsmvpljpopsleionpnrplfooisopntlnnmokopkpmmptnxlmnrjnlriplnpiquppoqlsllqdrqpomooshlojolmoolmkpwkrkoqmrklkpnhnnjiojmmmninvngooklolmmlqejnmelpsliknprsmoqllnpmoljkjnsgsmpsklqklumopjqlqpjqoonnsoqnneklfnnqnklkngilomopmhnginkmsjinhonnzklknomrmqqnokpmkmtojrogmmqrmqpliqlnouilnjlovkljqgpmslfnhmnlpnopqokorlpomosnmpqpmstjotnnonlnomnpshqqmorhjlsmpgirplxujnknnokonokpmljgnxmhpjkjrosknjxlmmmopnmmlsllljnkpswsimmkiprjsompjhordkqkvohuqkqhllsmoqvntklnnnmomnnjtknonjlonmleoinjplnrnmlsilhnpkpl`lkmslkrlisplirjinmjnqnnlmnkotmcimjrkslnikmllpkgpiponbopnunmlinkgmnomomsjqkopnrejohonmdnnipshnpohqrnzlojoppnnmornoonqljmnmpkshmmpnrkpmkplnmlnhlprocmmpnnoqyn]hnmqpnnktnrenqiqlvqnnnrolohnqmoqonlllunebppknjfinmkimlpugkqoqshpioompknnqsqok{osmprlnmkmpkpqwliomrkolstspqitklnojsqjonprwolpqlsmlnttmpnojlolmmsjnmrowlqkkpmhlomsp_jlqinlkmirmmqnmmllklzrkpkljpnlolmqqwnimknwkzqrnligpsxkrrunpunkromtonqqokpkknpnmqrimomqorqjhsozdnrmlmqlmnmgitldj~mkolnpikkogwnnrmhiqliieppsnohookl^ligpokolrpijnsxjgnlk€kjqhnommplollnnqmronkinqtmfotmukylplojkioprplrjzlkjihnqqnllkmmofprglonmhpqnjphpljiojslioqkpxlmn`olonwlgsrqestpronnspomhokmnj{hmhmkswnlkmksnqtjvmqkilkonknmjmoqwkotqnqlqvnolsirkkklkl€jtnownolfqjlmepmnqtmptmnrllmqmminblkvvnmrsonhkkkexrrvmkypugkotpwlitmfipnlneoonmvshnmsjonmnmkktmmflmmkghsiphllpmppbptptnnmnrjjnoumpglqnmkwnjpmtkljgogtuzom{npnpnmnjqdninmtlolipskmnhoigqhsmmqlosjnlnqrpojpqlerojjnvlihmhkjpkjlokqljmloqopjpkmmooqnponjtumljiminmpuqrfjonplqonkljnimnipuopnjkipklpmlnimjrkomjroonnnsjmpnhpootrsllhlprnkhmoopkrmnoolljklhkmenmljnvliqojmpoklvqmnpomnpnkjlomvsqomlelpspnqjrnonlpljnonnivlopntlpoumnjslpklppqpmhmmkmkqmmopnlinsnkmmjljmkonlkkunqlkpmonlrloqnlolnkomokqmkrqmnqnnqmlnnnronqqtlnnmnljrpppgrollololontkkoplnnnnorjnnjmlqskltltmonmnwlgnnnnmrpnmlpmpvtkoknnlsnognrmmpoonopmonmnwjqjnppqlwkkjnomrlsknrlklonlnlrkrnnknlmljqnlsmnoqponjmlollpnmpsoolmlqlooqqmmolksknqinmlnpmlolqntlinnnnnnnhrplinmkmmjkmpqj\imokllqrnowklonqieidvnsnllpqsnpuxijunnkrjpjrmlmlqqollppqkrknokepfkohbqojmrkknplqpnpqtkmrim{onnrnpjfjqprvqrppksjqnllphelsnjmglspd{mnkligmlroolrqumgnmflhoqmkngnunhngmmqrpkxorqnhlonkjnolnnslkljvrhojupltvmntoonnmusnoopqosnlpokrpimpmponohipnqlollgeplshnfqvlpjupijkmgomplsmnkqopqrekrrjnjktrnknsnlnmolkppoujqnpmlmhoorknjmqjopjqlpmsilmlmjjkpklrplmokhnpmmogrkkpmppvloklqqmvpnlppplmnnonpllrqknkgnonoqhloqojonrqrkgqjklpjisplpeomnosfpmoocmpkmimmpoppekpplmuppprrqmisltynnmhqoeoiojk|spomnpoklhmmqmomlqqlmmmpnomhgjnnqlimtljlkeijppilkpoXopmipqjkveqoqrotghpotlhjpmkonmlnifjptlicmeoinjkmmnrmnmlnnikmmmkkunnqufosktmmnhnpkjrugnnpkohhpkmcckiljejglpnmmooljmmtropjkmksjiimyommrnpmrpnflmmfjvixpjmvoviiohrlimhfqjqjlomoo]nqhpstmcnomnmkqnjpmuooxupoljnfijooonfqrvmjojinfjdkklrgqkojjfrjlhloontnolbkmjpohoidnkmjjrrisjninnmjpooqloqlppimiopkkklloprin}mlipnqnlmoofokpppknqmlqprmlomollqoniommkogsmmqanoqokjnrnmniilohqyiqoiumnipqpmoemjomjpqmnjrjkipqnngpnmlosmksqqqmqshnmnolnpmpnulokmpqhqdmpqolhnqdomrhltijolnntmtksmarnlorlknnkomkjkommrilnomplkofkomolnolsliltlinqpnjjppsjknpomrrrtnoqlkqqmpolmpumjmvkxouisklrsmlxmloonlkmsmnqqnmorgppmomnlnrkoolxlloroo{pmhjrqnsnrlhpjprkjppvnqri|jsorpmoolqpropktkonpormtnlrmojjnjnvpmnolpnwlplisnpoopqmgslkrrqppmjosimqkmiqmofnlqssklmpriroolqonvmkknwpmnprrsmnkmpnklwmlrnsjoklonlloplinop{arlsnsetj_hokpopnkoblmjkmolnrlnmokimsofpioofqrookenspnompqmnkmikmojnchowmtqtolrkmvqkpdwjltnnplgrnmigjoejczmvmqrqcuepjjomqrqo_rpnktkobqogqpqnjmljkmjrmuionimvlopmmpmikhkjqpkpfpnfurnlnkpmpvoosippplmktfhmkmoynonrkopokknjmrsmmlnqnljmrkmojinnllllikonrjo_igruskmuyjqrhrwpgplpmjnoqqgupoognomljlrqlntnomfnnuqrrojjmpofnpmtnliqsnldnmilmmrtqomomnegqvosnonthmlhlikpslkzmpivuknqsomkwmnrikpoopnmjnvnjcmotjtkombmnjqslnrqmhhsnooonknknomjlrmmpljpsfoimlppjmqnnqskjkn|mmnjjkkenijlqmnpnstlmdmeitmqriijofqsrmttuhikplmmkllnskjplqommjoostplmosnpljloijmolypnpinfqnomfmnknkpnnqnjsuimmpqnlmpljqqkqqnnolknnpkqmmprqmsoojoioesnjpmlpolljqooppknlmnjmlmknmmshpjljimpkonlokjjmnsijnnhgmllnnpmkoqkoqpkmssqoonjkqorkhllknpnnoknnsjngkpjknqnormmpomwllnlpgllnrmonnpfklqpkpklnfplkummnkpmfnoqmnqmrrpnnkonqgmlrmmoompomotjlpkqppnpompnqqnumnpmqmognlloijpnpqknlgqkpsoqnkmmijoojlopokkqkrpjqlmlpkmontrooiookiotchpkoplomllohnjqkjninplmlnoponopmqpmniqmnjprnooqnmloorolntljnlhollnomnlmynnqppjlpl|spkjnsooqjpinoiilhnnhnorlqrljqwgojrmjmpnokmnnjlnljmmqmlrknpnhookqqnnlpinonpfmknjmpolnmrljkjnlmnimqmromnovmrlonnjljlknlkkorooolj`kjmqon~lnmgpnyqkmppposspkqlnnmippnmhlqlokilpjlnnpoknlninllnkmllhxnltlrslojnkjopjrijmoouiminonlnroooqnmuqkkmnpnboqpppnvpppujpmnpztoknnrjnjlmilojlmmomrpmjmkrtprusupooaqmlljognmnmoinnp|ljqlllmponpqjjmpqlpomsf^0ŒŽE•v!j¡tz¼6¾}uI0Ra~`›–]giX¹4<G‚¤mHOOit{cˆKš~x]8lCb‚4q^r?T8 €‰v^”s“¼‚ƒYktAUC€la]9kGƒ”<› !Q[iW_j|ƒVAW¾€BirŽPk{|™žŒUG[WVL\XO]^dW[VrX7VOXT@AW_Q^[WX^CUIOTZS[W\STS[TXVVXWSNF]\QPUUPZTXRULYTS[XUVUX[TSUVUUN_ZVXXSWXMRXXZ\NXZZWE\UU]YUWWU[[U\ZYXW_UW[YL`VSFUXVYVWWVPSVTOUQVTWRZ]YXSTY[UUYXX[XSUTZ[OYWZRQ]]XWP\SWX[WSUJPVXWV\UPYBYYVRbS[@UVTZYVUWa_UY]_LYTTVU`XXPZYYVXWYW\UPWVRUVU_UWVXSRUUY\SQ\[VSXP`[VTURX\RRUUUW[\XXXQURT_VZWZN\TX^ZVWSRUUR[UQRS]\ZTcX[YUWXW^QWU\Y`?[ZUV]WWR\][RRYXZZRP_ZWRU`]?bMMqSUR[XYWVYi[ZZ[UPYYLV_W[VWSTY`P[T^Y^V[WYMJO^TTZY_YSIY]\[Y\F\TL]Q`\[]^VYQ[M_S[W]\^b]XO[VW[YX[G[WWXxWT]SVPWRTYTfVVXWX]^_XTYWgVPcSqWVV_\VZVSXLWUWQQcRU\OPZVGZbQRV[WYYLY[VaJcTaY[MXXUVOiU_TVYXDYXbYBWTZUYXXXVHU^RWWU\`Zc\XO<_ZW[SYBZWAZXR]]ocZZT\XQYYR[XJWUZ\YT[>`@]YTRV9RZZqP\WVUc_TVY\TLY€ToRObkTZ]eVWZW[WX]VbVtZaZKa:RNLSVVW_iX\FRVVNWTdYfVTWVXZYQN…]XRXUUQXVVVV[aWVUXPTQY[SX]L[XXW^Z[ZSZVZZWZY\XXW\SXGmZTSVYW[Y\XYYPWMY@OVW\W@]XWPZWTP[[YUYWXGZMWTO_YPRWT]XY]ZRWZa[KWYUXsYVX\VYYWVNXZ\WYZZZYLLVrSXYXXaWPXXZ[]WVVZPXRURUSTPPYXVWYWSX\GWVUQVXWXbVYT`YYUWZWPXUPXXXW\UOXXTWXZRPWPWSTXZW[YXSYM]WYSU[ZYWVXVWWYVVVV^[YSZRXXUWVRYU\VVVXWY\dSYVUVTTPWZ\XYXYXEN`YWQTMXUYWUWPVVMSXSZXZVWVWQXSXSVUaV[XX[Y\RS\URXUXOVOWSZS[`USWWYSZWYY[VW[X[VWZYZTUTUVWXXWQIWZUOFTU^Ti[XS[V[YYNTTYWNWSYGTUYSTgUcVQP_X.TRSTLQQUXRDRUPHdRT`WZKURVUmRTV~bbSYUtFTXrQRWORUR U[SsXh^\fRROJUPOYfnUdJSZURWWyU8SUTRPUTkTgWQJWVSUPTTSSFOUSRR`SEWSb`W`ROU`WUZRQYXUVMVXY_ZS_\dXX]WUPYYLVUUQHXNZVY\XXKTXX[ZZY\[WSVVYMW[WaW[UXYSZX[^WSXXJVWMWZVYYTQ[RZW\\LZVSSf]SMY][KV[UYUZV\SOZTVVV”T[[VYXXWXZYX\_VY[XSYYYVXAYXTKLVXWRZZWXWZYYPVY\QSZUh[YV\VYVRYWU^YYXiWeNSPIXWWVV\YZURWQYOXLZVLY]XZWYWYZ\Y[YTZZWYS^\RZX\GYYTYXYiUVVVRhXRYXfSVRWTLVURZISVWWW`V_Xk^Q]ZTW\ZRWWNU=S8CcUKUFQUXQWWYUQ][fVWUIVIWeRkSIRRVQYR_SnSS_XMUV?T|XTWVPTVOS^_bSYVUURSQ_WUcWUTWUTeTV:U\PWVNWYVVXUW[SWSS[_VVVVLVdWN^Q`]PQ^X\Z[HVWVAQZTEZPXUXWWQa^ZUWeURYOWI]jQLOPVZ_WWQ;T`NUQX[XXXXUZZVTXYY@YeWSTXVTYTTMlVRNWZRWVS[XWSUV\WVMVTVXVLYZXZVVITWXTWP\KDCV\W\WTZXSX[`V[UkWmTTSjWUUqUWP\RSQZWWXlU]UQZDWRT\]YWYkWDLWOVPVUMUUY]XZUWU]Y`]YXVTV]VVYX]RWVVSXVTMWX`X\\XWTWXWVZOYd[XU\ZVXVWUPYQQ{RaUW[XOYUXWQXbWURkXVT\UU[NU]TWVTShVTYQW[^[QUZSZUW]SSPUZbXZYYVX`WYWYY]]UZTVEVVWWYYUUU\WVUXXWUXZV^]\`Zg[Q]LSL]^[W^W[^_TDS^\WRb__UZQtXUW_S\`Z^XYV_VRFUYOZcYZY\[OVeSX]_Q]]X[SL`TZVMV]^ZV][P_aP^Q]U\^b^Z_^\^_ZZZ^U\\]^\a`WO[P[Z]X_U\^VXSW^_WWZ_MWWTQ]_VWYY`WWYUZM\]]XYYXaWUQWUWZVXXUL]V]_XLTWWNWcUVWTX\YYY][VSRISVXcZYWVTcYG[YVWWVVOXW[UVY]UVKWLWXTVXZXW[Q]_WR[YWWSXIVXUWT\\ZXZ]WWVVVXUVWXK]VZWa:WTXjaRXTZT`XZXX^XLX`YMWR[MU]WRVdWYXS[MYXXc\`\]V[VPSWOZXPdWYWWXU`YWVW^YUXW]XVY^DT\UUXTQZVMP[XZZVYVVVPVUJRVVSVVUSUUTLXMVVVXWV\XRQaTL]YOPYU\XTQXVUOW[XTdPSUYTQXRSUTX[QWVHUYXVUS[\ZXV^TUXSUP_ZX`WXUXRWPSZWSTQUUQHXVTWWWXTQSR^ZYZPSUZT^R`VWDWXRWZZZeXSXSRYWXYZa[UXXSNW^QLaIVSNYdTRZTLXD[€SNP^ScWYV[VMUVVVV4WSX^UQZQiZTTWYUYR\iP_IW[RVW\CXRWXWXZYVTVvUSXUYRTUUTTYWJXXXVfToTVXS^]TZZUYVWRYYVPUXVPXMZTY\cTZXPSOUXcRZU_SWTVPVX[Z^b^VQZRPZWYcVUVZV^ZVTXVZPTYZ[Q_UVTcVWKXPYY[YXTUT[VOTXUYZcVZVb[\P^YYX\YV[RTU`ZZZ\TQYUVVOYbWOSVZWVZYWVWVPWT[U\\YU\ZZWYSQXR[KXXQ\YW\QWVZUXYVYZ]WTVXV]aU\WXXPXYYQTWYX_TSYRWPY\Z[SQPTRU;ZVUQP_QYUVLUVN[VQW[YWV[X^ZTWrZSHVU[SSUQVkQ?UUYR`QTX\ZJUYvKNTSX_VPV]VSWU_UJ]RRXTXVXXLW_TRXTTIVVTFXZR_DZT]\XWQUTdUJSVYWCWROWVTQVTXXU[NJRYVXWQLZT\QTRIOVYTESHYRVUOQWQ\KWUTXUX\TW\[RPUWPXVaUY\V[]ZYY\SUOW[VXTPX]MdTM]SQ^bZZUIY\ZUT_YVXXWS]VXY[ZWSW]Y_XO\WXUMZWYXhRRUUYUF]LUQNVUNGPWXOZ[YWSO]UY\Xea`LV\IZKY^]QPd]\`XWg]Z`eP`dimmg\SVc`XV\XR^T_;WWV\@]YVU]]UUe\ed\RZ=[_TPbH^NFQY^UTW`xQ__]ZT`i_xXT\Wa[XV`][_ZX^f`[WNObjL[[]XN\rXXrWW]WZJXOWXWXW_UYZ[[YYVR_RTB]Hb^^\TZYVUXY_ZY]^WVXXW\V\VaWLXb[TZZZWYGWVNW^JZSSWUXYTmX[VZYZRYPOZ\XU[\ZZZNWVUX[WXWZXYN[VY\WVTZXUOXYZXRYY\WXVVYQRVZTYYTY_ZTM]]\[U\SSWWW^X]\PWV]YYPUTRRdaPZTQ[WWWPYYdXXYU_PVSUTR[XZb^VWWZ`T\W`ZPVVT_\^XWb`^UMTUUZZ]Ri][WY[YQSZY`Z]_UTOUTDPXALY[VU?][WTZYhcZUY[VW>M[c^URWW`TXURNYNUK_qPbfVXTOU[A\YX[RaS\[K[S[kWLXMpVX[VOT\WOYLX^RcmUfU]WUWWTOSHVa\YU^ZSSjJ[LUWV\V\VbSTQKV^X]YUXTUZUUOSVHVUUZM[ZQgXZX[XXZWU[[^[WTTXPT^_W[W[TaV^TRX\TUb]^XXXT[RT_TRUVWaTZYVN[VPXZWWUW\WI]TRXVOUK^cRVVXSZYTWV\X[]YTLYXUYPT\LXU[T[X\MQXZYIV[UU[SRYRX\V[RQZXWXNUY\MVWWWTVYUZMZ`ZUWWUY\WPXKXXUTVXYYVXWSXVVZWUXTWXVVY]YRRTYTWaWHURQVaWVYQURVTZXYWXYZWZNDY\[XXLVYZ\YpVTWVRFUJTUSYk\ZYZ]ISCbQ@BXOLVUW^XW^XO\TY`PZX>OYSSQ\aUN`R`XWVURW^Y_cKWY[XRTUWWTKNXTWaVTYƒWVU[aXYa[[WVRTLYcWVYXXVX VPWTWSWYXVVdXWYXUTZ[XRVVRTYTZUiUCSXbXSYWXTTWVSWPW\SKTXW_X[LVVMTVTTU]ZZW[XQPSURYR[[YT[UdTS[TNV[YXYQYYXT\XWUUWUNYYVY`ZZXRZTTY\XTRVTYQSN]_T[ZVU^QUSZZSQOVUZV_VRWV\ZZXXXSbRURYYX^YYSXTMOOYT[WZ_^VWTVUOVZYYg\M[WTYVVYXYZRM]XVVYY[XXXRWH[WXL[STTW^WWWYZYNYWZSXYWWQVUHXMZP`SYXVVVXVPSTPZQNV^XUSXZKVWIUQWVYaOXMYUW[UUQRc[TLNTYbZTWPWqPNBT_PXSUXaSXRRYRHW{\L\SVsORW^ZMP[RSWYT[UVRQYP.DNUKYXPUZ\QHYUUTXXSZW\TSQUSWUTQRS`NSSTPSTTKYKLWWWWGPUWWMRW_WXSjRVRObVP^V`S\^XXW`PZ[][VWXVXUGYLZUUZWR\SVXbZN\[_`LWYX]VX`VXU`TXYQVXWTTVUWTSUPZZZWXXYQYUZVQRXTTRWRWNWPY[WZbQ\XRZY\UTW]WXUXQXUVWRXbXWYMcZTRYRXVVWX[VUKVZSTUVYVb]]YQ[WZXPW[VV2\SSXXSUVW[`SVYNUR\WX]V`PVXWLd^ZVZU[VSYMZXXW]W[ULVW[WVRSWWSVTOOJUZV][XbJfN[VUUW]SC\UOWWV[`_VXXJW\ZXRS^YZYPUXYTXYZWRWXQXOU]YNZ^^SIT[V\^\OXWX\WX\SYZ\OXXTYZQV[VXMQU[YTV[WVUYN\][U]ZQY[TTTXTWNZWU[^XYWVUWQWTMT[U[RYUX^YWXRY[SV\ZXT[XYTQQ\KVWZT\P\RYVTEZVZKTWOTR]UXXKU`VNVSZTXVWUbUVV[[\WZQ[U[WUW][UWVRTYS[MXYTT[YWUUTYYYXYTcVS`WFYZSZV_[W[VPTZSZ\\d_aRT_NYR[_\]T[[[]UNRZYYZc[d[TWsPRQ[R]X[X]]]^tRQWTWoe[[N\RT[fTY\^XcXVM[OQN_^QX_\ZO[YFU\W]M]XO^S]YYZ`Z[Vac\OZX\]`^^YZ]RV^Z[_Q`BSZRPe]VZT]VXT[WWW]VXU\YbUXX][OXVVV_YU[RLXP^UQY[[ZWYTaaVWYXZWWXTUZV^YTXYSUWWUXXVSWUUTSVUVXWFWW\Y\WZTXR^WNXRWWVW[\YZ\[YTXWVXVVSYbZWY9YXZXZPUPWXYVWVWSWRKZXXXS`ZbP_]dX[UWQY\ZU[WKZV[kVU[Y[TX\\TWTXYUaZXYmYXYRS`VOPVVWX]\[HY[WVJVW[WZYYWXYXWRVaZPUYXW[\TZ`_cgUV\\VWdXPPUQbOTcTJRYRN[MSRXQdSPUYZd\hRNXaMNhXFORXXZTSQ^YhNU]S\MN^V]LYMPPUSYV4XM^[JMWXUSSYQXAUPcSBRSTYGSfSRXWQVRTW8UVYUSW]SSRSYQNOQ`URYWUUgVTOYUd[OVWXXV4R[WP`XUUROCQbQ‹fZY\[[MWRTXjWeXUdx]YZPYXYdZ\\SY\UQUVZMZHSZkGRJXTZPWQ]\NrVYUaUPKW0XQVSVVT]WHZXVUYXTVVZOTBMYWRVfX`XSNZUXUYKZTYZZY^ZZZW[X^Y[ZV]VPYrXFYNNW`ZYYWSZ^\[dXZKRBSW[EZWUZZUZn[PXSXSOUWXVVZP[U\W[UOOY]]OZYsZJXRXY_[[Y[\RYUYWZ^[YUWWJ]WZMYe[RSW>YYLRTLTaWZU[^LWTVXW^VW^WMQ|Z:TTV_WTeWTUU^VVXcmQTKbdQWSrV_UVVdSSU\Tj\H\VExXO[]UYR]DXICXQQYV]YVUWUVTSUWISXXR[PXU[QYXXROHXZVTQUUR[YWX^YSVXSZQQPPTRXUXYXP]ZZV]RVRY]T^VUW^ZUXU\XW\ZYWYW^XTV]HNZYUW_XVWZUWKX]SFVS_OY\XOVg[]SRZsVXTGWUXTHgUPhSXVU[\V\JV]XaXRFV^XWWYWTVSZaWVXWYUZOTWYVbRVXTYOWUXR^]_XXYS]XNVHSWXXZVSS[VX`VX^WSXUZWVTRVOZSZRbXVTXY\UW[UYWYWXUZWU\YTXWZ[WXWZRXYWZ^S[WWRRX[ZZWXUZKZZ^TPhNYWSZTX]YaZ[YN[VWUZQX[ZYXWW[QVSLUUWTUYSVUS\RUVUUPWUWQNVVi\R\YQ[WMTYTZSWZX_TAUVTCRTVMWVZZTXTRYUSRT[ST7fUM]STSYbb^F`YMTQUPEVGXNWU[UVKMKXLTWW[VRY^\WY\TVVXKSFWUYTWTTWfZRWRU]YjTTW^UNSWXXQ[aRVXXWWUUXRTVVBZYYRWVWTSY[VSRWbTQTZWY[UUOT[VOVZXWc^VPRNWTGjTQSSVVMWQW\TVWWVPTeZWVSWXPZWXZ^ZYZW]WbW[TX]VW[YWMYbWV[X]WWTUXYUTVXQ\UgP6PRYYYT_Y[XYQUVUR]K\QQ^ZWXSSJ\YVXYoTWTUUWWQXOWVN\WWXNSTeCVQVLXX7WqWZV[TWXVUgXXTUTSZTTPiUT]XVUZ\UIZV[ZUSVXYXUWTY_VbUVZScWWW\Ti[YVOZOXXNXWTSZSZVOYK[JVY`F\XXUXXX]XWZ^VYXQX^PTbYW_IZ]YVRdW_[\WWRVUXVYXWVWZXXY[b\SYXXT\QUVdXTVZXVX[WJY[‰YY_R[YVVXUXIVMY\[Xa[]WYU[V^XMUYS[UZlXRZVsZ[Yd\kY[Vh^ZZYT\Q`ZWYTUWUKYDY[4AXSPX\]XZiW3OZMUi[YIYaWZX\WYZ_ZzPR\WYSZZVUY[MZXXUCVWQSWSLfZQW[WTUUV[QWSSVWRSQSRYOG\KPXR[YQYWSTVSUVSD[UUXZAhVTbSSRUXYSKWVPMUSQY[^W]ZWYJXUTQ]\T[NURSTT`TUTTLTUZTUQP\SSQ_RX]UPZMWUSRYVSY\SXXf[YY[X[Y\[X_ZZ]V]XV\[YO\G^^QIUSW\n\[\Vv]WXDKJU\XN[^YOYVXR]YWNXVZjYSSUGNTHgaVV`WD]_][^Xi[_E\VZV[[YZX`\DX^VZYZW]\Sf_P]\ZYYSZFWOWTZ]XXUZVQ^YS\YVWTRX`XXfU^KWUY]YWWVV^Y_W_UZYRSRW\SYYS^\QY^SWWYS\[TOQXTVUZXUZXXXVXUSZOSYVRZV][RZ\\UXVWVYQURWUW[]WOSVS\VV]_YSWXYZRYOTXYYYHZZVZP\YSZXUQN^[TSSQUUUV^[WXTYTV]PVYY^TZYU_^\IT^WS[[UZUVWcWWaDT\W^SXWUYUL\WZR]SWYRWXYTDUWTRRSVSRU]SZ]Z\NOaN\VTW\MU\^QYYVSaZXNWYWNXQWWQSYR\X[UQWXWSXXZ^`^VVZURWTWW_UYXXWRP\UT]XVYN\S[RVYXVSV]\XW`YS[T[WUYRWXW^__ZYXXYaYRQZVWRWVVXYYUVTRTUUVWXWTYYWTRYZ[]WWXX[UVYaUVZX[WRIZ[VXcVZVWVkVE`XWCWXT]dXMYWiVX[eI|U`RVWWXjXWOZYWWZYSZgWa\aPV[\XTYYWQWU@bXdYTVW`XVZYYZ[ZZ`cW\U^X[V[QSYVTUYZZXYVXZ\Y†[bLO]TU_YZ^XU^]a[XEZWY\P6WYUs{Y\LU]RY\\[P\R[+_eeeWM\][C[S\V]SYb]YWMWW\_op\^AS]]ZO8Ydk\T[[[VXWoZ]]]\[YV`‚[O\YY^WXORUae_]\[\_Z‹ZQWS\_VWQRYUTWO[XQ^VVXYWW][XJTX\U\WYZQT[VWWWOZ_WYYX`PXUMP\b[ZY@Y][RXUV\\Y[YRVUXSYZXXV[YXdZQVTWXHYX[T]W^R]RWkYZS[MZWX[XXWXKQV[WNXVVRUQSZVWPUVSUSZMWWXW\RUZVXZSWODbO[[TW[WYWUKT_WZP_TXRbXTQcTQU\TUTKQ[VHUSWM[NSX^V[RVX`RWLVVTRWWMXXWVVZSYYLSQRSVVUTWRSRZVZXUUNWXTSVSRZWWVRU`X\NX\\WSNVUSRU[X[YOQ`RSR[WXGVZ\XZVSUPW_X[K`RIY]PV`^WVYSS[RQ]PV^SfXTWO\\ZOTXWXXU[ZWSO][XYZYYWXUZ]SYWANT[JOZ\X]_YQT_ZQKXY[U\YZWUZVYPRMS[XSWZWYPWZQTRWWXY]VXYZ[]USU[SXWVYVZOSYTXN]ZNSYX[YYYQRW]XV\VXQTYVQWYTUVY^XTWSZISURYZ[VSRWZ\UZV\YXZQQTRYUNZYRRUSX\XYU0VSgTVWVRUVW\YLUWXPZVUZZZTYeRLQVU[UUgZXVTSXWXDVUYMU]WWVSY^ZUXTUUXVWQW[WQJPWO`[XSWR[V^VWXXVUW`UUXRYXZVV]VZRSPVX\ZXYN\]YdSVXVPTYZTyVXNRYeQ`WXUOSg[VYSYOWW^[(\T8`a^VTY\KQ^WQaX]VHEaTYhr^UM`XVQUS[TxVQZOTb]XH[YK\\U]O`o\bS[VYSRXOU[VUWYSWVYXvWUUVV`Y\S`T]BZVU\VMUgYYPTXWVQ^eVUZY]WTXVTWT]Oe[RMXX_ROT\ZZTT[ZULV\U`[U\\a[]XcOXTSQWZWDUYX[QZWPU\ZTZXZVR]YTOWWTVUY]_UVXQVQWXgaXaSDWaYXLPWS^W`YVW`[WSS\VVbTZ[WWQ][XXXZW_ZYUUFSYXVVVTbc/^[VSWYRX[WYSXYVdSE^QZ\Y\X[T\\XWU[MY\T]VWZTW_ZT^SWYYSXYVTYQWhZOVYaXXXY\[ZRTiXUZXYVV\[]YX^[WWTYQ[\UWTWTaXZL[X\OXTYYUVPXTO\T_[XQX`YMXYZXYWYZU\SUVYZVXSgVbSOS`TXZ\\W]TY[[VXW[TZ[WYTV`TVTW]U\SYVVFPVTYTZYTXTUZQZcTUUScTMXZULWVZMTZRT\SRSROPVS[XYRXTZVVX\VWSW^ZMURcXSY\XWXVTTXZNXXYVSSTYTeXWYP_]OZYV[WZUOX^UW[TXZOOZUXYZTZXNWTOX[XVDVZWWMRT`Y]WXWXYPXPIXV_YWNWYUYXVUZ[VWXTXKTXXS`XVT`SUSPTPXVXWV\QVGMUWoSR]YbYXYVHVYVGNZU\[X[WVhVZH`[WS>SS[bWH__`BUWNZSZSOZWcXWYQWXZAWUVZSWRXU\\?UYZTTUSOSTXZOQTU_VMQ\WY\XYVLXdT^Z[]IUEZVVWl`WVZOgYb_es9ZPR_nZNZVM[H\¦O^MX_|ZXVu[fda]VV;VXVYV_WTYqWOqT_ZZibV]G\OXSZS‡YTY^WWWYXZ\…]R\XXY`NYa^TbJ_XQ]O]PVZTZVWUZi^TXVUZWRVZWZSTVXWTcSb[POPW[UWW[WWWXWXZccc\TWYRY[ZW[[\WYTGYW\9YOSVj[UbXWZZUTTWGdVa]SYQIXcYUXTWWW]ZAZYTWVXUVTTRYWNZXSWVRZVTWTK\V\Z]WY[[ZT[VRQUYRZ`QOXXUYVT[[YYOTTTZMX\XW[X[YUagWaOM^Y\XSSSSS\VZ[YXWZXX[WJbWXYPYZb]V_ZTYWWTYYUSXTZ[T\K[RZTY\cTVW_ZZZY]TW]VVV TTKVUMUNWWY^]QXWYOZWUVWYETkWbQLZ^UTOXWWVKUNXhRmNLX]RXST]]iZUUPIWTWDYNYKY^XRLRUYS`VVjZZ^V?XVVUpYIYXWWWUVWTSOTV^\RWZPY?}YUQ\[VQVXXYSWWSZYW[ZRVXSJHXWX^]X\WRQWV]_W\XYKWZSOSWPXRW_YXRU_\YTSW_WXbX\Y]S\ZPUVUYWNU[XULXYWf`TYY_ZPTUTW]UNV]VW[]WUX]TVSNVVWYUWZ_VO_XQ[XSsVY@ZWVUNWUUSSZXUUV[RUUUblMb^Y_PQRRRYTTVTYVaTdQXXU\WSSVTXXQSWRQgU[WŒX[O_]IUWP\QZV\JPbbWVUVVXeRNTTXUWRTTZgPTTWUTPTO\`RJTSWUVcV`X[]XYZ[WKXLXTXWX^VWXXTUXVV\YW[jdYK\YVYm\YVZSXQX_hXVUZ^VVWTW[ZWXWWdVUXnZa`]ROWbW^]XSNMVKeWZURYTLVOXUYXV[ZSWOWSUZWQTUXQZUkYXZWZOVOQLTYN^YUX^STWMYZT[PVUWTTVUHU[^\XWY[WZ[XTT\ZVWWR[ZZVJ[XW]W`RU[[cW^ZZZZ[MSOXVWWZW_VNZTXT\V^YPYS\ZZV\UTOVTPTT[VQYQI\KNL[YbYZXU[URTTZUKUWESY`ZXZ\_RYa]Y[XeTYV\T^XiP?W_WWVWaUUY[JYLY]fZP]Tg[XXY[TUYZV[cVU[UYA[U`pZN]\\\UXeZ^E[UVNWX,YaZVY[UZX_`u]U^VY]ZV[UVUb\^XRZb\_QW/VXKXV^TRVUS_TNRNWYWSUWXdTYcB^e_YRgT]TVWSRVUVReKWSYXURTd[EIQWRSYW_VU]YWVSPVX\T\UWcXYXQXbZQDHUOVUUTRSXUTZSTQUYbZVZROWWVYZTXQSY^YVYEVYUNZVRVWTXUW\[RNMR\T\WWYWXUVTWWRSPYQXYXWVUTUVUWWRXWV[TSVNZT^Z_ZWVRfZ[RV\WXUZWWYVUZRM[aWWZWTYWW`VWV[\WSWQ[VZTR^UW_VZSVWWaUCXTWXNSYZUVTZYXYS[VT][]ZQYYX^VWW[QPRQTSZY[WF^OXKY_`LXZWZVPRZYXUTUU?TOSYUVQMXVRIUOVSTYh^TZZPZUeBKdaV`RSpTVWUSVXSCqVSUXURTVGYGWUVTTUSYWNVNSNL`RZYRYLYn6RPLTTW_RWOTLXKVRWUTZQPZZLSSXWSTW^Y`WUYUU[XT\M_\V`T[TU[WLYZWWUTZV[UTTU\YNS\\UZ[XUR]VUUMT\WR[a\UKT\YRWSWXTZWYY\SXUYXSVUXXWZWQ[WYV^RWXQXYV]VUSUGWXYWUXXWX[TTQLYWUc\XYWXWZX^Z^YWXSUW]XXUVXWWWRX]YWWVQYVYVV]]_PcTaX`T\[XZZW^UWURPEWWX\`VYWVXTUXXUAWUYKVZVW\WXVU[XZXXTS\\UYX\XT[X^ZTWYWUYOW[XVVXWWWXSQWYSSVUVY]W[WWSZZ[WVZUTYVWXXRXY[W[XXYVXRX6WIT\TXUXY[VXYYYXVRZdWUVP\SXOWLUVZXXhUXZ]WXWWbRYRUVYVXTUZ[KWXYMXU^Z^ZUY[UXX\XYYUVWVXXXXRTTQ`XXUYNWF[ZHaSYYS]USZ\YQXWUHUS]ZQRKUSYVXWQYPXZYPZVW[WZW[TSWXBgYY\L[\OXVOWQUZUV[aXNYTRXVWT`iWWUMPZ`VKW[c]^YVVYac]bU[]_NWU[X`TYUUiUUZXV`RWTSYAWYa\V`Z]TUOSZRRUTYTRSVSVjU`Q>VK\nQRIXZRUMRQV_N\WIZXGX\JWgUUV[]PYXVGUdRUkZPIrY[KWUXVSZR\SPUVaX\SPUPUSUPRTUXITUSSTRPWTSVVWSV\UXZSeWRUWXZUXYWWWR[]UXZNVVXZ[F]PPTZFVUI\TUWZRcXXXaIPU^XSYWO\XbORYUTtXU_PXQOZNMXWRVVUTV_ZoYX\XOTYRUKWRXTUWTTZgUQWXX]ZXURVcW^UX^WX[]ZTwYU^XW\XVXYY^Z_YZW]aW\XTUXVJT]R`SURZXZUWXrX\VXVJYYNBYUWHYTQVZUZaUUX[XURWW^YO^TZVVTOZ\VX^WTWWPZOXSWYZUXP[U_V[XZXYXVWUXUSYWUVW\^VWOWU]VUL]QSTO_TTSVQSN]ZVNPSK9a>D^KcXRSS[RT[XTR\qE\HTGOUUDQRScT_WLVVO_TMWY>SX\YPSSN[MZ@LQTRWTQGVJSRXNXUWRSCNXOSTNQL]ZXOJTTTQRQP[Z_fV]VVYZPV[WXRXSWW\PX`R[\T]\\OYYYXPTVUUg]VVZ[_]]\Q]LjG^XMUOZYVXYbYU[OTVWTPSX`VW\[WSYVMQZUYX\_Q^XZTUYYcXVSWXlMQYWJT[UZQVWTT[XZPaS]?SRWX]UV^TZVS]TWVYTK]W]WTVTN]HXWTwORMWX\VVYKZ[\aVSaBXXRW^ao]YRSBSV[QV^WK[]ZM`V[UXXWZVcV]QJUYOT[TKVRPXVWQ\WWQSWV\Y]\YUKZRVVXRXY\]P\]RQ\f[P^U_OTKZeYYZLZb_W]eUbQIYV_ZfR^XZ\W]V\[YPN]O`UdWM^PYScPdWVThQ^Rf]Q_VXN[]YN[K\V_bR`TZ_RYP`]a[_[VTWVf``X^]NOJ[T^SZ_YQ]PU\WY^UTQNZmMbVTT?XA[VUWdHWTXQhUfRwZXPXVYDTVUYRU_ZJ^:Tcf[YPPZULLeVUS[ROVgZLeVi€XQ_bYSUE\T[VNVVV_UVHS]VVVUYYWAWM\WWRRXY\aSLYURfR[SFQUMDPcLOP_JIK^PDQGLVIKMTJQJLI<@F`NoTHQRRLO\LRRDB4SGOGBPWWOFEZNUM:N[SLQIUa?:MOP[VBUN5LP:FWINUWUN7PDQMNMOJDGM_COOCDKPR^KQIGQVILHNUUaTVZSYOVYUV[^PnVTWXvXWWYSxSiZ`TF[SZWVVRYVKXSVTglN\VOVTXUR]WYXZXsS_UƒTOX^eXTOfLZXVaLTiaVTTRU\\WKWZUWTVXIY9VVUVTWSQRS]VYZXWUWCUZUV\XWWXV[_XUWY[[V\UVWSWSQYXVYTUXYWYZZTWZ\[UTTXbV^XSE[YZX[ZXXXXYV6WXVZ[V\VSWVUWWWEMWXY[ZWNWXXTZVXU_WPYXQTX]YXXO_S_STZZVWV[]S\ZVTXYRXVTVWS[]SRUQTWUTPZWXUR^^QWQ\Z]RUXVVXXUSVSZ_U[XTTSPeVVZ]`RUZUXXSXSUSUT][YVO]WUQYWTWQ\XY^W[W^W\TSVWY\[UWRNYLJVZX^VU\TWa[ULYWYWUWYW_UW[XYJSYXUSTY7WWT[T\YUTSOWV[WYYWT[TRQ^YUPWPZJ\Q\XMYOYZV\[[bUP[USTZWtYXWQZUPTZX[Pd6_X\TB\]XVOZ\qIeRVQ`KXWW_ZW[]V[^@TSRWVV\[PW^L]\X]bYPVOT]VR^]Z{DRZ\S^aXnBZUYlXS]ZdXUZYZXVcYwWPQY\[VVZbjW_PYVVVOX\ZYUSbMW\U_XZSXZXU[P[XXQTUGWUYYVVWWZUTLYTTZUWYVUYSTWYUPMWP_YTQUWXTVZVUXN\WWVTcVWS^R\WQ^UUOUSXTNXZT[UU[IW`Z>\TUWV[ZCUXUVMTSa_V[V_SQT\P[SXSST\TTRZ\^O]Y]XR\ZYK\RX[WY]XYXXWPQS][PVMX[Z\i\cZW^OPX]U]XQ\OWNX_ZbUZWL\WUKOXZ\]Y\NYOSVUUS`YTQNTTRUWZS\ZYUSTTS^W[U_WYYP\]UVV†VSXXTWX_WST\U]TTRXVXSVXUxWQ^[UQQa^QKWZXQ_UYU:I^Yc[GV[TWUTJNV\ShXVWpPKZnHAURbUUTV>[Ug_UPRSSVaVGXTVXVVU\P:OZRRTVQUVT[YZ@SVZU€UJQXQh[bUHMYXZZd\UWVVRXTLYYQRSUWY[VV\XV_ZRUZ]TUX`VXZS]X`WVR\]UWUPWQX][\VO[XXYVQWZVVZXXUVWY_YVXWPZTW]]UKXXXU]UIUV`U[WOWYVZYXU^SR[LV\XH]aYUYSZUZZ[PWd\\\S=S[YXYX\QdiIWX[W[H\W^YWZ=[^TUYZRGZYUQZ[]T]^XSWZVV[`YKsh[VQXW\RRw[m_]hX?Y]LXqVW[]W\[X^PUT]Y]\_[WRUXX}^W[ZTYYX\ZV^SXSU\W]YP]SRL[\ZVLaUX][[W\WTOUXVO]P[\fWYVUV\SO`eZTW_KPSWTVX\U[YU\OVZU[]XUUTeYYZYaRU[XaVZZTSSSWTQRO[WHY\T[T^W__XTRMY[VTWRUWSYW^RLTTUZVYWWUXVURU[V[RXWP[PO\TV[XWSYPbKX[]\VWV^^\[Y\[VVPWTYWXNTWYQ]UVYP^ZUTXYUSWZUTTX`[VURWOZVRXVYTXWVSY_VTSZXRRVQXWWXVWUUX`ZVXX[YO\TXUU[XIZZYXWXUQXTUWYNYWNUYTTZZWY]WUV[RVXTQXUYT^]]TZWSWVUZQU\YT]ZUZVYTXTY[VQ_[YUYbSYOWUY]]VOXS[Q]GUOYTWQWaV_R[MVYVZTTTXUTXYV[XQWQFSUOU\Z[YV[hWY\TQZ_Y[ZUXJkNrX]kYYf[[WX[YR[UKj\]^GW[SGYWYVUVXWNZ\XXYWUZ^NZgQVNQXUYW]X|XWYXXb\W[Z\XXXSXcYUZU[VY[U]CZSc)RPWU\ZTXYZYYYQX]^2XX[YX[VYZYUVZU[`WQYHY]WRM[[][SV]VVkYnE[_VL]UlZlXVXZUY[PVSTYXWYYWTXPQXU\ZYTZMXPYYMZVRU[]\WYXXXQbWZVXYXZUXW]W?NXMXUWO[PWMYXWVSX\BL^\S_\XXQVMR`ZWZ]XV[TYYaWULXWVWZ[ZMCVuRZX[YYW]X\XWX]]XVW^d[UXYUTXRUWZY^YZZRZPXVH]QckYWURZSVYZN[VVW[TTQXTX_XSWVSVY_[[SY[UVXYeXMX]STYNTXVX^YURZUWaVVVVYOW]YXVUVUWUZXYY__TUXXVJQWZYW]SVP\U[\VRYVUXUWYUUUMQWWS_VT[[YLVVWRRQ_TVZT_UVV[^Q\QZRV[XYa]XVVQWX[LYYR^]WUSO[RWUUa[WTZT\]WZIUMTSVR[XTWU\ZQYW\QQWUQfZ\XZaV\RVO]VUU[AZVUXX]ZRS[USY`WTbVYa\WNXWUWXXYPNTWVXZWXVTUYWVZYWZWWYRZ[U2DcYWMZWNVOYWLV]ULzcT_QlWUTMVOQVWUY_T^XbTgRSZQTbUTXYUcmX]CXNXMWWRWIXYVXZUWZXeV]QXSWYVW^P[CO[U[UQXSW\U\]XSVVTOY\\F\U\W]VVXWYZT_]abTYOWT\^`Y]Z[VZYZZYcTZS][ZYJW\YU[SUHXVYh[I[UVOZfQYYYVUT[i_XR\WYWZ\~[_Y\W[[ZZe]T]UYWY_\UPXb=XXV\kXRVWZXVUTVYdWUZVTX\Q]WXPVYNP[YWZ[aZ[TZYROSb[Z][ZZZ]VPSQNTV]`YMWTRXWRZUXZPXSXUPVZSRV]S\[U\Z[[VSZSTVVXV[QQYZ]UWWWPWWOVPaZXQWZXVXV[PRSTdXX6fXWU^XR[LXPTTUVZRXXYWSa=aXA]OUUNYXUV=WYXIPdLPYPPWUZcZZSXWS;V\WHYS\NUYVZUWZMSKZZHMUQXX[TTVYWK\TTVUbTNSUR[TXYXUk`TUkWWOQM[dUU@UJ_VUWUWTQSNWKSNU]KUSVSOLUc;[R`[WYTYQ_TSLTUUXRdPOW\QTVVSRZ`QVX]SYTMVYU_\ZS]^UUMUX1RWYUPU^UYPQJUSWTSPVLRPQ[MWURRQWX_QFJRUTT^SXRWSUVk^XN[YYYWUULVTUPMNXSP^TQSDSLN9ORUJMSD]OOQ2NEPQQ;VTORLXPQDKSNLXI_JZlMcOVRTKMNIM_LWULMNHLIOQQQRDJ\GKLPVTXZHYWN`WYS]TWWZPHTTWWQU\WWE\]XSVYZWF]YUXSXWXYY]XRZXYXOTaUVWYQXXX_XTUUXSYZUV]YVWRWXW^]VTWWXY[TY]RWO\QXYWZ^_U\UXVNZSWYOW\SS\\VVZQYWOUPUTMUUZ]XLXZSUZVW[\XZWSMVU_]^ZXXMWYSYX[TXUJOWU`]VZRW\[bY]XYQ_XPZXYZRWQX[XZOYPWXM[UXXVYZLWY[WRUY[OY[X\VXT\WV[]X]WXHXWOW^MYYZ\WW\[WUSYW\\VTYWXbZVZX]SQUZY^YUOYUZXXNXVRQSVUYWY]XZb]YXLVSX_WYUUQWTYWXWRYYYTTVXVWLUSYUXWWW^WOUWSV\VPY`]YUYX_YXY^QLHZYXOXTTZ[MW[XWYUPE\UaYX\TXVUT[MTKWUYRMN`[IXWTQ[ZZWKYW^WTYZWMT\Z\OecXRWWXYZWPVQV^Ya]SZZVTXSVXVY^SVU[]Y[Z[YK]XVXW]XRLYZUWWOWKWWR^WZ_Y^XW_WPSVY_[U^WgUXbYZUXQYUYSX[[`^ROVVXS^YYVYUTYV`V^XR`_VU\VWTPkW[UVT`\[SW^SQ`WWX[_VTT\ZWT]SU\YUZ[bXYXV[]UW[VWU\SeW[UPYWW^^_`aWRXT`XU]TZZZZUVWpWWRYVOUWUUV^[ZVSUX_XWWQT\ZeYXPaWZ]TTXYTWXVUVVNW^QV\YVUSSL[XTYTQTUX0WKSaTSV]UVQVWR[SOSVWUZWUPYZVZUUSVWNTS[TVUVWTSVPKWVVSUUSRS\[O`LS^X]\WU]OPWU[YYUTSQMTdXRR[SZVX`YVQW^VTVWXXQU[XTeVSXWT]VWVXMUMTKWKaWZYZT\VUTRZQYVYMZUbYLX\NZWXUUXWH\WSUWYYRTUOULYZXRYXXUVQXY[WVIVUOUYPSTYWVO][WTUSEXYUVO`Ymb>W[RV[YMXXUVbUTWXZJVVPNXXSXXRPWWQWJVZWŒTdPVZTUZQ[[RUX\VpVUVT\TSPX[ZWVWWTUZU[WUYTXZXXUbWZ]JWUWVaXhUZQWUUXWeXSXWUQZTQSWRYVUWWTYUKVZEYVb[VZYRVW_TQV_ZNWPUYTXYKTUXYWYTnUYXVWUQUSMTRX[VWV^XQMVU[SJX[^VWVTTVSVXWRXZVUTVWSUVVWU`YTWWVOVVYTHZ]ZQ\OXXWY[uTWX]XXB\YX[ae]^GEaU^[YYZYUZ[M\Q[Q[nOVYT_\U\_KcX`^ZMYN_]XYVZOGY]JTc_T]eWAJX\]ZXaEY\XZXWX][_a_\XcWXWURYPYVTY`XZ[XZbVWZXTOUSbUVWXVQXYXWVWMNTUSTNXSe`GVU`WV@UXVXIV[VWbKWTYZWRW^XYNXUVV_XYUUW\SYaQXc\Z[TV\XSWXVNVJWVZVjVXUYRWWOVTUU[TVRX[]XNT`aUU\U^VcWWJYRNWVXNVWZZbVTWXWVUPZVUUGX]UKPXWTXUYUVWVKXYVcVHWPRPaUXQWSSVY\XVZUYMYaTQaU[[YR[VYUN]RfY[UWYSIXEWPWWUXWQ^Z]SXXWXVSUPZSYVZXWVYXJVNXUT^^U[SXSW^VYYV[TUYMVZTZUY[ZR[PQXT]^YSU]WRW[TZWJWQUKJXWTQXURTWWYYX]O[WTV_ZTPZYZWXSXQYIY]VU[\VQUU[ZVYZYUWRWYVSTXY^XXSYNZUZWSVVVYxVSSXWdZQWVZPWXRYU[X]UVUZFYRhY\XUU[ZMURTVWU^Ve„__`WbUUWTVXZZRSX8V]Vk[RWZcJWYUZY[WS_RbXWVYQVU\UWUWWU[TVMWMXVYXQUUZYSQVYIUXYYXUOXPZORWXYOcWUPTN\WXYOZYNSQZYMWkYW[`S\WVbOJXQQOXVQSXR^^HbTN_\\^Ya\NgRZW[NSYVNWV]SINQT[QJcPS[N[XZ_KYTNTFJSYV]_[X_Y[UR=VWYS]d]Y[RTXZWV\XZCYW_PbXXUXQ[[VTSo_YT[[cSK^HP[U]VY_XTXVKXSV?@UTW^=WUSQ[aGT]WUNVR\EVQVUIVYOPQSYUSeZ_VYeWXSW]X[WRWYUZW\XJQZYVWZUWYZNV_TZUVUVXVYRWUUSVRNJPSUTWYXTWTXG^WWZhKUACIdaZNVSˆSP[T^UcR[VTRY[N\QR=TLQZSWL]PWYGZGU\C:YVMURWRQXOELS^RXT\GSISVURUSS^[_Q\\UQRWKNFUUYIVVYTQXIUU^VVPVYYVVUVVYWWXUWWXUVZXYUQHNR[_UZZUYVVWXVUaSVSRSMVPUTVTX]SUUXUAXWYQTPUWUUVNZSYSWQ[TBTUSXOYV]UbVRWWWTTTYFQRRWYRWSTUZUPRYXRU^U\UWUXVMUW[`^XXX[MTU\UWIKZZY[gZtSR[gT]\UA[XYY]Y^VSPCXSWWVUX^YTSUUr^MWj]fTXH[bcUWYT]ZZWh]NSWPZUW\d[][V[WUVX\SU\LXWZS\WPZ[[U_XWZZRUGYUeZWbWYQU[[Z[NYHcX_UIJSR\Sk[wJDFQ[UY]MTRYYS\P[QMNSRbZTXRW[ZYQdL[XYNZJWSYWbI_^\WX]ZRRWOkYYXKT\=X€VX[[a\YhdMQQYYXZY]]S[ZQc[Za_d^9RPUQLMUHT^ZO^KYRZJPW_OZSM[WXLTWVOLRUTRQSFM^XLYCYcSJLX?|QLj]OcUNWLSL\O[^bTWNGNZVTINcXUVVTT_TXN=YQWNVPJPKS^\^UD`OQW|OdZdP`PPS=UY_aWWtQUdP[WZYYXX\[ZXZUXNW[YWV^TS@IcVX\UXZ[ZXR\YZVV@eS]YS[[WTUWSYUWZaXYTZU_RXIbY^QP[UWPNVNUYP\^XR^WUXVYXUVWZV]RNWXYWSVVUVWU[WWSVWUvVWZOBT\_PUWTQLUYWUZMLXVZUZYVXTXSWVWVZV_X]\VTXZ[V\TX_XdIZ]IL\YXeTRYUWXY\YQU^VLZXX`WYWXWRTYW^XSjP\VTOUYSUUX]VWXYSSTR\V\T`YVZUcTTTX[WAWY\]W[`YYZW^XxXUV^TRXYUYZWO\l[T[SU\RXZX[PXPZ`j\S_W^SYZ_TLYWXXYiZYSfX\SQQbZcMTS^ZhaZ…NZdZc\XPXbW[YWW[ZL]gVZd[WZY\]QLYXZZW\V\Y^XWIVRWYYXS^VUXVXVYUVSRRUYTUS[VKdW[SZVSQVXUUTV[WMaRUV_QVUUSWXM\ZTPOU\XaXBZ`i_UY^ZVTUSRWJfUWUWVYUU\WUUVRYWPULXSUXUTVUXZTXNTTW^TOWmVT7XUIYVQVRYQTaYZVTWXSXUWZWdV@^dPiWYUWSWTUSDVRWRbMZTUNUXUQYJSSUXXTTWX`WVWVGJWK\XVSU`kVTVSWVOYSQVUVTWUUWXZQGXYSWWUWUXUIVQgWWRU]V]U[^^_]WMQSXQ\NRYZXXWS\aJV[NS_ZVTRVYWWYS[Qa[UMXZYWWVe^\XX]S]VWZ[U^[UXY[XTWR[XWZ[YHUNWY]UZZZRXW[U]X]YYVA^VWVVYXe\Y\Y]O[UIXXdYPJRX\\RR[[XUYPYWXW[KYYV[OV\Xd\_XPXXaQRUW[X\TTWVRW^WYPWWX[WV\WOY_bRYZVaQ\X][US]SZWUQ\\U_VW[^YYUZUUSXQJYXVPRXZWW\`MYT\XTa`XXV^XVXVX\W\ZY[bT]]XYZWYRMSUVVTXNXSTZWWZWRVXU[X[VWRZRSVPUPX[[\_RSWWUWWWSSUYYYaXTTUT[VVT]XSWXZUSWUYSSY^ZVXHQUSWXTXZOVUV]STR^XTVO`ZYWTUZTWTO[SZY^Qad\Q]NXU]_TNZPd_bLeU_Z[[F`PUZLYWX]Z[X`]_V`Z^JN`[NT\WWQJc`\Y[VU]XTXL[W_TW`\MhOZYWYP`I[ZT`YX[W^LYSY[Z^YW]NZTVX]W]fcPZUQ^ZUT^UZbXVZWShXXQZRWWUTXLTSVTQPZUSXKUTMYY]SSYXYXSWY`SYVEUZT\`IO\XdX`[`TW[i[QVgV]VP[`TY[WVVVZWV\VY^V^XNdWUWZXXWVW]Y[UURVZYTTRdR]Z_VXX[hSOUTTY_RU[TQUQWX[SXRSJTXUUX]\ZSVVVYUVWYSZLOaWW[WWYTXTEXXXU\SZPZV\Wg[TVGZUWX[V[PY[Q_ZZX[eUZeVQXSWU^TRRSRQVYUVSbSU[TVSJbTV^VTZ[^XWVZWY6VRUWR^S]SXU_XOTTTTZPRWZTnXqBIFYSMWWTSRTVGV\XGeITWXZUUYRWhLXSUS=SYVpVbQXYYVNZWWSTZqVY[WJUW[ZZZARUTUTWXdUJUWPUUWUOVXKVC^XTTUUREXL[`_dXOOY[RYPQV^[XYXWWWYYVW`Y_\WV[[XZYIO\TVRTXTYSUW[cSaVSTUY[YW\ZGWVdeXYVVVWVTVZPUXXYXXR[YYRRYZUUXU\UQS\TWPWWXXTUV[_VFZ\TPVZVWZUY.YT[VTYWWVYO]_VPVVPYSUXQYh_V]`PhVWVWSV`TQUQRVCMU^IZEYU[WUSFUYTYUZUWZWTZUHGSJ\\WUXY_[SXPRWU]S]ZEUQSWWVULSR\VVTVSP[WaG]MXSTaVKRZTTHTX_XS_TVVRR`W:RSST`UUXUWZPYPRNWU`[WTYTTRQTWRO[TQRYELVWSX[NTUSW:SZVEVLQRT^REdSVNSWZU?_TQXPXQOYVVPTWWTUTO>RYMXXWRRVZPWO`TUOSNVcXWRWTbUTNXXTU]UZXMTYVUPTS[WMK[VXXV\VSXWXSSXYWVYWYW[PURRYWWZXSYQUXWSWWU]X_XWQ\]UVLWTWR]WWVZNYU`UYXW^V]T`MTX_XSZXUU^cYXV]VWWSUSWY]PXYR[YVU\]WS_\UYZPYX[XNP_YYXQYTWWZXWVR\TX\UXTXWYUXR]TVYXV^V]SYAV]XXU^ZVURXWWQ[WXWVVU^b]YVYXWZSYWUSTYSTMFX`]WWPPS_UQOXV[U\OSYVYPUWFQUIZTUVZV_YbXUXYT\UYSXWTWQRTW\W[XVXUWLWWXWOV^UVYVcg[W^QZWVVX\V\XTZTVYXUVUXW\WWZOXWSNZXYT]V\VUPVXRSV]PQ[QVXP\XU`\Y_XXVUW^SZXVRWVWJTVNOZRRHVUVbUJ[YWMQ_ZWTR]OGfYYZV`JWtR\XTIYQ\LbKTIaD\TTN[HbU[XQKSZ[EYI`WbOY]TR\ZSVOYG_WbT\R[OULVMWRNWUfYMYPTVTSXLV_RVUQWSVWHXpWYjW[Q[WWXeTVQ_YQUXVT^HWZ[XTZƒ^S8PYZiURX]ZWTYYY`M@QF\KVT[eWXMSZZXYVV[MU^OZWTTZYXXPVeCWMWKWWVWLYZWVVWSVW]YYZNPZXZXUS]`X[DYTRVUY_UX]WTiVZSLWZVX]XTXZWSOLXVYYO]PT]NVYXVVMTHZTSWXUKZRV`UYHWW`ZSWS\VR]YY]VSX^PTZ\bXXWVVWUS`XYVL^^XXUYWVXSRUVTYS[RXTTWbY`W\XWUXZ^\]^[[Wf\P^UVXKWRTQVXZQVRSYPVVTPVZ^QcP\UZUS[XPZTYVX\[UY[]TNLUVcTYcWW[VWQRWUZVZVSWX^[Y\YUVVY]\YVZYZ^TUXXYWSLWYWR[W\YVVZX[UXVWWVWRZYaRPWZZTNWWcVVXNXQXWXXZIYWQPSPRW]WWYZZ\XXYZRRYQX\V^X^WN^\USXPU]YSZIXTTQW]^XYTT^VXXSW[YXYXY[Wc\ZXVYU]YWXXZFXWW[_?OWJEU[[W[ZVYY\VZUVVVZSWVXaXSVXXVV\[UUZRWYSLPQ^TUQ\ZY\W[VV_U_VUXUSWVKWXT?VVMYXY[WXU[XYSaWYTWWXYWYUZVVQ^QXSVXUPW\WWYVSYZWXYQTZ[M]_SRTUXOSaXXM[XSUPXYXWYY@Y[LTYKWPXY[TWU]ZYXSTZZZ^>Zs8RR`ZUWX\ZdYUOZaVhX[YSdiZXWZ[WcQaWV\ZY[f[a\Zc^Y_IW\SWNJ^wSZPXUYZYZCVTYZXXWXZVZUUZZ\XbV\vXF]XWUZP\KUZVUcTTVYS[Z\QRZ^_PZUVZ[SdVY[UWUSX`WWTTYaP[WRV[UT]U][eSZTJ\^ZXKTXT[\VVXXSW[UO`XRR`UWTKRYW\VY[ZYUWSUNY\VLV`VP[HOV^TXXZYVWY_XabTWXRY)UT^ZUXSZXWRa[ŠWTWVgXSSX_VTHWQbWXRcUOTTVTRU\UfOXTQUVRVQdXMLTXRU:V[TZVAPNF_UAdVTRXHaVAaUNZIXT]VFYPTUZXWHQDUPTVXVXXUVHXGfUYVW]PGTMT\V[VRZXYXad[]YUJdRVZLRS[Z[YZYUYVXVWPXYS\U^XL[XZQbd`UZTX^]YZLVL][X\\SVUV[WWWXS^]WWPQUUKYTX^_Y[WUXXQYYXVZ`YZIP`W]CUZZWZXYXZ\VUYUYK\\YWThYYZZW`\IZ[YPSWX[\UQ\pJ`mZVOZ\=WnVT;WaZ_\FRR`FY]S^]_KYaXYB[[X:UPXG\aVTFRZNTLUbapYHV_WRf]TWTXWXY\f\hXLUWZZd[`ZZZP`W[OSU[=¢À¾ÙƒÃ¨Œ€‘½ÙÎpªá¾¶¿šÍž¤Ž~ŽkŠ“uOu¸Ù™ÌÕ£oœiRùÓEÊÁ¶M†®l†¹àyº„oB´È~­b§Í“Æx‘£‹’|­‚Æ¢¿¸4¿d±¸À¶Ö•¿©·n—ÞÉÀ­ÇËÿ›Q•~­}•³’³ŸÓ)“„ª™š™›Ž”˜œ ‘–¨˜—«˜™š‡–š–…¥˜–œ•—’« ™—¦™•–—š µ˜™”›™‡™œ•ŠŸ¸•Ž—”–œ”“‹—š™˜™ž™˜–‹›™›™›“𤛇—£ˆœžw¯˜—˜“–”•Ž’›Œ£©…“š“•®ž›¦››š—›š–™¬—Ÿ¡–”Œ‡˜›}•’’›—•“˜–𥝖™™™•¯˜¢”«—”›Ÿ–•–m™ žŒ˜£“™œŠŸ© –š§‹oššƒŒ–™ŠŒ™ ˜œ’–ŽŠ›ž–œ~””—™—š™¦Ÿ˜—“£‡™”§—¯¢˜š¤˜‹Ÿ—‰˜——š—¡—†›˜¡–›¥˜™Ÿ–¡Ž¡›˜’š”™­•¨›˜™˜–‘š—žZ­¡Ÿ–š‹–—•¥•”–›”±¢›¡Œšš~š–”˜’œœ›´’˜••žœ™™Ÿ•š•”™™“‘œ¢œ¯•–› ””·§™®“™’z•™œ­k¢¥“—Œ“„”™••›””•˜‰š’œ™“§˜¬Œ{—‰ –˜œ“’˜—š†”–——Šœ„²h£–œ“–°–˜««”˜’•¨—¸—’œœe—“—™‡“–•™œ—™–™˜¯¢–˜——–‡¡——•—––™›™žÇv•š‹“v]•¯žšœ”•–™•³š’˜—‘~œ™£›•™–Ÿš—‰¡œ—›š—˜–†’–•’˜™˜˜£”…—“šœ“–’””𢑖—™œ“›™•¢›œ”—š¡—¡™—˜¦˜ ‘¥—“¢–œ–š’Œ˜—‘œ• ˆ˜™–˜•–˜ž’™‹•™›”—’™—”œ’œ™š˜™›˜˜™”˜™–•–ž•˜š”“Ÿ›™›•™’– ˜™˜›”—–“–”•›•”š•˜–š˜—•š˜——› ›™Ÿš˜›•ž—™™—™˜˜‘º—œšš¢–•“š›™—œ¦–“š—›Ÿ—¦œŸ˜˜–‘‘“——•«š¦˜¡“œ“–™–•”–™™˜•œš•š—–˜—œŠ¥ž¨œ”š‹¤–˜–•’”™™–™”z˜¡‘—™«˜ •’‹q¤˜˜–—˜™—•  ‘—•”™°©›™¡£– ˜˜¤™˜›˜n›ž™š———•¢Ž–™˜–”š‹‡—›š‘ˆŽ“‹¥­˜o™“›ž™¸—˜­”¶‘‹˜•–š¢‘Ÿ—š›•Ž³›™¦•–©˜–„}›Œ¤“¸’•–—“›˜š—˜¯—“—˜˜¬“˜”—¥˜”•¨šŽ–œ‹¸£›¤ªœj™–›ž›¦Ÿ€˜•–›š¯‚š——Ÿ™r—‹™–˜˜¥w•˜Ÿ˜š™™™™›™Ÿš™–¦£šœ —”™˜¡•𤗙™˜˜šŸ˜³ˆ”˜—›‹•™Ÿ’•™•›™˜žš—£–¡¡šŒž–£›šŸ—š–˜˜¡™–œ—•——¥œœ“Ÿ¢˜‚™˜˜–™˜¡“ˆ™›”š—™”˜”²Ÿ£™•š›™—¨›œ—˜“—£§­‡˜œ•—— ›’—™‰Ž–›š™¨•’…š˜—›~›™—¢–ž•™”±“›Š˜Ÿ‚™“›—‘•Ÿ—˜‰j•œš—”…˜·†©— ™£˜’™…—š¡šŸ™šy›¡šŸ“š—°®–•¥¦™–Œ«——–Œ˜~¢ž ™§˜“©œž—˜—™•…œ™“šŒ§š”œ™ ž”wš—’”¬˜˜—“˜˜•o¢“”—š—™–œ”˜ž—›‡š™£š™–™›ž™™›•›œ•›™ —™š•’“™¡žž¡››¢œ¤¦¡“š•˜š‘Ÿšš“™œ£š“•–”•”•Ÿ˜“™œœ““—–˜“¢™›™™”˜•šš›ž™––—”𕤓œ—”——”‘˜«™—šž¡Š•š‘›’”™›”œš“––¦—˜–š Œ’œœ‘›•¢—•š›•œ›™ž••˜•œ™•ŽŒ›˜œž˜’™”˜¤Š™¤–’‘œ¢”‹–¡š—œ¢›žš›— ž˜ŒŸŒ ”𒗖𔢒—¦—¤¡˜”–œ’•¢”†•œ–—– ”–‹•—ž˜”••Žˆ“’€…‘–…“š’–‘’’~— ˜‘“’ŽŠ˜™’•™”œŸƒ‰˜’–‘œ‡˜š›§‘•¦Œ”ˆ“Œ‚–ŽŽ‘ ˜“”——™‹“Ž”‡”žŒœ›šŽž—’¢‘¢Š’œ™¥“’•’‘”–˜‘•‘“¢‰šœ•˜’š›“Šš‹™™–”’¦•œŠ–’—“”•œž•‰š••ž””›ž¡“’”Œœ˜—‡š‘…†‹Žž˜˜‘‘•Žª‰œ˜—Žš’‚˜’ª™š–£œ“–‚“¨“›™”š‡¤“š“¨œžŒ“•—ª¢™—¨º—€šš›¥•š“›ž—›™’˜¤˜¢–Ÿ’ªŒ™™€ž¾Ž¤«˜–——˜˜œ“”–šš—–Ž–žy‰›Ÿš”–y–•”Ÿ˜£˜“–”˜¢šŠ›™—› ™¢Ÿ”Œ—˜ª—Ÿ¦y˜´•˜”Š—†˜š€™—§¡˜—–™€˜—Ÿ˜——š™–~•—¨™–‹——™¤›œ‹™‰‹Ÿž˜—›©——”u–œš™–cŸ½™œ¡™™–————„–“‚“••„¨±™’¨Ÿ–»¦Ÿ™™œ˜˜o›™¥—™—¥±§ˆ’–š‰²œ¤—›••Ž±š˜ž˜š˜£ž™”—•ŽŒ˜’𤙓{™’™‘‘—œ—•——¡ž“š—™œ‹š›•—š‰š™¨“–š—˜’“–œ•›–“™“•—•—˜‹•’˜›•†¤Œ–œšš˜Ÿ“–‘––•¨”—–œ˜†——œ˜Ÿ‹Œ¡•˜œ‘—𢙒‘›–Ž˜š¡š”¦—š¥˜˜‹˜™ ™’““‘™›–‰‘‘‘”œ™•’˜”™–”™––Ÿœ““˜“–¤—•Ž˜Ž—œ”ˆš‹ž—”—™¢Ÿ”Šš¤š—Ž–˜ŸŽœœ—š™—“ˆ’™’˜”‰™žœ™œ‘˜—”œ——š›˜““”–– ¡ •ƒšŸ–£›””–“”¡ž›•—”¤˜ž œ‘›—™˜‹™Œ”“˜Ÿ•š˜¯’œ¡‘–‘›—š” —ˆ­•Ÿ¦–œ‡”™—§Œ•œ¨¢š–‹””•–’˜¢™šš¢š™Ž ®™ƒ—’“¢¡±—˜—”–ƒ™’˜©–¥›”˜ž²šŸŸ˜Ÿ˜š¦•±— …”•š Ÿ‹”ª ˜µšš Š–œ§–¡| —™œ“¢–˜›—›—™¸™žœ”‘¥§š˜‘‡–›„… ˜—˜”œ¡—™œ”––›š“ ¢••”“¡š“˜”Š¥…š—’ˆ“š«œ˜‰›ž™››š™‘‹Ž–š—˜Ž‘ž™–›ž˜Š¢™•™™†›œŸ§§–«˜––—›•£ˆ••›–¡“’ ”›Œ­Ÿ•”¦Ž™’v‰™¨ž”ž—”–œ˜‘¡Ÿ—›—•“‹™±—˜¥Ÿ‰¨™Ÿ™š™™”•›™‹¦šx›™‹•£Ž™­—žšž¥–’™š”˜¤—”ž—ž¡«•™–”“›—ž›Ÿ—™¡”˜›—š —œž•œ›”™“~šŽ¢ž¢““› ›™‡˜™š©”‘›  ˜–˜’¢¨ž•“”œ•™–‘™“”˜ž˜ŸŸ”‹©–—œ–š•˜¡”™¡€•£š—˜‘‘˜––• ¡ž™«”˜˜žŸ›šƒ™˜¤™š”—¢—¡”›”¡œ™Žž›œ ›“ž’˜’š•™¼Ÿ˜•„Œ§Ÿš–©¥’“—”—•›—š š–¨Ž™ž——„†–ŸžŒ§œ£š–ž‘™˜˜˜«•„˜™™–ȯ œ›™š˜—ˆ˜–™œ˜ˆ˜——›œš™˜žœ–˜•˜—’––œž£–ƒ“žŽ™¬˜ž™QšŒœ¸›˜ˆ­›‰—›–’Ÿ–¢›—¡˜–œfšœšš™}‚–•µ–¤”˜—‹˜™ž¦–™™™—žŒž’’ªœ’™›—ž—¬š“˜Ÿ˜ž£…Žœ—œ—œgƒ˜˜œŽ¨™˜¢£šŽ—m–˜ª£”’©•˜˜Š Ž—–™——“›™–𤓮 ˜…´•ˆ–™™š‚•–ªœšš—º—ˆ— ’—˜›™š™’Ÿ—›œ˜‡˜—˜‘œššœ¢™‘™ªš…™™•Ÿ•–˜’•–šš™˜t¡›”·©––˜¬˜š™˜˜‘˜«˜›››™–˜š¨{—•˜•‘œ‰››¦˜”›——œŒÄ™•‹˜——œ–¢”•¤ŽŽ™™™‰››™ ––™˜—–’§™•‡––˜™™•““œ˜Œ§›Š›––”™—¢œš–˜–®™‹˜€”˜—™š“—Å™šœ¨“™Ÿœœ™˜’–—‡¤–—­™–™ª†˜Š™™§ŒŒÆ—œœ˜”“Œ›‘–›š•–”””›œœ’——Š‘™˜ž—ª›¡“•˜¦š™””¥¤’Œ±„›–›™ž‹œ”•›”•œœ–žš˜™”¤š—¡ž•“±…’‰˜™š–œ“’…–œ–•©¼˜–—”Ÿ¢™šš˜—›ž–¤–•˜”— š— ˜—™– ™‹™›—Š˜Ÿœs ˜‚—ž—«˜—œ™’‘”š–§˜·• ¤›¦š˜´ª˜—‘™›Œš™‡¢˜”x½¡£šœ—™š§–œ’‰”˜™™˜—”‹±™˜––’š¸–™ž˜—•›|kš‘’š”šœœ–™™ÕŒ˜š™ž™~‹‚ ›—¤³š‰—šœ˜‘‹™œ•u°–•–™–”š”›˜™t‹•–——“•™¥°š–˜œ–‘•ž”“‹—•˜›™™–‘žŽš¢™…˜šš™˜£–””—™—œ˜™ˆ–”˜”š–œ©™–™•›Š›“œš•¡šž—œ¢—š›Šœ’œ˜›”™œ•𛓖“–˜–¤‚‘’¢ ”ž›”—Ž¢“ ˜™™ž ••š—™•Œ›•ž•“¡£›š’—›’—™“•“¨—£žœš–™’”œ˜šš™—™—˜ ˜—•”–••–”–¢•Ÿ’–š—›› ”š¡¤‘š˜š™—“”›Žœ¡˜™—œŽŸ ˜Ž˜’•—Ÿ›˜•˜š”›‘“•—›œ’›˜˜””ž“–›™—–¤–˜”™ ˆ••£Ÿ™¯˜˜—˜—’œ— š‘ž“‰˜ —™™”š‘ šš˜”˜“ž™¨œ—•˜›‘™œ ”—˜›œ“›–˜’˜š¢¡˜¥˜››–š——¢››— ’™œ ’‘ŸšŸu—‘–”•–”˜“œ¨œ ¥ž—”ž£¡”™˜›˜“™£˜š›œ‘™™›šŽ˜–™’™–”˜œ™œ™—™š˜¡š˜”©•–˜›˜š¡›—™ž”Ÿ”‘ž™™––  ˜˜›š•šœ—Œ”˜™•’š˜•¤—•“•˜’œ”ššŸ‹“ ›Ÿ—‹››¿‘ ™•™——›——–š˜‹—šŸ‘ž’°¢¤˜œ•–˜“•–™›œ˜¢•™ž™˜žŸ˜–š‘œž›‘–¥™žœ˜œ—–˜’‘––˜–˜˜—•—Ÿ•”›—•œ–Œ™—’››‰”œ‘•š‘£” œ˜Œ–›™™š™‰•š™š¡””•“—˜œ•Ÿ˜˜–•”•«”™›“š—•”–˜˜‘Š“˜™š˜‘••š™–—™˜““™›š–œš¡—’’“• —“’›”˜žš— ˜——˜”•——šž–’”˜›ž™—•™”›”—›•’› ›ž—˜“”—™›•˜—™“–š–š—•¢š•˜’•“¢š’ —˜”˜˜•›’œ“›˜–ž˜ž•™Àšš˜‹™‘“–™™’’”••™˜š—–˜—¡˜™’š”“š‘™œ”•vŽ™–’—˜™ŸœŸ”˜–˜„™œ—•‘—¢˜Œ•—˜ ‘—˜—˜•’š›™š«––š—” œ’‹™•’™—¡˜œ›‰•šš–œ˜’‘’™¤u®Ÿ–šŠ•’˜™—”™Ž~˜“v–™µ˜˜„£˜¡³ž¸‘“•˜”š³›—œ›“—•™–¦“{›œœ’·–™”£›‰“’¡”š˜¥—ƒ±’—Ÿdš–ˆ·z”•¢§š™›€•œ——˜Š²…š™–šd“ž˜“˜–š¤ž–œ“‹•¨‹—Ÿ¡—’‡—–™†¶———‘—–”¢}–˜ª˜——“”—™–˜³™™œ™šŸ…—š›—¢“˜”›–Š’šš—›—œš–˜•š˜™›§Žš–£—Žš•š—–šš—•›™œ–œ˜˜¢Ž¦£šœž––¢™˜š™–”šŸ‘†–š¢˜—™šœŽš˜œŸ™Ÿ•—œ‹‘˜¡Ÿ—–——‹‹›”Ž—š——•”¾– ‡ž²¤› ˜—˜‘œ–œ˜™‚—¥¢šŒ™ š‘—™˜¡” œ”ޛޝ–¢œ˜š•¯™˜“¦™™‡ª•š—’š¤ ›¡’—˜—¤v—”™™šš˜š–œ–˜Œ™›˜œŠŸ™®™—Žš‚œ‘™›–™™ ƒ‚†—–™š’Ÿ–𛓕•œ– š™˜Š—‹‘™¹Ž—š–‹–žŸ—™œ—š˜–™¦–›™˜ž•—‘§œš¥›–š›—˜™œ™~—˜™Ÿ™™›•™• ž˜—––˜š¤Ž›’’—–Ÿ›—‰“´“”ˆ–œ—¦™œ—šœ’µ”Ž œ›·“’—‘›˜”–›‹••‘˜”x™”†…—yšŒ¥£š—–—–x™šžŽ—›—𗇓”“‰š“˜¤™™–§˜¢˜ŸŠ£†™šµœ™Œ¤™™©›˜©Œœ——¤•¬žˆŠ›¡˜™‰‘™˜—˜™™˜Ÿœš™¦¬™€™˜–£–‰…œ›–™ššž™–—˜¥Š˜ž”Ž™—£›ˆ““›žš™•••–” “ŽŠ–„ Ÿš‡š¡šœŸ™”‘”˜™ ’ŸŸ§›–š““¥“’–™›£Œš‘•œšŠž‰‘—¡–š›•˜›{•¦”œ‘Ž˜•—Ž–‘žž“—šž˜’Ž‘ŒŸ•¢•˜›Ÿ˜£— ªœ”••œ ™—Œ’𢙑•“‘™—–ž—¥•šŸ“™˜›ž˜”‘˜››Œ –’ ›œ–™›¨—©š—™–𢕛¥¡–””Ž—•™–—žš•ž|€˜‘ŒŠœŒ—žš”–‡’˜˜˜ ¡‘Š•˜”˜“–›˜“”šžŸ ’ž”œ¡˜ŠšœŸ˜“‹™“˜¡¡œœŒ•˜”¢’—¨Œž‘“”“™˜—Ÿ—•œ¢’˜š‘‘‡Ÿ‹“•‘ž—˜”—“—”˜–Ž•š”Ž”›’•¡ŠŸ——‘“ š˜–‘¨˜™¢¢”—›œ˜—Ž˜ž––› ’•‘›¡››œ™ •™š•˜›ž–•š““¡™™š¢šŽ• ”¡£™“ šŽ’Ÿ™•‘œ•”Ÿ“–¢œ’—™–™›’–˜š’™™—˜•™–•œ˜““•žšœ–”˜˜”Ÿƒ——™—’™¡œ——¢£™“–›—ž”œˆ—–Š˜’ž——‘”—•Œ“£žž“ž˜Ÿ•š˜——’‘š˜’•–•§›–𙛉¢–˜˜‹ž “ ’š”ª ™’‘›“›•Š›—œ’›˜•ž’ œ —•Œ••˜˜”𙕓œ—¶¨š“–Ÿ~¬˜‰š—“”’™–›š—”Ÿ“˜œ•–—–£Ÿ Ÿ¬’˜œ™–‰™«™Š›œŠ™Ÿ—¬—››¨”ºš–Œ¢žšœ˜™”˜±˜–’ ™›‰”˜–›‘š£“œŠ˜‘£•”˜šœšœ•ª‘ž—”š«”ž˜”•”›”šŸ™‘Žƒ˜•˜›¢„Ÿ¦•™——Œ“••“™†™˜ ’—¡“™•—— •“œš–£——˜š”˜‘œ˜•Žš˜›‘£™„˜˜£ª”™¥““•”ƒ™ŽˆŽœ˜”–—¢”˜–™–œœ•œ™–”›–Ÿ›š¢–™ž”¬œz¦œ•š™¦œ––œ –…———˜•¤’£’˜©‡™•™˜™š‘‘—™—”˜›™œ£‰§˜˜•––¦šž’—Œ¬š™®{›¤œ—–˜˜¥–”žz–ª™˜˜™Ÿ™–•–ž”™‘˜”¢˜—™™ŸŸ˜|¥†Ÿ˜™šœŸ—”ˆ°›œœ—–¤’—’ ˜œ——™ •Ÿ°Šš˜Œ›”ƒv–™– ž ²˜—Ÿ˜˜¤ˆ“–—œ™“©’ ˜ˆšš‘Ÿœ•—Ÿ˜š“²—“™–š•›«”˜š®›„¬™˜•‰œ˜š“œ›•œ~œ‘œŸš—–ª•••œ•š•““•›•”•‡™Ÿ›•’–žŸ’ v¤•–˜š•˜”œŠ“™›——Šˆ–”˜˜hš¡•©™–•™—™•———™ª›•Ÿ±¡“–—™•Ž™ª¦—œ›™ž±˜š””•™™ˆ™Ÿ™˜¢››–šŸ–”—Ž˜‘—žš™ž–•–¥™š„˜š’˜“ª ••Ÿ£››–¦˜—›–›ž|™™˜—›‹¨‘”–‚˜©˜’™•™˜™•Ÿ™˜¶“Š”—”š–œ—¦–›‘Ž™˜©Ÿš¤š˜›¢ˆ‡¡˜–™y—”˜œ—•u˜›–—š¦‘Ÿš“¨˜„Š˜™•“•˜«˜šœ˜¢ª‰Šž™™˜—Œ‘–’–›¤››““™œ£š£“–‰˜˜”¶‘œ¤ž“™”—–˜”›Œ™–—š´£š‹“®’Œ˜•˜—™–ŸŸ—– ”š§——˜™—Ž¢–™—˜• ›r˜‰”›’y››®ž„“—’›™›¤•š••¢¦ˆ‡––‡›­““€Ž–”š–‘¡›˜¡–’˜“³ª—˜”t‡ª—¢™œ–žš•‹·–“˜–˜ŸŸªÄŠ—’–™–Šššœ•œ—š™·š¡—™Š›“¥™—–—”™“¢›”“”™‹¡¢›ƒŽ’Ž›••˜šžª“——œŠ¤˜–’˜£µ™ª…œ•– “•”šš˜˜”¬‘˜£—Ž––—ž›“Ž“–›Œ™—‘››˜œ—  ˜–¤¤—––Œœ’›žŽ£Ÿ™•—™›®£™”—£œ––•šš”—–™œ™’•“•˜š—™—•œ˜˜›“£•𤖖™¢––†‹Ÿ•¢–˜•’’•˜™ƒ†ˆ¤šœ¥‘˜—”œ‡“ššš”‘––¨••‹–މ¥¨Œ¥‹Ÿ–—•’žŒ—”¡™›Š’š—–™žš œœ¨•—£˜›±¡¢”‘˜•—™—œ§‹¤Ÿœ™‚¨™–Š—™Ž—”˜œŽª«”Ÿœ“§Ž—šœ™“¡›–’Ž“†‘§—Šš—›ª’œ‡““’°Ÿ¥™˜š”“˜š¡›“œ™¡Ÿ™•™”™—¦ ˜ •“——˜•°•šš˜— ’“›—œ™œ•£¥š¢–œ™™˜“œ››–œ¡™š—š¡˜™”™™––™•œ¡˜šš˜—–™šš—‹˜”›šœ—’ª˜“™˜’•”—žššš‘œ–™š™——œ›‘žž˜™œ¡š›‘¯—’““”“Ÿ–™“—˜¶ž›¡Ÿ˜˜’›—™˜˜…””—œŸ•œ˜ž–””’¢š–—™˜˜žš—˜”œ•–•’”’™ž˜™›Ÿ™“›—› œŸ”™™Ž–˜š£¸˜¥™•š˜˜”—œ˜‘›”›—’™•œ˜ž–“™–›²Œ¡§œ–—¨‘š—˜žš˜™ ˜™Š–𔡙´©˜™—z›Šœ¢˜˜”š˜©˜¢šš›š…ˆ˜¢œ˜Œ‹–™–™š˜™–p—™™š—™™–‘–”–™˜—•—š¨•˜š—™šƒœ™™£•–›Œ—™š›”›œ’–žž–žš³¡’¢˜™¡—”’š˜¨——˜—˜‰‘—«™”—œ’š“—š•Š™–—–š¡Œ˜–£–•“¡™™šŽ‹”›–¨~‹‹¡˜™——¤¤‰›šž£™˜‰‡˜¥™–ž¤œ£——”™ˆ‘›——œ™••™ž—–”ž–˜›Š–¶©™–œ‹——™š›™˜“”œ“”Ÿ‘‘›”’•‡•‹”—“˜œ…‡˜Žœ•˜ ™œ’˜–˜œ›š‘˜š˜”—˜‘¡Œ {œ˜žšŒ¡š¡•š›œª‹ž”£–—•‘Ÿ’“˜™¤œ–‘••˜““‡‹˜•—™š”—˜‘™•›¢”–˜“š—Œ™˜™›¦‘—ž³‹ž’™§‘™™z™•›£Š™˜œ¤–™\–‘™™–™’—”ž¦ƒ‘—˜›’™–›œ”Ÿ¢Š•“›œžž—››™———š‹“———“•˜Œš•‹‡Ÿ’ ›œ–™•–œŒ‘”•Ÿ•””™–œ’–“—¢™Ÿ‘š‘œ†–—Š™œ•–“˜–˜š—¡—£•Ѝ”™Ž’™œ”—¦š˜—”˜™¥—’——–š“”—ž•§ž™—–—Ÿš“—— ˜™ž––—”˜š›Ÿ–›˜–šŽ—š••‘›£™šƒ›™™“•™›“œ“˜˜š˜›—“‘œ¥¢¡™“•’™Ÿ”›š›¥”œ˜—™™˜™Žž’“•§š–’š“—–”œ˜•–››•žž”£—”–•“™•œ—™Ÿ•“”¤™š¢Ÿ…™““–ž’•–›~—Ÿž£©™”ž›—š –—–œ—’˜ ”˜™“š —–“•˜–œŒ• œ—ž–¿›ž› ›“™—˜˜šŠ•™•¡’š•›—ž–››ž•—™‹•—–™•—“š˜•—žœ˜“›š˜•——™ž–˜™š™››–“¡•¥Š¨››—›¯žŸ™”–’™™—«œ–™•›–‘Ž–œž—™—•™•˜—‹”“€’¼œ˜•™—•š‘”—˜••—Ú˜™œ—••—–•—–™•œ×—’˜™˜¢—“›—›˜•“—”“‘›––˜™•’Ÿ–™——”“˜•›—“˜––Ÿ¥”–˜’˜”˜˜––™— —•š——“•˜™–˜œ˜¨•˜™›”œ­™—˜–“•‘”›Œ–˜š¼›•š’£—”œ˜‘š—–—•Ž“›—–••››˜š—”‘˜—™•”¡«›””Ž•“ž™”—’œŸ¡›—˜˜˜š‹—””—žšž•˜™”–‘˜–‘«—•œ’š››“”˜“—œ• œ–Š¢¥–§”Šœ Ÿ—š““˜¥™“ž¨‘œ“¡˜š›œ—’˜•—“””¥—¡˜Ÿ‘™œ™ž™›’¥’—šž”—š•—˜› ˜™”•™š˜š–”œ §”š’–ž“› —˜”Ÿ–¡–Ÿ—œš“ž˜˜‘—˜”Ÿž“ž”™›——š—Ÿ—’–¡—Œ— ›—žŸ £‘ ‘™”œ›”™ŽšŸŸ“•ˆ˜‘”žœ––˜–£’“š–™˜“ Ÿ™˜”š™”“”š’›œ•‰”Ÿœ™™™š¥žŽ•••š¡“œ¦¤Žœ—•˜—™˜—“—”¢•š—’˜”—š“—™™“™Ÿ•›••³—˜˜“™ž š—ž¦”¨™—••Ÿž©˜§˜™” –™žŸ™’•Ž•››œ’“š–š«––¡œ›œ¥——˜•›œ‘’—›œ›“™š–¡š—•¤˜›•±’•–Ÿš¤¥Ÿ™¦—‘—™™—›˜šš›™”—“—œš—”“¡—œ¯•‘š’Ÿ•—–—™”˜ ™–•››š”Ÿž˜™–š—–ªœ—Žš•›˜¢ •¶—œ›»’Ž“‘““œ˜¡œ•ž˜™Ž ¢–˜¡—œ™™“›‹š‹–†š•ž™‘•’œ˜šŒ•™Ÿ ž§—œ–– ”¥““œˆ¬››‹˜™›‘žœ¥˜”—¡‘Ÿ‘’’šš§••˜Š˜‘ž‰ž ššŸšžŽ”™©—˜œ˜› ™ŸŸ¢”†”› §š“” œ‘’™ŸŒ˜’–™ª™¨’š“¡˜±—‘ “œš—‘•Ÿ›‚“šž˜—™¡ž£´“˜™˜Š™—˜ —“—”–š’—™©¥››˜••’—–›¡Žœ“–•¨w¥––“™“¬£–˜›™˜›¢™Ÿ“™›’¨©§¢—š‘¦‹š™ ž›™Š˜™—ž–ެ›¨¡¢œ“š‘’Œ¡œ˜œ˜š›€Žš››”¡ªŸ˜–Ÿ£µŸ™£’™ž¡Ÿ‘£¡¡——”—–“”¡–œ—¥Œ¡£™˜œ—ž•Ÿ¡–‹¢¦–£š€›¦”œ›š¦š ©›•œœ•œ—¡–›™“ ˜—˜›•—‘𙕥—™’ Ž™›“‘š™•š©••¡™‘˜ žŸ”•›š¡›š—––Œœ‘š œ ˜˜™–¥‘•–‡˜‘Ÿ˜–•’œ“™™’ˆ•³šž—¡ŸŸ’§‘›››¢žŒœ˜ž˜”—ƒ–˜™œ¡«§™—”––’§ž”•–“žž‘’™“Ÿ›˜—š¢¦—šŽ”¡—›—©—‹•˜–”Ÿ˜˜“–žš‘“ ¨•¤”§Ž•™™ œ„™“—–’‰œ–›˜¢Ž—’ަ§›™™›•z”œ˜ š—˜•›“‘Œšš˜•˜¡”¤”‘™¢œŸ–𛕛›”œ¢šŸ”™™–”Š— ‘„–›Š”–Ž˜™Ÿ™‘˜–|““˜›•œ”™–“š– ššž˜•˜™Ÿ›–•£{ž•ªš“˜—¡•†›u𦒠—«š–˜–›”‘¢–œŒ“ššœš“”—Œž™™—£–¥˜˜•œ—¦•¥›˜§œ™˜„˜œ›š–žŽŸ–”¥“—¢™˜Ÿ”¤“œ›€››€š”œ™žš›šz• œ•š—••œ–œ––š––˜¥ž–‘”¤‘›§˜˜š—ž—˜–˜˜”˜—‘›˜š¯š˜œ™“§šŒœ•¤““œš™——™˜§™‡Ÿ§˜––™Ç…•˜–‰¦—•™‚š–˜–™’——˜”˜˜›“§–œ—›˜–—–¦”™—–™”š˜™“ªµ˜™œ˜˜ž–}”˜—ˆƒž£–‘™«›¡•¤–™–—šš™–¡”›·–𩢕‚•}«Ž•—™š›™–¢±œ™—˜› ”•¡Œ€—’•“–’˜œ•˜ª…™—£“›ˆª™“¡—™¥¡—–‚±œšl™™ˆ˜³“{‰•®¦™› ™–Ÿ—™—™››—™š¤™z˜žŠ™Ÿˆ˜“›š•š”—›”—˜œ—…–š¨¡š›—„¯™›–Žœ‘˜’«Œ–¦˜˜˜šžž¤ž¢ ˜••£œ““¡›˜‰£€¡“šŠŽ¡˜–Šš–œ“ŠŸš”˜š¨©›•Ž˜¶¤¤ƒ—¥˜— š…ž¤£›ž š–‚šŸ›}˜›œ›ª“—” ŠŠŸŸ­’‘‡Ÿš¦Ž’“¤‹—Ÿ¬¢ˆ•“”œ™›—šœ™’•’‰¤”™š“¡•¢£•šš’•”š£š¡••š­›•”›¯—}—œ’˜£Ÿ“•¤›•Žž”—™›£{“ž¢©—––˜‘›£”Ÿ›“—™¡™Ÿ¨—“˜¦t’˜¢”™‘”Š™¨˜‘³Ž”™—•®Š”™š”›˜¤˜˜—𗙬™¢ •|z˜“™¦©•£š˜–•–œŒš~š–˜˜Ö§•˜¡|—¤˜•˜—™’“¶—˜•£š”˜š‰§œ——–˜œš ™ª°——–”Ÿ°–Œ¢›Œ–—Žš˜™™Š·Š‘–šŽ”_‘™¦‚•–™‚Ÿ—™|–¡¢œ™ž‘™¡žœ‰¥œ›™žš‹˜šŠ]™–›˜•’—­§—›—–œ•™›•Ÿ¤ž˜“¨¬É—ž´š•s¡«—™Ž‘–˜Œ¦–Š™™šŽ‹¥š–‡Ž™”˜˜™’–œ˜”®—ƒš™`ˆ˜¥—™Œ–¬•—¢–—™™žŸŸ—ŽŽ”“š˜‘—”˜¡’Ÿ™•‘›•ªŸ¤—“’™›™ƒ‰— ”™ŽŸš™Œ›™š«—”‘™›…Ž™€Žª—¡œžˆ•¥—“—¡œ¬•™‹°¡”™™“Œ–‘Œ”ž•œŒž–šš£›““œš”–Ž€–—Ÿ£›œ ™žŒ˜œŽ•ž– ’¥ž “™–›š£‰”žq•‚£’’™–” —™¢”–ž˜’š’›™˜”ƒŸ•š–››ŠˆšœŸ”•œ¦±’‘–“˜œœ ¯Œšž‰–¨œŸ™šœ§™Ÿœ”™¦™Ÿ’–•š–•–••šŒ“š–•™‘¢››‰Ž¡›™›Ž¡š™¡‰—¸¨œ•™˜¡ª–™œ§•™š˜š›ƒ–œ–”t—˜Š˜“˜””——”ž•—™——œ ›—–—²…™ š‹—›˜¨—Š˜——š˜™š—•Ÿ—š™–¡ž›˜—–•š¢œ¥Ÿ—‰˜˜jž¤˜¨•™Ÿ——˜™–£˜œš“‹­˜œ˜{””Š››ž—˜ž­˜——¤©——ŸŸœ§£ƒ }•˜—•›¹›•œš™™—˜—”š¡œƒ–™˜ –š”™›“–¢‰¢ž™£ƒš—„”¼˜–ž“𗤕˜¥˜”|kœºˆ¡™–°£•ž—•˜˜™—š–™šš¿–Ž›—’™•š”¡œ¥¤–˜ž•™š—’—“‚£”—–ŒŽ¢“˜™—™Œ–—‘–—‘–™˜”–“Ÿ– ˜£‘ £œ•˜”–“™„Ÿ§š„–“˜–{š‘—•ž‡¼”˜œ˜’š—†˜š˜«••––¥ ¢”˜”˜“”‹œ ¤˜Šœ˜©•ª—¤™œ˜½—’‘•‹Œ¥Ÿ¦˜˜{–±›˜‘•™›˜–¤›œ’—ž’›—½—š‰}”­‚•™—’˜–”™¦•ž–——n—™‰”ɘ˜™•›—¡•žŽ“¤™‘³™¨š«‘››„‹”–¯½–™ˆ‹—Ž””›Š£¡ˆ—”„¢œ£—–˜ž —–——³¦™„Ÿ™z–¦šž§“ž š˜z›ž˜šw˜•—š—š•™¨˜—•‘”˜ƒ™“•Ÿ˜‘¡š ™—’œœ“”“›œ••˜’šœ“ž—•œ”–¡ˆœ¬—˜›“–Ÿ¢šœŸ’›¥™•›˜Ž˜’Ÿžšž—œ—¢¥¤šš ˜™’œ‘›˜€•”œ™—–› œ”›žšš•–™––šš›– ˜˜˜‡˜”•¡—Ÿ˜’•—šš—–˜”šo—“§¬ž–———“¡œ–˜˜œœ—›ž —™§ž‘¢•ž—˜“”“š’œœ™—£–˜ž›••¨˜˜’¡•–•”–––¤•¤•›–𖙦«——¥¡”ž™ž•˜—• ™”‘–Žš’¦–™••–“†˜§’––Ž–š˜—š£™—˜˜˜˜•š‰––™˜™™’€“‚—š˜˜¨™˜˜‰˜Îš™˜—˜w˜›˜Šx™Ž™‘——˜™–ž™—–—¡—–™œ¡—˜–›™Ÿ–¢˜†œ™˜Ž™•”—Œ™˜m™“™°˜¨“š€Ž­”–—™«–‰”—¥—¥–•}°˜—ª—– –›£œ—œs›£±œ¡™™™Œ˜–”ž•š—˜—›¡˜£¢…—ššš•ª›Œ•—‘œ”•›¬¯›š–š™–Ÿž———Š‘˜˜‘’˜¢—˜š‘˜ —ˆ§™”›¤‘•š˜™˜–¡œ—ž–—œ„•˜§˜›š˜›¡ Ÿ—–šš›žž–•›š†˜Œ‘€‹—˜‘˜Ž˜¯–’™¦•¢š•™–––’“—’•ž¢™“œ——šž•˜›™—˜ž–“š‘–‘š”—­š ––¢—ž–“Ÿ˜”›–˜’—š–™Ÿ‘‰”•›ž™ž–ž—˜˜“›™˜œ“›•”›™˜––›™š™Ž›–—”—ˆŒ±–ž—™¤š•˜¡‘™˜µ”–Ž–›œ™œŠ–•¢•“•˜‘ž–š“š‘–“Ž˜ –ž›™¢ ž™˜––˜š’š–š›š–”™š—’¢™š”šz—˜™™—™™•ˆ›—›–—™¢™š–Œƒ“–—’•˜š™˜œ™—’žš—™¢–‘£•—‘™—œ–˜™Œ–—¡•Š”–˜§™—™’˜–—––œ•¯¨ˆ¡•š—’˜˜—˜˜™‚œ™—š¦š¢™š˜m˜—™¸–•–”š”˜˜œ•š¡›˜˜Žœ¡˜˜šš•˜–›™ˆ—¨—™’¨¨’—¶•™™ ˜ ™š¯¡}›ž“˜˜™“†——Ÿ˜›¨˜šÀ˜™˜——¤¾˜„” q•Ÿ˜œ–­™š ž—œ—™–³šyŸ™š—• –‘—}™•Šš˜–Œ¥˜Ž’Œ„œ™œ‘™šš£•œ—·“˜±–™™¡”‡“•Ž–—Ÿ™›——œ—‘®—››Š—£“—®¡š—–™ž¡™ž˜Žš––›‘q™˜¡—𛓓 š‘ž‡˜‘—•˜˜šŽ•¡˜Ÿ›‘›—–“”™—•’§‘žšš˜–“žœ”›š—‘Ë™”œ™”‹—–¢–™›•—“•œž’¡˜™—¦—™£œš˜—‘‰œ•™––“Œ˜˜—š•’™š“‘˜—™˜“ž‘• š—’˜¡““›•”“”•—™¤–¢š˜™”š–š–›—ª—š–“–Ž•˜œ˜–—š¶Ÿ‘–œ™”ž•—˜“–“œž›”—˜ž‘•›š“˜™›¡—œ’˜“”•’–§›–˜•™˜›—¨¢–£Ÿ±œ–™”•™™—„š“œœ™œ”‘•–‘–“–œ˜—”š•˜˜™ŽŒ¤›žžš —“—¡œ˜••šŸ‘–‘“’ š›—–—šœ—¥›žšš•›žš—–•ž “‘¡˜”œ€¡“”™˜¤•‰”””’”š—Œ‘”Ž•™œšž–š•Ÿ“˜œ˜žšœ”žš˜—›™‹™›•‘””Ÿ˜”œ–š–«œ¨‘”—’Ÿ˜š””˜š‰œ›šš˜Š™˜ž—–¡šš™™›—Ÿ’šš ›œ†œ•š˜—˜›š”š—¢•š”•Š›˜–™– ›’š˜•–––•‘˜š˜œœœœ”žœ‹˜“˜˜š“‹•›˜šš”šœšœ¡™—™š–Ÿ™——• šŸ˜˜“•·’”™Š‘š–’‘–•¡’•—’˜ «˜ˆ ›šžš’— –”Œ”˜š“}¡«–¤•™™Ž–ž“‘˜“—–”¦•Ž‘‡Œ£šš“”¨“§—“˜¡—–š•Œ’ €ž™—žš¢™˜‰“•’œ˜žœ•”–™›™’›Ž–Ÿ“˜š”—–‰™šœžª˜˜”›•ž œ¢š•’—š”˜ž—”‰¤™›¡™šŸƒ˜—™š•𥒕›œ‘•šŸ““•˜“ž†•šš“’˜œšŸ—•™sœ’”œ”ž™–Ÿ™Ÿˆ™š’–±•–œy ‚™”–—–œžŽ–šš˜¢œšš­”–˜›žŸ“—š—‰–¢—œ–œ––• ¡’š˜˜›˜‘•Ÿžœ™œœ”ž—Ž•˜˜ªœ¡˜ž˜–œ¡’¤ªª™œ—”¡¤Ÿž¤œŸœ••£”£–›˜œ…”š’•¥››©“…œ¢› ”›™›’£˜–Ÿœ—“™—›‘Ž—— –š—–ž¤™“œ“—™’““£œ‘›ˆ›žž——ž ˜—Ÿ™–”™š”ž•¦ ˜ƒ˜¢›—†—‹£›—˜““Ÿ¬Ž˜››––›œ–˜š“šž—š“—¥ž“¢“œ™¥ž›œ™š—‹–‘’’›• ”šžŸ”œ“Ÿ•¢˜—™ž¥z¥—›˜ž¤’™“™˜­™–˜˜–˜¢—ž˜ššŠ—ª‹¹¡˜š –™™•Ÿš™œž›—†žœ”•›¬•™˜‘—–Ÿ™™‰–—™›•—–™£‰¤›˜™—“Ÿž™±™—«šŸ•••Žˆšš¬˜›§—’šl˜…•©¡™¢™³—”ž‘˜“ž•Œz–œ™¢š™–ª¤˜–™œš™›šž˜š•¢œ™˜œ›w›£Œ˜¢˜Ž™š–“›œ•Ÿ¤Ž –£š‘š˜š••›˜–š¤˜ž–•¡•Ž—”Ÿ–’Œ“™—›¡–šœ“—›˜ƒ”–”ž£“”£•š–˜Ÿ˜™¡›“°‰™Š”——‘’™”šŸ™™šššš–š—žž––™“œŽ™™¡–’•œš”™™–›“—’œ™™š•œ˜¤˜˜”˜–ž£šš™–§–ž›—˜š–—”˜“—“”–•œ  ‘›ŸœŸš“— ˜”—›Žžš‡˜š•Ÿ”ž•˜Œ˜–©‰—£–—š˜š¡›‰—”“‘—¢“žš„”š––’£“œ¨–š‘Ž’˜–™ˆ™œ¥–‘—š•¢™•“—›‘𙛦™‹” ˆ—Ž›¢ Ÿ–•­˜‘™Ž˜™¢—™§Ÿš”œ‹’¥™¡ªž˜”—›’ž™–ššœš•š”Ÿœ’•ž–°¨˜ŒŸ˜¡œ¬ž˜”™œ¤™¤›š’”žž—˜˜˜›š—¢—™“›‰žŠœ£œ‘—›“™¡™›’™£ˆšž—œ“•š™ ‘˜¤¢—œ’§˜Ÿ””›˜¡ ”œ›—˜®–“Ÿ™—”˜•™ˆ›’¨¤˜˜–‘Œ¤œ“Ÿ£œ—•”¨’Ч–››’˜›”›Šš—››–œ˜“ž—œšš˜Œ˜˜šš•™’›œ¦š”™•™›—œ“‹––’”›““Ÿš›¡‰–𢕖{˜•˜“¡•§›˜••™›ž™“§”𛡙•™›—§——£š”œ˜—˜™•—˜–”š•Ÿ¡˜š™—“š•š‹š™šƒŽ œ–—š––•–˜¡ ¶Ÿš—˜¥œ› ™–š£˜–{œ•›“›š—œ˜™—œ¡©¦”—™•›–›—šŽ²•›ž–ƒš•‘›§y¤˜¢—¡›œ˜  ›™˜–›“oŸ‘”°…›—–™”™“£–ž¡—˜¤–”¥—¨Ÿ› ›——›—Œ•‡’ž–—™–“˜¢—–žš|œ–ž™•©“š–“™˜•š”ŽŸ¤¦Š—‘›„—™s ¡š“—›¤œ¨™•™¤“–›™š´™˜š”›˜¢–˜’™  Š™–‘œ›˜ ž–v𛩧Ÿ”–˜™™©…¡˜™ œ›§˜š——œ¦š•Ÿ”¡—œ“ Š©¥›šž•”’™¤¢“‚œ™›–¢š’—››šž£™™˜™•˜ž—§ž——ž˜–›”•ow˜—•Žš•œ™…‘ƒ–™š›„’ž“”¤¢™œ˜v˜—•“”¡˜“•œ˜–œ–›ˆš–””𙑡““—–ŒœŸŸ•–”˜Œ—š“™š«›œš«¯œ„’’ “š–ž–¡š–“™Ž¸—™Š—–³——˜–œ™¬Œšž¤—•¨—˜¤•š›•žšž™œœ•™™‘’¶™—Ÿš—¡²“œ•lšš¹›š—¢{™—¦Ÿš˜œ˜Œ“”¡œ¢˜— œš–š˜š˜™‰˜™—ž”£—š›˜Ž¤™ª–—™™†‘˜—™•–š—±””••™˜—˜—’•œŸ˜˜¤—‘¢–Ž˜—µš•š›…„¡’•žš˜Š˜—”šš¨œ–š˜‘›’Œ­£Š•¦š–’—™—’™—š–œš˜£›¶¢ž››š¯™©‘š–†–¶—š¨«š•’˜Ÿš¦—£›˜¨Ÿ€›¤Œš •”‘‘˜‚—™š‹Ž•–š™x𙩛–œ†Š˜›¡˜•š–›š±‚–•–™˜w²Š‘—‡™”™‘–w•šŽ“’—²Ž”‰œ–˜˜˜Ž•Åš™‘™ž–ƒˆš•Ÿš¡ƒ¢ Ž“”¢§™ž•›—™”¦˜šš–•™˜Ÿ’š œ›‡•š”š¤“—¢—š’œ˜—‘œ§¦Ÿ‹›£¢œ‘©š‹‘š—”ŽŽ™—”•¥šž¤˜§”—–”’’𔥖•–Ÿ—–¢¨˜“˜{”™œ^œ™–—£ŠŠŸ–šŽ‘“’š‘±~œ••“™Ÿ ¨“”œœ¸’Ÿ£¸‹œ¡Ÿž°Ž¼•“›„Ÿ˜••’©£Â— “‹¡“—Žš¡£˜˜©ž§š—–›˜™·›šŽš“•”™¦¬–˜–—œ£’•º”—¡š¢¾—›Ž’€°¤šŒ•œ’”——‘Œ‘œ¦†•Ÿ˜œ™’šž‘} ”‰Œ˜™“’•Œ˜”¦žŸ›–›™™¥‘’ž¨™—’¢”’–—¨¡Šž™—“•–” •Ÿ› ˜–”“––—œž”—–š˜’”š•¯”Ž••™™Ÿ—™’‹•”š™Ÿ©“–¥‘Šž—‹—Ÿšš”“™¨—•˜šš›•™‹—{›—˜›™–—”›¤˜‰’–œŠ’—¤™–šœ‚””€”¡™Œš£—¸ž¡™—–¡“—Ÿ’˜— ”¢§˜—¢‰˜’—­’‘‘—–”™—£˜•™–”±¢~Ž™™ª˜š’™«œ™ž¡œ‘}´ •š—‘“‘š†–™±ž—˜’›—”˜‰—šš›«®ˆ˜——™œ”œ–› ›˜—”“’•Œ•—˜“𗦡œ¢•Ž«—•Ž•—Ÿœš„Ÿš ¢™£ž‡šš™žœ™’˜˜•Žœ¥”‘ –Ÿ”š—”“šœ˜œ‡‹•—–Ÿ—™–›—•¢ ”–¡œ’‘˜™š——™Ÿ†˜´’™•—ž˜“’Ÿ™—Ÿ“—‘š›ž‹œ¢£…Ÿ”‘˜˜˜Ž—‘Œ”›™˜¦ž š––—š ¡–’’œ›“’˜’”••——œ—› ›” ¡—””‹––Ÿ—œ”’ž˜šš™š›•˜› ˜”š ¨–•«š˜›ž—•˜“–Ÿ›’˜‘Ÿ•ž˜Œ¡š¡ž››œ¡‘•Œ“™•®’’“šš£œ”—œž“‘˜š› Ÿ—”™“—œš‘•‹˜™™žžœ šŸœž£ š–šˆ™˜•—‘”¦”•¡—˜’Œ™’•‘›œ™•’“”Ÿ›¡ŽŽ—‘ “ ›ž™——™—ž—–‹”—¡““™—¢¡Ž˜œ””˜–˜­‘™¡š¢”˜“œ”›”‰Ÿ˜…”œ¡™–“Ž‘“ ž‘šš‘™™‹•“¦ž•–›œ•‘ –˜”‘’–œŸž“‘œ– œ™”˜ž›—Ÿ™–“©”’›‰œšš›››”ž ­œŸ˜›ž—Šžš§œ–›”œ“‡–™œ¤¨•˜–—–†˜–›š—’“›•™›˜š›Ž˜•Œ§––™™‹›››—˜ Œ–ž–žŽ‹¦ª¦‡’ £™š“¤›³À™™ ž¥¡›œ‹“˜’ ˜¢“›¡—˜‘•œ™™›Ÿ¬˜žš—•’“¤”€¥™–¤›Ÿ‘ŒŽƒŠ£Œ˜™¦¥‹¢š–œ¢ ¦œ’¢’“ž‘›—œ”¢Ÿ›¹Ÿ›–Ÿ›™’–’¢‹ £•œ†š— ˜˜œ‘™˜”𖛇ޙ œ› –’ž™•‘–£˜š•¡žž–‹›¤‘—™“™–¢¦ž¤”–’ž¨Ÿ—‚™˜˜–¦¤­”– Ÿ‘¡–«—©—’œ‹— ”š•§œ©”­¢Ž¢– ¼Ÿ“Ÿ˜©¦Ž—¡—Ž˜——˜‡—”“¥Œ“—›˜‹„Ÿš›ª¥¢£™™™¡¦Ÿ–›™˜—‘–—–———œ—˜›˜¥˜˜•˜¢“‹–˜Ÿ——‘˜˜™–Ÿ—”˜–˜˜’ˆ™ž–Ÿš£š™ƒ——™™’™—œ’–Œ˜™–‘Ÿš™–˜–šš’ž•…˜š““˜”•š•”˜•–˜¨™šÄœ‹”šœ˜˜y•šŸ –’•™‹ ˜š§–••—“”——¥ ƒ”˜™˜–š–—˜±Ž—•–™—‘•ƒ•Ÿ˜”›ž—Žœs—œ’Šœ˜–¿yž–žŽ˜—©®¥šš”›˜–Ž—¤™¥•“¥“v—¨˜—¨—™–™—–œ‘–—”¤Ä”œ™˜ŸŸ—”–Œ‘š˜–™™™“—³›—›˜£››£™‘Ÿ˜š•š”–’’––—• •‹˜ž—™“—™‘™˜›’“ޛ𠕙™Œ˜“””žœ—ž¬ž™’–Œš–›Œ–Ž›˜–‘ ™›–ž™¡–•‘¤™¤— š•”˜—–™œ‹˜–™”™›‹˜“”‘—’𙕛”––™›œšŒ¤¨˜š–ž––›žš—•‘—™”ž•š”“š—™™›˜˜¢‘”•™—›˜ š§Ÿ“–•¢ž‘œš˜˜¦”™œ˜™™——”›™“¡–––’Ž‘šš“—•š˜Ÿ——¢œ˜’Œ••“œ—™š”ŸŽ—ž™¤œ”›–““•„–œ¨£™™–™µ‘£—˜”•–zšš™›˜n•žš—‘›——Œ™ˆ””šœ––š“š¤š‰›š—–s£”Œ·Œž„˜Ÿ—¸–œ—›–ž——”•˜”•—™™™•š—’—™š³‘›™ž˜’‘•™¢Œ§•™‘—™¬–ž—™n›„‘Ÿ›–“˜‰¡”Ÿ ˜›œ˜Ž—›Žš—•˜†œ“•µŸ¢œœ––’˜•Ÿ˜”š—”—£›·‚•¨—žš‘–¬™ˆŽ—Ž‘œ‹©œ¦‘œ›ª¦¡š˜±™™ª—œ–™ž¥§›„™“” š–˜“—š™}•™›šŠŸ—’„–©— ¤˜“•¡¢“•›™›••¦“˜–—–œ“—ž˜“ œ—œ“¡›“Œ¥“š—”—˜˜ž–—›–˜™”•—˜œ‘˜——›——“›£ž›­˜–— — ”—Ÿ›“ž‹¥“¦—˜’›””Ÿœ›”’š¤›žžœš—Ÿ•–‘›š—–’™š——ž’ –𢙒˜—™•š ›•š˜œ¡–—œ™ ¡—•›ˆœ œ„™‹˜šŽ˜“¦“••§”•”–šˆ—”››››š•š™š¤š›•œŸ”™™’–™š›š›™Ž——›™•–Š›”˜‘š›ššœ‘•–Ÿ› …˜” ž—•™´˜œ”“•™šš—™››‰™–‘š‘¥” š•—šž¦–””–”š‘™˜•™•™›™¥—š–Ÿš”“™Ž™šŽ±…¥˜™—ž™™–•’›˜›š™¤—”›§~™¬•—™Š˜š—’˜˜—š—™—œ•– Ž¡›™˜›ªš˜ˆžš™ŒŸ’˜¤›–‘𕛇˜¥—œª”¥’šŸ“¨”’˜Ÿ™¤š—Ÿ˜™œ‚–Š›œ•™ˆ’Œ€š›™›—Ž˜œ›Î™“—™˜¯›‡¬Ž±™ —Ž˜—™¬›’‰““š‹›•©‡–Ž›œqˆš™š£™™Óy›™’š•¨ª¤ž š•£‘™’—˜˜¶˜ž™–›“•Š——l¹›–𥰙Ÿ˜—“™–—ˆŸ—˜•™±––˜•–™“•ž™˜˜š’“™¦”¨š™›š”šœŸ˜’•™••”———™œ–𖣓›™šž™Ÿœ’­”““”– •Ÿ™’˜›–“˜‘–’–›™ œ™©˜“™š” ——™œ‚”›™–œ•’–›šœšœ“¢¥˜”œ›œ™“”‘™˜Ÿ˜–“˜Ÿž““–¢’œ”™š”˜š•œ–¡——š˜£—”“™—œ˜•œ˜˜—¡““˜–”““™œ–š¡˜œ£’••™—™“™—›Žš–˜—’›¢£•™¡ŸŸ–•‘›–Ÿ˜™“™’——™•—£˜ˆœ˜•›’ž’–ž“Œœ|š›¨ŸŒ—™—”§‘š•“Ÿ›œ—™¡˜˜’™™¥—ˆ—˜—{‰š§š˜œ–š˜š˜ —žš™š˜šŸ’¥˜ƒ’›•™”š˜—––ž¬›™•™˜Ÿ˜˜š˜Ÿšœ›œ™“š©›•§©™››™’’‹˜Ÿ›žš™š — —†˜Ž›™š›‡•˜§¸”¡›˜˜—Œ˜£Ÿš•…™š–›§¯›œœ˜››–˜œšš›˜˜š‘’ŒŽƒ’—”›››Á—žš™›—”¢–•”ž™—“¤†˜œ›—šª”–¤™Ÿ™–ž‹”ž¢˜˜˜š“‘š˜—™˜x•œ—¿£”Œ’—Œ›§­–—œ˜šŠ–¢˜”›š“¨”“ž›£–”™›˜”—™™—‰Ž–‘’˜¦ š™“š¢˜œ•”–˜˜¢•–Ÿ™š”—•“—’š™ª™—‘”—šž’™žœ¬š”™ ”‘˜¤‘•¢›”ž–“¡•˜’———“Š›ˆ’—›—£”œ”˜“›Ÿ˜Ž›•™™—š—•—œ——¡“š›˜–£“—ž˜”šœ™œœš”š¡™•˜™ –•––”˜š˜””˜—’—˜œ™•™œ”š•›˜›’›——£š•”¡˜•”‘”—™›“™’¢œ“™—”“𥙗¦—Œ˜”’‹™•“™ ›ž™•–š˜˜š—”—•™–—–”£–œŸŸ—š’¦ŠŒ›–““˜™—š–˜ ˜˜ˆ™–•›™£¤š¨Ÿ–˜—ª—¦”›˜˜–‘—šž˜œ••˜–˜–˜–•“ªšŠ˜˜¦š’œœ˜š—“™œ “•‰š—’–—›ž‡˜ˆœ•­—’«ŠŸ™•—¡—””¢˜”˜“zž¢¢“›–—¡š”˜‹•™¤•”œ«˜”›—’Œ¡•˜¾ž³‡™‘—”™Ÿ—š|”–•˜–žšžŠ†ž”›››˜™ˆ˜¢›š§†¦¤”šœ˜’·­ˆ”˜œŽ•˜¹—‘™¤•Ÿ„ –˜˜Œ‹ ˜š—˜›Šš——•ˆ”šž•ž’˜„“›šŽ†ž——Ÿ˜–™˜ª~˜’š’˜›˜—ަ’𠡦–ž”—Ÿ™œœ••—‹Ÿ¡Ÿ™™’”Ÿš§ˆŽ”—Š——’‹™•™œš§“ˆ–––—Ÿ—ŽŸ™ž–’”ŠšŸžž—–¢˜¦™—Ž—œ™– ›ƒž‘•™™œ›•š˜œ›–“–Ÿ™›—•—›’ŸŒœ› •‘˜˜—Ž™—“›œ‹—”‹ ™˜“”œŸ‰‘—Ž“•˜˜›ž” ™“˜œ™–’𤙑˜ž”œ•‘˜’–š“£™¤¡Ÿ•“–˜”›“›‰“‘•–˜œ™‰›‘Ÿ’‘šžš™žŠ•“—¢™”’–”𛋠•’˜š›Ÿ˜•ž“‰–¤–™‘™¤ †”˜Š—ŒŸœ—ž™š§š›—”ˆ£™œžœ’ŽŸ¤¦’ª”—Œº—“„›™Œ˜ˆ”Šš­ŠŠ›‘›¬’½™•“Ž˜•‘Ч–™•˜Œš‘³„¢Ž›ˆ£—”ŠŽ‘ž“~«Žš–š¤ž›«™ ˜—–™Ÿ–š—Ÿ“†£›”’šµš¢™Ž—˜›™—“´¨Œ––š“”Š”™‘š•¡œœˆ—ž¬“Ÿœ†¦˜•ž” ’¡«”ƒœ•Œ˜œ…¢š²ž¦š¤‰¡Ž—¥˜ž–——‰—‹•¡›§™•™’˜¨š—’”•…–••˜‘Ž™¦—“‘™••˜£’‡‘•‘˜ŽŒŸœŸŸš›œ–›—Ž£–š““•ŸžŸ§›”ž “𔓡•˜•–ž¥˜•¡¡ˆŽ”žŒ“‹—›•¤ŠŽ›–Š› •›Ž•““ ¡£”—•š—™•šžœš™”‘™–›•’™š’šš–š˜ž“¥žœ›™ž‹ž—¤Œž™š”—¡—•šœ’›—””’œ™¡‘–—𢛙¨“™œ•¥—˜—•›•–”˜•ž‹ª™—ž“—››©—¤•Œ•–š–›‘ ‹£¦—Ÿ›’œ•›•«˜ •¥’’›–™ŸŽŒ’•žŠ™˜“’©˜–‘––ŸžŽ—’„ƒ—”’‰•“•—ž‡§£”‘žžŸŸ‘˜˜˜œ¡˜™”›ŸŸš‰’’£‰œ–›Ž“Ÿ¤¤ ™œœŸ•–Ÿ™™šž’‡œ±™”™‘Œ‰ ˜›—’£›¢¢¯“‹¨—Žœ“¤›Œ›“¥—Šž›šž™Œ¡“™ œ››œ•œ Ÿ”Ÿ’›Ž£¨––›˜š•Ÿ«–Ÿ›±™”š“¢Ššš‘—•¡”¥ž–š’—•œ”—Ÿ’™”Ÿ› ¥”ˆ•›šœ Ÿž”šœ™„—ž—£Œ˜–šš™œ“Ž—ˆ–›—¡™¡ªœ™–™’–’—–›Ž–—˜˜—‘–š“—š›Žœ•˜‘’”–›š——–˜˜—š—•‹˜—¡”™—–™——Œœ‰•›Ÿ™–œ—™Ÿ¥š—•–žš–†‘™–’—›•œš˜š“›”Ž‘™˜“•”œ—”“§œŸš“ž¤Ÿ“ž’”˜¦¡š› ››¢šš™•‘––™‰—ž¨™˜…™”››™œ—œ›˜œ˜™š™—™ž“•Ÿ•–—”—œ›Ÿš™™—– Ž—›ƒ˜¢›šŸ–œ—•’˜–—›š•“›™”œ•™•¡—œ™š›”›™™•–•š”›š™—–†˜Ÿš¨£š›¥œ›–—}—šš”•”™™›’˜–“£˜ª—š•™’”™ž”˜”˜”˜™™›–“•œ”˜‘‡„¦”˜•ž™š™š—ŽŠ™› šœ¦•™‹›©š•š˜—¶”” –™œœ™––š›˜›‘–›Âšš”–—…šœ›™–™›–””Ž–˜Ÿ”„•˜šš˜œš¢™˜“——ž”’z•˜“–š™qšˆ™—‘“žœ˜›¶™½–™™˜–Žš¨™œ”Ž›“–¤ˆ˜™œ§’lž¡˜–™œ™”»º•Ÿ–™˜˜¡}¢•’–—Ÿ•”•¢”™—•‘Ÿ¤nžŸ˜•†™•žˆ˜–©¨››Ž±˜¡™‘—ž€¨Ÿ–œ™™Ž†››š›”Ž˜—š•—›‘›˜†ž˜•}™‘›œ{¡œ‡™–ž˜“œ™—•Ž™— ‡”¨”—–™’‘‘‘›™—’˜›–™˜ŸŸ‘š“™—¡¢—‘•˜š˜›Ÿšœ—œ”™¡“™•‘—¡š•–¡˜›“Ÿ¨‘™‘”£”””˜›™Ÿ’“–Ÿž”Ž œ”œš›˜••s”™™˜”šŒ–š“˜›“ ©˜£–™Ÿ•’’›™“— —•œŸ¬¤Ÿ—Ž˜“’š”–¢•”Ž–˜˜ž’Ž™‘•‰œ›™—ŒŸ™—˜˜“™¢žŽ•›”œžœ ››š¡£—¡Ž››Ÿ™Ž•”š–—“š”˜–”˜–𛥛““—¨•›—œ’””—¡”–œ•‘””ƒ˜˜Ššž™–“•œ•œ “™˜’“˜Š™¤ž™—“˜Šš|–‘••ššœ”–”©—™”™Ÿ™Ÿ”œ•’š™š“˜šœ˜˜œ—Ÿ¢—¡™–‘š›¡ˆ’’“‘–²™–˜¡›Œœœ”‘ª–›š™œŒ¡““w—“œ˜––˜˜”˜—œž™¡—ž”™š•¡¦™˜”§‘¢–¥“œ˜š—…—“‰•™Ž–šŸ”žœ—‰˜ž›¡— ˜”˜—™š–›ššŸ‹—›¯”Œ˜••£ ž”›¢”ª˜Žš’˜‘ž•™—”–˜¬—£‚™œžœ„”•›”——™”–¤™Œ˜“˜§’›™‘šœš–—•˜¤ž¡—’Žž­“†›œ›––“’•“œ§™ž§•˜¬‰‹”…¬’ž‰‹Ÿ©ž‰“¢Ÿ‘¢‰–“™›–™Ÿ››œ“š¤¡Œ’”Ž˜—™–ƒ¥Ž–¢ŸŽ—“‘‹–•”¯˜› •”†“””’š¢š•šª–¡œ’¤•¦«‹œµ§’Ÿ¥•’š‘žŽ‰žŽ–—™‚’š•“’”Ž”š›Ÿ–›‘›”™˜’ž£ž‘–‹›—•›™{•Ÿ˜˜‹›“¥““Ìš›¬¡€˜›™ Œ– |š¡š–‘™ž”©œœš›”£–“Œ•—‘—›š–“•ˆ–˜ž‘½¦›–š˜š–ž¥¨™”ƒš ‹œžš™˜ž—–š“™Ž•œš˜›–†œœ¢˜§§—“™™žƒ¤’˜‘‘™šš™š’œ™š—˜„‘›œ©† Š—œ™™–”™˜—™š—–•š™˜¡¦‚£››Ÿ˜ŸššŸ›™˜ ž˜ˆŠ†”—™œš™’˜¥–™ƒŽ—¯œ©™¤ ¡ª —››—¦™™›—‘£™”£–˜«„—Œœœš™™¼—œ–¬š—–•ª¢˜š™›–š•˜£˜˜˜š›Š–œ«¬£œž†œ’¾€™—‘›——‹—– ”Š›­˜œ“™™—‹˜”˜˜››Œ…“œ™—¦€”¡Ÿš…žš€¤§’’…œ˜š˜”–™Ãž–¢¤ž•˜›˜™Ÿš›–—“™™¡œ™“Ÿ™—š‡–š—œ† “‰Ž™™œ—˜˜•• ž›–›™™…™œ”›™‰”¡˜­™•—”œ¡™™™›˜Ÿ™˜™¨³šš““¤“¦š–ž£™—²•–›¡Ÿ™š—–˜¦–§šz‘…¨š™–”•’˜£˜•™”ž™‹™šž™™–’—œ—˜•¥£—–›—˜—œ˜™ˆ•––››†šŠ–ª˜¯œœ§”›•™˜——ž‡– ±š‘©š“wŠ———‚™š–•¥—›šž˜˜–‰z—‘˜˜Œ¤™žš™™š—˜œš¦}œ•—˜”•—–š™–®—‘œ—˜–—’™Š‰ž›šœ–™—›ŸŽ›“›˜Œ—‘¤–—™”™¡•—“¥±•”š›™“–Šž†—œ™œœ’“™¥§‹Š ¡• š‘ž’™¥’œ—žŠ—𱄒•š••˜¦¡—’—¡¶Š¡¨’Š‘”¤•ž™ˆœ‘š–š”‰› —–¡–’š–”•—””—“œ›–Ž™˜—®œ˜©¦Ÿ“š”’š—‚†žšš˜™¨—•Ÿ³¢˜„—’—š¡Ž¤’ž…š†©¬•‰˜©¤ ”žœ”š¤ŒžŽ–š˜œ˜”¨–§–”Ÿœ¤œ™—“˜›–˜–‚•™£Ž•§™’¤¥Ÿ’š–Šš˜—“Ÿ—‘™—™šš§ž˜–˜£›Ž™“‘’•Ÿ—–š´˜–—˜—™ŠŸ™•™˜—• –‰››Š°›—œ£œ–‹œ–’ž“—£•—“šŽ”–’œ•˜••‚–›ª™˜”Œ˜•¦˜—£–—œž™š•–ˆš¡—““—–—‘’™——¡— ”š™Œ—”›ž˜›œœ˜ˆ“–¥ œªž”’™œ˜–žš•›™Ž–•’––—‘”Ÿƒ˜–”•žš—•“­——w˜”‡˜š•–¥¤›¬œ–™–‘‘š–•™š˜Š™™—›ª¤—’‘˜–™›œŽ—–”˜¦–¢™•”¢™˜¡™•—¢˜“–”“𙝉™›•˜™”—‹–©šœ“Œ—œ™—˜‹œ˜˜–œšœ ‘—šœ“Ÿ• Œš—››—›’›’——œ”›•Ÿ›™š–›¡—œ“”——˜š™•’”–”𗙀–™¢”•œ–—˜˜”’”–‘š™˜—•““‘—•šœ•˜—ž—“žš™•¡‘˜Ÿ’š‘™˜•—Ÿ’›–˜¦œ‘•˜–œœ™›š˜ˆ‘—˜“š—šœ—Ÿ•–•“˜“˜›’™“»—¡——–—–œ—˜˜››¡´”—›•œ¡œ•›Š•’‡›–˜˜— š“œ¤—¤˜•š—™Ÿ™¢›•”𢔙‹³‡œ–˜•’Ÿ˜šž˜—™—’–š–Ž™–˜”–›™›–®…¦§Ÿ›˜•¥™—•Ÿ•Ÿ˜––š˜ˆ”’ š•§˜Ž——š˜––˜¸™˜›œ››—˜˜¬˜Ÿ˜š˜˜‘™šœ•š™š™‹–Žˆž—”›˜—¤ž˜œ–’†–ž“˜•˜‹—’‘Ÿ™œ”™ž™œ™‹˜ž—•”˜Ÿ‰§œ¦‘—™””“™›Ÿ•‘•›˜—‚Ž˜’˜{˜–˜‰™–˜š˜ž–“Œ¡š‰›¢®’––œšš™™–œœ•˜š—›•£”¢‘œ––– ž’š–œ™—œ–™”•±™›•˜žˆ—‘—œ—œ›’œ™‘–™œ™„œš™•’—‚›–˜™Š‘šš˜‘–”›‹—’™›–——š—š—š“›˜š—¯œš›•˜˜™””’•–™–• š™˜–˜˜’˜›•“–‹›––•˜“˜™–’–••™”š‹œ‘˜œ—™”¨˜—›“™“•˜”›–––”˜—šŸš›•šœœ•š——™——”•šž”–—™”ž¥œ™›£•“œ—”“¦˜“Ÿ™››’˜˜’™”™˜šš›‘—•™Ý–—•›’˜¢Ž™••›—”—•”•š•—˜—˜Âš˜——ž–—š“•‹¡—˜Š—™–ž”˜’——™™–™—‹šœ•–”Ž—š“•™—““”š—–œ˜š™“€˜›–”ˆ“˜š–›”™“›—¤‡œ¡—™›™œœ‹›™›š™“–—–Š™™””®…”™ž œ™ž™’Ÿ¡–™—“¦’Š˜©™‘Š’”—˜™–•Ž—Ÿž©¦Ž‘œ’’‘”™“”›•–›®˜—‘—™š›™–Ÿ–½™š˜œ“–“Ÿ™œ¥’”‘¡²– Ÿ”›œŸž–’™›‘š›—…Ÿ¢žœ“›£”‹•š†”š™”š¡˜™ž–𥇙–›——š˜“¢˜’𔑗™–¢˜›••‰—›—“¯—™’˜–œš˜”œ|˜Œšœ™˜˜—•—––šœŒ£ž”•™–ˆ“Ž›˜—€˜{“˜›˜£Šœœ——š˜—–œ˜™}•˜““y”š™—™˜¤”ž—š’™—“˜”•˜™—š˜‡©˜‡———œ˜ª˜›–˜šš˜˜™‘˜›˜š¡––™˜˜•𗤋›‡œ˜›œ˜—£Ÿ’š¡š˜˜——˜¦•¢›˜–y™–œŸ‘’™——›¦¥–—g–Ÿ¥™”¨œš–˜kÃ˜šŸ—˜—¡™˜‘–œœš—™£¤¡Ÿ›¥šš˜’—“™ž˜™•¾–¢™žšš™—†¢˜——Ž™˜œ—–œ˜Œ”¾“€™™•¡™Ÿš™˜˜œ™–›—œ“ˆ•°››¤¥˜˜˜˜ •´¡—œ˜˜™˜œ•”ž‹™—£™” –—”›˜œ£–˜¦§¤‡–ž——˜—šš™Ÿ–˜˜Ÿ©˜‘‰‹™œ˜œ™“¡¤–¢”†šƒ•“Œ„”ž˜Ÿœ”“‹‹’¬™ž–˜£–œ¢¤—›—’’œšž£’¨•š™œ‘–˜—¦¤— ˜’”˜˜•›——¦—Ž–ž‘–œ—”™”œšœ‰œ“’‘••š‹ššš§˜šŠ‹›™‘–™ž—š–š•¦–š˜Ÿ›˜¡•„•””œ‘–£›’•œ~ž’—™¤š¤›š•–‘—‰š—––ž”–™œ¨™ŽŒ—›•ž“ ———”—š›¡š‘”“—šœ–•ž˜‘’—””²§••šœ•—’“›—”­šš•˜™“—œ¡—Œ‡–ž™™Q𙤖•™—™Ž›¡œž•™ž˜y–¤Œ‘š•™­™¥š—›œž˜–•¢œœœ˜¢‰¨Ž˜•—˜˜“©›•˜˜Ÿ†¢’¥ž‡š†—––¤›£•—–ž ––•š˜Œ˜„‰Ÿ—›Ÿ˜°——Ÿ—™›”y›—œ—°¹•—š–™—|ª”˜—•—™Š§™§›‡™–˜˜”Ž•š‚”œ˜Ÿ°š¡ˆ”¡˜™œŽ´…–š•‚œ—¹„—œ——˜› y›“”•€£Ÿ—˜˜™¦š™˜’|Ž— ™“Ÿ¿˜›ª˜™Žš¡”˜—…””›Ÿ˜•”ž˜{—Š™—˜ §ŽŒœ–™•›š›“›—œ—•––—“ž•˜›“Ÿ’”••š‘—œž“žŸ”›–¦›Ž˜–’Ÿ–••–˜›™™™¢œ™—£œ”•˜•’˜””¬š”œ–œžšžœ–––ššš•’œŸ™˜“š•—šœª—›—¤¡•š”’’œ™œ•¡˜Šœ”œ–˜—•›šš”Ÿ—•’—–š’›œœš—Ÿšš——™—–—“–•š›˜Ÿƒ– ›“”œ•˜••šœž‚—Ÿ—“–˜››“ž‘™˜œ–›—›«Ž™…Ÿžšœ›–”–•Ÿ—’—šžžŽ˜š“šš•– ’©µ˜˜––˜’š™˜”Ÿ‘—Ÿš•––‹•™‹œ–™x§›…—›œ™™ ž›Ê”›“”‰”‘–™¡›™œ§–’š—•˜™šžž•›§“š•–œ•™«˜—•”œ˜•–—­™•–Š“–™ š–©„‹›Ÿ—¡¦‘š˜“™Ž—˜¦—†¢—–¯Ÿ—Ž¡«ƒ—‹Ÿ—™•˜–™­—™—•——’––ˆ£}Ÿ•›œ³™{˜‘|˜™˜œi–œ¨“˜š~b™˜ ˜œ–ŸŸœš•Œ¡¡’‚¨‘¦——–¿“œ˜œ™˜šœ˜˜˜v“šŠ¤›À¬™œšœœž•š˜—“ž˜š¥±ˆš—™—˜Œ›—“¡š•˜™—š–™’––ššš“—“’𢡣–“˜˜©•™˜›––‡—•‘—|Ÿ•œ¬•®—”–––’œ”‘Ÿ™”š¥š§šš¥…š•›”˜¤˜Š ”—Ÿš–Ž“˜Ÿ¦£—¦œŽ™¢•£š–™³œŠ˜—žŽ–~˜ª‹‘–›˜•ŽŽš˜¢™œ”“ž‹˜ž™‘•ˆ™œ››˜—¤“”•–šŠ—…¢–‰š––ššŽšƒš¡—¡•™–‘ž’–™Œ™˜™|£›˜¬‰š˜¢¢—¨˜¡˜§¢“˜‘§™–†«˜•——“˜™®›–—š¨¥š¢••~›˜™œ¨––—•˜›Ž››‘š˜Œ‘š’}‹˜––’•›•ª–’”Š˜š’¨š›¢›™˜•™’ƒ‹s™•œ”†–À• Š™š– •‹”’ˆ“Œ• °’¹˜’”¶±³Žš–žš—œ—“¡–ˆžœ™œ—Ÿ˜•¦–™”šœ–™˜”˜—ž”œ“Œ˜¡†œ‘”˜—’‹–”œ ‰–œ—‘˜’˜›«’•’š­Ž™Ÿš’•Œ•“• —™“Ÿ–š“›”ž–ª–œ”‘›’‘œ“›™›z›—–•œ›™«™š™•™”–ž™›Œ›‘šš†˜•Š£º”—•†–‡šš™š›£ž˜›”›–˜•”š§™Žœœž„“™›ŸŸ—’—š‘–—š”–—’’– œ™›œ™¡˜}¨¥¨—•š˜™¡•”——™™p “Šš£´™•™•˜–›š¢˜˜˜——˜š—‘–¥–˜–––Ÿ˜®™¢›—‘•œž §£—š—•Œ—¢•š©™›£¨“š˜™“‘‡˜›˜–®¥˜™ž—”™˜•t–—¯¶•¦©“•™‘—š›”–†——™›—h–‘ˆ}—•—ˆœ¤˜°š Œ¦œš£„~}°”‡qš”•š–š›§“š™x½›”˜ž™—£™Ž™”¢«“”š—–—•q——™›Ž ˜¬œ˜€œ•ˆ›ž“šŒ • ”•˜”¬¢ŸŸ›’…™ŽœŽ”…„—›¥•›Š£œ‰’Œ™›œ•˜˜–˜–š•›”’³˜¢‚˜¤˜“©ŸŸœ›{›”»Š‘™‰š”‘‹œ¤¡Š”—‘“’•›•‘’Š ˆœ£‹—˜žŽ’‘€›•š“˜‘—‘— –“¡–˜‘–‹˜–•“•”™¡Š“”¡–•œ••œ™–š›•œ˜œ—«—˜™¶š”›Š—§™›¢œ›—š¼“˜—˜˜™Ž•’”•™ŒšŸŸ”›››•‘ŽŽš—™“™•šœ“˜˜œ—¢—™Œ”¢˜•–²ž•›¨±”Œž”žœ˜“¤•Ÿœ˜‹›š¢–š˜–™ lž’š•— — ˜ž—ž‹——œ™˜“›–œ›”°‹šœš¿œ ‡¥ ˜•™–‘œšy—™™˜ˆ¦–™›šž–š‹–Ž—š””™ž”™“•š˜š ”Œ§™—™™™“v˜š¤ ˜—Àž˜œ¡”™˜ž””™™˜˜º¢¨š“—‘†——“•®–—£šš’˜—˜x𡆕˜¡— š~·š›™œ™—˜š«“– ™˜–‘šˆ‘‚™œ®˜œ›|—ª˜—§–ž™‘œ—~–™°˜š¡™‚—˜œ –—Ÿu– ™¨™—ލ‡œ†”œ“u˜‘—–œ˜Ÿ¡›“–£š›¡–ƒ‰—𬕕’œš˜Ž™•—–ž…‹‘—•˜–›˜Ž”ŽŒ¤›”–˜¡‘” ž•£“™Ÿ›–• ‹¥y© “œ›–˜œ—šš•”›™•­ ›—’–m‘›–›•š›––›Ÿ™’”–„›ž›“š‘œ˜‘𤙖“–£”¨›z˜›˜¤”Ÿ—ª½šŽ –µ˜¸›š©›œžœ™¶›™¢™ŸŸ›•¨•—¢Ž‰¥•–Ÿ›šš’™›™«—Ÿ˜™™œ¢¡§’œ¢•œ›“–Úœ¥–™Ÿy½ª”™‘±›–­–œ¥“œ™˜§˜¡“”˜Š®—Ÿ•™À’Œ—ž˜š—~–žœ ªœŒ™›‚œ™¥ –›ž˜˜˜››”˜¦œ¨Š¤Ÿ™š—š–•™›‘”™•š•˜™—”–š—›—Œ—¢“|°‹¦˜——•–™– œ šœœ”—˜›–˜ž~ˆž’˜Š™–—›™““—˜—š–™œ˜žv¤–™˜š–¦˜«‘™› ™ŽtšŸ››¿¢•™‘—œ˜€’˜£¢¯”“––™¤•–Ÿ˜™°ž˜šµ™—‰—™‚¡™‰º‰–€™™”——•£†–š˜—•s¨‰kš™™˜›—“•œ‘‰Ÿ—Ÿˆ±„¡ ›²——Œ‰”™•›—n¦—•–œ—§Ÿ–}œ†•–š—‘”–—™Œ™••š¡™’¢™¨‰—Ô«œ–”œŒ“˜¥™›˜šŠ§„—tŽ˜˜—‘Ž™˜““•›•›—˜›°™›•™œ›”—½¤“Ÿ”š‘•˜—•œŸ“˜—™—£™——–«±–“š’˜–˜”Ÿ¥”—›—“™˜˜°œ”—–•—ž˜“™œ•˜“¹—™Ž’§–˜˜ž˜›—¥–˜ˆž“Š£›«—§š—˜„œ˜””¤¢—𝖙µ˜•—•››”›•˜š—´–›§˜•™˜•¤‹y¦£Œ›œ—–›ˆ—–¡Ÿš—Ÿt™”†˜¡•œ†¤Ÿ˜šƒš™Š£—•˜§˜’lˆµ›•—–ž“——›—•y™š••‰˜©˜“ž›”™•“‚˜›¢™›˜—›Œ uy”—š˜’ˆ˜’–“Ÿ†–›¢›››¡˜˜¡—–šŠ¨Ÿž˜›Ž—–˜—’š—•š•˜¢–”ŽŽ”—™•˜›™——“›•˜–›”—˜˜˜©•œ••›—””‹™šŒ——±¢˜›Œ¶œš‡˜™Ÿ—¡œ—³«¡”ž“‡–¦•¡Ž™˜˜®¢—š­—‘‰˜˜Ÿ¥€–—¨•¤™œ›™˜ Ž——˜—›ƒ›£œž—žš™”™“Š‘šŸ–š˜’„œ™šÀ›ƒšš“£›™’€—–˜ —¦š‘w¦œ“—„›š››Ÿ˜˜–˜——‰œŽ’“ ª—†››’¡¤|˜—˜‘—˜¢•¢¢“˜–•œŸ™šš”‘‰˜•š™œ–—„—•r™—𣥣™•“˜’–™›™¡šwš––™¢™­Ÿ´•¤™™™–˜˜›¢––—’œ¦˜—‘˜™––—˜–˜†”˜ˆ¥š›Š‘™’•‹¦–˜˜–™®–§”—•‘…¦œ›—¢ ˜›ŸšŸ”˜¦–™ƒ˜¢Ÿ––‡™‡ƒ£—Ž—˜’–—™«l•˜šš–®ž‹“£žœ —–˜¢˜’Ô–™”³—ŠÆš«¨˜—ƒ˜–Ž—˜xŸ›š–𝖒¡™ š—µ”˜——››Œ™—‘𕆛Щ™›ˆ˜¦ ”œŒˆž™¡š—••‰¡œŸ¡•——˜žš—˜—’”‡‰˜˜™˜Ž¬›“—˜‡œ•™Œ—º‰ŠŸš“———‘Ÿ¤•œ•˜˜h‡”£‰¢¡š–œ–—–ž˜–‚™™™“—’™˜•¥™—••›’Ÿ™ž˜˜“¶ˆ—ƒ¬bˆ˜˜›˜•š°š•v‹—¤¦žœš–ª˜—˜•—š —•°••˜– ˜™—švž—™‘–±˜›¨ƒ™›™•™ž˜¢“|¹”±˜‘–¨™‘˜œ–—𠱇¢•›œœ–›¨ª˜—˜ˆ‹™—¬–¦˜•›š”¥w”¦šœŸ”–—Ÿš˜š„›˜™žsž¥ª”•œk—˜¡’¢—›™…—ž•˜‘™–†Ž™•¡”–›Š—¤—‘”—Ÿ”›”•——–”’š§œŠ—–œ›“¥ž—™›£™•™š—”žš§•¡–›œš˜Ÿ–‘•¼›™”––’Š•ªŽ£™†‰•–ž’ž”’𙑕›¥¨—ž‘—•˜‘šžž‘™—•’ššš”š¢˜›Œ—›‘Ÿ™’›¥Ÿž•—‘–‘‹“—–•™¡™—––ŒŽ¨—‘œ””œ•š¨ˆ›’–ž™šœ‰“œ–™–’•–Ž –•ˆ¦œ’—–…–Ÿ–œ”˜¢Ž•”™–—£˜™’¯š•rŽ˜’œ„ ‡™¡———ž’‹˜›œš¬‘“—”Žœš“Ž§›Ÿšš—“••Ž—’›¨Ž ™¡˜’–œ —“ˆ—¥œ¥ Ÿ¸’›šŠ™›ž˜‘œ¢œ•—¬ª™š‰©—™—𔣙–™Ÿš–œ˜š‹–”š–ˆ…‘—š™›”–›˜˜˜ž™¦Ÿ˜œ“ª©‰™¯š•“‹‘“™–»‰–Ÿ“–i™}—›Š—š™—˜š•––”™š”¤‹’‹ž˜ž—š”…•™ƒ…œ›–››¦±Š‘wž•–ž•—‚𗢦¢—Ÿ€‹’™œÁ™˜œ¨«–˜š›™“’— –˜œ‹´ˆ™™œ™˜©œœ“›š›š ’¢™“˜Ž˜ž ˜˜¢“˜“²Ž”™˜Ž”›–”œœ—™™“›£”«Ÿˆ›––‰Ÿ˜•‰™˜”œ–” •š˜—žœ——›˜ž—œ›¤•–‘œ‹ž˜š™–˜›˜š–š•›š“¢”‘˜ˆ†œ”š™œ“›•‘Š—‰™ž¡˜— •ž—¡‘›”›—”•žš“”››››™—™‘žšš”œœ“”šŠ–œ’Š“•˜› ™”¢–ž —•›˜˜—˜——œœ¢œ—£”›“›“–”®Ÿ•—Œ•“š˜Ÿ™–”Ž–•š˜ “šž˜™šœš˜•œ›”’˜–𑙢˜—™šž–—™“Œ˜˜¯™–˜™•™¤ž›–•™Ÿ°—›‘šŠ™–œ‘—šƒ–—šŒ™ ›˜§•ššœ——šš—˜š˜š˜’›£¡™•’—Œ ž¡£§™˜˜˜™—˜š¥”‡˜š›–¥Ÿœ—¡™¤™ ›š•œ—›™œ˜˜ž”˜•™š‘žš•˜šš—˜£œ£›™žŽš˜—Šªš™©˜”™‚˜’œ™ •™Ž–œ˜„œ•š…œ•—˜…œ–©—˜‡—”•”ž³£†~ž–˜››”˜›§–™—˜˜™•šŠ” ‰˜¨™—£˜—šŸ‰žœœœ™–‹—¤¤–˜‹Š—˜š• ›—Œ—“™Š™¥š™›…˜—†¢•–—š˜š˜§•™”˜˜™’ –˜‹š“›š•‘£›šœ©œ›“—¨’˜¨x™—£–|¡‘”˜Ÿ•žœš¤˜œœŒ”†™šª•œ‘‡™ “ ”—œ™““››š“ž›¢ƒ›”‹zŠ“‹•ž˜Ž›ƒ¡‡˜˜š¢¢˜  ¬”›œªš™“›••œš­­wŒ•–•˜•š•œ›«Ÿ ˆ™—‡– “’™ª˜šˆœœ•š‘ŽŽ–”“““¥˜ž¤¤—’šš›’¢‚™–——…›²Žœ¤•“𛓔}š”Žž–ž}™“ ˜Ÿ ŒŽ“œœœŠŸ›—³•Ÿ«’™Ÿ­–ŠŽ‘š› š‘–“¢“œ—‘•“˜‘ ””™š˜˜–˜–“ˆŸ’š—žŒ•Š¢œœš™—𙑢™”šš–™››˜’›Ÿœž˜—™—Ž™©«Ž¡’’—𢛗¡š•™•›™†‡“š¨“Ž›’‹——˜–’ŸŸ—™›”™‹œ•—Žˆ›˜š˜–‡š™Ÿ—Š™–š“’Œ›ž™˜˜””™™›™~š†˜›•–›¢—¤œ…›•›Ÿ›–µ• ˜•–¦™–••ªŽ‚˜–—˜˜“™œ«œ˜š˜™¿¤ˆ¦šŸ“•¢˜‚—|™š­–›˜”œ¡—›š¢™šž«¡‘•𤕣—™£™–§ž¥›˜‘˜•”¡‰…—› œ››¢šž™¡¥’‘›œš‘œ§’˜™—¨‘œšœš”Š“Œ“¹’™”•£œ”–—œ–Žž––””𙋔˜”›™®˜“± “–˜œ”—›™¢’€—”™”Œ­–“š¦¦o˜—–œ™•š–”˜–š“š”™—”¢£™——š”—™š’‘˜™”’ˆ‘šž˜š–¶›•–˜¢§”‘”••ޑ𥙗˜Žž–•Ÿw˜›©˜—Ž–±|™™—š—“˜–ž}•”“™˜–Œœ¬›Š•˜”˜„–žš˜•–‘‹Š‹™›ž–ž¦˜‘•šž——œœ‹˜«›´¨”t™•—“¯v‘’—™”•Ÿ·›•’š´˜ž•´”˜ª{™Š›¬†—˜”™–˜—ޡ𔛒—˜œ–›–ž‘œœ™——›–™”›™—–¨¥—†šŸž—˜–œ›™“—§–ž——”™‹Š–—¸§”•—œ—•™š—˜™”–¦–•˜—¢Ÿ¡œ˜˜—”—˜yœ˜Ÿ˜™”ŽŽ”ƒ„¡™”™š–²—¨šŠœŽŽ—›«™¡—“›ˆ—“ž–‡†˜œ –•w˜–¯˜™¥–™ƒ ›—œ“š——¬•–—›—–‰œ•¡‘´›š•›–£˜—˜–›””š¡«§–›¦’››ˆ|››‘’–— €˜•›–¬ž£ŽŒŸ–•„—›––——š—À™˜”š¥Š’‘•˜•–Ž›œš•¢‹‰—®š“›•¨¤¥¡“‰–•›Ÿ‹–™ž˜œ›•—šššŽ˜—£–š”———˜”›¡”™“™•‘”ž¨™™˜™˜•˜’”•™Œ“’˜š•–œ‘˜–›œ‘—•–Ž––›š–”™Ÿ˜œ™“–ž‘¥›¥™ ¢˜˜šš–•—’”—¯’¡›‘™‘ž˜Š’˜‹Ž™––˜«•–œ¦—™•¦¨––¯Š¢—™™’¢—™‘¦˜—š›˜‘¢–——›– ›‘˜œzš˜¦“”Ÿ—ˆƒ”–£–•š¬˜”š«‘™™™—™‚„œ†˜™’˜–¢˜•™™”~Žš›•£—¡ˆ”š—™‘•œ›š —Ž™™˜—ž››Ÿ—£˜”—“ƒ™š›–œžµ™™ƒ™š“ŸŸ›œƒš—›}™––Ž™”¦›–Ÿ™¡¨Ÿ––™œ©™’———¢›¯—››‘Ž›–š˜™’ššš”š˜›™—˜”™œ¤Ÿ˜‰’ ¢‰™–›š‘›¢›““ƒgˆ’›—š›˜›£“›™’›”¢—› “š£œš¥¦ŸŸ{¨®µ›”™™•…››}¤™”•–Œžœžš¦›Ž›—’ª™¥– ”œ•–”ƒ£¨šž”œ˜–¡Ž ’‘„•‘˜™¦™y›’–—°””£ šž™É–ž“’™˜—’™žšž–œ¡‹‘“œ˜˜”—¢‘•£“˜Žž˜šœ’¡‡———†›š•–•«™”œ˜–¡ƒ— œ™–§–„†¢˜¢š•¥™›Ÿ˜Ž–‰ž–˜–•’”›–«Œ˜›–—˜“™˜—˜œ—’¢—“‹¦‘—˜—¦™˜–•‰–™˜~™£¥•œ–’—“•Ž“˜‹£¢•œ©œ¯™’ˆŸ™™’•¡››˜Š˜—žœ˜‘™”„¥ž‘ššš”–™¸”š˜–”™”—›¢‡˜ˆ™™—›Ž—–˜™”—–©˜¡‚—‹•®˜¯—˜™†“›¦™œ™”™Ÿ±’¢©›’ª–”š–˜•——£›”–”›¤”¡’™ž¡•¢—‘¢š“¥š‡–Ÿ–™Œ’š–¢Ž›”Ÿž¡•£˜‘™•“˜ ©˜†”—•¢–›––Ч•˜˜£›•›››œ¨••š˜“‘š—Ÿž›Ÿœ•˜”š•”©˜›–•šŸ”›’Žš––š –—‰š“–zŠ”‚˜œ“”‘›”šž›•—‘°Œ“Ÿ‘œœ•¨žšŒ››Ž—¥—•·–•„—–lœ–—™… ‹™”‘––˜š°›—••µ˜””¦‚— š—­•Š”””Ž•š£¬ˆŽ˜ž¢—¦“—™•¬‘™‰™š•”š›…Ÿ—‹––ª‹––—››œ™™’v˜–›š•ä—–šœ™ž™™¥›•“ž‘˜Šž—‘™¥˜Ÿ«¡˜œ¯˜‘£¡›„™”™’“—˜˜‘„—œ–Ÿ”•œ’›§–šŒ™™•—™—™‹”𕢓”™˜›§’••–Ž‹–§•™‹––£”˜˜”œ–žš”Ÿ‘›ª˜“”˜‘“š–˜…•–†™œž•“–š˜‹šŒ•”Ÿ˜”Žž””Ÿš›› ‘›–“ž“—“–ªŽ™‘ˆ——’“™˜’™”¥•Šœ ”£Œ—–‚•—’žŠ™–•™˜˜‹–¤˜œ–‘š›šœ—¡‡™œ  •–™š•—›–‘”•™‹‘š—‰œž’›‘š–‘—™”—”ª‘›ž•™–†›š –™—¡™–“”‘Œ´ƒ”‘‘‘—~Š’£–™–•˜œ“Ž…Ÿ›•”’—‘œ“™’˜—‡‘ ™‘—™˜Œšž™™Ÿ¤˜¢–—–¡—™™š–œ‘—¹¡’œ•‘ššš›š–˜œ’š”–˜—“ž£¢•˜–›˜™•œ”Œ›Ÿ˜›••››—™–£™’›¥•›œ¦“¦——˜”œš›—”•«—” š“•–˜—‘¢œš——œ¡– –•™›Œ‘“Ÿ”™œ¡¨ž›”š˜žŽ““™˜‘œˆ–š–˜›˜™ ‘˜›’­–“’Ž˜šœ–¢¢˜™œ˜š‹””–—š”———˜˜–™•¢˜•˜€ª™•—›’™š—˜•ŸŸ–˜œ˜œ’˜’ š–¨˜Ÿ–Œ¹¥•Ž™™˜———Ÿ”†—’–Ÿššœ¢™“”ž•—˜–—§š™™˜¡•—–˜—˜—™ž’››˜”ž– Œ’‘†š˜– œ”ŠšŸ™——•Ÿ˜—›•šŒššžš˜•–›† ž”¢›–’ž™˜Ž—˜œ“™¡›˜•‰¦’›š¢˜™š™š ›z›”›™š—•ž¤–™ˆ•“”š™x˜”˜—™™~‘†˜—˜±˜’¶“¢™™‰™˜——šœ›ˆ¢§¢–•¦©Ž‘˜’—˜’’œž—–Š›šŸ–¤Ÿš –—“›‘Œ–œ“œ‘–šˆ©Ÿ™œ–—‹¤”ž™†˜‚“˜‘¡•š„ˆ— ’““˜œŸœ‘›˜›—›š’ ”¥›–Ÿš™›œ–œž—ˆ–— «˜Š–•Ÿ™•‹——Ž•§š¢”¦—–™¦“¢Šw•¤Ÿ–œ˜–”–šœœ—‹ž–§–ŒšŠ¦–™›––¡š›•’š˜šŸ™Ž˜œ•›šš–™žœœ¥“Ÿ•Œ•• ” ¡š£š˜¤”š›œ—œ§–˜˜™œšš—˜’”™œ’£–—™®ˆœ•𛕗•”ª™–žŸ¡Œ——”Ÿšš’–…•˜xš–œ¬ ˜™—˜’Œ žŸ˜“Ž£žš ˜ž•–žž~˜˜™š–’œ”–“ª”¡–š•˜–• ™‹”›™–”•™•”Š™›ž•‘›‘˜”–––™šŽ“•——˜›‡˜•œ•š‰–žŸ’––‡›–—˜Š›œŒ••˜ —’£“”œ¡›š¤˜™™˜™”˜‘‘—˜ˆ—¤•—•›——šœ“–œ–—”“ š™•Ÿ™”›žž’œ“˜˜“œ–“‘šœ——“‰—¤™—™‘“––œ”—Ž¢•—˜—•–™˜œ™›‰•œ‘ž›¤“˜¡š–œ˜’“‘– ”•¦š©“œ™™‹˜•”››‰šœ“›Ÿ”‘—˜›•˜——–œ”𛑤ޑ˜™“£š–Ÿ‰ª˜£™˜˜¥¬”™–˜¡›–—˜˜”™™ª˜›˜Ÿ•›•£Žœ±Œš’”š—”˜š—vœ˜Œ¯š—•¬­™—™—š›˜›—™š™™˜˜†’Ÿ”˜™•˜™¥™žŒ˜–ˆ”—©—‰Žš±—•˜˜’š–Œ¡¡‘˜™•©˜‚’—¡—˜•—˜‚™š‘•œ¨˜—›‹–²ÁŠ›¡›™ ™ž–˜–¢›ž—˜šˆ™›­±š§–†˜˜•˜–•™œ~ž“Ÿ—•„™š²ˆˆ˜•™–xš“˜š™‡š¥œ—•–˜˜˜•–™˜±“˜›—™™”¡ –—„™µ¨™Ÿ…‘—˜‰Ÿ–˜™˜˜¢›œ–š™•ž‹šœœ”–˜˜˜”›”¼——•ŒŸšœ˜‹©€‘w˜‘Š——Žš‚–––š—–ƒ…œž‘ª²”›¨‘˜“š™Ž’”—˜‘›˜˜œ—w˜Ÿšš›˜–”‘ª˜›˜“ŽŸ ¢ªŽ˜†˜’š·™–•„ ¥Œ‹“–¾™œšœ’—Ž•–y²˜“¢•˜™š™ª’–‘ºª‹s›¢™œ–˜•‡‰™—˜—Ÿ˜°˜’˜µ˜›—”˜¦•©—˜™–—¢©“œ›¤”–‹‰®˜” ‰’š”…˜ˆ‹™—”±—œ–˜£¥œœ˜––—ž·™—š•„x™šš™–¢–ª²™˜™Œ´•˜¡”›—š…Ž”–œ•˜”𤑙™’Ÿ–—Ž˜š¤™—™–—Ž—œ•˜—’˜žœ„¢”šœ™˜—’”• žš˜ŽŽ”—™š’“›Šš˜›–—›˜šœœ˜›™—£±š™•™›‘”•ƒ—’•–¤ª•˜•‰›™•Ÿš—ˆ—£š™³Š’›¡ž—™™”‘•Ž‘–Ÿš”•‘—™“œ–˜˜žš˜’§”œœ¥™™œ¦›¨™–™˜š——–s¡«ž“¡š––¡™™™˜‰–”˜ ³Œ§š™~œ›ƒš¢—š› ™§˜–¬˜——‘†›²“œ™˜ƒ™—•›•—œ šœ•–œž—šœ¢›‹™œš¢Ššš”š“•“¦ ”²»—™—¡zœ•–“™Ž˜™•—œ˜š–™qs—†›¦¦{£ž–ž—˜—£œ”—¨––Ÿšœ¢— £›±˜—š…™™œ–ž˜––’’›˜›š‹—¡˜–š˜™™–£š¬—¦ž•š«}˜®˜”––¨™—…››Œ ”›†•}˜©“£—›—™–Ž•—§˜˜˜š˜©Œšrnª’©™˜š•𗑉— ™––®“vŸ˜›«–¢˜¡™¢˜ž²ˆ ˜•‹›ª„œ¡–š˜š¡—’–™•—˜®ƒ–—•™‚´—¦˜˜’•—šœš—•–˜—ª˜™—š”µ˜Ž–š™Œž½’˜–š˜•™¤—¢™š›‹œ™€™™˜ŸœŒ—³“‘ŸŸ”ž•šÕ˜‡™šœž–“¡””ž“ •™ž‘™™¢š—¡œ“š ™›“–˜˜™•—•·Ÿ’£š™Ÿ˜š’ž™œœ¢—‹™“ž”Œ{•š’›šš–›¬Ÿ–—’—–›—””˜š•š–­™¢š’— ž™”‘› ›š¢› ™– ›ž…˜–›§š”———¤Ž˜œ“˜Ÿ•¡‰›š›–ˆ—š˜˜Ž”œ˜œ”𥕔¤˜œ¥†“‰˜š”–¥¡–œš™›—“Žž˜™ŽŒ›˜‘™˜”ž¥›’¡œ–™–›Žšš›œ—”•™¡–œ¡œ‘™“•–‚˜—š¦š£™•˜¢ž”•œŒ•˜•²œ–—›¤•›œ˜™¨ˆ™’–ž—–›•™–¥˜™“—‘{¡”™Ž›±™•{™˜–›žœš›™–——›šŒ”š™–•‰˜•—š“›–«Œš˜š‘˜•„™–˜˜–ˆ‘—‰“µ“‚—“±˜—’¤¨š‘ ™‚–›–“›—€’®µ¦¨ž“——”‡™˜˜­˜”𙕕™•¤¡œ˜ š™™—•š˜ªŽ›¢Âƒ­©–—“ ¤••”ž˜—‚ š‹™˜š• ”¡£—™†˜œ™“š˜Ÿ§’™•ަ”—’†‘˜™›•œ•—•–š—–œ’§”𔕔ޔ˜˜›©›› ˆª¡š‰”š™—˜–——– ™œ¢˜—”žœ›¡”œš——’‘™‹—‚–˜—¡’’‡•ž•ž”€—Œ—­“•§•Ž—œ—“›”‘Ÿœ”¡›‘––¡š¢›˜›‘’š™˜“”Ž–™–œ•™™•š‘”™ž—¥’›£›¡—Ž¢™—›’ ™šž˜™–Ÿš‹‘•—–›•¢››—˜š¡“™šž˜›œ¶‘’›’•”™˜”˜™Ž˜–™žž•š˜”—”š™ž”˜˜ª•”¢›––Ÿ•£›™’”–£˜žŒ–𦣙›š”˜–—˜•››—œŸ”œ–•™‘””•–”‰–’š›”’Ÿ•š–š””™š“•š˜’™ ›•šš˜•˜–‰Ÿ—‘š‘˜¡” ™—™š˜——›ž£˜™–™£–”œ›™ž¦™Ÿ–•œ™›žž˜™—š˜Ÿ—˜˜Œ œ•›˜–—ž“–˜Ÿ˜›“Ÿš† •˜™—›‘˜š›”šŠŸŸ“›”˜¤›š˜Ÿ˜›—™š™™¨˜›žš›‹——–šŠ˜“—™––™—šž£—š›–˜¨–•’¤œš™“š–œ˜“˜¡ž›™™™¡˜™•¨—„™™”•—‹–”™›–˜—Ž˜””˜™Š›œ”›”——›–œ—”š—’˜—¢™¤¡–’œ˜‘“ž‘š—“™˜š–š•œ‹—£•˜š–¡•™•˜˜’šš˜˜š›—˜š¡—•—˜—–˜™–‚¢˜—˜•›˜Ž——”˜–ž˜žŸ—š–›žŒ—Œ™ž––™˜˜«—›–›š–•™¤›—›—•ž–¢ ™ž¡˜˜ŸŽžšš¥š•¤˜˜–’™¥š™˜z™™˜œ™šŠ““•™—–—•–˜š–—˜›—‘“˜„˜Œ–“š•™™˜•š¢˜”–™–˜ž¬„—“š™”–š™¡˜˜›£—š›˜«™”„™•„”–™™Ž›—˜™šš•™Ÿ˜—ž¥Ÿ—•˜—‘–————–•š“–’¤’•Ž’˜Œ~™¥œ›œš–’–˜———˜–•˜›™ššŸ”›™“š“˜˜•™™ž‰œ“Ÿ›™›™š•™—“˜¡œš˜˜”• ˜¡š—“™’”™›˜’š—™–©šŸ™™‘šŒ‘™—”–‹ ™—˜™˜˜˜˜˜–—•œš¤œ˜˜“œ˜“˜“¡•”›—˜™˜šš–˜ —˜™—š——››››™œ•š–ª•š•š—•š—›žš’™œšš—œ–˜Ž˜”§šœ–˜•™™—œœ•š”—‹™‘™˜™“Ÿ™—˜š™˜–••š”›—•™•˜˜—–š›˜‘›š™ž˜œ”šš£” “š…¤œ—––ˆ—”™›˜“ž˜•”™šž’‘–“›šš–Ж𡓍’ –™š›š–Ÿ—–Œ’š™œœ™Ž›ž—–‘£˜›‘“Š™“—™™™™˜•–¢™‘—›•šžšš”———–Ÿ—˜••–|—š–™––™‘¤’—”™ž—›ŽŽ™™¤™“’˜—’ ž“–›”—œš£Ÿœ’ª’•˜–’š’™ž–——™“¦˜šœ–˜¤”—‡‹šŒš¦—œš—š—œ˜—‘™–˜˜˜ž‘ޕ𖤔’”Ÿ™•›˜Ž¨˜—¦–¢ –—œš™¬›™–š™——¤„œ–—˜‘–—š›’—›œž’—šž˜›“———›˜œ˜–’“—«™ž›˜˜œŸ”˜Ÿ˜œ–˜’——›Œ™™š’£ŽŸ›–¡š™›œ•š›§˜›œ”¢—›——Žž¡šžŸ˜˜˜™˜šš—•˜˜“˜¡’™”–˜›‡––—››˜›”Œš˜™š›˜˜™–±™Ÿ˜—˜•šš‘¤™š™˜’–Œš›¯‹™›˜˜˜ž•¡™•‹‘˜Ÿ–•˜™¬•—•‡˜˜›šˆ¥™™ •š’—š©•š‹™’’’œ–˜–•˜—š™y–›™›–”Ÿ’¡œ˜£˜™˜š—˜˜Ž–˜›z¢¡¤˜™’–”¬ –—œ™™™“¡—•—Š›™™–˜“—™ ¨šž———›’‹››–•ª——˜Ÿ™”…–ˆ™ ¨—™˜™››˜œ€˜››“ œ˜£š›‘—––š—žœ–š™Ÿ˜–”™•”“••—šžŽ˜š£›–˜“”™ŸŽ”¡›””‘•š”˜ž™ž•œž—˜•”—››—““•š™šœ™£•–“˜—””‘‘•œš›š˜›•š˜—™‹‹’˜“”–’šœšž˜—•‘™œ™–˜˜—“ œ˜šš—Š™™“™›•“š”œš•Ÿ™’‘”˜–•Ž›žŸš‘œ•—š’–••–—–œ”š——–ž™–‘•˜•šœ˜–˜‘”𣖙Ÿš˜žŸ–˜•ž–¦•’ –Œ›”–””–šŸ””•𔓖•››—•‘”’›–š”œ™™˜˜”˜—š“”˜–œ™Š‘—–“™—›‘›–––—›˜˜–“ž—™Ž••˜‘—”œŽ”—‹““œ—‘—˜š›’š›–——‘•”•“—™š’•Ÿ––•˜”›•Š’˜‘’“–š™œœœ–š›–£––’—š”›˜˜•—˜––˜š“”˜”ž“”œœœ˜œš”•œ•˜•“‘œ€›œœ—š”›ž—•–”–™’•”•—Ž¡˜‘’“œ–˜•”–¡š–•š˜š˜™˜“–•Œ—¥–—ž—™•Œ”¡‘›››™–”“œŸ•’——••–œ–‘“–™˜šž•™ž”’Ÿ–™˜“œœ”•–” œ›—–¡¥‘‚—˜”’”™–š˜–œ™”—¢š•™œšŠœ’œ“™ž˜ ­‘ ž˜˜˜™™˜˜’›‰—•˜“˜— ‡•š¦˜¢›Œ›––•›œ—™—˜˜™˜–›”— ™™––™™˜™˜˜‘š—šœ“™‚˜—œ˜–’Ÿ––—š†™—–Ÿ––š—–’–›˜“•™ ‹˜–¡˜–”–žž—˜¢¦™”‘œ—𗙢—š–‘š–™•–‹Ÿ£¡šœ–žœ™›š˜‘Ÿ”›†ž˜Ž—•œ˜—¤™–¬œ›–• –˜ˆ¤•™šš™œžš˜š˜Ž§˜Ÿ˜˜˜š•¥›˜š—Ÿ–š›˜˜”𛓗ޙ–‡˜•–™“˜˜˜™“›ššŸ—“˜’š‘—–™““”——œ›šžœš–™’›•™“•™•—›¢™—–•˜–‘š•œ˜™’˜–œŒ•––—‘”š™¡˜–—•š’™—–™›• –˜–˜˜‘•”––…¡—Ÿ™’•’˜š–ž——•™¡—š™”‘š–—‘“𛑛›£š–•˜š—š™š”™Ž“•“”™“—™œ—•˜™‘™”˜š˜™“““˜—š ˆ™–”œ“——–˜—ž™”—¡š—–™‰˜‘›——™–˜™–”–—›˜›Ž”–œ’œš’•£š—™› š˜—¥šš ›Ÿ——’•š›˜”¯•›“••›œ—’“–«”›“›™š”“‘˜•˜–”˜”š˜‘œ¦–™™‹—––”™”¤–—š›Ÿ’—œ˜›—žž˜“™——š £››—‘˜”—›™ — •””­˜—‘˜›‘˜¤££Ÿ™œ–—Ÿ•œšœ“—”—˜”ž›–—˜”—˜–“Ÿ‹™‘¡š–¡˜œ••”˜œ•–œ’“š œ•—‘•—š˜’–––•œ˜•“Œ—•˜š˜›—¡™•›˜”›“™“”š”ˆš‘‹™‡˜˜š™–˜§ –›˜œ–˜Ÿ”š™”•œ‘ž•™œ“˜œ›œ—¢°•’Ÿ™˜’šˆœšŸœœ˜¥–‘‹“š˜œŸ›šž–¥ŸŸ“–š– –—¡›™£–™˜““˜›™š˜Œš‘–œ˜™›¡š–š—œ˜•—‹›”™–…˜–•–”›  ™›•™™¡™’˜š¢™––š£ž™—“›™’š–™•–²›–‘“›˜“”Ÿ›”›˜–Ÿ—˜˜˜™Ž“›™—˜¤–ž—Ÿ•”Ÿ“™’™˜˜”˜–˜˜˜––š–˜Ÿ’—š”•š˜–Œ’–Ž› Ÿ™™”“–œ–˜™›š§š—š•ž‘”—–›”™¢›˜žŒŸš•—Ÿ˜”š˜˜‹˜Š¦‘•–’‰››Ÿ”’š–š–‘™œ•¦šž”—œ–™”¡šŽ˜ ¡™˜£œ˜˜•”–”˜ ™˜˜”š”š”’“™žœ“ ¦™šœ—£——š™—Ÿ—‹˜›œš¦œšœ”›œ˜™—––——˜˜—•˜Ÿš™—˜š¢‘’™—š›”™ž›–“™“™ž—”›‘–š¡—›–n˜›š´š—–’¦ššš•›•–—›–Ÿ”˜˜ƒ•››˜™“ˆš–ž•‘˜“–—›”‹–™¢š›™——œ‹ž˜œ¢—•œ”˜™˜˜˜ž™š–›…–•›š™˜„—™—š“›—™žŸ———Š—š¤˜šœ—•™“•™˜—•™“œ›™žž—“žœ™‰«—“˜™š™˜“˜™¤™•——Ÿ±—“ œ—™š”šœ™™™ž“’—˜Žœš˜œ”œ‘ž™–—””£–˜…”‡—˜™–™•™““™—• —Œ—𗤛–˜˜›š•™•™”¢››–ž–œ—™–¢•™˜—”—™—¢——š‹˜˜‘š’—™—›šž–Ÿš–£‘Œ”œ–™Ž˜’™š—›˜œ—™”˜›˜™š—•˜ž˜“–Ÿš™”š——˜˜–’—”™——–›—’““Œ•—œ˜•™¢–𔢓˜œ ––Ž——’˜“’Œ¦––¢”•˜šŠ™–˜Ž–¢‹˜®™–—š–“š’˜˜–š •”—˜”–—˜“‘˜˜š™­™˜‘•—§‘›˜–œœ‘–˜˜•‘– Œ–”™ž•˜“œ•—›š“˜•—— š–Ÿš–—¤˜–˜”™—š›”—˜›™™“ª‘˜›—•¢™ª››––—•”œ•˜–•˜”˜œžˆ››—–•–Ž”–˜˜›Ÿœ†{Ÿ˜˜š ¡•–ž›“£ŸŽ›•—¤–—š¦•¥š™Ÿ¤˜šŸ––—–‘˜”š±”Ÿš™™˜•—œ’•›™––™—”›ž˜”™•™—–˜—¨š•œ—™™š’†™˜•–˜œž™—Œ˜‘š½Žš›™ž™—”™†™”˜¤£˜•–š˜”˜—™˜…𙓙–š”š•˜›™¤…“›™˜š—ž¤˜Ÿ¥•˜—›£Œž–™–‘™›–•˜˜š™–™ž¥”›˜œ”Ÿ–‰ž•˜ž–——––˜œ•œ›¤–‰—›¤ž¥’’——›š–•˜œ˜œ•›—™–•—œ —œ”š•¡“™‹˜˜˜’˜š”‘—•›˜•›˜—¤“ššœ˜–›—¤šŸ—™—–’š••—–”Ÿ“–œž”•—˜˜•š™›“™—–š‘—˜˜Ÿ—™”–œ”•–™˜¤˜–—™˜‘›”—™•“ž”“›Œ –˜•™“žž–›š—••›£“”–‘–•›•‘œ—Ÿ˜™˜šš—•—˜“›Ÿž•šžš•‰–Ÿ–ž—˜  š¡™•š“œ™ž™—œ–šŒ—•Ž——‘›š•”™•›˜‘˜˜š§š™˜—Ÿ”›•”™–™š™–—˜­—žŸš›™––™“˜—š˜–ž—™œ—šš‘™’•›—”šœ˜•–“žš¢””œ™š™•››š–—“”Ž˜œž˜–šš˜˜™”™—ž•–˜–˜˜˜—™™˜šœ¤•”£”™š›—œ—œ™˜œœ“”“™š•šœ”–˜–™ššŽ–œ›™‘––•›œ•–”˜™š””™œ•‘˜˜˜š•¡•˜—ž–—¡˜˜ŠŸ–——–˜™••— –˜•š —œœ˜ž›’©š—–™”›”‘—™›“—˜šš™™œ›œ–˜™œ›˜–›š ™——˜š–˜š˜™˜•—œ™¥–“‘™šš”–“•–˜›Œ‘•š™–—ž–—‘™›‘”—’˜˜œ•œš™šž•˜ š™š“”šš›—š¥Œ”™—–˜—–ššœ•••˜›™˜˜“‘––™™—˜”˜”‘Ÿ––™”œœ˜—™˜“››–š••™˜›•žŸ––œ—• ™›——”’š¡˜”˜ž–˜“–œ›“˜™——•—œ›™•——›šœ–˜—›š™›—™”™ž•™š›“˜’œ —–™–—š•—•“•˜˜œ™š››’™™¯•’–’“”™–™˜£”–ž”™›’˜—˜•›™–‹™š›–—•˜’•š“’’š——™˜š™ ›—˜œ••™—›˜“™˜šš———–•™––—˜š•——˜Ÿ•™”›œ—“™—’˜˜”˜™£š›•ž“–˜™–™•¡˜—–žœ“™˜™—Ÿ—•”–——™Œ˜š{–œ£˜’–•–œ¦œš”˜›™œšœ•—›˜˜–Ÿ’›™›–­—›–Ÿš”˜˜šš˜š¡”“£›—–}˜›‘£—š¢š–™–‡–™š˜˜ˆ™Ž˜˜›œy–š™˜”™š ˜—™––Œ•˜œž™›Ž”Œ•¢˜™›——™£ŽŸ›‘§œ˜””˜“–šŸ››š—›˜’›˜š›“•˜œ—–• ›‘™–˜¡•–˜œ™•™š™‰”˜‘—›Š”™™˜›˜™Ÿ™—˜–šš˜—¦¡š˜—”™‘›ž•™“—œ›‹˜–¤—š˜™›—–™œ‡——››…˜–š—Ÿ–˜Ÿ˜ˆ‘˜–””–—™­˜ ¢¦¦šœ˜˜— ˜˜›‘ ˜•™™‡œ‘•š—›–˜—›™•œ”¡™”“›œ–œš›—œšŠ˜™•¦–™‘Ÿš“™š˜–¡—“‘›š €•˜˜›™™›™˜—™˜Ž˜š˜ šš›™¦˜š‹š‰›˜—¡——˜˜‘Š’œ•””–›œ˜–”•—˜˜š“˜›”š’˜£”––˜•˜™˜œ›—›¤˜˜–šž˜›——§“–”£šš™››”—˜™›—ˆ˜“—‘—•š—™—–Ÿ–—™¦–›™‘—˜”–—š˜¤“™Œš“¢™˜–™š•—œ—ž›—©”›œ–ž’– ‹˜˜—•‘ƒ™–Ž–ˆŠ”¢™˜–™˜—™‹š™š——‰š””’ –˜¢—™™¦š›Ž¡”™£•ާ—™˜­™“–—–— “–—š–˜•š™œŽŸš¡™–•‡š–•–›—–©š•œŽŸ§–’œ‘ª˜ŽŒ—•–’šœ— œš—™—•™£–˜––£¢•žŸ–—“–‹¡’ž—››‘”ˆš˜—žš–™š™Ÿž˜›–™”¤˜Ÿ“™žˆ•˜—š™›‹––‘––Ÿ—™”—“™˜•Ž”ƒ –˜š‘„—š”š˜™•Ÿ‰•‘’¤š™“™›•—ƒ•˜––™•š››–”š™œž™‘™— ¦™”“™ž”š“™’–š£™ž’š™ž›”œ˜––Ÿ•ž¢™•¡’’˜™œ˜––£™——›—˜£¡›¡•œ™™“œ˜›“—š’”Œ–—˜•’‰–£œ’•—›š›˜œ• ”’’’”›˜ž•›˜›— —• —•š—•””•œ—š’œ””‘”› ‰”—–‘™’š›™’”£•¨˜—›”œš“”–œš–¢š’žžž™–’†Š–ž˜“–˜—™Ÿ—ˆ›š—‘“—™“•™ •¬˜””›™š•˜’™¢š›™—‘œ–˜šŒš‘•š›–™™™¤ž¡§—“–™šœš–—¡Ÿš›• –š†”™—””‘•›•›———˜• ˜”•Œ™˜œ””—››š•——š—••“™š•™šœ™¦š——–™–——––˜™—š˜••—›‰™œ¥˜™¢›˜™Ÿ¦›“—••–¡Ÿ ™Ÿš‘¯›¡•–”•–˜ž ˜š‘–——›Ÿ˜Ÿ™š”ž™‡——œ–ƒœ”›™ –‘¤–š———•—š–¢—‘š“–ŒŸš˜™—™‹–™™˜™› œ“Ÿ•“Ÿ•–›Ÿ‹¢‘˜™––’” ˜š™œ™š˜–™žœ™™“œ••“œš•–£Ÿ¡•—¡› “š–£šžŸ——™˜–™š•’šœ——‘‹™–•œš˜–›™›——›“–™•’”–š›š˜•”˜–›”’›•˜š›š–“š—˜“™—ž ˜Š““š¡˜˜™›Ž Ÿš—¢“›“˜–š–’›–˜œ–™™™–“¢ ›™˜›“Ÿœ™˜˜š‘‘–›•š“–œ–‹”œ›ž•™˜¡˜–›—Œ–—†“˜š˜›• —›ž˜™˜šš—›–œ’—˜žš˜ œš¡—§™”›‘—™š•—˜œ‘›™›š––Ÿ•›—š“’š—™’˜“™˜š™™™›œ ‘™•˜”˜”——“‘™‘––”™˜¨“—Ÿ™—˜“”žš”˜›™š–˜–“˜–ž’™Ž•›˜ ™›•—™˜˜—™•ª•š˜˜”˜–šŒ¬ž˜—š–•Œ•š“œ—–”˜™”˜¢™žŸ–›•Œ‘‹—‡š–‘™³™‡ ”˜¡Œ–›› ™›¨–œž’—““¡–—š›š˜¦šš—–— ˜›‘š¢š‘¦œ” •Ÿ˜ššš™šœ…›“›Ÿ—˜šž‘š‘˜—–Ÿ˜˜¢˜—•Ÿ—›–•”™™™–£ †ž‘𔕙“™—˜• ˜‘‰•–ž•—{——˜£š•˜š•œ˜š–š›™˜˜™¢›™˜–™™—¨¡˜” ——§œœ••ž˜˜Ž—œš¢˜œ—˜œ˜™œ•“–š˜”’™œ¡–˜–˜“™™˜ˆ˜˜˜–•Ÿž™Žª¡”š””—••˜—™˜‹š–˜˜—’“ž•Œ™Šš£›˜ —ž—–œ—«Ž›šž—𗆑¤—œ“––—¥ž•–™›–ž—‡™——•žŒš’™™˜˜—Ž›•™Ž˜—šœš›˜†’˜šš–—™—¤™›˜˜—™’ž™™™“’š—˜š›™–š•œ•–ž•™˜Š••‘™¨•š˜—•˜—”›—“—–œ——•—¦š›•“•”—™••š˜£—˜™žš——˜š“Ÿœ–š›—œ•†•˜œš•‹•˜¡–—š—™šž˜šž”®— ’”—”Šš –‘„–—–——™ ™ššš”“™¥ š–”Š’œš ™™˜——“Ÿ–•™˜š‘™£¡ª™—’•›”Ž˜”œ˜™›˜š¤‘•¡–›œ›šžŽ™œ–”›˜™ š™“˜‘—•™œ ™”–”ž˜˜šœ—–¢¨™™™–’˜ž›ž—£˜¤›•—˜–“–›š—˜˜£”—’“šš•™”ž“”˜“š™”›œ›’›•–—šœ–š”•¡š™š‘ –™œ’žž™“¢—𙥔•žŸ–™—–š” ™—”˜Ÿ“•–š—•›¡™™™”¨––•œ›š˜‘“—Žžš—–š“”™ •™ˆš‡œ™œœœž”𗉙›•–––œ’¤”•‘™ž•š™™–”——™œ”˜”œ˜–š™–Ÿœ —–—›š”™•”šŸ –—›—š–•˜Ÿ›——“œ—™™Ž˜˜—Ž™•š–š’›žˆ–Š›—¤˜—ž‘ž•“›–––™—™—•—˜š–•™“–“˜Ÿ¤—žšš™™žš ™š›˜—§“——’”œ–¡•©–š››™˜š’™˜š››š–’—˜š™“˜˜Ž‘”˜™—™˜›™˜“›œ™œšœ—£™£•¤†›™–œ”™–˜˜™—›˜ž—”œ—Ž—š“˜•š–œ¤œ›š™š¤—™˜•—œ–›œ”–›žš–•˜”š—šœœ“˜›š—œ–™—˜™›–”š˜£—˜™˜•”™—™š™œ›Žš’™¥—–•““š™›š™”›™–›•–•™šˆš“›ˆ™ž¡š›™«˜—™œ“ Ž˜›’—•—›œ–Ÿ¢š¡›——œ™™——–‘ˆ¡— ˜™‘’›™–™¨—”Ÿœ–š˜¡”˜š™˜Ÿ˜”Ÿ—›”™œžšœ¡š˜‹““ž˜‘š™¢šœ—‘—–––ކ’Ÿ˜–”™“”™˜™™——†œ˜˜˜™™—™•˜“’š˜”˜˜–”–—˜‘ˆ¡˜Œš ˜™œ˜’—¢–˜–œ†”‘•Ÿ˜™¥›š—”˜—¢˜—‹–œ˜™›˜˜œŽ˜”–œššŸž”˜”—–ššœ–™˜™–š•™™”‘œ–›š•—ž˜“•”••—–©‡™“——ˆ—œ–’™—šž•˜Œ”—ž˜—•— ”¡™–—œ•Œ•™™œ–›—›™—™•“–š–™˜™©¡˜™™•‘”™Ÿšš——š’’šœ••——›Ÿž›“˜—Ž¢–¤˜™˜¦—–•˜™–˜Š™ –’—••™•Ÿ›”œ˜¨ž‘––—Ÿ•“˜•š›——”“˜™’’›™ž˜£•—’™“˜Ÿ‘–”—’Ÿ’œ‘š˜™•›œ—š–‘”¤žœž“‡¥˜‘“›—™‘–šŒŸ—“–’———“–—‘˜’“˜™š—‘˜•™š“ž˜˜žš––Ÿ™“˜’˜“˜‘—”—–›•‘–™–›¤–”˜Ÿ•™••”’˜“•™‘›”••™—›–¡–—•›œ‘”–œ”¢˜”š‘•“œœ›–š“™ª™›˜˜˜œ“™›œœš•—”š˜™–œ—“—–””¡”‘j¡—t“Žš’ ”œ™Ž¨ŒŠ”˜š“™š™Ÿ¢Ÿž˜˜””—–‘Ž˜˜™™ˆž—›™™Ÿ~šŒ˜•™ž–•– ¤–˜˜–”©œ–ŒŽ¤¨¤“šš—ž¢‘˜’— ›’Ÿ™˜’š–™™”›“™š•–™—˜ž¤•¢š•œ—”“•‘–™…˜šš ••Ÿ¢œžš™”—›˜t•™ž–¡——˜”›”ž‘¦˜š¡”›š››¤™’“¡ •Ž™œ™š••Ÿœ˜‘˜–•¡šœ˜“™““¢“—˜˜’–—‹™›–˜••–¢˜™”›—™•“œ•œ™”™˜˜•Ž˜Š—“—”——™•™˜–——š™š˜–˜˜˜–›˜–˜•™˜—–˜“˜˜–š•š–—–˜šš—˜™š–˜—™—š—–š—›˜——–˜™š—˜–”—–•™—–•˜˜œ–•——–—˜˜—˜™”š—˜——›—š•—›—–—˜˜‘˜•–——–˜˜›—˜—˜™–—™˜š˜š›–˜—šš˜—•˜—™——•–—–œ•š˜˜š™™™˜––™—™——’˜˜•˜•™™™—™˜—›——š™™–—–š™—™˜˜œ•œ–”˜˜™˜˜••–—™———š˜™˜–”–š˜›————˜—˜––¥——˜˜—˜˜•––Ÿ™š™—–›——™š”—˜—˜–›šŒ—–™™Š’›Ÿ¨™–‘š™š˜•™”™š˜”˜šŸ —••š™œžœ‘’œ˜•˜›’˜‘——‘¡”™™—˜„Ÿšœ•˜™˜’—”˜––”–”š—šŠ—•˜š–—˜—™¢—œ•¡ž“ž˜›ž›––”Ÿš¤Ÿš —›™›˜˜”™¡––——œ—’‘–—ž–›˜›˜”›—˜‘›šž—˜š™›˜•“™›˜›Ž¢”›™——œ£˜£šŒ—•Ž“—˜“™™ž—˜˜žœ“–¢˜š“–”š˜–˜”•–›šš”˜š—š‘“š˜–œš˜™›¢’‹™™–””–š“¢¢œŸŸ›Žœ”Ÿš˜™“š•””•—œ›“›’••¦›Š˜™Šš˜”˜š¦–•—˜šš˜˜›“š¤š’–›™“–›š–¢ž‘˜Ÿ˜œ—”¯“—“”œœ¢™‘ž–•¥–Ÿ–”ž—§˜š—•˜ž—˜›”™•¡˜”œ—œ–š—™œ°•’¡•’›‘œ›š—˜˜¤˜“˜˜•˜‘•š˜™‘š’š ”œ—«—“œ’œ•˜¥  œ¥ž•—š™œ——–˜ž–£—Œ™–š—•™¢”–¤”–™—›–Ÿ¢› ‘›’”– ›¡œ—–’—›ššžšˆ”Ÿ–šžžœ¨——«•›•™••›—›˜•ž™’—¨œ—˜——””—•‘™—š˜˜˜š™—˜”–›‹™™ šš—£˜œ›—š›•œ™™¤Ÿ—œ—”•—›–•ž˜œ—‘•”“™££–žš›–•— ˜œ˜–—‘”—›¢”™šš—–š¢˜“Žš˜ Ÿ›ž•—˜“—™–”Ž˜•š˜©›šš–˜š–©–“‘›š˜—›ŸššŽ™š“–•––“¥œ—¦š”˜—œ„™—‘‘ššœ˜–”Ÿœ ˜ ˜—š–™Ÿœ¡›™—™Ž„¡¡”˜™™—¥››”ž—š™’ž˜”˜•”ŽŸ¡œ ”˜žŽ——™”™š•”˜–Œ—Ÿ—š•ž—œ••– š“–”–œŽœš™šœšŸ¥œœš’˜œ¢˜ž––—›•›”˜Ÿ˜˜ž•˜š—Ž™š–š“œœšžš”Ÿœ—£›–›¢¦•›—ž‘† ž˜†™™ž—“š¥™š–œ•“‘”—Ÿ•—ƒœ³’˜˜’˜–œ•“¡•—†˜šš›•’˜”Œ˜“•–™”š˜•›™‘¥˜œ¢™ž•˜’™“•šŠ“—¢¢œ›ž•™˜œ ’š›™•¡•Œ’¤™—™”™šŒ‘˜¡š’š•™§—£ž˜˜œŽš˜˜’ ›– ‘“—™—¥—œ˜™•ž—’—‘—œ ›š •“œ¢“˜š‘šŽ“˜žœ”’œš™›˜•—–šœ›œ •¡•ŒŸ—•”šœ”ž–¡‘™Ž—¢˜˜ •ž™›˜˜”šœ›”“ž–˜–•™œ•˜•ž—–šª”—¢’œ“”—“®˜•™—’™“œž¡’™ ™›“–š”Ÿ–“”›‘—›™‘˜•œœ›—š’˜ž–šœ•Ÿ—–ž™›¦“—‘‘™”¡™•Ÿ£˜š£œ•–¡™‰š”›‘•—“™š––œœ‘™š š‡™‡˜–ž—±š™™•›ž–˜•˜˜ªšŠ›š’ž–œ˜‘™—šŸ˜œ”•‘˜“›”Ÿ˜§œ˜œšœŸ•–›™‘˜›™Ÿž™™š“™™—”–”Ÿ “œž›Œš–—œ™“ž¡˜š˜˜¡›—™—”˜˜——™™¡—œ™šš”•™’ ’š™”——˜˜–œ™ŒŸ¢š———±•—–š—“ž•¥—˜˜™œ—˜™›•™™˜š˜˜”—›—˜™˜•—ž—š–š–˜’¥˜šŸ¤ª˜ž˜š—›”𙣒‡ž—”–—–ž•ž“›™——˜š–œž–›§–—œž—“˜ƒŸ“š˜™™¡˜˜¨£™———š’œŽ•‰™Ÿ™••‘—’–”’Ž––˜“Ц—‹›™•™˜˜–§›™|™œ“—Ÿš–™’£š—œ–˜™“—•›—–•£¡˜‹¡™’‰——š‘•šž›—–“™›—›‰““˜”—˜–ž™š›˜”•–‘œ˜”¡™ ˜šœ–—˜™˜™š–•œ—˜™”§š™–›–š–›–›˜™•“¡™˜›Œ–‘˜–œ˜“ ¦š›˜’›˜•”™—˜Ÿ•“š”—›““”—““““”•‘š›Ÿ–›•–—š™œ”œ™”—š–™˜›”¢’¡™‘œšœž¦ž™˜”˜••šŽœ˜™’–˜—’”’ž”œž˜œ™˜™™£š”“ŽŸš ‘•Ž™”‘™š—˜• —››œ’™˜ š’˜˜œ™˜’–•—‘–ž–™˜§˜ ”˜¢š›’ššš‘•œ›–™žœœ””š˜™˜ —™œšžž˜šš˜’§•šš™˜¤“”˜”¢—˜¡š˜š—˜œ–“›–Š——šŸš“™•–›•—–”˜šŠ—–™—°—“–˜›š‹˜–™›˜–š•š“–—™šŸ›››•”Ÿ”˜œ—¡˜““𤙙‘–˜ž›•™™•—œ™– •–‘š«—–™¢š„”‘ —‘˜š—™˜‘—›–š ˜•””ž—š—šœ“—–”~–˜™š—Ÿ•œ£œŸ˜—š•š˜š£™™Ÿ›˜˜•žŸ¢œ£œ˜‹™ —š’–™–ޙ𔙔˜™‰ž‘˜–š‹‹–™—™™˜™’™–›–¤œš—Ÿž}˜¤—š›žŸš›˜ —•™œ•¢œ–‹’•–›˜’—šœ“˜˜—™’™›¢œ˜–›–š›—™Œ–šž›˜— š›”™—Ÿšœ•˜–›‰™” Ž”™›Ÿ— ™•——ššž˜›”––ž—™™’—“–—˜š™™—–“”œ–žŸ™“ ˜™”‘˜¦“š ˜¤–šœ’š—‘–œ˜– ™—ž—™™–™”›“ ‘™š“˜ŠŸ’Š™”“—™šœ•›•˜“š˜œ¡“”–›—–—š™œ—˜˜–Ž  ¤™¢—š’•š™Žœš—•›—˜˜œ‘™œ™—˜— –¥š —“–™‘˜•—˜–›•œ¢Š™˜™ž–ª–—˜——˜”˜Ÿ–‘©›•™– Ÿ“˜—’œ•˜–˜—™™——™——•“š™—‰œœ”—™˜¢˜›”—ššœ—™•–¡ž™Ÿ—“œ—˜——™—––˜˜™š—š’•™‘–”—š›—“™£¡˜˜—œ€œ›š›š”˜Ÿ˜˜––™—™Ÿ¥”ˆ’¢™••˜„—™ ˜›™™ž˜’™ž£˜˜¢˜›¡›‰ˆ”’˜–™©œ”˜š˜–™—™Œ“šœ‘œ„™š—™™”•™¡˜™œ‘™”š—†˜š“œ¥š—£›——’– –‰™“‚«’œ–›¬›››˜™——œ¤š˜™—“§”œ—˜“˜š™¡Ž–›—™›š˜š˜œ’ŠŸ¡˜›“˜š¤š’œ™™‰–›’•š™”–‘š•–”™™›—¦—™—Ÿ™˜œ”™Ÿ‹˜–“˜žœ˜•› ‘¨–‘—™—––’”ˆ™—˜—˜˜•–œš—–œ— ™˜‘™˜£—––œ™œ•š˜™™£ž–›˜Œ”œŸš˜—«ŸŸ–• šš—›–œš˜——–•——Œ¢›…š–™–•—˜˜¨—šš™—{œš‹Ÿ¤™—˜œ—•’–™‘•œ—”Œ™œŸ•Ž¢˜”Žˆ”—™§•š–“™˜™‘–‰—‘‡˜–Ÿ‘Ÿž™—™œ š˜–—Ÿ—“—“‘—œ“˜ª£›š™–•¡—–›†™••™˜–£ƒ¡”“¡–˜šŒ›–•’—–Ÿ”“›ž™”™”˜•‘œžš—ž¡™”›š”›Š¢Š”¯›–”’œ’˜‘™™›ˆ›œ˜ Ÿ“•ž–™¡•˜Š˜™œ™š”œ’œ™™Š—˜– žŸœ–›‘’“˜œ•š—•š˜›—Ÿ•™’•œˆ–𛢡𖗒’™˜–š–˜™—©Ž™œ®–š˜š“™¡—›˜™™”šš–Ÿ ˜°›™”²ˆ™š£žœ˜’¥™›™—œ˜™Ÿ–”˜«—’™”“š”˜“š• ~Ÿ˜§ž™˜™œŽ£Ÿœ˜’˜š‰””—˜ž–—Ÿš– †’š•“”ž•š–™—••‘—–œ”—•“Œ™›•–——šœ˜›™œ™“›“”›—•›‰’‘•˜›˜˜«š–˜™‹“´—›™˜—‡—™›’–„–‘˜•š—–›–•˜™—˜–™——žš˜š‘™š—œš¦˜˜Ž™˜›˜¡˜—˜Œ˜˜{˜”“­™šš€˜œ•˜˜•¦—–›™ ™¤š˜‡—•™—›•–“¤›–¡¡•££˜—˜˜Žš–’—˜——•–“£š£•…˜˜™š¡™’™–› —™–šœŸ™”˜š˜˜¥—™˜ŽŸ–™Ž”– ˜ž™‘˜£•š¡—–›”•—š—˜—šš›‘œ‰“•Šš™””š–”—š™˜’™——™š–˜™ž™™šœ–•œ¢˜œ–”Ž‘•˜˜šŒ–‹•“•”•˜›–”œ–œ–˜•Žš–˜š””™•–Ÿ—œ˜™™–£”–—•š–£¥“—’‚š™°““˜˜’™”™ž”˜˜¢š™™œ˜™–œŠ–™“”š“™š‘”’–™Ž™—™•š—–œ–›œœ“š•™™–¡— ˜“œ›˜˜—“ž“›žšž˜”™”›¢’—™›£Ÿž˜”œ–š‹™ŠŸ–•¡ž³““—’™˜—˜«¤–¥™™™™˜—›Ÿšœ˜˜— –˜™—™ž ”¤¦Ž›—ž¤›—›œ›–’œ–œš£—•¡ —–’©–š›š•š‘›—™™˜––’™™”˜‘’–šž—š•¢šš”“œ–œ—œ —‹–˜”˜”Œ—•’šš•“˜›œ˜•ššœ–›—ˆ›š›¨™–™’•œ—›˜•˜–”™•™”ž›š—˜‡˜˜›—›˜ž’˜›”¡•——¯˜™–’š›™›®˜Œ—œ—žŽ—Š““•˜•œš›Ÿ˜œ®›š——›¢ª˜’™• ƒ”™œ™¥š™œš›—˜–—§–ƒœ™“– ˜œ—”–›‘—™•šŽœ‘Š–“‘——›— š›š¡–™¤“•œœ–š “—“˜™™˜ž™—”—•š«™š—’“𛥙—¥›šž”’š›”š˜—–˜ššŠ™–™™”–“’™™• ™š™œ–––››—”›—•–”š“™•–šš–˜Š—–š—œ–˜•˜¢—“–™Ÿ˜›š›—•šœ˜™——•›™–œœš˜—”ž–”’›–¤™Ÿ”œ˜”•˜˜›—‹–—œ—››™’•™™˜™•˜˜—›•˜–š––”™œ›š”–—’–›˜•šš™©™ž™“›—–’——–™Ÿœš7–—™™–™—›˜š¢˜™š——˜š–“š–˜“˜–ž—–“–Ÿ™š›˜™–š“——™—•˜™–”Ž‘‘™”Ž™—–”•—™•¤”Ÿ”“›———›—š›™–š–”—œœ™˜™“••š–”–˜–j˜Ÿœ¢““––™‘¢›”‘˜—•šœš—™™Ž—›šš™˜—˜—™ —œ››œ¢›—¡™•–Ÿ”‘›“™™•‘‘¥›š˜˜’—“—¤œ•– Ž—™œš‘‘š•¥–•ž—€˜“” ˜–——› š—˜™œš›—™“š—–˜“•–Ÿš¡–š•œ›™˜š¦™”—ž”˜œ˜Ÿ˜™™ž•• ™˜™™ ‹š›œ•Ÿ˜š›™˜˜š“• –˜”œ˜˜“›˜—šŸ’›– —‘•š›šš˜•›‰™—›œ«˜•œ–—šœ˜¡–•“™”—•›˜– ›™”š˜›“›“’›¨–•“–˜žš••”§Ÿ’™œ„——¡š–—œ™ŽŸŸš£›™™˜—›—–œ˜—˜œœ™˜œœš ›››–›—–“–“š“›Œ’”˜›•›’—™“š•Ÿ™š‘–˜”œ••š–ž”—˜“Ÿ˜”–”¡“”™•ž’š””’–Ž™—’“•˜–”–™–›™™™™˜š˜”Ÿ–˜—™œ˜œ—••˜šœ–•›“—˜˜–“™•¢””œ“™—˜œ—––›˜šœ•™–ž–›˜–˜œ’–”œ–˜™“ œ—™›•œ–™™šŠ•šš—šš™š©—›˜ž ¡•—›š—ž™“–•“””››–¡–‘›‘ —’£ž”•–’˜–™ £–œž—–“˜šš”•›š¤šœ™šœ’›——ޓ𗔙“‘œ™—žš•Š—˜‹–š›—“–šŸ²œ›Ÿš¡›—Ž–Ÿ•™‘”‘‘™œ™™“š™•Ÿ—œ™œ’£š¡”™”™¡¨’¡š¤“™–›š˜™’¨”—˜¢™™›Ÿ‘•–‘——”˜š›Ÿ•Œ˜”’™Œ™™’”“š••™”–•›—œ¦š—–ž’˜—™—™‘”•š•”˜’”–›——‘“˜Ÿš™™’™‘— ˜— ˜ššž˜£Œ›™—”˜—œ˜› ˜š–¡š˜žŽ–—ššš—˜žŸœ“£œ›”˜£’™•–•”˜•š”—Ÿ“’™–˜˜™ˆ¡šž˜••’’›––™ž•—˜™˜š•’“š—Ž–—˜¥˜±Œ›˜™œ™˜™——›–˜‰“šœ–˜• ™••‘—–››—•›™™š–›——¢Š›™ž˜™š™–•§™—¢™š˜™›Š˜˜ š˜”œ™“˜™€–™¡Ÿž—–«™œ—™–—Ÿ—”Ž—œœ˜ž—•–¡Ÿ—’’˜’›”–˜••––•›ž›˜˜šŒ››‘— “˜˜˜™—˜”™ž’Ÿ™—•”™–˜“™•’˜¢˜šŸ’—˜˜™”œ™•™š¡–—”–Ÿš““œ”˜˜˜˜˜••˜—’’ž™š”›œ–›™—”ª•š’›–›–”™˜™˜”œ™£–ž¡Š›–—–›™ –›Ÿš˜ª–˜”Ÿ”™ž››™——š—›œšš›œ“˜˜œš‘“–žš•”–’›š–•œ•“•”–˜“˜™’”¡’—””˜–™—‘™•˜”Ÿ¨œ“™–™š•–––œ—›•¡–œ–š——˜¡œ™“˜–š˜›™Ÿ’“—›™›“••¡Œ˜—˜™™—Ž–˜˜—š–š˜˜›–œ•——Œ‘ž””š–—‘™’œ›™–˜•™¤–›š–—–šŸ—‘š›š–—œ“–•‘©–—•— •šœš—œžš––’ ˜“”œš¡œ–‰¡— ¡™•š›”—œš—Ÿ–˜˜››™˜”š™—™››’¡™˜–”œ™››˜—˜“›˜”™”•˜™””˜˜—™›Ÿš˜—¥›–— ™—™–Ÿ”•”™œ—™”š——žŸŸŒ•™™ž›–’™—›Ÿ™¡£”‘ž™—˜œ™•—™“•™¤˜œ—˜–™™•–—š—›•˜˜—žš•œœ”™™™œ•–™”šŸ˜”—–›˜—›———™”˜žž`š›˜œ”˜š”—˜™—𕡙𗖙™™•• ˜–Ÿ•›˜šž–¢—››”˜–‘”–•š™–šš›˜–œ™›”—™•˜•—œ’œ›˜—šœ˜š•“—œ”š“›˜š“˜—˜£™Ÿšœ”—Ÿ  ›› ––›™›}›•—šœ••“œ—›™™–¡§œ“š’‘™ —¡®™š”–š‘“•«‹¥— ˜˜˜š—Žš¥™™œ“˜–™—‡–ƒ™œ•›—˜œ’ž–˜“§‹›’˜¨˜¡™›˜•”…–Š’›——˜–“—š˜™•ž—€ž™¡š˜“¢™ž—š—˜ž”ž’š—“•š˜œˆš–ƒ –›š–˜©”œ˜Ÿ§‘”–——–Ÿœ£‘™Œ—§¡–™¯›•¬„š˜š “—˜¤•~š“š–‘‘¡™™˜¥–ž–›™™Ÿ˜”š”’™¤™ž””£¢–Ÿ•¢—ž”˜›ž’”–—•£™•š˜™™›–‘™žœš¢ ›——šš™—™¡˜™–¡œ—š—šƒ‡™™˜—ž˜›—–““š–™™’—”Ÿ“–˜˜•˜‡—šš›™ž™•——›˜™˜›•’–˜—˜š—‹™—”™’ˆ –“”šš™–™›•“•Ÿ–™ š¨–Š’™ž‘—”š—’˜š‘©˜˜Ž——£—˜›•—š™’˜œ™˜™”™ž™š™˜—˜˜—–›””–——›˜–™“™¤˜Ÿ–™š˜£‹—•‰••—¥›”Œ›™¨–š™š—˜‘˜”œ•—˜–Ÿ–—™•œ™š‘–”™™”¡™™›š•––——”˜‹’š˜Ÿ˜’•–­™—Ÿž—““‘¢›š—•“™š’ž—”™—ž“š•–«™“–”–‹˜˜˜š“š˜“˜š—¤™˜š›“˜““›˜™•˜’–˜˜“˜•˜•˜˜—ž‘™š¡Ÿ›––™•·™ˆ™”‹˜œšš™¤–š–›˜œ”¥•¥—™¢™‰—¢•™›–›’›—–”Ÿž‹“™“—•‰––™¢‘•¡ŽŸ™›š—š——šŸœ––˜—˜§š•˜‹”——”›—š™–“›˜›®‘Œ”˜š •”·˜•”•—Š“œ›š›š™ˆ — Ž˜–¥›‘œ”˜—”“¦—”˜’¢”›˜•›¥š˜“™•“˜›—™•›•œ•œ˜£š›§—œŸœ¢š•š•¡——––˜—–˜š—’’™˜””“–™•¥™—š˜’œœ”Ÿ——˜™”—˜“—’•š•šœ™™““–‘›”Ÿ–‘—’”›•šœŠœ”˜”˜¡—œ›—“¡™šœ™ž”˜š “—˜™ —˜˜™•—’¢“œ™™•’–––’”˜˜“š’—£›—–œ“——˜›—–™‘ž˜šŒ›•–œ—m™—–“ ™™™š–˜•”””ž–“™™šžž‘•œœ™—š‹›š–›—Ÿ—— ›‘–—œ™››–•Žš—Ÿ’™š––”˜””“¡—œž™Ÿ•›—œ›•˜™‹›––š•›™”–˜¡–œœ—™˜“Ÿ˜”ŠŸ›• ™–˜›Ÿ˜—Ÿ›››™˜”›Ÿ•™—–‰˜›¡—–—‡—’–’žš˜“šš£™˜–—•›š£•›—˜™™™™‘–‘—››–™š˜•” ˜—ž‘™™˜–‹ —¤›—”•œ˜˜™œ’“¤’˜£™›•–˜ž—˜•š¢•Ÿ¡–›“œž›—”—›•š˜˜•ž—š——• Ÿ™•’–•¥•œ˜”——™˜„›—˜Œ©ž•˜š“›”™’˜›–™˜“››“—ˆ˜ž”“šŸ•–——–—œ––š”™“”Ž‘¡–•˜“•š›˜žž–¤š–Ž‘”œ—˜“ž‘–—–‘’–˜’™‘›˜›ŠŸ™š™žœŸ™‘š™˜•š™™˜•š—•–¡——“”–ŸŸ’“ž•š¤Ÿ—•š˜—š––™•˜—›§•š—™—™•˜–ž•–“ ››“š™£Ž¥š”›•Œ‘•›–’˜¦•——˜”™›”›œ’›—‘šœ¦›•‘’™•—–”¡œ™ž£‘–’Œ—–“Ÿ—••”™“™–˜š••œ•–•–•—˜ˆ•š—‘š¤•›•™’ž•™—••”œ™‹š’¡”š—•”š™–Š’——š“‹›€ š••›š™—¡˜›•ž—–™š“––—›•‘”‡—𔑓•–š˜–›˜œwš›—“™£˜™˜ž›•˜£™œš———š‹š‘”Ÿš˜™”™•š“Ÿ—š”žš™‘˜›’•”˜›œ˜˜š—•”˜¤Œ–›•–™˜”žœ˜š•—”“•™–™™’š™•˜š’“– ž—’˜”œ•¡™š”•š–Ÿ”‘™“žšš˜˜• ž•œœ–™“–“•šš˜˜•–“˜‘Ÿ˜—™œ¡˜—‘•™–•š–˜–™¢š›˜š›™£™š’•—𙓑—¨›™“›š‘ž—˜—Ÿ•™™–“š˜—’”™œ“‘”š••—šœ›•˜šœ“—•œ™Ÿ˜—‘–šœ‘’˜œ’™”›š› ––••”’›˜ž”™—““š—•™£›˜—˜š“”¢”‹™••——›š™œš›š™•š›“˜“˜”š›ž™š—™“–—›ž–—”—’’–››¢•˜–””–˜•—‘ž˜š–”• —Ÿ–•‘š–””•›•œš˜–š›™ž˜““”—––”œ’˜•š›—œ’Ÿœ˜–™ ž”Ÿž’˜™šš’—˜˜Ÿ™™““•—–”£•–”Ÿ¢œ ˜š“ž˜’‘™’£ž“˜”™“𥔙’—™”˜– š—’›˜™˜šœœ”™ž–š––›“–˜˜“—“–¥™•’•’—˜œ”’—š’”–š˜–—–šžž¤Ÿ”š˜˜˜›Ÿ™›Ÿ™˜–š—›š˜–œ•™–œœ˜”™–˜–—˜•™——˜––˜–™™˜¬‡›—˜™š–¢˜Œ›œ›˜™ˆ•—˜”ž”˜—™’››˜——˜——œ˜šŒŠ˜”—šœ™šŸ™–œ™••™ž™›¤–Ž‘“ž“š–†™šœœ˜‘‘›‹Ÿ–™¥––Š˜š˜˜•™šš‡—•š˜–›–˜•¡“—”˜˜–—Š——š’—˜›•—‰“Š˜–”±†ˆ–˜ –”—¡¢¢–š—ž–—’—›™šŸ›š¤’‰Ÿœ™— “œ“–˜š”›”˜“𗤲˜™š˜Ÿžš—™˜‡”œˆ™™™œœš“™žš—”–¨•˜“¡”¡¥•  ’’““–š˜¥›•š–™“’“—ž™”™˜œœ—™¥™–œ’œ˜”™—‘”¡œ—„“•—“••—˜˜¡˜—•—”–™™••“˜–™’–ž–¥–š¥˜š“’…˜”˜›˜˜›–—”˜˜—™›—“œ™š“—™“–˜«œ›Ž™••—›š–”˜’˜˜˜–™™˜™š—“•š™˜˜•‘•œ”œš“••¢¡”˜—•“—™™Ÿ” ”œ•˜š˜œš™Ÿ“–˜œ˜”–”œ•‹––˜˜šž’›–š±›’”›˜œ˜›œ—š“žž’˜–š•“›œ–›™–˜—¦“¦—’””—œ˜˜ž–“–œ™—˜˜‰”šŽŒ˜‘‘™˜™™—™ ˜™˜™›Š›“”“›Œ–¨š™™›•—𙓖–››™—˜ š–•—¦š¤ž—˜¡˜–™Œœ¢“ž’™‰š’— ™¢—œŠ—“Ÿ–•‘˜’ ™œ––™œ’•™‘™™“••…™™—’™››——˜•Ÿ™™‹Ÿœ›™•“¡•®…•Ÿ˜–•—ª•–“š˜•¢™Ÿ’–•—¢¢››¦œ’˜‘¢™š”——™Ÿ¡—›Ž•—“¢¡—–—š›šŒ–˜œ—‰œ›’Ž—˜•˜”•˜–Žš¡››•—›—™¥˜›™›•’–™™•—“”•𛓓›•¤š¡–¢œ™˜•ž™•™‘››˜ž™ž›™—œ™šœ•™˜œž›žšœ–“—š˜—˜šš¡‘˜–œ––šš——”˜•˜—˜œ–”“›–›—™™—¥–“˜––£•—–˜¢™˜Ž—–—Ÿ“˜›—˜‹˜•œ™–”‘˜”˜Ÿ˜–—˜™——™“’ŽŸ“œ‘•š¤Š–˜œš˜—œš™•™–ŸšœŽ—Ÿ—žš ž”–—ž”•™—š˜™ž“˜–›˜…›–˜‘—“–—” •œ–—œ ¤˜›¦˜žš˜›“–›—š•˜”›”™šš›œ™{”›š›˜–˜™šš™¡›–™œ˜’›šš“Œ™š˜›š—–˜˜—–•‘š”› ’—˜š“˜™“—“ Ÿ™—–™›¥—›¡š•Ÿ›¡––—š™˜œœ•——’—”›–›’¡œ—›———œ—‘”™œŒž¡š——–š™–—•••—¨’¢—Ÿœšœ—•–•’ššŸ–›¤—™–•–˜‘——”™…–™˜–˜˜”²™™›—™ ˜šª““– •–˜˜˜ž—–™™——•šš ——ž–”‹’šš™¡–˜¬Šœ™š–š™ š‘—˜‘šŸ˜—‘—›•°š–š• •”“‡”ŒŠ•«——œ–›š™‘’š“š‹š•—˜˜±“™œ˜–—ŒŸššŸ™œ“—”›£•𤙖𑕙œœ”—“›Ÿ˜–šŠ—š£™”œ•šœ™œ™ž’“Šš–’™’—™šœ–’™–“šš“’œ——™‘–ž›•šš™–˜””˜˜œ›•Ÿ†™–˜š˜”’ž˜–—›“‘–œ™˜˜––š—’—“𢙕™——•’˜˜–•™—ž–™–˜›–•™—š›˜™’—–œ•š˜•š”Ÿ“š™–“•—Ÿ˜•—™•Ÿ—ž•—™šš›—˜’š–›——œ•¤“£¢—œ“˜•‘™“–•–—£›–“˜š‘˜š›œ”™˜›’—”–•™ž—¦”œ•›˜š¨–™•šš’••ž˜™–˜—›——“Œ–™–Œ‚Ž”Ÿ™˜”ž™š™—˜ šš™˜–™–Ÿ—–Ÿš–———˜—›š¦—–•–™—›—›ž›˜ž™š——™ª”—ŸŸ˜žšœ •‘œ š™š—˜œ–”—–š‘›‘•š›˜‰‘˜©©™™˜“––š“™›œ™–‰˜›’¥§œ¡”—˜š™˜–˜ž–™˜–š“ˆ’‹–˜ ™—”š§˜™”š˜––”š”’–™œš—¢––˜“”˜›–˜™›œ˜Ž’˜š ——ž‘—‘˜›˜™™†˜™˜˜ª—‘š•™ŸŸ˜™œ–˜—˜›””–—™ ’™–—š™™–™š‰™”— “ž•š˜•—š›”–š–š•œ–””˜ž–—’’•›“˜²™“–š¥˜™—¢š–‘“™ •˜›™—›”˜¡•–šŸžœ”—š’––’›š•—–˜•™•˜—š•ž™˜—”–¡Œ˜šœ˜–˜“›š˜—”–’ž˜—”›–›–“››œšš›•­—˜—˜™£›—Ž—˜’ “——˜—›™’——‘•›š——›•™šŽ›¥š–˜œ’“™Ÿ•™ž–•ž–œŸ˜˜Ÿ‘™¡™›”•˜š—”¡˜•ž™š‰”˜™›š¬Œ˜” –‘š›œ™™“–“’š“ž“™š˜œ’“–•›”–˜“Œ”—š•¤™šž™š–Ÿ˜š˜›œ———š–™˜ ™™“™‘–š–˜š“œ”“˜™ž›“”Ÿ˜˜ŸŒ–Š– ™”–š”š™˜•›—œ–’–˜š™–˜—ž—‹Ÿ˜Ÿ—˜™®“ž™›š–˜––š“™˜ ˜—ƒ—žœ˜’›“—‘™”œ–šˆœ˜£•›šž˜™š–”Žž–›£”›Š’–˜š™š˜“…–™˜—––›œ–”™žœ›–——˜—œ ›–“¥˜œ¤ªš—¡–˜§Ÿˆ•–›Ž——‹¬•”˜˜£‘–——•–š›˜™˜™š––‹š’’’•ŸŸ›ž”˜•œ”˜“–˜ —™˜™›ƒš•š˜‘‘Ÿ›––‡œ™—˜Œš™œ››—œ“Ž™–””œ’˜•–˜“šŽš™š‘–š”–›™––›•šœ”™‰˜›š›•””›¡“˜¦œ’¤”™–Œ˜—“˜š•“š“Žš™—Ž–¯™‘›‘Š••šžžž–—™™–š˜”š˜—“–š˜˜—œœš’ž ™ž™‘›œ”Ÿ˜ ‘”•”“Š›™•—–™’™•“—™œŒ“›™—•™œŽž“˜‘”™ž””™‘–—•§’•š””ššžž•“™Ÿ˜žŒ‘”› ˜“‰š…˜š’™¡›˜›š’œ•–—”™š›Ÿ›™š’˜™•œ–—–‘•‘”›•“‘˜›–—œ›œ—“œš™˜——™£›™¤š–•š››œšœ“š”›š•“›—–”—¤–—˜Ž‘‘—Ÿ’š”˜•˜˜’”™š–𔡕––™œ™™–”—Ž“˜™•šœš˜œ›“›—›š–“™““•Œ™•˜œ¦š–˜–––ž—›žž”ž”–—›˜’™•™›”—™™˜œ£›¡—šš—›™˜œŸ™›—˜˜”–¢•“—“š››œ“š¥š–™žš””•‘›˜™› ž¥›Ž˜–—›–š — š• ’šžŒŸ•™˜˜ž˜••œ™™˜’˜——ž£š•••–“Ÿ ”“’™•Œ—œ••”——™žœšž‘Ÿ¡™–šš–”—™”’–”›‘—œ–™š–“’’–žœšš”š‰”•œ™ ““›“›•“Œž‘•‘““—ŸŠ—™””ˆ˜˜—‘–œ””–šŽœ˜‘—›œœ™˜››•““— ˜“¤–œ˜—™—”—˜’™Ÿš•”–›”–™›™”›˜˜˜˜™“—™š˜ –™œššš›¡”˜š˜›™“”˜—œ—›˜–—–”œ–‘¡›–—˜˜›¢”œ””™•›”‘›™•™¡˜˜––—ž–››”—•Ÿ“—š”Œ¢Ž‹š—š—•¥‘“–œ’—œ’”‘ššš˜˜œšš”—¢š–—•ž™›˜—›˜”˜˜ o–—œ” š——Œ¡™”— œ–——›š–•—””” ›•—“˜“˜¡žœ•š–£˜Ž™š•š™’›™ž›–˜“‘›œ—¡—˜Œ›“™—š–•’“˜–™˜Ž™››˜•—’Ÿ”“š—˜–”“—–ž—››™š™–”¢–›’œ••–›•˜ž›”•–œ–—’•”𛕔“˜–—•”“—™–œ˜™š™š˜—™‡–œ—˜››˜Ÿœœ™•™Ž˜ ™‘™˜“–™™™ ‘›•š—œ˜™›Ž››––š”—’š–¥—–•‰‘—˜˜—™¢šŽ•˜–™“œ“˜š™š–™“™˜™—˜ž›šš ™“—’š›–ƒ™–™ž•ˆ—–™Ÿ˜ž”–›™£™š›š•‘•˜›˜—”’–œ˜šž—•’›–™‘™˜—›˜™™—”œ™”™›¤œ¦Ÿ˜˜“”œœ—™›¡—™™••–™”“——‘˜™˜’š››—›¢š‹œ›—›•›œ›—•œŸ™˜•—™ž•—•—™˜•–ššž—šˆššˆ™——˜˜–—™•”›”žš›œ˜‡™˜šš–‘•––˜˜•›——— š’—¤™‘“–‰—™—©—–—––˜”˜›š–™š–Œš˜™˜š—–œ’”’•—–’•“–™šž˜‘›˜ ’——–‘˜Œ“—–”˜˜—˜—”™‘˜™Ÿ˜˜—–—”•𣙔–—˜­™™—•˜–šš˜˜™”˜—š“œ™§— ™œˆ•™¯—‹˜–—”“˜•˜•˜”œ—ž˜‹“˜–œ——¥–™ž–™’šœ–”ˆ˜—Ÿ™š™‰™|™™™–›œ–—œ±–¡”›¢––”›¡›˜—•˜ž—— Ž™–‹™–…œ˜˜šœœ˜”¥¨———™—””›–‘›š™™—Ÿš™™ ’”Ÿ¥Šœ””‘„–š‘’Œ—•£ š˜•¤œŸ˜šš•ž™“›˜“•ƒ•œš˜š›™™›ž–””š–™—šš˜–’‘˜‰œš–˜˜•”žžŸ—›–š›™˜›”˜™–—“Š¢—›˜¤ œš“——˜˜’Ÿ’››œ˜–“™œž™™™™š•¦š—Ÿ–™–›–—™š”›•™”œ›œ‘š“™™–•—š–˜‘—”––œ—›š—•—•› •”–›˜Žš“˜˜™Œ•Ÿ™˜š—˜š˜™˜šš “›˜–š›–˜™˜’š–’•šž¡›œŸž›š—–—˜‘“œœ””™˜™›—šš˜‘—›™˜”™™˜š£›“Ÿ›˜‘–ž–™š“•œ“œ›™“ž’–••–™™ ž—™˜™˜–™™–”•Ÿ‘—”š˜™“˜—–—®œ•˜›šš•›‘™”’œ’–›’™”—šŒ™“—˜™—˜­’œ—“£‘™•˜•“–•““”Ÿ•“”—›œ—¡”›™—™°šš—””•›l›–œ¢œ˜›˜¡”–¢š—•‘Ÿ——˜˜ Š•––˜Ž¢—œššš–‘œŒ—Žž”Ššš™’…™˜Ÿ™•£•—›š˜›•™ªš––“•“Œ™”–’›–’›ž”—š™—–”––ž•–’ž˜——¨™›››˜›Ÿœšœ–š‘˜š››šœ•¦–“š•š–š‰–•™¢—‘˜ž™™”—š™ž™šš–˜œ——›–VŒš™•——¨““œ›–œ¦™ž’”–™—˜—–˜–›¡—™•˜•¢–œš˜›š¢œ ¡œ••’šš‘œ¦”–œž•™” ‘—› ’˜Ž ž–‰¢˜—”“™›˜Žœ—–”˜˜  ••š˜¡œ¦›š¢š™™™Œ–“—–•”˜—’Œžš™˜Œ™š£‘˜˜–™š•š›’˜š“’•¦”›ž“–—žš˜›™žšš“ ™˜”š››–™•œŽ–˜–’™šŒŽ˜›“——˜•š›•˜¥˜•“–š™–œ¡—¡–‘–’›˜š’•œš™”œ“›–”“¬”˜™Ÿ‘–ž–™–‚œ˜Ÿš˜–™–˜œ“Ÿ˜œ˜•–”—’˜œ˜Ÿ—‰˜• ›œš›­œ˜ŒŠ™— –•“£˜—…œ›—’ž–›š““ž”ž”’“’š•›”›–ž¢”–¥—˜—™—‘œœ‘—™Žš˜›–’›˜–˜–‰”“™ž•˜”™š™œ“—›œ™”™˜‘›–˜•™˜“œ˜–•–Ÿ–›˜—˜‘“›—˜–””›•™•Ÿš–™‘•™— šš›™˜›œŸžœš™•¡Ž”›’š”š–š”™” ˜—•‘ž“™——¤—˜¤š–•š•˜¥˜”’“—•™–˜–“˜”—“‘’“š¤–œ–•𕍒”—˜—š•™•™˜™™—™ ’šŠ›–›”–›™”“—™•šœ”œŽˆ”˜™––Ÿšˆ¥›¡¡‹›—˜”’’›­–œ¢ ’™“‹››”––š”–•›š“šœž™’š—Ž•”˜˜‹š•’—˜›š˜™™š•‘˜˜–—–˜•—•¢Œ”™ˆ˜¥——•–‘›œ˜œ™•š–ž›©Œ–”—•©œ¡˜™ §–𥖙•—¤Ÿ˜š˜”–¢——št•¥•˜šœ™’œ–Ÿ—’™˜’’›–œ˜–˜—”‘™•—´ –•˜Ÿ˜š˜™˜—’‰–”š™˜‘œŠ‘˜¥–§š“œŸ˜«“˜š˜–—ž¤Ÿ•“¨—–Œ’‘–“„™—˜¢›—–™—œ ‘ˆ˜•šœ—™ž™š›œ”Žœ”œ–”Žž™•–’™—𕖤𠙑“œ——™•¥‡•––’””žœ™Ÿ’’œ™—“™—–š“œ‰•›¡”•˜–«¦‘–—˜˜•—Œ•Šš˜˜œ™˜¤—•›‘𤛑•‘——–“˜™’£™š–¢•˜– –‰š˜•Œ“™ªŠ™›”…’“›˜™šŒ™Ÿ–•…“Ÿš™š˜Š˜•›•š˜””šœ—“—•™¡“˜–¥”–˜™—™˜‘œ“’™ž˜˜¬’‘¥Ÿ§–‹”•’œ”‰œ•’œ‘›„—™¢¤˜“œ–’›£›š–ž•™Ž˜™–™”’¡•“¤‹¨˜Ÿ™œ–•—–™”Ÿš––˜Œš’™’˜™¢˜ž““Ÿ¢š“˜–Ž‘œ˜˜™››“’——œŸœ—™š —™˜˜”Ÿ— —šš•“—¢œ—˜š˜“˜¡œ•™‘•œ’Š› ™“¥˜—™˜‰’”–š™Šœ™‘—š˜¬™“—•”“¢”–™Ÿ˜˜™“‘‘œ”𙔉Ÿ˜›•‘£™“ž›Ÿ¦™™—•”—››˜ž—“˜–™—…’–œ’•šš˜“˜™¡œšš‘œ˜–— “—•¢š”ž”™‡——–—˜™—’š˜›™––žš¦’•’¢›ž’™•—”Ÿ“™šŽ—™Ž˜–•›—’™™—šœ˜—¡’˜ š˜—’–”™“––•œœ›˜™ž–Œ–Ÿ—˜”¤˜›Ÿ›—™—–’›—•¦ž”›–•—™¢š“›–š’˜ž•”™˜–”–••“˜–—˜—›™•œš˜™™˜˜›–ž——••—ªš—“œœ˜——›—š”ž›–šš•˜¡ ›–•¢•”ž”“”–––ž™›™š‘“—™œš˜•™–›™š•—™šœ›˜–’š›™”œ‘—“Ÿ”›”—–’š™š™”“’‘’––š‘——™–œ˜—š—ššœ——š—™˜–™‘–›››”˜—˜–˜—•–™––—•š˜˜š—•›’œš—š—–š—œgŽ˜˜š—˜›ž’’”—™š™•—ž• —•’›˜š›—¤š˜š˜—™™œŸ™‹˜——’—š™š˜œ˜’œš“šš›™›”š–™˜˜—— ’šœŸ™˜™©™—––˜”•š—–›œ‰“•¢˜˜–ž˜˜œ—™–šªœšž˜›—™˜—•š˜—™—™ —’¤—”œŽ’“’•š—š•™ ›œœ˜š”••›•‘–˜’—“” š›•˜–š—–›˜’˜•›—šœ¢šœœ“–——”—™—¢œ™™˜˜…‘•—Œ”Œ˜šš“›£—“’›Ÿ•”’ š’—¡™™“¨–Ž›™–¡—–˜–š–•™™™‘ ™˜™™ž©š‘š™™—“™š—˜—’žš”——““–—” —¡•—–‘•šš–‡™™˜›˜–“™šš“˜˜š“›¢œ–•˜˜™–›™™›”˜–šš”–••–™”š˜šžžœ”•˜ž“˜’ž”—•‘›—˜––œž–“•˜’š– •žš˜™— ˜˜“™›ž›•˜—•›œš•˜™•˜™–œ“˜—™˜š˜—˜™™™•¢”š•œœž–—››’™’–š—•—ž–”››™™™•š›š’Žž“˜–›–šš˜›œ™˜–œ˜¡––›˜œŸ˜™”••–•˜—š”“˜›˜–˜–™™ –•—œ—˜š˜—™—”—•š•™›š›•ž›‘˜•™Ÿ˜œ˜œ•š“›–—–™—•’™•”˜š——›—•˜‚—”™“…—œ—Ÿ˜—™——¢’ŸŸ›š™—ˆ˜•Ÿ“™•˜–œ––—¥¦••‘–’˜”’œšš›™“ ¢œ“›¢›Ÿ˜Ÿ£›•œ‘œ’™™˜šœ”—’—𬔓“ž¢™–š“¡‰š”—œœš—˜™” ‘š‘—–“š˜Ž•™–Ÿ‘šœ•¦˜‘•˜“—–•‡š•Š““•›˜¤•›š”’—œž™’–Ž–™—“’”™š–œœ™–žš—Ž”››¢–—‹š›˜œ–¥›œž–“œš’œœ™——›Œ••—š“” “‰—›—•—”š——šŸœ™••“—–”’šˆ•–ž•™–š•˜–‘œš˜™™š””–’•”Œšœš˜ž •‘šššš——•›“—Š™—›™‰¦’“Ž‹’š˜˜ž›˜™š•šœ˜˜œš›™”œ–˜˜š——š˜Žš™˜”¤—™›–™”–™™¢””™š¦––¤˜—Œ™ š‘›—›œ•œ›š˜ƒ—žœ˜—¡Ÿ™š“|ª•’–—’ž™š‘›œ›——˜ž£¥˜ “˜™—œ•–—•––˜¤œ‘¦”š•˜š§˜™ž™šš›™—Œ˜”•™‰š‘œ£‹™–—˜š˜œ—š˜œ«™–™‘ž„•«™—›˜™”•›ž‹œŸ—˜“˜œ”œ™Ž•—˜•”Œ“—–’›¨š™¤”š›š—š™”˜˜‘˜•™™•——™–––”™’’–šš˜¡—˜œ“¤š™ž’º—˜Žžš‘¡£•™Ž”›˜˜““™£—””•”““˜™“œš––”£•œ“—–š•”Ž•Ž›˜œ–•œš–—‘–™¢›—¦’™žœ•”˜˜—˜ž•›Ÿš—œ”“––Ÿ™–™˜œš–™žš’“—•›™”›”Ÿ——’™–˜•›–—›˜œ’œ‘™”“•œ™™™˜˜—“—™—˜–™ž›‘™ž›——‰–”—š”Ÿš œ–“™™–Ÿ•“š’•›œ–š–™’™’›Ÿ˜¦—™”–—š’™’–•™š–™š‘˜•š˜•”–œ–›h™––¢˜˜œš˜•—¤š¥™–“˜•” “›–…™£™˜šš˜Ÿ››™˜š•ž™‹™‹™—Ÿ˜Ÿ˜“™ž™˜™š•Ž…™“–𙦙­š•–™–”–œ••˜’šš”™›š£˜—™˜›š˜–˜˜ž§‘§¬•™™—žž™˜¦›™—˜˜œŸœž˜“˜˜™‘˜“—š”›žŸœ£€™¢‘—–›Ÿ’—˜–‡›˜­‹™™š—œŸ™””™—›Œ™——š™˜–¥—›™œ•—“‰–™››˜¦˜§˜–¡™—–™›š›• ˜˜—–šš˜’¥ ’˜••™› Ÿ–—›•—“˜˜›’•‘“ž”™›˜›šœœ¡šš˜›™œ š š˜’Ÿ¨˜g“˜šš—Œ“œ‹•˜¡˜•Œ—¤”•’—–‘›šœ›”š—Š•˜™’—–œš–—›‘“›”ž“š•¡–•Ž•—™•˜••—•”˜œ””–˜šš›™š¢™”šš—–¥™—”“™”™š’˜™–œ©’‹š˜—•šš¤™˜›Ÿ—˜ž˜š›Ÿž˜ Žš›”—Ÿš—Œœ–œš– ž›ŸŸ›†•¢–žœœŸ‘›Šžš™—“ —ŸžŸ™šž˜—““™¢™˜˜›”˜¢•˜— ˜—š›‘˜¦”—”—•–𙑓—œš–•œš¥Ÿ‘“˜˜›—š —Ž˜«–•™–§˜’–›Ÿ”š –˜œ—˜•—š˜•–•˜˜–™™’›˜›–˜¢—œ’š„œ‘››¡–¨—™•ˆ˜—œ• £Šœ–˜¦•š›’˜™—˜——˜š—Žž—š¡œ“’™œ–œ˜™—•˜˜˜“™—›–•™›ŠŽ›‹™‹œšš¨–Œ—š—˜˜£‡‘™—“™—‹‰™˜˜’˜˜—š—š›‘š˜“Ÿ–—˜—¤–ž˜™™–š”š”–šˆ£š˜£œ«ž›•™š–œ™•‘Ÿ›œž¦Ÿ”˜œœ•” ™›™”™•š›“œ”œš—•“‘•šŸ›–”™˜›–š˜™˜“†–š“˜‰˜—¢™• ™”–•š˜“—œ ”••œ“ Ž–žŒ•Œ˜˜–“—˜Œ—•˜•‹”•˜š¬˜›Ÿ˜‘–œ–¡›œ’˜Ÿ“–›—˜…˜—š’šš“œ˜“–˜§œ—”—”Ž˜˜•’‘Š••——š™–™™˜™™™™šœˆ•—•”™—šœ“–Ž˜š™š™–™¥”•ž…šœ•Š›™• ‘—˜—–ž›ž˜Ÿ›”œ ™›Œ›˜›™—š™ š’˜“š˜–žšŒ–‘›——¢”›–“˜’š—•ž˜š•—˜˜˜˜—˜—›˜˜˜™—˜™™›š”›œ™˜–’—˜–˜–š–˜”–—™›šš—™™™™›Ÿ•——–™›”›”˜™™••—›”™”•™™—–˜š”—›šœš—™˜—™—™•œ˜™–››š–™™š—˜›™—›š—˜—˜˜›˜œ˜™›š™–™—œ˜•›™˜—–›™””˜˜”˜›•˜š™˜˜”—›–•–”•™‘™•š”š™—––—œ–š—™˜™›”˜—™™˜š——•’˜—š›——“š˜˜˜—˜š™–”˜˜™™š–™˜™ ˜˜–𙓖”˜—šœ——•—™–—™˜˜™˜™•˜–˜˜™š–˜œ£Ž”œ›¢¥š—–£“––˜˜™˜˜—˜™™š–ž—œ†’£¡”™”š—™ž•¡—’–™ ™|•—˜©”–š”—š™›—™š•˜’™——˜˜•™—˜”¡™«›—™•——–œ›šžŸš—•˜˜˜Ž—©——¢•• —‘™œ”˜›—••™ –˜‘˜˜š—”†“–œ’–¢¤•“™–œš˜™›”š˜•”—Œ–“‘”ˆ˜Ž—–š˜ ˜¦˜œ–•™Š‰Š–˜Žˆ–•—•™š¥š—™‹²›™˜™™•™œ•˜’—“£¬’––——–™†™”œ˜– ™¡œœ•‹–žŒ˜¡›Ÿ’œ—˜˜‘š™”š•›•–––˜“˜š•˜£•𙉤™¡¡• ™”“’•–—œœžœ—”—˜™™’˜›š˜–—˜•˜’—™•ƒ—™¤›™™”‰ “Ÿ¤”““™¢™›“”™¢“š™•˜—”–¡ž™œš—š™š™’”””˜’›——š—–•—š¡•œ–”œŸšš•– —–›—Ÿœœ‚˜—˜“™—š˜‘˜”‘˜—–›£“›˜•“š†–™™š–››‘–—š’œ™—œ—˜•˜–šœ—“™‹˜•˜¢–‘œ’•Ÿš““š‘›–––œ“™˜Œ‘™®ž’˜”˜—˜™˜’”˜™š–’˜”—š’˜”™“•œ™š¡™™š™˜˜‘˜™š–—•–—œš–—¡™¬’¡ž—˜œ“š˜Ž››•‹™”œ—ˆŸ”—™“œ‘š ——™—™––ž™——–œ™™˜˜ ˜š–˜–”œ‡ŒšŸœ˜™±›—›¢¡˜˜™›˜’—˜”—°£—’––’˜š–˜¡––¡œœ“™œŒ—š‘˜”Ÿ–”šŽ‡¨Ÿ““˜——˜™˜¢˜›™—˜‹•‘“šš«˜š–‡•”˜˜–”Ÿ—‰“˜•‡˜š¡›š ““˜—œ›”—›‚™™› ˜˜ŽšŽ•Žš—–~–•—™˜™œ¢˜™™—¢—”žš”˜Ÿ“—•›£™™“–—›—‘Ž”–™“˜™•”’–ž™š–ˆ¡ ™—š“’“™•ž”œ™‹ ž”˜˜ž’˜œš™™—›—™–™˜–™˜¡–Ÿ˜œš““Ž•š—˜–––”—–‹—˜˜——–—šœ—™£›“–¥•ž™™™†”š’˜™˜Žœ³™—œ£š¢”“£›™œ¤ž—¤––™–›Ÿ——š–š™™“Ÿ–“•š”œœ–•”¡™•›“—”¡¦ ”•™ž–šœ——¬ž”¤£”“™Š§—”‘£˜“°‘”•¤—”˜™ž•––˜˜¥š—˜™ ­˜”˜™™˜˜˜–›œ”‘š› ›˜˜•›Ÿ¢–——˜š—–˜¢œš–Ž’–™”œ—•—œ—ž˜˜–™˜˜š–—“—‘œœ™Œ«› –——š–˜œ––—˜™’™˜•ˆ”œŠŽ”œš•˜–—˜šš—–˜—˜“š‘¢——Œ ”˜›•—Ÿ–¨“šœ˜˜¥˜šª¤–•š”˜š—Š’™¯šž–’–š•’˜ž¢–––”›žœ™—¦˜™’—˜•–••˜š—“˜—•Œ˜˜˜šš¢˜“•…˜¡–•œ–•™š—‘¡›šŽ“™—§›™’‘˜”˜Ÿ˜—‡¢˜˜˜œ™™Ÿ—“—œ›˜š–•™™šš–›”•˜“–•‰™šœ›—”—ª›“““˜‘˜–œ–˜ŠšŒ ”—™—›—Ž˜—Ž•“ž™–š—˜’Ÿ–“››”’—®ˆ™“—•˜•™——–—™ ™—–ž˜˜“”””š¨›™˜”˜˜š“–œ•˜–—™“˜—™˜›”—™™—–˜ž›œœ™˜˜š›š”žœ•——š™™—™›’œ™Œš››˜¤“—–—šžš–—ž–œ¨—•‡“”‹£Ž˜™“–—˜¢™™Ÿ“™œ™”•§‘¦Ž—¡•—•˜›–œ’›—–¬†œš•—€›“‰žœ™””’˜‘¡™šš¡›šƒ‘©›™™›œ—•––—˜š•€™˜š–‘›£™•ž˜Œ–š””š’˜™”––™”•š‰•™šš›˜›˜–“‘œ•ž›•œš–••˜“–—Ÿ———“’¡œ˜Š—™›”˜”–—™›˜‡´œ•—™•——›• ™–•™œŠ™“—™“™š–—™—˜˜—š”ž—“Ž—š’˜™¢£šš‘¥–˜”—›˜›˜Ÿ›” ¡œ•¡—Œ˜¡“™œ‹šž™š£š——ž™–‘•˜– –’Œ›——œ—˜™•–•–——›œ£ Ž™—”— –˜™•—š“”’—™™–•š–Œ™š–¬˜Šœ›•žš—–’”•››ž£–‰™•–—‰Ÿšš™—™šš–™˜•–™š’—–¢®—‰——‘𛉗––˜“˜– œš¡ž—˜›––›š’™—™—šœš–’¡™Š—”‘–™›ž™–‘š˜”š—›ššž‡–˜˜•“¦”˜š“¬˜œ–——š›™¡—›—™™œ•—““š•™™š˜˜—˜Ž¡—¡’—“™“ž—‘”–™›¡˜ž“™‘–©¡œ˜˜¡žž›–¡˜™›š—’šž˜š‰‹˜“†„Ÿ›–“˜——˜™™{—š˜˜˜¦ž•“™—˜˜‘•˜›’˜™šž—–•£•§– ‘›–Œœ˜›—›–—Ž—•—”™¡–™˜•–––¥•’˜™—™”˜˜•–œ—˜¨—Ž™œ¡˜••‘–˜š›‘•˜Œšœ¢’’™•™’›”™”Œ”—– ˜——š˜œ–—ˆ––™—•œ¦‘“›™—•™š•™•—Ž–—’™†”•œŒ“œ™ž˜™™”˜‘”“•˜–ž™™›˜’ŸŽ“š™›–”—š“–šœ˜œœ‘„£{—˜ž—™˜Ÿœ¤˜™”Ž Ÿžš™—•›œ—˜—•š™—˜ —Ÿ —›ž™–…¡ˆ˜“˜”•Ÿ™›••˜˜—• ›ŸŠª˜£——˜’œ—Ž’”˜¦¡“ž”˜šš˜™ž•”—•Ž——¢“š™™”™¢ž˜–˜›˜¡ˆ’”—˜—š–Šœ˜™•¡ˆ–›ž—˜“˜œ˜¢¤£•™˜’–››—šœ”’”‘”‘‹•šš˜›Ž›—”‘˜“š™”–—™“›’•“˜¥™ž–˜˜Ÿ—›“¢˜’•––—˜¢˜š”Ž ”¥–“œ¡©–š“Ž€£–›–”•œ’—••›•˜“£ž–˜œ™““™—Ž—˜›˜•’™’—™•—–›•˜“™œ”™™š›”œŸ˜•¢™™– —¥‘—”˜œ“œ”œ˜˜‘’–˜“ —˜‘—˜’–˜™—ŸšŽ––˜šŒ™‰“›—š‘‘ ”›˜ž–‘ž“™™Œ—›•—£œ¤˜›™š™’™–‡¡”—“™š•†•—–‘“™””—š–•˜œš—š›žš”•‘›••™ŽŸ’˜—•˜›˜•™šš—™—ž¥‘ ˜™› ™™™Ÿœœ——¢•ª›—™š–š —•”–šš™™š˜›‘˜”—™™•œššœ™›˜š–š˜”™’“™—š––––“š—“•˜š“™¦™˜™©˜˜•‘–•—­˜’—£œ™€˜ —“˜›˜’œ—œ˜–™•˜›œŸ•–’™©ž§—˜•Ž—–’‰››–—–¢”š•Ž‰™’–œ–“—‘˜’˜ž ”—™Š•š–š¬š—–› ˜’Ž˜•–’›šœ™—˜‘¥––£—–™¡–˜•–•“™š™™˜Ÿ›™ —’š™—¢–ž›“¢™“’–šˆ–›—˜œž š›™›—›’›š‘–œ˜–‘œ•šœ”—–•˜š——–›—˜—–š”•”ššš˜Ÿœ–ž™ –™››œ™‘”˜š™—˜›—–”™š›‘›Ž•˜’˜“™•“˜’—’—–””––šš›š˜•š ••šœ—š—”–™žœš”š–Ÿ–’œ—™—•ž–œš“›œ˜š™˜™‘™™œ–™—•z— œ•˜Ž›¡›˜™•šž™—–™”›—›™™˜›š——˜ž“––š™“š””¥œ—–˜‘˜˜–—•››••–™–œœ˜™—‘–™››™›•—ž–’œ—–š—š™œ••’š˜™–™Ÿ––™Ÿ•𦖛—•™–“–’˜›™—˜—–›–š‘—‘™–¢©™’—›•—™“—¨˜›˜š¥”–“™˜–‘””–Ÿ–”š–›™š˜˜›™™™œ•’™˜—–•š˜ ˜™œ‡–›“¡”¤—”—†—˜˜¡˜šŽ•œž—‡˜™ŸŠ—•˜˜——¤™“Œ˜–™–“Ÿ­Ÿƒ‹˜˜˜š™š˜›–•œ™—––œ›˜–¥——šœ˜–Ÿ˜ —š››” Žœ•’šœ™—“ž–—™›—’˜™—–œ—¦’››¡”œ˜ˆ™™™–˜˜˜œ”•›š•‹™˜› –‘•››—£•˜˜ž™—•—œ¢˜§›šš—˜’ž‹š˜™•¢£‘ž –›˜–›š—”‘™ž‰’›“œ™ ž™™ž•“ —›™Ÿ˜›•™˜œ’“š“—•”›œ—™–œ•œ“•¢™•——¡˜•”›™—š‘œ”žŸ…‘›—––˜Œ™“—œ–š‹›˜—˜—–——”›“•‡˜•—œ•‘š•–š’š˜ ¤–œš•–—˜“•——™˜•Š˜ŽŸ—›š —˜˜–ž“˜‹Ÿ‘‘œ”ž’—•”—”š›—œ—šŸš’“ ”™šœ–›˜‘™˜™‘›•–š—‘—Ž˜™™“”—“–›—’”›–˜–œš“–••§“™—•“’œ—™ •–”žž—–”—˜–’˜˜œ”’—œžš••—™ž–˜š™—–š™œ—˜–Š–—¢˜™¨—•—”•“ š™˜–š•—›“™™—˜–‚—”¦™‘›˜’‘—˜Š‘ž––››”””™˜”—Š”———Ž˜ž”˜Š—œšª–”«•ž“™š±–“š˜ –ˆ••˜–™š•›”¦–“œ•˜£Ÿ–Ÿ¡šŒš™”‰š–¡•––ž ›”˜¢›•¦ž—–Ÿ—™˜›˜š–¡˜¥–™‰˜˜™•Œ›“—œ˜— •–“™ž¡–š˜œš”––“—”—ŸŠ•––—•’•”Ž•––•˜—Œ¡š–“¡›“š˜—œ˜’›™Œš–ž•˜ —ž¡›—˜••”˜—–’Ššš˜š“›•–˜˜—…”›˜œ™——˜˜–—™™›’˜š–™•£–˜—˜š—”œ—™’—“˜™›”‰•—™›œ™¢›œ››“”š£‘˜”˜™”•™“£–——œ‘˜——›•ž„•Ÿ—¡˜——’£Šœ™—•””˜˜˜‰™š––—‘Ÿ‰“˜–•Ž•š”˜šš›•—••˜™‘Ž’••–—• š•¢“–š™š——£—¢¢ŽŽ¢Œ—“Ÿ“—˜˜—–œ§œ›••Чœ•Ÿ–ª™˜›Ž˜Œ™¤‹—•—š—–”–šš›••œ—’”˜š›—›¢™–—”–Ÿ“ššœ—š¡˜– •“‘˜š›–œ˜•™Ÿ—¢—”™š’“•¨™”šŽ—›˜™››œ’˜š˜š—˜—–œ¡ œ™—šš™˜‡™”ž˜˜‰˜’‘”’—š–˜•¦™¡šš„˜““”•¡¨™š’—œŽ˜™˜–Ž™˜—––ˆš˜¤™Ÿ™‹–Œœ•š”–˜–—›’—šœ—–’¡£›’¤—–™˜–šš”–›”š”—¡¡¡™™¢—™•™Ž’˜›“–’™œƒ”ž–›—›œœ•—˜š’žššš™˜™–©—˜•š˜˜—’™ššŒ™˜ Ÿ‘–¤——˜– Ÿ˜¡Š™—˜ Ž–•˜šš•”–——˜šš“¢—™”’–˜—”“˜œ –˜›”œ™™ œ¤•™™š™Ž˜’ž’‘˜—˜—™™œ“Œ˜˜™™š•————ž›•˜šœœœ¡¤—œ”˜›–­•¥™Ÿ›˜––˜—œ—«–¤–‘“•—œ‹’—’‘˜Ž”•¡—•šž–›’˜”¤¡–—ª–“‘”˜—••¡—˜•¢—”›–™’™›‹“¡˜™—’˜“˜Ÿ—›™¥š™•šŒ”˜—žŽ“šš¥™˜—ª“—–˜•—Š—•œ”œ•—›Ÿ—™›—”‹—™˜›ž•”Ÿ˜œž—“—›ž˜›š•š–ž˜™•‘›™’–™™š‡—¤›—–›šœž”“™™–”““Ÿ”‘œ•Ÿ¡˜”“—™£š™œ—œ•š•—˜šœ¤–˜—•˜”˜––£˜–˜Œ——œ¢”—™ž”˜–œ˜•™Ž™–¢—–™’š™™—’—–—•”—¡˜’›‹ƒ—Ž›šœ™“š‚™˜Š–—™–š™”–™ž– –™›ž”Ÿ›¢¢ž•¦–™“Ž›™˜‘œš—–Ÿ’Ÿ§™‰—“œ————–“–š‘˜ —™–“˜˜Ÿ—Ÿ—“Š•”š•›žŽ˜‘•šš”¡˜œ–’‘¨—£šœš›˜‹™–˜“‘–œ‘“’——˜‘š Ÿ“Ÿ˜œ–œ˜—š˜’Œ‘™—™Š–›”–™˜¢—–žšš’Š˜–’š™™¡“’•Ž¥˜ž—– •™•”—‘——œ˜›™š™‘ž“”™–——š˜–˜—”˜™•“•š—˜œ’–——𛢙”™•ƒšŸžšŸ•™˜™›˜œ˜””¡™–”“ž˜ ‘𥔓“™ŸŸ––—œ–™’––’ŠŽ¦— —˜“™˜–§›—™˜—š™››Œ˜ˆ˜œ––š…™ž—“”š—™‘•™”œ—– ¢™•”‹——Œ«˜“š˜™š¤•‘£‹™•š–™“š˜”š —”’š’™™•˜”¥Ÿ˜ “Œ“¡Ÿ–‘‘ž–™•—žššš–ž›¦œ“‘•’”™‹—›”›˜•œ™œ”—™ †¡Ÿ˜”™™Ÿ˜˜š˜œ›•–——¢–‘™–”’›šžž’——•–“§˜™š‘“šš“—š–••—‘™—™—™œ˜’Œ’”Ÿ™•–––œœ™——‘“•–™˜˜™œš––¢–œ›•™ž™š–™ƒ•”—¡›œ–”™˜——˜˜—Ÿ£–—˜™–¢™š™——”›—™ž™Ž—œ™š£¡™Ž˜–˜–“›š———“œ“—•‰›š˜›™™“¡–¦–š˜¡š—˜–˜›•››˜–•“˜š¨¢˜˜¢—•œ—¡ž™™‘ž”–Ÿ–•œœ”œ™˜‘”˜Œ›˜›”œš—Ÿœ˜šŽ˜šš˜•“𙑗—––£’••••™—•Ÿ ™“ž—œ•›š§˜—š˜—“–›¥œ—™›™™‘•–›•˜‘——Ÿ—Ÿ’”“š—ž™—–”˜–—–“™•š˜¨–•–Ÿ—•™—œ—•–™œ“Žš“˜š›ŽŸ™•˜”—”˜›£™˜–“Ÿ™‹’›¡•‘™ž™›šš™•›¡”•™‘›œ›š§™™–”‘—”™”•”œŽ–›—˜›œ—š–œ–š˜—›˜–žšŒ”™–›ž’›™’™š¢Ÿ—ޕ𗗙—ž›š—®•šš—˜˜”˜š›—˜šŸ–——•›œ—˜šŽ›ž——˜”‘¢šœ”“€š—“–™™”—–•’––’’š™•‘š›˜ –—š˜˜š˜™•£Ÿ”¢˜š˜Ÿ ™™™˜—•°›š–’›—’’•š‘—™’˜–—ž š—˜—š“™™¡•ž—–››”“˜Ÿ––Ž–ˆ•’’™š˜œš••–—ž–”•—œ”˜˜–’” —™—––ž–“š˜¡‘—”š”š–œ˜˜—˜šŽ¡–¨š•š—œ’–’“•™“ž—šžŽ”š™™š’œ–’–•˜œ—¢¢”š•——£›“–—™š¤§šŒ™”–•”Žš™‘”šž˜Ž™–š•–ž•–›••Ž¡“—œ˜ž˜–ššœ™›˜™š˜š›–š’”—”¤™˜š‘« ••—˜˜•™šœ—ˆ—“™•ž’–›¤›š”›™Ÿ™š•žžšœ•™š”–œ•›•›”˜•—š””Ÿ˜˜•šš—š–“Ž•¡š–™–˜¡–ž™š’˜¢ž–“”™š˜˜™˜š›™˜ ˜š—™ž˜šœ•—œœ˜š˜™˜”¡–š˜ˆ™”˜—ž›”™£Ž“Œ—•˜™™”•• ›’’•‹Ÿ™œ ›˜§š˜š›–——“›””›Ÿœ—‘‰ž—•¬š”š—˜›˜——˜—ˆžš›£—£˜›œ™–¤˜šš•“’™•š§ž¤ž˜—–‘›“˜•‰—––“™œ—˜ˆ˜Œ’—›””š—šš›–›–”™Ÿ•š™œ’œh–¯–Ÿ“š—˜°¢–ž•š‘“™”Ÿ˜—”›’™œ”ž”–˜——”œ•™š”œœ‰š““˜˜˜—“”Ÿ˜•––™œ–”“”–”ž–•—ž‡—”Œ‘‘—œ‘˜™–u”šž¡š•”›ž–©¡•™““‘™˜›–œ—œ›—‘˜“”œ’—˜–’“–—š¢–ššž•–˜•—‘–˜žš˜œz–‘”•›Ÿ¡œ– ––‘™›Žª£“nž”™œ–•›œŽ‹—œššŽ¤˜Œ˜™——–”Ÿ˜š—“™›˜‘™š˜œ™ž™¢•”š–ž›š‘•“šš™˜—›””›—”–’––˜•™¡•˜—››’——˜™–°•š“–™˜——™¤˜˜˜‘›™™™¡•˜Ÿ˜“š“š¢˜ž©˜™–˜›–š”Ÿ˜ ™›–”˜šœ˜š”›™•™—”™Š™˜–¢™œ––”™š—–›’‘ˆ—˜—˜”š•—˜˜“™•˜˜™•—””­˜™”› ™ —™Ž’•‘™œ’˜–—Š‘••’™—•˜”˜• šŸš˜•”ˆ– ••šŽ™”Ÿ–œ—ž’¡™Ÿ”›™™™—œ˜–š••———š”§›–šŸ˜™—œ˜¢£¡—™›Ÿ˜•——˜–”•—œššœ›˜—” ¥™™˜—™œ˜ŸŸ†•™“˜šž–—›¥”¢›š˜Ž—˜œ•™Š›–™™›•˜˜™Ž’•–•™˜˜š›™–˜˜“—¤Ž—˜–¤˜˜™™ž˜š›™ª“”™ š™œ˜”œ™†•™™—•š –ž”—§Šª”žš–˜šš¡˜™–®›™š–˜–›Ÿ¦£›§”˜˜š••–”™’–‡Ÿ£–—†›˜—˜•›–™“™–™—–––“œš•“—’’“––™˜—›ž™œ—–Œ£§’ž˜´˜šš˜™—”˜”–œ“––šŸ•—––™•œ•ž›Ÿ–›š”™š¢•–—Ž˜——–—¥˜‰—˜”—˜˜™›–¡––•˜“–œ–”’—Šš™––˜—•š—“—•œ™•ŒŸšš–—˜”š˜–™˜•Œš–›ž”˜‹••™¤–¡•š’• ’š‘˜§™ž–˜¢‘•—–™Š¡œ˜œ—˜¡———”—’¦™”Ž˜˜œ—˜˜–“—™›™™—•š¢š•œ˜¡™•™˜˜š•“Ÿ›šœœœœŸ˜™–——Œ‘ªœ——‰˜˜œŒ—˜š•”˜– ’•—ž›––™–šœžŸ—˜•™Ž‰˜¢›˜”‘™œ¦˜—˜™¥“—›š›š™˜“œ››˜–Ÿ“”——–˜’˜  š˜š›–œš•ž”“›Ÿ˜—Šžš——›œ™š˜–›£ššŸ›’• ”›”œŽ˜¡”—™–””—››˜——•–•—ž¡”—š—™”™™•Žž–˜”¨¤œ“•Ÿ™–™—•’˜•– £‘œ˜˜›––œ•‘—˜œ —”œ—œ•˜š—›˜˜›˜™žžœ™˜š¡™— ‘™––˜œŸ™‘ž œ‘¤—˜—˜•˜™›†šœ›Ÿ¢—§¡šœ‡˜˜—ž™˜—¡™š›˜•œž•“˜‹š˜•œ›“™›™›˜”›•”—“Ÿ——’¢š–¡˜Ž›œ™›—œŽ–Œ—¡““ž—‘žš˜ž‰œ––“™›Ÿ˜—™•™˜œ˜–•˜‚…˜Šš•¡ ‡š–™˜—™—˜œš™˜˜œ˜™§”žœž™˜”–Ž–—–’•œ•–—™—–›˜™—–˜š™—˜•œ•Ÿ•˜ž˜œ¢š–¡˜— ˜”–‘—žš™‰›˜“˜•†˜ŽššŸ•Ÿ›˜“™›¦˜–¢˜œ–“›†ƒŸ‘¥–—”••˜—–™œ™˜–™­Œ€¤šŽ–£˜›˜Ÿ—¡———™–‰Š¢š•œ™˜˜žœ˜—–Ž•—Ÿƒ™’™–™’¤’¡™Ÿ—˜‘Ÿ˜—˜˜—™•——œ›—£š–“™‘¦˜Ž—˜‘˜—¥“—š“š›•œ’˜—””š–›”•˜“¥™˜’ž™¢š– š™˜—˜™¨š™¤–“——™œ£•“›š—¢™—™¥˜——”ž›’™—•šŸšž“™™”–šŸ›Ÿ•”™”•‘——˜œ˜š¢•˜—¡•£™œ™’›™‹””˜žš™˜Š‘—•™˜˜“ˆ˜››˜—¥˜™”––‘™œ–’‘‘˜ž––˜–˜ŒŒ˜™—“–š——œš–—““˜‘”‘˜Œ˜˜’˜žŽ—š¦—ž™–‘˜—ž‘• “•–šš˜™—‘›Ž•›—™šœœ—–Œ±šž’‘˜›–›˜—›˜–š˜–Ž’››–™’œŽ—›š›žœœ™–š–™”œ™—’Ÿ––˜™ ˜˜—˜—•Ž™˜™’—™”“©™ˆ›”—œŸ›š›˜”›£—•‘™•‘–˜”–—¤—®˜‡––›˜–‘•™—œš——˜˜˜˜–˜œ—˜š–•‘—¢œ•”Ž“Œ›˜™›–Œ™’–£”˜‘®˜ œ¤—•˜–”•—Ž”œ’•˜’––™¥—”¤•ž•““‘š”–—”šš–•‹›¤˜¨ž–š›”’š–“˜‹Ÿ’˜–°„© —˜“–”–šž——šš–™ŸŸ™—•”™–‘ž˜–—“—š•™—–™”—‘•– †•–••‘’–™œ’’”——˜›“™™–š™˜–“••‹ œ“•˜š”–—‘œ—›šš•——›”˜›–˜–””¡Ÿ––›˜™œ”˜–—œ“–˜ž—•–™ —››’˜™•ž”—™–šœ“–“–—––œ•–˜•–›‘—˜”˜˜ ›Œœ™˜ž—›’™•–˜“’‘–‘Ÿ•˜›–—–—œ’™••—œ”“––˜˜œ–“›”™šœ“”––—™Ÿ˜™™‘›œ““•“’”’•œ¢™’›–œ˜˜“™Ÿ™œšš“™–—›š”“–™›œ’–™š––‘™‘šœ™–š›––˜—Ž™–’™ž—™•š™ž›‹œ•—œ˜˜š—˜•šš”Ÿ’“—˜šš––š‘•”˜™—š™ž“™–”›˜–™–—ž›™—Ž•›’˜–œ•—˜—œ—›™›—“˜š˜˜•™™›˜™—™’“œ˜—š—Ÿš™›™™—•—––˜˜˜š™”›™‘™˜˜š˜••˜ ‘•—˜˜™”™–Œ›“—˜š—–•—˜˜–›‘žž—’———–•š—”—›“˜™œ——™™—ž™˜“•™•žœ’––—–˜™–——œš—™šš™•š˜š›”–œ–˜––šš“”•——’ –ž˜›™š—œ”“™˜˜”——˜‘–›™˜•›•𔕔•œ—–˜•™—•˜š›—––‘•”š—¡š—”ž™”š™’œ—“•——˜•›˜˜•œ—˜˜’Ÿ–š™˜›˜ ™™˜š– ˜œœ™š›“™šŸšŒŸ—Ÿ˜—•—œ——Ÿ˜“–™™™— ›œ˜šŸ•™•–’™—•˜˜™›—š•˜•–—›”›˜™™‘–•“Ÿ•žš˜“˜–˜˜™™ ˜––™’•žš˜•œ’œžš•š™™—š—˜—™—’——˜›š•š™›š˜ •œ•š–˜›˜•š”™›–œ˜—™˜ ››”™—™•ž˜™Ÿ–š¢œ›—››—•¤——’—š‹Ÿ“™•’•–›››š”›œ™™˜œ§—–˜œ—™˜™™œ–š–“˜—”˜¦š–›–•‡„™¦š˜–š’›™˜š—–—–•—›š—–”˜š•™›—•——™–š˜˜–•˜˜Ž—–˜™œ–•–•œ˜›•™˜™–™˜š˜™š—™™š™¡™—››˜–™š˜–˜˜˜›œ›š˜Ÿœ’™—”™™“•™•™›˜•™™™˜—›—”˜›š•—–œ˜›™™™—œ—˜œ˜˜˜”š’—œœ™—–—š—››œ™—–———“–˜š—“–œ•™–˜—™˜˜“˜›–˜“”˜•›—š‘“•š˜š™˜š•œ›˜š•›™š˜–’›™—˜”–›™—————–——–—™™š—“œš˜••’˜˜šš•™––š™›˜˜—–›“š––˜–™›˜šš–˜™›˜–•™šž“™˜˜›”˜–˜˜–•—™˜˜™•˜—˜‘™›Ÿ–š™˜—š˜—˜——œš•˜˜”–˜–—– •œŸž—–›’–ž›—™™—™—™™™•š™—¡•–™˜—•”˜”™–šœ˜™’–•›œ˜˜Œ–—šž˜ž˜™•¤•™”˜–“—–—˜–•™˜£˜˜™™š˜—™’‘™——™œ”˜”—˜š—˜˜™˜—•˜—š “˜™£™›–“™™•“˜˜•œž˜ ”™Œ˜—ž™™š‘–——›˜™˜š›˜–˜’›•••››™•™–œ—”˜››—˜œ•˜—š—˜˜ ™–™£—˜—›œ”˜š”˜—™–—𛕖–•˜–™”˜”“š˜™™˜“–˜•™˜˜˜—™œ”˜–—œ–™™™™•™˜™™š–——™—˜–™–žš™”—›˜˜—˜—›˜–šš›˜™”œ—˜“ž™–˜”š™˜—™—˜–›˜›Ÿ›”“™˜™—šžš—˜›”˜ž—™›œ—›˜˜•š™™—‘œ—˜Ÿ˜™™˜—¡™œ•––”œ˜“–™˜—–™˜’˜˜—š˜˜’”›™–˜œ˜—•——•š››˜›’¡˜š——˜˜™œŸ—–Ÿ™˜˜›—˜š™•™———˜’—™˜›˜›™•––™™——™˜˜”¡˜“–˜•“—™”™œšžš——˜™š•˜›•––š™š›˜’—š™—™˜”™™˜š˜›—›–˜•™š˜•—œ“š˜™—š›Ÿ™™˜””šš—›œ˜˜œ™™žš›–š˜™•¡›Ÿ™˜—™š–˜š’—™˜œ˜•”“•›–—™•˜•—š˜—˜”›™“•™š–—›”˜›™››˜˜’šš—š—”———–—™™˜™———š–™Ÿ˜—˜˜•——˜œ˜——˜–™™——š™›šŸ›—˜š˜—• œ›—›–”–›–š•˜•››—˜˜š››™š–š˜››–šœ›˜Ž™™’œ’“˜œ˜•™˜˜—›“—˜œ›•™—–—˜š™–—•—˜™—›––›—š——”••šž“—ž¡ˆ™˜š–˜– –™›’‘––”„˜”›Ÿ˜’”–š”˜–¤™‰“›—’–œ˜•˜œ›ž«š——Ÿ‘…–‹’•’”›“—Ž™–ž˜“‘˜˜š”›’“—œš —’œ•“—Ÿœœ—“—•—˜•–““˜—››–›’˜’””™•Ÿ –“•œ›˜œ™—˜—‘””•–”™š“š—˜—š“Ž“™˜™••–š™–œ• š“’ž––—˜“™—–ž–––‘™–›œ—›”‘—Œ•ž•©–”œœ“‘Ž’©–‘Ÿ™›—‘˜›˜™“‘–•—–˜™š•š–œ™šž–˜–“—™š–“–š›Ž™š˜˜”–™•˜šš™–™™—š™š™›œ–š‘––—¢•™š—™œ–™”•”–—˜š˜™“—˜š“‘ž™š“›”˜—–—š“—š˜––••—›—”››˜—’——˜—˜””˜“›—˜š—‘”™¡˜–™˜—–•–—–—™—šœ˜’—˜š˜˜™œ™Ÿ™–£™™˜˜’–›™˜£š“ž–˜˜š›—˜˜œšš—–™ˆ˜ž–™Ÿ˜˜—™™––¦œ›–’™™– ˜™˜—”—˜•™•—™œ˜–—Ž™™›˜—–ž™™œ˜š’œ™œ—™™˜˜˜•š—” ”›–˜˜™——– —™›—–—–———œ™”‘˜œššœ™”˜’’“œ›˜•—š—™™•œ—œ™”’œ˜—¡–™–™™“–›˜“Ž•š—šœ–—›¡”žœœ˜—“•𛕒¤™——˜–˜œ“’“™–—‘˜™ ›•••——¡™™ ””š–˜š››”š™™“™‘———š—–œ“™“š™˜™žœ˜’—™˜“š˜¡›™›š•”•™—–•š—›”””“˜™˜–—𙢙˜–™‘˜”—”Ÿ“¡™—œš™’”š˜˜œ–œ˜˜•˜—Ž’—–˜–œšž›•šžš–š’”˜œ–“”™“˜˜™•—‘—œ–•˜˜¦š–——“™–—˜š–—˜—˜’›—œœ“¦”›™˜˜–˜–—™—œ˜˜œšš——™”››—•œž—šš’—›“—”———˜›˜¡œ—š–™œŸ™˜—™–—žš›˜›š˜—“–”™•˜Ÿ—™—‘Ÿ—šš–™˜˜Ÿ ¡˜˜›—“˜œ—™™š–˜™šž›–”™–Ž—š–š–‹™š˜™‘—•“˜”˜—š¡–•™•ŽŸš››™“˜‘”›‹—“•™™›—˜—˜“—š–š›‘™Ÿ›–˜šœ••š˜˜–€—˜“œ‘™–••š››‘˜’žœšœ ˜š•—˜š–“˜œš”—›——˜—›™Ÿ•”œ™•˜˜‘œš˜›š•œ˜’•’™“š”˜—š””–˜—™œŽ“œ™¢—•œ£œ–—•‘™˜˜–Œ–•™– ›‘šš˜–˜š˜–˜™ž••˜›œ”–™••œšžš•˜‘š”˜˜—š–——•š“™ŸŽ™š†œ˜›•™›˜–œ•”œ•˜“›—™ž›”–™‘–™™—”𙑗—ž˜˜˜™Œ –’›’‘•ž—”–‘˜™™ž›™š™•Ÿ˜˜™––™–›— —“—Ÿ›‘›–Ÿšš—•šœ™–—š–—˜š—›™“”œ”›”•——™› ™˜¢œ¡›˜˜–—“™”œ—˜ž•œ›šš›“••š•—–œ—›˜ššœ•™™–—”›˜˜šœœ‘Žš——–š—™•œ™˜•™——–—™—•™š›—˜–˜˜•–“——›šš–—š’™¡™‘—›–—˜¢œ˜•™šš˜“””–˜”›–’–™š˜š”•–›˜œ–™——ž–Žš›˜™“•™˜š•–˜—š”˜˜‡™”™›œ–—›ž—”š››•š˜™›—™›˜–Œ™™š˜––•—¢š’œ›•˜——˜˜•™œ––™˜œ‹—™‘˜š˜–›—˜š—ž———š—œš’–›˜™›˜˜’˜ ˜™•œ™–˜Ÿš–™Ž™š–™›Ÿ—“œ•™š–˜—˜–˜—™–— ›•Œ—œ˜š–’˜‘˜£˜˜—“›«’Ÿ˜—˜™š”›—˜—”—”—™—š——š˜•—™›˜™™¢šœœ–“˜•—•˜•––™˜˜—”–š—Ÿ›’”œ—˜–š™˜—˜——™˜”–›—˜–š™œš—™—––›–˜˜ž˜›•”œ—”ž•–’˜š–›˜–”–“˜š—–š“™”——™’™š˜˜”—–“—–”˜šž“šš˜’š•˜˜”—˜™˜—•™˜˜—œ˜š’Žœ’—™š–™ššœš—š—•‘•˜•“–”œ‘ž›– š–—˜—˜–˜“›¡‘™œž –˜™˜šš•˜–™– ™š™–™™•œ›˜•™™˜šž›™’”——˜™—™Ÿ•––”•———ž˜–™š˜œ——˜—›”™˜——›˜—œ˜˜•ž––”™——™™™™™–—–š˜˜” –šš˜˜˜ž™—œ™–˜—˜˜——›š›–˜—’˜›™™—”˜——™•š˜—”ž™ž“›™™–™–ž™™˜š“–˜šš—š™––™™˜˜—™œ£—–—™›—˜˜™›–’¤Ÿš›™œ˜–™š˜–—–˜˜™—˜™•“š• ”—”™—–—ž™•—™—™˜—’•Œ—˜—–˜˜•–™˜—•˜™¢–˜š›—™›•’››œ——š ˜“˜›–™™™•–š•Œ–™–—˜™”–›œ˜™˜˜–™˜ ˜—–œ¢—™œ—š˜›ž’™™›œ–—–š”–œ˜”˜™š•—š””—š—™–“˜˜š–š™˜’™•™–‘—˜›˜“™˜— ’™š•—™—›œ˜š™š–š›˜—˜™–˜”–™™•”›œ‘•™•˜˜›’’˜™”˜™“——›”š–š—›–—š••–˜––•›˜–™“‘–•—˜–’š—Ÿ–˜•š”– —›–˜œš“’˜˜™•™—–™™••š•–—™—˜—•›–˜——š—š”–˜—š˜˜–—š•˜˜’—œ—•—˜™™–™•—™˜–•“•–™•›”™•š–š’•——šš“››——•š’š›œ›™™™‘˜œ—˜•—œœš•”—“–˜˜¢š™˜œ™˜œ–•›•™ž–—™•™–˜ž––™™™”™š™š•š”–™”š˜™’—˜–•“‘–›™•–—”™•¡—–™—™”™—˜–š•——›–š›”–™žš™˜œ‘’˜–—š–•—”“ž™˜—–“˜š›”––—”–˜ž™—–•™—–™—”šš•™–—›”Ÿ•—˜œ™˜˜˜˜š•‘—™ž™™–˜–—•𙓙—›››š–˜˜›™™Ÿ“š—™”™”šœ––™›˜–¢˜“š“š—š™š¡›’™–•™•˜›–”›Ÿ™•˜–›˜œ™œ˜˜›˜—˜˜™š˜—š˜˜š••ž—•ž›—˜–•“’”•œš™š˜š›™˜œšššœ™™š™š›™œ–˜š—•—š™˜—•˜˜˜——–˜–”™—™–™™š—™™™™–——™”™—™™›—˜››˜—œ›•™™—š˜™–’˜”™—™›˜˜‘•›”™‘š›™šš™ž™œ–™›—˜—•š•™–’–——”—›˜—œ“œ˜žš•™”—•š™”–—˜•——›š˜—š—ž—˜—“›™– —˜™›™œ“™—˜™—–“”™“š—š™™˜——™”š™™”•—šš˜™”›–›™œ—”—š•››•™—˜”˜š˜–›š–›——–”™™˜—˜ œ–›–—•”˜™˜™›–˜—š˜–“–˜™—˜™˜˜˜•™–˜–’”š•˜••–———˜—––™›¢—™˜™˜“™—™•œ¡›”•™˜˜Ÿ—˜—•›˜˜–™›¡”™–—™••”“—šš˜“˜–šœœ–šš—˜š”—”˜™š’™žšš›˜—–™“˜™˜—™—š™˜—šœ–˜š–—™–™›˜˜˜˜š———š•––—š”˜œ™›˜œ–˜—œ™’—˜œ—›—š—‘š–•™‰—˜˜š–—™™˜›Œ™”˜™’——™“–—š›—œ—–—™˜Ÿ˜˜™™“—ž•— ›™›“–š’•ž•—™”™˜š”–šžš˜˜š—“–“—˜—™šš˜˜˜—™˜—˜š“˜›™˜”–”™›”—˜———›˜—˜˜—•™––˜žž™——™“›œœ™—˜˜•›šš™›”•™›˜™–™œ™˜™š™š ›•š˜–’“š“’–˜›™—š“š•™˜ ›”œ—˜–˜•–™˜˜—–™Ž–™—•—–’™–™ ›–˜›š›™˜˜˜›™˜˜–——™™š•——–™˜œ”–š™™™š—™œ™˜š—ž™•˜—šž˜—œœ—™š—ž˜˜“š˜———™ž˜—“”“šš›‘™˜—™š›—š—˜—”œ•—––š¢™˜˜œ”š™™—šš™™—“—’œ™œ˜—–— —–™˜•™—ššš–™›˜˜‘š “•›™š˜”™›š˜š—˜˜™™“——™—˜ —˜™˜™”ž›–˜—š›™œ›™——˜š™•˜œ•š—™™™–ž—“˜”—™–œ”™•—¡——“•™–ž˜˜—˜˜˜¡‘š–Ÿ ™©™”—™——––›”™•š—˜š”œ—•Œ”š—™™™—™Œ——’š–——˜—˜š“”“œ—–˜š˜—˜˜™’šŽ•˜•—ž¦—™šœ—˜šš˜—œ—˜˜˜š–™Ÿ“˜–œ˜–”‘›˜™—˜™™¡—™œš ¡š˜˜•›™””™˜šš™—™––—˜––š—š˜™— ž››“š›—˜“œœ—™—”–˜›—“›“”—–œš–š•”•˜•“••˜™•œ–›–’–¢Ÿ“—•“˜˜–šž—“›“’˜’š“™’–™Œ–¡“”——š™œ”››—™ž––•›’™“”››’™•—’š–˜—›Ÿ™¢™™–››š—“—š™š™‘™”–—–•œ˜˜™””—Ž•™••–š–˜–›••—¢™›œ›š›–™—œ ¡–’–ž˜•––’˜™’“”–™Œ˜œ“¡™—˜˜•™¢œŒž“–––—œ–›š‘™–•’—”•–›œ™š›Ÿž›——ž—šž•™˜˜š›š—™˜––‘ššš›˜—”š›—Ÿš™—™™˜™•𔕕”˜’œ˜–—˜œ–˜š•œ–˜–›•˜˜——•“•˜˜›—Ÿ›“™œ—”˜”––˜œ——•™–™–•œ™™—–——˜—–›¡•••šœ–•—•Ÿœ›—™™–š™˜›•˜—™›”™—™›™š—™š—–›—˜•‘•›—˜•–˜›—™•˜™˜“š•˜™˜˜š•––š™˜’›š™•’—›™™—•™™‘•–”™—‘–”˜•––”•–•——™”™œ˜š——˜“”•š˜Ÿœ™™›——•˜š–™•™•™šœ–™™œ–•›—˜˜—•™™ž™™šš•¤š—˜šš™š›˜˜—˜™“šœ˜š—“¡–“—–˜–¡‹™ž™–›™˜™”˜”›–š—”ššŸ –˜™™Ÿ£–—˜—––—›š•—˜•—š›–›•žš™˜–œ—™š™——™˜–—˜—“–˜œ——–™™£•˜“–š•œ—˜–—›œ™”‹™•™˜š™–š–š”š–—›—›“œ•›š˜šœ––›œ˜™––˜¦”˜š•——˜—–˜™—œ–‘š—™™—–˜–˜š•—˜—𙕛–•’™š“•—››–š˜–›–˜––•ššš›˜•“™ž——– ’˜——˜•˜˜ž—–‘ ˜–›—™’’—˜–š—™›—›——š˜–™˜˜› —œ—˜™——™šœ›Œ•——————™•—¡˜˜˜—˜—˜œ™˜™”–™•š—š››”–’š˜˜˜–˜“™——•Ÿ˜—˜“–”–›˜ž–—˜›’š–›™“–›™š™ž—š—™š›Œ—›š–—˜‘™—•˜›–š—•˜–—˜˜™™—š›˜››‘–™œ˜˜›˜˜—˜™›˜–— •–”–¡œ–”˜š˜š–š¡–›˜—”•š˜˜˜Ÿ”œ™š’œ’–›“™˜˜›•™™š›“•—›”œš˜™˜›——˜–——–——˜•˜˜›–•••›–š—–˜—››”™–“š˜›˜ •˜—–˜—–š™—›™˜™”—–˜—™—”˜–—š™–š–™™™•—•–”–˜š™›“™”˜˜–šœ—š—–˜›™–——šš™˜–˜—Ÿš˜˜–™–“•œž™––˜–¤’—š—œ™™”˜š›•š™”˜¡š™“˜˜‘š”šš˜™™˜š˜“›—–•˜™›™“š–——§š”˜œ™˜˜š—•𛕛˜™™™™–›”–“›—››™—¤™˜”›™››ž—••™™”™—’—Ž—™–•™™¤šœ——”•š‘–›––—œŒš˜™——™™’š–˜–—šž–›—Ÿž˜•—ž—›——˜—™–˜š¡”–œ˜˜˜˜“˜™—™šš”•˜˜›˜š˜—›š—–—“•—œ˜™œ’˜–•˜—”——˜–—™™™™•˜•–›’Ž™˜–™˜–”˜˜——˜˜›™™——™˜•••—™”•——“˜ššˆš–ž™•ž˜—š˜š™•›œ˜šž”˜›•‘˜™˜““—˜™–“–˜™–—–œ˜˜¡’™›˜œš™™—™——”—Ÿ–––˜˜›–™œž–˜™—”›•š™—˜˜˜“¢Ÿš£˜™š˜”š˜™–Ÿ—˜™¢œš–š–™–Žž••’”œ˜”–˜š™—™—™‘—–’’˜˜ššž™—•‘™–™——•™™š™–”™“”™“’˜•œ™˜˜››˜—™—–•œ—Ÿ›—˜™š›’–“Ÿ–ž›—–˜˜™“›™’™’˜–˜˜š¤••›ž——Ÿ˜–—™“““•—•™–•˜š‘˜’”–˜•—›™–—™–Ÿ™—›™•š’““œ™›•œ””•—š•”›•—›š›™——˜™Ž—––œš–”–ž–•”–™––”™š›”““•—•™—––Ÿ•’“•™–——“™›“ž›“›•–’›™™š••—™—™˜™™–•˜ž•—˜‘œ”–Ž–œ”š˜–˜œ™œ•˜‘¡˜—š–’Ÿ™—–™———“™——–—‘˜™›Ÿ™˜’”—™›•›š›¢›˜“š›™™——“—šœš˜œ—˜™˜›—™™ž™•–™œš˜›“›™™—”˜™—Ÿ–˜˜“š—š—˜”•™˜—›–—›–˜›•š™˜™›–š˜––˜ž—–˜–›••—™•–˜š™™–˜“™˜•”œ——™š—™˜›š˜˜š›š™—™˜—–˜™———”˜™–ššš’—œ–—–›œ––‘•™™™™Ÿ™›•˜š—š•˜•”—š—™“›š›—Ÿ˜—›—— •—‘™—•˜•“ž™“”—˜™””—–š›˜™š™˜““˜˜š—–™˜š————›–˜˜—–™˜šš˜•™–›—˜™™™™œ—˜–šš——›™•˜’š–•™•–™–—™žœ•––š˜›™œ›˜”—‹™˜•“›š–”–™™˜™™Ÿ—˜š˜„–œš’™•—œ˜™˜™–—™Š—˜˜›˜˜™••—™œ—˜—–™˜Ÿœ–”–—–ž™’žœŒ—˜—“™•˜–•›” —š™˜—˜¢ž‘—™—š˜š—™˜™™˜—–—š™™‘™ž’—˜–™™—’—››˜—š™™˜”˜›‘• ™œ™––š•˜š–š•™™˜”“–•—š’—˜˜”™—™š–˜‹Š™ž˜—š›š–—ž—–‘•˜˜–š–•—™š——–š™‘˜š™˜«œ˜—“˜”™™—–š•’™’”“˜šš’‘ž—šž•›˜™–™šš™–—™•–˜š™—–žš“šœ˜˜š—˜———™———–™˜™š–›™•”—˜——™˜™™›—œ”—”™˜—˜›™˜ž™˜™˜˜•––•›˜˜˜–•–—“š—›” ™šš–’™–š›™‘™—š•š™˜š•˜™•œ˜˜›—œ™–•˜•““–—›˜‘”–™™ž“™™”‘˜š˜œ˜‘˜–—š™“œœ™›™šŸ—”ž˜—™—‘™˜–š˜’™š’œ•”š™•˜–•—–™––šœ›—•—œ—˜–“š—™”™——šœ›”—›šœ™›“š™™–—–›™š™š™›˜•˜“––•—šœšš––™•ž™–˜š—›——™–›š•˜“••˜–˜Ÿ››—˜—”›™›“šš••—›–›•š•››š”™š›™•–™—–˜—šš™™•“—˜™œ“™™”œ•—š˜——™™˜”˜š››•˜˜”–—˜™—šš™”—™—š˜˜•—•—™•’œ—–šš››™–š—••˜—šŸ’š“—™™˜—•š›™š™˜™’””—’•–š“˜™›š™™—˜•›Ÿ—•šœ›˜–š˜“•™š›˜—˜˜™˜”•–š–š•–š™•ššœ—›—˜š™š™™—–™–˜–™•š›———›˜–›š”˜š›™œ—š›™—‘˜˜™™˜›——œšš™“š–™™•—–™”•™˜š—™š–’š–˜›™™š—˜“™˜——›™˜˜™™—˜š–˜˜š—™™—•™•˜˜—˜˜š™–”›œ™›––š”™˜–––—–˜–•“˜š•šœ–™•—–™—š˜—˜š‘˜—–˜–›—–˜˜”›™–™™™˜—•˜™™“—–—•™”“™–—˜•—š—™˜–˜š˜™—˜–•—™š˜•—›—›˜š˜—–™—š•—•šš–˜”—šœ™—™•˜••—–—˜˜™™š—𓖛𙛗–˜—™™—™—˜˜–›•˜•›˜š››—–™›—›™—™˜—–™™–—šœ™Žž—˜—•›—— –š›–›”“–šœš•ž—”˜–š—–™–š–’—š›™–™•–˜’”™™˜”¤–˜—™–šœ–”›™—•—™œ˜˜——”œ˜—•œ˜ž™’™˜™›‘™™––›–•—•Ÿ”š•˜–ž•š›˜œ—œ›™œš“•™‘š˜•˜”“œ——˜¤™›š˜›”™–—–—”š“™—–›™•™š–˜—˜•——𖗙𗖔𙙛œ—™–•˜˜———“™—˜—šš•“˜›š˜š˜›––Ÿ›”˜˜˜¤˜‘š–˜ž™”˜—–œ—˜˜›˜—”–™™˜–˜—™“œ™•™—–›——œ—š˜™—˜˜›—•—š™šœ˜™™—˜˜™š˜˜š™˜˜™˜š˜˜˜–˜˜š™˜™˜˜˜—˜˜—˜™š—š™œšš—™˜š™—™˜›˜———–š™—˜—˜•™———–™—š—–™š—˜˜™˜˜š—™——–›—š™˜—˜–˜–—˜•˜–——™˜˜—˜—™™—˜˜˜˜—˜š˜–š–˜—™˜——˜š™š™˜š˜—›–™›’—˜™˜œ™šš—˜š–™–™™—˜š™—•››˜š—˜™˜šš™—™œ˜›š—˜˜—™™š——•—™˜–›–˜™˜™•˜˜˜˜˜™˜–š—•—•˜–˜™”˜š—™˜˜˜˜—˜™˜™˜——˜™••™›™™˜—–‘𖗔𗕛—™œ—˜”˜–™•–”œ˜’›› ——”—™‘•››”—––™’š“–“œ›žš˜‘˜’’”•ž––˜’™“–”𣗛–™š˜•˜˜’–š—¡–™˜•˜š™™••“˜——˜§—š›—–•™˜šš–‘š™˜”˜œš˜˜”—šž˜–‘œ––ššœ˜“˜—˜™˜”›œ–•——™Ž–™—žš—˜–›•—š˜—˜š›˜˜ž•š˜™–—•˜ •›˜™š™–›¡˜˜›˜š’––£™›–’š˜—œ™”—š•”˜’“—œŸ˜¡ ™’–˜™˜’—–•••›“˜—œ•™—œ— ›™šœ›š—–•—™›š˜œ›š˜Ÿ••™™œš—›™›š–˜››™™›™šš˜—›™ž™—™—š˜š—š™–™ŸžŸ˜œœ”—˜š›—šœ˜™“œ•šš˜—˜š•’œŸ—™—˜ž•ššž—œš—ž˜”™˜—›˜œ›˜Ÿ™™˜’˜–•™š“™™—˜˜›šœ™‘š™–ž—šš›šš““™——•˜œš™•——œ˜–šž›––˜˜œ˜˜›˜Ÿ——š™–”–—œ–——–›š•”›™¢š–•—•—˜œ•™—™™–š—š™›‘™™™ž•›’—˜•˜•›—›—–™–œœš•˜Ÿ˜–››š——Œš•—–•›˜˜Ž›”˜š—š™™–•—𛕕–•–˜—˜–¡•›˜š—™•–š—™™––•š˜šš”–˜”˜—™Ÿš˜œ˜–™š––—•š›–——™——–™•—’š—˜–“˜“–•”—š›˜•˜’›™™™œ˜“••˜• ’•—›š˜••—™˜–’—–™–•š–’˜›—–”——™˜˜˜›––––™–—•šš–Ÿ•”š™˜™”š›———š’˜œ•”š”›˜–“™˜•˜––™›˜—šš™š—œ ˆ—˜˜‘™—𛕗 ›š˜–ž›™™˜˜•š™›˜—š›™š™š™›——–˜œ˜”š˜˜™›››—–™˜™œ˜—œ˜™–š—›—™žš—•™˜¤’”š–™–™š˜—–”™ •𖙥”˜™™“—œœš˜“™˜–”š•—š˜—–š–—š—š›–—“––šš–š‘š•’ž–ž•œž˜•—™–˜—–˜™ž––™˜“–”—œ˜›”œ™—––”œ—•“˜—œ˜˜˜—–“™•’œ—œ˜š—™–˜™š˜™™™™––—““——š˜™™—”˜˜›’–—›œ“•——•š—™“œ£™—”Ÿ˜™–š™–™œ–“——’˜™šš–”“š™–™›š—™˜“™™¢–‘š˜–˜˜—š˜–š˜“–˜—›˜˜˜–—˜’•™˜˜™š¢”›˜˜Ÿ•™˜›–˜Ÿ™››š˜˜•š••’˜˜•—’š•š–‘”š››œ—™“Ÿ™—––››žž—•™“’œ–››—“™˜•™–˜š”—™š˜—˜•œœ–™˜š——œ—™››š”–•›–—”–—šŸ—•™š˜–™›˜œ—•˜›–˜˜‘˜›™˜šœ–ž” •™š•š›˜–™—‘™˜——–š–™šš“›•”—š–™”—Ÿ˜›™››žŸœ˜—š•“Ÿ–š•˜”˜—𢕕ž˜š™‘ž–œ¡˜žš”›œ™”™˜™’—––‘›’›˜˜—š™•˜˜•—›“˜›˜–˜–—”Ÿ’—™˜™¤••—”š—˜š•—–š™›™——žš•Ž–›–œ“™–š—š—“—™˜•‘˜š—™š˜©•˜˜˜˜•œš–—˜—˜šŸ™™™˜˜š–™˜™”œš˜™•—–˜ ™œš—•˜––”›š˜”˜››œ˜“–˜–—œ–™›™”™˜‘˜˜–š–›”–‰™›™˜–š—™™˜–˜žž—˜˜œ˜—–‹•˜š˜˜•˜™œš›–•—˜˜••–š›™—™—–Ÿš¡—šž••Ž¢£š—•™–—™™—œ›–˜›•••œ•œ“Žœš™™—˜˜Žš™™— ˜™——–•™žš˜šœ–œš™¢›™™™›ž•“Ÿ’˜•˜•—”—œ˜‘—¥™•™——Ÿ–˜›——”–˜›™’¥•™™—žœ˜š•˜•›Ÿ˜˜“™›Œ“˜•˜¢–›™—˜™˜˜–š———›™–”—™ššŸ˜™™•˜˜•˜•›˜™—”–———ž—–—™š”™˜•˜— š™”žššœ–—š“–š——–—™—˜š™–”˜˜›˜•š’—š––˜˜–žšš—œ›˜™—–’–—”•š˜™š–šœ™“—˜•›—˜›•˜–—›––˜–›—ššššŽ—™˜–™™”—›™˜•œ—‘˜›”ž™–”–š—›—š›—›—•”œ›—˜š–—›œ••—œ—š”˜—ž›š™™˜šœ˜—•›š–š–š—––•”“œ———”•›Œž’š™š•™—›˜™œ™Ÿ—›™˜š˜›—š’—’˜š–”˜—’š•’—›˜š™™–——›–——˜—“š™›–˜˜—™šŽ™™š˜œ™œ˜––˜•›˜›•”•”•———–‘š˜—™šš–™™œ——š™œœ˜––š•—¤œ“˜™˜™—¡—”œ“™’—šš™–œ—–––•™™˜–˜—˜›—˜—šž”š––˜˜”˜•–˜¡—•œ”˜™Ÿš™š˜‘—Ž‘šž‘–šžŸ˜œ™˜—™š›—˜––˜›™—™šš˜—š—›“˜š–˜—•œ–Œ››”—œ™š‘š—š›™™–˜—˜˜Ÿ™—œ˜—›–œ——›–™–œ–›˜™—”˜—™˜—™”“š˜—Ÿ—“˜™™—•˜˜”š™———”™˜šŸ—›““”˜”š˜›™š’“—˜šŸš˜ž˜œ—£–˜——”•–™›–œ˜– ›š™–—œ˜—š’–˜•šœ›—–¡•–œ™’™š–—˜•˜—š—˜˜™—˜™–˜˜’˜ž˜ž—š™•˜”’™›™š˜”™——šš–˜—•ž–ž––˜Ÿ”™Ÿœ–”œ˜œ’™˜–—–˜———œ˜š˜–™—˜–•™š£–™”˜™“š“–˜›™›˜˜’—™•˜—˜˜—˜™—˜–™˜———˜™’˜˜—˜—˜—˜—˜˜™™–˜–˜š˜–™˜—™™˜˜˜˜——™œ–™™—˜–˜™—š——œš™—˜———™™—˜œš˜›˜˜—–—š˜™™”“˜—–™—™˜˜š—˜•–™˜—–˜›—˜•™˜™—˜––˜˜™——˜˜š›š˜–—˜™™—˜˜—˜™˜™™š˜˜™–—˜—˜™™™››™–™™š™˜š™——–˜š——˜š˜š–—ž—š—˜™œš˜™–™œ—š•˜˜———˜š˜šš˜˜–™’—™–—˜›˜™˜–—˜˜›œ™˜—™›—–™˜––™——˜–˜™–˜˜———˜——™——™™‘š™šš˜š“——™™–—™œ—˜™š˜™™–”“ššž––˜•“˜•š–˜ž˜™——‘™¨—–——”Œ•˜››™“˜•š˜™——™›˜˜—˜š™—”˜˜”•›—™˜•–—ž”—–—™™—‘——š–›–Šš—˜—š˜™–§˜–š›š——–––œ—š—™Œ–š™˜”–™˜˜––’››™š˜›™”˜–›š˜˜—˜™ œ™š™”——˜ –™™•›“–—— š–—˜–˜–˜š’™™˜“–˜”‘™ž™˜š˜›™™‘Ÿ——šš–™˜–š˜˜ž™–—šš‘ž˜—’˜š˜˜˜š—•–——˜–“™—–™™›–˜˜š›™—™™˜–š™˜———™–™™•–˜—šš——š—™˜——˜™˜™—š——˜˜™”¡––š—™–šš—›–˜––›˜œ–™—––™™˜š–˜˜™™˜œ¥—˜™—™›—š—–š˜˜›™Ÿ˜˜›™˜™˜˜˜˜˜—š˜—–š™—š˜——™—›–š˜›˜•–›–––˜˜œ˜–—•™—•˜–•”˜›•–˜œ™–˜––—™˜˜œ˜–Ÿ—šš›˜™–—››—–™˜—˜—•–˜˜——›™™›–šš”—š››—––šœ˜—š›—˜˜–™˜›•™˜šš—™—™š—–™™™œ™™˜•–——™–œ˜˜•š›™–—”™—’––œ˜˜šš—–˜—”—˜•“”——œ›˜›—˜™”•™™˜—™›•—š™˜“”››š–š–œ˜–Ÿ—–šš—›—˜—–š˜——–šžš–™š•˜™™œ˜™™”š™–›—™ž˜˜–——™—˜ ˜Ž—˜š—™˜šž™“•˜˜–— “—š£˜˜›˜•–™•”š›—•——˜˜Ÿ—–¡ œ™˜˜—›™”š››––™š˜—–˜›Š›–—›•™—š˜—˜—“’—šž–•™¤˜šžš—˜£”——–”–˜›Ÿœ›˜™˜š•™•š––—Ÿ›—–¥–—œ—˜•™œ”›š‘𔕗–˜™–™“”˜™˜™š——˜•™—––˜š—š››˜—™”–™—›”œ–˜™˜™˜˜—–•š•š–•šœ™”˜š–šœ—˜•šœ›™•ž“šœš–˜––˜˜”š›š˜›–‹•™–’˜––”™•š—•›™˜™›š™˜š˜–˜˜œš›—˜˜Ÿ–™’›˜›˜™˜™–›™”—š•˜™“–™•˜•›šš˜™š—–›“–˜–™—˜—™–™—”—Œ“›˜—“œŸ–š˜”–•™œ˜œš™š”š’—–—’˜˜˜–™˜œ—™––”œ•™—›œ›˜©™—œ••š—”™™š˜’ž—™™•œ—˜™——š——™œ—˜–™˜Ÿ—•œš˜–œ˜—”–˜˜—™š•—–™›™‘——•”œ—œ˜™™›•œœ“˜ž–”•—™•–˜—•–˜”™œš–‘œ˜œ—•—–”—”•š˜›”•š˜‘—”—š˜“™™œ•™•›”™˜—•——”–”–—–™“–ž—š—š–œ˜šš—–š™”›š™™˜™š™›—š››’™–—š™›˜“š’—•™š™˜–—˜—™›˜š™™–˜Ž™“•——™˜™”•––™™“˜˜—œ™—œš—™˜•–ž˜—•–˜šž™››š—–›™˜•™—•˜”œ””“™™•“˜™™’–šœ›—’•ž”——••›™–‘™”•’–™—–š—›—–—˜™˜™š˜•˜šš—™’˜—˜—œ–——˜•‘™’—›™š”™š”—“™™•™œ”—”˜–—˜œ—™•š”˜–™—™•—”™–˜–š—œ˜˜™™˜—Ÿ”–˜’™˜——•›š–—˜—›œ—––˜˜š˜›˜—˜š™™š•˜–š–’š•œ›š–•šœ˜›™šœš˜Ÿ—šš™›˜›œ”Š—•™™•š››œ•˜—˜™—–žš——š˜™˜˜™•›˜ ——˜™——˜˜“œ˜š•›žœ–™™›—˜™™’œ™—š™˜•™š—•œ˜—–š’”™˜•˜˜–™—˜—˜˜––•š–“š›—•š—•–˜˜šœ™”š˜•—™˜œ•š–š˜šš——˜—”•˜›™—™™˜™˜™——œ˜–š˜˜•–˜™™™›š˜–—™–˜˜›š–—›š›™—š—•›˜˜š—•—“——™—™”•”•–šœ•––˜›˜————›—™™™š–—™–˜™™š˜™——™š™™™—˜˜™ž—š™”žœ›™——œ•˜—œ™•š˜˜–™š•““—“˜—™›—Ÿ––”›”–’“𙓗—œ˜˜™’›˜•™œ˜™–™™•™—™™”˜œ››——”š˜–—™–—˜™”˜—˜–¡™——–˜–™”–™šœ–›œš˜–™˜™—•™Žšš›—•›™—œš™–˜•™˜——˜š›”•˜—™–•–—ž—¢š›˜—›–˜——–šš›˜™–—••—› ˜›—‘–›—˜™˜š™˜˜•———™šœ—˜š—œ˜›˜œ™š–™››˜‘•— ˜žš›”™˜—””’”š˜¡–˜˜——˜–™—˜•˜›¢š››˜—œœššš—Ž•—›˜—˜š™–šœ™˜–™š”›–‘—œ˜™™™™š—œ•š›š–“•””š™›’–™šœ™–𙕙˜£–˜œ›—™•Ÿ’”•˜™—–Ÿ˜™•™—™˜”–—™š˜’™˜“—››˜Ÿœ— —™ž•—––˜—”—”ž’š˜Ÿ›—Ÿ—œš“š–˜›•—•›š˜—–’š˜‘›“𛕠™š–š˜Ÿ™š™—–™ —™”˜™™˜š”–˜——•šš–’—•–•—•—š˜–™˜ž–”˜˜˜•–•ž›š–‘˜™””•“˜’•š–•šš–š™“š’‘˜—˜˜˜——¤š‘”˜™’™š˜–”–—’˜–›š™–˜”””——•”˜˜››”’˜˜–™”›—›—˜š˜•œœ™—˜‘š’–™˜Ž”—˜•£˜˜›•œ——›——™¡”š•œ”˜˜—–¢›–›—˜š–™——•–𙓔˜Ÿœ–¢›™Ž–œš™”“–—™™™—••—––œ“š˜œ™—˜‘–—•™˜–•™˜˜“™šœ˜›—˜”œ——›——š˜–“——š—™™š—˜”™•˜–—™›™˜›™™™’šš ›—”™–——˜–ž—–—˜‘——˜œ—š–˜’š–šŸ—šš™—”ššž˜ž–—œœ—”›œ—“™™•–™——›™––œ˜––˜–™™•–—˜•›š™–˜š—œ›•“–š™™—›—ž“œ“““˜™—˜›•›˜›™˜š—“•™–—šš˜›™™—”—šš—˜¥™šš—œ–š–—¦˜›™“š™™—š›—‘˜—•—™’œš”–™˜™‘”›šš“œ—˜™˜›–˜–˜–•—œ”˜”˜™œš––••œ™‘–˜™–š™’—™š—š™š”–’—˜˜–š˜˜™–›š”—™˜˜— ››œ›–˜˜—˜˜š›•˜››™š—›“ š•”™¢™š™˜–™•ž™˜™˜™–š–“••™–˜š—šž——™–– š–™•œ•– ——š•š™›š“›˜™˜š—šœš•™˜–˜“™—–œ–œœ•–—˜˜™œ™•˜—›  –˜™”–™š˜—–•“™™”—›“–•˜œ™™—›œ’˜˜™–—˜—™–››“›•–™’”˜˜—šš—™š—•Ÿ›’–—ž–œ˜—š˜“—•œ“™››–”—™—›Ÿš—•š— ˜š˜—š–š ™›™˜™™™™˜—Ÿ•–š–•’ž“˜™’˜˜•—”™š–—™—”••›˜”—›™—‘š˜•––™˜—™–š——•˜•“”›—›•–———•š˜˜–‹›œ“•”›˜—š–—¡›˜˜œ¥œ–“–ž—“•™Ÿš˜™›”£–—’˜•ž™ššš™™˜’–Ÿš›™–—›˜˜˜œ˜™—™˜™›—𓛛𙖛œ— ™š›”––˜ž˜š™›–‹™˜—œ˜—™Ž–›Ÿ•š›•š’’˜——“–˜šŸ—–—––˜———”žš˜œ›˜“™™š–™—˜™™šŸ––™—¤‘——–—”——‘›™™˜›šŸ—™›š˜šŸ˜œš˜Ÿ—–™˜”œž•™™˜˜“™œš—•˜œ—š™›˜™–˜›š›Ÿ“™•š–’›—š™™—”—•—•œ˜˜š™š˜’¢—’•›–˜˜ –—œ”£˜—•™™— —›——œž–—™–šœ—ž”—”‘™š–˜••˜—–™–––™š–™œœ•ž˜™˜›“–––š—–™˜–’™œ•›˜“”–›”œ—•¡–˜™›“š•”“–š›˜–”œ¡˜–™›˜˜˜—˜œ›—“˜Ÿ”––—””˜žš™•™˜ –—˜‘——Ÿ˜—™“š˜“˜˜”•˜™š—›ž˜˜›šœ™™™––›™™•”•˜˜‡š•œœ™˜•šŸ–˜š˜“™š›•¡˜—›“•–œ˜™—˜“•—™™ž™”—›ž–”š ™š—•–•—š˜’–œ™••—•ž•’˜›™–›•—›š™š£œ˜–™”š•š™Ÿ•œ•–“¡––¢”˜™˜•–“šš–˜•”š——™”›——˜—š›› œ›š™——˜”“œ˜–š—˜––™•š–––™ššœ¤š˜™™–˜›š™—˜–—’•›šœœ˜”“™•—ž˜›™—–™˜š‘—–•˜—˜•˜™”™›—™—’›–š—˜›˜˜šœ˜—˜™˜œ””™žš˜•˜™š•‘—›—™’œš™”˜›——•š”™•———™–™—–›—™˜™¡˜–™œ˜—™”›œ˜––™—› •™œ—™™–—š••——ž™–—˜—–—˜˜—–™™—˜˜––œ™œœ˜•—”š˜œœ˜˜š•–”˜—•™•Œ“¡”–˜˜—£›˜šš—˜™˜—”˜›–™››˜š˜™–šš› ••˜–•——›–––š™™–™›‘’’œ¡˜šš™•˜™”–˜“˜Š˜™—™œ˜š¡”ššž”–˜‘ž—›˜š˜›™›š“—šš–˜”˜˜˜˜–’˜˜™•™——”™“–™œž˜šš›œ“˜˜—–š˜›—–š™›œ•—‹›‘•–˜›˜›˜›š—œ˜—š– š—˜š’—”™œš˜š”—™”ž”š›š›™œ›š—˜•™’™˜•’’™šš˜•™›˜˜™—˜˜š››•˜˜››˜ ™•›˜—˜˜™›¢”–›š—™–—–’“–š’š‘Ÿ–›š˜š–š˜˜šš––œ›–™š•”––—”˜š——™’™——–™˜—›”—”˜ž””˜—š˜ššœ——˜Ÿ’—››—œ—ž—˜š“˜›–š——’—’•Ÿ—š˜™š˜™Ÿ—™—–œ™ ›››”œ•–œ™š™š™œ˜˜••™˜œ–š—›™£š˜”•š™’›™›—””’˜–›™š•™œš•™š—˜—˜—™˜—›–›”™˜—••“›‘‘–š—š›š••–”™™“˜˜–™š˜•™—™”•œ˜™”˜“˜™••œ˜–’‘˜•˜™’——––˜’––“™˜ ž™—˜””™— ›››˜™–˜”•––—›˜›™—™—“’›š›™–™—”—›‘•˜˜˜œ›“—“™š•œ•™š™•ž–˜••œ—š—šœœ›˜“›™˜™›œžš˜ž—˜™•š—š˜˜™–”—š•›œ—–žš˜”š’•˜’œœ™š•’™–•‘—”š˜™–”˜“——¢™˜—™š•–™’™š˜š˜œ–—˜—“˜™›šš›˜˜¢”™—Ÿ ¡–—›š™›£™œ‘˜“’•”›—˜–›”˜••™–— žš•˜””—šœŽ—š¢š¤¦žœž–Ž–˜–˜•››˜’““—œœ–›–†˜”šœ–•—™–˜–¤—œ•˜—’˜™–“•š“˜™”š˜ž”– •™“˜™™˜›œ¡š–™˜‘›•—œ™–“”•›—šŸŽ—ž•“™š—•œ”—•”›™š˜™™˜˜—œ””‘˜”›—™›—˜•’›“˜›—– œˆ›“”›•¤–”˜•š•˜š•¡ž“™›š¢™˜š™—™˜šž–œ–šŸ•šš˜“——•˜š—š› ž–ššž™›–š˜œŸœ™›’•™”———˜—•›™˜ž˜ž˜”™Œ“™–˜˜—‘˜™™–š˜”˜˜™™•™™’‘œ™¡˜’˜™”››”–˜˜–—™•˜š—˜›š–—•—˜™–˜˜‘™—”“˜œ“š˜˜ž——••šš—š¬––•™™—”™”—›š—˜˜•›‹š˜— —”•—˜›˜›šš•™˜˜š™š—™ž••–™šš•–’˜™›™•——œ”™—›–––™–œ•›—š’–˜–œŸ—™•œ•˜•œ˜™œ™šœ”›–˜——™Œ˜˜™–™™˜——•˜™£™——›š˜Œ’—“œ˜”™˜™—™—š˜ž›”œ™™˜› ™–š›•˜œ’™›™šš—–™”–•š”›•›“˜››˜——™’—˜‘™˜˜•“˜šš™––’•š™››™””—”–—›—–™˜”›˜š••——”—“ •˜™˜˜š‘˜Ÿ™˜—”–¢–›™¡–š”›˜•˜’š”›—™—˜—–”—š˜—šœ”’™—›š—š—˜“™š“•••”——–—˜——š—“•—•˜™š—•—–š›—•™™˜››˜–•žš—“–œ™™˜™“”™”˜˜’”—”™œ™šš•™™™™•–™œ™•–›“——˜–šš–”–•““—™šŸš–˜˜š•—žš™—œ‘–œ””˜“—š——˜¤š˜’—”™‰˜˜—›––•˜›—˜’œ–’––’›–›š—š——›”—žš‘˜—™˜“‘•—žš—šœ’¢˜˜”šš•—›—•šŽ˜•›œš”’˜˜’—˜ž’˜ž•—— ”–“”™”™–—œ—›™™“›’™›—•—œ˜”š˜˜›š–••—Ÿ›˜š˜šœ—•——•œšž˜——–––œ›™•š˜™Ÿš‹—£’•™š™šš˜¥˜••–š™•œ˜Ÿ™œ˜–™›Ÿ”™›ž›š–‘¡˜™™——•ž˜•Ž–˜—œšš———™˜”˜”˜’—™–™œš—›”™˜•™™˜š•˜–˜œ––›š˜™šš˜™š—š™——™œ˜˜™˜˜›š—š™™š˜™—š“˜–™™—š™˜›š˜˜”—š›™›š™—œ˜–—›˜˜™™–˜˜–›šš——™˜™–™˜™™˜˜™—™‘”–—–˜˜™“˜™™——–™š˜—š˜˜——˜˜——™˜˜˜›–›™™š”™–˜™š˜™™•˜™———™˜—–™•ž›˜–˜˜œ–˜™˜œ™š—˜˜˜šš——š™š™˜—œœ˜š˜™˜š“˜—š˜šš———–›š˜——˜š˜–—™—–—˜œš—›˜™—˜›˜–˜—–œ›—˜—˜˜‘š™™–—™˜–™˜™—˜—™•š™–šš™——˜ž——–—™—‘›•™‘”–””——™˜›˜›™•—š–––• ‘Ÿ˜ššœœ˜š™•™™–˜˜›™•–”™›¡™š™•™š˜•”—œ˜——š™—‘—›˜™ž›—˜”™—“Ž”™œ˜˜”š˜—•š—˜œ˜—˜Ž—œ—™”›–Ÿ—–—–™•–žš•˜š—œ˜™›™•”––™—”––’˜—•–™œ—˜–š•œ–“˜™˜ ’˜ ‘ –’˜”–›™¨š”—–š˜”š–“œ˜•’˜˜‘œ—™–œš•˜ ˜™˜˜˜–›š››œ——𢙗———˜˜ž—•™™š•—–“–‹š¥•™”œ”˜š’›–™™“–š£—š•›•›š š˜•˜˜”—™”ž§›œœ–™žŸ›— ’•™“œ–š›– —–——™—œœœœ˜›—“”•’–”š•š——›š—–™™™˜“š–••——¡™˜•™Ž››––”“—Ÿ™ˆ”—”–™™š•œ˜š¡—œš™˜–›’š–›–›™––œž•–œ£œ™•–™–˜™˜“– ˜“™—˜™••••—— ——š˜–’Ÿ’™——›“–• ˜›—˜™¢™œ–™™—–™–‘˜’–”œ–¤”œœœ•˜›–’—‘••š”š–™™”™™”•Ÿ˜–›™“’ ‘–››—†˜™››œ™œ•››–™”–—›š˜—˜š™—œ˜“šœ˜‘Ž—›”—š››˜•›™™˜—›–—˜––™–¡—–“™–™›˜—™˜–˜šž˜–˜š˜˜–˜—››———š˜•˜Ÿ˜—›˜”š›˜•”˜—œ›——–š˜š–™š–•’˜—•˜‹›™ž¦—™™˜“•™–—™›™—–†“–—™£›˜™’˜˜š“–——“™š–˜˜•–’Œ™—˜›šš“”ž™– ™›–˜ž—™—šŸ—˜™¡Ž•–š••™Ÿ”–˜™š—š ž›™˜™”––š—˜™›‘•šš–§š–Š”™”˜¡šš–•›–——š”™˜˜ž—˜˜—–”—•š›’—˜–™˜™——™–˜™›š–˜›˜š–™š˜”—˜“——œ›˜›˜•“—–˜•˜™™š™˜™›’Ÿ™˜—•––—›˜–šš—•™”–˜˜™—•›˜™›šŽš™””™˜œ—œ“˜˜˜ž›š™š—šš”˜›˜™™—–šœ—”˜š˜““–›š ™˜–™–™•›š˜””š•˜š”œ—”š˜—š™—˜˜š˜™›˜‘›šš––š”—™˜•˜™’ž›•˜›œ——•—“˜—™š’™šœšš™•˜š˜”—˜˜”›—˜˜“–˜—¢••™”•›—šš™˜˜ž˜”š’“›“œ“ž™š——––”˜žš›™™›™™˜—˜™Ž™—›“™œ›™žš’—œŸ™š•”—–—˜™š•“˜———˜˜Ÿ———•›œ˜›Ž–ž˜–—›•Ÿ˜”——™œ”—•——–—˜™•–—” •š—˜“œ‘™™˜™—˜œš–•›––“’Œœ™›””š—–˜——–˜•—žŸšžœœ•š–—”›—œ™˜˜˜™˜––’˜•–š—ž—š”’Ž–œ”–™——•šž˜š˜•šŽ˜œŸš™˜™š£˜‘–”–—˜—•¨––š›™¡“”š¥˜–™“˜œ™—™———––’—›–™™—›”—œ˜™™’™”˜š˜”–—Ÿˆ›—˜–”–™•›†“™™—™˜˜ž—”––š‘˜š”‘–š˜ž‘˜—›™˜š–˜˜–‘•–™œ–™–ššŸ” —›šž˜™‘——””•š–•›š˜˜™™˜˜˜—••š—˜““™‘š——š›”’–š–œ™œ—˜–™•’’“˜˜–—–œš–˜—”š—›•™•š•š˜˜—¢™˜–™––‘–˜–’–˜˜š——›šœ••™–—™–ž˜•›˜—™™•š”š›š”“™—šš“•••—Ž••—œ˜•š””™š˜˜œ–‘’™œ›™™™™—‘‘”–•›•œš“™•š™“˜š“™—˜••“˜™œœ•™Ÿš˜™’˜œ˜š—™› –š•–›œ›˜—™—›“••œ˜““—š——™”˜›˜•˜—•Œ˜™“–¡”•™—™–•£˜™›–—ž———–“—’•–›—““—‘—––˜™–“–•˜–“Ÿ™œ—˜š’“œ™—š’Ÿ˜•–˜—›žš˜›™—–˜™•™š–™™œ›•š™›œ¢—”˜—–™˜”•š™™›œ™˜šš—–—˜“– ˜—˜˜žœš™›•™›‘›Ÿš£–™£—–’Œš•šš”™”Ÿš˜™”“™Ÿ˜˜˜“•š“¢ “—–™™™—–”š¢š˜›•—’—–œš––—˜”—•™˜––˜›–š”—œŸš•Ÿ™£Šœ—–’˜——Ÿš š˜œ—˜ —Š——š”—š—š•–˜¢››™—š”—š›”ž•–”›˜¡œš™›Ÿ–‹“–›šš”˜–™’’™–””š™ƒ—”š ˜œ–›˜¢¡œ™—”™™˜‘••˜—ž–˜œ¡”™™—™Ž”Ž–Ÿ–”™–œš—š ¡™—›–š”’•ž™•–š™›œŸœ˜Ž–›‘™”—šŸ˜š—˜Žš™™Ÿ•™Ž– ›–•™œžš”—•‘–—™˜£˜‘›˜“˜¥šž™§¡”˜–”š•Œ¡˜›•››¡—˜–—“•š—‘”“››˜š••™›˜“š—–œš––ž›™‘•—•š™–•š’“—˜—–”šššŸ–—›˜•œ˜•—™––•™š›—–™š™š˜™˜–™–™˜—›™•™™—“•—”˜••—“˜–•˜—œš˜š—“žœ––•˜•™”œ–—™œ›–’–“˜–˜™—™–—˜—žš–—˜—™—›––—“–™•š›”™”››——’™–œ•™š›’š–”ž¡“•”––˜˜›’¡•—˜—›••¡”ޔ𕗓–›–••™”–—•—•™–˜—˜˜–ž––—’œ™–™˜––œ–˜—™—“—“›Œ˜ž•š“™š“—“›––™“•™•””™™ž™šš™—š™—•œ›˜˜šŸ˜œ›œœ•—™˜ ˜—–‘•šŸ˜—š™”œ–œ™š›—˜•“˜•š“œ—•’’”˜•–œ—’¤—™–š’–œ”•––—Ÿšž–”š”š›™”š™—œ›š›˜”•–’–—˜˜—™””˜—”””šš˜™™”–˜˜–•œ˜™œ™—•˜’”’š˜–š™‘™˜˜˜š˜–—•š–––œ”›—––˜™–›•š˜Ÿ•™›–—™œš˜’“•˜“š•˜˜Žšž‘˜¡žœ›•™ž‘—•™–›•—™˜–Ÿ—“œ–™’˜šš•–›™˜™–••—˜™›˜–œš™”ž“–œ“—”œ˜–œ˜›—˜˜—“–™›—˜–”˜™‘™›š“š—™›•š™š™–˜›š™˜“––˜š›™™™˜—š––›š›šš˜•–—š–—˜šš™•˜˜”˜“—™˜”–šš”–›š˜–——›˜—™™˜š–™™•—˜™™˜›—•™™™—Ÿ›•œœ™–’››™›–›—š–—–œ™—›˜”’œ˜™—˜–˜˜ž˜š•–——–™”˜–•›”—˜¤˜•’œ—š›ž–ž–˜––™•–———›š–™‘Ÿššš––˜™™—–œ–˜—™›•˜™™™œŸš˜˜–—››•˜š’™™›–𙕗”–™˜˜š˜—œ—Ÿ•š‘š™—œ–Ÿ˜———“›”˜–žš–”——˜—›š™—–™‘•˜™™˜—””™—˜–›˜—œ‘˜›˜˜›Ÿœ•šš–“™œ—™œ––šœ“˜”™œœ’—™•••”•šŽ›Ÿ’Ž™––—”˜“›—š“––—™—”™“˜›˜“—–“˜™˜Ÿ˜”•—›™™—™“›’™Ÿ—–˜“•—””˜–œ™—‘–—•”•–”ž™–•œ˜™˜—“œ–—™™•˜—˜”™–‘–•˜””š—š—“—™˜™› ›”š˜™—–‘›˜–—›–™––—š•”š•’œ—˜›˜ ›™’••šœ˜™›”–˜™‘——•˜˜˜— ˜˜—›‘•–•Ÿ”™™¡– ˜˜––š’’–—”˜—‘œ›š™”œ™”™™˜›–—‘ž•˜˜—•™’™š•˜–š”•š•—˜–—”–”—˜•›—‰š—“—”–•™˜—˜—•¢—™–›™™™–’›™•”š––›•˜™•œœ˜–™–˜—œ›œ˜˜˜–¥‘›•——ž”–”–˜™œ’š˜˜¡”˜“—–›˜•–š—“–’—œ“š™—–•œ“œ—˜•›™›”Ÿ”’–˜””˜“™—›™–›š•™˜™™––••›˜š——šœš˜••™“™“™”™œ ––—™–›š—›”™˜ •–˜”š—™–š›™˜–—˜™”™—•–™œ——–™šš—œ¡’š˜—š¡•Ÿ™›””Ÿ ”“›˜—–—›—˜——˜›š–›—™›—•”˜›––›•žš•’‘–—œ›•–˜Œ•—–”“—•˜‘šš™œ™¥›˜“—”š“—œ—£™›™™•œ• ¥“™Ÿ™––𖙣œ”–—••œ“”Ÿ˜œ˜™—”š•˜•••–“™‘™™¡š“™œ ˜™Œ›—š˜šœ‘’–«”˜™Ÿ›———š‘–Žœ™ž™š•›—”£•”Ÿ–—š”–—š™“˜“™—–˜™•‘›œ§š””“–œ š  ™—‰˜—™”—™–—›˜™˜••–˜–“š™š—™˜› š–—˜———˜–œ•™•˜™–——”–——™—˜—˜’–›™œ•——Ÿ–˜˜–˜˜˜›˜™˜š—––˜š—™›™˜—”™”™šœ—–¡˜–•’˜˜˜›•––•”—•˜œ™—™–š—’˜—œ•Ÿ—˜š˜˜˜šš•Ÿ™–˜˜˜—“™Ÿ“’–™œ™——ž˜—•ž˜›™™˜Ÿ˜š›•˜˜”˜˜œœ™Ÿšš˜™š™ššš—“—š‹˜—£“›š“••˜“–—›™•šž˜˜–šœ™˜••—–˜™™–”ššš“’˜™–•™šŽ ™›–””––“––•›¢š——Ÿš”š™—™›˜”Ÿ–˜™™–—™˜–›–™“˜—š–š—››“——˜œš—˜š–œ–”™——— š—™›—“–™š˜˜—š˜—˜™™—š“ž™œ—š–——”™›—œœ˜˜™™˜ž”˜——Ÿ˜—™—˜˜—™“™š‘—™˜™›™š‘•————••™”šš˜Ÿ˜š—™˜šš˜“¢—’™™š˜š™›˜˜–’˜—š˜šœ›••˜Ÿ˜™˜—™–š˜––—–š”—‘–™š—–Ÿ™™“”•™˜Ž•š™–›šž–—™˜™••–—˜™˜—š™—”™—š›˜˜™™ž•›šœ—“—™•“˜• š˜š˜–˜–™š›——›“˜šš•Ž›•™›———•—™˜›—ššŽ—––”“š™œ¥š™˜–™•˜™’–’™™—˜›——Ÿ–››ž™–ž—”—˜––™—˜›–˜—•“–—£Ÿ“’š˜‘•™”˜™˜™ž¦’šš—˜›š™—’˜–˜š–’‘——˜šŸ–“œ•ž“™“•–•š–¢™‘–™”ž’š™›–œ–š—œš™–š”—™—˜š–”š—Ÿœ˜–›–˜™“‘™’“›š™’šž’™•–˜–›—œš™œ—“”–—“žš˜š•’œ‹¡™–™’”›š™˜™–”™–’”‘ “š”œ››—›—•™œ™˜———˜•š–—˜—”ž–—˜š™›™–š•š˜›˜•œœ’™•’š™—“˜››—™š—›”œš˜”—˜–——š™˜“—š–’™›£“––™–ž—›”–šœ•—••”—™–ˆ–“˜›šš›™•”—¢™”–”˜˜œ›š — ‘™››ž——”—˜•“‘™˜“š›—™–˜œ‘”›–›™™›”š™™–—’•˜™–—•”š—›™š—šš•—”•—¡•™œ•––”›™—™”—š˜™•”™—‘™™•“™š–—™Ÿ—›œ™——”“ž˜–”˜›ŽŸ˜—™š”™•–›œ–™š›—“›••žœš“—™•˜œ”—“™˜”–™—™™š–‘—”•˜“—™–“–˜”—”š–˜—š”š˜——™™˜˜•™—š•š™”™›š ™™˜šš’‘™™—˜—™—”—›————™—™™™—™™•–•———–šœ–˜‘—š—˜™›™•™š˜˜—™š••š›˜—™”——–›•™™™™–•Ÿ——š—–——š–™”•˜ ”“–—–™˜——™•–—˜—™™•—•—š˜š˜”’˜•š˜™˜š•—š–˜–™šš•’—”š—”——––•š‘š›–™—™–œ˜›š˜—˜–™–’š—š˜—••š–“›™™–™–”•˜š™™ž›™š˜›•˜šš•™˜˜›˜—œ“œš–—˜•™š›ž™˜˜——š˜™™¤Ÿž››™™›˜—•˜š•œ™•™š ‘‘—œ•–˜˜—™™šš˜™¡—™š˜›–˜™•žšš–™˜˜’—™˜—š˜™— ‘”•ž•–š›˜™–›—›•˜—–”—”—˜•™Žš––š™™“™’‘˜•”–•—––™•˜˜•œœ———•˜˜˜›˜˜—™——‹‘™””œ•™˜š”–“—’”š™—–•š–˜œ¢–™›——™—™–›–›˜™˜š—–•™šžœ›™•œ’—˜š™–›—™–šŸ˜š™”—¡–˜•›œ™›šš›™˜•š˜—‘›˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜“•™–—™˜–™œ–™˜–™–™“š˜œž–›—™™–›™ž™›š—š™–™››—œ˜—”—“˜œœ——™š•”š–•™—˜—–•”˜”™“––•œ˜™˜˜›˜˜š–•—š˜š—˜—“–—˜˜–—•™˜›—•“˜”š™˜——™œš˜™—›”˜““˜—ž™›––™—–œ—™•››“‘––™˜–›—™š˜”—––ž• œ’˜šš™˜”£ž””œ–—›šš˜“›™––›˜–—••™—›—••œ˜•”œ˜“˜›™˜›œ•˜—˜˜›—˜˜”šŽž™——šš‘šš›œ˜——™——™™“—™™‘œž˜›––™–˜—™™–œ›™™˜™™—˜•————˜–––Ÿ–›™™š–™˜–˜–˜™—˜—˜•Ÿ——–—ž•˜’—˜˜˜˜—™˜šš˜–˜›–œ”•——™–›˜™˜š—”˜˜š™•—“š—šŸ˜—˜›™›ššš—•™–˜˜Š˜—ž˜—˜™—˜˜¢”˜—Œ˜˜™–—š–™¡•–˜˜–šœ˜š•–™˜™˜š–—ž—˜”˜™—˜š–›”–”–›–›•ž–™™›–—š—•š—••š––––™™—™‘–›•—ššš—š›—˜š–™—›™˜™›‘›—˜™œ˜‘–™š™šž”˜™––—˜˜žšœ•™–œŸ–œ˜›”•–—žš•–—“š™—›“–š™’š—š”˜•šš˜š––œ˜’•––›™š—•Ÿ•™—˜š™—š”“š—š–š—˜˜•š™—–™——–”™”š™—”•š˜”“–›—š™–š–›šœš•˜™¢–™š–—–œ—–—˜—™—˜“œ–“˜––™‘™–œ–™•—•’—™™•𛓖•Ÿ–˜”˜™•˜™—š™›œ•—™œ˜˜˜˜–š˜˜˜–—˜––—™“˜•›˜•˜•—™•“›˜œ——™—”—”œ—™—™’™—”—™”ž˜˜™™•—œ›™™™˜˜™—˜˜–˜—™—š”›•œ—™Ÿ—•˜ž•˜œ––˜‘œ–˜š™™—™–›—–šž›””–šš™}—›šœ™˜––š˜™ž™¤–•˜˜›”•—‘™™“™“”žš™–’˜˜™——˜˜––˜™–˜‘–š—––˜Ÿ˜˜š”—–™““•–Ž™›˜™—–—¤›™•ž˜“’•™Ÿ™•š™š•—–›™›š–™›š˜š–˜ž–”¡š–¢™”™››—™–›™•™˜™™”¢—— ™–™šš’•—˜œ˜™”™š›™–šœ—œ›’™—š’˜™ª“™—˜˜— š“”š”—™“”œš™™——›™–˜š—›Ž™’”—œ“˜šš˜›—— š˜’š˜—“™š™š•–——š”—–š‘™˜œ›”˜›–—™™—˜Ÿ˜“š–›‘—“™œ—–––”˜–œ–š•›˜”–—–™”—”“‘›––”™˜œ™˜›˜”š—•šš——˜š•Œ›™•›“–˜˜š™›ž›ž˜˜”–™—–—˜œš˜™š™•˜˜–˜˜šš‘œ˜™—š–˜•—˜šš—™›—™™˜•ž—˜•˜›˜˜•œ›˜™™™•—˜—™š˜—•˜™™˜˜•—˜™”›™˜œ—“—˜˜—˜–™—˜–˜™–”—˜›–™š——™—“–‘“™˜˜˜˜œ˜˜™˜›˜”› —”—š™˜˜˜——›–™™ž”•˜”—–˜˜™–œ–•œ•œ•™™™™–š–˜£•™œ˜™–—’“˜œ˜’›™—œœ˜’”˜–™œ––˜Ÿ——™™ž™–˜š– —›š–žš—•—˜™•˜›”–•™– ‘——˜™–ž’——”™˜œ—“•š™˜—•—”—”˜–œ›– •–›ž–›Ÿ••˜˜š•š“˜——Ÿ˜–š”Ÿš”—–š•›››˜•š•˜˜›š˜“˜˜˜™˜’œ˜›™›œŸœ“˜›‰™œš™•“œ˜˜–ž˜™”“™–˜›Ž——–—˜Ÿš‘œž›–––›”œš•˜™œ™˜›™—–—™—‘˜•ž˜¡žš˜——š˜–—™•˜˜–—œž–—š˜—šš—˜›š˜˜™˜›˜—™——˜œ““›–——•–——–¡˜˜š˜š™˜ž”––—––”˜Œ™”—”šŸ—›š™–—™˜œ—••š”š”™™‘š“˜œ˜•Ÿ–‘™—˜–™™˜”˜•™™——”–—›—›š™•™ž“——šš™“›˜˜š˜˜™™“’š–£˜˜–˜–œ“”›’–—”————™•š•ž›˜˜˜››– —”™”˜˜˜˜™•šš˜”˜––˜¢––š•‘‘™™˜–•—š ˜–šš›—›™”˜™–“ž”™™˜š›—¥™—˜™ “˜ž˜”™“”™—œžœœ—“•”–™•›™›”˜•š§›˜•™‘’˜™”–“˜–™™›™œ–—ž–’––˜›—˜™–“–˜”œ’˜›—š–’™™—›—žœ˜ž–™š˜•–š•”™š—‘˜” ™•˜—ªª›–••™•––™˜œ›™š˜™˜˜•˜˜—š•–˜™™˜›š™–™š—™š˜–››’™’•œ–—–—“—œ•˜™—Ÿ™™˜›™—˜——›•™™™šžœ”–›”–˜—™•—š—Ÿš˜™Ÿ™˜–——”˜š•–—š›—˜—–™—”˜–œ”™–›–—ž™š–™™™š–™›”””•™•Ÿ•™›™˜–š•š—–›™—›•—˜™“•”—™˜˜—˜—–˜˜¡š˜—›”˜’™—™˜—›¢˜™——š——šš•‘Ÿ›ž”™š–˜˜•˜›•Ÿ——œ˜Ž™•—‘œ“ž™–”›™™˜™™˜—š”˜š—˜™”œš˜™”›˜žœ–š™—›–—›š’™–“™—™——™—–“¡¡›–˜˜–˜“–™”™ž˜™™—–™—•™•“—š——•š•–˜™˜˜™•˜————‘˜—™•Š™—š”š–™“—œ–œ™˜ Š››—“Š™˜—˜—™•œ–——’Ÿ™œ™—•™™œœ›™——žŸ™˜˜˜–˜•„›šš™“—– —š›‘š“™—œœœœ˜—“•˜˜››—–šš•––™š˜ ˜™˜™š–—–—•ž›š’—˜˜™™š“–š•—š˜’–š—š•˜•›Ÿ•˜™—š˜˜š™–’˜™›˜—˜™˜›™˜”•”›™™•˜•™˜–˜•’˜˜”š˜™–™™˜“š—™š™™’˜›–™—–™šš˜˜˜š—˜—’˜œ™“šš˜•—–œš™–—˜——š–›š–—š˜˜›™–™•”™– ™š˜˜™”–———›š–——™šš—”˜’•–›™‘˜›¡š˜•—˜•™—–’™—–”š—™˜–”™š˜—š’˜š–›™˜š™š™—”™–•™˜“—š™˜˜•”˜™š˜•œšš™š‘™™š™–˜Ÿ—˜™›“—š”™–—š™˜“šž›• ”—™˜š“›’œ™š™•™˜•–š˜™—˜˜•”—˜™—œ—š™—™˜™˜˜˜š˜™˜—™›•˜›š¡š–›–˜š•¢˜™™™˜ª›•›—ž–™˜—›–“›œ–˜¨œ •“—˜˜™ššŸ•š™˜š—š˜•‘—›•™—›˜˜œ–•¢•œ™˜–™›—™›‘˜š›˜————˜–œ™˜›š”–š˜—›—›˜–•›‘™š˜šš›š“˜–šž–™˜Ž™˜˜Ÿ™—‘–“’—š•Ž—–––˜˜˜•—œ–™ Ÿœ›š˜——˜––š›œ™˜—–›˜—–•š™’˜—–—Ž–—˜“™—™šœ™™œ—˜–––˜™›š”™™“¢•ž™™™š–˜˜˜˜—š›˜––˜š™––˜™—›š™šš—˜™–˜™–˜š˜—˜˜š–™™•˜—•——“œ–šŸ™—–”™—š–œ˜“™™›ž—•™˜˜›§š˜˜š›˜ž™˜Ÿ—˜–™˜˜šš——™š—š• ———Š“œž˜–™™——˜—˜˜—™—›˜¡šŸŸ—––•–˜œ—˜§™•šœ–˜š£›˜•–™–“™—–™“–’ ˜œš“š•˜šš•™š•¢™“š™™—™–œ–š””š”𙋑™šž——š™–—™˜™˜—–™”™••—™™“—›”˜˜–˜—˜š—™— ˜˜™˜™——š–’¢˜˜˜˜–‘ššš—˜˜œ—˜˜™•—“–‘“’˜—’™Ÿ™™–™—‘˜™˜˜™˜—˜š–™™–š”¢™š˜•˜˜˜Œ™•›š ›—™—••˜š—˜š›œŸžš—™’”•—–›™˜˜™š™“™˜Ÿ™˜”˜———•™™•’——™•—“˜–š“—–›–™™žš˜—Œ—™™—–›˜œ–›š–˜™œ”𛡗˜¡™–š–˜šœ˜˜Œ›—žš™–™•š”“˜™—™——›š–™š–•–—š‰Ÿ–˜™Ÿ˜š ž˜•›“—–™œ™š––•–˜“—š˜—Ÿ˜˜”š—š™—˜š›˜œ–›˜›˜”—š —Ÿ˜•™™˜–—˜š™•”œš—˜˜š‘™˜•—”ž˜–”—˜™š—˜™—˜˜–—“——›Ÿ››™š˜–•™œ™—š’™˜Ÿœ–˜•šŸ––•˜•š˜š–“›’™™–›š—¢•—š’—˜˜šžž—™™˜šœ˜—–”–—”™“šŸš™šš—˜—™—š›—™™Ÿ—‘¢œŒ•—˜—‘•“š•——›šž˜’˜•–—“˜›–™Ÿ›˜–•—˜’š™˜šœ™”–“››™—˜˜˜›–—š˜™–•————˜Ÿ™™›—““—›—˜–•‘–—™›™˜™–”›’—˜•—˜š—œ˜“–•š˜™™˜™˜™”™——˜™”–›—•¢“‘›™˜™™˜œ—”›šœ—™————“›–šœ”—œ™˜”•—š–—™–—˜“–œ–—š›˜—“š–˜”˜œ“˜˜š”™”›–—’——–™™——Ÿ•š›˜˜›œ™“—“™–˜˜ £——œš™‘—• ›–‘™›—˜–˜˜™š›——Ž™˜•š—™Ÿš”—˜’›—™œ•™–š™–™™–™—›œ–™—•—– œœ˜˜˜›—˜—”˜–™™——š–”¡•–›–™š™™––—•š–˜’•™•—˜•™˜“˜———™š—”™“—™œœ™–¡™›–™—š™——™—–’˜š–—–’™–™—“—–”’Ÿš™™——š˜˜—™–˜œ•——–˜—›™˜—›™™œ™—–š˜—›˜š—˜˜™š™š–˜—–˜š–˜•—————™’—˜—ž—”–”—ž˜˜˜›šž˜›“™•”š–™•—™””—˜–™—”œ˜˜ššœ™•’–š‘•˜š—™™˜”——›š˜š˜™™šš–œ˜––™›™š–š—˜˜–Ÿš•ž—™š˜š–™š’––˜—¢™™˜•™—–™ž—™ ™“—™™˜š——˜–š––›™œ––”˜’™–››Ÿ–›–›™–˜˜“š–š™˜–——™–’˜“š˜•›™›š–š˜•›—˜š“•˜˜•™¡“–™“—š›š™˜–“–•šš—™•˜”–™œœšš”™™—š“”™™˜›˜˜”˜•–Ž——˜—’˜•‘›–žš•“–‘Ÿ––ž˜™š˜—œ”—“œœ™˜›”—–žœ˜•œ—ššœ˜™—•›“™›ž—˜›¡šš˜—™™––‘—š–™—•—ž“¤™ “—›˜ž™›˜’˜˜šœœ•œ™˜š—•–›™“–“•™–”–•œ—›šŸ™¨™ž•™Ÿš“˜œ™˜š˜‘š—–—“žš›••™•”š—œ¢Ÿœœ˜–™š–š•œ˜“•–•›™œ••˜Ž”•“˜“—™œ—˜•—•›•”—‘™–“˜œ™——™œ››˜‘œ˜œ—˜—š–Œ——˜–—“œœœ™›—“§˜•›™™š—›“š——¡—•——˜•š–”–›—•Ÿ ——œ›“–’™š˜¢–ž™–”šœ——–™š›—˜•šœ›˜š—–™›—š˜™”˜•”–“™š˜•—–—™–•š”–•“––œ–Ÿ“–›š™™˜•Ÿ•š•–™™‘”—œ•—––•™“——™˜“𣛙”˜œ™—›—ž™’—•¡™–•›˜’œ“™‘›˜š——šž™“–›™›šœ›•“œ›’𛕕‘–Ÿ™˜—“𛕛–—Ÿ•šœ—š™—˜–˜—•”›—›¡•ž“˜˜™˜™•–š›™˜š™™Ÿš™˜“—˜•˜™“™š––˜”˜™——šš—™“”š —™—’˜—™š—•“™›˜™™–¡˜”›Ÿ–˜”›–——˜Ÿ™›šœ™•ˆ—š—–˜—˜š–™——›—™“˜˜™–—•˜››”—•—•š“–˜–’—•˜—™œš˜’—’——˜š˜˜•Œ˜—–˜š˜™•–š˜˜˜¤–—›•›–˜™—––˜•™š—˜™š• ˜”œ™”™—š˜™˜™—˜™•”™–™–™Ÿž™–œ˜—œ˜Ÿ–—š—’–—Œ—•”›“•“—›•™—š˜™—šš›™˜š–“œ–˜šš™˜—–Ÿ– š›–—˜šœ–——˜˜™™—–˜™›˜•˜—Œ••–˜™•››¡˜™—™™›–œ˜•™›‹—›‘š›”šœ›œ˜™˜š™›˜“™—˜–›—š“˜—•”›š˜–”š•–š•™—˜›šœšš™œ˜—–š˜–•Žš™ž–š™š•˜š™˜›š–™——˜“˜•–š–••š˜•”˜œš˜”–— —–›“˜˜’™—–—”š–—› —›–“—–——™—œžž–š—™™›•žžšššž•“”œ˜™˜•œœš“—š—˜™™˜™•š™š•—˜™›š•—˜—˜•——™‘•›š™˜™——–™•“™”˜“™œž›˜—™“˜™––”—š–˜™ž—šš™™š—•–—™™™™™˜™š™™–˜—š”—˜š˜ž˜ž›šœ’™“™—›¡›—ž—–š‘™˜™š˜”–‘˜™›˜•›—‘˜˜œ–’™—¦™˜“–—”™™˜ž‘‹™™™——˜˜“›—˜™˜š˜˜—”œ–™Ÿšš˜š——”—–žœ˜™Ž›˜‘™˜˜——œ—™˜Ÿ™˜”››–›•–ž˜š••”›—’£–š™–œš—ššœ—“˜™˜š—˜“—™•žš——™š’™”“”˜›˜š––––š‘›’œ•œœ—™•š™˜™™“••––›’‘™—‘“—˜™›šš››™˜’š—–—”˜›ž’‘š—’” ‘™œš““•™–š˜–—–‘“™™š™Ÿ——𤗗–™™’šž›œšš“•–™››‘•š˜–™šœ™š——œ˜˜œš——•—”Ÿ™’›––ž•––––•—›š˜œœš™—–š–Ÿ”˜˜–˜•“Ÿš˜”˜›˜œ›™™“–‘š˜›•‘’ššž——˜œ™—–”˜š›”œ™ž˜™¢™˜‘–——›“‘š™œ—™™š˜˜•–˜——•–œ–™“™˜œš——˜š˜•“™—–“—™•š–››š™˜•š–˜•™™Ÿš™‘˜˜˜—•”™š—›—–™˜˜——˜˜˜œ•–š™˜š—˜–œ—“—™™—™››™˜›–™˜˜”—˜”™š—˜™•™˜“Ž•—–™œŸ—•˜—žš••š˜š–•šš—˜™˜‘–“•—˜™ššœ—™œš–––“”›™£™™•™˜›’˜‘˜œ”š—™—˜š™–•–”–—˜—›—–Ÿ—™™–˜š””˜Ž—œ–˜–—˜•Ÿš¢—œ••˜— š—˜™™˜——›™˜šž™œ››“–˜—•œ™™–™•˜™˜™—•™–š‘–•—™›™˜˜“˜š—›—™˜–™™—––“˜–—•——˜‰š˜™˜•›—™˜—˜˜™˜’–š–™“™“œ›™¡•–“™—˜”›——›˜•˜˜š™šŸ—•—œ˜–œœ–š˜–”˜–—™—˜˜™˜’›—”–œ•™™™™—™™˜•™ž•š™’—–›—™•˜£™˜–š˜—™š“™•—™—•š“”“•™—’™š›™š’š–˜š––œ—“™š™š™•––“•˜”––˜››’ž”—˜–™›™——›•˜•‘—™•—™—•œ’—Ž—–˜š™˜Ÿ››–™–¡””™˜•˜ž—––™š”››˜‘—”’–›˜™—¡’˜ ‘——œŸ˜–˜–™“•—˜———•š•—˜–—™—˜šš™™˜——™˜––—›˜ž–’šš¤›˜”›™˜™™—˜ž–™™—™˜˜ž™–¡™™—˜•˜˜˜—™“™—˜™˜š—™•—”›—™˜˜——‘’˜œš˜š—˜˜–•”œ˜—•˜˜™™—˜™š—““™™Ÿ—™˜—›”™–™™—™˜—£—˜•˜˜ ”–š“Ž›–—›™›™˜—˜™œ–—™˜™š™•––Ÿ˜ž˜˜š——ž™˜—š˜›”›š–•›—•™›˜š–’”˜™š˜˜—™”—•—–—˜˜‘š˜š™˜™˜œ˜—•™Ÿšš•˜—”’š–œ–—“Ÿ”‘˜™š——˜ž™—™’—–œŸ•š˜™˜˜˜˜•–—˜˜–—˜–—™’š–š˜–™•˜œ•™—–š———›šœ˜™–——ž™™——–•—›–˜˜˜–˜—•”˜™•˜›––™˜”˜–˜˜š—••š˜™˜˜™‘š™–—š—˜˜™™˜™””—–—š—™˜—š—–™—•˜™•™ ”–—›—œ–˜˜™›–œš•••’˜—šœ™–’¡–“™—˜—œ˜–•—›œ™—˜—•˜™“›—™ž˜——™•™—›–“–˜žš—™™–—š–—š’”œ•™–š—–›˜š˜—™˜–‘—•—˜•›—œ––š›™—•˜•™›”™š—˜—˜™—–˜š“——˜š‘–œ˜–™˜˜Ÿ——’–›Ÿ—–—œš’›•œ””ž”™“–šž—™™šœ–ž˜™•™’Ÿ–™—––”™”–››˜•˜™–—™—˜š—œ™–›•—›—”›—•›”˜š˜’šš›”˜™š”•˜•¤™˜—–œ‘˜šž˜˜™š˜•–——•˜™—›˜–˜—œ™˜ž‘›š”–¡•–™––™—–—œ“”–˜˜–™›š• ›™––• ™—™–”˜–—“•˜–“™—“–—˜˜ ˜””•–™šž•‘›–™ŸŸ˜§—“𗤕—˜˜™˜›—•˜”œ“Œ—•š˜—™–—–š——šœ™—›š—™˜¡“”˜™™›˜˜™–š–—Ÿ˜—˜–˜šž–—˜’™˜ž™””‘™•œ™•™››ž—”™—˜——š–—˜˜••›Ÿ”–“˜˜––“•–˜•–œ–™™™š•œ—˜———˜•–”•™•—™—š—˜—™˜–™——š—˜•œ››”—šœ˜¥™“”Ÿ—–˜–Ÿ••›”–˜›™™”“œ”“’”š••˜˜™•——˜——™™–ž•Ÿ›œ–—˜•™˜—”™—–š–”š›‘š•œšš˜š”–˜–•˜——Ÿš™™–—˜£˜••š•›—™——•˜—Ÿ˜–˜™™•šš–™š˜ž˜“•–¤œ˜“•›™š’“ž”ž™˜œ˜™œšš—–”–•—˜“™˜œ“˜–”˜Ÿš•—™–œ’™”™™˜›˜˜•–Ÿ—–˜™–“š––—•›š™—›˜—š’˜˜˜›˜“˜•“•–™˜™•™›—••—–š–˜“œ™š–˜–”˜“—”˜˜›‘”—œ“™ž•—™—™—š“œ•—™™˜™“˜˜‘›–™›š––š™š•–—˜—••˜”˜” —ž—™ž™–˜ œ‹™˜™—›š˜—–›š™—•Ÿ“˜•šœ˜•›™˜š˜Ÿšž”ž”™š––—˜”™œ˜˜™˜˜•’“™˜™ªšš˜’™••—š›˜–•›•›•Ÿ˜–—š””›¢™šŒ™˜š¢Ž™œ™–˜œ”Ÿ——˜˜”•‘œ ›––›Ÿ–›–š•—šš–•™–––Œ™˜––•–ž™–™š›—”—š•™––•šœ––š¡”’–˜šš—“•™—˜™“ž¡˜™•š˜™—™›’“’”™š“ž˜–™–˜˜œ˜••œ–•™˜•™™™–•˜”œ›—™—•”—›’œ—“’˜–œ–”˜˜—–˜˜™™ššŸ™“–•›™•›‘˜˜™—œ–šš—›•˜—˜—Žž™—”˜––›˜™“—›œ–¢•˜•š–“˜™—˜™˜—••›—Ÿ™——˜–•š™› “•™œ›•™›œ››™š››™–˜˜˜™ “™•œ•›š—•–•—š˜˜˜–˜–Ÿ—’—™šš˜œ—•™œš›šš—’—–™žž”™—˜™—š’•›™–˜›’™”“š™˜˜‰™—›ž”›˜”—™˜–šš–™—•ž–•—˜™’•œ˜™šš–™—•”𙕙™›”–Ÿ—››š›™˜™˜š–˜˜›–š–œ–™’ ›””š”™š˜š›˜œ”—–š››—œ—“˜‡š™™š•–™š›š•˜™ž’˜›œ—˜•˜••––œ—š›–—œŽ˜—•›™ž—–˜›™––œ›˜——™››™•—™•™›–—–›—š˜–”™˜”›š—œ˜™–›–˜—”–™•——œ——“›—™™¡™”™•Ÿž˜™˜˜”–™š•—–˜™™˜Œ’˜™œ›¡™—›™˜™˜™–—™™˜˜šš”—–—›˜”™™—–™—œ—˜–Œ™—™Ÿ›—Ž››—ž”•š——––š–”›™—˜•˜™“œ–•™š—™š—œ™’—™œ––Ÿž›š™—œœ——˜›˜ ‘”˜–›™– ™˜–¡–˜˜””Ÿ—™˜•›——–”–“—˜——¢˜˜œž–™—•“——‘—•—š™œ•”–šž—–˜š™•˜–›š•–™™’“Ž’œ—––™”¡™˜“–•–ž™šš•™˜˜›œ—•›•—“––˜™™—šŸ˜™˜šžš–›—š›•˜œš›˜–˜™–‘š™˜“š˜—–˜š˜›˜‘˜š––—œš“™˜–’››˜˜–˜•–˜›”œ–˜š‰™—œ›‘–˜š——˜˜’™™™–ž“”˜• –”šš˜‘š—•˜™–™————”œ—žž—š˜—›ššœ™™–—œš—•—•–™’ž˜—“™™—”™•˜–š˜”’š”˜ž•š˜™˜•›–›˜™š›–•—•˜¡›”˜™•™›˜˜™“˜™™™›šž–‹–“š””››žœ–˜•›“–——––œ™›››—˜š˜”¡›™˜—–™—›˜›˜”–—˜™šš™˜™“˜˜”š–›˜˜—˜™•˜—™—˜š™™˜š–™—˜–šš˜—™˜—”˜›™•œ—˜›™š•—–˜—˜•˜”—š”——™™–—––œ—–š—–•˜š•˜˜——š˜”™”˜–—•”™˜˜›•˜’›™——˜˜›››—–š’™™—™•˜›™™——–›”—˜–”œ•œ˜–˜˜—˜—˜›˜—˜–—•–™˜›š™›—˜˜˜˜Ÿ—––™–™—š”š–––š–˜š—˜˜–š–——™—˜ž•˜”›š˜—š›—“žœ›š™•š™˜š˜›™”–š–š——š›˜˜›——šš–˜™—˜––˜ž™’šš›——•¢œ˜š–™˜™’˜š——š”›™žš˜œš—™–Ÿ™š¤——˜™šš˜–—™–ˆ˜—šš›¥š˜™œ™˜–™”˜˜šœ›—˜™™—˜”——•’’˜––——–˜™ ˜™˜˜˜•š•›–•“˜—––™›•“š˜•›š™˜—“—”˜•žš™›š™”‘˜•“—™œ—–˜“—¢’¢œ–š—š™™š™—™œ™™—™—™š˜•š——•š˜–™˜–Ÿ—˜—›“˜—˜–š‘š˜¤–Ž˜™™™›™’–›“˜™™•ž”’ –—˜™‘š“——˜˜”š˜™——š–—žš˜›™—œ—š—–™™š•˜—•—™•›•™–˜š——–”›–˜—Ÿ—›–œ›—šš˜Ÿ˜––”–š“›““–—™“—œš•”‘š›———™‘–—™™™™™™•˜™˜“˜“–™œ—˜–š”˜”Ž•šš™˜‘š˜™˜—–š˜™•‘™š—¡•š“•˜•Ÿ–—”š—“ž–š–¢—“™ššš˜šš›Ž ™˜š™™™˜˜—•›¤œ’•ž›™˜›™•—•š˜—˜˜—˜›ž™™œ“–›™š—™ –˜ –šš—™šœ™›”ž”–™“¡™˜™–˜˜—”—’—™™“™š——”Ÿ•Ÿœ–˜—•™œ •’–—–—›–—›”š˜›˜—˜›—™˜˜œ”š—•’™™š•š˜š—£——š–˜˜—˜–————™™•–˜—œ–”–¢˜˜“™—™˜šš™™˜—˜™˜š–—Š™•–š™‘ššš––™•“–—š˜—–š™“—˜š¤•š•–˜•“™—‘™’™™˜“œ›Ÿ˜šš™—™“››£“˜™˜™˜—˜˜˜˜˜”™——š•ž˜™Ž˜—œ—™œ–˜ žš”œ™˜š–™——‘šš——˜˜œ”’›Ÿ—–š—™•›˜˜›—‘œ–™˜•ž•—˜š•’“——››–—–™–š›˜˜”Ž –˜ž‘™––˜˜––—•œ”™žš›› ž™Œ“—›ž“š—˜˜š™›š‘ ˜•›œ˜¤Žœšž”–˜—˜˜”˜—’——–•™‹—•“¡£š™Ÿ˜•š˜—™—–ž˜–›œž“–œ›™›˜“–”–™˜—™œ™š—•––•˜žž›–›—˜–ž™—”—œ–™“Ÿ––œ›Ž—Ÿ•š—–—š”™‘•—”Ÿ™˜Œ›Ž™››™˜˜š˜––—–¢š™˜›—™–””—“–¢š™˜”˜˜™žš™œ™™™—•”™™‘–••›™š—ž™šš”š‘’—˜˜•™š”˜—œš–—™“–—ž’•—š››—¡›–œœ—–•¤’™™™—™š™–™›‘•š•™™—¡™•—˜˜˜š™˜˜œ™––•ž˜–žœ›—“—–œ˜—𔕗ž•–š–›•—’˜¡›“™š£”›––˜œ›–œ•“™—™™›—•’š•ž™“˜žŽ—‘š˜š—–”•™š˜—““™“——˜”–——“œœ›”›˜•›’‘˜•››™™œ•’–™œ˜œ——˜•–š–”—–™š™š™›•˜™”˜ ™——˜– ˜˜•–š“›•—™˜”˜”œ™™™–š˜™š——˜˜™™¡™˜˜—˜š–•›˜•š”–’œ—™¡‘———™•–œ••™”ž™œœ—š™›“›œ•ššž•›˜™–“•—–š™—”—œ–˜š“™—š–‘™—–•›—™•œš—™—™š“š™Ÿ™ššš›š—“š’˜š™Ÿ•œ–˜››—•›˜š•š•š™›˜™“˜•—š—™–™‹™šš–“˜•“Ž™˜”œš›˜–˜™–š—˜ž–”””™–˜•š˜”˜•˜˜’š‹››•š˜›“––˜™˜•˜™¡˜¡•—–˜Ÿ˜•š™—¡˜™š™’š™—•–š”™•–—–œžš—ž™’˜–š”™——¥•–˜˜™ššŸœ”’š–˜–š˜‘™“š”—–œ • ›˜›’—”›š›–™—›—–¢™•™™™•›š–œ•–”“˜––—–™™—•”–’”˜š“š˜š—š–™––˜—Ÿ•—–”™™š”š˜˜—›”–˜•œ—™—“ž›–™˜›œœ‘–™˜”›–—š™–™˜–’—š—“—˜˜—•™˜˜ž‘–š•˜–˜œš—™—™•šš–˜””–˜˜™˜›“•“˜™‘˜”–™š˜•—™›—™š—˜š–˜“—™˜–—”™›œ——™—–›œ˜’™›™˜—œ™›š™œ˜™’•˜—™—™›š’œ—–˜™™•›™•™–—˜—›ž—˜—š–˜™š™›š›™˜–•—˜›”˜š—˜’š˜•“—“˜™˜—‘’œ˜˜””˜˜˜“•—•›˜™”™™˜™—œ›•™—™••™˜—˜—•š™™š“—›š•–’™˜˜™–—£¤–—–œ›š—“™˜”•™—”•š™˜”š—˜œ‘—“£•”Œ–™˜˜›¢œ“•˜Œ”žš˜—®™–—•š™—ššŽ™•—˜™–›‘£–•™Ÿ™š˜™’•˜——Ÿš˜¦‰•™—›•”’™“•›–Ÿ£‘‹‘š•˜®—›¢’–˜–¢œ˜–¦™–››Ÿ–—˜£‰Ž•š“•™œ˜™š¦Ÿš› ˜—ž–ž›žœ”ž–œš˜›€—šš••™‹˜˜˜™™¡ž˜˜••Œ™™’“˜˜Š˜—™™›šŽ”Œ•šš›…–œ”›™š—™‘“”˜˜˜–‘ŒšŸŸš•¤•››–”“˜™™™–›ž‰Œž™—–‘”™–˜œŽ™™™”™™ ›“••“›—œ˜˜w¦›‘˜–š—”—˜šš™•–—£–•œ’œ¤Š•£› ˜˜œ˜š©™›š—š——˜šš››š˜˜–žšš™˜—¤Ž˜‘’µ–˜¢š•˜ˆš—™˜Ÿ†›¥˜›¡›Šš‘˜˜•——“˜™“–•š–“œ›™¥œ‘™—˜——›‹™•’“—›™—Ÿœ‰Ÿ€•˜¢™•–¡™–šžž•™—”¢š¤—•™”Œ˜–—™š™–•™—•š™’˜¦ž’¢—•¡•š“—˜™šœ¡š˜˜•±—šœ‘™Œv˜¥š–œ–—šŸ˜¤š—˜™—™—˜ž˜Žš–˜“‘›˜œ–™—™£Ÿ ’ ™›™”œ”Ž˜”–›™™–Œ–”˜˜˜š¡–¥¢•˜—œ›‘›Žž—–¡–˜£–šš¡˜–™˜“’”˜——š”˜”–™—–—^‘ž˜˜‘›œ”™˜”—˜—œ—›œ™—•›˜–šš–Ÿ˜™˜Š¤ —›”𛕖—ž„œ™®–™šœŒœŸ–›–—³Ÿ˜–•™•™œ’“––˜—›Ÿšžœ«–•ž›‘›”•š–——œŽ™ ›”š›”Ÿ”u”™š™˜’™—š•Ÿ£ Œš——Œ•—¢‹“™–‘w”›—Ÿ’–™“’›¤™—˜¢“™™‘•š•‘–—˜‘ª£›™šž•˜˜•™–“™š—˜œ––¢¡”•Ÿ™£–—•Š˜—™›–›—“–¢˜‘••›š¤£š˜Ÿ¤›™˜“™Ÿ˜—™™—~˜›˜š—™”—”¥‘™š™œ™‹“—…™™™—”¢—‘›•—~˜“–¡–¥›™ž•ž“——–—šŠ˜Ÿ›—–—š˜Ž¦™˜˜›£™’ŠŒœž©–™˜™™™—˜– ——š——–‹…–’ž™¢—–š™›“™—™®”’”š•™Ÿšš­¢‘˜œ›™˜–›Š–™œ›€”—Ž˜˜—‘ž™œ› “šœ˜–™––—–¡§˜˜œš•——£œ—¤“˜›–˜¤’¦™—˜””‘˜œ– “’—›–—™—Ÿ—”¥™‘œ›™¨š•™”™œ˜œ˜–“Œ—˜’˜Ÿ¢–•œ¢‘™“˜š›•—›™——™•šž˜˜–«–™™›––ŽšŸ›–››˜‘˜žž¤ ™™—šŸ””•–‹—’•™™š•–¢œŽ“–™˜–Œ–•“—œŽ™—¡‘›š˜œ˜”˜”– –•Œx–—–——–²¡œ˜›˜œ—•‰šª›—–›Œ’••˜˜™›—›¡™™¦œ™˜„¢•š˜’—‘ œ˜” ˜•Ÿ¡™Ÿ™™—š’“––œ™’™—™•—€–›Žžš™”•˜›™vž “”“™¡™•›•›••“—•™™—š—Ÿ—–”œŽ›£™–”›•’˜œŽš™™—˜œ±¦‘“š–•˜ž¡›“˜žš”“œ•𕬗•£–š”›”™œ“‹’—“—Ž’™˜š••¤•œ“œ”œ™™‹›•Ÿ—‘—¡‘˜“˜™˜—˜œ—ž””ž““œš•–¨– ššœ’—™‚—™›™š™•˜—”“—“””“”‘•“™™ ¥––š’žž˜—ž‘—•™§›’•š–™›˜ Ž š ”¡š¥–––¡Œ–“œ›˜–˜‘ž“—Ÿ“Ž™š–ž—˜›¥–™‹Ÿ—š˜š¤•˜›–““––™””––—š’”–œ›™–——šš˜œ˜‘¢œ˜’œ“”•”š•–œ—”—Ž™™š•••”•š—š‘ šœ–—”–”˜™––˜š˜•”•–““–————Œ’Ž‘›—”–œ•š–Ž’Ÿ›—Ž•ššš••˜•“’œž—•“ —“š˜™™•™šœ“›’–““•”–——›˜žœ–˜œ‘›™ž•š™–˜–’—— œ ¡“––—˜–Ÿ™–‘—“™˜š˜–Ÿš‘žœ—““””˜—Œ–“–˜Ž–š“–•™”•Œ•—™˜—™š“–˜¥™—œœ£•›•››¢––•£ –‡›˜˜œ››˜œš˜—™™”›––˜–”‘Ÿ’˜Ÿ—Œœ¥’¨©•”˜››“™›™——š‘—š¤•Ÿ‡—ª–Š–„›–’™š™’™žœ—˜—“”’›—˜“—œ•”¢–————’–• ™¡™——…š•›˜‰—š“œ•’›‘˜™–•›”‘– Ž™”™”œ™žš›™ž‰›‰•šœ™—œž™š˜†šš›™™ž¤šœ™–™—˜¥™Žœ—“ƒ˜•Ÿ˜–¥«™•¡››¯›š˜˜“™š–ޤ›ž™˜™š¨Ÿ“‘Ž—š¡—¡™™—˜Š¢•˜œœ—šš›”–š–—š’œ›˜—ƒ’–š¢—ž“š›–Ž•—‘𣑕‰›”››œ—”¢¤˜— —š”¡Œžš–“”™˜›’”—››’Ÿ‹Ÿ”—š—”—’œ™š–¢ž›”œœ–‘œ‘“ž“™’‘§˜œœ“¢¤”’”˜¨–š˜œ™•—ež˜“–œ™˜–”——“š—˜šŸ˜™“™–›“Ÿš—–‘š˜››˜ ›•Šš˜”¯–ž›”’–ž•–šœ™™š›œ¤š—”ž—œ™¡™—”—˜–šž˜›‘¡˜–¡žœŽ•›£—•–Ÿ“•“™˜™–£—£•”•¡”–™™š›™–ž™—™Ÿ–—›žœŽ–›‹œ™– œœš—•™”Ž–—™š›™™œ˜”˜– œ“œ—––—›–”••’žšŸ¦šš”’˜——˜“ —–••›ŽŠž›–žœŽš›œœšš¡“”ž˜–šœ—™•” ¥””˜Ÿš–›’˜š›™–Ÿ™™¡š’Ÿ“˜—–›‘–—•—  ˜›–‘š“™“—”š”–›—›œ¢š™ž—–•›™ª—›˜’ƒ¢“™š•˜™˜š•˜–˜“š—™•”Ÿ›ž–”–™–‹œ–•š–—™‘›—Ÿš“‡˜˜–›“™š •”—˜šš‘™––•œ›–•—”›—”˜•™–˜›œ˜˜—š‘ ŒŸ’”Ÿ™Ž“—•ž‹– –𣙗™™˜™œ¡˜œ™˜¦œ—–››™”˜“••˜˜•”˜˜Ÿ™’ œ–•”£›šš—š›–›™™–˜–”–ššš•š—•™˜—œš“™•ž˜– ™Ÿšš—˜˜–š•›™š”•˜˜˜›˜š˜ š—žž˜Šš™—•žš—–™›”–˜œ’š˜‘˜˜˜˜›–’——™“˜š–›—š–’™–™™•›—”˜š™š›š–š™˜œš• šš˜™—– ’˜š••˜›š“’•—šœ’•˜—–˜–™•—Ž“ž—™›“™•–›–™š˜‘˜”“˜’š—˜™ ›‘™“‘–—›š—š˜—™—›–•˜œ››˜˜™™›‹–¡˜š™”—’•œ“—“™™––˜—›Žš”–“Œ’™žš‘£§“•–˜—”——š–¢’Š™—œ˜¬›•›“—œ››––™™Ÿ”˜––’˜œ™—”–’˜š˜š™œ’™’——•™Ÿ™”‘“•–¢™œ˜‚™“”š³¡š—•¬žŠ˜§”™˜———™˜š–€š››™˜Š‡™š¯š™ ˜™–––‹™—𢖖›š™§Š¢¤’¨–—–™Ÿ™™™—Ÿ—˜™Ž•“Ÿ„™–|‘¢™˜Ž›—‘¢—–™‰—–¢ž™’–™—˜•–—›—–œ–˜˜š–­™–ž™‘§–Œœ••‘—Ÿ–¢•˜•˜™®™˜—œ——˜Ÿ””™—•™™‘•˜™•šœ“  š¡š™–˜œ‰š†—“˜˜–—––›™›™Ž™–š¡™Ž”—¥˜™˜™˜”𢙓˜œ–˜˜¢Š•—˜˜•¥˜•›–“•™‘›“Ž”¦’—‘™›—“–œ•“š•˜œ‘››š ˜“™™—˜“ –“Œ–š••—Ÿ“”Ÿ›¦™›Š—•˜—•𙍗•™—––‰“”™•–˜™•”—°—’ Ÿ’™’¨–”˜˜˜”‡–¡•“ œ•—ž”••™˜™¡‡Ž¸—›™œ›—Žœ”™—’“–ššœ£Ÿ’˜–‹›šœ›™™š™¤˜—š”¡ŸœŽ –™˜—“”˜‘™œ™’›˜˜š™žš—‘š––š™—˜‘Ž¡”’–—–Ž˜•›”˜–Œ™—–˜«¦™˜“•œ£š„™™”–•“¤š’™–˜ ™•‘—˜™œ™ ˜¨™œ–ŽŸ—”‡™—›š—œ›Ž–™–œ—£š¬˜šž”™˜¨ ›–š•šŽ˜•Œ–—›‡©¡¥šš—•œœ›–‘•˜›–™ŽŽš”˜“›”™ª˜–¤•Ÿ›ˆŠœŠƒ˜•——••”™˜•Ž–—¿’™™˜£•¤‰”„¥š™™¥ž–“˜š——‘›˜–˜–„¬™˜š—‹™˜•‘™”¤Ž–˜™œ’–™Ÿ¥™›˜›’•™™¤—¥••‘•Ÿ’£—žœ†™•– › ™——¡’ˆ˜œœ›“–˜”¢–“˜•—›“˜‘£˜š—˜•™ž™™—”•£ŠœŽ‘™•–™•™‘œ›”™Ž ›’’˜–••¡Ž˜š“‘™š“˜–’˜’™š™ Ÿœ–šœ™‘›™š™“œšœž¤—™˜•šž–”œ™–š•“›œ™—•š—Ÿ—“—™¡›™š™™››”’‘’˜”œœ•–š‘œ–—™š™™—”›œ¤œ—™“›“˜£‘œ˜‘—“™š›•š‘•šŽ”˜––ž›˜——“–œ›•’¥š—–™œ—š”’¬–•™›ž™’•œ²›š›œ š™—–˜™™š”¡œ˜‡—••Ÿš™ž“‘—Ÿ•˜–——–¤›•—”–˜—œš› ˜››š˜“Œ˜™›ššž˜•˜™‘š‘˜œ œœ˜–›””•™˜•˜¡˜˜š™›”™™–™œš¡˜ ¥—™›œ‘——‘™ž˜•‰–›š›—‘›‘ž–•—’™¤š ’˜˜›–’”™˜œššš¡¡¤˜›œ—–‘™””™›—š™”Ž››Ž—“ž˜“•š“•–—›•™“™•“”••——¡˜˜–—œ“–––”–˜•˜›—˜˜œ®™˜”™˜–ž•˜—š•™—””›–§šŸ™ž™•šŸ——‘–˜¡“¢”¡”œ‹•—››œœ—š˜—–’œ•›•›–£’Ÿ–˜Žˆž|™œ˜™—œ­šš—˜•¡œ‹ššŸ™¡—Ÿ•–•œ”›ž™ ˜Ÿœ–’ž•‰’–“”›—™”•žš–š–™™›˜”š”š•—•“š›Œˆ™˜°—–”Ÿ ‘™˜pššœžœŠžš¥šœoš›™––¤———˜¢˜”——™’ž“™’˜›““—–›˜–—”—˜›Ÿ‹š–™£“žœ™™”Žšœ™“ž˜¤–—Œ–›­’œ´’Œ—Ÿ–—™–˜•“™ “‘˜˜šˆ˜¡••——œ›˜›šš˜˜—••˜œ”ž‘šœ˜˜ž—˜‘•™’””“š’˜’™Žš™›‘™—–—›—–—™––“—™•˜’™™’—˜––˜–š”–™•œ‘˜™“š™˜™šš˜•œ™—˜– ˜˜šžœ“˜”“šš–›—™Ÿž–‹ž™™—›™Ž’–™›——›™‹“–|•™£––‰Ÿ™˜¨”¥–———˜™˜™‘™–˜š–˜¥–š—•–›©—šœ˜Š˜œ§š˜••”ª–™—›”˜¢Œ˜™£•˜š—”š™–Ž—•—š—œŽ’•˜š˜˜š ˜™š›š…˜•‘•¨—›Ž••ª––”˜™˜›§Œœ‘¦——™•’™››š“£›—”˜™–„—˜˜’¡’˜™•™‘˜“’—š ˜–˜˜˜”•›˜œš³” ”—™—˜˜›—™Ÿ˜˜—žš—™“’£——••––’™ ˜œ‘”——Ž•—— ™——œ“—–𓙉ž˜–Ÿ‘˜Šš‘¤ž™˜’–Ž‘˜———•–š˜“ª—©›¡¤¢š——›œ¡˜˜œ‘˜š•š–˜¦›š‹˜“›ž—’˜™œ”¡“Ÿšš™•Ч©–˜ £Š••˜“—œ‹š™˜‘—‘”——”¢œ•“‡•–›•˜–™¡™—œ”’–›¢œ•’˜§”›–’Šœ—˜œ˜•šš‰ƒ¥–—˜™—”•š“˜“–›–˜–—™šŠ›ŠŽ•«‡–™–‘„™•”•—›¨›™œ˜–œ¡——™š™—”“£¢™¨—‘›—››ŸžŠ˜˜šŸ˜”š––™ ™™™ž˜‡šžŸ›—™˜•““”œ§’———–¤š ˜˜“¡›˜™œ”˜¬—•››˜Ÿ•œ˜™’šž}š’‡—‡Ÿ”§¢™—“—€™———™™™–Œ’Šœ—˜š¦™š˜©•™ž¢—™™‹˜œšš ˜˜—˜Ÿ™›“Ÿ˜˜’”™—˜™›££‘Ÿ–¦—œŽ™¤™˜›™š”˜˜–•œž²—‘›œ —‹‘—™œ˜’———“—š˜– › “™œ ™”Œ“œ˜š›”œ•”–œ—“’––”𙣍–š˜›˜••’–™žž•••™™“¡–—˜–’Ž›˜œ¤ž›¢’›˜–˜ˆ’’£˜˜Ÿ•›—›ž¡’œ’ž—œš¤š™™’•œœ‘’𢖡–’£™”˜‘š“¤š–™œ’•—™–“ž’•œ–¡“™’šœ “—’••˜œ“˜””¦ •˜–›š›š”——¥—šœŸ¢›—œ’”˜š™–’ž¡Ÿ™–“‘•Ÿ—œ¡Œ–‚–•–ž˜žŽŽ˜›—˜œ•˜•—œ›œŽ®™‘•ž¢›•›™œ”¡—œ¯ —–“œ •ž’¢ž•œ ™›”—””›˜‘¨š˜—”——𔕙¢—š—š••–•›šš™˜¨››–£’™šŸ — ž’˜š–¦–˜—š«š™›™ ›ž–›¢•›•ž‘¡¡˜š•–”¡–”“—’•˜œŸ”––“˜”˜~Ž–›™ž˜›—˜ž˜—¡•˜œœŽ“™–—¢ž’œ™–˜¢š•›™š›˜œ’¥š™—š™ ›¡š–¡‘’•¡“’š›’›”™˜—›š˜š¢š“™•˜–‘—ž”ž¢”š“®”Ÿ•¤–”–š–•˜’œ’›‘‹–œ£ž–š“–•žœžš—“™™’š™–Ž“˜š‘—•”“¬”“žœ™•”–•–—œ–›•šž””™˜›¨¤žŸ˜›—“™–¡˜§”™’ ž™–•žœ™—˜›Ž’ž—– •“—œ›œšš—’˜—™™—“˜š¤’—“œ›“˜œš™˜Ÿ˜”¢¦š •“”™—¡—–‘™™˜Ž˜¡—Ÿ˜•–š“—–“—”œ—™™™•›˜—˜ž›•”‚˜›‡š‘—š•¡‘˜£˜•”˜˜¨œ˜Ÿ–•–Œ™˜‘•š–›“–œ–™œ–—˜Ÿ™˜š“™’ž”–•˜š”–¡”›™—–™ž–—‘—•——›•˜ŽŸ“›š›œœ”ŸŸ™˜’–•–– —•”•›—Œ•—˜š—•’— ž–—•™“š•˜›˜”—¡ž™ž˜œœ™›•˜‘™›—›˜•”“•—›™™––¡–šš—–˜–——ž™š–˜“˜šš•–Ÿ‹š˜š‘—œ™” —”—˜‘¥“”𑤒—ššš”•œš—–™žŽ– œ˜–š—š•—–œ–•‘˜”Œ—œ™˜“›•š”ƒ®Œ¤•—–•ž—–‰¥–œ˜—•›• ˜—–Ÿ—𙑗‹”šœŸ•§šŠ‹Š—˜ˆ—˜•š§•—‘š–˜¢–™˜œ˜’£™˜˜©˜œ”¡—š•—–—˜¬—”–žŸ˜¡Ž–ž¤šŽ¡—˜™—Ÿš—›–ŠŸ˜žœ–›˜›™—˜˜›—š˜“›—™’Ž” —–ž“˜”š ‘•…—‘–™œ›˜•—ŽŒ¢•™™šˆ™–š”˜t—¡—©š™•‘œ”™•–˜—¢˜˜˜¦¢™™—™™˜ŸŸ˜—š™¢œ—œ—›œ–˜œ–—–›˜——™–žšž™™šœ£—›œ”—¢šœ†–ž–›—§œš”œŸ£“œ ™—”˜™–˜…——™˜—’’ ¡——Œš —•š›™•—”—£ž–›››™Œœ¤˜›”–•——šžš”—˜™‘Œ––˜•~™•––––•…˜–—™—š‘šž›–—‡”š–—š•™¢™ž˜˜›Ÿ›———•™ž™™˜›“–Ÿ˜“ž™™”—˜œ›™œ—’œ£”šš–™˜–•š•™˜œ‘–š——£š˜–š“‘˜–˜–œ™š›š¤”š™ššž˜˜Ÿœœ˜—˜š›–•š’œ—•“Ÿ”™”’œ—–›™—™‘Ž—Ÿ¡’Ž–“‹š§•‰•›—˜–¡™–”––‘—›¥¤–œ•…—žš˜˜™š›š•¨˜•—™•™“œ« —˜—˜–‡šŸ˜’‘˜žš˜¤‹“¥”—Ÿ™› †•šŽŸ™—œžš™š•š“˜¢’˜–““šŸ•”—˜ž£—™”™Ž£Ÿ™š™›•¡ž–Ÿ•ž˜“–šž˜•Ÿ•›——–™™•””›£™•˜™–Š¥—£ž‹˜“™–˜ž™•š•– —›šš—–“¢˜–—–’™£—•˜˜”ž“šŽ—£™™—˜”œ“——“–•›˜“˜™™—˜•”𡣓™™ ˜œ™–—œž›”“¥˜˜–™”œ›žœ™š ’ š—™Œš©™–‘“–••£œ|ŸŒ¡”˜•œ”œ”– ™——•—“Ž˜–™—“œ§—”—𙗒𔕒›¤“—–˜ž––•”–•˜–˜™ž ˜š œ’šš˜˜›—˜’–›™›¤–™–”™¥—›š›‘”œ˜–˜“–‘– ”–”š˜š——•ž˜˜šœš—”–Ÿž˜–˜˜–¢œ™–™˜”•𔕖“œš•šœœ–š˜˜šš–¢š›‘”Œ——”™“šžŸ˜—™œ›šš•— ¤¦šžž™“˜˜˜™œ˜š›•šš›œ˜˜˜™—š–˜•—¢™–˜‹›•”¢š–—™ ¡ž——˜—”–š™Ÿ˜œ‘™˜–œ“ —›˜Ÿ”‹œŸ›˜š—•›˜–”—–¡—œ™˜–˜§œ™™—šš—”¥™™”¡—›š“Š›”™––™”š–ž’’š˜”—®–™•––š——›•˜¡Ž›šš{”˜£“—–˜•˜“™£ž”›œ–š›˜˜–Ÿ”˜˜™©˜œŸ’œ˜—ž–š”›™œ¡™˜ž™—“—–˜› ¤˜šš†žŽ—ž–›˜•˜˜–›™˜š•™ŽŽ—›”—œ”›™“››—™™y˜•œ™™š™—š–•˜š˜—š—𥗙– ˜™˜˜˜ž¥Ÿ˜–š’™ –™œ™“’˜˜Ÿœ—¦™“–—›˜—Š—˜ž›—š›š€šœ £™˜˜—›˜—™š™›ž“™›—šœ“ ”–••—©˜—™¡š¥•ž”••”¢˜“™œš››— “”šŸœ˜•†——š–˜–¥šŸ–—›š–𙙙𒙙”›”†—œ–œ¨’—•˜–•”•Ÿ–›™””˜˜Ž—š˜’šš•—œ–“¦›’™—› ˜›˜ “••–—“–›š •š›œ–Ÿ˜–›••™—š–—•›ž˜™—“’™”œ“œœ™˜ ••™˜—”Ÿ™œš“™›˜”•——”™™˜š›™•™¡Ÿ˜” ›—˜•”§—›š•–“˜™———“”š™˜•’–˜›™š“›š‰œ”˜‘–‘–›˜“™•—ššœ’——˜™˜™——–š•›™œ—š˜–‹™˜Ÿ—šš•˜ ˜›œ™™“—Ÿ–’™œ–˜•Ÿ•›“—žšy˜—™›”š˜˜“˜š™Ÿ—–’™ž™™™”š—™˜——•žœšž›–Ÿ”Ÿ”—˜—š—‘œšž’™™•™’ ›—– š‘™—‘‘–”–••œœ§œžœš–‘˜’›Šš’¡›šœš›“Ž–œ›“–—˜–£š—’”›¥ž¡”Ÿ—•˜—–¡““•›™Ÿ¡—˜ˆ˜”—˜“–’›–’‘Ÿ“—“›“œ˜˜˜ž—œ—’”˜šš•™—–Œ•›•’•¤˜›“”›• ˜œ••—§—‘‘‘œ˜‘™˜•““œ–———•–—–š–“š•¡š•–”˜”•œ›—Šœ”¦’›“›—”›Š˜’–ž•šœ™•”•œ—œœ—§š“’˜™–•—žœ„˜›—”›–™™Ÿ˜––›–˜—š—›Ÿš—••–—š™›•˜”𛤗——™–˜š™œ“˜—œ•˜–™—šš•—˜•˜™Ÿ–“—–›™—™©“˜™—™˜™•—˜›–™•–˜››ˆ˜¡—›”•˜Ÿ—›˜“š“˜–‹™š•™——–˜›•—•š”›™—·˜—•œ™š™š•™˜™–›œ«šœ˜˜——˜˜˜›™–™–—˜”‘“š“—–—™–šš“•˜˜™”™››¢–“—–—•š—˜”š–™›˜”ž˜™™š™——™˜›šš™’•š™™—••™—”—š”–˜——˜œš–š——’”˜–—–•—•˜˜•˜•˜ ˜––™—™•š—›š–˜™˜˜œ™˜”—›—•›‘•šš “—•Ÿš˜–”¥—™™ž›¢˜–™™œ•‘”›“ž”£• —–š—“–˜”¢’™–ž”šŽ–——–—Ÿ£˜”™‹œ˜•˜›–•””›”š••›ž–‘˜˜ ›œžš—š”˜‘™–œ‘Œ—™™š—˜—˜”›••£—¥š”–™Ž’”›–˜™——”™•Ÿ–”š…™š–˜‘—š—£—•›—™’–¡›––™—¢–œ•—š‘“žž˜œ•™š˜’– ™—˜˜›œž”›˜˜˜•–œ–’™–˜”˜’ž—£œ’—–•˜˜››˜••”™˜–”—’›–••Œ˜›™œ•œ“—˜Š™›šŒ–˜—“•ª– £› —•˜’“—™–›œ™ž˜¡ž™”š™––—˜™œ™–šœ‰˜–•¥˜——˜—•–Ÿ˜—“£–¢—˜—‘™žŒ¡“¤’––™š¢—šœ˜™¡šš›™©– ›¡–“—œ‘—™“Ÿž™œ™˜›ª–œ•™™•—’– œž” —”™—™‘šœ¡–š™¢›—˜œ˜•™š—™˜——’••œ”›”š’˜š±“œš”—˜”˜“™Ÿ©•š•‡š”›œ˜˜œ•™••–•›“˜›§™¢Ÿ«šŸŸ¡’——”—™Ÿ˜ž›—–œ¡šš“¡–‹‘’•—•–›Œž—š•  ˜¡˜š–‘“š’›—•ž–˜–•˜™šš“œž˜Ÿ”•˜ž™—ž’˜”Ÿ˜——“£™–Ž•š™Œ”Œ— —˜š•”˜“™”ª–•—¡“™•›—”Ž“ ¦žˆ˜•›š–¢• ¢œ’”——’–˜¡œ››‘›–”œ£”Œ—–˜›“–š¦†š“¡œ–“Ž“”œš ªŸ¡—“Œš——™›•”›’Ÿš˜œ—™¢š™˜›™¤“Ÿ˜”’œž…¡š¢˜‰—™’¨£’™›œ™™˜ž—œœ’Ÿœ¢—šœ ˜—•œ˜—”—œ•œ’–Œ”¥’˜šššŸ˜—”•‘–” ™Ž˜˜——–ž—£šœŸ¤Ÿ™¤¥—•˜¦ ••“¦˜˜›ž—˜•£›œ— •œ›žœ–œ”“™Ÿ‹¤•’š•‘›•’š›š–‘’——§™™—“••©ž–›•›˜”›’‘œ™”£Ž˜–™ž—““žšžž¡š“™˜‘—˜–“™•“‘ž“š––Žššœ˜’ ››‘–’”›©™ ‡›™Ÿššœ ›™” –žž¢¢˜œŒšŽ™ž™–˜›—”•Ÿ˜  ™˜™›¥‘š˜„£¨žšš™“–•¤‘˜“Ÿ¢—–¦–—˜šœœ“˜™‹˜™œ›—Ÿ¢•“¢—š™ ¡—¡–‘–šœ˜Ÿ œŒ“š”ž”‡”˜£™––©˜¤œš˜”™‘›–š••˜™–›”š™¤š—ž“œ“Ÿ——’˜š¡š”š˜–Ÿ—žž›š ”˜”“—‘ž’¡Š’’™š——›–“’žšŒ—™‘ž–š£¢˜šš¡¡š•œ–}¡¯™š”¡“”›˜š–››šžž©œ«“•›¦œš‘œ™œš“Œ˜¢š“Ÿ’ž–”˜’”›˜”’—š˜‹‘—›’›˜šœ–•›–˜•˜˜ › –—˜¢Ÿ—›•Ÿ™‘‘‹¡•–•—›šŽ•›˜–Œ‘ž–•™’˜ ™™Ÿ“§š——‘š••”—™™š Ÿ’œ‰‘ŸŠ¤”›¢”—£˜™˜™˜—™™œ™’˜˜‘–˜•¦—˜•˜› ™Žš•‘–—š———•—˜–—“›¤–™—˜ª—˜–‘›š˜›ˆš——š—šœ™——˜š˜˜˜˜———™•™•–¢œ—˜šœ›–•ž©™–›˜—•™Š—™ž‘‹–‘œ—–˜•¢˜˜—˜‘š™–£•”£›–ž¤—“”…ªœ———œœ–—©Ÿ™•š™š¢™—œ“”¡–™—š›”š¥Š”–‘—€¥™Œ£š˜’›–Ÿš¢––˜–™£•Ž—‘—œ§•—Ÿ•šœ—›™•œ›˜™˜£©žŽ™”—‚˜›†– œ”ž•–•–˜›™šŽ—”—™ ™œž•›¢¥Š˜–•””™©—Ž‘’œ–Ÿ—–”š¢™œ“š“žœœœ’˜•—›“– ™œœ’ž—š›œ›•– ¥ž’œ™”’”š“£™ž–˜š˜˜™˜™˜”˜”‘—¤”–‘”š–––™¡˜”—œ‘•™Ÿ™””—œœž—œ ‘™—Ÿ’ª–”–˜–’Ÿ™”™ˆ¤‰—––ž ›™•žŸ–œ–š—››  ‘–•¡ž•™žš˜›——™œ”˜§œ¢“ œ—š~¦‘–š›ž¡œ “–—˜¡š•š˜–•¢•—•ˆšš£œ˜ Œž”œ¥—“–˜¦‘›˜šŸ’œ’˜—š•”Ž¡‡‘˜˜š¤’—˜›“’—››“™—––¦š©™•‡Š™—•Ž›š£œš”š™˜—•–‰˜–š—¶™—–ž¢”Ž™ž›“–˜™•𬖖™šœ–––—«Ÿš—™–™––£›™›—”˜››–—š—™˜“—™–––œ£“’’™–—‡˜“¦‘˜“–Œ¦˜—Ž˜Ÿš–˜œ˜›Œš•š˜˜•Ž˜—™|—˜›––¢‘œ›‘œ™‰™›—œ™œ•¡¡ ™•”©¤ªœ¡«›–”¢›•—Œ˜—˜Ž¡œ˜”™’–¤’ž˜‘“•—›–˜”—›–•š™–¦£—‹›|Žšœ•›š™Ž¦œ—”›—š—  ›œ››–•–‘š™ª”žœ˜•–š•ž“’˜•“˜œ“›’¡™–™”¡¡–Ž˜“œ“—›š™ Ž“›”š“—˜Œ—œ™•œ™ ™˜ž—Žš¥œ––•–ª•••š”œ™”‘š™™Ž‘“¥£ž›™ —™•‘¢—£œ˜”œ˜–”š‹—”›œ”™™•™š˜—šž—˜•’Š˜”–›ž›˜‘Ÿ–™›Ž™’˜™•—£¥šœ›—Ÿ”“š•š–‘œ›š’•‘¤—’œŒ™–ž–˜Ÿ–˜¢“š›š¢—¡—š›™—”§Ž˜––—”“œœšœŸ„‘Œ—žœž–˜§ž–ž›¥—™™œ›™—“™± –šš£š’—”’š““–œ˜›šš‹—œ›•‹˜›‹‘˜—“™–•™™˜—”•———’˜«””™š—˜Ÿš®–‹•™—•——š—˜œœ›•˜•“—˜˜™–šŸ™§¡œŠ™——˜š£š™˜¢—”™–—–ž¤–Œ”¡——•—‹™•ŠŸ—ž—–œŸš—”—š¥••š›˜¡‰œ‘›–™™•§™˜“§“•ž˜•ƒ’›¡’›‚˜—›¦›¬–‘”£Ÿ•–—“™šš–›‹Ÿš•ž™–˜¡¡–¢˜Œ—˜~•¤›™—¤•”–™š—šœ™š–𒬙“›•¦—••™“™š–™”’žœ™‘‘“’—š˜™“™–•–™—›“—–——š“›–ž™š˜—•ž–™—“’——“šœ ‹˜˜•—|“—›“›ª— ˜˜™ž˜œ–𙕗œ ––›žœ–˜›—›˜•“ ––„š’ž¦˜–“•˜—–¹˜œ”˜”‘ž™¤—™ˆœ—›•—š’—œ•–‘—–•••¤™—ŠŽŸ”•’™š˜™’£“™“˜™‰™”—‘´—˜–—𔓖˜œšš”Ф›¬žŽ—–ˆ‹š˜ª®˜—ž˜•ž”“™˜•‘”—›˜•žœ––•ž•œ™••›ž—Œž•¦– –™”•‰œ™–™™œ“–‚–’”š•’–•”–Ž“š™™•š››š¡–“–š™—š¢”šŸœ™š§”˜““–¡–•””ž¡‘••›•ž™—›•™› Ÿ˜žœ–™—š¡”›•š›™•—˜—ž•™›ž˜œ—•˜™™“­š›–ŽŸ™˜——œ—šœ–œŒŸ¡˜—œ˜ŸŸœ˜”ŸŸ˜–™˜—š˜¡™š”›“›˜qš’œœ“”™››Ÿ™™˜•—“”“›•Ÿ˜’š—š•Ÿ•™™š—š™—œ–œš—•––•–˜——˜—˜——–›”˜—™•–••–˜™™•¡œœ™——˜ž˜–•—–˜——•——¡š˜””•˜—•”–‘““˜š››˜–——˜™œ•–Ÿ›—–™˜–•˜”——ž•™’š‡—‰Ÿ¡™š¨œ˜˜–‹•ª™–ž—–Šœ—˜‘‡›“—––———𢖛˜™š£˜–Žž–š™˜›–žš¡«—Žœ˜¤—š—””˜˜v˜–™¡—£š—Š¢ž•—ª˜Ž–Ÿ›—œ—˜¨––¡–˜ž—‘© ˜¡v–“«™š–˜™–š˜“—”˜˜™› œš›‡—ž™›™°—Ž•œŠ“™›§¡œ›™¦™–¡œ™–š“˜™’Ž˜™–—˜š—šŒ’˜™žš™˜——ššš”›™›™š‘•“’™——˜——•š››š–•˜›šœ™ž™•‘”–šƒ‘“š˜–•¦™¦˜¦—™™˜–•’™žšœ”’š˜¦—“ž—“˜•–“——›œš‹˜–™™••¡—™£›ž ––¡›™œ‡œ•™›•—‘––£š™•™’ž”’ ¡“™’™Ÿ•Ÿ”  ’›•œ”›™›ž”—›››œœ˜©©–™–—§›‘™š–™–¢˜‘œ˜™˜™Ÿš–¡˜—––‘–œœ””—“—›˜–”™“›•–›š–™™žš”——“žš—š•©’š˜Ÿš™ššœ‚—¢£˜•›”•œ–••˜–Ÿ›–˜•›˜¨—––˜˜—–›”–ž¢“˜›™™•““”•–•‘™Ÿ››™——•˜›ž—•“ ›š™› —šœ”•’˜š“™¡ ˜ž™™–•Š™˜–š™”™˜˜™£«™ž–™™}™–™®š™˜š–¢š™—™˜Ÿ•š“žŒž———š’—ž›˜‘—¡–––˜¦œ˜«™™•£š•—¡šž“˜š–›•‹™˜ž—•¥Ÿš“¥–˜•š¡®–‘Ž‘£|žž———¨œœ˜š—›˜™•Ÿ™…šž‘š“›žš—™œ•™™™š•“—˜š‘‹—™—“Œš™¥•›—£Œ˜ž—™™”“–˜›”Š”™™”™—’ª“ž›œ‘›™”¡–š››ššš™›—¢œŒ•š™”—ž’™›œ˜•™šš˜™•Ÿ™š“––™—š’—–›”‹–˜œ˜— ˜˜”œ”™’•›šž™œ—›˜œš‘•™Ÿ“›”Ÿ’–—•™—›™œ”›—” —“˜––•£”‰ž•‘œ——šžš—›˜¤›˜”œ™™–—œ‘™–˜‘–•š—š—›¡“—–™“–˜™ž—›•˜””–¥˜œ™˜šš˜’•›–𛓓””˜”š›š–šœ‹—›˜—“—›™˜˜™œ••—’˜˜‘—” ˜–›——j”›•™Ÿ•—™œ˜—›–——–£“™—š›š˜š˜–7—ž‘˜——œ—”™™š™˜™ ž˜”‹—œ¡”—˜–•™—Ž‘†—š£•šš·šœ–™ž“•”œ™œœ——›£–Ÿš––™¢›§–•–“”˜–˜Ÿ–ššš’™†§Ÿ”ž˜”š›“œž›™™˜•œšœ”œ˜™’˜ž•Ž˜’€™˜—“—™—œ“”¬œ™•™—‡œ‘—œˆ•–Ÿœ™œŸ£™–—›¡Ž’Ÿ™–¢›œ—™žš—“œœ˜™”•š˜šŽ™‘”›˜••˜›–—™š›”™—–—œ’“”•œžš™˜ž˜›“Ž ˜¬œ›œ›š™“Ž˜”–Ÿ– ™”ž“˜˜™œ™™™š–œ’’›œšž”˜¡› —”’ž–——ž¡žš›œ’…Ž—™™–œ™ ––˜™–˜—˜–—˜–›–•—žžš–››œ—–›™••–—˜–“‘–š›– ‹š–”žŸ’–ž™™–––’Œ••–›™™Ÿ•›™“•˜—”’œ‹›—™¤˜œ”™œ“‘—›™— ›š–™”•™’’ž–—š™—š•šœ˜—™ž”–™¢•—š¦—˜—”˜Ÿ—•˜“š›“œ’’“™¡š’ –“Œ˜š‰šŸ›™™”œž˜”œ–ž™•“‘žž•¦˜œ™¤š–—š˜‘ž—“–—•£•™˜•š–˜“šœžš™˜•œ‘’œ––—Ššž™”œ™–˜ž“–”•™‘¢”žž•˜¡”“’˜“˜›š”›“™—˜•˜¦š˜•”“š–›••›š•œ—™”Žš˜«™œª•œ™’–––žž”¦”–’•œ–š˜˜™š™’œ‘”˜–“œ–›—šŸ“˜›”–œ™–«˜ž£–š—œœ“˜’š“™ž–š™”˜›•›˜”““™–—•°™š™–™•ž’ ‡š–œ–Ÿ”šœ›Ÿ“™Œž•š™–Œ“Ž”Ÿ˜œœ—¡Œ›––Ÿœš—Ÿ˜˜šŒ™™Ÿ ™‘™ž”–——–›•¦—”™•›ž–’”𢓙‘”˜”—›•˜œœ‹”“—™“—›Ÿ Ž§——šš˜–••’–Ÿœ¢™–š–—˜š—™“——’¥—©Š“‘—ž›˜–”™–—‘™š—›ƒ‘›œœ›¥”Ÿ¡–—Ÿ™›”“š“–œ—–’˜œ Ž—˜–™›˜˜œ–›¦“¡—˜––‘˜› —š—®—Žš››–››Ÿžš–œ™“œ’–˜œ™˜ˆ™—”—–¡¡–£Ÿ™›‘œ£¤— ›•Ÿ—–•£—˜—™šˆ˜¢”–›šŽ”œ›“¡›•˜¡“œ—”¤™—–š—š››œš™ “œ„žš“›˜Ž–š˜›–šœ—šœšž˜™•šŽ˜š”—Œ›˜š–˜œ‘œ›˜œš™›™•–š–Œž¢”–—›˜’£œŸ—™œ’˜™œ—˜‹›“™“——‘™ž–’™–˜˜˜›™—–—™œ–™–š›£˜š–™›Ÿ—˜˜š”˜ž––˜’š˜—šž““˜˜“‘•¢ ¤Žž™Ÿ—“¡šœ¢š˜›–˜”•‘–¢–š—š—“•‘”“šš—œ•œ“–˜—–ž˜•™˜¤‘›ŒŸ™–—š’•˜œ¤™š™—š ™›š•˜›’˜˜™–—”‘’™–“£Ÿ›Ž˜™œŸ’¥š ¢—œ—›Œ›™ž”•£–”—›’–”–—š•šŽ•–™›˜’žž™”š–˜¢—–Šš•œ› š‘™’—š˜Ž›™–“”˜™—“Ÿ™•—›œ˜™‘™•›”˜ž•œš˜—˜”–™Ÿœ—•’Ÿ“œ—š—“£”™–”™—˜˜˜ ›˜¦› ™–š•š›˜’˜””šžš‘Œ—–œžŒ—’œ•™¦›“ •š›Ÿ–—™š–›Šž—Ÿ”š—˜š™™œ”š• ˜˜˜™œ›™”•™–š›—žš—š“”˜Ÿ›šŠ˜˜–˜™–’˜›š–¢œ’˜š”Œ™—›š™‡”—›”™Ÿ—šœ•”ž–š™—ž˜— Ÿ˜œ™—™—œƒœœ—œ••—Ÿœ›¢Ÿ“–œ˜•›œ—•›’—•›k” ›Ÿ–“–˜“—™šŸ–—™ž“˜™™ž—œ—Ÿ™ž¡––œ”› ‹—‘›ž”” œ¨¯¤¡Œ—Ÿ›ž–™Ÿª™••¡˜… œŽ•‹¨Ÿœ—ž•œ—•£Ž™—”•w›“™§™–˜–š‰—“š›™¡–™™œ‘Àž˜›˜¢’™›–¨›Ž‘†™˜™Ž–”£—‘”›”’—™Žˆ˜˜”–¥˜››”—•’™žˆ›š˜†˜šr¡™š„š˜‘£¡˜™›§˜š•œ¸œ˜™œ œ“’ž’ž’›‘˜ ’“š’–Œ˜vœ›ž¥š—Œ’›–•¢˜š–—™ž™¯™ž—¬•š’©œ—’”‹¥¢”››—˜¢–•¦Ÿ™ˆž•™––’–™š• ™˜••˜“šš—™¢™•“—™Ž—™˜”˜ž——˜•ŽŠš™š—•‰š“–——–€—”™”˜˜•–—˜™•›™••••˜˜œ–œ˜˜—š‘˜™‘œ›˜•Ÿ•˜š›– ‘”›š¡ž˜Œ””˜Ÿ— ”–˜˜™‘žšš“––¥˜—’›š˜®”™˜˜™›—š˜•™˜š˜œ˜––šš™¥¡¢˜•™—˜˜•”››”šˆ•’—‰˜•¤™©–•“”™´˜˜”˜’—’›–˜–˜•£Ÿ—šœ–˜—›Š˜•—–›•™–™——›—š ””›•š›˜˜¡–™—±›š•”–—ššž˜• ‘—•–”—‘—•“š˜§š™™’ˆ™“™–™ ••˜™’’¡———š‡†£–‘«¤Žœ¨•§–œ˜™•‘–“—™˜¡–—•–Ÿ••˜–‘“˜—¡˜’—–”——™™Ÿœ•Š—˜˜–ž”–˜˜”œž–› – ™‘™““š–™”•˜š›—ˆ™˜™Ÿ™›”„¡ž˜•™™––—±”•–˜–—¦š’Žš‘™—˜—–‡–›†˜••­œ••‰˜—ž™™’”«›•™™—˜–˜š˜“š‘ ’”š˜ž¡š¡›“––˜ž—˜–•™•¤›œœ˜œ‘ž‘—ž”Ÿ–—–œ™–Ÿ™’›“–š˜˜•›–Žš”“—™•š—œ˜œ˜˜™–˜™–””–—›˜˜—™œœ˜™›•—š–––“—“—š™œš“—™—›˜š˜—•——“–œ—˜˜•œ¢Ÿ–—––˜›––˜•™—›”—–˜šššŸ–š˜—˜”‘››šš˜›–™˜––š–œ˜›™›žœ–™›”˜–”šž“—‘–›—––˜•œœš–ž™œ››ž˜™œ¡›˜“‘–Ÿ˜š—™›žž”–ž˜š—™•š•™”›–œ•ž˜˜”•›w™–—œ˜œ–—š—™™™™‘“”˜š˜¡—™—›O—–œ˜˜“œ™•—™›–š•—“¢˜˜—˜‘”™›–¤˜š—ž˜–›–¡—œ˜–˜œœ™œš –““š•Œ˜—Ÿ——˜’™— š¢›˜–•ž˜‡œ™••”— £–—˜”–”•–¢™‡œ”–˜•˜›“šœš›š•••‘ž“œ›–—‘—”’‰“¡š“™¥•ª–›—–š¡š˜š˜”›¢˜ž £‹˜“ŒŸ’ž ™—–š™™“™•˜™–ŸŸ¬žŽ‘˜¥œŸ™–˜¤š—–œš’šŒ­—Ÿš”‘••—“––™¡™—™”›‘˜Ž•—˜˜£›Žš–¡™–”™š˜œ—˜––”œ—”“’”˜›–—˜›š—–˜”—ššŽ–š”““—˜—–—•¡Ÿšžœ›™ž˜—™˜—“—™˜™–”œœ˜™•‘šš”—’—“›˜œ—™¡•£••”•“˜”™™‘™•—’™™Ž–•œ¡“˜—–“•“‘žš–”•’Ÿ˜¡š—•œ“—™œ””•“¦šŸ™˜’œ•‘•–— ’’•—š˜˜’™—”™™”¡”™œ–—š˜¤™”˜Ÿ”™““—–—˜œ“˜•Ž‘“˜¢’˜”˜”•™‰”˜›š›—–—“••˜‘ž˜š”œ›•’ŽŸ›˜žœ™•–˜™——••ž–˜”› —š–˜—š™†œ™•’™•˜œ™Ÿ››’™—š›š››–’™‹¡œ‘Ÿœ™˜ Œ—˜˜‰’—šˆ•™••˜”žš”™™–•˜—š“˜—˜‘›”—Ÿž™›“˜ ™’“™‘œ‹Œ¡‘—ž™›Ž”˜˜—‰–˜§”—˜’Ÿœœ —‰›˜”‚¡›žœ‡–•Ÿ˜›“›˜––—Š™Ÿ‘‘”ƒ——š“œ–š˜•›•—™œ œ˜®Ž–˜–›‡¢“”˜™˜“”’“™‘–˜ž™’‘ „›”“—œ“œ¡—™”’›‘’ŽŒ—“—š§¥™žŽ›•‘‘¡›––Ž˜œŒ–˜œ™–ˆ—• ŸŸ””Œ“•‘–‘Œ¢•˜œš§™”˜¡•”œš™‘™ž˜¡šž“¢š˜™––—™•š–•˜™•‘˜™ ‘—•œš›š•›š™™˜“˜œ•—›™•’£š¡—“•–””™•›šœ˜œ–—Ÿœ™˜•—˜š–›œ““–šš™•”œ˜—”•™™—“§–Ÿ˜–š›————˜“––˜—˜™˜™’™——˜—›— —“™™—‘›œ¡•––˜’š˜›”™”™›’’›œ¡š”—•‘˜‘••˜œ”™ –¢š–Ž˜“—£œ™ž˜¢›˜ œ˜’™‰˜š’¢¡”’“œ•–’—””›˜˜–œ¢œ’”˜—••™Ž–——š–™š”’›•œž™¢¥–™š˜—œš˜–Ÿšœ’”š˜˜™™˜š“—¡™˜‘˜•œœ•š™¢ž˜Œ™œ—˜™—•—‹•™”Ÿ” –—–™—›˜’–š—š™™–—¢•—–›˜•——˜‰™™•”š“š¤–ž•˜™˜•Œ–ž˜š¨™Ž–“ž“‰–‰˜”š›—““˜¥—˜˜˜–•Ÿ˜’›´…žž˜™––”™”¯•–š—š”˜–‡š¢š›”™”˜—™–™’™™¢°~ƒ›“›–—™£§¨š—“ž˜“Ÿ˜žš¢™Ž¤–ƒž¡™š—–ž——•—››˜—•›™Ÿ©”™œ™¥ ™–™Ÿž ™—’š™˜Ÿ¨š›ž—Ž–š“–“—§£—™—š–——’—œ˜•¥–˜–—“”’›˜˜œ—•œ—Ž™œ—šœ˜›—–œšš–•– —‘°œ–—˜’’™•žœ”–£’•’‘•™™’Žšš˜‘™™™—˜¤•›™›“˜†š”œ”š——œ—œ™•”˜™™•—”“˜—Ÿšš”•£˜—˜›•–˜—•––š˜˜˜’•–”˜˜•˜ššŸ›š•”›“’—›››šœž™››™“–š •˜ž“™“˜š—˜‘š˜•–•—–™™”œ”†”šž•˜Ÿ——˜•’™”˜•™š—˜˜ž›˜˜™–›— š“”›“Ÿƒ”œœž—”——¤™›™•™œ“’˜™š›˜–…–ž™˜Žœ–—‹«‘—–‹—˜Ÿ™—›˜—Ÿ—˜›–„‘š’®‘ ‰—Ÿ˜¦™œ–›Ÿ–š˜šž›œ–”’˜™˜•’—™™›˜˜™™•›–š–˜™š’˜˜–‘™—˜š|›‘‘Ÿ˜˜™™‹›–Ÿ—™š–˜›‘™–™™”’•Žšš–Ž¥˜Ÿ–›š›˜ž˜˜–¡‘–’•™–¢••­–š›—˜’™£š™˜™•™‘ –š—™–˜œ™¤  •šœ›š•Œ¤˜•—š¢œ¢ ››—– ž˜˜—š——‰—›”†™š›–Ÿ›™—œ—•ƒ¤£•˜•—›——¡š”›™—‘˜””‘—–¡š’𔂗 «™Ÿ˜£™œ‘Š—•šœŠ”˜ŽŽ˜‘— Œ———›˜š˜š›“£—›•ž¡œœ¦››”—”””–“™–›œ–‰—•”›‘™–•‰™š“𗦙”™Ÿ™™š›’—›˜œ˜••ž˜œ˜‡——˜— ˜——•˜£™ž™•™—˜ˆ˜š’”•˜—ž–•—–’•š’šŽŸ—†—–——–¡—•“››™˜Ÿ–™š—–œ—›Ÿ–™—“”šŽ–ž˜š””•››š ™¡›™š–Ž—™¡”—š‘e˜Œš›–›––—“š™›™“—‘š–”œ—• ™‘–—–˜”™œ–””‘Š–——•——Ÿ•——š•—˜’‘™‘Ÿ•—•“––™“–›—›–—šŒž˜š…Ž¦–œŠ™”™•›š”—˜˜—žœ•“€• ”š—–›˜Ÿœ—–—š–”’–œ“•™›™——ž•™Ÿž¡”“–œ•“™“‰˜—–˜—‘š˜™–—˜——“™—‹““™›˜™•Š˜™™¬—š—–£œ’š‰Ÿ˜«•••œš—› œ™ž–¢¢›”š‘˜•‹†™––˜¡——¨”™˜”𤥦¡—–˜”  –“›“š—’¡“™˜œŸ—–Œ™—Œš ˜•œ›Ÿ”Ÿ–“¢—•™Š˜––•–†“–š™–—Ÿšœ˜–—œ•’”•œ˜¨˜ ——™”“–—𛕗™•›—“š›˜™ž™œ–›œ˜™šž——ž™­——’••™—–š–•“š••–”•—š“‘•™š“œ–”˜œ“•™”¤€Ÿ“œ–‘”•šžœ•™”•‘’Ÿš’œ—™•™œ”–š–¦—””˜›•–—–”•šš•–”™ ”•ž–••𙢕𖙔™›”‘—™ ›™˜˜”˜ “˜—˜–žž––‘”˜š”™‘™š–š—–•–—™–ŸŸ•˜˜’•’œ“—‡˜‘›˜——’”œ•œš”—”•”—œ“•|œœ¤‘˜˜˜œŸ—œ›™˜ž›–•›–—–œš ›•–Š—œ•’”Š‘¢”˜˜ž—™–˜ –£š™—–‘‘˜ —Žššš–—™•’ž§™š™™–Ÿ˜——˜•””˜™“”šž’šŸ—™ ˜˜’—˜——˜›™™–˜›™–š…š“š•›™›–——¦¡™ž•˜˜•™™›–›§œ™‚›—‘—ª¦ž¡™˜š“˜™˜œ™›™™˜Œ‘€˜—¦š›š—˜½š––”š™˜š›“—˜šœž¢˜—™š•™˜¢•˜ ˜˜™™Ÿ“ ›˜Ÿ”šŒ–”™˜–u™˜š™ª¤–Ž•š–†˜£œ˜–•˜š™š˜”—’ ˜–——”š—˜—˜˜™—™˜š—œ˜”¡›––˜¢››—––Ÿ•”˜˜•—‡œ˜˜–›¢”™›••›š‘—••—“•˜”•šž™›”˜˜¢šŸ˜š™š˜™š›–•˜˜–”—–™¥˜•¡™›˜˜˜œ›”–›˜ ›š••ž•™—š¡–‘ ˜Ÿ›™œ’œ™–˜–™¡˜™Ÿ•™”˜›œS™š˜™ •–žœ˜š–———“˜œ–ž˜”™¶ž—œ˜˜˜˜•›˜™š—˜•š™—›™™›”œ†œ•“——” ›”›™˜šš˜’šš•šœ——˜‘¦›•™“™˜•›‘“™Ÿ™š‘ œ—š—Ÿ–’œ–‘˜š˜‘–“šš˜™š’•“—–Ÿš£œœ¦œ—š—ª‰¡‘••˜•”–™—š¡–™˜›˜—‘𙑧”‹”œ¤—œ™“ž˜˜™™”•™•¦¡™›—™˜–”™ŽŒ¤™ Žž£–œ—£š—•£“‘–•ƒ—’žŠš˜™ššœž•›‹™£—”¢¯–›ž˜ž’š˜—µ‘±‚Ž––™Ÿ—›”—š—š—™˜ ”“—šœŽ›œ”Ž˜’™•›—˜Ÿ”–¦¦—›Ÿ™›¤¥’•˜™—š™› ”›¤””Œš¥¥˜˜†˜•Ÿ•••—š–š”™}œ’ ™›˜˜š••š‘‘—“˜§•™™•¢‰›ž–™˜£ž¢Ÿ–’™•šž’˜——ž¡–”’”œ™ž’š™™›˜o—˜’•˜˜–‘™’›™•Ÿ‘—™–©ž ˜•›•š–“˜š›Š—¥˜•›•™”•—˜”‘¡š˜™Ÿ—“™” ˜”™”™™Žš‘™˜–œ›—”™•›–—œ•š—œ›”˜˜—›–“›“Ÿ•’ššŸ˜™—˜’š•~˜Œž–™•žœ“˜–˜žš—œ–›„˜›—µ‹–ƒ•˜“›‘™œ˜”’™›™’›———˜’”¢–žš››œª“™™˜–¢–™”–šª–•‘š‘š’‘™”œ–››—˜Š›œ–—–˜—–’•œ”˜š›‘”•—ž™’’–œ–œžš–—›¢›œ–š˜–’•–›šŸ˜•˜Ÿ¡ —”š”˜œ™–™˜›š™•š“•˜™™˜••˜™”›Ÿœž”‘£š—˜šœ˜š™™›˜”•–›Ÿ›šŠ• ›“–œ˜›žš•œ¥“ž–•›˜“Ž˜˜“››šžŸ’˜”š’žœž–˜™˜˜™˜•š™—™––¢›˜“–’™¥–˜šš˜šŽ—˜››Ž™™˜Ÿœ’˜•–œ—–›“›—–‘—™ ˜•¨‘“—••›™˜”žš›‰••ž—˜š›””¢•Žœ“–™ ˜—Ÿ‘—’›š¡”Ÿ–›™‘’š›—••žš›˜—–šœ‚§Œ–•œ–𔥛‘› ”—™›Œ—––“œœ—‰”ž™¢–œ•™—’“˜—“˜›¡œ›¤šž—¤š«––•œš¦—ž•’™–••—‰—™œ ›–“’–“œ“–—Ÿ˜ž•”œž”™—›–œ•“”¢š—•‘š’’›—›—ž˜¢”šœš”¥•‘”˜š’›’™š¢“”—™¥”ž”“˜Ÿ™¡™”‚‘™›•‘ ”z›˜§•“˜™¢•˜˜—”› ‘”™¤›—“›Šœ—œ“˜ žŸš—–§—˜žšœ£¤™——™ž“™——£ “•š“Š›Ÿ˜•›—•”œ ™ ™“‘”‘™•™”–•™—–ž’˜›–”š›•š”˜‹‘ž”Ÿ›š•”—˜‘•˜–—–š’˜—š˜’š•Œ—™‘¦¨Ž—œ——™••Ÿ›˜˜“˜š”Ÿ••š˜˜•˜œ™™ŸŒ“’œ”› ˜–“˜—™–™œ™–ž— ™•—•Ÿ•‘š˜’•—››™—™—šž˜›¢”›–”˜ž•™”œ ™”š™—™‘—–™˜œ‰••‘ ›˜–ž˜‘Ÿš “š˜Ÿšš›§••—Ÿš˜›››š™Šœ’œ—¢•–™”—“œ–©‘”•˜–›˜˜“¡˜”™—‘œ’œœ•Ÿ›œ–™”¢˜—™——˜˜›™œ•˜‘˜›˜™–Ÿ‹™£–š˜›š“–‘–•ššš˜˜—œ£™—š™™™“™š—š™•œ”™•™š™Ž—Ÿž ¥£˜–—Ÿ¡”˜“˜—Ì•™˜–˜›ž“—˜—•’–™š—’š—˜Zœœ”•š—”˜™’—•𙕗œ–—‘š”˜˜Ÿš”“žœ›–“–”–Œ—™›¡•‡˜˜š•›…˜™•š—›˜–™ž•šž“˜—š¥—™š“™™š›‘™šœ’–•œœ‘™˜ ˜”’ž—–——›—•›œ˜™š˜—š’“š›žŸ‘—›˜š™š™‘ ——”™”˜”“–œ™—›˜’Š“¦šš•™¡—š•œŽ”š˜–™ ›–”‘–¦›—’¡”˜š•œ•™—–””Žž™•œ•·›——ŸˆŽ™€˜ˆ–š“•š–š—˜–š‘š•‘›‹•™—˜–››§¡—™“—¡”˜šŽŽ™•—¡›ž•Ž—”—ž–™ž•˜ª–ª’¡™“—˜–¡›™˜§”œž—•¤“•—¤˜ƒš˜••™œ™”­¯–•Ÿ˜– ™‰–œ’”š”˜¡˜˜”—›–Žš›Š°–Ž™–›™—Ÿ–•ލ›Ÿ™••˜‰¦”™—•Ž›™š—š“ž–•œœ‘œ“—••–œ•‘~˜•£—Œ•˜‘”››— –—•–”•¤—‹›œš™¢–•¨™›•”šŽ˜œ™œ‘˜”šŸ”—™œ˜•—“š™‘š’•ŸŒ—‘’²–ž‘‘•™™“‘žœ–’—ž˜ Š‘™˜”——–Ÿ™—‘˜š™Œ– Ž—–‘˜˜¤œ”™”¾—˜—–œ—š“•œ•—ž’ž•‘‰”“˜”—–š’š›•‘¡”¡˜ž –šœ•œ–™››’œ’™Ž™˜™–”’•˜ž”›‘–––—˜”™œž—–”—’Ž™”“”™œ œ’” š–™ž˜ž”’›“•–”žœšŸ’ž••””›–”˜—™™šš˜™“–˜š˜ —•”•€˜“”˜•‘”œ‘––œ•˜‘ˆ™—”œ˜žœ|™—œ”—š’‘š˜›—ššš™–Ÿ›–•™žš—™š˜£œ››Ž—™„–—ž—ž™Ÿ–šž™‚”˜Œ–žš˜’“››©”Ÿ¤–”—›™œ‘š“ŸšŽ››ŒšŠ‘|›———œ™—˜“•œ››§•‘›“–“¡–šš˜˜š•‘™Ž••“›–­–™˜“’’˜””—™”šž“Ÿ—¡›•œš™‹›—™—𤢤“”žŸ–—–›‘™œ”¢™›™¦š˜˜Ÿ˜•’››Ž—•”™—… œœ›‹˜—›™˜Ÿ›™˜”—•˜•”¤‘’—šŒ—ž–›”•›¢œ—Œž–š•—‘›š—“–——š–—˜›š–¢”š™—•¤‘Ÿ˜—––œ–™Š™–—˜š—¢“¡”˜Ÿš˜¥Ÿš•Ÿ—ˆ™•”’˜—š–“ŒŸ”—š–š“˜š›––Ž™—™™•™žœ•‡š–”•œ—•—“š˜“•™œšŸ—’—œ›’›ž–˜™¤˜•——œ–—•›˜˜—˜™˜˜”š —™˜œ–žŸ—™›—‘£––Ž™˜’˜ ‘ž™–” œ˜’”˜«š‘£••——œ”›—™•˜š”“˜š••‘œ–—– “••“‘—–•›™—¤”“–™š–›–¨•‘’–•™šš’ž™–‰˜˜Ž•››™™—–˜ž›‘”›š–—™˜–‹–Ÿ›—œ£—–—“™–¦˜™•—˜™œ—›—¢˜š——ˆ›ž—‘˜œš–š˜–•¥–š˜›šœ”𛑛”—™–›—˜›–—›˜š’‘Ÿœ”Ÿ’–“”™—˜œŒ“‡–ž˜¡š —œš—£ž¤— ™›Œš–Ž™—§™™–•šž—›‘œ™™›š˜§œ˜”®™˜›š—šŸ›“œ¡™”‘š˜‹•™”•“•›Ÿ§™œ•–˜•©Œ–™˜œ–š–•™™˜™—ž‘ž’¡™—š‘——––˜–—šœ˜˜ƒ“’——–¡™† ™—˜œœ—šž’–˜©¢—¤‘™™˜•›š—¡¡”™–™˜–š‹™§—•…˜˜™™‹•”•”—™›š–•˜œ˜¤••‘˜¤œ˜•›–¤œ¥š¨–—–˜–¤–“—™š¢—˜”©‘–›ž—ˆ™™šš¥•–˜¢˜’œ˜››—”™•—¤—˜—™‹’‘œŸ‘Ÿ˜–Ž•¤›Ÿš–™˜•š—œ–›š’™œŽ¨™˜˜š–š—š˜–”Š“™ž˜›—›Œ”ޤ—’•’—•œ—˜™˜˜•¥ž©•– •–ž›™™˜¤™™–›š”™ ”’𒙦™“®Ÿ¤ ™–™”˜–˜—ž‘™› š™˜”ª•˜˜–—œ›˜žžœ ——•›”ž™›™•—œš–˜‘—š›š‹—£›–”š”•œ—’—–—“”‹›˜™¬——›–›˜–™‹˜•Ÿ”›—ž›•œ”›™˜•™Œ˜”ž™‘•–—˜”—•›—ž’’•š¨—›–™¥ž–’››ˆŽ ”•“‹¢–”˜™””””•“˜›˜™˜¦š››——¢š’Ÿ…œŠˆ”’˜˜™™’–”™–š›¥˜š¢¢——™—–šš–ž™™ž  Œ•ž¦–—‘–•”Ÿ”™–¢—˜¤–žŽ–•™•¬•’˜“›–”– —™š›¥•“”•‘žŸ™’”¨–—š™Ÿ“Ÿ”‘——–›˜™“˜š•š•œŽ•¢žš›‘©“–—Œ’™—•““ š‰š›ž˜˜¡‘—”•žš–—œšš•˜›Ž—˜›”œ–›Ž˜–›“𛓗¢ž•›”’™šœ™—–Ž‘œ—š™Ÿ’žœ”“˜””—˜––ž “Œ‹›™–˜”œ”˜•˜›‘˜œœ———” š’Œš—–™‘œ¥•˜”™—‰˜“›’•—””•ž‘š—™›’—™’›–™——™œŽ•”™—•œ›žŸ’­–Ÿ““‘—ž•™“–™¦–™ “•—¤˜–“’™˜›™™˜š––’¡”™œ…š–œ”š—•˜Ÿ—‡˜™˜•”‘ž’————š’›—ž˜•¦™žœ™•ަ˜™‹•œ—’¢—•”—™—™—“››•—••–›—˜›ž–šž–œ™“–›— –¢‡š˜–‘’˜’“Ÿ’–˜™˜”˜™š––™›™Ÿœ“”¡š¡œ™‘™”œ˜—“•’Ÿ˜“§•’–š—•—˜””—–––˜™•’•••›—š—”ˆŸ–’‹”“”™’–Ž˜™”— •˜žŸ•˜—š–—“™“›—™˜š ‹š¡Œ—•Ž•”—˜‘’˜–˜”‡”“™šœ–¡ž˜•™•–œ¢——™——ž”–”˜™˜›”•™®¤“ž–š•–™ ˜–†˜™”˜›•œž˜˜œ”••œ’¦ŸŒ™™˜š”˜–•“š“–™’•˜™š—–•œ—›šž¨¡  ––—ª˜—˜¡š§™š•™¡‹•“–š•£˜œ™™•—”™ª——˜›—›–—œ©¢”•–™™–œ£–˜˜™”–“—ŸŠ—Ž˜š–š˜‹œ–¢–›˜–˜š–—‘–›™š˜—œ¤š•“𛑙—”’˜™Ž››¥›‘––“˜™™”£š–›˜™ŒŠŸ˜™—™Ž™–™’˜¤™”˜œ—¡Žœ˜†™ž–—’’𙙙𖉗›–——¤›£’–™–˜—”›”—•˜˜˜˜š˜™’—ª—”™¡Š—œ —•—š”›˜Œ˜™•š€›–˜–˜—œ—š˜˜™•‘š——™–—“•™˜’— ™œš–š——–˜š›ƒ™˜›”•›š™’•—•˜›–•˜›˜™”‘š›™˜—•“›”˜™–›š˜™“›™œ–—––“–”˜˜‘™’—•–’•š™”™žš™™Ÿ˜—š›˜š”›˜š—•˜š––—•›˜˜•—ž——˜ž–—›—›˜™†Ÿ•š˜œ™™—šš˜™—˜›•˜›œš––¦š—‘“š˜–—™”•š™”“›š™——š”˜˜@–—˜•—••”•œ—œ™——˜˜›——˜˜•›”š –›–œ™–•™’œœ—™™–•›•”—š’•”™™™——™•’¡—––‘’“•—™’”•™ §‘¡•™“›“•–™—”˜–“”—•›˜•š›‘˜˜—ŸŽ˜›’›Œ›–œ—”š¡˜œœ’—ŸŽ“š›’”œ–‘–šž£˜—”›”šž›’“¢™––—˜•‘™’’™—˜”—›ž˜™›”œ˜˜™¤—™‘š›Ÿ™–™˜—”•••–Ž“•™ššž—œ“˜—••——–š––š–ž›Ÿ—žšž–› š–˜˜˜šš––‡“”— –œ• —š—Ÿ”•‘™”­—–˜š–™«—’˜“Ÿœ™˜Ÿ˜’’“œ—–œ“”š˜—˜™“›ž–”˜˜—–ž——’Ї¡™–™š™œ•”•š—“•˜œŽ™™”•Š—™ššœ•Œ™Ÿ—”””—•—“˜’““›šœ˜“”—” –£—™—”˜•˜–––šœš˜•—™™š——¥š–—˜–—•™™š–¢™“–––˜˜š›—•šž›¢›ž‡˜§ ›Œ’•˜›—Ÿšš–ƒ——¤œœ¨˜™“›z£“› —™”œ˜˜–ž˜“—š¡˜¤’”—šœ›˜™¦™– ¡ž™”®˜¤Žš–£˜™–Œ•˜—”š—˜‘œ™—˜ˆš¡–§’™‚˜œž—œš—¡…”˜——˜–¤˜Ÿ˜šœ™”Š¢›•—–—œ›šž™™™˜™“–˜š’Ÿššš’›™–•¡˜Ž™’™•˜žž—Ÿ™••šš–”’𛕛•šž‘›••š–’™˜™ž“˜–”–™–š™“—š–˜™™“š™šš“••—˜›ž›š”“”˜™ž–𢖖™•—ž˜’—›—™—‘•“”••—˜—˜——“š›——˜—š•ššš—›¤—š™—š”™˜”–“—–›—˜›•–£™•¥Ÿ˜“—’™••ž™’’˜ž—š‹“”–“–™™›œ˜ž•’—˜›«”•——››“•š’™Ÿ“š—™––”—”ž¡ ‘‘ž—••™—’–—œ“•¬›—”š˜——–—•‘—Ÿ———™š’—––••‰˜–•˜“ ™—¦š—ˆ˜¤›Ÿ”––˜‰}˜ “˜¡˜™±—›™–—›š›˜—–œ—––‘ “™™›˜Ÿ–œ•˜–—š˜˜¢š‘•˜‘•˜˜©——˜›–—’›œ™¢˜’—‡˜š–™’–Ÿ‹—˜“˜œ¡•’…š˜x„™« ——š˜š™˜«•šš•–‹˜›Ž ™Ž–™˜œ—˜‘„¢ ˜˜¨— …“š™››” “™˜•’›šŸ—˜™››¦Ž‹œ“œ™™”‚˜ š™—˜›››™˜——œ›•˜¥ —Ž«–‘™œš—Œ›”˜•œ”—›š•˜™‘¢„¤šš™™‹– ——’™ŽœŸš”’” ž”—¥™ž˜“–ž”—“¦˜ž•œœž•’›”•ž”Ž˜žš‘’—•”–˜™—¢–”—–“™”–”š–˜””˜‘Ÿ‘“‘•“žŸž——šŽ©˜¢‘–˜˜˜—– ““š““Œ—‘Ÿ•šš‡‘››•—™“˜Ž™”“•›¤’” Ž˜Š’•“—˜˜–•—šš–”˜–”œ˜•’™œš’™•œ˜–ž›—•¡˜’„›˜ŸŠž—”„—“”Ž™ƒš‘œ›•¡“š›—••›‘˜™™” ™›šœ™›”˜˜™ž—š’œ–¡—šš™™——š–˜¢ ˜›˜›œ•›–“žš•—›š˜”‘š’›™•——Ž˜Ž•†Ÿ‘—˜•›—𖇕©•™”—šš–“š”¦›“š•–•˜––™”˜–š•™”š–Žš“˜™˜š’ ’™””™”Œ–›”’”™”§˜™˜ž“˜”œš——žŒ‘™—¥–¥‘™˜—˜™•š ˜”›™šž——««•›–—”™˜–˜–™š›˜“››•š™™œ„š“–¢–“œžŒœ–™˜—–—–ˆ™™ž —›•œš™˜‘“—•¢˜ž–š•¢–›••–˜”Œ™”—–Š˜‹ š¬ª••–™¡™¢š——œ ™›šˆŸ‰•—š—˜—šŸ£—™ž—’•Ÿ›”’—›—š’—–‘šŸ¦—Ÿœ ™—•ž™›˜—Š•›“•|žœœšš›¥›•œ˜™•‘šœ˜š˜Ÿ•©š“‹–—˜š•¦–’›“››œ“›Ÿ›™£š›ž––˜œ¦—œš ¡–•˜›‘™… ˜–––—”¡—™›™ž–˜› Š—˜œšŒ ——”ž™–˜¢‹˜š›™˜’¡‡•˜’™¥——–Ž˜‹—šœ“œ—˜‹ž–‰™Ÿ›¡„ž–•˜™™—¡”£™œ˜–§Ž’™–Œœž™˜•“˜›¡žš–ŸŸ’›Š”™Ÿ––šŸ’˜Œ”•Ÿ˜’•˜™–˜™™˜˜™›—™—™˜—™™›–––——™š˜™—–—™˜˜–š—™”™šš›œš—™™š—˜––›œ—˜—˜œ•—™–˜˜œ™Ÿ—˜˜‘š˜™š˜————•™—›˜—™™—˜˜š—š——š–œ™™š˜˜™š˜™—–˜˜˜›˜™š›—™™—™–•™”––˜ž™•™œ•˜–—™š–›—œ›™™™—˜—˜–œšš–œ™—˜žœ˜™™š—˜˜›˜—™˜™˜—˜“šš—˜—™—š™˜—š—š˜ž˜˜›—™•—˜——”š—š˜›•™—˜˜”—™”™˜˜¤œžœ›—”™—b—–—˜–—™˜—–˜˜˜˜—™Žœ’Ž“™—’–”›”¦’—™—––š‘Š–˜˜™˜˜—˜“¨ ©¦š˜–¢˜˜–šŸ™œ˜™š™„‘œ–“¥ž§—™š–𙕛ޗ™œ•œ—™•’œž’›—›™›™Ÿ”—œœ˜˜‘—•¡ žš–ž•—™˜˜•”œ£——Ÿ—œŒ™™š”£—–—›–¥™š“––ž—…—– ­––¤™˜˜™™˜—˜›Ÿ™—˜——ˆ™––œš‰›Œ™ ›¶™’‹š˜„‰Š™–…œ——¡Ÿ–›š˜—Šªš“–˜–Ž’—™’’–˜¯£›”—›š¡zžš˜™š“˜¢¡“‡˜–••˜•˜š “œ˜£¥•š™š™•™—˜›¡˜˜•—–—Š˜šžœŸ£”™™—𔓖’œ˜Š—‹•œ˜—˜”˜›™œšœ›˜š™‰•œœ•”•’’˜•”˜¦“—™”—™‘˜”–•ž–”‹’•™™‘“•“›Ÿœ˜›˜Š•¡˜”™š—™žœ¤™™™–•‘“•Ÿ–“š—’”™š“˜¢’›–ž™‡•™•–ž”œ˜—š›—––”—ž—ˆ™•™“š’œš˜’—•™š›•”“œ–˜ž’–—‘›š”¦œ¢š˜–œ“˜—•™” ”–ªŒ’”˜”›’š®˜”˜š—™”˜§—™™—••™“™š’˜¢™‘yš–—˜——š ˜–œ˜š™—™“”–™¢”››˜¯——Ÿ–¯‘›•Ÿœ––‹š™—•–‰š™––Ÿ –š˜£•–˜Œ˜š˜”™¦˜”™œ™ š—˜žŸ›—˜›•™†•¤‘˜§•—“š‘”š›™˜’™“˜—±ž š–˜’™–™’©š–›•—™Ÿ––†˜—šœ™“˜˜–†§›™š–—œ›—¥–š™—™ˆ—˜Ž‡”™¨˜˜˜˜›˜˜œ– Ÿ™Ÿ§Ž–”¤™œ™”™˜ž–——|›š—›’—˜™™™ˆ˜”š”—™¡ª–˜˜•ž–“—žš‹œŸ¦ššž”š˜—™›–—˜ƒ•–”›š™—™£™—¡š›™“–—””“Ÿ ‘™š™—˜—“—Šž›ŠŸ•˜’”•’“˜™‘˜›§••™“’’š›–•’”˜’–¡š§˜”’‘Ž—”—™—˜š”“—˜œ“š‘ž™›’ž˜Œ—™•¡—£œ˜‰œ·–‰œ—§œ©Ÿž“‘™”˜•¬š›¤™•—™”Ÿ˜™™Ž—¤Ž“Ÿ›™›—•š¤›™šœ™”š¥š’˜–™”” ©Ÿ–—”˜—ŒªŸ™¡š•¡Š–•œ£”›™˜—™–”™Ÿ—ª”•šž™¯•˜¡”’”— “—”œ˜‹“š’›œ—™’— •–•™—™›•¢•˜Ž šœ™˜•–œ—›”›“˜œ™œ›™›˜š—””™ ”¢¡£•ž˜™–•—ž˜˜’™š–™—›—™¡•—•”—˜š•™š—˜›—•˜’›—”‡¡›™˜–—™šž‘™žš—“‘˜˜”—¬ž›“˜˜•–—–—Ÿ–™–“‘›Š–Ž™¡ ——™˜¦™•°—™—“˜™š”±’’‹”˜–˜šš˜¡ˆ—œš™š‘™ —’ˆ‘Œœ™Ÿ™š–•˜‘ž›Œ¦…§™’¢™˜‹–™‘–™˜w¦š•š‘—“ „”–™˜ šœ •™–œ›–˜˜ž›”Ž••œœ“‘˜¤£ž›Ÿ‘œ™—Ÿ–›‹ž™Ž—•—”—’–žœ•’™”•–˜™¡–›’›— —›¥š¥˜—’”˜——•›•››¢™•™ ”•£–¡¥–••”™”š˜•œ—”–˜– —––¯–˜˜™˜™¢–˜£—˜‘•™¨—˜—•š—–Žšœ˜Ž˜“–š•““Ž›ª›—’—›’”—•˜•›™¨—œ©š•Œ•˜’š•Œ˜–———–¤›šŸ”––¦š•Ÿ“†Ÿ£‘—œ•••”š‡”šŸš••ƒ†˜š‹—Ž—“¦“˜—“——‘™•š—£˜”}”²›™•—‘”™œ—˜˜–‹”˜™“•••ž—šŽš–”––žšŠ•—™šš––—š“š‚~”˜•–“–œ–Ÿ’™”˜›˜—™•”•šŸš— œŽ§¦“£™™—’™•—˜•œ›•—š–’–›™”–“—–•›™š™“—Š•›™•šœš˜–›–™•š—’—‘“›‘—™²–œ ’£™™‹˜›–Ÿ˜ š•™©––”‰˜¤’™›•šœ˜¢™™š—šŠ———¨—ˆŽ™¢’ž–𙓗” ‘–—˜—›¢œŽ™™—˜¡™›—˜˜„›˜“•œ˜˜–™“Œš˜³–‘–˜“ š˜›‘™“—•˜œ”œ›—›¡™šš—™——›ž™•š•‘–š—’¨š‰™–›–Ž“—Ÿ˜”™•¥¦Šƒšœ™—š™œž˜››š‘‘›“˜›—™—˜ˆ–•‚™—•œŸš¡’˜™Ÿ˜˜›—ž›‰•–“™‹¥˜”œž–¦›™––šš–—¢–™—”˜˜–™Ž –˜šš™¦”‘—šŽž˜—‹›””žŸ—“›•œ–”™›•••‘Ÿ ¢Œ™š—¢š˜—š—Ÿ—™‘™–¢šŸ™•™…¢¡œš™•˜‘™™|š—”˜š¤™Ž˜ ”˜¤›•™——™¶™“š‹©”¸š Ÿ˜•˜™™•›˜’š›ˆš˜›˜–—¥—–š••˜•¦–•™›˜•›˜˜š˜›Ÿ‘”“¦›’––š˜‘‘Ž›™—š–•˜™˜Ÿšž“•–———™™ ’Ž•“—Ÿ˜š”«˜š˜˜ˆ›™›˜™”«””˜˜™“–˜”–£˜‰™—“˜Ž™¢–•Ÿ––˜š™——–•‡——š–›‘™•˜¤›ž˜™–”™—”“–—•—”¢˜‹¦ˆ–•–˜——¦’’–™’’˜œ¦ž¢•š–•ž§——˜–š££˜˜ —› ˜˜™™›ž˜š~–—™‘—¡˜˜¡‰˜–š™•ª–œƒ¬—™–“”©•“šš’•–Ž˜™ª— “–“ œ¤š™ž“›™›”› —“™ –›|˜˜˜—•’™—™™–Ž–š˜¤†–œ¤—™•˜‚’𙡙—˜š™‘œ—‹˜™—”«š—˜‘—“†” ™”—ž”›˜–››—›Ÿ›ž˜œ›™›˜•–˜¢™•˜—‘’¡”’œ–šš˜œ’–˜˜‘š—œ›“˜“‘‘‹œ—Ÿ—“•šŸ››››—™™™›œ”œ˜•¡”™˜™™š£œ”–“Ÿ¥—˜š—–†˜“•™™—˜Ÿ¤žš•–˜•š”šš—“‘—”™…•¤˜˜———›Ÿ—’”—Ÿ˜” •›™š¥ž”žŠ˜—‘™––—”˜—“œ•››”ž–›“—•š–—œ’—œ˜“’¡š“””—™”’š˜š–£—›Ž™›Ÿ™›–š˜•™™ƒ—œ”“˜››œ˜š“š—™™š˜••š›ž™˜’˜•›”˜——™¤›˜’˜ž™£œ¢›—––¡—˜¢•–š–š˜˜š§™•˜‘ £—™”˜¤›š™™›”˜”™—˜‘––˜—”—•™˜š–š’‘œ˜—›“™—™¨›•£š˜“’™ž’”¤“– •›ƒ•—š“””š•˜˜¨š”™——•šœ”™““˜“¡—™—•™”–“•””˜•˜–ž“£™”†š–—š“š”˜™—š¡—£žŽŽ‹›¢ž•˜Ž¤­’—–˜šŽ“š˜–——›š ”—‘ ’š—š’š™œ’žœ”š¢˜›™–›–—¢’›•‘”™‡–˜œ–šœ ˜˜š–Ÿ•™—Ÿ¢”š –™˜¡ŸŸ—œ–“–——š’‘™™]‰œ‘–š––™™•—˜˜’——™™†‘™•••˜“•˜”›ž—Ÿ”—•œ™™›•˜— ™‘¡›••“—•ž’šœ˜˜™˜™•š›˜•›˜™–ž–——–ž–œ››”••˜˜˜—–œ“–œ˜™˜“’’”›˜œ™Œ•”“•—›˜–—˜š™š›œ‡˜——“«–ž”—™™š•””›—¡›™“˜“—•Žš˜Ÿš˜˜¦”––±”—––Ÿ™‘”—–˜–›™˜—š›œ–”––™—”™’›“—”˜œ–––™š•’™˜œ””˜™•žž”šŽ˜™›“›•—••–¢™—–˜”™ž¯¬©’“–•••™—𢕗›™——•–”ª“Ÿ™–©š¢šš˜™™–š˜–œš›•“––“Ÿ’—•˜“šžž™ ”–œ¤Œš¢‡¨–ª˜–š€˜•“–ª—‘—˜ž™›Ž™‘¢‹—“‘——‹œ”£š›…š™™™–ž«Ÿ˜‰ •—˜˜ž˜˜¡šš˜˜—–™¡”’–™™›—”š‘››‡™œ˜›• •‘š›———ŽŠ’—–’ ›–†«˜š—“–š¡–ž—˜˜”œ—•——› š™“š–œ–ž•š‘¥–˜˜™™š™ž˜ª›™•’ššš˜•—˜Š’’›“œ–“–š“”›š˜£—–¡›ˆ’˜¢— š•›˜“œ˜›•˜›™œ˜˜Œ˜›˜ ’˜˜Ž ˜™™™“£™˜š™š˜¦““”œ•“™–“˜š–—’™™†˜’–“–œœ•”””š™™ª—¢š’šœ“•–›–œ–’›œ˜™¥–š’˜–——–‘‘–¤–ž›—••œžš—•Š”—¢–’”–¦™™šŽ•—œ•˜™Žœ˜Ÿ£—¡Œš•™“™œ›—”šŽ–™›•–“–• ”’›Ž£”•¡——“ ——”•˜–—¢š“œ’—™œ–œ›’˜”‘Žš˜”–“–¡•Ž™ª–ž•™•–¡œ“– ˜›—–š•—•š—“—˜˜›“—®¨‘•‘–˜—œ˜•——ž™˜——œ’‹˜›¨†™š‘˜“—™•˜–“œ’–›”Œ–•• Ž––––˜¨˜œœ—𔫒•œœ˜“™˜£œ“£” ˜–”•”™ ™–ž––˜•‘•™”––˜•–—žž•£¥–Ž–œŠ“”——’–˜™—¥•”˜—¥¤‹›¡’›œ’ž—’—‡™—¡’‘— œ•’˜¢š™™£—•›™–‰“’¢–œ•š“ž›•‰”˜œ™’’““œ™š–™’ ””œ—œ’–”¢“ž–˜œ°•’˜”—›¢™Ž–’—¥š™—˜—ž˜˜’›’“™š™™—œ’–‡š’›™—¡–“”¢˜—ž˜˜––˜”—™ƒ™š˜™±–šš©œ†˜–™˜™œ™š––™˜˜•™™•—™‘–—˜˜—”˜——™–––š“š™‘”——›˜˜˜Ÿ˜—™”©˜ž“––šš–˜™˜˜––ž–œ™–™ƒ˜š”¢˜š™£¢™——š–•˜—ž•–’™—•”‘š–‘˜”™˜”™—¡˜–š š“””š•›–˜¬¡•–›˜’•—œ“š•š™—®¢™Š›˜“’Œš’—•˜™š°•–“†¢— —ž’š—š–“Ÿ‹˜™••žš—ž›œš——˜™—š•˜˜˜›œ˜–š–š“–›•”™£—™œ‘š•‹”™™Ÿ—‘—•—’›”‘›‘‘•š«š›•™ž™—˜–›—––ž˜™™™™˜—œžŸ™˜™™—˜¢˜—™™‘œ’Ÿš‘˜”™šš¦š—˜™’žšž©˜ž———‘—˜”˜Š‰™™—˜˜|™–­‘œ¤žˆšŠš—™––˜˜¢”š˜™™—”™¡•¡›™››™š––›• Ÿ’œœ¡£¤•˜Ÿ–˜˜™›žŽ–—Ÿ„—œšž›¡£¥’ ª˜œ›–œ––š™–·œš™Ÿ‹––™›—’š„›˜˜› Ž–˜¡›–”—›•£«œ’——””›˜œ‹“˜Œ——™˜—™¦––“˜š•Ÿ•™œš™˜•›•Œ–›Ÿªš•™š¥•™—˜˜š™––“˜—šš›—š™›••–™–™• ˜˜–œš•›™žœ˜™™Ÿ”››šœ˜™˜œ•˜œ˜”–¨™—ž•’”—›žŒ‘”•—š˜•›•™”œ‘ ¢–™¡—”‡‘Ÿš››¡œ˜—Ÿ—–™™””‘•œ›™”™–Ÿ¢™™•‘‚™ š—Ÿž’–‹Œ–•œ–šŸš—™­˜˜—™–š‰‰¡•”Œ™œ˜•ž£–—œ›–™——•œšž‹–—–™–ž”Ÿœœ•˜—“›—•™™‘”œ–š˜šŽ–›ž‰•›‘›œŸ˜ž’Œ ˜—œŠ•“ž—…•Ž—–˜—–¢™•š—”“–˜–™™•œš—‘”•™™£š™›ž“——”˜‘–•š˜¨‘ –™™–žœ›™”™¥š—’˜š•˜“˜˜•Ÿ˜¡Œ|—‹œ–œœ–€š›‰›˜—š˜˜™š˜–˜šœ—•”›£‰›Ÿ˜”˜™˜•—–‹——’™˜—™”ž’¤›Œœ”™¡š”––•›•˜˜”ž“¢›––˜¢‘ž‘—Ž•›—–¨œˆ–“›—šž¦–’•¡•—–˜›•˜˜›•™•ŸŸ—™“••š•›—˜˜ž—•™š’™š˜ˆ™›˜˜––‘–˜‘”˜–™—™”•™—˜‘˜ˆš˜§™“…Ÿ–›˜” ”˜”—‘”˜”ž˜›˜š”›©š˜ –˜–š›˜•››–¢™™›‡ž“š˜˜¡˜˜›–—–—’’•šŸŸ–™˜•›ž—Ÿ™Ÿ˜ ¡•™š—–‘›žš›–˜œ˜˜•™“™•™››šžšš™š™˜˜“¬—š—šš•–“–¢Œ™‘“›š›“–“——˜–©œ‡—“——¬“¨›–”ˆ–𤓗™˜¨ž ’’™“¦ž’ž˜˜›œ— œž™’£–•š£©˜—“˜œŸš†˜— •”œ”¢˜œ™˜›’œ–———š”—•šœ§šŽ’›‘ž•™—¤‘˜™– –•˜›š¢—™•˜Ÿ¥ž–™“˜šš™—•š™”˜›œ›—‘˜˜˜”Ÿ‘–˜–—˜Ÿ˜™˜™“˜“‡˜˜ ›“–“–˜™†–“¡‘˜˜˜™™›™‘Ž˜›’™š–’¦˜˜Š™š—›Ÿ ”—‰•”™–š“• ˜—›˜–¢”—™™›—“•Ž›–‘“š—””•¥“ƒŠ”•˜’Œ•ˆ™˜—š˜•—•—œ˜š £šœ–•†›š“•š™žŸ•—œ™›¡¡¤”­©™˜•–¢•¢˜Ÿ˜›˜˜šš™––›˜š˜¨’†¢“Œ³Š–’”›—˜–˜•š•›™¡”—”Žš–•’œ—™”™œœž”Ÿ –››Œ”œ˜—•“˜‘‘–™’ ™‡™••˜”ž˜›–˜”šœ–••£”¢››—Œœ’”–Ÿ“ˆ•‘žž”—œ“›˜Ž“——™”š˜—Žœ”•“›œŸ›”š– ›˜’•–¤››˜—›™›–•˜”•• š›¤—•šœ“‹š’˜™‘—›˜–› žš“–Ž ”Ÿ‘¤š’š ‘™•’•˜— –™”¢†ž‘˜›‡˜•‘›’™’–”šž¡Ÿ—Š—š–“•–™¤——˜˜¡—••š›™™Ÿœ˜‘˜”ž•— ‰”—œ™”“—–—‘›™˜˜¡™“™”•—–‘œ™˜ššœ••ž›—˜šŸž¢¡“˜˜”‘”§‘–œ™™Ÿ•œ›˜˜ž¨›–”™›—”•¢•–ž™›’–˜˜œ”•ªšœ“˜š™—•˜™”œŸ‘˜–‰“š—•–—š•š™š––š”——™˜’—›–šššž¢“˜—™—–—˜•››”’—•– –—’“ž•“’›••š–ž”š•–”š–“™‘’š¡™™›—–˜ ž˜Ž™Œ˜—”••œ–š—œœ™™™–’žš™•—™™— ˜™˜˜š—–˜ŸŒ——–™˜ž˜œ™¡—›Ž–™š–˜™Ž™™–˜Ÿ”˜—‘šŸšš›šš–˜š”•‰˜‘•–›˜££›’œ—–˜¤—˜š™š–™˜˜–—œž—˜—”™šœ›—˜–š–——–œ˜””’Ž›™Ššš—š•˜—™Ÿžš————Š˜¦–š–œ—™’¡› ––™——™›–„£“˜˜¢šœ£˜—¢™–˜˜’–¢”©›™–’››˜“”™˜™š™‡˜•œ¤˜š¥’Ÿ–™–™–”•™–ž˜œŸ“›”›™š¡¨“š˜™›˜˜™™–™‘š”šž™¤ž›“–——›•š‘›Š™–˜–™¨™—›•—š—šŸ™’‘••˜–™˜š‘’š§—›•—–Ÿ›š˜——š‡–”—•“—š˜™ª“•’§—›˜›™¥•˜˜˜Ÿœ£ž”—¥š™š“œš–˜œ šŒ—¢„žš——š˜˜•—‘˜‘˜˜—‘œŸš—Ÿ«žš”œ™ žš˜™˜Ÿ•›“™“›ž“—¬“”•‘œ Žš–’–™•ŸžŒ›Ÿ›—›™•ŸŸ –”–˜–ž˜›– ‡šŽš—˜©Ÿš”˜¤–œ—˜˜Žššš’˜–—Ž‹”˜Ÿ ™˜“˜˜“š§œ“››–”™–“ •’˜œšš˜”žœ˜™™™– ™›”‘˜š•‘š”—š™”•™šœš’®ˆž™šœš–šš’““”˜—›••¤œ—–›”•” ˜™“Ž™’“••š–—˜›—–žšž—’˜“‹–œ”š›—•‘Ž”Œ––—™™‘–”˜˜“›“”š—¤—‘ —™”šš–™“™••˜˜š›™˜—˜—“‘œ„’–™—‘–””–—šŸ˜••™—“–•–™”•™™–ž™’šž˜•—”—––’ž—š™ ˜•™’˜¡œžŒ˜˜›š—š°•”•‘™ž”––‘ž–žœ™Ÿ®˜ˆ™–’‘”•–—Œ–•”•—›¦›–…“š‘–—š››”—›—•˜š”œ˜•”–•š„¤˜–›—™š–˜˜ ž•˜˜–š•˜“Ÿ˜—š—ž˜œ™£•”ª’”—”‹˜™’— ¡Š™•”™’¨¢––¤‘ ’™ˆ—™—š™‘˜—˜——œ˜——™‘’–™š— ˜•Ÿ“—˜–•™›œ‘— ™™•…•ž˜š™•®š’œ”˜•‹–Žž–š˜—Š’˜˜•——£—™‹”–¡Ÿ­‚’›——–™š˜š’¥˜™™›—‰•‹œ¡ž™›œ›“–“™™ž•˜™“•šŸ›—‹—›’Œ•š“‘™˜“Žš—šŸ—–“¤š–˜—Ÿ˜—˜™“™•Ÿž›˜›™‘š—š›˜¦“•­œ˜—“š—˜‘›—ž›””™Ž›š™–”š“™ššš–˜••š—•¨š˜˜Šš˜•”—“™‡‘›š—›—•”“’šš———ˆ–˜™—ŸŸ’˜§›˜™œ’Œ˜›˜–™’—“•Š©™–˜”˜Ÿ–‘˜–›–••™“›¦“˜Šš’˜¤”•””ˆ—Ÿ’‘”š­˜—™™œ”•––˜‹ —”¤–œ–š–”•™œ ž—†™š™————“’•“››˜™ž–¬”š–œœ™˜••˜›Ÿ™š—˜šš¢Œ–Ÿœž••¨š—œ™›¢™––˜‘˜ˆ™ ž ˜–£ž˜›—𙛦••œ”’…˜¢–˜š”˜¢£—–˜©˜—˜•𙕠Œ”œ›šœ™œ–›”ž“™™˜ ‹œ•˜š”——’™ ™¢‚›—” “”•šŸœ——˜š‘…’––—˜—˜Ÿ“—œ˜›š–—˜£—›œ•—§”‘ž™š˜‘™š™–”–š ž–™‹—š˜™–™’›¯Ÿ›§š›œ•—š”˜••“Ÿœ—‘•™›Žœ˜¥šœ¥ž› ”™š¦›—˜œ¬œ™šššŸ›y”ž¡“œ™›˜ŸšŠ“¤Ÿš™–™š•¤§•˜Ž–Ž›š”›œš–¡–©™“ž’ˆ–Ÿ˜ž—†‘–››•𛕑ž’œ”•Ž–›™›¢™‹„˜¥™™Ž™—‘Žž’›˜¥©”•™—Ÿ™š™•”—‘–™—š——™œ™—šx„—„•œŒŸ‹œ›—™žœ˜¨—•”™˜–š—•¦šž—š£•œ™˜—œ”–œ–™–•œ–˜™–™™™™”•šš–ž›Ÿ˜•—–š•˜ž˜–¦•™š‘ž¥˜›˜ ”Ž˜Œ™–—¡Œ¥—›š˜•––›§–™š–™‘”›ƒ¨—“˜˜–—•—–’–™˜›˜–¤…¡‘˜¦–Ÿ˜––•—™§’˜–‘‘““œš˜•–¢ ™—™ ˜—’—™’š‘«•©—¨™–²––—œš™”“˜˜”˜—™”••›§˜“˜–›“œ©˜š›˜˜™ŸŽš™–š™’˜‘“›‘Ÿš˜š™—’›ªž˜¢˜—˜˜–”ž™—“œš˜˜”™¢”—–˜”› –—™œ”—š—œš”‘–“¤¡›•—¡†{³›––™•“•”ž•–“˜™‰œ“˜–œœ ™‘›˜ž“™ƒš˜–šš˜˜˜—›—œ’š˜–•™–’“’› ›“–•“–˜—˜™—š“‘œ“ ’›šŸ˜—˜š•”˜¥™›˜š˜¢­›œ–§——ž–Š›–—›˜–”šˆ™œ œšš«‰››¤–“—Ÿ–•˜œ——˜“–š •š™›——Ÿ›’žœ˜¤‘˜˜—™—˜—™˜˜•••™‘˜˜›•™š”š—’š–––›”›•”“ •ž••–•–•¡—‘–¨’˜™–™•…Š”“˜‘™–˜š˜™™¢˜–”—•”ž•’¦™Š•€––’”œ“š—˜”“œ˜›œš˜——˜—š™œž˜‘™˜–œ”˜•—˜—˜™“‹œ›–““ª“Ž˜¥—œšŸ˜”’—šˆ˜–˜€–™“š•Ž“™ §¢—©›‘—™˜Ž˜˜’Ÿ˜š›—™››’ž—”••—£Ž“•Ÿ‘—¡±†ª§›–›™Ÿ ”™™˜™˜˜š™—š•—˜¢š –˜’•œœ˜’–—˜”––•›œ“›š˜•”Ž˜¡“–œ–‘˜™š•˜‘–Ÿœš–’–¡Ÿ—˜—±—˜›œ­}•‹‘Ž˜”ž˜™•˜šš“ž™”›œ’œ›˜™ž–œ›•š –—›“–˜”„œ•ˆ—šš‘Œœ™’”–ª—˜’™›“–“˜›š˜”•™˜›š–ž“Ž–“™–›”˜™ž•Ž™’˜•—™•–—™ž˜˜Š›•—“™‘•œ›—œš™’˜——“œ­‰š‰Š–š•’˜•¡œ–›‘™–›š£—Žœ”˜••’›˜—“›žž–™œ’“—”¡ž˜—‹––‘¡’—˜ —••”Œ˜–Ÿ—¡™˜Š’–ž‘’¡ –”–•’“™©ššœ”•˜•›™™š˜‘œ—ž’ –š™™˜šš…ž””˜››¡˜™”“†™š’œ”’¤™•™˜›˜›—  “—’“•˜›šš—™™’š›˜ Ÿ’š™š—›–™™•‰£–“š¤™š˜¡‰•“š—™œ¢˜œš•š—š›—›’š‘œš…˜›•ޙ𙧗 ™œ—š™–¡••–­—š¡–§Ÿ””‰Š˜––‹—™¡“˜”ž˜˜œ›™›”ž›§ ¥˜žš”š‰“•˜™—’š ž‘–¡£™››¡“š›ž›˜‚›˜›“›£– š–„‘Ÿ—˜™›–¡‹š”–˜š™“˜œŸ’¢™¨’‘š™ž˜”™˜›š¨›ƒžŸ›˜—–“—›˜£—”–•›¡•’˜¦˜•’–˜——œˆ©ž˜œŽ›š‘™Ž˜¨”–›š‘˜›–™——•œ™™—•”“©›š™˜”™™—©Ÿ™™˜— ™ž™™–˜“˜Ž•—¡¦™–¯˜“•ŽœŸ™š ™†Œž¢¦™™”–š˜™™‡¦š›‡“˜˜šŠ¨¡••™–—š—”œ•›•›—”˜˜—ªŸ~–šµ˜”˜›—“ž–šš™•••’¥›•Šš—›”™˜•š™™‚˜œ˜™œ“œ¥„’¥”• —”—˜™——  ˜š—•¬¢šŒ™™‡s—š›˜•›™Ÿœ˜™š—™‰”›–š™–—˜˜“œ•¤™›•˜“—˜”ž•š•––’š •Œ•—™œ–˜•›š˜™›™ Ÿž–”™”™™šš’¡™š›Ž¢™›”Ÿ•›§¨‘ž”œ••“œ–•¡šž›—š—œ’˜”—™›—–›’™›—™¢š›—™“—ššœ™”£œ˜—››’•“šš“”›—”—•”š›”ž‘™”•˜Žœ›š’™“——œ— š™”ž›™¤˜”•–™ ——›š‘˜˜™œ—“™¡›£ž”›˜œš™ž—“’¢šœ–…š–ž’˜’–—ž˜Œœœ¢—“©”œ§•›”–˜•š›œš•›™Œ”›œœ›˜šš’¯¦•™–Ÿ“™–¦—œ’™œ™˜Ÿ˜–¦˜’Œžš¢›‘˜Ž™˜™ž—Ž—¦•’˜“›•Œ˜“™™˜—Ÿ”˜˜–š›™–˜–𙑖˜—¢Ž˜š«”ˆ˜˜xš—Ÿ—‘ž™™§™—„š•–¢šŒ›› ‘ž—•—Ž–§•Ž—Ÿ—ž˜–™˜ªšš ˜’ˆ‘’ƒš†š˜˜—šš˜—–”™™”›™š‹—†˜›¨™“–•˜„”—”©”—œ—¦ Ÿš–œ˜›º¢›šŸš›™›—¡›”˜œ”˜†“¥–—˜¨Žš™Ÿ›¦‰™—•–šš™˜Œ‘œ©— ›š”ž–¨šš •œ––¤Š”Œ“š˜–•œ“œ–’¦ˆ™—››˜˜›¡š”§š™™‘”£•š—™––Ÿ˜—Ž˜›”™˜›––—˜”‘˜¡ ”˜Œ“Ž˜™™˜›—™œµ‘˜™š“”Ÿ—˜œ–™š˜•“‰Ÿ‘¡’³˜‘—˜š’§——Œ››˜–”––—¨“’ŽŒ•œ”˜‰©š‘™•šˆ˜œ¦’˜”¦‰‘¤š–—“”–—|œ•Ÿ™–š”§©ž—¡•›˜Ÿ—§žžœ›™›£š–– •”¤—›•———™””–—’™—–”–• ¤“œ”—™—‡•𛓔©•˜—›£—•–…œ– ˜šš™—˜¢œ ˜Ž—––›‘¡›™™–Ž™žž°  œ«‘’™“–˜•“ˆ›•–™–”–– ”›“ ”•˜’𦒗”š”š—–•𣗗”“œœ‡¦™‘ž—™œŠšžœ—˜£œ™Ÿšž™£˜’œ™“™Ž˜š¡¬’“š•“”¨“—’—š–’Ÿ›››’“–›“–•—›™ž—›—•¡–”™œ—”˜˜™—“—‘—š¢Ÿ‹š£‘—”——‘–š’š˜ž”‘œ‘–¥œ˜‘˜š”˜£Ÿ ––•––‘™››’£™”£•‘—œŸ˜•š—‘‘•’‘™–• §—”ž”Ÿš™–‘—™˜š˜”›—™››˜š•”–‘˜™œœ•”œš™•”™š›š™’—˜–•™•’–ž–““š—™’”™˜”•”—”—™””š›–š’˜“˜š“—˜™™™•œ•˜””™›˜ž—•™“œ’”›–ŸŸ”•– œ˜––›—–“œ’•˜—Ÿš—š™Ÿ˜›š›œ——™•™“˜•˜“˜™›œ›˜›˜š™œ‘’•—ššš——¡™•š™–—•¡™™——•›˜Ÿ•™˜›—’—“œ˜ž‘–”—›š”˜“˜””™– ¡—•™˜”—˜š“™”“– ”•“—›‘‘™£˜œ™ž–¦–•Ÿ ’–˜˜œ˜‹–š™’ ˜˜˜™–“Ÿ™—¡—“™”•‡–Ž–•—£œ‰›—«ª—›•˜”š™™ŸŽ˜Ÿ•Ÿ¤˜Ÿ‡•“Ÿ—©›€ —“š –˜—™š›—™“—”—–˜”š™–Ž¤•œ™™¤˜“—•‘‘¤š—–•˜„”ššƒ˜˜”’œš—š™˜š”˜—”˜•›•œ™¥–™—¥˜›ž›—•™œ•Ÿ–—šš˜˜”œ¥™•”Ÿ—™›š™§™Ÿœ”—‰š’•š™™œ ˜š’Œ–™–’™”ž™’™›˜š–œ¯–ŽŸ¤–˜–—Œžš™š––£’ ž™”ˆ–Ÿ”•Ž˜šŸ—‡š–›šŸœ™™Ÿ“™—š–Ž–™Ÿ¦‘—ž‰”œ™™˜‘ž™—ž›˜˜—’•—š˜™Ž“›—™¡••œ™›š–š‹¤—“œ”—š—Ÿš™˜šž“¡Œ–›œš•™––˜˜œ™›¥Ÿ™˜š“‘–šš˜ ”ššx•˜‹‘›Ÿ”›˜–˜—‘š•Ž›œŽ–“Œ›•ž™– —˜—•›™“›•™’™˜––—®–™“—–˜’™›’˜œ˜™  ©œ”•˜•œ˜­˜—•£š”šž…›–¢–œ–˜¥—œ”–›—†œ—™–‘¦–š•ž¡™’‡—šŸ˜”—žžšœ˜›Ÿ”‡„‘šŠ•——¥›—›¡“—œ”•”˜•›ž™››—‘›œš˜šœ™Œ—˜›™“šŒ£›Ÿª™••¤•“–”š“’—™ ‘ª˜šž“𤛣•–’• š™™‡œ—“‘›—–¢”ž–‘¡—•˜¡‹š–šœ© ”š”“œ ’’•œ¡–”šœœ—¦‘“–——˜—©ž–‹””š›œ§œ”™™Ÿ“Ÿ•–œš–š˜š™™¡˜˜˜”—Ÿš •­›•˜™§¡‰–™š’–Ÿœ •˜‹˜œœŸ——š™—”’œŒœ’›œ——”––’Œ ˜˜ž••“›˜£œ—–—š§‘Ÿ– ¨—‘’Ž–§‘˜Ÿ˜” •™ŸŒ—›’˜›—–•¤“— ———’Ž˜›šŒ˜˜–˜–™—˜š–•••š™›–™–™••˜›”¤¢™š–™—¡˜™—’”’“—™š™”š”—–•š›˜˜™—˜¡——›™™—–’—šš˜Ž’–™““™—‘–˜š“—’ž˜––Ÿ˜–—˜’˜”™œœž›––™›’˜¡š›™¡›œššœ›¢——˜šž˜˜˜—–—š”ž’–‰œ’–”š–ž—•——‘‘–™š˜™™—™–˜—›™œ˜–žŸ˜™“——”” ˜—‘’•‘˜–—˜–‘›”›Ž˜—”š”–ž“˜™ž™œ™˜•—ššŽ›–‹Ž›™—˜œ’‘—Ÿ–’‘•™˜˜•—˜œ••‘’•œ¥”“¡®˜—’—œ‘—𢗠“‘—”¨š‘—™œ’—œ–¡›Š”–—£¡’˜•˜—›™š™“¡““˜™—𖣑•ˆ™™’ž™œ˜ —§˜œ›„˜™™©›–”•°¦—­“ž—Ž™”š’›˜˜™š•ž“˜›—››™“”¢™›—š—‰——›š™•™™—«Š¢ª•µš‹•˜œœ˜•šœ—ž—›Žˆ‘˜ž™—ŠŸŸ›˜“™—‰Ÿ˜˜˜Ž”™—•™“’•Ž•§•’˜™˜–¢š™šššª•”˜‹®—”𓛢 • ™¤˜—›—œ­‘– ž™—˜“™™–™—™“—’•—˜Ÿ“Ÿ™¤’Ÿ–™›“žŽŽ•†™™•™–ž˜Ž‘––•£™’—˜¡”—¡ˆšš••¥œ§˜—–™ž›¤˜—•—–”˜“›¡’‘Ž˜™˜–¡•¡‡” —•ž˜˜—˜˜”™œ«’œ™š„Ÿž››˜’œ••˜”“š–˜ž’–—–š’šš™˜”ž›˜š™ª›š›——’•š˜—š•™š——”¢—˜ŸŸ›«•–Š’–› ¥•ž˜š–™”ˆœ”““–¦––¤–ŽŸœ–“™™˜—¢˜–š•™š¡š‘™”…“™–—–¤ž˜”˜˜§”™•˜¨ž–Š–’˜˜–•™”–›”š–”œš–—•“•˜’™”™ž’¦Žž˜›•›“ ˜•–‘–™¡š˜˜˜š—¨•˜¡¥–š•—”¡™”–“š˜˜–››ž™˜‹š•ž“˜Š’œ‹Ž›•’”›˜Ÿ–‹› –°¬‘œ’–š–œœžš˜œ•š–‘œ•­–”™—“™Ž™”¢¢‘¨š”˜–•š—–‘¤š›˜›˜†‘—‘ˆ••—‘œ˜Ÿ––£”œ“Œ¡­ˆ•—‘•——¢––˜™‹™˜º‹•››˜˜ª˜ž•——ž¨š——––•“¶š˜•š˜™™”– —‘“˜›­—”•Žš™šœš™ž™˜š•——˜››“𙕠ޛ••—• –ª—œ”—¡‘‰‘–›—‘—––§˜™‘›™œ˜•±™™›‘˜˜™–˜”›——““£˜‡•—”ž –˜œ—˜™œ›™œ“˜˜š“˜¥•—œ‘‘™•–˜ž™œ†™˜—𗗙𔛗™”™œš•™ ˜˜“’—š˜š•šŸ•œ—›˜ž™——”—”––——™•–™’Ÿ¤•”“——›¦‰•‘œ›”Ÿœ™–”™•“ ž––—•˜˜˜˜š˜š™™’””‘›•“••”„Œš•’’—’”š™’˜Š–šš••›—–¤—™±“˜–¥˜“••§’˜œ˜”“—š’”›–š—’¨™†›˜–›‘Ÿ–—Ž›–•˜—­–—™‘¡ž¡™˜ž•£““–¡˜›Ÿžœ™‘”’˜›‘•˜œ”™–Ÿ“•˜²–”––™’—•’–œœª¡—™ŒžŸ›˜™–“››”œ—™–˜–””—•™œ”–¢¡›˜š•——˜œ–Œ– ’››“›ž‘–™š™Ž•”™š•“–—Ÿ’‘”š’”˜Ÿ—–•š›˜™’ •’™–””•–—’˜œ˜˜¢‘—••‘—™¡’œ—”—˜¡›“’˜™—œ—”–”¡•™™” ›˜—”š˜œ—•¨›œ—›•›œ”™—›”˜›’™™v¢”¦š¥›šž›““•‘›‘’š™–›”œ•—œ–ž˜œ––žœ˜Ž™¡šœš‘¡ž•˜——˜’‡›™”¢šš‡›’—–š™’˜—™–œ˜¡œš™˜•™›˜Ÿ—˜˜•œ“Ÿ”–—šŸ™¡˜¢‘—–˜’•Ÿ˜›“–Ž’šµ”Ž• —™™—“™¦”–ªœš£—˜•—“’–š•”˜Ÿ”™™šš˜˜˜ˆ¢šš‹œ—™•˜˜‘¢”™”ˆšš™•–™¤™¢š£”š˜‘˜ ž™Ÿ˜•—™š•™œ—¨—–—ž›˜–‘’’”¡˜“™šŒ˜š••—ž’•œŸ¤™–™–𛓕¡ ›–“ •“‹“˜™——šš–Ÿ‰™Ž—™–‰ž–‘˜ž›¡—•›•“™––“Ÿ“™šž˜”–”–œ”——˜—šž’˜˜”™›œ•š›˜–˜—‘›š“™–¡’—œ£›—••šš——œž•Ÿ›™œœ– ™—œ™•–ž•“›š““”t•–Ÿ˜–‘ ™™•Ÿ™——š™šš˜¡™˜š––­—Ÿœ•“— ›˜™Ÿ—‰–—”š–––‘‘¢§–‰˜–¥›‘•œ“”™Ž”š š–”‰”„œ –›”Ž“–™™—šž™–˜•›Œ››‘’ž—¥•–•Œ™¦™”œœšš›­‘ŸŠ’ ˜˜™”–––›—ž›”••›™˜‹ž„˜’›––œŽš¡žŒœš—š˜š˜˜›’¯•’œ™•–šž˜Ž—›–Œš—š˜œš˜¢™˜˜˜Ÿ”ž—“¢¡–™‘™‘–¢…šž“˜–ž‚—˜–˜Ž•Ÿœ™–ž—š˜˜ˆ—“•žŸ™—› œ˜˜•–—œ—’–˜•™”œ–§”š‹ª—“˜–™œ˜“›˜žš“™šŸ—¤œ•›•– ˜™˜ ”™“¢œœ–Œ’˜–ªš”~˜œ™Œ™˜›™“žž‘Š‹˜ ™£›–”¡˜”–•”¢›š–™“‡›™š¦™žšŸŒ›‘ž¢•”Ÿ˜–—™¡’Š“¡™——š’ššŸ˜—“š––š›—˜„œ’•†—“‘–œ˜˜˜«˜” —— ––œ›™–“¦¢ ¤™™™•˜›žž‰™š˜œ˜“™—•œž¢›™£š’•œ™—”™žš”˜¡ž‡—„—™—–œ–™—˜™Ÿ˜•™£žž§™œ’˜—•«˜š˜‰¤Š—–——›ž˜œ†š›š˜›™˜—™“‹…—¡©¡ˆš¥š˜š£——Ÿ”— •˜œ¦š• •”•¡šš™žš˜Ž—˜”™˜|¢“ª £“•˜«‘™˜˜™‘›”˜—¢’¤˜—ž“¢š‡–”¡—Ÿˆ— ””™šš“œ˜—“––Ÿ“››“–””£•¤›Œš›ƒ¢‘“›–˜žŸ™Ÿœ’—žš’œ”–’¡–šš¥™•™™“•›š—š”–••œŸ’““™–’¢–Ÿž–”—š ›š–——Ÿœ–•Ÿ–ž˜ž•{—’–•˜›—œ˜¢œ™‘˜˜š”˜›˜Ž˜œ—“—›™›’™™§–™•’—˜˜œ”–ž˜•™”œ˜˜ž˜‘’•›˜”›™–›œšš—¡”—›š•™£ž‡¥™•˜šœ—œš—™Œ–›•™Ÿ’‘šš›“ œ˜ ™Ÿ§˜—’•‹š˜š˜¤™œœŸš––ž–‘˜•›–’˜œ›˜“‹™™Ÿ˜”™•‘šš—Ž˜•–™™›š•™’š˜•˜›˜œ’­“˜“ŸŽ™š›¢”—’”—‘™””Œ‘˜––“”™’”™˜–𔕥˜Ÿ—š˜Žœ™—ž˜¡š‘™Žœš•™”–œ˜–—š™—š••˜—Ž“›™š™–™™—–˜”›š—••›Š– Œ™–œžž”™”˜—Ž•™“š—¤˜’™›–˜‘—‘‹™š›”š”›’ ”–œ›˜–“•“——šš—˜”u™›˜œ•˜‘¬—š‘šš’š•™œ‹Ÿ™—ž–˜˜˜œ•• ••••“’š‘”˜˜•œš¡–’˜œ˜™’˜žž”“š–œ™–˜š—œ“Ÿ—˜—˜™›“‘™—–˜›–˜™ ——”˜–‘”˜—›–—“–ž—››™•—™–¢™–™—ž˜˜šœ˜™›š•“™’“˜Œ™™™š§’“–›™˜ž”•¤Ÿ•˜–“šŸ››—›‘–œ˜•—“—™———˜œ”˜›–—˜’’“Ÿ™ž—š““—•œ—›™˜ž›˜žŸœ™ž‘•˜—‘š™™•›—“›˜œ——”˜–“•™š˜˜›š“–š•š•šŸš’”–’Œ–•’˜ž›•“’”™™ŸŸ¡š›šœš˜¡›‘–—”šš•˜‡’˜™›˜“”””œ¥›˜˜ž———–””Ž–“ž›Ÿ“¦šš—¢“š–™˜–˜–’œ–˜›œ“œ›¤˜–Œ˜—˜–Ÿ—Ÿ™š“™™š–œ—™™š¡›™‰–••Œ¡—Œ–˜‡––«—£”™™“”­”—›œŸ™›¡“”›™œ’†Ž—Ÿ—–‘›•Š—š–˜“˜‹—œ™ª›”—–—”•—•—§œœ–š™Œ’’Ž–¤˜™˜——’’“Š’››…—£š—‡™”‘–¨˜œ”˜™ ‹™”›ž–™  –’«‘•’¨–—“—˜œ–·“——œŸœ™”Ž”£¡˜’œš’˜›–”Ÿ™–—œ›‘Ÿ™š–™š˜˜–˜¡™š“˜”›–™œž•Ÿ““‘—™˜™ ™ˆ™›™“”›Ÿ—އž˜›©š“˜žŽ•„’™š¦˜™˜˜•œ–˜’—š™›œ¥—™š™˜š¥—™˜Ÿ‰™”™—–•˜œ˜˜—˜–›™—›—‰›¢˜Ÿ £•™–’šš£——œ™‘ª•—“¥™—•›™—“‘›™šƒ˜—••™‡”˜ˆ¦¢žŒ˜’˜™˜–˜Žž™ž„™‘™š¥š™‰£Ÿ˜—••™‰˜”˜™›—˜–›‘™–•”Ž–š–’–™”——––š¡¡’™€–™““•Ž™š¥ Ÿ™–¢“‘˜—™–œ™Ž˜›™£•“˜“—•“—•—œš—˜š–‘˜ž—–˜–™•—™’Ÿ’šœ˜š˜™˜’ž‘“’™”œ‘š™”˜Ÿ–—˜š”š™™œ‘ œ–•˜›˜˜‘”–ž˜š›–“—Ž–•š–›˜œ˜›”¡™˜“•˜–™‘Œ–˜””–’Ÿœ”œ›”—¡Ÿž–š™›—™—›œ—š—™š“™˜˜“–Ÿ¤§™••š™‰˜Ÿ™œš——›“›•˜§•œ§—†™–Ž ˜˜˜”›œ–’•˜›™¢¥Ž•—𢕡™™—•¢Ÿ—˜—˜˜š™–ž™–™–•𔕙œ˜œ•žš ™–——›™•™–“—•”“ž˜—•˜‘˜”˜’¡—”œ›–¤œš—ššœ–™œŸ›–˜“œ››››–™™œ•žœ™˜—”˜ž™““•–˜—•”š•˜’–Ÿ›š˜œ•—˜——•’‰›“–˜—Œ›¡’–œ›š‘šœ—š˜š•™•˜–Ÿ–““Ÿ”“™”š“™˜œ¨‘¡š˜–  ™™Žšœ–š—˜Œ”™œ‘“œ¥™•••šœ”•‘˜“™™¨“•Ÿ™–šœ‘“›–™—›”™™š¡˜š–§•œŸ—˜•“•Ÿ—’—˜•©™œ”–““˜™˜•™¡–‡—š¢“š—˜›•””˜–˜›–™–œ¨—’•™žš›š—£œœ˜›—’—™˜™š˜™•˜Ÿ—š“––›–‘™šŸ™——‘±š–˜—š”—“—Ÿ™š•——•›–˜˜˜‘“œ•¢˜˜›•Ÿ™—š——™˜—–™”˜™—•™•Ÿ˜J–š•šŸ‘›Ÿ›ž›––—µŸ—˜˜—œ™œš™ššš˜™›—–””šœ—œš›‘™›œœ˜™™Ÿ£š™—›—›–˜”›—Ÿ™˜”™™—˜Ÿ›–™š™š”™š›ž––•˜˜•—Ÿ–š•’š˜—šœ˜š˜‘™V˜š–šš™—”–™š—–™•–—¡™ššŸ—˜˜™››–—”—˜—˜˜‘š˜¤‘› “˜š—•–ššš—˜˜˜——ž——“‘–›Ÿ˜¥œ†™‹ŸŠ˜˜Ž“–¡™š™¡˜š“™’Š—š•—–ž™”—œ—œš›—ˆ——•—”—–›–•›–—”Ž”§Œ˜—–˜–¢šœ•«˜ž›”˜—› ›Œš‹•†–©¡™œ”ž‘œ™™žˆ‡˜•š˜™™™‰¢›¢–žš¡–˜œ”˜š™œ™–˜›™ŸŒ›‘ž—¢˜—šž—‘˜–”˜¡’›Š”–—™˜›• ž™š¢˜˜˜˜™›˜–’ˆœ•”–¢—˜˜“—“›ž›™šššŠœ™’š¨–™•™›—Ÿž’˜¡™‘–›•–“™š›š“—š’žš ————–˜•–•˜š—ž˜™˜Ž’žœœ—›š™ž—”£™’¢—’–š–šš˜›šš‘™—™’œ••`Ž“›Ÿ˜–¢š­›–™§—“š—–™’•™•žœ˜š¡“xž¡”—“œ–—•—š—””˜›––™˜ž”“•žž–—›œ™˜ žš“—™š’™˜˜œ—˜›•–™››˜”—˜™ˆ”“™œ•˜š›—Š˜–œš–™”•—¡‡™”Ÿ”–˜™—œœ›š—šm”¢šœ  ›–—›š˜“’œŸ›™œ–•™›žšŸ˜‹—Ÿ•œ•—œš——˜š™˜™—›’’™–Ÿ Ÿ–—šŒ•ž–™–…˜š™™—™—ž¢œ‘—–š–™–”™”Ÿ˜™•ž–™•™œ™™›—™šœš–œ‘‘“‘ž›¤ ‡Œ—”¡—™“”†™˜£Ÿš“™›–”œœ’–—”ž‘”–©›¡Ÿ‰˜¢•™˜›š˜”›—¡“™œ™œœŸ˜™œ˜›š“–œ‘––˜˜œ–œ–‘œ™Ÿ“›š””•™›Ž“—˜˜–„—›™š™›˜›Š’—˜—˜‘“—’¤›ž›œŽ—“ˆ§’›¡˜ —¦œ—‘™‘‘˜‘šƒ—“ž—‹•– —•‘•“Ž–™›—’“œŸ—’˜›•‘”•™–“›“••–š˜š—š——’˜›˜›˜—™ž˜™™–œœ–—™š˜š™–˜™›”—™™š™šš™˜˜—˜—˜f˜–˜“ž”—˜•™—˜”™˜˜–™š–˜‹—š–œ˜•š˜”——•š¬˜œš™•——˜•›”–—”–š ™“•—™˜˜—–—•œ˜˜˜Ÿš™™’˜˜šš—˜˜™œ•˜–š˜™–™”™™—™œ›˜—›—˜“••ž™™š™—›š˜›™˜”˜˜˜˜•˜˜˜ž›—˜›š—›˜™•——Ÿ“™’––™™—–—˜›™™™˜•šš˜™•À˜—˜™˜š•–”˜•™™˜¡—™›™œ™—˜š”ž–—™—™˜š—š—–š•—•ž•—š––š–”‘–—˜“–š››™–”¡—–™–™•—˜”™˜™— ”ž™”™—š–Nž˜™™š™—››Ÿ“—Ÿ—“š––Ÿ˜——™™š˜—›•˜›“–—˜•–}˜™›™˜—”ž˜’›˜“š–—e›•—™—™–š”›˜˜•–šÌ—š˜’–›š—––”™˜••žš›“š“”•˜š››š–œ™™™–›–›™—˜™–œ˜›–—•—š”˜••™•˜˜—“’—™œ––“˜™™œ˜•–—•—“• –˜™œ˜‘•™ –³•”—˜—›Ÿ›—™‘›œ”¦“•“—™™–˜˜œœ™••”›‘š•‘•˜›—™–›—•’–›•š¥“œšŠ™ š•—‡’Ž›˜›˜”—œ““™™žœ”’——–—–›š–•›™ž—Š™™˜˜•‘˜››˜—›•——¢®‘•›‹”–‰š›™”“Ÿ¢š›–•˜–žšž—™—©’——Š™›™››˜—˜›› —™–˜›¢šž™’›™‘Ÿš™”–““››–•§—˜˜ž•›™—ž››” šœ”•š™”˜—”•¥š–œ™™¡š›•—”˜¢‘Ÿž¢’›š“™—¡˜˜”œ•“•‰–•ˆ››ž˜²˜”¢œ›“——–››—›˜”™•™–¥šœ—’Ž’’Ÿ”–——“š—›š˜›œˆ–š•š•š”›š““›™œš„“Ÿ•–“¡––£—š˜™œ‘’¡—•›–œ“œ”“›™“›˜•£—•˜‰˜’¤””™›š•—˜£——š”¢ž’›¨ “†š– ‡˜˜¡•¤žŸ•”Ÿ™•™¢š’ ›—”•–•˜˜ ‘ ™™˜›‘”’—” ’–£Š‰–Ÿ™“œ—‘’¢—”™™’ œ™—œ›•›™–˜”’މ ›“›–𡤗–ž–Ž—•› —˜Ÿž–ž‘”›žšž“–’™”™’™“––›ƒž‘Ÿ”›”«Ÿ›œ——š—› “œ™™’œ‹™–—”˜œ“²”™››‘œ®Ÿ———› ›…•›—™›˜Ž˜š•–™™™¡”—Ÿ– ›”•”šŸ¡—™™¥›—›‘«Ÿ†¦žœ’š—œ›š›–™¯–“£™˜–œŒ”Œž”šœš–£˜›Ž˜~š˜˜—–™—ŽŠš›—Ž—™—“›—Ž•¢¥—š˜œ“”œ—”œ”‘˜ Š“œ—–‘™˜›‘–—–ž‘±œ–š–œ‘•›œ¥–˜–•˜¬˜›—‹–—Ÿ†¡™—‹˜š’œ’žš§–š˜–’–§¬œ™ž“Ž£—–™™˜¡‡š•Œ—–™•Œ—«—‘Œ–˜˜Ž˜—–—š–—‘Š™“™•Ÿ›žž’¶™›—˜˜””˜œ—•š›”’–•——˜…œ›‘˜™—— –ž›““˜–š–›™˜“–˜š‡Š“‘ž£—Žƒ–“’”š›‰˜›”“”§œ–¡“Ž—¤“ •š–’Ÿ Ÿ—™Ž˜›šž•—˜™š””˜Ÿ–”–³–—ž¥•¢’™™™›•›™˜˜’ž™Œ™›’“™š›““˜˜•˜˜Žš˜“ޑ𖗗——Žš–—œ™ž”•œ¡›—˜š™š—”––™•™—›’ššŸŒ ¢œ¤˜˜”†•“œŠ•œ–˜œ””žž–˜“§šœ˜›˜—˜š™™’˜›‘œœ–˜–œ¢œ˜•Ÿ—˜——“ž——œžœ˜ ™–Œš‰˜—˜˜—–”š—”œ©•›””“¥˜”…š•œ—Ÿ›Œš˜£–——›˜•“˜—š™˜˜–›§›–š˜™¢–¥—•ž£§–¦™˜”Ž—š¡“…™ŠŽ§™–žœ—š•˜‡£”ž¥––˜˜•œ¬—“Œ’¡”š—š˜™˜£‰™’™˜š™Ÿ’™–•š±–˜˜—Ž˜žœ‰“–’—~——‹Ÿ—›Ž˜š”§——‡”™™–˜—¤–•¢¤—œ‘¤˜ž˜˜––‹š˜˜›ª«—“›—†™—˜–œžœ™™—•™ ˆ™œž—”𔓕£¢™›—››”š¥—˜˜˜š”™“˜™š–™˜”–™”š™˜—œ•’›–™šœ˜˜š—¡—‘—š›˜™’•—Ÿ™•”›››™›—–“¡¡“˜œ“¬‹š˜’™–œ •””Œ–—œ˜”˜œ˜—˜šš•“£—•˜’š›˜–“š™–›—“——Ÿž™˜˜ œ˜™›Ÿš“˜¡–™™–˜—«—”—™š•˜•˜—”–š˜™–š˜—“ š £Ž’œœš–›•“–¢—›œ‘•”š¤šœ””¤’˜›–—‰›®›š˜–•™—¡“”š“›™•“›˜œŒŸ™›š™–’˜’ž™˜—”ž›™›“— ›‘ƒœ›–˜™•¢œ˜›ž™›–˜“–”š“›—Žš•™™•ž–™šŒ—˜š™š•™“ž—𙕕¨ž—–§–𛋂˜¦’𣢔”•‹‘“”š•š˜’–œ˜•™’ Ž—­™Žœƒ¨‘›’–—¯›› ” ¢˜’•–‘‰šŸœ™š•“š—˜˜…—™œ›“¹“œ¢£•Ž›—”•˜™š——¢§š–˜Ÿ¨žš©Ÿ›•œ•¦•™–••Š“›““—›š“”¥Š˜’•˜‹˜“𗕤•›˜˜˜Ÿª˜‘Ÿ¦}—­Œ™™¡¢¡¦™Š—˜—˜ž£•›–‘›––‹•Ž“˜”™•¤š–“˜Ÿ˜š•Ÿ••›’•–¡œ™•¢˜––™‰œšš™˜——›Žš˜™–—˜©——–ž™œ—šžš–œœ™’–‘”—™–•‘’›™š•—“‘™‹”––—œ˜š’“™“š•¡¢™šœžšŸš—”–œž”•˜“›–•š•Ž™–•—•›™›¡œ›•™š—™˜š ˜™—˜š™œ—®Ž”¤™•–•˜––˜”—››”Š¢› ž•¢›•••›–•–ž˜˜™”—˜–™›••™¦“›š–•”‡¡—š—•Œ™•š—˜’“–•˜¢Ž£š–’œœŸš–˜˜˜’—˜›–“—¤ž›•–—œ•”–”’¡”‘œ•”™” ŸŸ˜•©”›—™•œŒ•—œ™œ•‹–˜—™˜™™ž”˜—Ÿ”…˜Ž““™š˜Ÿ•–™š™˜“——ˆ“˜œ˜™š•—¯ —‹–˜š«š”ž—–™«•šœ˜œ™¡Ÿ•‹—™“”š‡œ—›™˜–˜”¡”“—š¡™”Ÿ›š§˜‡ž‹•‘˜ž•£— ’ ›“ž•™”’¥¥”›{—˜¢š¡˜•ž£§•œ“Ž•”Œ——¢“Š™”œ©”—¦•£•‡™¦‡’Œ™•—œ£–”˜šœ˜”¤Š›˜—Ž’˜”›•˜ˆ— ™—œ–˜›’˜”˜Ÿ–˜Œ¥ˆŽ£•™˜™–ŸŸ“’˜•“˜’š˜šŒ –¡’™œ—“˜Ž˜Ÿ™—›œ•“˜¢­šš…“‘˜“–Œ˜›Ÿœš–”•˜–ž¥š—››™œ“’•œœ–—›ž™Ÿ˜š––š–˜›¦—“—–œš’–˜›˜«—£œ—ŠŒœšœŠ•ž¤ž„š—œ–œ•——›–˜••š ™’“ŒŽš™˜™œ–œ¡–—š˜šŽœ”œ‘œ—–š˜”˜¢˜œŸ˜¡™™¥›¡”ˆ“”š¦€˜šž ›—Œž–”Ž“”¡Œ—•™˜Ÿž–Ÿª”—–™™™–––›Ÿ¤”Œšš˜•˜°•—šš—™““–Ÿš”™…œ”˜–‘›–ž™–”˜œ—‘›•šœ³šš›—Ÿš”œ‘•‹¡™˜—”š›—™•ž™•’›ž“¡„˜™š”““š–™—¦š’Ž ‡²™˜œ—œ”™›™š—‰”Ÿž“š–”•™–•›£—Ÿ’—ž›™Ÿ˜™“”——›–˜›ž ’–š ˜–››™›£˜•–œ—˜ž–•’’ž’“™•š”š–šš¡–—–š–™›™š˜•™•–›””š˜‡–––”žž™™’š§—¡•˜šŠ›”—š’šœ—ššŸ—œ–™š™”±’›™–£œ˜™™—Ž—¡˜•›•–––˜¡™œŠ˜œ•——œŒ•“•–Ÿ–“‘Ÿ™—™šž”—š•– ‘š”˜œ›™—”“˜˜Ž›„–šŸŸ¦˜™¬¢•——Š–—›ž™“—— ’–“—™•›–™ž” ™™™’šš•˜›•š˜—œš ˜•¦š’•˜£Ž›››–˜|–‘—¤œ—š–…—”“ “’¡—žš™–™œ™˜ ™”˜—”žš‰ª—›˜›“Š¡•˜”š•—™‘—˜”™˜¡–›Œ’›¡™˜š«˜…—”—¦”–¢¢¢Ÿ™œ§——®›–™š˜˜—Žšš› ˜—”£—š“˜˜“—™—˜–˜•Ÿ™™——™¥”™‘™£™Š“—“‘—“œ”•˜™—š”˜š‘‘˜ ™—™Š£˜˜¦›——›˜•š•““˜••–œ–––˜•›˜™•˜—œ“—™œ› ——’—™™›Ž–››“–™–ššz¤š —•™™—•Ž”” ¡™–­˜”˜™ž“™œ£˜—–£––˜–—™”•™˜’”›‘•‘˜—–œ› ’¡’–š”›™“™œ ›—˜—š˜ššš›žš–™›˜¡›—š›–– ™„˜–•˜Ž ‘£˜—˜“™“—”™š”¦‘’•§•“•œ–Ž›Œ™–—‡–—šžš¥‘™š£š–˜—›••Ÿ”‘›™š——‘•••—•¤šž——Ÿš’™˜’››¢•–™œ—™–’–˜›——šš”•¦šœ““𖙔𣕔™–™™x–˜‹–Ÿ‘¥˜œšœ—›•އ—˜œ¥›™˜‘š—–˜——–•›’–•›—–Ž˜š’•–”¢—–•–‘• ›–˜¯™žšžœ”œž•Š›Œš˜‡•Ž––™—ž Ÿ—š›–“™© ¢š›•’ž‚—˜”˜™˜«›™’—™”ž›Ž˜ œ¡›™¢š‘ ‘™”Ÿ•œš–› ž™™™–•™œŽ™› ‘š¡–“‹—¡—“–œŽ˜š˜—™­˜”—•“”–𔩥˜“œŽ˜—•™”˜ ›››‰•—›–›™Ÿ˜–š –Ÿ›˜™šœ—š˜”˜’–”ž•—”™§–ž™“›š™š–˜œ™”˜“†š–———š•˜–˜–“˜š—ž—›•š‘˜•8Ÿ——œ™—’–š™Œ›˜p˜—•™™œŸ•—”˜ž—·™€›”š˜™š˜–™›™˜˜‘œ™—–š™Ÿ›š•›ž”—Ÿšš”›—š™š—˜˜–œ—ª•›¢™™™™™œ‘˜™’Ÿš–—“™—”›“—™˜—š•™””š”¡’šš•š–›˜›˜—™››—x˜›—˜™›•”˜˜žš ‹‡›™•‘™š¡”–™–™—™•œ—•˜š“˜žœ™’š˜—˜•™–•Ÿ“šš—’–˜˜¥™šœŠž™–Ÿ¢™™ž–—”–’””™™—šš•˜•–”Ÿ˜¦›•šŸ š•“›’”›—’ˆ–™ Ž…›‚œ••’š””’ž•œ §’•£—¡™’Š–•˜‘œ™‚‘”†¤™˜””—”ššš—˜––‘™”–›’šˆ—“š›ž—”™™¡™™ž‰•š¤Ÿ“£—Ÿ›———›£•—”“˜“—›––—––”š™—‘˜••˜•••™——•ª•–œœœ””—™–—˜˜’©œ•ž–“ –™•—™”–˜±—‘’ “’’—”–‘š‘•“ž–›“žš˜™š©œ™——•Ÿ›™—“––‘—«˜”œ”—”—”š™›œ“™––›š›šœ‘•™™š{–š•™–“š››Ÿ”–£•Ÿ–›š‘•šœ£¦˜››™••—’£–•ž˜‹–™‘ž‹•™›™•š—–œ–—–˜šš”ž©˜–˜š›™£–™˜›—™”ˆ™˜”•––š—™œš™šž˜™š›“›š–‘™˜–—™¥˜ˆ˜›˜››—•™’š›—”˜•‘›˜œ”’™–˜–˜œ›š•—˜†–š”™˜•š˜™—–‘–†•”“•›Ÿ˜‘—–˜œª”˜–™—œ•š˜—™—”Ž•‘——š˜˜žšœ”™’•™Œ™“™•ž”™ž”—–——™™¡¡œ™•‘–™—š“——‹•–šŸ••–”“›”œ“Œš—š˜’œ‘Œ•˜šŸ”“š‘–ž–š—¢˜Ž–‘–œ˜™›”ž’š™“ž§—˜Ÿ˜•““•”˜¯¢žœ“ž•¡›š›Ÿ “™—–˜›šœ—™›—•‹˜•œ–•›¢‘Ÿ—œ”˜š’œ–¤Ž–•˜™–— —¡›”™§“˜šš››¡—˜œŒ˜¢™žš™šŽ¡•šŸ›’˜˜‘›”˜“š–œ–”–—’–˜˜“•˜‘–Ÿœ˜•—•”›ª˜˜˜¦•œ”¦’“–——›”’˜Ÿ£”œ™–›‘–™”¡ž‘–”›š”˜™™”“™Ž•›‘› ˜–––™—šœ—”—šŸŒ˜’˜”™ ¢œ–›¥š“˜—•—˜–œ••œ••–”—š’›—–—”—š›”™˜›™˜œ ’‘‘ž™¤’ž–­›¡™šœ™™˜’¢£“œ™—˜—˜’™ž›“–“š–žšš—Ÿ•¤˜š–š—™”™™¢š™››•š˜‹–š™–•£–—ž‘ “—•— –˜‘•ž„ˆ”›—’œš¡””š•—•¢’–’𣔑•—œ—•’’š“—˜’•™ž™Ÿ§’•§”–Ÿ›››’”›–‘™–“•ž››“™”˜—Ž™”—Ÿ‘˜™œ––›ž—¢~•–’—™””–˜•›Œ˜•—•˜†–’ž›™’“šš¢’™œœ’¢›™™¡——›¢—ž¡˜˜š™•œš—›™™“›—žŸœŒ–š”•Œœž“›œ‘•›’——“”¦š”›£™˜š–¡’™››•ž”™”š˜™žš’˜˜ ‰š“œ––œ”š•Ÿ˜›˜™œ ––”’œ‹›™›•š—’Œžš™œ¦ŸŸ”ž—›™“––™¡’˜˜“’š‘™–™œ™–€•™š‹™“–™œ™•¡˜¢£¦––”ž§›‚œ›žž™Ž’™‘Œ›˜›“›••Ÿšš•›šž—™š•š“—Ÿ—”¥“š˜ž‘›¡’’™›˜™œ”œ›”‘™”˜š–•œ™—“”•”—’œŸ–œ—ž›˜•r£››•“™œ•†› ‘š™Œ–š“—“˜—”–›–™–š™˜™—š—›Ÿ›Ÿš›š››˜“˜˜˜—š‘˜—–”žœ™–————˜—‘ž“•––’™——ž‘•›—–™—™ž–˜¢˜™›™œ™–œ–š›”‘ ˜›•𛕙™‘”—šš•¢•—–™––™“›œ”˜œ›››š–›•—šžš˜›–˜™›œ™ž˜š——Ÿ™œš™™“‘™•—’–š•˜œŸ˜““”™§›˜ “‹¡–‹œ’— š‹›|›­’”— –‰Ÿ“©Š™¡•™›™˜•š–œ›™œ’•˜¤‘“§Ÿ”žŽ“†–”™—ªš•š¡’¤™—— ˜¡•‡‡‹›™•’–‘žž˜““˜”›•™‚„˜”˜ž˜‘œ”–…˜–“Ž˜Ž‘š—Šœ”œ—™—’™Œœž“š³™™‘š™Ÿ‚Ÿ˜—•£™•šŸŸŽ–™“‡—𙕢ž…Œ•ž‘——– ››ž˜š—™œ—™”œˆ ““—š˜†ž”š‘’’œš ˜—Ÿ””——˜•𢡙‹¦ž™†“žž—¥‰–™œ“•”•¦‘— ˜›™“™’˜›œ›¥• –“š˜š—žŽ™” —•“˜˜…Ž–—˜’’£—™—•ˆ‹š’ž˜—˜Ÿ””’—–™†”•˜Ÿ™¢–˜–˜š›—“–œ••–˜™™”™œ˜‘š£˜Ž– ”˜š“«œ™——‘š•“˜•˜œŸž“—˜’—›•••’‘˜˜¤—“——˜—š›•Ÿš“˜—“–œ–™‘™œœ˜—Ÿ§ž«™šœ“š˜•™‹“—–”–˜‡–™œœš–’£¢˜˜š•“™±™šš—œœ— ’•˜”™ ™•™˜•ž‘—™™–›“šš™›™–—–ž–ž’ œ”œ•𙫙¢¦”—––¬“”š±–Žœ‘ž”›Ÿ–™šš™ ™Ž“˜”¯˜–“•˜˜–œ Š™˜œ›˜‰–€™¤›™Ÿ˜Ÿ“™–Žœ“‘˜‰“œœ–—š—ž£–Œ—Š™˜“£™‘Š•š›™˜›“› ž‹“¢™˜›Ÿ¢•œ˜˜•˜›•ŸšŠ›˜Š˜’¦š™ž£›‹™‘—Ÿ• ˜›“œ›’œ˜•ˆŸ žžƒ•˜˜’—ª›”‘’™‘£ “ˆ•š–£š—˜‹—”–œ‘˜›•ž”š˜‡œš¥¥—£“¬¤”—›˜›™“’™šˆ”•š¥¡š—˜•˜–¡‘¥—›¤•˜‹™•™™™œ–››˜£›œ“ž™•š–“š–’’”™””•–•–˜˜•—›šš™˜ž•Ÿ›”™—–š”—¡—Ÿ˜™—•˜–˜˜“˜vŸš—–›™—•™›“›œ–_œ›ž™›™™š–š•š”––”¢––•——˜•“•“œ—™¢—˜˜™™•˜˜™˜•—–Ÿ ˜›—”™›ž™—˜‘Ž˜—™˜”–Ž’™ šœ™™–š™””™“—–šš—›”–˜ ˜—™š™™™Ÿ•–—–™™“““žššš›–—šœo—š™”™—œ’¡—š–’–˜—“˜ š–˜™Ÿ˜—››”˜™››š™™–˜•—™•ž˜”Œœ˜™™—™š•™¤˜’—›š•–—›š•– žš•’Ÿš˜˜—“Œ––žš™Ÿ‘”•ž—Œšš˜–š˜š›ž™œ”˜——›§›˜š•‘—•š›“œ•š––—Œš¡’˜šž“Ÿš™¨˜›—•“˜—““„›ž•–«˜•˜—–—žŸš˜ —–œ›˜™œ•–—”œ£—›˜œ—“˜“›¤™™˜•–š œœš“¯›Ÿ••—’™¡Œ–•–©—˜›““™•¡’–•œ“™˜“š™–šŠ—œ–“œ‘™•£”˜œ‘•—”—˜˜—™˜—•”’”›œšŸ–”™œ“•š•—•–›™œ˜“–˜™–‹“‘˜œœ“¡‚ž˜–˜ŸšŸœš‘™Ÿœš™›“¡›˜™Œ˜™Ÿ˜’œ£”™ž˜›™¦–š›––š™–œ˜šž––—œ‰{¤–“›˜”—’–˜—›–Ž–ž–š‘”••¦Žš£œ‰Š”™Œ™ž–›‘˜žœš—™£•—˜™”ƒ’‘œ”Žš™™’— –š”žŸš—›¤˜›Ž¬‘š‘™•˜ “”›’”•›™—‘———Ÿ‘–ž˜‡€”˜—›“¢¤™–œ—’˜“’—”’¦š™•ž•˜™‡˜˜—š™˜ž›˜”—x‹œ“”›’—–¡š”•š˜—¡™–›‘”””Œ“‘™–‘”˜š‘š›™š’š“šŒ–Ž™™˜š–Š˜Ÿ—¥žš›™–—™˜ž” ”˜ š––‡•—•“”™•“…”™”¡¡—œ——”‘•™Œ™Ÿ”•“ª””™š’˜ž—œ•˜Ÿ˜ˆ–™•œ•˜“•ž˜–•‡š•œšš˜–¡–œ˜š•š—–’˜œ”™˜ˆ––œ–—›™“–’œ™”›Ÿš‹‘š˜›‘˜™—•›–•–”Ž—–š•‘œ”–›˜˜““¡˜•“š˜ž˜’›†”›•Ž”™œ—ˆ˜›’–››¨ž”™¢•˜š•¢ ˜”“œ˜‘”—žšœ’“Ž•—•–˜™›•––œ—ž›’™˜žŸš™–˜¡›š›ž•›—”’š¥–œ ’˜•––˜š›ž–——¢¡™˜‘œ–™”žš—”œ”˜›ž•˜˜ž–––¡›•œš›™™›–˜›˜š•—–•—™›œ“”™š™˜š”—™“””—ž“—•™•“˜š•˜˜–‘Ÿ “—™š —•›••—“˜””—•—Ÿš™–“œ™š›”š•”œ˜¡˜—‘’Œšœ¤›Ÿ”•Ÿ”“—˜›™œ•Ÿ˜–—˜›˜—™›•Ž™’•›˜™˜™œ›œš—Ÿ –œ•š›—–œŸ–šš’ŸŸ”‘——˜›‰žš‘˜š–𖢕Ÿ›ž‘™•Ž•“˜›¡™˜”—™˜™œ›¡“‘—™“š—“”“š“”ž––™Œ”“žš˜˜˜”Š˜˜˜ššœš››™™—¦•’–Ÿ˜„œš™”“—š›–”—˜˜ŸŸ–—™š—™”—Ÿ˜†˜™’Ÿ –¢Ÿ›•››š–‘›Ÿ™Ÿ¢’‘–•žŠš‡–™–•œŽ”£•˜ˆ›˜“—•Žœ–œ’©¥œ™˜˜œ›™™—“š—•—™’ œ…”Ÿ¢™Ž—–——›—•–“–¡{€“šž‹™˜–Ÿ—›”Ÿ™™“Ÿ›œ›¤–¢›Ÿš¡˜š‹­Ÿ•——˜—›…š’—™˜——’—˜™˜¥›’’ž‡–—žš––Ÿ —œ˜•‡“›œ–›£™™›žš˜“–‘™›”£œ™˜‹•”››œ™’›šŸš–}™š•žœ–ž––—–”——››•‹ž•–˜“–“™—–ž™–¦“—››–—›™”›•™œ™—”˜ ˜™™œ~ž˜˜––•“›”–˜˜˜“”šœ“˜––“˜š””””¤˜—™›—”–žŒš•š˜™––•™œ”Œ•›š¡•–™‘Ÿ–—™–“”˜£—•œŸ¡–œ”•›¡••œ”“œ˜›š–›–š™˜’——œš–œ•Ÿ”›ž “‰‘”œ˜‘œ˜œ™®–—˜šš–šššš™•œ‘¡“™”š~–Ÿ”‘’ž–™—¤—Ÿš™“œ’š™—œ˜š–—œ™•™™Œ˜˜šŠ›”‰™š¡—›™—–—–“Ÿ”¥˜•”Œ•Ÿ˜˜–™˜–˜™›˜˜—™˜Ž–™˜–—’•šª­™—”—œ™‚ž£”£–™Šš–•’™§—œ„™•’ ›™•œ—¤Ÿ™ž“— Š–š˜™–žš•”›˜˜ŸœŸ—˜—˜¨˜™“±š•”–˜‰¨›˜§˜™›™›š–—š˜¡œ“”˜Œ—š›˜˜Ÿ§ž—›™’™Ÿ˜–—›——˜–œšŸ˜™¤—“•¥–™—–––—˜•›˜“˜“¦ž˜Ÿ’•~›œ–—¢šš˜š§’™–—™š‰œ™•’“˜š–™˜Š–—œ•š™–˜˜š˜™—›žœž˜œš”™”››œ»”•œ’˜™œ˜ˆ—Ÿ™˜•—£¤‰šž£ª¡š• Žš•’‡“š–›«˜“‘–—•™”•žš™”¡—œ¥›‘–š¡—˜——”™œš—†¥˜”—˜—–›˜˜‰––—››˜—•š•”™•Ÿš™™’—Ž—ž”›œ¢˜šœš‘§˜œ–Ž•—™“š“š˜ž•›•œ›™œ•˜š“˜¬˜›”š•œ•š•˜Ÿ’›ˆ¦•–š›–Ÿ¨¢¢–—¦—”•”–š•œŸ¥ž™ ™““–Œ ˜Œš—•••“Ž˜˜—œ›˜š˜ˆ‘¡Š˜–”œ•œ“”“•–——œš”–’š‘˜š˜•š—’œœœ˜‘“˜™Ÿ˜›ž£œ—ƒ—––Ÿ  –•˜”œ›š”’¦—™˜™™›Š¨–Œ–™š ’™Œ Ÿ“ š˜š”›“™¤”œ––ž™—•—™‘‹›– •˜›”—˜§—•‹•—¥š•˜–’™‰š–˜•—‹šš—®œ˜œ—”™”›§‚Ž–±š–—¡—› —¤“¦—˜ ’›Ÿ“¥œ˜•œ–›‰¨›ž–‘—¦¨•™’—•¡Œœ˜•™–›³›•––« ™˜ˆœ˜žšª••¡¡–Ž˜–’¦˜šž‡¤›——Ž—œ•ž˜¯¥˜˜“˜˜˜”˜•–”ª’š™–—“‘“š˜™š–Ÿ˜“”—•”ž”˜š–˜š˜šŸ›Ÿ¢–”•š••˜›˜œœš—™š“•’–˜™•“š˜›™˜›—œ—™™‘˜™‘šˆ˜—š•’—•š›–›™—Ÿ•“›••š›—“›”ž¤•“”šš–˜–š˜——™•–—˜š˜˜‘˜›——˜™”—–•˜žš˜œ˜”—˜›œ”™š˜’—›™‘–›™š‘””–›—™œ™’•š”–œ™•–•š –›“œ™˜•”–˜œ˜–²š“š——–•™šš›š™œ ’˜™“””‘šŠ•™Ÿ‘œ”™—–Ÿš•™™•ž’™•š—œŽ•– —“•…››—“š‰žŸ—–˜ž–šš—œ—¢“—œ˜œˆ—¢’—˜œ“™™˜™šœš­œ™š–•š—›˜˜˜œ——”••”¥––œ“™Ÿ‘¦”—”›šš™•—–š™”••‹™™œ’––™‘•‘§››š—š“ž˜•™š—¡˜’Œ——–ލ›Ÿ™™˜——•›–™¤œ™–˜™’Š’ƒš”Ÿš—–››‘š˜•˜˜œ˜š•“œš‘›–›¢“•›••˜ž‘–›™š”œš‘˜– ••¡•’˜œ–œ•ˆ›•˜’¤—˜š”‰˜£•˜›—œ‹ž™™™™š™œ˜—˜•—”˜–œˆ£žš¡™™˜‘ž’•˜”žŸ›™“©——Ÿ˜˜—šžŸ›“˜ —Š–¡—‘¤“–•˜™™–‡™š˜‘“™š—§–Œ”˜š‘Ÿ›–“š˜„““‰­˜–¡˜Ÿ‹”¨•£” ˜ Œ“›—”œ™“••š¡™–—–•—’›šš–Ÿ•™š—‘›˜˜–—šš–•š‘œ˜˜““Ÿ˜˜—™—𔕑“—–Š˜™”š”’š¥–—™š£›™––—§”•šž™•–“—œš‹ž•—£–˜—“ª˜›šž•–––‘˜œ–…‘”•‘•–˜š”–ŸŽš—›•œª—›–š—˜››šž’”—š•š“—˜¨š›•”›››–Ÿ™š’œš”™—¢‹Œ–”–——‰—š—š˜——™š˜™—Ž——Ž’™–¤œ›” ™›šš•š˜˜¢˜ ž”™——’•Љ𣗙‘•—š‘žŽš–ž•š—¤˜——“„””—“Š™›˜œ–—œ˜Š•—ž‘—•˜—›”›Ÿ“™˜“Ÿ†Ÿ—ž˜’—Ÿ”œ˜™™–˜™š£•Ÿ›™šš™—–“••œššœžš˜˜¡”˜‘ŸŒ–šŸž–™œš–œ¡˜Ž”›†›”¡‡“Œœ˜™š—š‹•—˜’„“š§¥›—ž–˜”•™¢—•—’¦‰”’”—˜š”š››š¡•–ˆ ™›™ž›Ÿ–¡•˜˜’˜˜£”œ˜—™œ—–’Œ™•™–’—š£“œ™•™“˜›œ—“’™—“™•˜°• ’š••˜˜œ’˜ž“šš˜Œ—‘–˜“š‘’˜˜œ…—¤–’–”•²”›–𔕔˜–¡˜™™™˜“—™˜”Žž“”œ”šž˜––£š‘ š˜¤ –“œ–•–™œ˜š–š•˜›”—š«ž– ˜…’—’™•‘•—˜˜™Ž Ÿ–£’›“‹˜šš§•–š˜ •™œ’˜œ’—›˜‘€ŸŸ’˜™š••¨—›”–𙓛žš‡”˜”¡˜™–•œ”˜•‘‘–™™—™—•“›–Ÿž—–œ˜™•›š•‘š—œš•˜œ–šŸš˜™šŸœ–”˜™™–¡“–—œšŠ˜˜—¡˜™š˜—œ™–”™ ››š”–•˜›š› ž˜•™„˜——™˜–›’˜š–•‘‘Ÿ—‰˜¡–š–š—¥™žš“ž—šœ˜œ™Ÿ•™–˜™žœ”šš™—’“šŽœš—‘–˜’›‘‹™œ•š–—››Ž“™”›”–‘ž—”’›”–©¡”™œ™Œ•—˜’š˜—”•™—”œ¡•’š— —›‹–›š››—–—©’¡š™˜›”•š¡’˜—’“œ™š™ŸœŸŽ˜™‘™™›š•šš˜˜™˜˜˜––•‘ž˜™¨˜›™——˜›œ––•™˜˜–œ’ž›–š›£š”™•“ž—”ž”œ˜“˜š•›”š•›ž—œš’˜›š˜ž”–‘˜•”‘šŸš’“™œ“˜œ“—–—›–š™–•™™¢š”˜–— –™‘šš™››˜””—š—” ›œ–•‘—“˜™–“Ÿ—™“š•—™˜š””š •—™š˜—›˜•™—™•–•”˜“˜›–•Ž˜˜“¡™“˜’•”šž˜š•’ž—ž™™—•—’Ÿ˜—›Ÿ—™“—Šš„‘œ”Ÿ•£˜¥—›•–šž–šš™™ššž•¦˜˜‘›œ”‘š•—”žŸš—™ ™Ÿ”œ˜›ž—–‘––•—Ÿ“š’‘˜š›™——š”š—›Žšš˜š’˜—šŠ”——–›–š›œš•˜—”˜“– –𥓤‹–•š“š˜››¡—––œŸ”“—•˜›–˜’”š–—Žœœn˜”›£˜•š—˜—˜–”›–˜™—˜••––’›š”––•žžœ—™š•š˜ž“š™š˜¨™˜“ž—–œ˜˜œ––—’¢—œ›˜™›…•˜–šœ™•–’“›™™™”š”™™™•™•“¨Ÿ–šœ”“™š–”•š™•˜–œž¡™‘ˆ˜›£”œœ•–šš–£¡—––—–š“™–…•––˜›™››”™˜’—™–œ“—— š——— ”›Œ•¤—˜––™™”—™‘™š—››–𙡙™–˜“—“—–——‘•™™—›—‘œ•šœž¢‡›Ÿ™˜˜–‘™¡ÿ™™˜šš¡›“–˜™œ™™™•šš——Ÿ—‚’—šœ›œ“œ••—™™”–›˜™———•”—˜”–™š™ œ˜˜–Žž˜œ˜™–›“’[•˜˜™‚š˜š˜“œ™—˜™™—•™’—™š•𔙔𛕗—–¡—•œ‘›››–”˜˜–––šœ–˜–”š˜¦—˜œ™š“—˜•—›™™›—™˜›Š’œ’˜š–‘›š“”–˜™–“—™Œ—›–—™œ“œ–Š›Š—š–œ£’‹‹’™˜˜Ž˜”±§š¥™•‹•”™˜›•–𓢓™˜•“¢ “¥œ´™ˆ“”—ž™˜•”œ“ ‘š•’œ‹’˜™œ™šŸ¥ª’—˜˜¢žŽ™±”ž•Ÿž˜”z˜¢‰•œŸœ—›™–™“¦¡£———–••—”¦’˜œ——¦›™Œ–•ˆ™Š–’˜—˜’œ•’›—•¢šž‹•ž›•–ž ¯•–‘˜šŠ••œ¢“¥•Š‚–™•œ„˜ŸŸ•“›†žš¢›–˜š’ޙЕœ¡…œŠ–““—”©™™™•š—“˜‹”›š—“Ц–’Ž››—ž–™œ“›“š•–’˜•™™ Œ››š™¸Œ––•‡•ž”¢– ž”’•¡™“…—’—š–œ•—¥›’ —•˜˜—ŽŸ—“œ–Žš¢•ž”ž§°–••‘œŸ“–œŸ—œ‘‘Š’š™ ˆš–—›‘œ›˜™˜˜§—©› ••ž——˜˜–•”¥š›Ÿšœ›•–˜–‘““¢£••˜š’Š”™•”Ÿ™˜–š—•”›› “›‹› œ“¦–›‘–›Œ‘šš•œ“”™¢—‘‘–•––œ¡“œ’––¡’– “œŸ“š• ž–”“®”–Ž••ž›–‘”š” ”¡›‰žž˜”’œ‡”–’˜ž˜“”“™œ——‘›š ”¢˜›œ—™¢•›œ››œ•˜œ˜“š‘–™¢Ÿš——–™›•Ÿ¢š›•›˜”•—š“™—“˜ž•ŒŽœš–¡–’—•–•›“›•—•—™s–—’¢”˜žŸ”›–Ÿ’Ÿ‹Š’–”””“š‰–™˜“˜•“¥ –˜œœ–¤”™›—Ž™™›™•˜••—•˜ž•””››˜•›š š•—˜›•—•ž›™™š–Œ“›˜™“–ž™’˜—•—˜—œžšžœš–”–š‡“——˜—š¨”—ž•›™“—›˜š˜“—”‘™””˜¢—™œ˜œ˜ Šœ˜™™˜˜š˜“›ž£——›•šœ›œŒž¦š”™™–‘šž”Ÿ•›’“˜›˜Œ•‡Ÿ™“Ÿ–•Ž˜ˆ›¤™•¡•£—““˜›—š˜ž™šž–•’”—“œ˜™Ÿ˜”‰•™—–—’–Ÿ™™–™™”šŸ–˜š™–„œ–—Ÿš™‘”–•œ”ž˜¡Œ”—˜——™›œ—™ªš”“—š’¦Ÿ™”—˜ž“–—˜›’šŸ™”’˜šœ˜˜šš”•µ”›“š—–˜§—¢–›”š““Ÿ—¬™“£žŒœ™œ›”šœ•˜š—š–ž’–•”—–š’—“””•—œœ™œ”›–¡Š›œŸ™¤”“œ£™š– ™™—Žœœ—œ˜˜š–•—–”””—“œ˜š–“˜•¡‘˜” —œ˜”—•œ£˜™–™–˜™˜ž˜•—™˜•š˜—œ˜‘™“—›•——•ž˜¥˜™š“˜œ’™™Œ‘¡”˜–˜›—–ž™›˜“Ž”Ÿ¡Ž•¡œš“›™œ˜žŠœ›–¤— –—” “›˜š““ ‰˜œ†›‘¡™žŽ–œŸŸž˜š“˜™‘™ ”–¦œœ“”™££”˜—”™””——–—Šš“‘•—¡Ž™•œŸ˜¢›™––˜—˜——›—™”“¢“˜“™ž’ž—˜•‹™˜”•˜Š•”—𛕅–›™š“š–™˜™™›£”–˜™™™œ—˜•¢ •š”•ŸŽ›š”—®”ž’–˜š™¢˜•™›—šŸ—˜œ™š—Ž˜Œ–•“¤•ª—ˆ–¬•š–¢—˜–™“˜˜””–›–‹——–˜•™ ž”¢˜™™”Ž››ª––š—š –§•œy”›› ”¤Ÿ™Œ¡™’Ÿ˜›”œ”•—š–™–š…”˜ž–¤˜˜““™˜šš—˜™˜›Ÿš™§¬Œ›–———––™™¦“•–“˜–”’¦œ™–™œ—›—š –¥’›˜—™Œ“–—Ž˜ŸŠŽ¯˜œœŠ˜¨“™—œˆ˜™•˜“ ”–—ž¢”—˜š˜•œš¡”–—–˜–ž¢›™œ•”•™“œšŸš†–Ž—‘˜œ››Ÿœ¯ ¡˜—•——”——ž˜—™•––›—ˆ–‘—˜—Ÿ˜‘š“™’™˜”¡˜šœ“’–’››˜¤£’˜¦—“ ˜ž“šž”¨–Œ”š’œ š–Œ”˜—œ–—ž”˜›  Ÿ•˜™Ÿ—‡œ•–“•š—žŒš’—™¡˜•Ÿ—¥‹œŸ———™“™š”–˜—’Ÿš•©–——Ÿ‘šŸ¢˜•– ›‘ž––—§’˜ž–šš¡Ÿœ——™¤Ÿ¢•Ÿš£‘Ÿ›©Œ›“ƒ—˜–˜¦”•”–’•–›—¤—ž¤˜š—‘ž›‘›ž˜‘›—˜™˜—˜“”˜™—š—¥˜˜–˜™˜–—••˜›˜˜™ž—–›“Ÿ——˜œ™—•—~œ™˜—˜™——–——›™›˜™”™š–™–¦’™˜–™™“¤•™•¡œƒ‹›•™˜—‘—–ž™–’˜®•Ÿ›“¦˜–––™›š–™Ÿ•››–˜™––š™›–™š–——•š–™™—••‘˜–œšŠ––“¢™–œš•’–˜—ž”˜¢™—™™›˜˜“•›“—”–––”—•™Ž’””•š——˜–Œœ–™™–›šš›ª–¡Œ––™™™ ‘•˜ž™˜˜™––™›šš‰™––šš•˜ —™œšš—››˜–—¦žŸ—›˜¡’™˜š  •—š‘˜›ž›˜”’–œ“’™š•”†™™™˜’œ–—v—“–•œ¤–œ•’›œ™™“–˜‹™–›˜›–‡›œŸœš—™˜’—TŸ˜š——•™——›–›•yš– Ÿœ–——šš˜™–”¼“¤œ•”–œ¥•—“¡—––—™–ššž›š’š—•˜˜ž™›š•˜š£—™žžž™––™“‘¢—•››”‰˜š”–––—š›ž˜œœ’œ“–š •š”—’˜Ÿ˜›žš™•˜›“šš™•›’”˜˜œŒ™¢•”˜›š‘’•œ™š›’™’šš’™ž›š™›˜‡™›˜•š”™˜š••›—••ž””‘—¡˜š–𡛣ž¢š˜—¶——ž”—›”˜£–”ž ”›œ¢—™––š’œ«–™œ’–—‘›™›™™–™œ• ¤–••˜˜Œ˜š–œ™‰˜™”–”Ž˜•£›–”˜˜—Œ˜“˜ž™—œš”¨š™–™˜—“•Ž•“œ˜ž˜”›˜‘— —˜”™Ÿ—˜˜›‰„˜—œŽ—‰–—–ž— ™••œ’œšŸ•–œ›•—›”‹œ–˜Ÿ—™›“–”“–—¤• —’’™ž”ž•—š˜š’‘—•™™•–™š–¥‰–™——Ÿœ›‘š’›•“™•›–•——”šž—›—”™—˜—˜‘™œ™ž˜–™•“–œ— –™•ž™˜˜——šœ•™›™œ•šš‘˜¢™›˜——•‘šžœœš–›š ™“™—“–œ–œ™“–™“› ”’™™˜•‘—›™––—§–š—™š –’›™›™˜‚›§™š™˜—’˜—•™”¢’•—˜•˜“”—Ÿ•˜•››•™—›•”™™˜˜—š•”ššž’›˜˜™“œ”’’——™›˜š™š—šš–™››•œ–˜•™”Ÿšœ—™˜™”˜–•“”š˜ž——”žœ˜‘™’—–œœ™•••Ÿ›ž˜•˜›˜’™—›œ“˜‘š™ –œ™˜™——”ŸœŸ–”œ™’ž˜”š—œ’˜Ÿ˜˜œ—™š•œ›••˜—˜›š¢™ š•˜œ”—’“˜‘š—ž•—”“˜œ†‹›œ¤¢«‰›œž–›“§—™Ÿž™œ™šš—™“›—Ÿ—–œn˜œ—––œ”››˜™˜™——™—™›–™š——¡–”›œœ˜“”–™¡™“¢—ž¬–šœš”‘—š–˜šŸš•”š—˜˜”™¢Š™—™š™œ–™˜š˜—™£“˜—¨˜š§˜••“˜›š™š’“ž”‘‰›š˜–““­—–›™•Ž“¥ —…’’”™Žš—›—™•“Žˆ£¤˜™˜™›™š‡“š˜˜––’’–š–––“Ÿ›—›™œŸ§’•œ˜—•—š›—“—˜—–Ÿ—”›™–‹‚–””‹™Ÿ•™ §˜—˜˜–—™—›™ ˜–™–™–ž“—™™”“¢˜Š˜ƒ–—šž•™™•© „‘¨• šš¤ž•‹‘–”›–¢˜š›†–˜£™ ¥—™q‡‘—›•›˜œ—™—ž•™›ž›©‹› ™–Ÿš—™˜˜‘££•Š–‹ª‡–—­–˜™‡——˜™–ˆŸ—“•‹™š”” ”¥”—Ÿ–˜—šŸ•–š–˜¨˜­”™š–›——›ƒ“«“–”–•›¢š˜–š”œšž˜œ‘‚”›•ŸˆšŸ˜šžœšœ›˜™”——–‘Ÿ˜œ•“¤“š–˜¤‰™š—¤–—›‘ž–›™–š ›–˜‰¥Ÿ‹¥™–™›Ÿ‘”——–© ˜¡–œ›ˆ•›–ž‚˜›Ÿ­œ££’—ž–œ›–œš’–•¥”™—š™„š™”‹”™œš•›’”“›’˜–˜•ž™¤ˆ“˜—–““›š›‡”œš›¡•›•¨–£™•””Œš•”Ž–ž™Ÿ¡—” ›”~ š–‰›“›°–ž›£š‘“•˜¢–—™‡ ¥•’¤‘”’‘–˜•œžš§š› ’’š‘ž––”˜š‘•¢§™™™™—•Ž˜“Šˆž˜••ž˜—˜˜›“‘†–™“ª•Ÿ˜™±¡š‡—¨››™™Š˜”š ”šž‘œŒ™¡™—š”˜¦˜—˜˜›ž––‘ƒš•—ž—ž•››˜™˜™œ›™¤ •˜Œ›˜š¨—¤œ˜‰¢‘œ—Ÿ‰•–ŒœŒ–—˜“‘™ž›™‚š §–”~•™››™šš˜›˜˜š¢˜–š«ž›˜–“€š „’˜‹•˜’•˜™›šž¡––Ÿ›£ˆ˜™—–¤›™–––š˜Ÿ›˜–™¢š©‰™ž £–›—~—™˜•˜–“Œ•–’—}—Œ—š±ª—”™›™¦”‰™—™”žŸšš—š‘Ž˜Œ—™š†ŸŽš”˜–‰£›“š“š ›™’“ž”—Š–™—•—œ—˜”•š™™˜œ—zœ“œš›˜œŸ¤œ˜’s”ƒ®™› –‹–œ¡–œŸœž¤”•™•–—”˜•‘¦››•˜™¥Š˜®˜–˜˜–™˜™›–š˜™™”š’–œ™›Œ•–™ž™•”Ÿ™˜˜•—’”——‘—–˜•˜¥——Ÿ—šš•–|˜©œ–”‡•—˜‚™š˜’™››™¢ž˜›•©ˆ•”™ššœ——œ”••›™ ”ž—¤¤“•šœŠœ™™““š˜˜”Ÿœ—™›œž¥•ˆš“”— ––™ž˜•——˜™”“”“”¡œ–—˜—–Ÿ”–™¤š›œŽ¢Ž–˜”—–§˜Œ“•™šš–¤—’“˜–§šŠ˜›—“œ™—š“™“•˜–›‹”š“š›Ž›¢—””™˜š¢œ”˜“’²œš— š‡˜›—’˜£Œˆ¥Œ—•©ˆž–•–˜™Ž—™¬—”™™Ÿ¤š–œ”•‡š•™˜ŸšŸ“˜™ž˜’–¡’¢ª˜š’—¦—™›”—•–•¦’›‡‘•–˜•š€›•››”™•—¡––š‰—•¡‘¥ŸŒ™™”’œ“–––”Ž˜””™†’˜¡¡¬˜˜ •œ©”¬¢”›¢¥œ—šŸ•™’–•›œ™–™›™Ž ‘œ”š›•š™š”™Žœ™‹š “““—™˜™š•’•–•“–”››š˜š”™‘˜Ž™šœž”–™›–•™™’’¢•”œ™Žš”‘•˜¡”›™”—˜›£™–—“™£™œ­š™œ•™—•€™—š”š˜——𡕤œ•Ž–Ÿ¯ž˜“›•š™””“šš“—–žš—’£†‘žš˜˜”•”—š•š˜“™ œ™ž’’š¡ˆ™–œš—™“Ÿ–˜›–š—–š¤’™†—™¥™š˜œžœ¡–œž™“ ‘›¡‰‡— ž š‘•›•š‘•™•˜™˜˜š™š—œ—™˜”™™—›––™™—™™–šœ™˜š—˜••˜”˜—™˜”˜—™œ—–˜–“˜˜˜”——–™™•˜œ™•˜˜——œ–˜• š–™˜š˜˜—›—™–—––˜š™–˜˜”Ÿ•—˜—›•™°˜˜——›–—–—›››™—š¥š™—™™™˜–˜——˜››——˜š——›•—™–šš˜™—˜™•–˜™˜™•—™›™”™š•™™—˜—˜˜—™šœ™————•˜ž™—˜˜–•™–™––™˜™•–š–—™’˜›˜——š˜–—–ž—™˜˜˜—𙡖—š˜™™—˜œœ—›š•™™—•–—™—–˜’ž˜‹”—–’—›š™¤”‹›š—™”žŽ”šŸž¢˜˜¡–š¤’Ÿ¥˜–§‘™œ™£ž–•›¡—‘}Ÿ˜– —™™—”š–œ˜‹•–””š˜—›——œ–™•𙥥›™“™šž›‘¡™š—•™•˜•—“š–œª–Ÿ” ˜Œš˜›š¤‰›“•™—§——Œ•˜œ™——‘’ž”¡™˜˜—šš™››ž˜••˜˜–˜›Ÿ˜„™Ž›– —‘›—š•ˆ‹‰‘™‘ƒž™”——–™¥š”™–«›–”’˜“••™•œ§¦˜•˜š¡‰™”—”ž™¡ ‰Š•¢’– ’™—žš˜•™›œŽ™˜—•˜’›““š„›š™œ¡””œ™–§—–›™‘–Œ—— ˜˜–—¢–™““›•š –™œ•–šš˜–‘Ÿ›–—•–šŸœ—“¤¤’¦˜¦—–”˜“™–˜˜—£——Ÿ™š˜ž”’–š—›““‘—ž“™”œ“•˜˜™˜—ž–”›——˜•‘”•Œ›ž™™–•›—•›• ”˜—”—›˜””’–——‘”–—–‘•œ˜•—™š’˜–‘£™—–Ÿ›—›£˜›‘ªš–™™—™‘—™¤••››™”©™Ÿ”’–Ÿ“”˜™œ—‰’ž”™“–˜œ¡™™Ÿ—Œ‘™™’Ÿ’™–•¡–›˜˜š›” –š›”š•˜–›–‘˜••“šŸ˜¥˜§ž—˜Œ™š‰—¢Ÿ“—‘™›–›››˜“‹š£˜’™š•’ ¤˜–š˜•–¡–Œ¡•˜—›–¡›{…”¢˜™’™Ž˜ ™–“œ˜›™‘—˜˜˜µžž—¡•Ž£˜šœ¥––›š™ ——’—˜Ž—˜˜˜™““І™˜•™—“›š˜—ž›™™›’Ž…—¬™›–‚—•–“”–¡š–Ÿ¢ª“˜‘¡™›™Ž”˜›’–”šŽ…–™—š˜˜•“š“œ—›š™¢–•›•–¢¶——š˜¨˜”Ÿ œ˜ ˜•”“˜›–•™”˜š•Œ––œž˜›˜’š‘šœ”˜¡•–‹œš˜š‹—¬••“¢•œ˜—‘›Ÿ˜‹“š—š–•—•Œ—¦—Ÿ‰• —“œ™”ž”—šžž–™˜™§›”™“”“—Ÿ™—–…“•˜‘™¡“Ÿ œ‡‹’†•–™˜››–œ“£Š‘™™ž¡ž“¤“šš‡“˜Ÿšš¨˜“–”“¤•™š“›”›¡š“—˜‘˜’”›™—™Š¤©Žœœ©˜›—’‘›–’£”Š—˜¨ž¡•’«–™Ÿ˜•˜“™’™œ¡™žœ˜˜—›š—Ÿ‹š¥•’™–”œ“˜œ–– ›—œŒŠ‘¢˜˜¦““š—˜–š”—š“”–™™–˜—£‘š˜›˜“˜™—””’œ ’’“«ž–¤™šˆ—¢—™•›œ”ž—”Ž—žŽŠ•¦›™––™™œ“•”—›“–Ž˜—”‰›š™™˜›•™¨‹•›œ˜Ÿš —›’—™™•˜•—•’—–§–•‘Œ—›–˜––¢ª•˜•ž‘𙓏–™•–”’•˜•™š–“𕙢˜—~—˜“˜™˜ ™Œ”¡›„š›–£™¤–—˜’—Ž—¢}‹›˜ ™›s‘š•š›””–…Ÿ™“˜“• “¥—˜››œŒ ˜™––¦Ÿ•–••Œš”˜Ÿ …†™•£œš—’–—˜—•œ†”›ªš˜–™™•›Ž™˜ž—‘—š”—˜—–™—«Žœ”¢–‹›¨˜“ž˜˜˜˜œ—•˜¥žœ™˜ —––œ”¡ ”˜™˜š••“ž˜•™˜˜–›–™•’•˜—œ›™“™¢——•˜“–˜ž›™˜••›ž™†˜Ÿ™¢›ž•‡•ž˜žŽ”žœ–—“•œ™˜—œ•››™”…œ™˜”—˜˜•”§™”—’›”ššž‹§œ¦œ— ™™™“˜“–•‘•’–’‘ ¨˜€ž–š›™œšŸ”™‹’™œ™œ›¢…¡ŠŸ–œŸ˜”™•™–’–„š”–‰‘—ž—›Œ¡—–—Žœ—­™˜—•œ›˜’““’š—™˜– œ¡™¦‹š—–™š—’œ‘‘˜ŽžŒž™¡’“›Š¤Ÿ—––˜Ÿ–˜›™š¡˜–›œ™“–‹–žœ›’œš‚š”—–™›—˜”‘‰›™”Ÿ“˜›Œ–‘›™•Œ­ ˜œ¥—™“ž” œ¤——¡—˜¡–œ–—šª—ž˜—ž›˜ œ˜˜”—”™—£˜Ž“Ÿ••˜”˜š™˜”¢›™Ÿ“™™‘ž™•¥š©–™—˜š–“•Ž“‹ ˜›—‹™›ŸŸ¤—™™˜˜—™™”‰œ™”‘¢™¡ž”˜ªž ——˜›—¬›™“—¢¢—™œª—’™–š—“‘™—›˜—š™¬œŠŒš——šª› ž–“Œž˜—”’—¨Šš—œ™š•™“•Œ’˜›©•• —žŸ•–™—‘¢””™œ— ›˜“˜–ž™¡••˜™˜“š“’Žšš–™£˜¡—›•“œ–”œ˜• ›™’–”™••–™›•›™¦¦¥Ÿ˜—œ–¦˜•œšœš—𓦗™¤™¥Ž–’†«œ•˜•›˜š–œ‡˜›–˜Ÿ¡’ޤŒ—•˜™”’™ž›— •™ˆš™’˜¡—•™™›‘–𛤒—‡˜–•“’–£—™•š—˜”¥¦Ÿ—˜™‘£“šœ–›žŸ˜’ª›„–˜Ÿ™‘Š—žœ—•¢š˜–£žš•“—™–“¡–¦“Œš”– ™‘ ¤”¦š“‘•™ž™˜•¢—šŸ˜˜’›˜˜ –˜šœ‰——˜˜  —Ÿ˜£™–›—™’˜š˜–™›š•–‘›“™ ™£›‘””——˜†~®˜ž¤™§”—𖙣–”›œ‰œ“–¯™žœ–˜¤ª–™™”—š™––‹“›¡™¢‘––˜ž‰“—™“–œ–—“ƒš˜ž—“«– ˆ‘™–””–£˜š•’“”‘”£«~•›Š”•–›©˜œ­‘—˜‘œ›™˜—Ÿ˜€ž•”žž‰’‹“”𙑆œ——“¨†– ›™¡›–Ÿš”­¡›œ™–ž˜™’˜˜˜š™–š˜–™’šœ—¥‘–™’›˜Ÿ™—“¢—˜š”•”™–˜––”š‘–žš—‘˜”•™œ•ž—œ– ˜œ’•“™ž’—š•Ž“˜š“–žž•–˜–›£–œ•š›—„¡™•ŸššŽ–£˜~—™–š•—™“™–•𙡖—œ˜——•—˜’˜“˜”˜™œ››’¦“–•–—𒬛£“œ”™–“—˜“˜‘–””•‘ž¨¢•–£v𔓓›˜Ÿ”™— ›’™Ÿ–žŠ“––œ–¦–”š‘•››ž––”Ÿ•ž“•”Ÿ’˜œ‹””¥™˜’—“š––œš~›•’““™Šœ“–˜ž˜œ˜š˜’—›š™—š•Ž™’œ—™¨˜™› ’—¡ ˜ž’žš——£–—ž—”–ž–œœš™–˜›‘•–™™••£Ÿ— ž—›—Ÿ”˜šŸ¡–•˜—˜Œ•—Ž’“•˜—ˆŸ“‘¤–­–«˜—•““ —‘¥š™›››‹–—š”ŠŒ—›‘—’«œ”£–•–—›œ‘”‘–™—¡™™š—˜š—†›—’—š§‹¡›š”–—š•—¨”—™¥–š—Ž“‘˜¡–›‘—Ÿ–˜š˜˜˜•—”šŒ™œ”–“’˜’™œ™•”›š›¢—•“Ÿ›šš›œ”›˜””˜™’—¤›•“”™‹”–˜—™˜•š–››”—• –˜š•™”™š™•œ—–›•š•›˜›™‚š›™”Ÿ—•U—–•’——›“›š’ž“˜—“œ—œ ¤––˜› —š—›’˜¢¡˜‹™™–Ÿ“–—•™Ž›©šž’“’œ–•˜———–š›£˜™–˜–—˜•ž™ž——•›——›š–š“œš”’˜–•ž—›š™———Ÿœ–—˜“™””šŸ˜™—˜Ÿ„œ˜‘––›–•–™“‹™—¡¥‹š–’˜”¡¯•–—¢™—”’™™‘–œž•‘˜™˜—šŸ•š”››˜”•œ›–›—•—˜™˜™—š˜“Ÿ—–—š•‘˜˜˜”•Ÿ—™—Ž•”œ™–›™‘Ÿ •œœšœ¦™®¦Š—˜‘œ˜¤œž“–—𢋛’¬Ž—“š™–Ÿ—š™™šŽ˜˜—˜™š•—ž”˜ ––”—’”¢œ™š”š—›y˜› ‚—«’š—}˜•–®˜•‰ŸŸ•›–“£˜”–™’—œ˜™†šš›ž””«¢•˜š˜”›˜™‘ œ—˜™––œ§¢•¦›‚šž™™¤•‘𔧉¦Žš–™—œ™—–œ“Ž˜•˜ƒ©š›˜‘—𤤖˜‘Ÿš™™–”ž¢›––›Žš”–ž“ ”––›–Œš™¦š˜’•“©›˜–•—˜–”“™››–šš—•™™™œ—Ž”¢™—ž‘“™”›’Ÿ˜¢‘–“”“——””Ÿš”š“›˜˜”š™•šš‘’œ”˜£Ž˜•š”™—ž——•˜›’–˜—™–“•™™š™¢“–•–Ÿ ¥— š‘››—”“›’š˜— Ž–Ž£š•“š˜‘–™›’—¤—¢˜ž’•ž‘—𔑗˜—™—œš–š“ž™”•”šŸ™œ—˜ ”¤’’”’š›¡šš •‘›™”‘™š•’¢š–—˜œ—’Œ–˜™“¢•£”šœ”™•š™’–—– œ¤ž–œ‹œ˜Ÿ›˜™•šž——–¥› –™šš‰œž˜Ÿ‹ž—”—š¡“›¤ŽŒ™™•˜‘–¤Ž’“‹—˜‡”’™‘›—•”Ÿ•‘™¡–“›¢˜ž™—”“”›•‘–𛬓—›”–˜–šš’›˜›–“Ÿ’™—• ‘ž›¡˜”™ š“—›”‘–ž’œ––Ÿ™˜™”’›”—–™–¤˜¥«¡™š— ‹š˜–ž—–‹š™—š™“¢Žˆ˜œš•š˜”“””’˜˜ŒŸ„— Ÿ˜™£—›š—•š’š”¥˜œ œ— Ÿ‘–Š™’›Žœ†”™šžš”—•–£”™™“”›Š—’›—•Ž’›˜Ž•˜—ŒŽ’š˜˜••—ž‘¬¢œ•š™˜›¤——ŸœŸ›–“’£‡™ž—”™“–˜ŒŠ–ž•š¤—œ¡••œ•š››˜˜‘‘–š˜›————”Ÿ‘£š˜ž–“˜’”˜›š˜›•‹š¡Ÿ›—••š˜ ™—™™š‘šªš¨Œ—›‹™šš–™›™š¡—›ˆš •šŸž”›ˆ—š˜——™™•™‘˜š’˜—‹š†‹œ~”™˜›™—£š–”•˜—–¨œŠŠ•š¡•–Ÿœ’›œ˜’”™¨‰œ—œ›˜”¯—™–’‘˜¨’•œ˜™™±™™–˜‘ª˜—¥•¢•—“’–‡™ …›—š•™”‹Ÿœ‡šš—™™™–—–›–•œ›—”•˜’›—š•’—Ž£™•™Ž•˜Ž˜˜ŒŸ™š—––•œ•Šš›•˜˜­””—•—š—•¡š—£–œ—”ž™—˜—™¡—˜ ™¤˜‹–›œ’˜”£—™†—–š›™ž •‘˜‹’”¢– Ÿ–˜¢œ¡™—›•–”Ž™ž™––…—™«•ž¡›’œ–˜™™“•••”˜œœ—–†££™™“Ÿ–šœœ“˜—’”—•¢œ¨£˜›––˜—Ž˜œš“—˜’œœš››Œ š›¢Ÿ—š–›œš–˜˜–ž›•š–› —›˜ ˜˜™–—™¨’‰’–—š•“˜–¥¨žœ›˜‹šš˜ž‘›“—šš–›–Š“¤”“¢˜—–‘– ˜ž˜Ž™˜—›£—”›™—‘š’ŠššŽ—š—–•˜›–˜—™–›•™“š˜›š›˜˜›—˜• £–Ÿ›™Ÿ¡¤—”˜Ÿ˜š—ž—Ÿœ“²‘•›‹–•—œœ˜™˜œ™Œ–œ‘—Ž¥™¢›“œ‚–œ™Ÿ–œšš›–•™ž–—œ’ ¡‘£ž–™—œŸ˜ —••˜”šŸ•”˜‰”–”˜’Š—˜œ“˜©ž–”™”›‹Œ‘œ˜–”›– £˜˜•ž””™—™›Ÿ™˜Œ—•‘šŸŸ—¥¢——˜“š™š˜‘’”–™—˜œœš–“—’™˜ —Ÿ”•Ÿ‘š™—™›—‰›”Ž™˜š§š˜ ™–”‘–‘™˜’™˜˜’’•˜™¦ž—šŸ—’—™œ—’ •–«˜¤–—–•™›™™–™£—˜˜¦–›”’–”“›–“©˜¤šˆ‚——™“ž˜Œ•…›’–š–š•”——˜–›™•‹˜–¡“™™™¤˜˜—š˜–Ÿƒ”œ™—˜–žŒœ“œ•‰Ÿ–𥗛•‘“›—˜š•š– ›’™£’šš—Žš™ššš†ž›– “ ž•¡˜–š’¥›••™š”––œ”¦——š“ –—›—›“¡“¡ž™š–›˜›””“–™–—“—œ‘–—ž“›š—œ˜š“›•‘•›™•–¡‘’Žš™—¨š––žŒ——œ—“•‘›”‘–š•˜Ž –ž“›’™”—˜››ž•–••›—™•–””¡¯“š˜•¦œ˜¡ž›‘š›šŸ–©”—‘›•—Œ˜¦—œˆ“–•›˜¡—”–¢”ž¥—•’“ž˜œ–ˆ“•—‘™˜—™•œš˜›™–’šŸ’¤–˜‰•šš¢˜”——‘™ž›™˜{‘•˜¡–˜–œš——‘œ•—™«’›”–›–•œ•˜–•œ§›–˜š™Ÿ’–š—˜•–—Ÿ‘”›™—›š—“z•žž˜‹œ œ“™”˜“™˜—˜Ž¢––ˆ—’”––”˜—‘¤•˜šžž•Ÿ››•«›‡ž——¨’”›™žš”—’™¢¨š—š’’“£¥š’––™žšœ˜™•“›™”“£”‘“˜™•—•”ž›”——•–˜¢š¡Ž—•””™˜’œ‘Ÿ›žš• ——š—¢™˜•žš™™‡–—§—œ‘™£ˆ›™˜–—žœ•“•–™‘šœ›—™—•˜šŸ’’–’œœ—“–“•‘˜”›¢¡†“–•—•’‘—–“—Ÿ˜™˜›™—“¦¡¡Ÿ™˜œŸ —“—𛢗™–’’—žžŒ¥­—Ž™–’œ“¨–šŸ™›™—“–˜›Ÿ”—›”–¨”›¡•œš‘£”š–•”‹ŽŒ›™œ’’£›œ’”–˜£“›‘”•œ•›š™–›•™“œ—˜›˜˜ ‹˜–˜¡—–š—š ‰——™› ”™Ž›—¡˜œ•˜œ•“œ–‹•Œ‘—žž“§œœ–•š˜š ›Ž’˜“™”‘–œ£—”¤Ž•™š”š™•š—•’›˜’Ÿ—Ÿš•™ “š˜•˜Œ”š“•žš›“™˜›€•‘—‘˜’”˜“•žž—›—“™™’“——“›—›“ž“ŽŽž–“‘—–ªš™š’¢•ŸŽ’”–›–—œ˜–‡—›“–•–“—”™Ž˜’•˜•Љ𔖛˜˜¥“••˜œ–š”›˜“—›“–š™™•›•Œ—›˜›™˜™š±“•™—£›š—¡›•𙓕¤˜’—˜¦­Šµ›š–›—›““ššš ž›–”Ÿ•˜–š—˜š—˜›“™–›¢œ›œœ•— ž—œššž’–•—•–—˜–›•œ•‘›—ž™— –™•˜–›˜Ž›Š”œ—ŸŽ‹ž–š™œ—ž™—›¢•ž™•—™•žˆš˜—“’œšš–”¡Œ‘—˜ œœ™™œ›Ÿ–’““”–—𗙤˜’—‹˜ž—–”£˜–ˆž—”ž•‹–›™•–˜Ž£–˜—ž•“›“š “–———šš–—œš•›˜œœ’›™™–˜™œ˜ž••šž›–”œ˜™•˜œ˜ˆ”Œ™— š›‘‘˜˜›™’—£”––š›˜–——™˜˜——“”‘•š—ž™˜–—žš˜•—œŒ “œ‘š–•—˜”™–———¦ž—˜›Œ“ ˜˜—™›š—˜›”¯™—œ™—’•˜˜‘™– ›—˜›™¡š•™–—“˜™’ ™’ª–¡”‘šœ–¡•™‘›–˜–•–Œ“—Ÿž™š›¢ž–•š•–™§”›“—Žšž’™šŠ—“šš’“—›™˜—“—œ˜œ‰ ›š •••–Ÿ”–•š˜ž’›Ÿ––›Ÿ—œ˜’š‹Ž™••‘•“™œš”ž– ž•™—œ“™œ——“œœ—›ž•š–“’ž•–˜–”‰–•–’™—ž–”šœ¡§“ž”—‹ŸšŒ˜›”¡’“•™™’˜“›«™—™œ–ž›–—‹›•œ¦•“¡†–™˜––™˜—žž“ž–˜šŸ”‘‘“–“œ’ž—–”—œ˜™”——˜•Ž“›šš™›š•–š…“˜˜’–™‰‘œ™™Ÿ•–••Ÿ™™Ž¥™——ž”›¥‹šš“˜•—²˜•œ•““˜‘œ”˜’”›œ¡—˜~™Ÿ“‘œ—œ™“™•™“š˜“’¤——›•™–“œ˜”–•¢‘™š™š‡’œ•¡˜¯—–”–••˜šš”š’’—™–—›——›š™™™¬——š“••˜š“’›œ’–›“™™“œ•œ³—˜–”“ž›˜••Œ¡™™œ¨—™•••—››¤“–˜’•²›ƒ£˜˜¡˜¡žš˜Ÿ˜™—™™˜•ž•–žšš”ž¡š–”•ž™”œ—––’•˜™™——’““•Ž˜˜••—’˜—”˜À›™–š›™Ž—™šŸ—™œž—ž’š™Œœ’™ž——š¢™œ•›˜•˜Ÿ—¡–”œ™šŒ“•—™¡–ŒŽ“•—•““Ÿš’˜—›‘™‘”š‘š–š• Š£ž—›˜˜”ž˜™›–Ÿš“›˜—˜—›”˜›£¦œ—™¤‹•“›˜’‰—˜˜™§¥’‘˜š’™ š”¥’œ š‹–œš˜—Œš—˜–š–—˜“Ž”—–™Ÿ•˜•“Š›¤–˜“¤‹œ“ŽŽ™—ª˜™–‹•ž—› ¶˜ˆ›š—›”¡—’˜—•–š˜™•›˜¡~—™žŽ£“——˜šš™š–©™œš™™—˜ ž‰›¢˜œ’˜“˜—›‘˜•’’ ›¡œ›Ž™šŠ™™˜•™šš“˜œ›—š—¡•–“—–™¡¡š™›œ—¢—“š‡“™˜ž–£‹–¿––——¢””•ž˜™œ–šŸž›—™“™’—™™ –‘–—˜ž¡•¢œ™—™˜“•¤“ƒ•–—–ž—™™˜”Ž¥š•Œ–’›•›’’”™Œ™‘˜—••’–—š™˜‘–——’£¢•—™˜’•–•ž™†œ¢š”—••‡•‘œ§•Ÿ˜–‹‘œ¡˜¬™©¡–¤‘“˜›‘“”–¥”˜—˜•–’™”¤˜˜”œ”˜–˜™–›Ž™˜Ÿ™˜™ Ÿ™‘†›‘—”™žš”˜ž’•™”žž’Ÿ—–¥“”‰–¦›šŸ—––®—– —‘™›“’™‘—˜£‹˜™–˜œ›™››š—“š‘—¬’™£˜ž£™•˜•©š•’𤙛’‘˜˜˜Ž˜˜“’š“”™˜ššœ•’’›–™—“™“—œ››œ”˜•”œ•Œ——¢Ÿ”‘›—ž“¢Ÿ•”˜›—“—œš“››Ÿ™“•š—–ž“œ£™œ˜š— ©š‰™—™–ˆ——‹Žœ–šŸ˜ž–› ¥—ˆ›¤›ž˜™•“—–—•œ•—ž”{™– ™š¢£¢›•œ›”Œš› Ž—’ š•–š›¤žœ œ ˜˜˜–Ÿš›§”™˜ž™’‘§™™”Ž—˜¡—‘™›˜ —£™˜£ž˜–—˜œ–—žŽ˜–š˜š£Ž‘Ÿ™ Ÿš”’™¢ ™ƒ‘š™›‘’Œž˜˜‡š–£’‘—Ž–•œ—”›š˜“’ ¡œ—˜˜›™•›™–š€—†˜•’’Лޗ™ž •¨—›‘”–– —–­˜›”¥’ —›“Œ›–—”—š™•˜›š’–™œ—˜——™—˜Œ—œ–›ž”˜š„’–™¡–ž˜–—•œ¢—™q›ž”“ƒ–™˜•˜š‡¡•¢œ˜š‘“™¢–“ž—™„™™Š“ –˜˜›–˜•”˜–žšžš™˜™®ˆƒ¦™Ÿš¦”ž˜™—–™™“––œ’‡¨£”š––Ÿ¢¨™š•š˜Œ™•œ–˜›šœžš­—•—’’˜—™–“’›š™•–¢š–”›¡—”•–šž«™•¡š˜™Ÿœ–š•—–˜••—¡š”“˜›—‘˜žŸ’—§™–˜”ž’š›”œ™˜›˜˜‘š™—”šš¤—›–—ž•”•”—š–™—œ”š™™–ž›¨–•šŸ–™”˜•—–’¨——–œ›•—“–œ˜˜“š ›—”Ÿ–˜•••••–”ž•–Ÿ–––‘“”’”›”•—•“™ š•šžš›”ž›—¥‘‘›˜•’———˜‘—™”‘›››—¡œ“œ—“ ˜–—™¥š––—šŸ–›œœŒ¢œ˜”œ“›Ÿœ››¨™™šœŽ–˜£™š˜˜›£œ–“„œ‘–›”•”›•œ››’˜–›–šš™”–’𔒛ޛ“”˜˜’— œ˜”ž•›–’”ž˜–Ž‹›”™”•œ—–‹•—•˜›¦›”˜™“”––““‘¬’–‘š–¤˜¦šƒ˜–›››‘˜˜˜•›˜š˜¡–˜šš¡—–«“™™§“——‡£š”†—™•”–•›“‘™š“˜š‘¦–¬›žŸ——‘“š–“•…“™˜™“‘–—”›š­– ˜•š—™—‘‹™™™”¢›¥š˜Š““ ª––——‘™’—•¡‚ ™‘𛕛–”™›”–—“¢œ›–£•“—š›ˆ–™˜£—–—–ž™›•˜šŸ–˜ž˜”ˆ—Ÿ£–—™™›——•—˜Ÿ•–™š›—¨”š˜™œ’’——Œ —˜–˜–œœ’–š˜š–œ™’››š™¡œš—œ”›s˜šœ–”˜š›¡—›œš˜€ ›—— “¨ƒ›™š™˜–œ–Ÿ›–©”–™–™™•”ˆ˜’™“š›ž¬—››”—˜”——š˜•—›––š”™–šš™“•‘˜›”—œ–—“˜ž—œ˜¬„š—™™¤—˜¢–˜ššœš’™˜——”š™™Ž˜––‰œ˜œŒ˜Ÿœ–—› ™š‰—–‘ª›š›š™––›”ŠŒ™Ÿ”šŽ«™‘™™ˆ““±—“”š™žš–šœ›œ™œ™ž’••›š“””—™™–——šš™•––˜˜—™˜˜—™›–™˜›—™š™”™—š™šš—–‘•˜•–™š–•˜•˜™•˜™–˜—™›™–™™˜—”—›—•™˜—˜™•“™›—™™š—”˜˜˜›—–”—“š™œ˜™ž”˜˜œ–š™˜–˜›š™”—›š•–™•——•˜–˜˜–™™–—š˜šš–—˜š”™“˜š˜™™˜™›˜šš™™—™™˜˜–›˜˜™•˜“˜˜š˜˜›“–šš›—š“™™’—–›˜šœ™˜—•œ˜—–˜›™ž”˜™œ———˜—–˜—™”•˜–˜•–›–˜›—‘——™—˜™˜—˜š˜›˜–š™—›š˜–—‘——™Ÿ™”š˜˜™›–—–™™’™˜š•™•š•“š—–™™˜™—Ž–—›œ•—›˜™™“™˜™™›™™˜ž˜™˜–——š˜˜™˜˜š–™˜Ÿ“™™™–˜š•‘˜š—šœ”š•š•”—–—•“›–•˜˜‘˜˜™˜Ÿ––•—”™—•—˜“–—˜™™˜˜–™œ–š–œ””š–—˜œ˜˜˜—–˜–˜——š˜”˜–™—˜˜˜—™––™•šš—˜˜“˜œ˜“’•—–™“–š™—˜—™”——˜™›—˜š›–œ›šœ™Ÿ———™™šž—š›“šŸ–—™–—™›–——–™—œ–•—˜““—š›˜›ž˜™–˜™–”—–ž—™™™›™™˜š˜š˜™š˜™–˜—™š˜‘•™˜œ—˜š———š‘—•˜——˜š™˜–œ—™˜“ž˜˜–˜’™˜˜˜œ™›˜š˜—˜–¥—”—˜—œ–›™˜™›˜œ˜ —˜™™™—˜™™–™——˜—£”œ—œš˜˜›™˜•˜š–™™›šš˜—˜˜––—–›–—š›š˜–˜œ––———˜—”—˜š›™—•—™˜™—š–˜•˜šœ—›——™š˜››–˜™™›š™—˜—•˜™˜—˜–“š…š—–š™–—˜——––›š’˜–š˜–š—–™œ˜˜œ”–˜–—––š—–˜—Ÿ™˜˜˜–™š”™–šž›—”˜š–˜š–™––—žš–˜—™š—›–˜˜™˜˜–š—›˜—™›™™“–“˜›—–›™››—–•—•‘™–™–—–›˜›™š“˜š——”š™š—˜—˜–“–”˜——››™™˜š”˜›šš ˜Ÿ–š˜–•™–˜˜˜–—”™˜”˜—˜”™—š—–••š–•›“–š™—˜™š˜š—™™–™™™—•—”š˜˜™—–˜•—–˜˜žœ›—œ“”œ–——˜š˜™–”™š•—˜™”›™ž˜˜—™˜—™—˜˜—–˜–˜—™•–˜—™˜–˜•––›˜—¡›™—š–™›˜œ˜—˜–œ–›™”•—š—–™——’•™–”˜š•—–—›™™——›•˜š—š˜“š˜•™›™œ˜›”˜—–™˜˜™˜›–—˜—–˜›™™˜šž›˜™—”š——™—ž™—™›š–”—œ•˜››™–—››—Ÿ“˜˜˜—š›“˜—˜—–—™šš˜š——˜›•™™—™˜™•œ˜˜š•™›–——š˜•”—Ÿœ–——˜——–™”˜™šš˜•”–œšœ–”™™˜˜—›˜™˜——˜žš——š™–——•—™˜›–š™™š™™—š™—— ”•š™œ—š———š”˜•–—š›”š˜™™˜š˜™˜˜™˜šš™˜œ”––™“Ž›—˜•›™˜–˜™˜ž—˜˜š™š˜™š˜—˜•’›š˜”–—“š’˜˜™—œ—™˜˜—’› –˜˜™Ÿ’—š–ž™œ˜˜œ™™—”™”œ––œ––¡™Ÿ™š”š˜˜˜—™—••˜—˜—˜’•˜˜œ–œœ—–œ™•œ™›—•™“›š–”—”••”–š™—•‘˜—˜™––˜˜™˜›™œ–•˜˜–™šš——›—˜š•š“•–•–”—––•—ž—š›š™š›˜™™——–˜—•œ—ššš–—˜™•“œ—š›–š–šŽ™˜–™—š”™›–™—••›—˜š—™š——“™™›™—”—˜˜–šš—™›™–‘–”–œ––•˜‘›˜š™™œ—œ™“——”‘—••—˜———•–š™˜’™—“”••–š”–™˜—’—–˜–—™“••š˜—”’•˜š—•–•–•—œ”—˜—™—™˜’˜™”–›’’•—˜—“ššœ›—–š—“˜—•—–˜šš˜™“›–›–š“—›š˜”›˜˜˜™›“™’–”’’–™—–›•›“–––™˜™š™™˜”˜›š”ž—–ž™˜—“›˜˜“›™¡–˜˜“–˜–™š™œ˜–š™”—•–œ˜š™š”˜Š”š›’“‘–œ•š—•‘œ—“–œ˜š—š›—˜™–™›˜˜š™›•™—–•–›–šš“™™—™™š–•—˜Ÿ—™›˜—–™™˜‘–™™šš™“š™•Ÿ˜˜•šš˜—š›•”––—ž˜–›’žš˜––™‘—˜”–š—˜™—™–—–—••—–˜—š—”“•–™—š˜——–œ››’›š•—–˜—œ™š‘—š˜‘———œŽ—˜˜—š›—™—™˜——˜–™šœ˜š˜ššš›”š–™™˜ž—™˜’›˜—˜™•š˜™™—šœš•ž™šš˜“•—›ššœ›œ—˜˜š™””Š—–šœš—šš›š˜—˜˜›–›’™™™•—‘š™œ˜˜”›š——”•šš˜›š™˜—“——–—ž˜•˜“”››˜šœ›››š–™˜————›•˜‘››”˜™™–˜˜ ˜™š———™–“™š˜™’™——œ•–—–œ—™›–“˜•™™›•™–—˜™˜–‘—––™–™™™˜–•‘—š˜™–˜˜–˜š‘˜™šš•–˜œ—š•••˜—™™›œ˜š—–—–”••›™™š—–š™˜™˜“™—™—–˜›•›šœ–Ÿ——•›˜—šš˜˜—š˜—˜™—•—›šš›–’˜–’˜ž–™˜˜˜œ˜“™˜™•—™—™›—˜˜˜™—š•˜˜–”—™”——˜–™–˜š˜–™œ˜š“—•š”™—š—œ–•š™”›—˜—“š›™–˜š—•šœ˜˜˜—™—˜‘™š››˜˜—›˜˜—––›—•—˜™˜˜——™¡–›˜˜››˜˜š—˜—™—•˜–›•›š˜˜œœœŸ”œ˜˜™–š–˜›–œš—”—–”–’—™š——œ™—™œ™—ž—”ž•–•—™•–•šš——™˜š–—˜œ˜š˜–——•›™–›™˜“˜–•–˜›–“–™˜–˜›—˜›–—’––•š˜˜–™˜•–˜œ—œ—•š——š˜’™—–˜›œœ”˜™™—š——˜˜˜›™™˜’œ—’™–––š—–š“–š’—˜˜––—š’š•— ™˜™•™ž™™˜–—™˜™™˜—’˜˜———™•—š™–˜—˜œ”˜šš˜œš“™œ›——Š˜”›—š™˜“–š•—˜™—–™“•–—˜•“›™™šœ™˜™˜™™›•——˜“•š—™˜›—–˜—•—›–™™š˜“˜™˜”˜—••–œ———“–˜œ•™˜“šš™œ–˜—œ•™œ™˜›˜›˜™š•Ÿœ–™™˜™•›—–Ž˜—•™—›—˜–›—š™˜•——•••™¢™¥—‘–˜–›•’›˜”™–š“™—™›™™˜›™•™˜˜œ—˜”ž›•”–˜”—“†œ™“š™—˜”˜——ššš–›”™™˜š™›—“–—•——˜˜™œ˜šš–ž—•”˜———˜™•™—–——•—˜——™—›˜™•—™–’›š˜™ž˜–•˜˜—˜—“—›••™™œš–•–—‘“œš™——’—˜—š’–™—˜——˜™—“š—–™š—™œ˜œ˜š˜˜˜š›•–™•›–š›—š˜•˜˜—˜¡š–•˜›˜—”œ˜š˜—•š™ššš—˜™šž—–—”—•™˜“𙕖™˜˜—š——š•™—š›˜˜›™œ—˜•—–™š—š–˜——–™”œ™š•–™›˜˜”—•˜š—™–™‘™ž˜š”“–˜ž”˜•œš™›˜’™™š–œ™———š•––™™˜œ™››˜š•–™—™ –˜™™™–™–š™š š–˜”˜•š–š•™˜•—š›œ—•™œš™˜–“˜–•š–˜˜™˜—˜˜š”–™—š™–‘™–šœ——–›—š˜š™˜–™™™™”œ–›—˜˜•—˜—œ–˜——–˜—”™—˜šš˜™˜—˜•—•™™š–œ–˜•˜—˜—————”–˜–œ˜—“˜—™’•—›“›š–›˜•›š–˜™›˜•š——‘—˜œ˜—™———™–˜˜˜œ˜˜—›–Ÿ˜™˜•˜—–œš“›–›š™˜–˜™–›––š˜˜˜™£”œ›–£”˜•˜•š••š™™šš‘—˜—•›˜š›˜— ™“˜˜šž˜—˜žšš––•˜—™–—š•˜™–˜—–——™•——šœ™•˜””š•šŸ———˜››™•˜——™™–™–™œ—–˜˜››”™˜—–š——–•›˜™™™—›œ™š››¡—˜—šš™”š–š”˜•–›˜›—›——›–™š“—™—›—˜œ–š™”˜—›™˜š™•”–™š˜•ž–œ™–•˜“•˜š—››–™˜—•––š””š–™˜—”’”™”“š››–—˜š ™™—™—™–˜•—™–™™•–“œ”—˜™‘——˜›–˜˜œš –—–œ–—œœ˜“›“•—•œš—˜”˜˜›–˜›—œ™™š—Ÿ—š˜—›”——œ˜–—›š———‘›™˜›™š—˜š™——–˜•“——›™—”–Ÿ™™˜˜—–˜–—–”˜››•š™”˜š˜—˜ž——™˜™•’—˜—–™–•˜”˜•••œ™˜–™›–“”—ž”›™™”š—™™–˜“–’––™™˜˜”–˜Ÿ——•šš•––—™™›˜œ™˜’—˜˜Ÿžœ›˜•˜–˜–—˜—˜š”™™™—–—–™™˜–”𙕓———•𔕔™™š•–“—–›—–˜˜›—œœš˜•”—“˜•““•’””ž—˜•—˜—–›˜˜˜‘—˜——š–•˜–œ™œ–—“™”–”™– –™—š˜™œ•š™–™“š›”™™šš˜š—––š———š—˜–˜“˜˜˜˜˜˜›š™—•˜–”˜——š•š˜œ›šž›–¢—š›™™”——˜————š˜™’—•š˜š˜™“š™˜š–—œ—–•š•››—š˜š•˜˜˜–˜™—˜˜——š”™•‘™•™–™›š’˜™Ÿš˜•››”——™›—›˜•™™™—”š˜—›™›™™—œ›š—–š—™—˜˜“š—™˜˜››’›•™•š“•–‘ž™——–šš˜››—“›•™™š™œž˜˜•—–•–™™™—˜——•”––•™–š—™—š™—™™˜—”—™–˜™œšš˜›š—˜•••™™˜›•˜˜˜”™—•˜œš™—›˜™œ˜——šš™—™™˜’—˜—•—š™ž¦——š˜˜–—›˜—–—–š™˜š—š™š™˜ š™–™™—™˜™š˜—˜š˜—™•’˜˜›š˜˜“™—›˜ªš–˜•–•˜—–˜–—š—”•˜˜—–——’™˜˜™š›––˜›—š˜—˜”™˜——›™›œ•˜—™š–š–˜˜œ—––š–™œ˜˜™™š˜—››–—š—š–š”™™™˜˜—š“–š™œ˜“›•–˜—˜™š•”™“™™–››™™–•––™œ˜›˜˜——–˜™–•š˜“š—•˜š›••›™˜—•˜œ—˜™›™–—š›™˜˜™—™š–›“—™”–’—™•—’˜—˜š˜’˜™——˜˜˜›š›˜˜œ˜˜—”™™™™˜˜”—˜—š˜›™–˜š›˜”™•——–™˜™™—™›–›œ™—š›˜šœ›™™˜˜˜˜™–˜™˜™™–—™–˜—“–›™œ˜”œ—š™—”—˜™™———™š˜’—•›˜›™—œš˜š——˜——š›–•——”–—˜˜˜™——–™ššš™––“™—––“˜—šš•–™™—™˜•”˜–™š”˜˜˜—˜š”™•š———˜š–˜˜–™™—”–š˜—˜–•—–˜›——™——˜˜ ˜œ—œ™š˜˜—˜”–“˜˜–™—˜—™™›™™š˜•™––—™˜•—™–•—™›——”˜—–›š—›˜˜˜š™‘˜šœ—–™š™™š–Ÿ–›—š™™™——”•šš™˜—–——›—Ÿ˜˜™š•——™™•—šš–˜šž›—•˜™›˜˜—•”˜š˜˜–’š›–˜š“––œ—–™œ•™˜œ•–™“˜›•›–—š•˜––™˜™˜—˜–“š˜š˜›•™”˜š—–—––œ“•š–˜›•—™—™œ˜–˜—•™•šš›“•˜šš—˜˜—š˜—–™–—š—–š˜˜˜—š˜Ÿ™”›—™˜™—“›˜™š•›™›š˜”Žœ”–•˜•›–˜”——–š—˜™—˜™˜™™–’•˜›—’Ÿ˜—š˜—™š–›˜–——–”›˜˜Ÿ’—›•˜•–™™—™œœ˜“˜˜˜—•™š–š˜›™˜˜˜™“˜—™™œ˜—“—–˜™—›——”šš›š˜š™™”™Ÿœœ›š–™—›š›—š˜™™— –›‹™•‘—–˜›—™ž–—˜–’š˜™š›˜š—˜—˜’˜—˜š—š››™™ž˜•–œ–™—–›–™Ÿ˜™œ™—œ••˜—›˜—–™™œ›¤–›˜—–“”˜—˜™”œ˜š”–™Ÿ™˜”—•𙕓—™ž™•˜˜™“–™™—•—‘•™—–•Ÿ˜™š—›˜˜›š”•šš™˜™‘“——“—–™˜”›”™™˜—›˜•˜ž˜–ž—š”™—˜˜˜–•–›Ÿ’˜—šš•™˜ ˜˜˜˜”––›–›–™š—™—™˜˜š“—™ŸŸ›˜—‘”’ž——˜š–™š“™šœ“™–™™—œš›—š˜™——œ—›”˜—œ“——˜š–• ˜•—’—˜ ‘”—™™“—›—™ž•˜¢˜œš—›“•—”•—š™––•›’™–›”˜—›™”˜˜œ•˜š”›—•—œ¤–„•™–š—•™•˜’™š™•Ÿœ”˜—™™™—™›š ›”ššš–•™”›•œ—™–š‘˜™–𙩒›˜˜Šœ•Ÿ˜š•›’—œ˜•œ™˜›•—˜›–—•—”ž“›•— ••™š—”šš˜ž—œ™˜”‘“”¡–š—™•˜š•—˜š—˜šš‘›”—šš˜”“¤—˜••—˜‘šœšžš›—›™šš™›™—”•™š™–œ•›“™™¥žš•š™”˜˜™••š˜–š—™™š™˜—”••˜’––—š——š–š–—›™™’š˜š‘›–ž—›—•šœ”‘œ˜— —˜šžš›œ™šœ–˜–••—𔓙——”—œ˜œ–›™š™––—––œ›˜›Ž˜•”š›šš•—“¡˜˜—˜—–›œ™ ‘˜–“˜–š›•ž˜›—œ•—”—œ•¡“›™“˜™ž˜•—Ÿ™˜š—˜šžšš™”–˜š’˜˜˜›œ”’˜˜–˜•ž–˜˜——™—›•œš˜›•”ž™š›œ’’𙕓™™š•œ™–’—˜–™–œ—••™–•˜’—œ˜››œ”—š•˜™—š¢–‘šœ›˜œ“˜˜• —™˜œ™˜––¢š™˜”––—˜›”–“–›”–•–’–›˜–™’“˜˜œ›“™—–•——šššš˜š˜“›¤š———–›“š¡˜“¡Ÿ‘˜¡™œ™•”š™ššœ™š›’Ÿ˜™˜›•˜•š›™™˜””šš”›˜•™–˜–›˜—˜•™œ—–˜˜˜™“œ–—˜—š™˜˜˜–˜Ÿ•—˜™œ™–™–•—•š“™š™˜—˜—œ˜™˜™™—™—›–š™™™–—•˜–œ—›ž˜˜š•——š™˜˜œ–˜š˜—™–™™—”—š™—•—“——•˜™™–™•’˜–“˜™—•—–š—–—œ–˜——˜™”œ—˜š•˜™—˜˜˜•“™˜–œ™”šš˜˜—–˜—–˜–™—“•Ÿ˜˜•š˜˜”—š—•˜•˜˜™˜–›ž”—˜™–››˜˜›˜˜™˜™–™–œ˜—•™˜““–˜›™—Ž˜—˜—™š˜šš–•–—•—š“š˜š™–—˜”˜š––››™™š™””’™˜™•š™•˜š™—˜˜—›˜˜—˜“”—”™›—š›•˜™–”˜Ÿ•œš˜—“š˜˜š˜˜–˜›š–œš——™—–—•–˜˜˜—˜šš“™›–Ÿš™•—˜•˜š–™•›—–˜šš–™›šš—™˜—™œ—™–˜™™—”š™–”˜••”•˜—˜•™˜•Š—–—˜›‘˜˜–™™™”––˜™–›™˜™—›™’–”š—š˜™“™›™˜–˜˜˜š–˜š—–™•š•›•™˜˜–š•š˜•™–“›”šœ—˜›š™™––˜‘››•–˜˜—šš’–˜—œ›—˜—–™—››š—š™™š˜•˜–˜™™™™™š˜›™—™œ™—˜—˜”˜–“š––—–›——™›™“™•”š”–“—•–”™—˜™˜–›˜•™™˜›–”œ–——˜–”–——•™™–š••“•™ ›˜–—˜˜–™š˜™™——˜™••˜›š—•›˜—•—”˜š—˜˜•—–›˜—“–”™–š™™–•—™™—˜™——˜˜˜˜’š›’—š™˜™‘•›™•—›™›™——šš˜”›—š–’˜˜™˜˜š˜˜˜•™——™–™Ÿ˜”™—›’™˜˜™˜›š––™˜•œš™›™—˜—“–š›š–—š˜—œš™”šš—˜›˜—™—–™œœŸ˜˜–“•˜š˜•—–——“˜––™”•“™———˜œ”•—›š ——˜——–”™˜–™”˜˜™–˜˜™š“’š›˜˜—™”•“•””—™™—›––—œ›˜˜›˜™—–—˜—–š•™•˜™›˜˜–œ˜™˜˜š˜›—™˜˜–•– —“”›˜”—’“™–™››š˜Ÿ™š–—–˜”˜™–”ž›—˜˜—‘˜–˜–•œ›˜——˜˜–——›˜•˜—›žš›˜š—–™›˜•›–•˜—˜“–˜››•—˜šš—œ›™š—•˜š–˜˜›ž–™™™¢™”™—™ ™‘™š˜™—™––˜š•™™˜š™—šš˜˜•–••—•œ™“™™˜–š–›™™—•——™–›™™šœ—˜˜˜–œ•———˜²•˜—œ˜•˜™•—™—™—–—š›Ÿ ™™šœ˜œ–™˜™ž––›™™œ§š”›™˜˜˜–˜——™–š˜šÂš“––•—š”™˜—™š™™lžš˜™————–š™–”š—™œ™›™™’š™œ–˜šš˜•™™˜˜œ›‘š™™˜˜˜š—™œ››”šž•–›š™•–™šš—š–˜”—’–™››˜——œ•—˜—šš—”š—™šŒ™••›—›œ›˜˜›”˜šžœ˜–™˜˜œ›—š••–œœ˜–—›——š˜š›™•–œ——˜››–š™–œ–š˜™––šš˜•˜š•ž˜—˜’—–•‘›˜“œ——š˜œ˜—–š–—™Œ˜™˜š’—˜˜”›˜™—”—•—–—•š–š–˜“˜˜—˜˜–“™œ•™—™˜˜›•™–ž˜˜˜Œ˜•™ž™˜—š’˜™˜˜œ›•˜šœ———™–š˜—•™•››—’—œ™™—˜š›’—˜”—™™˜™˜œ•™˜˜™š—œ”™œ˜›Ÿš™—•–›™ššš–”˜–Ÿ’———ž™››“™—–—˜”•—™š——™š—”Ÿ˜—˜–˜–™•–˜˜”Ÿ˜™˜•”•šš”™›—š•“˜–™›“™—˜”™•–•™œž™—•‘—š™š—”˜™šœ›˜–œ‘™šœ—›–›–•——”—˜–’—’™™‘›‘™™›¡––Ÿ—‘›˜–“’ž˜‘šœ™œ—•’”—˜Ÿ——˜—˜•–œ“–™—˜~™—œ—™–—˜š••˜™š—•”˜œ–™”™™•˜˜——’•›———™˜—›—™˜š—’—››“————˜—›–”–š˜–œ˜š™˜˜“™˜™–•™ž™™––—™™˜˜—™–—ž–š™——™—™—–ž˜•›š˜›——šŸ—šž“’—šŒš—›šš™•—›–—™˜œ›Ÿ–𛓔˜˜™—˜š—“•–™•—˜––šš™˜™–˜™—œ˜•™–˜–—™˜“šš˜šš˜•˜˜•—™“š™œšš–™–›ž–›•—•œ™–˜•š—˜š˜™’‹•™”˜š˜”‘—˜š•–™”–›˜š”•—”›“š˜˜œ¡–”›”›™˜••’š˜—›™—˜Œ•—˜•™˜•š—•——™™”š••—˜•“˜™˜›————š˜–š—‘—–š›™š™™‘’—˜˜˜˜”˜™™‘—š–•˜–—‹™˜™™™™ž™•šŸš’™•š•›’š™˜ž—–›•˜•›•š™–“”šš›”–žšœ›“š™š™™˜š—’™š”˜—“–™—™›—›—”–™š™š–”œ˜™”˜”˜™™Œ™œ˜–—›š™—•˜”™™˜™˜—•˜——š•˜™•›˜•™™˜••––•š—––\•—™˜š•š—š•“—’˜™™˜•—ž›–—“›˜˜——œš’—š™—¢•–˜—š—–”’š—•–˜—™X˜—•–•˜˜“–˜™–—˜—W•”˜—”™——–˜š™••™™˜™—™™œ–œ˜–š—™™˜—™›š˜™—•˜›—•›——–•š”™˜˜•–›™—”—™——–œ™˜š–—–™ž˜–˜™š™˜—•—™———œ™•—“š©›–”–”•’˜—˜•›˜˜“š™—˜š—————˜—˜—š˜˜™˜—˜—š˜–˜•›››˜•••˜ššž˜™Ÿšž—›™–™š›œ™–š™˜˜•–—™—™™”šœ–ž–˜™¢œ›”•œ”™˜–’˜˜š˜™˜™•ž™›š›’šš™›–™š–“—˜•–›“˜›•›™˜ž—œ˜š›™šª™™›‘˜–š””–˜›—š™”œ™™˜™—•ž˜›™›—–—–˜›–——–˜™——–”™–“˜•˜œ“™™–”™›œ•˜•˜˜œ™˜˜˜•™›˜˜—˜š—™š•—š—™™œžš™˜˜—™••————˜˜˜™›˜”•––š™™˜•–—™˜˜š—˜”𗗙𖙗””—–™™™•™™š™˜˜›˜—’™˜š——™—œ›™›˜–š——˜šœ˜š•™™—š™—˜˜˜˜˜—š™˜–™š™š—•˜›———š—•—˜š–ž–˜–—™˜—–™˜™——™˜——˜š—›™—•˜••˜‘—™šš—™˜–˜—–˜˜—™˜¥™˜•–™˜˜•—”•˜˜™œ•˜˜š™™˜˜š—•——˜˜•˜˜š˜—“™š˜™š™˜˜™™˜™˜——›š™›˜™˜˜•˜˜™˜——™š––˜––˜š˜–—•ššš˜”˜œ”™—™˜•—š˜’š›–˜š“•”˜™˜›£š—˜œššš™——•›–›™–—™˜™˜–˜˜š—•–”—˜™™˜———™”™’•———–”—š––—š•™”——›— š™š”˜˜—˜—–š›——™•˜Ÿ›™•š–™—›˜”œ—Ÿ•”•”—Ž˜—•–—•™”–”š—˜š›™˜˜šŸ™›š™™—™—–›˜–˜˜›’ ˜›œ—˜˜—•š——œ›—˜ž™–™˜“—˜—•˜–›˜“—˜™–›™“—˜™š™˜—œ›”šŸ˜˜š””™™™•˜˜˜–———““š“˜š—˜—š˜˜œ”•œ˜–™›”—›—˜“™–œ•œ—–˜—–™•”˜—™›š›—–›–”˜›œ•’”™——–—˜š˜”—¢˜•˜™–•š•š™™˜—˜˜—™•˜˜—–™™˜˜›–œ—™—š™—›š™›˜™˜š–¡™˜™š—–˜˜›˜™”š›œ™™š•™˜™–—ž™•›˜™˜›Ž•˜˜™–˜š™™›™–™›š•˜š˜˜˜™š—š•–”™”———›“–”——”–˜˜™›—™—›š˜œ—™–¡¢—›š˜š–•—–˜˜˜˜™˜™›š–›šœ—™š™™˜™—™˜™—™š——˜š—œš›—–˜˜——˜•˜™›™—™–™—š—™š˜“œšœ˜›•”˜ šžš™›œ˜—™œš›š—”™œ˜—˜–›š™™›Ÿ›œ•ššš›Ÿ™›ššš—š—–š˜œ—™“˜žš–”™•••˜—™˜ žš›™˜—•š—›˜•—™›™–š™˜”••š—˜š™š–›”˜—š§––™š•š˜›š•›–˜œš™——˜Ž–™˜™›˜˜”–’•““˜˜™˜˜˜œš•“˜š”–›–›—˜˜••——˜™›—›’˜™–™™™™—™›˜š™›š—™˜™—–™”•—˜˜™˜”—›•—•š™–›™™–›–”˜™—˜–›–”š‘—“š™———–™–—˜˜”˜œœž™—™š•š—™––—š˜˜™™—™—™™”š™–Ÿ“—œ–—˜šš”—˜–——š™—˜›œ—˜›˜œ™›—˜˜™˜œ•——••š˜–››š–—™—˜šœ˜˜˜•›˜–•˜——™”’™””—›™˜–œ™—Ÿ˜˜—˜––š˜“–œ›œ˜—–˜”Ÿš–—–œš–˜•˜——š™š›™˜•™››˜™“–›•™—˜••š—™›™—Ÿ“—œš˜”™˜™™–——–˜˜žš’–“”–œ—“•š•™––™—•”˜—Ÿ™˜”–˜›™™™—™–š——›—™–•›˜—š˜™•š™–›–›™š›œ—’–—›“——–ž˜’–˜•œ™š“—”—š—˜œ˜˜˜š˜™˜˜—œ”–Ÿ™™—•˜˜˜—™—™—–šš–˜š›˜—›•˜™•—›š›Ÿ˜—˜–—›–—“š–—–™œ——™™š–š˜—’šŽš—™”–’›—™š˜——Ÿš—™•œ˜™›–™š–•˜•™—›–ž“˜”˜•™™™”•š•˜”˜•ž–•—™˜˜™›œš—˜™˜œž••–˜˜˜œ—˜ž˜˜Ž”–“˜–Ÿ™œ–š˜š———’š›–’•š˜œ—Œœ•œ—””š˜”–˜˜š–š”˜––™œš––›˜—“—š—˜—–’”š–œš—”¥–˜š—žš‘˜–•š–•‘™——–•œ–“—š–———›——›œ™™•”˜š˜–š™˜—š—•˜˜˜™š™”™”™“”š—–—•™Ÿš“™””’—™—š›—˜“’—–™–š–˜š™—–—œ•”™——–š˜™™™•™—š—™›˜™š“™—™˜•˜˜–“—˜™•™————›š™˜™˜˜––˜˜—˜™™—š˜˜•˜˜–————š——˜š™™™™—•˜œš™š”–œ–—œ—š–˜”™•š—˜™š™˜š˜œ–”š’™š—–˜™›–˜™™™—™”˜—–™™“›—˜˜š–—™•™š–˜™—œ’”ššš–‘›—™–˜ ˜š™˜œ–˜˜—›™œ›™•——™˜œ˜™–—š›š™šœ˜—”—š™”—˜™™˜™——•–š›—–™š—™š–œ–›•™š•œ›˜™˜šš˜˜š——Ÿ——š™˜’”š—›———›——™—™œš•–™˜–˜™–›šœ“—™™™œ™—”——™’™™™—›’™“˜™—™•—š›—œ••œ˜”š˜˜—œ”“š•¢˜˜™˜——–š——‘˜˜›—˜•›˜œ˜—™˜š•–Ÿ•™š”•™•œ”•™—•›™š˜—™˜˜–™”™˜˜–›š˜–˜¡››—’–˜—”œ™˜š•˜—˜™™˜—˜ž˜šœ’“˜–•—˜™“—‘›˜”™”•—š”™—Žš—š•šœ•—™”™›˜™”š•—–”›šš—œ’™š™——•˜˜™—˜š–›——˜œ™–™—››•™™”œ˜š™—™˜š™–™——›˜–•—˜‘™›˜˜˜š–•—˜›™˜”œ˜š™‘™™˜—•˜˜—™™–™š•™œœ•—™™–™’•˜—šœ–™—šš–˜›•˜”›˜“˜˜™™™™›–™”ž™–™˜œ˜—˜™˜—––˜š™–šž•—‘–™•›—‘™™“™˜˜™˜›—•˜™——˜›—œ“—œ—˜ž˜˜—œ˜š•›—•™™šš—™™š”™’–š——––™–—›—œ˜™™“––Ÿ™–˜˜šœš˜Ÿœ•ž—˜›œ–˜”—•˜˜“’šš›—›˜™•—˜–•—™™›˜˜š——˜˜›™–™–™™˜“—™™•š˜š˜œ–™–š˜–™˜š›œ™–””˜™š›•–˜™™›˜”–œ“™›™—š›—˜–™“›—“˜—‘—˜”ž›”™˜—œ–˜—•—žš—˜˜—“™–™™™˜™˜›˜š™” ™–•˜™”œ•—’—”–”–—• ™¡›˜˜–––›š˜™–”š˜’–—™”•™˜•š—œ–™˜–”–›—”œŸ™˜—–˜™™—”˜™—˜š™™œ˜™˜˜š˜™˜’—’—’œ›—–›˜š™––˜˜˜—™˜˜˜”™™š˜š–—œ–œ–—‘™’™š™”œš——–™”—”˜™–•™—›–™š˜š–™™˜•˜™—š–—™’—•™—––™š˜™“˜—–™œ™ž–š˜™›™ššœ˜™™—™“”— –™—–˜šš˜–š•—™š™˜–’˜–•›—˜˜––š›œ›œš—•š›šžš––™›˜š——–„•™›šš—™šššœ“™˜™™˜–™–š•™—˜›—–š˜˜¥–œ—•š—›—–š—›š˜™œš—š•–š˜›–™›™™˜˜™™œš™œ–—š“šœ”•”™’——––™š—ž™•™™˜™˜˜•šš˜šš›š›™•––˜—™™——™™¡ž˜™ž””“š–™–—˜œšš™•˜š–—–š™˜—–—”—–˜›˜––˜•™›“—––’œ–œ™˜—˜’——›˜˜—𙛙𖙗›˜˜”™˜š˜–—–œ“›››—“™—–˜“–”™™˜™–œ›•™™—˜–˜™™™–™˜œ’˜—•™š˜–˜”š”Ÿš˜š™—˜š ›••™›–•™•—š™”™™ž˜›––’š——˜•—™•‘—œ–•š“™˜—™˜™——–ž™—˜—š˜›™’˜š——›™–™—™‘—šš˜›Ÿš˜›˜–›˜–™–œ—”—ž™˜˜—•ž™—™˜™˜˜˜–—™šš˜˜——™™™–”ž—›™‘™—š›™’™–•˜™”˜——•™œ™˜™–™”˜™˜™——›š›š•š•˜˜—–›˜™—š˜™š—•–™™—š–œ™˜˜š—˜›˜˜—•˜›—˜•š–™™—”•˜™š—˜——¢š—™’˜˜˜––™–˜š›˜˜—•›™š–˜š™™˜˜™˜™˜›˜˜™—–˜–™–™™–›œ™—š™˜›™‹—šœ˜™—™™™—š˜˜™“š—›–˜™—™š–˜–™™–——››–›˜š—˜˜•™™˜˜šœ˜˜™˜˜™›–—™™˜š••—˜—™™š–˜——šœ˜˜š•˜™›˜–™“—™˜˜˜™˜˜™œ™›—™˜˜˜—™—––“š„–™šš˜›——˜—˜˜œ—›˜••–—˜–˜–˜™™––š–—˜”—™–œ˜™™•˜š—™–—™˜š—™—œšš™–˜š˜š™”˜—™š˜“š—˜—š–˜™–––œž”˜™˜›–—˜“˜–––™˜™–›–•˜›˜™˜”œš“—•˜————•’——••—˜›–”•›•œšœ–™š™—™™š˜‘˜˜•š™›žš•———š••œ——”˜—˜œ—œ–––‘š”’•˜›™›–˜›˜˜––˜—˜—Ž™›•š’š˜˜“šœš•›š›™—›•—•—”’˜—––•š—š˜—™•”›–“˜›”–‘–•™˜š¡–˜˜™—˜”›š™œ˜—“•–˜›˜—•—™–”š›˜——•œ™’•—˜š—˜™˜—˜˜˜˜™˜˜—˜™˜˜™˜˜—˜˜˜˜˜˜˜˜˜——˜˜—˜—˜˜—™—–——™™˜™–——˜˜˜™™—˜——™™—–˜•—–˜˜™˜š—™˜˜—˜—˜˜˜˜˜˜˜˜˜˜˜˜—˜™™™™˜“˜˜——˜™™š™™—˜˜˜˜š–—˜™™˜—™™—™™—™˜˜™˜˜—˜—˜™—˜–˜—˜™™˜™——˜˜˜˜—™˜˜˜˜™˜™—˜˜˜˜—˜˜›—˜˜˜˜–˜˜——˜——™˜™–˜˜˜™™˜˜—˜——˜™—˜˜˜•™”˜—˜™˜˜™š˜˜——™™–—˜™—˜˜˜™˜˜—————˜—˜——˜˜–™˜••——–š–˜“›œ›™˜–œ•”—˜˜–˜™–¬˜™šš•–’™œ˜™˜˜“—˜—ž’™š–‘•™›”—•–š•˜™™’Žœšš™–‘š˜˜ ”œ˜›šš–™™——”•‹™–•™”˜•š™Ÿ—••™™›Ÿ–“–•™“˜›™——˜˜—•“”¥˜–——˜˜—š–˜š“–›˜™˜•›–——šœœ•™“š›——™Ÿ—˜š›—˜—–™••”’˜™–•™––šššš—œ˜—˜™š–—˜—Ÿ•˜™——“——“š”•šœ—˜œ—¡—˜™™¡›•˜™™˜—™–žœ——˜™–˜•˜˜›™™–š——ššš––“–˜œ”™•™—–”‘œ˜œ™˜™”ˆ—š—š™˜••œ™—š—”•™›–˜••——œš˜›–•’œ–——˜—›’š˜š™™š˜š™™˜—šŸš—˜™——˜™”——˜œš™•”—˜›˜œ–•œ•““ šœ”˜‘™™•”•™—›——š•——–˜›–‘˜š•““™–›”šž—˜™˜š›šœ˜™™–š’š—œ—––—˜˜–š”š”“•—”—™œ—š›š—š—”™˜–˜˜œ”™— —•“—›™—“ž›–— ›•™ž¥™‘š•›”—”“˜–—–•—š–˜—˜“™–’š”˜–—š™’™–š–•“—š™š˜–›–—–˜”––•–›•–ž“š—˜˜Ÿ–˜›“™š™–™–š—š–™˜˜›–˜š˜˜“˜›ššš—˜–’™™˜ž™›š——˜–š›œ›–—˜›——™™–”™™——˜›™œ˜–™˜––•š›—™—•›œ—˜–—˜——ž–’˜œ™š›—–’˜š™—˜™˜š—˜˜–˜™›™––•—›˜™•›š—˜˜—–™˜™œ˜™š—š™›š›–•™–•—˜˜š—•š˜šœ™–šž™˜—›–˜—’—š™—œš›™šž˜›˜”–›•™•–˜–›˜—™š˜—š›—™— ›™›˜—˜•‘˜œ•›œ–”›•˜—–›–˜˜™™“—™›š—š”›š›–™™•–——˜šœš™™—™˜˜—–˜—ž›–”–™œ™›˜––—˜š™”˜™’œ™š˜˜šœ™š•š˜™š—˜ž™™š›˜–œ˜”š™—˜™™˜š•š—–šœ˜—œ—™˜•”–š˜™™–žš“•˜–šœš—š•š”˜—˜—™—š›™‘™˜›š–ž–™š”–’Ÿ”˜™”™˜›™–™›™š›™›œ”›—•—š˜š™˜™–”›˜šœ•š—”™–—•–™”•˜™˜™˜˜™›˜•˜—˜š›—™–“˜˜˜š››™š™–˜›˜—–”™™—›™—–˜›™™˜—”™“™š““˜–›–˜›–š–˜™—œ›–—››™š—™™š•š˜•˜œ—š“œœ•šš–˜šœš—£•“š˜›™™™–˜˜—””›—“”›™—š’–›˜—”˜–—™›–’œ—š˜˜œ›˜Ÿ™—™››™–Ÿ˜•–œ—œ™•™•—•™••š‘—˜•—™˜˜ž˜–—–š˜—™š•’˜“˜š™›—–œ’œ——–—–™˜—𔕛™™——£›—š”™•—™•”–˜—”š™–‘›˜›™’–—˜š™ššš™›˜˜ž–™™–––——‘¤›˜–•”•“––”˜š˜™™›“˜™˜”™—‘œš–˜œšš—›˜˜˜•›™šš•ž˜˜Š–˜™—‘˜˜›•›–›™œ˜–—šœ™˜—–˜š››”™š˜œ•˜™–•™–™˜˜š ”˜——Ÿ—š—–˜™—–š™›–˜š—˜›™Ÿ™œ›™œ–™–“•—›š™™˜›“˜’“™œ—œ˜™–”“™™–˜˜–™–›˜—˜›˜š—š›˜˜˜˜˜”˜”ž™˜™š–š—–•›š›™–›š™™™˜œ™–› œœ‘™–›™••››™‘™œ™˜”•žšœš˜—™——“›”™—›—›™˜ ™›—™™™——™•—™˜—˜—ššš™•––˜‘‘˜–—–™™™˜š“•™•š™––•˜™˜š›”“–•›•šš™š•Ž›—˜–——˜™—’›™—™›™˜˜——•“—›š––—š›š˜˜™™–—œ™š˜›š““¤™™˜–››››˜™••™•—–œœ•›™˜š–•˜——˜™’Ÿ ™“—š’˜’˜œ”š–™“—œž›––ž˜“—”˜œ”š˜™œ–œ™˜›˜˜ž ™•˜——˜‘¡—˜˜——”›˜†˜•–™œšš•ž˜˜˜šš“™™š‘ž•š™™Ÿ™–—˜”•˜•–›—˜–™–—›–™†™–˜™™œ’¢›z—š›žš”–˜˜”š•ŸŽ›˜Š™—ššœ˜—˜š–™¤———–”•˜“˜žž˜›—™˜–™–™•˜•œ•™˜˜–˜œ˜“˜˜›–—˜–ž™˜–—ž™—˜–˜••”š˜——™˜˜œ”˜••š—”˜˜š™—”™–—›–˜™˜—•—••š–›˜šš——”˜˜”’—•š™™ —˜–™˜œ˜œ™™š–”•—™˜—™˜˜™œ˜š˜šš—˜™˜˜—˜˜˜™š—š•––“’——™––˜–ššš˜™——š™›–›™œ—–—•˜–š——š™™—˜˜’˜™———–›˜–œœ™˜ž—˜™–•˜™œ”œ˜šš•˜•˜™š——™—˜””œ—š™—˜š–›™˜˜•–•™˜˜˜Ÿ–˜”š››š–—˜˜–™œ––“—›Ÿ——••™—˜˜’™š˜–™——š‘š—˜™š˜˜˜š—•“•›”›˜—˜›™—š˜—™“š™™™›•—˜–˜˜˜˜—–••‘š–˜™•–›˜–•›—–’››–™——•˜™š‘™œ—™—™šš›˜š––œ”ššš˜š™˜š™˜˜—˜”’˜˜œœ››˜––˜œ––™š•——™–—˜˜š—š™š•š™•š—™š˜•˜˜”˜š”œ”ž–“——ž™š™š™—™™•™š—™™•–•–˜’™–š•—˜–›—™š—––™•œ›žœžš——¡˜™–”–”•œš˜šš˜˜˜–˜˜œœ–––– •—”™•˜—œ—•–šœ˜›˜——™–—˜——š™”˜–˜––˜–—”›˜˜˜—–š‘š–™™š›™—”š–—š—šš™˜–œœ•—›š—™™™—™––˜”—˜™˜˜”›”˜™š”—š’šœ—›–”™š™˜—™™–•š™–——–—™œ˜˜˜˜—–™–š——›˜—˜—•™–––˜–—˜™›–˜˜•–˜—š—–›—–™—™—›—š—“ž™˜››–˜•™™š“˜—”™–——™˜™—˜–š–•™›š”™—•𙓛•˜–›˜Ÿ™š–—š—™—”—™™šž—•š›—™š––˜˜•—›š˜›™––˜–š–—–™˜ ™–•›˜˜™˜––—›˜œ—š–š–“š–••™œ™˜—œ—™œ–˜–™˜•–š—•––›–š—˜–—˜™™™———š˜—–™¡œ˜™–™˜™™—•‘™”˜—œžš˜–™—•—–˜—˜–—–””—˜—–™›™˜Ÿ›š•™•šž˜š˜—š—™–œ˜™›•—˜¡›—˜™˜š–˜˜—œ›—–™—˜˜›œš”™œšš———”™š”˜“—š”––™™––—š—“•›—˜“—™™—™˜˜”—›™•Ÿ¢–”—œ———˜–•˜—•—•œ—šš˜™’•‘—™œš•œŸ˜’–—™•–˜™–”™—›™›˜—–—•˜š•›™‘›–———–•™˜–—™™–˜–œ—–™•”˜š–˜–›•—š—Ÿ—™š•“™˜›™”˜™˜˜˜—˜š——›˜™˜—’š—˜š˜—––›™“›–™–™™—•““•—™˜™–˜”™”š•š™š–š–˜™š™›ž•˜˜•˜—™—“”˜‘™™•–—šž››–šš™›—˜˜–˜—š˜——™—™—™“–•˜›™“–š —œ˜•™•𛕗—–•––”•—‘š˜˜——–‘—›˜––•™˜–š–Žšš˜––™•œ—™šœ›œ’—š–™˜šœ™˜–•™›—š™š˜”™–’˜›–›’œ–‘’˜•‘—š˜•”˜™——’—”“—™š”™™™š——”˜˜—•‘˜›˜—”–›—•–™™˜•”–“š›˜–š››••—˜–—˜™•›““˜šššŸ–˜”–™”˜œ›–™‘˜•—›™–—˜™•˜™˜˜šš——š•™—•›šŽ—–˜”˜˜˜™–˜”–š•™”£™™Žš—š“”—–˜™——˜˜––š˜™˜™™—˜›ššš”ž‘––˜—ž˜•›•™“”‘–š–•˜™’˜›˜–•š˜˜–˜”›¦š™™›“˜š—˜š™ ™˜™›˜—•—–™‘—–“—ššš—˜š›˜—›™›™›š˜š™–š“•˜“™š•œ™•š–š–œ˜–’—–˜–—”™—–——˜›™—•”˜™›—’˜š™—•˜š˜ ™™š•™š›’•’ž–š“œ˜—˜›š™˜˜˜˜–—•–˜™”—™“˜’˜œ™“”š“—š˜—“–™š›—”˜•›œ˜‘”˜œ•˜•—žš—‘—š™š˜ž˜˜–™˜–˜˜˜š—•—–š—š—ž˜—–––——–š–œ—”’˜›—–›š›—”—›”›•›™—™–ž™™™”—— ˜——š˜š››˜˜–•š”–•›—–—˜˜–••–“—––˜™—˜”— –ž”“•™›™—”¡—œ˜™ž˜˜œ™™˜—˜•—˜›™—˜˜˜š˜—œ—˜•—™™™•—š›œ›™•˜—–˜˜’˜™˜™˜—˜˜œ”—š’Ÿ”‘•Ÿ˜“›˜•œœ™—˜™–™š˜—••—™—˜––˜™˜™š’™•—––—œ—žšž˜˜–’—˜–› —˜—–šš›š’—›•™–”—“¡—™“šš“™––Ÿ›™˜œœ˜“™–›˜˜—š“˜—™™—–—˜™›š—•–—˜”˜Ÿšš–”š˜š–”˜—š—–™—šŸ——–š›˜˜™šš–›—–™˜“Ž’™™———–š˜–˜—•–˜“™—˜š•™–”—–š—•–›™˜™————š—š™•”–™”™™™œ•™“‘™›š˜™š“œ–˜™——œ—™•™—š—•—˜—˜™š—˜–—œš˜– ›˜˜‘˜žŸ•™—˜””™˜¤”˜œ›’—–—•”–š™˜Ÿ—›˜š˜–ž——‘•”›™™–”–˜ž›˜•—™ž›˜šž•™”•š•ž˜———™——Ÿ˜˜”’––“–˜–›™—š•——š•‘“˜™›š—˜–ž–™™—˜˜•–•””•™™›š˜•–””šš•–›˜—™–•¢š™š’›˜•—œŠ“››˜›‘“—•˜——˜—˜Ÿ•Žš›š–™”š–šŸ“˜šš•œ–—š˜™œ‘–˜—™˜›—›™›™˜–”›˜š™–š˜™š–—™›—”š›•˜–—˜™˜—˜—™—™”›™—•–”›’œ•™—’žš–š› ˜˜˜˜–›—š˜˜˜œ•—™–••–——•š˜™¢—•œ–˜œ™—šš–•–š—‘™–˜™˜—›—™––š˜—–™˜›–˜–—š™›—˜’š›–š›•˜™›™™™œ™™˜›˜˜—˜˜Œ–™šœ–™™—š–—šš™–—š™”™—“™–™™”•–˜˜—š™›ž˜˜™–œ—›™š”–™š•˜—˜˜š™––™“›››–™—“—™š™˜–—˜‘˜›˜˜–š––›˜––˜•™•˜“š•–›˜–—•˜™–—˜˜ž–——˜—›•–”šœ˜–š™™™˜™š™ˆ™—™œš—š™™ž›˜•—™›–˜¡˜—‘™––™™š™—”˜š—–¬›”—“š™œ›••”’–š›˜—–š–›—›–•˜—™–›——š˜š™—™››•™š——–”›™–—˜–˜—™˜›˜–™–š—–•—œš—›˜™š—š™œ••››™˜™™–—˜—˜“˜•›š™—š•˜›’˜˜˜–›——œ ™™—––“˜˜˜—™™–——›œ—•™˜™šš˜˜š™™˜•“˜™˜™œ™—š—š˜•™”™—“–š˜š™™—’˜˜–š••œ—––––™—˜š™›•—–˜–”˜ •”š™—™——’™™—š˜–™”š—šš—”š˜•—™–™™˜—˜—–•™—›—––šœ–š–˜—˜“•–™”˜—š—œ•–š–—”˜›š—˜œ™›”™˜”˜—›˜™™•“›—˜—•š™–™›™–™—šœ–™“™”˜‘š—˜˜˜–˜›—œ™—™™˜›—œœ—˜› –—’˜˜˜œ ˜š›–šš˜—œ—˜˜•›‘——˜––™—˜•›™™—˜–Ÿ–•ž•š—•˜‘˜–›˜—˜™——šš”œ—•˜˜š™––˜—–˜—˜– œ™—”™˜”šš›˜—˜—¡™ž™›”›••”˜š–˜£š–›™˜™™‘–’”•™”™š—˜š—˜“”˜œ–—š›˜š—˜™˜œ“—“–––šœ™—™“™š˜—œš•œ˜˜–˜‘–™™š”–™˜›‘ —™–’—š••—•›’—œ›š——˜™šž ™•˜–™ž›—••”› ”“—œ˜•—œœ—™›—–—šš›™—”˜š–™—š––šŸœ˜™™—š•—•“œž“œ™›œ“š™œ™™›™—š˜•˜˜š™™™’˜–’›•š“šž’šš›”——‘–––›–𤕓—›–”•—–˜–˜¡›–”™—“—™œ™–™™˜˜—œ—š—™˜š›’–˜™š—š˜–™˜”•›˜—–”•œ”—˜˜—–—›š•™˜–—™˜ž—™—–—œ––—š˜•˜Ÿ›–™•™–šš––—’š™™™–œ˜—™•™š–””šž““˜Ÿ”™™–˜š–™œ–—”šš™š™™›š˜™–––—“›™™–—‘—–”œœ™›–—˜š›—™–•œ™˜˜š—’™—’–˜›™˜—–˜Ÿ™˜š˜š›œ›“›—š™•˜“žš™šœ—–˜š˜™œ–˜”™”Ÿ–™š™–”–’™˜š™˜’˜˜™—˜“—˜œ“š•˜—˜™™›™˜œœ•˜”–š™—˜——™˜œ—˜™“˜˜™˜˜š˜™–˜šš›š™™—˜––™˜š™˜—“–™™›—˜š›œ˜˜—˜˜•—“˜™˜—˜˜™˜™˜™‘–š—–—›˜›š˜•–™š˜™˜—‰—–˜˜™——•ššš—™˜™œ™˜—˜˜–™–˜—™—™›— š›—˜˜™š˜•˜•—˜——™›š˜–™˜˜™™˜˜›–š™—˜™š˜—™œ–™˜™šš••—™–—˜–˜–œ–œœ˜™œ——˜›š™—™™–›œ™˜š™–™˜˜—™™™˜œ™™—š—•—™š˜–˜˜—››–—™›“–˜–™™——˜˜˜•˜ž——š˜›™˜–—™˜–—š——œ–——˜™˜—šœ™—š–—•™š™š”œŸš˜™——˜¢’•›””—•–—–œ–œ™Ÿ˜˜šš›—š––™“•™“¡š™˜—“˜—š•–›–—¤››•™™——˜“–•˜š–—”—šš–™›–•ž––——•—™š™™——š™˜—–™–š—š“š˜—™—”™š‘›™™’œ—––˜™šš˜™Ÿ—™–˜—™–˜–•™“™––™–‘˜’˜š“”–•™˜›˜›–›˜—”™—˜˜š›˜˜™š™——‘›–˜£›–™”–Ÿ›˜––—›™•—œ•””˜š˜—ž™¡ž˜˜™•–“™œ™—–’”˜š˜˜™œ—œ—•––Ÿš˜—›™˜˜––˜——”—š—•—™™š™˜›–™šš˜˜–—™——™˜™˜–˜”——š————™š˜˜šœ’——–˜—˜˜—˜˜—––™˜™›™•–—–˜™˜›œš–™–˜šš–—š™˜–™–˜”—œ˜—˜—™˜–˜™š˜™˜š˜™š——š˜——™–——™–˜™—™—™˜•———™™—š™˜™šš˜›’–˜œ–—™™˜˜™š’™––˜ššš˜“”™œ——–—˜š—˜–”˜™˜•–——˜˜š—–˜–†š˜š•—›–›™—“˜›˜–˜š——˜˜™•˜™˜˜•š›—›—™•–•™™›œ–––•——˜””›Ž”›™•™“˜—˜’˜˜—™––™–š—›˜˜š›™˜—œž–™•—š›•˜šœ›š–—™’•™”››››™˜—™™—”œ—™˜›•œ™žš–›•™›–˜š—œ——˜™˜˜—˜™•œš™šš–“˜›˜”˜—–˜™Ÿ—š˜–˜–™•˜™–——™™™—›˜š™”š”—–”—™”˜›š˜™˜™˜—™—˜š•œš˜››—›™•”˜••˜”—›”–œ˜™¡ššœ™’™š˜š™—š—™˜—œ—••𙓗˜•••—›˜–—–˜š™–“•ž••™š˜—•˜˜ž—›—™—˜™•••˜›’–™™š™“”›’Ÿž™Ÿš“–œ “š •“™™˜š–•–‘š––—–ˆ›œ•˜˜™™š••œ˜›•—•˜˜šœ”–—›œ–œ˜™––›—™˜”˜žœ“–™™’—˜—‘ž™›—›˜œ›œ—“™’œ˜–𛓒›•—”–——–“˜—‘˜™ž™——š–™•Ÿ›žš–•—’˜—•›•’”—”•˜—˜–›—–™–š˜˜›–›”“–’”——˜”—“˜——›—™”•˜œ™——“š™—™˜˜›——¡’—š ›–™›š“‘––¡— ›˜›š›œ›––——”•˜”—”œ˜”˜—™¡••›˜–Ÿ—››™–•ššš”—‘•›•š›Œ—™˜•›˜›”—”œššš”“’——–ž—“˜‘¢˜Ž˜‘–—™•‘—žœ’Ž™’•™›—•˜–›—•‘˜—›˜›™£˜˜•œ‘—™š˜™––œ–œš˜˜˜›™œ“˜”“˜•‘š•’˜—‘˜—š™”—™’™•”‘š•™›™Ÿ˜˜›”šš“™“”œ—š”˜™——”–˜‘™’›™˜“›—˜™ž˜“˜™–––£™«’–œŸ˜—˜›˜š˜–—œ›™š™›Ÿ—–š”—š™–™˜™¡˜“ œ™”“™œ¡™›™‘œ–”——˜›‘š•—š–œ˜•–•”˜—–˜›—˜™˜˜˜˜™™˜™——˜˜˜™˜˜˜˜™˜—™™˜™˜˜˜˜™™š—˜™˜—˜—˜š˜˜——˜˜™˜™˜–—˜™˜™˜™˜˜˜˜˜™™˜˜—˜—˜˜˜˜™˜˜›˜˜˜˜˜˜———™˜˜—–˜˜˜˜˜˜˜˜˜˜˜š˜™˜˜™˜œ˜——˜˜˜š˜˜™™˜˜—˜—˜˜˜œ˜™–˜˜˜—˜—˜˜—–™™˜˜˜˜˜™˜™˜˜˜˜˜—˜—˜™™˜˜™˜˜˜˜›™˜˜˜˜˜——˜—™˜˜—˜—™™——˜˜˜—˜™—˜˜˜™š™™˜›˜˜—˜˜™™˜˜˜—˜˜š™˜˜–—™˜™˜˜—š˜—˜˜˜™™—˜˜˜˜™˜˜™˜“š“—˜––˜–••˜™–˜šš™˜˜––—˜”•˜˜•–—›—Ÿ›˜›˜’–˜–—˜˜”•’™›—“Ÿ—•𣔖™¡œ“˜˜”›—™—–˜™˜™™—””•‘––•›˜’ž”•š›——šš•ž’ —˜œš™™—š›–˜£™•—–—˜™™šœ™–˜˜“›—–£˜›•˜—˜——““—˜•–•–•˜•™›”Ÿ™•š–šš–˜•™›•—˜š˜›—˜˜™˜˜––“˜ž•—––”¢“˜˜—›–™™–›–š››™——–š˜”›”˜’—˜–™š™™”––——˜—•›šœ˜•—™”›•˜–˜™•™—™žš——˜š˜—‘››—–˜—˜¡—˜–™”š”šŒš›–”›—”—Ÿ™•——¦™”–™˜“˜˜žš™˜–ž“—•–˜™š–œ˜—•–œ”™•—š“™–•›——•˜˜™š›£‘––—˜™™–“‘——œ˜˜—š–—™œ™”˜™›’𙖙𒙔˜š”™š”•”Ÿ™™•š——™˜›•“•—š—›™“––˜—œ˜˜™˜™™—”˜ ›š˜›—˜›—™›š—˜—šœ˜•—•”’–––’”™—–”——š™•œ—™–—šš•›˜ˆ™˜›–šš—–”–Ÿš™”š’˜—˜–˜–”˜˜˜œ–—˜š™——•˜—–•—›–”š—‘˜”•™›––›™Ÿšž—œ›œ™›”•™–˜—–˜–”šš’–˜™™—–––“”˜š™™˜˜——’™”š˜š—š–•—š™–˜—–™™˜™––•—š˜›ž’—š—•—›™—˜œ——’››Ÿ˜•¡š˜—šš”‘—œ™˜—•’”š—›™œž•˜—œ˜™˜˜–˜™”–š—•››”˜”–—šœ™“™š—–™˜š—˜˜˜š––˜—œ”š‘™›——š•œš—–œ™–—™œ—˜˜˜–•™™–•™›˜›Ÿš—š•”ž›“–—˜™›šœ™›š›—™›™––—˜˜›™˜˜˜™–—𛕖—œ˜•—™—™œœš—•™–š‘™—˜™˜”™——˜’š——˜”š——˜›š™–ž˜“™˜—™—•˜›–—›–—”™•˜š—œ—””—™š›˜™‘——˜–™‘š™—˜›’œ—•——•ž›——“˜˜šš™›šš–“–—™™š›–˜‘˜‘–—œ™˜˜›™›˜—––™™˜˜–—™—œ—›š˜™›™››––“˜™›š™™™—›™˜šœ˜œ˜—–™¢–™™˜™œ—ž–š˜™˜™šš™™¢˜––œ—–›œ™—™™˜˜—˜˜–”—™˜”–“–˜—™œ—•—š˜šš”œ—•š•”—•˜••—œ“™—šš™™•˜š—œš˜–—œ™•–“—›œ™››˜š–š”–—™¢™—˜——œ›™˜›™˜š•–—˜˜™—™–•™œ˜š•—›˜™—šš˜š“—™™š—˜š——‘”—œ———œ–™˜š™—•˜”ž˜’•˜”™˜–¡˜—š™‰˜–—––šš˜–•›šš—˜“˜“•—˜“˜˜ž™š”•™›”˜™™—™–™™˜š•”–œ˜˜˜—›žœ—–››˜˜–”˜˜™š–™•™˜–™˜˜™–”•—Ÿ—™™™˜—˜—”—˜——™’–™››˜™—•—–•—™™’›–˜š•””“š—•˜˜˜–—˜–›™™š ’›™Ÿš™™›–›™˜˜™ššš–™—˜•——šž˜— š–˜œ™•š—•—™™—™˜œ˜–˜—™››™”–•–˜›–Ÿ–¡–˜˜›˜˜™š™˜˜˜—™š–˜™›—›——™›••™œš˜˜•˜›ž™••™ž—˜—œ™˜ž—”œ™’˜š˜“’›˜””™›—›—–™˜—™˜™™—››˜—“™•–––‘”™•—™–™˜•›—™›—™™œ“”–›˜˜˜˜˜˜—–”˜“–˜“—˜›˜Ÿ—˜š™™—›—˜˜™–™™“›˜–™–”—–———›•“›˜›—––˜—˜˜››šœ•š˜—š—™™——š•–˜˜™™•›˜›™š›––•—˜™—•˜—”˜˜˜™™›™–™›™—“˜–—˜“–›—–’™——˜”–˜”—›—ž–—”’˜–—’™——––˜˜™™™”˜˜—œ˜•—˜›š˜›™——–˜”––š—“˜›šš ›™–ž–˜˜™˜˜›–˜š˜›˜–•–š˜–˜”™—™™™——™–™Ÿ™––™˜–˜™–‘–—œ——–˜™™š”“—–˜™•™™™™——š˜—™–œ™™•—–—™›˜š™š™”™—–š˜–˜–˜”š™™—™˜ž”–•—‘‰˜–‘•™–›˜™šš˜—™™š™š™˜—›˜”š™™œœ™›˜—–›˜—–š˜˜˜š˜™˜—–™–—š™˜››˜˜˜˜›˜™–—™˜™˜™–˜™—™˜™˜•™—˜˜—˜™—•˜——–˜•˜˜˜—˜˜š˜—˜™šš—–˜˜ ™œ™™™™˜˜—˜š™˜š‹–—˜™—˜˜™˜˜™˜˜š˜•›˜˜˜˜˜—˜™˜˜—š˜˜›—™˜™š˜˜—˜˜˜™———˜˜˜™™˜™–˜™™—˜™š˜•˜–——™—˜˜—˜˜——™–™—™—˜——˜˜”™˜™——˜—™—™•—˜˜——˜–›˜———š˜˜™™˜˜˜šš–š•—˜–›˜—˜˜—˜š˜˜—™—™˜™–˜˜—–™˜˜˜—š—–˜™™˜—˜˜—˜—˜™™˜šš–—˜˜š—•œ˜™šœ™—”™ š—–Ÿ™™—˜™——“›š—™˜’—˜˜œ–—™š•šš˜™—‘—˜—™•™—–›™™™™–™œ˜Ÿ™™™š˜˜•–——™—–›£—˜˜š——˜ž——›–›šš‘—™š––˜—˜š˜•—™š˜š““š™–—™—›–—”˜™˜™™–š™š™—š˜™••–˜™——•˜•›™—–•›™—˜–”—š•™’—˜™—’—š™–˜™™š”–––•œ˜˜——œ—˜”˜—˜“™˜–˜™š•™š—”˜œš–•—›˜˜›˜—˜–•˜—”˜—•˜š˜˜›™˜˜–˜›™—š˜•–™—›˜——•›˜˜•–’™›–˜–™”š–—™—™š™–˜™š—–š›“ž‘—˜›ž›————˜—“–šš£Ž•™™˜—˜›˜™˜—˜™›˜—–—œ™›•˜šš™œ–˜›—™–—–—˜š™—šš——˜˜•˜—˜˜—›™–”˜ —–˜—š—˜˜™—›——š˜˜ž˜—š˜šš˜——“•™š–‘š˜–˜••˜—š’œ˜š˜—”‘šš——˜š™˜——˜•˜‘‘™—–œš™–——œ›–—œš—š–™––™“—š˜–™˜—™–—–™––“–—•š™—˜ššœ———”™•™š“™šš—œš–”š˜—Ÿ™•—›˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜™˜˜™˜™˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜™˜˜˜˜˜˜˜˜˜™˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜š•™˜˜”—˜––—˜–™•šš—–œ•“𙓙˜—–š–—œ•˜™—˜™–™••”š˜—œ•—œ“›“——˜š—“™˜—™—˜›™—–˜™™˜–—˜˜—šœ—š˜šš˜˜–—›—𙕛˜˜š˜˜™˜™——™›™›™š——š˜˜”š•——œ˜˜›™™˜™”™™—–”™—–™š•——››™––—™™–—›–˜˜›™——•˜–™™˜™˜™——“˜œ“˜—˜˜››–›•—š˜˜š—˜––™™™™ž˜•˜—›˜—š˜›——œ›˜™—š•ž™›—˜™š™—›™–˜–˜•™˜™™š–————™—–˜™š˜”›•Ÿ›š˜—ž—œ”•“˜˜›–—˜”––›™––›œš›™–˜š—›œ˜š™˜˜——”™Ž˜˜——–––™”–š———™˜—š™™–›˜–™›™™™š™˜›’—˜›™œ˜š™š”˜———–™—š—–—‘—˜˜š—›œ™™—”‘šš———œ˜™š˜™˜•œ—š˜•˜–œ™™—˜™—‘˜˜˜˜˜”–—™—”˜™˜™˜››š—š–™š˜š–—•™——›™•™•›–™›—›™¡š•˜–”—˜˜”—›˜’—˜›˜˜™•—š˜š™—™˜™˜™‘”š—œ™•œš˜œ—™”•›–’˜˜–˜—•›š› ›š˜š”™™‘œ™”™“–˜—“˜––š–™™Œ—•𓙔𓓖™–˜˜›˜–”—™–˜™—˜š“˜š˜—˜•˜š”œ™—š˜–—š—™–¡’™˜–˜šš’™—šœ˜œœ™•›—˜™“”–œ˜”—‹˜ž–™˜Ÿ•œ–•™—™—•‘–“•—™•˜’™™˜–™’™™–Ÿ˜˜›—›œ•œ—ž–™œ—™˜–”™––˜˜—˜›™™•–œ™šœš–”›•–—••›š–™–œ–™—––”‹—•˜›™™–š”ž•’™˜›˜˜•™œš•—˜‘›—›–—››˜™™“––œ•™›——–—“””—›•™œ–˜š–—™”™™—”’™˜–•—™™ —™–™—•“—›•–•™˜˜–œ˜———œ˜—™•—™›“’š“–—š”———––—”™—˜˜›˜—–––––˜˜š›™š——–šš™™ž—••‘˜›šš™—š–˜™š›˜——˜›™˜˜”›™™˜——™–™”—˜Ž™™™–˜”˜–š‘™“Ÿ”š˜›——˜—–˜š—˜˜™™–œ‘ž˜‘•—™˜—™‘—œ™˜˜˜›š˜˜š›—™—š˜—–™“™ž™—™™˜–žš—™›“–›™•–šš–™——”—›——š——•˜—•˜™™–˜˜—˜›˜——˜—––˜ž™š–—”—™••šš‘—™š¡Ž”–šœ—›™™›š’—–––”™—˜— •––šš•™™Ž–—™–™”™”—–˜›–›˜–™—˜›–˜Ÿ–››˜›–—™š•˜šš˜™”š•—˜˜””˜—•œ”•”¢›šž˜”˜™–›™™•—–˜˜œ—š••——˜•›™š™–˜•–›–”—˜•š—˜‰•˜™˜”–›–™’”›š“š‘–œ ™˜œ™œ˜•”˜–—–£›™•š–—‘–”™•™™˜›˜•™›œ™›š–“œ˜ƒ¡—˜•—’˜œ™˜šš˜–‹œ•˜›–——•––›•˜•˜“–—–•™—›“˜˜›—•–—™˜“—˜™–”›˜™––˜—˜š™–š›—•™˜–‘š™————™—•–“™š™™š™›ž™–š›š›™™–š˜˜›˜––—˜–™––š—˜“–‘˜™—˜—˜œ™˜˜“˜—’’Ÿ™—“™˜›™››šš’——£™•Ÿ—•™œ—™œ›šš–•–š–—˜–›–’™˜™™œ›™•››šœ™˜™›—˜—’™™˜›˜–™—˜˜›˜›—›•–——•š——˜š™˜––™—••—–˜“ž––›š™™˜˜•———–›˜˜—š“œ˜˜˜“’™–˜—˜—”™›œ™–˜™•›˜“œ–˜™—š˜––—˜œš™˜¡˜™š•–—›˜˜š•—™™™›––—›˜™“–™š—•—›•š“–™–—›—™“š—Ÿ˜”š˜›–›˜œ›——š–˜–™š–˜œ˜™šš—“š––—–—œ˜›™›•—šœ•›•™œ›—žš•›•˜›ž˜™——ž•š¢˜—™•”™“™•™œš–˜›––—™™”ššš–™˜›•——™™–””•™˜›™——•–›˜š™˜ž›”˜™›—”–™˜˜š›–œ›˜™˜Ÿš–œ™›˜——’™•š˜”™›—¢ž–Ÿš˜—˜•š–——™—–™œ™™–——œœ•”–—›š•™š“—˜—–š›š–š•˜“™–˜—•™š—˜˜˜˜™˜–˜™›™˜˜—˜š™™˜˜˜˜™›—˜—˜™˜˜˜—˜˜š˜—˜™˜›˜˜——›™˜–™˜˜™—™–˜————™™™š˜™˜—™˜š˜—™˜–™˜˜–˜˜—™——˜—–˜˜˜›™——–™—˜˜š˜™—™™˜™—˜™˜˜——™™›˜˜—˜—š—šš˜œ——™—˜˜˜—˜˜š™˜˜˜™™˜•™˜™—–˜™——˜—˜š—™—™•˜˜˜˜—™˜˜—˜˜——›™˜–™™š—˜–™™˜™˜——˜›—š—˜˜———˜™—™™–™˜˜——˜˜™˜˜˜˜—™–˜˜˜™˜™™—˜–™™™—˜™™—™˜˜™˜™™™˜–––˜˜–žž••š–˜›˜˜›˜š—™”•˜–›—š–™—˜œ™˜–˜—™—œ™™œ˜š”š˜–™”›™“˜š—–›™•–˜˜˜™œ–™•“š˜—›™˜›—”˜™›š—ž”˜š˜™™•—˜–˜–œ˜š•—™—š—œš™———œ™”™——™–œ˜™˜™™——˜“™—™’˜–˜›˜˜˜”—–š››˜——•˜šœ–™›—‘œ”™—˜––”™˜•”–𔕔”—™•˜—˜—™—™™•š—™˜•›’˜”™ž˜—™œ˜–—™˜—œ•™“œ™˜š–™˜˜–—š“”–™˜˜œ˜—£“™–ž•š–™——•™•—š–š™˜™•œ•–˜˜™˜˜™š–™—–˜š™•”˜›–—–›—˜™™˜”œŸ˜–™œ˜—˜˜š—••”—™™˜–˜™˜™™—ž–š”š™™›“——˜˜™ šœ˜–˜™——™’•–˜—”˜™š——›œ˜™˜–—–˜˜˜—˜˜—˜™™—˜—™›–”–”˜˜–˜›™–›™˜š——˜™’˜˜™™–˜—™™——šš™š–›˜‘™˜™—™˜—•–™–™”˜˜™‘™š—˜˜—˜ž•–˜–˜œšž™—™——–—™šš’–™—–—˜™————š™–š™–š—™™˜™—š——™”˜š˜˜———˜™–˜˜˜ ›˜˜—–™˜˜šš—š˜–˜—•š˜˜–•——š››—˜”œ›š˜˜š”———–™›š˜—–—œ‘–›•›“–š šš™š—™—œ——™›—š—–—™›—™—š–™›’š™—–—–˜š›™˜•š–’™˜”™Ÿ—˜¢™›˜›™˜˜˜›•—ž–˜™˜˜›™™š—˜“”˜˜——˜˜Ÿ•‘™–˜™š›––—˜™—™˜—’™ž“›’–˜™˜”˜’˜™”˜›—–š™›—•›˜™˜—–š™›˜˜—“•™•™“–œ””“™œ™˜ž™–™™˜–˜››™™––™š™™˜œ›˜™•”“œ–——––™™˜–’™›™—™–•”™˜˜™•š™–•—˜™—™™—•’—˜›—›—™“œ›˜˜˜—™—š–•—š—–™—“œœ–˜™™ššš›™™—˜–———™—˜—›—˜–——–˜—˜™•›ž——™–˜š–’—’“™”œ›—›˜—˜™˜——”™˜˜˜™˜šœ”˜•›—––—š›˜˜œ–•™••—•œ”˜’™˜ž˜š—•›‘—š—•–•™¢•œœ–œ™•—˜›˜—–›˜—••›œ›——›“˜’—–˜šœ•—˜™˜˜•™˜——“–š•–œ—”—š•˜˜˜™––’˜–𖔛𙓔˜–˜›‘—–—“–™š”˜—•–›——˜™–™—˜—š›–›——™˜˜™˜–˜•™–š˜•›™œ——˜–––•š–—–—˜š›˜™˜•™™””–™”šš˜˜•˜–”™š—–•™™—›“•™˜—–˜––žš˜–ž˜—˜–•˜š–’š—–˜–“—˜•˜£š–š—˜š•–––•š™——›˜šœ˜˜—™™’——š”š–›•™”™˜™——˜˜œ”˜————š˜™™œ———˜œ›˜œ™™˜šœ™š˜˜•›™–™š˜•–‘—™™˜˜—‘˜•–™–™œ›˜•–™š›”—™™–—›š˜—–—–——™˜—›—”˜š—™™Ÿš›–š››—š“–Ÿœ”——•˜›˜™˜“™—˜›˜˜˜–˜ž˜˜˜—›–™••™™œ¢›——›–™˜Ÿ—š˜œ–——˜—Ÿ———š˜›™™œš›—–˜™–˜™•›—››—•›˜——š—™––—–™——–˜™–š››™˜•–˜–™™˜š™™—›”’›•–™’–˜•˜—–—™–˜—š˜™š™—“™˜š˜–š›—–—™™˜——™•š™›˜˜——”œ›˜š™˜–œš’—š˜˜”™“–—•˜˜——˜•˜˜–•”––”™–˜™œ™™”š—›”™–˜œš•š›˜™•“™•–’‘™—™—˜š˜•œ—››—œ˜˜™•–™œ˜—š™˜˜—“œ˜——˜—•—˜˜˜–š•˜›’š’–—––˜ž˜–˜—š—™——–šš˜š˜š—›™–—›–™”˜›——˜š–—––›—™˜–›˜•˜”•œ˜š———š”˜šš›™›˜–ž˜–•˜š˜š˜™›—–™˜—›–˜•——›–™‘—˜•—•—˜“•™–™™™‘–—•™—™œœ—™˜•˜›š–—–”–™š–—™–›”–™š—ššš˜”–—™œ›˜˜™“™š•”™–™˜˜œ˜˜™˜™˜œ™–›•–—›™”•š˜•™™”˜’—™˜š—š—˜”•–•›“–™–𙑕——–˜–“˜–——™—™™”™—˜—˜™›š˜›™˜“˜˜–›˜•—™’™˜—˜—•™›‘—’–—˜›š————™›™—š•™™˜––š™œœ—œ˜–—˜™™š›–——š•š˜—–šœ–˜—˜™™–™œ˜––™˜˜™™•“ž˜˜—™–˜•˜š—š—š••Ÿ›™—œ›•œ—™—™™œ•š–˜š•™˜œ˜–—˜—š•›˜˜–•™›˜‘™˜—™—“š”•œ˜——™–—“˜”™˜—™——•—˜››—™››–—œ”™˜™––š–•–™™——™•›š•˜›——˜•”™•š—š——™›——–š“Ÿ˜’™•”™œ•›™˜–™—“˜––˜›˜™——˜—ž–˜——›—“™—š™™š›˜›’–•”š˜ššš¡˜˜˜˜™š™˜––𛕗—•—”˜™–™ ™˜œ•™—•––“˜š˜œ—˜“—–šš––——š˜šš›—˜š—–•œ›——™™–•™™—œ––—™“š—™›—––šž–—›˜™™žš™‘™š™˜˜œ›˜˜–™™™œ™˜˜š——š‘’™™˜˜˜¢–—“•–––™——˜”™—•˜—™”””˜”—˜“š —™š™˜™š—›™——™™˜™’“•™˜™“”™–—™™—˜—–™—™™™˜™˜—•™š—ž—œ›™•“™—š‘š—™–œ˜—˜¢—˜œ–œ––ššš—™˜™™˜•™šš—™š˜—˜™˜˜‘›˜™›•›—•–—œš”š˜’œ•˜˜—™œš˜–•Œ•˜—¢š”˜›˜•›–š™–™›˜~”š—™›•“™™”˜›˜›š‘™š™“•—•—žš›š™˜ž•”—›˜˜™œ™–š›™–˜”™™™”–š™š™•™š–™”¡–™™œœ›œ™™–—š˜–˜›˜š˜¡–˜›œ’–˜“˜š˜—˜š—™–™š—œ—”›˜˜”™—š”•˜˜œ›™›™–˜—šœ›‘–˜™™——–™š–˜–˜˜˜š˜™š™—‘•œ•—™—˜ž—•›•——š–—›—™˜˜šš˜—™––›˜˜–™“˜˜™ž˜—™˜˜˜™””•–”—™š˜—œ—–—šš˜›˜•”˜˜–•—™™–™œ–™™—–›™—™˜š——˜›š›š–˜˜—˜–’”˜—˜˜™“œ›“—œ™˜™Ÿ˜—››˜––Ÿ—”™™•˜–™“••––™—•—™ž™•™˜—––—›˜“•œ˜›™›™—›™––”™•˜˜˜˜˜˜‘š–“˜•š——•™™˜–›”™–™™–—˜š˜–›——–›™––š—˜“š˜š—–”›››•‘–—˜–˜™™™–˜•˜—™—˜˜–——–š–šœ–™›–š˜š˜˜——–“•˜—˜˜——˜˜™™š™š™˜˜Ÿ—˜™™–˜š™š˜š™—˜—™˜–™š™š›˜˜™—˜™™™š˜™›——™—™š–™—˜˜™š˜˜˜—™™˜™˜™š˜˜˜™˜•˜—–˜’˜—š™˜—™•—•™˜—˜˜™ž˜——™—–˜œ———™˜˜›™™—™˜•™—˜™–˜˜˜—˜—˜˜š˜˜˜˜˜š—–™™—˜™˜˜˜™šš™™—™–›˜•˜™˜š—˜›—–™˜—™˜˜™˜š˜šš—–——™–˜—˜›˜˜˜˜•™™™™˜™–˜˜—™™ ˜—˜—™™šš˜˜–˜—˜œ˜™˜—™™–—™˜˜–——˜—˜™˜˜—˜˜™˜˜œ™˜—––™™›™œš“——˜–™˜˜™žš•œš˜—˜——•˜•™•˜ž˜™˜––˜—™—˜™˜”›˜—š˜Ÿ”˜˜–˜˜˜š—–•˜™–œ˜—•—•”•œ˜—˜•œ”ž—˜—–˜™˜”›——ž–™œ˜–™“˜–˜–š—œ—––™š˜™‘–™“—˜™™•–˜˜™™˜‘™–—–š˜”œ–—”˜—™—–•–™š˜™—–™›œ’–˜™‘™–—˜™•—˜ž™™–™˜•–—™™’–•——Ÿ˜–”›•—•˜˜—“™•š——™˜˜–—Ÿœ™š–™˜š™–—˜š—š•˜˜š”œ˜–œ–›–—–—˜œ™––š•š”–•—”™˜’“‘™š£—š‘””šœ™œ•›š—––—š—‘›—•–œ˜šš™—•—›˜™œ–™˜™™œ˜–˜–™—”—š—šš”š–•˜š•˜—’—Ÿœ™˜—˜–šœ›™™™˜Ÿœ˜—š•”’—›˜•˜ž˜™›•š˜™™›™•”œ”•™–•˜—£–˜š˜—˜–™™™–Ÿ—™“•™•˜˜—ž—™—”™—œ™—’˜’ ˜’”™”™š——šœ––™–œ–Ÿ—› •”˜’“œš™™–˜“’š™›—ž˜›œ”š™“œ››•—™–˜˜™˜•–Ÿ––šœšš˜œ–™•“œ™–š‘––›”–•›š–˜–™——•˜šš™šš’—˜—˜—•™“”›š™—™—™—˜”˜—”˜™—––—˜›œ˜š––™š“––žš˜–˜™•’›š˜–šž™™–›–—™—™•š••™•–œ—•——˜”š—œ˜—–‘—›˜—›˜š”—˜——“—˜š“›•–˜”–––—š™—–—˜š˜—š›˜—ž—–›˜Ÿ—Ÿ™•——˜—›œ”—–—˜šœ—™“™›™™——–››–š–“—Ÿ•›™™“š–“›–š–š•’œ—˜˜š––œ—˜™š–¡—ˆ™•–—™˜–˜”–•–šš˜“––”•—˜—˜™™›“™••™—š™™™•œ™‘•š˜–˜—›š˜”Ÿ™–ž™™–˜•–š—š—–™•—™—™“™”“˜˜•›™–——š–”—›™–¢—––œœžž—•—˜™™˜šš–“˜•———–š–˜˜˜˜–•˜••™™•™™–šœš”šššš”šœ›˜š•™’—™’•–˜˜™™—˜˜”–˜—š––—š•™™‘—˜—˜••™•——™——™˜™–š——˜—“™’˜ž™Ž›˜”˜—™•”™˜–™”˜•–˜Ÿ•—š™–™›™™™ž—š˜˜——•š—›’—”–“••˜–˜—™™—˜–œ”˜šœ˜œ˜—––œ•—œ–š—™“™š™———“›š˜—™—˜•—•šš˜™—˜˜—š–›•–šœš•˜““–•–”—˜––œ–”˜™˜œ™•–˜—œ–™Ÿ––™š˜–—˜š—˜˜™™š–—˜˜–•™ž˜—š˜—˜––˜›—˜˜ž™›•’“›™”˜—˜—œœ–—‘–œ—™™š˜™˜š™™—–˜”˜––—š˜™—”™—›“™œ™˜—•–——˜™•˜˜•œ—™š˜˜œ›š——˜—•™š—š™—˜™“—˜š™™™™™˜—™“’•˜˜˜”•—™‘••˜—š™šœ•œš›˜’“›™˜˜˜˜œš˜˜•˜š˜˜–˜–™—‘—–š›—–’–š““™–œ™šŸ˜–——˜–—š–›š—š˜—˜˜—š—•˜š™˜™—•˜–˜š—›˜—“š˜——™œ˜••™˜˜˜’ššš•”˜—–—š–˜˜•–˜–˜™˜š——™˜š™—–™™š–“˜˜œœ—˜œ—–˜›•–™š˜š›—™—•™—”˜”“”–š˜—–˜–—™˜–—™—˜™—›˜—–“˜–œ—•™–—™˜˜“™˜—˜—–›——Ÿ”Ÿ›˜›–šš˜–›™š–•››™™˜–š———˜•––—˜˜–™•˜œ™š˜š™—˜ ›˜•˜—œ˜™˜—™˜—“š•—˜˜š™––”˜™ž—–˜›”—›˜˜š™š™”—˜•˜™–˜–š›˜˜———›•›•–›˜˜—š™–š–—›’••—’™˜“™–˜—™—š›——™››——”—•™˜’–š˜–”—™”™”™š—›š™˜––—–˜–›———™—š˜—œ˜˜”•™•˜–˜˜˜™—›”–š˜˜š•›–”™•™–“–—˜™˜–—˜˜•—™–—™“›˜™––Ÿ—˜š˜—˜šš—•”˜—™˜•—ž–—™˜š—˜œ—ž˜š™™•˜š™“—˜™›’——˜›š˜——•—˜•˜˜–—œ™œš˜˜—–š™™š•••—––•——•™—˜š•–˜—˜š›—–“—š›˜˜ž™˜˜—™™—”œš•š›˜•“—–š›™™˜———˜—˜˜———š—˜˜•œ˜’™˜———”˜›—𗔤–˜™–™š—›•™•˜™š—™˜—š—˜–›–—š–š™˜˜–˜—š–˜ž—˜—‘˜›––›™—›™›šœ•–™šœ”œ—––”–›––˜•——™™——–š˜”™™˜•—˜•“’–———™™˜˜™šš——™š™–œššš™˜š˜˜˜™–™™˜š™š—™—šš——––˜›™–˜›—›•—–™—ž—žš™–—–•š–—˜š••˜•››œ—•—™š˜˜˜–˜—“™ž˜—”—˜š˜š•›”—šš˜™™˜–™™’”—•——–˜‘˜—•—˜–œ™–™”›”œ—™˜˜ž˜—––™™™š—•˜š›–—˜˜˜’™•š–˜˜šš”š—–™–™˜–—›™“——˜šœœ›˜›š™œ—–’˜™–š™”“š–šŸ›•–’š“–›—˜‘—ž•–––—•š—š———™•’˜™žž™–››•˜”“”™›–”š–˜š–—•ž—™›–™’˜˜—™–“’—𔙙ޖ™–“—”š•–š˜™™–˜’›˜œ™–—™—£œ˜—›—›™˜‘—–œ”–˜——™™œž–œ˜–˜–˜œ“¢œ—™ž™š››—˜–š˜—™˜’›™˜˜•—–ŒŸš™šš—™š—š—š˜–™“œ˜•˜—š—•›˜—š—š——¤—•›››§™”“˜™™—–™™™–˜’”–˜“•–”˜™˜—™˜˜•›š¥™™š————’•š’˜–™—œ’˜›œ˜ž˜˜š™˜™—™—”•š˜›™•š˜›˜•š–™—–’–—–››–š“––›—š™šš—œš˜™š˜”“œœš’™˜ž™›œ“˜™˜••”—–—˜›˜•›œ¤—–•›š—š›™’™—“œ–—™‘”™”š ˜™•Ÿ˜—”˜—›š•˜•™™›™›™œ–˜š‘——”–›š’¡–—™“š™šœ’—™—˜ššŒ—™˜™–›˜›“™š˜›˜›—–›ž’™š–——˜—•˜˜•™—œ—˜™š˜”˜–œœ™™“™—š™—•—›—”˜—’”šš••˜–˜—•˜•™—–——œ–›–›˜–›˜”˜œœ›—”›———˜™™›—š–”•”˜—™”–›˜—™‘™›”—›š˜•—š—–š›–—œ›–™•”“—›˜™š˜›˜–›–••”•šœ––˜˜••—›•™‘œšž•™‘•š–™–—˜˜™˜–˜˜—šž–—•”˜‘”˜š•— ˜˜š–“™“•œ”™™˜›“Ž–¢–œ—‘Ÿž›š˜“›š˜•™—–˜”š—™“——–”š–—••›™–—›•™•—˜–š˜•™š—ž–››–•—™—–˜™š”ššš˜Ÿ›ž›˜˜š›š–˜œ––™”›‘›™–Ÿ—šœ—›˜”˜˜˜š———”šš—•˜š˜‘šœ“˜–—™—˜˜—™›™—šššš•˜˜•˜™Ÿ™˜–—š™š˜œ˜›™˜˜™˜”˜˜™•–”šœ–—œ› ˜•–’™™™˜˜–—™•š”˜™•——™–•™™˜š˜–—œ•——˜ššš–™“—––—˜”›˜›—–’˜“—“‘•˜—˜•š–˜š˜š—™——˜˜–››˜˜˜˜–—”•›—™˜œ—˜”›™˜˜››ž•”–‘•”™˜“™˜™£œ—˜–˜™—›‘™›š•”˜ž˜•˜••™©•–“—–—›•˜š˜£””—˜›˜š›˜™š—˜œ”–›œ—£“™—––™š˜‘˜˜—ž—”–“š–˜—””‘™˜—‘™ª–“–˜–¡™”“˜–›˜—ž›”•–™–“›•’š“–™–•–˜’–”˜›“—˜—š˜‘•——•š˜“—˜™–—˜™•™—–›——’˜•¤ž“—˜™˜š™˜™˜˜™——˜›™›”–”–𔕓•˜™–›››™”•‘’—‘‘™– ˜™–™œ”™›š—–œ—›™—˜š“˜ ››™š™——•œšš™™——•™˜–˜———˜›™™—•——–›˜—™™˜˜—˜™˜—–™—˜•˜˜—˜—™—˜œ——˜”–˜˜™™™—–•™›™š™™š—š–˜š˜™—˜–™—˜˜˜˜—˜“•˜™––˜–˜š–•–˜–™šœ—™–˜›–™™™™™˜—™š˜˜—–——™š™–˜˜š–”˜–˜™–˜—™˜—˜™—˜—˜˜˜™™˜šœ—˜˜˜˜—˜”˜š˜™—˜˜˜˜™š˜—›˜—˜™——š˜š™–˜––™™˜˜–˜™—˜˜™™—˜–˜™˜——™˜”–™™˜š˜˜—–“—š—™˜˜™˜™™˜š˜ššœ—˜›–™˜™™˜˜™šœ’™š—™™––˜œ™™›š™–›—šš—›™˜‘”˜š›—–›žœ•˜˜š˜˜”˜˜˜—š›™–˜——ž›ž—˜›——š–œ’™–™–˜–—š™™˜–˜™—”•”–šš—™™”™šš”˜›–“—š˜˜——š™–—‘˜”˜™˜•–˜™˜›–™—˜š–—˜–˜•“™™–˜™——™˜˜™–”–”’™™˜›•—–•š™™˜˜”š™œ”™—š™——›——š™——›™˜•—œ˜–™“˜™”“•–™•–˜™–š–™š—™š™—•—˜˜™›˜™˜˜–šœš˜›•š”˜›”•œ”—™——›•——“—˜œ™›–˜”˜••˜™—˜‘˜—•”™˜›––———•š–š˜š™˜˜˜–•œ–—š’—˜™š˜—˜˜––ž›˜——š¡œ˜—–—˜—˜—“™˜›š˜–—˜™—›—˜˜–™œ™—˜˜™˜›™’™™™—˜”“™—˜–˜™—š–˜•—•š—––›–—–™——š–š˜•˜”˜š——˜˜—›˜˜—”•›˜˜”“–š—˜˜š–˜——™•™˜™™—˜˜—”›—™™™–˜•˜™˜š˜˜š˜”–—›’––˜—˜šš—–˜—˜˜•™—–›š—š˜–•™›•˜•˜–˜›—˜š™™—›˜™œ—™šœ˜™™˜˜›š™™––˜›™˜–—–œ˜™™˜–œ˜™œ•–œ˜”›—›š˜—’—“˜–š˜šš–›œ•—™œ—”•™™›——›’š–™–—œ––›ž—˜—’—’™š˜•š•›—˜—˜“œ˜“˜™˜œ˜–™–ž™˜–“™™œ—ž–™–ž˜˜™—›™˜—ššš™••™š™˜™—›•œ›š“–—›—•”š˜š˜šœš›š”šœ•”—˜—˜”š›™˜™™—–žœ˜–›—””“›–š™›—˜Ÿšš™—œœ˜—š˜•››–š•›–˜›–˜š™™™•–––›š˜œ›š–š•—–š›—˜›”—šœ˜™š˜š˜˜œ˜œ™“𙕒›››™””—”š˜—œ™›—š›šš˜••š˜—™˜™™–˜–“˜––œ˜ ™›œ™™—˜šŸ—™“•—˜˜—™›—žœ˜“–˜—œ™›—šš›–™—•˜•›˜˜˜›šš™™™˜˜™˜–Ÿ“˜——˜œ™™—œ—š“›˜Ÿ›——›”—Ÿš”•—œœ•˜”š›—•™˜˜—–¡–™—™–˜”š•˜™”“™œ˜™˜š——™›š•˜™˜•—’•š˜—˜˜šš›™™˜š•˜———•”ž–—š˜˜™™‘”œš•˜—”˜––™œ›œ™š ˜˜”–”––—•˜—Ÿ–™–‘–›™•˜™˜˜™––š˜œ˜—•˜™—˜˜˜˜–š—™™˜——™›™˜—”™˜˜•–˜——œ˜——’˜™›˜—–š——˜––—–›™˜—˜š˜™˜š—™™™›———™™™˜›˜—˜–•˜™™™˜˜—˜™˜™—™œ™™————–™›•——•—˜–˜–˜—š™˜——™—™˜˜—˜˜˜˜š˜˜˜“”——–—˜–š–˜›™•˜—˜™——˜š™˜–™˜—™˜›ž—˜š™˜™—–———™—™š˜—˜š˜™———š›˜˜—™——”•˜˜š—š›–—˜’—˜˜œ˜—™š——˜›™›š–™˜š——™——˜š—˜˜–›š˜•—–™™˜™˜™—–˜—˜–˜––—™™“˜—™——–—•˜—››–˜’™š—Ÿ™š•˜˜–˜•—•—›š—•›™–’˜•–˜•œ™—›˜›˜˜—–˜•›˜—••™”˜˜˜–’˜–•™——™”—”•™š˜š™•š–—˜š—•š›˜“”˜•˜—˜˜’–”š–˜—–˜™•™”—œšš™•š˜˜˜œ—œ–—˜š˜˜˜•——–˜—“—œœ›Ÿš–˜˜™›”™›– š˜™—˜•— —›—˜—™˜šŸ™—š—‘˜–—›ž›˜˜™˜š–˜‘—˜˜™——šŸš––––˜˜˜™›—”–™š”—•”—–—”™œ–•’•–˜˜–™“˜ž––œ•š“š˜™š™˜–š—˜—˜›™“—™’™š‘™˜™‘¤–™˜˜˜˜š•–™—š”—›•––——˜——™››š™–”š˜”š™˜“‘™›šš––Ÿ›’—™”–‘¡———Ÿš˜™”šœ—˜”–“– —˜“›““™”˜š˜œ™˜—˜“——™–•š™––ž™—›–——˜›—–Œ˜–™›˜œ˜™™•˜›“ž›˜‹“š—š˜šž–˜—˜–˜–™—˜–—›—˜—‘—˜™“œš œš™–š”˜žš”•–’˜““›™™—Š—˜™˜™–——“˜˜™–”›˜•š•‘™–”—˜•™–•˜›—š™– ™–—˜™œ˜™”—•——˜—ž™š˜–––™™˜•š—š›–˜™–—™œ™–š”›– šš—™™š––™—š—™˜™–“˜™™“––—™™™—–˜“›“˜˜—–˜˜™–”‘˜˜œ—–”—˜Ÿ•—“”™˜˜“–˜ž•’𙕖•“™˜———¡•”—™œ˜ž›˜•——››–›™˜™š—˜˜–™˜•––¡ž‘—””—˜š™—™˜£™–™š™˜—¡—œ•˜•”š––—”›š™˜™˜•š“™šœ™™–—”—™—›’š˜‘——ž—™•™–™—™”™˜“ ––˜˜š˜š”™˜™–••–š—¥–˜Ÿš˜šœ›™š™›˜š˜™“›™œš™—™–š—˜œ•™’Ÿ™™™š˜žŸ™šœ›™˜–›™¢—˜š™˜˜•–””™˜˜™˜˜–˜™›—š””—•—¡™ž–Ÿš›žœ˜ž•œ™š™‘˜˜žš—š””˜šž˜”˜˜™™š™œ”žœš”›˜—˜›––™”™™›˜š””•––š˜”š–™™™•—–••—ž‘šššš–—™™š™š—˜˜›ž‘˜™›˜˜‘Ž›“’™™˜—”˜—Ÿ—™š•š››—ž“™“›š”—š™™•–“–—™“˜”™™—ž™˜Ÿ˜—”œ”˜•˜™–—œ™–š¢”šš—Œ‡™¡™š˜”––•™£–•™™•––š˜š•™™–” –˜˜•šœ™›—‘˜˜–•™š–š–›‘—š–”‘˜›—”™–™—š™š˜¡š’–š˜™”—’–››—•š˜•šœ—›š˜—•“—™š–š—“”˜š™—•˜•™’˜˜—™ ——”›”–œš––˜––˜˜—˜™™”—™˜—šž›˜—˜š•—˜”’š—˜”“–—•™™™¢’–”••–™•™—˜—•—–—Ÿ˜“Ÿœ™™š“£––š›”—œ–œž˜  —˜š™™™š™—™–›˜–œ—¢˜˜——œ›œœž˜—–•–˜””š•›š—˜—™—ž›”–—š™”—•š—•›––››—Ÿ›˜˜˜‘™–˜›•˜—˜–™˜–™š˜™œ˜š™–™˜˜™™™˜™š™—œ™š™˜š—Ÿ——Ÿš™˜—™›˜•›–˜‰š—˜™š—˜•––™šš––•˜””˜˜š˜•”––™š–™˜’š””™œ˜˜™—›š”–•––˜š•œ™•™—•ž—™™—™Ÿ—˜“–—’¥—ž–’–—˜›–˜˜—œ˜˜˜˜—˜””š¢š”—–—š––™›ššœ–š”œ ‡œ™™™˜š”™˜“š˜š›Œ™š˜˜—‹˜—•’—™˜œ™—”™™˜˜š•™˜šœ˜”™••——•—œž™——™•“—˜—˜—šš—š˜œ‘›œ™›‘˜––—˜˜”›—–›˜˜œ˜–š—˜š™—–——˜™—œ—••——ž™š•˜•˜•™¥˜š˜šš•‘™•—˜˜›˜›™’˜™˜”–˜˜›šž”™™™˜—–š—™š™•žžœœ–‰˜Ÿ–™š›”‘—™œ–“—›š™˜˜œ”˜˜›•—––›——œ˜™ššš¡˜š–œ–•—™™—•–œ™™“•›˜˜—œ—Ÿ“š—””˜ž–›˜‘—“››˜–š–™’™™˜—™™šŸš™š¢Ÿ•™Œž–š˜›—‘š›•œ——™™–š˜™˜š—š—›š—˜›˜”•™•™‘’™¡”š—˜–š•—›š–›š–—™™œ—š—š˜—™™™›—™˜—•—”“™•˜™˜™œ•”›˜™•–™•—’š—š–™˜˜˜œ¢˜•—•”—˜–›—™›œœ•˜˜—›™–—˜›™˜š˜—˜˜ž™——›™—˜•Š˜–“š—™˜—›™‘ ›”™”—œš™˜–˜•š•š“–™™—™œ“•—š—™’–—œœ˜šš“›•˜•š“›•š•š—š—™—˜™—™”š—•™˜™˜œ›–›š˜–œ•›—–š•¢–™››•šš™œ™••”–™™ž˜šœ•ž••™˜˜‘˜˜–™•œ••›•–›—–š›—–ž–——š˜˜™›‘™š——›˜™—“Ÿ’‘—ž–™•™–”£™™”—š—””›š“’ƒ–˜™˜”™š“˜š˜œž—„Žššš”œ”˜š–š””›——¦˜Ž¯•—˜“’™–|˜š•š•”„””—• ›š™ ŠŒ“’•˜œž“Ÿ«˜šŽš–•š••™‘Ÿ“”‚˜›—–‘›••Ÿ•£•–˜™¢–Ž”—‘“›—–‘››”‘©›œ””–›˜™—‘™Ž–‘™•œ˜˜’™–™Ÿ™—–—ž’ž™œ™•š”š›š’š˜ˆ–”™““’”˜›’ ™–‹”—™ ““››™›™•’––š•™›•‘“š•¥›š’™—š“šš˜š•›–š—˜šž’™—›œ“ž›–š™›˜–ž•—œ˜“Ÿ—“™—•œ˜™–Œ™›–š“š˜’œ–•™Š•–˜˜›š—–—˜—™š˜“–“š™———˜—‘”˜“—™• ™˜—›œ—›ž”–”‘š‘–—••—™œ˜™™”Ÿ˜˜˜˜™™™–˜œ˜˜Ž–œ™š—–•›–”œ›š–žž•–˜’™˜š˜—„›˜–›™˜•˜›——™š¥•–™œ‹¤›šš‘—˜¢”˜˜˜––™˜Šœ–˜™š¥¦ž “—˜’¤™˜–™™•¤–—š•˜”˜™—œ–—”–Ÿ“›–—š™šœ˜––›™˜š—™˜’—‘––˜˜›œœ›™š™›—•“— ˜•™“š¡œ—“•–˜–›””’™˜“•š—›‘ ’šš›¤˜™œ— ™™’–ž—™›”™‘™š›”ž˜š™––•š–˜’šŸ¤˜˜Ÿ•”’˜›”˜’’—œ–™›ž—™—š¤™œ“—›’–˜š˜’–——š•Ÿ“™™–”••”’™–——”œ“˜—œ–™™—™Žš™—˜™’˜šš™–˜——–—’’š––š”š“•››–‘–˜š˜‘–›™•’–¥˜—šœœœš˜”—™— ™–”œ““–ž–—™˜˜˜š““”š–—›•’™—•—–“‘›˜—š•˜˜—Ž˜š•šŸ˜–š˜›”—š™œ‘•œ˜™›™Ÿ–“›™˜“‘™—˜›™˜™˜›—”˜—žš—–˜–˜œššŸ¢š—™–“’›•œ—™œš˜˜˜š–•Ÿœ•˜ž˜’˜•–›˜™˜›––™—•›™Ÿ—–œ˜š™™—–š—‘•–™—™—™£•˜–• ™›˜œž’™™›™•–—”šš”œ˜™œ›™“•–—”š˜”›”œš›˜—œœ•–¡™™–˜› ›››–”˜•¢š™”˜™•˜›ž”™™—”Ž˜—˜™šš”™—•œ““–™ ”˜Œ—™•™—Ÿ›™“—™–š‘™™››–š—œ™›¨”›šŸ›š™Ž”£–™š—•™”˜—šœ—šš¤™˜—“”ž›–œ›œ–“–š˜–•œ——––’¡™–œ—˜“¢–š›Ž——•—œ–™š—¡š¦œš‘›˜›ž˜”’œ˜™š™‘›¥˜™˜›™œš›˜›––”˜—›š“–Ÿ›—™ž“•˜–’œœ–™—˜™––——”•˜—’–˜—œ›š•›™ž—š—š’™—™››––˜—–œ–—™™š–™–™œš˜œ¡”•›™›˜––š™™Ÿ›™”•‹˜– ’•›– —–˜š—œ”˜—•–“¢š—–š˜™–š””›™™›—’Ÿ”š——˜˜š˜Ÿ™˜™˜˜š—˜š˜˜“˜š˜—›–™–˜™•••–𙑖–™—›˜™–‘•”›˜™—’˜š”“›’˜š—›—š™•œ›—›˜˜–––™“–˜™š˜›šœœš—–™›—šš›˜™›—›š›–š ››˜š˜Ÿ–—–™š›˜˜“˜›š—œŠ—˜–£œ™——š—˜—•—™œ¢™•›—™Ÿ˜™•˜›–”–›–ššœ—“š™š–˜“™–š“˜›†‘–™›“š––—–——š ›™£“—–Ÿ™’—š–™™œ™˜”˜Ÿ™——™–‹–˜›™—˜˜Ž™”šŸ•–——ž ––––™—˜œ˜˜–™˜–˜”˜–š˜—š•˜—Ÿ˜”—˜˜–˜™˜˜š–š•™˜—”—•›–˜–Ž ™–—™›––Ÿ—œ™—šš˜˜˜—™œ–—˜˜œš”˜——˜—›œ˜—œ•—˜™š”™”žš˜š™˜™•š•—˜œ˜“—–™—–™“š›–˜š™–—˜˜™”–˜’–š˜˜™–š“˜’—˜———–“––––™¢›•“™”—™™˜™”—˜••šš˜–››•˜š–Ÿ”™•˜——š˜—˜˜—™“˜™˜š˜¦˜˜™—–ž˜––•—™“˜•™šœ—š›šš—¡›”œ™‘˜š–—˜›™™š– ™š–›–˜œ˜”—›™•‘–›˜—š•˜–—–˜•™›š—šš”™–”“——”–—š˜™›™™”˜›œ––˜˜›–‹™ž—˜˜• —–™˜—žš“–˜–ž—˜—˜™—’ ™˜›—–•™˜”’‘š˜’›—˜œšž›šŽ™•—›œ˜˜˜¥˜œ—š—–š—¥˜˜•›’—™œ—–’¢œ•œ™˜—•œ˜˜•—–œ˜™œš™•šŸ›žš——‘™š—•œ›š––’›–š–£—š“•—™™“™—Ÿ——›˜š“žœ’Ž˜˜—›šš™šš˜•–š˜—›£˜ ’™’›˜—˜™™“‘‘•™•—˜š•—š˜—›˜—˜˜š”•—“•˜˜™˜•™šœ”›™˜–˜”–š’™˜–œ˜—˜š›˜š—˜––™•—˜™•”™”˜šŸ—›šš—›˜˜“ž™—–˜˜–•—•–˜—›”™–˜™™——˜—–™™˜˜—–˜——”™›—–˜–—”–—™”›˜•˜——–”›˜–™˜™—˜’˜˜”—˜’”—˜˜š‰˜˜•˜—™™—˜”š˜™–“–˜”–™—–——˜—š”•šž’š™Ž——Ÿ‘”—˜–™˜—š–—™••–˜’”—”™š—š—™•›–˜™‘”—–————™›”–•›˜™˜›š˜˜˜”š–˜™‘›•™››•š–—š——˜˜™¥›—ššš˜š”Ÿ—›˜™š™˜‘–˜š—™‘›™”ž•˜•–›––˜ ž™˜—••˜”™”—™›šš™”šš›š˜›™•š™›•—™˜”˜™˜’œ›š—™˜™”˜œ˜œ˜›˜“™™›—“•–›—–˜——”™œš˜——˜•š”˜˜˜—–Ÿ––’™žšš›˜™—š••˜–™—žšš–™–™ž•š—™›——š™ •ž•˜›ž™š™™•š•—”˜™—’–˜—–˜˜•›™•– Ž–™–“š“–˜™š—˜›™›šœ™—žš™‘¡š—™™š—›—š—œ—›“›œ›•™–˜˜˜ž˜– ˜š›“˜˜—™ž˜––—•™™™˜—–œ”˜–‘™š•—›š—–“œ˜˜™˜—™˜•”“–˜––™˜š–˜œ›™œœ™™–•˜—š——˜•›” ™˜˜œ••›–““’™š•˜˜–š•˜–˜™›™š™œ˜”š˜˜—•––™–š–œ˜”˜š’——˜–•™™”™š˜™˜š–—™––š˜–”˜œšš——™œ•—™˜—™™•—¢—››˜—š›™›š–™š˜˜™˜—™œ™™˜˜˜”—–˜™•—Ÿš›•˜•™˜——“•˜“š—–˜šœ—™˜š™˜–˜™•™¤™™›ž—˜š˜™˜›˜™ššž‘’šš—•“–š—˜˜¢™š˜™–™˜˜™š—˜˜™•˜“™ž”—˜˜–˜˜•š™–™˜–˜œ•˜›™•ž–š›“˜™”—™™”™˜—œ—–˜›—›˜˜™–ž”—™™š™›”œ™š˜š”—–––ž˜ ™™ ‘–ž˜™™š–”™˜—œ••™˜˜’–˜—™™˜—œ—™š£‘ –˜™–˜˜›—–˜“˜•———––’•œ˜›š˜™™—“𓢓–š™œš¡‘œš•˜—‰¢ž™™š—™š’™™——–‘”™£’”™™™˜—›˜š˜—™ž••”’—›–—œ™–”‘—›—•›—––™™œ™—™š••œ—˜—œ›•—œœ—— œ—–—›™——œ˜š–˜•••–™•˜——–›™˜—š——›˜—™— –œ›˜š˜–˜“™™——–••›•–˜•˜—›šœ“’™—˜˜˜——œš–™˜™˜›˜š•›šš™––›—™šš™ž—•Ÿœ—™“™š›œ–œ–———•”™—˜™—–¡˜™˜ ›˜™–™™™˜›”š™˜˜˜™•š—™”—œ™œ˜–——˜—œ—š˜›˜š•žš›ž–—›™‘˜˜›™—š˜—™—’š““˜–—•—™—˜š•—™š˜——–š˜—š•™–˜–’•˜¤˜— ™––››˜–›™œ›”—–˜š™—™œ–˜•–—œ–™˜ššš”›”•˜¤”—œ–˜’——˜˜š™˜—˜“–›˜™˜™Ÿ–œ˜˜“–™˜˜™™™™™–š”—š˜™—™—˜˜˜•“™–••—––›™•šš”›–—“˜˜™’š˜•Ÿ› ˜š–•™š˜–š›šŸ˜™•—™›—šž–˜š›—™‘—š“˜˜˜›š“ ™–˜–›Š—™˜™˜•›™˜š™—™•—š™š“™¡˜›™˜“—’“™šŒ—–£˜™”šœ˜›—›”—ž’—›˜œ˜› š—™™™™˜–™“šš——˜•›•———•–—”™Ž›–”˜•™™–˜š™™——ššœž˜–—‘—‘Ÿ’“™—š˜—–›—š˜˜–—˜™˜›Ÿ”—–™“ž˜””–—˜˜—›˜Ÿš•—š˜›‘“–œ—˜¢›—¥˜———˜•‘•‹ž’œ—Ÿ””“–šŸ¡›™˜˜”›š˜›“›—”“—™¥˜“™ššž™–™–™—•˜™—žŒš™˜™–˜š”ž›”žžœ˜ •˜–‘–“–™œ™ž–”£›™Ÿ–œ¡”’›Ÿ•œ“™”—œ’––™—š“˜œ˜–˜™™˜™”•›™•–“”•––›‘¡™–—•™™–˜‘—˜™š›Ÿ•œ™š™›˜“–˜¢—‘•––“œ™•—˜˜œšœ–—™™˜š”›˜–˜“™—–˜—›”–›˜–™˜™’š—˜™•™™™˜›˜˜–šš™—›š˜›—˜•˜™™˜•—Ÿ•–š˜–š˜–œ˜——’–˜˜—–™˜›–Ÿ˜–œ–œ›’™––˜˜–˜˜’š”™˜š“—–•Ÿ˜™–œ–—›——˜˜“”™˜–˜•›—™›•™›–˜™”˜––›—‘—˜•—˜—™š˜œš˜˜š—™˜™œ—˜•˜œ›š“—”™š—˜˜“˜™——˜•™˜—™˜œ—ššš›™›–—˜”›˜——™˜šš”˜œ•—šœ——–˜—˜žœž˜˜–‘˜˜—–˜—š–›—“œ—š•—™“••š’Ÿ‘¡¡˜——™–›š™˜™˜—”–———–™™—™œ›—™˜–˜”š™š˜—˜œš˜ –œœ–™“—¤˜š•™˜•™˜“™™–˜˜•–•—–——˜—š––•–ž™š—––ž˜™™˜—š˜š™—–—œš—•ž––š›™™™š˜•˜œš™˜£—™š™•š™—“•˜˜–™—𙓛 ”—›™™–—‘—˜š™š›™—™—‘ž˜›˜›˜’–”™˜˜•—›’˜••—™’—›•–›¢”—–™˜š™š”›™š—“—ž–š–œ—™›—˜••–š›˜”™–š˜š –—™˜™™—™“™•˜›–—š›™Ÿ–•”œ”“š—›˜š•–™—˜”œ—–—š™™™–Ÿ—™•˜œ–™š˜Ÿ˜Ž“˜™™“™˜–•”𙑗”˜˜–ž—š”–œ’™š™”˜š›—™‘˜˜˜—˜ž™“—––žš—˜–™˜œ—™›˜™™”•œ˜š’–ž˜šš–˜•™ —˜––™š“–™—“›—š——˜•–—›•šš—™“œ–ž—›–™•œ–™“šš›˜–¡•”•™˜•˜šœ”™š™œ¡’›—™›™•’˜—š–™›—™—˜—•—›š—’–™—–•”’œ–˜š–™™—•–š™œ™š™››Ÿ—˜’š–‘˜˜žš‘ ›—›–™˜š˜‹•’——–š—›˜™—–›–˜——™••˜—Ž˜›—™’—•–—–“›˜™˜–œ––˜™˜—œš™š—’™š–•›˜›˜™—›””š——–—™”šš—˜Ÿ—™˜˜™—˜™›™™š•˜››˜‘—–Ÿœš•š˜”‘›Ÿ™˜¤›š‘œ™•™˜–˜›“•™™™•£˜™˜˜š”–•Ÿ—”—˜–™œšœ——™œ—”˜™—˜™šœ•—–˜’—”—œ™š˜œ•ž•š›˜ž–‘•š•—˜™˜••˜˜˜”™™“•›•”–˜•“–—™—•••›™˜–˜™šŠ˜—–›šš“š›˜™™‘•™–—“™—œš–œ–Ÿ–œ˜•›š—˜›–‘˜›—š—”š—–˜›œ™—–˜–——œ˜Ÿšž—˜™œ”•™˜–—•œš˜™˜ ›š••œ˜”™™—•˜œ˜˜›”™˜™œ–––•š‘˜‘—–š•˜˜–“œ™›—™˜™› •—™›™•“žš—™ œš••˜‘•–Ÿš›‘–••š™œ˜•˜–—”•šž “˜—Ž‘˜˜••š—“šš™—˜˜—–˜—–š¡ž––š–œ”•šš“—•™™¢“•œš••™™““——šš’™œ•™–”˜™—“—›’–˜–”˜œ›™™˜šœšš˜œ—’˜š––˜•¡˜œš˜–—•›”™œ˜—š›˜˜–›”’–•™•˜–˜“–˜“›–ž––—˜š–˜œ”™•–’ž˜”™˜•—š”’”œ–•™˜˜š™—˜—›šœ”’››˜œ˜• ™™•–š—™™˜––œ™™•’˜™˜œœ›”š˜””•”’–˜—“—’–¡˜œ˜Ž––’—–œ•š™—“”•——™–˜›•˜™“–“™•Ÿ–’™–˜“œ›’—œ‘˜“˜š˜—“•–™œ’˜˜–—œ›¡œ–˜’™‹˜˜›™›™˜Ž›˜›˜˜—Ÿšˆ™›”˜™—–œ˜—™––š›œš˜˜˜—˜¥›š”™—‘œ™™•——˜•“›“š™” —”–”ššž—––œ——›”š—™‘˜˜™™™“™˜˜˜š˜š”™•™Ÿ›š˜˜–˜—™˜›–“—›˜˜œ˜™š“œ—š˜›š—™šš™˜—˜š“™“™š™•–›ž¡š˜›—™™——›—š–œ˜›•›–—™‘œ––•—›•˜——˜—š–“˜ššœ——œ””š—”˜—™—š™–š–š™›”—–••˜—Ž™ ˜šœ”˜—–™“™•—œœ–˜˜˜ž˜—‘žž””œ”•™•–—žœ˜–š›——™’š•›——œ›–™—–˜˜˜––•—š“˜™——”¡—šš•š˜™ž™™˜˜•—›–—–™––˜˜˜žž”—ž•—˜”˜•œ˜˜˜ ™–—–—š›—™•–œ¡—–•˜––š—™”——’˜š–›–œ—™˜”˜™•˜“’——šš›˜˜™‹•—–™š™˜™˜—”›˜™——–˜œ–——™˜•’“˜”˜Ÿš™›—”™—–——›™’˜š—–šš™›œ”—›™™˜—–•––¢˜˜•˜™—•–šš’‘›•˜˜—™•——”——›™—˜›™—œ—¢˜š˜–¥˜ž–—˜˜““£™››™š™›”•šš™˜š’’™š–”–™¡˜™œ™˜™•Œ˜˜•—–•”¦™–”˜—”–——šž–˜•›™š™–››—™–š–———œš›—˜›–›—™•œ–˜š”™–™–˜”–œ–™™š•™ž•›˜™›˜¯•”•›šš›™—’˜——“Ÿš˜™š›œ˜”•™™”˜›—˜—›–—š••––žœš—˜™—˜šœ˜–š“™–—˜››•—˜™–—™™š‘”˜—“˜—š›—™Ÿ™—›••˜™–—˜™œ—œ—””—™”™˜–š˜•˜˜•››™–™˜šš’—˜˜š‘–š—˜™˜˜™˜™˜f›™”–˜š›™™—š™™šœ”•œ—™—–—˜™¯“œ›––š—•˜˜›–‘—˜š•––“———”››“˜•š——šœ—˜œ–˜•›˜™˜˜™š˜”˜˜™™˜š—š›—˜š––ž‘–”›–™—•Ÿ—™šš–š—š˜—˜˜žš™˜•–™˜—š•‘š––¢•¢–›—š™—›“› Ÿ˜œ—•™ž›˜•—“˜šœœ˜”Ž–˜š˜š™—˜™”“™œ›ž—š“š—š•˜—–Ž•˜•˜œ“˜œ˜š—–˜œ˜›˜’ž–š—•š˜—™˜ž™“–—˜——™–™Ÿ• –™œ™—™—˜—–œ››•™“™•™˜“œ™—•–™š™™–™ •˜•—˜—˜—”š‘œ›˜•–’™—™žœ™••—œ›™•™•–•—˜ ™ ›™™›™–š›—–˜”›™œ—™——˜››™š—š”—œœš–›˜–£‘˜—œ”š—˜™—˜›™–˜”˜˜–˜™•—˜•–”˜š”˜”›˜—˜œ›–™™—–˜˜™žš™š›””˜™“—œ–š“–—–•œ˜›™›–”˜˜˜—šš˜˜œ™ž–•š›™›—º–—›••›–›š™™œš˜—µ“———”›–—™››– œ—–•’˜˜—˜–œ•˜”œšš–™——™˜˜™œš–˜”˜•™”–˜”™•— •–›”˜˜–––˜—•—™˜—“™˜•’˜žž“™˜•˜——”•˜–™™—”•˜š›–˜——˜–™š›œ—œ˜˜š˜•–™–™Ÿ—•”˜œ••˜˜˜“—›œ—˜˜˜‘–“—•“˜–”–˜—›™–™˜™¡™Ÿ•—œ•››œ™šš•–˜—–•——šš—› ™œš—˜˜’˜“š–—™›—™˜˜”˜“™˜šš™–•¢™–›˜—™œš“••˜˜œ˜—˜˜š¤–Œ–š“˜™Ÿ™˜š˜™˜–•’˜™›–˜—™˜šš“•–™—›™˜˜š—˜š›™•˜–—•—Œ›——š˜—–™—›™”›—œ˜—˜™’•™œš–™’›š˜Ž”–Ÿ–•”˜–˜œœ˜˜›’™—™™–š˜™™›—˜˜—––˜”™——™š˜œ”—™˜—š‘•š›™”—™—š—šŸ–˜˜”™—•—™˜šš——˜˜š˜˜—˜™˜™šš˜–˜˜›˜˜˜˜™˜š™—™—˜—š˜—˜š˜˜˜——˜™˜›˜˜˜˜˜•–™™˜˜˜™™™›–—™˜—š˜˜˜˜—˜˜˜˜˜˜˜—˜—˜˜—š––™˜š—™š˜™ž˜˜šš——˜—˜™™—™—––›š˜—™˜™———˜—™›—˜—˜˜™–™˜˜—™—™˜˜˜˜™˜–—œ—š™™—˜––™™–™˜—™™˜–—™—™˜—™——–—™˜–˜—™—˜—˜˜˜˜——–˜™—™™———˜˜™˜™š™™˜—˜™™˜™—™˜™˜™š˜——š›™—˜—–˜˜˜™™—˜˜˜˜˜˜šŽ’˜—™–˜š˜–“˜”™—–™˜›—‘”—š™–™—¡ž˜š˜—•™–’˜“˜™–•˜’•™”—˜˜˜˜™’—œ™’š’—”œš•——’——–•™—™—˜”™–ž–”—›˜Š•™œ”—˜”–•––œ™˜š›—˜™—›•™—–™“•–•˜˜™š—œ–˜›–š–——–˜•” —–™–•–˜š—’š˜˜™—–Ž¢”™˜•š–˜™œ–˜›—˜œšœ•˜˜‘—š‘žš™™™œž™Ÿ›•˜˜›”›˜£•›–—˜š›š™šœœ™™”™“˜œ›˜–›‘–‰˜—™’•™˜™˜•”™˜Œ–šœ—•” š™–——š•š— ”™“ž™™™˜™™™—ž™——œš™—š™˜‘›˜›˜”˜™™™˜š›™›–‘›™š”˜›™šŸ˜›ž‘š–˜œ˜™œžšœ“–—–—šš•›’”’Ÿ™š••š™’–™ž˜››™”šœ˜››šž™œ›˜š™“š•“™˜˜™™•—œ—™—˜–•š–™˜“™šœ–š›™¢šš››šœš–™ž—›™•” œ—–›š›œ—š›š›šš ›—•–˜™–˜–™›˜˜™™–—˜›™š——š–š˜•™™š—ž˜•™˜˜›–ž–›–Ÿ—™œž—•“››’––”š——˜™š™š—›š›•š—œ™›˜œ“—šš–—•˜‘›˜—™š–œ˜—™‘•––š—›—–š˜––”™˜—š—ž™˜”š˜š–•š›™™™œ–——–˜“™–›–›•š–š–š›•š–˜™–•—œ›—™Ž—™–™™–›”˜™——˜ž™šš˜—š•”™—šœš˜–—˜™–˜™–—˜˜š—™™••—–˜–›™•›™›‘–•››‘˜—™—”•™——˜—–™™—ž˜—•–”—™—œ“•™¢–™›•™™œ™™š™——–›”—••——˜˜™–™›•”›š˜™œ—šœ ––›•–“™”•š“•”•˜šš››š˜—˜œ–œ–š˜œ™™š›ššœ•™—˜’—œ›˜—•™‘—’•—˜–š™–™™š–˜›—™˜¦˜–—–“••˜–™š˜˜™——•—™™•˜˜•œ˜•™–—˜˜—™•›œ——š‘–˜˜Ÿ˜—˜™š–™••–””œ™›””•™š—™•œ™˜˜—˜–˜˜›–š–•™ ˜™—šœ•Ÿ——–•š™–›š˜—˜™š‘–𛑗”™›–—š“—–š”˜”šŒ™Ÿ˜•£™–•ž£˜™œ˜–‰˜š“˜š”•š”—™œšš”Ÿ›™˜˜™–˜–˜——•ž ’—–˜‘—“•—žœ•“˜™˜”™š——˜”—𤙠˜–—š˜˜”žœ˜•Ÿšš”“š›—˜–˜œž—šš•™š˜”–˜–•–––š“œ˜š˜•š˜˜›’›–œ˜–•™˜š¢ž——–š”š“›”›˜¡–›ž”™˜ž–œ™™˜•ž”Ÿ—“œ•˜“•–•œ•Ž˜™——™™™–•š˜–˜ž—˜˜’”‘—š˜“—›š—™—”š’”™•™š‹–š”“š—›——š™˜™˜–•˜”š– › ˜™›™•™˜™“™•ž™–”“šš™••œ™šž™‘—š””•™›—™”˜›ž™•”›™˜–œ™–š™’š›—››•— ¡•—’•—˜™š˜—™—›˜˜›“–™š˜–›•”š•œ——”™˜œ›™œ—™™“™—˜ž”•—––—˜š••“—˜š”˜˜”˜¨›—˜™˜™™›•—š•š¡™–˜š™–š•˜‘•›™—–“–™—˜œ™Ÿ™˜Ÿ”™œ•™˜˜˜›”œ™š——’˜ž˜™š˜–—“”˜œ“•˜™™“˜˜”Ž—››•‘™™™–žšŸ–˜—”š–™–‹—™™—š“™¡™›”˜‘”˜––—™˜ž˜™š–šœ“¤™›¤—˜Ž››˜–š›š™ž––˜š”–Ÿšššš—™”˜ššš–˜›•œ˜™–˜˜•š•—•Š“™ž›–˜”’Ÿš˜˜–›˜Ÿ˜™’”–™››—™—”š˜——˜–”•›• š–˜˜””˜˜™’˜œšœš˜“—˜—š—™˜šš––˜œŽ—˜•ž’˜– ™—™˜–”›œ˜”—›šš“—”š•˜–›˜——™š–—”––—š™™š˜¢™–œšš•“™”š™–šž–——™”•‘š““—–›˜šžœ™˜•–”’—˜›‘—œ‹˜•›š˜“—˜—–š™—–›—™•–™˜•Ÿ•˜–•–™›˜’˜——šž –œ—––˜˜™˜•š–› —›—ž˜™—™—œ–ž–™š™ž—™——–—–—•—˜˜ š—›—•œš–›˜”“–“š•šš•™›œ–œœ–™š–—˜•——š›˜˜—–š•––˜”˜—•––™‘˜›˜˜ž–—”˜›–”š˜•—›——“–—¡˜™™›–”™š–™•š—–š””•—˜˜—–›—˜—š–™˜œ™™™›š™˜—˜˜›››˜—Ÿ‘”•–˜˜•–’”–Žš˜–œššž–˜˜˜žœ—š˜œš› ™ˆ—–––šœ——šœ—˜š™˜˜———‘–——š—›™—”•š™——™œ—™–š˜–—”£—™œ™——™¦•˜˜“““Š—š‡–™™—“šš˜”–˜›™•›¡¡œ™š—ž–™“—”—›š˜™˜šœ›–•˜™–œ•š˜™’™˜˜›™˜˜›˜˜™˜™—˜™•˜™•˜Ÿ•—“••š–—™œ—–•šž—•—˜—˜–˜œ–‘›š–¡™—›™˜›—˜›–ž–™™“™šž–™˜˜“’˜žšœšœ˜˜”••—›–•˜Ÿ™š“¢šœ™–““˜“œ™–˜˜˜šœ–––˜œ˜˜–—›–—𢛙˜œ–œ™˜—˜š”š”™˜˜™–™——•”ž–———••—š—–—™™™›™–ž™–›š—š–›—šŸŸ˜™‘—–”—š”—›™“’™™——š™š˜——•š“›——–¡˜™•—˜œ—›—“—••—›“—”›™–•šš˜—•——˜š˜•”“š™Š•——›™—š––˜—š–™™ž™›˜›˜š™—˜˜—™—˜—™•˜›’˜™œœ˜š–™•˜š™˜”•˜œš•›˜™›š™™™›œ™›˜š˜˜–™˜™˜›•™•”™—™œ•˜œ–—Ÿ˜ššš˜˜œš—š˜–•œ–œ™˜˜•—š•–˜””›˜œ™œš˜›˜–”—”œ™—š›™™™™—™–™™—˜š—–›˜¢•˜›—©‘™˜š˜›œ——“™˜—•˜™š˜—“ •”›šš—›—˜˜˜•”–šœ˜˜–™–ž š™˜–Ÿ˜”™—”–š›š›•››—”––™™˜—˜—–˜”—š’š™——˜˜š••š›˜™“–™š—š˜•™œ–™š™™—˜››—˜œ™—™—˜•¢™˜˜™‘Œ™˜–••”˜œ˜”™š˜”™š™––˜š›™—”–˜š™›˜˜”›“—˜—˜˜›–š”ž˜›š–˜–’™˜—–š’›—•“™ š”“–˜“šš£˜™–™›˜˜ž˜˜™Š––œ•š—™š•˜˜™¢—™™š™™—–™››™–•”•ž˜“˜Ÿ”••—™žœ¡š™š˜˜–›¡˜—–˜——™—–œš–›˜š”œ˜“›™––š–™™–——™š—˜™™–——•™™•œ—›–™˜™œš˜’—™—™—–˜—››˜˜œ•—‘™™——›”–œ–˜˜›š˜™š–™˜›™•™˜›€˜˜–•™˜—™‘–ž——žž™˜˜˜•••”–œœ™—œœ™–˜•š“›™•”’œ”™™“›™˜š™—˜¥–˜ž˜–œœ”˜™—šž›”›˜•”˜ž—˜•š™—–›š™›”š˜•™–‘——˜š”œ™˜˜™•˜››™™™š››œ•š˜ššš–™–˜—˜–”››˜™š‘›˜—ž——˜••—˜›™™›”›–š™–——›™¢•‘”——™š–œ—œ“–•›™›–š—™™™–™™˜•˜–——š–— –—šš˜›œ˜š›™”˜ž”•–šš˜˜˜—ž˜›˜š™˜ž™˜˜˜˜’—™›š’ž˜”›¡––¡•™—”˜™˜›—”™“˜™——žš–›™—‘ˆ™™˜£—˜˜•™›˜”˜–—𔓙œš™——œ˜˜–•”™™–ž™˜•›”˜£•—˜š–•—–š˜—˜šš˜˜“›–˜™šœ—•–™—˜˜–™ ›˜•£’™‘›œ™–™Ÿ˜™•™™š™–›™‹–˜—š’•š•“™–›™”š—š™—š—”š•œ––™––™˜‘–˜¢—¡˜“˜–—•šœ———š’”›™—–˜–™›˜—™—–•œ–˜š——™— šš›™›š—œ™••”˜˜™™—šš™œ–—ž—™—˜›˜–›šš˜š˜šš™›š—•™”˜™›•™™”š–™“š•—–—š˜˜‘¢’”•˜˜–™–”–˜˜–’˜—••œœ˜•Ÿ˜™˜”—˜™œ—›™–™™™™›”™˜•™š—”—”š––“™–—˜™“˜™”›œ˜™•–—™˜–˜™•—™š¡—™˜—˜™—˜–——œœ™—š™™˜––——œ”•¦ž–™˜˜œœ’–˜——•“˜™™™—ž™œ–š™™˜™ šš—–˜œšš™””˜”–’••—–˜‰™–•˜ –š›™š—™š˜–™œ™˜˜’–Ÿ—˜™š™ššž–“šžš˜œ›Ÿ“•—™–œ‘›˜™š˜•—”˜›–“™••ž––™–––¡˜’œ™™™˜š™–™–—˜••“š˜—œ™•™Ÿœ’ ˜••—“•˜œ—ž—••••›“š›™– ™˜ —™›Ž™—”’£•’˜–›”–™“–’›”—–•œ‘›—˜”š™™”•˜˜”šœŸ—“‘™–““•š˜˜˜š—‘—”ž™—–‘™œ™™™›š•››Žœ–—˜˜™š•——“œ–˜“œ•—––šš’”œ——œ———š™”——˜œ™“›“‘—–—™’œ›˜¢•˜›–—˜’•— ™–“››—˜–˜Ÿš˜•’—š™–˜™”–˜™•–™—•š—™š™˜™—£™—™™™›™˜•˜šš•—“™œ›š˜š˜™˜—˜™˜™™™–—˜šš–™››œ•–˜˜š•˜”˜—•˜™œ–—”˜š›™–™–™˜›œ”›˜ššš˜›Š—˜›žš¢˜™”•œ–š™˜™™˜–šš–š”•™”——Ÿ˜˜ž™—›•šœ—˜—™™•˜•™šš––™˜š™˜™••šžš——–›—•˜ž˜—™™™š›––—™•›•–›˜š›–——›˜šœš™™–•›–˜™˜—™œ—›Ÿš›˜•œ–˜›—–š™–™”™ ˜šœ™•”—–œ–›™˜›–›˜•™™—˜—”˜–šž˜—˜–––š”—›”—˜››š™•–˜˜™›•›–˜˜œ™•” š˜›—•’—œ–˜š™Ÿ—™—˜–”–˜™˜”™š—”—›——”–——˜”œ’’–˜˜˜˜‘›žš˜›™•š—•™–œ’—–˜˜š˜•™—–”••–ž–š—˜—›˜œ—•–™œ–”˜š—“–›š–—–””–™š”™™—˜–“™“š˜’˜”š—–™Ÿ•™—’šš˜——™–š“––£˜”———“•˜ž–—Ÿ™™—™˜˜•™˜—“——–˜˜š•˜š”›š’™™•—”™–™¡•œ™“–•™˜—™œ—˜œœ‘ž›š˜™™•–™˜šœšš•›˜—˜—›–š–™–™˜˜–¥–£–™š—™›š–›˜˜••ššš——››“˜˜™š™•—š›ž—›œ˜•˜”›–—›šš™—š›˜˜š›˜–š™™™–•˜’–—§–˜¢š–™œƒ—‹—œš¢—ž–—›–——•š—š˜œ—™™ž—•–”—œ˜œ™˜—œ™——˜——˜š“•œ“š—–”—š˜—–••™¡–š›–¡œ–’—˜—™•›˜”˜™œ™™™–—•ž—”———˜™–™—›™••™˜™™™–Ž›—•™‘˜˜™–”˜š–—™›˜œ‘›•”’™™—˜—œ£–”š—“™—™˜–š˜ ›˜—˜—˜–™˜œ”–™’˜˜˜—™š••™•›–—– ™–™˜”š—™—š–—£š™™˜™›—˜—˜•——–šœ•›š›––—›˜”šš–––““–—Ÿ›˜˜™—”•—™•˜›—–œ•——•™”–š•—˜œ™ž”—˜—•ššš–›—šš—›““›˜•˜“”™•›––™šžŸœ›“™‘˜–™˜”–•–œ›—›’›™˜™—•—™™’œ–œ˜•˜š——–˜–———™¨“˜—™š”™™š›˜—–’œ›——™–Ÿ™˜Ž–™˜šœ˜š™›•—”•“š–š“––—–”œ“™˜”›—–•˜˜—™—•˜•ž›œ›—™›–™œ˜•™˜˜›š™š™–™š˜—š•›”—–˜›––ž–š˜š˜—š•–š˜‘šžš™˜˜ –›–š–•˜”™š›š™›ž¤Ÿ›˜˜˜’™™š–›˜—–”›—™•–“˜‰›™–œ˜—š›ž–•œ——‘˜ž˜“•”•¤š™”™˜œž—‘•——™–’•—”•™›Œ™——˜›‘˜’›—œ›žž”˜Ÿ–——™˜”›œ™–™—™˜”šŸ—™œ’”—š–™–•œ›–˜šž™——™¢•’–Ÿ–™›–Ÿœ•Ÿ˜š”Ž˜‘𙕗–• —™—›˜š™˜š™•˜–“›˜˜•™˜”—›˜™—–™’ššžŸ”•›–™—˜š—š–™š——™——”•›š™ž— ™œœ˜˜–•™™Ÿ™“˜—”™˜—œ—š˜š™—•——˜ž•—š•‘˜™Ÿš›šš™š˜˜™˜–š›–›–™•”›˜šœ•™•›™—œ™™–˜˜—“˜šš–ž’˜—•š˜”˜Žœ›šœ–™™˜‘–›š™—•šš™›˜•™—––¡–˜“˜™–•¡—›’™˜œ–š•–™˜››–œ— –—•˜™’˜˜–’•Ÿ––’¡™š•›—˜–›˜™–˜š”—–™ž›˜šž˜–‘š–›–—œ—–™š›˜–™”š™™ž˜›——””š–ž™–——™¡—™––œš˜˜—œ›Œ’™“˜”˜—˜•–””—–”—–“””š’˜ •š š“—š˜š—“—™•š•–š”–”–ššš–›™Ÿ—————–‘——›ž•”ššš™–™›› š›•˜˜—›—š˜ž› ™—–™“Ÿ–———šš–›˜›žš™””™™›˜˜•›˜™—š™™™™˜ž™œ™š›™˜™”———ž–˜š™š™”£—•œ˜šŽš–Ÿžž—š˜–—–§˜——™’——˜–—•™™šš–™˜™—›™š‘š››—˜™˜šœ™™˜•—˜›–’—”™˜š•˜š —š–ššœ™œ–”š˜œ”ššž™™žœš—ž—˜–˜¢“›š˜˜—™™œ—•™“’˜™––˜—™™‘•–™—Ÿ”˜¡——˜™››•˜•š˜—‘š˜•™™”˜••— —š–˜›– ˜—”•—••˜•—›šž•¡™•™””™š›—•œ“”—šš–•–—˜—™•“šš›š–—“’™ ˜”•—˜–Ÿ›˜˜œ™˜”˜—™‘—••˜””–‘••𔕕𓔓•––™š•” ™–™—˜—”ž—–—›“˜’™–“————ž–——•˜ž—™˜•š–—›–˜š–—‘™˜™—˜˜˜•ž—˜–‘š—–š——–¢Ÿš™¤–˜˜™˜–›’–—––’˜›˜˜——£’›šš“›•š˜”—šœ™˜•˜¦˜›–‘“žœ•‘š™˜˜˜––—”•›””——›ž™››™˜“˜˜™£›™œšžŒ—™ž˜“ž—›™š™™§š–—•š–›–—“šž”“œ“—š”——’™–ž–˜š”›’•––˜˜“—“—’–›‘šš˜œ••˜™˜”›•œ›–›£“•••ˆ¤š˜“••™—“–“¡š›š–”——š“—˜Ÿ‘š——›•œ˜”•’—˜™–˜–š”—›•Ž››“—š‘›—˜•¡œ——˜•¢››—™ ˜“œ™Ÿœ˜”››˜œš–˜š——š›–˜ž–œ––›•™š“–˜—˜——“›’™•—š”’—˜•™˜•™—˜š—›œšœ˜š“™—š——˜˜˜™™˜–˜—–›“—œ™—œ—˜—š™˜˜—™˜™˜›œ›™š‘’—š˜–•š™š™—‘˜ ™—˜™”™™——š˜š›–˜œ—˜™–™™˜š–Ÿ“™”•™••š˜•›š˜™–—˜——˜™›š¡’‘––˜™—”››•œ—˜•• ˜™™››—”—˜•™˜›•šš–—™—™•˜˜œšš¦“˜˜žŸš–———˜š˜˜•–“’™——––”›œš™™”•™š—–š•—œ—˜™˜–—š—š•™˜—™˜˜——™”—™œž˜—™˜˜—™˜˜›™–—™˜ž˜˜™˜—–—š˜–—–š™›”˜˜™šš——˜˜˜–™™˜™šš—•—š–˜—˜™™™˜———™—˜”˜™™™˜——–™›—šš›˜˜›™›™˜˜—š˜——˜œš—š™™–˜—˜—•˜˜˜“–——›™˜˜›š™˜——˜—š—˜˜™›–œ–˜˜˜—˜˜˜–—œ™›š˜–˜Ž™—™š›—–˜›™™––˜–—™––˜˜˜š–—¡”—™—™š——š™š™–———”˜™•˜˜š˜˜—š˜–š”˜™˜™™–›˜š™š—™™š—š——–™™–ššœ™ž”–š›˜˜•š˜š• ™“››’——šš˜š›™˜“˜˜’—œš•—˜•˜—™—“˜•ž˜˜–“‘™˜˜•—˜˜”›—”š›–•‘•’˜œ“’™˜¡™™“œ˜™ ˜›Ÿ”•š˜”¡ž•™–Ž’ž™Ÿ–”œ•˜˜˜•›“–¡˜–š— šœ–—‹˜œ™— “™”—––¢—•›™“’˜•™’˜ž—˜œ›•—Œ˜œ——•œŸ——–”™—Ÿ–ž—”—š™—™–™š—’›”œŒ—––•—•››•™ŸŽ™’–—žœ˜˜›“™˜¥˜˜”šš˜˜”œ•‘“˜—™›™˜™™™•“™˜œ™œ˜›—Ÿ”šœ¢•˜˜žž›™œ™•›˜š–›šž—š–˜’˜“ ™¢‘™—’—˜—›•™•œŽ–—’˜–š¥š‹Ÿ”š”™˜”žŠ›œš”Ÿ”—”–•›ŽŸœ —‘™›™“›““”’™–“” –˜——™™“˜—“˜›‘”“ ‘›”—ž“š™•–š˜¢˜™—œ–˜–šŽ•—•–š•’˜˜™£š™–šš•š•™ž“˜œ¢¡š¡’”˜—™™——ž™––Ÿ’——•š›™š–‘œœ˜—™”Š“•™•ˆ”™”“™–˜”‘™œ”œŸš£——™Ÿ–œ—£œš ™™–ž”‘¡¦›ž–™™›—™˜›š”™˜—–™š˜”˜š™›˜œ˜—›š––—˜™—™›™›š›˜—˜™š™˜–™™™“—šš—œ››–”˜—š–—–›™—™š‘œ™—š—“›™œ™š™•™—•š™›’’“š•š™”—–›š™›š–””—™˜–š’““˜•–•ž›”š–—–™–“——˜™–œ˜—™—š™˜™š—˜˜˜™˜™˜š–•›˜œ™–™——›—‘–ž——š›’™–•˜››™š˜œœ—›”š™š’–Ÿ˜œ˜—™ž—š—™›™™™šš˜‘—™šš™–™–—ž––›–¡™›™–™–›˜™—šœ–’›•—•™–˜•”–›™•š—™—š›—›•–—–˜—“˜”˜™š ’œ˜˜––›—™•›™–‘ž™–˜™˜•˜š™š™•™—“•™˜–’™–”™™˜œ˜š˜–š”“œ•“•𙕔’œ–™”›œ™—™˜—˜–˜šš•”—”™—•˜˜—’˜•›”žœ—•š–™œ—š“–‘”””™˜™•™—Ÿ˜™•–›™š™™–˜–—š‘•—••œ˜—™–“—–™™—™˜˜›˜˜™˜”˜›•œž—›˜‘˜–™˜Ÿ—–—ž‘›™›’–•šž™›Ž›™™˜›–ž•”¢œ™“™–˜˜–ššŸ–”–˜”—˜™œš™—–›™—š“—˜˜–š•—”™–˜›“•˜™˜“—œŸ•–˜˜ššœ›š˜˜–•œ–¤”’˜›™ž—š™˜šš—›˜š™–˜”–œ–•™——™—–’“›š‘˜š’™—™‘•—˜žš•˜™™—™“š“ž™•—š–—š–ž–˜˜—•—š˜™˜›”–’š•—™¡˜ž“ž–—“–”›œ›—•—˜˜•—’—™—™˜–™¢›™“˜š”œš•˜˜™™š“–ž˜š››—™•˜™–˜–”š–š ——™™˜œ—›”˜––‘˜—‘š’—˜–•—©—™ž™›• œ”™•—˜–œ’–˜”™›š—™—›š˜˜—˜—™˜—𙕕–™™––˜›˜›š———•——š˜˜•—–—˜›šš—›—™•”œ—–—š˜—˜–Ÿ˜—™—˜–—’˜——š™˜˜™•”›ššœ•˜‘“˜˜”˜˜˜–——”˜–—–˜•™“š—œ—–™™’™˜š™š–š——™˜–˜–›•œ™™™™•–›˜—™¥™™š˜˜š˜—™˜˜——˜—”–›š›•˜˜›œ•˜œ™——–”œ˜˜›•š”––šœ˜š™—˜’˜”–˜™š™–š›–š–•™•“œ™˜ž™š žœ˜š›—–šš“™œ’•™•ž——˜›˜›˜˜–‘”•˜••——–’›—‹–™–™˜š˜——˜˜–——š–š—›˜˜•˜—ž–˜–™—™™™™˜—˜›’ž —“›–˜™˜•™•—˜–œ–›˜–˜’—˜™˜—•“–––˜˜˜˜™ž˜›’š––™—–—•—–˜™”𔕖˜•™—”š”‘œ•˜š˜™˜˜šž•˜”—œ–•—”•–™”›œ——˜‘——•£š’™š˜Ÿ•˜ ”œ–•™›–š™ ’–•—š™™˜“—š“™š—”—š–—šœ™ž–˜˜™––Ÿœ—››˜•š››•˜—–—š––—–œš›–™—–™”™•˜™–ž”•š˜˜•—ž›•–›‘š™–—˜”šœ™™•–—š–œ••˜£™”˜–˜˜’•——’™™™—™œ˜š˜™›•™š›–››“•š–––”—•œ—”˜˜•š˜ž•ž–œ––™™™“—“™–œ“™ž”“šœ›• —šœŽ  –š˜•–›˜š“œš›–œ¡œ—œ—•‘™•™”™››“’•–—‘ š¤“™™”™”›—•™š–——œ™˜–š›˜˜‘š”™š—œš’œ–’š˜—“ž–š•› ˜“•—•”—––”–’˜—–––¡¸–™›™›œ—’˜–’˜›—“—”¡–™•”šœš›•›——›“•™–›Ž˜š›™š–—•œœœ˜›—™›–˜–—•–š›ž—“‘˜š”–™Ž˜™˜šš—”“•š—›˜™–˜š—™œ™˜—˜–ž–˜–š”˜œ˜˜™˜—˜™——–”›–™›–’—•”—š–™–™““–––™”•——–“˜œšŒ›——–™–•––˜™™›—–”——š––’™šœ™š‘›—˜››¡˜š—˜—™––™––˜™˜•™ž–‘”—›—–™œ•–§˜Ÿœ–™˜–š¡›“—™ž˜š—œ––•›˜™•—›˜•˜”šž¥—–˜œœ—‘—˜š–˜‰˜˜–™£˜”•˜””˜œ •š——š“—™™•œ”˜š”ž”™’™š–˜—“™š“–˜š“™—“™›ž–“˜•š™—ž–’š™•˜—™–—›™•˜˜˜—˜“˜œ˜˜”ž––š–™™šš¤œ”™“š™—˜‘˜š™›——˜–œ—™™œ›–•š“’–”—˜›“™–š¡•–™—™žš•›™™—ž—››˜—“˜–—”šš•——šœ–ž˜š™ššœ––™š”——•’˜š›–˜™”˜—›š—™•˜š˜•—’–œ–š˜›—––’ššš•˜œ˜—˜—•˜˜™“™Ÿ˜˜•™™—–˜œš—•–˜˜˜”›—›š——››˜—š™—Ÿ–šš™šš“š››››š›—•“•›—•”›˜œ”ššš›š”˜™–—˜—š’™šš™ ›–—™ • ˜•“—””˜—™— ™Ÿ˜˜˜ššŸ››˜–—žš™›š––œš›™–—˜–™Ÿ•›˜˜•–˜—š—–ž™š”–—•˜™œ——”™š•˜—’ž•˜™›–˜——ž™”™—›š™š—˜—™”–˜—˜ššš—¢™˜’–˜—ž˜œ—’—–›™˜’ž˜™”Ž˜—™š—•™–™˜’œ—ž˜œ˜œ˜”—›š© Ž˜œ›—œ—’¡—–•—›˜“”˜¦˜—–••™ž–™™˜–’™—“—“˜˜—›—•–š’”š’’“•˜—›“•™’——••™•—œ˜˜™›Œ–—¡“š—‘—ž—›——˜˜š—•¢›˜™”Ÿ›˜——–”˜•–—š“—’™˜•™–¡’’––š–›—–¢šš—“–––“’–™—šž™—™—œ“—š™—•™œ”š™”™˜™›–˜•”Ÿš——œ”’š™˜›–•œ™“˜–™˜—›—”™“”ž˜œš–—š—˜–˜—˜–™™š›š•™™š˜™›”˜›œ•™”’•œ—•–•›š–œ˜—”—™žœ–•ž—˜›•——›—𛓗˜š›–›™˜’š˜”’—˜••”™–œ›œ”™š˜–——“–š–—™™–™““˜š–——™š—“›•œ—˜–•˜–¡Ÿ˜—™ —ššš”š–‘—œ™™˜™˜š˜—“›™“–“‘—œ–™ž”•˜Ÿš’™˜”””›˜–—š˜‘¡™™–’•Ÿ¢˜‘™š“›˜˜–“›—š–˜˜œš˜›“™”–’–——•”ž—™›–›š™’š••š‘››•—™˜žœš—˜™š˜”™˜˜š—–œ™˜š’‘”œ˜–—›™ •™—”—˜šŽ——˜›”šœ––‘œ”˜‘‘™›š—¡›œœ”›œš•–š’˜——‘–™ž•˜–™•˜œ™—–™›˜•˜šš—˜š“—–›–”•˜™˜ž ‘“—˜š‘˜œ•••˜•™–˜˜‘š“¥ˆ›™‘šŸ¡™–žœ™˜¡š›˜“™›—–ž”“•˜•™™Œ™˜”™š››—–œ›˜š˜œ™—‘›•˜¢›—®›œ™Œœ”𛆛–˜™ “—‰™”“Ÿ ›šœ–™šš“•šœ™——§——”˜™—œ™–˜‘™˜›™œ‰—Ÿš–“ššš•žž’œ—‘•™›”™”“šŸ“–—”˜š¢œ›•˜”œ—š™˜›“–—‘™“™—›œ™“›•™Ž•œ—Ž•–™š•˜—š›š——”˜›œ–—¢˜š”—ž›˜“—š™šŸ™šŸš–Ÿ–›”–•š•—›“”—–›ž•Ÿ—šš“”˜–œ–ž•—–˜˜›—“™—™•—œ—™•—–“˜™•—”›˜”˜˜–š—”–š—š—”œ™š™•™—•“˜š˜›œš“‘›˜˜œ—’—•”œš™ž——›š—•›™¢š—ž˜–ššš˜–••–š—–žš›•—“—š”—™šœ”–˜™—•šš—•–š˜•ž˜Ÿ›••’–—‘™šš™š˜›˜™›š––™˜•˜™šš——”›|š˜˜——––– ™˜˜˜™›š—•˜š›™—“™¤—˜–”’˜”–™•Ÿ”——››——™˜œ—™–šœ˜ž™š™˜••šœ’——ž˜”˜š—•—˜—–”˜™™—™œŽ—•–•”––›˜›™Ÿ•™—–š—”™œ˜šž——–žŽ™™š›™˜–•™š•ž™š›™–•ž—–—˜–Ÿ˜“˜—›–™£”—–”ž–™£’œ™Ÿ™•–š›–‘–˜œš—œ™•—›˜Ÿ—–˜˜— š“›™—™››™—–œš‘“ž–œ˜™™š”˜˜–Ÿš™“–œ•œ™™™œ›”–š™œ“›™—•™——”™“Ÿ‘™˜–“›š–”——¡›–™•——˜™‘•—•–˜›››››ž˜˜Š˜”š–’š™“——•˜–——˜˜š›˜˜˜–•——”—˜•–•—™‘™––œ›˜œ˜˜œ”›šš˜˜˜™Ÿ˜”˜™˜•”šœœ–’–˜›š™•—””•˜›—˜™–š––”’‘–——™™ –•š••‘’•ˆ˜“˜›”“Ÿš™–™š™œ˜”›š™“™——•™š——–ž™™•˜•‘–Ÿ—––—˜–“˜£—™Œ••™œ•™Ž›¢——˜“–•œ—˜™–Ÿ–—”—œžš™šž•˜——™—–›”—š¡£—•™——šž™–˜™—•™–š™š“—š•š–‘š”¡˜–”™–•Ÿ™™–”——š–™˜š™™——–Ÿ˜’˜–™˜”˜™—˜™—˜–š™–— –š™š›˜”–ž ›—•™˜———˜ ”™–¡”—–𢔕”œ—–™”“”—”–—˜“——™—š–—›˜ ——˜™•šž™‘“”˜–—–š——––”˜••“•”™™–™–‘ ˜–“”––œ™Š——’™™•“›“™—™“›–•’“š“˜˜š”˜’’𙕗™••š—™œ™—›•”“˜™ššŸ“ž•—™”“š¡š›—ž™™•œœš”š—•˜—–šŽ š™™•••˜–ž”˜”——˜”š—•š––šš–››ž–‘œœ–›•œ™šžš˜ž™˜œ”™——–‘™–˜™™šž™•‘™˜š˜œ”›–™˜–›—•œ”™“–›’œ–™“š£š™“–˜˜–™‘™”–˜Žž––˜œ›œ™¡š¥›™••˜•™“–•š˜”–’–Ÿ—‘“š™—š˜•œ™–—˜˜—‘•””™•¥›™š••š“Ÿ–œŽ™—š›œ˜”š“š”˜œ™˜š–˜›–™˜™‘’—”“¡œ—˜–•—™—˜™“’–”š”ž‘šššœ––™Ÿ•™•œš–œ”˜—•–”—˜’–š’œ›•—–›š—””––“—™˜˜–š—“›•”•Ÿ˜™™–•”˜–ž™–™žž’›™š›š–•—–š”œžœœ™—š–™‘›š˜žŸ™ž¡–›˜š—›˜™•šœœ™™—š˜Ž•˜™š—›œ”œ”ššŽš’™¢“›™¤—œ–š›”—™•˜—™—œ˜‹“£–—™˜•”™™˜™˜š›™››™˜–š˜š—ž›ž˜ž˜˜ ››•–›™’—–™Žœ•š•›–™——˜˜šœŠžœž“¢›–•˜—¡—˜¢˜‘™š—¡—›œ˜˜Ÿ™––”—ššž––›¤—˜™“žŽ›š‘’™‘˜š›™—š•–—œ›™›œ™œš–šžœŸ›‘™—’•šœ•š—˜š˜”’œ——˜™¤›——œ—™œ—˜˜•š••™—˜•“”œ‘›˜”œ—›–™–™›– ˜••˜£—˜”š”˜˜™œ•™œš™œšŒ— –’–™™›˜˜—”–š™™‘˜›œ–—˜™™š”™ž—˜š›—˜›—˜žš–™—””—–—˜”™š™˜™“•—™˜”˜’——˜›™˜š˜˜’™–š—•™—–ž–š˜™—–œš”›˜——›ž™š–’˜™”˜™—˜™—”‘•šš™š™“˜š™™–—˜™™™Ž—›•˜—›™šž–˜•“˜›™™˜—˜˜š—›•ž˜™˜››š›–””˜–™š™—˜˜››™›™•ž›šœ•š—™•š—‘•™–”™š—›—˜˜–šž–™£“˜”š’‘“—˜™™™Œ˜š˜——•—𛕙œ˜”œ—œ™›”——™˜š•¤œ•š”˜œ˜™–›™š—›—œŸ˜˜—™˜˜™—›š˜–˜™™–”¡•›˜——›š›™™šœ™›—š—™–œ˜•˜–™”—œ˜›—˜—™—š˜˜–˜—”™˜“––˜š—š“”™–›–•–˜›œš”›šš•™—™—›’–š—™Œ—ž˜—›–ž”›”š™™š•›–•˜—•ž™™™–˜–—˜——™Ÿ•™–™–š—˜—–™š™—™™š”“›–š™–•™›™š—š–™–š›˜š–˜™š•™˜•˜™˜œ•œ˜—”˜˜™š—™š™š”™œ—™’›”œ—™˜˜—š˜–—Ÿ“”–˜™™Ÿ•———˜•—–œ™™•˜™–™–œ˜—•–”˜‘—•œ‘™•˜›˜–™Ÿ•˜•––™š•––˜šžš›’—›–˜—˜™”——˜˜——‰—š™ž¡”˜—š—–•—›–˜š“”’œ— ›•—™š’—Ž––™–šœž›› •—šœ™˜–ŒŸ™’———š™—–˜™•˜“™”˜””—™š——•–™£”•–ž‘š–š—™˜•š—”—“—˜š–™–“¡—”—š——œ—•™‹œ™˜œ™—–ž¡“–™™“›˜š“˜ž›—’•ž–ž–’œ˜–—–˜˜™™–™˜––œœ–—’Ž™–•˜—’£˜š–›–—¦™“˜”š™˜š–––’š•š˜–šš ™•—š™—™—›–™–™™™••œšž”˜˜˜œ–•ž™˜–š›—˜–™———šœŸ˜””˜•—–—‘™››™”—•••˜™šœ””•™•››˜’™‘™ ™—žœ”•“˜–’–™–—™ž—›—˜–’š››–™š––“–™˜——™š˜˜“—•š–˜˜›™›”“—˜¡“™–œš™™—ž•š›œ›——œ˜›—˜œ›”˜‘—•’—™œ–˜”›“˜šŸ›™Ž›–•š––•—“””–——œ—–™˜œ˜•š–›˜“—ž”˜–˜™–œ–›ž››–šž‘˜š——š–›—™™œ”•ššœ”˜•”˜—–™š•˜œ”’™––™——’™–œ›˜”˜˜š”›š•™™™•Ÿ•š—”›˜–˜”œ˜›¡™•˜™––™›—–˜•œ›—”œšœ˜œœž—•–™›™—™–™•™—š”™’›˜‘ž—š™›—œ™—˜–˜™—˜™–”˜˜šš›–™˜–™˜˜–—••™š•š˜š›—˜”˜’œ›™•š˜•‘‘–”›’š”•˜™›™•–™š›•“™Ÿ–™˜—–˜—”—›”˜œ ——˜– —’›”™–—››—‘“™–¥™›™ ˜–›ž˜›š¡—–›˜œ˜™™’—–˜›••žš™˜——›—™—“™—™›˜›š––˜–ž›—š™™•˜šœ—˜“—™˜——˜˜–˜››™˜——–—™™œ™¡”–™œ™™•˜˜Ÿ˜™˜– ™—˜™˜›—›š™™š™—šš™˜˜—›˜––¡˜——™™•——™•—––˜›•œš–š—˜–—™™–˜—˜˜˜——–—–š—˜”–˜˜—™—––œ–—™™—œ–š™™——›š›•——–™——˜—•š—˜—™—”—›“™˜————š—™•—–˜˜–™˜™“˜—š—™™—ž—œ˜———™˜š˜›“š• •™—–˜—–šš™š—–˜—–™§—™—˜“Œš–š”™—™˜˜’—˜š–‘™›—˜™—•Ž™›™˜Ÿ˜™›œ˜œ››˜•”—™™›–•˜—–š–—˜•|˜˜™š™–™–›–’š—˜—”˜—•˜–˜™›˜—–”›’š˜˜–—™™˜—šš–™‘—–—–”žœ˜˜–‡š•›œš™™–•™——™–•˜–˜™˜–š™›˜–—”—˜˜—™™––šš™”Ÿš››š—˜“•˜™•“—‡˜—𙑖™•˜–——•›•˜“–œ™”œ—6—–•”—œ˜™š•—˜™˜™˜’–˜™™™™™\˜™—˜›—š˜–˜™“›“—œ—˜š–—–™˜™‘•“–—˜š•š–œ‹——š™˜˜˜˜š™———“™••˜™•˜˜–•ššš™™•”™™š˜™œœ™˜——›—˜™šš™™˜˜˜›”˜˜”—š– ˜•œœ›™›™”——“˜—––ž§—œ˜š—–”––šš˜–———›œ–—”–—™”š™››•—˜›¡—•˜—š˜˜˜–˜šš››³—š˜˜˜“”šžœ–žœ—–˜›šš›•–˜™—˜”ž————š——ššš˜–•–˜™˜—š–”˜–•¤ •˜š™˜–™”˜Ÿ›˜›™’—•˜˜–”š˜–‘–›—›˜—”˜›šŸ–—›˜›”š˜‘™“————•˜™™–™˜˜›”›—˜–”šœœ—•™•——™–”™˜’œ™™˜—˜™š—–—›˜š—˜™š–˜˜—˜’˜—˜˜™ž‘œ›˜›˜™™™“—•—™™—š•š—šš›•™›™™—–š–——˜™›—•—›˜šš–œ™˜–˜”•–œ—•–˜™˜™—š™œ—š›˜–™™˜—˜–›”–œ™•˜š››™—š˜™™š––—’˜››––”›˜š™•’—›™š™˜™š™›—˜ššœ“”—•˜š›™šš——œ¤—–˜ŸšŸ™™’š™˜•š–—–•š——™˜š™‘˜›™Ÿ••’———“š—˜š™—œ™˜——š˜šš™Ÿ•™‹”–š”œ›–˜š™š™™–›’˜™šš™š˜™–š˜–œ”š“››Ÿ“•˜—˜™–™˜››–•—š™—Ÿœ‘“”™—‘•š™˜—ž˜–™š”˜—˜—”–›˜—–™•š™˜”™’œœ“•Ÿ”™•”›™•™š“š—œ“–œ–˜›™˜˜˜’œ––—Ÿ•—š—™——™›”›•˜—•››š••˜œ———“›•—š˜•˜œš—˜—“š˜Ž•ž™˜˜šŸ˜™—˜˜ ———”˜ž”™¥”—•“—™•šš™’™›œ™›™™—ž–˜•—•““——˜–‘–—–™žš–—˜™š’˜–•¡•™››™œ›•–›š•—œ›•™œ–š“š›››™—œ•˜›ž“š›–“••¡—••—˜–––šš™–‘˜š˜›•‹š”™˜”›˜—”š¥š˜—™˜—’šœ””˜—™£šž˜™š•— ˜—˜›™š›”–˜‘˜™˜–”–˜–˜š›˜ž”™š“’š˜—˜™š–š™’œ›œ’š˜š“š’’š——–˜˜”—–›™œ™•™•™˜˜—›–Ÿ˜š˜–™•™—–£–™š™™œ”œ˜˜š’–––‘š–˜˜’žš›”¢“–’–˜”˜›¡›‘›˜•“š—¢š–ž˜š—›”››——‘“Ÿœ˜™–š’š™”š—˜˜’˜™¦š˜˜œ–•˜–™™›˜–˜œ˜—™˜›š˜œ™’’—šš˜š˜˜¤™——™—™š˜˜™–—™™œšœ”––˜“——˜˜›™˜™˜˜—™–™š–—–—™š—–š˜–š›˜œ–˜•“›œš”–—˜˜œ—š•˜›—š•’––—–™—›š• —˜›˜˜˜–•—œ–˜——•“•™™š˜”™•›–—’–˜”˜———™˜˜—–™™™›˜™˜š˜˜˜—›™˜“—™•–˜—–š’˜”•ž—š˜™—™˜—˜˜˜š——›—–”–—–•–—˜•š—–“™—•›—™•›˜™™˜——™™•˜–™—˜˜™–“œš–˜•ž•–œ”•™—–˜™›œœ™š›˜—˜œ—“š—š›š–—‘˜–•š™œ™•—Ž–ž›™•——›““•—š¤˜™–˜“˜’•š™”š—˜–š™˜–ž™š—•˜˜›‘–™™‹š™˜’˜––•›–š˜”˜“˜’•–š—œ˜˜•œ ˜™Ž—–š–—œ™››•ž’™”šŸ™–’—›——–š•™œ– œšž˜••”—™—•Ÿœ•“ž™—•š›—š–”•••˜›”™›–••–˜›š—›™’˜š™›˜——ššœ—”˜š˜œ–œ™˜£—™™•˜–——š˜šœ’›—’œ™¢ž•Ÿ“•˜œ›ž—™–”™žš™™™˜——™–›˜˜˜•—•—”š˜›——•—˜›™˜š˜˜––𦖗˜Ÿ™—”˜˜›–˜™š—™——•“œšš•–™™›š˜—š—•œ˜™—˜™•œš””Ÿ”™˜™˜›—–˜•“š˜™™˜’••““˜Ÿœ™”˜——œš™˜”‘–šž—–˜—–›˜–“•™—š™˜™™—ž’—™“—™™˜š™™—š—™š”˜˜™™˜”™‘•˜–™š—•™–™•š›š˜š™–Ÿ™–™š–˜•—–—˜™œ–™•—˜™š”™••œ—›˜–—˜••–——–™—•ž—š—“™™‘™›•–”˜ ™–˜’›˜™š™™™™š˜™˜››˜””›™—ž–—––š›››–š›”š—™™–˜—™˜™™•˜—™•—•—”™–›œš™›œšž˜š™—˜˜“–š›š—–›—–—›—™œ›”—™š——˜ššš•š”—“˜—š˜˜™›•˜›œ™—™—˜—™”˜—•ž›”šš˜›—™™•˜˜’“—–™˜•––™“š—™›––˜—š•–˜™™™˜˜˜•—œ˜–”—”—š•–———˜›—˜••˜–˜•œ”™š–—˜™™–˜“˜————œ›œ•›Ÿ˜–—œ‘—˜š™š—–˜—˜––›–œ––›˜™“–˜–“’›—™”›š˜ž’—“”—˜˜›•”˜•˜›˜—™š—™——˜š™ž˜˜Ÿ™•£–™•™™›˜•–—™–›–—š–•ž•”•™š—˜™™œ——™™››™˜˜——™–•š‘œ—œ–—•™™¡››š›˜–𒓔𖖖—™•”ž™™–••™™˜›”˜—˜™›–›˜—˜—˜—˜š“˜šž¥™™“•™—š—›•™•™—™˜™š‹•”••‘™”—•–œ•¡—•”œ™—•‘Ž•ž—”’—˜˜›—™—”›™š’Ÿš•™›•™—œ›œ–—˜œ–˜™˜–—™‘šš™œ–Ÿ—œœ—“™‘•–•–™œ—•˜—œ˜™Ÿ˜•™•™š—šš—›˜ššš™™šš™˜–——šš˜——•›˜˜—™–”•˜—š’˜››””˜™˜œ’—š˜’˜—•–›™šš›˜‘–˜“›š–˜—˜š˜£™˜—˜–››“˜“|œ˜˜™™˜šœ›š—œ•”™œ™š—–•™›–›••š››œ™˜•šš—™˜›š—œ”˜—˜š•–™žš•›£œ—––˜˜“™–“˜˜˜›“˜–”šš˜˜™˜‘–““—š•–•™œ™™˜™™š™–›˜›—–”——””–•‘—–›—›•š“™”› ˜˜œš•š™š›”—™›Œ’˜“™™—“˜œ›—™—™˜˜œ–‹›•—›¡›ž•˜™™˜–™–˜™–˜–œ™—£—˜™––ž•™˜˜”–˜—•™—”˜–—˜•—˜˜™›”™˜”š˜—™™——›—˜•–˜˜˜–››•—™–›—˜”˜š–“™™›•™™›—•—™—˜™•—œ›—¢˜Ÿ™–›••˜˜š¡˜•œ•™›–”—•–™™—™œ—•Ž›™˜›™˜š™—˜œ—›˜˜˜—›’•’š˜œ•˜š—›˜™›˜˜™“™žŽ–›—š–¡œ™—š—š™‘‡™›˜™˜–š˜•—”˜–š’œ—™•š™œ™™—••œš–š—”™’š—ž•ž˜™œ——“˜™™——–”›š›“™”—˜˜š’—™”’š–•š™œ—’˜™˜™ššš’››—˜—–˜˜”—•””›™˜™œ ™˜–˜•”—“˜›™š›˜––™š–›™š”•˜›”——˜—š˜››™ž•˜‘š—˜—™š“–™˜˜“›——žšœ––œ—––¤œ›–˜•›™—¡™›–˜›–œž™˜”‘—˜™š™œ—”—š™Ÿ››™–ž–žŸ™œ˜•–š”—šª˜™—šœ›‘™¥’˜˜¥š›—™žš™š™™™š˜˜š––—•– ™•™š”™œ—•™—š™™‘›œ˜“ ––—•˜›šŸ›™š˜“–š˜•˜›——™›•œ™˜™›––œ–œ•–˜˜–—›™—›™˜–“—”˜–˜˜‘—”š˜š™™’š––™›˜ ™˜—˜’ž™˜”‘ž˜——™›™™˜’›‘˜™–œ”˜š—™”š˜˜˜˜™™•›™˜—˜Ž–•›¢—˜•–—–˜›œ—“œ˜™™–š˜™™™›–Ÿ”™š—ž˜————™—˜™•š•™ —›™˜—–˜™’—˜™—˜›™š––˜™‘—˜™š•˜—–—•Ÿ—šš“˜”œ˜•šš˜š–Ž˜›’——™Š—˜–˜š™™›œ“—–˜•–—˜›—™™–—™œ—œ“—–˜•—•˜£¢˜˜š•—–—›——œ˜”˜œ‘š•˜š“™•š™™›œ–˜™˜—™ –œŽ—™˜•˜˜Ÿ£•‘—‘—›š—˜š•––œ——•™¡˜“—œ”—™—˜™œ˜—˜—›——›˜›—™š••¦š–˜˜——œ—žš›š“˜šŸœ”˜™——’˜˜˜›–˜˜—•›’˜™——›˜ ˜˜š—–š—›•˜›œ˜œ––˜™“˜˜”š’žš—–˜˜˜——“˜™›™—™˜’šš•”˜—™—˜–•’™˜—˜“••‘™š™š›—¢ –›—š™™“™–™• ˜“‘— •—™•˜˜—–˜™™™š—˜•› šž–——˜™”˜™™ž“–”——”™—–•’›’•˜™™˜–‘š•—’™š˜—™š—›—™–œ™™˜œš™ž™›‘•—œ•˜–¢•–š˜™—˜™–’š•—˜”˜‘˜›˜™˜”™‘™˜˜—˜™“—›•š›––˜•™“›—–š˜•”–—”˜“™˜•–˜”š–™˜š —•™–—’— š—™ž–—•–›™–”•˜“•šŸ™”•œ—“Ÿš™™—•™—™›˜—œ–—ž˜”š”š–˜™—”•™™œœž›—˜š”œ˜“•–šš““œ•’ —˜›–™›”–—œœŽ¤—•™”‘˜–•˜——Ž—™™—™š–‘˜™‘˜—”ž™“™˜—›—š™—œ˜–™‘–™—•™™™•˜”™™–™šš•™—˜–˜–›š˜˜˜—˜š˜—–•šš˜™›™š—›™™™™‘–™—™——ššž–ž——˜—˜œš–š˜–˜˜•š•’—˜˜˜™˜–™•“——˜™¤—”˜Ÿ˜šš—–šš–™› ’š–•›˜•˜Ÿš™˜œ™˜š—›”•—‘™–›™‘–šš••™™™œ˜˜•˜˜š ‘———–š¢–˜••––Ÿ—–˜–˜“—š¤›˜™˜ž˜–£–š¡˜—“˜•—š”—œ—”•—žš—™ž–’¡“›™™˜š’”–›˜˜˜”œ–——–—š˜œšœ’™œ™—šš’›˜˜•›—™—“ž”——›š—˜—˜—˜™šœ››–—š”™š™“™—™˜˜™Œš‘—•˜œ™˜•—˜£––™˜™š—˜—š“š™—™“™’—››”—”™—––š—˜‘œ™œ™˜•——”˜–•œš–˜™—˜—“£Ž•˜™—”˜œ”™—’–š™”š‘˜˜–š—•˜Ÿš–žš–œ—š›–›–”˜œ“¢•”•›—––˜—˜–˜—šœ˜–’˜œ”›–œ™–”¡š”—“ •™˜Ÿ—ž˜—œ–™•£™Ÿ›™˜–•˜•››˜‘”™˜ŸŽ–š˜—–š“˜š–˜™ššš˜š™ ”˜œ›˜ž™••šš›š–——™—”›š–˜˜”—’–œ’—–˜™–›—•™•Ÿ™™–™™—–™ˆ˜™œ›–˜™ž–˜šš–œ˜—–ž•™”™™—“š•—™™™›™¡—”‘–™—“˜“ž˜›•”•——’˜˜•“•š™œœ–™•“™‘”˜•“›’–¦”—™—›šš˜—•›—™—–™—™™—™—Ÿ–™—‘ž›’•—‘—•™••’”•—Ž••š—•›™–‘—••”™–™—”‘š›Ÿ›š—™š™”™™”˜›™—œŸ˜œš™““˜–—•“™˜™š—›”˜›šš———–—™˜˜ž•–˜’š˜›“––—˜˜”›™¡™š—–¡™œ—“•™š™–”—œ–———™–˜™˜™š––™•š–š—––š˜–›˜“›–˜š–š——›—™œš˜™™—’š™“˜˜™—˜•”š•——˜••™›“™–™›™˜™•—””—•›™””“˜˜¤”™–˜•˜•š•˜˜ž••™–—˜’š˜•›•˜•™›˜–Ÿ—™–˜˜—”›‘™–”œ–—›š•—˜™”–šš—•™š™˜“Ÿ’œ“šš›–˜——™›£˜š˜ ˜–’–š˜Ÿœ› –›™”››——Ž—š—•—“¢•‘š’˜™˜¢™–—œ™™››š˜š—˜“™š˜˜š™›—™–›£—š•™š˜•˜–˜š——–˜”–•—œ•——••š–™›š•–˜˜™››˜–—–š–›––¦–™–œ”•˜—–”˜™ •˜˜š”–“˜“™™›š“–—’š™–˜›”•˜›š––•–”˜——™”𙣖“•–—’–ž”––•™š–—›œ—–šœ˜’š™šš˜˜›œ™—–“™™—˜—š”™—š–˜˜˜—œ•™œ™™˜—–•—–——˜œš™–™™œ˜—™–ž›“–™——™ ˜—˜›˜Ÿ•—•š›–™™˜™–›•™˜–•Š—˜™šŸ™˜˜˜ž˜˜—— –™¢›•–›Ÿ”•˜—|‘œ–—š—š“š™—•—–›–˜Ÿ‘——˜—˜š–™••˜˜š›˜™™–˜œ—˜™—˜•š™—š ¤›•–˜š–˜˜—™š•™˜—™Ÿœ™—›—š™˜›˜š™–—•š—˜™˜œ™›—”—™—Ÿ™˜––™•—”š›•˜œ™™››’“˜˜™™—‹—˜˜• š›‘˜™˜ž™–”“™’˜™—š–˜™—¤™™’—š˜”œšœ“—˜˜˜˜™š—˜œ‘˜™š•—š›˜——™š˜˜š—™˜˜“–›——“›”–˜›š–—‘——˜•–›˜˜˜˜–––™œ™ž˜š—’œš˜—–š™š¤˜™•—˜•™—š˜“—™™——š—“˜—ž™•˜˜‘˜˜—‰•—˜–—“—˜”™š›—›•™——›™—––˜—˜—™”“Ž›ž ˜•™™““–š›—•——™•‘•š•š“œ–‘˜“˜—š”ž——›“š•ž—”–˜•œ•™•“•š’š–”šš–™™“’•™œš–‘” ™œš¡˜•›š–™•–”˜–›™—”˜—™ž–—›”˜›——–˜™–™˜œ—™–Ÿ—— –˜–š›“˜™”𛙔𖗗””˜›•—š”˜”•›—™›š˜–•š˜›š™•˜˜šœ–™“™™˜š——š—šš˜“š–˜˜ž””š•”–”šš”—˜œ”™™ššž˜—š‘—˜˜—•™™™”™™—Ÿ–——™™›•–˜˜––™š•—š–•“˜–——”™“—˜––™˜–––˜™•˜”—˜š™–˜ž˜‘ž•’š”™™””œ›™——›•–›—œ Ÿš–˜™™œ”œš˜–š—žš“–’“šžš˜˜™¡šŸ––—–œ™–™–’”•˜”––›——–˜˜š˜š˜———›™–”œ”“—”››™•˜–š˜—”›˜˜—’š™—“••š˜›™—˜•›”™š˜’ ™–—™Ÿ—š›ž™š›”š™–šœ—”–š–š›™œš•™–“™—›—–˜“™˜™šœ ˜›˜˜¡—œŸ™šœœ˜•˜”˜˜›™””˜‘ ”˜™—š—–˜š–”š›——–›‘—’–˜˜˜œ˜“™Ÿ–š˜–™™”“˜˜—––˜—œ¨˜˜›šŸ“˜—™››œ˜“˜˜˜–™”š˜™‘œ•““™˜›•—š”Žš˜š˜žŽ—“–”™˜˜¡™˜˜§œš–––˜’œ–™•••””˜—““ž™–”˜œœ—””›•—™–˜š’•˜–š——™”š’˜•™˜—›—’“œš—““š–™š™”›˜œ˜š›–””˜•¢™˜ ž™š–•“˜—˜˜’™š•››˜žœ–——•š˜™“—™¥˜—˜œ”˜™œ˜§’˜‘Ž—˜–›™—˜™˜˜šš˜›”—˜™™™’˜“–—•—™›š˜™–˜–šš˜˜™œ˜—•–˜˜™“’—™—“—˜—–˜š˜˜–—˜“•˜˜¡–˜š˜™œ˜–™™—”˜™˜–˜–˜˜™—œ›—™š˜˜™—š”™šœ™—Ž–—™™™——ž—Ÿ–˜“˜‘˜šœ•˜––˜—˜—˜”—˜˜˜•–šŸ“™œ•œ“™——–œ—–¡’š˜™˜™”—˜Ÿš›—ž—œ˜˜—˜˜›šœ–—˜—Ÿœš˜›¢š˜™‹˜˜˜œ”–˜•–˜™™›—›™š–¢˜™—˜”—–˜–—˜–™Ÿ›™–”™™’—•š—–˜–“‘—š–•——Ÿ—™œ˜•˜˜˜š˜›˜—–™˜—–—™—–– ™˜—˜š™š—š£˜›–˜™—–™™˜š™ššš—˜–™£Ž™˜–•™—™™˜–™˜˜–—˜™—˜–˜•™™•™™›˜—˜˜š––™•š–—––’˜–œš”˜˜˜™™—•›™™——™—™—˜˜™›——•›˜™—˜ž˜šš¡—˜”™™›šš–›’š“›š™–—˜˜˜—š™™™˜–™•–™–˜™™—––š–“™˜’—™–™•ž—–›–’•™•›–˜™˜›•š––˜™–š“•Ÿ–“˜™œž›š˜šš—˜•š——˜™ž—œ™—’™™™”˜•—š•˜˜—›™›™“š˜ž–™–”—˜˜™˜”™“——›—™™Œ˜š”—Ÿ˜š˜—‘“š—“›’ž›–š”——˜˜™™šŸ›“”–“›•›˜›˜š™œ•’–—™“˜”˜–Ÿ””™›—˜˜šš™•›–”••–›–™˜•——”š›™“—“—˜™–šœ˜˜‘ž–”™™˜—š——•œ–•›œ›—›”™œŸ‘•—–š”˜”—–™™–™¤›——™—–˜ •£œ•”šš—›ž•’œ—–™–“˜žšš™›—œ¢œš‘š‘˜—œœ—žžš™—£š™—•š™•žš••Ÿ—™“™˜”˜š˜–––—š—š—™™š™œš–—™˜‘™™–™˜•”›•–˜—–—š˜–œ›™™Œž—š˜”™–˜•˜”™–˜˜–—–ž”—•—™‘•—–˜˜™—œ——™—˜”˜™•˜—‘š“—™˜–¢™“”–——˜“–›Ÿ“–œ”˜ ”–š¡›™•›“—™›š˜š š£š˜—›–š›˜œ“—™–˜˜šš›ž—’–™˜ž˜••™•™™’£–—šš—œ•›–œ“——˜—•˜“˜ –•–•ž–‘™—˜”˜ž›—–“–“š˜˜—œ•™œ£œ¡œ˜˜—š—›–˜––˜ž•˜–™œ’—™—˜—šž™š™™–“˜Šš—™š“••¥–›˜š™”›•žš•˜ž•˜—˜™Ÿš™’š•›—–ž••š•›”•–Ÿ™”•––š—™—˜“•”––”˜—››˜—œ™”˜›™””—˜˜—Žœ™—˜–•—˜™š™™––”Ÿ˜šœ˜™•‘—”—–¡š––œ—–œ”›˜›–›”•›“™–™œ–—˜›˜—”–™””˜•œ—˜œ™‘—”–š˜˜–›”™™›˜——™•ž™–ž–”œ™Œ˜œ“—–—–˜“˜—––›– ‘“›˜–•••—›•“—›’š•”——˜ “–—–•—™œ‘šš› Œžž———¢ ™¡“˜”š—¢œ˜‘• šœ™—šš•™™—™”™˜™›—œ—™š™–™˜–š›˜™™›˜˜˜•›“¡›œš–œ—™˜™™™˜˜–™™—›––˜—œ–›š ——ššš–˜—™˜›œš—œšš–•—˜™—–˜˜”““Ÿ™˜””š™–˜—šœ›•š˜ –—›šš™š—š™š˜›•™ššš˜—›™˜––™——™™››šš™”˜•˜šš™–™”’™šœ•›™›™”˜˜˜—”˜–˜—™–’›–•š—™œ•™˜™šš˜˜š–—˜˜˜˜—š›–•˜™š”–•š›–˜–•˜•––ž—›˜—˜˜˜™•”•™—™œ–˜—™—›—˜—•š•˜˜š˜—”—˜–œ•˜œš•“˜“˜–––›œ”š–˜š——•––™›•—™–—¢˜›™›˜™—•”™–—˜™›———˜——œ–œš˜“”›˜™—šš–••‘””–˜ šš››š—™™—ž––˜–”š—–˜—’—˜š™šž——–“—–”˜š“™–œ—šœ˜™š˜œ›–˜—”›™™œ–™š—•š“•˜˜——•š–™š˜—‘—––—–˜˜•–—›‡››Ÿ›™•››•œ™”š™–¡—•˜™››–——¢Ÿ›šš–™———”š‘—”•˜™™‘——™˜——œ—™–—˜–™–™——•˜—˜š—˜–˜–—™•˜œ’™”•”—™˜”˜˜š”š—“š–˜—˜šœ˜–š˜™›–˜—œœ•˜š——˜™™™™˜—˜™™—œ——•›œœ—––œ™™™•™•˜–˜—™”•––œ•™™™––™—Œ˜—–š˜˜Ÿ˜˜–•š–™˜™™–˜˜——‹–—™š–š™–š›™™–——“”—›ž–™•šš–š˜™‘—›œ˜—–—š–˜š–š˜˜˜˜•™™œ–”–––›š™–˜˜˜™—™“’›–Ÿ–—š—–‘–—š—›™“š•——™—™™“£–—˜š“˜•—˜™—˜ž˜™—𙕓˜˜š–˜˜‘˜ž•›››˜™™š—˜—šš˜•˜–˜–˜™“Ÿ‰—™‘“——”—–œ“˜˜–•™ž›“›ž•™˜˜š‘•˜–›Ÿ—•–š——š˜˜—š—š–• š™•››“œš•–•—šŸ“›œ––›—•”“œ˜ž˜™›“–“—™”œ•œš—š›˜—“–œš˜™•œ˜š˜˜–””–ž“–œ“—¡“œ›“šœ”™™Ÿ’—–™™”š˜˜•›—Ÿ“œ™—š™˜—š–™–‘™“™•˜™™™˜—•™–˜–š˜˜ž‘˜•ž˜—•˜œšš’šž—–˜—“˜š˜•˜˜•ž—𛕔•–š˜œ”™›šœ™‘ž™™››—™œ–™•“—–˜ž™“˜–š–——”˜“—˜˜˜™–˜•š–˜™šš™—›•–——˜‘”—™—–¡•š–“”—™š—’˜š™˜™–šš–•”–™”œ™•—••—™›•–˜›˜›œ—˜•š˜˜—™ž•—›—˜’œ“›š—œ—˜–ž™–””•ššŸ™”š–•™“––™š˜œœ—’””š—–˜•›š™š •““”••šš——”˜–™’•˜—™›•˜š› –œ”‘—˜’˜–—›˜™››”˜—˜›“—•œ“œ™›—œš“•š••Žš•š•‘˜œ–——™—›—•–œ–˜˜–›‘•˜—– ”˜”™˜˜˜™›–˜œšœ—˜˜”š™—Ÿšœ–š™˜—˜—™˜–•™™žš–››™™—Ÿ•”——™˜˜”˜š™˜—𙑣–˜“¢›—˜—Ž˜˜™—˜ž˜–™™™œ›™””—š˜˜˜˜›š–š—¡›™™•“œ–•˜••š–—™–™š–™›˜œ˜–—š—˜™›—”Œ—™’—™™—š™˜›Ÿ˜§Ž‘›—˜™—˜–—™–˜™–—––›’•™¤›—•–’š™›™•“˜œž’••™š˜—˜’–”™—’•—”—š—™œ–Œ›’œ¡š˜––›–˜—––—–¢›—“–”—™—™š¢™—œœ˜–‘’––™œ˜–˜•šŸ•—•›™˜›“—•˜šš˜˜›˜˜˜›— ™šŸ–™˜——˜“—”””——›˜“›–‘–œ˜˜™™””—™•™š’˜ž˜š™œ™“‘—œ˜™”›š•—–˜™–—•™™™’›šœ™–˜’——œš–™”™–—•’”——ž”—›š£›—–‘–˜‘™œ—“¨—“””›–›ž˜™™•š”’š—–˜š˜—™™š˜—™Ÿž˜–•›™™”—šŸ™›™˜˜˜”ž–‘šš‘—–”•£™š•™•Ÿ––—™•••‘ž˜˜•™šž–—™”———œš•›˜Žœ—š˜ŒŸ˜™Ÿ˜Ÿ•–ž•šš”œ™—˜—˜™–’˜™˜¡ž™šŸœ••˜—›”˜˜ ™—–™–˜›™—”˜‹˜•“˜š—˜•ž—››œ–•˜œŠ––š”—™———–›š’™š–———™“–—˜ž ¢•˜˜•œ”™˜•–——•›˜•›œ——ššš˜š•¨™™˜“™–™˜œ•”•–˜’–›œ™–’—˜’—–•—œ ™–•™—–™œ˜™™™˜•˜™˜š™™™Ž›’™š”œ–˜˜––˜˜˜œ—š–—“Ÿ˜š›˜—“—˜’› ™—œ—™˜“™–š––—œ›˜’—˜œ“—˜–—˜š˜—”š˜—•”š›˜¡ž˜‹ššž›‘™˜ž˜–•™œ–”  —–š™ —›™•™•–’—™–š–š•˜™—‘™“—œ˜›™œ™™™›–—ž”˜—£™˜š˜žœ˜™›”š—”š’—™š–›™™™™™•™›—•’’˜™—š–œ–“š›œš˜–‘˜Ÿ”š”˜˜£™˜™“šš›™‘š—‘šš——’–œ›¡—•”—™”——š—•˜š—›˜”‰—œœ“œ˜™•–˜™•——™—™–š——š––’™—š˜›˜——“¢’™—›œ–›™——”•›˜š”›š—˜——™˜–’Ÿ›˜–™œ•£“—˜š™˜—™–š˜“›š˜—š“—˜•š˜š–ž•›–—˜›˜š™–Ÿ“–˜™œšš˜——˜žƒ˜™˜“–—”“—˜–˜–Ÿ›˜”›š™›šš•——›˜–˜”š™–———››–š ™š—•—–œ—œœ“ ’𛕕—–š——˜——™™˜œ—•—š”–››œ›šž–—¢›˜š–›˜™˜žšš“”™—’•š––˜™–Ÿ™˜“˜›š—š›š—•™š™›š˜—•—™™™–”————¢’‘™™™–”›˜’•š››”“–™—”˜˜˜™œž”š—™™œ•”“š–š— š—‘˜’•–œ™Ž™›—›™—¡–—•˜Ÿ”›˜•œš››š›ž™ž—š˜œ™œ¦––š—”—’•š˜—˜›•˜˜ž–•˜–—“›—›™˜ ™˜–˜•–”˜’“š””˜—›˜˜š™™˜–˜•›”™—•Ÿ™“˜™—”™˜—”˜–˜—š“Ÿš˜˜—š–™™˜•™—•——œ“šš–š—˜”––˜š—œ•–•–˜™”–˜—–œ™•—™˜–’–——™”—›ž—˜™ ™•Ÿ—š˜—˜“˜˜’™š–—˜˜“›˜˜š––š•™–ž•—š•™””™˜§–¨œ™˜œ˜œ•š™–š”’—›•—‘š˜™›™š–­•—›šššœ˜”———Ÿ——•—–•™”˜•”’—“š˜š˜”“˜›–––—›œ–žš˜œ™•˜š–“—“˜™•”˜—™—š•š›–—œš–—›–ž•”“•™•ššš——š—™š›™–œ—›–“š›“˜™™–—”™—˜––—••—–›˜”˜•™™™š–˜š˜˜š––𔓕—”–˜——œ™—‘™˜›–ž˜“œ•™‘•˜™››™œ•˜“—’–“—’““–™™˜œšš˜™˜”–œ––š––™˜˜˜•”œ’˜™™–›œœ–œ’•˜———™—™œ—™›™š”œ˜š˜–ž™”¡‘˜™••”•œ•˜”™˜–¤••›™¡–™™˜š˜”™™œ–™“™””–™”—–˜˜”˜›™–›š™”•™——¡™š•’˜™™—š–—˜”ž›•œ™•š’•œ––•š›˜˜›™˜——œ™˜—šš˜––”—™›–˜˜™˜˜˜˜”•˜›™™™“•™—–™“—Ÿ———–™–ž™•—™˜˜•™•—˜–˜šž™˜—“•˜š–™™™˜–œ˜˜•››•–šš—–˜—˜™–˜—˜˜›—–™—˜›™•••˜™™–—™œš™—˜˜˜—”šš™•œ—œ•–™›š™œ˜˜™–—–˜“™˜›—“”š”™•š——™˜›–™™™˜œ”•š››™——™•˜—™˜˜˜™–š•—“—˜—›œš™ž˜˜œ–“š ˜›—š›™•Ÿ›—š—˜——–˜—˜•œ”–˜Ÿ•˜™›—–šœ—˜›šš˜˜•™›–™™˜——™˜”—”””˜”™š•œ˜™•–›œ—•—š™˜˜™™œ•š˜š˜š—–•—œ›™—–™—˜›——˜•—•”››—™•˜—”˜˜™šš—–š—˜“™”™—œ•—•—––š—•™–š™”—˜—•˜–ž˜š››——™™˜”–›™›˜“—–˜˜˜—™—‘›™•———˜œ——™•–•—™˜–’•˜—˜Ÿ˜™œ—™˜™”—™–—–™˜™œ”˜™—”š—™—šž™™•—˜˜•–˜––•˜˜œšž˜˜ž–š”š––›š•›™—˜––•—™——“–’——™™š™••™š——šœ–œ™š–œš˜›—™š–™–˜˜—–™˜–˜–—š––š™šœšš—˜š›˜•™™˜—••–•›—–“——›™š•œ˜•˜—˜’–›š”—›–—›˜”š˜šž˜˜¢š™™–˜œ˜•–š›—›•›——˜––˜ž•›—–—™˜››–•˜š”œ˜š›™š—˜•››˜š—Ÿ™•—˜•™˜—•™—•Š—›———“™™›š–ž—’–››˜—••™˜—š—•˜—›œ——™žš—–œœ••˜œ•”˜˜š™—™š”š›˜˜—œœ˜˜–˜˜—™˜”’•š•›˜—™˜–™—•›–˜–˜™—–™š˜™™‘™•˜š—˜™š–™›•—˜›š˜ž–•˜™™–™š™ —š—•™™š™–›–—››–™™’š˜š—˜™™“––›•—•——œ›’’—–š˜—˜‘“˜š™™—•š“˜˜•–˜œ›—˜•™˜—™”—˜˜š—”—–™—š”™š˜“˜›”–š›˜˜œ˜™“•–—‘š“žšš™–›––›—•˜—š™—•“”“–•™™œ˜™™˜šš™–”šž›ž¤™—™š›•š™–˜”›˜˜šš˜™›˜˜›ššŸ™š™š—”•š™™˜—–˜•™”–›š•––˜˜˜˜˜—˜–›•–š™—œ—šŸ—šŽ’—™™˜––™•™”žš•™–››—›”ž—™™š–•žŸš››˜˜–™™¡˜–•”˜–›™–”–›—˜››•›–œ˜—š˜˜•™šš—›™’˜™“–—•™—›˜˜”—š›™š”—˜——™“–¡››—•—˜˜™›œŸš›•˜™˜˜›‘˜™˜›™—™›š—š–—™—–š™š–ž““ •˜•š›˜™–œœ™š™—˜•—˜›œ˜•™˜•œ–œ™—“—›˜™—–œ——“˜–œž˜˜”“˜™™š™™š™š•–™™˜š•˜”˜–š™š—˜‘œ••˜ž›œ˜™—˜—˜—ššœž˜›š—Ÿ˜–™–—™–˜˜™š”—›——˜–˜˜—™•˜˜–™šœ˜–˜™›—’›–™™™š›–š˜”™—––—–œ–˜˜˜•œš ˜–™—œ––“˜™‰˜˜˜œš˜™•—š™—› ‘™•—œ˜•™œ–š–”š•—™—™•——™–˜˜™˜—˜š•˜™™˜–˜™”–—•˜—•˜šš›——ž•ž’›–——”Œ——˜™™—˜››“›—›“™—˜š™—–”–™˜ž—¡—™——ž—˜”———›œ–™˜›—•™™˜š“™—•¡—˜ž——–•™š›˜—‘—™™”š—™š˜˜—•—š˜œ—•–™š——˜—™™–œ˜•™–š’—˜˜‘žšš™š›—˜˜‘–—–†—••ššž”™˜–•™’™›•”—˜––š”œ˜™–‘—šš”››–˜˜™–›—‰—–—™””—”“•˜–˜™˜•˜’”•›ž•—œšŒ’˜—–•™œ——œ™‘ž˜——›™–˜•œ—Ž”›–™“˜š‘˜–‘™™˜˜œ–œ”™œ•”–”˜•”—˜–—–˜–˜™˜”–ž– ––—™š˜•š–’››™“—ž˜œ–š˜•–œ›˜™—›•——š–•–™œ”–˜––˜Œ–– •Ÿ™”š“š—›–™œ™•›š—™™•›•š™šš™”——“–™˜˜™™›”˜”–“•˜˜ ˜œ˜˜›”™™—›˜–––š–”—•˜–œž›–œ”›™˜–š˜—™™œ™•™™˜˜™–›Ž™›–˜š™•ššš˜•™™˜—œš•˜˜—–’˜™—™œ••˜—•——š—”–™”œ—˜™”›˜˜˜™”˜‘–™˜•œ˜™––š™˜—š–šœ™šž™™›™›“•–™™™˜™›˜˜˜››—–š—––—–—žš—˜”™ž™—˜“š–˜ ž’š™—œ”Š˜›—™—–—–—••˜™™—”˜“—š—š—šœ›”™˜–›•š™”™——š—˜˜—œœ˜š—–”˜•™š ›œ›—˜–”—•–œ™•™›–›–˜–™›—˜–—šš››•š–š–›–š˜–•šš“™“•–”™˜–˜–’•—–™™’–š”—”™—œ“™™–˜—˜™•–––˜•—•—™œ˜“—™•žš˜˜š—™™š™—š›œ˜•›–œ•››™›š•–˜™—š—˜˜˜™œšš’”–™“™˜˜˜•—™–“——™——˜™™™•—™˜—˜—šš•˜–—œ—š—šš™™˜™Ÿ—–˜—™•™™˜š–˜œ”˜•–˜™™˜—•—›š™˜™—˜“˜˜—˜˜•—’™›’——–˜”šœ——™˜—š›——”———˜—›˜“”š–—“™—˜™—”––ž–•™––˜ššˆ•’˜š–š™‘š™™œ™–•˜”––””•—•—››˜œ›™—›™š–™•˜™˜”™™›–š˜š—”—š˜š˜˜›—™—˜”š™•š–—›––˜—š’•š•—›š˜››•›šš“œ—’™š””™™¡˜œ—”—˜ž•—š™•˜–˜š”—˜˜“—˜—™‘—“š•šž˜Ÿ˜–˜šš’Œ˜“Ÿ˜ž—™š“’˜›™˜”“š—™ž™˜• ž››—š˜˜™˜—› ˜˜›—•™—š•›—•—š˜—™œ—›•’˜—›¡–š™œ›˜œ˜‘–Ÿ˜¢œ––‘–œ–™š•™˜œ“—“—š”œ˜œ—“•‘ š•’–œ–šš•š˜š¤ ˜—™ “—›•™ššš––˜š—•—–•“˜™™—•™–›™˜”™˜”—’˜“•’™›–”–šš—•“—œ›™š˜™”˜œ›”ž‘“˜™“š–›–—’’“š˜•˜”—“••—–•˜———–™™—˜œ”‘š—›™–›—š˜•šš™˜™š—–”š šžŸ–˜—”—˜™•œž™š”˜“ššœ—™’•˜•”™¢š“˜””–”’•›ž—š™“š˜œ––—“™˜š™˜›”š–™œž˜––˜š‘™‘ž–•—”˜—š—–•˜–š••¡š”—”››š–›Ÿ—””•”š–—–˜™’šš™˜™›˜™™—™˜˜•š˜————™•˜”˜›––—–™—™™™–™–—“š˜—••”–›•˜˜š—”š——–—”—™—––—–›•™–”˜˜——––˜—›˜–Ÿ˜––—•‘™š–š™–––•–– “››™˜—•š›—˜–•—–••˜—˜™——™š™—˜™–™œ˜™˜™–””–—˜”˜˜™›˜˜¢–••“–™˜œ˜“™• ˜›—™”™“–—š–—˜Ÿ•™˜••—™‘š˜˜˜™˜™˜›™ž“˜—–”—˜™—šš›—–—˜›˜—™š—™š˜š›š”–˜—˜š—ššš–™–š›š———™–˜˜›š—•˜•™———›š—’—›—š——•˜•™•““˜•š˜˜•˜š˜˜—“˜–•š–˜—™˜ š”›š———™™—˜—”•™™™˜š˜•˜˜˜š™–œ”˜—–˜–œš’—›œ——œ–š•‘˜™•”—™™›œ™œ—™‘•š–š—˜˜—•––šœ˜—š™˜‘›˜–˜ž’–——˜˜š•™ž–˜—š˜™ž˜–•𛕗˜–•—”™›‘š———œ–œœ–—–š•š›š—›œ”˜Ž˜˜–—••›•“˜š›™˜š—Ÿ˜•—–—™™–˜–ž–™›œ–š™—›ž˜’—•”˜˜ž››™™œœ˜š–™—˜˜’–—˜™—š—“š˜–––—™—œš—šœ˜—™™™™—–™–˜š˜˜—˜—›–—˜˜˜Ÿš˜—œ˜––—›•™š˜“™•˜›–—š–—š˜œž–™”™—œ—————•˜“”˜š˜˜™—™˜——•™™“™Ÿ˜—˜•“™˜”—›˜—•–——–•šŸ˜˜–—˜˜™•—  ˜˜—™˜––—•˜“’™•™˜˜—–˜›”›™›–š˜™˜™š—–”•š˜˜š˜• —˜“š™˜™•š™˜ •–—˜˜”›˜™›——››–—ž”——›–•˜—•š“œ–š——“–——œ™ššœ—š–”–™˜™›••“˜˜˜—™™˜—š˜š”——š—˜•˜—šš–œ˜—œ–”“Ÿ—•˜—”—™—•˜‘—›››š——š•–›š—š˜—–˜™™™’›˜•š—˜•›šš˜™˜™™–›—™—”—•”•™˜œ˜–™˜”¢˜——•ž˜Ÿ–—š˜—˜•™——˜•—˜—–”Ÿ˜”’–™œ™ššž’™˜™™˜——–“š˜”—š˜™——™–›š›œ˜“‘š–˜ž—›“–—›—–Ÿ–™˜•”—•™–—™œ—˜™–˜˜˜—›˜”™˜—••˜’™˜˜—™””˜˜˜•˜™•–˜›š˜—š——˜›˜œ—•™››˜™–š–ž—œ˜•™—œ˜—˜“›—‘šš–—˜™™”•˜œ™•—•œ–™˜–“˜•“šš™–˜š˜˜—•–™–š˜—–•›–š™˜—™›œ•˜œ——“—š—š–––˜–›š™–—–—ššš—˜“””˜—”›—˜””“›˜“™–‘™•™‘–š™››–™—™›”˜˜¢™š–™œ¤™–”˜”™‹›—˜•›˜›—˜—šš™–—£˜™˜’£˜–—–”˜˜›™”œ–šš›“™˜•“™˜–™š™™˜™››”™™“œ™–”››•š›“˜–™—˜˜š˜”›™——˜˜•—œœ’ž™“œ–˜¢˜˜˜•”œ“œ•œœ˜—œ›“–—’˜š˜š–›˜•”š˜™™™˜——œ˜››—˜“—˜™˜˜˜—˜›™˜˜—–—–—˜™’—–›——•™™—™šš˜—™˜œ˜œ”–—–˜š–›•˜™•–™š—™™—•™–š™š–›˜—˜™•—šœ––™˜™—–˜˜˜–ž—•˜–˜˜˜œ—”š˜˜Ž––š˜—š™•šš™—™˜™——“—¡˜”•™––˜™˜˜˜“˜”–˜––˜š—™™œ™˜™š›——––––—¡•——›–—˜–›˜›™˜œ›•–”˜˜—–˜š—”—˜—˜™‘š•š™›—™–˜—œ—Ÿ˜™š˜”˜™™™™˜›’˜—–‘•›Ÿ—–˜’–—šœ“š•™š›–˜–——˜”“•Ÿ“˜š—œŸ˜–˜˜•—š—™˜›•›™˜š™˜—™––˜™––—™–——•Ÿ™–›—–˜—˜šš™¡œ•˜™•™œ›˜•™™™™š˜šž˜™˜–“˜™™–›–›¥žš˜›”—™™’—š–˜›˜–™š—‘˜›˜™•™š–˜•–œ–––š—–š›™—š———˜˜“™–œ–ž–˜™ž™œ™–˜”šš–“”•———™›˜››—š™—™——™š™š—•—–——“•—–™£Ž—›˜™—™ ™œ›”š——š˜’••”–™™–š™™—›œ˜˜—›˜–—˜–˜™“•˜ ›ž•“š™——™—”™—“–˜™˜˜“˜šš”–™—™™š™˜™•ž–—˜˜˜–˜›™–—˜—œ—˜—˜™™•——˜™—™˜™——›š™˜˜—š˜˜š————˜—™™š–™š˜™”–—š—™˜š—š™”—”˜˜–™›”™—˜›š˜‘˜˜˜™™—˜•˜–˜—–—”Ÿ™•˜–š—š———™˜˜™™“˜“—›”™“—ššš˜œ™™–“œ››”–‘•–—ž™––“™š•˜—–—™———™š˜–—™™—Ÿš˜˜ –——š˜˜šš˜™˜›—›”˜š–𛙢—˜›—š˜™ •˜˜š˜š™”—“š˜™•›–™™˜š˜—˜š–•—•™˜”–˜šš—š˜–•—–“–——™•™ž—˜–’™™œ™•¡š™˜˜Ÿž–˜™›———•••—•–—’˜™˜™”“™˜•—™—‹•—™œ˜—•œš™šš•™™˜˜˜ž—––˜—˜¢›š™›šš˜›—›˜š™š™”–˜ž™˜•˜–Ž–™—•š”™š—™™’•›™™˜—™™˜›”“š“™™•˜™–˜›˜›š˜—›š•œ–˜™˜–™›–š˜—•–˜——•˜—™˜•œ—œ–ž˜•›š—•š™–˜”—™™•’›Ÿ—˜•˜’˜™‘š˜—”—•–šœ›š˜˜˜—–𔓔——•š›š˜—˜ ˜˜˜š”——–“—˜•š—›š™˜™™–“˜—›””•™™š›˜•š–”œš™”š•””–›˜šœ‘˜™—”š˜———˜•šœš•———’˜—˜—š—˜˜››™—˜—–™šš”™˜™–”š“˜™”Ÿ””›™›™š—”—˜˜š”˜——š˜™—™–—™˜Ž›–—›–œ’™ž–š•›—™‘™žœ™–™šœš™›–“”–˜–™›™˜—–˜——˜–” ˜—˜——“™—™™•”››—›™›˜– ™œšœ–˜•›••——–š››œ”’˜Ÿ›š’‘—‘•™˜•™—”—”𢗙–˜—“™”Ÿ•š˜•——”˜˜˜•™—™™˜™˜›˜—™™—šš˜˜˜Ÿ––˜•™”–˜™“”—œ˜˜š—œšš—™›””š–”’•Ÿ–˜˜–™š•˜’˜–››”™œ˜–—”ž—˜˜————š“›Ÿ—›ž™™•™˜˜™š—š—™™—–—𗙛𔗙—–›š™™”—•˜“™š™š—‘˜™™œš™––—™˜š™“™’š”’——œš•š‘“˜—˜—”™––š™”›–›˜—›”™™™–•š›™—––™–—›–“™™š™”—˜™š–––•˜—‘•‘˜”™–˜•”š›š™™––™•“˜˜š˜—–œšš˜˜–œš››–™—›˜›˜˜˜š”˜—”™˜•“›–—™”™˜–žš•••–™˜š—–š™Ÿš˜˜•˜’•šž––—•——™™“˜—™•™™—“˜•˜•———˜ ˜™š›˜–š•—™—˜—˜™‘›™œ•›˜–—–•˜›•›—™™œž˜—’™—¡™šš™•—ž–”“ž•”—˜˜—šš–›—˜™—–›‘•–“Ž–•“——š›—˜’Ž”›™—›–—–˜›”š–œ••š›™™˜–˜œŸ—™šœ•š—••–•šœ™˜›•——™ ˜–––˜œ•š”™•”š™—›—œ—œ”˜˜™™˜™•–™˜š™™“›š—™››–˜—˜˜˜™š™–•”——™—˜™œš™———˜—“—˜——™•š—•™™›–œš˜••–š™———˜—™•–š™–˜–™•˜œ”š—”˜––——˜—œ—–“˜Ÿš™Ÿ–—™™˜˜”™˜–—˜š–›—›™—˜”–˜š–˜™˜“–™™•˜—”—–™•˜—šš›˜›—˜˜—œ˜™—›˜™—™™™š–”š˜—˜šš—”—™•š”˜–˜”“˜Ÿš–•˜–’œ™™˜™—–™“˜™šš˜—˜–™”•Ÿ˜—›—™”˜——–š˜›——š–——–˜–›—œ——œ˜›ž™—ž”—˜—›˜›”—˜”™——™›š–œ˜›•›———˜››––š—‘”˜š˜˜š”œ–š˜’ ”™˜˜••––˜œšš“˜™š–˜•–œ—›šš˜–—“—š—–—–™˜•–•š˜œ“š•˜˜—™š™™“›’—™˜“™˜™——˜–œ™™œž“˜™›™›™•›—™–—™–™—š˜›˜˜š”˜—•——˜•‘œ•˜–—˜š–•”˜›”—˜š—–™”———œ›˜—Ÿ—š•˜™”šœ•”Ž——œ—™•š—˜š—––˜•”˜“™š•š˜œœ”˜—”˜•˜•–™™——š–•™š—”žššŸ™—˜œš——•“”˜šš™˜–•–˜˜™š”™˜–—›šŸš—‘›™˜˜™•™˜”–˜•–—›˜˜š›šš›™›—™————™™˜“™™™£˜—™”•”˜“œ™™—––””™š—š™˜ššš••”•™™—–˜™˜™˜ž¢’˜ššš™˜—˜ž—››—œ™“—™˜””š”–™›˜˜‘˜–“˜•œ™—™˜™“–˜–™™••›˜”—™˜“œ˜——–˜šŸ™–™•™“—š™™–”•’˜™™™›œ•—¡—˜—™˜œ””˜œ—•𙓛˜•š•˜—”˜–‘•˜–”¡—™™™™˜œ—™›˜›–˜–Ÿ’–“–œ’˜’˜™’—™˜˜™–™—™“—™——™–“˜•š˜˜˜›—™”™•–—’˜™•›“™’—˜š˜•˜š˜”—™šœ——™™–•—™™˜•˜š™—™š˜—˜—š˜˜–—˜•™”––šš˜›—š›”žš˜™“–™¡š——˜™›Ž“——™—”“š™š—”“–›Ÿ››•™›˜–™–—“›š™˜—™™˜–˜—““š–˜’—˜š™š–—™—˜—™™œ›•˜”›—£š™–—˜–˜––›””•™™™›˜œšœ™˜–—šš™›˜—š—›—˜——›—›š–˜˜–˜–š•™––›˜•”š™˜š“š˜—•—”™˜”••šš™—”›–”š–™œ—”–’›š•”–œ–“’•™š˜˜˜™“•›™—˜˜–™š™˜š–˜–—˜—˜˜˜š¤—™—˜˜š–›“”š˜˜˜˜˜˜•œ˜˜˜œ•—˜––•š™—“”š˜ž­———”š˜›—™–˜˜—–˜”˜™™—˜šš’•˜˜–™—‰™™˜™™•—š™—š™™™˜——™™—•–—œšš™–š˜š›—•–™™˜–š™—•™—”™——–››˜˜™›–•—™ž™˜˜™š•™™ž—–™›™—–—š–›Ÿ–—˜™™›–™‘•ž— •˜›šœ™ššš”•š—‘—“˜–Ÿ™™–”—›——”“˜šš˜–—•šžš“–—–—›œ™———š››˜—™–˜•™™š˜˜™›˜›™”™–š•–˜–”—˜šš˜•œ–˜—š›—–š••———ž˜š™—š——™—˜—˜š˜–šš˜—™š–—˜—–š—–š˜”—”›˜œ™–˜š™™˜›——š˜”–‘™–˜š™˜–š—•–—š˜™–”˜•˜˜—•˜œ˜š•œ•šš–››™—š˜”˜’—™—˜™—˜™”•“˜œ™•š™™¡˜œ—“—™˜— ‘’˜—˜››’™™•–˜“›—£’œœ—˜—–œ–š–—˜™˜”›–š›™›“˜š˜˜•“˜——˜šŸ™’™˜ž››˜›—™™˜”˜š–˜œ•”œ——˜˜™”—‘—›”“œ–”˜™š™———š•— ™™“™œ•›šš”˜•˜˜˜›—™˜™“˜›š™’”–š——˜Ÿš—™›››’œ•𛕑•‘–™—˜›šš—š™’˜”š™Ÿ—™œ”™•žššš•— –•–™™š™—”‘˜˜”–›œ™œ————œ—˜•›—š˜“›“””š–—–›™š™•—•˜•—ž—˜–ž˜š”•™•›™—”‘™˜™••›•˜•—œ˜™™£–›™™š—˜šŸ˜•“—™š˜Ÿ”™“š‘•˜˜”˜š—™’–˜˜•–•˜™˜’–•˜›—™™‘“”š˜Ÿ”œ™˜š›œ–˜–›™’”˜–›™™š™˜–š–˜š”™ ™––š–˜“—”˜™———›–œ›š™—š—–•œ™™™˜”•™•—•š™˜š•𛾛™—˜Ÿ—––¡ª›•–‘šœšš™˜ž™œ––—š“—š™k˜œ›™™›™š™—˜—™–›™™—™˜—”—››˜ —•—š™šœ™‘•˜•œš˜˜—–—s™—•™œ“˜™š˜››˜˜›™—–˜šš•˜–™—˜•˜—š”™š›š›˜“œœ™š˜Ÿ˜œ˜›–™” ›–™šŽ”š˜–š•™—œ”œ˜‘š—–—šš”–——˜•˜›˜–•ž‘™˜•–š™–”˜•–™—™˜•š˜š—˜—š––˜˜˜—•˜š™™—™–—™˜™–˜—™œ——–™š—•—˜ —™˜“˜•–˜––•—–™š™˜œœš˜—–—šš—š˜œš˜›˜˜—™™–™™˜–™”–š———™™š™•–˜–š˜™˜˜˜–™˜›˜™›}———™—™˜–˜™—˜˜’˜™—˜–˜™›—›——™™›˜˜—™š˜•˜—š˜˜——™——›˜—–———˜”ž—˜˜š—˜—›˜—šš——™—•—™—˜–—›—™•–—–˜•˜˜™–œ—•™œ•˜™—˜›™˜™š™˜™———š——™–——˜š™”——˜˜›˜˜———–š—™™—›•˜œ›˜ž”›–›˜™š˜›™“’››™—˜›š“˜š•š™˜™™˜“˜•—™š’–˜œš—˜›™“š“ž˜š™š™Ÿ¡“—œ˜›–—•›˜™›‘–“˜™™”œ”–—˜’œ¢”ž™˜œ“–™•œ“–šš—˜–—™•›™™ž“•˜™›˜ššš—•˜šš—•›š˜˜—–’–—š•šš›™˜›™™›ž–™˜˜™š™˜—“—šššš™™˜”–—š—–›Ÿ˜šœ“‘—˜˜˜—™™š›™”Ž™™˜˜˜•—››•—š˜›”šž™š™šŸš’ššš˜——–˜™“’œž˜›œ™—’˜›‰”—˜–—™—–˜˜™š˜———“—šœ™›™š—–˜—˜–™˜˜™—–šš˜š˜™—›——™›˜š™˜™˜š™š›˜˜œ˜—–˜›š˜™˜™™›•—šœœ˜—™™•––™™—™™˜•—˜•˜˜—™™›™™˜˜—šš—™™˜––š™——–——™™™–—™˜š˜™š™š–—˜——™š˜š—™›˜˜™™–—œ™˜š˜•˜œšš™—˜›—–—™™™•™˜˜™™——–™™˜›˜˜™š˜˜—›˜š–™™™——–”•™—™˜––—šš”™œ•˜–˜˜š——˜š›—››”˜—˜–˜–˜˜Ÿ–š–š˜—–™™–š˜–˜™™–‘œ’š˜™¥™ ˜•“——–˜˜š›—™–•œ™œ–•›š™—‘šŸ“—–š——•˜“ššš›™šœ•˜•˜˜š¡——™—š—•”‰˜™”••š™“˜œ“™”™™™—˜™–˜‘™™””Ÿ”œ•“™”–•‘‘—š™šŸ—ž—–›–Œ˜Ÿ™—“œ–˜™˜™˜˜–™–—–š—–˜—•™š•—“’•”™™–™–š˜——™“œšœ™–—•™—ž“–—œ•›’˜ž—˜˜™š˜”–˜š›ššš›”˜˜™›˜—š˜–“—š˜™œš™–˜˜”™š—˜–›˜š–™™˜™™Šš” ——›–˜“™‘™—™’šš››“›˜ž•™˜šš™š’•š–›š”—š™˜–™™šœ—›—™™™”–š˜™šš—˜š—š———™ž›—™›•š•—–š˜›•–—œ™ —“—››š™—“œ––˜˜—”š—–š”˜œ•—š›™˜›•“ž–š—–—œ™–•™—–•œ˜œ——˜™•š™–š•—œ˜”›˜™™›•™•–•–˜š™ž˜ ž”žš›—™™™œš”˜˜›™˜š—š›š˜™œ›–š—›–š˜—Ÿ–˜™›–—”˜™š—•™™™™šš••—˜œ•˜—š™šš™™•›˜“–˜š›–•˜—š››˜—£™˜—”™š˜˜˜›——•™š–š–˜˜˜˜”™—•’—™š¦”š”—™•˜•™˜—š››˜—•›š˜’—˜–—•——›—˜š™›‘˜™—šš–—Ÿ•–”š›œ“——™””“™˜—–˜˜–”›—”˜›“––—“‘–˜˜–•š•“›“—š—“˜¡˜ž–™™™˜œ™•—˜Ÿ—™“˜˜›•œ—˜–˜——––”˜•—’˜œ™–’ ™š™•˜š–—–•—š›˜šœ——Ÿ›˜“šž—™“˜—›–š™˜• “™›——“˜˜ ˜’–Ÿš˜˜“™œš—˜™œ–˜‘š‹—š•—œ›š—•š™—™›˜”™——’“›Ž—•–˜›–š›–œ˜˜›—–˜›˜™š››™™›™–—™—–™’™™™˜—•—”›˜—–˜—™™™š˜˜•š—–š˜‘›™—•–•˜˜œ”–˜˜—–˜š—˜™˜–˜–œ—–—”›˜––——›˜˜š™—š¡›š•—•š— ˜™—”˜––š–˜šš—”™•—𛕕ž™˜—˜—˜—š˜˜–™š›šš—žŸ›™˜—™˜—žšš˜˜˜ššš”“™˜™—™–”˜™›˜›”™™™˜”•’™˜™ž˜™˜˜›—–™—™——Ž˜š™–”–ž‘–™–™˜˜˜š˜˜˜–™›˜”•’—™™–˜”•— š—™–™™˜˜™–š•˜Ÿš–œ™—”™™–™•—•™—¡– —›š™˜›“˜œŸ—–—–˜–˜™”“—š˜–‘—™œ’’”“—›œ––™—”˜˜”—™˜˜–—˜—ž•••–›•——˜’˜šš”–—˜› ™“›”–––’š™ž›˜–‘Ž˜¢”˜˜™–™œ››žšš•š–˜šŸ˜™™—˜–™›”˜˜—›””˜ž˜”›•˜•›˜”˜™––—™•˜¡£›Žš•—•˜•—›•™”š™ž™™˜™–ž˜‘’˜’›™™œ–œ›™”——šš—¢˜˜œ–”•—›š™œ••————–•—ž–˜š™””›š˜–›™˜–š–—“˜˜•œ™š™•˜™˜——˜˜œ—˜™™›œ›˜›–—˜–˜™–––˜˜™””–š˜™“˜˜˜–—˜•–”–š‘™–š™—˜š™˜š˜™˜˜—–•˜—˜•™™™™˜™•›™—™™˜™—ž•™šš˜–•’˜”˜ž—œ™ —–˜–Ž—˜š—–™žšŸ••˜—˜–š—˜•™––˜š™—š•—š“œ›˜“”›—•—šš—˜“•—›™–žœ›š›ž“’˜™˜š––——›˜š–ž•¡–™–››™˜œš˜˜š—š™˜š›––šššš™—Ÿœ–˜“›–š™—™˜™•š—››”˜–™—™™——”™™žš›—™– ˜™˜›œ•–™”™˜—–™˜—š”–››———“™œ–›™•˜•–›–˜–›—•–˜™˜˜˜˜—™œ˜˜™–™š—™™œš•™™–™š–™’™™œ—›—˜”™›˜–™—–˜—–š–ž———–”˜“˜”—•”œ•˜˜–——•˜•™šœ–œ™–•˜—˜–––—˜›˜–—™—Ÿ™˜˜—˜š–›™–›•••———˜›—ž™™˜˜›•š˜¢•””›——š——›–’–”˜—›•™•˜˜™”–š™™—–˜˜˜“š›œ––—™š”œœ™ —š—–˜›––˜—• ”˜™—™™”˜š››Ÿ™—™™˜¢•™“–˜’–˜˜˜˜˜˜˜•—–˜Ž•“˜–“š˜–œ™—›–˜“š–˜™˜š™•””–—ž˜˜››––˜˜—–™š”————˜“˜•–™™——š—•—–˜—˜š•™“•˜›—•–˜š˜”˜•—™•›—žª’›˜—”–™•˜š›˜™—–™•˜œ“™•˜˜—š—•—˜™™˜–••˜›—š™™››ššš™›—˜•—˜–›˜—–™–š˜›™’›š—š˜”–”–˜’˜œ“—™—–™™–š—œœš˜ –•—™˜ š˜˜ž”˜™’‘š”—–š—›•š™™šš˜˜™Ÿ˜š—•œž———˜œ–—”—–›—š•˜•™™˜“—’žš˜˜——š™—”—–˜šš——–š—–›”¡–—›””› “™š˜™—œ™™˜žœ–——“™›””•“™œ™š™˜–˜˜—™ž•š—™——˜˜™–™š”™˜™—”—™—˜™™›”—––›“˜ž›˜—œ›”˜––˜—˜–™™–˜™š›‘–—˜•˜–——˜œ——•—›šš“—™˜›—žš——š›—œ›œ˜•š™˜——“™š™™—š“˜•˜•™››ž››˜•––“˜–¦‘–——–š™™–˜––––”›“Ÿ•š™œ˜¡—›š›š—›”—–™›—š—”˜—˜˜™“š”—“–›—™˜˜™”––™™™–™š˜™œ˜——š™™š•–œ”™–“˜——™˜›—›˜œ™š˜˜–—š•›—˜˜–˜—–———˜™œš—˜›™™—š˜•™–––“™˜—š™›—ššš˜—•——˜™•–œ˜•”œš—”™—›™—˜“˜šœš—˜˜˜™™˜—š™””——™š™–—œ˜™—”˜—™š™žš–š’™˜™–™˜™–›x››Ÿ–›™˜˜™——”™˜•—™œš˜˜š”–––š˜•™—›™”—–™˜™›˜™˜™”™“š–™›–™”›˜–™™š™–——š˜˜—™ššœ—™™’—™š™œž—›—™š–›™—˜˜™–—›šœ””™š˜˜”™—™˜˜™š—˜›˜•——›š›”—š•š”›’œ‘›–˜˜™™—˜›–˜——–™œ’›˜›œ˜•š•–™—”—˜˜˜˜–——™“—–—–œš•–™—™—•š™”šš••—œ–š‘˜˜™——‘˜’𙑙’”—•›Ÿ™”——–š—™›–“Ÿ™–˜—˜š™˜š’œ™›•𙕙˜˜”–––™–˜—˜›•œ”™˜›—™–ž˜–˜–š—“’œ˜™—›™š”——˜™•˜—™œ˜˜œ™š—š™™—˜œš˜˜–˜™™šš›˜˜˜š•™–” ””š›™‘—›—™˜”–™”˜™–˜––“šœ—”—™•—‘•™—–—››•˜––”˜“›˜™‘š™˜—˜˜šž››™›•œ–“–›˜™žš˜š—’™ž˜›™™–œœ˜š˜•–š™•Ÿ”ž›œ—“™–”–––›”›• š™—™”›˜˜žœ•—™›ššœ’—Ÿ™™›™˜˜•–’“˜šš”˜š–—š–––™š™˜—š˜˜–š˜”“™”•˜˜š“™™š˜˜—™œ˜—•šš’–’›––œ–”•š™—–˜šœš˜˜ž›’˜—™™•”—œ•”™œš˜•˜–œ™ššš˜•œ•••–—•—“—š––™œ–•—››•˜˜šœ•—–——šš–œ™šš•‘—–•—˜ššœš—™™–™˜•—™˜š—–Ÿ—˜˜˜–š™’™œ—˜“—˜˜—˜”š —˜˜˜ —œ›š›”–™˜˜˜˜˜™™˜—™™™˜————œ›¡˜›˜›•˜˜›——š—“”–—‘™—‘—™™š˜š™—˜š•—’”˜—š˜˜“’––——™—™˜”˜š•—™—–—š——š™š“›š•˜–˜›–••™š˜™˜”™™•–œ•œ•–šœ™š“™——–“›˜š–”ž•—“™›š—•™›˜–•™œ™˜™”™šœ ™™˜’˜•™™—š–ž™——™œ‘—š’˜—œ—šš —––˜˜œœ˜™—”œ™™–˜˜™˜˜™™—š—œ™—™™˜™˜š–˜—•˜•———™™˜š˜—™˜™˜˜™”™™˜™˜––˜™™—˜›—˜™™›˜˜™—™—™˜˜˜—™›˜š™™˜˜•œ§—––œœ—–™˜—š—˜––˜™š™˜˜˜ž™œš—˜˜˜—˜˜•™˜–›˜—˜˜™˜—š—˜˜˜™˜›™™–˜™˜—™–™š—˜™”™s™š™™——š•šš™˜˜——˜™—˜™–—œ˜—š˜—™š˜——›—œ›•˜™›˜™•˜š™–—˜˜™™•›—“–™š–˜™šš›šš™—˜™˜˜—™˜˜•˜œ”˜–™š™—›™”˜™—˜—•—œœ™™–˜˜˜™˜——•™™›™š˜š™–•˜™—š™™˜š–š–šœ™˜•˜———˜š™™——˜™œ——™š—–˜šœš›™˜™——˜—š•›™˜š˜—š—™š“——˜›—–”›œ™˜˜œ—˜›˜™œ˜“™˜˜˜šš——–•™˜™™›’™œœ›™››˜˜•™–”˜™˜™˜˜˜—š˜š”™—–š˜£˜—™—š™˜˜“š”˜•“˜˜™—•–˜œ–˜˜˜œš••–™•š•š’˜—“››—’——”—™˜™–—–•œ–—š••š–™›™š–—š–™””——–—™™œ•™™œ˜”™™˜––—˜™”˜›™™—™—™–™˜˜–˜˜ž˜š˜˜š•œš™›š——’˜˜œ™™˜—–™™—–—™š–—™›˜—˜šš–—š—•–›™™›š™™˜–™——g™™™›˜˜™œ™›‹™œš§˜™˜˜—˜–•–™˜™—˜™™”— ˜—›š˜—™™˜–——˜˜˜œ—œ˜™™š˜——˜˜—˜—™™—›—œ™™˜—˜™–˜˜—˜”—˜›—™š˜˜™˜™˜—•š›™˜˜—˜–—•š——š—™›š™™š™———š™–š™—”˜›•—™—š˜˜—™–š—˜˜˜•š˜™š™™˜—˜˜˜–––š˜˜—˜—™˜™š˜š™—˜š—˜˜–˜—™•˜•˜——–˜•šš–——˜˜——›•œ—š——š˜–˜˜›—––œ˜™˜˜˜—”——š”–˜™™œœ•–˜•™“—š˜™š›™—•–™™™šš–—˜™˜•›™š˜™—–™™œ–š˜šž•˜—›™•–Ÿ˜™”™˜•”™–™š–š–˜•—“š–œ—™™™›“˜–“™˜œ˜™™•Ÿ’™š—š–—™“’“™›•š™™——œ™˜Ÿž™””•—˜˜š™’”–˜•Œ›˜˜˜œ”——•˜˜–™˜˜˜œ“›™—–™™‘›˜Ž™˜—‘œ—˜˜™˜™—”™Ÿš——œ‘—›œ—•–”˜š•˜›˜“™˜•œ•–™—™’—›—˜—˜—˜š•–›—•˜™™›™˜—˜™—š—šš–˜™˜œ•›˜—–›˜š˜™˜–—–™—›œ˜™‘’›š™˜˜—–š˜—™šš•š˜˜ —™—––›™œ˜™™œ™”™—•–›”˜–––š—˜›–›š•—˜Œš•˜œš——œ–™™˜™™˜™˜“˜˜›™˜›—™™œ—™—’™ž™•—˜™š“™˜™—˜˜™˜›˜–›•™›—˜››˜—”¡•˜˜›—˜žš™™™–—–’”“——•›™”–——™––˜˜›˜’•™š˜—”™™˜™™š˜––˜Ÿ‘”˜š——›˜—š™–š™˜™–™š™•™˜—›š˜˜“‘˜˜§˜››Ž–˜˜›“—š–—››©™œ—’“œ–˜—•›”— ˜™—––›™—¡œ–“•—’Œ—¡’™™ž“—š––”šŽ—–œ—˜–Ÿ§˜—––““šœ•žš”• —š“™–š–——“–“•˜š˜™˜™–—™™•Ÿ˜’œ˜––™˜™˜—•ž•™•™œ •™˜›•—œ›–œ–ž¡˜•˜œš—™œ’–˜˜•”™˜™˜˜™™š¥™———™›˜‘œ—”œ •–˜››”–——™œ™  ”—••¢•–™˜“¡•—™•–•Œ›™’—Ÿ’›’•˜’š–˜™•–Ÿ•Ÿœ››—™•›–™˜œ—˜—˜—™™š“—˜š‘“›š›š™•˜––™—™˜™™—™˜›˜™•——˜–—™—–™™™ž™™—™•™’—œ™™™š–™•–™˜ž—™—™—”“™š—™–™šš™˜™™™™›šœ—”•”–›–šœ›–š—š›˜›•–™•—™‘š›š›——ž–›™™š—˜–™™š˜œ–––›——˜˜–›™š˜š›—˜˜——”›—’™˜˜––˜™•˜›–“–•šš•˜—–——•›•™“š“”š—š—˜––™™šš›–˜•œ’˜š“•™—•™›™š—™™œ˜••”–š•›™–™–™›”–‘˜š—••™›––šœ–˜–™™•’•–˜•˜š™—š——›•šœ—•™ž–—–š–˜–š“››š—•šœ•š–™˜šœ—›š—š¢—“š˜›™•š•›”“–—š—–—œš™”˜šš–•–š—•“˜œœšœœ—›š•”𙕑“—–•“š”–™–™˜˜™™–˜›š——™–—˜™“™˜—˜š•–š™˜˜œ›”™ ˜–—›™šš˜•šœ™—’—™—“›œ˜—™—–—Ÿš”š›—˜™š˜™™—–™›•š•š’˜•‘—›™’—ž˜š–Ÿ•š˜–™—š˜“–——™Ÿ˜•—œœ——•–—‘”–—˜š•››—™–”—œ›˜˜’˜šœ—“•š——š˜™——™•˜”—˜–——™—˜—•—™–˜–˜—˜•—˜˜––—™™˜™’“˜•™š™™™™˜˜—•—˜–˜••›–—•˜˜–˜—˜™——™™—šž““š—™›˜š˜˜˜ –š˜›——ž•–šš–˜–Ÿ™—˜˜š˜˜™™˜š›™š–˜˜—“™–•—“šœ™˜˜™”—”˜“šœ—™™˜–š—œž–’œ“™—˜‘–žšœ›—–š’–š›™™™šš—˜›•›——›–šš™—œ››’œ“™˜——–Ÿ˜™˜—™š–šž™š˜š˜˜—›’—–“›——›–—•˜•˜š—™›šœ˜™–˜˜™˜—˜–ž–™–™›–˜˜š™›™”—™“•—–”–•–˜˜œ–˜—˜–—™—š—–™”™˜˜–œ™–¡—š—˜˜˜—–˜˜˜˜˜•˜™——••˜’™˜–—œ˜™“™–›™•š•—˜˜›”—œ™™™’˜–š™—˜šš“œ˜™™š™™™–™™š—˜———Ÿ›•˜™ŒŸ•“™™—š–•›˜—˜˜œ˜˜¥›—“š›—••—•–—š˜˜–“–—›—”‘–˜‘—Ÿ–›—›™•™˜–••™——•™—“——–—’›˜™•˜˜›š–”›ž•–———›˜——š•™š›™œ˜™šœ•–•–”–“–š–˜˜–”š–š˜•˜˜“›ž—”˜š‹—™’––•˜••˜Ÿš™™–›–œ—•–šš•˜˜—“•›› žš™š™™•š—’–”’™œ™—•‘¢•˜–›‘—˜›—•›œ”™˜—˜˜™˜”–‘˜™•š”–——”šœ•–œ”˜—‘•˜•””œ”™—–œ˜—“˜›—––™’•––›•—˜—˜˜›™”˜›™˜–—””—š”—•™˜˜£˜›™–œ“——˜ž˜”“”›œ–—œ•š—Ÿ•™”˜™››™–“œ•ž“˜—™–›’šœ–•™––—“˜”—œš––¡“•œ–•™–œ˜œœ™›œ›‘š••—–™š™—–™–‘™™˜šš˜””—˜”—›š˜•˜–š ˜–—“’™——˜šœ—™•——™›˜™—•–ššš•—™––“•—™™—˜—˜›–˜›š™•˜™˜™”–”—šš—œ•”—™‘™™œ™—–—›’—˜”—™™•—›”—––›˜—™™˜›–š˜——š›š™—š—–™™˜™•—š—–š™—›˜œ™™š™˜‘œ™–˜˜•œ™›•—˜“˜™—˜—––—œ˜–——™——𔕖˜˜–›˜šœ—š˜—•–˜™›š–›šš˜™–™™—•˜˜›–—˜™˜˜˜—ž•™“˜——˜•–—™šš—›™œ—™˜——™˜˜–š˜™™˜›˜˜–™—™—˜—˜™”˜˜–—˜š——™™™—˜™˜˜˜—˜—˜š™—™™™š——˜——š™š˜—˜——–—˜™–œ™—˜›—™š˜–šœ———™š—•˜›˜˜›–™—˜š—›–˜—•—™˜™˜—™›——˜˜——™—˜˜˜—˜™˜˜˜˜˜˜™–—™——™˜—˜›˜š——˜˜——‘™™™˜˜˜˜™™˜˜˜˜˜—™–™—˜˜——’š—˜™––˜˜š˜—˜™š˜—–—™˜˜–˜˜™—˜™™™˜—™˜•–˜š—˜™˜™š—˜—–˜˜™•™˜—˜—˜—™˜˜˜™—˜™š—˜™”–˜—™–˜œ™˜š˜š˜“–—šš˜˜’œ˜™›˜˜”•–˜˜œš–™›˜™˜š—˜˜”š–˜˜˜–—˜—™™—š™—˜™—š˜™—˜˜™™Ÿ”‘–˜v“™™—›š—™˜™•˜™¤“›–š˜™˜™›™˜™•˜——•˜‘”˜˜•™›•š˜•š–“˜˜“™”š–˜—˜˜–›š™—‘™˜’˜˜—”›˜–‘›—“š–ˆ˜™•—–—˜˜š••”™™š‘˜œ™—•›ž”——™š›—”—–˜š˜–›—˜——”˜›™•˜“–˜™–—œ—¡››™œ”œ––˜–™”š™˜™“”˜ž˜˜–™’˜š˜™””™—”˜—šššš›•™–•‘”œ›—’™›—“’›˜–”™˜˜™š”š–Œ™žž—˜–•š˜œ˜š—š—™™•™˜šš•œ™›‘š–›™™•›™™™™™–“™šš˜›”•š——˜š“š˜˜“™›•›˜š•——•’š•—•–ž˜™˜”˜™–›š›•—”˜—–œ“–•˜™š–—™•œœ›š–˜š–›™™”–ž˜›’ž˜™š™œ“˜¢šš•—š•™•’œ•”›•˜–˜–•—–š›–œ“˜–œš—”˜˜–˜˜—˜–™—››—›—™›•š•—™Œ’•‘™›“›œ•˜˜•—––‘””š–™›”›™œ—š“˜–‘–’˜—›œš˜œ–•–˜—˜—œ”—›˜˜—œ–”––˜šœ”œ˜˜––™–™•˜˜—š™œ˜˜“—š˜—™˜•˜–š–šœœ—‹˜ž™•–™˜—•˜˜˜˜––•š˜œ’•–˜—›—™™”—–š˜—Ž–—›——˜˜™—™š”šš™›˜˜•š–™–™–‘™—˜—š–—˜™”˜˜’š˜”™˜—˜˜˜–›¤•›™™——œ”—’–˜—™–˜˜›š››››šš–—“šž™—™•š›˜”—‘˜š˜–—™–˜Ÿ—˜–š—›‘˜™˜šš•Ÿ˜œ•¡™˜”ž˜—›˜š™—˜–––——™••—œ›—œ™ž˜ž•˜˜˜œ˜”š–˜š”–˜–™žš˜™’›—˜””—˜š–š•›––˜œ™–”–™™™š—›š——š———œ––—˜•™—™“˜—›™“—“™™“˜˜˜˜›˜›˜–•–——–˜—–•˜š™˜š’™™™—›™˜™˜––—™š›™›Ÿ˜——š›——™•™™–š——š•™“˜š”Ÿ—™——–š˜˜œ”—˜“™—˜™“šœ™˜œš—™˜™“–”˜—‘—›˜˜”™œ—”™•–—”™™“””•™—š˜––˜š™˜•–š™–š˜’œšš”–›–˜™“–™•œ–™˜žž—–•›—˜˜˜™š˜˜——š˜›•”›˜˜™˜™”‘˜˜”š–—™’––˜œ˜–—œš™˜™™—•˜š˜—œš—–›“š—˜““š——š——™™š˜˜––––Œ›˜˜–—˜Ÿ™—˜˜™˜–—™–––•™™–•‘—•—™š—’˜‘“—””—˜™––›™——˜•˜œ•“š”–”˜•––™—œ™˜œ›——™š™—––“™˜—™—™—”š™”••™™˜˜›“—œ ™—šš˜“œšš•™˜”˜˜—•—”™––›˜—•››˜—–—”˜šš——˜™™–—˜š›—›—–˜–”šš”™–™ ›–™š™–——š——™––š™—š™ ™˜•™—š˜šœ›—”Ÿš˜—˜”•™—••—–™˜—•“”˜—–˜•˜—˜˜™—™š’˜˜˜”›“—œš“˜—™™˜˜—™œš’–š™˜™›—Ÿ˜™“˜™˜›˜™–š˜“˜Ÿ•˜š™›˜—˜˜™•™›˜”œš—š›˜™—Žš›œž“š˜™–—š˜—™”˜™•™™™””–•š—™˜˜™•œ—–š•–š———“•ž™”™™œ–•–—›•˜ž˜›™˜˜™—™™œš›’œ˜š–“˜›˜›˜˜– ˜š˜—œ–—•”’ž–™–š™œ˜—’˜•š•–˜”›˜“™——•––—–˜™™”˜œš™—›––˜›˜œ˜‘˜•—™›–––™™”›——š——–•™˜—”–›™˜“––”™—˜š™•—™žœ—š˜——™ž•›˜––˜˜š—–”˜š˜š–˜˜—‘––”˜˜˜™š˜—–˜•”š–—™—š•—˜š™—››–•—˜“™™˜˜›“˜šž–˜˜——™šš™•——™—™–”–™—˜—‘––™–™™—•™˜˜›™˜¢—––˜™š—••”Ÿ–›™—™•—’›•œ˜—›™–Ÿ˜“ž•–œ—•™š˜——”˜š™–š‘Ÿ˜˜œ”˜˜¡˜•˜™–šš˜—™˜˜™˜›——•™™™™šž—™š–˜™–—•–œ••—š–˜•˜š“›˜š˜šš›˜—’˜–—–˜˜—“™•™™–˜—™œ›™›œ”š™˜˜–˜–˜—™–˜š›˜—™™™š˜š—–˜•˜–—–—˜š—™—š˜™–›—™—œ˜™–—”™™›š˜˜•™™—–—š—œ”–—™˜™”™™—˜ž™™–˜˜˜—œœš• ––—˜—™˜—”š™™˜“˜–š›—™š˜˜šš’–›˜˜˜˜–šš•˜—–”˜™˜™”›š˜™™—–™™”šœ•–—˜–—™–—™–™š˜›™™—™›—›˜˜™š™™–˜™˜“—š˜–™”—™——™™™—”–˜––™—™š™˜™˜˜™œž—™˜˜”—™”œ˜›˜›˜–š–———˜•—••™›˜œ—–™˜˜œ™˜”•–Ÿ˜•™™˜•š˜Ÿš–•Ž–˜˜••‘ ™™—”™™™—–œ›˜—š—˜••™›Ÿ™˜™•˜™šœ—Ÿ˜š™›’•š™””—•—™š™–•—™—––™˜–”˜—•›˜”–™™—™™——’–“š—–˜›˜—™š™–™—™—›”›š™™ž——•Ÿš—˜›ž—˜˜–š——š˜œ˜™–™šš——™’˜—š——˜œ™’–œœš”˜žœ›š—–™™š’•™™šš—š˜‘˜——™šš˜–”𙓗–œ›‘•™–›š—˜š—˜ ˜•˜–™™‘š’›—›˜š—”—˜’–˜—•˜˜›•›——š™™™—›”›ššœ˜˜—˜›—šœ”™”–—–—˜™—“—™—“—˜˜š™–•––––•—–˜œšžš˜˜š›•——–œ•—–œ›———™””˜—š––•—–œš™”ž™–›š•”œ˜š™™— ¢š¤•™™˜™–˜™—˜œ¢˜˜Ÿ™›ž™—”—–—š—ššœ›—–™•™–š••˜˜˜•z›˜œššš˜—– ™–žš™œš–™˜˜™’›š™š™‰œ›—˜™—˜™œž˜–•—–—”œ—šš—™™š—šœ™–™™—šš—›–š˜˜›˜›˜›•™•˜ ›––™š •™™“•–˜“—’œœ–›œ—™™••˜˜šž˜™“›—˜˜—œ—–œ’—œ˜•œ•“”—•–˜–•™—–™œ—•š—™˜˜˜”š‘“˜™˜š™š–—•š˜”œ˜™š–™•˜–™˜–š––›”››–™˜”œ”˜›”™–ž˜•˜––™–˜›”——™˜œš™—–œ›™˜˜˜œ™š—˜™šš˜™“—˜•™”—˜•œ—”š›–›œ—š˜—˜›šž™™˜–—˜™——˜—™™™”˜–”›œ›˜˜–š——‘œšš›—›˜—”“š’™˜ž”–—š”››˜—”’˜˜•›™š‘š™™—•›˜š›™˜˜•˜˜——–š“˜œ™”™š“›™˜š–—™˜™™™Ÿ—˜™—–™˜˜›—™˜™—™˜—”˜™™™™™–™˜™š——•›˜™š—š–——™–˜˜—–šš˜—š˜–›š˜›˜˜s™–™™›™˜™˜˜š—©™›——™—œ—•›˜™˜•š˜”˜•˜–š˜™™˜——™—™˜›–˜–™–˜˜˜˜˜––—“˜—˜˜š•˜™š™š•˜”–˜—˜š–™›˜™˜˜™˜——™˜™˜˜™—˜˜———™™™š™˜œ—™–—˜Ÿ—›—“——š˜—˜˜–•”˜—˜™˜šš™•˜›œ——š››˜™˜•——™–™——™˜™™—˜œ›™šš›˜š—™•˜–˜™——˜˜———™“•˜Ÿ—–›™••š‘——•“•œ›—˜š˜œ›˜›˜™•›šš•—™—œ•—™™›–——•”–›˜•–š™˜™˜”Ÿ—™™–›™–™œ–’˜š™š”™Ÿ™šœ–—œ—•–™–••˜™˜–˜—˜–š¡œ—–™™˜˜™š•—¡š—š™š‘œšš›˜š”˜“Ÿš›–—›˜ž””–š—˜••š’›•——š–”™ž–›™™›–——›ž—’––••“•–—œ™˜Ÿ’˜™–š˜•™›’—›•”“’”›—–œ™—œ™˜˜˜š˜™™——•’šž’˜™œ”–”œ”›››—”˜˜›››–––”œ•™•“•–˜š˜—¢šš˜œžœ“—’š››™—˜›”™”ž˜•””›—•™—™›“˜–—”–‘“”™˜—‘—œ˜••”˜šŸ˜–‘—ž•–š˜’“•“”—œšŸœ˜–š˜¢š˜™˜šœ–—”–˜ Šœ’š–––œ—–˜›˜˜–˜–š—˜š˜—’˜™–—š••”˜›—–”‘˜–—–˜š—›—•˜–—™™Ÿ™˜—’š›–”—••˜˜™¤˜—˜”œ˜š–™˜š™—š•—”¡ž’š›˜œš–—”•—“œš– š—››˜“™”–‘‘›–š’™œ•–£——–™™”™——“•”™•››š——“”™™™™™–“•—˜››œ™œ““˜—™—™–—”™™š•–—•œ•”–•››–—˜—š”™——™’›–—•–˜™’–šš™‘—Ÿ™˜–˜™“—™›—™œ——–™š˜—šŽ–™——”™œ–———™–š“š—“˜——˜—›—’’—–•–˜›˜œš•˜•š›–š™–˜–”—“Ÿ––•š•™œœš™—–š––š–˜˜——•—“”›–Ÿ˜•––œ’˜–—–’•—›–—–š›˜—˜—–›˜™™š›˜–”›™˜˜™— •—œ˜™›ž¢—›”˜—š˜›•—˜š’ž›’œ›•—˜šž˜™—•””˜—˜—™˜›˜––—˜™˜””˜˜›šš›•Ÿ˜™˜˜˜—›•—•˜˜˜˜œ—™›—™˜˜—˜™šš”™———•–‘•™—šš›™—˜š––—™™š˜–™˜—•œ—˜—™–—›—˜˜š™•—™•—ššžš——–“˜˜š–˜š˜™˜–™š™—›˜˜š˜š™˜——•š˜˜–”˜——–—˜•˜š™™–œ—š˜’™˜—˜—•˜•šž——–™™™—˜ š—•˜™™™–˜™š˜–ž“–˜›–—˜š˜˜˜™—˜–—–¡˜˜™œ™–˜™–˜›–™—™œ˜•–—–˜–™˜—™——›™––—˜˜—––™›š–˜—™™”ž–™˜˜›šš˜›š—–—–˜—˜™”•›”›–›—“›——š™––——“™˜–˜—”–——˜›‘•˜š”š–Ž˜•™˜˜—”™˜–˜”—š•™œ——’™•™™™––—–•ž˜˜•˜––˜š– ’𛑛—•”•œšš‘™“˜››–––”šš—”™—ž–š•—œ¡—•™ž““•™”–—•—•—˜ —‘š˜•—™•š——˜˜—˜˜—šœš•—š˜œœ•“‘˜™‘“—𑛔𕖗”—•˜–›™™””š•š ‘™”—œ˜™—•˜šŸ——––›™––›Ž¡™–ž™™™™•œ›š›šš•›œš˜—–—™“––—˜–œš”—š˜™•™—•˜—™™•–——™–•™–˜•–—˜—™™šš—™š—š™˜œ–š—–›˜š—˜–™—•˜™–˜‘—˜—˜™—‘˜“˜˜š™•–˜™™šš˜›™—–————˜•ž˜š˜—š—™—›š™—›——š——•™›—š•—œ™˜—™–•—˜—˜™™›”˜˜šœ——•˜—™˜—˜›’˜˜˜—›––™š™•˜š—ž”—™˜œœ—˜Ÿ•–—š˜––’š˜–˜˜˜š‘•—˜—˜—›—ž™™˜š›™”™˜˜™š—™š˜—›š™™“—–—š˜–•—›“–”–š““š˜š“œ“˜™””˜“”š—–—›™™¤š””˜—š“š™—–š›™¡•——››™•™˜–••š”˜šœ–›˜—–›–—š˜•––˜š˜™•𙓣™ ›˜™— —••š—”œ—““•šššš™š¤–’—›š•‘——‘—–—™–•›––™–›š•œ™—™—ššœž–——˜–—˜œ”“››˜——”™––—˜™•™•™šš—š™›™–˜•¢š™–˜™š™–œ˜˜˜– ˜•—™˜š˜ž’—•œ”•–š˜™™—˜™˜“’›œ›œ•™››——œ›˜•”ž–˜’•œ˜–—˜——— “˜›•™œš™š›™—–‘•™”–”“–˜–™—›”šš›•›—œ˜•˜™š™—“–™˜™•˜—™™—™œš•”•›šž–”œ“–›–›™œž˜š›–——˜œ™•’—š˜—•–˜›“”™šš™ž•œ—šš™˜š ’– œ˜œœ–•—™ ˜˜š”–™˜ž˜•—œ˜›•˜•˜–™™•—““›žš––”ž›—Ž’™””“˜›š–›˜˜•˜˜™—š——››¢˜››œ˜•š”’•š–™˜–‘–›£œ™œ—“œ˜—˜™––“ ™—˜›”˜•—™Š––˜–š ˜™™››”•š™–™–’›•™—–—’šš—–š—š™”™š–“•——™œ˜˜˜—™˜••˜š˜›˜š–™˜˜˜ž”™–Ÿ••—˜–›››˜—›˜˜™™™—–˜˜——›š˜–™˜š—š™–›˜—™›šš˜˜“™–š˜™––˜—™š–™––•›”—”ž˜˜–’•š—–™——’•˜–—•—”˜”™™›˜”™–—šœ™š—’™—“˜™œ˜›“’——˜–›š—˜š™Ÿ™˜˜˜˜–˜—™–œ™•––—“š—š™—•™˜š˜š”œ™˜’™•™—••–——˜˜–˜˜œ’˜ššœš›“š—œ”˜–›–”™˜˜™š™™™™˜—–—™™™–ž˜•™›™™™——›—•—”™œ––‘–œ—–•š™™™™š——˜——”š˜˜™šš—™“™š—™•Ÿ››—›—™˜–—”˜——•—š–™˜—˜ž˜™™”–˜™•šš™˜›—™–˜™™––š˜˜•™™“–™——™—˜›—–™˜›œ˜™ž™——ž—•—Š˜™—˜™˜™––—›™˜™˜™—šš˜—˜—›–•™š”™œ™š•˜—™Ÿ™˜˜“—™•™˜™˜›–˜—š˜—™•š——”—ž›˜–——•™——š—˜–˜˜ž˜˜˜•–š™˜•–”˜—œ“˜œ›˜ ˜—œ–šœ˜˜—˜˜‘™š™’™˜•™˜›šš˜–˜•˜›˜™——”›”–š•˜™˜•‘˜˜™•˜––——˜”˜–™˜˜›™“˜˜–—•š˜”–˜–•—’—œ—‰˜—š—™˜——™“›š˜–‘Ÿ—–—˜˜–˜••”˜™‘‘š™˜˜’›™™—˜š˜•˜ž›——šœ›—•š————™Œ“œœ”’“•˜—š˜”’š”™•š—˜š˜–˜–—£™š˜˜š™˜šš›–—˜—™œ–˜š–—™š™˜”“–¡—’“—›™–™ž˜•˜–˜”›–œ“š˜”™ž“™˜›—œ˜§”™‘—“–”˜”Š–™›–•™—•™–˜šŸ˜˜™ž¡——𔓖—•—™—œšœ—˜”Ÿ•™”–“—’š”–˜›•˜•™œ–šžšœ˜—˜–™™˜———“—˜•˜š˜—•š——–˜———™™™—–˜™˜›œ’š‘™ž—•›š•˜—š•–—˜—˜˜š™‘—‘•›™•—œž–™—–‘–›š™—˜••¡——•–—“—š˜š˜˜™˜–•–˜žš—œ˜›˜””˜›•™˜˜˜—˜™•”—˜•™—œ——˜“–—™—š–˜™—“š—“›˜–—˜œ™™™š›šššž—š˜š’—–—˜“—›–˜˜—’•‘––—™˜”–œ––—–ž’š™˜˜—˜›—›–”˜œ•”˜™œœœ–—˜œ™™œ–™––——Ÿ”˜™žš›’”ž››—’•™™—˜———“–—•“™˜˜—–œ•™“šš˜—œ˜——–—–—˜ž•˜™Ÿ›š˜”——˜™–•–›™–••ž™œœ˜˜™˜˜˜œ›–˜“–˜ž›–—– ˜–™–•–›—ž˜™—•–𔕙Ÿš•™•œš›˜™”š˜”˜™—›’œ—’™˜——˜œ——›œ••˜”—˜˜›˜˜˜œš—˜š–™˜™™š’–— —”™—˜—Ÿ›•™˜˜˜›”˜ž™—™™›“•—™—˜™™–˜šš˜˜“”—™š–—š“™—”š–š–˜œ—œ–‘—Ÿ—–—šš˜˜›••’–šššœ—š›•š”™š”“”˜™š›—˜—˜˜˜ž›˜—™—–˜˜—›™™™˜‘˜™“šš˜™–™š–˜›™”˜–—•œ˜™››–™›— —š—˜•–™•˜š”™˜•’——•™Šš˜š™š˜œ–———˜ššš™–˜——˜›˜–”˜—š—’š——‘“™•˜––˜™”˜–š—”š–œ¡—— ˜š˜š•”š˜––—™˜˜š›””–ž˜—›˜››š–—œ˜—™š™˜ž—˜˜Ÿ™•˜–—™™›˜˜˜™™›˜”———“š˜—œ™–™—”œ—– ”š–’›’˜—œ˜—™–š•–›”œ˜—˜˜™•˜™—˜˜ž“ž–˜——˜š—–˜˜˜–˜˜™˜–——˜™™—˜˜™˜˜™˜™š—˜œ˜——˜˜——™—˜˜˜˜˜˜˜™™™—™™˜™˜—™™™˜˜˜™—˜—˜˜™˜™˜™˜˜˜—™™˜—™™—˜˜—Ÿ—˜˜•—˜š˜˜˜™™™™˜˜˜™——™˜–—™˜˜—˜˜˜˜—™˜™™˜—˜˜˜˜˜˜˜—™™˜˜˜˜™˜˜˜˜—˜——™˜˜˜˜—˜—”—˜—˜™—˜˜˜˜˜™˜˜˜›˜˜—˜˜–˜›˜˜˜˜˜˜—š™—˜˜˜—˜˜šš˜—˜™˜—™™—˜˜—™™˜™š™™•˜™˜˜˜˜˜˜˜˜˜——Ÿ™™™˜—˜——˜™˜˜–—™™˜™—™˜™˜–˜—š—œ˜™™˜——— ˜›—˜š–š––—˜•šš™–™˜” –š™šš˜™š—˜——–——˜œ–š–™“—˜š—”•œššš™™”—––““œ˜šš™š™–—šš—™™™š™š—š–˜œœ™–™–™›––˜˜˜™–˜ššš˜šš˜™”–•–˜—š–—›˜š˜–—š˜—š—˜š˜š–œ–™™™—›–˜€›™“š™š–›˜—›ššœš™˜˜˜™›“˜”™˜”——•›››™˜˜˜šœœ™™š—™”—–—š–™“™—™—˜˜™–——š™–—™•˜“”𛕙˜—˜˜˜—–”˜œ•™—™™˜™–”–——–•›™˜˜—¥—›˜™™“—”—˜™–˜–—™™™–¢šš˜”š™˜™˜˜”š™™ š’™•–œ˜˜¡“•”—šœ˜––š—˜””–š–˜š™—–—›—š¡•˜™™‘—™™™––—–•—•˜˜•˜˜‘—–˜–™”š›–˜™”“˜š™š—–™˜—˜˜’™“˜˜™Ž˜˜——“”™—˜š“™––™™™—˜šœ›˜”—™™–™š—œ›œ˜˜—™˜˜š››”šš–•›—™š›—™œ––˜˜™——˜šš˜—™—•ž—–œ“—–š˜—“šš˜˜˜˜—–›—˜˜œ˜™˜“•˜˜››™——˜¡™––™™“™™šœš˜˜œ“œž™›—–Ÿ–‘˜‘•™‘˜š——”š™–•™š›˜”—–˜’—“˜˜”—™œœ™–”™ ˜šŸ—–—˜–‘“˜ ˜–™“—––™˜—”˜œ—™œ‘š”–œ™™”–”–š™™š—˜›”š™•”šœ›ž–˜š˜šžš————˜œ˜™š”’™—š™™—–˜—•“š’•—˜œ™šš›š˜–—š”™—•—•™Ÿ”š”’˜¤—˜“”–š™—— –””š˜˜œ˜—›šœ–™›š”—“˜“•Š“–•™™’—œ•™–™—™œ˜ ™š—•–š”š˜˜œœ—’––™˜———›™˜šž˜•™—˜—Œ—––›“˜š—š™—•˜—–˜›•–”˜š—›Žš•˜˜šš˜™•–¡–™˜š•—˜›˜š––˜––œ˜œ™—™˜™ž™˜˜™––š˜–™”–™–š™–˜˜——˜––˜œœ—›‘˜—šš˜˜˜”™—Šœ™™—•˜ž™–›™›’™™œ—–’˜•›˜›š–˜›™š”šœ–•™•™•œ••”šš˜˜š˜š—››ž’˜—˜˜——žš—˜œœš™››š™›—”˜™——–˜–•“š˜™ —™˜›–›“˜œŸ›˜••““š™›—›““™™›žš•‘•š™ž˜—•–šœ–›š–•—˜˜˜—Ÿ——›š“˜™—˜™˜›“˜™•—›˜–˜˜–”›“˜›š˜—–™›š”™——•™˜—˜•˜˜“›–˜—š™•˜˜––”—“—›——•’—•”žœ™—Ÿ’•š—“—˜•“’”™˜—“™˜œ¡˜›”“š•—˜ž–—š’–˜™œ—––—•˜”œ™’˜˜™™—›™˜›™š™•˜›š”––š“”œ—˜˜“›•ž–™‘™”˜—™˜šž˜š•—”•›—•˜š˜‘‘™˜˜ž—••›˜“˜š”™“š””›œ–š•˜—˜‘™™˜™““—˜š˜˜—š–—š–—™š˜š™˜š–œ“™š™œ™•™“——–š™•—š—˜”š——™––›——™œ•›—™—––˜˜˜™˜–˜–•–˜—››˜—“”™˜—š–œ“˜™›–›—––”š—š™’˜•™˜™š—™š–˜‘–•—––”––••™–––›—“œ™š˜———˜•–—œ—Ÿ–˜•™•–——ž”šž˜——•—š—––˜”—•œ˜–˜˜™™š˜š”–™˜›—˜˜š•—™”š››˜˜–––™—”¥–™™•˜™š—™™˜–•–™•–—™“˜–™”›˜™–š›—™”š˜™•›•›™š“˜™¡Ž”›–˜˜š–”˜——ž’”•š™™•”—™œ˜‘™—™——›šš›Ÿ”›•”“–š˜˜™˜•”—”›—™›•–™—œ™Ÿ —•š—•”Ÿžž’“š–š–—˜œ–˜—™™š˜˜•›™•”˜”š—šœ—–”œ˜œš™”–——˜”™ž”™—™›™”–˜——™™—–•‘–˜˜›—–š—™–šš–››””˜—›ž—˜˜˜›™˜–———œ›š”˜–œ‘›—šŸ˜•–“šš•›š–“œšš™š˜™—›™”—˜™˜™–•™—“›˜šž––—ž–™–˜š›–™’š–—œ•›™—™–˜•––›‘™—šŸ–œ”–˜˜šŸ—›š•—™•–šœ”™–˜–Ÿ•–˜–˜—•˜––™–—˜™˜š–•™™—˜˜š—™™–˜›™”™š—›—™š”œ–œœ”˜–—™–––”›—›žš”›œž”™˜›••’˜“˜•šš–——˜—•œœ™•–”•–˜™•u–˜•—œ™–•”—˜——–œ•™˜š“˜¢š–––˜š™˜—˜——›——Ÿšœœ˜›—˜™™˜’˜™šš™•œ›š˜™••𙙙𙍖—˜˜™›—––˜š™›š–™˜˜š–˜™™•—•—•™š˜›˜—˜•˜š‘–•—š–˜•—˜•™•–—™—ž—˜•˜™›•”™š˜™—š™˜™—–—˜˜—š›š——˜”–ššš˜™›˜˜›”—šž˜—˜—’˜œ——™––˜š›˜—™™•–œ“—Ÿ˜—™™žœ–•™™‘™–𖙙𙙗™˜˜–˜‘—“–›šš––—™˜–˜˜—š˜˜š“™’œš˜˜•—ž™š•—˜¡–•˜‘˜™•™š—™›˜™—™¤˜š™šš™•–ž—–˜”—™š—˜˜—š˜™˜™™˜™˜˜”™›šš›—–™™–™šŸ™š˜™šš•™’œ›–˜•šš˜˜œš˜™—‘™——––™š›˜Ÿš–˜˜™Ÿš˜“”–š˜–—œ•–—˜–˜šš™——›–˜˜œ™—š–™——™˜–™’•™™œ—’––—™–“œ™™›•˜›—˜š—˜”œ›–””—™•–••––”˜•™˜™—›—˜š—˜—•˜——–˜•———›š™›’—ž”šŸ˜—–œ——––›˜””•™š­“–—–š”˜›•”˜›šž’”˜š˜›™š›”˜—–•œ”›˜—š”š™”™š™™–š˜›Ÿ™›•—œ›–š•š™‘›˜—˜š—•——™—–—šš™›–›š— •—š˜–˜™—˜—š™˜•™œ—˜––›˜™ž“—™™–”˜œ—˜š–š—––œš—••›˜—•Ÿ˜š•”›”˜•™œ™”——’˜–—›™˜˜šš—˜•››š™•“–™™™”𙓗–š™™”™š˜••š•™—›˜——š——•›––™˜™›—•ž•™’š™—™˜ž”™•˜š—™š™—œ›ž•˜”™œ—››˜™š˜š–—›™™™˜—œ——˜™˜•œ—– •“˜˜˜šš––˜–˜•˜––š—• œ–—™˜—›—™Ÿ™˜¤™™››˜“•—˜–˜š—™›—˜•––—’——•—™™—š”——‘›—–™˜›šš™™™——™™š•™™’—–———šš“˜—™š™”™›™—™•—‘™š—–˜——“——˜“––›™œ˜œ“—” š˜š™œš™—˜—˜œœ™š™˜˜”•—˜•¢˜™”—˜“™–——–™™—™“•–˜š˜•˜–––š–˜™›—š˜—œ™˜—œ“—™˜™—™——š™˜˜˜˜š™˜™•””›™•Ÿš™”—–™˜›˜˜–—˜——š–”™š™š•™˜™œ˜›•‘—‘˜˜™™—”—›—›œ—šš‘—˜˜”˜˜šŒ—••—””›––˜™’–——˜˜šš–žš•š™˜—˜™–˜•–’—™–˜™š™˜•›˜–š–”˜–˜˜˜”›•••š•™˜š˜œ—”›˜••™™“žš™ž™šŠš—š˜›—›˜›œ•–™˜–—˜––—“™–œ””˜—•˜•˜™•—“›™—˜–š‘”›™˜–›˜”–•š™š•“™˜—“˜œœ——˜››–š—œ——–˜———›—™“•›™˜›šœ—œ—›˜—–•— ˜œ•š˜—›š•›”˜•——š™›™”˜š˜œ˜——™—™˜•œ——–‘’˜™—›”˜—˜—™—™–˜”—™œ˜˜•˜—š“—”˜šŸ—–š•–œ˜—™–š•ž˜™•˜œ—˜š“——œ™œ›—“––™›™›—™–œ›š——––—–™—œ˜‘•›˜™‘š™œ˜˜—™˜žš˜›™˜—••›”•˜˜”—”——›™›—”™™›š›–›–ž‘š˜›•–•˜™˜˜šœ˜•–“”˜—™›˜˜–š›œ”””œ•–˜œ—œšš˜—™Ÿ—™™™–™œ˜žš˜•šž”™—˜›–—š’™›–™—›™”•™˜˜š™š—šœœ™˜™™šœ˜˜—š˜—–˜Ÿ—–˜“˜•˜˜—œ™•š”™’–š™–˜—’˜—›š—š˜˜™˜˜˜•˜•–š˜›—š™•—š–œžš›“”•—š™šš•–“•–šŽ™š™˜™—˜š•›™”–ž‘–—–—•™›–™—žš˜™–˜š–™Ÿœ——˜—™›˜£–š–••—–•‘˜ š“™›—™Ÿ˜š–™›˜œ˜—šš–œ•ž˜¤—™™˜˜˜–™–œ˜——–™—˜—‘˜—š—™œ——›˜˜™˜ —˜›™˜––•˜—š˜š——–—™œ™›˜™—šš—šš™˜——œš”—˜˜š—›—›˜—˜˜™˜”˜––˜“˜–žšœ˜”˜–™ž•–™——š••™‘˜™”˜————–”™›–˜–“—›—™˜˜š”˜š•›˜•šš˜––ž–•˜£–š™–™˜•›—˜œ–›™—˜˜“™š–”—›—•–—•”™œŸ‘›—˜š—“”™›•™–˜˜—˜™˜•”¡•–›™˜“™™”–ž˜”›š“‘’—›—œ—™š“šœšž™–˜˜—˜œ—œŽ˜”™š›——˜”›–›–š›š˜–—š••¡–”•›—œšŽš˜šš™“œ™›”—––œ•’•——–˜™˜˜–™—›˜–ž™˜˜—–•›˜—™™—––š–™‘››”—˜š›˜™œ™™™›—›™—™˜–—˜–œ’––Ÿ˜—˜™•˜—˜—š˜˜˜–•—š••˜š———™›—––˜–™š›•˜—š™”—˜™—•“–šœ˜–˜˜š™›˜›ššŸ–—š—˜˜“—š˜˜˜™™™˜•“š’—œ™˜˜–™——˜˜’˜™˜˜š›˜š•–——›—™••™“˜ž’–š“›˜œ—™–˜–™™“—˜š›š˜›˜š™šš˜›––›•˜–™œ–›™™™˜šš˜—›˜ššš››™ž’–˜œ˜—–“›•˜–š–™—••š™—š—™—™™šš—›–™˜˜™˜™–˜š™™š–—”–™ —™š˜›˜™’—™˜˜˜—“˜š•™™—š•˜—˜•’š˜™—™—–——™–———’˜š’–—™•šš—™œ™˜œ•—•œ—˜œœ——š—˜˜›™“—™–š”–˜•™š˜›—ž›•˜˜›š•‘™˜Ÿ—œš—œŸž–œ––™”––—˜—œ•–•”—”š—–—›”—‘“š š˜— š›™–œ••™”žœ ––Ÿ“–š—š™™›š•˜›™•——˜–š›–šš™™˜›˜š˜–š™—•–——–¡š™œš˜˜™–œ˜™Ÿ—š•—–š˜˜™šš˜••˜Ÿš˜“š˜—”•›’–—œ—•˜”˜œ‘˜š•™š“˜•š—”–•——”™˜™–˜—š—š–•˜šš–”˜š–”–™•˜•–—––™“˜“–—œš™š™™™œ—”›—˜˜–‹˜––Ÿ–—›˜˜˜š—”š˜Ÿ—›šœ™——™›“™˜—š—•–œ™”šž–›”™˜•›—˜š”𙕓–™”˜—ž™——˜š•˜———š•˜”—•š–—™—™™™–—œ›˜—™™•–›››”š—˜’“™—™™™™™—ŸŽ••˜š—‘—œ˜˜˜˜”˜•™š˜–•˜•–›˜™›•™•˜˜–œ™š˜“™›žš‘˜˜–œšš™•™——™š˜•˜˜——”•—ž––œ–––š˜™›™˜˜——˜••˜Ÿ–—˜™™–›™——˜™˜—™˜™–•—™œ•š—–™•šœšš™™˜š”•˜•›˜š—˜—™––šš–™˜™•™––˜–Ÿ™“œ—–œ“••–——”šŸš— šž™™”’–˜–˜–™›—Ÿ™–—š˜•“™“”™˜˜—™—”˜••’˜’š›™—˜—–“™–š˜œ—šš™”™ž™˜˜•Ÿš——™—˜–™›˜˜–—™›˜”˜—™›œš““›˜š™šž—•–𛓙𕙓•˜˜™™™˜œœ˜˜—––˜˜“’ž–™–•ˆ–––˜™Œ™œ™¡”—˜šœ‘™˜•š›–œ––”•˜’¡œ•—ž”‘—›š–•™”–™–˜š–••–——™–š˜›“—œ•ž‘œ š‘›™œ‹™˜”›–– ˜šš˜œœ—˜™›—’’ž—›“™˜‘“––™›™“••›––™•™•œ•š˜š—˜š•—–—Œ–šž—–˜‘š™˜•›‘•˜•—˜–•‘š—š•š—š›š”–š™Š•—š¤•˜“›š˜•———›™œš—–˜™–——‹–›˜’™ž—“——›š’–™œ¡œ™™—˜‘—’–—–œ•–Ÿ•™•™š™š›—šš•œ—Ÿ•—’– ˜–”˜˜•˜–˜™œ•—šœ—•—›™——“œ˜›˜šš™˜››—˜”—™œ•—•˜œœ˜˜˜˜˜–—œ•˜˜—š——™˜š™—’–š˜™——˜˜™ ™–•˜“˜˜˜—š’—™™œ“–’”•˜•˜›˜–—”—¡—–“–›—™˜–’•˜™š—™–™˜›•™™˜•˜–—•™–’Ÿ˜š‘œ™—•™–™—•™•˜™™–››™”—˜˜–˜–˜›—šœ–ž™˜–™“••˜™™—”“¥™–””—˜Š¤–™™”˜šœ ¥™˜•ššš–š™˜™¢™——™”›•š˜’—™šœ™–š•“›™›š›˜™›•™”•˜—˜˜™——˜“™™—š–—•š–™—˜™•———•”––œ“š—–——˜–™–˜•™—šš–š˜œ˜˜•›š˜–—˜•–™–˜•™•›–——•ž“ž—–—›–š—™‘š˜‘•——•˜‘——”—Ÿ’—œ–˜–™ž™—š™—œž—“•›˜›”™˜™–˜šš”‘›š—›š›“‘–˜—•™™–™œ›“––˜˜—™™–•œœ“œš–›š•˜“™›˜›—–Ž™“œš•™š™œš•™˜“—™•¡š™——›™˜™“——˜˜£—™˜šš›•˜šš•™š–——–™š—™™™™œ—––˜•—–™˜––••˜˜˜¢”™™•–šš•’œ—›—œ•˜”Ÿ–š•™•–”––“——˜—™˜•–™˜˜———™›–™›–šš”——•š˜–™•š—˜—––˜˜š›™š›—“š—˜•—–˜—œ ›––—œž›™–𔓛Ÿš—–”“™˜•“—˜“—˜˜“˜–™—™•—¡˜™™™˜›•–œ˜•›•™˜˜—š“™˜—˜š˜˜š›——••˜š—›š•š˜œ“™––“š”™š™Ÿ•™œ—˜™œ””—–žš˜˜˜•”ž™™›—˜™™¡•™–˜˜–šš˜œ—œœ¡™š–˜˜œ›œ•™”–“œ™•›—˜—”—™œ˜——™š‹˜™˜™™—˜š˜˜—•˜˜—•”ž—˜œ˜š™š•–˜—œ”˜˜˜—˜——˜–˜˜˜–˜•›•£˜•———˜–š–˜•™™–—–•–™š‘—™—›—š˜–”•˜š™˜’›˜•—˜”—œ˜™››™š˜•›˜žŸ”›“™˜“’ž›—™™•š–•˜œ ˜™“˜—–“—˜Ÿ”•–˜——˜˜“™—–›™–š—–š—••”‘•‘™˜™™™Ÿš”•›Ÿ˜˜››’”—•š˜˜’œ”˜™—˜–—¢—š’—–—•š“¤˜™™˜™’œ˜—˜˜™™¡™š–š™–š™—™–˜˜›• š—›—”’—™—–—šœš˜˜’•“˜”˜˜•œ˜š—˜˜˜—™”¡˜—œ™™—•–˜–’™˜•˜™™˜›™”™—“˜———˜›•š•™›™—˜˜š”—š˜–˜”—–™˜”–š——›™›˜”“–ž–˜•ž™˜—–š™š•™˜–•š˜—›“—›“”™™š—•—™”–™–™˜”’˜™“˜–’˜š›“™šœ“œ™–˜˜›˜›”š•—›–š™™œ™›™’˜˜™˜———š™š—š˜˜ž•š”œ™–š˜—œ””˜—š—–˜ ˜˜—”›–š —™–˜”œš™™™˜™›™•™—˜——˜–™œ——šœ›•›–˜˜“™˜–•”›œ——˜™—”˜šš–š———™—š——š˜™š”—˜˜–•–š ›•š™–™——™—˜–™™™œ˜™—š––™˜˜–—˜—™˜™š•™™—•——•šš•••˜›˜™’™—›—š’—šœ‘™——™›—›š˜—™™››—•“š———™—–—š˜–––š—›—™˜ž™š”–˜œ—š›™š˜”˜—–˜––˜—–˜•—™—ž–•››™•Ÿ˜•˜œ—˜˜š›˜™•š›”—–——–—–™™˜™›™š™–—”—™–˜—šš¡‘——–š›—›—™—–ž˜—™™•š–™—˜‘›™•˜——™–š•—˜›˜˜—™™˜š“—˜™˜’•™™˜•—˜•˜™œ—š˜–™•–˜žšš—˜•”——™˜œœ˜ž–“”š•˜™—•–––“œ—˜˜–˜—˜—•˜˜”•–œ˜™˜”“ž›–š™š™˜›™—–—š•š–˜›˜–—•™›˜Ÿœ™œ–šž—–˜™‘–™“ž•œ˜œ™™—™™šž–——™–œœ™œŸ“–›Ÿ—š–™“˜š——š›—“˜—œ˜š–—™—™™¡™–“—–—™šŸ•’——š˜—™žœ›˜›˜”—¢šš—™’š“œ™ ’š˜”œ™˜š›˜™——›—™š›¡—š–™”—–š™œ›™šž™—››˜šœ•™•”œœ™–˜–š™˜•–œ—’˜›”” ™š—–¢˜˜™ ˜˜š™˜˜šœ•–—”•˜˜˜š–—™š–™•˜—›™™›—™–—•˜š—˜•”šž›–›™“˜™——–ššš˜š™’žœ˜”“—˜——™™›’˜—˜œŸœ—”™›˜¥˜›ž›—›—™—’•˜ž–˜›—š—–œ›ž˜˜š™—š’šš–š–”™˜™˜—›˜”–›—œ—•™˜™˜“›”˜•š–—˜•˜™™š£–•—™•˜™—œ˜˜‘š›™•š—œ“—Ÿž—˜–—•™•–™——•——ž™—•›—˜–˜œš–š–žœ—•œ˜œ™™–—™™—˜˜—“•—›˜–™•š™š•—›™˜•“–———œ—–—–™šš—™˜š˜“˜”™š——•——™™˜—Ž—–˜—˜–—˜š›–—˜—“˜š–“•ž›™œ–™˜™—–•œš•˜••—™˜›—’•—˜šœŸ—˜•–œ’›–ž™•š˜”›™—–›—˜™”™™˜—™–™š™—•–•’š˜ž˜˜—“–ž“œ˜™˜—’•š–“™š“–˜•›š——™“–™——žž—˜–––—™•›˜–––—–›šš™”•”•š—š››™šŽ–šš™™š›™˜˜œ••š•˜—œ—‘–š˜Ÿ™›œ—›”™›œ™˜—™˜˜˜˜—š›™š˜Ÿ˜–—š™—š——ššœ™••–˜•›—š–œ˜˜˜——˜™™š˜˜—–˜——›“˜™™Ÿž˜ž˜™—š™——’˜˜˜›™—™™œ™™•—š˜œ›š•™š›˜–“𙕙—œ ™˜¢›–š–š”–šš˜˜—•–”Ÿ™œ˜™š˜—™—–“˜˜š™˜“˜•–™›š—–˜—”ˆ˜š›—š™˜˜“š˜•˜›—™—’—˜–“”••˜“—™™œ˜‘™˜’›•–™—™™™—𗔙𛖖—˜œ–——™›™˜™–™™š––››š—™—–™–˜•˜“™–šœ™”™™“’›•œ”˜˜š•š•™–”™——Ÿ•™š—•™žš–››”—ž—–˜—›–›“–•™›–š˜—•™˜›š—››—™—”’™’˜——™˜—•š˜¡œ“›œ™—–“›—•˜—•“—™˜™—™œ›˜—š’˜–™™˜–———™—›™™˜–•œ’–›—˜š——™–š–™—˜–’—šž›˜œŸ•‘™š˜•š—™š–”™—”—š–™˜“¡”—˜™™™—›š–”–•—™—˜ž––›š“˜•—›™™–š—™™š—–š˜–œ˜œŽ––˜“›”—’›—˜——˜›™™™š——™›š˜˜™œ˜– ”™›šœ›˜œ˜˜˜”––˜˜–˜š˜™•›™’›–™—™•™–š™–›˜•—–•—•œ›˜˜••–›˜•—•–Ÿ˜š—”•—”˜–”—š—›™™—”––™–•›š™œ–•™˜œ™œ–›•™•›™–›˜–˜™•“”š•šž—™•›——–˜Ž˜“•š˜˜’œ’••™™˜“––‘š——™˜™š—••šš›šž–š˜˜—–˜˜™—™™—˜—›˜ž•˜—–›–˜–•™•œ•˜˜šœ””•™›˜™››—––˜™—˜¢—••š™šœ›œ•–“˜™˜•š—›šš˜˜“—›š——™–—š™š”—––›•šš™šš˜••–’–Ÿ–•™—’”——˜“˜˜——™™›˜ž’™š˜ž™š™š“—”–š—˜™™™›˜•š™™–—›™ž™’–œ–œ—™š˜””•–—¤—™•š™—”˜–‘—–›‘–œš”˜˜ž› ”𗙗𙙇”›šœ˜œ˜—–™š———›”š–™–™–—›—›Ÿ“–•š™šžš”–š™ ›™›———˜Ÿšœš˜™•˜˜˜›˜•—“˜––š˜˜™˜™”——™—Ÿ™–’›šž˜—’˜œœ˜—œš–¡—œ—š”Ÿ–—–š’•šš”˜™›š›˜——™š—™—šš—–˜˜—œ’š–™“™œ‘š––š˜œ“’™™”—š˜™™™š˜Ž——š“›—™š›–™™™Œ™•—™—•œœ›–—™œœ––š–•š•™™œœ–š——™˜”™–——™››˜”š•›”•—˜”–—˜›š—˜š •™”“”œ—šš’™—˜Ž“™¤žš˜“‘˜–›™™••—”“›Œ”˜›–”‘›˜Ÿ–œ™–—™—™’™——–˜––’™•–••‹˜œž˜™———”™—š™”§–—™™œšŸ‘–—“›—™—˜”—•™˜–”™™—™˜™™•”œ–›˜––—˜š›ž™š”™™š—š—•—šš””—–˜”‘˜˜š’žš—›˜™–”—š—š˜˜–˜œ—š—˜•–ž–—™˜–“˜•—˜—š—š˜›Ÿ•—”š—˜——™’™›šš˜™–˜–šš˜”˜–“•š˜š˜š“–‘™—–œ—™ž˜–—šŸ˜”™—˜™—•–™›—˜œŽ›˜•™–™œ›—˜“››—˜•œ™’™˜—•™™•˜—˜•”˜˜”˜”’˜š•™˜˜š™—™›—””š™•—š™˜›š˜š˜—˜—›š˜™•™››˜”™™•—™•šš˜˜˜––——’›–˜–‘—˜—•–—•–™—›•š–™››—˜˜—š›™››˜—šš›––›’”œœ–˜Ÿ——’•˜•‘š–˜˜š—–˜˜–”˜“—˜———–™š›˜™—™–™™—™™ž–—–›˜–—˜”š—“—–˜—šš•–•˜–—œ˜š–˜š”˜˜•–•”–›”–˜š—˜”“˜›—™™——˜™’›š™˜˜™š›Ÿ—›ž›˜— ’™—›œ”™˜—–”’˜•™˜™–š™–›™’›œ™—˜——˜˜—•–š˜š–•—™—œ™–››—ž™š˜˜—™˜—–•›š™˜—˜–™–˜™•˜”™—•˜™š—˜“˜—––•˜›š˜—“•——Ÿ›š˜—š˜Ÿ˜˜š–š™™˜™’“™”›˜œ—˜™š˜ššš–™˜™—™˜œ˜•™•‘˜œšœ˜—˜™––™–š˜”–ž–•—˜šœ˜—”—›—––š•˜——›–›–œ–—˜–˜•œ—–˜”¢˜šŸ˜š—›››š™Ÿ–š–ž˜™“—•˜ž˜™™˜—œ——œ”–˜˜˜›™™¤š”›™—™˜œ˜——™••¢”•—š˜—’—•›‘‘˜™•—˜”œ–˜“˜˜—™•œ—™•™›š›—•˜™•š—ž”˜•ž–™“—•™œ˜™˜™“˜˜˜––—”œ–•ž•™›š™§˜˜œœ—˜˜šž˜˜š”¥˜–˜™––˜›•š—š•–˜š™™—›œ—£”™™ž•™–™œ˜˜˜–—–“š™–š——›••›š˜—™’—˜™”•—’“—š”—•—™‘™™™—š˜š–—˜™—˜œž•š”™™’–––š›œ––˜——™—–——˜˜•œ– ™™———š—–•—˜›—˜˜••˜–›”™•š–™•˜•™™˜š˜—›“——™——–š—›”•™ž˜›—¤—•–—™ž—™‘›š™˜–—–˜—˜—™›—˜–š˜—š˜–“–—ž–“”—š—˜™™š˜œ–›—™™˜™—‘—˜ ––—˜˜š™———–š™™–šš––™Ÿ–˜”š›™˜˜š›˜™–—”˜˜˜——™š›™››’—“—˜———œ™—˜‘“œ™——™—’–”™–›ž—›š™˜š™™˜–—–œ••™—žš•™š •š˜‚“˜Ÿ››“–—™™•–—œš——˜›•Ÿ™—š—›™”“—œ™–˜š—˜•Ž’™’——›——’˜œ™šš“’˜–•œ—–›–™˜–““˜—œ•–š•—šŸœ‰›”–˜™™–š’—œš––˜—’šš˜“”˜š™™•™œ˜—™˜”––˜““ž—˜ ›•›”——––œ—˜˜”™˜–‘—‘™™“˜’•‘•˜ –™Ÿ”™–••˜”••£Ž™˜™—›—•“”•“š–š››˜’˜–—Ÿ•Ÿ•—“›˜šš•—›š¡“——•›š™›™›–šœ•–™˜—ž—••™’‘››”™™™–›—™š–˜š–˜–—˜˜™•™›–œ–˜˜™š˜”—’—˜—œ™™•˜˜˜—›——˜—›™˜˜”•˜š–˜–——˜™•–•——’–š”˜˜——œ™–——œ™”š—“’—›™•™™—˜›••™–•™˜š—š˜œ––––š—œ˜˜——œž—˜—š•—˜™˜””›—•ž››˜˜—˜”—™–™—š˜––šš•š“™–™—š—˜›š™–››•™ž”–—›™•™œ•š™™–˜–™“˜–˜œ™”–›š›”š˜•¥–œ——š˜š”š˜˜˜›™˜Ÿš˜‘™–›—™”™•š˜™™—–™˜—–˜•™™”—”›œ•™š¤›“š––™”—’˜•š–›˜™–————–’––—™™š—•›•–˜™›”š™™™™™—˜—–—œ›“–˜—˜œ™š™—–—˜“˜˜˜˜——”™™–’œ–™˜–•”ššš—”– ˜—’š›™˜–—”š›˜—˜š™š˜™™™›˜–›–œ™–™—™–š•–‘”•““›™——••—–˜•™—™”•›˜œš—˜™™š“—•—‘›˜š—˜—•–œ•™–™—“––›™”›˜”’š™“•š™˜˜Ž•˜–š˜™œ“•š—œ›’›•œ—–š˜—“˜™œ™š˜˜•˜–œ”™˜–š™š—–™•—™œš˜˜—˜•™™š—˜–š•™—••—••˜•—œš“•™—˜—˜˜•˜–œ—™™šš›˜““™›–š“™š™–š–˜••š™—“™———˜˜–—›——˜”—ž™˜˜™—–—–—›‘–—š–™š˜š’—–›™—••™•—š˜™“–™––™˜–™™™™—œ—˜›™›—›š–š—”˜—šœ˜˜™”™š˜–š–’Ÿ—šŸ—–››—˜™™™—“š™˜›–™š—šœ˜“•‘–›˜˜•—˜š•––š–˜›˜“”™”˜˜˜˜”™–•™›™•›˜—•–š–š—™’—™˜œ›˜›š˜œ—™˜™”—™œ•œ”—˜‘™—š•œš—œ˜š™œš•›™šš™š–—•”™˜›—“œ—•˜–˜›˜–™œ˜™™“š•—™–›˜–™š›—”˜—™™—–™˜™––™››š—˜•˜—–ššž”—™™Ÿšš™Ÿ—˜›™—š˜™˜•›”›“˜š›š“”š———˜™š™›˜–—™•ž–œ•š˜›–•–›”˜—™—šš˜““š˜——š˜˜–™•‘˜š˜˜—ššš’“™›š••™Ÿ˜™œ˜˜™˜–˜˜™™—š–˜™˜™™š——šš›—™š—š™š›—™˜™—™™—š—˜›˜š—š•‘˜ž˜——”–•™œ˜šš–““™–™š˜‘™˜™˜›š—™™—–™˜–™•™—˜”˜–˜˜š™“•–™™š—•—›˜™•–—˜•š™™–™™š˜šž’š—™œ˜—™—•——•Ÿ“™•™–šœ–—–—šš˜˜———•™• –˜œ˜–—˜¡›˜š™˜’™™—š˜˜™œ—˜—›˜š•™™™›™š–š˜šš›—˜˜˜™˜˜—šššœ•šœšœ™™™—˜šš——˜”’—–—–ž—‘ —–™–™ž›”™––œ––˜–˜˜™˜™—™™•˜˜˜™˜™™•™—–˜˜“™˜š˜–—›—šš–š–š™™šš™˜—˜—•”™••——’™—”š˜”›šš••˜œ“–—”˜˜—•š˜–˜™”•™˜•™—™š–˜››”–˜—˜›–š–˜–›•œ——š˜“š•–š“••–˜—›™–™˜—™œ–™˜˜––œ––’š™™–”—™œ˜š™”–——˜š˜•——š˜–š–š•——˜š™˜––˜™”–š–š—–˜˜™™˜˜“™™œ˜–šš˜•›™˜š”˜™—™›———š—˜š˜˜˜“›”˜›•—›™™™˜ššž–œ›œ–œœ•––—•˜˜˜˜™™–—™˜ ”˜ž˜—————”–š™˜›—˜™ššš”—˜—œ›““™–˜–š˜ž›™––˜•˜™›™šš—˜”’”•’—˜—“—˜—–˜š˜”™˜——˜—š˜œš—–—š–—š–›˜˜Ÿ—š–˜™ž—™•••˜—˜™˜˜˜›”—•–š˜˜—˜•–œ”•š—•™—™™”•Ÿ™˜š–•”›—™œ˜™•šš™˜™“—™™™–—––™˜–˜™œ–š–˜•——“˜–™™˜š›˜–Ÿ—™›™—š—š”——’˜—•˜——”˜šš–—™™˜—˜˜—“›˜–‘™›˜™˜˜™——˜˜—š“Ÿ—™•˜—˜›š›™™™•˜–œ–—–˜˜——™›“–—™—••˜–—˜›—ž˜—™ššž—•—™“Ÿ—–š™›š˜››˜˜˜•˜——’–˜š˜–™˜Ÿ˜™š—™—˜™›™—™˜”–˜–”˜™š˜™—š˜•™–š˜–——–™˜—š™”˜™˜š›–•˜–™˜˜–™—š˜š›“—›—–––™—•š•˜™˜›––˜™˜•™•–––šœš——˜™—™”˜˜˜œ›œ———œ˜™™–˜—˜–š—••••—›–™˜Ÿ™•šš–––š™™”—“™›˜š—š—˜–”šš™•˜—˜™˜—˜ž˜–’š—š—™™™˜™—œ˜–˜˜”˜™™™™˜š••™˜›™—š”œœ™˜—›’™˜–—˜˜š›™—˜——–˜œ™˜—•—›™˜˜š™“Ÿ˜–šž—š”’š”˜•Ž—Œ— ¨› šŸš˜žŸšœ“…››—””–•’™™“—žžŽ“•’››¡’¦ššŽ‘˜•𓛣’•™œ›””‚˜›™™‹–”‘•™™‹‘–˜”š–™œŸ”—¡Ž‘”•™š˜—š›˜ž–‘ž›–”™–ššš’œŒŸ—™“šœ›•›™™”—¡˜œ˜˜“–“—”“š–˜“—‘•‘Ÿ—œ”™”—™—• –”˜š”•—˜˜“™šœ›’”—•š™žš˜“”™š”“™¤™—™”–ŠŽ’¡›—“—•œ˜ž”“™”›–“—— ’”˜“›Ÿ™š–•˜š—••ž•˜˜™•—š–š˜’”›–—˜˜œšš–™˜™•›˜–™š”œ–˜˜˜˜——“š–™––™˜˜™™˜”‘–š”›—”™“š•š˜•“—˜š™š”–—˜™š˜––˜˜—š—”“š•’—™˜›˜›“”š•œ–—–˜”‘™–š™•“š™š˜™–˜–™—š•˜˜šš•˜š–˜˜˜˜–—˜œš—”š‘˜•™•™—˜œ™˜–˜™–”—›˜™–™˜———š˜–‘–˜™•’•˜œ•—˜™—•—™——™˜˜–˜˜šš™ž—’›˜”œ–›˜—š—˜–––˜•˜œ™–—™——šššž”šš—š•œ—–™˜›™™’˜•”˜˜’—šœœ˜š™™›—›œœ–›™––•š—›—–“˜—˜˜––’˜šœ˜’˜œš—š™›—ž™“”—šš—••—”˜˜›™˜’–—•’š˜˜•™–š•™ž–˜žš–˜—–”šš’™—Š›—™›š“š———˜™›™’™—–˜—›”™—š˜•š—œ—“—™›•–”–—–—˜™˜˜š›“œ˜˜“œ™››˜™—˜™š‘š—•–˜™–Ÿ––™’šš™•š˜™š•š—•šš™š”™˜”•˜–™—–š™–™–’–›šœ–•—š˜˜–”›•˜™•™——–™™”™”—›•—•˜”š™™“—–“˜™–‘˜˜”—˜–š•›˜š”›™™šš˜™–•˜œ”–š—•š–˜š›—‘˜–•˜–™›“–›—œœ—˜”’›š™™“–™™—˜–™œ˜™”—™˜›šš™š—”™›œ–›˜˜˜š”—™”œ“˜•”—›™˜—œ”š—˜–——––š–——’˜™—˜š›™•š˜—˜——Ÿ˜—˜™•–™•š˜˜š™™›™’“–˜˜˜ž™–—›’—™š™—˜—”™™˜›•™˜™š›™—™™™œ”˜›™˜™––ž•™•™š—œœž˜‘™•™•“™›˜–”™™•š˜˜š˜™–•™›˜–—š›™™•™“˜“™–—šš–›•–•”™›Žš›™˜žš™Ÿ˜˜›•”›™˜˜˜—œ•˜˜•—•—˜š“—–š›ž“ššœœ‘—–—™››—–œ›ž”™˜›’š›—œ—–“›•“™›–Ÿ•”››š˜—˜˜—”™“•‘’—˜—›—’›˜––˜–›™—™”œ™˜“—“œœ–Ÿ”˜›—˜˜–•’›ž”’™‘™•˜—™”–˜œ›œ›•š™ ™™—™˜¡™˜–˜œ“––˜™–˜›žš˜—›Ÿ““››–šš—•˜–›š˜•œ•—˜š™™Ž——“‘–™š˜œ—š—’’—––˜™ š›–˜žœ—š™›˜œ™——˜—“™™–“›‘™–”›™™“•š™š˜˜™——˜˜™”™™—–—š˜——™”™™—š—˜—”˜˜™”˜–š—œ“™––•—™˜›˜‘—š––—‘™š˜–—˜—™˜š™•˜——–š™›ššœ’˜˜œ›––•›—–—”˜–“—™™š˜›–”˜ ˜˜œ—›š˜˜˜–™™‘˜–“›š™˜™Ž–™›—–—š””–˜—š™–š››•™˜™˜”˜˜—’˜™š˜——–™—–œ—˜Ÿ‘”—˜œ——˜’—›˜š™˜–—•˜œ–™•–š—˜˜ž••–›–™˜˜˜—™˜••–”š™š˜š—’˜˜˜—š›˜’›–— ™”•”›Ÿ”šš™˜–˜™—˜š•˜™š”™”™™–›™–“™˜—˜˜——–™˜˜˜š•——–˜™—žš˜™˜•—˜˜•™•œ–››™—™–™–˜˜—˜›–š˜˜š™˜•–––—–˜˜˜–›—˜—š–”—•˜—™•˜š’•‘›™›˜—˜˜˜™™˜™™”™–—™’–“™˜–—˜˜–˜™›š———–—–››˜˜˜˜–œœ’—”˜—™š™–”•šœ•—–—™—š—™——›•™™˜˜–™–•˜˜•••š™š™–—˜›˜•™••—”—–™›“™™šŸš–˜—™™–—•••ž‘•—™™Ž˜˜›œ™•˜•“–—œ›™˜™ ™–“™™š™•˜šš—•œ™ššš—•——•˜•“š˜š—™š–šœ™–š—–š—–›—–™”—™˜—›—™˜š™›žšž”œ˜˜˜˜• •›˜•–š–™—˜——˜˜›— ˜š—ž˜˜––›”˜•˜œ––˜š —œ˜™™››š™™˜šžš™—˜™™–Ÿ—˜šš˜›––™—˜•’œ–•š˜–—œ—™—›˜™˜˜’•—›™š–œ™—˜˜™¢”˜š™––––›—™˜ž–™•‘—™—˜˜—¤“œ•™™–ž——˜š—™ž™–˜˜———–›™›—˜—š™˜’˜•ž——™šœ––“š——–™–š–˜–˜˜˜—˜™———š—š—™›˜–——™–š”•–š™—˜•–•–™˜™˜•šš——˜™˜™—™—˜š˜˜˜—™›š™—˜˜—™–˜˜—™˜•š————™›–˜˜–—˜——˜—˜—˜——›“–š™™™™———šœ—™—™™˜–—›˜—“™•˜—™™˜˜˜–—•™——˜–—™—™™™™˜––™™—˜—•—š™˜œ™—–™š—™˜™˜—––———™˜˜—‘œ™—™™—˜—˜˜˜š˜—š—•˜˜—™——š—”——™—™˜—•—˜™˜—™™š™˜˜˜™˜™™™˜—š–—˜•˜•š˜–˜œ—˜—™’˜—™—–œ–˜•˜—˜“–”—–Ÿ—— ’˜™˜–•——•¡—›–•—™—•š˜˜—˜”™™š•—”™—›š™›’—˜™˜——•–›—™—™—•–˜—••–—šš˜˜•š–—˜š˜–™™•–›˜žž˜˜šš˜˜š’‘–—™”˜”“šœ””˜“™–œ›—˜–——š—œ—™ ˜š––˜˜“’“›—š’ž”™—š”—™””—›˜˜——–“œ’œ——š›™˜˜Ÿœš˜–šš‘š–˜œ•’–•š˜˜—š˜—•—žš“•š™›˜—•››™šš•š›–—–˜•—’——•••ž™š›˜™ ——•™˜™š›˜–•š—™”—™›–œ–™•š˜š—”›˜›™š˜’˜—˜“š™–“˜˜™—˜™š˜”š™–˜–›—––˜•˜™”˜™˜œ™š™š˜›“™“—•˜™”•—–›™—˜—•™•›˜˜–”—•Ÿ˜ž™›—–—˜š–™—œ˜—–š”–¢•š—˜˜—š——˜š˜™ŸŸ—–˜—š—š™“—™‘–—–™˜—Ÿ™˜™›˜™š›™—™˜————–™—˜˜˜”˜”™™š–›˜—˜›˜›–”˜œš˜šš™—œ—–—•—™–—˜ž˜š–›œ——šš˜˜—–˜˜–™—–™›œ™˜—™˜–•—š•›˜–™˜–˜—˜——›—™™™–š˜•–œ˜”œ˜˜–—‹–——›™™šš›™™›˜–™™•š˜–šœ–š›–œ˜––—˜—˜˜ ˜–™˜™›˜—š—™——•™—“—“š—–š“¡˜™—˜˜—–™˜™›š—–˜—™˜—™™—•™š•›•›œ’˜––——™›™—˜›––˜˜™•›š—š—–›˜˜™—›™—”œ™™˜—š™™————–›˜˜™—œ–›™•š——˜˜—š˜™™˜˜™š–™™•—œž”™––”———–™•–˜–™œ™–——––•™—š›˜–™™˜•—”—šœ–—™—š™˜›˜š™™—™˜˜——–›™““š™––š—™›œ–›˜˜˜œ˜˜™™™˜š˜————˜—”—›˜™˜™•™œ–˜š•–˜”“˜›˜›˜˜™˜˜™”™™˜™—˜˜™™˜œ›˜“˜š™——š˜—š–š—š™˜››˜˜—™™“›—™™˜›˜š˜—˜š”š˜˜–˜˜™—˜š•˜—›— —‘›™–˜“™””™š–™™œ—›•–———™˜™———™™–˜—–š•˜—˜™™˜—•›˜—™—™š—™–—™——™™™˜œ™™›—›˜›–™–š—š˜™™ž’˜˜—›™—˜™™——–™•”–—•š™˜š”™–™š—™™“————˜˜–“š•›˜š™——›˜—œ˜˜š———š›š•’ž™“–˜›˜˜™–”–•›œš—˜™•˜˜–•—”™š˜š–™–—œ˜šš™—›–—•˜—•›˜š˜–•›”šœ™š–š˜——™–•—š™—˜›˜•˜œ™š™˜––—šš˜—–‘™—•”œ—˜››˜•–™— ˜—•™›™››–™ššœš˜—™—œ˜—œ›™˜“˜™’š–›˜œ––œ—––“™—˜–—š—™—š˜–›—š–—˜˜‘™™™œ— ™—œ˜—œ™œ–“‘——¤•™“˜——™œ™–˜œ›˜˜™˜š–›•–—›––—•˜™–™™–™—™™“œ˜—™••—œ——™—›˜”—šš—š˜–›š——–™•Ž••’›‹ ˜š———˜Ÿ”•˜•™š———™œ—”˜™—˜‘œš—•—š–Œ”œ™š’›™•™•“š”•œ™›š˜’•—”™—™Ž–•”””¤£™›˜–™•œ™š—–’—šš˜™š™˜•š˜œ—–›–˜—•—›—˜—™”™™—›•—™œš•›—›˜™š›˜œ“•”›š•—–‘•ž–šššœ˜›”› œ˜™— “Œ˜™š”›šŸ•š—™›–—˜›ššœ˜•˜˜••“ž—™–žš•˜–˜ž—œœ™œ•˜—™”š˜”–ž–‘–›ž•Ÿ—›“–™™›™–––››™™––˜”™ž›—˜“˜—™“Ÿ–™™–—›˜Ž––›™š—›™–š™–—–›š”—”›–š‘–™›˜š”™™™—š›š˜—˜™˜—’š™™•–™—š”–š™š—”™—˜Žœ™——™——’’••›˜“˜–•š‘™œ—•š—–˜˜•š•˜”—“šš™˜˜–šš›š˜•š—™”–“™˜š”š“Ÿ–˜•’™šž–•›•˜š—–”••—›––˜—™—œ™”“•›–š™™”š›˜–•™˜™›•˜•–™”™˜š™›“—›˜”“˜˜œœ˜—š˜—˜—›—˜—˜—š”–™–—Ÿ“—œ—˜œ˜˜—›™™›™š˜™š—˜šš–˜™–™˜™——•–š™˜š—™˜™™š—˜•™–•ž˜•—˜”™š–”–›™”•›—™š›™–˜–˜›—›“˜—™”™“—˜–™’•™™˜›–•‘”•›™šš—ž˜™Ÿ˜™™˜œ˜›šššš—•—™“•›•—œ–˜œš˜“•™š™–˜™š˜—›•™™–˜”š˜˜––”›š•—š—š˜™š˜˜–™™™———˜˜š–˜š™——•–™—“œ™—˜•š›’™›”˜™˜™“˜—˜˜•™›—™˜—–›—œš”–™œ›”–—•™—š™—‘–™–˜š—™˜™›—š–œ•™–˜–””šœ—›˜˜•œ”˜——˜—˜”š–™’›™œ—›š–š—š˜™“™›“š›˜™š•‘›š˜—š˜—“•™™—˜”›šœš˜š—–™—™™–˜™™—–’”˜›š–—™———–—›™•—˜š™›œ™š˜—–™–•™™—“—ž—œ–—”˜—›˜“–˜š•‘š–———–›—™šš—š˜™›—–˜–™”—›Ÿ”™—›–™˜’˜——™—˜›–•—šš™——›–—™—”——™–•—šš–›–’™˜Ÿ–›™™˜™”˜ž•š•™š–—–››•™š–™™™™™˜™›™š•ššœ˜š–š›™™‘™šœ˜–ž—™œ“——˜˜•––˜˜˜š˜š›žš“™š•˜”šš˜˜–˜™”—”™——–œ˜˜—–™˜˜™˜˜˜˜––•˜—œ˜™‘——š•–”™–—š˜˜˜”•˜—›™˜˜—˜—••œ˜™˜˜˜™”›˜˜–˜——˜“˜•œ—™™šš™˜•”˜ššš››˜˜—šš–“—š•™š•˜—š˜˜—™š˜—–—™––›™–š•”˜–—š—–—™˜˜—˜™–˜™•••˜’™™—•–š–›™žš“›œ•š•›™•–™™•—–š–™–™™–—™™˜——–“š–™–™š™”—–™——˜‘–”––˜š›–š˜˜——˜š™™•—–˜›™˜˜™œ•”šš–“˜——”š—œ››™š™—˜˜š™˜˜—™”™•™šœ›”•™•˜•–š–——“š™š™›—š˜˜›••™šš“˜™š”•˜š˜—•˜—™˜”—“”–™•––˜—š™–˜˜™™––™”š˜•œ—˜š—™˜šœ”™š˜—˜—––—œ˜––™•–š”–š—”˜›™ž”𛕙—–›˜•™•š˜—š–˜—˜—Ÿ˜•—ž˜—–——œ–—šš—•œ—–šœ˜œ›˜—–—˜—š˜š—˜™š˜—–œ——–“™˜•˜š–™™˜˜˜™–›š–™—–•˜šš™˜›–š˜™™——›–˜—˜™———˜–˜——•“—–•™›–ž—š˜Ÿ™˜—›”šš›“˜˜—”˜–•™šœ˜•—–˜—•”—˜š˜›•›™˜—’™–™—˜œ•”Ÿ™š™˜‘˜šœ™—›•”—•—™––˜–œš˜™›ž’—™š–••”“–œ—š˜˜›™—™™“”™˜œ™˜˜•™–—™˜“™–œ˜–“—˜—–•˜“›–•˜™—”—™—•™–š•›˜š•š”–••–˜™™˜˜›™˜›––—“–˜™œ™š˜•—˜™›•š™—˜š˜“’š“›™—™›œ—’š”š›”•—–›–™›˜–›——™–•˜š“™—ššœ—™“˜–˜™–“œ—˜˜š˜›—•—˜–—˜•š–™˜“—™—˜˜˜—••™–––˜”šœ››˜—˜—š˜˜™––—›’˜š—š›šš———’˜”—™——•›˜š›–œ”š™˜œž˜˜™œ™š‘••—˜–™™š˜˜š—˜’™•’™˜’—˜œ•—›—™˜š˜Ÿš™š—˜™—˜˜š˜œ•——™˜˜•–—––™˜š›•—˜š™›™›˜˜–˜š˜•“˜—›–š–šš–— ›”˜•———˜™™—–›˜—›–š˜˜—š—•›˜“š˜—š˜š™‘–™–™™˜—–Ÿ˜š™™˜›™˜˜–—œ™•œ›š•˜–˜››———™–™™šš˜Ÿ•—›“•™–™š˜›—™—›˜——š–•—šš—–•ž˜™•–˜™š”™˜”•—˜–˜›—›˜™™—œ“—˜™š™™˜›–˜˜˜–”———š—˜™˜˜š—–—˜–——–ž“–—˜—˜•””˜™™˜˜—š”™˜—”–š––™™œ™œ–˜Ÿ›˜•——›—––‘———˜š—™™œ˜–˜–Ÿ‘˜™–™—™•—–•˜˜–™˜˜š›——š™—–—˜™™˜žš›—•š™˜—˜“——–•™˜š—˜—™š“š˜•”—š˜—›™ž˜˜•™™›˜š˜——•™—•¡›–—–˜™–š˜™™•™’˜š—š–™——š—š—•—–™›™——‘™–™™“˜˜˜•š–š›™šššš—˜˜˜˜—–™™šœš˜—™™š˜”™™š¾–˜™˜–—š™˜˜–š–—œ—™›˜••šš™œ˜š˜–™š™“šš™š®—˜•—–˜˜˜—›™—˜˜™šÁš™”˜˜š˜›–—“›˜™šb•—š™˜™˜•˜–˜›—˜—˜—™™˜š•—š–™—›——™˜™™™‘–š–™˜™—–™—™š———•˜˜˜š™™œ˜—™š˜˜š——™–œ–˜˜—”™’™›–˜–˜š”™“š—¹›˜”™—”›œ™˜–™˜™˜˜–˜˜™—™˜˜š˜—œ•›˜™™–˜—›™—•–™™”ž–›‘˜š›™š˜™™–šš’—›——šš–˜”—•›—›–——– ™——•˜•›››—˜’˜–•‘˜š™–™™—˜œ—–š—›—˜™œ—–š›œ˜™š™—–˜–—–•—˜šš”—›•›ž–——…˜–™š––—˜—–—™˜™–”™—š™˜™˜˜—š™”™™–›—–•–š”˜š›‘—˜—˜š™š–š˜™™—•˜˜•™š—šœ™™™¤“˜—››š—“šœ•’˜•“––ž™˜™š˜˜—“›˜•˜˜›—ž–š•–—›˜”—™”™˜•š˜œ›‘™™—™˜š™—–šš–”“–™›—›—œ–—˜™œš†˜———™‘–˜˜˜•˜˜˜˜—–˜˜œ™“š˜˜–—˜˜–›˜——–˜—šš”–œa“•˜’•—š™™š–˜“š˜™™–™™™——¤——˜š—š™šš”——•–#—————˜˜—›˜•˜—™–˜—›–š˜˜›—•™™•™˜—–———™•”–›š—˜•šš˜š™œšš›˜ —š™—™˜™•˜™œ–•™—™–™“œ˜š˜™”–™˜’—›•—›™•˜™›™—˜›–˜—ž–œ—š™˜š—–—–˜š˜Œ˜˜—˜š¨š˜˜™›–––˜›—–•š™˜“˜ššš™œ—™˜––š™™˜š–˜™–š—›—š™š–—˜–™’›——œœ—˜™˜”—›š›š™—š––˜›˜—˜—™————™–˜™›—–šš˜™–˜˜˜˜˜•—›—›–—š•™—›™˜˜š—™—œ—–š™’—¡šš–˜š™˜ ™–˜—•–™•˜˜’–—’œ™œ–˜™˜—––•—•—˜•—•˜—˜™˜“˜˜™—˜—™š”—–›—›˜˜˜™˜›•”˜™˜˜™˜˜”›™šš˜’š——™š›ššš™š–š™š•—–—˜˜•œ˜š—˜•š–•—˜–™›šœ–˜››”š˜–——™™›œ•š—˜—•––—˜˜˜˜—›˜Ÿ–—˜’™•––˜š™•—–›—š——˜˜™˜˜™˜”˜™™™™˜˜š—›—™—š˜•—˜˜˜—˜š˜™š˜˜™—˜–˜˜˜˜™—˜˜•˜•˜™–––—œ™——˜š—™—˜˜œ—š—˜—˜˜——˜œ™——®˜——™˜˜™—™—™š—œš—˜•—™˜—˜•˜˜——˜—–•›˜—™›˜˜——˜˜——™˜—™™—˜—š—™š˜—˜š˜˜——˜™˜•˜™˜˜˜˜˜˜–˜—š™™—–—™•—˜–—™˜––—˜™˜˜–˜™š–™˜˜˜——˜™˜˜—˜˜˜—————˜šœ—–™—™˜œš˜–›—˜—˜–˜˜––—™—˜˜˜“˜™š˜˜—–—–˜™˜›“–•”•˜Ž—˜™‘žœ›–œ™›œ˜œ›–›™œ—™˜—›”š˜˜—–š›”•–˜›“•™™Ÿœ–˜—š‘›™•••™™–›”’ššš——™™™™žœ—•–›•œ ••ž—•˜˜˜”“— •˜ž‘›”“˜›—˜š“—˜–œœ˜˜˜–šš“—˜˜˜™š”™•—˜˜š˜˜‘™“™™—˜œ™——”œ˜•’›žš—›˜š––›’œ—–›˜™™‘šœ—›˜š››™Ž —™—•™”˜˜œš™˜›˜œ—“–›˜˜•˜›ž”•š˜™“™–š—œ››š—–™—˜™›–˜Ÿ—•˜™˜š“”–›˜•“œ•‘’™œ˜š•ž——™—˜——™–™›–œœ”—™—–™™šš™—–š—•›™’›š™›—š™š“˜œ—™™š™šš•“š••—š˜˜–šš–˜’—™”œ—™œš–›˜–—Ž——šš—˜–›™™™š–˜—˜•™•š——“›—ž›™œ›˜›š›—˜—›™—™—™–˜˜š˜˜››š˜™š—–•˜——•šžšœ›Ÿ™–™–š™›˜˜™™˜™––—˜’•œ––—šš›“›š›š—’˜—™™›˜—˜š–œ›™˜™™——™•š™›™—›˜”•™™™›•˜š›˜”™˜™ž›˜˜ ™š—š˜™—›š˜›˜˜•™™™˜™—”™˜˜š˜“˜™™˜›™˜š˜—˜™–‘™šš–™—œ———˜—™š——˜•˜—˜—˜•˜˜™š™˜š™••——™›š™›œ–•˜š¡™˜›™—™—™——™˜™™£—–™˜–˜—–—™™˜˜˜˜—ž˜‘˜–™——’—˜˜™™˜˜–š–—›™˜™š™˜˜—š–—–˜—˜šš˜——š—˜•™˜–š•š˜œ˜•—˜˜™•››—˜š›š˜™—”˜–˜—––™———™›–˜™™˜–š——˜˜™—–˜™–™•™˜š™—˜–•¡œ—˜•™™–š˜™›–—•˜›•—™™™—˜˜™—˜—™–™™™›••˜š—–˜›˜š–—˜•—›š™š›š™™˜˜™š›—š••—š›—™š˜š—š•”—”œ™—œ•˜˜œ–—›˜œš–š–˜–˜˜“˜Ž˜›˜—–•—˜˜——šš™š™”›˜˜š”—™“—•š—˜˜—”™˜˜š˜™•˜˜™™˜•—™™˜›˜•™”šœ–™“ž——™š›•˜“’˜˜––˜ž˜––———’ž™–œ—™˜›–˜—–™—Ÿ—’˜––ššš™—“™–™œœ•—––—™”ž˜”™–—ž™”š˜šž›—–™œ™™˜™˜–š˜“˜˜œ–——™™™™˜œ–—›™œ™—™˜•™™—š˜™—›™šš™—œš–—™ž›–œ–¡—˜š™™•Ÿ›—ž›—š˜š˜•—˜š›˜š™—™”–™••šŒš—”–•—›šž–š˜šœ”™š•œœœ•—š˜š‘’™˜œ—˜’—˜™““™š’œ’œ“œ•›—™—”–œœ‘’’™—˜›”“•’ ˜™‘™š›—•™™›™—–¡š•”šœ–š•š•‘œ—œ—™˜›˜š•”’˜”•——˜™Ÿ••”™˜•š™ Ÿ‘›™—Ž™™”™•ž“‘ž˜™—›œœ›œ˜š•™•˜›™š—––˜™•š˜•”˜™˜’“¢”™™››•“˜™–˜——“—”™š˜š™™–—œš““˜“–›”—™™™›šš’™—™–——™—––š˜™——–š™šš––š™–•™š˜—˜™™š——ž™—˜—–™šš—™˜œ›˜˜›—ž›œ™•™™™™”™žœœ—–˜—™›–˜–•™š—”˜–•–šš•˜šš›™—‘›˜˜—š›š™˜š–›•™–˜š›˜™–”™™˜™™™™˜˜”’˜™œ˜˜•˜—“˜›™••——•˜–––••—™˜™———™™”—˜––——˜›•™—›™”˜œ›™š—š›—••™™˜š———˜˜–š™™™ž•—š˜––™”—–˜™˜˜˜–š—˜›˜–—–•—–’˜˜”™››—•™”š™™”—™ž––—•–—–š–š˜——™˜š™•—˜——–›–ž—›”˜™™’š›™›š˜›™š˜———˜•™–˜˜˜•—š”››››•–—˜™˜˜“ž—˜™——˜™™”›˜–˜š˜˜—™˜œ™˜”˜™œ˜œš– ˜˜—˜›“™—•™™š”™›™™”š—™–˜šš™—™œ——––™—˜—š–“—™”Ÿ››—™˜˜˜—•˜–•š—˜˜™—˜–š–˜˜—™˜™˜—•—•–š”šš˜˜˜™™”–™’–˜—™›œ˜™™šš™—™›—˜—˜ž—˜›ž–™˜•™™–š™˜–“›œš”™˜•˜—•—••–“››—•——š˜›™™œ™™—”˜—˜—š“šš˜œ™š˜›š˜——––——•š”—˜•˜š•š—•˜š—”˜œ•˜˜—š—š”–——•˜”™–—•˜™—•’•˜›˜—™˜—˜•™˜š”–————›˜™›˜˜™•—˜™—›—™–š˜•œ˜œ•šš•—––˜›——”—˜“˜™™˜˜˜ž˜˜˜šœš˜š˜•—“š’œ—š—›˜—›——•™™™•——š”˜—››—˜–——˜—š–™™›Ÿ—™š˜•™–—ž˜›˜™–—•Ÿ”šš•’™–—™“–”š›“œšš›™™ž¡›˜—˜ž›—˜š™ž–—––š———–™˜™˜™™—”™–œ™™•”—˜—™˜œ™™™˜š–˜š•™šš’—š”˜œ––•˜–™˜——š˜–™–šš˜˜•š™Ÿ˜—˜•š™ž™˜—™š™™˜‘––™š—”•———”š—”˜š˜’˜›˜™˜—˜›’“••˜œ˜– ™š˜¤š™”˜Ÿ–˜–—˜™•›–—™–ž—š™››–˜”š˜™––›œ™–—”˜™•˜—š˜–š˜™“•–š˜˜˜š––™—•œ˜—œ˜—”•–––™—ž›“›˜”—–•–”™™œœ–™š–•—›˜šš›—–™–š˜ž—™œ———™™š–—™š›˜——™•“—’œ›“˜š›™™•—–š˜•–˜˜™™˜˜™™˜˜˜—˜˜˜™˜˜™˜˜˜˜š——™˜˜˜—˜˜——˜˜˜˜˜—˜—–˜—˜˜—˜—™˜™™˜™˜˜–˜—˜™˜™—˜˜˜˜—˜™–™™˜˜˜˜™™˜˜˜˜——™˜—˜˜–—˜˜—˜˜—™˜˜—“—˜›—˜–——˜˜˜™˜˜˜——˜—˜˜˜—™˜˜——˜——˜˜™™™™™˜˜˜•˜˜™™™›˜˜˜—˜™˜˜˜˜˜˜˜™˜˜—™™–˜˜™—˜˜˜š™˜™˜—˜™™—™™˜™˜˜˜™—˜™–˜˜˜˜˜——˜˜˜—˜™—˜˜˜š˜˜™———™˜——˜˜—˜™™™—–˜—˜™™—™™™—˜™—˜˜™—š˜›˜™‘š–š–•”–˜™›—˜—šš˜–•—ž—•˜–˜œš›˜œ˜š›š—™—™–›˜•–™–•˜–˜”œ•™—˜——™——–™™™–™™œ“˜™˜–•˜™—˜–˜–”˜›•˜—š‘™˜™–š›’˜–—”—”—™“˜™š”•›˜š”–™˜–——™š•šš™›˜–—™™œ–—˜š˜—•–”˜–˜˜—”˜›˜šš—˜™——œ™——˜–˜š———˜œ™š—ž™™ ›—™š•˜›—–•™™˜–˜›——š™—–—•—“›–˜——”—š›šš™š–˜™—•——”•˜——•—˜•™˜˜•™˜——™˜—˜™—š”™›˜—˜—™˜™˜˜—™™™–™™š—˜˜™˜˜™š—˜–™˜˜––˜˜˜˜–™››™——•˜š˜˜˜˜™š•—š˜™˜˜–™™š–™™›˜˜—˜™˜–˜™™š‡™™˜˜˜——˜™™–˜˜—™™À™š•š™™˜˜—™˜™˜™™…—™™™™™˜˜—š˜˜˜™˜–––™š˜˜—–›—›—˜˜™š——˜™•“—™™˜™—•˜™˜˜–›™˜–—›˜™—˜—™——˜š˜˜™—™˜™™š˜˜™˜˜›š–˜˜˜—™———–˜˜±™˜˜˜™˜˜–——™–™š˜š˜˜˜™š™™˜š˜™šš™—™˜˜–˜™™œ—š˜š“˜——œ˜š˜“˜˜—ž˜—™š—“”—•œ™˜›™”ššž”š•š˜˜—™—š—™š——˜š—›™›—˜––”™•–˜–™––š™š™••–—“–™›™—š˜˜š–™”›’—™—š˜“™•‘˜ ––••š˜————›œ™™š˜—–“‘™•––ž˜———š—š–™–—š—˜—˜—–™˜•›ž—™››˜—™——™”•™Ÿ›”˜——šš˜˜˜—œ™•™›˜˜˜”™˜™•–›š—š™—œ–”Ÿ˜—š™—›››—š•™š“™™™™—˜–˜š—“——›˜—š•–——˜Ÿ•œ—š˜—›™˜˜˜–•š—™™•˜–˜•š•—˜–’–š˜–˜“›œ—•˜˜˜˜—˜›šš•™™˜–˜‘•—––”–•ž ”™™”›–—œ—˜œ›–•–š›—–š—šš“›œ›š™’–›—•›š–—“•—˜——™”—–™˜˜š•”™›š—™“—š•š˜“›–——œ™™™˜˜—™”š˜˜š–˜•š“––––˜›™š™›™˜—˜™—™™™›š˜˜’’—™–˜—š”˜•˜—›–›™š˜™™›˜”›˜š——–™š™œ–•›”œ˜š›–”—œ——œ”™›™µ›—Ÿšœ•’–œ™˜——“•‘˜œ™š”™™—˜˜–˜˜˜™˜šš•œ•—•”˜•š—š•Ÿ˜˜›œ—™›””››—–™›—›š™›™—™œš––•˜˜š–“™œ™œ‘˜˜•—šœ–”œœš•••——™›—”•š–š›š‘™›™’•žž—˜š˜™›—›™™˜•™—˜‘—‘œ”–™›š˜˜™š——˜––˜›–™•™’˜—œ™™š›šž›š•šš™››——•˜–—™˜•š—š•ššš–œ–•Ÿ—“š›”˜–š˜’™›–˜šš——™—˜š—™œ™•–›˜™Ÿœ™š›Ÿ›—›•‘™™™ž™™–—–™’š™””–”˜ššœ–˜ž™••—š–š™˜œ—–Ž›™˜™™˜˜˜˜˜š™˜™—˜›˜—˜˜˜—˜˜˜™˜™™—˜™—™˜™™˜˜˜˜™˜˜™˜™˜—˜—š—™–˜˜——˜˜˜—™˜š™˜˜™˜˜ª˜™™˜—˜˜™˜˜Œ™—›——™˜˜˜˜˜™™™˜˜™˜™—–˜˜—˜˜˜˜š˜–˜˜˜™™š™˜˜˜—˜˜˜™˜˜™˜–˜˜™˜˜™˜˜™˜—˜˜—˜˜—˜™ ˜™˜˜™˜˜˜˜šš——™™˜˜˜˜—˜˜˜š˜˜—˜˜šš™˜˜˜š˜™š—™˜˜˜˜™˜—™™˜™˜š˜˜™™—˜˜˜——™™˜˜™˜˜˜˜˜˜š˜—˜˜™˜˜—˜˜˜˜˜˜—˜™š˜—˜—™™š™˜—™•–™›˜•™œ—˜—–˜˜˜˜™œ“˜–š˜š˜˜—•›–˜—š™—š–•™—˜–—™—™š——•–˜——›˜š–—˜˜˜—•——˜–•œš˜™˜—˜š–˜™˜–––™™˜–•˜–˜¢šž•š—˜™›˜™”˜’•–˜–•š˜˜“œ•—•–›™–™˜™›——’˜–˜š—™—˜“—–˜——™——”˜š——™™˜˜™–™š›—‘˜˜™˜˜š˜™™˜™™›š˜”š““˜–•—˜—–™˜™–•˜š˜˜š˜——š•—•™—•—™••–™˜˜˜—žšš——™–—™˜—–™™ž•™˜˜˜”˜˜˜–—˜š˜˜›™™™˜™™™š—™—–›—š——™“š—˜•˜™–š˜•œ”˜™™˜—š˜˜——–”–—™™Ž™™˜•™žš˜š˜–—˜———•™˜™˜š–™—–š››˜™—˜—Ÿ˜™š“˜–›™™˜———¡˜™™¡˜˜–š”’“•šš—š—˜š›–—˜˜˜•˜™—šš˜––•š˜—¡“™š•š–š•—š˜œ’˜š˜™™šœœ˜™œ˜–—š•˜™œ•“ ˜˜––™—˜™™š—“”˜•™œ—–˜™•—š™™˜—š•›–›™——”–˜˜—–˜™–˜–™š•šœ˜˜˜’’˜˜”š™š”˜˜˜–——™›šš›˜–•–—›˜”™•˜˜Ÿ–™š››–——•–•——•˜•——˜™—œ–›––˜›™›˜”š—œš™—–”—šš•š—™”—””—˜™™—–˜——––—™—˜–™™–˜™—™™–”•˜—š’™™—™˜’˜˜žœ•˜˜–š˜šš———š™’•—œ—™œ™”™˜›—™˜œ—š™—–’•“š—œ—•”›ž›š—™—˜˜œ—š—‘—‘š™—™™“˜™œ››š— —˜•––•™™š•—šš—™—”š——™™˜›˜–šš—•˜š••˜œš˜™˜š™š“™–œ˜š˜›––“—š—š••–™—”–˜—•œ˜š–˜—–˜—™˜—–™˜™‘•˜——›•—›–š™››˜˜™•–˜–›Ÿ–˜˜•œ“™—™“–˜œ˜ “™™œ—“™”•››˜š“’–˜š•˜™˜žš”—™–™™›••””˜™›——˜™šš“™˜”–•›š˜›—•—™žž˜™——–’œ˜–›™š—šœ™•– ˜•˜˜˜˜”œ•”—”š—–—˜—–™œ™œ—™——–™™˜“˜›–‘—˜——™•”˜š™˜• —›˜—™™™˜•™˜™—™˜™–šœœ–—–š›”–™—˜—•—™™™•œ¨š˜š™™š—œ˜š™••˜——™—˜˜”š“š™—˜—”—˜™”˜—’—•—–™™œœ–––š•—›——™““œ—™˜œ™šš’——–——š˜˜”˜™™›ž–—˜˜˜š››š™–—•œ›™šœ’–šœ––œ˜–š˜˜—™——™•¡œ—”š•˜’——›™š›—–š’™˜›™–”™˜•—š™–—•—™™˜™”˜™œš–•—™›š™–œ˜™žž••ž™œš˜——šœ†–™—™ š’™š“š˜˜˜™’˜¤˜˜“™”——œŸ˜™——˜•˜œ™›•™›š™ž•š–”™œ–™šž›—–žšš–•˜™š›—˜™—›˜——–œ™•˜Ÿ––•—‘›˜™›š–š™—™›ššŸœ˜˜–šš”˜•›š™—•—™›™™™•˜žššš”˜—“˜’——™™•’—˜–›™—˜˜–™——–™™—š˜˜™•š”–™˜—•–—”˜—”—”•–˜—™™š•™™˜˜–’”•——š›—˜–˜˜ ˜›—›•˜˜™—–™”˜›–™™™˜š•›—š˜“˜˜š—™šœ’œ••—›˜–—™—˜——™˜™™———šš›•—˜—˜™–™–˜š••›œ–™–™—˜š—•˜•ž™šš—™“”— ˜˜šš™˜™”‘˜˜˜—˜˜“ž™›–•—›•˜—–•–•—š™œ’—“š˜œ–’š™—™˜•š™¡˜™˜———–•™™“Ÿ™›™™˜œš™˜š›œ”™“———–••—– ˜”šš–’–™™—•—™™—œ•˜–š™˜š˜—–›™–”’’š›™™™™—•˜›œ˜–—™—™˜š•›š–—™—”š˜™˜˜˜•š–›˜“•˜›œ›˜™™™—›™”˜˜——››˜˜˜™•˜—™–—˜ž›–›–—”•–˜˜–”˜—–”™˜™˜˜››˜•––•”˜™˜™˜˜•“œš–—™›˜š–˜˜™•™–™›—™›˜—˜˜˜™—š™˜“œ™š™—˜—”™›œ–—–œ—–—”˜š›š˜š›’˜”–›™™š˜•™™—›™˜“˜™˜•——…˜œ™šš–“™™•š–˜™™™˜”‘–•›˜—››—˜š˜—–’š“••™—–š”–™–˜™›•™˜”•”œ›™›‘–™›•˜–˜›™™›š““š˜–šŽ™—šš––˜˜—››“””œ™Ÿ•—•™•’””•˜—™——–—•™™—š››”™˜˜˜——“—’˜•—˜—˜™–˜š“™™™œ„”˜——ž˜–œ—–œ™š˜“™–™–˜™•™œ–˜š–—‘•“—ž™š—’”—™˜———š—•›™˜š‘•™”œ›‘–•–£˜™›–••›——š˜›š¢–—žš–™š—™™˜˜“™˜Ÿ™•—˜˜—š˜˜˜™——–™™™™™˜š—•˜˜™‘—™•˜–•™–œ–“˜—–—˜˜˜œ—™––›˜Ÿœ›š•˜•š—š–›˜—––˜™–š›–—˜–™œ˜™˜–—–—”••›™šš•šš™’šš˜™—”˜—˜—•””›—˜–™š˜—™˜™—š˜—š™˜–™—™›œ˜—–––˜™œ•—›œ˜˜˜–˜˜›—˜™˜™™›˜——‘™›–˜˜š–˜žš–“—›–—”——–˜œ—––—•›šš•—˜•——’—•š™˜š˜™•š™™˜š“””™—™›™——˜™–™š—™“”˜™š—•™™—š™™˜—šš˜—˜™—–˜˜˜š—˜——œ˜˜™™™˜š›—š–™˜™›™——™™——˜™—˜—š˜˜˜˜˜˜™–—™š———˜˜™˜™š—š™˜™™———˜Ÿ˜™˜—˜˜š™š˜•˜˜™¢šš˜˜–˜—–˜™——š™™™¦—•š™š˜š™—š˜™˜˜™‰˜š™˜˜˜™˜˜™—˜——˜˜–˜™›™™™šššš˜™˜–˜—œš˜œ——˜˜™—™—𙙙𗗖˜˜˜˜–™˜–—˜˜—–š™˜™™š—™š˜˜˜š™˜˜–˜˜—š™˜™™š–—Ÿ˜–™›™—˜˜™—˜˜™™›—˜——™˜•™—˜œ™˜™—•˜™˜–—˜˜—•–œš˜š’—”–“œŽ›žš˜™¢—•™Ž–š“™œŸš–––˜•˜™š“—“¡™‘––•š–’–—˜ ‘“——™Ž›™••šš˜•‘›–•”™š™—–™Š•™™›˜––œ—ž——œ™‘—š›Ÿ™™”Œœ™š‘›–ŽŸ–•š˜”•”—œ”—•™š™—š™––˜˜‘–™•“Œ–œ•š•–“–’›‘™’”™”•š—›•™˜š—•˜’˜—›˜—–™–š™ š—™”—›–•’”˜—š˜˜œ™˜œšŠ”š–˜™•˜›’––˜•œ™ ›™›™‘™‘”‘—˜™——™—˜˜š›˜”—š—‘šœš‘š˜œ™–•—š—š•–•šž‘Ÿ™š–œ”˜¢ “—œ‘™–š™—›šš——”“–žš”™‘˜™˜””š›“Ž˜›“›”›•”šžœš•‰ššœ‘–™›—š—œ––›—™–”š››—™¥š˜—–˜Ž•“Ž—£‘˜“‹™—™–•›–— ›Ž••ž˜˜Š™•˜œ•”š™—¡œš•—˜™™‘›–•˜šŽ˜–˜›œ•˜”˜š—›”—š•”›˜•›˜”–™”—›™ž–•””™••›—˜—˜˜šš—¡–’šœœ‘“•’”’™›•™š˜—™š‘˜“˜‘™•››”žŸ’˜œ™ž™— œ˜—˜››˜———™Ÿ˜š—š˜——•˜——™šœ–™˜•–™š——–˜˜••™š˜•™š—”–™™š›•—™‘––˜™™™—™˜™‘–™–”––™š——š˜˜–˜•˜“™–š™›™—™™”˜˜˜“•”˜˜”—š››—™š–˜—™˜š›—˜˜™–˜”˜š•˜–—˜•™™•šš™”—–˜š˜™š™”𔓙–š——“™—™˜™——˜ž••œ›—˜—™™š˜›™ž”—œ›•›’“™—™—••›—Ÿš—˜—š—’——›—šš˜›š—–™——–’–™ššššš”˜——•š™—š™—˜˜˜—›—––™˜›˜˜˜˜œš›˜–™”•˜––—–•š–™š™•š™™˜™˜š™——–™™˜—™“›™˜—–š™—‘—›———–›˜•˜š˜–˜––—”•šš˜––”—˜˜—–˜˜“—˜˜—“˜“——š™›™œ•˜š•”–š—˜–•š”™š šœ——š——˜™šš››•š˜–˜—™“—šš™˜š˜›————š•š–œ–˜œ•˜™›˜™”›—––š˜™™–™š›œ˜–™œ˜•™–˜•˜™—˜›˜™š™›—›š˜™˜™—›———š–š—“š›—›•˜—™—𙕙—˜™˜˜—”››•—–˜˜›—™•••—˜———˜—š—›•’™”˜•””™™—™—˜ž—›’•—˜šš–•™™™˜”›˜—š”‘š–™•——š–•š—œ˜˜”—˜˜“—›˜›”•’™—•¢˜™—–—š˜š˜–•˜œ—–™™œ“˜–—™—”—š–˜—ž˜—•˜˜–™šœ™—•™’˜™“–’ œ–™•˜›–𙕗•š˜–˜–›š›œ™—œ•–›œ•››˜˜—•˜™˜›ž••˜—™”œ˜’™™”˜˜˜™™šš—•˜•™˜–šš–˜š˜–š–™™š˜š–ž˜˜—š–šš–™ž›ŸŽ——›˜–›™”š™—˜“š”—š–š–›—™¡œ™–˜”•˜™”—™š—™”—–˜˜——˜—™˜–—™”š™—™–—™š™–˜™™—™˜–˜—™˜—–œ˜˜˜”————˜˜˜™‘˜™–˜—š™™š•˜™š˜š™———™˜˜œ™˜—˜—™™™—˜˜™˜—˜º—š˜™–˜˜–œš—™—™™˜¢˜—•™——˜•—˜™˜™—˜“™–™˜™—•™š˜˜—•˜˜™™™œ˜——šš›š˜š˜˜›™˜™™š–•˜˜˜˜˜˜——˜—™›—˜–—›™™—™™š˜—–™˜š——˜—ššš—˜™˜–˜˜•—˜˜™–™˜™–˜—¡›˜—™––—›š˜œ–›™™—˜˜—˜˜”–—ššš—›–™›˜–—˜™˜–™š”–™–•˜Ž™——˜•™š“˜—–™™”–š’“š™––™š˜œ—šš™—˜™™”œ–—˜–™™œ˜›‘–—œ™™š˜š••˜˜˜—•š™š™—“›™˜™”–—•˜—•”ž—”˜œ˜˜š›š˜š—––˜™—™—˜š–š“˜—šš™˜——š˜˜“ ———™––™•—˜—˜—™–˜“•™™š•™˜—˜š›—›˜˜’˜——š‘˜—˜›”šš—•œ™”–™•˜˜–™š›–™˜˜–™™“””™—˜”–˜ ”•š˜—•š™˜™™š™—™ž˜—˜–˜—˜™—–™“˜™™——–“—˜—–˜™š™––˜š–™–™–˜š•“˜–šš–ž˜œš–—•—–•™––™¨™–™˜š›”’›š••˜–›™™š™™™˜–˜œ••šš”›š™š˜š•™”—•’™™–”˜”š˜™—š›•—š™˜—–•˜š›œ”™œž”›™œ”ž–’–ŒŸ–›—˜•”“—˜˜™™—£š›ž—””˜—••™™ž—š˜•˜˜š˜’˜˜Ÿ’—šš—–˜˜œœ—•˜›——š˜™–œ“•”š–––œš—™–“™˜—–™™˜ž˜™œž˜——–—™—™–—‘—––™˜•¬—˜œ˜—™———™“•˜˜˜ž™’ž—”••›™–ššš˜š™š‘•–“‘š‹–•™–š™–›˜šš˜——˜œ—•›—˜˜™–šœš˜–“—œ”™š—›™™˜—˜˜˜–––—˜“–›˜’˜•œ˜š”šš–—–——›™˜™šœœ˜˜˜—••šš—œ˜•“˜˜“™˜›š˜˜–˜—˜›–š–—šš™š˜š•›™›š•˜œœ›–™––”–”——›šš––’˜–™™œ™—™•˜–—”™–™–›š™˜š–˜™‘–˜š—˜š”™š˜™™š™—˜˜š™——œ——š–—“–™—•—˜”–˜œš™˜˜œ’˜Ÿ•š˜™–•“™–š™™–”•œ˜¡˜™•–˜‘‘™›——˜•™”˜›š—˜”—˜–˜—›”–œ›˜–™˜——”™––˜™›š™—˜–•›™™š˜›”•˜—•™˜–™–™™•–˜–—™›Ÿ˜˜˜œ™˜˜—™š™š›œ’™›—™™—™˜–™œ› ™œ–™—š•™•——’š–˜™™••—™›¢˜›—˜—›š˜™—™œ››šœ•˜š–—˜—›–˜š—˜˜š™Ÿ™š—•–”——˜›”™–š™™›˜—˜œ™–˜›™š˜Ÿ›™—•–•“˜š•–š™šœš˜œ™—™–ž˜—˜——–—›šš™™—–œ˜”—™•“••¢š˜’˜•›™•›–™¡››š˜šž™˜™—›™˜˜›™—™—™˜œ’•”˜™—–˜––”˜›™™˜™–š——š—–—–š•™œš——™ž—›”˜‘˜™—˜•™—œ™¡––›™š”š™—–Ž˜œ•›š˜˜••™–š˜˜—™”œ˜™–š–˜–™››˜™˜˜—–•˜š›—•™˜›—œ˜——•˜–›”œ––”™™—˜ž•˜™”››—˜•˜›—™˜™–š›–™˜›––––˜–—™š™‘šš™—™–›™’““››™—˜—˜š˜œš•˜“™›œœ—š”›˜™š™’˜š›“œ™•œš—™˜œ›™–šœ˜™˜—™˜™™’—–—–—™™—–•–—™šš™˜›–˜•›•™”™š™—–˜ž“——œ˜˜†—˜–“šš•š”˜™—˜œ“—˜–”™›’–”›˜‘–š—–ššš‘•”˜™Œ•˜›–’™˜š˜—™••š™›™˜†—™šš˜˜—™—˜–˜“”’——–œ˜—™š“—™š˜š”––—š™™œ•˜š’›“•š™—™–—•—•—™–—™–™–•˜•–™—•–™™”™œ›—™–•–š™•œ”•™”“˜——šš––—œ˜˜š–•–—Ÿ—™š–˜––˜––›–—–š——˜—˜•—˜›”˜š™š™›–™•‘™š˜™˜š—˜ž—™•™—”‘——•—›™—–——šœ—˜˜—šš——–š˜œ™–—–˜™–—›”•˜”Ÿ—˜—˜–››•—›–“–—˜˜—˜››ž—™›—––˜—›–™™šœ—˜™—”–˜–‘™š™š™š™™”“—•”–Ÿ˜’˜–”•›š™™““š—˜›œ—™˜™›——”˜–™žœ˜—•–˜š˜œ˜™—™•›™‘™œ›˜˜—–˜–˜–š™šš˜˜›š—˜“–—™•––“˜”—˜™ ›™™˜š•–——‘””›™˜˜——••˜™™““˜™—Ÿšœ—˜–•™™—•˜™ž™–›œ™š™š˜•›–˜š—•—›š—™”–›”–™››—–™–——™œœ›˜—–˜˜›•™™š•’——”›–”’•—ž–œš•¡šœ›Ÿ“˜œ—™œ—˜˜™˜•””—“”•—𛓕•˜›š–“œš• “™”š˜šž—–˜œ•œŒš› “š—”˜”—œ–—™•›—Ÿ™™–™žšœš•“‘˜–’—œ˜”“šœ™”š™›——›š˜œ•˜’››™›Ÿœ›™š–”˜“›˜—™•“›–——”˜š “›œ—œ”“š™œ–’˜“”›™™–™˜š™›——–”–œšš›—š•¡œ—” ˜™››˜š‰™›š”›œžŸ˜—›˜•–˜––šž‘™–’šž–›˜–—›—–•œŽ˜™”š‘˜—Œ––›š™“™š™™”šš››–™—• ™›––”–š•—™—“——š•‘—“›˜–Š–™œœš˜™“–œ˜™ ‘š˜œ™˜–˜™—˜™™œš™”š—”–™š›Š•–››š——•š˜˜–—–™©”ŽŸ–™–˜–”™˜™™˜–œ˜š–˜–—”›Ÿ–™“š—™›•˜““š–”›˜›’˜—•›˜˜•˜’“™˜˜’˜•“™–˜š›—™˜š˜¦™˜š˜•˜——“—””–—›š™—˜›˜”˜‘˜™™—™—˜œ’“œ–›š•š˜˜™”˜’™••™•–™—”˜–’™—˜œ˜˜–œ–™–—–žš—–˜™–”–••“—“˜›˜¤’šœ—¡˜—™¡œ—”™—›šœ™›—“•“œœ’›‹›™›Œ–™¢¡œš™–”“œ—‘“–—‘Ÿ“˜›˜”–—ž˜––™•’¡—¢š›”—— —š›™™š›Ÿ”•‘…˜—•›˜‘›™—œ›—›–™™”–˜—–™š— ”œšž™‘œ•“’›’™š“˜˜˜–ž™›–š™™“š”˜˜›˜›’›“™š™›‘—¡™žœ•š¡œ—™’˜˜˜œ”—™›™—™š˜—›™Œšœ›˜—›ž––’•™š—•œ—–›—›—–š››™š›š—•˜•˜™—–š–™™¡–™–—˜˜––˜š—–”š—™–š•˜š˜™˜™›—šš’”˜›–—–š––›œš•—“•—–™—•–›•˜˜™”—–™›–™š™™™™•–—œ—œ˜•˜™”—˜–š”š˜–˜˜™Ÿ•—›™˜›•—”––›™—š—œ‘™–•˜“˜˜™œ–š–™œ”–˜–˜š—™˜–˜–Ÿ™™•˜›˜™™™•™’–š—”›––—šš™”™˜–š™“˜–—“‘—–™ššš˜š”˜—œ™’š“œ••–•–’œš—™–—˜š—š™—–›œ—”˜•”˜œ›“˜—––›—™—š—’›˜š˜›™¡˜šœ™š™˜——™–˜–˜˜œ—™—œ—–’—¡—•š• —š˜–“˜žœ‘𛓓˜œ˜˜™–›ž•š›š—”œ›’“––š—”•–š–˜™—›—•›’’˜œ™™—‹˜—ž›™“—–”–š–—•›–˜•ž•™˜•–Ž”––™™’–™›œž••–‘š™šš™˜š™˜–š”˜•–™š˜šœ—–™˜˜–œ—š˜˜–œ›™”•˜˜š—™™—’›–ž™———–”™˜—”š•˜˜—–”›š˜™šš–œ–ž—–——›•™™œš™•—š•—šž™™™—‘™”š™ž——š”š—˜™—˜˜™š™—š™›••˜˜˜œ–š™’››––—œ™›––š—™™„—’”˜œšœž›œ™š¡‘œ–“›˜—–”•™––˜–”•šš’•˜™—˜œœ˜˜™“•™––š™˜›Š“œž•—š”—–——Š˜›š™–––žšš•šš™›“Ÿ˜–ž™˜–Ž›™™•—“˜˜—šš–˜’Ÿ”™•—–š –˜™™™–ž—˜—ž•—”“––™•˜›•˜›˜›š˜š™™š”‘œ™™”˜˜–Ž˜˜šœ˜™˜š™›™’––›—•›——˜™–™‘˜ž•™›•›–—šŸ—™™™œš˜š›••”˜›“™™™—“•Ÿ–›™—œœ—›•–šš•›™œ™•™’•–Šš’˜›œœ˜œ—œ—–™•–˜—‘™—•˜››’“‘™šœ˜“—š––•™œœ•”›™š“˜˜šœœ˜œ˜”Ÿ™—™˜”’šœ—–——”˜•–Žœ—š–™–š•›—–™¡Žš––———˜›¡››”›˜”˜ š™—›››š—˜—™›—›—™–“š•—™’š—˜š™“˜–—˜›˜œ–˜¢šš˜—›œ”œš›™™›•——š–’‘—˜˜––››–›—Ÿ™•’”™š˜–˜––™—œ—š—•“˜‰˜•™›˜˜š›•š—š›™–œ“”š›š’œ¡–˜˜˜™š›–—–›••œ™“œ™™˜“™š˜™›˜˜™˜š™˜–™–™™‘˜™œ›™——”›™š•˜”——™–—–—›•™›˜•“•™•˜˜˜š˜–¡˜˜šš™™™˜—š—™˜—™›˜˜š™•™˜™‘•š™–˜– š˜•—•™™–˜˜˜•˜•–™™—š—š—”›žš—™“–œ™——”™˜š™™š˜—˜•š™˜•’–˜•—˜™œ™›œ”šœ——š›œ–™––˜•˜™™˜˜••Ÿ–™˜™—™˜š•™—”–™”–˜š—’œ™™“–™š™™œšš™–™——™œ˜—˜™˜šš“™˜—–—™™›™–•˜“™™œ™š›—–˜’™™˜ž—”–˜™œš˜˜˜œ™›œ•˜š–——•˜”˜—œš˜—š–™›•››šš——™›˜—™—–š––˜——›˜™™”œ——™š –˜˜™š›˜”˜•˜—˜˜–”– ˜•™—›—’›––”˜—š•––™Ÿ™šš—–›˜—–—’š™—™˜š—”“™šš—–—˜˜š˜˜˜™˜˜––›•˜–•™——˜›——š—™——™—•™˜™š›š—”˜ž•—––˜˜“–›—––˜™•›šš˜™šš—–™š—–™˜˜—˜˜——˜–™•™˜š˜˜™–œ™š›˜˜›–š˜›››˜˜›š—•˜•œ™—™˜”™˜™”™–•™™›™“˜’“—Ž˜“™•–œ˜——™˜˜—––š’”˜™œ—••”™ —š–˜˜”–•——•—š™—˜˜—’™™™›•™š—••˜˜•–•—™–›œ”˜™—–šš’—–˜—˜˜•™›™——›Ÿ–—›–•—˜•——˜š™˜›œ–•˜–™–š˜™˜–˜˜—˜˜–”——” ™–•—˜›“˜™‘˜š–—–™–˜˜˜˜”–™˜™”–—–žš”–˜”˜›™“˜“ššš—”˜š–™š•—˜š”˜˜™˜–™— ˜•–™™™›š˜”Ž‘”˜œœ–˜˜œ•˜™šš”–‘–™•˜–›š•—œ–š—•š—•™–—™™——•™››™™™˜—˜—›—™™™—•œ˜›š–™œ“’›™˜—™˜•˜˜—›—˜–œ›“”–—›—–˜š˜•™••›˜›“˜—š›”—•šš™˜––šž—š™œ’˜–˜’™‘––—˜š˜˜–”’–˜œ˜š”——•œ•“œ™˜™˜˜œ™—œ•”šš—•š›˜˜˜™“”™˜™˜š—š’›™–••—••ž›•™–š—˜—™•˜˜›ž›“š—›Ÿ˜š—”•”™˜™šš˜ššœ˜—™š”˜ž˜”˜™˜›™™œ›“š™˜™•—š™”™œ˜•™•™– ˜š“•™””—›˜˜™——™–š–”–™˜™˜™™š™•™›™žœ–•™’š——“•™——™˜–—˜—™™—”˜–—š˜˜––”š™—˜•™——’˜›˜Ÿ—˜˜™œ™•š™˜š’˜™›Ÿ–˜š˜“”œ“£™œ›š—š›œ™—”™˜š•š™š–˜˜——•›—šœ—˜š™™—™˜–—˜œ˜’–˜›˜˜–—”˜™—˜––˜•™œ—˜š—˜›—™œ–———™œ–—–˜™”œ˜šš˜—˜˜šš—›––—™•Ž˜›–ž•—™˜™›–šŸ–˜™˜šŸ•—™™™˜—˜š˜—™—™™–••˜š™•››™™–‘™˜Ÿ˜˜œ——’˜—š–—˜š˜—˜–˜˜—™™“˜›”š˜š—š˜™˜‘—˜™™”—˜™˜”™œ——˜˜™š™œ›™›•–—–˜›˜š“˜™›—š—˜œ˜ž™——˜”—˜™˜™˜˜›š•—˜™˜™•˜—˜š˜—•™—››•™š˜™–š”™š™š˜˜•˜™—œ••™–›™˜˜šš•™šš˜—–šš™—“—–š–—š•——˜˜™™™›—˜–™˜•—›™š™—™—–•˜”˜šš˜›˜˜’’”ššœ•”šš™–˜›™˜•˜˜˜™™š–™›š™–˜›”˜š™–™˜›–—š˜˜•—™—œ›˜š˜•••—˜—˜—™š˜˜š™–˜——•š“—œ›˜–›˜•™™”œ™š˜‘™™™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜—˜˜˜˜˜˜˜˜˜˜˜˜™˜˜™™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜–˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜˜˜˜˜˜˜™˜˜˜˜˜˜™˜˜—˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜•”œ˜„š—˜—˜™›˜™š˜—™—•”š–›”—œ—™——–˜™™š——œ—–™•˜š™›‡—–—›ššš˜–œš™——™›˜–’”š™œš™˜—™—’š˜™™–˜„–”™—•——š˜™—˜”™–™­™œ–›”––›™œ•———–k–—˜›–—”š–š›˜’—™™–˜—œœš–™œ”š–›˜™–”™–˜–”š™˜›˜“™šš–š–˜˜˜”–˜š™š–š™˜™™™–˜–˜™–—–™™˜•š•˜™˜š˜–••–••—¤š˜—›˜™˜“—˜•”˜™—š“™˜™—™š˜™›™•˜˜š——˜––˜–›˜™™›˜š˜˜—›—™™•›—•š•™˜™•™Ÿ”—™š›——›•––™—˜–™™˜—™“™™™˜˜—˜˜–—œŽ™˜™™˜™—”••š™™œ–——™–—•——–˜–”–—œš—“˜——™˜™™˜–™”—š˜™›˜—š–™“•”›˜–˜”›œ’—–—–™™›™–™››š—•—š›˜”—•”™˜š˜›š™™—˜˜——š—˜™–—™™•š˜œ—“”›œ›šœ˜›˜˜˜“˜™˜–š—˜™——˜—›–›™•“–™˜˜•–›—”š˜››™šœ™—š™›–™——¡˜˜”—˜–•”˜˜™œ—•••”˜š™š—–—”š“ –™™™™–™š™•š•˜›“˜—–š˜––™š˜”š™”‘”š˜™š˜˜˜•˜˜š˜–˜——š˜™”–—š™—š”—–•“–œ——’˜–™›˜•™›‘™™•–”–˜••™–˜”œ˜š•™›š››™™š–—•™˜——›–™œ•š”™™–›•˜—›“—™––˜“™–˜–™¢–˜šœ—›˜™›—š•—žš”™–•™˜—š—œš‘™™š—š——–š•›–˜›˜™——˜••š—–™–›——‘•˜š˜•’˜˜’–•›•˜š™š–›˜—˜›–——œ™›šš™˜›˜™•™š˜˜œ˜š—›“–˜§•š–—–”•™™–™š™•™›—™˜–’•———›Œš–™˜˜ž˜–’–¢™”˜”——•™–——˜š”™‘”œš™™•š™›˜›—–———•˜‘š—™š•™–›—™•—˜–—•—˜—™˜——˜ ˜š˜™˜š—˜”š™—˜˜™’‘”˜™–—™œ˜˜–›šœ—š‘Ÿ™—œ™›•–˜™™˜˜™˜›–™™™š—•žœ™œ˜—˜˜˜“˜’•™”˜•™˜›“˜”™›—––š™™™™–———Ÿ”–𙕖œ™˜™“˜™›”™œ˜›———š•œš™˜˜–˜”–˜ž”—”˜˜—™›™š˜•›–™“”žš˜™——˜™••™‘›™˜“––››™™—˜“–—›•™•š˜”š–˜—–˜˜•–——•œ›”™˜›•˜–—œšš–˜“—š”’”˜›—›“˜—–™š™’™’™–˜˜˜”˜˜˜™š™•—™–š”˜”—˜Ÿ˜”˜˜–—œ˜———›Ÿ˜•˜™™——•˜š™™š•™—–˜˜™—–™–š™———˜š–”——™—–˜™–”–™–—˜”—¢˜—šš›š–“™—™–œ˜™˜–˜”–˜–š˜–™š”œ˜Ÿšššœš•™›•””•šš˜’™˜™˜—™š—˜˜›•–˜–š—™˜•™•—›—’”—š“–˜™˜—™˜•˜–•—–—›“š˜˜Ÿ™ššš“—›Žš˜˜•”˜™˜ž˜™™––˜›”’——ššš™™š˜–“˜˜™˜š—•˜šš™˜—“™™›˜™—™˜•—šš•˜™™–™šš”šœ˜›˜“œ••–™–”˜—›’™›”˜—š››–™œ˜–™’™–›˜š˜—˜’™“™š”“˜œ˜˜š—”—ž“—œ—•˜–•›œ•š–™˜™œ›š••šœ›™˜œ˜”•———˜œ›“›››˜š——˜–”–›™˜•—˜‘—•œ™–™š™•šœ•›—ž˜™˜›–—–™™–‘•”˜šœ˜›——˜œšœš˜–š—’”™šž›—š–——›˜˜™—˜š”™˜”š™™™™š˜•››–•–˜˜—˜œ••™œ˜ž”™—™™˜š˜——™˜•–˜™–˜œ—˜š•——–—š˜š˜—š˜˜—›—•–š”œ™œ˜š˜——˜™“˜›˜•—“—š–—žš˜’šžš™˜›™˜•”™›™™—š›š˜™”˜–›—™œ›™™™™œš”•–•“˜”š˜›˜š–˜œ˜š™˜˜šœœ˜”—›š—˜——˜™“—™˜˜•˜•žž˜››™˜Ÿ™–™˜•™™˜“š™›™™—š——“–š–“—›—˜—–››˜—›˜™–™•𙑓˜›—™™šš˜—˜•˜–™—š™——˜—˜š—–˜”–˜”•›”–™™—™š”š–˜š––—˜›˜œ•™˜™š”–”˜•›—™—•–ž”˜—œ˜”›™˜š–™š˜˜”—š—_˜œ——Ÿ•“™œ¢Úš•• ™™•˜›—™žžš™—Ÿ˜”˜”˜Ž™—˜™˜”˜™›˜˜˜˜Ÿ––˜˜˜—˜™˜š–––˜—›ž–›–›—•–™”˜—˜—˜’œ{—Ÿ–——’—”’››˜˜”—˜–™™—˜•š•˜——–˜œš•–š–ž˜›–“—˜™š˜š—’›–—™¡™™“”˜•˜š™•—•—™——–™˜˜”•™••”™”›˜œ˜™™––•œ—š•˜•š™›˜œ—•““——•œ˜”œš˜™™››››–™™š˜™œ˜™›”—”ž•š–—˜š•”—œ˜¢š˜œ˜”™’—˜”™—•›˜——›”šš›“–š˜—›’——•š˜š˜“—™™—™›•˜—”œ•”˜š™˜˜—ž–—•˜—š™˜–š˜˜›——›”š˜˜•“˜˜——™’˜–—”šš˜–™—˜•˜•–›’–˜˜——•˜š–™•—‘œ•˜šœ—”™˜˜˜——••“™““˜–Ÿš”™–šš™˜•š˜›™——˜œ›•”˜˜š–š–˜˜š™”•–˜˜™•“™š›”™˜”šš”™””ž™•™–š—›œ–™——˜˜™›™›˜“˜—˜œ™™˜˜—›šš™˜™•˜™—™˜˜š–™—™˜™—˜˜™ššš¢˜–——š˜˜™•—™›™›™˜š˜™˜˜˜¯—š———šš™™™š™–˜Å˜——™•™˜˜–—™˜™œ™—Š˜™šš›™˜—™™˜˜˜——™™—•™˜˜˜—™œ—˜˜œ—™š›—–—–—š—˜š›—˜š˜“˜›œ˜—˜™˜—˜—˜—šš™–•–™™™—“–˜˜——˜˜š–™“–—›•™——–™˜˜•–™•–——›–˜š™šš™˜˜˜˜—™ ™˜œ™™˜™–™————˜š—™˜–—™•›—˜˜˜˜—™˜•“—™–™—›•–˜— š˜•™˜™™—œ–ššš˜”™™•—–“™˜—”•˜™˜–—›—––›—š———”˜•—™˜“—–——––˜—š˜•—•›—’š™–˜™›˜™›š—˜–‘˜›–˜™˜›š–™—–˜˜–™™–˜—›š—œ˜”š•šœ—˜›”šœ™”™—™š’—š•”™˜“—™›•”™š˜˜™˜™–˜—™™˜”šš––š™™˜™—”–š——–››——•™˜™——˜˜ž˜—˜™—™™˜”—™˜—›œ–•œ“›˜˜˜–›˜•–˜˜›•—˜›–™™—˜™–š›˜–•šœ—›™—˜˜˜–š–˜š—–•š’˜“””›–™–™˜˜™—–™•œ˜—‘š™˜—™œ“š—›™–˜™š˜•™”“˜›“•˜™›••˜˜—™—˜–˜šš˜š™—–™—–ššš“™–œ—”•˜–—››’—–——˜’™—‘š—–™™š”˜œ•š”˜•—™™˜—œš˜–—“šš—šššœ™–œ˜˜˜•—’“™š–•——•™š”œ–šš————™˜™••˜••˜—¡˜•—š™—–™–™›—™—š“›˜™›š–™™œœ•™š—˜˜˜™™”—˜™—–’˜˜˜——™›———•œ•™™˜˜–™˜ž›œ™˜›“™—–••™š”•š›˜˜–˜˜”“š›—™–—š•˜—™š–š˜š•˜–˜•–›——œ˜™˜˜™˜š”™–™šž——™™—š”––”————™š˜—––—˜˜–—•–˜˜–š•™”˜™™™™™˜”š™˜—›”•—˜’–™—™˜˜œšš”˜•—›™––›š™—–™™›–—™˜œ“˜”’—›˜™™•˜–™—™—’—–˜”›™˜˜˜š™–™˜—š›—ž™–™•šš–˜š™–™™˜šœ˜—˜“›™•——™•š”—˜•™š™œ˜™š—™™—š™‘–š™•˜Ÿ˜›™–˜›—˜–˜”–˜œ™˜˜˜š˜˜š™™š—œ˜™œ˜™™—˜š˜š—šš˜˜•˜š™•˜™œ˜™˜——™˜˜™—˜™—™—š›š˜—–”˜–›˜–˜•–˜Ÿ•—˜™˜˜——˜–š—˜›–œš—˜™•™—›˜–™˜”–•™šš––˜™™œ–—˜•™——œ›˜——–˜˜—•™˜š˜™™–›—š–——˜š›–™—––š—˜›•˜š—™˜˜–––•˜••™˜˜–˜–˜—˜™˜—“œ›˜˜˜˜•™–˜–›š˜—–š–•˜›š–———–›•™—–š—™™—™™“˜–˜˜––œ˜™˜–™™—–™š˜–”š•˜™—‘š—•—˜˜—™˜™™›˜šš››˜™–™™˜—–™˜—–™”–™˜——‘•˜––™˜™”™—šš™•˜š——™˜˜™œššž™“˜™—˜——”›•••‘”—œ˜”—’˜™—œ”—••˜˜˜—“˜˜–š•—™––•——•˜———™œ“–˜™–—˜™™˜—™™›™™™œ—”–š™˜˜›––•š™˜–˜›˜˜”˜œ›˜————•–š˜–™”šš›”˜—™“•—™—–š˜˜™˜˜›˜•—“™›™œ—•˜˜–˜™š›˜™›—›–“›———˜™š•–˜ž”˜—™š›–›—’”˜˜™›’—˜–—˜–˜–——•š™˜–——Ÿ˜’˜›˜š˜˜˜˜œ˜–™—™•š’›š–˜š˜˜˜˜œš™—”—™•–˜™––”™˜—–—–›’‘—™—˜˜™“˜›˜˜–œ—›—˜”—˜˜•—›˜–—š—™—˜––˜––™™›˜˜›—‘™˜™™—š——–“•˜—ž –˜™œ˜›˜˜–“˜š–›œ˜œ™•˜˜›™š•š™™—–™–——˜‘™š™š”•—™›•“˜”——•”—™œ˜•š———™“˜›—šœ—˜•˜™–——›™š˜˜›š˜•Ÿš››™———”—˜–œ—˜˜–˜š™”š™’’————›“–™–˜—™•˜•˜—•™™—œ™ž”—¡™˜–™˜˜›–—šš˜—•œš—˜›˜™–——–˜™™™›œ™˜—š–šš™“™’–™š›”˜–˜—œ˜˜˜š–—–˜š“™–›˜’ž“š˜˜œ—˜–›˜™———”–™˜–•›–‘˜–œ”•š—™š–™—š™˜˜˜˜Ž——›••–™—›œ™—•™‘•Ÿš•™˜–›”‘›—˜–œ™™™˜›–œšš¡™˜–•šš™œ–›™˜––šš•—–˜˜š™–™šš›–—™’™™•š˜••—™–—˜™Ÿ—¡œ–š˜–›–Ÿ˜™š”–˜›“š–™——˜›™•“š˜š˜˜š˜—™™“•—“™›’œ™›š“—–•—ššŸ˜—›™–™—š˜š——––š–‹—œ”—“š–™•š™–›ž’˜˜•™—˜–—–Ÿš¢—™”—˜›š’œ–˜˜š§—ž™œ‘™•––˜š˜–œœš”š‹˜˜˜ž˜”•™””™š““–š—˜•“˜–—™—”˜˜›š“™›˜Šœ™š•˜’››•™—•™”•š–™—˜•›™™˜™™™––š“˜•˜œ–— —––˜—–¡“•““–™˜˜“˜š––›•—˜”“™–•™”™—›•”œŸ——›š˜—™œš”š—›—“š––“—›››š›˜››“‘š›š”•–———™’š••‘’ž“™—›˜——šœ›–›™š™š˜˜™™—’–›™˜’•˜•—•˜—š˜š—š˜—˜š”•˜—“™–™–˜˜›˜œ˜˜——™œ™—œ—–˜œ——œ˜š”––—•š—š–›˜˜™™‘•™™—––™™—š–•–˜˜š™–˜›š›•˜—™šœ—š•™”——›š˜™–•˜ž˜—––˜™‘˜™—™”›™—š–œ˜–“™——•˜–™–˜˜™–˜”˜™™˜š—˜”›——˜˜˜–™—œ™—‘—™•𙢙›œ›š˜š—–”™™—Ÿ™™™›—–™–œ˜˜–™™˜™–•˜››˜•“™™˜š•—›š™™šš–›”–•———›š›š›šœš—›™ššœ˜˜••˜š˜š•—•˜—–™”˜—™—˜–›˜—˜˜™™˜——™™——–š˜š™—˜™›–——˜š˜œ–˜–—™—˜˜—–˜•™——•™—›™™˜š˜ ˜›šš•™šš’™›–™–––ž—š™š™–™™—™˜—–˜—’™–™——”–š—˜™š–˜˜˜˜———˜•™—˜™™––™™–•–‘˜›š˜˜™—š˜™™™•œš˜š–™™–™™˜—›—™’™›š˜›˜–š—˜ ˜˜š™œ”˜”——œ˜•–˜–œ˜˜™•—˜˜—™™š›——››˜––—ž¡™š—™š—˜“˜˜—™—–œ˜š–™—˜›š•——™–˜˜˜˜–˜œ–™”——š™–—˜˜—™–™˜š™™——™œ˜—”š—˜˜˜ —›“—˜——–•˜™˜—˜—™˜™–˜—––˜œ”˜˜—™•™›™œš™™—™––š™š™˜˜–˜ž™•››•˜™™”—‘••—œ˜—˜’›–—˜˜™””˜–š›™”™™š”—˜–——–˜—Ÿ™š”˜—˜——˜š•—“”——˜™™™•˜˜š–š™˜™›™”“š•”˜š™™˜˜˜š™–š˜›œŸ–•™˜•™–“œ™—•——˜’™™™š–—š™™š›–˜—–š™˜˜˜˜š™Ÿ––˜•™—™™˜˜“˜™—œ•˜™•’–˜œ–•˜˜“›˜••—”›˜™”“š”š››š˜›˜™•™™•˜™™•”—š”–”›œ—•™š””—˜œ“š”šš–“’™—˜œ™›•”—™™”–“˜™›š•”˜™””™™–™”š—›’œ—™™“˜››•˜™•”“–——˜™‘š•“›š˜œ›–™˜‘˜”™—˜—™–˜š—™–•™–™™™”›“š”›˜”——˜˜—›œ—™˜—”š—™˜™š”™™–œ˜˜•–™—™œ™™•—“—š”›™–˜™œ—šš˜›™˜—•—šœ–™˜––˜–œ›™–—™š—˜––••–”™™˜–—™“˜˜™—››˜—––˜™””š–™™™š˜”›•—œ™•™•—›™“˜—™˜˜•—•’–•š˜š˜˜•–˜——™˜‘˜–›—š——š–˜™”™˜˜œœš™–”™•™™•–•—˜™œ˜–˜––˜™™––š—š¥—–™š˜š—–——š–›˜—•—˜¡—š—–•””›š˜“—œ™•™•–•–˜”˜™™ž™šš——“—–œ™—–•–š—™™˜•–™›•—˜˜—–™š˜—œ˜”–˜˜™™š˜•”—”˜˜—›—–—šš––œ ™˜˜˜›™™Ÿœ™—˜›”™œ™˜ž”˜˜–š™––—š—š˜š™——ž›˜™—™œ—™š˜—œ•š”š™”˜š–š–˜”—–˜“˜š–š’Ÿ™—˜š˜˜™˜’˜–••šš—––™™˜™˜”˜–˜—“™—˜—˜˜”›˜–›—•™–——œ˜–›š™™’‘—š–˜–™˜š”š•™—˜˜™˜š›–’˜–˜œ”›™˜˜š”˜Ÿ™™šœ—–”—”——œ”š˜š—–“š“”––—šš•š˜•™œ•™š—™›—”˜—”’——•™———–”—•™——œ›—”›š–‘š›–˜˜›•–˜—™›š—˜““——™–™Ÿ™—œ—–—˜˜—™”™š–ž—•›˜—™˜•——™—––Ÿš—•˜™–—œ—Ÿ—•›™š—š˜™•—˜˜–•˜•˜—š™–™‘š–—˜–™˜˜˜š–˜™–™—˜–™—™”–š˜–š™‘˜˜š”—–•—˜›”˜——™—–”˜¡—˜•—™—š™–˜•••—˜™––š™––—ž——˜—š•˜Ÿ˜›–˜™•›™–‘˜‘™›˜–—˜š›”š˜˜“–—šŸ™˜’“——–—˜˜•™™›™”—š ™–œ˜”œ–•—˜—˜™™š˜—˜–š™›™˜œ˜˜™š›œ˜›™–š”œ˜•›™š—ž›šœ—™—•“˜™˜•—™™—•™š™––œšš•¢˜˜•˜˜™š—˜––™˜˜˜•š––——˜––——š˜š˜—“—˜—”—˜™˜š˜–˜–™™™š–”––˜š——›™–˜—š™‘˜œ˜™™™šžœš™˜–”™———˜™Ÿ™˜›˜›–•˜–˜•“š˜—•˜—˜–•šš–œ—––˜—–˜—–•—˜—”––œ”˜——“—š——”—œœ˜œ›–˜•™–—˜š™•˜–—“–—”™˜—š˜š—˜šš——–—ššž›˜œ™˜•š————𙕙™–—˜™–š—™›”™˜›™™—™—š™˜•–——–—Ÿ•’˜‘’——™•“˜–›——™™——™š›š—˜šš˜˜—šš›™˜–™˜•š˜–™˜™•šœ˜˜–ž˜————•˜š˜œ˜—˜™š••˜•˜˜’˜•—š“œ•– š™—”œ—›™˜’š›˜——š‘™›šš–——˜•›—™”™˜–š˜˜————–—™™–Ÿ™š˜––‘™•š•˜œ™™––™•—˜•—••˜˜—™“•—šš™™š”™™šœ˜›•˜—•˜š—›˜›–”•›šœ˜™˜™™šš•™–›—˜–˜˜———™•™œ–™˜™•™–›•“–š—˜–š”œ–™‘š––ž™¢™””––––—•“–™™˜•š›˜™šš•˜œ–™’—™››››œŠ›”˜˜˜š™•—”—•›™——˜˜’—–™—˜š—™—›–˜—œ–™š•—™—˜˜–››•™•–š™“˜•”¢“˜˜——šš•Ÿ˜˜™™™™™™—˜˜š›˜˜™™˜œ——™™™—›˜–š˜–˜““˜–˜—–˜š™˜˜–•—™™—–™™•™–™—˜—™˜”———–˜—’“œ™—™š˜•Ÿ——˜˜˜˜™™›˜š–˜˜š™–˜—™˜–˜™œ–˜˜”—™˜——›˜›š——–››“˜–”“—˜™š™–—˜•›–š›šœš”š˜˜™š”˜—›š–™“œ•šš——š—™š——˜”š——˜™™œ—›———š¢˜•—™˜”—™—–˜–˜š•˜›š—•š—˜™–š˜š™š˜™———“œ˜—˜—˜”—œ›–•——˜–˜œš—™™—–š˜’–š‘‘ššš—•š˜–•™š–˜•˜”™•˜—š˜—™–œ––™™•“—™–—œ›™—“Žž˜˜––’™˜–š›Ž™˜˜˜˜š”“š™›—™›™š“𔕗“–”š˜›••—¡˜–™››–›šž“”——˜›’™—™™—–š•’™œ—™›˜—˜–š–›—–˜—–œ–˜›—™˜˜™™›•˜•˜š——˜Ž˜˜•—™™—š–™“™—–•œ“•–™—š–˜—•šœ™“™šœ¡”˜–•›ŸŸ“™˜•——š“•œ—•Ž˜”œ™™¡–Ÿ™š”“– –š•—ž™™˜™š›™˜™˜˜––™™˜šš˜“š™˜˜™™–˜›•˜—˜—˜˜ž—›˜›˜˜••™˜š˜œ™š™š˜–œ›——˜˜š›—š™™—˜˜™˜™˜˜’š˜–˜˜˜——˜—•—™™—™˜—™˜˜˜˜——š–˜™—–™Ž——–—˜˜–š˜˜—˜—˜”š—™˜——˜—™›™————›—˜™š—™˜™—š˜–˜–˜™¤˜™˜™—˜˜—™˜”›™–—˜˜˜“———˜™——›—˜™——™™•˜›š˜˜˜•™——˜˜™˜˜š™™—“˜™˜–˜–™–™—™—š˜™•—™™˜”—š——˜š•™›™•š˜™™˜™š˜—™š˜—––”šš”š˜š”™—™˜ž–ž˜š—”—–”š—™”•–œ›—›™—›˜“—˜–š–˜–˜—¡•˜œ˜—•››™—™—š˜’“š››šŽ˜——™›™›™–›”•”™š–—š›—–—š›”œ“Ÿ—˜œ™–‘”•˜˜˜šš–™›”˜›˜–™—™›™››™›“˜˜›”—•˜™›—˜’•——™•œ–‘”—š—™˜˜™œ˜˜œ—–š“˜™–š˜ž–•œš—–˜˜›——™–•––—–˜”—”š”–š—ššœ’—˜–š––™™š˜ž›“˜š’˜–š–››•–š•šš›š˜—˜•™—˜™•š˜š–˜–™“šš—•˜™—“™——˜˜š™˜™™™˜›—”˜™š“—š——˜˜—˜™—™›š™˜™š“˜–˜™š™™—–™—›˜—˜’—™›˜——•˜™™œ——•—™šœ—š—˜——˜žš—””˜™š››™™˜š™—•˜—˜˜—˜••—™š—›—–›—–“˜›–˜˜—™˜š™š˜˜——™š˜˜“™œ™œœ˜—™˜—˜™•“Ÿ——˜™–•˜™˜••š˜––š—‘–•™š•˜›”›“–™š™˜˜”š™•˜š•˜™–—›”—™–—š™˜š˜—™—™•˜–“™–˜š—˜™——š–œ™œœ™™˜—™——˜—˜œš”“˜—“—˜“™œ™™™œš™™”–™““˜œ˜•––›˜—›•“—’š•”•™™šŸ“™›¡“•–•–’˜—™––˜—•”ˆ•™››ššš–—˜ž–Ž—œ—›¦™’——š˜›–“——œ–™Ÿ“•Ž˜—–›—™•–™™—˜™™›“™—”’œ›˜›š“˜˜–•—–™™˜’–——“››Ž’˜–”’š˜™“—Ÿ›•–“›˜˜›— ›˜–›Ÿ—žž—›••”—™›’˜š™˜š˜Ÿ•’—š–˜š ›•—š––•–œœžž˜œ˜‘š™”˜œ—™—’›–”œ›““šœ™—™–œ–™˜—•Œ™—˜––›—˜”™—˜˜™–•˜˜”˜š•–•™™—™›•™™˜™—™˜™–™§—›š™–˜™™–š—™–˜–™˜’˜š™¡™™š—˜˜••”™›™šš–—•˜•˜™“˜•š–š•–™¥šš‘˜•œ—ž˜–—˜˜—…•˜———˜š—˜™›š•——–——–™™•”›—š™˜———•™˜˜›”™š™—“–˜š˜›”–˜—––𙕑–˜™˜—˜–•”š”˜•™š›•˜—“›œ–šš–—’™••–˜™¡——›––“—š˜˜š™˜˜”œ™–˜˜š™˜™™›™œ—•™™˜™–™šœ›“™œž–—˜“š–—–›œš—š›—•™ž”–“š›™˜•œ•˜›•™™—•“”™——š›•˜˜š™™—›œœ™–‘š™›˜˜œš˜š•–˜™—‘™“™—™•››–™—™–—™š–š–š™’˜œ–˜–’˜™•˜˜™™–•˜šœš”–˜œ—™˜™˜—”™–’™šš——•˜—œž“—–ž˜™˜œš–—›—™˜˜—›˜”–˜œœœš——•™™——–˜™˜œŽ™””•˜—˜–›•‘˜š—–—–•š˜—™›˜™––˜—˜˜—”•š›˜™–š š–—™–˜”™˜›ž—˜˜š—•˜™”™——•–”•˜˜”—š•–—’™”ššœœšœ•—™™–˜™œ›—š––™•“š•———™—•›˜™˜™—›™˜–˜•›–—›–˜””›šš”•‘‘˜™˜–™—˜˜—•›•˜™˜•™—›”œ–™—˜œ™——šš”˜˜——›žš™š™š™ž›™—šž›š“–˜œ˜™™™–œ™”™—˜Ÿš›š•–— ˜˜˜œ˜˜˜™œ—𔣙—š˜˜˜™™›—›”•˜˜™—™œ–™˜›˜–˜”Ÿ›š–—™˜šŸ˜–—–––™š˜šš—›”––𔕕𙙗•—˜˜•–˜››””—••œ—š“š—˜œ™“™™•™š–œ˜—–—™™•—š—™œ™˜™™–—š™—™›—˜š—•••š›˜˜——”š™™™˜™™˜˜š˜–™˜š—˜—™“˜—œš——™–š–˜™˜–•˜™™š™—•™–˜œšš™—™™šš—˜˜•—˜˜’œ›—š™™˜–™—š–—˜š”—˜˜˜˜—˜š›—˜˜–˜™–™š—˜™™š–•™™—˜˜—™”˜••˜—––™˜˜š›˜™—˜˜˜š—–™•—œ™—”š™›™š›š•—˜™˜™™—“˜˜•˜˜˜˜–˜——š–˜š™™”™™™––”——œœ”˜˜˜———™—™—˜œ•™™š—›ž–•šš˜œ—“™˜–•–—šœ˜“—š“˜–˜™˜œ—›š˜š—™œ˜•™”—˜”’™š—˜•–Ÿ–ž”››˜–•™—ž•˜—™˜–™™ š–šš”™™–˜››˜˜˜›–˜šš™•––˜˜•–”š–˜™˜™—šš›š–˜–‘—™”›˜•–šš™›——“š——™——™˜Ž˜–”œš™–—™™šš˜’ž˜›•——˜•–‘ž–“•ž——š˜”™šœ’˜˜——˜—𓕙𖓙œ•™—““™ž————‘™›—˜˜›˜™•˜ž—™šš™˜•–—˜™—™—›œ’ž˜™–œžš˜˜™š™——š”—™œ•˜š“™˜”˜˜›œ”š”™”—–—–š–—•–—™˜š–˜Ÿ™™›‰—››—™š•–“˜š˜—•›——–—™˜˜—™™—•™——–œ˜˜—šš›š—””™—––š—••š™˜›—™š——•›˜š—˜—–˜šš›š–•˜œ”˜š™š•’›˜›˜››™—š•›˜š–ššš•œ•™–•™—˜––š˜”œš˜˜—š™™–˜™––““’™š›–••–˜š˜™™—™–™œ•šœ™‘˜˜˜›”™˜—™™œ—”˜—˜˜”—™˜›•™—˜›™›•“™˜™™œš˜˜™•—š›œ’•›•™˜˜›–˜šž™™™˜™˜›™—“œžœž’›˜˜›———™›””–™“–˜”˜š™’šš˜Ÿ”–™˜˜š›•——–œ—•›™›™™™”—˜˜š™–—˜˜˜š–™—›”›™š—––˜“˜˜—“–•–—“˜––™™–™ž—–”•–”œš”“—˜‘˜›–•˜—•–˜™”–•œ˜˜”›—›˜—Ÿ˜–—™š™˜•˜˜•—•™™—˜–™•˜—™˜˜–œ™’˜—™”—•™——•™˜˜–œœ––————š™š–—œ”—•˜”—š–››–˜šš•–˜—•™˜’˜—”˜›˜——™––—™˜™™“›•——–—›™šœ˜™˜–š——“˜™—–š—˜–••™™›–—–œ””™š™œ–˜”›–š–˜˜–š˜”›˜˜›—š˜–˜››˜™˜—™–“™———–—˜›š˜˜— •™˜“—œ˜™œ—š™’—˜—œ˜•“–šš•˜›—˜–—˜š–˜–•™™•™™˜™˜–™“••“—“–—”—²–˜š—™š™‘˜™š˜œ©›—”š›——‘›š•™—™˜–—˜šš™—•›—”™™—ššš‡–™—š™˜——––ž™›———˜šœ˜™œ›•—–˜•š™—š™—––—™˜™™–•š™š™›™š–“™˜•–“›™˜™š›˜˜œ—˜œ—›˜•˜˜˜“—›–•—˜—•–™–•—™™˜•˜–••£ªzˆÌ4¡§•Žƒ~“Ï|…wYA¶š1•Œ±‚àƒ¬ª¹¤y†KéqPÇ•ç]yŒ=ÝE;“‚ºz“ˆºzbdm`„x´·°P@H‹‰mÂÛ‰®d¦ƒ ,ÿy'§qN…x²ÅŒz’ ã’œ“„OËr¢uYª›g_Ë«•‰ŒfÊmÑi¼hC¢d‚†š l™’œž¾œ€“ŽŸŒ†¤}wo˜ccn'™•{À›•xžs‡`N oe‰ºzƒ’‚§yƒWw]†‚¨]„ȃy‹m´ ŸœjZ¬¯€o¦…àl«Ai§®†«=g†Wƒ›²s€ª²v[ƒc&z`SŽ8{¼^‘Ф^¯‡°gtpwtpstktujsofqghmss}wjh‡spqysvlljppuvpqswji{thwmoy}poloqtnvmiƒh‚qvpnrhnrvtsofunuttuc€hs~reupol_nrvkxnmujofyssxqrlkwyupqnpsm‚uktqqtrrsruqyumtvrsuqtmlsktmjukronorrssuoxnonrpzrnonptrtvol~onnsri`rsp€qmwopyporwpl{ps~fvptkk_woit}wpiuouyt]qjlbltvovjqsso{uzmxhlk_glrkno„rufœmwqVmfremev^srfoqrrmsdvlcnwtnypwZaorpuewl}mnozpqqnhjswejmqtjƒysŽofˆknjostrxjiiexrhktil‡klpfgsipgoogxt_tfwxddo‚obnhqrosppqwqrypqpsq[qoqpppqonponrnpnspotqqpnpr|qpqporspqqmpoppupnoobnrtevprg]Œ|fmouq…oi_lrw\ffwuwausmtkb€sunyXorop}hre^ryqz~fjm^fmeokjkkˆl{utxoxqrqqnlvqzssqnisuywnwz|otrrqsqnjpomqsf_{zqol{odpptlpxu~t„mi†r…j‰y{sdmjyziq{fwohmpu~aswrowlyn|hil`gnfrqgnnmin|‚mzpqxtv„oxiklqwcz~rplpmvxtsgliv}ltvntsunxq€tpx{qpjtmpnq€rteq{xveljnkmcyqqjp‡psTcbgjpwunhnluqsqn|jfjmlooms–oqafurvqjnr‡tes|lyhku†ljskp:rsvvrso~cvGpqvdm~low~wt^rc|nu„…sw[dt€h‰l{hp€oyssycwtwmzcŠmjl|Ohe{~Otenrl`dpnvY^xk{ozš{€~mp‹„le^ur‹qc`wŠqd^qosytn~jq„|cmshiirybohjnrxlpzcpvk™„jiuijj‚ƒklsit‡hqokn|~s…vocsw|qyuqtotrknoyonmjnut…vjjqvvtsruqmomdtmjftghnpormtsgiok‚rq~oee~{ndkpt…ofmzt'om`mudv–kRvrxnp‡tywchuŽmylkvzp}}qur{}gromiwktnkq}±v{‰~oord®n‚vŒv¡q‚l‡wkhkkopitrnqqy]ovdk}yylskkvnv€w‚sz}yt€snjk@ollyq|olktjthnnn{rswnprtqj~msswwykmjmqfqirhrsmnturpo|sxifkprertpnqƒynvwwlPqpakprlkJw~rtwfkiusxxohvtl}vqotrnwtbnz}}xln‹prnrttmSyrvvwtk|~yWxtmpgqxuwtwr€plvrvq„qmtcotwuzrznturzw{qj_s‹svxvqb{}x}h]qoo`fLqhžhtgvl\tjspr„vtbmgtq\lpmhjojq~mxnsqjknbxwyzk}Szuujclmgqnurpmktumuukixouussytqkqqj~poquywoxplpwr|cqk|pottssmvqprimsrsoŠnzohyu-txqvp’nƒ‚tx|{cmowkŒtlwurp{zuqpoHrsrooown~tyw{xkv{pwXpzshssugrqguktmrYqw†ƒpknj]bqmahl]vqwyozrotmjnl~opkg€ommmchqxrn€gqx}o“qrY‚|rKeer˜„{€‹‹prnimqwsd\gn_bwrPdvqnbszevdh†g{sprfpprztrZfkŠyacxqEl‚T}budq‡ld\_x{mal…l^fpqo{m‚‚\spchwk‘huslsK||bnrtˆŽmruqvp{jxrkznrlptrlsqrqmspsupsjrjopl|rktrqpqtwklsnjvskqrorunoxphpjl|}{jvpvq{swkkqhtw‹|hr{oukmz|sjxnxys‹uwohokfmt|p}urv|pegrfƒtbn…yrlw¢eY‚etfsd|{kubƒxsppijnpvl`„m…wqiuagƒ~kpuwiiouc}idso†ikrd]elrsmcjunreohnjqvgsursuklvnbfmnuqysrhlju…tnmˆshd\}nswXo{qsoohipcoqnsow]kvmorqpl¢temmnshukprhoiunvp{mhisoqrmlofzqwpt`pxcrohuumsrijslnsryessdynnrmswrug…u^lmvminolmmqslxipmoisp{rnrnokpr`opjrqp~bwnsrooqrypsrnymmvtipujnoxsomlg‚pnmqpomprhrportnqrmsompo~usrorovtojhotmmtjrttmmqqwssqpjx_qkywxouvqkssdapmnaopt}oqhxcglooopjrlngetwmpswusvosfrtkkwz`qm{iegrrqpulmtcqsgrkosmtojunlpsxmrttkqqgtrpkujqsnmit}atrcfhbsj…fuƒqYutnu}rjsvnpeq[ut{l€~umw€lw\Yuk~xhtq`rnxvlss}s[zrronyhmqnlwuupgha‰yxrrlqv‚znsrocolxmn‡dfvluts|y}|quknqrcspopoppwsrqvpjqo‚nqrpomsrnppooppsopooopppprnpqqtonppmrpumnpxqpnpctqu^plyrd‡uowrw‡gvupntrqomYqli—pkn`hpqVjx^qkfvhgp]a€rvRgn]wbmtvvdhri}sssesq{cte}qthUnyr…}m€drŽ|rŒpkiˆqzr}qmi‚xxwgxp}pwsjjv‚[~Œ†sopywWrwwvsYuqˆhctysgox€vqpjwuxpt\yw{vvo`ur€€wfw…sŽtt|fs‚sufdwulfw_rd†|t“mhˆrmomomq|djhhxs``aivzfgpfclsskjmhrjfreozfieliifclitoni†…zhw|~Itrl~ot}~tko^wtj~rpkzs{plll`olsqYlof‡~n~cvqwpcn{ng{eiyrphtomjzln“mg}poikzeqthilkpuhgthuwillgjfwlgmlj|tgkgwphklmahjt{mpn„ivlwtqwnyruxhxf\ssfvpwtmroyltuqi}ywwvtw”ƒtucxnnxoqqs…nmsdoaŠuvsƒhPn{pihnnl[—nrxY{eewpqykmxysppgjjtoghlwqwlotpi|xmrt†sZ}u„pswqpvp{vsqrlsfptssqnlludxqmmegtolmqxwsipmhnjstmpqetsvzprriptqqqppuomqn‡prvmqpqpuooqnurrtpqpprrqpsrpiqpqpprvpppsqqpqqpsnqoqtqpqpclqppd€{jqm|iksKrpkrxulxshmkqnmotjjlnkohitŠojcig}pijpyfhnv„smdixui^b€cMmriwh`xy^ryydmqhWvqkg†db|ldƒxld…sSjvg}}ubp‡m^~xS]„Šuemopnrz„vsetsDoxjlpy}rlstvwupsmpyuez}s}ql{n{punilrmjrrttktxurqytnsuqprnqmoqpionjlronmuowsvt}qolsqpttnkkqnkeqvqopomnwrwqpoorqoprproswZozvyqvnoryoqpijgtmrrqyoqtqŠuqnkrilo|srrtmmgtlmkksiostkpsoˆruu[d\x{‰hqjqmvrerryqnrgniRmos{zpnnsxptmtuoil_mjvdZ`‰omqpjsVghmjtoomdmootiukZtpnnpvs^ti{wjgjqf{|eotlj{krzn{†ttsag}|dijvssrvnbtwsqmsq€suqqtgsp|rqszejuevs†„wiljd|qnnwookqrmbrfwlzp`vyurrnmtnpilnpqlzvqqouumjpuosrsplotdnk„qjlttjmupworkvvqsltksmucmqktpvrojspqmynwkjposrunozsigurkqorqnpmnelhoomh¢ontjivtuletrounnrmzwauytnkip€xlqonzmtouxnmortwrokklmhxgwwm|yrvsrkonqpxouotnununmonzpsyqlqkyw|nqx{nywu_sugfsXwys{hcphyumqpnvqvowwr{oo[svumrlknmpnyt{pnrvtsrxm|tljnroqpuktk}kxrzjtghgqutr}sv{qmupisdorqptqompmrndrvjkcygjnkop[hbqaqoƒkni”jyiKmcjbgor\pmiqoy|mic‰ompthtqy][vuly]xjsnnq|nojm[^lpi~npkuwmknƒ}n}attzq{t{xs€drmr_mrutwkˆ{infb{lqjpqmsmazrmolarqmnq|rsovybxqIp{q€isjsojst|tkjjkips[nowk€yƒozu‡ozm‡|x‚^‚ulkz„xjjqrovsarr€twaymXxtuuq†mkmuu‡rm_…nss…tustxsuut}ustlu†}gswuvtu{}e`srpvt†xZ‹J|cpw—farjgonniqo†mstSvo}moonvsz^q{civkw…if‚al{njenjesxteqxTscjduitounsry€xtsptnvuwkxzuixqv{pqltmoq|hkkpheollqrnziqg^tsdclqhjjq‡{aaksilcrfcgf[qred€nt‰fgt_f…‚tgqeir„[ml^ofty}icbfnixmovywntvonnnqlktqusoxp|}wcmjkwhouiqwr`ylkn}oyh\onskujroqnunfm‹wn€rjIq‡‘vnTp}q{qtwpmnsrs{goorssq`zlxvrqobqrerhdop~znmk|q||ojuˆspqzd~rzl~h›pt={zyqgpj€s€yppu†n}l"v|pyxhOqpˆomqoq€‚mui¢k>|lvwrrqqnqs…qqqpqnopnqpppqoprrqrqqqppoqsmqposqnsqqooqppoqrsprrprpoprvyuutnb{nt‰}pvwv!ucvjpius{mqmrjt|wt_wrrjow‰trm{nstkmqux`Yn‚wmjqEZx|upw{{UmJvBrm‹tf|cu†uwarqƒvpMzzƒjxnywrr}n†]}sWs‹f^}yWpXgŽnkxrnynqrrjmtpirpolnhqunorwyrvrlkrkjoomuprv}sompqppuqvqqhnlmxslqtngsotse€h}skp˜nvmap\ykonmduploqkyvkappqlrjmutuhgm~vrjomrmot‚snssrtufn~zpdŽpuyni unrq…pu|rmolxvn^lutgmjqfmixpprokyejyh~wgg`pqxorZngkiyxozcepgkfoeŒoqevipjshrfkpYrmwvmxqdtmjhjnm]xjdzbczkw{jipnvhomlrrpqqvtrxlxyijwqvmj|lippnvwitrqiƒwtlswnmtƒqiuwsjxpvtqnvrxksplyznpjqgomrouxxqk|rpokpiotsiligvqtvlowjvjjtpomnqprxxlv{vrxnrtvuscuvbj„omUR…tilsytrre‡‚vxzk{mtqcpg]€qj_oyfqXowyh]qnrbelo~aaal`cnN€sŒdi|r‚lcsns€irmonutnndnjnnofnzfizwiq^ct}qp[{tl|pk~pqvxzqsepfttlrrrrssppknqqqqqlqotrqtusnuprsplpoosrosopxrruprupsqvqooprrpqorzl|qrnvxtqhuuuyqkt…jhivl}v€wms~t‰wkpy{{‡_iruwƒ{dzrhqtwpƒmjz~njqlfnu‡lexZn„mpƒmllj‚lovmoqopqqf~owgpnonngvfmpfuvnsbk€nuvkziekmtrovqpt{pslmspms|usrvklqq{tzhuoxngxpmptyyjubrnorrnnsvqvfntdnjtpwosprpqr{ppssropqqpoqqrnqqqqrrqqpnqqppqpqqrppqrqrrqosqosqppppprqpki{wwnosuqrunmqq~y„r_rjflcpmuxs€zfuq`wsfpymmtxk‚ephuywooqyuxwk{vtulukulpqrpjfadrksrr€}~t|h||mxl`nsnlqpjktudpewj]wcvx{jn]knnjzŽŒttgp\euw”umowk7|f~kvqtmsqv|rnpXv~h†s{u€poŽrs‹nxgtupvtŽrrwiqomroirqvdquklowr}qoyqswXhgyd‹io{me{danrroejhcvjuquksmupordzt}qrvjlqnfforsws{osn‚lpqfpikhldogsqsrvtolplusurswpvnznisxlrivsskkxxmgqosguqpjvivsk{rorpznspmolrwlrkkqsimkqqpsoolkkitmptmupnopnvjlptmopmk„ytsl_Wrok`fqvp[€kskja~rd~|ltkvwnwnnuolm{‚ghpe|ii{ivzltvstw}€vzutsqudhus~cpnslooxojpmrlsqplnxsmovpzrqool{{ovhuqqurqupglozunotreznstbƒ„ksxƒicnj{rtu}…|npuo]gs|sju~rivfpg’nwrjdrvƒan}v€ponkppjtsnxzwiplnqj^`ykscxd{rk~iurloti{xpvkp‚Zuioisrdolyhnqtxxjs{ƒ…fdpfstrsnptpkauosgoolkrlmspnrxognspmloqnqrhmkslrƒqkplovjniksttjnvvpoidengsotpkwst~quvzhtsrlmclvmbf}nkf{urpj|runyjjpyysh}rwqpyuo~pssnrlopmqupynqsskrlogyyqgusnsdnqksokpmqrsxqposqh|mnhsimrnrpkrpilvskvdgmxoawdok{qulyp†lipiq}rqgrclrq|sˆdql~kodsŠopzxjhywrtf}ojlopmnhq\/fe´geof+cp¨eqnt~UzXegkwzg‰gqpudoe\ovnPznbvw€|z¹pl_r`}Œt{i‡{‚jorultqtqtrwtla}synsmwer_rvrzqkln\rkmlqihqooz}kucnro_nlnv}nxo‚ƒqrrrpqq{ppqpqqrptqpqotrrroqprprrprpqkqpqrqsrppprqspqrprqqqqsqqqqj€|gek\zg€Iskq{zƒlvn|i}tsncdvnygryt^j~nqo~…j\f_pkz{vw…gonvjuK‚jŽrwuˆŒfnrkr~Zjrwyfnzbxj{ksgpwekhkhmekitqoTyjejsltwzpfse|ˆqndlroytpqqqsqurwktezqltfnw†tjsgmutiusoxzs~znp{htsohiuyntqmo…qmhdgynruxq†trforhxsˆqksunsom{rzujus|yrnpyrvtwriouwqwtrrvuqhqx}v{vuwfmqlkp„rpuluqmzs{Yqmsƒ‚zohkwfiewqgpkl|wmƒuykntqpyymyncusxnqnnv_tjnhnpirjv‘oXsqfpjqsqtrpyjvbrumˆunhJkntbinUmmfthfqfn{wDaoRximnv{vyhyeioigo]evZ}qmzwdvsZŠrt‡’pro\|nsŽfmmu]v›…n~vƒmh…}{rvuxgcoysrqlonsuqilpxposrxosrknkxh{qrfr{qqmtiuuugq€ynrkebhyqwtquovpŒvp_qjpmptrqxxpmlurusosimsmhlqftknnoll„inqnmy€uplorpstistwpounqriojvqoqn}wqmtkyoinrttq{v{llhxrsolnqtvovnzrosuttpkrmmwpbxjntq]sol|ejisnqjzxzonwmtsvullrzzstrhqq|i|‚sngpytnahuuutkvyl{]ihhhmvpsojo_pbopqxsjnwsqvoivmqjsntj|xwdnrkrsuhzrqmfqwpkvtimlofskqkrposnmqcsohuwy]fsq€gdmevqsmt„zŠpwjnƒ|ks‡~j’okcjuvxjkiƒlwfrmvuhi‚rˆqxi]bkwuo|mrvptpuls{t…fn}peqehtuivp‚x]qnw}^uj[rwj~{|{”skmquyxsw|frpqutjmgpmmqxoqqwldttmnnimnmgkpixqtptqrnpeksmjgnpxmzlmtkpohqipsqppqqprssqotqrprppqpqqsqqqspqqprqppqqpqpqqqroqqpqptpqrorqrqqmqsrrpdropnunklmuuplkxsqsxlrk[lmvg{e}pupqkpnin~uxzlfmkk€tuws{tntrlnkn|pwohtp`upt={f‡~m~n€ow|pshwsgjvrzdkwqh]|nri|ve}lp}ow`pswttoomm‚onz{hyvrjethijmloprs`dyttsqtptsy€pnmhpƒdrwq…y|rvc~lkjmuboqulsS\{uzmlsjnqjlpqrjot|btigVrt`eqc…nssfhƒlxbRqjltgt\m{ohkwynToiedhwqqoqs|npprmqkmpqrztmmeqrivsrl{vuzxqypnhdrkknfmmtxc|tltvsqynprnebmuqpl}rokqvmyjo…mjmsznm|kolprogoklvNllrklpmlrfhovemniptjmg]owirlhyvowrwromitmkurtqvzt€~pnp{pp}txpqygz}nt€zpwmurvneymnyrlmxp`gkxtknmNmu›euiv„ˆ{y\vysrfsx`qwnM{phwrluhr|}okxqhw}y„xtn{onh+jgs€oqztt‰yurwvwr{žsxsqlprovvpeilvzstr?zyowmtvqtvppgspltq|twTutqsqommnusqftuorqptt}bpom†ywpqnlpmnpjmsucjnoxvsgxpvrimppo~nplsovlgckqyrdw{lnotlu€tljrsounphoroodssrsurqxq}kqzmjutjmllskttoysfsvsmuezmtmy‹swnq;ow‘…nvx}„muwwztpmyqjuweysv‹tuznxq€v[j}e|{gptn€~svwesu`hržtll|sfte[oˆsiulpo^lfptudrymˆ~lhodiruqhxjxsrsvp{gevzoGnogznlqmmpqovn}qzoppoqgnxsgl|qƒywlp}ptgujqtryvumliolthjkwnqm`txhojXmgbcyeklt\b{\~napkufjnnsyuqjj€bwhzkqg†„esq}\Myvbˆ\~fgroruupz{syumxrblonrupuvy[ejlmqyopqsjnb{ilo{ukmxufpƒduxwlprsetlsdwwjkyfbgskopzfxnqwvsjmovvfuud_ovsn`kks„zplqubwvky‡tjoso}`ny…lqqrpjstoypm\{lzlssy{ym{mr„rjmqtdoznonswpnxkjruknncmi{plerrpidorwtlggztqnll}i{nxk>urwydl„f‚lvxqxyf‹p{†om€ƒ~llXZhl|‚yipw{som€}ŒZdrquz`p|‰lmpumrjtgrsxzimjxlkxsxlpc†qwqsmuhmurw„drsmknsk|jqmqtqsq|nrnkpv‚ovmrvnwohqqmsnkxp}suqjbnph„ktpitqpvfnowllqylwkwqotq^t~p…yosrnuqw{tU{o€sjytwsgoujvlfskrqcktltmxkoimskjvplmdnornrcrsonraunrrm|rqophtrtorqrdtotvnsnolltrs‡gy~~rsenxzmirpqqns}qnmf{iqnqqrwqnqtrzpply}npursntjrrsvrsqrjjoptvyknwqsixsvkhtqxtxlnrxmrqvmprtswqnwlmsjpnqpk}tmvvn|rnnpoprmqwmsyqxgrnvwyv{qltlsunkqomsuzlkrsowns`gwphm{eervqtrqsynvronqorxruqo~nxltqqxntqoiopzpvpkpqnlstnpykrvlokoyoppoynlsnqtlswmqvfmqprvppxqppmoqrmpnƒrƒonul~uvlg|onjrmnmvt€rwwrmqpoi|kg{tgtv`z\|vwmqxqltrsp{uphpttrusepqwhjoslnmurtsgphpyhirqlqrcglln€hiyd~u}llpmkonf{htqehlcf{aviyt^fmlsduuhplfgrrYjrs_fskWhnjqpr„givpnkYrnq}o}rmpnpomrpoviooqsqkhfhucjlplkjlrnfrpyhqmosvmpkwkomj•u}sirm}q‰…krrz„jtsxsbpshnioono…wenonrkxgxpordpgniu{`{gtpr_mqi…lmek‹nŠ{Œp”pUouqjpnjkkcorskmooincenmuƒpw\pkv€pŠtz{ssqt€€m}†nrpeuyrwpufquotvrnsmkripsf|qkpmvzvi\mljup|iurpwmp}jhluoqpnmlqshzckouqppvhptzlpdjmtojqnvjrxrqrosromsoshipopmisqqmtmolnuruqlpkrqulqkeulvn…luu€ovjvTnuorvllphriujonppirpvolqrgbsmhos{jrqwnfsnusop|rqppzonpjmrtisvksryjroivpjlpsrsomwvsn…ypsvwspqoqssnpqwqptqo{qotprtttlq„vtproxwplhuyeruof|gulskuqslnnotjouotqqwzphslbnfvduqpsoqmvnkrsprhrnyrx„mprv~yjsvuottxmlrsosxvkqrnrpvjqlvvrosvxlqsfrpurvnamnfzsqoamln{Xymtnx}cpyhdzrysmnuksmooxpkupcuqjwshqm_rsufjbopqplsnh~€n|{pm|lv_lthyv^€|twsomgsrovnznkyo‡„sxr{vzypx{q‡pell]r{vrp~xwpppqpqqqqqsprsso`ojppnuqpqpoqroppsprqprqoopwrqorpprnrpmpnqrtotppixtmww^gnv†^l‚tq}stjsggqwts}cozsuwBdsql„uw‰oywsp†svyzkdkcz†{…onuxqwlsqtwwnukou{wu}prqutpgieqtsoltooppijbrjtgnnssrxwqirgntfpp{vvnlsmyyosvspnql}rq{psnvpnvz‰gmorcroowps{atrcqiyqp“^_jqocsitzxiqrsnnqmsvjolmnslorwr]twqs^ugzqkwpkmrqrwstmrrttr~nxyqjoomtivrpŠqlzlsv„€ptpspiouwtqiz|pxoiozwtfscvlucupeylnoinu{‹vgogrx‚ru~romhqqrkr{krxlpjtupltshpnrprr|ˆvo„vtpqoe…iou‚qsfomqpxpqsvyvo|srpƒoktptnnnyosltmoxqjonqxlhjmjqxmuynfrkrvsvsiyjprrrnym{jpqtkorztrpq{^xjtwkt}|gte~_xsŽzbtkp€xoxnxtqqnWqucslsq{lxrte}pzwsxo„m`px{mylmqsiux~qpmstaupyhx~nt}‚smmhmhksj~„iore~jnqunochiypƒis€mtjjtopuhmtfktukrjsfnju>lytppgliwtxnpip‰iqxGrrrrxpSomljmhjoqscŠnªtjrotswcyrks_wlvzeiowttuzneefsivu‰l}tnwqzpwxol`vrkyu€htfx|ootkmuzrwzn`ŠXtuWmuzq{\‹rcsNL{–wrzmsyukl}uiwr„o}wskfqzqyvlvakjvcjicicnfxpy‚pjzgtpznmwohpjuj€sljhz|usltulskvrtynnirtmkkrkydsqtpkxopjnnvmzqropoprysppsolrpooorprnqpqpporrpqpqrpqpppqrtqprqooqpporqprozopoonissqjt}pomrkoztlnipqhxmoptvuwtuognq^uurymrrtoqqkkpjlsqprsqruilwxlZxmd„qysYƒt»~u€h~{nh|djqnj||srqguyqlyzznrmmqs}p{gew†tmmZpojp`n|mp\r€p|‚tw|tQ…z€rvƒ~yqkgtnqr^uinqjiqrjtypf`so‡rlvkv}}„qnz{qmoqropvloqmkwrqmWp|porkknnuudlmptjphtrmsnqsˆprirqinxlspidrymdpnpomrj|lbtooyfj~wgsxs|qn‚worhmwt{f`†pvtn|uqqsgajqsj|qgxy|ws|pwuyjvd|vigipnlpdh„twjrcil`r}qxueh|m|iwlqolnu„ksuzyzp{kgj„g`~||v~vwntmtj‚ueqvvkqÿs|kp{pybfhqrtpynokwgmf‹lrpjoiqupojjnihp{jrvUw¤{rlqpwnqprxh~skxrodsojspnvvwy€ruolidnsplywmjkfvruwqqs~omutqnsvutottqtspupmcmrptunjr`knptorqr}otpgwpo{zqsuomtvkkmlsrso_nqrtpopunmoqr`qs}r|omvsubtltjm{crwmnly}lrrojvbjpmvdsxkcmjnzjzevkerjplmsrlklalrpqmqqrewraqfwrlxfs}_n~qvkmgowlufvrrauoczlqph~ono}‡dvuqrsvoh}vkxvqslsp|srstkvkujtsrpyrmkfpvt{ptvprpr}rtjmksogkoqquypujqspvqozwtx|tcnz}‡h|`tknfr8qƒsknaok‚tuvflqmkoyWprrtum{mqzpxonttkh‡¯}pmixtxtmvssiqtrpnqtm\yqktrt~‚~|yuiqqxlqwufVttkfplomqjwwƒ}qlzgtqok{nmwmdlqolmuoppumlstrttskmrjzuxsopkloyƒsnsofsxhpgkmhizsururmuq{lsnnlumnohonnnzwotgs•ippsttppaqomp|k|qgiwolrwq}dptgjrvtqkyjcmjv~vppq]htlxolnoqoln`ljamljsxktossqvsylxxskxkrlpq…qug†wvzzflup_cvjvpstuukyqxqxqsk{slzpnw}oojrv{otzttkrqoqikv‚qumvqqpmmqmtpvsqtoyqrnwkirlrppxptrskoksrpsprrwynobnnvunqwppsnn{ldytwjllrurq{onr{vrmpxqmnamomqnkskqv^uvjvjlgutz‚rnokglgrjktqtxoyrktpv{ipjxlrpnplfpreqwnr}žms|mjssu”ƒp£tKgvxrwpjnr{crmstkoMOszt“}qxwrŠlsotwusvtqkpjvnrtmwom{k…mnIfj^tpYm„gljgforsrgmtv}wƒqsaspOrwq‹uwtensZ}|opss{ekv{tos„xsrnyqssuqorrhkbopnjwr€yblqrwsqrrtvtpusltnntqvrso{smlpmmwmssuunmtullskquy}oewopkmprspvlqxoqptprvpswprqlltjklvwnqoxsmqxsVxxshen:ivqfqHq~tvnzkrnmqijojb|xhiprlpqnnnpnpvurdqkqtq|v~ghrtpqopqurpqrrnrpsorrpnorppppppqoqoqqrqpqqqrrrprsqoqqpqqupqqtqppprstoqqxŒoqqrnpvpvdps~xwtx†tkrpxjkprfswjruxuqslspsdvssnwvszqsjpgmvopsom€urujpmsmlrrrimnranttqxvyohltrgvwpx~qtwsornxixqmukmltnkyz…y}€}~gi}vxowywpvsªvzvq|vu…wpx„p~hgxxmhxmlutur^op{tx|k]t„x{hv‚tuwyqtlznlrrxtzqw~ipnzfwpvqy|rytyrlw_fntjgzwxj}przthltmxnxzmol|k}vqcvseisPwƒtuqdpq‚vyxopvzgus‚wsnn|nov{x€znn€wstizxl~xt~votnosv~†nolwrpjnjs‚sxrosoxrxscl_xqkqomewtcmjuoolb]~kyo{vnctknkrtcruipYokT‚rljlƒiwplugpvjojunsktkl‡bonqinmfqokomkhqimvtmxfumlrpkukoqunxrpqrurlriqxpssz|rsqkvitxowpqp]luvl„vtjpsrokslkopotmqsnphjtqpthvpmrorqnpssrsroplrmntzvusksszostoxnwfnysrimrpsrlkywoopuln|~mpmuxpqorrlnsrmmrsplqzn{rpuperppvmn‚gkvziqnkoposryspzr{nq`tosg{uwlpqhsnpprxrtipouvsqhsqtvy|nukqjsttrrthouvjrpnkpstnnwmrtpzkppvr]fpm`yvpt[qsoymm†dosmwwpoplegsomakn…Uqo_ltfq^xWYpklgbipkv{nfsgxxmnwoxruzpynxsqoxsmsettnjsptzwu`tyitos}q{hlmqpsorbmvjptqsslwpX{rmzrnnn“lr}fmvlp~jdplvnqtkqopuvnnynpwnomkkuxmomknwnmqrxljos|okmk‚jgmkvl.hnierZjhS{tlz_qcottjirypixy]}so•wd^s~‡fzup‚wnqlnp`loztnusorulguqorwp}pgpnqzrjsjhoelkn‘pnnpuzlozjtmppuunmmmlutuvonqqnlqqwqjposmoqnurnoqislnpzusxjrwwbywj~nrsssxnq|pupqumvvnrrlvrqelupzyniytzwpxronprzugwuxoblwnpjlspo^uq„uolur|syxxummpdrgat}yor{rsjmotjukqmqonuqhou{ppxjrlgxjy~xwcqnqkvasprrkˆ~„otiplpk{mk‡klor|key}‡pwo{sp]pzy„l¢tw©yzovitpqxtpzojpoove®wstvslvvuzx|rrsvtov‚GoÈsyuvkrwoaspkllfp‡uv£mjqtsnrsprsuwprˆnvfWtslnoq\uxsepqnnr{kpRUhdtkwpwrulosn9or{bsˆst?~mtunplx€novmmrvs}sby|rtpifszojp|rlsbs€qxggnvrqhh€r‚ug…upŠfzìzk„ˆx{noq}ƒrs‚pokopyxjtuo[ssmt|tzpaks}ymdussrxzu{qoin‹^{osh_junqegpugdcufgtmcihnz~peiy‚‹xgku|yŠ|Ykhƒmphuxvnyt•o{qrmpri‚vprnjrkqpjbrrwzvuyn€s|rql{ppmvZkwmioywqoikmqdngsttpmrpwhŒ€it|ksÝon}kssp|¬ynnul„rmjrshrlurrrkxztu…zsÊt}‚i™~qr™„t€£sžzŠt8ym‰‡Šp„{{u‚|’‹vy‘zj|v•‹Š¶ƒp“ˆWw‹ˆ†žA—~p€~‹“ŽA ˆƒ‘~‡”’’4~zZwv‡“u1ˆ†ˆž„{€ë}„‚‹Š‚VcŒ…|n‹“c‘q¢™}ƒ_“’|~˜‚x¡‰}ƒ|vzs„u€€Å|ˆƒƒ†k}ydƒƒ™wˆ€v‹‚ƒƒ„|„ŒŠ|z„…‡¼‰‹zˆƒt„’™{Љˆ…~‹«‡zˆ‰‡ˆŠ‡’Š‘Š€ŠŠ‘„‹y‹…‰~†—ˆ‚u•~~~Šu‡Ž‹}’~‚…‰ƒ|…z‚Œvq|ƒ†„jv¡~…«CTˆ‘‡…—o›k®s‚ƒƒ}MS„‹no¡Šž|M¡ˆˆ‰jgŠXž]†Šz^M‘ÄzŒ‰ƒ†€‚~rЉtwqwk…e}†‹z¥Š”ª‹wœ‚’y¼«‰p…tUR¦†wk^„p‡¨oB”†‘³…|j¦…w{+~–Š¡¡…®g}†^¡…€w’’‚gŽnp\€‹¢{}…oÜ´†µ˜gƒšŒyœ…f·k¹V‚zqŽr°NwŽ‚Š|Ž„±£s~~€°Ÿ¡~€rž‹qsвQ’]‡my܆suŒ¶§u‚‹O„€|cd]¦’i¨°Œ—l3yTq‹‰[––ƒ’¦€ˆs‹”€‡€¯o‡–˜‰Œ˜Ÿ…€žw„e‚w|‚…†z”€ŠZbz˜{{Xƒ†‘‚‰Ž„hxƒ}‡–ˆt‰p±rЇYx|[Žw‰xi[XiqrЦb¶—žYšˆhs™}¬n}ŠkŽnŠv}¢ˆ”`~y}z „hh«‘‹Žspƒyy{Qo†—~qds{r¸rqxŒ¡bp‘L—«‘q–•p›“ƒ––v°buŠ‘‰•‚d—µ…zt‡¡©u‡YgŽhl…¶˜wvzg–tn„¤d†Š„£P‘€…”o¦…Ç‹dmLx~pJpmzƒ ~snppdt1Z•jƒzÇ…£|ªŒ¤r­Ç¡c…‚zˆ~^Mi~¯˜‰|‹pSo†›tr¢¤Ÿ€™kg™ˆmsz©t„o„s_fƒƒž§L†kŠœ‰†n¨v¢„}l{‘€¸”bÄ} ‹_›…b½u‡›ˆ”¡œH|t›a=Gº§»yx{zgˆp¶pky²”zz‡ƒ~ †‡€ˆ‘w|‡™f|‚„†Žp†…›}„…hrŠ|†ƒ„‘s…u‡S}…‹ŠbvŒu‡†¡–„€v°|“m’«¡~v|Їyx‹ zxŽ~˜‹“y~}|—‘Š“…_Jˆvw¬™ŒfŽš†‘c||‚W“ˆ’zŒ‰q……‰–Jv}‡Œ†€œeƒyeyˆ‰v}x…w{‚‹ˆx„yƒ¢u…†Šƒr‘‰ŸŒ˜‘‡‰†…†€z–“‘t‰‚…„xŽ“€~Žƒw†‘tˆ‚…”††ƒ{t‘†…{‘{y|–ts‰‹‰|†ƒ‰“ž‹~‘ƒ^ƒ™œ‚xƒ‚„jŒŒ¦¤ˆ‰ˆx€}g‰}›ž‘qu„†‚’|Š`„y^ˆ^}uœ~­˜†€Šud‘m„…s›c™xhll‘ [œ“”­q„’:‰ˆŽ„zjl¢F‹‡¯‘R€p¥pY…•†guŠ{©–•‡z†a`¨„\µh“¨v…vƒŒŒsÂhª†ƒƒÐ}¬R•ˆcNŒ“¤Ub“‘‹_ºj_ŸqDleÁhX¦¢:ÂŒx|ox~jŒ¢s›vedpž.–dVe•›¡_˜‚€_{¥Ž˜—}‹S^§³£n•ÃT¡–Šc¨†›yƒe¢iµ†Ž¥‘“”‹[¦’Y€y{‘xf…u„tfWg«|oos{v|N€„}{…•–Ó‰V£ ‚›€‚ƒiE‹†v{›”{o‰‡‡¶vŠŠˆ²‘Š„‰„~¦œ†zdðu¢ƒ§žqp§eqŠw‰vˆ£xs†~Þ˜€{q€lž‰zkby£›t}^{j›ˆ{p‚k„‡~w[Ž¡¡v¶ƒÅ²”c‹“¡‚€v_†ŠŒ žxŠŠƒƒuz‚s€wYhЇZ“l¡ro¢Œrˆpw˜g8_g\gˆ²{~‡ ’l¹“‰‰†R]šxp…vƒk¨zoƒge¦žˆŠ’€qjœ`~vj¢m{S˜«W|ˆ~u‹‡š~n\Zš‹{sŠ}€Œ„€CªF¨Š“«{|ƒŽL|^Yg¦z˜‡gƒ}kl€šu­„™’…d——¸š—Kˆ˜¯yz˜©z\yƒzsRlN‹gŽœUµ~“}dǶrv{grˆ–ƒ×Œ¤ljžGLƒb{ª‘lnŒ}HŠb£sƒ‡u‚zp—qxŽx„iu™{Šk‚m´my‘|£–‹ih{–Š¡}˜~–™†n‡ˆ•vjyzu–uˆzfŒrmŠŠšƒrˆ‰„††…©¡llyjtlxŒƒŽƒˆ“v|xƒš”¢£Žojªw•wyp…”‡}І³”W~–Šsi·sa„f‚‚–l€¸p~…„…†Y£ˆ„ˆ—X…Euxž‡‡†¶’ck„€i†‹­cˆeu·†‚‚~I„™›…™«–“‚mf|›t¢„‰s”ƒƒ†w©ƒ]¡hƒ–\„žN¾o†Œ„[–‰ ¦Yot†y»”pÄ…‚˜Åz`ˆ™’„µ ¢—yp¢¯ˆip›ye…^³ye}yk—‹a†v|›w‚²zŽ’„‡X‡š…‰^e€}_ˆ”¤l˜‘ž§}q§¦w•l‰}¥€¡fn±‚¥}`ƒV“tމ‡e ’ƒPŠ…ŒŠÀœ{eˆ\Tˆiw¡³]Œ„}aŽ‹ufˆ¬§‹ca’uŒ“m|pmR›Š‡y§œ²|•…r|ts~z”ˆ¨¦dŽvvŒS„ž…\_ªÒ“xy›‰ˆ…‡–Œ•‰’‹‡Š}—¤‘Š›{|ZŽ“…b²‘°©±tˆŽ[›€•¨dy…¡›–aŠt{f`x‚‘©‰H{ux‚‹µ:]€ƒ…‘¡l^c|tŸy”´‚v‡‘„ƒ…ŠJ]„W›ˆ€†…–„˜O—›‡ƒZž[ji“²i˜¦hŒo}}~¡__‹}{¯ka™v¬o•„ªŠqu¿¦›|…†Šqœq‘fg–…~rN¥‹u”™Œœš—§¼‘u›iŽŽ|•3s‰l­Xu¤‰ jŒS_Šg¥“R’‰y—ƒŽmz¿‹ƒƒ…ƒ‘†y†ztp‚}€Ÿ…„†‡rfЇŠ{–‰œ¢s‡y\lj…‹œxŠ€‰‚f‡„…š®np–˜‹|{†‰†½…Žw‰skp¦š~””pŒ‰Ž²‚™œtw„€€©Kaˆ´‚|—•~yІŽjˆ‡Ð‹p–‡‹yƒ~qxp^€†‹v‚v𕆗i…‰…„ ˆˆ„Žx‘šw†Š“‹}x‘‰lƒ‡‡‡†zsd…ˆƒ~”px•zaytpƒ€~ˆ~˜”‰ov¿t_…ˆ|‹…~…{f£’v¶Šu„k|—ˆ•‘|~pƒ²HŠŽ˜‰’x{uyv‚š„t„y x|—€|€ˆre{Š~n\Žk‘~œ{`Dxƒ¡’sŒ€“€‚Ž“s¡nz—u’ot—ž…~of•p—„uh«ux–~…€s‚†‡j…ІuŠŒš{z„†Ž}š|Š®z‘Ž‘husu‡«}—›¶˜„™•¦‚…}z„ƒ„Œ…}—ƒf}|g“:g“®t„Yxqw}ŽŽ„~y{[‰~ƒŒ‹–‡‚~ƒ’€ˆ„plr1xŒ“{’Ѐނ‚˜h‚n‰›k‚{’|€“‹‚Š~ˆ¤Š“„€‰Š}{–”~ˆ•~}Љ’†“‡†q¥}£sw}zohe¶›˜„g‰‹U}€˜v‡eMp–¬…ƒœ‡l.€‰i‚lˆq}%†‚„ŠnV—c”–ƒ›š†Â޼ˆ›†‚ƒoŽ_ƒ‚‘€k›{¤rj†ƒh‰ž›t‹w\epx¨›ƒ˜‚…‰}~|𑉩x•¼‰md~u°“žŸ†XB„o˜‘l‚|{‰Žˆˆ‹‰‚‡oy„À‰z‡‘„Žƒ¬_|†“q’”Š{ŠtŠ‚l‹{€‘‡€l„‡wzu„ƒƒ~«ˆ}‰ƒ†wv‰‚Œy†ŒŒ›~‰†}‡yŠ~~•†}…„|€€‰ŒtŠ€y~‚}ƒŸx…‰|…ƒˆˆ€…ƒoŒŠ€“œKoGx?“vr‡gr|~\žbz©„œ™’›chމ„fUƒ·‰Æ¡£¼–ްɂW¬p€ŸºxоE—n|}‹x‰vÐ|y]pv¦‘‹pu‹¥|‰x‘t°m‚€cls›™ƒuAÀlˆtp}Œ–›qYyŸ_‹—¢ŸÏ¦¥¡…‹msfŽg|Ÿz…“…“~Œ•Ÿ{€h‘~‹ˆvw|އœ•uuŽ—wŒ{f›{—t‚ˆ˜jsޤ¾vN~tp‚…_k‹{¬‘sj{1|¡Žx•{r‰ÂOŠƒ}pŸ…«f{˜…£w}‰h›wt¸”’†Ž~§¢z…^y“†‡…v}sOx¦p ‚ziRgÅt§y¡0Œk¥q`w§Ã–‘ˆ‰€ƒWkƒ‹¤‚na†¸žŽ~‡„]z±b~`t‚}/z³ŽE]¨ˆ‘‰z†„‡’º~†tno‹¦É…i“|¡}]a‡€sscf˜ceƒ|¬š~v}‹•£††M­˜ª„†«—yf¶¡Âazvƒš‰ƒƒv‘‘³q±•B•„g¡‚’—\j“‡‹ŠÆ~‹Ç†s‡š‡bli‘‡{†€K’mwÀª‚ ‘§©²‰}…€lŸ}u¤ˆŠLnb‹`W¥’Ž™’W^ˆƒt†¦`a“¾–Š’jˆˆ¦ƒ•Ö€š¢œ~Ÿ hto6iƒ‡¦Œo„¸„x„UN†u‡ˆ‰………‡~ˆƒx‚‚Š||‡Š‚‚‡‡Œ‘„‚‚}Š€‚€†‚~zƒsv}…‚z€~„z–ŒŒƒ‚}†€}…ˆˆƒ}„ƒ~„~zŠ…ƒ}†ƒƒ–”t~~†‹ƒ~†~’€‚ƒz‰‘„†~†ˆ{ˆŽ{…t}‚tƒ‡…€“ƒ‚w–Œ„|‰†‹ˆ—{€…ŠpŽŽŒ‚‹ƒw„„‡ƒ„‡ƒ€„zy{}‚{€y‰†Šp’„~ˆ~}{‹…x†„v~v‚w‰Ž€‚†‹~ƒ{ˆ†‚}‡‡„}Œ†„……Œ„}Š„ƒƒ’„{{…zx†…}}yˆ‡‡x€~‹‹€‰†|‡~€‡x…††€……z€…†‚ƒ…€|†‚…†ƒ†‚t††„…†Ž‰„ƒ…y†ƒ‹~ƒyƒ„…‹„€‰ƒ‚ˆ„‹„}†Œ~|Œ‡‡„Š‚}އƒ†…‚}—€…Ž~Œ€Ž‰ƒŽ•‹†€„‹ƒ‚…€€‰„}ŒŒ|‹˜„‚ƒ~…„€~w‰‡‹„ƒ”€p„‰Œr}…Œn…Š‚wƒy‚ƒ‰‚‰ŽŽ‚xƒ€‚‹£„…’Œ}„ˆv’w‡•–}Œ‚v–‚ƒƒ|Œ„z„}l}vƒŒ€xŒ~€ˆ‘ƒs…m€|™Ž‡‚‹ˆz…€‡~‘Šƒ†y‚‘…ƒ‰‡…ƒ‡ˆ€{‹€ƒ‰‚ƒ†€Ž†{‚‡‘r‚w†„Š„~€†zŽ€ƒ„ƒ‚ƒ…‡†€€~|‚…~‡„p~‰|u‰ƒˆ†ƒ†{ƒ}ˆ{ƒ„‰zyx}†}„…}‡ˆx„„ˆ‡…quˆ‰jŠƒ†‰ƒƒƒ~”€„‰‹€s€x…ˆv‰–q–‡†€‚Œƒ€‚†‚…†|‰„{„„„‚І„…ƒ‚zޅЉ{…ƒŠ‚‚ˆƒ…†”‡†Ž{ˆƒŒ„ˆ†…|‰„}…†ƒ‡€…†‚}‰}~€ˆ‚‹}Œ“~t„ƒu€‚w†ŽŒ‚kˆ{‡…‘†ˆ…~…„}x™€‰Žƒƒ…€…‚‰Ž‹ƒ†~‹€€ƒ|v†ˆ‰ˆ{‡{Œ‘„m“€Œ…‹}‡w€€€~€ƒsŒ…މ€ˆ‡ƒ†ƒ}‚‡z†o€r‚‡y„ƒŒ|{x‡‚ƒ‹ƒ‚Šˆ‡zqw‹‚…ˆ‡€}s„wƒ”€ƒ™w‚†|‡Œ~‚ƒ}Š…ˆ”‹‚ˆƒ~…|‹€…„|†‡ˆ|€ƒ†‚x…˜†‹|†‚{Œ|…€…~„‹ƒ†ƒƒ„Œ€‚ƒ‡ˆƒ‰„€€„„“…’€z„“y~ƒ‡€ˆ‰x~Šysuw}‚w†Š„ˆot†|„}u…}{|Š…~ƒ†€‡ƒŠƒ‡‡Š…‚……ƒŽ‚z†…„rƒˆƒ‚ƒ‰„‡…„‰Šu{Š~…~„‘„†ˆˆ‚‡|’€ƒ†„Šx€‰yƒƒƒŠˆ~}ˆŽ}y†~~ˆƒ‡‡‡{†ƒ†€‚~ƒ}‹ƒ€ˆ†ˆvˆƒƒ‰””‰~„‡‰Ž†ŒvІŠxsŽ„€‚€~€…g‡„ˆt„„rˆ}z…{~x…s„…‹~zŒ‚€‡p~ˆ‡•ƒ‰‘v…‚”„w|„ƒr~‡ƒ†œq‡††ƒ}€ˆ’‚z˜ƒ‹‰u‡‚ƒu~†|ƒ‡€ƒ‘zƒŠ‹…Žu‚‹Š„ˆŠˆ‡ˆ„‰…vˆƒƒ€‹†…|‚‰~‹‡ƒzƒŠwŒ…†„„…†v€ˆ‚‰|‡‡|‚Š‚€…ƒˆ}€lˆ†‰|„”~‚•„‚ƒˆ†„…ˆ†–‹x‚ƒƒŠ‡‚ƒ‰ˆz‹Š~Šw‡‰‡Š—Œ‡ƒwŒ€z|}z‰‚…ˆŽ€€‡‡‰‚„~†„y‚ƒ}‰ˆuƒ•€†ƒz†ƒˆˆ†Œˆƒ“‚y~‚‰€„€„sy„ƒƒ‡„††w‚y†‚‡…{‚‹|„‚ƒŒ‚Š…„ƒ‚€z~‹„‡ˆ……~ˆƒ€}„~|‚†ƒ†…І~‡}‹{ˆ„ˆ€~‡ˆˆƒy}}…Šƒˆ‰z}“†“u‚„x„†‚†„w–‰†…„…€ŠˆŠ„…€„‡~xƒƒŒ|k{‰…Œ}‡†ƒ}…‡’…‹†ƒ…‡‡ˆŒ~‡‰‡ƒ|„x‡Œ‚}‚ƒ‹yvƒ„„ƒ…{†~ƒŠ}Š{oz†~ƒ€Š…€ƒx‰ƒ…‘…}~†ƒ„ƒ‚…„ƒƒ„…ƒ„„„„†„„„ƒƒ„„‚……‚…„ƒ„ƒ„…„„„……„„„ƒƒ„…„„ƒƒ‚ƒ„„†ƒ†„…„…„„…„„ƒƒ…„„ƒ„†ƒ„……„ƒ……„‚„„ƒ‚…„†„„„„…ƒƒƒƒƒƒ„„‚„„…ƒ„„……„ƒ…„„…‚‚„………„„–‚~„‚„w‡š„{„€€„‚……Œ„„†ƒ‡…†~wƒƒ|…yˆŠ|~y|Œ…w„vvƒ}†…„‹z†ˆ‹Št†‡†z}Š„‰‚Šzƒ‡„y‚…uˆ‚ƒ‹wˆƒ‡‚}ˆ…~z…‰v‚Š€ŒŠ‡s€‰‰vz‚’ƒ†Š……ƒ‚‡†~}……†ƒ}}‹|ˆˆ„‰‰ˆ†t‡…ƒ†„~ƒ„Œ„ˆˆˆ‹ŒŽ‡‹ˆ’†‡‡|‚}{††‚‡‰€‰ƒ…‡Œ‚‰}‘‡‡€„~~‚‡‚†€Š€“ƒ‚І~~Š‚‚{…~Ž‚ƒzˆŽ††Šˆ–‰‹‡‹€Ž€‹€‚ˆ„~{ˆƒ‡„v€ƒ‘‰ƒy„†Žysy†„…‡’†…Œ}…‡ˆ„€†„†‘†Š{†Ž„‚Žƒ€…Š…}ˆƒ…ˆŠ~‡ƒ…‡ˆ€ƒŒƒ‚|‡Ž†ˆ}……x{ƒ†t†€†w‡ˆ‡ˆ€‚Œ…‚‡†‡ˆˆt†ˆ{‚…‚‚‹ƒ‡„ˆƒ{Œ}Ž„„‰ƒ†„ƒ††ƒ…†Š€‚†„ŠƒŒ‚ƒ†…‡†ˆƒ‡‹„†~Š‚}Ž…„z‰…‰ƒ€ˆ†z‚…„ˆˆ„ˆ{‹•ˆŒŒ†…‰Š†‚„„~|„ˆu€}‹ƒ‹‰}ˆ‰ŒŠx‚ƒ‚ˆ|z|Œt†~…†z‹{‚{€Ž†Ž‡Ž‡€‚€ˆ€ƒ„€~…|{„ƒ€}‚}}…„|„~‰ˆ†ƒ|„ƒ„…ˆŒƒƒ~„}zŒ†€ƒv…ƒ‡Œƒ{‚ƒ€…{|„ˆ„ƒŽ„x…†~{‰„‚†~‡…†ƒŽ{€†~{†‹†ƒ……†•|ˆƒw„ƒ‹‰}„ˆƒ„€~‹ƒ|€ˆŠŠ‰‰‚…ƒzw|a…ŠŽˆƒ€myˆ}Š‚€†ˆ†„Ž„‚†z…}zˆƒ~‚…~ƒˆŒˆ~†…‚€~‚ˆuz}u‡‰€{x~ˆx‰Ž‘‹tŽ„w†ƒŽ†„Š…Žz{€‡…~{€ŠŽ‚‚ˆƒ‚ˆ‚††ˆ€ƒƒ…ˆ‡††‰„ƒ}†Š’‡ˆ}~ƒ…‚ˆ|………ˆ„‚}…‹ƒ„ˆ……ƒ{…Œ„‰…†„†‚‚’yˆ€Œyz}‡‚ˆ‰Š€Š‹…Š…‰‹€‡……~…ˆ…v‡…Œƒ|€‹…І…Šƒ…yŽŒˆz€x„Œ‚„…„zƒ}‹„††„‚‰ƒ~Š…†‰zˆ‰‡‡€ƒ……€†~ˆ‚„‚ƒ†“‡‰‚Š‚…†‹…‹„ƒ†ˆ‚ƒ‹„|‚~‡‚€ˆƒƒ}†‰“Š€‰ƒ†…ˆŠ€‡‚…€‚ƒ‚Š…z„‚ŠŠ‘yw…‰Šz„ˆ‰‡†‡…‘{|uƒ{Š~†„…Œ‡‚‚‚„‚…ƒ‚„~……ƒƒ€‚Šƒ~…„„†ŠšŽ‚…Œx†……„w†‹ˆ|……ƒ……w‡€„Šz‚ˆŒ†r…~‡{zv„І‚†…sw…sy|‚ˆ’„‡ˆ‚‡œ…€…˜uuˆˆ€„}’”†‚…†ƒz‚yŒz‡Š‰‹ˆ‚€„xq‹„‡€„‚–ƒ„‚~”{Œ‚Žx‚‚„yˆ}‚|ƒx‚‚†„…‚}ƒ…~‚‹……ƒ€‡„‚€……|…€€„€€‚q~Œ|ˆ}ˆ…‡‹z”€~x~ˆŠzˆ€†‹…|v‡•ux|“މˆŠ…‚{||v„wЇ|ƒ‰ˆ…ƒy…€s…ƒ‚Љ‰œ……–’„„Œ…ƒƒ‡„–x…|†Œ|‰…~x‚ˆŠws„…Œ‰‹~‰„…‰†‚†|‰‡†Šˆ”ˆ€~ƒ~€‹…‡pxzŒ‰‹~{ˆ“i…‰„ƒ˜‘’‡„‹z‚q……‡{ˆ‚{”ˆ„„…‡‹t‡€†z‡‚‡}ˆˆ‚ƒƒ„x‰{„††…‡†…Šƒˆ…Ї„ˆ†…‘„„ƒ“‚‚~tƒŒ‚‡‡†€Š„Š€„„…„†††‡„…„yŒ‹{†Œ~…“ˆŠ„‹‚}~}ˆ‡|„|Š…|†€‹ƒ‰€…}ƒŠ‚†‚…{‡‚…ƒŒ€‡†„…‚†ƒ˜‰z‰ƒu‹Œ„€ƒ„†‡ƒ€ˆ‡ŠŠ„…‹}Š‹|ƒ€‰ˆ‘ˆ„€ƒr†{•…ƒŠ†–Š…vs‹‚„€€„Šƒ€Œ€Š~Œ…q‚Ž„„‘ƒ€…ƒˆƒ~‹p…†yyˆ…‰„†…‡zމ‹“„v~}ˆƒ…z…u’„‰ƒ…{…~‡|‘Š€w{~w„…„…}}|ˆƒ†„}‚‚„~Œy…x†“}‚‚…€w¡…{Žz‡Šƒ„’|……†‚„|€ƒƒw€‚’ik‡…‰†r}‰’Œ††t‡o‰Š…x‡†€ƒ{…|_‡„ŒŒx‰ |~ŠjŠ‚ƒ†…‰„ˆ„‚‚~ˆm‚’‹Ž†{„„~vŒ†‰…„…‰ˆ†‡€…‡…ˆ†Š€ˆ…ƒ„{}‹‡‡Žƒƒƒ}Š‹„…‡~|†Ž”†‹Œ~…‹~š€ˆlޅЉv„…v{y…e‡~€ˆx}x“…}‹z‚}„‚y{‡…€{€Ž‹‚‡y}‰~v}Œ„ƒ†|~‚ƒ„‚~w‚…„˜{‚ƒ„…e„„x{…‚‚—v‚‚ƒƒ‚Œ…………“‚–ƒƒ‚„~Œ††‚€|Œ†‡‚}ƒ„}}‚}‚‹ƒ…ˆ|‡ˆm‚†}„†ŽŒ„ƒ„ˆŠy„ƒ~‚‚’‡ŠŒ…‡„…z‡‚ˆ†€Іހ~‰v‚‡‹‚‚•ƒŒ}ƒˆ~‚€z„†“†Ž—w‰vƒ‚‘…„ƒŽƒ|€‡‡€€z‚q…¡Ž~ˆ…‡…‡…ƒ„ƒ…|•wt‰v‘‰‚†‚~{‘ƒ…ˆ††‰ˆ…™ƒ…ˆ„vˆ‚„}‚y‚„w„‰‚‰~x†€~~wŠ}Œ‚ˆw‹ƒ{‡ˆŠ‡‚…‚ƒ{ˆ…††ƒ„†ƒ††……ƒ……|†zƒ~‚ŒŠ‡yŽ’‹„ˆˆ}†‚‰Š‚ƒŠ‰ˆƒƒ{††€Ž‡„„†€‹„‰€††ˆ‚†~ƒ€†€…Šr…{ƒŠ…“r™w‡ˆ…xƒŒ„€„€Šˆ„ƒz„ƒ…ƒ‰‰†€ˆ‚†‡„‡€Ž—‡|…€~‚‘€‚†…‡~…z‡€…‚ŒŠs‹€‹‡xŒ†yƒ}ˆˆ‡……ƒ‡„‚……‡‰}y‡‡~‘}އ†~‚{…{Œ|yy‚‹~ƒ‚Œ•}‡}„‡~†ˆ‚Šƒo{}‡ˆ~‰u€…ŒŠ‚‰ƒ€ˆˆ…ƒŠƒ~‰†ƒƒ‚…†š‰€‚‚ƒ‚€ˆ…ƒ‹†}Ž‚Št„„ƒ{~Ž|…Љy~y„‡Š…ƒ…ƒ‡{ƒ…†ˆƒ‰ƒˆ„}Ž„‚ƒ‹~‰Ž‹‡‡††‚ˆ{‡ˆŒ†…ƒ‹Œ€€€‚z‡„xƒ€ƒŠy†Œ|‡|ƒwƒy‚…ƒƒ”Š~‚‡„‚‡t…zx‚‚……zt…‡|„‹…‚†Ž……ƒ„}„‰sŒ†‹‰€˜ƒ†‚‚ƒˆ‡Žuz}…ˆ‡†ƒ}ŽƒŠ‡Œ†w›z†||p…Š€…†Ž‚r˜„€††‚”z”w‹Œ‰~t}Œ…}}†y‹„ˆ•‡‚‰ƒ‚xІ…‰…†ƒƒ€„‡‰†„ƒ“}‹‘~…†|†‚…€~~…ƒ~ƒ„‚„ƒ|‡Ž|~…ƒ{|…„‹€„„„“‚„€„…‡‹Š‚‡‡ˆ…ŒƒŒm†Ž‰ƒ†…ŽŽˆ†{……€z„‚|Ž…Š‘ˆ‰„„‡…†‹…xŒ}‚€ˆ{…|…€€y}…ƒ‚‚Ї‚ƒƒ„„„ƒ‡‹ƒ}‡{…‚†y‚‚x}‘}„Œ„vvp‚€‘~ƒ{ƒ„…x†Š‰~€€Š‰ƒ„„Ї‰z€„€Œw~š‹ƒ‚tƒ}†…‹{z|…‡„wt‚}|‚•‚€t‚ƒwŠ‚‰†ŠŠt€‡„†„ƒˆ}…w†ƒ„„„~€‚‰‚y‚ƒ…}‹„ƒƒ…}—ˆŽ‡|‡‘€…Ž…†ƒ‚Š‚Œƒ‚{Œ…z…†„yˆ„„Š€…‰~€|†€„’‹„v€}z‹…Ž{‚‚…‚‡rŒ‰€‚‘ˆ‚w‡ƒ‰u‚‹‡ˆ‡‚|{~Œ†‹Ž‚‚ƒ‡†€ˆzx~Ž…†††ˆ‰|†ƒ„“’…”ƒ~y…‚ƒ|ŠzŸ‡~|z~z‘o~„„‹…{‰…}‹‹…Ž‚‡†‡„€~ކ{x‡‡ˆyŠ~Š‹ƒŠ…|„Їƒ|y|ƒƒƒyŠw–ƒˆwpƒ‚„u……‡}Žƒ“€€}ƒˆ€‚’†Š€…„yˆ†…†‹€€ˆzˆŒ‚ƒ„…}}‚ƒk…}~ƒ‚…|€‰Žˆ„ƒ€„Š~ƒ†‚‰ƒ~–w†‡}Žƒz†€ƒzzo€™‡–Œ†|†ƒ‡zˆ~}|vŠŸ‹„|‡‹ˆ“€‰‰‡†…w{‰‡€‰{ƒ}{‡†‚ƒ|Œ‰z‰ƒ‡†€–ˆ…„„„†}…‚ƒ„ˆ†|Œ}’‰y…ˆ„‰ƒ„‚ˆ‹„Œ…Šv‰Œy‹†|……ˆ{ІˆŒ‡…€‹€Œ‰|‰}„‹z~~‘‡ƒv‚€ƒ‡‚|z‹…Žvw…‰€Œ„z…yІv€…~€w†…„„ˆy„•ŒuŠ‚‡|‚x|‡„„ˆ~sqƒ}…Ž‹……„…ƒ}}‡ƒ€‰ƒ‚„}‰ˆ€‰v…„†x‰„ŽŠ€“‰t˜„}|•††……x‰Œ}ƒŒ…ˆŠx„Š‚n|w€Š€‘}yˆ|ˆƒ{~ƒ‡{‚‰xz~’‰~ƒ„–|Š„…~†„‚…xƒ{„„}‚z†ŠŒr‡zz€‚„~}…„€‡ƒ{‹ƒ‚І„v}~~‰}†ˆ‰Œ‚xy’Œu„ˆ{px…‚}~‰|ƒ“…m‚Š~„ƒ€{€‰|…z{}…„{Œz„ˆ…€}……ˆ‰†z‚‰z‡Žy‚ˆ“‚‹Œƒ‚€Ž„‚ˆ~€‚…„‚~…ƒ|„|‰…w~†„}€Š…„ˆƒ„ƒqƒ‡‡…{‚…z…‰„†‚…‡z~€……‡x‰~€n‰…ŒŒ†„|€€ƒuŽi„…€|z„w‡Šw„ƒ{‹‹‚Š…„{………ƒ‚ˆv…‹‹~†…Іƒ……„‚‹Ž‚ƒr„†…„r‡‡}ˆ„|„}‚‚‰“„†……ƒzŒ‡…ƒ{ƒ€x}z†„…u†ˆ‡‹{„{…Љ†„†w€Š|•{‰Š€”ŠŒ€Œ|ˆ~wuŠ~‚„—„ˆ„ƒr‚‹„€‹Œ‚|‹t‚€ƒƒƒ‰Žˆ„|€ƒ…’ƒ‹€†~~~‚z‹|‚„†…‹™ƒ‰‡†u‹„ƒ…†€~—wn„‰„zŠp‚‡~}‡z„s“‚€ƒm€Š€q€†}Š€‹‚‡ˆˆ‰„„††}s|‡……€„ŠŽ˜Œ…‚•yƒ„€ˆ„ˆ•|ˆ†}}Œˆxƒ†‘yy†ƒ…‰Žƒƒuˆ}ˆq‡ƒ„y‰{Œˆƒz†u‹kƒ‘u„Šƒ€Œ‚‡Šƒ…‹…‘†w€‹ˆƒ~}‘‚ŠŒr|‹Ž‡}~„{ƒ„„“‰‰‡€~€xˆ„‚}{ƒˆ‰}|p}€„~ˆ‘†~r‚}‰‰ƒ‡~~|„rƒ~}ˆ€‹ˆ~~pŽƒw„t„€‚ƒˆ~„“•}x€~oƒ}~€tƒ‚‡}€‹~~‚€…|}~†„xuyttŒŒ‡‰u~„€|Œ„{Š€w‚†}z„‹ŒŒŒ‡ƒp‚…}zŒ‹—€‚}‘„}„ƒ„ƒy~†€…v}Š…|„†‚‡ˆs}ˆ†Š‡}€Š|…ƒ‹d‡…ƒŽˆˆ„އ~€††™‰{‡€w‰…ˆŽ…Žƒ„ƒ‰€€{‰‰}†Œrƒ~„ˆˆ{Œ„„‡ˆz†ƒt‡Šv‡†{t“|€„‡‡‚”ˆz…~vw‡~†ƒ“„†Œ}Šm…€‡„…‡ƒ‡’‹†„†‡‡‚„‹ƒƒ‡“‚…‡ƒ•…ˆ„†‡…w}‡ƒ€ŽŒ™ŠƒŠ‡ƒŠ}‹|ˆ|‡„ƒ|‚„ƒˆ|ƒ|€‡„‚‚……‰‚‹|{‚x†Š‡‰€„‰{†ƒˆ€ˆˆ‚Š„{‰„ƒ†ˆ‹‚~†‹ƒ„‰„v†„„‚{‹~ƒ‡…‚‰}…v€‡ƒ„}~|‹ˆ„Š…‚‚‚‡ˆ‹ƒ‡‚ˆ‡Šƒ}„€~„ƒ‡{†}‰ƒƒ„‡w‡„„…‡ˆˆ€‚††ˆ‹„Œ‡„}Œ„ƒˆ‚Š~…€‡z‡ƒ„‚x‹‚‰Š‹‡…ƒŒ…‡‘Ž‹€„‰†„††‰…’‚€‚‚‡}~z‘„l„‚…€}ƒz‚„Š……ƒƒ‚€Ž†‚w€‚t‚“”„…ˆ•…„…„Šy€€€‡€„ˆ‚‹„‹‰„ˆ{‚Šy‚‹……zƒ‹‰‡…~†|…xˆŠr~‡Šˆƒuˆˆ‰ŒŒ…ƒ‰‚‚z~‰w‡„†y‡‡„„„~…l‚s‘†‰‰‰„„z‡Š}„Ž‚„ƒ…‡…€~…‚v…€€„Œ|x~}ˆ…‚„††€††‰‡Œ…Š‚‹ˆ„t†|’ˆ•…‰‡‚†{‘€‡€€Ž„……†€Ž~‚…‡Œˆy‡„‹‡‚v{‡†~†{}}„‡ˆ|•‚‚ƒ‹‚„x„„‰€ˆ{…ŽƒŠ„‰~“y~†„{Ž‹y†|€}Œ†‹„‚ƒ€‰‚‡€ƒ‚‰ƒ‚ƒ’w†„ˆ‚‡z†Œ„…‚w†††„“ƒ…€ƒŒ}{{ˆ…„‹„‹wŠƒŠŠzŽ‹…uƒw|„u}†ˆs†‡‰„„‹{ƒ…€‚…‡Œ‡€~†”ˆ‚ƒ…„‚ˆˆ~Š„z†‰…Š~€‹ƒzŒ{ƒ…‰„Ž…€„…‰~t…€’„ˆ‚ƒ”‰„ƒ}ˆ’†€‚€€}„‹}}‹†{€‰‡‚z~€Ž|x‡z{‡|†Š„„”z‰†‚€|‹zއx‚„‡Œx†Š†„‚‚ƒ~Ž‚…‚~|…‡ƒ„ƒƒ~{…†ƒ}†wƒ‚y„ŒŠ„‰‚„ƒ|ƒˆ„‚~‡{„Љ„z~q‡|…„€ƒ‰q—‰y‘ƒ„‡…|„}€ˆu€‘€|‡‡ˆuƒŠu€€ytp†~…‚…‚‹Œ{ˆ€„wŠ•‚‰†‚‚u€ƒŒŠ†‡†ŠŽƒƒ€ˆ‡Œ„Š…‚ŠwŒ‡…ˆ–„‰‰…{…€ˆ…ƒ…Œƒˆ‚…‚…„„ƒ{†}†Ї‰nЇ}ƒ‹‘…|Š|‚{ˆ„px‹†„ŠŠ‹~}„…y›„€~}ƒŽ~…‹}„ˆz~Œ†‚‰„€|ƒ‹€}……‹†{ƒ{zˆ…ƒŠ}„‰ƒ|}uy„Šƒƒ„Ї„~‡„„|‡‚„€w‚‹‚„ˆ€†ƒ}|€ƒ…‰‚‹}~y~y€…†‰†‡‰ƒ†‘……І}}„{€ŠƒŠ{~„~ˆ|~|Œ‡„‰Š~†‹zˆ‡†„‚…Œ‹Šz‡‘}‡„~ƒ‚††„ˆŒ‡…„Š„€m„…„{x‰‚ˆxqƒ‡…„|’ƒ††Š„ƒˆˆ„†„}‚€„€‹‡‰~ƒ†ƒ…y„ƒ|ކŒƒ‚‰…”ˆˆ‹w}x€ˆŒ†‰ˆ~˜|~‚~‚Œ„ƒqx{…z‚…€xƒ‡…ƒƒ„……ˆ…€Š…ŠŠ…†x†~†‰„†„‰‰‚‡…ƒƒ‚„‡††‚…†‡Š‡z††Ž‹††|‹„“‡‚‡ƒ‚ˆ‚‰ˆ}…†‚ŠŠ‚‡ƒƒ…’ƒ}‚‰Š€‰ˆˆ††ƒ„†{„€‘y€€|‡y‰……‡v|†„ƒŠ‡’wŠ{}Šyˆo‚Šƒƒƒ„z•…„ƒ‚}ƒƒ‡‰y…‹‘ƒ€ƒ‡‰”|z‹‰€„‰‡Œ|’€‹‚„ˆ…‡ƒ„|~‡yŽyˆ‰‰z‚‚|‚€s‚ˆŠ„‡’yŒu|‰€{„Šwz‘{€‹~€˜Š‡‚Љƒ…ƒƒƒˆ…‚‰€Š…І‚Œ‚‚Іƒ‡‡}Šˆ†„…pˆˆ’ˆ‚„x}ƒ†€„„€‚‰x{…“†‰~x†…~ƒ‚€‚‡„‚‰‚‡’€†{…’€}|…„ˆ‡†‡t‡…~ˆŒ…vŽ‹ƒ‚€Š„ˆxŽ‚}„…„|ƒƒ•~|z~…‹€ƒƒ†w…‡|…„„|€‚‡Š„‡Œ‰}s„…ˆ~‚}…‚Ї}}‘ƒ…ƒƒŒ~ƒ‹{‰‡†Š„vwƒ…ˆ‚}‡ˆ‹ƒƒ†ˆŒƒ‰’Š…~„ŠŠ~u‚‡s~€‚{‡Œ„’…„ƒˆƒ„…{tˆŠŒ€…ˆˆ{‚‰Š˜Ž…~„ˆ‚‚„ƒ‹Ž‚Šˆ…Š‹„‰…ƒ…y€‰ƒ†‚„‰…Їˆ~z…‚x{ŽŠ‚…„‡€‰†o†Œ„Ž…‚Š„}|„„~‚ƒ‚‡z‚Œ‰w‘‚~Žƒy‡z|‰ƒ{‰„„{†‚‡ˆƒ€ƒ„“‹{u€}Œ|‹œˆt‡…„‰…„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„~ƒ{~†p„…ƒ††ƒzˆyu†…‡„‰–‚‚~‚x{ˆ‰{‡„„‡s{†~†{……{‚u‚œŠ—……„††}y…„€‚…ƒˆ€}„ˆ‚…„Žx‡„’u‹ƒ‡y‡„“‚‰{‘’}~†ƒƒ“Žy‰Š‹{w‚„{…ˆ„‘…‰~~ƒ‰Š…„ƒ„~{…‡„”‡‰”€yƒ‚‡‚†~‰ƒ€‚‚‰„”‰r‹m…y~~†€‰ŠŠz†„€„yv‰}‰~vwxy‚†x„ŒŠ|}Šz‚‰€‰ˆxŽŽ|„ƒ}~„Ž”†j|‘~Š…~ƒ‹˜„Šƒˆ„‚‹‰€‡~‚Š…‹‚{†‡…ˆƒ„‡„ƒˆˆ†„Œ„†‹€ƒ†…†Žoƒ…ƒ‡Œ…‚…‹‰‰z‰z„„ƒŠ„†ƒ†€z„€€{Ž‹‡ƒ„ƒ†ˆ~€‰„Šƒ‹|‰€‡ˆ†‚…†‚ˆ‡‡ŠŠ††…†ˆ††……‚€„‰†ƒuz}‹†ˆ†~†‚ƒ‡}‰y†‚†y‰††„‚yƒ†—‹‡‚Ї{…‡„ƒ}„ƒh†„ˆv‰Ž€ƒˆz‚ƒ…€ŒƒŽ…ƒƒ‚†ƒˆu†{}~z}‚~}š~n|m~xr„‡}‘†~{–’ˆu†‚’ˆwx•‚{Œ‰’Š…†ƒŽ‹ˆ‹ƒ{Ž…‚Œ‡‡zˆ~…ƒˆ~†Œ†Œ‹…€„ŠˆvuІy}~‰†‚|„„x…}†~‰‰Š‚„€‰ŠŒ|€‡…{ƒ‹‹„„…ƒƒ‰|‡}y‚|ƒ~ƒ|ˆ‡‡ˆ|†‚{|‚„ƒ‚‡Ž‰Š†}ˆˆˆ}‚ˆ„Šwzƒƒx‰ƒˆŒˆƒˆ}‰Œ‚…‚ƒp‹u†‚q‰vŒ‰~†ˆƒ‡‚‹‡{ˆˆ„‡……‰Šz~‘ˆˆw‹„~‰…sƒ’ƒ„Ž„‚……~€}†‹ˆƒ‚””ƒ‚Œ~z„Ž‚‚ƒ{€Œ†‡€–„zŠˆ‹…„ƒ‰‚v~‚Œ|‰|Ž„€}ƒ‚f”Œyˆ„q„|}w‚Œ‰ty„…}„ˆ‚ƒ–‘zˆ~…Šˆ…‚v„†‰ž†Š€Œ‚„ƒ„z~‰‚€|…„Š„ˆƒs‹‚…ˆ„†|z‚†„‹…„z†‰”‡‰ƒq‰|‚y‰”„„€x„{ƒ€wxu€Œƒ‡”|z‡z|‡ŽŽ…‚ƒŠ†z‘„…š{|~‰‚|„‚€‡Šˆ„€‚…s†ƒ}š†Žƒ‹€„Ž|‡‡yw„t{Š’{„‰‰ƒ‰†z‡Žƒ‚‡…{‡ƒŒ…‰’ŒŒz’y‰‹ƒv„Šsuƒ}ƒƒ†Š’‡ˆkŠŠ{†~}Ž„y„‹qƒ~†ˆt›‚yv€†ƒzyxŠ…l†|{ˆ…‚ƒƒƒ~–ˆ‚~†„Šƒu‡„‚vˆƒ‘ƒ‰ˆƒƒ‘‹t{‘ƒ—‰’‹q€€…ƒ„|‰|„‚Š}~‹}„~‚ˆ…–ƒˆŒ‡z{‡…}…‰ˆ}‡’‹‘}ˆuxyxˆ˜„|„š~o‡„ŒŽ€„xŒˆ‡ƒ†Ž}Œ…‹—~v‰˜‚Œwƒz€‰~ƒˆvŒƒ€…}ˆ{˜„„‡Œƒu}–…„‡w†…„‹‡‹”‹Œ„ƒ‚ƒ~‰………†‰ŠŽv‰††z††‡†Œ~q‰t}„Žx††l‡‡y€}†ˆ‡ŽŒ’ˆ‚yxŽ„†‡‡{„‡‚ˆ€ˆ€…ƒ…†„„†Ž}€…yƒ‚†{…ƒ€Šƒ…}~Œƒ‰‡…„†‡|†ƒ…z†‰w…ˆ„†„„‰„}†„†‡‹ƒƒƒ„„€„ˆ‹„†„ƒ|t„‰Ž‰‹Š„†‚Šƒƒ|‚€‚‹ƒz‰…z†„‚‚€‡‰x‚…|‰}„€ˆŒu†Œ†‡…ƒ~‰€ƒŠƒ†‚‚„ƒ†ƒ†‰ƒ‚„†Š…‚‹|…„‡„{„{‡“‡†‰ƒ‚‚Ž„|‚ƒ€„‚€‡‚}x‹‡Š…€‹yy„€t†‡‰‰}‘Œz‡‰z~†€†€…Œˆ†‹Œw‹…‰‡‚x…†w„x€…‰‰‡’€Šƒ‚–„zŽ•ƒ{ƒ~„‹ŠŒ„‚ƒ…† †„—„†o€~„’v‚w‹‰ŽŽv„~‚|“Ž‚‚„~w†z|ƒ„ˆw…€|ˆm‡†xƒ}†yˆƒŽ‹x~†€p”x|{˜‡~t€r~†~u…jrƒ{v‰†‡~‚މŒƒ†„a€„~}~‡„„yІ}………‰}qz{ƒ‹v}…Œƒƒ~}€€‡ƒ|‡y‹“ƒˆˆ†v‹~‡ƒ‹~œw‡}‚{…z~ˆƒ‰ˆ€€Š„~Ž}„†h‰|‡ˆ„‚„„‹u‡†v‘‚ŒŠw‚yŸ‹‘y†y{ƒ‚Š–…xƒ‡†‚}€“€‰‚„ƒy‚~ˆƒƒ‰ƒzŽ„ƒƒˆƒ„…‚}sz…{‚sƒ„‚†‚z†Œ‘‡‹‚€ˆ‚{ŽŒz{Œƒ’…}‰„}}“‡‡ƒ„‰†~yˆ„†‹‰x~—”ƒ‘‰‚iyˆ„‡ƒ‚„Œ„Š„~Šƒ{‚€„‡‘ˆzƒuyˆ„„‡ˆƒ…†x}ˆƒ„„‚‰ƒŠŠ‘’‡‹”|‰}ys„ˆ…‰’ˆ}……‡‡‡ˆ…Ž|‹‘w‹††€‰Š~ˆ„„o—‡}Šu‚…ˆ†v‹Žš~‡„t€Œ€‡†‚‘—„y~‡‹„†…„‰„‡…z{†ˆ„‡}‰„€|‡ƒ~†ˆ~Žƒ‚‘Œ‰„ƒ€‡Šƒ‚€ƒ‚~‚~Šˆ€…‹~}‘~‡†‰ˆ‹„ƒƒ…‰|„„}Šƒ‡‚‰‡€’€ŠŠwŒŽ€ˆŒ‹ƒ†“ƒ‚|ƒƒœ„‹‡‹ƒv‹{€€||}€{„€…‚…y‡Œ†‚˜ƒ€ƒ†Š~‹~ƒ…„„…”‚‚~v|ƒy„…‚„|‚މtz€ˆ{…w‚†„‚Š‚}Œ„‚‡†‰y|„€ƒ„Š{†€…ˆ†ƒyˆŠ€z‹€}•”„Š„ˆ‡…†„‡‰{Šs‡Ž€ryˆˆ€†‡…‚‹‹y€|ƒ„„†|ކ…ƒ„y”‘tˆ„ˆs…†||”†‡‰~ˆ…†ƒ„}„Š †Ž{‹~„w˜~ƒzp……‚€|}ƒ~„ˆ}–{Œ„x‚|€}‚††o‡ˆˆ‚‰Œt~†‡‚ƒ˜Šx}‚‹‡|‘~v‰uu|s‰{“‹}{z‰€…ƒn‚ˆvŽˆ‡…‹‚†Žv‹wƒc‚††y“˜oƒwyx”‡Œ‰†ƒ’€‚šr•}}„†{v„ˆ…|€€v‚t€„z{{‰t€Ž}…z†ƒ„o|yw€ƒxŒ„~vry‡y‚ŒŠ‰‡s††~ŒxmƒuˆŒ{‘yu€Žƒzt|‰Œ~‹…—ˆƒ“†Ž†ˆx‰{{€Ž‰……‡zƒ‰†…‰—†„ˆ€p„…„‡y‹Šy~‡zvŒ€€}†–†ˆ‡†y~Ž„ƒ‚€†€€™wyˆ|ozˆˆˆ‰ †u}„‹„Œ~y‹oy„ƒ‚qƒŽƒ€„†„~Ÿ€|ŒŠ—ƒˆ{||‚‡tv~~ˆ…ˆ„…—Œ|‚……‚…‰Žˆ‡„†‡†‰xŒ„ƒƒ{‹„Ž„ˆ€ƒz|…ƒ‡†‰‰ˆ‡‚‰žy‚ƒ~†u‚€z‚Šu‚Š…’‡‡“‚‡“‡†{€€ˆƒ…rƒˆ‹Š…„|x|{„ˆ‚’†~…„‡ƒs|Šw„…x‹‡‡‚†€~€~‡~}€‚‡Š…‹•ƒƒŒŠˆƒ”‚…„ƒŒŽ}zƒ|wˆ‹~y‰jˆq†€ˆ€{‰‰ƒ€…{†zŠ~{{„‰Œ†‡~~{‹Œ‡|Ž„nphŠ|€oŒˆˆz~z’…„‡‰‚Œ„v†‰Œ›~‡„†ˆu}–|†‰‹zŠˆ€ƒ~m’zxˆ…„„v‚„™ƒtˆ}‹†Œ„‡ƒƒ|ˆ‡„’{~x‚€wˆ}ƒƒƒ‰~{€‚ˆ}„†”…€„‰‹u{‡yuŠ…’’†‘–ˆ|„{€ƒoˆˆ|{xƒ……’Š|›„€…ƒŒƒ…z‚}މ‚…„xŽr……ˆ†Žz‹„ˆ†…€ƒ{ƒ…Љz‡w…‡…ˆ†n…}~}ˆ•~”no„‡ˆŠ†xˆˆ†‰Žw‚Ž~ŠŠƒ†ƒyŽŠ…x„z€„™ƒ‡Žwk‹‰ˆ‡‹‚v‚ƒ„‡‰†}Š…||›ƒŒƒ{ˆ…w|…|‡}ƒz€‰‡‚…„‹ƒ…ƒ‡ƒ…„}„ƒy‡‡†˜v‹š€|„ˆƒƒx‡uxŠ‘†ˆ|‹Š‰’’…„„€†“І‚u‹‡‚‹‡†ˆŠˆŽ‡ƒƒ~€l†ƒ€„w…ˆ‡€}„‰€‰~„…‚„‡ƒ‚„ˆ‰ŠxŠ}~…š‚ƒz‡€‚ƒ|‡„€Ž‡‡…”ƒ„†|„‡œ„†–„ƒˆŠ…„‡ˆmuˆ‡}††…‹…~ˆŠ}xƒƒ„‚~ƒˆ„‰„xo„~’ƒŽ‚„yƒˆu‚ƒ…~„ƒ’|{v†ˆ„¢~ttƒ„Šs•ƒ†x…ˆˆ‡‰„lz„‹†„‡„„ƒˆqvy–†‚€ˆ‚Š‚‹rމ~ƒ…~r…Ѝ†‹ˆ‡{†ƒ‹˜}…ƒx€|†€|„Œ‚…‹zu}‚‚t}ƒ€Œ‚…‰€„•|‹„…‚y„y||€“fˆ…‡yŒz•‘u„ˆv‘€ˆ†ƒ‚}w€€gˆˆŽ|€†‰~}‡w‡„…‹„u†‚‡†Œ€‡€’ƒ„…’q‰ƒƒ‚pu—Ž„{ƒš™ŒƒƒŽ€u‹‡…}€|‚‹„ˆv†‡‡„wЇ‡{tzŠ}‡^’t†…‡„’z‡~ˆw{|ƒ‡~‰qxŒr‡€‡Œˆ‰‚ˆ‚€tƒ‡„‚~ŠrŒŒ„Šƒ˜‚l€…‚‰hƒ“ƒ„y„‡‚”}‚…zƒ–†€…ƒˆ“ƒ–€‡…€Šˆ‚€Œ}Œt€z”~x}|k‹‰‚x‚‚„Œwr€w…‡~–„„‰Ž„‰€„š}ˆq}y¢‡’ƒp‘Œ‚z‰~~ƒ˜vŒƒ„Œ{~………„˜{‘ƒ„†„‚x€Ž…‡‚Œœiˆƒ„‰Ž„…}Štw„v‡xv‹b†—ˆvƒ‚{„€‡‹}€zy‘‚ƒˆ…}|vz•‡‚™Š‡~‚‚†›‡ƒ‡t„si‹‹a‡~xŠ‚–Œz™€Žh“†…ˆ|”„z}…‹‡Ž}€‡„ƒ~Š€yƒ‚„ˆ…|Œ…†€š€‹{…r{‚…ƒ–‹ˆŠ„‰†‰‰‡‹}‰‚…†‚„‡Œƒ||†‘‹‚yz||~ŒŒ‡ƒŒˆ‡…u†‡‚…}‡‹xrƒ†‹|ˆƒz”u•wzŠ‹€”……ƒ…„„‡}ˆ‹€Žxƒ‘ƒŠƒ‰…†‡ƒ}„Œ‡uЇ€ƒ€ˆvƒŠ‹wƒx‚~ƒ††Žj€‡“{“Ž…~Œ“ˆŠ‰Š~|ƒƒŒ‚‚Š„‡ƒ{–…~}„ˆ…~|wv€„‚‚‰{ƒ‡u}†‡‡€z…‰Œz†„ƒ}‰Šˆvˆ…†…Œ~…‹‘‰†€•‚n}Œƒƒ€ˆ„„ƒ}z……†~†ˆ‰…†Š…ƒ„€ƒ‡„€‡…wmyŒ‹…‚Š{‰wŠŽ‡‰ƒ…‰……††‰ƒ††{‹…‚‘}ƒvƒx‚„…„‹‰ˆˆ…Šˆ}}ˆ‹‚‹†‰uƒˆ€‘Žxˆ€‰sƒvƒ†€ƒz†yˆ•Œ„‚†s˜~y…€‚~„ƒ…o€ƒƒw„uƒ‚|‹}Š’z„‡‚zŸ~‰q‰‚~Ї~{Šˆƒ‚ˆ€Œvxx–w~†{††ˆ…Œzˆ€xšuz{‚pŒ‘‡€}‚„x¤x|…†‰Ž}¥r…‡{y‹†…m£…y€ƒˆ…“Š‚‡ˆ}š‹|‚„‡Ž„‹v‡„‡‹€ˆŠˆ~ˆq…}‚w‰„‹„‚ƒ}Žˆ—|‡w†‹ƒˆˆ}|‡‹Š‰ŽŒŒ€œŒ”wŒ‚†~Œ~‰Šˆ…}€ˆ…y†‰†z‚‹€Šˆy‰‚‚‚|†‰†ˆ{„|‘„„……w‡‡‡ˆw„ˆ†{‡„‡ˆ‡…†‚ˆ||‡ƒ‚Š‚‡ŒŒ„‚y}†€‚‚†ˆ…„„}€€„†€|ކ‰ƒŽŠ}„|ƒ†‰}‚…‚}‡‡€„†ƒƒ‡‰…‚†‡„Ž€‰Š‡~…†~‚xˆ}„}€ˆ}‡~Š€y‚zˆˆ†~u~~‰‰Œƒ|}z…„†…€ˆt|‡‚‚ƒ„„€ƒy‚……ƒ€‰Š€†{ƒƒ€tˆ‚‚‚u‚–„”†}†ƒmƒ•’…Š„†Š‚„‘zˆ„…|Ž|ƒ„„‹€€ƒ€†ƒ‰‡Œ‰†€‡‹¤“ƒ†~{†~€~‚ƒ{zˆ|†s‰††—Œmtƒ†‚e‡†‰ƒ‚~ˆx†„‡‰~Š~‰€…†„„…y{•…„{‡ƒr…†„“™‡“}‰}†ˆ„“……‡•ˆ†…ˆŠu€‡Žl€††ˆ}ƒ†‡ƒ€…ŠŸ‘…††ƒ“}†††‹†‡t}y~„€”ƒŠ€r†Š~€‚‰‡yˆ‚„l“„‡„’‰•f€|Š‚ƒ’|ˆ–†‚‡™‹}††€‚˜Š‹˜‘…†t‰‘‘…Šˆ€„ˆyˆ–€…ˆ……}xˆ~‚|€ŒƒsƒŒ„†…}މƒ‘ˆ~„‡}}‘u•‡ˆ|‹Œ€|zyx‚•|”‡…‡•w}|zz|‚€}–x€‰ƒŽe…~{„~Œˆƒ…}ƒ…„{ƒ€„i‡ˆ„„ƒ{Œ…‚ƒ~•€}„~‰‡~‚‹~„€ˆ‰•Œ‚‚…ˆƒ}‡‡ˆ}{ˆx“‹ƒŽ‡{‚ƒŠ„‡‡†‹†zt‹‹˜Šx„ƒyqŽw‹‹ƒ†}ˆ…ƒ„€z€f‰€ŽŒš‚ˆ†ƒ„oƒquƒ‹m|†‹€†‚‹}ŽkŠƒ|v…ˆ˜{œ{{}‚ƒ…€ƒ‡„‘‚zƒ‚„…v|„„‰‰~‰†„ƒ‡zt†‚~zŠ‹„ŒŽˆ€vŠ{†~ŠŽ˜—Žuw„{u™z‡‚‹”‡k{‹‰z‡o–‚…¢Œ‰„{Œy„ƒ}…w…“€§o„‹†ƒ…ƒ™‹ˆŠˆ„‚…ƒ‰††a†„Š„q‡s…˜„ƒ…˜Š{†}‹s‰}‡†‡~~wy„„}‚‚‡v‰†sxœtƒ™‡}y‰ƒ‚‡…{„ƒ‘ƒk„‚xpˆ‹‹{‰‚…[ƒ„‘Žy{†™…aŠ~ƒ‰†‰qz•‰z‡•‡w‡yƒƒŠ‡‹…€‚†ˆ‰Ž‰„…ˆˆ‹„†…ƒ‹†…„††Š€ˆzƒ€‹…g{Ž‹‚„…‰Ž|‹€€‡‘€„„…€sƒƒ‚‰‹€Š†„|Š‚ƒ~}‚xƒ|Šƒ†…†Š‰ˆw~{z‚‡†€‰Žƒ~x‡w‘‚ƒˆ†ƒŽpo‘‡~’€ˆ†Œ‚‡wŠ„Œ–‚„…„„~vƒ††ˆ‚yu›…„„y†‚t„€u‡†ˆ–…„žˆ…‚Œ‰ˆ‡Œ„ƒ‰{…‚s…‚‡‰ƒŽ‡†…~Š€g‚Ž‹v„x„}„e†”}Žy€{ˆ|x€‰Šnt‚€ƒƒƒ‡…y†twƒŽ‹“Š…ƒ…‹‰z„„„††‡Ž„…‡‡‹‡ƒƒ‡xu‚‚Š‹{n…„‚‡ˆ‰ˆˆ‡ˆu‰Šv¤xr…„‡„†q…ƒ|~•|‰tƒ€}…a„†ƒvzˆ•}‚y‹†|‚…—‘…ƒvƒz„€xˆƒ†š‚‰ˆx„r‘‹‚}ƒ……„}y€„„‚‡€“‚‚„}˜‹‡oƒ…‚…„Ž…wv‚z‰Š„‹w‰|{†…€~…~u„Ž|}„‰„‹„‡„ƒ‹†Š„†z…ŽŽƒ‚Œ†Œ…†…‡}…€w{€ˆ‚‡~‹ƒp„‰{€‹ˆŠ™~y€ˆ™ŽŽ€Ž‰‰~†‚ˆ„z‡‚ˆ•ˆ{x„Šˆ‚ˆ‚†ˆ…y‚„}‚Š~€‚‹Š~}Žu€€ƒ‡w{‰|y†…t{j}Ž~hƒ€‚‰xw‚…Ž„†~zŠ‚opwŠƒ‡†vxƒ€|{‘Œ‰¨Œxx‡†y‰“‰ˆ‚„™xz}€w†ƒ…’ƒ‹Œm‘ƒ…‡~sy‘z{„†ˆ…xƒ‡ƒ…„~Ž‚ƒƒ}…‰‰„ˆ‚”i†††“›…€„’„z‚…ˆ}~‡ƒzƒl‹p…‚І‹z„‚„~~Œ~Œ}—r‡ˆszv‰ƒ€wˆ™ŽŠ‚‘|€‹bq„•‚ˆ|t‹x††‡~‡Š•{‡ƒ‡e…Œ†t†‚‡‚–„…ƒs}{|Šw„…x|{”†qƒƒ‹‚z…ˆˆz–Œ˜ƒ„‚†…~‚‡‡xŒ‰Œ‰†…€r†€‚†…†Œ|{{uƒŽ’‡~‡}„t‰ˆ‡ˆ€Ž€ˆx–ˆŒ‰”|}‡v…†‰€Š‰~p„‚wšvˆ‘…“„~|x†|q†ˆƒz€‡„„z‚„†‹‚~†zƒ…ƒ„„ƒ’„„x…|‡‰‚‡…‡‘„ބޅ…‡ˆ„~„‡……|†|…ކ†…‰z„‡|„„††ƒˆ‰„“ˆ†Šv‰†{…†|Šƒ‹‰ˆ~މ‡ƒ‘‚‡’†|‚†„ˆ‡„„‹‡ˆƒz‡…‚…}uˆ„‚‡€ƒœ|f‚ƒŒo„ƒy‚“€Œ†œ……ƒ„ˆ”v…‡zwx‹}ˆ‰Œ‰‚ƒ{†Ž{ŒŒ‚z…„Š”x‹…•Œ€€„ƒ†|ƒƒxzЉzˆq‹~‡…‘Œ}Š~|l~”Œ„ˆ…‹w„ƒz~Ÿ™•†ƒ‰ŒŒ‚Š}އ}~£zyx€}„‚ƒ{‰z‡„†‚…„†‡‚‚™†t€€ˆ{…ƒ‡ƒ~y|Šg‰˜‰‰z‘Šy}‡•„ƒ‡……€~†€}€{|{‚|…‹y„˜„‡y‰ƒ‡˜ƒ‰x…€–І{}~¡‡yˆŠu„І‹~z…oŠˆy€yq‚€|„…”|ƒ„‡„†ƒ‡rƒ{ƒˆ†u…‚ƒ|ˆ‰‚Ž~‚‰…†ކs€s„……‰††„…{‡„ˆƒˆ~…x„„~z~Žš‘‡~}†z…†ŒŠ˜„‰Š…‡z…|ƒŽ™Š|ƒ}‰w€y£†{†€ƒ~…Œo‚ŽŠ‡|†‰ŠŠˆ{ž…‡„ƒˆ“†‚€x{z……‚…‚†…‰{‡u…~‡„„…€„€Œƒ–…‡~˜‡Œ…~‚€yƒ…ƒ~€„…„‰’‹„v†”~}‚…І†{€{ƒ€qu‰…ˆl„“†|„€Šr€ˆ‘˜–ˆƒ†‹x‘€‹„††tn„ƒ†€…„„‡‹ˆŠ…„ƒ„€ƒ‚€…xy~x‰‹{„ƒ…~…ƒ‹‹yz„‹{‡{x†„x„}€…y~‚„Š€’€uŠƒ{v…}‰ƒŠ{‡‹Šƒƒ…‚€x|€‰‚~‡‡s‰|yƒ‚†‹“|Ž–}†}kŽ‚†ˆ|„‚…€‚‰…„ˆ€ƒ€†Œ‘xy‚„ˆ“„|„…‚t…uw†‡‹‚‚‡†‹†ˆ{‰y‚ˆ|}z™zƒŠƒ~†‡|„ƒ†~|w„†ˆ‚‚zŠwˆ‰‚‚z†‡ƒ…‚wƒ~~І}‚zuv€Љƒ…{‡ˆˆ‚ˆ‡Ž~|†{’‡„€‰}t‰’„ƒ‚}†p‡‰~ƒx€~…Šƒ†ˆpƒƒ†y‰|ƒ‡‚z‡}˜”†z‰}~z‹€xyuƒ„„ƒ~{‹ƒy…†{€uŠ„y|„‡x‚‹ˆ„€‡€’‹…‚ˆ‡y…„}ƒ‚{xƒ…Œn|v‹š†Œƒˆ†‹†Œh‰€x‹„u„ˆ‚’€”‚Œ|…‡ƒ‡Šv†‰„ƒ‡††}u„…‚ŽyŠ€…y………„v…Ž|†ˆ‹vŒˆ•ƒ’~s„„…Š…r‡ƒ‹ƒ~‚‡{Œ…‡‰|ˆ‹„~€ˆ‘ˆ‹t„œ’}†‡‡‹€ˆ†„‡Š~{‡”|ƒ“y‚„•‹ƒ‹„’Š€‡‚ƒ‚„‰…€„ƒ‚„ƒz†ƒ…„‰‡…†…„ƒƒ‹„ƒ„ƒ‚…~‰}…‚…†…‡ƒ‰ƒƒ„‹ƒƒ‚ˆ†‰ƒ‡„‡†ˆ‚„†}Š~„€„„‚†‡…‡‚ˆ„†‡ƒ†‰ˆ„†„‚ƒ‡‰„‡ƒ‚„…‚†ƒˆ‡……€ƒ‡ƒƒƒ‡ˆ‰……„€ƒ‡‘vxƒy€yt‡ƒ„‡…†˜}p…ƒ{ƒ|€ƒ‡‡Žy€’†——ƒ‚„ˆŒ††o‰{•‚ˆs‡ƒ……‚‰…|‹„„‡z…†€‰‹}{‚ƒ†z…‚q‡Ž˜ˆˆ~”‚„‚„‚…ƒ…z‡…ƒ‰o‡z“Ž}€‚„‹†~…yƒ„…’z‹†Œ…‚}~ˆŠ††‘ˆ~}}…‚‰€~{„„ƒŠ~o€„ˆƒ…ƒŽ|~{€‚‚x~s~vƒƒ„†Š‚І€…‰†t~Œ’‚ˆ‹‰ƒ„Œ~~€ƒ„…‹r}‡‚u‡‹…ƒ‹ˆ‹ˆ†Šƒ‡†Œy€Š††‡{……{„…u…~‰…‘pt„x„††|‚•™~v‡„ƒzƒw€‚…–…|„|†Šˆ„„„‡v†Žp‡…‡…}{„‚„hŠ„„…ƒ‡ˆˆ‚‡‰}„‡‡‡˜{Œ‡‡Œ”Š}€…ƒŒ“‡Šˆ…ƒƒ†‰†‡„…‚yƒ‘އoŒ}‰ŠŒ€„o€Š…y…‹”~€~ƒ‚…y†…‘‡wxŽ„ˆ„ƒ˜‚’ˆ€}…|Œ‚u~‹†ƒˆ~‚‰u‡’“‡†€‰{ƒ•vx„‚…‹…ƒ|…Šx‡ƒ„…nƒ€†y~{†ƒ‹x††‹~€}~~Œ—’ˆ“ŒˆŠl“|~}Žƒ’€~w…„‹}…€„ƒ††„€‡†…†„„„ƒ‡~ƒ‚ƒ…†……ˆ…ƒƒ†‡‚†ƒ€…ƒƒ‚‚ˆ‚†‚ƒ‚ƒƒƒ„‚ˆ†Š…„ƒƒ†ƒ‡…‚ƒ„ƒ…††‚ƒ‚~„†„‰‡ˆ‚ƒˆ…~„„ƒ‡‚†††…€‡„‚…Š…ƒ€…‡ƒ€„‡|…|‡†…Šƒ†„„…ƒƒ†„‚…ˆ‡……†ƒ„…ƒ‚„„‡…„„…†…†„ƒ†‚ƒƒ„ƒ…ƒ……‡………‚‡ƒ„„„…ƒ‚‡„„„„„„ƒ…†„ƒ‚‚‚ƒƒ…‚ˆƒƒ……„‚…„…†Ž†‚ƒ„„ˆ‚†…„‡†„†‚ƒ„†‡„…‚ƒ…€€‚ƒ†…‡„‚…„†…„}‡ƒ„‡~ˆŠ…„‰…ƒ…Š€†‡†‚ƒ€†ƒ‚‡†€‚‚ˆ|‡€…†…‚ˆ„ƒ„|‰‡‚ƒ†|…†ƒ„‰„€„ƒ~}€…‰†‘‡††}І‡†Š…‡„‰ƒˆ‚…‚‡…„‚€…|‡ˆƒ~‰‰”„}‡~„Šƒƒ†|…†‚‡ƒ„‰€‡„…yŠƒ„„y‚‰ƒ†‚‚‚{‚‚‡…ƒz†…‚…ˆˆu€‚Šƒƒz†††„„“ƒ„|Šˆ‚„…‹ˆ…}Œƒy‡~|‚†„Š‹…y„|…}Žw‡ƒ„”ƒ„ƒ†‚€y‡†’ˆ€yŽˆ‡„„…†‰†ƒƒ†Œ|‰„†„Šˆƒ€‚x„ƒ~~Œˆˆ‚†‚ˆƒ}„Œ†{}„~}‚z„†€†‡ˆ‚‰~„ƒ‰‚‡ˆ~€{…†€‚ƒ€Š€€…„|v……~ˆƒ„~‚„€ƒƒˆŽ‰…{~Š‚‚|ˆ€†……{Š~†Œ…‚}‡ˆy€…‚w‡„†}Ї€‰‡ƒƒ‚…‡„…ƒ{†‚€ƒ‰|ˆˆƒƒ‡Œ…‚{‚…ƒ‡}ƒ€†€…†„…‰„…†‡„€~ˆ„‚…†‡{†Š„ƒ‰…ƒ€„„ƒ†…‡‰‡„‰‡‰‹ƒ}Œ„‚‰‹…ˆ‚ƒ…ƒ‰……†‡†€ƒ…‡…ƒŒ}އ„†€…~†€‡„†ƒz„„„|‚„…}|Œ‚„„‚‘„ˆ…‡…†‚xyƒ„‚‹‚Š‚ˆƒ„…„‰|‰„‡€‡ˆƒ†yŒˆ…‡…ˆ‡€€ƒ‡‚Œ†„‚…‰‰‹‰‡…‚ˆ}ƒxƒ‰„€}‡„„‚„}…~zx€Œ~}zƒˆ‘‚ˆ‡~„Š„w„~…|††‘|Ž€‚w‡‡‡‡‡„„‚‡”ˆ†ˆ‡ƒ~€ˆ‚‡…€ƒ‰†„ƒ„ƒ„‚€Š~‰‡€‚{‡†‚†‚{‰‚‡ƒ„…}Š€ƒ†ƒƒ„Š‚…„ƒ†‰„€‰‚…‡…‚‰ˆ†…†‚‡…|…‡†„ˆ…Œ††‹„…ƒ~}…†„„{‰ƒ…„„„ƒ†„€…y„Šƒƒƒ…ƒ~‰|……„€…Œ…ƒ†ˆ……„…ƒˆ„†ƒ„„x„€ƒ“‰ƒ‚…‡……ƒ†~ƒ…x„†€€€…„ˆ~|…„ƒƒ‚ˆ†‡…ƒƒ…†€†ƒƒƒ†‚„ƒ‚ƒ~~„ˆ~€†‚‚‡€z†ƒ„„}Š‘ƒ…€€‡„„‰}‡‡‘‚v…‹„…ƒ‚ƒ‡u„w…‚ˆ„€ƒ~€„‹{|~Š……€†Œ~|‹…ƒ…s„‰‡†|†ˆ€…„ˆ‡~ƒ‚‚‰…€€Œ‚Œ“|‹‚…~ƒƒ‰…„…‚|}‚‰€ˆ‹†}x…‹~‚†ƒŒ‚‚‡Š‰‰†‹„ƒ„‚‡†ƒ€}ƒ‰‡ˆ’„€„Œ†„„Љ~‡…‰†€„ˆ„†~‚ƒ„ˆ}ƒ‚…†y„ƒ‹€†Š„…‡|…Ї‡…†ƒ‚‡€ƒˆ…€Š„ƒ†ƒ„„‚ˆ…‰Š‰€z}y…}‡…„‰Ž‡€„ƒŠ…Œ‡‚„€ƒŠ‚…‹†‰|‚…‡‚‡‡ƒ„}„€Œ„„…€„ƒ{‰€ƒŒ……†Œ………€Œ~ˆƒ‡„ƒ€ƒ€…ƒˆ|‰Š„€†††ƒˆ…†‡‡|†ƒ‚„‡‚‰ƒ‹|}€„‚Š…‚…}~Š~Œ†„‚„ˆˆ~Ž€‹‡ƒ‹‚ƒ€~…‹„{„„{„{„ƒˆŒŒƒ‰€‹…u‰Ž„ƒƒ‚‡}Љ†…‚‡……Œ…„ˆŒ~‚†‚}‡†‚„€}z‡‹€„€‚‚€ƒˆ„ƒ‚„‚‚‚‚€‚ƒ„†{ƒ‡Œ‚„€{…€ƒ†ƒ€‡€‚ƒz~~†w|‰„ƒ€‚w……~u|‚†Š€|ƒŠtx‚‚ƒs‡†‡Š‚ƒƒƒ„„„„„„„„„„„„„…„„„„„„„„ƒ„„„„„„„„„…„„„„„„„„„„ƒ„ƒ„„„„„„„…„„„„„„„„„„„„„„„„„„„„„„„„„„…„ƒ„„„„„„„„„„„„„„„ƒ„„„„„„„„„„„„„„ƒ…„„„ƒƒ„„„„„„…y~…ƒ‹‘‡ƒˆ…„ƒƒˆ‡…‘ƒ‚z„€„€Ž…€Ž…Š‚ƒ‡‹…ƒƒ‚„{ƒ€†z…†„€…€z………‡ƒ|‚‹}z~„ˆƒ‚~‰…‰‚‚ˆ…‡€z‰ˆ…}Š|‚}„‹€}ƒ‡}‡~‹‡|‰…{x‹†…‚{ƒ‰ƒ…ƒ„†Œ‡„„††ƒ†‰Œ‚‚ƒ‡†…ˆˆ‰†ƒ‰ƒƒ††ƒ†‰…„Š„|ˆ‡Š‚Š„}‡ƒ„ˆ†…‡ƒ‰‰ˆ†„„†ˆ…‡‡…ƒ‰„ˆ…‚ƒƒ‰†‚…†‚ƒ|‡‡~ˆ„„‡„‡~…„‚ˆ‹……ƒƒ†„‰…„‡†Žƒ„„‚‰…ˆƒ„„|}‡yŒ‰„‚v€†‰ˆ‡{‡€†…„}‡‚||†„‰„t{„~…~|‚…‚|{„€}‰€„{ƒ€~‚‡„‚ƒ…‰‰ˆ~‚„‚ˆ~~{Іƒ{‚Šƒ|z…ƒ|‹ˆ€‰ƒ‡„ƒ‚y†~y}‡w…‰x€z„|{„‰†…†€‚…†ƒ…„…‹€ƒ†„ƒƒ‚„†‹}„…„Šƒƒƒˆ~„„ˆ~zƒ‰{„}†ˆ‰‚ƒ„ƒ€‚ˆ„€‚†„„‚x†‰“……‡……„~‚|…}|‚y€„„‰‰ƒ‰ˆˆ…‚€„~ˆ„‡ƒƒƒ†ƒ†ƒ‚‹}€Š‡€‚Š‚„z„€…„†u}‹|„ƒ†‡€v…„|‰Ž„ˆ€„„„ƒˆ…‰}…€……ƒ~‚ƒ{‚„„‚ƒ†‚ƒ†~{ƒ~}‚€‡†ƒˆ~„††Œ‡~~†€‡†Š‡|…s„‹{yˆ}‚Š„„‚€z€}…ƒ‚~‡‚‰†ƒ†€‹…~ƒ~„|e„††‚€„x|€„Š„†‚‚‚ˆ‰}‰……‡ƒy…y~‡‡‚‚}‚‚ƒƒ€ˆzƒƒ€ƒ~‡…€€†|€†‚y…ƒ…‚}w~‡|‚†ƒ„ƒuˆ†~Š…‡‚{…‡€„ƒ‡|€‹ƒ~ƒ‡~„ƒ€†…Œ‡…‚|„{~‡‡„ˆ‚†…„…ƒ†„‡€…‚€†…†Œ€Šƒˆ†…yƒ}……€Šƒ„ˆ}†‰‚€ˆ‰„‰ˆˆ‚ƒ„ˆ|‡„…†‡‹}„ˆ…€‹…€ƒy‡‚ƒ‚ˆ‚u…‡}„†ƒ„‡‡ƒ„‰‡ˆ‰‡~„~‰}|†„€‚~~‚‰†…ˆ†‡Šz„„‡ƒ‡„…Šƒƒ‚†„ƒ‡„‰…Ž‹~€€ˆ‡‹‰…xƒ†‚‹††‰‡„ˆ„ƒ„Š‚‡…‹}‰„„Œ~|{}…„„}Ž…ˆƒ‰‡…ƒƒ‰…†…ЂЅ„……uˆŒ„€‹ƒ’ƒ‹€ƒ‚€ƒ…‹‚y†|†y„†€‡†ƒ‡tŠ…€…‚‡ƒ‹„‚‹€…„‹Œƒ†„ƒ‹~„y‚€‹‡‡‡}„y†€ˆ‚}ƒ†ƒ€†€~x€„†Š‡…ƒ{xŒ€ˆ€yvtƒyƒˆ†…y„‚ˆ„†ˆ{‡‹…‚ˆˆ……„ƒ‡†…}‚‡ˆƒ‹†€‚ˆŠ‚ƒx‹‚‹†„…ƒ€…~‡…„|ƒ…‰†…„‚‚„„‹ˆƒƒ…ˆ„‚‚~†ˆ…‚…„}‚ƒ„ƒ‚€€„…€€‰…‰Œ€†‚~Š…{†{‚€ˆˆ…†~‡~y…}~‡z~Š„‰ƒ‡’~~€‹…†‹‰}…ˆˆ„ƒ†zƒƒ‡†‚„Šˆ‰ƒˆ†ƒ†}‚ƒƒƒ‚ˆ~„€Š}‚„†„‰ˆˆ‚€…†Š‚…„Š}‚„…‡…†ƒ…†ˆ†‡ˆ‚‡€ˆ‰~ƒ‡„‡‰ˆƒЇ|‰…†‰€v„‚ƒ”…‚Œ‚…Œ‚‰Ž„ŠƒŽƒ„‚|ƒƒ€}†…„…‚…‚‚ˆ„‚…„}‡}…………„†ƒ††„„ˆ…†‡ƒ„Š…†††ƒ‚„‡†„‰ƒ†…ˆ‡‰ƒƒ‡…†„††…†„‡†…‰‰‚†‹„‰‡‡„Œ†‡„„…†‚ƒˆ‚‚Œ‚†‡€…~‡€Š„†…†„††„…„…ƒƒ†…ƒ‚…ƒ‚€ƒ…€€Š€†……ƒ…ƒ‰†Žƒ…ƒ†Š„‚†•…‰†ˆ‹„„…ˆw„ƒˆ…‚…‰ƒ„€…‚{„‚ƒ‚„„„ˆƒ†~‚‚…€‡ƒw†‹{ƒŒ„ƒƒ…}‡x„‰ƒƒ€†„‚~„…ˆ‹„€€‚†z…†Š‰ƒ†…‡‡|‚{ˆ…~ˆ„‚…„„ƒ†ƒƒ†€†…†…„ˆƒ‚ƒ‰„€…‡…ƒ‚†‚|ŠŠ‚ˆŒ‡‡‰Œ„€……€„€„}‚„ˆ„‰€†€}‰ƒƒ€†‡€ƒ†…‰~‚†…€…Œ‚Ž……}‰ƒ‚~€Š†pƒ†‡†‹ƒ†~„…†ƒˆ…|}‚ƒ„~€Š’ƒ‚ƒ…‰{y‘€ƒƒƒ„‰ŠƒŠ„‚€†}‡†€‚„†~‰}‹ƒ~€†ƒ‡ˆ„‚‰‹„„‚…†€‡Š…€~Š„‚ƒ‚‡€Š†ŽƒŽ‰…€ƒƒlŽ…‡ˆ†~†‘~„„ƒ‚€ˆ~„y~‡€~‡}†‡ƒ~†††ˆ…„‚†ƒƒ„„ƒ…„†‰„{ˆ„„ƒˆy‚…ƒˆwƒ„ƒƒ‚‹„‚…}‚…‡Š‡‡‚‰‚ƒ‡†…‡…ƒ†‡ƒ€€ˆ‚‹z†Š„‚‡‚~Œ†€ˆ†~‡zwƒ…‰ƒ‘„…Œ€…Šƒ‰‡‡z†|އ„ƒ€‚„„y‡ƒ|€Žˆy…‹ƒ„ƒˆ…†‰…ƒ†„‚„ˆ„‡‰‹{‚{ƒ€‹„ˆ‡†~‚ƒ€‹…~„ƒq…Œ…‚„ˆ{‰‹†€‚ˆƒ…€†z€†€…‡|„އŒƒ‰‹‚…Ž{ˆ||ˆ†|‡ƒƒˆŠ„Šƒ|ŒˆŠ‰}‡‡„†ˆƒ†ƒƒ„††‡ˆƒ‚„…‚ƒ€‰ƒƒƒƒ„†‡‹‚‡ƒ††ƒƒ†‚‚„„‰†††€ƒ…„‚ˆ‰„ƒ‡‚„„ƒ…†‚†‰„†‡ƒ…‰…~†„ƒ‰†…ˆ‰…„‰‚~†‡„€†€‡ƒƒ†€„†…‚‰…‡†€‡‡‡„ˆ|†ˆƒ†ƒ‰y†u‚…‡Šƒ}„‡ˆ„…‡„„†ƒˆƒ}†€~……‚‚€€†€‡ƒ„……‚„}ƒˆƒƒ…}…‰…‡ˆ‡„‡††z|„„~†‡€„ˆˆ‚‚†„ˆ…†‡€‰zˆ}„ˆ„€ƒ~ƒ…„†ƒ„‰‡ƒŠ€‰„z…||„‚„‚„ƒˆ‰…ƒ‹€‰ƒ‚„ƒ|‚Ї„‚„‰‚‡Š„„ƒ‚€ƒƒ„„ˆ‡ƒ‰„~„‚…‚|ƒƒŒ„ƒ€„†…„……†‰ƒ„„†„„…~€ƒ„„„ƒƒ†‰†††ƒ†…~ˆ~ƒŠ‚ƒ„Œ†|~}|‹€‡‡‰€ˆz€…Œ‚†‡Š€€‰†…Šˆ~…ƒ„‚Š|††……z…†…„‚ƒ€‹~„‚ƒv†€€‡„…‘ƒˆŠ|ƒ‚…~‹ŽtЇ}ƒ‹†…Œ~€…†‚€‰‰…„~„††‚ƒˆ~’…ˆˆˆ‡‡|}ƒ}}}ƒ„|ˆ|ƒˆ€|–ƒ…†ˆ€Œu‡„{{€ƒ…„vŽ…zˆ€ˆ…Œ}…†‰‡‰…†‰…ƒ€‡†…†…„………†„†Š‚~ƒ‚†€‚…ƒ…ˆ‰‹Š‡‚‚|……}‚ƒ…‰‚~€€ˆˆƒ…~‚~†‹„ˆ‚ˆz€‰‡‚{€€„ˆƒ„€ˆ€†|~…ˆ…€ƒˆ€€„€‹†‚{‚€ˆ„ˆ„‚€Œ……ƒ„‚€…~‹„„‡„{ƒˆ‰ƒ‚€…††‚„“ƒ…‚„ƒ‰}€}„Šˆ…†„†„ƒ~~†‡€†‰„…ƒ‡‰ƒƒ‡ƒ…ˆ……ƒƒŽ‡~{ƒ…|…ˆ{z„}„„~w…‰ˆ‰„†x„…}€ˆ…‚|†Š„‚„†„І…„~€ˆ†ˆ„…„ƒ‚}†ƒ…‡‡ƒ…~„…ƒ…€‚…‚ˆ††€‚~ƒ‰‰‡„Œ‚ƒˆ„‡…ƒƒ†€„†……‡„…„„………‚ƒ‚ˆ‚ƒƒ‡‹…‡ƒ…€€„ƒ…‚„„…„†ƒ€‡…€~‰ƒ€†ˆ…ƒ~„}ˆ‚‚‚††}†„„ƒ„…‚€€‹‚†……„ˆu……ˆƒ‹ˆ‡€‡†„‰ˆƒ‰…„†€‚†…‡‚†‡‚„}…‚ƒ…ƒ„Ž…~†…ƒ„€ˆˆ„‡……„ƒ‰€€„€…ƒ‰‚†}‡‡‚ƒ………‚†…‡~‰ˆˆˆ‡„‹|„†ƒ„†ƒ}†Š„„Œ€|€Š‚„ƒŠ…‹Š‡ƒƒ…‡„„ƒ„ƒ€ƒ‡‚…†…‚ƒƒ‚w†}~ƒŒ‚‡ƒ€Œ‹„„„‚ˆ‰‚†…€‹‡‚‚€ˆ}‹ˆƒ‹‡…‹†„‡€y‡y…Šx‘‹‡…Œ‚ƒ}…~€€ƒ…„“‰€{†‹‚‡‘y„†…‚‚„‡ƒ†‚…ƒ†„…ƒ…‚„ƒ†„ˆ„†ƒ‚‡„ƒƒƒƒˆ‰„€ƒ†ƒ†…†‰…‚‚‰‚ƒ„ƒˆ‚„…ˆŠ…†……†ˆ…€„ƒ†„„ˆ„„„„€…‡ƒ‚‰ƒ……ƒ…‚~‚„†‚…Š„…‚†‚‚‚‚‚„…‚‚‡ƒƒƒˆ‡„‡~„ƒ„ˆ‚ƒ„…†„‚†Š„ƒ‰z‚ˆ†‹„…„…†ƒ…ƒy†ƒ……‡‡‚‡‚…„€ƒ„ƒ‹……†ˆŠŠˆ‡‚„„‚ƒˆ‡ƒ†…ƒ…†ˆ…{„†„ƒ‰‰ˆ†z„„…ƒƒ‹‚ˆ„z„‚€†ƒ‚†„ƒ‰w‹Šƒ‚~‰‚‰€ƒ‹…††‹„‚ƒ|ƒ‡w„ˆ‚ƒ„†Žƒ|†„‚‚„†‚‹…‡„‚Œ„ƒu‰„ƒˆ„ƒ†‚y~‰}‰–†z‚zƒ‚‚‚ˆ†‚‚x‹†ƒ†‹‰}{‰…{ƒ{ƒˆ~‹‚‡ƒt€„„x}‡Žˆ‰…Ž„|Š~|‰Š€†‚‰ˆ‹Š{ƒ…ƒ‡s{‚…€Š‘‹Š†ƒ€…‹‡…„…ƒ†‰‰‚ƒ…€‰ƒ††ˆ‚‚ƒ„„ƒ~‚„€€|{…‰ƒ„‚‚„…ƒ…~„…‰~„zƒƒ‰‡ƒˆˆ‚~†‰…„…‰ƒ€Œ}†ƒ€„Œ†yƒ~†|ƒ~†Š”}‚‚‚ˆ…‰„ˆˆ†~‚„ƒ„„‚€‡†‚„‡ƒ€‹„ƒ‡ƒ†…‡ƒ‚‡ƒ‹‡…‡‚„„„ƒ„|{…„ˆ‡€†‡‡ˆŒ††ƒ…‚‚Œ…‚…ƒ„z€‡ƒ‚†Œˆ‚~†ˆ„ƒƒ…}}ƒ€‡ƒ}…€„ƒˆ………€‰‚€zŠƒ~Š}€u…ƒ…xƒƒ„…‚‡‚†ˆŠ†ƒˆ‡z†ƒƒˆ„‡ˆƒ…Œ…†…ˆ†††€…x{ƒ…ƒ~‚†…ƒ„‡ˆ…„‡ƒ‚~‘~…~ƒƒˆ‡††„‚€ˆ‚‹‚‹Š‹‹‰€}tˆ‚‚…Œƒƒ„…}……މ‚}…„€}ˆŠ‰‚Œ}‘Šz‚y‰……~†~†ƒ†‚…ƒ‚………†„„‰†‚‡~‚„†„ƒ…ƒ†ƒ„ˆ†„ƒƒ‚‚†„†…‡‚‚„~†Š††€……‡ƒ‚…„…„ˆ„„„„†‡……‡††‚‚‚„‚Šƒ†††„…‰‚~ƒ†„†ƒ‡„…‚†‚…‡‡Š‚„ƒ€ƒ‡ƒƒƒ„…ˆˆ„ƒ„‚………„ˆ‰†~„ˆˆƒ„„„„…‡„†‚|ƒ……€ƒŠƒ‡‚ƒ~„€~‰………Š‚‚‰~„~„‰„v‰}ƒ‚‹ˆ„„€ƒƒ…‚…†…‚…‚x‚‰…„‰…„†„„‰…‡‹‚‚ƒ†„Šˆ‰„‡ˆ‹ˆ~ˆˆ}„‡…†‚ƒŽ‰…†…€‚}ˆƒˆ„„~„†„‚…ƒ‡{…ƒƒƒ„†‚„ˆ€‡…‚|„…‚„Œ…ˆ„‚……†yŠ~„‡‚‡y†„…ƒ‚‡†ƒˆ„†‚€‚‡„ŽŒ„„z~…„€ˆ}‹‡ˆ‚ˆˆ…}Š€€†…~|ƒ}‘x„…†‡„€Œ†yƒŒ{„‰ˆ{„…Œ‹……ƒ}Œ…}……ƒ~„…ƒ‚ƒ…ƒ†ƒ€…†‰†„†Œ‰‰‡‡ƒƒ~ƒ‰{‡…ƒ‰†ƒƒ„ƒ‡‚„…‹}„„ƒˆ€ƒ„v}‚‚ˆ€†ˆ…}‹‡v…‹ˆŠ†‹„x…|…‡„„‡†ˆˆ€{ƒ„ˆ€ˆ€‹ƒ†‹ˆ€~z……„w††x…w‚„„~Š…ƒ€„ƒ……„€„‰|~}‚„‹‡ƒ‡…Š‚ƒ„w…Š€ƒ‡……z‰ƒŒƒ†ˆ}„ƒ†„‰„}††|„Š„€…„ƒŒ†ˆ‰Œ‡‡‘€„ˆ~‚Š…„„€„‚‡ŠŒ„†€}†ƒ‡‰}‚…{‚Ž…}…Ž…ƒ……†ˆƒƒz…‡„„‚†{‡„{†„…‡ˆ„„†…€…††ƒ‡„‚ƒ…ˆ‰y…‹‚…ƒˆ…‘…‡…†‡‚…‰€‰†„€ƒƒ…†ƒˆ†‰Œ‚ƒƒ„‡}†ˆ€~‰‡€„‰‡‚„ƒƒ€‡ƒˆ†‡x†}†‚……x€‰„„’ˆŽ„„†Š€‚~‚…‚…Œ‡‚ˆ‚†…„…†…†‚…‡†…„‡„ˆ‘ƒ€„ƒ††‰„‡†‰~…‡uƒ†…‹ƒ…‚|„‚‚‚€…„ˆ€‚‚‚‚„ƒ‚‹{ˆŒ‚…ƒ†‰†…„„€„‚€‡„€‚ƒ‰ƒ‰Œ‰‡„‰ƒ‚‚‹‚ƒ…‚…ˆ……‚~‰†„ƒ€|†ˆ~‚‚„‚ƒˆ„ƒ…|……€„„‚……‚‚ƒˆŠ|…ƒ‡‡ƒ„‡……„€‚v†‡ˆ‰€‚ƒƒ…‰‡€‡…ƒ……‚…„€€ƒˆ‰†‚†ˆy†€ˆˆ’†‡„‡…‡„„„„Š‘…ƒ€†„ƒ…|‰€€ƒ‡Œ‚†ˆ„‚„‰ŒŒ†‰€‚‹€~ƒˆ…€„‹„†„…„w„Šz†‡|yƒ……‡ƒ€„‰„†‰‡„~Ї‹€ƒ‹†|†……€…„……„……ƒ‚†ˆŠ„{ˆ‚‚‚…„„‚‡…ˆ‚ˆ‚‰‡„‰‡ƒ„z„ƒŠ}ƒŠ…ˆ‰‡Œ}‰„…“ƒ€‚€†ˆƒ‹€ƒ††€†ˆ‡‚…Šˆ‚„†‚‡…‚††€‚„„}‹{‚†~„†ƒ‚„‚ƒƒ€…}…‚…ˆ…|„ƒ†„„ƒ……~‚‡~ƒ†‚†…‰€Šƒ€’‚€†„‚ƒ|ƒ„‚†€‚€„y‰‚‚‹ƒ††‰ƒ‰~‡†‡v}‰y†~…€ƒ…†‰Š†„„‡„‚}…€‹€ƒ„ƒ…ƒ„‡ˆŠ††…‰††„„ˆ††……Š}‡…ƒ…‚‰ƒŠ……€„ˆ†„††…ƒ‡€„Š„€„}ˆ‰‚††„Œ‚†ˆ‰„‰ƒ†„„ƒ‚~~~~}z€ˆ‡†ƒ‡„|„„„†zˆ†€‰€ƒ†„„ƒƒ‰…ƒ…„Š…„†‡|†…ƒ†…ƒ‡‚…Œ‡„„‡|‚„ƒ…ƒ‡„„†Š€†…†„‚}†ƒ…ƒ†…‡„„„ƒƒ„…„…„ˆ„…‡„…‚‡‚ƒƒ…†‚‡ƒ‡„ˆ…††ƒƒ‚ƒ…†ƒ……„ƒŠŒŒ„‡…„ˆ†ƒƒƒƒ†„~„Šˆ~…‰„~ˆˆƒƒ…‘ƒ…v€ˆ‚„ƒ‚|z„ƒ‹}„„„„ƒ„‚}‚†r‚‚€}‚ˆˆ}†…z„‚……Ž‚y~„ˆ‡€ƒƒ„†‡‡|‚…‡‚…ˆ‡‡„†z‹Š‚‚z‹†}‡†‡†€Œ…}ƒˆz‚ƒ†ƒ…ЂЀ‹ˆ†|‚}‰„„ˆ…‚ƒ…ƒƒ„z‚€ƒ„‡€ƒ…{………‡‡ƒ‚„…‡ˆ‚‚zˆ‹„‰ƒ{ƒ†„…|…ЇƒŒ~}~ˆ†ˆ„€†}‰„‡‚‚ˆˆ€ˆ†{†…‚‰…z†…}ƒ‚‰„ƒ‹‡~…ƒƒƒ‹‰‚…„€‰}†‡†ˆ}€€„†Œ|†}ƒŠ„„…„…Š„‚}‚ƒ†„………†ƒy‚‹‚‘ˆ„„„„…‚vƒ‡‚ƒ„‰}†y†‹‡„‡‚„…Žy‰‚€€„ˆ†‹‘€ƒ„‚†‚„‡x‰ƒŠ‡„‚‹‚…{}‹‚€†‹ƒƒŠ}Œ‰wƒ††‡†…„†‡€„‚„‹‹|†ƒ‡€†€„†‹ƒƒ††xˆ…~†…„~ƒƒ‡ƒ‹|ƒ~‚‚ƒ…„‚„ƒ‡€†‚…}…ƒ††…‡‡†…ƒ„„ˆ‹„}†…}‡‡„‰ƒ‰‰…ˆ{†~€ƒ…}Šƒ‚‹ƒ~„„…ƒ…€}‡‰††‰…{††‰Œƒy„Š…ƒ‡…„‚~ƒ‚„‡€ƒ„…„ƒƒ†‚…ˆ…‚„‡‡€ƒ~„ƒ†„‚„„ƒ†‚‰„€…ƒ‚…‚„ˆ‚ƒ€†„ƒ‡ƒ†‡‚„„{ƒ‹………{„„†…ˆ‚ƒ†}‚†…‰„„ƒ„ˆ‡~ˆ‚…‚ƒ…‘…ˆ„ˆƒ‡……ˆ†ƒ„‚ƒx…†„‚„†‡‡‰~„…‡‰†„……„…‰……†‡‚‰ƒ‚~„‰ˆ…†„‡ˆˆ„t„€Š~„……|„‚w€†ƒ‚‡‚†ˆ~„…‡‰†‰„ˆ‚†‡ƒˆ†ƒŠ€‡†‰~„………ƒƒ‰€ˆ‹„†x‰†Ž„Œz‹Š‚‰~m‚††‰…„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ ©3a”˜U!{„v1U¢O¾^Rjo-EP? ³ˆ`qFX_ 5i¢sfeŒL ‚d_[?“`«WNXgVTo¥L&_VC!DJ+iQ!;>1šI¼¯Ÿ{qž¡5kL*i1bEƒ«g~z?‚I€ŽÅ{ln eX=^H‡½ÿJY1ÍÌ ½ÍÌ ½ff†=ff†=†¡a½ÃоÃа=ÃÐ >Ãо†¡a½ÃÐ >Ãа=ÍÌ ½ÐÌL»ff†=ffÆ=†¡a½†¡Á½Ãа=ÃÐ@>Ãо CüÃÐ >ÃÐð=ÍÌ ½ff憡a½†¡½Ãа=ÃÐ`>ÃоÐóò;ÃÐ >bh>ÍÌ ½33s=ff†=33#>†¡a½ C½Ãа=bh€>Ãоz^=ÃÐ >bh8>ÍÌ ½š™¹=ff†=33C>†¡a½ÃPºÃа=bh>Ãо=/=ÃÐ >bhX>ÍÌ ½š™ù=ff†=33c>†¡a½èyù<Ãа=bh >Ãо=/Ï=ÃÐ >bhx>ÍÌ ½ÍÌ>ff†=š™>†¡a½ô¼|=Ãа=bh°>Ãоž—>ÃÐ >14Œ>ÍÌ ½ÍÌ<>ff†=š™‘>†¡a½z^¾=Ãа=bhÀ>Ãоž—'>ÃÐ >14œ>ÍÌ ½ÍÌ\>ff†=š™¡>†¡a½z^þ=Ãа=bhÐ>Ãоž—G>ÃÐ >14¬>ÍÌ ½ÍÌ|>ff†=š™±>†¡a½=/>Ãа=bhà>Ãоž—g>ÃÐ >14¼>ÍÌ ½ffŽ>ff†=š™Á>†¡a½=/?>Ãа=bhð>ÃоÏ˃>ÃÐ >14Ì>ÍÌ ½ffž>ff†=š™Ñ>†¡a½=/_>Ãа=14?ÃоÏË“>ÃÐ >14Ü>ÍÌ ½ff®>ff†=š™á>†¡a½=/>Ãа=14?ÃоÏË£>ÃÐ >14ì>ÍÌ ½ff¾>ff†=š™ñ>†¡a½ž—>Ãа=14?ÃоÏ˳>ÃÐ >14ü>ÍÌ ½ffÎ>ff†=ÍÌ?†¡a½ž—Ÿ>Ãа=14?ÃоÏËÃ>ÃÐ >?ÍÌ ½ffÞ>ff†=ÍÌ?†¡a½ž—¯>Ãа=14 ?ÃоÏËÓ>ÃÐ >?ÍÌ ½ffî>ff†=ÍÌ?†¡a½ž—¿>Ãа=14(?ÃоÏËã>ÃÐ >?ÍÌ ½ffþ>ff†=ÍÌ?†¡a½ž—Ï>Ãа=140?ÃоÏËó>ÃÐ >?ÍÌ ½33?ff†=ÍÌ ?†¡a½ž—ß>Ãа=148?Ãоèå?ÃÐ >&?ÍÌ ½33?ff†=ÍÌ(?†¡a½ž—ï>Ãа=14@?Ãоèå ?ÃÐ >.?ÍÌ ½33?ff†=ÍÌ0?†¡a½ž—ÿ>Ãа=14H?Ãоèå?ÃÐ >6?ÍÌ ½33?ff†=ÍÌ8?†¡a½ÏË?Ãа=14P?Ãоèå?ÃÐ >>?ÍÌ ½33'?ff†=ÍÌ@?†¡a½ÏË?Ãа=14X?Ãоèå!?ÃÐ >F?ÍÌ ½33/?ff†=ÍÌH?†¡a½ÏË?Ãа=14`?Ãоèå)?ÃÐ >N?ÍÌ ½337?ff†=ÍÌP?†¡a½ÏË?Ãа=14h?Ãоèå1?ÃÐ >V?ÍÌ ½33??ff†=ÍÌX?†¡a½ÏË'?Ãа=14p?Ãоèå9?ÃÐ >^?ÍÌ ½33G?ff†=ÍÌ`?†¡a½ÏË/?Ãа=14x?ÃоèåA?ÃÐ >f?ÍÌ ½33O?ff†=ÍÌh?†¡a½ÏË7?Ãа=€?ÃоèåI?ÃÐ >n?ÍÌ ½33W?ff†=ÍÌp?†¡a½ÏË??Ãа=„?ÃоèåQ?ÃÐ >v?ÍÌ ½33_?ff†=ÍÌx?†¡a½ÏËG?Ãа=ˆ?ÃоèåY?ÃÐ >~?ÍÌ ½33g?ff†=ff€?†¡a½ÏËO?Ãа=Œ?Ãоèåa?ÃÐ > ƒ?ÍÌ ½33o?ff†=ff„?†¡a½ÏËW?Ãа=?Ãоèåi?ÃÐ > ‡?ÐÌL»ÍÌ ½ffÆ=ff†= CüÃоÃÐð=ÃÐ >†¡Á½†¡a½ÃÐ@>Ãа=ÐÌL»ÐÌL»ffÆ=ffÆ= Cü†¡Á½ÃÐð=ÃÐ@>†¡Á½ CüÃÐ@>ÃÐð=ÐÌL»ffæ Cü†¡½ÃÐð=ÃÐ`>†¡Á½Ðóò;ÃÐ@>bh>ÐÌL»33s=ffÆ=33#> Cü C½ÃÐð=bh€>†¡Á½z^=ÃÐ@>bh8>ÐÌL»š™¹=ffÆ=33C> CüÃPºÃÐð=bh>†¡Á½=/=ÃÐ@>bhX>ÐÌL»š™ù=ffÆ=33c> Cüèyù<ÃÐð=bh >†¡Á½=/Ï=ÃÐ@>bhx>ÐÌL»ÍÌ>ffÆ=š™> Cüô¼|=ÃÐð=bh°>†¡Á½ž—>ÃÐ@>14Œ>ÐÌL»ÍÌ<>ffÆ=š™‘> Cüz^¾=ÃÐð=bhÀ>†¡Á½ž—'>ÃÐ@>14œ>ÐÌL»ÍÌ\>ffÆ=š™¡> Cüz^þ=ÃÐð=bhÐ>†¡Á½ž—G>ÃÐ@>14¬>ÐÌL»ÍÌ|>ffÆ=š™±> Cü=/>ÃÐð=bhà>†¡Á½ž—g>ÃÐ@>14¼>ÐÌL»ffŽ>ffÆ=š™Á> Cü=/?>ÃÐð=bhð>†¡Á½Ï˃>ÃÐ@>14Ì>ÐÌL»ffž>ffÆ=š™Ñ> Cü=/_>ÃÐð=14?†¡Á½ÏË“>ÃÐ@>14Ü>ÐÌL»ff®>ffÆ=š™á> Cü=/>ÃÐð=14?†¡Á½ÏË£>ÃÐ@>14ì>ÐÌL»ff¾>ffÆ=š™ñ> Cüž—>ÃÐð=14?†¡Á½Ï˳>ÃÐ@>14ü>ÐÌL»ffÎ>ffÆ=ÍÌ? Cüž—Ÿ>ÃÐð=14?†¡Á½ÏËÃ>ÃÐ@>?ÐÌL»ffÞ>ffÆ=ÍÌ? Cüž—¯>ÃÐð=14 ?†¡Á½ÏËÓ>ÃÐ@>?ÐÌL»ffî>ffÆ=ÍÌ? Cüž—¿>ÃÐð=14(?†¡Á½ÏËã>ÃÐ@>?ÐÌL»ffþ>ffÆ=ÍÌ? Cüž—Ï>ÃÐð=140?†¡Á½ÏËó>ÃÐ@>?ÐÌL»33?ffÆ=ÍÌ ? Cüž—ß>ÃÐð=148?†¡Á½èå?ÃÐ@>&?ÐÌL»33?ffÆ=ÍÌ(? Cüž—ï>ÃÐð=14@?†¡Á½èå ?ÃÐ@>.?ÐÌL»33?ffÆ=ÍÌ0? Cüž—ÿ>ÃÐð=14H?†¡Á½èå?ÃÐ@>6?ÐÌL»33?ffÆ=ÍÌ8? CüÏË?ÃÐð=14P?†¡Á½èå?ÃÐ@>>?ÐÌL»33'?ffÆ=ÍÌ@? CüÏË?ÃÐð=14X?†¡Á½èå!?ÃÐ@>F?ÐÌL»33/?ffÆ=ÍÌH? CüÏË?ÃÐð=14`?†¡Á½èå)?ÃÐ@>N?ÐÌL»337?ffÆ=ÍÌP? CüÏË?ÃÐð=14h?†¡Á½èå1?ÃÐ@>V?ÐÌL»33??ffÆ=ÍÌX? CüÏË'?ÃÐð=14p?†¡Á½èå9?ÃÐ@>^?ÐÌL»33G?ffÆ=ÍÌ`? CüÏË/?ÃÐð=14x?†¡Á½èåA?ÃÐ@>f?ÐÌL»33O?ffÆ=ÍÌh? CüÏË7?ÃÐð=€?†¡Á½èåI?ÃÐ@>n?ÐÌL»33W?ffÆ=ÍÌp? CüÏË??ÃÐð=„?†¡Á½èåQ?ÃÐ@>v?ÐÌL»33_?ffÆ=ÍÌx? CüÏËG?ÃÐð=ˆ?†¡Á½èåY?ÃÐ@>~?ÐÌL»33g?ffÆ=ff€? CüÏËO?ÃÐð=Œ?†¡Á½èåa?ÃÐ@> ƒ?ÐÌL»33o?ffÆ=ff„? CüÏËW?ÃÐð=?†¡Á½èåi?ÃÐ@> ‡?ffæ<ÍÌ ½33>ff†=Ðóò;Ãоbh>ÃÐ >†¡½†¡a½ÃÐ`>Ãа=ffæ<ÐÌL»33>ffÆ=Ðóò;†¡Á½bh>ÃÐ@>†¡½ CüÃÐ`>ÃÐð=ffæ33>Ðóò;†¡½bh>ÃÐ`>†¡½Ðóò;ÃÐ`>bh>ffæ<33s=33>33#>Ðóò; C½bh>bh€>†¡½z^=ÃÐ`>bh8>ffæ<š™¹=33>33C>Ðóò;ÃPºbh>bh>†¡½=/=ÃÐ`>bhX>ffæ<š™ù=33>33c>Ðóò;èyùbh >†¡½=/Ï=ÃÐ`>bhx>ffæ<ÍÌ>33>š™>Ðóò;ô¼|=bh>bh°>†¡½ž—>ÃÐ`>14Œ>ffæ<ÍÌ<>33>š™‘>Ðóò;z^¾=bh>bhÀ>†¡½ž—'>ÃÐ`>14œ>ffæ<ÍÌ\>33>š™¡>Ðóò;z^þ=bh>bhÐ>†¡½ž—G>ÃÐ`>14¬>ffæ<ÍÌ|>33>š™±>Ðóò;=/>bh>bhà>†¡½ž—g>ÃÐ`>14¼>ffæ33>š™Á>Ðóò;=/?>bh>bhð>†¡½Ï˃>ÃÐ`>14Ì>ffæ33>š™Ñ>Ðóò;=/_>bh>14?†¡½ÏË“>ÃÐ`>14Ü>ffæ33>š™á>Ðóò;=/>bh>14?†¡½ÏË£>ÃÐ`>14ì>ffæ33>š™ñ>Ðóò;ž—>bh>14?†¡½Ï˳>ÃÐ`>14ü>ffæ33>ÍÌ?Ðóò;ž—Ÿ>bh>14?†¡½ÏËÃ>ÃÐ`>?ffæ33>ÍÌ?Ðóò;ž—¯>bh>14 ?†¡½ÏËÓ>ÃÐ`>?ffæ33>ÍÌ?Ðóò;ž—¿>bh>14(?†¡½ÏËã>ÃÐ`>?ffæ33>ÍÌ?Ðóò;ž—Ï>bh>140?†¡½ÏËó>ÃÐ`>?ffæ<33?33>ÍÌ ?Ðóò;ž—ß>bh>148?†¡½èå?ÃÐ`>&?ffæ<33?33>ÍÌ(?Ðóò;ž—ï>bh>14@?†¡½èå ?ÃÐ`>.?ffæ<33?33>ÍÌ0?Ðóò;ž—ÿ>bh>14H?†¡½èå?ÃÐ`>6?ffæ<33?33>ÍÌ8?Ðóò;ÏË?bh>14P?†¡½èå?ÃÐ`>>?ffæ<33'?33>ÍÌ@?Ðóò;ÏË?bh>14X?†¡½èå!?ÃÐ`>F?ffæ<33/?33>ÍÌH?Ðóò;ÏË?bh>14`?†¡½èå)?ÃÐ`>N?ffæ<337?33>ÍÌP?Ðóò;ÏË?bh>14h?†¡½èå1?ÃÐ`>V?ffæ<33??33>ÍÌX?Ðóò;ÏË'?bh>14p?†¡½èå9?ÃÐ`>^?ffæ<33G?33>ÍÌ`?Ðóò;ÏË/?bh>14x?†¡½èåA?ÃÐ`>f?ffæ<33O?33>ÍÌh?Ðóò;ÏË7?bh>€?†¡½èåI?ÃÐ`>n?ffæ<33W?33>ÍÌp?Ðóò;ÏË??bh>„?†¡½èåQ?ÃÐ`>v?ffæ<33_?33>ÍÌx?Ðóò;ÏËG?bh>ˆ?†¡½èåY?ÃÐ`>~?ffæ<33g?33>ff€?Ðóò;ÏËO?bh>Œ?†¡½èåa?ÃÐ`> ƒ?ffæ<33o?33>ff„?Ðóò;ÏËW?bh>?†¡½èåi?ÃÐ`> ‡?33s=ÍÌ ½33#>ff†=z^=Ãоbh8>ÃÐ > C½†¡a½bh€>Ãа=33s=ÐÌL»33#>ffÆ=z^=†¡Á½bh8>ÃÐ@> C½ Cübh€>ÃÐð=33s=ffæ<33#>33>z^=†¡½bh8>ÃÐ`> C½Ðóò;bh€>bh>33s=33s=33#>33#>z^= C½bh8>bh€> C½z^=bh€>bh8>33s=š™¹=33#>33C>z^=ÃPºbh8>bh> C½=/=bh€>bhX>33s=š™ù=33#>33c>z^=èyùbh > C½=/Ï=bh€>bhx>33s=ÍÌ>33#>š™>z^=ô¼|=bh8>bh°> C½ž—>bh€>14Œ>33s=ÍÌ<>33#>š™‘>z^=z^¾=bh8>bhÀ> C½ž—'>bh€>14œ>33s=ÍÌ\>33#>š™¡>z^=z^þ=bh8>bhÐ> C½ž—G>bh€>14¬>33s=ÍÌ|>33#>š™±>z^==/>bh8>bhà> C½ž—g>bh€>14¼>33s=ffŽ>33#>š™Á>z^==/?>bh8>bhð> C½Ï˃>bh€>14Ì>33s=ffž>33#>š™Ñ>z^==/_>bh8>14? C½ÏË“>bh€>14Ü>33s=ff®>33#>š™á>z^==/>bh8>14? C½ÏË£>bh€>14ì>33s=ff¾>33#>š™ñ>z^=ž—>bh8>14? C½Ï˳>bh€>14ü>33s=ffÎ>33#>ÍÌ?z^=ž—Ÿ>bh8>14? C½ÏËÃ>bh€>?33s=ffÞ>33#>ÍÌ?z^=ž—¯>bh8>14 ? C½ÏËÓ>bh€>?33s=ffî>33#>ÍÌ?z^=ž—¿>bh8>14(? C½ÏËã>bh€>?33s=ffþ>33#>ÍÌ?z^=ž—Ï>bh8>140? C½ÏËó>bh€>?33s=33?33#>ÍÌ ?z^=ž—ß>bh8>148? C½èå?bh€>&?33s=33?33#>ÍÌ(?z^=ž—ï>bh8>14@? C½èå ?bh€>.?33s=33?33#>ÍÌ0?z^=ž—ÿ>bh8>14H? C½èå?bh€>6?33s=33?33#>ÍÌ8?z^=ÏË?bh8>14P? C½èå?bh€>>?33s=33'?33#>ÍÌ@?z^=ÏË?bh8>14X? C½èå!?bh€>F?33s=33/?33#>ÍÌH?z^=ÏË?bh8>14`? C½èå)?bh€>N?33s=337?33#>ÍÌP?z^=ÏË?bh8>14h? C½èå1?bh€>V?33s=33??33#>ÍÌX?z^=ÏË'?bh8>14p? C½èå9?bh€>^?33s=33G?33#>ÍÌ`?z^=ÏË/?bh8>14x? C½èåA?bh€>f?33s=33O?33#>ÍÌh?z^=ÏË7?bh8>€? C½èåI?bh€>n?33s=33W?33#>ÍÌp?z^=ÏË??bh8>„? C½èåQ?bh€>v?33s=33_?33#>ÍÌx?z^=ÏËG?bh8>ˆ? C½èåY?bh€>~?33s=33g?33#>ff€?z^=ÏËO?bh8>Œ? C½èåa?bh€> ƒ?33s=33o?33#>ff„?z^=ÏËW?bh8>? C½èåi?bh€> ‡?š™¹=ÍÌ ½33C>ff†==/=ÃоbhX>ÃÐ >ÃPº†¡a½bh>Ãа=š™¹=ÐÌL»33C>ffÆ==/=†¡Á½bhX>ÃÐ@>ÃPº Cübh>ÃÐð=š™¹=ffæ<33C>33>=/=†¡½bhX>ÃÐ`>ÃPºÐóò;bh>bh>š™¹=33s=33C>33#>=/= C½bhX>bh€>ÃPºz^=bh>bh8>š™¹=š™¹=33C>33C>=/=ÃPºbhX>bh>ÃPº=/=bh>bhX>š™¹=š™ù=33C>33c>=/=èyùbh >ÃPº=/Ï=bh>bhx>š™¹=ÍÌ>33C>š™>=/=ô¼|=bhX>bh°>ÃPºž—>bh>14Œ>š™¹=ÍÌ<>33C>š™‘>=/=z^¾=bhX>bhÀ>ÃPºž—'>bh>14œ>š™¹=ÍÌ\>33C>š™¡>=/=z^þ=bhX>bhÐ>ÃPºž—G>bh>14¬>š™¹=ÍÌ|>33C>š™±>=/==/>bhX>bhà>ÃPºž—g>bh>14¼>š™¹=ffŽ>33C>š™Á>=/==/?>bhX>bhð>ÃPºÏ˃>bh>14Ì>š™¹=ffž>33C>š™Ñ>=/==/_>bhX>14?ÃPºÏË“>bh>14Ü>š™¹=ff®>33C>š™á>=/==/>bhX>14?ÃPºÏË£>bh>14ì>š™¹=ff¾>33C>š™ñ>=/=ž—>bhX>14?ÃPºÏ˳>bh>14ü>š™¹=ffÎ>33C>ÍÌ?=/=ž—Ÿ>bhX>14?ÃPºÏËÃ>bh>?š™¹=ffÞ>33C>ÍÌ?=/=ž—¯>bhX>14 ?ÃPºÏËÓ>bh>?š™¹=ffî>33C>ÍÌ?=/=ž—¿>bhX>14(?ÃPºÏËã>bh>?š™¹=ffþ>33C>ÍÌ?=/=ž—Ï>bhX>140?ÃPºÏËó>bh>?š™¹=33?33C>ÍÌ ?=/=ž—ß>bhX>148?ÃPºèå?bh>&?š™¹=33?33C>ÍÌ(?=/=ž—ï>bhX>14@?ÃPºèå ?bh>.?š™¹=33?33C>ÍÌ0?=/=ž—ÿ>bhX>14H?ÃPºèå?bh>6?š™¹=33?33C>ÍÌ8?=/=ÏË?bhX>14P?ÃPºèå?bh>>?š™¹=33'?33C>ÍÌ@?=/=ÏË?bhX>14X?ÃPºèå!?bh>F?š™¹=33/?33C>ÍÌH?=/=ÏË?bhX>14`?ÃPºèå)?bh>N?š™¹=337?33C>ÍÌP?=/=ÏË?bhX>14h?ÃPºèå1?bh>V?š™¹=33??33C>ÍÌX?=/=ÏË'?bhX>14p?ÃPºèå9?bh>^?š™¹=33G?33C>ÍÌ`?=/=ÏË/?bhX>14x?ÃPºèåA?bh>f?š™¹=33O?33C>ÍÌh?=/=ÏË7?bhX>€?ÃPºèåI?bh>n?š™¹=33W?33C>ÍÌp?=/=ÏË??bhX>„?ÃPºèåQ?bh>v?š™¹=33_?33C>ÍÌx?=/=ÏËG?bhX>ˆ?ÃPºèåY?bh>~?š™¹=33g?33C>ff€?=/=ÏËO?bhX>Œ?ÃPºèåa?bh> ƒ?š™¹=33o?33C>ff„?=/=ÏËW?bhX>?ÃPºèåi?bh> ‡?š™ù=ÍÌ ½33c>ff†==/Ï=Ãоbhx>ÃÐ >èyù<†¡a½bh >Ãа=š™ù=ÐÌL»33c>ffÆ==/Ï=†¡Á½bhx>ÃÐ@>èyù< Cübh >ÃÐð=š™ù=ffæ<33c>33>=/Ï=†¡½bhx>ÃÐ`>èyù<Ðóò;bh >bh>š™ù=33s=33c>33#>=/Ï= C½bhx>bh€>èyùbh8>š™ù=š™¹=33c>33C>=/Ï=ÃPºbhx>bh>èyù<=/=bh >bhX>š™ù=š™ù=33c>33c>=/Ï=èyùbh >èyù<=/Ï=bh >bhx>š™ù=ÍÌ>33c>š™>=/Ï=ô¼|=bhx>bh°>èyù<ž—>bh >14Œ>š™ù=ÍÌ<>33c>š™‘>=/Ï=z^¾=bhx>bhÀ>èyù<ž—'>bh >14œ>š™ù=ÍÌ\>33c>š™¡>=/Ï=z^þ=bhx>bhÐ>èyù<ž—G>bh >14¬>š™ù=ÍÌ|>33c>š™±>=/Ï==/>bhx>bhà>èyù<ž—g>bh >14¼>š™ù=ffŽ>33c>š™Á>=/Ï==/?>bhx>bhð>èyù<Ï˃>bh >14Ì>š™ù=ffž>33c>š™Ñ>=/Ï==/_>bhx>14?èyù<ÏË“>bh >14Ü>š™ù=ff®>33c>š™á>=/Ï==/>bhx>14?èyù<ÏË£>bh >14ì>š™ù=ff¾>33c>š™ñ>=/Ï=ž—>bhx>14?èyù<Ï˳>bh >14ü>š™ù=ffÎ>33c>ÍÌ?=/Ï=ž—Ÿ>bhx>14?èyù<ÏËÃ>bh >?š™ù=ffÞ>33c>ÍÌ?=/Ï=ž—¯>bhx>14 ?èyù<ÏËÓ>bh >?š™ù=ffî>33c>ÍÌ?=/Ï=ž—¿>bhx>14(?èyù<ÏËã>bh >?š™ù=ffþ>33c>ÍÌ?=/Ï=ž—Ï>bhx>140?èyù<ÏËó>bh >?š™ù=33?33c>ÍÌ ?=/Ï=ž—ß>bhx>148?èyù<èå?bh >&?š™ù=33?33c>ÍÌ(?=/Ï=ž—ï>bhx>14@?èyù<èå ?bh >.?š™ù=33?33c>ÍÌ0?=/Ï=ž—ÿ>bhx>14H?èyù<èå?bh >6?š™ù=33?33c>ÍÌ8?=/Ï=ÏË?bhx>14P?èyù<èå?bh >>?š™ù=33'?33c>ÍÌ@?=/Ï=ÏË?bhx>14X?èyù<èå!?bh >F?š™ù=33/?33c>ÍÌH?=/Ï=ÏË?bhx>14`?èyù<èå)?bh >N?š™ù=337?33c>ÍÌP?=/Ï=ÏË?bhx>14h?èyù<èå1?bh >V?š™ù=33??33c>ÍÌX?=/Ï=ÏË'?bhx>14p?èyù<èå9?bh >^?š™ù=33G?33c>ÍÌ`?=/Ï=ÏË/?bhx>14x?èyù<èåA?bh >f?š™ù=33O?33c>ÍÌh?=/Ï=ÏË7?bhx>€?èyù<èåI?bh >n?š™ù=33W?33c>ÍÌp?=/Ï=ÏË??bhx>„?èyù<èåQ?bh >v?š™ù=33_?33c>ÍÌx?=/Ï=ÏËG?bhx>ˆ?èyù<èåY?bh >~?š™ù=33g?33c>ff€?=/Ï=ÏËO?bhx>Œ?èyù<èåa?bh > ƒ?š™ù=33o?33c>ff„?=/Ï=ÏËW?bhx>?èyù<èåi?bh > ‡?ÍÌ>ÍÌ ½š™>ff†=ž—>Ãо14Œ>ÃÐ >ô¼|=†¡a½bh°>Ãа=ÍÌ>ÐÌL»š™>ffÆ=ž—>†¡Á½14Œ>ÃÐ@>ô¼|= Cübh°>ÃÐð=ÍÌ>ffæ<š™>33>ž—>†¡½14Œ>ÃÐ`>ô¼|=Ðóò;bh°>bh>ÍÌ>33s=š™>33#>ž—> C½14Œ>bh€>ô¼|=z^=bh°>bh8>ÍÌ>š™¹=š™>33C>ž—>ÃPº14Œ>bh>ô¼|==/=bh°>bhX>ÍÌ>š™ù=š™>33c>ž—>èyù<14Œ>bh >ô¼|==/Ï=bh°>bhx>ÍÌ>ÍÌ>š™>š™>ž—>ô¼|=14Œ>bh°>ô¼|=ž—>bh°>14Œ>ÍÌ>ÍÌ<>š™>š™‘>ž—>z^¾=14Œ>bhÀ>ô¼|=ž—'>bh°>14œ>ÍÌ>ÍÌ\>š™>š™¡>ž—>z^þ=14Œ>bhÐ>ô¼|=ž—G>bh°>14¬>ÍÌ>ÍÌ|>š™>š™±>ž—>=/>14Œ>bhà>ô¼|=ž—g>bh°>14¼>ÍÌ>ffŽ>š™>š™Á>ž—>=/?>14Œ>bhð>ô¼|=Ï˃>bh°>14Ì>ÍÌ>ffž>š™>š™Ñ>ž—>=/_>14Œ>14?ô¼|=ÏË“>bh°>14Ü>ÍÌ>ff®>š™>š™á>ž—>=/>14Œ>14?ô¼|=ÏË£>bh°>14ì>ÍÌ>ff¾>š™>š™ñ>ž—>ž—>14Œ>14?ô¼|=Ï˳>bh°>14ü>ÍÌ>ffÎ>š™>ÍÌ?ž—>ž—Ÿ>14Œ>14?ô¼|=ÏËÃ>bh°>?ÍÌ>ffÞ>š™>ÍÌ?ž—>ž—¯>14Œ>14 ?ô¼|=ÏËÓ>bh°>?ÍÌ>ffî>š™>ÍÌ?ž—>ž—¿>14Œ>14(?ô¼|=ÏËã>bh°>?ÍÌ>ffþ>š™>ÍÌ?ž—>ž—Ï>14Œ>140?ô¼|=ÏËó>bh°>?ÍÌ>33?š™>ÍÌ ?ž—>ž—ß>14Œ>148?ô¼|=èå?bh°>&?ÍÌ>33?š™>ÍÌ(?ž—>ž—ï>14Œ>14@?ô¼|=èå ?bh°>.?ÍÌ>33?š™>ÍÌ0?ž—>ž—ÿ>14Œ>14H?ô¼|=èå?bh°>6?ÍÌ>33?š™>ÍÌ8?ž—>ÏË?14Œ>14P?ô¼|=èå?bh°>>?ÍÌ>33'?š™>ÍÌ@?ž—>ÏË?14Œ>14X?ô¼|=èå!?bh°>F?ÍÌ>33/?š™>ÍÌH?ž—>ÏË?14Œ>14`?ô¼|=èå)?bh°>N?ÍÌ>337?š™>ÍÌP?ž—>ÏË?14Œ>14h?ô¼|=èå1?bh°>V?ÍÌ>33??š™>ÍÌX?ž—>ÏË'?14Œ>14p?ô¼|=èå9?bh°>^?ÍÌ>33G?š™>ÍÌ`?ž—>ÏË/?14Œ>14x?ô¼|=èåA?bh°>f?ÍÌ>33O?š™>ÍÌh?ž—>ÏË7?14Œ>€?ô¼|=èåI?bh°>n?ÍÌ>33W?š™>ÍÌp?ž—>ÏË??14Œ>„?ô¼|=èåQ?bh°>v?ÍÌ>33_?š™>ÍÌx?ž—>ÏËG?14Œ>ˆ?ô¼|=èåY?bh°>~?ÍÌ>33g?š™>ff€?ž—>ÏËO?14Œ>Œ?ô¼|=èåa?bh°> ƒ?ÍÌ>33o?š™>ff„?ž—>ÏËW?14Œ>?ô¼|=èåi?bh°> ‡?ÍÌ<>ÍÌ ½š™‘>ff†=ž—'>Ãо14œ>ÃÐ >z^¾=†¡a½bhÀ>Ãа=ÍÌ<>ÐÌL»š™‘>ffÆ=ž—'>†¡Á½14œ>ÃÐ@>z^¾= CübhÀ>ÃÐð=ÍÌ<>ffæ<š™‘>33>ž—'>†¡½14œ>ÃÐ`>z^¾=Ðóò;bhÀ>bh>ÍÌ<>33s=š™‘>33#>ž—'> C½14œ>bh€>z^¾=z^=bhÀ>bh8>ÍÌ<>š™¹=š™‘>33C>ž—'>ÃPº14œ>bh>z^¾==/=bhÀ>bhX>ÍÌ<>š™ù=š™‘>33c>ž—'>èyù<14œ>bh >z^¾==/Ï=bhÀ>bhx>ÍÌ<>ÍÌ>š™‘>š™>ž—'>ô¼|=14œ>bh°>z^¾=ž—>bhÀ>14Œ>ÍÌ<>ÍÌ<>š™‘>š™‘>ž—'>z^¾=14œ>bhÀ>z^¾=ž—'>bhÀ>14œ>ÍÌ<>ÍÌ\>š™‘>š™¡>ž—'>z^þ=14œ>bhÐ>z^¾=ž—G>bhÀ>14¬>ÍÌ<>ÍÌ|>š™‘>š™±>ž—'>=/>14œ>bhà>z^¾=ž—g>bhÀ>14¼>ÍÌ<>ffŽ>š™‘>š™Á>ž—'>=/?>14œ>bhð>z^¾=Ï˃>bhÀ>14Ì>ÍÌ<>ffž>š™‘>š™Ñ>ž—'>=/_>14œ>14?z^¾=ÏË“>bhÀ>14Ü>ÍÌ<>ff®>š™‘>š™á>ž—'>=/>14œ>14?z^¾=ÏË£>bhÀ>14ì>ÍÌ<>ff¾>š™‘>š™ñ>ž—'>ž—>14œ>14?z^¾=Ï˳>bhÀ>14ü>ÍÌ<>ffÎ>š™‘>ÍÌ?ž—'>ž—Ÿ>14œ>14?z^¾=ÏËÃ>bhÀ>?ÍÌ<>ffÞ>š™‘>ÍÌ?ž—'>ž—¯>14œ>14 ?z^¾=ÏËÓ>bhÀ>?ÍÌ<>ffî>š™‘>ÍÌ?ž—'>ž—¿>14œ>14(?z^¾=ÏËã>bhÀ>?ÍÌ<>ffþ>š™‘>ÍÌ?ž—'>ž—Ï>14œ>140?z^¾=ÏËó>bhÀ>?ÍÌ<>33?š™‘>ÍÌ ?ž—'>ž—ß>14œ>148?z^¾=èå?bhÀ>&?ÍÌ<>33?š™‘>ÍÌ(?ž—'>ž—ï>14œ>14@?z^¾=èå ?bhÀ>.?ÍÌ<>33?š™‘>ÍÌ0?ž—'>ž—ÿ>14œ>14H?z^¾=èå?bhÀ>6?ÍÌ<>33?š™‘>ÍÌ8?ž—'>ÏË?14œ>14P?z^¾=èå?bhÀ>>?ÍÌ<>33'?š™‘>ÍÌ@?ž—'>ÏË?14œ>14X?z^¾=èå!?bhÀ>F?ÍÌ<>33/?š™‘>ÍÌH?ž—'>ÏË?14œ>14`?z^¾=èå)?bhÀ>N?ÍÌ<>337?š™‘>ÍÌP?ž—'>ÏË?14œ>14h?z^¾=èå1?bhÀ>V?ÍÌ<>33??š™‘>ÍÌX?ž—'>ÏË'?14œ>14p?z^¾=èå9?bhÀ>^?ÍÌ<>33G?š™‘>ÍÌ`?ž—'>ÏË/?14œ>14x?z^¾=èåA?bhÀ>f?ÍÌ<>33O?š™‘>ÍÌh?ž—'>ÏË7?14œ>€?z^¾=èåI?bhÀ>n?ÍÌ<>33W?š™‘>ÍÌp?ž—'>ÏË??14œ>„?z^¾=èåQ?bhÀ>v?ÍÌ<>33_?š™‘>ÍÌx?ž—'>ÏËG?14œ>ˆ?z^¾=èåY?bhÀ>~?ÍÌ<>33g?š™‘>ff€?ž—'>ÏËO?14œ>Œ?z^¾=èåa?bhÀ> ƒ?ÍÌ<>33o?š™‘>ff„?ž—'>ÏËW?14œ>?z^¾=èåi?bhÀ> ‡?ÍÌ\>ÍÌ ½š™¡>ff†=ž—G>Ãо14¬>ÃÐ >z^þ=†¡a½bhÐ>Ãа=ÍÌ\>ÐÌL»š™¡>ffÆ=ž—G>†¡Á½14¬>ÃÐ@>z^þ= CübhÐ>ÃÐð=ÍÌ\>ffæ<š™¡>33>ž—G>†¡½14¬>ÃÐ`>z^þ=Ðóò;bhÐ>bh>ÍÌ\>33s=š™¡>33#>ž—G> C½14¬>bh€>z^þ=z^=bhÐ>bh8>ÍÌ\>š™¹=š™¡>33C>ž—G>ÃPº14¬>bh>z^þ==/=bhÐ>bhX>ÍÌ\>š™ù=š™¡>33c>ž—G>èyù<14¬>bh >z^þ==/Ï=bhÐ>bhx>ÍÌ\>ÍÌ>š™¡>š™>ž—G>ô¼|=14¬>bh°>z^þ=ž—>bhÐ>14Œ>ÍÌ\>ÍÌ<>š™¡>š™‘>ž—G>z^¾=14¬>bhÀ>z^þ=ž—'>bhÐ>14œ>ÍÌ\>ÍÌ\>š™¡>š™¡>ž—G>z^þ=14¬>bhÐ>z^þ=ž—G>bhÐ>14¬>ÍÌ\>ÍÌ|>š™¡>š™±>ž—G>=/>14¬>bhà>z^þ=ž—g>bhÐ>14¼>ÍÌ\>ffŽ>š™¡>š™Á>ž—G>=/?>14¬>bhð>z^þ=Ï˃>bhÐ>14Ì>ÍÌ\>ffž>š™¡>š™Ñ>ž—G>=/_>14¬>14?z^þ=ÏË“>bhÐ>14Ü>ÍÌ\>ff®>š™¡>š™á>ž—G>=/>14¬>14?z^þ=ÏË£>bhÐ>14ì>ÍÌ\>ff¾>š™¡>š™ñ>ž—G>ž—>14¬>14?z^þ=Ï˳>bhÐ>14ü>ÍÌ\>ffÎ>š™¡>ÍÌ?ž—G>ž—Ÿ>14¬>14?z^þ=ÏËÃ>bhÐ>?ÍÌ\>ffÞ>š™¡>ÍÌ?ž—G>ž—¯>14¬>14 ?z^þ=ÏËÓ>bhÐ>?ÍÌ\>ffî>š™¡>ÍÌ?ž—G>ž—¿>14¬>14(?z^þ=ÏËã>bhÐ>?ÍÌ\>ffþ>š™¡>ÍÌ?ž—G>ž—Ï>14¬>140?z^þ=ÏËó>bhÐ>?ÍÌ\>33?š™¡>ÍÌ ?ž—G>ž—ß>14¬>148?z^þ=èå?bhÐ>&?ÍÌ\>33?š™¡>ÍÌ(?ž—G>ž—ï>14¬>14@?z^þ=èå ?bhÐ>.?ÍÌ\>33?š™¡>ÍÌ0?ž—G>ž—ÿ>14¬>14H?z^þ=èå?bhÐ>6?ÍÌ\>33?š™¡>ÍÌ8?ž—G>ÏË?14¬>14P?z^þ=èå?bhÐ>>?ÍÌ\>33'?š™¡>ÍÌ@?ž—G>ÏË?14¬>14X?z^þ=èå!?bhÐ>F?ÍÌ\>33/?š™¡>ÍÌH?ž—G>ÏË?14¬>14`?z^þ=èå)?bhÐ>N?ÍÌ\>337?š™¡>ÍÌP?ž—G>ÏË?14¬>14h?z^þ=èå1?bhÐ>V?ÍÌ\>33??š™¡>ÍÌX?ž—G>ÏË'?14¬>14p?z^þ=èå9?bhÐ>^?ÍÌ\>33G?š™¡>ÍÌ`?ž—G>ÏË/?14¬>14x?z^þ=èåA?bhÐ>f?ÍÌ\>33O?š™¡>ÍÌh?ž—G>ÏË7?14¬>€?z^þ=èåI?bhÐ>n?ÍÌ\>33W?š™¡>ÍÌp?ž—G>ÏË??14¬>„?z^þ=èåQ?bhÐ>v?ÍÌ\>33_?š™¡>ÍÌx?ž—G>ÏËG?14¬>ˆ?z^þ=èåY?bhÐ>~?ÍÌ\>33g?š™¡>ff€?ž—G>ÏËO?14¬>Œ?z^þ=èåa?bhÐ> ƒ?ÍÌ\>33o?š™¡>ff„?ž—G>ÏËW?14¬>?z^þ=èåi?bhÐ> ‡?ÍÌ|>ÍÌ ½š™±>ff†=ž—g>Ãо14¼>ÃÐ >=/>†¡a½bhà>Ãа=ÍÌ|>ÐÌL»š™±>ffÆ=ž—g>†¡Á½14¼>ÃÐ@>=/> Cübhà>ÃÐð=ÍÌ|>ffæ<š™±>33>ž—g>†¡½14¼>ÃÐ`>=/>Ðóò;bhà>bh>ÍÌ|>33s=š™±>33#>ž—g> C½14¼>bh€>=/>z^=bhà>bh8>ÍÌ|>š™¹=š™±>33C>ž—g>ÃPº14¼>bh>=/>=/=bhà>bhX>ÍÌ|>š™ù=š™±>33c>ž—g>èyù<14¼>bh >=/>=/Ï=bhà>bhx>ÍÌ|>ÍÌ>š™±>š™>ž—g>ô¼|=14¼>bh°>=/>ž—>bhà>14Œ>ÍÌ|>ÍÌ<>š™±>š™‘>ž—g>z^¾=14¼>bhÀ>=/>ž—'>bhà>14œ>ÍÌ|>ÍÌ\>š™±>š™¡>ž—g>z^þ=14¼>bhÐ>=/>ž—G>bhà>14¬>ÍÌ|>ÍÌ|>š™±>š™±>ž—g>=/>14¼>bhà>=/>ž—g>bhà>14¼>ÍÌ|>ffŽ>š™±>š™Á>ž—g>=/?>14¼>bhð>=/>Ï˃>bhà>14Ì>ÍÌ|>ffž>š™±>š™Ñ>ž—g>=/_>14¼>14?=/>ÏË“>bhà>14Ü>ÍÌ|>ff®>š™±>š™á>ž—g>=/>14¼>14?=/>ÏË£>bhà>14ì>ÍÌ|>ff¾>š™±>š™ñ>ž—g>ž—>14¼>14?=/>Ï˳>bhà>14ü>ÍÌ|>ffÎ>š™±>ÍÌ?ž—g>ž—Ÿ>14¼>14?=/>ÏËÃ>bhà>?ÍÌ|>ffÞ>š™±>ÍÌ?ž—g>ž—¯>14¼>14 ?=/>ÏËÓ>bhà>?ÍÌ|>ffî>š™±>ÍÌ?ž—g>ž—¿>14¼>14(?=/>ÏËã>bhà>?ÍÌ|>ffþ>š™±>ÍÌ?ž—g>ž—Ï>14¼>140?=/>ÏËó>bhà>?ÍÌ|>33?š™±>ÍÌ ?ž—g>ž—ß>14¼>148?=/>èå?bhà>&?ÍÌ|>33?š™±>ÍÌ(?ž—g>ž—ï>14¼>14@?=/>èå ?bhà>.?ÍÌ|>33?š™±>ÍÌ0?ž—g>ž—ÿ>14¼>14H?=/>èå?bhà>6?ÍÌ|>33?š™±>ÍÌ8?ž—g>ÏË?14¼>14P?=/>èå?bhà>>?ÍÌ|>33'?š™±>ÍÌ@?ž—g>ÏË?14¼>14X?=/>èå!?bhà>F?ÍÌ|>33/?š™±>ÍÌH?ž—g>ÏË?14¼>14`?=/>èå)?bhà>N?ÍÌ|>337?š™±>ÍÌP?ž—g>ÏË?14¼>14h?=/>èå1?bhà>V?ÍÌ|>33??š™±>ÍÌX?ž—g>ÏË'?14¼>14p?=/>èå9?bhà>^?ÍÌ|>33G?š™±>ÍÌ`?ž—g>ÏË/?14¼>14x?=/>èåA?bhà>f?ÍÌ|>33O?š™±>ÍÌh?ž—g>ÏË7?14¼>€?=/>èåI?bhà>n?ÍÌ|>33W?š™±>ÍÌp?ž—g>ÏË??14¼>„?=/>èåQ?bhà>v?ÍÌ|>33_?š™±>ÍÌx?ž—g>ÏËG?14¼>ˆ?=/>èåY?bhà>~?ÍÌ|>33g?š™±>ff€?ž—g>ÏËO?14¼>Œ?=/>èåa?bhà> ƒ?ÍÌ|>33o?š™±>ff„?ž—g>ÏËW?14¼>?=/>èåi?bhà> ‡?ffŽ>ÍÌ ½š™Á>ff†=Ï˃>Ãо14Ì>ÃÐ >=/?>†¡a½bhð>Ãа=ffŽ>ÐÌL»š™Á>ffÆ=Ï˃>†¡Á½14Ì>ÃÐ@>=/?> Cübhð>ÃÐð=ffŽ>ffæ<š™Á>33>Ï˃>†¡½14Ì>ÃÐ`>=/?>Ðóò;bhð>bh>ffŽ>33s=š™Á>33#>Ï˃> C½14Ì>bh€>=/?>z^=bhð>bh8>ffŽ>š™¹=š™Á>33C>Ï˃>ÃPº14Ì>bh>=/?>=/=bhð>bhX>ffŽ>š™ù=š™Á>33c>Ï˃>èyù<14Ì>bh >=/?>=/Ï=bhð>bhx>ffŽ>ÍÌ>š™Á>š™>Ï˃>ô¼|=14Ì>bh°>=/?>ž—>bhð>14Œ>ffŽ>ÍÌ<>š™Á>š™‘>Ï˃>z^¾=14Ì>bhÀ>=/?>ž—'>bhð>14œ>ffŽ>ÍÌ\>š™Á>š™¡>Ï˃>z^þ=14Ì>bhÐ>=/?>ž—G>bhð>14¬>ffŽ>ÍÌ|>š™Á>š™±>Ï˃>=/>14Ì>bhà>=/?>ž—g>bhð>14¼>ffŽ>ffŽ>š™Á>š™Á>Ï˃>=/?>14Ì>bhð>=/?>Ï˃>bhð>14Ì>ffŽ>ffž>š™Á>š™Ñ>Ï˃>=/_>14Ì>14?=/?>ÏË“>bhð>14Ü>ffŽ>ff®>š™Á>š™á>Ï˃>=/>14Ì>14?=/?>ÏË£>bhð>14ì>ffŽ>ff¾>š™Á>š™ñ>Ï˃>ž—>14Ì>14?=/?>Ï˳>bhð>14ü>ffŽ>ffÎ>š™Á>ÍÌ?Ï˃>ž—Ÿ>14Ì>14?=/?>ÏËÃ>bhð>?ffŽ>ffÞ>š™Á>ÍÌ?Ï˃>ž—¯>14Ì>14 ?=/?>ÏËÓ>bhð>?ffŽ>ffî>š™Á>ÍÌ?Ï˃>ž—¿>14Ì>14(?=/?>ÏËã>bhð>?ffŽ>ffþ>š™Á>ÍÌ?Ï˃>ž—Ï>14Ì>140?=/?>ÏËó>bhð>?ffŽ>33?š™Á>ÍÌ ?Ï˃>ž—ß>14Ì>148?=/?>èå?bhð>&?ffŽ>33?š™Á>ÍÌ(?Ï˃>ž—ï>14Ì>14@?=/?>èå ?bhð>.?ffŽ>33?š™Á>ÍÌ0?Ï˃>ž—ÿ>14Ì>14H?=/?>èå?bhð>6?ffŽ>33?š™Á>ÍÌ8?Ï˃>ÏË?14Ì>14P?=/?>èå?bhð>>?ffŽ>33'?š™Á>ÍÌ@?Ï˃>ÏË?14Ì>14X?=/?>èå!?bhð>F?ffŽ>33/?š™Á>ÍÌH?Ï˃>ÏË?14Ì>14`?=/?>èå)?bhð>N?ffŽ>337?š™Á>ÍÌP?Ï˃>ÏË?14Ì>14h?=/?>èå1?bhð>V?ffŽ>33??š™Á>ÍÌX?Ï˃>ÏË'?14Ì>14p?=/?>èå9?bhð>^?ffŽ>33G?š™Á>ÍÌ`?Ï˃>ÏË/?14Ì>14x?=/?>èåA?bhð>f?ffŽ>33O?š™Á>ÍÌh?Ï˃>ÏË7?14Ì>€?=/?>èåI?bhð>n?ffŽ>33W?š™Á>ÍÌp?Ï˃>ÏË??14Ì>„?=/?>èåQ?bhð>v?ffŽ>33_?š™Á>ÍÌx?Ï˃>ÏËG?14Ì>ˆ?=/?>èåY?bhð>~?ffŽ>33g?š™Á>ff€?Ï˃>ÏËO?14Ì>Œ?=/?>èåa?bhð> ƒ?ffŽ>33o?š™Á>ff„?Ï˃>ÏËW?14Ì>?=/?>èåi?bhð> ‡?ffž>ÍÌ ½š™Ñ>ff†=ÏË“>Ãо14Ü>ÃÐ >=/_>†¡a½14?Ãа=ffž>ÐÌL»š™Ñ>ffÆ=ÏË“>†¡Á½14Ü>ÃÐ@>=/_> Cü14?ÃÐð=ffž>ffæ<š™Ñ>33>ÏË“>†¡½14Ü>ÃÐ`>=/_>Ðóò;14?bh>ffž>33s=š™Ñ>33#>ÏË“> C½14Ü>bh€>=/_>z^=14?bh8>ffž>š™¹=š™Ñ>33C>ÏË“>ÃPº14Ü>bh>=/_>=/=14?bhX>ffž>š™ù=š™Ñ>33c>ÏË“>èyù<14Ü>bh >=/_>=/Ï=14?bhx>ffž>ÍÌ>š™Ñ>š™>ÏË“>ô¼|=14Ü>bh°>=/_>ž—>14?14Œ>ffž>ÍÌ<>š™Ñ>š™‘>ÏË“>z^¾=14Ü>bhÀ>=/_>ž—'>14?14œ>ffž>ÍÌ\>š™Ñ>š™¡>ÏË“>z^þ=14Ü>bhÐ>=/_>ž—G>14?14¬>ffž>ÍÌ|>š™Ñ>š™±>ÏË“>=/>14Ü>bhà>=/_>ž—g>14?14¼>ffž>ffŽ>š™Ñ>š™Á>ÏË“>=/?>14Ü>bhð>=/_>Ï˃>14?14Ì>ffž>ffž>š™Ñ>š™Ñ>ÏË“>=/_>14Ü>14?=/_>ÏË“>14?14Ü>ffž>ff®>š™Ñ>š™á>ÏË“>=/>14Ü>14?=/_>ÏË£>14?14ì>ffž>ff¾>š™Ñ>š™ñ>ÏË“>ž—>14Ü>14?=/_>Ï˳>14?14ü>ffž>ffÎ>š™Ñ>ÍÌ?ÏË“>ž—Ÿ>14Ü>14?=/_>ÏËÃ>14??ffž>ffÞ>š™Ñ>ÍÌ?ÏË“>ž—¯>14Ü>14 ?=/_>ÏËÓ>14??ffž>ffî>š™Ñ>ÍÌ?ÏË“>ž—¿>14Ü>14(?=/_>ÏËã>14??ffž>ffþ>š™Ñ>ÍÌ?ÏË“>ž—Ï>14Ü>140?=/_>ÏËó>14??ffž>33?š™Ñ>ÍÌ ?ÏË“>ž—ß>14Ü>148?=/_>èå?14?&?ffž>33?š™Ñ>ÍÌ(?ÏË“>ž—ï>14Ü>14@?=/_>èå ?14?.?ffž>33?š™Ñ>ÍÌ0?ÏË“>ž—ÿ>14Ü>14H?=/_>èå?14?6?ffž>33?š™Ñ>ÍÌ8?ÏË“>ÏË?14Ü>14P?=/_>èå?14?>?ffž>33'?š™Ñ>ÍÌ@?ÏË“>ÏË?14Ü>14X?=/_>èå!?14?F?ffž>33/?š™Ñ>ÍÌH?ÏË“>ÏË?14Ü>14`?=/_>èå)?14?N?ffž>337?š™Ñ>ÍÌP?ÏË“>ÏË?14Ü>14h?=/_>èå1?14?V?ffž>33??š™Ñ>ÍÌX?ÏË“>ÏË'?14Ü>14p?=/_>èå9?14?^?ffž>33G?š™Ñ>ÍÌ`?ÏË“>ÏË/?14Ü>14x?=/_>èåA?14?f?ffž>33O?š™Ñ>ÍÌh?ÏË“>ÏË7?14Ü>€?=/_>èåI?14?n?ffž>33W?š™Ñ>ÍÌp?ÏË“>ÏË??14Ü>„?=/_>èåQ?14?v?ffž>33_?š™Ñ>ÍÌx?ÏË“>ÏËG?14Ü>ˆ?=/_>èåY?14?~?ffž>33g?š™Ñ>ff€?ÏË“>ÏËO?14Ü>Œ?=/_>èåa?14? ƒ?ffž>33o?š™Ñ>ff„?ÏË“>ÏËW?14Ü>?=/_>èåi?14? ‡?ff®>ÍÌ ½š™á>ff†=ÏË£>Ãо14ì>ÃÐ >=/>†¡a½14?Ãа=ff®>ÐÌL»š™á>ffÆ=ÏË£>†¡Á½14ì>ÃÐ@>=/> Cü14?ÃÐð=ff®>ffæ<š™á>33>ÏË£>†¡½14ì>ÃÐ`>=/>Ðóò;14?bh>ff®>33s=š™á>33#>ÏË£> C½14ì>bh€>=/>z^=14?bh8>ff®>š™¹=š™á>33C>ÏË£>ÃPº14ì>bh>=/>=/=14?bhX>ff®>š™ù=š™á>33c>ÏË£>èyù<14ì>bh >=/>=/Ï=14?bhx>ff®>ÍÌ>š™á>š™>ÏË£>ô¼|=14ì>bh°>=/>ž—>14?14Œ>ff®>ÍÌ<>š™á>š™‘>ÏË£>z^¾=14ì>bhÀ>=/>ž—'>14?14œ>ff®>ÍÌ\>š™á>š™¡>ÏË£>z^þ=14ì>bhÐ>=/>ž—G>14?14¬>ff®>ÍÌ|>š™á>š™±>ÏË£>=/>14ì>bhà>=/>ž—g>14?14¼>ff®>ffŽ>š™á>š™Á>ÏË£>=/?>14ì>bhð>=/>Ï˃>14?14Ì>ff®>ffž>š™á>š™Ñ>ÏË£>=/_>14ì>14?=/>ÏË“>14?14Ü>ff®>ff®>š™á>š™á>ÏË£>=/>14ì>14?=/>ÏË£>14?14ì>ff®>ff¾>š™á>š™ñ>ÏË£>ž—>14ì>14?=/>Ï˳>14?14ü>ff®>ffÎ>š™á>ÍÌ?ÏË£>ž—Ÿ>14ì>14?=/>ÏËÃ>14??ff®>ffÞ>š™á>ÍÌ?ÏË£>ž—¯>14ì>14 ?=/>ÏËÓ>14??ff®>ffî>š™á>ÍÌ?ÏË£>ž—¿>14ì>14(?=/>ÏËã>14??ff®>ffþ>š™á>ÍÌ?ÏË£>ž—Ï>14ì>140?=/>ÏËó>14??ff®>33?š™á>ÍÌ ?ÏË£>ž—ß>14ì>148?=/>èå?14?&?ff®>33?š™á>ÍÌ(?ÏË£>ž—ï>14ì>14@?=/>èå ?14?.?ff®>33?š™á>ÍÌ0?ÏË£>ž—ÿ>14ì>14H?=/>èå?14?6?ff®>33?š™á>ÍÌ8?ÏË£>ÏË?14ì>14P?=/>èå?14?>?ff®>33'?š™á>ÍÌ@?ÏË£>ÏË?14ì>14X?=/>èå!?14?F?ff®>33/?š™á>ÍÌH?ÏË£>ÏË?14ì>14`?=/>èå)?14?N?ff®>337?š™á>ÍÌP?ÏË£>ÏË?14ì>14h?=/>èå1?14?V?ff®>33??š™á>ÍÌX?ÏË£>ÏË'?14ì>14p?=/>èå9?14?^?ff®>33G?š™á>ÍÌ`?ÏË£>ÏË/?14ì>14x?=/>èåA?14?f?ff®>33O?š™á>ÍÌh?ÏË£>ÏË7?14ì>€?=/>èåI?14?n?ff®>33W?š™á>ÍÌp?ÏË£>ÏË??14ì>„?=/>èåQ?14?v?ff®>33_?š™á>ÍÌx?ÏË£>ÏËG?14ì>ˆ?=/>èåY?14?~?ff®>33g?š™á>ff€?ÏË£>ÏËO?14ì>Œ?=/>èåa?14? ƒ?ff®>33o?š™á>ff„?ÏË£>ÏËW?14ì>?=/>èåi?14? ‡?ff¾>ÍÌ ½š™ñ>ff†=Ï˳>Ãо14ü>ÃÐ >ž—>†¡a½14?Ãа=ff¾>ÐÌL»š™ñ>ffÆ=Ï˳>†¡Á½14ü>ÃÐ@>ž—> Cü14?ÃÐð=ff¾>ffæ<š™ñ>33>Ï˳>†¡½14ü>ÃÐ`>ž—>Ðóò;14?bh>ff¾>33s=š™ñ>33#>Ï˳> C½14ü>bh€>ž—>z^=14?bh8>ff¾>š™¹=š™ñ>33C>Ï˳>ÃPº14ü>bh>ž—>=/=14?bhX>ff¾>š™ù=š™ñ>33c>Ï˳>èyù<14ü>bh >ž—>=/Ï=14?bhx>ff¾>ÍÌ>š™ñ>š™>Ï˳>ô¼|=14ü>bh°>ž—>ž—>14?14Œ>ff¾>ÍÌ<>š™ñ>š™‘>Ï˳>z^¾=14ü>bhÀ>ž—>ž—'>14?14œ>ff¾>ÍÌ\>š™ñ>š™¡>Ï˳>z^þ=14ü>bhÐ>ž—>ž—G>14?14¬>ff¾>ÍÌ|>š™ñ>š™±>Ï˳>=/>14ü>bhà>ž—>ž—g>14?14¼>ff¾>ffŽ>š™ñ>š™Á>Ï˳>=/?>14ü>bhð>ž—>Ï˃>14?14Ì>ff¾>ffž>š™ñ>š™Ñ>Ï˳>=/_>14ü>14?ž—>ÏË“>14?14Ü>ff¾>ff®>š™ñ>š™á>Ï˳>=/>14ü>14?ž—>ÏË£>14?14ì>ff¾>ff¾>š™ñ>š™ñ>Ï˳>ž—>14ü>14?ž—>Ï˳>14?14ü>ff¾>ffÎ>š™ñ>ÍÌ?Ï˳>ž—Ÿ>14ü>14?ž—>ÏËÃ>14??ff¾>ffÞ>š™ñ>ÍÌ?Ï˳>ž—¯>14ü>14 ?ž—>ÏËÓ>14??ff¾>ffî>š™ñ>ÍÌ?Ï˳>ž—¿>14ü>14(?ž—>ÏËã>14??ff¾>ffþ>š™ñ>ÍÌ?Ï˳>ž—Ï>14ü>140?ž—>ÏËó>14??ff¾>33?š™ñ>ÍÌ ?Ï˳>ž—ß>14ü>148?ž—>èå?14?&?ff¾>33?š™ñ>ÍÌ(?Ï˳>ž—ï>14ü>14@?ž—>èå ?14?.?ff¾>33?š™ñ>ÍÌ0?Ï˳>ž—ÿ>14ü>14H?ž—>èå?14?6?ff¾>33?š™ñ>ÍÌ8?Ï˳>ÏË?14ü>14P?ž—>èå?14?>?ff¾>33'?š™ñ>ÍÌ@?Ï˳>ÏË?14ü>14X?ž—>èå!?14?F?ff¾>33/?š™ñ>ÍÌH?Ï˳>ÏË?14ü>14`?ž—>èå)?14?N?ff¾>337?š™ñ>ÍÌP?Ï˳>ÏË?14ü>14h?ž—>èå1?14?V?ff¾>33??š™ñ>ÍÌX?Ï˳>ÏË'?14ü>14p?ž—>èå9?14?^?ff¾>33G?š™ñ>ÍÌ`?Ï˳>ÏË/?14ü>14x?ž—>èåA?14?f?ff¾>33O?š™ñ>ÍÌh?Ï˳>ÏË7?14ü>€?ž—>èåI?14?n?ff¾>33W?š™ñ>ÍÌp?Ï˳>ÏË??14ü>„?ž—>èåQ?14?v?ff¾>33_?š™ñ>ÍÌx?Ï˳>ÏËG?14ü>ˆ?ž—>èåY?14?~?ff¾>33g?š™ñ>ff€?Ï˳>ÏËO?14ü>Œ?ž—>èåa?14? ƒ?ff¾>33o?š™ñ>ff„?Ï˳>ÏËW?14ü>?ž—>èåi?14? ‡?ffÎ>ÍÌ ½ÍÌ?ff†=ÏËÃ>Ãо?ÃÐ >ž—Ÿ>†¡a½14?Ãа=ffÎ>ÐÌL»ÍÌ?ffÆ=ÏËÃ>†¡Á½?ÃÐ@>ž—Ÿ> Cü14?ÃÐð=ffÎ>ffæ<ÍÌ?33>ÏËÃ>†¡½?ÃÐ`>ž—Ÿ>Ðóò;14?bh>ffÎ>33s=ÍÌ?33#>ÏËÃ> C½?bh€>ž—Ÿ>z^=14?bh8>ffÎ>š™¹=ÍÌ?33C>ÏËÃ>ÃPº?bh>ž—Ÿ>=/=14?bhX>ffÎ>š™ù=ÍÌ?33c>ÏËÃ>èyù<?bh >ž—Ÿ>=/Ï=14?bhx>ffÎ>ÍÌ>ÍÌ?š™>ÏËÃ>ô¼|=?bh°>ž—Ÿ>ž—>14?14Œ>ffÎ>ÍÌ<>ÍÌ?š™‘>ÏËÃ>z^¾=?bhÀ>ž—Ÿ>ž—'>14?14œ>ffÎ>ÍÌ\>ÍÌ?š™¡>ÏËÃ>z^þ=?bhÐ>ž—Ÿ>ž—G>14?14¬>ffÎ>ÍÌ|>ÍÌ?š™±>ÏËÃ>=/>?bhà>ž—Ÿ>ž—g>14?14¼>ffÎ>ffŽ>ÍÌ?š™Á>ÏËÃ>=/?>?bhð>ž—Ÿ>Ï˃>14?14Ì>ffÎ>ffž>ÍÌ?š™Ñ>ÏËÃ>=/_>?14?ž—Ÿ>ÏË“>14?14Ü>ffÎ>ff®>ÍÌ?š™á>ÏËÃ>=/>?14?ž—Ÿ>ÏË£>14?14ì>ffÎ>ff¾>ÍÌ?š™ñ>ÏËÃ>ž—>?14?ž—Ÿ>Ï˳>14?14ü>ffÎ>ffÎ>ÍÌ?ÍÌ?ÏËÃ>ž—Ÿ>?14?ž—Ÿ>ÏËÃ>14??ffÎ>ffÞ>ÍÌ?ÍÌ?ÏËÃ>ž—¯>?14 ?ž—Ÿ>ÏËÓ>14??ffÎ>ffî>ÍÌ?ÍÌ?ÏËÃ>ž—¿>?14(?ž—Ÿ>ÏËã>14??ffÎ>ffþ>ÍÌ?ÍÌ?ÏËÃ>ž—Ï>?140?ž—Ÿ>ÏËó>14??ffÎ>33?ÍÌ?ÍÌ ?ÏËÃ>ž—ß>?148?ž—Ÿ>èå?14?&?ffÎ>33?ÍÌ?ÍÌ(?ÏËÃ>ž—ï>?14@?ž—Ÿ>èå ?14?.?ffÎ>33?ÍÌ?ÍÌ0?ÏËÃ>ž—ÿ>?14H?ž—Ÿ>èå?14?6?ffÎ>33?ÍÌ?ÍÌ8?ÏËÃ>ÏË??14P?ž—Ÿ>èå?14?>?ffÎ>33'?ÍÌ?ÍÌ@?ÏËÃ>ÏË??14X?ž—Ÿ>èå!?14?F?ffÎ>33/?ÍÌ?ÍÌH?ÏËÃ>ÏË??14`?ž—Ÿ>èå)?14?N?ffÎ>337?ÍÌ?ÍÌP?ÏËÃ>ÏË??14h?ž—Ÿ>èå1?14?V?ffÎ>33??ÍÌ?ÍÌX?ÏËÃ>ÏË'??14p?ž—Ÿ>èå9?14?^?ffÎ>33G?ÍÌ?ÍÌ`?ÏËÃ>ÏË/??14x?ž—Ÿ>èåA?14?f?ffÎ>33O?ÍÌ?ÍÌh?ÏËÃ>ÏË7??€?ž—Ÿ>èåI?14?n?ffÎ>33W?ÍÌ?ÍÌp?ÏËÃ>ÏË???„?ž—Ÿ>èåQ?14?v?ffÎ>33_?ÍÌ?ÍÌx?ÏËÃ>ÏËG??ˆ?ž—Ÿ>èåY?14?~?ffÎ>33g?ÍÌ?ff€?ÏËÃ>ÏËO??Œ?ž—Ÿ>èåa?14? ƒ?ffÎ>33o?ÍÌ?ff„?ÏËÃ>ÏËW???ž—Ÿ>èåi?14? ‡?ffÞ>ÍÌ ½ÍÌ?ff†=ÏËÓ>Ãо?ÃÐ >ž—¯>†¡a½14 ?Ãа=ffÞ>ÐÌL»ÍÌ?ffÆ=ÏËÓ>†¡Á½?ÃÐ@>ž—¯> Cü14 ?ÃÐð=ffÞ>ffæ<ÍÌ?33>ÏËÓ>†¡½?ÃÐ`>ž—¯>Ðóò;14 ?bh>ffÞ>33s=ÍÌ?33#>ÏËÓ> C½?bh€>ž—¯>z^=14 ?bh8>ffÞ>š™¹=ÍÌ?33C>ÏËÓ>ÃPº?bh>ž—¯>=/=14 ?bhX>ffÞ>š™ù=ÍÌ?33c>ÏËÓ>èyù<?bh >ž—¯>=/Ï=14 ?bhx>ffÞ>ÍÌ>ÍÌ?š™>ÏËÓ>ô¼|=?bh°>ž—¯>ž—>14 ?14Œ>ffÞ>ÍÌ<>ÍÌ?š™‘>ÏËÓ>z^¾=?bhÀ>ž—¯>ž—'>14 ?14œ>ffÞ>ÍÌ\>ÍÌ?š™¡>ÏËÓ>z^þ=?bhÐ>ž—¯>ž—G>14 ?14¬>ffÞ>ÍÌ|>ÍÌ?š™±>ÏËÓ>=/>?bhà>ž—¯>ž—g>14 ?14¼>ffÞ>ffŽ>ÍÌ?š™Á>ÏËÓ>=/?>?bhð>ž—¯>Ï˃>14 ?14Ì>ffÞ>ffž>ÍÌ?š™Ñ>ÏËÓ>=/_>?14?ž—¯>ÏË“>14 ?14Ü>ffÞ>ff®>ÍÌ?š™á>ÏËÓ>=/>?14?ž—¯>ÏË£>14 ?14ì>ffÞ>ff¾>ÍÌ?š™ñ>ÏËÓ>ž—>?14?ž—¯>Ï˳>14 ?14ü>ffÞ>ffÎ>ÍÌ?ÍÌ?ÏËÓ>ž—Ÿ>?14?ž—¯>ÏËÃ>14 ??ffÞ>ffÞ>ÍÌ?ÍÌ?ÏËÓ>ž—¯>?14 ?ž—¯>ÏËÓ>14 ??ffÞ>ffî>ÍÌ?ÍÌ?ÏËÓ>ž—¿>?14(?ž—¯>ÏËã>14 ??ffÞ>ffþ>ÍÌ?ÍÌ?ÏËÓ>ž—Ï>?140?ž—¯>ÏËó>14 ??ffÞ>33?ÍÌ?ÍÌ ?ÏËÓ>ž—ß>?148?ž—¯>èå?14 ?&?ffÞ>33?ÍÌ?ÍÌ(?ÏËÓ>ž—ï>?14@?ž—¯>èå ?14 ?.?ffÞ>33?ÍÌ?ÍÌ0?ÏËÓ>ž—ÿ>?14H?ž—¯>èå?14 ?6?ffÞ>33?ÍÌ?ÍÌ8?ÏËÓ>ÏË??14P?ž—¯>èå?14 ?>?ffÞ>33'?ÍÌ?ÍÌ@?ÏËÓ>ÏË??14X?ž—¯>èå!?14 ?F?ffÞ>33/?ÍÌ?ÍÌH?ÏËÓ>ÏË??14`?ž—¯>èå)?14 ?N?ffÞ>337?ÍÌ?ÍÌP?ÏËÓ>ÏË??14h?ž—¯>èå1?14 ?V?ffÞ>33??ÍÌ?ÍÌX?ÏËÓ>ÏË'??14p?ž—¯>èå9?14 ?^?ffÞ>33G?ÍÌ?ÍÌ`?ÏËÓ>ÏË/??14x?ž—¯>èåA?14 ?f?ffÞ>33O?ÍÌ?ÍÌh?ÏËÓ>ÏË7??€?ž—¯>èåI?14 ?n?ffÞ>33W?ÍÌ?ÍÌp?ÏËÓ>ÏË???„?ž—¯>èåQ?14 ?v?ffÞ>33_?ÍÌ?ÍÌx?ÏËÓ>ÏËG??ˆ?ž—¯>èåY?14 ?~?ffÞ>33g?ÍÌ?ff€?ÏËÓ>ÏËO??Œ?ž—¯>èåa?14 ? ƒ?ffÞ>33o?ÍÌ?ff„?ÏËÓ>ÏËW???ž—¯>èåi?14 ? ‡?ffî>ÍÌ ½ÍÌ?ff†=ÏËã>Ãо?ÃÐ >ž—¿>†¡a½14(?Ãа=ffî>ÐÌL»ÍÌ?ffÆ=ÏËã>†¡Á½?ÃÐ@>ž—¿> Cü14(?ÃÐð=ffî>ffæ<ÍÌ?33>ÏËã>†¡½?ÃÐ`>ž—¿>Ðóò;14(?bh>ffî>33s=ÍÌ?33#>ÏËã> C½?bh€>ž—¿>z^=14(?bh8>ffî>š™¹=ÍÌ?33C>ÏËã>ÃPº?bh>ž—¿>=/=14(?bhX>ffî>š™ù=ÍÌ?33c>ÏËã>èyù<?bh >ž—¿>=/Ï=14(?bhx>ffî>ÍÌ>ÍÌ?š™>ÏËã>ô¼|=?bh°>ž—¿>ž—>14(?14Œ>ffî>ÍÌ<>ÍÌ?š™‘>ÏËã>z^¾=?bhÀ>ž—¿>ž—'>14(?14œ>ffî>ÍÌ\>ÍÌ?š™¡>ÏËã>z^þ=?bhÐ>ž—¿>ž—G>14(?14¬>ffî>ÍÌ|>ÍÌ?š™±>ÏËã>=/>?bhà>ž—¿>ž—g>14(?14¼>ffî>ffŽ>ÍÌ?š™Á>ÏËã>=/?>?bhð>ž—¿>Ï˃>14(?14Ì>ffî>ffž>ÍÌ?š™Ñ>ÏËã>=/_>?14?ž—¿>ÏË“>14(?14Ü>ffî>ff®>ÍÌ?š™á>ÏËã>=/>?14?ž—¿>ÏË£>14(?14ì>ffî>ff¾>ÍÌ?š™ñ>ÏËã>ž—>?14?ž—¿>Ï˳>14(?14ü>ffî>ffÎ>ÍÌ?ÍÌ?ÏËã>ž—Ÿ>?14?ž—¿>ÏËÃ>14(??ffî>ffÞ>ÍÌ?ÍÌ?ÏËã>ž—¯>?14 ?ž—¿>ÏËÓ>14(??ffî>ffî>ÍÌ?ÍÌ?ÏËã>ž—¿>?14(?ž—¿>ÏËã>14(??ffî>ffþ>ÍÌ?ÍÌ?ÏËã>ž—Ï>?140?ž—¿>ÏËó>14(??ffî>33?ÍÌ?ÍÌ ?ÏËã>ž—ß>?148?ž—¿>èå?14(?&?ffî>33?ÍÌ?ÍÌ(?ÏËã>ž—ï>?14@?ž—¿>èå ?14(?.?ffî>33?ÍÌ?ÍÌ0?ÏËã>ž—ÿ>?14H?ž—¿>èå?14(?6?ffî>33?ÍÌ?ÍÌ8?ÏËã>ÏË??14P?ž—¿>èå?14(?>?ffî>33'?ÍÌ?ÍÌ@?ÏËã>ÏË??14X?ž—¿>èå!?14(?F?ffî>33/?ÍÌ?ÍÌH?ÏËã>ÏË??14`?ž—¿>èå)?14(?N?ffî>337?ÍÌ?ÍÌP?ÏËã>ÏË??14h?ž—¿>èå1?14(?V?ffî>33??ÍÌ?ÍÌX?ÏËã>ÏË'??14p?ž—¿>èå9?14(?^?ffî>33G?ÍÌ?ÍÌ`?ÏËã>ÏË/??14x?ž—¿>èåA?14(?f?ffî>33O?ÍÌ?ÍÌh?ÏËã>ÏË7??€?ž—¿>èåI?14(?n?ffî>33W?ÍÌ?ÍÌp?ÏËã>ÏË???„?ž—¿>èåQ?14(?v?ffî>33_?ÍÌ?ÍÌx?ÏËã>ÏËG??ˆ?ž—¿>èåY?14(?~?ffî>33g?ÍÌ?ff€?ÏËã>ÏËO??Œ?ž—¿>èåa?14(? ƒ?ffî>33o?ÍÌ?ff„?ÏËã>ÏËW???ž—¿>èåi?14(? ‡?ffþ>ÍÌ ½ÍÌ?ff†=ÏËó>Ãо?ÃÐ >ž—Ï>†¡a½140?Ãа=ffþ>ÐÌL»ÍÌ?ffÆ=ÏËó>†¡Á½?ÃÐ@>ž—Ï> Cü140?ÃÐð=ffþ>ffæ<ÍÌ?33>ÏËó>†¡½?ÃÐ`>ž—Ï>Ðóò;140?bh>ffþ>33s=ÍÌ?33#>ÏËó> C½?bh€>ž—Ï>z^=140?bh8>ffþ>š™¹=ÍÌ?33C>ÏËó>ÃPº?bh>ž—Ï>=/=140?bhX>ffþ>š™ù=ÍÌ?33c>ÏËó>èyù<?bh >ž—Ï>=/Ï=140?bhx>ffþ>ÍÌ>ÍÌ?š™>ÏËó>ô¼|=?bh°>ž—Ï>ž—>140?14Œ>ffþ>ÍÌ<>ÍÌ?š™‘>ÏËó>z^¾=?bhÀ>ž—Ï>ž—'>140?14œ>ffþ>ÍÌ\>ÍÌ?š™¡>ÏËó>z^þ=?bhÐ>ž—Ï>ž—G>140?14¬>ffþ>ÍÌ|>ÍÌ?š™±>ÏËó>=/>?bhà>ž—Ï>ž—g>140?14¼>ffþ>ffŽ>ÍÌ?š™Á>ÏËó>=/?>?bhð>ž—Ï>Ï˃>140?14Ì>ffþ>ffž>ÍÌ?š™Ñ>ÏËó>=/_>?14?ž—Ï>ÏË“>140?14Ü>ffþ>ff®>ÍÌ?š™á>ÏËó>=/>?14?ž—Ï>ÏË£>140?14ì>ffþ>ff¾>ÍÌ?š™ñ>ÏËó>ž—>?14?ž—Ï>Ï˳>140?14ü>ffþ>ffÎ>ÍÌ?ÍÌ?ÏËó>ž—Ÿ>?14?ž—Ï>ÏËÃ>140??ffþ>ffÞ>ÍÌ?ÍÌ?ÏËó>ž—¯>?14 ?ž—Ï>ÏËÓ>140??ffþ>ffî>ÍÌ?ÍÌ?ÏËó>ž—¿>?14(?ž—Ï>ÏËã>140??ffþ>ffþ>ÍÌ?ÍÌ?ÏËó>ž—Ï>?140?ž—Ï>ÏËó>140??ffþ>33?ÍÌ?ÍÌ ?ÏËó>ž—ß>?148?ž—Ï>èå?140?&?ffþ>33?ÍÌ?ÍÌ(?ÏËó>ž—ï>?14@?ž—Ï>èå ?140?.?ffþ>33?ÍÌ?ÍÌ0?ÏËó>ž—ÿ>?14H?ž—Ï>èå?140?6?ffþ>33?ÍÌ?ÍÌ8?ÏËó>ÏË??14P?ž—Ï>èå?140?>?ffþ>33'?ÍÌ?ÍÌ@?ÏËó>ÏË??14X?ž—Ï>èå!?140?F?ffþ>33/?ÍÌ?ÍÌH?ÏËó>ÏË??14`?ž—Ï>èå)?140?N?ffþ>337?ÍÌ?ÍÌP?ÏËó>ÏË??14h?ž—Ï>èå1?140?V?ffþ>33??ÍÌ?ÍÌX?ÏËó>ÏË'??14p?ž—Ï>èå9?140?^?ffþ>33G?ÍÌ?ÍÌ`?ÏËó>ÏË/??14x?ž—Ï>èåA?140?f?ffþ>33O?ÍÌ?ÍÌh?ÏËó>ÏË7??€?ž—Ï>èåI?140?n?ffþ>33W?ÍÌ?ÍÌp?ÏËó>ÏË???„?ž—Ï>èåQ?140?v?ffþ>33_?ÍÌ?ÍÌx?ÏËó>ÏËG??ˆ?ž—Ï>èåY?140?~?ffþ>33g?ÍÌ?ff€?ÏËó>ÏËO??Œ?ž—Ï>èåa?140? ƒ?ffþ>33o?ÍÌ?ff„?ÏËó>ÏËW???ž—Ï>èåi?140? ‡?33?ÍÌ ½ÍÌ ?ff†=èå?Ãо&?ÃÐ >ž—ß>†¡a½148?Ãа=33?ÐÌL»ÍÌ ?ffÆ=èå?†¡Á½&?ÃÐ@>ž—ß> Cü148?ÃÐð=33?ffæ<ÍÌ ?33>èå?†¡½&?ÃÐ`>ž—ß>Ðóò;148?bh>33?33s=ÍÌ ?33#>èå? C½&?bh€>ž—ß>z^=148?bh8>33?š™¹=ÍÌ ?33C>èå?ÃPº&?bh>ž—ß>=/=148?bhX>33?š™ù=ÍÌ ?33c>èå?èyù<&?bh >ž—ß>=/Ï=148?bhx>33?ÍÌ>ÍÌ ?š™>èå?ô¼|=&?bh°>ž—ß>ž—>148?14Œ>33?ÍÌ<>ÍÌ ?š™‘>èå?z^¾=&?bhÀ>ž—ß>ž—'>148?14œ>33?ÍÌ\>ÍÌ ?š™¡>èå?z^þ=&?bhÐ>ž—ß>ž—G>148?14¬>33?ÍÌ|>ÍÌ ?š™±>èå?=/>&?bhà>ž—ß>ž—g>148?14¼>33?ffŽ>ÍÌ ?š™Á>èå?=/?>&?bhð>ž—ß>Ï˃>148?14Ì>33?ffž>ÍÌ ?š™Ñ>èå?=/_>&?14?ž—ß>ÏË“>148?14Ü>33?ff®>ÍÌ ?š™á>èå?=/>&?14?ž—ß>ÏË£>148?14ì>33?ff¾>ÍÌ ?š™ñ>èå?ž—>&?14?ž—ß>Ï˳>148?14ü>33?ffÎ>ÍÌ ?ÍÌ?èå?ž—Ÿ>&?14?ž—ß>ÏËÃ>148??33?ffÞ>ÍÌ ?ÍÌ?èå?ž—¯>&?14 ?ž—ß>ÏËÓ>148??33?ffî>ÍÌ ?ÍÌ?èå?ž—¿>&?14(?ž—ß>ÏËã>148??33?ffþ>ÍÌ ?ÍÌ?èå?ž—Ï>&?140?ž—ß>ÏËó>148??33?33?ÍÌ ?ÍÌ ?èå?ž—ß>&?148?ž—ß>èå?148?&?33?33?ÍÌ ?ÍÌ(?èå?ž—ï>&?14@?ž—ß>èå ?148?.?33?33?ÍÌ ?ÍÌ0?èå?ž—ÿ>&?14H?ž—ß>èå?148?6?33?33?ÍÌ ?ÍÌ8?èå?ÏË?&?14P?ž—ß>èå?148?>?33?33'?ÍÌ ?ÍÌ@?èå?ÏË?&?14X?ž—ß>èå!?148?F?33?33/?ÍÌ ?ÍÌH?èå?ÏË?&?14`?ž—ß>èå)?148?N?33?337?ÍÌ ?ÍÌP?èå?ÏË?&?14h?ž—ß>èå1?148?V?33?33??ÍÌ ?ÍÌX?èå?ÏË'?&?14p?ž—ß>èå9?148?^?33?33G?ÍÌ ?ÍÌ`?èå?ÏË/?&?14x?ž—ß>èåA?148?f?33?33O?ÍÌ ?ÍÌh?èå?ÏË7?&?€?ž—ß>èåI?148?n?33?33W?ÍÌ ?ÍÌp?èå?ÏË??&?„?ž—ß>èåQ?148?v?33?33_?ÍÌ ?ÍÌx?èå?ÏËG?&?ˆ?ž—ß>èåY?148?~?33?33g?ÍÌ ?ff€?èå?ÏËO?&?Œ?ž—ß>èåa?148? ƒ?33?33o?ÍÌ ?ff„?èå?ÏËW?&??ž—ß>èåi?148? ‡?33?ÍÌ ½ÍÌ(?ff†=èå ?Ãо.?ÃÐ >ž—ï>†¡a½14@?Ãа=33?ÐÌL»ÍÌ(?ffÆ=èå ?†¡Á½.?ÃÐ@>ž—ï> Cü14@?ÃÐð=33?ffæ<ÍÌ(?33>èå ?†¡½.?ÃÐ`>ž—ï>Ðóò;14@?bh>33?33s=ÍÌ(?33#>èå ? C½.?bh€>ž—ï>z^=14@?bh8>33?š™¹=ÍÌ(?33C>èå ?ÃPº.?bh>ž—ï>=/=14@?bhX>33?š™ù=ÍÌ(?33c>èå ?èyù<.?bh >ž—ï>=/Ï=14@?bhx>33?ÍÌ>ÍÌ(?š™>èå ?ô¼|=.?bh°>ž—ï>ž—>14@?14Œ>33?ÍÌ<>ÍÌ(?š™‘>èå ?z^¾=.?bhÀ>ž—ï>ž—'>14@?14œ>33?ÍÌ\>ÍÌ(?š™¡>èå ?z^þ=.?bhÐ>ž—ï>ž—G>14@?14¬>33?ÍÌ|>ÍÌ(?š™±>èå ?=/>.?bhà>ž—ï>ž—g>14@?14¼>33?ffŽ>ÍÌ(?š™Á>èå ?=/?>.?bhð>ž—ï>Ï˃>14@?14Ì>33?ffž>ÍÌ(?š™Ñ>èå ?=/_>.?14?ž—ï>ÏË“>14@?14Ü>33?ff®>ÍÌ(?š™á>èå ?=/>.?14?ž—ï>ÏË£>14@?14ì>33?ff¾>ÍÌ(?š™ñ>èå ?ž—>.?14?ž—ï>Ï˳>14@?14ü>33?ffÎ>ÍÌ(?ÍÌ?èå ?ž—Ÿ>.?14?ž—ï>ÏËÃ>14@??33?ffÞ>ÍÌ(?ÍÌ?èå ?ž—¯>.?14 ?ž—ï>ÏËÓ>14@??33?ffî>ÍÌ(?ÍÌ?èå ?ž—¿>.?14(?ž—ï>ÏËã>14@??33?ffþ>ÍÌ(?ÍÌ?èå ?ž—Ï>.?140?ž—ï>ÏËó>14@??33?33?ÍÌ(?ÍÌ ?èå ?ž—ß>.?148?ž—ï>èå?14@?&?33?33?ÍÌ(?ÍÌ(?èå ?ž—ï>.?14@?ž—ï>èå ?14@?.?33?33?ÍÌ(?ÍÌ0?èå ?ž—ÿ>.?14H?ž—ï>èå?14@?6?33?33?ÍÌ(?ÍÌ8?èå ?ÏË?.?14P?ž—ï>èå?14@?>?33?33'?ÍÌ(?ÍÌ@?èå ?ÏË?.?14X?ž—ï>èå!?14@?F?33?33/?ÍÌ(?ÍÌH?èå ?ÏË?.?14`?ž—ï>èå)?14@?N?33?337?ÍÌ(?ÍÌP?èå ?ÏË?.?14h?ž—ï>èå1?14@?V?33?33??ÍÌ(?ÍÌX?èå ?ÏË'?.?14p?ž—ï>èå9?14@?^?33?33G?ÍÌ(?ÍÌ`?èå ?ÏË/?.?14x?ž—ï>èåA?14@?f?33?33O?ÍÌ(?ÍÌh?èå ?ÏË7?.?€?ž—ï>èåI?14@?n?33?33W?ÍÌ(?ÍÌp?èå ?ÏË??.?„?ž—ï>èåQ?14@?v?33?33_?ÍÌ(?ÍÌx?èå ?ÏËG?.?ˆ?ž—ï>èåY?14@?~?33?33g?ÍÌ(?ff€?èå ?ÏËO?.?Œ?ž—ï>èåa?14@? ƒ?33?33o?ÍÌ(?ff„?èå ?ÏËW?.??ž—ï>èåi?14@? ‡?33?ÍÌ ½ÍÌ0?ff†=èå?Ãо6?ÃÐ >ž—ÿ>†¡a½14H?Ãа=33?ÐÌL»ÍÌ0?ffÆ=èå?†¡Á½6?ÃÐ@>ž—ÿ> Cü14H?ÃÐð=33?ffæ<ÍÌ0?33>èå?†¡½6?ÃÐ`>ž—ÿ>Ðóò;14H?bh>33?33s=ÍÌ0?33#>èå? C½6?bh€>ž—ÿ>z^=14H?bh8>33?š™¹=ÍÌ0?33C>èå?ÃPº6?bh>ž—ÿ>=/=14H?bhX>33?š™ù=ÍÌ0?33c>èå?èyù<6?bh >ž—ÿ>=/Ï=14H?bhx>33?ÍÌ>ÍÌ0?š™>èå?ô¼|=6?bh°>ž—ÿ>ž—>14H?14Œ>33?ÍÌ<>ÍÌ0?š™‘>èå?z^¾=6?bhÀ>ž—ÿ>ž—'>14H?14œ>33?ÍÌ\>ÍÌ0?š™¡>èå?z^þ=6?bhÐ>ž—ÿ>ž—G>14H?14¬>33?ÍÌ|>ÍÌ0?š™±>èå?=/>6?bhà>ž—ÿ>ž—g>14H?14¼>33?ffŽ>ÍÌ0?š™Á>èå?=/?>6?bhð>ž—ÿ>Ï˃>14H?14Ì>33?ffž>ÍÌ0?š™Ñ>èå?=/_>6?14?ž—ÿ>ÏË“>14H?14Ü>33?ff®>ÍÌ0?š™á>èå?=/>6?14?ž—ÿ>ÏË£>14H?14ì>33?ff¾>ÍÌ0?š™ñ>èå?ž—>6?14?ž—ÿ>Ï˳>14H?14ü>33?ffÎ>ÍÌ0?ÍÌ?èå?ž—Ÿ>6?14?ž—ÿ>ÏËÃ>14H??33?ffÞ>ÍÌ0?ÍÌ?èå?ž—¯>6?14 ?ž—ÿ>ÏËÓ>14H??33?ffî>ÍÌ0?ÍÌ?èå?ž—¿>6?14(?ž—ÿ>ÏËã>14H??33?ffþ>ÍÌ0?ÍÌ?èå?ž—Ï>6?140?ž—ÿ>ÏËó>14H??33?33?ÍÌ0?ÍÌ ?èå?ž—ß>6?148?ž—ÿ>èå?14H?&?33?33?ÍÌ0?ÍÌ(?èå?ž—ï>6?14@?ž—ÿ>èå ?14H?.?33?33?ÍÌ0?ÍÌ0?èå?ž—ÿ>6?14H?ž—ÿ>èå?14H?6?33?33?ÍÌ0?ÍÌ8?èå?ÏË?6?14P?ž—ÿ>èå?14H?>?33?33'?ÍÌ0?ÍÌ@?èå?ÏË?6?14X?ž—ÿ>èå!?14H?F?33?33/?ÍÌ0?ÍÌH?èå?ÏË?6?14`?ž—ÿ>èå)?14H?N?33?337?ÍÌ0?ÍÌP?èå?ÏË?6?14h?ž—ÿ>èå1?14H?V?33?33??ÍÌ0?ÍÌX?èå?ÏË'?6?14p?ž—ÿ>èå9?14H?^?33?33G?ÍÌ0?ÍÌ`?èå?ÏË/?6?14x?ž—ÿ>èåA?14H?f?33?33O?ÍÌ0?ÍÌh?èå?ÏË7?6?€?ž—ÿ>èåI?14H?n?33?33W?ÍÌ0?ÍÌp?èå?ÏË??6?„?ž—ÿ>èåQ?14H?v?33?33_?ÍÌ0?ÍÌx?èå?ÏËG?6?ˆ?ž—ÿ>èåY?14H?~?33?33g?ÍÌ0?ff€?èå?ÏËO?6?Œ?ž—ÿ>èåa?14H? ƒ?33?33o?ÍÌ0?ff„?èå?ÏËW?6??ž—ÿ>èåi?14H? ‡?33?ÍÌ ½ÍÌ8?ff†=èå?Ãо>?ÃÐ >ÏË?†¡a½14P?Ãа=33?ÐÌL»ÍÌ8?ffÆ=èå?†¡Á½>?ÃÐ@>ÏË? Cü14P?ÃÐð=33?ffæ<ÍÌ8?33>èå?†¡½>?ÃÐ`>ÏË?Ðóò;14P?bh>33?33s=ÍÌ8?33#>èå? C½>?bh€>ÏË?z^=14P?bh8>33?š™¹=ÍÌ8?33C>èå?ÃPº>?bh>ÏË?=/=14P?bhX>33?š™ù=ÍÌ8?33c>èå?èyù<>?bh >ÏË?=/Ï=14P?bhx>33?ÍÌ>ÍÌ8?š™>èå?ô¼|=>?bh°>ÏË?ž—>14P?14Œ>33?ÍÌ<>ÍÌ8?š™‘>èå?z^¾=>?bhÀ>ÏË?ž—'>14P?14œ>33?ÍÌ\>ÍÌ8?š™¡>èå?z^þ=>?bhÐ>ÏË?ž—G>14P?14¬>33?ÍÌ|>ÍÌ8?š™±>èå?=/>>?bhà>ÏË?ž—g>14P?14¼>33?ffŽ>ÍÌ8?š™Á>èå?=/?>>?bhð>ÏË?Ï˃>14P?14Ì>33?ffž>ÍÌ8?š™Ñ>èå?=/_>>?14?ÏË?ÏË“>14P?14Ü>33?ff®>ÍÌ8?š™á>èå?=/>>?14?ÏË?ÏË£>14P?14ì>33?ff¾>ÍÌ8?š™ñ>èå?ž—>>?14?ÏË?Ï˳>14P?14ü>33?ffÎ>ÍÌ8?ÍÌ?èå?ž—Ÿ>>?14?ÏË?ÏËÃ>14P??33?ffÞ>ÍÌ8?ÍÌ?èå?ž—¯>>?14 ?ÏË?ÏËÓ>14P??33?ffî>ÍÌ8?ÍÌ?èå?ž—¿>>?14(?ÏË?ÏËã>14P??33?ffþ>ÍÌ8?ÍÌ?èå?ž—Ï>>?140?ÏË?ÏËó>14P??33?33?ÍÌ8?ÍÌ ?èå?ž—ß>>?148?ÏË?èå?14P?&?33?33?ÍÌ8?ÍÌ(?èå?ž—ï>>?14@?ÏË?èå ?14P?.?33?33?ÍÌ8?ÍÌ0?èå?ž—ÿ>>?14H?ÏË?èå?14P?6?33?33?ÍÌ8?ÍÌ8?èå?ÏË?>?14P?ÏË?èå?14P?>?33?33'?ÍÌ8?ÍÌ@?èå?ÏË?>?14X?ÏË?èå!?14P?F?33?33/?ÍÌ8?ÍÌH?èå?ÏË?>?14`?ÏË?èå)?14P?N?33?337?ÍÌ8?ÍÌP?èå?ÏË?>?14h?ÏË?èå1?14P?V?33?33??ÍÌ8?ÍÌX?èå?ÏË'?>?14p?ÏË?èå9?14P?^?33?33G?ÍÌ8?ÍÌ`?èå?ÏË/?>?14x?ÏË?èåA?14P?f?33?33O?ÍÌ8?ÍÌh?èå?ÏË7?>?€?ÏË?èåI?14P?n?33?33W?ÍÌ8?ÍÌp?èå?ÏË??>?„?ÏË?èåQ?14P?v?33?33_?ÍÌ8?ÍÌx?èå?ÏËG?>?ˆ?ÏË?èåY?14P?~?33?33g?ÍÌ8?ff€?èå?ÏËO?>?Œ?ÏË?èåa?14P? ƒ?33?33o?ÍÌ8?ff„?èå?ÏËW?>??ÏË?èåi?14P? ‡?33'?ÍÌ ½ÍÌ@?ff†=èå!?ÃоF?ÃÐ >ÏË?†¡a½14X?Ãа=33'?ÐÌL»ÍÌ@?ffÆ=èå!?†¡Á½F?ÃÐ@>ÏË? Cü14X?ÃÐð=33'?ffæ<ÍÌ@?33>èå!?†¡½F?ÃÐ`>ÏË?Ðóò;14X?bh>33'?33s=ÍÌ@?33#>èå!? C½F?bh€>ÏË?z^=14X?bh8>33'?š™¹=ÍÌ@?33C>èå!?ÃPºF?bh>ÏË?=/=14X?bhX>33'?š™ù=ÍÌ@?33c>èå!?èyù<F?bh >ÏË?=/Ï=14X?bhx>33'?ÍÌ>ÍÌ@?š™>èå!?ô¼|=F?bh°>ÏË?ž—>14X?14Œ>33'?ÍÌ<>ÍÌ@?š™‘>èå!?z^¾=F?bhÀ>ÏË?ž—'>14X?14œ>33'?ÍÌ\>ÍÌ@?š™¡>èå!?z^þ=F?bhÐ>ÏË?ž—G>14X?14¬>33'?ÍÌ|>ÍÌ@?š™±>èå!?=/>F?bhà>ÏË?ž—g>14X?14¼>33'?ffŽ>ÍÌ@?š™Á>èå!?=/?>F?bhð>ÏË?Ï˃>14X?14Ì>33'?ffž>ÍÌ@?š™Ñ>èå!?=/_>F?14?ÏË?ÏË“>14X?14Ü>33'?ff®>ÍÌ@?š™á>èå!?=/>F?14?ÏË?ÏË£>14X?14ì>33'?ff¾>ÍÌ@?š™ñ>èå!?ž—>F?14?ÏË?Ï˳>14X?14ü>33'?ffÎ>ÍÌ@?ÍÌ?èå!?ž—Ÿ>F?14?ÏË?ÏËÃ>14X??33'?ffÞ>ÍÌ@?ÍÌ?èå!?ž—¯>F?14 ?ÏË?ÏËÓ>14X??33'?ffî>ÍÌ@?ÍÌ?èå!?ž—¿>F?14(?ÏË?ÏËã>14X??33'?ffþ>ÍÌ@?ÍÌ?èå!?ž—Ï>F?140?ÏË?ÏËó>14X??33'?33?ÍÌ@?ÍÌ ?èå!?ž—ß>F?148?ÏË?èå?14X?&?33'?33?ÍÌ@?ÍÌ(?èå!?ž—ï>F?14@?ÏË?èå ?14X?.?33'?33?ÍÌ@?ÍÌ0?èå!?ž—ÿ>F?14H?ÏË?èå?14X?6?33'?33?ÍÌ@?ÍÌ8?èå!?ÏË?F?14P?ÏË?èå?14X?>?33'?33'?ÍÌ@?ÍÌ@?èå!?ÏË?F?14X?ÏË?èå!?14X?F?33'?33/?ÍÌ@?ÍÌH?èå!?ÏË?F?14`?ÏË?èå)?14X?N?33'?337?ÍÌ@?ÍÌP?èå!?ÏË?F?14h?ÏË?èå1?14X?V?33'?33??ÍÌ@?ÍÌX?èå!?ÏË'?F?14p?ÏË?èå9?14X?^?33'?33G?ÍÌ@?ÍÌ`?èå!?ÏË/?F?14x?ÏË?èåA?14X?f?33'?33O?ÍÌ@?ÍÌh?èå!?ÏË7?F?€?ÏË?èåI?14X?n?33'?33W?ÍÌ@?ÍÌp?èå!?ÏË??F?„?ÏË?èåQ?14X?v?33'?33_?ÍÌ@?ÍÌx?èå!?ÏËG?F?ˆ?ÏË?èåY?14X?~?33'?33g?ÍÌ@?ff€?èå!?ÏËO?F?Œ?ÏË?èåa?14X? ƒ?33'?33o?ÍÌ@?ff„?èå!?ÏËW?F??ÏË?èåi?14X? ‡?33/?ÍÌ ½ÍÌH?ff†=èå)?ÃоN?ÃÐ >ÏË?†¡a½14`?Ãа=33/?ÐÌL»ÍÌH?ffÆ=èå)?†¡Á½N?ÃÐ@>ÏË? Cü14`?ÃÐð=33/?ffæ<ÍÌH?33>èå)?†¡½N?ÃÐ`>ÏË?Ðóò;14`?bh>33/?33s=ÍÌH?33#>èå)? C½N?bh€>ÏË?z^=14`?bh8>33/?š™¹=ÍÌH?33C>èå)?ÃPºN?bh>ÏË?=/=14`?bhX>33/?š™ù=ÍÌH?33c>èå)?èyù<N?bh >ÏË?=/Ï=14`?bhx>33/?ÍÌ>ÍÌH?š™>èå)?ô¼|=N?bh°>ÏË?ž—>14`?14Œ>33/?ÍÌ<>ÍÌH?š™‘>èå)?z^¾=N?bhÀ>ÏË?ž—'>14`?14œ>33/?ÍÌ\>ÍÌH?š™¡>èå)?z^þ=N?bhÐ>ÏË?ž—G>14`?14¬>33/?ÍÌ|>ÍÌH?š™±>èå)?=/>N?bhà>ÏË?ž—g>14`?14¼>33/?ffŽ>ÍÌH?š™Á>èå)?=/?>N?bhð>ÏË?Ï˃>14`?14Ì>33/?ffž>ÍÌH?š™Ñ>èå)?=/_>N?14?ÏË?ÏË“>14`?14Ü>33/?ff®>ÍÌH?š™á>èå)?=/>N?14?ÏË?ÏË£>14`?14ì>33/?ff¾>ÍÌH?š™ñ>èå)?ž—>N?14?ÏË?Ï˳>14`?14ü>33/?ffÎ>ÍÌH?ÍÌ?èå)?ž—Ÿ>N?14?ÏË?ÏËÃ>14`??33/?ffÞ>ÍÌH?ÍÌ?èå)?ž—¯>N?14 ?ÏË?ÏËÓ>14`??33/?ffî>ÍÌH?ÍÌ?èå)?ž—¿>N?14(?ÏË?ÏËã>14`??33/?ffþ>ÍÌH?ÍÌ?èå)?ž—Ï>N?140?ÏË?ÏËó>14`??33/?33?ÍÌH?ÍÌ ?èå)?ž—ß>N?148?ÏË?èå?14`?&?33/?33?ÍÌH?ÍÌ(?èå)?ž—ï>N?14@?ÏË?èå ?14`?.?33/?33?ÍÌH?ÍÌ0?èå)?ž—ÿ>N?14H?ÏË?èå?14`?6?33/?33?ÍÌH?ÍÌ8?èå)?ÏË?N?14P?ÏË?èå?14`?>?33/?33'?ÍÌH?ÍÌ@?èå)?ÏË?N?14X?ÏË?èå!?14`?F?33/?33/?ÍÌH?ÍÌH?èå)?ÏË?N?14`?ÏË?èå)?14`?N?33/?337?ÍÌH?ÍÌP?èå)?ÏË?N?14h?ÏË?èå1?14`?V?33/?33??ÍÌH?ÍÌX?èå)?ÏË'?N?14p?ÏË?èå9?14`?^?33/?33G?ÍÌH?ÍÌ`?èå)?ÏË/?N?14x?ÏË?èåA?14`?f?33/?33O?ÍÌH?ÍÌh?èå)?ÏË7?N?€?ÏË?èåI?14`?n?33/?33W?ÍÌH?ÍÌp?èå)?ÏË??N?„?ÏË?èåQ?14`?v?33/?33_?ÍÌH?ÍÌx?èå)?ÏËG?N?ˆ?ÏË?èåY?14`?~?33/?33g?ÍÌH?ff€?èå)?ÏËO?N?Œ?ÏË?èåa?14`? ƒ?33/?33o?ÍÌH?ff„?èå)?ÏËW?N??ÏË?èåi?14`? ‡?337?ÍÌ ½ÍÌP?ff†=èå1?ÃоV?ÃÐ >ÏË?†¡a½14h?Ãа=337?ÐÌL»ÍÌP?ffÆ=èå1?†¡Á½V?ÃÐ@>ÏË? Cü14h?ÃÐð=337?ffæ<ÍÌP?33>èå1?†¡½V?ÃÐ`>ÏË?Ðóò;14h?bh>337?33s=ÍÌP?33#>èå1? C½V?bh€>ÏË?z^=14h?bh8>337?š™¹=ÍÌP?33C>èå1?ÃPºV?bh>ÏË?=/=14h?bhX>337?š™ù=ÍÌP?33c>èå1?èyù<V?bh >ÏË?=/Ï=14h?bhx>337?ÍÌ>ÍÌP?š™>èå1?ô¼|=V?bh°>ÏË?ž—>14h?14Œ>337?ÍÌ<>ÍÌP?š™‘>èå1?z^¾=V?bhÀ>ÏË?ž—'>14h?14œ>337?ÍÌ\>ÍÌP?š™¡>èå1?z^þ=V?bhÐ>ÏË?ž—G>14h?14¬>337?ÍÌ|>ÍÌP?š™±>èå1?=/>V?bhà>ÏË?ž—g>14h?14¼>337?ffŽ>ÍÌP?š™Á>èå1?=/?>V?bhð>ÏË?Ï˃>14h?14Ì>337?ffž>ÍÌP?š™Ñ>èå1?=/_>V?14?ÏË?ÏË“>14h?14Ü>337?ff®>ÍÌP?š™á>èå1?=/>V?14?ÏË?ÏË£>14h?14ì>337?ff¾>ÍÌP?š™ñ>èå1?ž—>V?14?ÏË?Ï˳>14h?14ü>337?ffÎ>ÍÌP?ÍÌ?èå1?ž—Ÿ>V?14?ÏË?ÏËÃ>14h??337?ffÞ>ÍÌP?ÍÌ?èå1?ž—¯>V?14 ?ÏË?ÏËÓ>14h??337?ffî>ÍÌP?ÍÌ?èå1?ž—¿>V?14(?ÏË?ÏËã>14h??337?ffþ>ÍÌP?ÍÌ?èå1?ž—Ï>V?140?ÏË?ÏËó>14h??337?33?ÍÌP?ÍÌ ?èå1?ž—ß>V?148?ÏË?èå?14h?&?337?33?ÍÌP?ÍÌ(?èå1?ž—ï>V?14@?ÏË?èå ?14h?.?337?33?ÍÌP?ÍÌ0?èå1?ž—ÿ>V?14H?ÏË?èå?14h?6?337?33?ÍÌP?ÍÌ8?èå1?ÏË?V?14P?ÏË?èå?14h?>?337?33'?ÍÌP?ÍÌ@?èå1?ÏË?V?14X?ÏË?èå!?14h?F?337?33/?ÍÌP?ÍÌH?èå1?ÏË?V?14`?ÏË?èå)?14h?N?337?337?ÍÌP?ÍÌP?èå1?ÏË?V?14h?ÏË?èå1?14h?V?337?33??ÍÌP?ÍÌX?èå1?ÏË'?V?14p?ÏË?èå9?14h?^?337?33G?ÍÌP?ÍÌ`?èå1?ÏË/?V?14x?ÏË?èåA?14h?f?337?33O?ÍÌP?ÍÌh?èå1?ÏË7?V?€?ÏË?èåI?14h?n?337?33W?ÍÌP?ÍÌp?èå1?ÏË??V?„?ÏË?èåQ?14h?v?337?33_?ÍÌP?ÍÌx?èå1?ÏËG?V?ˆ?ÏË?èåY?14h?~?337?33g?ÍÌP?ff€?èå1?ÏËO?V?Œ?ÏË?èåa?14h? ƒ?337?33o?ÍÌP?ff„?èå1?ÏËW?V??ÏË?èåi?14h? ‡?33??ÍÌ ½ÍÌX?ff†=èå9?Ãо^?ÃÐ >ÏË'?†¡a½14p?Ãа=33??ÐÌL»ÍÌX?ffÆ=èå9?†¡Á½^?ÃÐ@>ÏË'? Cü14p?ÃÐð=33??ffæ<ÍÌX?33>èå9?†¡½^?ÃÐ`>ÏË'?Ðóò;14p?bh>33??33s=ÍÌX?33#>èå9? C½^?bh€>ÏË'?z^=14p?bh8>33??š™¹=ÍÌX?33C>èå9?ÃPº^?bh>ÏË'?=/=14p?bhX>33??š™ù=ÍÌX?33c>èå9?èyù<^?bh >ÏË'?=/Ï=14p?bhx>33??ÍÌ>ÍÌX?š™>èå9?ô¼|=^?bh°>ÏË'?ž—>14p?14Œ>33??ÍÌ<>ÍÌX?š™‘>èå9?z^¾=^?bhÀ>ÏË'?ž—'>14p?14œ>33??ÍÌ\>ÍÌX?š™¡>èå9?z^þ=^?bhÐ>ÏË'?ž—G>14p?14¬>33??ÍÌ|>ÍÌX?š™±>èå9?=/>^?bhà>ÏË'?ž—g>14p?14¼>33??ffŽ>ÍÌX?š™Á>èå9?=/?>^?bhð>ÏË'?Ï˃>14p?14Ì>33??ffž>ÍÌX?š™Ñ>èå9?=/_>^?14?ÏË'?ÏË“>14p?14Ü>33??ff®>ÍÌX?š™á>èå9?=/>^?14?ÏË'?ÏË£>14p?14ì>33??ff¾>ÍÌX?š™ñ>èå9?ž—>^?14?ÏË'?Ï˳>14p?14ü>33??ffÎ>ÍÌX?ÍÌ?èå9?ž—Ÿ>^?14?ÏË'?ÏËÃ>14p??33??ffÞ>ÍÌX?ÍÌ?èå9?ž—¯>^?14 ?ÏË'?ÏËÓ>14p??33??ffî>ÍÌX?ÍÌ?èå9?ž—¿>^?14(?ÏË'?ÏËã>14p??33??ffþ>ÍÌX?ÍÌ?èå9?ž—Ï>^?140?ÏË'?ÏËó>14p??33??33?ÍÌX?ÍÌ ?èå9?ž—ß>^?148?ÏË'?èå?14p?&?33??33?ÍÌX?ÍÌ(?èå9?ž—ï>^?14@?ÏË'?èå ?14p?.?33??33?ÍÌX?ÍÌ0?èå9?ž—ÿ>^?14H?ÏË'?èå?14p?6?33??33?ÍÌX?ÍÌ8?èå9?ÏË?^?14P?ÏË'?èå?14p?>?33??33'?ÍÌX?ÍÌ@?èå9?ÏË?^?14X?ÏË'?èå!?14p?F?33??33/?ÍÌX?ÍÌH?èå9?ÏË?^?14`?ÏË'?èå)?14p?N?33??337?ÍÌX?ÍÌP?èå9?ÏË?^?14h?ÏË'?èå1?14p?V?33??33??ÍÌX?ÍÌX?èå9?ÏË'?^?14p?ÏË'?èå9?14p?^?33??33G?ÍÌX?ÍÌ`?èå9?ÏË/?^?14x?ÏË'?èåA?14p?f?33??33O?ÍÌX?ÍÌh?èå9?ÏË7?^?€?ÏË'?èåI?14p?n?33??33W?ÍÌX?ÍÌp?èå9?ÏË??^?„?ÏË'?èåQ?14p?v?33??33_?ÍÌX?ÍÌx?èå9?ÏËG?^?ˆ?ÏË'?èåY?14p?~?33??33g?ÍÌX?ff€?èå9?ÏËO?^?Œ?ÏË'?èåa?14p? ƒ?33??33o?ÍÌX?ff„?èå9?ÏËW?^??ÏË'?èåi?14p? ‡?33G?ÍÌ ½ÍÌ`?ff†=èåA?Ãоf?ÃÐ >ÏË/?†¡a½14x?Ãа=33G?ÐÌL»ÍÌ`?ffÆ=èåA?†¡Á½f?ÃÐ@>ÏË/? Cü14x?ÃÐð=33G?ffæ<ÍÌ`?33>èåA?†¡½f?ÃÐ`>ÏË/?Ðóò;14x?bh>33G?33s=ÍÌ`?33#>èåA? C½f?bh€>ÏË/?z^=14x?bh8>33G?š™¹=ÍÌ`?33C>èåA?ÃPºf?bh>ÏË/?=/=14x?bhX>33G?š™ù=ÍÌ`?33c>èåA?èyù<f?bh >ÏË/?=/Ï=14x?bhx>33G?ÍÌ>ÍÌ`?š™>èåA?ô¼|=f?bh°>ÏË/?ž—>14x?14Œ>33G?ÍÌ<>ÍÌ`?š™‘>èåA?z^¾=f?bhÀ>ÏË/?ž—'>14x?14œ>33G?ÍÌ\>ÍÌ`?š™¡>èåA?z^þ=f?bhÐ>ÏË/?ž—G>14x?14¬>33G?ÍÌ|>ÍÌ`?š™±>èåA?=/>f?bhà>ÏË/?ž—g>14x?14¼>33G?ffŽ>ÍÌ`?š™Á>èåA?=/?>f?bhð>ÏË/?Ï˃>14x?14Ì>33G?ffž>ÍÌ`?š™Ñ>èåA?=/_>f?14?ÏË/?ÏË“>14x?14Ü>33G?ff®>ÍÌ`?š™á>èåA?=/>f?14?ÏË/?ÏË£>14x?14ì>33G?ff¾>ÍÌ`?š™ñ>èåA?ž—>f?14?ÏË/?Ï˳>14x?14ü>33G?ffÎ>ÍÌ`?ÍÌ?èåA?ž—Ÿ>f?14?ÏË/?ÏËÃ>14x??33G?ffÞ>ÍÌ`?ÍÌ?èåA?ž—¯>f?14 ?ÏË/?ÏËÓ>14x??33G?ffî>ÍÌ`?ÍÌ?èåA?ž—¿>f?14(?ÏË/?ÏËã>14x??33G?ffþ>ÍÌ`?ÍÌ?èåA?ž—Ï>f?140?ÏË/?ÏËó>14x??33G?33?ÍÌ`?ÍÌ ?èåA?ž—ß>f?148?ÏË/?èå?14x?&?33G?33?ÍÌ`?ÍÌ(?èåA?ž—ï>f?14@?ÏË/?èå ?14x?.?33G?33?ÍÌ`?ÍÌ0?èåA?ž—ÿ>f?14H?ÏË/?èå?14x?6?33G?33?ÍÌ`?ÍÌ8?èåA?ÏË?f?14P?ÏË/?èå?14x?>?33G?33'?ÍÌ`?ÍÌ@?èåA?ÏË?f?14X?ÏË/?èå!?14x?F?33G?33/?ÍÌ`?ÍÌH?èåA?ÏË?f?14`?ÏË/?èå)?14x?N?33G?337?ÍÌ`?ÍÌP?èåA?ÏË?f?14h?ÏË/?èå1?14x?V?33G?33??ÍÌ`?ÍÌX?èåA?ÏË'?f?14p?ÏË/?èå9?14x?^?33G?33G?ÍÌ`?ÍÌ`?èåA?ÏË/?f?14x?ÏË/?èåA?14x?f?33G?33O?ÍÌ`?ÍÌh?èåA?ÏË7?f?€?ÏË/?èåI?14x?n?33G?33W?ÍÌ`?ÍÌp?èåA?ÏË??f?„?ÏË/?èåQ?14x?v?33G?33_?ÍÌ`?ÍÌx?èåA?ÏËG?f?ˆ?ÏË/?èåY?14x?~?33G?33g?ÍÌ`?ff€?èåA?ÏËO?f?Œ?ÏË/?èåa?14x? ƒ?33G?33o?ÍÌ`?ff„?èåA?ÏËW?f??ÏË/?èåi?14x? ‡?33O?ÍÌ ½ÍÌh?ff†=èåI?Ãоn?ÃÐ >ÏË7?†¡a½€?Ãа=33O?ÐÌL»ÍÌh?ffÆ=èåI?†¡Á½n?ÃÐ@>ÏË7? Cü€?ÃÐð=33O?ffæ<ÍÌh?33>èåI?†¡½n?ÃÐ`>ÏË7?Ðóò;€?bh>33O?33s=ÍÌh?33#>èåI? C½n?bh€>ÏË7?z^=€?bh8>33O?š™¹=ÍÌh?33C>èåI?ÃPºn?bh>ÏË7?=/=€?bhX>33O?š™ù=ÍÌh?33c>èåI?èyù<n?bh >ÏË7?=/Ï=€?bhx>33O?ÍÌ>ÍÌh?š™>èåI?ô¼|=n?bh°>ÏË7?ž—>€?14Œ>33O?ÍÌ<>ÍÌh?š™‘>èåI?z^¾=n?bhÀ>ÏË7?ž—'>€?14œ>33O?ÍÌ\>ÍÌh?š™¡>èåI?z^þ=n?bhÐ>ÏË7?ž—G>€?14¬>33O?ÍÌ|>ÍÌh?š™±>èåI?=/>n?bhà>ÏË7?ž—g>€?14¼>33O?ffŽ>ÍÌh?š™Á>èåI?=/?>n?bhð>ÏË7?Ï˃>€?14Ì>33O?ffž>ÍÌh?š™Ñ>èåI?=/_>n?14?ÏË7?ÏË“>€?14Ü>33O?ff®>ÍÌh?š™á>èåI?=/>n?14?ÏË7?ÏË£>€?14ì>33O?ff¾>ÍÌh?š™ñ>èåI?ž—>n?14?ÏË7?Ï˳>€?14ü>33O?ffÎ>ÍÌh?ÍÌ?èåI?ž—Ÿ>n?14?ÏË7?ÏËÃ>€??33O?ffÞ>ÍÌh?ÍÌ?èåI?ž—¯>n?14 ?ÏË7?ÏËÓ>€??33O?ffî>ÍÌh?ÍÌ?èåI?ž—¿>n?14(?ÏË7?ÏËã>€??33O?ffþ>ÍÌh?ÍÌ?èåI?ž—Ï>n?140?ÏË7?ÏËó>€??33O?33?ÍÌh?ÍÌ ?èåI?ž—ß>n?148?ÏË7?èå?€?&?33O?33?ÍÌh?ÍÌ(?èåI?ž—ï>n?14@?ÏË7?èå ?€?.?33O?33?ÍÌh?ÍÌ0?èåI?ž—ÿ>n?14H?ÏË7?èå?€?6?33O?33?ÍÌh?ÍÌ8?èåI?ÏË?n?14P?ÏË7?èå?€?>?33O?33'?ÍÌh?ÍÌ@?èåI?ÏË?n?14X?ÏË7?èå!?€?F?33O?33/?ÍÌh?ÍÌH?èåI?ÏË?n?14`?ÏË7?èå)?€?N?33O?337?ÍÌh?ÍÌP?èåI?ÏË?n?14h?ÏË7?èå1?€?V?33O?33??ÍÌh?ÍÌX?èåI?ÏË'?n?14p?ÏË7?èå9?€?^?33O?33G?ÍÌh?ÍÌ`?èåI?ÏË/?n?14x?ÏË7?èåA?€?f?33O?33O?ÍÌh?ÍÌh?èåI?ÏË7?n?€?ÏË7?èåI?€?n?33O?33W?ÍÌh?ÍÌp?èåI?ÏË??n?„?ÏË7?èåQ?€?v?33O?33_?ÍÌh?ÍÌx?èåI?ÏËG?n?ˆ?ÏË7?èåY?€?~?33O?33g?ÍÌh?ff€?èåI?ÏËO?n?Œ?ÏË7?èåa?€? ƒ?33O?33o?ÍÌh?ff„?èåI?ÏËW?n??ÏË7?èåi?€? ‡?33W?ÍÌ ½ÍÌp?ff†=èåQ?Ãоv?ÃÐ >ÏË??†¡a½„?Ãа=33W?ÐÌL»ÍÌp?ffÆ=èåQ?†¡Á½v?ÃÐ@>ÏË?? Cü„?ÃÐð=33W?ffæ<ÍÌp?33>èåQ?†¡½v?ÃÐ`>ÏË??Ðóò;„?bh>33W?33s=ÍÌp?33#>èåQ? C½v?bh€>ÏË??z^=„?bh8>33W?š™¹=ÍÌp?33C>èåQ?ÃPºv?bh>ÏË??=/=„?bhX>33W?š™ù=ÍÌp?33c>èåQ?èyù<v?bh >ÏË??=/Ï=„?bhx>33W?ÍÌ>ÍÌp?š™>èåQ?ô¼|=v?bh°>ÏË??ž—>„?14Œ>33W?ÍÌ<>ÍÌp?š™‘>èåQ?z^¾=v?bhÀ>ÏË??ž—'>„?14œ>33W?ÍÌ\>ÍÌp?š™¡>èåQ?z^þ=v?bhÐ>ÏË??ž—G>„?14¬>33W?ÍÌ|>ÍÌp?š™±>èåQ?=/>v?bhà>ÏË??ž—g>„?14¼>33W?ffŽ>ÍÌp?š™Á>èåQ?=/?>v?bhð>ÏË??Ï˃>„?14Ì>33W?ffž>ÍÌp?š™Ñ>èåQ?=/_>v?14?ÏË??ÏË“>„?14Ü>33W?ff®>ÍÌp?š™á>èåQ?=/>v?14?ÏË??ÏË£>„?14ì>33W?ff¾>ÍÌp?š™ñ>èåQ?ž—>v?14?ÏË??Ï˳>„?14ü>33W?ffÎ>ÍÌp?ÍÌ?èåQ?ž—Ÿ>v?14?ÏË??ÏËÃ>„??33W?ffÞ>ÍÌp?ÍÌ?èåQ?ž—¯>v?14 ?ÏË??ÏËÓ>„??33W?ffî>ÍÌp?ÍÌ?èåQ?ž—¿>v?14(?ÏË??ÏËã>„??33W?ffþ>ÍÌp?ÍÌ?èåQ?ž—Ï>v?140?ÏË??ÏËó>„??33W?33?ÍÌp?ÍÌ ?èåQ?ž—ß>v?148?ÏË??èå?„?&?33W?33?ÍÌp?ÍÌ(?èåQ?ž—ï>v?14@?ÏË??èå ?„?.?33W?33?ÍÌp?ÍÌ0?èåQ?ž—ÿ>v?14H?ÏË??èå?„?6?33W?33?ÍÌp?ÍÌ8?èåQ?ÏË?v?14P?ÏË??èå?„?>?33W?33'?ÍÌp?ÍÌ@?èåQ?ÏË?v?14X?ÏË??èå!?„?F?33W?33/?ÍÌp?ÍÌH?èåQ?ÏË?v?14`?ÏË??èå)?„?N?33W?337?ÍÌp?ÍÌP?èåQ?ÏË?v?14h?ÏË??èå1?„?V?33W?33??ÍÌp?ÍÌX?èåQ?ÏË'?v?14p?ÏË??èå9?„?^?33W?33G?ÍÌp?ÍÌ`?èåQ?ÏË/?v?14x?ÏË??èåA?„?f?33W?33O?ÍÌp?ÍÌh?èåQ?ÏË7?v?€?ÏË??èåI?„?n?33W?33W?ÍÌp?ÍÌp?èåQ?ÏË??v?„?ÏË??èåQ?„?v?33W?33_?ÍÌp?ÍÌx?èåQ?ÏËG?v?ˆ?ÏË??èåY?„?~?33W?33g?ÍÌp?ff€?èåQ?ÏËO?v?Œ?ÏË??èåa?„? ƒ?33W?33o?ÍÌp?ff„?èåQ?ÏËW?v??ÏË??èåi?„? ‡?33_?ÍÌ ½ÍÌx?ff†=èåY?Ãо~?ÃÐ >ÏËG?†¡a½ˆ?Ãа=33_?ÐÌL»ÍÌx?ffÆ=èåY?†¡Á½~?ÃÐ@>ÏËG? Cüˆ?ÃÐð=33_?ffæ<ÍÌx?33>èåY?†¡½~?ÃÐ`>ÏËG?Ðóò;ˆ?bh>33_?33s=ÍÌx?33#>èåY? C½~?bh€>ÏËG?z^=ˆ?bh8>33_?š™¹=ÍÌx?33C>èåY?ÃPº~?bh>ÏËG?=/=ˆ?bhX>33_?š™ù=ÍÌx?33c>èåY?èyù<~?bh >ÏËG?=/Ï=ˆ?bhx>33_?ÍÌ>ÍÌx?š™>èåY?ô¼|=~?bh°>ÏËG?ž—>ˆ?14Œ>33_?ÍÌ<>ÍÌx?š™‘>èåY?z^¾=~?bhÀ>ÏËG?ž—'>ˆ?14œ>33_?ÍÌ\>ÍÌx?š™¡>èåY?z^þ=~?bhÐ>ÏËG?ž—G>ˆ?14¬>33_?ÍÌ|>ÍÌx?š™±>èåY?=/>~?bhà>ÏËG?ž—g>ˆ?14¼>33_?ffŽ>ÍÌx?š™Á>èåY?=/?>~?bhð>ÏËG?Ï˃>ˆ?14Ì>33_?ffž>ÍÌx?š™Ñ>èåY?=/_>~?14?ÏËG?ÏË“>ˆ?14Ü>33_?ff®>ÍÌx?š™á>èåY?=/>~?14?ÏËG?ÏË£>ˆ?14ì>33_?ff¾>ÍÌx?š™ñ>èåY?ž—>~?14?ÏËG?Ï˳>ˆ?14ü>33_?ffÎ>ÍÌx?ÍÌ?èåY?ž—Ÿ>~?14?ÏËG?ÏËÃ>ˆ??33_?ffÞ>ÍÌx?ÍÌ?èåY?ž—¯>~?14 ?ÏËG?ÏËÓ>ˆ??33_?ffî>ÍÌx?ÍÌ?èåY?ž—¿>~?14(?ÏËG?ÏËã>ˆ??33_?ffþ>ÍÌx?ÍÌ?èåY?ž—Ï>~?140?ÏËG?ÏËó>ˆ??33_?33?ÍÌx?ÍÌ ?èåY?ž—ß>~?148?ÏËG?èå?ˆ?&?33_?33?ÍÌx?ÍÌ(?èåY?ž—ï>~?14@?ÏËG?èå ?ˆ?.?33_?33?ÍÌx?ÍÌ0?èåY?ž—ÿ>~?14H?ÏËG?èå?ˆ?6?33_?33?ÍÌx?ÍÌ8?èåY?ÏË?~?14P?ÏËG?èå?ˆ?>?33_?33'?ÍÌx?ÍÌ@?èåY?ÏË?~?14X?ÏËG?èå!?ˆ?F?33_?33/?ÍÌx?ÍÌH?èåY?ÏË?~?14`?ÏËG?èå)?ˆ?N?33_?337?ÍÌx?ÍÌP?èåY?ÏË?~?14h?ÏËG?èå1?ˆ?V?33_?33??ÍÌx?ÍÌX?èåY?ÏË'?~?14p?ÏËG?èå9?ˆ?^?33_?33G?ÍÌx?ÍÌ`?èåY?ÏË/?~?14x?ÏËG?èåA?ˆ?f?33_?33O?ÍÌx?ÍÌh?èåY?ÏË7?~?€?ÏËG?èåI?ˆ?n?33_?33W?ÍÌx?ÍÌp?èåY?ÏË??~?„?ÏËG?èåQ?ˆ?v?33_?33_?ÍÌx?ÍÌx?èåY?ÏËG?~?ˆ?ÏËG?èåY?ˆ?~?33_?33g?ÍÌx?ff€?èåY?ÏËO?~?Œ?ÏËG?èåa?ˆ? ƒ?33_?33o?ÍÌx?ff„?èåY?ÏËW?~??ÏËG?èåi?ˆ? ‡?33g?ÍÌ ½ff€?ff†=èåa?Ãо ƒ?ÃÐ >ÏËO?†¡a½Œ?Ãа=33g?ÐÌL»ff€?ffÆ=èåa?†¡Á½ ƒ?ÃÐ@>ÏËO? CüŒ?ÃÐð=33g?ffæèåa?†¡½ ƒ?ÃÐ`>ÏËO?Ðóò;Œ?bh>33g?33s=ff€?33#>èåa? C½ ƒ?bh€>ÏËO?z^=Œ?bh8>33g?š™¹=ff€?33C>èåa?ÃPº ƒ?bh>ÏËO?=/=Œ?bhX>33g?š™ù=ff€?33c>èåa?èyù< ƒ?bh >ÏËO?=/Ï=Œ?bhx>33g?ÍÌ>ff€?š™>èåa?ô¼|= ƒ?bh°>ÏËO?ž—>Œ?14Œ>33g?ÍÌ<>ff€?š™‘>èåa?z^¾= ƒ?bhÀ>ÏËO?ž—'>Œ?14œ>33g?ÍÌ\>ff€?š™¡>èåa?z^þ= ƒ?bhÐ>ÏËO?ž—G>Œ?14¬>33g?ÍÌ|>ff€?š™±>èåa?=/> ƒ?bhà>ÏËO?ž—g>Œ?14¼>33g?ffŽ>ff€?š™Á>èåa?=/?> ƒ?bhð>ÏËO?Ï˃>Œ?14Ì>33g?ffž>ff€?š™Ñ>èåa?=/_> ƒ?14?ÏËO?ÏË“>Œ?14Ü>33g?ff®>ff€?š™á>èåa?=/> ƒ?14?ÏËO?ÏË£>Œ?14ì>33g?ff¾>ff€?š™ñ>èåa?ž—> ƒ?14?ÏËO?Ï˳>Œ?14ü>33g?ffÎ>ff€?ÍÌ?èåa?ž—Ÿ> ƒ?14?ÏËO?ÏËÃ>Œ??33g?ffÞ>ff€?ÍÌ?èåa?ž—¯> ƒ?14 ?ÏËO?ÏËÓ>Œ??33g?ffî>ff€?ÍÌ?èåa?ž—¿> ƒ?14(?ÏËO?ÏËã>Œ??33g?ffþ>ff€?ÍÌ?èåa?ž—Ï> ƒ?140?ÏËO?ÏËó>Œ??33g?33?ff€?ÍÌ ?èåa?ž—ß> ƒ?148?ÏËO?èå?Œ?&?33g?33?ff€?ÍÌ(?èåa?ž—ï> ƒ?14@?ÏËO?èå ?Œ?.?33g?33?ff€?ÍÌ0?èåa?ž—ÿ> ƒ?14H?ÏËO?èå?Œ?6?33g?33?ff€?ÍÌ8?èåa?ÏË? ƒ?14P?ÏËO?èå?Œ?>?33g?33'?ff€?ÍÌ@?èåa?ÏË? ƒ?14X?ÏËO?èå!?Œ?F?33g?33/?ff€?ÍÌH?èåa?ÏË? ƒ?14`?ÏËO?èå)?Œ?N?33g?337?ff€?ÍÌP?èåa?ÏË? ƒ?14h?ÏËO?èå1?Œ?V?33g?33??ff€?ÍÌX?èåa?ÏË'? ƒ?14p?ÏËO?èå9?Œ?^?33g?33G?ff€?ÍÌ`?èåa?ÏË/? ƒ?14x?ÏËO?èåA?Œ?f?33g?33O?ff€?ÍÌh?èåa?ÏË7? ƒ?€?ÏËO?èåI?Œ?n?33g?33W?ff€?ÍÌp?èåa?ÏË?? ƒ?„?ÏËO?èåQ?Œ?v?33g?33_?ff€?ÍÌx?èåa?ÏËG? ƒ?ˆ?ÏËO?èåY?Œ?~?33g?33g?ff€?ff€?èåa?ÏËO? ƒ?Œ?ÏËO?èåa?Œ? ƒ?33g?33o?ff€?ff„?èåa?ÏËW? ƒ??ÏËO?èåi?Œ? ‡?33o?ÍÌ ½ff„?ff†=èåi?Ãо ‡?ÃÐ >ÏËW?†¡a½?Ãа=33o?ÐÌL»ff„?ffÆ=èåi?†¡Á½ ‡?ÃÐ@>ÏËW? Cü?ÃÐð=33o?ffæèåi?†¡½ ‡?ÃÐ`>ÏËW?Ðóò;?bh>33o?33s=ff„?33#>èåi? C½ ‡?bh€>ÏËW?z^=?bh8>33o?š™¹=ff„?33C>èåi?ÃPº ‡?bh>ÏËW?=/=?bhX>33o?š™ù=ff„?33c>èåi?èyù< ‡?bh >ÏËW?=/Ï=?bhx>33o?ÍÌ>ff„?š™>èåi?ô¼|= ‡?bh°>ÏËW?ž—>?14Œ>33o?ÍÌ<>ff„?š™‘>èåi?z^¾= ‡?bhÀ>ÏËW?ž—'>?14œ>33o?ÍÌ\>ff„?š™¡>èåi?z^þ= ‡?bhÐ>ÏËW?ž—G>?14¬>33o?ÍÌ|>ff„?š™±>èåi?=/> ‡?bhà>ÏËW?ž—g>?14¼>33o?ffŽ>ff„?š™Á>èåi?=/?> ‡?bhð>ÏËW?Ï˃>?14Ì>33o?ffž>ff„?š™Ñ>èåi?=/_> ‡?14?ÏËW?ÏË“>?14Ü>33o?ff®>ff„?š™á>èåi?=/> ‡?14?ÏËW?ÏË£>?14ì>33o?ff¾>ff„?š™ñ>èåi?ž—> ‡?14?ÏËW?Ï˳>?14ü>33o?ffÎ>ff„?ÍÌ?èåi?ž—Ÿ> ‡?14?ÏËW?ÏËÃ>??33o?ffÞ>ff„?ÍÌ?èåi?ž—¯> ‡?14 ?ÏËW?ÏËÓ>??33o?ffî>ff„?ÍÌ?èåi?ž—¿> ‡?14(?ÏËW?ÏËã>??33o?ffþ>ff„?ÍÌ?èåi?ž—Ï> ‡?140?ÏËW?ÏËó>??33o?33?ff„?ÍÌ ?èåi?ž—ß> ‡?148?ÏËW?èå??&?33o?33?ff„?ÍÌ(?èåi?ž—ï> ‡?14@?ÏËW?èå ??.?33o?33?ff„?ÍÌ0?èåi?ž—ÿ> ‡?14H?ÏËW?èå??6?33o?33?ff„?ÍÌ8?èåi?ÏË? ‡?14P?ÏËW?èå??>?33o?33'?ff„?ÍÌ@?èåi?ÏË? ‡?14X?ÏËW?èå!??F?33o?33/?ff„?ÍÌH?èåi?ÏË? ‡?14`?ÏËW?èå)??N?33o?337?ff„?ÍÌP?èåi?ÏË? ‡?14h?ÏËW?èå1??V?33o?33??ff„?ÍÌX?èåi?ÏË'? ‡?14p?ÏËW?èå9??^?33o?33G?ff„?ÍÌ`?èåi?ÏË/? ‡?14x?ÏËW?èåA??f?33o?33O?ff„?ÍÌh?èåi?ÏË7? ‡?€?ÏËW?èåI??n?33o?33W?ff„?ÍÌp?èåi?ÏË?? ‡?„?ÏËW?èåQ??v?33o?33_?ff„?ÍÌx?èåi?ÏËG? ‡?ˆ?ÏËW?èåY??~?33o?33g?ff„?ff€?èåi?ÏËO? ‡?Œ?ÏËW?èåa?? ƒ?33o?33o?ff„?ff„?èåi?ÏËW? ‡??ÏËW?èåi?? ‡?43¾23¾43S>23S>[/6¾Y/6¾[/v>Y/v>Vm½½Sm]¾«¶>ª¶Ž>Vm]¾Sm½½«¶Ž>ª¶>쎽1‹¾v>1«>3‹¾x鎽3«>¼t>43¾df¦½43S>™™‰>[/6¾²^ì½[/v>¬›>Vm½½Sm¾«¶>ª¶®>Vm]¾Lµõ¼«¶Ž>ª¶^>쎽,bV¾v>1Ë>3‹¾€—î»3«>¼tG>43¾™™¼43S>™™©>[/6¾d½X½[/v>¬»>Vm½½¦Úº½«¶>ª¶Î>Vm]¾Z%=«¶Ž>U[>쎽,b¾v>1ë>3‹¾-b=3«>^ºƒ>43¾833=43S>™™É>[/6¾p +<[/v>¬Û>Vm½½˜j뼫¶>ª¶î>Vm]¾­’Â=«¶Ž>U[¯>쎽XĬ½v>‹˜?3‹¾ˆñ=3«>^º£>43¾œ™Ù=43S>™™é>[/6¾N¡“=[/v>¬û>Vm½½´J +=«¶>U[?Vm]¾VI!>«¶Ž>U[Ï>쎽`³¼v>‹˜?3‹¾D‹8>3«>^ºÃ>43¾ÎÌ,>43S>ÌÌ?[/6¾§Ð >[/v>Ö‹ ?Vm½½Z%Å=«¶>U[?Vm]¾VIa>«¶Ž>U[ï>쎽Pw&=v>‹˜%?3‹¾D‹x>3«>^ºã>43¾ÎÌl>43S>ÌÌ?[/6¾§ÐI>[/v>Ö‹?Vm½½­’">«¶>U['?Vm]¾«¤>«¶Ž>ª­?쎽¨;Ó=v>‹˜5?3‹¾¢Eœ>3«>/Ý?43¾gf–>43S>ÌÌ$?[/6¾Tè„>[/v>Ö‹-?Vm½½­’b>«¶>U[7?Vm]¾«¤°>«¶Ž>ª­?쎽Ô)>v>‹˜E?3‹¾¢E¼>3«>/Ý?43¾gf¶>43S>ÌÌ4?[/6¾Tè¤>[/v>Ö‹=?Vm½½VI‘>«¶>U[G?Vm]¾«¤Ð>«¶Ž>ª­'?쎽Ôi>v>‹˜U?3‹¾¢EÜ>3«>/Ý!?43¾gfÖ>43S>ÌÌD?[/6¾TèÄ>[/v>Ö‹M?Vm½½VI±>«¶>U[W?Vm]¾«¤ð>«¶Ž>ª­7?쎽êΔ>v>‹˜e?3‹¾¢Eü>3«>/Ý1?43¾gfö>43S>ÌÌT?[/6¾Tèä>[/v>Ö‹]?Vm½½VIÑ>«¶>U[g?Vm]¾VR?«¶Ž>ª­G?쎽êδ>v>‹˜u?3‹¾Ñ"?3«>/ÝA?43¾43 ?43S>ÌÌd?[/6¾*t?[/v>Ö‹m?Vm½½VIñ>«¶>U[w?Vm]¾VR?«¶Ž>ª­W?쎽êÎÔ>v>FÌ‚?3‹¾Ñ"?3«>/ÝQ?43¾43?43S>ÌÌt?[/6¾*t?[/v>Ö‹}?Vm½½«¤?«¶>ª­ƒ?Vm]¾VR(?«¶Ž>ª­g?쎽êÎô>v>FÌŠ?3‹¾Ñ".?3«>/Ýa?43¾43+?43S>ff‚?[/6¾*t"?[/v>ëņ?Vm½½«¤?«¶>ª­‹?Vm]¾VR8?«¶Ž>ª­w?쎽ug +?v>FÌ’?3‹¾Ñ">?3«>/Ýq?43¾43;?43S>ffŠ?[/6¾*t2?[/v>ëÅŽ?Vm½½«¤(?«¶>ª­“?Vm]¾VRH?«¶Ž>ÕÖƒ?쎽ug?v>FÌš?3‹¾Ñ"N?3«>˜î€?43¾43K?43S>ff’?[/6¾*tB?[/v>ëÅ–?Vm½½«¤8?«¶>ª­›?Vm]¾VRX?«¶Ž>ÕÖ‹?쎽ug*?v>FÌ¢?3‹¾Ñ"^?3«>˜îˆ?hf¦½23¾š™‰>23S>¶^ì½Y/6¾®›>Y/v>Xµõ¼Sm]¾«¶^>ª¶Ž>Vm¾Sm½½«¶®>ª¶>àÁî»1‹¾vG>1«>&fV¾x鎽3Ë>¼t>hf¦½df¦½š™‰>™™‰>¶^ì½²^ì½®›>¬›>Xµõ¼Sm¾«¶^>ª¶®>Vm¾Lµõ¼«¶®>ª¶^>àÁî»,bV¾vG>1Ë>&fV¾€—î»3Ë>¼tG>hf¦½™™¼š™‰>™™©>¶^ì½d½X½®›>¬»>Xµõ¼¦Úº½«¶^>ª¶Î>Vm¾Z%=«¶®>U[>àÁî»,b¾vG>1ë>&fV¾-b=3Ë>^ºƒ>hf¦½833=š™‰>™™É>¶^ì½p +<®›>¬Û>Xµõ¼˜j뼫¶^>ª¶î>Vm¾­’Â=«¶®>U[¯>àÁî»XĬ½vG>‹˜?&fV¾ˆñ=3Ë>^º£>hf¦½œ™Ù=š™‰>™™é>¶^ì½N¡“=®›>¬û>Xµõ¼´J +=«¶^>U[?Vm¾VI!>«¶®>U[Ï>àÁî»`³¼vG>‹˜?&fV¾D‹8>3Ë>^ºÃ>hf¦½ÎÌ,>š™‰>ÌÌ?¶^ì½§Ð >®›>Ö‹ ?Xµõ¼Z%Å=«¶^>U[?Vm¾VIa>«¶®>U[ï>àÁî»Pw&=vG>‹˜%?&fV¾D‹x>3Ë>^ºã>hf¦½ÎÌl>š™‰>ÌÌ?¶^ì½§ÐI>®›>Ö‹?Xµõ¼­’">«¶^>U['?Vm¾«¤>«¶®>ª­?àÁ;Ó=vG>‹˜5?&fV¾¢Eœ>3Ë>/Ý?hf¦½gf–>š™‰>ÌÌ$?¶^ì½Tè„>®›>Ö‹-?Xµõ¼­’b>«¶^>U[7?Vm¾«¤°>«¶®>ª­?àÁî»Ô)>vG>‹˜E?&fV¾¢E¼>3Ë>/Ý?hf¦½gf¶>š™‰>ÌÌ4?¶^ì½Tè¤>®›>Ö‹=?Xµõ¼VI‘>«¶^>U[G?Vm¾«¤Ð>«¶®>ª­'?àÁî»Ôi>vG>‹˜U?&fV¾¢EÜ>3Ë>/Ý!?hf¦½gfÖ>š™‰>ÌÌD?¶^ì½TèÄ>®›>Ö‹M?Xµõ¼VI±>«¶^>U[W?Vm¾«¤ð>«¶®>ª­7?àÁî»êΔ>vG>‹˜e?&fV¾¢Eü>3Ë>/Ý1?hf¦½gfö>š™‰>ÌÌT?¶^ì½Tèä>®›>Ö‹]?Xµõ¼VIÑ>«¶^>U[g?Vm¾VR?«¶®>ª­G?àÁî»êδ>vG>‹˜u?&fV¾Ñ"?3Ë>/ÝA?hf¦½43 ?š™‰>ÌÌd?¶^ì½*t?®›>Ö‹m?Xµõ¼VIñ>«¶^>U[w?Vm¾VR?«¶®>ª­W?àÁî»êÎÔ>vG>FÌ‚?&fV¾Ñ"?3Ë>/ÝQ?hf¦½43?š™‰>ÌÌt?¶^ì½*t?®›>Ö‹}?Xµõ¼«¤?«¶^>ª­ƒ?Vm¾VR(?«¶®>ª­g?àÁî»êÎô>vG>FÌŠ?&fV¾Ñ".?3Ë>/Ýa?hf¦½43+?š™‰>ff‚?¶^ì½*t"?®›>ëņ?Xµõ¼«¤?«¶^>ª­‹?Vm¾VR8?«¶®>ª­w?àÁî»ug +?vG>FÌ’?&fV¾Ñ">?3Ë>/Ýq?hf¦½43;?š™‰>ffŠ?¶^ì½*t2?®›>ëÅŽ?Xµõ¼«¤(?«¶^>ª­“?Vm¾VRH?«¶®>ÕÖƒ?àÁî»ug?vG>FÌš?&fV¾Ñ"N?3Ë>˜î€?hf¦½43K?š™‰>ff’?¶^ì½*tB?®›>ëÅ–?Xµõ¼«¤8?«¶^>ª­›?Vm¾VRX?«¶®>ÕÖ‹?àÁî»ug*?vG>FÌ¢?&fV¾Ñ"^?3Ë>˜îˆ? ™™¼23¾š™©>23S>l½X½Y/6¾®»>Y/v>T%=Sm]¾V[>ª¶Ž>¬Úº½Sm½½«¶Î>ª¶>Ä'b=1‹¾»ƒ>1«>&f¾x鎽3ë>¼t> ™™¼df¦½š™©>™™‰>l½X½²^ì½®»>¬›>T%=Sm¾V[>ª¶®>¬Úº½Lµõ¼«¶Î>ª¶^>Ä'b=,bV¾»ƒ>1Ë>&f¾€—î»3ë>¼tG> ™™¼™™¼š™©>™™©>l½X½d½X½®»>¬»>T%=¦Úº½V[>ª¶Î>¬Úº½Z%=«¶Î>U[>Ä'b=,b¾»ƒ>1ë>&f¾-b=3ë>^ºƒ> ™™¼833=š™©>™™É>l½X½p +<®»>¬Û>T%=˜jë¼V[>ª¶î>¬Úº½­’Â=«¶Î>U[¯>Ä'b=XĬ½»ƒ>‹˜?&f¾ˆñ=3ë>^º£> ™™¼œ™Ù=š™©>™™é>l½X½N¡“=®»>¬û>T%=´J +=V[>U[?¬Úº½VI!>«¶Î>U[Ï>Ä'b=`³¼»ƒ>‹˜?&f¾D‹8>3ë>^ºÃ> ™™¼ÎÌ,>š™©>ÌÌ?l½X½§Ð >®»>Ö‹ ?T%=Z%Å=V[>U[?¬Úº½VIa>«¶Î>U[ï>Ä'b=Pw&=»ƒ>‹˜%?&f¾D‹x>3ë>^ºã> ™™¼ÎÌl>š™©>ÌÌ?l½X½§ÐI>®»>Ö‹?T%=­’">V[>U['?¬Úº½«¤>«¶Î>ª­?Ä'b=¨;Ó=»ƒ>‹˜5?&f¾¢Eœ>3ë>/Ý? ™™¼gf–>š™©>ÌÌ$?l½X½Tè„>®»>Ö‹-?T%=­’b>V[>U[7?¬Úº½«¤°>«¶Î>ª­?Ä'b=Ô)>»ƒ>‹˜E?&f¾¢E¼>3ë>/Ý? ™™¼gf¶>š™©>ÌÌ4?l½X½Tè¤>®»>Ö‹=?T%=VI‘>V[>U[G?¬Úº½«¤Ð>«¶Î>ª­'?Ä'b=Ôi>»ƒ>‹˜U?&f¾¢EÜ>3ë>/Ý!? ™™¼gfÖ>š™©>ÌÌD?l½X½TèÄ>®»>Ö‹M?T%=VI±>V[>U[W?¬Úº½«¤ð>«¶Î>ª­7?Ä'b=êΔ>»ƒ>‹˜e?&f¾¢Eü>3ë>/Ý1? ™™¼gfö>š™©>ÌÌT?l½X½Tèä>®»>Ö‹]?T%=VIÑ>V[>U[g?¬Úº½VR?«¶Î>ª­G?Ä'b=êδ>»ƒ>‹˜u?&f¾Ñ"?3ë>/ÝA? ™™¼43 ?š™©>ÌÌd?l½X½*t?®»>Ö‹m?T%=VIñ>V[>U[w?¬Úº½VR?«¶Î>ª­W?Ä'b=êÎÔ>»ƒ>FÌ‚?&f¾Ñ"?3ë>/ÝQ? ™™¼43?š™©>ÌÌt?l½X½*t?®»>Ö‹}?T%=«¤?V[>ª­ƒ?¬Úº½VR(?«¶Î>ª­g?Ä'b=êÎô>»ƒ>FÌŠ?&f¾Ñ".?3ë>/Ýa? ™™¼43+?š™©>ff‚?l½X½*t"?®»>ëņ?T%=«¤?V[>ª­‹?¬Úº½VR8?«¶Î>ª­w?Ä'b=ug +?»ƒ>FÌ’?&f¾Ñ">?3ë>/Ýq? ™™¼43;?š™©>ffŠ?l½X½*t2?®»>ëÅŽ?T%=«¤(?V[>ª­“?¬Úº½VRH?«¶Î>ÕÖƒ?Ä'b=ug?»ƒ>FÌš?&f¾Ñ"N?3ë>˜î€? ™™¼43K?š™©>ff’?l½X½*tB?®»>ëÅ–?T%=«¤8?V[>ª­›?¬Úº½VRX?«¶Î>ÕÖ‹?Ä'b=ug*?»ƒ>FÌ¢?&f¾Ñ"^?3ë>˜îˆ?033=23¾š™É>23S>P +Y/v>ª’Â=Sm]¾V[¯>ª¶Ž>°jë¼Sm½½«¶î>ª¶>âñ=1‹¾»£>1«>L̬½xéŽ½Š™?¼t>033=df¦½š™É>™™‰>P +<²^ì½®Û>¬›>ª’Â=Sm¾V[¯>ª¶®>°jë¼Lµõ¼«¶î>ª¶^>âñ=,bV¾»£>1Ë>L̬½€—™?¼tG>033=™™¼š™É>™™©>P +¬»>ª’Â=¦Úº½V[¯>ª¶Î>°jë¼Z%=«¶î>U[>âñ=,b¾»£>1ë>L̬½-b=Š™?^ºƒ>033=833=š™É>™™É>P +

¬Û>ª’Â=˜jë¼V[¯>ª¶î>°jë¼­’Â=«¶î>U[¯>âñ=XĬ½»£>‹˜?L̬½ˆñ=Š™?^º£>033=œ™Ù=š™É>™™é>P +¬û>ª’Â=´J +=V[¯>U[?°jë¼VI!>«¶î>U[Ï>âñ=`³¼»£>‹˜?L̬½D‹8>Š™?^ºÃ>033=ÎÌ,>š™É>ÌÌ?P +<§Ð >®Û>Ö‹ ?ª’Â=Z%Å=V[¯>U[?°jë¼VIa>«¶î>U[ï>âñ=Pw&=»£>‹˜%?L̬½D‹x>Š™?^ºã>033=ÎÌl>š™É>ÌÌ?P +<§ÐI>®Û>Ö‹?ª’Â=­’">V[¯>U['?°j뼫¤>«¶î>ª­?âñ=¨;Ó=»£>‹˜5?L̬½¢Eœ>Š™?/Ý?033=gf–>š™É>ÌÌ$?P +®Û>Ö‹-?ª’Â=­’b>V[¯>U[7?°j뼫¤°>«¶î>ª­?âñ=Ô)>»£>‹˜E?L̬½¢E¼>Š™?/Ý?033=gf¶>š™É>ÌÌ4?P +®Û>Ö‹=?ª’Â=VI‘>V[¯>U[G?°j뼫¤Ð>«¶î>ª­'?âñ=Ôi>»£>‹˜U?L̬½¢EÜ>Š™?/Ý!?033=gfÖ>š™É>ÌÌD?P +®Û>Ö‹M?ª’Â=VI±>V[¯>U[W?°j뼫¤ð>«¶î>ª­7?âñ=êΔ>»£>‹˜e?L̬½¢Eü>Š™?/Ý1?033=gfö>š™É>ÌÌT?P +®Û>Ö‹]?ª’Â=VIÑ>V[¯>U[g?°jë¼VR?«¶î>ª­G?âñ=êδ>»£>‹˜u?L̬½Ñ"?Š™?/ÝA?033=43 ?š™É>ÌÌd?P +<*t?®Û>Ö‹m?ª’Â=VIñ>V[¯>U[w?°jë¼VR?«¶î>ª­W?âñ=êÎÔ>»£>FÌ‚?L̬½Ñ"?Š™?/ÝQ?033=43?š™É>ÌÌt?P +<*t?®Û>Ö‹}?ª’Â=«¤?V[¯>ª­ƒ?°jë¼VR(?«¶î>ª­g?âñ=êÎô>»£>FÌŠ?L̬½Ñ".?Š™?/Ýa?033=43+?š™É>ff‚?P +<*t"?®Û>ëņ?ª’Â=«¤?V[¯>ª­‹?°jë¼VR8?«¶î>ª­w?âñ=ug +?»£>FÌ’?L̬½Ñ">?Š™?/Ýq?033=43;?š™É>ffŠ?P +<*t2?®Û>ëÅŽ?ª’Â=«¤(?V[¯>ª­“?°jë¼VRH?«¶î>ÕÖƒ?âñ=ug?»£>FÌš?L̬½Ñ"N?Š™?˜î€?033=43K?š™É>ff’?P +<*tB?®Û>ëÅ–?ª’Â=«¤8?V[¯>ª­›?°jë¼VRX?«¶î>ÕÖ‹?âñ=ug*?»£>FÌ¢?L̬½Ñ"^?Š™?˜îˆ?˜™Ù=23¾š™é>23S>J¡“=Y/6¾®û>Y/v>UI!>Sm]¾V[Ï>ª¶Ž>¨J +=Sm½½V[?ª¶>ñ‰8>1‹¾»Ã>1«>01³¼xéŽ½Š™?¼t>˜™Ù=df¦½š™é>™™‰>J¡“=²^ì½®û>¬›>UI!>Sm¾V[Ï>ª¶®>¨J +=Lµõ¼V[?ª¶^>ñ‰8>,bV¾»Ã>1Ë>01³¼€—™?¼tG>˜™Ù=™™¼š™é>™™©>J¡“=d½X½®û>¬»>UI!>¦Úº½V[Ï>ª¶Î>¨J +=Z%=V[?U[>ñ‰8>,b¾»Ã>1ë>01³¼-b=Š™?^ºƒ>˜™Ù=833=š™é>™™É>J¡“=p +<®û>¬Û>UI!>˜jë¼V[Ï>ª¶î>¨J +=­’Â=V[?U[¯>ñ‰8>XĬ½»Ã>‹˜?01³¼ˆñ=Š™?^º£>˜™Ù=œ™Ù=š™é>™™é>J¡“=N¡“=®û>¬û>UI!>´J +=V[Ï>U[?¨J +=VI!>V[?U[Ï>ñ‰8>`³¼»Ã>‹˜?01³¼D‹8>Š™?^ºÃ>˜™Ù=ÎÌ,>š™é>ÌÌ?J¡“=§Ð >®û>Ö‹ ?UI!>Z%Å=V[Ï>U[?¨J +=VIa>V[?U[ï>ñ‰8>Pw&=»Ã>‹˜%?01³¼D‹x>Š™?^ºã>˜™Ù=ÎÌl>š™é>ÌÌ?J¡“=§ÐI>®û>Ö‹?UI!>­’">V[Ï>U['?¨J +=«¤>V[?ª­?ñ‰8>¨;Ó=»Ã>‹˜5?01³¼¢Eœ>Š™?/Ý?˜™Ù=gf–>š™é>ÌÌ$?J¡“=Tè„>®û>Ö‹-?UI!>­’b>V[Ï>U[7?¨J +=«¤°>V[?ª­?ñ‰8>Ô)>»Ã>‹˜E?01³¼¢E¼>Š™?/Ý?˜™Ù=gf¶>š™é>ÌÌ4?J¡“=Tè¤>®û>Ö‹=?UI!>VI‘>V[Ï>U[G?¨J +=«¤Ð>V[?ª­'?ñ‰8>Ôi>»Ã>‹˜U?01³¼¢EÜ>Š™?/Ý!?˜™Ù=gfÖ>š™é>ÌÌD?J¡“=TèÄ>®û>Ö‹M?UI!>VI±>V[Ï>U[W?¨J +=«¤ð>V[?ª­7?ñ‰8>êΔ>»Ã>‹˜e?01³¼¢Eü>Š™?/Ý1?˜™Ù=gfö>š™é>ÌÌT?J¡“=Tèä>®û>Ö‹]?UI!>VIÑ>V[Ï>U[g?¨J +=VR?V[?ª­G?ñ‰8>êδ>»Ã>‹˜u?01³¼Ñ"?Š™?/ÝA?˜™Ù=43 ?š™é>ÌÌd?J¡“=*t?®û>Ö‹m?UI!>VIñ>V[Ï>U[w?¨J +=VR?V[?ª­W?ñ‰8>êÎÔ>»Ã>FÌ‚?01³¼Ñ"?Š™?/ÝQ?˜™Ù=43?š™é>ÌÌt?J¡“=*t?®û>Ö‹}?UI!>«¤?V[Ï>ª­ƒ?¨J +=VR(?V[?ª­g?ñ‰8>êÎô>»Ã>FÌŠ?01³¼Ñ".?Š™?/Ýa?˜™Ù=43+?š™é>ff‚?J¡“=*t"?®û>ëņ?UI!>«¤?V[Ï>ª­‹?¨J +=VR8?V[?ª­w?ñ‰8>ug +?»Ã>FÌ’?01³¼Ñ">?Š™?/Ýq?˜™Ù=43;?š™é>ffŠ?J¡“=*t2?®û>ëÅŽ?UI!>«¤(?V[Ï>ª­“?¨J +=VRH?V[?ÕÖƒ?ñ‰8>ug?»Ã>FÌš?01³¼Ñ"N?Š™?˜î€?˜™Ù=43K?š™é>ff’?J¡“=*tB?®û>ëÅ–?UI!>«¤8?V[Ï>ª­›?¨J +=VRX?V[?ÕÖ‹?ñ‰8>ug*?»Ã>FÌ¢?01³¼Ñ"^?Š™?˜îˆ?ÌÌ,>23¾ÍÌ?23S>¥Ð >Y/6¾×‹ ?Y/v>UIa>Sm]¾V[ï>ª¶Ž>T%Å=Sm½½V[?ª¶>ñ‰x>1‹¾»ã>1«>hg&=xéŽ½Š™%?¼t>ÌÌ,>df¦½ÍÌ?™™‰>¥Ð >²^ì½×‹ ?¬›>UIa>Sm¾V[ï>ª¶®>T%Å=Lµõ¼V[?ª¶^>ñ‰x>,bV¾»ã>1Ë>hg&=€—™%?¼tG>ÌÌ,>™™¼ÍÌ?™™©>¥Ð >d½X½×‹ ?¬»>UIa>¦Úº½V[ï>ª¶Î>T%Å=Z%=V[?U[>ñ‰x>,b¾»ã>1ë>hg&=-b=Š™%?^ºƒ>ÌÌ,>833=ÍÌ?™™É>¥Ð >p +<׋ ?¬Û>UIa>˜jë¼V[ï>ª¶î>T%Å=­’Â=V[?U[¯>ñ‰x>XĬ½»ã>‹˜?hg&=ˆñ=Š™%?^º£>ÌÌ,>œ™Ù=ÍÌ?™™é>¥Ð >N¡“=׋ ?¬û>UIa>´J +=V[ï>U[?T%Å=VI!>V[?U[Ï>ñ‰x>`³¼»ã>‹˜?hg&=D‹8>Š™%?^ºÃ>ÌÌ,>ÎÌ,>ÍÌ?ÌÌ?¥Ð >§Ð >׋ ?Ö‹ ?UIa>Z%Å=V[ï>U[?T%Å=VIa>V[?U[ï>ñ‰x>Pw&=»ã>‹˜%?hg&=D‹x>Š™%?^ºã>ÌÌ,>ÎÌl>ÍÌ?ÌÌ?¥Ð >§ÐI>׋ ?Ö‹?UIa>­’">V[ï>U['?T%Å=«¤>V[?ª­?ñ‰x>¨;Ó=»ã>‹˜5?hg&=¢Eœ>Š™%?/Ý?ÌÌ,>gf–>ÍÌ?ÌÌ$?¥Ð >Tè„>׋ ?Ö‹-?UIa>­’b>V[ï>U[7?T%Å=«¤°>V[?ª­?ñ‰x>Ô)>»ã>‹˜E?hg&=¢E¼>Š™%?/Ý?ÌÌ,>gf¶>ÍÌ?ÌÌ4?¥Ð >Tè¤>׋ ?Ö‹=?UIa>VI‘>V[ï>U[G?T%Å=«¤Ð>V[?ª­'?ñ‰x>Ôi>»ã>‹˜U?hg&=¢EÜ>Š™%?/Ý!?ÌÌ,>gfÖ>ÍÌ?ÌÌD?¥Ð >TèÄ>׋ ?Ö‹M?UIa>VI±>V[ï>U[W?T%Å=«¤ð>V[?ª­7?ñ‰x>êΔ>»ã>‹˜e?hg&=¢Eü>Š™%?/Ý1?ÌÌ,>gfö>ÍÌ?ÌÌT?¥Ð >Tèä>׋ ?Ö‹]?UIa>VIÑ>V[ï>U[g?T%Å=VR?V[?ª­G?ñ‰x>êδ>»ã>‹˜u?hg&=Ñ"?Š™%?/ÝA?ÌÌ,>43 ?ÍÌ?ÌÌd?¥Ð >*t?׋ ?Ö‹m?UIa>VIñ>V[ï>U[w?T%Å=VR?V[?ª­W?ñ‰x>êÎÔ>»ã>FÌ‚?hg&=Ñ"?Š™%?/ÝQ?ÌÌ,>43?ÍÌ?ÌÌt?¥Ð >*t?׋ ?Ö‹}?UIa>«¤?V[ï>ª­ƒ?T%Å=VR(?V[?ª­g?ñ‰x>êÎô>»ã>FÌŠ?hg&=Ñ".?Š™%?/Ýa?ÌÌ,>43+?ÍÌ?ff‚?¥Ð >*t"?׋ ?ëņ?UIa>«¤?V[ï>ª­‹?T%Å=VR8?V[?ª­w?ñ‰x>ug +?»ã>FÌ’?hg&=Ñ">?Š™%?/Ýq?ÌÌ,>43;?ÍÌ?ffŠ?¥Ð >*t2?׋ ?ëÅŽ?UIa>«¤(?V[ï>ª­“?T%Å=VRH?V[?ÕÖƒ?ñ‰x>ug?»ã>FÌš?hg&=Ñ"N?Š™%?˜î€?ÌÌ,>43K?ÍÌ?ff’?¥Ð >*tB?׋ ?ëÅ–?UIa>«¤8?V[ï>ª­›?T%Å=VRX?V[?ÕÖ‹?ñ‰x>ug*?»ã>FÌ¢?hg&=Ñ"^?Š™%?˜îˆ?ÌÌl>23¾ÍÌ?23S>¥ÐI>Y/6¾×‹?Y/v>ª¤>Sm]¾«­?ª¶Ž>ª’">Sm½½V['?ª¶>øDœ>1‹¾„Ý?1«>´3Ó=xéŽ½Š™5?¼t>ÌÌl>df¦½ÍÌ?™™‰>¥ÐI>²^ì½×‹?¬›>ª¤>Sm¾«­?ª¶®>ª’">Lµõ¼V['?ª¶^>øDœ>,bV¾„Ý?1Ë>´3Ó=€—™5?¼tG>ÌÌl>™™¼ÍÌ?™™©>¥ÐI>d½X½×‹?¬»>ª¤>¦Úº½«­?ª¶Î>ª’">Z%=V['?U[>øDœ>,b¾„Ý?1ë>´3Ó=-b=Š™5?^ºƒ>ÌÌl>833=ÍÌ?™™É>¥ÐI>p +<׋?¬Û>ª¤>˜j뼫­?ª¶î>ª’">­’Â=V['?U[¯>øDœ>XĬ½„Ý?‹˜?´3Ó=ˆñ=Š™5?^º£>ÌÌl>œ™Ù=ÍÌ?™™é>¥ÐI>N¡“=׋?¬û>ª¤>´J +=«­?U[?ª’">VI!>V['?U[Ï>øDœ>`³¼„Ý?‹˜?´3Ó=D‹8>Š™5?^ºÃ>ÌÌl>ÎÌ,>ÍÌ?ÌÌ?¥ÐI>§Ð >׋?Ö‹ ?ª¤>Z%Å=«­?U[?ª’">VIa>V['?U[ï>øDœ>Pw&=„Ý?‹˜%?´3Ó=D‹x>Š™5?^ºã>ÌÌl>ÎÌl>ÍÌ?ÌÌ?¥ÐI>§ÐI>׋?Ö‹?ª¤>­’">«­?U['?ª’">«¤>V['?ª­?øDœ>¨;Ó=„Ý?‹˜5?´3Ó=¢Eœ>Š™5?/Ý?ÌÌl>gf–>ÍÌ?ÌÌ$?¥ÐI>Tè„>׋?Ö‹-?ª¤>­’b>«­?U[7?ª’">«¤°>V['?ª­?øDœ>Ô)>„Ý?‹˜E?´3Ó=¢E¼>Š™5?/Ý?ÌÌl>gf¶>ÍÌ?ÌÌ4?¥ÐI>Tè¤>׋?Ö‹=?ª¤>VI‘>«­?U[G?ª’">«¤Ð>V['?ª­'?øDœ>Ôi>„Ý?‹˜U?´3Ó=¢EÜ>Š™5?/Ý!?ÌÌl>gfÖ>ÍÌ?ÌÌD?¥ÐI>TèÄ>׋?Ö‹M?ª¤>VI±>«­?U[W?ª’">«¤ð>V['?ª­7?øDœ>êΔ>„Ý?‹˜e?´3Ó=¢Eü>Š™5?/Ý1?ÌÌl>gfö>ÍÌ?ÌÌT?¥ÐI>Tèä>׋?Ö‹]?ª¤>VIÑ>«­?U[g?ª’">VR?V['?ª­G?øDœ>êδ>„Ý?‹˜u?´3Ó=Ñ"?Š™5?/ÝA?ÌÌl>43 ?ÍÌ?ÌÌd?¥ÐI>*t?׋?Ö‹m?ª¤>VIñ>«­?U[w?ª’">VR?V['?ª­W?øDœ>êÎÔ>„Ý?FÌ‚?´3Ó=Ñ"?Š™5?/ÝQ?ÌÌl>43?ÍÌ?ÌÌt?¥ÐI>*t?׋?Ö‹}?ª¤>«¤?«­?ª­ƒ?ª’">VR(?V['?ª­g?øDœ>êÎô>„Ý?FÌŠ?´3Ó=Ñ".?Š™5?/Ýa?ÌÌl>43+?ÍÌ?ff‚?¥ÐI>*t"?׋?ëņ?ª¤>«¤?«­?ª­‹?ª’">VR8?V['?ª­w?øDœ>ug +?„Ý?FÌ’?´3Ó=Ñ">?Š™5?/Ýq?ÌÌl>43;?ÍÌ?ffŠ?¥ÐI>*t2?׋?ëÅŽ?ª¤>«¤(?«­?ª­“?ª’">VRH?V['?ÕÖƒ?øDœ>ug?„Ý?FÌš?´3Ó=Ñ"N?Š™5?˜î€?ÌÌl>43K?ÍÌ?ff’?¥ÐI>*tB?׋?ëÅ–?ª¤>«¤8?«­?ª­›?ª’">VRX?V['?ÕÖ‹?øDœ>ug*?„Ý?FÌ¢?´3Ó=Ñ"^?Š™5?˜îˆ?ff–>23¾ÍÌ$?23S>Rè„>Y/6¾×‹-?Y/v>ª¤°>Sm]¾«­?ª¶Ž>ª’b>Sm½½V[7?ª¶>øD¼>1‹¾„Ý?1«>Ú™)>xéŽ½Š™E?¼t>ff–>df¦½ÍÌ$?™™‰>Rè„>²^ì½×‹-?¬›>ª¤°>Sm¾«­?ª¶®>ª’b>Lµõ¼V[7?ª¶^>øD¼>,bV¾„Ý?1Ë>Ú™)>€—™E?¼tG>ff–>™™¼ÍÌ$?™™©>Rè„>d½X½×‹-?¬»>ª¤°>¦Úº½«­?ª¶Î>ª’b>Z%=V[7?U[>øD¼>,b¾„Ý?1ë>Ú™)>-b=Š™E?^ºƒ>ff–>833=ÍÌ$?™™É>Rè„>p +<׋-?¬Û>ª¤°>˜j뼫­?ª¶î>ª’b>­’Â=V[7?U[¯>øD¼>XĬ½„Ý?‹˜?Ú™)>ˆñ=Š™E?^º£>ff–>œ™Ù=ÍÌ$?™™é>Rè„>N¡“=׋-?¬û>ª¤°>´J +=«­?U[?ª’b>VI!>V[7?U[Ï>øD¼>`³¼„Ý?‹˜?Ú™)>D‹8>Š™E?^ºÃ>ff–>ÎÌ,>ÍÌ$?ÌÌ?Rè„>§Ð >׋-?Ö‹ ?ª¤°>Z%Å=«­?U[?ª’b>VIa>V[7?U[ï>øD¼>Pw&=„Ý?‹˜%?Ú™)>D‹x>Š™E?^ºã>ff–>ÎÌl>ÍÌ$?ÌÌ?Rè„>§ÐI>׋-?Ö‹?ª¤°>­’">«­?U['?ª’b>«¤>V[7?ª­?øD¼>¨;Ó=„Ý?‹˜5?Ú™)>¢Eœ>Š™E?/Ý?ff–>gf–>ÍÌ$?ÌÌ$?Rè„>Tè„>׋-?Ö‹-?ª¤°>­’b>«­?U[7?ª’b>«¤°>V[7?ª­?øD¼>Ô)>„Ý?‹˜E?Ú™)>¢E¼>Š™E?/Ý?ff–>gf¶>ÍÌ$?ÌÌ4?Rè„>Tè¤>׋-?Ö‹=?ª¤°>VI‘>«­?U[G?ª’b>«¤Ð>V[7?ª­'?øD¼>Ôi>„Ý?‹˜U?Ú™)>¢EÜ>Š™E?/Ý!?ff–>gfÖ>ÍÌ$?ÌÌD?Rè„>TèÄ>׋-?Ö‹M?ª¤°>VI±>«­?U[W?ª’b>«¤ð>V[7?ª­7?øD¼>êΔ>„Ý?‹˜e?Ú™)>¢Eü>Š™E?/Ý1?ff–>gfö>ÍÌ$?ÌÌT?Rè„>Tèä>׋-?Ö‹]?ª¤°>VIÑ>«­?U[g?ª’b>VR?V[7?ª­G?øD¼>êδ>„Ý?‹˜u?Ú™)>Ñ"?Š™E?/ÝA?ff–>43 ?ÍÌ$?ÌÌd?Rè„>*t?׋-?Ö‹m?ª¤°>VIñ>«­?U[w?ª’b>VR?V[7?ª­W?øD¼>êÎÔ>„Ý?FÌ‚?Ú™)>Ñ"?Š™E?/ÝQ?ff–>43?ÍÌ$?ÌÌt?Rè„>*t?׋-?Ö‹}?ª¤°>«¤?«­?ª­ƒ?ª’b>VR(?V[7?ª­g?øD¼>êÎô>„Ý?FÌŠ?Ú™)>Ñ".?Š™E?/Ýa?ff–>43+?ÍÌ$?ff‚?Rè„>*t"?׋-?ëņ?ª¤°>«¤?«­?ª­‹?ª’b>VR8?V[7?ª­w?øD¼>ug +?„Ý?FÌ’?Ú™)>Ñ">?Š™E?/Ýq?ff–>43;?ÍÌ$?ffŠ?Rè„>*t2?׋-?ëÅŽ?ª¤°>«¤(?«­?ª­“?ª’b>VRH?V[7?ÕÖƒ?øD¼>ug?„Ý?FÌš?Ú™)>Ñ"N?Š™E?˜î€?ff–>43K?ÍÌ$?ff’?Rè„>*tB?׋-?ëÅ–?ª¤°>«¤8?«­?ª­›?ª’b>VRX?V[7?ÕÖ‹?øD¼>ug*?„Ý?FÌ¢?Ú™)>Ñ"^?Š™E?˜îˆ?ff¶>23¾ÍÌ4?23S>Rè¤>Y/6¾×‹=?Y/v>ª¤Ð>Sm]¾«­'?ª¶Ž>UI‘>Sm½½V[G?ª¶>øDÜ>1‹¾„Ý!?1«>Ú™i>xéŽ½Š™U?¼t>ff¶>df¦½ÍÌ4?™™‰>Rè¤>²^ì½×‹=?¬›>ª¤Ð>Sm¾«­'?ª¶®>UI‘>Lµõ¼V[G?ª¶^>øDÜ>,bV¾„Ý!?1Ë>Ú™i>€—™U?¼tG>ff¶>™™¼ÍÌ4?™™©>Rè¤>d½X½×‹=?¬»>ª¤Ð>¦Úº½«­'?ª¶Î>UI‘>Z%=V[G?U[>øDÜ>,b¾„Ý!?1ë>Ú™i>-b=Š™U?^ºƒ>ff¶>833=ÍÌ4?™™É>Rè¤>p +<׋=?¬Û>ª¤Ð>˜j뼫­'?ª¶î>UI‘>­’Â=V[G?U[¯>øDÜ>XĬ½„Ý!?‹˜?Ú™i>ˆñ=Š™U?^º£>ff¶>œ™Ù=ÍÌ4?™™é>Rè¤>N¡“=׋=?¬û>ª¤Ð>´J +=«­'?U[?UI‘>VI!>V[G?U[Ï>øDÜ>`³¼„Ý!?‹˜?Ú™i>D‹8>Š™U?^ºÃ>ff¶>ÎÌ,>ÍÌ4?ÌÌ?Rè¤>§Ð >׋=?Ö‹ ?ª¤Ð>Z%Å=«­'?U[?UI‘>VIa>V[G?U[ï>øDÜ>Pw&=„Ý!?‹˜%?Ú™i>D‹x>Š™U?^ºã>ff¶>ÎÌl>ÍÌ4?ÌÌ?Rè¤>§ÐI>׋=?Ö‹?ª¤Ð>­’">«­'?U['?UI‘>«¤>V[G?ª­?øDÜ>¨;Ó=„Ý!?‹˜5?Ú™i>¢Eœ>Š™U?/Ý?ff¶>gf–>ÍÌ4?ÌÌ$?Rè¤>Tè„>׋=?Ö‹-?ª¤Ð>­’b>«­'?U[7?UI‘>«¤°>V[G?ª­?øDÜ>Ô)>„Ý!?‹˜E?Ú™i>¢E¼>Š™U?/Ý?ff¶>gf¶>ÍÌ4?ÌÌ4?Rè¤>Tè¤>׋=?Ö‹=?ª¤Ð>VI‘>«­'?U[G?UI‘>«¤Ð>V[G?ª­'?øDÜ>Ôi>„Ý!?‹˜U?Ú™i>¢EÜ>Š™U?/Ý!?ff¶>gfÖ>ÍÌ4?ÌÌD?Rè¤>TèÄ>׋=?Ö‹M?ª¤Ð>VI±>«­'?U[W?UI‘>«¤ð>V[G?ª­7?øDÜ>êΔ>„Ý!?‹˜e?Ú™i>¢Eü>Š™U?/Ý1?ff¶>gfö>ÍÌ4?ÌÌT?Rè¤>Tèä>׋=?Ö‹]?ª¤Ð>VIÑ>«­'?U[g?UI‘>VR?V[G?ª­G?øDÜ>êδ>„Ý!?‹˜u?Ú™i>Ñ"?Š™U?/ÝA?ff¶>43 ?ÍÌ4?ÌÌd?Rè¤>*t?׋=?Ö‹m?ª¤Ð>VIñ>«­'?U[w?UI‘>VR?V[G?ª­W?øDÜ>êÎÔ>„Ý!?FÌ‚?Ú™i>Ñ"?Š™U?/ÝQ?ff¶>43?ÍÌ4?ÌÌt?Rè¤>*t?׋=?Ö‹}?ª¤Ð>«¤?«­'?ª­ƒ?UI‘>VR(?V[G?ª­g?øDÜ>êÎô>„Ý!?FÌŠ?Ú™i>Ñ".?Š™U?/Ýa?ff¶>43+?ÍÌ4?ff‚?Rè¤>*t"?׋=?ëņ?ª¤Ð>«¤?«­'?ª­‹?UI‘>VR8?V[G?ª­w?øDÜ>ug +?„Ý!?FÌ’?Ú™i>Ñ">?Š™U?/Ýq?ff¶>43;?ÍÌ4?ffŠ?Rè¤>*t2?׋=?ëÅŽ?ª¤Ð>«¤(?«­'?ª­“?UI‘>VRH?V[G?ÕÖƒ?øDÜ>ug?„Ý!?FÌš?Ú™i>Ñ"N?Š™U?˜î€?ff¶>43K?ÍÌ4?ff’?Rè¤>*tB?׋=?ëÅ–?ª¤Ð>«¤8?«­'?ª­›?UI‘>VRX?V[G?ÕÖ‹?øDÜ>ug*?„Ý!?FÌ¢?Ú™i>Ñ"^?Š™U?˜îˆ?ffÖ>23¾ÍÌD?23S>RèÄ>Y/6¾×‹M?Y/v>ª¤ð>Sm]¾«­7?ª¶Ž>UI±>Sm½½V[W?ª¶>øDü>1‹¾„Ý1?1«>íÌ”>xéŽ½Š™e?¼t>ffÖ>df¦½ÍÌD?™™‰>RèÄ>²^ì½×‹M?¬›>ª¤ð>Sm¾«­7?ª¶®>UI±>Lµõ¼V[W?ª¶^>øDü>,bV¾„Ý1?1Ë>íÌ”>€—™e?¼tG>ffÖ>™™¼ÍÌD?™™©>RèÄ>d½X½×‹M?¬»>ª¤ð>¦Úº½«­7?ª¶Î>UI±>Z%=V[W?U[>øDü>,b¾„Ý1?1ë>íÌ”>-b=Š™e?^ºƒ>ffÖ>833=ÍÌD?™™É>RèÄ>p +<׋M?¬Û>ª¤ð>˜j뼫­7?ª¶î>UI±>­’Â=V[W?U[¯>øDü>XĬ½„Ý1?‹˜?íÌ”>ˆñ=Š™e?^º£>ffÖ>œ™Ù=ÍÌD?™™é>RèÄ>N¡“=׋M?¬û>ª¤ð>´J +=«­7?U[?UI±>VI!>V[W?U[Ï>øDü>`³¼„Ý1?‹˜?íÌ”>D‹8>Š™e?^ºÃ>ffÖ>ÎÌ,>ÍÌD?ÌÌ?RèÄ>§Ð >׋M?Ö‹ ?ª¤ð>Z%Å=«­7?U[?UI±>VIa>V[W?U[ï>øDü>Pw&=„Ý1?‹˜%?íÌ”>D‹x>Š™e?^ºã>ffÖ>ÎÌl>ÍÌD?ÌÌ?RèÄ>§ÐI>׋M?Ö‹?ª¤ð>­’">«­7?U['?UI±>«¤>V[W?ª­?øDü>¨;Ó=„Ý1?‹˜5?íÌ”>¢Eœ>Š™e?/Ý?ffÖ>gf–>ÍÌD?ÌÌ$?RèÄ>Tè„>׋M?Ö‹-?ª¤ð>­’b>«­7?U[7?UI±>«¤°>V[W?ª­?øDü>Ô)>„Ý1?‹˜E?íÌ”>¢E¼>Š™e?/Ý?ffÖ>gf¶>ÍÌD?ÌÌ4?RèÄ>Tè¤>׋M?Ö‹=?ª¤ð>VI‘>«­7?U[G?UI±>«¤Ð>V[W?ª­'?øDü>Ôi>„Ý1?‹˜U?íÌ”>¢EÜ>Š™e?/Ý!?ffÖ>gfÖ>ÍÌD?ÌÌD?RèÄ>TèÄ>׋M?Ö‹M?ª¤ð>VI±>«­7?U[W?UI±>«¤ð>V[W?ª­7?øDü>êΔ>„Ý1?‹˜e?íÌ”>¢Eü>Š™e?/Ý1?ffÖ>gfö>ÍÌD?ÌÌT?RèÄ>Tèä>׋M?Ö‹]?ª¤ð>VIÑ>«­7?U[g?UI±>VR?V[W?ª­G?øDü>êδ>„Ý1?‹˜u?íÌ”>Ñ"?Š™e?/ÝA?ffÖ>43 ?ÍÌD?ÌÌd?RèÄ>*t?׋M?Ö‹m?ª¤ð>VIñ>«­7?U[w?UI±>VR?V[W?ª­W?øDü>êÎÔ>„Ý1?FÌ‚?íÌ”>Ñ"?Š™e?/ÝQ?ffÖ>43?ÍÌD?ÌÌt?RèÄ>*t?׋M?Ö‹}?ª¤ð>«¤?«­7?ª­ƒ?UI±>VR(?V[W?ª­g?øDü>êÎô>„Ý1?FÌŠ?íÌ”>Ñ".?Š™e?/Ýa?ffÖ>43+?ÍÌD?ff‚?RèÄ>*t"?׋M?ëņ?ª¤ð>«¤?«­7?ª­‹?UI±>VR8?V[W?ª­w?øDü>ug +?„Ý1?FÌ’?íÌ”>Ñ">?Š™e?/Ýq?ffÖ>43;?ÍÌD?ffŠ?RèÄ>*t2?׋M?ëÅŽ?ª¤ð>«¤(?«­7?ª­“?UI±>VRH?V[W?ÕÖƒ?øDü>ug?„Ý1?FÌš?íÌ”>Ñ"N?Š™e?˜î€?ffÖ>43K?ÍÌD?ff’?RèÄ>*tB?׋M?ëÅ–?ª¤ð>«¤8?«­7?ª­›?UI±>VRX?V[W?ÕÖ‹?øDü>ug*?„Ý1?FÌ¢?íÌ”>Ñ"^?Š™e?˜îˆ?ffö>23¾ÍÌT?23S>Rèä>Y/6¾×‹]?Y/v>UR?Sm]¾«­G?ª¶Ž>UIÑ>Sm½½V[g?ª¶>|"?1‹¾„ÝA?1«>íÌ´>xéŽ½Š™u?¼t>ffö>df¦½ÍÌT?™™‰>Rèä>²^ì½×‹]?¬›>UR?Sm¾«­G?ª¶®>UIÑ>Lµõ¼V[g?ª¶^>|"?,bV¾„ÝA?1Ë>íÌ´>€—™u?¼tG>ffö>™™¼ÍÌT?™™©>Rèä>d½X½×‹]?¬»>UR?¦Úº½«­G?ª¶Î>UIÑ>Z%=V[g?U[>|"?,b¾„ÝA?1ë>íÌ´>-b=Š™u?^ºƒ>ffö>833=ÍÌT?™™É>Rèä>p +<׋]?¬Û>UR?˜j뼫­G?ª¶î>UIÑ>­’Â=V[g?U[¯>|"?XĬ½„ÝA?‹˜?íÌ´>ˆñ=Š™u?^º£>ffö>œ™Ù=ÍÌT?™™é>Rèä>N¡“=׋]?¬û>UR?´J +=«­G?U[?UIÑ>VI!>V[g?U[Ï>|"?`³¼„ÝA?‹˜?íÌ´>D‹8>Š™u?^ºÃ>ffö>ÎÌ,>ÍÌT?ÌÌ?Rèä>§Ð >׋]?Ö‹ ?UR?Z%Å=«­G?U[?UIÑ>VIa>V[g?U[ï>|"?Pw&=„ÝA?‹˜%?íÌ´>D‹x>Š™u?^ºã>ffö>ÎÌl>ÍÌT?ÌÌ?Rèä>§ÐI>׋]?Ö‹?UR?­’">«­G?U['?UIÑ>«¤>V[g?ª­?|"?¨;Ó=„ÝA?‹˜5?íÌ´>¢Eœ>Š™u?/Ý?ffö>gf–>ÍÌT?ÌÌ$?Rèä>Tè„>׋]?Ö‹-?UR?­’b>«­G?U[7?UIÑ>«¤°>V[g?ª­?|"?Ô)>„ÝA?‹˜E?íÌ´>¢E¼>Š™u?/Ý?ffö>gf¶>ÍÌT?ÌÌ4?Rèä>Tè¤>׋]?Ö‹=?UR?VI‘>«­G?U[G?UIÑ>«¤Ð>V[g?ª­'?|"?Ôi>„ÝA?‹˜U?íÌ´>¢EÜ>Š™u?/Ý!?ffö>gfÖ>ÍÌT?ÌÌD?Rèä>TèÄ>׋]?Ö‹M?UR?VI±>«­G?U[W?UIÑ>«¤ð>V[g?ª­7?|"?êΔ>„ÝA?‹˜e?íÌ´>¢Eü>Š™u?/Ý1?ffö>gfö>ÍÌT?ÌÌT?Rèä>Tèä>׋]?Ö‹]?UR?VIÑ>«­G?U[g?UIÑ>VR?V[g?ª­G?|"?êδ>„ÝA?‹˜u?íÌ´>Ñ"?Š™u?/ÝA?ffö>43 ?ÍÌT?ÌÌd?Rèä>*t?׋]?Ö‹m?UR?VIñ>«­G?U[w?UIÑ>VR?V[g?ª­W?|"?êÎÔ>„ÝA?FÌ‚?íÌ´>Ñ"?Š™u?/ÝQ?ffö>43?ÍÌT?ÌÌt?Rèä>*t?׋]?Ö‹}?UR?«¤?«­G?ª­ƒ?UIÑ>VR(?V[g?ª­g?|"?êÎô>„ÝA?FÌŠ?íÌ´>Ñ".?Š™u?/Ýa?ffö>43+?ÍÌT?ff‚?Rèä>*t"?׋]?ëņ?UR?«¤?«­G?ª­‹?UIÑ>VR8?V[g?ª­w?|"?ug +?„ÝA?FÌ’?íÌ´>Ñ">?Š™u?/Ýq?ffö>43;?ÍÌT?ffŠ?Rèä>*t2?׋]?ëÅŽ?UR?«¤(?«­G?ª­“?UIÑ>VRH?V[g?ÕÖƒ?|"?ug?„ÝA?FÌš?íÌ´>Ñ"N?Š™u?˜î€?ffö>43K?ÍÌT?ff’?Rèä>*tB?׋]?ëÅ–?UR?«¤8?«­G?ª­›?UIÑ>VRX?V[g?ÕÖ‹?|"?ug*?„ÝA?FÌ¢?íÌ´>Ñ"^?Š™u?˜îˆ?33 ?23¾ÍÌd?23S>)t?Y/6¾×‹m?Y/v>UR?Sm]¾«­W?ª¶Ž>UIñ>Sm½½V[w?ª¶>|"?1‹¾„ÝQ?1«>íÌÔ>x鎽ÅÌ‚?¼t>33 ?df¦½ÍÌd?™™‰>)t?²^ì½×‹m?¬›>UR?Sm¾«­W?ª¶®>UIñ>Lµõ¼V[w?ª¶^>|"?,bV¾„ÝQ?1Ë>íÌÔ>€—î»ÅÌ‚?¼tG>33 ?™™¼ÍÌd?™™©>)t?d½X½×‹m?¬»>UR?¦Úº½«­W?ª¶Î>UIñ>Z%=V[w?U[>|"?,b¾„ÝQ?1ë>íÌÔ>-b=ÅÌ‚?^ºƒ>33 ?833=ÍÌd?™™É>)t?p +<׋m?¬Û>UR?˜j뼫­W?ª¶î>UIñ>­’Â=V[w?U[¯>|"?XĬ½„ÝQ?‹˜?íÌÔ>ˆñ=ÅÌ‚?^º£>33 ?œ™Ù=ÍÌd?™™é>)t?N¡“=׋m?¬û>UR?´J +=«­W?U[?UIñ>VI!>V[w?U[Ï>|"?`³¼„ÝQ?‹˜?íÌÔ>D‹8>ÅÌ‚?^ºÃ>33 ?ÎÌ,>ÍÌd?ÌÌ?)t?§Ð >׋m?Ö‹ ?UR?Z%Å=«­W?U[?UIñ>VIa>V[w?U[ï>|"?Pw&=„ÝQ?‹˜%?íÌÔ>D‹x>ÅÌ‚?^ºã>33 ?ÎÌl>ÍÌd?ÌÌ?)t?§ÐI>׋m?Ö‹?UR?­’">«­W?U['?UIñ>«¤>V[w?ª­?|"?¨;Ó=„ÝQ?‹˜5?íÌÔ>¢Eœ>ÅÌ‚?/Ý?33 ?gf–>ÍÌd?ÌÌ$?)t?Tè„>׋m?Ö‹-?UR?­’b>«­W?U[7?UIñ>«¤°>V[w?ª­?|"?Ô)>„ÝQ?‹˜E?íÌÔ>¢E¼>ÅÌ‚?/Ý?33 ?gf¶>ÍÌd?ÌÌ4?)t?Tè¤>׋m?Ö‹=?UR?VI‘>«­W?U[G?UIñ>«¤Ð>V[w?ª­'?|"?Ôi>„ÝQ?‹˜U?íÌÔ>¢EÜ>ÅÌ‚?/Ý!?33 ?gfÖ>ÍÌd?ÌÌD?)t?TèÄ>׋m?Ö‹M?UR?VI±>«­W?U[W?UIñ>«¤ð>V[w?ª­7?|"?êΔ>„ÝQ?‹˜e?íÌÔ>¢Eü>ÅÌ‚?/Ý1?33 ?gfö>ÍÌd?ÌÌT?)t?Tèä>׋m?Ö‹]?UR?VIÑ>«­W?U[g?UIñ>VR?V[w?ª­G?|"?êδ>„ÝQ?‹˜u?íÌÔ>Ñ"?ÅÌ‚?/ÝA?33 ?43 ?ÍÌd?ÌÌd?)t?*t?׋m?Ö‹m?UR?VIñ>«­W?U[w?UIñ>VR?V[w?ª­W?|"?êÎÔ>„ÝQ?FÌ‚?íÌÔ>Ñ"?ÅÌ‚?/ÝQ?33 ?43?ÍÌd?ÌÌt?)t?*t?׋m?Ö‹}?UR?«¤?«­W?ª­ƒ?UIñ>VR(?V[w?ª­g?|"?êÎô>„ÝQ?FÌŠ?íÌÔ>Ñ".?ÅÌ‚?/Ýa?33 ?43+?ÍÌd?ff‚?)t?*t"?׋m?ëņ?UR?«¤?«­W?ª­‹?UIñ>VR8?V[w?ª­w?|"?ug +?„ÝQ?FÌ’?íÌÔ>Ñ">?ÅÌ‚?/Ýq?33 ?43;?ÍÌd?ffŠ?)t?*t2?׋m?ëÅŽ?UR?«¤(?«­W?ª­“?UIñ>VRH?V[w?ÕÖƒ?|"?ug?„ÝQ?FÌš?íÌÔ>Ñ"N?ÅÌ‚?˜î€?33 ?43K?ÍÌd?ff’?)t?*tB?׋m?ëÅ–?UR?«¤8?«­W?ª­›?UIñ>VRX?V[w?ÕÖ‹?|"?ug*?„ÝQ?FÌ¢?íÌÔ>Ñ"^?ÅÌ‚?˜îˆ?33?23¾ÍÌt?23S>)t?Y/6¾×‹}?Y/v>UR(?Sm]¾«­g?ª¶Ž>ª¤?Sm½½«­ƒ?ª¶>|".?1‹¾„Ýa?1«>íÌô>x鎽ÅÌŠ?¼t>33?df¦½ÍÌt?™™‰>)t?²^ì½×‹}?¬›>UR(?Sm¾«­g?ª¶®>ª¤?Lµõ¼«­ƒ?ª¶^>|".?,bV¾„Ýa?1Ë>íÌô>€—î»ÅÌŠ?¼tG>33?™™¼ÍÌt?™™©>)t?d½X½×‹}?¬»>UR(?¦Úº½«­g?ª¶Î>ª¤?Z%=«­ƒ?U[>|".?,b¾„Ýa?1ë>íÌô>-b=ÅÌŠ?^ºƒ>33?833=ÍÌt?™™É>)t?p +<׋}?¬Û>UR(?˜j뼫­g?ª¶î>ª¤?­’Â=«­ƒ?U[¯>|".?XĬ½„Ýa?‹˜?íÌô>ˆñ=ÅÌŠ?^º£>33?œ™Ù=ÍÌt?™™é>)t?N¡“=׋}?¬û>UR(?´J +=«­g?U[?ª¤?VI!>«­ƒ?U[Ï>|".?`³¼„Ýa?‹˜?íÌô>D‹8>ÅÌŠ?^ºÃ>33?ÎÌ,>ÍÌt?ÌÌ?)t?§Ð >׋}?Ö‹ ?UR(?Z%Å=«­g?U[?ª¤?VIa>«­ƒ?U[ï>|".?Pw&=„Ýa?‹˜%?íÌô>D‹x>ÅÌŠ?^ºã>33?ÎÌl>ÍÌt?ÌÌ?)t?§ÐI>׋}?Ö‹?UR(?­’">«­g?U['?ª¤?«¤>«­ƒ?ª­?|".?¨;Ó=„Ýa?‹˜5?íÌô>¢Eœ>ÅÌŠ?/Ý?33?gf–>ÍÌt?ÌÌ$?)t?Tè„>׋}?Ö‹-?UR(?­’b>«­g?U[7?ª¤?«¤°>«­ƒ?ª­?|".?Ô)>„Ýa?‹˜E?íÌô>¢E¼>ÅÌŠ?/Ý?33?gf¶>ÍÌt?ÌÌ4?)t?Tè¤>׋}?Ö‹=?UR(?VI‘>«­g?U[G?ª¤?«¤Ð>«­ƒ?ª­'?|".?Ôi>„Ýa?‹˜U?íÌô>¢EÜ>ÅÌŠ?/Ý!?33?gfÖ>ÍÌt?ÌÌD?)t?TèÄ>׋}?Ö‹M?UR(?VI±>«­g?U[W?ª¤?«¤ð>«­ƒ?ª­7?|".?êΔ>„Ýa?‹˜e?íÌô>¢Eü>ÅÌŠ?/Ý1?33?gfö>ÍÌt?ÌÌT?)t?Tèä>׋}?Ö‹]?UR(?VIÑ>«­g?U[g?ª¤?VR?«­ƒ?ª­G?|".?êδ>„Ýa?‹˜u?íÌô>Ñ"?ÅÌŠ?/ÝA?33?43 ?ÍÌt?ÌÌd?)t?*t?׋}?Ö‹m?UR(?VIñ>«­g?U[w?ª¤?VR?«­ƒ?ª­W?|".?êÎÔ>„Ýa?FÌ‚?íÌô>Ñ"?ÅÌŠ?/ÝQ?33?43?ÍÌt?ÌÌt?)t?*t?׋}?Ö‹}?UR(?«¤?«­g?ª­ƒ?ª¤?VR(?«­ƒ?ª­g?|".?êÎô>„Ýa?FÌŠ?íÌô>Ñ".?ÅÌŠ?/Ýa?33?43+?ÍÌt?ff‚?)t?*t"?׋}?ëņ?UR(?«¤?«­g?ª­‹?ª¤?VR8?«­ƒ?ª­w?|".?ug +?„Ýa?FÌ’?íÌô>Ñ">?ÅÌŠ?/Ýq?33?43;?ÍÌt?ffŠ?)t?*t2?׋}?ëÅŽ?UR(?«¤(?«­g?ª­“?ª¤?VRH?«­ƒ?ÕÖƒ?|".?ug?„Ýa?FÌš?íÌô>Ñ"N?ÅÌŠ?˜î€?33?43K?ÍÌt?ff’?)t?*tB?׋}?ëÅ–?UR(?«¤8?«­g?ª­›?ª¤?VRX?«­ƒ?ÕÖ‹?|".?ug*?„Ýa?FÌ¢?íÌô>Ñ"^?ÅÌŠ?˜îˆ?33+?23¾ff‚?23S>)t"?Y/6¾ëņ?Y/v>UR8?Sm]¾«­w?ª¶Ž>ª¤?Sm½½«­‹?ª¶>|">?1‹¾„Ýq?1«>vf +?x鎽ÅÌ’?¼t>33+?df¦½ff‚?™™‰>)t"?²^ì½ëņ?¬›>UR8?Sm¾«­w?ª¶®>ª¤?Lµõ¼«­‹?ª¶^>|">?,bV¾„Ýq?1Ë>vf +?€—î»ÅÌ’?¼tG>33+?™™¼ff‚?™™©>)t"?d½X½ëņ?¬»>UR8?¦Úº½«­w?ª¶Î>ª¤?Z%=«­‹?U[>|">?,b¾„Ýq?1ë>vf +?-b=ÅÌ’?^ºƒ>33+?833=ff‚?™™É>)t"?p +<ëņ?¬Û>UR8?˜j뼫­w?ª¶î>ª¤?­’Â=«­‹?U[¯>|">?XĬ½„Ýq?‹˜?vf +?ˆñ=ÅÌ’?^º£>33+?œ™Ù=ff‚?™™é>)t"?N¡“=ëņ?¬û>UR8?´J +=«­w?U[?ª¤?VI!>«­‹?U[Ï>|">?`³¼„Ýq?‹˜?vf +?D‹8>ÅÌ’?^ºÃ>33+?ÎÌ,>ff‚?ÌÌ?)t"?§Ð >ëņ?Ö‹ ?UR8?Z%Å=«­w?U[?ª¤?VIa>«­‹?U[ï>|">?Pw&=„Ýq?‹˜%?vf +?D‹x>ÅÌ’?^ºã>33+?ÎÌl>ff‚?ÌÌ?)t"?§ÐI>ëņ?Ö‹?UR8?­’">«­w?U['?ª¤?«¤>«­‹?ª­?|">?¨;Ó=„Ýq?‹˜5?vf +?¢Eœ>ÅÌ’?/Ý?33+?gf–>ff‚?ÌÌ$?)t"?Tè„>ëņ?Ö‹-?UR8?­’b>«­w?U[7?ª¤?«¤°>«­‹?ª­?|">?Ô)>„Ýq?‹˜E?vf +?¢E¼>ÅÌ’?/Ý?33+?gf¶>ff‚?ÌÌ4?)t"?Tè¤>ëņ?Ö‹=?UR8?VI‘>«­w?U[G?ª¤?«¤Ð>«­‹?ª­'?|">?Ôi>„Ýq?‹˜U?vf +?¢EÜ>ÅÌ’?/Ý!?33+?gfÖ>ff‚?ÌÌD?)t"?TèÄ>ëņ?Ö‹M?UR8?VI±>«­w?U[W?ª¤?«¤ð>«­‹?ª­7?|">?êΔ>„Ýq?‹˜e?vf +?¢Eü>ÅÌ’?/Ý1?33+?gfö>ff‚?ÌÌT?)t"?Tèä>ëņ?Ö‹]?UR8?VIÑ>«­w?U[g?ª¤?VR?«­‹?ª­G?|">?êδ>„Ýq?‹˜u?vf +?Ñ"?ÅÌ’?/ÝA?33+?43 ?ff‚?ÌÌd?)t"?*t?ëņ?Ö‹m?UR8?VIñ>«­w?U[w?ª¤?VR?«­‹?ª­W?|">?êÎÔ>„Ýq?FÌ‚?vf +?Ñ"?ÅÌ’?/ÝQ?33+?43?ff‚?ÌÌt?)t"?*t?ëņ?Ö‹}?UR8?«¤?«­w?ª­ƒ?ª¤?VR(?«­‹?ª­g?|">?êÎô>„Ýq?FÌŠ?vf +?Ñ".?ÅÌ’?/Ýa?33+?43+?ff‚?ff‚?)t"?*t"?ëņ?ëņ?UR8?«¤?«­w?ª­‹?ª¤?VR8?«­‹?ª­w?|">?ug +?„Ýq?FÌ’?vf +?Ñ">?ÅÌ’?/Ýq?33+?43;?ff‚?ffŠ?)t"?*t2?ëņ?ëÅŽ?UR8?«¤(?«­w?ª­“?ª¤?VRH?«­‹?ÕÖƒ?|">?ug?„Ýq?FÌš?vf +?Ñ"N?ÅÌ’?˜î€?33+?43K?ff‚?ff’?)t"?*tB?ëņ?ëÅ–?UR8?«¤8?«­w?ª­›?ª¤?VRX?«­‹?ÕÖ‹?|">?ug*?„Ýq?FÌ¢?vf +?Ñ"^?ÅÌ’?˜îˆ?33;?23¾ffŠ?23S>)t2?Y/6¾ëÅŽ?Y/v>URH?Sm]¾ÕÖƒ?ª¶Ž>ª¤(?Sm½½«­“?ª¶>|"N?1‹¾Âî€?1«>vf?x鎽ÅÌš?¼t>33;?df¦½ffŠ?™™‰>)t2?²^ì½ëÅŽ?¬›>URH?Sm¾ÕÖƒ?ª¶®>ª¤(?Lµõ¼«­“?ª¶^>|"N?,bV¾Âî€?1Ë>vf?€—î»ÅÌš?¼tG>33;?™™¼ffŠ?™™©>)t2?d½X½ëÅŽ?¬»>URH?¦Úº½ÕÖƒ?ª¶Î>ª¤(?Z%=«­“?U[>|"N?,b¾Âî€?1ë>vf?-b=ÅÌš?^ºƒ>33;?833=ffŠ?™™É>)t2?p +<ëÅŽ?¬Û>URH?˜jë¼ÕÖƒ?ª¶î>ª¤(?­’Â=«­“?U[¯>|"N?XĬ½Âî€?‹˜?vf?ˆñ=ÅÌš?^º£>33;?œ™Ù=ffŠ?™™é>)t2?N¡“=ëÅŽ?¬û>URH?´J +=ÕÖƒ?U[?ª¤(?VI!>«­“?U[Ï>|"N?`³¼Âî€?‹˜?vf?D‹8>ÅÌš?^ºÃ>33;?ÎÌ,>ffŠ?ÌÌ?)t2?§Ð >ëÅŽ?Ö‹ ?URH?Z%Å=ÕÖƒ?U[?ª¤(?VIa>«­“?U[ï>|"N?Pw&=Âî€?‹˜%?vf?D‹x>ÅÌš?^ºã>33;?ÎÌl>ffŠ?ÌÌ?)t2?§ÐI>ëÅŽ?Ö‹?URH?­’">ÕÖƒ?U['?ª¤(?«¤>«­“?ª­?|"N?¨;Ó=Âî€?‹˜5?vf?¢Eœ>ÅÌš?/Ý?33;?gf–>ffŠ?ÌÌ$?)t2?Tè„>ëÅŽ?Ö‹-?URH?­’b>ÕÖƒ?U[7?ª¤(?«¤°>«­“?ª­?|"N?Ô)>Âî€?‹˜E?vf?¢E¼>ÅÌš?/Ý?33;?gf¶>ffŠ?ÌÌ4?)t2?Tè¤>ëÅŽ?Ö‹=?URH?VI‘>ÕÖƒ?U[G?ª¤(?«¤Ð>«­“?ª­'?|"N?Ôi>Âî€?‹˜U?vf?¢EÜ>ÅÌš?/Ý!?33;?gfÖ>ffŠ?ÌÌD?)t2?TèÄ>ëÅŽ?Ö‹M?URH?VI±>ÕÖƒ?U[W?ª¤(?«¤ð>«­“?ª­7?|"N?êΔ>Âî€?‹˜e?vf?¢Eü>ÅÌš?/Ý1?33;?gfö>ffŠ?ÌÌT?)t2?Tèä>ëÅŽ?Ö‹]?URH?VIÑ>ÕÖƒ?U[g?ª¤(?VR?«­“?ª­G?|"N?êδ>Âî€?‹˜u?vf?Ñ"?ÅÌš?/ÝA?33;?43 ?ffŠ?ÌÌd?)t2?*t?ëÅŽ?Ö‹m?URH?VIñ>ÕÖƒ?U[w?ª¤(?VR?«­“?ª­W?|"N?êÎÔ>Âî€?FÌ‚?vf?Ñ"?ÅÌš?/ÝQ?33;?43?ffŠ?ÌÌt?)t2?*t?ëÅŽ?Ö‹}?URH?«¤?ÕÖƒ?ª­ƒ?ª¤(?VR(?«­“?ª­g?|"N?êÎô>Âî€?FÌŠ?vf?Ñ".?ÅÌš?/Ýa?33;?43+?ffŠ?ff‚?)t2?*t"?ëÅŽ?ëņ?URH?«¤?ÕÖƒ?ª­‹?ª¤(?VR8?«­“?ª­w?|"N?ug +?Âî€?FÌ’?vf?Ñ">?ÅÌš?/Ýq?33;?43;?ffŠ?ffŠ?)t2?*t2?ëÅŽ?ëÅŽ?URH?«¤(?ÕÖƒ?ª­“?ª¤(?VRH?«­“?ÕÖƒ?|"N?ug?Âî€?FÌš?vf?Ñ"N?ÅÌš?˜î€?33;?43K?ffŠ?ff’?)t2?*tB?ëÅŽ?ëÅ–?URH?«¤8?ÕÖƒ?ª­›?ª¤(?VRX?«­“?ÕÖ‹?|"N?ug*?Âî€?FÌ¢?vf?Ñ"^?ÅÌš?˜îˆ?33K?23¾ff’?23S>)tB?Y/6¾ëÅ–?Y/v>URX?Sm]¾ÕÖ‹?ª¶Ž>ª¤8?Sm½½«­›?ª¶>|"^?1‹¾Âîˆ?1«>vf*?x鎽ÅÌ¢?¼t>33K?df¦½ff’?™™‰>)tB?²^ì½ëÅ–?¬›>URX?Sm¾ÕÖ‹?ª¶®>ª¤8?Lµõ¼«­›?ª¶^>|"^?,bV¾Âîˆ?1Ë>vf*?€—î»ÅÌ¢?¼tG>33K?™™¼ff’?™™©>)tB?d½X½ëÅ–?¬»>URX?¦Úº½ÕÖ‹?ª¶Î>ª¤8?Z%=«­›?U[>|"^?,b¾Âîˆ?1ë>vf*?-b=ÅÌ¢?^ºƒ>33K?833=ff’?™™É>)tB?p +<ëÅ–?¬Û>URX?˜jë¼ÕÖ‹?ª¶î>ª¤8?­’Â=«­›?U[¯>|"^?XĬ½Âîˆ?‹˜?vf*?ˆñ=ÅÌ¢?^º£>33K?œ™Ù=ff’?™™é>)tB?N¡“=ëÅ–?¬û>URX?´J +=ÕÖ‹?U[?ª¤8?VI!>«­›?U[Ï>|"^?`³¼Âîˆ?‹˜?vf*?D‹8>ÅÌ¢?^ºÃ>33K?ÎÌ,>ff’?ÌÌ?)tB?§Ð >ëÅ–?Ö‹ ?URX?Z%Å=ÕÖ‹?U[?ª¤8?VIa>«­›?U[ï>|"^?Pw&=Âîˆ?‹˜%?vf*?D‹x>ÅÌ¢?^ºã>33K?ÎÌl>ff’?ÌÌ?)tB?§ÐI>ëÅ–?Ö‹?URX?­’">ÕÖ‹?U['?ª¤8?«¤>«­›?ª­?|"^?¨;Ó=Âîˆ?‹˜5?vf*?¢Eœ>ÅÌ¢?/Ý?33K?gf–>ff’?ÌÌ$?)tB?Tè„>ëÅ–?Ö‹-?URX?­’b>ÕÖ‹?U[7?ª¤8?«¤°>«­›?ª­?|"^?Ô)>Âîˆ?‹˜E?vf*?¢E¼>ÅÌ¢?/Ý?33K?gf¶>ff’?ÌÌ4?)tB?Tè¤>ëÅ–?Ö‹=?URX?VI‘>ÕÖ‹?U[G?ª¤8?«¤Ð>«­›?ª­'?|"^?Ôi>Âîˆ?‹˜U?vf*?¢EÜ>ÅÌ¢?/Ý!?33K?gfÖ>ff’?ÌÌD?)tB?TèÄ>ëÅ–?Ö‹M?URX?VI±>ÕÖ‹?U[W?ª¤8?«¤ð>«­›?ª­7?|"^?êΔ>Âîˆ?‹˜e?vf*?¢Eü>ÅÌ¢?/Ý1?33K?gfö>ff’?ÌÌT?)tB?Tèä>ëÅ–?Ö‹]?URX?VIÑ>ÕÖ‹?U[g?ª¤8?VR?«­›?ª­G?|"^?êδ>Âîˆ?‹˜u?vf*?Ñ"?ÅÌ¢?/ÝA?33K?43 ?ff’?ÌÌd?)tB?*t?ëÅ–?Ö‹m?URX?VIñ>ÕÖ‹?U[w?ª¤8?VR?«­›?ª­W?|"^?êÎÔ>Âîˆ?FÌ‚?vf*?Ñ"?ÅÌ¢?/ÝQ?33K?43?ff’?ÌÌt?)tB?*t?ëÅ–?Ö‹}?URX?«¤?ÕÖ‹?ª­ƒ?ª¤8?VR(?«­›?ª­g?|"^?êÎô>Âîˆ?FÌŠ?vf*?Ñ".?ÅÌ¢?/Ýa?33K?43+?ff’?ff‚?)tB?*t"?ëÅ–?ëņ?URX?«¤?ÕÖ‹?ª­‹?ª¤8?VR8?«­›?ª­w?|"^?ug +?Âîˆ?FÌ’?vf*?Ñ">?ÅÌ¢?/Ýq?33K?43;?ff’?ffŠ?)tB?*t2?ëÅ–?ëÅŽ?URX?«¤(?ÕÖ‹?ª­“?ª¤8?VRH?«­›?ÕÖƒ?|"^?ug?Âîˆ?FÌš?vf*?Ñ"N?ÅÌ¢?˜î€?33K?43K?ff’?ff’?)tB?*tB?ëÅ–?ëÅ–?URX?«¤8?ÕÖ‹?ª­›?ª¤8?VRX?«­›?ÕÖ‹?|"^?ug*?Âîˆ?FÌ¢?vf*?Ñ"^?ÅÌ¢?˜îˆ?@¾ÿÿ?¾ > >Œâc¾ˆâc¾Fñ±>Dñ±>è ê½ò•¾ôu>òÕ>ô•¾ä ê½ôÕ>òu>tš§½×³½¾:ÍS>׳ý>®¶½¾¬–§½®¶ý>VËS>@¾üÿ½ >à>Œâc¾ÅǽFñ±>Dññ>è ê½ä *¾ôu>y‚ +?ô•¾à°/<ôÕ>y‚º>tš§½®g{¾:ÍS>ìÙ?®¶½¾¨Ò0=®¶ý>«å©>@¾€= >?Œâc¾Àëà¢ø?è ê½'(½ôu>y‚*?ô•¾û +>ôÕ>y‚ú>tš§½\Ïö½:ÍS>ìÙ>?®¶½¾ª4,>®¶ý>«åé>@¾@> >0?Œâc¾x>Fñ±>¢ø8?è ê½8ì«=ôu>y‚J?ô•¾‡}…>ôÕ>ìÙ^?®¶½¾U–>®¶ý>Öò?@¾ > >P?Œâc¾¼Ž>Fñ±>¢øX?è ê½öU>ôu>y‚j?ô•¾‡}Å>ôÕ>:ÍS>ìÙ~?®¶½¾UÖ>®¶ý>Öò4?@¾à> >p?Œâc¾¼Î>Fñ±>¢øx?è ê½ûª>ôu>:ÍS>öl?®¶½¾* ?®¶ý>ÖòT?@¾? >ˆ?Œâc¾^?Fñ±>Q|Œ?è ê½ûê>ôu>:ÍS>ölŸ?®¶½¾* +?®¶ý>Öòt?@¾0? >˜?Œâc¾^'?Fñ±>Q|œ?è 꽇}?ôu>ž Ž?tš§½&?:ÍS>öl¯?®¶½¾* K?®¶ý>kyŠ?€½ÿÿ?¾à> >Åǽˆâc¾Fññ>Dñ±>À°/<ò•¾z‚º>òÕ>è *¾ä ê½z‚ +?òu>Ë0=׳½¾æ©>׳ý>\m{¾¬–§½WÛ?VËS>€½üÿ½à>à>ÅǽÅǽFññ>Dññ>À°/<ä *¾z‚º>y‚ +?è *¾à°/Ë0=®g{¾æ©>ìÙ?\m{¾¨Ò0=WÛ?«å©>€½€=à>?ÅǽÀëà¢ø?À°/<'(½z‚º>y‚*?è *¾û +>z‚ +?y‚ú>Ë0=\Ïö½æ©>ìÙ>?\m{¾ª4,>WÛ?«åé>€½@>à>0?Åǽx>Fññ>¢ø8?À°/<8ì«=z‚º>y‚J?è *¾‡}…>z‚ +?ìÙ^?\m{¾U–>WÛ?Öò?€½ >à>P?Åǽ¼Ž>Fññ>¢øX?À°/<öU>z‚º>y‚j?è *¾‡}Å>z‚ +?æ©>ìÙ~?\m{¾UÖ>WÛ?Öò4?€½à>à>p?Åǽ¼Î>Fññ>¢øx?À°/<ûª>z‚º>æ©>öl?\m{¾* ?WÛ?ÖòT?€½?à>ˆ?Åǽ^?Fññ>Q|Œ?À°/<ûê>z‚º>æ©>ölŸ?\m{¾* +?WÛ?Öòt?€½0?à>˜?Åǽ^'?Fññ>Q|œ?À°/<‡}?z‚º>öl¯?\m{¾* K?WÛ?kyŠ?øÿ=ÿÿ?¾? > ëà<ˆâc¾£ø?Dñ±> û +>ò•¾z‚ú>òÕ> '(½ä ê½z‚*?òu>Æ2,>׳½¾æé>׳ý>¸Úö½¬–§½WÛ>?VËS>øÿ=üÿ½?à> ëà<Åǽ£ø?Dññ> û +>ä *¾z‚ú>y‚ +? '(½à°/Æ2,>®g{¾æé>ìÙ?¸Úö½¨Ò0=WÛ>?«å©>øÿ=€=?? ëà<Àëà<£ø?¢ø? û +>'(½z‚ú>y‚*? '(½û +>z‚*?y‚ú>Æ2,>\Ïö½æé>ìÙ>?¸Úö½ª4,>WÛ>?«åé>øÿ=@>?0? ëà£ø?¢ø8? û +>8ì«=z‚ú>y‚J? '(½‡}…>z‚*?@ +“;æé>ìÙ^?¸Úö½U–>WÛ>?Öò?øÿ= >?P? ëà<¼Ž>£ø?¢øX? û +>öU>z‚ú>y‚j? '(½‡}Å>z‚*?R˜>æé>ìÙ~?¸Úö½UÖ>WÛ>?Öò4?øÿ=à>?p? ëà<¼Î>£ø?¢øx? û +>ûª>z‚ú>)L‚>æé>öl?¸Úö½* ?WÛ>?ÖòT?øÿ=??ˆ? ëà<^?£ø?Q|Œ? û +>ûê>z‚ú>)LÂ>æé>ölŸ?¸Úö½* +?WÛ>?Öòt?øÿ=0??˜? ëà<^'?£ø?Q|œ? û +>‡}?z‚ú>&?æé>öl¯?¸Úö½* K?WÛ>?kyŠ?þÿ?>ÿÿ?¾0? >t>ˆâc¾£ø8?Dñ±>†}…>ò•¾=A?òÕ>0ì«=ä ê½z‚J?òu>c–>׳½¾Nó?׳ý>€T’;¬–§½WÛ^?VËS>þÿ?>üÿ½0?à>t>Åǽ£ø8?Dññ>†}…>ä *¾=A?y‚ +?0ì«=à°/c–>®g{¾Nó?ìÙ?€T’;¨Ò0=WÛ^?«å©>þÿ?>€=0??t>Àëà<£ø8?¢ø?†}…>'(½=A?y‚*?0ì«=û +>z‚J?y‚ú>c–>\Ïö½Nó?ìÙ>?€T’;ª4,>WÛ^?«åé>þÿ?>@>0?0?t>x>£ø8?¢ø8?†}…>8ì«==A?y‚J?0ì«=‡}…>z‚J?@ +“;Nó?ìÙ^?€T’;U–>WÛ^?Öò?þÿ?> >0?P?t>¼Ž>£ø8?¢øX?†}…>öU>=A?y‚j?0ì«=‡}Å>z‚J?R˜>Nó?ìÙ~?€T’;UÖ>WÛ^?Öò4?þÿ?>à>0?p?t>¼Î>£ø8?¢øx?†}…>ûª>=A?)L‚>Nó?öl?€T’;* ?WÛ^?ÖòT?þÿ?>?0?ˆ?t>^?£ø8?Q|Œ?†}…>ûê>=A?)LÂ>Nó?ölŸ?€T’;* +?WÛ^?Öòt?þÿ?>0?0?˜?t>^'?£ø8?Q|œ?†}…>‡}?=A?&?Nó?öl¯?€T’;* K?WÛ^?kyŠ?ÿÿŸ>ÿÿ?¾P? >ºŽ>ˆâc¾£øX?Dñ±>†}Å>ò•¾=A=?òÕ>öU>ä ê½z‚j?òu>cÖ>׳½¾Nó4?׳ý>¤’>¬–§½WÛ~?VËS>ÿÿŸ>üÿ½P?à>ºŽ>Åǽ£øX?Dññ>†}Å>ä *¾=A=?y‚ +?öU>à°/cÖ>®g{¾Nó4?ìÙ?¤’>¨Ò0=WÛ~?«å©>ÿÿŸ>€=P??ºŽ>Àëà<£øX?¢ø?†}Å>'(½=A=?y‚*?öU>û +>z‚j?y‚ú>cÖ>\Ïö½Nó4?ìÙ>?¤’>ª4,>WÛ~?«åé>ÿÿŸ>@>P?0?ºŽ>x>£øX?¢ø8?†}Å>8ì«==A=?y‚J?öU>‡}…>z‚j?@ +“;Nó4?ìÙ^?¤’>U–>WÛ~?Öò?ÿÿŸ> >P?P?ºŽ>¼Ž>£øX?¢øX?†}Å>öU>=A=?y‚j?öU>‡}Å>z‚j?R˜>Nó4?ìÙ~?¤’>UÖ>WÛ~?Öò4?ÿÿŸ>à>P?p?ºŽ>¼Î>£øX?¢øx?†}Å>ûª>=A=?ľ?z‚j?)L‚>Nó4?öl?¤’>* ?WÛ~?ÖòT?ÿÿŸ>?P?ˆ?ºŽ>^?£øX?Q|Œ?†}Å>ûê>=A=?ľ"?z‚j?)LÂ>Nó4?ölŸ?¤’>* +?WÛ~?Öòt?ÿÿŸ>0?P?˜?ºŽ>^'?£øX?Q|œ?†}Å>‡}?=A=?ľB?z‚j?ž Ž?cÖ>&?Nó4?öl¯?¤’>* K?WÛ~?kyŠ?ÿÿß>ÿÿ?¾p? >ºÎ>ˆâc¾£øx?Dñ±>þ?ò•¾=A]?òÕ> ûª>ä ê½=A…?òu>² ?׳½¾NóT?׳ý>RI‚>¬–§½¬m?VËS>ÿÿß>üÿ½p?à>ºÎ>Åǽ£øx?Dññ>þ?ä *¾=A]?y‚ +? ûª>à°/<=A…?y‚º>² ?®g{¾NóT?ìÙ?RI‚>¨Ò0=¬m?«å©>ÿÿß>€=p??ºÎ>Àëà<£øx?¢ø?þ?'(½=A]?y‚*? ûª>û +>=A…?y‚ú>² ?\Ïö½NóT?ìÙ>?RI‚>ª4,>¬m?«åé>ÿÿß>@>p?0?ºÎ>x>£øx?¢ø8?þ?8ì«==A]?y‚J? ûª>‡}…>=A…?U–>¬m?Öò?ÿÿß> >p?P?ºÎ>¼Ž>£øx?¢øX?þ?öU>=A]?y‚j? ûª>‡}Å>=A…?NóT?ìÙ~?RI‚>UÖ>¬m?Öò4?ÿÿß>à>p?p?ºÎ>¼Î>£øx?¢øx?þ?ûª>=A]?ľ?=A…?NóT?öl?RI‚>* ?¬m?ÖòT?ÿÿß>?p?ˆ?ºÎ>^?£øx?Q|Œ?þ?ûê>=A]?ľ"?=A…?NóT?ölŸ?RI‚>* +?¬m?Öòt?ÿÿß>0?p?˜?ºÎ>^'?£øx?Q|œ?þ?‡}?=A]?ľB?=A…?ž Ž?² ?&?NóT?öl¯?RI‚>* K?¬m?kyŠ??ÿÿ?¾ˆ? >]?ˆâc¾R|Œ?Dñ±>þ"?ò•¾=A}?òÕ> ûê>ä ê½=A•?òu>² +?׳½¾Nót?׳ý>RIÂ>¬–§½¬mŸ?VËS>?üÿ½ˆ?à>]?ÅǽR|Œ?Dññ>þ"?ä *¾=A}?y‚ +? ûê>à°/<=A•?y‚º>² +?®g{¾Nót?ìÙ?RIÂ>¨Ò0=¬mŸ?«å©>?€=ˆ??]?Àëàû +>=A•?y‚ú>² +?\Ïö½Nót?ìÙ>?RIÂ>ª4,>¬mŸ?«åé>?@>ˆ?0?]?x>R|Œ?¢ø8?þ"?8ì«==A}?y‚J? ûê>‡}…>=A•?U–>¬mŸ?Öò?? >ˆ?P?]?¼Ž>R|Œ?¢øX?þ"?öU>=A}?y‚j? ûê>‡}Å>=A•?Nót?ìÙ~?RIÂ>UÖ>¬mŸ?Öò4??à>ˆ?p?]?¼Î>R|Œ?¢øx?þ"?ûª>=A}?ľ?=A•?Nót?öl?RIÂ>* ?¬mŸ?ÖòT???ˆ?ˆ?]?^?R|Œ?Q|Œ?þ"?ûê>=A}?ľ"?=A•?Nót?ölŸ?RIÂ>* +?¬mŸ?Öòt??0?ˆ?˜?]?^'?R|Œ?Q|œ?þ"?‡}?=A}?ľB?=A•?ž Ž?² +?&?Nót?öl¯?RIÂ>* K?¬mŸ?kyŠ?0?ÿÿ?¾˜? >]'?ˆâc¾R|œ?Dñ±>þB?ò•¾ž Ž?òÕ>†}?ä ê½=A¥?òu>² K?׳½¾§yŠ?׳ý>©$?¬–§½¬m¯?VËS>0?üÿ½˜?à>]'?ÅǽR|œ?Dññ>þB?ä *¾ž Ž?y‚ +?†}?à°/<=A¥?y‚º>² K?®g{¾§yŠ?ìÙ?©$?¨Ò0=¬m¯?«å©>0?€=˜??]'?Àëà=A¥?y‚ú>² K?\Ïö½§yŠ?ìÙ>?©$?ª4,>¬m¯?«åé>0?@>˜?0?]'?x>R|œ?¢ø8?þB?8ì«=ž Ž?y‚J?†}?‡}…>=A¥?¬m¯?Öò?0? >˜?P?]'?¼Ž>R|œ?¢øX?þB?öU>ž Ž?y‚j?†}?‡}Å>=A¥?§yŠ?ìÙ~?©$?UÖ>¬m¯?Öò4?0?à>˜?p?]'?¼Î>R|œ?¢øx?þB?ûª>ž Ž?§yŠ?öl?©$?* ?¬m¯?ÖòT?0??˜?ˆ?]'?^?R|œ?Q|Œ?þB?ûê>ž Ž?§yŠ?ölŸ?©$?* +?¬m¯?Öòt?0?0?˜?˜?]'?^'?R|œ?Q|œ?þB?‡}?ž Ž?efæ>^5q¾Z5q¾¯šø>­šø>z¦Ö½:S«¾ž©µ>©?=S«¾t¦Ö½ž©?©µ>ÊH€½–6à¾2 >K0?H:à¾ÞC€½$0?ø >ÎÌL¾ØÌL=gfæ>233?^5q¾`ªl<¯šø>VM©U?=S«¾Æ¬>ž©?ÎÔ?ÊH€½,m@¾2 >Kp?H:à¾Þ?>$0?|?ÎÌL¾›™™>gfæ>23s?^5q¾Se‡>¯šø>VM|?z¦Ö½ŒY)>ž©µ>ÎÔŠ?=S«¾cVÊ>ž©?ÎÔZ?ÊH€½PK~=2 >¦ ˜?H:à¾ïß>$0?|P?ÎÌL¾ÎÌ ?gfæ>™™™?^5q¾ª²?¯šø>«&ž?z¦Ö½Æ¬Ô>ž©µ>ÎÔª?=S«¾2+%?ž©?gj?ÊH€½jÉŸ>2 >¦ ¸?H:྄÷/?$0?>ˆ?ÈÌL=ÊÌL¾433?efæ> ªlì>:S«¾ÏÔ?©?ôL­½t¦Ö½ž©U?©µ>›Û?>–6ྠ?K0?t@¾ÞC€½$p?ø >ÈÌL=ØÌL=433?233? ªl<`ªlèL­½ÏÔ?©U?ôL­½Æ¬>ž©U?ÎÔ?›Û?>,m@¾ ?Kp?t@¾Þ?>$p?|?ÈÌL=›™™>433?23s? ªlXMŒY)>ÏÔ?ÎÔŠ?ôL­½cVÊ>ž©U?ÎÔZ?›Û?>PK~= ?¦ ˜?t@¾ïß>$p?|P?ÈÌL=ÎÌ ?433?™™™? ªl<ª²?XMƬÔ>ÏÔ?ÎÔª?ôL­½2+%?ž©U?gj?›Û?>jÉŸ> ?¦ ¸?t@¾„÷/?$p?>ˆ?™™™>ÊÌL¾43s?efæ>Qe‡>Z5q¾XM|?­šø>bVÊ>:S«¾ÏÔZ?©?†Y)>t¦Ö½ÏÔŠ?©µ>Îíß>–6ྠP?K0?À-~=ÞC€½’˜?ø >™™™>ØÌL=43s?233?Qe‡>`ªlèL­½ÏÔZ?©U?†Y)>Ƭ>ÏÔŠ?ÎÔ?Îíß>,m@¾ P?Kp?À-~=Þ?>’˜?|?™™™>›™™>43s?23s?Qe‡>Se‡>XM|?VM|?bVÊ>ŒY)>ÏÔZ?ÎÔŠ?†Y)>cVÊ>ÏÔŠ?ÎÔZ?Îíß>PK~= P?¦ ˜?À-~=ïß>’˜?|P?™™™>ÎÌ ?43s?™™™?Qe‡>ª²?XM|?«&ž?bVÊ>ƬÔ>ÏÔZ?ÎÔª?†Y)>2+%?ÏÔŠ?gj?Îíß>jÉŸ> P?¦ ¸?À-~=„÷/?’˜?>ˆ?ÌÌ ?ÊÌL¾š™™?efæ>¨²?Z5q¾¬&ž?­šø>1+%?:S«¾hj?©?ìÔ>t¦Ö½ÏÔª?©µ>çö/?–6ྈ?K0?¸ÅŸ>ÞC€½’¸?ø >ÌÌ ?ØÌL=š™™?233?¨²?`ªl<¬&ž?VMƬ>ÏÔª?ÎÔ?çö/?,m@¾ˆ?Kp?¸ÅŸ>Þ?>’¸?|?ÌÌ ?›™™>š™™?23s?¨²?Se‡>¬&ž?VM|?1+%?ŒY)>hj?ÎÔŠ?ìÔ>cVÊ>ÏÔª?ÎÔZ?çö/?PK~=ˆ?¦ ˜?¸ÅŸ>ïß>’¸?|P?ÌÌ ?ÎÌ ?š™™?™™™?¨²?ª²?¬&ž?«&ž?1+%?ƬÔ>hj?ÎÔª?ìÔ>2+%?ÏÔª?gj?çö/?jÉŸ>ˆ?¦ ¸?¸ÅŸ>„÷/?’¸?>ˆ?œ™¾˜™¾gf&?ff&?îY>¾êY>¾|–/?z–/? †½„¡¡¾bh?ÂÐP?ˆ¡¡¾†½ÄÐP?ah?x#œ¬\q?â½â¾°;œ<ñ^q?E<ö>œ™¾43³>gf&?33“?îY>¾ Ó >|–/?=Ë—? †½ø¼<>bh?ah¨?ˆ¡¡¾>/ï>ÄÐP?04„?x#œ<@5j=È=ö>V®¸?â½â¾Þá?ñ^q?"{?23³>˜™¾43“?ff&? Ó >êY>¾>Ë—?z–/?„¡¡¾14„?ÂÐP?ð¼<>†½bh¨?ah?á?X¹â¾ä{?¬\q?ðj=°;œ23³>43³>43“?33“? Ó > Ó >>Ë—?=Ë—?ø¼<>14„?ah¨?ð¼<>>/ï>bh¨?04„?á?@5j=ä{?V®¸?ðj=Þá?x¯¸?"{?ÀÌÌ<àÌÌ<š™y?™™y?mO<@mO˜ß/¾ôûU?óû•? ß/¾4(>ôû•?óûU?D-g><¥¾¯4F?O©?|A¥¾Ü0g>_P©?É3F? \ No newline at end of file diff --git a/src/server/public/models/ssd_mobilenetv1_model-weights_manifest.json b/src/server/public/models/ssd_mobilenetv1_model-weights_manifest.json new file mode 100644 index 000000000..204e0d13c --- /dev/null +++ b/src/server/public/models/ssd_mobilenetv1_model-weights_manifest.json @@ -0,0 +1 @@ +[{"paths":["ssd_mobilenetv1_model-shard1","ssd_mobilenetv1_model-shard2"],"weights":[{"dtype":"float32","shape":[1,1,512,9],"quantization":{"scale":0.0026856216729856004,"min":-0.34107395246917127,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/ClassPredictor/weights"},{"dtype":"float32","shape":[9],"quantization":{"scale":0.00198518248165355,"min":-0.32159956202787515,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/ClassPredictor/biases"},{"dtype":"float32","shape":[1,1,1024,18],"quantization":{"scale":0.003060340296988394,"min":-0.489654447518143,"dtype":"uint8"},"name":"Prediction/BoxPredictor_1/ClassPredictor/weights"},{"dtype":"float32","shape":[18],"quantization":{"scale":0.0008040678851744708,"min":-0.12221831854651957,"dtype":"uint8"},"name":"Prediction/BoxPredictor_1/ClassPredictor/biases"},{"dtype":"float32","shape":[1,1,512,18],"quantization":{"scale":0.0012513800578958848,"min":-0.16017664741067325,"dtype":"uint8"},"name":"Prediction/BoxPredictor_2/ClassPredictor/weights"},{"dtype":"float32","shape":[18],"quantization":{"scale":0.000338070518245884,"min":-0.05510549447407909,"dtype":"uint8"},"name":"Prediction/BoxPredictor_2/ClassPredictor/biases"},{"dtype":"float32","shape":[1,1,256,18],"quantization":{"scale":0.0011819932975021064,"min":-0.1453851755927591,"dtype":"uint8"},"name":"Prediction/BoxPredictor_3/ClassPredictor/weights"},{"dtype":"float32","shape":[18],"quantization":{"scale":0.00015985782386041154,"min":-0.026536398760828316,"dtype":"uint8"},"name":"Prediction/BoxPredictor_3/ClassPredictor/biases"},{"dtype":"float32","shape":[1,1,256,18],"quantization":{"scale":0.0007035591438704846,"min":-0.08513065640832863,"dtype":"uint8"},"name":"Prediction/BoxPredictor_4/ClassPredictor/weights"},{"dtype":"float32","shape":[18],"quantization":{"scale":0.00008793946574716008,"min":-0.013190919862074012,"dtype":"uint8"},"name":"Prediction/BoxPredictor_4/ClassPredictor/biases"},{"dtype":"float32","shape":[1,1,128,18],"quantization":{"scale":0.00081320781918133,"min":-0.11059626340866088,"dtype":"uint8"},"name":"Prediction/BoxPredictor_5/ClassPredictor/weights"},{"dtype":"float32","shape":[18],"quantization":{"scale":0.0000980533805547976,"min":-0.014609953702664841,"dtype":"uint8"},"name":"Prediction/BoxPredictor_5/ClassPredictor/biases"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":3,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/stack_1/2"},{"dtype":"int32","shape":[3],"quantization":{"scale":0.00392156862745098,"min":0,"dtype":"uint8"},"name":"Postprocessor/Slice/begin"},{"dtype":"int32","shape":[3],"quantization":{"scale":1,"min":-1,"dtype":"uint8"},"name":"Postprocessor/Slice/size"},{"dtype":"float32","shape":[1,1,512,12],"quantization":{"scale":0.003730384859384275,"min":-0.4327246436885759,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/BoxEncodingPredictor/weights"},{"dtype":"float32","shape":[12],"quantization":{"scale":0.0018744708568442102,"min":-0.3917644090804399,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/BoxEncodingPredictor/biases"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":3072,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/stack_1/1"},{"dtype":"float32","shape":[1,1,1024,24],"quantization":{"scale":0.00157488017689948,"min":-0.20000978246623397,"dtype":"uint8"},"name":"Prediction/BoxPredictor_1/BoxEncodingPredictor/weights"},{"dtype":"float32","shape":[24],"quantization":{"scale":0.0002823906713256649,"min":-0.043488163384152394,"dtype":"uint8"},"name":"Prediction/BoxPredictor_1/BoxEncodingPredictor/biases"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":1536,"dtype":"uint8"},"name":"Prediction/BoxPredictor_1/stack_1/1"},{"dtype":"float32","shape":[1,1,512,24],"quantization":{"scale":0.0007974451663447361,"min":-0.11004743295557358,"dtype":"uint8"},"name":"Prediction/BoxPredictor_2/BoxEncodingPredictor/weights"},{"dtype":"float32","shape":[24],"quantization":{"scale":0.0001350417988849621,"min":-0.02039131163162928,"dtype":"uint8"},"name":"Prediction/BoxPredictor_2/BoxEncodingPredictor/biases"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":384,"dtype":"uint8"},"name":"Prediction/BoxPredictor_2/stack_1/1"},{"dtype":"float32","shape":[1,1,256,24],"quantization":{"scale":0.0007113990246080885,"min":-0.0860792819775787,"dtype":"uint8"},"name":"Prediction/BoxPredictor_3/BoxEncodingPredictor/weights"},{"dtype":"float32","shape":[24],"quantization":{"scale":0.000050115815418608046,"min":-0.007617603943628423,"dtype":"uint8"},"name":"Prediction/BoxPredictor_3/BoxEncodingPredictor/biases"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":96,"dtype":"uint8"},"name":"Prediction/BoxPredictor_3/stack_1/1"},{"dtype":"float32","shape":[1,1,256,24],"quantization":{"scale":0.000590049314732645,"min":-0.06903576982371946,"dtype":"uint8"},"name":"Prediction/BoxPredictor_4/BoxEncodingPredictor/weights"},{"dtype":"float32","shape":[24],"quantization":{"scale":0.00003513663861097074,"min":-0.006359731588585704,"dtype":"uint8"},"name":"Prediction/BoxPredictor_4/BoxEncodingPredictor/biases"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":24,"dtype":"uint8"},"name":"Prediction/BoxPredictor_4/stack_1/1"},{"dtype":"float32","shape":[1,1,128,24],"quantization":{"scale":0.0005990567744946948,"min":-0.07907549423329971,"dtype":"uint8"},"name":"Prediction/BoxPredictor_5/BoxEncodingPredictor/weights"},{"dtype":"float32","shape":[24],"quantization":{"scale":0.00003392884288640583,"min":-0.006039334033780238,"dtype":"uint8"},"name":"Prediction/BoxPredictor_5/BoxEncodingPredictor/biases"},{"dtype":"float32","shape":[],"quantization":{"scale":1,"min":0.007843137718737125,"dtype":"uint8"},"name":"Preprocessor/mul/x"},{"dtype":"int32","shape":[2],"quantization":{"scale":1,"min":512,"dtype":"uint8"},"name":"Preprocessor/ResizeImage/size"},{"dtype":"float32","shape":[],"quantization":{"scale":1,"min":1,"dtype":"uint8"},"name":"Preprocessor/sub/y"},{"dtype":"float32","shape":[3,3,3,32],"quantization":{"scale":0.03948551065781537,"min":-5.014659853542552,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_0_pointwise/weights"},{"dtype":"float32","shape":[32],"quantization":{"scale":0.0498106133704092,"min":-7.371970778820562,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_0_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,32,1],"quantization":{"scale":0.036833542468501075,"min":-4.714693435968138,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_1_depthwise/depthwise_weights"},{"dtype":"float32","shape":[32],"quantization":{"scale":0.012173276705046495,"min":-0.012173276705046495,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_1_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[32],"quantization":{"scale":0.032182769214405736,"min":-2.4780732295092416,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_1_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[32],"quantization":{"scale":0.028287527607936486,"min":-3.366215785344442,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_1_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[32],"quantization":{"scale":0.04716738532571232,"min":3.9071404665769224e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_1_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,32,64],"quantization":{"scale":0.04010109433940812,"min":-4.290817094316669,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_1_pointwise/weights"},{"dtype":"float32","shape":[64],"quantization":{"scale":0.2212210038129021,"min":-34.51047659481273,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_1_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,64,1],"quantization":{"scale":0.010024750933927648,"min":-1.343316625146305,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_2_depthwise/depthwise_weights"},{"dtype":"float32","shape":[64],"quantization":{"scale":0.006120916675118839,"min":0.5227176547050476,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_2_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[64],"quantization":{"scale":0.02317035385206634,"min":-0.7646216771181892,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_2_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[64],"quantization":{"scale":0.04980821422502106,"min":-5.8275610643274645,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_2_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[64],"quantization":{"scale":0.051751047022202436,"min":3.916113799002297e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_2_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,64,128],"quantization":{"scale":0.021979344124887504,"min":-2.1319963801140878,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_2_pointwise/weights"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.09958663267247816,"min":-11.054116226645077,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_2_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,128,1],"quantization":{"scale":0.01943492702409333,"min":-2.6237151482525993,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_3_depthwise/depthwise_weights"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.017852897737540452,"min":0.40204083919525146,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_3_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.029888209174661076,"min":-1.972621805527631,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.029319268581913967,"min":-5.130872001834945,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_3_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.014018708584355373,"min":3.9083178263362604e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_3_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,128,128],"quantization":{"scale":0.020776657964669022,"min":-2.5347522716896207,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_3_pointwise/weights"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.14383157094319662,"min":-9.636715253194174,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_3_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,128,1],"quantization":{"scale":0.004463558571011412,"min":-0.5981168485155293,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_4_depthwise/depthwise_weights"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.006487431245691636,"min":0.47910428047180176,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_4_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.026542164297664865,"min":-1.2209395576925839,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_4_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.05119945675719018,"min":-8.60150873520795,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_4_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.03081628388049556,"min":3.911508751095344e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_4_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,128,256],"quantization":{"scale":0.010758659886378868,"min":-1.0328313490923713,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_4_pointwise/weights"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.08058219610476026,"min":-9.34753474815219,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_4_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,256,1],"quantization":{"scale":0.01145936741548426,"min":-1.3292866201961742,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_5_depthwise/depthwise_weights"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.0083988838336047,"min":0.36280909180641174,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_5_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.02858148649627087,"min":-3.6584302715226715,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_5_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.03988401375564874,"min":-7.099354448505476,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_5_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.009090481683904049,"min":0.020878996700048447,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_5_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,256,256],"quantization":{"scale":0.008951201625898773,"min":-1.1189002032373465,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_5_pointwise/weights"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.051758006974762565,"min":-5.745138774198645,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_5_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,256,1],"quantization":{"scale":0.004110433190476661,"min":-0.6042336790000691,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_6_depthwise/depthwise_weights"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.013170199768216002,"min":0.3386639356613159,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_6_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.03599378548416437,"min":-3.70735990486893,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_6_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.026967673208199296,"min":-3.748506575939702,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_6_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.012615410486857097,"min":3.9111388979838637e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_6_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,256,512],"quantization":{"scale":0.00822840648538926,"min":-1.1848905338960536,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_6_pointwise/weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.06608965817619772,"min":-7.468131373910342,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_6_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,512,1],"quantization":{"scale":0.008801074355256323,"min":-0.9593171047229393,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_7_depthwise/depthwise_weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.030577416513480393,"min":0.3285980224609375,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_7_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.04778536441279393,"min":-8.935863145192464,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_7_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.04331884945140165,"min":-9.660103427662568,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_7_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.04126455444367785,"min":0.000604183878749609,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_7_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,512,512],"quantization":{"scale":0.009305818408143287,"min":-1.1446156642016243,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_7_pointwise/weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.04640720217835669,"min":-4.733534622192383,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_7_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,512,1],"quantization":{"scale":0.008138792655047248,"min":-0.9766551186056698,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_8_depthwise/depthwise_weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.027351748358969596,"min":0.34030041098594666,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_8_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.04415061053107767,"min":-7.019947074441349,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_8_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.02476683784933651,"min":-2.9224868662217083,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_8_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.02547598832684076,"min":0.00026032101595774293,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_8_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,512,512],"quantization":{"scale":0.01083052625843123,"min":-1.2563410459780227,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_8_pointwise/weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.06360894371481503,"min":-7.951117964351878,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_8_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,512,1],"quantization":{"scale":0.006704086883395326,"min":-0.8648272079579971,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_9_depthwise/depthwise_weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.015343831567203297,"min":0.2711026668548584,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_9_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.03378283930759804,"min":-4.797163181678922,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_9_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.021910778213949763,"min":-3.987761634938857,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_9_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.009284070410007296,"min":0.000021581046894425526,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_9_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,512,512],"quantization":{"scale":0.012783036979974485,"min":-1.9046725100161983,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_9_pointwise/weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.07273082733154297,"min":-9.52773838043213,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_9_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,512,1],"quantization":{"scale":0.006126228033327589,"min":-0.7351473639993107,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_10_depthwise/depthwise_weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.029703759212119908,"min":0.28687000274658203,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_10_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.04394429898729511,"min":-6.3279790541704966,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_10_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.016566915605582443,"min":-2.7501079905266854,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_10_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.012152872833551145,"min":3.913338286370366e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_10_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,512,512],"quantization":{"scale":0.01354524388032801,"min":-1.7473364605623134,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_10_pointwise/weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.08566816367355047,"min":-9.937506986131854,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_10_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,512,1],"quantization":{"scale":0.006012305558896532,"min":-0.7876120282154457,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_11_depthwise/depthwise_weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.01469323155926723,"min":0.29223933815956116,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_11_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.030889174517463234,"min":-3.2433633243336395,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_11_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.014836942448335536,"min":-2.047498057870304,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_11_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.007234466105343445,"min":0.00013165915152058005,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_11_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,512,512],"quantization":{"scale":0.016261722527298274,"min":-1.4798167499841428,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_11_pointwise/weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.091437328563017,"min":-14.172785927267636,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_11_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,512,1],"quantization":{"scale":0.004750356487199372,"min":-0.650798838746314,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_12_depthwise/depthwise_weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.008174965545242907,"min":0.3120670020580292,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_12_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.030133422215779623,"min":-2.41067377726237,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_12_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.006088157261119169,"min":-0.7853722866843729,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_12_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.003668997334498985,"min":3.9124486300013356e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_12_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,512,1024],"quantization":{"scale":0.010959514449624454,"min":-1.4028178495519301,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_12_pointwise/weights"},{"dtype":"float32","shape":[1024],"quantization":{"scale":0.10896045834410424,"min":-14.818622334798176,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_12_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,1024,1],"quantization":{"scale":0.004633033509347953,"min":-0.5652300881404502,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_13_depthwise/depthwise_weights"},{"dtype":"float32","shape":[1024],"quantization":{"scale":0.022285057224479377,"min":0.23505790531635284,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_13_depthwise/BatchNorm/gamma"},{"dtype":"float32","shape":[1024],"quantization":{"scale":0.0324854850769043,"min":-3.9957146644592285,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_13_depthwise/BatchNorm/beta"},{"dtype":"float32","shape":[1024],"quantization":{"scale":0.014760061806323482,"min":-2.125448900110581,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_13_depthwise/BatchNorm/moving_mean"},{"dtype":"float32","shape":[1024],"quantization":{"scale":0.0036057423142825855,"min":3.9067056828997994e-36,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_13_depthwise/BatchNorm/moving_variance"},{"dtype":"float32","shape":[1,1,1024,1024],"quantization":{"scale":0.017311988157384536,"min":-2.094750567043529,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_13_pointwise/weights"},{"dtype":"float32","shape":[1024],"quantization":{"scale":0.16447528764313343,"min":-25.658144872328815,"dtype":"uint8"},"name":"MobilenetV1/Conv2d_13_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[1,1,1024,256],"quantization":{"scale":0.0026493051472832175,"min":-0.36825341547236723,"dtype":"uint8"},"name":"Prediction/Conv2d_0_pointwise/weights"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.012474596734140433,"min":-2.3078003958159803,"dtype":"uint8"},"name":"Prediction/Conv2d_0_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,256,512],"quantization":{"scale":0.014533351449405445,"min":-1.8166689311756807,"dtype":"uint8"},"name":"Prediction/Conv2d_1_pointwise/weights"},{"dtype":"float32","shape":[512],"quantization":{"scale":0.024268776762719248,"min":-2.4754152297973633,"dtype":"uint8"},"name":"Prediction/Conv2d_1_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[1,1,512,128],"quantization":{"scale":0.002208403746287028,"min":-0.28709248701731366,"dtype":"uint8"},"name":"Prediction/Conv2d_2_pointwise/weights"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.012451349052728392,"min":-1.5937726787492341,"dtype":"uint8"},"name":"Prediction/Conv2d_2_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,128,256],"quantization":{"scale":0.026334229637594783,"min":-2.8967652601354263,"dtype":"uint8"},"name":"Prediction/Conv2d_3_pointwise/weights"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.02509917792151956,"min":-1.4055539636050953,"dtype":"uint8"},"name":"Prediction/Conv2d_3_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[1,1,256,128],"quantization":{"scale":0.004565340046789132,"min":-0.3971845840706545,"dtype":"uint8"},"name":"Prediction/Conv2d_4_pointwise/weights"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.017302456556581983,"min":-2.5953684834872974,"dtype":"uint8"},"name":"Prediction/Conv2d_4_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,128,256],"quantization":{"scale":0.025347338470758176,"min":-3.8527954475552426,"dtype":"uint8"},"name":"Prediction/Conv2d_5_pointwise/weights"},{"dtype":"float32","shape":[256],"quantization":{"scale":0.033134659598855414,"min":-2.9158500446992766,"dtype":"uint8"},"name":"Prediction/Conv2d_5_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[1,1,256,64],"quantization":{"scale":0.002493104397081861,"min":-0.2817207968702503,"dtype":"uint8"},"name":"Prediction/Conv2d_6_pointwise/weights"},{"dtype":"float32","shape":[64],"quantization":{"scale":0.011383360974928912,"min":-1.2749364291920382,"dtype":"uint8"},"name":"Prediction/Conv2d_6_pointwise/convolution_bn_offset"},{"dtype":"float32","shape":[3,3,64,128],"quantization":{"scale":0.020821522731407017,"min":-2.7484410005457263,"dtype":"uint8"},"name":"Prediction/Conv2d_7_pointwise/weights"},{"dtype":"float32","shape":[128],"quantization":{"scale":0.052144218893612135,"min":-3.5979511036592373,"dtype":"uint8"},"name":"Prediction/Conv2d_7_pointwise/convolution_bn_offset"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":6,"dtype":"uint8"},"name":"Prediction/BoxPredictor_5/stack_1/1"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":1,"dtype":"uint8"},"name":"concat_1/axis"},{"dtype":"int32","shape":[1],"quantization":{"scale":1,"min":0,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/strided_slice/stack"},{"dtype":"int32","shape":[1],"quantization":{"scale":1,"min":1,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/strided_slice/stack_1"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":5118,"dtype":"uint8"},"name":"Postprocessor/stack/1"},{"dtype":"int32","shape":[],"quantization":{"scale":1,"min":4,"dtype":"uint8"},"name":"Prediction/BoxPredictor_0/stack/3"},{"dtype":"float32","shape":[1, 5118, 4],"name":"Output/extra_dim"}]}] \ No newline at end of file diff --git a/src/server/public/models/tiny_face_detector_model-shard1 b/src/server/public/models/tiny_face_detector_model-shard1 new file mode 100644 index 000000000..a3f113a54 Binary files /dev/null and b/src/server/public/models/tiny_face_detector_model-shard1 differ diff --git a/src/server/public/models/tiny_face_detector_model-weights_manifest.json b/src/server/public/models/tiny_face_detector_model-weights_manifest.json new file mode 100644 index 000000000..7d3b222d0 --- /dev/null +++ b/src/server/public/models/tiny_face_detector_model-weights_manifest.json @@ -0,0 +1 @@ +[{"weights":[{"name":"conv0/filters","shape":[3,3,3,16],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.009007044399485869,"min":-1.2069439495311063}},{"name":"conv0/bias","shape":[16],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.005263455241334205,"min":-0.9211046672334858}},{"name":"conv1/depthwise_filter","shape":[3,3,16,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004001977630690033,"min":-0.5042491814669441}},{"name":"conv1/pointwise_filter","shape":[1,1,16,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.013836609615999109,"min":-1.411334180831909}},{"name":"conv1/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0015159862590771096,"min":-0.30926119685173037}},{"name":"conv2/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002666276225856706,"min":-0.317286870876948}},{"name":"conv2/pointwise_filter","shape":[1,1,32,64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.015265831292844286,"min":-1.6792414422128714}},{"name":"conv2/bias","shape":[64],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0020280554598453,"min":-0.37113414915168985}},{"name":"conv3/depthwise_filter","shape":[3,3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006100742489683862,"min":-0.8907084034938438}},{"name":"conv3/pointwise_filter","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.016276211832083907,"min":-2.0508026908425725}},{"name":"conv3/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003394414279975143,"min":-0.7637432129944072}},{"name":"conv4/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006716050119961009,"min":-0.8059260143953211}},{"name":"conv4/pointwise_filter","shape":[1,1,128,256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.021875603993733724,"min":-2.8875797271728514}},{"name":"conv4/bias","shape":[256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0041141652009066415,"min":-0.8187188749804216}},{"name":"conv5/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008423839597141042,"min":-0.9013508368940915}},{"name":"conv5/pointwise_filter","shape":[1,1,256,512],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.030007277283014035,"min":-3.8709387695088107}},{"name":"conv5/bias","shape":[512],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.008402082966823203,"min":-1.4871686851277068}},{"name":"conv8/filters","shape":[1,1,512,25],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.028336129469030042,"min":-4.675461362389957}},{"name":"conv8/bias","shape":[25],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002268134028303857,"min":-0.41053225912299807}}],"paths":["tiny_face_detector_model-shard1"]}] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 9e03f9333641c818ed9c711282f27f7213cbe3c1 Mon Sep 17 00:00:00 2001 From: IEatChili Date: Fri, 2 Aug 2024 14:11:41 -0400 Subject: feat: integrated face recognition code with image documents --- src/client/util/DocumentManager.ts | 6 +- src/client/views/search/FaceRecognitionHandler.tsx | 86 +++++++++++++++------- 2 files changed, 65 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts index 8ad6ddf47..7d4684f41 100644 --- a/src/client/util/DocumentManager.ts +++ b/src/client/util/DocumentManager.ts @@ -6,11 +6,12 @@ import { Id } from '../../fields/FieldSymbols'; import { listSpec } from '../../fields/Schema'; import { Cast, DocCast, NumCast, StrCast } from '../../fields/Types'; import { AudioField } from '../../fields/URLField'; -import { CollectionViewType } from '../documents/DocumentTypes'; +import { CollectionViewType, DocumentType } from '../documents/DocumentTypes'; import { DocumentView, DocumentViewInternal } from '../views/nodes/DocumentView'; import { FocusViewOptions } from '../views/nodes/FocusViewOptions'; import { OpenWhere } from '../views/nodes/OpenWhere'; import { PresBox } from '../views/nodes/trails'; +import { FaceRecognitionHandler } from '../views/search/FaceRecognitionHandler'; type childIterator = { viewSpec: Opt; childDocView: Opt; focused: boolean; contextPath: Doc[] }; export class DocumentManager { @@ -96,6 +97,9 @@ export class DocumentManager { @action public AddView = (view: DocumentView) => { + if (view.Document.type === DocumentType.IMG && view.Document.embedContainer) { + FaceRecognitionHandler.Instance.findMatches(view.Document); + } this.AddDocumentView(view); this.callAddViewFuncs(view); }; diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 86619b2d1..fcd38c42f 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -4,51 +4,84 @@ import { Doc, DocListCast, NumListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { List } from '../../../fields/List'; import { ObjectField } from '../../../fields/ObjectField'; -import { StrCast } from '../../../fields/Types'; +import { ImageCast, StrCast } from '../../../fields/Types'; +import { DocUtils } from '../../documents/DocUtils'; +import { Deserializable } from '../../util/SerializationHelper'; +import { DocumentView } from '../nodes/DocumentView'; export class FaceRecognitionHandler { static _instance: FaceRecognitionHandler; + private loadedModels: boolean = false; + examinedDocs: Set = new Set(); + processingDocs: Set = new Set(); constructor() { FaceRecognitionHandler._instance = this; this.loadModels(); - if (!Doc.ActiveDashboard![DocData].faceDocuments) { - Doc.ActiveDashboard![DocData].faceDocuments = new List(); - } } async loadModels() { const MODEL_URL = `/models`; - await faceapi.loadTinyFaceDetectorModel(MODEL_URL); - await faceapi.loadFaceLandmarkTinyModel(MODEL_URL); + await faceapi.loadFaceDetectionModel(MODEL_URL); + await faceapi.loadFaceLandmarkModel(MODEL_URL); await faceapi.loadFaceRecognitionModel(MODEL_URL); + this.loadedModels = true; } public static get Instance() { return FaceRecognitionHandler._instance ?? new FaceRecognitionHandler(); } - public async findMatches(doc: Doc, imageURL: string) { - const img = await this.loadImage(imageURL); - - const fullFaceDescriptions = await faceapi.detectAllFaces(img, new TinyFaceDetectorOptions()).withFaceLandmarks(true).withFaceDescriptors(); - - fullFaceDescriptions.forEach(fd => { - const match = this.findMatch(fd.descriptor); - if (match) { - match[DocData].associatedDocs = new List([...DocListCast(match[DocData].associatedDocs), doc]); - match[DocData].faceDescriptors = new List>([...(match[DocData].faceDescriptors as List>), Array.from(fd.descriptor) as List]); - } else { - const newFaceDocument = new Doc(); - const converted_array = Array.from(fd.descriptor); - newFaceDocument[DocData].faceDescriptors = new List>(); - (newFaceDocument[DocData].faceDescriptors as List>).push(converted_array as List); - newFaceDocument[DocData].label = `Person ${DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).length + 1}`; - newFaceDocument[DocData].associatedDocs = new List([doc]); - - Doc.ActiveDashboard![DocData].faceDocuments = new List([...DocListCast(Doc.ActiveDashboard![DocData].faceDocuments), newFaceDocument]); + public async findMatches(doc: Doc) { + if (this.loadedModels) { + if (!Doc.ActiveDashboard![DocData].faceDocuments) { + Doc.ActiveDashboard![DocData].faceDocuments = new List(); } - }); + + if (this.examinedDocs.has(doc) || this.processingDocs.has(doc)) { + return; + } + + this.processingDocs.add(doc); + + try { + const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); + const imageURL = `${name}_o.${type}`; + + const img = await this.loadImage(imageURL); + + const fullFaceDescriptions = await faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors(); + + for (const fd of fullFaceDescriptions) { + const match = this.findMatch(fd.descriptor); + if (match) { + const converted_array = Array.from(fd.descriptor); + const converted_list = new List(converted_array); + match[DocData].associatedDocs = new List([...DocListCast(match[DocData].associatedDocs), doc]); + match[DocData].faceDescriptors = new List>([...(match[DocData].faceDescriptors as List>), converted_list]); + } else { + const newFaceDocument = new Doc(); + const converted_array = Array.from(fd.descriptor); + const converted_list = new List(converted_array); + newFaceDocument[DocData].faceDescriptors = new List>(); + (newFaceDocument[DocData].faceDescriptors as List>).push(converted_list); + newFaceDocument[DocData].label = `Person ${DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).length + 1}`; + newFaceDocument[DocData].associatedDocs = new List([doc]); + + Doc.ActiveDashboard![DocData].faceDocuments = new List([...DocListCast(Doc.ActiveDashboard![DocData].faceDocuments), newFaceDocument]); + } + } + + this.examinedDocs.add(doc); + console.log(this.examinedDocs); + + DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).forEach(doc => console.log(DocListCast(doc[DocData].associatedDocs))); + } catch (error) { + console.error('Error processing document:', error); + } finally { + this.processingDocs.delete(doc); + } + } } private findMatch(cur_descriptor: Float32Array) { @@ -68,6 +101,7 @@ export class FaceRecognitionHandler { } else { for (const doc of DocListCast(Doc.ActiveDashboard![DocData].faceDocuments)) { if (doc[DocData].label === match.label) { + console.log(match.label); return doc; } } -- cgit v1.2.3-70-g09d2 From a882dc6899a6b11e2e972f3e2a2ae991caeea094 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 6 Aug 2024 14:48:49 -0400 Subject: locking into hotkey buttons --- src/client/util/CurrentUserUtils.ts | 24 +-- src/client/views/DocumentButtonBar.scss | 5 + src/client/views/DocumentButtonBar.tsx | 43 ++--- src/client/views/DocumentDecorations.tsx | 9 +- src/client/views/FilterPanel.scss | 64 +++++++ src/client/views/FilterPanel.tsx | 285 ++++++++++++++++++++++++++----- src/client/views/MainView.tsx | 3 +- src/client/views/nodes/IconTagBox.tsx | 38 +++-- 8 files changed, 380 insertions(+), 91 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 67f8dafc4..0d8955ced 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -44,6 +44,7 @@ export interface Button { title?: string; toolTip?: string; icon?: string; + isSystem?: boolean; btnType?: ButtonType; numBtnMin?: number; numBtnMax?: number; @@ -713,14 +714,14 @@ pie title Minerals in my tap water // ] // } static tagGroupTools(): Button[] { - return [ - { title: "Star", icon: StrCast(Doc.UserDoc().myFilterHotKeyIcons) ?? "Star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "Heart", icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "Bolt", icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "Options", icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - - + // hack: if there's no dashboard, create default filters. otherwise, just make sure that the Options button is preserved + return (Doc.UserDoc().activeDashboard ? [] : [ + { title: "Star", isSystem: false, icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Heart", isSystem: false,icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Bolt", isSystem: false,icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Cloud", isSystem: false,icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + + // { title: "Group 1", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "Group 2", icon, toolTip:"Click to toggle group 2's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "Group 3", icon, toolTip:"Click to toggle group 3's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, @@ -728,7 +729,9 @@ pie title Minerals in my tap water // { title: "", icon, toolTip:"Click to toggle group 5's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"5", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "", icon, toolTip:"Click to toggle group 6's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "", icon, toolTip:"Click to toggle group 7's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - ] + ]).concat([ + { title: "Options", isSystem: true,icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} + ]) } static viewTools(): Button[] { return [ @@ -871,8 +874,9 @@ pie title Minerals in my tap water /// initializes a context menu button for the top bar context menu static setupContextMenuButton(params:Button, btnDoc?:Doc, btnContainer?:Doc) { const reqdOpts:DocumentOptions = { + isSystem: true, ...OmitKeys(params, ["scripts", "funcs", "subMenu"]).omit, - color: Colors.WHITE, isSystem: true, + color: Colors.WHITE, _nativeWidth: params.width ?? 30, _width: params.width ?? 30, _height: 30, _nativeHeight: 30, linearBtnWidth: params.linearBtnWidth, toolType: params.toolType, expertMode: params.expertMode, diff --git a/src/client/views/DocumentButtonBar.scss b/src/client/views/DocumentButtonBar.scss index 374d6ecd3..ede277aae 100644 --- a/src/client/views/DocumentButtonBar.scss +++ b/src/client/views/DocumentButtonBar.scss @@ -29,6 +29,11 @@ $linkGap: 3px; background: black; height: 20px; align-items: center; + + .tags { + width: 40px; + + } } .documentButtonBar-followTypes { width: 20px; diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index c8df66535..c61ebfb4c 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -288,7 +288,7 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( const targetDoc = this.view0?.Document; const metaBtn = (name: string, icon: IconProp) => { - const tooltip = `Show ${name}`; + const tooltip = `Toggle ${name}`; return ( {tooltip}

}>
@@ -298,18 +298,16 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( key={icon.toString()} size="sm" icon={icon} - // onPointerEnter={action(() => { - // this.subPin = - // (pinLayoutView ? 'Layout' : '') + - // (pinLayoutView && pinContentView ? ' &' : '') + - // (pinContentView ? ' Content View' : '') + - // (pinLayoutView && pinContentView ? '(shift+alt)' : pinLayoutView ? '(shift)' : pinContentView ? '(alt)' : ''); - // })} - // onPointerLeave={action(() => { - // this.subPin = ''; - // })} onClick={e => { - name === 'tags' ? targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags) : 'hi' + // console.log('wtfff') + // name === 'tags' ?? + if (name === 'tags'){ + (targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags)) + } else { + (targetDoc && (targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels)) + } + + }} @@ -323,24 +321,27 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( return !targetDoc ? null : ( +
+
+ {metaBtn('tags', 'star')} + {metaBtn("keywords", 'id-card')} +
+ Open keyword menu
}>
{ - targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels; - }}> + // targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags; + }} + > -
- { - metaBtn('tags', "tag") - /* {pinBtn(true, false, 'window-maximize')} - {pinBtn(false, true, 'address-card')} - {pinBtn(true, true, 'id-card')} */} -
+
+
+ ); } diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index b5d819b97..f3b4013f7 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -703,6 +703,7 @@ export class DocumentDecorations extends ObservableReactComponent CollectionFreeFormDocumentView.from(v)); + + + const keyWordTrans = doc[DocData].showLabels ? NumCast(doc[DocData].keywordHeight) : 0 + const tagTrans = doc[DocData].showIconTags ? NumCast(doc[DocData].tagHeight) : 0 + + return (
DocumentView.Selected()} /> diff --git a/src/client/views/FilterPanel.scss b/src/client/views/FilterPanel.scss index d6d2956aa..1877cc78b 100644 --- a/src/client/views/FilterPanel.scss +++ b/src/client/views/FilterPanel.scss @@ -1,3 +1,4 @@ + .filterBox-flyout { display: block; text-align: left; @@ -228,6 +229,69 @@ vertical-align: middle; } +.filterHotKey-button { + pointer-events: auto; + // padding-right: 8px; //5px; + width: 100%; //width: 25px; + border-radius: 5px; + // margin-right: 20px; + margin-bottom: 8px; + border-color: #d3d3d3; + border-style: solid; + border-width: thin; + transition: all 0.3s ease-out; + + &:hover{ + border-color: #e9e9e9; + background-color: #878484 + } + + + + &.active { + background-color: #878484; + + + + .icon-panel{ + display: flex + } + } +} + +.hotKeyButtons { + position: relative; + width: 100%; + // margin-top: 3px; + // // grid-column: 1/4; + // width: 100%; + // height: auto; + // display: flex; + // // flex-direction: row; + // // flex-wrap: wrap; + // padding-bottom: 5.5px; +} + +.hotKey-icon-button { + // pointer-events: auto; /* Re-enable pointer events for the buttons */ + + // width: 30px; + // height: 30px; + // border-color: $medium-blue; + background-color: transparent; + &.active{ + + + } + +} + +.icon-panel { + bottom: -14px; + + + +} // .sliderBox-outerDiv { // width: 30%;// width: calc(100% - 14px); // 14px accounts for handles that are at the max value of the slider that would extend outside the box // height: 40; // height: 100%; diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index 332a89a96..e5f9fdb51 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -28,6 +28,19 @@ import { CurrentUserUtils } from '../util/CurrentUserUtils'; import { DocumentOptions } from '../documents/Documents'; import { DocUtils } from '../documents/DocUtils'; import { dropActionType } from '../util/DropActionTypes'; +import { Toggle } from 'browndash-components'; +import { SettingsManager } from '../util/SettingsManager'; +import { StrCast } from '../../fields/Types'; +import { ToggleType } from 'browndash-components'; +import { MultiToggle } from 'browndash-components'; +import { Type } from 'browndash-components'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { DocData } from '../../fields/DocSymbols'; +import { DocumentType } from '../documents/DocumentTypes'; +import { Tooltip } from '@mui/material'; +import { useLocalObservable } from 'mobx-react'; +import { useRef } from 'react'; +import { useEffect } from 'react'; interface filterProps { @@ -228,11 +241,14 @@ export class FilterPanel extends ObservableReactComponent { }; addHotkey() { - const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); - const filter = buttons['Filter'] - const filter2 = DocCast(filter) - const but2 = Doc.UserDoc().myContextMenuBtns + const filter = DocCast(buttons.Filter); + const filter2 = DocCast(filter); + const but2 = Doc.UserDoc().myContextMenuBtns; + + console.log(DocCast(filter).data); + + //[idToDoc("0bec0963-95ac-4978-8606-8af4c7b9badd"),idToDoc("f740e910-bf83-4ee3-b13a-1e63c49dd254"),idToDoc("61db82b0-025a-4cb9-937b-97b1290e8f1a"),idToDoc("1046859f-34ac-4421-bc07-ee2f2cf812e2"),idToDoc("badaff47-3c3a-4b78-a7d6-f2cbc8e45ba0")] // const newCol = Docs.Create.CarouselDocument(DocListCast(doc[Doc.LayoutFieldKey(doc)]), { // _width: 250, @@ -251,59 +267,135 @@ export class FilterPanel extends ObservableReactComponent { // DocumentView.getDocumentView(DocCast(buttons['Card']))?.ComponentView?.addDocument?.(hm) - const hi = CurrentUserUtils.contextMenuTools() - - const newKey: Button = { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} - - - const heyy = [...hi, newKey] - - Doc.UserDoc().myFilterHotKeyIcons = "palette" - Doc.UserDoc().myFilterHotKeyTitles = "hi" - - CurrentUserUtils.setupContextMenuButtons(Doc.UserDoc()); - - - - Doc.UserDoc().hi = Docs.Create.FontIconDocument( - { title: '', - icon: 'map-pin', - - backgroundColor: '#ACCEF7', - layout_hideAllLinks: true, - _width: 15, - _height: 15, - _xPadding: 0, - } - ) - - - // buttons['Filter'] + // const hi = CurrentUserUtils.contextMenuTools() + + const newKey: Button = { + title: 'Bob', + icon: 'cloud', + toolTip: "Click to toggle the cloud group's visibility", + btnType: ButtonType.ToggleButton, + expertMode: false, + toolType: 'cloud', + funcs: {}, + scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}' }, + }; + + // const heyy = [...hi, newKey] + + Doc.UserDoc().myFilterHotKeyTitles = new List(['hi hi', 'supppp']) + + Doc.UserDoc()['hi hi'] = 'heart' + Doc.UserDoc()['supppp'] = 'star' + + // CurrentUserUtils.setupContextMenuButtons(Doc.UserDoc()); + + // Doc.UserDoc().hi = Docs.Create.FontIconDocument( + // { title: '', + // icon: 'map-pin', + + // backgroundColor: '#ACCEF7', + // layout_hideAllLinks: true, + // _width: 15, + // _height: 15, + // _xPadding: 0, + // } + // ) + + // // buttons['Filter'] + + // const reqdCtxtOpts: DocumentOptions = { + // title: 'Filter', + // undoIgnoreFields: new List(['width', 'linearView_IsOpen']), + // flexGap: 0, + // childDragAction: dropActionType.embed, + // childDontRegisterViews: true, + // linearView_IsOpen: true, + // ignoreClick: true, + // linearView_Expandable: false, + // _height: 35, + // }; + const ctxtMenuBtn = CurrentUserUtils.setupContextMenuBtn(newKey, filter); + ctxtMenuBtn.isSystem = ctxtMenuBtn[DocData].isSystem = undefined; + Doc.AddDocToList(filter, 'data', ctxtMenuBtn); + // // // DocUtils.AssignOpts(buttons, reqdCtxtOpts, ctxtMenuBtns); + + // DocUtils.AssignOpts(DocCast(buttons['Filter']), reqdCtxtOpts, [ctxtMenuBtns]); + // newCol && dv.ComponentView?.addDocument?.(newCol); + // console.log(but2 + "omgg") + // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); - const reqdCtxtOpts:DocumentOptions = { title: "hi", undoIgnoreFields:new List(['width', "linearView_IsOpen"]), flexGap: 0, childDragAction: dropActionType.embed, childDontRegisterViews: true, linearView_IsOpen: true, ignoreClick: true, linearView_Expandable: false, _height: 35 }; - const ctxtMenuBtns = CurrentUserUtils.setupContextMenuBtn(newKey, buttons); - // DocUtils.AssignOpts(buttons, reqdCtxtOpts, ctxtMenuBtns); + // Doc.UserDoc().myContextMenuBtns = new List([...buttons, newKey as Doc]) + } + hotKeyButtons() { + const selected = DocumentView.SelectedDocs().lastElement(); - DocUtils.AssignOpts(DocCast(buttons['Filter']), reqdCtxtOpts, [ctxtMenuBtns]); + function isAttrFiltered(attr: string) { + if (selected && selected._childFilters != undefined && selected.type === DocumentType.COL) { + return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); + } else { + return false; + } + // return selected._childFilters ? StrListCast(selected._childFilters).some(filter => filter.includes(attr)) : false; + } + const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - // newCol && dv.ComponentView?.addDocument?.(newCol); + console.log(hotKeys + 'hiihihi'); - // console.log(but2 + "omgg") + const hi = ['star', 'heart', 'bolt']; + - // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); + //selecting a button should make t so that the the icon on the top filter panel becomes said icon + const buttons = hotKeys.map((hotKey, i) => ( + //
{ + // // if (e.target === e.currentTarget){ + // isAttrFiltered(hotKey) ? Doc.setDocFilter(selected, hotKey, true, 'remove') : Doc.setDocFilter(selected, hotKey, true, 'match'); + // // } + // }, hotKey)} - // Doc.UserDoc().myContextMenuBtns = new List([...buttons, newKey as Doc]) + // // style = {{backgroundColor: `${isAttrFiltered(hotKey) ? '#878484' : SettingsManager.userBackgroundColor}`}} + + + // > + {/* } + iconPlacement="left" + align="flex-start" + fillWidth + toggleType={ToggleType.BUTTON} + onClick={undoable(() => { + isAttrFiltered(hotKey) ? Doc.setDocFilter(selected, hotKey, true, 'remove') : Doc.setDocFilter(selected, hotKey, true, 'match'); + }, hotKey)} + /> */} + <> + + Click to customize this hotkey's icon
}> + + + + + + )); + + return buttons; } + // @observable iconPanelMap: Map = new Map(); + render() { return (
@@ -376,8 +468,9 @@ export class FilterPanel extends ObservableReactComponent {
-
+ +
{this.hotKeyButtons()}
); } @@ -486,3 +579,113 @@ export class FilterPanel extends ObservableReactComponent { return undefined; } } + + + +interface HotKeyButtonProps { + hotKey: string; + selected?: Doc +} + +const HotKeyIconButton: React.FC = observer(({ hotKey, selected}) => { + const state = useLocalObservable(() => ({ + isActive: false, + toggleActive() { + this.isActive = !this.isActive; + }, + deactivate() { + this.isActive = false; + } + })); + + const panelRef = useRef(null); + + const handleClick = () => { + state.toggleActive(); + + console.log(state.isActive + "hmmm") + }; + + const handleClickOutside = (event: MouseEvent) => { + if (panelRef.current && !panelRef.current.contains(event.target as Node)) { + state.deactivate(); + } + }; + + useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + + const iconOpts = ['star', 'heart', 'bolt']; + + const iconPanel = iconOpts.map((icon, i) => ( + + )); + + const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + + return ( + <> + +
{ + + // if (e.target === e.currentTarget){ + isAttrFiltered(hotKey) ? Doc.setDocFilter(selected, hotKey, true, 'remove') : Doc.setDocFilter(selected, hotKey, true, 'match'); + // } + }, hotKey)} + + // style = {{backgroundColor: `${isAttrFiltered(hotKey) ? '#878484' : SettingsManager.userBackgroundColor}`}} + + + > +
+ Click to customize this hotkey's icon
}> + + + {state.isActive && ( +
+ {iconPanel} +
+ )} + + +
+ +

{hotKey.toUpperCase()}

+ + + + +
+ + + + + + ); +}); + + diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index f552540b8..9da359e1b 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -551,7 +551,8 @@ export class MainView extends ObservableReactComponent<{}> { fa.faStar, fa.faCloud, fa.faBolt, - fa.faLightbulb + fa.faLightbulb, + fa.faX ] ); } diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index 9a2273c3a..73360b684 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -41,24 +41,24 @@ export class IconTagBox extends ObservableReactComponent { this.ref = React.createRef(); } - componentDidMount(): void { - this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - this._props.doc._keywordHeight = this.height; - - reaction( - () => this.currentScale, - () => { - if (this.currentScale < 1) { - this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - this._props.doc._keywordHeight = this.height; - } - } - ); - } + // componentDidMount(): void { + // this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + // this._props.doc._keywordHeight = this.height; + + // reaction( + // () => this.currentScale, + // () => { + // if (this.currentScale < 1) { + // this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + // this._props.doc._keywordHeight = this.height; + // } + // } + // ); + // } componentDidUpdate(prevProps: Readonly): void { - this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - this._props.doc._keywordHeight = this.height; + // this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; + this._props.doc[DocData].tagHeight = 36*this.currentScale; } /** @@ -93,12 +93,16 @@ export class IconTagBox extends ObservableReactComponent { 3: 'bolt' }; + + return (
Date: Thu, 8 Aug 2024 12:27:40 -0400 Subject: many changes to add typing in place of 'any's etc --- package-lock.json | 4932 ++++++++++---------- package.json | 3 + src/ClientUtils.ts | 75 +- src/JSZipUtils.js | 10 +- src/client/DocServer.ts | 263 +- src/client/Network.ts | 27 +- src/client/documents/DocUtils.ts | 64 +- src/client/documents/DocumentTypes.ts | 1 - src/client/documents/Documents.ts | 33 +- src/client/util/CalendarManager.tsx | 44 +- src/client/util/CaptureManager.tsx | 10 +- src/client/util/CurrentUserUtils.ts | 80 +- src/client/util/DictationManager.ts | 43 +- src/client/util/DocumentManager.ts | 39 +- src/client/util/DragManager.ts | 103 +- src/client/util/DropConverter.ts | 13 +- src/client/util/GroupManager.tsx | 22 +- src/client/util/GroupMemberView.tsx | 2 - src/client/util/History.ts | 7 +- src/client/util/Import & Export/ImageUtils.ts | 1 + .../util/Import & Export/ImportMetadataEntry.tsx | 2 - src/client/util/InteractionUtils.tsx | 22 +- src/client/util/LinkFollower.ts | 4 +- src/client/util/LinkManager.ts | 43 +- src/client/util/ProsemirrorCopy/prompt.js | 179 - src/client/util/RTFMarkup.tsx | 4 +- src/client/util/ReplayMovements.ts | 15 +- src/client/util/Scripting.ts | 34 +- src/client/util/ScriptingGlobals.ts | 42 +- src/client/util/SearchUtil.ts | 2 + src/client/util/SelectionManager.ts | 2 +- src/client/util/SerializationHelper.ts | 36 +- src/client/util/ServerStats.tsx | 19 +- src/client/util/SettingsManager.tsx | 2 - src/client/util/SharingManager.tsx | 23 +- src/client/util/SnappingManager.ts | 2 +- src/client/util/TrackMovements.ts | 8 +- src/client/util/TypedEvent.ts | 2 +- src/client/util/UndoManager.ts | 34 +- src/client/util/reportManager/ReportManager.tsx | 6 +- .../util/reportManager/ReportManagerComponents.tsx | 11 +- .../util/reportManager/reportManagerSchema.ts | 40 +- .../util/reportManager/reportManagerUtils.ts | 16 +- src/client/util/request-image-size.ts | 36 +- src/client/views/AntimodeMenu.tsx | 2 +- src/client/views/ContextMenu.tsx | 33 +- src/client/views/ContextMenuItem.tsx | 10 +- src/client/views/DashboardView.tsx | 6 +- src/client/views/FilterPanel.tsx | 12 +- src/client/views/GestureOverlay.tsx | 26 +- src/client/views/InkTranscription.tsx | 3 +- src/client/views/InkingStroke.tsx | 22 +- src/client/views/LightboxView.tsx | 22 +- src/client/views/Main.tsx | 18 +- src/client/views/MainView.tsx | 53 +- src/client/views/OverlayView.tsx | 21 +- src/client/views/ScriptingRepl.tsx | 54 +- src/client/views/StyleProvider.tsx | 6 +- src/client/views/ViewBoxInterface.ts | 3 + .../views/collections/CollectionCalendarView.tsx | 4 +- .../views/collections/CollectionCardDeckView.tsx | 13 +- .../views/collections/CollectionCarouselView.tsx | 16 +- .../views/collections/CollectionDockingView.tsx | 68 +- .../collections/CollectionMasonryViewFieldRow.tsx | 20 +- src/client/views/collections/CollectionMenu.tsx | 4 - .../views/collections/CollectionNoteTakingView.tsx | 29 +- .../collections/CollectionNoteTakingViewColumn.tsx | 15 +- .../views/collections/CollectionPileView.tsx | 10 +- .../collections/CollectionStackedTimeline.tsx | 21 +- .../views/collections/CollectionStackingView.tsx | 27 +- src/client/views/collections/CollectionSubView.tsx | 23 +- .../views/collections/CollectionTimeView.tsx | 8 +- .../views/collections/CollectionTreeView.tsx | 43 +- src/client/views/collections/TabDocView.tsx | 28 +- src/client/views/collections/TreeView.tsx | 86 +- .../CollectionFreeFormInfoState.tsx | 12 +- .../CollectionFreeFormPannableContents.tsx | 4 +- .../collectionFreeForm/CollectionFreeFormView.tsx | 65 +- .../collectionLinear/CollectionLinearView.tsx | 10 +- src/client/views/nodes/AudioBox.tsx | 57 +- .../views/nodes/CollectionFreeFormDocumentView.tsx | 24 +- src/client/views/nodes/ComparisonBox.tsx | 7 +- src/client/views/nodes/DataVizBox/DataVizBox.tsx | 8 +- .../views/nodes/DataVizBox/SchemaCSVPopUp.tsx | 2 - .../views/nodes/DataVizBox/components/TableBox.tsx | 56 +- src/client/views/nodes/DocumentContentsView.tsx | 46 +- src/client/views/nodes/DocumentLinksButton.tsx | 4 +- src/client/views/nodes/DocumentView.tsx | 39 +- src/client/views/nodes/EquationBox.tsx | 11 +- src/client/views/nodes/FieldView.tsx | 3 +- .../views/nodes/FontIconBox/ButtonInterface.ts | 12 - src/client/views/nodes/FontIconBox/FontIconBox.tsx | 46 +- src/client/views/nodes/ImageBox.tsx | 9 +- src/client/views/nodes/KeyValueBox.tsx | 14 +- src/client/views/nodes/KeyValuePair.tsx | 9 +- src/client/views/nodes/LinkBox.tsx | 14 +- src/client/views/nodes/LinkDocPreview.tsx | 6 +- src/client/views/nodes/LoadingBox.tsx | 2 +- src/client/views/nodes/MapBox/MapBox.tsx | 8 +- src/client/views/nodes/PDFBox.tsx | 18 +- .../nodes/PhysicsBox/PhysicsSimulationBox.tsx | 15 +- .../views/nodes/RecordingBox/RecordingBox.tsx | 5 +- src/client/views/nodes/ScreenshotBox.tsx | 35 +- src/client/views/nodes/ScriptingBox.tsx | 96 +- src/client/views/nodes/VideoBox.tsx | 18 +- src/client/views/nodes/WebBox.tsx | 47 +- src/client/views/nodes/WebBoxRenderer.js | 18 +- src/client/views/nodes/audio/AudioWaveform.tsx | 2 +- .../nodes/formattedText/DashDocCommentView.tsx | 38 +- .../views/nodes/formattedText/DashDocView.tsx | 29 +- .../views/nodes/formattedText/DashFieldView.tsx | 34 +- .../views/nodes/formattedText/EquationEditor.tsx | 17 +- .../views/nodes/formattedText/EquationView.tsx | 22 +- .../views/nodes/formattedText/FormattedTextBox.tsx | 89 +- .../formattedText/FormattedTextBoxComment.tsx | 4 +- .../views/nodes/formattedText/ParagraphNodeSpec.ts | 36 +- .../views/nodes/formattedText/RichTextMenu.tsx | 42 +- .../views/nodes/formattedText/RichTextRules.ts | 56 +- src/client/views/nodes/formattedText/marks_rts.ts | 40 +- src/client/views/nodes/formattedText/nodes_rts.ts | 91 +- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 7 +- src/client/views/pdf/PDFViewer.tsx | 12 +- src/fields/Doc.ts | 160 +- src/fields/List.ts | 104 +- src/fields/ObjectField.ts | 21 +- src/fields/Proxy.ts | 31 +- src/fields/RefField.ts | 2 +- src/fields/ScriptField.ts | 28 +- src/fields/util.ts | 132 +- src/mobile/ImageUpload.tsx | 3 +- src/mobile/MobileInterface.tsx | 1 - src/pen-gestures/GestureUtils.ts | 5 +- src/server/ApiManagers/GooglePhotosManager.ts | 6 +- src/server/ApiManagers/UploadManager.ts | 14 +- src/server/DashStats.ts | 1 + src/server/DashUploadUtils.ts | 65 +- src/server/SharedMediaTypes.ts | 4 +- src/server/index.ts | 1 - src/server/websocket.ts | 5 +- webpack.config.js | 3 +- 140 files changed, 4387 insertions(+), 4500 deletions(-) delete mode 100644 src/client/util/ProsemirrorCopy/prompt.js delete mode 100644 src/client/views/nodes/FontIconBox/ButtonInterface.ts (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 168c6d087..328110401 100644 --- a/package-lock.json +++ b/package-lock.json @@ -258,6 +258,7 @@ "@types/cookie-parser": "^1.4.6", "@types/cookie-session": "^2.0.48", "@types/d3": "^7.4.3", + "@types/dom-mediacapture-record": "^1.0.19", "@types/exif": "^0.6.5", "@types/express": "^4.17.21", "@types/express-session": "^1.17.10", @@ -285,10 +286,12 @@ "@types/request": "^2.48.12", "@types/request-promise": "^4.1.51", "@types/shelljs": "^0.8.15", + "@types/textarea-caret": "^3.0.3", "@types/textfit": "^2.4.4", "@types/uuid": "^10.0.0", "@types/valid-url": "^1.0.7", "@types/webpack": "^5.28.5", + "@types/webscopeio__react-textarea-autocomplete": "^4.7.5", "@types/youtube": "0.0.50", "chai": "^5.0.0", "cross-env": "^7.0.3", @@ -320,91 +323,91 @@ } }, "node_modules/@adobe/react-spectrum": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.35.1.tgz", - "integrity": "sha512-QNhsaEHv5S5Vqsk7b8aCV9F7qAnWw8VJ/Nep/SOjeiJ7vK993jEOetEhSsUIQ8VHsMKs6qkTtZr0/DKoV+Z/9w==", + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/@adobe/react-spectrum/-/react-spectrum-3.36.1.tgz", + "integrity": "sha512-ZDxbCjFBYU3S8iEbsrKoJS5fIf91lpM44nWyY1rKwqD7Lu6Lo0cNX8g44x5pXi+PcMr2KxZOPTj4khfCqMOCvg==", "dependencies": { "@internationalized/string": "^3.2.3", - "@react-aria/i18n": "^3.11.1", - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-spectrum/actionbar": "^3.4.5", - "@react-spectrum/actiongroup": "^3.10.5", - "@react-spectrum/avatar": "^3.0.12", - "@react-spectrum/badge": "^3.1.13", - "@react-spectrum/breadcrumbs": "^3.9.7", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/buttongroup": "^3.6.13", - "@react-spectrum/calendar": "^3.4.9", - "@react-spectrum/checkbox": "^3.9.6", - "@react-spectrum/combobox": "^3.12.5", - "@react-spectrum/contextualhelp": "^3.6.11", - "@react-spectrum/datepicker": "^3.9.6", - "@react-spectrum/dialog": "^3.8.11", - "@react-spectrum/divider": "^3.5.13", - "@react-spectrum/dnd": "^3.3.10", - "@react-spectrum/dropzone": "^3.0.1", - "@react-spectrum/filetrigger": "^3.0.1", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/icon": "^3.7.13", - "@react-spectrum/illustratedmessage": "^3.5.1", - "@react-spectrum/image": "^3.5.1", - "@react-spectrum/inlinealert": "^3.2.5", - "@react-spectrum/labeledvalue": "^3.1.14", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/link": "^3.6.7", - "@react-spectrum/list": "^3.7.10", - "@react-spectrum/listbox": "^3.12.9", - "@react-spectrum/menu": "^3.19.1", - "@react-spectrum/meter": "^3.5.1", - "@react-spectrum/numberfield": "^3.9.3", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/picker": "^3.14.5", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/provider": "^3.9.7", - "@react-spectrum/radio": "^3.7.6", - "@react-spectrum/searchfield": "^3.8.6", - "@react-spectrum/slider": "^3.6.9", - "@react-spectrum/statuslight": "^3.5.13", - "@react-spectrum/switch": "^3.5.5", - "@react-spectrum/table": "^3.12.10", - "@react-spectrum/tabs": "^3.8.10", - "@react-spectrum/tag": "^3.2.6", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/textfield": "^3.12.1", - "@react-spectrum/theme-dark": "^3.5.10", - "@react-spectrum/theme-default": "^3.5.10", - "@react-spectrum/theme-light": "^3.4.10", - "@react-spectrum/tooltip": "^3.6.7", - "@react-spectrum/view": "^3.6.10", - "@react-spectrum/well": "^3.4.13", - "@react-stately/collections": "^3.10.7", - "@react-stately/data": "^3.11.4", - "@react-types/shared": "^3.23.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-spectrum/actionbar": "^3.5.1", + "@react-spectrum/actiongroup": "^3.10.7", + "@react-spectrum/avatar": "^3.0.14", + "@react-spectrum/badge": "^3.1.15", + "@react-spectrum/breadcrumbs": "^3.9.9", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/buttongroup": "^3.6.15", + "@react-spectrum/calendar": "^3.4.11", + "@react-spectrum/checkbox": "^3.9.8", + "@react-spectrum/combobox": "^3.13.1", + "@react-spectrum/contextualhelp": "^3.6.13", + "@react-spectrum/datepicker": "^3.10.1", + "@react-spectrum/dialog": "^3.8.13", + "@react-spectrum/divider": "^3.5.15", + "@react-spectrum/dnd": "^3.4.1", + "@react-spectrum/dropzone": "^3.0.3", + "@react-spectrum/filetrigger": "^3.0.3", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/icon": "^3.7.15", + "@react-spectrum/illustratedmessage": "^3.5.3", + "@react-spectrum/image": "^3.5.3", + "@react-spectrum/inlinealert": "^3.2.7", + "@react-spectrum/labeledvalue": "^3.1.16", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/link": "^3.6.9", + "@react-spectrum/list": "^3.8.1", + "@react-spectrum/listbox": "^3.13.1", + "@react-spectrum/menu": "^3.20.1", + "@react-spectrum/meter": "^3.5.3", + "@react-spectrum/numberfield": "^3.9.5", + "@react-spectrum/overlays": "^5.6.3", + "@react-spectrum/picker": "^3.15.1", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/provider": "^3.9.9", + "@react-spectrum/radio": "^3.7.8", + "@react-spectrum/searchfield": "^3.8.8", + "@react-spectrum/slider": "^3.6.11", + "@react-spectrum/statuslight": "^3.5.15", + "@react-spectrum/switch": "^3.5.7", + "@react-spectrum/table": "^3.13.1", + "@react-spectrum/tabs": "^3.8.12", + "@react-spectrum/tag": "^3.2.8", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/textfield": "^3.12.3", + "@react-spectrum/theme-dark": "^3.5.12", + "@react-spectrum/theme-default": "^3.5.12", + "@react-spectrum/theme-light": "^3.4.12", + "@react-spectrum/tooltip": "^3.6.9", + "@react-spectrum/view": "^3.6.12", + "@react-spectrum/well": "^3.4.15", + "@react-stately/collections": "^3.10.9", + "@react-stately/data": "^3.11.6", + "@react-types/shared": "^3.24.1", "client-only": "^0.0.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@adobe/react-spectrum-ui": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@adobe/react-spectrum-ui/-/react-spectrum-ui-1.2.0.tgz", - "integrity": "sha512-os3EdjfyJbrukLcZ5uYtdFRiDlLB3zq2JoXp19J/IDpZ8btibJeRZYSwjL+LscEiT2pOYaF2McMQdkZTIwnllw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@adobe/react-spectrum-ui/-/react-spectrum-ui-1.2.1.tgz", + "integrity": "sha512-wcrbEE2O/9WnEn6avBnaVRRx88S5PLFsPLr4wffzlbMfXeQsy+RMQwaJd3cbzrn18/j04Isit7f7Emfn0dhrJA==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@adobe/react-spectrum-workflow": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@adobe/react-spectrum-workflow/-/react-spectrum-workflow-2.3.4.tgz", - "integrity": "sha512-XPLzIBl58HdLF9WIPB7RDAvVXvCE3SjG+HaWQhW2P9MnxSz1DEA9O7mlTlYblJkMbfk10T/+RFaSupc1yoN+TA==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@adobe/react-spectrum-workflow/-/react-spectrum-workflow-2.3.5.tgz", + "integrity": "sha512-b53VIPwPWKb/T5gzE3qs+QlGP5gVrw/LnWV3xMksDU+CRl3rzOKUwxIGiZO8ICyYh1WiyqY4myGlPU/nAynBUg==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@ampproject/remapping": { @@ -544,9 +547,9 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.2.tgz", - "integrity": "sha512-Hnhm/PG9/SQ07JJyLDv3l9Qr8V3xgAe1hFoBYzt6LaalMxfL/ZqFaZf/bz5VN3pMcleCPwl8ivlS2Fjxq/iC8Q==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", + "integrity": "sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w==", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.4.0", @@ -584,9 +587,9 @@ } }, "node_modules/@azure/core-util": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.1.tgz", - "integrity": "sha512-OLsq0etbHO1MA7j6FouXFghuHrAFGk+5C1imcpQ2e+0oZhYF07WLA+NW2Vqs70R7d+zOAWiWM3tbE1sXcDN66g==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.2.tgz", + "integrity": "sha512-l1Qrqhi4x1aekkV+OlcqsJa4AnAkj5p0JV8omgwjaV9OAbP41lvrMvs+CptfetKkeEaGRGSzby7sjPZEX7+kkQ==", "dependencies": { "@azure/abort-controller": "^2.0.0", "tslib": "^2.6.2" @@ -607,9 +610,9 @@ } }, "node_modules/@azure/core-xml": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.2.tgz", - "integrity": "sha512-CW3MZhApe/S4iikbYKE7s83fjDBPIr2kpidX+hlGRwh7N4o1nIpQ/PfJTeioqhfqdMvRtheEl+ft64fyTaLNaA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.3.tgz", + "integrity": "sha512-D6G7FEmDiTctPKuWegX2WTrS1enKZwqYwdKTO6ZN6JMigcCehlT0/CYl+zWpI9vQ9frwwp7GQT3/owaEXgnOsA==", "dependencies": { "fast-xml-parser": "^4.3.2", "tslib": "^2.6.2" @@ -619,9 +622,9 @@ } }, "node_modules/@azure/logger": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.3.tgz", - "integrity": "sha512-J8/cIKNQB1Fc9fuYqBVnrppiUtW+5WWJPCj/tAokC5LdSTwkWWttN+jsRgw9BLYD7JDBx7PceiqOBxJJ1tQz3Q==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", "dependencies": { "tslib": "^2.6.2" }, @@ -630,9 +633,9 @@ } }, "node_modules/@azure/storage-blob": { - "version": "12.23.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.23.0.tgz", - "integrity": "sha512-c1KJ5R5hqR/HtvmFtTn/Y1BNMq45NUBp0LZH7yF8WFMET+wmESgEr0FVTu/Z5NonmfUjbgJZG5Nh8xHc5RdWGQ==", + "version": "12.24.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.24.0.tgz", + "integrity": "sha512-l8cmWM4C7RoNCBOImoFMxhTXe1Lr+8uQ/IgnhRNMpfoA9bAFWoLG4XrWm6O5rKXortreVQuD+fc1hbzWklOZbw==", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.4.0", @@ -641,7 +644,7 @@ "@azure/core-lro": "^2.2.0", "@azure/core-paging": "^1.1.1", "@azure/core-rest-pipeline": "^1.10.1", - "@azure/core-tracing": "^1.0.0", + "@azure/core-tracing": "^1.1.2", "@azure/core-util": "^1.6.1", "@azure/core-xml": "^1.3.2", "@azure/logger": "^1.0.0", @@ -665,29 +668,29 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", - "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", - "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.9", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-module-transforms": "^7.24.9", - "@babel/helpers": "^7.24.8", - "@babel/parser": "^7.24.8", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.9", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -703,11 +706,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", - "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dependencies": { - "@babel/types": "^7.24.9", + "@babel/types": "^7.25.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -740,11 +743,11 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dependencies": { - "@babel/compat-data": "^7.24.8", + "@babel/compat-data": "^7.25.2", "@babel/helper-validator-option": "^7.24.8", "browserslist": "^4.23.1", "lru-cache": "^5.1.1", @@ -755,18 +758,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", - "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.8", "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/traverse": "^7.25.0", "semver": "^6.3.1" }, "engines": { @@ -777,9 +778,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", @@ -807,40 +808,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", @@ -866,15 +833,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", - "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -903,13 +869,13 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -919,13 +885,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -958,17 +924,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", @@ -994,27 +949,26 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", - "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", "peer": true, "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.8" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1035,9 +989,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", - "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dependencies": { + "@babel/types": "^7.25.2" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -1046,12 +1003,26 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1061,11 +1032,11 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1091,12 +1062,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1362,14 +1333,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1409,11 +1380,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1454,17 +1425,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", - "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", "globals": "^11.1.0" }, "engines": { @@ -1540,6 +1509,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", @@ -1601,13 +1585,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1632,11 +1616,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1706,14 +1690,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1934,15 +1918,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz", - "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -2140,18 +2124,19 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", - "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", "dependencies": { - "@babel/compat-data": "^7.24.8", - "@babel/helper-compilation-targets": "^7.24.8", + "@babel/compat-data": "^7.25.2", + "@babel/helper-compilation-targets": "^7.25.2", "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -2172,29 +2157,30 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.8", + "@babel/plugin-transform-classes": "^7.25.0", "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", "@babel/plugin-transform-dynamic-import": "^7.24.7", "@babel/plugin-transform-exponentiation-operator": "^7.24.7", "@babel/plugin-transform-export-namespace-from": "^7.24.7", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-new-target": "^7.24.7", @@ -2271,9 +2257,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", - "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2282,9 +2268,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.8.tgz", - "integrity": "sha512-DXG/BhegtMHhnN7YPIvxWd303/9aXvYFD1TjNL3CD6tUrhI2LVsg3Lck0aql5TRH29n4sj3emcROypkZVUfSuA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.25.0.tgz", + "integrity": "sha512-BOehWE7MgQ8W8Qn0CQnMtg2tHPHPulcS/5AVpFvs2KCK1ET+0WqZqPvnpRpFN81gYoFopdIEJX9Sgjw3ZBccPg==", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -2294,31 +2280,28 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", - "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.8", - "@babel/types": "^7.24.8", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2335,9 +2318,9 @@ } }, "node_modules/@babel/types": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", - "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", "dependencies": { "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", @@ -2411,9 +2394,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/@emotion/cache": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.0.tgz", - "integrity": "sha512-hPV345J/tH0Cwk2wnU/3PBzORQ9HeX+kQSbwI+jslzpRCHE6fSGTohswksA/Ensr8znPzwfzKZCmAM9Lmlhp7g==", + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", @@ -2637,9 +2620,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", - "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", + "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2673,29 +2656,29 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz", - "integrity": "sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", "dependencies": { - "@floating-ui/utils": "^0.2.5" + "@floating-ui/utils": "^0.2.7" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.8.tgz", - "integrity": "sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==", + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.5" + "@floating-ui/utils": "^0.2.7" } }, "node_modules/@floating-ui/react": { - "version": "0.26.20", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.20.tgz", - "integrity": "sha512-RixKJJG92fcIsVoqrFr4Onpzh7hlOx4U7NV4aLhMLmtvjZ5oTB/WzXaANYUZATKqXvvW7t9sCxtzejip26N5Ag==", + "version": "0.26.22", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.22.tgz", + "integrity": "sha512-LNv4azPt8SpT4WW7Kku5JNVjLk2GcS0bGGjFTAgqOONRFo9r/aaGHHPpdiIuQbB1t8shmWyWqTTUDmZ9fcNshg==", "dependencies": { "@floating-ui/react-dom": "^2.1.1", - "@floating-ui/utils": "^0.2.5", + "@floating-ui/utils": "^0.2.7", "tabbable": "^6.0.0" }, "peerDependencies": { @@ -2716,9 +2699,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.5.tgz", - "integrity": "sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" }, "node_modules/@formatjs/ecma402-abstract": { "version": "2.0.0", @@ -2933,9 +2916,9 @@ } }, "node_modules/@internationalized/date": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.4.tgz", - "integrity": "sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.5.tgz", + "integrity": "sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==", "dependencies": { "@swc/helpers": "^0.5.0" } @@ -3558,9 +3541,9 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", - "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", "dependencies": { "@jsonjoy.com/base64": "^1.1.1", "@jsonjoy.com/util": "^1.1.2", @@ -3579,9 +3562,9 @@ } }, "node_modules/@jsonjoy.com/util": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.2.0.tgz", - "integrity": "sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz", + "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==", "engines": { "node": ">=10.0" }, @@ -3783,18 +3766,18 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.4.tgz", - "integrity": "sha512-rNdHXhclwjEZnK+//3SR43YRx0VtjdHnUFhMSGYmAMJve+KiwEja/41EYh8V3pZKqF2geKyfcFUenTfDTYUR4w==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.6.tgz", + "integrity": "sha512-kytg6LheUG42V8H/o/Ptz3olSO5kUXW9zF0ox18VnblX6bO2yif1FPItgc3ey1t5ansb1+gbe7SatntqusQupg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.4.tgz", - "integrity": "sha512-j9/CWctv6TH6Dou2uR2EH7UOgu79CW/YcozxCYVLJ7l03pCsiOlJ5sBArnWJxJ+nGkFwyL/1d1k8JEPMDR125A==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.6.tgz", + "integrity": "sha512-ceNGjoXheH9wbIFa1JHmSc9QVjJUvh18KvHrR4/FkJCSi9HXJ+9ee1kUhCOEFfuxNF8UB6WWVrIUOUgRd70t0A==", "dependencies": { "@babel/runtime": "^7.23.9" }, @@ -3817,15 +3800,15 @@ } }, "node_modules/@mui/material": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.4.tgz", - "integrity": "sha512-dBnh3/zRYgEVIS3OE4oTbujse3gifA0qLMmuUk13ywsDCbngJsdgwW5LuYeiT5pfA8PGPGSqM7mxNytYXgiMCw==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.6.tgz", + "integrity": "sha512-0LUIKBOIjiFfzzFNxXZBRAyr9UQfmTAFzbt6ziOU2FDXhorNN2o3N9/32mNJbCA8zJo2FqFU6d3dtoqUDyIEfA==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.16.4", - "@mui/system": "^5.16.4", + "@mui/core-downloads-tracker": "^5.16.6", + "@mui/system": "^5.16.6", "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.4", + "@mui/utils": "^5.16.6", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", @@ -3861,12 +3844,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.4.tgz", - "integrity": "sha512-ZsAm8cq31SJ37SVWLRlu02v9SRthxnfQofaiv14L5Bht51B0dz6yQEoVU/V8UduZDCCIrWkBHuReVfKhE/UuXA==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.4", + "@mui/utils": "^5.16.6", "prop-types": "^15.8.1" }, "engines": { @@ -3887,9 +3870,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.4.tgz", - "integrity": "sha512-0+mnkf+UiAmTVB8PZFqOhqf729Yh0Cxq29/5cA3VAyDVTRIUUQ8FXQhiAhUIbijFmM72rY80ahFPXIm4WDbzcA==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", "dependencies": { "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", @@ -3918,15 +3901,15 @@ } }, "node_modules/@mui/system": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.4.tgz", - "integrity": "sha512-ET1Ujl2/8hbsD611/mqUuNArMCGv/fIWO/f8B3ZqF5iyPHM2aS74vhTNyjytncc4i6dYwGxNk+tLa7GwjNS0/w==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.6.tgz", + "integrity": "sha512-5xgyJjBIMPw8HIaZpfbGAaFYPwImQn7Nyh+wwKWhvkoIeDosQ1ZMVrbTclefi7G8hNmqhip04duYwYpbBFnBgw==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.4", - "@mui/styled-engine": "^5.16.4", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.4", + "@mui/utils": "^5.16.6", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -3970,11 +3953,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.16.4", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.4.tgz", - "integrity": "sha512-nlppYwq10TBIFqp7qxY0SvbACOXeOjeVL3pOcDsK0FT8XjrEXh9/+lkg8AEIzD16z7YfiJDQjaJG2OLkE7BxNg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", "dependencies": { "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", "@types/prop-types": "^15.7.12", "clsx": "^2.1.1", "prop-types": "^15.8.1", @@ -4148,372 +4132,387 @@ } }, "node_modules/@react-aria/actiongroup": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/@react-aria/actiongroup/-/actiongroup-3.7.5.tgz", - "integrity": "sha512-asJk6WN6MhtwqWzVx7zkakhTbrpk1XhJbxF2piGlk2pTCh8zUCnMjvFAmMdQN+voj5lEW4/CZNfrblNDwzCimQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/list": "^3.10.5", - "@react-types/actiongroup": "^3.4.9", - "@react-types/shared": "^3.23.1", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@react-aria/actiongroup/-/actiongroup-3.7.7.tgz", + "integrity": "sha512-qkbCnMYt32ZWN8X7ycup/kbdaQLENJ+uzy3gRI5VY06RwN+btdvT8seZl1xR0n7qfdDCZxmd5WaKbXA0gl3bBA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/list": "^3.10.7", + "@react-types/actiongroup": "^3.4.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/breadcrumbs": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz", - "integrity": "sha512-G1Gqf/P6kVdfs94ovwP18fTWuIxadIQgHsXS08JEVcFVYMjb9YjqnEBaohUxD1tq2WldMbYw53ahQblT4NTG+g==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/link": "^3.7.1", - "@react-aria/utils": "^3.24.1", - "@react-types/breadcrumbs": "^3.7.5", - "@react-types/shared": "^3.23.1", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.15.tgz", + "integrity": "sha512-KJ7678hwKbacz6dyY4aOJlgtV91PtuSnlWGR+AsK88WwHhpjjTjLLTSRepjbQ35GuQuoYokM4mmfaS/I0nblhw==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/link": "^3.7.3", + "@react-aria/utils": "^3.25.1", + "@react-types/breadcrumbs": "^3.7.7", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/button": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.5.tgz", - "integrity": "sha512-dgcYR6j8WDOMLKuVrtxzx4jIC05cVKDzc+HnPO8lNkBAOfjcuN5tkGRtIjLtqjMvpZHhQT5aDbgFpIaZzxgFIg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/toggle": "^3.7.4", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.7.tgz", + "integrity": "sha512-xwE6uatbbn3KbNSc0dyDnOo539HJM2cqCPfjiQGt8O9cFbpQSmx76Fj4WotU3BwT7ZVbcAC8D206CgF1C2cDcQ==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/toggle": "^3.7.6", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/calendar": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.8.tgz", - "integrity": "sha512-Whlp4CeAA5/ZkzrAHUv73kgIRYjw088eYGSc+cvSOCxfrc/2XkBm9rNrnSBv0DvhJ8AG0Fjz3vYakTmF3BgZBw==", + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.10.tgz", + "integrity": "sha512-5PokdIHAH+CAd6vMHFW9mg77I5tC0FQglYsCEI9ikhCnL5xlt3FmJjLtOs3UJQaWgrd4cdVd0oINpPafJ9ydhA==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@internationalized/date": "^3.5.5", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/utils": "^3.24.1", - "@react-stately/calendar": "^3.5.1", - "@react-types/button": "^3.9.4", - "@react-types/calendar": "^3.4.6", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/calendar": "^3.5.3", + "@react-types/button": "^3.9.6", + "@react-types/calendar": "^3.4.8", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/checkbox": { - "version": "3.14.3", - "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.3.tgz", - "integrity": "sha512-EtBJL6iu0gvrw3A4R7UeVLR6diaVk/mh4kFBc7c8hQjpEJweRr4hmJT3hrNg3MBcTWLxFiMEXPGgWEwXDBygtA==", - "dependencies": { - "@react-aria/form": "^3.0.5", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/toggle": "^3.10.4", - "@react-aria/utils": "^3.24.1", - "@react-stately/checkbox": "^3.6.5", - "@react-stately/form": "^3.0.3", - "@react-stately/toggle": "^3.7.4", - "@react-types/checkbox": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.5.tgz", + "integrity": "sha512-On8m66CNi1LvbDeDo355au0K66ayIjo0nDe4oe85aNsR/owyzz8hXNPAFuh98owQVMsKt4596FZICAVSMzzhJg==", + "dependencies": { + "@react-aria/form": "^3.0.7", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/toggle": "^3.10.6", + "@react-aria/utils": "^3.25.1", + "@react-stately/checkbox": "^3.6.7", + "@react-stately/form": "^3.0.5", + "@react-stately/toggle": "^3.7.6", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/collections": { + "version": "3.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@react-aria/collections/-/collections-3.0.0-alpha.3.tgz", + "integrity": "sha512-SKsoQrCuz4zIVMwKGz0WcFoRbIP0H8+eRU2XzjmWX9KlRdrfeqIBOxuiU8XO3or0aHdbBI/bC/YtCjVzix5Lrg==", + "dependencies": { + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/color": { - "version": "3.0.0-beta.33", - "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.0-beta.33.tgz", - "integrity": "sha512-nhqnIHYm5p6MbuF3cC6lnqzG7MjwBsBd0DtpO+ByFYO+zxpMMbeC5R+1SFxvapR4uqmAzTotbtiUCGsG+SUaIg==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/numberfield": "^3.11.3", - "@react-aria/slider": "^3.7.8", - "@react-aria/spinbutton": "^3.6.5", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/color": "^3.6.1", - "@react-stately/form": "^3.0.3", - "@react-types/color": "3.0.0-beta.25", - "@react-types/shared": "^3.23.1", + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@react-aria/color/-/color-3.0.0-rc.1.tgz", + "integrity": "sha512-oP9PE0Xpo9uQ/TtH1x8iWhsjtk4OTIoTFdQZyoDsj8d84sqRv6Og9ajBZ/VTaneNK1n4NrPSx+qWfXu+SrWlDg==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/numberfield": "^3.11.5", + "@react-aria/slider": "^3.7.10", + "@react-aria/spinbutton": "^3.6.7", + "@react-aria/textfield": "^3.14.7", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-stately/color": "^3.7.1", + "@react-stately/form": "^3.0.5", + "@react-types/color": "3.0.0-rc.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/combobox": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.9.1.tgz", - "integrity": "sha512-SpK92dCmT8qn8aEcUAihRQrBb5LZUhwIbDExFII8PvUvEFy/PoQHXIo3j1V29WkutDBDpMvBv/6XRCHGXPqrhQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.10.1.tgz", + "integrity": "sha512-B0zjX66HEqjPFnunYR0quAqwVJ6U0ez1eqBp25/611Dtzh3JHUovQmTE0xGGTjRe6N6qJg0VHVr2eRO/D0A+Lw==", "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/listbox": "^3.12.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/listbox": "^3.13.1", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/menu": "^3.14.1", - "@react-aria/overlays": "^3.22.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/combobox": "^3.8.4", - "@react-stately/form": "^3.0.3", - "@react-types/button": "^3.9.4", - "@react-types/combobox": "^3.11.1", - "@react-types/shared": "^3.23.1", + "@react-aria/menu": "^3.15.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/textfield": "^3.14.7", + "@react-aria/utils": "^3.25.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/combobox": "^3.9.1", + "@react-stately/form": "^3.0.5", + "@react-types/button": "^3.9.6", + "@react-types/combobox": "^3.12.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/datepicker": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.10.1.tgz", - "integrity": "sha512-4HZL593nrNMa1GjBmWEN/OTvNS6d3/16G1YJWlqiUlv11ADulSbqBIjMmkgwrJVFcjrgqtXFy+yyrTA/oq94Zw==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.11.1.tgz", + "integrity": "sha512-yEEuDt/ynt7bTfd/9RD1EiLPysWhbgSYSpn5PHVz7I2XORvNPpyamyAgz3+oFiLFLC/zy0qrG7e6V1rvI1NBzw==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/number": "^3.5.3", "@internationalized/string": "^3.2.3", - "@react-aria/focus": "^3.17.1", - "@react-aria/form": "^3.0.5", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/spinbutton": "^3.6.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/datepicker": "^3.9.4", - "@react-stately/form": "^3.0.3", - "@react-types/button": "^3.9.4", - "@react-types/calendar": "^3.4.6", - "@react-types/datepicker": "^3.7.4", - "@react-types/dialog": "^3.5.10", - "@react-types/shared": "^3.23.1", + "@react-aria/focus": "^3.18.1", + "@react-aria/form": "^3.0.7", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/spinbutton": "^3.6.7", + "@react-aria/utils": "^3.25.1", + "@react-stately/datepicker": "^3.10.1", + "@react-stately/form": "^3.0.5", + "@react-types/button": "^3.9.6", + "@react-types/calendar": "^3.4.8", + "@react-types/datepicker": "^3.8.1", + "@react-types/dialog": "^3.5.12", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/dialog": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.14.tgz", - "integrity": "sha512-oqDCjQ8hxe3GStf48XWBf2CliEnxlR9GgSYPHJPUc69WBj68D9rVcCW3kogJnLAnwIyf3FnzbX4wSjvUa88sAQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-types/dialog": "^3.5.10", - "@react-types/shared": "^3.23.1", + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.16.tgz", + "integrity": "sha512-2clBSQQaoqCjAUkHnMA/noZ1ZnFbEVU67fL9M1QfokezAyLAlyCyD9XSed6+Td/Ncj80N3/Lax65XAlvWCyOlg==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-types/dialog": "^3.5.12", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/dnd": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.6.1.tgz", - "integrity": "sha512-6WnujUTD+cIYZVF/B+uXdHyJ+WSpbYa8jH282epvY4FUAq1qLmen12/HHcoj/5dswKQe8X6EM3OhkQM89d9vFw==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-aria/dnd/-/dnd-3.7.1.tgz", + "integrity": "sha512-p3/pc8p2fGd4s+Qj4SfRPJjZFStuuXqRNyDQxd9AAFYUWcCQxwDOqtiTZmfvs7Hvl0PUuysHW6Q5v7ABRjVr7w==", "dependencies": { "@internationalized/string": "^3.2.3", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/dnd": "^3.3.1", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/dnd": "^3.4.1", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/focus": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz", - "integrity": "sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==", + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.1.tgz", + "integrity": "sha512-N0Cy61WCIv+57mbqC7hiZAsB+3rF5n4JKabxUmg/2RTJL6lq7hJ5N4gx75ymKxkN8GnVDwt4pKZah48Wopa5jw==", "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/form": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.5.tgz", - "integrity": "sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.7.tgz", + "integrity": "sha512-VIsKP/KytJPOLRQl0NxWWS1bQELPBuW3vRjmmhBrtgPFmp0uCLhjPBkP6A4uIVj1E/JtAocyHN3DNq4+IJGQCg==", "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/form": "^3.0.3", - "@react-types/shared": "^3.23.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/form": "^3.0.5", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/grid": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.9.1.tgz", - "integrity": "sha512-fGEZqAEaS8mqzV/II3N4ndoNWegIcbh+L3PmKbXdpKKUP8VgMs/WY5rYl5WAF0f5RoFwXqx3ibDLeR9tKj/bOg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.10.1.tgz", + "integrity": "sha512-7dSgiYVQapBtPV4SIit+9fJ1qoEjtp+PXffJkWAPtGbg/jJ4b0jcVzykH7ARD4w/6jAJN/oVSfrKZqFPoLAd9w==", "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/grid": "^3.8.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/checkbox": "^3.8.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/grid": "^3.9.1", + "@react-stately/selection": "^3.16.1", + "@react-types/checkbox": "^3.8.3", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/gridlist": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.8.1.tgz", - "integrity": "sha512-vVPkkA+Ct0NDcpnNm/tnYaBumg0fP9pXxsPLqL1rxvsTyj1PaIpFTZ4corabPTbTDExZwUSTS3LG1n+o1OvBtQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/grid": "^3.9.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/list": "^3.10.5", - "@react-stately/tree": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/gridlist/-/gridlist-3.9.1.tgz", + "integrity": "sha512-cue2KCI4WyVmL3j9tZx7xG7gUJ7UyRbawzRTcocJukOmpeoyRaw/robrIYK2Pd//GhRbIMAoo4iOyZk5j7vEww==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/grid": "^3.10.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/list": "^3.10.7", + "@react-stately/tree": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/i18n": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.1.tgz", - "integrity": "sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.1.tgz", + "integrity": "sha512-0q3gyogF9Ekah+9LOo6tcfshxsk2Ope+KdbtFHJVhznedMxn6RpHGcVur5ImbQ1dYafA5CmjBUGJW70b56+BGA==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/message": "^3.1.4", "@internationalized/number": "^3.5.3", "@internationalized/string": "^3.2.3", - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/interactions": { - "version": "3.21.3", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz", - "integrity": "sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.1.tgz", + "integrity": "sha512-5TLzQaDAQQ5C70yG8GInbO4wIylKY67RfTIIwQPGR/4n5OIjbUD8BOj3NuSsuZ/frUPaBXo1VEBBmSO23fxkjw==", "dependencies": { - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/label": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.8.tgz", - "integrity": "sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg==", + "version": "3.7.10", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.10.tgz", + "integrity": "sha512-e5XVHA+OUK0aIwr4nHcnIj0z1kUryGaJWYYD2OGkkIltyUCKmwpRqdx8LQYbO4HGsJhvC3hJgidFdGcQwHHPYw==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/link": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.1.tgz", - "integrity": "sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-types/link": "^3.5.5", - "@react-types/shared": "^3.23.1", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.3.tgz", + "integrity": "sha512-dOwzxzo7LF4djBfRC8GcIhuTpDkNUIMT6ykQRV1a3749kgrr10YLascsO/l66k60i2k0T2oClkzfefYEK6WZeA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/link": "^3.5.7", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/listbox": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.12.1.tgz", - "integrity": "sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA==", - "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/list": "^3.10.5", - "@react-types/listbox": "^3.4.9", - "@react-types/shared": "^3.23.1", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.13.1.tgz", + "integrity": "sha512-b5Nu+5d5shJbxpy4s6OXvMlMzm+PVbs3L6CtoHlsKe8cAlSWD340vPHCOGYLwZApIBewepOBvRWgeAF8IDI04w==", + "dependencies": { + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/list": "^3.10.7", + "@react-types/listbox": "^3.5.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/live-announcer": { @@ -4525,237 +4524,237 @@ } }, "node_modules/@react-aria/menu": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.14.1.tgz", - "integrity": "sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/overlays": "^3.22.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/collections": "^3.10.7", - "@react-stately/menu": "^3.7.1", - "@react-stately/tree": "^3.8.1", - "@react-types/button": "^3.9.4", - "@react-types/menu": "^3.9.9", - "@react-types/shared": "^3.23.1", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.15.1.tgz", + "integrity": "sha512-ZBTMZiJ17j6t7epcsjd0joAzsMKO31KLJHPtWAEfk1JkBxrMoirISPN8O1CeK/uBX++VaWSrDZfFe1EjrOwKuA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/menu": "^3.8.1", + "@react-stately/tree": "^3.8.3", + "@react-types/button": "^3.9.6", + "@react-types/menu": "^3.9.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/meter": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.13.tgz", - "integrity": "sha512-oG6KvHQM3ri93XkYQkgEaMKSMO9KNDVpcW1MUqFfqyUXHFBRZRrJB4BTXMZ4nyjheFVQjVboU51fRwoLjOzThg==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.4.15.tgz", + "integrity": "sha512-OUAzgmfiyEvBF+h9NlG7s8jvrGNTqj/zAWyUWEh5FMEjKFrDfni6awwFoRs164QqmUvRBNC0/eKv3Ghd2GIkRA==", "dependencies": { - "@react-aria/progress": "^3.4.13", - "@react-types/meter": "^3.4.1", - "@react-types/shared": "^3.23.1", + "@react-aria/progress": "^3.4.15", + "@react-types/meter": "^3.4.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/numberfield": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.3.tgz", - "integrity": "sha512-QQ9ZTzBbRI8d9ksaBWm6YVXbgv+5zzUsdxVxwzJVXLznvivoORB8rpdFJzUEWVCo25lzoBxluCEPYtLOxP1B0w==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/spinbutton": "^3.6.5", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/form": "^3.0.3", - "@react-stately/numberfield": "^3.9.3", - "@react-types/button": "^3.9.4", - "@react-types/numberfield": "^3.8.3", - "@react-types/shared": "^3.23.1", + "version": "3.11.5", + "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.11.5.tgz", + "integrity": "sha512-cfJzU7SWsksKiLjfubSj5lR18ebQ7IbYaMQZbxdpZSPOANHIiktaxjPK4Nz7cqZ+HZ/6tQEirpY0iqpLx35CSw==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/spinbutton": "^3.6.7", + "@react-aria/textfield": "^3.14.7", + "@react-aria/utils": "^3.25.1", + "@react-stately/form": "^3.0.5", + "@react-stately/numberfield": "^3.9.5", + "@react-types/button": "^3.9.6", + "@react-types/numberfield": "^3.8.5", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/overlays": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.22.1.tgz", - "integrity": "sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/overlays": "^3.6.7", - "@react-types/button": "^3.9.4", - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1", + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.23.1.tgz", + "integrity": "sha512-qNV3pGThvRXjhdHCfqN9Eg4uD+nFm2DoK6d5e9LFd1+xCkKbT88afDBIcLmeG7fgfmukb1sNmzCJQJt8Svk54g==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-stately/overlays": "^3.6.9", + "@react-types/button": "^3.9.6", + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/progress": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.13.tgz", - "integrity": "sha512-YBV9bOO5JzKvG8QCI0IAA00o6FczMgIDiK8Q9p5gKorFMatFUdRayxlbIPoYHMi+PguLil0jHgC7eOyaUcrZ0g==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-types/progress": "^3.5.4", - "@react-types/shared": "^3.23.1", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.15.tgz", + "integrity": "sha512-wlx8pgEet3mlq5Skjy7yV1DfQiEg79tZtojpb5YGN2dIAH8sxClrKOSJRVce0fy9IXVCKrQxjQNXPNUIojK5Rg==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/label": "^3.7.10", + "@react-aria/utils": "^3.25.1", + "@react-types/progress": "^3.5.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/radio": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.4.tgz", - "integrity": "sha512-3fmoMcQtCpgjTwJReFjnvIE/C7zOZeCeWUn4JKDqz9s1ILYsC3Rk5zZ4q66tFn6v+IQnecrKT52wH6+hlVLwTA==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/form": "^3.0.5", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-stately/radio": "^3.10.4", - "@react-types/radio": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.6.tgz", + "integrity": "sha512-Cr7kiTUWw+HOEdFHztqrFlSXvwuzOCTMbwNkziTyc9fualIX6UDilykND2ctfBgkM4qH7SgQt+SxAIwTdevsKg==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/form": "^3.0.7", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/utils": "^3.25.1", + "@react-stately/radio": "^3.10.6", + "@react-types/radio": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/searchfield": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.5.tgz", - "integrity": "sha512-h1sMUOWjhevaKKUHab/luHbM6yiyeN57L4RxZU0IIc9Ww0h5Rp2GUuKZA3pcdPiExHje0aijcImL3wBHEbKAzw==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-stately/searchfield": "^3.5.3", - "@react-types/button": "^3.9.4", - "@react-types/searchfield": "^3.5.5", - "@react-types/shared": "^3.23.1", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.7.7.tgz", + "integrity": "sha512-2f087PCR8X5LYyLnvjCIOV27xjjTCkDFPnQaC7XSPCfzDYGM8utCR56JfZMqHnjcMnVNoiEg7EjSBBrh7I2bnQ==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/textfield": "^3.14.7", + "@react-aria/utils": "^3.25.1", + "@react-stately/searchfield": "^3.5.5", + "@react-types/button": "^3.9.6", + "@react-types/searchfield": "^3.5.7", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/select": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.5.tgz", - "integrity": "sha512-s8jixBuTUNdKWRHe2tIJqp55ORHeUObGMw1s7PQRRVrrHPdNSYseAOI9B2W7qpl3hKhvjJg40UW+45mcb1WKbw==", - "dependencies": { - "@react-aria/form": "^3.0.5", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/listbox": "^3.12.1", - "@react-aria/menu": "^3.14.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/select": "^3.6.4", - "@react-types/button": "^3.9.4", - "@react-types/select": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.14.7", + "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.14.7.tgz", + "integrity": "sha512-qZy5oX6P8SGrdv4bHb8iVMIVv+vLuo7UwOJtsQ1FUORIsZmBEz0RyfgYdzlueMcZNoQ9JgLYtrK2e0h6AmJOlg==", + "dependencies": { + "@react-aria/form": "^3.0.7", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/listbox": "^3.13.1", + "@react-aria/menu": "^3.15.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-stately/select": "^3.6.6", + "@react-types/button": "^3.9.6", + "@react-types/select": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/selection": { - "version": "3.18.1", - "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.18.1.tgz", - "integrity": "sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/selection": "^3.15.1", - "@react-types/shared": "^3.23.1", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.19.1.tgz", + "integrity": "sha512-mbExvq2Omi60sTWFGjwcNz1ja2P8VDsxWAqSypHRTyqXhtgqbv8V/v8Gp+7BmVPH1YHcbhztl6rvUZTDOSszzw==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/selection": "^3.16.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/separator": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.3.13.tgz", - "integrity": "sha512-hofA6JCPnAOqSE9vxnq7Dkazr7Kb2A0I5sR16fOG7ddjYRc/YEY5Nv7MWfKUGU0kNFHkgNjsDAILERtLechzeA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.4.1.tgz", + "integrity": "sha512-bZ+GQ936Y+WXAtsQjJdEMgYeqmqjhU90+wOlRGjmGdwf+/ht2yzBpeRuHEYUbE6F0iis/YoVc+b8ppAtPna/kA==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/slider": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.8.tgz", - "integrity": "sha512-MYvPcM0K8jxEJJicUK2+WxUkBIM/mquBxOTOSSIL3CszA80nXIGVnLlCUnQV3LOUzpWtabbWaZokSPtGgOgQOw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-stately/slider": "^3.5.4", - "@react-types/shared": "^3.23.1", - "@react-types/slider": "^3.7.3", + "version": "3.7.10", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.10.tgz", + "integrity": "sha512-QmBn87sDkncS/uhcrH0MxUN7bcEo8cHYcWk+gk7mibdIpyxyVDPKh7v7ZsosmAJLzjS0yb2ec1/Q5Oldfg1k/A==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/utils": "^3.25.1", + "@react-stately/slider": "^3.5.6", + "@react-types/shared": "^3.24.1", + "@react-types/slider": "^3.7.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/spinbutton": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.5.tgz", - "integrity": "sha512-0aACBarF/Xr/7ixzjVBTQ0NBwwwsoGkf5v6AVFVMTC0uYMXHTALvRs+ULHjHMa5e/cX/aPlEvaVT7jfSs+Xy9Q==", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.7.tgz", + "integrity": "sha512-OCimp4yXoFIgh6WAMOls5DDDRDRO75ZFic3YA6wLWTRNHxo1Lj8S90i1A6pakY6bi4hdBCKmj4DnFSNKAw1iWg==", "dependencies": { - "@react-aria/i18n": "^3.11.1", + "@react-aria/i18n": "^3.12.1", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/utils": "^3.24.1", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/ssr": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", - "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.5.tgz", + "integrity": "sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -4763,220 +4762,221 @@ "node": ">= 12" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/switch": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.4.tgz", - "integrity": "sha512-2nVqz4ZuJyof47IpGSt3oZRmp+EdS8wzeDYgf42WHQXrx4uEOk1mdLJ20+NnsYhj/2NHZsvXVrjBeKMjlMs+0w==", + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.6.tgz", + "integrity": "sha512-+dZOX1utODlx5dC90DtwnXd9nvln9HxMffBj/gmMT1/cD/RmXfjvymfjTsTMwvHhqCew9yfpvod0ZWwj3BkLGw==", "dependencies": { - "@react-aria/toggle": "^3.10.4", - "@react-stately/toggle": "^3.7.4", - "@react-types/switch": "^3.5.3", + "@react-aria/toggle": "^3.10.6", + "@react-stately/toggle": "^3.7.6", + "@react-types/shared": "^3.24.1", + "@react-types/switch": "^3.5.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/table": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.14.1.tgz", - "integrity": "sha512-WaPgQe4zQF5OaluO5rm+Y2nEoFR63vsLd4BT4yjK1uaFhKhDY2Zk+1SCVQvBLLKS4WK9dhP05nrNzT0vp/ZPOw==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.15.1.tgz", + "integrity": "sha512-jVDLxp6Y/9M6y45c1I6u6msJ9dBg2I7Cu/FlSaK6HthTpN23UXuGw1oWuAjbfqi31nVXHWBwjCZkGKTdMjLf5A==", "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/grid": "^3.9.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@react-aria/focus": "^3.18.1", + "@react-aria/grid": "^3.10.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-stately/collections": "^3.10.7", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-stately/collections": "^3.10.9", "@react-stately/flags": "^3.0.3", - "@react-stately/table": "^3.11.8", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/checkbox": "^3.8.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", + "@react-stately/table": "^3.12.1", + "@react-types/checkbox": "^3.8.3", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tabs": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.1.tgz", - "integrity": "sha512-S5v/0sRcOaSXaJYZuuy1ZVzYc7JD4sDyseG1133GjyuNjJOFHgoWMb+b4uxNIJbZxnLgynn/ZDBZSO+qU+fIxw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/tabs": "^3.6.6", - "@react-types/shared": "^3.23.1", - "@react-types/tabs": "^3.3.7", + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.3.tgz", + "integrity": "sha512-J1KOCdx4eSyMMeNCvO8BIz8E8xez12B+cYbM4BbJzWlcfMboGYUnM0lvI8QSpFPa/H9LkAhp7BJnl9IZeIBzoA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/tabs": "^3.6.8", + "@react-types/shared": "^3.24.1", + "@react-types/tabs": "^3.3.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tag": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.4.1.tgz", - "integrity": "sha512-gcIGPYZ2OBwMT4IHnlczEezKlxr0KRPL/mSfm2Q91GE027ZGOJnqusH9az6DX1qxrQx8x3vRdqYT2KmuefkrBQ==", - "dependencies": { - "@react-aria/gridlist": "^3.8.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/list": "^3.10.5", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-aria/tag/-/tag-3.4.3.tgz", + "integrity": "sha512-BqXKazX9YHvt6+qzGTu770V0FqGVefzz03hmnV2IVb+zYchXBv3WYbWVy46s/D5zTePOAXdpitQHxqy5rh+hgw==", + "dependencies": { + "@react-aria/gridlist": "^3.9.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/list": "^3.10.7", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/textfield": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.5.tgz", - "integrity": "sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/form": "^3.0.5", - "@react-aria/label": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", - "@react-types/textfield": "^3.9.3", + "version": "3.14.7", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.7.tgz", + "integrity": "sha512-1cWCG6vkjlwJuRTXKbKl9P0Q/0Li5pnMafZqDDWfDOlkS5dFGxYG6QFfoaYp7N6XMoNkXiculnCssfrQ+8hWgA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/form": "^3.0.7", + "@react-aria/label": "^3.7.10", + "@react-aria/utils": "^3.25.1", + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@react-types/textfield": "^3.9.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/toggle": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.4.tgz", - "integrity": "sha512-bRk+CdB8QzrSyGNjENXiTWxfzYKRw753iwQXsEAU7agPCUdB8cZJyrhbaUoD0rwczzTp2zDbZ9rRbUPdsBE2YQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/toggle": "^3.7.4", - "@react-types/checkbox": "^3.8.1", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.6.tgz", + "integrity": "sha512-AGlbtB1b8grrtjbiW5Au0LKYzxR83RHbHhaUkFwajyYRGyuEzr3Y03OiveoPB+DayA8Gz3H1ZVmW++8JZQOWHw==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/toggle": "^3.7.6", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/toolbar": { - "version": "3.0.0-beta.5", - "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.5.tgz", - "integrity": "sha512-c8spY7aeLI6L+ygdXvEbAzaT41vExsxZ1Ld0t7BB+6iEF3nyBNJHshjkgdR7nv8FLgNk0no4tj0GTq4Jj4UqHQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "version": "3.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.7.tgz", + "integrity": "sha512-PKaXD2qiWcVOn/bX07ipamTc6OlqypqcQRGG7WUL0ZXWfV6AfL7GFPS1B2Jh7Etetq68Ynyuo6R4jT4Jypsjdg==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tooltip": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.4.tgz", - "integrity": "sha512-+XRx4HlLYqWY3fB8Z60bQi/rbWDIGlFUtXYbtoa1J+EyRWfhpvsYImP8qeeNO/vgjUtDy1j9oKa8p6App9mBMQ==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/tooltip": "^3.4.9", - "@react-types/shared": "^3.23.1", - "@react-types/tooltip": "^3.4.9", + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.6.tgz", + "integrity": "sha512-JvRAMTcMju/KBOtISjVKKtIDzG3J1r6xK+mZTvu6ArM7DdeMBM5A8Lwk0bJ8dhr+YybiM9rR3hoZv3/E7IIYVw==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/tooltip": "^3.4.11", + "@react-types/shared": "^3.24.1", + "@react-types/tooltip": "^3.4.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/tree": { - "version": "3.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.0.0-alpha.1.tgz", - "integrity": "sha512-CucyeJ4VeAvWO5UJHt/l9JO65CVtsOVUctMOVNCQS77Isqp3olX9pvfD3LXt8fD5Ph2g0Q/b7siVpX5ieVB32g==", - "dependencies": { - "@react-aria/gridlist": "^3.8.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/selection": "^3.18.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/tree": "^3.8.1", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@react-aria/tree/-/tree-3.0.0-alpha.3.tgz", + "integrity": "sha512-o/9B+PVSUYxDM1KxQ/Pl1CytPtIagyidmasd10266hWfwzvPA0ZyakBwIEFj+ROnr9buAdP+A4sOTRo+a6g+YQ==", + "dependencies": { + "@react-aria/gridlist": "^3.9.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/tree": "^3.8.3", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/utils": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz", - "integrity": "sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.1.tgz", + "integrity": "sha512-5Uj864e7T5+yj78ZfLnfHqmypLiqW2mN+nsdslog2z5ssunTqjolVeM15ootXskjISlZ7MojLpq97kIC4nlnAw==", "dependencies": { - "@react-aria/ssr": "^3.9.4", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "@react-aria/ssr": "^3.9.5", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/virtualizer": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-3.10.1.tgz", - "integrity": "sha512-y34w+n/B3nwwj18QHIZlkNj5Fn2rt5CbQE4BBWAM8jYZ5ypwF77i2toxhGTuk1Oo1/hgTX7JYIgDIAQbNraBcg==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/shared": "^3.23.1", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-aria/virtualizer/-/virtualizer-4.0.1.tgz", + "integrity": "sha512-JZ6X0l38ZwBU/JgeLwkDA8mknRxqO1nYSVaPZHgOg8fd9BzMRWBjse7VW+Uf09P0uAEFElwlB+RY8UDx+W/Fmg==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-stately/virtualizer": "^4.0.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-aria/visually-hidden": { - "version": "3.8.12", - "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz", - "integrity": "sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw==", + "version": "3.8.14", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.14.tgz", + "integrity": "sha512-DV3yagbAgO4ywQTq6D/AxcIaTC8c77r/SxlIMhQBMQ6vScJWTCh6zFG55wmLe3NKqvRrowv1OstlmYfZQ4v/XA==", "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-google-maps/api": { @@ -5007,1114 +5007,1118 @@ "integrity": "sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw==" }, "node_modules/@react-spectrum/actionbar": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/actionbar/-/actionbar-3.4.5.tgz", - "integrity": "sha512-9+b3B5he/zwyk+1pHc5l8/q6mBy+zKkphha2kBScbj/2XRHTwwlcamBJMANMYfVirQT9UP5FHGhHV6OiRgZLrA==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/actionbar/-/actionbar-3.5.1.tgz", + "integrity": "sha512-yPqUjIbRaUPZtips+FXYNCNv5Yyqcd5MjN238C6kUXoEOMNRfXiO3QLO7JRMywwi4EWPz4GjH+329/VoV+iXsw==", "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", "@react-aria/live-announcer": "^3.3.4", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/actiongroup": "^3.10.5", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-types/actionbar": "^3.1.7", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/actiongroup": "^3.10.7", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/overlays": "^5.6.3", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-types/actionbar": "^3.1.9", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/actiongroup": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/actiongroup/-/actiongroup-3.10.5.tgz", - "integrity": "sha512-KHSuZvCD5XyOA4wz2iu85JQem2Y01pniWTfhzGLPfJG+1OdOCt+C0mO/jU0DL4NM6UwzdLy4JfvUij/xBsLrRw==", - "dependencies": { - "@react-aria/actiongroup": "^3.7.5", - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/menu": "^3.19.1", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/tooltip": "^3.6.7", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/list": "^3.10.5", - "@react-types/actiongroup": "^3.4.9", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", - "@spectrum-icons/workflow": "^4.2.12", + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-spectrum/actiongroup/-/actiongroup-3.10.7.tgz", + "integrity": "sha512-IJqr+TOEZRPWJ+9OSGZvZBPQZG/mp++2awKIVPJzOCWOWu81oIu8fMRgnuQev+RoAJWKBXR1sh5EPMmLJHSzqA==", + "dependencies": { + "@react-aria/actiongroup": "^3.7.7", + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/menu": "^3.20.1", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/tooltip": "^3.6.9", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/list": "^3.10.7", + "@react-types/actiongroup": "^3.4.11", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", + "@spectrum-icons/workflow": "^4.2.14", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.2.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/avatar": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@react-spectrum/avatar/-/avatar-3.0.12.tgz", - "integrity": "sha512-H5dZG+mPiSHlST2TBMfMR7mOf+g5C0i9Q2+aMMQ8khphXLFL4fj5GqxgEE7Mi5efS+raofwXJ/dM+AedsSl6WQ==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/avatar": "^3.0.7", - "@react-types/shared": "^3.23.1", + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@react-spectrum/avatar/-/avatar-3.0.14.tgz", + "integrity": "sha512-QQRRQEO4mHdW9UtXomEJw9gAfOliqhMaYMJYWlwytCAipErrllae7U9VK0AaECokfNBib3Klhp8b/4VtLKr+dw==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/avatar": "^3.0.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.2.1", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/badge": { - "version": "3.1.13", - "resolved": "https://registry.npmjs.org/@react-spectrum/badge/-/badge-3.1.13.tgz", - "integrity": "sha512-zfsmbw3hxYWxuySQZTMNkxI5vD1XktHNIBqDUYNaDu8A+GVaORI9pcrua4T2YXyQrw1hYXbqVAmeISJYURajjA==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-types/badge": "^3.1.9", - "@react-types/shared": "^3.23.1", + "version": "3.1.15", + "resolved": "https://registry.npmjs.org/@react-spectrum/badge/-/badge-3.1.15.tgz", + "integrity": "sha512-fCjEXw5ej0GzXTk7g3PkhPKj0sS1mQ6XtrhGIwM1g78AYdv0+no7Zsew1ojRQJpOhWDqJPj2QNRJplouGTI3uA==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-types/badge": "^3.1.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/breadcrumbs": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/@react-spectrum/breadcrumbs/-/breadcrumbs-3.9.7.tgz", - "integrity": "sha512-1wA9cgSugaplYmT4z/WiUAZsOcXPWN+8sx43Wc5foS3qUSOLpW4+43sjDTVmzVlbXYuZ4byxf1nrXZNEqCWZXA==", - "dependencies": { - "@react-aria/breadcrumbs": "^3.5.13", - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/menu": "^3.19.1", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-types/breadcrumbs": "^3.7.5", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/@react-spectrum/breadcrumbs/-/breadcrumbs-3.9.9.tgz", + "integrity": "sha512-JQ9OGQJTV68ZxCc7cNNa1ob5G+AAXYD3BjAd81ZfUwxjzEnHPXu/FJWHC7H8zaCGno6Pqq8nhgBHNR1TBiQqGw==", + "dependencies": { + "@react-aria/breadcrumbs": "^3.5.15", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/menu": "^3.20.1", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-types/breadcrumbs": "^3.7.7", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/button": { - "version": "3.16.4", - "resolved": "https://registry.npmjs.org/@react-spectrum/button/-/button-3.16.4.tgz", - "integrity": "sha512-ksPZkmhkz8fJuu+cC9GM5e1pJ0d2sWmkU9sqKn5SNfWh9ngemgvShtkqkuQoz6ThH+MI3n/n4JhFd+UhJ/lILA==", - "dependencies": { - "@react-aria/button": "^3.9.5", - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/toggle": "^3.7.4", - "@react-types/button": "^3.9.4", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.16.6", + "resolved": "https://registry.npmjs.org/@react-spectrum/button/-/button-3.16.6.tgz", + "integrity": "sha512-dNJldfq9xQ1pN29km0+vTmhlmRpx8ZXF5K/1edvdLpPtpI3a6iJIBxGh8v4uQFNaAN3Er7mdHdvguHkPsnTD3w==", + "dependencies": { + "@react-aria/button": "^3.9.7", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/toggle": "^3.7.6", + "@react-types/button": "^3.9.6", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/buttongroup": { - "version": "3.6.13", - "resolved": "https://registry.npmjs.org/@react-spectrum/buttongroup/-/buttongroup-3.6.13.tgz", - "integrity": "sha512-QUNTtDMiY/ydrpUYq8fO0kkssdnTEJsIxlfhbQa3ZEpEObjgt9XbAehNKPelWATwLNQ/gY8o21m9GT1m7J/8zg==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/buttongroup": "^3.3.9", - "@react-types/shared": "^3.23.1", + "version": "3.6.15", + "resolved": "https://registry.npmjs.org/@react-spectrum/buttongroup/-/buttongroup-3.6.15.tgz", + "integrity": "sha512-QelfmkrH1bWDGTJyVRQxOVSJsn1dv3aNGlgd3u9HvBDQyZItRl+qiflOCZnrtPgX7SBUBVxGooW+3/AunIBkrw==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/buttongroup": "^3.3.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/calendar": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-spectrum/calendar/-/calendar-3.4.9.tgz", - "integrity": "sha512-5546bmMQ/v3dscTDFx0llEQ3jA23vkcjbiY7hIad5a9bpXHPQSuIeREelFPtsVUzsD3f3v2BL2nDAt6SPLVqCA==", - "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-aria/calendar": "^3.5.8", - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/calendar": "^3.5.1", - "@react-types/button": "^3.9.4", - "@react-types/calendar": "^3.4.6", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-spectrum/calendar/-/calendar-3.4.11.tgz", + "integrity": "sha512-NZZvdWDOhkNphUa4if1gM4x+tUDZb7fiMoTjp0/RSN2VaBl8Z5tt6R5hP9IAWvjfyPH8rv2zI40yO6ts/QCgcg==", + "dependencies": { + "@internationalized/date": "^3.5.5", + "@react-aria/calendar": "^3.5.10", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/calendar": "^3.5.3", + "@react-types/button": "^3.9.6", + "@react-types/calendar": "^3.4.8", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/checkbox": { - "version": "3.9.6", - "resolved": "https://registry.npmjs.org/@react-spectrum/checkbox/-/checkbox-3.9.6.tgz", - "integrity": "sha512-aU4bDFwaiC2hpqOFv9vbUw20V6VlMO7pn1P8Q/qUfNxWVzPY03rJC0Gqcq8NQy2zofmm4tDBJKKOF1F4amGTyw==", - "dependencies": { - "@react-aria/checkbox": "^3.14.3", - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/checkbox": "^3.6.5", - "@react-stately/toggle": "^3.7.4", - "@react-types/checkbox": "^3.8.1", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/checkbox/-/checkbox-3.9.8.tgz", + "integrity": "sha512-qOwzemGpa+Qj9ZmwDhFtCd0OkqCY+c6yw8iggCfA0A+jrreSexkOAtUo6JIGg6Vsh44oqM44PKKMgvbpW1LXJw==", + "dependencies": { + "@react-aria/checkbox": "^3.14.5", + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/checkbox": "^3.6.7", + "@react-stately/toggle": "^3.7.6", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0", - "react-aria-components": "^1.2.1" + "react-aria-components": "^1.3.1" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/combobox": { - "version": "3.12.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/combobox/-/combobox-3.12.5.tgz", - "integrity": "sha512-S6TA8FrPm0ibLkeulki2S0DsUqy/hEcTVTvvic7qIRyURN/J+DQMQDWmy+Zzz9mxJr8qdJAoWSArBVWtxKhMKg==", - "dependencies": { - "@react-aria/button": "^3.9.5", - "@react-aria/combobox": "^3.9.1", - "@react-aria/dialog": "^3.5.14", - "@react-aria/focus": "^3.17.1", - "@react-aria/form": "^3.0.5", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/listbox": "^3.12.9", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/textfield": "^3.12.1", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/combobox": "^3.8.4", - "@react-types/button": "^3.9.4", - "@react-types/combobox": "^3.11.1", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/combobox/-/combobox-3.13.1.tgz", + "integrity": "sha512-p6Wt8TCvaE/ljDpRZQEuGjxvFkXiIwElz3Fq/qoV6qhdeXbm8GxEwkfzpcBk2SgvjVAAWgQYcmUJVav+R5J0/g==", + "dependencies": { + "@react-aria/button": "^3.9.7", + "@react-aria/combobox": "^3.10.1", + "@react-aria/dialog": "^3.5.16", + "@react-aria/focus": "^3.18.1", + "@react-aria/form": "^3.0.7", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/overlays": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/listbox": "^3.13.1", + "@react-spectrum/overlays": "^5.6.3", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/textfield": "^3.12.3", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/combobox": "^3.9.1", + "@react-types/button": "^3.9.6", + "@react-types/combobox": "^3.12.1", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/contextualhelp": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/@react-spectrum/contextualhelp/-/contextualhelp-3.6.11.tgz", - "integrity": "sha512-mQimyXdwXyZWFWO/7BdHZ46YzCQThjnHGGMmlv2y+YfqaOqoP3UTQb4D6noSbV1M6zKJgMq5timhVo81Sujk9Q==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/dialog": "^3.8.11", - "@react-spectrum/utils": "^3.11.7", - "@react-types/contextualhelp": "^3.2.10", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/workflow": "^4.2.12", + "version": "3.6.13", + "resolved": "https://registry.npmjs.org/@react-spectrum/contextualhelp/-/contextualhelp-3.6.13.tgz", + "integrity": "sha512-tSY2l9v+kTvMfL6Alu8AoDSqXLCX0lqi8wuQxOVOHvbKEYf9BnRdlHQ5ILLHpt9eFxriVnsQcIbR6sGdoOi2pw==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/dialog": "^3.8.13", + "@react-spectrum/utils": "^3.11.9", + "@react-types/contextualhelp": "^3.2.12", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/workflow": "^4.2.14", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/datepicker": { - "version": "3.9.6", - "resolved": "https://registry.npmjs.org/@react-spectrum/datepicker/-/datepicker-3.9.6.tgz", - "integrity": "sha512-MeLle/V2t3dBe7wq/qkc39hJyV6NTZncCZnBfPHnTcLXeZl8sfTf4rt11JS3Y4JOOtM3jiuw1oMpZ7wv+h6hOA==", - "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-aria/datepicker": "^3.10.1", - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/calendar": "^3.4.9", - "@react-spectrum/dialog": "^3.8.11", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/utils": "^3.11.7", - "@react-spectrum/view": "^3.6.10", - "@react-stately/datepicker": "^3.9.4", - "@react-types/datepicker": "^3.7.4", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", - "@spectrum-icons/workflow": "^4.2.12", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/datepicker/-/datepicker-3.10.1.tgz", + "integrity": "sha512-+cmnSGSMrMiO94q1KOM3rCIUeFQouwJ8SbECxMQQDAGINHbhQxlceW4sKl0SldpXzS2yVINKj17rjFAbOvxEHw==", + "dependencies": { + "@internationalized/date": "^3.5.5", + "@react-aria/datepicker": "^3.11.1", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/calendar": "^3.4.11", + "@react-spectrum/dialog": "^3.8.13", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/utils": "^3.11.9", + "@react-spectrum/view": "^3.6.12", + "@react-stately/datepicker": "^3.10.1", + "@react-types/datepicker": "^3.8.1", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", + "@spectrum-icons/workflow": "^4.2.14", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/dialog": { - "version": "3.8.11", - "resolved": "https://registry.npmjs.org/@react-spectrum/dialog/-/dialog-3.8.11.tgz", - "integrity": "sha512-/ng49paipA3MHC5nVbfDlZL6QXFJWCrSDgQ4fXon5q6gB+94d2DvkZ+CvnLZ5oo0Bpkws/vT3jxcG0hsBz1f6g==", - "dependencies": { - "@react-aria/dialog": "^3.5.14", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/buttongroup": "^3.6.13", - "@react-spectrum/divider": "^3.5.13", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-spectrum/view": "^3.6.10", - "@react-stately/overlays": "^3.6.7", - "@react-types/button": "^3.9.4", - "@react-types/dialog": "^3.5.10", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.8.13", + "resolved": "https://registry.npmjs.org/@react-spectrum/dialog/-/dialog-3.8.13.tgz", + "integrity": "sha512-BbmBKRVcSOZhV01xCl/MJTG2D+dctDMs/8/SOpM//BXzvlDIGXHRVJiYcPKCGe4Egt+6mNCjY/xvvfqxOXRNhw==", + "dependencies": { + "@react-aria/dialog": "^3.5.16", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/buttongroup": "^3.6.15", + "@react-spectrum/divider": "^3.5.15", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/overlays": "^5.6.3", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-spectrum/view": "^3.6.12", + "@react-stately/overlays": "^3.6.9", + "@react-types/button": "^3.9.6", + "@react-types/dialog": "^3.5.12", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/divider": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@react-spectrum/divider/-/divider-3.5.13.tgz", - "integrity": "sha512-7LoOTj+qs3yTBZiWudgU5TpzLREApMt0rwzalyq9ORRQrE8C0YXUxlSLPizyUmQeP4Rj8p3lCdUNWAe1cAn1tQ==", - "dependencies": { - "@react-aria/separator": "^3.3.13", - "@react-spectrum/utils": "^3.11.7", - "@react-types/divider": "^3.3.9", - "@react-types/shared": "^3.23.1", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@react-spectrum/divider/-/divider-3.5.15.tgz", + "integrity": "sha512-bL0pwPup9VL7W4faxvHonChx8eEbBUhX67/V47wR21q4PmnuP3bOVZ6U3qqCbhA+R246zsyxlBouX3mL6QuKvg==", + "dependencies": { + "@react-aria/separator": "^3.4.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/divider": "^3.3.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/dnd": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/dnd/-/dnd-3.3.10.tgz", - "integrity": "sha512-Qp+Fp6BnMgrp5G18IAcbEUetf2YWelRugYJr8TH8h236n8lariyUpri1Mj604DV/UqNoK6f6k6ocY8JBmvOd9Q==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/dnd/-/dnd-3.4.1.tgz", + "integrity": "sha512-sg99ExYMmm5sb8EWsTJRUK6efb41t+s7Ih19M/iamfhwSaypAZaMbfP1zjtFbUqC9GtEALteZpt5OqVRkiKlvQ==", "dependencies": { - "@react-aria/dnd": "^3.6.1", - "@react-stately/dnd": "^3.3.1", - "@react-types/shared": "^3.23.1", + "@react-aria/dnd": "^3.7.1", + "@react-stately/dnd": "^3.4.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/dropzone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/dropzone/-/dropzone-3.0.1.tgz", - "integrity": "sha512-8hEu6mF1ExJMc+Pv5lk3YHz3yZcRy4FkjKgBMXWWn8kxT2DEIK5hONspECBmlsNtUHuk1QQFFSISMGgsMZFQVw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/dropzone/-/dropzone-3.0.3.tgz", + "integrity": "sha512-YtX4W9RtAaQwk2RbLmW/GjJ9DimqwGUSYaWAb9+LaoMBiUvEtJsy7m22frtph8wp62crQR1S/u16sTnqq8tlzQ==", "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", - "react-aria-components": "^1.2.1" + "react-aria-components": "^1.3.1" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/filetrigger": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/filetrigger/-/filetrigger-3.0.1.tgz", - "integrity": "sha512-9PfhjeGdHjyumlzdvrFNumKnGeaK41kYragnDMSD3KNH0XWu2kVUTB7eUbA9d6FLL/+g8tyPx+wDo0ZJW79Fpg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/filetrigger/-/filetrigger-3.0.3.tgz", + "integrity": "sha512-6bWa7ENBaj/oM0JkXd2Q7fzZg/gL23fitK1nVyRfFw9BHfgqCSZwMM2exBJjtX+Az6II4LjhY9cSbL28i9EsGw==", "dependencies": { "@swc/helpers": "^0.5.0", - "react-aria-components": "^1.2.1" + "react-aria-components": "^1.3.1" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/form": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/@react-spectrum/form/-/form-3.7.6.tgz", - "integrity": "sha512-uh/r3d3haWGjdxh++HCCbezWRiw7PGDStvOHEVLCVz/cN0lrUb77dwx5E4jMvY+oLkaBv05R3UtdMxNdXV1DZQ==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/form": "^3.0.3", - "@react-types/form": "^3.7.4", - "@react-types/shared": "^3.23.1", + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/form/-/form-3.7.8.tgz", + "integrity": "sha512-FAsSOhltgBCnqLXsdTeYaDUQo7TU9GT/byCgKs0+FK9RKPQMtwYRCHDmoEOoWVhIlH6jiOTT6UXxRP+uGJiSAg==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/form": "^3.0.5", + "@react-types/form": "^3.7.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/icon": { - "version": "3.7.13", - "resolved": "https://registry.npmjs.org/@react-spectrum/icon/-/icon-3.7.13.tgz", - "integrity": "sha512-hbd1OZ2UOOZ807zkU/ay8TWQOSnB56cj9HHm3FzUBjpTwpt849Pvk4TBO5K2SAmuQi4gslmvFGmd8BoOEoEcjg==", + "version": "3.7.15", + "resolved": "https://registry.npmjs.org/@react-spectrum/icon/-/icon-3.7.15.tgz", + "integrity": "sha512-b8VouL33orbT6wUxsgvmaPrNOXftagVE4BNLbOFhBik98ycy8H+KajCII5ZnTM8O4+9f9lDyO8D0R8n5VeOaiA==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/illustratedmessage": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/illustratedmessage/-/illustratedmessage-3.5.1.tgz", - "integrity": "sha512-HpTueLW3duV1TE3sYw5WeBaGECqS0RVEXr2UaXDXSLteY238Oc7prli2qPk2xaGeRKgh97jsfySDBOvedCuZJQ==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/utils": "^3.11.7", - "@react-types/illustratedmessage": "^3.3.9", - "@react-types/shared": "^3.23.1", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/illustratedmessage/-/illustratedmessage-3.5.3.tgz", + "integrity": "sha512-2f5P9s8TWLRWDOdk84aqWkyNhgT8PZfAdbMLpzrzra0QM5FYwABbMDcjtVaprFq55KqPk9iLwGSb0Avk3T+aDA==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/utils": "^3.11.9", + "@react-types/illustratedmessage": "^3.3.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/image": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/image/-/image-3.5.1.tgz", - "integrity": "sha512-MFl2WkMT224L4v1M9n4ZGkkXhBqecQ6uWZfxHBURrTXFMgPq5sxWY7qw42pc3mAX339kNiLZXTCTA5mKyiqxnQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/image/-/image-3.5.3.tgz", + "integrity": "sha512-8ZUkWXH9tnR+ZnxEeMEflo/nMRNFn60VpXOt9hfJlXbhwUKD4eO3TFA14QQXr407XSZwt9d7CGkT4urw4lxtmA==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/image": "^3.4.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/image": "^3.4.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/inlinealert": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/inlinealert/-/inlinealert-3.2.5.tgz", - "integrity": "sha512-D9EF8pIQME6GHpvk7HR8/Qr3g79l78EsvczL0wGOzdcMt+LoV9F6RNJSobrI+dgzX0RcbqRyWsdCixboFrfefg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@react-spectrum/inlinealert/-/inlinealert-3.2.7.tgz", + "integrity": "sha512-jWO7gNx3rulFA0lkvcv/czNdGZRmG77Jo8aAe2ku/96WvJc9h4ZNyTVu7F+8W5iR+I1Ige1D6UHB9dJCTZlfHQ==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/label": { - "version": "3.16.6", - "resolved": "https://registry.npmjs.org/@react-spectrum/label/-/label-3.16.6.tgz", - "integrity": "sha512-RF1YqQOKpDYqnSxM+TK/4gZGBsoKjfaZYsOvjya90LvUO8/2Va8Ux0bwHlqtOxu46yjxPLflpt0u9rl9ce+Ubg==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/utils": "^3.11.7", - "@react-types/label": "^3.9.3", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.16.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/label/-/label-3.16.8.tgz", + "integrity": "sha512-2qIju/PZNzwTviR1OiiT8SR+aZdkBCI+S0GfT/FABjkmxJvm+lWxIhc+okr9CRGgEzCYnq9b3S5PfPIupLh8ew==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/utils": "^3.11.9", + "@react-types/label": "^3.9.5", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/labeledvalue": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/@react-spectrum/labeledvalue/-/labeledvalue-3.1.14.tgz", - "integrity": "sha512-JeZHCRRmSPShgOozHs31+e0NnN4S3+SP0NpPGFUo0itPHvOcJSV9aoRCefdMTdXbUupIi5h1EM5Ty0owdy8y0w==", - "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-aria/i18n": "^3.11.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", + "version": "3.1.16", + "resolved": "https://registry.npmjs.org/@react-spectrum/labeledvalue/-/labeledvalue-3.1.16.tgz", + "integrity": "sha512-ZzrGErsGvnndVpL9MMdanYpmL4I97enWU7tQ6w17TUvmb6pG4VIKUVepPMpw9sn9VcEc44dY56nDqH9m+uR35g==", + "dependencies": { + "@internationalized/date": "^3.5.5", + "@react-aria/i18n": "^3.12.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/layout": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/layout/-/layout-3.6.5.tgz", - "integrity": "sha512-kl/vZue7ZQZtkypPeOPZ3WENk4Mn9aYsjSBFZP+3GVRGPi0GBlhVOSicraio7UD3oGz1Xkhy5WZg01s3zQC0zg==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/layout": "^3.3.15", - "@react-types/shared": "^3.23.1", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-spectrum/layout/-/layout-3.6.7.tgz", + "integrity": "sha512-EheC/J99qt2GpVq05UqPk9iH9PImH9SHXmikNqf/pckKH2Xh/EUY9t5ab+oOYq0N9JbdLp9a38AvuL9KyTJAFQ==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/layout": "^3.3.17", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/link": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/@react-spectrum/link/-/link-3.6.7.tgz", - "integrity": "sha512-g9yWHXO8OdoOnUH0xAIek5wDHDi0gYmEL3hqqKwzfMvkmQQCQjVS+D/9IlkxKT5LaumUiHdHDiA2PL1voPUh0g==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/link": "^3.7.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/link": "^3.5.5", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-spectrum/link/-/link-3.6.9.tgz", + "integrity": "sha512-eZDGvH8R1GKQVnlk5h1T6utKO/i3xFEhqC8cI/B5Pwh3WwVB9fSwUljzf9Cb3dqfSMTFXH3GrPmF1XVfRIliFg==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/link": "^3.7.3", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/link": "^3.5.7", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/list": { - "version": "3.7.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/list/-/list-3.7.10.tgz", - "integrity": "sha512-UxS+pXgJGaTeLP+KQdq7IQsaJN1tq6tpqFXFKXdrXGnLZPd9GtBT3zYP2Rnb9r/6Vm67D+pewF6tVKLzctE1sw==", - "dependencies": { - "@react-aria/button": "^3.9.5", - "@react-aria/focus": "^3.17.1", - "@react-aria/gridlist": "^3.8.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/utils": "^3.24.1", - "@react-aria/virtualizer": "^3.10.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-spectrum/checkbox": "^3.9.6", - "@react-spectrum/dnd": "^3.3.10", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/layout": "^3.13.9", - "@react-stately/list": "^3.10.5", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/list/-/list-3.8.1.tgz", + "integrity": "sha512-8gSq7cMtVwrPA7DMCg2b9PEYcT8IAmpsKREtAWGOZtzT0xgm8xdEwMUAbhbiDmE1Nbuupe+0vDl2XkUjlrdmXw==", + "dependencies": { + "@react-aria/button": "^3.9.7", + "@react-aria/focus": "^3.18.1", + "@react-aria/gridlist": "^3.9.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/utils": "^3.25.1", + "@react-aria/virtualizer": "^4.0.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-spectrum/checkbox": "^3.9.8", + "@react-spectrum/dnd": "^3.4.1", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/layout": "^4.0.1", + "@react-stately/list": "^3.10.7", + "@react-stately/virtualizer": "^4.0.1", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0", "react-transition-group": "^4.4.5" }, "peerDependencies": { "@react-spectrum/provider": "^3.2.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/listbox": { - "version": "3.12.9", - "resolved": "https://registry.npmjs.org/@react-spectrum/listbox/-/listbox-3.12.9.tgz", - "integrity": "sha512-9adZJtEtAVwNtJEU70edZOlx+LfBOeVpWCOXoAJ+5iU+rNrQER7bEpFj15GlJOL+vcwFuCPoIsDBKSxygJANLw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/listbox": "^3.12.1", - "@react-aria/utils": "^3.24.1", - "@react-aria/virtualizer": "^3.10.1", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/layout": "^3.13.9", - "@react-stately/list": "^3.10.5", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/listbox": "^3.4.9", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/listbox/-/listbox-3.13.1.tgz", + "integrity": "sha512-VaLxXVMMDltrQclfWUZJcpq/0u4Ijm2vr1S1L4ype2VF2S8X2gKiwnfsMfzjhxmfSvjKr1vH+kxRC45sDuFdWA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/listbox": "^3.13.1", + "@react-aria/utils": "^3.25.1", + "@react-aria/virtualizer": "^4.0.1", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/layout": "^4.0.1", + "@react-stately/list": "^3.10.7", + "@react-stately/virtualizer": "^4.0.1", + "@react-types/listbox": "^3.5.1", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.2.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/menu": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/menu/-/menu-3.19.1.tgz", - "integrity": "sha512-/bpqSPef1UvoaIwd5GVrqMt8LiByi5rV9yh0K+SSzZ5uY/w4zRQN9y14XnLf4P53R67DpSqAqk3JoWOLFj0Zcg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/menu": "^3.14.1", - "@react-aria/overlays": "^3.22.1", - "@react-aria/separator": "^3.3.13", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/menu": "^3.7.1", - "@react-stately/overlays": "^3.6.7", - "@react-stately/tree": "^3.8.1", - "@react-types/menu": "^3.9.9", - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", - "@spectrum-icons/workflow": "^4.2.12", + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/menu/-/menu-3.20.1.tgz", + "integrity": "sha512-lIkL14tJaZh3Ago2x8EMcLlyGBMRquDz0OsqgMHeHwQOtUOnIY31JdrWNBdSYWgASZDytrKJSU4e5gXRMCYNEw==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/menu": "^3.15.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/separator": "^3.4.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/overlays": "^5.6.3", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/menu": "^3.8.1", + "@react-stately/overlays": "^3.6.9", + "@react-stately/tree": "^3.8.3", + "@react-types/menu": "^3.9.11", + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", + "@spectrum-icons/workflow": "^4.2.14", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/meter": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/meter/-/meter-3.5.1.tgz", - "integrity": "sha512-xmQwPDmT8hfkEuyUrijpe2xXyzWlFErrnKpQIf49Lql/GudeGHIvtekx3Qj2kvhwLpHKeOOECk35PufCJmwF2A==", - "dependencies": { - "@react-aria/meter": "^3.4.13", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/utils": "^3.11.7", - "@react-types/meter": "^3.4.1", - "@react-types/shared": "^3.23.1", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/meter/-/meter-3.5.3.tgz", + "integrity": "sha512-mfsF+O4MkjaMGBQRT80zn5yd1TXtBF/aqtW2nrGFKxE/sRGJ6mWuqEuPheL+jEuQwcnAanQBk03+yaSUgYPW8Q==", + "dependencies": { + "@react-aria/meter": "^3.4.15", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/utils": "^3.11.9", + "@react-types/meter": "^3.4.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/numberfield": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-spectrum/numberfield/-/numberfield-3.9.3.tgz", - "integrity": "sha512-t3LllH5NkaqlwkvfFVizmzp4+MhMCqooLlUsBIbDgqyNCWEbxiC16ZqPOPkZkBDFio1aKX0zzSb9SiuUFw2ZwA==", - "dependencies": { - "@react-aria/button": "^3.9.5", - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/numberfield": "^3.11.3", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/textfield": "^3.12.1", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/numberfield": "^3.9.3", - "@react-types/button": "^3.9.4", - "@react-types/numberfield": "^3.8.3", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", - "@spectrum-icons/workflow": "^4.2.12", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-spectrum/numberfield/-/numberfield-3.9.5.tgz", + "integrity": "sha512-fmaeAarm3ay7PpbrvvIrKkHdEMSKsuRyjcfkSjLCpkkI2D2sg2iJBtlbD+FypwvkpMJh/Lk6UPpirNgsX/+kcw==", + "dependencies": { + "@react-aria/button": "^3.9.7", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/numberfield": "^3.11.5", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/textfield": "^3.12.3", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/numberfield": "^3.9.5", + "@react-types/button": "^3.9.6", + "@react-types/numberfield": "^3.8.5", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", + "@spectrum-icons/workflow": "^4.2.14", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/overlays": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/overlays/-/overlays-5.6.1.tgz", - "integrity": "sha512-ABacMG1V6gHCHHHtD01xt9RjTCu51Kytr/oHdUPEFd5Zvh8m/O7j3IQI4nSj5a5kDoj73NAkENq9Cq12gjwL4g==", - "dependencies": { - "@react-aria/interactions": "^3.21.3", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/overlays": "^3.6.7", - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/overlays/-/overlays-5.6.3.tgz", + "integrity": "sha512-EUnpn99fx3nmBQAUc1Cxgf75Ro1Cg1rey1SC/TIVllhz2D3tSOsDD22I/eWXMEdBNS+IeSFzbEGApOvJrp4RKQ==", + "dependencies": { + "@react-aria/interactions": "^3.22.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/overlays": "^3.6.9", + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "react-transition-group": "^4.4.5" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/picker": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/picker/-/picker-3.14.5.tgz", - "integrity": "sha512-FBCMibgStP62XKS2yJWHtn+XOLsxuzs0pl0jHkozuBaqC42H6fkDcINgQ08wbS2PlEEJSOYIkeL3LXFcxuewEA==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/select": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/listbox": "^3.12.9", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/select": "^3.6.4", - "@react-types/select": "^3.9.4", - "@react-types/shared": "^3.23.1", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/picker/-/picker-3.15.1.tgz", + "integrity": "sha512-vsTRw7U7d1TppJwJtwXfZ75WgUf87nIDOhNrqykVvCXxt7C9DTJ8OwJPBfOl88ImfT4U1f6ldr681uC4VU7lIA==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/select": "^3.14.7", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/listbox": "^3.13.1", + "@react-spectrum/overlays": "^5.6.3", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/select": "^3.6.6", + "@react-types/select": "^3.9.6", + "@react-types/shared": "^3.24.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.1.4", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/progress": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@react-spectrum/progress/-/progress-3.7.7.tgz", - "integrity": "sha512-FI/oc9hEQqbv00VJbaxqFTncBDDbxWN9cbvNNrPoROBQWL3NgB3tvEqY/fm5IXtDeFEV/U+tSm8BnZTGn6Mdxg==", - "dependencies": { - "@react-aria/progress": "^3.4.13", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/progress": "^3.5.4", - "@react-types/shared": "^3.23.1", + "version": "3.7.9", + "resolved": "https://registry.npmjs.org/@react-spectrum/progress/-/progress-3.7.9.tgz", + "integrity": "sha512-C6sozAPqupK1geqhmbS9K28b5xW2ZdIiBrk1XGjIiBuAqQZhvqFxCliwr2pbjWPcOGLQJrgc8dGWUuvZXUtGXQ==", + "dependencies": { + "@react-aria/progress": "^3.4.15", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/progress": "^3.5.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/provider": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/@react-spectrum/provider/-/provider-3.9.7.tgz", - "integrity": "sha512-VRu8cOWrLJU/Krulo8njfPCMeJT+uu1k9GjFZ9Cw88mHGW7a3MK54IzI5p2evLPab7pgplPIoJcv3bC2XB+DAA==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/overlays": "^3.22.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/provider": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/@react-spectrum/provider/-/provider-3.9.9.tgz", + "integrity": "sha512-sVgIG0MZ/4KCrJgWjOGyEdP5nhl8fXxp6L1s7SWyzWT/e6ypD0Og9hkQo/yY2XHP2hI4ZiZ4Psc1H4olsrp5lw==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/provider": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/radio": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/@react-spectrum/radio/-/radio-3.7.6.tgz", - "integrity": "sha512-KRtipJfIkRWbnvhS/zZ7j3ltEQXrQeVNhmIWChuP+sC5hdA3N8llMgf30Xa9PqtFhGH4CvUlXC9NA/rhLWnm4w==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/radio": "^3.10.4", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/radio": "^3.10.4", - "@react-types/radio": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/radio/-/radio-3.7.8.tgz", + "integrity": "sha512-H11U3Hf15wVhp8hoyYR2bUKgKyyihhjPw40rf2ZESnS/FEeOifVQtzr6UbEKqb1qC/LX5YhuHjUyXv+j4DuVeA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/radio": "^3.10.6", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/radio": "^3.10.6", + "@react-types/radio": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/searchfield": { - "version": "3.8.6", - "resolved": "https://registry.npmjs.org/@react-spectrum/searchfield/-/searchfield-3.8.6.tgz", - "integrity": "sha512-RU928ZeQsqPGMsNVtoLvahHmuRC3OAW9im5W0/CVgglINn2IapF2U0oxHVw6ymzx1NyCYrYR8pO9skMF0E68/Q==", - "dependencies": { - "@react-aria/searchfield": "^3.7.5", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/textfield": "^3.12.1", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/searchfield": "^3.5.3", - "@react-types/searchfield": "^3.5.5", - "@react-types/textfield": "^3.9.3", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.8.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/searchfield/-/searchfield-3.8.8.tgz", + "integrity": "sha512-HR0lQNNzjNyi12bEJ39U/rASZpQuHIpUq9A3DzarRMARrHLmidHzH4F7zu9I4k3GTFm/mL+j2q44EJIP2GqtQQ==", + "dependencies": { + "@react-aria/searchfield": "^3.7.7", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/textfield": "^3.12.3", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/searchfield": "^3.5.5", + "@react-types/searchfield": "^3.5.7", + "@react-types/textfield": "^3.9.5", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/slider": { - "version": "3.6.9", - "resolved": "https://registry.npmjs.org/@react-spectrum/slider/-/slider-3.6.9.tgz", - "integrity": "sha512-2X6qxlyObfowb8uZQ8UXEozozcfGLzhQI9BS9DS9Kste/REXMTcRDzFygP1D1HdkvRaWmYRNoYhi/Jl2Kkw7Eg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/slider": "^3.7.8", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/slider": "^3.5.4", - "@react-types/shared": "^3.23.1", - "@react-types/slider": "^3.7.3", + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/@react-spectrum/slider/-/slider-3.6.11.tgz", + "integrity": "sha512-Rz8yzQKZTO+PBjnEwRCd+dxIMo/A7Qsj1Vs3sVowSlmLeq6qHeLajdTbe2SN95pUC/b6n+tkNxMyy2bzsW2VlQ==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/slider": "^3.7.10", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/slider": "^3.5.6", + "@react-types/shared": "^3.24.1", + "@react-types/slider": "^3.7.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/statuslight": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@react-spectrum/statuslight/-/statuslight-3.5.13.tgz", - "integrity": "sha512-FvvsDVs9lapRf5zmOq3g8ZRpAxOTVRfhG9WyehIqgaRPtqqNpQhAGSXWz0ErXF3zV8AwVvjD70g0atcDCoDeBQ==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", - "@react-types/statuslight": "^3.3.9", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@react-spectrum/statuslight/-/statuslight-3.5.15.tgz", + "integrity": "sha512-gTv4HvnJNcNBTJs3Xw6ki984A7Z58CE2jlKEJ9+PrOJY+cckjeocfWR1XqQsJHCaNuGC9LYhzuJsqsPnqxFNZA==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", + "@react-types/statuslight": "^3.3.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/switch": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/switch/-/switch-3.5.5.tgz", - "integrity": "sha512-IIVctsGXnChqMlvf2/pMRkI84vyjf0gMsBXEgky8h8s4i91wxQvl6800/4I9rCSQdAAnQYb+Nd3St8Ik7BupQg==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/switch": "^3.6.4", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/toggle": "^3.7.4", - "@react-types/shared": "^3.23.1", - "@react-types/switch": "^3.5.3", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-spectrum/switch/-/switch-3.5.7.tgz", + "integrity": "sha512-tXkUadG3VeCGskROYUdFjYNSsQ9G1D72hCG7LoXusIUqYzvNz3xlm3TSP1LOF/lq+WGhPxhhV5LkA1HqN+ZeeA==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/switch": "^3.6.6", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/toggle": "^3.7.6", + "@react-types/shared": "^3.24.1", + "@react-types/switch": "^3.5.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/table": { - "version": "3.12.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/table/-/table-3.12.10.tgz", - "integrity": "sha512-a9Qa/1uuoChRez6GncmYdkDgSS4MDXzV4Cl/BrO44Dnph1ygXiJGmBgAvmtevcbndfuERGHoIYqzklIr6veArg==", - "dependencies": { - "@react-aria/button": "^3.9.5", - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/overlays": "^3.22.1", - "@react-aria/table": "^3.14.1", - "@react-aria/utils": "^3.24.1", - "@react-aria/virtualizer": "^3.10.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-spectrum/checkbox": "^3.9.6", - "@react-spectrum/dnd": "^3.3.10", - "@react-spectrum/layout": "^3.6.5", - "@react-spectrum/menu": "^3.19.1", - "@react-spectrum/progress": "^3.7.7", - "@react-spectrum/tooltip": "^3.6.7", - "@react-spectrum/utils": "^3.11.7", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@react-spectrum/table/-/table-3.13.1.tgz", + "integrity": "sha512-CnxgizMey9sdAL3iyMCX0BGim+USgeKtss8ZIzWIhGmrUBpoQy32ZedXpcN7UwBIScWYo1b44fyNxw6z44K6Dw==", + "dependencies": { + "@react-aria/button": "^3.9.7", + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/table": "^3.15.1", + "@react-aria/utils": "^3.25.1", + "@react-aria/virtualizer": "^4.0.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-spectrum/checkbox": "^3.9.8", + "@react-spectrum/dnd": "^3.4.1", + "@react-spectrum/layout": "^3.6.7", + "@react-spectrum/menu": "^3.20.1", + "@react-spectrum/progress": "^3.7.9", + "@react-spectrum/tooltip": "^3.6.9", + "@react-spectrum/utils": "^3.11.9", "@react-stately/flags": "^3.0.3", - "@react-stately/layout": "^3.13.9", - "@react-stately/table": "^3.11.8", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", - "@spectrum-icons/ui": "^3.6.7", + "@react-stately/layout": "^4.0.1", + "@react-stately/table": "^3.12.1", + "@react-stately/virtualizer": "^4.0.1", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/tabs": { - "version": "3.8.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/tabs/-/tabs-3.8.10.tgz", - "integrity": "sha512-LoNkxalAbOjKgbF/x3NU5zhvhUgAEqJvEwzKLVSr+KDQlMAFe9LZ+HOH2NRiWR8ak9BkW3RR6C8cGo7G7fdrfA==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/tabs": "^3.9.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/picker": "^3.14.5", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/list": "^3.10.5", - "@react-stately/tabs": "^3.6.6", - "@react-types/select": "^3.9.4", - "@react-types/shared": "^3.23.1", - "@react-types/tabs": "^3.3.7", + "version": "3.8.12", + "resolved": "https://registry.npmjs.org/@react-spectrum/tabs/-/tabs-3.8.12.tgz", + "integrity": "sha512-tvHEzV5Web6D98vLNbWVwrGGNKx/n6NeuYB6QX88lA8Pp0M9XCuQ6S6548Zk/eUHS0eExi60yX+AcPn1mZTtNQ==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/tabs": "^3.9.3", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/picker": "^3.15.1", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/list": "^3.10.7", + "@react-stately/tabs": "^3.6.8", + "@react-types/select": "^3.9.6", + "@react-types/shared": "^3.24.1", + "@react-types/tabs": "^3.3.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/tag": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@react-spectrum/tag/-/tag-3.2.6.tgz", - "integrity": "sha512-OSGIL2fYLMmiPRCEGvdrQVazS6/S0nhzf/FO52pAAjDZHkd4RDlHHY00Yv/2GPJKroa4e5jdyd5NHCxlW5Vbaw==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/selection": "^3.18.1", - "@react-aria/tag": "^3.4.1", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/button": "^3.16.4", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/text": "^3.5.5", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/collections": "^3.10.7", - "@react-stately/list": "^3.10.5", - "@react-types/shared": "^3.23.1", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@react-spectrum/tag/-/tag-3.2.8.tgz", + "integrity": "sha512-cZO745mdjwoSvEoBjWTREdZiOshuGq8jm+1XuO6eWGcxCsktU6ToPjz7wrmHi6kE4fuhXj/UxcyA+8IXSL1mhw==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/selection": "^3.19.1", + "@react-aria/tag": "^3.4.3", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/button": "^3.16.6", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/text": "^3.5.7", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/collections": "^3.10.9", + "@react-stately/list": "^3.10.7", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/text": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@react-spectrum/text/-/text-3.5.5.tgz", - "integrity": "sha512-MSRMUNWjuqjAH0eRjSw0fOCvM7haqgfy3HgwHpB5czpeUtR1p22e+UWA9gHior7S57zrQN1WotpeWZ1AmnzvWg==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", - "@react-types/text": "^3.3.9", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-spectrum/text/-/text-3.5.7.tgz", + "integrity": "sha512-Tvnto3UrWEc4iBiKYAFH9X6GzLwwzy4uWxRaPiZ3uu+I+JCd/Sz+mjdk5lOLtpPA78xtPkHO/I/iGijk4ag6mg==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", + "@react-types/text": "^3.3.11", "@swc/helpers": "^0.5.0", - "react-aria-components": "^1.2.1" + "react-aria-components": "^1.3.1" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/textfield": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/@react-spectrum/textfield/-/textfield-3.12.1.tgz", - "integrity": "sha512-ehvStKrduGo71SfEieodw6NHBDvyE5wYYZh1uLwbde9hjfyOf2q56lfMdSQiBSJ5pDnpS0ToLpoomoPz315u+Q==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/textfield": "^3.14.5", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/form": "^3.7.6", - "@react-spectrum/label": "^3.16.6", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", - "@react-types/textfield": "^3.9.3", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.12.3", + "resolved": "https://registry.npmjs.org/@react-spectrum/textfield/-/textfield-3.12.3.tgz", + "integrity": "sha512-1NUTA/Wo8cPLmKcQymgzVBd37Q1mLf358stV4MxLqKjnPT+rGHBTflhV1cmRpLbWdXYnyPSEXyZx12YXctauKg==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/textfield": "^3.14.7", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/form": "^3.7.8", + "@react-spectrum/label": "^3.16.8", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@react-types/textfield": "^3.9.5", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/theme-dark": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/theme-dark/-/theme-dark-3.5.10.tgz", - "integrity": "sha512-xDzuWY9Vtd0X7Ww5fBvhbTq7oM0PiNtKlT+cPVnKm4YmJB5RvVG/m6jYF4/9GN36NAyiRnNRdBCs7SUuKEfTkA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-spectrum/theme-dark/-/theme-dark-3.5.12.tgz", + "integrity": "sha512-WLicILM0CDx3peenTZC9JQ7uhmZee2IiQtYMjYXGzCzHD3WG+X6OodpXG0VgtzHhb8lmtbzwxvGGPJlCPJIzqw==", "dependencies": { - "@react-types/provider": "^3.8.1", + "@react-types/provider": "^3.8.3", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/theme-default": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/theme-default/-/theme-default-3.5.10.tgz", - "integrity": "sha512-qCGce11d5p0Ce4nSz25vRYoMZycb8oxbgMUM9YXXHgUBDbRRB/s0JNUXxlyikENtaNWiCyeWzVm80bJKmmIijw==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-spectrum/theme-default/-/theme-default-3.5.12.tgz", + "integrity": "sha512-bGtwv0NirmYIC4/4Tkkikn7yqKMITY8VKGEY8105EpiDZX+/8tr4dwypWi/EE0OMF8kTCW61zu5aScrNUQfGew==", "dependencies": { - "@react-types/provider": "^3.8.1", + "@react-types/provider": "^3.8.3", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/theme-light": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/theme-light/-/theme-light-3.4.10.tgz", - "integrity": "sha512-MKHxBlfawja16hBlcBTFD72B+luPwhCG/pTY35WMy+gCVWUeYEwJU8ijOhG7A7a7KkrLpHgebpHojxEXYkmFIA==", + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/@react-spectrum/theme-light/-/theme-light-3.4.12.tgz", + "integrity": "sha512-KrWYTQFcuKayEIJCdMA5z0Kbd2l4oeT72QSaqV+h2Hi7mnjxM7R16GZgF3swAJOvWEMSqhLLCzr/6P0prRmVmQ==", "dependencies": { - "@react-types/provider": "^3.8.1", + "@react-types/provider": "^3.8.3", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/tooltip": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/@react-spectrum/tooltip/-/tooltip-3.6.7.tgz", - "integrity": "sha512-kJDFY7G5MGuKc5e4K24ftYbzFLt9ugO5zbGMAg6Zbz79+ER8jTsbGNVupK3E7m9uSimF/aPRRwf2p8UdoksH6Q==", - "dependencies": { - "@react-aria/focus": "^3.17.1", - "@react-aria/overlays": "^3.22.1", - "@react-aria/tooltip": "^3.7.4", - "@react-aria/utils": "^3.24.1", - "@react-spectrum/overlays": "^5.6.1", - "@react-spectrum/utils": "^3.11.7", - "@react-stately/tooltip": "^3.4.9", - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1", - "@react-types/tooltip": "^3.4.9", - "@spectrum-icons/ui": "^3.6.7", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-spectrum/tooltip/-/tooltip-3.6.9.tgz", + "integrity": "sha512-AVWowYE43ZyOh2tck5TKs7a5a6RaAefeRPiqLpBo8W64TwP07WZgRtUJjLSFrt1AIVwfRyjOiwBiG/Ur896Zfw==", + "dependencies": { + "@react-aria/focus": "^3.18.1", + "@react-aria/overlays": "^3.23.1", + "@react-aria/tooltip": "^3.7.6", + "@react-aria/utils": "^3.25.1", + "@react-spectrum/overlays": "^5.6.3", + "@react-spectrum/utils": "^3.11.9", + "@react-stately/tooltip": "^3.4.11", + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1", + "@react-types/tooltip": "^3.4.11", + "@spectrum-icons/ui": "^3.6.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/utils": { - "version": "3.11.7", - "resolved": "https://registry.npmjs.org/@react-spectrum/utils/-/utils-3.11.7.tgz", - "integrity": "sha512-o/9zTvUor0EaRwKZWVlgOcyvH+/JIBsNxuvhDgCP5lD868KoZePmx1L64TejUqK/swwH8jr35gyULpYU2kQXRw==", - "dependencies": { - "@react-aria/i18n": "^3.11.1", - "@react-aria/ssr": "^3.9.4", - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "version": "3.11.9", + "resolved": "https://registry.npmjs.org/@react-spectrum/utils/-/utils-3.11.9.tgz", + "integrity": "sha512-k+0dwCflYejSix7FaRMp63ptgs/nc9ndOVa1qJVI/VGK+P9alZmqMXUhIztClLCcyFjJrd9O2YIaAEsBCkBNRw==", + "dependencies": { + "@react-aria/i18n": "^3.12.1", + "@react-aria/ssr": "^3.9.5", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0", "clsx": "^2.0.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/view": { - "version": "3.6.10", - "resolved": "https://registry.npmjs.org/@react-spectrum/view/-/view-3.6.10.tgz", - "integrity": "sha512-AbvwyORDzntt9XiP9Soc5mCuYsYOJKj+4mwX0ugZZi9I18g1JVeSPnGG/myYdHr2xXNC00pgVILOLA/B0JWMXw==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", - "@react-types/view": "^3.4.9", + "version": "3.6.12", + "resolved": "https://registry.npmjs.org/@react-spectrum/view/-/view-3.6.12.tgz", + "integrity": "sha512-zcmeEuOUDC+fGPTyuDZWouFFMm8/58RaHJtSIvrzSCixV3RAfGeWwi6tRCDjSQuYgDBjNvxUMCbYP88CO2FULw==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", + "@react-types/view": "^3.4.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spectrum/well": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/@react-spectrum/well/-/well-3.4.13.tgz", - "integrity": "sha512-zKJsaWnndRvCK4crkZ/Jt5uUk5Jwkx+pRaVu40BEK41aOfavQ44GR90uLogrvDuw2LDZ9mdTj/H7bCVNjkLkgA==", - "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-spectrum/utils": "^3.11.7", - "@react-types/shared": "^3.23.1", - "@react-types/well": "^3.3.9", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@react-spectrum/well/-/well-3.4.15.tgz", + "integrity": "sha512-bzSIZAtXjHaLzcENYracSDabjQgU1KJAXofQ/YwBqZwMDVsokG+kvR+bfGfW05tldgZH5/7Am9D/pIcSW4qBUQ==", + "dependencies": { + "@react-aria/utils": "^3.25.1", + "@react-spectrum/utils": "^3.11.9", + "@react-types/shared": "^3.24.1", + "@react-types/well": "^3.3.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-spring/animated": { @@ -6184,127 +6188,127 @@ } }, "node_modules/@react-stately/calendar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.1.tgz", - "integrity": "sha512-7l7QhqGUJ5AzWHfvZzbTe3J4t72Ht5BmhW4hlVI7flQXtfrmYkVtl3ZdytEZkkHmWGYZRW9b4IQTQGZxhtlElA==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.3.tgz", + "integrity": "sha512-SRwsgszyc9FNcvkjqBe81e/tnjKpRqH+yTYpG0uI9NR1HfyddmhR3Y7QilWPcqQkq4SQb7pL68SkTPH2dX2dng==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-stately/utils": "^3.10.1", - "@react-types/calendar": "^3.4.6", - "@react-types/shared": "^3.23.1", + "@internationalized/date": "^3.5.5", + "@react-stately/utils": "^3.10.2", + "@react-types/calendar": "^3.4.8", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/checkbox": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.5.tgz", - "integrity": "sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg==", - "dependencies": { - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/checkbox": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.7.tgz", + "integrity": "sha512-ZOaBNXXazpwkuKj5hk6FtGbXO7HoKEGXvf3p7FcHcIHyiEJ65GBvC7e7HwMc3jYxlBwtbebSpEcf3oFqI5dl3A==", + "dependencies": { + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.2", + "@react-types/checkbox": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/collections": { - "version": "3.10.7", - "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.7.tgz", - "integrity": "sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA==", + "version": "3.10.9", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.9.tgz", + "integrity": "sha512-plyrng6hOQMG8LrjArMA6ts/DgWyXln3g90/hFNbqe/hdVYF53sDVsj8Jb+5LtoYTpiAlV6eOvy1XR0vPZUf8w==", "dependencies": { - "@react-types/shared": "^3.23.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/color": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.6.1.tgz", - "integrity": "sha512-iW0nAhl3+fUBegHMw5EcAbFVDpgwHBrivfC85pVoTM3pyzp66hqNN6R6xWxW6ETyljS8UOer59+/w4GDVGdPig==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-stately/color/-/color-3.7.1.tgz", + "integrity": "sha512-pJqM7fZ7+zy8wnzCUkBMkTgmjMs+lBLjQm1k+dFbmXK2SuELiDOQLirrl6j15NVBOKn8avvRHXpAQhGX43GOCQ==", "dependencies": { "@internationalized/number": "^3.5.3", "@internationalized/string": "^3.2.3", - "@react-aria/i18n": "^3.11.1", - "@react-stately/form": "^3.0.3", - "@react-stately/numberfield": "^3.9.3", - "@react-stately/slider": "^3.5.4", - "@react-stately/utils": "^3.10.1", - "@react-types/color": "3.0.0-beta.25", - "@react-types/shared": "^3.23.1", + "@react-aria/i18n": "^3.12.1", + "@react-stately/form": "^3.0.5", + "@react-stately/numberfield": "^3.9.5", + "@react-stately/slider": "^3.5.6", + "@react-stately/utils": "^3.10.2", + "@react-types/color": "3.0.0-rc.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/combobox": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.8.4.tgz", - "integrity": "sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/form": "^3.0.3", - "@react-stately/list": "^3.10.5", - "@react-stately/overlays": "^3.6.7", - "@react-stately/select": "^3.6.4", - "@react-stately/utils": "^3.10.1", - "@react-types/combobox": "^3.11.1", - "@react-types/shared": "^3.23.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.9.1.tgz", + "integrity": "sha512-jmeKUKs0jK18NwDAlpu79ATufgxrc6Sn3ZMmI8KPVQ5sdPTjNlnDx6gTFyOOIa87axf/c6WYU7v3jxmcp+RDdg==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/form": "^3.0.5", + "@react-stately/list": "^3.10.7", + "@react-stately/overlays": "^3.6.9", + "@react-stately/select": "^3.6.6", + "@react-stately/utils": "^3.10.2", + "@react-types/combobox": "^3.12.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/data": { - "version": "3.11.4", - "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.4.tgz", - "integrity": "sha512-PbnUQxeE6AznSuEWYnRmrYQ9t5z1Asx98Jtrl96EeA6Iapt9kOjTN9ySqCxtPxMKleb1NIqG3+uHU3veIqmLsg==", + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.11.6.tgz", + "integrity": "sha512-S8q1Ejuhijl8SnyVOdDNFrMrWWnLk/Oh1ZT3KHSbTdpfMRtvhi5HukoiP06jlzz75phnpSPQL40npDtUB/kk3Q==", "dependencies": { - "@react-types/shared": "^3.23.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/datepicker": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.9.4.tgz", - "integrity": "sha512-yBdX01jn6gq4NIVvHIqdjBUPo+WN8Bujc4OnPw+ZnfA4jI0eIgq04pfZ84cp1LVXW0IB0VaCu1AlQ/kvtZjfGA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.10.1.tgz", + "integrity": "sha512-KXr5cxLOLUYBf3wlDSKhvshsKOWpdV2flhS075V6dgC/EPBh7igBZGUXJ9AZzndT7Hx1w8v/ul6CIffxEJz1Nw==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/string": "^3.2.3", - "@react-stately/form": "^3.0.3", - "@react-stately/overlays": "^3.6.7", - "@react-stately/utils": "^3.10.1", - "@react-types/datepicker": "^3.7.4", - "@react-types/shared": "^3.23.1", + "@react-stately/form": "^3.0.5", + "@react-stately/overlays": "^3.6.9", + "@react-stately/utils": "^3.10.2", + "@react-types/datepicker": "^3.8.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/dnd": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.3.1.tgz", - "integrity": "sha512-I/Ci5xB8hSgAXzoWYWScfMM9UK1MX/eTlARBhiSlfudewweOtNJAI+cXJgU7uiUnGjh4B4v3qDBtlAH1dWDCsw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-stately/dnd/-/dnd-3.4.1.tgz", + "integrity": "sha512-EXPW1vKx3vNpMaXOpPKTOU1T4S+jqjllGFDyWD659Ql0lL9SQ5Y4IU/KmIK3T3yKkjps9xrMmCjLAkb75PH5zg==", "dependencies": { - "@react-stately/selection": "^3.15.1", - "@react-types/shared": "^3.23.1", + "@react-stately/selection": "^3.16.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/flags": { @@ -6316,756 +6320,756 @@ } }, "node_modules/@react-stately/form": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.3.tgz", - "integrity": "sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.5.tgz", + "integrity": "sha512-J3plwJ63HQz109OdmaTqTA8Qhvl3gcYYK7DtgKyNP6mc/Me2Q4tl2avkWoA+22NRuv5m+J8TpBk4AVHUEOwqeQ==", "dependencies": { - "@react-types/shared": "^3.23.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/grid": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.8.7.tgz", - "integrity": "sha512-he3TXCLAhF5C5z1/G4ySzcwyt7PEiWcVIupxebJQqRyFrNWemSuv+7tolnStmG8maMVIyV3P/3j4eRBbdSlOIg==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/selection": "^3.15.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.9.1.tgz", + "integrity": "sha512-LSVIcXO/cqwG0IgDSk2juDbpARBS1IzGnsTp/8vSOejMxq5MXrwxL5hUcqNczL8Ss6aLpELm42tCS0kPm3cMKw==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.1", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/layout": { - "version": "3.13.9", - "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-3.13.9.tgz", - "integrity": "sha512-JCj2cnvRbBjah9LFZbBXMdKkoKuEpzn6hvYBw7h0fNIhNGISpiI1TW4ya1X34kD2vcv/3dc31KV/UqmI4hJCQw==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/table": "^3.11.8", - "@react-stately/virtualizer": "^3.7.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-stately/layout/-/layout-4.0.1.tgz", + "integrity": "sha512-4oNYFhQprcwP1fNV/p3dbx1a6lzMGBAKLTdcvtCuBCgclNA3etqjdQAUIZ0Bpq+Z8i9qo3c85oxr6Tr8BKQV4w==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/table": "^3.12.1", + "@react-stately/virtualizer": "^4.0.1", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/list": { - "version": "3.10.5", - "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.5.tgz", - "integrity": "sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA==", - "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.7.tgz", + "integrity": "sha512-W5PG7uG5GQV2Q59vXJE7QLKHZIoUNEx+JmHrBUCMKUgyngSpKIIEDR/R/C1b6ZJ9jMqqZA68Zlnd5iK1/mBi1A==", + "dependencies": { + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.1", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/menu": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.7.1.tgz", - "integrity": "sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.8.1.tgz", + "integrity": "sha512-HzAANHg+QUpyRok0CBIL/5qb+4TARteP0q9av2tKnQWPG91iJw84phJDJrmmY55uFFax4fxBgDM9dy1t12iKgQ==", "dependencies": { - "@react-stately/overlays": "^3.6.7", - "@react-types/menu": "^3.9.9", - "@react-types/shared": "^3.23.1", + "@react-stately/overlays": "^3.6.9", + "@react-types/menu": "^3.9.11", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/numberfield": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.3.tgz", - "integrity": "sha512-UlPTLSabhLEuHtgzM0PgfhtEaHy3yttbzcRb8yHNvGo4KbCHeHpTHd3QghKfTFm024Mug7+mVlWCmMtW0f5ttg==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.9.5.tgz", + "integrity": "sha512-aWilyzrZOvkgntcXd6Kl+t1QiCbnajUCN8yll6/saByKpfuOf1k6AGYNQBJ0CO/5HyffPPdbFs+45sj4e3cdjA==", "dependencies": { "@internationalized/number": "^3.5.3", - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/numberfield": "^3.8.3", + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.2", + "@react-types/numberfield": "^3.8.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/overlays": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.7.tgz", - "integrity": "sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.9.tgz", + "integrity": "sha512-4chfyzKw7P2UEainm0yzjUgYwG1ovBejN88eTrn+O62x5huuMCwe0cbMxmYh4y7IhRFSee3jIJd0SP0u/+i39w==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/overlays": "^3.8.7", + "@react-stately/utils": "^3.10.2", + "@react-types/overlays": "^3.8.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/radio": { - "version": "3.10.4", - "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.4.tgz", - "integrity": "sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ==", - "dependencies": { - "@react-stately/form": "^3.0.3", - "@react-stately/utils": "^3.10.1", - "@react-types/radio": "^3.8.1", - "@react-types/shared": "^3.23.1", + "version": "3.10.6", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.6.tgz", + "integrity": "sha512-wiJuUUQ6LuEv0J1DQtkC0+Sed7tO6y3sIPeB+5uIxIIsUpxvNlDcqr+JOkrQm7gZmkmvcfotb5Gv5PqaIl1zKA==", + "dependencies": { + "@react-stately/form": "^3.0.5", + "@react-stately/utils": "^3.10.2", + "@react-types/radio": "^3.8.3", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/searchfield": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.3.tgz", - "integrity": "sha512-H0OvlgwPIFdc471ypw79MDjz3WXaVq9+THaY6JM4DIohEJNN5Dwei7O9g6r6m/GqPXJIn5TT3b74kJ2Osc00YQ==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.5.5.tgz", + "integrity": "sha512-rKWIVNbxft5eGGxQ4CtcTKGXm2B1AuYSg6kLRQLq+VYspPNq3wfeMtVBeIdy4LNjWXsTmzs2b3o+zkFYdPqPPw==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/searchfield": "^3.5.5", + "@react-stately/utils": "^3.10.2", + "@react-types/searchfield": "^3.5.7", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/select": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.4.tgz", - "integrity": "sha512-whZgF1N53D0/dS8tOFdrswB0alsk5Q5620HC3z+5f2Hpi8gwgAZ8TYa+2IcmMYRiT+bxVuvEc/NirU9yPmqGbA==", - "dependencies": { - "@react-stately/form": "^3.0.3", - "@react-stately/list": "^3.10.5", - "@react-stately/overlays": "^3.6.7", - "@react-types/select": "^3.9.4", - "@react-types/shared": "^3.23.1", + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.6.tgz", + "integrity": "sha512-JEpBosWNSXRexE/iReATei1EiVdTIwOWlLcCGw6K7oC/5/f+OHMsh2Kkt/c/RzM/to3vgR+Wbbqwrb712AWgYQ==", + "dependencies": { + "@react-stately/form": "^3.0.5", + "@react-stately/list": "^3.10.7", + "@react-stately/overlays": "^3.6.9", + "@react-types/select": "^3.9.6", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/selection": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.15.1.tgz", - "integrity": "sha512-6TQnN9L0UY9w19B7xzb1P6mbUVBtW840Cw1SjgNXCB3NPaCf59SwqClYzoj8O2ZFzMe8F/nUJtfU1NS65/OLlw==", + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.16.1.tgz", + "integrity": "sha512-qmnmYaXY7IhhzmIiInec1a/yPxlPSBHka6vrWddvt0S6zN7FU5cv6sm69ONUwYwLKSoaNHgOGvZhmsTzyV0O2A==", "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/slider": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.4.tgz", - "integrity": "sha512-Jsf7K17dr93lkNKL9ij8HUcoM1sPbq8TvmibD6DhrK9If2lje+OOL8y4n4qreUnfMT56HCAeS9wCO3fg3eMyrw==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.6.tgz", + "integrity": "sha512-a7DZgpOVjQyGzMLPiVRCVHISPJX8E3bT+qbZpcRQN+F7T7wReOwUt2I8gQMosnnCGWgU6kdYk8snn0obXe70Fg==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", - "@react-types/slider": "^3.7.3", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", + "@react-types/slider": "^3.7.5", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/table": { - "version": "3.11.8", - "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.11.8.tgz", - "integrity": "sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.12.1.tgz", + "integrity": "sha512-Cg3lXrWJNrYkD1gqRclMxq0GGiR+ygxdeAqk2jbbsmHU8RSQuzoO/RtUCw6WAKfQjAq4gE0E60TlAsGgCUdJGA==", "dependencies": { - "@react-stately/collections": "^3.10.7", + "@react-stately/collections": "^3.10.9", "@react-stately/flags": "^3.0.3", - "@react-stately/grid": "^3.8.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/utils": "^3.10.1", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", + "@react-stately/grid": "^3.9.1", + "@react-stately/selection": "^3.16.1", + "@react-stately/utils": "^3.10.2", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/tabs": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.6.tgz", - "integrity": "sha512-sOLxorH2uqjAA+v1ppkMCc2YyjgqvSGeBDgtR/lyPSDd4CVMoTExszROX2dqG0c8il9RQvzFuufUtQWMY6PgSA==", + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.8.tgz", + "integrity": "sha512-pLRwnMmXk/IWvbIJYSO5hm3/PiJ/VzrQlwKr6dlOcrDOSVIZpTjnGWHd6mJSDoPiDyBThlN/k3+2pUFMEOAcfw==", "dependencies": { - "@react-stately/list": "^3.10.5", - "@react-types/shared": "^3.23.1", - "@react-types/tabs": "^3.3.7", + "@react-stately/list": "^3.10.7", + "@react-types/shared": "^3.24.1", + "@react-types/tabs": "^3.3.9", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/toggle": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.4.tgz", - "integrity": "sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA==", + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.6.tgz", + "integrity": "sha512-xRZyrjNVu1VCd1xpg5RwmNYs9fXb+JHChoUaRcBmGCCjsPD0R5uR3iNuE17RXJtWS3/8o9IJVn90+/7NW7boOg==", "dependencies": { - "@react-stately/utils": "^3.10.1", - "@react-types/checkbox": "^3.8.1", + "@react-stately/utils": "^3.10.2", + "@react-types/checkbox": "^3.8.3", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/tooltip": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.9.tgz", - "integrity": "sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA==", + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.11.tgz", + "integrity": "sha512-r1ScIXau2LZ/lUUBQ5PI01S2TB2urF2zrPzNM2xgngFLlG2uTyfIgMga6/035quQQKd3Bd0qGigMvTgZ3GRGEg==", "dependencies": { - "@react-stately/overlays": "^3.6.7", - "@react-types/tooltip": "^3.4.9", + "@react-stately/overlays": "^3.6.9", + "@react-types/tooltip": "^3.4.11", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/tree": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.1.tgz", - "integrity": "sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.3.tgz", + "integrity": "sha512-9sRQOxkK7ZMdtSTGHx0sMabHC39PEM4tMl+IdJKkmcp60bfsm3p6LHXhha3E58jwnZaemBfUrlQmTP/E26BbGw==", "dependencies": { - "@react-stately/collections": "^3.10.7", - "@react-stately/selection": "^3.15.1", - "@react-stately/utils": "^3.10.1", - "@react-types/shared": "^3.23.1", + "@react-stately/collections": "^3.10.9", + "@react-stately/selection": "^3.16.1", + "@react-stately/utils": "^3.10.2", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz", - "integrity": "sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.2.tgz", + "integrity": "sha512-fh6OTQtbeQC0ywp6LJuuKs6tKIgFvt/DlIZEcIpGho6/oZG229UnIk6TUekwxnDbumuYyan6D9EgUtEMmT8UIg==", "dependencies": { "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-stately/virtualizer": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz", - "integrity": "sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-4.0.1.tgz", + "integrity": "sha512-HCje3SlLItQFAiBHH4JZhz74mMCe2g+Q8woJa6kdKlvFqsNdmhtFHuuIr1uW6LWj76j2N0Xaa8Z7fV1f5ovX0Q==", "dependencies": { - "@react-aria/utils": "^3.24.1", - "@react-types/shared": "^3.23.1", + "@react-aria/utils": "^3.25.1", + "@react-types/shared": "^3.24.1", "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/actionbar": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@react-types/actionbar/-/actionbar-3.1.7.tgz", - "integrity": "sha512-yohxM+R9o/HGADL7NdTH9tC9BnWrVYKsutobjWzVQZHGoaHEqBbz03dk3m9UvFMnw7g6kjtGxhOJQpztz7nk3Q==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@react-types/actionbar/-/actionbar-3.1.9.tgz", + "integrity": "sha512-omCribEByWYcDr27W63LpmFq+muACc949UzCcMzlc6fvkKc6Gq+HjRRoTQjX6k8hXXFqEbQoYJFVyRXnig6u5g==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/actiongroup": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-types/actiongroup/-/actiongroup-3.4.9.tgz", - "integrity": "sha512-n6lGBLm8HxLguG4om5ysMCexSdMWNhM5L0yGjA4pZxdoKZborPALDN/Ao57svnTwaSJmeExvTwHIFds1yr4AXQ==", + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-types/actiongroup/-/actiongroup-3.4.11.tgz", + "integrity": "sha512-gO/A+nbPoDwovqWlEyILNlfBY1loXFR0+P7OzH+vqppCHFz+Y2dF6Ry2LqUAmE0XPaYLzwg4Y/Nkuc20jIVujQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/avatar": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@react-types/avatar/-/avatar-3.0.7.tgz", - "integrity": "sha512-FXws1/o0Vy3yJcBDdKYPElNzpcVjdkck6KHGQyxAkKe7vvtFUcHpzz9fxEO5kRLwTv6j7EahXsJeqsH9TpFWuA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@react-types/avatar/-/avatar-3.0.9.tgz", + "integrity": "sha512-lvzL0DHUaZxLXci9PbtnSWxO/vrcqyPm5KBq3DwiJ/FreAQZjbk7SfOO8we9mPXbe+XePexK/x9n90BtGMKdLw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/badge": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@react-types/badge/-/badge-3.1.9.tgz", - "integrity": "sha512-GNvg3cULRiUxXZYmOOIaua0KSL72jnLwv/2LLbQeYQystLaEmsibmdoRvfQN80mEQ1f3WFfhZogiG31+4MS/xg==", + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@react-types/badge/-/badge-3.1.11.tgz", + "integrity": "sha512-ToIZOT5xRAHqZ9H9v8UkcC+Gds4dKmmIAMb7+aWXGCKIuRlV4wLD1WZJBS9gQlv+WlwvIOEVOgtwktpTrZJW0Q==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/breadcrumbs": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz", - "integrity": "sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.7.tgz", + "integrity": "sha512-ZmhXwD2LLzfEA2OvOCp/QvXu8A/Edsrn5q0qUDGsmOZj9SCVeT82bIv8P+mQnATM13mi2gyoik6102Jc1OscJA==", "dependencies": { - "@react-types/link": "^3.5.5", - "@react-types/shared": "^3.23.1" + "@react-types/link": "^3.5.7", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/button": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.4.tgz", - "integrity": "sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.6.tgz", + "integrity": "sha512-8lA+D5JLbNyQikf8M/cPP2cji91aVTcqjrGpDqI7sQnaLFikM8eFR6l1ZWGtZS5MCcbfooko77ha35SYplSQvw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/buttongroup": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@react-types/buttongroup/-/buttongroup-3.3.9.tgz", - "integrity": "sha512-3hEWI/GOsY8Z3db8gjEXbxl+6E0ioBNMxfN8jIeiNnSWSDG56MLNArJLowylPrwlrp5SnxLh1WBj44OHqEE3Tg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@react-types/buttongroup/-/buttongroup-3.3.11.tgz", + "integrity": "sha512-29F+GYWdbjuheDZVW9xhju03CQVK401i0DPH7TGqnlNZqteqF/aHqwxRyFT8490ad7og3ZuvXywTBQCwIfbh9Q==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/calendar": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.6.tgz", - "integrity": "sha512-WSntZPwtvsIYWvBQRAPvuCn55UTJBZroTvX0vQvWykJRQnPAI20G1hMQ3dNsnAL+gLZUYxBXn66vphmjUuSYew==", + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.8.tgz", + "integrity": "sha512-KVampt/X4uJvWU0TsxIdgPdXIAUClGtxcDWHzuFRJ7YUYkA4rH8Lad0kQ1mVehnwOLpuba8j9GCYKorkbln0gw==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-types/shared": "^3.23.1" + "@internationalized/date": "^3.5.5", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/checkbox": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.1.tgz", - "integrity": "sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.3.tgz", + "integrity": "sha512-f4c1mnLEt0iS1NMkyZXgT3q3AgcxzDk7w6MSONOKydcnh0xG5L2oefY14DhVDLkAuQS7jThlUFwiAs+MxiO3MA==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/color": { - "version": "3.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.0-beta.25.tgz", - "integrity": "sha512-D24ASvLeSWouBwOBi4ftUe4/BhrZj5AiHV7tXwrVeMGOy9Z9jyeK65Xysq+R3ecaSONLXsgai5CQMvj13cOacA==", + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@react-types/color/-/color-3.0.0-rc.1.tgz", + "integrity": "sha512-aw6FzrBlZTWKrFaFskM7e3AFICe6JqH10wO0E919goa3LZDDFbyYEwRpatwjIyiZH1elEUkFPgwqpv3ZcPPn8g==", "dependencies": { - "@react-types/shared": "^3.23.1", - "@react-types/slider": "^3.7.3" + "@react-types/shared": "^3.24.1", + "@react-types/slider": "^3.7.5" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/combobox": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.11.1.tgz", - "integrity": "sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.12.1.tgz", + "integrity": "sha512-bd5YwHZWtgnJx4jGbplWbYzXj7IbO5w3IY5suNR7r891rx6IktquZ8GQwyYH0pQ/x+X5LdK2xI59i6+QC2PmlA==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/contextualhelp": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/@react-types/contextualhelp/-/contextualhelp-3.2.10.tgz", - "integrity": "sha512-x4rODNQfAO2YeVumkztTsUieOt4z7OXolZY7BLJgT1qonfPwJGLqf+KUayqXuX9l2CHakcGYDGaUxTUvwINQdw==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@react-types/contextualhelp/-/contextualhelp-3.2.12.tgz", + "integrity": "sha512-5PwE2tajqVYzjatdvux6dpGb8trmqGBDp04nuTn010U+HZhxylAe12iU0/Lz+0M7dWpBlVfusE42TLvZdD5VzA==", "dependencies": { - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/datepicker": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.7.4.tgz", - "integrity": "sha512-ZfvgscvNzBJpYyVWg3nstJtA/VlWLwErwSkd1ivZYam859N30w8yH+4qoYLa6FzWLCFlrsRHyvtxlEM7lUAt5A==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.8.1.tgz", + "integrity": "sha512-ZpxHHVT3rmZ4YsYP4TWCZSMSfOUm+067mZyyGLmvHxg55eYmctiB4uMgrRCqDoeiSiOjtxad0VtpPjf6ftK1GQ==", "dependencies": { - "@internationalized/date": "^3.5.4", - "@react-types/calendar": "^3.4.6", - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@internationalized/date": "^3.5.5", + "@react-types/calendar": "^3.4.8", + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/dialog": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.10.tgz", - "integrity": "sha512-S9ga+edOLNLZw7/zVOnZdT5T40etpzUYBXEKdFPbxyPYnERvRxJAsC1/ASuBU9fQAXMRgLZzADWV+wJoGS/X9g==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.12.tgz", + "integrity": "sha512-JmpQbSpXltqEyYfEwoqDolABIiojeExkqolHNdQlayIsfFuSxZxNwXZPOpz58Ri/iwv21JP7K3QF0Gb2Ohxl9w==", "dependencies": { - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/divider": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@react-types/divider/-/divider-3.3.9.tgz", - "integrity": "sha512-SQ3XWS16j3VZg3MGByJ1CjWDfARn+viBDay6SibAFzMqlqVbSol2nw1hQ1JPaT3zeW8C/354q+OhBsIFDOaE7w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@react-types/divider/-/divider-3.3.11.tgz", + "integrity": "sha512-pnyEhIK21K8K10cvkXID1yx4V8jpY5uRO69o8npyq846p7RSercGGGQNE/vPSJXEViZrXTrf2KyNSPFU2x5INw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/form": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.4.tgz", - "integrity": "sha512-HZojAWrb6feYnhDEOy3vBamDVAHDl0l2JQZ7aIDLHmeTAGQC3JNZcm2fLTxqLye46zz8w8l8OHgI+NdD4PHdOw==", + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.6.tgz", + "integrity": "sha512-lhS2y1bVtRnyYjkM+ylJUp2g663ZNbeZxu2o+mFfD5c2wYmVLA58IWR90c7DL8IVUitoANnZ1JPhhXvutiFpQQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/grid": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.6.tgz", - "integrity": "sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.8.tgz", + "integrity": "sha512-6PJrpukwMqlv3IhJSDkJuVbhHM8Oe6hd2supWqd9adMXrlSP7QHt9a8SgFcFblCCTx8JzUaA0PvY5sTudcEtOQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/illustratedmessage": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@react-types/illustratedmessage/-/illustratedmessage-3.3.9.tgz", - "integrity": "sha512-a/X+sGzUA+pkLkKDZzy/QpUtOY6qtFpsPs6lfY37TLwCEQmS8a1VKrc1ItlQVRgIvwuqJXKvrJpGOAw+RjVwHw==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@react-types/illustratedmessage/-/illustratedmessage-3.3.11.tgz", + "integrity": "sha512-GW3DCRU1YHv1VteVSTOUN3FH4Z5FCm22k5yTjhb8NjNP0eQ/tH3Gu6pZCVKTiqmuC2Z15nXZGdcPMmzKA8915Q==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/image": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@react-types/image/-/image-3.4.1.tgz", - "integrity": "sha512-6vA3vEzjXrr701i1J43DkyPziRN7jfKSdarGDP+61dOcvbiLnuTY9t+r/zXo1SdewbjF5RVliB2ys9Bb654YTg==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-types/image/-/image-3.4.3.tgz", + "integrity": "sha512-w5oxRYDKTGXHZr4CtLdi8759v2YU3Qux6kPj4fRq67hYRCKQxJOYdqQTlfLwkshe/ddFPb3Geu5GTdQtW+GnDw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/label": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-types/label/-/label-3.9.3.tgz", - "integrity": "sha512-PGVg/pBYNx3Ft59VNCvG5oqk4pXfS2Gs7t3TGnlBB1d+EXB9BbixJbOAO1PvRqt8SPCNvEAAAVfG6Vf+nOhSWw==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-types/label/-/label-3.9.5.tgz", + "integrity": "sha512-kvkPX/S7acwX2E5usekJjpFYFQyykbKFharQvYn06x4sYHevRnxzcRgPkaBynaTu2i5MeQ/Yot7VwyBfEleqSA==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/layout": { - "version": "3.3.15", - "resolved": "https://registry.npmjs.org/@react-types/layout/-/layout-3.3.15.tgz", - "integrity": "sha512-Rj3M0TWmsag83gvFDY6UnfUkNPrA/FLuJ0kEiOryjjffoI0wTxmTAPpIgG4h7YSxpQJD6g6xQ8bkIWEMCXWyag==", + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/@react-types/layout/-/layout-3.3.17.tgz", + "integrity": "sha512-CoDVto9eq9ZX65SSrPS4XSEZKBvKdnBs41B217Yai2K/s5VyyEJ0zOGtohghJOnalBCG7Ci4if8VnE27lonvcQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/link": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.5.tgz", - "integrity": "sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw==", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.7.tgz", + "integrity": "sha512-2WyaVmm1qr9UrSG3Dq6iz+2ziuVp+DH8CsYZ9CA6aNNb6U18Hxju3LTPb4a5gM0eC7W0mQGNBmrgGlAdDZEJOw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/listbox": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.4.9.tgz", - "integrity": "sha512-S5G+WmNKUIOPZxZ4svWwWQupP3C6LmVfnf8QQmPDvwYXGzVc0WovkqUWyhhjJirFDswTXRCO9p0yaTHHIlkdwQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.5.1.tgz", + "integrity": "sha512-n5bOgD9lgfK1qaLtag9WPnu151SwXBCNn/OgGY/Br9mWRl+nPUEYtFcPX+2VCld7uThf54kwrTmzlFnaraIlcw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/menu": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.9.tgz", - "integrity": "sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg==", + "version": "3.9.11", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.11.tgz", + "integrity": "sha512-IguQVF70d7aHXgWB1Rd2a/PiIuLZ2Nt7lyayJshLcy/NLOYmgpTmTyn2WCtlA5lTfQwmQrNFf4EvnWkeljJXdA==", "dependencies": { - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/meter": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.1.tgz", - "integrity": "sha512-AIJV4NDFAqKH94s02c5Da4TH2qgJjfrw978zuFM0KUBFD85WRPKh7MvgWpomvUgmzqE6lMCzIdi1KPKqrRabdw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.4.3.tgz", + "integrity": "sha512-Y2fX5CTAPGRKxVSeepbeyN6/K+wlF9pMRcNxTSU2qDwdoFqNCtTWMcWuCsU/Y2L/zU0jFWu4x0Vo7WkrcsgcMA==", "dependencies": { - "@react-types/progress": "^3.5.4" + "@react-types/progress": "^3.5.6" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/numberfield": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.3.tgz", - "integrity": "sha512-z5fGfVj3oh5bmkw9zDvClA1nDBSFL9affOuyk2qZ/M2SRUmykDAPCksbfcMndft0XULWKbF4s2CYbVI+E/yrUA==", + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.5.tgz", + "integrity": "sha512-LVWggkxwd1nyVZomXBPfQA1E4I4/i4PBifjcDs2AfcV7q5RE9D+DVIDXsYucVOBxPlDOxiAq/T9ypobspWSwHw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/overlays": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.7.tgz", - "integrity": "sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA==", + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.9.tgz", + "integrity": "sha512-9ni9upQgXPnR+K9cWmbYWvm3ll9gH8P/XsEZprqIV5zNLMF334jADK48h4jafb1X9RFnj0WbHo6BqcSObzjTig==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/progress": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.4.tgz", - "integrity": "sha512-JNc246sTjasPyx5Dp7/s0rp3Bz4qlu4LrZTulZlxWyb53WgBNL7axc26CCi+I20rWL9+c7JjhrRxnLl/1cLN5g==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.6.tgz", + "integrity": "sha512-Nh43sjQ5adyN1bTHBPRaIPhXUdBqP0miYeJpeMY3V/KUl4qmouJLwDnccwFG4xLm6gBfYe22lgbbV7nAfNnuTQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/provider": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-types/provider/-/provider-3.8.1.tgz", - "integrity": "sha512-Sm59ufxdHh6fGfeUbviNQhRvtI0FMEX1gn9Okc8nL7iTVbAAitT746x0itM+xwhFLDI6gSY8FILDWc5/kIxzxA==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/provider/-/provider-3.8.3.tgz", + "integrity": "sha512-tUt/94BRS0gZFprBAErYXauyONGcJM8ZWLCae925kZ3iLdzRWxG5qoNyKZ3SRKODdLDvJAgmPjImpj8GzYc3Fg==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/radio": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.1.tgz", - "integrity": "sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.3.tgz", + "integrity": "sha512-fUVJt4Bb6jOReFqnhHVNxWXH7t6c60uSFfoPKuXt/xI9LL1i2jhpur0ggpTfIn3qLIAmNBU6bKBCWAdr4KjeVQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/searchfield": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.5.5.tgz", - "integrity": "sha512-T/NHg12+w23TxlXMdetogLDUldk1z5dDavzbnjKrLkajLb221bp8brlR/+O6C1CtFpuJGALqYHgTasU1qkQFSA==", + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.5.7.tgz", + "integrity": "sha512-dyuPwNWGswRZfb4i50Q1Q3tCwTBxRLkrAxcMs+Rf2Rl4t93bawBdSdIQuvxu1KEhgd0EXA9ZUW53ZplqfVmtiw==", "dependencies": { - "@react-types/shared": "^3.23.1", - "@react-types/textfield": "^3.9.3" + "@react-types/shared": "^3.24.1", + "@react-types/textfield": "^3.9.5" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/select": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz", - "integrity": "sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.6.tgz", + "integrity": "sha512-cVSFR0eJLup/ht1Uto+y8uyLmHO89J6wNh65SIHb3jeVz9oLBAedP3YNI2qB+F9qFMUcA8PBSLXIIuT6gXzLgQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/shared": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz", - "integrity": "sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.24.1.tgz", + "integrity": "sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/slider": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.3.tgz", - "integrity": "sha512-F8qFQaD2mqug2D0XeWMmjGBikiwbdERFlhFzdvNGbypPLz3AZICBKp1ZLPWdl0DMuy03G/jy6Gl4mDobl7RT2g==", + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.5.tgz", + "integrity": "sha512-bRitwQRQjQoOcKEdPMljnvm474dwrmsc6pdsVQDh/qynzr+KO9IHuYc3qPW53WVE2hMQJDohlqtCAWQXWQ5Vcg==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/statuslight": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@react-types/statuslight/-/statuslight-3.3.9.tgz", - "integrity": "sha512-6nC17gluvrMCJkb0mihzqAaz8wn0ghfgk1ILkL8CUobsqJU6pW4eGJXNoZCd5wHT/YjwnupzfhHcbMj93AHzWQ==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@react-types/statuslight/-/statuslight-3.3.11.tgz", + "integrity": "sha512-EYxya+R4PpgB1V8pcn2w4fgFbPMCuya+TeYDoO6Izp3AQRWYgQRwM8Gz3IQ/qXFvwzT9e1fEuOHPHqPW1Tiitw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/switch": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.3.tgz", - "integrity": "sha512-Nb6+J5MrPaFa8ZNFKGMzAsen/NNzl5UG/BbC65SLGPy7O0VDa/sUpn7dcu8V2xRpRwwIN/Oso4v63bt2sgdkgA==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.5.tgz", + "integrity": "sha512-SZx1Bd+COhAOs/RTifbZG+uq/llwba7VAKx7XBeX4LeIz1dtguy5bigOBgFTMQi4qsIVCpybSWEEl+daj4XFPw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/table": { - "version": "3.9.5", - "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.9.5.tgz", - "integrity": "sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.10.1.tgz", + "integrity": "sha512-xsNh0Gm4GtNeSknZqkMsfGvc94fycmfhspGO+FzQKim2hB5k4yILwd+lHYQ2UKW6New9GVH/zN2Pd3v67IeZ2g==", "dependencies": { - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1" + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/tabs": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.7.tgz", - "integrity": "sha512-ZdLe5xOcFX6+/ni45Dl2jO0jFATpTnoSqj6kLIS/BYv8oh0n817OjJkLf+DS3CLfNjApJWrHqAk34xNh6nRnEg==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.9.tgz", + "integrity": "sha512-3Q9kRVvg/qDyeJR/W1+C2z2OyvDWQrSLvOCvAezX5UKzww4rBEAA8OqBlyDwn7q3fiwrh/m64l6p+dbln+RdxQ==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/text": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@react-types/text/-/text-3.3.9.tgz", - "integrity": "sha512-JJTmUstFXikZHQhf+0VELODGz1jUcSgXOTYJxTMiMtSjLOSCW5G+pRhT80MRgxOeuD0Z7p0XghUXo3ruD694HA==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@react-types/text/-/text-3.3.11.tgz", + "integrity": "sha512-e78lt//FlmrJSPNgZZYT2LoBXFqoG5MX/kaS738bO9WkUR4nE1wtBBMmztQxQTvqz0cV/gaJEHZla4Orp+Civw==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/textfield": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.3.tgz", - "integrity": "sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.5.tgz", + "integrity": "sha512-0hwZI4WXSEStPzdltKwbNUZWlgHtwbxMWE0LfqIzEW8RB7DyBflYSKzLyTBFqwUZ8j3C1gWy9c9OPSeCOq792Q==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/tooltip": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.9.tgz", - "integrity": "sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg==", + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.11.tgz", + "integrity": "sha512-WPikHQxeT5Lb09yJEaW6Ja3ecE0g1YM6ukWYS2v/iZLUPn5YlYrGytspuCYQNSh/u7suCz4zRLEHYCl7OCigjw==", "dependencies": { - "@react-types/overlays": "^3.8.7", - "@react-types/shared": "^3.23.1" + "@react-types/overlays": "^3.8.9", + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/view": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/@react-types/view/-/view-3.4.9.tgz", - "integrity": "sha512-HY969whOXKg10ZqIrXOF12wm3rDwNaKaK9fzqhhrUc94+JR4OPKQctps+HeonAXscxy2yMy8V1/2yjiEwluvAA==", + "version": "3.4.11", + "resolved": "https://registry.npmjs.org/@react-types/view/-/view-3.4.11.tgz", + "integrity": "sha512-FgWQGppdqAHfnRUyjc01nRdMKSEpJBze99+k+xscW+Lv6XNXQR3PlC8QOpcEZ4gGy9Xx1YkbKHDX1eOCNTeYnA==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@react-types/well": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@react-types/well/-/well-3.3.9.tgz", - "integrity": "sha512-3ZlxjkWXupxx0PaxpDc4Pqxxgnzp8iJkilbJ3LY5F+RJwqDm0gkKnWcFjlVJw9LkM7Emjrvm1R8naSGzJ7wJ2A==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@react-types/well/-/well-3.3.11.tgz", + "integrity": "sha512-xHe0t/4ndLIG5nrbGBEFJCeYuni4VML8t6rwEOWbQTTke6DSYZ53DPL7aepO4IP1hW0ufEOJ0WV7Bx7YTUMu+Q==", "dependencies": { - "@react-types/shared": "^3.23.1" + "@react-types/shared": "^3.24.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@rkusa/linebreak": { @@ -7099,11 +7103,11 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sindresorhus/is": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-6.3.1.tgz", - "integrity": "sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.0.0.tgz", + "integrity": "sha512-WDTlVTyvFivSOuyvMeedzg2hdoBLZ3f1uNVuEida2Rl9BrfjrIRjWA/VZIrMRLvSwJYCAlCRA3usDt1THytxWQ==", "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sindresorhus/is?sponsor=1" @@ -7115,31 +7119,31 @@ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" }, "node_modules/@spectrum-icons/ui": { - "version": "3.6.7", - "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.6.7.tgz", - "integrity": "sha512-l08Juk6w8UUpM+xXNVq9LBJ0pxMC1tynXBurTZ135twdtMwofrZmtSHUYdzaRJtm31S9E/+C1Toci1I8aw7Wlw==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@spectrum-icons/ui/-/ui-3.6.9.tgz", + "integrity": "sha512-pxgEoSfce2Vcijh+lizPgCPwAIaBYkOHwWaOXTEHn9REglAnMADdmyAyxib84JSxVY5funJ3AWPKYbEEICEXIg==", "dependencies": { - "@adobe/react-spectrum-ui": "1.2.0", - "@react-spectrum/icon": "^3.7.13", + "@adobe/react-spectrum-ui": "1.2.1", + "@react-spectrum/icon": "^3.7.15", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@spectrum-icons/workflow": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@spectrum-icons/workflow/-/workflow-4.2.12.tgz", - "integrity": "sha512-xuyytdlM09DEZO7/vSp5z8Y2RYNXL4OOYSmOaWXeYgIa3iPNKz0HW+iVR2P+Ht0iBtKjPvRobbEFb0k280U4yQ==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@spectrum-icons/workflow/-/workflow-4.2.14.tgz", + "integrity": "sha512-wPz3T8sKJCM/o2sWLjHBL/tO2DmD+10zK/AjnbCoytyeMTxniUfMr7i4RM+E/H9uCUcswL9/QFX7kbgArj0A7Q==", "dependencies": { - "@adobe/react-spectrum-workflow": "2.3.4", - "@react-spectrum/icon": "^3.7.13", + "@adobe/react-spectrum-workflow": "2.3.5", + "@react-spectrum/icon": "^3.7.15", "@swc/helpers": "^0.5.0" }, "peerDependencies": { "@react-spectrum/provider": "^3.0.0", - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/@swc/helpers": { @@ -8835,9 +8839,9 @@ "dev": true }, "node_modules/@types/chai": { - "version": "4.3.16", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", - "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", + "version": "4.3.17", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", + "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", "dev": true }, "node_modules/@types/color": { @@ -9163,15 +9167,21 @@ "@types/ms": "*" } }, + "node_modules/@types/dom-mediacapture-record": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@types/dom-mediacapture-record/-/dom-mediacapture-record-1.0.19.tgz", + "integrity": "sha512-Cz/85z3YTuUPnXrOp5MvSZZSgDkWTWvj1HgE7MWc5C8d/w/soJBXjnAoYDl4P5gmenDNNZkhXzNylGqxS1FzOw==", + "dev": true + }, "node_modules/@types/dom-speech-recognition": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/@types/dom-speech-recognition/-/dom-speech-recognition-0.0.4.tgz", "integrity": "sha512-zf2GwV/G6TdaLwpLDcGTIkHnXf8JEf/viMux+khqKQKDa8/8BAUtXXZS563GnvJ4Fg0PBLGAaFf2GekEVSZ6GQ==" }, "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "version": "8.56.11", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.11.tgz", + "integrity": "sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -9253,9 +9263,9 @@ "integrity": "sha512-IGKtSn0Lonfx3HdK6KMcfd5GUc1xdeLtjW1n7ZSA5Tmn1n2gj878q6IC0s4MbF9KtBpXIRqjRQxBzi2kF4WvGw==" }, "node_modules/@types/fluent-ffmpeg": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.24.tgz", - "integrity": "sha512-g5oQO8Jgi2kFS3tTub7wLvfLztr1s8tdXmRd8PiL/hLMLzTIAyMR2sANkTggM/rdEDAg3d63nYRRVepwBiCw5A==", + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.25.tgz", + "integrity": "sha512-a9/Jtv/RVaCG4lUwWIcuClWE5eXJFoFS/oHOecOv/RS8n+lQdJzcJVmDlxA8Xbk4B82YpO88Dijcoljb6sYTcA==", "dependencies": { "@types/node": "*" } @@ -9333,9 +9343,9 @@ "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -9366,6 +9376,7 @@ "version": "3.5.30", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz", "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==", + "dev": true, "dependencies": { "@types/sizzle": "*" } @@ -9423,9 +9434,9 @@ } }, "node_modules/@types/mapbox-gl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-3.1.0.tgz", - "integrity": "sha512-hI6cQDjw1bkJw7MC/eHMqq5TWUamLwsujnUUeiIX2KDRjxRNSYMjnHz07+LATz9I9XIsKumOtUz4gRYnZOJ/FA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-3.4.0.tgz", + "integrity": "sha512-tbn++Mm94H1kE7W6FF0oVC9rMXHVzDDNUbS7KfBMRF8NV/8csFi+67ytKcZJ4LsrpsJ+8MC6Os6ZinEDCsrunw==", "dependencies": { "@types/geojson": "*" } @@ -9462,9 +9473,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.14.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", - "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", + "version": "20.14.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz", + "integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==", "dependencies": { "undici-types": "~5.26.4" } @@ -9789,7 +9800,8 @@ "node_modules/@types/sizzle": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true }, "node_modules/@types/sockjs": { "version": "0.3.36", @@ -9825,10 +9837,17 @@ "@types/geojson": "*" } }, + "node_modules/@types/textarea-caret": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/textarea-caret/-/textarea-caret-3.0.3.tgz", + "integrity": "sha512-bsA9GdXV1wQsXyDjS5+A+czz8IAR3haH5DU+KctIoXbzobRL2NOiwF/+EbB7pofAyudMytLj4ihPtbmbJT8FWw==", + "dev": true + }, "node_modules/@types/textfit": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/textfit/-/textfit-2.4.4.tgz", "integrity": "sha512-AYlNcJ5j/WspQfbHIhoF0Wo63F5+REnX/VPFSH5unUUuwRcr6IoXxZki3vYhG4DRVUQe51AsFYyRxml5u+qaAg==", + "dev": true, "dependencies": { "@types/jquery": "*" } @@ -9887,6 +9906,15 @@ "webpack": "^5" } }, + "node_modules/@types/webscopeio__react-textarea-autocomplete": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/@types/webscopeio__react-textarea-autocomplete/-/webscopeio__react-textarea-autocomplete-4.7.5.tgz", + "integrity": "sha512-B9YZ5KrKRcNNsh2v7tyc/tZ1rrPoyWoaXQvvfcG9pX85w9jy2HLnPPT7Kfms5TgzR3RGQ5TIvXQvmsizxdohyQ==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/whatwg-url": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", @@ -9896,18 +9924,18 @@ } }, "node_modules/@types/ws": { - "version": "8.5.11", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", - "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dependencies": { "@types/yargs-parser": "*" } @@ -9924,16 +9952,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", - "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/type-utils": "7.16.1", - "@typescript-eslint/utils": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -9957,14 +9985,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", - "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", - "dependencies": { - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/typescript-estree": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "engines": { @@ -9984,12 +10012,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", - "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -10000,13 +10028,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", - "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.16.1", - "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -10027,9 +10055,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", - "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -10039,12 +10067,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", - "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10077,15 +10105,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", - "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/typescript-estree": "7.16.1" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -10099,11 +10127,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", - "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dependencies": { - "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/types": "7.18.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -10120,55 +10148,55 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@vue/compiler-core": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.33.tgz", - "integrity": "sha512-MoIREbkdPQlnGfSKDMgzTqzqx5nmEjIc0ydLVYlTACGBsfvOJ4tHSbZXKVF536n6fB+0eZaGEOqsGThPpdvF5A==", + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.37.tgz", + "integrity": "sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.33", - "entities": "^4.5.0", + "@vue/shared": "3.4.37", + "entities": "^5.0.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.33.tgz", - "integrity": "sha512-GzB8fxEHKw0gGet5BKlpfXEqoBnzSVWwMnT+dc25wE7pFEfrU/QsvjZMP9rD4iVXHBBoemTct8mN0GJEI6ZX5A==", + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.37.tgz", + "integrity": "sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==", "dependencies": { - "@vue/compiler-core": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-core": "3.4.37", + "@vue/shared": "3.4.37" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.33.tgz", - "integrity": "sha512-7rk7Vbkn21xMwIUpHQR4hCVejwE6nvhBOiDgoBcR03qvGqRKA7dCBSsHZhwhYUsmjlbJ7OtD5UFIyhP6BY+c8A==", + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.37.tgz", + "integrity": "sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.33", - "@vue/compiler-dom": "3.4.33", - "@vue/compiler-ssr": "3.4.33", - "@vue/shared": "3.4.33", + "@vue/compiler-core": "3.4.37", + "@vue/compiler-dom": "3.4.37", + "@vue/compiler-ssr": "3.4.37", + "@vue/shared": "3.4.37", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", - "postcss": "^8.4.39", + "postcss": "^8.4.40", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.33.tgz", - "integrity": "sha512-0WveC9Ai+eT/1b6LCV5IfsufBZ0HP7pSSTdDjcuW302tTEgoBw8rHVHKPbGUtzGReUFCRXbv6zQDDgucnV2WzQ==", + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.37.tgz", + "integrity": "sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==", "dependencies": { - "@vue/compiler-dom": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-dom": "3.4.37", + "@vue/shared": "3.4.37" } }, "node_modules/@vue/shared": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.33.tgz", - "integrity": "sha512-aoRY0jQk3A/cuvdkodTrM4NMfxco8n55eG4H7ML/CRy7OryHfiqvug4xrCBBMbbN+dvXAetDDwZW9DXWWjBntA==" + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.37.tgz", + "integrity": "sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -10439,9 +10467,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz", - "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", + "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", "engines": { "node": ">=12.0" } @@ -11049,23 +11077,23 @@ } }, "node_modules/aws4": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", - "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz", + "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==" }, "node_modules/axe-core": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", - "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", + "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -11203,12 +11231,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -14655,9 +14683,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -14673,9 +14701,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", "update-browserslist-db": "^1.1.0" }, "bin": { @@ -14823,32 +14851,6 @@ "node": ">=18" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -14912,9 +14914,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001643", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", - "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "funding": [ { "type": "opencollective", @@ -15750,9 +15752,9 @@ } }, "node_modules/core-js": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", - "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.0.tgz", + "integrity": "sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -15760,11 +15762,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz", + "integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -15772,9 +15774,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", - "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.0.tgz", + "integrity": "sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -16080,9 +16082,9 @@ } }, "node_modules/csv-stringify": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.0.tgz", - "integrity": "sha512-edlXFVKcUx7r8Vx5zQucsuMg4wb/xT6qyz+Sr1vnLrdXqlLD1+UKyWNyZ9zn6mUW1ewmGxrpVwAcChGF0HQ/2Q==" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.1.tgz", + "integrity": "sha512-+9lpZfwpLntpTIEpFbwQyWuW/hmI/eHuJZD1XzeZpfZTqkf1fyvBbBLXTJJMsBuuS11uTShMqPwzx4A6ffXgRQ==" }, "node_modules/csvtojson": { "version": "2.0.10", @@ -16106,9 +16108,9 @@ "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==" }, "node_modules/cytoscape": { - "version": "3.30.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.1.tgz", - "integrity": "sha512-TRJc3HbBPkHd50u9YfJh2FxD1lDLZ+JXnJoyBn5LkncoeuT7fapO/Hq/Ed8TdFclaKshzInge2i30bg7VKeoPQ==", + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.2.tgz", + "integrity": "sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==", "engines": { "node": ">=0.10" } @@ -16677,9 +16679,9 @@ "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==" }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { "ms": "2.1.2" }, @@ -17143,6 +17145,17 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", @@ -17258,9 +17271,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.832", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.832.tgz", - "integrity": "sha512-cTen3SB0H2SGU7x467NRe1eVcQgcuS6jckKfWJHia2eo0cHIGOqHoAxevIYZD4eRHcWjkvFzo93bi3vJ9W+1lA==" + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz", + "integrity": "sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==" }, "node_modules/elkjs": { "version": "0.9.3", @@ -17369,9 +17382,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -17381,9 +17394,9 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-5.0.0.tgz", + "integrity": "sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==", "engines": { "node": ">=0.12" }, @@ -19634,9 +19647,9 @@ "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==" }, "node_modules/fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", "funding": [ { "type": "github", @@ -20082,9 +20095,9 @@ } }, "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -20699,11 +20712,26 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -20852,9 +20880,9 @@ } }, "node_modules/globals": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", - "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", "dev": true, "engines": { "node": ">=18" @@ -20904,9 +20932,9 @@ "integrity": "sha512-sIVQCiRWOymHbVD1Aw/T9/ijbPYAVGBlgGYd1N9MRKfcyBNSpjr87Vg9nSHm+RCT8ELrvK8IJYJV0QRJuVUkCQ==" }, "node_modules/google-auth-library": { - "version": "9.11.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.11.0.tgz", - "integrity": "sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw==", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", @@ -20996,17 +21024,16 @@ } }, "node_modules/got": { - "version": "14.4.1", - "resolved": "https://registry.npmjs.org/got/-/got-14.4.1.tgz", - "integrity": "sha512-IvDJbJBUeexX74xNQuMIVgCRRuNOm5wuK+OC3Dc2pnSoh1AOmgc7JVj7WC+cJ4u0aPcO9KZ2frTXcqK4W/5qTQ==", + "version": "14.4.2", + "resolved": "https://registry.npmjs.org/got/-/got-14.4.2.tgz", + "integrity": "sha512-+Te/qEZ6hr7i+f0FNgXx/6WQteSM/QqueGvxeYQQFm0GDfoxLVJ/oiwUKYMTeioColWUTdewZ06hmrBjw6F7tw==", "dependencies": { - "@sindresorhus/is": "^6.3.1", + "@sindresorhus/is": "^7.0.0", "@szmarczak/http-timer": "^5.0.1", "cacheable-lookup": "^7.0.0", "cacheable-request": "^12.0.1", "decompress-response": "^6.0.0", "form-data-encoder": "^4.0.2", - "get-stream": "^8.0.1", "http2-wrapper": "^2.2.1", "lowercase-keys": "^3.0.0", "p-cancelable": "^4.0.1", @@ -21609,6 +21636,17 @@ "entities": "^4.4.0" } }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/http-browserify": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", @@ -23763,9 +23801,9 @@ } }, "node_modules/launch-editor": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", - "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", + "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", "dev": true, "dependencies": { "picocolors": "^1.0.0", @@ -24094,11 +24132,11 @@ } }, "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/magicli": { @@ -24264,6 +24302,17 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", @@ -31094,9 +31143,9 @@ } }, "node_modules/mongoose": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.1.tgz", - "integrity": "sha512-OhVcwVl91A1G6+XpjDcpkGP7l7ikZkxa0DylX7NT/lcEqAjggzSdqDxb48A+xsDxqNAr0ntSJ1yiE3+KJTOd5Q==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.2.tgz", + "integrity": "sha512-GZB4rHMdYfGatV+23IpCrqFbyCOjCNOHXgWbirr92KRwTEncBrtW3kgU9vmpKjsGf7nMmnAy06SwWUv1vhDkSg==", "dependencies": { "bson": "^6.7.0", "kareem": "2.6.3", @@ -34216,9 +34265,9 @@ } }, "node_modules/openai": { - "version": "4.52.7", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.52.7.tgz", - "integrity": "sha512-dgxA6UZHary6NXUHEDj5TWt8ogv0+ibH+b4pT5RrWMjiRZVylNwLcw/2ubDrX5n0oUmHX/ZgudMJeemxzOvz7A==", + "version": "4.55.1", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.55.1.tgz", + "integrity": "sha512-FziYJcWl+SAGbt5AcRIzVzNcnKohpEMQdtzVOmHFbBp/if7x2+ACqgxF2XUbyi2PcKONPcVpmtG5h9qoDAEXwQ==", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", @@ -34226,17 +34275,24 @@ "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7", - "web-streams-polyfill": "^3.2.1" + "node-fetch": "^2.6.7" }, "bin": { "openai": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.41.tgz", - "integrity": "sha512-LX84pRJ+evD2e2nrgYCHObGWkiQJ1mL+meAgbvnwk/US6vmMY7S2ygBTGV2Jw91s9vUsLSXeDEkUHZIJGLrhsg==", + "version": "18.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.43.tgz", + "integrity": "sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==", "dependencies": { "undici-types": "~5.26.4" } @@ -34486,6 +34542,17 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parseley": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz", @@ -34720,15 +34787,15 @@ } }, "node_modules/pdfjs-dist": { - "version": "4.4.168", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.4.168.tgz", - "integrity": "sha512-MbkAjpwka/dMHaCfQ75RY1FXX3IewBVu6NGZOcxerRFlaBiIkZmUoR0jotX5VUzYZEXAGzSFtknWs5xRKliXPA==", + "version": "4.5.136", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.5.136.tgz", + "integrity": "sha512-V1BALcAN/FmxBEShLxoP73PlQZAZtzlaNfRbRhJrKvXzjLC5VaIlBAQUJuWP8iaYUmIdmdLHmt3E2TBglxOm3w==", "engines": { "node": ">=18" }, "optionalDependencies": { "canvas": "^2.11.2", - "path2d": "^0.2.0" + "path2d": "^0.2.1" } }, "node_modules/pdfjs/node_modules/pako": { @@ -34961,9 +35028,9 @@ } }, "node_modules/postcss": { - "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "funding": [ { "type": "opencollective", @@ -35189,9 +35256,9 @@ "peer": true }, "node_modules/prosemirror-commands": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", - "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.6.0.tgz", + "integrity": "sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg==", "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", @@ -35236,9 +35303,9 @@ } }, "node_modules/prosemirror-model": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.2.tgz", - "integrity": "sha512-I4lS7HHIW47D0Xv/gWmi4iUWcQIDYaJKd8Hk4+lcSps+553FlQrhmxtItpEvTr75iAruhzVShVp6WUwsT6Boww==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.3.tgz", + "integrity": "sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==", "dependencies": { "orderedmap": "^2.0.0" } @@ -35669,85 +35736,90 @@ } }, "node_modules/react-aria": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.33.1.tgz", - "integrity": "sha512-hFC3K/UA+90Krlx2IgRTgzFbC6FSPi4pUwHT+STperPLK+cTEHkI+3Lu0YYwQSBatkgxnIv9+GtFuVbps2kROw==", + "version": "3.34.1", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.34.1.tgz", + "integrity": "sha512-vA4BP+SWjFFRfOTQcNJtIp9gKlxuC7kPUXQK9fuNA+2K4mJdIc9mBnmwXQiLl/eAthMf43fD4fETfY9SiCm1Zg==", "dependencies": { "@internationalized/string": "^3.2.3", - "@react-aria/breadcrumbs": "^3.5.13", - "@react-aria/button": "^3.9.5", - "@react-aria/calendar": "^3.5.8", - "@react-aria/checkbox": "^3.14.3", - "@react-aria/combobox": "^3.9.1", - "@react-aria/datepicker": "^3.10.1", - "@react-aria/dialog": "^3.5.14", - "@react-aria/dnd": "^3.6.1", - "@react-aria/focus": "^3.17.1", - "@react-aria/gridlist": "^3.8.1", - "@react-aria/i18n": "^3.11.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/label": "^3.7.8", - "@react-aria/link": "^3.7.1", - "@react-aria/listbox": "^3.12.1", - "@react-aria/menu": "^3.14.1", - "@react-aria/meter": "^3.4.13", - "@react-aria/numberfield": "^3.11.3", - "@react-aria/overlays": "^3.22.1", - "@react-aria/progress": "^3.4.13", - "@react-aria/radio": "^3.10.4", - "@react-aria/searchfield": "^3.7.5", - "@react-aria/select": "^3.14.5", - "@react-aria/selection": "^3.18.1", - "@react-aria/separator": "^3.3.13", - "@react-aria/slider": "^3.7.8", - "@react-aria/ssr": "^3.9.4", - "@react-aria/switch": "^3.6.4", - "@react-aria/table": "^3.14.1", - "@react-aria/tabs": "^3.9.1", - "@react-aria/tag": "^3.4.1", - "@react-aria/textfield": "^3.14.5", - "@react-aria/tooltip": "^3.7.4", - "@react-aria/utils": "^3.24.1", - "@react-aria/visually-hidden": "^3.8.12", - "@react-types/shared": "^3.23.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@react-aria/breadcrumbs": "^3.5.15", + "@react-aria/button": "^3.9.7", + "@react-aria/calendar": "^3.5.10", + "@react-aria/checkbox": "^3.14.5", + "@react-aria/combobox": "^3.10.1", + "@react-aria/datepicker": "^3.11.1", + "@react-aria/dialog": "^3.5.16", + "@react-aria/dnd": "^3.7.1", + "@react-aria/focus": "^3.18.1", + "@react-aria/gridlist": "^3.9.1", + "@react-aria/i18n": "^3.12.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/label": "^3.7.10", + "@react-aria/link": "^3.7.3", + "@react-aria/listbox": "^3.13.1", + "@react-aria/menu": "^3.15.1", + "@react-aria/meter": "^3.4.15", + "@react-aria/numberfield": "^3.11.5", + "@react-aria/overlays": "^3.23.1", + "@react-aria/progress": "^3.4.15", + "@react-aria/radio": "^3.10.6", + "@react-aria/searchfield": "^3.7.7", + "@react-aria/select": "^3.14.7", + "@react-aria/selection": "^3.19.1", + "@react-aria/separator": "^3.4.1", + "@react-aria/slider": "^3.7.10", + "@react-aria/ssr": "^3.9.5", + "@react-aria/switch": "^3.6.6", + "@react-aria/table": "^3.15.1", + "@react-aria/tabs": "^3.9.3", + "@react-aria/tag": "^3.4.3", + "@react-aria/textfield": "^3.14.7", + "@react-aria/tooltip": "^3.7.6", + "@react-aria/utils": "^3.25.1", + "@react-aria/visually-hidden": "^3.8.14", + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-aria-components": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.2.1.tgz", - "integrity": "sha512-iGIdDjbTyLLn0/tGUyBQxxu+E1bw4/H4AU89d0cRcu8yIdw6MXG29YElmRHn0ugiyrERrk/YQALihstnns5kRQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-aria-components/-/react-aria-components-1.3.1.tgz", + "integrity": "sha512-yUTA8uHbioQHU5d7iNvSLZLEfQlcTAmyhhkY+NMc8pIGPdtf0qnrlF0nPtJq8Mro5irpVrgUlqKBvvCiKwFNiQ==", "dependencies": { - "@internationalized/date": "^3.5.4", + "@internationalized/date": "^3.5.5", "@internationalized/string": "^3.2.3", - "@react-aria/color": "3.0.0-beta.33", - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@react-aria/menu": "^3.14.1", - "@react-aria/toolbar": "3.0.0-beta.5", - "@react-aria/tree": "3.0.0-alpha.1", - "@react-aria/utils": "^3.24.1", - "@react-stately/color": "^3.6.1", - "@react-stately/menu": "^3.7.1", - "@react-stately/table": "^3.11.8", - "@react-stately/utils": "^3.10.1", - "@react-types/color": "3.0.0-beta.25", - "@react-types/form": "^3.7.4", - "@react-types/grid": "^3.2.6", - "@react-types/shared": "^3.23.1", - "@react-types/table": "^3.9.5", + "@react-aria/collections": "3.0.0-alpha.3", + "@react-aria/color": "3.0.0-rc.1", + "@react-aria/dnd": "^3.7.1", + "@react-aria/focus": "^3.18.1", + "@react-aria/interactions": "^3.22.1", + "@react-aria/menu": "^3.15.1", + "@react-aria/toolbar": "3.0.0-beta.7", + "@react-aria/tree": "3.0.0-alpha.3", + "@react-aria/utils": "^3.25.1", + "@react-aria/virtualizer": "^4.0.1", + "@react-stately/color": "^3.7.1", + "@react-stately/layout": "^4.0.1", + "@react-stately/menu": "^3.8.1", + "@react-stately/table": "^3.12.1", + "@react-stately/utils": "^3.10.2", + "@react-stately/virtualizer": "^4.0.1", + "@react-types/color": "3.0.0-rc.1", + "@react-types/form": "^3.7.6", + "@react-types/grid": "^3.2.8", + "@react-types/shared": "^3.24.1", + "@react-types/table": "^3.10.1", "@swc/helpers": "^0.5.0", "client-only": "^0.0.1", - "react-aria": "^3.33.1", - "react-stately": "^3.31.1", + "react-aria": "^3.34.1", + "react-stately": "^3.32.1", "use-sync-external-store": "^1.2.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-autosuggest": { @@ -35766,9 +35838,9 @@ } }, "node_modules/react-awesome-reveal": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/react-awesome-reveal/-/react-awesome-reveal-4.2.12.tgz", - "integrity": "sha512-cablqrGypakw34h+rMcn+CmDCMfS+n4MznL/0LBQpFksZ2FCRtKFWIYuKWWpY8lL2ttyBnWnMdlJJiuLHR99uA==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/react-awesome-reveal/-/react-awesome-reveal-4.2.14.tgz", + "integrity": "sha512-wknbDl+z5MIhQFfKKSj3iBJzvssqJLP8LbxQjW9OCyXPGtMSYvOFKwjG4/2p1de+qh5gqb8WBMQIYS6wVN3tNw==", "funding": [ { "type": "github", @@ -35780,7 +35852,7 @@ } ], "dependencies": { - "react-intersection-observer": "^9.10.3", + "react-intersection-observer": "^9.13.0", "react-is": "^18.3.1" }, "peerDependencies": { @@ -36100,36 +36172,36 @@ } }, "node_modules/react-stately": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.31.1.tgz", - "integrity": "sha512-wuq673NHkYSdoceGryjtMJJvB9iQgyDkQDsnTN0t2v91pXjGDsN/EcOvnUrxXSBtY9eLdIw74R54z9GX5cJNEg==", - "dependencies": { - "@react-stately/calendar": "^3.5.1", - "@react-stately/checkbox": "^3.6.5", - "@react-stately/collections": "^3.10.7", - "@react-stately/combobox": "^3.8.4", - "@react-stately/data": "^3.11.4", - "@react-stately/datepicker": "^3.9.4", - "@react-stately/dnd": "^3.3.1", - "@react-stately/form": "^3.0.3", - "@react-stately/list": "^3.10.5", - "@react-stately/menu": "^3.7.1", - "@react-stately/numberfield": "^3.9.3", - "@react-stately/overlays": "^3.6.7", - "@react-stately/radio": "^3.10.4", - "@react-stately/searchfield": "^3.5.3", - "@react-stately/select": "^3.6.4", - "@react-stately/selection": "^3.15.1", - "@react-stately/slider": "^3.5.4", - "@react-stately/table": "^3.11.8", - "@react-stately/tabs": "^3.6.6", - "@react-stately/toggle": "^3.7.4", - "@react-stately/tooltip": "^3.4.9", - "@react-stately/tree": "^3.8.1", - "@react-types/shared": "^3.23.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "version": "3.32.1", + "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.32.1.tgz", + "integrity": "sha512-znw+bqHJk1fvv34O3HoVH61otyYJomRu1gI7A4B3UHCnSFS6E6nMI6D3nRv9RrAWhf4ekLLg35FwDTHDcG1zdg==", + "dependencies": { + "@react-stately/calendar": "^3.5.3", + "@react-stately/checkbox": "^3.6.7", + "@react-stately/collections": "^3.10.9", + "@react-stately/combobox": "^3.9.1", + "@react-stately/data": "^3.11.6", + "@react-stately/datepicker": "^3.10.1", + "@react-stately/dnd": "^3.4.1", + "@react-stately/form": "^3.0.5", + "@react-stately/list": "^3.10.7", + "@react-stately/menu": "^3.8.1", + "@react-stately/numberfield": "^3.9.5", + "@react-stately/overlays": "^3.6.9", + "@react-stately/radio": "^3.10.6", + "@react-stately/searchfield": "^3.5.5", + "@react-stately/select": "^3.6.6", + "@react-stately/selection": "^3.16.1", + "@react-stately/slider": "^3.5.6", + "@react-stately/table": "^3.12.1", + "@react-stately/tabs": "^3.6.8", + "@react-stately/toggle": "^3.7.6", + "@react-stately/tooltip": "^3.4.11", + "@react-stately/tree": "^3.8.3", + "@react-types/shared": "^3.24.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-textarea-autosize": { @@ -39388,9 +39460,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/terser": { - "version": "5.31.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz", - "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==", + "version": "5.31.5", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.5.tgz", + "integrity": "sha512-YPmas0L0rE1UyLL/llTWA0SiDOqIcAQYLeUj7cJYzXHlRTAnMSg9pPe4VJ5PlKvTrPQsdVFuiRiwyeNlYgwh2Q==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -40383,9 +40455,9 @@ } }, "node_modules/type-fest": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.23.0.tgz", - "integrity": "sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.24.0.tgz", + "integrity": "sha512-spAaHzc6qre0TlZQQ2aA/nGMe+2Z/wyGk5Z+Ru2VUfdNwT6kWO6TjevOlpebsATEG1EIQ2sOiDszud3lO5mt/Q==", "engines": { "node": ">=16" }, @@ -40479,9 +40551,9 @@ } }, "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -40496,14 +40568,14 @@ "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==" }, "node_modules/typescript-eslint": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.16.1.tgz", - "integrity": "sha512-889oE5qELj65q/tGeOSvlreNKhimitFwZqQ0o7PcWC7/lgRkAMknznsCsV8J8mZGTP/Z+cIbX8accf2DE33hrA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.18.0.tgz", + "integrity": "sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "7.16.1", - "@typescript-eslint/parser": "7.16.1", - "@typescript-eslint/utils": "7.16.1" + "@typescript-eslint/eslint-plugin": "7.18.0", + "@typescript-eslint/parser": "7.18.0", + "@typescript-eslint/utils": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -40879,12 +40951,15 @@ } }, "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dependencies": { "punycode": "^1.4.1", - "qs": "^6.11.2" + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/url-loader": { @@ -40950,9 +41025,9 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, "node_modules/url/node_modules/qs": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", - "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { "side-channel": "^1.0.6" }, @@ -41313,9 +41388,11 @@ } }, "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0.tgz", + "integrity": "sha512-0zJXHRAYEjM2tUfZ2DiSOHAa2aw1tisnnhU3ufD57R8iefL+DcdJyRBRyJpG+NUimDgbTI/lH+gAE1PAvV3Cgw==", + "optional": true, + "peer": true, "engines": { "node": ">= 8" } @@ -41479,12 +41556,12 @@ } }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.3.tgz", - "integrity": "sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", + "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", - "@jsonjoy.com/util": "^1.1.2", + "@jsonjoy.com/util": "^1.3.0", "tree-dump": "^1.0.1", "tslib": "^2.0.0" }, @@ -41565,9 +41642,9 @@ } }, "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", - "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "dev": true, "dependencies": { "glob": "^10.3.7" @@ -41575,9 +41652,6 @@ "bin": { "rimraf": "dist/esm/bin.mjs" }, - "engines": { - "node": "14 >=14.20 || 16 >=16.20 || >=18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -41760,13 +41834,13 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", "dev": true, "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", "is-finalizationregistry": "^1.0.2", @@ -41775,8 +41849,8 @@ "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" diff --git a/package.json b/package.json index 899b2968e..302831bd2 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "@types/cookie-parser": "^1.4.6", "@types/cookie-session": "^2.0.48", "@types/d3": "^7.4.3", + "@types/dom-mediacapture-record": "^1.0.19", "@types/exif": "^0.6.5", "@types/express": "^4.17.21", "@types/express-session": "^1.17.10", @@ -63,10 +64,12 @@ "@types/request": "^2.48.12", "@types/request-promise": "^4.1.51", "@types/shelljs": "^0.8.15", + "@types/textarea-caret": "^3.0.3", "@types/textfit": "^2.4.4", "@types/uuid": "^10.0.0", "@types/valid-url": "^1.0.7", "@types/webpack": "^5.28.5", + "@types/webscopeio__react-textarea-autocomplete": "^4.7.5", "@types/youtube": "0.0.50", "chai": "^5.0.0", "cross-env": "^7.0.3", diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index fc415d589..f9e282993 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -17,7 +17,7 @@ export function DashColor(color: string | undefined) { } } -export function lightOrDark(color: any) { +export function lightOrDark(color: string | undefined) { if (color === 'transparent' || !color) return Colors.BLACK; if (color.startsWith?.('linear')) return Colors.BLACK; if (DashColor(color).isLight()) return Colors.BLACK; @@ -351,9 +351,9 @@ export namespace ClientUtils { } } -export function OmitKeys(obj: any, keys: string[], pattern?: string, addKeyFunc?: (dup: any) => void): { omit: any; extract: any } { - const omit: any = { ...obj }; - const extract: any = {}; +export function OmitKeys(obj: object, keys: string[], pattern?: string, addKeyFunc?: (dup: object) => void): { omit: { [key: string]: unknown }; extract: { [key: string]: unknown } } { + const omit: { [key: string]: unknown } = { ...obj }; + const extract: { [key: string]: unknown } = {}; keys.forEach(key => { extract[key] = omit[key]; delete omit[key]; @@ -369,8 +369,8 @@ export function OmitKeys(obj: any, keys: string[], pattern?: string, addKeyFunc? return { omit, extract }; } -export function WithKeys(obj: any, keys: string[], addKeyFunc?: (dup: any) => void) { - const dup: any = {}; +export function WithKeys(obj: object & { [key: string]: unknown }, keys: string[], addKeyFunc?: (dup: unknown) => void) { + const dup: { [key: string]: unknown } = {}; keys.forEach(key => { dup[key] = obj[key]; }); @@ -521,7 +521,7 @@ export function simulateMouseClick(element: Element | null | undefined, x: numbe } } -export function getWordAtPoint(elem: any, x: number, y: number): string | undefined { +export function getWordAtPoint(elem: Element, x: number, y: number): string | undefined { if (elem.tagName === 'INPUT') return 'input'; if (elem.tagName === 'TEXTAREA') return 'textarea'; if (elem.nodeType === elem.TEXT_NODE || elem.textContent) { @@ -534,7 +534,7 @@ export function getWordAtPoint(elem: any, x: number, y: number): string | undefi range.setEnd(elem, currentPos + 1); const rangeRect = range.getBoundingClientRect(); if (rangeRect.left <= x && rangeRect.right >= x && rangeRect.top <= y && rangeRect.bottom >= y) { - range.expand?.('word'); // doesn't exist in firefox + 'expand' in range && (range.expand as (val: string) => void)('word'); // doesn't exist in firefox const ret = range.toString(); range.detach(); return ret; @@ -542,16 +542,18 @@ export function getWordAtPoint(elem: any, x: number, y: number): string | undefi currentPos += 1; } } else { - Array.from(elem.childNodes).forEach((childNode: any) => { - const range = childNode.ownerDocument.createRange(); - range.selectNodeContents(childNode); - const rangeRect = range.getBoundingClientRect(); - if (rangeRect.left <= x && rangeRect.right >= x && rangeRect.top <= y && rangeRect.bottom >= y) { - range.detach(); - const word = getWordAtPoint(childNode, x, y); - if (word) return word; - } else { - range.detach(); + Array.from(elem.children).forEach(childNode => { + const range = childNode.ownerDocument?.createRange(); + if (range) { + range.selectNodeContents(childNode); + const rangeRect = range.getBoundingClientRect(); + if (rangeRect.left <= x && rangeRect.right >= x && rangeRect.top <= y && rangeRect.bottom >= y) { + range.detach(); + const word = getWordAtPoint(childNode, x, y); + if (word) return word; + } else { + range.detach(); + } } return undefined; }); @@ -576,17 +578,18 @@ export function setupMoveUpEvents( target: object, e: React.PointerEvent, moveEvent: (e: PointerEvent, down: number[], delta: number[]) => boolean, - upEvent: (e: PointerEvent, movement: number[], isClick: boolean) => any, - clickEvent: (e: PointerEvent, doubleTap?: boolean) => any, + upEvent: (e: PointerEvent, movement: number[], isClick: boolean) => void, + clickEvent: (e: PointerEvent, doubleTap?: boolean) => unknown, // eslint-disable-next-line default-param-last stopPropagation: boolean = true, // eslint-disable-next-line default-param-last stopMovePropagation: boolean = true, noDoubleTapTimeout?: () => void ) { - const targetAny = target as any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const targetAny: object & { _downX: number; _downY: number; _lastX: number; _lastY: number; _doubleTap: boolean; _doubleTime?: NodeJS.Timeout; _lastTap: number; _noClick: boolean } = target as any; const doubleTapTimeout = 300; - targetAny._doubleTap = Date.now() - (target as any)._lastTap < doubleTapTimeout; + targetAny._doubleTap = Date.now() - targetAny._lastTap < doubleTapTimeout; targetAny._lastTap = Date.now(); targetAny._downX = targetAny._lastX = e.clientX; targetAny._downY = targetAny._lastY = e.clientY; @@ -594,13 +597,13 @@ export function setupMoveUpEvents( let moving = false; const _moveEvent = (moveEv: PointerEvent): void => { - if (moving || Math.abs(moveEv.clientX - (target as any)._downX) > ClientUtils.DRAG_THRESHOLD || Math.abs(moveEv.clientY - (target as any)._downY) > ClientUtils.DRAG_THRESHOLD) { + if (moving || Math.abs(moveEv.clientX - targetAny._downX) > ClientUtils.DRAG_THRESHOLD || Math.abs(moveEv.clientY - targetAny._downY) > ClientUtils.DRAG_THRESHOLD) { moving = true; - if ((target as any)._doubleTime) { - clearTimeout((target as any)._doubleTime); + if (targetAny._doubleTime) { + targetAny._doubleTime && clearTimeout(targetAny._doubleTime); targetAny._doubleTime = undefined; } - if (moveEvent(moveEv, [(target as any)._downX, (target as any)._downY], [moveEv.clientX - (target as any)._lastX, moveEv.clientY - (target as any)._lastY])) { + if (moveEvent(moveEv, [targetAny._downX, targetAny._downY], [moveEv.clientX - targetAny._lastX, moveEv.clientY - targetAny._lastY])) { document.removeEventListener('pointermove', _moveEvent); // eslint-disable-next-line no-use-before-define document.removeEventListener('pointerup', _upEvent); @@ -621,16 +624,16 @@ export function setupMoveUpEvents( }, doubleTapTimeout); } if (targetAny._doubleTime && targetAny._doubleTap) { - clearTimeout(targetAny._doubleTime); + targetAny._doubleTime && clearTimeout(targetAny._doubleTime); targetAny._doubleTime = undefined; } - targetAny._noClick = clickEvent(upEv, targetAny._doubleTap); + targetAny._noClick = clickEvent(upEv, targetAny._doubleTap) ? true : false; } document.removeEventListener('pointermove', _moveEvent); document.removeEventListener('pointerup', _upEvent, true); }; const _clickEvent = (clickev: MouseEvent): void => { - if ((target as any)._noClick) clickev.stopPropagation(); + if (targetAny._noClick) clickev.stopPropagation(); document.removeEventListener('click', _clickEvent, true); }; if (stopPropagation) { @@ -642,11 +645,11 @@ export function setupMoveUpEvents( document.addEventListener('click', _clickEvent, true); } -export function DivHeight(ele: HTMLElement): number { - return Number(getComputedStyle(ele).height.replace('px', '')); +export function DivHeight(ele: HTMLElement | null): number { + return ele ? Number(getComputedStyle(ele).height.replace('px', '')) : 0; } -export function DivWidth(ele: HTMLElement): number { - return Number(getComputedStyle(ele).width.replace('px', '')); +export function DivWidth(ele: HTMLElement | null): number { + return ele ? Number(getComputedStyle(ele).width.replace('px', '')) : 0; } export function dateRangeStrToDates(dateStr: string) { @@ -709,7 +712,7 @@ export function UpdateIcon( realNativeHeight: number, noSuffix: boolean, replaceRootFilename: string | undefined, - cb: (iconFile: string, nativeWidth: number, nativeHeight: number) => any + cb: (iconFile: string, nativeWidth: number, nativeHeight: number) => void ) { const newDiv = docViewContent.cloneNode(true) as HTMLDivElement; newDiv.style.width = width.toString(); @@ -719,9 +722,9 @@ export function UpdateIcon( const nativeWidth = width; const nativeHeight = height; return CreateImage(ClientUtils.prepend(''), document.styleSheets, htmlString, nativeWidth, (nativeWidth * panelHeight) / panelWidth, (scrollTop * panelHeight) / realNativeHeight) - .then(async (dataUrl: any) => { + .then(async dataUrl => { const returnedFilename = await ClientUtils.convertDataUri(dataUrl, filename, noSuffix, replaceRootFilename); cb(returnedFilename as string, nativeWidth, nativeHeight); }) - .catch((error: any) => console.error('oops, something went wrong!', error)); + .catch(error => console.error('oops, something went wrong!', error)); } diff --git a/src/JSZipUtils.js b/src/JSZipUtils.js index 5ce1bd471..755de7226 100644 --- a/src/JSZipUtils.js +++ b/src/JSZipUtils.js @@ -12,13 +12,17 @@ JSZipUtils._getBinaryFromXHR = function (xhr) { function createStandardXHR() { try { return new window.XMLHttpRequest(); - } catch (e) {} + } catch (e) { + /* empty */ + } } function createActiveXHR() { try { return new window.ActiveXObject('Microsoft.XMLHTTP'); - } catch (e) {} + } catch (e) { + /* empty */ + } } // Create the request object @@ -101,7 +105,7 @@ JSZipUtils.getBinaryContent = function (path, options) { xhr.overrideMimeType('text/plain; charset=x-user-defined'); } - xhr.onreadystatechange = function (event) { + xhr.onreadystatechange = function (/* event */) { // use `xhr` and not `this`... thanks IE if (xhr.readyState === 4) { if (xhr.status === 200 || xhr.status === 0) { diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts index ac865382d..2bf3a6f9f 100644 --- a/src/client/DocServer.ts +++ b/src/client/DocServer.ts @@ -1,14 +1,14 @@ -import { runInAction } from 'mobx'; +/* eslint-disable @typescript-eslint/no-namespace */ +import { action } from 'mobx'; import { Socket, io } from 'socket.io-client'; import { ClientUtils } from '../ClientUtils'; import { Utils, emptyFunction } from '../Utils'; -import { Doc, Opt } from '../fields/Doc'; +import { Doc, FieldType, Opt, SetObjGetRefField, SetObjGetRefFields } from '../fields/Doc'; import { UpdatingFromServer } from '../fields/DocSymbols'; import { FieldLoader } from '../fields/FieldLoader'; import { HandleUpdate, Id, Parent } from '../fields/FieldSymbols'; -import { ObjectField, SetObjGetRefField, SetObjGetRefFields } from '../fields/ObjectField'; -import { RefField } from '../fields/RefField'; -import { GestureContent, Message, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, UpdateMobileInkOverlayPositionContent, YoutubeQueryTypes } from '../server/Message'; +import { ObjectField, serverOpType } from '../fields/ObjectField'; +import { GestureContent, Message, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, UpdateMobileInkOverlayPositionContent } from '../server/Message'; import { SerializationHelper } from './util/SerializationHelper'; /** @@ -25,8 +25,7 @@ import { SerializationHelper } from './util/SerializationHelper'; * or update ourselves based on the server's update message, that occurs here */ export namespace DocServer { - // eslint-disable-next-line import/no-mutable-exports - let _cache: { [id: string]: RefField | Promise> } = {}; + let _cache: { [id: string]: Doc | Promise> } = {}; export function Cache() { return _cache; } @@ -34,24 +33,24 @@ export namespace DocServer { function errorFunc(): never { throw new Error("Can't use DocServer without calling init first"); } - let _UpdateField: (id: string, diff: any) => void = errorFunc; - let _CreateField: (field: RefField) => void = errorFunc; + let _UpdateField: (id: string, diff: serverOpType) => void = errorFunc; + let _CreateField: (field: Doc) => void = errorFunc; - export function AddServerHandler(socket: Socket, message: Message, handler: (args: T) => any) { + export function AddServerHandler(socket: Socket, message: Message, handler: (args: T) => void) { socket.on(message.Message, Utils.loggingCallback('Incoming', handler, message.Name)); } export function Emit(socket: Socket, message: Message, args: T) { // log('Emit', message.Name, args, false); socket.emit(message.Message, args); } - export function EmitCallback(socket: Socket, message: Message, args: T): Promise; - export function EmitCallback(socket: Socket, message: Message, args: T, fn: (args: any) => any): void; - export function EmitCallback(socket: Socket, message: Message, args: T, fn?: (args: any) => any): void | Promise { + export function EmitCallback(socket: Socket, message: Message, args: T): Promise; + export function EmitCallback(socket: Socket, message: Message, args: T, fn: (args: unknown) => unknown): void; + export function EmitCallback(socket: Socket, message: Message, args: T, fn?: (args: unknown) => unknown): void | Promise { // log('Emit', message.Name, args, false); if (fn) { socket.emit(message.Message, args, Utils.loggingCallback('Receiving', fn, message.Name)); } else { - return new Promise(res => { + return new Promise(res => { socket.emit(message.Message, args, Utils.loggingCallback('Receiving', res, message.Name)); }); } @@ -99,7 +98,7 @@ export namespace DocServer { return ClientUtils.CurrentUserEmail() === 'guest' ? WriteMode.LivePlayground : fieldWriteModes[field] || WriteMode.Default; } - export function registerDocWithCachedUpdate(doc: Doc, field: string, oldValue: any) { + export function registerDocWithCachedUpdate(doc: Doc, field: string, oldValue: FieldType) { let list = docsWithUpdates[field]; if (!list) { list = docsWithUpdates[field] = new Set(); @@ -203,7 +202,7 @@ export namespace DocServer { * the server if the document has not been cached. * @param id the id of the requested document */ - const _GetRefFieldImpl = (id: string, force: boolean = false): Promise> => { + const _GetRefFieldImpl = (id: string, force: boolean = false): Promise> => { // an initial pass through the cache to determine whether the document needs to be fetched, // is already in the process of being fetched or already exists in the // cache @@ -221,7 +220,7 @@ export namespace DocServer { // future .proto calls on the Doc won't have to go farther than the cache to get their actual value. const deserializeField = getSerializedField.then(async fieldJson => { // deserialize - const field = await SerializationHelper.Deserialize(fieldJson); + const field = (await SerializationHelper.Deserialize(fieldJson)) as Doc; if (force && field && cached instanceof Doc) { cached[UpdatingFromServer] = true; Array.from(Object.keys(field)).forEach(key => { @@ -247,7 +246,7 @@ export namespace DocServer { // here, indicate that the document associated with this id is currently // being retrieved and cached !force && (_cache[id] = deserializeField); - return force ? (cached as any) : deserializeField; + return force ? (cached instanceof Promise ? cached : new Promise(res => res(cached))) : deserializeField; } if (cached instanceof Promise) { // BEING RETRIEVED AND CACHED => some other caller previously (likely recently) called GetRefField(s), @@ -261,7 +260,7 @@ export namespace DocServer { // (field instanceof Doc) && fetchProto(field); ); }; - const _GetCachedRefFieldImpl = (id: string): Opt => { + const _GetCachedRefFieldImpl = (id: string): Opt => { const cached = _cache[id]; if (cached !== undefined && !(cached instanceof Promise)) { return cached; @@ -269,174 +268,102 @@ export namespace DocServer { return undefined; }; - let _GetRefField: (id: string, force: boolean) => Promise> = errorFunc; - let _GetCachedRefField: (id: string) => Opt = errorFunc; + let _GetRefField: (id: string, force: boolean) => Promise> = errorFunc; + let _GetCachedRefField: (id: string) => Opt = errorFunc; - export function GetRefField(id: string, force = false): Promise> { + export function GetRefField(id: string, force = false): Promise> { return _GetRefField(id, force); } - export function GetCachedRefField(id: string): Opt { + export function GetCachedRefField(id: string): Opt { return _GetCachedRefField(id); } - export async function getYoutubeChannels() { - return DocServer.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.Channels }); - } - - export function getYoutubeVideos(videoTitle: string, callBack: (videos: any[]) => void) { - DocServer.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.SearchVideo, userInput: videoTitle }, callBack); - } - - export function getYoutubeVideoDetails(videoIds: string, callBack: (videoDetails: any[]) => void) { - DocServer.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.VideoDetails, videoIds: videoIds }, callBack); - } - /** * Given a list of Doc GUIDs, this utility function will asynchronously attempt to each id's associated * field, first looking in the RefField cache and then communicating with * the server if the document has not been cached. * @param ids the ids that map to the reqested documents */ - const _GetRefFieldsImpl = async (ids: string[]): Promise<{ [id: string]: Opt }> => { - const requestedIds: string[] = []; - const promises: Promise[] = []; - - let defaultRes: any; - const defaultPromise = new Promise(res => { - defaultRes = res; + const _GetRefFieldsImpl = async (ids: string[]): Promise>> => { + const uncachedRequestedIds: string[] = []; + const deserializeDocPromises: Promise>[] = []; + + // setup a Promise that we will resolve after all cached Docs have been acquired. + let allCachesFilledResolver!: (value: Opt | PromiseLike>) => void; + const allCachesFilledPromise = new Promise>(res => { + allCachesFilledResolver = res; }); - const defaultPromises: { p: Promise; id: string }[] = []; - // 1) an initial pass through the cache to determine - // i) which documents need to be fetched - // ii) which are already in the process of being fetched - // iii) which already exist in the cache + + const fetchDocPromises: Map>> = new Map(); // { p: Promise; id: string }[] = []; // promises to fetch the value for a requested Doc + // Determine which requested documents need to be fetched // eslint-disable-next-line no-restricted-syntax for (const id of ids.filter(filterid => filterid)) { - const cached = _cache[id]; - if (cached === undefined) { - defaultPromises.push({ - id, - // eslint-disable-next-line no-loop-func - p: (_cache[id] = new Promise(res => { - defaultPromise.then(() => res(_cache[id])); - })), - }); - // NOT CACHED => we'll have to send a request to the server - requestedIds.push(id); - } else if (cached instanceof Promise) { - // BEING RETRIEVED AND CACHED => some other caller previously (likely recently) called GetRefField(s), - // and requested one of the documents I'm looking for. Shouldn't fetch again, just - // wait until this promise is resolved (see 7) - promises.push(cached); - // waitingIds.push(id); - } else { - // CACHED => great, let's just add it to the field map - // map[id] = cached; + if (_cache[id] === undefined) { + // EMPTY CACHE - make promise that we resolve after all batch-requested Docs have been fetched and deserialized and we know we have this Doc + const fetchPromise = new Promise>(res => + allCachesFilledPromise.then(() => { + // if all Docs have been cached, then we can be sure the fetched Doc has been found and cached. So return it to anyone who had been awaiting it. + const cache = _cache[id]; + if (!(cache instanceof Doc)) console.log('CACHE WAS NEVER FILLED!!'); + res(cache instanceof Doc ? cache : undefined); + }) + ); + // eslint-disable-next-line no-loop-func + fetchDocPromises.set(id, (_cache[id] = fetchPromise)); + uncachedRequestedIds.push(id); // add to list of Doc requests from server } + // else CACHED => do nothing, Doc or promise of Doc is already in cache } - if (requestedIds.length) { - // 2) synchronously, we emit a single callback to the server requesting the serialized (i.e. represented by a string) - // fields for the given ids. This returns a promise, which, when resolved, indicates that all the JSON serialized versions of - // the fields have been returned from the server - console.log('Requesting ' + requestedIds.length); - setTimeout(() => - runInAction(() => { - FieldLoader.ServerLoadStatus.requested = requestedIds.length; - }) - ); - const serializedFields = await DocServer.EmitCallback(_socket, MessageStore.GetRefFields, requestedIds); - - // 3) when the serialized RefFields have been received, go head and begin deserializing them into objects. - // Here, once deserialized, we also invoke .proto to 'load' the documents' prototypes, which ensures that all - // future .proto calls on the Doc won't have to go farther than the cache to get their actual value. + if (uncachedRequestedIds.length) { + console.log('Requesting ' + uncachedRequestedIds.length); + setTimeout(action(() => { FieldLoader.ServerLoadStatus.requested = uncachedRequestedIds.length; })); // prettier-ignore + + // Synchronously emit a single server request for the serialized (i.e. represented by a string) Doc ids + // This returns a promise, that resolves when all the JSON serialized Docs have been retrieved + const serializedFields = (await DocServer.EmitCallback(_socket, MessageStore.GetRefFields, uncachedRequestedIds)) as { id: string; fields: unknown[]; __type: string }[]; + let processed = 0; - console.log('deserializing ' + serializedFields.length + ' fields'); + console.log('Retrieved ' + serializedFields.length + ' fields'); + // After the serialized Docs have been received, deserialize them into objects. // eslint-disable-next-line no-restricted-syntax for (const field of serializedFields) { - processed++; - if (processed % 150 === 0) { + // eslint-disable-next-line no-await-in-loop + ++processed % 150 === 0 && + (await new Promise( + res => + setTimeout(action(() => res(FieldLoader.ServerLoadStatus.retrieved = processed))) // prettier-ignore + )); // force loading to yield to splash screen rendering to update progress + + if (fetchDocPromises.has(field.id)) { + // Doc hasn't started deserializing yet - the cache still has the fetch promise // eslint-disable-next-line no-loop-func - runInAction(() => { - FieldLoader.ServerLoadStatus.retrieved = processed; + const deserializePromise = SerializationHelper.Deserialize(field).then((deserialized: unknown) => { + const doc = deserialized as Doc; + // overwrite any fetch or deserialize cache promise with deserialized value. + // fetch promises wait to resolve until after all deserializations; deserialize promises resolve upon deserializaton + if (deserialized !== undefined) _cache[field.id] = doc; + else delete _cache[field.id]; + + return doc; }); - // eslint-disable-next-line no-await-in-loop - await new Promise(res => { - setTimeout(res); - }); // force loading to yield to splash screen rendering to update progress - } - const cached = _cache[field.id]; - if (!cached || (cached instanceof Promise && defaultPromises.some(dp => dp.p === cached))) { - // deserialize - // adds to a list of promises that will be awaited asynchronously - promises.push( - // eslint-disable-next-line no-loop-func - (_cache[field.id] = SerializationHelper.Deserialize(field).then(deserialized => { - // overwrite or delete any promises (that we inserted as flags - // to indicate that the field was in the process of being fetched). Now everything - // should be an actual value within or entirely absent from the cache. - if (deserialized !== undefined) { - _cache[field.id] = deserialized; - } else { - delete _cache[field.id]; - } - const promInd = defaultPromises.findIndex(dp => dp.id === field.id); - promInd !== -1 && defaultPromises.splice(promInd, 1); - return deserialized; - })) - ); - // 4) here, for each of the documents we've requested *ourselves* (i.e. weren't promises or found in the cache) - // we set the value at the field's id to a promise that will resolve to the field. - // When we find that promises exist at keys in the cache, THIS is where they were set, just by some other caller (method). - // The mapping in the .then call ensures that when other callers await these promises, they'll - // get the resolved field - } else if (cached instanceof Promise) { + deserializeDocPromises.push((_cache[field.id] = deserializePromise)); // replace the cache's placeholder fetch promise with the deserializePromise + fetchDocPromises.delete(field.id); + } else if (_cache[field.id] instanceof Promise) { console.log('.'); - // promises.push(cached); - } else if (field) { - // console.log('-'); } } } - await Promise.all(promises); - defaultPromises.forEach(df => delete _cache[df.id]); - defaultRes(); - - // 5) at this point, all fields have a) been returned from the server and b) been deserialized into actual Field objects whose - // prototype documents, if any, have also been fetched and cached. - console.log('Deserialized ' + (requestedIds.length - defaultPromises.length) + ' fields'); - // 6) with this confidence, we can now go through and update the cache at the ids of the fields that - // we explicitly had to fetch. To finish it off, we add whatever value we've come up with for a given - // id to the soon-to-be-returned field mapping. - // ids.forEach(id => (map[id] = _cache[id] as any)); - - // 7) those promises we encountered in the else if of 1), which represent - // other callers having already submitted a request to the server for (a) document(s) - // in which we're interested, must still be awaited so that we can return the proper - // values for those as well. - // - // fortunately, those other callers will also hit their own version of 6) and clean up - // the shared cache when these promises resolve, so all we have to do is... - // const otherCallersFetching = await Promise.all(promises); - // ...extract the RefFields returned from the resolution of those promises and add them to our - // own map. - // waitingIds.forEach((id, index) => (map[id] = otherCallersFetching[index])); - - // now, we return our completed mapping from all of the ids that were passed into the method - // to their actual RefField | undefined values. This return value either becomes the input - // argument to the caller's promise (i.e. GetRefFields(["_id1_", "_id2_", "_id3_"]).then(map => //do something with map...)) - // or it is the direct return result if the promise is awaited (i.e. let fields = await GetRefFields(["_id1_", "_id2_", "_id3_"])). - return ids.reduce( - (map, id) => { - map[id] = _cache[id] as any; - return map; - }, - {} as { [id: string]: Opt } - ); + await Promise.all(deserializeDocPromises); // promise resolves when cache is up-to-date with all requested Docs + Array.from(fetchDocPromises).forEach(([id]) => delete _cache[id]); + allCachesFilledResolver(undefined); // notify anyone who was promised a Doc fron when it was just being fetched (since all requested Docs have now been fetched and deserialized) + + console.log('Deserialized ' + (uncachedRequestedIds.length - fetchDocPromises.size) + ' fields'); + return new Map>(ids.map(id => [id, _cache[id] instanceof Doc ? (_cache[id] as Doc) : undefined]) as [string, Opt][]); }; - let _GetRefFields: (ids: string[]) => Promise<{ [id: string]: Opt }> = errorFunc; + let _GetRefFields: (ids: string[]) => Promise>> = errorFunc; export function GetRefFields(ids: string[]) { return _GetRefFields(ids); @@ -454,12 +381,12 @@ export namespace DocServer { * calling the same function throughout the code base (such as in Util.makeReadonly()) * @param field the [RefField] to be serialized and sent to the server to be stored in the database */ - export function CreateField(field: RefField) { + export function CreateField(field: Doc) { _cacheNeedsUpdate = true; _CreateField(field); } - function _CreateFieldImpl(field: RefField) { + function _CreateFieldImpl(field: Doc) { _cache[field[Id]] = field; const initialState = SerializationHelper.Serialize(field); ClientUtils.CurrentUserEmail() !== 'guest' && DocServer.Emit(_socket, MessageStore.CreateField, initialState); @@ -475,22 +402,22 @@ export namespace DocServer { * @param updatedState the new value of the document. At some point, this * should actually be a proper diff, to improve efficiency */ - export function UpdateField(id: string, updatedState: any) { + export function UpdateField(id: string, updatedState: serverOpType) { _UpdateField(id, updatedState); } - function _UpdateFieldImpl(id: string, diff: any) { + function _UpdateFieldImpl(id: string, diff: serverOpType) { !DocServer.Control.isReadOnly() && ClientUtils.CurrentUserEmail() !== 'guest' && DocServer.Emit(_socket, MessageStore.UpdateField, { id, diff }); } - function _respondToUpdateImpl(diff: any) { - const { id } = diff; + function _respondToUpdateImpl(change: { id: string; diff: serverOpType }) { + const { id } = change; // to be valid, the Diff object must reference // a document's id if (id === undefined) { return; } - const update = (f: Opt) => { + const update = (f: Opt) => { // if the RefField is absent from the cache or // its promise in the cache resolves to undefined, there // can't be anything to update @@ -500,7 +427,7 @@ export namespace DocServer { // extract this Doc's update handler const handler = f[HandleUpdate]; if (handler) { - handler.call(f, diff.diff); + handler.call(f, change.diff as { $set: { [key: string]: FieldType } } | { $unset: unknown }); } }; // check the cache for the field @@ -536,8 +463,8 @@ export namespace DocServer { const _RespondToUpdate = _respondToUpdateImpl; const _respondToDelete = _respondToDeleteImpl; - function respondToUpdate(diff: any) { - _RespondToUpdate(diff); + function respondToUpdate(change: { id: string; diff: serverOpType }) { + _RespondToUpdate(change); } function respondToDelete(ids: string | string[]) { @@ -548,7 +475,7 @@ export namespace DocServer { _cache = {}; USER_ID = identifier; _socket = io(`${protocol.startsWith('https') ? 'wss' : 'ws'}://${hostname}:${port}`, { transports: ['websocket'], rejectUnauthorized: false }); - _socket.on('connect_error', (err: any) => console.log(err)); + _socket.on('connect_error', (err: unknown) => console.log(err)); // io.connect(`https://7f079dda.ngrok.io`);// if using ngrok, create a special address for the websocket _GetCachedRefField = _GetCachedRefFieldImpl; diff --git a/src/client/Network.ts b/src/client/Network.ts index 968c407b2..8876d8190 100644 --- a/src/client/Network.ts +++ b/src/client/Network.ts @@ -8,12 +8,13 @@ import { Upload } from '../server/SharedMediaTypes'; * mainly provides methods that the client can use to begin the process of * interacting with the server, such as fetching or uploading files. */ +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace Networking { export async function FetchFromServer(relativeRoute: string) { return (await fetch(relativeRoute)).text(); } - export async function PostToServer(relativeRoute: string, body?: any) { + export async function PostToServer(relativeRoute: string, body?: unknown) { const options = { uri: ClientUtils.prepend(relativeRoute), method: 'POST', @@ -31,7 +32,7 @@ export namespace Networking { * used as the guid. Otherwise, a new guid is generated. */ export interface FileGuidPair { - file: File; + file: File | Blob; guid?: string; } /** @@ -48,15 +49,14 @@ export namespace Networking { if (!fileguidpairs.length) { return []; } - const maxFileSize = 50000000; + const maxFileSize = 5000000; if (fileguidpairs.some(f => f.file.size > maxFileSize)) { - return new Promise(res => { - res([ - { - source: { name: '', type: '', size: 0, toJson: () => ({ name: '', type: '' }) }, - result: { name: '', message: `max file size (${maxFileSize / 1000000}MB) exceeded` }, - }, - ]); + return new Promise[]>(res => { + res([{ + source: { size: 0, filepath: '', mimetype: '', originalFilename: '', newFilename: '',hashAlgorithm: false, + toJSON: () => ({ size: 0, filepath: '', mimetype: '', originalFilename: '', newFilename: '',name: '', length: 0, mtime: new Date(), type: '' }) }, + result: { name: '', message: `max file size (${maxFileSize / 1000000}MB) exceeded` } + }]) // prettier-ignore }); } formData.set('fileguids', fileguidpairs.map(pair => pair.guid).join(';')); @@ -77,7 +77,12 @@ export namespace Networking { const endpoint = browndash ? '[insert endpoint allowing local => browndash]' : '/uploadFormData'; const response = await fetch(endpoint, parameters); - return response.json(); + return response.json().then((json: Upload.FileResponse[]) => + json.map(fileresponse => { + if ('message' in fileresponse.result) fileresponse.result = new Error(fileresponse.result.message); + return fileresponse; + }) + ); } export async function UploadYoutubeToServer(videoId: string, overwriteId?: string): Promise[]> { diff --git a/src/client/documents/DocUtils.ts b/src/client/documents/DocUtils.ts index 0c9fe0315..a503d732b 100644 --- a/src/client/documents/DocUtils.ts +++ b/src/client/documents/DocUtils.ts @@ -35,14 +35,16 @@ import { TaskCompletionBox } from '../views/nodes/TaskCompletedBox'; import { DocumentType } from './DocumentTypes'; import { Docs, DocumentOptions } from './Documents'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const { DFLT_IMAGE_NATIVE_DIM } = require('../views/global/globalCssVariables.module.scss'); // prettier-ignore const defaultNativeImageDim = Number(DFLT_IMAGE_NATIVE_DIM.replace('px', '')); +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DocUtils { - function matchFieldValue(doc: Doc, key: string, valueIn: any): boolean { + function matchFieldValue(doc: Doc, key: string, valueIn: unknown): boolean { let value = valueIn; - const hasFunctionFilter = ClientUtils.HasFunctionFilter(value); + const hasFunctionFilter = ClientUtils.HasFunctionFilter(value as string); if (hasFunctionFilter) { return hasFunctionFilter(StrCast(doc[key])); } @@ -57,8 +59,8 @@ export namespace DocUtils { // prettier-ignore return (value === Doc.FilterNone && !allLinks.length) || (value === Doc.FilterAny && !!allLinks.length) || - (allLinks.some(link => matchLink(value,DocCast(link.link_anchor_1)) || - matchLink(value,DocCast(link.link_anchor_2)) )); + (allLinks.some(link => matchLink(value as string, DocCast(link.link_anchor_1)) || + matchLink(value as string, DocCast(link.link_anchor_2)) )); } if (typeof value === 'string') { value = value.replace(`,${ClientUtils.noRecursionHack}`, ''); @@ -71,9 +73,9 @@ export namespace DocUtils { } const vals = StrListCast(fieldVal); // list typing is very imperfect. casting to a string list doesn't mean that the entries will actually be strings if (vals.length) { - return vals.some(v => typeof v === 'string' && v.includes(value)); // bcz: arghh: Todo: comparison should be parameterized as exact, or substring + return vals.some(v => typeof v === 'string' && v.includes(value as string)); // bcz: arghh: Todo: comparison should be parameterized as exact, or substring } - return Field.toString(fieldVal as FieldType).includes(value); // bcz: arghh: Todo: comparison should be parameterized as exact, or substring + return Field.toString(fieldVal as FieldType).includes(value as string); // bcz: arghh: Todo: comparison should be parameterized as exact, or substring } /** * @param docs @@ -215,13 +217,13 @@ export namespace DocUtils { { acl_Guest: SharingPermissions.Augment, _acl_Guest: SharingPermissions.Augment, - title: ComputedField.MakeFunction('generateLinkTitle(this)') as any, + title: ComputedField.MakeFunction('generateLinkTitle(this)') as unknown as string, // title can accept functions even though type says it can't link_anchor_1_useSmallAnchor: source.useSmallAnchor ? true : undefined, link_anchor_2_useSmallAnchor: target.useSmallAnchor ? true : undefined, link_relationship: linkSettings.link_relationship, link_description: linkSettings.link_description, - x: ComputedField.MakeFunction(`((this.${a}?.x||0)+(this.${b}?.x||0))/2`) as any, - y: ComputedField.MakeFunction(`((this.${a}?.y||0)+(this.${b}?.y||0))/2`) as any, + x: ComputedField.MakeFunction(`((this.${a}?.x||0)+(this.${b}?.x||0))/2`) as unknown as number, // x can accept functions even though type says it can't + y: ComputedField.MakeFunction(`((this.${a}?.y||0)+(this.${b}?.y||0))/2`) as unknown as number, // y can accept functions even though type says it can't link_autoMoveAnchors: true, _lockedPosition: true, _layout_showCaption: '', // removed since they conflict with showing a link with a LinkBox (ie, line, not comparison box) @@ -235,10 +237,10 @@ export namespace DocUtils { ); } - export function AssignScripts(doc: Doc, scripts?: { [key: string]: string | undefined }, funcs?: { [key: string]: string }) { + export function AssignScripts(doc: Doc, scripts?: { [key: string]: string | undefined }, funcs?: { [key: string]: string | undefined }) { scripts && Object.keys(scripts).forEach(key => { - const script = scripts[key]; + const script = scripts[key] as string; if (ScriptCast(doc[key])?.script.originalScript !== scripts[key] && script) { (key.startsWith('_') ? doc : Doc.GetProto(doc))[key] = ScriptField.MakeScript(script, { this: Doc.name, @@ -261,16 +263,17 @@ export namespace DocUtils { .filter(key => !key.endsWith('-setter')) .forEach(key => { const cfield = ComputedField.WithoutComputed(() => FieldValue(doc[key])); - if (ScriptCast(cfield)?.script.originalScript !== funcs[key]) { + const func = funcs[key]; + if (ScriptCast(cfield)?.script.originalScript !== func) { const setFunc = Cast(funcs[key + '-setter'], 'string', null); - (key.startsWith('_') ? doc : Doc.GetProto(doc))[key] = funcs[key] ? ComputedField.MakeFunction(funcs[key], { dragData: Doc.DocDragDataName }, { _readOnly_: true }, setFunc) : undefined; + (key.startsWith('_') ? doc : Doc.GetProto(doc))[key] = func ? ComputedField.MakeFunction(func, { dragData: Doc.DocDragDataName }, { _readOnly_: true }, setFunc) : undefined; } }); return doc; } export function AssignOpts(doc: Doc | undefined, reqdOpts: DocumentOptions, items?: Doc[]) { if (doc) { - const compareValues = (val1: any, val2: any) => { + const compareValues = (val1: unknown, val2: unknown) => { if (val1 instanceof List && val2 instanceof List && val1.length === val2.length) { return !val1.some(v => !val2.includes(v)) || !val2.some(v => val1.includes(v)); } @@ -334,7 +337,7 @@ export namespace DocUtils { if (path.includes(window.location.hostname)) { const s = path.split('/'); const id = s[s.length - 1]; - return DocServer.GetRefField(id).then(field => { + return DocServer.GetRefField(id)?.then(field => { if (field instanceof Doc) { const embedding = Doc.MakeEmbedding(field); embedding.x = (options.x as number) || 0; @@ -354,7 +357,7 @@ export namespace DocUtils { return ctor ? ctor(path, overwriteDoc ? { ...options, title: StrCast(overwriteDoc.title, path) } : options, overwriteDoc) : undefined; } - export function addDocumentCreatorMenuItems(docTextAdder: (d: Doc) => void, docAdder: (d: Doc) => void, x: number, y: number, simpleMenu: boolean = false, pivotField?: string, pivotValue?: string): void { + export function addDocumentCreatorMenuItems(docTextAdder: (d: Doc) => void, docAdder: (d: Doc) => void, x: number, y: number, simpleMenu: boolean = false, pivotField?: string, pivotValue?: string | number | boolean): void { const documentList: ContextMenuProps[] = DocListCast(DocListCast(Doc.MyTools?.data)[0]?.data) .filter(btnDoc => !btnDoc.hidden) .map(btnDoc => Cast(btnDoc?.dragFactory, Doc, null)) @@ -451,7 +454,7 @@ export namespace DocUtils { batch.end(); return doc; } - export function findTemplate(templateName: string, type: string) { + export function findTemplate(templateName: string, doc: Doc) { let docLayoutTemplate: Opt; const iconViews = DocListCast(Cast(Doc.UserDoc().template_icons, Doc, null)?.data); const templBtns = DocListCast(Cast(Doc.UserDoc().template_buttons, Doc, null)?.data); @@ -469,7 +472,8 @@ export namespace DocUtils { // first try to find a template that matches the specific document type (_). otherwise, fallback to a general match on !docLayoutTemplate && allTemplates.forEach(tempDoc => { - StrCast(tempDoc.title) === templateName + '_' + type && (docLayoutTemplate = tempDoc); + const templateType = StrCast(doc[templateName + '_fieldKey'] || doc.type); + StrCast(tempDoc.title) === templateName + '_' + templateType && (docLayoutTemplate = tempDoc); }); !docLayoutTemplate && allTemplates.forEach(tempDoc => { @@ -481,7 +485,7 @@ export namespace DocUtils { const templateName = templateSignature.replace(/\(.*\)/, ''); doc.layout_fieldKey = 'layout_' + (templateSignature || (docLayoutTemplate?.title ?? '')); // eslint-disable-next-line no-param-reassign - docLayoutTemplate = docLayoutTemplate || findTemplate(templateName, StrCast(doc.isGroup && doc.transcription ? 'transcription' : doc.type)); + docLayoutTemplate = docLayoutTemplate || findTemplate(templateName, doc); const customName = 'layout_' + templateSignature; const _width = NumCast(doc._width); @@ -619,7 +623,7 @@ export namespace DocUtils { const proto = protoIn; if (Upload.isImageInformation(result)) { const maxNativeDim = Math.min(Math.max(result.nativeHeight, result.nativeWidth), defaultNativeImageDim); - const exifRotation = StrCast((result.exifData?.data as any)?.Orientation).toLowerCase(); + const exifRotation = StrCast(result.exifData?.data?.Orientation).toLowerCase(); proto.data_nativeOrientation = result.exifData?.data?.image?.Orientation ?? (exifRotation.includes('rotate 90') || exifRotation.includes('rotate 270') ? 5 : undefined); proto.data_nativeWidth = result.nativeWidth < result.nativeHeight ? (maxNativeDim * result.nativeWidth) / result.nativeHeight : maxNativeDim; proto.data_nativeHeight = result.nativeWidth < result.nativeHeight ? maxNativeDim : maxNativeDim / (result.nativeWidth / result.nativeHeight); @@ -697,10 +701,10 @@ export namespace DocUtils { source: { newFilename, mimetype }, result, } = upfiles.lastElement(); - if ((result as any).message) { + if (result instanceof Error) { if (overwriteDoc) { overwriteDoc.isLoading = false; - overwriteDoc.loadingError = (result as any).message; + overwriteDoc.loadingError = result.message; Doc.removeCurrentlyLoading(overwriteDoc); } } else newFilename && processFileupload(generatedDocuments, newFilename, mimetype ?? '', result, options, overwriteDoc); @@ -736,9 +740,9 @@ export namespace DocUtils { source: { newFilename, mimetype }, result, } = upfiles.lastElement() ?? { source: { newFilename: '', mimetype: '' }, result: { message: 'upload failed' } }; - if ((result as any).message) { + if (result instanceof Error) { if (overwriteDoc) { - overwriteDoc.loadingError = (result as any).message; + overwriteDoc.loadingError = result.message; Doc.removeCurrentlyLoading(overwriteDoc); } } else newFilename && mimetype && processFileupload(generatedDocuments, newFilename, mimetype, result, options, overwriteDoc); @@ -768,7 +772,7 @@ export namespace DocUtils { export async function Zip(doc: Doc, zipFilename = 'dashExport.zip') { const { clone, map, linkMap } = await Doc.MakeClone(doc); const proms = new Set(); - function replacer(key: any, value: any) { + function replacer(key: string, value: { url: string; [key: string]: unknown }) { if (key && ['branchOf', 'cloneOf', 'cursors'].includes(key)) return undefined; if (value?.__type === 'image') { const extension = value.url.replace(/.*\./, ''); @@ -804,8 +808,8 @@ export namespace DocUtils { return value; } - const docs: { [id: string]: any } = {}; - const links: { [id: string]: any } = {}; + const docs: { [id: string]: unknown } = {}; + const links: { [id: string]: unknown } = {}; Array.from(map.entries()).forEach(f => { docs[f[0]] = f[1]; }); @@ -826,13 +830,13 @@ export namespace DocUtils { } else promArr.forEach((url, i) => { // loading a file and add it in a zip file - JSZipUtils.getBinaryContent(window.location.origin + '/' + url, (err: any, data: any) => { + JSZipUtils.getBinaryContent(window.location.origin + '/' + url, (err: unknown, data: unknown) => { if (err) throw err; // or handle the error // // Generate a directory within the Zip file structure // const assets = zip.folder("assets"); // assets.file(filename, data, {binary: true}); const assetPathOnServer = promArr[i].replace(window.location.origin + '/', '').replace(/\//g, '%%%'); - zip.file(assetPathOnServer, data, { binary: true }); + zip.file(assetPathOnServer, data as string, { binary: true }); console.log(' => ' + url); if (++count === promArr.length) { zip.file('docs.json', jsonDocs); @@ -862,7 +866,7 @@ ScriptingGlobals.add(function copyDragFactory(dragFactory: Doc, asDelegate?: boo return dragFactory instanceof Doc ? (asDelegate ? DocUtils.delegateDragFactory(dragFactory) : DocUtils.copyDragFactory(dragFactory)) : dragFactory; }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function makeDelegate(proto: any) { +ScriptingGlobals.add(function makeDelegate(proto: Doc) { const d = Docs.Create.DelegateDocument(proto, { title: 'child of ' + proto.title }); return d; }); diff --git a/src/client/documents/DocumentTypes.ts b/src/client/documents/DocumentTypes.ts index 8f95068db..53edb2e31 100644 --- a/src/client/documents/DocumentTypes.ts +++ b/src/client/documents/DocumentTypes.ts @@ -31,7 +31,6 @@ export enum DocumentType { // special purpose wrappers that either take no data or are compositions of lower level types LINK = 'link', - IMPORT = 'import', PRES = 'presentation', PRESELEMENT = 'preselement', COMPARISON = 'comparison', diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index b96fdb4bd..d7fdf016c 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -141,12 +141,12 @@ class RtfInfo extends FInfo { } class ListInfo extends FInfo { fieldType? = FInfoFieldType.list; - values?: List[] = []; + values?: List[] = []; } type BOOLt = BoolInfo | boolean; type NUMt = NumInfo | number; type STRt = StrInfo | string; -type LISTt = ListInfo | List; +type LISTt = ListInfo | List; type DOCt = DocInfo | Doc; type RTFt = RtfInfo | RichTextField; type DIMt = DimInfo; // | typeof DimUnit.Pixel | typeof DimUnit.Ratio; @@ -358,7 +358,7 @@ export class DocumentOptions { presentation_duration?: NUMt = new NumInfo('the duration of the slide in presentation view', false); presentation_zoomText?: BOOLt = new BoolInfo('whether text anchors should shown in a larger box when following links to make them stand out', false); - data?: any; + data?: FieldType; data_useCors?: BOOLt = new BoolInfo('whether CORS protocol should be used for web page'); columnHeaders?: List; // headers for stacking views schemaHeaders?: List; // headers for schema view @@ -464,13 +464,14 @@ export class DocumentOptions { sidebar_color?: string; // background color of text sidebar sidebar_type_collection?: string; // collection type of text sidebar - data_dashboards?: List; // list of dashboards used in shareddocs; + data_dashboards?: List; // list of dashboards used in shareddocs; textTransform?: string; letterSpacing?: string; iconTemplate?: string; // name of icon template style + icon_fieldKey?: string; // specifies the icon template to use (e.g., icon_fieldKey='george', then the icon template's name is icon_george; otherwise, the template's name would be icon_ where type is the Doc's type(pdf,rich text, etc)) selectedIndex?: NUMt = new NumInfo("which item in a linear view has been selected using the 'thumb doc' ui"); - fieldValues?: List; // possible values a field can have (used by FieldInfo's only) + fieldValues?: List; // possible values a field can have (used by FieldInfo's only) fieldType?: string; // display type of a field, e.g. string, number, enumeration (used by FieldInfo's only) clipboard?: Doc; @@ -484,7 +485,10 @@ export class DocumentOptions { } export const DocOptions = new DocumentOptions(); + +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace Docs { + // eslint-disable-next-line @typescript-eslint/no-namespace export namespace Prototypes { type LayoutSource = { LayoutString: (key: string) => string }; type PrototypeTemplate = { @@ -492,7 +496,6 @@ export namespace Docs { view: LayoutSource; dataField: string; }; - data?: any; options?: Partial; }; type TemplateMap = Map; @@ -554,7 +557,7 @@ export namespace Docs { const actualProtos = await DocServer.GetRefFields(prototypeIds); // update this object to include any default values: DocumentOptions for all prototypes prototypeIds.forEach(id => { - const existing = actualProtos[id] as Doc; + const existing = actualProtos.get(id); const type = id.replace(suffix, '') as DocumentType; // get or create prototype of the specified type... const target = buildPrototype(type, id, existing); @@ -627,16 +630,15 @@ export namespace Docs { acl_Guest: SharingPermissions.View, ...(template.options || {}), layout: layout.view?.LayoutString(layout.dataField), - data: template.data, }; Object.entries(options) .filter(pair => typeof pair[1] === 'string' && pair[1].startsWith('@')) .forEach(pair => { if (!existing || ScriptCast(existing[pair[0]])?.script.originalScript !== pair[1].substring(1)) { - (options as any)[pair[0]] = ComputedField.MakeFunction(pair[1].substring(1)); + (options as { [key: string]: unknown })[pair[0]] = ComputedField.MakeFunction(pair[1].substring(1)); } }); - return Doc.assign(existing ?? new Doc(prototypeId, true), OmitKeys(options, Object.keys(existing ?? {})).omit, undefined, true); + return Doc.assign(existing ?? new Doc(prototypeId, true), OmitKeys(options, Object.keys(existing ?? {})).omit as { [key: string]: FieldType }, undefined, true); } } @@ -644,6 +646,7 @@ export namespace Docs { * Encapsulates the factory used to create new document instances * delegated from top-level prototypes */ + // eslint-disable-next-line @typescript-eslint/no-namespace export namespace Create { /** * This function receives the relevant document prototype and uses @@ -667,10 +670,10 @@ export namespace Docs { function InstanceFromProto(proto: Doc, data: FieldType | undefined, options: DocumentOptions, delegId?: string, fieldKey: string = 'data', protoId?: string, placeholderDocIn?: Doc, noView?: boolean) { const placeholderDoc = placeholderDocIn; const viewKeys = ['x', 'y', 'isSystem']; // keys that should be addded to the view document even though they don't begin with an "_" - const { omit: dataProps, extract: viewProps } = OmitKeys(options, viewKeys, '^_'); + const { omit: dataProps, extract: viewProps } = OmitKeys(options, viewKeys, '^_') as { omit: { [key: string]: FieldType | undefined }; extract: { [key: string]: FieldType | undefined } }; // dataProps.acl_Override = SharingPermissions.Unset; - dataProps.acl_Guest = options.acl_Guest ?? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View); + dataProps.acl_Guest = options.acl_Guest?.toString() ?? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View); dataProps.isSystem = viewProps.isSystem; dataProps.isDataDoc = true; dataProps.author = ClientUtils.CurrentUserEmail(); @@ -693,7 +696,7 @@ export namespace Docs { } if (!noView) { - const viewFirstProps: { [id: string]: any } = { author: ClientUtils.CurrentUserEmail() }; + const viewFirstProps: { [id: string]: FieldType } = { author: ClientUtils.CurrentUserEmail() }; viewFirstProps.acl_Guest = options._acl_Guest ?? (Doc.defaultAclPrivate ? SharingPermissions.None : SharingPermissions.View); let viewDoc: Doc; // determines whether viewDoc should be created using placeholder Doc or default @@ -710,7 +713,7 @@ export namespace Docs { viewDoc = Doc.assign(Doc.MakeDelegate(dataDoc, delegId), viewFirstProps, true, true); } Doc.assign(viewDoc, viewProps, true, true); - if (![DocumentType.LINK, DocumentType.CONFIG, DocumentType.LABEL].includes(viewDoc.type as any)) { + if (![DocumentType.LINK, DocumentType.CONFIG, DocumentType.LABEL].includes(viewDoc.type as DocumentType)) { CreateLinkToActiveAudio(() => viewDoc); } updateCachedAcls(dataDoc); @@ -909,7 +912,7 @@ export namespace Docs { } export function ConfigDocument(options: DocumentOptions, id?: string) { - return InstanceFromProto(Prototypes.get(DocumentType.CONFIG), options?.data, options, id, '', undefined, undefined, true); + return InstanceFromProto(Prototypes.get(DocumentType.CONFIG), undefined, options, id, '', undefined, undefined, true); } export function PileDocument(documents: Array, options: DocumentOptions, id?: string) { diff --git a/src/client/util/CalendarManager.tsx b/src/client/util/CalendarManager.tsx index 77cf80151..d0cd69273 100644 --- a/src/client/util/CalendarManager.tsx +++ b/src/client/util/CalendarManager.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { DateRangePicker, Provider, defaultTheme } from '@adobe/react-spectrum'; import { IconLookup, faPlus } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -19,6 +17,7 @@ import { DocumentView } from '../views/nodes/DocumentView'; import { TaskCompletionBox } from '../views/nodes/TaskCompletedBox'; import './CalendarManager.scss'; import { SnappingManager } from './SnappingManager'; +import { CalendarDate, DateValue } from '@internationalized/date'; // import 'react-date-range/dist/styles.css'; // import 'react-date-range/dist/theme/default.css'; @@ -29,7 +28,7 @@ interface CalendarSelectOptions { value: string; } -const formatCalendarDateToString = (calendarDate: any) => { +const formatCalendarDateToString = (calendarDate: DateValue) => { console.log('Formatting the following date: ', calendarDate); const date = new Date(calendarDate.year, calendarDate.month - 1, calendarDate.day); console.log(typeof date); @@ -44,7 +43,7 @@ const formatCalendarDateToString = (calendarDate: any) => { // TODO: For a doc already in a calendar: give option to edit date range, delete from calendar @observer -export class CalendarManager extends ObservableReactComponent<{}> { +export class CalendarManager extends ObservableReactComponent { // eslint-disable-next-line no-use-before-define public static Instance: CalendarManager; @observable private isOpen = false; @@ -101,7 +100,7 @@ export class CalendarManager extends ObservableReactComponent<{}> { this.layoutDocAcls = false; }); - constructor(props: {}) { + constructor(props: object) { super(props); CalendarManager.Instance = this; makeObservable(this); @@ -109,15 +108,6 @@ export class CalendarManager extends ObservableReactComponent<{}> { componentDidMount(): void {} - @action - handleSelectChange = (option: any) => { - if (option) { - const selectOpt = option as CalendarSelectOptions; - this.selectedExistingCalendarOption = selectOpt; - this.calendarName = selectOpt.value; // or label - } - }; - @action handleCalendarTitleChange = (event: React.ChangeEvent) => { console.log('Existing calendars: ', this.existingCalendars); @@ -212,15 +202,13 @@ export class CalendarManager extends ObservableReactComponent<{}> { }; @observable - selectedDateRange: any = [ - { - start: new Date(), - end: new Date(), - }, - ]; + selectedDateRange: { start: DateValue; end: DateValue } = { + start: new CalendarDate(2024, 1, 1), + end: new CalendarDate(2024, 1, 1), + }; @action - setSelectedDateRange = (range: any) => { + setSelectedDateRange = (range: { start: DateValue; end: DateValue }) => { console.log('Range: ', range); this.selectedDateRange = range; }; @@ -228,14 +216,14 @@ export class CalendarManager extends ObservableReactComponent<{}> { @computed get createButtonActive() { if (this.calendarName.length === 0 || this.errorMessage.length > 0) return false; // disabled if no calendar name - let startDate: Date | undefined; - let endDate: Date | undefined; + let startDate: DateValue | undefined; + let endDate: DateValue | undefined; try { startDate = this.selectedDateRange.start; endDate = this.selectedDateRange.end; console.log(startDate); console.log(endDate); - } catch (e: any) { + } catch (e) { console.log(e); return false; // disabled } @@ -288,7 +276,13 @@ export class CalendarManager extends ObservableReactComponent<{}> { isSearchable options={this.selectOptions} value={this.selectedExistingCalendarOption} - onChange={this.handleSelectChange} + onChange={change => { + if (change) { + const selectOpt = change; + this.selectedExistingCalendarOption = selectOpt; + this.calendarName = selectOpt.value; // or label + } + }} styles={{ control: () => ({ display: 'inline-flex', diff --git a/src/client/util/CaptureManager.tsx b/src/client/util/CaptureManager.tsx index 253cdd8b5..47f31612f 100644 --- a/src/client/util/CaptureManager.tsx +++ b/src/client/util/CaptureManager.tsx @@ -1,26 +1,24 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, computed, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { addStyleSheet } from '../../ClientUtils'; -import { Doc } from '../../fields/Doc'; +import { Doc, Opt } from '../../fields/Doc'; import { DocCast, StrCast } from '../../fields/Types'; import { MainViewModal } from '../views/MainViewModal'; import { DocumentView } from '../views/nodes/DocumentView'; import './CaptureManager.scss'; @observer -export class CaptureManager extends React.Component<{}> { +export class CaptureManager extends React.Component { // eslint-disable-next-line no-use-before-define public static Instance: CaptureManager; static _settingsStyle = addStyleSheet(); - @observable _document: any = undefined; + @observable _document: Opt = undefined; @observable isOpen: boolean = false; // whether the CaptureManager is to be displayed or not. // eslint-disable-next-line react/sort-comp - constructor(props: {}) { + constructor(props: object) { super(props); makeObservable(this); CaptureManager.Instance = this; diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index e095bc659..c99ce1832 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -1,7 +1,7 @@ import { reaction, runInAction } from "mobx"; import * as rp from 'request-promise'; import { ClientUtils, OmitKeys } from "../../ClientUtils"; -import { Doc, DocListCast, DocListCastAsync, Opt } from "../../fields/Doc"; +import { Doc, DocListCast, DocListCastAsync, FieldType, Opt } from "../../fields/Doc"; import { DocData } from "../../fields/DocSymbols"; import { InkTool } from "../../fields/InkField"; import { List } from "../../fields/List"; @@ -60,11 +60,10 @@ interface Button { // fields that do not correspond to DocumentOption fields scripts?: { script?: string; onClick?: string; onDoubleClick?: string } - funcs?: { [key:string]: any}; + funcs?: { [key:string]: string}; subMenu?: Button[]; } -// eslint-disable-next-line import/no-mutable-exports export let resolvedPorts: { server: number, socket: number }; export class CurrentUserUtils { @@ -174,8 +173,8 @@ export class CurrentUserUtils { const imageBox = (opts: DocumentOptions, fieldKey:string) => Docs.Create.ImageDocument( "http://www.cs.brown.edu/~bcz/noImage.png", { layout:ImageBox.LayoutString(fieldKey), "icon_nativeWidth": 360 / 4, "icon_nativeHeight": 270 / 4, iconTemplate:DocumentType.IMG, _width: 360 / 4, _height: 270 / 4, _layout_showTitle: "title", ...opts }); const fontBox = (opts:DocumentOptions, fieldKey:string) => Docs.Create.FontIconDocument({ layout:FontIconBox.LayoutString(fieldKey), _nativeHeight: 30, _nativeWidth: 30, _width: 30, _height: 30, ...opts }); - const makeIconTemplate = (type: DocumentType | undefined, templateField: string, opts:DocumentOptions) => { - const title = "icon" + (type ? "_" + type : ""); + const makeIconTemplate = (name: DocumentType | string | undefined, templateField: string, opts:DocumentOptions) => { + const title = "icon" + (name ? "_" + name : ""); const curIcon = DocCast(templateIconsDoc[title]); const creator = (() => { switch (opts.iconTemplate) { case DocumentType.IMG : return imageBox; @@ -189,6 +188,10 @@ export class CurrentUserUtils { {onClick:"deiconifyView(documentView)", onDoubleClick: "deiconifyViewToLightbox(documentView)", }); }; const iconTemplates = [ + // see createCustomView for where icon templates are created at run time + // templates defined by a Docs icon_fieldKey (e.g., ink with a transciprtion shows a template of the transcribed text, not miniature ink) + makeIconTemplate("transcription", "text", { iconTemplate:DocumentType.LABEL, backgroundColor: "orange" }), + // templates defined by a Doc's type makeIconTemplate(undefined, "title", { iconTemplate:DocumentType.LABEL, backgroundColor: "dimgray"}), makeIconTemplate(DocumentType.AUDIO, "title", { iconTemplate:DocumentType.LABEL, backgroundColor: "lightgreen"}), makeIconTemplate(DocumentType.PDF, "title", { iconTemplate:DocumentType.LABEL, backgroundColor: "pink"}), @@ -199,10 +202,9 @@ export class CurrentUserUtils { makeIconTemplate(DocumentType.COL, "icon", { iconTemplate:DocumentType.IMG}), makeIconTemplate(DocumentType.VID, "icon", { iconTemplate:DocumentType.IMG}), makeIconTemplate(DocumentType.BUTTON,"title", { iconTemplate:DocumentType.FONTICON}), - // nasty hack .. templates are looked up exclusively by type -- but we want a template for a document with a certain field (transcription) .. so this hack and the companion hack in createCustomView does this for now - makeIconTemplate("transcription" as any, "transcription", { iconTemplate:DocumentType.LABEL, backgroundColor: "orange" }), - // makeIconTemplate(DocumentType.PDF, "icon", {iconTemplate:DocumentType.IMG}, (opts) => imageBox("http://www.cs.brown.edu/~bcz/noImage.png", opts)) - ].filter(d => d).map(d => d!); + // makeIconTemplate(DocumentType.PDF, "icon", { iconTemplate:DocumentType.IMG}), + ].filter(d => d).map(d => d!); + DocUtils.AssignOpts(DocCast(doc[field]), {}, iconTemplates); } @@ -349,9 +351,9 @@ pie title Minerals in my tap water plotlyApi(); mermaidsApi(); const emptyThings:{key:string, // the field name where the empty thing will be stored opts:DocumentOptions, // the document options that are required for the empty thing - funcs?:{[key:string]: any}, // computed fields that are rquired for the empth thing - scripts?:{[key:string]: any}, - creator:(opts:DocumentOptions)=> any // how to create the empty thing if it doesn't exist + funcs?:{[key:string]: string}, // computed fields that are rquired for the empth thing + scripts?:{[key:string]: string}, + creator:(opts:DocumentOptions)=> Doc // how to create the empty thing if it doesn't exist }[] = [ {key: "Note", creator: opts => Docs.Create.TextDocument("", opts), opts: { _width: 200, _layout_autoHeight: true }}, {key: "Flashcard", creator: opts => Docs.Create.ComparisonDocument("", opts), opts: { _layout_isFlashcard: true, _width: 300, _height: 300}}, @@ -402,7 +404,7 @@ pie title Minerals in my tap water { toolTip: "Tap or drag to create a collection", title: "Col", icon: "folder", dragFactory: doc.emptyCollection as Doc, clickFactory: DocCast(doc.emptyTab)}, { toolTip: "Tap or drag to create a webpage", title: "Web", icon: "globe-asia", dragFactory: doc.emptyWebpage as Doc, clickFactory: DocCast(doc.emptyWebpage)}, { toolTip: "Tap or drag to create a comparison box", title: "Compare", icon: "columns", dragFactory: doc.emptyComparison as Doc, clickFactory: DocCast(doc.emptyComparison)}, - { toolTip: "Tap or drag to create a diagram", title: "Diagram", icon: "tree", dragFactory: doc.emptyDiagram as Doc, clickFactory: DocCast(doc.emptyDiagram)}, + { toolTip: "Tap or drag to create a diagram", title: "Diagram", icon: "tree", dragFactory: doc.emptyDiagram as Doc, clickFactory: DocCast(doc.emptyDiagram)}, { toolTip: "Tap or drag to create an audio recorder", title: "Audio", icon: "microphone", dragFactory: doc.emptyAudio as Doc, clickFactory: DocCast(doc.emptyAudio), openFactoryLocation: OpenWhere.overlay}, { toolTip: "Tap or drag to create a map", title: "Map", icon: "map-marker-alt", dragFactory: doc.emptyMap as Doc, clickFactory: DocCast(doc.emptyMap)}, { toolTip: "Tap or drag to create a chat assistant", title: "Assistant Chat", icon: "book",dragFactory: doc.emptyChat as Doc, clickFactory: DocCast(doc.emptyChat)}, @@ -411,11 +413,11 @@ pie title Minerals in my tap water { toolTip: "Tap or drag to create a button", title: "Button", icon: "circle", dragFactory: doc.emptyButton as Doc, clickFactory: DocCast(doc.emptyButton)}, { toolTip: "Tap or drag to create a scripting box", title: "Script", icon: "terminal", dragFactory: doc.emptyScript as Doc, clickFactory: DocCast(doc.emptyScript), funcs: { hidden: "IsNoviceMode()"}}, { toolTip: "Tap or drag to create a data viz node", title: "DataViz", icon: "chart-bar", dragFactory: doc.emptyDataViz as Doc, clickFactory: DocCast(doc.emptyDataViz)}, - { toolTip: "Tap or drag to create a bullet slide", title: "PPT Slide", icon: "person-chalkboard", dragFactory: doc.emptySlide as Doc, clickFactory: DocCast(doc.emptySlide), openFactoryLocation: OpenWhere.overlay, funcs: { hidden: "IsNoviceMode()"}}, - { toolTip: "Tap or drag to create a view slide", title: "View Slide", icon: "address-card", dragFactory: doc.emptyViewSlide as Doc,clickFactory: DocCast(doc.emptyViewSlide),openFactoryLocation: OpenWhere.overlay,funcs: { hidden: "IsNoviceMode()"}}, - { toolTip: "Tap or drag to create a data note", title: "DataNote", icon: "window-maximize",dragFactory: doc.emptyHeader as Doc,clickFactory: DocCast(doc.emptyHeader), openFactoryAsDelegate: true, funcs: { hidden: "IsNoviceMode()"} }, - { toolTip: "Toggle a Calculator REPL", title: "replviewer", icon: "calculator", clickFactory: '' as any, openFactoryLocation: OpenWhere.overlay}, // hack: clickFactory is not a Doc but will get interpreted as a custom UI by the openDoc() onClick script - // { toolTip: "Toggle an UndoStack", title: "undostacker", icon: "calculator", clickFactory: "" as any, openFactoryLocation: OpenWhere.overlay}, + { toolTip: "Tap or drag to create a bullet slide", title: "PPT Slide", icon: "person-chalkboard",dragFactory: doc.emptySlide as Doc,clickFactory: DocCast(doc.emptySlide), openFactoryLocation: OpenWhere.overlay, funcs: { hidden: "IsNoviceMode()"}}, + { toolTip: "Tap or drag to create a view slide", title: "View Slide", icon: "address-card", dragFactory: doc.emptyViewSlide as Doc,clickFactory: DocCast(doc.emptyViewSlide), openFactoryLocation: OpenWhere.overlay,funcs: { hidden: "IsNoviceMode()"}}, + { toolTip: "Tap or drag to create a data note", title: "DataNote", icon: "window-maximize",dragFactory: doc.emptyHeader as Doc,clickFactory: DocCast(doc.emptyHeader), openFactoryAsDelegate: true, funcs: { hidden: "IsNoviceMode()"} }, + { toolTip: "Toggle a Calculator REPL", title: "replviewer", icon: "calculator", clickFactory: '' as unknown as Doc, openFactoryLocation: OpenWhere.overlay}, // hack: clickFactory is not a Doc but will get interpreted as a custom UI by the openDoc() onClick script + // { toolTip: "Toggle an UndoStack", title: "undostacker", icon: "calculator", clickFactory: "" as any, openFactoryLocation: OpenWhere.overlay}, ].map(tuple => ( { openFactoryLocation: OpenWhere.addRight, scripts: { onClick: 'openDoc(copyDragFactory(this.clickFactory,this.openFactoryAsDelegate), this.openFactoryLocation)', @@ -445,7 +447,7 @@ pie title Minerals in my tap water } /// returns descriptions needed to buttons for the left sidebar to open up panes displaying different collections of documents - static leftSidebarMenuBtnDescriptions(doc: Doc):{title:string, target:Doc, icon:string, toolTip: string, scripts:{[key:string]:any}, funcs?:{[key:string]:any}, hidden?: boolean}[] { + static leftSidebarMenuBtnDescriptions(doc: Doc):{title:string, target:Doc, icon:string, toolTip: string, scripts:{[key:string]:undefined|string}, funcs?:{[key:string]:undefined|string}, hidden?: boolean}[] { const badgeValue = "((len) => len && len !== '0' ? len: undefined)(docList(this.target?.data).filter(doc => !docList(this.target.viewed).includes(doc)).length.toString())"; const getActiveDashTrails = "Doc.ActiveDashboard?.myTrails"; return [ @@ -463,7 +465,7 @@ pie title Minerals in my tap water /// the empty panel that is filled with whichever left menu button's panel has been selected static setupLeftSidebarPanel(doc: Doc, field="myLeftSidebarPanel") { - DocUtils.AssignDocField(doc, field, (opts) => Doc.assign(new Doc(), opts as any), {title:"leftSidebarPanel", isSystem:true, undoIgnoreFields: new List(['proto'])}); + DocUtils.AssignDocField(doc, field, (opts) => Doc.assign(new Doc(), opts as {[key:string]: FieldType}), {title:"leftSidebarPanel", isSystem:true, undoIgnoreFields: new List(['proto'])}); } /// Initializes the left sidebar menu buttons and the panels they open up @@ -523,7 +525,7 @@ pie title Minerals in my tap water const contextMenuLabels = [/* "Create New Dashboard" */] as string[]; const contextMenuIcons = [/* "plus" */] as string[]; const childContextMenuScripts = [`toggleComicMode()`, `snapshotDashboard()`, `shareDashboard(this)`, 'removeDashboard(this)', 'resetDashboard(this)']; // entries must be kept in synch with childContextMenuLabels, childContextMenuIcons, and childContextMenuFilters - const childContextMenuFilters = ['!IsNoviceMode()', '!IsNoviceMode()', undefined as any, undefined as any, '!IsNoviceMode()'];// entries must be kept in synch with childContextMenuLabels, childContextMenuIcons, and childContextMenuScripts + const childContextMenuFilters = ['!IsNoviceMode()', '!IsNoviceMode()', undefined, undefined, '!IsNoviceMode()'];// entries must be kept in synch with childContextMenuLabels, childContextMenuIcons, and childContextMenuScripts const childContextMenuLabels = ["Toggle Comic Mode", "Snapshot Dashboard", "Share Dashboard", "Remove Dashboard", "Reset Dashboard"];// entries must be kept in synch with childContextMenuScripts, childContextMenuIcons, and childContextMenuFilters const childContextMenuIcons = ["tv", "camera", "users", "times", "trash"]; // entries must be kept in synch with childContextMenuScripts, childContextMenuLabels, and childContextMenuFilters const reqdOpts:DocumentOptions = { @@ -545,7 +547,7 @@ pie title Minerals in my tap water myDashboards.childContextMenuScripts = new List(childContextMenuScripts.map(script => ScriptField.MakeFunction(script)!)); } if (Cast(myDashboards.childContextMenuFilters, listSpec(ScriptField), null)?.length !== childContextMenuFilters.length) { - myDashboards.childContextMenuFilters = new List(childContextMenuFilters.map(script => !script ? script: ScriptField.MakeFunction(script)!)); + myDashboards.childContextMenuFilters = new List(childContextMenuFilters.map(script => !script ? script as unknown as ScriptField: ScriptField.MakeFunction(script)!)); } return myDashboards; } @@ -611,7 +613,7 @@ pie title Minerals in my tap water _lockedPosition: true, isSystem: true, flexDirection: "row" }) static multiToggleList = (opts: DocumentOptions, docs: Doc[]) => Docs.Create.FontIconDocument({ - ...opts, data:docs, _gridGap: 0, _xMargin: 5, _yMargin: 5, layout_boxShadow: "0 0", _forceActive: true, + ...opts, data: new List(docs), _gridGap: 0, _xMargin: 5, _yMargin: 5, layout_boxShadow: "0 0", _forceActive: true, dropConverter: ScriptField.MakeScript("convertToButtons(dragData)", { dragData: DragManager.DocumentDragData.name }), _lockedPosition: true, isSystem: true, flexDirection: "row" }) @@ -806,7 +808,7 @@ pie title Minerals in my tap water /// initializes a context menu button for the top bar context menu static setupContextMenuButton(params:Button, btnDoc?:Doc, btnContainer?:Doc) { const reqdOpts:DocumentOptions = { - ...OmitKeys(params, ["scripts", "funcs", "subMenu"]).omit, + ...OmitKeys(params, ["scripts", "funcs", "subMenu"]).omit as {[key:string]: string|undefined}, color: Colors.WHITE, isSystem: true, _nativeWidth: params.width ?? 30, _width: params.width ?? 30, _height: 30, _nativeHeight: 30, linearBtnWidth: params.linearBtnWidth, @@ -814,7 +816,7 @@ pie title Minerals in my tap water _dragOnlyWithinContainer: true, _lockedPosition: true, _embedContainer: btnContainer }; - const reqdFuncs:{[key:string]:any} = { + const reqdFuncs:{[key:string]:string} = { ...params.funcs, } return DocUtils.AssignScripts(DocUtils.AssignOpts(btnDoc, reqdOpts) ?? Docs.Create.FontIconDocument(reqdOpts), params.scripts, reqdFuncs); @@ -853,14 +855,14 @@ pie title Minerals in my tap water Doc.UserDoc().workspaceRecordingState = undefined; Doc.UserDoc().workspaceReplayingState = undefined; const dockedBtns = DocCast(doc[field]); - const dockBtn = (opts: DocumentOptions, scripts: {[key:string]:string|undefined}, funcs?: {[key:string]:any}) => + const dockBtn = (opts: DocumentOptions, scripts: {[key:string]:string|undefined}, funcs?: {[key:string]:string|undefined}) => DocUtils.AssignScripts(DocUtils.AssignOpts(DocListCast(dockedBtns?.data)?.find(fdoc => fdoc.title === opts.title), opts) ?? CurrentUserUtils.createToolButton(opts), scripts, funcs); const btnDescs = [// setup reactions to change the highlights on the undo/redo buttons -- would be better to encode this in the undo/redo buttons, but the undo/redo stacks are not wired up that way yet - { opts: { title: "Replicate",icon:"camera",toolTip: "Copy dashboard layout",btnType: ButtonType.ClickButton, expertMode: true}, scripts: { onClick: `snapshotDashboard()`}}, - { opts: { title: "Recordings", toolTip: "Workspace Recordings", btnType: ButtonType.DropdownList,expertMode: false, ignoreClick: true, width: 100}, funcs: {hidden: `false`, btnList:`getWorkspaceRecordings()`}, scripts: { script: `{ return replayWorkspace(value, _readOnly_); }`, onDragScript: `{ return startRecordingDrag(value); }`}}, - { opts: { title: "Stop Rec",icon: "stop", toolTip: "Stop recording", btnType: ButtonType.ClickButton, expertMode: false}, funcs: {hidden: `!isWorkspaceRecording()`}, scripts: { onClick: `stopWorkspaceRecording()`}}, + { opts: { title: "Replicate",icon:"camera",toolTip: "Copy dashboard layout",btnType: ButtonType.ClickButton, expertMode: true}, scripts: { onClick: `snapshotDashboard()`}}, + { opts: { title: "Recordings", toolTip: "Workspace Recordings", btnType: ButtonType.DropdownList,expertMode: false, ignoreClick: true, width: 100}, funcs: {hidden: `false`, btnList:`getWorkspaceRecordings()`},scripts: { script: `{ return replayWorkspace(value, _readOnly_); }`, onDragScript: `{ return startRecordingDrag(value); }`}}, + { opts: { title: "Stop Rec",icon: "stop", toolTip: "Stop recording", btnType: ButtonType.ClickButton, expertMode: false}, funcs: {hidden: `!isWorkspaceRecording()`}, scripts: { onClick: `stopWorkspaceRecording()`}}, { opts: { title: "Play", icon: "play", toolTip: "Play recording", btnType: ButtonType.ClickButton, expertMode: false}, funcs: {hidden: `isWorkspaceReplaying() !== "${mediaState.Paused}"`}, scripts: { onClick: `resumeWorkspaceReplaying(getCurrentRecording())`}}, { opts: { title: "Pause", icon: "pause",toolTip: "Pause playback", btnType: ButtonType.ClickButton, expertMode: false}, funcs: {hidden: `isWorkspaceReplaying() !== "${mediaState.Playing}"`}, scripts: { onClick: `pauseWorkspaceReplaying(getCurrentRecording())`}}, { opts: { title: "Stop", icon: "stop", toolTip: "Stop playback", btnType: ButtonType.ClickButton, expertMode: false}, funcs: {hidden: `isWorkspaceReplaying() !== "${mediaState.Paused}"`}, scripts: { onClick: `stopWorkspaceReplaying(getCurrentRecording())`}}, @@ -1002,20 +1004,20 @@ pie title Minerals in my tap water return doc; } static setupFieldInfos(doc:Doc, field="fieldInfos") { - const fieldInfoOpts = { title: "Field Infos", isSystem: true}; // bcz: all possible document options have associated field infos which are stored onn the FieldInfos document **except for title and system which are used as part of the definition of the fieldInfos object - const infos = DocUtils.AssignDocField(doc, field, opts => Doc.assign(new Doc(), opts as any), fieldInfoOpts); + const fieldInfoOpts = { title: "Field Infos", isSystem: true}; // bcz: all possible document options have associated field infos which are stored on the FieldInfos document **except for title and system which are used as part of the definition of the fieldInfos object + const infos = DocUtils.AssignDocField(doc, field, opts => Doc.assign(new Doc(), opts as {[key:string]: FieldType}), fieldInfoOpts); const entries = Object.entries(new DocumentOptions()); entries.forEach(pair => { if (!Array.from(Object.keys(fieldInfoOpts)).includes(pair[0])) { const options = pair[1] as FInfo; - const opts:DocumentOptions = { isSystem: true, title: pair[0], ...OmitKeys(options, ["values"]).omit, fieldIsLayout: pair[0].startsWith("_")}; + const opts:DocumentOptions = { isSystem: true, title: pair[0], ...OmitKeys(options, ["values"]).omit}; switch (options.fieldType) { - case FInfoFieldType.boolean: opts.fieldValues = new List(options.values as any); break; - case FInfoFieldType.number: opts.fieldValues = new List(options.values as any); break; - case FInfoFieldType.Doc: opts.fieldValues = new List(options.values as any); break; - default: opts.fieldValues = new List(options.values as any); break;// string, pointerEvents, dimUnit, dropActionType + case FInfoFieldType.boolean: opts.fieldValues = new List(options.values as boolean[]); break; + case FInfoFieldType.number: opts.fieldValues = new List(options.values as number[]); break; + case FInfoFieldType.Doc: opts.fieldValues = new List(options.values as Doc[]); break; + default: opts.fieldValues = new List(options.values); break;// string, pointerEvents, dimUnit, dropActionType } - DocUtils.AssignDocField(infos, pair[0], docOpts => Doc.assign(new Doc(), OmitKeys(docOpts,["values"]).omit), opts); + DocUtils.AssignDocField(infos, pair[0], docOpts => Doc.assign(new Doc(), OmitKeys(docOpts,["values"]).omit as {[key:string]: FieldType}), opts); } }); } @@ -1023,10 +1025,10 @@ pie title Minerals in my tap water public static async loadCurrentUser() { return rp.get(ClientUtils.prepend("/getCurrentUser")).then(async response => { if (response) { - const result: { version: string, userDocumentId: string, sharingDocumentId: string, linkDatabaseId: string, email: string, cacheDocumentIds: string, resolvedPorts: string } = JSON.parse(response); + const result: { version: string, userDocumentId: string, sharingDocumentId: string, linkDatabaseId: string, email: string, cacheDocumentIds: string, resolvedPorts: {server: number, socket: number} } = JSON.parse(response); runInAction(() => { SnappingManager.SetServerVersion(result.version); }); ClientUtils.SetCurrentUserEmail(result.email); - resolvedPorts = result.resolvedPorts as any; + resolvedPorts = result.resolvedPorts; DocServer.init(window.location.protocol, window.location.hostname, resolvedPorts?.socket, result.email); if (result.cacheDocumentIds) { diff --git a/src/client/util/DictationManager.ts b/src/client/util/DictationManager.ts index bc9fe813f..16a0df120 100644 --- a/src/client/util/DictationManager.ts +++ b/src/client/util/DictationManager.ts @@ -1,7 +1,5 @@ /* eslint-disable no-use-before-define */ import * as interpreter from 'words-to-numbers'; -// @ts-ignore bcz: how are you supposed to include these definitions since dom-speech-recognition isn't a module? -import type {} from '@types/dom-speech-recognition'; import { ClientUtils } from '../../ClientUtils'; import { Doc, Opt } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; @@ -33,19 +31,24 @@ import { UndoManager } from './UndoManager'; * In addition to compile-time default commands, you can invoke DictationManager.Commands.Register(Independent|Dependent) * to add new commands as classes or components are constructed. */ + +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DictationManager { /** * Some type maneuvering to access Webkit's built-in * speech recognizer. */ + + // eslint-disable-next-line @typescript-eslint/no-namespace namespace CORE { export interface IWindow extends Window { - webkitSpeechRecognition: any; + webkitSpeechRecognition: { new (): SpeechRecognition }; } } - const { webkitSpeechRecognition }: CORE.IWindow = window as any as CORE.IWindow; + const { webkitSpeechRecognition }: CORE.IWindow = window as unknown as CORE.IWindow; export const placeholder = 'Listening...'; + // eslint-disable-next-line @typescript-eslint/no-namespace export namespace Controls { export const Infringed = 'unable to process: dictation manager still involved in previous session'; const browser = (() => { @@ -74,7 +77,7 @@ export namespace DictationManager { // eslint-disable-next-line new-cap const recognizer: Opt = webkitSpeechRecognition ? new webkitSpeechRecognition() : undefined; - export type InterimResultHandler = (results: string) => any; + export type InterimResultHandler = (results: string) => void; export type ContinuityArgs = { indefinite: boolean } | false; export type DelimiterArgs = { inter: string; intra: string }; export type ListeningUIStatus = { interim: boolean } | false; @@ -117,11 +120,11 @@ export namespace DictationManager { } options?.tryExecute && (await DictationManager.Commands.execute(results)); } - } catch (e: any) { + } catch (e) { console.log(e); if (overlay) { DictationOverlay.Instance.isListening = false; - DictationOverlay.Instance.dictatedPhrase = results = `dictation error: ${'error' in e ? e.error : 'unknown error'}`; + DictationOverlay.Instance.dictatedPhrase = results = `dictation error: ${(e as { error: string }).error || 'unknown error'}`; DictationOverlay.Instance.dictationSuccess = false; } } finally { @@ -156,11 +159,11 @@ export namespace DictationManager { recognizer.start(); return new Promise(resolve => { - recognizer.onerror = (e: any) => { + recognizer.onerror = e => { // e is SpeechRecognitionError but where is that defined? if (!(indefinite && e.error === 'no-speech')) { recognizer.stop(); - resolve(e); + resolve(e.message); } }; @@ -227,13 +230,14 @@ export namespace DictationManager { }; } + // eslint-disable-next-line @typescript-eslint/no-namespace export namespace Commands { export const dictationFadeDuration = 2000; - export type IndependentAction = (target: DocumentView) => any | Promise; + export type IndependentAction = (target: DocumentView) => void | Promise; export type IndependentEntry = { action: IndependentAction; restrictTo?: DocumentType[] }; - export type DependentAction = (target: DocumentView, matches: RegExpExecArray) => any | Promise; + export type DependentAction = (target: DocumentView, matches: RegExpExecArray) => void | Promise; export type DependentEntry = { expression: RegExp; action: DependentAction; restrictTo?: DocumentType[] }; export const RegisterIndependent = (key: string, value: IndependentEntry) => Independent.set(key, value); @@ -295,7 +299,6 @@ export namespace DictationManager { [DocumentType.COL, listSpec(Doc)], [DocumentType.AUDIO, AudioField], [DocumentType.IMG, ImageField], - [DocumentType.IMPORT, listSpec(Doc)], [DocumentType.RTF, 'string'], ]); @@ -397,8 +400,8 @@ export namespace DictationManager { ]; } export function recordAudioAnnotation(dataDoc: Doc, field: string, onRecording?: (stop: () => void) => void, onEnd?: () => void) { - let gumStream: any; - let recorder: any; + let gumStream: MediaStream | undefined; + let recorder: MediaRecorder | undefined; navigator.mediaDevices.getUserMedia({ audio: true }).then(stream => { let audioTextAnnos = Cast(dataDoc[field + '_audioAnnotations_text'], listSpec('string'), null); if (audioTextAnnos) audioTextAnnos.push(''); @@ -415,8 +418,12 @@ export namespace DictationManager { gumStream = stream; recorder = new MediaRecorder(stream); - recorder.ondataavailable = async (e: any) => { - const [{ result }] = await Networking.UploadFilesToServer({ file: e.data }); + recorder.ondataavailable = async (e: BlobEvent) => { + const file: Blob & { name?: string; lastModified?: number; webkitRelativePath?: string } = e.data; + file.name = ''; + file.lastModified = 0; + file.webkitRelativePath = ''; + const [{ result }] = await Networking.UploadFilesToServer({ file: file as Blob & { name: string; lastModified: number; webkitRelativePath: string } }); if (!(result instanceof Error)) { const audioField = new AudioField(result.accessPaths.agnostic.client); const audioAnnos = Cast(dataDoc[field + '_audioAnnotations'], listSpec(AudioField), null); @@ -426,10 +433,10 @@ export namespace DictationManager { }; recorder.start(); const stopFunc = () => { - recorder.stop(); + recorder?.stop(); DictationManager.Controls.stop(/* false */); dataDoc.audioAnnoState = AudioAnnoState.stopped; - gumStream.getAudioTracks()[0].stop(); + gumStream?.getAudioTracks()[0].stop(); }; if (onRecording) onRecording(stopFunc); else setTimeout(stopFunc, 5000); diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts index e41546d09..b12bf4390 100644 --- a/src/client/util/DocumentManager.ts +++ b/src/client/util/DocumentManager.ts @@ -50,22 +50,19 @@ export class DocumentManager { DocumentView.getLightboxDocumentView = this.getLightboxDocumentView; observe(Doc.CurrentlyLoading, change => { // watch CurrentlyLoading-- when something is loaded, it's removed from the list and we have to update its icon if it were iconified since LoadingBox icons are different than the media they become - switch (change.type as any) { + switch (change.type) { case 'update': break; - case 'remove': - // DocumentManager.Instance.getAllDocumentViews(change as any).forEach(dv => StrCast(dv.Document.layout_fieldKey) === 'layout_icon' && dv.iconify(() => dv.iconify())); - break; case 'splice': - (change as any).removed.forEach((doc: Doc) => DocumentManager.Instance.getAllDocumentViews(doc).forEach(dv => StrCast(dv.Document.layout_fieldKey) === 'layout_icon' && dv.iconify(() => dv.iconify()))); + change.removed.forEach((doc: Doc) => DocumentManager.Instance.getAllDocumentViews(doc).forEach(dv => StrCast(dv.Document.layout_fieldKey) === 'layout_icon' && dv.iconify(() => dv.iconify()))); break; default: } }); } - private _viewRenderedCbs: { doc: Doc; func: (dv: DocumentView) => any }[] = []; - public AddViewRenderedCb = (doc: Opt, func: (dv: DocumentView) => any) => { + private _viewRenderedCbs: { doc: Doc; func: (dv: DocumentView) => unknown }[] = []; + public AddViewRenderedCb = (doc: Opt, func: (dv: DocumentView) => unknown) => { if (doc) { const dv = DocumentView.LightboxDoc() ? this.getLightboxDocumentView(doc) : this.getDocumentView(doc); this._viewRenderedCbs.push({ doc, func }); @@ -74,6 +71,7 @@ export class DocumentManager { return true; } } else { + // eslint-disable-next-line @typescript-eslint/no-explicit-any func(undefined as any); } return false; @@ -341,18 +339,21 @@ export class DocumentManager { // if there's an options.effect, it will be handled from linkFollowHighlight. We delay the start of // the highlight so that the target document can be somewhat centered so that the effect/highlight will be seen // bcz: should this delay be an options parameter? - setTimeout(() => { - Doc.linkFollowHighlight(viewSpec ? [docView.Document, viewSpec] : docView.Document, undefined, options.effect); - if (options.zoomTextSelections && Doc.IsUnhighlightTimerSet() && contextView && targetDoc.text_html) { - // if the docView is a text anchor, the contextView is the PDF/Web/Text doc - contextView.setTextHtmlOverlay(StrCast(targetDoc.text_html), options.effect); - DocumentManager._overlayViews.add(contextView); - } - Doc.AddUnHighlightWatcher(() => { - docView.Document[Animation] = undefined; - DocumentManager.removeOverlayViews(); - }); - }, (options.zoomTime ?? 0) * 0.5); + setTimeout( + () => { + Doc.linkFollowHighlight(viewSpec ? [docView.Document, viewSpec] : docView.Document, undefined, options.effect); + if (options.zoomTextSelections && Doc.IsUnhighlightTimerSet() && contextView && targetDoc.text_html) { + // if the docView is a text anchor, the contextView is the PDF/Web/Text doc + contextView.setTextHtmlOverlay(StrCast(targetDoc.text_html), options.effect); + DocumentManager._overlayViews.add(contextView); + } + Doc.AddUnHighlightWatcher(() => { + docView.Document[Animation] = undefined; + DocumentManager.removeOverlayViews(); + }); + }, + (options.zoomTime ?? 0) * 0.5 + ); if (options.playMedia) docView.ComponentView?.playFrom?.(NumCast(docView.Document._layout_currentTimecode)); if (options.playAudio) DocumentManager.playAudioAnno(docView.Document); if (options.toggleTarget && (!options.didMove || docView.Document.hidden)) docView.Document.hidden = !docView.Document.hidden; diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts index fda505420..c237a75de 100644 --- a/src/client/util/DragManager.ts +++ b/src/client/util/DragManager.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-mutable-exports */ /* eslint-disable no-use-before-define */ /** * The DragManager handles all dragging interactions that occur entirely within Dash (as opposed to external drag operations from the file system, etc) @@ -23,13 +22,14 @@ import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; import { PrefetchProxy } from '../../fields/Proxy'; import { ScriptField } from '../../fields/ScriptField'; -import { ScriptCast } from '../../fields/Types'; +import { ScriptCast, StrCast } from '../../fields/Types'; import { Docs } from '../documents/Documents'; import { DocumentView } from '../views/nodes/DocumentView'; import { dropActionType } from './DropActionTypes'; import { SnappingManager } from './SnappingManager'; import { UndoManager } from './UndoManager'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const { contextMenuZindex } = require('../views/global/globalCssVariables.module.scss'); // prettier-ignore /** @@ -70,6 +70,7 @@ export function SetupDrag(_reference: React.RefObject, docFunc: () return onItemDown; } +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DragManager { export const dragClassName = 'collectionFreeFormDocumentView-container'; let dragDiv: HTMLDivElement; @@ -78,7 +79,7 @@ export namespace DragManager { export let CompleteWindowDrag: Opt<(aborted: boolean) => void>; export let AbortDrag: () => void = emptyFunction; export const docsBeingDragged: Doc[] = observable([]); - export let DocDragData: DocumentDragData | undefined; + export let DraggedDocs: Doc[] | undefined; export function Root() { const root = document.getElementById('root'); @@ -118,7 +119,7 @@ export namespace DragManager { // event called when the drag operation has completed (aborted or completed a drop) -- this will be after any drop event has been generated export class DragCompleteEvent { - constructor(aborted: boolean, dragData: { [id: string]: any }) { + constructor(aborted: boolean, dragData: DocumentDragData | AnchorAnnoDragData | LinkDragData | ColumnDragData) { this.aborted = aborted; this.docDragData = dragData instanceof DocumentDragData ? dragData : undefined; this.annoDragData = dragData instanceof AnchorAnnoDragData ? dragData : undefined; @@ -167,6 +168,9 @@ export namespace DragManager { linkSourceGetAnchor: () => Doc; linkSourceDoc?: Doc; linkDragView: DocumentView; + get canEmbed() { + return true; + } } export class ColumnDragData { // constructor(colKey: SchemaHeaderField) { @@ -177,6 +181,9 @@ export namespace DragManager { this.colIndex = colIndex; } colIndex: number; + get canEmbed() { + return true; + } } // used by PDFs,Text,Image,Video,Web to conditionally (if the drop completes) create a text annotation when dragging the annotate button from the AnchorMenu when a text/region selection has been made. // this is pretty clunky and should be rethought out using linkDrag or DocumentDrag @@ -191,6 +198,9 @@ export namespace DragManager { offset: number[]; dropAction?: dropActionType; userDropAction?: dropActionType; + get canEmbed() { + return true; + } } const defaultPreDropFunc = (e: Event, de: DragManager.DropEvent, targetAction: dropActionType) => { @@ -208,7 +218,7 @@ export namespace DragManager { const handler = (e: Event) => dropFunc(e, (e as CustomEvent).detail); const preDropHandler = (e: Event) => { const de = (e as CustomEvent).detail; - (preDropFunc ?? defaultPreDropFunc)(e, de, doc.dropAction as any as dropActionType); + (preDropFunc ?? defaultPreDropFunc)(e, de, StrCast(doc.dropAction) as dropActionType); }; element.addEventListener('dashOnDrop', handler); element.addEventListener('dashPreDrop', preDropHandler); @@ -220,8 +230,8 @@ export namespace DragManager { } // drag a document and drop it (or make an embed/copy on drop) - export function StartDocumentDrag(eles: HTMLElement[], dragData: DocumentDragData, downX: number, downY: number, options?: DragOptions, onDropCompleted?: (e?: DragCompleteEvent) => any) { - const addAudioTag = (dropDoc: any) => { + export function StartDocumentDrag(eles: HTMLElement[], dragData: DocumentDragData, downX: number, downY: number, options?: DragOptions, onDropCompleted?: (e?: DragCompleteEvent) => unknown) { + const addAudioTag = (dropDoc: Doc) => { dropDoc && !dropDoc.author_date && (dropDoc.author_date = new DateField()); dropDoc instanceof Doc && CreateLinkToActiveAudio(() => dropDoc); return dropDoc; @@ -236,7 +246,7 @@ export namespace DragManager { await Promise.all( dragData.draggedDocuments.map(async d => !dragData.isDocDecorationMove && !dragData.userDropAction && ScriptCast(d.onDragStart) - ? addAudioTag(ScriptCast(d.onDragStart).script.run({ this: d }).result) + ? addAudioTag(ScriptCast(d.onDragStart).script.run({ this: d }).result as Doc) : docDragData.dropAction === dropActionType.embed ? Doc.BestEmbedding(d) : docDragData.dropAction === dropActionType.add @@ -249,7 +259,7 @@ export namespace DragManager { ) ) ).filter(d => d); - ![dropActionType.same, dropActionType.proto].includes(docDragData.dropAction as any) && + ![dropActionType.same, dropActionType.proto].includes(StrCast(docDragData.dropAction) as dropActionType) && docDragData.droppedDocuments // .filter(drop => !drop.dragOnlyWithinContainer || ['embed', 'copy'].includes(docDragData.dropAction as any)) .forEach((drop: Doc, i: number) => { @@ -376,9 +386,18 @@ export namespace DragManager { options?.dragComplete?.(complete); endDrag?.(); } - export function StartDrag(elesIn: HTMLElement[], dragData: { [id: string]: any }, downX: number, downY: number, options?: DragOptions, finishDrag?: (dropData: DragCompleteEvent) => void, dragUndoName?: string) { - if (dragData.dropAction === 'none' || SnappingManager.ExploreMode) return; - DocDragData = dragData as DocumentDragData; + export function StartDrag( + elesIn: HTMLElement[], + dragData: DocumentDragData | LinkDragData | ColumnDragData | AnchorAnnoDragData, + downX: number, + downY: number, + options?: DragOptions, + finishDrag?: (dropData: DragCompleteEvent) => void, + dragUndoName?: string + ) { + if (SnappingManager.ExploreMode) return; + const docDragData = dragData instanceof DocumentDragData ? dragData : undefined; + DraggedDocs = docDragData?.draggedDocuments; const batch = UndoManager.StartBatch(dragUndoName ?? 'document drag'); const eles = elesIn.filter(e => e); SnappingManager.SetCanEmbed(dragData.canEmbed || false); @@ -437,8 +456,9 @@ export namespace DragManager { next && children.push(...Array.from(next.children)); if (next) { ['marker-start', 'marker-mid', 'marker-end'].forEach(field => { - if (next.localName.startsWith('path') && (next.attributes as any)[field]) { - next.setAttribute(field, (next.attributes as any)[field].value.replace('#', '#X')); + if (next.localName.startsWith('path')) { + const item = next.attributes.getNamedItem(field); + item && next.setAttribute(field, item.value.replace('#', '#X')); } }); if (next.localName.startsWith('marker')) { @@ -495,7 +515,7 @@ export namespace DragManager { .map((pb, i) => pb.getContext('2d')!.drawImage(pdfBoxSrc[i], 0, 0)); } [dragElement, ...Array.from(dragElement.getElementsByTagName('*'))] - .map(dele => (dele as any).style) + .map(dele => (dele as HTMLElement)?.style) .forEach(style => { style && (style.pointerEvents = 'none'); }); @@ -536,34 +556,35 @@ export namespace DragManager { const yFromBottom = elesCont.bottom - downY; let scrollAwaiter: Opt; - let startWindowDragTimer: any; + let startWindowDragTimer: NodeJS.Timeout | undefined; const moveHandler = (e: PointerEvent) => { e.preventDefault(); // required or dragging text menu link item ends up dragging the link button as native drag/drop - if (dragData instanceof DocumentDragData) { - dragData.userDropAction = e.ctrlKey && e.altKey ? dropActionType.copy : e.shiftKey ? dropActionType.move : e.ctrlKey ? dropActionType.embed : dragData.defaultDropAction; - } - if (['lm_tab', 'lm_title_wrap', 'lm_tabs', 'lm_header'].includes(typeof (e.target as any).className === 'string' ? (e.target as any)?.className : '') && dragData.draggedDocuments.length === 1) { - if (!startWindowDragTimer) { - startWindowDragTimer = setTimeout(async () => { - startWindowDragTimer = undefined; - dragData.dropAction = dragData.userDropAction || 'same'; - AbortDrag(); - await finishDrag?.(new DragCompleteEvent(true, dragData)); - DragManager.StartWindowDrag?.(e, dragData.droppedDocuments, aborted => { - if (!aborted && (dragData.dropAction === 'move' || dragData.dropAction === 'same')) { - dragData.removeDocument?.(dragData.draggedDocuments[0]); - } - }); - }, 500); + if (docDragData) { + docDragData.userDropAction = e.ctrlKey && e.altKey ? dropActionType.copy : e.shiftKey ? dropActionType.move : e.ctrlKey ? dropActionType.embed : docDragData.defaultDropAction; + const targClassName = e.target instanceof HTMLElement && typeof e.target.className === 'string' ? e.target.className : ''; + if (['lm_tab', 'lm_title_wrap', 'lm_tabs', 'lm_header'].includes(targClassName) && docDragData.draggedDocuments.length === 1) { + if (!startWindowDragTimer) { + startWindowDragTimer = setTimeout(async () => { + startWindowDragTimer = undefined; + docDragData.dropAction = docDragData.userDropAction || dropActionType.same; + AbortDrag(); + await finishDrag?.(new DragCompleteEvent(true, docDragData)); + DragManager.StartWindowDrag?.(e, docDragData.droppedDocuments, aborted => { + if (!aborted && (docDragData?.dropAction === 'move' || docDragData?.dropAction === 'same')) { + docDragData.removeDocument?.(docDragData?.draggedDocuments[0]); + } + }); + }, 500); + } + } else { + clearTimeout(startWindowDragTimer); + startWindowDragTimer = undefined; } - } else { - clearTimeout(startWindowDragTimer); - startWindowDragTimer = undefined; } const target = document.elementFromPoint(e.x, e.y); - if (target && !Doc.UserDoc()._noAutoscroll && !options?.noAutoscroll && !dragData.draggedDocuments?.some((d: any) => d._freeform_noAutoPan)) { + if (target && !Doc.UserDoc()._noAutoscroll && !options?.noAutoscroll && !(docDragData?.draggedDocuments as Doc[])?.some(d => d._freeform_noAutoPan)) { const autoScrollHandler = () => { target.dispatchEvent( new CustomEvent('dashDragMovePause', { @@ -587,7 +608,7 @@ export namespace DragManager { screenX: e.screenX, screenY: e.screenY, detail: e.detail, - view: e.view ? e.view : (new Window() as any), + view: { ...(e.view ?? new Window()), styleMedia: { type: '', matchMedium: () => false } }, // bcz: Ugh.. this looks wrong nativeEvent: new DragEvent('dashDragMovePause'), currentTarget: target, target: target, @@ -596,10 +617,10 @@ export namespace DragManager { defaultPrevented: true, eventPhase: e.eventPhase, isTrusted: true, - preventDefault: () => 'not implemented for this event' && false, - isDefaultPrevented: () => 'not implemented for this event' && false, - stopPropagation: () => 'not implemented for this event' && false, - isPropagationStopped: () => 'not implemented for this event' && false, + preventDefault: () => 'not implemented for this event', + isDefaultPrevented: () => false, + stopPropagation: () => 'not implemented for this event', + isPropagationStopped: () => false, persist: emptyFunction, timeStamp: e.timeStamp, type: 'dashDragMovePause', diff --git a/src/client/util/DropConverter.ts b/src/client/util/DropConverter.ts index 0314af06b..eb2011b77 100644 --- a/src/client/util/DropConverter.ts +++ b/src/client/util/DropConverter.ts @@ -26,9 +26,10 @@ function makeTemplate(doc: Doc, first: boolean = true): boolean { if (layoutDoc.layout instanceof Doc) { return true; // its already a template } - const layout = StrCast(layoutDoc.layout).match(/fieldKey={'[^']*'}/)![0]; - const fieldKey = layout.replace("fieldKey={'", '').replace(/'}$/, ''); - const docs = DocListCast(layoutDoc[fieldKey]); + const layout = StrCast(layoutDoc.layout).match(/fieldKey={'[^']*'}/)?.[0]; + const fieldKey = layout?.replace("fieldKey={'", '').replace(/'}$/, ''); + const docData = fieldKey ? layoutDoc[fieldKey] : undefined; + const docs = DocListCast(docData); let isTemplate = false; docs.forEach(d => { if (!StrCast(d.title).startsWith('-')) { @@ -40,7 +41,7 @@ function makeTemplate(doc: Doc, first: boolean = true): boolean { if (first && !docs.length) { // bcz: feels hacky : if the root level document has items, it's not a field template isTemplate = Doc.MakeMetadataFieldTemplate(doc, layoutDoc[DocData], true) || isTemplate; - } else if (layoutDoc[fieldKey] instanceof RichTextField || layoutDoc[fieldKey] instanceof ImageField) { + } else if (docData instanceof RichTextField || docData instanceof ImageField) { if (!StrCast(layoutDoc.title).startsWith('-')) { isTemplate = Doc.MakeMetadataFieldTemplate(layoutDoc, layoutDoc[DocData], true); } @@ -110,8 +111,8 @@ export function convertDropDataToButtons(data: DragManager.DocumentDragData) { } ScriptingGlobals.add( // eslint-disable-next-line prefer-arrow-callback - function convertToButtons(dragData: any) { - convertDropDataToButtons(dragData as DragManager.DocumentDragData); + function convertToButtons(dragData: DragManager.DocumentDragData) { + convertDropDataToButtons(dragData); }, 'converts the dropped data to buttons', '(dragData: any)' diff --git a/src/client/util/GroupManager.tsx b/src/client/util/GroupManager.tsx index 5701a22c0..9d0817a06 100644 --- a/src/client/util/GroupManager.tsx +++ b/src/client/util/GroupManager.tsx @@ -1,8 +1,6 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Button, IconButton, Size, Type } from 'browndash-components'; -import { action, computed, makeObservable, observable } from 'mobx'; +import { action, computed, makeObservable, observable, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import Select from 'react-select'; @@ -31,7 +29,7 @@ export interface UserOptions { } @observer -export class GroupManager extends ObservableReactComponent<{}> { +export class GroupManager extends ObservableReactComponent { // eslint-disable-next-line no-use-before-define static Instance: GroupManager; @observable isOpen: boolean = false; // whether the GroupManager is to be displayed or not. @@ -44,7 +42,7 @@ export class GroupManager extends ObservableReactComponent<{}> { @observable private buttonColour: '#979797' | 'black' = '#979797'; @observable private groupSort: 'ascending' | 'descending' | 'none' = 'none'; - constructor(props: Readonly<{}>) { + constructor(props: Readonly) { super(props); makeObservable(this); GroupManager.Instance = this; @@ -226,15 +224,6 @@ export class GroupManager extends ObservableReactComponent<{}> { } } - /** - * Handles changes in the users selected in the "Select users" dropdown. - * @param selectedOptions - */ - @action - handleChange = (selectedOptions: any) => { - this.selectedUsers = selectedOptions as UserOptions[]; - }; - /** * Creates the group when the enter key has been pressed (when in the input). * @param e @@ -309,7 +298,6 @@ export class GroupManager extends ObservableReactComponent<{}> { { className="select-users" isMulti options={this.options} - onChange={this.handleChange} + onChange={selectedOptions => { + runInAction(() => (this.selectedUsers = Array.from(selectedOptions))); + }} placeholder="Select users" value={this.selectedUsers} closeMenuOnSelect={false} diff --git a/src/client/util/GroupMemberView.tsx b/src/client/util/GroupMemberView.tsx index da9e1aa28..88d73d742 100644 --- a/src/client/util/GroupMemberView.tsx +++ b/src/client/util/GroupMemberView.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Button, IconButton, Size, Type } from 'browndash-components'; import { action, observable } from 'mobx'; diff --git a/src/client/util/History.ts b/src/client/util/History.ts index 52d0223d5..067c28c6b 100644 --- a/src/client/util/History.ts +++ b/src/client/util/History.ts @@ -10,6 +10,7 @@ import { OmitKeys, ClientUtils } from '../../ClientUtils'; import { DocServer } from '../DocServer'; import { DashboardView } from '../views/DashboardView'; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace HistoryUtil { export interface DocInitializerList { [key: string]: string | number; @@ -85,7 +86,7 @@ export namespace HistoryUtil { const parsers: { [type: string]: (pathname: string[], opts: qs.ParsedQuery) => ParsedUrl | undefined } = {}; const stringifiers: { [type: string]: (state: ParsedUrl) => string } = {}; - type ParserValue = true | 'none' | 'json' | ((value: string) => any); + type ParserValue = true | 'none' | 'json' | ((value: string) => string | null | (string | null)[]); type Parser = { [key: string]: ParserValue; @@ -106,7 +107,7 @@ export namespace HistoryUtil { return value; } parsers[type] = (pathname, opts) => { - const current: any = { type }; + const current: DocUrl & { [key: string]: null | (string | null)[] | string } = { type: 'doc', docId: '' }; for (const required in requiredFields) { if (!(required in opts)) { return undefined; @@ -148,7 +149,7 @@ export namespace HistoryUtil { path = customStringifier(state, path); } const queryObj = OmitKeys(state, keys).extract; - const query: any = {}; + const query: { [key: string]: string | null } = {}; Object.keys(queryObj).forEach(key => { query[key] = queryObj[key] === null ? null : JSON.stringify(queryObj[key]); }); diff --git a/src/client/util/Import & Export/ImageUtils.ts b/src/client/util/Import & Export/ImageUtils.ts index 8d4eefa7e..266e05f08 100644 --- a/src/client/util/Import & Export/ImageUtils.ts +++ b/src/client/util/Import & Export/ImageUtils.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-namespace */ import { ClientUtils } from '../../../ClientUtils'; import { Doc } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; diff --git a/src/client/util/Import & Export/ImportMetadataEntry.tsx b/src/client/util/Import & Export/ImportMetadataEntry.tsx index db1e3d6cd..63dedf820 100644 --- a/src/client/util/Import & Export/ImportMetadataEntry.tsx +++ b/src/client/util/Import & Export/ImportMetadataEntry.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable no-use-before-define */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, computed } from 'mobx'; diff --git a/src/client/util/InteractionUtils.tsx b/src/client/util/InteractionUtils.tsx index a07550e09..f3ede596d 100644 --- a/src/client/util/InteractionUtils.tsx +++ b/src/client/util/InteractionUtils.tsx @@ -1,8 +1,10 @@ +import { Property } from 'csstype'; import * as React from 'react'; import { Utils } from '../../Utils'; import { Gestures } from '../../pen-gestures/GestureTypes'; import './InteractionUtils.scss'; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace InteractionUtils { export const MOUSETYPE = 'mouse'; export const TOUCHTYPE = 'touch'; @@ -11,7 +13,7 @@ export namespace InteractionUtils { const ERASER_BUTTON = 5; - export function makePolygon(shape: string, points: { X: number; Y: number }[]) { + export function makePolygon(shape: Gestures, points: { X: number; Y: number }[]) { // if arrow/line/circle, the two end points should be the starting and the ending point let left = points[0].X; let top = points[0].Y; @@ -19,7 +21,7 @@ export namespace InteractionUtils { let bottom = points[1].Y; if (points.length > 1 && points[points.length - 1].X === points[0].X && points[points.length - 1].Y + 1 === points[0].Y) { // pointer is up (first and last points are the same) - if (![Gestures.Arrow, Gestures.Line, Gestures.Circle].includes(shape as any as Gestures)) { + if (![Gestures.Arrow, Gestures.Line, Gestures.Circle].includes(shape)) { // otherwise take max and min const xs = points.map(p => p.X); const ys = points.map(p => p.Y); @@ -98,8 +100,8 @@ export namespace InteractionUtils { color: string, width: number, strokeWidth: number, - lineJoin: string, - strokeLineCap: string, + lineJoin: Property.StrokeLinejoin, + strokeLineCap: Property.StrokeLinecap, bezier: string, fill: string, arrowStart: string, @@ -108,8 +110,8 @@ export namespace InteractionUtils { dash: string | undefined, scalexIn: number, scaleyIn: number, - shape: string, - pevents: string, + shape: Gestures, + pevents: Property.PointerEvents, opacity: number, nodefs: boolean, downHdlr?: (e: React.PointerEvent) => void, @@ -154,7 +156,7 @@ export namespace InteractionUtils { @@ -184,10 +186,10 @@ export namespace InteractionUtils { filter: mask ? `url(#mask${defGuid})` : undefined, opacity: 1.0, // opacity: strokeWidth !== width ? 0.5 : undefined, - pointerEvents: (pevents as any) === 'all' ? 'visiblepainted' : (pevents as any), + pointerEvents: pevents === 'all' ? 'visiblePainted' : pevents, stroke: color ?? 'rgb(0, 0, 0)', strokeWidth, - strokeLinecap: strokeLineCap as any, + strokeLinecap: strokeLineCap, strokeDasharray: dashArray, transition: 'inherit', }} diff --git a/src/client/util/LinkFollower.ts b/src/client/util/LinkFollower.ts index 9a0edcfec..0a3a0ba49 100644 --- a/src/client/util/LinkFollower.ts +++ b/src/client/util/LinkFollower.ts @@ -50,7 +50,7 @@ export class LinkFollower { const backLinks = linkDocs.filter(l => isAnchor(sourceDoc, l.link_anchor_2 as Doc)); // link docs where 'sourceDoc' is link_anchor_2 const fwdLinkWithoutTargetView = fwdLinks.find(l => !getView(DocCast(l.link_anchor_2))); const backLinkWithoutTargetView = backLinks.find(l => !getView(DocCast(l.link_anchor_1))); - const linkWithoutTargetDoc = traverseBacklink === undefined ? fwdLinkWithoutTargetView ?? backLinkWithoutTargetView : traverseBacklink ? backLinkWithoutTargetView : fwdLinkWithoutTargetView; + const linkWithoutTargetDoc = traverseBacklink === undefined ? (fwdLinkWithoutTargetView ?? backLinkWithoutTargetView) : traverseBacklink ? backLinkWithoutTargetView : fwdLinkWithoutTargetView; const linkDocList = linkWithoutTargetDoc && !sourceDoc.followAllLinks ? [linkWithoutTargetDoc] : traverseBacklink === undefined ? fwdLinks.concat(backLinks) : traverseBacklink ? backLinks : fwdLinks; const followLinks = sourceDoc.followLinkToggle || sourceDoc.followAllLinks ? linkDocList : linkDocList.slice(0, 1); let count = 0; @@ -82,7 +82,7 @@ export class LinkFollower { willZoomCentered: BoolCast(srcAnchor.followLinkZoom, false), zoomTime: NumCast(srcAnchor.followLinkTransitionTime, 500), zoomScale: Cast(srcAnchor.followLinkZoomScale, 'number', null), - easeFunc: StrCast(srcAnchor.followLinkEase, 'ease') as any, + easeFunc: StrCast(srcAnchor.followLinkEase, 'ease') as 'ease' | 'linear', openLocation: StrCast(srcAnchor.followLinkLocation, OpenWhere.lightbox) as OpenWhere, effect: srcAnchor, zoomTextSelections: BoolCast(srcAnchor.followLinkZoomText), diff --git a/src/client/util/LinkManager.ts b/src/client/util/LinkManager.ts index 56d5dce4e..e11482572 100644 --- a/src/client/util/LinkManager.ts +++ b/src/client/util/LinkManager.ts @@ -31,13 +31,13 @@ export class LinkManager { @observable public currentLink: Opt = undefined; @observable public currentLinkAnchor: Opt = undefined; public static get Instance(): LinkManager { - return Doc.UserDoc() ? LinkManager._instance ?? new LinkManager() : (undefined as any as LinkManager); + return Doc.UserDoc() ? (LinkManager._instance ?? new LinkManager()) : (undefined as unknown as LinkManager); } public static Links(doc: Doc | undefined) { return doc ? LinkManager.Instance.getAllRelatedLinks(doc) : []; } - public addLinkDB = async (linkDb: any) => { + public addLinkDB = async (linkDb: Doc) => { await Promise.all( ((await DocListCastAsync(linkDb.data)) ?? []).map(link => // makes sure link anchors are loaded to avoid incremental updates to computedFns in LinkManager @@ -95,35 +95,24 @@ export class LinkManager { const watchUserLinkDB = (userLinkDBDoc: Doc) => { const toRealField = (field: FieldType) => (field instanceof ProxyField ? field.value : field); // see List.ts. data structure is not a simple list of Docs, but a list of ProxyField/Fields if (userLinkDBDoc.data) { + // observe pushes/splices on a user link DB 'data' field (should only happen for local changes) observe( - userLinkDBDoc.data, + userLinkDBDoc.data as unknown as Doc[], change => { - // observe pushes/splices on a user link DB 'data' field (should only happen for local changes) - switch (change.type as any) { + switch (change.type) { case 'splice': - (change as any).added.forEach((link: any) => addLinkToDoc(toRealField(link))); - (change as any).removed.forEach((link: any) => remLinkFromDoc(toRealField(link))); + change.added.forEach(link => addLinkToDoc(toRealField(link))); + change.removed.forEach(link => remLinkFromDoc(toRealField(link))); break; - case 'update': // let oldValue = change.oldValue; - default: - } - }, - true - ); - observe( - userLinkDBDoc, - 'data', // obsever when a new array of links is assigned as the link DB 'data' field (should happen whenever a remote user adds/removes a link) - change => { - switch (change.type as any) { case 'update': - Promise.all([...((change.oldValue as any as Doc[]) || []), ...((change.newValue as any as Doc[]) || [])]).then(doclist => { - const oldDocs = doclist.slice(0, ((change.oldValue as any as Doc[]) || []).length); - const newDocs = doclist.slice(((change.oldValue as any as Doc[]) || []).length, doclist.length); + Promise.all([...((change.oldValue as unknown as Doc[]) || []), ...((change.newValue as unknown as Doc[]) || [])]).then(doclist => { + const oldDocs = doclist.slice(0, ((change.oldValue as unknown as Doc[]) || []).length); + const newDocs = doclist.slice(((change.oldValue as unknown as Doc[]) || []).length, doclist.length); const added = newDocs?.filter(link => !(oldDocs || []).includes(link)); const removed = oldDocs?.filter(link => !(newDocs || []).includes(link)); - added?.forEach((link: any) => addLinkToDoc(toRealField(link))); - removed?.forEach((link: any) => remLinkFromDoc(toRealField(link))); + added?.forEach(link => addLinkToDoc(toRealField(link))); + removed?.forEach(link => remLinkFromDoc(toRealField(link))); }); break; default: @@ -136,9 +125,9 @@ export class LinkManager { observe( this.userLinkDBs, change => { - switch (change.type as any) { + switch (change.type) { case 'splice': - (change as any).added.forEach(watchUserLinkDB); + change.added.forEach(watchUserLinkDB); break; case 'update': // let oldValue = change.oldValue; default: @@ -188,7 +177,7 @@ export class LinkManager { return []; } - const dirLinks = Array.from(anchor[DocData][DirectLinks]).filter(l => Doc.GetProto(anchor) === anchor[DocData] || ['1', '2'].includes(LinkManager.anchorIndex(l, anchor) as any)); + const dirLinks = Array.from(anchor[DocData][DirectLinks]).filter(l => Doc.GetProto(anchor) === anchor[DocData] || ['1', '2'].includes(LinkManager.anchorIndex(l, anchor) as '0' | '1' | '2')); const anchorRoot = DocCast(anchor.rootDocument, anchor); // template Doc fields store annotations on the topmost root of a template (not on themselves since the template layout items are only for layout) const annos = DocListCast(anchorRoot[Doc.LayoutFieldKey(anchor) + '_annotations']); return Array.from( @@ -283,7 +272,7 @@ export function UPDATE_SERVER_CACHE() { ScriptingGlobals.add( // eslint-disable-next-line prefer-arrow-callback - function links(doc: any) { + function links(doc: Doc) { return new List(LinkManager.Links(doc)); }, 'returns all the links to the document or its annotations', diff --git a/src/client/util/ProsemirrorCopy/prompt.js b/src/client/util/ProsemirrorCopy/prompt.js deleted file mode 100644 index b9068195f..000000000 --- a/src/client/util/ProsemirrorCopy/prompt.js +++ /dev/null @@ -1,179 +0,0 @@ -const prefix = "ProseMirror-prompt" - -export function openPrompt(options) { - let wrapper = document.body.appendChild(document.createElement("div")) - wrapper.className = prefix - wrapper.style.zIndex = 1000; - wrapper.style.width = 250; - wrapper.style.textAlign = "center"; - - let mouseOutside = e => { if (!wrapper.contains(e.target)) close() } - setTimeout(() => window.addEventListener("mousedown", mouseOutside), 50) - let close = () => { - window.removeEventListener("mousedown", mouseOutside) - if (wrapper.parentNode) wrapper.parentNode.removeChild(wrapper) - } - - let domFields = [] - for (let name in options.fields) domFields.push(options.fields[name].render()) - - let submitButton = document.createElement("button") - submitButton.type = "submit" - submitButton.className = prefix + "-submit" - submitButton.textContent = "OK" - let cancelButton = document.createElement("button") - cancelButton.type = "button" - cancelButton.className = prefix + "-cancel" - cancelButton.textContent = "Cancel" - cancelButton.addEventListener("click", close) - - let form = wrapper.appendChild(document.createElement("form")) - let title = document.createElement("h5") - title.style.marginBottom = 15 - title.style.marginTop = 10 - if (options.title) form.appendChild(title).textContent = options.title - domFields.forEach(field => { - form.appendChild(document.createElement("div")).appendChild(field) - }) - let b = document.createElement("div"); - b.style.marginTop = 15; - let buttons = form.appendChild(b) - // buttons.className = prefix + "-buttons" - buttons.appendChild(submitButton) - buttons.appendChild(document.createTextNode(" ")) - buttons.appendChild(cancelButton) - - let box = wrapper.getBoundingClientRect() - wrapper.style.top = options.flyout_top + "px" - wrapper.style.left = options.flyout_left + "px" - - let submit = () => { - let params = getValues(options.fields, domFields) - if (params) { - close() - options.callback(params) - } - } - - form.addEventListener("submit", e => { - e.preventDefault() - submit() - }) - - form.addEventListener("keydown", e => { - if (e.keyCode == 27) { - e.preventDefault() - close() - } else if (e.keyCode == 13 && !(e.ctrlKey || e.metaKey || e.shiftKey)) { - e.preventDefault() - submit() - } else if (e.keyCode == 9) { - window.setTimeout(() => { - if (!wrapper.contains(document.activeElement)) close() - }, 500) - } - }) - - let input = form.elements[0] - if (input) input.focus() -} - -function getValues(fields, domFields) { - let result = Object.create(null), i = 0 - for (let name in fields) { - let field = fields[name], dom = domFields[i++] - let value = field.read(dom), bad = field.validate(value) - if (bad) { - reportInvalid(dom, bad) - return null - } - result[name] = field.clean(value) - } - return result -} - -function reportInvalid(dom, message) { - // FIXME this is awful and needs a lot more work - let parent = dom.parentNode - let msg = parent.appendChild(document.createElement("div")) - msg.style.left = (dom.offsetLeft + dom.offsetWidth + 2) + "px" - msg.style.top = (dom.offsetTop - 5) + "px" - msg.className = "ProseMirror-invalid" - msg.textContent = message - setTimeout(() => parent.removeChild(msg), 1500) -} - -// ::- The type of field that `FieldPrompt` expects to be passed to it. -export class Field { - // :: (Object) - // Create a field with the given options. Options support by all - // field types are: - // - // **`value`**`: ?any` - // : The starting value for the field. - // - // **`label`**`: string` - // : The label for the field. - // - // **`required`**`: ?bool` - // : Whether the field is required. - // - // **`validate`**`: ?(any) → ?string` - // : A function to validate the given value. Should return an - // error message if it is not valid. - constructor(options) { this.options = options } - - // render:: (state: EditorState, props: Object) → dom.Node - // Render the field to the DOM. Should be implemented by all subclasses. - - // :: (dom.Node) → any - // Read the field's value from its DOM node. - read(dom) { return dom.value } - - // :: (any) → ?string - // A field-type-specific validation function. - validateType(_value) { } - - validate(value) { - if (!value && this.options.required) - return "Required field" - return this.validateType(value) || (this.options.validate && this.options.validate(value)) - } - - clean(value) { - return this.options.clean ? this.options.clean(value) : value - } -} - -// ::- A field class for single-line text fields. -export class TextField extends Field { - render() { - let input = document.createElement("input") - input.type = "text" - input.placeholder = this.options.label - input.value = this.options.value || "" - input.autocomplete = "off" - input.style.marginBottom = 4 - input.style.border = "1px solid black" - input.style.padding = "4px 4px" - return input - } -} - - -// ::- A field class for dropdown fields based on a plain ` tag, but for some reason we do... @@ -211,13 +211,15 @@ export class ContextMenu extends ObservableReactComponent<{}> { return (
{ - if (r) { - this._width = DivWidth(r); - this._height = DivHeight(r); - } - this._searchRef.current?.focus(); - })} + ref={r => + runInAction(() => { + if (r) { + this._width = DivWidth(r); + this._height = DivHeight(r); + } + this._searchRef.current?.focus(); + }) + } style={{ display: this._display ? '' : 'none', left: this.pageX, @@ -239,7 +241,6 @@ export class ContextMenu extends ObservableReactComponent<{}> { value={this._searchString} onKeyDown={this.onKeyDown} onChange={this.onChange} - // eslint-disable-next-line jsx-a11y/no-autofocus autoFocus /> diff --git a/src/client/views/ContextMenuItem.tsx b/src/client/views/ContextMenuItem.tsx index eb1030eec..3b87ea58b 100644 --- a/src/client/views/ContextMenuItem.tsx +++ b/src/client/views/ContextMenuItem.tsx @@ -10,8 +10,10 @@ import { ObservableReactComponent } from './ObservableReactComponent'; export interface OriginalMenuProps { description: string; - event: (stuff?: any) => void; + event: (stuff?: unknown) => void; undoable?: boolean; + noexpand?: boolean; + subitems?: ContextMenuProps[]; icon: IconProp | JSX.Element; // maybe should be optional (icon?) closeMenu?: () => void; } @@ -33,7 +35,7 @@ export class ContextMenuItem extends ObservableReactComponent = []; @observable private overItem = false; - constructor(props: any) { + constructor(props: ContextMenuProps & { selected?: boolean }) { super(props); makeObservable(this); } @@ -56,7 +58,7 @@ export class ContextMenuItem extends ObservableReactComponent { +export class DashboardView extends ObservableReactComponent { public static _urlState: HistoryUtil.DocUrl; public static makeDocumentConfig(document: Doc, panelName?: string, width?: number, keyValue?: boolean) { return { @@ -82,7 +80,7 @@ export class DashboardView extends ObservableReactComponent<{}> { }); return doc; } - constructor(props: any) { + constructor(props: object) { super(props); makeObservable(this); } diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index c97edd7f0..b11fa3bd5 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -1,6 +1,4 @@ /* eslint-disable react/jsx-props-no-spreading */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { action, computed, makeObservable, observable, ObservableMap } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -28,7 +26,7 @@ interface filterProps { export class FilterPanel extends ObservableReactComponent { @observable _selectedFacetHeaders = new Set(); - constructor(props: any) { + constructor(props: filterProps) { super(props); makeObservable(this); } @@ -41,7 +39,7 @@ export class FilterPanel extends ObservableReactComponent { } @computed get targetDocChildKey() { const targetView = DocumentView.getFirstDocumentView(this.Document); - return targetView?.ComponentView?.annotationKey ?? targetView?.ComponentView?.fieldKey ?? 'data'; + return targetView?.ComponentView?.annotationKey || (targetView?.ComponentView?.fieldKey ?? 'data'); } @computed get targetDocChildren() { return [...DocListCast(this.Document?.[this.targetDocChildKey] || Doc.ActiveDashboard?.data), ...DocListCast(this.Document[Doc.LayoutFieldKey(this.Document) + '_sidebar'])]; @@ -240,7 +238,7 @@ export class FilterPanel extends ObservableReactComponent { {Array.from(this.activeRenderedFacetInfos.keys()).map( // iterate over activeFacetRenderInfos ==> renderInfo which you can renderInfo.facetHeader renderInfo => ( -
+
{renderInfo.facetHeader.charAt(0).toUpperCase() + renderInfo.facetHeader.slice(1)} @@ -308,7 +306,7 @@ export class FilterPanel extends ObservableReactComponent { return this.facetValues(facetHeader).map(fval => { const facetValue = fval; return ( -
+
{
{handles.map(handle => ( // const value = i === 0 ? defaultValues[0] : defaultValues[1]; -
+
))} diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx index e3e252593..804c41091 100644 --- a/src/client/views/GestureOverlay.tsx +++ b/src/client/views/GestureOverlay.tsx @@ -78,7 +78,7 @@ export class GestureOverlay extends ObservableReactComponent { - if (!(e.target as any)?.className?.toString().startsWith('lm_')) { + if (!(e.target as HTMLElement)?.className?.toString().startsWith('lm_')) { if ([InkTool.Highlighter, InkTool.Pen, InkTool.Write].includes(Doc.ActiveTool)) { this._points.push({ X: e.clientX, Y: e.clientY }); setupMoveUpEvents(this, e, this.onPointerMove, this.onPointerUp, emptyFunction); @@ -173,8 +173,8 @@ export class GestureOverlay extends ObservableReactComponent { + const bezierCurves = fitCurve.default(newPoints, 10); + Array.from(bezierCurves).forEach(curve => { controlPoints.push({ X: curve[0][0], Y: curve[0][1] }); controlPoints.push({ X: curve[1][0], Y: curve[1][1] }); controlPoints.push({ X: curve[2][0], Y: curve[2][1] }); @@ -351,7 +351,7 @@ export class GestureOverlay extends ObservableReactComponent { + dispatchGesture = (gesture: Gestures, stroke?: InkData, text?: string) => { const points = (stroke ?? this._points).slice(); return ( document.elementFromPoint(points[0].X, points[0].Y)?.dispatchEvent( @@ -411,7 +411,7 @@ export class GestureOverlay extends ObservableReactComponent { - GestureOverlay.Instance.Tool = tool; - }); -}); -// eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function setPen(width: any, color: any, fill: any, arrowStart: any, arrowEnd: any, dash: any) { +ScriptingGlobals.add(function setPen(width: string, color: string, fill: string, arrowStart: string, arrowEnd: string, dash: string) { runInAction(() => { GestureOverlay.Instance.SavedColor = ActiveInkColor(); SetActiveInkColor(color); @@ -543,8 +537,8 @@ ScriptingGlobals.add(function resetPen() { }, 'resets the pen tool'); ScriptingGlobals.add( // eslint-disable-next-line prefer-arrow-callback - function createText(text: any, x: any, y: any) { - GestureOverlay.Instance.dispatchGesture(Gestures.Text, [{ X: x, Y: y }], text); + function createText(text: string, X: number, Y: number) { + GestureOverlay.Instance.dispatchGesture(Gestures.Text, [{ X, Y }], text); }, 'creates a text document with inputted text and coordinates', '(text: any, x: any, y: any)' diff --git a/src/client/views/InkTranscription.tsx b/src/client/views/InkTranscription.tsx index 1ed8de1be..33db72960 100644 --- a/src/client/views/InkTranscription.tsx +++ b/src/client/views/InkTranscription.tsx @@ -240,7 +240,8 @@ // const text = exports['text/plain']; // if (this.currGroup) { -// this.currGroup.transcription = text; +// this.currGroup.text = text; // transcription text +// this.currGroup.icon_fieldKey = 'transcription'; // use the transcription icon template when iconifying // this.currGroup.title = text.split('\n')[0]; // } diff --git a/src/client/views/InkingStroke.tsx b/src/client/views/InkingStroke.tsx index 784d252a3..2e82371cb 100644 --- a/src/client/views/InkingStroke.tsx +++ b/src/client/views/InkingStroke.tsx @@ -20,6 +20,7 @@ Most of the operations that can be performed on an InkStroke (eg delete a point, rotate, stretch) are implemented in the InkStrokeProperties helper class */ +import { Property } from 'csstype'; import { action, computed, IReactionDisposer, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -28,6 +29,7 @@ import { Doc } from '../../fields/Doc'; import { InkData, InkField } from '../../fields/InkField'; import { BoolCast, Cast, NumCast, RTFCast, StrCast } from '../../fields/Types'; import { TraceMobx } from '../../fields/util'; +import { Gestures } from '../../pen-gestures/GestureTypes'; import { CognitiveServices } from '../cognitive_services/CognitiveServices'; import { Docs } from '../documents/Documents'; import { DocumentType } from '../documents/DocumentTypes'; @@ -35,7 +37,6 @@ import { InteractionUtils } from '../util/InteractionUtils'; import { SnappingManager } from '../util/SnappingManager'; import { UndoManager } from '../util/UndoManager'; import { ContextMenu } from './ContextMenu'; -import { ViewBoxInterface } from './ViewBoxInterface'; import { ViewBoxAnnotatableComponent } from './DocComponent'; import { Colors } from './global/globalEnums'; import { InkControlPtHandles, InkEndPtHandles } from './InkControlPtHandles'; @@ -46,6 +47,7 @@ import { FieldView, FieldViewProps } from './nodes/FieldView'; import { FormattedTextBox, FormattedTextBoxProps } from './nodes/formattedText/FormattedTextBox'; import { PinDocView, PinProps } from './PinFuncs'; import { StyleProp } from './StyleProp'; +import { ViewBoxInterface } from './ViewBoxInterface'; // eslint-disable-next-line @typescript-eslint/no-var-requires const { INK_MASK_SIZE } = require('./global/globalCssVariables.module.scss'); // prettier-ignore @@ -318,8 +320,8 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() Colors.MEDIUM_BLUE, screenInkWidth[0], screenSpaceCenterlineStrokeWidth, - StrCast(inkDoc.stroke_lineJoin), - StrCast(this.layoutDoc.stroke_lineCap), + StrCast(inkDoc.stroke_lineJoin) as Property.StrokeLinejoin, + StrCast(this.layoutDoc.stroke_lineCap) as Property.StrokeLinecap, StrCast(inkDoc.stroke_bezier), 'none', startMarker, @@ -328,7 +330,7 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() StrCast(inkDoc.stroke_dash), 1, 1, - '', + '' as Gestures, 'none', 1.0, false @@ -383,8 +385,8 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() this.strokeColor, inkStrokeWidth, inkStrokeWidth, - StrCast(this.layoutDoc.stroke_lineJoin), - StrCast(this.layoutDoc.stroke_lineCap), + StrCast(this.layoutDoc.stroke_lineJoin) as Property.StrokeLinejoin, + StrCast(this.layoutDoc.stroke_lineCap) as Property.StrokeLinecap, StrCast(this.layoutDoc.stroke_bezier), !closed ? 'none' : fillColor === 'transparent' ? 'none' : fillColor, startMarker, @@ -393,7 +395,7 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() StrCast(this.layoutDoc.stroke_dash), inkScaleX, inkScaleY, - '', + '' as Gestures, 'none', 1.0, false, @@ -410,8 +412,8 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() mask && color === 'transparent' ? this.strokeColor : (highlightColor ?? color), inkStrokeWidth, inkStrokeWidth + NumCast(this.layoutDoc.stroke_borderWidth) + (fillColor ? (closed ? higlightMargin : (highlightIndex ?? 0) + higlightMargin) : higlightMargin), - StrCast(this.layoutDoc.stroke_lineJoin), - StrCast(this.layoutDoc.stroke_lineCap), + StrCast(this.layoutDoc.stroke_lineJoin) as Property.StrokeLinejoin, + StrCast(this.layoutDoc.stroke_lineCap) as Property.StrokeLinecap, StrCast(this.layoutDoc.stroke_bezier), !closed || !fillColor || DashColor(fillColor).alpha() === 0 ? 'none' : fillColor, startMarker, @@ -420,7 +422,7 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() StrCast(this.layoutDoc.stroke_dash), inkScaleX, inkScaleY, - '', + '' as Gestures, this._props.pointerEvents?.() ?? 'visiblePainted', 0.0, false, diff --git a/src/client/views/LightboxView.tsx b/src/client/views/LightboxView.tsx index 7198c7f05..adbe20a63 100644 --- a/src/client/views/LightboxView.tsx +++ b/src/client/views/LightboxView.tsx @@ -1,6 +1,4 @@ /* eslint-disable no-use-before-define */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Toggle, ToggleType, Type } from 'browndash-components'; @@ -12,7 +10,7 @@ import { emptyFunction } from '../../Utils'; import { CreateLinkToActiveAudio, Doc, DocListCast, FieldResult, Opt } from '../../fields/Doc'; import { Id } from '../../fields/FieldSymbols'; import { InkTool } from '../../fields/InkField'; -import { Cast, NumCast, toList } from '../../fields/Types'; +import { BoolCast, Cast, NumCast, toList } from '../../fields/Types'; import { SnappingManager } from '../util/SnappingManager'; import { Transform } from '../util/Transform'; import { GestureOverlay } from './GestureOverlay'; @@ -28,7 +26,7 @@ interface LightboxViewProps { PanelWidth: number; PanelHeight: number; maxBorder: number[]; - addSplit: (document: Doc, pullSide: OpenWhereMod, stack?: any, panelName?: string | undefined, keyValue?: boolean | undefined) => boolean; + addSplit: (document: Doc, pullSide: OpenWhereMod, stack?: unknown, panelName?: string | undefined, keyValue?: boolean | undefined) => boolean; } const savedKeys = ['freeform_panX', 'freeform_panY', 'freeform_scale', 'layout_scrollTop', 'layout_fieldKey']; @@ -63,7 +61,7 @@ export class LightboxView extends ObservableReactComponent { @computed get leftBorder() { return Math.min(this._props.PanelWidth / 4, this._props.maxBorder[0]); } // prettier-ignore @computed get topBorder() { return Math.min(this._props.PanelHeight / 4, this._props.maxBorder[1]); } // prettier-ignore - constructor(props: any) { + constructor(props: LightboxViewProps) { super(props); makeObservable(this); LightboxView.Instance = this; @@ -214,7 +212,7 @@ export class LightboxView extends ObservableReactComponent { lightboxDocTemplate = () => this._layoutTemplate; future = () => this._future; - renderNavBtn = (left: Opt, bottom: Opt, top: number, icon: IconProp, display: any, click: () => void, color?: string) => ( + renderNavBtn = (left: Opt, bottom: Opt, top: number, icon: IconProp, display: boolean, click: () => void, color?: string) => (
{ render() { let downx = 0; let downy = 0; - const toggleBtn = (classname: string, tooltip: string, toggleBackground: any, icon: IconProp, icon2: IconProp | string, onClick: () => void) => ( + const toggleBtn = (classname: string, tooltip: string, toggleBackground: boolean, icon: IconProp, icon2: IconProp | string, onClick: () => void) => (
{
- {this.renderNavBtn(0, undefined, this._props.PanelHeight / 2 - 12.5, 'chevron-left', this._doc && this._history.length, this.previous)} + {this.renderNavBtn(0, undefined, this._props.PanelHeight / 2 - 12.5, 'chevron-left', this._doc && this._history.length ? true : false, this.previous)} {this.renderNavBtn( this._props.PanelWidth - Math.min(this._props.PanelWidth / 4, this._props.maxBorder[0]), undefined, this._props.PanelHeight / 2 - 12.5, 'chevron-right', - this._doc && this._future.length, + this._doc && this._future.length ? true : false, this.next, this.future().length.toString() )} - {toggleBtn('lightboxView-navBtn', 'toggle reading view', this._doc?._layout_fitWidth, 'book-open', 'book', this.toggleFitWidth)} + {toggleBtn('lightboxView-navBtn', 'toggle reading view', BoolCast(this._doc?._layout_fitWidth), 'book-open', 'book', this.toggleFitWidth)} {toggleBtn('lightboxView-tabBtn', 'open document in a tab', false, 'file-download', '', this.downloadDoc)} {toggleBtn('lightboxView-penBtn', 'toggle pen annotation', Doc.ActiveTool === InkTool.Pen, 'pen', '', this.togglePen)} {toggleBtn('lightboxView-exploreBtn', 'toggle navigate only mode', SnappingManager.ExploreMode, 'globe-americas', '', this.toggleExplore)} @@ -326,7 +324,7 @@ export class LightboxView extends ObservableReactComponent { } } interface LightboxTourBtnProps { - navBtn: (left: Opt, bottom: Opt, top: number, icon: IconProp, display: any, click: () => void, color?: string) => JSX.Element; + navBtn: (left: Opt, bottom: Opt, top: number, icon: IconProp, display: boolean, click: () => void, color?: string) => JSX.Element; // eslint-disable-next-line react/no-unused-prop-types future: () => Opt; stepInto: () => void; @@ -335,7 +333,7 @@ interface LightboxTourBtnProps { @observer export class LightboxTourBtn extends React.Component { render() { - return this.props.navBtn('50%', 0, 0, 'chevron-down', this.props.lightboxDoc(), this.props.stepInto, ''); + return this.props.navBtn('50%', 0, 0, 'chevron-down', this.props.lightboxDoc() ? true : false, this.props.stepInto, ''); } } diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index 43b9a6b39..044162e4e 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -50,6 +50,7 @@ import { ScreenshotBox } from './nodes/ScreenshotBox'; import { ScriptingBox } from './nodes/ScriptingBox'; import { VideoBox } from './nodes/VideoBox'; import { WebBox } from './nodes/WebBox'; +import { CalendarBox } from './nodes/calendarBox/CalendarBox'; import { DashDocCommentView } from './nodes/formattedText/DashDocCommentView'; import { DashDocView } from './nodes/formattedText/DashDocView'; import { DashFieldView } from './nodes/formattedText/DashFieldView'; @@ -60,6 +61,8 @@ import { SummaryView } from './nodes/formattedText/SummaryView'; import { ImportElementBox } from './nodes/importBox/ImportElementBox'; import { PresBox, PresElementBox } from './nodes/trails'; import { SearchBox } from './search/SearchBox'; +import { Node } from 'prosemirror-model'; +import { EditorView } from 'prosemirror-view'; dotenv.config(); @@ -83,7 +86,7 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; setTimeout(() => { // prevent zooming browser document.getElementById('root')!.addEventListener('wheel', event => event.ctrlKey && event.preventDefault(), true); - const startload = (document as any).startLoad; + const startload = (document as unknown as { startLoad: number }).startLoad; // see index.html in deploy/ const loading = Date.now() - (startload ? Number(startload) : Date.now() - 3000); console.log('Loading Time = ' + loading); const d = new Date(); @@ -99,12 +102,12 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; // initialize plugins and classes that require plugins CollectionDockingView.Init(TabDocView); FormattedTextBox.Init((tbox: FormattedTextBox) => ({ - dashComment(node: any, view: any, getPos: any) { return new DashDocCommentView(node, view, getPos); }, // prettier-ignore - dashDoc(node: any, view: any, getPos: any) { return new DashDocView(node, view, getPos, tbox); }, // prettier-ignore - dashField(node: any, view: any, getPos: any) { return new DashFieldView(node, view, getPos, tbox); }, // prettier-ignore - equation(node: any, view: any, getPos: any) { return new EquationView(node, view, getPos, tbox); }, // prettier-ignore - summary(node: any, view: any, getPos: any) { return new SummaryView(node, view, getPos); }, // prettier-ignore - footnote(node: any, view: any, getPos: any) { return new FootnoteView(node, view, getPos); }, // prettier-ignore + dashComment(node: Node, view: EditorView, getPos: () => number | undefined) { return new DashDocCommentView(node, view, getPos); }, // prettier-ignore + dashDoc(node: Node, view: EditorView, getPos: () => number | undefined) { return new DashDocView(node, view, getPos, tbox); }, // prettier-ignore + dashField(node: Node, view: EditorView, getPos: () => number | undefined) { return new DashFieldView(node, view, getPos, tbox); }, // prettier-ignore + equation(node: Node, view: EditorView, getPos: () => number | undefined) { return new EquationView(node, view, getPos, tbox); }, // prettier-ignore + summary(node: Node, view: EditorView, getPos: () => number | undefined) { return new SummaryView(node, view, getPos); }, // prettier-ignore + footnote(node: Node, view: EditorView, getPos: () => number | undefined) { return new FootnoteView(node, view, getPos); }, // prettier-ignore })); CollectionFreeFormInfoUI.Init(); LinkFollower.Init(); @@ -141,6 +144,7 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; ChatBox, DiagramBox, HTMLtag, + CalendarBox, ComparisonBox, LoadingBox, PhysicsSimulationBox, diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index ef1bcfb64..ac30c5a14 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -1,4 +1,3 @@ -/* eslint-disable node/no-unpublished-import */ import { library } from '@fortawesome/fontawesome-svg-core'; import { faBuffer, faHireAHelper } from '@fortawesome/free-brands-svg-icons'; import * as far from '@fortawesome/free-regular-svg-icons'; @@ -7,7 +6,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, computed, configure, makeObservable, observable, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -// eslint-disable-next-line import/no-relative-packages +import ResizeObserver from 'resize-observer-polyfill'; import '../../../node_modules/browndash-components/dist/styles/global.min.css'; import { ClientUtils, lightOrDark, returnEmptyDoclist, returnEmptyFilter, returnFalse, returnTrue, returnZero, setupMoveUpEvents } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; @@ -58,7 +57,6 @@ import { ImageLabelHandler } from './collections/collectionFreeForm/ImageLabelHa import { MarqueeOptionsMenu } from './collections/collectionFreeForm/MarqueeOptionsMenu'; import { CollectionLinearView } from './collections/collectionLinear'; import { LinkMenu } from './linking/LinkMenu'; -import { AudioBox } from './nodes/AudioBox'; import { SchemaCSVPopUp } from './nodes/DataVizBox/SchemaCSVPopUp'; import { DocButtonState } from './nodes/DocumentLinksButton'; import { DocumentView, DocumentViewInternal } from './nodes/DocumentView'; @@ -77,11 +75,11 @@ import { AnchorMenu } from './pdf/AnchorMenu'; import { GPTPopup } from './pdf/GPTPopup/GPTPopup'; import { TopBar } from './topbar/TopBar'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const { LEFT_MENU_WIDTH, TOPBAR_HEIGHT } = require('./global/globalCssVariables.module.scss'); // prettier-ignore -const _global = (window /* browser */ || global) /* node */ as any; @observer -export class MainView extends ObservableReactComponent<{}> { +export class MainView extends ObservableReactComponent { // eslint-disable-next-line no-use-before-define public static Instance: MainView; public static Live: boolean = false; @@ -92,7 +90,7 @@ export class MainView extends ObservableReactComponent<{}> { @observable private _dashUIWidth: number = 0; // width of entire main dashboard region including left menu buttons and properties panel (but not including the dashboard selector button row) @observable private _dashUIHeight: number = 0; // height of entire main dashboard region including top menu buttons @observable private _panelContent: string = 'none'; - @observable private _sidebarContent: any = Doc.MyLeftSidebarPanel; + @observable private _sidebarContent: Doc = Doc.MyLeftSidebarPanel; @observable private _leftMenuFlyoutWidth: number = 0; @computed get _hideUI() { return this.mainDoc && this.mainDoc._type_collection !== CollectionViewType.Docking; @@ -152,7 +150,7 @@ export class MainView extends ObservableReactComponent<{}> { } }; headerBarDocWidth = () => this.mainDocViewWidth(); - headerBarDocHeight = () => (this._hideUI ? 0 : this.headerBarHeight ?? 0); + headerBarDocHeight = () => (this._hideUI ? 0 : (this.headerBarHeight ?? 0)); topMenuHeight = () => (this._hideUI ? 0 : 35); topMenuWidth = returnZero; // value is ignored ... leftMenuWidth = () => (this._hideUI ? 0 : Number(LEFT_MENU_WIDTH.replace('px', ''))); @@ -169,7 +167,7 @@ export class MainView extends ObservableReactComponent<{}> { reaction( // when a multi-selection occurs, remove focus from all active elements to allow keyboad input to go only to global key manager to act upon selection () => DocumentView.Selected().slice(), - views => views.length > 1 && (document.activeElement as any)?.blur !== undefined && (document.activeElement as any)!.blur() + views => views.length > 1 && document.activeElement instanceof HTMLElement && document.activeElement?.blur() ); reaction( () => Doc.MyDockedBtns.linearView_IsOpen, @@ -234,9 +232,9 @@ export class MainView extends ObservableReactComponent<{}> { tag.src = 'https://www.youtube.com/iframe_api'; const firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode!.insertBefore(tag, firstScriptTag); - document.addEventListener('dash', (e: any) => { + document.addEventListener('dash', (e: Event) => { // event used by chrome plugin to tell Dash which document to focus on - const id = GetDocFromUrl(e.detail); + const id = GetDocFromUrl((e as Event & { detail: string }).detail); DocServer.GetRefField(id).then(doc => (doc instanceof Doc ? DocumentView.showDocument(doc, { willPan: false }) : null)); }); document.addEventListener('linkAnnotationToDash', Hypothesis.linkListener); @@ -253,12 +251,12 @@ export class MainView extends ObservableReactComponent<{}> { // document.removeEventListener('linkAnnotationToDash', Hypothesis.linkListener); } - constructor(props: any) { + constructor(props: object) { super(props); makeObservable(this); DocumentViewInternal.addDocTabFunc = MainView.addDocTabFunc_impl; MainView.Instance = this; - DashboardView._urlState = HistoryUtil.parseUrl(window.location) || ({} as any); + DashboardView._urlState = HistoryUtil.parseUrl(window.location) ?? { type: 'doc', docId: '' }; // causes errors to be generated when modifying an observable outside of an action configure({ enforceActions: 'observed' }); @@ -293,7 +291,7 @@ export class MainView extends ObservableReactComponent<{}> { fa.faExternalLinkAlt, fa.faCalendar, fa.faSquare, - far.faSquare as any, + far.faSquare, fa.faConciergeBell, fa.faWindowRestore, fa.faFolder, @@ -445,7 +443,7 @@ export class MainView extends ObservableReactComponent<{}> { fa.faHandPaper, fa.faMap, fa.faUser, - faHireAHelper as any, + faHireAHelper, fa.faTrashRestore, fa.faUsers, fa.faWrench, @@ -456,14 +454,14 @@ export class MainView extends ObservableReactComponent<{}> { fa.faArchive, fa.faBezierCurve, fa.faCircle, - far.faCircle as any, + far.faCircle, fa.faLongArrowAltRight, fa.faPenFancy, fa.faAngleDoubleRight, fa.faAngleDoubleDown, fa.faAngleDoubleLeft, fa.faAngleDoubleUp, - faBuffer as any, + faBuffer, fa.faExpand, fa.faUndo, fa.faSlidersH, @@ -570,7 +568,6 @@ export class MainView extends ObservableReactComponent<{}> { ); DocumentManager.removeOverlayViews(); Doc.linkFollowUnhighlight(); - AudioBox.Enabled = true; const targets = document.elementsFromPoint(e.x, e.y); if (targets.length) { let targClass = targets[0].className.toString(); @@ -590,18 +587,6 @@ export class MainView extends ObservableReactComponent<{}> { document.addEventListener('pointerdown', this.globalPointerDown, true); document.addEventListener('pointermove', this.globalPointerMove, true); document.addEventListener('pointerup', this.globalPointerClick, true); - document.addEventListener( - 'click', - (e: MouseEvent) => { - if (!e.cancelBubble) { - const pathstr = (e as any)?.path?.map((p: any) => p.classList?.toString()).join(); - if (pathstr?.includes('libraryFlyout')) { - DocumentView.DeselectAll(); - } - } - }, - false - ); document.oncontextmenu = () => false; }; @@ -777,7 +762,7 @@ export class MainView extends ObservableReactComponent<{}> {
{ className="mainView-dashboardArea" ref={r => { r && - new _global.ResizeObserver( + new ResizeObserver( action(() => { this._dashUIWidth = r.getBoundingClientRect().width; this._dashUIHeight = r.getBoundingClientRect().height; @@ -976,11 +961,11 @@ export class MainView extends ObservableReactComponent<{}> { {[ ...SnappingManager.HorizSnapLines.map((l, i) => ( // eslint-disable-next-line react/no-array-index-key - + )), ...SnappingManager.VertSnapLines.map((l, i) => ( // eslint-disable-next-line react/no-array-index-key - + )), ]} @@ -1038,7 +1023,7 @@ export class MainView extends ObservableReactComponent<{}> { } ref={r => { r && - new _global.ResizeObserver( + new ResizeObserver( action(() => { this._windowWidth = r.getBoundingClientRect().width; this._windowHeight = r.getBoundingClientRect().height; diff --git a/src/client/views/OverlayView.tsx b/src/client/views/OverlayView.tsx index a7907a565..7bf10467e 100644 --- a/src/client/views/OverlayView.tsx +++ b/src/client/views/OverlayView.tsx @@ -3,6 +3,7 @@ import { observer } from 'mobx-react'; import { computedFn } from 'mobx-utils'; import * as React from 'react'; import ReactLoading from 'react-loading'; +import ResizeObserver from 'resize-observer-polyfill'; import { returnEmptyDoclist, returnEmptyFilter, returnTrue, setupMoveUpEvents } from '../../ClientUtils'; import { Utils, emptyFunction } from '../../Utils'; import { Doc } from '../../fields/Doc'; @@ -18,8 +19,6 @@ import './OverlayView.scss'; import { DefaultStyleProvider } from './StyleProvider'; import { DocumentView, DocumentViewInternal } from './nodes/DocumentView'; -const _global = (window /* browser */ || global) /* node */ as any; - export type OverlayDisposer = () => void; export type OverlayElementOptions = { @@ -109,19 +108,19 @@ export class OverlayWindow extends ObservableReactComponent } @observer -export class OverlayView extends ObservableReactComponent<{}> { +export class OverlayView extends ObservableReactComponent { // eslint-disable-next-line no-use-before-define public static Instance: OverlayView; @observable.shallow _elements: JSX.Element[] = []; - constructor(props: any) { + constructor(props: object) { super(props); makeObservable(this); if (!OverlayView.Instance) { OverlayView.Instance = this; - new _global.ResizeObserver( - action((entries: any) => { - Array.from(entries).forEach((entry: any) => { + new ResizeObserver( + action(entries => { + Array.from(entries).forEach(entry => { Doc.MyOverlayDocs.forEach(docIn => { const doc = docIn; if (NumCast(doc.overlayX) > entry.contentRect.width - 10) { @@ -162,17 +161,17 @@ export class OverlayView extends ObservableReactComponent<{}> { @action addWindow(contents: JSX.Element, options: OverlayElementOptions): OverlayDisposer { - const remove = action(() => { - const index = this._elements.indexOf(contents); + const remove = action((wincontents: JSX.Element) => { + const index = this._elements.indexOf(wincontents); if (index !== -1) this._elements.splice(index, 1); }); const wincontents = ( - + remove(wincontents)} key={Utils.GenerateGuid()} overlayOptions={options}> {contents} ); this._elements.push(wincontents); - return remove; + return () => remove(wincontents); } removeOverlayDoc = (docs: Doc | Doc[]) => toList(docs).every(Doc.RemFromMyOverlay); diff --git a/src/client/views/ScriptingRepl.tsx b/src/client/views/ScriptingRepl.tsx index 1a2eb460f..2de867746 100644 --- a/src/client/views/ScriptingRepl.tsx +++ b/src/client/views/ScriptingRepl.tsx @@ -1,6 +1,4 @@ /* eslint-disable react/no-array-index-key */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; @@ -14,21 +12,26 @@ import { OverlayView } from './OverlayView'; import './ScriptingRepl.scss'; import { DocumentIconContainer } from './nodes/DocumentIcon'; import { DocumentView } from './nodes/DocumentView'; +import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; +import { emptyFunction } from '../../Utils'; +import { ObjectField } from '../../fields/ObjectField'; +import { RefField } from '../../fields/RefField'; +import { Doc, FieldResult, FieldType, Opt } from '../../fields/Doc'; interface replValueProps { scrollToBottom: () => void; - value: any; + value: Opt>; name?: string; } @observer export class ScriptingValueDisplay extends ObservableReactComponent { - constructor(props: any) { + constructor(props: replValueProps) { super(props); makeObservable(this); } render() { - const val = this._props.name ? this._props.value[this._props.name] : this._props.value; + const val = this._props.value instanceof Doc && this._props.name ? this._props.value[this._props.name] : this._props.value; const title = (name: string) => ( <> {this._props.name ? {this._props.name} : : <> } @@ -47,13 +50,14 @@ export class ScriptingValueDisplay extends ObservableReactComponent void; - value: { [key: string]: any }; + value: Opt>; name?: string; } +@observer export class ScriptingObjectDisplay extends ObservableReactComponent { @observable collapsed = true; - constructor(props: any) { + constructor(props: ReplProps) { super(props); makeObservable(this); } @@ -74,10 +78,12 @@ export class ScriptingObjectDisplay extends ObservableReactComponent {name} ); + if (val === undefined) return '--undefined--'; + if (val instanceof Promise) return '...Promise...'; if (this.collapsed) { return (
- + setupMoveUpEvents(this, e, returnFalse, emptyFunction, this.toggle)} className="scriptingObject-icon scriptingObject-iconCollapsed"> {title} (+{Object.keys(val).length}) @@ -94,8 +100,7 @@ export class ScriptingObjectDisplay extends ObservableReactComponent
{Object.keys(val).map(key => ( - // eslint-disable-next-line react/jsx-props-no-spreading - + ))}
@@ -104,13 +109,13 @@ export class ScriptingObjectDisplay extends ObservableReactComponent } @observer -export class ScriptingRepl extends ObservableReactComponent<{}> { - constructor(props: any) { +export class ScriptingRepl extends ObservableReactComponent { + constructor(props: object) { super(props); makeObservable(this); } - @observable private commands: { command: string; result: any }[] = []; + @observable private commands: { command: string; result: unknown }[] = []; private commandsHistory: string[] = []; @observable private commandString: string = ''; @@ -120,13 +125,11 @@ export class ScriptingRepl extends ObservableReactComponent<{}> { private commandsRef = React.createRef(); - private args: any = {}; - getTransformer = (): Transformer => ({ transformer: context => { const knownVars: { [name: string]: number } = {}; const usedDocuments: number[] = []; - ScriptingGlobals.getGlobals().forEach((global: any) => { + ScriptingGlobals.getGlobals().forEach((global: string) => { knownVars[global] = 1; }); return root => { @@ -168,7 +171,7 @@ export class ScriptingRepl extends ObservableReactComponent<{}> { switch (e.key) { case 'Enter': { e.stopPropagation(); - const docGlobals: { [name: string]: any } = {}; + const docGlobals: { [name: string]: FieldType } = {}; DocumentView.allViews().forEach((dv, i) => { docGlobals[`d${i}`] = dv.Document; }); @@ -176,19 +179,20 @@ export class ScriptingRepl extends ObservableReactComponent<{}> { const script = CompileScript(this.commandString, { typecheck: false, addReturn: true, editable: true, params: { args: 'any' }, transformer: this.getTransformer(), globals }); if (!script.compiled) { this.commands.push({ command: this.commandString, result: script.errors }); + this.maybeScrollToBottom(); return; } - const result = undoable(() => script.run({ args: this.args }, () => this.commands.push({ command: this.commandString, result: e.toString() })), 'run:' + this.commandString)(); + const result = undoable(() => script.run({}, e => this.commands.push({ command: this.commandString, result: e as string })), 'run:' + this.commandString)(); if (result.success) { this.commands.push({ command: this.commandString, result: result.result }); this.commandsHistory.push(this.commandString); - this.maybeScrollToBottom(); - this.commandString = ''; this.commandBuffer = ''; this.historyIndex = -1; } + + this.maybeScrollToBottom(); break; } case 'ArrowUp': { @@ -232,7 +236,7 @@ export class ScriptingRepl extends ObservableReactComponent<{}> { private shouldScroll: boolean = false; private maybeScrollToBottom = () => { const ele = this.commandsRef.current; - if (ele && ele.scrollTop === ele.scrollHeight - ele.offsetHeight) { + if (ele && Math.abs(Math.ceil(ele.scrollTop) - (ele.scrollHeight - ele.offsetHeight)) < 2) { this.shouldScroll = true; this.forceUpdate(); } @@ -240,14 +244,14 @@ export class ScriptingRepl extends ObservableReactComponent<{}> { private scrollToBottom() { const ele = this.commandsRef.current; - ele && ele.scroll({ behavior: 'auto', top: ele.scrollHeight }); + ele?.scroll({ behavior: 'smooth', top: ele.scrollHeight }); } - componentDidUpdate(prevProps: Readonly<{}>) { + componentDidUpdate(prevProps: Readonly) { super.componentDidUpdate(prevProps); if (this.shouldScroll) { this.shouldScroll = false; - this.scrollToBottom(); + setTimeout(() => this.scrollToBottom(), 0); } } @@ -269,7 +273,7 @@ export class ScriptingRepl extends ObservableReactComponent<{}> { {command ||
}
- +
))} diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 8a07a6bd7..b111904f3 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -21,7 +21,7 @@ import { undoBatch, UndoManager } from '../util/UndoManager'; import { TreeSort } from './collections/TreeSort'; import { Colors } from './global/globalEnums'; import { DocumentView, DocumentViewProps } from './nodes/DocumentView'; -import { FieldViewProps, StyleProviderFuncType } from './nodes/FieldView'; +import { FieldViewProps } from './nodes/FieldView'; import { StyleProp } from './StyleProp'; import './StyleProvider.scss'; @@ -46,7 +46,7 @@ export function styleFromLayoutString(doc: Doc, props: FieldViewProps, scale: nu // bcz: this executes a script to convert a property expression string: { script } into a value ScriptField.MakeFunction(expr, { this: Doc.name, scale: 'number' })?.script.run({ this: doc, scale }).result?.toString() ?? ''; divKeys.forEach((prop: string) => { - const p = (props as any)[prop]; + const p = (props as FieldViewProps & { [key: string]: unknown })[prop]; typeof p === 'string' && (style[prop] = p?.replace(/{([^.'][^}']+)}/g, replacer)); }); return style; @@ -69,7 +69,7 @@ export function SetFilterOpener(func: () => void) { // a preliminary implementation of a dash style sheet for setting rendering properties of documents nested within a Tab // -export function DefaultStyleProvider(doc: Opt, props: Opt, property: string) : StyleProviderFuncType { +export function DefaultStyleProvider(doc: Opt, props: Opt, property: string) { const remoteDocHeader = 'author;author_date;noMargin'; const isCaption = property.includes(':caption'); const isAnchor = property.includes(':anchor'); diff --git a/src/client/views/ViewBoxInterface.ts b/src/client/views/ViewBoxInterface.ts index c633f34fb..dce64ab92 100644 --- a/src/client/views/ViewBoxInterface.ts +++ b/src/client/views/ViewBoxInterface.ts @@ -18,6 +18,9 @@ export abstract class ViewBoxInterface

extends ObservableReactComponent void; // moves contents of collection to parent updateIcon?: () => void; // updates the icon representation of the document getAnchor?: (addAsAnnotation: boolean, pinData?: PinProps) => Doc; // returns an Anchor Doc that represents the current state of the doc's componentview (e.g., the current playhead location of a an audio/video box) diff --git a/src/client/views/collections/CollectionCalendarView.tsx b/src/client/views/collections/CollectionCalendarView.tsx index a08a7c7c1..9eb16917b 100644 --- a/src/client/views/collections/CollectionCalendarView.tsx +++ b/src/client/views/collections/CollectionCalendarView.tsx @@ -6,11 +6,11 @@ import { dateRangeStrToDates, returnTrue } from '../../../ClientUtils'; import { Doc, DocListCast } from '../../../fields/Doc'; import { StrCast } from '../../../fields/Types'; import { CollectionStackingView } from './CollectionStackingView'; -import { CollectionSubView } from './CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; @observer export class CollectionCalendarView extends CollectionSubView() { - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index de46180e6..28a769896 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -18,7 +18,7 @@ import { StyleProp } from '../StyleProp'; import { DocumentView } from '../nodes/DocumentView'; import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; import './CollectionCardDeckView.scss'; -import { CollectionSubView } from './CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; enum cardSortings { Time = 'time', @@ -68,7 +68,7 @@ export class CollectionCardView extends CollectionSubView() { } }; - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -86,11 +86,11 @@ export class CollectionCardView extends CollectionSubView() { } @computed get cardSort_customField() { - return StrCast(this.Document.cardSort_customField) as any as 'chat' | 'star' | 'idea' | 'like'; + return StrCast(this.Document.cardSort_customField) as 'chat' | 'star' | 'idea' | 'like'; } @computed get cardSort() { - return StrCast(this.Document.cardSort) as any as cardSortings; + return StrCast(this.Document.cardSort) as cardSortings; } /** * how much to scale down the contents of the view so that everything will fit @@ -428,7 +428,6 @@ export class CollectionCardView extends CollectionSubView() { return (

{numberRange(amButtons).map(i => ( - // eslint-disable-next-line jsx-a11y/control-has-associated-label
); @@ -451,7 +453,7 @@ export class TableBox extends ObservableReactComponent { if (this._props.titleCol === col) colSelected = true; return ( -
{this._props.records[rowId][col]}
+
{this._props.records[rowId][col] as string | number}
); })} diff --git a/src/client/views/nodes/DocumentContentsView.tsx b/src/client/views/nodes/DocumentContentsView.tsx index 192c7875e..8a2c4e530 100644 --- a/src/client/views/nodes/DocumentContentsView.tsx +++ b/src/client/views/nodes/DocumentContentsView.tsx @@ -43,26 +43,37 @@ interface HTMLtagProps { @observer export class HTMLtag extends React.Component { click = () => { - const clickScript = (this.props as any).onClick as Opt; + const clickScript = this.props.onClick as Opt; clickScript?.script.run({ this: this.props.Document, scale: this.props.scaling }); }; - onInput = (e: React.FormEvent) => { - const onInputScript = (this.props as any).onInput as Opt; - onInputScript?.script.run({ this: this.props.Document, value: (e.target as any).textContent }); + onInput = (e: React.FormEvent) => { + const onInputScript = this.props.onInput as Opt; + onInputScript?.script.run({ this: this.props.Document, value: (e.target as HTMLElement).textContent }); }; render() { - const style: { [key: string]: any } = {}; - const divKeys = OmitKeys(this.props, ['children', 'dragStarting', 'dragEnding', 'htmltag', 'scaling', 'Document', 'key', 'onInput', 'onClick', '__proto__']).omit; - const replacer = (match: any, expr: string) => + const style: { [key: string]: unknown } = {}; + const divKeys = OmitKeys(this.props, [ + 'children', // + 'dragStarting', + 'dragEnding', + 'htmltag', + 'scaling', + 'Document', + 'key', + 'onInput', + 'onClick', + '__proto__', + ]).omit; + const replacer = (match: string, expr: string) => // bcz: this executes a script to convert a property expression string: { script } into a value (ScriptField.MakeFunction(expr, { this: Doc.name, scale: 'number' })?.script.run({ this: this.props.Document, scale: this.props.scaling }).result as string) || ''; Object.keys(divKeys).forEach((prop: string) => { - const p = (this.props as any)[prop] as string; + const p = (this.props as unknown as { [key: string]: string })[prop] as string; style[prop] = p?.replace(/{([^.'][^}']+)}/g, replacer); }); const Tag = this.props.htmltag as keyof JSX.IntrinsicElements; return ( - + {this.props.children} ); @@ -78,12 +89,12 @@ export class DocumentContentsView extends ObservableReactComponent{content}< as in {this.title} - const replacer = (match: any, prefix: string, expr: string, postfix: string) => prefix + ((ScriptField.MakeFunction(expr, { this: Doc.name })?.script.run({ this: this._props.Document }).result as string) || '') + postfix; + const replacer = (match: string, prefix: string, expr: string, postfix: string) => prefix + ((ScriptField.MakeFunction(expr, { this: Doc.name })?.script.run({ this: this._props.Document }).result as string) || '') + postfix; layoutFrame = layoutFrame.replace(/(>[^{]*)[^=]\{([^.'][^<}]+)\}([^}]*<)/g, replacer); // replace HTML with corresponding HTML tag as in: becomes - const replacer2 = (match: any, p1: string) => ` ` with as in: becomes @@ -194,6 +205,7 @@ export class DocumentContentsView extends ObservableReactComponent { console.log('DocumentContentsView:' + test, bindings, layoutFrame); }} diff --git a/src/client/views/nodes/DocumentLinksButton.tsx b/src/client/views/nodes/DocumentLinksButton.tsx index 0c5156339..c35a329c9 100644 --- a/src/client/views/nodes/DocumentLinksButton.tsx +++ b/src/client/views/nodes/DocumentLinksButton.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; import { action, computed, makeObservable, observable, runInAction } from 'mobx'; @@ -55,7 +53,7 @@ export class DocumentLinksButton extends ObservableReactComponent> = undefined; // needs to be accessed from DocumentView wrapper class @observable _animateScaleTime: Opt = undefined; // milliseconds for animating between views. defaults to 300 if not uset @observable _animateScalingTo = 0; @@ -216,7 +217,7 @@ export class DocumentViewInternal extends DocComponent this.style(this.Document, StyleProp.PointerEvents) as 'all' | 'none' | 'visiblePainted' | undefined, + () => this.style(this.Document, StyleProp.PointerEvents) as Property.PointerEvents | undefined, pointerevents => { this._pointerEvents = pointerevents; }, @@ -243,7 +244,7 @@ export class DocumentViewInternal extends DocComponent disposer?.()); } - startDragging(x: number, y: number, dropAction: dropActionType, hideSource = false) { + startDragging(x: number, y: number, dropAction: dropActionType | undefined, hideSource = false) { const docView = this._docView; if (this._mainCont.current && docView) { const views = DocumentView.Selected().filter(dv => dv.ContentDiv); @@ -310,7 +311,8 @@ export class DocumentViewInternal extends DocComponent { if (this.onDoubleClickHdlr?.script) { - this.onDoubleClickHdlr.script.run(scriptProps, console.log).result?.select && this._props.select(false); + const res = this.onDoubleClickHdlr.script.run(scriptProps, console.log).result as { select: boolean }; + res.select && this._props.select(false); } else if (!Doc.IsSystem(this.Document) && defaultDblclick !== 'ignore') { this._props.addDocTab(this.Document, OpenWhere.lightboxAlways); DocumentView.DeselectAll(); @@ -558,7 +560,7 @@ export class DocumentViewInternal extends DocComponent DocumentView.SetLightboxDoc(this.Document), icon: 'external-link-alt' }); @@ -574,7 +576,7 @@ export class DocumentViewInternal extends DocComponent { this.layoutDoc[`_${this._props.fieldKey}_revealOp`] = 'hover'; }, icon: 'hand-point-up' }); // prettier-ignore revealItems.push({ description: 'Flip', event: () => { this.layoutDoc[`_${this._props.fieldKey}_revealOp`] = 'flip'; }, icon: 'rotate' }); // prettier-ignore !revealOptions && cm.addItem({ description: 'Reveal Options', addDivider: false, noexpand: true, subitems: revealItems, icon: 'layer-group' }); @@ -582,15 +584,16 @@ export class DocumentViewInternal extends DocComponent DocumentView.Selected().forEach(dv => dv._props.bringToFront?.(dv.Document, false)), icon: 'arrow-up' }); zorderItems.push({ description: 'Send to Back', event: () => DocumentView.Selected().forEach(dv => dv._props.bringToFront?.(dv.Document, true)), icon: 'arrow-down' }); zorderItems.push({ description: !this.layoutDoc._keepZDragged ? 'Keep ZIndex when dragged' : 'Allow ZIndex to change when dragged', - event: undoBatch( + event: undoable( action(() => { this.layoutDoc._keepZWhenDragged = !this.layoutDoc._keepZWhenDragged; - }) + }), + 'set zIndex drag' ), icon: 'hand-point-up', }); @@ -599,7 +602,7 @@ export class DocumentViewInternal extends DocComponent DocUtils.makeIntoPortal(this.Document, this.layoutDoc, this._allLinks), 'make into portal'), icon: 'window-restore' }); !Doc.noviceMode && onClicks.push({ description: 'Toggle Detail', event: this.setToggleDetail, icon: 'concierge-bell' }); @@ -624,7 +627,7 @@ export class DocumentViewInternal extends DocComponent Doc.MakeMetadataFieldTemplate(this.Document, this._props.TemplateDataDocument), icon: 'concierge-bell' }); @@ -648,7 +651,7 @@ export class DocumentViewInternal extends DocComponent this._props.addDocTab(Docs.Create.PdfDocument('/assets/cheat-sheet.pdf', { _width: 300, _height: 300 }), OpenWhere.addRight), icon: 'keyboard' }); !Doc.noviceMode && helpItems.push({ description: 'Print Document in Console', event: () => console.log(this.Document), icon: 'hand-point-right' }); !Doc.noviceMode && helpItems.push({ description: 'Print DataDoc in Console', event: () => console.log(this.dataDoc), icon: 'hand-point-right' }); @@ -844,7 +847,7 @@ export class DocumentViewInternal extends DocComponent Field.toKeyValueString(this.Document, field)) .join('\\') } - SetValue={undoBatch((input: string) => { + SetValue={undoable((input: string) => { if (input?.startsWith('$')) { if (this.layoutDoc.layout_showTitle) { this.layoutDoc._layout_showTitle = input?.substring(1) ? input.substring(1) : undefined; @@ -855,7 +858,7 @@ export class DocumentViewInternal extends DocComponent @@ -1245,7 +1248,7 @@ export class DocumentView extends DocComponent() { public setToggleDetail = (scriptFieldKey = 'onClick') => this._docViewInternal?.setToggleDetail(scriptFieldKey); public onContextMenu = (e?: React.MouseEvent, pageX?: number, pageY?: number) => this._docViewInternal?.onContextMenu?.(e, pageX, pageY); public cleanupPointerEvents = () => this._docViewInternal?.cleanupPointerEvents(); - public startDragging = (x: number, y: number, dropAction: dropActionType, hideSource = false) => this._docViewInternal?.startDragging(x, y, dropAction, hideSource); + public startDragging = (x: number, y: number, dropAction: dropActionType | undefined, hideSource = false) => this._docViewInternal?.startDragging(x, y, dropAction, hideSource); public showContextMenu = (pageX: number, pageY: number) => this._docViewInternal?.onContextMenu(undefined, pageX, pageY); public toggleNativeDimensions = () => this._docViewInternal && this.Document.type !== DocumentType.INK && Doc.toggleNativeDimensions(this.layoutDoc, this.NativeDimScaling() ?? 1, this._props.PanelWidth(), this._props.PanelHeight()); @@ -1288,7 +1291,7 @@ export class DocumentView extends DocComponent() { this.dataDoc.audioAnnoState = AudioAnnoState.playing; break; case AudioAnnoState.playing: - this.dataDoc[AudioPlay]?.stop(); + (this.dataDoc[AudioPlay] as Howl)?.stop(); this.dataDoc.audioAnnoState = AudioAnnoState.stopped; break; default: diff --git a/src/client/views/nodes/EquationBox.tsx b/src/client/views/nodes/EquationBox.tsx index 1f5c9b84b..fefe25764 100644 --- a/src/client/views/nodes/EquationBox.tsx +++ b/src/client/views/nodes/EquationBox.tsx @@ -1,4 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ import { action, makeObservable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -50,8 +49,8 @@ export class EquationBox extends ViewBoxBaseComponent() { () => this._props.isSelected(), selected => { if (this._ref.current) { - if (selected) this._ref.current.element.current.children[0].addEventListener('keydown', this.keyPressed, true); - else this._ref.current.element.current.children[0].removeEventListener('keydown', this.keyPressed); + if (selected) (this._ref.current.element.current?.children[0] as HTMLElement).addEventListener('keydown', this.keyPressed, true); + else (this._ref.current.element.current?.children[0] as HTMLElement).removeEventListener('keydown', this.keyPressed); } }, { fireImmediately: true } @@ -60,8 +59,8 @@ export class EquationBox extends ViewBoxBaseComponent() { @action keyPressed = (e: KeyboardEvent) => { - const _height = DivHeight(this._ref.current!.element.current); - const _width = DivWidth(this._ref.current!.element.current); + const _height = DivHeight(this._ref.current!.element?.current); + const _width = DivWidth(this._ref.current!.element?.current); if (e.key === 'Enter') { const nextEq = Docs.Create.EquationDocument(e.shiftKey ? StrCast(this.dataDoc.text) : 'x', { title: '# math', @@ -95,7 +94,7 @@ export class EquationBox extends ViewBoxBaseComponent() { }; updateSize = () => { - const style = this._ref.current && getComputedStyle(this._ref.current.element.current); + const style = this._ref.current?.element.current && getComputedStyle(this._ref.current.element.current); if (style?.width.endsWith('px') && style?.height.endsWith('px')) { if (this.layoutDoc._nativeWidth) { // if equation has been scaled then editing the expression must also edit the native dimensions to keep the aspect ratio diff --git a/src/client/views/nodes/FieldView.tsx b/src/client/views/nodes/FieldView.tsx index fc59e9e26..dd71fd946 100644 --- a/src/client/views/nodes/FieldView.tsx +++ b/src/client/views/nodes/FieldView.tsx @@ -1,5 +1,6 @@ /* eslint-disable react/no-unused-prop-types */ /* eslint-disable react/require-default-props */ +import { Property } from 'csstype'; import { computed } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -95,7 +96,7 @@ export interface FieldViewSharedProps { bringToFront?: (doc: Doc, sendToBack?: boolean) => void; waitForDoubleClickToClick?: () => 'never' | 'always' | undefined; defaultDoubleClick?: () => 'default' | 'ignore' | undefined; - pointerEvents?: () => Opt<'none' | 'all' | 'visiblePainted'>; + pointerEvents?: () => Opt; suppressSetHeight?: boolean; } diff --git a/src/client/views/nodes/FontIconBox/ButtonInterface.ts b/src/client/views/nodes/FontIconBox/ButtonInterface.ts deleted file mode 100644 index 0d0d7b1c3..000000000 --- a/src/client/views/nodes/FontIconBox/ButtonInterface.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { IconProp } from '@fortawesome/fontawesome-svg-core'; -import { Doc } from '../../../../fields/Doc'; -import { ButtonType } from './FontIconBox'; - -export interface IButtonProps { - type: string | ButtonType; - Document: Doc; - label: any; - icon: IconProp; - color: string; - backgroundColor: string; -} diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.tsx b/src/client/views/nodes/FontIconBox/FontIconBox.tsx index ffb668b03..f2f7f39bb 100644 --- a/src/client/views/nodes/FontIconBox/FontIconBox.tsx +++ b/src/client/views/nodes/FontIconBox/FontIconBox.tsx @@ -73,12 +73,12 @@ export class FontIconBox extends ViewBoxBaseComponent() { Icon = (color: string, iconFalse?: boolean) => { let icon; if (iconFalse) { - icon = StrCast(this.dataDoc[this.fieldKey ?? 'iconFalse'] ?? this.dataDoc.icon, 'user') as any; + icon = StrCast(this.dataDoc[this.fieldKey ?? 'iconFalse'] ?? this.dataDoc.icon, 'user') as IconProp; if (icon) return ; return null; } - icon = StrCast(this.dataDoc[this.fieldKey ?? 'icon'] ?? this.dataDoc.icon, 'user') as any; - return !icon ? null : icon === 'pres-trail' ? TrailsIcon(color) : ; + icon = StrCast(this.dataDoc[this.fieldKey ?? 'icon'] ?? this.dataDoc.icon, 'user') as IconProp; + return !icon ? null : icon === ('pres-trail' as IconProp) ? TrailsIcon(color) : ; }; @computed get dropdown() { return BoolCast(this.Document.dropDownOpen); @@ -117,7 +117,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { break; } // prettier-ignore const numScript = (value?: number) => ScriptCast(this.Document.script).script.run({ this: this.Document, value, _readOnly_: value === undefined }); - const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color); + const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; // Script for checking the outcome of the toggle const checkResult = Number(Number(numScript().result ?? 0).toPrecision(NumCast(this.dataDoc.numPrecision, 3))); @@ -142,7 +142,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { setupMoveUpEvents( this, e, - () => ScriptCast(this.Document.onDragScript)?.script.run({ this: this.Document, value: { doc: value, e } }).result, + () => ScriptCast(this.Document.onDragScript)?.script.run({ this: this.Document, value: { doc: value, e } }).result as boolean, emptyFunction, emptyFunction ); // prettier-ignore @@ -157,11 +157,11 @@ export class FontIconBox extends ViewBoxBaseComponent() { let noviceList: string[] = []; let text: string | undefined; - let getStyle: (val: string) => any = () => {}; + let getStyle: (val: string) => { [key: string]: string } = () => ({}); let icon: IconProp = 'caret-down'; const isViewDropdown = script?.script.originalScript.startsWith('{ return setView'); if (isViewDropdown) { - const selected = Array.from(script?.script.run({ _readOnly_: true }).result) as Doc[]; + const selected = Array.from(script?.script.run({ _readOnly_: true }).result as Doc[]); // const selected = DocumentView.SelectedDocs(); if (selected.lastElement()) { if (StrCast(selected.lastElement().type) === DocumentType.COL) { @@ -190,7 +190,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { } noviceList = [CollectionViewType.Freeform, CollectionViewType.Schema, CollectionViewType.Carousel3D, CollectionViewType.Stacking, CollectionViewType.NoteTaking]; } else { - text = script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result; + text = script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result as string; // text = StrCast((RichTextMenu.Instance?.TextView?.EditorView ? RichTextMenu.Instance : Doc.UserDoc()).fontFamily); getStyle = (val: string) => ({ fontFamily: val }); } @@ -231,8 +231,8 @@ export class FontIconBox extends ViewBoxBaseComponent() { * Color button */ @computed get colorButton() { - const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color); - const curColor = this.colorScript?.script.run({ this: this.Document, value: undefined, _readOnly_: true }).result ?? 'transparent'; + const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; + const curColor = (this.colorScript?.script.run({ this: this.Document, value: undefined, _readOnly_: true }).result as string) ?? 'transparent'; const tooltip: string = StrCast(this.Document.toolTip); return ( @@ -251,7 +251,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { type={Type.PRIM} color={color} background={SnappingManager.userBackgroundColor} - icon={this.Icon(color)!} + icon={this.Icon(color) ?? undefined} tooltip={tooltip} label={this.label} /> @@ -262,9 +262,9 @@ export class FontIconBox extends ViewBoxBaseComponent() { const tooltip: string = StrCast(this.Document.toolTip); const script = ScriptCast(this.Document.onClick)?.script; - const toggleStatus = script?.run({ this: this.Document, self: this.Document, value: undefined, _readOnly_: true }).result; + const toggleStatus = script?.run({ this: this.Document, self: this.Document, value: undefined, _readOnly_: true }).result as boolean; // Colors - const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color); + const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; const items = DocListCast(this.dataDoc.data); const multiDoc = this.Document; return ( @@ -272,13 +272,13 @@ export class FontIconBox extends ViewBoxBaseComponent() { tooltip={`Toggle ${tooltip}`} type={Type.PRIM} color={color} - onPointerDown={e => script && !toggleStatus && setupMoveUpEvents(this, e, returnFalse, emptyFunction, e => script.run({ this: multiDoc, value: undefined, _readOnly_: false }))} + onPointerDown={e => script && !toggleStatus && setupMoveUpEvents(this, e, returnFalse, emptyFunction, () => script.run({ this: multiDoc, value: undefined, _readOnly_: false }))} isToggle={script ? true : false} toggleStatus={toggleStatus} //background={SnappingManager.userBackgroundColor} label={this.label} items={DocListCast(this.dataDoc.data).map(item => ({ - icon: , + icon: , tooltip: StrCast(item.toolTip), val: StrCast(item.toolType), }))} @@ -300,9 +300,9 @@ export class FontIconBox extends ViewBoxBaseComponent() { const script = ScriptCast(this.Document.onClick); const double = ScriptCast(this.Document.onDoubleClick); - const toggleStatus = script?.script.run({ this: this.Document, value: undefined, _readOnly_: true }).result ?? false; + const toggleStatus = (script?.script.run({ this: this.Document, value: undefined, _readOnly_: true }).result as boolean) ?? false; // Colors - const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color); + const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; // const backgroundColor = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor); return ( @@ -337,30 +337,30 @@ export class FontIconBox extends ViewBoxBaseComponent() { * Default */ @computed get defaultButton() { - const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color); - const tooltip: string = StrCast(this.Document.toolTip); + const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; + const tooltip = StrCast(this.Document.toolTip); - return ; + return ; } @computed get editableText() { const script = ScriptCast(this.Document.script); const checkResult = script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result; - const setValue = (value: string): boolean => script?.script.run({ this: this.Document, value, _readOnly_: false }).result; + const setValue = (value: string) => script?.script.run({ this: this.Document, value, _readOnly_: false }).result as boolean; return (
- script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result} SetValue={setValue} oneLine contents={checkResult} /> + script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result as string} SetValue={setValue} oneLine contents={checkResult} />
); } renderButton = () => { - const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color); + const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; const tooltip = StrCast(this.Document.toolTip); const scriptFunc = () => ScriptCast(this.Document.onClick)?.script.run({ this: this.Document, _readOnly_: false }); const btnProps = { tooltip, icon: this.Icon(color)!, label: this.label }; diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index ce7552047..51dd494da 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -35,6 +35,7 @@ import { FieldView, FieldViewProps } from './FieldView'; import { FocusViewOptions } from './FocusViewOptions'; import './ImageBox.scss'; import { OpenWhere } from './OpenWhere'; +import { SnappingManager } from '../../util/SnappingManager'; export class ImageEditorData { // eslint-disable-next-line no-use-before-define @@ -73,7 +74,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { private _marqueeref = React.createRef(); private _mainCont: React.RefObject = React.createRef(); private _annotationLayer: React.RefObject = React.createRef(); - @observable _savedAnnotations = new ObservableMap(); + @observable _savedAnnotations = new ObservableMap(); @observable _curSuffix = ''; @observable _error = ''; @observable _isHovering = false; // flag to switch between primary and alternate images on hover @@ -328,7 +329,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { }) } style={{ - display: (this._props.isContentActive() !== false && DragManager.DocDragData?.canEmbed) || this.dataDoc[this.fieldKey + '_alternates'] ? 'block' : 'none', + display: (this._props.isContentActive() !== false && SnappingManager.CanEmbed) || this.dataDoc[this.fieldKey + '_alternates'] ? 'block' : 'none', width: 'min(10%, 25px)', height: 'min(10%, 25px)', background: usePath === undefined ? 'white' : usePath === 'alternate' ? 'black' : 'gray', @@ -346,7 +347,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { const defaultUrl = new URL(ClientUtils.prepend('/assets/unknown-file-icon-hi.png')); const altpaths = alts - ?.map(doc => (doc instanceof Doc ? ImageCast(doc[Doc.LayoutFieldKey(doc)])?.url ?? defaultUrl : defaultUrl)) + ?.map(doc => (doc instanceof Doc ? (ImageCast(doc[Doc.LayoutFieldKey(doc)])?.url ?? defaultUrl) : defaultUrl)) .filter(url => url) .map(url => this.choosePath(url)) ?? []; // acc ess the primary layout data of the alternate documents const paths = field ? [this.choosePath(field.url), ...altpaths] : altpaths; @@ -356,7 +357,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { @computed get content() { TraceMobx(); - const backColor = DashColor(this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) as string ?? Colors.WHITE); + const backColor = DashColor((this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) as string) ?? Colors.WHITE); const backAlpha = backColor.red() === 0 && backColor.green() === 0 && backColor.blue() === 0 ? backColor.alpha() : 1; const srcpath = this.layoutDoc.hideImage ? '' : this.paths[0]; const fadepath = this.layoutDoc.hideImage ? '' : this.paths.lastElement(); diff --git a/src/client/views/nodes/KeyValueBox.tsx b/src/client/views/nodes/KeyValueBox.tsx index 66e210c03..9e77e0973 100644 --- a/src/client/views/nodes/KeyValueBox.tsx +++ b/src/client/views/nodes/KeyValueBox.tsx @@ -1,4 +1,3 @@ -/* eslint-disable jsx-a11y/control-has-associated-label */ import { action, computed, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -35,7 +34,7 @@ export class KeyValueBox extends ViewBoxBaseComponent() { public static LayoutString() { return FieldView.LayoutString(KeyValueBox, 'data'); } - constructor(props: any) { + constructor(props: FieldViewProps) { super(props); makeObservable(this); } @@ -88,7 +87,7 @@ export class KeyValueBox extends ViewBoxBaseComponent() { const type: 'computed' | 'script' | false = rawvalue.startsWith(':=') ? 'computed' : rawvalue.startsWith('$=') ? 'script' : false; rawvalue = type ? rawvalue.substring(2) : rawvalue; rawvalue = rawvalue.replace(/.*\(\((.*)\)\)/, 'dashCallChat(_setCacheResult_, this, `$1`)'); - const value = ["'", '"', '`'].includes(rawvalue.length ? rawvalue[0] : '') || !isNaN(rawvalue as any) ? rawvalue : '`' + rawvalue + '`'; + const value = ["'", '"', '`'].includes(rawvalue.length ? rawvalue[0] : '') || !isNaN(+rawvalue) ? rawvalue : '`' + rawvalue + '`'; let script = ScriptField.CompileScript(rawvalue, {}, true, undefined, DocumentIconContainer.getTransformer()); if (!script.compiled) { @@ -116,7 +115,7 @@ export class KeyValueBox extends ViewBoxBaseComponent() { if (key) target[key] = script.originalScript; return false; } - field === undefined && (field = res.result instanceof Array ? new List(res.result) : res.result); + field === undefined && (field = res.result instanceof Array ? new List(res.result) : (res.result as FieldType)); } } if (!key) return false; @@ -165,7 +164,6 @@ export class KeyValueBox extends ViewBoxBaseComponent() { const rows: JSX.Element[] = []; let i = 0; - const self = this; const keys = Object.keys(ids).slice(); // for (const key of [...keys.filter(id => id !== 'layout' && !id.includes('_')).sort(), ...keys.filter(id => id === 'layout' || id.includes('_')).sort()]) { const sortedKeys = keys.sort((a: string, b: string) => { @@ -184,12 +182,12 @@ export class KeyValueBox extends ViewBoxBaseComponent() { addDocTab={this._props.addDocTab} PanelWidth={this._props.PanelWidth} PanelHeight={this.rowHeight} - ref={(function () { + ref={(() => { let oldEl: KeyValuePair | undefined; return (el: KeyValuePair) => { - if (oldEl) self.rows.splice(self.rows.indexOf(oldEl), 1); + if (oldEl) this.rows.splice(this.rows.indexOf(oldEl), 1); oldEl = el; - if (el) self.rows.push(el); + if (el) this.rows.push(el); }; })()} keyWidth={100 - this._splitPercentage} diff --git a/src/client/views/nodes/KeyValuePair.tsx b/src/client/views/nodes/KeyValuePair.tsx index 0956be3e9..3023716b1 100644 --- a/src/client/views/nodes/KeyValuePair.tsx +++ b/src/client/views/nodes/KeyValuePair.tsx @@ -1,4 +1,3 @@ -/* eslint-disable jsx-a11y/control-has-associated-label */ import { Tooltip } from '@mui/material'; import { action, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; @@ -9,7 +8,7 @@ import { Doc, Field } from '../../../fields/Doc'; import { DocCast } from '../../../fields/Types'; import { DocumentOptions, FInfo } from '../../documents/Documents'; import { Transform } from '../../util/Transform'; -import { undoBatch } from '../../util/UndoManager'; +import { undoable } from '../../util/UndoManager'; import { ContextMenu } from '../ContextMenu'; import { EditableView } from '../EditableView'; import { ObservableReactComponent } from '../ObservableReactComponent'; @@ -34,7 +33,7 @@ export class KeyValuePair extends ObservableReactComponent { @observable private isPointerOver = false; @observable public isChecked = false; private checkbox = React.createRef(); - constructor(props: any) { + constructor(props: KeyValuePairProps) { super(props); makeObservable(this); } @@ -91,11 +90,11 @@ export class KeyValuePair extends ObservableReactComponent { type="button" style={hover} className="keyValuePair-td-key-delete" - onClick={undoBatch(() => { + onClick={undoable(() => { if (Object.keys(this._props.doc).indexOf(this._props.keyName) !== -1) { delete this._props.doc[this._props.keyName]; } else delete DocCast(this._props.doc.proto)?.[this._props.keyName]; - })}> + }, 'set key value')}> X diff --git a/src/client/views/nodes/LinkBox.tsx b/src/client/views/nodes/LinkBox.tsx index 8d6ae9f73..4d9d2460e 100644 --- a/src/client/views/nodes/LinkBox.tsx +++ b/src/client/views/nodes/LinkBox.tsx @@ -27,6 +27,7 @@ export class LinkBox extends ViewBoxBaseComponent() { public static LayoutString(fieldKey: string = 'link') { return FieldView.LayoutString(LinkBox, fieldKey); } + _hackToSeeIfDeleted: NodeJS.Timeout | undefined; _disposers: { [name: string]: IReactionDisposer } = {}; @observable _forceAnimate: number = 0; // forces xArrow to animate when a transition animation is detected on something that affects an anchor @observable _hide = false; // don't render if anchor is not visible since that breaks xAnchor @@ -43,7 +44,6 @@ export class LinkBox extends ViewBoxBaseComponent() { const anchor = anch?.layout_unrendered ? DocCast(anch.annotationOn) : anch; return DocumentView.getDocumentView(anchor, this.DocumentView?.().containerViewPath?.().lastElement()); }; - _hackToSeeIfDeleted: any; componentWillUnmount() { this._hackToSeeIfDeleted && clearTimeout(this._hackToSeeIfDeleted); Object.keys(this._disposers).forEach(key => this._disposers[key]()); @@ -68,7 +68,7 @@ export class LinkBox extends ViewBoxBaseComponent() { let a1 = a && document.getElementById(a.ViewGuid); let a2 = b && document.getElementById(b.ViewGuid); // test whether the anchors themselves are hidden,... - if (!a1 || !a2 || (a?.ContentDiv as any)?.hidden || (b?.ContentDiv as any)?.hidden) this._hide = true; + if (!a1 || !a2 || a?.ContentDiv?.hidden || b?.ContentDiv?.hidden) this._hide = true; else { // .. or whether any of their DOM parents are hidden for (; a1 && !a1.hidden; a1 = a1.parentElement); @@ -151,11 +151,11 @@ export class LinkBox extends ViewBoxBaseComponent() { this._forceAnimate += 0.01; }) ); // this forces an update during a transition animation - const highlight = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Highlighting); + const highlight = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Highlighting) as { highlightStyle: string; highlightColor: string; highlightIndex: number; highlightStroke: boolean }; const highlightColor = highlight?.highlightIndex ? highlight?.highlightColor : undefined; - const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color); - const fontFamily = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FontFamily); - const fontSize = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FontSize); + const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; + const fontFamily = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FontFamily) as string; + const fontSize = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.FontSize) as number; const fontColor = (c => (c !== 'transparent' ? c : undefined))(StrCast(this.layoutDoc.link_fontColor)); // eslint-disable-next-line camelcase const { stroke_markerScale: strokeMarkerScale, stroke_width: strokeRawWidth, stroke_startMarker: strokeStartMarker, stroke_endMarker: strokeEndMarker, stroke_dash: strokeDash } = this.Document; @@ -248,7 +248,7 @@ export class LinkBox extends ViewBoxBaseComponent() { 2 ); return ( -
+
= undefined; @observable _toolTipText = ''; @observable _hrefInd = 0; - constructor(props: any) { + constructor(props: LinkDocPreviewProps) { super(props); makeObservable(this); } @@ -104,7 +104,7 @@ export class LinkDocPreview extends ObservableReactComponent { - !this._linkDocRef.current?.contains(e.target as any) && LinkInfo.Clear(); // close preview when not clicking anywhere other than the info bar of the preview + !this._linkDocRef.current?.contains(e.target as HTMLElement) && LinkInfo.Clear(); // close preview when not clicking anywhere other than the info bar of the preview }; @action @@ -144,7 +144,7 @@ export class LinkDocPreview extends ObservableReactComponent() { return FieldView.LayoutString(LoadingBox, fieldKey); } - _timer: any; + _timer: NodeJS.Timeout | undefined; @observable progress = ''; componentDidMount() { if (!Doc.CurrentlyLoading?.includes(this.Document)) { diff --git a/src/client/views/nodes/MapBox/MapBox.tsx b/src/client/views/nodes/MapBox/MapBox.tsx index d7687e03e..c66f7c726 100644 --- a/src/client/views/nodes/MapBox/MapBox.tsx +++ b/src/client/views/nodes/MapBox/MapBox.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { IconLookup, faCircleXmark, faGear, faPause, faPlay, faRotate } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Checkbox, FormControlLabel, TextField } from '@mui/material'; @@ -481,8 +479,8 @@ export class MapBox extends ViewBoxAnnotatableComponent() { console.log('deleting'); if (this._selectedPinOrRoute) { // Removes filter - Doc.setDocFilter(this.Document, 'latitude', this._selectedPinOrRoute.latitude, 'remove'); - Doc.setDocFilter(this.Document, 'longitude', this._selectedPinOrRoute.longitude, 'remove'); + Doc.setDocFilter(this.Document, 'latitude', NumCast(this._selectedPinOrRoute.latitude), 'remove'); + Doc.setDocFilter(this.Document, 'longitude', NumCast(this._selectedPinOrRoute.longitude), 'remove'); Doc.setDocFilter(this.Document, LinkedTo, `mapPin=${Field.toScriptString(DocCast(this._selectedPinOrRoute))}`, 'remove'); this.removePushpinOrRoute(this._selectedPinOrRoute); @@ -1152,7 +1150,7 @@ export class MapBox extends ViewBoxAnnotatableComponent() { _textRef = React.createRef(); render() { const scale = this._props.NativeDimScaling?.() || 1; - const parscale = scale === 1 ? 1 : this.ScreenToLocalBoxXf().Scale ?? 1; + const parscale = scale === 1 ? 1 : (this.ScreenToLocalBoxXf().Scale ?? 1); return (
diff --git a/src/client/views/nodes/PDFBox.tsx b/src/client/views/nodes/PDFBox.tsx index 8db68ddfe..c03694dd9 100644 --- a/src/client/views/nodes/PDFBox.tsx +++ b/src/client/views/nodes/PDFBox.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/control-has-associated-label */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, computed, IReactionDisposer, makeObservable, observable, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; @@ -76,7 +74,7 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { }); else if (PDFBox.pdfpromise.get(this.pdfUrl.url.href)) PDFBox.pdfpromise.get(this.pdfUrl.url.href)?.then( - action((pdf: any) => { + action(pdf => { this._pdf = pdf; }) ); @@ -108,7 +106,8 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { }; crop = (region: Doc | undefined, addCrop?: boolean) => { - if (!region) return undefined; + const docViewContent = this.DocumentView?.().ContentDiv; + if (!region || !docViewContent) return undefined; const cropping = Doc.MakeCopy(region, true); cropping.layout_unrendered = false; // text selection have this cropping.text_inlineAnnotations = undefined; // text selections have this -- it causes them not to be rendered. @@ -120,7 +119,6 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { regionData.followLinkToggle = true; this.addDocument(region); - const docViewContent = this.DocumentView?.().ContentDiv!; const newDiv = docViewContent.cloneNode(true) as HTMLDivElement; newDiv.style.width = NumCast(this.layoutDoc._width).toString(); newDiv.style.height = NumCast(this.layoutDoc._height).toString(); @@ -162,7 +160,7 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { (NumCast(region.x) * this._props.PanelWidth()) / NumCast(this.dataDoc[this.fieldKey + '_nativeWidth']), 4 ) - .then((dataUrl: any) => { + .then(dataUrl => { ClientUtils.convertDataUri(dataUrl, region[Id]).then(returnedfilename => setTimeout( action(() => { @@ -172,7 +170,7 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { ) ); }) - .catch((error: any) => { + .catch(error => { console.error('oops, something went wrong!', error); }); @@ -181,9 +179,10 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { updateIcon = () => { // currently we render pdf icons as text labels - const docViewContent = this.DocumentView?.().ContentDiv!; + const docViewContent = this.DocumentView?.().ContentDiv; const filename = this.layoutDoc[Id] + '-icon' + new Date().getTime(); this._pdfViewer?._mainCont.current && + docViewContent && UpdateIcon( filename, docViewContent, @@ -475,6 +474,7 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { const cm = ContextMenu.Instance; const options = cm.findByDescription('Options...'); const optionItems: ContextMenuProps[] = options && 'subitems' in options ? options.subitems : []; + !Doc.noviceMode && optionItems.push({ description: 'Toggle Sidebar Type', event: this.toggleSidebarType, icon: 'expand-arrows-alt' }); !Doc.noviceMode && optionItems.push({ description: 'update icon', event: () => this.pdfUrl && this.updateIcon(), icon: 'expand-arrows-alt' }); // optionItems.push({ description: "Toggle Sidebar ", event: () => this.toggleSidebar(), icon: "expand-arrows-alt" }); @@ -656,7 +656,7 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { else { if (!PDFBox.pdfpromise.get(href)) PDFBox.pdfpromise.set(href, Pdfjs.getDocument(href).promise); PDFBox.pdfpromise.get(href)?.then( - action((pdf: any) => { + action(pdf => { PDFBox.pdfcache.set(href, (this._pdf = pdf)); }) ); diff --git a/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx b/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx index f88eb3bca..31a1a398b 100644 --- a/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx +++ b/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx @@ -1,8 +1,5 @@ /* eslint-disable camelcase */ -/* eslint-disable jsx-a11y/control-has-associated-label */ /* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable react/no-array-index-key */ /* eslint-disable react/jsx-props-no-spreading */ /* eslint-disable no-return-assign */ @@ -1009,7 +1006,7 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent (this.dataDoc.hintDialogueOpen = false)}> Hints - {this.selectedQuestion.hints?.map((hint: any, index: number) => ( + {this.selectedQuestion.hints?.map((hint: { description: string; content: string }, index: number) => (
@@ -1985,7 +1982,13 @@ export class PhysicsSimulationBox extends ViewBoxAnnotatableComponent() { this.dataDoc[this._props.fieldKey] = new VideoField(this.result.accessPaths.client); // stringify the presentation and store it if (presentation?.movements) { - const presCopy = { ...presentation }; - presCopy.movements = presentation.movements.map(movement => ({ ...movement, doc: movement.doc[Id] })) as any; + const presCopy = { ...presentation, movements: presentation.movements.map(movement => ({ ...movement, doc: (movement.doc as Doc)[Id] })) }; this.dataDoc[this.fieldKey + '_presentation'] = JSON.stringify(presCopy); } }; @@ -210,7 +209,7 @@ ScriptingGlobals.add(function getCurrentRecording() { }); // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function getWorkspaceRecordings() { - return new List(['Record Workspace', `Record Webcam`, ...DocListCast(Doc.UserDoc().workspaceRecordings)]); + return new List(['Record Workspace', `Record Webcam`, ...DocListCast(Doc.UserDoc().workspaceRecordings)]); }); // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function isWorkspaceRecording() { diff --git a/src/client/views/nodes/ScreenshotBox.tsx b/src/client/views/nodes/ScreenshotBox.tsx index 9ef1071f7..6289470b6 100644 --- a/src/client/views/nodes/ScreenshotBox.tsx +++ b/src/client/views/nodes/ScreenshotBox.tsx @@ -20,7 +20,7 @@ import { DocumentType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; import { CaptureManager } from '../../util/CaptureManager'; import { SettingsManager } from '../../util/SettingsManager'; -import { TrackMovements } from '../../util/TrackMovements'; +import { Movement, TrackMovements } from '../../util/TrackMovements'; import { ContextMenu } from '../ContextMenu'; import { ViewBoxAnnotatableComponent } from '../DocComponent'; import { DocViewUtils } from '../DocViewUtils'; @@ -31,10 +31,11 @@ import { FieldView, FieldViewProps } from './FieldView'; import './ScreenshotBox.scss'; import { VideoBox } from './VideoBox'; import { FormattedTextBox } from './formattedText/FormattedTextBox'; +import { IconProp } from '@fortawesome/fontawesome-svg-core'; -declare class MediaRecorder { - constructor(e: any, options?: any); // whatever MediaRecorder has -} +// declare class MediaRecorder { +// constructor(e: any, options?: any); // whatever MediaRecorder has +// } // interface VideoTileProps { // raised: { coord: Vector2, off: Vector3 }[]; @@ -117,8 +118,8 @@ export class ScreenshotBox extends ViewBoxAnnotatableComponent() public static LayoutString(fieldKey: string) { return FieldView.LayoutString(ScreenshotBox, fieldKey); } - private _audioRec: any; - private _videoRec: any; + private _audioRec: MediaRecorder | undefined; + private _videoRec: MediaRecorder | undefined; @observable private _videoRef: HTMLVideoElement | null = null; @observable _screenCapture = false; @computed get recordingStart() { @@ -136,7 +137,7 @@ export class ScreenshotBox extends ViewBoxAnnotatableComponent() }; videoLoad = () => { - const aspect = this._videoRef!.videoWidth / this._videoRef!.videoHeight; + const aspect = (this._videoRef?.videoWidth || 0) / (this._videoRef?.videoHeight || 1); const nativeWidth = Doc.NativeWidth(this.layoutDoc); const nativeHeight = Doc.NativeHeight(this.layoutDoc); if (!nativeWidth || !nativeHeight) { @@ -166,7 +167,7 @@ export class ScreenshotBox extends ViewBoxAnnotatableComponent() } specificContextMenu = (): void => { - const subitems = [{ description: 'Screen Capture', event: this.toggleRecording, icon: 'expand-arrows-alt' as any }]; + const subitems = [{ description: 'Screen Capture', event: this.toggleRecording, icon: 'expand-arrows-alt' as IconProp }]; ContextMenu.Instance.addItem({ description: 'Options...', subitems, icon: 'video' }); }; @@ -221,29 +222,29 @@ export class ScreenshotBox extends ViewBoxAnnotatableComponent() Pause = () => this._screenCapture && this.toggleRecording(); toggleRecording = async () => { - if (!this._screenCapture) { + if (!this._screenCapture && this._videoRef) { this._audioRec = new MediaRecorder(await navigator.mediaDevices.getUserMedia({ audio: true })); - const audChunks: any = []; - this._audioRec.ondataavailable = (e: any) => audChunks.push(e.data); + const audChunks: Blob[] = []; + this._audioRec.ondataavailable = e => audChunks.push(e.data); this._audioRec.onstop = async () => { - const [{ result }] = await Networking.UploadFilesToServer(audChunks.map((file: any) => ({ file }))); + const [{ result }] = await Networking.UploadFilesToServer(audChunks.map(file => ({ file }))); if (!(result instanceof Error)) { this.dataDoc[this._props.fieldKey + '_audio'] = new AudioField(result.accessPaths.agnostic.client); } }; - this._videoRef!.srcObject = await (navigator.mediaDevices as any).getDisplayMedia({ video: true }); - this._videoRec = new MediaRecorder(this._videoRef!.srcObject); - const vidChunks: any = []; + this._videoRef.srcObject = await navigator.mediaDevices.getDisplayMedia({ video: true }); + this._videoRec = new MediaRecorder(this._videoRef.srcObject); + const vidChunks: Blob[] = []; this._videoRec.onstart = () => { if (this.dataDoc[this._props.fieldKey + '_trackScreen']) TrackMovements.Instance.start(); this.dataDoc[this._props.fieldKey + '_recordingStart'] = new DateField(new Date()); }; - this._videoRec.ondataavailable = (e: any) => vidChunks.push(e.data); + this._videoRec.ondataavailable = e => vidChunks.push(e.data); this._videoRec.onstop = async () => { const presentation = TrackMovements.Instance.yieldPresentation(); if (presentation?.movements) { const presCopy = { ...presentation }; - presCopy.movements = presentation.movements.map(movement => ({ ...movement, doc: movement.doc[Id] })) as any; + presCopy.movements = presentation.movements.map(movement => ({ ...movement, doc: (movement.doc as Doc)[Id] }) as Movement); this.dataDoc[this.fieldKey + '_presentation'] = JSON.stringify(presCopy); } TrackMovements.Instance.finish(); diff --git a/src/client/views/nodes/ScriptingBox.tsx b/src/client/views/nodes/ScriptingBox.tsx index bc19d7ad1..8da422039 100644 --- a/src/client/views/nodes/ScriptingBox.tsx +++ b/src/client/views/nodes/ScriptingBox.tsx @@ -1,8 +1,8 @@ /* eslint-disable react/button-has-type */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ import { action, computed, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; +import ResizeObserver from 'resize-observer-polyfill'; import { returnAlways, returnEmptyString } from '../../../ClientUtils'; import { Doc } from '../../../fields/Doc'; import { List } from '../../../fields/List'; @@ -10,21 +10,26 @@ import { listSpec } from '../../../fields/Schema'; import { ScriptField } from '../../../fields/ScriptField'; import { BoolCast, Cast, DocCast, NumCast, ScriptCast, StrCast } from '../../../fields/Types'; import { TraceMobx } from '../../../fields/util'; +import { DocumentType } from '../../documents/DocumentTypes'; +import { Docs } from '../../documents/Documents'; import { DragManager } from '../../util/DragManager'; import { ScriptManager } from '../../util/ScriptManager'; -import { CompileScript, ScriptParam } from '../../util/Scripting'; +import { CompileError, CompileScript, ScriptParam } from '../../util/Scripting'; import { ScriptingGlobals } from '../../util/ScriptingGlobals'; import { ContextMenu } from '../ContextMenu'; import { ViewBoxAnnotatableComponent } from '../DocComponent'; import { EditableView } from '../EditableView'; import { OverlayView } from '../OverlayView'; -import { FieldView, FieldViewProps } from './FieldView'; import { DocumentIconContainer } from './DocumentIcon'; +import { FieldView, FieldViewProps } from './FieldView'; import './ScriptingBox.scss'; -import { Docs } from '../../documents/Documents'; -import { DocumentType } from '../../documents/DocumentTypes'; +import * as ts from 'typescript'; +import { FieldType } from '../../../fields/ObjectField'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const getCaretCoordinates = require('textarea-caret'); -const _global = (window /* browser */ || global) /* node */ as any; +// eslint-disable-next-line @typescript-eslint/no-var-requires const ReactTextareaAutocomplete = require('@webscopeio/react-textarea-autocomplete').default; @observer @@ -41,9 +46,9 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() @observable private _function: boolean = false; @observable private _spaced: boolean = false; - @observable private _scriptKeys: any = ScriptingGlobals.getGlobals(); - @observable private _scriptingDescriptions: any = ScriptingGlobals.getDescriptions(); - @observable private _scriptingParams: any = ScriptingGlobals.getParameters(); + @observable private _scriptKeys = ScriptingGlobals.getGlobals(); + @observable private _scriptingDescriptions = ScriptingGlobals.getDescriptions(); + @observable private _scriptingParams = ScriptingGlobals.getParameters(); @observable private _currWord: string = ''; @observable private _suggestions: string[] = []; @@ -52,20 +57,20 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() @observable private _suggestionBoxY: number = 0; @observable private _lastChar: string = ''; - @observable private _suggestionRef: any = React.createRef(); - @observable private _scriptTextRef: any = React.createRef(); + @observable private _suggestionRef = React.createRef(); + @observable private _scriptTextRef = React.createRef(); - @observable private _selection: any = 0; + @observable private _selection = 0; @observable private _paramSuggestion: boolean = false; - @observable private _scriptSuggestedParams: any = ''; - @observable private _scriptParamsText: any = ''; + @observable private _scriptSuggestedParams: JSX.Element | string = ''; + @observable private _scriptParamsText = ''; constructor(props: FieldViewProps) { super(props); makeObservable(this); if (!this.compileParams.length) { - const params = ScriptCast(this.dataDoc[this._props.fieldKey])?.script.options.params as { [key: string]: any }; + const params = ScriptCast(this.dataDoc[this._props.fieldKey])?.script.options.params as { [key: string]: string }; if (params) { this.compileParams = Array.from(Object.keys(params)) .filter(p => !p.startsWith('_')) @@ -106,26 +111,16 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() this.dataDoc[this.fieldKey + '-params'] = new List(value); } - getValue(result: any, descrip: boolean) { - if (typeof result === 'object') { - const text = descrip ? result[1] : result[2]; - return text !== undefined ? text : ''; - } - return ''; - } - onClickScriptDisable = returnAlways; @action componentDidMount() { this._props.setContentViewBox?.(this); this.rawText = this.rawScript; - const resizeObserver = new _global.ResizeObserver( + const resizeObserver = new ResizeObserver( action(() => { const area = document.querySelector('textarea'); if (area) { - // eslint-disable-next-line global-require - const getCaretCoordinates = require('textarea-caret'); const caret = getCaretCoordinates(area, this._selection); this.resetSuggestionPos(caret); } @@ -135,12 +130,12 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() } @action - resetSuggestionPos(caret: any) { + resetSuggestionPos(caret: { top: number; left: number; height: number }) { if (!this._suggestionRef.current || !this._scriptTextRef.current) return; const suggestionWidth = this._suggestionRef.current.offsetWidth; const scriptWidth = this._scriptTextRef.current.offsetWidth; const { top } = caret; - const { x } = this.dataDoc; + const x = NumCast(this.layoutDoc.x); let { left } = caret; if (left + suggestionWidth > x + scriptWidth) { const diff = left + suggestionWidth - (x + scriptWidth); @@ -171,8 +166,8 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() // displays error message @action - onError = (error: any) => { - this._errorMessage = error?.message ? error.message : error?.map((entry: any) => entry.messageText).join(' ') || ''; + onError = (errors: ts.Diagnostic[] | string) => { + this._errorMessage = typeof errors === 'string' ? errors : errors.map(entry => entry.toString()).join(' ') || ''; }; // checks if the script compiles using CompileScript method and inputting params @@ -184,7 +179,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() }); const result = !this.rawText.trim() - ? ({ compiled: false, errors: undefined } as any) + ? ({ compiled: false, errors: [] } as CompileError) : CompileScript(this.rawText, { editable: true, transformer: DocumentIconContainer.getTransformer(), @@ -192,7 +187,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() typecheck: false, }); this.dataDoc[this.fieldKey] = result.compiled ? new ScriptField(result, undefined, this.rawText) : undefined; - this.onError(result.compiled ? undefined : result.errors); + this.onError(result.compiled ? [] : result.errors); return result.compiled; }; @@ -200,7 +195,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() @action onRun = () => { if (this.onCompile()) { - const bindings: { [name: string]: any } = {}; + const bindings: { [name: string]: unknown } = {}; this.paramsNames.forEach(key => { bindings[key] = this.dataDoc[key]; }); @@ -294,8 +289,8 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() // sets field of the param name to the selected value in drop down box @action - viewChanged = (e: React.ChangeEvent, name: string) => { - const val = (e.target as any).selectedOptions[0].value; + viewChanged = (e: React.ChangeEvent, name: string) => { + const val = e.target.selectedOptions[0].value; this.dataDoc[name] = val[0] === 'S' ? val.substring(1) : val[0] === 'N' ? parseInt(val.substring(1)) : val.substring(1) === 'true'; }; @@ -309,7 +304,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() // adds option to create a copy to the context menu specificContextMenu = (): void => { const existingOptions = ContextMenu.Instance.findByDescription('Options...'); - const options = existingOptions && 'subitems' in existingOptions ? existingOptions.subitems : []; + const options = existingOptions?.subitems ?? []; options.push({ description: 'Create a Copy', event: this.onCopy, icon: 'copy' }); !existingOptions && ContextMenu.Instance.addItem({ description: 'Options...', subitems: options, icon: 'hand-point-right' }); }; @@ -381,7 +376,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() const results = script.compiled && script.run(); if (results && results.success) { this._errorMessage = ''; - this.dataDoc[parameter] = results.result; + this.dataDoc[parameter] = results.result as FieldType; return true; } this._errorMessage = 'invalid document'; @@ -524,18 +519,17 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() @action suggestionPos = () => { - // eslint-disable-next-line global-require - const getCaretCoordinates = require('textarea-caret'); + // eslint-disable-next-line @typescript-eslint/no-this-alias const This = this; document.querySelector('textarea')?.addEventListener('input', function () { - const caret = getCaretCoordinates(this, this.selectionEnd); - This._selection = this; + const caret = getCaretCoordinates(this, this.selectionEnd) as { top: number; left: number; height: number }; + // This._selection = this; This.resetSuggestionPos(caret); }); }; @action - keyHandler(e: any, pos: number) { + keyHandler(e: React.KeyboardEvent, pos: number) { e.stopPropagation(); if (this._lastChar === 'Enter') { this.rawText += ' '; @@ -602,7 +596,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() } @action - handlePosChange(number: any) { + handlePosChange(number: number) { this._caretPos = number; if (this._caretPos === 0) { this.rawText = ' ' + this.rawText; @@ -625,7 +619,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() placeholder="write your script here" onFocus={this.onFocus} onBlur={() => this._overlayDisposer?.()} - onChange={action((e: any) => { + onChange={action((e: React.ChangeEvent) => { this.rawText = e.target.value; })} value={this.rawText} @@ -633,24 +627,24 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent() loadingComponent={() => Loading} trigger={{ ' ': { - dataProvider: (token: any) => this.handleToken(token), - component: (blob: any) => this.renderFuncListElement(blob.entity), - output: (item: any, trigger: any) => { + dataProvider: this.handleToken, + component: (blob: { entity: string }) => this.renderFuncListElement(blob.entity), + output: (item: string, trigger: string) => { this._spaced = true; return trigger + item.trim(); }, }, '.': { - dataProvider: (token: any) => this.handleToken(token), - component: (blob: any) => this.renderFuncListElement(blob.entity), - output: (item: any, trigger: any) => { + dataProvider: this.handleToken, + component: (blob: { entity: string }) => this.renderFuncListElement(blob.entity), + output: (item: string, trigger: string) => { this._spaced = true; return trigger + item.trim(); }, }, }} onKeyDown={(e: React.KeyboardEvent) => this.keyHandler(e, this._caretPos)} - onCaretPositionChange={(number: any) => this.handlePosChange(number)} + onCaretPositionChange={this.handlePosChange} />
); diff --git a/src/client/views/nodes/VideoBox.tsx b/src/client/views/nodes/VideoBox.tsx index 1f285b300..4933869a7 100644 --- a/src/client/views/nodes/VideoBox.tsx +++ b/src/client/views/nodes/VideoBox.tsx @@ -125,8 +125,8 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { } override PlayerTime = () => this.player?.currentTime; - override Pause = (update: boolean = true) => { - this.pause(update); + override Pause = () => { + this.pause(true); !this._keepCurrentlyPlaying && this.removeCurrentlyPlaying(); }; @@ -157,7 +157,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { }; // plays video - @action public Play = (update: boolean = true) => { + @action public Play = () => { if (this._playRegionTimer) return; this._playing = true; @@ -172,8 +172,8 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { } try { this._audioPlayer && this.player && (this._audioPlayer.currentTime = this.player?.currentTime); - update && this.player && this.playFrom(start, undefined, true); - update && this._audioPlayer?.play(); + this.player && this.playFrom(start, undefined, true); + this._audioPlayer?.play(); } catch (e) { console.log('Video Play Exception:', e); } @@ -384,7 +384,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { getVideoThumbnails = () => { if (this.dataDoc[this.fieldKey + '_thumbnails'] !== undefined) return; this.dataDoc[this.fieldKey + '_thumbnails'] = new List(); - const thumbnailPromises: Promise[] = []; + const thumbnailPromises: Promise[] = []; const video = document.createElement('video'); video.onloadedmetadata = () => { @@ -467,7 +467,7 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { runInAction(() => { this._screenCapture = !this._screenCapture; }); - this._videoRef!.srcObject = !this._screenCapture ? null : await (navigator.mediaDevices).getDisplayMedia({ video: true }); + this._videoRef!.srcObject = !this._screenCapture ? null : await navigator.mediaDevices.getDisplayMedia({ video: true }); }, icon: 'expand-arrows-alt', }); @@ -557,9 +557,9 @@ export class VideoBox extends ViewBoxAnnotatableComponent() { style={this._fullScreen ? this.fullScreenSize() : this.isCropped ? { width: 'max-content', height: 'max-content', transform: `scale(${1 / NumCast(this.layoutDoc._freeform_scale)})`, transformOrigin: 'top left' } : {}} onCanPlay={this.videoLoad} controls={false} - onPlay={() => this.Play()} + onPlay={this.Play} onSeeked={this.updateTimecode} - onPause={() => this.Pause()} + onPause={this.Pause} onClick={this._fullScreen ? () => (this.playing() ? this.Pause() : this.Play()) : e => e.preventDefault()}> Not supported. diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx index be7e0f483..1fd73c226 100644 --- a/src/client/views/nodes/WebBox.tsx +++ b/src/client/views/nodes/WebBox.tsx @@ -1,4 +1,5 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Property } from 'csstype'; import { htmlToText } from 'html-to-text'; import { action, computed, IReactionDisposer, makeObservable, observable, ObservableMap, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; @@ -21,7 +22,7 @@ import { DocumentType } from '../../documents/DocumentTypes'; import { DocUtils } from '../../documents/DocUtils'; import { ScriptingGlobals } from '../../util/ScriptingGlobals'; import { SnappingManager } from '../../util/SnappingManager'; -import { undoBatch, UndoManager } from '../../util/UndoManager'; +import { undoable, UndoManager } from '../../util/UndoManager'; import { MarqueeOptionsMenu } from '../collections/collectionFreeForm'; import { CollectionFreeFormView } from '../collections/collectionFreeForm/CollectionFreeFormView'; import { ContextMenu } from '../ContextMenu'; @@ -83,7 +84,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { this._marqueeing = val; } @observable private _iframe: HTMLIFrameElement | null = null; - @observable private _savedAnnotations = new ObservableMap(); + @observable private _savedAnnotations = new ObservableMap(); @observable private _scrollHeight = NumCast(this.layoutDoc.scrollHeight); @computed get _url() { return this.webField?.toString() || ''; @@ -121,11 +122,12 @@ export class WebBox extends ViewBoxAnnotatableComponent() { }); } try { + const contentWindow = this._iframe?.contentWindow; if (clear) { - this._iframe?.contentWindow?.getSelection()?.empty(); + contentWindow?.getSelection()?.empty(); } - if (searchString) { - (this._iframe?.contentWindow as any)?.find(searchString, false, bwd, true); + if (searchString && contentWindow && 'find' in contentWindow) { + (contentWindow.find as (str: string, caseSens?: boolean, backward?: boolean, wrapAround?: boolean) => void)(searchString, false, bwd, true); } } catch (e) { console.log('WebBox search error', e); @@ -142,7 +144,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { } }; - updateThumb = async () => { + updateIcon = async () => { if (!this._iframe) return; const scrollTop = NumCast(this.layoutDoc._layout_scrollTop); const nativeWidth = NumCast(this.layoutDoc.nativeWidth); @@ -154,7 +156,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { this.layoutDoc.thumb = undefined; this.Document.thumbLockout = true; // lock to prevent multiple thumb updates. CreateImage(this._webUrl.endsWith('/') ? this._webUrl.substring(0, this._webUrl.length - 1) : this._webUrl, this._iframe.contentDocument?.styleSheets ?? [], htmlString, nativeWidth, nativeHeight, scrollTop) - .then((dataUrl: any) => { + .then((dataUrl: string) => { if (dataUrl.includes('() { ) ); }) - .catch((error: any) => { + .catch((error: object) => { console.error('oops, something went wrong!', error); }); }; @@ -359,8 +361,8 @@ export class WebBox extends ViewBoxAnnotatableComponent() { return anchor; }; - _textAnnotationCreator: (() => ObservableMap) | undefined; - savedAnnotationsCreator: () => ObservableMap = () => this._textAnnotationCreator?.() || this._savedAnnotations; + _textAnnotationCreator: (() => ObservableMap) | undefined; + savedAnnotationsCreator: () => ObservableMap = () => this._textAnnotationCreator?.() || this._savedAnnotations; @action iframeMove = (e: PointerEvent) => { @@ -424,11 +426,11 @@ export class WebBox extends ViewBoxAnnotatableComponent() { sel.empty(); // Chrome else if (sel?.removeAllRanges) sel.removeAllRanges(); // Firefox // bcz: NEED TO unrotate e.clientX and e.clientY - const word = getWordAtPoint(e.target, e.clientX, e.clientY); + const target = e.target as HTMLElement; + const word = target && getWordAtPoint(target, e.clientX, e.clientY); this._setPreviewCursor?.(e.clientX, e.clientY, false, true, this.Document); MarqueeAnnotator.clearAnnotations(this._savedAnnotations); - const target = e.target as HTMLElement; if (!word && !target?.className?.includes('rangeslider') && !target?.onclick && !target?.parentElement?.onclick) { if (e.button !== 2) this.marqueeing = [e.clientX, e.clientY]; e.preventDefault(); @@ -468,8 +470,8 @@ export class WebBox extends ViewBoxAnnotatableComponent() { .inverse() .transformPoint(e.clientX, e.clientY - NumCast(this.layoutDoc.layout_scrollTop)); MarqueeAnnotator.clearAnnotations(this._savedAnnotations); - const word = getWordAtPoint(e.target, e.clientX, e.clientY); const target = e.target as HTMLElement; + const word = target && getWordAtPoint(target, e.clientX, e.clientY); if (!word && !target?.className?.includes('rangeslider') && !target?.onclick && !target?.parentElement?.onclick) { this.marqueeing = theclick; this._marqueeref.current?.onInitiateSelection(this.marqueeing); @@ -488,7 +490,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { } return undefined; } - addWebStyleSheetRule(sheet: CSSStyleSheet | null | undefined, selector: string, css: {[key:string]: string}, selectorPrefix = '.') { + addWebStyleSheetRule(sheet: CSSStyleSheet | null | undefined, selector: string, css: { [key: string]: string }, selectorPrefix = '.') { const propText = typeof css === 'string' ? css @@ -498,7 +500,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { return sheet?.insertRule(selectorPrefix + selector + '{' + propText + '}', sheet.cssRules.length); } - _iframetimeout: NodeJS.Timeout|undefined = undefined; + _iframetimeout: NodeJS.Timeout | undefined = undefined; @observable _warning = 0; @action iframeLoaded = () => { @@ -520,7 +522,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { if (requrlraw !== this._url.toString()) { if (requrlraw.match(/q=.*&/)?.length && this._url.toString().match(/q=.*&/)?.length) { const matches = requrlraw.match(/[^a-zA-z]q=[^&]*/g); - const newsearch = matches?.lastElement() || ""; + const newsearch = matches?.lastElement() || ''; if (matches) { requrlraw = requrlraw.substring(0, requrlraw.indexOf(newsearch)); for (let i = 1; i < Array.from(matches)?.length; i++) { @@ -567,12 +569,12 @@ export class WebBox extends ViewBoxAnnotatableComponent() { ); iframeContent.addEventListener( 'click', - undoBatch( + undoable( action((e: MouseEvent) => { let eleHref = ''; for (let ele = e.target as HTMLElement | Element | null; ele; ele = ele.parentElement) { if (ele instanceof HTMLAnchorElement) { - eleHref = (typeof ele.href === 'string' ? ele.href : eleHref) || (ele.parentElement && ("href" in ele.parentElement) ? ele.parentElement.href as string: eleHref); + eleHref = (typeof ele.href === 'string' ? ele.href : eleHref) || (ele.parentElement && 'href' in ele.parentElement ? (ele.parentElement.href as string) : eleHref); } } const origin = this.webField?.origin; @@ -588,7 +590,8 @@ export class WebBox extends ViewBoxAnnotatableComponent() { this._outerRef.current.scrollLeft = 0; } } - }) + }), + 'follow web link' ) ); iframe.contentDocument.addEventListener('wheel', this.iframeWheel, { passive: false }); @@ -792,7 +795,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { }, icon: 'snowflake', }); - funcs.push({ description: 'Create Thumbnail', event: () => this.updateThumb(), icon: 'portrait' }); + !Doc.noviceMode && funcs.push({ description: 'Update Icon', event: () => this.updateIcon(), icon: 'portrait' }); cm.addItem({ description: 'Options...', subitems: funcs, icon: 'asterisk' }); } }; @@ -1085,7 +1088,7 @@ export class WebBox extends ViewBoxAnnotatableComponent() { @computed get webpage() { TraceMobx(); const previewScale = this._previewNativeWidth ? 1 - this.sidebarWidth() / this._previewNativeWidth : 1; - const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as "none" | "all" | "visiblePainted" | undefined) + const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as Property.PointerEvents | undefined); const scale = previewScale * (this._props.NativeDimScaling?.() || 1); return (
() { render() { TraceMobx(); const previewScale = this._previewNativeWidth ? 1 - this.sidebarWidth() / this._previewNativeWidth : 1; - const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as 'none' | 'all' | 'visiblePainted' | undefined); + const pointerEvents = this.layoutDoc._lockedPosition ? 'none' : (this._props.pointerEvents?.() as Property.PointerEvents); const scale = previewScale * (this._props.NativeDimScaling?.() || 1); return (
new Promise(resolve => { - const img = new Image(); - img.onload = function () { - console.log(`IMAGE SVG created: ${webUrl}`); - resolve(img); - }; console.log(`BUILDING SVG for: ${webUrl}`); buildSvgDataUri(webUrl, html, width, height, scroll, xoff).then(uri => { + const img = new Image(); img.src = uri; - return img; + img.onload = () => { + console.log(`IMAGE SVG created: ${webUrl}`); + resolve(img); + }; }); }); @@ -272,7 +269,7 @@ const ForeignHtmlRenderer = function (styleSheets) { * @return {Promise} */ this.renderToCanvas = (webUrl, html, width, height, scroll, xoff, oversample) => - self.renderToImage(webUrl, html, width, height, scroll, xoff).then(img => { + this.renderToImage(webUrl, html, width, height, scroll, xoff).then(img => { const canvas = document.createElement('canvas'); canvas.width = img.width * oversample; canvas.height = img.height * oversample; @@ -290,8 +287,7 @@ const ForeignHtmlRenderer = function (styleSheets) { * @return {Promise} */ this.renderToBase64Png = (webUrl, html, width, height, scroll, xoff, oversample) => - self - .renderToCanvas(webUrl, html, width, height, scroll, xoff, oversample) // + this.renderToCanvas(webUrl, html, width, height, scroll, xoff, oversample) // .then(canvas => canvas.toDataURL('image/png')); }; diff --git a/src/client/views/nodes/audio/AudioWaveform.tsx b/src/client/views/nodes/audio/AudioWaveform.tsx index 2d1d3d7db..297deb575 100644 --- a/src/client/views/nodes/audio/AudioWaveform.tsx +++ b/src/client/views/nodes/audio/AudioWaveform.tsx @@ -39,7 +39,7 @@ export class AudioWaveform extends ObservableReactComponent public static NUMBER_OF_BUCKETS = 100; // number of buckets data is divided into to draw waveform lines _disposer: IReactionDisposer | undefined; - constructor(props: any) { + constructor(props: AudioWaveformProps) { super(props); makeObservable(this); } diff --git a/src/client/views/nodes/formattedText/DashDocCommentView.tsx b/src/client/views/nodes/formattedText/DashDocCommentView.tsx index 3ec49fa27..0304ddc86 100644 --- a/src/client/views/nodes/formattedText/DashDocCommentView.tsx +++ b/src/client/views/nodes/formattedText/DashDocCommentView.tsx @@ -5,18 +5,20 @@ import { IReactionDisposer, computed, reaction } from 'mobx'; import { Doc } from '../../../../fields/Doc'; import { DocServer } from '../../../DocServer'; import { NumCast } from '../../../../fields/Types'; +import { Node } from 'prosemirror-model'; +import { EditorView } from 'prosemirror-view'; interface IDashDocCommentViewInternal { docId: string; - view: any; - getPos: any; + view: EditorView; + getPos: () => number; setHeight: (height: number) => void; } export class DashDocCommentViewInternal extends React.Component { _reactionDisposer: IReactionDisposer | undefined; - constructor(props: any) { + constructor(props: IDashDocCommentViewInternal) { super(props); this.onPointerLeaveCollapsed = this.onPointerLeaveCollapsed.bind(this); this.onPointerEnterCollapsed = this.onPointerEnterCollapsed.bind(this); @@ -43,19 +45,19 @@ export class DashDocCommentViewInternal extends React.Component { + onPointerLeaveCollapsed = (e: React.PointerEvent) => { this._dashDoc.then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowUnhighlight()); e.preventDefault(); e.stopPropagation(); }; - onPointerEnterCollapsed = (e: any) => { + onPointerEnterCollapsed = (e: React.PointerEvent) => { this._dashDoc.then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowHighlight(dashDoc, false)); e.preventDefault(); e.stopPropagation(); }; - onPointerUpCollapsed = (e: any) => { + onPointerUpCollapsed = (e: React.PointerEvent) => { const target = this.targetNode(); if (target) { @@ -65,7 +67,7 @@ export class DashDocCommentViewInternal extends React.Component { expand && this._dashDoc.then(async dashDoc => dashDoc instanceof Doc && Doc.linkFollowHighlight(dashDoc)); try { - this.props.view.dispatch(this.props.view.state.tr.setSelection(TextSelection.create(this.props.view.state.tr.doc, this.props.getPos() + (expand ? 2 : 1)))); + this.props.view.dispatch(this.props.view.state.tr.setSelection(TextSelection.create(this.props.view.state.tr.doc, (this.props.getPos() ?? 0) + (expand ? 2 : 1)))); } catch (err) { /* empty */ } @@ -74,7 +76,7 @@ export class DashDocCommentViewInternal extends React.Component { + onPointerDownCollapsed = (e: React.PointerEvent) => { e.stopPropagation(); }; @@ -84,7 +86,7 @@ export class DashDocCommentViewInternal extends React.Component number | undefined) { this.node = node; this.dom = document.createElement('div'); this.dom.style.width = node.attrs.width; @@ -130,22 +132,22 @@ export class DashDocCommentView { this.dom.style.fontWeight = 'bold'; this.dom.style.position = 'relative'; this.dom.style.display = 'inline-block'; - this.dom.onkeypress = function (e: any) { + this.dom.onkeypress = function (e) { e.stopPropagation(); }; - this.dom.onkeydown = function (e: any) { + this.dom.onkeydown = function (e) { e.stopPropagation(); }; - this.dom.onkeyup = function (e: any) { + this.dom.onkeyup = function (e) { e.stopPropagation(); }; - this.dom.onmousedown = function (e: any) { + this.dom.onmousedown = function (e) { e.stopPropagation(); }; + const getPosition = () => getPos() ?? 0; this.root = ReactDOM.createRoot(this.dom); - this.root.render(); - (this as any).dom = this.dom; + this.root.render(); } setHeight = (hgt: number) => { diff --git a/src/client/views/nodes/formattedText/DashDocView.tsx b/src/client/views/nodes/formattedText/DashDocView.tsx index 93371685d..e7f2cdba8 100644 --- a/src/client/views/nodes/formattedText/DashDocView.tsx +++ b/src/client/views/nodes/formattedText/DashDocView.tsx @@ -1,4 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ import { action, computed, IReactionDisposer, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import { NodeSelection } from 'prosemirror-state'; @@ -16,6 +15,8 @@ import { ObservableReactComponent } from '../../ObservableReactComponent'; import { DocumentView } from '../DocumentView'; import { FocusViewOptions } from '../FocusViewOptions'; import { FormattedTextBox } from './FormattedTextBox'; +import { EditorView } from 'prosemirror-view'; +import { Node } from 'prosemirror-model'; const horizPadding = 3; // horizontal padding to container to allow cursor to show up on either side. interface IDashDocViewInternal { @@ -26,9 +27,9 @@ interface IDashDocViewInternal { height: string; hidden: boolean; fieldKey: string; - view: any; - node: any; - getPos: any; + view: EditorView; + node: Node; + getPos: () => number; } @observer @@ -109,7 +110,7 @@ export class DashDocViewInternal extends ObservableReactComponent this._textBox.focus(target, options); // ideally, this would scroll to show the focus target - onKeyDown = (e: any) => { + onKeyDown = (e: React.KeyboardEvent) => { e.stopPropagation(); if (e.key === 'Tab' || e.key === 'Enter') { e.preventDefault(); @@ -176,29 +177,31 @@ export class DashDocViewInternal extends ObservableReactComponent number | undefined, tbox: FormattedTextBox) { this.dom = document.createElement('span'); this.dom.style.position = 'relative'; this.dom.style.textIndent = '0'; this.dom.style.width = (+node.attrs.width.toString().replace('px', '') + horizPadding).toString(); this.dom.style.height = node.attrs.height; this.dom.style.display = node.attrs.hidden ? 'none' : 'inline-block'; - (this.dom.style as any).float = node.attrs.float; - this.dom.onkeypress = function (e: any) { + this.dom.style.float = node.attrs.float; + this.dom.onkeypress = function (e: KeyboardEvent) { e.stopPropagation(); }; - this.dom.onkeydown = function (e: any) { + this.dom.onkeydown = function (e: KeyboardEvent) { e.stopPropagation(); }; - this.dom.onkeyup = function (e: any) { + this.dom.onkeyup = function (e: KeyboardEvent) { e.stopPropagation(); }; - this.dom.onmousedown = function (e: any) { + this.dom.onmousedown = function (e: MouseEvent) { e.stopPropagation(); }; + const getPosition = () => getPos() ?? 0; + this.root = ReactDOM.createRoot(this.dom); this.root.render( ); } diff --git a/src/client/views/nodes/formattedText/DashFieldView.tsx b/src/client/views/nodes/formattedText/DashFieldView.tsx index 9903d0e8a..f0313fba4 100644 --- a/src/client/views/nodes/formattedText/DashFieldView.tsx +++ b/src/client/views/nodes/formattedText/DashFieldView.tsx @@ -1,6 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -/* eslint-disable jsx-a11y/control-has-associated-label */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; import { action, computed, IReactionDisposer, makeObservable, observable, reaction, runInAction } from 'mobx'; @@ -26,6 +23,8 @@ import { ObservableReactComponent } from '../../ObservableReactComponent'; import { OpenWhere } from '../OpenWhere'; import './DashFieldView.scss'; import { FormattedTextBox } from './FormattedTextBox'; +import { Node } from 'prosemirror-model'; +import { EditorView } from 'prosemirror-view'; @observer export class DashFieldViewMenu extends AntimodeMenu { @@ -34,7 +33,7 @@ export class DashFieldViewMenu extends AntimodeMenu { static createFieldView: (e: React.MouseEvent) => void = emptyFunction; static toggleFieldHide: () => void = emptyFunction; static toggleValueHide: () => void = emptyFunction; - constructor(props: any) { + constructor(props: AntimodeMenuProps) { super(props); DashFieldViewMenu.Instance = this; } @@ -100,8 +99,8 @@ interface IDashFieldViewInternal { height: number; editable: boolean; nodeSelected: () => boolean; - node: any; - getPos: any; + node: Node; + getPos: () => number; unclickable: () => boolean; } @@ -274,7 +273,9 @@ export class DashFieldViewInternal extends ObservableReactComponent {this.values.map(val => ( - + ))} )} @@ -284,16 +285,17 @@ export class DashFieldViewInternal extends ObservableReactComponent number | undefined; @observable _nodeSelected = false; NodeSelected = () => this._nodeSelected; - unclickable = () => !this.tbox._props.rootSelected?.() && this.node.marks.some((m: any) => m.type === this.tbox.EditorView?.state.schema.marks.linkAnchor && m.attrs.noPreview); - constructor(node: any, view: any, getPos: any, tbox: FormattedTextBox) { + unclickable = () => !this.tbox._props.rootSelected?.() && this.node.marks.some(m => m.type === this.tbox.EditorView?.state.schema.marks.linkAnchor && m.attrs.noPreview); + constructor(node: Node, view: EditorView, getPos: () => number | undefined, tbox: FormattedTextBox) { makeObservable(this); + const getPosition = () => getPos() ?? 0; this.node = node; this.tbox = tbox; this.getpos = getPos; @@ -312,7 +314,7 @@ export class DashFieldView { const editor = tbox.EditorView; if (editor) { const { state } = editor; - for (let i = this.getpos() + 1; i < state.doc.content.size; i++) { + for (let i = getPosition() + 1; i < state.doc.content.size; i++) { if (state.doc.nodeAt(i)?.type.name === state.schema.nodes.dashField.name) { editor.dispatch(state.tr.setSelection(new NodeSelection(state.doc.resolve(i)))); return; @@ -321,10 +323,10 @@ export class DashFieldView { } } }; - this.dom.onkeyup = function (e: any) { + this.dom.onkeyup = function (e: KeyboardEvent) { e.stopPropagation(); }; - this.dom.onmousedown = function (e: any) { + this.dom.onmousedown = function (e: MouseEvent) { e.stopPropagation(); }; @@ -333,7 +335,7 @@ export class DashFieldView { } */ class EquationEditor extends Component { - element: any; + element: React.RefObject; + // eslint-disable-next-line @typescript-eslint/no-explicit-any mathField: any; ignoreEditEvents: number; // Element needs to be in the class format and thus requires a constructor. The steps that are run // in the constructor is to make sure that React can succesfully communicate with the equation // editor. - constructor(props: any) { + constructor(props: EquationEditorProps) { super(props); - this.element = createRef(); + this.element = createRef(); this.mathField = null; // MathJax apparently fire 2 edit events on startup. @@ -74,6 +72,7 @@ class EquationEditor extends Component { autoOperatorNames, }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any this.mathField = (window as any).MathQuill.MathField(this.element.current, config); this.mathField.latex(value || ''); } diff --git a/src/client/views/nodes/formattedText/EquationView.tsx b/src/client/views/nodes/formattedText/EquationView.tsx index 5167c8f2a..4d0e9efee 100644 --- a/src/client/views/nodes/formattedText/EquationView.tsx +++ b/src/client/views/nodes/formattedText/EquationView.tsx @@ -1,15 +1,16 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ import { IReactionDisposer } from 'mobx'; import { observer } from 'mobx-react'; +import { Node } from 'prosemirror-model'; import { TextSelection } from 'prosemirror-state'; +import { EditorView } from 'prosemirror-view'; import * as React from 'react'; import * as ReactDOM from 'react-dom/client'; import { Doc } from '../../../../fields/Doc'; +import { DocData } from '../../../../fields/DocSymbols'; import { StrCast } from '../../../../fields/Types'; import './DashFieldView.scss'; import EquationEditor from './EquationEditor'; import { FormattedTextBox } from './FormattedTextBox'; -import { DocData } from '../../../../fields/DocSymbols'; interface IEquationViewInternal { fieldKey: string; @@ -27,7 +28,7 @@ export class EquationViewInternal extends React.Component _fieldKey: string; _ref: React.RefObject = React.createRef(); - constructor(props: any) { + constructor(props: IEquationViewInternal) { super(props); this._fieldKey = props.fieldKey; this._textBoxDoc = props.tbox.Document; @@ -63,7 +64,7 @@ export class EquationViewInternal extends React.Component { + onChange={str => { this._textBoxDoc[DocData][this._fieldKey] = str; }} autoCommands="pi theta sqrt sum prod alpha beta gamma rho" @@ -77,25 +78,27 @@ export class EquationViewInternal extends React.Component export class EquationView { dom: HTMLDivElement; // container for label and value - root: any; + root: ReactDOM.Root; tbox: FormattedTextBox; - view: any; - constructor(node: any, view: any, getPos: any, tbox: FormattedTextBox) { + view: EditorView; + _editor: EquationEditor | undefined; + getPos: () => number; + constructor(node: Node, view: EditorView, getPos: () => number, tbox: FormattedTextBox) { this.tbox = tbox; this.view = view; + this.getPos = getPos; this.dom = document.createElement('div'); this.dom.style.width = node.attrs.width; this.dom.style.height = node.attrs.height; this.dom.style.position = 'relative'; this.dom.style.display = 'inline-block'; - this.dom.onmousedown = function (e: any) { + this.dom.onmousedown = (e: MouseEvent) => { e.stopPropagation(); }; this.root = ReactDOM.createRoot(this.dom); this.root.render(); } - _editor: EquationEditor | undefined; setEditor = (editor?: EquationEditor) => { this._editor = editor; }; @@ -106,6 +109,7 @@ export class EquationView { this._editor?.mathField.focus(); } selectNode() { + this.view.dispatch(this.view.state.tr.setSelection(new TextSelection(this.view.state.doc.resolve(this.getPos())))); this.tbox._applyingChange = this.tbox.fieldKey; // setting focus will make prosemirror lose focus, which will cause it to change its selection to a text selection, which causes this view to get rebuilt but it's no longer node selected, so the equationview won't have focus setTimeout(() => { this._editor?.mathField.focus(); diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index 39e237986..c8b25e184 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -96,7 +96,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent(); private _ref: React.RefObject = React.createRef(); private _scrollRef: HTMLDivElement | null = null; - private _editorView: Opt; + private _editorView: Opt; public _applyingChange: string = ''; private _inDrop = false; private _finishingLink = false; @@ -113,7 +113,9 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent new FormattedTextBoxComment() }), - ] }; + return { + schema, + plugins: [ + inputRules(this._rules.inpRules), + this.richTextMenuPlugin(), + history(), + keymap(this._keymap), + keymap(baseKeymap), + new Plugin({ props: { attributes: { class: 'ProseMirror-example-setup-style' } } }), + new Plugin({ view: () => new FormattedTextBoxComment() }), + ], + }; } - public get EditorView() { return this._editorView; } - public get SidebarKey() { return this.fieldKey + '_sidebar'; } + public get EditorView() { + return this._editorView; + } + public get SidebarKey() { + return this.fieldKey + '_sidebar'; + } public makeAIFlashcards: () => void = unimplementedFunction; public addToCollection: ((doc: Doc | Doc[], annotationKey?: string | undefined) => boolean) | undefined; @@ -777,7 +785,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { const cm = ContextMenu.Instance; - let target:Element|HTMLElement|null = e.target as HTMLElement; // hrefs are stored on the database of the node that wraps the hyerlink + let target: Element | HTMLElement | null = e.target as HTMLElement; // hrefs are stored on the database of the node that wraps the hyerlink while (target && (!(target instanceof HTMLElement) || !target.dataset?.targethrefs)) target = target.parentElement; const editor = this._editorView; if (editor && target && !(e.nativeEvent instanceof simMouseEvent ? e.nativeEvent.dash : false)) { @@ -789,10 +797,10 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + const deleteMarkups = undoable(() => { const { selection } = editor.state; editor.dispatch(editor.state.tr.removeMark(selection.from, selection.to, editor.state.schema.marks.linkAnchor)); - }); + }, 'delete markups'); e.persist(); anchorDoc && DocServer.GetRefField(anchorDoc).then( @@ -816,21 +824,21 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + event: undoable(() => { Doc.setNativeView(this.Document); this.layoutDoc.layout_autoHeightMargins = undefined; - }), + }, 'set plain view'), icon: 'eye', }); changeItems.push({ description: 'metadata', - event: undoBatch(() => { + event: undoable(() => { this.dataDoc.layout_meta = Cast(Doc.UserDoc().emptyHeader, Doc, null)?.layout; this.Document.layout_fieldKey = 'layout_meta'; setTimeout(() => { this.layoutDoc._header_height = this.layoutDoc._layout_autoHeightMargins = 50; }, 50); - }), + }, 'set metadata view'), icon: 'eye', }); const noteTypesDoc = Cast(Doc.UserDoc().template_notes, Doc, null); @@ -838,11 +846,14 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { - this.layoutDoc.layout_autoHeightMargins = undefined; - Doc.setNativeView(this.Document); - DocUtils.makeCustomViewClicked(this.Document, Docs.Create.TreeDocument, StrCast(note.title), note); - }), + event: undoable( + () => { + this.layoutDoc.layout_autoHeightMargins = undefined; + Doc.setNativeView(this.Document); + DocUtils.makeCustomViewClicked(this.Document, Docs.Create.TreeDocument, StrCast(note.title), note); + }, + `set ${StrCast(note.title)} view}` + ), icon: icon, }); }); @@ -1229,9 +1240,9 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent= layoutTime ? (protoTime >= dataTime ? protoData : dataData) : layoutTime >= protoTime ? layoutData : protoData; const whichData = recentData ?? (this.layoutDoc.isTemplateDoc ? layoutData : protoData) ?? protoData; return !whichData ? undefined : { data: RTFCast(whichData), str: Field.toString(DocCast(whichData) ?? StrCast(whichData)) }; @@ -1370,11 +1381,13 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + return new Plugin({ + view: action((newView: EditorView) => { this._props.rootSelected?.() && RichTextMenu.Instance && (RichTextMenu.Instance.view = newView); return new RichTextMenuPlugin({ editorProps: this._props }); - })}); - }; + }), + }); + } _didScroll = false; _scrollStopper: undefined | (() => void); // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -1509,7 +1522,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { + DocServer.GetRefField(target.dataset?.audioid || '').then(anchor => { if (anchor instanceof Doc) { // const timecode = NumCast(anchor.timecodeToShow, 0); const audiodoc = anchor.annotationOn as Doc; @@ -1549,8 +1562,8 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent node that wraps the hyerlink - for (let target:HTMLElement|Element|null = clickTarget as HTMLElement; target instanceof HTMLElement && !target.dataset?.targethrefs; target = target.parentElement); + let clickTarget: HTMLElement | Element | null = e.target as HTMLElement; // hrefs are stored on the dataset of the node that wraps the hyerlink + for (let target: HTMLElement | Element | null = clickTarget as HTMLElement; target instanceof HTMLElement && !target.dataset?.targethrefs; target = target.parentElement); while (clickTarget instanceof HTMLElement && !clickTarget.dataset?.targethrefs) clickTarget = clickTarget.parentElement; const dataset = clickTarget instanceof HTMLElement ? clickTarget?.dataset : undefined; FormattedTextBoxComment.update(this, this.EditorView!, undefined, dataset?.targethrefs, dataset?.linkdoc, dataset?.nopreview === 'true'); @@ -1588,7 +1601,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { if (!this._props.isContentActive()) return; const editorView = this._editorView; - const editorRoot = editorView?.root instanceof Document ?editorView.root : undefined; + const editorRoot = editorView?.root instanceof Document ? editorView.root : undefined; if (editorView && (!this._forceUncollapse || editorRoot?.getSelection()?.isCollapsed)) { // this is a hack to allow the cursor to be placed at the end of a document when the document ends in an inline dash comment. Apparently Chrome on Windows has a bug/feature which breaks this when clicking after the end of the text. const pcords = editorView.posAtCoords({ left: e.clientX, top: e.clientY }); @@ -1834,7 +1847,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent d?.author).length; const color = !annotated ? Colors.WHITE : Colors.BLACK; - const backgroundColor = !annotated ? (this.sidebarWidth() ? Colors.MEDIUM_BLUE : Colors.BLACK) : this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.WidgetColor + (annotated ? ':annotated' : '')) as string; + const backgroundColor = !annotated ? (this.sidebarWidth() ? Colors.MEDIUM_BLUE : Colors.BLACK) : (this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.WidgetColor + (annotated ? ':annotated' : '')) as string); return !annotated && (!this._props.isContentActive() || SnappingManager.IsDragging || Doc.ActiveTool !== InkTool.None) ? null : (
{ - const { textBox, startUserMarkRegion, endUserMarkRegion, userMark } = FormattedTextBoxComment; - false && startUserMarkRegion !== undefined && textBox?.adoptAnnotation(startUserMarkRegion, endUserMarkRegion, userMark); + // const { textBox, startUserMarkRegion, endUserMarkRegion, userMark } = FormattedTextBoxComment; + // startUserMarkRegion !== undefined && textBox?.adoptAnnotation(startUserMarkRegion, endUserMarkRegion, userMark); e.stopPropagation(); e.preventDefault(); }; diff --git a/src/client/views/nodes/formattedText/ParagraphNodeSpec.ts b/src/client/views/nodes/formattedText/ParagraphNodeSpec.ts index 8799964b3..d41938698 100644 --- a/src/client/views/nodes/formattedText/ParagraphNodeSpec.ts +++ b/src/client/views/nodes/formattedText/ParagraphNodeSpec.ts @@ -1,18 +1,18 @@ -import { Node, DOMOutputSpec } from 'prosemirror-model'; +import { Node, DOMOutputSpec, AttributeSpec, TagParseRule } from 'prosemirror-model'; import clamp from '../../../util/clamp'; import convertToCSSPTValue from '../../../util/convertToCSSPTValue'; import toCSSLineSpacing from '../../../util/toCSSLineSpacing'; // import type { NodeSpec } from './Types'; type NodeSpec = { - attrs?: { [key: string]: any }; + attrs?: { [key: string]: AttributeSpec }; content?: string; draggable?: boolean; group?: string; inline?: boolean; name?: string; - parseDOM?: Array; - toDOM?: (node: any) => DOMOutputSpec; + parseDOM?: Array; + toDOM?: (node: Node) => DOMOutputSpec; }; // This assumes that every 36pt maps to one indent level. @@ -30,7 +30,7 @@ function convertMarginLeftToIndentValue(marginLeft: string): number { return clamp(MIN_INDENT_LEVEL, Math.floor(ptValue / INDENT_MARGIN_PT_SIZE), MAX_INDENT_LEVEL); } -function getAttrs(dom: HTMLElement): Object { +export function getAttrs(dom: HTMLElement): object { const { lineHeight, textAlign, marginLeft, paddingTop, paddingBottom } = dom.style; let align = dom.getAttribute('align') || textAlign || ''; @@ -50,9 +50,31 @@ function getAttrs(dom: HTMLElement): Object { return { align, indent, lineSpacing, paddingTop, paddingBottom, id }; } -function toDOM(node: Node): DOMOutputSpec { +export function getHeadingAttrs(dom: HTMLElement): { align?: string; indent?: number; lineSpacing?: string; paddingTop?: string; paddingBottom?: string; id: string; level?: number } { + const { lineHeight, textAlign, marginLeft, paddingTop, paddingBottom } = dom.style; + + let align = dom.getAttribute('align') || textAlign || ''; + align = ALIGN_PATTERN.test(align) ? align : ''; + + let indent = parseInt(dom.getAttribute(ATTRIBUTE_INDENT) || '', 10); + + if (!indent && marginLeft) { + indent = convertMarginLeftToIndentValue(marginLeft); + } + + indent = indent || MIN_INDENT_LEVEL; + + const lineSpacing = lineHeight ? toCSSLineSpacing(lineHeight) : undefined; + + const level = Number(dom.nodeName.substring(1)) || 1; + + const id = dom.getAttribute('id') || ''; + return { align, indent, lineSpacing, paddingTop, paddingBottom, id, level }; +} + +export function toDOM(node: Node): DOMOutputSpec { const { align, indent, inset, lineSpacing, paddingTop, paddingBottom, id } = node.attrs; - const attrs: { [key: string]: any } | null = {}; + const attrs: { [key: string]: unknown } | null = {}; let style = ''; if (align && align !== 'left') { diff --git a/src/client/views/nodes/formattedText/RichTextMenu.tsx b/src/client/views/nodes/formattedText/RichTextMenu.tsx index 247b7c097..738f6d699 100644 --- a/src/client/views/nodes/formattedText/RichTextMenu.tsx +++ b/src/client/views/nodes/formattedText/RichTextMenu.tsx @@ -1,8 +1,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; -import { action, computed, IReactionDisposer, makeObservable, observable, reaction } from 'mobx'; +import { action, computed, IReactionDisposer, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; -import { lift, wrapIn } from 'prosemirror-commands'; +import { lift, toggleMark, wrapIn } from 'prosemirror-commands'; import { Mark, MarkType } from 'prosemirror-model'; import { wrapInList } from 'prosemirror-schema-list'; import { EditorState, NodeSelection, TextSelection, Transaction } from 'prosemirror-state'; @@ -22,8 +22,6 @@ import { updateBullets } from './ProsemirrorExampleTransfer'; import './RichTextMenu.scss'; import { schema } from './schema_rts'; -const { toggleMark } = require('prosemirror-commands'); - @observer export class RichTextMenu extends AntimodeMenu { // eslint-disable-next-line no-use-before-define @@ -35,8 +33,8 @@ export class RichTextMenu extends AntimodeMenu { private _linkToRef = React.createRef(); layoutDoc: Doc | undefined; - @observable public view?: EditorView & { TextView ?: FormattedTextBox } = undefined; - public editorProps: FieldViewProps | AntimodeMenuProps |undefined; + @observable public view?: EditorView & { TextView?: FormattedTextBox } = undefined; + public editorProps: FieldViewProps | AntimodeMenuProps | undefined; public _brushMap: Map> = new Map(); @@ -124,7 +122,7 @@ export class RichTextMenu extends AntimodeMenu { } @action - public updateMenu(view: EditorView | undefined, lastState: EditorState | undefined, props: FormattedTextBoxProps|AntimodeMenuProps|undefined, layoutDoc: Doc | undefined) { + public updateMenu(view: EditorView | undefined, lastState: EditorState | undefined, props: FormattedTextBoxProps | AntimodeMenuProps | undefined, layoutDoc: Doc | undefined) { if (this._linkToRef.current?.getBoundingClientRect().width) { return; } @@ -158,7 +156,7 @@ export class RichTextMenu extends AntimodeMenu { this.getTextLinkTargetTitle().then(targetTitle => this.setCurrentLink(targetTitle)); } - setMark = (mark: Mark, state: EditorState, dispatch: (tr:Transaction) => void, dontToggle: boolean = false) => { + setMark = (mark: Mark, state: EditorState, dispatch: (tr: Transaction) => void, dontToggle: boolean = false) => { if (mark) { const newPos = state.selection.$anchor.node()?.type === schema.nodes.ordered_list ? state.selection.from : state.selection.from; const node = (state.selection as NodeSelection).node ?? (newPos >= 0 ? state.doc.nodeAt(newPos) : undefined); @@ -177,7 +175,7 @@ export class RichTextMenu extends AntimodeMenu { toggleMark(mark.type, mark.attrs)(state, dispatch); } } - // this.updateMenu(this.view, undefined, undefined, this.layoutDoc); + // this.updateMenu(this.view, undefined, undefined, this.layoutDoc); } }; @@ -193,7 +191,7 @@ export class RichTextMenu extends AntimodeMenu { } } return 'left'; - } + }; // finds font sizes and families in selection getActiveListStyle = () => { @@ -208,7 +206,7 @@ export class RichTextMenu extends AntimodeMenu { } } return ''; - } + }; // finds font sizes and families in selection getActiveFontStylesOnSelection() { @@ -365,7 +363,7 @@ export class RichTextMenu extends AntimodeMenu { this.view.focus(); } else { Doc.UserDoc()[fontField] = value; - // this.updateMenu(this.view, undefined, this.props, this.layoutDoc); + // this.updateMenu(this.view, undefined, this.props, this.layoutDoc); } }; @@ -391,10 +389,10 @@ export class RichTextMenu extends AntimodeMenu { this.view!.dispatch(tx3); }); this.view.focus(); - // this.updateMenu(this.view, undefined, this.props, this.layoutDoc); + // this.updateMenu(this.view, undefined, this.props, this.layoutDoc); }; - insertSummarizer(state: EditorState, dispatch: (tr:Transaction) => void) { + insertSummarizer(state: EditorState, dispatch: (tr: Transaction) => void) { if (state.selection.empty) return false; const mark = state.schema.marks.summarize.create(); const { tr } = state; @@ -408,7 +406,7 @@ export class RichTextMenu extends AntimodeMenu { vcenterToggle = () => { this.layoutDoc && (this.layoutDoc._layout_centered = !this.layoutDoc._layout_centered); }; - align = (view: EditorView, dispatch: (tr:Transaction) => void, alignment: 'left' | 'right' | 'center') => { + align = (view: EditorView, dispatch: (tr: Transaction) => void, alignment: 'left' | 'right' | 'center') => { if (this.TextView?._props.rootSelected?.()) { let { tr } = view.state; view.state.doc.nodesBetween(view.state.selection.from, view.state.selection.to, (node, pos) => { @@ -424,7 +422,7 @@ export class RichTextMenu extends AntimodeMenu { } }; - paragraphSetup(state: EditorState, dispatch: (tr:Transaction) => void, field: 'inset' | 'indent', value?: 0 | 10 | -10) { + paragraphSetup(state: EditorState, dispatch: (tr: Transaction) => void, field: 'inset' | 'indent', value?: 0 | 10 | -10) { let { tr } = state; state.doc.nodesBetween(state.selection.from, state.selection.to, (node, pos) => { if (node.type === schema.nodes.paragraph || node.type === schema.nodes.heading) { @@ -440,8 +438,8 @@ export class RichTextMenu extends AntimodeMenu { return true; } - insertBlockquote(state: EditorState, dispatch: (tr:Transaction) => void) { - const node = state.selection.$from.depth ? state.selection.$from.node(state.selection.$from.depth-1): undefined; + insertBlockquote(state: EditorState, dispatch: (tr: Transaction) => void) { + const node = state.selection.$from.depth ? state.selection.$from.node(state.selection.$from.depth - 1) : undefined; if (node?.type === schema.nodes.blockquote) { lift(state, dispatch); } else { @@ -450,7 +448,7 @@ export class RichTextMenu extends AntimodeMenu { return true; } - insertHorizontalRule(state: EditorState, dispatch: (tr:Transaction) => void) { + insertHorizontalRule(state: EditorState, dispatch: (tr: Transaction) => void) { dispatch(state.tr.replaceSelectionWith(state.schema.nodes.horizontal_rule.create()).scrollIntoView()); return true; } @@ -516,7 +514,7 @@ export class RichTextMenu extends AntimodeMenu { const onLinkChange = (e: React.ChangeEvent) => { this.TextView?.endUndoTypingBatch(); UndoManager.RunInBatch(() => this.setCurrentLink(e.target.value), 'link change'); - } + }; const link = this.currentLink ? this.currentLink : ''; @@ -595,7 +593,7 @@ export class RichTextMenu extends AntimodeMenu { if (this.view) { const linkAnchor = this.view.state.selection.$from.nodeAfter?.marks.find(m => m.type === this.view!.state.schema.marks.linkAnchor); if (linkAnchor) { - const allAnchors = (linkAnchor.attrs.allAnchors as { href: string; title: string; linkId: string; targetId: string; }[]).slice(); + const allAnchors = (linkAnchor.attrs.allAnchors as { href: string; title: string; linkId: string; targetId: string }[]).slice(); this.TextView?.RemoveAnchorFromSelection(allAnchors); // bcz: Argh ... this will remove the link from the document even it's anchored somewhere else in the text which happens if only part of the anchor text was selected. allAnchors @@ -698,7 +696,7 @@ interface RichTextMenuPluginProps { } export class RichTextMenuPlugin extends React.Component { // eslint-disable-next-line react/no-unused-class-component-methods - update(view: EditorView & {TextView ?: FormattedTextBox}, lastState: EditorState | undefined) { + update(view: EditorView & { TextView?: FormattedTextBox }, lastState: EditorState | undefined) { RichTextMenu.Instance?.updateMenu(view, lastState, this.props.editorProps, view.TextView?.layoutDoc); } render() { diff --git a/src/client/views/nodes/formattedText/RichTextRules.ts b/src/client/views/nodes/formattedText/RichTextRules.ts index bf11dfe62..39f589b1e 100644 --- a/src/client/views/nodes/formattedText/RichTextRules.ts +++ b/src/client/views/nodes/formattedText/RichTextRules.ts @@ -1,4 +1,5 @@ import { ellipsis, emDash, InputRule, smartQuotes, textblockTypeInputRule } from 'prosemirror-inputrules'; +import { NodeType } from 'prosemirror-model'; import { NodeSelection, TextSelection } from 'prosemirror-state'; import { ClientUtils } from '../../../../ClientUtils'; import { Doc, DocListCast, FieldResult, StrListCast } from '../../../../fields/Doc'; @@ -6,7 +7,7 @@ import { DocData } from '../../../../fields/DocSymbols'; import { Id } from '../../../../fields/FieldSymbols'; import { List } from '../../../../fields/List'; import { NumCast, StrCast } from '../../../../fields/Types'; -import { Utils } from '../../../../Utils'; +import { emptyFunction, Utils } from '../../../../Utils'; import { Docs } from '../../../documents/Documents'; import { CollectionViewType } from '../../../documents/DocumentTypes'; import { DocUtils } from '../../../documents/DocUtils'; @@ -35,13 +36,7 @@ export class RichTextRules { wrappingInputRule(/%>$/, schema.nodes.blockquote), // 1. create numerical ordered list - wrappingInputRule( - /^1\.\s$/, - schema.nodes.ordered_list, - () => ({ mapStyle: 'decimal', bulletStyle: 1 }), - (match: any, node: any) => node.childCount + node.attrs.order === +match[1], - ((type: any) => ({ type: type, attrs: { mapStyle: 'decimal', bulletStyle: 1 } })) as any - ), + wrappingInputRule(/^1\.\s$/, schema.nodes.ordered_list, () => ({ mapStyle: 'decimal', bulletStyle: 1 }), emptyFunction, ((type: unknown) => ({ type, attrs: { mapStyle: 'decimal', bulletStyle: 1 } })) as unknown as null), // A. create alphabetical ordered list wrappingInputRule( @@ -49,9 +44,8 @@ export class RichTextRules { schema.nodes.ordered_list, // match => { () => ({ mapStyle: 'multi', bulletStyle: 1 }), - // return ({ order: +match[1] }) - (match: any, node: any) => node.childCount + node.attrs.order === +match[1], - ((type: any) => ({ type: type, attrs: { mapStyle: 'multi', bulletStyle: 1 } })) as any + emptyFunction, + ((type: NodeType) => ({ type, attrs: { mapStyle: 'multi', bulletStyle: 1 } })) as unknown as null ), // * + - create bullet list @@ -60,8 +54,8 @@ export class RichTextRules { schema.nodes.ordered_list, // match => { () => ({ mapStyle: 'bullet' }), // ({ order: +match[1] }) - (match: any, node: any) => node.childCount + node.attrs.order === +match[1], - ((type: any) => ({ type: type, attrs: { mapStyle: 'bullet' } })) as any + emptyFunction, + ((type: NodeType) => ({ type: type, attrs: { mapStyle: 'bullet' } })) as unknown as null ), // ``` create code block @@ -93,7 +87,7 @@ export class RichTextRules { const textDoc = this.Document[DocData]; const numInlines = NumCast(textDoc.inlineTextCount); textDoc.inlineTextCount = numInlines + 1; - const node = (state.doc.resolve(start) as any).nodeAfter; + const node = state.doc.resolve(start).nodeAfter; const newNode = schema.nodes.dashComment.create({ docId: doc[Id], reflow: false }); const dashDoc = schema.nodes.dashDoc.create({ width: 75, height: 35, title: 'dashDoc', docId: doc[Id], float: 'right' }); const sm = state.storedMarks || undefined; @@ -137,7 +131,7 @@ export class RichTextRules { textDocInline.proto = textDoc; // make the annotation inherit from the outer text doc so that it can resolve any nested field references, e.g., [[field]] textDoc[inlineLayoutKey] = FormattedTextBox.LayoutString(inlineFieldKey); // create a layout string for the layout key that will render the annotation text textDoc[inlineFieldKey] = ''; // set a default value for the annotation - const node = (state.doc.resolve(start) as any).nodeAfter; + const node = state.doc.resolve(start).nodeAfter; const newNode = schema.nodes.dashComment.create({ docId: textDocInline[Id], reflow: true }); const dashDoc = schema.nodes.dashDoc.create({ width: 75, height: 35, title: 'dashDoc', docId: textDocInline[Id], float: 'right' }); const sm = state.storedMarks || undefined; @@ -154,8 +148,8 @@ export class RichTextRules { // set the First-line indent node type for the selection's paragraph (assumes % was used to initiate an EnteringStyle mode) new InputRule(/(%d|d)$/, (state, match, start, end) => { if (!match[0].startsWith('%') && !this.EnteringStyle) return null; - const pos = state.doc.resolve(start) as any; - for (let depth = pos.path.length / 3 - 1; depth >= 0; depth--) { + const pos = state.doc.resolve(start); + for (let depth = pos.depth; depth >= 0; depth--) { const node = pos.node(depth); if (node.type === schema.nodes.paragraph) { const replaced = state.tr.setNodeMarkup(pos.pos - pos.parentOffset - 1, node.type, { ...node.attrs, indent: node.attrs.indent === 25 ? undefined : 25 }); @@ -169,8 +163,8 @@ export class RichTextRules { // set the Hanging indent node type for the current selection's paragraph (assumes % was used to initiate an EnteringStyle mode) new InputRule(/(%h|h)$/, (state, match, start, end) => { if (!match[0].startsWith('%') && !this.EnteringStyle) return null; - const pos = state.doc.resolve(start) as any; - for (let depth = pos.path.length / 3 - 1; depth >= 0; depth--) { + const pos = state.doc.resolve(start); + for (let depth = pos.depth; depth >= 0; depth--) { const node = pos.node(depth); if (node.type === schema.nodes.paragraph) { const replaced = state.tr.setNodeMarkup(pos.pos - pos.parentOffset - 1, node.type, { ...node.attrs, indent: node.attrs.indent === -25 ? undefined : -25 }); @@ -184,12 +178,12 @@ export class RichTextRules { // set the Quoted indent node type for the current selection's paragraph (assumes % was used to initiate an EnteringStyle mode) new InputRule(/(%q|q)$/, (state, match, start, end) => { if (!match[0].startsWith('%') && !this.EnteringStyle) return null; - const pos = state.doc.resolve(start) as any; + const pos = state.doc.resolve(start); if (state.selection instanceof NodeSelection && state.selection.node.type === schema.nodes.ordered_list) { const { node } = state.selection; return state.tr.setNodeMarkup(pos.pos, node.type, { ...node.attrs, indent: node.attrs.indent === 30 ? undefined : 30 }); } - for (let depth = pos.path.length / 3 - 1; depth >= 0; depth--) { + for (let depth = pos.depth; depth >= 0; depth--) { const node = pos.node(depth); if (node.type === schema.nodes.paragraph) { const replaced = state.tr.setNodeMarkup(pos.pos - pos.parentOffset - 1, node.type, { ...node.attrs, inset: node.attrs.inset === 30 ? undefined : 30 }); @@ -202,9 +196,9 @@ export class RichTextRules { // center justify text new InputRule(/%\^/, (state, match, start, end) => { - const resolved = state.doc.resolve(start) as any; + const resolved = state.doc.resolve(start); if (resolved?.parent.type.name === 'paragraph') { - return state.tr.deleteRange(start, end).setNodeMarkup(resolved.path[resolved.path.length - 4], schema.nodes.paragraph, { ...resolved.parent.attrs, align: 'center' }, resolved.parent.marks); + return state.tr.deleteRange(start, end).setNodeMarkup(resolved.start() - 1, schema.nodes.paragraph, { ...resolved.parent.attrs, align: 'center' }, resolved.parent.marks); } const node = resolved.nodeAfter; const sm = state.storedMarks || undefined; @@ -214,9 +208,9 @@ export class RichTextRules { // left justify text new InputRule(/%\[/, (state, match, start, end) => { - const resolved = state.doc.resolve(start) as any; + const resolved = state.doc.resolve(start); if (resolved?.parent.type.name === 'paragraph') { - return state.tr.deleteRange(start, end).setNodeMarkup(resolved.path[resolved.path.length - 4], schema.nodes.paragraph, { ...resolved.parent.attrs, align: 'left' }, resolved.parent.marks); + return state.tr.deleteRange(start, end).setNodeMarkup(resolved.start() - 1, schema.nodes.paragraph, { ...resolved.parent.attrs, align: 'left' }, resolved.parent.marks); } const node = resolved.nodeAfter; const sm = state.storedMarks || undefined; @@ -226,9 +220,9 @@ export class RichTextRules { // right justify text new InputRule(/%\]/, (state, match, start, end) => { - const resolved = state.doc.resolve(start) as any; + const resolved = state.doc.resolve(start); if (resolved?.parent.type.name === 'paragraph') { - return state.tr.deleteRange(start, end).setNodeMarkup(resolved.path[resolved.path.length - 4], schema.nodes.paragraph, { ...resolved.parent.attrs, align: 'right' }, resolved.parent.marks); + return state.tr.deleteRange(start, end).setNodeMarkup(resolved.start() - 1, schema.nodes.paragraph, { ...resolved.parent.attrs, align: 'right' }, resolved.parent.marks); } const node = resolved.nodeAfter; const sm = state.storedMarks || undefined; @@ -426,9 +420,9 @@ export class RichTextRules { if (state.selection.to === state.selection.from || !this.EnteringStyle) return null; const tag = match[0] === 't' ? 'todo' : match[0] === 'i' ? 'ignore' : match[0] === 'x' ? 'disagree' : match[0] === '!' ? 'important' : '??'; - const node = (state.doc.resolve(start) as any).nodeAfter; + const node = state.doc.resolve(start).nodeAfter; - if (node?.marks.findIndex((m: any) => m.type === schema.marks.user_tag) !== -1) return state.tr.removeMark(start, end, schema.marks.user_tag); + if (node?.marks.findIndex(m => m.type === schema.marks.user_tag) !== -1) return state.tr.removeMark(start, end, schema.marks.user_tag); return node ? state.tr .removeMark(start, end, schema.marks.user_mark) @@ -438,7 +432,7 @@ export class RichTextRules { }), new InputRule(/%\(/, (state, match, start, end) => { - const node = (state.doc.resolve(start) as any).nodeAfter; + const node = state.doc.resolve(start).nodeAfter; const sm = state.storedMarks?.slice() || []; const mark = state.schema.marks.summarizeInclusive.create(); @@ -447,7 +441,7 @@ export class RichTextRules { const content = selected.selection.content(); const replaced = node ? selected.replaceRangeWith(start, end, schema.nodes.summary.create({ visibility: true, text: content, textslice: content.toJSON() })) : state.tr; - return replaced.setSelection(new TextSelection(replaced.doc.resolve(end))).setStoredMarks([...node.marks, ...sm]); + return replaced.setSelection(new TextSelection(replaced.doc.resolve(end))).setStoredMarks([...(node?.marks ?? []), ...sm]); }), new InputRule(/%\)/, (state, match, start, end) => state.tr.deleteRange(start, end).removeStoredMark(state.schema.marks.summarizeInclusive.create())), diff --git a/src/client/views/nodes/formattedText/marks_rts.ts b/src/client/views/nodes/formattedText/marks_rts.ts index 6e1f325cf..ba8e4faed 100644 --- a/src/client/views/nodes/formattedText/marks_rts.ts +++ b/src/client/views/nodes/formattedText/marks_rts.ts @@ -34,14 +34,14 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'a[href]', - getAttrs(dom: any) { + getAttrs: dom => { return { title: dom.getAttribute('title'), }; }, }, ], - toDOM(node: any) { + toDOM: node => { const targethrefs = node.attrs.allAnchors.reduce((p: string, item: { href: string; title: string; anchorId: string }) => (p ? p + ' ' + item.href : item.href), ''); const anchorids = node.attrs.allAnchors.reduce((p: string, item: { href: string; title: string; anchorId: string }) => (p ? p + ' ' + item.anchorId : item.anchorId), ''); return ['a', { id: Utils.GenerateGuid(), class: anchorids, 'data-targethrefs': targethrefs, /* 'data-noPreview': 'true', */ 'data-linkdoc': node.attrs.linkDoc, title: node.attrs.title, style: `background: lightBlue` }, 0]; @@ -53,7 +53,7 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'div', - getAttrs(dom: any) { + getAttrs: dom => { return { noAutoLink: dom.getAttribute('data-noAutoLink'), }; @@ -80,7 +80,7 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'a[href]', - getAttrs(dom: any) { + getAttrs: dom => { return { title: dom.getAttribute('title'), noPreview: dom.getAttribute('noPreview'), @@ -88,7 +88,7 @@ export const marks: { [index: string]: MarkSpec } = { }, }, ], - toDOM(node: any) { + toDOM: node => { const targethrefs = node.attrs.allAnchors.reduce((p: string, item: { href: string; title: string; anchorId: string }) => (p ? p + ' ' + item.href : item.href), ''); const anchorids = node.attrs.allAnchors.reduce((p: string, item: { href: string; title: string; anchorId: string }) => (p ? p + ' ' + item.anchorId : item.anchorId), ''); return node.attrs.docref && node.attrs.title @@ -117,7 +117,7 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'span', - getAttrs(dom: any) { + getAttrs: dom => { return { fontSize: dom.style.fontSize ? dom.style.fontSize.toString() : '' }; }, }, @@ -131,7 +131,7 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'span', - getAttrs(dom: any) { + getAttrs: dom => { const cstyle = getComputedStyle(dom); if (cstyle.font) { if (cstyle.font.indexOf('Times New Roman') !== -1) return { fontFamily: 'Times New Roman' }; @@ -154,7 +154,7 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'span', - getAttrs(dom: any) { + getAttrs: dom => { return { color: dom.getAttribute('color') }; }, }, @@ -170,12 +170,12 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'span', - getAttrs(dom: any) { + getAttrs: dom => { return { fontHighlight: dom.getAttribute('background-color') }; }, }, ], - toDOM(node: any) { + toDOM: node => { return node.attrs.fontHighlight ? ['span', { style: 'background-color:' + node.attrs.fontHighlight }] : ['span', { style: 'background-color: transparent' }]; }, }, @@ -224,7 +224,7 @@ export const marks: { [index: string]: MarkSpec } = { attrs: { bulletType: { default: 'decimal' }, }, - toDOM(node: any) { + toDOM: node => { return [ 'span', { @@ -238,11 +238,11 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'span', - getAttrs: (p: any) => { + getAttrs: p => { if (typeof p !== 'string') { const style = getComputedStyle(p); if (style.textDecoration === 'underline') return null; - if (p.parentElement.outerHTML.indexOf('text-decoration: underline') !== -1 && p.parentElement.outerHTML.indexOf('text-decoration-style: solid') !== -1) { + if (p.parentElement?.outerHTML.indexOf('text-decoration: underline') !== -1 && p.parentElement?.outerHTML.indexOf('text-decoration-style: solid') !== -1) { return null; } } @@ -266,11 +266,11 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'span', - getAttrs: (p: any) => { + getAttrs: p => { if (typeof p !== 'string') { const style = getComputedStyle(p); if (style.textDecoration === 'underline') return null; - if (p.parentElement.outerHTML.indexOf('text-decoration: underline') !== -1 && p.parentElement.outerHTML.indexOf('text-decoration-style: dotted') !== -1) { + if (p.parentElement?.outerHTML.indexOf('text-decoration: underline') !== -1 && p.parentElement?.outerHTML.indexOf('text-decoration-style: dotted') !== -1) { return null; } } @@ -292,10 +292,10 @@ export const marks: { [index: string]: MarkSpec } = { parseDOM: [ { tag: 'span', - getAttrs: (p: any) => { + getAttrs: p => { if (typeof p !== 'string') { const style = getComputedStyle(p); - if (style.textDecoration === 'underline' || p.parentElement.outerHTML.indexOf('text-decoration-style:line') !== -1) { + if (style.textDecoration === 'underline' || p.parentElement?.outerHTML.indexOf('text-decoration-style:line') !== -1) { return null; } } @@ -317,7 +317,7 @@ export const marks: { [index: string]: MarkSpec } = { selected: { default: false }, }, parseDOM: [{ style: 'background: yellow' }], - toDOM(node: any) { + toDOM: node => { return ['span', { style: `background: ${node.attrs.selected ? 'orange' : 'yellow'}` }]; }, }, @@ -330,7 +330,7 @@ export const marks: { [index: string]: MarkSpec } = { }, excludes: 'user_mark', group: 'inline', - toDOM(node: any) { + toDOM: node => { const uid = node.attrs.userid.replace(/\./g, '').replace(/@/g, ''); const min = Math.round(node.attrs.modified / 60); const hr = Math.round(min / 60); @@ -348,7 +348,7 @@ export const marks: { [index: string]: MarkSpec } = { }, group: 'inline', inclusive: false, - toDOM(node: any) { + toDOM: node => { const uid = node.attrs.userid.replace('.', '').replace('@', ''); return ['span', { class: 'UT-' + uid + ' UT-' + node.attrs.tag }, 0]; }, diff --git a/src/client/views/nodes/formattedText/nodes_rts.ts b/src/client/views/nodes/formattedText/nodes_rts.ts index 5bf942218..02ded3103 100644 --- a/src/client/views/nodes/formattedText/nodes_rts.ts +++ b/src/client/views/nodes/formattedText/nodes_rts.ts @@ -1,6 +1,6 @@ import { DOMOutputSpec, Node, NodeSpec } from 'prosemirror-model'; import { listItem, orderedList } from 'prosemirror-schema-list'; -import { ParagraphNodeSpec, toParagraphDOM, getParagraphNodeAttrs } from './ParagraphNodeSpec'; +import { ParagraphNodeSpec, toParagraphDOM, getHeadingAttrs } from './ParagraphNodeSpec'; import { DocServer } from '../../../DocServer'; import { Doc, Field, FieldType } from '../../../../fields/Doc'; import { schema } from './schema_rts'; @@ -53,7 +53,7 @@ export const nodes: { [index: string]: NodeSpec } = { parseDOM: [ { tag: 'audiotag', - getAttrs(dom: any) { + getAttrs: dom => { return { timeCode: dom.getAttribute('data-timecode'), audioId: dom.getAttribute('data-audioid'), @@ -123,24 +123,57 @@ export const nodes: { [index: string]: NodeSpec } = { level: { default: 1 }, }, parseDOM: [ - { tag: 'h1', attrs: { level: 1 } }, - { tag: 'h2', attrs: { level: 2 } }, - { tag: 'h3', attrs: { level: 3 } }, - { tag: 'h4', attrs: { level: 4 } }, - { tag: 'h5', attrs: { level: 5 } }, - { tag: 'h6', attrs: { level: 6 } }, + { + tag: 'h1', + attrs: { level: 1 }, + getAttrs(dom) { + return getHeadingAttrs(dom); + }, + }, + { + tag: 'h2', + attrs: { level: 2 }, + getAttrs(dom) { + return getHeadingAttrs(dom); + }, + }, + { + tag: 'h3', + attrs: { level: 3 }, + getAttrs(dom) { + return getHeadingAttrs(dom); + }, + }, + { + tag: 'h4', + attrs: { level: 4 }, + getAttrs(dom) { + return getHeadingAttrs(dom); + }, + }, + { + tag: 'h5', + attrs: { level: 5 }, + getAttrs(dom) { + return getHeadingAttrs(dom); + }, + }, + { + tag: 'h6', + attrs: { level: 6 }, + getAttrs(dom) { + return getHeadingAttrs(dom); + }, + }, ], toDOM(node) { - const dom = toParagraphDOM(node) as any; - dom[0] = `h${node.attrs.level || 1}`; + const dom = toParagraphDOM(node); + if (dom instanceof Array) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (dom as any)[0] = `h${node.attrs.level || 1}`; // [0] is readonly so cast away to any + } return dom; }, - getAttrs(dom: any) { - const attrs = getParagraphNodeAttrs(dom) as any; - const level = Number(dom.nodeName.substring(1)) || 1; - attrs.level = level; - return attrs; - }, }, // :: NodeSpec A code listing. Disallows marks or non-text inline @@ -221,7 +254,7 @@ export const nodes: { [index: string]: NodeSpec } = { parseDOM: [ { tag: 'img[src]', - getAttrs(dom: any) { + getAttrs: dom => { return { src: dom.getAttribute('src'), title: dom.getAttribute('title'), @@ -300,7 +333,7 @@ export const nodes: { [index: string]: NodeSpec } = { parseDOM: [ { tag: 'video[src]', - getAttrs(dom: any) { + getAttrs: dom => { return { src: dom.getAttribute('src'), title: dom.getAttribute('title'), @@ -341,33 +374,31 @@ export const nodes: { [index: string]: NodeSpec } = { parseDOM: [ { tag: 'ul', - getAttrs(dom: any) { + getAttrs: dom => { return { bulletStyle: dom.getAttribute('data-bulletStyle'), mapStyle: dom.getAttribute('data-mapStyle'), fontColor: dom.style.color, - fontSize: dom.style['font-size'], - fontFamily: dom.style['font-family'], - indent: dom.style['margin-left'], + fontSize: dom.style.fontSize, + fontFamily: dom.style.fontFamily, + indent: dom.style.marginLeft, }; }, }, { style: 'list-style-type=disc', - getAttrs() { - return { mapStyle: 'bullet' }; - }, + getAttrs: () => ({ mapStyle: 'bullet' }), }, { tag: 'ol', - getAttrs(dom: any) { + getAttrs: dom => { return { bulletStyle: dom.getAttribute('data-bulletStyle'), mapStyle: dom.getAttribute('data-mapStyle'), fontColor: dom.style.color, - fontSize: dom.style['font-size'], - fontFamily: dom.style['font-family'], - indent: dom.style['margin-left'], + fontSize: dom.style.fontSize, + fontFamily: dom.style.fontFamily, + indent: dom.style.marginLeft, }; }, }, @@ -416,7 +447,7 @@ export const nodes: { [index: string]: NodeSpec } = { parseDOM: [ { tag: 'li', - getAttrs(dom: any) { + getAttrs: dom => { return { mapStyle: dom.getAttribute('data-mapStyle'), bulletStyle: dom.getAttribute('data-bulletStyle') }; }, }, diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index cb5aad32d..0920b1bd3 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -1,4 +1,3 @@ -/* eslint-disable jsx-a11y/label-has-associated-control */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Button, IconButton, Type } from 'browndash-components'; import { action, makeObservable, observable } from 'mobx'; @@ -150,7 +149,7 @@ export class GPTPopup extends ObservableReactComponent { } public addDoc: (doc: Doc | Doc[], sidebarKey?: string | undefined) => boolean = () => false; - public createFilteredDoc: (axes?: any) => boolean = () => false; + public createFilteredDoc: (axes?: string[]) => boolean = () => false; public addToCollection: ((doc: Doc | Doc[], annotationKey?: string | undefined) => boolean) | undefined; /** @@ -371,8 +370,8 @@ export class GPTPopup extends ObservableReactComponent {
{this.heading('GENERATED IMAGE')}
- {this.imgUrls.map(rawSrc => ( -
+ {this.imgUrls.map((rawSrc, i) => ( +
dalle generation
diff --git a/src/client/views/pdf/PDFViewer.tsx b/src/client/views/pdf/PDFViewer.tsx index 1279563ef..dee0edfae 100644 --- a/src/client/views/pdf/PDFViewer.tsx +++ b/src/client/views/pdf/PDFViewer.tsx @@ -1,8 +1,8 @@ import { action, computed, IReactionDisposer, makeObservable, observable, ObservableMap, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as Pdfjs from 'pdfjs-dist'; -import 'pdfjs-dist/web/pdf_viewer.css'; import * as PDFJSViewer from 'pdfjs-dist/web/pdf_viewer.mjs'; +import 'pdfjs-dist/webpack.mjs'; // sets the PDF workerSrc import * as React from 'react'; import { addStyleSheet, addStyleSheetRule, clearStyleSheetRules, ClientUtils, returnAll, returnFalse, returnNone, returnZero, smoothScroll } from '../../../ClientUtils'; import { CreateLinkToActiveAudio, Doc, DocListCast, Opt } from '../../../fields/Doc'; @@ -28,10 +28,8 @@ import { AnchorMenu } from './AnchorMenu'; import { Annotation } from './Annotation'; import { GPTPopup } from './GPTPopup/GPTPopup'; import './PDFViewer.scss'; - -// pdfjsLib.GlobalWorkerOptions.workerSrc = `/assets/pdf.worker.js`; // The workerSrc property shall be specified. -Pdfjs.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@4.4.168/build/pdf.worker.mjs'; +// Pdfjs.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@4.4.168/build/pdf.worker.mjs'; interface IViewerProps extends FieldViewProps { pdfBox: PDFBox; @@ -62,7 +60,7 @@ export class PDFViewer extends ObservableReactComponent { } @observable _pageSizes: { width: number; height: number }[] = []; - @observable _savedAnnotations = new ObservableMap(); + @observable _savedAnnotations = new ObservableMap(); @observable _textSelecting = true; @observable _showWaiting = true; @observable Index: number = -1; @@ -214,7 +212,7 @@ export class PDFViewer extends ObservableReactComponent { this._disposers.scale = reaction( () => NumCast(this._props.layoutDoc._freeform_scale, 1), scale => { - this._pdfViewer.currentScaleValue = scale+""; + this._pdfViewer.currentScaleValue = scale + ''; }, { fireImmediately: true } ); @@ -483,7 +481,7 @@ export class PDFViewer extends ObservableReactComponent { e.stopPropagation(); if (e.ctrlKey) { const curScale = Number(this._pdfViewer.currentScaleValue); - this._pdfViewer.currentScaleValue = Math.max(1, Math.min(10, curScale - (curScale * e.deltaY) / 1000)) + ""; + this._pdfViewer.currentScaleValue = Math.max(1, Math.min(10, curScale - (curScale * e.deltaY) / 1000)) + ''; this._props.layoutDoc._freeform_scale = Number(this._pdfViewer.currentScaleValue); } } diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index 2792f3aba..e6a95fd30 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-namespace */ /* eslint-disable default-param-last */ /* eslint-disable no-use-before-define */ @@ -19,7 +18,7 @@ import { import { Copy, FieldChanged, HandleUpdate, Id, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; import { InkTool } from './InkField'; import { List } from './List'; -import { ObjectField } from './ObjectField'; +import { ObjectField, serverOpType } from './ObjectField'; import { PrefetchProxy, ProxyField } from './Proxy'; import { FieldId, RefField } from './RefField'; import { RichTextField } from './RichTextField'; @@ -28,6 +27,15 @@ import { ComputedField, ScriptField } from './ScriptField'; import { BoolCast, Cast, DocCast, FieldValue, NumCast, StrCast, ToConstructor, toList } from './Types'; import { containedFieldChangedHandler, deleteProperty, GetEffectiveAcl, getField, getter, makeEditable, makeReadOnly, setter, SharingPermissions } from './util'; +export let ObjGetRefField: (id: string, force?: boolean) => Promise; +export let ObjGetRefFields: (ids: string[]) => Promise>; + +export function SetObjGetRefField(func: (id: string, force?: boolean) => Promise) { + ObjGetRefField = func; +} +export function SetObjGetRefFields(func: (ids: string[]) => Promise>) { + ObjGetRefFields = func; +} export const LinkedTo = '-linkedTo'; export namespace Field { /** @@ -91,18 +99,19 @@ export namespace Field { }); return script; } - export function toString(field: FieldType) { + export function toString(fieldIn: unknown) { + const field = fieldIn as FieldType; if (typeof field === 'string' || typeof field === 'number' || typeof field === 'boolean') return String(field); return field?.[ToString]?.() || ''; } - export function IsField(field: any): field is FieldType; - export function IsField(field: any, includeUndefined: true): field is FieldType | undefined; - export function IsField(field: any, includeUndefined: boolean = false): field is FieldType | undefined { + export function IsField(field: unknown): field is FieldType; + export function IsField(field: unknown, includeUndefined: true): field is FieldType | undefined; + export function IsField(field: unknown, includeUndefined: boolean = false): field is FieldType | undefined { return ['string', 'number', 'boolean'].includes(typeof field) || field instanceof ObjectField || field instanceof RefField || (includeUndefined && field === undefined); } // eslint-disable-next-line @typescript-eslint/no-shadow - export function Copy(field: any) { - return field instanceof ObjectField ? ObjectField.MakeCopy(field) : field; + export function Copy(field: unknown) { + return field instanceof ObjectField ? ObjectField.MakeCopy(field) : (field as FieldType); } UndoManager.SetFieldPrinter(toString); } @@ -157,7 +166,7 @@ export const ReverseHierarchyMap: Map { key.startsWith('acl_') && (permissions[key] = ReverseHierarchyMap.get(StrCast(target[key]))!.acl); @@ -177,7 +186,7 @@ export function updateCachedAcls(doc: Doc) { } @scriptingGlobal -@Deserializable('Doc', updateCachedAcls, ['id']) +@Deserializable('Doc', (obj: unknown) => updateCachedAcls(obj as Doc), ['id']) export class Doc extends RefField { @observable public static RecordingEvent = 0; @observable public static GuestDashboard: Doc | undefined = undefined; @@ -328,12 +337,15 @@ export class Doc extends RefField { } [key: string]: FieldResult; + [key2: symbol]: unknown; @serializable(alias('fields', map(autoObject(), { afterDeserialize: afterDocDeserialize }))) - private get __fieldTuples() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + get __fieldTuples(): any { + // __fieldTuples does not follow the index signature pattern which requires a FieldResult return value -- so this hack suppresses the error return this[FieldTuples]; } - private set __fieldTuples(value) { + set __fieldTuples(value) { // called by deserializer to set all fields in one shot this[FieldTuples] = value; Object.keys(value).forEach(key => { @@ -348,33 +360,33 @@ export class Doc extends RefField { }); } - @observable private [FieldTuples]: any = {}; - @observable private [FieldKeys]: any = {}; + @observable private [FieldTuples]: { [key: string]: FieldResult } = {}; + @observable private [FieldKeys]: { [key: string]: boolean } = {}; /// all of the raw acl's that have been set on this document. Use GetEffectiveAcl to determine the actual ACL of the doc for editing @observable public [DocAcl]: { [key: string]: symbol } = {}; @observable public [DocCss]: number = 0; // incrementer denoting a change to CSS layout @observable public [DirectLinks] = new ObservableSet(); - @observable public [AudioPlay]: any = undefined; // meant to store sound object from Howl + @observable public [AudioPlay]: unknown = undefined; // meant to store sound object from Howl @observable public [Animation]: Opt = undefined; @observable public [Highlight]: boolean = false; @observable public [Brushed]: boolean = false; - @observable public [DocViews] = new ObservableSet(); + @observable public [DocViews] = new ObservableSet(); private [Self] = this; - private [SelfProxy]: any; + private [SelfProxy]: Doc; private [UpdatingFromServer]: boolean = false; private [ForceServerWrite]: boolean = false; - private [CachedUpdates]: { [key: string]: () => void | Promise } = {}; + private [CachedUpdates]: { [key: string]: () => void | Promise } = {}; public [Initializing]: boolean = false; - public [FieldChanged] = (diff: undefined | { op: '$addToSet' | '$remFromSet' | '$set'; items: FieldType[] | undefined; length: number | undefined; hint?: any }, serverOp: any) => { + public [FieldChanged] = (diff: { op: '$addToSet' | '$remFromSet' | '$set'; items: FieldType[] | undefined; length: number | undefined; hint?: unknown } | undefined, serverOp: serverOpType) => { if (!this[UpdatingFromServer] || this[ForceServerWrite]) { DocServer.UpdateField(this[Id], serverOp); } }; public [Width] = () => NumCast(this[SelfProxy]._width); public [Height] = () => NumCast(this[SelfProxy]._height); - public [TransitionTimer]: any = undefined; + public [TransitionTimer]: NodeJS.Timeout | undefined = undefined; public [ToJavascriptString] = () => `idToDoc("${this[Self][Id]}")`; // what should go here? public [ToScriptString] = () => `idToDoc("${this[Self][Id]}")`; public [ToString] = () => `Doc(${GetEffectiveAcl(this[SelfProxy]) === AclPrivate ? '-inaccessible-' : this[SelfProxy].title})`; @@ -387,7 +399,7 @@ export class Doc extends RefField { const self = this[SelfProxy]; const templateLayoutDoc = Cast(Doc.LayoutField(self), Doc, null); if (templateLayoutDoc) { - let renderFieldKey: any; + let renderFieldKey: string = ''; const layoutField = templateLayoutDoc[StrCast(templateLayoutDoc.layout_fieldKey, 'layout')]; if (typeof layoutField === 'string') { [renderFieldKey] = layoutField.split("fieldKey={'")[1].split("'"); // layoutField.split("'")[1]; @@ -399,16 +411,17 @@ export class Doc extends RefField { return undefined; } - public async [HandleUpdate](diff: any) { - const set = diff.$set; + public async [HandleUpdate](diff: { $set: { [key: string]: FieldType } } | { $unset?: unknown }) { + const $set = '$set' in diff ? diff.$set : undefined; + const $unset = '$unset' in diff ? diff.$unset : undefined; const sameAuthor = this.author === ClientUtils.CurrentUserEmail(); const fprefix = 'fields.'; - Object.keys(set ?? {}) + Object.keys($set ?? {}) .filter(key => key.startsWith(fprefix)) .forEach(async key => { const fKey = key.substring(fprefix.length); const fn = async () => { - const value = await SerializationHelper.Deserialize(set[key]); + const value = (await SerializationHelper.Deserialize($set?.[key])) as FieldType; const prev = GetEffectiveAcl(this); this[UpdatingFromServer] = true; this[fKey] = value; @@ -429,8 +442,7 @@ export class Doc extends RefField { this[CachedUpdates][fKey] = fn; } }); - const unset = diff.$unset; - Object.keys(unset ?? {}) + Object.keys($unset ?? {}) .filter(key => key.startsWith(fprefix)) .forEach(async key => { const fKey = key.substring(7); @@ -451,12 +463,10 @@ export class Doc extends RefField { // eslint-disable-next-line no-redeclare export namespace Doc { - // eslint-disable-next-line import/no-mutable-exports export let SelectOnLoad: Doc | undefined; export function SetSelectOnLoad(doc: Doc | undefined) { SelectOnLoad = doc; } - // eslint-disable-next-line import/no-mutable-exports export let DocDragDataName: string = ''; export function SetDocDragDataName(name: string) { DocDragDataName = name; @@ -474,7 +484,7 @@ export namespace Doc { delete doc[CachedUpdates][field]; } } - export function AddCachedUpdate(doc: Doc, field: string, oldValue: any) { + export function AddCachedUpdate(doc: Doc, field: string, oldValue: FieldType) { const val = oldValue; doc[CachedUpdates][field] = () => { doc[UpdatingFromServer] = true; @@ -493,7 +503,7 @@ export namespace Doc { export function Get(doc: Doc, key: string, ignoreProto: boolean = false): FieldResult { try { - return getField(doc[Self], key, ignoreProto); + return getField(doc[Self], key, ignoreProto) as FieldResult; } catch { return doc; } @@ -558,9 +568,12 @@ export namespace Doc { export function assign(doc: Doc, fields: Partial>>, skipUndefineds: boolean = false, isInitializing = false) { isInitializing && (doc[Initializing] = true); Object.keys(fields).forEach(key => { - const value = (fields as any)[key]; + const value = (fields as { [key: string]: Opt })[key]; if (!skipUndefineds || value !== undefined) { // Do we want to filter out undefineds? + if (typeof value === 'object' && 'values' in value) { + console.log(value); + } doc[key] = value; } }); @@ -712,7 +725,7 @@ export namespace Doc { await Promise.all( Object.keys(doc).map(async key => { if (filter.includes(key)) return; - const assignKey = (val: any) => { + const assignKey = (val: Opt) => { copy[key] = val; }; const cfield = ComputedField.WithoutComputed(() => FieldValue(doc[key])); @@ -735,7 +748,7 @@ export namespace Doc { .trim() ); const results = docids && (await DocServer.GetRefFields(docids)); - const rdocs = results && Array.from(Object.keys(results)).map(rkey => DocCast(results[rkey])); + const rdocs = results && Array.from(Object.keys(results)).map(rkey => DocCast(results.get(rkey))); rdocs?.map(d => d && Doc.makeClone(d, cloneMap, linkMap, rtfs, exclusions, pruneDocs, cloneLinks, cloneTemplates)); rtfs.push({ copy, key, field: objField }); } @@ -818,11 +831,11 @@ export namespace Doc { const linkedDocs = Array.from(linkMap.values()); linkedDocs.forEach(link => Doc.AddLink?.(link, true)); rtfMap.forEach(({ copy, key, field }) => { - const replacer = (match: any, attr: string, id: string /* , offset: any, string: any */) => { + const replacer = (match: string, attr: string, id: string /* , offset: any, string: any */) => { const mapped = cloneMap.get(id); return attr + '"' + (mapped ? mapped[Id] : id) + '"'; }; - const replacer2 = (match: any, href: string, id: string /* , offset: any, string: any */) => { + const replacer2 = (match: string, href: string, id: string /* , offset: any, string: any */) => { const mapped = cloneMap.get(id); return href + (mapped ? mapped[Id] : id); }; @@ -874,7 +887,7 @@ export namespace Doc { newLayoutDoc.embedContainer = targetDoc; newLayoutDoc.resolvedDataDoc = dataDoc; newLayoutDoc.acl_Guest = SharingPermissions.Edit; - if (dataDoc[templateField] === undefined && (templateLayoutDoc[templateField] as any)?.length) { + if (dataDoc[templateField] === undefined && (templateLayoutDoc[templateField] as List)?.length) { dataDoc[templateField] = ObjectField.MakeCopy(templateLayoutDoc[templateField] as List); // ComputedField.MakeFunction(`ObjectField.MakeCopy(templateLayoutDoc["${templateField}"])`, { templateLayoutDoc: Doc.name }, { templateLayoutDoc }); } @@ -901,7 +914,7 @@ export namespace Doc { return { layout: Doc.expandTemplateLayout(childDoc, templateRoot), data: resolvedDataDoc }; } - export function FindReferences(infield: Doc | List, references: Set, system: boolean | undefined) { + export function FindReferences(infield: Doc | List, references: Set, system: boolean | undefined) { if (infield instanceof Promise) return; if (!(infield instanceof Doc)) { infield?.forEach(val => (val instanceof Doc || val instanceof List) && FindReferences(val, references, system)); @@ -976,9 +989,10 @@ export namespace Doc { } else if (cfield instanceof ComputedField) { copy[key] = cfield[Copy](); // ComputedField.MakeFunction(cfield.script.originalScript); } else if (field instanceof ObjectField) { + const docAtKey = doc[key]; copy[key] = - doc[key] instanceof Doc && key.includes('layout[') - ? new ProxyField(Doc.MakeCopy(doc[key] as any)) // copy the expanded render template + docAtKey instanceof Doc && key.includes('layout[') + ? new ProxyField(Doc.MakeCopy(docAtKey)) // copy the expanded render template : ObjectField.MakeCopy(field); } else if (field instanceof Promise) { // eslint-disable-next-line no-debugger @@ -1235,7 +1249,7 @@ export namespace Doc { } const UnhighlightWatchers: (() => void)[] = []; - let UnhighlightTimer: any; + let UnhighlightTimer: NodeJS.Timeout | undefined; export function IsUnhighlightTimerSet() { return UnhighlightTimer; } // prettier-ignore export function AddUnHighlightWatcher(watcher: () => void) { if (UnhighlightTimer) { @@ -1244,7 +1258,7 @@ export namespace Doc { } export function linkFollowUnhighlight() { clearTimeout(UnhighlightTimer); - UnhighlightTimer = 0; + UnhighlightTimer = undefined; UnhighlightWatchers.forEach(watcher => watcher()); UnhighlightWatchers.length = 0; highlightedDocs.forEach(doc => Doc.UnHighlightDoc(doc)); @@ -1258,10 +1272,7 @@ export namespace Doc { if (UnhighlightTimer) clearTimeout(UnhighlightTimer); const presTransition = Number(presentationEffect?.presentation_transition); const duration = isNaN(presTransition) ? 5000 : presTransition; - UnhighlightTimer = window.setTimeout(() => { - linkFollowUnhighlight(); - UnhighlightTimer = 0; - }, duration); + UnhighlightTimer = setTimeout(linkFollowUnhighlight, duration); } export const highlightedDocs = new ObservableSet(); @@ -1319,7 +1330,7 @@ export namespace Doc { StrCast(doc.layout_fieldKey).split('_')[1] === 'icon' && setNativeView(doc); } - export function setNativeView(doc: any) { + export function setNativeView(doc: Doc) { const prevLayout = StrCast(doc.layout_fieldKey).split('_')[1]; const deiconify = prevLayout === 'icon' && StrCast(doc.deiconifyLayout) ? 'layout_' + StrCast(doc.deiconifyLayout) : ''; prevLayout === 'icon' && (doc.deiconifyLayout = undefined); @@ -1356,15 +1367,15 @@ export namespace Doc { // filters document in a container collection: // all documents with the specified value for the specified key are included/excluded // based on the modifiers :"check", "x", undefined - export function setDocFilter(container: Opt, key: string, value: any, modifiers: 'remove' | 'match' | 'check' | 'x' | 'exists' | 'unset', toggle?: boolean, fieldPrefix?: string, append: boolean = true) { + export function setDocFilter(container: Opt, key: string, value: FieldType | undefined, modifiers: 'remove' | 'match' | 'check' | 'x' | 'exists' | 'unset', toggle?: boolean, fieldPrefix?: string, append: boolean = true) { if (!container) return; const filterField = '_' + (fieldPrefix ? fieldPrefix + '_' : '') + 'childFilters'; const childFilters = StrListCast(container[filterField]); runInAction(() => { for (let i = 0; i < childFilters.length; i++) { const fields = childFilters[i].split(FilterSep); // split key:value:modifier - if (fields[0] === key && (fields[1] === value.toString() || modifiers === 'match' || (fields[2] === 'match' && modifiers === 'remove'))) { - if (fields[2] === modifiers && modifiers && fields[1] === value.toString()) { + if (fields[0] === key && (fields[1] === value?.toString() || modifiers === 'match' || (fields[2] === 'match' && modifiers === 'remove'))) { + if (fields[2] === modifiers && modifiers && fields[1] === value?.toString()) { // eslint-disable-next-line no-param-reassign if (toggle) modifiers = 'remove'; else return; @@ -1393,7 +1404,7 @@ export namespace Doc { return undefined; } export function assignDocToField(doc: Doc, field: string, id: string) { - DocServer.GetRefField(id).then(layout => { + DocServer.GetRefField(id)?.then(layout => { layout instanceof Doc && (doc[field] = layout); }); return id; @@ -1460,7 +1471,6 @@ export namespace Doc { case DocumentType.BUTTON: return 'bolt'; case DocumentType.PRES: return 'route'; case DocumentType.SCRIPTING: return 'terminal'; - case DocumentType.IMPORT: return 'cloud-upload-alt'; case DocumentType.VID: return 'video'; case DocumentType.INK: return 'pen-nib'; case DocumentType.PDF: return 'file-pdf'; @@ -1494,7 +1504,7 @@ export namespace Doc { const doc = DocCast(await DocServer.GetRefField(json.id)); const links = await DocServer.GetRefFields(json.linkids as string[]); Array.from(Object.keys(links)) - .map(key => links[key]) + .map(key => links.get(key)) .forEach(link => link instanceof Doc && Doc.AddLink?.(link)); return doc; } @@ -1506,7 +1516,7 @@ export namespace Doc { const primitives = ['string', 'number', 'boolean']; export interface JsonConversionOpts { - data: any; + data: unknown; title?: string; appendToExisting?: { targetDoc: Doc; fieldKey?: string }; excludeEmptyObjects?: boolean; @@ -1561,7 +1571,7 @@ export namespace Doc { if (data === undefined || data === null || ![...primitives, 'object'].includes(typeof data)) { return undefined; } - let resolved: any; + let resolved: unknown; try { resolved = JSON.parse(typeof data === 'string' ? data : JSON.stringify(data)); } catch (e) { @@ -1569,7 +1579,7 @@ export namespace Doc { } let output: Opt; if (typeof resolved === 'object' && !(resolved instanceof Array)) { - output = convertObject(resolved, excludeEmptyObjects, title, appendToExisting?.targetDoc); + output = convertObject(resolved as { [key: string]: FieldType }, excludeEmptyObjects, title, appendToExisting?.targetDoc); } else { // give the proper types to the data extracted from the JSON const result = toField(resolved, excludeEmptyObjects); @@ -1590,7 +1600,7 @@ export namespace Doc { * @returns the object mapped from JSON to field values, where each mapping * might involve arbitrary recursion (since toField might itself call convertObject) */ - const convertObject = (object: any, excludeEmptyObjects: boolean, title?: string, target?: Doc): Opt => { + const convertObject = (object: { [key: string]: FieldType }, excludeEmptyObjects: boolean, title?: string, target?: Doc): Opt => { const hasEntries = Object.keys(object).length; if (hasEntries || !excludeEmptyObjects) { const resolved = target ?? new Doc(); @@ -1618,7 +1628,7 @@ export namespace Doc { * @returns the list mapped from JSON to field values, where each mapping * might involve arbitrary recursion (since toField might itself call convertList) */ - const convertList = (list: Array, excludeEmptyObjects: boolean): Opt> => { + const convertList = (list: Array, excludeEmptyObjects: boolean): Opt> => { const target = new List(); let result: Opt; // if excludeEmptyObjects is true, any qualifying conversions from toField will @@ -1633,15 +1643,15 @@ export namespace Doc { return undefined; }; - const toField = (data: any, excludeEmptyObjects: boolean, title?: string): Opt => { + const toField = (data: unknown, excludeEmptyObjects: boolean, title?: string): Opt => { if (data === null || data === undefined) { return undefined; } if (primitives.includes(typeof data)) { - return data; + return data as FieldType; } if (typeof data === 'object') { - return data instanceof Array ? convertList(data, excludeEmptyObjects) : convertObject(data, excludeEmptyObjects, title, undefined); + return data instanceof Array ? convertList(data, excludeEmptyObjects) : convertObject(data as { [key: string]: FieldType }, excludeEmptyObjects, title, undefined); } throw new Error(`How did ${data} of type ${typeof data} end up in JSON?`); }; @@ -1654,8 +1664,8 @@ export function RTFIsFragment(html: string) { export function GetHrefFromHTML(html: string): string { const parser = new DOMParser(); const parsedHtml = parser.parseFromString(html, 'text/html'); - if (parsedHtml.body.childNodes.length === 1 && parsedHtml.body.childNodes[0].childNodes.length === 1 && (parsedHtml.body.childNodes[0].childNodes[0] as any).href) { - return (parsedHtml.body.childNodes[0].childNodes[0] as any).href; + if (parsedHtml.body.childNodes.length === 1 && parsedHtml.body.childNodes[0].childNodes.length === 1 && (parsedHtml.body.childNodes[0].childNodes[0] as HTMLAnchorElement).href) { + return (parsedHtml.body.childNodes[0].childNodes[0] as HTMLAnchorElement).href; } return ''; } @@ -1675,35 +1685,35 @@ export function IdToDoc(id: string) { return DocCast(DocServer.GetCachedRefField(id)); } // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function idToDoc(id: string): any { +ScriptingGlobals.add(function idToDoc(id: string): Doc { return IdToDoc(id); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function renameEmbedding(doc: any) { +ScriptingGlobals.add(function renameEmbedding(doc: Doc) { return StrCast(doc[DocData].title).replace(/\([0-9]*\)/, '') + `(${doc.proto_embeddingId})`; }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function getProto(doc: any) { +ScriptingGlobals.add(function getProto(doc: Doc) { return Doc.GetProto(doc); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function getDocTemplate(doc?: any) { +ScriptingGlobals.add(function getDocTemplate(doc?: Doc) { return Doc.getDocTemplate(doc); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function getEmbedding(doc: any) { +ScriptingGlobals.add(function getEmbedding(doc: Doc) { return Doc.MakeEmbedding(doc); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function getCopy(doc: any, copyProto: any) { +ScriptingGlobals.add(function getCopy(doc: Doc, copyProto: boolean) { return doc.isTemplateDoc ? Doc.MakeDelegateWithProto(doc) : Doc.MakeCopy(doc, copyProto); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function copyField(field: any) { +ScriptingGlobals.add(function copyField(field: FieldResult) { return Field.Copy(field); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function docList(field: any) { +ScriptingGlobals.add(function docList(field: FieldResult) { return DocListCast(field); }); // eslint-disable-next-line prefer-arrow-callback @@ -1711,11 +1721,11 @@ ScriptingGlobals.add(function addDocToList(doc: Doc, field: string, added: Doc) return Doc.AddDocToList(doc, field, added); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function setInPlace(doc: any, field: any, value: any) { +ScriptingGlobals.add(function setInPlace(doc: Doc, field: string, value: string) { return Doc.SetInPlace(doc, field, value, false); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function sameDocs(doc1: any, doc2: any) { +ScriptingGlobals.add(function sameDocs(doc1: Doc, doc2: Doc) { return Doc.AreProtosEqual(doc1, doc2); }); // eslint-disable-next-line prefer-arrow-callback @@ -1723,7 +1733,7 @@ ScriptingGlobals.add(function assignDoc(doc: Doc, field: string, id: string) { return Doc.assignDocToField(doc, field, id); }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function docCastAsync(doc: FieldResult): any { +ScriptingGlobals.add(function docCastAsync(doc: FieldResult): FieldResult { return Cast(doc, Doc); }); // eslint-disable-next-line prefer-arrow-callback @@ -1732,7 +1742,7 @@ ScriptingGlobals.add(function activePresentationItem() { return curPres && DocListCast(curPres[Doc.LayoutFieldKey(curPres)])[NumCast(curPres._itemIndex)]; }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function setDocFilter(container: Doc, key: string, value: any, modifiers: 'match' | 'check' | 'x' | 'remove') { +ScriptingGlobals.add(function setDocFilter(container: Doc, key: string, value: string, modifiers: 'match' | 'check' | 'x' | 'remove') { Doc.setDocFilter(container, key, value, modifiers); }); // eslint-disable-next-line prefer-arrow-callback diff --git a/src/fields/List.ts b/src/fields/List.ts index 38c47d546..22bbcb9ab 100644 --- a/src/fields/List.ts +++ b/src/fields/List.ts @@ -2,33 +2,33 @@ import { action, computed, makeObservable, observable } from 'mobx'; import { alias, list as serializrList, serializable } from 'serializr'; import { ScriptingGlobals } from '../client/util/ScriptingGlobals'; import { Deserializable, afterDocDeserialize, autoObject } from '../client/util/SerializationHelper'; -import { Field, FieldType, StrListCast } from './Doc'; +import { Doc, Field, FieldType, ObjGetRefFields, StrListCast } from './Doc'; import { FieldTuples, Self, SelfProxy } from './DocSymbols'; import { Copy, FieldChanged, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; -import { ObjGetRefFields, ObjectField } from './ObjectField'; +import { ObjectField } from './ObjectField'; import { ProxyField } from './Proxy'; import { RefField } from './RefField'; import { containedFieldChangedHandler, deleteProperty, getter, setter } from './util'; function toObjectField(field: FieldType) { - return field instanceof RefField ? new ProxyField(field) : field; + return field instanceof Doc ? new ProxyField(field) : field; } -function toRealField(field: FieldType) { +function toRealField(field: FieldType | undefined) { return field instanceof ProxyField ? field.value : field; } -type StoredType = T extends RefField ? ProxyField : T; +type StoredType = T extends Doc ? ProxyField : T; export const ListFieldName = 'fields'; @Deserializable('list') -class ListImpl extends ObjectField { - static listHandlers: any = { +export class ListImpl extends ObjectField { + static listHandlers = { /// Mutator methods - copyWithin() { + copyWithin: function (this: ListImpl) { throw new Error('copyWithin not supported yet'); }, - fill(value: any, start?: number, end?: number) { + fill: function (this: ListImpl, value: FieldType, start?: number, end?: number) { if (value instanceof RefField) { throw new Error('fill with RefFields not supported yet'); } @@ -36,12 +36,12 @@ class ListImpl extends ObjectField { this[SelfProxy][FieldChanged]?.(); return res; }, - pop(): any { + pop: function (this: ListImpl): FieldType { const field = toRealField(this[Self].__fieldTuples.pop()); this[SelfProxy][FieldChanged]?.(); return field; }, - push: action(function (this: ListImpl, ...itemsIn: any[]) { + push: action(function (this: ListImpl, ...itemsIn: FieldType[]) { const items = itemsIn.map(toObjectField); const list = this[Self]; @@ -58,27 +58,27 @@ class ListImpl extends ObjectField { this[SelfProxy][FieldChanged]?.({ op: '$addToSet', items, length: length + items.length }); return res; }), - reverse() { + reverse: function (this: ListImpl) { const res = this[Self].__fieldTuples.reverse(); this[SelfProxy][FieldChanged]?.(); return res; }, - shift() { + shift: function (this: ListImpl) { const res = toRealField(this[Self].__fieldTuples.shift()); this[SelfProxy][FieldChanged]?.(); return res; }, - sort(cmpFunc: any) { + sort: function (this: ListImpl, cmpFunc: (first: FieldType | undefined, second: FieldType | undefined) => number) { this[Self].__realFields; // coerce retrieving entire array - const res = this[Self].__fieldTuples.sort(cmpFunc ? (first: any, second: any) => cmpFunc(toRealField(first), toRealField(second)) : undefined); + const res = this[Self].__fieldTuples.sort(cmpFunc ? (first: FieldType, second: FieldType) => cmpFunc(toRealField(first), toRealField(second)) : undefined); this[SelfProxy][FieldChanged]?.(); return res; }, - splice: action(function (this: any, start: number, deleteCount: number, ...itemsIn: any[]) { + splice: action(function (this: ListImpl, start: number, deleteCount: number, ...itemsIn: FieldType[]) { this[Self].__realFields; // coerce retrieving entire array const items = itemsIn.map(toObjectField); const list = this[Self]; - const removed = list.__fieldTuples.filter((item: any, i: number) => i >= start && i < start + deleteCount); + const removed = list.__fieldTuples.filter((item: FieldType, i: number) => i >= start && i < start + deleteCount); for (let i = 0; i < items.length; i++) { const item = items[i]; // TODO Error checking to make sure parent doesn't already exist @@ -88,7 +88,7 @@ class ListImpl extends ObjectField { item[FieldChanged] = containedFieldChangedHandler(this, i + start, item); } } - const hintArray: { val: any; index: number }[] = []; + const hintArray: { val: FieldType; index: number }[] = []; for (let i = start; i < start + deleteCount; i++) { hintArray.push({ val: list.__fieldTuples[i], index: i }); } @@ -104,7 +104,7 @@ class ListImpl extends ObjectField { ); return res.map(toRealField); }), - unshift(...itemsIn: any[]) { + unshift: function (this: ListImpl, ...itemsIn: FieldType[]) { const items = itemsIn.map(toObjectField); const list = this[Self]; for (let i = 0; i < items.length; i++) { @@ -121,108 +121,108 @@ class ListImpl extends ObjectField { return res; }, /// Accessor methods - concat: action(function (this: any, ...items: any[]) { + concat: action(function (this: ListImpl, ...items: FieldType[]) { this[Self].__realFields; return this[Self].__fieldTuples.map(toRealField).concat(...items); }), - includes(valueToFind: any, fromIndex: number) { + includes: function (this: ListImpl, valueToFind: FieldType, fromIndex: number) { if (valueToFind instanceof RefField) { return this[Self].__realFields.includes(valueToFind, fromIndex); } return this[Self].__fieldTuples.includes(valueToFind, fromIndex); }, - indexOf(valueToFind: any, fromIndex: number) { + indexOf: function (this: ListImpl, valueToFind: FieldType, fromIndex: number) { if (valueToFind instanceof RefField) { return this[Self].__realFields.indexOf(valueToFind, fromIndex); } return this[Self].__fieldTuples.indexOf(valueToFind, fromIndex); }, - join(separator: any) { + join: function (this: ListImpl, separator: string) { this[Self].__realFields; return this[Self].__fieldTuples.map(toRealField).join(separator); }, - lastElement() { + lastElement: function (this: ListImpl) { return this[Self].__realFields.lastElement(); }, - lastIndexOf(valueToFind: any, fromIndex: number) { + lastIndexOf: function (this: ListImpl, valueToFind: FieldType, fromIndex: number) { if (valueToFind instanceof RefField) { return this[Self].__realFields.lastIndexOf(valueToFind, fromIndex); } return this[Self].__fieldTuples.lastIndexOf(valueToFind, fromIndex); }, - slice(begin: number, end: number) { + slice: function (this: ListImpl, begin: number, end: number) { this[Self].__realFields; return this[Self].__fieldTuples.slice(begin, end).map(toRealField); }, /// Iteration methods - entries() { + entries: function (this: ListImpl) { return this[Self].__realFields.entries(); }, - every(callback: any, thisArg: any) { + every: function (this: ListImpl, callback: (value: FieldType, index: number, array: FieldType[]) => unknown, thisArg: unknown) { return this[Self].__realFields.every(callback, thisArg); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.every((element:any, index:number, array:any) => callback(toRealField(element), index, array), thisArg); }, - filter(callback: any, thisArg: any) { + filter: function (this: ListImpl, callback: (value: FieldType, index: number, array: FieldType[]) => FieldType[], thisArg: unknown) { return this[Self].__realFields.filter(callback, thisArg); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.filter((element:any, index:number, array:any) => callback(toRealField(element), index, array), thisArg); }, - find(callback: any, thisArg: any) { + find: function (this: ListImpl, callback: (value: FieldType, index: number, obj: FieldType[]) => FieldType, thisArg: unknown) { return this[Self].__realFields.find(callback, thisArg); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.find((element:any, index:number, array:any) => callback(toRealField(element), index, array), thisArg); }, - findIndex(callback: any, thisArg: any) { + findIndex: function (this: ListImpl, callback: (value: FieldType, index: number, obj: FieldType[]) => number, thisArg: unknown) { return this[Self].__realFields.findIndex(callback, thisArg); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.findIndex((element:any, index:number, array:any) => callback(toRealField(element), index, array), thisArg); }, - forEach(callback: any, thisArg: any) { + forEach: function (this: ListImpl, callback: (value: FieldType, index: number, array: FieldType[]) => void, thisArg: unknown) { return this[Self].__realFields.forEach(callback, thisArg); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.forEach((element:any, index:number, array:any) => callback(toRealField(element), index, array), thisArg); }, - map(callback: any, thisArg: any) { + map: function (this: ListImpl, callback: (value: FieldType, index: number, array: FieldType[]) => unknown, thisArg: unknown) { return this[Self].__realFields.map(callback, thisArg); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.map((element:any, index:number, array:any) => callback(toRealField(element), index, array), thisArg); }, - reduce(callback: any, initialValue: any) { + reduce: function (this: ListImpl, callback: (previousValue: unknown, currentValue: FieldType, currentIndex: number, array: FieldType[]) => unknown, initialValue: unknown) { return this[Self].__realFields.reduce(callback, initialValue); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.reduce((acc:any, element:any, index:number, array:any) => callback(acc, toRealField(element), index, array), initialValue); }, - reduceRight(callback: any, initialValue: any) { + reduceRight: function (this: ListImpl, callback: (previousValue: unknown, currentValue: FieldType, currentIndex: number, array: FieldType[]) => unknown, initialValue: unknown) { return this[Self].__realFields.reduceRight(callback, initialValue); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.reduceRight((acc:any, element:any, index:number, array:any) => callback(acc, toRealField(element), index, array), initialValue); }, - some(callback: any, thisArg: any) { + some: function (this: ListImpl, callback: (value: FieldType, index: number, array: FieldType[]) => boolean, thisArg: unknown) { return this[Self].__realFields.some(callback, thisArg); // TODO This is probably more efficient, but technically the callback can take the array, which would mean we would have to map the actual array anyway. // If we don't want to support the array parameter, we should use this version instead // return this[Self].__fieldTuples.some((element:any, index:number, array:any) => callback(toRealField(element), index, array), thisArg); }, - values() { + values: function (this: ListImpl) { return this[Self].__realFields.values(); }, - [Symbol.iterator]() { + [Symbol.iterator]: function (this: ListImpl) { return this[Self].__realFields.values(); }, }; - static listGetter(target: any, prop: string | symbol, receiver: any): any { + static listGetter(target: ListImpl, prop: string | symbol, receiver: ListImpl): unknown { if (Object.prototype.hasOwnProperty.call(ListImpl.listHandlers, prop)) { - return ListImpl.listHandlers[prop]; + return (ListImpl.listHandlers as { [key: string | symbol]: unknown })[prop]; } return getter(target, prop, receiver); } @@ -251,7 +251,7 @@ class ListImpl extends ObjectField { }, }); // eslint-disable-next-line no-use-before-define - this[SelfProxy] = list as any as List; // bcz: ugh .. don't know how to convince typesecript that list is a List + this[SelfProxy] = list as unknown as List; // bcz: ugh .. don't know how to convince typesecript that list is a List if (fields) { this[SelfProxy].push(...fields); } @@ -260,18 +260,20 @@ class ListImpl extends ObjectField { } [key: number]: T | (T extends RefField ? Promise : never); + [key2: symbol]: unknown; + [key3: string]: unknown; // this requests all ProxyFields at the same time to avoid the overhead // of separate network requests and separate updates to the React dom. @computed private get __realFields() { - const unrequested = this[FieldTuples].filter(f => f instanceof ProxyField && f.needsRequesting).map(f => f as ProxyField); + const unrequested = this[FieldTuples].filter(f => f instanceof ProxyField && f.needsRequesting).map(f => f as ProxyField); // if we find any ProxyFields that don't have a current value, then // start the server request for all of them if (unrequested.length) { const batchPromise = ObjGetRefFields(unrequested.map(p => p.fieldId)); // as soon as we get the fields from the server, set all the list values in one // action to generate one React dom update. - const allSetPromise = batchPromise.then(action(pfields => unrequested.map(toReq => toReq.setValue(pfields[toReq.fieldId])))); + const allSetPromise = batchPromise.then(action(pfields => unrequested.map(toReq => toReq.setValue(pfields.get(toReq.fieldId))))); // we also have to mark all lists items with this promise so that any calls to them // will await the batch request and return the requested field value. unrequested.forEach(p => p.setExternalValuePromise(allSetPromise)); @@ -280,11 +282,11 @@ class ListImpl extends ObjectField { } @serializable(alias(ListFieldName, serializrList(autoObject(), { afterDeserialize: afterDocDeserialize }))) - private get __fieldTuples() { + get __fieldTuples() { return this[FieldTuples]; } - private set __fieldTuples(value) { + set __fieldTuples(value) { this[FieldTuples] = value; Object.keys(value).forEach(key => { const item = value[Number(key)]; @@ -297,7 +299,7 @@ class ListImpl extends ObjectField { [Copy]() { const copiedData = this[Self].__fieldTuples.map(f => (f instanceof ObjectField ? f[Copy]() : f)); - const deepCopy = new ListImpl(copiedData as any); + const deepCopy = new ListImpl(copiedData as T[]); return deepCopy; } @@ -309,19 +311,19 @@ class ListImpl extends ObjectField { private [SelfProxy]: List; // also used in utils.ts even though it won't be found using find all references [ToScriptString]() { return `new List(${this[ToJavascriptString]()})`; } // prettier-ignore - [ToJavascriptString]() { return `[${(this as any).map((field: any) => Field.toScriptString(field))}]`; } // prettier-ignore - [ToString]() { return `[${(this as any).map((field: any) => Field.toString(field))}]`; } // prettier-ignore + [ToJavascriptString]() { return `[${(this[FieldTuples]).map(field => Field.toScriptString(field))}]`; } // prettier-ignore + [ToString]() { return `[${(this[FieldTuples]).map(field => Field.toString(field))}]`; } // prettier-ignore } // declare List as a type so you can use it in type declarations, e.g., { l: List, ...} export type List = ListImpl & (T | (T extends RefField ? Promise : never))[]; -// decalre List as a value so you can invoke 'new' on it, e.g., new List() +// decalre List as a value so you can invoke 'new' on it, e.g., new List() (since List IS ListImpl, we can safely cast the 'new' return value to return List) // eslint-disable-next-line no-redeclare -export const List: { new (fields?: T[]): List } = ListImpl as any; +export const List: { new (fields?: T[]): List } = ListImpl as unknown as { new (fields?: T[]): List }; ScriptingGlobals.add('List', List); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function compareLists(l1: any, l2: any) { +ScriptingGlobals.add(function compareLists(l1: List, l2: List) { const L1 = StrListCast(l1); const L2 = StrListCast(l2); return !L1 && !L2 ? true : L1 && L2 && L1.length === L2.length && L2.reduce((p, v) => p && L1.includes(v), true); diff --git a/src/fields/ObjectField.ts b/src/fields/ObjectField.ts index 231086262..21c4af608 100644 --- a/src/fields/ObjectField.ts +++ b/src/fields/ObjectField.ts @@ -2,13 +2,21 @@ import { ScriptingGlobals } from '../client/util/ScriptingGlobals'; import { Copy, FieldChanged, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; import { RefField } from './RefField'; +export type serverOpType = { + $set?: { [key: string]: unknown }; // + $unset?: { [key: string]: unknown }; + $remFromSet?: { [key: string]: unknown }; + $addToSet?: { [key: string]: unknown }; + length?: number; +}; export abstract class ObjectField { // prettier-ignore public [FieldChanged]?: (diff?: { op: '$addToSet' | '$remFromSet' | '$set'; // eslint-disable-next-line no-use-before-define items: FieldType[] | undefined; length: number | undefined; - hint?: any }, serverOp?: any) => void; + hint?: unknown }, + serverOp?: serverOpType) => void; // eslint-disable-next-line no-use-before-define public [Parent]?: RefField | ObjectField; abstract [Copy](): ObjectField; @@ -22,15 +30,4 @@ export abstract class ObjectField { } export type FieldType = number | string | boolean | ObjectField | RefField; // bcz: hack for now .. must match the type definition in Doc.ts .. put here to avoid import cycles -// eslint-disable-next-line import/no-mutable-exports -export let ObjGetRefField: (id: string, force?: boolean) => Promise; -// eslint-disable-next-line import/no-mutable-exports -export let ObjGetRefFields: (ids: string[]) => Promise<{ [id: string]: RefField | undefined }>; - -export function SetObjGetRefField(func: (id: string, force?: boolean) => Promise) { - ObjGetRefField = func; -} -export function SetObjGetRefFields(func: (ids: string[]) => Promise<{ [id: string]: RefField | undefined }>) { - ObjGetRefFields = func; -} ScriptingGlobals.add(ObjectField); diff --git a/src/fields/Proxy.ts b/src/fields/Proxy.ts index 83b5672b3..48c336e60 100644 --- a/src/fields/Proxy.ts +++ b/src/fields/Proxy.ts @@ -3,18 +3,19 @@ import { primitive, serializable } from 'serializr'; import { DocServer } from '../client/DocServer'; import { scriptingGlobal } from '../client/util/ScriptingGlobals'; import { Deserializable } from '../client/util/SerializationHelper'; -import { Field, FieldWaiting, Opt } from './Doc'; +import { Doc, Field, FieldWaiting, Opt } from './Doc'; import { Copy, Id, ToJavascriptString, ToScriptString, ToString, ToValue } from './FieldSymbols'; import { ObjectField } from './ObjectField'; -import { RefField } from './RefField'; -function deserializeProxy(field: any) { +type serializedProxyType = { cache: { field: unknown; p: undefined | Promise }; fieldId: string }; + +function deserializeProxy(field: serializedProxyType) { if (!field.cache.field) { - field.cache = { field: DocServer.GetCachedRefField(field.fieldId) as any, p: undefined }; + field.cache = { field: DocServer.GetCachedRefField(field.fieldId), p: undefined }; } } -@Deserializable('proxy', deserializeProxy) -export class ProxyField extends ObjectField { +@Deserializable('proxy', (obj: unknown) => deserializeProxy(obj as serializedProxyType)) +export class ProxyField extends ObjectField { constructor(); constructor(value: T); constructor(fieldId: string); @@ -39,10 +40,10 @@ export class ProxyField extends ObjectField { } [ToJavascriptString]() { - return Field.toScriptString(this[ToValue]()?.value); + return Field.toScriptString(this[ToValue]()?.value as T); } [ToScriptString]() { - return Field.toScriptString(this[ToValue]()?.value); // not sure this is quite right since it doesn't recreate a proxy field, but better than 'invalid' ? + return Field.toScriptString(this[ToValue]()?.value as T); // not sure this is quite right since it doesn't recreate a proxy field, but better than 'invalid' ? } [ToString]() { return Field.toString(this[ToValue]()?.value); @@ -83,7 +84,7 @@ export class ProxyField extends ObjectField { return !!(!this.cache.field && !this.failed && !this._cache.p && !DocServer.GetCachedRefField(this.fieldId)); } - setExternalValuePromise(externalValuePromise: Promise) { + setExternalValuePromise(externalValuePromise: Promise) { this.cache.p = externalValuePromise.then(() => this.value) as FieldWaiting; } @action @@ -94,7 +95,7 @@ export class ProxyField extends ObjectField { } } -// eslint-disable-next-line no-redeclare +// eslint-disable-next-line no-redeclare, @typescript-eslint/no-namespace export namespace ProxyField { let useProxy = true; export function DisableProxyFields() { @@ -114,7 +115,7 @@ export namespace ProxyField { } } - export function toValue(value: any) { + export function toValue(value: { value: unknown }) { if (useProxy) { return { value: value.value }; } @@ -123,10 +124,10 @@ export namespace ProxyField { } // eslint-disable-next-line no-use-before-define -function prefetchValue(proxy: PrefetchProxy) { - return proxy.value as any; +function prefetchValue(proxy: PrefetchProxy) { + return proxy.value as Promise; } @scriptingGlobal -@Deserializable('prefetch_proxy', prefetchValue) -export class PrefetchProxy extends ProxyField {} +@Deserializable('prefetch_proxy', (obj:unknown) => prefetchValue(obj as PrefetchProxy)) +export class PrefetchProxy extends ProxyField {} diff --git a/src/fields/RefField.ts b/src/fields/RefField.ts index 1ce81368a..4ef2a6748 100644 --- a/src/fields/RefField.ts +++ b/src/fields/RefField.ts @@ -14,7 +14,7 @@ export abstract class RefField { this[Id] = this.__id; } - protected [HandleUpdate]?(diff: any): void | Promise; + protected [HandleUpdate]?(diff: unknown): void | Promise; abstract [ToJavascriptString](): string; abstract [ToScriptString](): string; diff --git a/src/fields/ScriptField.ts b/src/fields/ScriptField.ts index 8fe365ac2..582c09f29 100644 --- a/src/fields/ScriptField.ts +++ b/src/fields/ScriptField.ts @@ -1,15 +1,15 @@ import { action, makeObservable, observable } from 'mobx'; import { computedFn } from 'mobx-utils'; import { PropSchema, SKIP, createSimpleSchema, custom, map, object, primitive, serializable } from 'serializr'; -import { numberRange } from '../Utils'; +import { emptyFunction, numberRange } from '../Utils'; import { GPTCallType, gptAPICall } from '../client/apis/gpt/GPT'; import { CompileScript, CompiledScript, ScriptOptions, Transformer } from '../client/util/Scripting'; import { ScriptingGlobals, scriptingGlobal } from '../client/util/ScriptingGlobals'; import { Deserializable, autoObject } from '../client/util/SerializationHelper'; -import { Doc, Field, FieldType, FieldResult, Opt } from './Doc'; +import { Doc, Field, FieldType, FieldResult, ObjGetRefField, Opt } from './Doc'; import { Copy, FieldChanged, Id, ToJavascriptString, ToScriptString, ToString, ToValue } from './FieldSymbols'; import { List } from './List'; -import { ObjGetRefField, ObjectField } from './ObjectField'; +import { ObjectField } from './ObjectField'; import { Cast, StrCast } from './Types'; function optional(propSchema: PropSchema) { @@ -20,7 +20,7 @@ function optional(propSchema: PropSchema) { } return SKIP; }, - (jsonValue: any, context: any, oldValue: any, callback: (err: any, result: any) => void) => { + (jsonValue, context, oldValue, callback) => { if (jsonValue !== undefined) { return propSchema.deserializer(jsonValue, callback, context, oldValue); } @@ -63,7 +63,7 @@ function finalizeScript(scriptIn: ScriptField) { async function deserializeScript(scriptIn: ScriptField) { const script = scriptIn; if (script.captures) { - const captured: any = {}; + const captured: { [key: string]: undefined | string | number | boolean | Doc } = {}; (script.script.options as ScriptOptions).capturedVariables = captured; Promise.all( script.captures.map(async capture => { @@ -85,7 +85,7 @@ async function deserializeScript(scriptIn: ScriptField) { } @scriptingGlobal -@Deserializable('script', deserializeScript) +@Deserializable('script', (obj: unknown) => deserializeScript(obj as ScriptField)) export class ScriptField extends ObjectField { @serializable readonly rawscript: string | undefined; @@ -114,7 +114,7 @@ export class ScriptField extends ObjectField { const captured = script?.options?.capturedVariables; if (captured) { - this.captures = new List(Object.keys(captured).map(key => key + ':' + (captured[key] instanceof Doc ? 'ID->' + (captured[key] as Doc)[Id] : captured[key].toString()))); + this.captures = new List(Object.keys(captured).map(key => key + ':' + (captured[key] instanceof Doc ? 'ID->' + (captured[key] as Doc)[Id] : captured[key]?.toString()))); } this.rawscript = rawscript; this.setterscript = setterscript; @@ -186,7 +186,7 @@ export class ScriptField extends ObjectField { } @scriptingGlobal -@Deserializable('computed', deserializeScript) +@Deserializable('computed', (obj: unknown) => deserializeScript(obj as ComputedField)) export class ComputedField extends ScriptField { static undefined = '__undefined'; static useComputed = true; @@ -221,7 +221,7 @@ export class ComputedField extends ScriptField { _readOnly_: true, }, console.log - ).result + ).result as FieldResult )(); // prettier-ignore return this._lastComputedResult; }; @@ -239,7 +239,7 @@ export class ComputedField extends ScriptField { public static MakeInterpolatedNumber(fieldKey: string, interpolatorKey: string, doc: Doc, curTimecode: number, defaultVal: Opt) { if (!doc[`${fieldKey}_indexed`]) { - const flist = new List(numberRange(curTimecode + 1).map(() => undefined) as any as number[]); + const flist = new List(numberRange(curTimecode + 1).map(emptyFunction) as unknown as number[]); flist[curTimecode] = Cast(doc[fieldKey], 'number', null); doc[`${fieldKey}_indexed`] = flist; } @@ -249,7 +249,7 @@ export class ComputedField extends ScriptField { } public static MakeInterpolatedString(fieldKey: string, interpolatorKey: string, doc: Doc, curTimecode: number) { if (!doc[`${fieldKey}_`]) { - const flist = new List(numberRange(curTimecode + 1).map(() => undefined) as any as string[]); + const flist = new List(numberRange(curTimecode + 1).map(emptyFunction) as unknown as string[]); flist[curTimecode] = StrCast(doc[fieldKey]); doc[`${fieldKey}_indexed`] = flist; } @@ -260,7 +260,7 @@ export class ComputedField extends ScriptField { public static MakeInterpolatedDataField(fieldKey: string, interpolatorKey: string, doc: Doc, curTimecode: number) { if (doc[`${fieldKey}`] instanceof List) return undefined; if (!doc[`${fieldKey}_indexed`]) { - const flist = new List(numberRange(curTimecode + 1).map(() => undefined) as any as FieldType[]); + const flist = new List(numberRange(curTimecode + 1).map(emptyFunction) as unknown as FieldType[]); flist[curTimecode] = Field.Copy(doc[fieldKey]); doc[`${fieldKey}_indexed`] = flist; } @@ -278,7 +278,7 @@ export class ComputedField extends ScriptField { ScriptingGlobals.add( // eslint-disable-next-line prefer-arrow-callback - function setIndexVal(list: any[], index: number, value: any) { + function setIndexVal(list: FieldResult[], index: number, value: FieldType) { while (list.length <= index) list.push(undefined); list[index] = value; }, @@ -288,7 +288,7 @@ ScriptingGlobals.add( ScriptingGlobals.add( // eslint-disable-next-line prefer-arrow-callback - function getIndexVal(list: any[], index: number, defaultVal: Opt = undefined) { + function getIndexVal(list: unknown[], index: number, defaultVal: Opt = undefined) { return list?.reduce((p, x, i) => ((i <= index && x !== undefined) || p === undefined ? x : p), defaultVal); }, 'returns the value at a given index of a list', diff --git a/src/fields/util.ts b/src/fields/util.ts index a6499c3e3..69ece82a2 100644 --- a/src/fields/util.ts +++ b/src/fields/util.ts @@ -7,7 +7,7 @@ import { UndoManager } from '../client/util/UndoManager'; import { Doc, DocListCast, FieldType, FieldResult, HierarchyMapping, ReverseHierarchyMap, StrListCast, aclLevel, updateCachedAcls } from './Doc'; import { AclAdmin, AclAugment, AclEdit, AclPrivate, DirectLinks, DocAcl, DocData, DocLayout, FieldKeys, ForceServerWrite, Height, Initializing, SelfProxy, UpdatingFromServer, Width } from './DocSymbols'; import { FieldChanged, Id, Parent, ToValue } from './FieldSymbols'; -import { List } from './List'; +import { List, ListImpl } from './List'; import { ObjectField } from './ObjectField'; import { PrefetchProxy, ProxyField } from './Proxy'; import { RefField } from './RefField'; @@ -44,15 +44,23 @@ export function TraceMobx() { tracing && trace(); } -export const _propSetterCB = new Map void) | undefined>(); +export const _propSetterCB = new Map void) | undefined>(); -const _setterImpl = action((target: any, prop: string | symbol | number, valueIn: any, receiver: any): boolean => { +const _setterImpl = action((target: Doc | ListImpl, prop: string | symbol | number, valueIn: unknown, receiver: Doc | ListImpl): boolean => { + if (target instanceof ListImpl) { + if (typeof prop !== 'symbol' && +prop == prop) { + target[SelfProxy].splice(+prop, 1, valueIn as FieldType); + } else { + target[prop] = valueIn as FieldType; + } + return true; + } if (SerializationHelper.IsSerializing() || typeof prop === 'symbol') { - target[prop] = valueIn; + target[prop] = valueIn as FieldResult; return true; } - let value = valueIn?.[SelfProxy] ?? valueIn; // convert any Doc type values to Proxy's + let value = (valueIn as Doc | ListImpl)?.[SelfProxy] ?? valueIn; // convert any Doc type values to Proxy's const curValue = target.__fieldTuples[prop]; if (curValue === value || (curValue instanceof ProxyField && value instanceof RefField && curValue.fieldId === value[Id])) { @@ -60,7 +68,7 @@ const _setterImpl = action((target: any, prop: string | symbol | number, valueIn // curValue should get filled in with value if it isn't already filled in, in case we fetched the referenced field some other way return true; } - if (value instanceof RefField) { + if (value instanceof Doc) { value = new ProxyField(value); } @@ -77,7 +85,7 @@ const _setterImpl = action((target: any, prop: string | symbol | number, valueIn delete curValue[FieldChanged]; } - if (typeof prop === 'string' && _propSetterCB.has(prop)) _propSetterCB.get(prop)!(target[SelfProxy], value); + if (typeof prop === 'string' && _propSetterCB.has(prop)) _propSetterCB.get(prop)!(target[SelfProxy], value as FieldType); // eslint-disable-next-line no-use-before-define const effectiveAcl = GetEffectiveAcl(target); @@ -108,16 +116,17 @@ const _setterImpl = action((target: any, prop: string | symbol | number, valueIn (target as Doc|ObjectField)[FieldChanged]?.(undefined, { $unset: { ['fields.' + prop]: '' } }); else (target as Doc|ObjectField)[FieldChanged]?.(undefined, { $set: { ['fields.' + prop]: value instanceof ObjectField ? SerializationHelper.Serialize(value) :value}}); if (prop === 'author' || prop.toString().startsWith('acl_')) updateCachedAcls(target); - } else { + } else if (receiver instanceof Doc) { DocServer.registerDocWithCachedUpdate(receiver, prop as string, curValue); } !receiver[Initializing] && + receiver instanceof Doc && !StrListCast(receiver.undoIgnoreFields).includes(prop.toString()) && (!receiver[UpdatingFromServer] || receiver[ForceServerWrite]) && UndoManager.AddEvent( { redo: () => { - receiver[prop] = value; + receiver[prop] = value as FieldType; }, undo: () => { const wasUpdate = receiver[UpdatingFromServer]; @@ -137,7 +146,7 @@ const _setterImpl = action((target: any, prop: string | symbol | number, valueIn return true; }); -let _setter: (target: any, prop: string | symbol | number, value: any, receiver: any) => boolean = _setterImpl; +let _setter: (target: Doc | ListImpl, prop: string | symbol | number, value: FieldType | undefined, receiver: Doc | ListImpl) => boolean = _setterImpl; export function makeReadOnly() { _setter = _readOnlySetter; @@ -156,18 +165,18 @@ export function denormalizeEmail(email: string) { // return acl from cache or cache the acl and return. // eslint-disable-next-line no-use-before-define -const getEffectiveAclCache = computedFn((target: any, user?: string) => getEffectiveAcl(target, user), true); +const getEffectiveAclCache = computedFn((target: Doc | ListImpl, user?: string) => getEffectiveAcl(target, user), true); /** * Calculates the effective access right to a document for the current user. */ -export function GetEffectiveAcl(target: any, user?: string): symbol { +export function GetEffectiveAcl(target: Doc | ListImpl, user?: string): symbol { if (!target) return AclPrivate; if (target[UpdatingFromServer] || ClientUtils.CurrentUserEmail() === 'guest') return AclAdmin; return getEffectiveAclCache(target, user); // all changes received from the server must be processed as Admin. return this directly so that the acls aren't cached (UpdatingFromServer is not observable) } -export function GetPropAcl(target: any, prop: string | symbol | number) { +export function GetPropAcl(target: Doc | ListImpl, prop: string | symbol | number) { if (typeof prop === 'symbol' || target[UpdatingFromServer]) return AclAdmin; // requesting the UpdatingFromServer prop or AclSym must always go through to keep the local DB consistent if (prop && DocServer.IsPlaygroundField(prop.toString())) return AclEdit; // playground props are always editable return GetEffectiveAcl(target); @@ -182,7 +191,8 @@ export function GetCachedGroupByName(name: string) { export function SetCachedGroups(groups: string[]) { runInAction(() => cachedGroups.push(...groups)); } -function getEffectiveAcl(target: any, user?: string): symbol { +function getEffectiveAcl(target: Doc | ListImpl, user?: string): symbol { + if (target instanceof ListImpl) return AclAdmin; const targetAcls = target[DocAcl]; if (targetAcls?.acl_Me === AclAdmin || GetCachedGroupByName('Admin')) return AclAdmin; @@ -287,14 +297,14 @@ export function inheritParentAcls(parent: Doc, child: Doc, layoutOnly: boolean) * @param prop * @param propSetter */ -export function SetPropSetterCb(prop: string, propSetter: ((target: any, value: any) => void) | undefined) { +export function SetPropSetterCb(prop: string, propSetter: ((target: Doc, value: FieldType) => void) | undefined) { _propSetterCB.set(prop, propSetter); } // // target should be either a Doc or ListImpl. receiver should be a Proxy Or List. // -export function setter(target: any, inProp: string | symbol | number, value: any, receiver: any): boolean { +export function setter(target: ListImpl | Doc, inProp: string | symbol | number, value: unknown, receiver: Doc | ListImpl): boolean { if (!inProp) { console.log('WARNING: trying to set an empty property. This should be fixed. '); return false; @@ -303,12 +313,12 @@ export function setter(target: any, inProp: string | symbol | number, value: any const effectiveAcl = inProp === 'constructor' || typeof inProp === 'symbol' ? AclAdmin : GetPropAcl(target, prop); if (effectiveAcl !== AclEdit && effectiveAcl !== AclAugment && effectiveAcl !== AclAdmin) return true; // if you're trying to change an acl but don't have Admin access / you're trying to change it to something that isn't an acceptable acl, you can't - if (typeof prop === 'string' && prop.startsWith('acl_') && (effectiveAcl !== AclAdmin || ![...Object.values(SharingPermissions), undefined].includes(value))) return true; + if (typeof prop === 'string' && prop.startsWith('acl_') && (effectiveAcl !== AclAdmin || ![...Object.values(SharingPermissions), undefined].includes(value as SharingPermissions))) return true; if (typeof prop === 'string' && prop !== '__id' && prop !== '__fieldTuples' && prop.startsWith('_')) { if (!prop.startsWith('__')) prop = prop.substring(1); - if (target.__LAYOUT__) { - target.__LAYOUT__[prop] = value; + if (target.__LAYOUT__ instanceof Doc) { + target.__LAYOUT__[prop] = value as FieldResult; return true; } } @@ -317,10 +327,10 @@ export function setter(target: any, inProp: string | symbol | number, value: any return !!ScriptCast(target.__fieldTuples[prop])?.setterscript?.run({ self: target[SelfProxy], this: target[SelfProxy], value }).success; } } - return _setter(target, prop, value, receiver); + return _setter(target, prop, value as FieldType, receiver); } -function getFieldImpl(target: any, prop: string | number, proxy: any, ignoreProto: boolean = false): any { +function getFieldImpl(target: ListImpl | Doc, prop: string | number, proxy: ListImpl | Doc, ignoreProto: boolean = false): FieldType { const field = target.__fieldTuples[prop]; const value = field?.[ToValue]?.(proxy); // converts ComputedFields to values, or unpacks ProxyFields into Proxys if (value) return value.value; @@ -332,7 +342,7 @@ function getFieldImpl(target: any, prop: string | number, proxy: any, ignoreProt } return field; } -export function getter(target: any, prop: string | symbol, proxy: any): any { +export function getter(target: Doc | ListImpl, prop: string | symbol, proxy: ListImpl | Doc): unknown { // prettier-ignore switch (prop) { case 'then' : return undefined; @@ -352,19 +362,23 @@ export function getter(target: any, prop: string | symbol, proxy: any): any { } const layoutProp = prop.startsWith('_') ? prop.substring(1) : undefined; - if (layoutProp && target.__LAYOUT__) return target.__LAYOUT__[layoutProp]; + if (layoutProp && target.__LAYOUT__) return (target.__LAYOUT__ as Doc)[layoutProp]; return getFieldImpl(target, layoutProp ?? prop, proxy); } -export function getField(target: any, prop: string | number, ignoreProto: boolean = false): any { - return getFieldImpl(target, prop, target[SelfProxy], ignoreProto); +export function getField(target: ListImpl | Doc, prop: string | number, ignoreProto: boolean = false): unknown { + return getFieldImpl(target, prop, target[SelfProxy] as Doc, ignoreProto); } -export function deleteProperty(target: any, prop: string | number | symbol) { +export function deleteProperty(target: Doc | ListImpl, prop: string | number | symbol) { if (typeof prop === 'symbol') { delete target[prop]; } else { - target[SelfProxy][prop] = undefined; + if (target instanceof Doc) { + target[SelfProxy][prop] = undefined; + } else if (+prop == prop) { + target[SelfProxy].splice(+prop, 1); + } } return true; } @@ -378,39 +392,42 @@ export function deleteProperty(target: any, prop: string | number | symbol) { // were replaced. Based on this specification, an Undo event is setup that will save enough information about the ObjectField to be // able to undo and redo the partial change. // -export function containedFieldChangedHandler(container: List | Doc, prop: string | number, liveContainedField: ObjectField) { +export function containedFieldChangedHandler(container: ListImpl | Doc, prop: string | number, liveContainedField: ObjectField) { let lastValue: FieldResult = liveContainedField instanceof ObjectField ? ObjectField.MakeCopy(liveContainedField) : liveContainedField; - return (diff?: { op: '$addToSet' | '$remFromSet' | '$set'; items: FieldType[] | undefined; length: number | undefined; hint?: any } /* , dummyServerOp?: any */) => { + return (diff?: { op: '$addToSet' | '$remFromSet' | '$set'; items: (FieldType & { value?: FieldType })[] | undefined; length: number | undefined; hint?: unknown } /* , dummyServerOp?: any */) => { const serializeItems = () => ({ __type: 'list', fields: diff?.items?.map((item: FieldType) => SerializationHelper.Serialize(item)) }); // prettier-ignore const serverOp = diff?.op === '$addToSet' ? { $addToSet: { ['fields.' + prop]: serializeItems() }, length: diff.length } : diff?.op === '$remFromSet' ? { $remFromSet: { ['fields.' + prop]: serializeItems(), hint: diff.hint}, length: diff.length } - : { $set: { ['fields.' + prop]: liveContainedField ? SerializationHelper.Serialize(liveContainedField) : undefined } }; + : { $set: { ['fields.' + prop]: liveContainedField ? SerializationHelper.Serialize(liveContainedField) as FieldType : undefined } }; if (!(container instanceof Doc) || !container[UpdatingFromServer]) { - const prevValue = ObjectField.MakeCopy(lastValue as List); + const cont = container as { [key: string | number]: FieldType }; + const prevValue = ObjectField.MakeCopy(lastValue as List); lastValue = ObjectField.MakeCopy(liveContainedField); const newValue = ObjectField.MakeCopy(liveContainedField); if (diff?.op === '$addToSet') { UndoManager.AddEvent( { redo: () => { + const contList = cont[prop] as List; // console.log('redo $add: ' + prop, diff.items); // bcz: uncomment to log undo - (container as any)[prop as any]?.push(...((diff.items || [])?.map((item: any) => item.value ?? item) ?? [])); - lastValue = ObjectField.MakeCopy((container as any)[prop as any]); + contList?.push(...((diff.items || [])?.map(item => item.value ?? item) ?? [])); + lastValue = ObjectField.MakeCopy(contList); }, undo: action(() => { + const contList = cont[prop] as List; // console.log('undo $add: ' + prop, diff.items); // bcz: uncomment to log undo - diff.items?.forEach((item: any) => { + diff.items?.forEach(item => { const ind = item instanceof SchemaHeaderField // - ? (container as any)[prop as any]?.findIndex((ele: any) => ele instanceof SchemaHeaderField && ele.heading === item.heading) - : (container as any)[prop as any]?.indexOf(item.value ?? item); - ind !== undefined && ind !== -1 && (container as any)[prop as any]?.splice(ind, 1); + ? contList?.findIndex(ele => ele instanceof SchemaHeaderField && ele.heading === item.heading) + : contList?.indexOf(item.value ?? item); + ind !== undefined && ind !== -1 && (cont[prop] as List)?.splice(ind, 1); }); - lastValue = ObjectField.MakeCopy((container as any)[prop as any]); + lastValue = ObjectField.MakeCopy(contList); }), prop: 'add ' + (diff.items?.length ?? 0) + ' items to list', }, @@ -420,48 +437,53 @@ export function containedFieldChangedHandler(container: List | Doc, p UndoManager.AddEvent( { redo: action(() => { + const contList = cont[prop] as List; // console.log('redo $rem: ' + prop, diff.items); // bcz: uncomment to log undo - diff.items?.forEach((item: any) => { + diff.items?.forEach(item => { const ind = item instanceof SchemaHeaderField // - ? (container as any)[prop as any]?.findIndex((ele: any) => ele instanceof SchemaHeaderField && ele.heading === item.heading) - : (container as any)[prop as any]?.indexOf(item.value ?? item); - ind !== undefined && ind !== -1 && (container as any)[prop as any]?.splice(ind, 1); + ? contList?.findIndex(ele => ele instanceof SchemaHeaderField && ele.heading === item.heading) + : contList?.indexOf(item.value ?? item); + ind !== undefined && ind !== -1 && contList?.splice(ind, 1); }); - lastValue = ObjectField.MakeCopy((container as any)[prop as any]); + lastValue = ObjectField.MakeCopy(contList); }), undo: () => { + const contList = cont[prop] as List; + const prevList = prevValue as List; // console.log('undo $rem: ' + prop, diff.items); // bcz: uncomment to log undo - diff.items?.forEach((item: any) => { + diff.items?.forEach(item => { if (item instanceof SchemaHeaderField) { - const ind = (prevValue as List).findIndex((ele: any) => ele instanceof SchemaHeaderField && ele.heading === item.heading); - ind !== -1 && (container as any)[prop as any].findIndex((ele: any) => ele instanceof SchemaHeaderField && ele.heading === item.heading) === -1 && (container as any)[prop as any].splice(ind, 0, item); + const ind = prevList.findIndex(ele => ele instanceof SchemaHeaderField && ele.heading === item.heading); + ind !== -1 && contList.findIndex(ele => ele instanceof SchemaHeaderField && ele.heading === item.heading) === -1 && contList.splice(ind, 0, item); } else { - const ind = (prevValue as List).indexOf(item.value ?? item); - ind !== -1 && (container as any)[prop as any].indexOf(item.value ?? item) === -1 && (container as any)[prop as any].splice(ind, 0, item); + const ind = prevList.indexOf(item.value ?? item); + ind !== -1 && contList.indexOf(item.value ?? item) === -1 && (cont[prop] as List).splice(ind, 0, item); } }); - lastValue = ObjectField.MakeCopy((container as any)[prop as any]); + lastValue = ObjectField.MakeCopy(contList); }, - prop: 'remove ' + (diff.items?.length ?? 0) + ' items from list(' + ((container as any)?.title ?? '') + ':' + prop + ')', + prop: 'remove ' + (diff.items?.length ?? 0) + ' items from list(' + (cont?.title ?? '') + ':' + prop + ')', }, diff?.items ); } else { const setFieldVal = (val: FieldType | undefined) => { - container instanceof Doc ? (container[prop as string] = val) : (container[prop as number] = val as FieldType); + container instanceof Doc ? (container[prop] = val) : (container[prop as number] = val as FieldType); }; UndoManager.AddEvent( { redo: () => { // console.log('redo list: ' + prop, fieldVal()); // bcz: uncomment to log undo - setFieldVal(newValue instanceof ObjectField ? ObjectField.MakeCopy(newValue) : undefined); - lastValue = ObjectField.MakeCopy((container as any)[prop as any]); + setFieldVal(ObjectField.MakeCopy(newValue)); + const containerProp = cont[prop]; + lastValue = containerProp instanceof ObjectField && ObjectField.MakeCopy(containerProp); }, undo: () => { // console.log('undo list: ' + prop, fieldVal()); // bcz: uncomment to log undo - setFieldVal(prevValue instanceof ObjectField ? ObjectField.MakeCopy(prevValue) : undefined); - lastValue = ObjectField.MakeCopy((container as any)[prop as any]); + setFieldVal(ObjectField.MakeCopy(prevValue)); + const containerProp = cont[prop]; + lastValue = containerProp instanceof ObjectField && ObjectField.MakeCopy(containerProp); }, prop: 'set list field', }, diff --git a/src/mobile/ImageUpload.tsx b/src/mobile/ImageUpload.tsx index 7a1e35636..36c0d6a4d 100644 --- a/src/mobile/ImageUpload.tsx +++ b/src/mobile/ImageUpload.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, observable } from 'mobx'; import { observer } from 'mobx-react'; @@ -16,6 +14,7 @@ import { listSpec } from '../fields/Schema'; import { Cast } from '../fields/Types'; import './ImageUpload.scss'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const { DFLT_IMAGE_NATIVE_DIM } = require('../client/views/global/globalCssVariables.module.scss'); // prettier-ignore export interface ImageUploadProps { diff --git a/src/mobile/MobileInterface.tsx b/src/mobile/MobileInterface.tsx index d8ba89fdb..4f37c45a8 100644 --- a/src/mobile/MobileInterface.tsx +++ b/src/mobile/MobileInterface.tsx @@ -265,7 +265,6 @@ export class MobileInterface extends React.Component { this._menuListView = this._homeDoc._type_collection === 'stacking' ? true : false; Doc.ActiveTool = InkTool.None; // ink should intially be set to none Doc.UserDoc().activeMobile = this._homeDoc; // active mobile set to home - AudioBox.Enabled = true; // remove double click to avoid mobile zoom in document.removeEventListener('dblclick', this.onReactDoubleClick); diff --git a/src/pen-gestures/GestureUtils.ts b/src/pen-gestures/GestureUtils.ts index 28323d62f..bf5475042 100644 --- a/src/pen-gestures/GestureUtils.ts +++ b/src/pen-gestures/GestureUtils.ts @@ -2,14 +2,15 @@ import { Rect } from 'react-measure'; import { Gestures, PointData } from './GestureTypes'; import { NDollarRecognizer } from './ndollar'; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace GestureUtils { export class GestureEvent { readonly gesture: Gestures; readonly points: PointData[]; readonly bounds: Rect; - readonly text?: any; + readonly text?: string; - constructor(gesture: Gestures, points: PointData[], bounds: Rect, text?: any) { + constructor(gesture: Gestures, points: PointData[], bounds: Rect, text?: string) { this.gesture = gesture; this.points = points; this.bounds = bounds; diff --git a/src/server/ApiManagers/GooglePhotosManager.ts b/src/server/ApiManagers/GooglePhotosManager.ts index 5feb25fd4..0970dee81 100644 --- a/src/server/ApiManagers/GooglePhotosManager.ts +++ b/src/server/ApiManagers/GooglePhotosManager.ts @@ -139,13 +139,13 @@ // const completed: Opt[] = []; // for (const { baseUrl } of mediaItems) { // // start by getting the content size of the remote image -// const results = await DashUploadUtils.InspectImage(baseUrl); -// if (results instanceof Error) { +// const result = await DashUploadUtils.InspectImage(baseUrl); +// if (result instanceof Error) { // // if something went wrong here, we can't hope to upload it, so just move on to the next // failed++; // continue; // } -// const { contentSize, ...attributes } = results; +// const { contentSize, ...attributes } = result; // // check to see if we have uploaded a Google user content image *specifically via this route* already // // that has this exact content size // const found: Opt = await Database.Auxiliary.QueryUploadHistory(contentSize); diff --git a/src/server/ApiManagers/UploadManager.ts b/src/server/ApiManagers/UploadManager.ts index 4cb3d8baf..b2624f654 100644 --- a/src/server/ApiManagers/UploadManager.ts +++ b/src/server/ApiManagers/UploadManager.ts @@ -144,7 +144,7 @@ export default class UploadManager extends ApiManager { ids[id] = uuid.v4(); return ids[id]; }; - const mapFn = (docIn: any) => { + const mapFn = (docIn: { id: string; fields: any[] }) => { const doc = docIn; if (doc.id) { doc.id = getId(doc.id); @@ -170,10 +170,10 @@ export default class UploadManager extends ApiManager { mapFn(field); } else if (typeof field === 'string') { const re = /("(?:dataD|d)ocumentId"\s*:\s*")([\w-]*)"/g; - doc.fields[key] = (field as any).replace(re, (match: any, p1: string, p2: string) => `${p1}${getId(p2)}"`); + doc.fields[key] = field.replace(re, (match: string, p1: string, p2: string) => `${p1}${getId(p2)}"`); } else if (field.__type === 'RichTextField') { const re = /("href"\s*:\s*")(.*?)"/g; - field.Data = field.Data.replace(re, (match: any, p1: string, p2: string) => `${p1}${getId(p2)}"`); + field.Data = field.Data.replace(re, (match: string, p1: string, p2: string) => `${p1}${getId(p2)}"`); } } }; @@ -192,7 +192,7 @@ export default class UploadManager extends ApiManager { if (!f) continue; const path2 = f[0]; // what about the rest of the array? are we guaranteed only one value is set? const zip = new AdmZip(path2.filepath); - zip.getEntries().forEach((entry: any) => { + zip.getEntries().forEach(entry => { const entryName = entry.entryName.replace(/%%%/g, '/'); if (!entryName.startsWith('files/')) { return; @@ -245,7 +245,7 @@ export default class UploadManager extends ApiManager { } } SolrManager.update(); - res.send(JSON.stringify({ id, docids, linkids } || 'error')); + res.send(JSON.stringify({ id, docids, linkids }) || 'error'); } catch (e) { console.log(e); } @@ -282,8 +282,8 @@ export default class UploadManager extends ApiManager { const serverPath = serverPathToFile(Directory.images, ''); const regex = new RegExp(`${deleteFiles}.*`); fs.readdirSync(serverPath) - .filter((f: any) => regex.test(f)) - .map((f: any) => fs.unlinkSync(serverPath + f)); + .filter(f => regex.test(f)) + .map(f => fs.unlinkSync(serverPath + f)); } imageDataUri.outputFile(uri, serverPathToFile(Directory.images, InjectSize(filename, origSuffix))).then((savedName: string) => { const ext = path.extname(savedName).toLowerCase(); diff --git a/src/server/DashStats.ts b/src/server/DashStats.ts index 808d2c6f2..6b9fb8971 100644 --- a/src/server/DashStats.ts +++ b/src/server/DashStats.ts @@ -9,6 +9,7 @@ import { socketMap, timeMap, userOperations } from './SocketData'; * This includes time connected, number of operations, and * the rate of their operations */ +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DashStats { export const SAMPLING_INTERVAL = 1000; // in milliseconds (ms) - Time interval to update the frontend. export const RATE_INTERVAL = 10; // in seconds (s) - Used to calculate rate diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts index 08cea1de5..5e58db103 100644 --- a/src/server/DashUploadUtils.ts +++ b/src/server/DashUploadUtils.ts @@ -1,6 +1,7 @@ import axios from 'axios'; +import { spawn, exec } from 'child_process'; import { green, red } from 'colors'; -import { ExifImage } from 'exif'; +import { ExifData, ExifImage } from 'exif'; import * as exifr from 'exifr'; import * as ffmpeg from 'fluent-ffmpeg'; import * as formidable from 'formidable'; @@ -18,13 +19,11 @@ import { Duplex, Stream } from 'stream'; import { Utils } from '../Utils'; import { createIfNotExists } from './ActionUtilities'; import { AzureManager } from './ApiManagers/AzureManager'; -import { ParsedPDF } from './PdfTypes'; import { AcceptableMedia, Upload } from './SharedMediaTypes'; import { Directory, clientPathToFile, filesDirectory, pathToDirectory, publicDirectory, serverPathToFile } from './SocketData'; import { resolvedServerUrl } from './server_Initialization'; -const { spawn } = require('child_process'); -const { exec } = require('child_process'); +// eslint-disable-next-line @typescript-eslint/no-var-requires const requestImageSize = require('../client/util/request-image-size'); export enum SizeSuffix { @@ -48,6 +47,7 @@ function usingAzure() { return process.env.USE_AZURE === 'true'; } +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DashUploadUtils { export interface Size { width: number; @@ -111,7 +111,7 @@ export namespace DashUploadUtils { // .outputOptions('-c copy') // .videoCodec("copy") .save(outputFilePath) - .on('error', (err: any) => { + .on('error', err => { console.log(err); reject(); }) @@ -130,8 +130,8 @@ export namespace DashUploadUtils { } function resolveExistingFile(name: string, pat: string, directory: Directory, mimetype?: string | null, duration?: number, rawText?: string): Upload.FileResponse { - const data = { size: 0, filepath: pat, name, type: mimetype ?? '', originalFilename: name, newFilename: path.basename(pat), mimetype: mimetype || null, hashAlgorithm: false as any }; - const file = { ...data, toJSON: () => ({ ...data, length: 0, filename: data.filepath.replace(/.*\//, ''), mtime: new Date(), mimetype: mimetype || null, toJson: () => undefined as any }) }; + const data = { size: 0, filepath: pat, name, type: mimetype ?? '', originalFilename: name, newFilename: path.basename(pat), mimetype: mimetype || null, hashAlgorithm: false as falsetype }; + const file = { ...data, toJSON: () => ({ ...data, length: 0, filename: data.filepath.replace(/.*\//, ''), mtime: new Date(), mimetype: mimetype || null }) }; return { source: file || null, result: { @@ -184,11 +184,10 @@ export namespace DashUploadUtils { const parseExifData = async (source: string) => { const image = await request.get(source, { encoding: null }); - const { /* data, */ error } = await new Promise<{ data: any; error: any }>(resolve => { + const { /* data, */ error } = await new Promise<{ data: ExifData; error: string | undefined }>(resolve => { // eslint-disable-next-line no-new new ExifImage({ image }, (exifError, data) => { - const reason = (exifError as any)?.code; - resolve({ data, error: reason }); + resolve({ data, error: exifError?.message }); }); }); return error ? { data: undefined, error } : { data: await exifr.parse(image), error }; @@ -252,11 +251,12 @@ export namespace DashUploadUtils { }; // Use the request library to parse out file level image information in the headers - const { headers } = await new Promise((resolve, reject) => { - request.head(resolvedUrl, (error, res) => (error ? reject(error) : resolve(res))); + const headerResult = await new Promise<{ headers: { [key: string]: string } }>((resolve, reject) => { + request.head(resolvedUrl, (error, res) => (error ? reject(error) : resolve(res as { headers: { [key: string]: string } }))); }).catch(e => { console.log('Error processing headers: ', e); }); + const { headers } = headerResult !== null && typeof headerResult === 'object' ? headerResult : { headers: {} as { [key: string]: string } }; try { // Compute the native width and height ofthe image with an npm module @@ -272,9 +272,9 @@ export namespace DashUploadUtils { filename, ...results, }; - } catch (e: any) { + } catch (e: unknown) { console.log(e); - return e; + return new Error(e ? e.toString?.() : 'unkown error'); } }; @@ -331,7 +331,7 @@ export namespace DashUploadUtils { )); // prettier-ignore return Jimp.read(imgBuffer) - .then(async (imgIn: any) => { + .then(async imgIn => { let img = imgIn; await Promise.all( sizes.filter(({ width }) => width).map(({ width, suffix }) => { img = img.resize(width, Jimp.AUTO).write(outputPath(suffix)); @@ -339,7 +339,7 @@ export namespace DashUploadUtils { } )); // prettier-ignore return writtenFiles; }) - .catch((e: any) => { + .catch(e => { console.log('ERROR' + e); return writtenFiles; }); @@ -432,15 +432,17 @@ export namespace DashUploadUtils { * 4) the content type of the image, i.e. image/(jpeg | png | ...) */ export const UploadImage = async (source: string, filename?: string, prefix: string = ''): Promise => { - const metadata = await InspectImage(source); - if (metadata instanceof Error) { - return { name: metadata.name, message: metadata.message }; + const result = await InspectImage(source); + if (result instanceof Error) { + return { name: result.name, message: result.message }; } - const outputFile = filename || metadata.filename || ''; + const outputFile = filename || result.filename || ''; - return UploadInspectedImage(metadata, outputFile, prefix); + return UploadInspectedImage(result, outputFile, prefix); }; + type md5 = 'md5'; + type falsetype = false; export function uploadYoutube(videoId: string, overwriteId: string): Promise { return new Promise>(res => { const name = videoId; @@ -448,6 +450,7 @@ export namespace DashUploadUtils { const finalPath = serverPathToFile(Directory.videos, filepath); if (existsSync(finalPath)) { uploadProgress.set(overwriteId, 'computing duration'); + // eslint-disable-next-line @typescript-eslint/no-explicit-any exec(`yt-dlp -o ${finalPath} "https://www.youtube.com/watch?v=${videoId}" --get-duration`, (error: any, stdout: any /* , stderr: any */) => { const time = Array.from(stdout.trim().split(':')).reverse(); const duration = (time.length > 2 ? Number(time[2]) * 1000 * 60 : 0) + (time.length > 1 ? Number(time[1]) * 60 : 0) + (time.length > 0 ? Number(time[0]) : 0); @@ -457,14 +460,17 @@ export namespace DashUploadUtils { uploadProgress.set(overwriteId, 'starting download'); const ytdlp = spawn(`yt-dlp`, ['-o', filepath, `https://www.youtube.com/watch?v=${videoId}`, '--max-filesize', '100M', '-f', 'mp4']); + // eslint-disable-next-line @typescript-eslint/no-explicit-any ytdlp.stdout.on('data', (data: any) => uploadProgress.set(overwriteId, data.toString())); let errors = ''; + // eslint-disable-next-line @typescript-eslint/no-explicit-any ytdlp.stderr.on('data', (data: any) => { uploadProgress.set(overwriteId, 'error:' + data.toString()); errors = data.toString(); }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any ytdlp.on('exit', (code: any) => { if (code) { res({ @@ -484,8 +490,8 @@ export namespace DashUploadUtils { exec(`yt-dlp-o ${filepath} "https://www.youtube.com/watch?v=${videoId}" --get-duration`, (/* error: any, stdout: any, stderr: any */) => { // const time = Array.from(stdout.trim().split(':')).reverse(); // const duration = (time.length > 2 ? Number(time[2]) * 1000 * 60 : 0) + (time.length > 1 ? Number(time[1]) * 60 : 0) + (time.length > 0 ? Number(time[0]) : 0); - const data = { size: 0, filepath, name, mimetype: 'video', originalFilename: name, newFilename: name, hashAlgorithm: 'md5' as 'md5', type: 'video/mp4' }; - const file = { ...data, toJSON: () => ({ ...data, length: 0, filename: data.filepath.replace(/.*\//, ''), mtime: new Date(), toJson: () => undefined as any }) }; + const data = { size: 0, filepath, name, mimetype: 'video', originalFilename: name, newFilename: name, hashAlgorithm: 'md5' as md5, type: 'video/mp4' }; + const file = { ...data, toJSON: () => ({ ...data, length: 0, filename: data.filepath.replace(/.*\//, ''), mtime: new Date() }) }; MoveParsedFile(file, Directory.videos).then(output => res(output)); }); } @@ -517,15 +523,15 @@ export namespace DashUploadUtils { }); } const dataBuffer = readFileSync(file.filepath); - const result: ParsedPDF | any = await parse(dataBuffer).catch((e: any) => e); - if (!result.code) { + const result: parse.Result = await parse(dataBuffer).catch(e => e); + if (result) { await new Promise((resolve, reject) => { const writeStream = createWriteStream(serverPathToFile(Directory.text, textFilename)); writeStream.write(result?.text, error => (error ? reject(error) : resolve())); }); return MoveParsedFile(file, Directory.pdfs, undefined, result?.text, undefined, fileKey); } - return { source: file, result: { name: 'faile pdf pupload', message: `Could not upload (${file.originalFilename}).${result.message}` } }; + return { source: file, result: { name: 'faile pdf pupload', message: `Could not upload (${file.originalFilename}).${result}` } }; } async function UploadCsv(file: File) { @@ -563,7 +569,7 @@ export namespace DashUploadUtils { .videoCodec('copy') // this will copy the data instead of reencode it .save(vidFile.filepath.replace('.mkv', '.mp4')) .on('end', res) - .on('error', (e: any) => console.log(e)); + .on('error', console.log); }); vidFile.filepath = vidFile.filepath.replace('.mkv', '.mp4'); format = '.mp4'; @@ -571,8 +577,9 @@ export namespace DashUploadUtils { if (format.includes('quicktime')) { let abort = false; await new Promise(res => { - ffmpeg.ffprobe(vidFile.filepath, (err: any, metadata: any) => { - if (metadata.streams.some((stream: any) => stream.codec_name === 'hevc')) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ffmpeg.ffprobe(vidFile.filepath, (err: any, metadata: ffmpeg.FfprobeData) => { + if (metadata.streams.some(stream => stream.codec_name === 'hevc')) { abort = true; } res(); diff --git a/src/server/SharedMediaTypes.ts b/src/server/SharedMediaTypes.ts index 8ae13454e..680db9cd0 100644 --- a/src/server/SharedMediaTypes.ts +++ b/src/server/SharedMediaTypes.ts @@ -1,6 +1,7 @@ import { ExifData } from 'exif'; import { File } from 'formidable'; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace AcceptableMedia { export const gifs = ['.gif']; export const pngs = ['.png']; @@ -18,6 +19,7 @@ export enum AudioAnnoState { playing = 'playing', } +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace Upload { export function isImageInformation(uploadResponse: Upload.FileInformation): uploadResponse is Upload.ImageInformation { return 'nativeWidth' in uploadResponse; @@ -36,7 +38,7 @@ export namespace Upload { duration?: number; } export interface EnrichedExifData { - data: ExifData & ExifData['gps']; + data: ExifData & ExifData['gps'] & { Orientation?: string }; error?: string; } export interface InspectionResults { diff --git a/src/server/index.ts b/src/server/index.ts index 3151c2975..3e0d86814 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -29,7 +29,6 @@ import initializeServer from './server_Initialization'; dotenv.config(); export const onWindows = process.platform === 'win32'; -// eslint-disable-next-line import/no-mutable-exports export let sessionAgent: AppliedSessionAgent; /** diff --git a/src/server/websocket.ts b/src/server/websocket.ts index cece8a1b7..821607df5 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -16,12 +16,11 @@ import YoutubeApi from './apis/youtube/youtubeApiSample'; import { initializeGuest } from './authentication/DashUserModel'; import { Database } from './database'; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace WebSocket { let CurUser: string | undefined; - // eslint-disable-next-line import/no-mutable-exports export let _socket: Socket; - // eslint-disable-next-line import/no-mutable-exports - export let _disconnect: Function; + export let _disconnect: () => void; export const clients: { [key: string]: Client } = {}; function processGesturePoints(socket: Socket, content: GestureContent) { diff --git a/webpack.config.js b/webpack.config.js index 58df9a57d..9c74bf24e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,8 +1,7 @@ -/* eslint-disable node/no-unpublished-require */ +/* eslint-disable @typescript-eslint/no-var-requires */ const path = require('path'); const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); -// eslint-disable-next-line import/no-extraneous-dependencies // const ESLintPlugin = require('eslint-webpack-plugin'); // const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); const { parsed } = require('dotenv').config(); -- cgit v1.2.3-70-g09d2 From 762ac2bf354e4cc2c4b15f42502da939f5061646 Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 9 Aug 2024 16:48:18 -0400 Subject: a bunch more typing fixes. --- src/client/util/BranchingTrailManager.tsx | 14 +- src/client/util/reportManager/ReportManager.scss | 12 +- src/client/views/ContextMenu.scss | 37 ++--- src/client/views/ContextMenu.tsx | 32 ++-- src/client/views/ContextMenuItem.tsx | 180 ++++++--------------- src/client/views/DictationOverlay.tsx | 2 +- src/client/views/DocViewUtils.ts | 1 + src/client/views/DocumentButtonBar.tsx | 11 +- src/client/views/DocumentDecorations.tsx | 23 +-- src/client/views/EditableView.tsx | 26 +-- src/client/views/ExtractColors.ts | 2 +- src/client/views/FieldsDropdown.tsx | 8 +- src/client/views/GlobalKeyHandler.ts | 4 +- src/client/views/KeyphraseQueryView.scss | 8 - src/client/views/KeyphraseQueryView.tsx | 32 ---- src/client/views/MainViewModal.tsx | 2 - src/client/views/ObservableReactComponent.tsx | 14 +- src/client/views/PreviewCursor.tsx | 51 +++--- src/client/views/PropertiesButtons.tsx | 19 +-- .../views/PropertiesDocBacklinksSelector.tsx | 2 +- src/client/views/PropertiesDocContextSelector.tsx | 7 +- src/client/views/PropertiesSection.tsx | 4 +- src/client/views/PropertiesView.tsx | 102 ++++++------ src/client/views/SidebarAnnos.tsx | 10 +- src/client/views/StyleProvider.tsx | 11 +- src/client/views/TemplateMenu.tsx | 3 +- src/client/views/UndoStack.tsx | 2 - .../views/collections/CollectionCarouselView.tsx | 3 +- src/client/views/collections/CollectionMenu.tsx | 44 ++--- .../views/collections/CollectionTreeView.tsx | 4 +- src/client/views/collections/CollectionView.tsx | 12 +- src/client/views/global/globalScripts.ts | 32 ++-- src/client/views/linking/LinkMenu.tsx | 4 +- src/client/views/linking/LinkMenuGroup.tsx | 2 - src/client/views/linking/LinkMenuItem.tsx | 20 ++- src/client/views/nodes/DataVizBox/DataVizBox.tsx | 2 +- src/client/views/nodes/DocumentContentsView.tsx | 4 +- src/client/views/nodes/FunctionPlotBox.tsx | 20 +-- src/client/views/nodes/KeyValueBox.tsx | 3 +- src/client/views/nodes/KeyValuePair.tsx | 2 +- src/client/views/nodes/PDFBox.tsx | 6 +- .../views/nodes/formattedText/EquationView.tsx | 10 +- .../views/nodes/formattedText/FormattedTextBox.tsx | 6 +- 43 files changed, 333 insertions(+), 460 deletions(-) delete mode 100644 src/client/views/KeyphraseQueryView.scss delete mode 100644 src/client/views/KeyphraseQueryView.tsx (limited to 'src') diff --git a/src/client/util/BranchingTrailManager.tsx b/src/client/util/BranchingTrailManager.tsx index 119d103c5..65336812d 100644 --- a/src/client/util/BranchingTrailManager.tsx +++ b/src/client/util/BranchingTrailManager.tsx @@ -15,18 +15,18 @@ export class BranchingTrailManager extends React.Component { public static Instance: BranchingTrailManager; // stack of the history - @observable private slideHistoryStack: String[] = []; - @observable private containsSet: Set = new Set(); + @observable private slideHistoryStack: string[] = []; + @observable private containsSet: Set = new Set(); // docId to Doc map - @observable private docIdToDocMap: Map = new Map(); + @observable private docIdToDocMap: Map = new Map(); // prev pres to copmare with - @observable private prevPresId: String | null = null; - @action setPrevPres = action((newId: String | null) => { + @observable private prevPresId: string | null = null; + @action setPrevPres = action((newId: string | null) => { this.prevPresId = newId; }); - constructor(props: any) { + constructor(props: object) { super(props); makeObservable(this); if (!BranchingTrailManager.Instance) { @@ -48,7 +48,7 @@ export class BranchingTrailManager extends React.Component { // Doc.AddToMyOverlay(hi); }; - @action setSlideHistoryStack = action((newArr: String[]) => { + @action setSlideHistoryStack = action((newArr: string[]) => { this.slideHistoryStack = newArr; }); diff --git a/src/client/util/reportManager/ReportManager.scss b/src/client/util/reportManager/ReportManager.scss index d82d7fdeb..fd343ac8e 100644 --- a/src/client/util/reportManager/ReportManager.scss +++ b/src/client/util/reportManager/ReportManager.scss @@ -96,12 +96,12 @@ transition: all 0.2s ease; background: transparent; - &:hover { - // border-bottom-color: $text-gray; - } - &:focus { - // border-bottom-color: #4476f7; - } + // &:hover { + // // border-bottom-color: $text-gray; + // } + // &:focus { + // // border-bottom-color: #4476f7; + // } } // View issues diff --git a/src/client/views/ContextMenu.scss b/src/client/views/ContextMenu.scss index 232362c5c..4aaf2d03b 100644 --- a/src/client/views/ContextMenu.scss +++ b/src/client/views/ContextMenu.scss @@ -38,7 +38,12 @@ background: whitesmoke; } -.contextMenu-item { +.contextMenuItem-Selected { + background: lightgoldenrodyellow; + border-style: none; +} + +.contextMenuItem { // width: 11vw; //10vw height: 25px; //2vh display: flex; //comment out to allow search icon to be inline with search text @@ -59,7 +64,7 @@ text-transform: uppercase; padding-right: 30px; - .contextMenu-item-background { + .contextMenuItem-background { width: 100%; height: 100%; position: absolute; @@ -69,13 +74,7 @@ filter: opacity(0); } - &:hover { - .contextMenu-item-background { - filter: opacity(0.2) !important; - } - } - - .contextMenu-item-icon-background { + .contextMenuItem-icon { pointer-events: all; background-color: transparent; width: 35px; @@ -103,6 +102,8 @@ letter-spacing: 1px; text-transform: uppercase; padding-right: 30px; + align-items: center; + align-self: center; } .contextMenu-item:hover { @@ -115,11 +116,6 @@ cursor: pointer; } -.contextMenu-itemSelected { - background: lightgoldenrodyellow; - border-style: none; -} - .contextMenu-group { // width: 11vw; //10vw height: 30px; //2vh @@ -145,23 +141,24 @@ padding-left: 5px; } -.contextMenu-inlineMenu { - // border-top: solid 1px; //TODO:glr clean -} - .contextMenu-description { margin-left: 5px; text-align: left; display: inline; //need this? } -.search-icon { +.contextMenu-search { margin: 10px; + display: flex; + .contextMenu-searchIcon { + margin-right: 5px; + } } -.search { +.contextMenu-searchInput { margin-left: 10px; padding-left: 10px; border: solid black 1px; border-radius: 5px; + width: 100%; } diff --git a/src/client/views/ContextMenu.tsx b/src/client/views/ContextMenu.tsx index 05634f376..5edb5fc0d 100644 --- a/src/client/views/ContextMenu.tsx +++ b/src/client/views/ContextMenu.tsx @@ -8,7 +8,7 @@ import * as React from 'react'; import { DivHeight, DivWidth } from '../../ClientUtils'; import { SnappingManager } from '../util/SnappingManager'; import './ContextMenu.scss'; -import { ContextMenuItem, ContextMenuProps, OriginalMenuProps } from './ContextMenuItem'; +import { ContextMenuItem, ContextMenuProps } from './ContextMenuItem'; import { ObservableReactComponent } from './ObservableReactComponent'; @observer @@ -148,13 +148,13 @@ export class ContextMenu extends ObservableReactComponent<{ noexpand?: boolean } return wasOpen; }; - @computed get filteredItems(): (OriginalMenuProps | string[])[] { + @computed get filteredItems(): (ContextMenuProps | string[])[] { const searchString = this._searchString.toLowerCase().split(' '); const matches = (descriptions: string[]) => searchString.every(s => descriptions.some(desc => desc.toLowerCase().includes(s))); const flattenItems = (items: ContextMenuProps[], groupFunc: (groupName: string) => string[]) => { - let eles: (OriginalMenuProps | string[])[] = []; + let eles: (ContextMenuProps | string[])[] = []; - const leaves: OriginalMenuProps[] = []; + const leaves: ContextMenuProps[] = []; items.forEach(item => { const { description } = item; const path = groupFunc(description); @@ -165,7 +165,7 @@ export class ContextMenu extends ObservableReactComponent<{ noexpand?: boolean } eles = eles.concat(children); } } else if (matches(path)) { - leaves.push(item as OriginalMenuProps); + leaves.push(item as ContextMenuProps); } }); @@ -176,8 +176,8 @@ export class ContextMenu extends ObservableReactComponent<{ noexpand?: boolean } return flattenItems(this._items.slice(), name => [name]); } - @computed get flatItems(): OriginalMenuProps[] { - return this.filteredItems.filter(item => !Array.isArray(item)) as OriginalMenuProps[]; + @computed get flatItems(): ContextMenuProps[] { + return this.filteredItems.filter(item => !Array.isArray(item)) as ContextMenuProps[]; } @computed get menuItems() { @@ -228,21 +228,11 @@ export class ContextMenu extends ObservableReactComponent<{ noexpand?: boolean } color: SnappingManager.userColor, }}> {!this.itemsNeedSearch ? null : ( - - + + - + )} {this.menuItems} @@ -264,7 +254,7 @@ export class ContextMenu extends ObservableReactComponent<{ noexpand?: boolean } e.preventDefault(); } else if (e.key === 'Enter' || e.key === 'Tab') { const item = this.flatItems[this._selectedIndex]; - if (item) { + if (item.event) { item.event({ x: this.pageX, y: this.pageY }); } else { // if (this._searchString.startsWith(this._defaultPrefix)) { diff --git a/src/client/views/ContextMenuItem.tsx b/src/client/views/ContextMenuItem.tsx index 3b87ea58b..5b4eb704b 100644 --- a/src/client/views/ContextMenuItem.tsx +++ b/src/client/views/ContextMenuItem.tsx @@ -8,32 +8,27 @@ import { SnappingManager } from '../util/SnappingManager'; import { UndoManager } from '../util/UndoManager'; import { ObservableReactComponent } from './ObservableReactComponent'; -export interface OriginalMenuProps { +export interface ContextMenuProps { + icon: IconProp | JSX.Element; description: string; - event: (stuff?: unknown) => void; - undoable?: boolean; - noexpand?: boolean; - subitems?: ContextMenuProps[]; - icon: IconProp | JSX.Element; // maybe should be optional (icon?) - closeMenu?: () => void; -} - -export interface SubmenuProps { - description: string; - // eslint-disable-next-line no-use-before-define - subitems: ContextMenuProps[]; - noexpand?: boolean; addDivider?: boolean; - icon: IconProp; // maybe should be optional (icon?) closeMenu?: () => void; -} -export type ContextMenuProps = OriginalMenuProps | SubmenuProps; + subitems?: ContextMenuProps[]; + noexpand?: boolean; // whether to render the submenu items as a flyout from this item, or inline in place of this item + + undoable?: boolean; // whether to wrap the event callback in an UndoBatch or not + event?: (stuff?: unknown) => void; +} @observer export class ContextMenuItem extends ObservableReactComponent { - @observable private _items: Array = []; - @observable private overItem = false; + static readonly HOVER_TIMEOUT = 100; + _hoverTimeout?: NodeJS.Timeout; + _overPosY = 0; + _overPosX = 0; + @observable _items: ContextMenuProps[] = []; + @observable _overItem = false; constructor(props: ContextMenuProps & { selected?: boolean }) { super(props); @@ -41,132 +36,63 @@ export class ContextMenuItem extends ObservableReactComponent { - this._items.length = 0; - }); - if ((this._props as SubmenuProps)?.subitems) { - (this._props as SubmenuProps).subitems?.forEach(i => runInAction(() => this._items.push(i))); - } + runInAction(() => this._items.push(...(this._props.subitems ?? []))); } handleEvent = async (e: React.MouseEvent) => { - if ('event' in this._props) { + if (this._props.event) { this._props.closeMenu?.(); - const batch = this._props.undoable !== false ? UndoManager.StartBatch(`Click Menu item: ${this._props.description}`) : undefined; + const batch = this._props.undoable ? UndoManager.StartBatch(`Click Menu item: ${this._props.description}`) : undefined; await this._props.event({ x: e.clientX, y: e.clientY }); batch?.end(); } }; - currentTimeout?: NodeJS.Timeout | undefined; - static readonly timeout = 300; - _overPosY = 0; - _overPosX = 0; + setOverItem = (over: boolean) => { + this._hoverTimeout = setTimeout( action(() => { this._overItem = over; }), ContextMenuItem.HOVER_TIMEOUT ); // prettier-ignore + }; + onPointerEnter = (e: React.MouseEvent) => { - if (this.currentTimeout) { - clearTimeout(this.currentTimeout); - this.currentTimeout = undefined; - } - if (this.overItem) { - return; - } + this._hoverTimeout && clearTimeout(this._hoverTimeout); this._overPosY = e.clientY; this._overPosX = e.clientX; - this.currentTimeout = setTimeout( - action(() => { - this.overItem = true; - }), - ContextMenuItem.timeout - ); + !this._overItem && this.setOverItem(true); }; onPointerLeave = () => { - if (this.currentTimeout) { - clearTimeout(this.currentTimeout); - this.currentTimeout = undefined; - } - if (!this.overItem) { - return; - } - this.currentTimeout = setTimeout( - action(() => { - this.overItem = false; - }), - ContextMenuItem.timeout - ); + this._hoverTimeout && clearTimeout(this._hoverTimeout); + this._overItem && this.setOverItem(false); }; - isJSXElement(val: unknown): val is JSX.Element { - return React.isValidElement(val); - } + renderItem = (submenu: JSX.Element[]) => { + const alignItems = this._overPosY < window.innerHeight / 3 ? 'flex-start' : this._overPosY > (window.innerHeight * 2) / 3 ? 'flex-end' : 'center'; + const marginTop = this._overPosY < window.innerHeight / 3 ? '20px' : this._overPosY > (window.innerHeight * 2) / 3 ? '-20px' : ''; + const marginLeft = window.innerWidth - this._overPosX - 50 > 0 ? '90%' : '20%'; - render() { - if ('event' in this._props) { - return ( -
- {this._props.icon ? {this.isJSXElement(this._props.icon) ? this._props.icon : } : null} -
{this._props.description.replace(':', '')}
-
-
- ); - } - if ('subitems' in this._props) { - const where = !this.overItem ? '' : this._overPosY < window.innerHeight / 3 ? 'flex-start' : this._overPosY > (window.innerHeight * 2) / 3 ? 'flex-end' : 'center'; - const marginTop = !this.overItem ? '' : this._overPosY < window.innerHeight / 3 ? '20px' : this._overPosY > (window.innerHeight * 2) / 3 ? '-20px' : ''; + return ( +
+
+ + {React.isValidElement(this._props.icon) ? this._props.icon : this._props.icon ? : null} + +
{this._props.description}
+ {!submenu.length ? null : ( + !this._overItem ? + : ( +
+ {submenu} +
+ ) + )} +
+ ); // prettier-ignore + }; - // here - const submenu = !this.overItem ? null : ( -
0 ? '90%' : '20%', - marginTop, - background: SnappingManager.userBackgroundColor, - }}> - {this._items.map(prop => ( - - ))} -
- ); - if (!(this._props as SubmenuProps).noexpand) { - return ( -
- {this._items.map(prop => ( - - ))} -
- ); - } - return ( -
- {this._props.icon ? ( - - - - ) : null} -
- {this._props.description} - -
-
- {submenu} -
- ); - } - return null; + render() { + const submenu = this._items.map(prop => ); + return this.props.event || this._props.noexpand ? this.renderItem(submenu) :
{submenu}
; } } diff --git a/src/client/views/DictationOverlay.tsx b/src/client/views/DictationOverlay.tsx index b242acdba..e33049d3b 100644 --- a/src/client/views/DictationOverlay.tsx +++ b/src/client/views/DictationOverlay.tsx @@ -17,7 +17,7 @@ export class DictationOverlay extends React.Component { // eslint-disable-next-line react/no-unused-class-component-methods public hasActiveModal = false; - constructor(props: any) { + constructor(props: object) { super(props); makeObservable(this); DictationOverlay.Instance = this; diff --git a/src/client/views/DocViewUtils.ts b/src/client/views/DocViewUtils.ts index 1f5f29c7e..49a30aa08 100644 --- a/src/client/views/DocViewUtils.ts +++ b/src/client/views/DocViewUtils.ts @@ -6,6 +6,7 @@ import { Doc, SetActiveAudioLinker } from '../../fields/Doc'; import { DocUtils } from '../documents/DocUtils'; import { FieldViewProps } from './nodes/FieldView'; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DocViewUtils { export const ActiveRecordings: { props: FieldViewProps; getAnchor: (addAsAnnotation: boolean) => Doc }[] = []; diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index 487868169..b778a4fb9 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -1,6 +1,3 @@ -/* eslint-disable jsx-a11y/control-has-associated-label */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { IconLookup, IconProp } from '@fortawesome/fontawesome-svg-core'; import { faCalendarDays } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -20,7 +17,7 @@ import { DictationManager } from '../util/DictationManager'; import { DragManager } from '../util/DragManager'; import { dropActionType } from '../util/DropActionTypes'; import { SharingManager } from '../util/SharingManager'; -import { UndoManager, undoBatch } from '../util/UndoManager'; +import { UndoManager, undoable } from '../util/UndoManager'; import './DocumentButtonBar.scss'; import { ObservableReactComponent } from './ObservableReactComponent'; import { PinProps } from './PinFuncs'; @@ -33,12 +30,12 @@ import { OpenWhere } from './nodes/OpenWhere'; import { DashFieldView } from './nodes/formattedText/DashFieldView'; @observer -export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (DocumentView | undefined)[]; stack?: any }> { +export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (DocumentView | undefined)[]; stack?: unknown }> { private _dragRef = React.createRef(); // eslint-disable-next-line no-use-before-define public static Instance: DocumentButtonBar; - constructor(props: any) { + constructor(props: { views: () => (DocumentView | undefined)[]; stack?: unknown }) { super(props); makeObservable(this); DocumentButtonBar.Instance = this; @@ -83,7 +80,7 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (
this._props.views().map(view => view?.toggleFollowLink(undefined, false)))}> + onClick={undoable(() => this._props.views().map(view => view?.toggleFollowLink(undefined, false)), 'follow link')}>
{followBtn( true, diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 93c3e3338..68970223a 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -34,6 +34,7 @@ import { DocumentView } from './nodes/DocumentView'; import { ImageBox } from './nodes/ImageBox'; import { OpenWhere, OpenWhereMod } from './nodes/OpenWhere'; import { FormattedTextBox } from './nodes/formattedText/FormattedTextBox'; +import { IconProp } from '@fortawesome/fontawesome-svg-core'; interface DocumentDecorationsProps { PanelWidth: number; @@ -145,7 +146,7 @@ export class DocumentDecorations extends ObservableReactComponent { if (e.key === 'Enter') { e.stopPropagation(); - (e.target as any).blur(); + (e.target as HTMLElement).blur?.(); } }; @@ -239,7 +240,7 @@ export class DocumentDecorations extends ObservableReactComponent DragManager.StartWindowDrag?.(e, [DocumentView.SelectedDocs().lastElement()]) ?? false, emptyFunction, this.onMaximizeClick, false, false); e.stopPropagation(); }; - onMaximizeClick = (e: any): void => { + onMaximizeClick = (e: PointerEvent): void => { const selView = DocumentView.Selected()[0]; if (selView) { if (e.ctrlKey) { @@ -349,8 +350,10 @@ export class DocumentDecorations extends ObservableReactComponent // return false to keep getting events - this.setRotateCenter(seldocview, [this.rotCenter[0] + delta[0], this.rotCenter[1] + delta[1]]) as any as boolean, + (moveEv: PointerEvent, down: number[], delta: number[]) => { + this.setRotateCenter(seldocview, [this.rotCenter[0] + delta[0], this.rotCenter[1] + delta[1]]); + return false; + }, action(() => { this._isRotating = false; }), // upEvent action(() => { seldocview.Document._rotation_centerX = seldocview.Document._rotation_centerY = 0; }), true @@ -430,7 +433,7 @@ export class DocumentDecorations extends ObservableReactComponent this.resizeView(docView, refPt, scaleAspect, { dragHdl, ctrlKey:e.ctrlKey })); // prettier-ignore - await new Promise(res => { setTimeout(() => { res(this._interactionLock = undefined)})}); + await new Promise(res => { setTimeout(() => { res(this._interactionLock = undefined)})}); }); // prettier-ignore return false; @@ -681,10 +684,10 @@ export class DocumentDecorations extends ObservableReactComponent void), click: undefined | ((e: any) => void), title: string) => ( + const topBtn = (key: string, icon: IconProp, pointerDown: undefined | ((e: React.PointerEvent) => void), click: undefined | ((e: PointerEvent) => void), title: string) => ( {title}
} placement="top"> -
e.preventDefault()} onPointerDown={pointerDown ?? (e => setupMoveUpEvents(this, e, returnFalse, emptyFunction, clickEv => click!(clickEv)))}> - +
e.preventDefault()} onPointerDown={pointerDown ?? (e => setupMoveUpEvents(this, e, returnFalse, emptyFunction, clickEv => click?.(clickEv)))}> +
); diff --git a/src/client/views/EditableView.tsx b/src/client/views/EditableView.tsx index 684b948af..e02e39b8b 100644 --- a/src/client/views/EditableView.tsx +++ b/src/client/views/EditableView.tsx @@ -1,10 +1,7 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { action, IReactionDisposer, makeObservable, observable, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import * as Autosuggest from 'react-autosuggest'; -import { ObjectField } from '../../fields/ObjectField'; import './EditableView.scss'; import { DocumentIconContainer } from './nodes/DocumentIcon'; import { FieldView, FieldViewProps } from './nodes/FieldView'; @@ -29,7 +26,7 @@ export interface EditableProps { /** * The contents to render when not editing */ - contents: any; + contents: string; fieldContents?: FieldViewProps; fontStyle?: string; fontSize?: number; @@ -41,8 +38,8 @@ export interface EditableProps { autosuggestProps?: { resetValue: () => void; value: string; - onChange: (e: React.ChangeEvent, { newValue }: { newValue: string }) => void; - autosuggestProps: Autosuggest.AutosuggestProps; + onChange: (e: React.FormEvent, { newValue }: { newValue: string }) => void; + autosuggestProps: Autosuggest.AutosuggestProps; }; oneLine?: boolean; // whether to display the editable view as a single input line or as a textarea allowCRs?: boolean; // can carriage returns be entered @@ -112,8 +109,8 @@ export class EditableView extends ObservableReactComponent { } onChange = (e: React.ChangeEvent) => { - const targVal = (e.target as any).value; - if (!(targVal.startsWith(':=') || targVal.startsWith('='))) { + const targVal = (e.target as HTMLSelectElement).value; + if (!(targVal?.startsWith(':=') || targVal?.startsWith('='))) { this._overlayDisposer?.(); this._overlayDisposer = undefined; } else if (!this._overlayDisposer) { @@ -230,13 +227,11 @@ export class EditableView extends ObservableReactComponent { className: 'editableView-input', onKeyDown: this.onKeyDown, autoFocus: true, - // @ts-ignore - onBlur: e => this.finalizeEdit(e.currentTarget.value, false, true, false), + onBlur: e => this.finalizeEdit((e.currentTarget as HTMLSelectElement).value, false, true, false), onPointerDown: this.stopPropagation, onClick: this.stopPropagation, onPointerUp: this.stopPropagation, value: this._props.autosuggestProps.value, - // @ts-ignore onChange: this._props.autosuggestProps.onChange, }} /> @@ -248,7 +243,6 @@ export class EditableView extends ObservableReactComponent { placeholder={this._props.placeholder} onBlur={e => this.finalizeEdit(e.currentTarget.value, false, true, false)} defaultValue={this._props.GetValue()} - // eslint-disable-next-line jsx-a11y/no-autofocus autoFocus onChange={this.onChange} onKeyDown={this.onKeyDown} @@ -264,7 +258,6 @@ export class EditableView extends ObservableReactComponent { placeholder={this._props.placeholder} onBlur={e => this.finalizeEdit(e.currentTarget.value, false, true, false)} defaultValue={this._props.GetValue()} - // eslint-disable-next-line jsx-a11y/no-autofocus autoFocus onChange={this.onChange} onKeyDown={this.onKeyDown} @@ -288,7 +281,7 @@ export class EditableView extends ObservableReactComponent { ); } setTimeout(() => this._props.autosuggestProps?.resetValue()); - return this._props.contents instanceof ObjectField ? null : ( + return (
{ fontStyle: this._props.fontStyle, fontSize: this._props.fontSize, }}> - { - // eslint-disable-next-line react/jsx-props-no-spreading - this._props.fieldContents ? : this.props.contents ? this._props.contents?.valueOf() : '' - } + {this._props.fieldContents ? : this._props.contents ? this._props.contents?.valueOf() : ''}
); diff --git a/src/client/views/ExtractColors.ts b/src/client/views/ExtractColors.ts index f6928c52a..eee1d3a04 100644 --- a/src/client/views/ExtractColors.ts +++ b/src/client/views/ExtractColors.ts @@ -126,7 +126,7 @@ export class ExtractColors { let hue = 0; let saturation = 0; - let lightness = intensity; + const lightness = intensity; if (area !== 0) { saturation = area / (1 - Math.abs(2 * intensity - 1)); diff --git a/src/client/views/FieldsDropdown.tsx b/src/client/views/FieldsDropdown.tsx index 0ea0ebd83..407031b40 100644 --- a/src/client/views/FieldsDropdown.tsx +++ b/src/client/views/FieldsDropdown.tsx @@ -29,7 +29,7 @@ interface fieldsDropdownProps { @observer export class FieldsDropdown extends ObservableReactComponent { @observable _newField = ''; - constructor(props: any) { + constructor(props: fieldsDropdownProps) { super(props); makeObservable(this); } @@ -101,13 +101,13 @@ export class FieldsDropdown extends ObservableReactComponent this._props.selectFunc((val as any as { value: string; label: string }).value)} + onChange={val => this._props.selectFunc((val as { value: string; label: string }).value)} onKeyDown={e => { if (e.key === 'Enter') { runInAction(() => { - this._props.selectFunc((this._newField = (e.nativeEvent.target as any)?.value)); + this._props.selectFunc((this._newField = (e.nativeEvent.target as HTMLSelectElement)?.value)); }); } e.stopPropagation(); diff --git a/src/client/views/GlobalKeyHandler.ts b/src/client/views/GlobalKeyHandler.ts index 7d01bbabb..a85a03aab 100644 --- a/src/client/views/GlobalKeyHandler.ts +++ b/src/client/views/GlobalKeyHandler.ts @@ -56,7 +56,7 @@ export class KeyManager { window.addEventListener('keydown', KeyManager.Instance.handle); window.removeEventListener('keyup', KeyManager.Instance.unhandle); window.addEventListener('keyup', KeyManager.Instance.unhandle); - window.addEventListener('paste', KeyManager.Instance.paste as any); + window.addEventListener('paste', KeyManager.Instance.paste); } public unhandle = action((/* e: KeyboardEvent */) => { @@ -330,7 +330,7 @@ export class KeyManager { } break; case 'c': - if ((document.activeElement as any)?.type !== 'text' && !AnchorMenu.Instance.Active && DocumentDecorations.Instance.Bounds.r - DocumentDecorations.Instance.Bounds.x > 2) { + if (!AnchorMenu.Instance.Active && DocumentDecorations.Instance.Bounds.r - DocumentDecorations.Instance.Bounds.x > 2) { const bds = DocumentDecorations.Instance.Bounds; const pt = DocumentView.Selected()[0] .screenToViewTransform() diff --git a/src/client/views/KeyphraseQueryView.scss b/src/client/views/KeyphraseQueryView.scss deleted file mode 100644 index ac715e5e7..000000000 --- a/src/client/views/KeyphraseQueryView.scss +++ /dev/null @@ -1,8 +0,0 @@ -.fading { - animation: fanOut 1s -} - -@keyframes fanOut { - from {opacity: 0;} - to {opacity: 1;} -} \ No newline at end of file diff --git a/src/client/views/KeyphraseQueryView.tsx b/src/client/views/KeyphraseQueryView.tsx deleted file mode 100644 index 81f004010..000000000 --- a/src/client/views/KeyphraseQueryView.tsx +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint-disable jsx-a11y/label-has-associated-control */ -import { observer } from 'mobx-react'; -import * as React from 'react'; -import './KeyphraseQueryView.scss'; - -// tslint:disable-next-line: class-name -export interface KP_Props { - keyphrases: string; -} - -@observer -export class KeyphraseQueryView extends React.Component { - render() { - const keyterms = this.props.keyphrases.split(','); - return ( -
-
Select queries to send:
-
- {keyterms.map((kp: string) => ( - // return (

{"-" + kp}

); -

- -

- ))} -
-
- ); - } -} diff --git a/src/client/views/MainViewModal.tsx b/src/client/views/MainViewModal.tsx index a6dc5c62b..4a35805fb 100644 --- a/src/client/views/MainViewModal.tsx +++ b/src/client/views/MainViewModal.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable react/require-default-props */ import { isDark } from 'browndash-components'; import { observer } from 'mobx-react'; diff --git a/src/client/views/ObservableReactComponent.tsx b/src/client/views/ObservableReactComponent.tsx index 34da82b6c..bb7a07f0e 100644 --- a/src/client/views/ObservableReactComponent.tsx +++ b/src/client/views/ObservableReactComponent.tsx @@ -8,27 +8,27 @@ import JsxParser from 'react-jsx-parser'; * This is an abstract class that serves as the base for a PDF-style or Marquee-style * menu. To use this class, look at PDFMenu.tsx or MarqueeOptionsMenu.tsx for an example. */ -export abstract class ObservableReactComponent extends React.Component { +export abstract class ObservableReactComponent extends React.Component { @observable _props: React.PropsWithChildren; - constructor(props: any) { + constructor(props: React.PropsWithChildren) { super(props); this._props = props; makeObservable(this); } componentDidUpdate(prevProps: Readonly): void { Object.keys(prevProps) - .filter(pkey => (prevProps as any)[pkey] !== (this.props as any)[pkey]) + .filter(pkey => (prevProps as {[key:string]: unknown})[pkey] !== (this.props as {[key:string]: unknown})[pkey]) .forEach(action(pkey => { - (this._props as any)[pkey] = (this.props as any)[pkey]; + (this._props as {[key:string]: unknown})[pkey] = (this.props as {[key:string]: unknown})[pkey]; })); // prettier-ignore } } class ObserverJsxParser1 extends JsxParser { - constructor(props: any) { + constructor(props: object) { super(props); - observer(this as any); + observer(this as typeof JsxParser); } } -export const ObserverJsxParser: typeof JsxParser = ObserverJsxParser1 as any; +export const ObserverJsxParser = ObserverJsxParser1 as typeof JsxParser; diff --git a/src/client/views/PreviewCursor.tsx b/src/client/views/PreviewCursor.tsx index 034ade50b..7e597879d 100644 --- a/src/client/views/PreviewCursor.tsx +++ b/src/client/views/PreviewCursor.tsx @@ -7,13 +7,14 @@ import { Docs, DocumentOptions } from '../documents/Documents'; import { DocUtils } from '../documents/DocUtils'; import { ImageUtils } from '../util/Import & Export/ImageUtils'; import { Transform } from '../util/Transform'; -import { UndoManager, undoBatch } from '../util/UndoManager'; +import { UndoManager, undoable } from '../util/UndoManager'; import { ObservableReactComponent } from './ObservableReactComponent'; import './PreviewCursor.scss'; import { FormattedTextBox } from './nodes/formattedText/FormattedTextBox'; +import { StrCast } from '../../fields/Types'; @observer -export class PreviewCursor extends ObservableReactComponent<{}> { +export class PreviewCursor extends ObservableReactComponent { // eslint-disable-next-line no-use-before-define static _instance: PreviewCursor; public static get Instance() { @@ -29,7 +30,7 @@ export class PreviewCursor extends ObservableReactComponent<{}> { @observable _clickPoint: number[] = []; @observable public Visible = false; public Doc: Opt; - constructor(props: any) { + constructor(props: object) { super(props); makeObservable(this); PreviewCursor._instance = this; @@ -46,7 +47,7 @@ export class PreviewCursor extends ObservableReactComponent<{}> { }); // tests for URL and makes web document - const re: any = /^https?:\/\//g; + const re = /^https?:\/\//g; const plain = e.clipboardData.getData('text/plain'); if (plain && newPoint) { // tests for youtube and makes video document @@ -64,17 +65,19 @@ export class PreviewCursor extends ObservableReactComponent<{}> { } else if (re.test(plain)) { const url = plain; if (!url.startsWith(window.location.href)) { - undoBatch(() => - this._addDocument?.( - Docs.Create.WebDocument(url, { - title: url, - _width: 500, - _height: 300, - data_useCors: true, - x: newPoint[0], - y: newPoint[1], - }) - ) + undoable( + () => + this._addDocument?.( + Docs.Create.WebDocument(url, { + title: url, + _width: 500, + _height: 300, + data_useCors: true, + x: newPoint[0], + y: newPoint[1], + }) + ), + 'paste web doc' )(); } else alert('cannot paste dash into itself'); } else if (plain.startsWith('__DashDocId(') || plain.startsWith('__DashCloneId(')) { @@ -94,11 +97,11 @@ export class PreviewCursor extends ObservableReactComponent<{}> { } // pasting in images else if (e.clipboardData.getData('text/html') !== '' && e.clipboardData.getData('text/html').includes(' { + if (newPoint && arr) { + undoable(() => { const doc = Docs.Create.ImageDocument(arr[1], { _width: 300, title: arr[1], @@ -107,7 +110,7 @@ export class PreviewCursor extends ObservableReactComponent<{}> { }); ImageUtils.ExtractImgInfo(doc); this._addDocument?.(doc); - })(); + }, 'paste image doc')(); } } else if (e.clipboardData.items.length && newPoint) { const batch = UndoManager.StartBatch('collection view drop'); @@ -196,8 +199,12 @@ export class PreviewCursor extends ObservableReactComponent<{}> { } render() { return !this._clickPoint || !this.Visible ? null : ( - // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -
e?.focus()} style={{ color: lightOrDark(this.Doc?.backgroundColor ?? 'white'), transform: `translate(${this._clickPoint[0]}px, ${this._clickPoint[1]}px)` }}> +
e?.focus()} + style={{ color: lightOrDark(StrCast(this.Doc?.backgroundColor, 'white')), transform: `translate(${this._clickPoint[0]}px, ${this._clickPoint[1]}px)` }}> I
); diff --git a/src/client/views/PropertiesButtons.tsx b/src/client/views/PropertiesButtons.tsx index edf6df2b9..f346d4ba8 100644 --- a/src/client/views/PropertiesButtons.tsx +++ b/src/client/views/PropertiesButtons.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable react/no-unused-class-component-methods */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Dropdown, DropdownType, IListItemProps, Toggle, ToggleType, Type } from 'browndash-components'; @@ -18,7 +16,7 @@ import { TfiBarChart } from 'react-icons/tfi'; import { Doc, Opt } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { ScriptField } from '../../fields/ScriptField'; -import { BoolCast, ScriptCast } from '../../fields/Types'; +import { BoolCast, ScriptCast, StrCast } from '../../fields/Types'; import { ImageField } from '../../fields/URLField'; import { DocUtils, IsFollowLinkScript } from '../documents/DocUtils'; import { CollectionViewType, DocumentType } from '../documents/DocumentTypes'; @@ -32,7 +30,7 @@ import { OpenWhere } from './nodes/OpenWhere'; import { FormattedTextBox } from './nodes/formattedText/FormattedTextBox'; @observer -export class PropertiesButtons extends React.Component<{}, {}> { +export class PropertiesButtons extends React.Component { // eslint-disable-next-line no-use-before-define @observable public static Instance: PropertiesButtons; @@ -314,13 +312,6 @@ export class PropertiesButtons extends React.Component<{}, {}> { // ); // } - @undoBatch - handlePerspectiveChange = (e: any) => { - this.selectedDoc && (this.selectedDoc._type_collection = e.target.value); - DocumentView.Selected().forEach(docView => { - docView.layoutDoc._type_collection = e.target.value; - }); - }; @computed get onClickVal() { const linkButton = IsFollowLinkScript(this.selectedDoc.onClick); const followLoc = this.selectedDoc._followLinkLocation; @@ -452,7 +443,7 @@ export class PropertiesButtons extends React.Component<{}, {}> { else this.selectedDoc && DocUtils.makeCustomViewClicked(this.selectedDoc, undefined, 'onClick'); }; - propertyToggleBtn = (label: (on?: any) => string, property: string, tooltip: (on?: any) => string, icon: (on?: any) => any, onClick?: (dv: Opt, doc: Doc, property: string) => void, useUserDoc?: boolean) => { + propertyToggleBtn = (label: (on?: unknown) => string, property: string, tooltip: (on?: unknown) => string, icon: (on?: unknown) => unknown, onClick?: (dv: Opt, doc: Doc, property: string) => void, useUserDoc?: boolean) => { const targetDoc = useUserDoc ? Doc.UserDoc() : this.selectedLayoutDoc; const onPropToggle = (dv: Opt, doc: Doc, prop: string) => { (dv?.layoutDoc || doc)[prop] = !(dv?.layoutDoc || doc)[prop]; @@ -463,7 +454,7 @@ export class PropertiesButtons extends React.Component<{}, {}> { tooltip={tooltip(BoolCast(targetDoc[property]))} text={label(targetDoc?.[property])} color={SettingsManager.userColor} - icon={icon(targetDoc?.[property] as any)} + icon={icon(targetDoc?.[property]) as string} iconPlacement="left" align="flex-start" fillWidth @@ -484,7 +475,7 @@ export class PropertiesButtons extends React.Component<{}, {}> { const isImage = layoutField instanceof ImageField; const isMap = this.selectedDoc?.type === DocumentType.MAP; const isCollection = this.selectedDoc?.type === DocumentType.COL; - const isStacking = [CollectionViewType.Stacking, CollectionViewType.Masonry, CollectionViewType.NoteTaking].includes(this.selectedDoc?._type_collection as any); + const isStacking = [CollectionViewType.Stacking, CollectionViewType.Masonry, CollectionViewType.NoteTaking].includes(StrCast(this.selectedDoc?._type_collection) as CollectionViewType); const isFreeForm = this.selectedDoc?._type_collection === CollectionViewType.Freeform; const isTree = this.selectedDoc?._type_collection === CollectionViewType.Tree; const toggle = (ele: JSX.Element | null, style?: React.CSSProperties) => ( diff --git a/src/client/views/PropertiesDocBacklinksSelector.tsx b/src/client/views/PropertiesDocBacklinksSelector.tsx index edb55f341..e30d14eae 100644 --- a/src/client/views/PropertiesDocBacklinksSelector.tsx +++ b/src/client/views/PropertiesDocBacklinksSelector.tsx @@ -16,7 +16,7 @@ import { DocumentView } from './nodes/DocumentView'; type PropertiesDocBacklinksSelectorProps = { Document: Doc; - Stack?: any; + Stack?: string; hideTitle?: boolean; addDocTab(doc: Doc, location: OpenWhere): void; }; diff --git a/src/client/views/PropertiesDocContextSelector.tsx b/src/client/views/PropertiesDocContextSelector.tsx index 1fea36d16..f494ff16a 100644 --- a/src/client/views/PropertiesDocContextSelector.tsx +++ b/src/client/views/PropertiesDocContextSelector.tsx @@ -1,6 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -/* eslint-disable jsx-a11y/anchor-is-valid */ import { computed, makeObservable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -15,14 +12,14 @@ import { OpenWhere } from './nodes/OpenWhere'; type PropertiesDocContextSelectorProps = { DocView?: DocumentView; - Stack?: any; + Stack?: string; hideTitle?: boolean; addDocTab(doc: Doc, location: OpenWhere): void; }; @observer export class PropertiesDocContextSelector extends ObservableReactComponent { - constructor(props: any) { + constructor(props: PropertiesDocContextSelectorProps) { super(props); makeObservable(this); } diff --git a/src/client/views/PropertiesSection.tsx b/src/client/views/PropertiesSection.tsx index b9a587719..12a46c7a4 100644 --- a/src/client/views/PropertiesSection.tsx +++ b/src/client/views/PropertiesSection.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable react/require-default-props */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, computed } from 'mobx'; @@ -12,7 +10,7 @@ export interface PropertiesSectionProps { title: string; children?: JSX.Element | string | null; isOpen: boolean; - setIsOpen: (bool: boolean) => any; + setIsOpen: (bool: boolean) => void; onDoubleClick?: () => void; } diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx index 024db82a4..5952d6641 100644 --- a/src/client/views/PropertiesView.tsx +++ b/src/client/views/PropertiesView.tsx @@ -1,7 +1,4 @@ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable prettier/prettier */ -import { IconLookup } from '@fortawesome/fontawesome-svg-core'; +import { IconLookup, IconProp } from '@fortawesome/fontawesome-svg-core'; import { faAnchor, faArrowRight, faWindowMaximize } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Checkbox, Tooltip } from '@mui/material'; @@ -12,6 +9,7 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { ColorResult, SketchPicker } from 'react-color'; import * as Icons from 'react-icons/bs'; // {BsCollectionFill, BsFillFileEarmarkImageFill} from "react-icons/bs" +import ResizeObserver from 'resize-observer-polyfill'; import { ClientUtils, returnEmptyDoclist, returnEmptyFilter, returnEmptyString, returnFalse, returnTrue, setupMoveUpEvents } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; import { Doc, Field, FieldResult, FieldType, HierarchyMapping, NumListCast, Opt, ReverseHierarchyMap, StrListCast } from '../../fields/Doc'; @@ -44,8 +42,6 @@ import { StyleProviderFuncType } from './nodes/FieldView'; import { OpenWhere } from './nodes/OpenWhere'; import { PresBox, PresEffect, PresEffectDirection } from './nodes/trails'; -const _global = (window /* browser */ || global) /* node */ as any; - interface PropertiesViewProps { width: number; height: number; @@ -59,7 +55,7 @@ export class PropertiesView extends ObservableReactComponent (!this.selectedLayoutDoc ? 0 : Math.min(NumCast(this.selectedLayoutDoc?._width), this._props.width - 20)); @@ -275,7 +271,7 @@ export class PropertiesView extends ObservableReactComponent this.transform; propertiesDocViewRef = (ref: HTMLDivElement) => { - const resizeObserver = new _global.ResizeObserver( + const resizeObserver = new ResizeObserver( action(() => { const cliRect = ref.getBoundingClientRect(); this.transform = new Transform(-cliRect.x, -cliRect.y, 1); @@ -357,7 +353,7 @@ export class PropertiesView extends ObservableReactComponent { + changePermissions = (e: React.ChangeEvent, user: string) => { const docs = DocumentView.Selected().length < 2 ? [this.selectedDoc] : DocumentView.Selected().map(dv => (this.layoutDocAcls ? dv.layoutDoc : dv.dataDoc)); SharingManager.Instance.shareFromPropertiesSidebar(user, e.currentTarget.value as SharingPermissions, docs, this.layoutDocAcls); }; @@ -456,7 +452,7 @@ export class PropertiesView extends ObservableReactComponent (u1 > u2 ? -1 : u1 === u2 ? 0 : 1); + sortUsers = (u1: string, u2: string) => (u1 > u2 ? -1 : u1 === u2 ? 0 : 1); /** * Sorting algorithm to sort groups. @@ -711,7 +707,7 @@ export class PropertiesView extends ObservableReactComponent {}, title: string) => ( + inputBox = (key: string, value: string | number | undefined, setter: (val: string) => void, title: string) => (
{title}
setter(e.target.value)} onKeyDown={e => e.stopPropagation()} />
-
this.upDownButtons('up', key)))}> +
this.upDownButtons('up', key)), + 'down btn' + )}>
-
this.upDownButtons('down', key)))}> +
this.upDownButtons('down', key)), + 'up btn' + )}>
); - inputBoxDuo = (key: string, value: any, setter: (val: string) => {}, title1: string, key2: string, value2: any, setter2: (val: string) => {}, title2: string) => ( + inputBoxDuo = (key: string, value: string | number | undefined, setter: (val: string) => void, title1: string, key2: string, value2: string | number | undefined, setter2: (val: string) => void, title2: string) => (
{this.inputBox(key, value, setter, title1)} {title2 === '' ? null : this.inputBox(key2, value2, setter2, title2)} @@ -841,7 +849,7 @@ export class PropertiesView extends ObservableReactComponent {}) => ( + regInput = (key: string, value: string | number | undefined, setter: (val: string) => void) => (
setter(e.target.value)} />
-
this.upDownButtons('up', key)))}> +
this.upDownButtons('up', key)), + 'up' + )}>
-
this.upDownButtons('down', key)))}> +
this.upDownButtons('down', key)), + 'down' + )}>
@@ -1002,7 +1022,7 @@ export class PropertiesView extends ObservableReactComponent { this.markHead = this.markHead ? '' : 'arrow'; }))} + onChange={undoable(action(() => { this.markHead = this.markHead ? '' : 'arrow'; }), "change arrow head")} />
@@ -1012,8 +1032,8 @@ export class PropertiesView extends ObservableReactComponent { this.markTail = this.markTail ? '' : 'arrow'; }) + onChange={undoable( + action(() => { this.markTail = this.markTail ? '' : 'arrow'; }) ,"change arrow tail" )} />
@@ -1044,7 +1064,8 @@ export class PropertiesView extends ObservableReactComponent { this._sliderBatch?.end(); }; - getNumber = (label: string, unit: string, min: number, max: number, number: number, setNumber: any, autorange?: number, autorangeMinVal?: number) => ( + + getNumber = (label: string, unit: string, min: number, max: number, number: number, setNumber: (val: number) => void, autorange?: number, autorangeMinVal?: number) => (
this.changeEffectDirection(direction)}> - {icon ? : null} + {icon ? : null}
); @@ -1368,7 +1389,7 @@ export class PropertiesView extends ObservableReactComponent { this.selectedLink && (this.selectedLink[prop] = !this.selectedLink[prop]); })) // prettier-ignore + undoable(action(() => { this.selectedLink && (this.selectedLink[prop] = !this.selectedLink[prop]); }), `toggle prop: ${prop}`) // prettier-ignore ); }; @@ -1385,17 +1406,17 @@ export class PropertiesView extends ObservableReactComponent any = val => val) => { + toggleAnchorProp = (e: React.PointerEvent, prop: string, anchor?: Doc, value: FieldType = true, ovalue: FieldType = false, cb: (val: FieldType) => void = val => val) => { anchor && setupMoveUpEvents( this, e, returnFalse, emptyFunction, - undoBatch(action(() => { + undoable(action(() => { anchor[prop] = anchor[prop] === value ? ovalue : value; - this.selectedDoc && cb(anchor[prop]); - })) // prettier-ignore + this.selectedDoc && cb(anchor[prop] as boolean); + }), `toggle anchor prop: ${prop}`) // prettier-ignore ); }; @@ -1433,7 +1454,7 @@ export class PropertiesView extends ObservableReactComponent { + setZoom = (number: string, change?: number) => { let scale = Number(number) / 100; if (change) scale += change; if (scale < 0.01) scale = 0.01; @@ -1530,7 +1551,6 @@ export class PropertiesView extends ObservableReactComponent

Play Target Audio

{ - // eslint-disable-next-line jsx-a11y/control-has-associated-label ); + const searchTitle = `${!this._searching ? 'Open' : 'Close'} Search Bar`; const curPage = NumCast(this.Document._layout_curPage) || 1; return !this._props.isContentActive() || this._pdfViewer?.isAnnotating ? null : ( @@ -473,14 +473,14 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { specificContextMenu = (): void => { const cm = ContextMenu.Instance; const options = cm.findByDescription('Options...'); - const optionItems: ContextMenuProps[] = options && 'subitems' in options ? options.subitems : []; + const optionItems = options?.subitems ?? []; !Doc.noviceMode && optionItems.push({ description: 'Toggle Sidebar Type', event: this.toggleSidebarType, icon: 'expand-arrows-alt' }); !Doc.noviceMode && optionItems.push({ description: 'update icon', event: () => this.pdfUrl && this.updateIcon(), icon: 'expand-arrows-alt' }); // optionItems.push({ description: "Toggle Sidebar ", event: () => this.toggleSidebar(), icon: "expand-arrows-alt" }); !options && ContextMenu.Instance.addItem({ description: 'Options...', subitems: optionItems, icon: 'asterisk' }); const help = cm.findByDescription('Help...'); - const helpItems: ContextMenuProps[] = help && 'subitems' in help ? help.subitems : []; + const helpItems = help?.subitems ?? []; helpItems.push({ description: 'Copy path', event: () => this.pdfUrl && ClientUtils.CopyText(ClientUtils.prepend('') + this.pdfUrl.url.pathname), icon: 'expand-arrows-alt' }); !help && ContextMenu.Instance.addItem({ description: 'Help...', noexpand: true, subitems: helpItems, icon: 'asterisk' }); }; diff --git a/src/client/views/nodes/formattedText/EquationView.tsx b/src/client/views/nodes/formattedText/EquationView.tsx index 4d0e9efee..df1421a33 100644 --- a/src/client/views/nodes/formattedText/EquationView.tsx +++ b/src/client/views/nodes/formattedText/EquationView.tsx @@ -17,7 +17,7 @@ interface IEquationViewInternal { tbox: FormattedTextBox; width: number; height: number; - getPos: () => number; + getPos: () => number | undefined; setEditor: (editor: EquationEditor | undefined) => void; } @@ -47,7 +47,7 @@ export class EquationViewInternal extends React.Component className="equationView" onKeyDown={e => { if (e.key === 'Enter') { - this.props.tbox.EditorView!.dispatch(this.props.tbox.EditorView!.state.tr.setSelection(new TextSelection(this.props.tbox.EditorView!.state.doc.resolve(this.props.getPos() + 1)))); + this.props.tbox.EditorView!.dispatch(this.props.tbox.EditorView!.state.tr.setSelection(new TextSelection(this.props.tbox.EditorView!.state.doc.resolve((this.props.getPos() ?? 0) + 1)))); this.props.tbox.EditorView!.focus(); e.preventDefault(); } @@ -82,8 +82,8 @@ export class EquationView { tbox: FormattedTextBox; view: EditorView; _editor: EquationEditor | undefined; - getPos: () => number; - constructor(node: Node, view: EditorView, getPos: () => number, tbox: FormattedTextBox) { + getPos: () => number | undefined; + constructor(node: Node, view: EditorView, getPos: () => number | undefined, tbox: FormattedTextBox) { this.tbox = tbox; this.view = view; this.getPos = getPos; @@ -109,7 +109,7 @@ export class EquationView { this._editor?.mathField.focus(); } selectNode() { - this.view.dispatch(this.view.state.tr.setSelection(new TextSelection(this.view.state.doc.resolve(this.getPos())))); + this.view.dispatch(this.view.state.tr.setSelection(new TextSelection(this.view.state.doc.resolve(this.getPos() ?? 0)))); this.tbox._applyingChange = this.tbox.fieldKey; // setting focus will make prosemirror lose focus, which will cause it to change its selection to a text selection, which causes this view to get rebuilt but it's no longer node selected, so the equationview won't have focus setTimeout(() => { this._editor?.mathField.focus(); diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index c8b25e184..478039ffa 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -875,7 +875,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { @@ -959,7 +959,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent RTFMarkup.Instance.setOpen(true), icon: }); !help && cm.addItem({ description: 'Help...', subitems: helpItems, icon: 'eye' }); }; -- cgit v1.2.3-70-g09d2 From b84bdc5a629dfa6310b24dd5eedee2843558b73a Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 12 Aug 2024 21:38:22 -0400 Subject: more any -> type fixes --- deploy/mobile/image.html | 16 - deploy/mobile/ink.html | 13 - src/.DS_Store | Bin 10244 -> 10244 bytes src/ClientUtils.ts | 4 - src/ServerUtils.ts | 1 + src/client/util/Scripting.ts | 2 +- src/client/util/type_decls.txt | 224 ++++++ src/client/views/EditableView.tsx | 4 +- src/client/views/GestureOverlay.tsx | 7 +- src/client/views/LightboxView.tsx | 12 +- src/client/views/MainView.tsx | 12 +- src/client/views/OverlayView.tsx | 8 +- src/client/views/PropertiesView.tsx | 8 +- src/client/views/TemplateMenu.tsx | 4 +- src/client/views/collections/CollectionMenu.tsx | 4 +- .../collections/CollectionStackedTimeline.tsx | 4 +- .../views/collections/CollectionStackingView.tsx | 5 +- .../CollectionStackingViewFieldColumn.tsx | 11 +- .../views/collections/CollectionTreeView.tsx | 7 +- src/client/views/collections/TabDocView.tsx | 14 +- src/client/views/collections/TreeView.tsx | 4 +- .../CollectionMulticolumnView.tsx | 8 +- .../CollectionMultirowView.tsx | 6 +- .../collectionMulticolumn/MulticolumnResizer.tsx | 2 +- .../collectionMulticolumn/MultirowResizer.tsx | 2 +- .../collectionSchema/CollectionSchemaView.tsx | 57 +- .../collectionSchema/SchemaColumnHeader.tsx | 4 +- .../collections/collectionSchema/SchemaRowBox.tsx | 4 +- .../collectionSchema/SchemaTableCell.tsx | 32 +- src/client/views/linking/LinkPopup.tsx | 4 +- src/client/views/newlightbox/NewLightboxView.tsx | 14 +- .../RecommendationList/RecommendationList.tsx | 7 +- src/client/views/nodes/KeyValuePair.tsx | 4 +- src/client/views/nodes/LabelBox.tsx | 5 +- src/client/views/nodes/LinkDocPreview.tsx | 7 +- .../views/nodes/MapboxMapBox/MapboxContainer.tsx | 13 +- src/client/views/nodes/trails/PresElementBox.tsx | 18 +- src/client/views/topbar/TopBar.tsx | 8 +- src/fields/Doc.ts | 4 + src/mobile/ImageUpload.scss | 139 ---- src/mobile/ImageUpload.tsx | 170 ---- src/mobile/InkControls.tsx | 0 src/mobile/MobileInkOverlay.scss | 39 - src/mobile/MobileInkOverlay.tsx | 183 ----- src/mobile/MobileInterface.scss | 445 ----------- src/mobile/MobileInterface.tsx | 871 --------------------- src/mobile/MobileMain.tsx | 26 - src/mobile/MobileMenu.scss | 271 ------- webpack.config.js | 6 +- 49 files changed, 382 insertions(+), 2331 deletions(-) delete mode 100644 deploy/mobile/image.html delete mode 100644 deploy/mobile/ink.html create mode 100644 src/client/util/type_decls.txt delete mode 100644 src/mobile/ImageUpload.scss delete mode 100644 src/mobile/ImageUpload.tsx delete mode 100644 src/mobile/InkControls.tsx delete mode 100644 src/mobile/MobileInkOverlay.scss delete mode 100644 src/mobile/MobileInkOverlay.tsx delete mode 100644 src/mobile/MobileInterface.scss delete mode 100644 src/mobile/MobileInterface.tsx delete mode 100644 src/mobile/MobileMain.tsx delete mode 100644 src/mobile/MobileMenu.scss (limited to 'src') diff --git a/deploy/mobile/image.html b/deploy/mobile/image.html deleted file mode 100644 index cca6f763b..000000000 --- a/deploy/mobile/image.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - Dash Mobile - - - - - - -
- - - - \ No newline at end of file diff --git a/deploy/mobile/ink.html b/deploy/mobile/ink.html deleted file mode 100644 index 938d85794..000000000 --- a/deploy/mobile/ink.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - Test view - - - - -
- - - - \ No newline at end of file diff --git a/src/.DS_Store b/src/.DS_Store index 75cff7b55..7a0b53ce0 100644 Binary files a/src/.DS_Store and b/src/.DS_Store differ diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index f9e282993..fc048b155 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -82,10 +82,6 @@ export function returnEmptyFilter() { return [] as string[]; } -export function returnEmptyDoclist() { - return [] as any[]; -} - // eslint-disable-next-line @typescript-eslint/no-namespace export namespace ClientUtils { export const CLICK_TIME = 300; diff --git a/src/ServerUtils.ts b/src/ServerUtils.ts index ade4ca35d..7e821cda2 100644 --- a/src/ServerUtils.ts +++ b/src/ServerUtils.ts @@ -2,6 +2,7 @@ import { Socket } from 'socket.io'; import { Message } from './server/Message'; import { Utils } from './Utils'; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace ServerUtils { export function Emit(socket: Socket, message: Message, args: T) { Utils.log('Emit', message.Name, args, false); diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts index 133f8f2ce..b9e0943b6 100644 --- a/src/client/util/Scripting.ts +++ b/src/client/util/Scripting.ts @@ -1,7 +1,7 @@ // export const ts = (window as any).ts; // import * as typescriptlib from '!!raw-loader!../../../node_modules/typescript/lib/lib.d.ts' // import * as typescriptes5 from '!!raw-loader!../../../node_modules/typescript/lib/lib.es5.d.ts' -import * as typescriptlib from '!!raw-loader!./type_decls.d'; +import * as typescriptlib from './type_decls.d'; import * as ts from 'typescript'; import { Doc, FieldType } from '../../fields/Doc'; import { RefField } from '../../fields/RefField'; diff --git a/src/client/util/type_decls.txt b/src/client/util/type_decls.txt new file mode 100644 index 000000000..1a93bbe59 --- /dev/null +++ b/src/client/util/type_decls.txt @@ -0,0 +1,224 @@ +//@ts-ignore +declare type PropertyKey = string | number | symbol; +interface Array { + length: number; + toString(): string; + toLocaleString(): string; + pop(): T | undefined; + push(...items: T[]): number; + concat(...items: ConcatArray[]): T[]; + concat(...items: (T | ConcatArray)[]): T[]; + join(separator?: string): string; + reverse(): T[]; + shift(): T | undefined; + slice(start?: number, end?: number): T[]; + sort(compareFn?: (a: T, b: T) => number): this; + splice(start: number, deleteCount?: number): T[]; + splice(start: number, deleteCount: number, ...items: T[]): T[]; + unshift(...items: T[]): number; + indexOf(searchElement: T, fromIndex?: number): number; + lastIndexOf(searchElement: T, fromIndex?: number): number; + every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; + some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; + forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; + map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; + filter(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; + filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; + reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; + reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; + reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; + reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; + + [n: number]: T; +} + +interface Function { + apply(this: Function, thisArg: any, argArray?: any): any; + call(this: Function, thisArg: any, ...argArray: any[]): any; + bind(this: Function, thisArg: any, ...argArray: any[]): any; + toString(): string; + + prototype: any; + readonly length: number; + + // Non-standard extensions + arguments: any; + caller: Function; +} +interface Boolean { + valueOf(): boolean; +} +interface Number { + toString(radix?: number): string; + toFixed(fractionDigits?: number): string; + toExponential(fractionDigits?: number): string; + toPrecision(precision?: number): string; + valueOf(): number; +} +interface IArguments { + [index: number]: any; + length: number; + callee: Function; +} +interface RegExp { + readonly flags: string; + readonly sticky: boolean; + readonly unicode: boolean; +} +interface Date { + now() : string; +} +interface String { + codePointAt(pos: number): number | undefined; + includes(searchString: string, position?: number): boolean; + endsWith(searchString: string, endPosition?: number): boolean; + normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; + normalize(form?: string): string; + repeat(count: number): string; + replace(a:any, b:any):string; // bcz: fix this + startsWith(searchString: string, position?: number): boolean; + anchor(name: string): string; + big(): string; + blink(): string; + bold(): string; + fixed(): string; + fontcolor(color: string): string; + fontsize(size: number): string; + fontsize(size: string): string; + italics(): string; + link(url: string): string; + small(): string; + strike(): string; + sub(): string; + sup(): string; +} +interface Object { + constructor: Function; + toString(): string; + toLocaleString(): string; + valueOf(): Object; + hasOwnProperty(v: PropertyKey): boolean; + isPrototypeOf(v: Object): boolean; + propertyIsEnumerable(v: PropertyKey): boolean; +} +interface ConcatArray { + readonly length: number; + readonly [n: number]: T; + join(separator?: string): string; + slice(start?: number, end?: number): T[]; +} +interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toJSON(): string; +} +interface PromiseLike { + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): PromiseLike; +} +interface Promise { + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; +} + +declare const Update: unique symbol; +declare const Self: unique symbol; +declare const SelfProxy: unique symbol; +declare const DataSym: unique symbol; +declare const HandleUpdate: unique symbol; +declare const Id: unique symbol; +declare const OnUpdate: unique symbol; +declare const Parent: unique symbol; +declare const Copy: unique symbol; +declare const ToScriptString: unique symbol; + +declare abstract class RefField { + readonly [Id]: FieldId; + + constructor(); +} + +declare type FieldId = string; + +declare abstract class ObjectField { + abstract [Copy](): ObjectField; +} + +declare abstract class URLField extends ObjectField { + readonly url: URL; + + constructor(url: string); + constructor(url: URL); +} + +declare class RichTextField extends URLField { + [Copy](): ObjectField; + constructor(data:string, text: string); +} +declare class AudioField extends URLField { [Copy](): ObjectField; } +declare class VideoField extends URLField { [Copy](): ObjectField; } +declare class ImageField extends URLField { [Copy](): ObjectField; } +declare class WebField extends URLField { [Copy](): ObjectField; } +declare class PdfField extends URLField { [Copy](): ObjectField; } + +declare const ComputedField: any; +declare const CompileScript: any; + +// @ts-ignore +declare type Extract = T extends U ? T : never; +declare type Field = number | string | boolean | ObjectField | RefField; +declare type FieldWaiting = T extends undefined ? never : Promise; +declare type FieldResult = Opt | FieldWaiting>; + +declare type Opt = T | undefined; +declare class Doc extends RefField { + constructor(); + + [key: string]: FieldResult; + // [ToScriptString](): string; +} + +declare class List extends ObjectField { + constructor(fields?: T[]); + [index: number]: T | (T extends RefField ? Promise : never); + [Copy](): ObjectField; +} + +declare class InkField extends ObjectField { + constructor(data:Array<{X:number, Y:number}>); + [Copy](): ObjectField; +} + +// @ts-ignore +declare const console: any; + +interface DocumentOptions { } + +declare const Docs: { + ImageDocument(url: string, options?: DocumentOptions): Doc; + VideoDocument(url: string, options?: DocumentOptions): Doc; + TextDocument(options?: DocumentOptions): Doc; + PdfDocument(url: string, options?: DocumentOptions): Doc; + WebDocument(url: string, options?: DocumentOptions): Doc; + HtmlDocument(html: string, options?: DocumentOptions): Doc; + MapDocument(url: string, options?: DocumentOptions): Doc; + KVPDocument(document: Doc, options?: DocumentOptions): Doc; + FreeformDocument(documents: Doc[], options?: DocumentOptions): Doc; + SchemaDocument(columns: string[], documents: Doc[], options?: DocumentOptions): Doc; + TreeDocument(documents: Doc[], options?: DocumentOptions): Doc; + StackingDocument(documents: Doc[], options?: DocumentOptions): Doc; +}; + +declare function idToDoc(id:string):any; +declare function assignDoc(doc:Doc, field:any, id:any):string; +declare function d(...args:any[]):any; diff --git a/src/client/views/EditableView.tsx b/src/client/views/EditableView.tsx index e02e39b8b..23da5a666 100644 --- a/src/client/views/EditableView.tsx +++ b/src/client/views/EditableView.tsx @@ -26,7 +26,7 @@ export interface EditableProps { /** * The contents to render when not editing */ - contents: string; + contents: JSX.Element | string; fieldContents?: FieldViewProps; fontStyle?: string; fontSize?: number; @@ -301,7 +301,7 @@ export class EditableView extends ObservableReactComponent { fontStyle: this._props.fontStyle, fontSize: this._props.fontSize, }}> - {this._props.fieldContents ? : this._props.contents ? this._props.contents?.valueOf() : ''} + {this._props.fieldContents ? : (this._props.contents ?? '')}
); diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx index 804c41091..bcd4d1ee5 100644 --- a/src/client/views/GestureOverlay.tsx +++ b/src/client/views/GestureOverlay.tsx @@ -2,9 +2,9 @@ import * as fitCurve from 'fit-curve'; import { action, computed, makeObservable, observable, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { returnEmptyDoclist, returnEmptyFilter, returnEmptyString, returnFalse, setupMoveUpEvents } from '../../ClientUtils'; +import { returnEmptyFilter, returnEmptyString, returnFalse, setupMoveUpEvents } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; -import { Doc, Opt } from '../../fields/Doc'; +import { Doc, Opt, returnEmptyDoclist } from '../../fields/Doc'; import { InkData, InkField, InkTool } from '../../fields/InkField'; import { NumCast } from '../../fields/Types'; import { @@ -30,6 +30,7 @@ import { ScriptingGlobals } from '../util/ScriptingGlobals'; import { Transform } from '../util/Transform'; import './GestureOverlay.scss'; import { ObservableReactComponent } from './ObservableReactComponent'; +import { returnEmptyDocViewList } from './StyleProvider'; import { ActiveFillColor, DocumentView } from './nodes/DocumentView'; export enum ToolglassTools { @@ -466,7 +467,7 @@ export class GestureOverlay extends ObservableReactComponent { ScreenToLocalTransform={this.lightboxScreenToLocal} renderDepth={0} suppressSetHeight={!!this._doc._layout_fitWidth} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} childFilters={returnEmptyFilter} childFiltersByRanges={returnEmptyFilter} searchFilterDocs={returnEmptyDoclist} diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index ac30c5a14..62ad0a3fb 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -8,9 +8,9 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import ResizeObserver from 'resize-observer-polyfill'; import '../../../node_modules/browndash-components/dist/styles/global.min.css'; -import { ClientUtils, lightOrDark, returnEmptyDoclist, returnEmptyFilter, returnFalse, returnTrue, returnZero, setupMoveUpEvents } from '../../ClientUtils'; +import { ClientUtils, lightOrDark, returnEmptyFilter, returnFalse, returnTrue, returnZero, setupMoveUpEvents } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; -import { Doc, DocListCast, GetDocFromUrl, Opt } from '../../fields/Doc'; +import { Doc, DocListCast, GetDocFromUrl, Opt, returnEmptyDoclist } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; import { DocCast, StrCast, toList } from '../../fields/Types'; @@ -627,7 +627,7 @@ export class MainView extends ObservableReactComponent { Document={this.headerBarDoc} addDocTab={DocumentViewInternal.addDocTabFunc} pinToPres={emptyFunction} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} styleProvider={DefaultStyleProvider} addDocument={this.addHeaderDoc} removeDocument={this.removeHeaderDoc} @@ -662,7 +662,7 @@ export class MainView extends ObservableReactComponent { addDocument={undefined} addDocTab={DocumentViewInternal.addDocTabFunc} pinToPres={emptyFunction} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} styleProvider={this._hideUI ? DefaultStyleProvider : undefined} isContentActive={returnTrue} removeDocument={undefined} @@ -766,7 +766,7 @@ export class MainView extends ObservableReactComponent { addDocument={undefined} addDocTab={DocumentViewInternal.addDocTabFunc} pinToPres={DocumentView.PinDoc} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} styleProvider={this._sidebarContent.proto === Doc.MyDashboards || this._sidebarContent.proto === Doc.MyFilesystem || this._sidebarContent.proto === Doc.MyTrails ? DashboardStyleProvider : DefaultStyleProvider} removeDocument={returnFalse} ScreenToLocalTransform={this.mainContainerXf} @@ -799,7 +799,7 @@ export class MainView extends ObservableReactComponent { PanelWidth={this.leftMenuWidth} PanelHeight={this.leftMenuHeight} renderDepth={0} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} focus={emptyFunction} styleProvider={DefaultStyleProvider} isContentActive={returnTrue} diff --git a/src/client/views/OverlayView.tsx b/src/client/views/OverlayView.tsx index 7bf10467e..5e9677b45 100644 --- a/src/client/views/OverlayView.tsx +++ b/src/client/views/OverlayView.tsx @@ -4,9 +4,9 @@ import { computedFn } from 'mobx-utils'; import * as React from 'react'; import ReactLoading from 'react-loading'; import ResizeObserver from 'resize-observer-polyfill'; -import { returnEmptyDoclist, returnEmptyFilter, returnTrue, setupMoveUpEvents } from '../../ClientUtils'; +import { returnEmptyFilter, returnTrue, setupMoveUpEvents } from '../../ClientUtils'; import { Utils, emptyFunction } from '../../Utils'; -import { Doc } from '../../fields/Doc'; +import { Doc, returnEmptyDoclist } from '../../fields/Doc'; import { Height, Width } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; import { NumCast, toList } from '../../fields/Types'; @@ -16,7 +16,7 @@ import { dropActionType } from '../util/DropActionTypes'; import { Transform } from '../util/Transform'; import { ObservableReactComponent } from './ObservableReactComponent'; import './OverlayView.scss'; -import { DefaultStyleProvider } from './StyleProvider'; +import { DefaultStyleProvider, returnEmptyDocViewList } from './StyleProvider'; import { DocumentView, DocumentViewInternal } from './nodes/DocumentView'; export type OverlayDisposer = () => void; @@ -226,7 +226,7 @@ export class OverlayView extends ObservableReactComponent { whenChildContentsActiveChanged={emptyFunction} focus={emptyFunction} styleProvider={DefaultStyleProvider} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} addDocTab={DocumentViewInternal.addDocTabFunc} pinToPres={emptyFunction} childFilters={returnEmptyFilter} diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx index 5952d6641..daa8e1720 100644 --- a/src/client/views/PropertiesView.tsx +++ b/src/client/views/PropertiesView.tsx @@ -10,9 +10,9 @@ import * as React from 'react'; import { ColorResult, SketchPicker } from 'react-color'; import * as Icons from 'react-icons/bs'; // {BsCollectionFill, BsFillFileEarmarkImageFill} from "react-icons/bs" import ResizeObserver from 'resize-observer-polyfill'; -import { ClientUtils, returnEmptyDoclist, returnEmptyFilter, returnEmptyString, returnFalse, returnTrue, setupMoveUpEvents } from '../../ClientUtils'; +import { ClientUtils, returnEmptyFilter, returnEmptyString, returnFalse, returnTrue, setupMoveUpEvents } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; -import { Doc, Field, FieldResult, FieldType, HierarchyMapping, NumListCast, Opt, ReverseHierarchyMap, StrListCast } from '../../fields/Doc'; +import { Doc, Field, FieldResult, FieldType, HierarchyMapping, NumListCast, Opt, ReverseHierarchyMap, StrListCast, returnEmptyDoclist } from '../../fields/Doc'; import { AclAdmin, DocAcl, DocData } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; import { InkField } from '../../fields/InkField'; @@ -36,7 +36,7 @@ import { PropertiesDocBacklinksSelector } from './PropertiesDocBacklinksSelector import { PropertiesDocContextSelector } from './PropertiesDocContextSelector'; import { PropertiesSection } from './PropertiesSection'; import './PropertiesView.scss'; -import { DefaultStyleProvider, SetFilterOpener as SetPropertiesFilterOpener } from './StyleProvider'; +import { DefaultStyleProvider, SetFilterOpener as SetPropertiesFilterOpener, returnEmptyDocViewList } from './StyleProvider'; import { DocumentView } from './nodes/DocumentView'; import { StyleProviderFuncType } from './nodes/FieldView'; import { OpenWhere } from './nodes/OpenWhere'; @@ -322,7 +322,7 @@ export class PropertiesView extends ObservableReactComponent boolean; createDropTarget: (ele: HTMLDivElement) => void; screenToLocalTransform: () => Transform; - refList: any[]; + refList: HTMLElement[]; } @observer @@ -64,7 +61,7 @@ export class CollectionStackingViewFieldColumn extends ObservableReactComponent< @observable _heading = ''; @observable _color = ''; - constructor(props: any) { + constructor(props: CSVFieldColumnProps) { super(props); makeObservable(this); this._heading = this._props.headingObject ? this._props.headingObject.heading : this._props.heading; @@ -118,7 +115,7 @@ export class CollectionStackingViewFieldColumn extends ObservableReactComponent< this._props.pivotField && drop.docs?.forEach(d => Doc.SetInPlace(d, this._props.pivotField, drop.val, false)); return true; }); - getValue = (value: string): any => { + getValue = (value: string) => { const parsed = parseInt(value); if (!isNaN(parsed)) return parsed; if (value.toLowerCase().indexOf('true') > -1) return true; @@ -212,7 +209,7 @@ export class CollectionStackingViewFieldColumn extends ObservableReactComponent<
{colors.map(col => { const palette = PastelSchemaPalette.get(col); - return
this.changeColumnColor(palette!)} />; + return
this.changeColumnColor(palette!)} />; })}
diff --git a/src/client/views/collections/CollectionTreeView.tsx b/src/client/views/collections/CollectionTreeView.tsx index 0557a9102..a60cd98ac 100644 --- a/src/client/views/collections/CollectionTreeView.tsx +++ b/src/client/views/collections/CollectionTreeView.tsx @@ -2,8 +2,8 @@ import { action, computed, IReactionDisposer, makeObservable, observable, reacti import { observer } from 'mobx-react'; import * as React from 'react'; import ResizeObserver from 'resize-observer-polyfill'; -import { DivHeight, returnAll, returnEmptyDoclist, returnEmptyFilter, returnFalse, returnNone, returnOne, returnTrue, returnZero } from '../../../ClientUtils'; -import { Doc, DocListCast, Opt, StrListCast } from '../../../fields/Doc'; +import { DivHeight, returnAll, returnEmptyFilter, returnFalse, returnNone, returnOne, returnTrue, returnZero } from '../../../ClientUtils'; +import { Doc, DocListCast, Opt, returnEmptyDoclist, StrListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { listSpec } from '../../../fields/Schema'; @@ -25,6 +25,7 @@ import { EditableView } from '../EditableView'; import { DocumentView } from '../nodes/DocumentView'; import { FormattedTextBox } from '../nodes/formattedText/FormattedTextBox'; import { StyleProp } from '../StyleProp'; +import { returnEmptyDocViewList } from '../StyleProvider'; import { CollectionFreeFormView } from './collectionFreeForm'; import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; import './CollectionTreeView.scss'; @@ -369,7 +370,7 @@ export class CollectionTreeView extends CollectionSubView { PanelWidth={this.PanelWidth} PanelHeight={this.PanelHeight} styleProvider={DefaultStyleProvider} - childFilters={CollectionDockingView.Instance?.childDocFilters ?? returnEmptyDoclist} - childFiltersByRanges={CollectionDockingView.Instance?.childDocRangeFilters ?? returnEmptyDoclist} + childFilters={CollectionDockingView.Instance?.childDocFilters ?? returnEmptyDocViewList} + childFiltersByRanges={CollectionDockingView.Instance?.childDocRangeFilters ?? returnEmptyDocViewList} searchFilterDocs={CollectionDockingView.Instance?.searchFilterDocs ?? returnEmptyDoclist} addDocument={undefined} removeDocument={this.remDocTab} @@ -628,7 +628,7 @@ export class TabDocView extends ObservableReactComponent { dontCenter="y" whenChildContentsActiveChanged={this.whenChildContentActiveChanges} focus={this.focusFunc} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} pinToPres={TabDocView.PinDoc} /> {this.disableMinimap() ? null : } diff --git a/src/client/views/collections/TreeView.tsx b/src/client/views/collections/TreeView.tsx index 54053d038..c0fe7a894 100644 --- a/src/client/views/collections/TreeView.tsx +++ b/src/client/views/collections/TreeView.tsx @@ -4,9 +4,9 @@ import { IconButton, Size } from 'browndash-components'; import { IReactionDisposer, action, computed, makeObservable, observable, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { ClientUtils, lightOrDark, return18, returnEmptyDoclist, returnEmptyFilter, returnEmptyString, returnFalse, returnTrue, returnZero, setupMoveUpEvents, simulateMouseClick } from '../../../ClientUtils'; +import { ClientUtils, lightOrDark, return18, returnEmptyFilter, returnEmptyString, returnFalse, returnTrue, returnZero, setupMoveUpEvents, simulateMouseClick } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; -import { Doc, DocListCast, Field, FieldResult, FieldType, Opt, StrListCast } from '../../../fields/Doc'; +import { Doc, DocListCast, Field, FieldResult, FieldType, Opt, StrListCast, returnEmptyDoclist } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { List } from '../../../fields/List'; diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx index b8509a005..5125bdb6c 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx +++ b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; import { Button, IconButton } from 'browndash-components'; @@ -14,7 +12,7 @@ import { SettingsManager } from '../../../util/SettingsManager'; import { Transform } from '../../../util/Transform'; import { undoBatch, undoable } from '../../../util/UndoManager'; import { DocumentView } from '../../nodes/DocumentView'; -import { CollectionSubView } from '../CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; import './CollectionMulticolumnView.scss'; import ResizeBar from './MulticolumnResizer'; import WidthLabel from './MulticolumnWidthLabel'; @@ -42,7 +40,7 @@ const resizerWidth = 8; export class CollectionMulticolumnView extends CollectionSubView() { @observable _startIndex = 0; - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -305,7 +303,7 @@ export class CollectionMulticolumnView extends CollectionSubView() { whenChildContentsActiveChanged={this._props.whenChildContentsActiveChanged} addDocTab={this._props.addDocTab} pinToPres={this._props.pinToPres} - dontCenter={StrCast(this.layoutDoc.layout_dontCenter) as any} // 'y', 'x', 'xy' + dontCenter={StrCast(this.layoutDoc.layout_dontCenter) as 'x' | 'y' | 'xy'} /> ); }; diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx index 3fe3d5343..2833ff2f8 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx +++ b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx @@ -8,7 +8,7 @@ import { dropActionType } from '../../../util/DropActionTypes'; import { Transform } from '../../../util/Transform'; import { undoBatch } from '../../../util/UndoManager'; import { DocumentView } from '../../nodes/DocumentView'; -import { CollectionSubView } from '../CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; import './CollectionMultirowView.scss'; import HeightLabel from './MultirowHeightLabel'; import ResizeBar from './MultirowResizer'; @@ -33,7 +33,7 @@ const resizerHeight = 8; @observer export class CollectionMultirowView extends CollectionSubView() { - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -284,7 +284,7 @@ export class CollectionMultirowView extends CollectionSubView() { whenChildContentsActiveChanged={this._props.whenChildContentsActiveChanged} addDocTab={this._props.addDocTab} pinToPres={this._props.pinToPres} - dontCenter={StrCast(this.layoutDoc.layout_dontCenter) as any} // 'y', 'x', 'xy' + dontCenter={StrCast(this.layoutDoc.layout_dontCenter) as 'y' | 'x' | 'xy'} /> ); }; diff --git a/src/client/views/collections/collectionMulticolumn/MulticolumnResizer.tsx b/src/client/views/collections/collectionMulticolumn/MulticolumnResizer.tsx index 931e2c5e0..10a6fa2e9 100644 --- a/src/client/views/collections/collectionMulticolumn/MulticolumnResizer.tsx +++ b/src/client/views/collections/collectionMulticolumn/MulticolumnResizer.tsx @@ -68,7 +68,7 @@ export default class ResizeBar extends React.Component { style={{ pointerEvents: this.props.isContentActive?.() ? 'all' : 'none', width: this.props.width, - backgroundColor: !this.props.isContentActive?.() ? '' : this.props.styleProvider?.(undefined, undefined, StyleProp.WidgetColor), + backgroundColor: !this.props.isContentActive?.() ? '' : (this.props.styleProvider?.(undefined, undefined, StyleProp.WidgetColor) as string), }}>
this.registerResizing(e)} />
diff --git a/src/client/views/collections/collectionMulticolumn/MultirowResizer.tsx b/src/client/views/collections/collectionMulticolumn/MultirowResizer.tsx index cff0a8b4c..918365700 100644 --- a/src/client/views/collections/collectionMulticolumn/MultirowResizer.tsx +++ b/src/client/views/collections/collectionMulticolumn/MultirowResizer.tsx @@ -66,7 +66,7 @@ export default class ResizeBar extends React.Component { style={{ pointerEvents: this.props.isContentActive?.() ? 'all' : 'none', height: this.props.height, - backgroundColor: !this.props.isContentActive?.() ? '' : this.props.styleProvider?.(undefined, undefined, StyleProp.WidgetColor), + backgroundColor: !this.props.isContentActive?.() ? '' : this.props.styleProvider?.(undefined, undefined, StyleProp.WidgetColor) as string, }}>
this.registerResizing(e)} />
diff --git a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx index 6bea53355..8b0639b3b 100644 --- a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx +++ b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx @@ -4,7 +4,7 @@ import { Popup, PopupTrigger, Type } from 'browndash-components'; import { ObservableMap, action, computed, makeObservable, observable, observe, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { returnEmptyDoclist, returnEmptyString, returnFalse, returnIgnore, returnNever, returnTrue, setupMoveUpEvents, smoothScroll } from '../../../../ClientUtils'; +import { returnEmptyString, returnFalse, returnIgnore, returnNever, returnTrue, setupMoveUpEvents, smoothScroll } from '../../../../ClientUtils'; import { emptyFunction } from '../../../../Utils'; import { Doc, DocListCast, Field, FieldType, NumListCast, Opt, StrListCast } from '../../../../fields/Doc'; import { DocData } from '../../../../fields/DocSymbols'; @@ -22,12 +22,12 @@ import { ContextMenu } from '../../ContextMenu'; import { EditableView } from '../../EditableView'; import { ObservableReactComponent } from '../../ObservableReactComponent'; import { StyleProp } from '../../StyleProp'; -import { DefaultStyleProvider } from '../../StyleProvider'; +import { DefaultStyleProvider, returnEmptyDocViewList } from '../../StyleProvider'; import { Colors } from '../../global/globalEnums'; import { DocumentView } from '../../nodes/DocumentView'; import { FieldViewProps } from '../../nodes/FieldView'; import { FocusViewOptions } from '../../nodes/FocusViewOptions'; -import { CollectionSubView } from '../CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; import './CollectionSchemaView.scss'; import { SchemaColumnHeader } from './SchemaColumnHeader'; import { SchemaRowBox } from './SchemaRowBox'; @@ -49,14 +49,14 @@ const defaultColumnKeys: string[] = ['title', 'type', 'author', 'author_date', ' @observer export class CollectionSchemaView extends CollectionSubView() { - private _keysDisposer: any; + private _keysDisposer?: () => void; private _previewRef: HTMLDivElement | null = null; private _makeNewColumn: boolean = false; private _documentOptions: DocumentOptions = new DocumentOptions(); private _tableContentRef: HTMLDivElement | null = null; private _menuTarget = React.createRef(); - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -76,7 +76,7 @@ export class CollectionSchemaView extends CollectionSubView() { @observable _columnMenuIndex: number | undefined = undefined; @observable _newFieldWarning: string = ''; @observable _makeNewField: boolean = false; - @observable _newFieldDefault: any = 0; + @observable _newFieldDefault: boolean | number | string | undefined = 0; @observable _newFieldType: ColumnType = ColumnType.Number; @observable _menuValue: string = ''; @observable _filterColumnIndex: number | undefined = undefined; @@ -161,11 +161,11 @@ export class CollectionSchemaView extends CollectionSubView() { Object.entries(this._documentOptions).forEach((pair: [string, FInfo]) => this.fieldInfos.set(pair[0], pair[1])); this._keysDisposer = observe( this.dataDoc[this.fieldKey ?? 'data'] as List, - (change: any) => { + change => { switch (change.type) { case 'splice': // prettier-ignore - (change as any).added.forEach((doc: Doc) => // for each document added + change.added.filter(doc => doc instanceof Doc).map(doc => doc as Doc).forEach((doc: Doc) => // for each document added Doc.GetAllPrototypes(doc.value as Doc).forEach(proto => // for all of its prototypes (and itself) Object.keys(proto).forEach(action(key => // check if any of its keys are new, and add them !this.fieldInfos.get(key) && this.fieldInfos.set(key, new FInfo("-no description-", key === 'author')))))); @@ -270,7 +270,7 @@ export class CollectionSchemaView extends CollectionSubView() { addRow = (doc: Doc | Doc[]) => this.addDocument(doc); @undoBatch - changeColumnKey = (index: number, newKey: string, defaultVal?: any) => { + changeColumnKey = (index: number, newKey: string, defaultVal?: string | number | boolean) => { if (!this.documentKeys.includes(newKey)) { this.addNewKey(newKey, defaultVal); } @@ -281,7 +281,7 @@ export class CollectionSchemaView extends CollectionSubView() { }; @undoBatch - addColumn = (key: string, defaultVal?: any) => { + addColumn = (key: string, defaultVal?: string | number | boolean) => { if (!this.documentKeys.includes(key)) { this.addNewKey(key, defaultVal); } @@ -298,7 +298,7 @@ export class CollectionSchemaView extends CollectionSubView() { }; @action - addNewKey = (key: string, defaultVal: any) => + addNewKey = (key: string, defaultVal?: string | number | boolean) => this.childDocs.forEach(doc => { doc[DocData][key] = defaultVal; }); @@ -317,7 +317,7 @@ export class CollectionSchemaView extends CollectionSubView() { }; @action - startResize = (e: any, index: number) => { + startResize = (e: React.PointerEvent, index: number) => { this._displayColumnWidths = this.storedColumnWidths; setupMoveUpEvents(this, e, moveEv => this.resizeColumn(moveEv, index), this.finishResize, emptyFunction); }; @@ -604,7 +604,7 @@ export class CollectionSchemaView extends CollectionSubView() { }; scrollToDoc = (doc: Doc, options: FocusViewOptions) => { - const found = this._tableContentRef && Array.from(this._tableContentRef.getElementsByClassName('documentView-node')).find((node: any) => node.id === doc[Id]); + const found = this._tableContentRef && Array.from(this._tableContentRef.getElementsByClassName('documentView-node')).find(node => node.id === doc[Id]); if (found) { const rect = found.getBoundingClientRect(); const localRect = this.ScreenToLocalBoxXf().transformBounds(rect.left, rect.top, rect.width, rect.height); @@ -625,9 +625,9 @@ export class CollectionSchemaView extends CollectionSubView() { type="number" name="" id="" - value={this._newFieldDefault ?? 0} + value={Number(this._newFieldDefault ?? 0)} onPointerDown={e => e.stopPropagation()} - onChange={action((e: any) => { + onChange={action(e => { this._newFieldDefault = e.target.value; })} /> @@ -637,11 +637,9 @@ export class CollectionSchemaView extends CollectionSubView() { <> e.stopPropagation()} - onChange={action((e: any) => { + onChange={action(e => { this._newFieldDefault = e.target.checked; })} /> @@ -654,9 +652,9 @@ export class CollectionSchemaView extends CollectionSubView() { type="text" name="" id="" - value={this._newFieldDefault ?? ''} + value={this._newFieldDefault?.toString() ?? ''} onPointerDown={e => e.stopPropagation()} - onChange={action((e: any) => { + onChange={action(e => { this._newFieldDefault = e.target.value; })} /> @@ -683,7 +681,7 @@ export class CollectionSchemaView extends CollectionSubView() { }; @action - setKey = (key: string, defaultVal?: any) => { + setKey = (key: string, defaultVal?: string | number | boolean) => { if (this._makeNewColumn) { this.addColumn(key, defaultVal); } else { @@ -856,16 +854,16 @@ export class CollectionSchemaView extends CollectionSubView() { onKeysPassiveWheel = (e: WheelEvent) => { // if scrollTop is 0, then don't let wheel trigger scroll on any container (which it would since onScroll won't be triggered on this) - if (!this._oldKeysWheel.scrollTop && e.deltaY <= 0) e.preventDefault(); + if (!this._oldKeysWheel?.scrollTop && e.deltaY <= 0) e.preventDefault(); e.stopPropagation(); }; - _oldKeysWheel: any; + _oldKeysWheel: HTMLDivElement | null = null; @computed get keysDropdown() { return (
{ + onPointerDown={action(e => { e.stopPropagation(); this._makeNewField = true; })}> @@ -880,6 +878,7 @@ export class CollectionSchemaView extends CollectionSubView() { }}> {this._menuKeys.map(key => (
{ e.stopPropagation(); @@ -962,7 +961,7 @@ export class CollectionSchemaView extends CollectionSubView() { {this.renderFilterOptions}
{ + onPointerDown={action(e => { e.stopPropagation(); this.closeFilterMenu(); })}> @@ -1013,7 +1012,7 @@ export class CollectionSchemaView extends CollectionSubView() { screenToLocal = () => this.ScreenToLocalBoxXf().translate(-this.tableWidth, 0); previewWidthFunc = () => this.previewWidth; onPassiveWheel = (e: WheelEvent) => e.stopPropagation(); - _oldWheel: any; + _oldWheel: HTMLDivElement | null = null; render() { return (
this.createDashEventsTarget(ele)} onDrop={this.onExternalDrop.bind(this)} onPointerMove={e => this.onPointerMove(e)}> @@ -1112,7 +1111,7 @@ export class CollectionSchemaView extends CollectionSubView() { childFiltersByRanges={this.childDocRangeFilters} searchFilterDocs={this.searchFilterDocs} styleProvider={DefaultStyleProvider} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} moveDocument={this._props.moveDocument} addDocument={this.addRow} removeDocument={this._props.removeDocument} @@ -1137,7 +1136,7 @@ interface CollectionSchemaViewDocProps { @observer class CollectionSchemaViewDoc extends ObservableReactComponent { - constructor(props: any) { + constructor(props: CollectionSchemaViewDocProps) { super(props); makeObservable(this); } diff --git a/src/client/views/collections/collectionSchema/SchemaColumnHeader.tsx b/src/client/views/collections/collectionSchema/SchemaColumnHeader.tsx index 6b5a34ec0..e0ed8d01e 100644 --- a/src/client/views/collections/collectionSchema/SchemaColumnHeader.tsx +++ b/src/client/views/collections/collectionSchema/SchemaColumnHeader.tsx @@ -18,8 +18,8 @@ export interface SchemaColumnHeaderProps { setSort: (field: string | undefined, desc?: boolean) => void; removeColumn: (index: number) => void; rowHeight: () => number; - resizeColumn: (e: any, index: number) => void; - dragColumn: (e: any, index: number) => boolean; + resizeColumn: (e: React.PointerEvent, index: number) => void; + dragColumn: (e: PointerEvent, index: number) => boolean; openContextMenu: (x: number, y: number, index: number) => void; setColRef: (index: number, ref: HTMLDivElement) => void; } diff --git a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx index 760089ffb..a7e0e916b 100644 --- a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx +++ b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx @@ -58,8 +58,8 @@ export class SchemaRowBox extends ViewBoxBaseComponent() { selectCell = (doc: Doc, col: number, shift: boolean, ctrl: boolean) => this.schemaView?.selectCell(doc, col, shift, ctrl); deselectCell = () => this.schemaView?.deselectAllCells(); selectedCells = () => this.schemaView?._selectedDocs; - setColumnValues = (field: any, value: any) => this.schemaView?.setColumnValues(field, value) ?? false; - setSelectedColumnValues = (field: any, value: any) => this.schemaView?.setSelectedColumnValues(field, value) ?? false; + setColumnValues = (field: string, value: string) => this.schemaView?.setColumnValues(field, value) ?? false; + setSelectedColumnValues = (field: string, value: string) => this.schemaView?.setSelectedColumnValues(field, value) ?? false; columnWidth = computedFn((index: number) => () => this.schemaView?.displayColumnWidths[index] ?? CollectionSchemaView._minColWidth); render() { return ( diff --git a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx index 5874364e0..22506cac1 100644 --- a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx +++ b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx @@ -1,4 +1,3 @@ -/* eslint-disable jsx-a11y/alt-text */ /* eslint-disable react/jsx-props-no-spreading */ /* eslint-disable no-use-before-define */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -10,10 +9,10 @@ import * as React from 'react'; import DatePicker from 'react-datepicker'; import 'react-datepicker/dist/react-datepicker.css'; import Select from 'react-select'; -import { ClientUtils, StopEvent, returnEmptyDoclist, returnEmptyFilter, returnFalse, returnZero } from '../../../../ClientUtils'; +import { ClientUtils, StopEvent, returnEmptyFilter, returnFalse, returnZero } from '../../../../ClientUtils'; import { emptyFunction } from '../../../../Utils'; import { DateField } from '../../../../fields/DateField'; -import { Doc, DocListCast, Field } from '../../../../fields/Doc'; +import { Doc, DocListCast, Field, returnEmptyDoclist } from '../../../../fields/Doc'; import { RichTextField } from '../../../../fields/RichTextField'; import { ColumnType } from '../../../../fields/SchemaHeaderField'; import { BoolCast, Cast, DateCast, DocCast, FieldValue, StrCast, toList } from '../../../../fields/Types'; @@ -22,7 +21,7 @@ import { FInfo, FInfoFieldType } from '../../../documents/Documents'; import { dropActionType } from '../../../util/DropActionTypes'; import { SnappingManager } from '../../../util/SnappingManager'; import { Transform } from '../../../util/Transform'; -import { undoBatch, undoable } from '../../../util/UndoManager'; +import { undoable } from '../../../util/UndoManager'; import { EditableView } from '../../EditableView'; import { ObservableReactComponent } from '../../ObservableReactComponent'; import { DefaultStyleProvider, returnEmptyDocViewList } from '../../StyleProvider'; @@ -138,7 +137,7 @@ export class SchemaTableCell extends ObservableReactComponent selectedCell(this._props) && this._props.autoFocus && r?.setIsFocused(true)} oneLine={this._props.oneLine} allowCRs={this._props.allowCRs} - contents={undefined} + contents={''} fieldContents={fieldProps} editing={selectedCell(this._props) ? undefined : false} GetValue={() => Field.toKeyValueString(fieldProps.Document, this._props.fieldKey, SnappingManager.MetaKey)} @@ -209,7 +208,7 @@ export class SchemaTableCell extends ObservableReactComponent { - constructor(props: any) { + constructor(props: SchemaTableCellProps) { super(props); makeObservable(this); } @@ -276,7 +275,7 @@ export class SchemaImageCell extends ObservableReactComponent { - constructor(props: any) { + constructor(props: SchemaTableCellProps) { super(props); makeObservable(this); } @@ -324,7 +323,7 @@ export class SchemaDateCell extends ObservableReactComponent { - constructor(props: any) { + constructor(props: SchemaTableCellProps) { super(props); makeObservable(this); } @@ -343,7 +342,7 @@ export class SchemaRTFCell extends ObservableReactComponent { - constructor(props: any) { + constructor(props: SchemaTableCellProps) { super(props); makeObservable(this); } @@ -356,18 +355,19 @@ export class SchemaBoolCell extends ObservableReactComponent | undefined) => { - if ((value?.nativeEvent as any).shiftKey) { + onChange={undoable((value: React.ChangeEvent | undefined) => { + if ((value?.nativeEvent as MouseEvent | PointerEvent).shiftKey) { this._props.setColumnValues(this._props.fieldKey.replace(/^_/, ''), (color === 'black' ? '=' : '') + (value?.target?.checked.toString() ?? '')); } else Doc.SetField(this._props.Document, this._props.fieldKey.replace(/^_/, ''), (color === 'black' ? '=' : '') + (value?.target?.checked.toString() ?? '')); - })} + }, 'set bool cell')} /> + Field.toKeyValueString(this._props.Document, this._props.fieldKey)} - SetValue={undoBatch((value: string, shiftDown?: boolean, enterKey?: boolean) => { + SetValue={undoable((value: string, shiftDown?: boolean, enterKey?: boolean) => { if (shiftDown && enterKey) { this._props.setColumnValues(this._props.fieldKey.replace(/^_/, ''), value); this._props.finishEdit?.(); @@ -376,7 +376,7 @@ export class SchemaBoolCell extends ObservableReactComponent
); @@ -384,7 +384,7 @@ export class SchemaBoolCell extends ObservableReactComponent { - constructor(props: any) { + constructor(props: SchemaTableCellProps) { super(props); makeObservable(this); } diff --git a/src/client/views/linking/LinkPopup.tsx b/src/client/views/linking/LinkPopup.tsx index 76a8396ff..9ce5f8fc9 100644 --- a/src/client/views/linking/LinkPopup.tsx +++ b/src/client/views/linking/LinkPopup.tsx @@ -1,9 +1,9 @@ /* eslint-disable react/require-default-props */ import { observer } from 'mobx-react'; import * as React from 'react'; -import { returnEmptyDoclist, returnEmptyFilter, returnFalse, returnTrue } from '../../../ClientUtils'; +import { returnEmptyFilter, returnFalse, returnTrue } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; -import { Doc } from '../../../fields/Doc'; +import { Doc, returnEmptyDoclist } from '../../../fields/Doc'; import { Transform } from '../../util/Transform'; import { DefaultStyleProvider, returnEmptyDocViewList } from '../StyleProvider'; import { SearchBox } from '../search/SearchBox'; diff --git a/src/client/views/newlightbox/NewLightboxView.tsx b/src/client/views/newlightbox/NewLightboxView.tsx index c86ddb745..b060fc0b6 100644 --- a/src/client/views/newlightbox/NewLightboxView.tsx +++ b/src/client/views/newlightbox/NewLightboxView.tsx @@ -1,17 +1,15 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { action, computed, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { returnEmptyDoclist, returnEmptyFilter, returnTrue } from '../../../ClientUtils'; +import { returnEmptyFilter, returnTrue } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; -import { CreateLinkToActiveAudio, Doc, DocListCast, Opt } from '../../../fields/Doc'; +import { CreateLinkToActiveAudio, Doc, DocListCast, Opt, returnEmptyDoclist } from '../../../fields/Doc'; import { InkTool } from '../../../fields/InkField'; import { Cast, NumCast, StrCast, toList } from '../../../fields/Types'; import { SnappingManager } from '../../util/SnappingManager'; import { Transform } from '../../util/Transform'; import { GestureOverlay } from '../GestureOverlay'; -import { DefaultStyleProvider } from '../StyleProvider'; +import { DefaultStyleProvider, returnEmptyDocViewList } from '../StyleProvider'; import { DocumentView } from '../nodes/DocumentView'; import { OpenWhere } from '../nodes/OpenWhere'; import { ExploreView } from './ExploreView'; @@ -68,7 +66,7 @@ export class NewLightboxView extends React.Component { @action public static SetCookie(cookie: string) { if (this.LightboxDoc && cookie) { - this._docFilters = (f => (this._docFilters ? [this._docFilters.push(f) as any, this._docFilters][1] : [f]))(`cookies:${cookie}:provide`); + this._docFilters = (f => (this._docFilters ? ([this._docFilters.push(f) as unknown, this._docFilters][1] as string[]) : [f]))(`cookies:${cookie}:provide`); } } public static AddDocTab = (docsIn: Doc | Doc[], location: OpenWhere, layoutTemplate?: Doc | string) => { @@ -264,7 +262,7 @@ export class NewLightboxView extends React.Component { styleProvider={DefaultStyleProvider} ScreenToLocalTransform={this.newLightboxScreenToLocal} renderDepth={0} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} childFilters={this.docFilters} childFiltersByRanges={returnEmptyFilter} searchFilterDocs={returnEmptyDoclist} @@ -320,7 +318,7 @@ export class NewLightboxView extends React.Component {
)}
- +
); diff --git a/src/client/views/newlightbox/RecommendationList/RecommendationList.tsx b/src/client/views/newlightbox/RecommendationList/RecommendationList.tsx index dc3339cd3..27413bac3 100644 --- a/src/client/views/newlightbox/RecommendationList/RecommendationList.tsx +++ b/src/client/views/newlightbox/RecommendationList/RecommendationList.tsx @@ -1,6 +1,4 @@ /* eslint-disable react/jsx-props-no-spreading */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable guard-for-in */ import { IconButton, Size, Type } from 'browndash-components'; import * as React from 'react'; @@ -168,7 +166,8 @@ export function RecommendationList() {
{keywordsLoc && keywordsLoc.map((word, ind) => ( -
+
+ {' '} {word} )}
-
{recs && recs.map((rec: IRecommendation) => )}
+
{recs && recs.map(rec => )}
); } diff --git a/src/client/views/nodes/KeyValuePair.tsx b/src/client/views/nodes/KeyValuePair.tsx index 8e74e1ca2..85aff04c3 100644 --- a/src/client/views/nodes/KeyValuePair.tsx +++ b/src/client/views/nodes/KeyValuePair.tsx @@ -2,9 +2,9 @@ import { Tooltip } from '@mui/material'; import { action, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { returnEmptyDoclist, returnEmptyFilter, returnFalse, returnZero } from '../../../ClientUtils'; +import { returnEmptyFilter, returnFalse, returnZero } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; -import { Doc, Field } from '../../../fields/Doc'; +import { Doc, Field, returnEmptyDoclist } from '../../../fields/Doc'; import { DocCast } from '../../../fields/Types'; import { DocumentOptions, FInfo } from '../../documents/Documents'; import { Transform } from '../../util/Transform'; diff --git a/src/client/views/nodes/LabelBox.tsx b/src/client/views/nodes/LabelBox.tsx index d33d12603..e39caecb6 100644 --- a/src/client/views/nodes/LabelBox.tsx +++ b/src/client/views/nodes/LabelBox.tsx @@ -1,10 +1,11 @@ import { Property } from 'csstype'; -import { action, computed, makeObservable, trace } from 'mobx'; +import { action, computed, makeObservable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import * as textfit from 'textfit'; import { Field, FieldType } from '../../../fields/Doc'; import { BoolCast, NumCast, StrCast } from '../../../fields/Types'; +import { TraceMobx } from '../../../fields/util'; import { DocumentType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; import { DragManager } from '../../util/DragManager'; @@ -100,7 +101,7 @@ export class LabelBox extends ViewBoxBaseComponent() { return textfitParams; }; render() { - trace(); + TraceMobx(); const boxParams = this.fitTextToBox(undefined); // this causes mobx to trigger re-render when data changes const label = this.Title.startsWith('#') ? null : this.Title; return ( diff --git a/src/client/views/nodes/LinkDocPreview.tsx b/src/client/views/nodes/LinkDocPreview.tsx index 10ff86a38..5026f52fb 100644 --- a/src/client/views/nodes/LinkDocPreview.tsx +++ b/src/client/views/nodes/LinkDocPreview.tsx @@ -4,9 +4,9 @@ import { action, computed, makeObservable, observable, runInAction } from 'mobx' import { observer } from 'mobx-react'; import * as React from 'react'; import wiki from 'wikijs'; -import { returnEmptyDoclist, returnEmptyFilter, returnEmptyString, returnFalse, returnNone, setupMoveUpEvents } from '../../../ClientUtils'; +import { returnEmptyFilter, returnEmptyString, returnFalse, returnNone, setupMoveUpEvents } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; -import { Doc, Opt } from '../../../fields/Doc'; +import { Doc, Opt, returnEmptyDoclist } from '../../../fields/Doc'; import { Cast, DocCast, NumCast, PromiseValue, StrCast } from '../../../fields/Types'; import { DocServer } from '../../DocServer'; import { DocumentType } from '../../documents/DocumentTypes'; @@ -17,6 +17,7 @@ import { SearchUtil } from '../../util/SearchUtil'; import { SnappingManager } from '../../util/SnappingManager'; import { Transform } from '../../util/Transform'; import { ObservableReactComponent } from '../ObservableReactComponent'; +import { returnEmptyDocViewList } from '../StyleProvider'; import { DocumentView } from './DocumentView'; import { StyleProviderFuncType } from './FieldView'; import './LinkDocPreview.scss'; @@ -286,7 +287,7 @@ export class LinkDocPreview extends ObservableReactComponent deselectPin = () => { if (this.selectedPin) { // Removes filter - Doc.setDocFilter(this.Document, 'latitude', this.selectedPin.latitude, 'remove'); - Doc.setDocFilter(this.Document, 'longitude', this.selectedPin.longitude, 'remove'); + Doc.setDocFilter(this.Document, 'latitude', NumCast(this.selectedPin.latitude), 'remove'); + Doc.setDocFilter(this.Document, 'longitude', NumCast(this.selectedPin.longitude), 'remove'); Doc.setDocFilter(this.Document, LinkedTo, `mapPin=${Field.toScriptString(DocCast(this.selectedPin))}`, 'remove'); const temp = this.selectedPin; @@ -536,8 +537,8 @@ export class MapBoxContainer extends ViewBoxAnnotatableComponent deleteSelectedPin = undoable(() => { if (this.selectedPin) { // Removes filter - Doc.setDocFilter(this.Document, 'latitude', this.selectedPin.latitude, 'remove'); - Doc.setDocFilter(this.Document, 'longitude', this.selectedPin.longitude, 'remove'); + Doc.setDocFilter(this.Document, 'latitude', NumCast(this.selectedPin.latitude), 'remove'); + Doc.setDocFilter(this.Document, 'longitude', NumCast(this.selectedPin.longitude), 'remove'); Doc.setDocFilter(this.Document, LinkedTo, `mapPin=${Field.toScriptString(DocCast(this.selectedPin))}`, 'remove'); this.removePushpin(this.selectedPin); diff --git a/src/client/views/nodes/trails/PresElementBox.tsx b/src/client/views/nodes/trails/PresElementBox.tsx index 25adfba23..a76805960 100644 --- a/src/client/views/nodes/trails/PresElementBox.tsx +++ b/src/client/views/nodes/trails/PresElementBox.tsx @@ -1,11 +1,9 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; import { action, computed, IReactionDisposer, makeObservable, observable, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { returnEmptyDoclist, returnFalse, returnTrue, setupMoveUpEvents } from '../../../../ClientUtils'; +import { returnFalse, returnTrue, setupMoveUpEvents } from '../../../../ClientUtils'; import { Doc, DocListCast, Opt } from '../../../../fields/Doc'; import { Id } from '../../../../fields/FieldSymbols'; import { List } from '../../../../fields/List'; @@ -23,6 +21,7 @@ import { EditableView } from '../../EditableView'; import { Colors } from '../../global/globalEnums'; import { PinDocView } from '../../PinFuncs'; import { StyleProp } from '../../StyleProp'; +import { returnEmptyDocViewList } from '../../StyleProvider'; import { DocumentView } from '../DocumentView'; import { FieldView, FieldViewProps } from '../FieldView'; import { PresBox } from './PresBox'; @@ -105,7 +104,7 @@ export class PresElementBox extends ViewBoxBaseComponent() { embedHeight = () => this.collapsedHeight + this.expandViewHeight; embedWidth = () => this._props.PanelWidth() / 2; // prettier-ignore - styleProvider = ( doc: Doc | undefined, props: Opt, property: string ): any => + styleProvider = ( doc: Doc | undefined, props: Opt, property: string ) => (property === StyleProp.Opacity ? 1 : this._props.styleProvider?.(doc, props, property)); /** * The function that is responsible for rendering a preview or not for this @@ -123,7 +122,7 @@ export class PresElementBox extends ViewBoxBaseComponent() { hideLinkButton ScreenToLocalTransform={Transform.Identity} renderDepth={this._props.renderDepth + 1} - containerViewPath={returnEmptyDoclist} + containerViewPath={returnEmptyDocViewList} childFilters={this._props.childFilters} childFiltersByRanges={this._props.childFiltersByRanges} searchFilterDocs={this._props.searchFilterDocs} @@ -144,6 +143,7 @@ export class PresElementBox extends ViewBoxBaseComponent() { const childDocs = DocListCast(this.targetDoc.data); const groupSlides = childDocs.map((doc: Doc, ind: number) => (
{ e.stopPropagation(); @@ -156,7 +156,7 @@ export class PresElementBox extends ViewBoxBaseComponent() { StrCast(doc.title)} SetValue={(value: string) => { @@ -179,7 +179,7 @@ export class PresElementBox extends ViewBoxBaseComponent() { @action headerDown = (e: React.PointerEvent) => { - const element = e.target as any; + const element = e.target as HTMLDivElement; e.stopPropagation(); e.preventDefault(); if (element && !(e.ctrlKey || e.metaKey || e.button === 2)) { @@ -580,7 +580,7 @@ export class PresElementBox extends ViewBoxBaseComponent() { className={`presItem-slide ${isCurrent ? 'active' : ''}${activeItem.runProcess ? ' testingv2' : ''}`} style={{ display: 'infline-block', - backgroundColor: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor), + backgroundColor: this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) as string, // layout_boxShadow: presBoxColor && presBoxColor !== 'white' && presBoxColor !== 'transparent' ? (isCurrent ? '0 0 0px 1.5px' + presBoxColor : undefined) : undefined, border: presBoxColor && presBoxColor !== 'white' && presBoxColor !== 'transparent' ? (isCurrent ? presBoxColor + ' solid 2.5px' : undefined) : undefined, }}> @@ -602,7 +602,7 @@ export class PresElementBox extends ViewBoxBaseComponent() { } }} onClick={e => e.stopPropagation()}>{`${this.indexInPres + 1}. `}
- StrCast(activeItem.title)} SetValue={this.onSetValue} /> + StrCast(activeItem.title)} SetValue={this.onSetValue} />
{/*
{"Movement speed"}
}>
{this.transition}
*/} {/*
{"Duration"}
}>
{this.duration}
*/} diff --git a/src/client/views/topbar/TopBar.tsx b/src/client/views/topbar/TopBar.tsx index e558e14e3..a85606bc4 100644 --- a/src/client/views/topbar/TopBar.tsx +++ b/src/client/views/topbar/TopBar.tsx @@ -5,8 +5,8 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { Flip } from 'react-awesome-reveal'; import { FaBug } from 'react-icons/fa'; -import { returnEmptyDoclist, returnEmptyFilter, returnFalse, returnTrue } from '../../../ClientUtils'; -import { Doc, DocListCast } from '../../../fields/Doc'; +import { returnEmptyFilter, returnFalse, returnTrue } from '../../../ClientUtils'; +import { Doc, DocListCast, returnEmptyDoclist } from '../../../fields/Doc'; import { AclAdmin, DashVersion } from '../../../fields/DocSymbols'; import { StrCast } from '../../../fields/Types'; import { GetEffectiveAcl } from '../../../fields/util'; @@ -33,11 +33,11 @@ import './TopBar.scss'; * and settings and help buttons. Future scope for this bar is to include the collaborators that are on the same Dashboard. */ @observer -export class TopBar extends ObservableReactComponent<{}> { +export class TopBar extends ObservableReactComponent { // eslint-disable-next-line no-use-before-define static Instance: TopBar; @observable private _flipDocumentation = 0; - constructor(props: any) { + constructor(props: object) { super(props); makeObservable(this); TopBar.Instance = this; diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index e6a95fd30..7e7c319bf 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -1658,6 +1658,10 @@ export namespace Doc { } } +export function returnEmptyDoclist() { + return [] as Doc[]; +} + export function RTFIsFragment(html: string) { return html.indexOf('data-pm-slice') !== -1; } diff --git a/src/mobile/ImageUpload.scss b/src/mobile/ImageUpload.scss deleted file mode 100644 index e4156ee8e..000000000 --- a/src/mobile/ImageUpload.scss +++ /dev/null @@ -1,139 +0,0 @@ -@import '../client/views/global/globalCssVariables.module.scss'; - -.imgupload_cont { - display: flex; - justify-content: center; - flex-direction: column; - align-items: center; - max-width: 400px; - min-width: 400px; - - .upload_label { - font-weight: 700; - color: black; - background-color: rgba(0, 0, 0, 0); - border: solid 3px black; - margin: 10px; - font-size: 30; - height: 70px; - width: 80%; - display: flex; - font-family: sans-serif; - text-transform: uppercase; - justify-content: center; - flex-direction: column; - border-radius: 10px; - } - - .file { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - direction: ltr; - } - - .button_file { - text-align: center; - height: 50%; - width: 50%; - background-color: paleturquoise; - color: grey; - font-size: 3em; - } - - .inputfile { - width: 0.1px; - height: 0.1px; - opacity: 0; - overflow: hidden; - position: absolute; - z-index: -1; - } - - .inputfile + label { - font-weight: 700; - color: black; - background-color: rgba(0, 0, 0, 0); - border: solid 3px black; - margin: 10px; - font-size: 30; - height: 70px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - margin-top: 30px; - width: 80%; - display: flex; - font-family: sans-serif; - text-transform: uppercase; - justify-content: center; - flex-direction: column; - border-radius: 10px; - } - - .inputfile.active + label { - font-style: italic; - color: black; - background-color: lightgreen; - border: solid 3px darkgreen; - } - - .status { - font-size: 2em; - } -} - -.image-upload { - top: 100%; - opacity: 0; -} - -.image-upload.active { - top: 0; - position: absolute; - z-index: 999; - height: 100vh; - width: 100vw; - opacity: 1; -} - -.uploadContainer { - top: 40; - position: absolute; - z-index: 1000; - height: 20vh; - width: 80vw; - opacity: 1; -} - -.closeUpload { - position: absolute; - border-radius: 10px; - top: 3; - color: black; - font-size: 30; - right: 3; - z-index: 1002; - padding: 0px 3px; - background: rgba(0, 0, 0, 0); - transition: 0.5s ease all; - border: 0px solid; -} - -.loadingImage { - display: inline-flex; - width: max-content; -} - -.loadingSlab { - position: relative; - width: 30px; - height: 30px; - margin: 10; - border-radius: 20px; - opacity: 0.2; - background-color: black; - transition: - all 2s, - opacity 1.5s; -} diff --git a/src/mobile/ImageUpload.tsx b/src/mobile/ImageUpload.tsx deleted file mode 100644 index 36c0d6a4d..000000000 --- a/src/mobile/ImageUpload.tsx +++ /dev/null @@ -1,170 +0,0 @@ -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { action, observable } from 'mobx'; -import { observer } from 'mobx-react'; -import * as React from 'react'; -import * as rp from 'request-promise'; -import { ClientUtils } from '../ClientUtils'; -import { DocServer } from '../client/DocServer'; -import { Networking } from '../client/Network'; -import { Docs } from '../client/documents/Documents'; -import { MainViewModal } from '../client/views/MainViewModal'; -import { Doc, Opt } from '../fields/Doc'; -import { List } from '../fields/List'; -import { listSpec } from '../fields/Schema'; -import { Cast } from '../fields/Types'; -import './ImageUpload.scss'; - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { DFLT_IMAGE_NATIVE_DIM } = require('../client/views/global/globalCssVariables.module.scss'); // prettier-ignore - -export interface ImageUploadProps { - Document: Doc; // Target document for upload (upload location) -} - -const inputRef = React.createRef(); -const defaultNativeImageDim = Number(DFLT_IMAGE_NATIVE_DIM.replace('px', '')); - -@observer -export class Uploader extends React.Component { - @observable nm: string = 'Choose files'; // Text of 'Choose Files' button - @observable process: string = ''; // Current status of upload - @observable private dialogueBoxOpacity = 1; - - onClick = async () => { - try { - // eslint-disable-next-line react/destructuring-assignment - const col = this.props.Document; - await Docs.Prototypes.initialize(); - const imgPrev = document.getElementById('img_preview'); - this.setOpacity(1, '1'); // Slab 1 - if (imgPrev && inputRef.current) { - const { files } = inputRef.current; - this.setOpacity(2, '1'); // Slab 2 - if (files && files.length !== 0) { - this.process = 'Uploading Files'; - for (let index = 0; index < files.length; ++index) { - const file = files[index]; - // eslint-disable-next-line no-await-in-loop - const res = await Networking.UploadFilesToServer({ file }); - this.setOpacity(3, '1'); // Slab 3 - // For each item that the user has selected - res.map(async ({ result }) => { - const { name } = file; - if (result instanceof Error) { - return; - } - const path = result.accessPaths.agnostic.client; - let doc = null; - // Case 1: File is a video - if (file.type === 'video/mp4') { - doc = Docs.Create.VideoDocument(path, { _nativeWidth: defaultNativeImageDim, _width: 400, title: name }); - // Case 2: File is a PDF document - } else if (file.type === 'application/pdf') { - doc = Docs.Create.PdfDocument(path, { _nativeWidth: defaultNativeImageDim, _width: 400, title: name }); - // Case 3: File is another document type (most likely Image) - } else { - doc = Docs.Create.ImageDocument(path, { _nativeWidth: defaultNativeImageDim, _width: 400, title: name }); - } - this.setOpacity(4, '1'); // Slab 4 - const docidsRes = await rp.get(ClientUtils.prepend('/getUserDocumentIds')); - if (!docidsRes) { - throw new Error('No user id returned'); - } - const field = await DocServer.GetRefField(JSON.parse(docidsRes).userDocumentId); - let pending: Opt; - if (field instanceof Doc) { - pending = col; - } - if (pending) { - const data = Cast(pending.data, listSpec(Doc)); - if (data) data.push(doc); - else pending.data = new List([doc]); - this.setOpacity(5, '1'); // Slab 5 - this.process = 'File ' + (index + 1).toString() + ' Uploaded'; - this.setOpacity(6, '1'); // Slab 6 - } - if (index + 1 === files.length) { - this.process = 'Uploads Completed'; - this.setOpacity(7, '1'); // Slab 7 - } - }); - } - // Case in which the user pressed upload and no files were selected - } else { - this.process = 'No file selected'; - } - // Three seconds after upload the menu will reset - setTimeout(this.clearUpload, 3000); - } - } catch (error) { - console.log(JSON.stringify(error)); - } - }; - - // Returns the upload interface for mobile - private get uploadInterface() { - return ( -
-
this.closeUpload()}> - -
- - - -
- Upload -
- -
-
-
-
-
-
-
-
-
-

{this.process}

-
- ); - } - - // Updates label after a files is selected (so user knows a file is uploaded) - inputLabel = async () => { - const files: FileList | null = await inputRef.current!.files; - if (files && files.length === 1) { - this.nm = files[0].name; - } else if (files && files.length > 1) { - this.nm = files.length.toString() + ' files selected'; - } - }; // Loops through load icons, and resets buttons - @action - clearUpload = () => { - for (let i = 1; i < 8; i++) { - this.setOpacity(i, '0.2'); - } - this.nm = 'Choose files'; - - if (inputRef.current) { - inputRef.current.value = ''; - } - this.process = ''; - }; - - // Clears the upload and closes the upload menu - closeUpload = () => { - this.clearUpload(); - }; - - // Handles the setting of the loading bar - setOpacity = (index: number, opacity: string) => { - const slab = document.getElementById('slab' + index); - if (slab) slab.style.opacity = opacity; - }; - - render() { - return ; - } -} diff --git a/src/mobile/InkControls.tsx b/src/mobile/InkControls.tsx deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/mobile/MobileInkOverlay.scss b/src/mobile/MobileInkOverlay.scss deleted file mode 100644 index b9c1fb146..000000000 --- a/src/mobile/MobileInkOverlay.scss +++ /dev/null @@ -1,39 +0,0 @@ -.mobileInkOverlay { - border: 10px dashed red; - background-color: rgba(0, 0, 0, .05); -} - -.mobileInkOverlay-border { - // background-color: rgba(0, 255, 0, .4); - position: absolute; - pointer-events: auto; - cursor: pointer; - - &.top { - width: calc(100% + 20px); - height: 10px; - top: -10px; - left: -10px; - } - - &.left { - width: 10px; - height: calc(100% + 20px); - top: -10px; - left: -10px; - } - - &.right { - width: 10px; - height: calc(100% + 20px); - top: -10px; - right: -10px; - } - - &.bottom { - width: calc(100% + 20px); - height: 10px; - bottom: -10px; - left: -10px; - } -} \ No newline at end of file diff --git a/src/mobile/MobileInkOverlay.tsx b/src/mobile/MobileInkOverlay.tsx deleted file mode 100644 index 6babd2f39..000000000 --- a/src/mobile/MobileInkOverlay.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { action, observable } from 'mobx'; -import { observer } from 'mobx-react'; -import * as React from 'react'; -import { DocServer } from '../client/DocServer'; -import { DragManager } from '../client/util/DragManager'; -import { Doc } from '../fields/Doc'; -import { Gestures } from '../pen-gestures/GestureTypes'; -import { GestureContent, MobileDocumentUploadContent, MobileInkOverlayContent, UpdateMobileInkOverlayPositionContent } from '../server/Message'; -import './MobileInkOverlay.scss'; - -@observer -export default class MobileInkOverlay extends React.Component { - public static Instance: MobileInkOverlay; - - @observable private _scale: number = 1; - @observable private _width: number = 0; - @observable private _height: number = 0; - @observable private _x: number = -300; - @observable private _y: number = -300; - @observable private _text: string = ''; - - @observable private _offsetX: number = 0; - @observable private _offsetY: number = 0; - @observable private _isDragging: boolean = false; - private _mainCont: React.RefObject = React.createRef(); - - constructor(props: Readonly<{}>) { - super(props); - MobileInkOverlay.Instance = this; - } - - initialSize(mobileWidth: number, mobileHeight: number) { - const maxWidth = window.innerWidth - 30; - const maxHeight = window.innerHeight - 30; // -30 for padding - if (mobileWidth > maxWidth || mobileHeight > maxHeight) { - const scale = Math.min(maxWidth / mobileWidth, maxHeight / mobileHeight); - return { width: mobileWidth * scale, height: mobileHeight * scale, scale: scale }; - } - return { width: mobileWidth, height: mobileHeight, scale: 1 }; - } - - @action - initMobileInkOverlay(content: MobileInkOverlayContent) { - const { width, height, text } = content; - const scaledSize = this.initialSize(width ? width : 0, height ? height : 0); - this._width = scaledSize.width; - this._height = scaledSize.height; - this._scale = scaledSize.scale; - this._x = 300; // TODO: center on screen - this._y = 25; // TODO: center on screen - this._text = text ? text : ''; - } - - @action - updatePosition(content: UpdateMobileInkOverlayPositionContent) { - const { dx, dy, dsize } = content; - if (dx) this._x += dx; - if (dy) this._y += dy; - // TODO: scale dsize - } - - drawStroke = (content: GestureContent) => { - // TODO: figure out why strokes drawn in corner of mobile interface dont get inserted - - const { points, bounds } = content; - console.log('received points', points, bounds); - - const B = { - right: bounds.right * this._scale + this._x, - left: bounds.left * this._scale + this._x, // TODO: scale - bottom: bounds.bottom * this._scale + this._y, - top: bounds.top * this._scale + this._y, // TODO: scale - width: bounds.width * this._scale, - height: bounds.height * this._scale, - }; - - const target = document.elementFromPoint(this._x + 10, this._y + 10); - target?.dispatchEvent( - new CustomEvent('dashOnGesture', { - bubbles: true, - detail: { - points: points, - gesture: Gestures.Stroke, - bounds: B, - }, - }) - ); - }; - - uploadDocument = async (content: MobileDocumentUploadContent) => { - const { docId } = content; - const doc = await DocServer.GetRefField(docId); - - if (doc && doc instanceof Doc) { - const target = document.elementFromPoint(this._x + 10, this._y + 10); - const dragData = new DragManager.DocumentDragData([doc]); - const complete = new DragManager.DragCompleteEvent(false, dragData); - - if (target) { - console.log('dispatching upload doc!!!!', target, doc); - target.dispatchEvent( - new CustomEvent('dashOnDrop', { - bubbles: true, - detail: { - x: this._x, - y: this._y, - complete: complete, - altKey: false, - metaKey: false, - ctrlKey: false, - shiftKey: false, - embedKey: false, - }, - }) - ); - } else { - alert('TARGET IS UNDEFINED'); - } - } - }; - - @action - dragStart = (e: React.PointerEvent) => { - document.removeEventListener('pointermove', this.dragging); - document.removeEventListener('pointerup', this.dragEnd); - document.addEventListener('pointermove', this.dragging); - document.addEventListener('pointerup', this.dragEnd); - - this._isDragging = true; - this._offsetX = e.pageX - this._mainCont.current!.getBoundingClientRect().left; - this._offsetY = e.pageY - this._mainCont.current!.getBoundingClientRect().top; - - e.preventDefault(); - e.stopPropagation(); - }; - - @action - dragging = (e: PointerEvent) => { - const x = e.pageX - this._offsetX; - const y = e.pageY - this._offsetY; - - // TODO: don't allow drag over library? - this._x = Math.min(Math.max(x, 0), window.innerWidth - this._width); - this._y = Math.min(Math.max(y, 0), window.innerHeight - this._height); - - e.preventDefault(); - e.stopPropagation(); - }; - - @action - dragEnd = (e: PointerEvent) => { - document.removeEventListener('pointermove', this.dragging); - document.removeEventListener('pointerup', this.dragEnd); - - this._isDragging = false; - - e.preventDefault(); - e.stopPropagation(); - }; - - render() { - return ( -
-

{this._text}

-
-
-
-
-
- ); - } -} diff --git a/src/mobile/MobileInterface.scss b/src/mobile/MobileInterface.scss deleted file mode 100644 index 4b32c3da0..000000000 --- a/src/mobile/MobileInterface.scss +++ /dev/null @@ -1,445 +0,0 @@ -$navbar-height: 120px; -$pathbar-height: 50px; - -@media only screen and (max-device-width: 480px) { - * { - margin: 0px; - padding: 0px; - box-sizing: border-box; - font-family: sans-serif; - } -} - -body { - overflow: hidden; -} - -.mobileInterface-container { - height: 100%; - position: relative; - touch-action: none; - width: 100%; - - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -// Topbar of Dash Mobile -.navbar { - position: fixed; - top: 0px; - left: 0px; - width: 100vw; - height: $navbar-height; - background-color: whitesmoke; - z-index: 150; - - .cover { - position: absolute; - right: 0px; - top: 0px; - height: 120px; - width: 120px; - background-color: whitesmoke; - z-index: 200; - } - - .toggle-btn { - position: absolute; - right: 20px; - top: 30px; - height: 70px; - width: 70px; - transition: all 400ms ease-in-out 200ms; - z-index: 180; - } - - .background { - position: absolute; - right: 0px; - top: 0px; - height: 120px; - width: 120px; - //border: 1px solid black; - } - - .background.active { - background-color: lightgrey; - } - - .toggle-btn-home { - right: -200px; - } - - .header { - position: absolute; - top: 50%; - top: calc(9px + 50%); - right: 50%; - transform: translate(50%, -50%); - font-size: 40; - font-weight: 700; - text-align: center; - user-select: none; - text-transform: uppercase; - font-family: Arial, Helvetica, sans-serif; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - direction: ltr; - width: 600px; - } - - .toggle-btn span { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 70%; - height: 4px; - background: black; - transition: all 200ms ease; - z-index: 180; - } - - .toggle-btn span:nth-child(1) { - transition: top 200ms ease-in-out; - top: 30%; - } - - .toggle-btn span:nth-child(3) { - transition: top 200ms ease-in-out; - top: 70%; - } - - .toggle-btn.active { - transition: transform 200ms ease-in-out 200ms; - transform: rotate(135deg); - } - - .toggle-btn.active span:nth-child(1) { - top: 50%; - } - - .toggle-btn.active span:nth-child(2) { - transform: translate(-50%, -50%) rotate(90deg); - } - - .toggle-btn.active span:nth-child(3) { - top: 50%; - } -} - -.sidebar { - position: fixed; - top: 120px; - opacity: 0; - right: -100%; - width: 80%; - height: calc(80% - (120px)); - z-index: 101; - background-color: whitesmoke; - transition: all 400ms ease 50ms; - padding: 20px; - box-shadow: 0 0 5px 5px grey; - - .item { - width: 100%; - padding: 13px 12px; - border-bottom: 1px solid rgba(200, 200, 200, 0.7); - font-family: Arial, Helvetica, sans-serif; - font-style: normal; - font-weight: normal; - user-select: none; - display: inline-flex; - font-size: 35px; - text-transform: uppercase; - color: black; - } - - .ink:focus { - outline: 1px solid blue; - } - - .sidebarButtons { - top: 80px; - position: relative; - } -} - - - - - - -.blanket { - position: fixed; - top: 120px; - opacity: 0.5; - right: -100%; - width: 100%; - height: calc(100% - (120px)); - z-index: 101; - background-color: grey; - padding: 20px; -} - -.blanket.active { - position: absolute; - right: 0%; - z-index: 100; -} - -.home { - position: absolute; - top: 30px; - left: 30px; - font-size: 60; - user-select: none; - text-transform: uppercase; - font-family: Arial, Helvetica, sans-serif; - z-index: 200; -} - -.item-type { - display: inline; - text-transform: lowercase; - margin-left: 20px; - font-size: 35px; - font-style: italic; - color: rgb(28, 28, 28); -} - -.item-title { - max-width: 70%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.right { - margin-left: 20px; - z-index: 200; -} - -.open { - right: 20px; - font-size: 35; - position: absolute; -} - -.left { - width: 100%; - height: 100%; -} - - - -.sidebar.active { - position: absolute; - right: 0%; - opacity: 1; - z-index: 101; -} - -.back { - position: absolute; - left: 42px; - top: 0; - background: #1a1a1a; - width: 50px; - height: 100%; - display: flex; - justify-content: center; - text-align: center; - flex-direction: column; - align-items: center; - border-radius: 10px; - font-size: 25px; - user-select: none; - z-index: 100; -} - -.pathbar { - position: fixed; - top: 118px; - left: 0px; - background: #1a1a1a; - z-index: 120; - border-radius: 0px; - width: 100%; - height: 80px; - overflow: hidden; - - .pathname { - position: relative; - font-size: 25; - top: 50%; - width: 86%; - left: 12%; - color: whitesmoke; - transform: translate(0%, -50%); - z-index: 20; - font-family: sans-serif; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - direction: rtl; - text-align: left; - text-transform: uppercase; - } - - .scrollmenu { - overflow: auto; - width: 100%; - height: 100%; - white-space: nowrap; - display: inline-flex; - } - - .hidePath { - position: absolute; - height: 100%; - width: 200px; - left: 0px; - top: 0px; - background-image: linear-gradient(to right, #1a1a1a, rgba(0, 0, 0, 0)); - text-align: center; - user-select: none; - z-index: 99; - pointer-events: none; - } - - .pathbarItem { - position: relative; - display: flex; - align-items: center; - color: whitesmoke; - text-align: center; - justify-content: center; - user-select: none; - transform: translate(100px, 0px); - font-size: 30px; - padding: 10px; - text-transform: uppercase; - - .pathbarText { - font-family: sans-serif; - text-align: center; - height: 50px; - padding: 10px; - font-size: 30px; - border-radius: 10px; - text-transform: uppercase; - margin-left: 20px; - position: relative; - } - - .pathIcon { - transform: translate(0px, 0px); - position: relative; - } - } -} - - -/** -* docButton appears at the bottom of mobile document -* Buttons include: pin to presentation, download, upload, reload -*/ -.docButton { - position: relative; - width: 100px; - display: flex; - height: 100px; - font-size: 70px; - text-align: center; - border: 3px solid black; - margin: 20px; - z-index: 100; - border-radius: 100%; - justify-content: center; - flex-direction: column; - align-items: center; -} - -.docButtonContainer { - top: 80%; - position: absolute; - display: flex; - transform: translate(-50%, 0); - left: 50%; - z-index: 100; -} - -.toolbar { - left: 50%; - transform: translate(-50%); - position: absolute; - height: max-content; - top: 0px; - border-radius: 20px; - background-color: lightgrey; - opacity: 0; - transition: all 400ms ease 50ms; -} - -.toolbar.active { - display: inline-block; - width: 300px; - padding: 5px; - opacity: 1; - height: max-content; - top: -450px; -} - -.colorSelector { - position: absolute; - top: 550px; - left: 280px; - transform: translate(-50%, 0); - z-index: 100; - display: inline-flex; - width: max-content; - height: max-content; - pointer-events: all; - font-size: 80px; - user-select: none; -} - -// Menu buttons for toggling between list and icon view -.homeSwitch { - position: fixed; - top: 212; - right: 36px; - display: inline-flex; - width: max-content; - z-index: 99; - height: 70px; - - .list { - width: 70px; - height: 70px; - margin: 5; - padding: 10; - align-items: center; - text-align: center; - font-size: 50; - border-style: solid; - border-width: 3; - border-color: black; - background: whitesmoke; - align-self: center; - border-radius: 10px; - } - - .list.active { - color: darkred; - border-color: darkred; - } -} \ No newline at end of file diff --git a/src/mobile/MobileInterface.tsx b/src/mobile/MobileInterface.tsx deleted file mode 100644 index 4f37c45a8..000000000 --- a/src/mobile/MobileInterface.tsx +++ /dev/null @@ -1,871 +0,0 @@ -import { library } from '@fortawesome/fontawesome-svg-core'; -import { - faAddressCard, - faAlignLeft, - faAlignRight, - faAngleDoubleLeft, - faAngleRight, - faArrowDown, - faArrowLeft, - faArrowRight, - faArrowUp, - faArrowsAltH, - faAsterisk, - faBars, - faBell, - faBolt, - faBook, - faBrain, - faBullseye, - faCalculator, - faCamera, - faCaretDown, - faCaretLeft, - faCaretRight, - faCaretSquareDown, - faCaretSquareRight, - faCaretUp, - faCat, - faCheck, - faChevronLeft, - faChevronRight, - faClipboard, - faClone, - faCloudUploadAlt, - faCommentAlt, - faCompressArrowsAlt, - faCut, - faEdit, - faEllipsisV, - faEraser, - faExclamation, - faExpand, - faExternalLinkAlt, - faExternalLinkSquareAlt, - faEye, - faFileAlt, - faFileAudio, - faFileDownload, - faFilePdf, - faFilm, - faFilter, - faFolderOpen, - faFont, - faGlobeAsia, - faHandPointLeft, - faHighlighter, - faHome, - faImage, - faLocationArrow, - faLongArrowAltLeft, - faLongArrowAltRight, - faMicrophone, - faCircleHalfStroke, - faMinus, - faMobile, - faMousePointer, - faMusic, - faObjectGroup, - faPaintBrush, - faPalette, - faPause, - faPen, - faPenNib, - faPhone, - faPlay, - faPlus, - faPortrait, - faQuestionCircle, - faQuoteLeft, - faRedoAlt, - faReply, - faSearch, - faStamp, - faStickyNote, - faStop, - faTasks, - faTerminal, - faTh, - faThLarge, - faThumbtack, - faTimes, - faToggleOn, - faTrash, - faTrashAlt, - faTree, - faTv, - faUndoAlt, - faVideo, - faWindowClose, - faWindowMaximize, - faFile as fileSolid, -} from '@fortawesome/free-solid-svg-icons'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { action, computed, observable, runInAction } from 'mobx'; -import { observer } from 'mobx-react'; -import * as React from 'react'; -import { returnEmptyDoclist, returnEmptyFilter, returnFalse, returnTrue } from '../ClientUtils'; -import { CollectionViewType, DocumentType } from '../client/documents/DocumentTypes'; -import { Docs, DocumentOptions } from '../client/documents/Documents'; -import { CurrentUserUtils } from '../client/util/CurrentUserUtils'; -import { ScriptingGlobals } from '../client/util/ScriptingGlobals'; -import { SettingsManager } from '../client/util/SettingsManager'; -import { Transform } from '../client/util/Transform'; -import { UndoManager } from '../client/util/UndoManager'; -import { DashboardView } from '../client/views/DashboardView'; -import { GestureOverlay } from '../client/views/GestureOverlay'; -import { AudioBox } from '../client/views/nodes/AudioBox'; -import { DocumentView } from '../client/views/nodes/DocumentView'; -import { RadialMenu } from '../client/views/nodes/RadialMenu'; -import { RichTextMenu } from '../client/views/nodes/formattedText/RichTextMenu'; -import { Doc, DocListCast } from '../fields/Doc'; -import { InkTool } from '../fields/InkField'; -import { List } from '../fields/List'; -import { ScriptField } from '../fields/ScriptField'; -import { Cast, FieldValue, StrCast } from '../fields/Types'; -import './AudioUpload.scss'; -import { Uploader } from './ImageUpload'; -import './ImageUpload.scss'; -import './MobileInterface.scss'; -import { emptyFunction } from '../Utils'; - -library.add( - ...[ - faTasks, - faReply, - faQuoteLeft, - faHandPointLeft, - faFolderOpen, - faAngleDoubleLeft, - faExternalLinkSquareAlt, - faMobile, - faThLarge, - faWindowClose, - faEdit, - faTrashAlt, - faPalette, - faAngleRight, - faBell, - faTrash, - faCamera, - faExpand, - faCaretDown, - faCaretLeft, - faCaretRight, - faCaretSquareDown, - faCaretSquareRight, - faArrowsAltH, - faPlus, - faMinus, - faTerminal, - faToggleOn, - fileSolid, - faExternalLinkAlt, - faLocationArrow, - faSearch, - faFileDownload, - faStop, - faCalculator, - faWindowMaximize, - faAddressCard, - faQuestionCircle, - faArrowLeft, - faArrowRight, - faArrowDown, - faArrowUp, - faBolt, - faBullseye, - faCaretUp, - faCat, - faCheck, - faChevronRight, - faClipboard, - faClone, - faCloudUploadAlt, - faCommentAlt, - faCompressArrowsAlt, - faCut, - faEllipsisV, - faEraser, - faExclamation, - faFileAlt, - faFileAudio, - faFilePdf, - faFilm, - faFilter, - faFont, - faGlobeAsia, - faHighlighter, - faLongArrowAltRight, - faMicrophone, - faCircleHalfStroke, - faMousePointer, - faMusic, - faObjectGroup, - faPause, - faPen, - faPenNib, - faPhone, - faPlay, - faPortrait, - faRedoAlt, - faStamp, - faStickyNote, - faThumbtack, - faTree, - faTv, - faUndoAlt, - faBook, - faVideo, - faAsterisk, - faBrain, - faImage, - faPaintBrush, - faTimes, - faEye, - faHome, - faLongArrowAltLeft, - faBars, - faTh, - faChevronLeft, - faAlignLeft, - faAlignRight, - ].map(m => m as any) -); - -@observer -export class MobileInterface extends React.Component { - static Instance: MobileInterface; - private _library: Doc; - private _mainDoc: any = CurrentUserUtils.setupActiveMobileMenu(Doc.UserDoc()); - @observable private _sidebarActive: boolean = false; //to toggle sidebar display - @observable private _imageUploadActive: boolean = false; //to toggle image upload - @observable private _audioUploadActive: boolean = false; - @observable private _menuListView: boolean = false; //to switch between menu view (list / icon) - @observable private _ink: boolean = false; //toggle whether ink is being dispalyed - @observable private _homeMenu: boolean = true; // to determine whether currently at home menu - @observable private dashboards: Doc | null = null; // currently selected document - @observable private _activeDoc: Doc = this._mainDoc; // doc updated as the active mobile page is updated (initially home menu) - @observable private _homeDoc: Doc = this._mainDoc; // home menu as a document - @observable private _parents: Array = []; // array of parent docs (for pathbar) - - @computed private get mainContainer() { - return Doc.UserDoc() ? FieldValue(Cast(Doc.UserDoc().activeMobile, Doc)) : Doc.GuestMobile; - } - - constructor(props: Readonly<{}>) { - super(props); - this._library = CurrentUserUtils.setupDashboards(Doc.UserDoc(), 'myDashboards'); // to access documents in Dash Web - MobileInterface.Instance = this; - } - - @action - componentDidMount() { - // if the home menu is in list view -> adjust the menu toggle appropriately - this._menuListView = this._homeDoc._type_collection === 'stacking' ? true : false; - Doc.ActiveTool = InkTool.None; // ink should intially be set to none - Doc.UserDoc().activeMobile = this._homeDoc; // active mobile set to home - - // remove double click to avoid mobile zoom in - document.removeEventListener('dblclick', this.onReactDoubleClick); - document.addEventListener('dblclick', this.onReactDoubleClick); - } - - @action - componentWillUnmount = () => { - document.removeEventListener('dblclick', this.onReactDoubleClick); - }; - - // Prevent zooming in when double tapping the screen - onReactDoubleClick = (e: MouseEvent) => { - e.stopPropagation(); - }; - - // Switch the mobile view to the given doc - @action - switchCurrentView = (doc: Doc, renderView?: () => JSX.Element, onSwitch?: () => void) => { - if (!Doc.UserDoc()) return; - if (this._activeDoc === this._homeDoc) { - this._parents.push(this._activeDoc); - this._homeMenu = false; - } - this._activeDoc = doc; - Doc.UserDoc().activeMobile = doc; - onSwitch?.(); - - // Ensures that switching to home is not registed - UndoManager.undoStack.length = 0; - UndoManager.redoStack.length = 0; - }; - - // For toggling the hamburger menu - @action - toggleSidebar = () => { - this._sidebarActive = !this._sidebarActive; - - if (this._ink) { - this.onSwitchInking(); - } - }; - /** - * Method called when 'Library' button is pressed on the home screen - */ - switchToLibrary = async () => { - this.switchCurrentView(this._library); - runInAction(() => (this._homeMenu = false)); - this.toggleSidebar(); - }; - - /** - * Back method for navigating through items - */ - @action - back = () => { - const header = document.getElementById('header') as HTMLElement; - const doc = Cast(this._parents.pop(), Doc) as Doc; // Parent document - // Case 1: Parent document is 'dashboards' - if (doc === (Cast(this._library, Doc) as Doc)) { - this.dashboards = null; - this.switchCurrentView(this._library); - // Case 2: Parent document is the 'home' menu (root node) - } else if (doc === (Cast(this._homeDoc, Doc) as Doc)) { - this._homeMenu = true; - this._parents = []; - this.dashboards = null; - this.switchCurrentView(this._homeDoc); - // Case 3: Parent document is any document - } else if (doc) { - this.dashboards = doc; - this.switchCurrentView(doc); - this._homeMenu = false; - header.textContent = String(doc.title); - } - this._ink = false; // turns ink off - }; - - /** - * Return 'Home", which implies returning to 'Home' menu buttons - */ - @action - returnHome = () => { - if (!this._homeMenu || this._sidebarActive) { - this._homeMenu = true; - this._parents = []; - this.dashboards = null; - this.switchCurrentView(this._homeDoc); - } - if (this._sidebarActive) { - this.toggleSidebar(); - } - }; - - /** - * Return to primary Dashboard in library (Dashboards Doc) - */ - @action - returnMain = () => { - this._parents = [this._homeDoc]; - this.switchCurrentView(this._library); - this._homeMenu = false; - this.dashboards = null; - }; - - /** - * Note: window.innerWidth and window.screen.width compute different values. - * window.screen.width is the display size, however window.innerWidth is the - * display resolution which computes differently. - */ - returnWidth = () => window.innerWidth; //The windows width - returnHeight = () => window.innerHeight - 300; //Calculating the windows height (-300 to account for topbar) - whitebackground = () => 'white'; - /** - * DocumentView for graphic display of all documents - */ - @computed get displayDashboards() { - return !this.mainContainer ? null : ( -
- -
- ); - } - - /** - * Handles the click functionality in the library panel. - * Navigates to the given doc and updates the sidebar. - * @param doc: doc for which the method is called - */ - handleClick = async (doc: Doc) => { - runInAction(() => { - if (doc.type !== 'collection' && this._sidebarActive) { - this._parents.push(this._activeDoc); - this.switchCurrentView(doc); - this._homeMenu = false; - this.toggleSidebar(); - } else { - this._parents.push(this._activeDoc); - this.switchCurrentView(doc); - this._homeMenu = false; - this.dashboards = doc; - } - }); - }; - - /** - * Called when an item in the library is clicked and should - * be opened (open icon on RHS of all menu items) - * @param doc doc to be opened - */ - @action - openFromSidebar = (doc: Doc) => { - this._parents.push(this._activeDoc); - this.switchCurrentView(doc); - this._homeMenu = false; - this.dashboards = doc; - this.toggleSidebar(); - }; - - // Renders the graphical pathbar - renderPathbar = () => { - const docPath = [...this._parents, this._activeDoc]; - const items = docPath.map((doc: Doc, index: any) => ( -
- {index === 0 ? null : } -
this.handlePathClick(doc, index)}> - {StrCast(doc.title)} -
-
- )); - return ( -
-
{items}
- {!this._parents.length ? null : ( -
- -
- )} -
-
- ); - }; - - // Handles when user clicks on a document in the pathbar - @action - handlePathClick = async (doc: Doc, index: number) => { - const library = await this._library; - if (doc === library) { - this.dashboards = null; - this.switchCurrentView(doc); - this._parents.length = index; - } else if (doc === this._homeDoc) { - this.returnHome(); - } else { - this.dashboards = doc; - this.switchCurrentView(doc); - this._parents.length = index; - } - }; - - // Renders the contents of the menu and sidebar - @computed get renderDefaultContent() { - if (this._homeMenu) { - return ( -
-
- - -
e.stopPropagation()}>
- -
- {this.renderPathbar()} -
- ); - } - // stores dashboards documents as 'dashboards' variable - let dashboards = Doc.MyDashboards; - if (this.dashboards) { - dashboards = this.dashboards; - } - // returns a list of navbar buttons as 'buttons' - const buttons = DocListCast(dashboards.data).map((doc: Doc, index: any) => { - if (doc.type !== 'ink') { - return ( -
-
this.handleClick(doc)}> - {' '} - {doc.title as string}{' '} -
-
this.handleClick(doc)}> - {doc.type as string} -
- this.handleClick(doc)} className="right" icon="angle-right" size="lg" style={{ display: `${doc.type === 'collection' ? 'block' : 'none'}` }} /> - this.openFromSidebar(doc)} icon="external-link-alt" size="lg" /> -
- ); - } - }); - - return ( -
-
- - -
- - - -
-
-
- {this.renderPathbar()} -
-
- {this.dashboards ? ( - <> - {buttons} -
- -
Return to dashboards
-
- - ) : ( - <> - {buttons} -
this.createNewDashboard()}> - -
Create New Dashboard
-
- - )} -
-
-
-
- ); - } - - /** - * Handles the 'Create New Dashboard' button in the menu (taken from MainView.tsx) - */ - @action - createNewDashboard = (id?: string) => { - const scens = Doc.MyDashboards; - const dashboardCount = DocListCast(scens.data).length + 1; - const freeformOptions: DocumentOptions = { - x: 0, - y: 400, - title: 'Collection ' + dashboardCount, - }; - - const freeformDoc = Doc.GuestTarget || Docs.Create.FreeformDocument([], freeformOptions); - const dashboardDoc = DashboardView.StandardCollectionDockingDocument([{ doc: freeformDoc, initialWidth: 600 }], { title: `Dashboard ${dashboardCount}` }, id, 'row'); - - const toggleComic = ScriptField.MakeScript(`toggleComicMode()`); - const cloneDashboard = ScriptField.MakeScript(`cloneDashboard()`); - dashboardDoc.contextMenuScripts = new List([toggleComic!, cloneDashboard!]); - dashboardDoc.contextMenuLabels = new List(['Toggle Comic Mode', 'New Dashboard Layout']); - - Doc.AddDocToList(scens, 'data', dashboardDoc); - }; - - // Button for switching between pen and ink mode - @action - onSwitchInking = () => { - const button = document.getElementById('inkButton') as HTMLElement; - button.style.backgroundColor = this._ink ? 'white' : 'black'; - button.style.color = this._ink ? 'black' : 'white'; - - if (!this._ink) { - Doc.ActiveTool = InkTool.Pen; - this._ink = true; - } else { - Doc.ActiveTool = InkTool.None; - this._ink = false; - } - }; - - // The static ink menu that appears at the top - @computed get inkMenu() { - return this._activeDoc._type_collection !== CollectionViewType.Docking || !this._ink ? null :
{/* */}
; - } - - // DocButton that uses UndoManager and handles the opacity change if CanUndo is true - @computed get undo() { - if (this.mainContainer && this._activeDoc.type === 'collection' && this._activeDoc !== this._homeDoc && this._activeDoc !== Doc.SharingDoc() && this._activeDoc.title !== 'WORKSPACES') { - return ( -
{ - UndoManager.Undo(); - e.stopPropagation(); - }}> - -
- ); - } else return null; - } - - // DocButton that uses UndoManager and handles the opacity change if CanRedo is true - @computed get redo() { - if (this.mainContainer && this._activeDoc.type === 'collection' && this._activeDoc !== this._homeDoc && this._activeDoc !== Doc.SharingDoc() && this._activeDoc.title !== 'WORKSPACES') { - return ( -
{ - UndoManager.Redo(); - e.stopPropagation(); - }}> - -
- ); - } else return null; - } - - // DocButton for switching into ink mode - @computed get drawInk() { - return !this.mainContainer || this._activeDoc._type_collection !== CollectionViewType.Docking ? null : ( -
- -
- ); - } - - // DocButton: Button that appears on the bottom of the screen to initiate image upload - @computed get uploadImageButton() { - if (this._activeDoc.type === DocumentType.COL && this._activeDoc !== this._homeDoc && this._activeDoc._type_collection !== CollectionViewType.Docking && this._activeDoc.title !== 'WORKSPACES') { - return ( -
- -
- ); - } else return null; - } - - // DocButton to download images on the mobile - @computed get downloadDocument() { - if (this._activeDoc.type === 'image' || this._activeDoc.type === 'pdf' || this._activeDoc.type === 'video') { - return ( -
window.open(this._activeDoc['data-path']?.toString())}> - {' '} - {/* daa-path holds the url */} - -
- ); - } else return null; - } - - // DocButton for pinning images to presentation - @computed get pinToPresentation() { - // Only making button available if it is an image - if (!(this._activeDoc.type === 'collection' || this._activeDoc.type === 'presentation')) { - return ( -
DocumentView.PinDoc(this._activeDoc, {})}> - -
- ); - } else return null; - } - - // Buttons for switching the menu between large and small icons - @computed get switchMenuView() { - return this._activeDoc.title !== this._homeDoc.title ? null : ( -
-
- -
-
- -
-
- ); - } - - // Logic for switching the menu into the icons - @action - changeToIconView = () => { - if ((this._homeDoc._type_collection = 'stacking')) { - this._menuListView = false; - this._homeDoc._type_collection = 'masonry'; - this._homeDoc.columnWidth = 300; - this._homeDoc._columnWidth = 300; - const menuButtons = DocListCast(this._homeDoc.data); - menuButtons.map(doc => { - const buttonData = DocListCast(doc.data); - buttonData[1]._nativeWidth = 0.1; - buttonData[1]._width = 0.1; - buttonData[1]._dimMagnitude = 0; - buttonData[1]._opacity = 0; - doc._nativeWidth = 400; - }); - } - }; - - // Logic for switching the menu into the stacking view - @action - changeToListView = () => { - if ((this._homeDoc._type_collection = 'masonry')) { - this._homeDoc._type_collection = 'stacking'; - this._menuListView = true; - const menuButtons = DocListCast(this._homeDoc.data); - menuButtons.map(doc => { - const buttonData = DocListCast(doc.data); - buttonData[1]._nativeWidth = 450; - buttonData[1]._dimMagnitude = 2; - buttonData[1]._opacity = 1; - doc._nativeWidth = 900; - }); - } - }; - - // For setting up the presentation document for the home menu - @action - setupDefaultPresentation = () => { - const presentation = Doc.ActivePresentation; - - if (presentation) { - this.switchCurrentView(presentation); - this._homeMenu = false; - } - }; - - // For toggling image upload pop up - @action - toggleUpload = () => (this._imageUploadActive = !this._imageUploadActive); - - // For toggling audio record and dictate pop up - @action - toggleAudio = () => (this._audioUploadActive = !this._audioUploadActive); - - // Button for toggling the upload pop up in a collection - @action - toggleUploadInCollection = () => { - const button = document.getElementById('imageButton') as HTMLElement; - button.style.backgroundColor = this._imageUploadActive ? 'white' : 'black'; - button.style.color = this._imageUploadActive ? 'black' : 'white'; - - this._imageUploadActive = !this._imageUploadActive; - }; - - // For closing the image upload pop up - @action - closeUpload = () => { - this._imageUploadActive = false; - }; - - // Returns the image upload pop up - @computed get uploadImage() { - const doc = !this._homeMenu ? this._activeDoc : (Cast(Doc.SharingDoc(), Doc) as Doc); - return ; - } - - // Radial menu can only be used if it is a colleciton and it is not a homeDoc - // (and cannot be used on Dashboard to avoid pin to presentation opening on right) - @computed get displayRadialMenu() { - return this._activeDoc.type === 'collection' && this._activeDoc !== this._homeDoc && this._activeDoc._type_collection !== CollectionViewType.Docking ? : null; - } - - onDragOver = (e: React.DragEvent) => { - e.preventDefault(); - e.stopPropagation(); - }; - - /** - * MENU BUTTON - * Switch view from mobile menu to access the mobile uploads - * Global function name: openMobileUploads() - */ - @action - switchToMobileUploads = () => { - const mobileUpload = Cast(Doc.SharingDoc(), Doc) as Doc; - this.switchCurrentView(mobileUpload); - this._homeMenu = false; - }; - - render() { - return ( -
- -
{this.uploadImage}
- {this.switchMenuView} - {this.inkMenu} - -
- -
-
- {this.pinToPresentation} - {this.downloadDocument} - {this.undo} - {this.redo} - {this.drawInk} - {this.uploadImageButton} -
- {this.displayDashboards} - {this.renderDefaultContent} -
- {this.displayRadialMenu} -
- ); - } -} - -//Global functions for mobile menu -ScriptingGlobals.add(function switchToMobileLibrary() { - return MobileInterface.Instance.switchToLibrary(); -}, 'opens the library to navigate through dashboards on Dash Mobile'); -ScriptingGlobals.add(function openMobileUploads() { - return MobileInterface.Instance.toggleUpload(); -}, 'opens the upload files menu for Dash Mobile'); -ScriptingGlobals.add(function switchToMobileUploadCollection() { - return MobileInterface.Instance.switchToMobileUploads(); -}, 'opens the mobile uploads collection on Dash Mobile'); -ScriptingGlobals.add(function openMobileAudio() { - return MobileInterface.Instance.toggleAudio(); -}, 'opens the record and dictate menu on Dash Mobile'); -ScriptingGlobals.add(function switchToMobilePresentation() { - return MobileInterface.Instance.setupDefaultPresentation(); -}, 'opens the presentation on Dash Mobile'); -ScriptingGlobals.add(function openMobileSettings() { - return SettingsManager.Instance.openMgr(); -}, 'opens settings on Dash Mobile'); - -// Other global functions for mobile -ScriptingGlobals.add( - function switchMobileView(doc: Doc, renderView?: () => JSX.Element, onSwitch?: () => void) { - return MobileInterface.Instance.switchCurrentView(doc, renderView, onSwitch); - }, - 'changes the active document displayed on the Dash Mobile', - '(doc: any)' -); diff --git a/src/mobile/MobileMain.tsx b/src/mobile/MobileMain.tsx deleted file mode 100644 index 07839b6f6..000000000 --- a/src/mobile/MobileMain.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import * as React from 'react'; -import * as ReactDOM from 'react-dom'; -import { DocServer } from '../client/DocServer'; -import { Docs } from '../client/documents/Documents'; -import { CurrentUserUtils } from '../client/util/CurrentUserUtils'; -import { AssignAllExtensions } from '../extensions/Extensions'; -import { MobileInterface } from './MobileInterface'; - -AssignAllExtensions(); - -(async () => { - const info = await CurrentUserUtils.loadCurrentUser(); - DocServer.init(window.location.protocol, window.location.hostname, 4321, info.email + ' (mobile)'); - await Docs.Prototypes.initialize(); - await CurrentUserUtils.loadUserDocument(info); - document.getElementById('root')!.addEventListener( - 'wheel', - event => { - if (event.ctrlKey) { - event.preventDefault(); - } - }, - true - ); - ReactDOM.render(, document.getElementById('root')); -})(); diff --git a/src/mobile/MobileMenu.scss b/src/mobile/MobileMenu.scss deleted file mode 100644 index 7f286efc4..000000000 --- a/src/mobile/MobileMenu.scss +++ /dev/null @@ -1,271 +0,0 @@ -$navbar-height: 120px; -$pathbar-height: 50px; - -* { - margin: 0px; - padding: 0px; - box-sizing: border-box; - font-family: "Open Sans"; -} - -body { - overflow: hidden; -} - -.navbar { - position: fixed; - top: 0px; - left: 0px; - width: 100vw; - height: $navbar-height; - background-color: whitesmoke; - border-bottom: 5px solid black; -} - -.navbar .toggle-btn { - position: absolute; - right: 20px; - top: 30px; - height: 70px; - width: 70px; - transition: all 300ms ease-in-out 200ms; -} - -.navbar .header { - position: absolute; - top: 50%; - top: calc(9px + 50%); - right: 50%; - transform: translate(50%, -50%); - font-size: 40; - user-select: none; - text-transform: uppercase; - font-family: Arial, Helvetica, sans-serif; -} - -.navbar .toggle-btn span { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 70%; - height: 4px; - background: black; - transition: all 200ms ease; -} - -.navbar .toggle-btn span:nth-child(1) { - transition: top 200ms ease-in-out; - top: 30%; -} - -.navbar .toggle-btn span:nth-child(3) { - transition: top 200ms ease-in-out; - top: 70%; -} - -.navbar .toggle-btn.active { - transition: transform 200ms ease-in-out 200ms; - transform: rotate(135deg); -} - -.navbar .toggle-btn.active span:nth-child(1) { - top: 50%; -} - -.navbar .toggle-btn.active span:nth-child(2) { - transform: translate(-50%, -50%) rotate(90deg); -} - -.navbar .toggle-btn.active span:nth-child(3) { - top: 50%; -} -// .navbar .home { -// position: relative; -// right: 5px; -// transform: translate(50%, -50%); -// font-size: 40; -// user-select: none; -// text-transform: uppercase; -// font-family: Arial, Helvetica, sans-serif; -// z-index: 200; -// } - -.sidebar { - position: absolute; - top: 200px; - opacity: 0; - right: -100%; - width: 100%; - height: calc(100% - (200px)); - z-index: 5; - background-color: whitesmoke; - transition: all 400ms ease 50ms; - padding: 20px; - // overflow-y: auto; - // -webkit-overflow-scrolling: touch; - - // border-right: 5px solid black; -} - -.sidebar .item { - width: 100%; - padding: 13px 12px; - border-bottom: 1px solid rgba(200, 200, 200, 0.7); - font-family: Arial, Helvetica, sans-serif; - font-style: normal; - font-weight: normal; - user-select: none; - font-size: 35px; - text-transform: uppercase; - color: black; - -} - -.sidebar .ink { - width: 100%; - padding: 13px 12px; - border-bottom: 1px solid rgba(200, 200, 200, 0.7); - font-family: Arial, Helvetica, sans-serif; - font-style: normal; - font-weight: normal; - user-select: none; - font-size: 35px; - text-transform: uppercase; - color: black; -} - -.sidebar .ink:focus { - outline: 1px solid blue; -} - -.sidebar .home { - position: absolute; - top: -135px; - right: calc(50% + 80px); - transform: translate(0%, -50%); - font-size: 40; - user-select: none; - text-transform: uppercase; - font-family: Arial, Helvetica, sans-serif; - z-index: 200; -} - -.type { - display: inline; - text-transform: lowercase; - margin-left: 20px; - font-size: 35px; - font-style: italic; - color: rgb(28, 28, 28); -} - -.right { - margin-left: 20px; - z-index: 200; -} - -.left { - width: 100%; - height: 100%; -} - -.sidebar .logout { - width: 100%; - padding: 13px 12px; - border-bottom: 1px solid rgba(200, 200, 200, 0.7); - font-family: Arial, Helvetica, sans-serif; - font-style: normal; - font-weight: normal; - user-select: none; - font-size: 30px; - text-transform: uppercase; - color: black; -} - -.sidebar .settings { - width: 100%; - padding: 13px 12px; - border-bottom: 1px solid rgba(200, 200, 200, 0.7); - font-family: Arial, Helvetica, sans-serif; - font-style: normal; - font-weight: normal; - user-select: none; - font-size: 30px; - text-transform: uppercase; - color: black; -} - - -.sidebar.active { - right: 0%; - opacity: 1; -} - -.back { - position: absolute; - top: -140px; - left: 50px; - transform: translate(0%, -50%); - color: black; - font-size: 60; - user-select: none; - text-transform: uppercase; - z-index: 100; - font-family: Arial, Helvetica, sans-serif; -} - - -.pathbar { - position: absolute; - top: 118px; - background: #1a1a1a; - z-index: 20; - border-radius: 0px; - width: 100%; - height: 80px; - transition: all 400ms ease 50ms; -} - -.pathname { - position: relative; - font-size: 25; - top: 50%; - width: 90%; - left: 3%; - color: whitesmoke; - transform: translate(0%, -50%); - z-index: 20; - font-family: sans-serif; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - direction: rtl; - text-align: left; - text-transform: uppercase; -} - -.homeContainer { - position: relative; - top: 200px; - height: calc(100% - 250px); - width: 90%; - overflow: scroll; - left: 5%; - background-color: lightpink; -} - -.pinButton { - position: relative; - width: 100px; - height: 100px; - font-size: 90px; - text-align: center; - left: 50%; - transform: translate(-50%, 0); - border-style: solid; - border-radius: 50px; - border-width: medium; - background-color: pink; - z-index: 100; -} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 9c74bf24e..e1afc64e5 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -53,8 +53,6 @@ module.exports = { viewer: ['./src/debug/Viewer.tsx', 'webpack-hot-middleware/client?reload=true'], repl: ['./src/debug/Repl.tsx', 'webpack-hot-middleware/client?reload=true'], test: ['./src/debug/Test.tsx', 'webpack-hot-middleware/client?reload=true'], - inkControls: ['./src/mobile/InkControls.tsx', 'webpack-hot-middleware/client?reload=true'], - mobileInterface: ['./src/client/views/Main.tsx', 'webpack-hot-middleware/client?reload=true'], }, devtool: 'source-map', output: { @@ -119,6 +117,10 @@ module.exports = { { loader: 'sass-loader' }, ], }, + { + test: /\.(txt|d)$/i, + type: 'asset/source', + }, // -------- // SCSS MODULES - all have .module. in their name and can export to .tsx -- cgit v1.2.3-70-g09d2 From 0974c8c92e48d5d278fb9bed79bc144fd79ddb1a Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 12 Aug 2024 22:15:59 -0400 Subject: fixed typescript types module inclusion --- src/client/util/Scripting.ts | 4 +- src/client/util/type_decls.d | 224 ----------------------------------------- src/client/util/type_decls.txt | 224 ----------------------------------------- src/typings/index.d.ts | 27 ++--- src/typings/type_decls.d | 224 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 240 insertions(+), 463 deletions(-) delete mode 100644 src/client/util/type_decls.d delete mode 100644 src/client/util/type_decls.txt create mode 100644 src/typings/type_decls.d (limited to 'src') diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts index b9e0943b6..c63d3d7cb 100644 --- a/src/client/util/Scripting.ts +++ b/src/client/util/Scripting.ts @@ -1,7 +1,7 @@ // export const ts = (window as any).ts; // import * as typescriptlib from '!!raw-loader!../../../node_modules/typescript/lib/lib.d.ts' // import * as typescriptes5 from '!!raw-loader!../../../node_modules/typescript/lib/lib.es5.d.ts' -import * as typescriptlib from './type_decls.d'; +import typescriptlib from 'type_decls.d'; import * as ts from 'typescript'; import { Doc, FieldType } from '../../fields/Doc'; import { RefField } from '../../fields/RefField'; @@ -248,7 +248,7 @@ export function CompileScript(script: string, options: ScriptOptions = {}): Comp const funcScript = `(function(${paramString})${reqTypes} { ${body} })`; host.writeFile('file.ts', funcScript); - if (typecheck) host.writeFile('node_modules/typescript/lib/lib.d.ts', typescriptlib.default); + if (typecheck) host.writeFile('node_modules/typescript/lib/lib.d.ts', typescriptlib); const program = ts.createProgram(['file.ts'], {}, host); const testResult = program.emit(); const outputText = host.readFile('file.js'); diff --git a/src/client/util/type_decls.d b/src/client/util/type_decls.d deleted file mode 100644 index 1a93bbe59..000000000 --- a/src/client/util/type_decls.d +++ /dev/null @@ -1,224 +0,0 @@ -//@ts-ignore -declare type PropertyKey = string | number | symbol; -interface Array { - length: number; - toString(): string; - toLocaleString(): string; - pop(): T | undefined; - push(...items: T[]): number; - concat(...items: ConcatArray[]): T[]; - concat(...items: (T | ConcatArray)[]): T[]; - join(separator?: string): string; - reverse(): T[]; - shift(): T | undefined; - slice(start?: number, end?: number): T[]; - sort(compareFn?: (a: T, b: T) => number): this; - splice(start: number, deleteCount?: number): T[]; - splice(start: number, deleteCount: number, ...items: T[]): T[]; - unshift(...items: T[]): number; - indexOf(searchElement: T, fromIndex?: number): number; - lastIndexOf(searchElement: T, fromIndex?: number): number; - every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; - map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; - filter(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; - filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - - [n: number]: T; -} - -interface Function { - apply(this: Function, thisArg: any, argArray?: any): any; - call(this: Function, thisArg: any, ...argArray: any[]): any; - bind(this: Function, thisArg: any, ...argArray: any[]): any; - toString(): string; - - prototype: any; - readonly length: number; - - // Non-standard extensions - arguments: any; - caller: Function; -} -interface Boolean { - valueOf(): boolean; -} -interface Number { - toString(radix?: number): string; - toFixed(fractionDigits?: number): string; - toExponential(fractionDigits?: number): string; - toPrecision(precision?: number): string; - valueOf(): number; -} -interface IArguments { - [index: number]: any; - length: number; - callee: Function; -} -interface RegExp { - readonly flags: string; - readonly sticky: boolean; - readonly unicode: boolean; -} -interface Date { - now() : string; -} -interface String { - codePointAt(pos: number): number | undefined; - includes(searchString: string, position?: number): boolean; - endsWith(searchString: string, endPosition?: number): boolean; - normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; - normalize(form?: string): string; - repeat(count: number): string; - replace(a:any, b:any):string; // bcz: fix this - startsWith(searchString: string, position?: number): boolean; - anchor(name: string): string; - big(): string; - blink(): string; - bold(): string; - fixed(): string; - fontcolor(color: string): string; - fontsize(size: number): string; - fontsize(size: string): string; - italics(): string; - link(url: string): string; - small(): string; - strike(): string; - sub(): string; - sup(): string; -} -interface Object { - constructor: Function; - toString(): string; - toLocaleString(): string; - valueOf(): Object; - hasOwnProperty(v: PropertyKey): boolean; - isPrototypeOf(v: Object): boolean; - propertyIsEnumerable(v: PropertyKey): boolean; -} -interface ConcatArray { - readonly length: number; - readonly [n: number]: T; - join(separator?: string): string; - slice(start?: number, end?: number): T[]; -} -interface URL { - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - username: string; - toJSON(): string; -} -interface PromiseLike { - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): PromiseLike; -} -interface Promise { - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; -} - -declare const Update: unique symbol; -declare const Self: unique symbol; -declare const SelfProxy: unique symbol; -declare const DataSym: unique symbol; -declare const HandleUpdate: unique symbol; -declare const Id: unique symbol; -declare const OnUpdate: unique symbol; -declare const Parent: unique symbol; -declare const Copy: unique symbol; -declare const ToScriptString: unique symbol; - -declare abstract class RefField { - readonly [Id]: FieldId; - - constructor(); -} - -declare type FieldId = string; - -declare abstract class ObjectField { - abstract [Copy](): ObjectField; -} - -declare abstract class URLField extends ObjectField { - readonly url: URL; - - constructor(url: string); - constructor(url: URL); -} - -declare class RichTextField extends URLField { - [Copy](): ObjectField; - constructor(data:string, text: string); -} -declare class AudioField extends URLField { [Copy](): ObjectField; } -declare class VideoField extends URLField { [Copy](): ObjectField; } -declare class ImageField extends URLField { [Copy](): ObjectField; } -declare class WebField extends URLField { [Copy](): ObjectField; } -declare class PdfField extends URLField { [Copy](): ObjectField; } - -declare const ComputedField: any; -declare const CompileScript: any; - -// @ts-ignore -declare type Extract = T extends U ? T : never; -declare type Field = number | string | boolean | ObjectField | RefField; -declare type FieldWaiting = T extends undefined ? never : Promise; -declare type FieldResult = Opt | FieldWaiting>; - -declare type Opt = T | undefined; -declare class Doc extends RefField { - constructor(); - - [key: string]: FieldResult; - // [ToScriptString](): string; -} - -declare class List extends ObjectField { - constructor(fields?: T[]); - [index: number]: T | (T extends RefField ? Promise : never); - [Copy](): ObjectField; -} - -declare class InkField extends ObjectField { - constructor(data:Array<{X:number, Y:number}>); - [Copy](): ObjectField; -} - -// @ts-ignore -declare const console: any; - -interface DocumentOptions { } - -declare const Docs: { - ImageDocument(url: string, options?: DocumentOptions): Doc; - VideoDocument(url: string, options?: DocumentOptions): Doc; - TextDocument(options?: DocumentOptions): Doc; - PdfDocument(url: string, options?: DocumentOptions): Doc; - WebDocument(url: string, options?: DocumentOptions): Doc; - HtmlDocument(html: string, options?: DocumentOptions): Doc; - MapDocument(url: string, options?: DocumentOptions): Doc; - KVPDocument(document: Doc, options?: DocumentOptions): Doc; - FreeformDocument(documents: Doc[], options?: DocumentOptions): Doc; - SchemaDocument(columns: string[], documents: Doc[], options?: DocumentOptions): Doc; - TreeDocument(documents: Doc[], options?: DocumentOptions): Doc; - StackingDocument(documents: Doc[], options?: DocumentOptions): Doc; -}; - -declare function idToDoc(id:string):any; -declare function assignDoc(doc:Doc, field:any, id:any):string; -declare function d(...args:any[]):any; diff --git a/src/client/util/type_decls.txt b/src/client/util/type_decls.txt deleted file mode 100644 index 1a93bbe59..000000000 --- a/src/client/util/type_decls.txt +++ /dev/null @@ -1,224 +0,0 @@ -//@ts-ignore -declare type PropertyKey = string | number | symbol; -interface Array { - length: number; - toString(): string; - toLocaleString(): string; - pop(): T | undefined; - push(...items: T[]): number; - concat(...items: ConcatArray[]): T[]; - concat(...items: (T | ConcatArray)[]): T[]; - join(separator?: string): string; - reverse(): T[]; - shift(): T | undefined; - slice(start?: number, end?: number): T[]; - sort(compareFn?: (a: T, b: T) => number): this; - splice(start: number, deleteCount?: number): T[]; - splice(start: number, deleteCount: number, ...items: T[]): T[]; - unshift(...items: T[]): number; - indexOf(searchElement: T, fromIndex?: number): number; - lastIndexOf(searchElement: T, fromIndex?: number): number; - every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; - map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; - filter(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; - filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - - [n: number]: T; -} - -interface Function { - apply(this: Function, thisArg: any, argArray?: any): any; - call(this: Function, thisArg: any, ...argArray: any[]): any; - bind(this: Function, thisArg: any, ...argArray: any[]): any; - toString(): string; - - prototype: any; - readonly length: number; - - // Non-standard extensions - arguments: any; - caller: Function; -} -interface Boolean { - valueOf(): boolean; -} -interface Number { - toString(radix?: number): string; - toFixed(fractionDigits?: number): string; - toExponential(fractionDigits?: number): string; - toPrecision(precision?: number): string; - valueOf(): number; -} -interface IArguments { - [index: number]: any; - length: number; - callee: Function; -} -interface RegExp { - readonly flags: string; - readonly sticky: boolean; - readonly unicode: boolean; -} -interface Date { - now() : string; -} -interface String { - codePointAt(pos: number): number | undefined; - includes(searchString: string, position?: number): boolean; - endsWith(searchString: string, endPosition?: number): boolean; - normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; - normalize(form?: string): string; - repeat(count: number): string; - replace(a:any, b:any):string; // bcz: fix this - startsWith(searchString: string, position?: number): boolean; - anchor(name: string): string; - big(): string; - blink(): string; - bold(): string; - fixed(): string; - fontcolor(color: string): string; - fontsize(size: number): string; - fontsize(size: string): string; - italics(): string; - link(url: string): string; - small(): string; - strike(): string; - sub(): string; - sup(): string; -} -interface Object { - constructor: Function; - toString(): string; - toLocaleString(): string; - valueOf(): Object; - hasOwnProperty(v: PropertyKey): boolean; - isPrototypeOf(v: Object): boolean; - propertyIsEnumerable(v: PropertyKey): boolean; -} -interface ConcatArray { - readonly length: number; - readonly [n: number]: T; - join(separator?: string): string; - slice(start?: number, end?: number): T[]; -} -interface URL { - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - username: string; - toJSON(): string; -} -interface PromiseLike { - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): PromiseLike; -} -interface Promise { - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; -} - -declare const Update: unique symbol; -declare const Self: unique symbol; -declare const SelfProxy: unique symbol; -declare const DataSym: unique symbol; -declare const HandleUpdate: unique symbol; -declare const Id: unique symbol; -declare const OnUpdate: unique symbol; -declare const Parent: unique symbol; -declare const Copy: unique symbol; -declare const ToScriptString: unique symbol; - -declare abstract class RefField { - readonly [Id]: FieldId; - - constructor(); -} - -declare type FieldId = string; - -declare abstract class ObjectField { - abstract [Copy](): ObjectField; -} - -declare abstract class URLField extends ObjectField { - readonly url: URL; - - constructor(url: string); - constructor(url: URL); -} - -declare class RichTextField extends URLField { - [Copy](): ObjectField; - constructor(data:string, text: string); -} -declare class AudioField extends URLField { [Copy](): ObjectField; } -declare class VideoField extends URLField { [Copy](): ObjectField; } -declare class ImageField extends URLField { [Copy](): ObjectField; } -declare class WebField extends URLField { [Copy](): ObjectField; } -declare class PdfField extends URLField { [Copy](): ObjectField; } - -declare const ComputedField: any; -declare const CompileScript: any; - -// @ts-ignore -declare type Extract = T extends U ? T : never; -declare type Field = number | string | boolean | ObjectField | RefField; -declare type FieldWaiting = T extends undefined ? never : Promise; -declare type FieldResult = Opt | FieldWaiting>; - -declare type Opt = T | undefined; -declare class Doc extends RefField { - constructor(); - - [key: string]: FieldResult; - // [ToScriptString](): string; -} - -declare class List extends ObjectField { - constructor(fields?: T[]); - [index: number]: T | (T extends RefField ? Promise : never); - [Copy](): ObjectField; -} - -declare class InkField extends ObjectField { - constructor(data:Array<{X:number, Y:number}>); - [Copy](): ObjectField; -} - -// @ts-ignore -declare const console: any; - -interface DocumentOptions { } - -declare const Docs: { - ImageDocument(url: string, options?: DocumentOptions): Doc; - VideoDocument(url: string, options?: DocumentOptions): Doc; - TextDocument(options?: DocumentOptions): Doc; - PdfDocument(url: string, options?: DocumentOptions): Doc; - WebDocument(url: string, options?: DocumentOptions): Doc; - HtmlDocument(html: string, options?: DocumentOptions): Doc; - MapDocument(url: string, options?: DocumentOptions): Doc; - KVPDocument(document: Doc, options?: DocumentOptions): Doc; - FreeformDocument(documents: Doc[], options?: DocumentOptions): Doc; - SchemaDocument(columns: string[], documents: Doc[], options?: DocumentOptions): Doc; - TreeDocument(documents: Doc[], options?: DocumentOptions): Doc; - StackingDocument(documents: Doc[], options?: DocumentOptions): Doc; -}; - -declare function idToDoc(id:string):any; -declare function assignDoc(doc:Doc, field:any, id:any):string; -declare function d(...args:any[]):any; diff --git a/src/typings/index.d.ts b/src/typings/index.d.ts index a9ebbb480..bee79a38d 100644 --- a/src/typings/index.d.ts +++ b/src/typings/index.d.ts @@ -12,13 +12,14 @@ declare module 'fit-curve'; declare module 'iink-js'; declare module 'pdfjs-dist/web/pdf_viewer'; declare module 'react-jsx-parser'; +declare module 'type_decls.d'; declare module '@react-pdf/renderer' { import * as React from 'react'; namespace ReactPDF { interface Style { - [property: string]: any; + [property: string]: unknown; } interface Styles { [key: string]: Style; @@ -32,7 +33,7 @@ declare module '@react-pdf/renderer' { keywords?: string; creator?: string; producer?: string; - onRender?: () => any; + onRender?: () => unknown; } /** @@ -213,13 +214,13 @@ declare module '@react-pdf/renderer' { src: string; loaded: boolean; loading: boolean; - data: any; - [key: string]: any; + data: unknown; + [key: string]: unknown; } - type HyphenationCallback = (words: string[], glyphString: { [key: string]: any }) => string[]; + type HyphenationCallback = (words: string[], glyphString: { [key: string]: unknown }) => string[]; const Font: { - register: (src: string, options: { family: string; [key: string]: any }) => void; + register: (src: string, options: { family: string; [key: string]: unknown }) => void; getEmojiSource: () => EmojiSource; getRegisteredFonts: () => string[]; registerEmojiSource: (emojiSource: EmojiSource) => void; @@ -252,21 +253,21 @@ declare module '@react-pdf/renderer' { }; }; - const version: any; + const version: unknown; - const PDFRenderer: any; + const PDFRenderer: unknown; const createInstance: ( element: { type: string; - props: { [key: string]: any }; + props: { [key: string]: unknown }; }, - root?: any - ) => any; + root?: unknown + ) => unknown; const pdf: (document: React.ReactElement) => { isDirty: () => boolean; - updateContainer: (document: React.ReactElement) => void; + updateContainer: (document: React.ReactElement) => void; toBuffer: () => NodeJS.ReadableStream; toBlob: () => Blob; toString: () => string; @@ -274,7 +275,7 @@ declare module '@react-pdf/renderer' { const renderToStream: (document: React.ReactElement) => NodeJS.ReadableStream; - const renderToFile: (document: React.ReactElement, filePath: string, callback?: (output: NodeJS.ReadableStream, filePath: string) => any) => Promise; + const renderToFile: (document: React.ReactElement, filePath: string, callback?: (output: NodeJS.ReadableStream, filePath: string) => unknown) => Promise; const render: typeof renderToFile; } diff --git a/src/typings/type_decls.d b/src/typings/type_decls.d new file mode 100644 index 000000000..1a93bbe59 --- /dev/null +++ b/src/typings/type_decls.d @@ -0,0 +1,224 @@ +//@ts-ignore +declare type PropertyKey = string | number | symbol; +interface Array { + length: number; + toString(): string; + toLocaleString(): string; + pop(): T | undefined; + push(...items: T[]): number; + concat(...items: ConcatArray[]): T[]; + concat(...items: (T | ConcatArray)[]): T[]; + join(separator?: string): string; + reverse(): T[]; + shift(): T | undefined; + slice(start?: number, end?: number): T[]; + sort(compareFn?: (a: T, b: T) => number): this; + splice(start: number, deleteCount?: number): T[]; + splice(start: number, deleteCount: number, ...items: T[]): T[]; + unshift(...items: T[]): number; + indexOf(searchElement: T, fromIndex?: number): number; + lastIndexOf(searchElement: T, fromIndex?: number): number; + every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; + some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; + forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; + map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; + filter(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; + filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; + reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; + reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; + reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; + reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; + + [n: number]: T; +} + +interface Function { + apply(this: Function, thisArg: any, argArray?: any): any; + call(this: Function, thisArg: any, ...argArray: any[]): any; + bind(this: Function, thisArg: any, ...argArray: any[]): any; + toString(): string; + + prototype: any; + readonly length: number; + + // Non-standard extensions + arguments: any; + caller: Function; +} +interface Boolean { + valueOf(): boolean; +} +interface Number { + toString(radix?: number): string; + toFixed(fractionDigits?: number): string; + toExponential(fractionDigits?: number): string; + toPrecision(precision?: number): string; + valueOf(): number; +} +interface IArguments { + [index: number]: any; + length: number; + callee: Function; +} +interface RegExp { + readonly flags: string; + readonly sticky: boolean; + readonly unicode: boolean; +} +interface Date { + now() : string; +} +interface String { + codePointAt(pos: number): number | undefined; + includes(searchString: string, position?: number): boolean; + endsWith(searchString: string, endPosition?: number): boolean; + normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; + normalize(form?: string): string; + repeat(count: number): string; + replace(a:any, b:any):string; // bcz: fix this + startsWith(searchString: string, position?: number): boolean; + anchor(name: string): string; + big(): string; + blink(): string; + bold(): string; + fixed(): string; + fontcolor(color: string): string; + fontsize(size: number): string; + fontsize(size: string): string; + italics(): string; + link(url: string): string; + small(): string; + strike(): string; + sub(): string; + sup(): string; +} +interface Object { + constructor: Function; + toString(): string; + toLocaleString(): string; + valueOf(): Object; + hasOwnProperty(v: PropertyKey): boolean; + isPrototypeOf(v: Object): boolean; + propertyIsEnumerable(v: PropertyKey): boolean; +} +interface ConcatArray { + readonly length: number; + readonly [n: number]: T; + join(separator?: string): string; + slice(start?: number, end?: number): T[]; +} +interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toJSON(): string; +} +interface PromiseLike { + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): PromiseLike; +} +interface Promise { + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; +} + +declare const Update: unique symbol; +declare const Self: unique symbol; +declare const SelfProxy: unique symbol; +declare const DataSym: unique symbol; +declare const HandleUpdate: unique symbol; +declare const Id: unique symbol; +declare const OnUpdate: unique symbol; +declare const Parent: unique symbol; +declare const Copy: unique symbol; +declare const ToScriptString: unique symbol; + +declare abstract class RefField { + readonly [Id]: FieldId; + + constructor(); +} + +declare type FieldId = string; + +declare abstract class ObjectField { + abstract [Copy](): ObjectField; +} + +declare abstract class URLField extends ObjectField { + readonly url: URL; + + constructor(url: string); + constructor(url: URL); +} + +declare class RichTextField extends URLField { + [Copy](): ObjectField; + constructor(data:string, text: string); +} +declare class AudioField extends URLField { [Copy](): ObjectField; } +declare class VideoField extends URLField { [Copy](): ObjectField; } +declare class ImageField extends URLField { [Copy](): ObjectField; } +declare class WebField extends URLField { [Copy](): ObjectField; } +declare class PdfField extends URLField { [Copy](): ObjectField; } + +declare const ComputedField: any; +declare const CompileScript: any; + +// @ts-ignore +declare type Extract = T extends U ? T : never; +declare type Field = number | string | boolean | ObjectField | RefField; +declare type FieldWaiting = T extends undefined ? never : Promise; +declare type FieldResult = Opt | FieldWaiting>; + +declare type Opt = T | undefined; +declare class Doc extends RefField { + constructor(); + + [key: string]: FieldResult; + // [ToScriptString](): string; +} + +declare class List extends ObjectField { + constructor(fields?: T[]); + [index: number]: T | (T extends RefField ? Promise : never); + [Copy](): ObjectField; +} + +declare class InkField extends ObjectField { + constructor(data:Array<{X:number, Y:number}>); + [Copy](): ObjectField; +} + +// @ts-ignore +declare const console: any; + +interface DocumentOptions { } + +declare const Docs: { + ImageDocument(url: string, options?: DocumentOptions): Doc; + VideoDocument(url: string, options?: DocumentOptions): Doc; + TextDocument(options?: DocumentOptions): Doc; + PdfDocument(url: string, options?: DocumentOptions): Doc; + WebDocument(url: string, options?: DocumentOptions): Doc; + HtmlDocument(html: string, options?: DocumentOptions): Doc; + MapDocument(url: string, options?: DocumentOptions): Doc; + KVPDocument(document: Doc, options?: DocumentOptions): Doc; + FreeformDocument(documents: Doc[], options?: DocumentOptions): Doc; + SchemaDocument(columns: string[], documents: Doc[], options?: DocumentOptions): Doc; + TreeDocument(documents: Doc[], options?: DocumentOptions): Doc; + StackingDocument(documents: Doc[], options?: DocumentOptions): Doc; +}; + +declare function idToDoc(id:string):any; +declare function assignDoc(doc:Doc, field:any, id:any):string; +declare function d(...args:any[]):any; -- cgit v1.2.3-70-g09d2 From 5c7964173d80752200727d8340825210c2704265 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 13 Aug 2024 10:42:24 -0400 Subject: removed youtube query calls --- src/server/websocket.ts | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) (limited to 'src') diff --git a/src/server/websocket.ts b/src/server/websocket.ts index 821607df5..4a127f099 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -8,7 +8,7 @@ import { logPort } from './ActionUtilities'; import { Client } from './Client'; import { DashStats } from './DashStats'; import { DocumentsCollection } from './IDatabase'; -import { Diff, GestureContent, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, Transferable, Types, UpdateMobileInkOverlayPositionContent, YoutubeQueryInput, YoutubeQueryTypes } from './Message'; +import { Diff, GestureContent, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, Transferable, Types, UpdateMobileInkOverlayPositionContent } from './Message'; import { Search } from './Search'; import { resolvedPorts, socketMap, timeMap, userOperations } from './SocketData'; import { GoogleCredentialsLoader } from './apis/google/CredentialsLoader'; @@ -39,22 +39,6 @@ export namespace WebSocket { socket.broadcast.emit('receiveMobileDocumentUpload', content); } - function HandleYoutubeQuery([query, callback]: [YoutubeQueryInput, (result?: any[]) => void]) { - const { ProjectCredentials } = GoogleCredentialsLoader; - switch (query.type) { - case YoutubeQueryTypes.Channels: - YoutubeApi.authorizedGetChannel(ProjectCredentials); - break; - case YoutubeQueryTypes.SearchVideo: - YoutubeApi.authorizedGetVideos(ProjectCredentials, query.userInput, callback); - break; - case YoutubeQueryTypes.VideoDetails: - YoutubeApi.authorizedGetVideoDetails(ProjectCredentials, query.videoIds, callback); - break; - default: - } - } - export async function doDelete(onlyFields = true) { const target: string[] = []; onlyFields && target.push(DocumentsCollection); @@ -448,7 +432,6 @@ export namespace WebSocket { } ServerUtils.AddServerHandler(socket, MessageStore.CreateField, CreateField); - ServerUtils.AddServerHandlerCallback(socket, MessageStore.YoutubeApiQuery, HandleYoutubeQuery); ServerUtils.AddServerHandler(socket, MessageStore.UpdateField, diff => UpdateField(socket, diff)); ServerUtils.AddServerHandler(socket, MessageStore.DeleteField, id => DeleteField(socket, id)); ServerUtils.AddServerHandler(socket, MessageStore.DeleteFields, ids => DeleteFields(socket, ids)); -- cgit v1.2.3-70-g09d2 From ef79ab121c881d3e6a2982ce2e01da40294af656 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 13 Aug 2024 10:44:53 -0400 Subject: from last --- src/server/Message.ts | 18 +++--------------- src/server/Search.ts | 1 + src/server/websocket.ts | 4 +--- 3 files changed, 5 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/server/Message.ts b/src/server/Message.ts index 03150c841..8e30cd6df 100644 --- a/src/server/Message.ts +++ b/src/server/Message.ts @@ -47,19 +47,7 @@ export enum Types { export interface Transferable { readonly id: string; readonly type: Types; - readonly data?: any; -} - -export enum YoutubeQueryTypes { - Channels, - SearchVideo, - VideoDetails, -} - -export interface YoutubeQueryInput { - readonly type: YoutubeQueryTypes; - readonly userInput?: string; - readonly videoIds?: string; + readonly data?: unknown; } export interface Reference { @@ -99,6 +87,7 @@ export interface RoomMessage { readonly room: string; } +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace MessageStore { export const Foo = new Message('Foo'); export const Bar = new Message('Bar'); @@ -106,7 +95,7 @@ export namespace MessageStore { export const GetField = new Message('Get Field'); // send string 'id' get Transferable back export const GetFields = new Message('Get Fields'); // send string[] of 'id' get Transferable[] back export const GetDocument = new Message('Get Document'); - export const DeleteAll = new Message('Delete All'); + export const DeleteAll = new Message('Delete All'); export const ConnectionTerminated = new Message('Connection Terminated'); export const GesturePoints = new Message('Gesture Points'); @@ -118,7 +107,6 @@ export namespace MessageStore { export const GetRefFields = new Message('Get Ref Fields'); export const UpdateField = new Message('Update Ref Field'); export const CreateField = new Message('Create Ref Field'); - export const YoutubeApiQuery = new Message('Youtube Api Query'); export const DeleteField = new Message('Delete field'); export const DeleteFields = new Message('Delete fields'); diff --git a/src/server/Search.ts b/src/server/Search.ts index b21ee853a..06af18776 100644 --- a/src/server/Search.ts +++ b/src/server/Search.ts @@ -3,6 +3,7 @@ import * as rp from 'request-promise'; const pathTo = (relative: string) => `http://localhost:8983/solr/dash/${relative}`; +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace Search { export async function updateDocument(document: any) { try { diff --git a/src/server/websocket.ts b/src/server/websocket.ts index 4a127f099..905dbcf57 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -11,8 +11,6 @@ import { DocumentsCollection } from './IDatabase'; import { Diff, GestureContent, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, Transferable, Types, UpdateMobileInkOverlayPositionContent } from './Message'; import { Search } from './Search'; import { resolvedPorts, socketMap, timeMap, userOperations } from './SocketData'; -import { GoogleCredentialsLoader } from './apis/google/CredentialsLoader'; -import YoutubeApi from './apis/youtube/youtubeApiSample'; import { initializeGuest } from './authentication/DashUserModel'; import { Database } from './database'; @@ -77,7 +75,7 @@ export namespace WebSocket { Database.Instance.update(newValue.id, newValue, () => socket.broadcast.emit(MessageStore.SetField.Message, newValue)); // broadcast set value to all other clients if (newValue.type === Types.Text) { // if the newValue has sring type, then it's suitable for searching -- pass it to SOLR - Search.updateDocument({ id: newValue.id, data: { set: (newValue as any).data } }); + Search.updateDocument({ id: newValue.id, data: { set: newValue.data } }); } } -- cgit v1.2.3-70-g09d2 From 4d45f8a046ce5300f0b046457a381d219eef3363 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 13 Aug 2024 15:14:05 -0400 Subject: cleaning up database types --- src/client/DocServer.ts | 21 +------- src/client/views/GestureOverlay.tsx | 5 -- src/fields/Doc.ts | 3 +- src/fields/ObjectField.ts | 15 ++++-- src/fields/util.ts | 20 ++++---- src/server/IDatabase.ts | 8 ++-- src/server/MemoryDatabase.ts | 6 +-- src/server/Message.ts | 66 +------------------------- src/server/apis/google/GoogleApiServerUtils.ts | 1 + src/server/database.ts | 12 +++-- src/server/server_Initialization.ts | 7 ++- 11 files changed, 44 insertions(+), 120 deletions(-) (limited to 'src') diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts index 2bf3a6f9f..33fa928f2 100644 --- a/src/client/DocServer.ts +++ b/src/client/DocServer.ts @@ -8,7 +8,7 @@ import { UpdatingFromServer } from '../fields/DocSymbols'; import { FieldLoader } from '../fields/FieldLoader'; import { HandleUpdate, Id, Parent } from '../fields/FieldSymbols'; import { ObjectField, serverOpType } from '../fields/ObjectField'; -import { GestureContent, Message, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, UpdateMobileInkOverlayPositionContent } from '../server/Message'; +import { Message, MessageStore } from '../server/Message'; import { SerializationHelper } from './util/SerializationHelper'; /** @@ -109,25 +109,6 @@ export namespace DocServer { } } - export namespace Mobile { - export function dispatchGesturePoints(content: GestureContent) { - DocServer.Emit(_socket, MessageStore.GesturePoints, content); - } - - export function dispatchOverlayTrigger(content: MobileInkOverlayContent) { - // _socket.emit("dispatchBoxTrigger"); - DocServer.Emit(_socket, MessageStore.MobileInkOverlayTrigger, content); - } - - export function dispatchOverlayPositionUpdate(content: UpdateMobileInkOverlayPositionContent) { - DocServer.Emit(_socket, MessageStore.UpdateMobileInkOverlayPosition, content); - } - - export function dispatchMobileDocumentUpload(content: MobileDocumentUploadContent) { - DocServer.Emit(_socket, MessageStore.MobileDocumentUpload, content); - } - } - const instructions = 'This page will automatically refresh after this alert is closed. Expect to reconnect after about 30 seconds.'; function alertUser(connectionTerminationReason: string) { switch (connectionTerminationReason) { diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx index bcd4d1ee5..3a2738c3b 100644 --- a/src/client/views/GestureOverlay.tsx +++ b/src/client/views/GestureOverlay.tsx @@ -21,10 +21,8 @@ import { SetActiveInkColor, SetActiveInkWidth, } from './nodes/DocumentView'; -// import MobileInkOverlay from '../../mobile/MobileInkOverlay'; import { Gestures } from '../../pen-gestures/GestureTypes'; import { GestureUtils } from '../../pen-gestures/GestureUtils'; -// import { MobileInkOverlayContent } from '../../server/Message'; import { InteractionUtils } from '../util/InteractionUtils'; import { ScriptingGlobals } from '../util/ScriptingGlobals'; import { Transform } from '../util/Transform'; @@ -71,8 +69,6 @@ export class GestureOverlay extends ObservableReactComponent(); private _d1: Doc | undefined; private _inkToTextDoc: Doc | undefined; @@ -485,7 +481,6 @@ export class GestureOverlay extends ObservableReactComponent - {/* {this.showMobileInkOverlay ? : null} */} {this.elements}
void | Promise } = {}; public [Initializing]: boolean = false; - public [FieldChanged] = (diff: { op: '$addToSet' | '$remFromSet' | '$set'; items: FieldType[] | undefined; length: number | undefined; hint?: unknown } | undefined, serverOp: serverOpType) => { + public [FieldChanged] = (diff: { op: '$addToSet' | '$remFromSet' | '$set'; items: FieldType[] | undefined; length: number | undefined; hint?: { start: number; deleteCount: number } } | undefined, serverOp: serverOpType) => { if (!this[UpdatingFromServer] || this[ForceServerWrite]) { DocServer.UpdateField(this[Id], serverOp); } diff --git a/src/fields/ObjectField.ts b/src/fields/ObjectField.ts index 21c4af608..5f31208eb 100644 --- a/src/fields/ObjectField.ts +++ b/src/fields/ObjectField.ts @@ -2,11 +2,18 @@ import { ScriptingGlobals } from '../client/util/ScriptingGlobals'; import { Copy, FieldChanged, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; import { RefField } from './RefField'; +export type serializedFieldType = { fieldId: string; heading?: string; __type: string }; +export type serializedFieldsType = { [key: string]: { fields: serializedFieldType[] } }; +export interface serializedDoctype { + readonly id: string; + readonly fields?: serializedFieldsType; +} + export type serverOpType = { - $set?: { [key: string]: unknown }; // + $set?: serializedFieldsType; // $unset?: { [key: string]: unknown }; - $remFromSet?: { [key: string]: unknown }; - $addToSet?: { [key: string]: unknown }; + $remFromSet?: { [key: string]: { fields: serializedFieldType[] } | { deleteCount: number; start: number } | undefined; hint?: { deleteCount: number; start: number } }; + $addToSet?: serializedFieldsType; length?: number; }; export abstract class ObjectField { @@ -15,7 +22,7 @@ export abstract class ObjectField { // eslint-disable-next-line no-use-before-define items: FieldType[] | undefined; length: number | undefined; - hint?: unknown }, + hint?: { deleteCount: number, start: number} }, serverOp?: serverOpType) => void; // eslint-disable-next-line no-use-before-define public [Parent]?: RefField | ObjectField; diff --git a/src/fields/util.ts b/src/fields/util.ts index 69ece82a2..a5c56607c 100644 --- a/src/fields/util.ts +++ b/src/fields/util.ts @@ -8,7 +8,7 @@ import { Doc, DocListCast, FieldType, FieldResult, HierarchyMapping, ReverseHier import { AclAdmin, AclAugment, AclEdit, AclPrivate, DirectLinks, DocAcl, DocData, DocLayout, FieldKeys, ForceServerWrite, Height, Initializing, SelfProxy, UpdatingFromServer, Width } from './DocSymbols'; import { FieldChanged, Id, Parent, ToValue } from './FieldSymbols'; import { List, ListImpl } from './List'; -import { ObjectField } from './ObjectField'; +import { ObjectField, serializedFieldType, serverOpType } from './ObjectField'; import { PrefetchProxy, ProxyField } from './Proxy'; import { RefField } from './RefField'; import { RichTextField } from './RichTextField'; @@ -112,9 +112,9 @@ const _setterImpl = action((target: Doc | ListImpl, prop: string | sy if (writeToServer) { // prettier-ignore - if (value === undefined) + if (value === undefined || value === null) (target as Doc|ObjectField)[FieldChanged]?.(undefined, { $unset: { ['fields.' + prop]: '' } }); - else (target as Doc|ObjectField)[FieldChanged]?.(undefined, { $set: { ['fields.' + prop]: value instanceof ObjectField ? SerializationHelper.Serialize(value) :value}}); + else (target as Doc|ObjectField)[FieldChanged]?.(undefined, { $set: { ['fields.' + prop]: (value instanceof ObjectField ? SerializationHelper.Serialize(value) :value) as { fields: serializedFieldType[]}}}); if (prop === 'author' || prop.toString().startsWith('acl_')) updateCachedAcls(target); } else if (receiver instanceof Doc) { DocServer.registerDocWithCachedUpdate(receiver, prop as string, curValue); @@ -393,15 +393,15 @@ export function deleteProperty(target: Doc | ListImpl, prop: string | // able to undo and redo the partial change. // export function containedFieldChangedHandler(container: ListImpl | Doc, prop: string | number, liveContainedField: ObjectField) { - let lastValue: FieldResult = liveContainedField instanceof ObjectField ? ObjectField.MakeCopy(liveContainedField) : liveContainedField; - return (diff?: { op: '$addToSet' | '$remFromSet' | '$set'; items: (FieldType & { value?: FieldType })[] | undefined; length: number | undefined; hint?: unknown } /* , dummyServerOp?: any */) => { - const serializeItems = () => ({ __type: 'list', fields: diff?.items?.map((item: FieldType) => SerializationHelper.Serialize(item)) }); + let lastValue = ObjectField.MakeCopy(liveContainedField); + return (diff?: { op: '$addToSet' | '$remFromSet' | '$set'; items: (FieldType & { value?: FieldType })[] | undefined; length: number | undefined; hint?: { start: number; deleteCount: number } } /* , dummyServerOp?: any */) => { + const serializeItems = () => ({ __type: 'list', fields: diff?.items?.map((item: FieldType) => SerializationHelper.Serialize(item) as serializedFieldType) ?? [] }); // prettier-ignore - const serverOp = diff?.op === '$addToSet' + const serverOp: serverOpType = diff?.op === '$addToSet' ? { $addToSet: { ['fields.' + prop]: serializeItems() }, length: diff.length } : diff?.op === '$remFromSet' ? { $remFromSet: { ['fields.' + prop]: serializeItems(), hint: diff.hint}, length: diff.length } - : { $set: { ['fields.' + prop]: liveContainedField ? SerializationHelper.Serialize(liveContainedField) as FieldType : undefined } }; + : { $set: { ['fields.' + prop]: SerializationHelper.Serialize(liveContainedField) as {fields: serializedFieldType[]}} }; if (!(container instanceof Doc) || !container[UpdatingFromServer]) { const cont = container as { [key: string | number]: FieldType }; @@ -477,13 +477,13 @@ export function containedFieldChangedHandler(container: ListImpl | Do // console.log('redo list: ' + prop, fieldVal()); // bcz: uncomment to log undo setFieldVal(ObjectField.MakeCopy(newValue)); const containerProp = cont[prop]; - lastValue = containerProp instanceof ObjectField && ObjectField.MakeCopy(containerProp); + if (containerProp instanceof ObjectField) lastValue = ObjectField.MakeCopy(containerProp); }, undo: () => { // console.log('undo list: ' + prop, fieldVal()); // bcz: uncomment to log undo setFieldVal(ObjectField.MakeCopy(prevValue)); const containerProp = cont[prop]; - lastValue = containerProp instanceof ObjectField && ObjectField.MakeCopy(containerProp); + if (containerProp instanceof ObjectField) lastValue = ObjectField.MakeCopy(containerProp); }, prop: 'set list field', }, diff --git a/src/server/IDatabase.ts b/src/server/IDatabase.ts index 2274792b3..481b64d4a 100644 --- a/src/server/IDatabase.ts +++ b/src/server/IDatabase.ts @@ -1,5 +1,5 @@ import * as mongodb from 'mongodb'; -import { Transferable } from './Message'; +import { serializedDoctype } from '../fields/ObjectField'; export const DocumentsCollection = 'documents'; export interface IDatabase { @@ -13,10 +13,10 @@ export interface IDatabase { dropSchema(...schemaNames: string[]): Promise; - insert(value: any, collectionName?: string): Promise; + insert(value: { _id: string }, collectionName?: string): Promise; - getDocument(id: string, fn: (result?: Transferable) => void, collectionName?: string): void; - getDocuments(ids: string[], fn: (result: Transferable[]) => void, collectionName?: string): void; + getDocument(id: string, fn: (result?: serializedDoctype) => void, collectionName?: string): void; + getDocuments(ids: string[], fn: (result: serializedDoctype[]) => void, collectionName?: string): void; getCollectionNames(): Promise; visit(ids: string[], fn: (result: any) => string[] | Promise, collectionName?: string): Promise; diff --git a/src/server/MemoryDatabase.ts b/src/server/MemoryDatabase.ts index 1432d91c4..b838cb61b 100644 --- a/src/server/MemoryDatabase.ts +++ b/src/server/MemoryDatabase.ts @@ -1,6 +1,6 @@ import * as mongodb from 'mongodb'; +import { serializedDoctype } from '../fields/ObjectField'; import { DocumentsCollection, IDatabase } from './IDatabase'; -import { Transferable } from './Message'; export class MemoryDatabase implements IDatabase { private db: { [collectionName: string]: { [id: string]: any } } = {}; @@ -81,10 +81,10 @@ export class MemoryDatabase implements IDatabase { return Promise.resolve(); } - public getDocument(id: string, fn: (result?: Transferable) => void, collectionName = DocumentsCollection): void { + public getDocument(id: string, fn: (result?: serializedDoctype) => void, collectionName = DocumentsCollection): void { fn(this.getCollection(collectionName)[id]); } - public getDocuments(ids: string[], fn: (result: Transferable[]) => void, collectionName = DocumentsCollection): void { + public getDocuments(ids: string[], fn: (result: serializedDoctype[]) => void, collectionName = DocumentsCollection): void { fn(ids.map(id => this.getCollection(collectionName)[id])); } diff --git a/src/server/Message.ts b/src/server/Message.ts index 03150c841..26b41539b 100644 --- a/src/server/Message.ts +++ b/src/server/Message.ts @@ -1,5 +1,6 @@ import * as uuid from 'uuid'; import { Point } from '../pen-gestures/ndollar'; +import { serverOpType } from '../fields/ObjectField'; function GenerateDeterministicGuid(seed: string): string { return uuid.v5(seed, uuid.v5.URL); @@ -22,52 +23,12 @@ export class Message { } } -export enum Types { - Number, - List, - Key, - Image, - Web, - Document, - Text, - Icon, - RichText, - DocumentReference, - Html, - Video, - Audio, - Ink, - PDF, - Tuple, - Boolean, - Script, - Templates, -} - -export interface Transferable { - readonly id: string; - readonly type: Types; - readonly data?: any; -} - -export enum YoutubeQueryTypes { - Channels, - SearchVideo, - VideoDetails, -} - -export interface YoutubeQueryInput { - readonly type: YoutubeQueryTypes; - readonly userInput?: string; - readonly videoIds?: string; -} - export interface Reference { readonly id: string; } export interface Diff extends Reference { - readonly diff: any; + readonly diff: serverOpType; } export interface GestureContent { @@ -77,23 +38,6 @@ export interface GestureContent { readonly color?: string; } -export interface MobileInkOverlayContent { - readonly enableOverlay: boolean; - readonly width?: number; - readonly height?: number; - readonly text?: string; -} - -export interface UpdateMobileInkOverlayPositionContent { - readonly dx?: number; - readonly dy?: number; - readonly dsize?: number; -} - -export interface MobileDocumentUploadContent { - readonly docId: string; -} - export interface RoomMessage { readonly message: string; readonly room: string; @@ -102,17 +46,11 @@ export interface RoomMessage { export namespace MessageStore { export const Foo = new Message('Foo'); export const Bar = new Message('Bar'); - export const SetField = new Message('Set Field'); // send Transferable (no reply) - export const GetField = new Message('Get Field'); // send string 'id' get Transferable back - export const GetFields = new Message('Get Fields'); // send string[] of 'id' get Transferable[] back export const GetDocument = new Message('Get Document'); export const DeleteAll = new Message('Delete All'); export const ConnectionTerminated = new Message('Connection Terminated'); export const GesturePoints = new Message('Gesture Points'); - export const MobileInkOverlayTrigger = new Message('Trigger Mobile Ink Overlay'); - export const UpdateMobileInkOverlayPosition = new Message('Update Mobile Ink Overlay Position'); - export const MobileDocumentUpload = new Message('Upload Document From Mobile'); export const GetRefField = new Message('Get Ref Field'); export const GetRefFields = new Message('Get Ref Fields'); diff --git a/src/server/apis/google/GoogleApiServerUtils.ts b/src/server/apis/google/GoogleApiServerUtils.ts index d3acc968b..47206f415 100644 --- a/src/server/apis/google/GoogleApiServerUtils.ts +++ b/src/server/apis/google/GoogleApiServerUtils.ts @@ -21,6 +21,7 @@ const scope = ['documents.readonly', 'documents', 'presentations', 'presentation * This namespace manages server side authentication for Google API queries, either * from the standard v1 APIs or the Google Photos REST API. */ +// eslint-disable-next-line @typescript-eslint/no-namespace export namespace GoogleApiServerUtils { /** * As we expand out to more Google APIs that are accessible from diff --git a/src/server/database.ts b/src/server/database.ts index ff8584cd7..a93117349 100644 --- a/src/server/database.ts +++ b/src/server/database.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-namespace */ import * as mongodb from 'mongodb'; import * as mongoose from 'mongoose'; import { Opt } from '../fields/Doc'; @@ -5,11 +6,11 @@ import { emptyFunction, Utils } from '../Utils'; import { GoogleApiServerUtils } from './apis/google/GoogleApiServerUtils'; import { DocumentsCollection, IDatabase } from './IDatabase'; import { MemoryDatabase } from './MemoryDatabase'; -import { Transferable } from './Message'; import { Upload } from './SharedMediaTypes'; +import { serializedDoctype } from '../fields/ObjectField'; export namespace Database { - export let disconnect: Function; + export let disconnect: () => void; class DocSchema implements mongodb.BSON.Document { _id!: string; @@ -84,6 +85,7 @@ export namespace Database { if (this.db) { const collection = this.db.collection(collectionName); const prom = this.currentWrites[id]; + // eslint-disable-next-line prefer-const let newProm: Promise; const run = (): Promise => new Promise(resolve => { @@ -112,6 +114,7 @@ export namespace Database { if (this.db) { const collection = this.db.collection(collectionName); const prom = this.currentWrites[id]; + // eslint-disable-next-line prefer-const let newProm: Promise; const run = (): Promise => new Promise(resolve => { @@ -196,6 +199,7 @@ export namespace Database { const id = value._id; const collection = this.db.collection(collectionName); const prom = this.currentWrites[id]; + // eslint-disable-next-line prefer-const let newProm: Promise; const run = (): Promise => new Promise(resolve => { @@ -219,7 +223,7 @@ export namespace Database { return undefined; } - public getDocument(id: string, fn: (result?: Transferable) => void, collectionName = DocumentsCollection) { + public getDocument(id: string, fn: (result?: serializedDoctype) => void, collectionName = DocumentsCollection) { if (this.db) { const collection = this.db.collection(collectionName); collection.findOne({ _id: id }).then(resultIn => { @@ -237,7 +241,7 @@ export namespace Database { } } - public async getDocuments(ids: string[], fn: (result: Transferable[]) => void, collectionName = DocumentsCollection) { + public async getDocuments(ids: string[], fn: (result: serializedDoctype[]) => void, collectionName = DocumentsCollection) { if (this.db) { const found = await this.db .collection(collectionName) diff --git a/src/server/server_Initialization.ts b/src/server/server_Initialization.ts index 9183688c6..2190e27c7 100644 --- a/src/server/server_Initialization.ts +++ b/src/server/server_Initialization.ts @@ -29,7 +29,6 @@ import { WebSocket } from './websocket'; export type RouteSetter = (server: RouteManager) => void; // export let disconnect: Function; -// eslint-disable-next-line import/no-mutable-exports export let resolvedServerUrl: string; const week = 7 * 24 * 60 * 60 * 1000; @@ -115,12 +114,12 @@ function registerEmbeddedBrowseRelativePathHandler(server: express.Express) { } function proxyServe(req: any, requrl: string, response: any) { - // eslint-disable-next-line global-require + // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires const htmlBodyMemoryStream = new (require('memorystream'))(); let wasinBrFormat = false; const sendModifiedBody = () => { const header = response.headers['content-encoding']; - const refToCors = (match: any, tag: string, sym: string, href: string) => `${tag}=${sym + resolvedServerUrl}/corsProxy/${href + sym}`; + const refToCors = (match: string, tag: string, sym: string, href: string) => `${tag}=${sym + resolvedServerUrl}/corsProxy/${href + sym}`; // const relpathToCors = (match: any, href: string, offset: any, string: any) => `="${resolvedServerUrl + '/corsProxy/' + decodeURIComponent(req.originalUrl.split('/corsProxy/')[1].match(/https?:\/\/[^\/]*/)?.[0] ?? '') + '/' + href}"`; if (header) { try { @@ -238,7 +237,7 @@ function registerAuthenticationRoutes(server: express.Express) { export default async function InitializeServer(routeSetter: RouteSetter) { const isRelease = determineEnvironment(); const app = buildWithMiddleware(express()); - const compiler = webpack(config as any); + const compiler = webpack(config as webpack.Configuration); // route table managed by express. routes are tested sequentially against each of these map rules. when a match is found, the handler is called to process the request app.use(wdm(compiler, { publicPath: config.output.publicPath })); -- cgit v1.2.3-70-g09d2 From a0774ccdd2de7953b9822df2e106d7395cc0f216 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 13 Aug 2024 15:31:42 -0400 Subject: updated list ops on server --- src/server/websocket.ts | 244 ++++++++++++++++++------------------------------ 1 file changed, 89 insertions(+), 155 deletions(-) (limited to 'src') diff --git a/src/server/websocket.ts b/src/server/websocket.ts index 905dbcf57..f10455680 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -3,13 +3,14 @@ import { createServer } from 'https'; import * as _ from 'lodash'; import { networkInterfaces } from 'os'; import { Server, Socket } from 'socket.io'; +import { SecureContextOptions } from 'tls'; import { ServerUtils } from '../ServerUtils'; +import { serializedDoctype, serializedFieldsType } from '../fields/ObjectField'; import { logPort } from './ActionUtilities'; import { Client } from './Client'; import { DashStats } from './DashStats'; import { DocumentsCollection } from './IDatabase'; -import { Diff, GestureContent, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, Transferable, Types, UpdateMobileInkOverlayPositionContent } from './Message'; -import { Search } from './Search'; +import { Diff, GestureContent, MessageStore } from './Message'; import { resolvedPorts, socketMap, timeMap, userOperations } from './SocketData'; import { initializeGuest } from './authentication/DashUserModel'; import { Database } from './database'; @@ -25,25 +26,10 @@ export namespace WebSocket { socket.broadcast.emit('receiveGesturePoints', content); } - function processOverlayTrigger(socket: Socket, content: MobileInkOverlayContent) { - socket.broadcast.emit('receiveOverlayTrigger', content); - } - - function processUpdateOverlayPosition(socket: Socket, content: UpdateMobileInkOverlayPositionContent) { - socket.broadcast.emit('receiveUpdateOverlayPosition', content); - } - - function processMobileDocumentUpload(socket: Socket, content: MobileDocumentUploadContent) { - socket.broadcast.emit('receiveMobileDocumentUpload', content); - } - export async function doDelete(onlyFields = true) { const target: string[] = []; onlyFields && target.push(DocumentsCollection); await Database.Instance.dropSchema(...target); - if (process.env.DISABLE_SEARCH !== 'true') { - await Search.clear(); - } initializeGuest(); } @@ -63,31 +49,15 @@ export namespace WebSocket { DashStats.logUserLogin(userEmail); } - function getField([id, callback]: [string, (result?: Transferable) => void]) { - Database.Instance.getDocument(id, (result?: Transferable) => callback(result)); - } - - function getFields([ids, callback]: [string[], (result: Transferable[]) => void]) { - Database.Instance.getDocuments(ids, callback); - } - - function setField(socket: Socket, newValue: Transferable) { - Database.Instance.update(newValue.id, newValue, () => socket.broadcast.emit(MessageStore.SetField.Message, newValue)); // broadcast set value to all other clients - if (newValue.type === Types.Text) { - // if the newValue has sring type, then it's suitable for searching -- pass it to SOLR - Search.updateDocument({ id: newValue.id, data: { set: newValue.data } }); - } - } - - function GetRefFieldLocal([id, callback]: [string, (result?: Transferable) => void]) { + function GetRefFieldLocal([id, callback]: [string, (result?: serializedDoctype) => void]) { return Database.Instance.getDocument(id, callback); } - function GetRefField([id, callback]: [string, (result?: Transferable) => void]) { + function GetRefField([id, callback]: [string, (result?: serializedDoctype) => void]) { process.stdout.write(`+`); GetRefFieldLocal([id, callback]); } - function GetRefFields([ids, callback]: [string[], (result?: Transferable[]) => void]) { + function GetRefFields([ids, callback]: [string[], (result?: serializedDoctype[]) => void]) { process.stdout.write(`${ids.length}…`); Database.Instance.getDocuments(ids, callback); } @@ -151,11 +121,11 @@ export namespace WebSocket { const { diff, socket } = next; if (diff.diff.$addToSet) { // eslint-disable-next-line no-use-before-define - return GetRefFieldLocal([diff.id, (result?: Transferable) => addToListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own + return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => addToListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own } if (diff.diff.$remFromSet) { // eslint-disable-next-line no-use-before-define - return GetRefFieldLocal([diff.id, (result?: Transferable) => remFromListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own + return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => remFromListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own } // eslint-disable-next-line no-use-before-define return SetField(socket, diff); @@ -163,37 +133,41 @@ export namespace WebSocket { return !pendingOps.get(id)!.length && pendingOps.delete(id); } - function addToListField(socket: Socket, diffIn: Diff, curListItems?: Transferable): void { + function addToListField(socket: Socket, diffIn: Diff, listDoc?: serializedDoctype): void { const diff = diffIn; diff.diff.$set = diff.diff.$addToSet; delete diff.diff.$addToSet; // convert add to set to a query of the current fields, and then a set of the composition of the new fields with the old ones - const updatefield = Array.from(Object.keys(diff.diff.$set))[0]; - const newListItems = diff.diff.$set[updatefield]?.fields; + const updatefield = Array.from(Object.keys(diff.diff.$set ?? {}))[0]; + const newListItems = diff.diff.$set?.[updatefield]?.fields; if (!newListItems) { console.log('Error: addToListField - no new list items'); return; } - const curList = (curListItems as any)?.fields?.[updatefield.replace('fields.', '')]?.fields.filter((item: any) => item !== undefined) || []; - diff.diff.$set[updatefield].fields = [...curList, ...newListItems]; // , ...newListItems.filter((newItem: any) => newItem === null || !curList.some((curItem: any) => curItem.fieldId ? curItem.fieldId === newItem.fieldId : curItem.heading ? curItem.heading === newItem.heading : curItem === newItem))]; - const sendBack = diff.diff.length !== diff.diff.$set[updatefield].fields.length; - delete diff.diff.length; - Database.Instance.update( - diff.id, - diff.diff, - () => { - if (sendBack) { - console.log('Warning: list modified during update. Composite list is being returned.'); - const { id } = socket; - (socket as any).id = ''; // bcz: HACK. this prevents the update message from going back to the client that made the change. - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - (socket as any).id = id; - } else { - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - } - dispatchNextOp(diff.id); - }, - false - ); + const listItems = listDoc?.fields?.[updatefield.replace('fields.', '')]?.fields.filter(item => item !== undefined) ?? []; + if (diff.diff.$set?.[updatefield]?.fields !== undefined) { + diff.diff.$set[updatefield]!.fields = [...listItems, ...newListItems]; // , ...newListItems.filter((newItem: any) => newItem === null || !curList.some((curItem: any) => curItem.fieldId ? curItem.fieldId === newItem.fieldId : curItem.heading ? curItem.heading === newItem.heading : curItem === newItem))]; + const sendBack = diff.diff.length !== diff.diff.$set[updatefield]!.fields?.length; + delete diff.diff.length; + Database.Instance.update( + diff.id, + diff.diff, + () => { + if (sendBack) { + console.log('Warning: list modified during update. Composite list is being returned.'); + const { id } = socket; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (socket as any).id = ''; // bcz: HACK to reference private variable. this allows the update message to go back to the client that made the change. + socket.broadcast.emit(MessageStore.UpdateField.Message, diff); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (socket as any).id = id; + } else { + socket.broadcast.emit(MessageStore.UpdateField.Message, diff); + } + dispatchNextOp(diff.id); + }, + false + ); + } } /** @@ -208,7 +182,7 @@ export namespace WebSocket { * the data * @returns the closest index with the same value or -1 if the element was not found. */ - function findClosestIndex(list: any, indexesToDelete: number[], value: any, hintIndex: number) { + function findClosestIndex(list: { fieldId: string; __type: string }[], indexesToDelete: number[], value: { fieldId: string; __type: string }, hintIndex: number) { let closestIndex = -1; for (let i = 0; i < list.length; i++) { if (list[i] === value && !indexesToDelete.includes(i)) { @@ -232,63 +206,63 @@ export namespace WebSocket { * items to delete) * @param curListItems the server's current copy of the data */ - function remFromListField(socket: Socket, diffIn: Diff, curListItems?: Transferable): void { + function remFromListField(socket: Socket, diffIn: Diff, curListItems?: serializedDoctype): void { const diff = diffIn; - diff.diff.$set = diff.diff.$remFromSet; + diff.diff.$set = diff.diff.$remFromSet as serializedFieldsType; + const hint = diff.diff.$remFromSet?.hint; delete diff.diff.$remFromSet; - const updatefield = Array.from(Object.keys(diff.diff.$set))[0]; - const remListItems = diff.diff.$set[updatefield].fields; - const curList = (curListItems as any)?.fields?.[updatefield.replace('fields.', '')]?.fields.filter((f: any) => f !== null) || []; - const { hint } = diff.diff.$set; - - if (hint) { - // indexesToRemove stores the indexes that we mark for deletion, which is later used to filter the list (delete the elements) - const indexesToRemove: number[] = []; - for (let i = 0; i < hint.deleteCount; i++) { - if (curList.length > i + hint.start && _.isEqual(curList[i + hint.start], remListItems[i])) { - indexesToRemove.push(i + hint.start); - } else { - const closestIndex = findClosestIndex(curList, indexesToRemove, remListItems[i], i + hint.start); - if (closestIndex !== -1) { - indexesToRemove.push(closestIndex); + const updatefield = Array.from(Object.keys(diff.diff.$set ?? {}))[0]; + const remListItems = diff.diff.$set[updatefield]?.fields; + if (diff.diff.$set[updatefield] !== undefined && remListItems) { + const curList = curListItems?.fields?.[updatefield.replace('fields.', '')]?.fields.filter(f => f !== null) || []; + + if (hint) { + // indexesToRemove stores the indexes that we mark for deletion, which is later used to filter the list (delete the elements) + const indexesToRemove: number[] = []; + for (let i = 0; i < hint.deleteCount; i++) { + if (curList.length > i + hint.start && _.isEqual(curList[i + hint.start], remListItems[i])) { + indexesToRemove.push(i + hint.start); } else { - console.log('Item to delete was not found - index = -1'); + const closestIndex = findClosestIndex(curList, indexesToRemove, remListItems[i], i + hint.start); + if (closestIndex !== -1) { + indexesToRemove.push(closestIndex); + } else { + console.log('Item to delete was not found - index = -1'); + } } } + diff.diff.$set[updatefield]!.fields = curList.filter((curItem, index) => !indexesToRemove.includes(index)); + } else { + // go back to the original way to delete if we didn't receive + // a hint from the client + diff.diff.$set[updatefield]!.fields = curList?.filter(curItem => !remListItems.some(remItem => (remItem.fieldId ? remItem.fieldId === curItem.fieldId : remItem.heading ? remItem.heading === curItem.heading : remItem === curItem))); } - - diff.diff.$set[updatefield].fields = curList?.filter((curItem: any, index: number) => !indexesToRemove.includes(index)); - } else { - // go back to the original way to delete if we didn't receive - // a hint from the client - diff.diff.$set[updatefield].fields = curList?.filter( - (curItem: any) => !remListItems.some((remItem: any) => (remItem.fieldId ? remItem.fieldId === curItem.fieldId : remItem.heading ? remItem.heading === curItem.heading : remItem === curItem)) + // if the client and server have different versions of the data after + // deletion, they will have different lengths and the server will + // send its version of the data to the client + const sendBack = diff.diff.length !== remListItems.length; + delete diff.diff.length; + Database.Instance.update( + diff.id, + diff.diff, + () => { + if (sendBack) { + // the two copies are different, so the server sends its copy. + console.log('SEND BACK'); + const { id } = socket; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (socket as any).id = ''; // bcz: HACK to access private variable this allows the update message to go back to the client that made the change. + socket.broadcast.emit(MessageStore.UpdateField.Message, diff); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (socket as any).id = id; + } else { + socket.broadcast.emit(MessageStore.UpdateField.Message, diff); + } + dispatchNextOp(diff.id); + }, + false ); } - - // if the client and server have different versions of the data after - // deletion, they will have different lengths and the server will - // send its version of the data to the client - const sendBack = diff.diff.length !== diff.diff.$set[updatefield].fields.length; - delete diff.diff.length; - Database.Instance.update( - diff.id, - diff.diff, - () => { - if (sendBack) { - // the two copies are different, so the server sends its copy. - console.log('SEND BACK'); - const { id } = socket; - (socket as any).id = ''; // bcz: HACK. this prevents the update message from going back to the client that made the change. - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - (socket as any).id = id; - } else { - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - } - dispatchNextOp(diff.id); - }, - false - ); } function UpdateField(socket: Socket, diff: Diff) { @@ -307,43 +281,16 @@ export namespace WebSocket { } pendingOps.set(diff.id, [{ diff, socket }]); if (diff.diff.$addToSet) { - return GetRefFieldLocal([diff.id, (result?: Transferable) => addToListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own + return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => addToListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own } if (diff.diff.$remFromSet) { - return GetRefFieldLocal([diff.id, (result?: Transferable) => remFromListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own + return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => remFromListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own } // eslint-disable-next-line no-use-before-define return SetField(socket, diff); } function SetField(socket: Socket, diff: Diff /* , curListItems?: Transferable */) { Database.Instance.update(diff.id, diff.diff, () => socket.broadcast.emit(MessageStore.UpdateField.Message, diff), false); - const docfield = diff.diff.$set || diff.diff.$unset; - if (docfield) { - const update: any = { id: diff.id }; - let dynfield = false; - // eslint-disable-next-line no-restricted-syntax - for (let key in docfield) { - // eslint-disable-next-line no-continue - if (!key.startsWith('fields.')) continue; - dynfield = true; - const val = docfield[key]; - key = key.substring(7); - Object.values(suffixMap).forEach(suf => { - update[key + getSuffix(suf)] = { set: null }; - }); - const term = ToSearchTerm(val); - if (term !== undefined) { - const { suffix, value } = term; - update[key + suffix] = { set: value }; - if (key.endsWith('modificationDate')) { - update['modificationDate' + suffix] = value; - } - } - } - if (dynfield) { - Search.updateDocument(update); - } - } dispatchNextOp(diff.id); } @@ -351,21 +298,15 @@ export namespace WebSocket { Database.Instance.delete({ _id: id }).then(() => { socket.broadcast.emit(MessageStore.DeleteField.Message, id); }); - - Search.deleteDocuments([id]); } function DeleteFields(socket: Socket, ids: string[]) { Database.Instance.delete({ _id: { $in: ids } }).then(() => { socket.broadcast.emit(MessageStore.DeleteFields.Message, ids); }); - Search.deleteDocuments(ids); } - function CreateField(newValue: any) { - Database.Instance.insert(newValue); - } - export async function initialize(isRelease: boolean, credentials: any) { + export async function initialize(isRelease: boolean, credentials: SecureContextOptions) { let io: Server; if (isRelease) { const { socketPort } = process.env; @@ -422,21 +363,14 @@ export namespace WebSocket { ServerUtils.Emit(socket, MessageStore.Foo, 'handshooken'); ServerUtils.AddServerHandler(socket, MessageStore.Bar, guid => barReceived(socket, guid)); - ServerUtils.AddServerHandler(socket, MessageStore.SetField, args => setField(socket, args)); - ServerUtils.AddServerHandlerCallback(socket, MessageStore.GetField, getField); - ServerUtils.AddServerHandlerCallback(socket, MessageStore.GetFields, getFields); if (isRelease) { ServerUtils.AddServerHandler(socket, MessageStore.DeleteAll, () => doDelete(false)); } - ServerUtils.AddServerHandler(socket, MessageStore.CreateField, CreateField); ServerUtils.AddServerHandler(socket, MessageStore.UpdateField, diff => UpdateField(socket, diff)); ServerUtils.AddServerHandler(socket, MessageStore.DeleteField, id => DeleteField(socket, id)); ServerUtils.AddServerHandler(socket, MessageStore.DeleteFields, ids => DeleteFields(socket, ids)); ServerUtils.AddServerHandler(socket, MessageStore.GesturePoints, content => processGesturePoints(socket, content)); - ServerUtils.AddServerHandler(socket, MessageStore.MobileInkOverlayTrigger, content => processOverlayTrigger(socket, content)); - ServerUtils.AddServerHandler(socket, MessageStore.UpdateMobileInkOverlayPosition, content => processUpdateOverlayPosition(socket, content)); - ServerUtils.AddServerHandler(socket, MessageStore.MobileDocumentUpload, content => processMobileDocumentUpload(socket, content)); ServerUtils.AddServerHandlerCallback(socket, MessageStore.GetRefField, GetRefField); ServerUtils.AddServerHandlerCallback(socket, MessageStore.GetRefFields, GetRefFields); -- cgit v1.2.3-70-g09d2 From fe91a8cd62ee1793f4a1d38c3ed4a1b451f4e3a4 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 13 Aug 2024 15:55:01 -0400 Subject: fix for linear views --- src/client/views/collections/collectionLinear/CollectionLinearView.tsx | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/client/views/collections/collectionLinear/CollectionLinearView.tsx b/src/client/views/collections/collectionLinear/CollectionLinearView.tsx index 3af8464c2..ceae43c04 100644 --- a/src/client/views/collections/collectionLinear/CollectionLinearView.tsx +++ b/src/client/views/collections/collectionLinear/CollectionLinearView.tsx @@ -22,6 +22,7 @@ import { DocumentLinksButton } from '../../nodes/DocumentLinksButton'; import { DocumentView } from '../../nodes/DocumentView'; import { LinkDescriptionPopup } from '../../nodes/LinkDescriptionPopup'; import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; +import './CollectionLinearView.scss'; /** * CollectionLinearView is the class for rendering the horizontal collection -- cgit v1.2.3-70-g09d2 From 5960fa9635c28c2b609826005cb7595ec6b9fb75 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 13 Aug 2024 16:31:13 -0400 Subject: fixed bugs introduced cleaning up database list ops. --- src/client/DocServer.ts | 16 ++++++++-------- src/fields/Doc.ts | 2 +- src/server/Message.ts | 2 +- src/server/websocket.ts | 7 ++++++- 4 files changed, 16 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts index 33fa928f2..c644308b7 100644 --- a/src/client/DocServer.ts +++ b/src/client/DocServer.ts @@ -34,7 +34,7 @@ export namespace DocServer { throw new Error("Can't use DocServer without calling init first"); } let _UpdateField: (id: string, diff: serverOpType) => void = errorFunc; - let _CreateField: (field: Doc) => void = errorFunc; + let _CreateDocField: (field: Doc) => void = errorFunc; export function AddServerHandler(socket: Socket, message: Message, handler: (args: T) => void) { socket.on(message.Message, Utils.loggingCallback('Incoming', handler, message.Name)); @@ -132,7 +132,7 @@ export namespace DocServer { export function makeReadOnly() { if (!_isReadOnly) { _isReadOnly = true; - _CreateField = field => { + _CreateDocField = field => { _cache[field[Id]] = field; }; _UpdateField = emptyFunction; @@ -357,20 +357,20 @@ export namespace DocServer { } /** - * A wrapper around the function local variable _createField. + * A wrapper around the function local variable _CreateDocField. * This allows us to swap in different executions while comfortably * calling the same function throughout the code base (such as in Util.makeReadonly()) * @param field the [RefField] to be serialized and sent to the server to be stored in the database */ - export function CreateField(field: Doc) { + export function CreateDocField(field: Doc) { _cacheNeedsUpdate = true; - _CreateField(field); + _CreateDocField(field); } - function _CreateFieldImpl(field: Doc) { + function _CreateDocFieldImpl(field: Doc) { _cache[field[Id]] = field; const initialState = SerializationHelper.Serialize(field); - ClientUtils.CurrentUserEmail() !== 'guest' && DocServer.Emit(_socket, MessageStore.CreateField, initialState); + ClientUtils.CurrentUserEmail() !== 'guest' && DocServer.Emit(_socket, MessageStore.CreateDocField, initialState); } // NOTIFY THE SERVER OF AN UPDATE TO A DOC'S STATE @@ -462,7 +462,7 @@ export namespace DocServer { _GetCachedRefField = _GetCachedRefFieldImpl; SetObjGetRefField((_GetRefField = _GetRefFieldImpl)); SetObjGetRefFields((_GetRefFields = _GetRefFieldsImpl)); - _CreateField = _CreateFieldImpl; + _CreateDocField = _CreateDocFieldImpl; _UpdateField = _UpdateFieldImpl; /** diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index ad7609895..2ae9dbf02 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -329,7 +329,7 @@ export class Doc extends RefField { }); this[SelfProxy] = docProxy; if (!id || forceSave) { - DocServer.CreateField(docProxy); + DocServer.CreateDocField(docProxy); } // eslint-disable-next-line no-constructor-return return docProxy; // need to return the proxy from the constructor so that all our added fields will get called diff --git a/src/server/Message.ts b/src/server/Message.ts index 4599708c9..b904a5ba3 100644 --- a/src/server/Message.ts +++ b/src/server/Message.ts @@ -56,7 +56,7 @@ export namespace MessageStore { export const GetRefField = new Message('Get Ref Field'); export const GetRefFields = new Message('Get Ref Fields'); export const UpdateField = new Message('Update Ref Field'); - export const CreateField = new Message('Create Ref Field'); + export const CreateDocField = new Message('Create Ref Field'); export const DeleteField = new Message('Delete field'); export const DeleteFields = new Message('Delete fields'); diff --git a/src/server/websocket.ts b/src/server/websocket.ts index f10455680..f588151a5 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -240,7 +240,7 @@ export namespace WebSocket { // if the client and server have different versions of the data after // deletion, they will have different lengths and the server will // send its version of the data to the client - const sendBack = diff.diff.length !== remListItems.length; + const sendBack = diff.diff.length !== diff.diff.$set[updatefield].fields.length; delete diff.diff.length; Database.Instance.update( diff.id, @@ -306,6 +306,10 @@ export namespace WebSocket { }); } + function CreateDocField(newValue: serializedDoctype) { + Database.Instance.insert(newValue); + } + export async function initialize(isRelease: boolean, credentials: SecureContextOptions) { let io: Server; if (isRelease) { @@ -367,6 +371,7 @@ export namespace WebSocket { ServerUtils.AddServerHandler(socket, MessageStore.DeleteAll, () => doDelete(false)); } + ServerUtils.AddServerHandler(socket, MessageStore.CreateDocField, CreateDocField); ServerUtils.AddServerHandler(socket, MessageStore.UpdateField, diff => UpdateField(socket, diff)); ServerUtils.AddServerHandler(socket, MessageStore.DeleteField, id => DeleteField(socket, id)); ServerUtils.AddServerHandler(socket, MessageStore.DeleteFields, ids => DeleteFields(socket, ids)); -- cgit v1.2.3-70-g09d2 From 25ea424ab2e6c32272e828b98822eb32f1fe2cab Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 15 Aug 2024 11:14:04 -0400 Subject: cleaned up server list add/rem. --- src/ServerUtils.ts | 10 +- src/Utils.ts | 16 +- src/client/views/DocComponent.tsx | 4 +- src/client/views/StyleProvider.tsx | 3 +- src/client/views/collections/TabDocView.tsx | 10 +- src/client/views/collections/TreeView.tsx | 6 +- src/client/views/nodes/DocumentContentsView.tsx | 3 +- .../views/nodes/formattedText/FormattedTextBox.tsx | 38 ++-- src/client/views/nodes/trails/PresBox.tsx | 98 ++++---- src/client/views/nodes/trails/SlideEffect.tsx | 2 +- src/fields/ObjectField.ts | 5 +- src/fields/RichTextUtils.ts | 56 +++-- src/fields/util.ts | 4 +- src/server/database.ts | 2 +- src/server/websocket.ts | 248 +++++++-------------- 15 files changed, 201 insertions(+), 304 deletions(-) (limited to 'src') diff --git a/src/ServerUtils.ts b/src/ServerUtils.ts index 7e821cda2..904541fc7 100644 --- a/src/ServerUtils.ts +++ b/src/ServerUtils.ts @@ -9,20 +9,20 @@ export namespace ServerUtils { socket.emit(message.Message, args); } - export function AddServerHandler(socket: Socket, message: Message, handler: (args: T) => any) { + export function AddServerHandler(socket: Socket, message: Message, handler: (args: T) => void) { socket.on(message.Message, Utils.loggingCallback('Incoming', handler, message.Name)); } - export function AddServerHandlerCallback(socket: Socket, message: Message, handler: (args: [T, (res: any) => any]) => any) { - socket.on(message.Message, (arg: T, fn: (res: any) => any) => { + export function AddServerHandlerCallback(socket: Socket, message: Message, handler: (args: [T, (res: unknown) => void]) => void) { + socket.on(message.Message, (arg: T, fn: (res: unknown) => void) => { Utils.log('S receiving', message.Name, arg, true); handler([arg, Utils.loggingCallback('S sending', fn, message.Name)]); }); } - export type RoomHandler = (socket: Socket, room: string) => any; + export type RoomHandler = (socket: Socket, room: string) => void; export type UsedSockets = Socket; export type RoomMessage = 'create or join' | 'created' | 'joined'; export function AddRoomHandler(socket: Socket, message: RoomMessage, handler: RoomHandler) { - socket.on(message, (room: any) => handler(socket, room)); + socket.on(message, room => handler(socket, room)); } } diff --git a/src/Utils.ts b/src/Utils.ts index 23ae38bdb..0590c6930 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-namespace */ import * as uuid from 'uuid'; export function clamp(n: number, lower: number, upper: number) { @@ -23,6 +24,7 @@ export namespace Utils { export const loggingEnabled = false; export const logFilter: number | undefined = undefined; + // eslint-disable-next-line @typescript-eslint/no-explicit-any export function log(prefixIn: string, messageName: string, messageIn: any, receiving: boolean) { let prefix = prefixIn; let message = messageIn; @@ -38,8 +40,9 @@ export namespace Utils { console.log(`${prefix}: ${idString}, ${receiving ? 'receiving' : 'sending'} ${messageName} with data ${JSON.stringify(message)} `); } - export function loggingCallback(prefix: string, func: (args: any) => any, messageName: string) { - return (args: any) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + export function loggingCallback(prefix: string, func: (args: any) => void, messageName: string) { + return (args: unknown) => { log(prefix, messageName, args, true); func(args); }; @@ -47,7 +50,9 @@ export namespace Utils { export function TraceConsoleLog() { ['log', 'warn'].forEach(method => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const old = (console as any)[method]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any (console as any)[method] = function (...args: any[]) { let stack = new Error('').stack?.split(/\n/); // Chrome includes a single "Error" line, FF doesn't. @@ -158,7 +163,7 @@ export function timenow() { const now = new Date(); let ampm = 'am'; let h = now.getHours(); - let m: any = now.getMinutes(); + let m: string | number = now.getMinutes(); if (h >= 12) { if (h > 12) h -= 12; ampm = 'pm'; @@ -201,7 +206,7 @@ export function intersectRect(r1: { left: number; top: number; width: number; he export function stringHash(s?: string) { // eslint-disable-next-line no-bitwise - return !s ? undefined : Math.abs(s.split('').reduce((a: any, b: any) => (n => n & n)((a << 5) - a + b.charCodeAt(0)), 0)); + return !s ? undefined : Math.abs(s.split('').reduce((a, b) => (n => n & n)((a << 5) - a + b.charCodeAt(0)), 0)); } export function percent2frac(percent: string) { @@ -224,8 +229,6 @@ export function emptyFunction() { return undefined; } -export const emptyPath: any[] = []; - export function unimplementedFunction() { throw new Error('This function is not implemented, but should be.'); } @@ -246,6 +249,7 @@ export function DeepCopy(source: Map, predicate?: Predicate) { export namespace JSONUtils { export function tryParse(source: string) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any let results: any; try { results = JSON.parse(source); diff --git a/src/client/views/DocComponent.tsx b/src/client/views/DocComponent.tsx index e5752dcd2..e351e2dec 100644 --- a/src/client/views/DocComponent.tsx +++ b/src/client/views/DocComponent.tsx @@ -93,7 +93,7 @@ export function ViewBoxBaseComponent

() { * This is the unique data repository for a dcoument that stores the intrinsic document data */ @computed get dataDoc() { - return this.Document.isTemplateForField || this.Document.isTemplateDoc ? this._props.TemplateDataDocument ?? this.Document[DocData] : this.Document[DocData]; + return this.Document.isTemplateForField || this.Document.isTemplateDoc ? (this._props.TemplateDataDocument ?? this.Document[DocData]) : this.Document[DocData]; } /** @@ -151,7 +151,7 @@ export function ViewBoxAnnotatableComponent

() { * This is the unique data repository for a dcoument that stores the intrinsic document data */ @computed get dataDoc() { - return this.Document.isTemplateForField || this.Document.isTemplateDoc ? this._props.TemplateDataDocument ?? this.Document[DocData] : this.Document[DocData]; + return this.Document.isTemplateForField || this.Document.isTemplateDoc ? (this._props.TemplateDataDocument ?? this.Document[DocData]) : this.Document[DocData]; } /** diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 2792955a0..374f8ca3a 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -13,7 +13,6 @@ import { Id } from '../../fields/FieldSymbols'; import { ScriptField } from '../../fields/ScriptField'; import { BoolCast, Cast, DocCast, ImageCast, NumCast, ScriptCast, StrCast } from '../../fields/Types'; import { AudioAnnoState } from '../../server/SharedMediaTypes'; -import { emptyPath } from '../../Utils'; import { CollectionViewType, DocumentType } from '../documents/DocumentTypes'; import { IsFollowLinkScript } from '../documents/DocUtils'; import { SnappingManager } from '../util/SnappingManager'; @@ -406,5 +405,5 @@ export function DashboardStyleProvider(doc: Opt, props: Opt } export function returnEmptyDocViewList() { - return emptyPath; + return [] as DocumentView[]; } diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx index f168db81b..31b6be927 100644 --- a/src/client/views/collections/TabDocView.tsx +++ b/src/client/views/collections/TabDocView.tsx @@ -7,7 +7,7 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import * as ReactDOM from 'react-dom/client'; import ResizeObserver from 'resize-observer-polyfill'; -import { ClientUtils, DashColor, lightOrDark, returnFalse, returnTrue, setupMoveUpEvents, simulateMouseClick } from '../../../ClientUtils'; +import { ClientUtils, DashColor, lightOrDark, returnEmptyFilter, returnFalse, returnTrue, setupMoveUpEvents, simulateMouseClick } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; import { Doc, Opt, returnEmptyDoclist } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; @@ -157,8 +157,8 @@ export class TabMinimapView extends ObservableReactComponent { PanelWidth={this.PanelWidth} PanelHeight={this.PanelHeight} styleProvider={DefaultStyleProvider} - childFilters={CollectionDockingView.Instance?.childDocFilters ?? returnEmptyDocViewList} - childFiltersByRanges={CollectionDockingView.Instance?.childDocRangeFilters ?? returnEmptyDocViewList} + childFilters={CollectionDockingView.Instance?.childDocFilters ?? returnEmptyFilter} + childFiltersByRanges={CollectionDockingView.Instance?.childDocRangeFilters ?? returnEmptyFilter} searchFilterDocs={CollectionDockingView.Instance?.searchFilterDocs ?? returnEmptyDoclist} addDocument={undefined} removeDocument={this.remDocTab} diff --git a/src/client/views/collections/TreeView.tsx b/src/client/views/collections/TreeView.tsx index c0fe7a894..b10a521ca 100644 --- a/src/client/views/collections/TreeView.tsx +++ b/src/client/views/collections/TreeView.tsx @@ -6,7 +6,7 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { ClientUtils, lightOrDark, return18, returnEmptyFilter, returnEmptyString, returnFalse, returnTrue, returnZero, setupMoveUpEvents, simulateMouseClick } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; -import { Doc, DocListCast, Field, FieldResult, FieldType, Opt, StrListCast, returnEmptyDoclist } from '../../../fields/Doc'; +import { Doc, DocListCast, Field, FieldType, Opt, StrListCast, returnEmptyDoclist } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { List } from '../../../fields/List'; @@ -249,7 +249,7 @@ export class TreeView extends ObservableReactComponent { return []; } - const runningChildren: FieldResult[] = []; + const runningChildren: Doc[] = []; childList.forEach(child => { if (child.runProcess && TreeView.GetRunningChildren.get(child)) { if (child.runProcess) { @@ -261,7 +261,7 @@ export class TreeView extends ObservableReactComponent { return runningChildren; }; - static GetRunningChildren = new Map FieldResult[]>(); + static GetRunningChildren = new Map Doc[]>(); static ToggleChildrenRun = new Map void>(); constructor(props: TreeViewProps) { super(props); diff --git a/src/client/views/nodes/DocumentContentsView.tsx b/src/client/views/nodes/DocumentContentsView.tsx index b178d6554..15baebae1 100644 --- a/src/client/views/nodes/DocumentContentsView.tsx +++ b/src/client/views/nodes/DocumentContentsView.tsx @@ -192,6 +192,7 @@ export class DocumentContentsView extends ObservableReactComponent 12 || !layoutFrame || !this.layoutDoc || GetEffectiveAcl(this.layoutDoc) === AclPrivate ? null : ( new FormattedTextBoxComment() }), + ], + }; + } private static nodeViews: (self: FormattedTextBox) => { [key: string]: NodeViewConstructor }; /** * Initialize the class with all the plugin node view components @@ -108,7 +123,6 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent; - private _keymap: KeyMap | undefined = undefined; private _rules: RichTextRules | undefined; private _forceUncollapse = true; // if the cursor doesn't move between clicks, then the selection will disappear for some reason. This flags the 2nd click as happening on a selection which allows bullet points to toggle private _break = true; @@ -128,20 +142,8 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent new FormattedTextBoxComment() }), - ], - }; + return FormattedTextBox.MakeConfig(this._rules, this._props); } public get EditorView() { @@ -1380,11 +1382,11 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { - this._props.rootSelected?.() && RichTextMenu.Instance && (RichTextMenu.Instance.view = newView); - return new RichTextMenuPlugin({ editorProps: this._props }); + props?.rootSelected?.() && RichTextMenu.Instance && (RichTextMenu.Instance.view = newView); + return new RichTextMenuPlugin({ editorProps: props }); }), }); } diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx index 0c73400a9..c403f9415 100644 --- a/src/client/views/nodes/trails/PresBox.tsx +++ b/src/client/views/nodes/trails/PresBox.tsx @@ -1,5 +1,3 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; import Slider from '@mui/material/Slider'; @@ -32,7 +30,7 @@ import { dropActionType } from '../../../util/DropActionTypes'; import { ScriptingGlobals } from '../../../util/ScriptingGlobals'; import { SerializationHelper } from '../../../util/SerializationHelper'; import { SnappingManager } from '../../../util/SnappingManager'; -import { undoBatch, UndoManager } from '../../../util/UndoManager'; +import { undoable, undoBatch, UndoManager } from '../../../util/UndoManager'; import { CollectionFreeFormView } from '../../collections/collectionFreeForm'; import { CollectionFreeFormPannableContents } from '../../collections/collectionFreeForm/CollectionFreeFormPannableContents'; import { CollectionView } from '../../collections/CollectionView'; @@ -191,7 +189,7 @@ export class PresBox extends ViewBoxBaseComponent() { @computed get isTreeOrStack() { - return [CollectionViewType.Tree, CollectionViewType.Stacking].includes(StrCast(this.layoutDoc._type_collection) as any); + return [CollectionViewType.Tree, CollectionViewType.Stacking].includes(StrCast(this.layoutDoc._type_collection) as CollectionViewType); } @computed get isTree() { return this.layoutDoc._type_collection === CollectionViewType.Tree; @@ -304,7 +302,7 @@ export class PresBox extends ViewBoxBaseComponent() { // 'Play on next' for audio or video therefore first navigate to the audio/video before it should be played startTempMedia = (targetDoc: Doc, activeItem: Doc) => { const duration: number = NumCast(activeItem.config_clipEnd) - NumCast(activeItem.config_clipStart); - if ([DocumentType.VID, DocumentType.AUDIO].includes(targetDoc.type as any)) { + if ([DocumentType.VID, DocumentType.AUDIO].includes(targetDoc.type as DocumentType)) { const targMedia = DocumentView.getDocumentView(targetDoc); targMedia?.ComponentView?.playFrom?.(NumCast(activeItem.config_clipStart), NumCast(activeItem.config_clipStart) + duration); } @@ -312,7 +310,7 @@ export class PresBox extends ViewBoxBaseComponent() { stopTempMedia = (targetDocField: FieldResult) => { const targetDoc = DocCast(DocCast(targetDocField).annotationOn) ?? DocCast(targetDocField); - if ([DocumentType.VID, DocumentType.AUDIO].includes(targetDoc.type as any)) { + if ([DocumentType.VID, DocumentType.AUDIO].includes(targetDoc.type as DocumentType)) { const targMedia = DocumentView.getDocumentView(targetDoc); targMedia?.ComponentView?.Pause?.(); } @@ -364,7 +362,7 @@ export class PresBox extends ViewBoxBaseComponent() { this.setIsRecording(false); this.setIsLoading(true); - const currSlideProperties: { [key: string]: any } = {}; + const currSlideProperties: { [key: string]: FieldResult } = {}; gptSlideProperties.forEach(key => { if (this.activeItem[key]) { currSlideProperties[key] = this.activeItem[key]; @@ -554,7 +552,7 @@ export class PresBox extends ViewBoxBaseComponent() { } }); static pinDataTypes(target?: Doc): dataTypes { - const targetType = target?.type as any; + const targetType = target?.type as DocumentType; const inkable = [DocumentType.INK].includes(targetType); const scrollable = [DocumentType.PDF, DocumentType.RTF, DocumentType.WEB].includes(targetType) || target?._type_collection === CollectionViewType.Stacking; const pannable = [DocumentType.IMG, DocumentType.PDF].includes(targetType) || (targetType === DocumentType.COL && target?._type_collection === CollectionViewType.Freeform); @@ -759,8 +757,8 @@ export class PresBox extends ViewBoxBaseComponent() { const doc = DocCast(DocServer.GetCachedRefField(data.id)); if (doc) { transitioned.add(doc); - const field = !data.data ? undefined : await SerializationHelper.Deserialize(data.data); - const tfield = !data.text ? undefined : await SerializationHelper.Deserialize(data.text); + const field = !data.data ? undefined : ((await SerializationHelper.Deserialize(data.data)) as FieldType); + const tfield = !data.text ? undefined : ((await SerializationHelper.Deserialize(data.text)) as FieldType); doc._dataTransition = `all ${transTime}ms`; doc.x = data.x; doc.y = data.y; @@ -858,7 +856,7 @@ export class PresBox extends ViewBoxBaseComponent() { effect: activeItem, noSelect: true, openLocation: targetDoc.type === DocumentType.PRES ? ((OpenWhere.replace + ':' + PresBox.PanelName) as OpenWhere) : OpenWhere.addLeft, - easeFunc: StrCast(activeItem.presentation_easeFunc, 'ease') as any, + easeFunc: StrCast(activeItem.presentation_easeFunc, 'ease') as 'linear' | 'ease', zoomTextSelections: BoolCast(activeItem.presentation_zoomText), playAudio: BoolCast(activeItem.presentation_playAudio), playMedia: activeItem.presentation_mediaStart === 'auto', @@ -1101,7 +1099,7 @@ export class PresBox extends ViewBoxBaseComponent() { */ @undoBatch viewChanged = action((e: React.ChangeEvent) => { - const typeCollection = (e.target as any).selectedOptions[0].value as CollectionViewType; + const typeCollection = (e.target as HTMLSelectElement).selectedOptions[0].value as CollectionViewType; this.layoutDoc.presFieldKey = this.fieldKey + (typeCollection === CollectionViewType.Tree ? '-linearized' : ''); // pivot field may be set by the user in timeline view (or some other way) -- need to reset it here [CollectionViewType.Tree || CollectionViewType.Stacking].includes(typeCollection) && (this.Document._pivotField = undefined); @@ -1111,30 +1109,8 @@ export class PresBox extends ViewBoxBaseComponent() { } }); - /** - * Called when the user changes the view type - * Either 'List' (stacking) or 'Slides' (carousel) - */ - // @undoBatch - mediaStopChanged = action((e: React.ChangeEvent) => { - const { activeItem } = this; - const stopDoc = (e.target as any).selectedOptions[0].value as string; - const stopDocIndex = Number(stopDoc[0]); - activeItem.mediaStopDoc = stopDocIndex; - if (this.childDocs[stopDocIndex - 1].mediaStopTriggerList) { - const list = DocListCast(this.childDocs[stopDocIndex - 1].mediaStopTriggerList); - list.push(activeItem); - // this.childDocs[stopDocIndex - 1].mediaStopTriggerList = list;\ - } else { - this.childDocs[stopDocIndex - 1].mediaStopTriggerList = new List(); - const list = DocListCast(this.childDocs[stopDocIndex - 1].mediaStopTriggerList); - list.push(activeItem); - // this.childDocs[stopDocIndex - 1].mediaStopTriggerList = list; - } - }); - movementName = action((activeItem: Doc) => { - if (![PresMovement.Zoom, PresMovement.Pan, PresMovement.Center, PresMovement.Jump, PresMovement.None].includes(StrCast(activeItem.presentation_movement) as any)) { + if (![PresMovement.Zoom, PresMovement.Pan, PresMovement.Center, PresMovement.Jump, PresMovement.None].includes(StrCast(activeItem.presentation_movement) as PresMovement)) { return PresMovement.Zoom; } return StrCast(activeItem.presentation_movement); @@ -1185,7 +1161,7 @@ export class PresBox extends ViewBoxBaseComponent() { * Method to get the list of selected items in the order in which they have been selected */ @computed get listOfSelected() { - return Array.from(this.selectedArray).map((doc: Doc, index: any) => { + return Array.from(this.selectedArray).map((doc, index) => { const curDoc = Cast(doc, Doc, null); const tagDoc = Cast(curDoc.presentation_targetDoc, Doc, null); if (curDoc && curDoc === this.activeItem) @@ -1193,7 +1169,7 @@ export class PresBox extends ViewBoxBaseComponent() { // eslint-disable-next-line react/no-array-index-key

- {index + 1}. {curDoc.title} + {index + 1}. {StrCast(curDoc.title)})
); @@ -1201,14 +1177,14 @@ export class PresBox extends ViewBoxBaseComponent() { return ( // eslint-disable-next-line react/no-array-index-key
- {index + 1}. {curDoc.title} + {index + 1}. {StrCast(curDoc.title)}
); if (curDoc) return ( // eslint-disable-next-line react/no-array-index-key
- {index + 1}. {curDoc.title} + {index + 1}. {StrCast(curDoc.title)}
); return null; @@ -1301,13 +1277,14 @@ export class PresBox extends ViewBoxBaseComponent() { switch (e.key) { case 'Backspace': if (this.layoutDoc.presentation_status === 'edit') { - undoBatch( + undoable( action(() => { Array.from(this.selectedArray).forEach(doc => this.removeDocument(doc)); this.clearSelectedArray(); this._eleArray.length = 0; this._dragArray.length = 0; - }) + }), + 'delete slides' )(); handled = true; } @@ -1488,7 +1465,7 @@ export class PresBox extends ViewBoxBaseComponent() { ); }; // Converts seconds to ms and updates presentation_transition - public static SetTransitionTime = (number: String, setter: (timeInMS: number) => void, change?: number) => { + public static SetTransitionTime = (number: string, setter: (timeInMS: number) => void, change?: number) => { let timeInMS = Number(number) * 1000; if (change) timeInMS += change; if (timeInMS < 100) timeInMS = 100; @@ -1497,7 +1474,7 @@ export class PresBox extends ViewBoxBaseComponent() { }; @undoBatch - updateTransitionTime = (number: String, change?: number) => { + updateTransitionTime = (number: string, change?: number) => { PresBox.SetTransitionTime( number, (timeInMS: number) => @@ -1510,7 +1487,7 @@ export class PresBox extends ViewBoxBaseComponent() { // Converts seconds to ms and updates presentation_transition @undoBatch - updateZoom = (number: String, change?: number) => { + updateZoom = (number: string, change?: number) => { let scale = Number(number) / 100; if (change) scale += change; if (scale < 0.01) scale = 0.01; @@ -1524,7 +1501,7 @@ export class PresBox extends ViewBoxBaseComponent() { * Converts seconds to ms and updates presentation_duration */ @undoBatch - updateDurationTime = (number: String, change?: number) => { + updateDurationTime = (number: string, change?: number) => { let timeInMS = Number(number) * 1000; if (change) timeInMS += change; if (timeInMS < 100) timeInMS = 100; @@ -1608,9 +1585,9 @@ export class PresBox extends ViewBoxBaseComponent() { }); }; - static _sliderBatch: any; + static _sliderBatch: UndoManager.Batch | undefined; static endBatch = () => { - PresBox._sliderBatch.end(); + PresBox._sliderBatch?.end(); document.removeEventListener('pointerup', PresBox.endBatch, true); }; public static inputter = (min: string, step: string, max: string, value: number, active: boolean, change: (val: string) => void, hmargin?: number) => ( @@ -1704,7 +1681,7 @@ export class PresBox extends ViewBoxBaseComponent() {
- {[DocumentType.AUDIO, DocumentType.VID].includes(targetType as any as DocumentType) ? null : ( + {[DocumentType.AUDIO, DocumentType.VID].includes(targetType as DocumentType) ? null : ( <>
Slide Duration
@@ -1847,7 +1824,7 @@ export class PresBox extends ViewBoxBaseComponent() { if (activeItem && this.targetDoc) { const transitionSpeed = activeItem.presentation_transition ? NumCast(activeItem.presentation_transition) / 1000 : 0.5; const zoom = NumCast(activeItem.config_zoom, 1) * 100; - const effect = StrCast(activeItem.presentation_effect) ? (StrCast(activeItem.presentation_effect) as any as PresEffect) : PresEffect.None; + const effect = StrCast(activeItem.presentation_effect) ? (StrCast(activeItem.presentation_effect) as PresEffect) : PresEffect.None; const direction = StrCast(activeItem.presentation_effectDirection) as PresEffectDirection; return ( @@ -2660,24 +2637,26 @@ export class PresBox extends ViewBoxBaseComponent() {
e.stopPropagation()} onPointerUp={e => e.stopPropagation()} onPointerDown={e => e.stopPropagation()}>
{ this.enterMinimize(); this.turnOffEdit(true); this.gotoDocument(this.itemIndex, this.activeItem); - }) + }), + 'minimze presentation' )}> Mini-player
{ this.layoutDoc.presentation_status = 'manual'; this.initializePresState(this.itemIndex); this.turnOffEdit(true); this.gotoDocument(this.itemIndex, this.activeItem); - }) + }), + 'make presentation manual' )}> Sidebar player
@@ -2773,13 +2752,13 @@ export class PresBox extends ViewBoxBaseComponent() {
{ + onClick={undoable(() => { if (this.childDocs.length) { this.layoutDoc.presentation_status = 'manual'; this.initializePresState(this.itemIndex); this.gotoDocument(this.itemIndex, this.activeItem); } - })}> + }, 'start presentation')}>
200 ? 'inline-flex' : 'none' }}>  Present
@@ -2911,11 +2890,12 @@ export class PresBox extends ViewBoxBaseComponent() { {this._props.PanelWidth() > 250 ? (
{ this.layoutDoc.presentation_status = PresStatus.Edit; clearTimeout(this._presTimer); - }) + }), + 'edit presetnation' )}> EXIT
@@ -2988,7 +2968,7 @@ export class PresBox extends ViewBoxBaseComponent() { }; sort = (treeViewMap: Map) => [...treeViewMap.entries()].sort((a: [Doc, number], b: [Doc, number]) => (a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0)).map(kv => kv[0]); - + emptyHierarchy = []; render() { // needed to ensure that the childDocs are loaded for looking up fields this.childDocs.slice(); @@ -3086,7 +3066,7 @@ export class PresBox extends ViewBoxBaseComponent() { ScreenToLocalTransform={this.getTransform} AddToMap={this.AddToMap} RemFromMap={this.RemFromMap} - hierarchyIndex={emptyPath} + hierarchyIndex={this.emptyHierarchy} /> ) : null}
diff --git a/src/client/views/nodes/trails/SlideEffect.tsx b/src/client/views/nodes/trails/SlideEffect.tsx index 00039e3cb..a114c231f 100644 --- a/src/client/views/nodes/trails/SlideEffect.tsx +++ b/src/client/views/nodes/trails/SlideEffect.tsx @@ -103,7 +103,7 @@ export default function SpringAnimation({ doc, dir, springSettings, presEffect, api.start({ loop: infinite, delay: infinite ? 500 : 0 }); } }, [inView]); - const animatedDiv = (style: any) => ( + const animatedDiv = (style: object) => ( `${val}`) }}> {children} diff --git a/src/fields/ObjectField.ts b/src/fields/ObjectField.ts index 5f31208eb..c533cb596 100644 --- a/src/fields/ObjectField.ts +++ b/src/fields/ObjectField.ts @@ -12,9 +12,8 @@ export interface serializedDoctype { export type serverOpType = { $set?: serializedFieldsType; // $unset?: { [key: string]: unknown }; - $remFromSet?: { [key: string]: { fields: serializedFieldType[] } | { deleteCount: number; start: number } | undefined; hint?: { deleteCount: number; start: number } }; - $addToSet?: serializedFieldsType; - length?: number; + $remFromSet?: { [key: string]: { fields: serializedFieldType[] } | { deleteCount: number; start: number } | number | undefined; length: number; hint: { deleteCount: number; start: number } | undefined }; + $addToSet?: { [key: string]: { fields: serializedFieldType[] } | number | undefined; length: number }; }; export abstract class ObjectField { // prettier-ignore diff --git a/src/fields/RichTextUtils.ts b/src/fields/RichTextUtils.ts index 3763dcd2c..d1316d256 100644 --- a/src/fields/RichTextUtils.ts +++ b/src/fields/RichTextUtils.ts @@ -1,9 +1,10 @@ +/* eslint-disable @typescript-eslint/no-namespace */ /* eslint-disable no-await-in-loop */ /* eslint-disable no-use-before-define */ import { AssertionError } from 'assert'; import * as Color from 'color'; import { docs_v1 as docsV1 } from 'googleapis'; -import { Fragment, Mark, Node } from 'prosemirror-model'; +import { Fragment, Mark, Node, Schema } from 'prosemirror-model'; import { sinkListItem } from 'prosemirror-schema-list'; import { EditorState, TextSelection, Transaction } from 'prosemirror-state'; import { ClientUtils, DashColor } from '../ClientUtils'; @@ -26,7 +27,7 @@ export namespace RichTextUtils { const joiner = ''; export const Initialize = (initial?: string) => { - const content: any[] = []; + const content: object[] = []; const state = { doc: { type: 'doc', @@ -80,8 +81,10 @@ export namespace RichTextUtils { // Preserve the current state, but re-write the content to be the blocks const parsed = JSON.parse(oldState ? oldState.Data : Initialize()); parsed.doc.content = elements.map(text => { - const paragraph: any = { type: 'paragraph' }; - text.length && (paragraph.content = [{ type: 'text', marks: [], text }]); // An empty paragraph gets treated as a line break + const paragraph: object = { + type: 'paragraph', + content: text.length ? [{ type: 'text', marks: [], text }] : undefined, // An empty paragraph gets treated as a line break + }; return paragraph; }); @@ -164,7 +167,7 @@ export namespace RichTextUtils { const inlineObjectMap = await parseInlineObjects(document); const title = document.title!; const { text, paragraphs } = GoogleApiClientUtils.Docs.Utils.extractText(document); - let state = EditorState.create(new FormattedTextBox({} as any).config); + let state = EditorState.create(FormattedTextBox.MakeConfig()); const structured = parseLists(paragraphs); let position = 3; @@ -253,17 +256,20 @@ export namespace RichTextUtils { return groups; }; - const listItem = (lschema: any, runs: docsV1.Schema$TextRun[]): Node => lschema.node('list_item', null, paragraphNode(lschema, runs)); + const listItem = (lschema: Schema, runs: docsV1.Schema$TextRun[]): Node => lschema.node('list_item', null, paragraphNode(lschema, runs)); - const list = (lschema: any, items: Node[]): Node => lschema.node('ordered_list', { mapStyle: 'bullet' }, items); + const list = (lschema: Schema, items: Node[]): Node => lschema.node('ordered_list', { mapStyle: 'bullet' }, items); - const paragraphNode = (lschema: any, runs: docsV1.Schema$TextRun[]): Node => { - const children = runs.map(run => textNode(lschema, run)).filter(child => child !== undefined); + const paragraphNode = (lschema: Schema, runs: docsV1.Schema$TextRun[]): Node => { + const children = runs + .map(run => textNode(lschema, run)) + .filter(child => child !== undefined) + .map(child => child!); const fragment = children.length ? Fragment.from(children) : undefined; return lschema.node('paragraph', null, fragment); }; - const imageNode = (lschema: any, image: ImageTemplate, textNote: Doc) => { + const imageNode = (lschema: Schema, image: ImageTemplate, textNote: Doc) => { const { url: src, width, agnostic } = image; let docId: string; const guid = Utils.GenerateDeterministicGuid(agnostic); @@ -279,7 +285,7 @@ export namespace RichTextUtils { return lschema.node('image', { src, agnostic, width, docId, float: null }); }; - const textNode = (lschema: any, run: docsV1.Schema$TextRun) => { + const textNode = (lschema: Schema, run: docsV1.Schema$TextRun) => { const text = run.content!.removeTrailingNewlines(); return text.length ? lschema.text(text, styleToMarks(lschema, run.textStyle)) : undefined; }; @@ -291,29 +297,33 @@ export namespace RichTextUtils { ['fontSize', 'pFontSize'], ]); - const styleToMarks = (lschema: any, textStyle?: docsV1.Schema$TextStyle) => { + const styleToMarks = (lschema: Schema, textStyle?: docsV1.Schema$TextStyle) => { if (!textStyle) { return undefined; } const marks: Mark[] = []; Object.keys(textStyle).forEach(key => { const targeted = key as keyof docsV1.Schema$TextStyle; - const value = textStyle[targeted] as any; + const value = textStyle[targeted]; if (value) { - const attributes: any = {}; + const attributes: { [key: string]: number | string } = {}; let converted = StyleToMark.get(targeted) || targeted; - value.url && (attributes.href = value.url); - if (value.color) { - const object = value.color.rgbColor; - attributes.color = Color.rgb(['red', 'green', 'blue'].map(color => object[color] * 255 || 0)).hex(); + const urlValue = value as docsV1.Schema$Link; + urlValue.url && (attributes.href = urlValue.url); + const colValue = value as docsV1.Schema$OptionalColor; + const object = colValue.color?.rgbColor; + if (object) { + attributes.color = Color.rgb(['red', 'green', 'blue'].map(color => (object as { [key: string]: number })[color] * 255 || 0)).hex(); } - if (value.magnitude) { - attributes.fontSize = value.magnitude; + const magValue = value as docsV1.Schema$Dimension; + if (magValue.magnitude) { + attributes.fontSize = magValue.magnitude; } + const fontValue = value as docsV1.Schema$WeightedFontFamily; if (converted === 'weightedFontFamily') { - converted = ImportFontFamilyMapping.get(value.fontFamily) || 'timesNewRoman'; + converted = (fontValue.fontFamily && ImportFontFamilyMapping.get(fontValue.fontFamily)) || 'timesNewRoman'; } const mapped = lschema.marks[converted]; @@ -388,7 +398,7 @@ export namespace RichTextUtils { continue; } let converted = MarkToStyle.get(markName) || (markName as keyof docsV1.Schema$TextStyle); - let value: any = true; + let value: unknown = true; if (!converted) { // eslint-disable-next-line no-continue continue; @@ -436,7 +446,7 @@ export namespace RichTextUtils { converted = 'fontSize'; value = { magnitude: parseInt(matches[1].replace('px', '')), unit: 'PT' }; } - textStyle[converted] = value; + textStyle[converted] = value as undefined; } if (Object.keys(textStyle).length) { requests.push(EncodeStyleUpdate(information)); diff --git a/src/fields/util.ts b/src/fields/util.ts index a5c56607c..60eadcdfd 100644 --- a/src/fields/util.ts +++ b/src/fields/util.ts @@ -398,9 +398,9 @@ export function containedFieldChangedHandler(container: ListImpl | Do const serializeItems = () => ({ __type: 'list', fields: diff?.items?.map((item: FieldType) => SerializationHelper.Serialize(item) as serializedFieldType) ?? [] }); // prettier-ignore const serverOp: serverOpType = diff?.op === '$addToSet' - ? { $addToSet: { ['fields.' + prop]: serializeItems() }, length: diff.length } + ? { $addToSet: { ['fields.' + prop]: serializeItems(), length: diff.length ??0 }} : diff?.op === '$remFromSet' - ? { $remFromSet: { ['fields.' + prop]: serializeItems(), hint: diff.hint}, length: diff.length } + ? { $remFromSet: { ['fields.' + prop]: serializeItems(), hint: diff.hint, length: diff.length ?? 0 } } : { $set: { ['fields.' + prop]: SerializationHelper.Serialize(liveContainedField) as {fields: serializedFieldType[]}} }; if (!(container instanceof Doc) || !container[UpdatingFromServer]) { diff --git a/src/server/database.ts b/src/server/database.ts index a93117349..975b9eb80 100644 --- a/src/server/database.ts +++ b/src/server/database.ts @@ -32,7 +32,7 @@ export namespace Database { try { const { connection } = mongoose; disconnect = async () => - new Promise(resolve => { + new Promise(resolve => { connection.close().then(resolve); }); if (connection.readyState === ConnectionStates.disconnected) { diff --git a/src/server/websocket.ts b/src/server/websocket.ts index f588151a5..ccbcb1c5f 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -49,12 +49,12 @@ export namespace WebSocket { DashStats.logUserLogin(userEmail); } - function GetRefFieldLocal([id, callback]: [string, (result?: serializedDoctype) => void]) { + function GetRefFieldLocal(id: string, callback: (result?: serializedDoctype | undefined) => void) { return Database.Instance.getDocument(id, callback); } function GetRefField([id, callback]: [string, (result?: serializedDoctype) => void]) { process.stdout.write(`+`); - GetRefFieldLocal([id, callback]); + GetRefFieldLocal(id, callback); } function GetRefFields([ids, callback]: [string[], (result?: serializedDoctype[]) => void]) { @@ -62,112 +62,46 @@ export namespace WebSocket { Database.Instance.getDocuments(ids, callback); } - const suffixMap: { [type: string]: string | [string, string | ((json: any) => any)] } = { - number: '_n', - string: '_t', - boolean: '_b', - image: ['_t', 'url'], - video: ['_t', 'url'], - pdf: ['_t', 'url'], - audio: ['_t', 'url'], - web: ['_t', 'url'], - map: ['_t', 'url'], - script: ['_t', value => value.script.originalScript], - RichTextField: ['_t', value => value.Text], - date: ['_d', value => new Date(value.date).toISOString()], - proxy: ['_i', 'fieldId'], - list: [ - '_l', - list => { - const results: any[] = []; - // eslint-disable-next-line no-use-before-define - list.fields.forEach((value: any) => ToSearchTerm(value) && results.push(ToSearchTerm(value)!.value)); - return results.length ? results : null; - }, - ], - }; - - function ToSearchTerm(valIn: any): { suffix: string; value: any } | undefined { - let val = valIn; - if (val === null || val === undefined) { - return undefined; - } - const type = val.__type || typeof val; - - let suffix = suffixMap[type]; - if (!suffix) { - return undefined; - } - if (Array.isArray(suffix)) { - const accessor = suffix[1]; - if (typeof accessor === 'function') { - val = accessor(val); - } else { - val = val[accessor]; - } - [suffix] = suffix; - } - return { suffix, value: val }; - } - - function getSuffix(value: string | [string, any]): string { - return typeof value === 'string' ? value : value[0]; - } const pendingOps = new Map(); - function dispatchNextOp(id: string) { - const next = pendingOps.get(id)!.shift(); + function dispatchNextOp(id: string): unknown { + const next = pendingOps.get(id)?.shift(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const nextOp = (res: boolean) => dispatchNextOp(id); if (next) { const { diff, socket } = next; - if (diff.diff.$addToSet) { - // eslint-disable-next-line no-use-before-define - return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => addToListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own + // ideally, we'd call the Database update method for all actions, but for now we handle list insertion/removal on our own + switch (diff.diff.$addToSet ? 'add' : diff.diff.$remFromSet ? 'rem' : 'set') { + case 'add': return GetRefFieldLocal(id, (result) => addToListField(socket, diff, result, nextOp)); // prettier-ignore + case 'rem': return GetRefFieldLocal(id, (result) => remFromListField(socket, diff, result, nextOp)); // prettier-ignore + default: return Database.Instance.update(id, diff.diff, + () => nextOp(socket.broadcast.emit(MessageStore.UpdateField.Message, diff)), + false + ); // prettier-ignore } - if (diff.diff.$remFromSet) { - // eslint-disable-next-line no-use-before-define - return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => remFromListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own - } - // eslint-disable-next-line no-use-before-define - return SetField(socket, diff); } - return !pendingOps.get(id)!.length && pendingOps.delete(id); + return !pendingOps.get(id)?.length && pendingOps.delete(id); } - function addToListField(socket: Socket, diffIn: Diff, listDoc?: serializedDoctype): void { - const diff = diffIn; - diff.diff.$set = diff.diff.$addToSet; - delete diff.diff.$addToSet; // convert add to set to a query of the current fields, and then a set of the composition of the new fields with the old ones - const updatefield = Array.from(Object.keys(diff.diff.$set ?? {}))[0]; - const newListItems = diff.diff.$set?.[updatefield]?.fields; - if (!newListItems) { - console.log('Error: addToListField - no new list items'); - return; - } - const listItems = listDoc?.fields?.[updatefield.replace('fields.', '')]?.fields.filter(item => item !== undefined) ?? []; - if (diff.diff.$set?.[updatefield]?.fields !== undefined) { + function addToListField(socket: Socket, diff: Diff, listDoc: serializedDoctype | undefined, cb: (res: boolean) => void): void { + const $addToSet = diff.diff.$addToSet as serializedFieldsType; + const updatefield = Array.from(Object.keys($addToSet ?? {}))[0]; + const newListItems = $addToSet?.[updatefield]?.fields; + + if (newListItems) { + const length = diff.diff.$addToSet?.length; + diff.diff.$set = $addToSet; // convert add to set to a query of the current fields, and then a set of the composition of the new fields with the old ones + delete diff.diff.$addToSet; // can't pass $set to Mongo, or it will do that insetead of $addToSet + const listItems = listDoc?.fields?.[updatefield.replace('fields.', '')]?.fields.filter(item => item) ?? []; diff.diff.$set[updatefield]!.fields = [...listItems, ...newListItems]; // , ...newListItems.filter((newItem: any) => newItem === null || !curList.some((curItem: any) => curItem.fieldId ? curItem.fieldId === newItem.fieldId : curItem.heading ? curItem.heading === newItem.heading : curItem === newItem))]; - const sendBack = diff.diff.length !== diff.diff.$set[updatefield]!.fields?.length; - delete diff.diff.length; - Database.Instance.update( - diff.id, - diff.diff, - () => { - if (sendBack) { - console.log('Warning: list modified during update. Composite list is being returned.'); - const { id } = socket; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (socket as any).id = ''; // bcz: HACK to reference private variable. this allows the update message to go back to the client that made the change. - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (socket as any).id = id; - } else { - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - } - dispatchNextOp(diff.id); - }, - false - ); - } + + // if the client's list length is not the same as what we're writing to the server, + // then we need to send the server's version back to the client so that they are in synch. + // this could happen if another client made a change before the server receives the update from the first client + const target = length !== diff.diff.$set[updatefield].fields.length ? socket : socket.broadcast; + target === socket && console.log('Warning: SEND BACK: list modified during add update. Composite list is being returned.'); + Database.Instance.update(diff.id, diff.diff, () => cb(target.emit(MessageStore.UpdateField.Message, diff)), false); + } else cb(false); } /** @@ -206,15 +140,17 @@ export namespace WebSocket { * items to delete) * @param curListItems the server's current copy of the data */ - function remFromListField(socket: Socket, diffIn: Diff, curListItems?: serializedDoctype): void { - const diff = diffIn; - diff.diff.$set = diff.diff.$remFromSet as serializedFieldsType; - const hint = diff.diff.$remFromSet?.hint; - delete diff.diff.$remFromSet; - const updatefield = Array.from(Object.keys(diff.diff.$set ?? {}))[0]; - const remListItems = diff.diff.$set[updatefield]?.fields; - if (diff.diff.$set[updatefield] !== undefined && remListItems) { - const curList = curListItems?.fields?.[updatefield.replace('fields.', '')]?.fields.filter(f => f !== null) || []; + function remFromListField(socket: Socket, diff: Diff, curListItems: serializedDoctype | undefined, cb: (res: boolean) => void): void { + const $remFromSet = diff.diff.$remFromSet as serializedFieldsType; + const updatefield = Array.from(Object.keys($remFromSet ?? {}))[0]; + const remListItems = $remFromSet?.[updatefield]?.fields; + + if (remListItems) { + const hint = diff.diff.$remFromSet?.hint; + const length = diff.diff.$remFromSet?.length; + diff.diff.$set = $remFromSet; // convert rem from set to a query of the current fields, and then a set of the old fields minus the removed ones + delete diff.diff.$remFromSet; // can't pass $set to Mongo, or it will do that insetead of $remFromSet + const curList = curListItems?.fields?.[updatefield.replace('fields.', '')]?.fields.filter(f => f) ?? []; if (hint) { // indexesToRemove stores the indexes that we mark for deletion, which is later used to filter the list (delete the elements) @@ -227,83 +163,51 @@ export namespace WebSocket { if (closestIndex !== -1) { indexesToRemove.push(closestIndex); } else { - console.log('Item to delete was not found - index = -1'); + console.log('Item to delete was not found'); } } } diff.diff.$set[updatefield]!.fields = curList.filter((curItem, index) => !indexesToRemove.includes(index)); } else { - // go back to the original way to delete if we didn't receive - // a hint from the client + // if we didn't get a hint, remove all matching items from the list diff.diff.$set[updatefield]!.fields = curList?.filter(curItem => !remListItems.some(remItem => (remItem.fieldId ? remItem.fieldId === curItem.fieldId : remItem.heading ? remItem.heading === curItem.heading : remItem === curItem))); } - // if the client and server have different versions of the data after - // deletion, they will have different lengths and the server will - // send its version of the data to the client - const sendBack = diff.diff.length !== diff.diff.$set[updatefield].fields.length; - delete diff.diff.length; - Database.Instance.update( - diff.id, - diff.diff, - () => { - if (sendBack) { - // the two copies are different, so the server sends its copy. - console.log('SEND BACK'); - const { id } = socket; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (socket as any).id = ''; // bcz: HACK to access private variable this allows the update message to go back to the client that made the change. - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (socket as any).id = id; - } else { - socket.broadcast.emit(MessageStore.UpdateField.Message, diff); - } - dispatchNextOp(diff.id); - }, - false - ); - } + + // if the client's list length is not the same as what we're writing to the server, + // then we need to send the server's version back to the client so that they are in synch. + // this could happen if another client made a change before the server receives the update from the first client + const target = length !== diff.diff.$set[updatefield].fields.length ? socket : socket.broadcast; + target === socket && console.log('Warning: SEND BACK: list modified during remove update. Composite list is being returned.'); + Database.Instance.update(diff.id, diff.diff, () => cb(target.emit(MessageStore.UpdateField.Message, diff)), false); + } else cb(false); } function UpdateField(socket: Socket, diff: Diff) { const curUser = socketMap.get(socket); - if (!curUser) return false; - const currentUsername = curUser.split(' ')[0]; - userOperations.set(currentUsername, userOperations.get(currentUsername) !== undefined ? userOperations.get(currentUsername)! + 1 : 0); + if (curUser) { + const currentUsername = curUser.split(' ')[0]; + userOperations.set(currentUsername, userOperations.get(currentUsername) !== undefined ? userOperations.get(currentUsername)! + 1 : 0); - if (CurUser !== socketMap.get(socket)) { - CurUser = socketMap.get(socket); - console.log('Switch User: ' + CurUser); - } - if (pendingOps.has(diff.id)) { - pendingOps.get(diff.id)!.push({ diff, socket }); - return true; - } - pendingOps.set(diff.id, [{ diff, socket }]); - if (diff.diff.$addToSet) { - return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => addToListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own - } - if (diff.diff.$remFromSet) { - return GetRefFieldLocal([diff.id, (result?: serializedDoctype) => remFromListField(socket, diff, result)]); // would prefer to have Mongo handle list additions direclty, but for now handle it on our own + if (CurUser !== socketMap.get(socket)) { + CurUser = socketMap.get(socket); + console.log('Switch User: ' + CurUser); + } + if (pendingOps.has(diff.id)) { + pendingOps.get(diff.id)!.push({ diff, socket }); + return true; + } + pendingOps.set(diff.id, [{ diff, socket }]); + return dispatchNextOp(diff.id); } - // eslint-disable-next-line no-use-before-define - return SetField(socket, diff); - } - function SetField(socket: Socket, diff: Diff /* , curListItems?: Transferable */) { - Database.Instance.update(diff.id, diff.diff, () => socket.broadcast.emit(MessageStore.UpdateField.Message, diff), false); - dispatchNextOp(diff.id); + return false; } function DeleteField(socket: Socket, id: string) { - Database.Instance.delete({ _id: id }).then(() => { - socket.broadcast.emit(MessageStore.DeleteField.Message, id); - }); + Database.Instance.delete({ _id: id }).then(() => socket.broadcast.emit(MessageStore.DeleteField.Message, id)); } function DeleteFields(socket: Socket, ids: string[]) { - Database.Instance.delete({ _id: { $in: ids } }).then(() => { - socket.broadcast.emit(MessageStore.DeleteFields.Message, ids); - }); + Database.Instance.delete({ _id: { $in: ids } }).then(() => socket.broadcast.emit(MessageStore.DeleteFields.Message, ids)); } function CreateDocField(newValue: serializedDoctype) { @@ -343,21 +247,19 @@ export namespace WebSocket { socket.in(room).emit('message', message); }); - socket.on('ipaddr', () => { + socket.on('ipaddr', () => networkInterfaces().keys?.forEach(dev => { if (dev.family === 'IPv4' && dev.address !== '127.0.0.1') { socket.emit('ipaddr', dev.address); } - }); - }); + }) + ); - socket.on('bye', () => { - console.log('received bye'); - }); + socket.on('bye', () => console.log('received bye')); socket.on('disconnect', () => { const currentUser = socketMap.get(socket); - if (!(currentUser === undefined)) { + if (currentUser !== undefined) { const currentUsername = currentUser.split(' ')[0]; DashStats.logUserLogout(currentUsername); delete timeMap[currentUsername]; -- cgit v1.2.3-70-g09d2 From 0e975569e5686138e52bdc554b3f0391f42aeead Mon Sep 17 00:00:00 2001 From: IEatChili Date: Thu, 15 Aug 2024 14:13:02 -0400 Subject: feat: added face recogntion box --- src/client/apis/gpt/GPT.ts | 2 +- src/client/documents/DocumentTypes.ts | 1 + src/client/documents/Documents.ts | 4 + src/client/util/CurrentUserUtils.ts | 13 +- src/client/views/KeywordBox.tsx | 7 +- src/client/views/Main.tsx | 2 + .../collectionFreeForm/FaceCollectionBox.scss | 74 +++++++ .../collectionFreeForm/FaceCollectionBox.tsx | 217 +++++++++++++++++++++ .../collectionFreeForm/ImageLabelBox.tsx | 5 +- src/client/views/search/FaceRecognitionHandler.tsx | 74 +++++-- src/fields/Doc.ts | 1 + 11 files changed, 375 insertions(+), 25 deletions(-) create mode 100644 src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss create mode 100644 src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx (limited to 'src') diff --git a/src/client/apis/gpt/GPT.ts b/src/client/apis/gpt/GPT.ts index 05007960d..8dd3fd6e2 100644 --- a/src/client/apis/gpt/GPT.ts +++ b/src/client/apis/gpt/GPT.ts @@ -128,7 +128,7 @@ const gptImageLabel = async (src: string): Promise => { { role: 'user', content: [ - { type: 'text', text: 'Give three to five labels to describe this image.' }, + { type: 'text', text: 'Give three labels to describe this image.' }, { type: 'image_url', image_url: { diff --git a/src/client/documents/DocumentTypes.ts b/src/client/documents/DocumentTypes.ts index a9ea889b3..b66a29ac2 100644 --- a/src/client/documents/DocumentTypes.ts +++ b/src/client/documents/DocumentTypes.ts @@ -17,6 +17,7 @@ export enum DocumentType { FONTICON = 'fonticonbox', SEARCH = 'search', // search query IMAGEGROUPER = 'imagegrouper', + FACECOLLECTION = 'facecollection', LABEL = 'label', // simple text label BUTTON = 'button', // onClick button WEBCAM = 'webcam', // webcam diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 3737aa0b5..ecea74fab 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -795,6 +795,10 @@ export namespace Docs { return InstanceFromProto(Prototypes.get(DocumentType.IMAGEGROUPER), undefined, options); } + export function FaceCollectionDocument(options: DocumentOptions = {}) { + return InstanceFromProto(Prototypes.get(DocumentType.FACECOLLECTION), undefined, options); + } + export function LoadingDocument(file: File | string, options: DocumentOptions) { return InstanceFromProto(Prototypes.get(DocumentType.LOADING), undefined, { _height: 150, _width: 200, title: typeof file === 'string' ? file : file.name, ...options }, undefined, ''); } diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index cb3d9df62..db0de83b9 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -458,7 +458,8 @@ pie title Minerals in my tap water { title: "Shared", toolTip: "Shared Docs", target: Doc.MySharedDocs, ignoreClick: true, icon: "users", funcs: {badgeValue: badgeValue}}, { title: "Trails", toolTip: "Trails ⌘R", target: Doc.UserDoc(), ignoreClick: true, icon: "pres-trail", funcs: {target: getActiveDashTrails}}, { title: "User Doc", toolTip: "User Doc", target: this.setupUserDocView(doc, "myUserDocView"), ignoreClick: true, icon: "address-card",funcs: {hidden: "IsNoviceMode()"} }, - { title: "Image Grouper", toolTip: "Image Grouper", target: this.setupImageGrouper(doc, "myImageGrouper"), ignoreClick: true, icon: "folder-open", hidden: false } + { title: "Image Grouper", toolTip: "Image Grouper", target: this.setupImageGrouper(doc, "myImageGrouper"), ignoreClick: true, icon: "folder-open", hidden: false }, + { title: "Face Collection", toolTip: "Face Collection", target: this.setupFaceCollection(doc, "myFaceCollection"), ignoreClick: true, icon: "face-smile", hidden: false }, ].map(tuple => ({...tuple, scripts:{onClick: 'selectMainMenu(this)'}})); } @@ -500,6 +501,12 @@ pie title Minerals in my tap water _lockedPosition: true, _type_collection: CollectionViewType.Schema }); } + static setupFaceCollection(doc: Doc, field: string) { + return DocUtils.AssignDocField(doc, field, (opts) => Docs.Create.FaceCollectionDocument(opts), { + dontRegisterView: true, backgroundColor: "dimgray", ignoreClick: true, title: "Face Collection", isSystem: true, childDragAction: dropActionType.embed, + _lockedPosition: true, _type_collection: CollectionViewType.Schema }); + } + /// Initializes the panel of draggable tools that is opened from the left sidebar. static setupToolsBtnPanel(doc: Doc, field:string) { const allTools = DocListCast(DocCast(doc[field])?.data); @@ -702,8 +709,8 @@ pie title Minerals in my tap water { title: "Fit All", icon: "object-group", toolTip: "Fit Docs to View (double click to make sticky)",btnType: ButtonType.ToggleButton, ignoreClick:true, expertMode: false, toolType:"viewAll", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}', onDoubleClick: '{ return showFreeform(this.toolType, _readOnly_, true);}'}}, // Only when floating document is selected in freeform { title: "Clusters", icon: "braille", toolTip: "Show Doc Clusters", btnType: ButtonType.ToggleButton, ignoreClick: true, expertMode: false, toolType:"clusters", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // Only when floating document is selected in freeform { title: "Cards", icon: "brain", toolTip: "Flashcards", btnType: ButtonType.ToggleButton, ignoreClick: true, expertMode: false, toolType:"flashcards", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // Only when floating document is selected in freeform - { title: "Arrange", icon:"arrow-down-short-wide",toolTip:"Toggle Auto Arrange", btnType: ButtonType.ToggleButton, ignoreClick: true, expertMode: false, toolType:"arrange", funcs: {hidden: 'IsNoviceMode()'}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // Only when floating document is selected in freeform - + { title: "Arrange", icon:"arrow-down-short-wide",toolTip:"Auto Arrange", btnType: ButtonType.ToggleButton, ignoreClick: true, expertMode: false, toolType:"arrange", funcs: {hidden: 'IsNoviceMode()'}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // Only when floating document is selected in freeform + ] } static textTools():Button[] { diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index 68584a7fa..fc9c38a11 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -7,7 +7,7 @@ import { Doc, DocListCast } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; import { NumCast, StrCast } from '../../fields/Types'; -import { emptyFunction } from '../../Utils'; +import { emptyFunction, Utils } from '../../Utils'; import { DocumentType } from '../documents/DocumentTypes'; import { DragManager } from '../util/DragManager'; import { SnappingManager } from '../util/SnappingManager'; @@ -124,7 +124,7 @@ export class KeywordItem extends ObservableReactComponent { render() { return ( -
+
{this._props.keyword} {this.props.isEditing && }
@@ -297,7 +297,7 @@ export class KeywordBox extends ObservableReactComponent {
{(keywordsList as List).map(keyword => { - return ; + return ; })}
{this._props.isEditing ? ( @@ -331,6 +331,7 @@ export class KeywordBox extends ObservableReactComponent { onClick={() => { this.submitLabel(keyword); }} + key={Utils.GenerateGuid()} /> ); })} diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index ada934aea..85c2b3d47 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -62,6 +62,7 @@ import { PresBox, PresElementBox } from './nodes/trails'; import { SearchBox } from './search/SearchBox'; import { ImageLabelBox } from './collections/collectionFreeForm/ImageLabelBox'; import { FaceRecognitionHandler } from './search/FaceRecognitionHandler'; +import { FaceCollectionBox } from './collections/collectionFreeForm/FaceCollectionBox'; dotenv.config(); @@ -135,6 +136,7 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; PresElementBox, SearchBox, ImageLabelBox, //Here! + FaceCollectionBox, FunctionPlotBox, InkingStroke, LinkBox, diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss new file mode 100644 index 000000000..480d109c8 --- /dev/null +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss @@ -0,0 +1,74 @@ +.face-document-item { + background: #555555; + margin-top: 10px; + margin-bottom: 10px; + padding: 10px; + border-radius: 10px; + position: relative; + + h1 { + color: white; + font-size: 24px; + text-align: center; + } + + .face-collection-buttons { + position: absolute; + top: 10px; + right: 10px; + } + + .face-document-image-container { + display: flex; + justify-content: center; + flex-wrap: wrap; + + .image-wrapper { + position: relative; + width: 70px; + height: 70px; + margin: 10px; + display: flex; + align-items: center; // Center vertically + justify-content: center; // Center horizontally + + img { + width: 100%; + height: 100%; + object-fit: cover; // This ensures the image covers the container without stretching + border-radius: 5px; + border: 2px solid white; + transition: border-color 0.4s; + + &:hover { + border-color: orange; // Change this to your desired hover border color + } + } + + .remove-item { + position: absolute; + bottom: -5; + right: -5; + background-color: rgba(0, 0, 0, 0.5); // Optional: to add a background behind the icon for better visibility + border-radius: 30%; + width: 10px; // Adjust size as needed + height: 10px; // Adjust size as needed + display: flex; + align-items: center; + justify-content: center; + } + } + + // img { + // max-width: 60px; + // margin: 10px; + // border-radius: 5px; + // border: 2px solid white; + // transition: 0.4s; + + // &:hover { + // border-color: orange; + // } + // } + } +} diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx new file mode 100644 index 000000000..1d3f88df1 --- /dev/null +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -0,0 +1,217 @@ +import { observer } from 'mobx-react'; +import React from 'react'; +import { Docs } from '../../../documents/Documents'; +import { DocumentType } from '../../../documents/DocumentTypes'; +import { ViewBoxBaseComponent } from '../../DocComponent'; +import { FieldView, FieldViewProps } from '../../nodes/FieldView'; +import 'ldrs/ring'; +import { SnappingManager } from '../../../util/SnappingManager'; +import { action, computed, makeObservable, observable, reaction } from 'mobx'; +import { Doc, DocListCast, NumListCast } from '../../../../fields/Doc'; +import { DocData } from '../../../../fields/DocSymbols'; +import { ImageCast, StrCast } from '../../../../fields/Types'; +import { ObservableReactComponent } from '../../ObservableReactComponent'; +import './FaceCollectionBox.scss'; +import { IconButton, Size } from 'browndash-components'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; +import { List } from '../../../../fields/List'; +import { DocumentView } from '../../nodes/DocumentView'; +import { Utils } from '../../../../Utils'; +import { DragManager } from '../../../util/DragManager'; +import * as faceapi from 'face-api.js'; +import { FaceMatcher } from 'face-api.js'; + +interface FaceDocumentProps { + faceDoc: Doc; +} + +/** + * A componenent to visually represent a Face Document. + */ +@observer +export class FaceDocumentItem extends ObservableReactComponent { + private ref: React.RefObject; + @observable _displayImages: boolean = true; + private _dropDisposer?: DragManager.DragDropDisposer; + private _inputRef = React.createRef(); + + constructor(props: any) { + super(props); + makeObservable(this); + this.ref = React.createRef(); + } + + protected createDropTarget = (ele: HTMLDivElement) => { + this._dropDisposer?.(); + ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this._props.faceDoc)); + }; + + protected onInternalDrop(e: Event, de: DragManager.DropEvent): boolean { + const { docDragData } = de.complete; + if (docDragData) { + const filteredDocs = docDragData.droppedDocuments.filter(doc => doc.type === DocumentType.IMG); + filteredDocs.forEach(doc => { + // If the current Face Document has no items, and the doc has more than one face descriptor, don't let the user add the document first. + if ((this._props.faceDoc[DocData].faceDescriptors as List>).length === 0 && (doc[DocData].faces as List>).length > 1) { + alert('Cannot add a document with multiple faces as the first item!'); + } else { + // Loop through the documents' face descriptors. + // Choose the face with the smallest distance to add. + const float32Array = (this._props.faceDoc[DocData].faceDescriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); + const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(StrCast(this._props.faceDoc[DocData].label), float32Array); + const faceDescriptors: faceapi.LabeledFaceDescriptors[] = [labeledFaceDescriptor]; + + const faceMatcher = new FaceMatcher(faceDescriptors, 1); + let cur_lowest_distance = 1; + let cur_matching_face = new List(); + + (doc[DocData].faces as List>).forEach(face => { + // If the face has the current lowest distance, mark it as such + // Once that lowest distance is found, add the face descriptor to the faceDoc, and add the associated doc + const convered_32_array: Float32Array = new Float32Array(Array.from(face)); + const match = faceMatcher.matchDescriptor(convered_32_array); + + if (match.distance < cur_lowest_distance) { + cur_lowest_distance = match.distance; + cur_matching_face = face; + } + }); + + if (doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`]) { + doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] = new List>([...(doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] as List>), cur_matching_face]); + } else { + doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] = new List>([cur_matching_face]); + } + + this._props.faceDoc[DocData].associatedDocs = new List([...DocListCast(this._props.faceDoc[DocData].associatedDocs), doc]); + this._props.faceDoc[DocData].faceDescriptors = new List>([...(this._props.faceDoc[DocData].faceDescriptors as List>), cur_matching_face]); + + //const match = faceMatcher.findBestMatch(cur_descriptor); + } + }); + return false; + } + return false; + } + + /** + * Toggles whether a Face Document displays its associated docs. + */ + @action + onDisplayClick() { + this._displayImages = !this._displayImages; + } + + /** + * Deletes a Face Document. + */ + @action + deleteFaceDocument = () => { + if (Doc.ActiveDashboard) { + Doc.ActiveDashboard[DocData].faceDocuments = new List(DocListCast(Doc.ActiveDashboard[DocData].faceDocuments).filter(doc => doc !== this._props.faceDoc)); + } + }; + + /** + * Deletes a document from a Face Document's associated docs list. + * @param doc + */ + @action + deleteAssociatedDoc = (doc: Doc) => { + this._props.faceDoc[DocData].faceDescriptors = new List>( + (this._props.faceDoc[DocData].faceDescriptors as List>).filter(fd => !(doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] as List>).includes(fd)) + ); + doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] = new List>(); + this._props.faceDoc[DocData].associatedDocs = new List(DocListCast(this._props.faceDoc[DocData].associatedDocs).filter(associatedDoc => associatedDoc !== doc)); + }; + + render() { + return ( +
this.createDropTarget(ele!)}> +
+ +
+
+

{StrCast(this._props.faceDoc[DocData].label)}

+
+ this.onDisplayClick()} + icon={this._displayImages ? : } + color={MarqueeOptionsMenu.Instance.userColor} + style={{ width: '19px' }} + /> + {this._displayImages ? ( +
+ {DocListCast(this._props.faceDoc[DocData].associatedDocs).map(doc => { + const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); + return ( +
+ { + await DocumentView.showDocument(doc, { willZoomCentered: true }); + }} + style={{ maxWidth: '60px', margin: '10px' }} + src={`${name}_o.${type}`} + /> +
+ { + this.deleteAssociatedDoc(doc); + }} + icon={'x'} + style={{ width: '4px' }} + size={Size.XSMALL} + /> +
+
+ ); + })} +
+ ) : ( +
+ )} +
+ ); + } +} + +@observer +export class FaceCollectionBox extends ViewBoxBaseComponent() { + public static LayoutString(fieldKey: string) { + return FieldView.LayoutString(FaceCollectionBox, fieldKey); + } + + public static Instance: FaceCollectionBox; + + @computed get currentDocs() { + if (Doc.ActiveDashboard) { + return DocListCast(Doc.ActiveDashboard[DocData].faceDocuments); + } else { + return []; + } + } + + constructor(props: any) { + super(props); + makeObservable(this); + FaceCollectionBox.Instance = this; + } + + render() { + return ( +
+ {this.currentDocs.map(doc => { + return ; + })} +
+ ); + } +} + +Docs.Prototypes.TemplateMap.set(DocumentType.FACECOLLECTION, { + layout: { view: FaceCollectionBox, dataField: 'data' }, + options: { acl: '', _width: 400 }, +}); diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index af01d6cbc..421b5d0a6 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -179,6 +179,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { const labels = imageInfo.labels.split('\n'); labels.forEach(label => { label = label.replace(/^\d+\.\s*|-|\*/, '').trim(); + console.log(label); imageInfo.doc[DocData][`${label}`] = true; (imageInfo.doc[DocData].data_labels as List).push(label); }); @@ -198,7 +199,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { for (let index = 0; index < (doc[DocData].data_labels as List).length; index++) { const label = (doc[DocData].data_labels as List)[index]; const embedding = await gptGetEmbedding(label); - doc[`data_labels_embedding_${index + 1}`] = new List(embedding); + doc[DocData][`data_labels_embedding_${index + 1}`] = new List(embedding); } } @@ -209,7 +210,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { // For each image, loop through the labels, and calculate similarity. Associate it with the // most similar one. this._selectedImages.forEach(doc => { - const embedLists = numberRange((doc[DocData].data_labels as List).length).map(n => Array.from(NumListCast(doc[`data_labels_embedding_${n + 1}`]))); + const embedLists = numberRange((doc[DocData].data_labels as List).length).map(n => Array.from(NumListCast(doc[DocData][`data_labels_embedding_${n + 1}`]))); const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && similarity(Array.from(embedding), l)!) || 0)); const {label: mostSimilarLabelCollect} = this._labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index fcd38c42f..ef4622ea2 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -1,14 +1,13 @@ import * as faceapi from 'face-api.js'; -import { FaceMatcher, TinyFaceDetectorOptions } from 'face-api.js'; -import { Doc, DocListCast, NumListCast } from '../../../fields/Doc'; +import { FaceMatcher } from 'face-api.js'; +import { Doc, DocListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { List } from '../../../fields/List'; -import { ObjectField } from '../../../fields/ObjectField'; -import { ImageCast, StrCast } from '../../../fields/Types'; -import { DocUtils } from '../../documents/DocUtils'; -import { Deserializable } from '../../util/SerializationHelper'; -import { DocumentView } from '../nodes/DocumentView'; +import { ImageCast, NumCast, StrCast } from '../../../fields/Types'; +/** + * A class that handles face recognition. + */ export class FaceRecognitionHandler { static _instance: FaceRecognitionHandler; private loadedModels: boolean = false; @@ -18,8 +17,12 @@ export class FaceRecognitionHandler { constructor() { FaceRecognitionHandler._instance = this; this.loadModels(); + this.examinedDocs = new Set(DocListCast(Doc.UserDoc()[DocData].examinedFaceDocs, [])); } + /** + * Loads the face detection models. + */ async loadModels() { const MODEL_URL = `/models`; await faceapi.loadFaceDetectionModel(MODEL_URL); @@ -32,19 +35,31 @@ export class FaceRecognitionHandler { return FaceRecognitionHandler._instance ?? new FaceRecognitionHandler(); } + /** + * When a document is added, look for matching face documents. + * @param doc The document being analyzed. + */ public async findMatches(doc: Doc) { if (this.loadedModels) { + // If the Dashboard doesn't have a list of face documents yet, initialize the list. if (!Doc.ActiveDashboard![DocData].faceDocuments) { Doc.ActiveDashboard![DocData].faceDocuments = new List(); } + // If the doc is currently already been examined, or it is being processed, stop examining the document. if (this.examinedDocs.has(doc) || this.processingDocs.has(doc)) { return; } + // Mark the document as being processed. this.processingDocs.add(doc); try { + if (!Doc.UserDoc()[DocData].faceDocNum) { + Doc.UserDoc()[DocData].faceDocNum = 0; + } + + // Get the image the document contains and analyze for faces. const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); const imageURL = `${name}_o.${type}`; @@ -52,30 +67,51 @@ export class FaceRecognitionHandler { const fullFaceDescriptions = await faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors(); + doc[DocData].faces = new List>(); + + // For each face detected, find a match. for (const fd of fullFaceDescriptions) { - const match = this.findMatch(fd.descriptor); + let match = this.findMatch(fd.descriptor); + let converted_list = new List(); + if (match) { + // If a matching Face Document has been found, add the document to the Face Document's associated docs and append the face + // descriptor to the Face Document's descriptor list. const converted_array = Array.from(fd.descriptor); - const converted_list = new List(converted_array); + converted_list = new List(converted_array); match[DocData].associatedDocs = new List([...DocListCast(match[DocData].associatedDocs), doc]); match[DocData].faceDescriptors = new List>([...(match[DocData].faceDescriptors as List>), converted_list]); } else { + // If a matching Face Document has not been found, create a new Face Document. const newFaceDocument = new Doc(); const converted_array = Array.from(fd.descriptor); - const converted_list = new List(converted_array); + converted_list = new List(converted_array); newFaceDocument[DocData].faceDescriptors = new List>(); (newFaceDocument[DocData].faceDescriptors as List>).push(converted_list); - newFaceDocument[DocData].label = `Person ${DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).length + 1}`; + Doc.UserDoc()[DocData].faceDocNum = NumCast(Doc.UserDoc()[DocData].faceDocNum) + 1; + newFaceDocument[DocData].label = `Face ${Doc.UserDoc()[DocData].faceDocNum}`; newFaceDocument[DocData].associatedDocs = new List([doc]); Doc.ActiveDashboard![DocData].faceDocuments = new List([...DocListCast(Doc.ActiveDashboard![DocData].faceDocuments), newFaceDocument]); + match = newFaceDocument; } + + // Assign a field in the document of the matching Face Document. + if (doc[DocData][`FACE DESCRIPTOR - ${match[DocData].label}`]) { + doc[DocData][`FACE DESCRIPTOR - ${match[DocData].label}`] = new List>([...(doc[DocData][`FACE DESCRIPTOR - ${match[DocData].label}`] as List>), converted_list]); + } else { + doc[DocData][`FACE DESCRIPTOR - ${match[DocData].label}`] = new List>([converted_list]); + } + + doc[DocData].faces = new List>([...(doc[DocData].faces as List>), converted_list]); } + // Updates the examined docs field. this.examinedDocs.add(doc); - console.log(this.examinedDocs); - - DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).forEach(doc => console.log(DocListCast(doc[DocData].associatedDocs))); + if (!Doc.UserDoc()[DocData].examinedFaceDocs) { + Doc.UserDoc()[DocData].examinedFaceDocs = new List(); + } + Doc.UserDoc()[DocData].examinedFaceDocs = new List([...DocListCast(Doc.UserDoc()[DocData].examinedFaceDocs), doc]); } catch (error) { console.error('Error processing document:', error); } finally { @@ -84,6 +120,11 @@ export class FaceRecognitionHandler { } } + /** + * Finds a matching Face Document given a descriptor + * @param cur_descriptor The current descriptor whose match is being searched for. + * @returns The most similar Face Document. + */ private findMatch(cur_descriptor: Float32Array) { if (DocListCast(Doc.ActiveDashboard![DocData].faceDocuments).length < 1) { return null; @@ -95,19 +136,20 @@ export class FaceRecognitionHandler { }); const faceMatcher = new FaceMatcher(faceDescriptors, 0.6); const match = faceMatcher.findBestMatch(cur_descriptor); - if (match.label == 'unknown') { return null; } else { for (const doc of DocListCast(Doc.ActiveDashboard![DocData].faceDocuments)) { if (doc[DocData].label === match.label) { - console.log(match.label); return doc; } } } } + /** + * Loads an image + */ private loadImage = (src: string): Promise => { return new Promise((resolve, reject) => { const img = new Image(); diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index 4abb23404..ebd30ceba 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -265,6 +265,7 @@ export class Doc extends RefField { public static get MyDockedBtns() { return DocCast(Doc.UserDoc().myDockedBtns); } // prettier-ignore public static get MySearcher() { return DocCast(Doc.UserDoc().mySearcher); } // prettier-ignore public static get MyImageGrouper() { return DocCast(Doc.UserDoc().myImageGrouper); } //prettier-ignore + public static get MyFaceCollection() { return DocCast(Doc.UserDoc().myFaceCollection); } //prettier-ignore public static get MyHeaderBar() { return DocCast(Doc.UserDoc().myHeaderBar); } // prettier-ignore public static get MyLeftSidebarMenu() { return DocCast(Doc.UserDoc().myLeftSidebarMenu); } // prettier-ignore public static get MyLeftSidebarPanel() { return DocCast(Doc.UserDoc().myLeftSidebarPanel); } // prettier-ignore -- cgit v1.2.3-70-g09d2 From fed4bf0b7363b9d58828a7a51f037a26f287d874 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 15 Aug 2024 15:45:44 -0400 Subject: fixed emptyPath type --- src/ServerUtils.ts | 2 +- src/client/views/nodes/DocumentContentsView.tsx | 2 +- src/client/views/nodes/trails/PresBox.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/ServerUtils.ts b/src/ServerUtils.ts index 904541fc7..8b2d0b9f6 100644 --- a/src/ServerUtils.ts +++ b/src/ServerUtils.ts @@ -16,7 +16,7 @@ export namespace ServerUtils { export function AddServerHandlerCallback(socket: Socket, message: Message, handler: (args: [T, (res: unknown) => void]) => void) { socket.on(message.Message, (arg: T, fn: (res: unknown) => void) => { Utils.log('S receiving', message.Name, arg, true); - handler([arg, Utils.loggingCallback('S sending', fn, message.Name)]); + handler([arg, Utils.loggingCallback('Sending', fn, message.Name)]); }); } export type RoomHandler = (socket: Socket, room: string) => void; diff --git a/src/client/views/nodes/DocumentContentsView.tsx b/src/client/views/nodes/DocumentContentsView.tsx index 15baebae1..afc160297 100644 --- a/src/client/views/nodes/DocumentContentsView.tsx +++ b/src/client/views/nodes/DocumentContentsView.tsx @@ -4,7 +4,7 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import * as XRegExp from 'xregexp'; import { OmitKeys } from '../../../ClientUtils'; -import { Without, emptyPath } from '../../../Utils'; +import { Without } from '../../../Utils'; import { Doc, Opt } from '../../../fields/Doc'; import { AclPrivate, DocData } from '../../../fields/DocSymbols'; import { ScriptField } from '../../../fields/ScriptField'; diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx index c403f9415..cf32a0196 100644 --- a/src/client/views/nodes/trails/PresBox.tsx +++ b/src/client/views/nodes/trails/PresBox.tsx @@ -20,7 +20,7 @@ import { ObjectField } from '../../../../fields/ObjectField'; import { listSpec } from '../../../../fields/Schema'; import { ComputedField, ScriptField } from '../../../../fields/ScriptField'; import { BoolCast, Cast, DocCast, NumCast, StrCast, toList } from '../../../../fields/Types'; -import { emptyFunction, emptyPath, stringHash } from '../../../../Utils'; +import { emptyFunction, stringHash } from '../../../../Utils'; import { getSlideTransitionSuggestions, gptSlideProperties, gptTrailSlideCustomization } from '../../../apis/gpt/PresCustomization'; import { DocServer } from '../../../DocServer'; import { Docs } from '../../../documents/Documents'; -- cgit v1.2.3-70-g09d2 From 196bfbcacd554e0d5e1d437588c5719606d21025 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 15 Aug 2024 18:44:55 -0400 Subject: fixed lightbox typing into a one-line text box that is auto-titling --- package-lock.json | 451 +++++++++++++++++--------------------- src/client/views/LightboxView.tsx | 2 +- 2 files changed, 198 insertions(+), 255 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 328110401..c2a4aa964 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2620,9 +2620,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", - "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3766,18 +3766,18 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.6.tgz", - "integrity": "sha512-kytg6LheUG42V8H/o/Ptz3olSO5kUXW9zF0ox18VnblX6bO2yif1FPItgc3ey1t5ansb1+gbe7SatntqusQupg==", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", + "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.6.tgz", - "integrity": "sha512-ceNGjoXheH9wbIFa1JHmSc9QVjJUvh18KvHrR4/FkJCSi9HXJ+9ee1kUhCOEFfuxNF8UB6WWVrIUOUgRd70t0A==", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.7.tgz", + "integrity": "sha512-UrGwDJCXEszbDI7yV047BYU5A28eGJ79keTCP4cc74WyncuVrnurlmIRxaHL8YK+LI1Kzq+/JM52IAkNnv4u+Q==", "dependencies": { "@babel/runtime": "^7.23.9" }, @@ -3800,13 +3800,13 @@ } }, "node_modules/@mui/material": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.6.tgz", - "integrity": "sha512-0LUIKBOIjiFfzzFNxXZBRAyr9UQfmTAFzbt6ziOU2FDXhorNN2o3N9/32mNJbCA8zJo2FqFU6d3dtoqUDyIEfA==", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", + "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.16.6", - "@mui/system": "^5.16.6", + "@mui/core-downloads-tracker": "^5.16.7", + "@mui/system": "^5.16.7", "@mui/types": "^7.2.15", "@mui/utils": "^5.16.6", "@popperjs/core": "^2.11.8", @@ -3901,9 +3901,9 @@ } }, "node_modules/@mui/system": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.6.tgz", - "integrity": "sha512-5xgyJjBIMPw8HIaZpfbGAaFYPwImQn7Nyh+wwKWhvkoIeDosQ1ZMVrbTclefi7G8hNmqhip04duYwYpbBFnBgw==", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", + "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", "dependencies": { "@babel/runtime": "^7.23.9", "@mui/private-theming": "^5.16.6", @@ -9473,9 +9473,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.14.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz", - "integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==", + "version": "20.14.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz", + "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==", "dependencies": { "undici-types": "~5.26.4" } @@ -9685,9 +9685,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "dependencies": { "@types/react": "*" } @@ -9859,9 +9859,9 @@ "dev": true }, "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" }, "node_modules/@types/uuid": { "version": "10.0.0", @@ -10148,36 +10148,36 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@vue/compiler-core": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.37.tgz", - "integrity": "sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", + "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.37", - "entities": "^5.0.0", + "@vue/shared": "3.4.38", + "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.37.tgz", - "integrity": "sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", + "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", "dependencies": { - "@vue/compiler-core": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-core": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.37.tgz", - "integrity": "sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", + "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.37", - "@vue/compiler-dom": "3.4.37", - "@vue/compiler-ssr": "3.4.37", - "@vue/shared": "3.4.37", + "@vue/compiler-core": "3.4.38", + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", "postcss": "^8.4.40", @@ -10185,18 +10185,18 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.37.tgz", - "integrity": "sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", + "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", "dependencies": { - "@vue/compiler-dom": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-dom": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/shared": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.37.tgz", - "integrity": "sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==" + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -11091,9 +11091,9 @@ } }, "node_modules/axios": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz", - "integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -17145,17 +17145,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", @@ -17271,9 +17260,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz", - "integrity": "sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==" + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.8.tgz", + "integrity": "sha512-4Nx0gP2tPNBLTrFxBMHpkQbtn2hidPVr/+/FTtcCiBYTucqc70zRyVZiOLj17Ui3wTO7SQ1/N+hkHYzJjBzt6A==" }, "node_modules/elkjs": { "version": "0.9.3", @@ -17394,9 +17383,9 @@ } }, "node_modules/entities": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-5.0.0.tgz", - "integrity": "sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "engines": { "node": ">=0.12" }, @@ -19509,9 +19498,9 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/express-validator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.1.0.tgz", - "integrity": "sha512-ePn6NXjHRZiZkwTiU1Rl2hy6aUqmi6Cb4/s8sfUsKH7j2yYl9azSpl8xEHcOj1grzzQ+UBEoLWtE1s6FDxW++g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.0.tgz", + "integrity": "sha512-I2ByKD8panjtr8Y05l21Wph9xk7kk64UMyvJCl/fFM/3CTJq8isXYPLeKW/aZBCdb/LYNv63PwhY8khw8VWocA==", "dependencies": { "lodash": "^4.17.21", "validator": "~13.12.0" @@ -20330,14 +20319,6 @@ "node": ">= 12.20" } }, - "node_modules/formdata-node/node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", - "engines": { - "node": ">= 14" - } - }, "node_modules/formidable": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", @@ -20532,20 +20513,32 @@ } }, "node_modules/gaxios": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", - "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", "node-fetch": "^2.6.9", - "uuid": "^10.0.0" + "uuid": "^9.0.1" }, "engines": { "node": ">=14" } }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/gcp-metadata": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", @@ -21247,9 +21240,9 @@ } }, "node_modules/hast-util-from-parse5/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/hast-util-is-element": { "version": "3.0.0", @@ -21300,9 +21293,9 @@ } }, "node_modules/hast-util-raw/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/hast-util-to-jsx-runtime": { "version": "2.3.0", @@ -21331,9 +21324,9 @@ } }, "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/hast-util-to-parse5": { "version": "8.0.0", @@ -21369,9 +21362,9 @@ } }, "node_modules/hast-util-to-text/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/hast-util-whitespace": { "version": "3.0.0", @@ -21636,17 +21629,6 @@ "entities": "^4.4.0" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/http-browserify": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", @@ -21882,9 +21864,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "engines": { "node": ">= 4" } @@ -23721,9 +23703,9 @@ } }, "node_modules/kruptein": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-3.0.6.tgz", - "integrity": "sha512-EQJjTwAJfQkC4NfdQdo3HXM2a9pmBm8oidzH270cYu1MbgXPNPMJuldN7OPX+qdhPO5rw4X3/iKz0BFBfkXGKA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/kruptein/-/kruptein-3.0.7.tgz", + "integrity": "sha512-vTftnEjfbqFHLqxDUMQCj6gBo5lKqjV4f0JsM8rk8rM3xmvFZ2eSy4YALdaye7E+cDKnEj7eAjFR3vwh8a4PgQ==", "dependencies": { "asn1.js": "^5.4.1" }, @@ -23964,11 +23946,6 @@ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==" }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -24232,9 +24209,9 @@ "dev": true }, "node_modules/mapbox-gl": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.5.2.tgz", - "integrity": "sha512-KUrmDmLFKPp3MSsWGNTH5uvtYwJknV+eFJ+vxiN6hqKpzbme37z+JfYs5Mehs3CgFaIV/pUdnEV9UPUZJPuS+Q==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.6.0.tgz", + "integrity": "sha512-xjYHHIJDh6haYcKY+/9jh1eywwYfIOWCgT5Fowj4JriZexx/oOtg2S7BQDMZtpFyg9IN4VLCysmUWxY0pFNRWA==", "workspaces": [ "src/style-spec", "test/build/typings" @@ -24257,7 +24234,6 @@ "gl-matrix": "^3.4.3", "grid-index": "^1.1.0", "kdbush": "^4.0.2", - "lodash.clonedeep": "^4.5.0", "murmurhash-js": "^1.0.0", "pbf": "^3.2.1", "potpack": "^2.0.0", @@ -24265,7 +24241,6 @@ "rw": "^1.3.3", "serialize-to-js": "^3.1.2", "supercluster": "^8.0.1", - "tiny-lru": "^11.2.11", "tinyqueue": "^3.0.0", "tweakpane": "^4.0.4", "vt-pbf": "^3.1.3" @@ -24302,17 +24277,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/markdown-it/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", @@ -24544,9 +24508,9 @@ } }, "node_modules/mdast-util-gfm-footnote/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -25039,9 +25003,9 @@ } }, "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -25536,9 +25500,9 @@ } }, "node_modules/mdast-util-gfm-table/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-gfm-table/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -26032,9 +25996,9 @@ } }, "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -26513,9 +26477,9 @@ } }, "node_modules/mdast-util-gfm/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-gfm/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -27012,9 +26976,9 @@ } }, "node_modules/mdast-util-math/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-math/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -27510,9 +27474,9 @@ } }, "node_modules/mdast-util-mdx-expression/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -28015,9 +27979,9 @@ } }, "node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -28513,9 +28477,9 @@ } }, "node_modules/mdast-util-mdxjs-esm/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -29146,9 +29110,9 @@ } }, "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { "version": "4.0.0", @@ -30951,9 +30915,9 @@ } }, "node_modules/mocha": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.0.tgz", - "integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", "dev": true, "dependencies": { "ansi-colors": "^4.1.3", @@ -31143,9 +31107,9 @@ } }, "node_modules/mongoose": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.2.tgz", - "integrity": "sha512-GZB4rHMdYfGatV+23IpCrqFbyCOjCNOHXgWbirr92KRwTEncBrtW3kgU9vmpKjsGf7nMmnAy06SwWUv1vhDkSg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.3.tgz", + "integrity": "sha512-OubSDbsAclDFGHjV82MsKyIGQWFc42Ot1l+0dhRS6U9xODM7rm/ES/WpOQd8Ds9j0Mx8QzxZtrSCnBh6o9wUqw==", "dependencies": { "bson": "^6.7.0", "kareem": "2.6.3", @@ -34265,9 +34229,9 @@ } }, "node_modules/openai": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.55.1.tgz", - "integrity": "sha512-FziYJcWl+SAGbt5AcRIzVzNcnKohpEMQdtzVOmHFbBp/if7x2+ACqgxF2XUbyi2PcKONPcVpmtG5h9qoDAEXwQ==", + "version": "4.55.7", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.55.7.tgz", + "integrity": "sha512-I2dpHTINt0Zk+Wlns6KzkKu77MmNW3VfIIQf5qYziEUI6t7WciG1zTobfKqdPzBmZi3TTM+3DtjPumxQdcvzwA==", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", @@ -34290,9 +34254,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.43", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.43.tgz", - "integrity": "sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==", + "version": "18.19.44", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz", + "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==", "dependencies": { "undici-types": "~5.26.4" } @@ -34542,17 +34506,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/parseley": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz", @@ -35110,9 +35063,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -35331,17 +35284,17 @@ } }, "node_modules/prosemirror-transform": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.9.0.tgz", - "integrity": "sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.0.tgz", + "integrity": "sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg==", "dependencies": { "prosemirror-model": "^1.21.0" } }, "node_modules/prosemirror-view": { - "version": "1.33.9", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.9.tgz", - "integrity": "sha512-xV1A0Vz9cIcEnwmMhKKFAOkfIp8XmJRnaZoPqNXrPS7EK5n11Ov8V76KhR0RsfQd/SIzmWY+bg+M44A2Lx/Nnw==", + "version": "1.33.10", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.10.tgz", + "integrity": "sha512-wsKg9JeQkWlkXG8DDcloI/tbB9r3CysziubigoC8wTuE6zobN/9cl8bGRk1J1XjkUp7rxGBziOSxrhoILL84hg==", "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", @@ -35970,9 +35923,9 @@ } }, "node_modules/react-icons": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", - "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", "peerDependencies": { "react": "*" } @@ -36667,9 +36620,9 @@ } }, "node_modules/remark-parse/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/remark-parse/node_modules/mdast-util-from-markdown": { "version": "2.0.1", @@ -39460,9 +39413,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/terser": { - "version": "5.31.5", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.5.tgz", - "integrity": "sha512-YPmas0L0rE1UyLL/llTWA0SiDOqIcAQYLeUj7cJYzXHlRTAnMSg9pPe4VJ5PlKvTrPQsdVFuiRiwyeNlYgwh2Q==", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -39627,14 +39580,6 @@ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, - "node_modules/tiny-lru": { - "version": "11.2.11", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.2.11.tgz", - "integrity": "sha512-27BIW0dIWTYYoWNnqSmoNMKe5WIbkXsc0xaCQHd3/3xT2XMuMJrzHdrO9QBFR14emBz1Bu0dOAs2sCBBrvgPQA==", - "engines": { - "node": ">=12" - } - }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", @@ -40737,9 +40682,9 @@ } }, "node_modules/unified/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/uninstall": { "version": "0.0.0", @@ -40774,9 +40719,9 @@ } }, "node_modules/unist-util-find-after/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/unist-util-is": { "version": "6.0.0", @@ -40791,9 +40736,9 @@ } }, "node_modules/unist-util-is/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/unist-util-position": { "version": "5.0.0", @@ -40808,9 +40753,9 @@ } }, "node_modules/unist-util-position/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/unist-util-remove-position": { "version": "5.0.0", @@ -40826,9 +40771,9 @@ } }, "node_modules/unist-util-remove-position/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/unist-util-stringify-position": { "version": "3.0.3", @@ -40870,14 +40815,14 @@ } }, "node_modules/unist-util-visit-parents/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/unist-util-visit/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/universal-user-agent": { "version": "7.0.2", @@ -41234,9 +41179,9 @@ } }, "node_modules/vfile-location/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/vfile-message": { "version": "4.0.2", @@ -41252,9 +41197,9 @@ } }, "node_modules/vfile-message/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/vfile-message/node_modules/unist-util-stringify-position": { "version": "4.0.0", @@ -41269,9 +41214,9 @@ } }, "node_modules/vfile/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/vfile/node_modules/unist-util-stringify-position": { "version": "4.0.0", @@ -41350,9 +41295,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -41388,13 +41333,11 @@ } }, "node_modules/web-streams-polyfill": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0.tgz", - "integrity": "sha512-0zJXHRAYEjM2tUfZ2DiSOHAa2aw1tisnnhU3ufD57R8iefL+DcdJyRBRyJpG+NUimDgbTI/lH+gAE1PAvV3Cgw==", - "optional": true, - "peer": true, + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", "engines": { - "node": ">= 8" + "node": ">= 14" } }, "node_modules/web-worker": { diff --git a/src/client/views/LightboxView.tsx b/src/client/views/LightboxView.tsx index 334983ad0..b8b73e7dd 100644 --- a/src/client/views/LightboxView.tsx +++ b/src/client/views/LightboxView.tsx @@ -276,7 +276,7 @@ export class LightboxView extends ObservableReactComponent { }}> { this._docView = r !== null ? r : undefined; })} -- cgit v1.2.3-70-g09d2 From 325aa35c4bd5f57240ead2ec5f22ea9c4f19d522 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 15 Aug 2024 23:16:09 -0400 Subject: fixed dropping on multi col/row collections with margins --- .../CollectionMulticolumnView.scss | 69 +++++++++------- .../CollectionMulticolumnView.tsx | 94 +++++++++++----------- .../CollectionMultirowView.scss | 49 ++++++----- .../CollectionMultirowView.tsx | 31 +++---- src/client/views/nodes/trails/PresBox.tsx | 22 ++--- 5 files changed, 143 insertions(+), 122 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss index f983fd815..06d78c39e 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss +++ b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss @@ -1,43 +1,50 @@ -.collectionMulticolumnView_contents { - display: flex; - //overflow: hidden; // bcz: turned of to allow highlighting to appear when there is no border (e.g, for a component of the slide template) - width: 100%; +.collectionMulticolumnView_drop { height: 100%; + top: 0; + left: 0; + position: absolute; - .document-wrapper { + .collectionMulticolumnView_contents { display: flex; - flex-direction: column; + //overflow: hidden; // bcz: turned of to allow highlighting to appear when there is no border (e.g, for a component of the slide template) width: 100%; - align-items: center; - position: relative; - > .iconButton-container { - top: 0; - left: 0; - position: absolute; - } - - .contentFittingDocumentView { - margin: auto; - } + height: 100%; - .label-wrapper { + .document-wrapper { display: flex; - flex-direction: row; - justify-content: center; - height: 20px; + flex-direction: column; + width: 100%; + align-items: center; + position: relative; + > .iconButton-container { + top: 0; + left: 0; + position: absolute; + } + + .contentFittingDocumentView { + margin: auto; + } + + .label-wrapper { + display: flex; + flex-direction: row; + justify-content: center; + height: 20px; + } } - } - .multiColumnResizer { - cursor: ew-resize; - transition: 0.5s opacity ease; - display: flex; - flex-direction: column; + .multiColumnResizer { + cursor: ew-resize; + transition: 0.5s opacity ease; + display: flex; + flex-direction: column; - .multiColumnResizer-hdl { - width: 100%; - height: 100%; - transition: 0.5s background-color ease; + .multiColumnResizer-hdl { + width: 100%; + height: 100%; + transition: 0.5s background-color ease; + } } } } diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx index 5125bdb6c..c6884d866 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx +++ b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx @@ -17,6 +17,7 @@ import './CollectionMulticolumnView.scss'; import ResizeBar from './MulticolumnResizer'; import WidthLabel from './MulticolumnWidthLabel'; import { dropActionType } from '../../../util/DropActionTypes'; +import { SnappingManager } from '../../../util/SnappingManager'; interface WidthSpecifier { magnitude: number; @@ -211,15 +212,14 @@ export class CollectionMulticolumnView extends CollectionSubView() { return Transform.Identity(); }; - @undoBatch onInternalDrop = (e: Event, de: DragManager.DropEvent) => { let dropInd = -1; - if (de.complete.docDragData && this._mainCont) { + if (de.complete.docDragData && this._contRef.current) { let curInd = -1; de.complete.docDragData?.droppedDocuments.forEach(d => { curInd = this.childDocs.indexOf(d); }); - Array.from(this._mainCont.children).forEach((child, index) => { + Array.from(this._contRef.current.children).forEach((child, index) => { const brect = child.getBoundingClientRect(); if (brect.x < de.x && brect.x + brect.width > de.x) { if (curInd !== -1 && curInd === Math.floor(index / 2)) { @@ -317,11 +317,11 @@ export class CollectionMulticolumnView extends CollectionSubView() { this.childLayouts.forEach((layout, i) => { collector.push( // eslint-disable-next-line react/no-array-index-key - +
{this.getDisplayDoc(layout)} {this.layoutDoc._chromeHidden ? null : ( -
@@ -343,49 +343,53 @@ export class CollectionMulticolumnView extends CollectionSubView() { return collector; } + _contRef = React.createRef(); render() { return ( -
- {this.contents} - {!this._startIndex ? null : ( - -
{ - this._startIndex = Math.min(this.childLayoutPairs.length - 1, this._startIndex + this.maxShown); - })}> -
+
+ )} + {this._startIndex > this.childLayoutPairs.length - 1 || !this.maxShown ? null : ( + +
{ + this._startIndex = Math.min(this.childLayoutPairs.length - 1, this._startIndex + this.maxShown); + })}> + } color={SettingsManager.userColor} /> +
+
+ )} +
); } diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss index f44eacb2a..0d49fabaa 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss +++ b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss @@ -1,34 +1,41 @@ -.collectionMultirowView_contents { - display: flex; - //overflow: hidden; // bcz: turned of to allow highlighting to appear when there is no border (e.g, for a component of the slide template) - width: 100%; +.collectionMultirowView_drop { height: 100%; - flex-direction: column; + top: 0; + left: 0; + position: absolute; - .document-wrapper { + .collectionMultirowView_contents { display: flex; - flex-direction: row; + //overflow: hidden; // bcz: turned of to allow highlighting to appear when there is no border (e.g, for a component of the slide template) + width: 100%; height: 100%; - align-items: center; + flex-direction: column; - .label-wrapper { + .document-wrapper { display: flex; flex-direction: row; - justify-content: center; - height: 20px; + height: 100%; + align-items: center; + + .label-wrapper { + display: flex; + flex-direction: row; + justify-content: center; + height: 20px; + } } - } - .multiRowResizer { - cursor: ns-resize; - transition: 0.5s opacity ease; - display: flex; - flex-direction: row; + .multiRowResizer { + cursor: ns-resize; + transition: 0.5s opacity ease; + display: flex; + flex-direction: row; - .multiRowResizer-hdl { - width: 100%; - height: 100%; - transition: 0.5s background-color ease; + .multiRowResizer-hdl { + width: 100%; + height: 100%; + transition: 0.5s background-color ease; + } } } } diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx index 2833ff2f8..04b85e182 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx +++ b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx @@ -196,12 +196,12 @@ export class CollectionMultirowView extends CollectionSubView() { @undoBatch onInternalDrop = (e: Event, de: DragManager.DropEvent) => { let dropInd = -1; - if (de.complete.docDragData && this._mainCont) { + if (de.complete.docDragData && this._contRef.current) { let curInd = -1; de.complete.docDragData?.droppedDocuments.forEach(d => { curInd = this.childDocs.indexOf(d); }); - Array.from(this._mainCont.children).forEach((child, index) => { + Array.from(this._contRef.current.children).forEach((child, index) => { const brect = child.getBoundingClientRect(); if (brect.y < de.y && brect.y + brect.height > de.y) { if (curInd !== -1 && curInd === Math.floor(index / 2)) { @@ -318,20 +318,23 @@ export class CollectionMultirowView extends CollectionSubView() { return collector; } + _contRef = React.createRef(); render() { return ( -
- {this.contents} +
+
+ {this.contents} +
); } diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx index cf32a0196..7448fa898 100644 --- a/src/client/views/nodes/trails/PresBox.tsx +++ b/src/client/views/nodes/trails/PresBox.tsx @@ -2,7 +2,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; import Slider from '@mui/material/Slider'; import { Button, Dropdown, DropdownType, IconButton, Toggle, ToggleType, Type } from 'browndash-components'; -import { action, computed, IReactionDisposer, makeObservable, observable, ObservableSet, reaction, runInAction } from 'mobx'; +import { IReactionDisposer, ObservableSet, action, computed, makeObservable, observable, reaction, runInAction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { AiOutlineSend } from 'react-icons/ai'; @@ -10,7 +10,8 @@ import { BiMicrophone } from 'react-icons/bi'; import { FaArrowDown, FaArrowLeft, FaArrowRight, FaArrowUp } from 'react-icons/fa'; import ReactLoading from 'react-loading'; import ReactTextareaAutosize from 'react-textarea-autosize'; -import { lightOrDark, returnFalse, returnOne, setupMoveUpEvents, StopEvent } from '../../../../ClientUtils'; +import { StopEvent, lightOrDark, returnFalse, returnOne, setupMoveUpEvents } from '../../../../ClientUtils'; +import { emptyFunction, stringHash } from '../../../../Utils'; import { Doc, DocListCast, Field, FieldResult, FieldType, NumListCast, Opt, StrListCast } from '../../../../fields/Doc'; import { Animation, DocData, TransitionTimer } from '../../../../fields/DocSymbols'; import { Copy } from '../../../../fields/FieldSymbols'; @@ -20,24 +21,23 @@ import { ObjectField } from '../../../../fields/ObjectField'; import { listSpec } from '../../../../fields/Schema'; import { ComputedField, ScriptField } from '../../../../fields/ScriptField'; import { BoolCast, Cast, DocCast, NumCast, StrCast, toList } from '../../../../fields/Types'; -import { emptyFunction, stringHash } from '../../../../Utils'; -import { getSlideTransitionSuggestions, gptSlideProperties, gptTrailSlideCustomization } from '../../../apis/gpt/PresCustomization'; import { DocServer } from '../../../DocServer'; -import { Docs } from '../../../documents/Documents'; +import { getSlideTransitionSuggestions, gptSlideProperties, gptTrailSlideCustomization } from '../../../apis/gpt/PresCustomization'; import { CollectionViewType, DocumentType } from '../../../documents/DocumentTypes'; +import { Docs } from '../../../documents/Documents'; import { DictationManager } from '../../../util/DictationManager'; import { dropActionType } from '../../../util/DropActionTypes'; import { ScriptingGlobals } from '../../../util/ScriptingGlobals'; import { SerializationHelper } from '../../../util/SerializationHelper'; import { SnappingManager } from '../../../util/SnappingManager'; -import { undoable, undoBatch, UndoManager } from '../../../util/UndoManager'; -import { CollectionFreeFormView } from '../../collections/collectionFreeForm'; -import { CollectionFreeFormPannableContents } from '../../collections/collectionFreeForm/CollectionFreeFormPannableContents'; +import { UndoManager, undoBatch, undoable } from '../../../util/UndoManager'; +import { ViewBoxBaseComponent } from '../../DocComponent'; +import { pinDataTypes as dataTypes } from '../../PinFuncs'; import { CollectionView } from '../../collections/CollectionView'; import { TreeView } from '../../collections/TreeView'; -import { ViewBoxBaseComponent } from '../../DocComponent'; +import { CollectionFreeFormView } from '../../collections/collectionFreeForm'; +import { CollectionFreeFormPannableContents } from '../../collections/collectionFreeForm/CollectionFreeFormPannableContents'; import { Colors } from '../../global/globalEnums'; -import { pinDataTypes as dataTypes } from '../../PinFuncs'; import { DocumentView } from '../DocumentView'; import { FieldView, FieldViewProps } from '../FieldView'; import { FocusViewOptions } from '../FocusViewOptions'; @@ -47,7 +47,7 @@ import CubicBezierEditor, { EaseFuncToPoints, TIMING_DEFAULT_MAPPINGS } from './ import './PresBox.scss'; import { PresEffect, PresEffectDirection, PresMovement, PresStatus } from './PresEnums'; import SlideEffect from './SlideEffect'; -import { AnimationSettings, easeItems, effectItems, effectTimings, movementItems, presEffectDefaultTimings, springMappings, springPreviewColors, SpringSettings, SpringType } from './SpringUtils'; +import { AnimationSettings, SpringSettings, SpringType, easeItems, effectItems, effectTimings, movementItems, presEffectDefaultTimings, springMappings, springPreviewColors } from './SpringUtils'; @observer export class PresBox extends ViewBoxBaseComponent() { -- cgit v1.2.3-70-g09d2 From d0c072b36ae6b9a65f993592bc7a27719126fda9 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 15 Aug 2024 23:18:38 -0400 Subject: from last --- .../collections/collectionMulticolumn/CollectionMulticolumnView.tsx | 2 +- .../views/collections/collectionMulticolumn/CollectionMultirowView.tsx | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx index c6884d866..c4c025ded 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx +++ b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.tsx @@ -10,7 +10,7 @@ import { BoolCast, NumCast, ScriptCast, StrCast } from '../../../../fields/Types import { DragManager } from '../../../util/DragManager'; import { SettingsManager } from '../../../util/SettingsManager'; import { Transform } from '../../../util/Transform'; -import { undoBatch, undoable } from '../../../util/UndoManager'; +import { undoable } from '../../../util/UndoManager'; import { DocumentView } from '../../nodes/DocumentView'; import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; import './CollectionMulticolumnView.scss'; diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx index 04b85e182..bda8e91ac 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx +++ b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.tsx @@ -6,7 +6,6 @@ import { BoolCast, NumCast, ScriptCast, StrCast } from '../../../../fields/Types import { DragManager } from '../../../util/DragManager'; import { dropActionType } from '../../../util/DropActionTypes'; import { Transform } from '../../../util/Transform'; -import { undoBatch } from '../../../util/UndoManager'; import { DocumentView } from '../../nodes/DocumentView'; import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; import './CollectionMultirowView.scss'; @@ -193,7 +192,6 @@ export class CollectionMultirowView extends CollectionSubView() { return Transform.Identity(); // type coersion, this case should never be hit }; - @undoBatch onInternalDrop = (e: Event, de: DragManager.DropEvent) => { let dropInd = -1; if (de.complete.docDragData && this._contRef.current) { -- cgit v1.2.3-70-g09d2 From b6f6acb80f57011594d39b9ce576a5e77862cb7f Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 15 Aug 2024 23:50:01 -0400 Subject: fixed horiz alignment of items in multicolumnview --- src/client/views/collections/CollectionStackingView.tsx | 9 +++++---- .../collectionMulticolumn/CollectionMulticolumnView.tsx | 5 ++--- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx index 0f12c111e..3f8aee792 100644 --- a/src/client/views/collections/CollectionStackingView.tsx +++ b/src/client/views/collections/CollectionStackingView.tsx @@ -320,7 +320,7 @@ export class CollectionStackingView extends CollectionSubView this.getDocHeight(doc); const panelHeight = () => (this.isStackingView ? height() : Math.min(height(), this._props.PanelHeight())); - const panelWidth = () => (this.isStackingView ? width() : this.columnWidth); + const panelWidth = () => this.columnWidth; const stackedDocTransform = () => this.getDocTransform(doc); this._docXfs.push({ stackedDocTransform, width, height }); return count > this._renderCount ? null : ( @@ -373,9 +373,10 @@ export class CollectionStackingView extends CollectionSubView { - const { columnUnitLength } = this; - if (columnUnitLength === undefined) { + if (this.columnUnitLength === undefined) { return Transform.Identity(); // we're still waiting on promises to resolve } let offset = 0; // eslint-disable-next-line no-restricted-syntax for (const { layout: candidate } of this.childLayoutPairs) { if (candidate === layout) { - return this.ScreenToLocalBoxXf().translate(0, -offset / (this._props.NativeDimScaling?.() || 1)); + return this.ScreenToLocalBoxXf().translate(-offset / (this._props.NativeDimScaling?.() || 1), 0); } offset += this.lookupPixels(candidate) + resizerWidth; } -- cgit v1.2.3-70-g09d2 From e57584a1be9d428fb40fc789494a7ac0ac14fb84 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 19 Aug 2024 16:42:56 -0400 Subject: extensive fixes to DiagramBox --- src/client/documents/Documents.ts | 1 + src/client/util/CurrentUserUtils.ts | 16 +- .../collectionGrid/CollectionGridView.tsx | 6 +- src/client/views/nodes/DiagramBox.scss | 112 +++---- src/client/views/nodes/DiagramBox.tsx | 360 ++++++++------------- .../views/nodes/formattedText/FormattedTextBox.tsx | 3 +- 6 files changed, 206 insertions(+), 292 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index d7fdf016c..b108b73db 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -256,6 +256,7 @@ export class DocumentOptions { _layout_nativeDimEditable?: BOOLt = new BoolInfo('native dimensions can be modified using document decoration reizers', false); _layout_reflowVertical?: BOOLt = new BoolInfo('permit vertical resizing with content "reflow"'); _layout_reflowHorizontal?: BOOLt = new BoolInfo('permit horizontal resizing with content reflow'); + _layout_noSidebar?: BOOLt = new BoolInfo('whether to display the sidebar toggle button'); layout_boxShadow?: string; // box-shadow css string OR "standard" to use dash standard box shadow layout_maxShown?: NUMt = new NumInfo('maximum number of children to display at one time (see multicolumnview)'); _layout_autoHeight?: BOOLt = new BoolInfo('whether document automatically resizes vertically to display contents'); diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index c99ce1832..311b86fa4 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -321,20 +321,16 @@ export class CurrentUserUtils { const rtfield = new RichTextField(JSON.stringify( {doc: {type:"doc",content:[ {type:"code_block",content:[ - {type:"text",text:"^@mermaids"}, - {type:"text",text:"\n\n"}, - {type:"text",text:"pie "}, - {type:"text",text:"title"}, - {type:"text",text:" "}, - {type:"text",text:"Minerals in my tap water"}, - {type:"text",text:"\n \"Calcium\" : "}, + {type:"text",text:`^@mermaids\n`}, + {type:"text",text:`\n pie title Minerals in my tap water`}, + {type:"text",text:`\n "Calcium" : `}, {type:"dashField",attrs:{fieldKey:"calcium",docId:"",hideKey:true,hideValue:false,editable:true}}, - {type:"text",text:"\n \"Potassium\" : "}, + {type:"text",text:`\n "Potassium" : `}, {type:"dashField",attrs:{fieldKey:"pot",docId:"",hideKey:true,hideValue:false,editable:true}}, - {type:"text",text:"\n \"Magnesium\" : 10.01"} + {type:"text",text:`\n "Magnesium" : 10.01`} ]} ]}, - selection:{type:"text",anchor:109,head:109} + selection:{type:"text",anchor:1,head:1} }), `^@mermaids pie title Minerals in my tap water diff --git a/src/client/views/collections/collectionGrid/CollectionGridView.tsx b/src/client/views/collections/collectionGrid/CollectionGridView.tsx index 2d9191dd7..61bd0241c 100644 --- a/src/client/views/collections/collectionGrid/CollectionGridView.tsx +++ b/src/client/views/collections/collectionGrid/CollectionGridView.tsx @@ -13,7 +13,7 @@ import { undoBatch } from '../../../util/UndoManager'; import { ContextMenu } from '../../ContextMenu'; import { ContextMenuProps } from '../../ContextMenuItem'; import { DocumentView } from '../../nodes/DocumentView'; -import { CollectionSubView } from '../CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from '../CollectionSubView'; import './CollectionGridView.scss'; import Grid, { Layout } from './Grid'; @@ -26,7 +26,7 @@ export class CollectionGridView extends CollectionSubView() { @observable private _scroll: number = 0; // required to make sure the decorations box container updates on scroll private dropLocation: object = {}; // sets the drop location for external drops - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -200,7 +200,7 @@ export class CollectionGridView extends CollectionSubView() { whenChildContentsActiveChanged={this._props.whenChildContentsActiveChanged} onClickScript={this.onChildClickHandler} renderDepth={this._props.renderDepth + 1} - dontCenter={StrCast(this.layoutDoc.layout_dontCenter) as any} // 'y', 'x', 'xy' + dontCenter={StrCast(this.layoutDoc.layout_dontCenter) as 'x' | 'y' | 'xy'} /> ); } diff --git a/src/client/views/nodes/DiagramBox.scss b/src/client/views/nodes/DiagramBox.scss index d2749f1ad..323638bff 100644 --- a/src/client/views/nodes/DiagramBox.scss +++ b/src/client/views/nodes/DiagramBox.scss @@ -1,3 +1,5 @@ +$searchbarHeight: 50px; + .DIYNodeBox { width: 100%; height: 100%; @@ -6,83 +8,75 @@ align-items: center; justify-content: center; - .DIYNodeBox-wrapper { - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - .DIYNodeBox { - /* existing code */ - - .DIYNodeBox-iframe { - height: 100%; - width: 100%; - border: none; + .DIYNodeBox { + /* existing code */ - } + .DIYNodeBox-iframe { + height: 100%; + width: 100%; + border: none; } + } - .search-bar { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - padding: 10px; + .DIYNodeBox-searchbar { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: $searchbarHeight; + padding: 10px; - input[type="text"] { - flex: 1; - margin-right: 10px; - } + input[type='text'] { + flex: 1; + margin-right: 10px; + } - button { - padding: 5px 10px; - } + button { + padding: 5px 10px; } + } - .content { + .DIYNodeBox-content { + flex: 1; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: calc(100% - $searchbarHeight); + .diagramBox { flex: 1; display: flex; justify-content: center; align-items: center; - width:100%; - height:100%; - .diagramBox{ + width: 100%; + height: 100%; + svg { flex: 1; display: flex; justify-content: center; align-items: center; - width:100%; - height:100%; - svg{ - flex: 1; - display: flex; - justify-content: center; - align-items: center; - width:100%; - height:100%; - } + width: 100%; + height: 100%; } } + } - .loading-circle { - position: relative; - width: 50px; - height: 50px; - border-radius: 50%; - border: 3px solid #ccc; - border-top-color: #333; - animation: spin 1s infinite linear; - } + .loading-circle { + position: relative; + width: 50px; + height: 50px; + border-radius: 50%; + border: 3px solid #ccc; + border-top-color: #333; + animation: spin 1s infinite linear; + } - @keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } + @keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); } } -} \ No newline at end of file +} diff --git a/src/client/views/nodes/DiagramBox.tsx b/src/client/views/nodes/DiagramBox.tsx index 32969fa53..36deb2d8d 100644 --- a/src/client/views/nodes/DiagramBox.tsx +++ b/src/client/views/nodes/DiagramBox.tsx @@ -1,284 +1,198 @@ import mermaid from 'mermaid'; -import { action, makeObservable, observable, reaction } from 'mobx'; +import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { Doc, DocListCast } from '../../../fields/Doc'; -import { List } from '../../../fields/List'; +import { DocData } from '../../../fields/DocSymbols'; import { RichTextField } from '../../../fields/RichTextField'; -import { DocCast, NumCast } from '../../../fields/Types'; +import { Cast, DocCast, NumCast } from '../../../fields/Types'; +import { Gestures } from '../../../pen-gestures/GestureTypes'; import { GPTCallType, gptAPICall } from '../../apis/gpt/GPT'; import { DocumentType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; import { DocumentManager } from '../../util/DocumentManager'; import { LinkManager } from '../../util/LinkManager'; +import { undoable } from '../../util/UndoManager'; import { ViewBoxAnnotatableComponent } from '../DocComponent'; import { InkingStroke } from '../InkingStroke'; import './DiagramBox.scss'; import { FieldView, FieldViewProps } from './FieldView'; +import { FormattedTextBox } from './formattedText/FormattedTextBox'; @observer export class DiagramBox extends ViewBoxAnnotatableComponent() { public static LayoutString(fieldKey: string) { return FieldView.LayoutString(DiagramBox, fieldKey); } - private _ref: React.RefObject = React.createRef(); - private _dragRef = React.createRef(); + static isPointInBox = (box: Doc, pt: number[]): boolean => { + if (typeof pt[0] === 'number' && typeof box.x === 'number' && typeof box.y === 'number' && typeof pt[1] === 'number') { + return pt[0] < box.x + NumCast(box.width) && pt[0] > box.x && pt[1] > box.y && pt[1] < box.y + NumCast(box.height); + } + return false; + }; + constructor(props: FieldViewProps) { super(props); makeObservable(this); } - @observable inputValue = ''; - @observable loading = false; - @observable errorMessage = ''; - @observable mermaidCode = ''; + @observable _showCode = false; + @observable _inputValue = ''; + @observable _generating = false; + @observable _errorMessage = ''; - @action handleInputChange = (e: React.ChangeEvent) => { - this.inputValue = e.target.value; - }; - async componentDidMount() { + @computed get mermaidcode() { + return Cast(this.Document[DocData].text, RichTextField, null)?.Text ?? ''; + } + + componentDidMount() { this._props.setContentViewBox?.(this); mermaid.initialize({ securityLevel: 'loose', startOnLoad: true, flowchart: { useMaxWidth: true, htmlLabels: true, curve: 'cardinal' }, }); - this.mermaidCode = 'asdasdasd'; - const docArray: Doc[] = DocListCast(this.Document.data); - let mermaidCodeDoc = docArray.filter(doc => doc.type === 'rich text'); - mermaidCodeDoc = mermaidCodeDoc.filter(doc => (doc.text as RichTextField).Text === 'mermaidCodeTitle'); - if (mermaidCodeDoc[0]) { - if (typeof mermaidCodeDoc[0].title === 'string') { - console.log(mermaidCodeDoc[0].title); - if (mermaidCodeDoc[0].title !== '') { - this.renderMermaidAsync(mermaidCodeDoc[0].title); - } - } - } - // this will create a text doc far away where the user cant to save the mermaid code, where it will then be accessed when flipped to the diagram box side - // the code is stored in the title since it is much easier to change than in the text - else { - DocumentManager.Instance.AddViewRenderedCb(this.Document, docViewForYourCollection => { - if (docViewForYourCollection && docViewForYourCollection.ComponentView) { - if (docViewForYourCollection.ComponentView.addDocument && docViewForYourCollection.ComponentView.removeDocument) { - const newDoc = Docs.Create.TextDocument('mermaidCodeTitle', { title: '', x: 9999 + NumCast(this.layoutDoc._width), y: 9999 }); - docViewForYourCollection.ComponentView?.addDocument(newDoc); - } - } - }); - } - console.log(this.Document.title); - // this is so that ever time a new doc, text node or ink node, is created, this.createMermaidCode will run which will create a save + // when a new doc/text/ink/shape is created in the freeform view, this generates the corresponding mermaid diagram code reaction( () => DocListCast(this.Document.data), - () => this.convertDrawingToMermaidCode(), + docArray => docArray.length && this.convertDrawingToMermaidCode(docArray), { fireImmediately: true } ); } - renderMermaid = async (str: string) => { + renderMermaid = (str: string) => { try { - const { svg, bindFunctions } = await this.mermaidDiagram(str); - return { svg, bindFunctions }; + return mermaid.render('graph' + Date.now(), str); } catch (error) { - console.error('Error rendering mermaid diagram:', error); return { svg: '', bindFunctions: undefined }; } }; - mermaidDiagram = async (str: string) => mermaid.render('graph' + Date.now(), str); - async renderMermaidAsync(mermaidCode: string) { + renderMermaidAsync = async (mermaidCode: string, dashDiv: HTMLDivElement) => { try { const { svg, bindFunctions } = await this.renderMermaid(mermaidCode); - const dashDiv = document.getElementById('dashDiv' + this.Document.title); - if (dashDiv) { - dashDiv.innerHTML = svg; - if (bindFunctions) { - bindFunctions(dashDiv); - } - } + dashDiv.innerHTML = svg; + bindFunctions?.(dashDiv); } catch (error) { console.error('Error rendering Mermaid:', error); } - } - @action handleRenderClick = () => { - this.generateMermaidCode(); }; - @action async generateMermaidCode() { - console.log('Generating Mermaid Code'); - this.loading = true; - let prompt = ''; - // let docArray: Doc[] = DocListCast(this.Document.data); - // let mermaidCodeDoc = docArray.filter(doc => doc.type == 'rich text') - // mermaidCodeDoc=mermaidCodeDoc.filter(doc=>(doc.text as RichTextField).Text=='mermaidCodeTitle') - // if(mermaidCodeDoc[0]){ - // console.log(mermaidCodeDoc[0].title) - // if(typeof mermaidCodeDoc[0].title=='string'){ - // console.log(mermaidCodeDoc[0].title) - // if(mermaidCodeDoc[0].title!=""){ - // prompt="Edit this code "+this.inputValue+": "+mermaidCodeDoc[0].title - // console.log("you have to see me") - // } - // } - // } - // else{ - prompt = 'Write this in mermaid code and only give me the mermaid code: ' + this.inputValue; - console.log('there is no text save'); - // } - const res = await gptAPICall(prompt, GPTCallType.MERMAID); - this.loading = false; - if (res === 'Error connecting with API.') { - // If GPT call failed - console.error('GPT call failed'); - this.errorMessage = 'GPT call failed; please try again.'; - } else if (res !== null) { - // If GPT call succeeded, set htmlCode;;; TODO: check if valid html - if (this.isValidCode(res)) { - this.mermaidCode = res; - console.log('GPT call succeeded:' + res); - this.errorMessage = ''; - } else { - console.error('GPT call succeeded but invalid html; please try again.'); - this.errorMessage = 'GPT call succeeded but invalid html; please try again.'; - } - } - this.renderMermaidAsync.call(this, this.removeWords(this.mermaidCode)); - this.loading = false; - } - isValidCode = (html: string) => true; - removeWords(inputStrIn: string) { - const inputStr = inputStrIn.replace('```mermaid', ''); - return inputStr.replace('```', ''); - } + + setMermaidCode = undoable((res: string) => { + this.Document[DocData].text = new RichTextField( + JSON.stringify({ + doc: { + type: 'doc', + content: [ + { + type: 'code_block', + content: [ + { type: 'text', text: `^@mermaids\n` }, + { type: 'text', text: this.removeWords(res) }, + ], + }, + ], + }, + selection: { type: 'text', anchor: 1, head: 1 }, + }), + res + ); + }, 'set mermaid code'); + + generateMermaidCode = action(() => { + this._generating = true; + const prompt = 'Write this in mermaid code and only give me the mermaid code: ' + this._inputValue; + gptAPICall(prompt, GPTCallType.MERMAID).then( + action(res => { + this._generating = false; + if (res === 'Error connecting with API.') { + this._errorMessage = 'GPT call failed; please try again.'; + } + // If GPT call succeeded, set mermaid code on Doc which will trigger a rendering if _showCode is false + else if (res && this.isValidCode(res)) { + this.setMermaidCode(res); + this._errorMessage = ''; + } else { + this._errorMessage = 'GPT call succeeded but invalid html; please try again.'; + } + }) + ); + }); + isValidCode = (html: string) => (html ? true : false); + removeWords = (inputStrIn: string) => inputStrIn.replace('```mermaid', '').replace(`^@mermaids`, '').replace('```', ''); + // method to convert the drawings on collection node side the mermaid code - async convertDrawingToMermaidCode() { - let mermaidCode = ''; - let diagramExists = false; - if (this.Document.data instanceof List) { - const docArray: Doc[] = DocListCast(this.Document.data); - const rectangleArray = docArray.filter(doc => doc.title === 'rectangle' || doc.title === 'circle'); - const lineArray = docArray.filter(doc => doc.title === 'line' || doc.title === 'stroke'); - const textArray = docArray.filter(doc => doc.type === 'rich text'); - const timeoutPromise = () => - new Promise(resolve => { - setTimeout(resolve, 0); - }); - await timeoutPromise(); - const inkStrokeArray = lineArray.map(doc => DocumentManager.Instance.getDocumentView(doc, this.DocumentView?.())).filter(inkView => inkView?.ComponentView instanceof InkingStroke); - console.log(inkStrokeArray.length); - console.log(lineArray.length); - if (inkStrokeArray[0] && inkStrokeArray.length === lineArray.length) { - mermaidCode = 'graph TD;'; - const inkingStrokeArray = inkStrokeArray.map(stroke => stroke?.ComponentView); - for (let i = 0; i < rectangleArray.length; i++) { - const rectangle = rectangleArray[i]; - for (let j = 0; j < lineArray.length; j++) { - const inkScaleX = (inkingStrokeArray[j] as InkingStroke)?.inkScaledData().inkScaleX; - const inkScaleY = (inkingStrokeArray[j] as InkingStroke)?.inkScaledData().inkScaleY; - const inkStrokeXArray = (inkingStrokeArray[j] as InkingStroke) - ?.inkScaledData() - .inkData.map(coord => coord.X) - .map(doc => doc * inkScaleX); - const inkStrokeYArray = (inkingStrokeArray[j] as InkingStroke) - ?.inkScaledData() - .inkData.map(coord => coord.Y) - .map(doc => doc * inkScaleY); - console.log(inkingStrokeArray.length); - console.log(lineArray.length); - // need to minX and minY to since the inkStroke.x and.y is not relative to the doc. so I have to do some calcluations - const minX: number = Math.min(...inkStrokeXArray); - const minY: number = Math.min(...inkStrokeYArray); - const startX = inkStrokeXArray[0] - minX + (lineArray[j]?.x as number); - const startY = inkStrokeYArray[0] - minY + (lineArray[j]?.y as number); - const endX = inkStrokeXArray[inkStrokeXArray.length - 1] - minX + (lineArray[j].x as number); - const endY = inkStrokeYArray[inkStrokeYArray.length - 1] - minY + (lineArray[j].y as number); - if (this.isPointInBox(rectangle, [startX, startY])) { - for (let k = 0; k < rectangleArray.length; k++) { - const rectangle2 = rectangleArray[k]; - if (this.isPointInBox(rectangle2, [endX, endY]) && typeof rectangle.x === 'number' && typeof rectangle2.x === 'number') { - diagramExists = true; - const linkedDocs: Doc[] = LinkManager.Instance.getAllRelatedLinks(lineArray[j]).map(d => DocCast(LinkManager.getOppositeAnchor(d, lineArray[j]))); - console.log(linkedDocs.length); - if (linkedDocs.length !== 0) { - const linkedText = (linkedDocs[0].text as RichTextField).Text; - mermaidCode += Math.abs(rectangle.x) + this.getTextInBox(rectangle, textArray) + '-->|' + linkedText + '|' + Math.abs(rectangle2.x) + this.getTextInBox(rectangle2, textArray) + ';'; - } else { - mermaidCode += Math.abs(rectangle.x) + this.getTextInBox(rectangle, textArray) + '-->' + Math.abs(rectangle2.x) + this.getTextInBox(rectangle2, textArray) + ';'; - } - } + convertDrawingToMermaidCode = async (docArray: Doc[]) => { + const rectangleArray = docArray.filter(doc => doc.title === Gestures.Rectangle || doc.title === Gestures.Circle); + const lineArray = docArray.filter(doc => doc.title === Gestures.Line || doc.title === Gestures.Stroke); + const textArray = docArray.filter(doc => doc.type === DocumentType.RTF); + await new Promise(resolve => setTimeout(resolve)); + const inkStrokeArray = lineArray.map(doc => DocumentManager.Instance.getDocumentView(doc, this.DocumentView?.())).filter(inkView => inkView?.ComponentView instanceof InkingStroke); + if (inkStrokeArray[0] && inkStrokeArray.length === lineArray.length) { + let mermaidCode = `graph TD \n`; + const inkingStrokeArray = inkStrokeArray.map(stroke => stroke?.ComponentView as InkingStroke).filter(stroke => stroke); + for (const rectangle of rectangleArray) { + for (const inkStroke of inkingStrokeArray) { + const inkData = inkStroke.inkScaledData(); + const { inkScaleX, inkScaleY } = inkData; + const inkStrokeXArray = inkData.inkData.map(coord => coord.X * inkScaleX); + const inkStrokeYArray = inkData.inkData.map(coord => coord.Y * inkScaleY); + // need to minX and minY to since the inkStroke.x and.y is not relative to the doc. so I have to do some calcluations + const offX = Math.min(...inkStrokeXArray) - NumCast(inkStroke.Document.x); + const offY = Math.min(...inkStrokeYArray) - NumCast(inkStroke.Document.y); + + const startX = inkStrokeXArray[0] - offX; + const startY = inkStrokeYArray[0] - offY; + const endX = inkStrokeXArray.lastElement() - offX; + const endY = inkStrokeYArray.lastElement() - offY; + if (DiagramBox.isPointInBox(rectangle, [startX, startY])) { + for (const rectangle2 of rectangleArray) { + if (DiagramBox.isPointInBox(rectangle2, [endX, endY])) { + const linkedDocs = LinkManager.Instance.getAllRelatedLinks(inkStroke.Document).map(d => DocCast(LinkManager.getOppositeAnchor(d, inkStroke.Document))); + const linkedDocText = Cast(linkedDocs[0]?.text, RichTextField, null)?.Text; + const linkText = linkedDocText ? `|${linkedDocText}|` : ''; + mermaidCode += ' ' + Math.abs(NumCast(rectangle.x)) + this.getTextInBox(rectangle, textArray) + '-->' + linkText + Math.abs(NumCast(rectangle2.x)) + this.getTextInBox(rectangle2, textArray) + `\n`; } } } } - // this will save the text - DocumentManager.Instance.AddViewRenderedCb(this.Document, docViewForYourCollection => { - if (docViewForYourCollection && docViewForYourCollection.ComponentView) { - if (docViewForYourCollection.ComponentView.addDocument && docViewForYourCollection.ComponentView.removeDocument) { - let docs: Doc[] = DocListCast(this.Document.data); - docs = docs.filter(doc => doc.type === 'rich text'); - const mermaidCodeDoc = docs.filter(doc => (doc.text as RichTextField).Text === 'mermaidCodeTitle'); - if (mermaidCodeDoc[0]) { - if (diagramExists) { - mermaidCodeDoc[0].title = mermaidCode; - } else { - mermaidCodeDoc[0].title = ''; - } - } - } - } - }); + this.setMermaidCode(mermaidCode); } } - } - testInkingStroke = () => { - if (this.Document.data instanceof List) { - const docArray: Doc[] = DocListCast(this.Document.data); - const lineArray = docArray.filter(doc => doc.title === 'line' || doc.title === 'stroke'); - setTimeout(() => { - const inkStrokeArray = lineArray.map(doc => DocumentManager.Instance.getDocumentView(doc, this.DocumentView?.())).filter(inkView => inkView?.ComponentView instanceof InkingStroke); - console.log(inkStrokeArray); - }); - } }; - getTextInBox = (box: Doc, richTextArray: Doc[]): string => { - for (let i = 0; i < richTextArray.length; i++) { - const textDoc = richTextArray[i]; - if (typeof textDoc.x === 'number' && typeof textDoc.y === 'number' && typeof box.x === 'number' && typeof box.height === 'number' && typeof box.width === 'number' && typeof box.y === 'number') { - if (textDoc.x > box.x && textDoc.x < box.x + box.width && textDoc.y > box.y && textDoc.y < box.y + box.height) { - if (box.title === 'rectangle') { - return '(' + ((textDoc.text as RichTextField)?.Text ?? '') + ')'; - } - if (box.title === 'circle') { - return '((' + ((textDoc.text as RichTextField)?.Text ?? '') + '))'; - } - } + + getTextInBox = (box: Doc, richTextArray: Doc[]) => { + for (const textDoc of richTextArray) { + if (DiagramBox.isPointInBox(box, [NumCast(textDoc.x), NumCast(textDoc.y)])) { + switch (box.title) { + case Gestures.Rectangle: return '(' + ((textDoc.text as RichTextField)?.Text ?? '') + ')'; + case Gestures.Circle: return '((' + ((textDoc.text as RichTextField)?.Text ?? '') + '))'; + default: + } // prettier-ignore } } return '( )'; }; - isPointInBox = (box: Doc, line: number[]): boolean => { - if (typeof line[0] === 'number' && typeof box.x === 'number' && typeof box.width === 'number' && typeof box.height === 'number' && typeof box.y === 'number' && typeof line[1] === 'number') { - return line[0] < box.x + box.width && line[0] > box.x && line[1] > box.y && line[1] < box.y + box.height; - } - return false; - }; render() { return ( -
-
-
- - -
-
- {this.mermaidCode ? ( -
- ) : ( -
{this.loading ?
:
{this.errorMessage ? this.errorMessage : 'Insert prompt to generate diagram'}
}
- )} -
+
+
+ e.key === 'Enter' && this.generateMermaidCode())} onChange={action(e => (this._inputValue = e.target.value))} /> + + (this._showCode = !this._showCode))} /> +
+
+ {this._showCode ? ( + + ) : this._generating ? ( +
+ ) : ( +
r && this.renderMermaidAsync.call(this, this.removeWords(this.mermaidcode), r)}> + {this._errorMessage || 'Type a prompt to generate a diagram'} +
+ )}
); @@ -286,6 +200,14 @@ export class DiagramBox extends ViewBoxAnnotatableComponent() { } Docs.Prototypes.TemplateMap.set(DocumentType.DIAGRAM, { - layout: { view: DiagramBox, dataField: 'dadta' }, - options: { _height: 300, _layout_fitWidth: true, _layout_nativeDimEditable: true, _layout_reflowVertical: true, waitForDoubleClickToClick: 'always', systemIcon: 'BsGlobe' }, + layout: { view: DiagramBox, dataField: 'data' }, + options: { + _height: 300, // + _layout_fitWidth: true, + _layout_nativeDimEditable: true, + _layout_reflowVertical: true, + _layout_reflowHorizontal: true, + waitForDoubleClickToClick: 'always', + systemIcon: 'BsGlobe', + }, }); diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index e21902fdd..a88bd8920 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -1464,7 +1464,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent { - this._editorView?.dispatch(tx.deleteSelection().addStoredMark(mark)); + this._editorView?.dispatch(tx.addStoredMark(mark)); }); this.tryUpdateDoc(true); // calling select() above will make isContentActive() true only after a render .. which means the selectAll() above won't write to the Document and the incomingValue will overwrite the selection with the non-updated data } else { @@ -2090,6 +2090,7 @@ Docs.Prototypes.TemplateMap.set(DocumentType.RTF, { _layout_nativeDimEditable: true, _layout_reflowVertical: true, _layout_reflowHorizontal: true, + _layout_noSidebar: true, defaultDoubleClick: 'ignore', systemIcon: 'BsFileEarmarkTextFill', }, -- cgit v1.2.3-70-g09d2 From cdb21e036ff65d63991a53798133407be1d5755f Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 20 Aug 2024 21:30:32 -0400 Subject: fixed error handling of images too big to load. cleaned up facecollectionbox. changed metadata field naming to match conventions. --- src/client/Network.ts | 11 +-- src/client/documents/DocUtils.ts | 2 +- .../collectionFreeForm/FaceCollectionBox.tsx | 88 ++++++++------------ .../collections/collectionFreeForm/MarqueeView.tsx | 97 +++------------------- src/client/views/nodes/FaceRectangles.tsx | 3 +- src/client/views/search/FaceRecognitionHandler.tsx | 64 +++++++------- 6 files changed, 87 insertions(+), 178 deletions(-) (limited to 'src') diff --git a/src/client/Network.ts b/src/client/Network.ts index 8876d8190..17f8a6534 100644 --- a/src/client/Network.ts +++ b/src/client/Network.ts @@ -1,3 +1,4 @@ +import formidable from 'formidable'; import * as requestPromise from 'request-promise'; import { ClientUtils } from '../ClientUtils'; import { Utils } from '../Utils'; @@ -49,15 +50,9 @@ export namespace Networking { if (!fileguidpairs.length) { return []; } - const maxFileSize = 5000000; + const maxFileSize = 6000000; if (fileguidpairs.some(f => f.file.size > maxFileSize)) { - return new Promise[]>(res => { - res([{ - source: { size: 0, filepath: '', mimetype: '', originalFilename: '', newFilename: '',hashAlgorithm: false, - toJSON: () => ({ size: 0, filepath: '', mimetype: '', originalFilename: '', newFilename: '',name: '', length: 0, mtime: new Date(), type: '' }) }, - result: { name: '', message: `max file size (${maxFileSize / 1000000}MB) exceeded` } - }]) // prettier-ignore - }); + return new Promise[]>(res => res([{ source: { newFilename: '', mimetype: '' } as formidable.File, result: new Error(`max file size (${maxFileSize / 1000000}MB) exceeded`) }])); } formData.set('fileguids', fileguidpairs.map(pair => pair.guid).join(';')); formData.set('filesize', fileguidpairs.reduce((sum, pair) => sum + pair.file.size, 0).toString()); diff --git a/src/client/documents/DocUtils.ts b/src/client/documents/DocUtils.ts index a503d732b..35d835f1f 100644 --- a/src/client/documents/DocUtils.ts +++ b/src/client/documents/DocUtils.ts @@ -739,7 +739,7 @@ export namespace DocUtils { const { source: { newFilename, mimetype }, result, - } = upfiles.lastElement() ?? { source: { newFilename: '', mimetype: '' }, result: { message: 'upload failed' } }; + } = upfiles.lastElement() ?? { source: { newFilename: '', mimetype: '' }, result: new Error('upload failed') }; if (result instanceof Error) { if (overwriteDoc) { overwriteDoc.loadingError = result.message; diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 50b91e8fe..d5a2809dc 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -11,17 +11,20 @@ import { Doc, DocListCast } from '../../../../fields/Doc'; import { DocData } from '../../../../fields/DocSymbols'; import { Id } from '../../../../fields/FieldSymbols'; import { List } from '../../../../fields/List'; -import { ImageCast, StrCast } from '../../../../fields/Types'; +import { listSpec } from '../../../../fields/Schema'; +import { Cast, ImageCast, StrCast } from '../../../../fields/Types'; import { DocumentType } from '../../../documents/DocumentTypes'; import { Docs } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; import { SnappingManager } from '../../../util/SnappingManager'; +import { undoable } from '../../../util/UndoManager'; import { ViewBoxBaseComponent } from '../../DocComponent'; import { ObservableReactComponent } from '../../ObservableReactComponent'; import { DocumentView } from '../../nodes/DocumentView'; import { FieldView, FieldViewProps } from '../../nodes/FieldView'; import './FaceCollectionBox.scss'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; +import { FaceRecognitionHandler } from '../../search/FaceRecognitionHandler'; interface FaceDocumentProps { faceDoc: Doc; @@ -32,17 +35,15 @@ interface FaceDocumentProps { */ @observer export class FaceDocumentItem extends ObservableReactComponent { - private ref: React.RefObject; - @observable _displayImages: boolean = true; private _dropDisposer?: DragManager.DragDropDisposer; - private _inputRef = React.createRef(); constructor(props: FaceDocumentProps) { super(props); makeObservable(this); - this.ref = React.createRef(); } + @observable _displayImages: boolean = true; + protected createDropTarget = (ele: HTMLDivElement) => { this._dropDisposer?.(); ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this._props.faceDoc)); @@ -54,20 +55,20 @@ export class FaceDocumentItem extends ObservableReactComponent doc.type === DocumentType.IMG); filteredDocs.forEach(doc => { // If the current Face Document has no items, and the doc has more than one face descriptor, don't let the user add the document first. - if ((this._props.faceDoc[DocData].faceDescriptors as List>).length === 0 && (doc[DocData].faces as List>).length > 1) { + if ((this._props.faceDoc[DocData].face_descriptors as List>).length === 0 && (doc[DocData][FaceRecognitionHandler.FacesField(doc)] as List>).length > 1) { alert('Cannot add a document with multiple faces as the first item!'); } else { // Loop through the documents' face descriptors. // Choose the face with the smallest distance to add. - const float32Array = (this._props.faceDoc[DocData].faceDescriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); - const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(StrCast(this._props.faceDoc[DocData].label), float32Array); + const float32Array = (this._props.faceDoc[DocData].face_descriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); + const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(StrCast(this._props.faceDoc[DocData].face_label), float32Array); const faceDescriptors: faceapi.LabeledFaceDescriptors[] = [labeledFaceDescriptor]; const faceMatcher = new FaceMatcher(faceDescriptors, 1); let cur_lowest_distance = 1; let cur_matching_face = new List(); - (doc[DocData].faces as List>).forEach(face => { + (doc[DocData][FaceRecognitionHandler.FacesField(doc)] as List>).forEach(face => { // If the face has the current lowest distance, mark it as such // Once that lowest distance is found, add the face descriptor to the faceDoc, and add the associated doc const convered_32_array: Float32Array = new Float32Array(Array.from(face)); @@ -79,16 +80,15 @@ export class FaceDocumentItem extends ObservableReactComponent>([...(doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] as List>), cur_matching_face]); + const faceFieldKey = FaceRecognitionHandler.FaceField(doc, this._props.faceDoc); + if (doc[DocData][faceFieldKey]) { + Cast(doc[DocData][faceFieldKey], listSpec('number'), null).push(cur_matching_face as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that } else { - doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] = new List>([cur_matching_face]); + doc[DocData][faceFieldKey] = new List>([cur_matching_face]); } - this._props.faceDoc[DocData].associatedDocs = new List([...DocListCast(this._props.faceDoc[DocData].associatedDocs), doc]); - this._props.faceDoc[DocData].faceDescriptors = new List>([...(this._props.faceDoc[DocData].faceDescriptors as List>), cur_matching_face]); - - //const match = faceMatcher.findBestMatch(cur_descriptor); + Doc.AddDocToList(this._props.faceDoc[DocData], 'face_docList', doc); + Cast(this._props.faceDoc[DocData].face_descriptors, listSpec('number'), null).push(cur_matching_face as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that } }); return false; @@ -107,12 +107,11 @@ export class FaceDocumentItem extends ObservableReactComponent { + deleteFaceDocument = undoable(() => { if (Doc.ActiveDashboard) { - Doc.ActiveDashboard[DocData].faceDocuments = new List(DocListCast(Doc.ActiveDashboard[DocData].faceDocuments).filter(doc => doc !== this._props.faceDoc)); + Doc.RemoveDocFromList(Doc.ActiveDashboard[DocData], 'faceDocuments', this._props.faceDoc); } - }; + }, 'remove face'); /** * Deletes a document from a Face Document's associated docs list. @@ -120,60 +119,44 @@ export class FaceDocumentItem extends ObservableReactComponent { - this._props.faceDoc[DocData].faceDescriptors = new List>( - (this._props.faceDoc[DocData].faceDescriptors as List>).filter(fd => !(doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] as List>).includes(fd)) + this._props.faceDoc[DocData].face_descriptors = new List>( + (this._props.faceDoc[DocData].face_descriptors as List>).filter(fd => !(doc[DocData][FaceRecognitionHandler.FaceField(doc, this._props.faceDoc)] as List>).includes(fd)) ); - doc[DocData][`FACE DESCRIPTOR - ${this._props.faceDoc[DocData].label}`] = new List>(); - this._props.faceDoc[DocData].associatedDocs = new List(DocListCast(this._props.faceDoc[DocData].associatedDocs).filter(associatedDoc => associatedDoc !== doc)); + doc[DocData][FaceRecognitionHandler.FaceField(doc, this._props.faceDoc)] = new List>(); + Doc.RemoveDocFromList(this._props.faceDoc[DocData], 'face_docList', doc); }; render() { return (
this.createDropTarget(ele!)}>
- +
-

{StrCast(this._props.faceDoc[DocData].label)}

+

{StrCast(this._props.faceDoc[DocData].face_label)}

this.onDisplayClick()} - icon={this._displayImages ? : } + icon={} color={MarqueeOptionsMenu.Instance.userColor} style={{ width: '19px' }} /> {this._displayImages ? (
- {DocListCast(this._props.faceDoc[DocData].associatedDocs).map(doc => { + {DocListCast(this._props.faceDoc[DocData].face_docList).map(doc => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return (
- { - await DocumentView.showDocument(doc, { willZoomCentered: true }); - }} - style={{ maxWidth: '60px', margin: '10px' }} - src={`${name}_o.${type}`} - /> + DocumentView.showDocument(doc, { willZoomCentered: true })} style={{ maxWidth: '60px', margin: '10px' }} src={`${name}_o.${type}`} />
- { - this.deleteAssociatedDoc(doc); - }} - icon={'x'} - style={{ width: '4px' }} - size={Size.XSMALL} - /> + this.deleteAssociatedDoc(doc)} icon={'x'} style={{ width: '4px' }} size={Size.XSMALL} />
); })}
- ) : ( -
- )} + ) : null}
); } @@ -190,9 +173,8 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { @computed get currentDocs() { if (Doc.ActiveDashboard) { return DocListCast(Doc.ActiveDashboard[DocData].faceDocuments); - } else { - return []; } + return []; } constructor(props: FieldViewProps) { @@ -204,9 +186,9 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { render() { return (
- {this.currentDocs.map(doc => { - return ; - })} + {this.currentDocs.map(doc => ( + + ))}
); } diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index d7a41df64..6fee076ee 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -1,28 +1,24 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -import similarity from 'compute-cosine-similarity'; import { action, computed, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { ClientUtils, lightOrDark, returnFalse } from '../../../../ClientUtils'; -import { intersectRect, numberRange } from '../../../../Utils'; -import { Doc, DocListCast, NumListCast, Opt } from '../../../../fields/Doc'; +import { intersectRect } from '../../../../Utils'; +import { Doc, DocListCast, Opt } from '../../../../fields/Doc'; import { AclAdmin, AclAugment, AclEdit, DocData } from '../../../../fields/DocSymbols'; import { Id } from '../../../../fields/FieldSymbols'; -import { InkData, InkField, InkTool } from '../../../../fields/InkField'; +import { InkTool } from '../../../../fields/InkField'; import { List } from '../../../../fields/List'; -import { RichTextField } from '../../../../fields/RichTextField'; -import { Cast, FieldValue, ImageCast, NumCast, StrCast } from '../../../../fields/Types'; +import { Cast, NumCast, StrCast } from '../../../../fields/Types'; import { ImageField } from '../../../../fields/URLField'; import { GetEffectiveAcl } from '../../../../fields/util'; -import { gptGetEmbedding, gptImageLabel } from '../../../apis/gpt/GPT'; -import { CognitiveServices } from '../../../cognitive_services/CognitiveServices'; import { DocUtils } from '../../../documents/DocUtils'; -import { CollectionViewType, DocumentType } from '../../../documents/DocumentTypes'; +import { DocumentType } from '../../../documents/DocumentTypes'; import { Docs, DocumentOptions } from '../../../documents/Documents'; import { SnappingManager, freeformScrollMode } from '../../../util/SnappingManager'; import { Transform } from '../../../util/Transform'; import { UndoManager, undoBatch } from '../../../util/UndoManager'; import { ContextMenu } from '../../ContextMenu'; +import { MainView } from '../../MainView'; import { ObservableReactComponent } from '../../ObservableReactComponent'; import { MarqueeViewBounds } from '../../PinFuncs'; import { PreviewCursor } from '../../PreviewCursor'; @@ -30,15 +26,10 @@ import { DocumentView } from '../../nodes/DocumentView'; import { OpenWhere } from '../../nodes/OpenWhere'; import { pasteImageBitmap } from '../../nodes/WebBoxRenderer'; import { FormattedTextBox } from '../../nodes/formattedText/FormattedTextBox'; -import { CollectionCardView } from '../CollectionCardDeckView'; import { SubCollectionViewProps } from '../CollectionSubView'; -import { CollectionFreeFormView } from './CollectionFreeFormView'; -import { ImageLabelHandler } from './ImageLabelHandler'; +import { ImageLabelBoxData } from './ImageLabelBox'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; import './MarqueeView.scss'; -import { MainView } from '../../MainView'; -import { ImageLabelBox, ImageLabelBoxData } from './ImageLabelBox'; -import { SearchBox } from '../../search/SearchBox'; interface MarqueeViewProps { getContainerTransform: () => Transform; @@ -68,7 +59,7 @@ export class MarqueeView extends ObservableReactComponent { - const selected = this.marqueeSelect(false); - if (e instanceof KeyboardEvent ? e.key === 'i' : true) { - const inks = selected.filter(s => s.type === DocumentType.INK); - const setDocs = selected.filter(s => s.type === DocumentType.RTF && s.color); - const sets = setDocs.map(sd => Cast(sd.data, RichTextField)?.Text as string); - const colors = setDocs.map(sd => FieldValue(sd.color) as string); - const wordToColor = new Map(); - sets.forEach((st: string, i: number) => st.split(',').forEach(word => wordToColor.set(word, colors[i]))); - const strokes: InkData[] = []; - inks.filter(i => Cast(i.data, InkField)).forEach(i => { - const d = Cast(i.data, InkField, null); - const left = Math.min(...(d?.inkData.map(pd => pd.X) ?? [0])); - const top = Math.min(...(d?.inkData.map(pd => pd.Y) ?? [0])); - strokes.push(d.inkData.map(pd => ({ X: pd.X + NumCast(i.x) - left, Y: pd.Y + NumCast(i.y) - top }))); - }); - CognitiveServices.Inking.Appliers.InterpretStrokes(strokes).then(results => { - // const wordResults = results.filter((r: any) => r.category === "inkWord"); - // for (const word of wordResults) { - // const indices: number[] = word.strokeIds; - // indices.forEach(i => { - // if (wordToColor.has(word.recognizedText.toLowerCase())) { - // inks[i].color = wordToColor.get(word.recognizedText.toLowerCase()); - // } - // else { - // for (const alt of word.alternates) { - // if (wordToColor.has(alt.recognizedString.toLowerCase())) { - // inks[i].color = wordToColor.get(alt.recognizedString.toLowerCase()); - // break; - // } - // } - // } - // }) - // } - // const wordResults = results.filter((r: any) => r.category === "inkWord"); - // for (const word of wordResults) { - // const indices: number[] = word.strokeIds; - // indices.forEach(i => { - // const otherInks: Doc[] = []; - // indices.forEach(i2 => i2 !== i && otherInks.push(inks[i2])); - // inks[i].relatedInks = new List(otherInks); - // const uniqueColors: string[] = []; - // Array.from(wordToColor.values()).forEach(c => uniqueColors.indexOf(c) === -1 && uniqueColors.push(c)); - // inks[i].alternativeColors = new List(uniqueColors); - // if (wordToColor.has(word.recognizedText.toLowerCase())) { - // inks[i].color = wordToColor.get(word.recognizedText.toLowerCase()); - // } - // else if (word.alternates) { - // for (const alt of word.alternates) { - // if (wordToColor.has(alt.recognizedString.toLowerCase())) { - // inks[i].color = wordToColor.get(alt.recognizedString.toLowerCase()); - // break; - // } - // } - // } - // }); - // } - const lines = results.filter((r: any) => r.category === 'line'); - const text = lines.map((l: any) => l.recognizedText).join('\r\n'); - this._props.addDocument?.(Docs.Create.TextDocument(text, { _width: this.Bounds.width, _height: this.Bounds.height, x: this.Bounds.left + this.Bounds.width, y: this.Bounds.top, title: text })); - }); - } - }); - @undoBatch summary = action(() => { const selected = this.marqueeSelect(false).map(d => { @@ -704,8 +630,8 @@ export class MarqueeView extends ObservableReactComponent {' '} @@ -714,7 +640,7 @@ export class MarqueeView extends ObservableReactComponent s + pt[0] + ',' + pt[1] + ' ', '')} fill="none" - stroke={lightOrDark(this._props.Document?.backgroundColor ?? 'white')} + stroke={lightOrDark((this._props.Document?.backgroundColor as string) ?? 'white')} strokeWidth="1" strokeDasharray="3" /> @@ -753,7 +679,6 @@ export class MarqueeView extends ObservableReactComponent { diff --git a/src/client/views/nodes/FaceRectangles.tsx b/src/client/views/nodes/FaceRectangles.tsx index ade4225d9..19aa90a8b 100644 --- a/src/client/views/nodes/FaceRectangles.tsx +++ b/src/client/views/nodes/FaceRectangles.tsx @@ -4,6 +4,7 @@ import { Doc, DocListCast } from '../../../fields/Doc'; import { Id } from '../../../fields/FieldSymbols'; import { Cast, NumCast } from '../../../fields/Types'; import FaceRectangle from './FaceRectangle'; +import { FaceRecognitionHandler } from '../search/FaceRecognitionHandler'; interface FaceRectanglesProps { document: Doc; @@ -19,7 +20,7 @@ export interface RectangleTemplate { @observer export class FaceRectangles extends React.Component { render() { - const faces = DocListCast(this.props.document.faces); + const faces = DocListCast(this.props.document[FaceRecognitionHandler.FacesField(this.props.document)]); const templates: RectangleTemplate[] = faces.map(faceDoc => { const rectangle = Cast(faceDoc.faceRectangle, Doc) as Doc; const style = { diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 29ca6e797..dc271fe73 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -1,42 +1,46 @@ import * as faceapi from 'face-api.js'; import { FaceMatcher } from 'face-api.js'; +import { computed } from 'mobx'; import { Doc, DocListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { List } from '../../../fields/List'; +import { listSpec } from '../../../fields/Schema'; import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; -import { DocumentManager } from '../../util/DocumentManager'; -import { computed } from 'mobx'; import { DocumentType } from '../../documents/DocumentTypes'; -import { listSpec } from '../../../fields/Schema'; +import { DocumentManager } from '../../util/DocumentManager'; /** * A class that handles face recognition. */ export class FaceRecognitionHandler { static _instance: FaceRecognitionHandler; - private loadedModels: boolean = false; - @computed get examinedFaceDocs() { - return DocListCast(Doc.UserDoc().examinedFaceDocs); - } - processingDocs: Set = new Set(); - pendingLoadDocs: Doc[] = []; + private _loadedModels: boolean = false; + private _processingDocs: Set = new Set(); + private _pendingLoadDocs: Doc[] = []; + + public static FaceField = (target: Doc, doc: Doc) => `${Doc.LayoutFieldKey(target)}_${doc.face_label}`; + public static FacesField = (target: Doc) => `${Doc.LayoutFieldKey(target)}_Faces`; constructor() { FaceRecognitionHandler._instance = this; - this.loadModels().then(() => this.pendingLoadDocs.forEach(this.findMatches)); + this.loadModels().then(() => this._pendingLoadDocs.forEach(this.findMatches)); DocumentManager.Instance.AddAnyViewRenderedCB(dv => FaceRecognitionHandler.Instance.findMatches(dv.Document)); } + @computed get examinedFaceDocs() { + return DocListCast(Doc.UserDoc().examinedFaceDocs); + } + /** * Loads the face detection models. */ - async loadModels() { + loadModels = async () => { const MODEL_URL = `/models`; await faceapi.loadFaceDetectionModel(MODEL_URL); await faceapi.loadFaceLandmarkModel(MODEL_URL); await faceapi.loadFaceRecognitionModel(MODEL_URL); - this.loadedModels = true; - } + this._loadedModels = true; + }; public static get Instance() { return FaceRecognitionHandler._instance ?? new FaceRecognitionHandler(); @@ -47,8 +51,8 @@ export class FaceRecognitionHandler { * @param doc The document being analyzed. */ public findMatches = async (doc: Doc) => { - if (!this.loadedModels || !Doc.ActiveDashboard) { - this.pendingLoadDocs.push(doc); + if (!this._loadedModels || !Doc.ActiveDashboard) { + this._pendingLoadDocs.push(doc); return; } @@ -59,12 +63,12 @@ export class FaceRecognitionHandler { const imgUrl = ImageCast(doc[Doc.LayoutFieldKey(doc)]); // If the doc isn't an image or currently already been examined or is being processed, stop examining the document. - if (!imgUrl || this.examinedFaceDocs.includes(doc) || this.processingDocs.has(doc)) { + if (!imgUrl || this.examinedFaceDocs.includes(doc) || this._processingDocs.has(doc)) { return; } // Mark the document as being processed. - this.processingDocs.add(doc); + this._processingDocs.add(doc); // Get the image the document contains and analyze for faces. const [name, type] = imgUrl.url.href.split('.'); @@ -74,7 +78,7 @@ export class FaceRecognitionHandler { const fullFaceDescriptions = await faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors(); - doc[DocData].faces = new List>(); + doc[DocData][FaceRecognitionHandler.FacesField(doc)] = new List>(); // For each face detected, find a match. for (const fd of fullFaceDescriptions) { @@ -84,34 +88,36 @@ export class FaceRecognitionHandler { if (match) { // If a matching Face Document has been found, add the document to the Face Document's associated docs and append the face // descriptor to the Face Document's descriptor list. - Doc.AddDocToList(match, 'associatedDocs', doc); - Cast(match.faceDescriptors, listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + Doc.AddDocToList(match, 'face_docList', doc); + Cast(match.face_descriptors, listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that } else { // If a matching Face Document has not been found, create a new Face Document. Doc.UserDoc().faceDocNum = NumCast(Doc.UserDoc().faceDocNum) + 1; const newFaceDocument = new Doc(); - newFaceDocument.label = `Face ${Doc.UserDoc().faceDocNum}`; - newFaceDocument.associatedDocs = new List([doc]); - newFaceDocument.faceDescriptors = new List>([converted_list]); + newFaceDocument.title = `Face ${Doc.UserDoc().faceDocNum}`; + newFaceDocument.face = ''; // just to make prettyprinting look better + newFaceDocument.face_label = `Face${Doc.UserDoc().faceDocNum}`; + newFaceDocument.face_docList = new List([doc]); + newFaceDocument.face_descriptors = new List>([converted_list]); Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'faceDocuments', newFaceDocument); match = newFaceDocument; } // Assign a field in the document of the matching Face Document. - const faceDescripField = `FACE DESCRIPTOR - ${match[DocData].label}`; + const faceDescripField = FaceRecognitionHandler.FaceField(doc, match); if (doc[DocData][faceDescripField]) { Cast(doc[DocData][faceDescripField], listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that } else { doc[DocData][faceDescripField] = new List>([converted_list]); } - Cast(doc[DocData].faces, listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + Cast(doc[DocData][FaceRecognitionHandler.FacesField(doc)], listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that Doc.AddDocToList(Doc.UserDoc(), 'examinedFaceDocs', doc); } - this.processingDocs.delete(doc); + this._processingDocs.delete(doc); }; /** @@ -125,14 +131,14 @@ export class FaceRecognitionHandler { } const faceDescriptors: faceapi.LabeledFaceDescriptors[] = DocListCast(Doc.ActiveDashboard[DocData].faceDocuments).map(faceDocument => { - const float32Array = (faceDocument[DocData].faceDescriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); - return new faceapi.LabeledFaceDescriptors(StrCast(faceDocument[DocData].label), float32Array); + const float32Array = (faceDocument[DocData].face_descriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); + return new faceapi.LabeledFaceDescriptors(StrCast(faceDocument[DocData].face_label), float32Array); }); const faceMatcher = new FaceMatcher(faceDescriptors, 0.6); const match = faceMatcher.findBestMatch(cur_descriptor); if (match.label !== 'unknown') { for (const doc of DocListCast(Doc.ActiveDashboard[DocData].faceDocuments)) { - if (doc[DocData].label === match.label) { + if (doc[DocData].face_label === match.label) { return doc; } } -- cgit v1.2.3-70-g09d2 From 69e9940f4fa24fd1ab1d9715f60b27d9e1f1221a Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 20 Aug 2024 21:34:58 -0400 Subject: from last --- src/client/views/collections/CollectionView.tsx | 3 +-- src/client/views/nodes/ImageBox.tsx | 8 +------- 2 files changed, 2 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionView.tsx b/src/client/views/collections/CollectionView.tsx index 66c4896c0..ab93abab6 100644 --- a/src/client/views/collections/CollectionView.tsx +++ b/src/client/views/collections/CollectionView.tsx @@ -17,6 +17,7 @@ import { ViewBoxAnnotatableComponent } from '../DocComponent'; import { FieldView } from '../nodes/FieldView'; import { OpenWhere } from '../nodes/OpenWhere'; import { CollectionCalendarView } from './CollectionCalendarView'; +import { CollectionCardView } from './CollectionCardDeckView'; import { CollectionCarousel3DView } from './CollectionCarousel3DView'; import { CollectionCarouselView } from './CollectionCarouselView'; import { CollectionDockingView } from './CollectionDockingView'; @@ -33,8 +34,6 @@ import { CollectionLinearView } from './collectionLinear'; import { CollectionMulticolumnView } from './collectionMulticolumn/CollectionMulticolumnView'; import { CollectionMultirowView } from './collectionMulticolumn/CollectionMultirowView'; import { CollectionSchemaView } from './collectionSchema/CollectionSchemaView'; -import { CollectionCardView } from './CollectionCardDeckView'; -import { DocData } from '../../../fields/DocSymbols'; @observer export class CollectionView extends ViewBoxAnnotatableComponent() { diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index 7d8a4ee49..d0a7fc6ac 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -1,6 +1,5 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; -import zIndex from '@mui/material/styles/zIndex'; import { Colors } from 'browndash-components'; import { action, computed, IReactionDisposer, makeObservable, observable, ObservableMap, reaction } from 'mobx'; import { observer } from 'mobx-react'; @@ -11,7 +10,6 @@ import { Doc, DocListCast, Opt } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { InkTool } from '../../../fields/InkField'; -import { List } from '../../../fields/List'; import { ObjectField } from '../../../fields/ObjectField'; import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; import { ImageField } from '../../../fields/URLField'; @@ -22,6 +20,7 @@ import { DocumentType } from '../../documents/DocumentTypes'; import { DocUtils } from '../../documents/DocUtils'; import { Networking } from '../../Network'; import { DragManager } from '../../util/DragManager'; +import { SnappingManager } from '../../util/SnappingManager'; import { undoBatch } from '../../util/UndoManager'; import { CollectionFreeFormView } from '../collections/collectionFreeForm/CollectionFreeFormView'; import { ContextMenu } from '../ContextMenu'; @@ -37,7 +36,6 @@ import { FieldView, FieldViewProps } from './FieldView'; import { FocusViewOptions } from './FocusViewOptions'; import './ImageBox.scss'; import { OpenWhere } from './OpenWhere'; -import { SnappingManager } from '../../util/SnappingManager'; export class ImageEditorData { // eslint-disable-next-line no-use-before-define @@ -176,10 +174,6 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { Doc.SetNativeHeight(this.dataDoc, Doc.NativeHeight(targetDoc), this.fieldKey); } } - const layoutDoc = de.complete.docDragData?.draggedDocuments[0]; - const targetField = Doc.LayoutFieldKey(layoutDoc); - const targetDoc = layoutDoc[DocData]; - console.log(targetDoc[targetField]); added === false && e.preventDefault(); added !== undefined && e.stopPropagation(); return added; -- cgit v1.2.3-70-g09d2 From d5ae46421b34d688817e059257578906ff2f12a9 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 20 Aug 2024 21:46:56 -0400 Subject: fixing lint errors --- .../collectionFreeForm/MarqueeOptionsMenu.tsx | 4 ++-- .../views/collections/collectionFreeForm/MarqueeView.tsx | 16 ++++++++++------ src/server/server_Initialization.ts | 9 +++++++++ 3 files changed, 21 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx b/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx index b94a22d04..44c916ab9 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeOptionsMenu.tsx @@ -18,10 +18,10 @@ export class MarqueeOptionsMenu extends AntimodeMenu { public showMarquee: () => void = unimplementedFunction; public hideMarquee: () => void = unimplementedFunction; public pinWithView: (e: KeyboardEvent | React.PointerEvent | undefined) => void = unimplementedFunction; - public classifyImages: (e: React.MouseEvent | undefined) => void = unimplementedFunction; + public classifyImages: () => void = unimplementedFunction; public groupImages: () => void = unimplementedFunction; public isShown = () => this._opacity > 0; - constructor(props: any) { + constructor(props: AntimodeMenuProps) { super(props); makeObservable(this); MarqueeOptionsMenu.Instance = this; diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index 6fee076ee..6cc75aa4b 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -156,6 +156,7 @@ export class MarqueeView extends ObservableReactComponent + // eslint-disable-next-line @typescript-eslint/no-explicit-any pasteImageBitmap((data: any, error: any) => { error && console.log(error); data && @@ -432,7 +433,7 @@ export class MarqueeView extends ObservableReactComponent { + classifyImages = action(async () => { const groupButton = DocListCast(Doc.MyLeftSidebarMenu.data).find(d => d.target === Doc.MyImageGrouper); if (groupButton) { this._selectedDocs = this.marqueeSelect(false, DocumentType.IMG); @@ -515,13 +516,14 @@ export class MarqueeView extends ObservableReactComponent { - if (this._commandExecuted || (e as any).propagationIsStopped) { + const ee = e as unknown as KeyboardEvent & { propagationIsStopped?: boolean }; + if (this._commandExecuted || ee.propagationIsStopped) { return; } if (e.key === 'Backspace' || e.key === 'Delete' || e.key === 'd' || e.key === 'h') { this._commandExecuted = true; e.stopPropagation(); - (e as any).propagationIsStopped = true; + ee.propagationIsStopped = true; this.delete(e, e.key === 'h'); e.stopPropagation(); } @@ -529,7 +531,7 @@ export class MarqueeView extends ObservableReactComponent) => { - if ((e as any).handlePan || this._props.isAnnotationOverlay) return; - (e as any).handlePan = true; + const ee = e as CustomEvent & { handlePan?: boolean }; + if (ee.handlePan || this._props.isAnnotationOverlay) return; + ee.handlePan = true; const bounds = this.MarqueeRef?.getBoundingClientRect(); if (!this._props.Document._freeform_noAutoPan && !this._props.renderDepth && bounds) { @@ -682,6 +685,7 @@ export class MarqueeView extends ObservableReactComponent { + // eslint-disable-next-line @typescript-eslint/no-explicit-any r?.addEventListener('dashDragMovePause', this.onDragMovePause as any); this.MarqueeRef = r; }} diff --git a/src/server/server_Initialization.ts b/src/server/server_Initialization.ts index 2190e27c7..8d3afc3ad 100644 --- a/src/server/server_Initialization.ts +++ b/src/server/server_Initialization.ts @@ -113,6 +113,7 @@ function registerEmbeddedBrowseRelativePathHandler(server: express.Express) { }); } +// eslint-disable-next-line @typescript-eslint/no-explicit-any function proxyServe(req: any, requrl: string, response: any) { // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires const htmlBodyMemoryStream = new (require('memorystream'))(); @@ -137,8 +138,10 @@ function proxyServe(req: any, requrl: string, response: any) { response.send(header?.includes('gzip') ? zlib.gzipSync(htmlText) : htmlText); } else { req.pipe(request(requrl)) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('requrl ', e)) .pipe(response) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('response pipe error', e)); console.log('EMPTY body:' + req.url); } @@ -147,14 +150,17 @@ function proxyServe(req: any, requrl: string, response: any) { } } else { req.pipe(htmlBodyMemoryStream) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('html body memorystream error', e)) .pipe(response) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('html body memory stream response error', e)); } }; const retrieveHTTPBody = () => { // req.headers.cookie = ''; req.pipe(request(requrl)) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => { console.log(`CORS url error: ${requrl}`, e); response.send(` @@ -163,6 +169,7 @@ function proxyServe(req: any, requrl: string, response: any) {

${e}

`); }) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('response', (res: any) => { res.headers; const headers = Object.keys(res.headers); @@ -187,6 +194,7 @@ function proxyServe(req: any, requrl: string, response: any) { }) .on('end', sendModifiedBody) .pipe(htmlBodyMemoryStream) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('http body pipe error', e)); }; retrieveHTTPBody(); @@ -244,6 +252,7 @@ export default async function InitializeServer(routeSetter: RouteSetter) { app.use(whm(compiler)); app.get(/^\/+$/, (req, res) => res.redirect(req.user ? '/home' : '/login')); // target urls that consist of one or more '/'s with nothing in between app.use(express.static(publicDirectory, { setHeaders: res => res.setHeader('Access-Control-Allow-Origin', '*') })); // all urls that start with dash's public directory: /files/ (e.g., /files/images, /files/audio, etc) + // eslint-disable-next-line @typescript-eslint/no-explicit-any app.use(cors({ origin: (_origin: any, callback: any) => callback(null, true) })); registerAuthenticationRoutes(app); // this adds routes to authenticate a user (login, etc) registerCorsProxy(app); // this adds a /corsProxy/ route to allow clients to get to urls that would otherwise be blocked by cors policies -- cgit v1.2.3-70-g09d2 From 19a947cbd253ff7fb9da88c27af7645219446d0a Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 20 Aug 2024 22:02:54 -0400 Subject: from last --- .eslintrc.json | 2 +- src/client/documents/DocUtils.ts | 2 +- src/client/views/nodes/FaceRectangle.tsx | 34 ---------------------- src/client/views/nodes/FaceRectangles.tsx | 47 ------------------------------- src/server/server_Initialization.ts | 2 +- 5 files changed, 3 insertions(+), 84 deletions(-) delete mode 100644 src/client/views/nodes/FaceRectangle.tsx delete mode 100644 src/client/views/nodes/FaceRectangles.tsx (limited to 'src') diff --git a/.eslintrc.json b/.eslintrc.json index 6202561d5..d4f43f04c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -40,6 +40,7 @@ "react/jsx-filename-extension": [2, { "extensions": [".js", ".jsx", ".ts", ".tsx"] }], "import/prefer-default-export": "off", "no-unused-expressions": "off", + "@typescript-eslint/no-unused-expressions": "off", "prefer-template": "off", "no-inner-declarations": "off", "no-plusplus": "off", @@ -54,7 +55,6 @@ "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": "error", "@typescript-eslint/no-namespace": 0, - "@typescript-eslint/no-unused-expressions": "off", "react/destructuring-assignment": 0, "no-restricted-globals": ["error", "event"], "no-param-reassign": ["error", { "props": false }], diff --git a/src/client/documents/DocUtils.ts b/src/client/documents/DocUtils.ts index 35d835f1f..0168e0a3b 100644 --- a/src/client/documents/DocUtils.ts +++ b/src/client/documents/DocUtils.ts @@ -35,7 +35,7 @@ import { TaskCompletionBox } from '../views/nodes/TaskCompletedBox'; import { DocumentType } from './DocumentTypes'; import { Docs, DocumentOptions } from './Documents'; -// eslint-disable-next-line @typescript-eslint/no-var-requires +// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports const { DFLT_IMAGE_NATIVE_DIM } = require('../views/global/globalCssVariables.module.scss'); // prettier-ignore const defaultNativeImageDim = Number(DFLT_IMAGE_NATIVE_DIM.replace('px', '')); diff --git a/src/client/views/nodes/FaceRectangle.tsx b/src/client/views/nodes/FaceRectangle.tsx deleted file mode 100644 index 2b66b83fe..000000000 --- a/src/client/views/nodes/FaceRectangle.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { observable, runInAction } from 'mobx'; -import { observer } from 'mobx-react'; -import * as React from 'react'; -import { RectangleTemplate } from './FaceRectangles'; - -@observer -export default class FaceRectangle extends React.Component<{ rectangle: RectangleTemplate }> { - @observable private opacity = 0; - - componentDidMount() { - setTimeout( - () => - runInAction(() => { - this.opacity = 1; - }), - 500 - ); - } - - render() { - const { rectangle } = this.props; - return ( -
- ); - } -} diff --git a/src/client/views/nodes/FaceRectangles.tsx b/src/client/views/nodes/FaceRectangles.tsx deleted file mode 100644 index 19aa90a8b..000000000 --- a/src/client/views/nodes/FaceRectangles.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { observer } from 'mobx-react'; -import * as React from 'react'; -import { Doc, DocListCast } from '../../../fields/Doc'; -import { Id } from '../../../fields/FieldSymbols'; -import { Cast, NumCast } from '../../../fields/Types'; -import FaceRectangle from './FaceRectangle'; -import { FaceRecognitionHandler } from '../search/FaceRecognitionHandler'; - -interface FaceRectanglesProps { - document: Doc; - color: string; - backgroundColor: string; -} - -export interface RectangleTemplate { - id: string; - style: Partial; -} - -@observer -export class FaceRectangles extends React.Component { - render() { - const faces = DocListCast(this.props.document[FaceRecognitionHandler.FacesField(this.props.document)]); - const templates: RectangleTemplate[] = faces.map(faceDoc => { - const rectangle = Cast(faceDoc.faceRectangle, Doc) as Doc; - const style = { - top: NumCast(rectangle.top), - left: NumCast(rectangle.left), - width: NumCast(rectangle.width), - height: NumCast(rectangle.height), - backgroundColor: `${this.props.backgroundColor}33`, - border: `solid 2px ${this.props.color}`, - } as React.CSSProperties; - return { - id: rectangle[Id], - style: style, - }; - }); - return ( -
- {templates.map(rectangle => ( - - ))} -
- ); - } -} diff --git a/src/server/server_Initialization.ts b/src/server/server_Initialization.ts index 8d3afc3ad..97c63a93e 100644 --- a/src/server/server_Initialization.ts +++ b/src/server/server_Initialization.ts @@ -115,7 +115,7 @@ function registerEmbeddedBrowseRelativePathHandler(server: express.Express) { // eslint-disable-next-line @typescript-eslint/no-explicit-any function proxyServe(req: any, requrl: string, response: any) { - // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires + // eslint-disable-next-line global-require, @typescript-eslint/no-require-imports const htmlBodyMemoryStream = new (require('memorystream'))(); let wasinBrFormat = false; const sendModifiedBody = () => { -- cgit v1.2.3-70-g09d2 From 166d40bd856b85bd4bbde9f9ffe2c1ec0fb648d5 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 21 Aug 2024 10:57:53 -0400 Subject: more lint fixes after update --- eslint.config.mjs | 45 ++++++++++++++++++++++++- package-lock.json | 46 ++++++++++---------------- src/ClientUtils.ts | 1 - src/ServerUtils.ts | 1 - src/client/Network.ts | 2 +- src/client/documents/DocUtils.ts | 3 +- src/client/documents/Documents.ts | 4 +-- src/client/util/DictationManager.ts | 4 --- src/client/util/DragManager.ts | 1 - src/client/util/History.ts | 1 - src/client/util/InteractionUtils.tsx | 1 - src/client/util/ScriptingGlobals.ts | 2 +- src/client/util/SearchUtil.ts | 1 - src/client/util/SerializationHelper.ts | 1 - src/client/util/UndoManager.ts | 1 - src/client/views/DocViewUtils.ts | 1 - src/pen-gestures/GestureUtils.ts | 1 - src/server/DashStats.ts | 2 +- src/server/DashUploadUtils.ts | 1 - src/server/Message.ts | 1 - src/server/Search.ts | 1 - src/server/SharedMediaTypes.ts | 2 -- src/server/apis/google/GoogleApiServerUtils.ts | 2 +- src/server/server_Initialization.ts | 9 +++++ src/server/websocket.ts | 1 - 25 files changed, 77 insertions(+), 58 deletions(-) (limited to 'src') diff --git a/eslint.config.mjs b/eslint.config.mjs index b35601abd..04655ce13 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -3,4 +3,47 @@ import pluginReactConfig from 'eslint-plugin-react/configs/recommended.js'; import globals from 'globals'; import tseslint from 'typescript-eslint'; -export default [{ languageOptions: { globals: { ...globals.browser, ...globals.node } } }, pluginJs.configs.recommended, ...tseslint.configs.recommended, pluginReactConfig]; +export default [ + { + languageOptions: { globals: { ...globals.browser, ...globals.node } }, + }, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + { + rules: { + 'node/no-missing-import': 0, + 'no-console': 'off', + 'func-names': 'off', + 'no-process-exit': 'off', + 'object-shorthand': 'off', + 'class-methods-use-this': 'off', + 'single-quote': 'off', + 'max-classes-per-file': 0, + + 'react/jsx-filename-extension': [ + 2, + { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + ], + + 'import/prefer-default-export': 'off', + 'no-unused-expressions': 'off', + 'prefer-template': 'off', + 'no-inner-declarations': 'off', + 'no-plusplus': 'off', + 'no-multi-assign': 'off', + 'no-underscore-dangle': 'off', + 'no-nested-ternary': 'off', + 'lines-between-class-members': 'off', + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': 'warn', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-namespace': 'off', + 'react/destructuring-assignment': 0, + 'no-restricted-globals': ['error', 'event'], + }, + }, + pluginReactConfig, +]; diff --git a/package-lock.json b/package-lock.json index 41922228a..565463980 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2423,14 +2423,14 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz", - "integrity": "sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ==", + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.12.0", "@emotion/cache": "^11.13.0", - "@emotion/serialize": "^1.3.0", + "@emotion/serialize": "^1.3.1", "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", "@emotion/utils": "^1.4.0", "@emotion/weak-memoize": "^0.4.0", @@ -2446,13 +2446,13 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.0.tgz", - "integrity": "sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.1.tgz", + "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==", "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", - "@emotion/unitless": "^0.9.0", + "@emotion/unitless": "^0.10.0", "@emotion/utils": "^1.4.0", "csstype": "^3.0.2" } @@ -2491,9 +2491,9 @@ "peer": true }, "node_modules/@emotion/unitless": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.9.0.tgz", - "integrity": "sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.1.0", @@ -17245,9 +17245,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.12.tgz", - "integrity": "sha512-tIhPkdlEoCL1Y+PToq3zRNehUaKp3wBX/sr7aclAWdIWjvqAe/Im/H0SiCM4c1Q8BLPHCdoJTol+ZblflydehA==" + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" }, "node_modules/elkjs": { "version": "0.9.3", @@ -20304,14 +20304,6 @@ "node": ">= 12.20" } }, - "node_modules/formdata-node/node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", - "engines": { - "node": ">= 14" - } - }, "node_modules/formidable": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", @@ -41328,13 +41320,11 @@ } }, "node_modules/web-streams-polyfill": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0.tgz", - "integrity": "sha512-0zJXHRAYEjM2tUfZ2DiSOHAa2aw1tisnnhU3ufD57R8iefL+DcdJyRBRyJpG+NUimDgbTI/lH+gAE1PAvV3Cgw==", - "optional": true, - "peer": true, + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", "engines": { - "node": ">= 8" + "node": ">= 14" } }, "node_modules/web-worker": { diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index fc048b155..55801df81 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -82,7 +82,6 @@ export function returnEmptyFilter() { return [] as string[]; } -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace ClientUtils { export const CLICK_TIME = 300; export const DRAG_THRESHOLD = 4; diff --git a/src/ServerUtils.ts b/src/ServerUtils.ts index 8b2d0b9f6..715341ab3 100644 --- a/src/ServerUtils.ts +++ b/src/ServerUtils.ts @@ -2,7 +2,6 @@ import { Socket } from 'socket.io'; import { Message } from './server/Message'; import { Utils } from './Utils'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace ServerUtils { export function Emit(socket: Socket, message: Message, args: T) { Utils.log('Emit', message.Name, args, false); diff --git a/src/client/Network.ts b/src/client/Network.ts index 8876d8190..6c60c4151 100644 --- a/src/client/Network.ts +++ b/src/client/Network.ts @@ -8,7 +8,7 @@ import { Upload } from '../server/SharedMediaTypes'; * mainly provides methods that the client can use to begin the process of * interacting with the server, such as fetching or uploading files. */ -// eslint-disable-next-line @typescript-eslint/no-namespace + export namespace Networking { export async function FetchFromServer(relativeRoute: string) { return (await fetch(relativeRoute)).text(); diff --git a/src/client/documents/DocUtils.ts b/src/client/documents/DocUtils.ts index a503d732b..5ee7d0f9c 100644 --- a/src/client/documents/DocUtils.ts +++ b/src/client/documents/DocUtils.ts @@ -40,7 +40,6 @@ const { DFLT_IMAGE_NATIVE_DIM } = require('../views/global/globalCssVariables.mo const defaultNativeImageDim = Number(DFLT_IMAGE_NATIVE_DIM.replace('px', '')); -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DocUtils { function matchFieldValue(doc: Doc, key: string, valueIn: unknown): boolean { let value = valueIn; @@ -467,7 +466,7 @@ export namespace DocUtils { .concat(userTypes) .concat(clickFuncs) .map(btnDoc => (btnDoc.dragFactory as Doc) || btnDoc) - .filter(doc => doc.isTemplateDoc); + .filter(d => d.isTemplateDoc); // bcz: this is hacky -- want to have different templates be applied depending on the "type" of a document. but type is not reliable and there could be other types of template searches so this should be generalized // first try to find a template that matches the specific document type (_). otherwise, fallback to a general match on !docLayoutTemplate && diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index b108b73db..41c6ce39b 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -487,9 +487,7 @@ export class DocumentOptions { export const DocOptions = new DocumentOptions(); -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace Docs { - // eslint-disable-next-line @typescript-eslint/no-namespace export namespace Prototypes { type LayoutSource = { LayoutString: (key: string) => string }; type PrototypeTemplate = { @@ -647,7 +645,7 @@ export namespace Docs { * Encapsulates the factory used to create new document instances * delegated from top-level prototypes */ - // eslint-disable-next-line @typescript-eslint/no-namespace + export namespace Create { /** * This function receives the relevant document prototype and uses diff --git a/src/client/util/DictationManager.ts b/src/client/util/DictationManager.ts index 16a0df120..a0e1413b6 100644 --- a/src/client/util/DictationManager.ts +++ b/src/client/util/DictationManager.ts @@ -32,14 +32,12 @@ import { UndoManager } from './UndoManager'; * to add new commands as classes or components are constructed. */ -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DictationManager { /** * Some type maneuvering to access Webkit's built-in * speech recognizer. */ - // eslint-disable-next-line @typescript-eslint/no-namespace namespace CORE { export interface IWindow extends Window { webkitSpeechRecognition: { new (): SpeechRecognition }; @@ -48,7 +46,6 @@ export namespace DictationManager { const { webkitSpeechRecognition }: CORE.IWindow = window as unknown as CORE.IWindow; export const placeholder = 'Listening...'; - // eslint-disable-next-line @typescript-eslint/no-namespace export namespace Controls { export const Infringed = 'unable to process: dictation manager still involved in previous session'; const browser = (() => { @@ -230,7 +227,6 @@ export namespace DictationManager { }; } - // eslint-disable-next-line @typescript-eslint/no-namespace export namespace Commands { export const dictationFadeDuration = 2000; diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts index c237a75de..7db13689d 100644 --- a/src/client/util/DragManager.ts +++ b/src/client/util/DragManager.ts @@ -70,7 +70,6 @@ export function SetupDrag(_reference: React.RefObject, docFunc: () return onItemDown; } -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DragManager { export const dragClassName = 'collectionFreeFormDocumentView-container'; let dragDiv: HTMLDivElement; diff --git a/src/client/util/History.ts b/src/client/util/History.ts index 067c28c6b..0d0c056a4 100644 --- a/src/client/util/History.ts +++ b/src/client/util/History.ts @@ -10,7 +10,6 @@ import { OmitKeys, ClientUtils } from '../../ClientUtils'; import { DocServer } from '../DocServer'; import { DashboardView } from '../views/DashboardView'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace HistoryUtil { export interface DocInitializerList { [key: string]: string | number; diff --git a/src/client/util/InteractionUtils.tsx b/src/client/util/InteractionUtils.tsx index f3ede596d..4231c2ca8 100644 --- a/src/client/util/InteractionUtils.tsx +++ b/src/client/util/InteractionUtils.tsx @@ -4,7 +4,6 @@ import { Utils } from '../../Utils'; import { Gestures } from '../../pen-gestures/GestureTypes'; import './InteractionUtils.scss'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace InteractionUtils { export const MOUSETYPE = 'mouse'; export const TOUCHTYPE = 'touch'; diff --git a/src/client/util/ScriptingGlobals.ts b/src/client/util/ScriptingGlobals.ts index 4a1a70633..444e8fc0a 100644 --- a/src/client/util/ScriptingGlobals.ts +++ b/src/client/util/ScriptingGlobals.ts @@ -6,7 +6,7 @@ const _scriptingGlobals: { [name: string]: unknown } = {}; const _scriptingDescriptions: { [name: string]: string } = {}; const _scriptingParams: { [name: string]: string } = {}; export let scriptingGlobals: { [name: string]: unknown } = _scriptingGlobals; -// eslint-disable-next-line @typescript-eslint/no-namespace + export namespace ScriptingGlobals { export function getGlobals() { return Object.keys(_scriptingGlobals); } // prettier-ignore export function getGlobalObj() { return _scriptingGlobals; } // prettier-ignore diff --git a/src/client/util/SearchUtil.ts b/src/client/util/SearchUtil.ts index 6cad7060b..733eae5f4 100644 --- a/src/client/util/SearchUtil.ts +++ b/src/client/util/SearchUtil.ts @@ -5,7 +5,6 @@ import { StrCast } from '../../fields/Types'; import { DocumentType } from '../documents/DocumentTypes'; import { DocOptions, FInfo } from '../documents/Documents'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace SearchUtil { export type HighlightingResult = { [id: string]: { [key: string]: string[] } }; diff --git a/src/client/util/SerializationHelper.ts b/src/client/util/SerializationHelper.ts index 0386b2455..ccb02fb79 100644 --- a/src/client/util/SerializationHelper.ts +++ b/src/client/util/SerializationHelper.ts @@ -12,7 +12,6 @@ export function afterDocDeserialize(cb: (err: unknown, val: unknown) => void, er const serializationTypes: { [name: string]: { ctor: { new (): unknown }; afterDeserialize?: (obj: unknown) => void | Promise } } = {}; const reverseMap: { [ctor: string]: string } = {}; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace SerializationHelper { export function IsSerializing() { return serializing > 0; diff --git a/src/client/util/UndoManager.ts b/src/client/util/UndoManager.ts index 5fd935370..ce0e7768b 100644 --- a/src/client/util/UndoManager.ts +++ b/src/client/util/UndoManager.ts @@ -83,7 +83,6 @@ export function undoBatch(target: any, key?: string | symbol, descriptor?: Typed return descriptor; } -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace UndoManager { export interface UndoEvent { undo: () => void; diff --git a/src/client/views/DocViewUtils.ts b/src/client/views/DocViewUtils.ts index 49a30aa08..1f5f29c7e 100644 --- a/src/client/views/DocViewUtils.ts +++ b/src/client/views/DocViewUtils.ts @@ -6,7 +6,6 @@ import { Doc, SetActiveAudioLinker } from '../../fields/Doc'; import { DocUtils } from '../documents/DocUtils'; import { FieldViewProps } from './nodes/FieldView'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DocViewUtils { export const ActiveRecordings: { props: FieldViewProps; getAnchor: (addAsAnnotation: boolean) => Doc }[] = []; diff --git a/src/pen-gestures/GestureUtils.ts b/src/pen-gestures/GestureUtils.ts index bf5475042..c7051c87c 100644 --- a/src/pen-gestures/GestureUtils.ts +++ b/src/pen-gestures/GestureUtils.ts @@ -2,7 +2,6 @@ import { Rect } from 'react-measure'; import { Gestures, PointData } from './GestureTypes'; import { NDollarRecognizer } from './ndollar'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace GestureUtils { export class GestureEvent { readonly gesture: Gestures; diff --git a/src/server/DashStats.ts b/src/server/DashStats.ts index 6b9fb8971..8e1d4661f 100644 --- a/src/server/DashStats.ts +++ b/src/server/DashStats.ts @@ -9,7 +9,7 @@ import { socketMap, timeMap, userOperations } from './SocketData'; * This includes time connected, number of operations, and * the rate of their operations */ -// eslint-disable-next-line @typescript-eslint/no-namespace + export namespace DashStats { export const SAMPLING_INTERVAL = 1000; // in milliseconds (ms) - Time interval to update the frontend. export const RATE_INTERVAL = 10; // in seconds (s) - Used to calculate rate diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts index 5e58db103..8f012f783 100644 --- a/src/server/DashUploadUtils.ts +++ b/src/server/DashUploadUtils.ts @@ -47,7 +47,6 @@ function usingAzure() { return process.env.USE_AZURE === 'true'; } -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace DashUploadUtils { export interface Size { width: number; diff --git a/src/server/Message.ts b/src/server/Message.ts index b904a5ba3..01a42fc68 100644 --- a/src/server/Message.ts +++ b/src/server/Message.ts @@ -43,7 +43,6 @@ export interface RoomMessage { readonly room: string; } -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace MessageStore { export const Foo = new Message('Foo'); export const Bar = new Message('Bar'); diff --git a/src/server/Search.ts b/src/server/Search.ts index 06af18776..b21ee853a 100644 --- a/src/server/Search.ts +++ b/src/server/Search.ts @@ -3,7 +3,6 @@ import * as rp from 'request-promise'; const pathTo = (relative: string) => `http://localhost:8983/solr/dash/${relative}`; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace Search { export async function updateDocument(document: any) { try { diff --git a/src/server/SharedMediaTypes.ts b/src/server/SharedMediaTypes.ts index 680db9cd0..9aa4b120f 100644 --- a/src/server/SharedMediaTypes.ts +++ b/src/server/SharedMediaTypes.ts @@ -1,7 +1,6 @@ import { ExifData } from 'exif'; import { File } from 'formidable'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace AcceptableMedia { export const gifs = ['.gif']; export const pngs = ['.png']; @@ -19,7 +18,6 @@ export enum AudioAnnoState { playing = 'playing', } -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace Upload { export function isImageInformation(uploadResponse: Upload.FileInformation): uploadResponse is Upload.ImageInformation { return 'nativeWidth' in uploadResponse; diff --git a/src/server/apis/google/GoogleApiServerUtils.ts b/src/server/apis/google/GoogleApiServerUtils.ts index 47206f415..21c405bee 100644 --- a/src/server/apis/google/GoogleApiServerUtils.ts +++ b/src/server/apis/google/GoogleApiServerUtils.ts @@ -21,7 +21,7 @@ const scope = ['documents.readonly', 'documents', 'presentations', 'presentation * This namespace manages server side authentication for Google API queries, either * from the standard v1 APIs or the Google Photos REST API. */ -// eslint-disable-next-line @typescript-eslint/no-namespace + export namespace GoogleApiServerUtils { /** * As we expand out to more Google APIs that are accessible from diff --git a/src/server/server_Initialization.ts b/src/server/server_Initialization.ts index 2190e27c7..8d3afc3ad 100644 --- a/src/server/server_Initialization.ts +++ b/src/server/server_Initialization.ts @@ -113,6 +113,7 @@ function registerEmbeddedBrowseRelativePathHandler(server: express.Express) { }); } +// eslint-disable-next-line @typescript-eslint/no-explicit-any function proxyServe(req: any, requrl: string, response: any) { // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires const htmlBodyMemoryStream = new (require('memorystream'))(); @@ -137,8 +138,10 @@ function proxyServe(req: any, requrl: string, response: any) { response.send(header?.includes('gzip') ? zlib.gzipSync(htmlText) : htmlText); } else { req.pipe(request(requrl)) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('requrl ', e)) .pipe(response) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('response pipe error', e)); console.log('EMPTY body:' + req.url); } @@ -147,14 +150,17 @@ function proxyServe(req: any, requrl: string, response: any) { } } else { req.pipe(htmlBodyMemoryStream) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('html body memorystream error', e)) .pipe(response) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('html body memory stream response error', e)); } }; const retrieveHTTPBody = () => { // req.headers.cookie = ''; req.pipe(request(requrl)) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => { console.log(`CORS url error: ${requrl}`, e); response.send(` @@ -163,6 +169,7 @@ function proxyServe(req: any, requrl: string, response: any) {

${e}

`); }) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('response', (res: any) => { res.headers; const headers = Object.keys(res.headers); @@ -187,6 +194,7 @@ function proxyServe(req: any, requrl: string, response: any) { }) .on('end', sendModifiedBody) .pipe(htmlBodyMemoryStream) + // eslint-disable-next-line @typescript-eslint/no-explicit-any .on('error', (e: any) => console.log('http body pipe error', e)); }; retrieveHTTPBody(); @@ -244,6 +252,7 @@ export default async function InitializeServer(routeSetter: RouteSetter) { app.use(whm(compiler)); app.get(/^\/+$/, (req, res) => res.redirect(req.user ? '/home' : '/login')); // target urls that consist of one or more '/'s with nothing in between app.use(express.static(publicDirectory, { setHeaders: res => res.setHeader('Access-Control-Allow-Origin', '*') })); // all urls that start with dash's public directory: /files/ (e.g., /files/images, /files/audio, etc) + // eslint-disable-next-line @typescript-eslint/no-explicit-any app.use(cors({ origin: (_origin: any, callback: any) => callback(null, true) })); registerAuthenticationRoutes(app); // this adds routes to authenticate a user (login, etc) registerCorsProxy(app); // this adds a /corsProxy/ route to allow clients to get to urls that would otherwise be blocked by cors policies diff --git a/src/server/websocket.ts b/src/server/websocket.ts index ccbcb1c5f..1e25a8a27 100644 --- a/src/server/websocket.ts +++ b/src/server/websocket.ts @@ -15,7 +15,6 @@ import { resolvedPorts, socketMap, timeMap, userOperations } from './SocketData' import { initializeGuest } from './authentication/DashUserModel'; import { Database } from './database'; -// eslint-disable-next-line @typescript-eslint/no-namespace export namespace WebSocket { let CurUser: string | undefined; export let _socket: Socket; -- cgit v1.2.3-70-g09d2 From 25ee9e6b3f7da67bcf94eb2affd5793c67777930 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 21 Aug 2024 17:04:32 -0400 Subject: cleanup of face recognition. some lint fixes. --- eslint.config.mjs | 8 + src/.DS_Store | Bin 10244 -> 10244 bytes src/client/util/CurrentUserUtils.ts | 5 - src/client/util/DocumentManager.ts | 1 - src/client/views/MainView.tsx | 2 +- src/client/views/collections/CollectionSubView.tsx | 4 +- .../collectionFreeForm/FaceCollectionBox.tsx | 121 ++++++------- src/client/views/nodes/DocumentView.tsx | 8 +- src/client/views/search/FaceRecognitionHandler.tsx | 190 +++++++++++++++------ src/fields/Doc.ts | 6 +- src/fields/RichTextUtils.ts | 4 - src/server/database.ts | 3 - src/server/server_Initialization.ts | 2 +- 13 files changed, 198 insertions(+), 156 deletions(-) (limited to 'src') diff --git a/eslint.config.mjs b/eslint.config.mjs index 04655ce13..119f2f486 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -29,6 +29,7 @@ export default [ 'import/prefer-default-export': 'off', 'no-unused-expressions': 'off', + '@typescript-eslint/no-unused-expressions': 'off', 'prefer-template': 'off', 'no-inner-declarations': 'off', 'no-plusplus': 'off', @@ -42,6 +43,13 @@ export default [ '@typescript-eslint/no-unused-vars': 'error', '@typescript-eslint/no-namespace': 'off', 'react/destructuring-assignment': 0, + 'prefer-arrow-callback': 'error', + 'no-return-assign': 'error', + 'no-await-in-loop': 'error', + 'no-loop-func': 'error', + 'no-conditional-assign': 'error', + 'no-use-before-define': 'error', + 'no-explicit-any': 'error', 'no-restricted-globals': ['error', 'event'], }, }, diff --git a/src/.DS_Store b/src/.DS_Store index 7a0b53ce0..426a2ee90 100644 Binary files a/src/.DS_Store and b/src/.DS_Store differ diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 2962682c2..0681a21cb 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -95,7 +95,6 @@ export class CurrentUserUtils { }); const reqdOpts:DocumentOptions = { title: "child click editors", _height:75, isSystem: true}; - // eslint-disable-next-line no-return-assign return DocUtils.AssignOpts(tempClicks, reqdOpts, reqdClickList) ?? (doc[field] = Docs.Create.TreeDocument(reqdClickList, reqdOpts)); } @@ -120,7 +119,6 @@ export class CurrentUserUtils { }); const reqdOpts:DocumentOptions = {title: "click editor templates", _height:75, isSystem: true}; - // eslint-disable-next-line no-return-assign return DocUtils.AssignOpts(tempClicks, reqdOpts, reqdClickList) ?? (doc[field] = Docs.Create.TreeDocument(reqdClickList, reqdOpts)); } @@ -138,7 +136,6 @@ export class CurrentUserUtils { }), ... DocListCast(tempNotes?.data).filter(note => !reqdTempOpts.find(reqd => reqd.title === note.title))]; const reqdOpts:DocumentOptions = { title: "Note Layouts", _height: 75, isSystem: true }; - // eslint-disable-next-line no-return-assign return DocUtils.AssignOpts(tempNotes, reqdOpts, reqdNoteList) ?? (doc[field] = Docs.Create.TreeDocument(reqdNoteList, reqdOpts)); } static setupUserTemplates(doc: Doc, field="template_user") { @@ -146,7 +143,6 @@ export class CurrentUserUtils { const reqdUserList = DocListCast(tempUsers?.data); const reqdOpts:DocumentOptions = { title: "User Layouts", _height: 75, isSystem: true }; - // eslint-disable-next-line no-return-assign return DocUtils.AssignOpts(tempUsers, reqdOpts, reqdUserList) ?? (doc[field] = Docs.Create.TreeDocument(reqdUserList, reqdOpts)); } @@ -183,7 +179,6 @@ export class CurrentUserUtils { default: return labelBox; }})(); const allopts = {isSystem: true, onClickScriptDisable: "never", ...opts, title}; - // eslint-disable-next-line no-return-assign return DocUtils.AssignScripts( (curIcon?.iconTemplate === opts.iconTemplate ? DocUtils.AssignOpts(curIcon, allopts):undefined) ?? ((templateIconsDoc[title] = MakeTemplate(creator(allopts, templateField)))), {onClick:"deiconifyView(documentView)", onDoubleClick: "deiconifyViewToLightbox(documentView)", }); diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts index a10237fcc..83b83240e 100644 --- a/src/client/util/DocumentManager.ts +++ b/src/client/util/DocumentManager.ts @@ -17,7 +17,6 @@ export class DocumentManager { // eslint-disable-next-line no-use-before-define private static _instance: DocumentManager; public static get Instance(): DocumentManager { - // eslint-disable-next-line no-return-assign return this._instance || (this._instance = new this()); } diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 62ad0a3fb..9f1c7da3d 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -75,7 +75,7 @@ import { AnchorMenu } from './pdf/AnchorMenu'; import { GPTPopup } from './pdf/GPTPopup/GPTPopup'; import { TopBar } from './topbar/TopBar'; -// eslint-disable-next-line @typescript-eslint/no-var-requires +// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports const { LEFT_MENU_WIDTH, TOPBAR_HEIGHT } = require('./global/globalCssVariables.module.scss'); // prettier-ignore @observer diff --git a/src/client/views/collections/CollectionSubView.tsx b/src/client/views/collections/CollectionSubView.tsx index a6768ab35..5782d407e 100644 --- a/src/client/views/collections/CollectionSubView.tsx +++ b/src/client/views/collections/CollectionSubView.tsx @@ -1,4 +1,4 @@ -import { action, computed, IReactionDisposer, makeObservable, observable, reaction } from 'mobx'; +import { action, computed, makeObservable, observable } from 'mobx'; import * as React from 'react'; import * as rp from 'request-promise'; import { ClientUtils, returnFalse } from '../../../ClientUtils'; @@ -9,7 +9,7 @@ import { Id } from '../../../fields/FieldSymbols'; import { List } from '../../../fields/List'; import { listSpec } from '../../../fields/Schema'; import { ScriptField } from '../../../fields/ScriptField'; -import { BoolCast, Cast, DocCast, ScriptCast, StrCast } from '../../../fields/Types'; +import { BoolCast, Cast, ScriptCast, StrCast } from '../../../fields/Types'; import { WebField } from '../../../fields/URLField'; import { GetEffectiveAcl, TraceMobx } from '../../../fields/util'; import { GestureUtils } from '../../../pen-gestures/GestureUtils'; diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index d5a2809dc..94f9a3c94 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -3,28 +3,28 @@ import { IconButton, Size } from 'browndash-components'; import * as faceapi from 'face-api.js'; import { FaceMatcher } from 'face-api.js'; import 'ldrs/ring'; -import { action, computed, makeObservable, observable } from 'mobx'; +import { action, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; -import { Utils } from '../../../../Utils'; -import { Doc, DocListCast } from '../../../../fields/Doc'; -import { DocData } from '../../../../fields/DocSymbols'; +import { setupMoveUpEvents } from '../../../../ClientUtils'; +import { Utils, emptyFunction } from '../../../../Utils'; +import { Doc, Opt } from '../../../../fields/Doc'; import { Id } from '../../../../fields/FieldSymbols'; import { List } from '../../../../fields/List'; -import { listSpec } from '../../../../fields/Schema'; -import { Cast, ImageCast, StrCast } from '../../../../fields/Types'; +import { ImageCast } from '../../../../fields/Types'; import { DocumentType } from '../../../documents/DocumentTypes'; import { Docs } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; +import { dropActionType } from '../../../util/DropActionTypes'; import { SnappingManager } from '../../../util/SnappingManager'; import { undoable } from '../../../util/UndoManager'; import { ViewBoxBaseComponent } from '../../DocComponent'; import { ObservableReactComponent } from '../../ObservableReactComponent'; import { DocumentView } from '../../nodes/DocumentView'; import { FieldView, FieldViewProps } from '../../nodes/FieldView'; +import { FaceRecognitionHandler } from '../../search/FaceRecognitionHandler'; import './FaceCollectionBox.scss'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; -import { FaceRecognitionHandler } from '../../search/FaceRecognitionHandler'; interface FaceDocumentProps { faceDoc: Doc; @@ -50,49 +50,29 @@ export class FaceDocumentItem extends ObservableReactComponent doc.type === DocumentType.IMG); - filteredDocs.forEach(doc => { - // If the current Face Document has no items, and the doc has more than one face descriptor, don't let the user add the document first. - if ((this._props.faceDoc[DocData].face_descriptors as List>).length === 0 && (doc[DocData][FaceRecognitionHandler.FacesField(doc)] as List>).length > 1) { + de.complete.docDragData?.droppedDocuments + ?.filter(doc => doc.type === DocumentType.IMG) + .forEach(imgDoc => { + // If the current Face Document has no faces, and the doc has more than one face descriptor, don't let the user add the document first. Or should we just use the first face ? + if (FaceRecognitionHandler.FaceDocDescriptors(this._props.faceDoc).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { alert('Cannot add a document with multiple faces as the first item!'); } else { - // Loop through the documents' face descriptors. - // Choose the face with the smallest distance to add. - const float32Array = (this._props.faceDoc[DocData].face_descriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); - const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(StrCast(this._props.faceDoc[DocData].face_label), float32Array); - const faceDescriptors: faceapi.LabeledFaceDescriptors[] = [labeledFaceDescriptor]; - - const faceMatcher = new FaceMatcher(faceDescriptors, 1); - let cur_lowest_distance = 1; - let cur_matching_face = new List(); - - (doc[DocData][FaceRecognitionHandler.FacesField(doc)] as List>).forEach(face => { - // If the face has the current lowest distance, mark it as such - // Once that lowest distance is found, add the face descriptor to the faceDoc, and add the associated doc - const convered_32_array: Float32Array = new Float32Array(Array.from(face)); - const match = faceMatcher.matchDescriptor(convered_32_array); - - if (match.distance < cur_lowest_distance) { - cur_lowest_distance = match.distance; - cur_matching_face = face; - } - }); - - const faceFieldKey = FaceRecognitionHandler.FaceField(doc, this._props.faceDoc); - if (doc[DocData][faceFieldKey]) { - Cast(doc[DocData][faceFieldKey], listSpec('number'), null).push(cur_matching_face as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that - } else { - doc[DocData][faceFieldKey] = new List>([cur_matching_face]); - } - - Doc.AddDocToList(this._props.faceDoc[DocData], 'face_docList', doc); - Cast(this._props.faceDoc[DocData].face_descriptors, listSpec('number'), null).push(cur_matching_face as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + // Loop through the documents' face descriptors and choose the face in the iage with the smallest distance (most similar to the face colleciton) + const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.FaceDocDescriptors(this._props.faceDoc).map(fd => new Float32Array(Array.from(fd))); + const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.FaceDocLabel(this._props.faceDoc), faceDescriptorsAsFloat32Array); + const faceMatcher = new FaceMatcher([labeledFaceDescriptor], 1); + const { face_match } = FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).reduce( + (prev, face) => { + const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(face))); + return match.distance < prev.dist ? { dist: match.distance, face_match: face } : prev; + }, + { dist: 1, face_match: new List() as Opt> } + ); + + // assign the face in the image that's closest to the face collection to be the face that's assigned to the collection + face_match && FaceRecognitionHandler.ImageDocAddFace(imgDoc, face_match, this._props.faceDoc); } }); - return false; - } return false; } @@ -108,23 +88,16 @@ export class FaceDocumentItem extends ObservableReactComponent { - if (Doc.ActiveDashboard) { - Doc.RemoveDocFromList(Doc.ActiveDashboard[DocData], 'faceDocuments', this._props.faceDoc); - } - }, 'remove face'); + FaceRecognitionHandler.DeleteFaceDoc(this._props.faceDoc); + }, 'delete face'); /** * Deletes a document from a Face Document's associated docs list. * @param doc */ - @action - deleteAssociatedDoc = (doc: Doc) => { - this._props.faceDoc[DocData].face_descriptors = new List>( - (this._props.faceDoc[DocData].face_descriptors as List>).filter(fd => !(doc[DocData][FaceRecognitionHandler.FaceField(doc, this._props.faceDoc)] as List>).includes(fd)) - ); - doc[DocData][FaceRecognitionHandler.FaceField(doc, this._props.faceDoc)] = new List>(); - Doc.RemoveDocFromList(this._props.faceDoc[DocData], 'face_docList', doc); - }; + deleteAssociatedDoc = undoable((imgDoc: Doc) => { + FaceRecognitionHandler.FaceDocRemoveImageDocFace(imgDoc, this._props.faceDoc); + }, 'remove doc from face'); render() { return ( @@ -133,7 +106,7 @@ export class FaceDocumentItem extends ObservableReactComponent
-

{StrCast(this._props.faceDoc[DocData].face_label)}

+

{FaceRecognitionHandler.FaceDocLabel(this._props.faceDoc)}

{this._displayImages ? (
- {DocListCast(this._props.faceDoc[DocData].face_docList).map(doc => { + {FaceRecognitionHandler.FaceDocFaces(this._props.faceDoc).map(doc => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return ( -
+
+ setupMoveUpEvents( + this, + e, + () => { + DragManager.StartDocumentDrag([e.target as HTMLElement], new DragManager.DocumentDragData([doc], dropActionType.embed), e.clientX, e.clientY); + return true; + }, + emptyFunction, + emptyFunction + ) + }> DocumentView.showDocument(doc, { willZoomCentered: true })} style={{ maxWidth: '60px', margin: '10px' }} src={`${name}_o.${type}`} />
this.deleteAssociatedDoc(doc)} icon={'x'} style={{ width: '4px' }} size={Size.XSMALL} /> @@ -168,25 +155,15 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { return FieldView.LayoutString(FaceCollectionBox, fieldKey); } - public static Instance: FaceCollectionBox; - - @computed get currentDocs() { - if (Doc.ActiveDashboard) { - return DocListCast(Doc.ActiveDashboard[DocData].faceDocuments); - } - return []; - } - constructor(props: FieldViewProps) { super(props); makeObservable(this); - FaceCollectionBox.Instance = this; } render() { return (
- {this.currentDocs.map(doc => ( + {FaceRecognitionHandler.FaceDocuments().map(doc => ( ))}
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index c807d99ac..5efdb3df4 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -1,5 +1,4 @@ /* eslint-disable no-use-before-define */ -/* eslint-disable react/jsx-props-no-spreading */ import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { Property } from 'csstype'; import { Howl } from 'howler'; @@ -341,7 +340,6 @@ export class DocumentViewInternal extends DocComponent { if (this._props.isGroupActive?.() === GroupActive.child && !this._props.isDocumentActive?.()) return; - // eslint-disable-next-line no-use-before-define this._longPressSelector = setTimeout(() => SnappingManager.LongPress && this._props.select(false), 1000); if (!DocumentView.DownDocView) DocumentView.DownDocView = this._docView; @@ -405,7 +402,6 @@ export class DocumentViewInternal extends DocComponent() { ) ); } - // eslint-disable-next-line default-param-last + public static FocusOrOpen(docIn: Doc, optionsIn: FocusViewOptions = { willZoomCentered: true, zoomScale: 0, openLocation: OpenWhere.toggleRight }, containingDoc?: Doc) { let doc = docIn; const options = optionsIn; diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index dc271fe73..3ef6f9674 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -10,7 +10,22 @@ import { DocumentType } from '../../documents/DocumentTypes'; import { DocumentManager } from '../../util/DocumentManager'; /** - * A class that handles face recognition. + * A singleton class that handles face recognition and manages face Doc collections for each face found. + * Displaying an image doc anywhere will trigger this class to test if the image contains any faces. + * If it does, each recognized face will be compared to a global set of faces (each is a face collection Doc + * that have already been found. If the face matches a face collection Doc, then it will be added to that + * collection along with the numerical representation of the face, its face descriptor. + * + * Image Doc's that are added to one or more face collection Docs will be given these metadata fields: + * _Face - a nunerical representation of the Nth face found in the image + * _Faces - a list of all the numerical face representations found in the image (why is this needed?) + * + * Face collection Doc's are created for each person identified and are stored in the Dashboard's faceDocument's list + * + * Each Face collection Doc represents all the images found for that person. It has these fields: + * face_label - a string label for the person that was recognized (currently it's just a 'face#') + * face_descriptors - a list of all the face descriptors for different images of the person + * face_docList - a list of all image Docs that contain a face for the person */ export class FaceRecognitionHandler { static _instance: FaceRecognitionHandler; @@ -18,13 +33,90 @@ export class FaceRecognitionHandler { private _processingDocs: Set = new Set(); private _pendingLoadDocs: Doc[] = []; - public static FaceField = (target: Doc, doc: Doc) => `${Doc.LayoutFieldKey(target)}_${doc.face_label}`; - public static FacesField = (target: Doc) => `${Doc.LayoutFieldKey(target)}_Faces`; + private static imgDocFaceField = (imgDoc: Doc, faceDoc: Doc) => `${Doc.LayoutFieldKey(imgDoc)}_${FaceRecognitionHandler.FaceDocLabel(faceDoc)}`; + /** + * initializes an image with an empty list of face descriptors + * @param imgDoc image to initialize + */ + private static initImageDocFaceDescriptors = (imgDoc: Doc) => { + imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`] = new List>(); + }; + /** + * returns the face descriptors for each face found on an image Doc + * @param imgDoc + * @returns list of face descriptors + */ + public static ImageDocFaceDescriptors = (imgDoc: Doc) => imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`] as List>; + + /** + * Adds metadata to an image Doc describing a face found in the image + * @param imgDoc image Doc containing faces + * @param faceDescriptor descriptor for the face found + * @param faceDoc face collection Doc containing the same face + */ + public static ImageDocAddFace = (imgDoc: Doc, faceDescriptor: List, faceDoc: Doc) => { + const faceFieldKey = FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc); + if (imgDoc[DocData][faceFieldKey]) { + Cast(imgDoc[DocData][faceFieldKey], listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + } else { + imgDoc[DocData][faceFieldKey] = new List>([faceDescriptor]); + } + }; + + /** + * returns a list of all face collection Docs on the current dashboard + * @returns face collection Doc list + */ + public static FaceDocuments = () => DocListCast(Doc.ActiveDashboard?.[DocData].faceDocuments); + + public static DeleteFaceDoc = (faceDoc: Doc) => Doc.ActiveDashboard && Doc.RemoveDocFromList(Doc.ActiveDashboard[DocData], 'faceDocuments', faceDoc); + + /** + * returns the labels associated with a face collection Doc + * @param faceDoc the face collection Doc + * @returns label string + */ + public static FaceDocLabel = (faceDoc: Doc) => StrCast(faceDoc[DocData].face_label); + /** + * Returns all the face descriptors associated with a face collection Doc + * @param faceDoc a face collection Doc + * @returns face descriptors + */ + public static FaceDocDescriptors = (faceDoc: Doc) => faceDoc[DocData].face_descriptors as List>; + + /** + * Returns a list of all face image Docs associated with the face collection + * @param faceDoc a face collection Doc + * @returns image Docs + */ + public static FaceDocFaces = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_docList); + + /** + * Adds a face image to the list of faces in a face collection Doc, and updates the face collection's list of image descriptors + * @param img - image with faces to add to a face collection Doc + * @param faceDescriptor - the face descriptor for the face in the image to add + * @param faceDoc - the face collection Doc + */ + public static FaceDocAddImageDocFace = (img: Doc, faceDescriptor: List, faceDoc: Doc) => { + Doc.AddDocToList(faceDoc, 'face_docList', img); + Cast(faceDoc.face_descriptors, listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + }; + + /** + * Removes a face from a face Doc collection, and updates the face collection's list of image descriptors + * @param imgDoc - image with faces to remove from the face Doc collectoin + * @param faceDoc - the face Doc collection + */ + public static FaceDocRemoveImageDocFace = (imgDoc: Doc, faceDoc: Doc) => { + imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] = new List>(); + Doc.RemoveDocFromList(faceDoc[DocData], 'face_docList', imgDoc); + faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.FaceDocDescriptors(faceDoc).filter(fd => !(imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] as List>).includes(fd))); + }; constructor() { FaceRecognitionHandler._instance = this; - this.loadModels().then(() => this._pendingLoadDocs.forEach(this.findMatches)); - DocumentManager.Instance.AddAnyViewRenderedCB(dv => FaceRecognitionHandler.Instance.findMatches(dv.Document)); + this.loadModels().then(() => this._pendingLoadDocs.forEach(this.classifyFacesInImage)); + DocumentManager.Instance.AddAnyViewRenderedCB(dv => FaceRecognitionHandler.Instance.classifyFacesInImage(dv.Document)); } @computed get examinedFaceDocs() { @@ -48,48 +140,42 @@ export class FaceRecognitionHandler { /** * When a document is added, look for matching face documents. - * @param doc The document being analyzed. + * @param imgDoc The document being analyzed. */ - public findMatches = async (doc: Doc) => { + public classifyFacesInImage = async (imgDoc: Doc) => { if (!this._loadedModels || !Doc.ActiveDashboard) { - this._pendingLoadDocs.push(doc); + this._pendingLoadDocs.push(imgDoc); return; } - if (doc.type === DocumentType.LOADING && !doc.loadingError) { - setTimeout(() => this.findMatches(doc), 1000); + if (imgDoc.type === DocumentType.LOADING && !imgDoc.loadingError) { + setTimeout(() => this.classifyFacesInImage(imgDoc), 1000); return; } - const imgUrl = ImageCast(doc[Doc.LayoutFieldKey(doc)]); + const imgUrl = ImageCast(imgDoc[Doc.LayoutFieldKey(imgDoc)]); // If the doc isn't an image or currently already been examined or is being processed, stop examining the document. - if (!imgUrl || this.examinedFaceDocs.includes(doc) || this._processingDocs.has(doc)) { + if (!imgUrl || this.examinedFaceDocs.includes(imgDoc) || this._processingDocs.has(imgDoc)) { return; } // Mark the document as being processed. - this._processingDocs.add(doc); + this._processingDocs.add(imgDoc); + FaceRecognitionHandler.initImageDocFaceDescriptors(imgDoc); // Get the image the document contains and analyze for faces. const [name, type] = imgUrl.url.href.split('.'); const imageURL = `${name}_o.${type}`; - const img = await this.loadImage(imageURL); - - const fullFaceDescriptions = await faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors(); - - doc[DocData][FaceRecognitionHandler.FacesField(doc)] = new List>(); + const imgDocFaceDescriptions = await faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors(); // For each face detected, find a match. - for (const fd of fullFaceDescriptions) { - let match = this.findMatch(fd.descriptor); - const converted_list = new List(Array.from(fd.descriptor)); - - if (match) { - // If a matching Face Document has been found, add the document to the Face Document's associated docs and append the face - // descriptor to the Face Document's descriptor list. - Doc.AddDocToList(match, 'face_docList', doc); - Cast(match.face_descriptors, listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + for (const fd of imgDocFaceDescriptions) { + let faceDocMatch = this.findMatchingFaceDoc(fd.descriptor); + const faceDescriptor = new List(Array.from(fd.descriptor)); + + if (faceDocMatch) { + FaceRecognitionHandler.FaceDocAddImageDocFace(imgDoc, faceDescriptor, faceDocMatch); } else { // If a matching Face Document has not been found, create a new Face Document. Doc.UserDoc().faceDocNum = NumCast(Doc.UserDoc().faceDocNum) + 1; @@ -98,53 +184,45 @@ export class FaceRecognitionHandler { newFaceDocument.title = `Face ${Doc.UserDoc().faceDocNum}`; newFaceDocument.face = ''; // just to make prettyprinting look better newFaceDocument.face_label = `Face${Doc.UserDoc().faceDocNum}`; - newFaceDocument.face_docList = new List([doc]); - newFaceDocument.face_descriptors = new List>([converted_list]); + newFaceDocument.face_docList = new List([imgDoc]); + newFaceDocument.face_descriptors = new List>([faceDescriptor]); Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'faceDocuments', newFaceDocument); - match = newFaceDocument; + faceDocMatch = newFaceDocument; } // Assign a field in the document of the matching Face Document. - const faceDescripField = FaceRecognitionHandler.FaceField(doc, match); - if (doc[DocData][faceDescripField]) { - Cast(doc[DocData][faceDescripField], listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that - } else { - doc[DocData][faceDescripField] = new List>([converted_list]); - } - - Cast(doc[DocData][FaceRecognitionHandler.FacesField(doc)], listSpec('number'), null).push(converted_list as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that - - Doc.AddDocToList(Doc.UserDoc(), 'examinedFaceDocs', doc); + FaceRecognitionHandler.ImageDocAddFace(imgDoc, faceDescriptor, faceDocMatch); + Doc.AddDocToList(Doc.UserDoc(), 'examinedFaceDocs', imgDoc); } - this._processingDocs.delete(doc); + this._processingDocs.delete(imgDoc); }; /** - * Finds a matching Face Document given a descriptor - * @param cur_descriptor The current descriptor whose match is being searched for. - * @returns The most similar Face Document. + * Finds the most similar matching Face Document to a face descriptor + * @param faceDescriptor face descriptor number list + * @returns face Doc */ - private findMatch(cur_descriptor: Float32Array) { - if (!Doc.ActiveDashboard || DocListCast(Doc.ActiveDashboard[DocData].faceDocuments).length < 1) { - return null; + private findMatchingFaceDoc = (faceDescriptor: Float32Array) => { + if (!Doc.ActiveDashboard || FaceRecognitionHandler.FaceDocuments().length < 1) { + return undefined; } - const faceDescriptors: faceapi.LabeledFaceDescriptors[] = DocListCast(Doc.ActiveDashboard[DocData].faceDocuments).map(faceDocument => { - const float32Array = (faceDocument[DocData].face_descriptors as List>).map(faceDescriptor => new Float32Array(Array.from(faceDescriptor))); - return new faceapi.LabeledFaceDescriptors(StrCast(faceDocument[DocData].face_label), float32Array); + const faceDescriptors = FaceRecognitionHandler.FaceDocuments().map(faceDoc => { + const float32Array = FaceRecognitionHandler.FaceDocDescriptors(faceDoc).map(fd => new Float32Array(Array.from(fd))); + return new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.FaceDocLabel(faceDoc), float32Array); }); const faceMatcher = new FaceMatcher(faceDescriptors, 0.6); - const match = faceMatcher.findBestMatch(cur_descriptor); + const match = faceMatcher.findBestMatch(faceDescriptor); if (match.label !== 'unknown') { - for (const doc of DocListCast(Doc.ActiveDashboard[DocData].faceDocuments)) { - if (doc[DocData].face_label === match.label) { - return doc; + for (const faceDoc of FaceRecognitionHandler.FaceDocuments()) { + if (FaceRecognitionHandler.FaceDocLabel(faceDoc) === match.label) { + return faceDoc; } } } - return null; - } + return undefined; + }; /** * Loads an image diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index eb6ed9757..ffb5aab79 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/no-namespace */ -/* eslint-disable default-param-last */ /* eslint-disable no-use-before-define */ import { action, computed, makeObservable, observable, ObservableMap, ObservableSet, runInAction } from 'mobx'; import { computedFn } from 'mobx-utils'; @@ -127,9 +125,7 @@ export type FieldResult = Opt | FieldWaiting * If no default value is given, and the returned value is not undefined, it can be safely modified. */ export function DocListCastAsync(field: FieldResult): Promise; -// eslint-disable-next-line no-redeclare export function DocListCastAsync(field: FieldResult, defaultValue: Doc[]): Promise; -// eslint-disable-next-line no-redeclare export function DocListCastAsync(field: FieldResult, defaultValue?: Doc[]) { const list = Cast(field, listSpec(Doc)); return list ? Promise.all(list).then(() => list) : Promise.resolve(defaultValue); @@ -437,7 +433,6 @@ export class Doc extends RefField { const writeMode = DocServer.getFieldWriteMode(fKey); if (fKey.startsWith('acl_') || writeMode !== DocServer.WriteMode.Playground) { delete this[CachedUpdates][fKey]; - // eslint-disable-next-line no-await-in-loop await fn(); } else { this[CachedUpdates][fKey] = fn; @@ -1576,6 +1571,7 @@ export namespace Doc { try { resolved = JSON.parse(typeof data === 'string' ? data : JSON.stringify(data)); } catch (e) { + console.error(e); return undefined; } let output: Opt; diff --git a/src/fields/RichTextUtils.ts b/src/fields/RichTextUtils.ts index d1316d256..b3534dde7 100644 --- a/src/fields/RichTextUtils.ts +++ b/src/fields/RichTextUtils.ts @@ -394,13 +394,11 @@ export namespace RichTextUtils { for (const markName of Object.keys(schema.marks)) { // eslint-disable-next-line no-cond-assign if (ignored.includes(markName) || !(mark = markMap[markName])) { - // eslint-disable-next-line no-continue continue; } let converted = MarkToStyle.get(markName) || (markName as keyof docsV1.Schema$TextStyle); let value: unknown = true; if (!converted) { - // eslint-disable-next-line no-continue continue; } // eslint-disable-next-line @typescript-eslint/no-shadow @@ -412,10 +410,8 @@ export namespace RichTextUtils { const docDelimeter = '/doc/'; const alreadyShared = '?sharing=true'; if (new RegExp(window.location.origin + docDelimeter).test(url) && !url.endsWith(alreadyShared)) { - // eslint-disable-next-line no-await-in-loop const linkDoc = await DocServer.GetRefField(url.split(docDelimeter)[1]); if (linkDoc instanceof Doc) { - // eslint-disable-next-line no-await-in-loop let exported = (await Cast(linkDoc.link_anchor_2, Doc))!; if (!exported.customLayout) { exported = Doc.MakeEmbedding(exported); diff --git a/src/server/database.ts b/src/server/database.ts index 975b9eb80..10dc540c3 100644 --- a/src/server/database.ts +++ b/src/server/database.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-namespace */ import * as mongodb from 'mongodb'; import * as mongoose from 'mongoose'; import { Opt } from '../fields/Doc'; @@ -148,9 +147,7 @@ export namespace Database { } public delete(query: any, collectionName?: string): Promise; - // eslint-disable-next-line no-dupe-class-members public delete(id: string, collectionName?: string): Promise; - // eslint-disable-next-line no-dupe-class-members public delete(idIn: any, collectionName = DocumentsCollection) { let id = idIn; if (typeof id === 'string') { diff --git a/src/server/server_Initialization.ts b/src/server/server_Initialization.ts index 97c63a93e..0cf9a6e58 100644 --- a/src/server/server_Initialization.ts +++ b/src/server/server_Initialization.ts @@ -115,7 +115,7 @@ function registerEmbeddedBrowseRelativePathHandler(server: express.Express) { // eslint-disable-next-line @typescript-eslint/no-explicit-any function proxyServe(req: any, requrl: string, response: any) { - // eslint-disable-next-line global-require, @typescript-eslint/no-require-imports + // eslint-disable-next-line global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires const htmlBodyMemoryStream = new (require('memorystream'))(); let wasinBrFormat = false; const sendModifiedBody = () => { -- cgit v1.2.3-70-g09d2 From 4091d1681437527bfb55cb79570e8b652e9b190f Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 21 Aug 2024 17:12:35 -0400 Subject: from last --- .../views/collections/collectionFreeForm/FaceCollectionBox.tsx | 5 ++++- src/client/views/search/FaceRecognitionHandler.tsx | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 94f9a3c94..dd8dea41e 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -70,7 +70,10 @@ export class FaceDocumentItem extends ObservableReactComponent>([faceDescriptor]); } + FaceRecognitionHandler.FaceDocAddImageDocFace(imgDoc, faceDescriptor, faceDoc); }; /** -- cgit v1.2.3-70-g09d2 From b6275b9d630131e50727f76af44936acc0cb7d7d Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 21 Aug 2024 17:25:01 -0400 Subject: from last --- src/client/views/search/FaceRecognitionHandler.tsx | 2 -- 1 file changed, 2 deletions(-) (limited to 'src') diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 6494a1ed4..c446df6ff 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -61,7 +61,6 @@ export class FaceRecognitionHandler { } else { imgDoc[DocData][faceFieldKey] = new List>([faceDescriptor]); } - FaceRecognitionHandler.FaceDocAddImageDocFace(imgDoc, faceDescriptor, faceDoc); }; /** @@ -109,7 +108,6 @@ export class FaceRecognitionHandler { * @param faceDoc - the face Doc collection */ public static FaceDocRemoveImageDocFace = (imgDoc: Doc, faceDoc: Doc) => { - imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] = new List>(); Doc.RemoveDocFromList(faceDoc[DocData], 'face_docList', imgDoc); faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.FaceDocDescriptors(faceDoc).filter(fd => !(imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] as List>).includes(fd))); }; -- cgit v1.2.3-70-g09d2 From 3ab5b620e462a35d0dc23f67014fc5aa9ef4803c Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Thu, 22 Aug 2024 03:03:03 -0400 Subject: liberty --- src/client/util/CurrentUserUtils.ts | 14 +- src/client/views/FilterPanel.scss | 67 +++- src/client/views/FilterPanel.tsx | 352 ++++++++++----------- .../views/collections/CollectionCardDeckView.tsx | 9 +- src/client/views/nodes/IconTagBox.tsx | 75 ++++- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 2 +- 6 files changed, 324 insertions(+), 195 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 0d8955ced..1a7c0f6e1 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -714,6 +714,17 @@ pie title Minerals in my tap water // ] // } static tagGroupTools(): Button[] { + if (!Doc.UserDoc().activeDashboard){ + Doc.UserDoc().myFilterHotKeyTitles = new List(['Star', 'Heart', 'Bolt', 'Cloud' ]) + + Doc.UserDoc()['Star'] = 'star' + Doc.UserDoc()['Heart'] = 'heart' + Doc.UserDoc()['Bolt'] = 'bolt' + Doc.UserDoc()['Cloud'] = 'cloud' + + } + + // hack: if there's no dashboard, create default filters. otherwise, just make sure that the Options button is preserved return (Doc.UserDoc().activeDashboard ? [] : [ { title: "Star", isSystem: false, icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, @@ -730,7 +741,7 @@ pie title Minerals in my tap water // { title: "", icon, toolTip:"Click to toggle group 6's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "", icon, toolTip:"Click to toggle group 7's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, ]).concat([ - { title: "Options", isSystem: true,icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} + { title: "Options", isSystem: true,icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} ]) } static viewTools(): Button[] { @@ -1045,6 +1056,7 @@ pie title Minerals in my tap water doc.filterDocCount = 0; doc.treeView_FreezeChildren = "remove|add"; doc.activePage = doc.activeDashboard === undefined ? 'home': doc.activePage; + this.setupLinkDocs(doc, linkDatabaseId); this.setupSharedDocs(doc, sharingDocumentId); // sets up the right sidebar collection for mobile upload documents and sharing this.setupDefaultIconTemplates(doc); // creates a set of icon templates triggered by the document deoration icon diff --git a/src/client/views/FilterPanel.scss b/src/client/views/FilterPanel.scss index 1877cc78b..0b9076f3b 100644 --- a/src/client/views/FilterPanel.scss +++ b/src/client/views/FilterPanel.scss @@ -235,28 +235,62 @@ width: 100%; //width: 25px; border-radius: 5px; // margin-right: 20px; - margin-bottom: 8px; + margin-top: 8px; border-color: #d3d3d3; border-style: solid; border-width: thin; transition: all 0.3s ease-out; + display: flex; + flex-direction: row; + padding: 5px; /* Adjust the padding value as needed */ + &:hover{ border-color: #e9e9e9; - background-color: #878484 + background-color: #6d6c6c } - &.active { - background-color: #878484; + // &.active { + // background-color: #6d6c6c; + + + + // .icon-panel{ + // display: flex + // } + // } + .hotKey-icon, .hotKey-close{ + background-color: transparent; + border-radius: 10%; + padding: 5px; - .icon-panel{ - display: flex + &:hover{ + background-color: #616060; } } + + .hotKey-close{ + right: 30px; + position: fixed; + padding-top: 10px; + +} + + .hotkey-title{ + top: 6px; + position: relative; + } + + .hotkey-title-input{ + background-color: transparent; + border: none; + border-color: transparent; + outline: none; + } } .hotKeyButtons { @@ -287,7 +321,26 @@ } .icon-panel { - bottom: -14px; + // bottom: -14px; + position: absolute; + z-index: 10000; + // background-color: #616060; + // background-color: #323232; + border-color: black; + border-style: solid; + border-width: medium; + border-radius: 10%; + background-color: #323232; + + .icon-panel-button{ + background-color: #323232; + border-radius: 10%; + + + &:hover{ + background-color:#7a7878 + } + } diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index e5f9fdb51..17c5cb173 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -41,6 +41,7 @@ import { Tooltip } from '@mui/material'; import { useLocalObservable } from 'mobx-react'; import { useRef } from 'react'; import { useEffect } from 'react'; +import { useState } from 'react'; interface filterProps { @@ -240,157 +241,74 @@ export class FilterPanel extends ObservableReactComponent { return nonNumbers / facetValues.length > 0.1 ? facetValues.sort() : facetValues.sort((n1: string, n2: string) => Number(n1) - Number(n2)); }; - addHotkey() { + addHotkey(hotKey: string) { const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); const filter = DocCast(buttons.Filter); const filter2 = DocCast(filter); const but2 = Doc.UserDoc().myContextMenuBtns; - console.log(DocCast(filter).data); - - //[idToDoc("0bec0963-95ac-4978-8606-8af4c7b9badd"),idToDoc("f740e910-bf83-4ee3-b13a-1e63c49dd254"),idToDoc("61db82b0-025a-4cb9-937b-97b1290e8f1a"),idToDoc("1046859f-34ac-4421-bc07-ee2f2cf812e2"),idToDoc("badaff47-3c3a-4b78-a7d6-f2cbc8e45ba0")] - - // const newCol = Docs.Create.CarouselDocument(DocListCast(doc[Doc.LayoutFieldKey(doc)]), { - // _width: 250, - // _height: 200, - // _layout_fitWidth: false, - // _layout_autoHeight: true, - // }); - - // CurrentUserUtils.setupContextMenuButtons() - - // const hm = Docs.Create.FontIconDocument() - - // DocumentView.getDocumentView(filter2)?.ComponentView?.addDocument?.(hm) - - // console.log(DocumentView.getDocumentView(filter2) + "hiiiii") - - // DocumentView.getDocumentView(DocCast(buttons['Card']))?.ComponentView?.addDocument?.(hm) - - // const hi = CurrentUserUtils.contextMenuTools() const newKey: Button = { - title: 'Bob', - icon: 'cloud', - toolTip: "Click to toggle the cloud group's visibility", + title: hotKey, + icon: 'bolt', + toolTip: `Click to toggle the ${hotKey}'s group's visibility`, btnType: ButtonType.ToggleButton, expertMode: false, - toolType: 'cloud', + toolType: 'bolt', funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}' }, }; // const heyy = [...hi, newKey] - Doc.UserDoc().myFilterHotKeyTitles = new List(['hi hi', 'supppp']) + const currHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) - Doc.UserDoc()['hi hi'] = 'heart' - Doc.UserDoc()['supppp'] = 'star' + Doc.UserDoc().myFilterHotKeyTitles = new List(currHotKeys.concat(hotKey)) - // CurrentUserUtils.setupContextMenuButtons(Doc.UserDoc()); + Doc.UserDoc()[hotKey] = 'bolt' + // Doc.UserDoc()['supppp'] = 'star' - // Doc.UserDoc().hi = Docs.Create.FontIconDocument( - // { title: '', - // icon: 'map-pin', - // backgroundColor: '#ACCEF7', - // layout_hideAllLinks: true, - // _width: 15, - // _height: 15, - // _xPadding: 0, - // } - // ) + const newBtn = CurrentUserUtils.setupContextMenuBtn(newKey, filter); + newBtn.isSystem = newBtn[DocData].isSystem = undefined; - // // buttons['Filter'] + const subDocs = DocListCast(filter.data) + const opts = subDocs[subDocs.length-1] + Doc.AddDocToList(filter, 'data', newBtn, opts, true); - // const reqdCtxtOpts: DocumentOptions = { - // title: 'Filter', - // undoIgnoreFields: new List(['width', 'linearView_IsOpen']), - // flexGap: 0, - // childDragAction: dropActionType.embed, - // childDontRegisterViews: true, - // linearView_IsOpen: true, - // ignoreClick: true, - // linearView_Expandable: false, - // _height: 35, - // }; - const ctxtMenuBtn = CurrentUserUtils.setupContextMenuBtn(newKey, filter); - ctxtMenuBtn.isSystem = ctxtMenuBtn[DocData].isSystem = undefined; - Doc.AddDocToList(filter, 'data', ctxtMenuBtn); - // // // DocUtils.AssignOpts(buttons, reqdCtxtOpts, ctxtMenuBtns); - - // DocUtils.AssignOpts(DocCast(buttons['Filter']), reqdCtxtOpts, [ctxtMenuBtns]); + - // newCol && dv.ComponentView?.addDocument?.(newCol); + // console.log(filter[DocData].data + 'ok') + // // console.log(filter[DocData][0] + 'help') + // console.log(filter[DocData] + 'good grief') - // console.log(but2 + "omgg") + // console.log(DocCast(DocCast(filter.data))[0]) + // this.removeHotKey() - // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); + // console.log(DocCast(filter.data) + 'HI') + // console.log(DocListCast(filter.data) + 'WOOOOO') + // console.log(DocCast(filter.data)[0] + 'hm :(') - // Doc.UserDoc().myContextMenuBtns = new List([...buttons, newKey as Doc]) } + + hotKeyButtons() { const selected = DocumentView.SelectedDocs().lastElement(); - function isAttrFiltered(attr: string) { - if (selected && selected._childFilters != undefined && selected.type === DocumentType.COL) { - return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); - } else { - return false; - } - // return selected._childFilters ? StrListCast(selected._childFilters).some(filter => filter.includes(attr)) : false; - } + // console.log(StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + "hiii") const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - console.log(hotKeys + 'hiihihi'); - - const hi = ['star', 'heart', 'bolt']; - - - - - //selecting a button should make t so that the the icon on the top filter panel becomes said icon - + // hotKeys.forEach(l => console.log(l + "render")) + + // Selecting a button should make it so that the icon on the top filter panel becomes said icon const buttons = hotKeys.map((hotKey, i) => ( - //
{ - - // // if (e.target === e.currentTarget){ - // isAttrFiltered(hotKey) ? Doc.setDocFilter(selected, hotKey, true, 'remove') : Doc.setDocFilter(selected, hotKey, true, 'match'); - // // } - // }, hotKey)} - - // // style = {{backgroundColor: `${isAttrFiltered(hotKey) ? '#878484' : SettingsManager.userBackgroundColor}`}} - - - // > - {/* } - iconPlacement="left" - align="flex-start" - fillWidth - toggleType={ToggleType.BUTTON} - onClick={undoable(() => { - isAttrFiltered(hotKey) ? Doc.setDocFilter(selected, hotKey, true, 'remove') : Doc.setDocFilter(selected, hotKey, true, 'match'); - }, hotKey)} - /> */} - <> - - Click to customize this hotkey's icon
}> - - - - - + Click to customize this hotkey's icon
}> + + )); - + return buttons; } @@ -465,7 +383,7 @@ export class FilterPanel extends ObservableReactComponent {
- +
@@ -590,28 +508,87 @@ interface HotKeyButtonProps { const HotKeyIconButton: React.FC = observer(({ hotKey, selected}) => { const state = useLocalObservable(() => ({ isActive: false, + isEditing: false, + myHotKey: hotKey, + toggleActive() { this.isActive = !this.isActive; }, deactivate() { this.isActive = false; + }, + startEditing() { + this.isEditing = true; + }, + stopEditing() { + this.isEditing = false; + }, + setHotKey(newHotKey: string) { + this.myHotKey = newHotKey; } })); const panelRef = useRef(null); + const inputRef = useRef(null); const handleClick = () => { state.toggleActive(); - - console.log(state.isActive + "hmmm") + // console.log(state.isActive + "hmmm") }; + const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + + const myHotKeyDoc = () => { + const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); + const filter = DocCast(buttons.Filter); + const hotKeyDocs = DocListCast(filter.data) + return hotKeyDocs.filter(k => StrCast(k.title) === hotKey)[0] + + } + + const removeHotKey = () => { + const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); + const filter = DocCast(buttons.Filter); + + Doc.RemoveDocFromList(filter, 'data', myHotKeyDoc()); + + + + + + // console.log((DocListCast(filter.data)[0].title) + "emmanuel") + + + // console.log(DocCast(filter.data) + 'HI') + // console.log(DocCast(filter.data)[0] + 'hm :(') + + } const handleClickOutside = (event: MouseEvent) => { if (panelRef.current && !panelRef.current.contains(event.target as Node)) { state.deactivate(); + if (state.isEditing) { + state.stopEditing(); + + updateFromInput() + + + + // Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => k === hotKey ? state.myHotKey : k)); + // Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]) + + } } }; + const updateFromInput = () => { + const hi = myHotKeyDoc() + Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => k === hotKey ? state.myHotKey : k)); + Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]) + hi.title = state.myHotKey + hi.toolTip = `Click to toggle the ${state.myHotKey}'s group's visibility` + } + + useEffect(() => { document.addEventListener('mousedown', handleClickOutside); return () => { @@ -619,73 +596,96 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select }; }, []); - const iconOpts = ['star', 'heart', 'bolt']; + const iconOpts = ['star', 'heart', 'bolt', 'satellite', 'palette', 'robot', 'lightbulb', 'highlighter', 'book', 'chalkboard' ]; const iconPanel = iconOpts.map((icon, i) => ( - - )); + + )); -
{ + function isAttrFiltered(attr: string) { + if (selected && selected._childFilters !== undefined && selected.type === DocumentType.COL) { + return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); + } else { + return false; + } + } - // if (e.target === e.currentTarget){ - isAttrFiltered(hotKey) ? Doc.setDocFilter(selected, hotKey, true, 'remove') : Doc.setDocFilter(selected, hotKey, true, 'match'); - // } - }, hotKey)} - // style = {{backgroundColor: `${isAttrFiltered(hotKey) ? '#878484' : SettingsManager.userBackgroundColor}`}} - - + return ( +
{ + e.stopPropagation(); + state.startEditing(); + setTimeout(() => inputRef.current?.focus(), 0); + }} + > +
+ Click to customize this hotkey's icon
}> + + + {state.isActive && ( +
+ {iconPanel} +
+ )} +
+ {state.isEditing ? ( + state.setHotKey(e.target.value)} + onBlur={() => { + state.stopEditing(); + updateFromInput() }} + onKeyDown={(e) => { + if (e.key === 'Enter') { + state.stopEditing(); + updateFromInput() - > - - - - {state.isActive && ( -
- {iconPanel} -
+ } + }} + className='hotkey-title-input' + /> + ) : ( +

{hotKey.toUpperCase()}

)} - - -
- -

{hotKey.toUpperCase()}

- - - - +
- - - - - ); -}); - - +}) diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 736cc2354..52f01e239 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -95,7 +95,14 @@ export class CollectionCardView extends CollectionSubView() { }; componentDidMount(): void { + this.Document.childFilters_boolean = 'OR' + this.childDocsWithoutLinks.forEach(c => { + c[DocData].showIconTags = true + + }); + + this._disposers.sort = reaction( () => ({ cardSort: this.cardSort }), ({ cardSort}) => (cardSort === cardSortings.Chat ? this.openChatPopup() : GPTPopup.Instance.setVisible(false)) @@ -672,7 +679,7 @@ export class CollectionCardView extends CollectionSubView() { }} onMouseEnter={() => this.setHoveredNodeIndex(index)}> {this.displayDoc(doc, childScreenToLocal)} - {this.renderButtons(doc, this.cardSort)} + {/* {this.renderButtons(doc, this.cardSort)} */}
); }); diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index 73360b684..cdf2075cb 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -16,6 +16,15 @@ import { BoolCast } from "../../../fields/Types"; import { DocCast } from "../../../fields/Types"; import './IconTagBox.scss'; import { AclAdmin, AclAugment, AclEdit, DocData } from '../../../fields/DocSymbols'; +import { StrListCast } from "../../../fields/Doc"; +import { StrCast } from "../../../fields/Types"; +import { DocListCast } from "../../../fields/Doc"; +import { List } from "../../../fields/List"; +import { action } from "mobx"; +import { DragManager } from "../../util/DragManager"; +import { setupMoveUpEvents } from "../../../ClientUtils"; +import { returnFalse } from "../../../ClientUtils"; +import { emptyFunction } from "../../../Utils"; export interface IconTagProps { @@ -61,6 +70,53 @@ export class IconTagBox extends ObservableReactComponent { this._props.doc[DocData].tagHeight = 36*this.currentScale; } + // createCollection = () => { + // // Get the documents that contain the keyword. + // const selected = DocListCast(this.getKeywordCollectionDocs()!); + // const newEmbeddings = selected.map(doc => Doc.MakeEmbedding(doc)); + + // // Create a new collection and set up configurations. + // const newCollection = ((doc: Doc) => { + // const docData = doc[DocData]; + // docData.data = new List(newEmbeddings); + // docData.title = this._props.keyword; + // doc._freeform_panX = doc._freeform_panY = 0; + // return doc; + // })(Doc.MakeCopy(Doc.UserDoc().emptyCollection as Doc, true)); + // newEmbeddings.forEach(embed => (embed.embedContainer = newCollection)); + // newCollection._width = 900; + // newCollection._height = 900; + // newCollection.layout_fitWidth = true; + + // // Add the collection to the keyword document's list of associated smart collections. + // this._props.keywordDoc.collections = new List([...DocListCast(this._props.keywordDoc.collections), newCollection]); + // newCollection[DocData].data_labels = new List([this._props.keyword]); + // newCollection[DocData][`${this._props.keyword}`] = true; + // newCollection[DocData].showLabels = true; + // return newCollection; + // }; + + // @action + // handleDragStart = (e: React.PointerEvent) => { + // if (this._props.isEditing) { + // const clone = this.ref.current?.cloneNode(true) as HTMLElement; + // if (!clone) return; + + // setupMoveUpEvents( + // this, + // e, + // () => { + // const dragData = new DragManager.DocumentDragData([this.createCollection()]); + // DragManager.StartDocumentDrag([this.ref.current!], dragData, e.clientX, e.clientY, {}); + // return true; + // }, + // returnFalse, + // emptyFunction + // ); + // e.preventDefault(); + // } + // }; + /** * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups * @param doc @@ -70,7 +126,10 @@ export class IconTagBox extends ObservableReactComponent { renderButtons = (doc: Doc): JSX.Element | null => { // if (cardSort !== cardSortings.Custom) return null; - const amButtons = 4 + const amButtons = StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length + + const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + // const amButtons = Math.max( // 4, @@ -86,11 +145,9 @@ export class IconTagBox extends ObservableReactComponent { const totalWidth = amButtons * 35 + amButtons * 2 * 5 + 6; - const iconMap: { [key: number]: any } = { - 0: 'star', - 1: 'heart', - 2: 'cloud', - 3: 'bolt' + const iconMap = (buttonID: number) => { + return StrCast(Doc.UserDoc()[keys[buttonID]]) + }; @@ -108,9 +165,9 @@ export class IconTagBox extends ObservableReactComponent { }} > {numberRange(amButtons).map(i => ( - Click to add/remove this card from the {iconMap[i]} group
}> -
}> + ))} diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index a41c33a4d..d216cc421 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -484,7 +484,7 @@ export class GPTPopup extends ObservableReactComponent { e.stopPropagation(); }} type="text" - placeholder={`${isSort ? 'How do you want to sort your cards?' : 'What is the selected card?'}`} + placeholder={`${isSort ? 'How do you want to sort your cards?' : 'Define the selected card?'}`} id="search-input" style={{ width: '100%' }} /> -- cgit v1.2.3-70-g09d2 From 593a894cf3b707d60b4baf1c400f138bd8b3a783 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Thu, 22 Aug 2024 10:04:44 -0400 Subject: boutta get silly --- src/client/views/InkingStroke.tsx | 7 +++++++ src/client/views/nodes/IconTagBox.tsx | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/InkingStroke.tsx b/src/client/views/InkingStroke.tsx index 55f28f415..62b79dd5a 100644 --- a/src/client/views/InkingStroke.tsx +++ b/src/client/views/InkingStroke.tsx @@ -447,6 +447,13 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() }), icon: 'paint-brush', }); + cm?.addItem({ + description: 'Create a hotkey', + event: action(() => { + InkStrokeProperties.Instance._controlButton = !InkStrokeProperties.Instance._controlButton; + }), + icon: 'satellite', + }); }, }; return ( diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index cdf2075cb..c72d48ef5 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -25,6 +25,7 @@ import { DragManager } from "../../util/DragManager"; import { setupMoveUpEvents } from "../../../ClientUtils"; import { returnFalse } from "../../../ClientUtils"; import { emptyFunction } from "../../../Utils"; +import { CollectionViewType } from "../../documents/DocumentTypes"; export interface IconTagProps { @@ -41,7 +42,9 @@ export class IconTagBox extends ObservableReactComponent { @computed get currentScale() { + // console.log(NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1)) return NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1); + } constructor(props: any) { @@ -150,6 +153,8 @@ export class IconTagBox extends ObservableReactComponent { }; + const isCard = DocCast(this._props.doc.embedContainer).type_collection === CollectionViewType.Card + return ( @@ -157,7 +162,7 @@ export class IconTagBox extends ObservableReactComponent { className="card-button-container" style={{ transformOrigin: 'top left', - transform: `scale(${1 / this.currentScale}) + transform: `scale(${ isCard ? 2 : 0.6 / this.currentScale}) translateY(${doc[DocData].showLabels ? ((NumCast(doc[DocData].keywordHeight)*(1-this.currentScale))) : 0}px) `, width: `${totalWidth}px`, -- cgit v1.2.3-70-g09d2 From 95071fa118ee36d7365250f10756dce335dc76d9 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 22 Aug 2024 11:00:14 -0400 Subject: more cleanup for face collections --- src/client/views/Main.tsx | 2 +- .../collectionFreeForm/FaceCollectionBox.tsx | 62 ++++++--- src/client/views/search/FaceRecognitionHandler.tsx | 151 +++++++++++---------- 3 files changed, 121 insertions(+), 94 deletions(-) (limited to 'src') diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index 5a408f593..023324881 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -138,7 +138,7 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; PresBox, PresElementBox, SearchBox, - ImageLabelBox, //Here! + ImageLabelBox, FaceCollectionBox, FunctionPlotBox, InkingStroke, diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index dd8dea41e..6005da6dd 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -26,18 +26,27 @@ import { FaceRecognitionHandler } from '../../search/FaceRecognitionHandler'; import './FaceCollectionBox.scss'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; -interface FaceDocumentProps { +/** + * This code is used to render the sidebar collection of unique recognized faces, where each + * unique face in turn displays the set of images that correspond to the face. + */ + +interface UniqueFaceProps { faceDoc: Doc; } /** - * A componenent to visually represent a Face Document. + * React component for rendering a unique face and its collection of image Docs. + * + * This both displays a collection of images corresponding tp a unique face, and + * allows for editing the face collection by removing an image, or drag-and-dropping + * an image that was not recognized. */ @observer -export class FaceDocumentItem extends ObservableReactComponent { +export class UniqueFaceView extends ObservableReactComponent { private _dropDisposer?: DragManager.DragDropDisposer; - constructor(props: FaceDocumentProps) { + constructor(props: UniqueFaceProps) { super(props); makeObservable(this); } @@ -54,12 +63,12 @@ export class FaceDocumentItem extends ObservableReactComponent doc.type === DocumentType.IMG) .forEach(imgDoc => { // If the current Face Document has no faces, and the doc has more than one face descriptor, don't let the user add the document first. Or should we just use the first face ? - if (FaceRecognitionHandler.FaceDocDescriptors(this._props.faceDoc).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { + if (FaceRecognitionHandler.UniqueFaceDescriptors(this._props.faceDoc).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { alert('Cannot add a document with multiple faces as the first item!'); } else { // Loop through the documents' face descriptors and choose the face in the iage with the smallest distance (most similar to the face colleciton) - const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.FaceDocDescriptors(this._props.faceDoc).map(fd => new Float32Array(Array.from(fd))); - const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.FaceDocLabel(this._props.faceDoc), faceDescriptorsAsFloat32Array); + const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this._props.faceDoc).map(fd => new Float32Array(Array.from(fd))); + const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this._props.faceDoc), faceDescriptorsAsFloat32Array); const faceMatcher = new FaceMatcher([labeledFaceDescriptor], 1); const { face_match } = FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).reduce( (prev, face) => { @@ -71,8 +80,8 @@ export class FaceDocumentItem extends ObservableReactComponent { - FaceRecognitionHandler.DeleteFaceDoc(this._props.faceDoc); + deleteUniqueFace = undoable(() => { + FaceRecognitionHandler.DeleteUniqueFace(this._props.faceDoc); }, 'delete face'); /** - * Deletes a document from a Face Document's associated docs list. - * @param doc + * Removes a face image Doc from a unique face's list of images. + * @param imgDoc - image Doc to remove */ - deleteAssociatedDoc = undoable((imgDoc: Doc) => { - FaceRecognitionHandler.FaceDocRemoveImageDocFace(imgDoc, this._props.faceDoc); + removeFaceImageFromUniqueFace = undoable((imgDoc: Doc) => { + FaceRecognitionHandler.ImageDocDeassociateUniqueFace(imgDoc, this._props.faceDoc); + FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this._props.faceDoc); }, 'remove doc from face'); render() { return (
this.createDropTarget(ele!)}>
- +
-

{FaceRecognitionHandler.FaceDocLabel(this._props.faceDoc)}

+

{FaceRecognitionHandler.UniqueFaceLabel(this._props.faceDoc)}

{this._displayImages ? (
- {FaceRecognitionHandler.FaceDocFaces(this._props.faceDoc).map(doc => { + {FaceRecognitionHandler.UniqueFaceImages(this._props.faceDoc).map(doc => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return (
DocumentView.showDocument(doc, { willZoomCentered: true })} style={{ maxWidth: '60px', margin: '10px' }} src={`${name}_o.${type}`} />
- this.deleteAssociatedDoc(doc)} icon={'x'} style={{ width: '4px' }} size={Size.XSMALL} /> + this.removeFaceImageFromUniqueFace(doc)} icon={'x'} style={{ width: '4px' }} size={Size.XSMALL} />
); @@ -152,6 +162,14 @@ export class FaceDocumentItem extends ObservableReactComponent() { public static LayoutString(fieldKey: string) { @@ -166,8 +184,8 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { render() { return (
- {FaceRecognitionHandler.FaceDocuments().map(doc => ( - + {FaceRecognitionHandler.UniqueFaces().map(doc => ( + ))}
); diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index c446df6ff..c239c775c 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -1,6 +1,5 @@ import * as faceapi from 'face-api.js'; import { FaceMatcher } from 'face-api.js'; -import { computed } from 'mobx'; import { Doc, DocListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { List } from '../../../fields/List'; @@ -12,28 +11,27 @@ import { DocumentManager } from '../../util/DocumentManager'; /** * A singleton class that handles face recognition and manages face Doc collections for each face found. * Displaying an image doc anywhere will trigger this class to test if the image contains any faces. - * If it does, each recognized face will be compared to a global set of faces (each is a face collection Doc - * that have already been found. If the face matches a face collection Doc, then it will be added to that + * If it does, each recognized face will be compared to a stored, global set of faces (each face is represented + * as a face collection Doc). If the face matches a face collection Doc, then it will be added to that * collection along with the numerical representation of the face, its face descriptor. * * Image Doc's that are added to one or more face collection Docs will be given these metadata fields: - * _Face - a nunerical representation of the Nth face found in the image - * _Faces - a list of all the numerical face representations found in the image (why is this needed?) + * _Face - a numerical representation of the Nth face found in the image + * _Faces - a list of all the numerical face representations found in the image. (TODO: this is inelegant as it duplicates each Face) * - * Face collection Doc's are created for each person identified and are stored in the Dashboard's faceDocument's list + * unique face Doc's are created for each person identified and are stored in the Dashboard's uniqueFaces field * - * Each Face collection Doc represents all the images found for that person. It has these fields: - * face_label - a string label for the person that was recognized (currently it's just a 'face#') + * Each unique face Doc represents a unique face and collects all matching face images for that person. It has these fields: + * face_label - a string label for the person that was recognized (TODO: currently it's just a 'face#') * face_descriptors - a list of all the face descriptors for different images of the person * face_docList - a list of all image Docs that contain a face for the person */ export class FaceRecognitionHandler { static _instance: FaceRecognitionHandler; private _loadedModels: boolean = false; - private _processingDocs: Set = new Set(); private _pendingLoadDocs: Doc[] = []; - private static imgDocFaceField = (imgDoc: Doc, faceDoc: Doc) => `${Doc.LayoutFieldKey(imgDoc)}_${FaceRecognitionHandler.FaceDocLabel(faceDoc)}`; + private static imgDocFaceField = (imgDoc: Doc, faceDoc: Doc) => `${Doc.LayoutFieldKey(imgDoc)}_${FaceRecognitionHandler.UniqueFaceLabel(faceDoc)}`; /** * initializes an image with an empty list of face descriptors * @param imgDoc image to initialize @@ -49,67 +47,82 @@ export class FaceRecognitionHandler { public static ImageDocFaceDescriptors = (imgDoc: Doc) => imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`] as List>; /** - * Adds metadata to an image Doc describing a face found in the image + * Adds metadata to an image Doc associating it to a unique face that corresponds to a face found in the image * @param imgDoc image Doc containing faces - * @param faceDescriptor descriptor for the face found - * @param faceDoc face collection Doc containing the same face + * @param faceDescriptor descriptor for the face + * @param faceDoc unique face */ - public static ImageDocAddFace = (imgDoc: Doc, faceDescriptor: List, faceDoc: Doc) => { + public static ImageDocAssociateUniqueFace = (imgDoc: Doc, faceDescriptor: List, faceDoc: Doc) => { const faceFieldKey = FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc); if (imgDoc[DocData][faceFieldKey]) { Cast(imgDoc[DocData][faceFieldKey], listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that } else { imgDoc[DocData][faceFieldKey] = new List>([faceDescriptor]); } + Cast(imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`], listSpec('number'), null).push(faceDescriptor as unknown as number); + }; + + /** + * Removes metadata from an image Doc to deassociate it from a unique face + * @param imgDoc image Doc containing faces + * @param faceDoc unique face + */ + public static ImageDocDeassociateUniqueFace = (imgDoc: Doc, faceDoc: Doc) => { + // fill in.. }; /** * returns a list of all face collection Docs on the current dashboard * @returns face collection Doc list */ - public static FaceDocuments = () => DocListCast(Doc.ActiveDashboard?.[DocData].faceDocuments); + public static UniqueFaces = () => DocListCast(Doc.ActiveDashboard?.[DocData].uniqueFaces); - public static DeleteFaceDoc = (faceDoc: Doc) => Doc.ActiveDashboard && Doc.RemoveDocFromList(Doc.ActiveDashboard[DocData], 'faceDocuments', faceDoc); + /** + * Removes a unique face from the set of recognized unique faces + * @param faceDoc unique face Doc + * @returns + */ + public static DeleteUniqueFace = (faceDoc: Doc) => Doc.ActiveDashboard && Doc.RemoveDocFromList(Doc.ActiveDashboard[DocData], 'uniqueFaces', faceDoc); /** * returns the labels associated with a face collection Doc - * @param faceDoc the face collection Doc + * @param faceDoc unique face Doc * @returns label string */ - public static FaceDocLabel = (faceDoc: Doc) => StrCast(faceDoc[DocData].face_label); + public static UniqueFaceLabel = (faceDoc: Doc) => StrCast(faceDoc[DocData].face_label); /** - * Returns all the face descriptors associated with a face collection Doc - * @param faceDoc a face collection Doc + * Returns all the face descriptors associated with a unique face Doc + * @param faceDoc unique face Doc * @returns face descriptors */ - public static FaceDocDescriptors = (faceDoc: Doc) => faceDoc[DocData].face_descriptors as List>; + public static UniqueFaceDescriptors = (faceDoc: Doc) => faceDoc[DocData].face_descriptors as List>; /** - * Returns a list of all face image Docs associated with the face collection - * @param faceDoc a face collection Doc + * Returns a list of all face image Docs associated with a unique face Doc + * @param faceDoc unique face Doc * @returns image Docs */ - public static FaceDocFaces = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_docList); + public static UniqueFaceImages = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_images); /** - * Adds a face image to the list of faces in a face collection Doc, and updates the face collection's list of image descriptors + * Adds a face image to a unique face Doc, and updates the unique face's set of face image descriptors * @param img - image with faces to add to a face collection Doc * @param faceDescriptor - the face descriptor for the face in the image to add - * @param faceDoc - the face collection Doc + * @param faceDoc - unique face Doc */ - public static FaceDocAddImageDocFace = (img: Doc, faceDescriptor: List, faceDoc: Doc) => { - Doc.AddDocToList(faceDoc, 'face_docList', img); + public static UniqueFaceAddFaceImage = (img: Doc, faceDescriptor: List, faceDoc: Doc) => { + Doc.AddDocToList(faceDoc, 'face_images', img); Cast(faceDoc.face_descriptors, listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that }; /** - * Removes a face from a face Doc collection, and updates the face collection's list of image descriptors - * @param imgDoc - image with faces to remove from the face Doc collectoin - * @param faceDoc - the face Doc collection + * Removes a face from a unique Face Doc, and updates the unique face's set of face image descriptors + * @param imgDoc - image with faces to remove + * @param faceDoc - unique face Doc */ - public static FaceDocRemoveImageDocFace = (imgDoc: Doc, faceDoc: Doc) => { - Doc.RemoveDocFromList(faceDoc[DocData], 'face_docList', imgDoc); - faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.FaceDocDescriptors(faceDoc).filter(fd => !(imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] as List>).includes(fd))); + public static UniqueFaceRemoveFaceImage = (imgDoc: Doc, faceDoc: Doc) => { + Doc.RemoveDocFromList(faceDoc[DocData], 'face_images', imgDoc); + faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).filter(fd => !(imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] as List>).includes(fd))); }; constructor() { @@ -118,10 +131,6 @@ export class FaceRecognitionHandler { DocumentManager.Instance.AddAnyViewRenderedCB(dv => FaceRecognitionHandler.Instance.classifyFacesInImage(dv.Document)); } - @computed get examinedFaceDocs() { - return DocListCast(Doc.UserDoc().examinedFaceDocs); - } - /** * Loads the face detection models. */ @@ -138,7 +147,27 @@ export class FaceRecognitionHandler { } /** - * When a document is added, look for matching face documents. + * Creates a new, empty unique face Doc + * @returns a unique face Doc + */ + createUniqueFaceDoc = (dashboard: Doc) => { + const faceDocNum = NumCast(dashboard.uniqueFaces_count) + 1; + dashboard.uniqueFaces_count = faceDocNum; // TODO: improve to a better name + + const uniqueFaceDoc = new Doc(); + uniqueFaceDoc.title = `Face ${faceDocNum}`; + uniqueFaceDoc.face = ''; // just to make prettyprinting look better + uniqueFaceDoc.face_label = `Face${faceDocNum}`; + uniqueFaceDoc.face_images = new List(); + uniqueFaceDoc.face_descriptors = new List>(); + + Doc.ActiveDashboard && Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'uniqueFaces', uniqueFaceDoc); + return uniqueFaceDoc; + }; + + /** + * When a document is added, this finds faces in the images and tries to + * match them to existing unique faces, otherwise new unique face(s) are created. * @param imgDoc The document being analyzed. */ public classifyFacesInImage = async (imgDoc: Doc) => { @@ -154,12 +183,11 @@ export class FaceRecognitionHandler { const imgUrl = ImageCast(imgDoc[Doc.LayoutFieldKey(imgDoc)]); // If the doc isn't an image or currently already been examined or is being processed, stop examining the document. - if (!imgUrl || this.examinedFaceDocs.includes(imgDoc) || this._processingDocs.has(imgDoc)) { + if (!imgUrl || DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc)) { return; } + Doc.AddDocToList(Doc.MyFaceCollection, 'examinedFaceDocs', imgDoc); - // Mark the document as being processed. - this._processingDocs.add(imgDoc); FaceRecognitionHandler.initImageDocFaceDescriptors(imgDoc); // Get the image the document contains and analyze for faces. @@ -170,31 +198,12 @@ export class FaceRecognitionHandler { // For each face detected, find a match. for (const fd of imgDocFaceDescriptions) { - let faceDocMatch = this.findMatchingFaceDoc(fd.descriptor); const faceDescriptor = new List(Array.from(fd.descriptor)); - - if (faceDocMatch) { - FaceRecognitionHandler.FaceDocAddImageDocFace(imgDoc, faceDescriptor, faceDocMatch); - } else { - // If a matching Face Document has not been found, create a new Face Document. - Doc.UserDoc().faceDocNum = NumCast(Doc.UserDoc().faceDocNum) + 1; - - const newFaceDocument = new Doc(); - newFaceDocument.title = `Face ${Doc.UserDoc().faceDocNum}`; - newFaceDocument.face = ''; // just to make prettyprinting look better - newFaceDocument.face_label = `Face${Doc.UserDoc().faceDocNum}`; - newFaceDocument.face_docList = new List([imgDoc]); - newFaceDocument.face_descriptors = new List>([faceDescriptor]); - - Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'faceDocuments', newFaceDocument); - faceDocMatch = newFaceDocument; - } - - // Assign a field in the document of the matching Face Document. - FaceRecognitionHandler.ImageDocAddFace(imgDoc, faceDescriptor, faceDocMatch); - Doc.AddDocToList(Doc.UserDoc(), 'examinedFaceDocs', imgDoc); + const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(Doc.ActiveDashboard); + // Add image to unique face's image collection, and assign image metadata referencing unique face + FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); + FaceRecognitionHandler.ImageDocAssociateUniqueFace(imgDoc, faceDescriptor, matchedUniqueFace); } - this._processingDocs.delete(imgDoc); }; /** @@ -203,19 +212,19 @@ export class FaceRecognitionHandler { * @returns face Doc */ private findMatchingFaceDoc = (faceDescriptor: Float32Array) => { - if (!Doc.ActiveDashboard || FaceRecognitionHandler.FaceDocuments().length < 1) { + if (!Doc.ActiveDashboard || FaceRecognitionHandler.UniqueFaces().length < 1) { return undefined; } - const faceDescriptors = FaceRecognitionHandler.FaceDocuments().map(faceDoc => { - const float32Array = FaceRecognitionHandler.FaceDocDescriptors(faceDoc).map(fd => new Float32Array(Array.from(fd))); - return new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.FaceDocLabel(faceDoc), float32Array); + const faceDescriptors = FaceRecognitionHandler.UniqueFaces().map(faceDoc => { + const float32Array = FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).map(fd => new Float32Array(Array.from(fd))); + return new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(faceDoc), float32Array); }); const faceMatcher = new FaceMatcher(faceDescriptors, 0.6); const match = faceMatcher.findBestMatch(faceDescriptor); if (match.label !== 'unknown') { - for (const faceDoc of FaceRecognitionHandler.FaceDocuments()) { - if (FaceRecognitionHandler.FaceDocLabel(faceDoc) === match.label) { + for (const faceDoc of FaceRecognitionHandler.UniqueFaces()) { + if (FaceRecognitionHandler.UniqueFaceLabel(faceDoc) === match.label) { return faceDoc; } } -- cgit v1.2.3-70-g09d2 From a1f90b7c3a99aff9366a353631ea963c778b4740 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 22 Aug 2024 11:16:39 -0400 Subject: fixing up removing faces from unique faces --- .../collectionFreeForm/FaceCollectionBox.tsx | 2 +- src/client/views/search/FaceRecognitionHandler.tsx | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 6005da6dd..d1db19e43 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -108,8 +108,8 @@ export class UniqueFaceView extends ObservableReactComponent { * @param imgDoc - image Doc to remove */ removeFaceImageFromUniqueFace = undoable((imgDoc: Doc) => { - FaceRecognitionHandler.ImageDocDeassociateUniqueFace(imgDoc, this._props.faceDoc); FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this._props.faceDoc); + FaceRecognitionHandler.ImageDocDisassociateUniqueFace(imgDoc, this._props.faceDoc); }, 'remove doc from face'); render() { diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index c239c775c..487c35d90 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -46,6 +46,15 @@ export class FaceRecognitionHandler { */ public static ImageDocFaceDescriptors = (imgDoc: Doc) => imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`] as List>; + /** + * Adds a face descriptor for a face found in an image + * @param imgDoc image Doc with face + * @param faceDescriptor descriptor of a face + */ + public static ImageDocAddFaceDescriptor = (imgDoc: Doc, faceDescriptor: List) => { + Cast(imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`], listSpec('number'), null).push(faceDescriptor as unknown as number); + }; + /** * Adds metadata to an image Doc associating it to a unique face that corresponds to a face found in the image * @param imgDoc image Doc containing faces @@ -59,7 +68,6 @@ export class FaceRecognitionHandler { } else { imgDoc[DocData][faceFieldKey] = new List>([faceDescriptor]); } - Cast(imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`], listSpec('number'), null).push(faceDescriptor as unknown as number); }; /** @@ -67,10 +75,10 @@ export class FaceRecognitionHandler { * @param imgDoc image Doc containing faces * @param faceDoc unique face */ - public static ImageDocDeassociateUniqueFace = (imgDoc: Doc, faceDoc: Doc) => { - // fill in.. + public static ImageDocDisassociateUniqueFace = (imgDoc: Doc, faceDoc: Doc) => { + const faceFieldKey = FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc); + imgDoc[DocData][faceFieldKey] = undefined; }; - /** * returns a list of all face collection Docs on the current dashboard * @returns face collection Doc list @@ -122,7 +130,8 @@ export class FaceRecognitionHandler { */ public static UniqueFaceRemoveFaceImage = (imgDoc: Doc, faceDoc: Doc) => { Doc.RemoveDocFromList(faceDoc[DocData], 'face_images', imgDoc); - faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).filter(fd => !(imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] as List>).includes(fd))); + // TODO: remove face descriptor from images' list of face descriptors (below doesn't work) + // faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).filter(fd => !(imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] as List>).includes(fd))); }; constructor() { @@ -203,6 +212,8 @@ export class FaceRecognitionHandler { // Add image to unique face's image collection, and assign image metadata referencing unique face FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); FaceRecognitionHandler.ImageDocAssociateUniqueFace(imgDoc, faceDescriptor, matchedUniqueFace); + // save the descriptor for the image's list of faces + FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); } }; -- cgit v1.2.3-70-g09d2 From abac2baf512a545714379fbef3623b46e3be20a8 Mon Sep 17 00:00:00 2001 From: geireann Date: Thu, 22 Aug 2024 13:38:03 -0400 Subject: changes to face recognition to store list of face docs , not descriptors on images. --- .../collectionFreeForm/FaceCollectionBox.tsx | 2 - src/client/views/search/FaceRecognitionHandler.tsx | 61 +++++++++------------- 2 files changed, 26 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index d1db19e43..46d90db86 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -80,7 +80,6 @@ export class UniqueFaceView extends ObservableReactComponent { // assign the face in the image that's closest to the face collection to be the face that's assigned to the collection if (face_match) { - FaceRecognitionHandler.ImageDocAssociateUniqueFace(imgDoc, face_match, this._props.faceDoc); FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this._props.faceDoc); } } @@ -109,7 +108,6 @@ export class UniqueFaceView extends ObservableReactComponent { */ removeFaceImageFromUniqueFace = undoable((imgDoc: Doc) => { FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this._props.faceDoc); - FaceRecognitionHandler.ImageDocDisassociateUniqueFace(imgDoc, this._props.faceDoc); }, 'remove doc from face'); render() { diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 487c35d90..f00c3fdf1 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -16,8 +16,7 @@ import { DocumentManager } from '../../util/DocumentManager'; * collection along with the numerical representation of the face, its face descriptor. * * Image Doc's that are added to one or more face collection Docs will be given these metadata fields: - * _Face - a numerical representation of the Nth face found in the image - * _Faces - a list of all the numerical face representations found in the image. (TODO: this is inelegant as it duplicates each Face) + * _faceDescriptors - a list of all the numerical face representations found in the image. * * unique face Doc's are created for each person identified and are stored in the Dashboard's uniqueFaces field * @@ -31,20 +30,34 @@ export class FaceRecognitionHandler { private _loadedModels: boolean = false; private _pendingLoadDocs: Doc[] = []; - private static imgDocFaceField = (imgDoc: Doc, faceDoc: Doc) => `${Doc.LayoutFieldKey(imgDoc)}_${FaceRecognitionHandler.UniqueFaceLabel(faceDoc)}`; + + /** + * return the metadata field name where unique face Docs are stored + * @param imgDoc image with faces + * @returns name of field + */ + private static ImageDocFaceField = (imgDoc: Doc) => `${Doc.LayoutFieldKey(imgDoc)}_faces`; + + /** + * Returns an array of faceDocs for each face recognized in the image + * @param imgDoc image with faces + * @returns faceDoc array + */ + private static ImageDocFaces = (imgDoc: Doc) => DocListCast(imgDoc[`${Doc.LayoutFieldKey(imgDoc)}_faces`]); + /** * initializes an image with an empty list of face descriptors * @param imgDoc image to initialize */ private static initImageDocFaceDescriptors = (imgDoc: Doc) => { - imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`] = new List>(); + imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_faceDescriptors`] = new List>(); }; /** * returns the face descriptors for each face found on an image Doc * @param imgDoc * @returns list of face descriptors */ - public static ImageDocFaceDescriptors = (imgDoc: Doc) => imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`] as List>; + public static ImageDocFaceDescriptors = (imgDoc: Doc) => imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_faceDescriptors`] as List>; /** * Adds a face descriptor for a face found in an image @@ -52,33 +65,10 @@ export class FaceRecognitionHandler { * @param faceDescriptor descriptor of a face */ public static ImageDocAddFaceDescriptor = (imgDoc: Doc, faceDescriptor: List) => { - Cast(imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_Faces`], listSpec('number'), null).push(faceDescriptor as unknown as number); + Cast(imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_faceDescriptors`], listSpec('number'), null).push(faceDescriptor as unknown as number); }; - /** - * Adds metadata to an image Doc associating it to a unique face that corresponds to a face found in the image - * @param imgDoc image Doc containing faces - * @param faceDescriptor descriptor for the face - * @param faceDoc unique face - */ - public static ImageDocAssociateUniqueFace = (imgDoc: Doc, faceDescriptor: List, faceDoc: Doc) => { - const faceFieldKey = FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc); - if (imgDoc[DocData][faceFieldKey]) { - Cast(imgDoc[DocData][faceFieldKey], listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that - } else { - imgDoc[DocData][faceFieldKey] = new List>([faceDescriptor]); - } - }; - /** - * Removes metadata from an image Doc to deassociate it from a unique face - * @param imgDoc image Doc containing faces - * @param faceDoc unique face - */ - public static ImageDocDisassociateUniqueFace = (imgDoc: Doc, faceDoc: Doc) => { - const faceFieldKey = FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc); - imgDoc[DocData][faceFieldKey] = undefined; - }; /** * returns a list of all face collection Docs on the current dashboard * @returns face collection Doc list @@ -121,17 +111,19 @@ export class FaceRecognitionHandler { public static UniqueFaceAddFaceImage = (img: Doc, faceDescriptor: List, faceDoc: Doc) => { Doc.AddDocToList(faceDoc, 'face_images', img); Cast(faceDoc.face_descriptors, listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + Doc.AddDocToList(img[DocData], FaceRecognitionHandler.ImageDocFaceField(img), faceDoc); }; /** * Removes a face from a unique Face Doc, and updates the unique face's set of face image descriptors - * @param imgDoc - image with faces to remove + * @param img - image with faces to remove * @param faceDoc - unique face Doc */ - public static UniqueFaceRemoveFaceImage = (imgDoc: Doc, faceDoc: Doc) => { - Doc.RemoveDocFromList(faceDoc[DocData], 'face_images', imgDoc); - // TODO: remove face descriptor from images' list of face descriptors (below doesn't work) - // faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).filter(fd => !(imgDoc[DocData][FaceRecognitionHandler.imgDocFaceField(imgDoc, faceDoc)] as List>).includes(fd))); + public static UniqueFaceRemoveFaceImage = (img: Doc, faceDoc: Doc) => { + Doc.RemoveDocFromList(faceDoc[DocData], 'face_images', img); + const descriptorsEqual = (a:List, b:List) => a === b ? true : a.length === b.length ? a.every((element, index) => element === b[index]) : false; + faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).filter(fd => !FaceRecognitionHandler.ImageDocFaceDescriptors(img).some(desc => descriptorsEqual(fd, desc)))); + Doc.RemoveDocFromList(img[DocData], FaceRecognitionHandler.ImageDocFaceField(img), faceDoc); }; constructor() { @@ -211,7 +203,6 @@ export class FaceRecognitionHandler { const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(Doc.ActiveDashboard); // Add image to unique face's image collection, and assign image metadata referencing unique face FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); - FaceRecognitionHandler.ImageDocAssociateUniqueFace(imgDoc, faceDescriptor, matchedUniqueFace); // save the descriptor for the image's list of faces FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); } -- cgit v1.2.3-70-g09d2 From f18978c507dd4c9c0940a1ce17daa2e7000bccdd Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 22 Aug 2024 15:29:45 -0400 Subject: from last --- src/client/views/search/FaceRecognitionHandler.tsx | 116 ++++++++++----------- 1 file changed, 55 insertions(+), 61 deletions(-) (limited to 'src') diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index f00c3fdf1..9b97fdfbd 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -7,6 +7,7 @@ import { listSpec } from '../../../fields/Schema'; import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; import { DocumentType } from '../../documents/DocumentTypes'; import { DocumentManager } from '../../util/DocumentManager'; +import { ImageField } from '../../../fields/URLField'; /** * A singleton class that handles face recognition and manages face Doc collections for each face found. @@ -16,7 +17,8 @@ import { DocumentManager } from '../../util/DocumentManager'; * collection along with the numerical representation of the face, its face descriptor. * * Image Doc's that are added to one or more face collection Docs will be given these metadata fields: - * _faceDescriptors - a list of all the numerical face representations found in the image. + * _faceDescriptors - list of all the numerical face representations found in the image. + * _faces - list of unique face Docs corresponding to recognized faces in the image. * * unique face Doc's are created for each person identified and are stored in the Dashboard's uniqueFaces field * @@ -27,14 +29,33 @@ import { DocumentManager } from '../../util/DocumentManager'; */ export class FaceRecognitionHandler { static _instance: FaceRecognitionHandler; - private _loadedModels: boolean = false; - private _pendingLoadDocs: Doc[] = []; + private _apiModelReady = false; + private _pendingAPIModelReadyDocs: Doc[] = []; + public static get Instance() { + return FaceRecognitionHandler._instance ?? new FaceRecognitionHandler(); + } + + /** + * Loads an image + */ + private static loadImage = (imgUrl: ImageField): Promise => { + const [name, type] = imgUrl.url.href.split('.'); + const imageURL = `${name}_o.${type}`; + + return new Promise((resolve, reject) => { + const img = new Image(); + img.crossOrigin = 'anonymous'; + img.onload = () => resolve(img); + img.onerror = err => reject(err); + img.src = imageURL; + }); + }; /** * return the metadata field name where unique face Docs are stored * @param imgDoc image with faces - * @returns name of field + * @returns name of field */ private static ImageDocFaceField = (imgDoc: Doc) => `${Doc.LayoutFieldKey(imgDoc)}_faces`; @@ -68,7 +89,6 @@ export class FaceRecognitionHandler { Cast(imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_faceDescriptors`], listSpec('number'), null).push(faceDescriptor as unknown as number); }; - /** * returns a list of all face collection Docs on the current dashboard * @returns face collection Doc list @@ -103,7 +123,8 @@ export class FaceRecognitionHandler { public static UniqueFaceImages = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_images); /** - * Adds a face image to a unique face Doc, and updates the unique face's set of face image descriptors + * Adds a face image to a unique face Doc, adds the unique face Doc to the images list of reognized faces, + * and updates the unique face's set of face image descriptors * @param img - image with faces to add to a face collection Doc * @param faceDescriptor - the face descriptor for the face in the image to add * @param faceDoc - unique face Doc @@ -121,37 +142,33 @@ export class FaceRecognitionHandler { */ public static UniqueFaceRemoveFaceImage = (img: Doc, faceDoc: Doc) => { Doc.RemoveDocFromList(faceDoc[DocData], 'face_images', img); - const descriptorsEqual = (a:List, b:List) => a === b ? true : a.length === b.length ? a.every((element, index) => element === b[index]) : false; + const descriptorsEqual = (a: List, b: List) => (a === b ? true : a.length === b.length ? a.every((element, index) => element === b[index]) : false); faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).filter(fd => !FaceRecognitionHandler.ImageDocFaceDescriptors(img).some(desc => descriptorsEqual(fd, desc)))); Doc.RemoveDocFromList(img[DocData], FaceRecognitionHandler.ImageDocFaceField(img), faceDoc); }; constructor() { FaceRecognitionHandler._instance = this; - this.loadModels().then(() => this._pendingLoadDocs.forEach(this.classifyFacesInImage)); + this.loadAPIModels().then(() => this._pendingAPIModelReadyDocs.forEach(this.classifyFacesInImage)); DocumentManager.Instance.AddAnyViewRenderedCB(dv => FaceRecognitionHandler.Instance.classifyFacesInImage(dv.Document)); } /** * Loads the face detection models. */ - loadModels = async () => { + private loadAPIModels = async () => { const MODEL_URL = `/models`; await faceapi.loadFaceDetectionModel(MODEL_URL); await faceapi.loadFaceLandmarkModel(MODEL_URL); await faceapi.loadFaceRecognitionModel(MODEL_URL); - this._loadedModels = true; + this._apiModelReady = true; }; - public static get Instance() { - return FaceRecognitionHandler._instance ?? new FaceRecognitionHandler(); - } - /** * Creates a new, empty unique face Doc * @returns a unique face Doc */ - createUniqueFaceDoc = (dashboard: Doc) => { + private createUniqueFaceDoc = (dashboard: Doc) => { const faceDocNum = NumCast(dashboard.uniqueFaces_count) + 1; dashboard.uniqueFaces_count = faceDocNum; // TODO: improve to a better name @@ -171,40 +188,30 @@ export class FaceRecognitionHandler { * match them to existing unique faces, otherwise new unique face(s) are created. * @param imgDoc The document being analyzed. */ - public classifyFacesInImage = async (imgDoc: Doc) => { - if (!this._loadedModels || !Doc.ActiveDashboard) { - this._pendingLoadDocs.push(imgDoc); - return; - } - - if (imgDoc.type === DocumentType.LOADING && !imgDoc.loadingError) { + private classifyFacesInImage = async (imgDoc: Doc) => { + const activeDashboard = Doc.ActiveDashboard; + if (!this._apiModelReady || !activeDashboard) { + this._pendingAPIModelReadyDocs.push(imgDoc); + } else if (imgDoc.type === DocumentType.LOADING && !imgDoc.loadingError) { setTimeout(() => this.classifyFacesInImage(imgDoc), 1000); - return; - } - - const imgUrl = ImageCast(imgDoc[Doc.LayoutFieldKey(imgDoc)]); - // If the doc isn't an image or currently already been examined or is being processed, stop examining the document. - if (!imgUrl || DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc)) { - return; - } - Doc.AddDocToList(Doc.MyFaceCollection, 'examinedFaceDocs', imgDoc); - - FaceRecognitionHandler.initImageDocFaceDescriptors(imgDoc); - - // Get the image the document contains and analyze for faces. - const [name, type] = imgUrl.url.href.split('.'); - const imageURL = `${name}_o.${type}`; - const img = await this.loadImage(imageURL); - const imgDocFaceDescriptions = await faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors(); - - // For each face detected, find a match. - for (const fd of imgDocFaceDescriptions) { - const faceDescriptor = new List(Array.from(fd.descriptor)); - const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(Doc.ActiveDashboard); - // Add image to unique face's image collection, and assign image metadata referencing unique face - FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); - // save the descriptor for the image's list of faces - FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); + } else { + const imgUrl = ImageCast(imgDoc[Doc.LayoutFieldKey(imgDoc)]); + if (imgUrl && !DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc)) { // only examine Docs that have an image and that haven't already been examined. + Doc.AddDocToList(Doc.MyFaceCollection, 'examinedFaceDocs', imgDoc); + FaceRecognitionHandler.initImageDocFaceDescriptors(imgDoc); + FaceRecognitionHandler.loadImage(imgUrl).then( // load image and analyze faces + img => faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors() + .then(imgDocFaceDescriptions => { // For each face detected, find a match. + for (const fd of imgDocFaceDescriptions) { + const faceDescriptor = new List(Array.from(fd.descriptor)); + FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); // add face descriptor to image's list of descriptors + const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard); + FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); // add image/faceDescriptor to matched unique face + } // + return imgDocFaceDescriptions; + }) + ); + } // prettier-ignore } }; @@ -233,17 +240,4 @@ export class FaceRecognitionHandler { } return undefined; }; - - /** - * Loads an image - */ - private loadImage = (src: string): Promise => { - return new Promise((resolve, reject) => { - const img = new Image(); - img.crossOrigin = 'anonymous'; - img.onload = () => resolve(img); - img.onerror = err => reject(err); - img.src = src; - }); - }; } -- cgit v1.2.3-70-g09d2 From c9c5514c0607dcacaf8b84ef4a7730a815451d98 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 22 Aug 2024 15:36:41 -0400 Subject: from last --- .../collectionFreeForm/FaceCollectionBox.tsx | 2 +- src/client/views/search/FaceRecognitionHandler.tsx | 52 +++++++++++----------- 2 files changed, 27 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 46d90db86..de7c2c027 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -75,7 +75,7 @@ export class UniqueFaceView extends ObservableReactComponent { const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(face))); return match.distance < prev.dist ? { dist: match.distance, face_match: face } : prev; }, - { dist: 1, face_match: new List() as Opt> } + { dist: 1, face_match: undefined as Opt> } ); // assign the face in the image that's closest to the face collection to be the face that's assigned to the collection diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 9b97fdfbd..f5fc12a8d 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -183,6 +183,32 @@ export class FaceRecognitionHandler { return uniqueFaceDoc; }; + /** + * Finds the most similar matching Face Document to a face descriptor + * @param faceDescriptor face descriptor number list + * @returns face Doc + */ + private findMatchingFaceDoc = (faceDescriptor: Float32Array) => { + if (!Doc.ActiveDashboard || FaceRecognitionHandler.UniqueFaces().length < 1) { + return undefined; + } + + const faceDescriptors = FaceRecognitionHandler.UniqueFaces().map(faceDoc => { + const float32Array = FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).map(fd => new Float32Array(Array.from(fd))); + return new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(faceDoc), float32Array); + }); + const faceMatcher = new FaceMatcher(faceDescriptors, 0.6); + const match = faceMatcher.findBestMatch(faceDescriptor); + if (match.label !== 'unknown') { + for (const faceDoc of FaceRecognitionHandler.UniqueFaces()) { + if (FaceRecognitionHandler.UniqueFaceLabel(faceDoc) === match.label) { + return faceDoc; + } + } + } + return undefined; + }; + /** * When a document is added, this finds faces in the images and tries to * match them to existing unique faces, otherwise new unique face(s) are created. @@ -214,30 +240,4 @@ export class FaceRecognitionHandler { } // prettier-ignore } }; - - /** - * Finds the most similar matching Face Document to a face descriptor - * @param faceDescriptor face descriptor number list - * @returns face Doc - */ - private findMatchingFaceDoc = (faceDescriptor: Float32Array) => { - if (!Doc.ActiveDashboard || FaceRecognitionHandler.UniqueFaces().length < 1) { - return undefined; - } - - const faceDescriptors = FaceRecognitionHandler.UniqueFaces().map(faceDoc => { - const float32Array = FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).map(fd => new Float32Array(Array.from(fd))); - return new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(faceDoc), float32Array); - }); - const faceMatcher = new FaceMatcher(faceDescriptors, 0.6); - const match = faceMatcher.findBestMatch(faceDescriptor); - if (match.label !== 'unknown') { - for (const faceDoc of FaceRecognitionHandler.UniqueFaces()) { - if (FaceRecognitionHandler.UniqueFaceLabel(faceDoc) === match.label) { - return faceDoc; - } - } - } - return undefined; - }; } -- cgit v1.2.3-70-g09d2 From efb80649dc524d152b424c8c539e4fee33450403 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 22 Aug 2024 15:54:00 -0400 Subject: added '@' prefix syntax to show metadata field value in keywords box --- src/client/views/KeywordBox.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index fc9c38a11..20cb63d66 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -13,6 +13,7 @@ import { DragManager } from '../util/DragManager'; import { SnappingManager } from '../util/SnappingManager'; import { DocumentView } from './nodes/DocumentView'; import { ObservableReactComponent } from './ObservableReactComponent'; +import { undoable } from '../util/UndoManager'; interface KeywordItemProps { doc: Doc; @@ -123,9 +124,18 @@ export class KeywordItem extends ObservableReactComponent { }; render() { + const keyword = this._props.keyword.replace(/^@/, ''); + const metadata = this._props.keyword.startsWith('@'); return (
- {this._props.keyword} + {metadata ? ( + + {keyword}  + {this._props.doc[keyword] as string}{' '} + + ) : ( + keyword + )} {this.props.isEditing && }
); @@ -218,7 +228,7 @@ export class KeywordBox extends ObservableReactComponent { * Adds the keyword to the document. * @param keyword */ - submitLabel = (keyword: string) => { + submitLabel = undoable((keyword: string) => { // If the active Dashboard does not have a keyword collection, create it. if (Doc.ActiveDashboard && !Doc.ActiveDashboard.myKeywordCollections) { Doc.ActiveDashboard.myKeywordCollections = new List(); @@ -261,7 +271,7 @@ export class KeywordBox extends ObservableReactComponent { this._props.doc![DocData][`${submittedLabel}`] = true; this._currentInput = ''; // Clear the input box } - }; + }, 'added doc label'); @action onInputChange = (e: React.ChangeEvent) => { -- cgit v1.2.3-70-g09d2 From add4926f62b397fc6c655be31a711dd7b83b469a Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 23 Aug 2024 00:45:10 -0400 Subject: starting to cleanup keywordsBox --- src/client/views/KeywordBox.tsx | 390 +++++++++++++++++-------------------- src/client/views/StyleProvider.tsx | 8 +- 2 files changed, 180 insertions(+), 218 deletions(-) (limited to 'src') diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index 20cb63d66..703299ae6 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -3,17 +3,17 @@ import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; -import { Doc, DocListCast } from '../../fields/Doc'; +import { Utils, emptyFunction } from '../../Utils'; +import { Doc, DocListCast, StrListCast } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; import { NumCast, StrCast } from '../../fields/Types'; -import { emptyFunction, Utils } from '../../Utils'; import { DocumentType } from '../documents/DocumentTypes'; import { DragManager } from '../util/DragManager'; +import { SelectionManager } from '../util/SelectionManager'; import { SnappingManager } from '../util/SnappingManager'; -import { DocumentView } from './nodes/DocumentView'; -import { ObservableReactComponent } from './ObservableReactComponent'; import { undoable } from '../util/UndoManager'; +import { ObservableReactComponent } from './ObservableReactComponent'; interface KeywordItemProps { doc: Doc; @@ -28,69 +28,149 @@ interface KeywordItemProps { */ @observer export class KeywordItem extends ObservableReactComponent { - constructor(props: any) { - super(props); - makeObservable(this); - this.ref = React.createRef(); + /** + * return list of all Docs that collect Docs with specified keywords + */ + public static get AllKeywordCollections() { + return DocListCast(Doc.ActiveDashboard?.myKeywordCollections); } + /** + * Find Doc that collects all Docs with given keyword + * @param keyword keyword string + * @returns keyword collection Doc or undefined + */ + public static findKeywordCollectionDoc = (keyword: String) => KeywordItem.AllKeywordCollections.find(doc => doc.title === keyword); - private ref: React.RefObject; + /** + * Creates a Doc that collects Docs with the specified keyword + * @param keyword keyword string + * @returns collection Doc + */ + public static createKeywordCollectionDoc = (keyword: string) => { + const newKeywordCol = new Doc(); + newKeywordCol.title = keyword; + newKeywordCol.collections = new List(); + newKeywordCol[DocData].docs = new List(); + // If the active Dashboard does not have a keyword collection, create it. + if (Doc.ActiveDashboard) { + if (!Doc.ActiveDashboard.myKeywordCollections) Doc.ActiveDashboard.myKeywordCollections = new List(); + Doc.AddDocToList(Doc.ActiveDashboard, 'myKeywordCollections', newKeywordCol); + } + return newKeywordCol; + }; /** - * Gets the documents that a keyword is associated with. + * Gets all Docs that have the specified keyword + * @param keyword keyword string * @returns An array of documents that contain the keyword. */ - getKeywordCollectionDocs = () => { - for (const doc of DocListCast(Doc.ActiveDashboard?.myKeywordCollections)) { - if (doc.title === this._props.keyword) { - return doc[DocData].docs; + public static allDocsWithKeyword = (keyword: string) => DocListCast(KeywordItem.findKeywordCollectionDoc(keyword)?.[DocData].docs); + + /** + * Adds a keyword to the metadata of this document + * @param keyword keyword string + */ + public static addLabelToDoc = (doc: Doc, keyword: string) => { + // If the keyword collection is not in active Dashboard, add it as a new doc, with the keyword as its title. + const keywordCollection = KeywordItem.findKeywordCollectionDoc(keyword) ?? KeywordItem.createKeywordCollectionDoc(keyword); + + // If the document is of type COLLECTION, make it a smart collection, otherwise, add the keyword to the document. + if (doc.type === DocumentType.COL) { + Doc.AddDocToList(keywordCollection[DocData], 'collections', doc); + + // Iterate through the keyword Doc collections and add a copy of the document to each collection + for (const cdoc of DocListCast(keywordCollection[DocData].docs)) { + if (!DocListCast(doc[DocData].data).find(d => Doc.AreProtosEqual(d, cdoc))) { + const newEmbedding = Doc.MakeEmbedding(cdoc); + Doc.AddDocToList(doc[DocData], 'data', newEmbedding); + Doc.SetContainer(newEmbedding, doc); + } + } + } else { + // Add this document to the keyword's collection of associated documents. + Doc.AddDocToList(keywordCollection[DocData], 'docs', doc); + + // Iterate through the keyword document's collections and add a copy of the document to each collection + for (const collection of DocListCast(keywordCollection.collections)) { + if (!DocListCast(collection[DocData].data).find(d => Doc.AreProtosEqual(d, doc))) { + const newEmbedding = Doc.MakeEmbedding(doc); + Doc.AddDocToList(collection[DocData], 'data', newEmbedding); + Doc.SetContainer(newEmbedding, collection); + } } } - return null; + + if (!doc[DocData].data_labels) doc[DocData].data_labels = new List(); + (doc[DocData].data_labels as List).push(keyword); + doc[DocData][keyword] = true; }; + public static RemoveLabel = (doc: Doc, keyword: string, keywordDoc: Doc) => { + if (doc[DocData].data_labels) { + if (doc.type === DocumentType.COL) { + Doc.RemoveDocFromList(keywordDoc[DocData], 'collections', doc); + + for (const cur_doc of KeywordItem.allDocsWithKeyword(keyword)) { + doc[DocData].data = new List(DocListCast(doc[DocData].data).filter(d => !Doc.AreProtosEqual(cur_doc, d))); + } + } else { + Doc.RemoveDocFromList(keywordDoc[DocData], 'docs', doc); + + for (const collection of DocListCast(keywordDoc.collections)) { + collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(d => !Doc.AreProtosEqual(doc, d))); + } + } + } + doc[DocData].data_labels = new List((doc[DocData].data_labels as List).filter(label => label !== keyword)); + doc[DocData][keyword] = undefined; + }; + + private _ref: React.RefObject; + + constructor(props: any) { + super(props); + makeObservable(this); + this._ref = React.createRef(); + } + /** * Creates a smart collection. * @returns */ createCollection = () => { // Get the documents that contain the keyword. - const selected = DocListCast(this.getKeywordCollectionDocs()!); - const newEmbeddings = selected.map(doc => Doc.MakeEmbedding(doc)); + const newEmbeddings = KeywordItem.allDocsWithKeyword(this._props.keyword).map(doc => Doc.MakeEmbedding(doc)); // Create a new collection and set up configurations. const newCollection = ((doc: Doc) => { const docData = doc[DocData]; docData.data = new List(newEmbeddings); docData.title = this._props.keyword; + docData.data_labels = new List([this._props.keyword]); + docData[`${this._props.keyword}`] = true; + docData.showLabels = true; doc._freeform_panX = doc._freeform_panY = 0; + doc._width = 900; + doc._height = 900; + doc.layout_fitWidth = true; return doc; })(Doc.MakeCopy(Doc.UserDoc().emptyCollection as Doc, true)); - newEmbeddings.forEach(embed => (embed.embedContainer = newCollection)); - newCollection._width = 900; - newCollection._height = 900; - newCollection.layout_fitWidth = true; + newEmbeddings.forEach(embed => Doc.SetContainer(embed, newCollection)); // Add the collection to the keyword document's list of associated smart collections. - this._props.keywordDoc.collections = new List([...DocListCast(this._props.keywordDoc.collections), newCollection]); - newCollection[DocData].data_labels = new List([this._props.keyword]); - newCollection[DocData][`${this._props.keyword}`] = true; - newCollection[DocData].showLabels = true; + Doc.AddDocToList(this._props.keywordDoc, 'collections', newCollection); return newCollection; }; @action handleDragStart = (e: React.PointerEvent) => { if (this._props.isEditing) { - const clone = this.ref.current?.cloneNode(true) as HTMLElement; - if (!clone) return; - setupMoveUpEvents( this, e, () => { const dragData = new DragManager.DocumentDragData([this.createCollection()]); - DragManager.StartDocumentDrag([this.ref.current!], dragData, e.clientX, e.clientY, {}); + DragManager.StartDocumentDrag([this._ref.current!], dragData, e.clientX, e.clientY, {}); return true; }, returnFalse, @@ -100,51 +180,34 @@ export class KeywordItem extends ObservableReactComponent { } }; - @action - removeLabel = () => { - if (this._props.doc[DocData].data_labels) { - if (this._props.doc.type === DocumentType.COL) { - const filtered_collections = new List(DocListCast(this._props.keywordDoc.collections).filter(doc => doc !== this._props.doc)); - this._props.keywordDoc.collections = filtered_collections; - - for (const cur_doc of DocListCast(this.getKeywordCollectionDocs()!, [])) { - this._props.doc[DocData].data = new List(DocListCast(this._props.doc[DocData].data).filter(doc => !Doc.AreProtosEqual(cur_doc, doc))); - } - } else { - const filtered_docs = new List(DocListCast(this.getKeywordCollectionDocs()!).filter(doc => doc !== this._props.doc)); - this._props.keywordDoc[DocData].docs = filtered_docs; - - for (const collection of DocListCast(this._props.keywordDoc.collections)) { - collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(doc => !Doc.AreProtosEqual(this._props.doc, doc))); - } - } - } - this._props.doc[DocData].data_labels = (this._props.doc[DocData].data_labels as List).filter(label => label !== this._props.keyword) as List; - this._props.doc![DocData][`${this._props.keyword}`] = false; - }; - render() { const keyword = this._props.keyword.replace(/^@/, ''); const metadata = this._props.keyword.startsWith('@'); return ( -
+
{metadata ? ( {keyword}  - {this._props.doc[keyword] as string}{' '} + {this._props.doc[keyword] as string} ) : ( keyword )} - {this.props.isEditing && } + {this.props.isEditing && ( + KeywordItem.RemoveLabel(this._props.doc, this._props.keyword, this._props.keywordDoc), `remove label ${this._props.keyword}`)} + icon={'X'} + style={{ width: '8px', height: '8px', marginLeft: '10px' }} + /> + )}
); } } interface KeywordBoxProps { - doc: Doc; - isEditing: boolean; + Document: Doc; } /** @@ -152,76 +215,50 @@ interface KeywordBoxProps { */ @observer export class KeywordBox extends ObservableReactComponent { - @observable _currentInput: string = ''; - private height: number = 0; - private ref: React.RefObject; - - @computed - get currentScale() { - return NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1); - } - - @computed - get cur_height() { - return this.ref.current?.offsetHeight ? this.ref.current?.offsetHeight : 0; - } + private _height: number = 0; + private _ref: React.RefObject; constructor(props: any) { super(props); makeObservable(this); - this.ref = React.createRef(); + this._ref = React.createRef(); reaction( () => this.cur_height, () => { - this._props.doc[DocData].keywordHeight = this.height; + this._props.Document[DocData].keywordHeight = this._height; } ); } - componentDidMount(): void { - this.height = this.ref.current?.offsetHeight ? this.ref.current?.offsetHeight : 0; - this._props.doc[DocData].keywordHeight = this.height; - } + @observable _currentInput = ''; + @observable _isEditing = !StrListCast(this._props.Document[DocData].data_labels).length; - componentDidUpdate(prevProps: Readonly): void { - this.height = this.ref.current?.offsetHeight ? this.ref.current?.offsetHeight : 0; - this._props.doc[DocData].keywordHeight = this.height; + @computed get currentScale() { + return NumCast((this._props.Document.embedContainer as Doc)?._freeform_scale, 1); } - @action - setToEditing = () => { - this._props.isEditing = true; - }; + @computed get cur_height() { + return this._ref.current?.offsetHeight ?? 0; + } - @action - setToView = () => { - this._props.isEditing = false; - }; + @computed get isEditing() { + return this._isEditing && SelectionManager.Docs().includes(this._props.Document); + } - /** - * Gets the document associated with a keyword. - * @param keyword The keyword being searched for - * @returns A Doc containing keyword information - */ - getKeywordCollection = (keyword: string) => { - // Look for the keyword document. - for (const doc of DocListCast(Doc.ActiveDashboard!.myKeywordCollections)) { - if (doc.title === keyword) { - return doc; - } - } + componentDidMount() { + this._height = this._ref.current?.offsetHeight ?? 0; + this._props.Document[DocData].keywordHeight = this._height; + } - // If not contained, create a new document and add it to the active Dashboard's keyword list. - const keywordCollection = new Doc(); - keywordCollection.title = keyword; - keywordCollection[DocData].docs = new List(); - keywordCollection.collections = new List(); - if (Doc.ActiveDashboard) { - Doc.ActiveDashboard.myKeywordCollections = new List([...DocListCast(Doc.ActiveDashboard.myKeywordCollections), keywordCollection]); - } + componentDidUpdate(prevProps: Readonly): void { + this._height = this._ref.current?.offsetHeight ?? 0; + this._props.Document[DocData].keywordHeight = this._height; + } - return keywordCollection; + @action + setToEditing = () => { + this._isEditing = true; }; /** @@ -229,94 +266,42 @@ export class KeywordBox extends ObservableReactComponent { * @param keyword */ submitLabel = undoable((keyword: string) => { - // If the active Dashboard does not have a keyword collection, create it. - if (Doc.ActiveDashboard && !Doc.ActiveDashboard.myKeywordCollections) { - Doc.ActiveDashboard.myKeywordCollections = new List(); - } - const submittedLabel = keyword.trim(); - if (submittedLabel && !this._props.doc![DocData][`${submittedLabel}`]) { - // If the keyword collection is not in active Dashboard, add it as a new doc, with the keyword as its title. - const keywordCollection = this.getKeywordCollection(submittedLabel); - - // If the document has no keywords field, create the field. - if (!this._props.doc[DocData].data_labels) { - this._props.doc[DocData].data_labels = new List(); - } - - // If the document is of type COLLECTION, make it a smart collection, otherwise, add the keyword to the document. - if (this._props.doc.type === DocumentType.COL) { - keywordCollection.collections = new List([...DocListCast(keywordCollection.collections), this._props.doc]); - - // Iterate through the keyword document's collections and add a copy of the document to each collection - for (const doc of DocListCast(keywordCollection[DocData].docs)) { - const newEmbedding = Doc.MakeEmbedding(doc); - this._props.doc[DocData].data = new List([...DocListCast(this._props.doc[DocData].data), newEmbedding]); - newEmbedding.embedContainer = this._props.doc; - } - } else { - // Add this document to the keyword's collection of associated documents. - keywordCollection[DocData].docs = new List([...DocListCast(keywordCollection[DocData].docs), this._props.doc]); - - // Iterate through the keyword document's collections and add a copy of the document to each collection - for (const collection of DocListCast(keywordCollection.collections)) { - const newEmbedding = Doc.MakeEmbedding(this._props.doc); - collection[DocData].data = new List([...DocListCast(collection.data), newEmbedding]); - newEmbedding.embedContainer = collection; - } - } - - // Push the keyword to the document's keyword list field. - (this._props.doc![DocData].data_labels! as List).push(submittedLabel); - this._props.doc![DocData][`${submittedLabel}`] = true; + if (submittedLabel && !this._props.Document[DocData][submittedLabel]) { + KeywordItem.addLabelToDoc(this._props.Document, submittedLabel); this._currentInput = ''; // Clear the input box } }, 'added doc label'); - @action - onInputChange = (e: React.ChangeEvent) => { - this._currentInput = e.target.value; - }; - render() { - const keywordsList = this._props.doc[DocData].data_labels ? this._props.doc[DocData].data_labels : new List(); - const seldoc = DocumentView.SelectedDocs().lastElement(); - if (SnappingManager.IsDragging || !(seldoc === this._props.doc) || !this._props.isEditing) { - setTimeout( - action(() => { - if ((keywordsList as List).length === 0) { - this._props.doc[DocData].showLabels = false; - } - this.setToView(); - }) - ); - } + const keywordsList = StrListCast(this._props.Document[DocData].data_labels); - return ( + return !this._props.Document.showLabels ? null : (
-
+
- {(keywordsList as List).map(keyword => { - return ; + {keywordsList.map(keyword => { + const keywordDoc = KeywordItem.findKeywordCollectionDoc(keyword); + return !keywordDoc ? null : ; })}
- {this._props.isEditing ? ( + {this.isEditing ? (
(this._currentInput = e.target.value))} onKeyDown={e => { e.key === 'Enter' ? this.submitLabel(this._currentInput) : null; e.stopPropagation(); @@ -328,45 +313,28 @@ export class KeywordBox extends ObservableReactComponent { style={{ width: '100%', borderRadius: '5px' }} />
- {Doc.ActiveDashboard?.myKeywordCollections ? ( -
- {DocListCast(Doc.ActiveDashboard?.myKeywordCollections).map(doc => { - const keyword = StrCast(doc.title); - return ( -
- ) : ( -
- )} +
+ {KeywordItem.AllKeywordCollections.map(doc => { + const keyword = StrCast(doc.title); + return ( +
- { - if ((keywordsList as List).length === 0) { - this._props.doc[DocData].showLabels = false; - } else { - this.setToView(); - } - }} - icon={'x'} - style={{ width: '4px' }} - /> + {!keywordsList.length ? null : ( // + (this._isEditing = false))} icon="x" /> + )}
- ) : ( -
- )} + ) : null}
); diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 374399445..1e80e7ee5 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -364,13 +364,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); }; - const keywords = () => { - if (doc && doc![DocData].showLabels && (!doc[DocData].data_labels || (doc[DocData].data_labels as List).length === 0)){ - return () - } else if (doc && doc![DocData].data_labels && doc![DocData].showLabels) { - return () - } - } + const keywords = () => doc ? : null; return ( <> {paint()} -- cgit v1.2.3-70-g09d2 From dc7bb2ff07139c45efd3bf66ace0042b76c91ccf Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 23 Aug 2024 11:50:49 -0400 Subject: modified keywordsBox to use tags instead data_labels. made text #tags trigger keywords box. made keywords box fit contents. --- src/client/views/DocumentButtonBar.tsx | 10 +---- src/client/views/KeywordBox.tsx | 51 ++++++++++------------ src/client/views/StyleProvider.tsx | 5 +-- .../views/nodes/formattedText/RichTextRules.ts | 3 +- 4 files changed, 30 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index d42a18e4e..eb157b9ab 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -282,15 +282,9 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( @computed get keywordButton() { - const targetDoc = this.view0?.Document; - return !targetDoc ? null : ( + return !DocumentView.Selected().length ? null : ( Open keyword menu
}> -
{ - targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels; - }}> +
DocumentView.Selected().map(dv => (dv.dataDoc.showLabels = !dv.dataDoc.showLabels))}>
diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index 703299ae6..1460501db 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -18,7 +18,7 @@ import { ObservableReactComponent } from './ObservableReactComponent'; interface KeywordItemProps { doc: Doc; keyword: string; - keywordDoc: Doc; + keywordDoc?: Doc; setToEditing: () => void; isEditing: boolean; } @@ -100,29 +100,28 @@ export class KeywordItem extends ObservableReactComponent { } } - if (!doc[DocData].data_labels) doc[DocData].data_labels = new List(); - (doc[DocData].data_labels as List).push(keyword); - doc[DocData][keyword] = true; + if (!doc[DocData].tags) doc[DocData].tags = new List(); + const tagList = doc[DocData].tags as List; + if (!tagList.includes(keyword)) tagList.push(keyword); }; - public static RemoveLabel = (doc: Doc, keyword: string, keywordDoc: Doc) => { - if (doc[DocData].data_labels) { + public static RemoveLabel = (doc: Doc, keyword: string, keywordDoc?: Doc) => { + if (doc[DocData].tags) { if (doc.type === DocumentType.COL) { - Doc.RemoveDocFromList(keywordDoc[DocData], 'collections', doc); + keywordDoc && Doc.RemoveDocFromList(keywordDoc[DocData], 'collections', doc); for (const cur_doc of KeywordItem.allDocsWithKeyword(keyword)) { doc[DocData].data = new List(DocListCast(doc[DocData].data).filter(d => !Doc.AreProtosEqual(cur_doc, d))); } } else { - Doc.RemoveDocFromList(keywordDoc[DocData], 'docs', doc); + keywordDoc && Doc.RemoveDocFromList(keywordDoc[DocData], 'docs', doc); - for (const collection of DocListCast(keywordDoc.collections)) { + for (const collection of DocListCast(keywordDoc?.collections)) { collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(d => !Doc.AreProtosEqual(doc, d))); } } } - doc[DocData].data_labels = new List((doc[DocData].data_labels as List).filter(label => label !== keyword)); - doc[DocData][keyword] = undefined; + doc[DocData].tags = new List((doc[DocData].tags as List).filter(label => label !== keyword)); }; private _ref: React.RefObject; @@ -146,9 +145,9 @@ export class KeywordItem extends ObservableReactComponent { const docData = doc[DocData]; docData.data = new List(newEmbeddings); docData.title = this._props.keyword; - docData.data_labels = new List([this._props.keyword]); - docData[`${this._props.keyword}`] = true; + docData.tags = new List([this._props.keyword]); docData.showLabels = true; + docData.freeform_fitContentsToBox = true; doc._freeform_panX = doc._freeform_panY = 0; doc._width = 900; doc._height = 900; @@ -158,7 +157,7 @@ export class KeywordItem extends ObservableReactComponent { newEmbeddings.forEach(embed => Doc.SetContainer(embed, newCollection)); // Add the collection to the keyword document's list of associated smart collections. - Doc.AddDocToList(this._props.keywordDoc, 'collections', newCollection); + this._props.keywordDoc && Doc.AddDocToList(this._props.keywordDoc, 'collections', newCollection); return newCollection; }; @@ -181,14 +180,15 @@ export class KeywordItem extends ObservableReactComponent { }; render() { - const keyword = this._props.keyword.replace(/^@/, ''); - const metadata = this._props.keyword.startsWith('@'); + setTimeout(() => KeywordItem.addLabelToDoc(this._props.doc, this._props.keyword)); // bcz: hack to make sure that Docs are added to their keyword Doc collection since metadata can get set anywhere without a guard triggering an add to the collection + const keyword = this._props.keyword.replace(/^#/, ''); + const metadata = keyword.startsWith('@') ? keyword.replace(/^@/, '') : ''; return (
{metadata ? ( {keyword}  - {this._props.doc[keyword] as string} + {this._props.doc[metadata] as string} ) : ( keyword @@ -232,7 +232,7 @@ export class KeywordBox extends ObservableReactComponent { } @observable _currentInput = ''; - @observable _isEditing = !StrListCast(this._props.Document[DocData].data_labels).length; + @observable _isEditing = !StrListCast(this._props.Document[DocData].tags).length; @computed get currentScale() { return NumCast((this._props.Document.embedContainer as Doc)?._freeform_scale, 1); @@ -267,14 +267,12 @@ export class KeywordBox extends ObservableReactComponent { */ submitLabel = undoable((keyword: string) => { const submittedLabel = keyword.trim(); - if (submittedLabel && !this._props.Document[DocData][submittedLabel]) { - KeywordItem.addLabelToDoc(this._props.Document, submittedLabel); - this._currentInput = ''; // Clear the input box - } + submittedLabel && KeywordItem.addLabelToDoc(this._props.Document, '#' + submittedLabel.replace(/^#/, '')); + this._currentInput = ''; // Clear the input box }, 'added doc label'); render() { - const keywordsList = StrListCast(this._props.Document[DocData].data_labels); + const keywordsList = StrListCast(this._props.Document[DocData].tags); return !this._props.Document.showLabels ? null : (
{ }}>
- {keywordsList.map(keyword => { - const keywordDoc = KeywordItem.findKeywordCollectionDoc(keyword); - return !keywordDoc ? null : ; - })} + {keywordsList.map(keyword => ( + + ))}
{this.isEditing ? (
diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 1e80e7ee5..0fb4f7dd1 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -9,9 +9,7 @@ import { BsArrowDown, BsArrowDownUp, BsArrowUp } from 'react-icons/bs'; import { FaFilter } from 'react-icons/fa'; import { ClientUtils, DashColor, lightOrDark } from '../../ClientUtils'; import { Doc, Opt, StrListCast } from '../../fields/Doc'; -import { DocData } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; -import { List } from '../../fields/List'; import { ScriptField } from '../../fields/ScriptField'; import { BoolCast, Cast, DocCast, ImageCast, NumCast, ScriptCast, StrCast } from '../../fields/Types'; import { AudioAnnoState } from '../../server/SharedMediaTypes'; @@ -22,6 +20,7 @@ import { undoable, UndoManager } from '../util/UndoManager'; import { TreeSort } from './collections/TreeSort'; import { Colors } from './global/globalEnums'; import { KeywordBox } from './KeywordBox'; +import { CollectionFreeFormDocumentView } from './nodes/CollectionFreeFormDocumentView'; import { DocumentView, DocumentViewProps } from './nodes/DocumentView'; import { FieldViewProps } from './nodes/FieldView'; import { StyleProp } from './StyleProp'; @@ -364,7 +363,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); }; - const keywords = () => doc ? : null; + const keywords = () => doc && CollectionFreeFormDocumentView.from(props?.DocumentView?.()) ? : null; return ( <> {paint()} diff --git a/src/client/views/nodes/formattedText/RichTextRules.ts b/src/client/views/nodes/formattedText/RichTextRules.ts index 39f589b1e..79c118490 100644 --- a/src/client/views/nodes/formattedText/RichTextRules.ts +++ b/src/client/views/nodes/formattedText/RichTextRules.ts @@ -396,7 +396,7 @@ export class RichTextRules { }), // create an inline view of a tag stored under the '#' field - new InputRule(/#([a-zA-Z_-]+[a-zA-Z_\-0-9]*)\s$/, (state, match, start, end) => { + new InputRule(/#(@?[a-zA-Z_-]+[a-zA-Z_\-0-9]*)\s$/, (state, match, start, end) => { const tag = match[1]; if (!tag) return state.tr; // this.Document[DocData]['#' + tag] = '#' + tag; @@ -404,6 +404,7 @@ export class RichTextRules { if (!tags.includes(tag)) { tags.push(tag); this.Document[DocData].tags = new List(tags); + this.Document[DocData].showLabels = true; } const fieldView = state.schema.nodes.dashField.create({ fieldKey: '#' + tag }); return state.tr -- cgit v1.2.3-70-g09d2 From ac580dab29fc5867680a54b2fbfd68f9d4e2a895 Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 23 Aug 2024 15:23:07 -0400 Subject: changed keyword items to use a doc symbol for storage instead of a field. fixed sizing of docDecoartions around keyeword box to dynaically update accurately. Aded expand/collapse button for editing keywords --- src/client/views/DocumentDecorations.tsx | 4 +- src/client/views/KeywordBox.tsx | 91 ++++++++++++-------------------- src/client/views/StyleProvider.scss | 5 +- src/client/views/StyleProvider.tsx | 2 +- src/fields/Doc.ts | 4 +- src/fields/DocSymbols.ts | 3 ++ 6 files changed, 47 insertions(+), 62 deletions(-) (limited to 'src') diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index ce1138b7a..19c4a097b 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -9,7 +9,7 @@ import { lightOrDark, returnFalse, setupMoveUpEvents } from '../../ClientUtils'; import { Utils, emptyFunction, numberValue } from '../../Utils'; import { DateField } from '../../fields/DateField'; import { Doc, DocListCast, Field, FieldType, HierarchyMapping, ReverseHierarchyMap } from '../../fields/Doc'; -import { AclAdmin, AclAugment, AclEdit, DocData } from '../../fields/DocSymbols'; +import { AclAdmin, AclAugment, AclEdit, DocData, KeywordsHeight } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; import { InkField } from '../../fields/InkField'; import { ScriptField } from '../../fields/ScriptField'; @@ -835,7 +835,7 @@ export class DocumentDecorations extends ObservableReactComponent DocumentView.Selected()} /> diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx index 1460501db..841c5394b 100644 --- a/src/client/views/KeywordBox.tsx +++ b/src/client/views/KeywordBox.tsx @@ -1,19 +1,22 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Button, Colors, IconButton } from 'browndash-components'; -import { action, computed, makeObservable, observable, reaction } from 'mobx'; +import { action, computed, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; +import ResizeObserver from 'resize-observer-polyfill'; import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; import { Utils, emptyFunction } from '../../Utils'; import { Doc, DocListCast, StrListCast } from '../../fields/Doc'; -import { DocData } from '../../fields/DocSymbols'; +import { DocData, KeywordsHeight } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; import { NumCast, StrCast } from '../../fields/Types'; import { DocumentType } from '../documents/DocumentTypes'; import { DragManager } from '../util/DragManager'; -import { SelectionManager } from '../util/SelectionManager'; import { SnappingManager } from '../util/SnappingManager'; import { undoable } from '../util/UndoManager'; import { ObservableReactComponent } from './ObservableReactComponent'; +import { DocumentView } from './nodes/DocumentView'; +import { FontIconBox } from './nodes/FontIconBox/FontIconBox'; interface KeywordItemProps { doc: Doc; @@ -163,20 +166,18 @@ export class KeywordItem extends ObservableReactComponent { @action handleDragStart = (e: React.PointerEvent) => { - if (this._props.isEditing) { - setupMoveUpEvents( - this, - e, - () => { - const dragData = new DragManager.DocumentDragData([this.createCollection()]); - DragManager.StartDocumentDrag([this._ref.current!], dragData, e.clientX, e.clientY, {}); - return true; - }, - returnFalse, - emptyFunction - ); - e.preventDefault(); - } + setupMoveUpEvents( + this, + e, + () => { + const dragData = new DragManager.DocumentDragData([this.createCollection()]); + DragManager.StartDocumentDrag([this._ref.current!], dragData, e.clientX, e.clientY, {}); + return true; + }, + returnFalse, + emptyFunction + ); + e.preventDefault(); }; render() { @@ -197,7 +198,7 @@ export class KeywordItem extends ObservableReactComponent { KeywordItem.RemoveLabel(this._props.doc, this._props.keyword, this._props.keywordDoc), `remove label ${this._props.keyword}`)} - icon={'X'} + icon={} style={{ width: '8px', height: '8px', marginLeft: '10px' }} /> )} @@ -207,7 +208,7 @@ export class KeywordItem extends ObservableReactComponent { } interface KeywordBoxProps { - Document: Doc; + View: DocumentView; } /** @@ -215,50 +216,28 @@ interface KeywordBoxProps { */ @observer export class KeywordBox extends ObservableReactComponent { - private _height: number = 0; private _ref: React.RefObject; constructor(props: any) { super(props); makeObservable(this); this._ref = React.createRef(); - - reaction( - () => this.cur_height, - () => { - this._props.Document[DocData].keywordHeight = this._height; - } - ); } @observable _currentInput = ''; - @observable _isEditing = !StrListCast(this._props.Document[DocData].tags).length; + @observable _isEditing = !StrListCast(this._props.View.dataDoc.tags).length; @computed get currentScale() { - return NumCast((this._props.Document.embedContainer as Doc)?._freeform_scale, 1); + return NumCast((this._props.View.Document.embedContainer as Doc)?._freeform_scale, 1); } - - @computed get cur_height() { - return this._ref.current?.offsetHeight ?? 0; - } - @computed get isEditing() { - return this._isEditing && SelectionManager.Docs().includes(this._props.Document); - } - - componentDidMount() { - this._height = this._ref.current?.offsetHeight ?? 0; - this._props.Document[DocData].keywordHeight = this._height; - } - - componentDidUpdate(prevProps: Readonly): void { - this._height = this._ref.current?.offsetHeight ?? 0; - this._props.Document[DocData].keywordHeight = this._height; + return this._isEditing && DocumentView.SelectedDocs().includes(this._props.View.Document); } @action - setToEditing = () => { - this._isEditing = true; + setToEditing = (editing = true) => { + this._isEditing = editing; + editing && this._props.View.select(false); }; /** @@ -267,17 +246,17 @@ export class KeywordBox extends ObservableReactComponent { */ submitLabel = undoable((keyword: string) => { const submittedLabel = keyword.trim(); - submittedLabel && KeywordItem.addLabelToDoc(this._props.Document, '#' + submittedLabel.replace(/^#/, '')); + submittedLabel && KeywordItem.addLabelToDoc(this._props.View.Document, '#' + submittedLabel.replace(/^#/, '')); this._currentInput = ''; // Clear the input box }, 'added doc label'); render() { - const keywordsList = StrListCast(this._props.Document[DocData].tags); + const keywordsList = StrListCast(this._props.View.dataDoc.tags); - return !this._props.Document.showLabels ? null : ( + return !this._props.View.Document.showLabels ? null : (
r && new ResizeObserver(action(() => (this._props.View.Document[KeywordsHeight] = r?.getBoundingClientRect().height ?? 0))).observe(r)} style={{ transformOrigin: 'top left', maxWidth: `${100 * this.currentScale}%`, @@ -288,8 +267,11 @@ export class KeywordBox extends ObservableReactComponent { }}>
+ {!keywordsList.length ? null : ( // + this.setToEditing(!this._isEditing)} icon={} /> + )} {keywordsList.map(keyword => ( - + ))}
{this.isEditing ? ( @@ -325,11 +307,6 @@ export class KeywordBox extends ObservableReactComponent { ); })}
-
- {!keywordsList.length ? null : ( // - (this._isEditing = false))} icon="x" /> - )} -
) : null}
diff --git a/src/client/views/StyleProvider.scss b/src/client/views/StyleProvider.scss index 1d41697f5..6f6939d54 100644 --- a/src/client/views/StyleProvider.scss +++ b/src/client/views/StyleProvider.scss @@ -65,10 +65,13 @@ .keywords-list { display: flex; flex-wrap: wrap; + .iconButton-container { + min-height: unset !important; + } } .keyword { - padding: 5px 5px; + padding: 1px 5px; background-color: lightblue; border: 1px solid black; border-radius: 5px; diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 0fb4f7dd1..a841ec63a 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -363,7 +363,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); }; - const keywords = () => doc && CollectionFreeFormDocumentView.from(props?.DocumentView?.()) ? : null; + const keywords = () => props?.DocumentView?.() && CollectionFreeFormDocumentView.from(props.DocumentView()) ? : null; return ( <> {paint()} diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index ffb5aab79..f246f49e5 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -11,7 +11,7 @@ import { ClientUtils, incrementTitleCopy } from '../ClientUtils'; import { AclAdmin, AclAugment, AclEdit, AclPrivate, AclReadonly, Animation, AudioPlay, Brushed, CachedUpdates, DirectLinks, DocAcl, DocCss, DocData, DocLayout, DocViews, FieldKeys, FieldTuples, ForceServerWrite, Height, Highlight, - Initializing, Self, SelfProxy, TransitionTimer, UpdatingFromServer, Width + Initializing, KeywordsHeight, Self, SelfProxy, TransitionTimer, UpdatingFromServer, Width } from './DocSymbols'; // prettier-ignore import { Copy, FieldChanged, HandleUpdate, Id, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; import { InkTool } from './InkField'; @@ -303,6 +303,7 @@ export class Doc extends RefField { Height, Highlight, Initializing, + KeywordsHeight, Self, SelfProxy, UpdatingFromServer, @@ -368,6 +369,7 @@ export class Doc extends RefField { @observable public [Highlight]: boolean = false; @observable public [Brushed]: boolean = false; @observable public [DocViews] = new ObservableSet(); + @observable public [KeywordsHeight]: number = 0; private [Self] = this; private [SelfProxy]: Doc; diff --git a/src/fields/DocSymbols.ts b/src/fields/DocSymbols.ts index 837fcc90e..9e091ab29 100644 --- a/src/fields/DocSymbols.ts +++ b/src/fields/DocSymbols.ts @@ -1,3 +1,5 @@ +// NOTE: These symbols must be added to Doc.ts constructor !! + // Symbols for fundamental Doc operations such as: permissions, field and proxy access and server interactions export const AclPrivate = Symbol('DocAclOwnerOnly'); export const AclReadonly = Symbol('DocAclReadOnly'); @@ -30,5 +32,6 @@ export const DocViews = Symbol('DocViews'); export const Brushed = Symbol('DocBrushed'); export const DocCss = Symbol('DocCss'); export const TransitionTimer = Symbol('DocTransitionTimer'); +export const KeywordsHeight = Symbol('DocKeywordsHeight'); export const DashVersion = 'v0.8.0'; -- cgit v1.2.3-70-g09d2 From a52cda0a098716c24b3c6aafe23d2bd9267c72d9 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 10:43:43 -0400 Subject: moved KeywordsBox to TagsView. changed imagellable to use tags --- src/client/documents/Documents.ts | 8 +- src/client/views/DocumentButtonBar.tsx | 2 +- src/client/views/DocumentDecorations.tsx | 6 +- src/client/views/KeywordBox.tsx | 316 ------------------- src/client/views/StyleProvider.scss | 64 ---- src/client/views/StyleProvider.tsx | 6 +- src/client/views/TagsView.scss | 63 ++++ src/client/views/TagsView.tsx | 344 +++++++++++++++++++++ .../collectionFreeForm/ImageLabelBox.tsx | 58 ++-- src/client/views/nodes/DocumentView.tsx | 1 + .../views/nodes/formattedText/RichTextRules.ts | 2 +- src/fields/Doc.ts | 4 +- src/fields/DocSymbols.ts | 1 - 13 files changed, 447 insertions(+), 428 deletions(-) delete mode 100644 src/client/views/KeywordBox.tsx create mode 100644 src/client/views/TagsView.scss create mode 100644 src/client/views/TagsView.tsx (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 6b5469cca..c0e4e961c 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -43,7 +43,7 @@ export class FInfo { description: string = ''; readOnly: boolean = false; fieldType?: FInfoFieldType; - values?: FieldType[] | Map; + values?: FieldType[]; filterable?: boolean = true; // can be used as a Filter in FilterPanel // format?: string; // format to display values (e.g, decimal places, $, etc) @@ -144,10 +144,6 @@ class ListInfo extends FInfo { fieldType? = FInfoFieldType.list; values?: List[] = []; } -class MapInfo extends FInfo { - fieldType? = FInfoFieldType.map; - values?: Map = new Map(); -} type BOOLt = BoolInfo | boolean; type NUMt = NumInfo | number; type STRt = StrInfo | string; @@ -160,7 +156,6 @@ type COLLt = CTypeInfo | CollectionViewType; type DROPt = DAInfo | dropActionType; type DATEt = DateInfo | number; type DTYPEt = DTypeInfo | string; -type MAPt = MapInfo | Map; export class DocumentOptions { // coordinate and dimensions depending on view x?: NUMt = new NumInfo('horizontal coordinate in freeform view', false); @@ -489,7 +484,6 @@ export class DocumentOptions { cardSort?: STRt = new StrInfo('way cards are sorted in deck view'); cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) - keywords?: MAPt = new MapInfo('keywords', true); } export const DocOptions = new DocumentOptions(); diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index eb157b9ab..58b7f207c 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -284,7 +284,7 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( get keywordButton() { return !DocumentView.Selected().length ? null : ( Open keyword menu
}> -
DocumentView.Selected().map(dv => (dv.dataDoc.showLabels = !dv.dataDoc.showLabels))}> +
DocumentView.Selected().map(dv => (dv.dataDoc.showTags = !dv.dataDoc.showTags))}>
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 19c4a097b..da35459bb 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -1,3 +1,4 @@ +import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; import { IconButton } from 'browndash-components'; @@ -9,7 +10,7 @@ import { lightOrDark, returnFalse, setupMoveUpEvents } from '../../ClientUtils'; import { Utils, emptyFunction, numberValue } from '../../Utils'; import { DateField } from '../../fields/DateField'; import { Doc, DocListCast, Field, FieldType, HierarchyMapping, ReverseHierarchyMap } from '../../fields/Doc'; -import { AclAdmin, AclAugment, AclEdit, DocData, KeywordsHeight } from '../../fields/DocSymbols'; +import { AclAdmin, AclAugment, AclEdit, DocData } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; import { InkField } from '../../fields/InkField'; import { ScriptField } from '../../fields/ScriptField'; @@ -34,7 +35,6 @@ import { DocumentView } from './nodes/DocumentView'; import { ImageBox } from './nodes/ImageBox'; import { OpenWhere, OpenWhereMod } from './nodes/OpenWhere'; import { FormattedTextBox } from './nodes/formattedText/FormattedTextBox'; -import { IconProp } from '@fortawesome/fontawesome-svg-core'; interface DocumentDecorationsProps { PanelWidth: number; @@ -835,7 +835,7 @@ export class DocumentDecorations extends ObservableReactComponent DocumentView.Selected()} /> diff --git a/src/client/views/KeywordBox.tsx b/src/client/views/KeywordBox.tsx deleted file mode 100644 index 841c5394b..000000000 --- a/src/client/views/KeywordBox.tsx +++ /dev/null @@ -1,316 +0,0 @@ -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { Button, Colors, IconButton } from 'browndash-components'; -import { action, computed, makeObservable, observable } from 'mobx'; -import { observer } from 'mobx-react'; -import React from 'react'; -import ResizeObserver from 'resize-observer-polyfill'; -import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; -import { Utils, emptyFunction } from '../../Utils'; -import { Doc, DocListCast, StrListCast } from '../../fields/Doc'; -import { DocData, KeywordsHeight } from '../../fields/DocSymbols'; -import { List } from '../../fields/List'; -import { NumCast, StrCast } from '../../fields/Types'; -import { DocumentType } from '../documents/DocumentTypes'; -import { DragManager } from '../util/DragManager'; -import { SnappingManager } from '../util/SnappingManager'; -import { undoable } from '../util/UndoManager'; -import { ObservableReactComponent } from './ObservableReactComponent'; -import { DocumentView } from './nodes/DocumentView'; -import { FontIconBox } from './nodes/FontIconBox/FontIconBox'; - -interface KeywordItemProps { - doc: Doc; - keyword: string; - keywordDoc?: Doc; - setToEditing: () => void; - isEditing: boolean; -} - -/** - * A component that handles individual keywords. - */ -@observer -export class KeywordItem extends ObservableReactComponent { - /** - * return list of all Docs that collect Docs with specified keywords - */ - public static get AllKeywordCollections() { - return DocListCast(Doc.ActiveDashboard?.myKeywordCollections); - } - /** - * Find Doc that collects all Docs with given keyword - * @param keyword keyword string - * @returns keyword collection Doc or undefined - */ - public static findKeywordCollectionDoc = (keyword: String) => KeywordItem.AllKeywordCollections.find(doc => doc.title === keyword); - - /** - * Creates a Doc that collects Docs with the specified keyword - * @param keyword keyword string - * @returns collection Doc - */ - public static createKeywordCollectionDoc = (keyword: string) => { - const newKeywordCol = new Doc(); - newKeywordCol.title = keyword; - newKeywordCol.collections = new List(); - newKeywordCol[DocData].docs = new List(); - // If the active Dashboard does not have a keyword collection, create it. - if (Doc.ActiveDashboard) { - if (!Doc.ActiveDashboard.myKeywordCollections) Doc.ActiveDashboard.myKeywordCollections = new List(); - Doc.AddDocToList(Doc.ActiveDashboard, 'myKeywordCollections', newKeywordCol); - } - - return newKeywordCol; - }; - /** - * Gets all Docs that have the specified keyword - * @param keyword keyword string - * @returns An array of documents that contain the keyword. - */ - public static allDocsWithKeyword = (keyword: string) => DocListCast(KeywordItem.findKeywordCollectionDoc(keyword)?.[DocData].docs); - - /** - * Adds a keyword to the metadata of this document - * @param keyword keyword string - */ - public static addLabelToDoc = (doc: Doc, keyword: string) => { - // If the keyword collection is not in active Dashboard, add it as a new doc, with the keyword as its title. - const keywordCollection = KeywordItem.findKeywordCollectionDoc(keyword) ?? KeywordItem.createKeywordCollectionDoc(keyword); - - // If the document is of type COLLECTION, make it a smart collection, otherwise, add the keyword to the document. - if (doc.type === DocumentType.COL) { - Doc.AddDocToList(keywordCollection[DocData], 'collections', doc); - - // Iterate through the keyword Doc collections and add a copy of the document to each collection - for (const cdoc of DocListCast(keywordCollection[DocData].docs)) { - if (!DocListCast(doc[DocData].data).find(d => Doc.AreProtosEqual(d, cdoc))) { - const newEmbedding = Doc.MakeEmbedding(cdoc); - Doc.AddDocToList(doc[DocData], 'data', newEmbedding); - Doc.SetContainer(newEmbedding, doc); - } - } - } else { - // Add this document to the keyword's collection of associated documents. - Doc.AddDocToList(keywordCollection[DocData], 'docs', doc); - - // Iterate through the keyword document's collections and add a copy of the document to each collection - for (const collection of DocListCast(keywordCollection.collections)) { - if (!DocListCast(collection[DocData].data).find(d => Doc.AreProtosEqual(d, doc))) { - const newEmbedding = Doc.MakeEmbedding(doc); - Doc.AddDocToList(collection[DocData], 'data', newEmbedding); - Doc.SetContainer(newEmbedding, collection); - } - } - } - - if (!doc[DocData].tags) doc[DocData].tags = new List(); - const tagList = doc[DocData].tags as List; - if (!tagList.includes(keyword)) tagList.push(keyword); - }; - - public static RemoveLabel = (doc: Doc, keyword: string, keywordDoc?: Doc) => { - if (doc[DocData].tags) { - if (doc.type === DocumentType.COL) { - keywordDoc && Doc.RemoveDocFromList(keywordDoc[DocData], 'collections', doc); - - for (const cur_doc of KeywordItem.allDocsWithKeyword(keyword)) { - doc[DocData].data = new List(DocListCast(doc[DocData].data).filter(d => !Doc.AreProtosEqual(cur_doc, d))); - } - } else { - keywordDoc && Doc.RemoveDocFromList(keywordDoc[DocData], 'docs', doc); - - for (const collection of DocListCast(keywordDoc?.collections)) { - collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(d => !Doc.AreProtosEqual(doc, d))); - } - } - } - doc[DocData].tags = new List((doc[DocData].tags as List).filter(label => label !== keyword)); - }; - - private _ref: React.RefObject; - - constructor(props: any) { - super(props); - makeObservable(this); - this._ref = React.createRef(); - } - - /** - * Creates a smart collection. - * @returns - */ - createCollection = () => { - // Get the documents that contain the keyword. - const newEmbeddings = KeywordItem.allDocsWithKeyword(this._props.keyword).map(doc => Doc.MakeEmbedding(doc)); - - // Create a new collection and set up configurations. - const newCollection = ((doc: Doc) => { - const docData = doc[DocData]; - docData.data = new List(newEmbeddings); - docData.title = this._props.keyword; - docData.tags = new List([this._props.keyword]); - docData.showLabels = true; - docData.freeform_fitContentsToBox = true; - doc._freeform_panX = doc._freeform_panY = 0; - doc._width = 900; - doc._height = 900; - doc.layout_fitWidth = true; - return doc; - })(Doc.MakeCopy(Doc.UserDoc().emptyCollection as Doc, true)); - newEmbeddings.forEach(embed => Doc.SetContainer(embed, newCollection)); - - // Add the collection to the keyword document's list of associated smart collections. - this._props.keywordDoc && Doc.AddDocToList(this._props.keywordDoc, 'collections', newCollection); - return newCollection; - }; - - @action - handleDragStart = (e: React.PointerEvent) => { - setupMoveUpEvents( - this, - e, - () => { - const dragData = new DragManager.DocumentDragData([this.createCollection()]); - DragManager.StartDocumentDrag([this._ref.current!], dragData, e.clientX, e.clientY, {}); - return true; - }, - returnFalse, - emptyFunction - ); - e.preventDefault(); - }; - - render() { - setTimeout(() => KeywordItem.addLabelToDoc(this._props.doc, this._props.keyword)); // bcz: hack to make sure that Docs are added to their keyword Doc collection since metadata can get set anywhere without a guard triggering an add to the collection - const keyword = this._props.keyword.replace(/^#/, ''); - const metadata = keyword.startsWith('@') ? keyword.replace(/^@/, '') : ''; - return ( -
- {metadata ? ( - - {keyword}  - {this._props.doc[metadata] as string} - - ) : ( - keyword - )} - {this.props.isEditing && ( - KeywordItem.RemoveLabel(this._props.doc, this._props.keyword, this._props.keywordDoc), `remove label ${this._props.keyword}`)} - icon={} - style={{ width: '8px', height: '8px', marginLeft: '10px' }} - /> - )} -
- ); - } -} - -interface KeywordBoxProps { - View: DocumentView; -} - -/** - * A component that handles the keyword display for documents. - */ -@observer -export class KeywordBox extends ObservableReactComponent { - private _ref: React.RefObject; - - constructor(props: any) { - super(props); - makeObservable(this); - this._ref = React.createRef(); - } - - @observable _currentInput = ''; - @observable _isEditing = !StrListCast(this._props.View.dataDoc.tags).length; - - @computed get currentScale() { - return NumCast((this._props.View.Document.embedContainer as Doc)?._freeform_scale, 1); - } - @computed get isEditing() { - return this._isEditing && DocumentView.SelectedDocs().includes(this._props.View.Document); - } - - @action - setToEditing = (editing = true) => { - this._isEditing = editing; - editing && this._props.View.select(false); - }; - - /** - * Adds the keyword to the document. - * @param keyword - */ - submitLabel = undoable((keyword: string) => { - const submittedLabel = keyword.trim(); - submittedLabel && KeywordItem.addLabelToDoc(this._props.View.Document, '#' + submittedLabel.replace(/^#/, '')); - this._currentInput = ''; // Clear the input box - }, 'added doc label'); - - render() { - const keywordsList = StrListCast(this._props.View.dataDoc.tags); - - return !this._props.View.Document.showLabels ? null : ( -
r && new ResizeObserver(action(() => (this._props.View.Document[KeywordsHeight] = r?.getBoundingClientRect().height ?? 0))).observe(r)} - style={{ - transformOrigin: 'top left', - maxWidth: `${100 * this.currentScale}%`, - width: 'max-content', - transform: `scale(${1 / this.currentScale})`, - backgroundColor: this.isEditing ? Colors.LIGHT_GRAY : Colors.TRANSPARENT, - borderColor: this.isEditing ? Colors.BLACK : Colors.TRANSPARENT, - }}> -
-
- {!keywordsList.length ? null : ( // - this.setToEditing(!this._isEditing)} icon={} /> - )} - {keywordsList.map(keyword => ( - - ))} -
- {this.isEditing ? ( -
-
- (this._currentInput = e.target.value))} - onKeyDown={e => { - e.key === 'Enter' ? this.submitLabel(this._currentInput) : null; - e.stopPropagation(); - }} - type="text" - placeholder="Input keywords for document..." - aria-label="keyword-input" - className="keyword-input" - style={{ width: '100%', borderRadius: '5px' }} - /> -
-
- {KeywordItem.AllKeywordCollections.map(doc => { - const keyword = StrCast(doc.title); - return ( -
-
- ) : null} -
-
- ); - } -} diff --git a/src/client/views/StyleProvider.scss b/src/client/views/StyleProvider.scss index 6f6939d54..ce00f6101 100644 --- a/src/client/views/StyleProvider.scss +++ b/src/client/views/StyleProvider.scss @@ -53,67 +53,3 @@ .styleProvider-treeView-icon { opacity: 0; } - -.keywords-container { - display: flex; - flex-wrap: wrap; - flex-direction: column; - border: 1px solid; - border-radius: 4px; -} - -.keywords-list { - display: flex; - flex-wrap: wrap; - .iconButton-container { - min-height: unset !important; - } -} - -.keyword { - padding: 1px 5px; - background-color: lightblue; - border: 1px solid black; - border-radius: 5px; - white-space: nowrap; - display: flex; - align-items: center; -} - -.keyword-suggestions-box { - display: flex; - flex-wrap: wrap; - margin: auto; - align-self: center; - width: 90%; - border: 1px solid black; - border-radius: 2px; - margin-top: 8px; -} - -.keyword-suggestion { - cursor: pointer; - padding: 1px 1px; - margin: 2px 2px; - background-color: lightblue; - border: 1px solid black; - border-radius: 5px; - white-space: nowrap; - display: flex; - align-items: center; -} - -.keyword-editing-box { - margin-top: 8px; -} - -.keyword-input-box { - margin: auto; - align-self: center; - width: 90%; -} - -.keyword-buttons { - margin-left: auto; - width: 10%; -} diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index a841ec63a..e48994586 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -19,7 +19,7 @@ import { SnappingManager } from '../util/SnappingManager'; import { undoable, UndoManager } from '../util/UndoManager'; import { TreeSort } from './collections/TreeSort'; import { Colors } from './global/globalEnums'; -import { KeywordBox } from './KeywordBox'; +import { TagsView } from './TagsView'; import { CollectionFreeFormDocumentView } from './nodes/CollectionFreeFormDocumentView'; import { DocumentView, DocumentViewProps } from './nodes/DocumentView'; import { FieldViewProps } from './nodes/FieldView'; @@ -363,14 +363,14 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); }; - const keywords = () => props?.DocumentView?.() && CollectionFreeFormDocumentView.from(props.DocumentView()) ? : null; + const tags = () => props?.DocumentView?.() && CollectionFreeFormDocumentView.from(props.DocumentView()) ? : null; return ( <> {paint()} {lock()} {filter()} {audio()} - {keywords()} + {tags()} ); } diff --git a/src/client/views/TagsView.scss b/src/client/views/TagsView.scss new file mode 100644 index 000000000..f7365a51b --- /dev/null +++ b/src/client/views/TagsView.scss @@ -0,0 +1,63 @@ +.tagsView-container { + display: flex; + flex-wrap: wrap; + flex-direction: column; + border: 1px solid; + border-radius: 4px; +} + +.tagsView-list { + display: flex; + flex-wrap: wrap; + .iconButton-container { + min-height: unset !important; + } +} + +.tagItem { + padding: 1px 5px; + background-color: lightblue; + border: 1px solid black; + border-radius: 5px; + white-space: nowrap; + display: flex; + align-items: center; +} + +.tagsView-suggestions-box { + display: flex; + flex-wrap: wrap; + margin: auto; + align-self: center; + width: 90%; + border: 1px solid black; + border-radius: 2px; + margin-top: 8px; +} + +.tagsView-suggestion { + cursor: pointer; + padding: 1px 1px; + margin: 2px 2px; + background-color: lightblue; + border: 1px solid black; + border-radius: 5px; + white-space: nowrap; + display: flex; + align-items: center; +} + +.tagsView-editing-box { + margin-top: 8px; +} + +.tagsView-input-box { + margin: auto; + align-self: center; + width: 90%; +} + +.tagsView-buttons { + margin-left: auto; + width: 10%; +} diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx new file mode 100644 index 000000000..dffd1e096 --- /dev/null +++ b/src/client/views/TagsView.tsx @@ -0,0 +1,344 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Button, Colors, IconButton } from 'browndash-components'; +import { action, computed, makeObservable, observable } from 'mobx'; +import { observer } from 'mobx-react'; +import React from 'react'; +import ResizeObserver from 'resize-observer-polyfill'; +import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; +import { emptyFunction } from '../../Utils'; +import { Doc, DocListCast, Opt, StrListCast } from '../../fields/Doc'; +import { DocData } from '../../fields/DocSymbols'; +import { List } from '../../fields/List'; +import { NumCast, StrCast } from '../../fields/Types'; +import { DocumentType } from '../documents/DocumentTypes'; +import { DragManager } from '../util/DragManager'; +import { SnappingManager } from '../util/SnappingManager'; +import { undoable } from '../util/UndoManager'; +import { ObservableReactComponent } from './ObservableReactComponent'; +import './TagsView.scss'; +import { DocumentView } from './nodes/DocumentView'; + +/** + * The TagsView is a metadata input/display panel shown at the bottom of a DocumentView in a freeform collection. + * + * This panel allow sthe user to add metadata tags to a Doc, and to display those tags, or any metadata field + * in a panel of 'buttons' (TagItems) just below the DocumentView. TagItems are interactive - + * the user can drag them off in order to display a collection of all documents that share the tag value. + * + * The tags that are added using the panel are the same as the #tags that can entered in a text Doc. + * Note that tags starting with #@ display a metadata key/value pair instead of the tag itself. + * e.g., '#@author' shows the document author + * + */ + +interface TagItemProps { + doc: Doc; + tag: string; + tagDoc: Opt; + showRemoveUI: boolean; + setToEditing: () => void; +} + +/** + * Interactive component that display a single metadata tag or value. + * + * These items can be dragged and dropped to create a collection of Docs that + * share the same metadata tag / value. + */ +@observer +export class TagItem extends ObservableReactComponent { + /** + * return list of all tag Docs (ie, Doc that are collections of Docs sharing a specific tag / value) + */ + public static get AllTagCollectionDocs() { + return DocListCast(Doc.ActiveDashboard?.myTagCollections); + } + /** + * Find tag Doc that collects all Docs with given tag / value + * @param tag tag string + * @returns tag collection Doc or undefined + */ + public static findTagCollectionDoc = (tag: String) => TagItem.AllTagCollectionDocs.find(doc => doc.title === tag); + + /** + * Creates a Doc that collects Docs with the specified tag / value + * @param tag tag string + * @returns tag collection Doc + */ + public static createTagCollectionDoc = (tag: string) => { + const newTagCol = new Doc(); + newTagCol.title = tag; + newTagCol.collections = new List(); + newTagCol[DocData].docs = new List(); + // If the active Dashboard does not have a tag Doc collection, create it. + if (Doc.ActiveDashboard) { + if (!Doc.ActiveDashboard.myTagCollections) Doc.ActiveDashboard.myTagCollections = new List(); + Doc.AddDocToList(Doc.ActiveDashboard, 'myTagCollections', newTagCol); + } + + return newTagCol; + }; + /** + * Gets all Docs that have the specified tag / value + * @param tag tag string + * @returns An array of documents that contain the tag. + */ + public static allDocsWithTag = (tag: string) => DocListCast(TagItem.findTagCollectionDoc(tag)?.[DocData].docs); + + /** + * Adds a tag to the metadata of this document and adds the Doc to the corresponding tag collection Doc (or creates it) + * @param tag tag string + */ + public static addTagToDoc = (doc: Doc, tag: string) => { + // If the tag collection is not in active Dashboard, add it as a new doc, with the tag as its title. + const tagCollection = TagItem.findTagCollectionDoc(tag) ?? TagItem.createTagCollectionDoc(tag); + + // If the document is of type COLLECTION, make it a smart collection, otherwise, add the tag to the document. + if (doc.type === DocumentType.COL) { + Doc.AddDocToList(tagCollection[DocData], 'collections', doc); + + // Iterate through the tag Doc collections and add a copy of the document to each collection + for (const cdoc of DocListCast(tagCollection[DocData].docs)) { + if (!DocListCast(doc[DocData].data).find(d => Doc.AreProtosEqual(d, cdoc))) { + const newEmbedding = Doc.MakeEmbedding(cdoc); + Doc.AddDocToList(doc[DocData], 'data', newEmbedding); + Doc.SetContainer(newEmbedding, doc); + } + } + } else { + // Add this document to the tag's collection of associated documents. + Doc.AddDocToList(tagCollection[DocData], 'docs', doc); + + // Iterate through the tag document's collections and add a copy of the document to each collection + for (const collection of DocListCast(tagCollection.collections)) { + if (!DocListCast(collection[DocData].data).find(d => Doc.AreProtosEqual(d, doc))) { + const newEmbedding = Doc.MakeEmbedding(doc); + Doc.AddDocToList(collection[DocData], 'data', newEmbedding); + Doc.SetContainer(newEmbedding, collection); + } + } + } + + if (!doc[DocData].tags) doc[DocData].tags = new List(); + const tagList = doc[DocData].tags as List; + if (!tagList.includes(tag)) tagList.push(tag); + }; + + /** + * Removes a tag from a Doc and removes the Doc from the corresponding tag collection Doc + * @param doc Doc to add tag + * @param tag tag string + * @param tagDoc doc that collections the Docs with the tag + */ + public static removeTagFromDoc = (doc: Doc, tag: string, tagDoc?: Doc) => { + if (doc[DocData].tags) { + if (doc.type === DocumentType.COL) { + tagDoc && Doc.RemoveDocFromList(tagDoc[DocData], 'collections', doc); + + for (const cur_doc of TagItem.allDocsWithTag(tag)) { + doc[DocData].data = new List(DocListCast(doc[DocData].data).filter(d => !Doc.AreProtosEqual(cur_doc, d))); + } + } else { + tagDoc && Doc.RemoveDocFromList(tagDoc[DocData], 'docs', doc); + + for (const collection of DocListCast(tagDoc?.collections)) { + collection[DocData].data = new List(DocListCast(collection[DocData].data).filter(d => !Doc.AreProtosEqual(doc, d))); + } + } + } + doc[DocData].tags = new List((doc[DocData].tags as List).filter(label => label !== tag)); + }; + + private _ref: React.RefObject; + + constructor(props: any) { + super(props); + makeObservable(this); + this._ref = React.createRef(); + } + + /** + * Creates a smart collection. + * @returns + */ + createTagCollection = () => { + // Get the documents that contain the tag. + const newEmbeddings = TagItem.allDocsWithTag(this._props.tag).map(doc => Doc.MakeEmbedding(doc)); + + // Create a new collection and set up configurations. + const newCollection = ((doc: Doc) => { + const docData = doc[DocData]; + docData.data = new List(newEmbeddings); + docData.title = this._props.tag; + docData.tags = new List([this._props.tag]); + docData.showTags = true; + docData.freeform_fitContentsToBox = true; + doc._freeform_panX = doc._freeform_panY = 0; + doc._width = 900; + doc._height = 900; + doc.layout_fitWidth = true; + return doc; + })(Doc.MakeCopy(Doc.UserDoc().emptyCollection as Doc, true)); + newEmbeddings.forEach(embed => Doc.SetContainer(embed, newCollection)); + + // Add the collection to the tag document's list of associated smart collections. + this._props.tagDoc && Doc.AddDocToList(this._props.tagDoc, 'collections', newCollection); + return newCollection; + }; + + @action + handleDragStart = (e: React.PointerEvent) => { + setupMoveUpEvents( + this, + e, + () => { + const dragData = new DragManager.DocumentDragData([this.createTagCollection()]); + DragManager.StartDocumentDrag([this._ref.current!], dragData, e.clientX, e.clientY, {}); + return true; + }, + returnFalse, + emptyFunction + ); + e.preventDefault(); + }; + + render() { + setTimeout(() => TagItem.addTagToDoc(this._props.doc, this._props.tag)); // bcz: hack to make sure that Docs are added to their tag Doc collection since metadata can get set anywhere without a guard triggering an add to the collection + const tag = this._props.tag.replace(/^#/, ''); + const metadata = tag.startsWith('@') ? tag.replace(/^@/, '') : ''; + return ( +
+ {metadata ? ( + + {tag}  + {this._props.doc[metadata] as string} + + ) : ( + tag + )} + {this.props.showRemoveUI && ( + TagItem.removeTagFromDoc(this._props.doc, this._props.tag, this._props.tagDoc), `remove tag ${this._props.tag}`)} + icon={} + style={{ width: '8px', height: '8px', marginLeft: '10px' }} + /> + )} +
+ ); + } +} + +interface TagViewProps { + View: DocumentView; +} + +/** + * Displays a panel of tags that have been added to a Doc. Also allows for editing the applied tags through a dropdown UI. + */ +@observer +export class TagsView extends ObservableReactComponent { + private _ref: React.RefObject; + + constructor(props: any) { + super(props); + makeObservable(this); + this._ref = React.createRef(); + } + + @observable _currentInput = ''; + @observable _isEditing = !StrListCast(this._props.View.dataDoc.tags).length; + + @computed get currentScale() { + return NumCast((this._props.View.Document.embedContainer as Doc)?._freeform_scale, 1); + } + @computed get isEditing() { + return this._isEditing && DocumentView.SelectedDocs().includes(this._props.View.Document); + } + + @action + setToEditing = (editing = true) => { + this._isEditing = editing; + editing && this._props.View.select(false); + }; + + /** + * Adds the specified tag to the Doc. If the tag is not prefixed with '#', then a '#' prefix is added. + * Whne the tag (after the '#') begins with '@', then a metadata key/value pair is displayed instead of + * just the tag. + * @param tag tag string to add + */ + submitTag = undoable((tag: string) => { + const submittedLabel = tag.trim(); + submittedLabel && TagItem.addTagToDoc(this._props.View.Document, '#' + submittedLabel.replace(/^#/, '')); + this._currentInput = ''; // Clear the input box + }, 'added doc label'); + + /** + * When 'showTags' is set on a Doc, this displays a wrapping panel of tagItemViews corresponding to all the tags set on the Doc). + * When the dropdown is clicked, this will toggle an extended UI that allows additional tags to be added/removed. + */ + render() { + const tagsList = StrListCast(this._props.View.dataDoc.tags); + + return !this._props.View.Document.showTags ? null : ( +
r && new ResizeObserver(action(() => (this._props.View.TagPanelHeight = r?.getBoundingClientRect().height ?? 0))).observe(r)} + style={{ + transformOrigin: 'top left', + maxWidth: `${100 * this.currentScale}%`, + width: 'max-content', + transform: `scale(${1 / this.currentScale})`, + backgroundColor: this.isEditing ? Colors.LIGHT_GRAY : Colors.TRANSPARENT, + borderColor: this.isEditing ? Colors.BLACK : Colors.TRANSPARENT, + }}> +
+
+ {!tagsList.length ? null : ( // + this.setToEditing(!this._isEditing)} icon={} /> + )} + {tagsList.map(tag => ( + + ))} +
+ {this.isEditing ? ( +
+
+ (this._currentInput = e.target.value))} + onKeyDown={e => { + e.key === 'Enter' ? this.submitTag(this._currentInput) : null; + e.stopPropagation(); + }} + type="text" + placeholder="Input tags for document..." + aria-label="tagsView-input" + className="tagsView-input" + style={{ width: '100%', borderRadius: '5px' }} + /> +
+
+ {TagItem.AllTagCollectionDocs.map((doc, i) => { + const tag = StrCast(doc.title); + return ( +
+
+ ) : null} +
+
+ ); + } +} diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index 421b5d0a6..6eb3eb784 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -1,30 +1,30 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Colors, IconButton } from 'browndash-components'; +import similarity from 'compute-cosine-similarity'; +import { ring } from 'ldrs'; +import 'ldrs/ring'; import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; +import { Utils, numberRange } from '../../../../Utils'; import { Doc, NumListCast, Opt } from '../../../../fields/Doc'; -import { Docs } from '../../../documents/Documents'; -import { DocumentType } from '../../../documents/DocumentTypes'; -import { ViewBoxBaseComponent } from '../../DocComponent'; -import { FieldView, FieldViewProps } from '../../nodes/FieldView'; -import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; -import './ImageLabelBox.scss'; -import { MainView } from '../../MainView'; -import 'ldrs/ring'; -import { ring } from 'ldrs'; -import { SnappingManager } from '../../../util/SnappingManager'; -import { ImageCast } from '../../../../fields/Types'; import { DocData } from '../../../../fields/DocSymbols'; -import { SettingsManager } from '../../../util/SettingsManager'; -import { CollectionCardView } from '../CollectionCardDeckView'; -import { gptGetEmbedding, gptImageLabel } from '../../../apis/gpt/GPT'; -import { numberRange, Utils } from '../../../../Utils'; import { List } from '../../../../fields/List'; +import { ImageCast } from '../../../../fields/Types'; +import { gptGetEmbedding, gptImageLabel } from '../../../apis/gpt/GPT'; +import { DocumentType } from '../../../documents/DocumentTypes'; +import { Docs } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; -import { OpenWhere } from '../../nodes/OpenWhere'; -import similarity from 'compute-cosine-similarity'; +import { SettingsManager } from '../../../util/SettingsManager'; +import { SnappingManager } from '../../../util/SnappingManager'; +import { ViewBoxBaseComponent } from '../../DocComponent'; +import { MainView } from '../../MainView'; import { DocumentView } from '../../nodes/DocumentView'; +import { FieldView, FieldViewProps } from '../../nodes/FieldView'; +import { OpenWhere } from '../../nodes/OpenWhere'; +import { CollectionCardView } from '../CollectionCardDeckView'; +import './ImageLabelBox.scss'; +import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; export class ImageInformationItem {} @@ -139,9 +139,9 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { toggleDisplayInformation = () => { this._displayImageInformation = !this._displayImageInformation; if (this._displayImageInformation) { - this._selectedImages.forEach(doc => (doc[DocData].showLabels = true)); + this._selectedImages.forEach(doc => (doc[DocData].showTags = true)); } else { - this._selectedImages.forEach(doc => (doc[DocData].showLabels = false)); + this._selectedImages.forEach(doc => (doc[DocData].showTags = false)); } }; @@ -163,7 +163,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. const imageInfos = this._selectedImages.map(async doc => { - if (!doc[DocData].data_labels) { + if (!doc[DocData].tags) { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => !hrefBase64 ? undefined : @@ -174,14 +174,14 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { (await Promise.all(imageInfos)).forEach(imageInfo => { if (imageInfo) { - imageInfo.doc[DocData].data_labels = new List(); + imageInfo.doc[DocData].tags = (imageInfo.doc[DocData].tags as List) ?? new List(); const labels = imageInfo.labels.split('\n'); labels.forEach(label => { - label = label.replace(/^\d+\.\s*|-|\*/, '').trim(); + label = label.replace(/^\d+\.\s*|-|f\*/, '').trim(); console.log(label); - imageInfo.doc[DocData][`${label}`] = true; - (imageInfo.doc[DocData].data_labels as List).push(label); + imageInfo.doc[DocData][label] = true; + (imageInfo.doc[DocData].tags as List).push(label); }); } }); @@ -196,10 +196,10 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { this.startLoading(); for (const doc of this._selectedImages) { - for (let index = 0; index < (doc[DocData].data_labels as List).length; index++) { - const label = (doc[DocData].data_labels as List)[index]; + for (let index = 0; index < (doc[DocData].tags as List).length; index++) { + const label = (doc[DocData].tags as List)[index]; const embedding = await gptGetEmbedding(label); - doc[DocData][`data_labels_embedding_${index + 1}`] = new List(embedding); + doc[DocData][`tags_embedding_${index + 1}`] = new List(embedding); } } @@ -210,7 +210,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { // For each image, loop through the labels, and calculate similarity. Associate it with the // most similar one. this._selectedImages.forEach(doc => { - const embedLists = numberRange((doc[DocData].data_labels as List).length).map(n => Array.from(NumListCast(doc[DocData][`data_labels_embedding_${n + 1}`]))); + const embedLists = numberRange((doc[DocData].tags as List).length).map(n => Array.from(NumListCast(doc[DocData][`tags_embedding_${n + 1}`]))); const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && similarity(Array.from(embedding), l)!) || 0)); const {label: mostSimilarLabelCollect} = this._labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) @@ -317,7 +317,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { await DocumentView.showDocument(doc, { willZoomCentered: true }); }}>
this._props.addDocTab(doc, OpenWhere.addRightKeyvalue)}> - {(doc[DocData].data_labels as List).map(label => { + {(doc[DocData].tags as List).map(label => { return (
{label} diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index 5efdb3df4..4c357cf45 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -1124,6 +1124,7 @@ export class DocumentView extends DocComponent() { @observable private _isHovering = false; @observable private _selected = false; @observable public static CurrentlyPlaying: DocumentView[] = []; // audio or video media views that are currently playing + @observable public TagPanelHeight = 0; @computed private get shouldNotScale() { return (this.layout_fitWidth && !this.nativeWidth) || this.ComponentView?.isUnstyledView?.(); diff --git a/src/client/views/nodes/formattedText/RichTextRules.ts b/src/client/views/nodes/formattedText/RichTextRules.ts index 79c118490..e0d6c7c05 100644 --- a/src/client/views/nodes/formattedText/RichTextRules.ts +++ b/src/client/views/nodes/formattedText/RichTextRules.ts @@ -404,7 +404,7 @@ export class RichTextRules { if (!tags.includes(tag)) { tags.push(tag); this.Document[DocData].tags = new List(tags); - this.Document[DocData].showLabels = true; + this.Document[DocData].showTags = true; } const fieldView = state.schema.nodes.dashField.create({ fieldKey: '#' + tag }); return state.tr diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index f246f49e5..ffb5aab79 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -11,7 +11,7 @@ import { ClientUtils, incrementTitleCopy } from '../ClientUtils'; import { AclAdmin, AclAugment, AclEdit, AclPrivate, AclReadonly, Animation, AudioPlay, Brushed, CachedUpdates, DirectLinks, DocAcl, DocCss, DocData, DocLayout, DocViews, FieldKeys, FieldTuples, ForceServerWrite, Height, Highlight, - Initializing, KeywordsHeight, Self, SelfProxy, TransitionTimer, UpdatingFromServer, Width + Initializing, Self, SelfProxy, TransitionTimer, UpdatingFromServer, Width } from './DocSymbols'; // prettier-ignore import { Copy, FieldChanged, HandleUpdate, Id, Parent, ToJavascriptString, ToScriptString, ToString } from './FieldSymbols'; import { InkTool } from './InkField'; @@ -303,7 +303,6 @@ export class Doc extends RefField { Height, Highlight, Initializing, - KeywordsHeight, Self, SelfProxy, UpdatingFromServer, @@ -369,7 +368,6 @@ export class Doc extends RefField { @observable public [Highlight]: boolean = false; @observable public [Brushed]: boolean = false; @observable public [DocViews] = new ObservableSet(); - @observable public [KeywordsHeight]: number = 0; private [Self] = this; private [SelfProxy]: Doc; diff --git a/src/fields/DocSymbols.ts b/src/fields/DocSymbols.ts index 9e091ab29..dc18d8638 100644 --- a/src/fields/DocSymbols.ts +++ b/src/fields/DocSymbols.ts @@ -32,6 +32,5 @@ export const DocViews = Symbol('DocViews'); export const Brushed = Symbol('DocBrushed'); export const DocCss = Symbol('DocCss'); export const TransitionTimer = Symbol('DocTransitionTimer'); -export const KeywordsHeight = Symbol('DocKeywordsHeight'); export const DashVersion = 'v0.8.0'; -- cgit v1.2.3-70-g09d2 From 6bc79c5dfc5f61bf5d1b1544d399703c8006b898 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 10:59:56 -0400 Subject: cleanup of myXXXstuff on dashboards --- src/client/views/DashboardView.tsx | 5 +++-- src/client/views/TagsView.tsx | 6 +----- src/fields/Doc.ts | 8 ++++---- 3 files changed, 8 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/client/views/DashboardView.tsx b/src/client/views/DashboardView.tsx index dcc5442f0..f4fc8ee9f 100644 --- a/src/client/views/DashboardView.tsx +++ b/src/client/views/DashboardView.tsx @@ -429,7 +429,8 @@ export class DashboardView extends ObservableReactComponent { dashboardDoc.pane_count = 1; freeformDoc.embedContainer = dashboardDoc; dashboardDoc.myOverlayDocs = new List(); - dashboardDoc.myPublishedDocs = new List(); + dashboardDoc[DocData].myPublishedDocs = new List(); + dashboardDoc[DocData].myTagCollections = new List(); Doc.AddDocToList(Doc.MyDashboards, 'data', dashboardDoc); @@ -467,7 +468,7 @@ export class DashboardView extends ObservableReactComponent { }; const myCalendars = DocUtils.AssignScripts(Docs.Create.CalendarCollectionDocument([], reqdOpts)); // { treeView_ChildDoubleClick: 'openPresentation(documentView.rootDoc)' } - dashboardDoc.myCalendars = new PrefetchProxy(myCalendars); + dashboardDoc[DocData].myCalendars = new PrefetchProxy(myCalendars); } public static SetupDashboardTrails(dashboardDoc: Doc) { diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index dffd1e096..394162f46 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -70,11 +70,7 @@ export class TagItem extends ObservableReactComponent { newTagCol.title = tag; newTagCol.collections = new List(); newTagCol[DocData].docs = new List(); - // If the active Dashboard does not have a tag Doc collection, create it. - if (Doc.ActiveDashboard) { - if (!Doc.ActiveDashboard.myTagCollections) Doc.ActiveDashboard.myTagCollections = new List(); - Doc.AddDocToList(Doc.ActiveDashboard, 'myTagCollections', newTagCol); - } + Doc.ActiveDashboard && Doc.AddDocToList(Doc.ActiveDashboard, 'myTagCollections', newTagCol); return newTagCol; }; diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index ffb5aab79..e3178f20c 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -258,16 +258,16 @@ export class Doc extends RefField { public static set ActiveDashboard(val: Opt) { Doc.UserDoc().activeDashboard = val; } // prettier-ignore public static IsInMyOverlay(doc: Doc) { return Doc.MyOverlayDocs.includes(doc); } // prettier-ignore - public static AddToMyOverlay(doc: Doc) { return Doc.ActiveDashboard?.myOverlayDocs ? Doc.AddDocToList(Doc.ActiveDashboard, 'myOverlayDocs', doc) : Doc.AddDocToList(DocCast(Doc.UserDoc().myOverlayDocs), undefined, doc); } // prettier-ignore - public static RemFromMyOverlay(doc: Doc) { return Doc.ActiveDashboard?.myOverlayDocs ? Doc.RemoveDocFromList(Doc.ActiveDashboard,'myOverlayDocs', doc) : Doc.RemoveDocFromList(DocCast(Doc.UserDoc().myOverlayDocs), undefined, doc); } // prettier-ignore + public static AddToMyOverlay(doc: Doc) { return Doc.ActiveDashboard ? Doc.AddDocToList(Doc.ActiveDashboard, 'myOverlayDocs', doc) : Doc.AddDocToList(DocCast(Doc.UserDoc().myOverlayDocs), undefined, doc); } // prettier-ignore + public static RemFromMyOverlay(doc: Doc) { return Doc.ActiveDashboard ? Doc.RemoveDocFromList(Doc.ActiveDashboard,'myOverlayDocs', doc) : Doc.RemoveDocFromList(DocCast(Doc.UserDoc().myOverlayDocs), undefined, doc); } // prettier-ignore public static AddToMyPublished(doc: Doc) { doc[DocData].title_custom = true; doc[DocData].layout_showTitle = 'title'; - Doc.ActiveDashboard?.myPublishedDocs ? Doc.AddDocToList(Doc.ActiveDashboard, 'myPublishedDocs', doc) : Doc.AddDocToList(DocCast(Doc.UserDoc().myPublishedDocs), undefined, doc); } // prettier-ignore + Doc.ActiveDashboard ? Doc.AddDocToList(Doc.ActiveDashboard, 'myPublishedDocs', doc) : Doc.AddDocToList(DocCast(Doc.UserDoc().myPublishedDocs), undefined, doc); } // prettier-ignore public static RemFromMyPublished(doc: Doc){ doc[DocData].title_custom = false; doc[DocData].layout_showTitle = undefined; - Doc.ActiveDashboard?.myPublishedDocs ? Doc.RemoveDocFromList(Doc.ActiveDashboard,'myPublishedDocs', doc) : Doc.RemoveDocFromList(DocCast(Doc.UserDoc().myPublishedDocs), undefined, doc); } // prettier-ignore + Doc.ActiveDashboard ? Doc.RemoveDocFromList(Doc.ActiveDashboard,'myPublishedDocs', doc) : Doc.RemoveDocFromList(DocCast(Doc.UserDoc().myPublishedDocs), undefined, doc); } // prettier-ignore public static IsComicStyle(doc?: Doc) { return doc && Doc.ActiveDashboard && !Doc.IsSystem(doc) && Doc.UserDoc().renderStyle === 'comic' ; } // prettier-ignore constructor(id?: FieldId, forceSave?: boolean) { -- cgit v1.2.3-70-g09d2 From cc3e1bc2c317cf34aba04e4935ae842b16ad4cae Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 11:22:38 -0400 Subject: cleanup of setting myXXstuff on dashboards --- src/client/views/DashboardView.tsx | 12 +++++------- .../collections/collectionFreeForm/FaceCollectionBox.tsx | 2 +- src/client/views/search/FaceRecognitionHandler.tsx | 12 ++++++------ 3 files changed, 12 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/client/views/DashboardView.tsx b/src/client/views/DashboardView.tsx index f4fc8ee9f..4616e15e5 100644 --- a/src/client/views/DashboardView.tsx +++ b/src/client/views/DashboardView.tsx @@ -426,16 +426,14 @@ export class DashboardView extends ObservableReactComponent { const dashboardDoc = DashboardView.StandardCollectionDockingDocument([{ doc: freeformDoc, initialWidth: 600 }], { title: title }, id, 'row'); Doc.AddDocToList(Doc.MyHeaderBar, 'data', freeformDoc, undefined, undefined, true); + Doc.AddDocToList(Doc.MyDashboards, 'data', dashboardDoc); dashboardDoc.pane_count = 1; freeformDoc.embedContainer = dashboardDoc; dashboardDoc.myOverlayDocs = new List(); dashboardDoc[DocData].myPublishedDocs = new List(); dashboardDoc[DocData].myTagCollections = new List(); - - Doc.AddDocToList(Doc.MyDashboards, 'data', dashboardDoc); - - DashboardView.SetupDashboardTrails(dashboardDoc); - DashboardView.SetupDashboardCalendars(dashboardDoc); + dashboardDoc[DocData].myTrails = DashboardView.SetupDashboardTrails(dashboardDoc); + dashboardDoc[DocData].myCalendars = DashboardView.SetupDashboardCalendars(dashboardDoc); // open this new dashboard Doc.ActiveDashboard = dashboardDoc; Doc.ActivePage = 'dashboard'; @@ -468,7 +466,7 @@ export class DashboardView extends ObservableReactComponent { }; const myCalendars = DocUtils.AssignScripts(Docs.Create.CalendarCollectionDocument([], reqdOpts)); // { treeView_ChildDoubleClick: 'openPresentation(documentView.rootDoc)' } - dashboardDoc[DocData].myCalendars = new PrefetchProxy(myCalendars); + return new PrefetchProxy(myCalendars); } public static SetupDashboardTrails(dashboardDoc: Doc) { @@ -514,12 +512,12 @@ export class DashboardView extends ObservableReactComponent { layout_explainer: 'All of the trails that you have created will appear here.', }; const myTrails = DocUtils.AssignScripts(Docs.Create.TreeDocument([], reqdOpts), { treeView_ChildDoubleClick: 'openPresentation(documentView.Document)' }); - dashboardDoc.myTrails = new PrefetchProxy(myTrails); const contextMenuScripts = [reqdBtnScript.onClick]; if (Cast(myTrails.contextMenuScripts, listSpec(ScriptField), null)?.length !== contextMenuScripts.length) { myTrails.contextMenuScripts = new List(contextMenuScripts.map(script => ScriptField.MakeFunction(script)!)); } + return new PrefetchProxy(myTrails); } } diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index de7c2c027..1cc1f59dc 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -164,7 +164,7 @@ export class UniqueFaceView extends ObservableReactComponent { * This renders the sidebar collection of the unique faces that have been recognized. * * Since the collection of recognized faces is stored on the active dashboard, this class - * does not itself store any Docs, but accesses the uniqueFaces field of the current + * does not itself store any Docs, but accesses the myUniqueFaces field of the current * dashboard. Each Face collection Doc is rendered using a FaceCollectionDocView which * is not a CollectionView or even a DocumentView (but probably should be). */ diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index f5fc12a8d..a17e4c54a 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -20,7 +20,7 @@ import { ImageField } from '../../../fields/URLField'; * _faceDescriptors - list of all the numerical face representations found in the image. * _faces - list of unique face Docs corresponding to recognized faces in the image. * - * unique face Doc's are created for each person identified and are stored in the Dashboard's uniqueFaces field + * unique face Doc's are created for each person identified and are stored in the Dashboard's myUniqueFaces field * * Each unique face Doc represents a unique face and collects all matching face images for that person. It has these fields: * face_label - a string label for the person that was recognized (TODO: currently it's just a 'face#') @@ -93,14 +93,14 @@ export class FaceRecognitionHandler { * returns a list of all face collection Docs on the current dashboard * @returns face collection Doc list */ - public static UniqueFaces = () => DocListCast(Doc.ActiveDashboard?.[DocData].uniqueFaces); + public static UniqueFaces = () => DocListCast(Doc.ActiveDashboard?.[DocData].myUniqueFaces); /** * Removes a unique face from the set of recognized unique faces * @param faceDoc unique face Doc * @returns */ - public static DeleteUniqueFace = (faceDoc: Doc) => Doc.ActiveDashboard && Doc.RemoveDocFromList(Doc.ActiveDashboard[DocData], 'uniqueFaces', faceDoc); + public static DeleteUniqueFace = (faceDoc: Doc) => Doc.ActiveDashboard && Doc.RemoveDocFromList(Doc.ActiveDashboard[DocData], 'myUniqueFaces', faceDoc); /** * returns the labels associated with a face collection Doc @@ -169,8 +169,8 @@ export class FaceRecognitionHandler { * @returns a unique face Doc */ private createUniqueFaceDoc = (dashboard: Doc) => { - const faceDocNum = NumCast(dashboard.uniqueFaces_count) + 1; - dashboard.uniqueFaces_count = faceDocNum; // TODO: improve to a better name + const faceDocNum = NumCast(dashboard.myUniqueFaces_count) + 1; + dashboard.myUniqueFaces_count = faceDocNum; // TODO: improve to a better name const uniqueFaceDoc = new Doc(); uniqueFaceDoc.title = `Face ${faceDocNum}`; @@ -179,7 +179,7 @@ export class FaceRecognitionHandler { uniqueFaceDoc.face_images = new List(); uniqueFaceDoc.face_descriptors = new List>(); - Doc.ActiveDashboard && Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'uniqueFaces', uniqueFaceDoc); + Doc.ActiveDashboard && Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'myUniqueFaces', uniqueFaceDoc); return uniqueFaceDoc; }; -- cgit v1.2.3-70-g09d2 From 2e345c1ebd498e3f7e088e6fc3e1ca17082b23c1 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 13:53:26 -0400 Subject: converted unique faces to be a Doc type similar to a collection. --- src/client/documents/DocumentTypes.ts | 1 + src/client/documents/Documents.ts | 4 + src/client/views/DashboardView.tsx | 1 + src/client/views/Main.tsx | 3 +- .../views/collections/CollectionStackingView.tsx | 3 +- src/client/views/collections/CollectionSubView.tsx | 1 + .../collectionFreeForm/FaceCollectionBox.scss | 24 ++++- .../collectionFreeForm/FaceCollectionBox.tsx | 113 +++++++++++++-------- src/client/views/search/FaceRecognitionHandler.tsx | 34 +++++-- 9 files changed, 123 insertions(+), 61 deletions(-) (limited to 'src') diff --git a/src/client/documents/DocumentTypes.ts b/src/client/documents/DocumentTypes.ts index 49df943d8..b055546fc 100644 --- a/src/client/documents/DocumentTypes.ts +++ b/src/client/documents/DocumentTypes.ts @@ -18,6 +18,7 @@ export enum DocumentType { SEARCH = 'search', // search query IMAGEGROUPER = 'imagegrouper', FACECOLLECTION = 'facecollection', + UFACE = 'uniqueface', // unique face collection doc LABEL = 'label', // simple text label BUTTON = 'button', // onClick button WEBCAM = 'webcam', // webcam diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index c0e4e961c..c2211fb80 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -795,6 +795,10 @@ export namespace Docs { return InstanceFromProto(Prototypes.get(DocumentType.FACECOLLECTION), undefined, options); } + export function UniqeFaceDocument(options: DocumentOptions = {}) { + return InstanceFromProto(Prototypes.get(DocumentType.UFACE), undefined, options); + } + export function LoadingDocument(file: File | string, options: DocumentOptions) { return InstanceFromProto(Prototypes.get(DocumentType.LOADING), undefined, { _height: 150, _width: 200, title: typeof file === 'string' ? file : file.name, ...options }, undefined, ''); } diff --git a/src/client/views/DashboardView.tsx b/src/client/views/DashboardView.tsx index 4616e15e5..33e905a54 100644 --- a/src/client/views/DashboardView.tsx +++ b/src/client/views/DashboardView.tsx @@ -432,6 +432,7 @@ export class DashboardView extends ObservableReactComponent { dashboardDoc.myOverlayDocs = new List(); dashboardDoc[DocData].myPublishedDocs = new List(); dashboardDoc[DocData].myTagCollections = new List(); + dashboardDoc[DocData].myUniqueFaces = new List(); dashboardDoc[DocData].myTrails = DashboardView.SetupDashboardTrails(dashboardDoc); dashboardDoc[DocData].myCalendars = DashboardView.SetupDashboardCalendars(dashboardDoc); // open this new dashboard diff --git a/src/client/views/Main.tsx b/src/client/views/Main.tsx index 023324881..f7cd0e925 100644 --- a/src/client/views/Main.tsx +++ b/src/client/views/Main.tsx @@ -63,7 +63,7 @@ import { PresBox, PresElementBox } from './nodes/trails'; import { SearchBox } from './search/SearchBox'; import { ImageLabelBox } from './collections/collectionFreeForm/ImageLabelBox'; import { FaceRecognitionHandler } from './search/FaceRecognitionHandler'; -import { FaceCollectionBox } from './collections/collectionFreeForm/FaceCollectionBox'; +import { FaceCollectionBox, UniqueFaceBox } from './collections/collectionFreeForm/FaceCollectionBox'; import { Node } from 'prosemirror-model'; import { EditorView } from 'prosemirror-view'; @@ -140,6 +140,7 @@ FieldLoader.ServerLoadStatus = { requested: 0, retrieved: 0, message: 'cache' }; SearchBox, ImageLabelBox, FaceCollectionBox, + UniqueFaceBox, FunctionPlotBox, InkingStroke, LinkBox, diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx index 3f8aee792..6402ef16c 100644 --- a/src/client/views/collections/CollectionStackingView.tsx +++ b/src/client/views/collections/CollectionStackingView.tsx @@ -98,7 +98,7 @@ export class CollectionStackingView extends CollectionSubView Doc | undefined; // specify a layout Doc template to use for children of the collection childHideDecorationTitle?: boolean; childHideResizeHandles?: boolean; + childHideDecorations?: boolean; childDragAction?: dropActionType; childXPadding?: number; childYPadding?: number; diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss index 480d109c8..86120f966 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss @@ -1,10 +1,11 @@ .face-document-item { - background: #555555; margin-top: 10px; margin-bottom: 10px; padding: 10px; - border-radius: 10px; + border-radius: inherit; position: relative; + width: 100%; + height: 100%; h1 { color: white; @@ -14,14 +15,31 @@ .face-collection-buttons { position: absolute; - top: 10px; + top: 0px; right: 10px; } + .face-collection-toggle { + position: absolute; + top: 0px; + left: 10px; + } + .face-document-top { + position: absolute; + top: 0; + margin: auto; + width: 100%; + left: 0; + } .face-document-image-container { display: flex; justify-content: center; flex-wrap: wrap; + overflow-x: hidden; + overflow-y: auto; + position: absolute; + top: 75px; + height: calc(100% - 75px); .image-wrapper { position: relative; diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 1cc1f59dc..6a0d51e32 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -6,23 +6,21 @@ import 'ldrs/ring'; import { action, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; -import { setupMoveUpEvents } from '../../../../ClientUtils'; -import { Utils, emptyFunction } from '../../../../Utils'; +import { lightOrDark, returnTrue, setupMoveUpEvents } from '../../../../ClientUtils'; +import { emptyFunction } from '../../../../Utils'; import { Doc, Opt } from '../../../../fields/Doc'; -import { Id } from '../../../../fields/FieldSymbols'; import { List } from '../../../../fields/List'; -import { ImageCast } from '../../../../fields/Types'; +import { ImageCast, StrCast } from '../../../../fields/Types'; import { DocumentType } from '../../../documents/DocumentTypes'; import { Docs } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; import { dropActionType } from '../../../util/DropActionTypes'; -import { SnappingManager } from '../../../util/SnappingManager'; import { undoable } from '../../../util/UndoManager'; import { ViewBoxBaseComponent } from '../../DocComponent'; -import { ObservableReactComponent } from '../../ObservableReactComponent'; import { DocumentView } from '../../nodes/DocumentView'; import { FieldView, FieldViewProps } from '../../nodes/FieldView'; import { FaceRecognitionHandler } from '../../search/FaceRecognitionHandler'; +import { CollectionStackingView } from '../CollectionStackingView'; import './FaceCollectionBox.scss'; import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; @@ -31,31 +29,29 @@ import { MarqueeOptionsMenu } from './MarqueeOptionsMenu'; * unique face in turn displays the set of images that correspond to the face. */ -interface UniqueFaceProps { - faceDoc: Doc; -} - /** - * React component for rendering a unique face and its collection of image Docs. + * Viewer for unique face Doc collections. * * This both displays a collection of images corresponding tp a unique face, and * allows for editing the face collection by removing an image, or drag-and-dropping * an image that was not recognized. */ @observer -export class UniqueFaceView extends ObservableReactComponent { +export class UniqueFaceBox extends ViewBoxBaseComponent() { + public static LayoutString(fieldKey: string) { + return FieldView.LayoutString(UniqueFaceBox, fieldKey); + } private _dropDisposer?: DragManager.DragDropDisposer; + private _oldWheel: HTMLElement | null = null; - constructor(props: UniqueFaceProps) { + constructor(props: FieldViewProps) { super(props); makeObservable(this); } - @observable _displayImages: boolean = true; - protected createDropTarget = (ele: HTMLDivElement) => { this._dropDisposer?.(); - ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this._props.faceDoc)); + ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this._props.Document)); }; protected onInternalDrop(e: Event, de: DragManager.DropEvent): boolean { @@ -63,12 +59,12 @@ export class UniqueFaceView extends ObservableReactComponent { ?.filter(doc => doc.type === DocumentType.IMG) .forEach(imgDoc => { // If the current Face Document has no faces, and the doc has more than one face descriptor, don't let the user add the document first. Or should we just use the first face ? - if (FaceRecognitionHandler.UniqueFaceDescriptors(this._props.faceDoc).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { + if (FaceRecognitionHandler.UniqueFaceDescriptors(this._props.Document).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { alert('Cannot add a document with multiple faces as the first item!'); } else { // Loop through the documents' face descriptors and choose the face in the iage with the smallest distance (most similar to the face colleciton) - const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this._props.faceDoc).map(fd => new Float32Array(Array.from(fd))); - const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this._props.faceDoc), faceDescriptorsAsFloat32Array); + const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this._props.Document).map(fd => new Float32Array(Array.from(fd))); + const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this._props.Document), faceDescriptorsAsFloat32Array); const faceMatcher = new FaceMatcher([labeledFaceDescriptor], 1); const { face_match } = FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).reduce( (prev, face) => { @@ -80,11 +76,12 @@ export class UniqueFaceView extends ObservableReactComponent { // assign the face in the image that's closest to the face collection to be the face that's assigned to the collection if (face_match) { - FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this._props.faceDoc); + FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this._props.Document); } } }); - return false; + e.stopPropagation(); + return true; } /** @@ -92,14 +89,15 @@ export class UniqueFaceView extends ObservableReactComponent { */ @action onDisplayClick() { - this._displayImages = !this._displayImages; + this._props.Document._displayImages = !this.props.Document._displayImages; + this._props.Document.height = this._props.Document._displayImages ? 400 : 100; } /** * Removes a unique face Doc from the colelction of unique faces. */ deleteUniqueFace = undoable(() => { - FaceRecognitionHandler.DeleteUniqueFace(this._props.faceDoc); + FaceRecognitionHandler.DeleteUniqueFace(this._props.Document); }, 'delete face'); /** @@ -107,9 +105,11 @@ export class UniqueFaceView extends ObservableReactComponent { * @param imgDoc - image Doc to remove */ removeFaceImageFromUniqueFace = undoable((imgDoc: Doc) => { - FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this._props.faceDoc); + FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this._props.Document); }, 'remove doc from face'); + onPassiveWheel = (e: WheelEvent) => e.stopPropagation(); + render() { return (
this.createDropTarget(ele!)}> @@ -117,23 +117,35 @@ export class UniqueFaceView extends ObservableReactComponent {
-

{FaceRecognitionHandler.UniqueFaceLabel(this._props.faceDoc)}

+

{FaceRecognitionHandler.UniqueFaceLabel(this._props.Document)}

- this.onDisplayClick()} - icon={} - color={MarqueeOptionsMenu.Instance.userColor} - style={{ width: '19px' }} - /> - {this._displayImages ? ( -
- {FaceRecognitionHandler.UniqueFaceImages(this._props.faceDoc).map(doc => { +
+ this.onDisplayClick()} + icon={} + color={MarqueeOptionsMenu.Instance.userColor} + style={{ width: '19px' }} + /> +
+ {this.props.Document._displayImages ? ( +
{ + this._oldWheel?.removeEventListener('wheel', this.onPassiveWheel); + this._oldWheel = ele; + // prevent wheel events from passively propagating up through containers and prevents containers from preventDefault which would block scrolling + ele?.addEventListener('wheel', this.onPassiveWheel, { passive: false }); + }}> + {FaceRecognitionHandler.UniqueFaceImages(this._props.Document).map((doc, i) => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return (
setupMoveUpEvents( this, @@ -165,8 +177,8 @@ export class UniqueFaceView extends ObservableReactComponent { * * Since the collection of recognized faces is stored on the active dashboard, this class * does not itself store any Docs, but accesses the myUniqueFaces field of the current - * dashboard. Each Face collection Doc is rendered using a FaceCollectionDocView which - * is not a CollectionView or even a DocumentView (but probably should be). + * dashboard. (This should probably go away as Doc type in favor of it just being a + * stacking collection of uniqueFace docs) */ @observer export class FaceCollectionBox extends ViewBoxBaseComponent() { @@ -179,18 +191,29 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { makeObservable(this); } + moveDocument = (doc: Doc | Doc[], targetCollection: Doc | undefined, addDocument: (doc: Doc | Doc[]) => boolean): boolean => !!(this._props.removeDocument?.(doc) && addDocument?.(doc)); + render() { - return ( -
- {FaceRecognitionHandler.UniqueFaces().map(doc => ( - - ))} -
+ return !Doc.ActiveDashboard ? null : ( + ); } } Docs.Prototypes.TemplateMap.set(DocumentType.FACECOLLECTION, { layout: { view: FaceCollectionBox, dataField: 'data' }, - options: { acl: '', _width: 400 }, + options: { acl: '', _width: 400, dropAction: dropActionType.embed }, +}); + +Docs.Prototypes.TemplateMap.set(DocumentType.UFACE, { + layout: { view: UniqueFaceBox, dataField: 'face_images' }, + options: { acl: '', _width: 400, _height: 400 }, }); diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index a17e4c54a..1ab084eaa 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -8,6 +8,8 @@ import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; import { DocumentType } from '../../documents/DocumentTypes'; import { DocumentManager } from '../../util/DocumentManager'; import { ImageField } from '../../../fields/URLField'; +import { UniqueFaceBox } from '../collections/collectionFreeForm/FaceCollectionBox'; +import { Docs } from '../../documents/Documents'; /** * A singleton class that handles face recognition and manages face Doc collections for each face found. @@ -169,15 +171,25 @@ export class FaceRecognitionHandler { * @returns a unique face Doc */ private createUniqueFaceDoc = (dashboard: Doc) => { - const faceDocNum = NumCast(dashboard.myUniqueFaces_count) + 1; - dashboard.myUniqueFaces_count = faceDocNum; // TODO: improve to a better name - - const uniqueFaceDoc = new Doc(); - uniqueFaceDoc.title = `Face ${faceDocNum}`; - uniqueFaceDoc.face = ''; // just to make prettyprinting look better - uniqueFaceDoc.face_label = `Face${faceDocNum}`; - uniqueFaceDoc.face_images = new List(); - uniqueFaceDoc.face_descriptors = new List>(); + const faceDocNum = NumCast(dashboard[DocData].myUniqueFaces_count) + 1; + dashboard[DocData].myUniqueFaces_count = faceDocNum; // TODO: improve to a better name + + const uniqueFaceDoc = Docs.Create.UniqeFaceDocument({ + title: `Face ${faceDocNum}`, + _layout_reflowHorizontal: true, + _layout_reflowVertical: true, + _layout_nativeDimEditable: true, + _layout_borderRounding: '20px', + backgroundColor: '#555555', + _width: 400, + _height: 400, + }); + const uface = uniqueFaceDoc[DocData]; + uface.face = ''; // just to make prettyprinting look better + uface.face_label = `Face${faceDocNum}`; + uface.face_images = new List(); + uface.face_descriptors = new List>(); + Doc.SetContainer(uniqueFaceDoc, Doc.MyFaceCollection); Doc.ActiveDashboard && Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'myUniqueFaces', uniqueFaceDoc); return uniqueFaceDoc; @@ -222,8 +234,8 @@ export class FaceRecognitionHandler { setTimeout(() => this.classifyFacesInImage(imgDoc), 1000); } else { const imgUrl = ImageCast(imgDoc[Doc.LayoutFieldKey(imgDoc)]); - if (imgUrl && !DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc)) { // only examine Docs that have an image and that haven't already been examined. - Doc.AddDocToList(Doc.MyFaceCollection, 'examinedFaceDocs', imgDoc); + if (imgUrl && !DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc[DocData])) { // only examine Docs that have an image and that haven't already been examined. + Doc.AddDocToList(Doc.MyFaceCollection, 'examinedFaceDocs', imgDoc[DocData]); FaceRecognitionHandler.initImageDocFaceDescriptors(imgDoc); FaceRecognitionHandler.loadImage(imgUrl).then( // load image and analyze faces img => faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors() -- cgit v1.2.3-70-g09d2 From d12b43191e01e837d5a144fb19d9d3cd8eadd777 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 15:17:14 -0400 Subject: from last --- src/client/documents/Documents.ts | 1 + .../collectionFreeForm/FaceCollectionBox.scss | 19 ++++--- .../collectionFreeForm/FaceCollectionBox.tsx | 60 ++++++++++++++-------- src/client/views/search/FaceRecognitionHandler.tsx | 5 +- 4 files changed, 54 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index c2211fb80..ac271526f 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -362,6 +362,7 @@ export class DocumentOptions { data?: FieldType; data_useCors?: BOOLt = new BoolInfo('whether CORS protocol should be used for web page'); + _face_showImages?: BOOLt = new BoolInfo('whether to show images in uniqe face Doc'); columnHeaders?: List; // headers for stacking views schemaHeaders?: List; // headers for schema view dockingConfig?: STRt = new StrInfo('configuration of golden layout windows (applies only if doc is rendered as a CollectionDockingView)', false); diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss index 86120f966..00297a97d 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss @@ -1,11 +1,10 @@ .face-document-item { - margin-top: 10px; - margin-bottom: 10px; - padding: 10px; - border-radius: inherit; - position: relative; + display: flex; + height: max-content; + flex-direction: column; + top: 0; + position: absolute; width: 100%; - height: 100%; h1 { color: white; @@ -24,11 +23,12 @@ left: 10px; } .face-document-top { - position: absolute; + position: relative; top: 0; margin: auto; width: 100%; left: 0; + height: 60px; } .face-document-image-container { @@ -37,9 +37,8 @@ flex-wrap: wrap; overflow-x: hidden; overflow-y: auto; - position: absolute; - top: 75px; - height: calc(100% - 75px); + position: relative; + padding: 10px; .image-wrapper { position: relative; diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 6a0d51e32..33fc3c210 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -3,14 +3,14 @@ import { IconButton, Size } from 'browndash-components'; import * as faceapi from 'face-api.js'; import { FaceMatcher } from 'face-api.js'; import 'ldrs/ring'; -import { action, makeObservable, observable } from 'mobx'; +import { IReactionDisposer, action, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; -import { lightOrDark, returnTrue, setupMoveUpEvents } from '../../../../ClientUtils'; +import { DivHeight, lightOrDark, returnTrue, setupMoveUpEvents } from '../../../../ClientUtils'; import { emptyFunction } from '../../../../Utils'; import { Doc, Opt } from '../../../../fields/Doc'; import { List } from '../../../../fields/List'; -import { ImageCast, StrCast } from '../../../../fields/Types'; +import { ImageCast, NumCast, StrCast } from '../../../../fields/Types'; import { DocumentType } from '../../../documents/DocumentTypes'; import { Docs } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; @@ -48,10 +48,29 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { super(props); makeObservable(this); } + @observable _headerRef: HTMLDivElement | null = null; + @observable _listRef: HTMLDivElement | null = null; + _disposers: { [key: string]: IReactionDisposer } = {}; + _lastHeight = 0; + observer = new ResizeObserver(() => this._props.setHeight?.((this.props.Document._face_showImages ? 20 : 0) + (!this._headerRef ? 0 : DivHeight(this._headerRef)) + (!this._listRef ? 0 : DivHeight(this._listRef)))); + + componentDidMount(): void { + this._disposers.refList = reaction( + () => ({ refList: [this._headerRef, this._listRef], autoHeight: this.layoutDoc._layout_autoHeight && !DocumentView.LightboxContains(this.DocumentView?.()) }), + ({ refList, autoHeight }) => { + this.observer.disconnect(); + if (autoHeight) refList.filter(r => r).forEach(r => this.observer.observe(r!)); + }, + { fireImmediately: true } + ); + } + componentWillUnmount(): void { + //this._disposers?.(); + } protected createDropTarget = (ele: HTMLDivElement) => { this._dropDisposer?.(); - ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this._props.Document)); + ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this.Document)); }; protected onInternalDrop(e: Event, de: DragManager.DropEvent): boolean { @@ -59,12 +78,12 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { ?.filter(doc => doc.type === DocumentType.IMG) .forEach(imgDoc => { // If the current Face Document has no faces, and the doc has more than one face descriptor, don't let the user add the document first. Or should we just use the first face ? - if (FaceRecognitionHandler.UniqueFaceDescriptors(this._props.Document).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { + if (FaceRecognitionHandler.UniqueFaceDescriptors(this.Document).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { alert('Cannot add a document with multiple faces as the first item!'); } else { // Loop through the documents' face descriptors and choose the face in the iage with the smallest distance (most similar to the face colleciton) - const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this._props.Document).map(fd => new Float32Array(Array.from(fd))); - const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this._props.Document), faceDescriptorsAsFloat32Array); + const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this.Document).map(fd => new Float32Array(Array.from(fd))); + const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this.Document), faceDescriptorsAsFloat32Array); const faceMatcher = new FaceMatcher([labeledFaceDescriptor], 1); const { face_match } = FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).reduce( (prev, face) => { @@ -76,7 +95,7 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { // assign the face in the image that's closest to the face collection to be the face that's assigned to the collection if (face_match) { - FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this._props.Document); + FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this.Document); } } }); @@ -87,17 +106,17 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { /** * Toggles whether a Face Document displays its associated docs. */ - @action onDisplayClick() { - this._props.Document._displayImages = !this.props.Document._displayImages; - this._props.Document.height = this._props.Document._displayImages ? 400 : 100; + this.Document._face_showImages && (this._lastHeight = NumCast(this.Document.height)); + this.Document._face_showImages = !this.Document._face_showImages; + setTimeout(action(() => (!this.Document.layout_autoHeight || !this.Document._face_showImages) && (this.Document.height = this.Document._face_showImages ? this._lastHeight : 60))); } /** * Removes a unique face Doc from the colelction of unique faces. */ deleteUniqueFace = undoable(() => { - FaceRecognitionHandler.DeleteUniqueFace(this._props.Document); + FaceRecognitionHandler.DeleteUniqueFace(this.Document); }, 'delete face'); /** @@ -105,7 +124,7 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { * @param imgDoc - image Doc to remove */ removeFaceImageFromUniqueFace = undoable((imgDoc: Doc) => { - FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this._props.Document); + FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this.Document); }, 'remove doc from face'); onPassiveWheel = (e: WheelEvent) => e.stopPropagation(); @@ -116,31 +135,32 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() {
-
-

{FaceRecognitionHandler.UniqueFaceLabel(this._props.Document)}

+
(this._headerRef = r))}> +

{FaceRecognitionHandler.UniqueFaceLabel(this.Document)}

this.onDisplayClick()} - icon={} + icon={} color={MarqueeOptionsMenu.Instance.userColor} style={{ width: '19px' }} />
- {this.props.Document._displayImages ? ( + {this.props.Document._face_showImages ? (
{ + ref={action((ele: HTMLDivElement | null) => { + this._listRef = ele; this._oldWheel?.removeEventListener('wheel', this.onPassiveWheel); this._oldWheel = ele; // prevent wheel events from passively propagating up through containers and prevents containers from preventDefault which would block scrolling ele?.addEventListener('wheel', this.onPassiveWheel, { passive: false }); - }}> - {FaceRecognitionHandler.UniqueFaceImages(this._props.Document).map((doc, i) => { + })}> + {FaceRecognitionHandler.UniqueFaceImages(this.Document).map((doc, i) => { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return (
Date: Mon, 26 Aug 2024 16:46:13 -0400 Subject: added recognizeFaces for face images --- src/client/util/CurrentUserUtils.ts | 2 +- src/client/util/SettingsManager.tsx | 11 ++++++ src/client/views/StyleProvider.tsx | 2 + .../collectionFreeForm/FaceCollectionBox.scss | 11 +++++- .../collectionFreeForm/FaceCollectionBox.tsx | 45 +++++++++++++++------- src/client/views/search/FaceRecognitionHandler.tsx | 1 + 6 files changed, 55 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 0681a21cb..dc0c95121 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -497,7 +497,7 @@ pie title Minerals in my tap water static setupFaceCollection(doc: Doc, field: string) { return DocUtils.AssignDocField(doc, field, (opts) => Docs.Create.FaceCollectionDocument(opts), { - dontRegisterView: true, backgroundColor: "dimgray", ignoreClick: true, title: "Face Collection", isSystem: true, childDragAction: dropActionType.embed, + dontRegisterView: true, ignoreClick: true, title: "Face Collection", isSystem: true, childDragAction: dropActionType.embed, _lockedPosition: true, _type_collection: CollectionViewType.Schema }); } diff --git a/src/client/util/SettingsManager.tsx b/src/client/util/SettingsManager.tsx index 2d8763b63..fde8869e3 100644 --- a/src/client/util/SettingsManager.tsx +++ b/src/client/util/SettingsManager.tsx @@ -231,6 +231,17 @@ export class SettingsManager extends React.Component { size={Size.XSMALL} color={SettingsManager.userColor} /> + { + Doc.UserDoc().recognizeFaceImages = !Doc.UserDoc().recognizeFaceImages; + }} + toggleStatus={BoolCast(Doc.UserDoc().recognizeFaceImages)} + size={Size.XSMALL} + color={SettingsManager.userColor} + /> , props: Opt() { } private _dropDisposer?: DragManager.DragDropDisposer; private _oldWheel: HTMLElement | null = null; + private _disposers: { [key: string]: IReactionDisposer } = {}; + private _lastHeight = 0; constructor(props: FieldViewProps) { super(props); @@ -50,13 +52,17 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { } @observable _headerRef: HTMLDivElement | null = null; @observable _listRef: HTMLDivElement | null = null; - _disposers: { [key: string]: IReactionDisposer } = {}; - _lastHeight = 0; - observer = new ResizeObserver(() => this._props.setHeight?.((this.props.Document._face_showImages ? 20 : 0) + (!this._headerRef ? 0 : DivHeight(this._headerRef)) + (!this._listRef ? 0 : DivHeight(this._listRef)))); + observer = new ResizeObserver(a => { + this._props.setHeight?.( + (this.props.Document._face_showImages ? 20 : 0) + // + (!this._headerRef ? 0 : DivHeight(this._headerRef)) + + (!this._listRef ? 0 : DivHeight(this._listRef)) + ); + }); componentDidMount(): void { this._disposers.refList = reaction( - () => ({ refList: [this._headerRef, this._listRef], autoHeight: this.layoutDoc._layout_autoHeight && !DocumentView.LightboxContains(this.DocumentView?.()) }), + () => ({ refList: [this._headerRef, this._listRef], autoHeight: this.layoutDoc._layout_autoHeight }), ({ refList, autoHeight }) => { this.observer.disconnect(); if (autoHeight) refList.filter(r => r).forEach(r => this.observer.observe(r!)); @@ -66,7 +72,8 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { } componentWillUnmount(): void { - //this._disposers?.(); + this.observer.disconnect(); + Object.keys(this._disposers).forEach(key => this._disposers[key]()); } protected createDropTarget = (ele: HTMLDivElement) => { this._dropDisposer?.(); @@ -213,17 +220,27 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { moveDocument = (doc: Doc | Doc[], targetCollection: Doc | undefined, addDocument: (doc: Doc | Doc[]) => boolean): boolean => !!(this._props.removeDocument?.(doc) && addDocument?.(doc)); + stackingStyleProvider = (doc: Doc | undefined, props: Opt, property: string) => { + if (doc === Doc.ActiveDashboard) return this._props.styleProvider?.(this.Document, this._props, property); + return this._props.styleProvider?.(doc, this._props, property); + }; render() { return !Doc.ActiveDashboard ? null : ( - +
+
+
(Doc.UserDoc().recognizeFaceImages = !Doc.UserDoc().recognizeFaceImages))}>{`Face Recgognition is ${Doc.UserDoc().recognizeFaceImages ? 'on' : 'off'}`}
+
+ +
); } } diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index f613f78ce..7c8043219 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -230,6 +230,7 @@ export class FaceRecognitionHandler { * @param imgDoc The document being analyzed. */ private classifyFacesInImage = async (imgDoc: Doc) => { + if (!Doc.UserDoc().recognizeFaceImages) return; const activeDashboard = Doc.ActiveDashboard; if (!this._apiModelReady || !activeDashboard) { this._pendingAPIModelReadyDocs.push(imgDoc); -- cgit v1.2.3-70-g09d2 From 66daf540d581d49af5d5901963dbb95cbc2643a0 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 20:19:27 -0400 Subject: from last --- src/client/views/search/FaceRecognitionHandler.tsx | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 7c8043219..e35f860ab 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -183,7 +183,6 @@ export class FaceRecognitionHandler { _layout_fitWidth: true, _layout_autoHeight: true, _face_showImages: true, - backgroundColor: '#555555', _width: 400, _height: 100, }); -- cgit v1.2.3-70-g09d2 From c4586cb36939561a8d0dd2dcbab4a20c51aaba5f Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 20:23:23 -0400 Subject: from last --- src/client/util/CurrentUserUtils.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index dc0c95121..14fb65252 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -451,10 +451,10 @@ pie title Minerals in my tap water { title: "Closed", toolTip: "Recently Closed", target: this.setupRecentlyClosed(doc, "myRecentlyClosed"), ignoreClick: true, icon: "archive", hidden: true }, // this doc is hidden from the Sidebar, but it's still being used in MyFilesystem which ignores the hidden field { title: "Shared", toolTip: "Shared Docs", target: Doc.MySharedDocs, ignoreClick: true, icon: "users", funcs: {badgeValue: badgeValue}}, { title: "Trails", toolTip: "Trails ⌘R", target: Doc.UserDoc(), ignoreClick: true, icon: "pres-trail", funcs: {target: getActiveDashTrails}}, - { title: "User Doc", toolTip: "User Doc", target: this.setupUserDocView(doc, "myUserDocView"), ignoreClick: true, icon: "address-card",funcs: {hidden: "IsNoviceMode()"} }, { title: "Image Grouper", toolTip: "Image Grouper", target: this.setupImageGrouper(doc, "myImageGrouper"), ignoreClick: true, icon: "folder-open", hidden: false }, - { title: "Face Collection", toolTip: "Face Collection", target: this.setupFaceCollection(doc, "myFaceCollection"), ignoreClick: true, icon: "face-smile", hidden: false }, - ].map(tuple => ({...tuple, scripts:{onClick: 'selectMainMenu(this)'}})); + { title: "Faces", toolTip: "Unique Faces", target: this.setupFaceCollection(doc, "myFaceCollection"), ignoreClick: true, icon: "face-smile", hidden: false }, + { title: "User Doc", toolTip: "User Doc", target: this.setupUserDocView(doc, "myUserDocView"), ignoreClick: true, icon: "address-card",funcs: {hidden: "IsNoviceMode()"} }, + ].map(tuple => ({...tuple, scripts:{onClick: 'selectMainMenu(this)'}})); } /// the empty panel that is filled with whichever left menu button's panel has been selected -- cgit v1.2.3-70-g09d2 From 9a92fa403a5e2a094763d6f92ac55549aecf359c Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 20:38:01 -0400 Subject: cleanup of faces and tags --- src/client/views/TagsView.tsx | 4 ++++ .../collectionFreeForm/FaceCollectionBox.tsx | 17 +++++++++++++---- src/client/views/search/FaceRecognitionHandler.tsx | 5 ++--- 3 files changed, 19 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 394162f46..82c85ddf0 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -252,6 +252,10 @@ export class TagsView extends ObservableReactComponent { return this._isEditing && DocumentView.SelectedDocs().includes(this._props.View.Document); } + /** + * Shows or hides the editing UI for adding/removing Doc tags + * @param editing + */ @action setToEditing = (editing = true) => { this._isEditing = editing; diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 7820af8aa..662436ddc 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -42,7 +42,6 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { return FieldView.LayoutString(UniqueFaceBox, fieldKey); } private _dropDisposer?: DragManager.DragDropDisposer; - private _oldWheel: HTMLElement | null = null; private _disposers: { [key: string]: IReactionDisposer } = {}; private _lastHeight = 0; @@ -50,8 +49,10 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { super(props); makeObservable(this); } + @observable _headerRef: HTMLDivElement | null = null; @observable _listRef: HTMLDivElement | null = null; + observer = new ResizeObserver(a => { this._props.setHeight?.( (this.props.Document._face_showImages ? 20 : 0) + // @@ -75,6 +76,7 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { this.observer.disconnect(); Object.keys(this._disposers).forEach(key => this._disposers[key]()); } + protected createDropTarget = (ele: HTMLDivElement) => { this._dropDisposer?.(); ele && (this._dropDisposer = DragManager.MakeDropTarget(ele, this.onInternalDrop.bind(this), this.Document)); @@ -111,7 +113,8 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { } /** - * Toggles whether a Face Document displays its associated docs. + * Toggles whether a Face Document displays its associated docs. This saves and restores the last height of the Doc since + * toggling the associated Documentss overwrites the Doc height. */ onDisplayClick() { this.Document._face_showImages && (this._lastHeight = NumCast(this.Document.height)); @@ -134,6 +137,9 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { FaceRecognitionHandler.UniqueFaceRemoveFaceImage(imgDoc, this.Document); }, 'remove doc from face'); + /** + * This stops scroll wheel events when they are used to scroll the face collection. + */ onPassiveWheel = (e: WheelEvent) => e.stopPropagation(); render() { @@ -161,9 +167,8 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { pointerEvents: this._props.isContentActive() ? undefined : 'none', }} ref={action((ele: HTMLDivElement | null) => { + this._listRef?.removeEventListener('wheel', this.onPassiveWheel); this._listRef = ele; - this._oldWheel?.removeEventListener('wheel', this.onPassiveWheel); - this._oldWheel = ele; // prevent wheel events from passively propagating up through containers and prevents containers from preventDefault which would block scrolling ele?.addEventListener('wheel', this.onPassiveWheel, { passive: false }); })}> @@ -220,6 +225,10 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { moveDocument = (doc: Doc | Doc[], targetCollection: Doc | undefined, addDocument: (doc: Doc | Doc[]) => boolean): boolean => !!(this._props.removeDocument?.(doc) && addDocument?.(doc)); + /** + * this changes style provider requests that target the dashboard to requests that target the face collection box which is what's actually being rendered. + * This is needed, for instance, to get the default background color from the face collection, not the dashboard. + */ stackingStyleProvider = (doc: Doc | undefined, props: Opt, property: string) => { if (doc === Doc.ActiveDashboard) return this._props.styleProvider?.(this.Document, this._props, property); return this._props.styleProvider?.(doc, this._props, property); diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index e35f860ab..8513ec94d 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -5,11 +5,10 @@ import { DocData } from '../../../fields/DocSymbols'; import { List } from '../../../fields/List'; import { listSpec } from '../../../fields/Schema'; import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; -import { DocumentType } from '../../documents/DocumentTypes'; -import { DocumentManager } from '../../util/DocumentManager'; import { ImageField } from '../../../fields/URLField'; -import { UniqueFaceBox } from '../collections/collectionFreeForm/FaceCollectionBox'; +import { DocumentType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; +import { DocumentManager } from '../../util/DocumentManager'; /** * A singleton class that handles face recognition and manages face Doc collections for each face found. -- cgit v1.2.3-70-g09d2 From f0d9731e1c43ee13114d42db8c4e27c94bbbf3c0 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 22:25:58 -0400 Subject: made face doc labels editable --- .../views/collections/collectionFreeForm/FaceCollectionBox.scss | 6 ++++++ .../views/collections/collectionFreeForm/FaceCollectionBox.tsx | 4 +++- src/client/views/search/FaceRecognitionHandler.tsx | 9 +++++---- 3 files changed, 14 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss index a72efc948..0a001d84c 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.scss @@ -11,6 +11,12 @@ color: white; font-size: 24px; text-align: center; + .face-document-name { + text-align: center; + background: transparent; + width: 80%; + border: transparent; + } } .face-collection-buttons { diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 662436ddc..7e47292e5 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -149,7 +149,9 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() {
(this._headerRef = r))}> -

{FaceRecognitionHandler.UniqueFaceLabel(this.Document)}

+

+ FaceRecognitionHandler.SetUniqueFaceLabel(this.Document, e.currentTarget.value)} value={FaceRecognitionHandler.UniqueFaceLabel(this.Document)} /> +

StrCast(faceDoc[DocData].face_label); + public static UniqueFaceLabel = (faceDoc: Doc) => StrCast(faceDoc[DocData].face); + + public static SetUniqueFaceLabel = (faceDoc: Doc, value: string) => (faceDoc[DocData].face = value); /** * Returns all the face descriptors associated with a unique face Doc * @param faceDoc unique face Doc @@ -186,8 +188,7 @@ export class FaceRecognitionHandler { _height: 100, }); const uface = uniqueFaceDoc[DocData]; - uface.face = ''; // just to make prettyprinting look better - uface.face_label = `Face${faceDocNum}`; + uface.face = `Face${faceDocNum}`; uface.face_images = new List(); uface.face_descriptors = new List>(); Doc.SetContainer(uniqueFaceDoc, Doc.MyFaceCollection); -- cgit v1.2.3-70-g09d2 From cf38fc81b69abb084938c8f45eaf5d94caacb3a3 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 22:49:10 -0400 Subject: added face rectangle annotations for faces in images --- src/client/views/search/FaceRecognitionHandler.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index dee0ab99b..4e500d24e 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -243,12 +243,17 @@ export class FaceRecognitionHandler { FaceRecognitionHandler.loadImage(imgUrl).then( // load image and analyze faces img => faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors() .then(imgDocFaceDescriptions => { // For each face detected, find a match. + const annos = [] as Doc[]; + const scale = NumCast(imgDoc.data_nativeWidth) / img.width; for (const fd of imgDocFaceDescriptions) { const faceDescriptor = new List(Array.from(fd.descriptor)); + annos.push(Docs.Create.FreeformDocument([], {backgroundColor: "#55555555", x: fd.alignedRect.box.left*scale, y: fd.alignedRect.box.top*scale, _width: fd.alignedRect.box.width*scale, _height: fd.alignedRect.box.height*scale})) FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); // add face descriptor to image's list of descriptors const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard); FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); // add image/faceDescriptor to matched unique face - } // + } + + imgDoc[DocData].data_annotations = new List(annos); return imgDocFaceDescriptions; }) ); -- cgit v1.2.3-70-g09d2 From ef5a8b8261052c3079f267d1d8d0804a495e3e3d Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 23:29:47 -0400 Subject: fixed naming of face annotations --- src/client/documents/Documents.ts | 1 + src/client/views/search/FaceRecognitionHandler.tsx | 56 ++++++++++++++-------- 2 files changed, 38 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index ac271526f..235f54fe8 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -363,6 +363,7 @@ export class DocumentOptions { data?: FieldType; data_useCors?: BOOLt = new BoolInfo('whether CORS protocol should be used for web page'); _face_showImages?: BOOLt = new BoolInfo('whether to show images in uniqe face Doc'); + face?: DOCt = new DocInfo('face document'); columnHeaders?: List; // headers for stacking views schemaHeaders?: List; // headers for schema view dockingConfig?: STRt = new StrInfo('configuration of golden layout windows (applies only if doc is rendered as a CollectionDockingView)', false); diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 4e500d24e..4906ba4b6 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -9,6 +9,7 @@ import { ImageField } from '../../../fields/URLField'; import { DocumentType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; import { DocumentManager } from '../../util/DocumentManager'; +import { ComputedField } from '../../../fields/ScriptField'; /** * A singleton class that handles face recognition and manages face Doc collections for each face found. @@ -176,7 +177,7 @@ export class FaceRecognitionHandler { dashboard[DocData].myUniqueFaces_count = faceDocNum; // TODO: improve to a better name const uniqueFaceDoc = Docs.Create.UniqeFaceDocument({ - title: `Face ${faceDocNum}`, + title: ComputedField.MakeFunction('this.face') as unknown as string, _layout_reflowHorizontal: true, _layout_reflowVertical: true, _layout_nativeDimEditable: true, @@ -237,27 +238,44 @@ export class FaceRecognitionHandler { setTimeout(() => this.classifyFacesInImage(imgDoc), 1000); } else { const imgUrl = ImageCast(imgDoc[Doc.LayoutFieldKey(imgDoc)]); - if (imgUrl && !DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc[DocData])) { // only examine Docs that have an image and that haven't already been examined. + if (imgUrl && !DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc[DocData])) { + // only examine Docs that have an image and that haven't already been examined. Doc.AddDocToList(Doc.MyFaceCollection, 'examinedFaceDocs', imgDoc[DocData]); FaceRecognitionHandler.initImageDocFaceDescriptors(imgDoc); - FaceRecognitionHandler.loadImage(imgUrl).then( // load image and analyze faces - img => faceapi.detectAllFaces(img).withFaceLandmarks().withFaceDescriptors() - .then(imgDocFaceDescriptions => { // For each face detected, find a match. - const annos = [] as Doc[]; - const scale = NumCast(imgDoc.data_nativeWidth) / img.width; - for (const fd of imgDocFaceDescriptions) { - const faceDescriptor = new List(Array.from(fd.descriptor)); - annos.push(Docs.Create.FreeformDocument([], {backgroundColor: "#55555555", x: fd.alignedRect.box.left*scale, y: fd.alignedRect.box.top*scale, _width: fd.alignedRect.box.width*scale, _height: fd.alignedRect.box.height*scale})) - FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); // add face descriptor to image's list of descriptors - const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard); - FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); // add image/faceDescriptor to matched unique face - } + FaceRecognitionHandler.loadImage(imgUrl).then( + // load image and analyze faces + img => faceapi + .detectAllFaces(img) + .withFaceLandmarks() + .withFaceDescriptors() + .then(imgDocFaceDescriptions => { // For each face detected, find a match. + const annos = [] as Doc[]; + const scale = NumCast(imgDoc.data_nativeWidth) / img.width; + imgDocFaceDescriptions.forEach((fd, i) => { + const faceDescriptor = new List(Array.from(fd.descriptor)); + FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); // add face descriptor to image's list of descriptors + const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard); + FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); // add image/faceDescriptor to matched unique face + annos.push( + Docs.Create.FreeformDocument([], { + title: ComputedField.MakeFunction(`this.face.face`) as unknown as string, // + annotationOn: imgDoc, + face: matchedUniqueFace, + backgroundColor: '#55555555', + x: fd.alignedRect.box.left * scale, + y: fd.alignedRect.box.top * scale, + _width: fd.alignedRect.box.width * scale, + _height: fd.alignedRect.box.height * scale, + }) + ); + Doc.SetContainer(annos.lastElement(), imgDoc[DocData]); + }); - imgDoc[DocData].data_annotations = new List(annos); - return imgDocFaceDescriptions; - }) - ); - } // prettier-ignore + imgDoc[DocData].data_annotations = new List(annos); + return imgDocFaceDescriptions; + }) + ); // prettier-ignore + } } }; } -- cgit v1.2.3-70-g09d2 From 5180a22ad70cb79ff2167a3aa0a63962ec6b0319 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 26 Aug 2024 23:49:35 -0400 Subject: made face annotation titles editable to edit face doc. --- src/client/views/search/FaceRecognitionHandler.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 4906ba4b6..0cee7184c 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -177,7 +177,7 @@ export class FaceRecognitionHandler { dashboard[DocData].myUniqueFaces_count = faceDocNum; // TODO: improve to a better name const uniqueFaceDoc = Docs.Create.UniqeFaceDocument({ - title: ComputedField.MakeFunction('this.face') as unknown as string, + title: ComputedField.MakeFunction('this.face', undefined, undefined, 'this.face = value') as unknown as string, _layout_reflowHorizontal: true, _layout_reflowVertical: true, _layout_nativeDimEditable: true, @@ -258,9 +258,9 @@ export class FaceRecognitionHandler { FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); // add image/faceDescriptor to matched unique face annos.push( Docs.Create.FreeformDocument([], { - title: ComputedField.MakeFunction(`this.face.face`) as unknown as string, // + title: ComputedField.MakeFunction(`this.face.face`, undefined, undefined, 'this.face.face = value') as unknown as string, // annotationOn: imgDoc, - face: matchedUniqueFace, + face: matchedUniqueFace[DocData], backgroundColor: '#55555555', x: fd.alignedRect.box.left * scale, y: fd.alignedRect.box.top * scale, -- cgit v1.2.3-70-g09d2 From 248f9fdced99a36c28fb34f39b78e1267ec02486 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 27 Aug 2024 08:23:04 -0400 Subject: allow non-faces to be added to face collections --- .../views/collections/collectionFreeForm/FaceCollectionBox.tsx | 6 ++---- src/client/views/search/FaceRecognitionHandler.tsx | 10 ++++++---- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 7e47292e5..ea1c22962 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -102,10 +102,8 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { { dist: 1, face_match: undefined as Opt> } ); - // assign the face in the image that's closest to the face collection to be the face that's assigned to the collection - if (face_match) { - FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this.Document); - } + // assign the face in the image that's closest to the face collection's face + FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this.Document); } }); e.stopPropagation(); diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 0cee7184c..021802061 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -1,6 +1,6 @@ import * as faceapi from 'face-api.js'; import { FaceMatcher } from 'face-api.js'; -import { Doc, DocListCast } from '../../../fields/Doc'; +import { Doc, DocListCast, Opt } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { List } from '../../../fields/List'; import { listSpec } from '../../../fields/Schema'; @@ -133,10 +133,12 @@ export class FaceRecognitionHandler { * @param faceDescriptor - the face descriptor for the face in the image to add * @param faceDoc - unique face Doc */ - public static UniqueFaceAddFaceImage = (img: Doc, faceDescriptor: List, faceDoc: Doc) => { + public static UniqueFaceAddFaceImage = (img: Doc, faceDescriptor: Opt>, faceDoc: Doc) => { Doc.AddDocToList(faceDoc, 'face_images', img); - Cast(faceDoc.face_descriptors, listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that - Doc.AddDocToList(img[DocData], FaceRecognitionHandler.ImageDocFaceField(img), faceDoc); + if (faceDescriptor) { + Cast(faceDoc.face_descriptors, listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that + Doc.AddDocToList(img[DocData], FaceRecognitionHandler.ImageDocFaceField(img), faceDoc); + } }; /** -- cgit v1.2.3-70-g09d2 From cf10fbb80a022ddb141e41203b9135b6f1ed9527 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 27 Aug 2024 13:49:07 -0400 Subject: uniying image labels => tags. made face tags distinguishable from other tags - and drag off to place face collection. --- src/client/documents/Documents.ts | 1 + src/client/views/TagsView.scss | 4 + src/client/views/TagsView.tsx | 61 +++++++---- .../collectionFreeForm/FaceCollectionBox.tsx | 33 ++++-- .../collectionFreeForm/ImageLabelBox.tsx | 10 +- src/client/views/search/FaceRecognitionHandler.tsx | 112 +++++++-------------- src/fields/Doc.ts | 6 +- 7 files changed, 117 insertions(+), 110 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 235f54fe8..af181b031 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -364,6 +364,7 @@ export class DocumentOptions { data_useCors?: BOOLt = new BoolInfo('whether CORS protocol should be used for web page'); _face_showImages?: BOOLt = new BoolInfo('whether to show images in uniqe face Doc'); face?: DOCt = new DocInfo('face document'); + faceDescriptor?: List; columnHeaders?: List; // headers for stacking views schemaHeaders?: List; // headers for schema view dockingConfig?: STRt = new StrInfo('configuration of golden layout windows (applies only if doc is rendered as a CollectionDockingView)', false); diff --git a/src/client/views/TagsView.scss b/src/client/views/TagsView.scss index f7365a51b..24f9e86bc 100644 --- a/src/client/views/TagsView.scss +++ b/src/client/views/TagsView.scss @@ -24,6 +24,10 @@ align-items: center; } +.faceItem { + background-color: lightGreen; +} + .tagsView-suggestions-box { display: flex; flex-wrap: wrap; diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 82c85ddf0..da1add55b 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -6,10 +6,10 @@ import React from 'react'; import ResizeObserver from 'resize-observer-polyfill'; import { returnFalse, setupMoveUpEvents } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; -import { Doc, DocListCast, Opt, StrListCast } from '../../fields/Doc'; +import { Doc, DocListCast, Field, Opt, StrListCast } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; -import { NumCast, StrCast } from '../../fields/Types'; +import { DocCast, NumCast, StrCast } from '../../fields/Types'; import { DocumentType } from '../documents/DocumentTypes'; import { DragManager } from '../util/DragManager'; import { SnappingManager } from '../util/SnappingManager'; @@ -17,6 +17,7 @@ import { undoable } from '../util/UndoManager'; import { ObservableReactComponent } from './ObservableReactComponent'; import './TagsView.scss'; import { DocumentView } from './nodes/DocumentView'; +import { FaceRecognitionHandler } from './search/FaceRecognitionHandler'; /** * The TagsView is a metadata input/display panel shown at the bottom of a DocumentView in a freeform collection. @@ -158,6 +159,10 @@ export class TagItem extends ObservableReactComponent { * @returns */ createTagCollection = () => { + if (!this._props.tagDoc) { + const face = FaceRecognitionHandler.FindUniqueFaceByName(this._props.tag); + return face ? Doc.MakeEmbedding(face) : undefined; + } // Get the documents that contain the tag. const newEmbeddings = TagItem.allDocsWithTag(this._props.tag).map(doc => Doc.MakeEmbedding(doc)); @@ -188,9 +193,13 @@ export class TagItem extends ObservableReactComponent { this, e, () => { - const dragData = new DragManager.DocumentDragData([this.createTagCollection()]); - DragManager.StartDocumentDrag([this._ref.current!], dragData, e.clientX, e.clientY, {}); - return true; + const dragCollection = this.createTagCollection(); + if (dragCollection) { + const dragData = new DragManager.DocumentDragData([dragCollection]); + DragManager.StartDocumentDrag([this._ref.current!], dragData, e.clientX, e.clientY, {}); + return true; + } + return false; }, returnFalse, emptyFunction @@ -199,20 +208,20 @@ export class TagItem extends ObservableReactComponent { }; render() { - setTimeout(() => TagItem.addTagToDoc(this._props.doc, this._props.tag)); // bcz: hack to make sure that Docs are added to their tag Doc collection since metadata can get set anywhere without a guard triggering an add to the collection + this._props.tagDoc && setTimeout(() => TagItem.addTagToDoc(this._props.doc, this._props.tag)); // bcz: hack to make sure that Docs are added to their tag Doc collection since metadata can get set anywhere without a guard triggering an add to the collection const tag = this._props.tag.replace(/^#/, ''); const metadata = tag.startsWith('@') ? tag.replace(/^@/, '') : ''; return ( -
+
{metadata ? ( {tag}  - {this._props.doc[metadata] as string} + {Field.toString(this._props.doc[metadata])} ) : ( tag )} - {this.props.showRemoveUI && ( + {this.props.showRemoveUI && this._props.tagDoc && ( TagItem.removeTagFromDoc(this._props.doc, this._props.tag, this._props.tagDoc), `remove tag ${this._props.tag}`)} @@ -234,12 +243,9 @@ interface TagViewProps { */ @observer export class TagsView extends ObservableReactComponent { - private _ref: React.RefObject; - constructor(props: any) { super(props); makeObservable(this); - this._ref = React.createRef(); } @observable _currentInput = ''; @@ -268,18 +274,26 @@ export class TagsView extends ObservableReactComponent { * just the tag. * @param tag tag string to add */ - submitTag = undoable((tag: string) => { - const submittedLabel = tag.trim(); - submittedLabel && TagItem.addTagToDoc(this._props.View.Document, '#' + submittedLabel.replace(/^#/, '')); - this._currentInput = ''; // Clear the input box - }, 'added doc label'); + submitTag = undoable( + action((tag: string) => { + const submittedLabel = tag.trim(); + submittedLabel && TagItem.addTagToDoc(this._props.View.Document, '#' + submittedLabel.replace(/^#/, '')); + this._currentInput = ''; // Clear the input box + }), + 'added doc label' + ); /** * When 'showTags' is set on a Doc, this displays a wrapping panel of tagItemViews corresponding to all the tags set on the Doc). * When the dropdown is clicked, this will toggle an extended UI that allows additional tags to be added/removed. */ render() { - const tagsList = StrListCast(this._props.View.dataDoc.tags); + const tagsList = new Set(StrListCast(this._props.View.dataDoc.tags)); + const facesList = new Set( + DocListCast(this._props.View.dataDoc[Doc.LayoutFieldKey(this._props.View.Document) + '_annotations']) + .filter(d => d.face) + .map(doc => StrCast(DocCast(doc.face)?.title)) + ); return !this._props.View.Document.showTags ? null : (
{ }}>
- {!tagsList.length ? null : ( // + {!tagsList.size ? null : ( // this.setToEditing(!this._isEditing)} icon={} /> )} - {tagsList.map(tag => ( - + {Array.from(tagsList).map((tag, i) => ( + + ))} + {Array.from(facesList).map((tag, i) => ( + ))}
{this.isEditing ? ( @@ -330,7 +347,7 @@ export class TagsView extends ObservableReactComponent { color={SnappingManager.userVariantColor} tooltip="Add existing tag" onClick={() => this.submitTag(tag)} - key={i} + key={tag} /> ); })} diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index ea1c22962..c62303dc0 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -9,8 +9,9 @@ import React from 'react'; import { DivHeight, lightOrDark, returnTrue, setupMoveUpEvents } from '../../../../ClientUtils'; import { emptyFunction } from '../../../../Utils'; import { Doc, Opt } from '../../../../fields/Doc'; +import { DocData } from '../../../../fields/DocSymbols'; import { List } from '../../../../fields/List'; -import { ImageCast, NumCast, StrCast } from '../../../../fields/Types'; +import { DocCast, ImageCast, NumCast, StrCast } from '../../../../fields/Types'; import { DocumentType } from '../../../documents/DocumentTypes'; import { Docs } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; @@ -87,23 +88,27 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { ?.filter(doc => doc.type === DocumentType.IMG) .forEach(imgDoc => { // If the current Face Document has no faces, and the doc has more than one face descriptor, don't let the user add the document first. Or should we just use the first face ? - if (FaceRecognitionHandler.UniqueFaceDescriptors(this.Document).length === 0 && FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).length > 1) { + if (FaceRecognitionHandler.UniqueFaceDescriptors(this.Document).length === 0 && FaceRecognitionHandler.ImageDocFaceAnnos(imgDoc).length > 1) { alert('Cannot add a document with multiple faces as the first item!'); } else { // Loop through the documents' face descriptors and choose the face in the iage with the smallest distance (most similar to the face colleciton) const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this.Document).map(fd => new Float32Array(Array.from(fd))); const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this.Document), faceDescriptorsAsFloat32Array); const faceMatcher = new FaceMatcher([labeledFaceDescriptor], 1); - const { face_match } = FaceRecognitionHandler.ImageDocFaceDescriptors(imgDoc).reduce( - (prev, face) => { - const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(face))); - return match.distance < prev.dist ? { dist: match.distance, face_match: face } : prev; + const { faceAnno } = FaceRecognitionHandler.ImageDocFaceAnnos(imgDoc).reduce( + (prev, faceAnno) => { + const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(faceAnno.faceDescriptor as List))); + return match.distance < prev.dist ? { dist: match.distance, faceAnno } : prev; }, - { dist: 1, face_match: undefined as Opt> } + { dist: 1, faceAnno: undefined as Opt } ); // assign the face in the image that's closest to the face collection's face - FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, face_match, this.Document); + if (faceAnno) { + FaceRecognitionHandler.UniqueFaceRemoveFaceImage(faceAnno, DocCast(faceAnno.face)); + FaceRecognitionHandler.UniqueFaceAddFaceImage(faceAnno, this.Document); + faceAnno.face = this.Document; + } } }); e.stopPropagation(); @@ -224,7 +229,15 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { } moveDocument = (doc: Doc | Doc[], targetCollection: Doc | undefined, addDocument: (doc: Doc | Doc[]) => boolean): boolean => !!(this._props.removeDocument?.(doc) && addDocument?.(doc)); - + addDocument = (doc: Doc | Doc[], annotationKey?: string) => { + const uniqueFaceDoc = doc instanceof Doc ? doc : doc[0]; + const added = uniqueFaceDoc.type === DocumentType.UFACE; + if (added) { + Doc.SetContainer(uniqueFaceDoc, Doc.MyFaceCollection); + Doc.ActiveDashboard && Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'myUniqueFaces', uniqueFaceDoc); + } + return added; + }; /** * this changes style provider requests that target the dashboard to requests that target the face collection box which is what's actually being rendered. * This is needed, for instance, to get the default background color from the face collection, not the dashboard. @@ -233,6 +246,7 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { if (doc === Doc.ActiveDashboard) return this._props.styleProvider?.(this.Document, this._props, property); return this._props.styleProvider?.(doc, this._props, property); }; + render() { return !Doc.ActiveDashboard ? null : (
@@ -245,6 +259,7 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { Document={Doc.ActiveDashboard} fieldKey="myUniqueFaces" moveDocument={this.moveDocument} + addDocument={this.addDocument} isContentActive={returnTrue} isAnyChildContentActive={returnTrue} childHideDecorations={true} diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index 6eb3eb784..5d3154e3c 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -51,7 +51,7 @@ export class ImageLabelBoxData { label = label.toUpperCase().trim(); if (label.length > 0) { if (!this._labelGroups.includes(label)) { - this._labelGroups = [...this._labelGroups, label]; + this._labelGroups = [...this._labelGroups, label.startsWith('#') ? label : '#' + label]; } } }; @@ -178,8 +178,12 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { const labels = imageInfo.labels.split('\n'); labels.forEach(label => { - label = label.replace(/^\d+\.\s*|-|f\*/, '').trim(); - console.log(label); + label = + '#' + + label + .replace(/^\d+\.\s*|-|f\*/, '') + .replace(/^#/, '') + .trim(); imageInfo.doc[DocData][label] = true; (imageInfo.doc[DocData].tags as List).push(label); }); diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 021802061..4c10307e6 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -1,15 +1,14 @@ import * as faceapi from 'face-api.js'; import { FaceMatcher } from 'face-api.js'; -import { Doc, DocListCast, Opt } from '../../../fields/Doc'; +import { Doc, DocListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { List } from '../../../fields/List'; -import { listSpec } from '../../../fields/Schema'; -import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; +import { ComputedField } from '../../../fields/ScriptField'; +import { DocCast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; import { ImageField } from '../../../fields/URLField'; import { DocumentType } from '../../documents/DocumentTypes'; import { Docs } from '../../documents/Documents'; import { DocumentManager } from '../../util/DocumentManager'; -import { ComputedField } from '../../../fields/ScriptField'; /** * A singleton class that handles face recognition and manages face Doc collections for each face found. @@ -18,16 +17,17 @@ import { ComputedField } from '../../../fields/ScriptField'; * as a face collection Doc). If the face matches a face collection Doc, then it will be added to that * collection along with the numerical representation of the face, its face descriptor. * - * Image Doc's that are added to one or more face collection Docs will be given these metadata fields: - * _faceDescriptors - list of all the numerical face representations found in the image. - * _faces - list of unique face Docs corresponding to recognized faces in the image. + * Image Doc's that are added to one or more face collection Docs will be given an annotation rectangle that + * highlights where the face is, and the annotation will have these fields: + * faceDescriptor - the numerical face representations found in the image. + * face - the unique face Docs corresponding to recognized face in the image. + * annotationOn - the image where the face was found * * unique face Doc's are created for each person identified and are stored in the Dashboard's myUniqueFaces field * * Each unique face Doc represents a unique face and collects all matching face images for that person. It has these fields: * face - a string label for the person that was recognized (TODO: currently it's just a 'face#') - * face_descriptors - a list of all the face descriptors for different images of the person - * face_docList - a list of all image Docs that contain a face for the person + * face_annos - a list of face annotations, where each anno has */ export class FaceRecognitionHandler { static _instance: FaceRecognitionHandler; @@ -54,42 +54,12 @@ export class FaceRecognitionHandler { }); }; - /** - * return the metadata field name where unique face Docs are stored - * @param imgDoc image with faces - * @returns name of field - */ - private static ImageDocFaceField = (imgDoc: Doc) => `${Doc.LayoutFieldKey(imgDoc)}_faces`; - /** * Returns an array of faceDocs for each face recognized in the image * @param imgDoc image with faces * @returns faceDoc array */ - private static ImageDocFaces = (imgDoc: Doc) => DocListCast(imgDoc[`${Doc.LayoutFieldKey(imgDoc)}_faces`]); - - /** - * initializes an image with an empty list of face descriptors - * @param imgDoc image to initialize - */ - private static initImageDocFaceDescriptors = (imgDoc: Doc) => { - imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_faceDescriptors`] = new List>(); - }; - /** - * returns the face descriptors for each face found on an image Doc - * @param imgDoc - * @returns list of face descriptors - */ - public static ImageDocFaceDescriptors = (imgDoc: Doc) => imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_faceDescriptors`] as List>; - - /** - * Adds a face descriptor for a face found in an image - * @param imgDoc image Doc with face - * @param faceDescriptor descriptor of a face - */ - public static ImageDocAddFaceDescriptor = (imgDoc: Doc, faceDescriptor: List) => { - Cast(imgDoc[DocData][`${Doc.LayoutFieldKey(imgDoc)}_faceDescriptors`], listSpec('number'), null).push(faceDescriptor as unknown as number); - }; + public static ImageDocFaceAnnos = (imgDoc: Doc) => DocListCast(imgDoc[`${Doc.LayoutFieldKey(imgDoc)}_annotations`]).filter(doc => doc.face); /** * returns a list of all face collection Docs on the current dashboard @@ -97,6 +67,13 @@ export class FaceRecognitionHandler { */ public static UniqueFaces = () => DocListCast(Doc.ActiveDashboard?.[DocData].myUniqueFaces); + /** + * Find a unique face from its name + * @param name name of unique face + * @returns unique face or undefined + */ + public static FindUniqueFaceByName = (name: string) => FaceRecognitionHandler.UniqueFaces().find(faceDoc => faceDoc.title === name); + /** * Removes a unique face from the set of recognized unique faces * @param faceDoc unique face Doc @@ -117,28 +94,23 @@ export class FaceRecognitionHandler { * @param faceDoc unique face Doc * @returns face descriptors */ - public static UniqueFaceDescriptors = (faceDoc: Doc) => faceDoc[DocData].face_descriptors as List>; + public static UniqueFaceDescriptors = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_annos).map(face => face.faceDescriptor as List); /** * Returns a list of all face image Docs associated with a unique face Doc * @param faceDoc unique face Doc * @returns image Docs */ - public static UniqueFaceImages = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_images); + public static UniqueFaceImages = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_annos).map(face => DocCast(face.annotationOn)); /** * Adds a face image to a unique face Doc, adds the unique face Doc to the images list of reognized faces, * and updates the unique face's set of face image descriptors * @param img - image with faces to add to a face collection Doc - * @param faceDescriptor - the face descriptor for the face in the image to add - * @param faceDoc - unique face Doc + * @param faceAnno - a face annotation */ - public static UniqueFaceAddFaceImage = (img: Doc, faceDescriptor: Opt>, faceDoc: Doc) => { - Doc.AddDocToList(faceDoc, 'face_images', img); - if (faceDescriptor) { - Cast(faceDoc.face_descriptors, listSpec('number'), null).push(faceDescriptor as unknown as number); // items are lists of numbers, not numbers, but type system can't handle that - Doc.AddDocToList(img[DocData], FaceRecognitionHandler.ImageDocFaceField(img), faceDoc); - } + public static UniqueFaceAddFaceImage = (faceAnno: Doc, faceDoc: Doc) => { + Doc.AddDocToList(faceDoc, 'face_annos', faceAnno); }; /** @@ -146,11 +118,9 @@ export class FaceRecognitionHandler { * @param img - image with faces to remove * @param faceDoc - unique face Doc */ - public static UniqueFaceRemoveFaceImage = (img: Doc, faceDoc: Doc) => { - Doc.RemoveDocFromList(faceDoc[DocData], 'face_images', img); - const descriptorsEqual = (a: List, b: List) => (a === b ? true : a.length === b.length ? a.every((element, index) => element === b[index]) : false); - faceDoc[DocData].face_descriptors = new List>(FaceRecognitionHandler.UniqueFaceDescriptors(faceDoc).filter(fd => !FaceRecognitionHandler.ImageDocFaceDescriptors(img).some(desc => descriptorsEqual(fd, desc)))); - Doc.RemoveDocFromList(img[DocData], FaceRecognitionHandler.ImageDocFaceField(img), faceDoc); + public static UniqueFaceRemoveFaceImage = (faceAnno: Doc, faceDoc: Doc) => { + Doc.RemoveDocFromList(faceDoc[DocData], 'face_annos', faceAnno); + faceAnno.face = undefined; }; constructor() { @@ -192,8 +162,7 @@ export class FaceRecognitionHandler { }); const uface = uniqueFaceDoc[DocData]; uface.face = `Face${faceDocNum}`; - uface.face_images = new List(); - uface.face_descriptors = new List>(); + uface.face_annos = new List(); Doc.SetContainer(uniqueFaceDoc, Doc.MyFaceCollection); Doc.ActiveDashboard && Doc.AddDocToList(Doc.ActiveDashboard[DocData], 'myUniqueFaces', uniqueFaceDoc); @@ -243,7 +212,6 @@ export class FaceRecognitionHandler { if (imgUrl && !DocListCast(Doc.MyFaceCollection.examinedFaceDocs).includes(imgDoc[DocData])) { // only examine Docs that have an image and that haven't already been examined. Doc.AddDocToList(Doc.MyFaceCollection, 'examinedFaceDocs', imgDoc[DocData]); - FaceRecognitionHandler.initImageDocFaceDescriptors(imgDoc); FaceRecognitionHandler.loadImage(imgUrl).then( // load image and analyze faces img => faceapi @@ -255,22 +223,20 @@ export class FaceRecognitionHandler { const scale = NumCast(imgDoc.data_nativeWidth) / img.width; imgDocFaceDescriptions.forEach((fd, i) => { const faceDescriptor = new List(Array.from(fd.descriptor)); - FaceRecognitionHandler.ImageDocAddFaceDescriptor(imgDoc, faceDescriptor); // add face descriptor to image's list of descriptors const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard); - FaceRecognitionHandler.UniqueFaceAddFaceImage(imgDoc, faceDescriptor, matchedUniqueFace); // add image/faceDescriptor to matched unique face - annos.push( - Docs.Create.FreeformDocument([], { - title: ComputedField.MakeFunction(`this.face.face`, undefined, undefined, 'this.face.face = value') as unknown as string, // - annotationOn: imgDoc, - face: matchedUniqueFace[DocData], - backgroundColor: '#55555555', - x: fd.alignedRect.box.left * scale, - y: fd.alignedRect.box.top * scale, - _width: fd.alignedRect.box.width * scale, - _height: fd.alignedRect.box.height * scale, - }) - ); - Doc.SetContainer(annos.lastElement(), imgDoc[DocData]); + const faceAnno = Docs.Create.FreeformDocument([], { + title: ComputedField.MakeFunction(`this.face.face`, undefined, undefined, 'this.face.face = value') as unknown as string, // + annotationOn: imgDoc, + face: matchedUniqueFace[DocData], + faceDescriptor: faceDescriptor, + backgroundColor: 'transparent', + x: fd.alignedRect.box.left * scale, + y: fd.alignedRect.box.top * scale, + _width: fd.alignedRect.box.width * scale, + _height: fd.alignedRect.box.height * scale, + }) + FaceRecognitionHandler.UniqueFaceAddFaceImage(faceAnno, matchedUniqueFace); // add image/faceDescriptor to matched unique face + annos.push(faceAnno); }); imgDoc[DocData].data_annotations = new List(annos); diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index e3178f20c..7abba7679 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -791,9 +791,9 @@ export namespace Doc { linkMap.set(link[Id], await Doc.makeClone(link, cloneMap, linkMap, rtfs, exclusions, pruneDocs, cloneLinks, cloneTemplates)); } }); - if (Doc.Get(copy, 'title', true)) copy.title = '>:' + doc.title; - // Doc.SetInPlace(copy, 'title', '>:' + doc.title, true); copy.cloneOf = doc; + const cfield = ComputedField.WithoutComputed(() => FieldValue(doc.title)); + if (Doc.Get(copy, 'title', true) && !(cfield instanceof ComputedField)) copy.title = '>:' + doc.title; cloneMap.set(doc[Id], copy); return copy; @@ -1424,7 +1424,7 @@ export namespace Doc { export function Paste(docids: string[], clone: boolean, addDocument: (doc: Doc | Doc[]) => boolean, ptx?: number, pty?: number, newPoint?: number[]) { DocServer.GetRefFields(docids).then(async fieldlist => { - const list = Array.from(Object.values(fieldlist)) + const list = Array.from(fieldlist.values()) .map(d => DocCast(d)) .filter(d => d); const docs = clone ? (await Promise.all(Doc.MakeClones(list, false, false))).map(res => res.clone) : list; -- cgit v1.2.3-70-g09d2 From b8a04a0fedf8ef3612395764a0ecd01f6824ebd1 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 27 Aug 2024 13:54:39 -0400 Subject: from last --- src/client/views/TagsView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index da1add55b..d2ca77446 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -309,7 +309,7 @@ export class TagsView extends ObservableReactComponent { }}>
- {!tagsList.size ? null : ( // + {!tagsList.size && !facesList.size ? null : ( // this.setToEditing(!this._isEditing)} icon={} /> )} {Array.from(tagsList).map((tag, i) => ( -- cgit v1.2.3-70-g09d2 From a566129971f1a29b1d42679befa27c63b73a7167 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 27 Aug 2024 17:43:27 -0400 Subject: move chat tag labels to tags_chat and updated tagsView --- src/client/views/TagsView.tsx | 32 ++++++++++++++++++++-- .../collectionFreeForm/ImageLabelBox.tsx | 15 +++++----- 2 files changed, 37 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index d2ca77446..89025d668 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -1,6 +1,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Button, Colors, IconButton } from 'browndash-components'; -import { action, computed, makeObservable, observable } from 'mobx'; +import { IReactionDisposer, action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; import ResizeObserver from 'resize-observer-polyfill'; @@ -248,11 +248,25 @@ export class TagsView extends ObservableReactComponent { makeObservable(this); } + @observable _panelHeightDirty = 0; @observable _currentInput = ''; @observable _isEditing = !StrListCast(this._props.View.dataDoc.tags).length; + _heightDisposer: IReactionDisposer | undefined; + + componentDidMount() { + this._heightDisposer = reaction( + () => this._props.View.screenToContentsTransform(), + xf => { + this._panelHeightDirty = this._panelHeightDirty + 1; + } + ); + } + componentWillUnmount() { + this._heightDisposer?.(); + } @computed get currentScale() { - return NumCast((this._props.View.Document.embedContainer as Doc)?._freeform_scale, 1); + return NumCast(DocCast(this._props.View.Document.embedContainer)?._freeform_scale, 1); } @computed get isEditing() { return this._isEditing && DocumentView.SelectedDocs().includes(this._props.View.Document); @@ -289,11 +303,13 @@ export class TagsView extends ObservableReactComponent { */ render() { const tagsList = new Set(StrListCast(this._props.View.dataDoc.tags)); + const chatTagsList = new Set(StrListCast(this._props.View.dataDoc.tags_chat)); const facesList = new Set( DocListCast(this._props.View.dataDoc[Doc.LayoutFieldKey(this._props.View.Document) + '_annotations']) .filter(d => d.face) .map(doc => StrCast(DocCast(doc.face)?.title)) ); + this._panelHeightDirty; return !this._props.View.Document.showTags ? null : (
{ /> ); })} + {Array.from(chatTagsList).map(tag => { + return ( +
) : null} diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index 5d3154e3c..e419e522c 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -163,7 +163,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { // Converts the images into a Base64 format, afterwhich the information is sent to GPT to label them. const imageInfos = this._selectedImages.map(async doc => { - if (!doc[DocData].tags) { + if (!doc[DocData].tags_chat) { const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); return CollectionCardView.imageUrlToBase64(`${name}_o.${type}`).then(hrefBase64 => !hrefBase64 ? undefined : @@ -174,7 +174,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { (await Promise.all(imageInfos)).forEach(imageInfo => { if (imageInfo) { - imageInfo.doc[DocData].tags = (imageInfo.doc[DocData].tags as List) ?? new List(); + imageInfo.doc[DocData].tags_chat = (imageInfo.doc[DocData].tags_chat as List) ?? new List(); const labels = imageInfo.labels.split('\n'); labels.forEach(label => { @@ -184,8 +184,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { .replace(/^\d+\.\s*|-|f\*/, '') .replace(/^#/, '') .trim(); - imageInfo.doc[DocData][label] = true; - (imageInfo.doc[DocData].tags as List).push(label); + (imageInfo.doc[DocData].tags_chat as List).push(label); }); } }); @@ -200,8 +199,8 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { this.startLoading(); for (const doc of this._selectedImages) { - for (let index = 0; index < (doc[DocData].tags as List).length; index++) { - const label = (doc[DocData].tags as List)[index]; + for (let index = 0; index < (doc[DocData].tags_chat as List).length; index++) { + const label = (doc[DocData].tags_chat as List)[index]; const embedding = await gptGetEmbedding(label); doc[DocData][`tags_embedding_${index + 1}`] = new List(embedding); } @@ -214,7 +213,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { // For each image, loop through the labels, and calculate similarity. Associate it with the // most similar one. this._selectedImages.forEach(doc => { - const embedLists = numberRange((doc[DocData].tags as List).length).map(n => Array.from(NumListCast(doc[DocData][`tags_embedding_${n + 1}`]))); + const embedLists = numberRange((doc[DocData].tags_chat as List).length).map(n => Array.from(NumListCast(doc[DocData][`tags_embedding_${n + 1}`]))); const bestEmbedScore = (embedding: Opt) => Math.max(...embedLists.map((l, index) => (embedding && similarity(Array.from(embedding), l)!) || 0)); const {label: mostSimilarLabelCollect} = this._labelGroups.map(label => ({ label, similarityScore: bestEmbedScore(labelToEmbedding.get(label)) })) @@ -321,7 +320,7 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { await DocumentView.showDocument(doc, { willZoomCentered: true }); }}>
this._props.addDocTab(doc, OpenWhere.addRightKeyvalue)}> - {(doc[DocData].tags as List).map(label => { + {(doc[DocData].tags_chat as List).map(label => { return (
{label} -- cgit v1.2.3-70-g09d2 From e2a1db72c103b7ed878fe876c5fb9eacc7a8c893 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 27 Aug 2024 19:09:31 -0400 Subject: enabled any image Doc to be added to a face Doc --- src/client/views/TagsView.tsx | 1 + .../collectionFreeForm/FaceCollectionBox.tsx | 17 +++++++++-------- src/client/views/search/FaceRecognitionHandler.tsx | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 89025d668..0ac015b36 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -306,6 +306,7 @@ export class TagsView extends ObservableReactComponent { const chatTagsList = new Set(StrListCast(this._props.View.dataDoc.tags_chat)); const facesList = new Set( DocListCast(this._props.View.dataDoc[Doc.LayoutFieldKey(this._props.View.Document) + '_annotations']) + .concat(this._props.View.Document) .filter(d => d.face) .map(doc => StrCast(DocCast(doc.face)?.title)) ); diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index c62303dc0..717081666 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -95,17 +95,18 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { const faceDescriptorsAsFloat32Array = FaceRecognitionHandler.UniqueFaceDescriptors(this.Document).map(fd => new Float32Array(Array.from(fd))); const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors(FaceRecognitionHandler.UniqueFaceLabel(this.Document), faceDescriptorsAsFloat32Array); const faceMatcher = new FaceMatcher([labeledFaceDescriptor], 1); - const { faceAnno } = FaceRecognitionHandler.ImageDocFaceAnnos(imgDoc).reduce( - (prev, faceAnno) => { - const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(faceAnno.faceDescriptor as List))); - return match.distance < prev.dist ? { dist: match.distance, faceAnno } : prev; - }, - { dist: 1, faceAnno: undefined as Opt } - ); + const faceAnno = + FaceRecognitionHandler.ImageDocFaceAnnos(imgDoc).reduce( + (prev, faceAnno) => { + const match = faceMatcher.matchDescriptor(new Float32Array(Array.from(faceAnno.faceDescriptor as List))); + return match.distance < prev.dist ? { dist: match.distance, faceAnno } : prev; + }, + { dist: 1, faceAnno: undefined as Opt } + ).faceAnno ?? imgDoc; // assign the face in the image that's closest to the face collection's face if (faceAnno) { - FaceRecognitionHandler.UniqueFaceRemoveFaceImage(faceAnno, DocCast(faceAnno.face)); + faceAnno.face && FaceRecognitionHandler.UniqueFaceRemoveFaceImage(faceAnno, DocCast(faceAnno.face)); FaceRecognitionHandler.UniqueFaceAddFaceImage(faceAnno, this.Document); faceAnno.face = this.Document; } diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 4c10307e6..4f6f5d314 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -101,7 +101,7 @@ export class FaceRecognitionHandler { * @param faceDoc unique face Doc * @returns image Docs */ - public static UniqueFaceImages = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_annos).map(face => DocCast(face.annotationOn)); + public static UniqueFaceImages = (faceDoc: Doc) => DocListCast(faceDoc[DocData].face_annos).map(face => DocCast(face.annotationOn, face)); /** * Adds a face image to a unique face Doc, adds the unique face Doc to the images list of reognized faces, -- cgit v1.2.3-70-g09d2 From 9776e4584b61d3c67622d8ea1f2338a7dfbe857d Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 27 Aug 2024 21:57:43 -0400 Subject: fixed type --- src/client/views/pdf/Annotation.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/pdf/Annotation.tsx b/src/client/views/pdf/Annotation.tsx index 3bd42873c..1891cfd4c 100644 --- a/src/client/views/pdf/Annotation.tsx +++ b/src/client/views/pdf/Annotation.tsx @@ -13,6 +13,7 @@ import { FieldViewProps } from '../nodes/FieldView'; import { OpenWhere } from '../nodes/OpenWhere'; import { AnchorMenu } from './AnchorMenu'; import './Annotation.scss'; +import { Property } from 'csstype'; interface IRegionAnnotationProps { x: number; @@ -45,7 +46,7 @@ interface IAnnotationProps extends FieldViewProps { annoDoc: Doc; containerDataDoc: Doc; fieldKey: string; - pointerEvents?: () => Opt; + pointerEvents?: () => Opt; } @observer export class Annotation extends ObservableReactComponent { -- cgit v1.2.3-70-g09d2 From c36607691e0b7f5c04f3209a64958f5e51ddd785 Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 30 Aug 2024 00:06:05 -0400 Subject: fixed linking text anchors to dall-e images --- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 0920b1bd3..a37e73e27 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -268,7 +268,7 @@ export class GPTPopup extends ObservableReactComponent { * Transfers the image urls to actual image docs */ private transferToImage = (source: string) => { - const textAnchor = this.imgTargetDoc; + const textAnchor = this.textAnchor ?? this.imgTargetDoc; if (!textAnchor) return; const newDoc = Docs.Create.ImageDocument(source, { x: NumCast(textAnchor.x) + NumCast(textAnchor._width) + 10, -- cgit v1.2.3-70-g09d2 From b235e116167a06b6d36e2962dd3f610839f18974 Mon Sep 17 00:00:00 2001 From: bobzel Date: Sun, 1 Sep 2024 00:11:36 -0400 Subject: updated to latest Jimp. fixed lag dropping images from filesystem by using worker threads. --- package-lock.json | 8128 ++++---------------- package.json | 9 +- src/client/Network.ts | 2 +- src/client/util/request-image-size.ts | 9 +- .../collectionGrid/CollectionGridView.tsx | 17 +- src/server/ApiManagers/UploadManager.ts | 14 +- src/server/DashUploadUtils.ts | 94 +- 7 files changed, 1447 insertions(+), 6826 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 1e738fcb1..4c5a5d4d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,8 +26,8 @@ "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/multimonth": "^6.1.10", "@internationalized/date": "^3.5.0", - "@mui/icons-material": "^5.14.19", - "@mui/material": "^5.14.19", + "@mui/icons-material": "^6.0.1", + "@mui/material": "^6.0.1", "@octokit/core": "^6.0.1", "@react-google-maps/api": "^2.19.2", "@react-spring/web": "^9.7.3", @@ -50,10 +50,11 @@ "@types/reveal": "^4.2.0", "@types/supercluster": "^7.1.3", "@types/textfit": "^2.4.4", - "@types/web": "^0.0.157", + "@types/web": "^0.0.159", "@types/webpack-hot-middleware": "^2.25.9", "@webscopeio/react-textarea-autocomplete": "^4.9.2", "adm-zip": "^0.5.10", + "any-base": "^1.1.0", "archiver": "^7.0.1", "async": "^3.2.5", "axios": "^1.6.2", @@ -131,7 +132,7 @@ "image-size": "^1.0.2", "image-size-stream": "^1.1.0", "is-plain-obj": "^4.1.0", - "jimp": "^0.22.10", + "jimp": "^1.0.4", "jpeg-autorotate": "^9.0.0", "jquery": "^3.7.1", "js-datepicker": "^5.18.2", @@ -697,11 +698,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", - "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dependencies": { - "@babel/types": "^7.25.4", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -953,13 +954,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", - "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "peer": true, "dependencies": { "@babel/template": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" @@ -980,11 +981,11 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", - "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dependencies": { - "@babel/types": "^7.25.4" + "@babel/types": "^7.25.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -1137,11 +1138,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", + "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1151,11 +1152,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2248,9 +2249,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", - "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2259,9 +2260,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.25.0.tgz", - "integrity": "sha512-BOehWE7MgQ8W8Qn0CQnMtg2tHPHPulcS/5AVpFvs2KCK1ET+0WqZqPvnpRpFN81gYoFopdIEJX9Sgjw3ZBccPg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.25.6.tgz", + "integrity": "sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw==", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -2284,15 +2285,15 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", - "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.4", - "@babel/parser": "^7.25.4", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", "@babel/template": "^7.25.0", - "@babel/types": "^7.25.4", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2309,9 +2310,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", - "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dependencies": { "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", @@ -3114,399 +3115,306 @@ "node": ">=8" } }, - "node_modules/@jimp/bmp": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.12.tgz", - "integrity": "sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==", + "node_modules/@jimp/core": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.0.4.tgz", + "integrity": "sha512-K+wDZbpdqwO0+GtMVdTEDttFAWA1R70uebcO+TTVliD88Cae1UKFxJOMTbAGFI+PJqvpZWpZn+5S6N5jLbHVXA==", "dependencies": { - "@jimp/utils": "^0.22.12", - "bmp-js": "^0.1.0" + "@jimp/file-ops": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "await-to-js": "^3.0.0", + "exif-parser": "^0.1.12", + "file-type": "^16.0.0", + "mime": "3" + } + }, + "node_modules/@jimp/core/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/@jimp/core": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.12.tgz", - "integrity": "sha512-l0RR0dOPyzMKfjUW1uebzueFEDtCOj9fN6pyTYWWOM/VS4BciXQ1VVrJs8pO3kycGYZxncRKhCoygbNr8eEZQA==", + "node_modules/@jimp/diff": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.0.4.tgz", + "integrity": "sha512-AEsoPrZ4SiY/xFCVFwcTu3qN63gVyktL3NXHnQZoYOLcW9pvFVGsNxBa1iwk0OkK2FAR7VyuOsJtn0qmq6hUNA==", "dependencies": { - "@jimp/utils": "^0.22.12", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" + "@jimp/plugin-resize": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "pixelmatch": "^5.3.0" } }, - "node_modules/@jimp/custom": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.12.tgz", - "integrity": "sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q==", + "node_modules/@jimp/file-ops": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.0.4.tgz", + "integrity": "sha512-Epbp4brdZY6cv4jFmY8TUF6RtpIWnVFAGPr6tOTF/bI8RsXgucNbpjFQZU5M+HOAyxLED6p7o1STHFn6nGMVnA==" + }, + "node_modules/@jimp/js-bmp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.0.4.tgz", + "integrity": "sha512-p2l0xBfo+fQ/NBG93DKBC06e5xFAHRP0B4KdUINSoAXULkrBfutKd9KPBRQMAjVA8e3anLEiv1P91wYSScEvLA==", "dependencies": { - "@jimp/core": "^0.22.12" + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "bmp-ts": "^1.0.9" } }, - "node_modules/@jimp/gif": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.12.tgz", - "integrity": "sha512-y6BFTJgch9mbor2H234VSjd9iwAhaNf/t3US5qpYIs0TSbAvM02Fbc28IaDETj9+4YB4676sz4RcN/zwhfu1pg==", + "node_modules/@jimp/js-gif": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.0.4.tgz", + "integrity": "sha512-P/BH5JsR+WwkvpD+OPg+M4As+Cnzigin7QcTjda8A5nQyuTTL86qdrl5a5DbxBTXRnajCwIhb3oAQmbuD9ec/A==", "dependencies": { - "@jimp/utils": "^0.22.12", + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", "gifwrap": "^0.10.1", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "omggif": "^1.0.10" } }, - "node_modules/@jimp/jpeg": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.12.tgz", - "integrity": "sha512-Rq26XC/uQWaQKyb/5lksCTCxXhtY01NJeBN+dQv5yNYedN0i7iYu+fXEoRsfaJ8xZzjoANH8sns7rVP4GE7d/Q==", + "node_modules/@jimp/js-jpeg": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.0.4.tgz", + "integrity": "sha512-BgsYW+cujySH13+8Ld5WLIvyv4VatGb1BlqP7zjS84vriX2HcgGNoyYHjnaLn1Qd5yxfU8Atewqxo0DipLlHmQ==", "dependencies": { - "@jimp/utils": "^0.22.12", + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", "jpeg-js": "^0.4.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/js-png": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.0.4.tgz", + "integrity": "sha512-B8AeNGbPFd/wZzIKy9qZXvJ44yDDSQSDsU0OrCiNZCP70S5raWa93LehOYqEdr+brwO7+FiwI7nbCAUB/zgcPQ==", + "dependencies": { + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", + "pngjs": "^7.0.0" + } + }, + "node_modules/@jimp/js-tiff": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.0.4.tgz", + "integrity": "sha512-K/A/Ej6C0bgUP7nD0vH3hc2ftfib7oAdRPN1HLpyyJJc4eatfLcoY1BlDgLiOwEfv8LEzhRB8+0uMwM6ZrvjcQ==", + "dependencies": { + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", + "utif2": "^4.1.0" } }, "node_modules/@jimp/plugin-blit": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.12.tgz", - "integrity": "sha512-xslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.0.4.tgz", + "integrity": "sha512-u3HIa6VmKShNJ3/RPIJizecEFgRPwLVo0vyjtE/hx7L2TfbNxaWShUBUqEVL192Luk7D9SIBl998ujn37lO4DQ==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-blur": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.12.tgz", - "integrity": "sha512-S0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.0.4.tgz", + "integrity": "sha512-hgNPUvlgyoRGIYFZ5u2Ptd2f3b1m2+KeDJ1RXnWshz01oc/vr0UyRZRzmhKn0S8Ic+3UYa3mAsIBp7GLsXyK5g==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4" } }, "node_modules/@jimp/plugin-circle": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.12.tgz", - "integrity": "sha512-SWVXx1yiuj5jZtMijqUfvVOJBwOifFn0918ou4ftoHgegc5aHWW5dZbYPjvC9fLpvz7oSlptNl2Sxr1zwofjTg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.0.4.tgz", + "integrity": "sha512-C4lBEnCYBahq4qefYyAH/mkIsWzytsERcwR17V6x4+UxmD0vW1aEMAKrPvEEsTM7O84zUgCrYuh7+Uuvf+00lw==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-color": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.12.tgz", - "integrity": "sha512-xImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.0.4.tgz", + "integrity": "sha512-og/KO6pRncUt2ovQK+J/UseLerfjmv4IBS4Byb5KrQ1O7P5l+wvb537EMuixHOzW9G7CI7OyuzjOSEvW1LOJOQ==", "dependencies": { - "@jimp/utils": "^0.22.12", - "tinycolor2": "^1.6.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "tinycolor2": "^1.6.0", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-contain": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.12.tgz", - "integrity": "sha512-Eo3DmfixJw3N79lWk8q/0SDYbqmKt1xSTJ69yy8XLYQj9svoBbyRpSnHR+n9hOw5pKXytHwUW6nU4u1wegHNoQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.0.4.tgz", + "integrity": "sha512-5cjPOIW6W/tiVG1CU64rSsR5MJ/x2tGk6Z1erJqI+7oQDtrP9iSI1HGdhrenIegdtgsxQ8xcr3DoaEvmOkwwdA==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/plugin-blit": "1.0.4", + "@jimp/plugin-resize": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-cover": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.12.tgz", - "integrity": "sha512-z0w/1xH/v/knZkpTNx+E8a7fnasQ2wHG5ze6y5oL2dhH1UufNua8gLQXlv8/W56+4nJ1brhSd233HBJCo01BXA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.0.4.tgz", + "integrity": "sha512-9gYQsSxJ1wvzurS9d0BBVFLb6Y6soc02NL5YA/kdaydfmpUn2M/DbIuVR+G5oaWUvL0kriTyCVLw7Pk26rqxpA==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/plugin-crop": "1.0.4", + "@jimp/plugin-resize": "1.0.4", + "@jimp/types": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-crop": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.12.tgz", - "integrity": "sha512-FNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+LJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.0.4.tgz", + "integrity": "sha512-FAxSqeeFNvmcEiQ6aHmxGZCtfj+atQAg5Xs8AJMOpVYe36mVLXlaQgl+TDGZl0CroURtVfigtiEVLizAtmF4pQ==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-displace": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.12.tgz", - "integrity": "sha512-qpRM8JRicxfK6aPPqKZA6+GzBwUIitiHaZw0QrJ64Ygd3+AsTc7BXr+37k2x7QcyCvmKXY4haUrSIsBug4S3CA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.0.4.tgz", + "integrity": "sha512-MXy2E+iwpQV4Iug3+9rYhUCFjJjw/aXn9ShwZSIUKlNuF2NWlZeI2QwbYR0sEFHHbovOMIVuA2FLzgmGM66XfQ==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-dither": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.12.tgz", - "integrity": "sha512-jYgGdSdSKl1UUEanX8A85v4+QUm+PE8vHFwlamaKk89s+PXQe7eVE3eNeSZX4inCq63EHL7cX580dMqkoC3ZLw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.0.4.tgz", + "integrity": "sha512-MdSmPE1l3sxtGoSVV7WLx5cMLk1KT3x+WXjivL19OBBPTLVbgPYdcOe7ikLM0ZoLbsw6PpvbGNfPY1LxDU7JzA==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4" } }, "node_modules/@jimp/plugin-fisheye": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.12.tgz", - "integrity": "sha512-LGuUTsFg+fOp6KBKrmLkX4LfyCy8IIsROwoUvsUPKzutSqMJnsm3JGDW2eOmWIS/jJpPaeaishjlxvczjgII+Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.0.4.tgz", + "integrity": "sha512-iSeiU1WzhZBi1qfLWUiMNG7Ft1AP6ZFvfR8fpr9X+ipJ+uvofBQ2SzHUxmhxcI/PGcZTdXUkUxT20LiM9h3ksQ==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-flip": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.12.tgz", - "integrity": "sha512-m251Rop7GN8W0Yo/rF9LWk6kNclngyjIJs/VXHToGQ6EGveOSTSQaX2Isi9f9lCDLxt+inBIb7nlaLLxnvHX8Q==", - "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.12.tgz", - "integrity": "sha512-sBfbzoOmJ6FczfG2PquiK84NtVGeScw97JsCC3rpQv1PHVWyW+uqWFF53+n3c8Y0P2HWlUjflEla2h/vWShvhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.0.4.tgz", + "integrity": "sha512-0YoLAOtvAonHgOST7jyt36Dv0262FQZGbAvevI8TYbcU6BPPSuONBQRw04iSmakk0XdeJ5TfP+I/Z3qZSn48FQ==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4", + "zod": "^3.22.4" } }, - "node_modules/@jimp/plugin-invert": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.12.tgz", - "integrity": "sha512-N+6rwxdB+7OCR6PYijaA/iizXXodpxOGvT/smd/lxeXsZ/empHmFFFJ/FaXcYh19Tm04dGDaXcNF/dN5nm6+xQ==", + "node_modules/@jimp/plugin-hash": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.0.4.tgz", + "integrity": "sha512-FgL3jX5dIDtVJ5WUVzAcSy740Jk2p/6rB0Vg40TkETfEYnhHfltRGkpvv5a1kxD0icte23eICNU1lL5hw27lJw==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/js-bmp": "1.0.4", + "@jimp/js-jpeg": "1.0.4", + "@jimp/js-png": "1.0.4", + "@jimp/js-tiff": "1.0.4", + "@jimp/plugin-color": "1.0.4", + "@jimp/plugin-resize": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "@types/any-base": "^1.1.3" } }, "node_modules/@jimp/plugin-mask": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.12.tgz", - "integrity": "sha512-4AWZg+DomtpUA099jRV8IEZUfn1wLv6+nem4NRJC7L/82vxzLCgXKTxvNvBcNmJjT9yS1LAAmiJGdWKXG63/NA==", - "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.12.tgz", - "integrity": "sha512-0So0rexQivnWgnhacX4cfkM2223YdExnJTTy6d06WbkfZk5alHUx8MM3yEzwoCN0ErO7oyqEWRnEkGC+As1FtA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.0.4.tgz", + "integrity": "sha512-E9Z3aitK1coWpCXy0qycBPnfcxTbg3azygdMOZdj9Nbjnf+rh0Jz+JtG4HKJjCw9SLOgvCNjKY71JkubdyoRhg==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/types": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-print": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.12.tgz", - "integrity": "sha512-c7TnhHlxm87DJeSnwr/XOLjJU/whoiKYY7r21SbuJ5nuH+7a78EW1teOaj5gEr2wYEd7QtkFqGlmyGXY/YclyQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.0.4.tgz", + "integrity": "sha512-eTTTfZe7GgIZifLrQgt7EsWK/JKLm2Lm1Upro3wVKHJ8gfBtq5Fu+GxCeER+1bA7a5b9IGZSO3diRNqOpXs6bw==", "dependencies": { - "@jimp/utils": "^0.22.12", - "load-bmfont": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/js-jpeg": "1.0.4", + "@jimp/js-png": "1.0.4", + "@jimp/plugin-blit": "1.0.4", + "@jimp/types": "1.0.4", + "parse-bmfont-ascii": "^1.0.6", + "parse-bmfont-binary": "^1.0.6", + "parse-bmfont-xml": "^1.1.6", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-resize": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.12.tgz", - "integrity": "sha512-3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX//i/sXg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.0.4.tgz", + "integrity": "sha512-iOOMCe3rSBKB6AhDBKJFZIjnqL1j6IB/SxdQsW8H5oCevuz4OPROxPBIdNDXxeyGBwqqppXbcnsL+sX7NUI7KQ==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/types": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-rotate": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.12.tgz", - "integrity": "sha512-9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA==", - "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-scale": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.12.tgz", - "integrity": "sha512-dghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw==", - "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.12.tgz", - "integrity": "sha512-FX8mTJuCt7/3zXVoeD/qHlm4YH2bVqBuWQHXSuBK054e7wFRnRnbSLPUqAwSeYP3lWqpuQzJtgiiBxV3+WWwTg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.0.4.tgz", + "integrity": "sha512-QjY2DYFZj+m+I6F8aWDGAT/YHfpkP8AF9/qW4zi3Lq3WpBAeOqf9cvcHBjFv3hN72JQlneC5dRWE1h/QfygRxQ==", "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/plugin-crop": "1.0.4", + "@jimp/plugin-resize": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/plugin-threshold": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.12.tgz", - "integrity": "sha512-4x5GrQr1a/9L0paBC/MZZJjjgjxLYrqSmWd+e+QfAEPvmRxdRoQ5uKEuNgXnm9/weHQBTnQBQsOY2iFja+XGAw==", - "dependencies": { - "@jimp/utils": "^0.22.12" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.12.tgz", - "integrity": "sha512-yBJ8vQrDkBbTgQZLty9k4+KtUQdRjsIDJSPjuI21YdVeqZxYywifHl4/XWILoTZsjTUASQcGoH0TuC0N7xm3ww==", - "dependencies": { - "@jimp/plugin-blit": "^0.22.12", - "@jimp/plugin-blur": "^0.22.12", - "@jimp/plugin-circle": "^0.22.12", - "@jimp/plugin-color": "^0.22.12", - "@jimp/plugin-contain": "^0.22.12", - "@jimp/plugin-cover": "^0.22.12", - "@jimp/plugin-crop": "^0.22.12", - "@jimp/plugin-displace": "^0.22.12", - "@jimp/plugin-dither": "^0.22.12", - "@jimp/plugin-fisheye": "^0.22.12", - "@jimp/plugin-flip": "^0.22.12", - "@jimp/plugin-gaussian": "^0.22.12", - "@jimp/plugin-invert": "^0.22.12", - "@jimp/plugin-mask": "^0.22.12", - "@jimp/plugin-normalize": "^0.22.12", - "@jimp/plugin-print": "^0.22.12", - "@jimp/plugin-resize": "^0.22.12", - "@jimp/plugin-rotate": "^0.22.12", - "@jimp/plugin-scale": "^0.22.12", - "@jimp/plugin-shadow": "^0.22.12", - "@jimp/plugin-threshold": "^0.22.12", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/png": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.12.tgz", - "integrity": "sha512-Mrp6dr3UTn+aLK8ty/dSKELz+Otdz1v4aAXzV5q53UDD2rbB5joKVJ/ChY310B+eRzNxIovbUF1KVrUsYdE8Hg==", - "dependencies": { - "@jimp/utils": "^0.22.12", - "pngjs": "^6.0.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/tiff": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.12.tgz", - "integrity": "sha512-E1LtMh4RyJsoCAfAkBRVSYyZDTtLq9p9LUiiYP0vPtXyxX4BiYBUYihTLSBlCQg5nF2e4OpQg7SPrLdJ66u7jg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.0.4.tgz", + "integrity": "sha512-wF//3Kg5nOcqBIx7p+fI/8x5T4FDzAXjTL+B8acNJIYNRJR0eceErgFvSl+lAA8xKMyVHbXtrzbUK7+p1Cdptw==", "dependencies": { - "utif2": "^4.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "@jimp/core": "1.0.4", + "@jimp/plugin-color": "1.0.4", + "@jimp/plugin-hash": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4", + "zod": "^3.22.4" } }, "node_modules/@jimp/types": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.12.tgz", - "integrity": "sha512-wwKYzRdElE1MBXFREvCto5s699izFHNVvALUv79GXNbsOVqlwlOxlWJ8DuyOGIXoLP4JW/m30YyuTtfUJgMRMA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.0.4.tgz", + "integrity": "sha512-sKM5R5kEm2VyfU68vYfEDoDtlmHMZ+pJTvYxa62SA5WEFKeO2ATBsybk5a8bJV1LDL1FXwKgXR6wsO4kx4RfQw==", "dependencies": { - "@jimp/bmp": "^0.22.12", - "@jimp/gif": "^0.22.12", - "@jimp/jpeg": "^0.22.12", - "@jimp/png": "^0.22.12", - "@jimp/tiff": "^0.22.12", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "zod": "^3.22.4" } }, "node_modules/@jimp/utils": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.12.tgz", - "integrity": "sha512-yJ5cWUknGnilBq97ZXOyOS0HhsHOyAyjHwYfHxGbSyMTohgQI6sVyE8KPgDwH8HHW/nMKXk8TrSwAE71zt716Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.0.4.tgz", + "integrity": "sha512-aqsJKDleM54v0s9rW+swc0SJHb/O4sy2I56ng+9UC7uhF+P6JRjvMVyqEprQ1fKBaCN/Ff0Bu0YUzEXwUtpH/g==", "dependencies": { - "regenerator-runtime": "^0.13.3" + "@jimp/types": "1.0.4", + "tinycolor2": "^1.6.0" } }, - "node_modules/@jimp/utils/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -3799,6 +3707,45 @@ "langium": "3.0.0" } }, + "node_modules/@module-federation/runtime": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.5.1.tgz", + "integrity": "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==", + "optional": true, + "peer": true, + "dependencies": { + "@module-federation/sdk": "0.5.1" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz", + "integrity": "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==", + "optional": true, + "peer": true, + "dependencies": { + "@module-federation/runtime": "0.5.1", + "@module-federation/webpack-bundler-runtime": "0.5.1" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.5.1.tgz", + "integrity": "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==", + "optional": true, + "peer": true + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz", + "integrity": "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==", + "optional": true, + "peer": true, + "dependencies": { + "@module-federation/runtime": "0.5.1", + "@module-federation/sdk": "0.5.1" + } + }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz", @@ -3808,32 +3755,32 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", - "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.0.1.tgz", + "integrity": "sha512-TmKkCTwgtwvlFTF1tZzG4lYbi7v6NGweEJwFBZoIWZrkF1OLa0xu4umifmIyd+bVIScsEj//E2AD6bOJbPMOOQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.7.tgz", - "integrity": "sha512-UrGwDJCXEszbDI7yV047BYU5A28eGJ79keTCP4cc74WyncuVrnurlmIRxaHL8YK+LI1Kzq+/JM52IAkNnv4u+Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.0.1.tgz", + "integrity": "sha512-CsgaF65jA3H1YzpDg6H2nFH/UHueVlmpEtPim7xF9VbjYnmnblG3aX0GflBahH96Pg0schrFWyRySlgbVAh5Kw==", "dependencies": { - "@babel/runtime": "^7.23.9" + "@babel/runtime": "^7.25.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^5.0.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@mui/material": "^6.0.1", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -3842,25 +3789,25 @@ } }, "node_modules/@mui/material": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", - "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.16.7", - "@mui/system": "^5.16.7", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.6", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.0.1.tgz", + "integrity": "sha512-gOJS0RKYs9lRACaTluXPNopxFpIBhWVmhf09lHpqpPlR6bujXhuiTE2Q8puensdz3Qm2JGzl1VjccYHieV1g8A==", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@mui/core-downloads-tracker": "^6.0.1", + "@mui/system": "^6.0.1", + "@mui/types": "^7.2.16", + "@mui/utils": "^6.0.1", "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1", "react-is": "^18.3.1", "react-transition-group": "^4.4.5" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3869,9 +3816,10 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "@mui/material-pigment-css": "^6.0.1", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -3880,30 +3828,33 @@ "@emotion/styled": { "optional": true }, + "@mui/material-pigment-css": { + "optional": true + }, "@types/react": { "optional": true } } }, "node_modules/@mui/private-theming": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", - "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.0.1.tgz", + "integrity": "sha512-jQCJml1OwIrhqN5tTk5Lpqx2RZKQnShE8lMlvAkuO7Ft+xaHkP8J3iHpEk3/Pzue34DfBQtK00jcaplgM47mBA==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.6", + "@babel/runtime": "^7.25.0", + "@mui/utils": "^6.0.1", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -3912,17 +3863,17 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", - "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.0.1.tgz", + "integrity": "sha512-7ZOnUhIak2vosDgMlBE/oLrsvvF3O8QKmTFpP6bhZkHjPu4dv0DbF1vC7gzgkOqiMaT0/NgRQCFW9zh38pIvsg==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", + "@babel/runtime": "^7.25.0", + "@emotion/cache": "^11.13.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3931,7 +3882,7 @@ "peerDependencies": { "@emotion/react": "^11.4.1", "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -3943,21 +3894,21 @@ } }, "node_modules/@mui/system": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", - "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.6", - "@mui/styled-engine": "^5.16.6", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.6", - "clsx": "^2.1.0", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.0.1.tgz", + "integrity": "sha512-RdWyCMi+GkAekOnpMKhy51lyzid4F6Vj96vekp3AExkFY21JWg2+KVBqcAgJOROJ3RiaeDJf98n0yrixlCvuEw==", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@mui/private-theming": "^6.0.1", + "@mui/styled-engine": "^6.0.1", + "@mui/types": "^7.2.16", + "@mui/utils": "^6.0.1", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3966,8 +3917,8 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -3982,11 +3933,11 @@ } }, "node_modules/@mui/types": { - "version": "7.2.15", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.15.tgz", - "integrity": "sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q==", + "version": "7.2.16", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.16.tgz", + "integrity": "sha512-qI8TV3M7ShITEEc8Ih15A2vLzZGLhD+/UPNwck/hcls2gwg7dyRjNGXcQYHKLB5Q7PuTRfrTkAoPa2VV1s67Ag==", "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -3995,27 +3946,27 @@ } }, "node_modules/@mui/utils": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", - "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.0.1.tgz", + "integrity": "sha512-YmQYb2tY5nJactHltTrKA15TZfbd1R003a2xYHxUuycTv9n83rsIwHkypOxM4x7+c+Pc8xfCuE9EfLT3B3n40Q==", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/types": "^7.2.15", + "@babel/runtime": "^7.25.0", + "@mui/types": "^7.2.16", "@types/prop-types": "^15.7.12", "clsx": "^2.1.1", "prop-types": "^15.8.1", "react-is": "^18.3.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -7110,6 +7061,175 @@ "unicode-trie": "^0.3.0" } }, + "node_modules/@rspack/binding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.0.tgz", + "integrity": "sha512-eLyqSEM1h/exJYn98k+9MRktP8AYDB13x5oVn8hoxVucuhk0TubFqQSX8h9SQcZp1O3j/Z8eWWwOaNPe3JU40Q==", + "optional": true, + "peer": true, + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.0.0", + "@rspack/binding-darwin-x64": "1.0.0", + "@rspack/binding-linux-arm64-gnu": "1.0.0", + "@rspack/binding-linux-arm64-musl": "1.0.0", + "@rspack/binding-linux-x64-gnu": "1.0.0", + "@rspack/binding-linux-x64-musl": "1.0.0", + "@rspack/binding-win32-arm64-msvc": "1.0.0", + "@rspack/binding-win32-ia32-msvc": "1.0.0", + "@rspack/binding-win32-x64-msvc": "1.0.0" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz", + "integrity": "sha512-ZHQk9YK+swlTG48kJTgzFUW9T26KjhLXRok5la7t2AMoiuHyhGHHgC5iQfPJLZ62XzcJ/rfqs2rwakl97151jQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz", + "integrity": "sha512-qhTXm9wUhv2lBjsqqfCu59RchH1/2jursdPAmTqGc7zMReZdZvtJs2Ri6Ma1M48BLLu+7fS4fbL8Rw1g78TOOQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz", + "integrity": "sha512-yKnlsWgvydJRxDBGGKC+cyDeoSzIvOzuVqCloy5oAFAGOMXMY6bznxrkE6/olGZncdeLEpnJzZmXSuF1dYc8ow==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz", + "integrity": "sha512-dKFmlqlF4FELT/AX02hSwX8aRawjH5zAliQzYnvgrqcEyCKE60vKacGJQ3ZeRyru6dh5MlbUNW4H1+TDT+cDVA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz", + "integrity": "sha512-fRk9i8aE4FiwW7+LkNyw+5vfFzJ8BZ2seAL9V5U2iwYwYibzFJsukg3h3Uh+IsGm30/7+ZRENtGwybQiMruL4g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz", + "integrity": "sha512-qcTJC8o3KvLwsnrJJcuBjfzSrjEbACMiCB4RtbFNecXDtI+Nputx1CO1SlUrINC25/44ILketf0/hsdBQHk60g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz", + "integrity": "sha512-gqtakP0Yl2aj+Q/Giwgt31hz8eOZpo2s+sJlkMJGVdIF4dejB31a8vbj/VNGeSN1tDRiLI4cyqa5eQU//t26aQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0.tgz", + "integrity": "sha512-nLfGu5DjdzwawzZ7zK69vZX5aL1Gt9+Ovfz4RlngDq/D5ZzqCnNWw93cqKADgFRWS4qK9vOD9RXNNnkyWB2SEw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz", + "integrity": "sha512-H9PqjgtZMw5aP+eXdFo7bgSP/Ycwn3oW81uI9qFqOOQ90W+o3T9ItghHBf2/ksc5GHibd208EwOBNxbKwjZDSQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rspack/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.0.tgz", + "integrity": "sha512-F4RA9uOLLvD1oTKa96Gcly+Sro1qaqPNENadFyiPwepa7DrwexQa/ym6CQKbvKMOYGKlVSFDPUmgFAirz35ETg==", + "optional": true, + "peer": true, + "dependencies": { + "@module-federation/runtime-tools": "0.5.1", + "@rspack/binding": "1.0.0", + "@rspack/lite-tapable": "1.0.0", + "caniuse-lite": "^1.0.30001616" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.0.tgz", + "integrity": "sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", @@ -8827,6 +8947,11 @@ "integrity": "sha512-fpdH+ZtlO0kqjTOqRaBdsEmvpRNOayI8k4EVkEtitL5l6wducDOXk0rgQgfZqWf/ZX9DzXrHf257S5i9xTcISQ==", "dev": true }, + "node_modules/@types/any-base": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/any-base/-/any-base-1.1.3.tgz", + "integrity": "sha512-B7RTBD7jVYxm754XDdw6UozY3ZyyBv4iF4QQSjCzeLV4avDy8JBwCuI5SN4mz27ENI6K1NtKZwQ7zcqgH2h2Mw==" + }, "node_modules/@types/archiver": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.2.tgz", @@ -8893,9 +9018,9 @@ "dev": true }, "node_modules/@types/chai": { - "version": "4.3.18", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.18.tgz", - "integrity": "sha512-2UfJzigyNa8kYTKn7o4hNMPphkxtu4WTJyobK3m4FBpyj7EK5xgtPcOtxLm7Dznk/Qxr0QXn+gQbkg7mCZKdfg==", + "version": "4.3.19", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.19.tgz", + "integrity": "sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==", "dev": true }, "node_modules/@types/color": { @@ -9309,9 +9434,9 @@ "integrity": "sha512-IGKtSn0Lonfx3HdK6KMcfd5GUc1xdeLtjW1n7ZSA5Tmn1n2gj878q6IC0s4MbF9KtBpXIRqjRQxBzi2kF4WvGw==" }, "node_modules/@types/fluent-ffmpeg": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.25.tgz", - "integrity": "sha512-a9/Jtv/RVaCG4lUwWIcuClWE5eXJFoFS/oHOecOv/RS8n+lQdJzcJVmDlxA8Xbk4B82YpO88Dijcoljb6sYTcA==", + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.26.tgz", + "integrity": "sha512-0JVF3wdQG+pN0ImwWD0bNgJiKF2OHg/7CDBHw5UIbRTvlnkgGHK6V5doE54ltvhud4o31/dEiHm23CAlxFiUQg==", "dependencies": { "@types/node": "*" } @@ -9481,6 +9606,14 @@ "@types/geojson": "*" } }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -9505,9 +9638,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "22.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", - "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz", + "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==", "dependencies": { "undici-types": "~6.19.2" } @@ -9628,8 +9761,7 @@ "node_modules/@types/qs": { "version": "6.9.15", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "node_modules/@types/range-parser": { "version": "1.2.7", @@ -9647,9 +9779,9 @@ } }, "node_modules/@types/react": { - "version": "18.3.4", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", - "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", + "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -9890,9 +10022,9 @@ "dev": true }, "node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, "node_modules/@types/uuid": { "version": "10.0.0", @@ -9907,9 +10039,9 @@ "dev": true }, "node_modules/@types/web": { - "version": "0.0.157", - "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.157.tgz", - "integrity": "sha512-erqzRlWBxaV7qI0g5rIkHRRxQ3kKmqqhokqgnSy3UEQYIl+5qNCU7DwdPaOke3ZHRXmbrjpGgSc4bjM4ItSDnw==" + "version": "0.0.159", + "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.159.tgz", + "integrity": "sha512-BHPaU+yHqHOrua8iFksPmgLCXEt1LE/2sPB+MPTRuxDFm4z6gBgmDiXUCGleyHiOLT6R+fklgR99hq/iFGVO1w==" }, "node_modules/@types/webgl-ext": { "version": "0.0.30", @@ -10538,9 +10670,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", - "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "engines": { "node": ">=12.0" } @@ -11036,6 +11168,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/await-to-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", + "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -11045,14 +11185,14 @@ } }, "node_modules/aws4": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz", - "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==" }, "node_modules/axios": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", - "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -11339,10 +11479,10 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" + "node_modules/bmp-ts": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", + "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==" }, "node_modules/bn.js": { "version": "4.12.0", @@ -11467,6 +11607,116 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", "peer": true }, + "node_modules/browndash-components/node_modules/@mui/core-downloads-tracker": { + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", + "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/browndash-components/node_modules/@mui/material": { + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", + "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/core-downloads-tracker": "^5.16.7", + "@mui/system": "^5.16.7", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.3.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/browndash-components/node_modules/@mui/private-theming": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.16.6", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/browndash-components/node_modules/@mui/styled-engine": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, "node_modules/browndash-components/node_modules/@mui/styled-engine-sc": { "version": "5.14.12", "resolved": "https://registry.npmjs.org/@mui/styled-engine-sc/-/styled-engine-sc-5.14.12.tgz", @@ -11493,6 +11743,74 @@ } } }, + "node_modules/browndash-components/node_modules/@mui/system": { + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", + "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/browndash-components/node_modules/@mui/utils": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/browndash-components/node_modules/npm": { "version": "9.9.3", "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.3.tgz", @@ -14610,9 +14928,9 @@ } }, "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -14629,7 +14947,7 @@ ], "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, "node_modules/buffer-crc32": { @@ -14640,14 +14958,6 @@ "node": ">=8.0.0" } }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -14802,9 +15112,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001653", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", - "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", + "version": "1.0.30001655", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", + "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", "funding": [ { "type": "opencollective", @@ -14848,14 +15158,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/centra": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", - "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", - "dependencies": { - "follow-redirects": "^1.15.6" - } - }, "node_modules/chai": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", @@ -16995,11 +17297,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -17424,9 +17721,9 @@ "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -19252,15 +19549,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, "node_modules/global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -19654,11 +19942,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-from-parse5/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/hast-util-is-element": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", @@ -19707,11 +19990,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-raw/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/hast-util-to-jsx-runtime": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", @@ -19738,11 +20016,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/hast-util-to-parse5": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", @@ -19776,11 +20049,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-text/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -21056,11 +21324,6 @@ "node": ">=8" } }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -21414,15 +21677,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -21581,21 +21835,38 @@ } }, "node_modules/jimp": { - "version": "0.22.12", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.12.tgz", - "integrity": "sha512-R5jZaYDnfkxKJy1dwLpj/7cvyjxiclxU3F4TrI/J4j2rS0niq6YDUMoPn5hs8GDpO+OZGo7Ky057CRtWesyhfg==", - "dependencies": { - "@jimp/custom": "^0.22.12", - "@jimp/plugins": "^0.22.12", - "@jimp/types": "^0.22.12", - "regenerator-runtime": "^0.13.3" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.0.4.tgz", + "integrity": "sha512-J1zLB9LCEMznSoh277vJuiIzTxlurJxrC1Wv9aRKtbLtRZEwxEU5iHmN300Hzc62BUCyGziVHx6g7kfTp84j0A==", + "dependencies": { + "@jimp/core": "1.0.4", + "@jimp/diff": "1.0.4", + "@jimp/js-bmp": "1.0.4", + "@jimp/js-gif": "1.0.4", + "@jimp/js-jpeg": "1.0.4", + "@jimp/js-png": "1.0.4", + "@jimp/js-tiff": "1.0.4", + "@jimp/plugin-blit": "1.0.4", + "@jimp/plugin-blur": "1.0.4", + "@jimp/plugin-circle": "1.0.4", + "@jimp/plugin-color": "1.0.4", + "@jimp/plugin-contain": "1.0.4", + "@jimp/plugin-cover": "1.0.4", + "@jimp/plugin-crop": "1.0.4", + "@jimp/plugin-displace": "1.0.4", + "@jimp/plugin-dither": "1.0.4", + "@jimp/plugin-fisheye": "1.0.4", + "@jimp/plugin-flip": "1.0.4", + "@jimp/plugin-hash": "1.0.4", + "@jimp/plugin-mask": "1.0.4", + "@jimp/plugin-print": "1.0.4", + "@jimp/plugin-resize": "1.0.4", + "@jimp/plugin-rotate": "1.0.4", + "@jimp/plugin-threshold": "1.0.4", + "@jimp/types": "1.0.4", + "@jimp/utils": "1.0.4" } }, - "node_modules/jimp/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, "node_modules/jpeg-autorotate": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/jpeg-autorotate/-/jpeg-autorotate-9.0.0.tgz", @@ -22176,21 +22447,6 @@ "uc.micro": "^2.0.0" } }, - "node_modules/load-bmfont": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", - "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^3.7.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -22656,14 +22912,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-find-and-replace/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -22675,6 +22923,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", @@ -22709,4523 +22980,136 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-footnote/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-footnote/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-strikethrough/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-gfm-table/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-table/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-table/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm-task-list-item/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-gfm/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-gfm/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-gfm/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", - "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "longest-streak": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.1.0", - "unist-util-remove-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-math/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-math/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-math/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-math/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-math/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-math/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-math/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", - "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-expression/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-expression/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", - "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^5.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-jsx/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-chunked": { + "node_modules/mdast-util-gfm-footnote": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-classify-character": { + "node_modules/mdast-util-gfm-strikethrough": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-combine-extensions": { + "node_modules/mdast-util-gfm-table": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-decode-string": { + "node_modules/mdast-util-gfm-task-list-item": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-resolve-all": { + "node_modules/mdast-util-mdx-expression": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", "dependencies": { - "micromark-util-types": "^2.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", + "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-subtokenize": { + "node_modules/mdast-util-mdxjs-esm": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-mdxjs-esm/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", @@ -27245,14 +23129,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-phrasing/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/mdast-util-to-hast": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", @@ -27271,99 +23147,7 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + } }, "node_modules/mdast-util-to-markdown": { "version": "2.1.0", @@ -27384,20 +23168,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { + "node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", @@ -27409,94 +23180,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/mdast-util-to-markdown/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", @@ -27612,78 +23295,10 @@ "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" }, - "node_modules/micromark-extension-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^2.0.0", - "micromark-extension-gfm-footnote": "^2.0.0", - "micromark-extension-gfm-strikethrough": "^2.0.0", - "micromark-extension-gfm-table": "^2.0.0", - "micromark-extension-gfm-tagfilter": "^2.0.0", - "micromark-extension-gfm-task-list-item": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", "funding": [ { "type": "GitHub Sponsors", @@ -27695,61 +23310,26 @@ } ], "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-core-commonmark": { + "node_modules/micromark-core-commonmark": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", @@ -27782,149 +23362,142 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", "dependencies": { "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", "dependencies": { "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", "dependencies": { - "micromark-util-character": "^2.0.0", + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", "dependencies": { + "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-whitespace": { + "node_modules/micromark-extension-gfm-tagfilter": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "node_modules/micromark-extension-gfm-task-list-item": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-classify-character": { + "node_modules/micromark-factory-destination": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", "funding": [ { "type": "GitHub Sponsors", @@ -27941,40 +23514,10 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-normalize-identifier": { + "node_modules/micromark-factory-label": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", "funding": [ { "type": "GitHub Sponsors", @@ -27986,13 +23529,16 @@ } ], "dependencies": { - "micromark-util-symbol": "^2.0.0" + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-resolve-all": { + "node_modules/micromark-factory-space": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "funding": [ { "type": "GitHub Sponsors", @@ -28004,13 +23550,14 @@ } ], "dependencies": { + "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-sanitize-uri": { + "node_modules/micromark-factory-title": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", "funding": [ { "type": "GitHub Sponsors", @@ -28022,51 +23569,16 @@ } ], "dependencies": { + "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-types": { + "node_modules/micromark-factory-whitespace": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", "funding": [ { "type": "GitHub Sponsors", @@ -28076,26 +23588,15 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + ], "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-character": { + "node_modules/micromark-util-character": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", @@ -28114,7 +23615,7 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-chunked": { + "node_modules/micromark-util-chunked": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", @@ -28132,7 +23633,7 @@ "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-classify-character": { + "node_modules/micromark-util-classify-character": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", @@ -28152,74 +23653,10 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-resolve-all": { + "node_modules/micromark-util-combine-extensions": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", - "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", "funding": [ { "type": "GitHub Sponsors", @@ -28231,14 +23668,14 @@ } ], "dependencies": { - "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", "funding": [ { "type": "GitHub Sponsors", @@ -28250,87 +23687,13 @@ } ], "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "node_modules/micromark-util-decode-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", "funding": [ { "type": "GitHub Sponsors", @@ -28342,33 +23705,16 @@ } ], "dependencies": { + "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "node_modules/micromark-util-encode": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", "funding": [ { "type": "GitHub Sponsors", @@ -28380,10 +23726,10 @@ } ] }, - "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-types": { + "node_modules/micromark-util-html-tag-name": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", "funding": [ { "type": "GitHub Sponsors", @@ -28395,10 +23741,10 @@ } ] }, - "node_modules/micromark-extension-gfm/node_modules/micromark-util-chunked": { + "node_modules/micromark-util-normalize-identifier": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", "funding": [ { "type": "GitHub Sponsors", @@ -28413,10 +23759,10 @@ "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-extension-gfm/node_modules/micromark-util-combine-extensions": { + "node_modules/micromark-util-resolve-all": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", "funding": [ { "type": "GitHub Sponsors", @@ -28428,62 +23774,13 @@ } ], "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-gfm/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-extension-math": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", - "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", - "dependencies": { - "@types/katex": "^0.16.0", - "devlop": "^1.0.0", - "katex": "^0.16.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-math/node_modules/micromark-factory-space": { + "node_modules/micromark-util-sanitize-uri": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", "funding": [ { "type": "GitHub Sponsors", @@ -28496,13 +23793,14 @@ ], "dependencies": { "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-extension-math/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", "funding": [ { "type": "GitHub Sponsors", @@ -28514,11 +23812,13 @@ } ], "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-math/node_modules/micromark-util-symbol": { + "node_modules/micromark-util-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", @@ -28533,7 +23833,7 @@ } ] }, - "node_modules/micromark-extension-math/node_modules/micromark-util-types": { + "node_modules/micromark-util-types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", @@ -28610,14 +23910,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -28960,13 +24252,13 @@ } }, "node_modules/mongoose": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.4.tgz", - "integrity": "sha512-nG3eehhWf9l1q80WuHvp5DV+4xDNFpDWLE5ZgcFD5tslUV2USJ56ogun8gaZ62MKAocJnoStjAdno08b8U57hg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.6.0.tgz", + "integrity": "sha512-p6VSbYKvD4ZIabqo8C0kS5eKX1Xpji+opTAIJ9wyuPJ8Y/FblgXSMnFRXnB40bYZLKPQT089K5KU8+bqIXtFdw==", "dependencies": { "bson": "^6.7.0", "kareem": "2.6.3", - "mongodb": "6.7.0", + "mongodb": "6.8.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -28980,51 +24272,6 @@ "url": "https://opencollective.com/mongoose" } }, - "node_modules/mongoose/node_modules/mongodb": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", - "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", - "dependencies": { - "@mongodb-js/saslprep": "^1.1.5", - "bson": "^6.7.0", - "mongodb-connection-string-url": "^3.0.0" - }, - "engines": { - "node": ">=16.20.1" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0", - "gcp-metadata": "^5.2.0", - "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", - "socks": "^2.7.1" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } - } - }, "node_modules/mongoose/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -29393,9 +24640,9 @@ } }, "node_modules/npm": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.2.tgz", - "integrity": "sha512-x/AIjFIKRllrhcb48dqUNAAZl0ig9+qMuN91RpZo3Cb2+zuibfh+KISl6+kVVyktDz230JKc208UkQwwMqyB+w==", + "version": "10.8.3", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.3.tgz", + "integrity": "sha512-0IQlyAYvVtQ7uOhDFYZCGK8kkut2nh8cpAdA9E6FvRSJaTgtZRZgNjlC5ZCct//L73ygrpY93CxXpRJDtNqPVg==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -29486,13 +24733,13 @@ "@sigstore/tuf": "^2.3.4", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.3", + "cacache": "^18.0.4", "chalk": "^5.3.0", "ci-info": "^4.0.0", "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.4.2", + "glob": "^10.4.5", "graceful-fs": "^4.2.11", "hosted-git-info": "^7.0.2", "ini": "^4.1.3", @@ -29501,7 +24748,7 @@ "json-parse-even-better-errors": "^3.0.2", "libnpmaccess": "^8.0.6", "libnpmdiff": "^6.1.4", - "libnpmexec": "^8.1.3", + "libnpmexec": "^8.1.4", "libnpmfund": "^5.0.12", "libnpmhook": "^10.0.5", "libnpmorg": "^6.0.6", @@ -29515,12 +24762,12 @@ "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^10.1.0", + "node-gyp": "^10.2.0", "nopt": "^7.2.1", "normalize-package-data": "^6.0.2", "npm-audit-report": "^5.0.0", "npm-install-checks": "^6.3.0", - "npm-package-arg": "^11.0.2", + "npm-package-arg": "^11.0.3", "npm-pick-manifest": "^9.1.0", "npm-profile": "^10.0.0", "npm-registry-fetch": "^17.1.0", @@ -29531,7 +24778,7 @@ "proc-log": "^4.2.0", "qrcode-terminal": "^0.12.0", "read": "^3.0.1", - "semver": "^7.6.2", + "semver": "^7.6.3", "spdx-expression-parse": "^4.0.0", "ssri": "^10.0.6", "supports-color": "^9.4.0", @@ -30060,7 +25307,7 @@ } }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.3", + "version": "18.0.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -30213,7 +25460,7 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.3.5", + "version": "4.3.6", "inBundle": true, "license": "MIT", "dependencies": { @@ -30287,7 +25534,7 @@ } }, "node_modules/npm/node_modules/foreground-child": { - "version": "3.2.1", + "version": "3.3.0", "inBundle": true, "license": "ISC", "dependencies": { @@ -30313,7 +25560,7 @@ } }, "node_modules/npm/node_modules/glob": { - "version": "10.4.2", + "version": "10.4.5", "inBundle": true, "license": "ISC", "dependencies": { @@ -30327,9 +25574,6 @@ "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -30496,15 +25740,12 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "3.4.0", + "version": "3.4.3", "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -30582,7 +25823,7 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "8.1.3", + "version": "8.1.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -30707,12 +25948,9 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.2.2", + "version": "10.4.3", "inBundle": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/npm/node_modules/make-fetch-happen": { "version": "13.0.1", @@ -30907,7 +26145,7 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "10.1.0", + "version": "10.2.0", "inBundle": true, "license": "MIT", "dependencies": { @@ -30917,9 +26155,9 @@ "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5", - "tar": "^6.1.2", + "tar": "^6.2.1", "which": "^4.0.0" }, "bin": { @@ -30929,14 +26167,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/nopt": { "version": "7.2.1", "inBundle": true, @@ -31003,7 +26233,7 @@ } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.2", + "version": "11.0.3", "inBundle": true, "license": "ISC", "dependencies": { @@ -31165,7 +26395,7 @@ } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.1.0", + "version": "6.1.2", "inBundle": true, "license": "MIT", "dependencies": { @@ -31289,7 +26519,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.6.2", + "version": "7.6.3", "inBundle": true, "license": "ISC", "bin": { @@ -32043,17 +27273,19 @@ } }, "node_modules/openai": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.56.0.tgz", - "integrity": "sha512-zcag97+3bG890MNNa0DQD9dGmmTWL8unJdNkulZzWRXrl+QeD+YkBI4H58rJcwErxqGK6a0jVPZ4ReJjhDGcmw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.57.0.tgz", + "integrity": "sha512-JnwBSIYqiZ3jYjB5f2in8hQ0PRA092c6m+/6dYB0MzK0BEbn+0dioxZsPLBm5idJbg9xzLNOiGVm2OSuhZ+BdQ==", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", + "@types/qs": "^6.9.7", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7" + "node-fetch": "^2.6.7", + "qs": "^6.10.3" }, "bin": { "openai": "bin/cli" @@ -32068,9 +27300,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.46.tgz", - "integrity": "sha512-vnRgMS7W6cKa1/0G3/DTtQYpVrZ8c0Xm6UkLaVFrb9jtcVC3okokW09Ki1Qdrj9ISokszD69nY4WDLRlvHlhAA==", + "version": "18.19.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.47.tgz", + "integrity": "sha512-1f7dB3BL/bpd9tnDJrrHb66Y+cVrhxSOTGorRNdHwYTUlTay3HuTDPKo9a/4vX9pMQkhYBcAbL4jQdNlhCFP9A==", "dependencies": { "undici-types": "~5.26.4" } @@ -32275,10 +27507,10 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" }, "node_modules/parse-json": { "version": "5.2.0", @@ -32617,17 +27849,6 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, - "node_modules/phin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", - "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", - "dependencies": { - "centra": "^2.7.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", @@ -32655,22 +27876,22 @@ "integrity": "sha512-6Rtbp7criZRwedlvWbUYxqlqJoAlMvYHo2UcRWq79xZ54vZcaNHpVBOcWkX3ErT2aUA69tv+uiv4zKJbhD/Wgg==" }, "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", "dependencies": { - "pngjs": "^3.0.0" + "pngjs": "^6.0.0" }, "bin": { "pixelmatch": "bin/pixelmatch" } }, "node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", "engines": { - "node": ">=4.0.0" + "node": ">=12.13.0" } }, "node_modules/pkg-dir": { @@ -32761,11 +27982,11 @@ } }, "node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", "engines": { - "node": ">=12.13.0" + "node": ">=14.19.0" } }, "node_modules/point-in-polygon": { @@ -32810,9 +28031,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.42", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.42.tgz", + "integrity": "sha512-hywKUQB9Ra4dR1mGhldy5Aj1X3MWDSIA1cEi+Uy0CjheLvP6Ual5RlwMCh8i/X121yEDLDIKBsrCQ8ba3FDMfQ==", "funding": [ { "type": "opencollective", @@ -34062,29 +29283,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/readable-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/readable-web-to-node-stream": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", @@ -34165,723 +29363,226 @@ "engines": { "node": ">=14" }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/recharts-scale": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", - "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", - "dependencies": { - "decimal.js-light": "^2.4.1" - } - }, - "node_modules/recharts/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/reduce-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", - "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/rehype-katex": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", - "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/katex": "^0.16.0", - "hast-util-from-html-isomorphic": "^2.0.0", - "hast-util-to-text": "^4.0.0", - "katex": "^0.16.0", - "unist-util-visit-parents": "^6.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", - "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-raw": "^9.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remark-gfm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", - "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-gfm": "^3.0.0", - "micromark-extension-gfm": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/remark-math": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", - "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-math": "^3.0.0", - "micromark-extension-math": "^3.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-math/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/remark-parse/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/remark-parse/node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse/node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/remark-parse/node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/remark-parse/node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/remark-parse/node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/remark-parse/node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/remark-parse/node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/remark-parse/node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "decimal.js-light": "^2.4.1" } }, - "node_modules/remark-parse/node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/recharts/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/remark-parse/node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/reduce-flatten": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", + "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, "dependencies": { - "micromark-util-symbol": "^2.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/remark-parse/node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/remark-parse/node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@babel/runtime": "^7.8.4" } }, - "node_modules/remark-parse/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/remark-parse/node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/remark-parse/node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } }, - "node_modules/remark-parse/node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } }, - "node_modules/remark-parse/node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/rehype-katex": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", + "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", "dependencies": { - "micromark-util-types": "^2.0.0" + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" } }, - "node_modules/remark-parse/node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/remark-parse/node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/remark-parse/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "dependencies": { - "@types/unist": "^3.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -34904,14 +29605,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/remark-stringify": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", @@ -34926,14 +29619,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify/node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -36502,9 +31187,9 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/streamx": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.19.0.tgz", - "integrity": "sha512-5z6CNR4gtkPbwlxyEqoDGDmWIzoNJqCBt4Eac1ICP9YaIT08ct712cFj0u1rx4F8luAuL+3Qc+RFIdI4OX00kg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.0.tgz", + "integrity": "sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==", "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", @@ -36827,17 +31512,17 @@ } }, "node_modules/style-to-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", - "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.7.tgz", + "integrity": "sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==", "dependencies": { "inline-style-parser": "0.2.3" } }, "node_modules/styled-components": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.12.tgz", - "integrity": "sha512-n/O4PzRPhbYI0k1vKKayfti3C/IGcPf+DqcrOB7O/ab9x4u/zjqraneT5N45+sIe87cxrCApXM8Bna7NYxwoTA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", + "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", @@ -37171,11 +31856,6 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -37962,9 +32642,9 @@ } }, "node_modules/type-fest": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.25.0.tgz", - "integrity": "sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw==", + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", + "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", "engines": { "node": ">=16" }, @@ -38240,11 +32920,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/uninstall": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/uninstall/-/uninstall-0.0.0.tgz", @@ -38277,11 +32952,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-find-after/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/unist-util-is": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", @@ -38294,11 +32964,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-is/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/unist-util-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", @@ -38311,11 +32976,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", @@ -38329,10 +32989,17 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove-position/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/unist-util-visit": { "version": "5.0.0", @@ -38361,16 +33028,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit-parents/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/unist-util-visit/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/universal-user-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", @@ -38676,12 +33333,11 @@ } }, "node_modules/vfile": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", - "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", "dependencies": { "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, "funding": { @@ -38702,11 +33358,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-location/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, "node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", @@ -38720,40 +33371,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-message/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/vfile-message/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/vfile/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/victory-vendor": { "version": "36.9.2", "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", @@ -39277,11 +33894,6 @@ "node": ">=0.10.0" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -39647,17 +34259,6 @@ } } }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, "node_modules/xml-name-validator": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", @@ -39731,6 +34332,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, "engines": { "node": ">=0.4" } @@ -39856,6 +34458,14 @@ "node": ">= 14" } }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 81ee9972a..11c299f7d 100644 --- a/package.json +++ b/package.json @@ -105,8 +105,8 @@ "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/multimonth": "^6.1.10", "@internationalized/date": "^3.5.0", - "@mui/icons-material": "^5.14.19", - "@mui/material": "^5.14.19", + "@mui/icons-material": "^6.0.1", + "@mui/material": "^6.0.1", "@octokit/core": "^6.0.1", "@react-google-maps/api": "^2.19.2", "@react-spring/web": "^9.7.3", @@ -129,10 +129,11 @@ "@types/reveal": "^4.2.0", "@types/supercluster": "^7.1.3", "@types/textfit": "^2.4.4", - "@types/web": "^0.0.157", + "@types/web": "^0.0.159", "@types/webpack-hot-middleware": "^2.25.9", "@webscopeio/react-textarea-autocomplete": "^4.9.2", "adm-zip": "^0.5.10", + "any-base": "^1.1.0", "archiver": "^7.0.1", "async": "^3.2.5", "axios": "^1.6.2", @@ -210,7 +211,7 @@ "image-size": "^1.0.2", "image-size-stream": "^1.1.0", "is-plain-obj": "^4.1.0", - "jimp": "^0.22.10", + "jimp": "^1.0.4", "jpeg-autorotate": "^9.0.0", "jquery": "^3.7.1", "js-datepicker": "^5.18.2", diff --git a/src/client/Network.ts b/src/client/Network.ts index 204fcf0ac..9afdc844f 100644 --- a/src/client/Network.ts +++ b/src/client/Network.ts @@ -50,7 +50,7 @@ export namespace Networking { if (!fileguidpairs.length) { return []; } - const maxFileSize = 6000000; + const maxFileSize = 50000000; if (fileguidpairs.some(f => f.file.size > maxFileSize)) { return new Promise[]>(res => res([{ source: { newFilename: '', mimetype: '' } as formidable.File, result: new Error(`max file size (${maxFileSize / 1000000}MB) exceeded`) }])); } diff --git a/src/client/util/request-image-size.ts b/src/client/util/request-image-size.ts index 7a2ecd486..c619192ed 100644 --- a/src/client/util/request-image-size.ts +++ b/src/client/util/request-image-size.ts @@ -35,7 +35,11 @@ module.exports = function requestImageSize(url: string) { res.on('data', chunk => { buffer = Buffer.concat([buffer, chunk]); + }); + + res.on('error', reject); + res.on('end', () => { try { size = imageSize(buffer); if (size) { @@ -46,11 +50,6 @@ module.exports = function requestImageSize(url: string) { /* empty */ console.log('Error: ', err); } - }); - - res.on('error', reject); - - res.on('end', () => { if (!size) { reject(new Error('Image has no size')); return; diff --git a/src/client/views/collections/collectionGrid/CollectionGridView.tsx b/src/client/views/collections/collectionGrid/CollectionGridView.tsx index 61bd0241c..5c41fee37 100644 --- a/src/client/views/collections/collectionGrid/CollectionGridView.tsx +++ b/src/client/views/collections/collectionGrid/CollectionGridView.tsx @@ -9,7 +9,7 @@ import { emptyFunction } from '../../../../Utils'; import { Docs } from '../../../documents/Documents'; import { DragManager } from '../../../util/DragManager'; import { Transform } from '../../../util/Transform'; -import { undoBatch } from '../../../util/UndoManager'; +import { undoable, undoBatch } from '../../../util/UndoManager'; import { ContextMenu } from '../../ContextMenu'; import { ContextMenuProps } from '../../ContextMenuItem'; import { DocumentView } from '../../nodes/DocumentView'; @@ -221,13 +221,13 @@ export class CollectionGridView extends CollectionSubView() { }); if (this.Document.gridStartCompaction) { - undoBatch(() => { + undoable(() => { this.Document.gridCompaction = this.Document.gridStartCompaction; this.setLayoutList(savedLayouts); - })(); + }, 'start grid compaction')(); this.Document.gridStartCompaction = undefined; } else { - undoBatch(() => this.setLayoutList(savedLayouts))(); + undoable(() => this.setLayoutList(savedLayouts), 'start grid compaction')(); } } }; @@ -315,9 +315,9 @@ export class CollectionGridView extends CollectionSubView() { e, returnFalse, action(() => { - undoBatch(() => { + undoable(() => { this.Document.gridRowHeight = this._rowHeight; - })(); + }, 'changing row height')(); this._rowHeight = undefined; }), emptyFunction, @@ -360,13 +360,14 @@ export class CollectionGridView extends CollectionSubView() { returnFalse, (clickEv: PointerEvent, doubleTap?: boolean) => { if (doubleTap && !clickEv.button) { - undoBatch( + undoable( action(() => { const text = Docs.Create.TextDocument('', { _width: 150, _height: 50 }); Doc.SetSelectOnLoad(text); // track the new text box so we can give it a prop that tells it to focus itself when it's displayed Doc.AddDocToList(this.Document, this._props.fieldKey, text); this.setLayoutList(this.addLayoutItem(this.savedLayoutList, this.makeLayoutItem(text, this.screenToCell(clickEv.clientX, clickEv.clientY)))); - }) + }), + 'create grid text' )(); } }, diff --git a/src/server/ApiManagers/UploadManager.ts b/src/server/ApiManagers/UploadManager.ts index b2624f654..8ab27130b 100644 --- a/src/server/ApiManagers/UploadManager.ts +++ b/src/server/ApiManagers/UploadManager.ts @@ -3,7 +3,7 @@ import * as formidable from 'formidable'; import * as fs from 'fs'; import { createReadStream, createWriteStream, unlink } from 'fs'; import * as imageDataUri from 'image-data-uri'; -import Jimp from 'jimp'; +import { Jimp } from 'jimp'; import * as path from 'path'; import * as uuid from 'uuid'; import { retrocycle } from '../../decycler/decycler'; @@ -11,7 +11,7 @@ import { DashVersion } from '../../fields/DocSymbols'; import { DashUploadUtils, InjectSize, SizeSuffix } from '../DashUploadUtils'; import { Method, _success } from '../RouteManager'; import { AcceptableMedia, Upload } from '../SharedMediaTypes'; -import { clientPathToFile, Directory, pathToDirectory, publicDirectory, serverPathToFile } from '../SocketData'; +import { Directory, clientPathToFile, pathToDirectory, publicDirectory, serverPathToFile } from '../SocketData'; import { Database } from '../database'; import ApiManager, { Registration } from './ApiManager'; import { SolrManager } from './SearchManager'; @@ -203,12 +203,11 @@ export default class UploadManager extends ApiManager { try { zip.extractEntryTo(entry.entryName, publicDirectory, true, false); createReadStream(pathname).pipe(createWriteStream(targetname)); - Jimp.read(pathname).then(imgIn => { - let img = imgIn; + Jimp.read(pathname).then(img => { DashUploadUtils.imageResampleSizes(extension).forEach(({ width, suffix }) => { const outputPath = InjectSize(targetname, suffix); if (!width) createReadStream(pathname).pipe(createWriteStream(outputPath)); - else img = img.resize(width, Jimp.AUTO).write(outputPath); + else img.resize({ w: width }).write(outputPath as `${string}.${string}`); }); unlink(pathname, () => {}); }); @@ -288,13 +287,12 @@ export default class UploadManager extends ApiManager { imageDataUri.outputFile(uri, serverPathToFile(Directory.images, InjectSize(filename, origSuffix))).then((savedName: string) => { const ext = path.extname(savedName).toLowerCase(); if (AcceptableMedia.imageFormats.includes(ext)) { - Jimp.read(savedName).then(imgIn => { - let img = imgIn; + Jimp.read(savedName).then(img => { (!origSuffix ? [{ width: 400, suffix: SizeSuffix.Medium }] : Object.values(DashUploadUtils.Sizes)) // .forEach(({ width, suffix }) => { const outputPath = serverPathToFile(Directory.images, InjectSize(filename, suffix) + ext); if (!width) createReadStream(savedName).pipe(createWriteStream(outputPath)); - else img = img.resize(width, Jimp.AUTO).write(outputPath); + else img.resize({ w: width }).write(outputPath as `${string}.${string}`); }); }); } diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts index 8f012f783..5cf86b2ae 100644 --- a/src/server/DashUploadUtils.ts +++ b/src/server/DashUploadUtils.ts @@ -1,5 +1,5 @@ import axios from 'axios'; -import { spawn, exec } from 'child_process'; +import { exec, spawn } from 'child_process'; import { green, red } from 'colors'; import { ExifData, ExifImage } from 'exif'; import * as exifr from 'exifr'; @@ -7,9 +7,8 @@ import * as ffmpeg from 'fluent-ffmpeg'; import * as formidable from 'formidable'; import { File } from 'formidable'; import * as fs from 'fs'; -import { createReadStream, createWriteStream, existsSync, readFileSync, rename, unlinkSync, writeFile } from 'fs'; -import Jimp from 'jimp'; -import * as autorotate from 'jpeg-autorotate'; +import { createReadStream, createWriteStream, existsSync, readFileSync, rename, unlinkSync, writeFile } from 'fs'; // import { Jimp } from "@jimp/core"; +import { Jimp } from 'jimp'; import * as md5File from 'md5-file'; import * as path from 'path'; import { basename } from 'path'; @@ -23,6 +22,38 @@ import { AcceptableMedia, Upload } from './SharedMediaTypes'; import { Directory, clientPathToFile, filesDirectory, pathToDirectory, publicDirectory, serverPathToFile } from './SocketData'; import { resolvedServerUrl } from './server_Initialization'; +import { Worker, isMainThread, parentPort } from 'worker_threads'; + +// Create an array to store worker threads +const workerThreads: Worker[] = []; +if (isMainThread) { + // Main thread code + // Create worker threads -- just one right to do image resampling + workerThreads.push(new Worker(__filename)); +} else { + // Worker thread code - Listens for messages from the main thread + parentPort?.on('message', message => workerResampleImage(message.task)); + async function workerResampleImage(task: string) { + const [sourcePath, outputFileName, outputDirectory, unlinkSource] = task.split('::'); + const sizes = DashUploadUtils.imageResampleSizes(path.extname(sourcePath)); + const imgBuffer = await fs.readFileSync(sourcePath); + const outputPath = (suffix: SizeSuffix) => { + const writtenFile = InjectSize(outputFileName, suffix); + return path.resolve(outputDirectory, writtenFile); + }; + await Jimp.fromBuffer(imgBuffer) + .then(img => sizes.filter(({ width }) => width).map(({ width, suffix }) => img.resize({ w: width }).write(outputPath(suffix) as `${string}.${string}`))) + .catch(e => { + console.log('ERROR' + e); + }); + if (unlinkSource === 'true') { + unlinkSync(sourcePath); + } + + // … operations to be performed to execute the task + } +} + // eslint-disable-next-line @typescript-eslint/no-var-requires const requestImageSize = require('../client/util/request-image-size'); @@ -277,15 +308,6 @@ export namespace DashUploadUtils { } }; - async function correctRotation(imgSourcePath: string) { - const buffer = fs.readFileSync(imgSourcePath); - try { - return (await autorotate.rotate(buffer, { quality: 30 })).buffer; - } catch (e) { - return buffer; - } - } - /** * define the resizers to use * @param ext the extension @@ -310,38 +332,29 @@ export namespace DashUploadUtils { * @param outputDirectory the directory to output to, usually Directory.Images * @returns a map with suffixes as keys and resized filenames as values. */ - export async function outputResizedImages(imgSourcePath: string, outputFileName: string, outputDirectory: string) { + export async function outputResizedImages(imgSourcePath: string, outputFileName: string, outputDirectory: string, unlinkSource: boolean) { const writtenFiles: { [suffix: string]: string } = {}; - const sizes = imageResampleSizes(path.extname(outputFileName)); - const imgBuffer = await correctRotation(imgSourcePath); - const imgReadStream = new Duplex(); - imgReadStream.push(imgBuffer); - imgReadStream.push(null); const outputPath = (suffix: SizeSuffix) => { writtenFiles[suffix] = InjectSize(outputFileName, suffix); return path.resolve(outputDirectory, writtenFiles[suffix]); }; + + const sizes = imageResampleSizes(path.extname(outputFileName)); + const imgBuffer = fs.readFileSync(imgSourcePath); + const imgReadStream = new Duplex(); + imgReadStream.push(imgBuffer); + imgReadStream.push(null); await Promise.all( - sizes.filter(({ width }) => !width).map(({ suffix }) => - new Promise(res => { - imgReadStream.pipe(createWriteStream(outputPath(suffix))).on('close', res); - }) + sizes.map(({ suffix }) => + new Promise(res => + imgReadStream.pipe(createWriteStream(outputPath(suffix))).on('close', res) + ) )); // prettier-ignore - return Jimp.read(imgBuffer) - .then(async imgIn => { - let img = imgIn; - await Promise.all( sizes.filter(({ width }) => width).map(({ width, suffix }) => { - img = img.resize(width, Jimp.AUTO).write(outputPath(suffix)); - return img; - } )); // prettier-ignore - return writtenFiles; - }) - .catch(e => { - console.log('ERROR' + e); - return writtenFiles; - }); + // Send a message to worker thread to resample image + workerThreads[0].postMessage({ task: imgSourcePath + '::' + outputFileName + '::' + outputDirectory + '::' + unlinkSource }); + return writtenFiles; } /** @@ -387,8 +400,9 @@ export namespace DashUploadUtils { writtenFiles = {}; } } else { + const unlinkSrcWhenFinished = isLocal().test(source) && cleanUp; try { - writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images)); + writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images), unlinkSrcWhenFinished); } catch (e) { // input is a blob or other, try reading it to create a metadata source file. const reqSource = request(metadata.source); @@ -400,16 +414,14 @@ export namespace DashUploadUtils { .on('close', () => res()) .on('error', () => rej()); }); - writtenFiles = await outputResizedImages(readSource, resolved, pathToDirectory(Directory.images)); + writtenFiles = await outputResizedImages(readSource, resolved, pathToDirectory(Directory.images), unlinkSrcWhenFinished); fs.unlink(readSource, err => console.log("Couldn't unlink temporary image file:" + readSource, err)); } } Array.from(Object.keys(writtenFiles)).forEach(suffix => { information.accessPaths[suffix] = getAccessPaths(images, writtenFiles[suffix]); }); - if (isLocal().test(source) && cleanUp) { - unlinkSync(source); - } + return information; }; -- cgit v1.2.3-70-g09d2 From a958577d4c27b276aa37484e3f895e196138b17c Mon Sep 17 00:00:00 2001 From: bobzel Date: Sun, 1 Sep 2024 12:55:59 -0400 Subject: consolidated image resampling. fixed importing zipped workspace. --- src/client/views/PropertiesButtons.tsx | 20 --- .../collectionFreeForm/CollectionFreeFormView.tsx | 2 +- .../collections/collectionFreeForm/MarqueeView.tsx | 4 +- src/client/views/nodes/PDFBox.tsx | 4 - src/server/ApiManagers/SearchManager.ts | 200 --------------------- src/server/ApiManagers/UploadManager.ts | 49 ++--- src/server/DashUploadUtils.ts | 74 ++++---- src/server/index.ts | 2 - 8 files changed, 56 insertions(+), 299 deletions(-) delete mode 100644 src/server/ApiManagers/SearchManager.ts (limited to 'src') diff --git a/src/client/views/PropertiesButtons.tsx b/src/client/views/PropertiesButtons.tsx index f346d4ba8..f96a4a255 100644 --- a/src/client/views/PropertiesButtons.tsx +++ b/src/client/views/PropertiesButtons.tsx @@ -246,26 +246,6 @@ export class PropertiesButtons extends React.Component { // ); // } - // @computed get freezeThumb() { - // return this.propertyToggleBtn( - // 'FreezeThumb', - // '_thumb-frozen', - // on => `${on ? 'Freeze' : 'Unfreeze'} thumbnail`, - // on => 'snowflake', - // (dv, doc) => { - // if (doc['thumb-frozen']) doc['thumb-frozen'] = undefined; - // else { - // document.body.focus(); // so that we can access the clipboard without an error - // setTimeout(() => - // pasteImageBitmap((data_url: any, error: any) => { - // error && console.log(error); - // data_url && Utils.convertDataUri(data_url, doc[Id] + '-thumb-frozen', true).then(returnedfilename => (doc['thumb-frozen'] = new ImageField(returnedfilename))); - // }) - // ); - // } - // } - // ); - // } @computed get snapButton() { // THESE ARE NOT COMING return this.propertyToggleBtn( diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx index c4cf8dee7..dbf781e63 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx @@ -1811,7 +1811,7 @@ export class CollectionFreeFormView extends CollectionSubView { error && console.log(error); data && - ClientUtils.convertDataUri(data, this._props.Document[Id] + '-thumb-frozen').then(returnedfilename => { - this._props.Document['thumb-frozen'] = new ImageField(returnedfilename); + ClientUtils.convertDataUri(data, this._props.Document[Id] + '_icon_' + new Date().getTime()).then(returnedfilename => { + this._props.Document[DocData].icon = new ImageField(returnedfilename); }); }) ); diff --git a/src/client/views/nodes/PDFBox.tsx b/src/client/views/nodes/PDFBox.tsx index b17275a1e..cb0b0d71f 100644 --- a/src/client/views/nodes/PDFBox.tsx +++ b/src/client/views/nodes/PDFBox.tsx @@ -56,10 +56,6 @@ export class PDFBox extends ViewBoxAnnotatableComponent() { @computed get pdfUrl() { return Cast(this.dataDoc[this._props.fieldKey], PdfField); } - @computed get pdfThumb() { - return ImageCast(this.layoutDoc['thumb-frozen'], ImageCast(this.layoutDoc.thumb))?.url; - } - constructor(props: FieldViewProps) { super(props); makeObservable(this); diff --git a/src/server/ApiManagers/SearchManager.ts b/src/server/ApiManagers/SearchManager.ts deleted file mode 100644 index 684b49eaf..000000000 --- a/src/server/ApiManagers/SearchManager.ts +++ /dev/null @@ -1,200 +0,0 @@ -/* eslint-disable no-use-before-define */ -import { exec } from 'child_process'; -import { cyan, green, red, yellow } from 'colors'; -import { logExecution } from '../ActionUtilities'; -import { Method } from '../RouteManager'; -import RouteSubscriber from '../RouteSubscriber'; -import { Search } from '../Search'; -import { Database } from '../database'; -import ApiManager, { Registration } from './ApiManager'; - -export class SearchManager extends ApiManager { - protected initialize(register: Registration): void { - register({ - method: Method.GET, - subscription: new RouteSubscriber('solr').add('action'), - secureHandler: async ({ req, res }) => { - const { action } = req.params; - switch (action) { - case 'start': - case 'stop': - { - const status = req.params.action === 'start'; - SolrManager.SetRunning(status); - } - break; - case 'update': - await SolrManager.update(); - break; - default: - console.log(yellow(`${action} is an unknown solr operation.`)); - } - res.redirect('/home'); - }, - }); - - register({ - method: Method.GET, - subscription: '/dashsearch', - secureHandler: async ({ req, res }) => { - const solrQuery: any = {}; - ['q', 'fq', 'start', 'rows', 'sort', 'hl.maxAnalyzedChars', 'hl', 'hl.fl'].forEach(key => { - solrQuery[key] = req.query[key]; - }); - if (solrQuery.q === undefined) { - res.send([]); - return; - } - const results = await Search.search(solrQuery); - res.send(results); - }, - }); - } -} - -export namespace SolrManager { - export function SetRunning(status: boolean) { - const args = status ? 'start' : 'stop -p 8983'; - console.log(`solr management: trying to ${args}`); - exec(`solr ${args}`, { cwd: './solr-8.3.1/bin' }, (error, stdout, stderr) => { - if (error) { - console.log(red(`solr management error: unable to ${args} server`)); - console.log(red(error.message)); - } - console.log(cyan(stdout)); - console.log(yellow(stderr)); - }); - if (status) { - console.log(cyan('Start script is executing: please allow 15 seconds for solr to start on port 8983.')); - } - } - - export async function update() { - console.log(green('Beginning update...')); - await logExecution({ - startMessage: 'Clearing existing Solr information...', - endMessage: 'Solr information successfully cleared', - action: Search.clear, - color: cyan, - }); - const cursor = await logExecution({ - startMessage: 'Connecting to and querying for all documents from database...', - endMessage: ({ result, error }) => { - const success = error === null && result !== undefined; - if (!success) { - console.log(red('Unable to connect to the database.')); - process.exit(0); - } - return 'Connection successful and query complete'; - }, - action: () => Database.Instance.query({}), - color: yellow, - }); - const updates: any[] = []; - let numDocs = 0; - function updateDoc(doc: any) { - numDocs++; - if (numDocs % 50 === 0) { - console.log(`Batch of 50 complete, total of ${numDocs}`); - } - if (doc.__type !== 'Doc') { - return; - } - const { fields } = doc; - if (!fields) { - return; - } - const update2: any = { id: doc._id }; - let dynfield = false; - fields.forEach((key: any) => { - const value = fields[key]; - const term = ToSearchTerm(value); - if (term !== undefined) { - const { suffix, value: tvalue } = term; - if (key.endsWith('modificationDate')) { - update2['modificationDate' + suffix] = tvalue; - } - update2[key + suffix] = value; - dynfield = true; - } - }); - if (dynfield) { - updates.push(update2); - } - } - await cursor?.forEach(updateDoc); - const result = await logExecution({ - startMessage: `Dispatching updates for ${updates.length} documents`, - endMessage: 'Dispatched updates complete', - action: () => Search.updateDocuments(updates), - color: cyan, - }); - try { - if (result) { - const { status } = JSON.parse(result).responseHeader; - console.log(status ? red(`Failed with status code (${status})`) : green('Success!')); - } else { - console.log(red('Solr is likely not running!')); - } - } catch (e) { - console.log(red('Error:')); - console.log(e); - console.log('\n'); - } - await cursor?.close(); - } - - const suffixMap: { [type: string]: string | [string, string | ((json: any) => any)] } = { - number: '_n', - string: '_t', - boolean: '_b', - image: ['_t', 'url'], - video: ['_t', 'url'], - pdf: ['_t', 'url'], - audio: ['_t', 'url'], - web: ['_t', 'url'], - map: ['_t', 'url'], - date: ['_d', value => new Date(value.date).toISOString()], - proxy: ['_i', 'fieldId'], - prefetch_proxy: ['_i', 'fieldId'], - list: [ - '_l', - list => { - const results = []; - // eslint-disable-next-line no-restricted-syntax - for (const value of list.fields) { - const term = ToSearchTerm(value); - if (term) { - results.push(term.value); - } - } - return results.length ? results : null; - }, - ], - }; - - function ToSearchTerm(valIn: any): { suffix: string; value: any } | undefined { - let val = valIn; - if (val === null || val === undefined) { - return undefined; - } - const type = val.__type || typeof val; - let suffix = suffixMap[type]; - if (!suffix) { - return undefined; - } - - if (Array.isArray(suffix)) { - const accessor = suffix[1]; - if (typeof accessor === 'function') { - val = accessor(val); - } else { - val = val[accessor]; - } - // eslint-disable-next-line prefer-destructuring - suffix = suffix[0]; - } - - return { suffix, value: val }; - } -} diff --git a/src/server/ApiManagers/UploadManager.ts b/src/server/ApiManagers/UploadManager.ts index 8ab27130b..868373474 100644 --- a/src/server/ApiManagers/UploadManager.ts +++ b/src/server/ApiManagers/UploadManager.ts @@ -1,20 +1,18 @@ import * as AdmZip from 'adm-zip'; import * as formidable from 'formidable'; import * as fs from 'fs'; -import { createReadStream, createWriteStream, unlink } from 'fs'; +import { unlink } from 'fs'; import * as imageDataUri from 'image-data-uri'; -import { Jimp } from 'jimp'; import * as path from 'path'; import * as uuid from 'uuid'; import { retrocycle } from '../../decycler/decycler'; import { DashVersion } from '../../fields/DocSymbols'; -import { DashUploadUtils, InjectSize, SizeSuffix } from '../DashUploadUtils'; +import { DashUploadUtils, InjectSize, SizeSuffix, workerResample } from '../DashUploadUtils'; import { Method, _success } from '../RouteManager'; import { AcceptableMedia, Upload } from '../SharedMediaTypes'; import { Directory, clientPathToFile, pathToDirectory, publicDirectory, serverPathToFile } from '../SocketData'; import { Database } from '../database'; import ApiManager, { Registration } from './ApiManager'; -import { SolrManager } from './SearchManager'; export default class UploadManager extends ApiManager { protected initialize(register: Registration): void { @@ -185,7 +183,7 @@ export default class UploadManager extends ApiManager { let linkids: string[] = []; try { // eslint-disable-next-line no-restricted-syntax - for (const name in Object.keys(files)) { + for (const name in files) { if (Object.prototype.hasOwnProperty.call(files, name)) { const f = files[name]; // eslint-disable-next-line no-continue @@ -194,25 +192,17 @@ export default class UploadManager extends ApiManager { const zip = new AdmZip(path2.filepath); zip.getEntries().forEach(entry => { const entryName = entry.entryName.replace(/%%%/g, '/'); - if (!entryName.startsWith('files/')) { - return; - } - const extension = path.extname(entryName); - const pathname = publicDirectory + '/' + entry.entryName; - const targetname = publicDirectory + '/' + entryName; - try { - zip.extractEntryTo(entry.entryName, publicDirectory, true, false); - createReadStream(pathname).pipe(createWriteStream(targetname)); - Jimp.read(pathname).then(img => { - DashUploadUtils.imageResampleSizes(extension).forEach(({ width, suffix }) => { - const outputPath = InjectSize(targetname, suffix); - if (!width) createReadStream(pathname).pipe(createWriteStream(outputPath)); - else img.resize({ w: width }).write(outputPath as `${string}.${string}`); - }); - unlink(pathname, () => {}); - }); - } catch (e) { - console.log(e); + if (entryName.startsWith('files/')) { + const pathname = publicDirectory + '/' + entry.entryName; + const targetname = publicDirectory + '/' + entryName; + try { + zip.extractEntryTo(entry.entryName, publicDirectory, true, false); + const extension = path.extname(targetname).toLowerCase(); + const basefilename = targetname.substring(0, targetname.length - extension.length); + workerResample(pathname, basefilename.replace(/_o$/, '') + extension, SizeSuffix.Original, true); + } catch (e) { + console.log(e); + } } }); const json = zip.getEntry('docs.json'); @@ -243,7 +233,6 @@ export default class UploadManager extends ApiManager { unlink(path2.filepath, () => {}); } } - SolrManager.update(); res.send(JSON.stringify({ id, docids, linkids }) || 'error'); } catch (e) { console.log(e); @@ -286,15 +275,9 @@ export default class UploadManager extends ApiManager { } imageDataUri.outputFile(uri, serverPathToFile(Directory.images, InjectSize(filename, origSuffix))).then((savedName: string) => { const ext = path.extname(savedName).toLowerCase(); + const outputPath = serverPathToFile(Directory.images, filename + ext); if (AcceptableMedia.imageFormats.includes(ext)) { - Jimp.read(savedName).then(img => { - (!origSuffix ? [{ width: 400, suffix: SizeSuffix.Medium }] : Object.values(DashUploadUtils.Sizes)) // - .forEach(({ width, suffix }) => { - const outputPath = serverPathToFile(Directory.images, InjectSize(filename, suffix) + ext); - if (!width) createReadStream(savedName).pipe(createWriteStream(outputPath)); - else img.resize({ w: width }).write(outputPath as `${string}.${string}`); - }); - }); + workerResample(savedName, outputPath, origSuffix, false); } res.send(clientPathToFile(Directory.images, filename + ext)); }); diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts index 5cf86b2ae..1e55a885a 100644 --- a/src/server/DashUploadUtils.ts +++ b/src/server/DashUploadUtils.ts @@ -7,7 +7,7 @@ import * as ffmpeg from 'fluent-ffmpeg'; import * as formidable from 'formidable'; import { File } from 'formidable'; import * as fs from 'fs'; -import { createReadStream, createWriteStream, existsSync, readFileSync, rename, unlinkSync, writeFile } from 'fs'; // import { Jimp } from "@jimp/core"; +import { createReadStream, createWriteStream, existsSync, readFileSync, rename, unlinkSync, writeFile } from 'fs'; import { Jimp } from 'jimp'; import * as md5File from 'md5-file'; import * as path from 'path'; @@ -25,32 +25,38 @@ import { resolvedServerUrl } from './server_Initialization'; import { Worker, isMainThread, parentPort } from 'worker_threads'; // Create an array to store worker threads -const workerThreads: Worker[] = []; +enum workertasks { + JIMP = 'jimp', +} +const JimpWorker: Worker | undefined = isMainThread ? new Worker(__filename) : undefined; +export const workerResample = (imgSourcePath: string, outputPath: string, origSuffix: SizeSuffix, unlinkSource: boolean) => { + JimpWorker?.postMessage({ task: workertasks.JIMP, imgSourcePath, outputPath, origSuffix, unlinkSource }); +}; + if (isMainThread) { - // Main thread code - // Create worker threads -- just one right to do image resampling - workerThreads.push(new Worker(__filename)); + // main thread code if needed ... } else { // Worker thread code - Listens for messages from the main thread - parentPort?.on('message', message => workerResampleImage(message.task)); - async function workerResampleImage(task: string) { - const [sourcePath, outputFileName, outputDirectory, unlinkSource] = task.split('::'); - const sizes = DashUploadUtils.imageResampleSizes(path.extname(sourcePath)); - const imgBuffer = await fs.readFileSync(sourcePath); - const outputPath = (suffix: SizeSuffix) => { - const writtenFile = InjectSize(outputFileName, suffix); - return path.resolve(outputDirectory, writtenFile); - }; - await Jimp.fromBuffer(imgBuffer) - .then(img => sizes.filter(({ width }) => width).map(({ width, suffix }) => img.resize({ w: width }).write(outputPath(suffix) as `${string}.${string}`))) - .catch(e => { - console.log('ERROR' + e); - }); - if (unlinkSource === 'true') { - unlinkSync(sourcePath); + parentPort?.on('message', message => { + switch (message.task) { + case workertasks.JIMP: + return workerResampleImage(message); + default: } - - // … operations to be performed to execute the task + }); + + async function workerResampleImage(message: { imgSourcePath: string; outputPath: string; origSuffix: string; unlinkSource: boolean }) { + const { imgSourcePath, outputPath, origSuffix, unlinkSource } = message; + const sizes = !origSuffix ? [{ width: 400, suffix: SizeSuffix.Medium }] : DashUploadUtils.imageResampleSizes(path.extname(imgSourcePath)); + // prettier-ignore + Jimp.read(imgSourcePath) + .then(img => + sizes.forEach(({ width, suffix }) => + img.resize({ w: width || img.bitmap.width }) + .write(InjectSize(outputPath, suffix) as `${string}.${string}`) + )) + .catch(e => console.log('Error Jimp:', e)) + .finally(() => unlinkSource && unlinkSync(imgSourcePath)); } } @@ -332,28 +338,22 @@ export namespace DashUploadUtils { * @param outputDirectory the directory to output to, usually Directory.Images * @returns a map with suffixes as keys and resized filenames as values. */ - export async function outputResizedImages(imgSourcePath: string, outputFileName: string, outputDirectory: string, unlinkSource: boolean) { + export async function outputResizedImages(imgSourcePath: string, outputFileName: string, unlinkSource: boolean) { const writtenFiles: { [suffix: string]: string } = {}; - - const outputPath = (suffix: SizeSuffix) => { - writtenFiles[suffix] = InjectSize(outputFileName, suffix); - return path.resolve(outputDirectory, writtenFiles[suffix]); - }; - + const outputPath = path.resolve(pathToDirectory(Directory.images), outputFileName); const sizes = imageResampleSizes(path.extname(outputFileName)); - const imgBuffer = fs.readFileSync(imgSourcePath); + const imgReadStream = new Duplex(); - imgReadStream.push(imgBuffer); + imgReadStream.push(fs.readFileSync(imgSourcePath)); imgReadStream.push(null); await Promise.all( sizes.map(({ suffix }) => new Promise(res => - imgReadStream.pipe(createWriteStream(outputPath(suffix))).on('close', res) + imgReadStream.pipe(createWriteStream(writtenFiles[suffix] = InjectSize(outputPath, suffix))).on('close', res) ) )); // prettier-ignore - // Send a message to worker thread to resample image - workerThreads[0].postMessage({ task: imgSourcePath + '::' + outputFileName + '::' + outputDirectory + '::' + unlinkSource }); + workerResample(imgSourcePath, outputPath, SizeSuffix.Original, unlinkSource); return writtenFiles; } @@ -402,7 +402,7 @@ export namespace DashUploadUtils { } else { const unlinkSrcWhenFinished = isLocal().test(source) && cleanUp; try { - writtenFiles = await outputResizedImages(metadata.source, resolved, pathToDirectory(Directory.images), unlinkSrcWhenFinished); + writtenFiles = await outputResizedImages(metadata.source, resolved, unlinkSrcWhenFinished); } catch (e) { // input is a blob or other, try reading it to create a metadata source file. const reqSource = request(metadata.source); @@ -414,7 +414,7 @@ export namespace DashUploadUtils { .on('close', () => res()) .on('error', () => rej()); }); - writtenFiles = await outputResizedImages(readSource, resolved, pathToDirectory(Directory.images), unlinkSrcWhenFinished); + writtenFiles = await outputResizedImages(readSource, resolved, unlinkSrcWhenFinished); fs.unlink(readSource, err => console.log("Couldn't unlink temporary image file:" + readSource, err)); } } diff --git a/src/server/index.ts b/src/server/index.ts index 3e0d86814..88dbd232d 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -8,7 +8,6 @@ import DataVizManager from './ApiManagers/DataVizManager'; import DeleteManager from './ApiManagers/DeleteManager'; import DownloadManager from './ApiManagers/DownloadManager'; import GeneralGoogleManager from './ApiManagers/GeneralGoogleManager'; -import { SearchManager } from './ApiManagers/SearchManager'; import SessionManager from './ApiManagers/SessionManager'; import UploadManager from './ApiManagers/UploadManager'; import UserManager from './ApiManagers/UserManager'; @@ -67,7 +66,6 @@ function routeSetter({ addSupervisedRoute, logRegistrationOutcome }: RouteManage new UserManager(), new UploadManager(), new DownloadManager(), - new SearchManager(), new DeleteManager(), new UtilManager(), new GeneralGoogleManager(), -- cgit v1.2.3-70-g09d2 From 8e2cc917ab7cb913755aabe9aecce6d4bb157a0a Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 09:03:13 -0400 Subject: updated filter panel to allow filtering by tags --- src/client/documents/Documents.ts | 1 + src/client/views/FilterPanel.tsx | 26 +++++++++++--------------- 2 files changed, 12 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index af181b031..1acc6bb46 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -450,6 +450,7 @@ export class DocumentOptions { onDragStart?: ScriptField; // script to execute at start of drag operation -- e.g., when a "creator" button is dragged this script generates a different document to drop target?: Doc; // available for use in scripts. used to provide a document parameter to the script (Note, this is a convenience entry since any field could be used for parameterizing a script) tags?: LISTt = new ListInfo('hashtags added to document, typically using a text view', true); + tags_chat?: LISTt = new ListInfo('hashtags added to document by chatGPT', true); treeView_HideTitle?: BOOLt = new BoolInfo('whether to hide the top document title of a tree view'); treeView_HideUnrendered?: BOOLt = new BoolInfo("tells tree view not to display documents that have an 'layout_unrendered' tag unless they also have a treeView_FieldKey tag (presBox)"); treeView_HideHeaderIfTemplate?: BOOLt = new BoolInfo('whether to hide the header for a document in a tree view only if a childLayoutTemplate is provided (presBox)'); diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index b11fa3bd5..2f6d1fbaa 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -192,21 +192,17 @@ export class FilterPanel extends ObservableReactComponent { const allCollectionDocs = new Set(); SearchUtil.foreachRecursiveDoc(this.targetDocChildren, (depth: number, doc: Doc) => allCollectionDocs.add(doc)); const set = new Set([...StrListCast(this.Document.childFilters).map(filter => filter.split(Doc.FilterSep)[1]), Doc.FilterNone, Doc.FilterAny]); - if (facetHeader === 'tags') - allCollectionDocs.forEach(child => - StrListCast(child[facetHeader]) - .filter(h => h) - .forEach(key => set.add(key)) - ); - else - allCollectionDocs.forEach(child => { - const fieldVal = child[facetHeader] as FieldType; - if (!(fieldVal instanceof List)) { - // currently we have no good way of filtering based on a field that is a list - set.add(Field.toString(fieldVal)); - (fieldVal === true || fieldVal === false) && set.add((!fieldVal).toString()); - } - }); + + allCollectionDocs.forEach(child => { + const fieldVal = child[facetHeader] as FieldType; + const fieldStrList = StrListCast(child[facetHeader]).filter(h => h); + if (fieldStrList.length) fieldStrList.forEach(key => set.add(key)); + else if (!(fieldVal instanceof List)) { + // currently we have no good way of filtering based on a field that is a list + set.add(Field.toString(fieldVal)); + (fieldVal === true || fieldVal === false) && set.add((!fieldVal).toString()); + } + }); const facetValues = Array.from(set).filter(v => v); let nonNumbers = 0; -- cgit v1.2.3-70-g09d2 From 158d501642b0183b286913eb396c396922166435 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 09:47:38 -0400 Subject: prevent tags from getting really big --- src/client/views/TagsView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 0ac015b36..7723da900 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -266,7 +266,7 @@ export class TagsView extends ObservableReactComponent { } @computed get currentScale() { - return NumCast(DocCast(this._props.View.Document.embedContainer)?._freeform_scale, 1); + return Math.max(1, 1 / this._props.View.screenToLocalScale()); } @computed get isEditing() { return this._isEditing && DocumentView.SelectedDocs().includes(this._props.View.Document); -- cgit v1.2.3-70-g09d2 From 0b77229000231869695a6211e216d5b1755f53f7 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 13:05:17 -0400 Subject: made calendarBox work --- src/ClientUtils.ts | 3 +- .../views/collections/CollectionCalendarView.tsx | 4 +- .../views/collections/CollectionCardDeckView.scss | 18 +-- .../views/nodes/calendarBox/CalendarBox.scss | 18 +++ src/client/views/nodes/calendarBox/CalendarBox.tsx | 172 ++++++++++++--------- 5 files changed, 131 insertions(+), 84 deletions(-) create mode 100644 src/client/views/nodes/calendarBox/CalendarBox.scss (limited to 'src') diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index 55801df81..51ad55c07 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -650,6 +650,7 @@ export function DivWidth(ele: HTMLElement | null): number { export function dateRangeStrToDates(dateStr: string) { // dateStr in yyyy-mm-dd format const dateRangeParts = dateStr.split('|'); // splits into from and to date + if (dateRangeParts.length < 2) return { startDate: new Date(), endDate: new Date() }; const fromParts = dateRangeParts[0].split('-'); const toParts = dateRangeParts[1].split('-'); @@ -661,7 +662,7 @@ export function dateRangeStrToDates(dateStr: string) { const toMonth = parseInt(toParts[1]) - 1; const toDay = parseInt(toParts[2]); - return [new Date(fromYear, fromMonth, fromDay), new Date(toYear, toMonth, toDay)]; + return { startDate: new Date(fromYear, fromMonth, fromDay), endDate: new Date(toYear, toMonth, toDay) }; } function replaceCanvases(oldDiv: HTMLElement, newDiv: HTMLElement) { diff --git a/src/client/views/collections/CollectionCalendarView.tsx b/src/client/views/collections/CollectionCalendarView.tsx index 9eb16917b..c1f0b314b 100644 --- a/src/client/views/collections/CollectionCalendarView.tsx +++ b/src/client/views/collections/CollectionCalendarView.tsx @@ -38,8 +38,8 @@ export class CollectionCalendarView extends CollectionSubView() { const aDateRangeStr = StrCast(DocListCast(calendarA.data).lastElement()?.date_range); const bDateRangeStr = StrCast(DocListCast(calendarB.data).lastElement()?.date_range); - const [aFromDate, aToDate] = dateRangeStrToDates(aDateRangeStr); - const [bFromDate, bToDate] = dateRangeStrToDates(bDateRangeStr); + const { startDate: aFromDate, endDate: aToDate } = dateRangeStrToDates(aDateRangeStr); + const { startDate: bFromDate, endDate: bToDate } = dateRangeStrToDates(bDateRangeStr); if (aFromDate > bFromDate) { return -1; // a comes first diff --git a/src/client/views/collections/CollectionCardDeckView.scss b/src/client/views/collections/CollectionCardDeckView.scss index a089b248d..cc797d0bd 100644 --- a/src/client/views/collections/CollectionCardDeckView.scss +++ b/src/client/views/collections/CollectionCardDeckView.scss @@ -6,6 +6,15 @@ position: relative; background-color: white; overflow: hidden; + + button { + width: 35px; + height: 35px; + border-radius: 50%; + background-color: $dark-gray; + // border-color: $medium-blue; + margin: 5px; // transform: translateY(-50px); + } } .card-wrapper { @@ -34,15 +43,6 @@ justify-content: start; /* Centers buttons horizontally */ } -button { - width: 35px; - height: 35px; - border-radius: 50%; - background-color: $dark-gray; - // border-color: $medium-blue; - margin: 5px; // transform: translateY(-50px); -} - // button:hover { // transform: translateY(-50px); // } diff --git a/src/client/views/nodes/calendarBox/CalendarBox.scss b/src/client/views/nodes/calendarBox/CalendarBox.scss new file mode 100644 index 000000000..8eee47e42 --- /dev/null +++ b/src/client/views/nodes/calendarBox/CalendarBox.scss @@ -0,0 +1,18 @@ +.calendarBox { + display: flex; + width: 100%; + height: 100%; + .calendarBox-wrapper { + width: 100%; + height: 100%; + .fc-col-header { + width: 100% !important; + } + .fc-daygrid-body { + width: 100% !important; + .fc-scrollgrid-sync-table { + width: 100% !important; + } + } + } +} diff --git a/src/client/views/nodes/calendarBox/CalendarBox.tsx b/src/client/views/nodes/calendarBox/CalendarBox.tsx index bd66941c3..ca35d85b3 100644 --- a/src/client/views/nodes/calendarBox/CalendarBox.tsx +++ b/src/client/views/nodes/calendarBox/CalendarBox.tsx @@ -1,16 +1,17 @@ import { Calendar, EventSourceInput } from '@fullcalendar/core'; import dayGridPlugin from '@fullcalendar/daygrid'; import multiMonthPlugin from '@fullcalendar/multimonth'; -import { makeObservable } from 'mobx'; +import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { dateRangeStrToDates } from '../../../../ClientUtils'; -import { Doc } from '../../../../fields/Doc'; -import { StrCast } from '../../../../fields/Types'; +import { Doc, DocListCast } from '../../../../fields/Doc'; +import { NumCast, StrCast } from '../../../../fields/Types'; import { DocumentType } from '../../../documents/DocumentTypes'; import { Docs } from '../../../documents/Documents'; import { ViewBoxBaseComponent } from '../../DocComponent'; import { FieldView, FieldViewProps } from '../FieldView'; +import './CalendarBox.scss'; type CalendarView = 'month' | 'multi-month' | 'week'; @@ -20,108 +21,135 @@ export class CalendarBox extends ViewBoxBaseComponent() { return FieldView.LayoutString(CalendarBox, fieldKey); } + _calendarRef: HTMLDivElement | null = null; + _calendar: Calendar | undefined; + _oldWheel: HTMLElement | null = null; + _observer: ResizeObserver | undefined; + constructor(props: FieldViewProps) { super(props); makeObservable(this); } - componentDidMount(): void {} + @observable _multiMonth = 0; - componentWillUnmount(): void {} + componentDidMount(): void { + reaction( + () => this.calendarEvents, + events => { + this._calendar?.setOption('events', events); + }, + { fireImmediately: true } + ); + } - _calendarRef = React.createRef(); + @computed get calendarEvents(): EventSourceInput | undefined { + return this.childDocs.map(doc => { + const { startDate: start, endDate: end } = dateRangeStrToDates(StrCast(doc.date_range)); + + return { + title: StrCast(doc.title), + start, + end, + startEditable: true, + endEditable: true, + allDay: false, + classNames: ['mother'], // will determine the style + editable: true, // subject to change in the future + backgroundColor: this.eventToColor(doc), + color: 'white', + extendedProps: { + description: StrCast(doc.description), + }, + }; + }); + } - get dateRangeStr() { - return StrCast(this.Document.date_range); + @computed get dateRangeStrDates() { + return dateRangeStrToDates(StrCast(this.Document.date_range)); } // Choose a calendar view based on the date range - get calendarViewType(): CalendarView { - const [fromDate, toDate] = dateRangeStrToDates(this.dateRangeStr); + @computed get calendarViewType(): CalendarView { + const { startDate, endDate } = this.dateRangeStrDates; - if (fromDate.getFullYear() !== toDate.getFullYear() || fromDate.getMonth() !== toDate.getMonth()) return 'multi-month'; + if (startDate.getFullYear() !== endDate.getFullYear() || startDate.getMonth() !== endDate.getMonth()) return 'multi-month'; - if (Math.abs(fromDate.getDay() - toDate.getDay()) > 7) return 'month'; + if (Math.abs(startDate.getDay() - endDate.getDay()) > 7) return 'month'; return 'week'; } - - get calendarStartDate() { - return this.dateRangeStr.split('|')[0]; - } - - get calendarToDate() { - return this.dateRangeStr.split('|')[1]; + @computed get childDocs() { + return DocListCast(this.dataDoc[this.fieldKey]); } - get childDocs(): Doc[] { - return this.childDocs; // get all sub docs for a calendar - } - - docBackgroundColor(type: string): string { + eventToColor(event: Doc): string { // TODO: Return a different color based on the event type - console.log(type); + console.log(event.title); return 'blue'; } - get calendarEvents(): EventSourceInput | undefined { - if (this.childDocs.length === 0) return undefined; - return this.childDocs.map(doc => { - const docTitle = StrCast(doc.title); - const docDateRange = StrCast(doc.date_range); - const [startDate, endDate] = dateRangeStrToDates(docDateRange); - const docType = doc.type; - const docDescription = doc.description ? StrCast(doc.description) : ''; - - return { - title: docTitle, - start: startDate, - end: endDate, - allDay: false, - classNames: [StrCast(docType)], // will determine the style - editable: false, // subject to change in the future - backgroundColor: this.docBackgroundColor(StrCast(doc.type)), - color: 'white', - extendedProps: { - description: docDescription, - }, - }; - }); - } - handleEventClick = (/* arg: EventClickArg */) => { // TODO: open popover with event description, option to open CalendarManager and change event date, delete event, etc. }; - calendarEl: HTMLElement = document.getElementById('calendar-box-v1')!; - // https://fullcalendar.io - get calendar() { - return new Calendar(this.calendarEl, { - plugins: [this.calendarViewType === 'multi-month' ? multiMonthPlugin : dayGridPlugin], - headerToolbar: { - left: 'prev,next today', - center: 'title', - right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek', - }, - initialDate: this.calendarStartDate, - navLinks: true, - editable: false, - displayEventTime: false, - displayEventEnd: false, - events: this.calendarEvents, - eventClick: this.handleEventClick, - }); - } + renderCalendar = () => { + const cal = !this._calendarRef + ? null + : (this._calendar = new Calendar(this._calendarRef, { + plugins: [multiMonthPlugin, dayGridPlugin], + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth multiMonth', // timeGridWeek timeGridDay listWeek', + }, + initialDate: this.dateRangeStrDates.startDate, + navLinks: true, + editable: false, + displayEventTime: false, + displayEventEnd: false, + aspectRatio: NumCast(this.Document.width) / NumCast(this.Document.height), + events: this.calendarEvents, + eventClick: this.handleEventClick, + })); + cal?.render(); + }; + onPassiveWheel = (e: WheelEvent) => e.stopPropagation(); render() { + this._multiMonth; return ( -
-
+
+ setTimeout(() => { + if ((e.nativeEvent.target as HTMLButtonElement)?.className?.includes('multiMonth-button')) { + this._multiMonth = this._multiMonth + 1; + } + }) + )} + ref={r => { + this._oldWheel?.removeEventListener('wheel', this.onPassiveWheel); + this._oldWheel = r; + // prevent wheel events from passively propagating up through containers and prevents containers from preventDefault which would block scrolling + r?.addEventListener('wheel', this.onPassiveWheel, { passive: false }); + + if (r) { + this._observer?.disconnect(); + (this._observer = new ResizeObserver(() => { + this._calendar?.setOption('aspectRatio', NumCast(this.Document.width) / NumCast(this.Document.height)); + this._calendar?.updateSize(); + })).observe(r); + this.renderCalendar(); + } + }}> +
(this._calendarRef = r)} />
); } } Docs.Prototypes.TemplateMap.set(DocumentType.CALENDAR, { layout: { view: CalendarBox, dataField: 'data' }, - options: { acl: '' }, + options: { acl: '', _layout_nativeDimEditable: true, _layout_reflowHorizontal: true, _layout_reflowVertical: true }, }); -- cgit v1.2.3-70-g09d2 From a5ac17898151df59c748547acbcb0d2ac63d357d Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 13:21:52 -0400 Subject: start of conversion of Calendar into a CollectionView --- src/client/documents/DocumentTypes.ts | 1 - src/client/documents/Documents.ts | 14 +++++++++----- src/client/util/CurrentUserUtils.ts | 2 +- src/client/views/DashboardView.tsx | 2 +- src/client/views/collections/CollectionView.tsx | 4 +++- src/client/views/nodes/calendarBox/CalendarBox.tsx | 16 +++------------- 6 files changed, 17 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/client/documents/DocumentTypes.ts b/src/client/documents/DocumentTypes.ts index b055546fc..56d505681 100644 --- a/src/client/documents/DocumentTypes.ts +++ b/src/client/documents/DocumentTypes.ts @@ -39,7 +39,6 @@ export enum DocumentType { COMPARISON = 'comparison', PUSHPIN = 'pushpin', MAPROUTE = 'maproute', - CALENDAR = 'calendar', SCRIPTDB = 'scriptdb', // database of scripts GROUPDB = 'groupdb', // database of groups diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 1acc6bb46..d5a7b0465 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -913,7 +913,15 @@ export namespace Docs { } export function CalendarDocument(options: DocumentOptions, documents: Array) { - return InstanceFromProto(Prototypes.get(DocumentType.CALENDAR), new List(documents), { ...options }); + const inst = InstanceFromProto(Prototypes.get(DocumentType.COL), new List(documents), { + _layout_nativeDimEditable: true, + _layout_reflowHorizontal: true, + _layout_reflowVertical: true, + ...options, + _type_collection: CollectionViewType.Calendar, + }); + documents.forEach(d => Doc.SetContainer(d, inst)); + return inst; } // shouldn't ever need to create a KVP document-- instead set the LayoutTemplateString to be a KeyValueBox for the DocumentView (see addDocTab in TabDocView) @@ -970,10 +978,6 @@ export namespace Docs { return doc; } - export function CalendarCollectionDocument(documents: Array, options: DocumentOptions) { - return InstanceFromProto(Prototypes.get(DocumentType.COL), new List(documents), { ...options, _type_collection: CollectionViewType.Calendar }); - } - export function StackingDocument(documents: Array, options: DocumentOptions, id?: string, protoId?: string) { return InstanceFromProto(Prototypes.get(DocumentType.COL), new List(documents), { ...options, _type_collection: CollectionViewType.Stacking }, id, undefined, protoId); } diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 14fb65252..f042f33ce 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -787,7 +787,7 @@ pie title Minerals in my tap water CollectionViewType.Stacking, CollectionViewType.Masonry, CollectionViewType.Multicolumn, CollectionViewType.Multirow, CollectionViewType.Time, CollectionViewType.Carousel, CollectionViewType.Carousel3D, CollectionViewType.Card, CollectionViewType.Linear, CollectionViewType.Map, - CollectionViewType.Grid, CollectionViewType.NoteTaking, ]), + CollectionViewType.Calendar, CollectionViewType.Grid, CollectionViewType.NoteTaking, ]), title: "Perspective", toolTip: "View", btnType: ButtonType.DropdownList, ignoreClick: true, width: 100, scripts: { script: '{ return setView(value, _readOnly_); }'}}, { title: "Pin", icon: "map-pin", toolTip: "Pin View to Trail", btnType: ButtonType.ClickButton, expertMode: false, width: 30, scripts: { onClick: 'pinWithView(altKey)'}, funcs: {hidden: "IsNoneSelected()"}}, { title: "Header", icon: "heading", toolTip: "Doc Titlebar Color", btnType: ButtonType.ColorButton, expertMode: false, ignoreClick: true, scripts: { script: 'return setHeaderColor(value, _readOnly_)'} }, diff --git a/src/client/views/DashboardView.tsx b/src/client/views/DashboardView.tsx index 33e905a54..eced64524 100644 --- a/src/client/views/DashboardView.tsx +++ b/src/client/views/DashboardView.tsx @@ -465,7 +465,7 @@ export class DashboardView extends ObservableReactComponent { isSystem: true, layout_explainer: 'All of the calendars that you have created will appear here.', }; - const myCalendars = DocUtils.AssignScripts(Docs.Create.CalendarCollectionDocument([], reqdOpts)); + const myCalendars = DocUtils.AssignScripts(Docs.Create.StackingDocument([], reqdOpts)); // { treeView_ChildDoubleClick: 'openPresentation(documentView.rootDoc)' } return new PrefetchProxy(myCalendars); } diff --git a/src/client/views/collections/CollectionView.tsx b/src/client/views/collections/CollectionView.tsx index ab93abab6..c9e934448 100644 --- a/src/client/views/collections/CollectionView.tsx +++ b/src/client/views/collections/CollectionView.tsx @@ -34,6 +34,7 @@ import { CollectionLinearView } from './collectionLinear'; import { CollectionMulticolumnView } from './collectionMulticolumn/CollectionMulticolumnView'; import { CollectionMultirowView } from './collectionMulticolumn/CollectionMultirowView'; import { CollectionSchemaView } from './collectionSchema/CollectionSchemaView'; +import { CalendarBox } from '../nodes/calendarBox/CalendarBox'; @observer export class CollectionView extends ViewBoxAnnotatableComponent() { @@ -91,7 +92,7 @@ export class CollectionView extends ViewBoxAnnotatableComponent; - case CollectionViewType.Calendar: return ; + case CollectionViewType.Calendar: return ; case CollectionViewType.Docking: return ; case CollectionViewType.Tree: return ; case CollectionViewType.Multicolumn: return ; @@ -126,6 +127,7 @@ export class CollectionView extends ViewBoxAnnotatableComponent func(CollectionViewType.Masonry), icon: 'columns' }, { description: 'Carousel', event: () => func(CollectionViewType.Carousel), icon: 'columns' }, { description: '3D Carousel', event: () => func(CollectionViewType.Carousel3D), icon: 'columns' }, + { description: 'Calendar', event: () => func(CollectionViewType.Calendar), icon: 'columns' }, { description: 'Pivot/Time', event: () => func(CollectionViewType.Time), icon: 'columns' }, { description: 'Map', event: () => func(CollectionViewType.Map), icon: 'globe-americas' }, { description: 'Grid', event: () => func(CollectionViewType.Grid), icon: 'th-list' }, diff --git a/src/client/views/nodes/calendarBox/CalendarBox.tsx b/src/client/views/nodes/calendarBox/CalendarBox.tsx index ca35d85b3..20650d648 100644 --- a/src/client/views/nodes/calendarBox/CalendarBox.tsx +++ b/src/client/views/nodes/calendarBox/CalendarBox.tsx @@ -12,21 +12,18 @@ import { Docs } from '../../../documents/Documents'; import { ViewBoxBaseComponent } from '../../DocComponent'; import { FieldView, FieldViewProps } from '../FieldView'; import './CalendarBox.scss'; +import { CollectionSubView, SubCollectionViewProps } from '../../collections/CollectionSubView'; type CalendarView = 'month' | 'multi-month' | 'week'; @observer -export class CalendarBox extends ViewBoxBaseComponent() { - public static LayoutString(fieldKey: string = 'calendar') { - return FieldView.LayoutString(CalendarBox, fieldKey); - } - +export class CalendarBox extends CollectionSubView() { _calendarRef: HTMLDivElement | null = null; _calendar: Calendar | undefined; _oldWheel: HTMLElement | null = null; _observer: ResizeObserver | undefined; - constructor(props: FieldViewProps) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } @@ -78,9 +75,6 @@ export class CalendarBox extends ViewBoxBaseComponent() { if (Math.abs(startDate.getDay() - endDate.getDay()) > 7) return 'month'; return 'week'; } - @computed get childDocs() { - return DocListCast(this.dataDoc[this.fieldKey]); - } eventToColor(event: Doc): string { // TODO: Return a different color based on the event type @@ -149,7 +143,3 @@ export class CalendarBox extends ViewBoxBaseComponent() { ); } } -Docs.Prototypes.TemplateMap.set(DocumentType.CALENDAR, { - layout: { view: CalendarBox, dataField: 'data' }, - options: { acl: '', _layout_nativeDimEditable: true, _layout_reflowHorizontal: true, _layout_reflowVertical: true }, -}); -- cgit v1.2.3-70-g09d2 From 48e9246839d8491e1c40632851980527b8a4dbdd Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 13:22:42 -0400 Subject: warning fix --- src/client/views/nodes/FontIconBox/FontIconBox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.tsx b/src/client/views/nodes/FontIconBox/FontIconBox.tsx index f2f7f39bb..7a09ad9e2 100644 --- a/src/client/views/nodes/FontIconBox/FontIconBox.tsx +++ b/src/client/views/nodes/FontIconBox/FontIconBox.tsx @@ -345,7 +345,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { @computed get editableText() { const script = ScriptCast(this.Document.script); - const checkResult = script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result; + const checkResult = script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result as string; const setValue = (value: string) => script?.script.run({ this: this.Document, value, _readOnly_: false }).result as boolean; -- cgit v1.2.3-70-g09d2 From c674b67913ecfae6f99749db411d39f8f0d5b164 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 15:16:13 -0400 Subject: calendar fixes --- package-lock.json | 30 +++++++++++++++++++--- package.json | 1 + .../views/nodes/calendarBox/CalendarBox.scss | 6 +++++ src/client/views/nodes/calendarBox/CalendarBox.tsx | 25 +++++++++--------- 4 files changed, 45 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 95a90c956..735db29ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "@fullcalendar/core": "^6.1.10", "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/multimonth": "^6.1.10", + "@fullcalendar/timegrid": "^6.1.15", "@internationalized/date": "^3.5.0", "@mui/icons-material": "^6.0.1", "@mui/material": "^6.0.1", @@ -2921,6 +2922,17 @@ "@fullcalendar/core": "~6.1.15" } }, + "node_modules/@fullcalendar/timegrid": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.15.tgz", + "integrity": "sha512-61ORr3A148RtxQ2FNG7JKvacyA/TEVZ7z6I+3E9Oeu3dqTf6M928bFcpehRTIK6zIA6Yifs7BeWHgOE9dFnpbw==", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.15" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, "node_modules/@googlemaps/js-api-loader": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.2.tgz", @@ -18926,6 +18938,14 @@ "node": ">= 12.20" } }, + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, "node_modules/formidable": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", @@ -33427,11 +33447,13 @@ } }, "node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0.tgz", + "integrity": "sha512-0zJXHRAYEjM2tUfZ2DiSOHAa2aw1tisnnhU3ufD57R8iefL+DcdJyRBRyJpG+NUimDgbTI/lH+gAE1PAvV3Cgw==", + "optional": true, + "peer": true, "engines": { - "node": ">= 14" + "node": ">= 8" } }, "node_modules/webidl-conversions": { diff --git a/package.json b/package.json index 11c299f7d..6254b443a 100644 --- a/package.json +++ b/package.json @@ -104,6 +104,7 @@ "@fullcalendar/core": "^6.1.10", "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/multimonth": "^6.1.10", + "@fullcalendar/timegrid": "^6.1.15", "@internationalized/date": "^3.5.0", "@mui/icons-material": "^6.0.1", "@mui/material": "^6.0.1", diff --git a/src/client/views/nodes/calendarBox/CalendarBox.scss b/src/client/views/nodes/calendarBox/CalendarBox.scss index 8eee47e42..df6ce3e64 100644 --- a/src/client/views/nodes/calendarBox/CalendarBox.scss +++ b/src/client/views/nodes/calendarBox/CalendarBox.scss @@ -5,6 +5,12 @@ .calendarBox-wrapper { width: 100%; height: 100%; + .fc-timegrid-body { + width: 100% !important; + table { + width: 100% !important; + } + } .fc-col-header { width: 100% !important; } diff --git a/src/client/views/nodes/calendarBox/CalendarBox.tsx b/src/client/views/nodes/calendarBox/CalendarBox.tsx index 20650d648..0d50f3382 100644 --- a/src/client/views/nodes/calendarBox/CalendarBox.tsx +++ b/src/client/views/nodes/calendarBox/CalendarBox.tsx @@ -1,18 +1,15 @@ import { Calendar, EventSourceInput } from '@fullcalendar/core'; import dayGridPlugin from '@fullcalendar/daygrid'; import multiMonthPlugin from '@fullcalendar/multimonth'; -import { action, computed, makeObservable, observable, reaction } from 'mobx'; +import timeGrid from '@fullcalendar/timegrid'; +import { IReactionDisposer, action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { dateRangeStrToDates } from '../../../../ClientUtils'; -import { Doc, DocListCast } from '../../../../fields/Doc'; +import { Doc } from '../../../../fields/Doc'; import { NumCast, StrCast } from '../../../../fields/Types'; -import { DocumentType } from '../../../documents/DocumentTypes'; -import { Docs } from '../../../documents/Documents'; -import { ViewBoxBaseComponent } from '../../DocComponent'; -import { FieldView, FieldViewProps } from '../FieldView'; -import './CalendarBox.scss'; import { CollectionSubView, SubCollectionViewProps } from '../../collections/CollectionSubView'; +import './CalendarBox.scss'; type CalendarView = 'month' | 'multi-month' | 'week'; @@ -22,6 +19,7 @@ export class CalendarBox extends CollectionSubView() { _calendar: Calendar | undefined; _oldWheel: HTMLElement | null = null; _observer: ResizeObserver | undefined; + _eventsDisposer: IReactionDisposer | undefined; constructor(props: SubCollectionViewProps) { super(props); @@ -31,14 +29,15 @@ export class CalendarBox extends CollectionSubView() { @observable _multiMonth = 0; componentDidMount(): void { - reaction( + this._eventsDisposer = reaction( () => this.calendarEvents, - events => { - this._calendar?.setOption('events', events); - }, + events => this._calendar?.setOption('events', events), { fireImmediately: true } ); } + componentWillUnmount(): void { + this._eventsDisposer?.(); + } @computed get calendarEvents(): EventSourceInput | undefined { return this.childDocs.map(doc => { @@ -91,11 +90,11 @@ export class CalendarBox extends CollectionSubView() { const cal = !this._calendarRef ? null : (this._calendar = new Calendar(this._calendarRef, { - plugins: [multiMonthPlugin, dayGridPlugin], + plugins: [multiMonthPlugin, dayGridPlugin, timeGrid], headerToolbar: { left: 'prev,next today', center: 'title', - right: 'dayGridMonth multiMonth', // timeGridWeek timeGridDay listWeek', + right: 'multiMonth,dayGridMonth,timeGridWeek,timeGridDay', }, initialDate: this.dateRangeStrDates.startDate, navLinks: true, -- cgit v1.2.3-70-g09d2 From df5217eea01b6ee3ce03ceede030306d05f19c58 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 17:48:13 -0400 Subject: updated calendars to support times of events and to render evdnts at the correct time. --- src/ClientUtils.ts | 9 ++- src/client/util/DocumentManager.ts | 4 +- src/client/views/nodes/calendarBox/CalendarBox.tsx | 85 ++++++++++++++++------ 3 files changed, 69 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index 51ad55c07..d149c2eae 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -651,18 +651,21 @@ export function dateRangeStrToDates(dateStr: string) { // dateStr in yyyy-mm-dd format const dateRangeParts = dateStr.split('|'); // splits into from and to date if (dateRangeParts.length < 2) return { startDate: new Date(), endDate: new Date() }; + return { startDate: new Date(dateRangeParts[0]), endDate: new Date(dateRangeParts[1]) }; const fromParts = dateRangeParts[0].split('-'); const toParts = dateRangeParts[1].split('-'); const fromYear = parseInt(fromParts[0]); const fromMonth = parseInt(fromParts[1]) - 1; - const fromDay = parseInt(fromParts[2]); + const fromDay = parseInt(fromParts[2]?.split('T')[0]); + const fromHour = parseInt(fromParts[2]?.split('T')[1]?.split(':')[0] || '12'); const toYear = parseInt(toParts[0]); const toMonth = parseInt(toParts[1]) - 1; - const toDay = parseInt(toParts[2]); + const toDay = parseInt(toParts[2]?.split('T')[0]); + const toHour = parseInt(fromParts[2]?.split('T')[1]?.split(':')[0] || '12'); - return { startDate: new Date(fromYear, fromMonth, fromDay), endDate: new Date(toYear, toMonth, toDay) }; + return { startDate: new Date(fromYear, fromMonth, fromDay, fromHour), endDate: new Date(toYear, toMonth, toDay, toHour) }; } function replaceCanvases(oldDiv: HTMLElement, newDiv: HTMLElement) { diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts index 83b83240e..5ae292760 100644 --- a/src/client/util/DocumentManager.ts +++ b/src/client/util/DocumentManager.ts @@ -269,8 +269,8 @@ export class DocumentManager { if (options.openLocation?.includes(OpenWhere.lightbox)) { // even if we found the document view, if the target is a lightbox, we try to open it in the lightbox to preserve lightbox semantics (eg, there's only one active doc in the lightbox) const target = DocCast(targetDoc.annotationOn, targetDoc); - const contextView = this.getDocumentView(DocCast(target.embedContainer)); - if (contextView?.ComponentView?.addDocTab?.(target, options.openLocation)) { + const compView = this.getDocumentView(DocCast(target.embedContainer))?.ComponentView; + if ((compView?.addDocTab ?? compView?._props.addDocTab)?.(target, options.openLocation)) { await new Promise(waitres => { setTimeout(() => waitres()); }); diff --git a/src/client/views/nodes/calendarBox/CalendarBox.tsx b/src/client/views/nodes/calendarBox/CalendarBox.tsx index 0d50f3382..9452cc10a 100644 --- a/src/client/views/nodes/calendarBox/CalendarBox.tsx +++ b/src/client/views/nodes/calendarBox/CalendarBox.tsx @@ -1,4 +1,4 @@ -import { Calendar, EventSourceInput } from '@fullcalendar/core'; +import { Calendar, EventClickArg, EventSourceInput } from '@fullcalendar/core'; import dayGridPlugin from '@fullcalendar/daygrid'; import multiMonthPlugin from '@fullcalendar/multimonth'; import timeGrid from '@fullcalendar/timegrid'; @@ -7,11 +7,17 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { dateRangeStrToDates } from '../../../../ClientUtils'; import { Doc } from '../../../../fields/Doc'; -import { NumCast, StrCast } from '../../../../fields/Types'; +import { BoolCast, NumCast, StrCast } from '../../../../fields/Types'; import { CollectionSubView, SubCollectionViewProps } from '../../collections/CollectionSubView'; import './CalendarBox.scss'; +import { Id } from '../../../../fields/FieldSymbols'; +import { DocServer } from '../../../DocServer'; +import { DocumentView } from '../DocumentView'; +import { OpenWhere } from '../OpenWhere'; +import { DragManager } from '../../../util/DragManager'; +import { DocData } from '../../../../fields/DocSymbols'; -type CalendarView = 'month' | 'multi-month' | 'week'; +type CalendarView = 'multiMonth' | 'dayGridMonth' | 'timeGridWeek' | 'timeGridDay'; @observer export class CalendarBox extends CollectionSubView() { @@ -27,8 +33,10 @@ export class CalendarBox extends CollectionSubView() { } @observable _multiMonth = 0; + isMultiMonth: boolean | undefined; componentDidMount(): void { + this._props.setContentViewBox?.(this); this._eventsDisposer = reaction( () => this.calendarEvents, events => this._calendar?.setOption('events', events), @@ -42,14 +50,14 @@ export class CalendarBox extends CollectionSubView() { @computed get calendarEvents(): EventSourceInput | undefined { return this.childDocs.map(doc => { const { startDate: start, endDate: end } = dateRangeStrToDates(StrCast(doc.date_range)); - return { title: StrCast(doc.title), start, end, + groupId: doc[Id], startEditable: true, endEditable: true, - allDay: false, + allDay: BoolCast(doc.allDay), classNames: ['mother'], // will determine the style editable: true, // subject to change in the future backgroundColor: this.eventToColor(doc), @@ -67,22 +75,40 @@ export class CalendarBox extends CollectionSubView() { // Choose a calendar view based on the date range @computed get calendarViewType(): CalendarView { + if (this.dataDoc[this.fieldKey + '_calendarType']) return StrCast(this.dataDoc[this.fieldKey + '_calendarType']) as CalendarView; + if (this.isMultiMonth) return 'multiMonth'; const { startDate, endDate } = this.dateRangeStrDates; - - if (startDate.getFullYear() !== endDate.getFullYear() || startDate.getMonth() !== endDate.getMonth()) return 'multi-month'; - - if (Math.abs(startDate.getDay() - endDate.getDay()) > 7) return 'month'; - return 'week'; + if (startDate.getFullYear() !== endDate.getFullYear() || startDate.getMonth() !== endDate.getMonth()) return 'multiMonth'; + if (Math.abs(startDate.getDay() - endDate.getDay()) > 7) return 'dayGridMonth'; + return 'timeGridWeek'; } + // TODO: Return a different color based on the event type eventToColor(event: Doc): string { - // TODO: Return a different color based on the event type - console.log(event.title); return 'blue'; } - handleEventClick = (/* arg: EventClickArg */) => { - // TODO: open popover with event description, option to open CalendarManager and change event date, delete event, etc. + internalDocDrop(e: Event, de: DragManager.DropEvent, docDragData: DragManager.DocumentDragData) { + if (!super.onInternalDrop(e, de)) return false; + de.complete.docDragData?.droppedDocuments.forEach(doc => { + const today = new Date().toISOString(); + if (!doc.date_range) doc[DocData].date_range = `${today}|${today}`; + }); + return true; + } + + onInternalDrop = (e: Event, de: DragManager.DropEvent): boolean => { + if (de.complete.docDragData?.droppedDocuments.length) return this.internalDocDrop(e, de, de.complete.docDragData); + return false; + }; + + handleEventClick = (arg: EventClickArg) => { + const doc = DocServer.GetCachedRefField(arg.event._def.groupId ?? ''); + DocumentView.DeselectAll(); + if (doc) { + DocumentView.showDocument(doc, { openLocation: OpenWhere.lightboxAlways }); + arg.jsEvent.stopPropagation(); + } }; // https://fullcalendar.io @@ -94,8 +120,9 @@ export class CalendarBox extends CollectionSubView() { headerToolbar: { left: 'prev,next today', center: 'title', - right: 'multiMonth,dayGridMonth,timeGridWeek,timeGridDay', + right: 'multiMonth dayGridMonth timeGridWeek timeGridDay', }, + initialView: this.calendarViewType === 'multiMonth' ? undefined : this.calendarViewType, initialDate: this.dateRangeStrDates.startDate, navLinks: true, editable: false, @@ -110,19 +137,29 @@ export class CalendarBox extends CollectionSubView() { onPassiveWheel = (e: WheelEvent) => e.stopPropagation(); render() { - this._multiMonth; return (
- setTimeout(() => { - if ((e.nativeEvent.target as HTMLButtonElement)?.className?.includes('multiMonth-button')) { - this._multiMonth = this._multiMonth + 1; - } - }) - )} + onPointerDown={e => + setTimeout( + action(() => { + const cname = (e.nativeEvent.target as HTMLButtonElement)?.className ?? ''; + if (cname.includes('multiMonth')) this.dataDoc[this.fieldKey + '_calendarType'] = 'multiMonth'; + if (cname.includes('dayGridMonth')) this.dataDoc[this.fieldKey + '_calendarType'] = 'dayGridMonth'; + if (cname.includes('timeGridWeek')) this.dataDoc[this.fieldKey + '_calendarType'] = 'timeGridWeek'; + if (cname.includes('timeGridDay')) this.dataDoc[this.fieldKey + '_calendarType'] = 'timeGridDay'; + }) + ) + } + style={{ + width: this._props.PanelWidth() / this._props.ScreenToLocalTransform().Scale, + height: this._props.PanelHeight() / this._props.ScreenToLocalTransform().Scale, + transform: `scale(${this._props.ScreenToLocalTransform().Scale})`, + transformOrigin: 'top left', + }} ref={r => { + this.createDashEventsTarget(r); this._oldWheel?.removeEventListener('wheel', this.onPassiveWheel); this._oldWheel = r; // prevent wheel events from passively propagating up through containers and prevents containers from preventDefault which would block scrolling -- cgit v1.2.3-70-g09d2 From 9014cc474a039f0daef6cc0ee2011329da7703ac Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 4 Sep 2024 22:58:40 -0400 Subject: more fixes for calendarBox to preserve selection when view changes. --- package-lock.json | 488 +++++++++++---------- package.json | 3 +- src/ClientUtils.ts | 22 +- .../views/collections/CollectionCalendarView.tsx | 4 +- .../views/nodes/calendarBox/CalendarBox.scss | 1 + src/client/views/nodes/calendarBox/CalendarBox.tsx | 56 ++- 6 files changed, 311 insertions(+), 263 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index 735db29ae..fabc6d90a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@fortawesome/free-regular-svg-icons": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@fullcalendar/core": "^6.1.10", + "@fullcalendar/core": "^6.1.15", "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/multimonth": "^6.1.10", "@fullcalendar/timegrid": "^6.1.15", @@ -115,6 +115,7 @@ "fork-ts-checker-webpack-plugin": "^9.0.2", "form-data": "^4.0.0", "formidable": "3.5.1", + "fullcalendar": "^6.1.15", "function-plot": "^1.23.3", "golden-layout": "^2.6.0", "google-auth-library": "^9.4.1", @@ -2911,6 +2912,22 @@ "@fullcalendar/core": "~6.1.15" } }, + "node_modules/@fullcalendar/interaction": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.15.tgz", + "integrity": "sha512-DOTSkofizM7QItjgu7W68TvKKvN9PSEEvDJceyMbQDvlXHa7pm/WAVtAc6xSDZ9xmB1QramYoWGLHkCYbTW1rQ==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, + "node_modules/@fullcalendar/list": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.15.tgz", + "integrity": "sha512-U1bce04tYDwkFnuVImJSy2XalYIIQr6YusOWRPM/5ivHcJh67Gm8CIMSWpi3KdRSNKFkqBxLPkfZGBMaOcJYug==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, "node_modules/@fullcalendar/multimonth": { "version": "6.1.15", "resolved": "https://registry.npmjs.org/@fullcalendar/multimonth/-/multimonth-6.1.15.tgz", @@ -3167,13 +3184,13 @@ } }, "node_modules/@jimp/core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.2.0.tgz", - "integrity": "sha512-omuAP/bmi45UUs76KE9hCfLOHT7+abvkcbOEUG267/sCVA19d1W2Ta78p3KNry23LSfFlvokGYFlO9tuvVdYiA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.3.0.tgz", + "integrity": "sha512-3+ndSrQYQxyyKyUSdXyk29vHt9vc3zg+3aFrVX2RHzAMeLdjkQHqzQc/7v6VxRk6BtOh1v/VPtmsXHXVg1vVhA==", "dependencies": { - "@jimp/file-ops": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/file-ops": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "await-to-js": "^3.0.0", "exif-parser": "^0.1.12", "file-type": "^16.0.0", @@ -3184,13 +3201,13 @@ } }, "node_modules/@jimp/diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.2.0.tgz", - "integrity": "sha512-Ln7smOEt/v68X+kduzGfIw+9D4tzXtMeWVP+y6unVma9TConssvuUDKknV/lPw7tsktPoMLtL3zJA+TRJ7+JHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.3.0.tgz", + "integrity": "sha512-eGFfZi8UjSZ6gGu9kpQmGPRRDt5fMV3V1qKRn0cTqtBsECAnKPG5PPT1dvnjDDBbtAOH81jhIr//ko8H5WV8jg==", "dependencies": { - "@jimp/plugin-resize": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/plugin-resize": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "pixelmatch": "^5.3.0" }, "engines": { @@ -3198,21 +3215,21 @@ } }, "node_modules/@jimp/file-ops": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.2.0.tgz", - "integrity": "sha512-LUipYM3d9OiccVfBGQ7TGzb/X++1ME2Rgbt/UhGPK32/iA1w+sW/edczXGJAG4Q+3PzTMXKir5znPNXL+dlOpw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.3.0.tgz", + "integrity": "sha512-DzbSLgUdOGT9T9qf+Ik/hBA8e4zA9tWyHnJJA/N9sJHwHNDCMtoaX3KY5ssHuRGmcngGKLwbeGjddnZXF4oIVA==", "engines": { "node": ">=18" } }, "node_modules/@jimp/js-bmp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.2.0.tgz", - "integrity": "sha512-3JF++37nVK+V4mf7MMT5dUOf88GrcEoMt9/0fN1+gEF6EkjS7tAcx3cSInMa8geurZipsfY71XL7WTi/y8hziA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.3.0.tgz", + "integrity": "sha512-sc3jvJJOMHoUtP9mlnuBCkwhHy9T2KiSfdV3XKg81v+bg9O0LudB33v3Y0dtGxSo/WOL2V6PVNIWTRf7gu+hJw==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "bmp-ts": "^1.0.9" }, "engines": { @@ -3220,12 +3237,12 @@ } }, "node_modules/@jimp/js-gif": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.2.0.tgz", - "integrity": "sha512-7OV8ph3rGzOJ6nSQv7+m8fyIeeshg5b1h6hlD18dCO7qamPnJdc2M5+of1Fte2D7qDL8Az2vT6vgKPP05O/HHg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.3.0.tgz", + "integrity": "sha512-hhAd/TpZSp6AIuRjYKFGGEsu9HzQG16Q9lZHPcTZz1TlxtTUqW60AJvFrGvnUZbTecDj3JnI3TipX8aeqZpBDg==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", "gifwrap": "^0.10.1", "omggif": "^1.0.10" }, @@ -3234,12 +3251,12 @@ } }, "node_modules/@jimp/js-jpeg": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.2.0.tgz", - "integrity": "sha512-7YYl8jEHCTX2XVjUZJOHAROFDHmx8diM+fEMgGhM4teOAKNM5xVDXSnC16h/qyspHqgDDQgI16gszmo6MF3W4Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.3.0.tgz", + "integrity": "sha512-SrZL35FvKsgySS5kpqYWbVsi0rswcgxw3oRTVOy55q8F045fE4U0YqlnRdkg77dxdahUOIWVhvn5+0V+Re5F5A==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", "jpeg-js": "^0.4.4" }, "engines": { @@ -3247,12 +3264,12 @@ } }, "node_modules/@jimp/js-png": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.2.0.tgz", - "integrity": "sha512-toW5aqFH/alybkP2IZSLHa18O5lpwJpB5JqNQEYT1KU30V/czyUdpznlCV50PVXHZnQbb48MKJzfpLqj0O7KBA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.3.0.tgz", + "integrity": "sha512-9x8uFueVupNocQQ5WEFat61M31MdRDV7O3QBDR2iEsbVeQ1+LE9Tvvm9r1PG9W91KZYzG4IYPPsogQ0TFEixqA==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", "pngjs": "^7.0.0" }, "engines": { @@ -3260,12 +3277,12 @@ } }, "node_modules/@jimp/js-tiff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.2.0.tgz", - "integrity": "sha512-RhXqdkB7lhpCW9uKVXmLhFI+Inpj7CcP8GNMMWpPcYaWw8aGUqZjgdy/81nudIdXmvk4eKI5NdtWptCVzRFvsQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.3.0.tgz", + "integrity": "sha512-uin5WkVm0M8ZgotIANXU0sfVkNApsKws1ZSqsc9NZf0MYJsZkz/w8D4ld6hXkFCEQcJ/TMu7aeMZSP+I8cbmOg==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", "utif2": "^4.1.0" }, "engines": { @@ -3273,12 +3290,12 @@ } }, "node_modules/@jimp/plugin-blit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.2.0.tgz", - "integrity": "sha512-y18/qt/FdINIQefmYSI6ownb1VtOsR3Y43H8JwzcsuSmpZLpF+lJwXoZLFzgCSSCpiQyb+z924k6L11C4uKH3g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.3.0.tgz", + "integrity": "sha512-5OjEUM0jtzQ6KJBTougs8ozbUAxYyJiKZqceFb8mqKVMjuiM94N9425mIDDgOl5MDFwAESeTMIchKCAPMOv2FQ==", "dependencies": { - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3286,23 +3303,23 @@ } }, "node_modules/@jimp/plugin-blur": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.2.0.tgz", - "integrity": "sha512-h0/4W2zjkrDC9nZGl1r+pk5ftG6d1Zdvza/BE7xie++P2ihGp4ikgK26Hn/xlnAH691yh/uCjP0eeJw+Ggfy5Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.3.0.tgz", + "integrity": "sha512-108RHeCvHFJqpQvuaydhxwJLBwdjEWKLW6ZXWWCnCadrpKbH2yqu9P6oUhHS7atLjQ0ZBzXcM+Wj2VYR7XU8ng==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/utils": "1.2.0" + "@jimp/core": "1.3.0", + "@jimp/utils": "1.3.0" }, "engines": { "node": ">=18" } }, "node_modules/@jimp/plugin-circle": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.2.0.tgz", - "integrity": "sha512-rfPOsLAnQ+YpmGttJRbmTHP2V5Q1Ca99HcpaF8NqOVC9cotGu+Ux3xJIo9QKxyDTO/uwx15KTwzbQAbE43Mr0A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.3.0.tgz", + "integrity": "sha512-Lkz1uwD2wgysuu4TDzAVQ26+urr+siYlO/qXnMYHui9k0P735S6B6EsWrzssLDGOtqevQyYcx5u6h0Kv4lzehg==", "dependencies": { - "@jimp/types": "1.2.0", + "@jimp/types": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3310,13 +3327,13 @@ } }, "node_modules/@jimp/plugin-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.2.0.tgz", - "integrity": "sha512-RdDj1ZyUN478hwCbR004xQK2qJ+FQvL0F+fGVUOozpw4pWs6G0PKtGWooKGB0522sEw3tvvb5mHDnz06WWIU0w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.3.0.tgz", + "integrity": "sha512-HLFtZB86W2nVnfZT+LAsyooF9efapWPmxuOKECeevunb1zHieO1ni19QXJfcqtt+cVj8UxIBGC4v9IFDJ9PGYw==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "tinycolor2": "^1.6.0", "zod": "^3.23.8" }, @@ -3325,15 +3342,15 @@ } }, "node_modules/@jimp/plugin-contain": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.2.0.tgz", - "integrity": "sha512-YZmQnP0eJbBUhDr4YuvfsQl04CFEwTy+EKgMX7fCc5Ne/l0Y4wiabUtB2Cr47tvIoQiOzmx8UV5jnoYJFO6CQw==", - "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/plugin-blit": "1.2.0", - "@jimp/plugin-resize": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.3.0.tgz", + "integrity": "sha512-1xPJ/CC4hh8IDrZFCtwQezw0RFzdrFvatzXkmfZD0cRyUXtYQ8VzExeK9MXLWi2+/nfufh+2SIhThTQ8xIzLBw==", + "dependencies": { + "@jimp/core": "1.3.0", + "@jimp/plugin-blit": "1.3.0", + "@jimp/plugin-resize": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3341,14 +3358,14 @@ } }, "node_modules/@jimp/plugin-cover": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.2.0.tgz", - "integrity": "sha512-EnCibB1mMSFRoIW8h53lvEAWXFb+H6iIjCoKAVuMIkPq6nhc7WCDuvvgn+oLnYaNPSsD5+ge+pafdIaAlw+jpA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.3.0.tgz", + "integrity": "sha512-Q8vlXepruKU+A55PS2A+d7TPwIoYthnX61ae+TQa+/4DjYk6XZA2YlmUFhq7P3RH5p288N/84ILNSIwH5YCqAw==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/plugin-crop": "1.2.0", - "@jimp/plugin-resize": "1.2.0", - "@jimp/types": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/plugin-crop": "1.3.0", + "@jimp/plugin-resize": "1.3.0", + "@jimp/types": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3356,13 +3373,13 @@ } }, "node_modules/@jimp/plugin-crop": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.2.0.tgz", - "integrity": "sha512-jVq3zlrcYwnVKIS8NTCeOoJ8sWrn9Th4qDQWu7hbo6tgEAYXZCEBPC3zQzeu7RY9oETorJ3Q7zKzyKO8xzBedw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.3.0.tgz", + "integrity": "sha512-AoCTYFgcDEH+sqc2IQ5CI0CgYrQZSFfZ6q4zSXkWA+irs1nDbjJeA+0vClkYxJNSkk2wqB0fys69OBoqfDabrw==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3370,12 +3387,12 @@ } }, "node_modules/@jimp/plugin-displace": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.2.0.tgz", - "integrity": "sha512-XAm+y2xX95cioc4Ya9RlxiDRbfQ6+DF6B6nHRkzwUYN3TaB698PS8fBkBZ4VlMQ8IqD+Y+OKcEDhpWz28GqUVg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.3.0.tgz", + "integrity": "sha512-8t/R0SjE7YWujeMLbUT2js9WIeyFbeQXxAiCPt4AJy1BUD56sbcWIx1zJzrL52eF+bG4AS8oLOp5arL+P7ocmQ==", "dependencies": { - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3383,23 +3400,23 @@ } }, "node_modules/@jimp/plugin-dither": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.2.0.tgz", - "integrity": "sha512-NoOeeOhqFoIBqHnJtXkkknWCykOQzH/duYTb4JTxRaHKAIelQAvDbxanLu+S7wp3brIvurJM9RDxYK0Gqd7k5A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.3.0.tgz", + "integrity": "sha512-oE6kHne88OOcJBu+fk9KvMMB71UZUO4B2YYoaHVjGbtciPG9FbBBGqgD9oULVWhHuICZdDnfgFF0hhemQuQloQ==", "dependencies": { - "@jimp/types": "1.2.0" + "@jimp/types": "1.3.0" }, "engines": { "node": ">=18" } }, "node_modules/@jimp/plugin-fisheye": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.2.0.tgz", - "integrity": "sha512-N5UG6vbpQkYbhYAWJcreR2vC0fWWxf9VUupDaIOM1Yp9h5Lel/8Q0o2ie5yUxsHt2wa0HOm0O9KorfHzlV6s5A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.3.0.tgz", + "integrity": "sha512-VLaqY/IxrqHyjKeWpUwJZpAqug4DE26hM/8ejfPm5FmofAS1dI0deecDfbthRbw17hnPVcAiTkZ6QTiQL71Z4w==", "dependencies": { - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3407,11 +3424,11 @@ } }, "node_modules/@jimp/plugin-flip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.2.0.tgz", - "integrity": "sha512-zI5/6dkoUdslf7BMccXURIQzXKKXu/ocTTnzf3C6VHV4M6U/QIg1BLi8A5+KkgHnvpuSM/IW3T0PDWKLpmK/CA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.3.0.tgz", + "integrity": "sha512-cHeefBsjBYLbjqq8TFJHQD/6sgJLvb6XPdB8wVvKe682Y8jIilxlEhZJeUFXwsMrKKhbXNZxmtSc/pEIYCo6cA==", "dependencies": { - "@jimp/types": "1.2.0", + "@jimp/types": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3419,19 +3436,19 @@ } }, "node_modules/@jimp/plugin-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.2.0.tgz", - "integrity": "sha512-opj35tK+Ku+17mq9Ip7GEwDpNr+Mk/xQcOGLBispbKLWqAG1IDyHTLSsAmDcM8pL4AXXv/96xPUWWxu4mZLwTw==", - "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/js-bmp": "1.2.0", - "@jimp/js-jpeg": "1.2.0", - "@jimp/js-png": "1.2.0", - "@jimp/js-tiff": "1.2.0", - "@jimp/plugin-color": "1.2.0", - "@jimp/plugin-resize": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.3.0.tgz", + "integrity": "sha512-LAUi9FFT3Kp2bI2hWXQ75t1pl6q6ZyKH/jJQZg8DPL+fFK0//TIsw/g0VxW5lZoV3mHUUorQlsZzWtNi/DGtWA==", + "dependencies": { + "@jimp/core": "1.3.0", + "@jimp/js-bmp": "1.3.0", + "@jimp/js-jpeg": "1.3.0", + "@jimp/js-png": "1.3.0", + "@jimp/js-tiff": "1.3.0", + "@jimp/plugin-color": "1.3.0", + "@jimp/plugin-resize": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "any-base": "^1.1.0" }, "engines": { @@ -3439,11 +3456,11 @@ } }, "node_modules/@jimp/plugin-mask": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.2.0.tgz", - "integrity": "sha512-VLGifoXRyddUDbUj0LIG3HrEeCZOHSzfOcv/bXyQq7/KHmR+HnhaAuDOlkDLBa4buZMbh4Ub+nhmDhU3kwf8yA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.3.0.tgz", + "integrity": "sha512-fpU6rZ75c1gD6/8zsiPQW57+doX3KfexZ3lVYToyd720HPO/qfG9lzwfY30tJVXArI4DMbG8qN7lXKgGeWwGqw==", "dependencies": { - "@jimp/types": "1.2.0", + "@jimp/types": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3451,15 +3468,15 @@ } }, "node_modules/@jimp/plugin-print": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.2.0.tgz", - "integrity": "sha512-TLfne5npxCkf8CY/UuCT589GpKQsjQrcj6SjdVpcddGdm25t3jEt4+WE6wPFsOuocWZO6YSaJNOQJKma/BRQ3w==", - "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/js-jpeg": "1.2.0", - "@jimp/js-png": "1.2.0", - "@jimp/plugin-blit": "1.2.0", - "@jimp/types": "1.2.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.3.0.tgz", + "integrity": "sha512-WeN35Fo9Bushm6VGUdQXqXrVIFDYECeKLKN+LlAqQ/YnIlUiTirPlcyGHzEBKD8uXDCmjBYqxwadcPvRDVwFEw==", + "dependencies": { + "@jimp/core": "1.3.0", + "@jimp/js-jpeg": "1.3.0", + "@jimp/js-png": "1.3.0", + "@jimp/plugin-blit": "1.3.0", + "@jimp/types": "1.3.0", "parse-bmfont-ascii": "^1.0.6", "parse-bmfont-binary": "^1.0.6", "parse-bmfont-xml": "^1.1.6", @@ -3471,9 +3488,9 @@ } }, "node_modules/@jimp/plugin-quantize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.2.0.tgz", - "integrity": "sha512-0sYazEK2sT1NXFInwcef0ag0X3qicqI07vUFnv4bKtxILU00tWhUyig3h6kLzZhFdiTGXt2MP3OGCu4mWQ8OfQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.3.0.tgz", + "integrity": "sha512-4Hgp5UNN8DGeX1ULNANPwlHCyuaZYZPJ/mpe/lnCN4jLI/SeBzR4g8tU+srNF6arPwRXrLNQV6T/ehAa7zhbkg==", "dependencies": { "image-q": "^4.0.0", "zod": "^3.23.8" @@ -3483,12 +3500,12 @@ } }, "node_modules/@jimp/plugin-resize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.2.0.tgz", - "integrity": "sha512-QZd72r988QdAYQs9jggHsCdatbybkU3WmVxqE0l3YbpltW13tdiMktsNTSyQT1nci7l3LvrBRuNl6pOQx7Ug5w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.3.0.tgz", + "integrity": "sha512-9fMw6ff/3kzDwQ2rGNYCJ2jc9IHsxQh9eaoPb4SkVHxzq+O3yka3M2Vjf41gaYhQ5Pt5QLgQ9uYUA+2kp1RF1g==", "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/types": "1.2.0", + "@jimp/core": "1.3.0", + "@jimp/types": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3496,15 +3513,15 @@ } }, "node_modules/@jimp/plugin-rotate": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.2.0.tgz", - "integrity": "sha512-P0dvX6XlerHK6Om1rUs9kAxqbmk94VCPxuzJk5asUliOtq+wklLTfRbcmn3fQkn9xH3EtQojdE0RAVCExMkOdg==", - "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/plugin-crop": "1.2.0", - "@jimp/plugin-resize": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.3.0.tgz", + "integrity": "sha512-lpzk37tzk7b5RG5U6P/E3vk+bwU86TnNZOc1LHQeTOEpfFAPMTJl6w+OlLLxVNJ7HUQege/8P47N2onQX00wXw==", + "dependencies": { + "@jimp/core": "1.3.0", + "@jimp/plugin-crop": "1.3.0", + "@jimp/plugin-resize": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3512,15 +3529,15 @@ } }, "node_modules/@jimp/plugin-threshold": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.2.0.tgz", - "integrity": "sha512-yMibcCFQ1NLx94DFdGqPG0z3EiOohgbYhDYpqMmadBu1IUOcHl8EnCJjD673RZxQh/4s6MR6vpcT5epjtFVnGg==", - "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/plugin-color": "1.2.0", - "@jimp/plugin-hash": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.3.0.tgz", + "integrity": "sha512-lKBzZEgjI/zM51/muGyL2juGEkK361/yFpRcmjafIijq0sHNww1rhqSa0AhO80iCmN77A4Ym/oelY0qh4mtlLQ==", + "dependencies": { + "@jimp/core": "1.3.0", + "@jimp/plugin-color": "1.3.0", + "@jimp/plugin-hash": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0", "zod": "^3.23.8" }, "engines": { @@ -3528,9 +3545,9 @@ } }, "node_modules/@jimp/types": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.2.0.tgz", - "integrity": "sha512-Zjt+cV0f9Txnx9xdT+SJeNVgbgsQdtMTNWF8W6OAs3pLI9KaAelsXLi9F9jWikoctAI58GU/LOG52LLQkE/5qQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.3.0.tgz", + "integrity": "sha512-K4RaTmDTqZqbjjwOtxzVH9QyCgQBukXjKOmdgNuCmu7ugrpeTeWV7SvrwZZPhTt31lmja8A3a3Dw1ScVZdtmyA==", "dependencies": { "zod": "^3.23.8" }, @@ -3539,11 +3556,11 @@ } }, "node_modules/@jimp/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-7/CIawD7fKfzG1QWU66nS5JxLNbhCiYuv6ce2ytJUzzPPLrJ0X250cS0kb30FvPaNu42DfvJUMUjxbg+9Ia79g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.3.0.tgz", + "integrity": "sha512-QIye6IWJaQ3Q9+6rxgQiFI1I7MwrQZYxlhYhPolJv+BfCXBT8XWJymV8J75vlnjvz3kN2AMXAEU7c7w0h2Tz3Q==", "dependencies": { - "@jimp/types": "1.2.0", + "@jimp/types": "1.3.0", "tinycolor2": "^1.6.0" }, "engines": { @@ -9560,9 +9577,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", "dependencies": { "undici-types": "~6.19.2" } @@ -10273,36 +10290,36 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@vue/compiler-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.0.tgz", - "integrity": "sha512-ja7cpqAOfw4tyFAxgBz70Z42miNDeaqTxExTsnXDLomRpqfyCgyvZvFp482fmsElpfvsoMJUsvzULhvxUTW6Iw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.1.tgz", + "integrity": "sha512-WdjF+NSgFYdWttHevHw5uaJFtKPalhmxhlu2uREj8cLP0uyKKIR60/JvSZNTp0x+NSd63iTiORQTx3+tt55NWQ==", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.0", + "@vue/shared": "3.5.1", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.0.tgz", - "integrity": "sha512-xYjUybWZXl+1R/toDy815i4PbeehL2hThiSGkcpmIOCy2HoYyeeC/gAWK/Y/xsoK+GSw198/T5O31bYuQx5uvQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.1.tgz", + "integrity": "sha512-Ao23fB1lINo18HLCbJVApvzd9OQe8MgmQSgyY5+umbWj2w92w9KykVmJ4Iv2US5nak3ixc2B+7Km7JTNhQ8kSQ==", "dependencies": { - "@vue/compiler-core": "3.5.0", - "@vue/shared": "3.5.0" + "@vue/compiler-core": "3.5.1", + "@vue/shared": "3.5.1" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.0.tgz", - "integrity": "sha512-B9DgLtrqok2GLuaFjLlSL15ZG3ZDBiitUH1ecex9guh/ZcA5MCdwuVE6nsfQxktuZY/QY0awJ35/ripIviCQTQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.1.tgz", + "integrity": "sha512-DFizMNH8eDglLhlfwJ0+ciBsztaYe3fY/zcZjrqL1ljXvUw/UpC84M1d7HpBTCW68SNqZyIxrs1XWmf+73Y65w==", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.0", - "@vue/compiler-dom": "3.5.0", - "@vue/compiler-ssr": "3.5.0", - "@vue/shared": "3.5.0", + "@vue/compiler-core": "3.5.1", + "@vue/compiler-dom": "3.5.1", + "@vue/compiler-ssr": "3.5.1", + "@vue/shared": "3.5.1", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", "postcss": "^8.4.44", @@ -10310,18 +10327,18 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.0.tgz", - "integrity": "sha512-E263QZmA1dqRd7c3u/sWTLRMpQOT0aZ8av/L9SoD/v/BVMZaWFHPUUBswS+bzrfvG2suJF8vSLKx6k6ba5SUdA==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.1.tgz", + "integrity": "sha512-C1hpSHQgRM8bg+5XWWD7CkFaVpSn9wZHCLRd10AmxqrH17d4EMP6+XcZpwBOM7H1jeStU5naEapZZWX0kso1tQ==", "dependencies": { - "@vue/compiler-dom": "3.5.0", - "@vue/shared": "3.5.0" + "@vue/compiler-dom": "3.5.1", + "@vue/shared": "3.5.1" } }, "node_modules/@vue/shared": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.0.tgz", - "integrity": "sha512-m9IgiteBpCkFaMNwCOBkFksA7z8QiKc30ooRuoXWUFRDu0mGyNPlFHmbncF0/Kra1RlX8QrmBbRaIxVvikaR0Q==" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.1.tgz", + "integrity": "sha512-NdcTRoO4KuW2RSFgpE2c+E/R/ZHaRzWPxAGxhmxZaaqLh6nYCXx7lc9a88ioqOCxCaV2SFJmujkxbUScW7dNsQ==" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -19038,6 +19055,19 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/fullcalendar": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/fullcalendar/-/fullcalendar-6.1.15.tgz", + "integrity": "sha512-CFnh1yswjRh9puJVDk8VGwTlyZ6eXxr4qLI7QCA0+bozyAm+BluP1US5mOtgk0gEq23nQxGSNDoBvAraz++saQ==", + "dependencies": { + "@fullcalendar/core": "~6.1.15", + "@fullcalendar/daygrid": "~6.1.15", + "@fullcalendar/interaction": "~6.1.15", + "@fullcalendar/list": "~6.1.15", + "@fullcalendar/multimonth": "~6.1.15", + "@fullcalendar/timegrid": "~6.1.15" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -21724,37 +21754,37 @@ } }, "node_modules/jimp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.2.0.tgz", - "integrity": "sha512-oNqOurG39OYE50TqFoYoHhMbZ8eUiTOtQ2MFPzfdXLUzjNsB7qJUR1ZJRGep4JfFhjf2G0HJiYoqDR2XkXHR/A==", - "dependencies": { - "@jimp/core": "1.2.0", - "@jimp/diff": "1.2.0", - "@jimp/js-bmp": "1.2.0", - "@jimp/js-gif": "1.2.0", - "@jimp/js-jpeg": "1.2.0", - "@jimp/js-png": "1.2.0", - "@jimp/js-tiff": "1.2.0", - "@jimp/plugin-blit": "1.2.0", - "@jimp/plugin-blur": "1.2.0", - "@jimp/plugin-circle": "1.2.0", - "@jimp/plugin-color": "1.2.0", - "@jimp/plugin-contain": "1.2.0", - "@jimp/plugin-cover": "1.2.0", - "@jimp/plugin-crop": "1.2.0", - "@jimp/plugin-displace": "1.2.0", - "@jimp/plugin-dither": "1.2.0", - "@jimp/plugin-fisheye": "1.2.0", - "@jimp/plugin-flip": "1.2.0", - "@jimp/plugin-hash": "1.2.0", - "@jimp/plugin-mask": "1.2.0", - "@jimp/plugin-print": "1.2.0", - "@jimp/plugin-quantize": "1.2.0", - "@jimp/plugin-resize": "1.2.0", - "@jimp/plugin-rotate": "1.2.0", - "@jimp/plugin-threshold": "1.2.0", - "@jimp/types": "1.2.0", - "@jimp/utils": "1.2.0" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.3.0.tgz", + "integrity": "sha512-eJnVMuqDQ545taNLp13gVZynnoOvE0xZ2Oti9alkld47dNhmFHBmFTBMTYaZr7zceGTf54RGdr7C4d2WUNwc0g==", + "dependencies": { + "@jimp/core": "1.3.0", + "@jimp/diff": "1.3.0", + "@jimp/js-bmp": "1.3.0", + "@jimp/js-gif": "1.3.0", + "@jimp/js-jpeg": "1.3.0", + "@jimp/js-png": "1.3.0", + "@jimp/js-tiff": "1.3.0", + "@jimp/plugin-blit": "1.3.0", + "@jimp/plugin-blur": "1.3.0", + "@jimp/plugin-circle": "1.3.0", + "@jimp/plugin-color": "1.3.0", + "@jimp/plugin-contain": "1.3.0", + "@jimp/plugin-cover": "1.3.0", + "@jimp/plugin-crop": "1.3.0", + "@jimp/plugin-displace": "1.3.0", + "@jimp/plugin-dither": "1.3.0", + "@jimp/plugin-fisheye": "1.3.0", + "@jimp/plugin-flip": "1.3.0", + "@jimp/plugin-hash": "1.3.0", + "@jimp/plugin-mask": "1.3.0", + "@jimp/plugin-print": "1.3.0", + "@jimp/plugin-quantize": "1.3.0", + "@jimp/plugin-resize": "1.3.0", + "@jimp/plugin-rotate": "1.3.0", + "@jimp/plugin-threshold": "1.3.0", + "@jimp/types": "1.3.0", + "@jimp/utils": "1.3.0" }, "engines": { "node": ">=18" @@ -27163,13 +27193,13 @@ } }, "node_modules/openai": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.57.1.tgz", - "integrity": "sha512-7q+4U9A/klaAT40bqL6sPFhIKb4jsUJ8udddCzaf8mdwICYeBG7grps/zDcrOUfkwCxCzR6fxfDDah3WqHoVUA==", + "version": "4.57.3", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.57.3.tgz", + "integrity": "sha512-mTz5/SmulkkeSpqbSr6WNLRU6krkyhnbfRUC8XfaXbj1T6xUorKEELjZvbRSzI714JLOk1MeFkqYS9H4WHhqDQ==", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", - "@types/qs": "^6.9.7", + "@types/qs": "^6.9.15", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", @@ -27190,9 +27220,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.49", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.49.tgz", - "integrity": "sha512-ALCeIR6n0nQ7j0FUF1ycOhrp6+XutJWqEu/vtdEqXFUQwkBfgUA5cEg3ZNmjWGF/ZYA/FcF9QMkL55Ar0O6UrA==", + "version": "18.19.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.50.tgz", + "integrity": "sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==", "dependencies": { "undici-types": "~5.26.4" } @@ -28870,9 +28900,9 @@ } }, "node_modules/react-intersection-observer": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.13.0.tgz", - "integrity": "sha512-y0UvBfjDiXqC8h0EWccyaj4dVBWMxgEx0t5RGNzQsvkfvZwugnKwxpu70StY4ivzYuMajavwUDjH4LJyIki9Lw==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.13.1.tgz", + "integrity": "sha512-tSzDaTy0qwNPLJHg8XZhlyHTgGW6drFKTtvjdL+p6um12rcnp8Z5XstE+QNBJ7c64n5o0Lj4ilUleA41bmDoMw==", "peerDependencies": { "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" diff --git a/package.json b/package.json index 6254b443a..05992ebc3 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "@fortawesome/free-regular-svg-icons": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@fullcalendar/core": "^6.1.10", + "@fullcalendar/core": "^6.1.15", "@fullcalendar/daygrid": "^6.1.10", "@fullcalendar/multimonth": "^6.1.10", "@fullcalendar/timegrid": "^6.1.15", @@ -194,6 +194,7 @@ "fork-ts-checker-webpack-plugin": "^9.0.2", "form-data": "^4.0.0", "formidable": "3.5.1", + "fullcalendar": "^6.1.15", "function-plot": "^1.23.3", "golden-layout": "^2.6.0", "google-auth-library": "^9.4.1", diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index d149c2eae..01eda7e98 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -648,24 +648,14 @@ export function DivWidth(ele: HTMLElement | null): number { } export function dateRangeStrToDates(dateStr: string) { + const toDate = (str: string) => { + return !str.includes('T') && str.includes('-') ? new Date(Number(str.split('-')[0]), Number(str.split('-')[1]) - 1, Number(str.split('-')[2])) : new Date(str); + }; // dateStr in yyyy-mm-dd format const dateRangeParts = dateStr.split('|'); // splits into from and to date - if (dateRangeParts.length < 2) return { startDate: new Date(), endDate: new Date() }; - return { startDate: new Date(dateRangeParts[0]), endDate: new Date(dateRangeParts[1]) }; - const fromParts = dateRangeParts[0].split('-'); - const toParts = dateRangeParts[1].split('-'); - - const fromYear = parseInt(fromParts[0]); - const fromMonth = parseInt(fromParts[1]) - 1; - const fromDay = parseInt(fromParts[2]?.split('T')[0]); - const fromHour = parseInt(fromParts[2]?.split('T')[1]?.split(':')[0] || '12'); - - const toYear = parseInt(toParts[0]); - const toMonth = parseInt(toParts[1]) - 1; - const toDay = parseInt(toParts[2]?.split('T')[0]); - const toHour = parseInt(fromParts[2]?.split('T')[1]?.split(':')[0] || '12'); - - return { startDate: new Date(fromYear, fromMonth, fromDay, fromHour), endDate: new Date(toYear, toMonth, toDay, toHour) }; + if (dateRangeParts.length < 2 && !dateRangeParts[0]) return { start: new Date(), end: new Date() }; + if (dateRangeParts.length < 2) return { start: toDate(dateRangeParts[0]), end: toDate(dateRangeParts[0]) }; + return { start: new Date(dateRangeParts[0]), end: new Date(dateRangeParts[1]) }; } function replaceCanvases(oldDiv: HTMLElement, newDiv: HTMLElement) { diff --git a/src/client/views/collections/CollectionCalendarView.tsx b/src/client/views/collections/CollectionCalendarView.tsx index c1f0b314b..30fd9fc2b 100644 --- a/src/client/views/collections/CollectionCalendarView.tsx +++ b/src/client/views/collections/CollectionCalendarView.tsx @@ -38,8 +38,8 @@ export class CollectionCalendarView extends CollectionSubView() { const aDateRangeStr = StrCast(DocListCast(calendarA.data).lastElement()?.date_range); const bDateRangeStr = StrCast(DocListCast(calendarB.data).lastElement()?.date_range); - const { startDate: aFromDate, endDate: aToDate } = dateRangeStrToDates(aDateRangeStr); - const { startDate: bFromDate, endDate: bToDate } = dateRangeStrToDates(bDateRangeStr); + const { start: aFromDate, end: aToDate } = dateRangeStrToDates(aDateRangeStr); + const { start: bFromDate, end: bToDate } = dateRangeStrToDates(bDateRangeStr); if (aFromDate > bFromDate) { return -1; // a comes first diff --git a/src/client/views/nodes/calendarBox/CalendarBox.scss b/src/client/views/nodes/calendarBox/CalendarBox.scss index df6ce3e64..f8ac4b2d1 100644 --- a/src/client/views/nodes/calendarBox/CalendarBox.scss +++ b/src/client/views/nodes/calendarBox/CalendarBox.scss @@ -2,6 +2,7 @@ display: flex; width: 100%; height: 100%; + transform-origin: top left; .calendarBox-wrapper { width: 100%; height: 100%; diff --git a/src/client/views/nodes/calendarBox/CalendarBox.tsx b/src/client/views/nodes/calendarBox/CalendarBox.tsx index 9452cc10a..678b7dd0b 100644 --- a/src/client/views/nodes/calendarBox/CalendarBox.tsx +++ b/src/client/views/nodes/calendarBox/CalendarBox.tsx @@ -1,7 +1,8 @@ -import { Calendar, EventClickArg, EventSourceInput } from '@fullcalendar/core'; +import { Calendar, DateInput, EventClickArg, EventSourceInput } from '@fullcalendar/core'; import dayGridPlugin from '@fullcalendar/daygrid'; import multiMonthPlugin from '@fullcalendar/multimonth'; import timeGrid from '@fullcalendar/timegrid'; +import interactionPlugin from '@fullcalendar/interaction'; import { IReactionDisposer, action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; @@ -26,6 +27,7 @@ export class CalendarBox extends CollectionSubView() { _oldWheel: HTMLElement | null = null; _observer: ResizeObserver | undefined; _eventsDisposer: IReactionDisposer | undefined; + _selectDisposer: IReactionDisposer | undefined; constructor(props: SubCollectionViewProps) { super(props); @@ -38,18 +40,32 @@ export class CalendarBox extends CollectionSubView() { componentDidMount(): void { this._props.setContentViewBox?.(this); this._eventsDisposer = reaction( - () => this.calendarEvents, - events => this._calendar?.setOption('events', events), + () => ({ events: this.calendarEvents }), + ({ events }) => this._calendar?.setOption('events', events), + { fireImmediately: true } + ); + this._selectDisposer = reaction( + () => ({ initialDate: this.dateSelect }), + ({ initialDate }) => { + const state = this._calendar?.getCurrentData(); + state && + this._calendar?.dispatch({ + type: 'CHANGE_DATE', + dateMarker: state.dateEnv.createMarker(initialDate.start), + }); + setTimeout(() => (initialDate.start.toISOString() !== initialDate.end.toISOString() ? this._calendar?.select(initialDate.start, initialDate.end) : this._calendar?.select(initialDate.start))); + }, { fireImmediately: true } ); } componentWillUnmount(): void { this._eventsDisposer?.(); + this._selectDisposer?.(); } @computed get calendarEvents(): EventSourceInput | undefined { return this.childDocs.map(doc => { - const { startDate: start, endDate: end } = dateRangeStrToDates(StrCast(doc.date_range)); + const { start, end } = dateRangeStrToDates(StrCast(doc.date_range)); return { title: StrCast(doc.title), start, @@ -61,6 +77,7 @@ export class CalendarBox extends CollectionSubView() { classNames: ['mother'], // will determine the style editable: true, // subject to change in the future backgroundColor: this.eventToColor(doc), + borderColor: this.eventToColor(doc), color: 'white', extendedProps: { description: StrCast(doc.description), @@ -72,20 +89,23 @@ export class CalendarBox extends CollectionSubView() { @computed get dateRangeStrDates() { return dateRangeStrToDates(StrCast(this.Document.date_range)); } + get dateSelect() { + return dateRangeStrToDates(StrCast(this.Document.date)); + } // Choose a calendar view based on the date range @computed get calendarViewType(): CalendarView { if (this.dataDoc[this.fieldKey + '_calendarType']) return StrCast(this.dataDoc[this.fieldKey + '_calendarType']) as CalendarView; if (this.isMultiMonth) return 'multiMonth'; - const { startDate, endDate } = this.dateRangeStrDates; - if (startDate.getFullYear() !== endDate.getFullYear() || startDate.getMonth() !== endDate.getMonth()) return 'multiMonth'; - if (Math.abs(startDate.getDay() - endDate.getDay()) > 7) return 'dayGridMonth'; + const { start, end } = this.dateRangeStrDates; + if (start.getFullYear() !== end.getFullYear() || start.getMonth() !== end.getMonth()) return 'multiMonth'; + if (Math.abs(start.getDay() - end.getDay()) > 7) return 'dayGridMonth'; return 'timeGridWeek'; } // TODO: Return a different color based on the event type eventToColor(event: Doc): string { - return 'blue'; + return 'red'; } internalDocDrop(e: Event, de: DragManager.DropEvent, docDragData: DragManager.DocumentDragData) { @@ -116,32 +136,39 @@ export class CalendarBox extends CollectionSubView() { const cal = !this._calendarRef ? null : (this._calendar = new Calendar(this._calendarRef, { - plugins: [multiMonthPlugin, dayGridPlugin, timeGrid], + plugins: [multiMonthPlugin, dayGridPlugin, timeGrid, interactionPlugin], headerToolbar: { left: 'prev,next today', center: 'title', right: 'multiMonth dayGridMonth timeGridWeek timeGridDay', }, + selectable: true, initialView: this.calendarViewType === 'multiMonth' ? undefined : this.calendarViewType, - initialDate: this.dateRangeStrDates.startDate, + initialDate: this.dateSelect.start, navLinks: true, editable: false, displayEventTime: false, displayEventEnd: false, + select: info => { + const start = dateRangeStrToDates(info.startStr).start.toISOString(); + const end = dateRangeStrToDates(info.endStr).start.toISOString(); + this.dataDoc.date = start + '|' + end; + }, aspectRatio: NumCast(this.Document.width) / NumCast(this.Document.height), events: this.calendarEvents, eventClick: this.handleEventClick, })); cal?.render(); + setTimeout(() => cal?.view.calendar.select(this.dateSelect.start, this.dateSelect.end)); }; onPassiveWheel = (e: WheelEvent) => e.stopPropagation(); render() { return (
+ onPointerDown={e => { setTimeout( action(() => { const cname = (e.nativeEvent.target as HTMLButtonElement)?.className ?? ''; @@ -150,13 +177,12 @@ export class CalendarBox extends CollectionSubView() { if (cname.includes('timeGridWeek')) this.dataDoc[this.fieldKey + '_calendarType'] = 'timeGridWeek'; if (cname.includes('timeGridDay')) this.dataDoc[this.fieldKey + '_calendarType'] = 'timeGridDay'; }) - ) - } + ); + }} style={{ width: this._props.PanelWidth() / this._props.ScreenToLocalTransform().Scale, height: this._props.PanelHeight() / this._props.ScreenToLocalTransform().Scale, transform: `scale(${this._props.ScreenToLocalTransform().Scale})`, - transformOrigin: 'top left', }} ref={r => { this.createDashEventsTarget(r); -- cgit v1.2.3-70-g09d2 From 78fde29eec8c9caa0bb258d97757656ddfc78e35 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 5 Sep 2024 14:14:39 -0400 Subject: added hideScroll option for text boxes. --- src/client/views/nodes/formattedText/FormattedTextBox.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index a88bd8920..343e255dc 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -2035,7 +2035,6 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent -- cgit v1.2.3-70-g09d2 From 85447fcdb901d1d03ac969e71e97520e1bb98cbb Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 6 Sep 2024 13:57:03 -0400 Subject: removed calendar button. added metadata value input via tagsview --- src/client/views/DocumentButtonBar.tsx | 18 ------------------ src/client/views/TagsView.tsx | 15 +++++++++------ 2 files changed, 9 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index 58b7f207c..437ef045f 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -263,23 +263,6 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( ); } - @computed - get calendarButton() { - const targetDoc = this.view0?.Document; - return !targetDoc ? null : ( - Open calendar menu
}> -
{ - CalendarManager.Instance.open(this.view0, targetDoc); - }}> - -
- - ); - } - @computed get keywordButton() { return !DocumentView.Selected().length ? null : ( @@ -460,7 +443,6 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( {!DocumentView.Selected().some(v => v.allLinks.length) ? null :
{this.followLinkButton}
}
{this.pinButton}
{this.recordButton}
-
{this.calendarButton}
{this.keywordButton}
{!Doc.UserDoc().documentLinksButton_fullMenu ? null :
{this.shareButton}
}
{this.menuButton}
diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 7723da900..2d583d392 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -283,15 +283,18 @@ export class TagsView extends ObservableReactComponent { }; /** - * Adds the specified tag to the Doc. If the tag is not prefixed with '#', then a '#' prefix is added. - * Whne the tag (after the '#') begins with '@', then a metadata key/value pair is displayed instead of - * just the tag. - * @param tag tag string to add + * Adds the specified tag or metadata to the Doc. If the tag is not prefixed with '#', then a '#' prefix is added. + * When the tag (after the '#') begins with '@', then a metadata key/value pair is displayed instead of + * just the tag. In addition, a suffix of : can be added to set a metadata value + * @param tag tag string to add (format: # | #@field(:(=)?value)? ) */ submitTag = undoable( action((tag: string) => { - const submittedLabel = tag.trim(); - submittedLabel && TagItem.addTagToDoc(this._props.View.Document, '#' + submittedLabel.replace(/^#/, '')); + const submittedLabel = tag.trim().replace(/^#/, '').split(':'); + if (submittedLabel[0]) { + TagItem.addTagToDoc(this._props.View.Document, '#' + submittedLabel[0]); + if (submittedLabel.length > 1) Doc.SetField(this._props.View.Document, submittedLabel[0].replace(/^@/, ''), ':' + submittedLabel[1]); + } this._currentInput = ''; // Clear the input box }), 'added doc label' -- cgit v1.2.3-70-g09d2 From 8b4de19e9944bbac2f41a621c5369bedca43db52 Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 6 Sep 2024 15:20:51 -0400 Subject: fixed inclusion on typescript type_decls for scripting.ts by fixing .gitignore --- .gitignore | 2 +- src/client/util/node_modules/type_decls.d | 224 ++++++++++++++++++++++++++++++ src/client/views/TagsView.tsx | 2 +- src/typings/type_decls.d | 224 ------------------------------ 4 files changed, 226 insertions(+), 226 deletions(-) create mode 100644 src/client/util/node_modules/type_decls.d delete mode 100644 src/typings/type_decls.d (limited to 'src') diff --git a/.gitignore b/.gitignore index 6a1963b4e..26c504059 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -node_modules +/node_modules dist/ .DS_Store .env diff --git a/src/client/util/node_modules/type_decls.d b/src/client/util/node_modules/type_decls.d new file mode 100644 index 000000000..1a93bbe59 --- /dev/null +++ b/src/client/util/node_modules/type_decls.d @@ -0,0 +1,224 @@ +//@ts-ignore +declare type PropertyKey = string | number | symbol; +interface Array { + length: number; + toString(): string; + toLocaleString(): string; + pop(): T | undefined; + push(...items: T[]): number; + concat(...items: ConcatArray[]): T[]; + concat(...items: (T | ConcatArray)[]): T[]; + join(separator?: string): string; + reverse(): T[]; + shift(): T | undefined; + slice(start?: number, end?: number): T[]; + sort(compareFn?: (a: T, b: T) => number): this; + splice(start: number, deleteCount?: number): T[]; + splice(start: number, deleteCount: number, ...items: T[]): T[]; + unshift(...items: T[]): number; + indexOf(searchElement: T, fromIndex?: number): number; + lastIndexOf(searchElement: T, fromIndex?: number): number; + every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; + some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; + forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; + map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; + filter(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; + filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; + reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; + reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; + reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; + reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; + + [n: number]: T; +} + +interface Function { + apply(this: Function, thisArg: any, argArray?: any): any; + call(this: Function, thisArg: any, ...argArray: any[]): any; + bind(this: Function, thisArg: any, ...argArray: any[]): any; + toString(): string; + + prototype: any; + readonly length: number; + + // Non-standard extensions + arguments: any; + caller: Function; +} +interface Boolean { + valueOf(): boolean; +} +interface Number { + toString(radix?: number): string; + toFixed(fractionDigits?: number): string; + toExponential(fractionDigits?: number): string; + toPrecision(precision?: number): string; + valueOf(): number; +} +interface IArguments { + [index: number]: any; + length: number; + callee: Function; +} +interface RegExp { + readonly flags: string; + readonly sticky: boolean; + readonly unicode: boolean; +} +interface Date { + now() : string; +} +interface String { + codePointAt(pos: number): number | undefined; + includes(searchString: string, position?: number): boolean; + endsWith(searchString: string, endPosition?: number): boolean; + normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; + normalize(form?: string): string; + repeat(count: number): string; + replace(a:any, b:any):string; // bcz: fix this + startsWith(searchString: string, position?: number): boolean; + anchor(name: string): string; + big(): string; + blink(): string; + bold(): string; + fixed(): string; + fontcolor(color: string): string; + fontsize(size: number): string; + fontsize(size: string): string; + italics(): string; + link(url: string): string; + small(): string; + strike(): string; + sub(): string; + sup(): string; +} +interface Object { + constructor: Function; + toString(): string; + toLocaleString(): string; + valueOf(): Object; + hasOwnProperty(v: PropertyKey): boolean; + isPrototypeOf(v: Object): boolean; + propertyIsEnumerable(v: PropertyKey): boolean; +} +interface ConcatArray { + readonly length: number; + readonly [n: number]: T; + join(separator?: string): string; + slice(start?: number, end?: number): T[]; +} +interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toJSON(): string; +} +interface PromiseLike { + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): PromiseLike; +} +interface Promise { + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; +} + +declare const Update: unique symbol; +declare const Self: unique symbol; +declare const SelfProxy: unique symbol; +declare const DataSym: unique symbol; +declare const HandleUpdate: unique symbol; +declare const Id: unique symbol; +declare const OnUpdate: unique symbol; +declare const Parent: unique symbol; +declare const Copy: unique symbol; +declare const ToScriptString: unique symbol; + +declare abstract class RefField { + readonly [Id]: FieldId; + + constructor(); +} + +declare type FieldId = string; + +declare abstract class ObjectField { + abstract [Copy](): ObjectField; +} + +declare abstract class URLField extends ObjectField { + readonly url: URL; + + constructor(url: string); + constructor(url: URL); +} + +declare class RichTextField extends URLField { + [Copy](): ObjectField; + constructor(data:string, text: string); +} +declare class AudioField extends URLField { [Copy](): ObjectField; } +declare class VideoField extends URLField { [Copy](): ObjectField; } +declare class ImageField extends URLField { [Copy](): ObjectField; } +declare class WebField extends URLField { [Copy](): ObjectField; } +declare class PdfField extends URLField { [Copy](): ObjectField; } + +declare const ComputedField: any; +declare const CompileScript: any; + +// @ts-ignore +declare type Extract = T extends U ? T : never; +declare type Field = number | string | boolean | ObjectField | RefField; +declare type FieldWaiting = T extends undefined ? never : Promise; +declare type FieldResult = Opt | FieldWaiting>; + +declare type Opt = T | undefined; +declare class Doc extends RefField { + constructor(); + + [key: string]: FieldResult; + // [ToScriptString](): string; +} + +declare class List extends ObjectField { + constructor(fields?: T[]); + [index: number]: T | (T extends RefField ? Promise : never); + [Copy](): ObjectField; +} + +declare class InkField extends ObjectField { + constructor(data:Array<{X:number, Y:number}>); + [Copy](): ObjectField; +} + +// @ts-ignore +declare const console: any; + +interface DocumentOptions { } + +declare const Docs: { + ImageDocument(url: string, options?: DocumentOptions): Doc; + VideoDocument(url: string, options?: DocumentOptions): Doc; + TextDocument(options?: DocumentOptions): Doc; + PdfDocument(url: string, options?: DocumentOptions): Doc; + WebDocument(url: string, options?: DocumentOptions): Doc; + HtmlDocument(html: string, options?: DocumentOptions): Doc; + MapDocument(url: string, options?: DocumentOptions): Doc; + KVPDocument(document: Doc, options?: DocumentOptions): Doc; + FreeformDocument(documents: Doc[], options?: DocumentOptions): Doc; + SchemaDocument(columns: string[], documents: Doc[], options?: DocumentOptions): Doc; + TreeDocument(documents: Doc[], options?: DocumentOptions): Doc; + StackingDocument(documents: Doc[], options?: DocumentOptions): Doc; +}; + +declare function idToDoc(id:string):any; +declare function assignDoc(doc:Doc, field:any, id:any):string; +declare function d(...args:any[]):any; diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 2d583d392..3041de902 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -9,7 +9,7 @@ import { emptyFunction } from '../../Utils'; import { Doc, DocListCast, Field, Opt, StrListCast } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; -import { DocCast, NumCast, StrCast } from '../../fields/Types'; +import { DocCast, StrCast } from '../../fields/Types'; import { DocumentType } from '../documents/DocumentTypes'; import { DragManager } from '../util/DragManager'; import { SnappingManager } from '../util/SnappingManager'; diff --git a/src/typings/type_decls.d b/src/typings/type_decls.d deleted file mode 100644 index 1a93bbe59..000000000 --- a/src/typings/type_decls.d +++ /dev/null @@ -1,224 +0,0 @@ -//@ts-ignore -declare type PropertyKey = string | number | symbol; -interface Array { - length: number; - toString(): string; - toLocaleString(): string; - pop(): T | undefined; - push(...items: T[]): number; - concat(...items: ConcatArray[]): T[]; - concat(...items: (T | ConcatArray)[]): T[]; - join(separator?: string): string; - reverse(): T[]; - shift(): T | undefined; - slice(start?: number, end?: number): T[]; - sort(compareFn?: (a: T, b: T) => number): this; - splice(start: number, deleteCount?: number): T[]; - splice(start: number, deleteCount: number, ...items: T[]): T[]; - unshift(...items: T[]): number; - indexOf(searchElement: T, fromIndex?: number): number; - lastIndexOf(searchElement: T, fromIndex?: number): number; - every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; - map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; - filter(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; - filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; - reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; - reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - - [n: number]: T; -} - -interface Function { - apply(this: Function, thisArg: any, argArray?: any): any; - call(this: Function, thisArg: any, ...argArray: any[]): any; - bind(this: Function, thisArg: any, ...argArray: any[]): any; - toString(): string; - - prototype: any; - readonly length: number; - - // Non-standard extensions - arguments: any; - caller: Function; -} -interface Boolean { - valueOf(): boolean; -} -interface Number { - toString(radix?: number): string; - toFixed(fractionDigits?: number): string; - toExponential(fractionDigits?: number): string; - toPrecision(precision?: number): string; - valueOf(): number; -} -interface IArguments { - [index: number]: any; - length: number; - callee: Function; -} -interface RegExp { - readonly flags: string; - readonly sticky: boolean; - readonly unicode: boolean; -} -interface Date { - now() : string; -} -interface String { - codePointAt(pos: number): number | undefined; - includes(searchString: string, position?: number): boolean; - endsWith(searchString: string, endPosition?: number): boolean; - normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; - normalize(form?: string): string; - repeat(count: number): string; - replace(a:any, b:any):string; // bcz: fix this - startsWith(searchString: string, position?: number): boolean; - anchor(name: string): string; - big(): string; - blink(): string; - bold(): string; - fixed(): string; - fontcolor(color: string): string; - fontsize(size: number): string; - fontsize(size: string): string; - italics(): string; - link(url: string): string; - small(): string; - strike(): string; - sub(): string; - sup(): string; -} -interface Object { - constructor: Function; - toString(): string; - toLocaleString(): string; - valueOf(): Object; - hasOwnProperty(v: PropertyKey): boolean; - isPrototypeOf(v: Object): boolean; - propertyIsEnumerable(v: PropertyKey): boolean; -} -interface ConcatArray { - readonly length: number; - readonly [n: number]: T; - join(separator?: string): string; - slice(start?: number, end?: number): T[]; -} -interface URL { - hash: string; - host: string; - hostname: string; - href: string; - readonly origin: string; - password: string; - pathname: string; - port: string; - protocol: string; - search: string; - username: string; - toJSON(): string; -} -interface PromiseLike { - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): PromiseLike; -} -interface Promise { - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): Promise; - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; -} - -declare const Update: unique symbol; -declare const Self: unique symbol; -declare const SelfProxy: unique symbol; -declare const DataSym: unique symbol; -declare const HandleUpdate: unique symbol; -declare const Id: unique symbol; -declare const OnUpdate: unique symbol; -declare const Parent: unique symbol; -declare const Copy: unique symbol; -declare const ToScriptString: unique symbol; - -declare abstract class RefField { - readonly [Id]: FieldId; - - constructor(); -} - -declare type FieldId = string; - -declare abstract class ObjectField { - abstract [Copy](): ObjectField; -} - -declare abstract class URLField extends ObjectField { - readonly url: URL; - - constructor(url: string); - constructor(url: URL); -} - -declare class RichTextField extends URLField { - [Copy](): ObjectField; - constructor(data:string, text: string); -} -declare class AudioField extends URLField { [Copy](): ObjectField; } -declare class VideoField extends URLField { [Copy](): ObjectField; } -declare class ImageField extends URLField { [Copy](): ObjectField; } -declare class WebField extends URLField { [Copy](): ObjectField; } -declare class PdfField extends URLField { [Copy](): ObjectField; } - -declare const ComputedField: any; -declare const CompileScript: any; - -// @ts-ignore -declare type Extract = T extends U ? T : never; -declare type Field = number | string | boolean | ObjectField | RefField; -declare type FieldWaiting = T extends undefined ? never : Promise; -declare type FieldResult = Opt | FieldWaiting>; - -declare type Opt = T | undefined; -declare class Doc extends RefField { - constructor(); - - [key: string]: FieldResult; - // [ToScriptString](): string; -} - -declare class List extends ObjectField { - constructor(fields?: T[]); - [index: number]: T | (T extends RefField ? Promise : never); - [Copy](): ObjectField; -} - -declare class InkField extends ObjectField { - constructor(data:Array<{X:number, Y:number}>); - [Copy](): ObjectField; -} - -// @ts-ignore -declare const console: any; - -interface DocumentOptions { } - -declare const Docs: { - ImageDocument(url: string, options?: DocumentOptions): Doc; - VideoDocument(url: string, options?: DocumentOptions): Doc; - TextDocument(options?: DocumentOptions): Doc; - PdfDocument(url: string, options?: DocumentOptions): Doc; - WebDocument(url: string, options?: DocumentOptions): Doc; - HtmlDocument(html: string, options?: DocumentOptions): Doc; - MapDocument(url: string, options?: DocumentOptions): Doc; - KVPDocument(document: Doc, options?: DocumentOptions): Doc; - FreeformDocument(documents: Doc[], options?: DocumentOptions): Doc; - SchemaDocument(columns: string[], documents: Doc[], options?: DocumentOptions): Doc; - TreeDocument(documents: Doc[], options?: DocumentOptions): Doc; - StackingDocument(documents: Doc[], options?: DocumentOptions): Doc; -}; - -declare function idToDoc(id:string):any; -declare function assignDoc(doc:Doc, field:any, id:any):string; -declare function d(...args:any[]):any; -- cgit v1.2.3-70-g09d2 From a6dc4ec556d0653efd7f958e24bdd6812ff12879 Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 6 Sep 2024 15:36:37 -0400 Subject: fixed tagsView assignment to metadadtafield --- src/client/views/nodes/KeyValueBox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/nodes/KeyValueBox.tsx b/src/client/views/nodes/KeyValueBox.tsx index 95e344004..3daacc9bb 100644 --- a/src/client/views/nodes/KeyValueBox.tsx +++ b/src/client/views/nodes/KeyValueBox.tsx @@ -84,7 +84,7 @@ export class KeyValueBox extends ViewBoxBaseComponent() { const onDelegate = rawvalue.startsWith('='); rawvalue = onDelegate ? rawvalue.substring(1) : rawvalue; const type: 'computed' | 'script' | false = rawvalue.startsWith(':=') ? 'computed' : rawvalue.startsWith('$=') ? 'script' : false; - rawvalue = type ? rawvalue.substring(2) : rawvalue; + rawvalue = type ? rawvalue.substring(2) : rawvalue.replace(/^:/, ''); rawvalue = rawvalue.replace(/.*\(\((.*)\)\)/, 'dashCallChat(_setCacheResult_, this, `$1`)'); const value = ["'", '"', '`'].includes(rawvalue.length ? rawvalue[0] : '') || !isNaN(+rawvalue) ? rawvalue : '`' + rawvalue + '`'; -- cgit v1.2.3-70-g09d2 From 950651b904f9bb6843f15eda1322025e84015f3c Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 6 Sep 2024 15:49:08 -0400 Subject: added metadata toggle for booleans in tagsView --- src/client/views/TagsView.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 3041de902..9574bd30e 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -216,7 +216,11 @@ export class TagItem extends ObservableReactComponent { {metadata ? ( {tag}  - {Field.toString(this._props.doc[metadata])} + {typeof this._props.doc[metadata] === 'boolean' ? ( + e.stopPropagation()} onPointerDown={e => e.stopPropagation()} onChange={e => (this._props.doc[metadata] = !this._props.doc[metadata])} checked={this._props.doc[metadata] as boolean} /> + ) : ( + Field.toString(this._props.doc[metadata]) + )} ) : ( tag -- cgit v1.2.3-70-g09d2 From adc87fe2ffc8d8d8c6a71a368b060f0ad14de2ca Mon Sep 17 00:00:00 2001 From: bobzel Date: Fri, 6 Sep 2024 16:54:25 -0400 Subject: added undo for toggling boolean tags --- src/client/views/TagsView.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 9574bd30e..65e70e8fc 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -217,7 +217,13 @@ export class TagItem extends ObservableReactComponent { {tag}  {typeof this._props.doc[metadata] === 'boolean' ? ( - e.stopPropagation()} onPointerDown={e => e.stopPropagation()} onChange={e => (this._props.doc[metadata] = !this._props.doc[metadata])} checked={this._props.doc[metadata] as boolean} /> + e.stopPropagation()} + onPointerDown={e => e.stopPropagation()} + onChange={undoable(e => (this._props.doc[metadata] = !this._props.doc[metadata]), 'metadata toggle')} + checked={this._props.doc[metadata] as boolean} + /> ) : ( Field.toString(this._props.doc[metadata]) )} -- cgit v1.2.3-70-g09d2 From 4e34335e600b5d9d29e8a4af99fda6b2a6d3ba69 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 10 Sep 2024 10:54:29 -0400 Subject: more chat features --- src/client/apis/gpt/GPT.ts | 34 ++- src/client/util/CurrentUserUtils.ts | 20 +- src/client/views/FilterPanel.scss | 18 ++ src/client/views/FilterPanel.tsx | 3 + src/client/views/InkingStroke.tsx | 14 +- .../views/collections/CollectionCardDeckView.tsx | 221 +++++++------- src/client/views/global/globalScripts.ts | 26 +- src/client/views/nodes/IconTagBox.tsx | 23 +- src/client/views/pdf/GPTPopup/GPTPopup.scss | 56 +++- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 319 ++++++++++++++++----- 10 files changed, 525 insertions(+), 209 deletions(-) (limited to 'src') diff --git a/src/client/apis/gpt/GPT.ts b/src/client/apis/gpt/GPT.ts index d95e564c7..f9183d3e2 100644 --- a/src/client/apis/gpt/GPT.ts +++ b/src/client/apis/gpt/GPT.ts @@ -12,7 +12,10 @@ enum GPTCallType { DESCRIBE = 'describe', MERMAID = 'mermaid', DATA = 'data', - RUBRIC = 'rubric' + RUBRIC = 'rubric', + TYPE = 'type', + SUBSET = 'subset', + INFO = 'info' } type GPTCallOpts = { @@ -45,7 +48,7 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { model: 'gpt-4o', maxTokens: 2048, temp: 0.25, - prompt: "The user is going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them by shared content. Make sure each description is only in the list once. Each item should be separated by `======`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted (and mention nothing about the formatting details given in this description). It is VERY important that you format it exactly as described, ensuring the proper number of `=` and `-` (6 of each) and no commas" + prompt: "The user is going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them by the user's specifications. Make sure each description is only in the list once. Each item should be separated by `======`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted (and mention nothing about the formatting details given in this description). It is VERY important that you format it exactly as described, ensuring the proper number of `=` and `-` (6 of each) and NO commas" // prompt: "I'm going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them into lists by shared content. Make sure each description is in only one list. Each list should be separated by `======` with the elements within it separated by `~~~~~~`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted. It is VERY important that you format it exactly as described, ensuring the proper number of `=` `~` and `-` (6 of each) and no commas.Try to create around 4 groups, but a little more or less is ok. Also, I may provide some more insight after this colon:" }, describe: { model: 'gpt-4-vision-preview', maxTokens: 2048, temp: 0, prompt: 'Describe these images in 3-5 words' }, @@ -54,15 +57,38 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { model: 'gpt-4-turbo', maxTokens: 1024, temp: 0, - prompt: 'List unique differences between the content of the UserAnswer and Rubric. Before each difference, label it and provide any additional information the UserAnswer missed and explain it in second person without separating it into UserAnswer and Rubric content and additional information. If there are no differences, say correct', + prompt: "BRIEFLY (<50 words) describe any differences between the rubric and the user's answer answer in second person. If there are no differences, say correct", }, rubric: { model: 'gpt-4-turbo', maxTokens: 1024, temp: 0, - prompt: "Provide a definition for the vollowing term. It will be used as a rubric to evaluate the user's understanding of the topic", + prompt: "BRIEFLY (<75 words) provide a definition for the following term. It will be used as a rubric to evaluate the user's understanding of the topic", }, + + type: { + model: 'gpt-4-turbo', + maxTokens: 1024, + temp: 0, + prompt: "I'm going to provide you with a question. Based on the question, is the user asking you to 1. Assigns docs with tags(like star / heart etc)/labels, 2. Filter docs, 3. Provide information about a specific doc 4. Provide a specific doc based on a question/information 5. Provide general information 6. Put cards in a specific order. Answer with only the number for 2-6. For number one, provide the number (1) and the appropriate tag", + }, + + subset: { + model: 'gpt-4-turbo', + maxTokens: 1024, + temp: 0, + prompt: "I'm going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Based on the question the user asks, provide a subset of the given descriptions that best matches the user's specifications. Make sure each description is only in the list once. Each item should be separated by `======`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning in the 2nd person (and mention nothing about the formatting details given in this description). It is VERY important that you format it exactly as described, ensuring the proper number of `=` and `-` (6 of each) and no commas" + }, + + info: { + model: 'gpt-4-turbo', + maxTokens: 1024, + temp: 0, + prompt: "Answer the user's question with a short (<100 word) response. If a particular document is selected I will provide that information (which may help with your response)" + }, + + }; let lastCall = ''; diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 1a7c0f6e1..6a81f9125 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -675,7 +675,8 @@ pie title Minerals in my tap water { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Tags", icon:"bolt", toolTip:"Sort by document's tags", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"tag", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + // { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Pile", icon:"layer-group", toolTip:"View the cards as a pile in the free form view !", btnType: ButtonType.ClickButton, expertMode: false, toolType:"pile", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Chat Popup", icon:"lightbulb", toolTip:"Toggle the chat popup's visibility!", width: 45 ,btnType: ButtonType.ToggleButton, expertMode: false, toolType:"toggle-chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, @@ -845,6 +846,9 @@ pie title Minerals in my tap water { title: "Back", icon: "chevron-left", toolTip: "Prev Animation Frame", btnType: ButtonType.ClickButton, expertMode: true, toolType:CollectionViewType.Freeform, funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, width: 30, scripts: { onClick: 'prevKeyFrame(_readOnly_)'}}, { title: "Num", icon:"", toolTip: "Frame # (click to toggle edit mode)",btnType: ButtonType.TextButton, expertMode: true, toolType:CollectionViewType.Freeform, funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)', buttonText: 'selectedDocs()?.lastElement()?.currentFrame?.toString()'}, width: 20, scripts: { onClick: '{ return curKeyFrame(_readOnly_);}'}}, { title: "Fwd", icon: "chevron-right", toolTip: "Next Animation Frame", btnType: ButtonType.ClickButton, expertMode: true, toolType:CollectionViewType.Freeform, funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, width: 30, scripts: { onClick: 'nextKeyFrame(_readOnly_)'}}, + + + { title: "Text", icon: "Text", toolTip: "Text functions", subMenu: CurrentUserUtils.textTools(), expertMode: false, toolType:DocumentType.RTF, funcs: { linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available { title: "Ink", icon: "Ink", toolTip: "Ink functions", subMenu: CurrentUserUtils.inkTools(), expertMode: false, toolType:DocumentType.INK, funcs: {hidden: `IsExploreMode()`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`}, scripts: { onClick: 'setInkToolDefaults()'} }, // Always available { title: "Doc", icon: "Doc", toolTip: "Freeform Doc tools", subMenu: CurrentUserUtils.freeTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode, true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available @@ -863,6 +867,13 @@ pie title Minerals in my tap water // { title: "Visibility", icon:"Visibility", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // { title: "Visibility", icon:"Visibility", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`,width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, + + { title: "Card", icon: "Card", toolTip: "Card View Tools", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + // { title: "Create", icon: "Create", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + { title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Web is selected + { title: "Video", icon: "Video", toolTip: "Video functions", subMenu: CurrentUserUtils.videoTools(), expertMode: false, toolType:DocumentType.VID, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when video is selected + { title: "Image", icon: "Image", toolTip: "Image functions", subMenu: CurrentUserUtils.imageTools(), expertMode: false, toolType:DocumentType.IMG, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when image is selected + { title: "Schema", icon: "Schema",linearBtnWidth:58,toolTip: "Schema functions",subMenu: CurrentUserUtils.schemaTools(),expertMode: false,toolType:CollectionViewType.Schema,funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Schema is selected { title: "Filter", icon:"=", toolTip:"Filter cards by tags", btnType: ButtonType.MultiToggleButton, width: 150, ignoreClick: true,toolType:DocumentType.COL, subMenu: this.tagGroupTools(), funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, // [ @@ -873,13 +884,8 @@ pie title Minerals in my tap water // ] }, - { title: "Card", icon: "Card", toolTip: "Card View Tools", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - // { title: "Create", icon: "Create", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - { title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Web is selected - { title: "Video", icon: "Video", toolTip: "Video functions", subMenu: CurrentUserUtils.videoTools(), expertMode: false, toolType:DocumentType.VID, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when video is selected - { title: "Image", icon: "Image", toolTip: "Image functions", subMenu: CurrentUserUtils.imageTools(), expertMode: false, toolType:DocumentType.IMG, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when image is selected - { title: "Schema", icon: "Schema",linearBtnWidth:58,toolTip: "Schema functions",subMenu: CurrentUserUtils.schemaTools(),expertMode: false,toolType:CollectionViewType.Schema,funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Schema is selected ]; + } /// initializes a context menu button for the top bar context menu diff --git a/src/client/views/FilterPanel.scss b/src/client/views/FilterPanel.scss index 0b9076f3b..34c3d2fc1 100644 --- a/src/client/views/FilterPanel.scss +++ b/src/client/views/FilterPanel.scss @@ -283,6 +283,8 @@ .hotkey-title{ top: 6px; position: relative; + cursor: text; + } .hotkey-title-input{ @@ -290,6 +292,8 @@ border: none; border-color: transparent; outline: none; + cursor: text; + } } @@ -344,6 +348,20 @@ +} + +.drawing-box{ + position: absolute; + z-index: 10000; + border-color: black; + border-style: solid; + border-width: medium; + border-radius: 10%; + background-color: #323232; + + + + } // .sliderBox-outerDiv { // width: 30%;// width: calc(100% - 14px); // 14px accounts for handles that are at the max value of the slider that would extend outside the box diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index 17c5cb173..ca4e4df84 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -51,10 +51,13 @@ interface filterProps { @observer export class FilterPanel extends ObservableReactComponent { @observable _selectedFacetHeaders = new Set(); + public static Instance: FilterPanel; + constructor(props: any) { super(props); makeObservable(this); + FilterPanel.Instance = this; } /** diff --git a/src/client/views/InkingStroke.tsx b/src/client/views/InkingStroke.tsx index 62b79dd5a..a117ff3c3 100644 --- a/src/client/views/InkingStroke.tsx +++ b/src/client/views/InkingStroke.tsx @@ -447,13 +447,13 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() }), icon: 'paint-brush', }); - cm?.addItem({ - description: 'Create a hotkey', - event: action(() => { - InkStrokeProperties.Instance._controlButton = !InkStrokeProperties.Instance._controlButton; - }), - icon: 'satellite', - }); + // cm?.addItem({ + // description: 'Create a hotkey', + // event: action(() => { + // InkStrokeProperties.Instance._controlButton = !InkStrokeProperties.Instance._controlButton; + // }), + // icon: 'satellite', + // }); }, }; return ( diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 52f01e239..5dafb1088 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -28,6 +28,8 @@ import { SettingsManager } from '../../util/SettingsManager'; import { Tooltip } from '@mui/material'; import { dropActionType } from '../../util/DropActionTypes'; import { List } from '../../../fields/List'; +import { DocCast } from '../../../fields/Types'; +import { SelectionManager } from '../../util/SelectionManager'; enum cardSortings { Time = 'time', @@ -35,6 +37,7 @@ enum cardSortings { Color = 'color', Custom = 'custom', Chat = 'chat', + Tag = 'tag', None = '', } @observer @@ -91,7 +94,9 @@ export class CollectionCardView extends CollectionSubView() { childPairStringListAndUpdateSortDesc = async () => { const sortDesc = await this.childPairStringList(); // Await the promise to get the string result GPTPopup.Instance.setSortDesc(sortDesc.join()); - GPTPopup.Instance.onSortComplete = (sortResult: string) => this.processGptOutput(sortResult); + GPTPopup.Instance.onSortComplete = (sortResult: string, questionType: string, tag?: string) => this.processGptOutput(sortResult, questionType, tag); + GPTPopup.Instance.onQuizRandom = () => this.quizMode() + }; componentDidMount(): void { @@ -103,9 +108,17 @@ export class CollectionCardView extends CollectionSubView() { }); + // Reaction to cardSort changes this._disposers.sort = reaction( - () => ({ cardSort: this.cardSort }), - ({ cardSort}) => (cardSort === cardSortings.Chat ? this.openChatPopup() : GPTPopup.Instance.setVisible(false)) + () => this.cardSort, + (cardSort) => { + if (cardSort === cardSortings.Chat) { + this.openChatPopup(); + } else { + GPTPopup.Instance.setVisible(false); + } + // Force re-render to see if this resolves the sorting issue + } ); @@ -121,6 +134,7 @@ export class CollectionCardView extends CollectionSubView() { } @computed get cardSort() { + // console.log(StrCast(this.Document.cardSort) as any as cardSortings) return StrCast(this.Document.cardSort) as any as cardSortings; } @@ -151,6 +165,16 @@ export class CollectionCardView extends CollectionSubView() { return regularDocs; } + quizMode () { + + const randomIndex = Math.floor(Math.random() * this.childDocs.length) + console.log('hiiiiiii') + + SelectionManager.DeselectAll() + DocumentView.SelectView(DocumentView.getDocumentView(this.childDocs[randomIndex]), false) + + } + /** @@ -290,13 +314,48 @@ export class CollectionCardView extends CollectionSubView() { }; - @computed get sortedDocs() { + get sortedDocs() { // console.log("hi hi hi") // console.log(this.layoutDoc.cardSort_isDesc + "layoutdoc desc") - console.log(this.cardSort + "card sort") + // console.log(this.cardSort + "card sort") - return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.layoutDoc.cardSort_isDesc), this._docDraggedIndex); + return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.Document.cardSort_isDesc), this._docDraggedIndex); } + + tagValue(doc: Doc) { + const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); + + const isTagActive = (buttonID: number) => { + return BoolCast(doc[StrCast(Doc.UserDoc()[keys[buttonID]])]); + }; + + let base = ''; + let fraction = ''; + + for (let i = 0; i < keys.length; i++) { + if (isTagActive(i)) { + if (base === '') { + base = i.toString(); // First active tag becomes the base + } else { + fraction += i.toString(); // Subsequent active tags become part of the fraction + } + } + } + + // If no tag was active, return 0 by default + if (base === '') { + return 0; + } + + // Construct the final number by appending the fraction if it exists + const numberString = fraction ? `${base}.${fraction}` : base; + + // Convert the result to a number and return + return Number(numberString); + } + + + /** * Called in the sortedDocsType method. Compares the cards' value in regards to the desired sort type-- earlier cards are move to the * front, latter cards to the back @@ -305,7 +364,8 @@ export class CollectionCardView extends CollectionSubView() { * @param isDesc * @returns */ - sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { + @action sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { + // console.log('hiiii') // if (sortType === cardSortings.None) return docs; // if(sortType !== cardSortings.None){ @@ -319,12 +379,13 @@ export class CollectionCardView extends CollectionSubView() { case cardSortings.Color: return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)), ClientUtils.hexToHsv(StrCast(docB.backgroundColor))]; - case cardSortings.Custom: - return [CollectionCardView.getButtonGroup(this.cardSort_customField, docA) ?? 9999, - CollectionCardView.getButtonGroup(this.cardSort_customField, docB) ?? 9999]; + case cardSortings.Tag: + return [this.tagValue(docA) ?? 9999, + this.tagValue(docB) ?? 9999]; case cardSortings.Chat: - return [NumCast(docA.chat) ?? 9999, - NumCast(docB.chat) ?? 9999] + return [NumCast(docA.chatIndex) ?? 9999, + NumCast(docB.chatIndex) ?? 9999] + default: return [StrCast(docA.type), StrCast(docB.type)] @@ -487,12 +548,19 @@ export class CollectionCardView extends CollectionSubView() { * Converts the gpt output into a hashmap that can be used for sorting. lists are seperated by ==== while elements within the list are seperated by ~~~~~~ * @param gptOutput */ - @action processGptOutput = (gptOutput: string) => { + @action processGptOutput = (gptOutput: string, questionType: string, tag?: string) => { console.log("HIIII") console.log(StrCast(this.Document.cardSort) + "cardSort") // Split the string into individual list items const listItems = gptOutput.split('======').filter(item => item.trim() !== ''); + + + if (questionType == '2' || questionType == '4'){ + this.childDocs.forEach(d => { + d['chatFilter'] = false + }) + } // console.log(listItems + " LISTT"); // Debug: print the map contents @@ -509,10 +577,47 @@ export class CollectionCardView extends CollectionSubView() { // console.log("ITEM:", normalizedItem); if (doc) { - doc.chat = index; + switch (questionType){ + case '6': + doc.chatIndex = index + console.log(index) + break + case '1': + const allHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + + let myTag = '' + + if (tag){ + for (let i=0; i< allHotKeys.length; i++){ + if (tag.includes(allHotKeys[i])){ + myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]) + break + } + + else if (tag.includes(StrCast(Doc.UserDoc()[allHotKeys[i]]))){ + myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]) + break + } + } + + if (myTag != ''){ + doc[myTag] = true + } + } + break + case '2': + case '4': + doc['chatFilter'] = true + Doc.setDocFilter(DocCast(this.Document.embedContainer), 'chatFilter', true, 'match'); + break + + + + } } else { console.warn(`No matching document found for item: ${normalizedItem}`); } + }); } @@ -528,100 +633,20 @@ export class CollectionCardView extends CollectionSubView() { const sortDesc = await this.childPairStringList(); // Await the promise to get the string result GPTPopup.Instance.setCardsDoneLoading(true); // Set dataDoneLoading to true after data is loaded GPTPopup.Instance.setSortDesc(sortDesc.join()); - GPTPopup.Instance.onSortComplete = (sortResult: string) => this.processGptOutput(sortResult); - }; - - /** - * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups - * @param doc - * @param cardSort - * @returns - */ - renderButtons = (doc: Doc, cardSort: cardSortings): JSX.Element | null => { - // if (cardSort !== cardSortings.Custom) return null; - - const amButtons = 4 - - // const amButtons = Math.max( - // 4, - // this.childDocs?.reduce((set, d) => { - // if (this.cardSort_customField) { - // set.add(NumCast(d[this.cardSort_customField])); - // } - // return set; - // }, new Set()).size ?? 0 - // ); - - // const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); - - const totalWidth = amButtons * 72 + amButtons * 2 * 5 + 6; - - const iconMap: { [key: number]: any } = { - 0: 'star', - 1: 'heart', - 2: 'cloud', - 3: 'bolt' - }; - - return ( -
- {numberRange(amButtons).map(i => ( - Click to add/remove this card from the {iconMap[i]} group
}> - - - ))} -
- ); - }; - - /** - * Toggles the buttons between on and off when creating custom sort groupings/changing those created by gpt - * @param childPairIndex - * @param buttonID - * @param doc - */ - toggleButton = undoable((doc: Doc, icon: string) => { - - - - // this.cardSort_customField && (doc[this.cardSort_customField] = buttonID); - - // doc.cardSort_activeIcons = new List() - - - // const list = StrListCast(doc.cardSort_activeIcons); - // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); - - BoolCast(doc[icon]) ? doc[icon] = false : doc[icon] = true - - - - // StrListCast(doc.cardSort_activeIcons).push(iconMap[buttonID]) - }, 'toggle card tag'); - - - getButtonIcon = (doc: Doc, icon: any): JSX.Element => { - - // const isActive = StrListCast(doc.cardSort_activeIcons).includes(icon) - const isActive = doc[icon] - - // console.log(StrListCast(doc.cardSort_activeIcons)) - const color = isActive ? '#4476f7' : '#323232'; - - return ; + GPTPopup.Instance.onSortComplete = (sortResult: string, questionType: string, tag?: string) => this.processGptOutput(sortResult, questionType, tag); + GPTPopup.Instance.onQuizRandom = () => this.quizMode() }; /** * Actually renders all the cards */ renderCards = () => { + // console.log('christ') const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); const isEmpty = this.childDocsWithoutLinks.length === 0; const isDesc = BoolCast(this.Document.cardSort_isDesc) - console.log(this.childDocsWithoutLinks.length + "length") + // console.log(this.childDocsWithoutLinks.length + "length") if (isEmpty) { return ( diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index a48e3f9d9..1efcd84e4 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -146,7 +146,7 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' } // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'chat' | 'up' | 'down' | 'pile' | 'toggle-chat', + const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'chat' | 'up' | 'down' | 'pile' | 'toggle-chat' | 'tag', { waitForRender?: boolean; checkResult: (doc: Doc) => any; @@ -193,6 +193,10 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "color", setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "color" ? doc.cardSort = '' : doc.cardSort = 'color', }], + ['tag', { + checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "tag", + setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "tag" ? doc.cardSort = '' : doc.cardSort = 'tag', + }], // ['heart', { // checkResult: (doc: Doc) => isAttrFiltered('heart'), // setDoc: (doc: Doc, dv: DocumentView) => { @@ -221,16 +225,16 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' // } // }], - ['chat', { - checkResult: (doc: Doc) => { + // ['chat', { + // checkResult: (doc: Doc) => { - if (StrCast(doc?.cardSort) === "chat"){ - return true - }} , - setDoc: (doc: Doc, dv: DocumentView) => { - doc.cardSort === "chat" ? doc.cardSort = '' : doc.cardSort = 'chat'; - }, - }], + // if (StrCast(doc?.cardSort) === "chat"){ + // return true + // }} , + // setDoc: (doc: Doc, dv: DocumentView) => { + // doc.cardSort === "chat" ? doc.cardSort = '' : doc.cardSort = 'chat'; + // }, + // }], ['up', { checkResult: (doc: Doc) => BoolCast(!doc?.cardSort_isDesc), setDoc: (doc: Doc, dv: DocumentView) => { @@ -248,6 +252,8 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' setDoc: (doc: Doc, dv: DocumentView) => { GPTPopup.Instance.setVisible(!GPTPopup.Instance.visible); GPTPopup.Instance.setMode(GPTPopupMode.SORT); + doc.cardSort === "chat" ? doc.cardSort = '' : doc.cardSort = 'chat'; + }, }], diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index c72d48ef5..8aa6bff2b 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -26,6 +26,9 @@ import { setupMoveUpEvents } from "../../../ClientUtils"; import { returnFalse } from "../../../ClientUtils"; import { emptyFunction } from "../../../Utils"; import { CollectionViewType } from "../../documents/DocumentTypes"; +import { SnappingManager } from "../../util/SnappingManager"; +import { MainView } from "../MainView"; +import { PropertiesView } from "../PropertiesView"; export interface IconTagProps { @@ -129,7 +132,7 @@ export class IconTagBox extends ObservableReactComponent { renderButtons = (doc: Doc): JSX.Element | null => { // if (cardSort !== cardSortings.Custom) return null; - const amButtons = StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length + const amButtons = (StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length) + 1 const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) @@ -146,7 +149,7 @@ export class IconTagBox extends ObservableReactComponent { // const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); - const totalWidth = amButtons * 35 + amButtons * 2 * 5 + 6; + const totalWidth = (amButtons -1) * 35 + (amButtons -1) * 2 * 5 + 6; const iconMap = (buttonID: number) => { return StrCast(Doc.UserDoc()[keys[buttonID]]) @@ -169,17 +172,31 @@ export class IconTagBox extends ObservableReactComponent { fontSize: '50px' }} > - {numberRange(amButtons).map(i => ( + {numberRange(amButtons-1).map(i => ( Click to add/remove this card from the {iconMap(i)} group}> ))} + + {/* Click to customize these icons}> + + */} ); }; + openHotKeyMenu = () => { + SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); + SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? Math.min(MainView.Instance._dashUIWidth - 50, 250) : 0); + + PropertiesView.Instance.CloseAll() + PropertiesView.Instance.openFilters = true + } + /** * Toggles the buttons between on and off when creating custom sort groupings/changing those created by gpt * @param childPairIndex diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.scss b/src/client/views/pdf/GPTPopup/GPTPopup.scss index eaa3eaebf..1defd1a7f 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.scss +++ b/src/client/views/pdf/GPTPopup/GPTPopup.scss @@ -78,15 +78,63 @@ $highlightedText: #82e0ff; align-items: center; flex-direction: column; - transform: translateY(30px); + .inputWrapper{ + display: flex; + justify-content: center; + align-items: center; + height: 60px; + position: absolute; + bottom: 0; + width: 100%; + background-color: white; + + } .searchBox-input{ - transform: translateY(-15px); - height: 50px; + height: 40px; border-radius: 10px; + position: absolute; + bottom: 10px; border-color: #5b97ff; + width: 90% + } + + .chat-wrapper { + display: flex; + flex-direction: column; + width: 100%; + max-height: calc(100vh - 80px); /* Height minus the input box and some padding */ + overflow-y: auto; + padding-bottom: 60px; /* Space for the input */ + } + + .chat-bubbles { + margin-top: 20px; + display: flex; + flex-direction: column; + flex-grow: 1; + } + + .chat-bubble { + padding: 10px; + margin-bottom: 10px; + border-radius: 10px; + max-width: 60%; } + + .user-message { + background-color: #283d53; + align-self: flex-end; + color: whitesmoke; + } + + .chat-message { + background-color: #367ae7; + align-self: flex-start; + color:whitesmoke; + } + @@ -98,6 +146,8 @@ $highlightedText: #82e0ff; + + } // button { diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index d216cc421..1b44508d7 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -34,6 +34,13 @@ export enum GPTPopupMode { QUIZ } +export enum GPTQuizType { + CURRENT = 0, + CHOOSE = 1, + MULTIPLE = 2 + +} + @@ -151,7 +158,8 @@ export class GPTPopup extends ObservableReactComponent { this.sortDesc = t; }; - @observable onSortComplete?: (sortResult: string) => void; + @observable onSortComplete?: (sortResult: string, questionType: string, tag?: string) => void; + @observable onQuizRandom?: () => void; @observable cardsDoneLoading = false; @action setCardsDoneLoading(done: boolean) { @@ -165,6 +173,9 @@ export class GPTPopup extends ObservableReactComponent { this.sortRespText = resp } + //mode where gpt says to select a specific card + // + @observable chatSortPrompt: string = "" @@ -179,39 +190,65 @@ export class GPTPopup extends ObservableReactComponent { this.quizAnswer = e.target.value; }); + + @observable correctAnswer: string = '' + @observable setCorrectAnswer = (s: string) => { + this.correctAnswer = s + } + generateQuiz = async () => { this.setLoading(true); this.setSortDone(false); + const quizType = this.quizMode; const selected = DocumentView.SelectedDocs().lastElement(); - const questionText = 'Question: ' + StrCast(selected['gptInputText']); - if (StrCast(selected['gptRubric']) === '') { - const rubricText = 'Rubric: ' + await this.generateRubric(StrCast(selected['gptInputText']), selected) - } + const questionText = 'Question: ' + StrCast(selected['gptInputText']); - const rubricText = 'Rubric: ' + (StrCast(selected['gptRubric'])) - // const rubricText = 'Rubric: ' + StrCast(RTFCast(DocCast(this.dataDoc[this.fieldKey + '_0']).text)?.Text); - const queryText = questionText + ' UserAnswer: ' + this.quizAnswer + '. ' + 'Rubric' + rubricText; + if (StrCast(selected['gptRubric']) === '') { + const rubricText = 'Rubric: ' + await this.generateRubric(StrCast(selected['gptInputText']), selected) + } - try { - const res = await gptAPICall(queryText, GPTCallType.QUIZ); - if (!res) { - console.error('GPT call failed'); - return; - } - console.log(res) - this.setQuizResp(res) + const rubricText = 'Rubric: ' + (StrCast(selected['gptRubric'])) + // const rubricText = 'Rubric: ' + StrCast(RTFCast(DocCast(this.dataDoc[this.fieldKey + '_0']).text)?.Text); + const queryText = questionText + ' UserAnswer: ' + this.quizAnswer + '. ' + 'Rubric' + rubricText; - this.setLoading(false); - this.setSortDone(true); + try { + const res = await gptAPICall(queryText, GPTCallType.QUIZ); + if (!res) { + console.error('GPT call failed'); + return; + } + console.log(res) + this.setQuizResp(res) + this.conversationArray.push(res) + + this.setLoading(false); + this.setSortDone(true); + + // this._outputValue = res; + } catch (err) { + console.error('GPT call failed'); + } + + + if (this.onQuizRandom){ + this.onQuizRandom() + } - // this._outputValue = res; - } catch (err) { - console.error('GPT call failed'); - } + + + + + // switch(quizType){ + // default: + + // } + + + } @@ -254,11 +291,7 @@ export class GPTPopup extends ObservableReactComponent { } - - /** - * Sorts cards in the CollectionCardDeckView - */ - generateSort = async () => { + generateCard = async () => { console.log(this.chatSortPrompt + "USER PROMPT") this.setLoading(true); this.setSortDone(false); @@ -268,17 +301,50 @@ export class GPTPopup extends ObservableReactComponent { } try { - const res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); + // const res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); + const questionType = await gptAPICall(this.chatSortPrompt, GPTCallType.TYPE); + const questionNumber = questionType.split(' ')[0] + console.log(questionType) + let res = '' + + switch (questionNumber) { + case '1': + case '2': + case '4': + res = await gptAPICall(this.sortDesc, GPTCallType.SUBSET, this.chatSortPrompt); + break + case '6': + res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); + break + default: + + const selected = DocumentView.SelectedDocs().lastElement(); + const questionText = StrCast(selected!['gptInputText']); + + + res = await gptAPICall(questionText, GPTCallType.INFO, this.chatSortPrompt); + break + } + + + // const res = await gptAPICall(this.sortDesc, GPTCallType.SUBSET, this.chatSortPrompt); // Trigger the callback with the result if (this.onSortComplete) { - this.onSortComplete(res || 'Something went wrong :('); + this.onSortComplete(res || 'Something went wrong :(', questionNumber, questionType.split(' ').slice(1).join(' ')); + + let explanation = res + + if (questionType != '5' && questionType != '3'){ // Extract explanation surrounded by ------ at the top or both at the top and bottom const explanationMatch = res.match(/------\s*([\s\S]*?)\s*(?:------|$)/) || []; - const explanation = explanationMatch[1] ? explanationMatch[1].trim() : 'No explanation found'; + explanation = explanationMatch[1] ? explanationMatch[1].trim() : 'No explanation found'; + } // Set the extracted explanation to sortRespText this.setSortRespText(explanation); + this.conversationArray.push(this.sortRespText) + this.scrollToBottom() console.log(res); } @@ -289,6 +355,43 @@ export class GPTPopup extends ObservableReactComponent { this.setLoading(false); this.setSortDone(true); }; + + + // /** + // * Sorts cards in the CollectionCardDeckView + // */ + // generateSort = async () => { + // console.log(this.chatSortPrompt + "USER PROMPT") + // this.setLoading(true); + // this.setSortDone(false); + + // if (this.regenerateCallback) { + // await this.regenerateCallback(); + // } + + // try { + // const res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); + + // // Trigger the callback with the result + // if (this.onSortComplete) { + // this.onSortComplete(res || 'Something went wrong :('); + + // // Extract explanation surrounded by ------ at the top or both at the top and bottom + // const explanationMatch = res.match(/------\s*([\s\S]*?)\s*(?:------|$)/) || []; + // const explanation = explanationMatch[1] ? explanationMatch[1].trim() : 'No explanation found'; + + // // Set the extracted explanation to sortRespText + // this.setSortRespText(explanation); + + // console.log(res); + // } + // } catch (err) { + // console.error(err); + // } + + // this.setLoading(false); + // this.setSortDone(true); + // }; /** @@ -422,19 +525,40 @@ export class GPTPopup extends ObservableReactComponent { super(props); makeObservable(this); GPTPopup.Instance = this; + this.messagesEndRef = React.createRef(); + } + private messagesEndRef: React.RefObject; + + + scrollToBottom = () => { + setTimeout(() => { + // Code to execute after 1 second (1000 ms) + if (this.messagesEndRef.current) { + + this.messagesEndRef.current.scrollIntoView({ behavior: 'smooth', block: 'end' }); + } + + }, 50); + } + componentDidUpdate = () => { if (this.loading) { this.setDone(false); } }; + @observable quizMode : GPTQuizType = GPTQuizType.CURRENT + @action setQuizMode (g: GPTQuizType) { + this.quizMode = g + } + cardMenu = () => (
) + + @observable conversationArray: string[] = ["Hi! In this pop up, you can ask ChatGPT questions about your documents and filter / sort them. If you're not sure if something is possible-- just ask!"] + + + handleKeyPress = async (e: React.KeyboardEvent, isSort: boolean) => { + if (e.key === 'Enter') { + e.stopPropagation(); + + if (isSort) { + this.conversationArray.push(this.chatSortPrompt); + await this.generateCard(); + this.chatSortPrompt = '' + + } else { + this.conversationArray.push(this.quizAnswer); + await this.generateQuiz(); + this.quizAnswer = '' + + } + + this.scrollToBottom(); + } + } cardActual = (opt: GPTPopupMode) => { const isSort = opt === GPTPopupMode.SORT // if (opt === GPTPopupMode.SORT) { return ( - !this.sortDone ? ( - <> -
+ // !this.sortDone ? ( + // <> +
+ {/* Chat bubble container with scroll */} +
+
+ {this.conversationArray.map((message, index) => ( +
+ {message} +
+ ))} + + {/* Conditional Loading message */} + {(!this.cardsDoneLoading || this.loading) && ( +
+ ... +
+ )} +
+ +
+ +
+ +
{ - if (e.key === 'Enter') { - isSort ? this.generateSort() : this.generateQuiz(); + onKeyDown={(e) => { + this.handleKeyPress(e, isSort) + + } - e.stopPropagation(); - }} + } type="text" - placeholder={`${isSort ? 'How do you want to sort your cards?' : 'Define the selected card?'}`} - id="search-input" - style={{ width: '100%' }} - /> - {/*
-
*/} -
- - ) : ( -
-
-

{this.text === 'Something went wrong :(' ? 'Something went wrong :(' : `${isSort ? this.sortRespText : this.quizRespText}`}

- this.setSortDone(false)} - icon={} - color={StrCast(Doc.UserDoc().userVariantColor)} + placeholder={`${isSort ? 'Have ChatGPT sort, tag, define, or filter your cards for you!' : 'Define the selected card!'}`} />
- ) + + + // + // ) : ( + //
+ //
+ //

{this.text === 'Something went wrong :(' ? 'Something went wrong :(' : `${isSort ? this.sortRespText : this.quizRespText}`}

+ // this.setSortDone(false)} + // icon={} + // color={StrCast(Doc.UserDoc().userVariantColor)} + // /> + //
+ //
+ // ) ); // } else if (opt === GPTPopupMode.QUIZ) { // return ( @@ -563,10 +728,10 @@ export class GPTPopup extends ObservableReactComponent { }; sortBox = () => ( -
+
{this.heading(this.mode === GPTPopupMode.SORT ? 'SORTING' : 'QUIZ')} <> - {!this.cardsDoneLoading || this.loading ? ( + {!this.cardsDoneLoading? (
@@ -737,7 +902,7 @@ export class GPTPopup extends ObservableReactComponent { tooltip="back" icon={} onClick={() => this.mode = GPTPopupMode.CARD} - style = {{right: '-20%'}} + style = {{right: '50px', position: 'absolute'}} /> )} Date: Tue, 10 Sep 2024 14:54:44 -0400 Subject: moved TagsView up into DocumentView so that one row of tags will be visible. fixed setting pixel size of images to resize annotations so they don't appear to change. added vert/horiz centering for stacking views. fixed pres box to not have scroll bars. fixed resizing properties panel. --- src/client/documents/Documents.ts | 3 ++- src/client/util/CurrentUserUtils.ts | 12 ++++++----- src/client/views/MainView.tsx | 8 +++++--- src/client/views/SidebarAnnos.tsx | 1 + src/client/views/StyleProvider.tsx | 2 +- src/client/views/TagsView.tsx | 7 +++++-- .../views/collections/CollectionCalendarView.tsx | 1 + .../views/collections/CollectionStackingView.scss | 7 ++----- .../views/collections/CollectionStackingView.tsx | 13 +++++++++--- .../CollectionStackingViewFieldColumn.tsx | 24 ++++++++++------------ src/client/views/collections/TreeView.tsx | 2 +- .../collectionFreeForm/FaceCollectionBox.tsx | 1 + src/client/views/global/globalScripts.ts | 14 ++++++++----- src/client/views/nodes/DocumentView.scss | 2 +- src/client/views/nodes/FieldView.tsx | 1 + src/client/views/nodes/ImageBox.tsx | 14 +++++++++++-- 16 files changed, 70 insertions(+), 42 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index d5a7b0465..fbdf361dd 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -260,6 +260,7 @@ export class DocumentOptions { _layout_noSidebar?: BOOLt = new BoolInfo('whether to display the sidebar toggle button'); layout_boxShadow?: string; // box-shadow css string OR "standard" to use dash standard box shadow layout_maxShown?: NUMt = new NumInfo('maximum number of children to display at one time (see multicolumnview)'); + _layout_dontCenter?: STRt = new StrInfo("whether collections will center their content - values of 'x', 'xy', or 'y'"); _layout_autoHeight?: BOOLt = new BoolInfo('whether document automatically resizes vertically to display contents'); _layout_autoHeightMargins?: NUMt = new NumInfo('Margin heights to be added to the computed auto height of a Doc'); _layout_curPage?: NUMt = new NumInfo('current page of a PDF or other? paginated document', false); @@ -979,7 +980,7 @@ export namespace Docs { } export function StackingDocument(documents: Array, options: DocumentOptions, id?: string, protoId?: string) { - return InstanceFromProto(Prototypes.get(DocumentType.COL), new List(documents), { ...options, _type_collection: CollectionViewType.Stacking }, id, undefined, protoId); + return InstanceFromProto(Prototypes.get(DocumentType.COL), new List(documents), { _layout_dontCenter: 'y', ...options, _type_collection: CollectionViewType.Stacking }, id, undefined, protoId); } export function NoteTakingDocument(documents: Array, options: DocumentOptions, id?: string, protoId?: string) { diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index f042f33ce..2014c48e1 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -368,7 +368,7 @@ pie title Minerals in my tap water {key: "Chat", creator: Docs.Create.ChatDocument, opts: { _width: 300, _height: 300, }}, {key: "Header", creator: headerTemplate, opts: { _width: 300, _height: 120, _header_pointerEvents: "all", _header_height: 50, _header_fontSize: 9,_layout_autoHeightMargins: 50, _layout_autoHeight: true, treeView_HideUnrendered: true}}, {key: "ViewSlide", creator: slideView, opts: { _width: 400, _height: 300, _xMargin: 3, _yMargin: 3,}}, - {key: "Trail", creator: Docs.Create.PresDocument, opts: { _width: 400, _height: 30, _type_collection: CollectionViewType.Stacking, dropAction: dropActionType.embed, treeView_HideTitle: true, _layout_fitWidth:true, layout_boxShadow: "0 0" }}, + {key: "Trail", creator: Docs.Create.PresDocument, opts: { _width: 400, _height: 30, _type_collection: CollectionViewType.Stacking, _layout_dontCenter:'xy', dropAction: dropActionType.embed, treeView_HideTitle: true, _layout_fitWidth:true, layout_boxShadow: "0 0" }}, {key: "Tab", creator: opts => Docs.Create.FreeformDocument([], opts), opts: { _width: 500, _height: 800, _layout_fitWidth: true, _freeform_backgroundGrid: true, }}, {key: "Slide", creator: opts => Docs.Create.TreeDocument([], opts), opts: { _width: 300, _height: 200, _type_collection: CollectionViewType.Tree, treeView_HasOverlay: true, _text_fontSize: "20px", _layout_autoHeight: true, @@ -477,6 +477,7 @@ pie title Minerals in my tap water const reqdStackOpts:DocumentOptions ={ title: "menuItemPanel", childDragAction: dropActionType.same, layout_boxShadow: "rgba(0,0,0,0)", dontRegisterView: true, ignoreClick: true, + _layout_dontCenter: 'y', _chromeHidden: true, _gridGap: 0, _yMargin: 0, _xMargin: 0, _layout_autoHeight: false, _width: 60, _columnWidth: 60, _lockedPosition: true, isSystem: true, }; return DocUtils.AssignDocField(doc, field, (opts, items) => Docs.Create.StackingDocument(items??[], opts), reqdStackOpts, menuBtns, { dropConverter: "convertToButtons(dragData)" }); @@ -510,7 +511,7 @@ pie title Minerals in my tap water // doc.myUserBtns = new PrefetchProxy(userBtns); const reqdToolOps:DocumentOptions = { title: "My Tools", isSystem: true, ignoreClick: true, layout_boxShadow: "0 0", - layout_explainer: "This is a palette of documents that can be created.", + layout_explainer: "This is a palette of documents that can be created.", _layout_dontCenter: "y", _layout_showTitle: "title", _width: 500, _yMargin: 20, _lockedPosition: true, _forceActive: true, _dragOnlyWithinContainer: true, layout_hideContextMenu: true, _chromeHidden: true, }; return DocUtils.AssignDocField(doc, field, (opts, items) => Docs.Create.StackingDocument(items??[], opts), reqdToolOps, [creatorBtns, userBtns]); @@ -663,7 +664,8 @@ pie title Minerals in my tap water } static stackTools(): Button[] { return [ - { title: "Center", icon: "align-center", toolTip: "Center Align Stack", btnType: ButtonType.ToggleButton, ignoreClick: true, expertMode: false, toolType:"center", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // Only when floating document is selected in freeform + { title: "V. Align", icon: "pallet", toolTip: "Center Align Stack", btnType: ButtonType.ToggleButton, ignoreClick: true, expertMode: false, toolType:"vcenter", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // Only when floating document is selected in freeform + { title: "Center", icon: "align-center", toolTip: "Center Align Stack", btnType: ButtonType.ToggleButton, ignoreClick: true, expertMode: false, toolType:"hcenter", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, // Only when floating document is selected in freeform ] } static cardTools(): Button[] { @@ -777,8 +779,8 @@ pie title Minerals in my tap water } static imageTools() { return [ - { title: "Pixels",toolTip: "Set Native Pixel Sizze", btnType: ButtonType.ClickButton, icon: "portrait", scripts: { onClick: 'imageSetPixelSize();' }}, - { title: "Rotate",toolTip: "Rotate 90", btnType: ButtonType.ClickButton, icon: "redo-alt", scripts: { onClick: 'imageRotate90();' }}, + { title: "Pixels",toolTip: "Set Native Pixel Size", btnType: ButtonType.ClickButton, icon: "portrait", scripts: { onClick: 'imageSetPixelSize();' }}, + { title: "Rotate",toolTip: "Rotate 90", btnType: ButtonType.ClickButton, icon: "redo-alt", scripts: { onClick: 'imageRotate90();' }}, ]; } static contextMenuTools():Button[] { diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 9f1c7da3d..393abea53 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -3,7 +3,7 @@ import { faBuffer, faHireAHelper } from '@fortawesome/free-brands-svg-icons'; import * as far from '@fortawesome/free-regular-svg-icons'; import * as fa from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { action, computed, configure, makeObservable, observable, reaction, runInAction } from 'mobx'; +import { action, computed, configure, makeObservable, observable, reaction, runInAction, trace } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import ResizeObserver from 'resize-observer-polyfill'; @@ -707,8 +707,8 @@ export class MainView extends ObservableReactComponent { setupMoveUpEvents( this, e, - action(() => { - SnappingManager.SetPropertiesWidth(Math.max(0, this._dashUIWidth - e.clientX)); + action(moveEv => { + SnappingManager.SetPropertiesWidth(Math.max(0, this._dashUIWidth - moveEv.clientX)); return !SnappingManager.PropertiesWidth; }), action(() => { @@ -807,6 +807,7 @@ export class MainView extends ObservableReactComponent { childFilters={returnEmptyFilter} childFiltersByRanges={returnEmptyFilter} searchFilterDocs={returnEmptyDoclist} + dontCenter="y" /> ); @@ -832,6 +833,7 @@ export class MainView extends ObservableReactComponent { }; @computed get mainInnerContent() { + trace(); const leftMenuFlyoutWidth = this._leftMenuFlyoutWidth + this.leftMenuWidth(); const width = this.propertiesWidth() + leftMenuFlyoutWidth; return ( diff --git a/src/client/views/SidebarAnnos.tsx b/src/client/views/SidebarAnnos.tsx index 8f0a35df0..dd60bfa65 100644 --- a/src/client/views/SidebarAnnos.tsx +++ b/src/client/views/SidebarAnnos.tsx @@ -246,6 +246,7 @@ export class SidebarAnnos extends ObservableReactComponent, props: Opt ); }; - const tags = () => props?.DocumentView?.() && CollectionFreeFormDocumentView.from(props.DocumentView()) ? : null; + const tags = () => props?.DocumentView?.() ? : null; return ( <> {paint()} diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 65e70e8fc..8047363d9 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -91,7 +91,7 @@ export class TagItem extends ObservableReactComponent { const tagCollection = TagItem.findTagCollectionDoc(tag) ?? TagItem.createTagCollectionDoc(tag); // If the document is of type COLLECTION, make it a smart collection, otherwise, add the tag to the document. - if (doc.type === DocumentType.COL) { + if (doc.type === DocumentType.COL && !doc.annotationOn) { Doc.AddDocToList(tagCollection[DocData], 'collections', doc); // Iterate through the tag Doc collections and add a copy of the document to each collection @@ -257,6 +257,7 @@ export class TagsView extends ObservableReactComponent { super(props); makeObservable(this); } + InsetDist = 25; // how far tag panel is moved up to overlap DocumentView. @observable _panelHeightDirty = 0; @observable _currentInput = ''; @@ -328,7 +329,7 @@ export class TagsView extends ObservableReactComponent { return !this._props.View.Document.showTags ? null : (
r && new ResizeObserver(action(() => (this._props.View.TagPanelHeight = r?.getBoundingClientRect().height ?? 0))).observe(r)} + ref={r => r && new ResizeObserver(action(() => (this._props.View.TagPanelHeight = Math.max(0, (r?.getBoundingClientRect().height ?? 0) - this.InsetDist)))).observe(r)} style={{ transformOrigin: 'top left', maxWidth: `${100 * this.currentScale}%`, @@ -336,6 +337,8 @@ export class TagsView extends ObservableReactComponent { transform: `scale(${1 / this.currentScale})`, backgroundColor: this.isEditing ? Colors.LIGHT_GRAY : Colors.TRANSPARENT, borderColor: this.isEditing ? Colors.BLACK : Colors.TRANSPARENT, + position: 'relative', + top: `calc(-${this.InsetDist} * ${1 / this.currentScale}px)`, }}>
diff --git a/src/client/views/collections/CollectionCalendarView.tsx b/src/client/views/collections/CollectionCalendarView.tsx index 30fd9fc2b..0ea9f8ebc 100644 --- a/src/client/views/collections/CollectionCalendarView.tsx +++ b/src/client/views/collections/CollectionCalendarView.tsx @@ -82,6 +82,7 @@ export class CollectionCalendarView extends CollectionSubView() { isAnnotationOverlay={false} // select={emptyFunction} What does this mean? isAnyChildContentActive={returnTrue} // ?? + dontCenter="y" // childDocumentsActive={} // whenChildContentsActiveChanged={} childHideDecorationTitle={false} diff --git a/src/client/views/collections/CollectionStackingView.scss b/src/client/views/collections/CollectionStackingView.scss index 6225cc52a..6400a0a8e 100644 --- a/src/client/views/collections/CollectionStackingView.scss +++ b/src/client/views/collections/CollectionStackingView.scss @@ -54,11 +54,8 @@ } .collectionStackingViewFieldColumn { - height: max-content; - } - - .collectionStackingViewFieldColumnDragging { - height: 100%; + display: flex; + flex-direction: column; } .collectionSchemaView-previewDoc { diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx index 6402ef16c..2cfe9329a 100644 --- a/src/client/views/collections/CollectionStackingView.tsx +++ b/src/client/views/collections/CollectionStackingView.tsx @@ -146,7 +146,7 @@ export class CollectionStackingView extends CollectionSubView @@ -343,7 +343,7 @@ export class CollectionStackingView extends CollectionSubView Array.from(this.Sections); // what a section looks like if we're in stacking view sectionStacking = (heading: SchemaHeaderField | undefined, docList: Doc[]) => { @@ -565,6 +571,7 @@ export class CollectionStackingView extends CollectionSubView ); }; diff --git a/src/client/views/collections/CollectionStackingViewFieldColumn.tsx b/src/client/views/collections/CollectionStackingViewFieldColumn.tsx index 5ae08e535..aba6b51d4 100644 --- a/src/client/views/collections/CollectionStackingViewFieldColumn.tsx +++ b/src/client/views/collections/CollectionStackingViewFieldColumn.tsx @@ -41,6 +41,7 @@ interface CSVFieldColumnProps { columnWidth: number; numGroupColumns: number; gridGap: number; + dontCenter: 'x' | 'xy' | 'y'; type: 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function' | undefined; headings: () => object[]; // I think that stacking view actually has a single column and then supposedly you can add more columns? Unsure @@ -345,15 +346,6 @@ export class CollectionStackingViewFieldColumn extends ObservableReactComponent< - {/* {evContents === noValueHeader ? null : ( -
- - - -
- )} */}
{this._props.Document._columnsHideIfEmpty ? null : headingView} {this.collapsed ? null : ( -
+
headings.indexOf(i) === idx); return (
{ }; docTransform = () => this.refTransform(this._dref?.ContentDiv); getTransform = () => this.refTransform(this._tref.current); - embeddedPanelWidth = () => this._props.panelWidth() / (this.treeView._props.NativeDimScaling?.() || 1); + embeddedPanelWidth = () => this._props.panelWidth() / (this.treeView._props.NativeDimScaling?.() || 1) - 3 /* paddingRight for bullet */; embeddedPanelHeight = () => { const layoutDoc = (temp => temp && Doc.expandTemplateLayout(temp, this.Document))(this.treeView._props.childLayoutTemplate?.()) || this.layoutDoc; return Math.min( diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index 717081666..f9f6c81ab 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -264,6 +264,7 @@ export class FaceCollectionBox extends ViewBoxBaseComponent() { isContentActive={returnTrue} isAnyChildContentActive={returnTrue} childHideDecorations={true} + dontCenter="y" />
); diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 2c7920bdd..934ed6c3e 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -133,10 +133,10 @@ ScriptingGlobals.add(function toggleOverlay(checkResult?: boolean) { }); // eslint-disable-next-line prefer-arrow-callback -ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' | 'clusters' | 'viewAll' | 'fitOnce', checkResult?: boolean, persist?: boolean) { +ScriptingGlobals.add(function showFreeform(attr: 'hcenter' | 'vcenter' | 'grid' | 'snaplines' | 'clusters' | 'viewAll' | 'fitOnce', checkResult?: boolean, persist?: boolean) { const selected = DocumentView.SelectedDocs().lastElement(); // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'links' | 'like' | 'star' | 'idea' | 'chat' | '1' | '2' | '3' | '4', + const map: Map<'flashcards' | 'hcenter' | 'vcenter' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'links' | 'like' | 'star' | 'idea' | 'chat' | '1' | '2' | '3' | '4', { waitForRender?: boolean; checkResult: (doc: Doc) => boolean; @@ -158,9 +158,13 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' else (dv.ComponentView as CollectionFreeFormView)?.fitContentOnce(); }, }], - ['center', { - checkResult: (doc:Doc) => BoolCast(doc?._stacking_alignCenter, false), - setDoc: (doc:Doc) => { doc._stacking_alignCenter = !doc._stacking_alignCenter; }, + ['vcenter', { + checkResult: (doc:Doc) => !StrCast(doc?._layout_dontCenter).includes('y'), + setDoc: (doc:Doc) => { doc._layout_dontCenter = StrCast(doc.layout_dontCenter).includes('y') ? StrCast(doc.layout_dontCenter).replace(/y/,"") : StrCast(doc.layout_dontCenter) + 'y'; }, + }], + ['hcenter', { + checkResult: (doc:Doc) => !StrCast(doc?._layout_dontCenter).includes('x'), + setDoc: (doc:Doc) => { doc._layout_dontCenter = StrCast(doc.layout_dontCenter).includes('x') ? StrCast(doc.layout_dontCenter).replace(/x/,"") : 'x'+ StrCast(doc.layout_dontCenter); }, }], ['clusters', { waitForRender: true, // flags that undo batch should terminate after a re-render giving the script the chance to fire diff --git a/src/client/views/nodes/DocumentView.scss b/src/client/views/nodes/DocumentView.scss index 23dada260..2873b4bba 100644 --- a/src/client/views/nodes/DocumentView.scss +++ b/src/client/views/nodes/DocumentView.scss @@ -242,7 +242,7 @@ .contentFittingDocumentView { position: relative; - display: flex; + display: block; width: 100%; height: 100%; transition: inherit; diff --git a/src/client/views/nodes/FieldView.tsx b/src/client/views/nodes/FieldView.tsx index dd71fd946..c269c7bcb 100644 --- a/src/client/views/nodes/FieldView.tsx +++ b/src/client/views/nodes/FieldView.tsx @@ -82,6 +82,7 @@ export interface FieldViewSharedProps { // eslint-disable-next-line no-use-before-define onKey?: (e: React.KeyboardEvent, fieldProps: FieldViewProps) => boolean | undefined; fitWidth?: (doc: Doc) => boolean | undefined; + dontCenter?: 'x' | 'y' | 'xy' | undefined; searchFilterDocs: () => Doc[]; showTitle?: () => string; whenChildContentsActiveChanged: (isActive: boolean) => void; diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index d0a7fc6ac..be3525544 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -11,7 +11,7 @@ import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { InkTool } from '../../../fields/InkField'; import { ObjectField } from '../../../fields/ObjectField'; -import { Cast, ImageCast, NumCast, StrCast } from '../../../fields/Types'; +import { Cast, ImageCast, NumCast, RTFCast, StrCast } from '../../../fields/Types'; import { ImageField } from '../../../fields/URLField'; import { TraceMobx } from '../../../fields/util'; import { emptyFunction } from '../../../Utils'; @@ -188,8 +188,9 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { @undoBatch setNativeSize = action(() => { + const oldnativeWidth = NumCast(this.dataDoc[this.fieldKey + '_nativeWidth']); const nscale = NumCast(this._props.PanelWidth()) * NumCast(this.layoutDoc._freeform_scale, 1); - const nw = nscale / NumCast(this.dataDoc[this.fieldKey + '_nativeWidth']); + const nw = nscale / oldnativeWidth; this.dataDoc[this.fieldKey + '_nativeHeight'] = NumCast(this.dataDoc[this.fieldKey + '_nativeHeight']) * nw; this.dataDoc[this.fieldKey + '_nativeWidth'] = NumCast(this.dataDoc[this.fieldKey + '_nativeWidth']) * nw; this.dataDoc._freeform_panX = nw * NumCast(this.dataDoc._freeform_panX); @@ -198,6 +199,15 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { this.dataDoc._freeform_panX_min = this.dataDoc._freeform_panX_min ? nw * NumCast(this.dataDoc._freeform_panX_min) : undefined; this.dataDoc._freeform_panY_max = this.dataDoc._freeform_panY_max ? nw * NumCast(this.dataDoc._freeform_panY_max) : undefined; this.dataDoc._freeform_panY_min = this.dataDoc._freeform_panY_min ? nw * NumCast(this.dataDoc._freeform_panY_min) : undefined; + const newnativeWidth = NumCast(this.dataDoc[this.fieldKey + '_nativeWidth']); + DocListCast(this.dataDoc[this.annotationKey]).forEach(doc => { + doc.x = (NumCast(doc.x) / oldnativeWidth) * newnativeWidth; + doc.y = (NumCast(doc.y) / oldnativeWidth) * newnativeWidth; + if (!RTFCast(doc[Doc.LayoutFieldKey(doc)])) { + doc.width = (NumCast(doc.width) / oldnativeWidth) * newnativeWidth; + doc.height = (NumCast(doc.height) / oldnativeWidth) * newnativeWidth; + } + }); }); @undoBatch rotate = action(() => { -- cgit v1.2.3-70-g09d2 From dc81c08086446df700185a0ad0a8ee8f16e06ab7 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 11 Sep 2024 09:35:10 -0400 Subject: fixed stacking view to used computedFn's to avoid invalidations and resotred DocumentView to flex layout by fixing stacking view's css --- .../views/collections/CollectionStackingView.tsx | 51 ++++++++++------------ src/client/views/nodes/DocumentView.scss | 2 +- 2 files changed, 24 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx index 2cfe9329a..e97ee713e 100644 --- a/src/client/views/collections/CollectionStackingView.tsx +++ b/src/client/views/collections/CollectionStackingView.tsx @@ -35,6 +35,7 @@ import { CollectionMasonryViewFieldRow } from './CollectionMasonryViewFieldRow'; import './CollectionStackingView.scss'; import { CollectionStackingViewFieldColumn } from './CollectionStackingViewFieldColumn'; import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; +import { computedFn } from 'mobx-utils'; export type collectionStackingViewProps = { sortFunc?: (a: Doc, b: Doc) => number; @@ -127,6 +128,9 @@ export class CollectionStackingView extends CollectionSubView this.columnWidth; + columnDocHeightFn = (doc: Doc) => () => (this.isStackingView ? this.getDocHeight(doc)() : Math.min(this.getDocHeight(doc)(), this._props.PanelHeight())); + // TODO: plj - these are the children children = (docs: Doc[]) => { // TODO: can somebody explain me to what exactly TraceMobX is? @@ -140,17 +144,14 @@ export class CollectionStackingView extends CollectionSubView { - const height = () => this.getDocHeight(d); - const width = () => this.getDocWidth(d); - const trans = () => this.getDocTransition(d); // assuming we need to get rowSpan because we might be dealing with many columns. Grid gap makes sense if multiple columns - const rowSpan = Math.ceil((height() + this.gridGap) / this.gridGap); + const rowSpan = Math.ceil((this.getDocHeight(d)() + this.gridGap) / this.gridGap); // just getting the style - const style = this.isStackingView ? { margin: this.dontCenter.includes('x') ? undefined : 'auto', transition: trans(), width: width(), marginTop: i ? this.gridGap : 0, height: height() } : { gridRowEnd: `span ${rowSpan}` }; + const style = this.isStackingView ? { margin: undefined, transition: this.getDocTransition(d)(), width: this.columnWidth, marginTop: i ? this.gridGap : 0, height: this.getDocHeight(d)() } : { gridRowEnd: `span ${rowSpan}` }; // So we're choosing whether we're going to render a column or a masonry doc return (
- {this.getDisplayDoc(d, width, trans, i)} + {this.getDisplayDoc(d, this.getDocTransition(d), i)}
); }); @@ -311,26 +312,23 @@ export class CollectionStackingView extends CollectionSubView (this._props.childDocumentsActive?.() === false || this.Document.childDocumentsActive === false ? false : undefined); @observable docRefs = new ObservableMap(); childFitWidth = (doc: Doc) => Cast(this.Document.childLayoutFitWidth, 'boolean', this._props.childLayoutFitWidth?.(doc) ?? Cast(doc.layout_fitWidth, 'boolean', null)); // this is what renders the document that you see on the screen // called in Children: this actually adds a document to our children list - getDisplayDoc(doc: Doc, width: () => number, trans: () => string, count: number) { + getDisplayDoc(doc: Doc, trans: () => string, count: number) { const dataDoc = doc.isTemplateDoc || doc.isTemplateForField ? this._props.TemplateDataDocument : undefined; - const height = () => this.getDocHeight(doc); - const panelHeight = () => (this.isStackingView ? height() : Math.min(height(), this._props.PanelHeight())); - const panelWidth = () => this.columnWidth; - const stackedDocTransform = () => this.getDocTransform(doc); - this._docXfs.push({ stackedDocTransform, width, height }); + this._docXfs.push({ stackedDocTransform: this.getDocTransform(doc), width: this.getDocWidth(doc), height: this.getDocHeight(doc) }); return count > this._renderCount ? null : ( r?.ContentDiv && this.docRefs.set(doc, r))} Document={doc} TemplateDataDocument={dataDoc} renderDepth={this._props.renderDepth + 1} - PanelWidth={panelWidth} - PanelHeight={panelHeight} + PanelWidth={this.columnWidthFn} + PanelHeight={this.columnDocHeightFn(doc)} pointerEvents={this.DocumentView?.()._props.onClickScript?.() ? returnNone : undefined} // if the stack has an onClick, then we don't want the contents to be interactive (see CollectionPileView) styleProvider={this.styleProvider} containerViewPath={this.childContainerViewPath} @@ -341,8 +339,8 @@ export class CollectionStackingView extends CollectionSubView () => { // these must be referenced for document decorations to update when the text box container is scrolled this._scroll; this._props.ScreenToLocalTransform(); @@ -381,8 +379,8 @@ export class CollectionStackingView extends CollectionSubView () => { if (!d) return 0; const childLayoutDoc = Doc.Layout(d, this._props.childLayoutTemplate?.()); const maxWidth = this.columnWidth / this.numGroupColumns; @@ -390,12 +388,9 @@ export class CollectionStackingView extends CollectionSubView () => StrCast(d?.dataTransition)); + getDocHeight = computedFn((d?: Doc) => () => { if (!d || d.hidden) return 0; const childLayoutDoc = Doc.Layout(d, this._props.childLayoutTemplate?.()); const childDataDoc = !d.isTemplateDoc && !d.isTemplateForField ? undefined : this._props.TemplateDataDocument; @@ -404,13 +399,13 @@ export class CollectionStackingView extends CollectionSubView { diff --git a/src/client/views/nodes/DocumentView.scss b/src/client/views/nodes/DocumentView.scss index 2873b4bba..23dada260 100644 --- a/src/client/views/nodes/DocumentView.scss +++ b/src/client/views/nodes/DocumentView.scss @@ -242,7 +242,7 @@ .contentFittingDocumentView { position: relative; - display: block; + display: flex; width: 100%; height: 100%; transition: inherit; -- cgit v1.2.3-70-g09d2 From 498201bb8d77192e4d4f6dcd04d6a6c2d9a3de73 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 11 Sep 2024 09:38:45 -0400 Subject: fixed multirowview resizer width --- .../views/collections/collectionMulticolumn/CollectionMultirowView.scss | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss index 0d49fabaa..91779065d 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss +++ b/src/client/views/collections/collectionMulticolumn/CollectionMultirowView.scss @@ -1,5 +1,6 @@ .collectionMultirowView_drop { height: 100%; + width: 100%; top: 0; left: 0; position: absolute; -- cgit v1.2.3-70-g09d2 From d3817d1c03b68ab2c69ab5ccfb5e8d6943df8f25 Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 11 Sep 2024 10:32:18 -0400 Subject: fixed comparisonBox to honor fitWidth of Docs. fixed dropping on empty muliticolumnview. --- src/client/views/collections/CollectionStackingViewFieldColumn.tsx | 2 +- .../collectionMulticolumn/CollectionMulticolumnView.scss | 1 + src/client/views/nodes/ComparisonBox.tsx | 7 ++++--- 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionStackingViewFieldColumn.tsx b/src/client/views/collections/CollectionStackingViewFieldColumn.tsx index aba6b51d4..ed0cabd0a 100644 --- a/src/client/views/collections/CollectionStackingViewFieldColumn.tsx +++ b/src/client/views/collections/CollectionStackingViewFieldColumn.tsx @@ -373,7 +373,7 @@ export class CollectionStackingViewFieldColumn extends ObservableReactComponent< style={{ padding: `${columnYMargin}px ${0}px ${this._props.yMargin}px ${0}px`, margin: this._props.dontCenter.includes('x') ? undefined : 'auto', - width: 'max-content', // singleColumn ? undefined : `${cols * (style.columnWidth + style.gridGap) + 2 * style.xMargin - style.gridGap}px`, + // width: 'max-content', // singleColumn ? undefined : `${cols * (style.columnWidth + style.gridGap) + 2 * style.xMargin - style.gridGap}px`, height: 'max-content', position: 'relative', gridGap: this._props.gridGap, diff --git a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss index 06d78c39e..9ed247d50 100644 --- a/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss +++ b/src/client/views/collections/collectionMulticolumn/CollectionMulticolumnView.scss @@ -1,5 +1,6 @@ .collectionMulticolumnView_drop { height: 100%; + width: 100%; top: 0; left: 0; position: absolute; diff --git a/src/client/views/nodes/ComparisonBox.tsx b/src/client/views/nodes/ComparisonBox.tsx index 1eae163df..39a2e3a31 100644 --- a/src/client/views/nodes/ComparisonBox.tsx +++ b/src/client/views/nodes/ComparisonBox.tsx @@ -3,7 +3,7 @@ import { Tooltip } from '@mui/material'; import { action, computed, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { returnFalse, returnNone, setupMoveUpEvents } from '../../../ClientUtils'; +import { returnFalse, returnNone, returnZero, setupMoveUpEvents } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; import { Doc, Opt } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; @@ -303,6 +303,9 @@ export class ComparisonBox extends ViewBoxAnnotatableComponent() () containerViewPath={this.DocumentView?.().docViewPath} moveDocument={whichSlot.endsWith('1') ? this.moveDoc1 : this.moveDoc2} removeDocument={whichSlot.endsWith('1') ? this.remDoc1 : this.remDoc2} - NativeWidth={this.layoutWidth} - NativeHeight={this.layoutHeight} isContentActive={emptyFunction} isDocumentActive={returnFalse} whenChildContentsActiveChanged={this.whenChildContentsActiveChanged} -- cgit v1.2.3-70-g09d2 From 623da0b4eec34fbd238cc26a5e0c105426a6711e Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 12 Sep 2024 09:50:31 -0400 Subject: added tags for multi-selections. --- src/client/views/DocumentButtonBar.tsx | 10 +++- src/client/views/DocumentDecorations.scss | 7 +++ src/client/views/DocumentDecorations.tsx | 11 +++- src/client/views/StyleProvider.tsx | 2 +- src/client/views/TagsView.tsx | 65 ++++++++++++++-------- .../collectionFreeForm/FaceCollectionBox.tsx | 2 +- 6 files changed, 69 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index 437ef045f..785e69f84 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -267,7 +267,15 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( get keywordButton() { return !DocumentView.Selected().length ? null : ( Open keyword menu
}> -
DocumentView.Selected().map(dv => (dv.dataDoc.showTags = !dv.dataDoc.showTags))}> +
{ + const showing = DocumentView.Selected().some(dv => dv.dataDoc.showTags); + DocumentView.Selected().forEach(dv => { + dv.dataDoc.showTags = !showing; + }); + }}>
diff --git a/src/client/views/DocumentDecorations.scss b/src/client/views/DocumentDecorations.scss index 67e1054c3..346df10d5 100644 --- a/src/client/views/DocumentDecorations.scss +++ b/src/client/views/DocumentDecorations.scss @@ -38,6 +38,13 @@ $resizeHandler: 8px; background: green; border-radius: 50%; } + .documentDecorations-tagsView { + position: absolute; + height: 100%; + pointer-events: all; + border-radius: 50%; + color: black; + } } .documentDecorations-container { diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index da35459bb..118a5bd3d 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -35,6 +35,7 @@ import { DocumentView } from './nodes/DocumentView'; import { ImageBox } from './nodes/ImageBox'; import { OpenWhere, OpenWhereMod } from './nodes/OpenWhere'; import { FormattedTextBox } from './nodes/formattedText/FormattedTextBox'; +import { TagsView } from './TagsView'; interface DocumentDecorationsProps { PanelWidth: number; @@ -835,12 +836,20 @@ export class DocumentDecorations extends ObservableReactComponent 1 ? 0 : `${doc[DocData].showTags ? 4 + seldocview.TagPanelHeight : 4}px`, transform: `translate(${-this._resizeBorderWidth / 2 + 10}px, ${this._resizeBorderWidth + bounds.b - bounds.y + this._titleHeight}px) `, }}> DocumentView.Selected()} />
)} +
+ {DocumentView.Selected().length > 1 ? : null} +
{useRotation && ( diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 513953d17..262f888fb 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -365,7 +365,7 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); }; - const tags = () => props?.DocumentView?.() ? : null; + const tags = () => props?.DocumentView?.() ? : null; return ( <> {paint()} diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 8047363d9..ae9d42749 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -33,7 +33,7 @@ import { FaceRecognitionHandler } from './search/FaceRecognitionHandler'; */ interface TagItemProps { - doc: Doc; + docs: Doc[]; tag: string; tagDoc: Opt; showRemoveUI: boolean; @@ -207,8 +207,12 @@ export class TagItem extends ObservableReactComponent { e.preventDefault(); }; + @computed get doc() { + return this._props.docs.lastElement(); + } + render() { - this._props.tagDoc && setTimeout(() => TagItem.addTagToDoc(this._props.doc, this._props.tag)); // bcz: hack to make sure that Docs are added to their tag Doc collection since metadata can get set anywhere without a guard triggering an add to the collection + this._props.tagDoc && setTimeout(() => this._props.docs.forEach(doc => TagItem.addTagToDoc(doc, this._props.tag))); // bcz: hack to make sure that Docs are added to their tag Doc collection since metadata can get set anywhere without a guard triggering an add to the collection const tag = this._props.tag.replace(/^#/, ''); const metadata = tag.startsWith('@') ? tag.replace(/^@/, '') : ''; return ( @@ -216,16 +220,16 @@ export class TagItem extends ObservableReactComponent { {metadata ? ( {tag}  - {typeof this._props.doc[metadata] === 'boolean' ? ( + {typeof this.doc[metadata] === 'boolean' ? ( e.stopPropagation()} onPointerDown={e => e.stopPropagation()} - onChange={undoable(e => (this._props.doc[metadata] = !this._props.doc[metadata]), 'metadata toggle')} - checked={this._props.doc[metadata] as boolean} + onChange={undoable(e => (this.doc[metadata] = !this.doc[metadata]), 'metadata toggle')} + checked={this.doc[metadata] as boolean} /> ) : ( - Field.toString(this._props.doc[metadata]) + Field.toString(this.doc[metadata]) )} ) : ( @@ -234,7 +238,7 @@ export class TagItem extends ObservableReactComponent { {this.props.showRemoveUI && this._props.tagDoc && ( TagItem.removeTagFromDoc(this._props.doc, this._props.tag, this._props.tagDoc), `remove tag ${this._props.tag}`)} + onPointerDown={undoable(() => this._props.docs.forEach(doc => TagItem.removeTagFromDoc(doc, this._props.tag, this._props.tagDoc)), `remove tag ${this._props.tag}`)} icon={} style={{ width: '8px', height: '8px', marginLeft: '10px' }} /> @@ -245,7 +249,7 @@ export class TagItem extends ObservableReactComponent { } interface TagViewProps { - View: DocumentView; + Views: DocumentView[]; } /** @@ -261,12 +265,12 @@ export class TagsView extends ObservableReactComponent { @observable _panelHeightDirty = 0; @observable _currentInput = ''; - @observable _isEditing = !StrListCast(this._props.View.dataDoc.tags).length; + @observable _isEditing = !StrListCast(this.View.dataDoc.tags).length; _heightDisposer: IReactionDisposer | undefined; componentDidMount() { this._heightDisposer = reaction( - () => this._props.View.screenToContentsTransform(), + () => this.View.screenToContentsTransform(), xf => { this._panelHeightDirty = this._panelHeightDirty + 1; } @@ -276,11 +280,15 @@ export class TagsView extends ObservableReactComponent { this._heightDisposer?.(); } + @computed get View() { + return this._props.Views.lastElement(); + } + @computed get currentScale() { - return Math.max(1, 1 / this._props.View.screenToLocalScale()); + return this._props.Views.length > 1 ? 1 : Math.max(1, 1 / this.View.screenToLocalScale()); } @computed get isEditing() { - return this._isEditing && DocumentView.SelectedDocs().includes(this._props.View.Document); + return this._isEditing && (this._props.Views.length > 1 || DocumentView.SelectedDocs().includes(this.View.Document)); } /** @@ -290,7 +298,7 @@ export class TagsView extends ObservableReactComponent { @action setToEditing = (editing = true) => { this._isEditing = editing; - editing && this._props.View.select(false); + editing && this._props.Views.length === 1 && this.View.select(false); }; /** @@ -303,8 +311,10 @@ export class TagsView extends ObservableReactComponent { action((tag: string) => { const submittedLabel = tag.trim().replace(/^#/, '').split(':'); if (submittedLabel[0]) { - TagItem.addTagToDoc(this._props.View.Document, '#' + submittedLabel[0]); - if (submittedLabel.length > 1) Doc.SetField(this._props.View.Document, submittedLabel[0].replace(/^@/, ''), ':' + submittedLabel[1]); + this._props.Views.forEach(view => { + TagItem.addTagToDoc(view.Document, '#' + submittedLabel[0]); + if (submittedLabel.length > 1) Doc.SetField(view.Document, submittedLabel[0].replace(/^@/, ''), ':' + submittedLabel[1]); + }); } this._currentInput = ''; // Clear the input box }), @@ -316,20 +326,20 @@ export class TagsView extends ObservableReactComponent { * When the dropdown is clicked, this will toggle an extended UI that allows additional tags to be added/removed. */ render() { - const tagsList = new Set(StrListCast(this._props.View.dataDoc.tags)); - const chatTagsList = new Set(StrListCast(this._props.View.dataDoc.tags_chat)); + const tagsList = new Set(StrListCast(this.View.dataDoc.tags)); + const chatTagsList = new Set(StrListCast(this.View.dataDoc.tags_chat)); const facesList = new Set( - DocListCast(this._props.View.dataDoc[Doc.LayoutFieldKey(this._props.View.Document) + '_annotations']) - .concat(this._props.View.Document) + DocListCast(this.View.dataDoc[Doc.LayoutFieldKey(this.View.Document) + '_annotations']) + .concat(this.View.Document) .filter(d => d.face) .map(doc => StrCast(DocCast(doc.face)?.title)) ); this._panelHeightDirty; - return !this._props.View.Document.showTags ? null : ( + return !this.View.Document.showTags && this._props.Views.length === 1 ? null : (
r && new ResizeObserver(action(() => (this._props.View.TagPanelHeight = Math.max(0, (r?.getBoundingClientRect().height ?? 0) - this.InsetDist)))).observe(r)} + ref={r => r && new ResizeObserver(action(() => this._props.Views.length === 1 && (this.View.TagPanelHeight = Math.max(0, (r?.getBoundingClientRect().height ?? 0) - this.InsetDist)))).observe(r)} style={{ transformOrigin: 'top left', maxWidth: `${100 * this.currentScale}%`, @@ -338,7 +348,7 @@ export class TagsView extends ObservableReactComponent { backgroundColor: this.isEditing ? Colors.LIGHT_GRAY : Colors.TRANSPARENT, borderColor: this.isEditing ? Colors.BLACK : Colors.TRANSPARENT, position: 'relative', - top: `calc(-${this.InsetDist} * ${1 / this.currentScale}px)`, + top: this._props.Views.length > 1 ? 25 : `calc(-${this.InsetDist} * ${1 / this.currentScale}px)`, }}>
@@ -346,10 +356,17 @@ export class TagsView extends ObservableReactComponent { this.setToEditing(!this._isEditing)} icon={} /> )} {Array.from(tagsList).map((tag, i) => ( - + view.Document)} + tag={tag} + tagDoc={TagItem.findTagCollectionDoc(tag) ?? TagItem.createTagCollectionDoc(tag)} + setToEditing={this.setToEditing} + showRemoveUI={this.isEditing} + /> ))} {Array.from(facesList).map((tag, i) => ( - + view.Document)} tag={tag} tagDoc={undefined} setToEditing={this.setToEditing} showRemoveUI={this.isEditing} /> ))}
{this.isEditing ? ( diff --git a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx index f9f6c81ab..534f67927 100644 --- a/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx +++ b/src/client/views/collections/collectionFreeForm/FaceCollectionBox.tsx @@ -179,7 +179,7 @@ export class UniqueFaceBox extends ViewBoxBaseComponent() { ele?.addEventListener('wheel', this.onPassiveWheel, { passive: false }); })}> {FaceRecognitionHandler.UniqueFaceImages(this.Document).map((doc, i) => { - const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)]).url.href.split('.'); + const [name, type] = ImageCast(doc[Doc.LayoutFieldKey(doc)])?.url.href.split('.') ?? ['-missing-', '.png']; return (
Date: Thu, 12 Sep 2024 13:40:10 -0400 Subject: fixed removing a face image from a face doc --- src/client/views/search/FaceRecognitionHandler.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 4f6f5d314..636a44984 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -119,8 +119,7 @@ export class FaceRecognitionHandler { * @param faceDoc - unique face Doc */ public static UniqueFaceRemoveFaceImage = (faceAnno: Doc, faceDoc: Doc) => { - Doc.RemoveDocFromList(faceDoc[DocData], 'face_annos', faceAnno); - faceAnno.face = undefined; + FaceRecognitionHandler.ImageDocFaceAnnos(faceAnno).forEach(face => Doc.RemoveDocFromList(faceDoc[DocData], 'face_annos', face) && (face.face = undefined)); }; constructor() { -- cgit v1.2.3-70-g09d2 From bb1f4c62071987cc59461a8ce53522fa7a9036cc Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 12 Sep 2024 14:42:10 -0400 Subject: changed closing of face rectangles to hide them. added Shift+click of tags button to show face rectangles. --- src/client/documents/Documents.ts | 1 + src/client/views/DocumentButtonBar.tsx | 14 +++++++++----- src/client/views/DocumentDecorations.tsx | 7 ++++--- src/client/views/TagsView.tsx | 6 +++--- .../views/collections/collectionFreeForm/ImageLabelBox.tsx | 4 ++-- src/client/views/nodes/formattedText/RichTextRules.ts | 2 +- src/client/views/search/FaceRecognitionHandler.tsx | 3 +++ 7 files changed, 23 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index fbdf361dd..89356072a 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -273,6 +273,7 @@ export class DocumentOptions { _layout_showTitle?: string; // field name to display in header (:hover is an optional suffix) _layout_showSidebar?: BOOLt = new BoolInfo('whether an annotationsidebar should be displayed for text docuemnts'); _layout_showCaption?: string; // which field to display in the caption area. leave empty to have no caption + _layout_showTags?: BOOLt = new BoolInfo('whether to show the list of document tags at the bottom of a DocView'); _chromeHidden?: BOOLt = new BoolInfo('whether the editing chrome for a document is hidden'); hideClickBehaviors?: BOOLt = new BoolInfo('whether to hide click behaviors in context menu'); diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index 785e69f84..f14fd033b 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -9,7 +9,7 @@ import * as React from 'react'; import { FaEdit } from 'react-icons/fa'; import { returnFalse, returnTrue, setupMoveUpEvents, simulateMouseClick } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; -import { Doc } from '../../fields/Doc'; +import { Doc, DocListCast } from '../../fields/Doc'; import { Cast, DocCast } from '../../fields/Types'; import { DocUtils, IsFollowLinkScript } from '../documents/DocUtils'; import { CalendarManager } from '../util/CalendarManager'; @@ -270,12 +270,16 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (
{ - const showing = DocumentView.Selected().some(dv => dv.dataDoc.showTags); + onClick={undoable(e => { + const showing = DocumentView.Selected().some(dv => dv.layoutDoc._layout_showTags); DocumentView.Selected().forEach(dv => { - dv.dataDoc.showTags = !showing; + dv.layoutDoc._layout_showTags = !showing; + if (e.shiftKey) + DocListCast(dv.Document[Doc.LayoutFieldKey(dv.Document) + '_annotations']).forEach(doc => { + if (doc.face) doc.hidden = showing; + }); }); - }}> + }, 'show Doc tags')}>
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 118a5bd3d..907bb2614 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -232,7 +232,8 @@ export class DocumentDecorations extends ObservableReactComponent 1 ? 0 : `${doc[DocData].showTags ? 4 + seldocview.TagPanelHeight : 4}px`, + top: DocumentView.Selected().length > 1 ? 0 : `${doc._layout_showTags ? 4 + seldocview.TagPanelHeight : 4}px`, transform: `translate(${-this._resizeBorderWidth / 2 + 10}px, ${this._resizeBorderWidth + bounds.b - bounds.y + this._titleHeight}px) `, }}> DocumentView.Selected()} /> @@ -845,7 +846,7 @@ export class DocumentDecorations extends ObservableReactComponent {DocumentView.Selected().length > 1 ? : null} diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index ae9d42749..0b303f6f5 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -172,12 +172,12 @@ export class TagItem extends ObservableReactComponent { docData.data = new List(newEmbeddings); docData.title = this._props.tag; docData.tags = new List([this._props.tag]); - docData.showTags = true; docData.freeform_fitContentsToBox = true; doc._freeform_panX = doc._freeform_panY = 0; doc._width = 900; doc._height = 900; doc.layout_fitWidth = true; + doc._layout_showTags = true; return doc; })(Doc.MakeCopy(Doc.UserDoc().emptyCollection as Doc, true)); newEmbeddings.forEach(embed => Doc.SetContainer(embed, newCollection)); @@ -322,7 +322,7 @@ export class TagsView extends ObservableReactComponent { ); /** - * When 'showTags' is set on a Doc, this displays a wrapping panel of tagItemViews corresponding to all the tags set on the Doc). + * When 'layout_showTags' is set on a Doc, this displays a wrapping panel of tagItemViews corresponding to all the tags set on the Doc). * When the dropdown is clicked, this will toggle an extended UI that allows additional tags to be added/removed. */ render() { @@ -336,7 +336,7 @@ export class TagsView extends ObservableReactComponent { ); this._panelHeightDirty; - return !this.View.Document.showTags && this._props.Views.length === 1 ? null : ( + return !this.View.Document._layout_showTags && this._props.Views.length === 1 ? null : (
r && new ResizeObserver(action(() => this._props.Views.length === 1 && (this.View.TagPanelHeight = Math.max(0, (r?.getBoundingClientRect().height ?? 0) - this.InsetDist)))).observe(r)} diff --git a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx index e419e522c..033d1590d 100644 --- a/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx +++ b/src/client/views/collections/collectionFreeForm/ImageLabelBox.tsx @@ -139,9 +139,9 @@ export class ImageLabelBox extends ViewBoxBaseComponent() { toggleDisplayInformation = () => { this._displayImageInformation = !this._displayImageInformation; if (this._displayImageInformation) { - this._selectedImages.forEach(doc => (doc[DocData].showTags = true)); + this._selectedImages.forEach(doc => (doc._layout_showTags = true)); } else { - this._selectedImages.forEach(doc => (doc[DocData].showTags = false)); + this._selectedImages.forEach(doc => (doc._layout_showTags = false)); } }; diff --git a/src/client/views/nodes/formattedText/RichTextRules.ts b/src/client/views/nodes/formattedText/RichTextRules.ts index e0d6c7c05..0ef67b4be 100644 --- a/src/client/views/nodes/formattedText/RichTextRules.ts +++ b/src/client/views/nodes/formattedText/RichTextRules.ts @@ -404,7 +404,7 @@ export class RichTextRules { if (!tags.includes(tag)) { tags.push(tag); this.Document[DocData].tags = new List(tags); - this.Document[DocData].showTags = true; + this.Document._layout_showTags = true; } const fieldView = state.schema.nodes.dashField.create({ fieldKey: '#' + tag }); return state.tr diff --git a/src/client/views/search/FaceRecognitionHandler.tsx b/src/client/views/search/FaceRecognitionHandler.tsx index 636a44984..c507e54b6 100644 --- a/src/client/views/search/FaceRecognitionHandler.tsx +++ b/src/client/views/search/FaceRecognitionHandler.tsx @@ -220,6 +220,7 @@ export class FaceRecognitionHandler { .then(imgDocFaceDescriptions => { // For each face detected, find a match. const annos = [] as Doc[]; const scale = NumCast(imgDoc.data_nativeWidth) / img.width; + const showTags= imgDocFaceDescriptions.length > 1; imgDocFaceDescriptions.forEach((fd, i) => { const faceDescriptor = new List(Array.from(fd.descriptor)); const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard); @@ -233,12 +234,14 @@ export class FaceRecognitionHandler { y: fd.alignedRect.box.top * scale, _width: fd.alignedRect.box.width * scale, _height: fd.alignedRect.box.height * scale, + _layout_showTags: showTags }) FaceRecognitionHandler.UniqueFaceAddFaceImage(faceAnno, matchedUniqueFace); // add image/faceDescriptor to matched unique face annos.push(faceAnno); }); imgDoc[DocData].data_annotations = new List(annos); + imgDoc._layout_showTags = annos.length > 0; return imgDocFaceDescriptions; }) ); // prettier-ignore -- cgit v1.2.3-70-g09d2 From cded2f6473018f15711142517ba30382682cbec0 Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 16 Sep 2024 15:48:08 -0400 Subject: fixed title dragging pick correlation and conversion to tab dragging. --- src/client/util/DragManager.ts | 2 +- src/client/views/DocumentDecorations.tsx | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts index 7db13689d..d55d193cc 100644 --- a/src/client/util/DragManager.ts +++ b/src/client/util/DragManager.ts @@ -569,7 +569,7 @@ export namespace DragManager { AbortDrag(); await finishDrag?.(new DragCompleteEvent(true, docDragData)); DragManager.StartWindowDrag?.(e, docDragData.droppedDocuments, aborted => { - if (!aborted && (docDragData?.dropAction === 'move' || docDragData?.dropAction === 'same')) { + if (!aborted && (docDragData?.dropAction === dropActionType.move || docDragData?.dropAction === dropActionType.same)) { docDragData.removeDocument?.(docDragData?.draggedDocuments[0]); } }); diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 907bb2614..4b0198021 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -173,7 +173,8 @@ export class DocumentDecorations extends ObservableReactComponent 1) return false; const { left, top } = dragDocView.getBounds || { left: 0, top: 0 }; const dragData = new DragManager.DocumentDragData(DocumentView.SelectedDocs(), dragDocView._props.dropAction); - dragData.offset = dragDocView.screenToContentsTransform().transformDirection(e.x - left, e.y - top); + dragData.offset = dragDocView.screenToViewTransform().transformDirection(e.x - left, e.y - top); dragData.moveDocument = dragDocView._props.moveDocument; dragData.removeDocument = dragDocView._props.removeDocument; dragData.isDocDecorationMove = true; -- cgit v1.2.3-70-g09d2 From 62eb66ca7d3404f9977acdf73f815f4920fb964d Mon Sep 17 00:00:00 2001 From: bobzel Date: Mon, 16 Sep 2024 18:14:56 -0400 Subject: fixed doc decorations from crashing when dockingView is selected. cleaned up tab doc view. --- src/client/views/DocumentDecorations.tsx | 5 +- src/client/views/TagsView.tsx | 2 +- .../views/collections/CollectionDockingView.tsx | 3 +- src/client/views/collections/TabDocView.tsx | 175 +++++++++------------ 4 files changed, 77 insertions(+), 108 deletions(-) (limited to 'src') diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 4b0198021..5e7908725 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -646,7 +646,6 @@ export class DocumentDecorations extends ObservableReactComponent { @@ -838,7 +837,7 @@ export class DocumentDecorations extends ObservableReactComponent 1 ? 0 : `${doc._layout_showTags ? 4 + seldocview.TagPanelHeight : 4}px`, + top: DocumentView.Selected().length > 1 ? 0 : `${seldocview.Document._layout_showTags ? 4 + seldocview.TagPanelHeight : 4}px`, transform: `translate(${-this._resizeBorderWidth / 2 + 10}px, ${this._resizeBorderWidth + bounds.b - bounds.y + this._titleHeight}px) `, }}> DocumentView.Selected()} /> @@ -847,7 +846,7 @@ export class DocumentDecorations extends ObservableReactComponent {DocumentView.Selected().length > 1 ? : null} diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 0b303f6f5..be2c28185 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -336,7 +336,7 @@ export class TagsView extends ObservableReactComponent { ); this._panelHeightDirty; - return !this.View.Document._layout_showTags && this._props.Views.length === 1 ? null : ( + return this.View.ComponentView?.isUnstyledView?.() || (!this.View.Document._layout_showTags && this._props.Views.length === 1) ? null : (
r && new ResizeObserver(action(() => this._props.Views.length === 1 && (this.View.TagPanelHeight = Math.max(0, (r?.getBoundingClientRect().height ?? 0) - this.InsetDist)))).observe(r)} diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx index e0aa79c7b..028133a6e 100644 --- a/src/client/views/collections/CollectionDockingView.tsx +++ b/src/client/views/collections/CollectionDockingView.tsx @@ -31,6 +31,7 @@ import { ScriptingRepl } from '../ScriptingRepl'; import { UndoStack } from '../UndoStack'; import './CollectionDockingView.scss'; import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; +import { TabHTMLElement } from './TabDocView'; @observer export class CollectionDockingView extends CollectionSubView() { @@ -544,7 +545,7 @@ export class CollectionDockingView extends CollectionSubView() { tabCreated = (tab: { contentItem: { element: HTMLElement[] } }) => { this.tabMap.add(tab); // InitTab is added to the tab's HTMLElement in TabDocView - const tabdocviewContent = tab.contentItem.element[0]?.firstChild?.firstChild as unknown as { InitTab?: (tab: object) => void }; + const tabdocviewContent = tab.contentItem.element[0]?.firstChild?.firstChild as unknown as TabHTMLElement; tabdocviewContent?.InitTab?.(tab); // have to explicitly initialize tabs that reuse contents from previous tabs (ie, when dragging a tab around a new tab is created for the old content) }; diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx index 31b6be927..def1ea731 100644 --- a/src/client/views/collections/TabDocView.tsx +++ b/src/client/views/collections/TabDocView.tsx @@ -57,6 +57,7 @@ interface TabMiniThumbProps { miniLeft: () => number; } +export type TabHTMLElement = HTMLDivElement & { InitTab?: (tab: object) => void }; @observer class TabMiniThumb extends React.Component { render() { @@ -193,8 +194,9 @@ export class TabDocView extends ObservableReactComponent { .filter(tv => tv._document) .map(tv => tv._document!); } - _mainCont: HTMLDivElement | null = null; + _mainCont: TabHTMLElement | null = null; _tabReaction: IReactionDisposer | undefined; + _lastSelection = 0; // time when view was last selected - used to re-select views that get invalidated when selected /** * Adds a document to the presentation view @@ -273,19 +275,24 @@ export class TabDocView extends ObservableReactComponent { setTimeout(batch.end, 500); // need to wait until dockingview (goldenlayout) updates all its structurs } + // Flag indicating that when a tab is activated, it should not select it's document. + // this is used by the link properties menu when it wants to display the link target without selecting the target (which would make the link property window go away since it would no longer be selected) + public static DontSelectOnActivate = 'dontSelectOnActivate'; + + public static IsSelected = (doc?: Doc) => { + return DocumentView.getViews(doc).some(dv => dv?.IsSelected); + }; + static Activate = (tabDoc: Doc) => { const tab = Array.from(CollectionDockingView.Instance?.tabMap ?? []).find(findTab => findTab.DashDoc === tabDoc && !findTab.contentItem.config.props.keyValue); tab?.header.parent.setActiveContentItem(tab.contentItem); // glr: Panning does not work when this is set - (this line is for trying to make a tab that is not topmost become topmost) return tab !== undefined; }; - // static ActivateTabView(doc: Doc) { - // const tabView = Array.from(TabDocView._allTabs).find(view => view._document === doc); - // if (!tabView?._activated && tabView?._document) { - // TabDocView.Activate(tabView?._document); - // return tabView; - // } - // return undefined; - // } + + get stack() { return this._props.glContainer.parent.parent; } // prettier-ignore + get tab() { return this._props.glContainer.tab; } // prettier-ignore + get view() { return this._view; } // prettier-ignore + constructor(props: TabDocViewProps) { super(props); makeObservable(this); @@ -299,37 +306,13 @@ export class TabDocView extends ObservableReactComponent { @observable _hovering = false; @observable _isActive: boolean = false; @observable _isAnyChildContentActive = false; - public static IsSelected = (doc?: Doc) => { - if (DocumentView.getViews(doc).some(dv => dv?.IsSelected)) { - return true; - } - return false; - }; - @computed get _isUserActivated() { - return TabDocView.IsSelected(this._document) || this._isAnyChildContentActive; - } - get _isContentActive() { - return this._isUserActivated || this._hovering; - } @observable _document: Doc | undefined = undefined; @observable _view: DocumentView | undefined = undefined; + @observable _forceInvalidateScreenToLocal = 0; // screentolocal is computed outside of react using a dom resize ovbserver. this hack allows the resize observer to trigger a react update - @computed get layoutDoc() { - return this._document && Doc.Layout(this._document); - } - - get stack() { - return this._props.glContainer.parent.parent; - } - get tab() { - return this._props.glContainer.tab; - } - get view() { - return this._view; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - _lastTab: any; - _lastView: DocumentView | undefined; + @computed get layoutDoc() { return this._document && Doc.Layout(this._document); } // prettier-ignore + @computed get isUserActivated() { return TabDocView.IsSelected(this._document) || this._isAnyChildContentActive; } // prettier-ignore + @computed get isContentActive() { return this.isUserActivated || this._hovering; } // prettier-ignore @action // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -413,7 +396,7 @@ export class TabDocView extends ObservableReactComponent { color === variant ? DashColor(color) .fade( - this._isUserActivated + this.isUserActivated ? 0 : this._hovering ? 0.25 @@ -522,19 +505,14 @@ export class TabDocView extends ObservableReactComponent { this._props.glContainer.layoutManager.off('activeContentItemChanged', this.onActiveContentItemChanged); } - // Flag indicating that when a tab is activated, it should not select it's document. - // this is used by the link properties menu when it wants to display the link target without selecting the target (which would make the link property window go away since it would no longer be selected) - public static DontSelectOnActivate = 'dontSelectOnActivate'; - - @action.bound // eslint-disable-next-line @typescript-eslint/no-explicit-any - private onActiveContentItemChanged(contentItem: any) { + onActiveContentItemChanged = (contentItem: any) => { if (!contentItem || (this.stack === contentItem.parent && ((contentItem?.tab === this.tab && !this._isActive) || (contentItem?.tab !== this.tab && this._isActive)))) { this._activated = this._isActive = !contentItem || contentItem?.tab === this.tab; if (!this._view && this.tab?.contentItem?.config?.props?.panelName !== TabDocView.DontSelectOnActivate) setTimeout(() => DocumentView.SelectView(this._view, false)); !this._isActive && this._document && Doc.UnBrushDoc(this._document); // bcz: bad -- trying to simulate a pointer leave event when a new tab is opened up on top of an existing one. } - } + }; // adds a tab to the layout based on the locaiton parameter which can be: // close[:{left,right,top,bottom}] - e.g., "close" will close the tab, "close:left" will close the left tab, @@ -551,7 +529,6 @@ export class TabDocView extends ObservableReactComponent { const whereMods = whereFields.length > 1 ? (whereFields[1] as OpenWhereMod) : OpenWhereMod.none; const panelName = whereFields.length > 1 ? whereFields.lastElement() : ''; if (docs[0]?.dockingConfig && !keyValue) return DashboardView.openDashboard(docs[0]); - // prettier-ignore switch (whereFields[0]) { case undefined: case OpenWhere.lightbox: return LightboxView.Instance.AddDocTab(docs[0], location); @@ -559,7 +536,7 @@ export class TabDocView extends ObservableReactComponent { case OpenWhere.replace: return CollectionDockingView.ReplaceTab(docs[0], whereMods, this.stack, panelName, undefined, keyValue); case OpenWhere.toggle: return CollectionDockingView.ToggleSplit(docs[0], whereMods, this.stack, TabDocView.DontSelectOnActivate, keyValue); case OpenWhere.add:default:return CollectionDockingView.AddSplit(docs[0], whereMods, this.stack, undefined, keyValue); - } + } // prettier-ignore }; remDocTab = (doc: Doc | Doc[]) => { if (doc === this._document) { @@ -571,8 +548,6 @@ export class TabDocView extends ObservableReactComponent { }; getCurrentFrame = () => NumCast(Cast(PresBox.Instance.activeItem.presentation_targetDoc, Doc, null)._currentFrame); - - @action focusFunc = () => { if (!this.tab.header.parent._activeContentItem || this.tab.header.parent._activeContentItem !== this.tab.contentItem) { this.tab.header.parent.setActiveContentItem(this.tab.contentItem); // glr: Panning does not work when this is set - (this line is for trying to make a tab that is not topmost become topmost) @@ -580,7 +555,6 @@ export class TabDocView extends ObservableReactComponent { return undefined; }; active = () => this._isActive; - @observable _forceInvalidateScreenToLocal = 0; ScreenToLocalTransform = () => { this._forceInvalidateScreenToLocal; const { translateX, translateY } = ClientUtils.GetScreenTransform(this._mainCont?.children?.[0] as HTMLElement); @@ -594,47 +568,44 @@ export class TabDocView extends ObservableReactComponent { whenChildContentActiveChanges = (isActive: boolean) => { this._isAnyChildContentActive = isActive; }; - isContentActive = () => this._isContentActive; + isContentActiveFunc = () => this.isContentActive; waitForDoubleClick = () => (SnappingManager.ExploreMode ? 'never' : undefined); - @computed get docView() { - return !this._activated || !this._document ? null : ( - <> - { - this._lastView && DocumentView.removeView(this._lastView); - this._view = r; - this._lastView = this._view; - })} - renderDepth={0} - LayoutTemplateString={this._props.keyValue ? KeyValueBox.LayoutString() : undefined} - hideTitle={this._props.keyValue} - Document={this._document} - TemplateDataDocument={!Doc.AreProtosEqual(this._document[DocData], this._document) ? this._document[DocData] : undefined} - waitForDoubleClickToClick={this.waitForDoubleClick} - isContentActive={this.isContentActive} - isDocumentActive={returnFalse} - PanelWidth={this.PanelWidth} - PanelHeight={this.PanelHeight} - styleProvider={DefaultStyleProvider} - childFilters={CollectionDockingView.Instance?.childDocFilters ?? returnEmptyFilter} - childFiltersByRanges={CollectionDockingView.Instance?.childDocRangeFilters ?? returnEmptyFilter} - searchFilterDocs={CollectionDockingView.Instance?.searchFilterDocs ?? returnEmptyDoclist} - addDocument={undefined} - removeDocument={this.remDocTab} - addDocTab={this.addDocTab} - suppressSetHeight={!!this._document._layout_fitWidth} - ScreenToLocalTransform={this.ScreenToLocalTransform} - dontCenter="y" - whenChildContentsActiveChanged={this.whenChildContentActiveChanges} - focus={this.focusFunc} - containerViewPath={returnEmptyDocViewList} - pinToPres={TabDocView.PinDoc} - /> - {this.disableMinimap() ? null : } - - ); - } + renderDocView = (doc: Doc) => ( + { + const now = Date.now(); + this._lastSelection = this._view?.IsSelected ? now : this._lastSelection; + if (this._view) DocumentView.removeView(this._view); + this._view = r; + if (this._view && now - this._lastSelection < 1000) this._view.select(false); + })} + renderDepth={0} + LayoutTemplateString={this._props.keyValue ? KeyValueBox.LayoutString() : undefined} + hideTitle={this._props.keyValue} + Document={doc} + TemplateDataDocument={!Doc.AreProtosEqual(doc[DocData], doc) ? doc[DocData] : undefined} + waitForDoubleClickToClick={this.waitForDoubleClick} + isContentActive={this.isContentActiveFunc} + isDocumentActive={returnFalse} + PanelWidth={this.PanelWidth} + PanelHeight={this.PanelHeight} + styleProvider={DefaultStyleProvider} + childFilters={CollectionDockingView.Instance?.childDocFilters ?? returnEmptyFilter} + childFiltersByRanges={CollectionDockingView.Instance?.childDocRangeFilters ?? returnEmptyFilter} + searchFilterDocs={CollectionDockingView.Instance?.searchFilterDocs ?? returnEmptyDoclist} + addDocument={undefined} + removeDocument={this.remDocTab} + addDocTab={this.addDocTab} + suppressSetHeight={!!doc._layout_fitWidth} + ScreenToLocalTransform={this.ScreenToLocalTransform} + dontCenter="y" + whenChildContentsActiveChanged={this.whenChildContentActiveChanges} + focus={this.focusFunc} + containerViewPath={returnEmptyDocViewList} + pinToPres={TabDocView.PinDoc} + /> + ); render() { return ( @@ -647,23 +618,21 @@ export class TabDocView extends ObservableReactComponent { onPointerLeave={action(() => { this._hovering = false; })} // prettier-ignore onDragOver={action(() => { this._hovering = true; })} // prettier-ignore onDragLeave={action(() => { this._hovering = false; })} // prettier-ignore - ref={ref => { + ref={(ref: TabHTMLElement) => { + // "add" an InitTab function to this div to call from tabCreated in CollectionDockingView when div is reused this._mainCont = ref; if (this._mainCont) { - if (this._lastTab) { - this._view && DocumentView.removeView(this._view); - } - this._lastTab = this.tab; - (this._mainCont as { InitTab?: (tab: object) => void }).InitTab = (tab: object) => this.init(tab, this._document); - DocServer.GetRefField(this._props.documentId).then( - action(doc => { - doc instanceof Doc && (this._document = doc) && this.tab && this.init(this.tab, this._document); - }) - ); - ref && new ResizeObserver(action(() => this._forceInvalidateScreenToLocal++)).observe(ref); + this._mainCont.InitTab = (tab: object) => this.init(tab, this._document); + DocServer.GetRefField(this._props.documentId).then(action(doc => { + doc instanceof Doc && (this._document = doc) && this.tab && this.init(this.tab, this._document); + })); // prettier-ignore + new ResizeObserver(action(() => this._forceInvalidateScreenToLocal++)).observe(this._mainCont); } }}> - {this.docView} + {!this._activated || !this._document ? null : this.renderDocView(this._document)} + {this.disableMinimap() || !this._document ? null : ( + + )}
); } -- cgit v1.2.3-70-g09d2 From 4ba23252ca23a6017974c31364d00c0a1859e45e Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 17 Sep 2024 08:44:47 -0400 Subject: cleaning up --- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 109 +++++++---------------------- 1 file changed, 25 insertions(+), 84 deletions(-) (limited to 'src') diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 1b44508d7..2d8547dcd 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -205,62 +205,42 @@ export class GPTPopup extends ObservableReactComponent { const selected = DocumentView.SelectedDocs().lastElement(); - const questionText = 'Question: ' + StrCast(selected['gptInputText']); - - if (StrCast(selected['gptRubric']) === '') { - const rubricText = 'Rubric: ' + await this.generateRubric(StrCast(selected['gptInputText']), selected) - } - - const rubricText = 'Rubric: ' + (StrCast(selected['gptRubric'])) - // const rubricText = 'Rubric: ' + StrCast(RTFCast(DocCast(this.dataDoc[this.fieldKey + '_0']).text)?.Text); - const queryText = questionText + ' UserAnswer: ' + this.quizAnswer + '. ' + 'Rubric' + rubricText; - - try { - const res = await gptAPICall(queryText, GPTCallType.QUIZ); - if (!res) { - console.error('GPT call failed'); - return; - } - console.log(res) - this.setQuizResp(res) - this.conversationArray.push(res) - - this.setLoading(false); - this.setSortDone(true); - - // this._outputValue = res; - } catch (err) { - console.error('GPT call failed'); - } - - - if (this.onQuizRandom){ - this.onQuizRandom() - } + const questionText = 'Question: ' + StrCast(selected['gptInputText']); + if (StrCast(selected['gptRubric']) === '') { + const rubricText = 'Rubric: ' + await this.generateRubric(StrCast(selected['gptInputText']), selected) + } - + const rubricText = 'Rubric: ' + (StrCast(selected['gptRubric'])) + const queryText = questionText + ' UserAnswer: ' + this.quizAnswer + '. ' + 'Rubric' + rubricText; + try { + const res = await gptAPICall(queryText, GPTCallType.QUIZ); + if (!res) { + console.error('GPT call failed'); + return; + } + console.log(res) + this.setQuizResp(res) + this.conversationArray.push(res) - // switch(quizType){ - // default: - - // } + this.setLoading(false); + this.setSortDone(true); + } catch (err) { + console.error('GPT call failed'); + } - + if (this.onQuizRandom){ + this.onQuizRandom() + } } generateRubric = async (inputText: string, doc:Doc) => { try { - const res = await gptAPICall(inputText, GPTCallType.RUBRIC); - console.log(res + "rubbbb") - // if (!res) { - // console.error('GPT call failed'); - // return; - // } + const res = await gptAPICall(inputText, GPTCallType.RUBRIC); doc['gptRubric']= res; return res } catch (err) { @@ -326,8 +306,6 @@ export class GPTPopup extends ObservableReactComponent { break } - - // const res = await gptAPICall(this.sortDesc, GPTCallType.SUBSET, this.chatSortPrompt); // Trigger the callback with the result if (this.onSortComplete) { this.onSortComplete(res || 'Something went wrong :(', questionNumber, questionType.split(' ').slice(1).join(' ')); @@ -356,44 +334,6 @@ export class GPTPopup extends ObservableReactComponent { this.setSortDone(true); }; - - // /** - // * Sorts cards in the CollectionCardDeckView - // */ - // generateSort = async () => { - // console.log(this.chatSortPrompt + "USER PROMPT") - // this.setLoading(true); - // this.setSortDone(false); - - // if (this.regenerateCallback) { - // await this.regenerateCallback(); - // } - - // try { - // const res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); - - // // Trigger the callback with the result - // if (this.onSortComplete) { - // this.onSortComplete(res || 'Something went wrong :('); - - // // Extract explanation surrounded by ------ at the top or both at the top and bottom - // const explanationMatch = res.match(/------\s*([\s\S]*?)\s*(?:------|$)/) || []; - // const explanation = explanationMatch[1] ? explanationMatch[1].trim() : 'No explanation found'; - - // // Set the extracted explanation to sortRespText - // this.setSortRespText(explanation); - - // console.log(res); - // } - // } catch (err) { - // console.error(err); - // } - - // this.setLoading(false); - // this.setSortDone(true); - // }; - - /** * Generates a Dalle image and uploads it to the server. */ @@ -656,6 +596,7 @@ export class GPTPopup extends ObservableReactComponent { { -- cgit v1.2.3-70-g09d2 From 2b4288efa2f21db46addd19c8884f80dba835f2d Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 17 Sep 2024 09:20:54 -0400 Subject: pulling from amster wish me luck --- .../views/collections/CollectionCardDeckView.tsx | 343 +++++++++------------ src/client/views/pdf/GPTPopup/GPTPopup.tsx | 95 ++---- 2 files changed, 168 insertions(+), 270 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 5dafb1088..4bd9a77b5 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -19,15 +19,7 @@ import { DocumentView } from '../nodes/DocumentView'; import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; import './CollectionCardDeckView.scss'; import { CollectionSubView } from './CollectionSubView'; -import { FieldsDropdown } from '../FieldsDropdown'; -import { Button, IconButton } from 'browndash-components'; -import { faStar } from '@fortawesome/free-solid-svg-icons'; -import { FaStar, FaHeart, FaRobot, FaCloud } from 'react-icons/fa'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { SettingsManager } from '../../util/SettingsManager'; -import { Tooltip } from '@mui/material'; import { dropActionType } from '../../util/DropActionTypes'; -import { List } from '../../../fields/List'; import { DocCast } from '../../../fields/Types'; import { SelectionManager } from '../../util/SelectionManager'; @@ -56,12 +48,8 @@ export class CollectionCardView extends CollectionSubView() { @observable _docDraggedIndex: number = -1; @observable _isACardBeingDragged: boolean = false; @observable overIndex: number = -1; - - - static getButtonGroup(groupFieldKey: 'chat' | 'star' | 'idea' | 'like', doc: Doc): number | undefined { - return Cast(doc[groupFieldKey], 'number', null); - } + static imageUrlToBase64 = async (imageUrl: string): Promise => { try { const response = await fetch(imageUrl); @@ -79,49 +67,47 @@ export class CollectionCardView extends CollectionSubView() { } }; - constructor(props: any) { super(props); makeObservable(this); this.setRegenerateCallback(); } - setRegenerateCallback() { + /** + * Callback to ensure gpt's text versions of the child docs are updated + */ + setRegenerateCallback = () => { GPTPopup.Instance.setRegenerateCallback(this.childPairStringListAndUpdateSortDesc); } + /** + * update's gpt's doc-text list and initializes callbacks + */ @action childPairStringListAndUpdateSortDesc = async () => { const sortDesc = await this.childPairStringList(); // Await the promise to get the string result GPTPopup.Instance.setSortDesc(sortDesc.join()); GPTPopup.Instance.onSortComplete = (sortResult: string, questionType: string, tag?: string) => this.processGptOutput(sortResult, questionType, tag); - GPTPopup.Instance.onQuizRandom = () => this.quizMode() - + GPTPopup.Instance.onQuizRandom = () => this.quizMode(); }; componentDidMount(): void { - - this.Document.childFilters_boolean = 'OR' + this.Document.childFilters_boolean = 'OR'; this.childDocsWithoutLinks.forEach(c => { - c[DocData].showIconTags = true - + c[DocData].showIconTags = true; }); - // Reaction to cardSort changes this._disposers.sort = reaction( () => this.cardSort, - (cardSort) => { + cardSort => { if (cardSort === cardSortings.Chat) { this.openChatPopup(); } else { GPTPopup.Instance.setVisible(false); } - // Force re-render to see if this resolves the sorting issue } ); - - } componentWillUnmount() { @@ -134,10 +120,9 @@ export class CollectionCardView extends CollectionSubView() { } @computed get cardSort() { - // console.log(StrCast(this.Document.cardSort) as any as cardSortings) return StrCast(this.Document.cardSort) as any as cardSortings; } - + /** * how much to scale down the contents of the view so that everything will fit */ @@ -156,32 +141,32 @@ export class CollectionCardView extends CollectionSubView() { if (activeGroups.length > 0) { return regularDocs.filter(doc => { - const activeTags = StrListCast(doc.cardSort_activeIcons) + const activeTags = StrListCast(doc.cardSort_activeIcons); return activeTags !== undefined && activeTags.some(tag => activeGroups.includes(tag)); - }) + }); } // Default return for non-custom cardSort or other cases, filtering out links return regularDocs; } - quizMode () { - - const randomIndex = Math.floor(Math.random() * this.childDocs.length) - console.log('hiiiiiii') - - SelectionManager.DeselectAll() - DocumentView.SelectView(DocumentView.getDocumentView(this.childDocs[randomIndex]), false) - + /** + * When in quiz mode, randomly selects a document + */ + quizMode = () => { + const randomIndex = Math.floor(Math.random() * this.childDocs.length); + SelectionManager.DeselectAll(); + DocumentView.SelectView(DocumentView.getDocumentView(this.childDocs[randomIndex]), false); } - - /** * Number of rows of cards to be rendered */ - @computed get numRows() { return Math.ceil(this.sortedDocs.length / 10); } + @computed get numRows() { + return Math.ceil(this.sortedDocs.length / 10); + } + @action setHoveredNodeIndex = (index: number) => { if (!DocumentView.SelectedDocs().includes(this.childDocs[index])) { @@ -251,87 +236,98 @@ export class CollectionCardView extends CollectionSubView() { return Math.abs(stepMag * (apex - index - 1)) - rowOffset; }; - findCardDropIndex = (mouseX: number, mouseY: number, direction: 'left' | 'right') => { - - const amCardsTotal = this.sortedDocs.length + /** + * When dragging a card, determines the index the card should be set to if dropped + * @param mouseX mouse's x location + * @param mouseY mouses' y location + * @returns the card's new index + */ + findCardDropIndex = (mouseX: number, mouseY: number) => { + const amCardsTotal = this.sortedDocs.length; let index = 0; - const cardWidth = amCardsTotal < this._maxRowCount ? this._props.PanelWidth() / amCardsTotal : this._props.PanelWidth() / this._maxRowCount; - + const cardWidth = amCardsTotal < this._maxRowCount ? this._props.PanelWidth() / amCardsTotal : this._props.PanelWidth() / this._maxRowCount; + // Calculate the adjusted X position accounting for the initial offset - let adjustedX = mouseX + let adjustedX = mouseX; const amRows = Math.ceil(amCardsTotal / this._maxRowCount); - const rowHeight = this._props.PanelHeight( ) / amRows - const currRow = Math.floor((mouseY - 100) / rowHeight) //rows start at 0 + const rowHeight = this._props.PanelHeight() / amRows; + const currRow = Math.floor((mouseY - 100) / rowHeight); //rows start at 0 if (adjustedX < 0) { return 0; // Before the first column } - if (amCardsTotal < this._maxRowCount) { + if (amCardsTotal < this._maxRowCount) { index = Math.floor(adjustedX / cardWidth); - } - - else if (currRow != amRows -1 ){ - index = Math.floor(adjustedX / cardWidth) + (currRow * this._maxRowCount) - } - - else { - // console.log(amRows + "am rows") - const rowAmCards = amCardsTotal - (currRow * this._maxRowCount) - const offset = ((this._maxRowCount - rowAmCards ) / 2) * cardWidth - adjustedX = mouseX - offset - - index = Math.floor(adjustedX / cardWidth) + (currRow * this._maxRowCount); + } else if (currRow != amRows - 1) { + index = Math.floor(adjustedX / cardWidth) + currRow * this._maxRowCount; + } else { + const rowAmCards = amCardsTotal - currRow * this._maxRowCount; + const offset = ((this._maxRowCount - rowAmCards) / 2) * cardWidth; + adjustedX = mouseX - offset; + + index = Math.floor(adjustedX / cardWidth) + currRow * this._maxRowCount; } return index; }; + /** + * Checks to see if a card is being dragged and calls the appropriate methods if so + * @param e the current pointer event + */ + @action onPointerMove = (e: React.PointerEvent) => { - if (DragManager.docsBeingDragged.length != 0 ) { - this._isACardBeingDragged = true - - const direction = e.movementX > 0 ? 'right' : 'left'; - const newIndex = this.findCardDropIndex(e.clientX, e.clientY, direction); - + if (DragManager.docsBeingDragged.length != 0) { + this._isACardBeingDragged = true; + + const newIndex = this.findCardDropIndex(e.clientX, e.clientY); + if (newIndex !== this._docDraggedIndex && newIndex != -1) { this._docDraggedIndex = newIndex; - } + } } }; - + /** + * Resets all the doc dragging vairables once a card is dropped + * @param e + * @param de drop event + * @returns true if a card has been dropped, falls if not + */ onInternalDrop = (e: Event, de: DragManager.DropEvent) => { if (de.complete.docDragData) { this._isACardBeingDragged = false; this._docDraggedIndex = -1; - e.stopPropagation() - const draggedDocs = de.complete.docDragData?.draggedDocuments; + e.stopPropagation(); return true; } return false; }; - get sortedDocs() { - // console.log("hi hi hi") - // console.log(this.layoutDoc.cardSort_isDesc + "layoutdoc desc") - // console.log(this.cardSort + "card sort") - return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.Document.cardSort_isDesc), this._docDraggedIndex); } - tagValue(doc: Doc) { + + /** + * Used to determine how to sort cards based on tags. The lestmost tags are given lower values while cards to the right are + * given higher values. Decimals are used to determine placement for cards with multiple tags + * @param doc the doc whose value is being determined + * @returns its value based on its tags + */ + + tagValue = (doc: Doc) => { const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - + const isTagActive = (buttonID: number) => { return BoolCast(doc[StrCast(Doc.UserDoc()[keys[buttonID]])]); }; - + let base = ''; let fraction = ''; - + for (let i = 0; i < keys.length; i++) { if (isTagActive(i)) { if (base === '') { @@ -341,20 +337,18 @@ export class CollectionCardView extends CollectionSubView() { } } } - + // If no tag was active, return 0 by default if (base === '') { return 0; } - + // Construct the final number by appending the fraction if it exists const numberString = fraction ? `${base}.${fraction}` : base; - + // Convert the result to a number and return return Number(numberString); } - - /** * Called in the sortedDocsType method. Compares the cards' value in regards to the desired sort type-- earlier cards are move to the @@ -365,66 +359,48 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ @action sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { - // console.log('hiiii') - // if (sortType === cardSortings.None) return docs; - - // if(sortType !== cardSortings.None){ - docs.sort((docA, docB) => { - - const [typeA, typeB] = (() => { + docs.sort((docA, docB) => { + const [typeA, typeB] = (() => { switch (sortType) { - case cardSortings.Time: - return [DateCast(docA.author_date)?.date ?? Date.now(), - DateCast(docB.author_date)?.date ?? Date.now()]; - case cardSortings.Color: - return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)), - ClientUtils.hexToHsv(StrCast(docB.backgroundColor))]; + case cardSortings.Time: + return [DateCast(docA.author_date)?.date ?? Date.now(), DateCast(docB.author_date)?.date ?? Date.now()]; + case cardSortings.Color: + return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)), ClientUtils.hexToHsv(StrCast(docB.backgroundColor))]; case cardSortings.Tag: - return [this.tagValue(docA) ?? 9999, - this.tagValue(docB) ?? 9999]; + return [this.tagValue(docA) ?? 9999, this.tagValue(docB) ?? 9999]; case cardSortings.Chat: - return [NumCast(docA.chatIndex) ?? 9999, - NumCast(docB.chatIndex) ?? 9999] - + return [NumCast(docA.chatIndex) ?? 9999, NumCast(docB.chatIndex) ?? 9999]; default: - return [StrCast(docA.type), StrCast(docB.type)] + return [StrCast(docA.type), StrCast(docB.type)]; } })(); - - // console.log(`Sorting ${sortType}: ${typeA} vs ${typeB}`); + const out = typeA < typeB ? -1 : typeA > typeB ? 1 : 0; - // console.log(`Comparison result: ${out} (isDesc: ${isDesc})`); - if (isDesc){ - return out + if (isDesc) { + return out; } - return -out - + return -out; }); - // } - if (dragIndex != -1) { const draggedDoc = DragManager.docsBeingDragged[0]; const originalIndex = docs.findIndex(doc => doc === draggedDoc); - + docs.splice(originalIndex, 1); docs.splice(dragIndex, 0, draggedDoc); } - + return docs; }; - - - displayDoc = (doc: Doc, screenToLocalTransform: () => Transform) => ( r?.ContentDiv && this._docRefs.set(doc, r))} - Document={doc} + Document={doc} NativeWidth={returnZero} NativeHeight={returnZero} fitWidth={returnFalse} @@ -439,7 +415,6 @@ export class CollectionCardView extends CollectionSubView() { PanelHeight={this.panelHeight(doc)} dragAction={(this.Document.childDragAction ?? this._props.childDragAction) as dropActionType} dontHideOnDrag - // pointerEvents={this.blockPointerEventsWhenDragging(doc)} /> ); @@ -486,17 +461,16 @@ export class CollectionCardView extends CollectionSubView() { * @returns */ calculateTranslateY = (isHovered: boolean, isSelected: boolean, realIndex: number, amCards: number, calcRowIndex: number) => { - const rowHeight = this._props.PanelHeight() * this.fitContentScale / this.numRows; - const rowIndex = Math.trunc(realIndex / this._maxRowCount); - const rowToCenterShift = (this.numRows / 2) - rowIndex; - if (isSelected) return rowToCenterShift * rowHeight - rowHeight / 2; + const rowHeight = (this._props.PanelHeight() * this.fitContentScale) / this.numRows; + const rowIndex = Math.trunc(realIndex / this._maxRowCount); + const rowToCenterShift = this.numRows / 2 - rowIndex; + if (isSelected) return rowToCenterShift * rowHeight - rowHeight / 2; if (amCards == 1) return 50 * this.fitContentScale; // const trans = isHovered ? this.translateHover(realIndex) : 0; const trans = 0; return trans + this.translateY(amCards, calcRowIndex, realIndex); }; - /** * A list of the text content of all the child docs. RTF documents will have just their text and pdf documents will have the first 50 words. * Image documents are converted to bse64 and gpt generates a description for them. all other documents use their title. This string is @@ -514,7 +488,7 @@ export class CollectionCardView extends CollectionSubView() { }; const docTextPromises = this.childDocsWithoutLinks.map(async doc => { const docText = (await docToText(doc)) ?? ''; - doc['gptInputText'] = docText + doc['gptInputText'] = docText; this._textToDoc.set(docText.replace(/\n/g, ' ').trim(), doc); return `======${docText.replace(/\n/g, ' ').trim()}======`; }); @@ -545,108 +519,85 @@ export class CollectionCardView extends CollectionSubView() { }; /** - * Converts the gpt output into a hashmap that can be used for sorting. lists are seperated by ==== while elements within the list are seperated by ~~~~~~ + * Processes gpt's output depending on the type of question the user asked. Converts gpt's string output to + * usable code * @param gptOutput */ @action processGptOutput = (gptOutput: string, questionType: string, tag?: string) => { - - console.log("HIIII") - console.log(StrCast(this.Document.cardSort) + "cardSort") + console.log('HIIII'); + console.log(StrCast(this.Document.cardSort) + 'cardSort'); // Split the string into individual list items const listItems = gptOutput.split('======').filter(item => item.trim() !== ''); - - if (questionType == '2' || questionType == '4'){ + if (questionType == '2' || questionType == '4') { this.childDocs.forEach(d => { - d['chatFilter'] = false - }) + d['chatFilter'] = false; + }); } - // console.log(listItems + " LISTT"); - - // Debug: print the map contents - // console.log("Map contents:", Array.from(this._textToDoc.entries())); - + + listItems.forEach((item, index) => { - // Normalize the item (trim whitespace) const normalizedItem = item.trim(); - // console.log("Normalized item:", normalizedItem); - - // Find the corresponding Doc in the textToDoc map + // find the corresponding Doc in the textToDoc map const doc = this._textToDoc.get(normalizedItem); - // console.log("DOC:", doc); - // console.log("ITEM:", normalizedItem); - + if (doc) { - switch (questionType){ - case '6': - doc.chatIndex = index - console.log(index) - break + switch (questionType) { + case '6': + doc.chatIndex = index; + console.log(index); + break; case '1': - const allHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) - - let myTag = '' - - if (tag){ - for (let i=0; i< allHotKeys.length; i++){ - if (tag.includes(allHotKeys[i])){ - myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]) - break - } - - else if (tag.includes(StrCast(Doc.UserDoc()[allHotKeys[i]]))){ - myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]) - break + const allHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); + + let myTag = ''; + + if (tag) { + for (let i = 0; i < allHotKeys.length; i++) { + if (tag.includes(allHotKeys[i])) { + myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]); + break; + } else if (tag.includes(StrCast(Doc.UserDoc()[allHotKeys[i]]))) { + myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]); + break; } } - if (myTag != ''){ - doc[myTag] = true - } + if (myTag != '') { + doc[myTag] = true; + } } - break + break; case '2': case '4': - doc['chatFilter'] = true + doc['chatFilter'] = true; Doc.setDocFilter(DocCast(this.Document.embedContainer), 'chatFilter', true, 'match'); - break - - - + break; } } else { console.warn(`No matching document found for item: ${normalizedItem}`); } - }); + }; + - } - - // ); - // }; /** * Opens up the chat popup and starts the process for smart sorting. */ openChatPopup = async () => { GPTPopup.Instance.setVisible(true); GPTPopup.Instance.setMode(GPTPopupMode.CARD); - const sortDesc = await this.childPairStringList(); // Await the promise to get the string result GPTPopup.Instance.setCardsDoneLoading(true); // Set dataDoneLoading to true after data is loaded - GPTPopup.Instance.setSortDesc(sortDesc.join()); - GPTPopup.Instance.onSortComplete = (sortResult: string, questionType: string, tag?: string) => this.processGptOutput(sortResult, questionType, tag); - GPTPopup.Instance.onQuizRandom = () => this.quizMode() + await this.childPairStringListAndUpdateSortDesc() }; /** * Actually renders all the cards */ renderCards = () => { - // console.log('christ') const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); const isEmpty = this.childDocsWithoutLinks.length === 0; - const isDesc = BoolCast(this.Document.cardSort_isDesc) - - // console.log(this.childDocsWithoutLinks.length + "length") + const isDesc = BoolCast(this.Document.cardSort_isDesc); if (isEmpty) { return ( @@ -676,9 +627,9 @@ export class CollectionCardView extends CollectionSubView() { const translateIfSelected = () => { const indexInRow = index % this._maxRowCount; const rowIndex = Math.trunc(index / this._maxRowCount); - const rowCenterIndex = Math.min(this._maxRowCount, this.sortedDocs.length - rowIndex * this._maxRowCount)/2; + const rowCenterIndex = Math.min(this._maxRowCount, this.sortedDocs.length - rowIndex * this._maxRowCount) / 2; return (rowCenterIndex - indexInRow) * 100 - 50; - } + }; return (
this.setHoveredNodeIndex(index)}> {this.displayDoc(doc, childScreenToLocal)} - {/* {this.renderButtons(doc, this.cardSort)} */}
); }); @@ -714,7 +664,7 @@ export class CollectionCardView extends CollectionSubView() { const isEmpty = this.childDocsWithoutLinks.length === 0; const transformValue = `scale(${1 / this.fitContentScale})`; const heightValue = `${100 * this.fitContentScale}%`; - + return (
this.onPointerMove(e)} @@ -729,7 +679,7 @@ export class CollectionCardView extends CollectionSubView() { style={{ ...(!isEmpty && { transform: transformValue }), ...(!isEmpty && { height: heightValue }), - gridAutoRows: `${100 / this.numRows}%` + gridAutoRows: `${100 / this.numRows}%`, }} onMouseLeave={() => this.setHoveredNodeIndex(-1)}> {this.renderCards()} @@ -737,5 +687,4 @@ export class CollectionCardView extends CollectionSubView() {
); } - } diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 2d8547dcd..13196f06d 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -52,6 +52,8 @@ interface GPTPopupProps {} export class GPTPopup extends ObservableReactComponent { // eslint-disable-next-line no-use-before-define static Instance: GPTPopup; + private messagesEndRef: React.RefObject; + @observable private chatMode: boolean = false; private correlatedColumns: string[] = []; @@ -173,29 +175,25 @@ export class GPTPopup extends ObservableReactComponent { this.sortRespText = resp } - //mode where gpt says to select a specific card - // - - @observable chatSortPrompt: string = "" sortPromptChanged = action((e: React.ChangeEvent) => { this.chatSortPrompt = e.target.value; }); - @observable quizAnswer: string = "" quizAnswerChanged = action((e: React.ChangeEvent) => { this.quizAnswer = e.target.value; }); - - @observable correctAnswer: string = '' - @observable setCorrectAnswer = (s: string) => { - this.correctAnswer = s - } + @observable conversationArray: string[] = ["Hi! In this pop up, you can ask ChatGPT questions about your documents and filter / sort them. "] + + /** + * When the cards are in quiz mode in the card view, allows gpt to determine whether the user's answer was correct + * @returns + */ generateQuiz = async () => { this.setLoading(true); this.setSortDone(false); @@ -238,6 +236,12 @@ export class GPTPopup extends ObservableReactComponent { } + /** + * Generates a rubric by which to compare the user's answer to + * @param inputText user's answer + * @param doc the doc the user is providing info about + * @returns gpt's response + */ generateRubric = async (inputText: string, doc:Doc) => { try { const res = await gptAPICall(inputText, GPTCallType.RUBRIC); @@ -253,6 +257,10 @@ export class GPTPopup extends ObservableReactComponent { @observable private regenerateCallback: (() => Promise) | null = null; + /** + * Callback function that causes the card view to update the childpair string list + * @param callback + */ @action public setRegenerateCallback(callback: () => Promise) { this.regenerateCallback = callback; } @@ -271,6 +279,9 @@ export class GPTPopup extends ObservableReactComponent { } + /** + * Generates a response to the user's questoin depending on the type of their question + */ generateCard = async () => { console.log(this.chatSortPrompt + "USER PROMPT") this.setLoading(true); @@ -469,7 +480,6 @@ export class GPTPopup extends ObservableReactComponent { } - private messagesEndRef: React.RefObject; scrollToBottom = () => { @@ -538,7 +548,6 @@ export class GPTPopup extends ObservableReactComponent {
) - @observable conversationArray: string[] = ["Hi! In this pop up, you can ask ChatGPT questions about your documents and filter / sort them. If you're not sure if something is possible-- just ask!"] handleKeyPress = async (e: React.KeyboardEvent, isSort: boolean) => { @@ -563,12 +572,9 @@ export class GPTPopup extends ObservableReactComponent { cardActual = (opt: GPTPopupMode) => { const isSort = opt === GPTPopupMode.SORT - // if (opt === GPTPopupMode.SORT) { return ( - // !this.sortDone ? ( - // <> +
- {/* Chat bubble container with scroll */}
{this.conversationArray.map((message, index) => ( @@ -579,8 +585,6 @@ export class GPTPopup extends ObservableReactComponent { {message}
))} - - {/* Conditional Loading message */} {(!this.cardsDoneLoading || this.loading) && (
... @@ -610,62 +614,7 @@ export class GPTPopup extends ObservableReactComponent { />
- - - // - // ) : ( - //
- //
- //

{this.text === 'Something went wrong :(' ? 'Something went wrong :(' : `${isSort ? this.sortRespText : this.quizRespText}`}

- // this.setSortDone(false)} - // icon={} - // color={StrCast(Doc.UserDoc().userVariantColor)} - // /> - //
- //
- // ) ); - // } else if (opt === GPTPopupMode.QUIZ) { - // return ( - // <> - //
- // { - // if (e.key === 'Enter') { - // this.generateQuiz(); - // } - // e.stopPropagation(); - // }} - // type="text" - // placeholder="What is the selected card?" - // id="search-input" - // style={{ width: '100%' }} - // /> - // {/*
- //
*/} - //
- // - // ); - // } }; sortBox = () => ( -- cgit v1.2.3-70-g09d2 From 4f2ee4a8642a93fb399b979750078374b317af32 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 17 Sep 2024 12:29:48 -0400 Subject: fixed carouselfView to fade. cleaned up code a bit --- .../views/collections/CollectionCarousel3DView.tsx | 1 + .../views/collections/CollectionCarouselView.scss | 15 ++ .../views/collections/CollectionCarouselView.tsx | 223 ++++++++++++--------- src/client/views/collections/TabDocView.tsx | 4 +- 4 files changed, 151 insertions(+), 92 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCarousel3DView.tsx b/src/client/views/collections/CollectionCarousel3DView.tsx index c799eb3c8..54cc02825 100644 --- a/src/client/views/collections/CollectionCarousel3DView.tsx +++ b/src/client/views/collections/CollectionCarousel3DView.tsx @@ -78,6 +78,7 @@ export class CollectionCarousel3DView extends CollectionSubView() { NativeWidth={returnZero} NativeHeight={returnZero} fitWidth={undefined} + containerViewPath={this.childContainerViewPath} onDoubleClickScript={this.onChildDoubleClick} renderDepth={this._props.renderDepth + 1} LayoutTemplate={this._props.childLayoutTemplate} diff --git a/src/client/views/collections/CollectionCarouselView.scss b/src/client/views/collections/CollectionCarouselView.scss index f115bb40a..01b20d6d3 100644 --- a/src/client/views/collections/CollectionCarouselView.scss +++ b/src/client/views/collections/CollectionCarouselView.scss @@ -12,6 +12,21 @@ user-select: none; } } +.collectionCarouselView-addFlashcards { + justify-content: center; + align-items: center; + height: 100%; + z-index: -1; + pointer-events: none; +} +.collectionCarouselView-recentlyMissed { + color: red; + z-index: 999; + position: relative; + left: 10px; + top: 10px; + pointer-events: none; +} .carouselView-back, .carouselView-fwd, .carouselView-star, diff --git a/src/client/views/collections/CollectionCarouselView.tsx b/src/client/views/collections/CollectionCarouselView.tsx index 4bec2d963..5d71177c3 100644 --- a/src/client/views/collections/CollectionCarouselView.tsx +++ b/src/client/views/collections/CollectionCarouselView.tsx @@ -1,12 +1,11 @@ /* eslint-disable react/jsx-props-no-spreading */ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { computed, makeObservable } from 'mobx'; +import { IReactionDisposer, action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { StopEvent, returnFalse, returnOne, returnTrue, returnZero } from '../../../ClientUtils'; -import { emptyFunction } from '../../../Utils'; -import { Doc, Opt } from '../../../fields/Doc'; -import { DocCast, NumCast, ScriptCast, StrCast } from '../../../fields/Types'; +import { StopEvent, returnOne, returnZero } from '../../../ClientUtils'; +import { Doc, DocListCast, Opt } from '../../../fields/Doc'; +import { BoolCast, DocCast, NumCast, ScriptCast, StrCast } from '../../../fields/Types'; import { DocumentType } from '../../documents/DocumentTypes'; import { DragManager } from '../../util/DragManager'; import { ContextMenu } from '../ContextMenu'; @@ -32,13 +31,34 @@ export class CollectionCarouselView extends CollectionSubView() { get practiceField() { return this.fieldKey + "_practice"; } // prettier-ignore get starField() { return this.fieldKey + "_star"; } // prettier-ignore + _fadeTimer: NodeJS.Timeout | undefined; + _resetter: IReactionDisposer | undefined; + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); } + @observable _last_index = this.carouselIndex; + @observable _last_opacity = 1; + + componentDidMount() { + this._resetter = reaction( + // automatically reset practice fields when all cards have been marked as correct + () => this.carouselItems.length, + itemsCount => { + if (this.layoutDoc.filterOp === cardMode.PRACTICE && !itemsCount) { + this.layoutDoc.filterOp = undefined; // if all of the cards are correct, show all cards and exit practice mode + this.carouselItems.forEach(item => { // reset all the practice values + item[this.practiceField] = undefined; + }); + } + } // prettier-ignore + ); + } componentWillUnmount() { this._dropDisposer?.(); + this._resetter?.(); } protected createDashEventsTarget = (ele: HTMLDivElement | null) => { @@ -48,43 +68,24 @@ export class CollectionCarouselView extends CollectionSubView() { } }; + @computed get marginX() { return NumCast(this.layoutDoc.caption_xMargin, 50); } // prettier-ignore + @computed get carouselIndex() { return NumCast(this.layoutDoc._carousel_index) % this.carouselItems.length; } // prettier-ignore @computed get carouselItems() { - return this.childLayoutPairs.filter(pair => pair.layout.type !== DocumentType.LINK); - } - @computed get marginX() { - return NumCast(this.layoutDoc.caption_xMargin, 50); + return DocListCast(this.childDocList) + .filter(doc => doc.type !== DocumentType.LINK) + .filter(doc => { + switch (StrCast(this.layoutDoc.filterOp)) { + case cardMode.STAR: return !!doc[this.starField]; // show only cards that are starred + case cardMode.PRACTICE: return doc[this.practiceField] !== practiceVal.CORRECT;// show only cards that aren't marked as correct + default: return true; + } // prettier-ignore + }); } - move = (dir: number) => { - const moveToCardWithField = (match: (doc: Doc) => boolean): boolean => { - let startInd = (NumCast(this.layoutDoc._carousel_index) + dir) % this.carouselItems.length; - while (!match(this.carouselItems?.[startInd].layout) && (startInd + dir + this.carouselItems.length) % this.carouselItems.length !== this.layoutDoc._carousel_index) { - startInd = (startInd + dir + this.carouselItems.length) % this.carouselItems.length; - } - if (match(this.carouselItems?.[startInd].layout)) { - this.layoutDoc._carousel_index = startInd; - return true; - } - return match(this.carouselItems?.[NumCast(this.layoutDoc._carousel_index)].layout); - }; - switch (StrCast(this.layoutDoc.filterOp)) { - case cardMode.STAR: // go to a flashcard that is starred, skip the ones that aren't - if (!moveToCardWithField((doc: Doc) => !!doc[this.starField])) { - this.layoutDoc.filterOp = undefined; // if there aren't any starred, show all cards - } - break; - case cardMode.PRACTICE: // go to a new index that is missed, skip the ones that are correct - if (!moveToCardWithField((doc: Doc) => doc[this.practiceField] !== practiceVal.CORRECT)) { - this.layoutDoc.filterOp = undefined; // if all of the cards are correct, show all cards and exit practice mode - - this.carouselItems.forEach(item => { // reset all the practice values - item.layout[this.practiceField] = undefined; - }); - } - break; - default: moveToCardWithField(returnTrue); - } // prettier-ignore - }; + move = action((dir: number) => { + this._last_index = this.carouselIndex; + this.layoutDoc._carousel_index = (this.carouselIndex + dir + this.carouselItems.length) % this.carouselItems.length; + }); /** * Goes to the next Doc in the stack subject to the currently selected filter option. @@ -107,8 +108,8 @@ export class CollectionCarouselView extends CollectionSubView() { */ star = (e: React.MouseEvent) => { e.stopPropagation(); - const curDoc = this.carouselItems[NumCast(this.layoutDoc._carousel_index)]; - curDoc.layout[this.starField] = curDoc.layout[this.starField] ? undefined : true; + const curDoc = this.carouselItems[this.carouselIndex]; + curDoc && (curDoc[this.starField] = curDoc[this.starField] ? undefined : true); }; /* @@ -116,8 +117,8 @@ export class CollectionCarouselView extends CollectionSubView() { */ setPracticeVal = (e: React.MouseEvent, val: string) => { e.stopPropagation(); - const curDoc = this.carouselItems?.[NumCast(this.layoutDoc._carousel_index)]; - curDoc.layout[this.practiceField] = val; + const curDoc = this.carouselItems[this.carouselIndex]; + curDoc && (curDoc[this.practiceField] = val); this.advance(e); }; @@ -132,7 +133,6 @@ export class CollectionCarouselView extends CollectionSubView() { captionWidth = () => this._props.PanelWidth() - 2 * this.marginX; specificMenu = (): void => { const cm = ContextMenu.Instance; - const revealOptions = cm.findByDescription('Filter Flashcards'); const revealItems = revealOptions?.subitems ?? []; revealItems.push({description: 'All', event: () => {this.layoutDoc.filterOp = undefined;}, icon: 'layer-group',}); // prettier-ignore @@ -141,32 +141,78 @@ export class CollectionCarouselView extends CollectionSubView() { revealItems.push({description: 'Quiz Cards', event: () => {this.layoutDoc.filterOp = cardMode.QUIZ;}, icon: 'pencil',}); // prettier-ignore !revealOptions && cm.addItem({ description: 'Filter Flashcards', addDivider: false, noexpand: true, subitems: revealItems, icon: 'layer-group' }); }; + + isChildContentActive = () => + this._props.isContentActive?.() === false + ? false + : this._props.isDocumentActive?.() && (this._props.childDocumentsActive?.() || BoolCast(this.Document.childDocumentsActive)) + ? true + : this._props.childDocumentsActive?.() === false || this.Document.childDocumentsActive === false + ? false + : undefined; + + renderDoc = (doc: Doc, showCaptions: boolean, overlayFunc?: (r: DocumentView | null) => void) => { + return ( + + ); + }; + /** + * Display an overlay of the previous card that crossfades to the next card + */ + @computed get overlay() { + const fadeTime = 500; + const lastDoc = this.carouselItems?.[this._last_index]; + return !lastDoc || this.carouselIndex === this._last_index ? null : ( +
+ {this.renderDoc( + lastDoc, + false, // hide captions if the carousel is configured to show the captions + action((r: DocumentView | null) => { + if (r) { + this._fadeTimer && clearTimeout(this._fadeTimer); + this._last_opacity = 0; + this._fadeTimer = setTimeout( + action(() => { + this._last_index = -1; + this._last_opacity = 1; + }), + fadeTime + ); + } + }) + )} +
+ ); + } @computed get content() { - const index = NumCast(this.layoutDoc._carousel_index); + const index = this.carouselIndex; const curDoc = this.carouselItems?.[index]; const captionProps = { ...this._props, NativeScaling: returnOne, PanelWidth: this.captionWidth, fieldKey: 'caption', setHeight: undefined, setContentView: undefined }; const carouselShowsCaptions = StrCast(this.layoutDoc._layout_showCaption); - return !(curDoc?.layout instanceof Doc) ? null : ( + return !curDoc ? null : ( <>
- + {this.renderDoc(curDoc, !!carouselShowsCaptions)} + {this.overlay}
{!carouselShowsCaptions ? null : (
- +
)} ); } @computed get buttons() { - if (!this.carouselItems?.[NumCast(this.layoutDoc._carousel_index)]) return null; + if (!this.carouselItems?.[this.carouselIndex]) return null; return ( <>
@@ -196,7 +242,7 @@ export class CollectionCarouselView extends CollectionSubView() {
- +
this.setPracticeVal(e, practiceVal.MISSED)} style={{ visibility: this.layoutDoc.filterOp === cardMode.PRACTICE ? 'visible' : 'hidden' }}> @@ -208,6 +254,24 @@ export class CollectionCarouselView extends CollectionSubView() { ); } + /** + * Prompts user to add more flashcaards if they are in practice mode but there are no flashcards + */ + renderAddFlashcards = () =>

+ Add flashcards! +

// prettier-ignore + + /** + * Displays message that a flashcard was recently missed if it had previously been marked as wrong. + * */ + renderRecentlyMissed = () =>

+ Recently missed! +

// prettier-ignore + render() { return (
{this.content} - {/* Displays a message to the user to add more flashcards if they are in practice mode and no flashcards are there. */} -

- Add flashcards! -

- {/* Displays a message to the user that a flashcard was recently missed if they had previously gotten it wrong. */} -

- Recently missed! -

+ {this.renderAddFlashcards()} + {this.renderRecentlyMissed()} {this.Document._chromeHidden ? null : this.buttons}
); diff --git a/src/client/views/collections/TabDocView.tsx b/src/client/views/collections/TabDocView.tsx index def1ea731..f56ea9d76 100644 --- a/src/client/views/collections/TabDocView.tsx +++ b/src/client/views/collections/TabDocView.tsx @@ -506,13 +506,13 @@ export class TabDocView extends ObservableReactComponent { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - onActiveContentItemChanged = (contentItem: any) => { + onActiveContentItemChanged = action((contentItem: any) => { if (!contentItem || (this.stack === contentItem.parent && ((contentItem?.tab === this.tab && !this._isActive) || (contentItem?.tab !== this.tab && this._isActive)))) { this._activated = this._isActive = !contentItem || contentItem?.tab === this.tab; if (!this._view && this.tab?.contentItem?.config?.props?.panelName !== TabDocView.DontSelectOnActivate) setTimeout(() => DocumentView.SelectView(this._view, false)); !this._isActive && this._document && Doc.UnBrushDoc(this._document); // bcz: bad -- trying to simulate a pointer leave event when a new tab is opened up on top of an existing one. } - }; + }); // adds a tab to the layout based on the locaiton parameter which can be: // close[:{left,right,top,bottom}] - e.g., "close" will close the tab, "close:left" will close the left tab, -- cgit v1.2.3-70-g09d2 From 313b3d3e67689b175cdc85426ff6af809d476622 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 17 Sep 2024 12:55:38 -0400 Subject: done with comments-- pull request --- eslint.config.mjs | 66 +----- package-lock.json | 176 +++++++++------ package.json | 12 +- src/client/apis/gpt/GPT.ts | 8 +- src/client/documents/Documents.ts | 2 - src/client/util/CurrentUserUtils.ts | 79 +------ src/client/util/Scripting.ts | 4 +- src/client/views/FilterPanel.scss | 12 -- src/client/views/FilterPanel.tsx | 145 +++++-------- src/client/views/PropertiesView.tsx | 2 +- src/client/views/StyleProvider.tsx | 6 + .../views/collections/CollectionCardDeckView.tsx | 41 ++-- src/client/views/global/globalScripts.ts | 240 ++------------------- src/client/views/nodes/IconTagBox.tsx | 141 ++---------- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 5 +- src/typings/index.d.ts | 2 +- 16 files changed, 255 insertions(+), 686 deletions(-) (limited to 'src') diff --git a/eslint.config.mjs b/eslint.config.mjs index 619966f20..c69209327 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,57 +1,13 @@ -import pluginJs from '@eslint/js'; -import pluginReactConfig from 'eslint-plugin-react/configs/recommended.js'; -import globals from 'globals'; -import tseslint from 'typescript-eslint'; +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; +import pluginReact from "eslint-plugin-react"; -export default [ - { - languageOptions: { globals: { ...globals.browser, ...globals.node } }, - }, - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - { - rules: { - 'node/no-missing-import': 0, - 'no-console': 'off', - 'func-names': 'off', - 'no-process-exit': 'off', - 'object-shorthand': 'off', - 'class-methods-use-this': 'off', - 'single-quote': 'off', - 'max-classes-per-file': 0, - - 'react/jsx-filename-extension': [ - 2, - { - extensions: ['.js', '.jsx', '.ts', '.tsx'], - }, - ], - 'import/prefer-default-export': 'off', - 'no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': 'off', - 'prefer-template': 'off', - 'no-inner-declarations': 'off', - 'no-plusplus': 'off', - 'no-multi-assign': 'off', - 'no-underscore-dangle': 'off', - 'no-nested-ternary': 'off', - 'lines-between-class-members': 'off', - 'no-shadow': 'off', - '@typescript-eslint/no-shadow': 'warn', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': 'error', - '@typescript-eslint/no-namespace': 'off', - 'react/destructuring-assignment': 0, - 'prefer-arrow-callback': 'error', - 'no-return-assign': 'error', - 'no-await-in-loop': 'error', - 'no-loop-func': 'error', - 'no-cond-assign': 'error', - 'no-use-before-define': 'error', - 'no-explicit-any': 'error', - 'no-restricted-globals': ['error', 'event'], - }, - }, - pluginReactConfig, -]; +export default [ + {files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"]}, + {languageOptions: { globals: globals.browser }}, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + pluginReact.configs.flat.recommended, +]; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1e738fcb1..3c9c5c81b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,7 +92,7 @@ "D": "^1.0.0", "d3": "^7.8.5", "depcheck": "^1.4.7", - "dotenv": "^16.3.1", + "dotenv": "^16.4.5", "eslint-webpack-plugin": "^4.1.0", "exif": "^0.6.0", "exifr": "^7.1.3", @@ -130,6 +130,7 @@ "image-data-uri": "^2.0.1", "image-size": "^1.0.2", "image-size-stream": "^1.1.0", + "install": "^0.13.0", "is-plain-obj": "^4.1.0", "jimp": "^0.22.10", "jpeg-autorotate": "^9.0.0", @@ -154,7 +155,7 @@ "node-stream-zip": "^1.15.0", "nodemailer": "^6.9.7", "nodemon": "^3.0.2", - "npm": "^10.2.5", + "npm": "^10.8.1", "openai": "^4.26.0", "p-limit": "^6.1.0", "passport": "^0.7.0", @@ -188,6 +189,7 @@ "react-compound-slider": "^3.4.0", "react-datepicker": "^7.3.0", "react-dom": "^18.2.0", + "react-draggable": "^4.4.6", "react-grid-layout": "^1.4.4", "react-icons": "^5.0.1", "react-jsx-parser": "^2.0.0", @@ -246,7 +248,7 @@ "xregexp": "^5.1.1" }, "devDependencies": { - "@eslint/js": "^9.1.1", + "@eslint/js": "^9.10.0", "@types/adm-zip": "^0.5.5", "@types/animejs": "^3.1.12", "@types/archiver": "^6.0.2", @@ -295,9 +297,9 @@ "@types/youtube": "^0.1.0", "chai": "^5.0.0", "cross-env": "^7.0.3", - "eslint": "^9.9.0", - "eslint-plugin-react": "^7.34.1", - "globals": "^15.1.0", + "eslint": "^9.10.0", + "eslint-plugin-react": "^7.36.1", + "globals": "^15.9.0", "jsdom": "^25.0.0", "mocha": "^10.2.0", "prettier": "^3.1.0", @@ -306,7 +308,7 @@ "ts-loader": "^9.5.1", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", - "typescript-eslint": "^8.2.0", + "typescript-eslint": "^8.6.0", "webpack-dev-server": "^5.0.4" }, "engines": { @@ -2675,9 +2677,10 @@ } }, "node_modules/@eslint/js": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", - "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -2690,6 +2693,17 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@ffmpeg/core": { "version": "0.12.6", "resolved": "https://registry.npmjs.org/@ffmpeg/core/-/core-0.12.6.tgz", @@ -9993,16 +10007,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz", - "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", + "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/type-utils": "8.3.0", - "@typescript-eslint/utils": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/type-utils": "8.6.0", + "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -10026,15 +10041,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", - "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", + "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/typescript-estree": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4" }, "engines": { @@ -10054,13 +10070,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", - "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", + "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0" + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10071,13 +10088,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz", - "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", + "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.3.0", - "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/utils": "8.6.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -10095,10 +10113,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", - "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", + "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -10108,13 +10127,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", - "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", + "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/visitor-keys": "8.3.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -10140,6 +10160,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10155,6 +10176,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -10163,15 +10185,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", + "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.3.0", - "@typescript-eslint/types": "8.3.0", - "@typescript-eslint/typescript-estree": "8.3.0" + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10185,12 +10208,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", - "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", + "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/types": "8.6.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -10206,6 +10230,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -17448,15 +17473,17 @@ } }, "node_modules/eslint": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", - "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.1", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -17479,7 +17506,6 @@ "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", @@ -17506,10 +17532,11 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.35.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", - "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -18101,6 +18128,7 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -18117,6 +18145,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -19305,6 +19334,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -19458,7 +19488,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/grid-index": { "version": "1.1.0", @@ -20727,6 +20758,14 @@ "inspect-function": "^0.3.1" } }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -27554,6 +27593,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -37377,6 +37417,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -38075,14 +38116,15 @@ "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==" }, "node_modules/typescript-eslint": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.3.0.tgz", - "integrity": "sha512-EvWjwWLwwKDIJuBjk2I6UkV8KEQcwZ0VM10nR1rIunRDIP67QJTZAHBXTX0HW/oI1H10YESF8yWie8fRQxjvFA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz", + "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.3.0", - "@typescript-eslint/parser": "8.3.0", - "@typescript-eslint/utils": "8.3.0" + "@typescript-eslint/eslint-plugin": "8.6.0", + "@typescript-eslint/parser": "8.6.0", + "@typescript-eslint/utils": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index cb4633c6d..f92a533a9 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "tsc": "tsc -t es5" }, "devDependencies": { - "@eslint/js": "^9.1.1", + "@eslint/js": "^9.10.0", "@types/adm-zip": "^0.5.5", "@types/animejs": "^3.1.12", "@types/archiver": "^6.0.2", @@ -72,9 +72,9 @@ "@types/youtube": "^0.1.0", "chai": "^5.0.0", "cross-env": "^7.0.3", - "eslint": "^9.9.0", - "eslint-plugin-react": "^7.34.1", - "globals": "^15.1.0", + "eslint": "^9.10.0", + "eslint-plugin-react": "^7.36.1", + "globals": "^15.9.0", "jsdom": "^25.0.0", "mocha": "^10.2.0", "prettier": "^3.1.0", @@ -83,7 +83,7 @@ "ts-loader": "^9.5.1", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", - "typescript-eslint": "^8.2.0", + "typescript-eslint": "^8.6.0", "webpack-dev-server": "^5.0.4" }, "dependencies": { @@ -132,7 +132,6 @@ "@types/web": "^0.0.157", "@types/webpack-hot-middleware": "^2.25.9", "@webscopeio/react-textarea-autocomplete": "^4.9.2", - "D": "^1.0.0", "adm-zip": "^0.5.10", "archiver": "^7.0.1", "async": "^3.2.5", @@ -169,6 +168,7 @@ "csv-parser": "^3.0.0", "csv-stringify": "^6.4.4", "csvtojson": "^2.0.10", + "D": "^1.0.0", "d3": "^7.8.5", "depcheck": "^1.4.7", "dotenv": "^16.4.5", diff --git a/src/client/apis/gpt/GPT.ts b/src/client/apis/gpt/GPT.ts index 0b1a5160c..2657bf12e 100644 --- a/src/client/apis/gpt/GPT.ts +++ b/src/client/apis/gpt/GPT.ts @@ -49,7 +49,6 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { maxTokens: 2048, temp: 0.25, prompt: "The user is going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them by the user's specifications. Make sure each description is only in the list once. Each item should be separated by `======`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted (and mention nothing about the formatting details given in this description). It is VERY important that you format it exactly as described, ensuring the proper number of `=` and `-` (6 of each) and NO commas" - // prompt: "I'm going to give you a list of descriptions. Each one is separated by `======` on either side. Descriptions will vary in length, so make sure to only separate when you see `======`. Sort them into lists by shared content. Make sure each description is in only one list. Each list should be separated by `======` with the elements within it separated by `~~~~~~`. Immediately afterward, surrounded by `------` on BOTH SIDES, provide some insight into your reasoning for the way you sorted. It is VERY important that you format it exactly as described, ensuring the proper number of `=` `~` and `-` (6 of each) and no commas.Try to create around 4 groups, but a little more or less is ok. Also, I may provide some more insight after this colon:" }, describe: { model: 'gpt-4-vision-preview', maxTokens: 2048, temp: 0, prompt: 'Describe these images in 3-5 words' }, chatcard: { model: 'gpt-4-turbo', maxTokens: 512, temp: 0.5, prompt: 'Answer the following question as a short flashcard response. Do not include a label.' }, @@ -64,7 +63,7 @@ const callTypeMap: { [type: string]: GPTCallOpts } = { model: 'gpt-4-turbo', maxTokens: 1024, temp: 0, - prompt: "BRIEFLY (<75 words) provide a definition for the following term. It will be used as a rubric to evaluate the user's understanding of the topic", + prompt: "BRIEFLY (<25 words) provide a definition for the following term. It will be used as a rubric to evaluate the user's understanding of the topic", }, type: { @@ -106,11 +105,6 @@ const gptAPICall = async (inputTextIn: string, callType: GPTCallType, prompt?: a try { lastCall = inputText; - // const configuration: ClientOptions = { - // apiKey: process.env.OPENAI_KEY, - // dangerouslyAllowBrowser: true, - // }; - const usePrompt = prompt ? prompt + opts.prompt : opts.prompt; const messages: ChatCompletionMessageParam[] = [ { role: 'system', content: usePrompt }, diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 188f07991..83e236cba 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -493,8 +493,6 @@ export class DocumentOptions { // cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) cardSort_isDesc?: BOOLt = new BoolInfo('whether the cards are sorted ascending or descending'); // test?: STRt = new StrInfo('testing for filtering') - keywords?: MAPt = new MapInfo('keywords', true); - } export const DocOptions = new DocumentOptions(); diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 702d6e6e5..997d5c5a9 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -669,15 +669,10 @@ pie title Minerals in my tap water } static cardTools(): Button[] { return [ - // { btnList: new List(["Time", "Type", "Color", "Chat GPT", "Custom 1", "Custom 2", "Custom 3" ]), - // title: "Sort Type", toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 100, scripts: { script: '{ return setCardSort(value, _readOnly_); }'}}, - // { title: "Font", toolTip: "Font", width: 100, btnType: ButtonType.DropdownList, toolType:"font", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, - // btnList: new List(["Roboto", "Roboto Mono", "Nunito", "Times New Roman", "Arial", "Georgia", "Comic Sans MS", "Tahoma", "Impact", "Crimson Text"]) }, { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Tags", icon:"bolt", toolTip:"Sort by document's tags", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"tag", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "AI Sort", icon:"robot", toolTip:"Have Chat GPT sort your cards for you !", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Pile", icon:"layer-group", toolTip:"View the cards as a pile in the free form view !", btnType: ButtonType.ClickButton, expertMode: false, toolType:"pile", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, { title: "Chat Popup", icon:"lightbulb", toolTip:"Toggle the chat popup's visibility!", width: 45 ,btnType: ButtonType.ToggleButton, expertMode: false, toolType:"toggle-chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, @@ -686,62 +681,23 @@ pie title Minerals in my tap water { title: "Ascending", toolTip: "Sort the cards in ascending order", btnType: ButtonType.ToggleButton, icon: "sort-up", toolType:"up", ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}' }}, { title: "Descending", toolTip: "Sort the cards in descending order",btnType: ButtonType.ToggleButton, icon: "sort-down",toolType:"down",ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, ]}, - - // { title: "Filter", icon:"Filter", toolTip:"Filter cards by tags", width: 150, subMenu: this.cardGroupTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - - - - - - - // // { title: "AIs", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "1st", icon:"Visibility", toolTip:"Filter likes", width: 150, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "2nd", icon:"Visibility", toolTip:"Filter stars", width: 150, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "3rd", icon:"Visibility", toolTip:"Filter ideas", width: 150, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, ] } - // static labelTools(): Button[] { - // return [ - // // { title: "Smart", icon:"robot", toolTip:"Have ChatGPT Label and sort your cards for you!", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"chat", funcs: {hidden:`showFreeform ("chat", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "AIs", icon:"AI Sort", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "1st", icon:"1st", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "2nd", icon:"2nd", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "3rd", icon:"3rd", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // ] - // } + static tagGroupTools(): Button[] { - if (!Doc.UserDoc().activeDashboard){ - Doc.UserDoc().myFilterHotKeyTitles = new List(['Star', 'Heart', 'Bolt', 'Cloud' ]) - - Doc.UserDoc()['Star'] = 'star' - Doc.UserDoc()['Heart'] = 'heart' - Doc.UserDoc()['Bolt'] = 'bolt' - Doc.UserDoc()['Cloud'] = 'cloud' + if (!Doc.UserDoc().activeDashboard) { + Doc.UserDoc().myFilterHotKeyTitles = new List(['Star', 'Heart', 'Bolt', 'Cloud']); - } - - + ['Star', 'Heart', 'Bolt', 'Cloud'].forEach(key => { + Doc.UserDoc()[key] = key.toLowerCase(); + }); +} // hack: if there's no dashboard, create default filters. otherwise, just make sure that the Options button is preserved return (Doc.UserDoc().activeDashboard ? [] : [ { title: "Star", isSystem: false, icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, { title: "Heart", isSystem: false,icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, { title: "Bolt", isSystem: false,icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, { title: "Cloud", isSystem: false,icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - - - // { title: "Group 1", icon, toolTip:"Click to toggle group 1's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"1", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Group 2", icon, toolTip:"Click to toggle group 2's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"2", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Group 3", icon, toolTip:"Click to toggle group 3's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"3", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Group 4", icon, toolTip:"Click to toggle group 4's visibility", btnType: ButtonType.ToggleButton, width: 40, expertMode: false, toolType:"4", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "", icon, toolTip:"Click to toggle group 5's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"5", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "", icon, toolTip:"Click to toggle group 6's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"6", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "", icon, toolTip:"Click to toggle group 7's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"7", funcs: {hidden:`!cardHasLabel(this.toolType)`}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, ]).concat([ { title: "Options", isSystem: true,icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} ]) @@ -856,19 +812,6 @@ pie title Minerals in my tap water { title: "View", icon: "View", toolTip: "View tools", subMenu: CurrentUserUtils.viewTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available { title: "Stack", icon: "View", toolTip: "Stacking tools", subMenu: CurrentUserUtils.stackTools(), expertMode: false, toolType:CollectionViewType.Stacking, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - - // { title: "SortType", btnList: new List(["Time", "Type", "Color", "ChatGPT", "Custom 1", "Custom 2", "Custom 3" ]), - // toolTip: "Card Sort Type", btnType: ButtonType.DropdownList, ignoreClick: true, width: 100, scripts: { script: '{ return showFreeform(value, _readOnly_); }' }, - // // funcs: {hidden: `!SelectedDocType("card", this.expertMode)`} - // }, - // { title: "Visibility", icon:"Visibility", toolTip:"Filter AI labels", subMenu: this.cardGroupTools("robot"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("chat", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"heart", toolTip:"Add Like labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"like", funcs: {hidden:`showFreeform ("like", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Visibility", icon:"Visibility", toolTip:"Filter likes", width: 10, subMenu: this.cardGroupTools("heart"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("like", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"star", toolTip:"Add Star labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {hidden:`showFreeform ("star", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Visibility", icon:"Visibility", toolTip:"Filter stars", width: 80, subMenu: this.cardGroupTools("star"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("star", true)`, width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - // // { title: "Custom", icon:"cloud", toolTip:"Add Idea labels", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"idea", funcs: {hidden:`showFreeform ("idea", true)`},scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Visibility", icon:"Visibility", toolTip:"Filter ideas", width: 80, subMenu: this.cardGroupTools("cloud"), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden:`!showFreeform("idea", true)`,width: 100, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, - { title: "Card", icon: "Card", toolTip: "Card View Tools", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available // { title: "Create", icon: "Create", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available { title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Web is selected @@ -877,13 +820,7 @@ pie title Minerals in my tap water { title: "Schema", icon: "Schema",linearBtnWidth:58,toolTip: "Schema functions",subMenu: CurrentUserUtils.schemaTools(),expertMode: false,toolType:CollectionViewType.Schema,funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Schema is selected { title: "Filter", icon:"=", toolTip:"Filter cards by tags", btnType: ButtonType.MultiToggleButton, width: 150, ignoreClick: true,toolType:DocumentType.COL, subMenu: this.tagGroupTools(), funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, - // [ - // { title: "Star", icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Heart", icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Bolt", icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - // { title: "Cloud", icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - - // ] + }, ]; diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts index c63d3d7cb..cb314e3f1 100644 --- a/src/client/util/Scripting.ts +++ b/src/client/util/Scripting.ts @@ -1,7 +1,7 @@ // export const ts = (window as any).ts; // import * as typescriptlib from '!!raw-loader!../../../node_modules/typescript/lib/lib.d.ts' // import * as typescriptes5 from '!!raw-loader!../../../node_modules/typescript/lib/lib.es5.d.ts' -import typescriptlib from 'type_decls.d'; +// import typescriptlib from 'type_decls.d'; import * as ts from 'typescript'; import { Doc, FieldType } from '../../fields/Doc'; import { RefField } from '../../fields/RefField'; @@ -248,7 +248,7 @@ export function CompileScript(script: string, options: ScriptOptions = {}): Comp const funcScript = `(function(${paramString})${reqTypes} { ${body} })`; host.writeFile('file.ts', funcScript); - if (typecheck) host.writeFile('node_modules/typescript/lib/lib.d.ts', typescriptlib); + // if (typecheck) host.writeFile('node_modules/typescript/lib/lib.d.ts', typescriptlib); const program = ts.createProgram(['file.ts'], {}, host); const testResult = program.emit(); const outputText = host.readFile('file.js'); diff --git a/src/client/views/FilterPanel.scss b/src/client/views/FilterPanel.scss index 34c3d2fc1..fbdebde0d 100644 --- a/src/client/views/FilterPanel.scss +++ b/src/client/views/FilterPanel.scss @@ -350,19 +350,7 @@ } -.drawing-box{ - position: absolute; - z-index: 10000; - border-color: black; - border-style: solid; - border-width: medium; - border-radius: 10%; - background-color: #323232; - - - -} // .sliderBox-outerDiv { // width: 30%;// width: calc(100% - 14px); // 14px accounts for handles that are at the max value of the slider that would extend outside the box // height: 40; // height: 100%; diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index e15285007..e73d9c2c9 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -11,7 +11,7 @@ import { List } from '../../fields/List'; import { RichTextField } from '../../fields/RichTextField'; import { SearchUtil } from '../util/SearchUtil'; import { SnappingManager } from '../util/SnappingManager'; -import { undoable } from '../util/UndoManager'; +import { undoable, undoBatch } from '../util/UndoManager'; import { FieldsDropdown } from './FieldsDropdown'; import './FilterPanel.scss'; import { DocumentView } from './nodes/DocumentView'; @@ -20,26 +20,14 @@ import { ObservableReactComponent } from './ObservableReactComponent'; import { Button } from '../util/CurrentUserUtils'; import { ButtonType } from './nodes/FontIconBox/FontIconBox'; import { DocCast } from '../../fields/Types'; -// import { Docs } from '../../documents/Documents'; -import { Docs } from '../documents/Documents'; import { CurrentUserUtils } from '../util/CurrentUserUtils'; -import { DocumentOptions } from '../documents/Documents'; -import { DocUtils } from '../documents/DocUtils'; -import { dropActionType } from '../util/DropActionTypes'; -import { Toggle } from 'browndash-components'; -import { SettingsManager } from '../util/SettingsManager'; import { StrCast } from '../../fields/Types'; -import { ToggleType } from 'browndash-components'; -import { MultiToggle } from 'browndash-components'; -import { Type } from 'browndash-components'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { DocData } from '../../fields/DocSymbols'; -import { DocumentType } from '../documents/DocumentTypes'; import { Tooltip } from '@mui/material'; import { useLocalObservable } from 'mobx-react'; import { useRef } from 'react'; import { useEffect } from 'react'; -import { useState } from 'react'; interface filterProps { @@ -242,12 +230,14 @@ export class FilterPanel extends ObservableReactComponent { return nonNumbers / facetValues.length > 0.1 ? facetValues.sort() : facetValues.sort((n1: string, n2: string) => Number(n1) - Number(n2)); }; - addHotkey(hotKey: string) { + /** + * Allows users to add a filter hotkey to the properties panel. Will also update the multitoggle at the top menu and the + * icontags tht are displayed on the documents themselves + * @param hotKey tite of the new hotkey + */ + addHotkey = (hotKey: string) => { const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); const filter = DocCast(buttons.Filter); - const filter2 = DocCast(filter); - const but2 = Doc.UserDoc().myContextMenuBtns; - const newKey: Button = { title: hotKey, @@ -260,15 +250,11 @@ export class FilterPanel extends ObservableReactComponent { scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}' }, }; - // const heyy = [...hi, newKey] - const currHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) Doc.UserDoc().myFilterHotKeyTitles = new List(currHotKeys.concat(hotKey)) Doc.UserDoc()[hotKey] = 'bolt' - // Doc.UserDoc()['supppp'] = 'star' - const newBtn = CurrentUserUtils.setupContextMenuBtn(newKey, filter); newBtn.isSystem = newBtn[DocData].isSystem = undefined; @@ -276,32 +262,16 @@ export class FilterPanel extends ObservableReactComponent { const subDocs = DocListCast(filter.data) const opts = subDocs[subDocs.length-1] Doc.AddDocToList(filter, 'data', newBtn, opts, true); - - - - // console.log(filter[DocData].data + 'ok') - // // console.log(filter[DocData][0] + 'help') - // console.log(filter[DocData] + 'good grief') - - // console.log(DocCast(DocCast(filter.data))[0]) - // this.removeHotKey() - - // console.log(DocCast(filter.data) + 'HI') - // console.log(DocListCast(filter.data) + 'WOOOOO') - // console.log(DocCast(filter.data)[0] + 'hm :(') - } - - hotKeyButtons() { + /** + * Renders the newly formed hotkey icon buttons + * @returns the buttons to be rendered + */ + hotKeyButtons = () => { const selected = DocumentView.SelectedDocs().lastElement(); - - // console.log(StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + "hiii") - const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - - // hotKeys.forEach(l => console.log(l + "render")) // Selecting a button should make it so that the icon on the top filter panel becomes said icon const buttons = hotKeys.map((hotKey, i) => ( @@ -506,6 +476,10 @@ interface HotKeyButtonProps { selected?: Doc } +/** + * Renders the buttons that correspond to each icon tag in the properties view. Allows users to change the icon, + * title, and delete. + */ const HotKeyIconButton: React.FC = observer(({ hotKey, selected}) => { const state = useLocalObservable(() => ({ isActive: false, @@ -534,36 +508,34 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select const handleClick = () => { state.toggleActive(); - // console.log(state.isActive + "hmmm") }; const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); + const filter = DocCast(buttons.Filter); + /** + * The doc of the button in the context menu that corresponds to the current hotkey + * @returns + */ const myHotKeyDoc = () => { - const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); - const filter = DocCast(buttons.Filter); const hotKeyDocs = DocListCast(filter.data) return hotKeyDocs.filter(k => StrCast(k.title) === hotKey)[0] } + /** + * Removes a hotkey from list + */ const removeHotKey = () => { - const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); - const filter = DocCast(buttons.Filter); - Doc.RemoveDocFromList(filter, 'data', myHotKeyDoc()); - - - - - // console.log((DocListCast(filter.data)[0].title) + "emmanuel") - - - // console.log(DocCast(filter.data) + 'HI') - // console.log(DocCast(filter.data)[0] + 'hm :(') - } + + /** + * Deselects if the user clicks outside the button + * @param event + */ const handleClickOutside = (event: MouseEvent) => { if (panelRef.current && !panelRef.current.contains(event.target as Node)) { state.deactivate(); @@ -571,23 +543,22 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select state.stopEditing(); updateFromInput() - - - - // Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => k === hotKey ? state.myHotKey : k)); - // Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]) - } } }; - const updateFromInput = () => { - const hi = myHotKeyDoc() + /** + * Updates the list of hotkeys based on the users input. replaces the old title with the new one and then assigns this new + * hotkey with the current icon + */ + const updateFromInput = undoable (() => { + const myDoc = myHotKeyDoc() Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => k === hotKey ? state.myHotKey : k)); Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]) - hi.title = state.myHotKey - hi.toolTip = `Click to toggle the ${state.myHotKey}'s group's visibility` - } + Doc.UserDoc()[hotKey] = '' + myDoc.title = state.myHotKey + myDoc.toolTip = `Click to toggle the ${state.myHotKey}'s group's visibility` + }, '') useEffect(() => { @@ -599,31 +570,25 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select const iconOpts = ['star', 'heart', 'bolt', 'satellite', 'palette', 'robot', 'lightbulb', 'highlighter', 'book', 'chalkboard' ]; + /** + * Panel of icons the user can choose from to represent their tag + */ const iconPanel = iconOpts.map((icon, i) => ( - )); - function isAttrFiltered(attr: string) { - if (selected && selected._childFilters !== undefined && selected.type === DocumentType.COL) { - return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); - } else { - return false; - } - } - + /** + * Actually renders the buttons + */ return ( -
{ e.stopPropagation(); state.startEditing(); @@ -673,20 +638,12 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select )}
); -}) +}) \ No newline at end of file diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx index daa8e1720..e940ba6f9 100644 --- a/src/client/views/PropertiesView.tsx +++ b/src/client/views/PropertiesView.tsx @@ -54,7 +54,7 @@ export class PropertiesView extends ObservableReactComponent Doc.toggleLockedPosition(doc), 'toggleBackground'); @@ -368,6 +369,11 @@ export function DefaultStyleProvider(doc: Opt, props: Opt props?.DocumentView?.() && CollectionFreeFormDocumentView.from(props.DocumentView()) ? : null; + const iconTags = () => { + if (doc && doc![DocData].showIconTags) + {return ()} + } + return ( <> {paint()} diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 2390d162c..3d9f28a49 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -23,6 +23,8 @@ import { dropActionType } from '../../util/DropActionTypes'; import { DocCast } from '../../../fields/Types'; import { SelectionManager } from '../../util/SelectionManager'; + + enum cardSortings { Time = 'time', Type = 'type', @@ -32,6 +34,14 @@ enum cardSortings { Tag = 'tag', None = '', } + +/** + * New view type specifically for studying more dynamically. Allows you to reorder docs however you see fit, easily + * sort and filter using presets, and customize your experience with chat gpt. + * + * This file contains code as to how the docs are to be rendered (there place geographically and also in regards to sorting), + * and callback functions for the gpt popup + */ @observer export class CollectionCardView extends CollectionSubView() { private _dropDisposer?: DragManager.DragDropDisposer; @@ -40,10 +50,8 @@ export class CollectionCardView extends CollectionSubView() { private _textToDoc = new Map(); @observable _forceChildXf = false; - // @observable _isLoading = false; @observable _hoveredNodeIndex = -1; @observable _docRefs = new ObservableMap(); - _draggerRef = React.createRef(); @observable _maxRowCount = 10; @observable _docDraggedIndex: number = -1; @observable _isACardBeingDragged: boolean = false; @@ -99,12 +107,12 @@ export class CollectionCardView extends CollectionSubView() { // Reaction to cardSort changes this._disposers.sort = reaction( - () => this.cardSort, - cardSort => { - if (cardSort === cardSortings.Chat) { + () => GPTPopup.Instance.visible, + isVis => { + if (isVis) { this.openChatPopup(); } else { - GPTPopup.Instance.setVisible(false); + this.Document.cardSort = (this.cardSort === cardSortings.Chat) ? '' : this.Document.cardSort; } } ); @@ -296,7 +304,7 @@ export class CollectionCardView extends CollectionSubView() { * @param de drop event * @returns true if a card has been dropped, falls if not */ - onInternalDrop = (e: Event, de: DragManager.DropEvent) => { + onInternalDrop = undoable((e: Event, de: DragManager.DropEvent) => { if (de.complete.docDragData) { this._isACardBeingDragged = false; this._docDraggedIndex = -1; @@ -304,7 +312,7 @@ export class CollectionCardView extends CollectionSubView() { return true; } return false; - }; + }, '' ); get sortedDocs() { return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.Document.cardSort_isDesc), this._docDraggedIndex); @@ -511,8 +519,6 @@ export class CollectionCardView extends CollectionSubView() { image[DocData].description = response.trim(); return response; // Return the response from gptImageLabel } catch (error) { - console.log('bad things have happened'); - console.log(error); } return ''; @@ -523,18 +529,22 @@ export class CollectionCardView extends CollectionSubView() { * usable code * @param gptOutput */ - @action processGptOutput = (gptOutput: string, questionType: string, tag?: string) => { - console.log('HIIII'); - console.log(StrCast(this.Document.cardSort) + 'cardSort'); + @action + + processGptOutput = undoable((gptOutput: string, questionType: string, tag?: string) => { // Split the string into individual list items const listItems = gptOutput.split('======').filter(item => item.trim() !== ''); - if (questionType == '2' || questionType == '4') { + if (questionType === '2' || questionType === '4') { this.childDocs.forEach(d => { d['chatFilter'] = false; }); } + if (questionType ==='6'){ + this.Document.cardSort = 'chat' + } + listItems.forEach((item, index) => { const normalizedItem = item.trim(); @@ -545,7 +555,6 @@ export class CollectionCardView extends CollectionSubView() { switch (questionType) { case '6': doc.chatIndex = index; - console.log(index); break; case '1': const allHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); @@ -578,7 +587,7 @@ export class CollectionCardView extends CollectionSubView() { console.warn(`No matching document found for item: ${normalizedItem}`); } }); - }; + }, ''); /** diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 8b9f128e0..9e56d313e 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -198,44 +198,6 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "tag", setDoc: (doc: Doc, dv: DocumentView) => doc.cardSort === "tag" ? doc.cardSort = '' : doc.cardSort = 'tag', }], - // ['heart', { - // checkResult: (doc: Doc) => isAttrFiltered('heart'), - // setDoc: (doc: Doc, dv: DocumentView) => { - // isAttrFiltered('heart') ? Doc.setDocFilter(doc, 'heart', true, 'remove') : Doc.setDocFilter(doc, 'heart', true, 'match'); - - // } - // }], - // ['star', { - // checkResult: (doc: Doc) => isAttrFiltered('star'), - - // setDoc: (doc: Doc, dv: DocumentView) => { - // isAttrFiltered('star') ? Doc.setDocFilter(doc, 'star', true, 'remove') : Doc.setDocFilter(doc, 'star', true, 'match'); - // } - // }], - // ['bolt', { - // checkResult: (doc: Doc) => isAttrFiltered('bolt'), - // setDoc: (doc: Doc, dv: DocumentView) => { - // isAttrFiltered('bolt') ? Doc.setDocFilter(doc, 'bolt', true, 'remove') : Doc.setDocFilter(doc, 'bolt', true, 'match'); - - // } - // }], - // ['cloud', { - // checkResult: (doc: Doc) => isAttrFiltered('cloud'), - // setDoc: (doc: Doc, dv: DocumentView) => { - // isAttrFiltered('cloud') ? Doc.setDocFilter(doc, 'cloud', true, 'remove') : Doc.setDocFilter(doc, 'cloud', true, 'match'); - - // } - // }], - // ['chat', { - // checkResult: (doc: Doc) => { - - // if (StrCast(doc?.cardSort) === "chat"){ - // return true - // }} , - // setDoc: (doc: Doc, dv: DocumentView) => { - // doc.cardSort === "chat" ? doc.cardSort = '' : doc.cardSort = 'chat'; - // }, - // }], ['up', { checkResult: (doc: Doc) => BoolCast(!doc?.cardSort_isDesc), setDoc: (doc: Doc, dv: DocumentView) => { @@ -251,10 +213,17 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' ['toggle-chat', { checkResult: (doc: Doc) => GPTPopup.Instance.visible, setDoc: (doc: Doc, dv: DocumentView) => { - GPTPopup.Instance.setVisible(!GPTPopup.Instance.visible); - GPTPopup.Instance.setMode(GPTPopupMode.SORT); - doc.cardSort === "chat" ? doc.cardSort = '' : doc.cardSort = 'chat'; + if (GPTPopup.Instance.visible){ + doc.cardSort = '' + GPTPopup.Instance.setVisible(false); + + } else { + GPTPopup.Instance.setVisible(true); + GPTPopup.Instance.setMode(GPTPopupMode.CARD); + GPTPopup.Instance.setCardsDoneLoading(true); + } + }, }], @@ -293,9 +262,6 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' if (checkResult) { return map.get(attr)?.checkResult(selected); } - const filters = StrListCast(selected._childFilters).concat(StrListCast(selected?._childFiltersByRanges).filter((filter, i) => !(i % 3))); - - // console.log(filters.some(filter => filter.includes('star'))+ "SUOOOOPPP") const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; DocumentView.Selected().map(dv => map.get(attr)?.setDoc(dv.layoutDoc, dv)); @@ -303,7 +269,9 @@ ScriptingGlobals.add(function showFreeform(attr: 'center' | 'grid' | 'snaplines' return undefined; }); - +/** + * Applies a filter to the selected document (or, if the settins button is pressed, opens the filter panel) + */ ScriptingGlobals.add(function handleTags(value?: any, checkResult?: boolean) { const selected = DocumentView.SelectedDocs().lastElement(); @@ -312,7 +280,7 @@ ScriptingGlobals.add(function handleTags(value?: any, checkResult?: boolean) { } if (checkResult) { - return value=== 'opts' ? PropertiesView.Instance.openFilters : isAttrFiltered(value) + return value=== 'opts' ? PropertiesView.Instance?.openFilters : isAttrFiltered(value) } if (value != 'opts'){ @@ -321,8 +289,7 @@ ScriptingGlobals.add(function handleTags(value?: any, checkResult?: boolean) { else { SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? Math.min(MainView.Instance._dashUIWidth - 50, 250) : 0); - - PropertiesView.Instance.CloseAll() + PropertiesView.Instance?.CloseAll() PropertiesView.Instance.openFilters = true } @@ -330,183 +297,6 @@ ScriptingGlobals.add(function handleTags(value?: any, checkResult?: boolean) { return undefined; }, ''); - - -// ScriptingGlobals.add(function cardHasLabel(label: string) { -// const selected = DocumentView.SelectedDocs().lastElement(); -// const labelNum = Number(label) - 1; -// return labelNum < 4 || (selected && DocListCast(selected[Doc.LayoutFieldKey(selected)]).some(doc => doc[StrCast(selected.cardSort_customField)] == labelNum)); -// }, ''); - -// ScriptingGlobals.add(function setCardSort(attr: "Time" | "Type"| "Color"| "ChatGPT"| "Custom 1"| "Custom 2"| "Custom 3", value?: any, checkResult?: boolean) { -// // const editorView = RichTextMenu.Instance?.TextView?.EditorView; -// const selected = DocumentView.SelectedDocs().lastElement(); - -// // prettier-ignore -// const map: Map<"Time" | "Type"| "Color"| "ChatGPT"| "Custom 1"| "Custom 2"| "Custom 3", { checkResult: (doc: Doc) => any; setDoc: (doc: Doc) => void;}> = new Map([ -// ['Time', { - -// checkResult: (doc: Doc) => {StrCast(doc?.cardSort); -// console.log(StrCast(doc?.cardSort + "card sort"))}, -// setDoc: (doc: Doc) => {doc.cardSort = "time" -// console.log("hewwo")} - -// , -// }], -// ['Type', { -// checkResult: (doc: Doc) => StrCast(doc?.cardSort), -// setDoc: (doc: Doc) => doc.cardSort = "type", -// }], -// ['Color', { -// checkResult: (doc: Doc) => StrCast(doc?.cardSort), -// setDoc: (doc: Doc) => doc.cardSort = "color", -// }], -// // ['links', { -// // checkResult: (doc: Doc) => StrCast(doc?.cardSort) === "links", -// // setDoc: (doc: Doc) => doc.cardSort = "links", -// // }], -// ['Custom 1', { -// checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 1", -// setDoc: (doc: Doc) => { -// doc.cardSort = "custom"; -// doc.cardSort_customField = "like"; -// doc.cardSort_visibleSortGroups = new List(); -// } -// }], -// ['Custom 2', { -// checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 2", -// setDoc: (doc: Doc) => { -// doc.cardSort = "custom"; -// doc.cardSort_customField = "star"; -// doc.cardSort_visibleSortGroups = new List(); -// } -// }], -// ['Custom 3', { -// checkResult: (doc: Doc) => StrCast(doc?.cardSort) + " 3", -// setDoc: (doc: Doc) => { -// doc.cardSort = "custom"; -// doc.cardSort_customField = "idea"; -// doc.cardSort_visibleSortGroups = new List(); -// } -// }], -// ['ChatGPT', { -// checkResult: (doc: Doc) => StrCast(doc?.cardSort_customField), -// setDoc: (doc: Doc) => { -// doc.cardSort = "custom"; -// doc.cardSort_customField = "chat"; -// doc.cardSort_visibleSortGroups = new List(); -// }, -// }], -// ]); - -// for (let i = 0; i < 8; i++) { -// map.set((i + 1 + '') as any, { -// checkResult: (doc: Doc) => NumListCast(doc?.cardSort_visibleSortGroups).includes(i), -// setDoc: (doc: Doc) => { -// const list = NumListCast(doc.cardSort_visibleSortGroups); -// doc.cardSort_visibleSortGroups = new List(list.includes(i) ? list.filter(d => d !== i) : [...list, i]); -// }, -// }); -// } - -// if (checkResult) { -// console.log(attr + "attricute") -// console.log(map.get(attr)?.checkResult(selected) + "check result") -// return map.get(attr)?.checkResult(selected); -// } - -// console.log(attr + "attricute lol") - -// // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; -// DocumentView.Selected().map(dv => map.get(attr)?.setDoc(dv.layoutDoc)); -// // setTimeout(() => batch.end(), 100); -// return undefined; - -// // map.get(attr)?.setDoc?.(); -// // return undefined; -// }); - -// ScriptingGlobals.add(function setCardSort(value?: any, checkResult?: boolean) { -// // const editorView = RichTextMenu.Instance?.TextView?.EditorView; -// const selected = DocumentView.SelectedDocs().lastElement(); -// if (checkResult) { -// // console.log(attr + "attricute") -// // console.log(map.get(attr)?.checkResult(selected) + "check result") -// console.log(StrCast(selected?.cardSort) + 'check'); -// const hi = StrCast(selected?.cardSort); -// return StrCast(selected?.cardSortForDropDown) ?? 'Time'; -// } -// function docFields(doc: Doc): void { -// switch (value) { -// case 'Custom 1': -// doc.cardSort_customField = 'like'; -// break; -// case 'Custom 2': -// doc.cardSort_customField = 'star'; -// break; -// case 'Custom 3': -// doc.cardSort_customField = 'idea'; -// break; -// case 'Chat GPT': -// doc.cardSort = 'custom'; -// doc.cardSort_customField = 'chat'; -// break; -// default: -// break; -// } - -// doc.cardSort_visibleSortGroups = new List(); -// } - -// // const batch = map.get(attr)?.waitForRender ? UndoManager.StartBatch('set freeform attribute') : { end: () => {} }; -// DocumentView.Selected().map(dv => { -// dv.Document.cardSortForDropDown = value; - -// if (value != 'Chat GPT') { -// dv.Document.cardSort = value.trim().split(/\s+/)[0].toLowerCase(); -// } -// docFields(dv.Document); -// }); - -// return undefined; - -// // map.get(attr)?.setDoc?.(); -// // return undefined; -// }); - -// ScriptingGlobals.add(function setCardSortAttr(attr: 'time' | 'docType' | 'color', value: any, checkResult?: boolean) { -// // const editorView = RichTextMenu.Instance?.TextView?.EditorView; -// const selected = SelectionManager.Docs.lastElement(); -// // prettier-ignore -// const map: Map<'time' | 'docType' | 'color', { waitForRender?: boolean, checkResult: (doc:Doc) => any; setDoc: (doc:Doc, dv:DocumentView) => void;}> = new Map([ -// ['time', { -// checkResult: (doc:Doc) => StrCast(doc?.cardSort), -// setDoc: (doc:Doc,dv:DocumentView) => doc.cardSort = "time", -// }], -// ['docType', { -// checkResult: (doc:Doc) => StrCast(doc?.cardSort), -// setDoc: (doc:Doc,dv:DocumentView) => doc.cardSort = "type", -// }], -// ['color', { -// checkResult: (doc:Doc) => StrCast(doc?.cardSort), -// setDoc: (doc:Doc,dv:DocumentView) => doc.cardSort = "color", -// }], -// // ['custom', { -// // checkResult: () => RichTextMenu.Instance.textAlign, -// // setDoc: () => value && editorView?.state ? RichTextMenu.Instance.align(editorView, editorView.dispatch, value):(Doc.UserDoc().textAlign = value), -// // }] -// // , -// ]); - -// if (checkResult) { -// return map.get(attr)?.checkResult(selected); -// } - -// console.log('hey') -// SelectionManager.Views.map(dv => map.get(attr)?.setDoc(dv.layoutDoc, dv)); -// console.log('success') -// }); - // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function setFontAttr(attr: 'font' | 'fontColor' | 'highlight' | 'fontSize' | 'alignment', value: string | number, checkResult?: boolean) { const editorView = RichTextMenu.Instance?.TextView?.EditorView; diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index 8aa6bff2b..370ce51d1 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -1,13 +1,9 @@ import React from "react"; import { observer } from "mobx-react"; import { computed } from "mobx"; - import { ObservableReactComponent } from "../ObservableReactComponent"; import { NumCast } from "../../../fields/Types"; -import { makeObservable } from "mobx"; import { Doc } from "../../../fields/Doc"; -import { Reaction } from "mobx"; -import { reaction } from "mobx"; import { numberRange } from "../../../Utils"; import { Tooltip } from "@mui/material"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; @@ -15,16 +11,9 @@ import { undoable } from "../../util/UndoManager"; import { BoolCast } from "../../../fields/Types"; import { DocCast } from "../../../fields/Types"; import './IconTagBox.scss'; -import { AclAdmin, AclAugment, AclEdit, DocData } from '../../../fields/DocSymbols'; +import {DocData } from '../../../fields/DocSymbols'; import { StrListCast } from "../../../fields/Doc"; import { StrCast } from "../../../fields/Types"; -import { DocListCast } from "../../../fields/Doc"; -import { List } from "../../../fields/List"; -import { action } from "mobx"; -import { DragManager } from "../../util/DragManager"; -import { setupMoveUpEvents } from "../../../ClientUtils"; -import { returnFalse } from "../../../ClientUtils"; -import { emptyFunction } from "../../../Utils"; import { CollectionViewType } from "../../documents/DocumentTypes"; import { SnappingManager } from "../../util/SnappingManager"; import { MainView } from "../MainView"; @@ -33,95 +22,28 @@ import { PropertiesView } from "../PropertiesView"; export interface IconTagProps { doc: Doc; - - } +/** + * Renders the icon tags that rest under the document. The icons rendered are determined by the values of + * each icon in the userdoc. + */ @observer export class IconTagBox extends ObservableReactComponent { - private ref: React.RefObject; - private height: number = 0; - - @computed get currentScale() { - // console.log(NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1)) return NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1); } constructor(props: any) { super(props); - makeObservable(this); - this.ref = React.createRef(); } - // componentDidMount(): void { - // this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - // this._props.doc._keywordHeight = this.height; - - // reaction( - // () => this.currentScale, - // () => { - // if (this.currentScale < 1) { - // this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; - // this._props.doc._keywordHeight = this.height; - // } - // } - // ); - // } - componentDidUpdate(prevProps: Readonly): void { - // this.height = this.ref.current?.getBoundingClientRect().height ? this.ref.current?.getBoundingClientRect().height : 0; this._props.doc[DocData].tagHeight = 36*this.currentScale; } - // createCollection = () => { - // // Get the documents that contain the keyword. - // const selected = DocListCast(this.getKeywordCollectionDocs()!); - // const newEmbeddings = selected.map(doc => Doc.MakeEmbedding(doc)); - - // // Create a new collection and set up configurations. - // const newCollection = ((doc: Doc) => { - // const docData = doc[DocData]; - // docData.data = new List(newEmbeddings); - // docData.title = this._props.keyword; - // doc._freeform_panX = doc._freeform_panY = 0; - // return doc; - // })(Doc.MakeCopy(Doc.UserDoc().emptyCollection as Doc, true)); - // newEmbeddings.forEach(embed => (embed.embedContainer = newCollection)); - // newCollection._width = 900; - // newCollection._height = 900; - // newCollection.layout_fitWidth = true; - - // // Add the collection to the keyword document's list of associated smart collections. - // this._props.keywordDoc.collections = new List([...DocListCast(this._props.keywordDoc.collections), newCollection]); - // newCollection[DocData].data_labels = new List([this._props.keyword]); - // newCollection[DocData][`${this._props.keyword}`] = true; - // newCollection[DocData].showLabels = true; - // return newCollection; - // }; - - // @action - // handleDragStart = (e: React.PointerEvent) => { - // if (this._props.isEditing) { - // const clone = this.ref.current?.cloneNode(true) as HTMLElement; - // if (!clone) return; - - // setupMoveUpEvents( - // this, - // e, - // () => { - // const dragData = new DragManager.DocumentDragData([this.createCollection()]); - // DragManager.StartDocumentDrag([this.ref.current!], dragData, e.clientX, e.clientY, {}); - // return true; - // }, - // returnFalse, - // emptyFunction - // ); - // e.preventDefault(); - // } - // }; /** * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups @@ -130,25 +52,10 @@ export class IconTagBox extends ObservableReactComponent { * @returns */ renderButtons = (doc: Doc): JSX.Element | null => { - // if (cardSort !== cardSortings.Custom) return null; - const amButtons = (StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length) + 1 const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) - - - // const amButtons = Math.max( - // 4, - // this.childDocs?.reduce((set, d) => { - // if (this.cardSort_customField) { - // set.add(NumCast(d[this.cardSort_customField])); - // } - // return set; - // }, new Set()).size ?? 0 - // ); - - // const activeButtonIndex = CollectionCardView.getButtonGroup(this.cardSort_customField, doc); - + const totalWidth = (amButtons -1) * 35 + (amButtons -1) * 2 * 5 + 6; const iconMap = (buttonID: number) => { @@ -179,16 +86,14 @@ export class IconTagBox extends ObservableReactComponent { ))} - - {/* Click to customize these icons
}> - - */}
); }; + /** + * Opens the filter panel in the properties menu + */ + openHotKeyMenu = () => { SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? Math.min(MainView.Instance._dashUIWidth - 50, 250) : 0); @@ -204,31 +109,19 @@ export class IconTagBox extends ObservableReactComponent { * @param doc */ toggleButton = undoable((doc: Doc, icon: string) => { - - - - // this.cardSort_customField && (doc[this.cardSort_customField] = buttonID); - - // doc.cardSort_activeIcons = new List() - - - // const list = StrListCast(doc.cardSort_activeIcons); - // doc.cardSort_activeIcons = new List(list.includes(icon) ? list.filter(d => d !== icon) : [...list, icon]); - BoolCast(doc[icon]) ? doc[icon] = false : doc[icon] = true - - - // StrListCast(doc.cardSort_activeIcons).push(iconMap[buttonID]) }, 'toggle card tag'); + /** + * Determines whether or not the given icon is active depending on the doc's data + * @param doc + * @param icon + * @returns + */ getButtonIcon = (doc: Doc, icon: any): JSX.Element => { - - // const isActive = StrListCast(doc.cardSort_activeIcons).includes(icon) const isActive = doc[icon] - - // console.log(StrListCast(doc.cardSort_activeIcons)) const color = isActive ? '#4476f7' : '#323232'; return ; @@ -244,8 +137,6 @@ export class IconTagBox extends ObservableReactComponent { } - - } diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 002e82332..53bedbb65 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -279,7 +279,7 @@ export class GPTPopup extends ObservableReactComponent { } /** - * Generates a response to the user's questoin depending on the type of their question + * Generates a response to the user's question depending on the type of their question */ generateCard = async () => { console.log(this.chatSortPrompt + "USER PROMPT") @@ -798,7 +798,8 @@ export class GPTPopup extends ObservableReactComponent { color={StrCast(SettingsManager.userVariantColor)} tooltip="close" icon={} - onClick={() => this.setVisible(false)} + onClick={() => { + this.setVisible(false)}} /> diff --git a/src/typings/index.d.ts b/src/typings/index.d.ts index bee79a38d..fea88cdcb 100644 --- a/src/typings/index.d.ts +++ b/src/typings/index.d.ts @@ -12,7 +12,7 @@ declare module 'fit-curve'; declare module 'iink-js'; declare module 'pdfjs-dist/web/pdf_viewer'; declare module 'react-jsx-parser'; -declare module 'type_decls.d'; +// declare module 'type_decls.d'; declare module '@react-pdf/renderer' { import * as React from 'react'; -- cgit v1.2.3-70-g09d2 From 64635a0a0e07a107c4019e366feb2fe5b01c8b04 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 17 Sep 2024 13:43:40 -0400 Subject: ready to pull --- package-lock.json | 153 ++++++++++++--------- src/client/documents/Documents.ts | 7 - src/client/views/DocumentButtonBar.tsx | 54 +++++--- src/client/views/DocumentDecorations.tsx | 4 - src/client/views/StyleProvider.tsx | 3 +- .../views/collections/CollectionCardDeckView.scss | 58 -------- .../views/collections/CollectionCardDeckView.tsx | 19 +-- src/client/views/global/globalScripts.ts | 12 +- src/client/views/nodes/IconTagBox.scss | 20 +-- src/client/views/pdf/GPTPopup/GPTPopup.scss | 12 +- 10 files changed, 145 insertions(+), 197 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index fabc6d90a..d20aac0c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,7 +94,7 @@ "D": "^1.0.0", "d3": "^7.8.5", "depcheck": "^1.4.7", - "dotenv": "^16.3.1", + "dotenv": "^16.4.5", "eslint-webpack-plugin": "^4.1.0", "exif": "^0.6.0", "exifr": "^7.1.3", @@ -133,6 +133,7 @@ "image-data-uri": "^2.0.1", "image-size": "^1.0.2", "image-size-stream": "^1.1.0", + "install": "^0.13.0", "is-plain-obj": "^4.1.0", "jimp": "^1.0.4", "jpeg-autorotate": "^9.0.0", @@ -157,7 +158,7 @@ "node-stream-zip": "^1.15.0", "nodemailer": "^6.9.7", "nodemon": "^3.0.2", - "npm": "^10.2.5", + "npm": "^10.8.1", "openai": "^4.26.0", "p-limit": "^6.1.0", "passport": "^0.7.0", @@ -191,6 +192,7 @@ "react-compound-slider": "^3.4.0", "react-datepicker": "^7.3.0", "react-dom": "^18.2.0", + "react-draggable": "^4.4.6", "react-grid-layout": "^1.4.4", "react-icons": "^5.0.1", "react-jsx-parser": "^2.0.0", @@ -249,7 +251,7 @@ "xregexp": "^5.1.1" }, "devDependencies": { - "@eslint/js": "^9.1.1", + "@eslint/js": "^9.10.0", "@types/adm-zip": "^0.5.5", "@types/animejs": "^3.1.12", "@types/archiver": "^6.0.2", @@ -298,9 +300,9 @@ "@types/youtube": "^0.1.0", "chai": "^5.0.0", "cross-env": "^7.0.3", - "eslint": "^9.9.0", - "eslint-plugin-react": "^7.34.1", - "globals": "^15.1.0", + "eslint": "^9.10.0", + "eslint-plugin-react": "^7.36.1", + "globals": "^15.9.0", "jsdom": "^25.0.0", "mocha": "^10.2.0", "prettier": "^3.1.0", @@ -309,7 +311,7 @@ "ts-loader": "^9.5.1", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", - "typescript-eslint": "^8.2.0", + "typescript-eslint": "^8.6.0", "webpack-dev-server": "^5.0.4" }, "engines": { @@ -2698,9 +2700,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", - "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -2713,6 +2715,17 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@ffmpeg/core": { "version": "0.12.6", "resolved": "https://registry.npmjs.org/@ffmpeg/core/-/core-0.12.6.tgz", @@ -10064,16 +10077,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", - "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz", + "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/type-utils": "8.4.0", - "@typescript-eslint/utils": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/type-utils": "8.6.0", + "@typescript-eslint/utils": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -10097,15 +10110,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", - "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz", + "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4" }, "engines": { @@ -10125,13 +10138,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", - "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", + "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0" + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10142,13 +10155,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", - "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz", + "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.4.0", - "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/typescript-estree": "8.6.0", + "@typescript-eslint/utils": "8.6.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -10166,9 +10179,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", - "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", + "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10179,13 +10192,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", - "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", + "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/visitor-keys": "8.4.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -10234,15 +10247,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", - "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", + "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.4.0", - "@typescript-eslint/types": "8.4.0", - "@typescript-eslint/typescript-estree": "8.4.0" + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10256,12 +10269,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", - "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", + "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/types": "8.6.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -17701,15 +17714,16 @@ } }, "node_modules/eslint": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", - "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.1", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -17732,7 +17746,6 @@ "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", @@ -17759,9 +17772,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.35.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", - "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", "dev": true, "dependencies": { "array-includes": "^3.1.8", @@ -20914,6 +20927,14 @@ "inspect-function": "^0.3.1" } }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -32710,14 +32731,14 @@ "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==" }, "node_modules/typescript-eslint": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.4.0.tgz", - "integrity": "sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.6.0.tgz", + "integrity": "sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.4.0", - "@typescript-eslint/parser": "8.4.0", - "@typescript-eslint/utils": "8.4.0" + "@typescript-eslint/eslint-plugin": "8.6.0", + "@typescript-eslint/parser": "8.6.0", + "@typescript-eslint/utils": "8.6.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 623a5251e..aac15059e 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -488,14 +488,7 @@ export class DocumentOptions { userColor?: STRt = new StrInfo('color associated with a Dash user (seen in header fields of shared documents)'); cardSort?: STRt = new StrInfo('way cards are sorted in deck view'); - // cardSortForDropDown?: STRt = new StrInfo('needed for dropdown and i dont know why') - // cardSort_customField?: STRt = new StrInfo('field key used for sorting cards'); - cardSort_activeIcons?: List; //icons each card is tagges with - // cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) - - // cardSort_visibleSortGroups?: List; // which sorting values are being filtered (shown) cardSort_isDesc?: BOOLt = new BoolInfo('whether the cards are sorted ascending or descending'); - // test?: STRt = new StrInfo('testing for filtering') } export const DocOptions = new DocumentOptions(); diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index ea859a1e5..ccde1de80 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -9,7 +9,7 @@ import * as React from 'react'; import { FaEdit } from 'react-icons/fa'; import { returnFalse, returnTrue, setupMoveUpEvents, simulateMouseClick } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; -import { Doc, DocListCast } from '../../fields/Doc'; +import { Doc } from '../../fields/Doc'; import { Cast, DocCast } from '../../fields/Types'; import { DocUtils, IsFollowLinkScript } from '../documents/DocUtils'; import { CalendarManager } from '../util/CalendarManager'; @@ -263,6 +263,26 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( ); } + @computed + get calendarButton() { + const targetDoc = this.view0?.Document; + return !targetDoc ? null : ( + Open calendar menu
}> +
{ + CalendarManager.Instance.open(this.view0, targetDoc); + }}> + +
+ + ); + } + + /** + * Allows for both the keywords and the icon tags to be shown using a quasi- multitoggle + */ @computed get keywordButton() { const targetDoc = this.view0?.Document; @@ -279,21 +299,10 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( size="sm" icon={icon} onClick={e => { - // console.log('wtfff') - // name === 'tags' ?? if (name === 'tags'){ - undoable(e => (targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags)), 'show icon tags') + (targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags)) } else { - undoable(e => { - const showing = DocumentView.Selected().some(dv => dv.layoutDoc._layout_showTags); - DocumentView.Selected().forEach(dv => { - dv.layoutDoc._layout_showTags = !showing; - if (e.shiftKey) - DocListCast(dv.Document[Doc.LayoutFieldKey(dv.Document) + '_annotations']).forEach(doc => { - if (doc.face) doc.hidden = showing; - }); - }); - }, 'show Doc tags') + (targetDoc && (targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels)) } @@ -309,15 +318,23 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( - return !DocumentView.Selected().length ? null : ( + return !targetDoc ? null : (
{metaBtn('tags', 'star')} {metaBtn("keywords", 'id-card')}
- Open keyword / icon tag menu
}> -
+ Open keyword menu
}> +
{ + // targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags; + }} + > + +
@@ -495,10 +512,11 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( {!DocumentView.Selected().some(v => v.allLinks.length) ? null :
{this.followLinkButton}
}
{this.pinButton}
{this.recordButton}
+
{this.calendarButton}
{this.keywordButton}
{!Doc.UserDoc().documentLinksButton_fullMenu ? null :
{this.shareButton}
}
{this.menuButton}
); } -} +} \ No newline at end of file diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 45ce681aa..37b1f04e7 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -773,10 +773,6 @@ export class DocumentDecorations extends ObservableReactComponent CollectionFreeFormDocumentView.from(v)); - const keyWordTrans = doc[DocData].showLabels ? NumCast(doc[DocData].keywordHeight) : 0 - const tagTrans = doc[DocData].showIconTags ? NumCast(doc[DocData].tagHeight) : 0 - - return (
, props: Opt ); }; - const tags = () => props?.DocumentView?.() && CollectionFreeFormDocumentView.from(props.DocumentView()) ? : null; + const tags = () => props?.DocumentView?.() ? : null; const iconTags = () => { if (doc && doc![DocData].showIconTags) {return ()} } - return ( <> {paint()} diff --git a/src/client/views/collections/CollectionCardDeckView.scss b/src/client/views/collections/CollectionCardDeckView.scss index 1728f7aee..5ccc3d9a8 100644 --- a/src/client/views/collections/CollectionCardDeckView.scss +++ b/src/client/views/collections/CollectionCardDeckView.scss @@ -12,7 +12,6 @@ height: 35px; border-radius: 50%; background-color: $dark-gray; - // border-color: $medium-blue; margin: 5px; // transform: translateY(-50px); } } @@ -20,7 +19,6 @@ .card-wrapper { display: grid; grid-template-columns: repeat(10, 1fr); - // width: 100%; transform-origin: top left; position: absolute; @@ -31,33 +29,6 @@ transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955); } -// .card-button-container { -// display: flex; -// padding: 3px; -// // width: 300px; -// // height:100px; -// pointer-events: none; /* This ensures the container does not capture hover events */ - -// background-color: rgb(218, 218, 218); /* Background color of the container */ -// border-radius: 50px; /* Rounds the corners of the container */ -// transform: translateY(25px); -// // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */ -// align-items: center; /* Centers buttons vertically */ -// justify-content: start; /* Centers buttons horizontally */ - -// button { -// pointer-events: auto; /* Re-enable pointer events for the buttons */ - -// width: 70px; -// height: 70px; -// border-radius: 50%; -// background-color: $dark-gray; -// // border-color: $medium-blue; -// margin: 5px; // transform: translateY(-50px); -// background-color: transparent; -// } -// } - .no-card-span{ position: relative; width: fit-content; @@ -70,28 +41,6 @@ -// button:hover { -// transform: translateY(-50px); -// } - -// .card-wrapper::after { -// content: ""; -// width: 100%; /* Forces wrapping */ -// } - -// .card-wrapper > .card-item:nth-child(10n)::after { -// content: ""; -// width: 100%; /* Forces wrapping after every 10th item */ -// } - -// .card-row{ -// display: flex; -// position: absolute; -// align-items: center; -// transition: transform 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955); - -// } - .card-item-inactive, .card-item-active, .card-item { @@ -101,18 +50,11 @@ flex-direction: column; } -// .card-item:hover { -// box-shadow: 0 20px 20px $medium-blue; -// transform: scale(1.05); - - -// } .card-item-inactive { opacity: 0.5; } .card-item-active { - // position: absolute; z-index: 100; } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 3d9f28a49..bb932b8b2 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -1,9 +1,9 @@ import { IReactionDisposer, ObservableMap, action, computed, makeObservable, observable, reaction } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { ClientUtils, DashColor, returnFalse, returnZero } from '../../../ClientUtils'; -import { emptyFunction, numberRange } from '../../../Utils'; -import { Doc, NumListCast, StrListCast } from '../../../fields/Doc'; +import { ClientUtils, returnFalse, returnZero } from '../../../ClientUtils'; +import { emptyFunction } from '../../../Utils'; +import { Doc, StrListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { Id } from '../../../fields/FieldSymbols'; import { BoolCast, Cast, DateCast, NumCast, RTFCast, ScriptCast, StrCast } from '../../../fields/Types'; @@ -144,18 +144,7 @@ export class CollectionCardView extends CollectionSubView() { * custom group */ @computed get childDocsWithoutLinks() { - const regularDocs = this.childDocs.filter(l => l.type !== DocumentType.LINK); - const activeGroups = StrListCast(this.Document.cardSort_visibleSortGroups); - - if (activeGroups.length > 0) { - return regularDocs.filter(doc => { - const activeTags = StrListCast(doc.cardSort_activeIcons); - return activeTags !== undefined && activeTags.some(tag => activeGroups.includes(tag)); - }); - } - - // Default return for non-custom cardSort or other cases, filtering out links - return regularDocs; + return this.childDocs.filter(l => l.type !== DocumentType.LINK); } /** diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 53e10d44d..65bd524fe 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -147,7 +147,7 @@ ScriptingGlobals.add(function showFreeform(attr: 'hcenter' | 'vcenter' | 'grid' } // prettier-ignore - const map: Map<'flashcards' | 'center' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'chat' | 'up' | 'down' | 'pile' | 'toggle-chat' | 'tag', + const map: Map<'flashcards' | 'hcenter' | 'vcenter' | 'grid' | 'snaplines' | 'clusters' | 'arrange' | 'viewAll' | 'fitOnce' | 'time' | 'docType' | 'color' | 'chat' | 'up' | 'down' | 'pile' | 'toggle-chat' | 'tag', { waitForRender?: boolean; checkResult: (doc: Doc) => boolean; @@ -169,9 +169,13 @@ ScriptingGlobals.add(function showFreeform(attr: 'hcenter' | 'vcenter' | 'grid' else (dv.ComponentView as CollectionFreeFormView)?.fitContentOnce(); }, }], - ['center', { - checkResult: (doc: Doc) => BoolCast(doc?._stacking_alignCenter, false), - setDoc: (doc: Doc) => { doc._stacking_alignCenter = !doc._stacking_alignCenter; }, + ['vcenter', { + checkResult: (doc:Doc) => !StrCast(doc?._layout_dontCenter).includes('y'), + setDoc: (doc:Doc) => { doc._layout_dontCenter = StrCast(doc.layout_dontCenter).includes('y') ? StrCast(doc.layout_dontCenter).replace(/y/,"") : StrCast(doc.layout_dontCenter) + 'y'; }, + }], + ['hcenter', { + checkResult: (doc:Doc) => !StrCast(doc?._layout_dontCenter).includes('x'), + setDoc: (doc:Doc) => { doc._layout_dontCenter = StrCast(doc.layout_dontCenter).includes('x') ? StrCast(doc.layout_dontCenter).replace(/x/,"") : 'x'+ StrCast(doc.layout_dontCenter); }, }], ['clusters', { waitForRender: true, // flags that undo batch should terminate after a re-render giving the script the chance to fire diff --git a/src/client/views/nodes/IconTagBox.scss b/src/client/views/nodes/IconTagBox.scss index 8c0f92c90..211a961c1 100644 --- a/src/client/views/nodes/IconTagBox.scss +++ b/src/client/views/nodes/IconTagBox.scss @@ -4,27 +4,21 @@ display: flex; padding: 3px; position: absolute; - // width: 300px; - // height:100px; - pointer-events: none; /* This ensures the container does not capture hover events */ - - background-color: rgb(218, 218, 218); /* Background color of the container */ - border-radius: 50px; /* Rounds the corners of the container */ + pointer-events: none; + background-color: rgb(218, 218, 218); + border-radius: 50px; transform: translateY(25px); - // box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Optional: Adds shadow for depth */ - align-items: center; /* Centers buttons vertically */ - justify-content: start; /* Centers buttons horizontally */ + align-items: center; + justify-content: start; button { - pointer-events: auto; /* Re-enable pointer events for the buttons */ + pointer-events: auto; transform: translateY(-7.5px); - width: 30px; height: 30px; border-radius: 50%; background-color: $dark-gray; - // border-color: $medium-blue; - margin: 5px; // transform: translateY(-50px); + margin: 5px; background-color: transparent; } } \ No newline at end of file diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.scss b/src/client/views/pdf/GPTPopup/GPTPopup.scss index 1defd1a7f..0247dc10c 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.scss +++ b/src/client/views/pdf/GPTPopup/GPTPopup.scss @@ -104,9 +104,9 @@ $highlightedText: #82e0ff; display: flex; flex-direction: column; width: 100%; - max-height: calc(100vh - 80px); /* Height minus the input box and some padding */ + max-height: calc(100vh - 80px); overflow-y: auto; - padding-bottom: 60px; /* Space for the input */ + padding-bottom: 60px; } .chat-bubbles { @@ -150,15 +150,7 @@ $highlightedText: #82e0ff; } - // button { - // font-size: 9px; - // padding: 10px; - // color: #ffffff; - // width: 100%; - // background-color: $button; - // border-radius: 5px; - // } .text-btn { &:hover { -- cgit v1.2.3-70-g09d2 From 5c4bcbd6a2ce70f6513c5dff872522dde3fcbcc3 Mon Sep 17 00:00:00 2001 From: aidahosa1 Date: Tue, 17 Sep 2024 13:48:13 -0400 Subject: ready to pull REAL --- src/client/views/FilterPanel.scss | 35 ++--------------------------------- src/client/views/InkingStroke.tsx | 7 ------- 2 files changed, 2 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/client/views/FilterPanel.scss b/src/client/views/FilterPanel.scss index fbdebde0d..508b1ee1f 100644 --- a/src/client/views/FilterPanel.scss +++ b/src/client/views/FilterPanel.scss @@ -231,10 +231,8 @@ .filterHotKey-button { pointer-events: auto; - // padding-right: 8px; //5px; width: 100%; //width: 25px; border-radius: 5px; - // margin-right: 20px; margin-top: 8px; border-color: #d3d3d3; border-style: solid; @@ -242,7 +240,7 @@ transition: all 0.3s ease-out; display: flex; flex-direction: row; - padding: 5px; /* Adjust the padding value as needed */ + padding: 5px; &:hover{ @@ -250,18 +248,6 @@ background-color: #6d6c6c } - - - // &.active { - // background-color: #6d6c6c; - - - - // .icon-panel{ - // display: flex - // } - // } - .hotKey-icon, .hotKey-close{ background-color: transparent; border-radius: 10%; @@ -300,36 +286,19 @@ .hotKeyButtons { position: relative; width: 100%; - // margin-top: 3px; - // // grid-column: 1/4; - // width: 100%; - // height: auto; - // display: flex; - // // flex-direction: row; - // // flex-wrap: wrap; - // padding-bottom: 5.5px; + } .hotKey-icon-button { - // pointer-events: auto; /* Re-enable pointer events for the buttons */ - // width: 30px; - // height: 30px; - // border-color: $medium-blue; background-color: transparent; - &.active{ - - } } .icon-panel { - // bottom: -14px; position: absolute; z-index: 10000; - // background-color: #616060; - // background-color: #323232; border-color: black; border-style: solid; border-width: medium; diff --git a/src/client/views/InkingStroke.tsx b/src/client/views/InkingStroke.tsx index 067b11310..2e82371cb 100644 --- a/src/client/views/InkingStroke.tsx +++ b/src/client/views/InkingStroke.tsx @@ -450,13 +450,6 @@ export class InkingStroke extends ViewBoxAnnotatableComponent() }), icon: 'paint-brush', }); - // cm?.addItem({ - // description: 'Create a hotkey', - // event: action(() => { - // InkStrokeProperties.Instance._controlButton = !InkStrokeProperties.Instance._controlButton; - // }), - // icon: 'satellite', - // }); }, }; return ( -- cgit v1.2.3-70-g09d2 From ac751aa6915ac92c953d0ba645719e1d677fe725 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 17 Sep 2024 18:45:51 -0400 Subject: revert change to typescriptlib --- src/client/util/Scripting.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts index cb314e3f1..c63d3d7cb 100644 --- a/src/client/util/Scripting.ts +++ b/src/client/util/Scripting.ts @@ -1,7 +1,7 @@ // export const ts = (window as any).ts; // import * as typescriptlib from '!!raw-loader!../../../node_modules/typescript/lib/lib.d.ts' // import * as typescriptes5 from '!!raw-loader!../../../node_modules/typescript/lib/lib.es5.d.ts' -// import typescriptlib from 'type_decls.d'; +import typescriptlib from 'type_decls.d'; import * as ts from 'typescript'; import { Doc, FieldType } from '../../fields/Doc'; import { RefField } from '../../fields/RefField'; @@ -248,7 +248,7 @@ export function CompileScript(script: string, options: ScriptOptions = {}): Comp const funcScript = `(function(${paramString})${reqTypes} { ${body} })`; host.writeFile('file.ts', funcScript); - // if (typecheck) host.writeFile('node_modules/typescript/lib/lib.d.ts', typescriptlib); + if (typecheck) host.writeFile('node_modules/typescript/lib/lib.d.ts', typescriptlib); const program = ts.createProgram(['file.ts'], {}, host); const testResult = program.emit(); const outputText = host.readFile('file.js'); -- cgit v1.2.3-70-g09d2 From eca725c77fad2a3b4335b50e21fee46201951a0f Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 17 Sep 2024 18:46:35 -0400 Subject: from last --- src/typings/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/typings/index.d.ts b/src/typings/index.d.ts index fea88cdcb..bee79a38d 100644 --- a/src/typings/index.d.ts +++ b/src/typings/index.d.ts @@ -12,7 +12,7 @@ declare module 'fit-curve'; declare module 'iink-js'; declare module 'pdfjs-dist/web/pdf_viewer'; declare module 'react-jsx-parser'; -// declare module 'type_decls.d'; +declare module 'type_decls.d'; declare module '@react-pdf/renderer' { import * as React from 'react'; -- cgit v1.2.3-70-g09d2 From 893a7cb517490ad5fc1f4737ff610779a57fdee7 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 17 Sep 2024 20:43:16 -0400 Subject: cleaning up card view stuff post-merge --- eslint.config.mjs | 66 ++++++++++-- src/ClientUtils.ts | 34 ------ src/client/views/MainView.tsx | 4 +- .../views/collections/CollectionCardDeckView.tsx | 78 ++++++-------- src/client/views/global/globalScripts.ts | 28 +++-- src/client/views/nodes/FontIconBox/FontIconBox.tsx | 2 +- src/client/views/nodes/IconTagBox.tsx | 120 +++++++++------------ 7 files changed, 153 insertions(+), 179 deletions(-) (limited to 'src') diff --git a/eslint.config.mjs b/eslint.config.mjs index c69209327..619966f20 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,13 +1,57 @@ -import globals from "globals"; -import pluginJs from "@eslint/js"; -import tseslint from "typescript-eslint"; -import pluginReact from "eslint-plugin-react"; - +import pluginJs from '@eslint/js'; +import pluginReactConfig from 'eslint-plugin-react/configs/recommended.js'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; export default [ - {files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"]}, - {languageOptions: { globals: globals.browser }}, - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - pluginReact.configs.flat.recommended, -]; \ No newline at end of file + { + languageOptions: { globals: { ...globals.browser, ...globals.node } }, + }, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + { + rules: { + 'node/no-missing-import': 0, + 'no-console': 'off', + 'func-names': 'off', + 'no-process-exit': 'off', + 'object-shorthand': 'off', + 'class-methods-use-this': 'off', + 'single-quote': 'off', + 'max-classes-per-file': 0, + + 'react/jsx-filename-extension': [ + 2, + { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + ], + + 'import/prefer-default-export': 'off', + 'no-unused-expressions': 'off', + '@typescript-eslint/no-unused-expressions': 'off', + 'prefer-template': 'off', + 'no-inner-declarations': 'off', + 'no-plusplus': 'off', + 'no-multi-assign': 'off', + 'no-underscore-dangle': 'off', + 'no-nested-ternary': 'off', + 'lines-between-class-members': 'off', + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': 'warn', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-namespace': 'off', + 'react/destructuring-assignment': 0, + 'prefer-arrow-callback': 'error', + 'no-return-assign': 'error', + 'no-await-in-loop': 'error', + 'no-loop-func': 'error', + 'no-cond-assign': 'error', + 'no-use-before-define': 'error', + 'no-explicit-any': 'error', + 'no-restricted-globals': ['error', 'event'], + }, + }, + pluginReactConfig, +]; diff --git a/src/ClientUtils.ts b/src/ClientUtils.ts index 58648c5b6..01eda7e98 100644 --- a/src/ClientUtils.ts +++ b/src/ClientUtils.ts @@ -234,40 +234,6 @@ export namespace ClientUtils { return 'rgba(' + col.r + ',' + col.g + ',' + col.b + (col.a !== undefined ? ',' + col.a : '') + ')'; } - export function hexToHsv(hex: string): [number, number, number] { - if (!hex) return [0, 0, 0]; // Default to black if hex is not defined - const r = parseInt(hex.slice(1, 3), 16) / 255; - const g = parseInt(hex.slice(3, 5), 16) / 255; - const b = parseInt(hex.slice(5, 7), 16) / 255; - const max = Math.max(r, g, b), - min = Math.min(r, g, b); - const d = max - min; - let h: number; - const s = max === 0 ? 0 : d / max; - const v = max; - - switch (max) { - case min: - h = 0; - break; - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - default: - h = 0; - break; - } - h /= 6; - return [h, s, v]; - }; - - export function HSLtoRGB(h: number, s: number, l: number) { // Must be fractions of 1 // s /= 100; diff --git a/src/client/views/MainView.tsx b/src/client/views/MainView.tsx index 74a788d94..8b8f85dfb 100644 --- a/src/client/views/MainView.tsx +++ b/src/client/views/MainView.tsx @@ -87,7 +87,7 @@ export class MainView extends ObservableReactComponent { @observable private _windowWidth: number = 0; @observable private _windowHeight: number = 0; - @observable _dashUIWidth: number = 0; // width of entire main dashboard region including left menu buttons and properties panel (but not including the dashboard selector button row) + @observable private _dashUIWidth: number = 0; // width of entire main dashboard region including left menu buttons and properties panel (but not including the dashboard selector button row) @observable private _dashUIHeight: number = 0; // height of entire main dashboard region including top menu buttons @observable private _panelContent: string = 'none'; @observable private _sidebarContent: Doc = Doc.MyLeftSidebarPanel; @@ -549,7 +549,7 @@ export class MainView extends ObservableReactComponent { fa.faCloud, fa.faBolt, fa.faLightbulb, - fa.faX + fa.faX, ] ); } diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index bb932b8b2..c029d17c6 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -1,7 +1,7 @@ -import { IReactionDisposer, ObservableMap, action, computed, makeObservable, observable, reaction } from 'mobx'; +import { IReactionDisposer, ObservableMap, action, computed, makeObservable, observable, reaction, trace } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { ClientUtils, returnFalse, returnZero } from '../../../ClientUtils'; +import { ClientUtils, DashColor, returnFalse, returnZero } from '../../../ClientUtils'; import { emptyFunction } from '../../../Utils'; import { Doc, StrListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; @@ -18,13 +18,11 @@ import { StyleProp } from '../StyleProp'; import { DocumentView } from '../nodes/DocumentView'; import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; import './CollectionCardDeckView.scss'; -import { CollectionSubView } from './CollectionSubView'; +import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; import { dropActionType } from '../../util/DropActionTypes'; import { DocCast } from '../../../fields/Types'; import { SelectionManager } from '../../util/SelectionManager'; - - enum cardSortings { Time = 'time', Type = 'type', @@ -36,9 +34,9 @@ enum cardSortings { } /** - * New view type specifically for studying more dynamically. Allows you to reorder docs however you see fit, easily + * New view type specifically for studying more dynamically. Allows you to reorder docs however you see fit, easily * sort and filter using presets, and customize your experience with chat gpt. - * + * * This file contains code as to how the docs are to be rendered (there place geographically and also in regards to sorting), * and callback functions for the gpt popup */ @@ -57,7 +55,6 @@ export class CollectionCardView extends CollectionSubView() { @observable _isACardBeingDragged: boolean = false; @observable overIndex: number = -1; - static imageUrlToBase64 = async (imageUrl: string): Promise => { try { const response = await fetch(imageUrl); @@ -75,7 +72,7 @@ export class CollectionCardView extends CollectionSubView() { } }; - constructor(props: any) { + constructor(props: SubCollectionViewProps) { super(props); makeObservable(this); this.setRegenerateCallback(); @@ -84,9 +81,7 @@ export class CollectionCardView extends CollectionSubView() { /** * Callback to ensure gpt's text versions of the child docs are updated */ - setRegenerateCallback = () => { - GPTPopup.Instance.setRegenerateCallback(this.childPairStringListAndUpdateSortDesc); - } + setRegenerateCallback = () => GPTPopup.Instance.setRegenerateCallback(this.childPairStringListAndUpdateSortDesc); /** * update's gpt's doc-text list and initializes callbacks @@ -99,7 +94,7 @@ export class CollectionCardView extends CollectionSubView() { GPTPopup.Instance.onQuizRandom = () => this.quizMode(); }; - componentDidMount(): void { + componentDidMount() { this.Document.childFilters_boolean = 'OR'; this.childDocsWithoutLinks.forEach(c => { c[DocData].showIconTags = true; @@ -112,7 +107,7 @@ export class CollectionCardView extends CollectionSubView() { if (isVis) { this.openChatPopup(); } else { - this.Document.cardSort = (this.cardSort === cardSortings.Chat) ? '' : this.Document.cardSort; + this.Document.cardSort = this.cardSort === cardSortings.Chat ? '' : this.Document.cardSort; } } ); @@ -148,13 +143,13 @@ export class CollectionCardView extends CollectionSubView() { } /** - * When in quiz mode, randomly selects a document + * When in quiz mode, randomly selects a document */ quizMode = () => { const randomIndex = Math.floor(Math.random() * this.childDocs.length); SelectionManager.DeselectAll(); DocumentView.SelectView(DocumentView.getDocumentView(this.childDocs[randomIndex]), false); - } + }; /** * Number of rows of cards to be rendered @@ -163,7 +158,6 @@ export class CollectionCardView extends CollectionSubView() { return Math.ceil(this.sortedDocs.length / 10); } - @action setHoveredNodeIndex = (index: number) => { if (!DocumentView.SelectedDocs().includes(this.childDocs[index])) { @@ -289,7 +283,7 @@ export class CollectionCardView extends CollectionSubView() { /** * Resets all the doc dragging vairables once a card is dropped - * @param e + * @param e * @param de drop event * @returns true if a card has been dropped, falls if not */ @@ -301,13 +295,12 @@ export class CollectionCardView extends CollectionSubView() { return true; } return false; - }, '' ); + }, ''); - get sortedDocs() { + @computed get sortedDocs() { return this.sort(this.childDocsWithoutLinks, this.cardSort, BoolCast(this.Document.cardSort_isDesc), this._docDraggedIndex); } - /** * Used to determine how to sort cards based on tags. The lestmost tags are given lower values while cards to the right are * given higher values. Decimals are used to determine placement for cards with multiple tags @@ -345,7 +338,7 @@ export class CollectionCardView extends CollectionSubView() { // Convert the result to a number and return return Number(numberString); - } + }; /** * Called in the sortedDocsType method. Compares the cards' value in regards to the desired sort type-- earlier cards are move to the @@ -355,31 +348,27 @@ export class CollectionCardView extends CollectionSubView() { * @param isDesc * @returns */ - @action sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { + sort = (docs: Doc[], sortType: cardSortings, isDesc: boolean, dragIndex: number) => { docs.sort((docA, docB) => { const [typeA, typeB] = (() => { switch (sortType) { case cardSortings.Time: return [DateCast(docA.author_date)?.date ?? Date.now(), DateCast(docB.author_date)?.date ?? Date.now()]; case cardSortings.Color: - return [ClientUtils.hexToHsv(StrCast(docA.backgroundColor)), ClientUtils.hexToHsv(StrCast(docB.backgroundColor))]; + const d1 = DashColor(StrCast(docA.backgroundColor)); + const d2 = DashColor(StrCast(docB.backgroundColor)); + return [d1.hsv().hue(), d2.hsv().hue()]; case cardSortings.Tag: return [this.tagValue(docA) ?? 9999, this.tagValue(docB) ?? 9999]; case cardSortings.Chat: return [NumCast(docA.chatIndex) ?? 9999, NumCast(docB.chatIndex) ?? 9999]; - default: return [StrCast(docA.type), StrCast(docB.type)]; } })(); const out = typeA < typeB ? -1 : typeA > typeB ? 1 : 0; - - if (isDesc) { - return out; - } - - return -out; + return isDesc ? out : -out; }); if (dragIndex != -1) { const draggedDoc = DragManager.docsBeingDragged[0]; @@ -389,12 +378,11 @@ export class CollectionCardView extends CollectionSubView() { docs.splice(dragIndex, 0, draggedDoc); } - return docs; + return [...docs]; // need to spread docs into a new object list since sort() modifies the incoming list which confuses mobx caching }; displayDoc = (doc: Doc, screenToLocalTransform: () => Transform) => ( r?.ContentDiv && this._docRefs.set(doc, r))} Document={doc} @@ -514,12 +502,11 @@ export class CollectionCardView extends CollectionSubView() { }; /** - * Processes gpt's output depending on the type of question the user asked. Converts gpt's string output to + * Processes gpt's output depending on the type of question the user asked. Converts gpt's string output to * usable code * @param gptOutput */ - @action - + @action processGptOutput = undoable((gptOutput: string, questionType: string, tag?: string) => { // Split the string into individual list items const listItems = gptOutput.split('======').filter(item => item.trim() !== ''); @@ -530,11 +517,10 @@ export class CollectionCardView extends CollectionSubView() { }); } - if (questionType ==='6'){ - this.Document.cardSort = 'chat' + if (questionType === '6') { + this.Document.cardSort = 'chat'; } - listItems.forEach((item, index) => { const normalizedItem = item.trim(); // find the corresponding Doc in the textToDoc map @@ -578,7 +564,6 @@ export class CollectionCardView extends CollectionSubView() { }); }, ''); - /** * Opens up the chat popup and starts the process for smart sorting. */ @@ -586,13 +571,13 @@ export class CollectionCardView extends CollectionSubView() { GPTPopup.Instance.setVisible(true); GPTPopup.Instance.setMode(GPTPopupMode.CARD); GPTPopup.Instance.setCardsDoneLoading(true); // Set dataDoneLoading to true after data is loaded - await this.childPairStringListAndUpdateSortDesc() + await this.childPairStringListAndUpdateSortDesc(); }; /** * Actually renders all the cards */ - renderCards = () => { + renderCards = (sortedDocs: Doc[]) => { const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); const isEmpty = this.childDocsWithoutLinks.length === 0; const isDesc = BoolCast(this.Document.cardSort_isDesc); @@ -606,12 +591,11 @@ export class CollectionCardView extends CollectionSubView() { } // Map sorted documents to their rendered components - return this.sortedDocs.map((doc, index) => { - const realIndex = this.sortedDocs.indexOf(doc); + return sortedDocs.map((doc, index) => { + const realIndex = sortedDocs.indexOf(doc); const calcRowIndex = this.overflowIndexCalc(realIndex); const amCards = this.overflowAmCardsCalc(realIndex); const isSelected = DocumentView.SelectedDocs().includes(doc); - const isDragging = DragManager.docsBeingDragged.includes(doc); const childScreenToLocal = () => { this._forceChildXf; @@ -625,7 +609,7 @@ export class CollectionCardView extends CollectionSubView() { const translateIfSelected = () => { const indexInRow = index % this._maxRowCount; const rowIndex = Math.trunc(index / this._maxRowCount); - const rowCenterIndex = Math.min(this._maxRowCount, this.sortedDocs.length - rowIndex * this._maxRowCount) / 2; + const rowCenterIndex = Math.min(this._maxRowCount, sortedDocs.length - rowIndex * this._maxRowCount) / 2; return (rowCenterIndex - indexInRow) * 100 - 50; }; return ( @@ -680,7 +664,7 @@ export class CollectionCardView extends CollectionSubView() { gridAutoRows: `${100 / this.numRows}%`, }} onMouseLeave={() => this.setHoveredNodeIndex(-1)}> - {this.renderCards()} + {this.renderCards(this.sortedDocs)} ); diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 65bd524fe..99bd537b1 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -283,23 +283,21 @@ ScriptingGlobals.add(function handleTags(value?: any, checkResult?: boolean) { return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); } - if (checkResult) { - return value=== 'opts' ? PropertiesView.Instance?.openFilters : isAttrFiltered(value) - } + if (checkResult) { + return value === 'opts' ? PropertiesView.Instance?.openFilters : isAttrFiltered(value); + } - if (value != 'opts'){ - isAttrFiltered(value) ? Doc.setDocFilter(selected, value, true, 'remove') : Doc.setDocFilter(selected, value, true, 'match'); - } - else { - SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); - SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? Math.min(MainView.Instance._dashUIWidth - 50, 250) : 0); - PropertiesView.Instance?.CloseAll() - PropertiesView.Instance.openFilters = true - } + if (value != 'opts') { + isAttrFiltered(value) ? Doc.setDocFilter(selected, value, true, 'remove') : Doc.setDocFilter(selected, value, true, 'match'); + } else { + SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); + SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? 250 : 0); + PropertiesView.Instance?.CloseAll(); + PropertiesView.Instance.openFilters = true; + } - - return undefined; - }, ''); + return undefined; +}, ''); // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function setFontAttr(attr: 'font' | 'fontColor' | 'highlight' | 'fontSize' | 'alignment', value: string | number, checkResult?: boolean) { diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.tsx b/src/client/views/nodes/FontIconBox/FontIconBox.tsx index 0fe112634..7feb17df1 100644 --- a/src/client/views/nodes/FontIconBox/FontIconBox.tsx +++ b/src/client/views/nodes/FontIconBox/FontIconBox.tsx @@ -157,7 +157,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { let noviceList: string[] = []; let text: string | undefined; - let getStyle: (val: string) => { [key: string]: string } = () => ({}); + const getStyle: (val: string) => { [key: string]: string } = () => ({}); let icon: IconProp = 'caret-down'; const isViewDropdown = script?.script.originalScript.startsWith('{ return setView'); if (isViewDropdown) { diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index 370ce51d1..e6c0961ed 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -1,31 +1,30 @@ -import React from "react"; -import { observer } from "mobx-react"; -import { computed } from "mobx"; -import { ObservableReactComponent } from "../ObservableReactComponent"; -import { NumCast } from "../../../fields/Types"; -import { Doc } from "../../../fields/Doc"; -import { numberRange } from "../../../Utils"; -import { Tooltip } from "@mui/material"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { undoable } from "../../util/UndoManager"; -import { BoolCast } from "../../../fields/Types"; -import { DocCast } from "../../../fields/Types"; +import React from 'react'; +import { observer } from 'mobx-react'; +import { computed } from 'mobx'; +import { ObservableReactComponent } from '../ObservableReactComponent'; +import { NumCast } from '../../../fields/Types'; +import { Doc } from '../../../fields/Doc'; +import { numberRange } from '../../../Utils'; +import { Tooltip } from '@mui/material'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { undoable } from '../../util/UndoManager'; +import { BoolCast } from '../../../fields/Types'; +import { DocCast } from '../../../fields/Types'; import './IconTagBox.scss'; -import {DocData } from '../../../fields/DocSymbols'; -import { StrListCast } from "../../../fields/Doc"; -import { StrCast } from "../../../fields/Types"; -import { CollectionViewType } from "../../documents/DocumentTypes"; -import { SnappingManager } from "../../util/SnappingManager"; -import { MainView } from "../MainView"; -import { PropertiesView } from "../PropertiesView"; - +import { DocData } from '../../../fields/DocSymbols'; +import { StrListCast } from '../../../fields/Doc'; +import { StrCast } from '../../../fields/Types'; +import { CollectionViewType } from '../../documents/DocumentTypes'; +import { SnappingManager } from '../../util/SnappingManager'; +import { MainView } from '../MainView'; +import { PropertiesView } from '../PropertiesView'; export interface IconTagProps { doc: Doc; } /** - * Renders the icon tags that rest under the document. The icons rendered are determined by the values of + * Renders the icon tags that rest under the document. The icons rendered are determined by the values of * each icon in the userdoc. */ @observer @@ -33,7 +32,6 @@ export class IconTagBox extends ObservableReactComponent { @computed get currentScale() { return NumCast((this._props.doc.embedContainer as Doc)?._freeform_scale, 1); - } constructor(props: any) { @@ -41,10 +39,9 @@ export class IconTagBox extends ObservableReactComponent { } componentDidUpdate(prevProps: Readonly): void { - this._props.doc[DocData].tagHeight = 36*this.currentScale; + this._props.doc[DocData].tagHeight = 36 * this.currentScale; } - /** * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups * @param doc @@ -52,36 +49,32 @@ export class IconTagBox extends ObservableReactComponent { * @returns */ renderButtons = (doc: Doc): JSX.Element | null => { - const amButtons = (StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length) + 1 + const amButtons = StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length + 1; - const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) - - const totalWidth = (amButtons -1) * 35 + (amButtons -1) * 2 * 5 + 6; + const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - const iconMap = (buttonID: number) => { - return StrCast(Doc.UserDoc()[keys[buttonID]]) + const totalWidth = (amButtons - 1) * 35 + (amButtons - 1) * 2 * 5 + 6; + const iconMap = (buttonID: number) => { + return StrCast(Doc.UserDoc()[keys[buttonID]]); }; - const isCard = DocCast(this._props.doc.embedContainer).type_collection === CollectionViewType.Card - - + const isCard = DocCast(this._props.doc.embedContainer).type_collection === CollectionViewType.Card; return (
- {numberRange(amButtons-1).map(i => ( + width: `${totalWidth}px`, + fontSize: '50px', + }}> + {numberRange(amButtons - 1).map(i => ( Click to add/remove this card from the {iconMap(i)} group
}> - @@ -96,47 +89,36 @@ export class IconTagBox extends ObservableReactComponent { openHotKeyMenu = () => { SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); - SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? Math.min(MainView.Instance._dashUIWidth - 50, 250) : 0); + SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? 250 : 0); - PropertiesView.Instance.CloseAll() - PropertiesView.Instance.openFilters = true - } + PropertiesView.Instance.CloseAll(); + PropertiesView.Instance.openFilters = true; + }; - /** + /** * Toggles the buttons between on and off when creating custom sort groupings/changing those created by gpt * @param childPairIndex * @param buttonID * @param doc */ - toggleButton = undoable((doc: Doc, icon: string) => { - BoolCast(doc[icon]) ? doc[icon] = false : doc[icon] = true - + toggleButton = undoable((doc: Doc, icon: string) => { + BoolCast(doc[icon]) ? (doc[icon] = false) : (doc[icon] = true); }, 'toggle card tag'); - /** * Determines whether or not the given icon is active depending on the doc's data - * @param doc - * @param icon - * @returns + * @param doc + * @param icon + * @returns */ getButtonIcon = (doc: Doc, icon: any): JSX.Element => { - const isActive = doc[icon] + const isActive = doc[icon]; const color = isActive ? '#4476f7' : '#323232'; - return ; + return ; }; - render (){ - return ( - <> - {this.renderButtons(this._props.doc)} - - - ) - + render() { + return <>{this.renderButtons(this._props.doc)}; } - } - - -- cgit v1.2.3-70-g09d2 From bde7bd192b1a81e3fd1c4ead13e821b95b42f3cf Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 17 Sep 2024 21:02:35 -0400 Subject: updating packages and more cleanup of cardview merge --- package-lock.json | 1098 ++++++++++---------- package.json | 6 +- src/client/views/DocumentDecorations.tsx | 3 - src/client/views/StyleProvider.tsx | 7 +- .../views/collections/CollectionCardDeckView.tsx | 7 +- src/client/views/nodes/FontIconBox/FontIconBox.tsx | 4 +- src/client/views/pdf/AnchorMenu.tsx | 2 +- 7 files changed, 585 insertions(+), 542 deletions(-) (limited to 'src') diff --git a/package-lock.json b/package-lock.json index d20aac0c5..78a1281d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "@types/reveal": "^4.2.0", "@types/supercluster": "^7.1.3", "@types/textfit": "^2.4.4", - "@types/web": "^0.0.159", + "@types/web": "^0.0.163", "@types/webpack-hot-middleware": "^2.25.9", "@webscopeio/react-textarea-autocomplete": "^4.9.2", "adm-zip": "^0.5.10", @@ -109,7 +109,7 @@ "file-saver": "^2.0.5", "find-in-files": "^0.5.0", "fit-curve": "^0.2.0", - "flexlayout-react": "^0.7.15", + "flexlayout-react": "^0.8.0", "fluent-ffmpeg": "^2.1.2", "forever-agent": "^0.6.1", "fork-ts-checker-webpack-plugin": "^9.0.2", @@ -119,7 +119,7 @@ "function-plot": "^1.23.3", "golden-layout": "^2.6.0", "google-auth-library": "^9.4.1", - "googleapis": "^142.0.0", + "googleapis": "^144.0.0", "googlephotos": "^0.3.5", "got": "^14.0.0", "howler": "^2.2.4", @@ -451,9 +451,9 @@ } }, "node_modules/@azure/core-auth": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", - "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.8.0.tgz", + "integrity": "sha512-YvFMowkXzLbXNM11yZtVLhUCmuG0ex7JKOH366ipjmHBhL3vpDcPAeWF+jf0X+jVXwFqo3UhsWUq4kH0ZPdu/g==", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.1.0", @@ -563,12 +563,12 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", - "integrity": "sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.17.0.tgz", + "integrity": "sha512-62Vv8nC+uPId3j86XJ0WI+sBf0jlqTqPUFCBNrGtlaUeQUIXWV/D8GE5A1d+Qx8H7OQojn2WguC8kChD6v0shA==", "dependencies": { "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", + "@azure/core-auth": "^1.8.0", "@azure/core-tracing": "^1.0.1", "@azure/core-util": "^1.9.0", "@azure/logger": "^1.0.0", @@ -603,9 +603,9 @@ } }, "node_modules/@azure/core-util": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.2.tgz", - "integrity": "sha512-l1Qrqhi4x1aekkV+OlcqsJa4AnAkj5p0JV8omgwjaV9OAbP41lvrMvs+CptfetKkeEaGRGSzby7sjPZEX7+kkQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.10.0.tgz", + "integrity": "sha512-dqLWQsh9Nro1YQU+405POVtXnwrIVqPyfUzc4zXCbThTg7+vNNaiMkwbX9AMXKyoFYFClxmB3s25ZFr3+jZkww==", "dependencies": { "@azure/abort-controller": "^2.0.0", "tslib": "^2.6.2" @@ -2590,9 +2590,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -2754,29 +2754,29 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", - "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", "dependencies": { - "@floating-ui/utils": "^0.2.7" + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", - "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", + "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.7" + "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/react": { - "version": "0.26.23", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.23.tgz", - "integrity": "sha512-9u3i62fV0CFF3nIegiWiRDwOs7OW/KhSUJDNx2MkQM3LbE5zQOY01sL3nelcVBXvX7Ovvo3A49I8ql+20Wg/Hw==", + "version": "0.26.24", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.24.tgz", + "integrity": "sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==", "dependencies": { - "@floating-ui/react-dom": "^2.1.1", - "@floating-ui/utils": "^0.2.7", + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", "tabbable": "^6.0.0" }, "peerDependencies": { @@ -2785,9 +2785,9 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", - "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", "dependencies": { "@floating-ui/dom": "^1.0.0" }, @@ -2797,9 +2797,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", - "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, "node_modules/@formatjs/ecma402-abstract": { "version": "2.0.0", @@ -3010,9 +3010,9 @@ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" }, "node_modules/@iconify/utils": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.32.tgz", - "integrity": "sha512-LeifFZPPKu28O3AEDpYJNdEbvS4/ojAPyIW+pF/vUpJTYnbTiXUHkCh0bwgFRzKvdpb8H4Fbfd/742++MF4fPQ==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.33.tgz", + "integrity": "sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==", "dependencies": { "@antfu/install-pkg": "^0.4.0", "@antfu/utils": "^0.7.10", @@ -3081,9 +3081,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "engines": { "node": ">=12" }, @@ -3197,13 +3197,13 @@ } }, "node_modules/@jimp/core": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.3.0.tgz", - "integrity": "sha512-3+ndSrQYQxyyKyUSdXyk29vHt9vc3zg+3aFrVX2RHzAMeLdjkQHqzQc/7v6VxRk6BtOh1v/VPtmsXHXVg1vVhA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", + "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", "dependencies": { - "@jimp/file-ops": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/file-ops": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "await-to-js": "^3.0.0", "exif-parser": "^0.1.12", "file-type": "^16.0.0", @@ -3214,13 +3214,13 @@ } }, "node_modules/@jimp/diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.3.0.tgz", - "integrity": "sha512-eGFfZi8UjSZ6gGu9kpQmGPRRDt5fMV3V1qKRn0cTqtBsECAnKPG5PPT1dvnjDDBbtAOH81jhIr//ko8H5WV8jg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", + "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", "dependencies": { - "@jimp/plugin-resize": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "pixelmatch": "^5.3.0" }, "engines": { @@ -3228,21 +3228,21 @@ } }, "node_modules/@jimp/file-ops": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.3.0.tgz", - "integrity": "sha512-DzbSLgUdOGT9T9qf+Ik/hBA8e4zA9tWyHnJJA/N9sJHwHNDCMtoaX3KY5ssHuRGmcngGKLwbeGjddnZXF4oIVA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", + "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==", "engines": { "node": ">=18" } }, "node_modules/@jimp/js-bmp": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.3.0.tgz", - "integrity": "sha512-sc3jvJJOMHoUtP9mlnuBCkwhHy9T2KiSfdV3XKg81v+bg9O0LudB33v3Y0dtGxSo/WOL2V6PVNIWTRf7gu+hJw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", + "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "bmp-ts": "^1.0.9" }, "engines": { @@ -3250,12 +3250,12 @@ } }, "node_modules/@jimp/js-gif": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.3.0.tgz", - "integrity": "sha512-hhAd/TpZSp6AIuRjYKFGGEsu9HzQG16Q9lZHPcTZz1TlxtTUqW60AJvFrGvnUZbTecDj3JnI3TipX8aeqZpBDg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", + "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", "gifwrap": "^0.10.1", "omggif": "^1.0.10" }, @@ -3264,12 +3264,12 @@ } }, "node_modules/@jimp/js-jpeg": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.3.0.tgz", - "integrity": "sha512-SrZL35FvKsgySS5kpqYWbVsi0rswcgxw3oRTVOy55q8F045fE4U0YqlnRdkg77dxdahUOIWVhvn5+0V+Re5F5A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", + "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", "jpeg-js": "^0.4.4" }, "engines": { @@ -3277,12 +3277,12 @@ } }, "node_modules/@jimp/js-png": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.3.0.tgz", - "integrity": "sha512-9x8uFueVupNocQQ5WEFat61M31MdRDV7O3QBDR2iEsbVeQ1+LE9Tvvm9r1PG9W91KZYzG4IYPPsogQ0TFEixqA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", + "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", "pngjs": "^7.0.0" }, "engines": { @@ -3290,12 +3290,12 @@ } }, "node_modules/@jimp/js-tiff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.3.0.tgz", - "integrity": "sha512-uin5WkVm0M8ZgotIANXU0sfVkNApsKws1ZSqsc9NZf0MYJsZkz/w8D4ld6hXkFCEQcJ/TMu7aeMZSP+I8cbmOg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", + "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", "utif2": "^4.1.0" }, "engines": { @@ -3303,12 +3303,12 @@ } }, "node_modules/@jimp/plugin-blit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.3.0.tgz", - "integrity": "sha512-5OjEUM0jtzQ6KJBTougs8ozbUAxYyJiKZqceFb8mqKVMjuiM94N9425mIDDgOl5MDFwAESeTMIchKCAPMOv2FQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", + "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", "dependencies": { - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3316,23 +3316,23 @@ } }, "node_modules/@jimp/plugin-blur": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.3.0.tgz", - "integrity": "sha512-108RHeCvHFJqpQvuaydhxwJLBwdjEWKLW6ZXWWCnCadrpKbH2yqu9P6oUhHS7atLjQ0ZBzXcM+Wj2VYR7XU8ng==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", + "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/utils": "1.3.0" + "@jimp/core": "1.6.0", + "@jimp/utils": "1.6.0" }, "engines": { "node": ">=18" } }, "node_modules/@jimp/plugin-circle": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.3.0.tgz", - "integrity": "sha512-Lkz1uwD2wgysuu4TDzAVQ26+urr+siYlO/qXnMYHui9k0P735S6B6EsWrzssLDGOtqevQyYcx5u6h0Kv4lzehg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", + "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", "dependencies": { - "@jimp/types": "1.3.0", + "@jimp/types": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3340,13 +3340,13 @@ } }, "node_modules/@jimp/plugin-color": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.3.0.tgz", - "integrity": "sha512-HLFtZB86W2nVnfZT+LAsyooF9efapWPmxuOKECeevunb1zHieO1ni19QXJfcqtt+cVj8UxIBGC4v9IFDJ9PGYw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", + "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "tinycolor2": "^1.6.0", "zod": "^3.23.8" }, @@ -3355,15 +3355,15 @@ } }, "node_modules/@jimp/plugin-contain": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.3.0.tgz", - "integrity": "sha512-1xPJ/CC4hh8IDrZFCtwQezw0RFzdrFvatzXkmfZD0cRyUXtYQ8VzExeK9MXLWi2+/nfufh+2SIhThTQ8xIzLBw==", - "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/plugin-blit": "1.3.0", - "@jimp/plugin-resize": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", + "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3371,14 +3371,14 @@ } }, "node_modules/@jimp/plugin-cover": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.3.0.tgz", - "integrity": "sha512-Q8vlXepruKU+A55PS2A+d7TPwIoYthnX61ae+TQa+/4DjYk6XZA2YlmUFhq7P3RH5p288N/84ILNSIwH5YCqAw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", + "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/plugin-crop": "1.3.0", - "@jimp/plugin-resize": "1.3.0", - "@jimp/types": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3386,13 +3386,13 @@ } }, "node_modules/@jimp/plugin-crop": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.3.0.tgz", - "integrity": "sha512-AoCTYFgcDEH+sqc2IQ5CI0CgYrQZSFfZ6q4zSXkWA+irs1nDbjJeA+0vClkYxJNSkk2wqB0fys69OBoqfDabrw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", + "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3400,12 +3400,12 @@ } }, "node_modules/@jimp/plugin-displace": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.3.0.tgz", - "integrity": "sha512-8t/R0SjE7YWujeMLbUT2js9WIeyFbeQXxAiCPt4AJy1BUD56sbcWIx1zJzrL52eF+bG4AS8oLOp5arL+P7ocmQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", + "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", "dependencies": { - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3413,23 +3413,23 @@ } }, "node_modules/@jimp/plugin-dither": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.3.0.tgz", - "integrity": "sha512-oE6kHne88OOcJBu+fk9KvMMB71UZUO4B2YYoaHVjGbtciPG9FbBBGqgD9oULVWhHuICZdDnfgFF0hhemQuQloQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", + "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", "dependencies": { - "@jimp/types": "1.3.0" + "@jimp/types": "1.6.0" }, "engines": { "node": ">=18" } }, "node_modules/@jimp/plugin-fisheye": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.3.0.tgz", - "integrity": "sha512-VLaqY/IxrqHyjKeWpUwJZpAqug4DE26hM/8ejfPm5FmofAS1dI0deecDfbthRbw17hnPVcAiTkZ6QTiQL71Z4w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", + "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", "dependencies": { - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3437,11 +3437,11 @@ } }, "node_modules/@jimp/plugin-flip": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.3.0.tgz", - "integrity": "sha512-cHeefBsjBYLbjqq8TFJHQD/6sgJLvb6XPdB8wVvKe682Y8jIilxlEhZJeUFXwsMrKKhbXNZxmtSc/pEIYCo6cA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", + "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", "dependencies": { - "@jimp/types": "1.3.0", + "@jimp/types": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3449,19 +3449,19 @@ } }, "node_modules/@jimp/plugin-hash": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.3.0.tgz", - "integrity": "sha512-LAUi9FFT3Kp2bI2hWXQ75t1pl6q6ZyKH/jJQZg8DPL+fFK0//TIsw/g0VxW5lZoV3mHUUorQlsZzWtNi/DGtWA==", - "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/js-bmp": "1.3.0", - "@jimp/js-jpeg": "1.3.0", - "@jimp/js-png": "1.3.0", - "@jimp/js-tiff": "1.3.0", - "@jimp/plugin-color": "1.3.0", - "@jimp/plugin-resize": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", + "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "any-base": "^1.1.0" }, "engines": { @@ -3469,11 +3469,11 @@ } }, "node_modules/@jimp/plugin-mask": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.3.0.tgz", - "integrity": "sha512-fpU6rZ75c1gD6/8zsiPQW57+doX3KfexZ3lVYToyd720HPO/qfG9lzwfY30tJVXArI4DMbG8qN7lXKgGeWwGqw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", + "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", "dependencies": { - "@jimp/types": "1.3.0", + "@jimp/types": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3481,15 +3481,15 @@ } }, "node_modules/@jimp/plugin-print": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.3.0.tgz", - "integrity": "sha512-WeN35Fo9Bushm6VGUdQXqXrVIFDYECeKLKN+LlAqQ/YnIlUiTirPlcyGHzEBKD8uXDCmjBYqxwadcPvRDVwFEw==", - "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/js-jpeg": "1.3.0", - "@jimp/js-png": "1.3.0", - "@jimp/plugin-blit": "1.3.0", - "@jimp/types": "1.3.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", + "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/types": "1.6.0", "parse-bmfont-ascii": "^1.0.6", "parse-bmfont-binary": "^1.0.6", "parse-bmfont-xml": "^1.1.6", @@ -3501,9 +3501,9 @@ } }, "node_modules/@jimp/plugin-quantize": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.3.0.tgz", - "integrity": "sha512-4Hgp5UNN8DGeX1ULNANPwlHCyuaZYZPJ/mpe/lnCN4jLI/SeBzR4g8tU+srNF6arPwRXrLNQV6T/ehAa7zhbkg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", + "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", "dependencies": { "image-q": "^4.0.0", "zod": "^3.23.8" @@ -3513,12 +3513,12 @@ } }, "node_modules/@jimp/plugin-resize": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.3.0.tgz", - "integrity": "sha512-9fMw6ff/3kzDwQ2rGNYCJ2jc9IHsxQh9eaoPb4SkVHxzq+O3yka3M2Vjf41gaYhQ5Pt5QLgQ9uYUA+2kp1RF1g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", + "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/types": "1.3.0", + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3526,15 +3526,15 @@ } }, "node_modules/@jimp/plugin-rotate": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.3.0.tgz", - "integrity": "sha512-lpzk37tzk7b5RG5U6P/E3vk+bwU86TnNZOc1LHQeTOEpfFAPMTJl6w+OlLLxVNJ7HUQege/8P47N2onQX00wXw==", - "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/plugin-crop": "1.3.0", - "@jimp/plugin-resize": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", + "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3542,15 +3542,15 @@ } }, "node_modules/@jimp/plugin-threshold": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.3.0.tgz", - "integrity": "sha512-lKBzZEgjI/zM51/muGyL2juGEkK361/yFpRcmjafIijq0sHNww1rhqSa0AhO80iCmN77A4Ym/oelY0qh4mtlLQ==", - "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/plugin-color": "1.3.0", - "@jimp/plugin-hash": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", + "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", "zod": "^3.23.8" }, "engines": { @@ -3558,9 +3558,9 @@ } }, "node_modules/@jimp/types": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.3.0.tgz", - "integrity": "sha512-K4RaTmDTqZqbjjwOtxzVH9QyCgQBukXjKOmdgNuCmu7ugrpeTeWV7SvrwZZPhTt31lmja8A3a3Dw1ScVZdtmyA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", + "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", "dependencies": { "zod": "^3.23.8" }, @@ -3569,11 +3569,11 @@ } }, "node_modules/@jimp/utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.3.0.tgz", - "integrity": "sha512-QIye6IWJaQ3Q9+6rxgQiFI1I7MwrQZYxlhYhPolJv+BfCXBT8XWJymV8J75vlnjvz3kN2AMXAEU7c7w0h2Tz3Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", "dependencies": { - "@jimp/types": "1.3.0", + "@jimp/types": "1.6.0", "tinycolor2": "^1.6.0" }, "engines": { @@ -3881,20 +3881,20 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.0.2.tgz", - "integrity": "sha512-Cg68oOlAfbJgMgvbCwcX3Y3HdygCl6X1nREYTdEWcEKUQhNarrC45Cc35mP+zA7p3ZXE/7FLiaTCCgwuSoef/Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.0.tgz", + "integrity": "sha512-covEnIn/2er5YdtuukDRA52kmARhKrHjOvPsyTFMQApZdrTBI4h8jbEy2mxZqwMwcAFS9coonQXnEZKL1rUNdQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.0.2.tgz", - "integrity": "sha512-WaTPSvKcx8X7NdWAHzJWDZv+YXvK0MUY8+JI/r4/q2GgIa5RW+n4+08CGX6jB7sWhU1R3zy28NfsDUwwQjOThw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.0.tgz", + "integrity": "sha512-HxfB0jxwiMTYMN8gAnYn3avbF1aDrqBEuGIj6JDQ3YkLl650E1Wy8AIhwwyP47wdrv0at9aAR0iOO6VLb74A9w==", "dependencies": { - "@babel/runtime": "^7.25.0" + "@babel/runtime": "^7.25.6" }, "engines": { "node": ">=14.0.0" @@ -3904,7 +3904,7 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^6.0.2", + "@mui/material": "^6.1.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -3915,15 +3915,15 @@ } }, "node_modules/@mui/material": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.0.2.tgz", - "integrity": "sha512-KrnkJFSyhsAh8V30DNUbWyRyxMi4ZHjFg1ikQGx+mUAIffFTYIEx9Q+Kxd3vCT0FUFGOmbsuh6F6yRhpybsjkg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.0.tgz", + "integrity": "sha512-4MJ46vmy1xbm8x+ZdRcWm8jEMMowdS8pYlhKQzg/qoKhOcLhImZvf2Jn6z9Dj6gl+lY+C/0MxaHF/avAAGys3Q==", "dependencies": { - "@babel/runtime": "^7.25.0", - "@mui/core-downloads-tracker": "^6.0.2", - "@mui/system": "^6.0.2", + "@babel/runtime": "^7.25.6", + "@mui/core-downloads-tracker": "^6.1.0", + "@mui/system": "^6.1.0", "@mui/types": "^7.2.16", - "@mui/utils": "^6.0.2", + "@mui/utils": "^6.1.0", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", @@ -3942,7 +3942,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^6.0.2", + "@mui/material-pigment-css": "^6.1.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -3963,12 +3963,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.0.2.tgz", - "integrity": "sha512-emddFcRhA0hPGVIwIbW5g0V8vtCgw2g/H/A7jTdGe7dpCWEPpp6jPIXRRKcEUWgmg91R6rBNfV+LFHxBxmZXOQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.0.tgz", + "integrity": "sha512-+L5qccs4gwsR0r1dgjqhN24QEQRkqIbfOdxILyMbMkuI50x6wNyt9XrV+J3WtjtZTMGJCrUa5VmZBE6OEPGPWA==", "dependencies": { - "@babel/runtime": "^7.25.0", - "@mui/utils": "^6.0.2", + "@babel/runtime": "^7.25.6", + "@mui/utils": "^6.1.0", "prop-types": "^15.8.1" }, "engines": { @@ -3989,12 +3989,13 @@ } }, "node_modules/@mui/styled-engine": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.0.2.tgz", - "integrity": "sha512-qd3Vlhted0SYVGotnCfVNcxff7vW2WN0fclbAexff60NeNS1qs/H/CImHEHUBiUGeNWMPRochbN6VF1arQ7/jA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.0.tgz", + "integrity": "sha512-MZ+vtaCkjamrT41+b0Er9OMenjAtP/32+L6fARL9/+BZKuV2QbR3q3TmavT2x0NhDu35IM03s4yKqj32Ziqnyg==", "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.6", "@emotion/cache": "^11.13.1", + "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, @@ -4020,15 +4021,15 @@ } }, "node_modules/@mui/system": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.0.2.tgz", - "integrity": "sha512-AZv1/C4PuHgWFTA8YraIzl3FTVLdRz0RIMRwEADWZBdIhnuTHS/4+r8qE9+3CcpTHg1WsEu8btaO3AhQahSM9A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.0.tgz", + "integrity": "sha512-NumkGDqT6EdXfcoFLYQ+M4XlTW5hH3+aK48xAbRqKPXJfxl36CBt4DLduw/Voa5dcayGus9T6jm1AwU2hoJ5hQ==", "dependencies": { - "@babel/runtime": "^7.25.0", - "@mui/private-theming": "^6.0.2", - "@mui/styled-engine": "^6.0.2", + "@babel/runtime": "^7.25.6", + "@mui/private-theming": "^6.1.0", + "@mui/styled-engine": "^6.1.0", "@mui/types": "^7.2.16", - "@mui/utils": "^6.0.2", + "@mui/utils": "^6.1.0", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -4072,11 +4073,11 @@ } }, "node_modules/@mui/utils": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.0.2.tgz", - "integrity": "sha512-TeFrYsxcmeoDSlkoPhX+LjIuuqC5Pyj+xz2kRceKCkUpwMNTEeVOfowXDPe+mboZwmpJ5ZxP4eiAgQMdeEasjg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.0.tgz", + "integrity": "sha512-oT8ZzMISRUhTVpdbYzY0CgrCBb3t/YEdcaM13tUnuTjZ15pdA6g5lx15ZJUdgYXV6PbJdw7tDQgMEr4uXK5TXQ==", "dependencies": { - "@babel/runtime": "^7.25.0", + "@babel/runtime": "^7.25.6", "@mui/types": "^7.2.16", "@types/prop-types": "^15.7.12", "clsx": "^2.1.1", @@ -7210,9 +7211,9 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sindresorhus/is": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.0.0.tgz", - "integrity": "sha512-WDTlVTyvFivSOuyvMeedzg2hdoBLZ3f1uNVuEida2Rl9BrfjrIRjWA/VZIrMRLvSwJYCAlCRA3usDt1THytxWQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.0.1.tgz", + "integrity": "sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==", "engines": { "node": ">=18" }, @@ -9579,9 +9580,9 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", - "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.8.tgz", + "integrity": "sha512-HfMcUmy9hTMJh66VNcmeC9iVErIZJli2bszuXc6julh5YGuRb/W5OnkHjwLNYdFlMis0sY3If5SEAp+PktdJjw==", "dev": true }, "node_modules/@types/ms": { @@ -9590,9 +9591,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", "dependencies": { "undici-types": "~6.19.2" } @@ -9616,9 +9617,9 @@ } }, "node_modules/@types/nodemailer": { - "version": "6.4.15", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.15.tgz", - "integrity": "sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==", + "version": "6.4.16", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.16.tgz", + "integrity": "sha512-uz6hN6Pp0upXMcilM61CoKyjT7sskBoOWpptkjjJp8jIMlTdc3xG01U7proKkXzruMS4hS0zqtHNkNPFB20rKQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -9706,14 +9707,15 @@ "integrity": "sha512-+gbBHbNCVGGYw1S9lAIIvrHW47UYOhMIFUsJcMkMrzy1Jf0vulBN3XQIjPgnoOXveMuHnF3b57fXROnY/Or7eg==" }, "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "dev": true }, "node_modules/@types/range-parser": { "version": "1.2.7", @@ -9731,9 +9733,9 @@ } }, "node_modules/@types/react": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", - "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.7.tgz", + "integrity": "sha512-KUnDCJF5+AiZd8owLIeVHqmW9yM4sqmDVf2JRJiBMFkGvkoZ4/WyV2lL4zVsoinmRS/W3FeEdZLEWFRofnT2FQ==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -9991,9 +9993,9 @@ "dev": true }, "node_modules/@types/web": { - "version": "0.0.159", - "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.159.tgz", - "integrity": "sha512-BHPaU+yHqHOrua8iFksPmgLCXEt1LE/2sPB+MPTRuxDFm4z6gBgmDiXUCGleyHiOLT6R+fklgR99hq/iFGVO1w==" + "version": "0.0.163", + "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.163.tgz", + "integrity": "sha512-5Pg2gKfulo186wFnv+YXx0luJGWQ94cCY2/Dy8lU5WAE50FdBoOK45uBbp8FceOSpLJ4UW3dmTW5tvsN9uuX7A==" }, "node_modules/@types/webgl-ext": { "version": "0.0.30", @@ -10303,55 +10305,55 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@vue/compiler-core": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.1.tgz", - "integrity": "sha512-WdjF+NSgFYdWttHevHw5uaJFtKPalhmxhlu2uREj8cLP0uyKKIR60/JvSZNTp0x+NSd63iTiORQTx3+tt55NWQ==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.6.tgz", + "integrity": "sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.1", + "@vue/shared": "3.5.6", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.1.tgz", - "integrity": "sha512-Ao23fB1lINo18HLCbJVApvzd9OQe8MgmQSgyY5+umbWj2w92w9KykVmJ4Iv2US5nak3ixc2B+7Km7JTNhQ8kSQ==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.6.tgz", + "integrity": "sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==", "dependencies": { - "@vue/compiler-core": "3.5.1", - "@vue/shared": "3.5.1" + "@vue/compiler-core": "3.5.6", + "@vue/shared": "3.5.6" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.1.tgz", - "integrity": "sha512-DFizMNH8eDglLhlfwJ0+ciBsztaYe3fY/zcZjrqL1ljXvUw/UpC84M1d7HpBTCW68SNqZyIxrs1XWmf+73Y65w==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.6.tgz", + "integrity": "sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.1", - "@vue/compiler-dom": "3.5.1", - "@vue/compiler-ssr": "3.5.1", - "@vue/shared": "3.5.1", + "@vue/compiler-core": "3.5.6", + "@vue/compiler-dom": "3.5.6", + "@vue/compiler-ssr": "3.5.6", + "@vue/shared": "3.5.6", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", - "postcss": "^8.4.44", + "postcss": "^8.4.47", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.1.tgz", - "integrity": "sha512-C1hpSHQgRM8bg+5XWWD7CkFaVpSn9wZHCLRd10AmxqrH17d4EMP6+XcZpwBOM7H1jeStU5naEapZZWX0kso1tQ==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.6.tgz", + "integrity": "sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==", "dependencies": { - "@vue/compiler-dom": "3.5.1", - "@vue/shared": "3.5.1" + "@vue/compiler-dom": "3.5.6", + "@vue/shared": "3.5.6" } }, "node_modules/@vue/shared": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.1.tgz", - "integrity": "sha512-NdcTRoO4KuW2RSFgpE2c+E/R/ZHaRzWPxAGxhmxZaaqLh6nYCXx7lc9a88ioqOCxCaV2SFJmujkxbUScW7dNsQ==" + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.6.tgz", + "integrity": "sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -10610,9 +10612,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "dependencies": { "acorn": "^8.11.0" @@ -11168,9 +11170,9 @@ } }, "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -11442,9 +11444,9 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -11454,7 +11456,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -15064,9 +15066,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001655", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", - "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", "funding": [ { "type": "opencollective", @@ -16183,23 +16185,17 @@ } }, "node_modules/cssstyle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", - "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", "dev": true, "dependencies": { - "rrweb-cssom": "^0.6.0" + "rrweb-cssom": "^0.7.1" }, "engines": { "node": ">=18" } }, - "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -16835,11 +16831,11 @@ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -17376,9 +17372,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", - "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.24.tgz", + "integrity": "sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -17394,9 +17390,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -17505,9 +17501,9 @@ } }, "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "bin": { "envinfo": "dist/cli.js" }, @@ -18135,36 +18131,36 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -18527,12 +18523,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -18653,9 +18649,9 @@ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" }, "node_modules/flexlayout-react": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/flexlayout-react/-/flexlayout-react-0.7.15.tgz", - "integrity": "sha512-ydTMdEoQO5BniylxVkSxa59rEY0+96lqqRII+QK+yq6028eHywPuxZawt4g45y5pMb9ptP4N9HPAQXAFsxwowQ==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/flexlayout-react/-/flexlayout-react-0.8.0.tgz", + "integrity": "sha512-nTkEOxVw438/6ugzKb0nBFRzJkWPYOgx8laGhDmTsXMuJQMEEC4dxyRSswcjt8IWsCKl8zSQHlsxSG+PrdJENQ==", "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" @@ -18690,9 +18686,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.8.tgz", - "integrity": "sha512-xgrmBhBToVKay1q2Tao5LI26B83UhrB/vM1avwVSDzt8rx3rO6AizBAaF46EgksTVr+rFTQaqZZ9MVBfUe4nig==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", @@ -19591,9 +19587,9 @@ } }, "node_modules/googleapis": { - "version": "142.0.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-142.0.0.tgz", - "integrity": "sha512-LsU1ynez4/KNPwnFMSDI93pBEsETNdQPCrT3kz2qgiNg5H2pW4dKW+1VmENMkZ4u9lMxA89nnXD3nqWBJ0rruQ==", + "version": "144.0.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-144.0.0.tgz", + "integrity": "sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==", "dependencies": { "google-auth-library": "^9.0.0", "googleapis-common": "^7.0.0" @@ -19833,9 +19829,9 @@ } }, "node_modules/hast-util-from-html": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.2.tgz", - "integrity": "sha512-HwOHwxdt2zC5KQ/CNoybBntRook2zJvfZE/u5/Ap7aLPe22bDqen7KwGkOqOyzL5zIqKwiYX/OTtE0FWgr6XXA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", @@ -20805,9 +20801,9 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inline-style-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", - "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" }, "node_modules/inspect-function": { "version": "0.3.4", @@ -21775,37 +21771,37 @@ } }, "node_modules/jimp": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.3.0.tgz", - "integrity": "sha512-eJnVMuqDQ545taNLp13gVZynnoOvE0xZ2Oti9alkld47dNhmFHBmFTBMTYaZr7zceGTf54RGdr7C4d2WUNwc0g==", - "dependencies": { - "@jimp/core": "1.3.0", - "@jimp/diff": "1.3.0", - "@jimp/js-bmp": "1.3.0", - "@jimp/js-gif": "1.3.0", - "@jimp/js-jpeg": "1.3.0", - "@jimp/js-png": "1.3.0", - "@jimp/js-tiff": "1.3.0", - "@jimp/plugin-blit": "1.3.0", - "@jimp/plugin-blur": "1.3.0", - "@jimp/plugin-circle": "1.3.0", - "@jimp/plugin-color": "1.3.0", - "@jimp/plugin-contain": "1.3.0", - "@jimp/plugin-cover": "1.3.0", - "@jimp/plugin-crop": "1.3.0", - "@jimp/plugin-displace": "1.3.0", - "@jimp/plugin-dither": "1.3.0", - "@jimp/plugin-fisheye": "1.3.0", - "@jimp/plugin-flip": "1.3.0", - "@jimp/plugin-hash": "1.3.0", - "@jimp/plugin-mask": "1.3.0", - "@jimp/plugin-print": "1.3.0", - "@jimp/plugin-quantize": "1.3.0", - "@jimp/plugin-resize": "1.3.0", - "@jimp/plugin-rotate": "1.3.0", - "@jimp/plugin-threshold": "1.3.0", - "@jimp/types": "1.3.0", - "@jimp/utils": "1.3.0" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", + "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/diff": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-gif": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-blur": "1.6.0", + "@jimp/plugin-circle": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-contain": "1.6.0", + "@jimp/plugin-cover": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-displace": "1.6.0", + "@jimp/plugin-dither": "1.6.0", + "@jimp/plugin-fisheye": "1.6.0", + "@jimp/plugin-flip": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/plugin-mask": "1.6.0", + "@jimp/plugin-print": "1.6.0", + "@jimp/plugin-quantize": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/plugin-rotate": "1.6.0", + "@jimp/plugin-threshold": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0" }, "engines": { "node": ">=18" @@ -21879,9 +21875,9 @@ "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, "node_modules/js-datepicker": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/js-datepicker/-/js-datepicker-5.18.2.tgz", - "integrity": "sha512-lBh5tIwb1ewDVlNHuwczoLiMhTFWnGYuHSA7ONAPKyMeofIFZDFGeOZ71UTY/Mk2evJJt+L66ec/RiXUy8XzEg==" + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/js-datepicker/-/js-datepicker-5.18.3.tgz", + "integrity": "sha512-M1+UKeRkLT0p04JhnSpNugveFSfy6VfEeNTyAyFef6unKIqQx4oQqx66lsBi0FRKHb4HtQsmJ8V4L4SPj1lbRQ==" }, "node_modules/js-stringify": { "version": "1.0.2", @@ -22293,9 +22289,9 @@ } }, "node_modules/launch-editor": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.2.tgz", - "integrity": "sha512-eF5slEUZXmi6WvFzI3dYcv+hA24/iKnROf24HztcURJpSz9RBmBgz5cNCVOeguouf1llrwy6Yctl4C4HM+xI8g==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", "dev": true, "dependencies": { "picocolors": "^1.0.0", @@ -23024,9 +23020,9 @@ } }, "node_modules/mdast-util-mdx-expression": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", - "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -23187,9 +23183,12 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -23206,9 +23205,9 @@ } }, "node_modules/mermaid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.1.0.tgz", - "integrity": "sha512-ICexrwPRzU1USFcpAdrVVGjCwEajD+iAwu2LVHi59D6VbXmFhwfB9TbCL3sA6NBR1tl5qUjQSAOdc9lOKlXnEw==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.2.1.tgz", + "integrity": "sha512-F8TEaLVVyxTUmvKswVFyOkjPrlJA5h5vNR1f7ZnSWSpqxgEZG1hggtn/QCa7znC28bhlcrNh10qYaIiill7q4A==", "dependencies": { "@braintree/sanitize-url": "^7.0.1", "@iconify/utils": "^2.1.32", @@ -23963,9 +23962,9 @@ "integrity": "sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==" }, "node_modules/mobx": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.1.tgz", - "integrity": "sha512-ekLRxgjWJr8hVxj9ZKuClPwM/iHckx3euIJ3Np7zLVNtqJvfbbq7l370W/98C8EabdQ1pB5Jd3BbDWxJPNnaOg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.2.tgz", + "integrity": "sha512-GIubI2qf+P6lG6rSEG0T2pg3jV9/0+O0ncF09+0umRe75+Cbnh1KNLM1GvbTY9RSc7QuU+LcPNZfxDY8B+3XRg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" @@ -24121,12 +24120,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -24143,9 +24136,9 @@ } }, "node_modules/mongodb": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", - "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", + "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", "dependencies": { "@mongodb-js/saslprep": "^1.1.5", "bson": "^6.7.0", @@ -24220,9 +24213,9 @@ } }, "node_modules/mongoose": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.6.1.tgz", - "integrity": "sha512-dppGcYqvsdg+VcnqXR5b467V4a+iNhmvkfYNpEPi6AjaUxnz6ioEDmrMLOi+sOWjvoHapuwPOigV4f2l7HC6ag==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.6.3.tgz", + "integrity": "sha512-++yRmm7hjMbqVA/8WeiygTnEfrFbiy+OBjQi49GFJIvCQuSYE56myyQWo4j5hbpcHjhHQU8NukMNGTwAWFWjIw==", "dependencies": { "bson": "^6.7.0", "kareem": "2.6.3", @@ -24240,10 +24233,50 @@ "url": "https://opencollective.com/mongoose" } }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "node_modules/mongoose/node_modules/mongodb": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", + "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.7.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } }, "node_modules/mpath": { "version": "0.9.0", @@ -24270,9 +24303,9 @@ "integrity": "sha512-hug+mpbSSKnH13rFqy3zm+XiG+QTStiDAgMTHK355TIstQE0qBkBtSJsa5YHP94AuarVX9b/4dcebdTRZ9YiEw==" }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -24517,9 +24550,9 @@ } }, "node_modules/nodemon": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz", - "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.5.tgz", + "integrity": "sha512-V5UtfYc7hjFD4SI3EzD5TR8ChAHEZ+Ns7Z5fBk8fAbTVAj+q3G+w7sHJrHxXBkVn6ApLVTljau8wfHwqmGUjMw==", "dependencies": { "chokidar": "^3.5.2", "debug": "^4", @@ -27214,19 +27247,17 @@ } }, "node_modules/openai": { - "version": "4.57.3", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.57.3.tgz", - "integrity": "sha512-mTz5/SmulkkeSpqbSr6WNLRU6krkyhnbfRUC8XfaXbj1T6xUorKEELjZvbRSzI714JLOk1MeFkqYS9H4WHhqDQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.62.0.tgz", + "integrity": "sha512-cPSsarEXoJENNwYMx/Xh/wuvnyYf8lPSR4zDVSnRvbcMHmKkDIzXhUVvPPfuI4M4T83x25gVnlW7huWEGKG+SA==", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", - "@types/qs": "^6.9.15", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7", - "qs": "^6.10.3" + "node-fetch": "^2.6.7" }, "bin": { "openai": "bin/cli" @@ -27649,9 +27680,9 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/path-type": { "version": "4.0.0", @@ -27992,9 +28023,9 @@ } }, "node_modules/postcss": { - "version": "8.4.45", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", - "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -28011,8 +28042,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -28462,11 +28493,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -28940,15 +28971,15 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/react-jsx-parser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-jsx-parser/-/react-jsx-parser-2.0.0.tgz", - "integrity": "sha512-1siP+vM47gWE+x2VTF0ano5jJPRilOf7sRIoy4dzb1FmNoDpwe3htuzgcEfvzsc7YThzwmMQNUfy4vAv1ATs2g==", - "hasInstallScript": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-jsx-parser/-/react-jsx-parser-2.1.0.tgz", + "integrity": "sha512-cGp8ceqA6j7OylsqeK2kuCGRitHpWzximsxsQyqkQO+1fwyG82Mb1l2nx9ImrfdCO6GT2kgt7C6cX9vJ46B7ow==", "dependencies": { "acorn": "^8.12.1", - "acorn-jsx": "^5.3.2", - "browserslist": "^4.23.1", - "core-js": "^3.37.1" + "acorn-jsx": "^5.3.2" + }, + "engines": { + "bun": "^1.1.27" }, "optionalDependencies": { "@types/react": "^18.3.3", @@ -29388,9 +29419,9 @@ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dependencies": { "regenerate": "^1.4.2" }, @@ -29964,9 +29995,9 @@ } }, "node_modules/rimraf/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", "engines": { "node": "20 || >=22" } @@ -30126,11 +30157,11 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.78.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", - "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "version": "1.79.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.1.tgz", + "integrity": "sha512-+mA7svoNKeL0DiJqZGeR/ZGUu8he4I8o3jyUcOFyo4eBJrwNgIMmAEwCMo/N2Y3wdjOBcRzoNxZIOtrtMX8EXg==", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", + "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, @@ -30180,6 +30211,32 @@ } } }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.0.tgz", + "integrity": "sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", + "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -30314,9 +30371,9 @@ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -30349,6 +30406,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -30360,11 +30425,6 @@ "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -30465,14 +30525,14 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -30762,11 +30822,11 @@ } }, "node_modules/simple-xml-to-json": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.2.tgz", - "integrity": "sha512-bmJJf5YiYL60eOQk3gaVxbM6vgYuwrFydCEAA2x3jccHUTsAffiPyblS/yQGr8GDUQVxSDm3WwLNL5HmRqDUcg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", + "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==", "engines": { - "node": ">=14.20.0" + "node": ">=20.12.2" } }, "node_modules/skmeans": { @@ -30907,9 +30967,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "engines": { "node": ">=0.10.0" } @@ -31167,9 +31227,9 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/streamx": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.0.tgz", - "integrity": "sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", @@ -31231,9 +31291,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "engines": { "node": ">=12" }, @@ -31483,11 +31543,11 @@ } }, "node_modules/style-to-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.7.tgz", - "integrity": "sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", "dependencies": { - "inline-style-parser": "0.2.3" + "inline-style-parser": "0.2.4" } }, "node_modules/styled-components": { @@ -31681,9 +31741,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "version": "5.33.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz", + "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -31788,9 +31848,9 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/text-decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", - "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", "dependencies": { "b4a": "^1.6.4" } @@ -32618,9 +32678,9 @@ } }, "node_modules/type-fest": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", - "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "engines": { "node": ">=16" }, @@ -32714,9 +32774,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -32834,9 +32894,9 @@ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "engines": { "node": ">=4" } @@ -32854,9 +32914,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "engines": { "node": ">=4" } @@ -33154,20 +33214,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, - "node_modules/url/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/use-composed-ref": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", @@ -33660,9 +33706,9 @@ } }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", - "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.2.tgz", + "integrity": "sha512-VcR7lEtgQgv7AxGkrNNeUAimFLT+Ov8uGu1LuOfbe/iF/dKoh/QgpoaMZlhfejvLtMxtXYyeoT7Ar1jEbWdbPA==", "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", "@jsonjoy.com/util": "^1.3.0", @@ -34162,9 +34208,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "engines": { "node": ">=12" }, diff --git a/package.json b/package.json index 1f3d86be9..967549197 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "@types/reveal": "^4.2.0", "@types/supercluster": "^7.1.3", "@types/textfit": "^2.4.4", - "@types/web": "^0.0.159", + "@types/web": "^0.0.163", "@types/webpack-hot-middleware": "^2.25.9", "@webscopeio/react-textarea-autocomplete": "^4.9.2", "adm-zip": "^0.5.10", @@ -188,7 +188,7 @@ "file-saver": "^2.0.5", "find-in-files": "^0.5.0", "fit-curve": "^0.2.0", - "flexlayout-react": "^0.7.15", + "flexlayout-react": "^0.8.0", "fluent-ffmpeg": "^2.1.2", "forever-agent": "^0.6.1", "fork-ts-checker-webpack-plugin": "^9.0.2", @@ -198,7 +198,7 @@ "function-plot": "^1.23.3", "golden-layout": "^2.6.0", "google-auth-library": "^9.4.1", - "googleapis": "^142.0.0", + "googleapis": "^144.0.0", "googlephotos": "^0.3.5", "got": "^14.0.0", "howler": "^2.2.4", diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 37b1f04e7..5e7908725 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -708,7 +708,6 @@ export class DocumentDecorations extends ObservableReactComponent CollectionFreeFormDocumentView.from(v)); - - return (
Doc.toggleLockedPosition(doc), 'toggleBackground'); diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index c029d17c6..97ff852b2 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -577,7 +577,8 @@ export class CollectionCardView extends CollectionSubView() { /** * Actually renders all the cards */ - renderCards = (sortedDocs: Doc[]) => { + @computed get renderCards() { + const sortedDocs = this.sortedDocs; const anySelected = this.childDocs.some(doc => DocumentView.SelectedDocs().includes(doc)); const isEmpty = this.childDocsWithoutLinks.length === 0; const isDesc = BoolCast(this.Document.cardSort_isDesc); @@ -640,7 +641,7 @@ export class CollectionCardView extends CollectionSubView() {
); }); - }; + } render() { const isEmpty = this.childDocsWithoutLinks.length === 0; @@ -664,7 +665,7 @@ export class CollectionCardView extends CollectionSubView() { gridAutoRows: `${100 / this.numRows}%`, }} onMouseLeave={() => this.setHoveredNodeIndex(-1)}> - {this.renderCards(this.sortedDocs)} + {this.renderCards}
); diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.tsx b/src/client/views/nodes/FontIconBox/FontIconBox.tsx index 7feb17df1..f53a7d163 100644 --- a/src/client/views/nodes/FontIconBox/FontIconBox.tsx +++ b/src/client/views/nodes/FontIconBox/FontIconBox.tsx @@ -157,7 +157,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { let noviceList: string[] = []; let text: string | undefined; - const getStyle: (val: string) => { [key: string]: string } = () => ({}); + let getStyle: (val: string) => { [key: string]: string } = () => ({}); let icon: IconProp = 'caret-down'; const isViewDropdown = script?.script.originalScript.startsWith('{ return setView'); if (isViewDropdown) { @@ -192,7 +192,7 @@ export class FontIconBox extends ViewBoxBaseComponent() { } else { text = script?.script.run({ this: this.Document, value: '', _readOnly_: true }).result as string; // text = StrCast((RichTextMenu.Instance?.TextView?.EditorView ? RichTextMenu.Instance : Doc.UserDoc()).fontFamily); - // getStyle = (val: string) => ({ fontFamily: val }); + if (this.Document.title === 'Font') getStyle = (val: string) => ({ fontFamily: val }); // bcz: major hack to style the font dropdown items --- needs to become part of the dropdown's metadata } // Get items to place into the list diff --git a/src/client/views/pdf/AnchorMenu.tsx b/src/client/views/pdf/AnchorMenu.tsx index f5f758ad2..03585a8b7 100644 --- a/src/client/views/pdf/AnchorMenu.tsx +++ b/src/client/views/pdf/AnchorMenu.tsx @@ -133,7 +133,7 @@ export class AnchorMenu extends AntimodeMenu { _layout_autoHeight: true, }); - this.addToCollection?.(newCol); //this._props.addDocument(newCol) + this.addToCollection?.(newCol); }; pointerDown = (e: React.PointerEvent) => { -- cgit v1.2.3-70-g09d2 From 78f348cd1406cfaf3d0247973b826783ab3532b5 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 17 Sep 2024 21:05:17 -0400 Subject: from last --- src/client/views/FilterPanel.tsx | 170 ++++++++--------- src/client/views/global/globalScripts.ts | 14 +- src/client/views/nodes/IconTagBox.tsx | 22 +-- src/client/views/pdf/GPTPopup/GPTPopup.tsx | 282 ++++++++++++----------------- 4 files changed, 204 insertions(+), 284 deletions(-) (limited to 'src') diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index f3f447e22..8133a4d0d 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -1,34 +1,29 @@ /* eslint-disable react/jsx-props-no-spreading */ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Tooltip } from '@mui/material'; import { action, computed, makeObservable, observable, ObservableMap } from 'mobx'; -import { observer } from 'mobx-react'; +import { observer, useLocalObservable } from 'mobx-react'; import * as React from 'react'; +import { useEffect, useRef } from 'react'; import { Handles, Rail, Slider, Ticks, Tracks } from 'react-compound-slider'; import { AiOutlineMinusSquare, AiOutlinePlusSquare } from 'react-icons/ai'; import { CiCircleRemove } from 'react-icons/ci'; import { Doc, DocListCast, Field, FieldType, LinkedTo, StrListCast } from '../../fields/Doc'; +import { DocData } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; import { List } from '../../fields/List'; import { RichTextField } from '../../fields/RichTextField'; +import { DocCast, StrCast } from '../../fields/Types'; +import { Button, CurrentUserUtils } from '../util/CurrentUserUtils'; import { SearchUtil } from '../util/SearchUtil'; import { SnappingManager } from '../util/SnappingManager'; -import { undoable, undoBatch } from '../util/UndoManager'; +import { undoable } from '../util/UndoManager'; import { FieldsDropdown } from './FieldsDropdown'; import './FilterPanel.scss'; import { DocumentView } from './nodes/DocumentView'; +import { ButtonType } from './nodes/FontIconBox/FontIconBox'; import { Handle, Tick, TooltipRail, Track } from './nodes/SliderBox-components'; import { ObservableReactComponent } from './ObservableReactComponent'; -import { Button } from '../util/CurrentUserUtils'; -import { ButtonType } from './nodes/FontIconBox/FontIconBox'; -import { DocCast } from '../../fields/Types'; -import { CurrentUserUtils } from '../util/CurrentUserUtils'; -import { StrCast } from '../../fields/Types'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { DocData } from '../../fields/DocSymbols'; -import { Tooltip } from '@mui/material'; -import { useLocalObservable } from 'mobx-react'; -import { useRef } from 'react'; -import { useEffect } from 'react'; - interface filterProps { Document: Doc; @@ -37,8 +32,7 @@ interface filterProps { @observer export class FilterPanel extends ObservableReactComponent { @observable _selectedFacetHeaders = new Set(); - public static Instance: FilterPanel; - + public static Instance: FilterPanel; constructor(props: filterProps) { super(props); @@ -227,7 +221,7 @@ export class FilterPanel extends ObservableReactComponent { }; /** - * Allows users to add a filter hotkey to the properties panel. Will also update the multitoggle at the top menu and the + * Allows users to add a filter hotkey to the properties panel. Will also update the multitoggle at the top menu and the * icontags tht are displayed on the documents themselves * @param hotKey tite of the new hotkey */ @@ -246,21 +240,20 @@ export class FilterPanel extends ObservableReactComponent { scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}' }, }; - const currHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + const currHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - Doc.UserDoc().myFilterHotKeyTitles = new List(currHotKeys.concat(hotKey)) + Doc.UserDoc().myFilterHotKeyTitles = new List(currHotKeys.concat(hotKey)); - Doc.UserDoc()[hotKey] = 'bolt' + Doc.UserDoc()[hotKey] = 'bolt'; const newBtn = CurrentUserUtils.setupContextMenuBtn(newKey, filter); newBtn.isSystem = newBtn[DocData].isSystem = undefined; - const subDocs = DocListCast(filter.data) - const opts = subDocs[subDocs.length-1] + const subDocs = DocListCast(filter.data); + const opts = subDocs[subDocs.length - 1]; Doc.AddDocToList(filter, 'data', newBtn, opts, true); - } + }; - /** * Renders the newly formed hotkey icon buttons * @returns the buttons to be rendered @@ -268,16 +261,16 @@ export class FilterPanel extends ObservableReactComponent { hotKeyButtons = () => { const selected = DocumentView.SelectedDocs().lastElement(); const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - + // Selecting a button should make it so that the icon on the top filter panel becomes said icon const buttons = hotKeys.map((hotKey, i) => ( Click to customize this hotkey's icon}> - + )); - + return buttons; - } + }; // @observable iconPanelMap: Map = new Map(); @@ -465,18 +458,16 @@ export class FilterPanel extends ObservableReactComponent { } } - - interface HotKeyButtonProps { hotKey: string; - selected?: Doc + selected?: Doc; } /** - * Renders the buttons that correspond to each icon tag in the properties view. Allows users to change the icon, - * title, and delete. + * Renders the buttons that correspond to each icon tag in the properties view. Allows users to change the icon, + * title, and delete. */ -const HotKeyIconButton: React.FC = observer(({ hotKey, selected}) => { +const HotKeyIconButton: React.FC = observer(({ hotKey, selected }) => { const state = useLocalObservable(() => ({ isActive: false, isEditing: false, @@ -496,7 +487,7 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select }, setHotKey(newHotKey: string) { this.myHotKey = newHotKey; - } + }, })); const panelRef = useRef(null); @@ -506,31 +497,29 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select state.toggleActive(); }; - const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles) + const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); const filter = DocCast(buttons.Filter); /** * The doc of the button in the context menu that corresponds to the current hotkey - * @returns + * @returns */ const myHotKeyDoc = () => { - const hotKeyDocs = DocListCast(filter.data) - return hotKeyDocs.filter(k => StrCast(k.title) === hotKey)[0] - - } + const hotKeyDocs = DocListCast(filter.data); + return hotKeyDocs.filter(k => StrCast(k.title) === hotKey)[0]; + }; /** - * Removes a hotkey from list + * Removes a hotkey from list */ const removeHotKey = () => { Doc.RemoveDocFromList(filter, 'data', myHotKeyDoc()); - - } + }; /** * Deselects if the user clicks outside the button - * @param event + * @param event */ const handleClickOutside = (event: MouseEvent) => { if (panelRef.current && !panelRef.current.contains(event.target as Node)) { @@ -538,24 +527,23 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select if (state.isEditing) { state.stopEditing(); - updateFromInput() + updateFromInput(); } } }; /** - * Updates the list of hotkeys based on the users input. replaces the old title with the new one and then assigns this new + * Updates the list of hotkeys based on the users input. replaces the old title with the new one and then assigns this new * hotkey with the current icon */ - const updateFromInput = undoable (() => { - const myDoc = myHotKeyDoc() - Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => k === hotKey ? state.myHotKey : k)); - Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]) - Doc.UserDoc()[hotKey] = '' - myDoc.title = state.myHotKey - myDoc.toolTip = `Click to toggle the ${state.myHotKey}'s group's visibility` - }, '') - + const updateFromInput = undoable(() => { + const myDoc = myHotKeyDoc(); + Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => (k === hotKey ? state.myHotKey : k))); + Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]); + Doc.UserDoc()[hotKey] = ''; + myDoc.title = state.myHotKey; + myDoc.toolTip = `Click to toggle the ${state.myHotKey}'s group's visibility`; + }, ''); useEffect(() => { document.addEventListener('mousedown', handleClickOutside); @@ -564,18 +552,21 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select }; }, []); - const iconOpts = ['star', 'heart', 'bolt', 'satellite', 'palette', 'robot', 'lightbulb', 'highlighter', 'book', 'chalkboard' ]; + const iconOpts = ['star', 'heart', 'bolt', 'satellite', 'palette', 'robot', 'lightbulb', 'highlighter', 'book', 'chalkboard']; /** * Panel of icons the user can choose from to represent their tag */ const iconPanel = iconOpts.map((icon, i) => ( - )); @@ -584,62 +575,57 @@ const HotKeyIconButton: React.FC = observer(({ hotKey, select */ return ( -
{ +
{ e.stopPropagation(); state.startEditing(); setTimeout(() => inputRef.current?.focus(), 0); - }} - > + }}>
Click to customize this hotkey's icon
}> - {state.isActive && ( -
- {iconPanel} -
- )} + {state.isActive &&
{iconPanel}
}
{state.isEditing ? ( state.setHotKey(e.target.value)} + onChange={e => state.setHotKey(e.target.value)} onBlur={() => { state.stopEditing(); - updateFromInput() + updateFromInput(); }} - onKeyDown={(e) => { + onKeyDown={e => { if (e.key === 'Enter') { state.stopEditing(); - updateFromInput() - + updateFromInput(); } }} - className='hotkey-title-input' + className="hotkey-title-input" /> ) : ( -

{hotKey.toUpperCase()}

+

{hotKey.toUpperCase()}

)} -
); -}) \ No newline at end of file +}); diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 99bd537b1..6ccbf28f8 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -2,13 +2,13 @@ import { Colors } from 'browndash-components'; import { action, runInAction } from 'mobx'; import { aggregateBounds } from '../../../Utils'; -import { Doc, DocListCast, Opt } from '../../../fields/Doc'; +import { Doc, DocListCast, Opt, StrListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; import { InkTool } from '../../../fields/InkField'; import { BoolCast, Cast, NumCast, StrCast } from '../../../fields/Types'; import { WebField } from '../../../fields/URLField'; import { Gestures } from '../../../pen-gestures/GestureTypes'; -import { DocumentType } from '../../documents/DocumentTypes'; +import { CollectionViewType, DocumentType } from '../../documents/DocumentTypes'; import { LinkManager } from '../../util/LinkManager'; import { ScriptingGlobals } from '../../util/ScriptingGlobals'; import { UndoManager, undoable } from '../../util/UndoManager'; @@ -35,16 +35,12 @@ import { ImageBox } from '../nodes/ImageBox'; import { VideoBox } from '../nodes/VideoBox'; import { WebBox } from '../nodes/WebBox'; import { RichTextMenu } from '../nodes/formattedText/RichTextMenu'; -import { NumListCast, StrListCast } from '../../../fields/Doc'; -import { List } from '../../../fields/List'; -import { CollectionViewType } from '../../documents/DocumentTypes'; // import { InkTranscription } from '../InkTranscription'; import { Docs } from '../../documents/Documents'; -import { CollectionSubView } from '../collections/CollectionSubView'; -import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; -import { PropertiesView } from '../PropertiesView'; -import { MainView } from '../MainView'; import { SnappingManager } from '../../util/SnappingManager'; +import { MainView } from '../MainView'; +import { PropertiesView } from '../PropertiesView'; +import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function IsNoneSelected() { return DocumentView.Selected().length <= 0; diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index e6c0961ed..e076e691a 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -1,23 +1,19 @@ -import React from 'react'; -import { observer } from 'mobx-react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Tooltip } from '@mui/material'; import { computed } from 'mobx'; -import { ObservableReactComponent } from '../ObservableReactComponent'; -import { NumCast } from '../../../fields/Types'; -import { Doc } from '../../../fields/Doc'; +import { observer } from 'mobx-react'; +import React from 'react'; import { numberRange } from '../../../Utils'; -import { Tooltip } from '@mui/material'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { undoable } from '../../util/UndoManager'; -import { BoolCast } from '../../../fields/Types'; -import { DocCast } from '../../../fields/Types'; -import './IconTagBox.scss'; +import { Doc, StrListCast } from '../../../fields/Doc'; import { DocData } from '../../../fields/DocSymbols'; -import { StrListCast } from '../../../fields/Doc'; -import { StrCast } from '../../../fields/Types'; +import { BoolCast, DocCast, NumCast, StrCast } from '../../../fields/Types'; import { CollectionViewType } from '../../documents/DocumentTypes'; import { SnappingManager } from '../../util/SnappingManager'; +import { undoable } from '../../util/UndoManager'; import { MainView } from '../MainView'; +import { ObservableReactComponent } from '../ObservableReactComponent'; import { PropertiesView } from '../PropertiesView'; +import './IconTagBox.scss'; export interface IconTagProps { doc: Doc; diff --git a/src/client/views/pdf/GPTPopup/GPTPopup.tsx b/src/client/views/pdf/GPTPopup/GPTPopup.tsx index 53bedbb65..ed3f99377 100644 --- a/src/client/views/pdf/GPTPopup/GPTPopup.tsx +++ b/src/client/views/pdf/GPTPopup/GPTPopup.tsx @@ -3,7 +3,7 @@ import { Button, IconButton, Type } from 'browndash-components'; import { action, makeObservable, observable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; -import { CgClose, CgPathBack, CgArrowLeftO, CgCornerUpLeft } from 'react-icons/cg'; +import { CgClose, CgCornerUpLeft } from 'react-icons/cg'; import ReactLoading from 'react-loading'; import { TypeAnimation } from 'react-type-animation'; import { ClientUtils } from '../../../../ClientUtils'; @@ -11,16 +11,14 @@ import { Doc } from '../../../../fields/Doc'; import { NumCast, StrCast } from '../../../../fields/Types'; import { Networking } from '../../../Network'; import { GPTCallType, gptAPICall, gptImageCall } from '../../../apis/gpt/GPT'; -import { Docs } from '../../../documents/Documents'; import { DocUtils } from '../../../documents/DocUtils'; -import { ObservableReactComponent } from '../../ObservableReactComponent'; -import { AnchorMenu } from '../AnchorMenu'; -import './GPTPopup.scss'; +import { Docs } from '../../../documents/Documents'; import { SettingsManager } from '../../../util/SettingsManager'; import { SnappingManager } from '../../../util/SnappingManager'; +import { ObservableReactComponent } from '../../ObservableReactComponent'; import { DocumentView } from '../../nodes/DocumentView'; -import { DocCast } from '../../../../fields/Types'; -import { RTFCast } from '../../../../fields/Types'; +import { AnchorMenu } from '../AnchorMenu'; +import './GPTPopup.scss'; export enum GPTPopupMode { SUMMARY, @@ -30,21 +28,15 @@ export enum GPTPopupMode { DATA, CARD, SORT, - QUIZ + QUIZ, } export enum GPTQuizType { CURRENT = 0, CHOOSE = 1, - MULTIPLE = 2 - + MULTIPLE = 2, } - - - - - interface GPTPopupProps {} @observer @@ -168,30 +160,29 @@ export class GPTPopup extends ObservableReactComponent { this.cardsDoneLoading = done; } - @observable sortRespText: string = '' + @observable sortRespText: string = ''; @action setSortRespText(resp: string) { - this.sortRespText = resp + this.sortRespText = resp; } - @observable chatSortPrompt: string = "" + @observable chatSortPrompt: string = ''; sortPromptChanged = action((e: React.ChangeEvent) => { this.chatSortPrompt = e.target.value; }); - @observable quizAnswer: string = "" + @observable quizAnswer: string = ''; quizAnswerChanged = action((e: React.ChangeEvent) => { this.quizAnswer = e.target.value; }); - @observable conversationArray: string[] = ["Hi! In this pop up, you can ask ChatGPT questions about your documents and filter / sort them. "] - + @observable conversationArray: string[] = ['Hi! In this pop up, you can ask ChatGPT questions about your documents and filter / sort them. ']; /** * When the cards are in quiz mode in the card view, allows gpt to determine whether the user's answer was correct - * @returns + * @returns */ generateQuiz = async () => { this.setLoading(true); @@ -201,14 +192,13 @@ export class GPTPopup extends ObservableReactComponent { const selected = DocumentView.SelectedDocs().lastElement(); - const questionText = 'Question: ' + StrCast(selected['gptInputText']); if (StrCast(selected['gptRubric']) === '') { - const rubricText = 'Rubric: ' + await this.generateRubric(StrCast(selected['gptInputText']), selected) + const rubricText = 'Rubric: ' + (await this.generateRubric(StrCast(selected['gptInputText']), selected)); } - const rubricText = 'Rubric: ' + (StrCast(selected['gptRubric'])) + const rubricText = 'Rubric: ' + StrCast(selected['gptRubric']); const queryText = questionText + ' UserAnswer: ' + this.quizAnswer + '. ' + 'Rubric' + rubricText; try { @@ -217,23 +207,20 @@ export class GPTPopup extends ObservableReactComponent { console.error('GPT call failed'); return; } - console.log(res) - this.setQuizResp(res) - this.conversationArray.push(res) + console.log(res); + this.setQuizResp(res); + this.conversationArray.push(res); this.setLoading(false); this.setSortDone(true); - } catch (err) { console.error('GPT call failed'); } - - if (this.onQuizRandom){ - this.onQuizRandom() + if (this.onQuizRandom) { + this.onQuizRandom(); } - - } + }; /** * Generates a rubric by which to compare the user's answer to @@ -241,105 +228,95 @@ export class GPTPopup extends ObservableReactComponent { * @param doc the doc the user is providing info about * @returns gpt's response */ - generateRubric = async (inputText: string, doc:Doc) => { + generateRubric = async (inputText: string, doc: Doc) => { try { - const res = await gptAPICall(inputText, GPTCallType.RUBRIC); - doc['gptRubric']= res; - return res + const res = await gptAPICall(inputText, GPTCallType.RUBRIC); + doc['gptRubric'] = res; + return res; } catch (err) { console.error('GPT call failed'); } - - } - - + }; @observable private regenerateCallback: (() => Promise) | null = null; /** * Callback function that causes the card view to update the childpair string list - * @param callback + * @param callback */ @action public setRegenerateCallback(callback: () => Promise) { this.regenerateCallback = callback; } - - - public addDoc: (doc: Doc | Doc[], sidebarKey?: string | undefined) => boolean = () => false; public createFilteredDoc: (axes?: string[]) => boolean = () => false; public addToCollection: ((doc: Doc | Doc[], annotationKey?: string | undefined) => boolean) | undefined; - @observable quizRespText: string = '' - - @action setQuizResp (resp: string) { - this.quizRespText = resp + @observable quizRespText: string = ''; + @action setQuizResp(resp: string) { + this.quizRespText = resp; } /** * Generates a response to the user's question depending on the type of their question */ generateCard = async () => { - console.log(this.chatSortPrompt + "USER PROMPT") + console.log(this.chatSortPrompt + 'USER PROMPT'); this.setLoading(true); this.setSortDone(false); if (this.regenerateCallback) { await this.regenerateCallback(); } - + try { // const res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); const questionType = await gptAPICall(this.chatSortPrompt, GPTCallType.TYPE); - const questionNumber = questionType.split(' ')[0] - console.log(questionType) - let res = '' + const questionNumber = questionType.split(' ')[0]; + console.log(questionType); + let res = ''; switch (questionNumber) { case '1': case '2': case '4': res = await gptAPICall(this.sortDesc, GPTCallType.SUBSET, this.chatSortPrompt); - break + break; case '6': res = await gptAPICall(this.sortDesc, GPTCallType.SORT, this.chatSortPrompt); - break + break; default: - const selected = DocumentView.SelectedDocs().lastElement(); const questionText = StrCast(selected!['gptInputText']); - res = await gptAPICall(questionText, GPTCallType.INFO, this.chatSortPrompt); - break + break; } // Trigger the callback with the result if (this.onSortComplete) { this.onSortComplete(res || 'Something went wrong :(', questionNumber, questionType.split(' ').slice(1).join(' ')); - let explanation = res + let explanation = res; + + if (questionType != '5' && questionType != '3') { + // Extract explanation surrounded by ------ at the top or both at the top and bottom + const explanationMatch = res.match(/------\s*([\s\S]*?)\s*(?:------|$)/) || []; + explanation = explanationMatch[1] ? explanationMatch[1].trim() : 'No explanation found'; + } - if (questionType != '5' && questionType != '3'){ - - // Extract explanation surrounded by ------ at the top or both at the top and bottom - const explanationMatch = res.match(/------\s*([\s\S]*?)\s*(?:------|$)/) || []; - explanation = explanationMatch[1] ? explanationMatch[1].trim() : 'No explanation found'; - } - // Set the extracted explanation to sortRespText this.setSortRespText(explanation); - this.conversationArray.push(this.sortRespText) - this.scrollToBottom() - + this.conversationArray.push(this.sortRespText); + this.scrollToBottom(); + console.log(res); } } catch (err) { console.error(err); } - + this.setLoading(false); this.setSortDone(true); }; @@ -476,21 +453,16 @@ export class GPTPopup extends ObservableReactComponent { makeObservable(this); GPTPopup.Instance = this; this.messagesEndRef = React.createRef(); - } - - scrollToBottom = () => { - setTimeout(() => { - // Code to execute after 1 second (1000 ms) - if (this.messagesEndRef.current) { - + setTimeout(() => { + // Code to execute after 1 second (1000 ms) + if (this.messagesEndRef.current) { this.messagesEndRef.current.scrollIntoView({ behavior: 'smooth', block: 'end' }); - } - - }, 50); - } + } + }, 50); + }; componentDidUpdate = () => { if (this.loading) { @@ -498,9 +470,9 @@ export class GPTPopup extends ObservableReactComponent { } }; - @observable quizMode : GPTQuizType = GPTQuizType.CURRENT - @action setQuizMode (g: GPTQuizType) { - this.quizMode = g + @observable quizMode: GPTQuizType = GPTQuizType.CURRENT; + @action setQuizMode(g: GPTQuizType) { + this.quizMode = g; } cardMenu = () => ( @@ -517,21 +489,18 @@ export class GPTPopup extends ObservableReactComponent { textAlign: 'center', color: '#ffffff', fontSize: '16px', - marginBottom: '10px' + marginBottom: '10px', }} /> + )); + + /** + * Actually renders the buttons + */ + + return ( +
{ + e.stopPropagation(); + state.startEditing(); + setTimeout(() => inputRef.current?.focus(), 0); + }}> +
+ Click to customize this hotkey's icon
}> + + + {state.isActive &&
{iconPanel}
} +
+ {state.isEditing ? ( + state.setHotKey(e.target.value)} + onBlur={() => { + state.stopEditing(); + updateFromInput(); + }} + onKeyDown={e => { + if (e.key === 'Enter') { + state.stopEditing(); + updateFromInput(); + } + }} + className="hotkey-title-input" + /> + ) : ( +

{hotKey.toUpperCase()}

+ )} + + + ); +}); interface filterProps { Document: Doc; } @observer export class FilterPanel extends ObservableReactComponent { - @observable _selectedFacetHeaders = new Set(); + // eslint-disable-next-line no-use-before-define public static Instance: FilterPanel; constructor(props: filterProps) { @@ -40,6 +211,7 @@ export class FilterPanel extends ObservableReactComponent { FilterPanel.Instance = this; } + @observable _selectedFacetHeaders = new Set(); /** * @returns the relevant doc according to the value of FilterBox._filterScope i.e. either the Current Dashboard or the Current Collection */ @@ -263,8 +435,8 @@ export class FilterPanel extends ObservableReactComponent { const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); // Selecting a button should make it so that the icon on the top filter panel becomes said icon - const buttons = hotKeys.map((hotKey, i) => ( - Click to customize this hotkey's icon}> + const buttons = hotKeys.map(hotKey => ( + Click to customize this hotkey's icon}> )); @@ -457,175 +629,3 @@ export class FilterPanel extends ObservableReactComponent { return undefined; } } - -interface HotKeyButtonProps { - hotKey: string; - selected?: Doc; -} - -/** - * Renders the buttons that correspond to each icon tag in the properties view. Allows users to change the icon, - * title, and delete. - */ -const HotKeyIconButton: React.FC = observer(({ hotKey, selected }) => { - const state = useLocalObservable(() => ({ - isActive: false, - isEditing: false, - myHotKey: hotKey, - - toggleActive() { - this.isActive = !this.isActive; - }, - deactivate() { - this.isActive = false; - }, - startEditing() { - this.isEditing = true; - }, - stopEditing() { - this.isEditing = false; - }, - setHotKey(newHotKey: string) { - this.myHotKey = newHotKey; - }, - })); - - const panelRef = useRef(null); - const inputRef = useRef(null); - - const handleClick = () => { - state.toggleActive(); - }; - - const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); - const filter = DocCast(buttons.Filter); - - /** - * The doc of the button in the context menu that corresponds to the current hotkey - * @returns - */ - const myHotKeyDoc = () => { - const hotKeyDocs = DocListCast(filter.data); - return hotKeyDocs.filter(k => StrCast(k.title) === hotKey)[0]; - }; - - /** - * Removes a hotkey from list - */ - const removeHotKey = () => { - Doc.RemoveDocFromList(filter, 'data', myHotKeyDoc()); - }; - - /** - * Deselects if the user clicks outside the button - * @param event - */ - const handleClickOutside = (event: MouseEvent) => { - if (panelRef.current && !panelRef.current.contains(event.target as Node)) { - state.deactivate(); - if (state.isEditing) { - state.stopEditing(); - - updateFromInput(); - } - } - }; - - /** - * Updates the list of hotkeys based on the users input. replaces the old title with the new one and then assigns this new - * hotkey with the current icon - */ - const updateFromInput = undoable(() => { - const myDoc = myHotKeyDoc(); - Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => (k === hotKey ? state.myHotKey : k))); - Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]); - Doc.UserDoc()[hotKey] = ''; - myDoc.title = state.myHotKey; - myDoc.toolTip = `Click to toggle the ${state.myHotKey}'s group's visibility`; - }, ''); - - useEffect(() => { - document.addEventListener('mousedown', handleClickOutside); - return () => { - document.removeEventListener('mousedown', handleClickOutside); - }; - }, []); - - const iconOpts = ['star', 'heart', 'bolt', 'satellite', 'palette', 'robot', 'lightbulb', 'highlighter', 'book', 'chalkboard']; - - /** - * Panel of icons the user can choose from to represent their tag - */ - const iconPanel = iconOpts.map((icon, i) => ( - - )); - - /** - * Actually renders the buttons - */ - - return ( -
{ - e.stopPropagation(); - state.startEditing(); - setTimeout(() => inputRef.current?.focus(), 0); - }}> -
- Click to customize this hotkey's icon
}> - - - {state.isActive &&
{iconPanel}
} -
- {state.isEditing ? ( - state.setHotKey(e.target.value)} - onBlur={() => { - state.stopEditing(); - updateFromInput(); - }} - onKeyDown={e => { - if (e.key === 'Enter') { - state.stopEditing(); - updateFromInput(); - } - }} - className="hotkey-title-input" - /> - ) : ( -

{hotKey.toUpperCase()}

- )} - - - ); -}); diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index 13fef101a..eb434db40 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -326,7 +326,6 @@ export function DefaultStyleProvider(doc: Opt, props: Opt
} closeOnSelect setSelectedVal={((dvValue: unknown) => { @@ -366,12 +365,9 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); }; - const tags = () => props?.DocumentView?.() ? : null; - - const iconTags = () => { - if (doc && doc![DocData].showIconTags) - {return ()} - } + const tags = () => docView?.() ? : null; + const iconTags = () => doc?.[DocData].showIconTags ? : null; + return ( <> {paint()} diff --git a/src/client/views/nodes/FieldView.tsx b/src/client/views/nodes/FieldView.tsx index c269c7bcb..683edba16 100644 --- a/src/client/views/nodes/FieldView.tsx +++ b/src/client/views/nodes/FieldView.tsx @@ -1,5 +1,3 @@ -/* eslint-disable react/no-unused-prop-types */ -/* eslint-disable react/require-default-props */ import { Property } from 'csstype'; import { computed } from 'mobx'; import { observer } from 'mobx-react'; @@ -21,6 +19,7 @@ export type FocusFuncType = (doc: Doc, options: FocusViewOptions) => Opt // eslint-disable-next-line no-use-before-define export type StyleProviderFuncType = ( doc: Opt, + // eslint-disable-next-line no-use-before-define props: Opt, property: string ) => @@ -65,6 +64,7 @@ export interface FieldViewSharedProps { containerViewPath?: () => DocumentView[]; fitContentsToBox?: () => boolean; // used by freeformview to fit its contents to its panel. corresponds to _freeform_fitContentsToBox property on a Document isGroupActive?: () => string | undefined; // is this document part of a group that is active + // eslint-disable-next-line no-use-before-define setContentViewBox?: (view: ViewBoxInterface) => void; // called by rendered field's viewBox so that DocumentView can make direct calls to the viewBox PanelWidth: () => number; PanelHeight: () => number; -- cgit v1.2.3-70-g09d2 From cf13604b06b8d8cf37f6e69f19a4092bf2c29d65 Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 17 Sep 2024 22:12:42 -0400 Subject: from last --- src/client/views/global/globalScripts.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index 2047d658f..d2cee39e2 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -9,11 +9,15 @@ import { BoolCast, Cast, NumCast, StrCast } from '../../../fields/Types'; import { WebField } from '../../../fields/URLField'; import { Gestures } from '../../../pen-gestures/GestureTypes'; import { CollectionViewType, DocumentType } from '../../documents/DocumentTypes'; +import { Docs } from '../../documents/Documents'; import { LinkManager } from '../../util/LinkManager'; import { ScriptingGlobals } from '../../util/ScriptingGlobals'; +import { SnappingManager } from '../../util/SnappingManager'; import { UndoManager, undoable } from '../../util/UndoManager'; import { GestureOverlay } from '../GestureOverlay'; import { InkingStroke } from '../InkingStroke'; +import { MainView } from '../MainView'; +import { PropertiesView } from '../PropertiesView'; import { CollectionFreeFormView } from '../collections/collectionFreeForm'; import { CollectionFreeFormDocumentView } from '../nodes/CollectionFreeFormDocumentView'; import { @@ -35,12 +39,8 @@ import { ImageBox } from '../nodes/ImageBox'; import { VideoBox } from '../nodes/VideoBox'; import { WebBox } from '../nodes/WebBox'; import { RichTextMenu } from '../nodes/formattedText/RichTextMenu'; -// import { InkTranscription } from '../InkTranscription'; -import { Docs } from '../../documents/Documents'; -import { SnappingManager } from '../../util/SnappingManager'; -import { MainView } from '../MainView'; -import { PropertiesView } from '../PropertiesView'; import { GPTPopup, GPTPopupMode } from '../pdf/GPTPopup/GPTPopup'; + // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function IsNoneSelected() { return DocumentView.Selected().length <= 0; -- cgit v1.2.3-70-g09d2 From d95730d904612640184ca6fdc00864b0c81b0c0c Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 18 Sep 2024 20:46:38 -0400 Subject: lots of changes to fix dragging cards, integrate iconTags with other tags, sizing docs when selected to fit window, --- eslint.config.mjs | 1 + src/client/util/CurrentUserUtils.ts | 14 +- src/client/util/DragManager.ts | 3 +- src/client/views/DocumentButtonBar.tsx | 44 ++---- src/client/views/DocumentDecorations.tsx | 4 +- src/client/views/StyleProvider.tsx | 4 - src/client/views/TagsView.tsx | 20 +-- .../views/collections/CollectionCardDeckView.scss | 8 +- .../views/collections/CollectionCardDeckView.tsx | 152 ++++++++++++--------- .../views/collections/CollectionCarouselView.tsx | 1 - .../views/collections/CollectionStackingView.tsx | 3 - src/client/views/collections/CollectionSubView.tsx | 4 +- .../collectionFreeForm/CollectionFreeFormView.tsx | 5 +- src/client/views/nodes/DocumentView.tsx | 5 + src/client/views/nodes/IconTagBox.scss | 24 ++-- src/client/views/nodes/IconTagBox.tsx | 106 +++++++------- .../views/nodes/formattedText/FormattedTextBox.tsx | 1 + src/client/views/search/FaceRecognitionHandler.tsx | 3 +- 18 files changed, 198 insertions(+), 204 deletions(-) (limited to 'src') diff --git a/eslint.config.mjs b/eslint.config.mjs index 8926afd7c..f7063caa5 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -36,6 +36,7 @@ export default [ 'no-multi-assign': 'off', 'no-underscore-dangle': 'off', 'no-nested-ternary': 'off', + 'no-param-reassign': 'error', 'lines-between-class-members': 'off', 'no-shadow': 'off', '@typescript-eslint/no-shadow': 'warn', diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index eee6be937..262916312 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -2,7 +2,7 @@ import { reaction, runInAction } from "mobx"; import * as rp from 'request-promise'; import { ClientUtils, OmitKeys } from "../../ClientUtils"; -import { Doc, DocListCast, DocListCastAsync, FieldType, Opt } from "../../fields/Doc"; +import { Doc, DocListCast, DocListCastAsync, FieldType, Opt, StrListCast } from "../../fields/Doc"; import { DocData } from "../../fields/DocSymbols"; import { InkTool } from "../../fields/InkField"; import { List } from "../../fields/List"; @@ -688,18 +688,18 @@ pie title Minerals in my tap water static tagGroupTools(): Button[] { if (!Doc.UserDoc().activeDashboard) { - Doc.UserDoc().myFilterHotKeyTitles = new List(['Star', 'Heart', 'Bolt', 'Cloud']); + Doc.UserDoc().myFilterHotKeyTitles = new List(['star', 'heart', 'bolt', 'cloud']); - ['Star', 'Heart', 'Bolt', 'Cloud'].forEach(key => { + StrListCast(Doc.UserDoc().myFilterHotKeyTitles).forEach(key => { Doc.UserDoc()[key] = key.toLowerCase(); }); } // hack: if there's no dashboard, create default filters. otherwise, just make sure that the Options button is preserved return (Doc.UserDoc().activeDashboard ? [] : [ - { title: "Star", isSystem: false, icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "Heart", isSystem: false,icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "Bolt", isSystem: false,icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "Cloud", isSystem: false,icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "star", isSystem: false,icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "heart", isSystem: false,icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "bolt", isSystem: false,icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "cloud", isSystem: false,icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, ]).concat([ { title: "Options", isSystem: true,icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} ]) diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts index d55d193cc..81ea840f1 100644 --- a/src/client/util/DragManager.ts +++ b/src/client/util/DragManager.ts @@ -29,7 +29,7 @@ import { dropActionType } from './DropActionTypes'; import { SnappingManager } from './SnappingManager'; import { UndoManager } from './UndoManager'; -// eslint-disable-next-line @typescript-eslint/no-var-requires +// eslint-disable-next-line @typescript-eslint/no-require-imports const { contextMenuZindex } = require('../views/global/globalCssVariables.module.scss'); // prettier-ignore /** @@ -101,7 +101,6 @@ export namespace DragManager { // event called when the drag operation results in a drop action export class DropEvent { - // eslint-disable-next-line no-useless-constructor constructor( readonly x: number, readonly y: number, diff --git a/src/client/views/DocumentButtonBar.tsx b/src/client/views/DocumentButtonBar.tsx index 87dd5f45a..32bf67df1 100644 --- a/src/client/views/DocumentButtonBar.tsx +++ b/src/client/views/DocumentButtonBar.tsx @@ -9,7 +9,7 @@ import * as React from 'react'; import { FaEdit } from 'react-icons/fa'; import { returnFalse, returnTrue, setupMoveUpEvents, simulateMouseClick } from '../../ClientUtils'; import { emptyFunction } from '../../Utils'; -import { Doc } from '../../fields/Doc'; +import { Doc, DocListCast } from '../../fields/Doc'; import { Cast, DocCast } from '../../fields/Types'; import { DocUtils, IsFollowLinkScript } from '../documents/DocUtils'; import { CalendarManager } from '../util/CalendarManager'; @@ -28,7 +28,6 @@ import { DocumentLinksButton } from './nodes/DocumentLinksButton'; import { DocumentView } from './nodes/DocumentView'; import { OpenWhere } from './nodes/OpenWhere'; import { DashFieldView } from './nodes/formattedText/DashFieldView'; -import { DocData } from '../../fields/DocSymbols'; @observer export class DocumentButtonBar extends ObservableReactComponent<{ views: () => (DocumentView | undefined)[]; stack?: unknown }> { @@ -287,44 +286,27 @@ export class DocumentButtonBar extends ObservableReactComponent<{ views: () => ( get keywordButton() { const targetDoc = this.view0?.Document; - const metaBtn = (name: string, icon: IconProp) => { - const tooltip = `Toggle ${name}`; - return ( - {tooltip}}> -
- { - if (name === 'tags') { - targetDoc && (targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags); - } else { - targetDoc && (targetDoc[DocData].showLabels = !targetDoc[DocData].showLabels); - } - }} - /> -
-
- ); - }; - return !targetDoc ? null : (
-
+ {/*
{metaBtn('tags', 'star')} {metaBtn('keywords', 'id-card')} -
+
*/} Open keyword menu
}>
{ - // targetDoc[DocData].showIconTags = !targetDoc[DocData].showIconTags; - }}> + onClick={undoable(e => { + const showing = DocumentView.Selected().some(dv => dv.showTags); + DocumentView.Selected().forEach(dv => { + dv.layoutDoc._layout_showTags = !showing; + if (e.shiftKey) + DocListCast(dv.Document[Doc.LayoutFieldKey(dv.Document) + '_annotations']).forEach(doc => { + if (doc.face) doc.hidden = showing; + }); + }); + }, 'show Doc tags')}>
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 5e7908725..2ba96c2a9 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -837,7 +837,7 @@ export class DocumentDecorations extends ObservableReactComponent 1 ? 0 : `${seldocview.Document._layout_showTags ? 4 + seldocview.TagPanelHeight : 4}px`, + top: DocumentView.Selected().length > 1 ? 0 : `${seldocview.showTags ? 4 + seldocview.TagPanelHeight : 4}px`, transform: `translate(${-this._resizeBorderWidth / 2 + 10}px, ${this._resizeBorderWidth + bounds.b - bounds.y + this._titleHeight}px) `, }}> DocumentView.Selected()} /> @@ -846,7 +846,7 @@ export class DocumentDecorations extends ObservableReactComponent {DocumentView.Selected().length > 1 ? : null} diff --git a/src/client/views/StyleProvider.tsx b/src/client/views/StyleProvider.tsx index eb434db40..3545afcee 100644 --- a/src/client/views/StyleProvider.tsx +++ b/src/client/views/StyleProvider.tsx @@ -9,7 +9,6 @@ import { BsArrowDown, BsArrowDownUp, BsArrowUp } from 'react-icons/bs'; import { FaFilter } from 'react-icons/fa'; import { ClientUtils, DashColor, lightOrDark } from '../../ClientUtils'; import { Doc, Opt, StrListCast } from '../../fields/Doc'; -import { DocData } from '../../fields/DocSymbols'; import { Id } from '../../fields/FieldSymbols'; import { ScriptField } from '../../fields/ScriptField'; import { BoolCast, Cast, DocCast, ImageCast, NumCast, ScriptCast, StrCast } from '../../fields/Types'; @@ -22,7 +21,6 @@ import { TreeSort } from './collections/TreeSort'; import { Colors } from './global/globalEnums'; import { DocumentView, DocumentViewProps } from './nodes/DocumentView'; import { FieldViewProps } from './nodes/FieldView'; -import { IconTagBox } from './nodes/IconTagBox'; import { StyleProp } from './StyleProp'; import './StyleProvider.scss'; import { TagsView } from './TagsView'; @@ -366,7 +364,6 @@ export function DefaultStyleProvider(doc: Opt, props: Opt docView?.() ? : null; - const iconTags = () => doc?.[DocData].showIconTags ? : null; return ( <> @@ -375,7 +372,6 @@ export function DefaultStyleProvider(doc: Opt, props: Opt ); } diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index be2c28185..a678d5580 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -18,6 +18,7 @@ import { ObservableReactComponent } from './ObservableReactComponent'; import './TagsView.scss'; import { DocumentView } from './nodes/DocumentView'; import { FaceRecognitionHandler } from './search/FaceRecognitionHandler'; +import { IconTagBox } from './nodes/IconTagBox'; /** * The TagsView is a metadata input/display panel shown at the bottom of a DocumentView in a freeform collection. @@ -59,7 +60,7 @@ export class TagItem extends ObservableReactComponent { * @param tag tag string * @returns tag collection Doc or undefined */ - public static findTagCollectionDoc = (tag: String) => TagItem.AllTagCollectionDocs.find(doc => doc.title === tag); + public static findTagCollectionDoc = (tag: string) => TagItem.AllTagCollectionDocs.find(doc => doc.title === tag); /** * Creates a Doc that collects Docs with the specified tag / value @@ -148,7 +149,7 @@ export class TagItem extends ObservableReactComponent { private _ref: React.RefObject; - constructor(props: any) { + constructor(props: TagItemProps) { super(props); makeObservable(this); this._ref = React.createRef(); @@ -225,7 +226,7 @@ export class TagItem extends ObservableReactComponent { type="checkbox" onClick={e => e.stopPropagation()} onPointerDown={e => e.stopPropagation()} - onChange={undoable(e => (this.doc[metadata] = !this.doc[metadata]), 'metadata toggle')} + onChange={undoable(() => (this.doc[metadata] = !this.doc[metadata]), 'metadata toggle')} checked={this.doc[metadata] as boolean} /> ) : ( @@ -257,7 +258,7 @@ interface TagViewProps { */ @observer export class TagsView extends ObservableReactComponent { - constructor(props: any) { + constructor(props: TagViewProps) { super(props); makeObservable(this); } @@ -271,7 +272,7 @@ export class TagsView extends ObservableReactComponent { componentDidMount() { this._heightDisposer = reaction( () => this.View.screenToContentsTransform(), - xf => { + () => { this._panelHeightDirty = this._panelHeightDirty + 1; } ); @@ -288,7 +289,7 @@ export class TagsView extends ObservableReactComponent { return this._props.Views.length > 1 ? 1 : Math.max(1, 1 / this.View.screenToLocalScale()); } @computed get isEditing() { - return this._isEditing && (this._props.Views.length > 1 || DocumentView.SelectedDocs().includes(this.View.Document)); + return this._isEditing && (this._props.Views.length > 1 || (DocumentView.Selected().length === 1 && DocumentView.Selected().includes(this.View))); } /** @@ -336,7 +337,7 @@ export class TagsView extends ObservableReactComponent { ); this._panelHeightDirty; - return this.View.ComponentView?.isUnstyledView?.() || (!this.View.Document._layout_showTags && this._props.Views.length === 1) ? null : ( + return this.View.ComponentView?.isUnstyledView?.() || (!this.View.showTags && this._props.Views.length === 1) ? null : (
r && new ResizeObserver(action(() => this._props.Views.length === 1 && (this.View.TagPanelHeight = Math.max(0, (r?.getBoundingClientRect().height ?? 0) - this.InsetDist)))).observe(r)} @@ -352,9 +353,10 @@ export class TagsView extends ObservableReactComponent { }}>
- {!tagsList.size && !facesList.size ? null : ( // + {this._props.Views.length === 1 && !this.View.showTags ? null : ( // this.setToEditing(!this._isEditing)} icon={} /> )} + {Array.from(tagsList).map((tag, i) => ( { />
- {TagItem.AllTagCollectionDocs.map((doc, i) => { + {TagItem.AllTagCollectionDocs.map(doc => { const tag = StrCast(doc.title); return ( - - ))} -
- ); - }; /** * Opens the filter panel in the properties menu @@ -93,13 +50,13 @@ export class IconTagBox extends ObservableReactComponent { }; /** - * Toggles the buttons between on and off when creating custom sort groupings/changing those created by gpt - * @param childPairIndex * @param buttonID * @param doc */ - toggleButton = undoable((doc: Doc, icon: string) => { - BoolCast(doc[icon]) ? (doc[icon] = false) : (doc[icon] = true); + setIconTag = undoable((icon: string, state: boolean) => { + this._props.Views.forEach(view => { + view.dataDoc[icon] = state; + }); }, 'toggle card tag'); /** @@ -112,10 +69,43 @@ export class IconTagBox extends ObservableReactComponent { const isActive = doc[icon.toString()]; const color = isActive ? '#4476f7' : '#323232'; - return ; + return ; }; + /** + * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups + */ render() { - return <>{this.renderButtons(this._props.doc)}; + const amButtons = StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length + 1; + + const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); + + const iconMap = (buttonID: number) => { + return StrCast(Doc.UserDoc()[keys[buttonID]]) as IconProp; + }; + const buttons = numberRange(amButtons - 1) + .filter(i => this._props.IsEditing || this.View.Document[iconMap(i).toString()] || (DocumentView.Selected.length === 1 && this.View.IsSelected)) + .map(i => ( + Click to add/remove this card from the {iconMap(i).toString()} group
}> + + + )); + return !buttons.length ? null : ( +
+ {buttons} +
+ ); } } diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index 343e255dc..e0331a422 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -275,6 +275,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent 1; - imgDocFaceDescriptions.forEach((fd, i) => { + imgDocFaceDescriptions.forEach(fd => { const faceDescriptor = new List(Array.from(fd.descriptor)); const matchedUniqueFace = this.findMatchingFaceDoc(fd.descriptor) ?? this.createUniqueFaceDoc(activeDashboard); const faceAnno = Docs.Create.FreeformDocument([], { -- cgit v1.2.3-70-g09d2 From cc09a9e9015bbcbeec68ccdc574b5250d35a4e8f Mon Sep 17 00:00:00 2001 From: bobzel Date: Wed, 18 Sep 2024 21:16:03 -0400 Subject: carddeck tweak to heuristic to keep Docs selected docs inset within window. tweak to layout of Docs to make arc apex based on grid Doc widths. --- src/client/views/collections/CollectionCardDeckView.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index 1952cc707..e95a6fb97 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -208,11 +208,12 @@ export class CollectionCardView extends CollectionSubView() { translateY = (amCards: number, index: number, realIndex: number) => { const evenOdd = amCards % 2; const apex = (amCards - evenOdd) / 2; - const stepMag = 200 / ((amCards - evenOdd) / 2) + Math.abs((apex - index) * 25); + const Magnitude = this.childPanelWidth() / 2; // 400 + const stepMag = Magnitude / 2 / ((amCards - evenOdd) / 2) + Math.abs((apex - index) * 25); let rowOffset = 0; if (realIndex > this._maxRowCount - 1) { - rowOffset = 400 * ((realIndex - (realIndex % this._maxRowCount)) / this._maxRowCount); + rowOffset = Magnitude * ((realIndex - (realIndex % this._maxRowCount)) / this._maxRowCount); } if (evenOdd === 1 || index < apex - 1) { return Math.abs(stepMag * (apex - index)) - rowOffset; @@ -475,9 +476,7 @@ export class CollectionCardView extends CollectionSubView() { const rowToCenterShift = this.numRows / 2 - rowIndex; if (isSelected) return rowToCenterShift * rowHeight - rowHeight / 2; if (amCards == 1) return 50 * this.fitContentScale; - // const trans = isHovered ? this.translateHover(realIndex) : 0; - const trans = 0; - return trans + this.translateY(amCards, calcRowIndex, realIndex); + return this.translateY(amCards, calcRowIndex, realIndex); }; /** @@ -638,7 +637,8 @@ export class CollectionCardView extends CollectionSubView() { return (rowCenterIndex - indexInRow) * 100 - 50; }; const aspect = NumCast(doc.height) / NumCast(doc.width, 1); - const vscale = ((this._props.PanelHeight() * .95) * this.fitContentScale) / (aspect * this.childPanelWidth()); + const vscale = Math.min((this._props.PanelHeight() * 0.95 * this.fitContentScale) / (aspect * this.childPanelWidth()), + (this._props.PanelHeight() - 80) / (aspect * (this._props.PanelWidth() / 10))); // prettier-ignore const hscale = this._maxRowCount / 2; // bcz: hack - the grid is divided evenly into maxRowCount cells, so the max scaling would be maxRowCount -- but making things that wide is ugly, so cap it off at half the window size return (
Date: Wed, 18 Sep 2024 23:51:55 -0400 Subject: switched icontags to use regular tags list instead of metadata fields. changed tagsView to show # for tags, @ for metadata, and no prefix for icons --- src/client/views/TagsView.tsx | 50 +++++++++++++--------- src/client/views/nodes/IconTagBox.tsx | 7 ++- .../views/nodes/formattedText/RichTextRules.ts | 2 +- 3 files changed, 36 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index a678d5580..5a47be705 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -9,7 +9,7 @@ import { emptyFunction } from '../../Utils'; import { Doc, DocListCast, Field, Opt, StrListCast } from '../../fields/Doc'; import { DocData } from '../../fields/DocSymbols'; import { List } from '../../fields/List'; -import { DocCast, StrCast } from '../../fields/Types'; +import { DocCast, NumCast, StrCast } from '../../fields/Types'; import { DocumentType } from '../documents/DocumentTypes'; import { DragManager } from '../util/DragManager'; import { SnappingManager } from '../util/SnappingManager'; @@ -28,8 +28,8 @@ import { IconTagBox } from './nodes/IconTagBox'; * the user can drag them off in order to display a collection of all documents that share the tag value. * * The tags that are added using the panel are the same as the #tags that can entered in a text Doc. - * Note that tags starting with #@ display a metadata key/value pair instead of the tag itself. - * e.g., '#@author' shows the document author + * Note that tags starting with @ display a metadata key/value pair instead of the tag itself. + * e.g., '@author' shows the document author * */ @@ -83,6 +83,9 @@ export class TagItem extends ObservableReactComponent { */ public static allDocsWithTag = (tag: string) => DocListCast(TagItem.findTagCollectionDoc(tag)?.[DocData].docs); + public static docHasTag = (doc: Doc, tag: string) => { + return StrListCast(doc.tags).includes(tag); + }; /** * Adds a tag to the metadata of this document and adds the Doc to the corresponding tag collection Doc (or creates it) * @param tag tag string @@ -214,13 +217,12 @@ export class TagItem extends ObservableReactComponent { render() { this._props.tagDoc && setTimeout(() => this._props.docs.forEach(doc => TagItem.addTagToDoc(doc, this._props.tag))); // bcz: hack to make sure that Docs are added to their tag Doc collection since metadata can get set anywhere without a guard triggering an add to the collection - const tag = this._props.tag.replace(/^#/, ''); - const metadata = tag.startsWith('@') ? tag.replace(/^@/, '') : ''; + const metadata = this._props.tag.startsWith('@') ? this._props.tag.replace(/^@/, '') : ''; return (
{metadata ? ( - {tag}  + {'@' + metadata}  {typeof this.doc[metadata] === 'boolean' ? ( { )} ) : ( - tag + this._props.tag )} {this.props.showRemoveUI && this._props.tagDoc && ( { return this._props.Views.lastElement(); } + // x: 1 => 1/vs 0 => 1 1/(vs - (1-x)*(vs-1)) @computed get currentScale() { - return this._props.Views.length > 1 ? 1 : Math.max(1, 1 / this.View.screenToLocalScale()); + if (this._props.Views.length > 1) return 1; + const x = NumCast(this.View.Document.height) / this.View.screenToContentsTransform().Scale / 80; + const xscale = x >= 1 ? 0 : 1 / (1 + x * (this.View.screenToLocalScale() - 1)); //docheight / this.View.screenToContentsTransform().Scale / 35 / this.View.screenToLocalScale() - ; + const y = NumCast(this.View.Document.width) / this.View.screenToContentsTransform().Scale / 200; + const yscale = y >= 1 ? 0 : 1 / (1 + y * (this.View.screenToLocalScale() - 1)); //docheight / this.View.screenToContentsTransform().Scale / 35 / this.View.screenToLocalScale() - ; + return Math.max(xscale, yscale, 1 / this.View.screenToLocalScale()); } @computed get isEditing() { return this._isEditing && (this._props.Views.length > 1 || (DocumentView.Selected().length === 1 && DocumentView.Selected().includes(this.View))); @@ -313,7 +321,7 @@ export class TagsView extends ObservableReactComponent { const submittedLabel = tag.trim().replace(/^#/, '').split(':'); if (submittedLabel[0]) { this._props.Views.forEach(view => { - TagItem.addTagToDoc(view.Document, '#' + submittedLabel[0]); + TagItem.addTagToDoc(view.Document, (submittedLabel[0].startsWith('@') ? '' : '#') + submittedLabel[0]); if (submittedLabel.length > 1) Doc.SetField(view.Document, submittedLabel[0].replace(/^@/, ''), ':' + submittedLabel[1]); }); } @@ -357,16 +365,18 @@ export class TagsView extends ObservableReactComponent { this.setToEditing(!this._isEditing)} icon={} /> )} - {Array.from(tagsList).map((tag, i) => ( - view.Document)} - tag={tag} - tagDoc={TagItem.findTagCollectionDoc(tag) ?? TagItem.createTagCollectionDoc(tag)} - setToEditing={this.setToEditing} - showRemoveUI={this.isEditing} - /> - ))} + {Array.from(tagsList) + .filter(tag => tag.startsWith('#') || tag.startsWith('@')) + .map((tag, i) => ( + view.Document)} + tag={tag} + tagDoc={TagItem.findTagCollectionDoc(tag) ?? TagItem.createTagCollectionDoc(tag)} + setToEditing={this.setToEditing} + showRemoveUI={this.isEditing} + /> + ))} {Array.from(facesList).map((tag, i) => ( view.Document)} tag={tag} tagDoc={undefined} setToEditing={this.setToEditing} showRemoveUI={this.isEditing} /> ))} @@ -390,7 +400,7 @@ export class TagsView extends ObservableReactComponent { />
- {TagItem.AllTagCollectionDocs.map(doc => { + {TagItem.AllTagCollectionDocs.filter(doc => StrCast(doc.title).startsWith('#') || StrCast(doc.title).startsWith('@')).map(doc => { const tag = StrCast(doc.title); return ( -- cgit v1.2.3-70-g09d2 From e9167b125a59ff08b5d75691500d80359ebb4d41 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 19 Sep 2024 10:42:41 -0400 Subject: fixed setting rotation center. fixed not dropping docs onto themselves. --- eslint.config.mjs | 2 +- src/client/views/DocumentDecorations.tsx | 4 ++-- src/client/views/collections/CollectionSubView.tsx | 2 +- src/client/views/nodes/formattedText/FormattedTextBox.tsx | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/eslint.config.mjs b/eslint.config.mjs index 8926afd7c..706a5ac09 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -47,7 +47,7 @@ export default [ 'no-return-assign': 'error', 'no-await-in-loop': 'error', 'no-loop-func': 'error', - 'no-cond-assign': 'error', + '@typescript-eslint/no-cond-assign': 'error', 'no-use-before-define': 'error', '@typescript-eslint/no-explicit-any': 'error', 'no-restricted-globals': ['error', 'event'], diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index 5e7908725..33022fa81 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -340,7 +340,7 @@ export class DocumentDecorations extends ObservableReactComponent { const selDoc = seldocview.Document; - const newloccentern = seldocview.screenToContentsTransform().transformPoint(rotCenter[0], rotCenter[1]); + const newloccentern = seldocview.screenToViewTransform().transformPoint(rotCenter[0], rotCenter[1]); const newlocenter = [newloccentern[0] - NumCast(seldocview.layoutDoc._width) / 2, newloccentern[1] - NumCast(seldocview.layoutDoc._height) / 2]; const final = Utils.rotPt(newlocenter[0], newlocenter[1], -(NumCast(seldocview.Document._rotation) / 180) * Math.PI); selDoc._rotation_centerX = final.x / NumCast(seldocview.layoutDoc._width); @@ -635,7 +635,7 @@ export class DocumentDecorations extends ObservableReactComponent() { protected onInternalDrop(e: Event, de: DragManager.DropEvent): boolean { const { docDragData } = de.complete; - if (docDragData) { + if (docDragData && !docDragData.draggedDocuments.includes(this.Document)) { let added; const dropAction = docDragData.dropAction || docDragData.userDropAction; const targetDocments = DocListCast(this.dataDoc[this._props.fieldKey]); diff --git a/src/client/views/nodes/formattedText/FormattedTextBox.tsx b/src/client/views/nodes/formattedText/FormattedTextBox.tsx index 343e255dc..7287e2b9f 100644 --- a/src/client/views/nodes/formattedText/FormattedTextBox.tsx +++ b/src/client/views/nodes/formattedText/FormattedTextBox.tsx @@ -561,7 +561,7 @@ export class FormattedTextBox extends ViewBoxAnnotatableComponent; const dropAction = dragData.dropAction || dragData.userDropAction; - if ([AclEdit, AclAdmin, AclSelfEdit].includes(effectiveAcl)) { + if ([AclEdit, AclAdmin, AclSelfEdit].includes(effectiveAcl) && !dragData.draggedDocuments.includes(this.Document)) { // replace text contents when dragging with Alt if (de.altKey) { const fieldKey = Doc.LayoutFieldKey(draggedDoc); -- cgit v1.2.3-70-g09d2 From cab1c358fc27b9ae4263cf4736b0e493ce28f4e2 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 19 Sep 2024 10:59:35 -0400 Subject: fixed background transparency for images --- src/client/views/nodes/ImageBox.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index be3525544..aa4376bb2 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -368,7 +368,8 @@ export class ImageBox extends ViewBoxAnnotatableComponent() { TraceMobx(); const backColor = DashColor((this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.BackgroundColor) as string) ?? Colors.WHITE); - const backAlpha = backColor.red() === 0 && backColor.green() === 0 && backColor.blue() === 0 ? backColor.alpha() : 1; + // allow use case where the image is transparent when the alpha value is to smallest possible value from UI (alpha = 1 out of 255) + const backAlpha = backColor.alpha() < 0.015 && backColor.alpha() > 0 ? backColor.alpha() : 1; const srcpath = this.layoutDoc.hideImage ? '' : this.paths[0]; const fadepath = this.layoutDoc.hideImage ? '' : this.paths.lastElement(); const { nativeWidth, nativeHeight /* , nativeOrientation */ } = this.nativeSize; -- cgit v1.2.3-70-g09d2 From 3c8af89e3d5370b748fea27c411b3e62758b9a45 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 19 Sep 2024 17:50:48 -0400 Subject: changed backend for filtering buttons to store only one list - the list of icon buttons in Doc.MyFilterHotKeys. --- src/client/util/CurrentUserUtils.ts | 85 +++++++++----------- src/client/views/FilterPanel.tsx | 86 ++++++++++---------- src/client/views/PropertiesView.tsx | 2 +- src/client/views/TagsView.tsx | 55 ++++++------- .../views/collections/CollectionCardDeckView.tsx | 27 +++---- src/client/views/global/globalScripts.ts | 18 +++-- src/client/views/nodes/FontIconBox/FontIconBox.tsx | 4 +- src/client/views/nodes/IconTagBox.tsx | 91 ++++++++-------------- src/fields/Doc.ts | 8 +- 9 files changed, 168 insertions(+), 208 deletions(-) (limited to 'src') diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts index 262916312..21df0fd3b 100644 --- a/src/client/util/CurrentUserUtils.ts +++ b/src/client/util/CurrentUserUtils.ts @@ -671,38 +671,33 @@ pie title Minerals in my tap water } static cardTools(): Button[] { return [ - { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Tags", icon:"bolt", toolTip:"Sort by document's tags", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"tag", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Pile", icon:"layer-group", toolTip:"View the cards as a pile in the free form view !", btnType: ButtonType.ClickButton, expertMode: false, toolType:"pile", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, - { title: "Chat Popup", icon:"lightbulb", toolTip:"Toggle the chat popup's visibility!", width: 45 ,btnType: ButtonType.ToggleButton, expertMode: false, toolType:"toggle-chat", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, + { title: "Time", icon:"hourglass-half", toolTip:"Sort by most recent document creation", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"time", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Type", icon:"eye", toolTip:"Sort by document type", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"docType", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Color", icon:"palette", toolTip:"Sort by document color", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"color", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Tags", icon:"bolt", toolTip:"Sort by document's tags", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"tag", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Pile", icon:"layer-group", toolTip:"View the cards as a pile in the free form view!",btnType: ButtonType.ClickButton, expertMode: false, toolType:"pile", funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'}}, + { title: "Chat Popup",icon:"lightbulb", toolTip:"Toggle the chat popup's visibility!", width: 45, btnType: ButtonType.ToggleButton, expertMode: false, toolType:"toggle-chat",funcs: {}, scripts: { onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, - { title: "Sort", toolTip: "Manage sort order / lock status", icon: "sort" , btnType: ButtonType.MultiToggleButton, toolType:"alignment", ignoreClick: true, + { title: "Sort", icon: "sort" , toolTip: "Manage sort order / lock status", btnType: ButtonType.MultiToggleButton, toolType:"alignment", ignoreClick: true, subMenu: [ - { title: "Ascending", toolTip: "Sort the cards in ascending order", btnType: ButtonType.ToggleButton, icon: "sort-up", toolType:"up", ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}' }}, - { title: "Descending", toolTip: "Sort the cards in descending order",btnType: ButtonType.ToggleButton, icon: "sort-down",toolType:"down",ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, + { title: "Ascending", toolTip: "Sort the cards in ascending order", btnType: ButtonType.ToggleButton, icon: "sort-up", toolType:"up", ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, + { title: "Descending",toolTip: "Sort the cards in descending order",btnType: ButtonType.ToggleButton, icon: "sort-down",toolType:"down",ignoreClick: true, scripts: {onClick: '{ return showFreeform(this.toolType, _readOnly_);}'} }, ]}, ] } static tagGroupTools(): Button[] { - if (!Doc.UserDoc().activeDashboard) { - Doc.UserDoc().myFilterHotKeyTitles = new List(['star', 'heart', 'bolt', 'cloud']); - - StrListCast(Doc.UserDoc().myFilterHotKeyTitles).forEach(key => { - Doc.UserDoc()[key] = key.toLowerCase(); - }); -} + const defaultTagButtonDescs = [ + { title: "Star", isSystem: false,icon: "star", toolTip:"Click to toggle visibility of Star tagged Docs", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"#star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Like", isSystem: false,icon: "heart", toolTip:"Click to toggle visibility of Like tagged Docs", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"#like", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Todo", isSystem: false,icon: "bolt", toolTip:"Click to toggle visibility of Todo tagged Docs", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"#todo", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + { title: "Idea", isSystem: false,icon: "cloud", toolTip:"Click to toggle visibility of Idea tagged Docs", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"#idea", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + ]; // hack: if there's no dashboard, create default filters. otherwise, just make sure that the Options button is preserved - return (Doc.UserDoc().activeDashboard ? [] : [ - { title: "star", isSystem: false,icon: "star", toolTip:"Click to toggle the star group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"star", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "heart", isSystem: false,icon: "heart", toolTip:"Click to toggle the heart group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"heart", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "bolt", isSystem: false,icon: "bolt", toolTip:"Click to toggle the bolt group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"bolt", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - { title: "cloud", isSystem: false,icon: "cloud", toolTip:"Click to toggle the cloud group's visibility", btnType: ButtonType.ToggleButton, expertMode: false, toolType:"cloud", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, - ]).concat([ - { title: "Options", isSystem: true,icon: "gear", toolTip:"Click to customize your filter panel", btnType: ButtonType.ClickButton, expertMode: false, toolType:"opts", funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}} - ]) + return [ + { title:"Options",isSystem: true,icon: "gear", toolTip:"Click to customize list of filter buttons", btnType: ButtonType.ClickButton, expertMode: false, toolType:"-opts-",funcs: {}, scripts: { onClick: '{ return handleTags(this.toolType, _readOnly_);}'}}, + ...(Doc.UserDoc().activeDashboard ? [] : defaultTagButtonDescs) + ] } static viewTools(): Button[] { return [ @@ -720,8 +715,8 @@ pie title Minerals in my tap water { title: "Font", toolTip: "Font", width: 100, btnType: ButtonType.DropdownList, toolType:"font", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, btnList: new List(["Roboto", "Roboto Mono", "Nunito", "Times New Roman", "Arial", "Georgia", "Comic Sans MS", "Tahoma", "Impact", "Crimson Text"]) }, { title: "Font Size",toolTip: "Font size (%size)", btnType: ButtonType.NumberDropdownButton, toolType:"fontSize", ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}, numBtnMax: 200, numBtnMin: 6 }, - { title: "Color", toolTip: "Font color (%color)", btnType: ButtonType.ColorButton, icon: "font", toolType:"fontColor",ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}}, - { title: "Highlight",toolTip: "Font highlight", btnType: ButtonType.ColorButton, icon: "highlighter", toolType:"highlight",ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'}}, + { title: "Color", toolTip: "Font color (%color)", btnType: ButtonType.ColorButton, icon: "font", toolType:"fontColor",ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'} }, + { title: "Highlight",toolTip: "Font highlight", btnType: ButtonType.ColorButton, icon: "highlighter", toolType:"highlight",ignoreClick: true, scripts: {script: '{ return setFontAttr(this.toolType, value, _readOnly_);}'} }, { title: "Bold", toolTip: "Bold (Ctrl+B)", btnType: ButtonType.ToggleButton, icon: "bold", toolType:"bold", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, { title: "Italic", toolTip: "Italic (Ctrl+I)", btnType: ButtonType.ToggleButton, icon: "italic", toolType:"italics", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, { title: "Under", toolTip: "Underline (Ctrl+U)", btnType: ButtonType.ToggleButton, icon: "underline", toolType:"underline",ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, @@ -730,12 +725,12 @@ pie title Minerals in my tap water { title: "Vcenter", toolTip: "Vertical center", btnType: ButtonType.ToggleButton, icon: "pallet", toolType:"vcent", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, { title: "Align", toolTip: "Alignment", btnType: ButtonType.MultiToggleButton, toolType:"alignment", ignoreClick: true, subMenu: [ - { title: "Left", toolTip: "Left align (Cmd-[)", btnType: ButtonType.ToggleButton, icon: "align-left", toolType:"left", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}' }}, + { title: "Left", toolTip: "Left align (Cmd-[)", btnType: ButtonType.ToggleButton, icon: "align-left", toolType:"left", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, { title: "Center", toolTip: "Center align (Cmd-\\)",btnType: ButtonType.ToggleButton, icon: "align-center",toolType:"center",ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, { title: "Right", toolTip: "Right align (Cmd-])", btnType: ButtonType.ToggleButton, icon: "align-right", toolType:"right", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, ]}, - { title: "Elide", toolTip: "Elide selection", btnType: ButtonType.ToggleButton, icon: "eye", toolType:"elide", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'}}, - { title: "Dictate", toolTip: "Dictate", btnType: ButtonType.ToggleButton, icon: "microphone", toolType:"dictation", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'}}, + { title: "Elide", toolTip: "Elide selection", btnType: ButtonType.ToggleButton, icon: "eye", toolType:"elide", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, + { title: "Dictate", toolTip: "Dictate", btnType: ButtonType.ToggleButton, icon: "microphone", toolType:"dictation", ignoreClick: true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'} }, { title: "NoLink", toolTip: "Auto Link", btnType: ButtonType.ToggleButton, icon: "link", toolType:"noAutoLink", expertMode:true, scripts: {onClick: '{ return toggleCharStyle(this.toolType, _readOnly_);}'}, funcs: {hidden: 'IsNoviceMode()'}}, // { title: "Strikethrough", tooltip: "Strikethrough", btnType: ButtonType.ToggleButton, icon: "strikethrough", scripts: {onClick:: 'toggleStrikethrough()'}}, // { title: "Superscript", tooltip: "Superscript", btnType: ButtonType.ToggleButton, icon: "superscript", scripts: {onClick:: 'toggleSuperscript()'}}, @@ -806,26 +801,20 @@ pie title Minerals in my tap water { title: "Num", icon:"", toolTip: "Frame # (click to toggle edit mode)",btnType: ButtonType.TextButton, expertMode: true, toolType:CollectionViewType.Freeform, funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)', buttonText: 'selectedDocs()?.lastElement()?.currentFrame?.toString()'}, width: 20, scripts: { onClick: '{ return curKeyFrame(_readOnly_);}'}}, { title: "Fwd", icon: "chevron-right", toolTip: "Next Animation Frame", btnType: ButtonType.ClickButton, expertMode: true, toolType:CollectionViewType.Freeform, funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, width: 30, scripts: { onClick: 'nextKeyFrame(_readOnly_)'}}, + { title: "Text", icon: "Text", toolTip: "Text functions", subMenu: CurrentUserUtils.textTools(), expertMode: false, toolType:DocumentType.RTF, funcs: { linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + { title: "Ink", icon: "Ink", toolTip: "Ink functions", subMenu: CurrentUserUtils.inkTools(), expertMode: false, toolType:DocumentType.INK, funcs: {hidden: `IsExploreMode()`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`}, scripts: { onClick: 'setInkToolDefaults()'} }, // Always available + { title: "Doc", icon: "Doc", toolTip: "Freeform Doc tools", subMenu: CurrentUserUtils.freeTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode, true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + { title: "View", icon: "View", toolTip: "View tools", subMenu: CurrentUserUtils.viewTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + { title: "Stack", icon: "View", toolTip: "Stacking tools", subMenu: CurrentUserUtils.stackTools(), expertMode: false, toolType:CollectionViewType.Stacking, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - - { title: "Text", icon: "Text", toolTip: "Text functions", subMenu: CurrentUserUtils.textTools(), expertMode: false, toolType:DocumentType.RTF, funcs: { linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - { title: "Ink", icon: "Ink", toolTip: "Ink functions", subMenu: CurrentUserUtils.inkTools(), expertMode: false, toolType:DocumentType.INK, funcs: {hidden: `IsExploreMode()`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`}, scripts: { onClick: 'setInkToolDefaults()'} }, // Always available - { title: "Doc", icon: "Doc", toolTip: "Freeform Doc tools", subMenu: CurrentUserUtils.freeTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode, true)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - { title: "View", icon: "View", toolTip: "View tools", subMenu: CurrentUserUtils.viewTools(), expertMode: false, toolType:CollectionViewType.Freeform, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - { title: "Stack", icon: "View", toolTip: "Stacking tools", subMenu: CurrentUserUtils.stackTools(), expertMode: false, toolType:CollectionViewType.Stacking, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - - { title: "Card", icon: "Card", toolTip: "Card View Tools", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - // { title: "Create", icon: "Create", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available - { title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Web is selected - { title: "Video", icon: "Video", toolTip: "Video functions", subMenu: CurrentUserUtils.videoTools(), expertMode: false, toolType:DocumentType.VID, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when video is selected - { title: "Image", icon: "Image", toolTip: "Image functions", subMenu: CurrentUserUtils.imageTools(), expertMode: false, toolType:DocumentType.IMG, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when image is selected - { title: "Schema", icon: "Schema",linearBtnWidth:58,toolTip: "Schema functions",subMenu: CurrentUserUtils.schemaTools(),expertMode: false,toolType:CollectionViewType.Schema,funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Schema is selected - { title: "Filter", icon:"=", toolTip:"Filter cards by tags", btnType: ButtonType.MultiToggleButton, width: 150, ignoreClick: true,toolType:DocumentType.COL, - subMenu: this.tagGroupTools(), funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, - - }, - ]; - + { title: "Card", icon: "Card", toolTip: "Card View Tools", subMenu: CurrentUserUtils.cardTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + // { title: "Create", icon: "Create", toolTip: "Assign card labels", subMenu: CurrentUserUtils.labelTools(), expertMode: false, toolType:CollectionViewType.Card, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Always available + { title: "Web", icon: "Web", toolTip: "Web functions", subMenu: CurrentUserUtils.webTools(), expertMode: false, toolType:DocumentType.WEB, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when Web is selected + { title: "Video", icon: "Video", toolTip: "Video functions", subMenu: CurrentUserUtils.videoTools(), expertMode: false, toolType:DocumentType.VID, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when video is selected + { title: "Image", icon: "Image", toolTip: "Image functions", subMenu: CurrentUserUtils.imageTools(), expertMode: false, toolType:DocumentType.IMG, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`} }, // Only when image is selected + { title: "Schema", icon: "Schema", toolTip: "Schema functions", subMenu: CurrentUserUtils.schemaTools(), expertMode: false, toolType:CollectionViewType.Schema, funcs: {hidden: `!SelectedDocType(this.toolType, this.expertMode)`, linearView_IsOpen: `SelectedDocType(this.toolType, this.expertMode)`}, linearBtnWidth:58 }, // Only when Schema is selected + { title: "Filter", icon: "=", toolTip: "Filter cards by tags", subMenu: CurrentUserUtils.tagGroupTools(),ignoreClick:true, toolType:DocumentType.COL, funcs: {hidden: '!SelectedDocType(this.toolType, this.expertMode)'}, btnType: ButtonType.MultiToggleButton, width: 150}, + ]; } /// initializes a context menu button for the top bar context menu diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index b6bea1d4b..a3c8fc383 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -26,7 +26,7 @@ import { ObservableReactComponent } from './ObservableReactComponent'; import { IconProp } from '@fortawesome/fontawesome-svg-core'; interface HotKeyButtonProps { - hotKey: string; + hotKey: Doc; selected?: Doc; } @@ -53,7 +53,7 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel this.isEditing = false; }, setHotKey(newHotKey: string) { - this.myHotKey = newHotKey; + this.myHotKey.title = newHotKey; }, })); @@ -64,24 +64,13 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel state.toggleActive(); }; - const hotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); - const filter = DocCast(buttons.Filter); - - /** - * The doc of the button in the context menu that corresponds to the current hotkey - * @returns - */ - const myHotKeyDoc = () => { - const hotKeyDocs = DocListCast(filter.data); - return hotKeyDocs.filter(k => StrCast(k.title) === hotKey)[0]; - }; /** * Removes a hotkey from list */ const removeHotKey = () => { - Doc.RemoveDocFromList(filter, 'data', myHotKeyDoc()); + Doc.RemFromFilterHotKeys(hotKey); }; /** @@ -89,11 +78,8 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel * hotkey with the current icon */ const updateFromInput = undoable(() => { - const myDoc = myHotKeyDoc(); - Doc.UserDoc().myFilterHotKeyTitles = new List(hotKeys.map(k => (k === hotKey ? state.myHotKey : k))); - Doc.UserDoc()[state.myHotKey] = StrCast(Doc.UserDoc()[hotKey]); - myDoc.title = state.myHotKey; - myDoc.toolTip = `Click to toggle the ${state.myHotKey}'s group's visibility`; + hotKey.title = StrCast(state.myHotKey.title); + hotKey.toolTip = `Click to toggle the ${StrCast(hotKey.title)}'s group's visibility`; }, ''); /** @@ -123,13 +109,12 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel /** * Panel of icons the user can choose from to represent their tag */ - const iconPanel = iconOpts.map((icon, i) => ( + const iconPanel = iconOpts.map(icon => ( {state.isActive &&
{iconPanel}
} @@ -166,7 +151,7 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel state.setHotKey(e.target.value)} onBlur={() => { state.stopEditing(); @@ -181,13 +166,12 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel className="hotkey-title-input" /> ) : ( -

{hotKey.toUpperCase()}

+

{StrCast(hotKey.title).toUpperCase()}

)}
}> + Click to customize this hotkey's icon
}> )); @@ -561,6 +541,22 @@ export class FilterPanel extends ObservableReactComponent {
); }); + case 'togglebox': + return ( +
+ filter.split(Doc.FilterSep)[0] === 'tags' && filter.split(Doc.FilterSep)[1] === facetHeader) + ?.split(Doc.FilterSep)[2] ?? '' + )} + type={'checkbox'} + onChange={undoable(e => Doc.setDocFilter(this.Document, 'tags', facetHeader, e.target.checked ? 'check' : 'remove'), 'set filter')} + /> + -set- +
+ ); case 'range': { diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx index e940ba6f9..f3221d005 100644 --- a/src/client/views/PropertiesView.tsx +++ b/src/client/views/PropertiesView.tsx @@ -1176,7 +1176,7 @@ export class PropertiesView extends ObservableReactComponent { this.openFilters = bool; }} onDoubleClick={this.CloseAll}> + { this.openFilters = bool; })} onDoubleClick={this.CloseAll}>
diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index cae30218c..2f30edb80 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -371,26 +371,20 @@ export class TagsView extends ObservableReactComponent { style={{ width: '8px' }} tooltip="Close Menu" onPointerDown={e => - setupMoveUpEvents( - this, - e, - returnFalse, - emptyFunction, - upEv => { - this.setToEditing(!this._isEditing); - upEv.stopPropagation(); - } - ) + setupMoveUpEvents(this, e, returnFalse, emptyFunction, upEv => { + this.setToEditing(!this._isEditing); + upEv.stopPropagation(); + }) } icon={} /> )} {Array.from(tagsList) - .filter(tag => tag.startsWith('#') || tag.startsWith('@')) - .map((tag, i) => ( + .filter(tag => (tag.startsWith('#') || tag.startsWith('@')) && !Doc.MyFilterHotKeys.some(key => key.toolType === tag)) + .map(tag => ( view.Document)} tag={tag} tagDoc={TagItem.findTagCollectionDoc(tag) ?? TagItem.createTagCollectionDoc(tag)} @@ -398,8 +392,8 @@ export class TagsView extends ObservableReactComponent { showRemoveUI={this.isEditing} /> ))} - {Array.from(facesList).map((tag, i) => ( - view.Document)} tag={tag} tagDoc={undefined} setToEditing={this.setToEditing} showRemoveUI={this.isEditing} /> + {Array.from(facesList).map(tag => ( + view.Document)} tag={tag} tagDoc={undefined} setToEditing={this.setToEditing} showRemoveUI={this.isEditing} /> ))} {this.isEditing ? ( @@ -421,9 +415,9 @@ export class TagsView extends ObservableReactComponent { />
- {TagItem.AllTagCollectionDocs.filter(doc => StrCast(doc.title).startsWith('#') || StrCast(doc.title).startsWith('@')).map(doc => { - const tag = StrCast(doc.title); - return ( + {TagItem.AllTagCollectionDocs.map(doc => StrCast(doc.title)) + .filter(tag => (tag.startsWith('#') || tag.startsWith('@')) && !Doc.MyFilterHotKeys.some(key => key.toolType === tag)) + .map(tag => (
) : null} diff --git a/src/client/views/collections/CollectionCardDeckView.tsx b/src/client/views/collections/CollectionCardDeckView.tsx index cab7d51e4..bcb42111f 100644 --- a/src/client/views/collections/CollectionCardDeckView.tsx +++ b/src/client/views/collections/CollectionCardDeckView.tsx @@ -328,24 +328,22 @@ export class CollectionCardView extends CollectionSubView() { */ tagValue = (doc: Doc) => { - const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); + const keys = Doc.MyFilterHotKeys; - const isTagActive = (buttonID: number) => { - return BoolCast(doc[StrCast(Doc.UserDoc()[keys[buttonID]])]); - }; + const isTagActive = (key: Doc) => BoolCast(key.active); let base = ''; let fraction = ''; - for (let i = 0; i < keys.length; i++) { - if (isTagActive(i)) { + keys.forEach(key => { + if (isTagActive(key)) { if (base === '') { - base = i.toString(); // First active tag becomes the base + base = StrCast(key.toolType); // First active tag becomes the base } else { - fraction += i.toString(); // Subsequent active tags become part of the fraction + fraction += StrCast(key.toolType); // Subsequent active tags become part of the fraction } } - } + }); // If no tag was active, return 0 by default if (base === '') { @@ -553,17 +551,16 @@ export class CollectionCardView extends CollectionSubView() { doc.chatIndex = index; break; case '1': { - const allHotKeys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); + const allHotKeys = Doc.MyFilterHotKeys; let myTag = ''; if (tag) { for (let i = 0; i < allHotKeys.length; i++) { - if (tag.includes(allHotKeys[i])) { - myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]); - break; - } else if (tag.includes(StrCast(Doc.UserDoc()[allHotKeys[i]]))) { - myTag = StrCast(Doc.UserDoc()[allHotKeys[i]]); + // bcz: CHECK THIS CODE OUT -- SOMETHING CHANGED + const keyTag = StrCast(allHotKeys[i].toolType); + if (tag.includes(keyTag)) { + myTag = keyTag; break; } } diff --git a/src/client/views/global/globalScripts.ts b/src/client/views/global/globalScripts.ts index d2cee39e2..f7a9689c9 100644 --- a/src/client/views/global/globalScripts.ts +++ b/src/client/views/global/globalScripts.ts @@ -270,27 +270,29 @@ ScriptingGlobals.add(function showFreeform(attr: 'hcenter' | 'vcenter' | 'grid' }); /** - * Applies a filter to the selected document (or, if the settins button is pressed, opens the filter panel) + * Applies a filter to the selected document (or, if the settings button is pressed, opens the filter panel) */ // eslint-disable-next-line prefer-arrow-callback ScriptingGlobals.add(function handleTags(value: string, checkResult?: boolean) { const selected = DocumentView.SelectedDocs().lastElement(); + const isOptions = value === '-opts-'; - function isAttrFiltered(attr: string) { - return StrListCast(selected._childFilters).some(filter => filter.includes(attr)); - } + const isAttrFiltered = (attr: string) => + StrListCast(selected._childFilters) + .map(filter => filter.split(Doc.FilterSep)) + .some(([key, val]) => key === 'tags' && val === attr); if (checkResult) { - return value === 'opts' ? PropertiesView.Instance?.openFilters : isAttrFiltered(value); + return isOptions ? false : isAttrFiltered(value); } - if (value != 'opts') { - isAttrFiltered(value) ? Doc.setDocFilter(selected, value, true, 'remove') : Doc.setDocFilter(selected, value, true, 'match'); + if (!isOptions) { + isAttrFiltered(value) ? Doc.setDocFilter(selected, 'tags', value, 'remove') : Doc.setDocFilter(selected, 'tags', value, 'check'); } else { SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? 250 : 0); PropertiesView.Instance?.CloseAll(); - PropertiesView.Instance.openFilters = true; + runInAction(() => (PropertiesView.Instance.openFilters = SnappingManager.PropertiesWidth > 5)); } return undefined; diff --git a/src/client/views/nodes/FontIconBox/FontIconBox.tsx b/src/client/views/nodes/FontIconBox/FontIconBox.tsx index f53a7d163..0e4288574 100644 --- a/src/client/views/nodes/FontIconBox/FontIconBox.tsx +++ b/src/client/views/nodes/FontIconBox/FontIconBox.tsx @@ -267,6 +267,8 @@ export class FontIconBox extends ViewBoxBaseComponent() { const color = this._props.styleProvider?.(this.layoutDoc, this._props, StyleProp.Color) as string; const items = DocListCast(this.dataDoc.data); const multiDoc = this.Document; + const selectedItem = StrCast(items.find(itemDoc => ScriptCast(itemDoc.onClick).script.run({ this: itemDoc, value: undefined, _readOnly_: true }).result)?.toolType ?? StrCast(multiDoc.toolType)); + console.log(selectedItem); return ( () { tooltip: StrCast(item.toolTip), val: StrCast(item.toolType), }))} - selectedVal={StrCast(items.find(itemDoc => ScriptCast(itemDoc.onClick).script.run({ this: itemDoc, value: undefined, _readOnly_: true }).result)?.toolType ?? StrCast(multiDoc.toolType))} + selectedVal={selectedItem} setSelectedVal={(val: string | number) => { const itemDoc = items.find(item => item.toolType === val); itemDoc && ScriptCast(itemDoc.onClick).script.run({ this: itemDoc, value: val, _readOnly_: false }); diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index 70992e28a..01dca0fbb 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -1,21 +1,21 @@ import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Tooltip } from '@mui/material'; -import { computed } from 'mobx'; +import { action, computed, makeObservable } from 'mobx'; import { observer } from 'mobx-react'; import React from 'react'; -import { emptyFunction, numberRange } from '../../../Utils'; -import { Doc, StrListCast } from '../../../fields/Doc'; +import { returnFalse, setupMoveUpEvents } from '../../../ClientUtils'; +import { emptyFunction } from '../../../Utils'; +import { Doc } from '../../../fields/Doc'; import { StrCast } from '../../../fields/Types'; import { SnappingManager } from '../../util/SnappingManager'; import { undoable } from '../../util/UndoManager'; import { MainView } from '../MainView'; import { ObservableReactComponent } from '../ObservableReactComponent'; import { PropertiesView } from '../PropertiesView'; +import { TagItem } from '../TagsView'; import { DocumentView } from './DocumentView'; import './IconTagBox.scss'; -import { TagItem } from '../TagsView'; -import { returnFalse, setupMoveUpEvents } from '../../../ClientUtils'; export interface IconTagProps { Views: DocumentView[]; @@ -30,48 +30,36 @@ export interface IconTagProps { export class IconTagBox extends ObservableReactComponent { constructor(props: IconTagProps) { super(props); + makeObservable(this); } - @computed get View() { - return this._props.Views.lastElement(); - } - @computed get currentScale() { - return this.View?.screenToLocalScale(); - } + @computed get View() { return this._props.Views.lastElement(); } // prettier-ignore + @computed get currentScale() { return this.View?.screenToLocalScale(); } // prettier-ignore /** - * Opens the filter panel in the properties menu + * Sets or removes the specified tag + * @param tag tag name (should begin with '#') + * @param state flag to add or remove the metadata */ - - openHotKeyMenu = () => { - SnappingManager.PropertiesWidth < 5 && SnappingManager.SetPropertiesWidth(0); - SnappingManager.SetPropertiesWidth(MainView.Instance.propertiesWidth() < 15 ? 250 : 0); - - PropertiesView.Instance.CloseAll(); - PropertiesView.Instance.openFilters = true; - }; - - /** - * @param buttonID - * @param doc - */ - setIconTag = undoable((icon: string, state: boolean) => { + setIconTag = undoable((tag: string, state: boolean) => { this._props.Views.forEach(view => { - state && TagItem.addTagToDoc(view.dataDoc, icon); - !state && TagItem.removeTagFromDoc(view.dataDoc, icon); - view.dataDoc[icon] = state; + state && TagItem.addTagToDoc(view.dataDoc, tag); + !state && TagItem.removeTagFromDoc(view.dataDoc, tag); }); }, 'toggle card tag'); /** - * Determines whether or not the given icon is active depending on the doc's data - * @param doc - * @param icon - * @returns + * Returns a renderable version of the button Doc that is colorized to indicate + * whether the doc has the associated tag set on it or not. + * @param doc doc to test + * @param key metadata icon button + * @returns an icon for the metdata button */ - getButtonIcon = (doc: Doc, icon: IconProp): JSX.Element => { - const isActive = TagItem.docHasTag(doc, icon.toString()); // doc[icon.toString()]; - const color = isActive ? '#4476f7' : '#323232'; + getButtonIcon = (doc: Doc, key: Doc): JSX.Element => { + const icon = StrCast(key.icon) as IconProp; + const tag = StrCast(key.toolType); + const isActive = TagItem.docHasTag(doc, tag); + const color = isActive ? '#4476f7' : '#323232'; // TODO should use theme colors return ; }; @@ -80,37 +68,26 @@ export class IconTagBox extends ObservableReactComponent { * Renders the buttons to customize sorting depending on which group the card belongs to and the amount of total groups */ render() { - const amButtons = StrListCast(Doc.UserDoc().myFilterHotKeyTitles).length + 1; - - const keys = StrListCast(Doc.UserDoc().myFilterHotKeyTitles); - - const iconMap = (buttonID: number) => { - return StrCast(Doc.UserDoc()[keys[buttonID]]) as IconProp; - }; - const buttons = numberRange(amButtons - 1) - .filter(i => this._props.IsEditing || this.View.Document[iconMap(i).toString()] || (DocumentView.Selected.length === 1 && this.View.IsSelected)) - .map(i => ( - Click to add/remove this card from the {iconMap(i).toString()} group}> + const buttons = Doc.MyFilterHotKeys + .map(key => ({ key, tag: StrCast(key.toolType) })) + .filter(({ tag }) => this._props.IsEditing || this.View.Document[tag] || (DocumentView.Selected.length === 1 && this.View.IsSelected)) + .map(({ key, tag }) => ( + Click to add/remove this card from the {tag} group}> - )); + )); // prettier-ignore + return !buttons.length ? null : ( -
+
{buttons}
); diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts index 7abba7679..f6b7708b3 100644 --- a/src/fields/Doc.ts +++ b/src/fields/Doc.ts @@ -256,7 +256,13 @@ export class Doc extends RefField { public static set ActivePresentation(val) { Doc.ActiveDashboard && (Doc.ActiveDashboard.activePresentation = val) } // prettier-ignore public static get ActiveDashboard() { return DocCast(Doc.UserDoc().activeDashboard); } // prettier-ignore public static set ActiveDashboard(val: Opt) { Doc.UserDoc().activeDashboard = val; } // prettier-ignore - + public static get MyFilterHotKeys() { return DocListCast(DocCast(DocCast(Doc.UserDoc().myContextMenuBtns)?.Filter)?.data).filter(key => key.toolType !== "-opts-"); } // prettier-ignore + public static RemFromFilterHotKeys(doc: Doc) { + return Doc.RemoveDocFromList(DocCast(DocCast(Doc.UserDoc().myContextMenuBtns)?.Filter), 'data', doc); + } + public static AddToFilterHotKeys(doc: Doc) { + return Doc.AddDocToList(DocCast(DocCast(Doc.UserDoc().myContextMenuBtns)?.Filter), 'data', doc); + } public static IsInMyOverlay(doc: Doc) { return Doc.MyOverlayDocs.includes(doc); } // prettier-ignore public static AddToMyOverlay(doc: Doc) { return Doc.ActiveDashboard ? Doc.AddDocToList(Doc.ActiveDashboard, 'myOverlayDocs', doc) : Doc.AddDocToList(DocCast(Doc.UserDoc().myOverlayDocs), undefined, doc); } // prettier-ignore public static RemFromMyOverlay(doc: Doc) { return Doc.ActiveDashboard ? Doc.RemoveDocFromList(Doc.ActiveDashboard,'myOverlayDocs', doc) : Doc.RemoveDocFromList(DocCast(Doc.UserDoc().myOverlayDocs), undefined, doc); } // prettier-ignore -- cgit v1.2.3-70-g09d2 From 302b9ab98001a50ca2117df823216a99b7c25869 Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 19 Sep 2024 20:03:49 -0400 Subject: changed carousel to set #star tags instead of a metaadata field. --- src/client/views/FilterPanel.tsx | 41 +++++----------------- src/client/views/TagsView.tsx | 2 +- .../views/collections/CollectionCarouselView.tsx | 10 ++++-- 3 files changed, 17 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/client/views/FilterPanel.tsx b/src/client/views/FilterPanel.tsx index a3c8fc383..e34b66963 100644 --- a/src/client/views/FilterPanel.tsx +++ b/src/client/views/FilterPanel.tsx @@ -40,38 +40,17 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel isEditing: false, myHotKey: hotKey, - toggleActive() { - this.isActive = !this.isActive; - }, - deactivate() { - this.isActive = false; - }, - startEditing() { - this.isEditing = true; - }, - stopEditing() { - this.isEditing = false; - }, - setHotKey(newHotKey: string) { - this.myHotKey.title = newHotKey; - }, - })); + toggleActive() { this.isActive = !this.isActive; }, + deactivate() { this.isActive = false; }, + startEditing() { this.isEditing = true; }, + stopEditing() { this.isEditing = false; }, + setHotKey(newHotKey: string) { this.myHotKey.title = newHotKey; }, + })); // prettier-ignore const panelRef = useRef(null); const inputRef = useRef(null); - const handleClick = () => { - state.toggleActive(); - }; - - const buttons = DocCast(Doc.UserDoc().myContextMenuBtns); - - /** - * Removes a hotkey from list - */ - const removeHotKey = () => { - Doc.RemFromFilterHotKeys(hotKey); - }; + const handleClick = () => state.toggleActive(); /** * Updates the list of hotkeys based on the users input. replaces the old title with the new one and then assigns this new @@ -99,9 +78,7 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel useEffect(() => { document.addEventListener('mousedown', handleClickOutside); - return () => { - document.removeEventListener('mousedown', handleClickOutside); - }; + return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const iconOpts = ['star', 'heart', 'bolt', 'satellite', 'palette', 'robot', 'lightbulb', 'highlighter', 'book', 'chalkboard'] as IconProp[]; @@ -172,7 +149,7 @@ const HotKeyIconButton: React.FC = observer(({ hotKey /*, sel className="hotKey-close" onClick={(e: React.MouseEvent) => { e.stopPropagation(); - removeHotKey(); + Doc.RemFromFilterHotKeys(hotKey); }}> diff --git a/src/client/views/TagsView.tsx b/src/client/views/TagsView.tsx index 2f30edb80..f44fd1d03 100644 --- a/src/client/views/TagsView.tsx +++ b/src/client/views/TagsView.tsx @@ -85,7 +85,7 @@ export class TagItem extends ObservableReactComponent { public static allDocsWithTag = (tag: string) => DocListCast(TagItem.findTagCollectionDoc(tag)?.[DocData].docs); public static docHasTag = (doc: Doc, tag: string) => { - return StrListCast(doc.tags).includes(tag); + return StrListCast(doc?.tags).includes(tag); }; /** * Adds a tag to the metadata of this document and adds the Doc to the corresponding tag collection Doc (or creates it) diff --git a/src/client/views/collections/CollectionCarouselView.tsx b/src/client/views/collections/CollectionCarouselView.tsx index 4609be374..974cd3e36 100644 --- a/src/client/views/collections/CollectionCarouselView.tsx +++ b/src/client/views/collections/CollectionCarouselView.tsx @@ -14,6 +14,7 @@ import { FieldViewProps } from '../nodes/FieldView'; import { FormattedTextBox } from '../nodes/formattedText/FormattedTextBox'; import './CollectionCarouselView.scss'; import { CollectionSubView, SubCollectionViewProps } from './CollectionSubView'; +import { TagItem } from '../TagsView'; enum cardMode { PRACTICE = 'practice', @@ -28,7 +29,7 @@ enum practiceVal { export class CollectionCarouselView extends CollectionSubView() { private _dropDisposer?: DragManager.DragDropDisposer; get practiceField() { return this.fieldKey + "_practice"; } // prettier-ignore - get starField() { return "star"; } // prettier-ignore + get starField() { return "#star"; } // prettier-ignore _fadeTimer: NodeJS.Timeout | undefined; _resetter: IReactionDisposer | undefined; @@ -108,7 +109,10 @@ export class CollectionCarouselView extends CollectionSubView() { star = (e: React.MouseEvent) => { e.stopPropagation(); const curDoc = this.carouselItems[this.carouselIndex]; - curDoc && (curDoc[this.starField] = curDoc[this.starField] ? undefined : true); + if (curDoc) { + if (TagItem.docHasTag(curDoc, this.starField)) TagItem.removeTagFromDoc(curDoc, this.starField); + else TagItem.addTagToDoc(curDoc, this.starField); + } }; /* @@ -241,7 +245,7 @@ export class CollectionCarouselView extends CollectionSubView() {
- +
this.setPracticeVal(e, practiceVal.MISSED)} style={{ visibility: this.layoutDoc.filterOp === cardMode.PRACTICE ? 'visible' : 'hidden' }}> -- cgit v1.2.3-70-g09d2 From cf7216aec2fd61bc7de43240586532b5d54e7d8b Mon Sep 17 00:00:00 2001 From: bobzel Date: Thu, 19 Sep 2024 20:29:30 -0400 Subject: from last --- src/client/views/nodes/IconTagBox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/client/views/nodes/IconTagBox.tsx b/src/client/views/nodes/IconTagBox.tsx index 01dca0fbb..292f9b523 100644 --- a/src/client/views/nodes/IconTagBox.tsx +++ b/src/client/views/nodes/IconTagBox.tsx @@ -70,7 +70,7 @@ export class IconTagBox extends ObservableReactComponent { render() { const buttons = Doc.MyFilterHotKeys .map(key => ({ key, tag: StrCast(key.toolType) })) - .filter(({ tag }) => this._props.IsEditing || this.View.Document[tag] || (DocumentView.Selected.length === 1 && this.View.IsSelected)) + .filter(({ tag }) => this._props.IsEditing || TagItem.docHasTag(this.View.Document, tag) || (DocumentView.Selected.length === 1 && this.View.IsSelected)) .map(({ key, tag }) => ( Click to add/remove this card from the {tag} group
}>