From 0b350f976a4767c7b1a9ad996bab6e3bcce65a53 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Thu, 28 Nov 2024 13:22:19 -0800 Subject: [PATCH 01/20] Set up basic files --- .gitignore | 4 + .streamlit/config.toml | 6 - app.py | 90 ++++++++ assets/__base.css | 415 +++++++++++++++++++++++++++++++++++ assets/__demo_variables.css | 45 ++++ assets/__style_guide.css | 168 ++++++++++++++ assets/_buttons.css | 46 ++++ assets/_collapse.css | 109 +++++++++ assets/_slider.css | 98 +++++++++ assets/_tabs.css | 60 +++++ assets/demo.css | 57 +++++ assets/favicon.ico | Bin 0 -> 31633 bytes demo_callbacks.py | 168 ++++++++++++++ demo_configs.py | 80 +++++++ demo_interface.py | 425 ++++++++++++++++++++++++++++++++++++ requirements.txt | 2 +- src/demo_enums.py | 31 +++ static/demo.png | Bin 0 -> 221173 bytes static/dwave_logo.svg | 1 + 19 files changed, 1798 insertions(+), 7 deletions(-) create mode 100644 .gitignore delete mode 100644 .streamlit/config.toml create mode 100644 app.py create mode 100644 assets/__base.css create mode 100644 assets/__demo_variables.css create mode 100644 assets/__style_guide.css create mode 100644 assets/_buttons.css create mode 100644 assets/_collapse.css create mode 100644 assets/_slider.css create mode 100644 assets/_tabs.css create mode 100644 assets/demo.css create mode 100644 assets/favicon.ico create mode 100644 demo_callbacks.py create mode 100644 demo_configs.py create mode 100644 demo_interface.py create mode 100644 src/demo_enums.py create mode 100644 static/demo.png create mode 100644 static/dwave_logo.svg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..905bf08 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.DS_Store +__pycache__ +cache +assets/__generated_theme.css diff --git a/.streamlit/config.toml b/.streamlit/config.toml deleted file mode 100644 index ebb1bcf..0000000 --- a/.streamlit/config.toml +++ /dev/null @@ -1,6 +0,0 @@ -[theme] -base="light" -font="sans serif" - -[browser] -gatherUsageStats = false diff --git a/app.py b/app.py new file mode 100644 index 0000000..5bd63cc --- /dev/null +++ b/app.py @@ -0,0 +1,90 @@ +# Copyright 2024 D-Wave +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import argparse + +import dash +import diskcache +from dash import DiskcacheManager + +from demo_configs import APP_TITLE, THEME_COLOR, THEME_COLOR_SECONDARY +from demo_interface import create_interface + +# Essential for initializing callbacks. Do not remove. +import demo_callbacks + +# Fix Dash long callbacks crashing on macOS 10.13+ (also potentially not working +# on other POSIX systems), caused by https://bugs.python.org/issue33725 +# (aka "beware of multithreaded process forking"). +# +# Note: default start method has already been changed to "spawn" on darwin in +# the `multiprocessing` library, but its fork, `multiprocess` still hasn't caught up. +# (see docs: https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods) +import multiprocess + +if multiprocess.get_start_method(allow_none=True) is None: + multiprocess.set_start_method("spawn") + +cache = diskcache.Cache("./cache") +background_callback_manager = DiskcacheManager(cache) + +app = dash.Dash( + __name__, + meta_tags=[{"name": "viewport", "content": "width=device-width, initial-scale=1"}], + prevent_initial_callbacks="initial_duplicate", + background_callback_manager=background_callback_manager, +) +app.title = APP_TITLE + +app.config.suppress_callback_exceptions = True + +# Parse debug argument +parser = argparse.ArgumentParser(description="Dash debug setting.") +parser.add_argument( + "--debug", + action="store_true", + help="Add argument to see Dash debug menu and get live reload updates while developing.", +) + +args = parser.parse_args() +DEBUG = args.debug + +print(f"\nDebug has been set to: {DEBUG}") +if not DEBUG: + print( + "The app will not show live code updates and the Dash debug menu will be hidden.", + "If editting code while the app is running, run the app with `python app.py --debug`.\n", + sep="\n", + ) + +# Generates css file and variable using THEME_COLOR and THEME_COLOR_SECONDARY settings +css = f"""/* Automatically generated theme settings css file, see app.py */ +:root {{ + --theme: {THEME_COLOR}; + --theme-secondary: {THEME_COLOR_SECONDARY}; +}} +""" +with open("assets/__generated_theme.css", "w") as f: + f.write(css) + + +if __name__ == "__main__": + # Imports the Dash HTML code and sets it in the app. + # Creates the visual layout and app (see `demo_interface.py`) + app.layout = create_interface() + + # Run the server + app.run_server(debug=DEBUG) diff --git a/assets/__base.css b/assets/__base.css new file mode 100644 index 0000000..1eaa980 --- /dev/null +++ b/assets/__base.css @@ -0,0 +1,415 @@ +/* +This file is forked from apps/dash-clinical-analytics/assets/base.css +under the following license + +MIT License + +Copyright (c) 2019 Plotly + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Modifications are licensed under + +Apache License, Version 2.0 +(see ./LICENSE for details) + +*/ + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; } + .column, + .columns { + width: 100%; + float: left; + box-sizing: border-box; } + + /* For devices larger than 400px */ + @media (min-width: 400px) { + .container { + width: 85%; + padding: 0; } + } + + /* For devices larger than 550px */ + @media (min-width: 550px) { + .container { + width: 80%; } + .column, + .columns { + margin-left: 2%; } + .column:first-child, + .columns:first-child { + margin-left: 1%; } + + .one.column, + .one.columns { width: 4.66666666667%; } + .two.columns { width: 13.3333333333%; } + .three.columns { width: 22%; } + .four.columns { width: 30.6666666667%; } + .five.columns { width: 39.3333333333%; } + .six.columns { width: 48%; } + .seven.columns { width: 56.6666666667%; } + .eight.columns { width: 65.3333333333%; } + .nine.columns { width: 74.0%; } + .ten.columns { width: 82.6666666667%; } + .eleven.columns { width: 91.3333333333%; } + .twelve.columns { width: 100%; margin-left: 0; } + + .one-third.column { width: 30.6666666667%; } + .two-thirds.column { width: 65.3333333333%; } + + .one-half.column { width: 48%; } + + /* Offsets */ + .offset-by-one.column, + .offset-by-one.columns { margin-left: 8.66666666667%; } + .offset-by-two.column, + .offset-by-two.columns { margin-left: 17.3333333333%; } + .offset-by-three.column, + .offset-by-three.columns { margin-left: 26%; } + .offset-by-four.column, + .offset-by-four.columns { margin-left: 34.6666666667%; } + .offset-by-five.column, + .offset-by-five.columns { margin-left: 43.3333333333%; } + .offset-by-six.column, + .offset-by-six.columns { margin-left: 52%; } + .offset-by-seven.column, + .offset-by-seven.columns { margin-left: 60.6666666667%; } + .offset-by-eight.column, + .offset-by-eight.columns { margin-left: 69.3333333333%; } + .offset-by-nine.column, + .offset-by-nine.columns { margin-left: 78.0%; } + .offset-by-ten.column, + .offset-by-ten.columns { margin-left: 86.6666666667%; } + .offset-by-eleven.column, + .offset-by-eleven.columns { margin-left: 95.3333333333%; } + + .offset-by-one-third.column, + .offset-by-one-third.columns { margin-left: 34.6666666667%; } + .offset-by-two-thirds.column, + .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } + + .offset-by-one-half.column, + .offset-by-one-half.columns { margin-left: 52%; } + + } + + + /* Base Styles + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + /* NOTE + html is set to 62.5% so that all the REM measurements throughout Skeleton + are based on 10px sizing. So basically 1.5rem = 15px :) */ + html { + font-size: 62.5%; } + body { + font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ + line-height: 1.6; + font-weight: 400; + font-family: "Open Sans", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: rgb(50, 50, 50); } + + + /* Typography + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0; + font-weight: 300; } + h1 { font-size: 4.5rem; line-height: 1.2; letter-spacing: -.1rem; margin-bottom: 2rem; } + h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; margin-bottom: 1.8rem; margin-top: 1.8rem;} + h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; margin-bottom: 1.5rem; margin-top: 1.5rem;} + h4 { font-size: 2.6rem; line-height: 1.35; letter-spacing: -.08rem; margin-bottom: 1.2rem; margin-top: 1.2rem;} + h5 { font-size: 2.2rem; line-height: 1.5; letter-spacing: -.05rem; margin-bottom: 0.6rem; margin-top: 0.6rem;} + h6 { font-size: 2.0rem; line-height: 1.6; letter-spacing: 0; margin-bottom: 0.75rem; margin-top: 0.75rem;} + + p { + margin-top: 0; } + + + /* Blockquotes + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + blockquote { + border-left: 4px lightgrey solid; + padding-left: 1rem; + margin-top: 2rem; + margin-bottom: 2rem; + margin-left: 0rem; + } + + + /* Links + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + a { + color: #1EAEDB; + text-decoration: underline; + cursor: pointer;} + a:hover { + color: #0FA0CE; } + + + /* Buttons + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + .button, + button, + input[type="button"] { + display: inline-block; + height: 38px; + padding: 0 30px; + color: white; + text-align: center; + font-size: 11px; + font-weight: 600; + line-height: 38px; + letter-spacing: .1rem; + text-transform: uppercase; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border-radius: 4px; + border: 1px solid #bbb; + cursor: pointer; + box-sizing: border-box; + background-color: #2a7de1 ; + } + .button:hover, + button:hover, + + input[type="button"]:hover, + .button:focus, + button:focus, + input[type="submit"]:focus, + input[type="reset"]:focus, + input[type="button"]:focus { + color: white; + border-color: #888; + outline: 0; + background-color: #074c91; + + } + .button.button-primary, + button.button-primary, + input[type="submit"].button-primary, + input[type="reset"].button-primary, + input[type="button"].button-primary { + color: #EEEEEE; + background-color: #33C3F0; + } + .button.button-primary:hover, + button.button-primary:hover, + input[type="submit"].button-primary:hover, + input[type="reset"].button-primary:hover, + input[type="button"].button-primary:hover, + .button.button-primary:focus, + button.button-primary:focus, + input[type="submit"].button-primary:focus, + input[type="reset"].button-primary:focus, + input[type="button"].button-primary:focus { + color: #FFF; + background-color: #1EAEDB; + border-color: #1EAEDB; } + + + /* Forms + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + input[type="email"], + input[type="number"], + input[type="search"], + input[type="text"], + input[type="tel"], + input[type="url"], + input[type="password"], + textarea, + select { + height: 38px; + padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ + background-color: #fff; + border: 1px solid #D1D1D1; + border-radius: 4px; + box-shadow: none; + box-sizing: border-box; + font-family: inherit; + font-size: inherit; /*https://stackoverflow.com/questions/6080413/why-doesnt-input-inherit-the-font-from-body*/} + /* Removes awkward default styles on some inputs for iOS */ + input[type="email"], + input[type="number"], + input[type="search"], + input[type="text"], + input[type="tel"], + input[type="url"], + input[type="password"], + textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } + textarea { + min-height: 65px; + padding-top: 6px; + padding-bottom: 6px; } + input[type="email"]:focus, + input[type="number"]:focus, + input[type="search"]:focus, + input[type="text"]:focus, + input[type="tel"]:focus, + input[type="url"]:focus, + input[type="password"]:focus, + textarea:focus, + /*select:focus {*/ + /* border: 1px solid #33C3F0;*/ + /* outline: 0; }*/ + label, + legend { + display: block; + margin-bottom: 0px; } + fieldset { + padding: 0; + border-width: 0; } + input[type="checkbox"], + input[type="radio"] { + display: inline; } + label > .label-body { + display: inline-block; + margin-left: .5rem; + font-weight: normal; } + + + /* Lists + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + ul { + list-style: circle inside; } + ol { + list-style: decimal inside; } + ol, ul { + padding-left: 0; + margin-top: 0; } + ul ul, + ul ol, + ol ol, + ol ul { + margin: 1.5rem 0 1.5rem 3rem; + font-size: 90%; } + li { + margin-bottom: 1rem; } + + + /* Tables + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + table { + border-collapse: collapse; + } + th, + td { + padding: 12px 15px; + text-align: left; + border-bottom: 1px solid #E1E1E1; } + th:first-child, + td:first-child { + padding-left: 0; } + th:last-child, + td:last-child { + padding-right: 0; } + + + /* Spacing + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + button, + .button { + margin-bottom: 0rem; } + input, + textarea, + select, + fieldset { + margin-bottom: 0rem; } + pre, + dl, + figure, + table, + form { + margin-bottom: 0rem; } + p, + ul, + ol { + margin-bottom: 0.75rem; } + + /* Utilities + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + .u-full-width { + width: 100%; + box-sizing: border-box; } + .u-max-full-width { + max-width: 100%; + box-sizing: border-box; } + .u-pull-right { + float: right; } + .u-pull-left { + float: left; } + + + /* Misc + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #E1E1E1; } + + + /* Clearing + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + + /* Self Clearing Goodness */ + .container:after, + .row:after, + .u-cf { + content: ""; + display: table; + clear: both; } + + + /* Media Queries + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + /* + Note: The best way to structure the use of media queries is to create the queries + near the relevant code. For example, if you wanted to change the styles for buttons + on small devices, paste the mobile query code up in the buttons section and style it + there. + */ + + + /* Larger than mobile */ + @media (min-width: 400px) {} + + /* Larger than phablet (also point when grid becomes active) */ + @media (min-width: 550px) {} + + /* Larger than tablet */ + @media (min-width: 750px) {} + + /* Larger than desktop */ + @media (min-width: 1000px) {} + + /* Larger than Desktop HD */ + @media (min-width: 1200px) {} diff --git a/assets/__demo_variables.css b/assets/__demo_variables.css new file mode 100644 index 0000000..372d7dc --- /dev/null +++ b/assets/__demo_variables.css @@ -0,0 +1,45 @@ +/* +Copyright 2024 D-Wave + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Variable declarations for all CSS files. +Some additional variables are generated automatically in app.py +and stored in __generated_theme.css. + +Dash reads all css files contained in `/assets/` so no imports are necessary. +*/ + +:root { + --blue-bright: #03B8FF; + --blue-light: #2A7DE1; + --blue-dark: #074C91; + --red-light: #C70039; + --red-dark: #900C3F; + --orange: #FF7006; + --teal-light: #06ECDC; + --teal-dark: #17BEBB; + --teal-darker: #008C82; + --grey-lighter: #EEEEEE; + --grey-light: #DDDDDD; + --grey: #AAAAAA; + --grey-medium: #777777; + --grey-dark: #222222; + --font: "Helvetica Neue", sans-serif; + --banner-height: 5.5rem; + --left-col-width: 42rem; + --problem-details-height: 8rem; + /*** Add new variables here ***/ +} diff --git a/assets/__style_guide.css b/assets/__style_guide.css new file mode 100644 index 0000000..f949118 --- /dev/null +++ b/assets/__style_guide.css @@ -0,0 +1,168 @@ +/* +Copyright 2024 D-Wave + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* A custom base of style rules defined specifically for the demos */ + +body { + background-color: #f9f9f9; + color: var(--grey-dark); + font-size: 1.4rem; + margin: 0; +} + +h1, h2, h3, h4, h5, h6, td, th, +span, a, p, label, button, input { + font-family: var(--font); +} + +h1, h2, h3, h4, h5, h6 { + color: var(--theme); + font-weight: 400; +} + +h1 { + font-size: 3.2rem; +} + +h2 { + font-size: 2.6rem; +} + +h3 { + font-size: 2.4rem; +} + +h4 { + font-size: 2rem; + margin-top: 0; + font-weight: 500; +} + +h5 { + font-size: 1.8rem; + font-weight: 600; +} + +label { + margin: 2rem 0 0.2rem; + font-weight: 500; +} + +hr { + margin: 1rem 0; +} + +table { + margin-bottom: 2rem; + font-size: 1.5rem; + border: 1px solid var(--grey-light); +} + +th, td { + color: var(--grey-dark); + padding: 0.5rem 1rem; + border-right: 1px solid var(--grey-light); +} + +th:first-child, td:first-child { + padding-left: 1.2rem; +} + +th:last-child, td:last-child { + padding-right: 1.2rem; +} + +input[type="checkbox"], +input[type="radio"] { + accent-color: var(--theme); + margin: 0 0.6rem 0 0; +} + +.display-none { + display: none; +} + +#app-container { + min-width: 100rem; + height: 100vh; + display: flex; + flex-direction: column; +} + +.banner { + height: var(--banner-height); + box-sizing: border-box; + background-color: var(--theme); + padding: 1.4rem 2rem; + + display: flex; + align-items: center; + justify-content: space-between; +} + +.banner img { + height: 100%; +} + +.columns-main { + display: flex; + flex: 1; +} + +.left-column { + display: flex; + height: calc(100vh - var(--banner-height)); +} + +.right-column { + background-color: var(--grey-light); + padding: 2rem 0 0; + width: 100%; +} + +.settings { + margin: 2rem 0; +} + +.radio label, +.checklist label { + margin-top: 0.2rem; + font-weight: 400; +} + +.radio--inline label:first-child, +.checklist--inline label:first-child { + margin-right: 1.4rem; +} + +/* The following rules are overwriting Dash styling */ +.VirtualizedSelectFocusedOption { + background-color: var(--grey-lighter); +} + +.is-focused:not(.is-open) > .Select-control { + border-color: var(--theme-secondary); + box-shadow: none; +} + +.Select { + font-family: var(--font); +} + +div.dash-sk-circle { + height: 6rem; + width: 6rem; +} diff --git a/assets/_buttons.css b/assets/_buttons.css new file mode 100644 index 0000000..46bb2a7 --- /dev/null +++ b/assets/_buttons.css @@ -0,0 +1,46 @@ +/* +Copyright 2024 D-Wave + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* Style rules for buttons */ + +button { + font-size: 1.4rem; + line-height: 1.4rem; + padding: 1.8rem 3.6rem; + height: auto; + color: white; + transition: all 0.2s ease-in-out; + border: none; + background-color: var(--theme); +} + +button:hover { + filter: brightness(80%); + color: white; +} + +#run-button, +#cancel-button { + width: 100%; +} + +#cancel-button { + background-color: var(--red-light); +} + +#cancel-button:hover { + background-color: var(--red-dark); +} diff --git a/assets/_collapse.css b/assets/_collapse.css new file mode 100644 index 0000000..f6549dc --- /dev/null +++ b/assets/_collapse.css @@ -0,0 +1,109 @@ +/* +Copyright 2024 D-Wave + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* Style rules for collapsible dropdowns like left-column-collapse and problem-details-collapse */ + +.left-column .left-column-layer-1 { + width: var(--left-col-width); + transition: width 0.6s ease-in-out; + overflow-x: hidden; + overflow-y: auto; + direction: rtl; +} + +.details-to-collapse { + height: var(--problem-details-height); + transition: height 0.6s ease-in-out; + overflow: hidden; +} + +.left-column .left-column-layer-2 { + padding: 3rem 2rem 4rem; + width: var(--left-col-width); + box-sizing: border-box; + direction: ltr; +} + +.details-collapse-wrapper { + margin-bottom: 2rem; + overflow: hidden; +} + +.left-column-collapse, +.left-column-collapse:hover, +.left-column-collapse:focus { + background: white; + border-right: 1px solid var(--grey-lighter); + height: 100%; + border-radius: 0; + padding: 0 0 0 0.5rem; + filter: none; + display: block; +} + +.details-collapse, +.details-collapse:hover, +.details-collapse:focus { + background: none; + display: flex; + padding: 0 2rem 0 0; + text-transform: none; +} + +.collapse-arrow { + border-right: 4px solid var(--grey-light); + border-bottom: 4px solid var(--grey-light); + transform: rotate(135deg) skew(165deg, 165deg); + height: 2rem; + width: 2rem; + margin-right: -0.3rem; + transition: border-color 0.25s ease-in-out; +} + +.details-collapse .collapse-arrow { + transform: rotate(225deg) skew(165deg, 165deg); + margin: 1.5rem 0 0 1.5rem; + border-color: var(--theme); + height: 1.2rem; + width: 1.2rem; +} + +.left-column-collapse:hover .collapse-arrow { + border-color: var(--grey); +} + +.collapsed .left-column-collapse { + padding: 0 0.5rem 0 0; +} + +.collapsed .left-column-collapse .collapse-arrow { + margin-left: -0.3rem; + margin-right: 0; + transform: rotate(315deg) skew(165deg, 165deg); +} + +.collapsed .details-collapse .collapse-arrow { + margin-top: 1rem; + transform: rotate(45deg) skew(165deg, 165deg); +} + +.collapsed .details-to-collapse { + height: 0; +} + +.collapsed .left-column-layer-1 { + width: 0; +} diff --git a/assets/_slider.css b/assets/_slider.css new file mode 100644 index 0000000..9b04378 --- /dev/null +++ b/assets/_slider.css @@ -0,0 +1,98 @@ +/* +Copyright 2024 D-Wave + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* Style rules for the dcc.Slider element */ + +.rc-slider-tooltip-inner { + font-family: var(--font); +} + +.slider { + padding-left: 6px !important; + padding-right: 8px !important; +} + +.rc-slider-handle, +.rc-slider-dot-active { + border-color: var(--theme-secondary); + transition: filter 0.1s ease-in-out; +} + +.rc-slider-handle:active { + box-shadow: 0 0 5px var(--theme-secondary); +} + +.rc-slider-handle:active, +.rc-slider-handle:hover, +.rc-slider-handle-click-focused, +.rc-slider-handle-click-focused:focus { + border-color: var(--theme-secondary); + filter: brightness(80%) +} + +.rc-slider-track { + background-color: var(--theme-secondary); +} + +.rc-slider-tooltip-inner { + background-color: white; + color: var(--grey-dark); + border: 1px solid var(--grey); + border-radius: 2px; +} + +.rc-slider-tooltip { + pointer-events: none; +} + +.rc-slider-tooltip .rc-slider-tooltip-arrow { + display: none; +} + +.rc-slider-tooltip-inner:before, +.rc-slider-tooltip-inner:after { + content: ''; + display: block; + position: absolute; + width: 0; + height: 0; +} + +.rc-slider-tooltip-inner:before { + left: 6px; + top: -11px; + border: 6px solid transparent; + border-bottom-color: var(--grey); +} + +.rc-slider-tooltip-inner:after { + left: 7px; + top: -9px; + border: 5px solid transparent; + border-bottom-color: white; +} + +.rc-slider-tooltip-placement-top .rc-slider-tooltip-inner:before { + bottom: -3px; + top: auto; + transform: rotate(180deg); +} + +.rc-slider-tooltip-placement-top .rc-slider-tooltip-inner:after { + bottom: -1px; + top: auto; + transform: rotate(180deg); +} diff --git a/assets/_tabs.css b/assets/_tabs.css new file mode 100644 index 0000000..cec67b3 --- /dev/null +++ b/assets/_tabs.css @@ -0,0 +1,60 @@ +/* +Copyright 2024 D-Wave + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* Style rules for tabs like the input and results tabs */ + +.tab-container { + border-bottom: 3px solid var(--theme-secondary); + flex-direction: row; +} + +.tab { + margin: 0 2rem; + border-top-left-radius: 0.6rem; + border-top-right-radius: 0.6rem; +} + +div.tab.tab--selected { + border: 3px solid var(--theme-secondary) !important; + border-bottom: none !important; + cursor: default; + box-shadow: 0 6px 0 -3px white; +} + +div.tab.tab--disabled { + cursor: not-allowed !important; +} + +.tab:first-child { + margin-right: 1rem; +} + +.tab:last-child { + margin-left: 1rem; +} + +.tab-content, +.tab-parent { + height: 100%; +} + +.tab-content > div:not(.tab-content-results) { + height: inherit; +} + +.tab-content { + background-color: white; +} diff --git a/assets/demo.css b/assets/demo.css new file mode 100644 index 0000000..8a849f4 --- /dev/null +++ b/assets/demo.css @@ -0,0 +1,57 @@ +/* +Copyright 2024 D-Wave + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/******************************************************************* +This file contains all custom CSS for this demo. +The following style rules can be altered or removed and any additional +custom CSS can be added below. +*******************************************************************/ + +.tab-content-results { + padding: 0 3rem; + display: flex; + flex-direction: column; + justify-content: space-between; + height: 100%; +} + +.solution-stats-table td:nth-child(2n) { + text-align: right; +} + +.solution-stats-table td:nth-child(2n+1) { + border-right: none; +} + +.input, .results { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +.display-flex-settings { + display: flex; + justify-content: space-between; + max-width: 24rem; +} + +.display-flex-settings label { + margin-top: 0; + font-weight: 400; + font-size: 1.2rem; + text-transform: uppercase; +} diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b672205135f665a8a7fa5d17669b592e7a9444da GIT binary patch literal 31633 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 literal 0 HcmV?d00001 diff --git a/demo_callbacks.py b/demo_callbacks.py new file mode 100644 index 0000000..7cb1e39 --- /dev/null +++ b/demo_callbacks.py @@ -0,0 +1,168 @@ +# Copyright 2024 D-Wave +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from typing import NamedTuple, Union + +import dash +from dash import MATCH, ctx +from dash.dependencies import Input, Output, State +from dash.exceptions import PreventUpdate + +from demo_interface import generate_problem_details_table_rows +from src.demo_enums import SolverType + + +@dash.callback( + Output({"type": "to-collapse-class", "index": MATCH}, "className"), + inputs=[ + Input({"type": "collapse-trigger", "index": MATCH}, "n_clicks"), + State({"type": "to-collapse-class", "index": MATCH}, "className"), + ], + prevent_initial_call=True, +) +def toggle_left_column(collapse_trigger: int, to_collapse_class: str) -> str: + """Toggles a 'collapsed' class that hides and shows some aspect of the UI. + + Args: + collapse_trigger (int): The (total) number of times a collapse button has been clicked. + to_collapse_class (str): Current class name of the thing to collapse, 'collapsed' if not + visible, empty string if visible. + + Returns: + str: The new class name of the thing to collapse. + """ + + classes = to_collapse_class.split(" ") if to_collapse_class else [] + if "collapsed" in classes: + classes.remove("collapsed") + return " ".join(classes) + return to_collapse_class + " collapsed" if to_collapse_class else "collapsed" + + +@dash.callback( + Output("input", "children"), + inputs=[ + Input("slider", "value"), + ], +) +def render_initial_state(slider_value: int) -> str: + """Runs on load and any time the value of the slider is updated. + Add `prevent_initial_call=True` to skip on load runs. + + Args: + slider_value: The value of the slider. + + Returns: + str: The content of the input tab. + """ + return f"Put demo input here. The current slider value is {slider_value}." + + +class RunOptimizationReturn(NamedTuple): + """Return type for the ``run_optimization`` callback function.""" + + results: str = dash.no_update + problem_details_table: list = dash.no_update + # Add more return variables here. Return values for callback functions + # with many variables should be returned as a NamedTuple for clarity. + + +@dash.callback( + # The Outputs below must align with `RunOptimizationReturn`. + Output("results", "children"), + Output("problem-details", "children"), + background=True, + inputs=[ + # The first string in the Input/State elements below must match an id in demo_interface.py + # Remove or alter the following id's to match any changes made to demo_interface.py + Input("run-button", "n_clicks"), + State("solver-type-select", "value"), + State("solver-time-limit", "value"), + State("slider", "value"), + State("dropdown", "value"), + State("checklist", "value"), + State("radio", "value"), + ], + running=[ + (Output("cancel-button", "className"), "", "display-none"), # Show/hide cancel button. + (Output("run-button", "className"), "display-none", ""), # Hides run button while running. + (Output("results-tab", "disabled"), True, False), # Disables results tab while running. + (Output("results-tab", "label"), "Loading...", "Results"), + (Output("tabs", "value"), "input-tab", "input-tab"), # Switch to input tab while running. + (Output("run-in-progress", "data"), True, False), # Can block certain callbacks. + ], + cancel=[Input("cancel-button", "n_clicks")], + prevent_initial_call=True, +) +def run_optimization( + # The parameters below must match the `Input` and `State` variables found + # in the `inputs` list above. + run_click: int, + solver_type: Union[SolverType, int], + time_limit: float, + slider_value: int, + dropdown_value: int, + checklist_value: list, + radio_value: int, +) -> RunOptimizationReturn: + """Runs the optimization and updates UI accordingly. + + This is the main function which is called when the ``Run Optimization`` button is clicked. + This function takes in all form values and runs the optimization, updates the run/cancel + buttons, deactivates (and reactivates) the results tab, and updates all relevant HTML + components. + + Args: + run_click: The (total) number of times the run button has been clicked. + solver_type: The solver to use for the optimization run defined by SolverType in demo_enums.py. + time_limit: The solver time limit. + slider_value: The value of the slider. + dropdown_value: The value of the dropdown. + checklist_value: A list of the values of the checklist. + radio_value: The value of the radio. + + Returns: + A NamedTuple (RunOptimizationReturn) containing all outputs to be used when updating the HTML + template (in ``demo_interface.py``). These are: + + results: The results to display in the results tab. + problem-details: List of the table rows for the problem details table. + """ + + # Only run optimization code if this function was triggered by a click on `run-button`. + # Setting `Input` as exclusively `run-button` and setting `prevent_initial_call=True` + # also accomplishes this. + if run_click == 0 or ctx.triggered_id != "run-button": + raise PreventUpdate + + solver_type = SolverType(solver_type) + + + ########################### + ### YOUR CODE GOES HERE ### + ########################### + + + # Generates a list of table rows for the problem details table. + problem_details_table = generate_problem_details_table_rows( + solver=solver_type.label, + time_limit=time_limit, + ) + + return RunOptimizationReturn( + results="Put demo results here.", + problem_details_table=problem_details_table, + ) diff --git a/demo_configs.py b/demo_configs.py new file mode 100644 index 0000000..247600a --- /dev/null +++ b/demo_configs.py @@ -0,0 +1,80 @@ +# Copyright 2024 D-Wave +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This file stores input parameters for the app.""" + +# THEME_COLOR is used for the button, text, and banner and should be dark +# and pass accessibility checks with white: https://webaim.org/resources/contrastchecker/ +# THEME_COLOR_SECONDARY can be light or dark and is used for sliders, loading icon, and tabs +THEME_COLOR = "#074C91" # D-Wave dark blue default #074C91 +THEME_COLOR_SECONDARY = "#2A7DE1" # D-Wave blue default #2A7DE1 + +THUMBNAIL = "static/dwave_logo.svg" + +APP_TITLE = "3D Bin Packing" +MAIN_HEADER = "3D Bin Packing" +DESCRIPTION = """\ +3D bin packing is an optimization problem where the goal is to use the minimum number of bins to +pack items with different dimensions, weights and properties. In this example, both items and bins +are cuboids, and the sides of the items must be packed parallel to the sides of bins. +""" + +####################################### +# Sliders, buttons and option entries # +####################################### + +NUM_BINS = { + "min": 1, + "max": 5, + "step": 1, + "value": 1, +} + +NUM_CASES = { + "min": 1, + "max": 75, + "step": 1, + "value": 20, +} + +CASE_DIM = { + "min": 1, + "max": 30, + "step": 1, + "value": 15, +} + +BIN_DIM = { + "min": 1, + "max": 200, + "step": 1, + "value": 50, +} + +# an example dropdown +DROPDOWN = ["Option 1", "Option 2"] + +# an example checklist +CHECKLIST = ["Option 1", "Option 2"] + +# an example radio list +RADIO = ["Option 1", "Option 2"] + +# solver time limits in seconds (value means default) +SOLVER_TIME = { + "min": 10, + "max": 300, + "step": 5, + "value": 10, +} diff --git a/demo_interface.py b/demo_interface.py new file mode 100644 index 0000000..898b694 --- /dev/null +++ b/demo_interface.py @@ -0,0 +1,425 @@ +# Copyright 2024 D-Wave +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This file stores the Dash HTML layout for the app.""" +from __future__ import annotations + +from dash import dcc, html + +from demo_configs import ( + BIN_DIM, + CASE_DIM, + CHECKLIST, + DESCRIPTION, + DROPDOWN, + MAIN_HEADER, + NUM_BINS, + NUM_CASES, + RADIO, + SOLVER_TIME, + THEME_COLOR_SECONDARY, + THUMBNAIL, +) +from src.demo_enums import SolverType + + +def slider(label: str, id: str, config: dict) -> html.Div: + """Slider element for value selection. + + Args: + label: The title that goes above the slider. + id: A unique selector for this element. + config: A dictionary of slider configerations, see dcc.Slider Dash docs. + """ + return html.Div( + className="slider-wrapper", + children=[ + html.Label(label), + dcc.Slider( + id=id, + className="slider", + **config, + marks={ + config["min"]: str(config["min"]), + config["max"]: str(config["max"]), + }, + tooltip={ + "placement": "bottom", + "always_visible": True, + }, + ), + ], + ) + + +def dropdown(label: str, id: str, options: list) -> html.Div: + """Dropdown element for option selection. + + Args: + label: The title that goes above the dropdown. + id: A unique selector for this element. + options: A list of dictionaries of labels and values. + """ + return html.Div( + className="dropdown-wrapper", + children=[ + html.Label(label), + dcc.Dropdown( + id=id, + options=options, + value=options[0]["value"], + clearable=False, + searchable=False, + ), + ], + ) + + +def checklist(label: str, id: str, options: list, values: list, inline: bool = True) -> html.Div: + """Checklist element for option selection. + + Args: + label: The title that goes above the checklist. + id: A unique selector for this element. + options: A list of dictionaries of labels and values. + values: A list of values that should be preselected in the checklist. + inline: Whether the options of the checklist are displayed beside or below each other. + """ + return html.Div( + className="checklist-wrapper", + children=[ + html.Label(label), + dcc.Checklist( + id=id, + className=f"checklist{' checklist--inline' if inline else ''}", + inline=inline, + options=options, + value=values, + ), + ], + ) + + +def radio(label: str, id: str, options: list, value: int, inline: bool = True) -> html.Div: + """Radio element for option selection. + + Args: + label: The title that goes above the radio. + id: A unique selector for this element. + options: A list of dictionaries of labels and values. + value: The value of the radio that should be preselected. + inline: Whether the options are displayed beside or below each other. + """ + return html.Div( + className="radio-wrapper", + children=[ + html.Label(label), + dcc.RadioItems( + id=id, + className=f"radio{' radio--inline' if inline else ''}", + inline=inline, + options=options, + value=value, + ), + ], + ) + + +def generate_options(options_list: list) -> list[dict]: + """Generates options for dropdowns, checklists, radios, etc.""" + return [{"label": label, "value": i} for i, label in enumerate(options_list)] + + +def generate_settings_form() -> html.Div: + """This function generates settings for selecting the scenario, model, and solver. + + Returns: + html.Div: A Div containing the settings for selecting the scenario, model, and solver. + """ + dropdown_options = generate_options(DROPDOWN) + checklist_options = generate_options(CHECKLIST) + radio_options = generate_options(RADIO) + + solver_options = [ + {"label": solver_type.label, "value": solver_type.value} for solver_type in SolverType + ] + + return html.Div( + className="settings", + children=[ + slider( + "Number of Bins", + "num-bins", + NUM_BINS, + ), + slider( + "Number of Cases", + "num-cases", + NUM_CASES, + ), + slider( + "Case Dimension Range", + "case-dim", + CASE_DIM, + ), + html.Label("Bin Dimensions"), + html.Div( + [ + html.Div([ + html.Label("Length"), + dcc.Input( + id="bin-length", + type="number", + **BIN_DIM, + ), + ]), + html.Div([ + html.Label("Width"), + dcc.Input( + id="bin-width", + type="number", + **BIN_DIM, + ), + ]), + html.Div([ + html.Label("Height"), + dcc.Input( + id="bin-height", + type="number", + **BIN_DIM, + ), + ]) + ], + className="display-flex-settings" + ), + + # dropdown( + # "Example Dropdown", + # "dropdown", + # sorted(dropdown_options, key=lambda op: op["value"]), + # ), + # checklist( + # "Example Checklist", + # "checklist", + # sorted(checklist_options, key=lambda op: op["value"]), + # [0], + # ), + # radio( + # "Example Radio", + # "radio", + # sorted(radio_options, key=lambda op: op["value"]), + # 0, + # ), + dropdown( + "Solver", + "solver-type-select", + sorted(solver_options, key=lambda op: op["value"]), + ), + html.Label("Solver Time Limit (seconds)"), + dcc.Input( + id="solver-time-limit", + type="number", + **SOLVER_TIME, + ), + ], + ) + + +def generate_run_buttons() -> html.Div: + """Run and cancel buttons to run the optimization.""" + return html.Div( + id="button-group", + children=[ + html.Button(id="run-button", children="Run Optimization", n_clicks=0, disabled=False), + html.Button( + id="cancel-button", + children="Cancel Optimization", + n_clicks=0, + className="display-none", + ), + ], + ) + + +def generate_problem_details_table_rows(solver: str, time_limit: int) -> list[html.Tr]: + """Generates table rows for the problem details table. + + Args: + solver: The solver used for optimization. + time_limit: The solver time limit. + + Returns: + list[html.Tr]: List of rows for the problem details table. + """ + + table_rows = ( + ("Solver:", solver, "Time Limit:", f"{time_limit}s"), + ### Add more table rows here. Each tuple is a row in the table. + ) + + return [html.Tr([html.Td(cell) for cell in row]) for row in table_rows] + + +def problem_details(index: int) -> html.Div: + """Generate the problem details section. + + Args: + index: Unique element id to differentiate matching elements. + Must be different from left column collapse button. + + Returns: + html.Div: Div containing a collapsable table. + """ + return html.Div( + id={"type": "to-collapse-class", "index": index}, + className="details-collapse-wrapper collapsed", + children=[ + # Problem details collapsible button and header + html.Button( + id={"type": "collapse-trigger", "index": index}, + className="details-collapse", + children=[ + html.H5("Problem Details"), + html.Div(className="collapse-arrow"), + ], + ), + html.Div( + className="details-to-collapse", + children=[ + html.Table( + className="solution-stats-table", + children=[ + # Problem details table header (optional) + html.Thead( + [ + html.Tr( + [ + html.Th( + colSpan=2, + children=["Problem Specifics"], + ), + html.Th( + colSpan=2, + children=["Run Time"], + ), + ] + ) + ] + ), + # A Dash callback function will generate content in Tbody + html.Tbody(id="problem-details"), + ], + ), + ], + ), + ], + ) + + +def create_interface(): + """Set the application HTML.""" + return html.Div( + id="app-container", + children=[ + # Below are any temporary storage items, e.g., for sharing data between callbacks. + dcc.Store(id="run-in-progress", data=False), # Indicates whether run is in progress + # Header brand banner + html.Div(className="banner", children=[html.Img(src=THUMBNAIL)]), + # Settings and results columns + html.Div( + className="columns-main", + children=[ + # Left column + html.Div( + id={"type": "to-collapse-class", "index": 0}, + className="left-column", + children=[ + html.Div( + className="left-column-layer-1", # Fixed width Div to collapse + children=[ + html.Div( + className="left-column-layer-2", # Padding and content wrapper + children=[ + html.H1(MAIN_HEADER), + html.P(DESCRIPTION), + generate_settings_form(), + generate_run_buttons(), + ], + ) + ], + ), + # Left column collapse button + html.Div( + html.Button( + id={"type": "collapse-trigger", "index": 0}, + className="left-column-collapse", + children=[html.Div(className="collapse-arrow")], + ), + ), + ], + ), + # Right column + html.Div( + className="right-column", + children=[ + dcc.Tabs( + id="tabs", + value="input-tab", + mobile_breakpoint=0, + children=[ + dcc.Tab( + label="Input", + id="input-tab", + value="input-tab", # used for switching tabs programatically + className="tab", + children=[ + dcc.Loading( + parent_className="input", + type="circle", + color=THEME_COLOR_SECONDARY, + # A Dash callback (in app.py) will generate content in the Div below + children=html.Div(id="input"), + ), + ], + ), + dcc.Tab( + label="Results", + id="results-tab", + className="tab", + disabled=True, + children=[ + html.Div( + className="tab-content-results", + children=[ + dcc.Loading( + parent_className="results", + type="circle", + color=THEME_COLOR_SECONDARY, + # A Dash callback (in app.py) will generate content in the Div below + children=html.Div(id="results"), + ), + # Problem details dropdown + html.Div([html.Hr(), problem_details(1)]), + ], + ) + ], + ), + ], + ) + ], + ), + ], + ), + ], + ) diff --git a/requirements.txt b/requirements.txt index daef923..465a63f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ dwave-ocean-sdk>=6.3.0 mip==1.13.0 plotly==5.6.0 -streamlit==1.22.0 +dash[diskcache]==2.17.1 tabulate==0.8.9 diff --git a/src/demo_enums.py b/src/demo_enums.py new file mode 100644 index 0000000..6cae3d4 --- /dev/null +++ b/src/demo_enums.py @@ -0,0 +1,31 @@ +# Copyright 2024 D-Wave +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from enum import Enum + + +class SolverType(Enum): + """Add a list of solver options here. If this demo only requires 1 solver, + this functionality can be removed. + """ + + CQM = 0 + MIP = 1 + + @property + def label(self): + return { + SolverType.CQM: "Quantum Hybrid (CQM)", + SolverType.MIP: "CBC (Python-MIP)", + }[self] diff --git a/static/demo.png b/static/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..4969c82b38bfd41a2382d18766728b684f2c72f1 GIT binary patch literal 221173 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਎{XRl7274!m;u;AA4q{$Gr&0VD? z(USL+y|6_ zfhLhdgS{^%<#HOAXX{^Hr7v^a9PFORt`|xw0n%~>KkpVRzm-vh%C`bmClx#$i>?Ap zr4Q@n)#0EO=cTef>x5ul{aRa^d9j##R2%9!3<8=g^>}b47soFRUZ;7LDmJGVX@2g? z50CS1n71!J*A1M0w>G;dir8B9)3TAS@u0#jQRSt@p9u~Bn+BvvfXE$Y`8BfXTq)3iM0rX3-B(hP3tZ!3kpA|%_{N}_yl-J=fF|y(K03!j zqU*;XH((M5GF`ZDJgjkMkxbF4Ks;V3Y*G}#jb{wOlF3?od$@0b`7!gf3*^2#g%ehy zzSL8jKUoF@GHLr74j=1Q@7iJwVu9hc6X3QtzPUz&b2F)r@ zQBU{>_Jo0VX(|zgw?e7p(+UoKZhKHU+9dT_K6m`6piHi8 zb8d66yOT_Ln5wspQM0nK@^HpNGRTz3I7Ft&_w{0Kw&ukwYJuY5#Jq&>h)SlOW}TsX zE-`su?Yu*4YFQGsI+Xd24jx*#NMY}SV-3M(mZ+bqgQWxtDyexxR1O2a-aHE{{vH>& zAuY#0q(Gohu8#?oZ?w7?7V$K2qv*rtIx_F98nijz8cQoXu?V3I=i17AM&g+LXo{M% z#$=v}ve|aW4N9gTNBe3Q3fwyv?>YYgO>Cm7(*Bn?Vv~@-vCph>|1gv$4IbpA7DE$i zUkSy=`4C)T_X}cGaaPqtQDNCK4BDCN7RK}C7GM;1byJ^7&YdY zY7__{`LaBSKgTUFwDPt&^2y3F1^mVxoX8z&(}yXOVZN+>=3q*FuEquBh*1bDlKZw# zBB{wZ`m_#o^y~~@5c6;WCVFyx)Q;xFq;!dq(B* z>!r0Hp|f~TK-qRJZF>dW`C4~N*Of9bR$UWa1Im0`EQ zGB184gB*0+Z~~+#-;}BKE_PYm zP+{%q^#a#$H_x6k!SNm+l-aZMz7(WY4lW?=vG+9`Y1sUPg*5C+Ro;4m6;@}ma8_EN z>Oj`;N)h(4w1&e3S7V`_g^SI3=g@Kf5cAj#wXY(vk|#?iG&Uejse4CJrO-A_rcEUo zIP*hLC&;SH*lUKJZST(gwkNkvWW&*6_7(S8>v2V-Dp-*GPGr4?k*##X=Tc0o-#cS{ z<(S?VhvtW4PLD0Zp3Ui{%M9M=vA{0-6vw(;a^Fywkc&_&*(cLnW3|psn_Kq+j;SS_ zMoQgYGk@%-d#eAC`uv;MLxyM?WIMZv$P(@uL4v6U=(aReaz8$NrTQWFpiUDYM#eX` z7XTojljGL*vjp$&1YK+A)Az&mF4!R-|T}= zM3zh+X<9hB*-B#vyLjal2<32=kjD&|$nIn_S{!#6T*0R1%&yK>A1G&f65~;x5Sb#H zs;n5$Q2S(627?3XsCNI+-MMR`ouCSShZ`ccR^z6D>2Dt%P*chsRVE*m)&C6cQI2Z! z;$7e6HP?_GrTM$#$oWB~s!FRjs<`IIV3pU!fDE0Q^Ip_E+&2VgF3Xkn5?tk~NO+rS z=)U7~!oB2}#boEbqVKz9rTNOGTP-l@R^+8?6DJ))Cu|K1h+Y*K_8I4N>m)t|U%ux` zt6i2PTi(a@i>{qMaA?&&qvHBf++?A4Nvjj^ClhIg_C|ySWW5Fa-XLzhi|510ZchNh zTz@qXSZn$wKK@pYN#W-?ewtRhz{9Ip$2P7?kr-GCz1|r9AhY58mSqr{e1MVNJ2K`} zpQa^V;CpZ4aDeE%syUYHu3|lCYWme%_IJ+^Gi;JH(3R|U4 zK_w{BSb`kVLEC@ufc};jJmU=b2u7Hg>DTw2h&amSkE^HOeM+*d-v&YkH77Ea zn)MG-^wqX5kOlLPzI`>$Mq@t`!A(Y8;6fypH=R6G1bBfM=e3nIPxs=5ooe7G2J)>h z4P5dMf|Pc5MdJ+-nra`C%L)CliPg#5lCH0D+f1rbr(3#77)y4_$v&ThxyYzH4gLxe z3Bz@5M7@i??`M!QmT`Q%%EncIyL5CxsuN=?$tpu`f?;Cp6da%Q*-;5u3)`F5Iu4|}6XdQ@A18~EtIxRNMU^6ei?g_?dAZfn+Zu@NMVug< zVRbW0g&XPBpS^JdvVCe6pxxV{e^22=4xGv|RdMMCpa40+N#Khy=Cc-wl%H1rgV+o= zrHv_4AasJ1>3j?Km1Y&I+Jt*~9ZyIZswWGkOu{JnOOr!#A&og9JepV5lu)mcp(9na zFEC-bV4JRDfb4ra%-6*rlVUUS`&``z)C&gXMunPB6ser8@_4mc^E*CQQ?K{8EH32y9rw5x~>Knn{vDEeeXSi1Kd4(SbS1<8>U ztCJO+5bb3rE+!I-V~dVa1hn4MtSPB|Opr_7Ps42#pf(Tp$*opkO@cl3E%UPGsNAMw z#_vLAZ^J`A5;$PeZ!QoSbjGsVtd(@*RM2JITWSm&Q(QX4p$z;05@GDQp%AwN zdg=(~dCO8l_q{6C1vhEGI zT8#)Az!oL4ZWAO|>jSwmLzQ;Nocfi)9w>O?2rV4{C*v6Qr*Q;?i+4g<{JQ|A%gn3M zG27zrUnPo5a3_cufA(DDPZRlGpI}r~_Vz6|c1$-2B|jn|V|qKn;~tDTngap^>)-1^ zNKa+En8;F$K@gEW2zQC=e0j|%gJpgaW2T#|oOOTHKDjBYjw*@CPlX1&$ zQ{HZY8Iqs9RBN9czE&$RWuy!ue3v{s79kxdondtQM>(ZNW@U6MtncQ9yNPB!r-F>` za26-DI0LeZU?B2fVp&qka^(<{nPDi?xq=huq&2-%mai|WDMpi;*f6=mH<>$N6s_?l zZh0WaslhQh^-B+`P*g4XzO&+R9mhOXnSw?jwjV+b*_LckfmL|igK_m5s2_|u_o=6n ztF{y~?plM&QwR0luDqnaFz?px6SwwlpM;zo_y{coBvYgelHHX*BHNk_u)l6+;gOi_i^VooBfAM{v;fL3u~3w#HIs_7Pd1!K zo+b@hS2O#`+`20zWA>1?HonBuJ(3|S)w&AR+6LhpgFY@rgs@wir{|sJ%#^j>);W0@ zV_0Pr`F&kYz!A#k1D*PCvd5>BVaW-(Gz%xdCYx(1O>4Z1Usx-n|~ zdR(ZrMwVaNs~w;|)T(t{y$8&&S+#~6{`8iY9zio)pBfl(LdPYe$;QICplmQLtpkJJ(Cg#RP zV3BCx{Jd>*?K(m6S-jm~gDg;%;9jd-^fII~@39{ihD2S9}T3QCx4n> zhc)(uf|2YeIX6K}=zLI&%WMtLHD<~JgH|Hq#9Q|iWx32I0La~a-y;I5lCcOJrKXBW z#{sJCLq!^$o!89vJ;!b@-XM=z8+!Z#GAVvC&*uTL>qE_q;S&a=lM#XAVrcUZDv{)Y zz>BU#BDn3w07imt=1t2#Ag-w(7`LRU&l)Vh_EQv8Pvz>K#mBus0edVM_8#ZeQ+ttGL z!9Ay&p9*W4+Nj(L_Kj)=5~T%fiH=RFXGc0>VirSjVmn>L)>b~m$wWo=BodvAy{9D~ z`7SeMcrwuUOgL!ASxMF7ShMxjx|hgsk`&6)Vfy*)UrNlcG#;LKHN>iv{?Ylg87@ZO zU?o@x1%Hc-YP0k0FZIH{r&{n?kI%1Tn(dwZuq!D;&NF2IG7CeSVo5qi?MsXXn9oIu z5QVf}A-D4!agNXbt@_PNAaSZx&B!sKEP*JMn1bb< zuRZy?5vW3u>>t+Bm`xKR7zTu@Hd!?$PP&d?OJYM<5kUY6! z>`;He=+3`|BU?jX-EJKQ#)tt!#X9}X6KUT`+4-(tvMn+&e6+>8l2WUHKh_+)r z!e{osSVSV!9pv_$(GjD$ z)rPSOG2E2j@ldqNfR`_T=ulsg%7q6t5%jL2SKz)l?r5F-UvBH*r;EU9p|DNz5Iwo~ z;Ev?CUxyT{uDLFn@Oho8ybmN}#9}*uS@~0Za;q#S-fM1m;g?^Ho(2BT4mVWe>Vo)l z!3wf&QmrX!59~m6%dMXrZnRMALnxiAs5v70c$?q;SD%WlpZ4cm#r*+8Q~%Rle7^vfpuIVI=;xE6=a#qxFX}%#?C|t&8JVpgMU)ST_QZbuu84n& zCs<*C^v%=G{%?073O~62;OI}u!Obg4AZ-zSZ)%61s?zua^>_RyXq_-3?%m*5tzLX~ z&k1M;+NCs;_BZL7tseuP^e%J;5ZK8nkDpF=`vGfCjdtLZ%+_Bk-N>*xUT-a@z2Ry@ zq_Jb~UOHDx!V{#VFX$t#`Sy6t(G!v$e0$X6MA0He;6eMt7e-HDJdV7$bEe{q)Ws97 z2T$yJdGMvk)Tio=;8&efQj>g(!VavHZ_;&j>N19d>r9h-3qb~Kv&|gp-zdrojfz_v zjE?@<<`iCmw~U!ily=7iOM?>0X1lCEUqy|v@V>eE7Uu=n_It19tWY3bkob`u?p;~ozwy!*1;4?WCk&(%%- z*+dcVxBmS$ABw2rdT#2cOt6&S`M-O~BJ|NcXG4~O0o9X@=pZ_?3X(i`uSOVEL?GwR=; z@IS9qZ2-Tl#5!q@cTqVn7>DNT?r#72@xQ;~Cd~kgLO-U%>(F1LbCVIKfbkBfJmNhJ z-l+WgWI+24%+Wqt5obsHnR3buhm9egk~b8Jx82@M)Sntg?qws?VqQQt{3W9DGy%bd zo6l5S=rhoTUI3Uplma+onI8{HS~hhidEls^d7eFBWirwnH*mc-AYOF9JWFKQ*Z<&v z@KwMF-m_*#?MDM4+%a6pzT!h0g79ZekkR4Ps}JuNUd<*aqd@l=zLSX1%%=33l_cJn z{QbfI^=RQ=2olbh3IRGk6Oj3LEl-D7-l7t;HS^_IH?>7U7XR8@V}`GaX%QDI)DyYR zP5SLSe=!kIB475a=|#AY36={?6~02cn(h~d5mau4C8PR$d$v`p8jqUeOgYE+lo55{ zosL_tJlXQkK;DBzV713#N^0lseR`wu#}w$MA#jL=+@3(EJpg&$vSznMMv8Z))+Xs{ zLoxmug#C)#eNYo3-#K-?#JF5a1&#ie)3)VOaZ7;4o+cmSN3PRV!Z7l7Ls8|8y4-Of zk6`z`WKJ!-7szXVN8ZbEY5E(-IAtH(X?+jANaaRW&A*%ugQD+H1?^}r<`Fp4U>z7Jz&5oWuKk3! z`F<^N{69pKiJDYhaR9=(1`M_v7S-p(GinCfz&jMI;TsOF;TQIPss+(fkUbQr$FVI| zrE{Z=jgagPgJ7dkXZRU5Qzz+M%m%>U<6Sn^;|*I=tVjylT3)|1SJ{&bc)36?)5*MH z=^B!b>j7u!p!Gnq(kv|x4!Eo_GXs^nl@+TzL$|hN-Hu?4@r^Yem(lVEX>zJ>f*G}LYr252ShJ{_pTN>^*bDHnQ=0f4uYn#3j!2%Z~rvtI_{zt z8#aSUM`R6CNH=(Rl~ z?xqWu^z62zzfA$0+5ta%fmqxR7M+szWFj6>hZ|j zB;f#@@){!F5*EN;FsHtCTm^cuW3~$v3a>*uUoCzpFlWraU=Y^{GcQJcUR8R4-_m%) zWu?)GZ<41rZDlMmcISTH6P*+;^ua6e7;hoZ#MOy<$HYRmonC19`zx_9K<=|4<_NV` zTH2j&rY<;@e5ie<=eZywS!AxNI0fmpQK-sEnIAU~0V+})FMnuIK$WdYC`{)a2bPZ+ zxsZpBWzFeIm%6_wbxvqF*uvvn=G>c|vDv0X!!*B5c%u^6?jL zW;Lc%nz~zpdk~azrfU#Z0_yM=JLSAsupBdP0j6RU(tgz!d(w`*{|?W~AlAoUG7RZh zL8x+>=s%{hz6$7ZMgd_BJ9GxXqxm|Cl(Cx5979wurBV^$sPaW;PuA>D1)MAG!BZx( zp}xSR+rBMJ6pFZV0zERHZ`~tOfkkfE2DDKTJSsi2_g_=pVkj|W49@`Zpvt_k$`|2)*`c{6&l1_Wo8}_6WuZ+yghxhbw1+{7L5TsOD z4hBvou0DHb@GzcP<)JJ?xSEEi`6}=cYSjs!Y%`;M={-D@JK!x@g6p0d6X5KmwXg*G zsJ3q&^?2K-+L(YVdVI=;p`#7kYXv;^h&i|=%@9E&@Ci$Z=EOXR#s)a{xYA`#oN#ZWI;htaG&$y#E8uw$+R-K{m zSTgkB8FID>`jK?`lU;rIh2{ENg&%Kf_|Di)f()`(l4+sbA@U(Cv03Y4Ck4Cn_mr9b z3ZTZzreXvYW*S5XOYR)}wz{hAeW&jv@l3-uGpTx{}lMc_VR1|sq)mP^I_}i#!ZH(g?o#z(iqD1cpDVi zxsMVmtixSM6SKS%r5JlA(VuriZou2sN^YC?ZPQFb^5N$C*|Bn`mAPxAOT|#HO&2B& ztx=I1@?I#Ka!Mss<$)rlk5^sT>i5%(E83cAI3TiQ)_IZ2?6Av9&D~LQ=|yK(XEG1B@=5ZZH9p3a_wB~SDh?L;R?dVido+r+v5J{r*ZikP-WA> z{Ft3G7)My5*_8Ix*TN6d7>e0vLcFK$!uMS+(XSpWVYhPtn(db%p5jzeXP>h(B^zr~ zbCn|NX-m?>m7J$bySt`L3eCR0)*S?S0;_y5Lg{qPi}yd2tk0)rf?9yK)17000ny3s z0)Car!P&#?yw$*NRU(*MC3x6&eEZaD&WV-}B4x97o?5NY?|#n9)R6%f;>GvH<#D9X zHXF9V&0gyrw_pXaa)o&Q_O#RU5S7}M%b;fu8Q*Ah+Ahw4b-atQn+?CSYa^20y2l#! z)@y}=Vqp6=x^Cb3L#=(7n7#0MHl&q|_{tv1Ec16D$AKQCgm(nVeCE4fV&~a6jD#;j zq4$N6tbSX5@iv=h=Pvqwr9VS+p^NaXe>Ne>Fy;lrb=rs@70QMc_Hd}Z1wfsS|C4RA zjIqJD)CO`)XM!(G(?!F^}svdTze zCLTSs%IERUC^#`w2z+Oy0KsfA_i2kdp&Uz_L_cZ{<53Qp2MPPkOo0cf6p%gF?mf)7 zqtGtS4hZm-4{gnL(OW( z4GdHAbn*elD4DWaQr<8eF;~#tvCU?Q#HSuVr;>P2gQHO_87MI56mz_fl0 zzzdA2AJyzlp*_c4`8Ry|;(B?R{ASJ`glpiPJ#H5i>&r}5z7&&e7o+7E?bdDk^u&%; zyZSuK)o2Ua&M>>7H{(b3*#WNA9vye+IC+}n&f(?UMQ~M+^JTN4 z#_$IJ#W{o@OE;IJdhN}Cot_Uvu^kPRv)jQo#6QzUeykp|+n0^xUio3;)Y*@o0beCF zoQ+e{a@qcNN^BK|+{_Ve-jhq6c+U|^(B$u{2^)trtK&W%W4-^>j`!T@Ctvbp2m~&c zewEnSl}78<1GQxa3fW!zqYlkO)Aknxd>LNztMSaGYRdXHuqAH*3cx~0Ja(={#WXsO zMHrmQx|S@7}t zEwz(5Z5@DX9UFIsCOI?m2l$bl^r{-x(+bSdmHxYt7|DCf((QZ5xI(-mT`H`zmP*htKdL$IR{<;WzPrs#nu)8o(=I;f-Sq~W_f@4@hVM-S#k(gPzSTgtK%>H%zZ_vq+S$#y$ zz*S(s@n;*J66?`p&GS3NtbmcJ4X)~|k)&dEE9Qpd0 z-^Hx1q80=R!lh2I#AAWTUetrL2Ov!YlBJnoPYw?{eo%7|-1?Zf9vt%f*ytNs*@bs_kyUZ)e>qKeEytG2WJLUuj zzQxK`p415i&kMf0a}k!cS_eov9LI8?SEY8dpVlM<+PojuTTJvk^i`uy)>-Pi;-CRD zV?tdk*ANPcLSTEgr+`i7DVHRh7(KM}DbaUQL2uCw5M2qpU%?v82@+@I6l_n7uGyj+d9v-wd9{x)(~=>u)Q_^jHU9*smXl(Wqkf@Tb+# z(CFL@#bGXX&?&K)5L*r7_Du#iDZaSUn#h?rfd?XZ;Q7r01!_rkkb?3Ts^U1dI{%2*X4mT|uG6J7YeBefFRe(fg`~@2fG<3c0>CHb zC~%2Ifq0@0ZOJPXP%A_Atr0+n8Eea7U_%+^XnRZYm7${zbc)Gdax#fib`EA&ueF18 zgaVsc@gW1f2tYhNdkl#j92lZl*on*M0U&U6?n1IehjlEZcb z{;&a-TY$08yLqS<1`t?NLR6LXa)AfBQY7^o?m7ySG)#F6QjZ?4I=dbXa3pN_WfRg3 zk!QmjB9O;my!hhl0&HPq*8C@C(VM&~P4;{G+1uK-1uv)InAZ8p~R3NC>w-8DF#xuow-63i0-{aDur z7fCX@vlb45Ob{9w>dvTBI@*T{?;eyUR2;P$)i>P=jPjGv$s|e*x$GR$w~bpJQ-2SE zq$uK6AgH?sS)(O;)40qstA|kxf2@HD8^wiD$UO-Y-?>sg@x^b?Gio9;1=?A_=0}6C zdR7SFi|r|K2Gq^QQ2@Sop2%u#&6NFK(c=()S7i3QI^SSI) zoV2_Qlc0}vyB+HVL3v8{al`6OX0lq;W!00SxN6- zGlWaZsAUTMoL@oRn-gSO%-7khI6peVnW5T0=n-d0%X+^60fS_=3wJKfhb^Ui?|q*Q zW?K-Yq1ws!gJ&CAW<6>(I|wk?Kh(_L6SNzE-?E(dqi&_RV0ryfsBd8%l6w`FrHr)9L21 zOx}_QbIPae_0?gK8zoES>`eBVMp<-?w%IBx*DLkFUz)jfiMBrF*eG=W@{?EAkG^9e z_uNPKt&nP{ZU0mHCZvp~XOF%iP zu5vJny%eC{IS| zZ;1vwRFU|vCeba1sOhq+1Ek7spg<;JpTcYT&#WZ$h%c;^)g$`k-9$`~iSiI>L=|E8 z6<)3m0FwHf07lGcIn`y&5CK*)29fVxU_z^0%k4a`3vf4mcXIhp@(f+5UDamTpd~K% z#>*h%D{8W42?|)%2X}iJl$eWrU4R^vW&MRc+EpZL`ZbD@mtK(Scr#V_Zf}mWJ?8h7 zUNw}xa)s{kv6m377b{*zrx7-ZB6Lr#BVHh=kg&1z^LD zT)0Ar=o>+Dle`y3g;1cFct~wU<>0p&+s^~Qvt&xqSP>+n#wzO7 z*zicV)@R(Z&jWAzOfpIj#w;a6*Duv5t0)D?NQg<29m(p;M)AfM_m9P_5rB?zW09QbRN|hp55X^6eN7dIwZ-L3H z(4Xxxi;i0f;k_$Y9m*c=9qrv%xAE9Eg)GuU9ZuD5&{rRH5E(DNF;6ZOd&0%UHylyQ zD_mBG1TSLSdDq{S8?EUKG)#HpygG0^HrijEU#zs>rUa*kvQZh`GMd~> zYV7Yyci1i3i-7XhEQJpj6D!h-R3e|u72S3GgU!>EephA81(@82n?1EQfO2!wI+<{# zB3qBt(kG#oRGE#WO8hLpO%D{J8o^8RCx~QdqcPTjK&>$P+nnNYsJ_X|IP`yf%9y}E z?1pQjOy(?AqayV7-$7qb)trl)8+}#Nj9h(7$hNOem8PyEl9)dHr@Doqkh)GZGe%yf zj^AZ1maY*}QZnX6V0HbU*?F4b(DADdp3QikC+@R~;A2VFEV=9sS~ft3>2&BtdHwiy zcl#I#ciRb^cZCHxyBZqe@^!^0x7XnCPA|O$&N=CKc9Oh}>Bl11RgAMR%245Jgr4Jm zc4D6jGr71*y91|8R8u2#qb&u~RueVW5|*5v&M$>jxtQK5%B=aa%|?}H$0E4KD(4<9 zNht$pDZO`Mx=thMvw)m@9~()Wcv!xA+b5rS=oSr5?--PYQ*KmP|IYmty{)rX&dF8a zej~s~^{3aFnXih+v6sc$Wwqz;_dciv&S4`E4AjO^!_xG3CJ#R>LK5$egA+07_h(x4 z0mqUdmo#1gT5}oO3|M%Y==BPE?6F);(MB4Ql~kwgpjeYZREhk;c0OhWl#zzeO~BW< z7&2`QV1lse#?j56w8Zr>Glg0Y;~5;OjCH^fWipjhXHR|>tN{hG@pm5@z@L=uasZDh zAw&Ghe0*%^mx31D(f4f))A}&7ByX}8P^if>D1bS7+2nwKT*5K(T**s=zOP8#dI%$i zo3UCh$7W&i3p%9HyX@8c_=L25vFOK=t$gup$kg2+$*>278gdEV!zB?E7dBP}TSC*Ji07}ipSt&&k{y=!&0&!lkMa|I(Gi;s#7OVqP(jw{$t#(kox8wTH8F`o~@ zP--fN_6sMOf94CsZ!bXB_cPPi;n|l57?{!?i#;nz&w5-16}>=YsUtfaMgveq!xG}# zXuhEU28U6)5`R<@n}AcMJ%f^6@iHVJ9l#FP786IeK0#r(PRYrcYTs0Lv1JTb{-TiF&A~Z^zqt!eHhj!-4m@mV8ust(S#o(Lp3NU3V} zz6k_NB5znwqS_NEDh5@+0qlN*VH*|Qd`otVH`k6<($I0JQY#~nLXu)v$GPm*nVDmk z%jX??K)=_QUe5tY(b15f(|!~oc9r{je@VP-tPb1EY7?ci*Wv4doQ%ou%82wqzM_Un zw9c%7yRE)Mm;d<1u3lvC+?xj4eLQ{u^|s2U71vJ7Mq2AVwE?n`jX;L-6$*>i@>)jx z=msEjz9L8%DClTmofHTSBJ^d?YPw~-vZgm-lM~^eSLu{J2`~dH!pe zP}#~%mw47ZGh9-ud4_WVt6)H3tt< zPE5|0pf=8w35gN_YL-VrEeU3S%52|mZV>1c41t8iD6soKGdc0pXUR_VH#j#s!FJX4 z-O$aC-*l)$+ zuOtwHk|by!Q&`fTyK~uN+8P})tcemLhT@IW&CUQFhyf=*Wh4{g>{wJTcY+-0DEQvu z`M|C7bb7GofV2#s#=qu)70S9Tk+tIg)$>M)B~FAZ33$H7b^74;76xx#dIXUn@m>qi z^1cQYey6dHEW-zDf%zOMoe;prSWj`TfE~@LyELuGoYWJ>@IlkZ2e~<(hp2W&gGhOzaL^l2p?3UhT9S-j(|PLM};Dk zp6da0YEzDBZ_@b%VG8q0B;KNuyCUu9!SKF8CIMup{pG<+85eU0L8+|o zmKomzP_)?%@dA|7)W1~FP||>zS?EQ{XOtCDI=`P1!3f=IQBj<4xLfV;??RUaGJqG| zaB4+|=D*T(;cBorI(>V~e~YJyg)dLOZk&w4`y}D^?Iv~Gf1B|;n}|?-S-Ds|RNqZ5 zh?_AS75WbyF0jeN>Eg*v{U`TXgzKG(D z;+E4U`WUcalV@c|ui(WVdMWVO7Ugqz5A)ZU{Ox{}nPE{VU#P@e6E`zp#JL2lcK;UF zX&{eoGPbr9?XB3d~_nR@^M!^7(5v|8_rKkVxY>br(MgO@kihgLE?WpSI?&srZlI$H17W zWyxyY#`{dQ5zOHm*6~%m*YIu^?>4qrl3T6Zzs=IGTS!35!XTzh^w%qd2Lqa6C^D40 z=J8(Ja;a=XyAc1nA?T4CrHiP4yG|yMJvEtQgYLsWSF@-C8tuh>xxznR`SsSn{W0PQ zHyC1C+kFo2lN#`C2eRMZvYQgve4)g0HJ`sOx(RN%k>J6zng5r%3oPXpBL2|7F76fxQ16uXcn&kXaolq5wlW@~ zhA`qP%p9!w%nKfe?ytW=G{F?+znDQq6JT&9|b#EO2xGqQ* z3&C4Hc#H6_&q1N%I(+gR9S+Zyjl6@~p|LjTKJpLW`L)gBlwr&gLa27)8IP@wl)tvm zU-u2y{?8@3<;wl_RQP{vbwHLTQ2;c*xj*Iio)YZB-FTP#|H1KigYj#6fBgaA_#Isw zDs9Vnt7NOW-+G?6I%2}l!OE$4IR0A`ylac4>=wAilHc+Hwmew_(c!OpZW98&^&S6f zgKSl5Z%P6qQzISX_B%tmrSaIp@AwBRTmz=ZBqd-SZ?9S&fic_9;cN2nZ@XxV2X8`_ zu;#k2+oq%b=Ps^qfjKm09dpFH;?}lBR0}@owYMG5ml1sow=?-p7F)5!ul?;RqRnss zC`>dR!8aaT9VuJi#((lP{*U~Ce?K5~ppd(mL}4R@XC1eG2B4^L;7x{TEPCWj*{KS= zMgMC@;Qt|7fa;UfMZ|bZqP_>la6)Kj3f>@YJ!|}7FjvDt7B+ZJMrkX2o0j0Ww|rY3 zx$g$%t$6k~+yD;$L>;Dmzg;DkRIr|;Ihsvg|8-|>67ZS?>1OQ?Z!rG)z|SM0v>Msk z_Oe>M2i$V*x18rKkC-jI(=ESz0+upxbwUBIV-Ip>Dwe4bGn*>wywO&+G}0B&0|3b= zRLg5j3V@lQ53ogJ%KISjDC~9Q9K9Ef0Jqmsj#Klaji*_Qm-_X;icv~IVou#7t+^Q( z|Na28bkQz=+HZCyD4xf#spa3r8k?IUEGu^?uO^_78c+h=0tbA-e{C#tQ89>R0G*l~Wl}K=3Z%9l`#M-jfFyfV(siObr5x5D6nBriEuNq zO5@->`AGPNz(l4c;IYWmP^mZ*z~E%qXkrz3ACztzzNN>-WEIIxHaeg;$CK=IF8HS8=7hUr$zbOE6Vis znmfB7JA46QnuuN@EGb&#<@PL>kKjv*qPy{r$ev009c{{GC~SQ zRg|c%o(Va&80doXht)&}S8p)%`>C;nN-H@Qkn865P;b5U&<9`{vPK#fHC&As_Rzfc zgCsJie#6_Oj#*Ten**LZg;PHjWGwYOn7&6(0M!2)%5rBjP8!BX`+Z5+)L+zx3SavI z)Q3gHmezDda7t9XX17Pbwcmrf#JQB-)gd0GLG+txyp?dlP?X3*0MY27N9vI))^gu! zJFlG%dA<7pZE&ie6I7(4MxoHnmW{ehlnZi`_0bAD+S*UQ-;*&wPv`=6fMWO)&?~;V zm$CFxgl!f+=vGq-CJi!o*ho4uh4}!1M-WLnjzT{qsXX(pVGtvge60QE=Lp|EMaa46 zQdRqqE_0M|K)YTKR1ysvXZer*H10n?_#d-WZ@q(tyA%lk#exuK=JhdDPF<nWWr%8WqPTTK&a1zi83YNWKW77}XrbXP1 zP)Jo*;u<5Iy0VmCYz>**w~*1xZ=?A(71wl(wRQv0L}c$LB4t090pTkY)%;(wGICM$ z?f-C=iR86^NME8aVE_W<)et=ihFv;}D&x}R&7W@Y4ZhBVaiHuBOs~J`T9D@8dDiLS zJhcI-Ga5z@HV}Ye^3#fl7WSk1;FhBu6Q5gyA+NCG|E+IZFS{qQN;6E zv_BE3$S;K9ehV-+H_52&OIkR@5<_r<{w@;Mk8SjG>h1LVir??1ehcCeCy5iq#pWI< z16JsU$eQKK=Nr!FKg27jSvAjr5LGL+B0KE;irC`eC`(ZQjZkfZM$qEnxB}?b z-wodhfExq6980_MOoid8j?{mVl)f{3QP~9H)akY6E9)%L~O75d*6PKR@%|6wY z2~(FKFFJ16m)qAPI=99ULXY~vOpy1vJ5~Ql8i@9NlLW@8d zjAhtpi&w{+UT#|is8J(o#so=kuT{?W!hJxFvzqD=>ZI6?1GsGLyE*~C-MK0QvaPeE ztxt66pAD!FoP0otGyHYRaX==~VQ7V4;J1T&HcIsI0f5T;P4;RO}at^EL&9BXt*z z{ONyt$Hg2s7G=KqW$i!fqH@G3|*$7f0aDCF+B_ z#?CEvavEG!A(d42QW{J(14~E_Y7oJ~tCnBH*``LdzYfQ_aMaJdX!_Y%$4i=%XfGz7 zr)`dp$^zk9yJ~Pu0^}7n-T5CMbsGaXS$3QMo?I2I?6P2mg#%bpvgU42V&z}KO28<@ z6&xXL1iyETh!Dq>J*Vs5C=k$+j;uUOlnKcLj48+Dl7Zwy&pPP0mF^^?goC5t2GnNR zJJs`l0JJ=I6G;Sk>KmzrKP2oCjxyk!mPEnbDiVTRY{E2++aMg!IlOfM0}2J+zOA{>ldN z>B7J*Qt>!(uV;+d3<1DsK%mPm=cq74AC%umj2yaV5#XG)mGa(tbE>m1{mq^(isrIC z2WY#xK8#Il03I$H6bjA}TMUP+EKY@OGOn^t0#;X)wo;5)NFh6-|3-Bu9IWa_H9NbK z=i~R8p{6?eucWvcQ?!1C4!2t%#;xNwRQUZqT0dRSxT6bIKsRmb9k!5F@Wa?T74lh` zE{I2u5q1o*mK9@@GNchOK-u!ESYuA{e6r<8#N!wQj8N;~D5Z%QCA`tv8p&j>&gBSJ zm*wJTfP;fD^0*~{@X2C3VG(%_KBDO7M=A=J)EbVjPd~PVBb35Pn)lnoOxT$eSYKkq zp77Y_qK|syHG(7Zh9HgMc}Px-TpwFe4l42jlkSv=KvA0U(_IV-dlX zKNPiECC3)|fNmoNN4}+b2>7sP zSTpM{mfMe(-2j#indVI4AY{B(02z)=s1Ma>JpJ<=DXoUoM`&Jg?QctAgw<#2zkyQ# z%DgM>bB84sAQ0+B*W=8b?U(8j|W5b_;hmCq7-5R<^e zc;aZE_XSlTevRUKH=NIfI?~<8lHRWC1pcBgV9zs*vH;X27u^HL=iAzW6L`rA&ae3@5hh()O7o15fg3BKf~IzGwl__YD!zg8h*s?7|Ra zjT<3%`9lUj`OoqCM|)83w}XqcPaTkT*nRCS1m}R?63f-1$k2&7y6)v=S3VebaSe`N z%Gfr*5;TIBo-zMr+adv_>T_=BoftU<)QC3({*ZfExznj^nCuH3<j9qcE=aHFtq3iGat)j z0wc!U1vx{ccf4C5thNL{Csx}}>6D6(2*4d&8i8xAx+^j2zMb58Q;AMETW&o}o~0NT z0g84;xHZ6xf7CGUXp{+Y`2Oidc{X^n45+beyS*e_*c1T@k^G6L1tcr-+KawZqgsC^ zV%~$Y^7o+hIzgzvhQ$aT*QU(=RjxVP2$=?5s^r6XiL`$>w&w{UZZ8N;Yt7@kUwuGu zS~L*4vr{~0BOwyUOdyD#y^LI$MHnQ+KCV4D z>18&D@+#=0SqD7FTXe4TuER>+w8kx35y^m&|I8p)G!p30B5WZs?u!S z2yD6^kb@c-2Q9uXC%W@40t@!muIJFa{d0p_d}g{$yEnf)0*PjV3;UX&K1$^XTiVA% zN~NpdAEGYs%mV!Pdq`6>0N|89!3s^R-F%=gP6tGqUutP)iy`8PMobRGQV=^^lqpNw z=WU!k1B%a>te;s!Jq<|QEzH~ew&q`dlz`vJ6$jIM9cdw-izTh6f%pcXb#LaU%wEm~*HC6uz?2oJwYeLhC;DZ* zst(httD2a3%LcHND>+T#t_5tyoj>jC1S*0FPp05iySLtJ{28K{-MJ-z4w^$m0I}Ia zxjWtx@QHO$fw2qas zCILJf&hqfs_DNbH`?tI|dQ5V^J<5bc%n%p}ZGy?TF&f_tNfm9;WjH*g;mFi&(T2nc z%f(Kac?amg@nr`#+HGLu$opYn3HX=r261_c(e>QBX)1al1*+$mf zG7RxQn1n?N-)v~{(KHA1N;dq&{j9)PTvWP5AL;ix6>!P3b3UGCp>`1dVYu?g&m9$j zs*W73t?j?dZ*Oxux~VKQaJJL53T+#VCQ_VlM0hxeVA41t{j-@UeSmUx9v)u?Dt+p9 zwDqpEH>QV=$%(ChLv=vH|Rg=dI@CL9X@LHa+AZ;%{0djfWnky!7Ww1XFZe2o&1Js`4r zmc!G5Ik~ClwPEe`uozX1^tE3r!O&*|ECzos`q0$xst`EdK^_WH+R zh&>3;`c)rc*U*%5ufUOXmKDUHxa?0qlKOSu;cM_nopn9FzkcE$t}LpHYAHz^Q^k0n zyb2|b9lsk)(f{w3IR2wrw^dc|=Vt!pqoO~y1P|1!!txpN7{#mCY`J)L5oRKMOxAsG zyxMHI4r~lV>#=>o|L~n(HNdUvqxA?T@ONm%KWv^Y5M1FOP|+eF-jd;;mg~=33fDm! zPbXm?emyH2%2XzXGQ)TkvR~`>?|=M1_TDot>Z^GlMnokVMWTSBfJ!1twV+7Hf~ZIn z1pxsS>C($eXYGoDi2~BGP?RQ8rCSh1dXRj#Kl;uUO!D}X98#RZk>ZR&hw;vj@4Ne$BEprVCU&ed4iQZYTh!Sf zoRy^Pl{k1TA%exHOCyYM`Xps=p;ItTb#5!5{Q5T!IJZu=yJ1R-cDMHX(h>dHQak;A z>h_G_d7LsmA$zx9|C57(yjIK(!`k!hq5&1UJd|Bh;s=i>UVc7Zoz|vN<^a!Lxt-}C zkb)5pE}EVyx@X%x#TBliw^^h%C3eLJ{xa^qgs=780m~+JwbRXJ=Ozd#K~xpf1HOBl zxxs#4+;1=XkbNYzff8WCVE>_g}m z!t=^Z(a*RV9ue!hNic}a;CR{BP(2XR@wqN@`cif+sWDHrypqXn+x|P^yjCG8)%27Z zyp&fr+v6gZ1`jD0a)wM3fAUl*w1d9>QKNq#C#UH4+s=B&*hQv2j@nMUCWN)K4fs{* zW~pl$eB!K(IDY`1#ppqfP#nAO!P|bP?1!cUiUX2$>|&pr-Hxf3YI!8w+fV+GCXjH* z%XWm5e;iCHFU|UJhza;D&}WPvL<6E3~Y%;;M|o zqSR{*q%&#cnxB^Eo2Qip8qXAVm_PFhf?-82B02^8-4RS9zkdE8`PYn~kkHtbWY>VA zpxs&yMHwEH)JazxeTdtLhX3S=3+WH4TBBBydu<9zm3{qdd2+N>%k`g8cFsRoMd*IU zilgom)gl?b!A`@Z%@5*I+j_en2X&er(+xr+iJ_NHAMG2ea+@IwEq}8{D37LH15SWS$41##^_xNXch2-KaB zmR)@4A4Ws@C$T_GRtFq&NVhgP-V(byUJ+?ZC1z?L+g1z@_$(iLyMM{!v2lB$x~h6_ zvQ)6Yy%=fu`D?|-_I1WreslEswnjnnp;PVlrq<)_ z-mUrTvtEE7`kXdZo-aQ&5Mu7u;ayy2=jD25TGHNHLmKNCU0dkQAorRQ8T~4=d#PlZ zpfqq7yEr2R%Yz0Kr6SpHeP+X6ri`|(V;o-X*%LD|mXJpVpkx%Dg#T zb|qq3bUTO5R9#pAKioXQ-s<<*%J^HvCO@$pZ!>FVL}0X62dUaS`pC zF|Bv1KeqFDQxW+fOTU7b({H-iJ_qOdm%LRzM;g+6)c2Wn7rKa=Io5XFpPA8GyGYGq zRJO?{c(%K%U*JtMkcE9lE(U}(Ja4Q$jec_`MswHM#mn=%KI!0M^0EB{5QBui# zA@4gllPL)W`qh;|z>BF_uXQ=36B;tkX0ozDxMEdx>w8`H@7zvBGEz*)W$qH48qBxS z&u4CFv}>3)ZV#JgV|Dnp<2Phzho8gU_3N`wH(kokNRJ;3s4rWa?It4mrJg7E#cu5f za<%PCBt7hAjdH`jde8+s;*jb9$~RcR*8kL}+yi62nUz#O=oH=Vw1vaza_=Kq#&2CH z|Fq0cRgq=xrJBZ-^sV;-VucNB-4b2|l%2pU*zq7rEG4HsV_uVLE&&@W&f@bv>j4*u zU46D4pY=N>9egbwv-kj&_5OG`x`>LKzl<4%guU0jk{D3#=zPM(X@os4i-XLU(-5dp z?fc!V{_cg*GAv!>-JTx5N-ndBb8UR=q+|8Iru?vYarNUYF#x25YA$lM|611_GvliA zbDY3aOLes-oeRM=Wfrbkr>&M#CaA<=krW_H*7BaOj$l5K@@U*%&InMkXIL8+{>g^^ zGd6;0iWDIF|75wuRF&5%Dnna~DYWz#h-7jki;o^+YnV8racxQ@M8qt!=ahb(f135g zb+58#=}khPvzo$fA_~=l6V3-vQjc93^a@YjG^p@ebSCiU1j&znzq!x5ZE-pbyz#tV zs9&LVxBN9XPx$W^M~}3=or&AgH#ub>|3Rp6XH2$pTw=j1Ndxbo&oK1U;malmpIRAL z+<&iMZG8B8dhC~x9Ueo63B6_FhM%iU#S1vm7JQs+Wgnw>o}rux zOo{RChGjITWI53v2oD!Wsld4tYQ{hbNlRD;9(R|2C{96x?f*1kkZkJ zhLI+*i34|>{x+I4WHj&O5k31w!Z=3XsXa=H;xYd>JYZ-yJ#&lH6nQ4-!7qgJ;xF03 zDh?B0xPGz_sa9~KgsG_zrg9L>8)$+rBGn*FH3?eV3MCksD>>Oset!sN&b%Hf-hP*F zMA&Rt3)XGoyaZvqgMOwuapBNxr6x!QCScXk=UOza=LBFKwDnh=-2*0UbhJ6xaPwpF z87?ORXJ@tT4AbPVzi-}q=T3?8QcQ7WDx^*#K2m9MCvXu!=X?4f|PhW?c-<207X#sr$xAF>;l=h661m~6;j260ISnzU*Jr0b*3=Nnc;-g1pTfpC8th{TbOny2z)?1Ul~+PYfRvWc$lmJTXP+F z{xls(o1{rOBM+tYLNkgtEvcNXj8;U#3fwloWlRg^NL-A0h~~m1VS0u%xeZK4d37Yx zDF4jyMpN_fv4pYAh+s$F+~WI8E?Zn+*)m>K7E8Rz#6r&KRxW`naioz!!@y4I?FU`s z1~VkGY$$W6%mlt;_?dhM%?k^=JWNacNVy4|P78<<7qqAOucff@pS)AJ!@|QO!$Q8? z4N9b{lZiYTL0;b1QbAww_G;-E4u@^&>#LyWlfc|4nBqH;ygS^9vUs6Bm=AIw6nqC- z{9WuK9F8{HA9aFxLx}>t!^-r@wVlkho;D`Yx<*CtXObcYE+sm|`nLG0aU~QrIC&(~M5T>?}`y;IrRdhP?FN z!WxIu;!I|8*MTFUM&q|WjRXVz2mQ%K$=q-S%PZPn@7*V$Eq8Jj3u-R}mA0+19~SgW zGy^rj-hQ9AWwVzvlM^tLYJ|5L|7^qHZ(3pdi}W{Yf@43y`tEhz*IJ2;AoWJiV&LN6 z1sKv8?U#LPqISNj+pf62Z@E?8PUc!p1Y-gl&P|XwdB@?>va)4bdPz2#a%dJh1=H*T zpT7%x=600uMVN5z-iN!uDXgM*a2IE?$TMU}A%!gAa^5!8$~AKcT5lbZuj5#@>y*ja zMgfHu09_mb4kTqPqOtEdcSzGBbND82eLKjc)E7x>u`A6&j3Q;hRcO|;*vuX+|FDg3 zW6Sc#2~#_W|5QSg=*W{}q;hDfPuPYOFDFT#`T_;^)r&OPs0f1+h}6AOH|Q00U*~XLyy~|cj-@NmOe0ZI!?A8Vi6-!MSO^ZR87HGf z;A7ooL^C+bx2iXRaRQv8$Ut*oK|iCJuiIG_hYR8}1*|=6vmSgQe7o4kUsY)y@yoHF z@$@}p_D9ue_9dhK(onV4J7?@T(7JWJc!{YaJ zr%RzDw>Y~=Kp08vXT1Og>vAOH90Fc2X#pU2@CYnIh6s=b^B&d)fQV{{lnd+F(HMI$ zmdc>*LNr}aD!m;?vn%i^l_7K$1T=%Nq5f^dZ+zS`p&g4fms%EwNJ|Txe6}IC6NreP z+W}d{la6ZD;AVhOg=m{6RjO&o2u+KKTy*?e6Qv&4!XuWO1R_enr=!%2C0yow&YcEF z5yb7W3}}CslmTo$aL{d_o#WciYyUu9fW<$rxg%0p7(qv9IPZOfsv&6J`!Vq9bb|J84%?PcGjs(ZRCxw-&6Q^`Ae3i{(U*Yq8M zc-ZMkoB?ttTFP&@2H#}24(cI^64C_q)TLN79%l=oueXa=*gTst{Rbz?ek3%OzW%FQ zpAg*ViI|pm}v`~@GUXknxh?? zl?fCOaLFD_045A=e{q8O$Te@MXDzcNR1=DwaA|aiP~P6H5G0oLUXRpK_#svcJ`AY3ZU9Iq zBGF^5LuXKc#5y)a8&KpJMk0$OL7d{sc!dc#$C&Fblyc6QLzGGNDkdMk2OKDgP3G6aTH5+OMe7(AwhjyIG|B_{)e z+ptD80PuLR=V#)P-{j85-)9a)6ge7db%t}{l-qjBm@eoab<4OR?SD%Tv?~t*I<07* zkPDzy%Ro-z_arZ98#06X|FYpHm5bpFY*;ECB$%_*K--2-#> zhfLDKde{d_H{I<`^PsWk9uRVKC02zgkfE0K=J6_YHkx>bgL-N(f*{VjKvGzVTh8;m zeGJ4G^o`6zvA+A=({=3gC1{4-t;jc2q@(#0#P(a1`{>BP${CymeBj}*1s`KGRE;+o zl6z3&53O~#Ts-!Bk}v-uXmcN*!0)-LFO^;jXmz3F7L1$LQkUqN+W?Bj#ULwrf~oyHwGRcO{1cnhDApKqbpyP1=QkU zAgv@&5uvsYLUTLA0-DtR!m$u3w)V$(GehE@XtFpJZ4-J1{9^hMHVEi=O-JC0JT}mn zS&lS%s8R)|Nr`b3TXVngk%chTP#0!pY4+@?Rnd0>PCf)*YZ!63jeXE91HF*WXcut& z^82r?(2i7!*$t69#$2lahg}xZK5UwGjnO2kPU(hftn`~?A#zkHbQI<^S{1zLC7;*9x{C|7QlC_XVm-P zs-bqt>~=dPqIYl?kRpYEko@B@QfI{E&WjdS5c3$v`#_gVT$s9!!*7W00d$k?gLv2B zDBZ9)=XO2~Cx$`PAh|N07_rwqT~c!#(}+@wVpCgg4x!=@fC?X5wZ2VCy^gn>2{)(f zZYkbgqvTRRfU3?+Pkkt~vl7hFW~)2*2PKgG2L~DYfT2e$r$Jf#3=kVtB+2YrSnqN1 zCS4;)Nj*15(pBugd=V+9nJJXh!0QzN-`Dj!{mgiE_H*gYh{Y^JO4F&m`kDK{;6E4n ziQo}4kDY(t0+9&a8*dQb$s-ebmBD0d4hKJQU0V6?GF2OY#g=skz_J$nKKH(_7=y_v zaNlo5-VOcZ*J7xR;&CF);hMiJps!?$RC9L%b!B7RlV5?f+jS>a{2t^M1&NDbU#ux| zO_w7xs&dGPFhHih(Zc<&x0fXP`uK_<``WFD#YcyA1Vw=`nYM}ugi`#nmg1g_x)wlB ztE-aC%sOIhQUaRy`xZ7isD@h9UpSjA4U29uL8saHkvDripXC7jf*x0-L0J{RCEJwHeC*s zY=Mb3JXsat-6YK?YlVpyX$;n6hQoOS9L|KSH@H&~@>&=ux)UY;P{S*`(io!npo7L6 z(6S@%cNQ18Nvf1 zIGwBpRd*g(3v#}&)9`q9vEt)ht0{Y}>lnO2uzlAL^xofX!4g2~5O!|yhnXqS0iGa$ z(7GB@_@jumm}k1}vTYfS-MgXWE@lME%(cK=wc&y-kkg>AE4UCb%rd?(Ji^wvm$bqn zIwE410``_d=mx#V7{#ZM#UD{9cq*>K7|nVwY5bE9L1#h?{uSo;u6>>6Pb<525Pj(D zLFxJssk6A)6@eg`Za}51z1u5x%_z#YTx~Fkia7=s+UFtI7ChPw`||6mpqAQMCBdG< zuo}VkA5PI4x(qgzi@cT6Tm(kLzab}vo*?43D3d~?BZf`jd-r(J4$3$nJ=(u5XbJq< zmte}h+^K1?A#VErDGStPKv_)l>7|a6xc0Wn@HCe!Ices&8N}cb8qSC@!2#1ONwjts z*Mu}_Nt+=$PAK!&ECjtw$AOn(d(ttRq@ftNXFJ|2kQnd1QhjeFoZKst%U0v8g{}oN zG*A|%{q)+HSr5xt3jQ1ASL)Iwn4ab6hl)2NA&s1xkekUjO9Ap9*E#LxL zs9phL&eX%+*IcJK#|1ENwt#9|{pk^)rR2j#OocI|K_r$}0Z4(gPzRt{D1)xydnal! z<#!j7i;b+!u^utPhw({_P^fp&n!H0Mr5g8y(3R^c*+ zXi5oNiwdu$a%W7H>}Lw=E{}*n{#j`65L#vp5Ge79)y@6JO_rY_87HHMzPuw#lV&eR zq&_UBW+R6UM5VC|gLH(WVnw8-^<$k#WQfeAn+mj*pS6=6a zc=pI_wxb6hk<pJLeQznez85O#%D=9$ApTx>BDMbys^*#jF!yv^@mV zw*NdQ&GUtU74pDN+rLQQHtE1cs{c?-dS*YZ;b5WCDok**svD%UZ{OqKG`6#d6w(#a z6eSV2{sYwKU__C2xWG*tNi==LZ64UI7o1FF;T(6D;jH(3($?uQ9!)ehRDJil#$)_e zkwb{4U%CTjLMYxmMg1tH*h_83e_4;yR**AcQ!gRm^z7ZhbUqIXTPfR)rU?69sxcEC z@Hy6Pe)848ZDwo8OpYC0%8@p>}_F+Pul(4?4sHv_hIU{?v zz43o?vXNHAj(v4w_q5V|$xk{AZHRy}h-vsR@eQaj45yK{Qo4TZKbsvmob7P-t<&R* zxkyJ8V~$LEX0KJlkW$ARMoG?8V68v1@BSFgq}(`a<<3YZ0;s&_RA|+{hF7(A(^q!5 zP`ryTd`o(&Elq4IgBWhoRV$az9)pw}BSTfm{pW{?G=vFvY?QR2!cL!#hsR^{D1QCV zA4Si$1l}p`-a$jN6dvYny?PYQ zjh6(6ruK()J#(r@w0#0I?mNg%6EVKh2w6eauBMhrAHu*sIKEhoW}4Up;}jqJ*Qclk z9{Ci0`oxP&Dq7ONaekvI5NpIyQ?yDV_&v`&^9rpVG@?12!~MG*g{Vv_G#$2Zy3>*j zDki`Ae|bm(A26j;Z5C8O8GMc#EWZm2)q~8x;zScDU8`%=Pf)!x5@QYjnx(5~Hit;! zZ0DU%x`euz z)`chwC!Nrdca%*!|Kom}z)<9A7T2n{K=m^f$bI`S%NlU>+>c45=FY6e1g*}$;epGA zgG=Ys-eM}7P)>p1$}Zh*GvwyxU*fqr=s}AzPbqpsb?TqQD@-m6SOJYgnQ|@ZANf<; zh75K@h!m)4GSd2VM)3RCUMs=5cPQR0aiWk@FB8*Kcjqi@hA@?3tD+P1NVN zjuF$N)QcU9QNGEUR;qdYo4C>&X4iXDEY*~CZHGTe8bk?Db$87F{Ih*B=dawLdMsr# zmZ(J}ybso%b zFOtBNlHS?(f`w{szHq@UMwd1XTxcy!O(iS&uT09xuMYfqP5)}EGG0*n?%%Fu_JC?* z9fz=3{bnkaYny-63~5L-8g=D1RacQrA$+*Hx9UDM10dCR|CoIvkT?1P!2Zqt)P*Q6&OoNR>pQ~43TnB%9!zx&dz^)S#P zD`A8H|MPs7*yEsz14M*SPuoma_DLtGZrxFY*34rbrf8lHY~tb&5gtt^xPii0%k6N{#-_KvF((DnGvENRQ^_l7P8 zk85hFdi2I$t>({v5l)qPy(pDO!T%nhJ5m=nB^PPv#4w~Hfdy*apI3n-gc2m=ph#VR z`qJ_;WSRFlW&NIYLipA41^ov<%9?)j{r}AssX}&Eo)C);0c|Lz(~=i&MAZDrk_&pX zyWvhKxOx4?ex&|W2$7PkBTIuCWNzjjQNRL}cS50mv)OI?jX4cQ;wF;cCNc(1_umyM zh-pB0Q`rv1r{`LPGgw^!0eg9&>`802DFeWd!zb%o>Phih6B)2pWkBbl zZ3`3~Y$DSxzntlhOm(T!Fk~rIiJw6JFIATQ`vZZZHqS-L15Md$xTSA=wTXLqX-Q{c z-}Eg)f&VT(CncvD_YGN0U(aVqHzjz2P>~ERUa^!f`i|pp zPtyHI4s+pKi74#LpjM;Rw03|@XdnIZbos`|p3lw4;X0CK4zn|Cn3l>$blV+^{j z*PG2G*go}6jsnj>$n-?^jQCWCNcQ`Ho5dipw9TbsXUJicAyb9Ilg9{_usML(CwCZ% z)xP~u8nXorp9rMMF=_%jtTN<@f@=6(3cVXhZ#{0B>L+vqD-rMb8}WxNw#PRLaUn?} zYt`-KlhwHCK|%VDeh?w#f407lFDCKW%`X$c^OuVyRU;GYM1bv(#z8kU5L>7?p<}#d z3{@ad5CSRLG`6IqmR`L(0+r@ZXEWO+N9T5A?+7y42)=0hqt_XL8}cZCM#(zk?&n{_ zA>xWGR#@S2IjevabmIt`-~`x4w18`FRvakj83Wr3-#DwtjEgmNSR*&&PScw!$B?fB zC88cfv-gYl!B@tBLe9HSUj9t~{r%2d6jA!sA=!qI{3s5dh?^OYJ3lZuGU!N39(4wF zgy&X}pQt*wV!L9r{>&6v3Aw<&9-3s{>&(@{#L#jQcsEp?neyc>H?}(Yaf$an+mAAA zqz}C$FgFE|xp6GDA1alLKn6i1?-`v&5*p*tFQ2w%%>Xb-aAXr_El_imgUDz*e}VST zEpw=xlI37D4etHkG`yxv=(T0SKuQ3rLWhBzL;G%DCT7=iOoR{K*+u^tt9hlJ*SS3p z>5jf)yZJeC^3;katRlRMQd8YZ5qh4Y;fz*tV4zRO;t^x9@yle|piLtj1d4hZ zqiN1@&YZ+HV3%Q4V4n7TT4?oV6nS-+0|msq6*pC606~q9<}ucKiY#MtBqOKZJ+Ey) zKe7(ZaF#COK0OT!wQV`OaO9wxM>Pk?_O=VT9sU%^#eB!}wB>qf7)3&feW0B36c+x( zpqSqJe9s^qSr@88{41Mk{aYS<%x3(QH{B+8IVO7~DGn&bF3dnNQZSZJ3CU81E^$qU zzUN{%5W+Yr_skL4u)MuiSA#RqSJRiUFcQq+AdZYS$_@`yc`_R1ak00#om)BJxwK>K zD<-~xV+zDWP~r8iw9IvB&QySn-kh+q2DUE!rn-#n7r!9S8wh?B1(bpMWF?ldcaJ@~ z($bNwv}xPSXWbbw?Cowh==`=!#HV=td)IxSeV({211~(WpKDwhg~-`noMBe(1CFs$ zAzni_Qa}@b>?2;QMA;CiA_}^6iZ^ZTm)#(?FUujfEpm-B==8CWTYr6(fqFJ-@#0Un z`+7-iSZ@Xr#2LC7(!2){v?V(#mhJ0yaJYl<_v4;i#Ky>xKrX-~HnN6%^+f4jMhW%B zPLIwGbp%-G*jmKUlQAE+=)niQ1MkFnd8MJ6uF%2N2kO*%nn0W95w9iQeaKz>Enl2y zm7jW>Ah2aQTJ$O%5AZzF+rCS7hVg;inyekl9By=$AhFJ}Uu|(JY2DY%>%2YN59)7| zcvZ|i*bj;FD#>Zf(?I^AsPZz+`SO`b;S`Hf)Zndr{lV@0N|&>oU$cNHA>;k@n@ozz z?4yhM1Jj5k0ammto~}+`!QZawoT$_y{5Z(mDUR6(PQj;%d982X0l*saY1aW`thh0my*|WEVsN? z1CywhvFYNMcrJlOsi@Y;zo#Cm)BF{jrtkPX^EQM`w(%sabmJWN`eJwapdL9`VV?Gfnl-Bhy+WJCbCa?#0-&0jIKFihD zPDjpgAeHe*eZ8?shJ(y)%hBYUk#B$8M;a(iTh;8}kXr#jri46z$yt%7gSk}nQS7!r zNVT4C-J9FbUjsYS9jU?Jy;e_ssB8eSMJ)3JwA+Lo2uDUTU%*cVOrAL)dR_PDt~n>E zjHp`PvraTq&>QajBVg5DO9FEeT{q?$OYT`H+9Z-OXmX9o{A@+<)l7R94F4+ z?0M%apcn_w9J@@swt}Pfyt_E>A-UYX$?G{T(9`JkWm$s6m%tSDSV`W8ofF4_^hw6~ zctWhiG$1)5yj*(qWNjR73AuF3*JO|a5QypV#U3{LL|=+-hhK{K!g^FweJ(?A9RSj# z;_=SvF+=^65?Q(qC&sMTWJzS_4|nRhwDaj6MhY8y4UHP9r$jj!aZdmQJM*-JqzqaC z3#q=_w%=27rG@1A;}5uYQzW@yBPpMNMR;oMM6(NL!xszU)uon5E~5ZEf#RpuMi$kz z?%elL<;e@lJUE~IK(M+gjPYTI9ALJP?WGT}LJrlvBy`X~6Ue@4Ll(gHM7meK{KV+k znTL^%uu(~9@ALJ|AXUm-74!3bxx7fm%-1W#+x9<>WXJ-!B*SX3`$sp&K(_0c1PSGp zQF^p`>~Ny*rG|FP3yl#kiai&nK5}$i)0PK>f__oB4&IFVeoJ?|z72n$7`J_d_` zXW|L6J*LJip3UY0itP7wSwmE|N?sgw*wuG|jB#0mSAOsInaTT50Y^U@aD1)T9fD50 z1h27N*q1%|rXD?QDna7XP*q@z_ig%}EDHRM2|ZuN?Btu`CbQ-^_GHxI;30$o&B~8U z;`~V=NbmQ6ps2Sea{lfXnb~Z{yh8^V!2J{3*_Z{TK(u=BL+?&rQ(dcEmKe1e7u0W~ zF#3XTc?^Ns4oPV4>xO8~bcf=pL{^~Me??%(A>DlY)!D}TzS~Fw$i8`sZZbwvcO7=4P|~dhZ2w0K(Gm^Um%l3aWe4 z0x-fODleQ>%SF9FDXjLS{6mRX9Z_r0J{9?IQXQ`)BO zy|EdJ*SPJ)Kn^uPLM!XKI~gfScjfwXN3W9;jn-OW>DIcg=^cH$Muh$3O_NV5Ne(c{ z^z{I9m1j;Z_F^2?1?N|z58OxRLHI5=!*paUXuvt5D;v`R(9yX2g>KgM{6@H?D3#t@ z@`~?LgF|J{L%r^E*vlPyX$7w)689wn_13N@A2YYaS+7Z3-z=#9wb3e%Bj9qi2itUK z8*mj-xYhhPo!@*08Uj zU0}MOkR8y#mr@9za@nvRxb>tOd6o=7UgMK6h*wAV3@(u#eYu+D-prtH_BofdS)#>- zDYger^k$e`5dBhj%zXl+>g1)z-Yebwglfty8A*396vKJnr0LtM12fEQDGk(8H{&0% zlacvVTYYgV@a?_C8t+4kz(BxXD?Cm0y;PteHa*b-Ykv3|hyBUY_0@p?solqd8j&Lu zPUfk6o@@Xi`Cslq>a++JwUZlVb9*NvqjiE(@;bADhhNydKK0>~_04#NE(Z$4kcK+A z?>+BnkHz=ZWA(b z>gE>{5UBM?-ctkjA&)x*!s1lvp$AN1kyQ=#%-(O%0k^0fzk&qm37^5ny}h%!9J?M| zsnYrRBk}IY;#9!u^+osC=*UXwpj53PaeNO7c1C9HxV~yZ4-$r^8RjADYyO$m3`waE zFFR5_H_ZG3hZ)eXJxx)%zine0zb%CY8#u+RN~a;uAv!$JByE;hdeFEiP*lUo^yLKb z@Ci}a)JYKV0IPbyLw5W1s33eZzt{V7A=fQ}1VF)R+5wL3kz+4>Jd2yxvJ)=sF3A2| z3qwrkZJPHRY-@a#nhc>&J zUqALWy=h7iGZSH)j1ga0zx@V)%%TtHb~vA9KIKK{DiCdgHWA>!K$u3kE_bYkp4S1SD&QZt6+{OlE?ZFg+p+RLKg5Guxws7YIB6J;Zx zb(2P44X1p&)Z28uz{%?-waop+oqn)CussAdXNLf;XV4VYF@9jUZ`3ftnbFdBSKzl4 z@-US2w3*V+dD6Un$Kzp|38cg#PlD@fS$_rurWph&8otmZ7Y51<$%kczG46$Am$llJ zaY*uQxmpYQi>k*rcs>GhH%RbAK<*>0Yu(Fg#zGx9b7kw$-3z8RU+fio^%jr*O{Y)A zUgYRwUMi$6G!6G>zk|2d{4V{6i<;Ui&m$ike#>NJ%o`tU#gkOcJ8gZar{x#6tS?tG zHE&C#)J5z?s4-XJ{?H14I(Y^`D5|p05dim|ClGG_R;53QSLIWJ&+xvoXslj z5}u4dXMcIMY%8y{^jO>7ZWz(l#^0G>$vgEoex6K&MeRxlPT9wR-4l1?U$#>&QdD|V z21n(4($ex$ofUE5+FD(E&q$O5JxuCR=0+6fhW(I;>8P6Y*2$FYDX_rGG3Je57_*pw z?9?Kkmms%jU{Ga+WpS{icrMq^Z4Y`PUvX6CJW3|Yn9rx=jC>QUilE-OMPe} z4&IjIbodn^M5bbJ-St@M)X1~18?!3=h8)uA2!fx!g{YBi5TQEOY$eg`^198f%mzR< zOSwCuyliqS_q<9{`Atmv;nNYgocU<0Exz;UE3kqd26HubguG69gw*hp$@pFp^aftI znP1Etj0(Tyz(`u%=6czP3@pB@&$L0Ja^M7$W#`=+%EQ2~@4v}?9dTgL3Q2pxHD?>~ zUL)9~Od9CF6RXwhMF=Egq*9RBt^t1+A3i6M7o`QVHhLoEF*V`n!(=~70i#1uE!-HC zNsu2eIamL&986le5TK|)bEvIAU%c-8v%Q#8@UXPE0m@1Kr^D4%j4_76het9tw?p17`MvZQ{PvTjZSg_;6<7W;a@Nlz}bQdsOwY;yVN?9LFk8-<@ zn)}S`+1Q_(l{c--|)vgB`^BNl@EIdp)K~m$WtDlR{O!EV0$d5;V`j-8ST!M4| z@i!aVbN^e(vjzQ8v1z;ApMo zjg#-mvp1eDPStB{Kk}ha!484$PY+`PH?;w-#uQ3THoNtZaqE`X9WQ&B#zGeV1+Hnf zAP?>mErD~`Ns*4RaGR);9q!4GAN-7&Iux9heI_Z*yRhCWZpXV2a-sCxjj`Rg#*pDX zw=lAjZ0>9Kh!oS!(uLa?Z#Upp4Upacm}_(m3B%rQ@uo3F-T{}!?fW`0P{rBdyDGQ; z_9k@Fn8Hqx$*Rv7c zsOYlC0)knPFbiYs=*R>1+ds0%nFIQj_ln^Iwt#qQPq|s_t){tE_T8>mZ}8Z^yUmgz z73hk5&jwDWg7kyxaT`G{6>m}A%bjw^hduLa+8^!M<_wveaN@!x2HFp6tvPEwpEhB$ z1?x#KOUtqA%_P*aAOF*4X zJ$ON5FUgUUZQP$ILJbd^;dI`EdeenctDJ11e}a|#aNmW?U0Pz(WVacS1pgiS`TMkA z@jaDy`|6>4>Rptz^rl{DDXBJWO35d_+MFc^oi))J-r5*i9BG=FCYKijW#*OsJWcLE zj>;C2`)H{gSCD;^3;D`8lFHU-a)PN{>CX-31eJ*zg6)HVu&YR*?=27u0tcICCS`X` z063ndiL~wJO4oMs)~oyw-g|9$6+d|0jq}xJX}mp%tP?CAn3%I~TNIF0?_vMWUimlW zKR_xehHhS1U#O6nUTaVs9JFcm6sTMnENH1z(-K$?eC5M%eg>35QQ{cGRqQ?Ecb|I6 zbm%4=vP3_xX+6XBe@&wp(B zxu&o9Aj{`xH|+!f0gc_9HI2!_@xYo4AZ)*@D>(d7Phs_5GGhf3yYLp2dRiA3W|iN! z{n|DcSd1OjqtkCr)jG9JtRfCz^~D%CTYF3P^tr^%Nv#nb5l2Mk5T*&)Qg(w_eK^Ii z<`y*8Rd-wWoUMgx`scHQKe`)BqG2Kv_}OV+Xa!L~cwc?&dQJCqKDz)eXd`rBn{B&= zfXERl=dqm)I|;PPFUlb}rWY26-P6a{0mGV$jm7sx1t~Ow`m%MjORJGEme|!#?m`Bm z$KoCxVYo1Jj*OxNWmmNY&O6f@h)gK*2_Ac_7&`zNM`6gxolky!b-6s`p=0m*RSyWy zK#AosYJs23fprfCc6wc^l53(65Njar26yi4?8y2Rn-CyFNxW ztIE6JS)QsmLFWLCAO9<;!4da}SA*j+njnb=>|Zw<(xC!P$q=BTO(3thK*7pWjp#3n z*X01uENM|3LnY=zoPo;u1n)n6Y&QQ?iTf`(l}v@@o)xA|VA(v&N%Y+){`$i4mQ3N2 z)Xt)y03GmvxD|vg8Z$6-AGu!`Po>+MBv=AX-m5ouh52amLcM8=02C9Gq}n%=RyCWy z`gHNTo&4R4$cr)xOHvIB?*Fa>?drVSE&wS1`+5Xz+;-thGhV(4Z=IqrF6z|KG46C__Za=z{V1S`v`RT}fHjyUY+s5x&{M zZGn|Dk~7uW)4R0V@Rm=Sk%V5ak4R6vyP4SjD-;hnSe zt+V#1$$SB>_2nKyStr>}K!>ze&7qXJpZ)&(|M`L_$Q=2Cj*QvH-WhA{;Xc6{i%UP? zdtKJVjHLu1^C$!8O8TUW2Z||m&=!BD@oX)Q~4a~cWX>UjmpoY)f;}}ehY|{WAWT26j@fE5Y?;E#6QeDu^myPy! zaUhcOen14(xQt}s0AUFf%=j&*;Y#XNDnB{@x(8wF&EY#&ze9$weFTO>=6~w2IY(Q; zY=9<+_Wwrl!{+{PF8*&W=5r|jpV&o7>q1JM0J4`BBP7V@hGCiu?t|gjCxorUGvt|R zU3Ot3WgaVn^L+%6NkXBZhA!az^TSA0l(!^`$b+(Et4C0O2rFKurw@jI4>?NwAk+wY zQZo_{6bj~H--UIkPYP-$-z7-o8*kM^9(K;oip#Jc{zEO$ZbfVh=Z< z$PD)%h#YenaMHc|DK=v;-}dcV!*gapq2Ykw$Ga25w#=qM+s^FU-M&h3&qgz-3=a#t z*nD@BM%a0}?oL{$2OWVel>Lvt8`50a&GxyB*DT6X8|YNJ}(EcYUXXw%!5QPg~&M2#1o~ zi~G;%2zx)x)#gi-VIdn5g5WLNEJI}R~=Yiam!OajrgT#gj$~qZB#0rJZhb_afw5l18GI`>%#!Vbi_yYux zYbT6KXCM!F1mR&;+76p?w6}imA1GNvnKiF}KWn@>NKIf{p(3X*g(_KTn1KWpo!T}# z5cQ(4kGc>b-!pXE!kJs#>yGX5Ay*`40S!?fdq~efS#fI16r!?_jHt>GMcT$sDNsvX2!~U}s^s`aXAp9G!`#eT{wsNmWtwH%wLJ)?;Ehx)1nQl(0&7*Q%uj z5pW2b8R=iU)8HJrwE>V!=9q8x*?jbVN$*bZ4X#z3twjL%rBH~V-HojQU8SO6>1OwZ zwY}ciU0!aJdMNt_h`OCs6A-f+cET1gIyGlHwfrj=bW8l&&~Z((3+PqWg^zX@aEH_Z zt%SJEM@6pBxYr}RYJwKR!bfBgr~u;M9S-#iV)9S0@Px|`;$ZI`-TdkuxD|`Kd(#b{ zf0yHY|CErokohL6Tn9<6BX&yM%Yc|yi3A}EMVyw2CB0mP^r z;^<*00#u;XS6TfF8;^_zRn2@o9QLk@xQ5l{l+%N zeaI;I(jLHFt1B0yfoGBcI?HR$1u)ER5Px#EpF*(T=T((yk4y;bnIEo2aU}5hVpy|# zS`GcCsIx<%f+>C*hjN9t*NF%^NnPCO@KK^)_P2gU<4!rzoS+oh+luOJC0i%-k*t?2p4+?rOZgSAr$+$=;Qj^u;S-yf*ZMIrx^1SXs6$IRRZ`BziaEXzT=rR4EGdkIT$aR!y)BsR6I85Ai- z{iEk~Y}&ReH&@z?8EvK9@ir5CB6mnxwY(X8)D8F3qKnNAtxBNTmWU#>zJSaFjJmjN zjzru_&Y(?n)2LPVIs5(QfX7fS5D_2f68cVgg5xd8kdfP0uf4X>Q)8*6NVd9m18+`4 z<*Ty=PZ0_P^wqfr6si_J^Xf8yTzCR4_uUM= zV3P->d0zy>_Nu*DN)Wac&f$33lksW<%4FVIAW1Aj?!laK7^D=%(^G(Y3h9P+iVH1C zMI~EXa3f*A`J8bq|~=}hEY)f_Bhp@aTtqdgn}yPxdPt~Y9LLtrb`A*)(JqL5OSxl2cG zetD@Jk@*z>b2E^009MlS2mqS)>M%TnBJ9vZT|kroA)1XNoG%Ghyity9mu4m&uRra@ z`-y`3N{6~RB!|l(y{_&Wy~oRm`PEiwt@`twKyfDi(sphI5>-M4HujrbPSHyPy_xz% z#s1AX4evv*(!A(uZ@?8gL%yNpys7a1c5b~}Pb-1w$BeBTwv&Ib>v(sspYCJ}n=#NM zng0UFiDYy0W+aoq^mzISjrVEX3;N-yd6xa2=f2(dzN%>+=G{5rpo*5~906b^R-7WR z_*k=X#hzw&VY6CcxZc?b&utzPxzMDQgrrw>4*Yzy^V&^0 z4Y%%Y{x+2|+>Ag;pv&}n-5eJ{E3|1xSj?mhvMr$=$@%R;bH4rC(H zspj41pmU{t|Ml#fu;*B+ldrn5@!`Pn|8mK^1xuzUHz;K-E$x zT?C}ihLYl3V!EnJ;naRV0O*GEffmlK>yS-r>s$VidzWgNA3`Ef{&`*d2M6BhF^kBbE#n|l*Nup%{a1f}pMEX` z12M!1cr5)0gtvAOYbV{5!tk4Qv)5Hpv9vTCo3W{EJnbtX#Lx{!a50XW(|e) zO1!GvUJcwilIcZmnNY*;UZy*`Pvyx3;B*hK;!!LxUuM~PWR{p6Z!lsAOWV0?M%szI zK;VSk2-5}b(HfPPp1*G4Wvw_=k=<}oDRgwo?vF}2xFR{Gr zlue;G7vFNryc=r<0N$^Nf$Ghbqd<8U2ux-^*HRuqPfM_%dG6kx`*Of-m5|?zq^)Yh zX~}eiTZrC%3_-aVSAW+dFGXy5N^npFSkSTupx!Jg&ZUR^bpU`-)d|=L;L<(EW>3Uz5QP7GEqz3M}?F9K-=&m(0>^YM~=A zq)0;>o{7s%rUUwYj1~yE&b@{-z~xZNJ=T7*w;oO?W3Z|xN%VxF8&1J?RT{V!|SxPqomYaAz5Y3xaSF7y@HH(cJ{~szhkh3&V=4U4Q+H z{1>l^;Po90G=%l@@4b331b!<5{8L5|9l_S~NE4pFX>j>`dWx&FrE%es6%eo3@KLDqn~i^Ba=XuZ@-(q3_4f83#$N#= z)8ohcMSn!>4MyibAutS00QQQ-Eoj4sY^|#O+a=F z-l&&o(#4mfz3}G#?`y`PgTnwuss3au0&Npr18;n5R9QlXqe~w79PPuQA=4Nl(wGOn zKfaYg3<>}1qEr5>!3}-S{Q%X*UbvYrKWp+;5z2pxCR7!b??eC7i;@<2|9`v@Qd%7x zFxBe_1gdYI-!5b_ozT4RH$K$ZvvVQiflaf2ej}P10oVB7n;LQ! z&dpNE23YaM+mkNvEa+$D*|lNbtvu%dU=&7H@c#dJBRoH81q|$VdOFoNfBy;U7sR*7 z7;sQtch1b=_t>#wu_2sw04gpmj~COdlnWqv+n?Wv&)@jp*?2dVVvEcrNd2vQQ_&Ix z4n45K{ZE!hJ^XL86Pk;j|IcrP=Pwk;9s93bqq6;iex#Tz1aKaNX+n0;y|TUdAvF=X z{)Uw^QZtYg)}N7Tg1gs_`zn2^qalF)tW{ELUb~=w=_z4V8s#A33Lg9=tc1Fd3Pp^) zPpBP+h{x@k)=H)yrR&hLMd3;z!8&jp3l~d}9s`c)Ni-J-AV>S=wNb78538Y?6PfhY zThi&!Uj#_O8Jh@kU^w()C2K!)`qsUTrq-v?jQB|8CG4q+(dq%ETn*``bOa3{ulF=V zT>Gu~5Rp|Fp#H4I(r-UjjCY00teQp-Dxe6T z9CB)*0T>qDpD1zWT?;xQE6bKTI)a2gX#99c#lNKfja@|ZhO{ssX-=#i6_9*JN09em z_xhXR|8PH%N}+MSe&z;O|88h%Jc4Oql}}1kQCX-2LreCZRU5k&v7X!@0MV5( z)Ru+3ZtSvT1uuWOjHWopN~7(>=S-FQU{A|2(h=40%(Xi!LNza; zr(l!SG7xYV9x439C4&*P5kEvsK&TK8JqaM6Vwc-!bq8Ac)D$i z{6zgmDo^vnE{Kk>vY&q|o0Yzy43Rj3!KsdVl?~0EKL|W3f=x-=cT$}}ny97ZO4 z{L(z~3)MfBAdQiDZ<&)N)sxISc_jug-DU>|-ctQWB7*R=;@l@_SsBq2Y39CG)vuy@ z=NH&A=5Z8tOsWz6b+xudz!*CdQzxjFMR_-jMn7RSZM>2gMzz;8Oqi(61nInlq5 zO-b<6T3R1RsUG@X41Bmo@b(R=;rw;b@E4*z@(Y>!R$Zccr*a5<+GSr6)jZ7m;RW;p zxH-xmzNPk&XJK>j89X^klQt+3$&&07?s3i)|8P8Sp&?O3?O(9>g}#8RU_kKAH+(xs0it2BF<4qTs z4^V$E2U2{!7R+2i(|?;Gg3(~e{6`q*E~AAGcz9_l_4@r7Db--QP*jJ*qEK=>m2aE@ zzdG_S5R5j!)a0b-kxtEkrH^aBTmHG@qG46Xhn7 z{!9{8gCFiI`xhip^O@5y+~BHt+WrN7S{Y24fPjevm9OT-wLj~VPhq>Ae^bmprA#_r zUq$4*_fjo_Q8ergy<7@OG}SUt&C8s*`lBy9wYQqeZz;#aa9Gl9X|u-hqDh_g{S#}P z5ehcgEYhZZTngi-<7esAzZq(YIYtSE#~i6C@Ti{a$7(Ah(;7>{@y*okUmlG#G4kuY zpP=?A#Bq$^R#{UBpl9DbuUDu3%=dXDKF27bE^PaDs`Z-3e5f}c)y)6ZBIh;Sxdr;u zvxJ_9aepw_dX(Dzi^72-8IjvSJ7R}TxPt0?|Njsq$Y?BvBHi?au;WnIW`S4G_YsVU z*Uj2>rGoyz@Ql~ak&h^Yj6xRy%zz(a1F^s0!$KKf_Cd0E+WTy_oEPU4P#`x(!Yo8r zJry{$6OyXJfCh2yM_w3!?z|YBvTnS;UGE^uTuJ2u-Ax$Ow6`_InLdg&gHy0)dVe8bEIG&@@ooruqY$qi`l zW033N6&L6Tq(LPjz}8GIy$e#RO56u;z2i(bEDr957FyF)7w_*c2#ZawI3^$V$Wx5h z3>uxE$omSONJC;OV?d;g#RH90HTy`BxcB?FP`ka0^lr|(eNR~*t_2{=;8fb~p0tta zi2)_Vj|jOT&ogxP{yrdLrw5va-B6%Y`pO~Tx~;TvpOQk7702whQTC(n>ub`70D>eb zY)Z9n{$$?Y{9M;bJVHz}qa@6I-tm&2ni>MiLjj86Cwc&<(Wu}) zA-y{H(?Hcy%WM!6F@}X7KxrrdiyO@D)E6F!*eOX>IwtufLDp#I|sUIrx5fe4C$Gn3f2F|+IPoe-S&SY zl}J%Wml1KP?3NK36)BaFk)2fbULiBmMQ9LN$=|LcQ5yOo#Qx;?{R#N&v<{{?<-Lso*q&h-izOhTG~VomaH&%oFwl?T8XH>WNwF# z4KDpx%al?2B{E%kCeh#N3Vu0^wWVOY7RE%-4x8&X!Wz-OrSp64nQ)wMD129294F)u zLJ_iuasfeJF7viVR-__~AauYTPy_goymuFrUx!hLwbdn9r4wcNSXdaYvQ=V3P@Rzq z5wK(%<6VFjo(~pW-@}s%IWWnWsNZF*FWY9TB`Qc2`v7kZ&kdE7&ghSm@Ze)=L{?9& zWho%Uzk<#bxrgDUAfS6#{QUGv9n`3vh1Xg5bE)YSoLWQ&O&35;Ms-4{cRmB~ZqedY zN|EoTNVe0`c7KC*o3!{ABwcTbbxR#x^d7`OLuwtA>HMto0pKJ{IIFJ@Uuoqb>}CZl zO;HF*h)H5Efi5)-ZS!3pp)`|iVsozu=|QjTyPjG`r7ykOD>YSA0GP_>^My-b4>gKfPB5COwjp|=*|UkQOUbeUP!zs{rc9HJoJuTXn@^QZRj z+BsM3(aFZgLPhKp!euV#eSrq|aWF*-4hCZTmU8;MFOpyKrt-`0%OldJZUdCZQ-oVV zbsFkj{arHnw$QP69`*dKS(iTGp}2tfO^O_WK`jOq&k&Z2^-Q)~R_!_3C`94{NFF_; zxi*aIx)JBRBtZs%&EiA+CB&qVNM(eQaOqAa77quNHQgxdz&<@vhsSVgUm>ywM8yoy zzlrKh3juCk_X%^f)KQfl0X72xs@YSQ@p>C=B&tV^12`ov^`(EnAY#h*u>^vMXvEIb zm7=Q!$x2;-bAG%cj`s~L&d0fnTiT)LvkSrg>rqL{hJp*h_o)^;p%_i#9&axKEGxqR z5;#A#0zHGb2K&?zd<}86B_y4l!jqX2V7pgNb6?(6RH$?qk><1k!9u)iF72LD@1uy- zVOfEk$j9R|IavzlvXIqS3!D7MKKe08B?`Yo3=JG)3=>u@RM{qr3pI|Rh&m(+Fa_L# zloLh;ZxB$z+@HS|PV!heL8_Xq4}bJ}R9B%Emb%KNg00yr^6X(2FgH9~lB@ddC2Mib z*^2hxhEXWg#dD0Uew$d0F0x;`T^>#|hmfI56Dh4M zbM7hVbL2zqg;`J!V{;!RF>%-2N4dQsVdvyT2vI7cneifiFa}!>wXZHnqw2RueCKQ? zf-vX;u0$z2R$ZOwhX1x4W;sWIE;b3M6817*Qfp_rYY)dtafcA~3vPqv&-(_M$bBoUcNP=pS zyFkQEII1f(Yl@HT0QT!^(aRz?4i`m#-CtI2xbBEnptMV{VtM;-P0q@9nU< z)YY6%AhXpDj&;?NxXvP2=BoLKG!r^c;WzHPuOO8t2QGqIM9ZK~zW|`It4NP#dM1@z za}>b8f(b2ZG!0(*Ao^OL=&0+If8>1oDs*dW+5*yJdeX8-wMUTcw#0)-i)Aplf0KNp zTBO{bLsH%=h)qTP+;Dd)l2}NH+PopETmn-XKCQq@O^6?7tj(D%a$&og#t^qb^m21QYtxi$pFG3GA-) zekC<qh-|xKGCdpg4cQus@0UOL3-$@!FA1JDaZN`5`z(p4s(j+j=oDH8>)vB7G5;AR;Fp9!!;L}AGKStUmU zU`e|ZjtY2CA$8Ef^%yama1^Knh*cga%_UdxnFAP9G*rVmcT1Kp0CVWePeOh`l5khf z%KMXP1`(wM;{w1}KBg!Ey0ac(a;gsOY65|{LC!UTH$Zdo(k4XfHBOCbN^6j0e_L4^ z?C^L~x$yd&Q3FMH5g3AL;xUAQM%ZmXy-`H%icUegAVN&&LNTRgg68xx0?t@YbP5S7 zDF1UR@rBL6^TcD87Wm7igvo<=`Wre${B#fasHEQW{5vAw^|{8Dm%!ft8jaf@OOP@#)1oO(xF4=r^X zw~jKmFHMy*XqPtu_Jg7^f#g8*nQ{c4V|B@?&1$*fxu!9QfxTNd(pt+(P*&y_6VWyg zaNg%?8ejPlm6o)%rU-EJ#Cj{DO)H# z#dMh7d01!4NG!k+=twJ<-n~Nr6OIxM{yP<{F_Az7a>yR`({sBXdykP8#I?-hUiZja z4#s4A`M}s6?T8BNm*TM^oyFqRY8fVnmy(Cu46|Af3MzuHbV9TkuBY3lr+TfIfYh}j z{%yIaOyf5Yaj6m_%sH;k@UO=tDu@IeB|L|JOLr{lMw9{Cq;jlW$ysXG?$wD}_T0HE zL9_&@Ely#%i8(~O3$kwUuCAlRCK94|KtfXfojqK+(;gkBOays|@W4-)e9}A2`XzES zY#wCumvo>G&6k*7GNYbAV0DU$B~sIo*>M-V{f}1qBqkD+Gl-DXm$+9j&Q^Q3G z278O9Lu{T1=8H*Ym)>vg#q*#En3g!47#a(a4CvUkyJC|9@yh;LvC80r_zb#hIUsSw zOqjOx?uavwVCZ;d*%mGyb-uyu%)4X63HNzGh0Al8p zo@+vL{nL4EK!z2-3*-O=7r*$72G&b%Y0unRtqAezGOybj)a`1)b~h@&w_tKwOO5;{ z{@HtIV2K>?JQx|u6<|@aaVR)&V6I@Mm{0O-OW7bXW-7w!xYiVtg*T6gk(s1BTc{dK z5lfCOH~TK%`LWjH;$;)}Gh&~q$4b#t#=QU^>qN7vc~l+VJP<@(y?i=2kf0s;&?`&x z#_z`yzWftr?V1gbxYGj0H88l}{!1-lxMl20F^)Lls&;ktEB+gxYfwr$W;L8i3P?Ah z8wIFYX!l&RMc18oL+QiOK?5>#Z&0~iTi7Z@Dh9{Wj zgas!**a1XLqlri)^gjYBGn)C7nu;e|Gx?lX7Pt~IFVDK)#=xDyoMDHUJM4S4(D~0E zZF{hknAxOkY5Adg9OiFBCb+8|t}opX%ci)QylZb5R)!>OUc?64gZqDLscMIbBMQ|3 z=TlYg#Xyn>5XuDyLt2Ct5CD?3G_nO`M;(GRhKAP2Xeoy~G-O6YeTW^$q$ozs`XA zv7(hj3~hBFoh>^`Ou1byq8>>Aquz;vRfLj5yc`37+Frh9uoGPB-8R{`oa`Fq6)(#q zyQDiSX zF#vH(-4Z8!*3yq|O^|ItEPQfA#_bSeu(Fv`x54dG2i8NWrK;#6`x$EYM-gV$uK6UK z1nBbcoT~QTvdL-6Y_3M?F#z5pY3>e0Wl$0b7OTuR65_KKaEmn^J z;p0tI-42NB5>dvKvM7~dW82l*m?%_F%>ml^WfM7~E|WK;=_>=i{kZX9U;59OXxyJsi7>5uMbX^(;*6= zG3j=}Wy!945a)A)XMfr4LqB_ z`>>1ho8#GGo2AWCDL>N0q8Ji6F{gaUG}>hLFTMv4zUWj7E&d=lpo%-b3Byy5gG{6n z~gpl-`6%~l5$Ah^797us#) zc1W*Lg3H9^eL?{xh4b7I4+ZeMLX9ERlR|*yMdYsnF@5nx)LNFsz#t=Ii>RIqnRDp< zDrws!@6DQafJq8PEuV;XG77Se>iaQdF;dWsqsC8><$6I5=^cG$mDmBr4 zVL!K)z1Z*Ty_dX*t4Q0R{8V@d2udiu62L6Xmm_{Z2cR0Fu&U3{txx-O_kh#>(IXJd zH$+|Zms2DXY|?~u$oqtXawnM`4#U~e<o0s5~c^-kaCKq}9H=r7Ngg7@SDDyp4bYJBFLRxhOaJ~JfdrJ2mwQ@~h z4ikp#b!pF7eomUT-(JfxG5Nt*I`y_vGdD_w^Qa?oKN(v|m08)(bPH#LS_lGj-1;Hef&gm=2FT5$bMBj~|6ZrX|fuvzvZ{{DAD9 zCbLjGFt%?A@;s<}>8ioNIC68FUMA}!$FXekPV$+6Q`@|pz9Hr1mnCV z_Hfc75jnI*D$#9p;+1X*#A-|8{~_)}4EeK8!eZs&6;GzZ3}8E?Hl z%S_bxhO}U-Adzj84b4NftOZN~Y8rwA0a~a5P+23JrUo%fJh${ZbaB@l5Zs9m<>&0V zW1(vV{Ob>{o5}TX$tYb*NdsiZdM@V``IrYtzZ}2j3-wQob73AD?$umY?S#CY+n%v z3D~*>wLK!wphJWup5A)>%9E}JPprQ{U|`+AZ0hQ^#h_|O#K;uHezkv3#g^EkoKY2D zS3$)rd6PQyktWc2h9E*m%KIdTP}pn%iQs4?K8aW;-x1f6cM73~JG~AB*7t*IT+SfW zLMZwu+91mt>Sjc;G$jNA6cm)D5P{lC^pEu_(3H|ck{g_Nw=^!9*&MRAPDn+j#lI)N z=0jXj#>u8I0olS~)IJs>Xw4<;#}q6G_siI|mu5D8yH-2@k?gFUfXoZKkY9L(#lw8? zsuTp91GbQdqV`XaiJP}se+_|N14DRFBzEuhGUq4g!!N+9_p+#>a;XXF+=YCmI} z&@&~1Opn~u{v+2#0|hMgdZY&^MI;Y9)Oe<>0O4SO)Tybr1&+Eo0xl!u#6Aoh4Gq03 z9`m=MS25X2fGwgtpK3zOl)X@5>Lh0Uk~Kp$!e+mt+`p-HFn)5_T5+sIO{yK)2`Z0J zL{1IqmO3Poo&gn&K}uidAzJ62E5ZwZlUz@MW_o#oyrfwUF#M=9FuxInCy-+N#*I4M z#LGt13vK(&4Xage6cD*fwB)H|8?h2}LF4-+^ZSWbhSwynFTdF>QdwPQuK<+82$Pxh z{;*KL+3mL`g?K$F0AzY*-L+UR=uJ4_XoE^o0^{%Dd| z-{3!MFaN$`frN~R)keX(Q!eu3R7t`v!&hKjJ1(!A@LyUDI3A+zhzaRaKQ;X0c6{CN z;5ny3P|lUme*~8}=9g~yrvvay>=w_r!aqHiew5+D644y=PF}kI*b4-2BTIow7Q z;jjOZbUDlpFQ+N*diq<$3q1;K&-mLw^A`eER@^Q|`9*mJrKmG6-e&wjl5t%CSMe?3dr< zybJIf9h%SDaL9ldrBPD`+l}9oyy+lGw5E+(ezy=}DeI!v4V>Zp7%T1{VI6?q$i_s? zUdMT71G@HKJVFAdKi1}#e~A79O%RKkAUu>dXx06C`F@3M3PZpOFUtBqnD&2yC`8L( zGKyn$&wncz9*Y#qJk$jC;(%U$h5Y*U3VcGJez#G}?^h6$U$0piKvoqiWuG6$*^a*e zy#0F32uBcr^2&P~9GlsOPS^>SKH^;)BevL`OA&_>n)xJ z5FD|I08zqkoeb2gfsV&U@)+u^}Se$pHEV> z6`s9+m2ALo6(5I=AX9WZP6&6GM8RuOOmn}RGoEu3!ZjOi&}Wp+f)C%yKXLH4o1`rX zxkwrzUs5a@SA}1Eo6cs{eOIZ(=^`?*YH@+~+tBvm2Wrh15@yxI#owJEa+Y-lDXd6{ z^MsKCi*8fmKw-XGp2YXd8sGYHqQkbr4WWWpOZM9(6pbLP0JWN)aiJ@; zwKram%K}$LmuYA9nf9n7b3vSw&=?sFtq^>6!GYUabRxWDp^H*qp#KM6QS>~Hs1*ad=H)ZN0%e2$l{c-tjh*j@k0GwYi5g2n6y3{OVB1K|keg9;3k$7&YGp*Dy- zSKUyXfw=j+JON01@d0{7`LFrA*vA$Rell>TH7+=cieIdy7^EtgUe3P%I&@enJ+Omd@**nvPO+{# zR)A{<-cO^0VIP0LQ_hk2syXG?NGYCJJfN3%y|B?PT5C>KM9r!^;DlAFU}N5;ExhCF^$xhNSQRO$e!xho``8Pc8)TZ2!d zM8()N-}nOC%=?ikZXG%gpVYu8kNTQ~ypUoqH@d_G4}=I^$J z6M;T&_-^|x1soyG;ZIzk6w>KUW^Kw&YML$Pw8ZVWa8UpSRRGVBznh?ksU3WDcGm>} zC@5x{b6R#oisBOTZ+Y9HcCU~``~`xNVB(%$q$r6{3!IjtCxxX>jY2&1v|}E~s3k!S zETGT)aG@s4)|`*Sg)49z>Yx;ItQxvheAA*O9gP`)P}l-elu=N09b65DjK^ol1%zL>+@Y3nYowE_e0~lALVQk5pXZ%|HOy@Dp<|mZ^pakL zv|$jC(8~;l(?J(7ilbuFeV+bnT|`Hbf0LY2`}?CXLNLx&Vm}s28wn?%xZ44pFk;vyItR5Qb)AmE*ebC&R@r4{QCApXKp-}VBR)i{*sJ+ zeg=^7fC){C!^c8-mJ7mGhXoUIQK8R|&Q7n?c>%?A6ofygz-%kF#@*X3%#SG0qdEc$ zH8h;^TlsV%@Wa_=fWIIFGF*j;vgWT-kI>^|UBo)N`WHK!AfQ-^tC$&EuhZN$11z7u zGQbL^S5Vao6>@+xfBzhm@R2(}02a|zb$CgPej=NW(DB!qik8}>}U3ctFvp&Q| zgG57TizLX;bV4KDv;(mG$a(0s&t?MgQzYsULk(85mX|r{yT1V=$kkKE&B8P?6Oi2l8e1%MRheU6^N}Rs&foUFWS-=V9X-e_QtI(81aX z-gx`K0ziJ+*3JBk4mTrmcdxjr==~9#pd}PcL(iH{fF_S%K1F3?!8W zXb+tUhi1e}fsp!&f2e|~UPIMD)B2c&YYED!7znxqlTQbOIakQE21(aTpspj1YMpg& z|Jj=^Ope%gGV9kUgMb!DE>~P`9@QmL>T&vr4sdzYfpA0cY(AjC*1(O3@CA{t-7ZIB z5o3vXuW&*A$|vNBv^wS(=ePP zdyhW1qj}a7p=ypm{LkBxU=o3_H^cX7jSi39?jo-XIiV|?1$79w=yxGzcE&)WQ*ZH> zTq5$$Jk*D(3ItXF4EDUr5$FgmAaTwtwJtl_o-fFZdO_npk`ZR@^wN=O%tNi&DCvr% zL#-0OM(}iDAdD1PqV--94?y(~&LYbqdcUtwo#-)Gg=E87kVZa zPdC6*;5?_x`1{k~OmK^#o69wuq~RpRQ4Yg|BvcMVXk8U!^yCi^%c1n-L%wBLcmGb_D}20hmiZ!gkH zp;Ef}n4QTar=Q78?YMzn%>Hr<1GbR?nf`h^4b-=W-CrC-ZYMwWg+u;GZA-H`B zd+2I*eOqE)eCxvkWb99 z^o`jUF=ku1*@Wc!9KgnwH6}C5A^MhPek;T6%wYnEk?6}hz)lZ})#eDQD9?7YeCs-f zOxR+0Wdaru2}h6JmD}M%W@(zhNwfqAfi+Ci1dU%#cAH+pT@l`IfW3^ow@cu#h!s-H zMpU6T=9^mYuAoLwWZ!<3zFft+U4_WgGlEr;u(D#&CGoQn66@Dz6I z*7K9{Y9a47;#bHm&c3|EL;}wi%yf19HTSo#G~d)63^I^quHc5k(ibE#B}nb)h@y$C z4yp;mcK#-2mq9Qy(!4%I&yWUd92D4Fi+2BeRIgXVJyv65ZvETFO?ox7GO41ZJ4_|y zu@@)qWW643g>^y7*vMM@tU{$evX`xX;U58B?^Dz7zW^Bewoo!ys|2cVqe{MKIA;y55PyrGsl6J@)IT4}&_B|Af=Qn**V4u7%~D zY4;*EF2CaiKnfnDfnqxtvMTr0J8V|=A}6IgZ99{w0JQKYu0rwPneE(|5=)7iYHMEf zY2k!W`|YKtBbjTp1JuT&#>s=0%u%VAxCi2uzgq=+^eQ_e$oa9T>C( z(+9|CmhnJ$0F5ATcNm`amPa0WzB6lU0J1#3NTGgg2XpY6KDm%#V^#0S1W?FdK(Ves z<%jt>sK9=3X@gtnvT*KKyZo`Vk9DB;@`NG%^uLi_21AWcUI zY$6h`$bI3=fQ9g6|4V|h8}Q*tM^wGK5WOI1w7I95Bf?;1s3s;5=0q^vk=vFMx5K14 zvTjlf^=k;cfI=E+@ldhQ$Av;eNhd)E9h1tVXPx_1tFr_DPn>0Gx3Tp#P!b9 zJi4ucd%6Md=vhAjYNTThDEOceu+X_Tfz)avpGpa^j&=bq`wKuuZ)3{vvEWlNslm)F zy_I5HFaV51Jv{}+V8Rik1gN_dGEes3duA{Ok+CiULe|E*6u#Yak;r7Vc?hAhvS?-JCMEdK6$_ps=Qha-5g4F`3#+0Wy_I12=$1@ zJ;e#T3&CoT$L~=xA9>+v8dprPnPeLzCep@%rwX*X>JclHfaQo>pESTvtJqZ$c`8y2 z`>@0VdhpZ|Wn=sJ+8|Uw5Vo}OIv)s0v?AJWF*H;9cH(e+jRyN&1+_WgHOB$tjGzW&L%4+IW(eTVJOt19`qy05D2=-qcBG@dT zc<6s{n=paRyiVS0q<2R!*%)?WvLGlO)I+_LHc08~$#~it@EBSh3>g5XXRe-P7Z>%c zB3_{eyf~$KSPi-ysIu0B+kCB08VR=etJ~^Y8KI5|qz=`Y0^uJD^MC~PYAe4C{T;Y^ zYsxt~5AP~CC*B9E#xAIKcNy8%EdyoE?@&L}i+A4iK?oP|1+0i~s8NH1DSwtKK|5|@ zh%M1DVt>4M^_2HpWr-Z&rdZY_)h-Mi#&s(dtoix<8dcYV!_>J%iDg4EK*PPMLt03N z*#ma8e&gVAVV2#=QU4NR4NYHK{GLCmxB};Bx#{i0&BNU9QNJBEVpR#u*LZrnGPp4w zJM-;||A}wOZvriR0HRbZxi1|uc&siT0c2#7ITb!_MOfg;PPiND;0f>4hE!>~A@O6K zhk(7%xFs|6#QsV!|52p*7blIMeUnKn+OxSK)v6esk`xP45Uh`odQY6hJf*5N3vxlKDu6`qULN}UAZu&PeL;bedy zW;7rRigmK8y6BGIzT`2h4q&!A0Em5x#Q!*3D1<7r@Zf@l>XDFyUeA16C+2HVK2V~i zjrJN(g2BFwvR#xxChT(_3~X;z%QhY?O;ET?WpI)7(7J~dxV6If+=%*F^C9z?H3Zb3&?IPpP$gY>6Y+>41b# z+7W|Fc9+)7t(sa7nSD+j6M}$!!Q@crof{~HBOo|1DHFRt0&t)i6 zVq=T!%WVW>8f_JmOw@d?X4WGzZz>{~s$Ql!4?RD4+;vid<8tG2rcQz`7&lS9Oz%}8 zGQUjbf{rAWY&JD$RZQZ@Q0wn5who1KKm*X?Dc^flD}qJTwA#)yb)%m1%)WGfZeT8k zmreAyY0d=s8u)5$#Rl|(ZBCj&+0=uOxzrnyj`7Jj47*fhayVa!rj;wn6|^ zQ?5{!GZ+|<)L2s+(^m%sEC+N5-$cFg#CW1odLTub4}&g64fl&!(tjPwutrE{sf4tU z{(3cVQpe7FoL6__;jONQzl&B{r!yVv*l~wKzHM&m5SjWO0%unt*PRb5u&;=AM#LUr z3p*^p^?==z=x~sWi#G}LNKBXu6EPDLk#_}&%TP|(&M-zIk7Ex=JVaaOIS=5c-91$v zXPX}+7c-A_UCrgHm$#G(iC>i8dLVacI0pb#)RGS~XKCl(UtG;se&*=UntN#ajG5Jr z)xF%*8SfuC^JP4a)@~&F5bVC2;Ta^^q(E}=?1$=VF0<;nam+_>ydxpaCO-FK+MkM3 zIiLt~P8T4j@)-hUKOir!GrS8hrG7BJ&)^W8Z%w<^v6$#*Gc)i3WZ7?mHgeNJr96wc zhFF=ikRRlN9LiA)a9}fE4&u!$A3AgTv~y)3&qa9DoY^axSA6UN+IAjlBUc3H!o@vr z!loCv1iC`EhFel2l;)P}@~w@Pa?PUTl9c72ajFcojyLD2KNZjkI-=>K3Wykoafa&G zqfJRqp(pJl^o+4^bLVLD2@7|&Wb4+StA<1KD8!0GD0^XH;h4kno#!HsMPpsXU8-71 z%9%H(ddqI-<_z+(vtNAYMSF;Znk!>IJ1p>oF4M~5>{GA-DnVn-CPLXNSq6`})bd)& zr!0HG&GB<}CDd>~z6+m_OcW2F@XX;!k<}TI1Hqh&S0QKrDOgNWQu51{`^V9LTzkiV z`^TASYwwMtC2F6azneTqs<{eC$u#3G;o1_hG7m}?9v*obUW3DBTMwPu(ys7cd9ao- zYnv*x0@1~(=9;}FG&3{%`}pyzQlY0H0AN!5n+qR!s8&vnsy@w4QwHZt7?+cZvauExMMAATJ}Y)xXokbKZxBeUH!W>h~A^ z>k|p{B_V_9ksc(X?WZm2*|MiQm-K;G$oHRT+_sg-q`dobkMDmQ&-xD>?k4~b{_ee* znVEj*THw*H4HqZTg>4^`9eN?5jVU*g5qM)pno}TXIC@U-bX}$-T<8OQW`uc_q-XQq12Mvw4 z*vXt@8y=D`p7S*#6JtzP)%mEHnC+bBoCI~w9Q>p0JBAiksuF+0YAb9Fr|%ZF7fn8=^(g<5K`o-1}Gf8lNxQD4Gv%I?lw^O(<{KU3H={`1d2viVly zOiLb^^G^Bv2NwUt06i#z{V>$ErFz4{h5t?Fg*OkdiCZ8J;;l%>z`*_2Uw?V8bP5oe z*ww$>jXOWwRmAxc=N352^tAKN>A3sI`7n_fb4kea=d3n1Hr|RVg|?P)a&b?zinDhS zw0BwzoyGZv&3=TDmk^FP^zL!s{xl;o!Q)*f`Xz0|O4OFQ-`65M?{3@es*op7dh73O zJFwv>;qEM){~-Dq?1w~WFf$YGiw}v!K>2+7^M%$t%YYk@tH2WY;-b$o z{K+#+g{wu77rRB<8F$yqkUhBRWCux!Cw_kYcl_X-Jb|`;!MUZn(@q#_mUp-h9QSj$ z!zWXN(^5M-IJDtKap&{URb^&&6SOG36=|rc4*?d!@9Wn)Vi z-w{&;n`NFU_4)j|)9(Yn!K4EJ9D1vr>D519uFYtxPRB>^pjEZx7sQ z9AzZK;#q5IzPx$+wxokYQD0+IqSDnTPoB^%tqjAMeWkDf{~V=$i}Ro8JeSi*5L3a%YomIgnO3fXOnPv5kV7 z(BtX;k9PEZR}SGDIcDth#GT_NPgB$aj*CQjNW_L6y_3lGcnReGj3D5!DyXRNW53uK zFHgU;1y+Op0nO58tBd<1WJ<8_9?uTwYs)q1N_di*P zAvoIZoxXqJK94Y0B3I@T`>&Ilt;LST5uyvz{irzUz498)$gXof_PB4}bSp#09riuH zImL#DciLHcdk(mrw;(K%m6qgyzII`$im_$#@K1SACT- zxQ7aS;4}1aT^YZiJ8AZIO7iKGCy}?S0%6!zFl>cKD}ORk25|3L~c9A{s?r~8v}yDFkhXaAfY_u{#6jZqFC3t5p0C>qhHWGH9qJqZpT zYhj2-!+vse{~rw-5X6Favnn5M7&aG~2i`n@%sxYe=&cy|=n*6M2Hq<#$KV7?ULN=( zZx^WUa^Cb+B;w8w9Df&5lfnM}e-yg7I5;c{+JNW(;*A^OT8@VW;RMJ&&BfhH8x|Pn zKM-x=DPG^w4h23x$O#Fk>qbfXMcU4ez^Jh>YCV~OKf1ubz^Km}S3KM>>NA8cJ4^-# z1}ePi1q;-5&z-yfw!GYqes2Zv2EA;!$@NDIjU2F3$(0*yKZ_`10Ny-g5m*i#DxYGz zDl03t>Uop7g#Ln|w;S#g!5t2cWfHv(!`))8#f>|H!&?cQ;h5|fVuQu7q&TdY9Ndtk z(wr)y3Onu%%g2IEzHGzqxk|x~8{&ArA-17lF~EC*ZADue^T8L>d=ul$~?SR zdPZQCxs(R}$ZlAmRo4D+33nvYrGx}KO!SfI9BOyQ@EZcnr-+wuKED87D5BKR+pOP&MR#y&6u%_}I$I zOCLUdG%u+5{P|{_LQ-e%fJLt41zz_3h$JTq8Gl;v zj=*NfW*M}G=P{>M2^2$2^?=Uj-k)59PEM<^(kpygyEkkQ7J_etIef;Qe{bFD=B*eS z7|13cFK0UDBeoqMd;YNbPTV(dX760~!t)Mhu)~d+M0Ze4LLFPXX8(tZ3bO*)kV8U3 z9jPL+uR^;*V#ot{w_5l5JrffOsWkWuG)3eLVDc z3H^>+-W%N3%{B+nBEV#EY^*h@nPo#N@x>$!<2b9q<)urAGT=Hh4`h_fE2ug!ua(dj9;m z`fla)+m|m$N=^$L+!G?#?d^K3e6s=Jt}`R_lC-~GNae%5@O-c1YY?>C+StvFJx)yI zC}(f9sjIK2Ut(^AyI;1BZaeNZgZphbPtCamT$b%d<)OH9k}lnPm(*nRmQiQH1!7`i z`V@Z1PR7f{^|mnl1DDcc>4AN?Z{KWf2+^g)FEV!y_xJX2bYF2&c~h$(niqS~+tc&u z!-qRrA?+&DLEd^hL<174V&3JaHyQ2536(g)qI?TV-M(Q__TW3hqI`hGe&X*xcxU#* zhYzwz$~@)YOsv6i$v!fJyVY^GC+?KUkh9!P`Wzqk7bRnnr3enDYlVooIpOkpj8@us z!AVdx4Jhhy2lDHKEjomZTlJIYxHAlM-2uj}=_B|<-@UE9{~AuP$LOw>QX9ZsL)nW3#)(+pbEoRZVv!mrCQ?Q@zF zs<&EP7<_RH%6S862?|MUP+RaKa=tGKlNqc}h43m85J%yI)K$-3yx{)m&z*hcC7}Og z6BIbpLxY0Y;Uj5F;89Wf>3PoWc=dCqcBhMm;Ts8+tY6yKSXo)aSH;uFyS*cM%W>zp z>1rQw4%lh(g5UH^AfNI6Pm~DoFb(Qlgc%dhvruW20~!E${F55-skv15k-I>NOcLhR z-<*1)q$5Q`WVklMop5j3)MyyjJ>(2?DrdaP2D+^+b?Mqy(u*ud6^0w)o_6p-Ed#Jr zo`uj{y#8E8$A}4MtS{O#cddCcs{b2LhUG@n6N>IE(agMAz=tu>xYTOx?aspDrTqA@ z;XOnLOOp1iyJX>V@p2cwTy)78XpU>PH~#p~hfcQNc@JRFIty|Uc1w7NFQz`%qf*hdNj5ihP2C->r|&T1OvWo22S)dQ}ZR`gnc!Um2{|ewghW>WnRT z+3MZvj&}3^)X`=E?t*xEb{l|NzhUm~ON8?POseF2D`TZ!y68N}fjW>dc4g@Z>7rg( zFW~lNvyIgL@$um{bEJ=GjLDSMU@UJbvd@=Gye0$2TK4mD(>cd2?KC$!Gxhx&;;xoY zwI}5k7CJzsxh_GG+wMU&UiPlK`1|w%7A6Vr3U8DVmydp|so|TyFyT)#EAfH z!Sn0xjkQJgcF?6^7YSm%Prx_;k%lkJ#b@uKBA9d_ygUb>nc@kL^0R=Y^#dHN%7cZ; z&=Ic!a1(aGbbH;@)(#qn0DBK<@%(7>6{yw?<>f2Qv6LhY^4zMRxH@GE)zUdSgntDM zN5{udKU7;LEku_6o}L?4+>@%cd=yt>0PyY92aP#P0RA0m53( zpwi=`Kb(mQkR0s?RF%2lIiM7cG{j_?LF0}1-wl0ck{mytgLZ*av7^5w!N-b@_8+E8=J)ofO zRyfOJM(Ue?*+fr#%K*^xg-1q4-myBFynPRx+b{9*31cT4TjH-f^uFCuE1Iugg4sWm zD(!o38y2h&cMzZP+`bjZ1fYd@d>1%z=e9NDWhuocc4aF`iiv!oU_RDzv^>53%Kh3aHaoN-7X0%|9PB_6rH6KPu+kW% zKIIsAvv%zTHZz}r{wBXLxzX1$$osjFUDiVyo(gQeXvTemOycY;pvLJsX3{O1uR(pn z05+oj)l|Fw3O^(Jya^B!G{~~qmXqXcdpC(@1+bQw9{q$G+eVL88m6gWjV*7XGsuJI zlIoWBxp!AdY#%~!RjXH{z+#l(2rRK?z|D6pL48X*Bp;su8neOBJI``d5(?+H;D1Jg zDHvcwRg1fp8ZMNby%j7DEw8~NXklmzod#|cp81-#u$Kl&2IFlRi(f&o^-yb;VbC%Z zzmwI%%d>@x)bA}9+RmDhxQ|{hJh+l_SYmwsP|3>jOig}=V24J{l?lH=`zGO5zZ-Sk57D5I=(RtJUbk(P6m!BT@{zXdvFJ5h z0ny+`z}sFo&I9bzXTUG{C9CDPVNL|B0GZ-NIQL_QG|Nq|vKzm3tu8r6yJS*MHpN#7 z_)tCplveh`eMd`oa)a=^+2`}MY;}u|hk*ge4^W{}8D{B?U+91;j* zNh>b_s#stDt1iCLc(YTs!rLa~!0bJE=@FFiTb6Vt7l6_%RV1rJWvfx4dh@3O1tvsw zJf6$5Gx_z+gyGBtXYQ)wB}sm-dBnzBcQFVXl=i}jPYbbps86Q0r3JBRjz_M{4AvmZ z*O72t<>z*QxM+%xbM1gCQTn$YcLomy_3S`}*A9Rv8(W!~p1uhb21Zl@P0e`o0KjOE zH>I|G0q`4^TKx=VNDp6TRC_^5^V12rv-Qkh-A%_k)}7YK*@=5R`c2?gX5GWHe&sUe zv)MiT(||aMe%&f*@01_=D&xMz{6v@Ws8kT|WrW0U8O{3?clFRolWwQhrUD!Dy)<(> zfqA`4LwI%B{P+OSTs;O(y}(;Fc-h*s2J~Ov?!EFJP{6wHMyZqL#%Yc<8A8jI?+(k+ zG+t5@{qD0t+FOlCjYmyS1!~vJ22iCioTw(nVuq838&^~lUw>2$_$7^K~C?h|>^UUylr!J~wJiar>Kx>K#x3w}ac?)+DFX^k;2&^^_GOxYJF&UPvhc?Pant{1Iy+*dHr#sq) z^qo}3XZP#Wj|_p1Xj-(1U84sUvOZbaxz)zTKsmQ=ZW%ulyxe6nx?|+fhnynKhM7q4 z|B(paR6E@hOM>nF!j!FGwx`jC0u;o%j4FPv*WirQzBy zXqBk)LZPWi)bQ@z0*qC&9~7kCdr-39tdG7t4IR)G0I$5wHj?XId&?Lf8_srDAFn-A z)_QyH?8{K*$?WfvkZ`oGMlzIu`BmZD~BN*fszGJ?L9M zV+!?3mcaAk#mok3*z{ATk5P0x0BxW6mi}+NNmLHNiAb3rr0rw}y%Wcv6M<=d2{`Sv z;+<9G(=0y$#-Sg`(z41&Gf5eQ+mkH}t@$~w0ghcIDVRdQ&eA4p}p$+LDrp3of>m8&1 zVM70lee5CUXC`Qebe2E#+}G|pnlJke_>GR(Cu62(X2jX$Q&h66I}<6V1uTXbL3@(# zwC6c5n&%!>%2P@zC&1|sY%+OuwSMH2GK(_s3U%CsF8$lBtR*XOBY%KcplaXBS`5&N zaoHaO0Z!-r0AWa*9Cp0LP5MpD1AKu>-GK%gxc0I4)R1s{d4 zolQ*TQ1oj{(pM_u2oVbIP@sGaT({S9W2G~sUReywX6GJ~3Lc_z&GsH%7%_HInV$ex zC{Z=H?vkIc@6C9#QIBmQNk^=~9lh04>UR4f+|5rqBP4d)J=J$YQYUF(^7DbR@r=gocKXG)(B84F3moh?cBd&~2%J=<90xO%b9q|%mgy-2WlNzE~hv5wysw2w=PG_3&I&<`%+ zAj=g5Bt=;w!-Voi$$_E_QG#}en^Nuq)#Kb3nu?}ZUT~=jA`S105VMS%Dm$x&G$$%) z8P_i*&Z}TRq=F4JR8p7PvJBa2LX!b7Q)mcvbp)ifQ=^7tup=ZT%m8}cwiJ)JO$X-g zZlwAPFSwXfhQhA z|7Q?e1(-g|(dLpe@TFNnDc~t&7g>7ojYe;tkPCVI_yDx<6zX(iGIh`AIIe!1I|!S5 z*W^y6QQnYzkOd0Ip9RY}d@w&(VJ?eLfa6ZJ5X4t|W3BfY@q+kzh1`YgcO2>kEpluP z6@AFr%xoppfXL|fnZ-rZS(=A6)zw)`mZ#4)(8M>zqvWO;INEKRmgCJOwh&7Feez^0 zKZ=9$T9X#QLkcZ-`}^E zJ~@@Zt#6{3a320)7v@&Y`Lus@)MY;)t%bwE2{2CL#U_E1bphl{n0M^hF?R$!Ncu>1 zno6!@U~rV%wsW6!`;mN+M|krP?q8xb(ch!iEM4e8hgveqj!PSR&CJEW9s^)qYmRBe zjz`9w1+Atz3T0L(>`OWj2qD;~@hU>8?RBrL0gE1-*ZQ+&NOr^dJYmkPuk~2Vf!y3& zZ|xWBHLv+hIO!>}4}V&PAL+UOm^-5_!O_3Eg>9xIm!V~h_`Eo~Nln1fv)@2NDsMbR zb38o0%|=0@2%9(h8E6O}X_b3_fCe2#<(}4b0I*yHjt|XvOASDz8&QVxl&BTmwW+m9 zoC6YANys)Q%FpE8{IKWhf%dkqpb!;M(b|+(q}O;`NF)IeJCabLyQu(aeq;Bn%n@ry za$UZz_U3)^zVFxT% z!1a6v4TV+v`z~(9`mrlY0*G$hzTv7`=CDK^q9O>F&lL*tu75QPG18?*!)6Eek|a!8 zTH0qAlkdXJVE(S7AK}jS1DB~&&N$np7ustd33Y*Y(-E2tG%Z1T{mFZE#lN039|+Kn zk9}1b8Y94`^Qpv=@7d3KXekF-9G-dm}T5Q?P93RDgCC0=2_E-6Ac$s14*pf9${0Q_a!|^ zlFuD&h|@||ONdi3goPVWr=*~G51JcV*r-PB!hylTApK>qBbAmTD~XWRXrzClXdi9y z4e(+Yz~8QNd`!H{?K43D;rcNRe_7fUe{^xvDd$}P_Msf z^ZkhD{GJHF=nu```}9(D?^FcN*cZ6>ar?^of&-et+bn>>uq(_;fHrGD>i)u8~Z=6un z$NKtG6wlw<{wF>M*@J%pO76>tp#&vW;rer6+F_!RTiPXqzaui+Ae-qA(43QVcB24Z zyX^imd-ikI|MAz2voHsP_U*+rE_m5pH^*=?2qn4%wL~TiLbh^q*bck4+-tPGeSIv< z%x{!uNB!`!HB@*0QSFQkYG)Cp`yO)jxOH=6{Ka z!PXHAI7x)_5Q*M~i)L(T*Gn_R@Sc4d8oK`k^uCAfc>aI+gund1&aa?#WS8L4?YJk} z`5NT|H#}=AtE?UC&7GVPbfV66W}|Z^CvK6yS$jwH_T=SwC1Q0 z7}Lc3^k6n$8qpm9MOP~|W{la8KXgW`-tH~*^ZNPEJ@jLnF&+VAfOBr@hEUrVgs$78 zx(}M|*nG469JVj|3YM|^rg^yUCKG^HU#8zYh`U0#8{x+g(B7H63`=J$^$^G6;yKG6 zhL#?RPC2d(n5<1E*{{wGidC(&9kZJt(|8yYf#p$Rmn z#wn1RV;g$WemlSL?~fWDfi?n;9-jy`FT))&$ewD2rPC)({w@!QI(VppVKnl+jaPl7*63ng!Re~=DrTn$ z>9%GWVh(~=_7reW6`h54EP{fVhnFQK5f1<2zb?&r1l$=6+wx=kF#Za`xap|6)xzEq z=J-3LD@9jp{2#`?IxecMdtXB3swi9uDM2u4rKB+c3lW6@hElk6cbA2NfJLXGfDA)O zGn4@+9S$H2EnSiW4Dnm%UcJoyz25iz{>KLnGw1BR&)#c2>simkgK4uR`Y3KrS$E}z zER-gP>3ZqQCRB;g_}kG~b!43ZZ2xGCxb>X*>gwXeWzy0VqL(BWY)bd{2rB%FWcBZ> z+yKG#lvVWkZH3l)boFZ9Tx>bp~@u z>}$5h(+A_CKO0d=tqOfONJD)h>*hO3?NX1tC`CT&0<-4#)H$s!Ew5m^Hz6T?BGn-r zFVD;X4&RVb*PX1wHU<=s$EFq2ThmqvZ-wC12R{F&catVh;mXd!&_6gL{Eaq@HM`3; zmzGZTt>#}(z7ne$aQpVzC>hf*nfac%&`JaT!Z*;`oM-3t>gNIL^Jjsw!NyZLVgbh-V@}A1pZU2{_ z=urNVd+mCcKH-j*cwbf0V3C+~Fn4iLDHkr=bS~J#MtrjNw8%j8qwM^w<$7nrI~r3Yglj`HNMzzP6tN*d`BZKiVtRCo=!`0uy84EENg?!YHozxgje z(XskR(%OYamuU6qFPECRc@7V@U#?GMoZ^#Z-H?kPo<*+$5^;&tvamok#(Hk$DQ@8p&AmeFJBgT}tJtxa+#eqf2DHW&&o^eXm zfZwSC3Nz@eD;%e-t?jV71cgwNLV zo1S)_5AHX^-tP6rr7#&!-oo{k$;?S-+uc;EQ?9*lxC-$4a(M|m%Dcp|j%hE6d2Pdf z`beh(42Mf$oAXn^Sr9^-ouDERL@uz(A4Xh)1dEogK7K{i$|(aGX2#*Zz6Gsf_qj3xMXA zjQ@W*>nW(OGCwHVM(m`;y(UrR962JXRu=Ev{zkzxR?-q%vfdZ8TeX~0NGG0^@Hyk7 z-nDDTv9@uCcZPoZG?{|CJikM%baJfJa`}7z9MpC@@4yHh1wo`>AY@zt*x~Ro)%fQL zKC2f|=~{qF|Pj_v?by#fZzl6%s8l|{y-QL*F~eW>`uyuc;`-eYbVE0bt{<(}7AVE# zJyj+-ixNlw&@aoKkW}2uE;rmRdl{>H2GuZnY-pf1dR<9Xn?F-Xi^o;3S82MaD9*r9 z`wqCk@QvXy5qZ3<3RCTw38m9TS%63vfwGRuHciqrh(@r8TSbm!CAPx|?ez9Lu9Bz` z1(H3yAPOuT77cB(-3^CPl!zlllw>0)$|{I9an>aJ_YT!Y1flH9!3l~gS_+lWH9$$A z(6f5(+6l#SUAO*wOWFtntpzqCPrY+1NU86)wFxC}k;=7|`6(Z!A1j3GEd)0_6ZOsi zx?;%xz_o*lP#`;(k&Z6cOAcO*ak83Mb_}I_Q)b<*+s;b}(%d}ieK6*jbxhlns89n- z+S!%7#6$();~j$bArX?9;vh&GGvUhbKL&k94^INr;S@3U%CX>tW)0xsNwknS}P<_&DdtHolDr3rB@<0f3G2xO9%&-Zp@X@qsy1R@7BK zTX|qawtZQ`pq{l0Z$Js6E+1;HsN0gJo`ye%slpcGH=k$Ofw>u=ozC}eun5Hcuc7$`_ zU|j=j_ispn(nxd?VdoT$r(wQ4$`a^d5AkzAOknyk$Wu9dFcdeClyPOhW^4(C; z(sb&9I?^W)w^J<8afGuCKj{n7GRu?39HUUhivVZcdbC(3YfCrau-YME+lXMHc>dfB zBD8nyg=@j?^_iL{Jj#C}hEVdZ0bA%G)&XaoblC!g2n2gxpd3PC!RW=60atQZs->mn z55P+hoek87F~{M$CkVL?oWnSqP0z)k@@(4DqX>XOg|1W711+@>dmAVd29E(p| z(>>0{yyw{|2$qPmDwVe~9(U>h%?6Ny%Usw-T}DkbZ+oW=1`oK3dOjLr*e*-|oIJQ_oa zI2`E30~RPTQGJNMqTrM^`=k}KLmy&pi}1x-ppYrv=>b`=yaL8NyH*v6&kyK%2)x@t z-MIRt#`8S$$W;I}^QemA9nG?IsRrJmSfN<|=44igJ4i^n9poLD@aRTcuZ^W7gcla} zCUjkkyW4=#h;{CPD48T{4f6v?OiPiYY4wEN`o{Mqf`t|dp^lk->eV5E$^0P@m2$-i z^?TWHdQP5n2c@C<6Nq?R2;;(HFdJalrv|;SH8WFEV?T0E{|ex&?;Nhu|M!>b?@*G4 zi>?szJo!m5hZ8`*M(c1fI_3qs05I~^0HbU9_^VijwbTY_2xta$*bC`{i;<{49ULsE zai*JXC(&3PjEkjZS3WitboQWGM!T7}9DRhKLx;jhH%5!qPGSrM%hw!0T_f(R0aY?m zE+J)<%v}QgcT-?GaHZ#E17+6%1cU)%)Hsik$Hn7z#EH=yyuwp4m7ot}!&>44f2~s- z&B?ZG7tBcy8xwnlpkZjNUQDYa29E=&HYwbt(h$5w*J>3t_Is&WGq*H5)*C{DLS5hW z#bPt`=>(lpId7i(`H(>2wpZ6z-7s)^RJL+91~qR0{pL>w>$a8s7!d_61l|dY_)MO( z{t{P0QolqR|H$2T22CSkUtLEd(_@T6#5(IAqa2%y4%d#JFEsw)c8Fm7oU7ptz~)8U`oYWe^*m zvIZ%o5TtN&Y9jtj2S~rQQrC&e*oe{kg|bVwq{l;Xat_FI+IkeFRfc{#m>4)NJ_A4M z56VvzdXXQlLgzI-?N`lot!5Xe1L$wVT0S;;9yqykonS<3s~KJ(_;IWVFL5n3PaNAJ z3$$9m_N>Klsc!JSK*&kdA&QM=p%9W zf52|P?9=|2HCz$JPX`f2*Fkqp6t-8eRcT#CDt{%ZNW#|l?bU-`_O}#>V{hKYy@JTS zzU==yN+;UAAaHJZYkb)=0krO$^_QIcL8mTapWJfA9%vAFsSA4SU_hGSIW1WP0%?J< zNQ4#+@nf_c9L&Xsnt+ia+S&Oxh14DIT=>5AfD5&l^d z>BYNwIER~JpY5oXU-`EG4LUDPd*r9!$a$pc?OVMh_usg|e}Owqixui%1U5%5MTwf` zEljsvIylwdOh|a zD^W0SnE?md1<;+E@&*}QPkZbsYgaez1EOY+`O&$b9z{wyr|H_g+inBP++I+>LWbU;SPicLF_|5sjN9Qa=ClgDz!-1cJ6S+p4hI%> zm)x=Tdr;P?0rv2fBY#*LwEOsm8=b6J2Rg*V_=uiX5X@R}l&lQF`<0^3wD+xn{|0)} zt(_u!gRtZGz8;)wCPxQCFNM>Gmgnk4`^00el?tiZ_E zOO6ts+;2qq>^Tk0KR}EJztRKvHz=mz4`lnu?9S3DmKWB!{&fG)gtqI&s8jaC8`RhD zb>*$PoH_F%x6Jt|yUbIboP=q?dbTeMq%v2i=H}aUTP(FEIzy3iE&3eQD>exmQ4$h+ zjJIJYnEG6>R(fAP0>hyNvhvm;?axw=|Lo+8^_-r;e_qsGh%L#3(p@bi9d(b9f+SFn zE5&FqjK!cAg8s&UjzSadX?>X`n*xHf5A^i_1^BnY@kLp1^!uHeNOGL`FyzMZ5}ypO zk9{-mFj_?lS`H_cUrHIR6ww~8C^e~P1*vJBy4Mz`Jwb0wQ7`}NFnYZd@|07)8(ulG zPaCJ8YFVFi(!Av`NoJ8Wb&py9F;FAAx_Uq*wh(FM{|h&`?+O!y4+TAse(ndv z-X8tw=?zoTh776dl)L$o=2CINJ^z#?+{~8^l;_G9pT^kEa_d&9Q-H)^>wQX#QB6J& zHN1j;CApayC_~1j@9JTlwrYNPFKXlm$Ide@2WpCMeK&nXl=xQB0`PKL9x=jF%2>AX zTNZO0024(JRNr5W0qhYEb7^Jv*mH_dkDC4o@K(QTQvZNx{Ge$ugx zQ%ID?BI)o-Z%Dtf9}?&=7}<-!fyrq3nTpgPII9=cX_^1i+n$J|`3N4lD!Wov#4#i9 zixHJ3ZKfGp9k6gJFBz>Gp7<@#{Y z@Vx*shPoc>1_VIOu0#sIn{?~4F1QGJ{#wGfF9);NkXKtj+wdNTNxSJBxck~UN!kzG z6}9alEZ|VsP%v5P-P|b9Db&SuTjqU-6i6ywh~vkxL+6e_<`N?h{^c0@#||1hh7c9n zVoq7i8M=G+6CJK9;cqbJWJW}5@O2W$A=j}mAw=ZUjMU1c3AlmekbA;#< zhgsvPY#h-vE^Sm++2=DsNLEVhS@jMEy+fTn?`m)Fa6$wdJwGD6ACO;IDsDy8`po(~ z2djcjJ^^{|IJj}(v|VWJ+OayC;7GCmVNejCLmH56zJ|pC4!{ROzFF1Vp|v6|&oI9M zV-2au@0^^r;j-nRn-m>52o==i2{7Lf9$|UNl|E8r=7vPbCi6d#se2=jQ?Wu?Sqi93 zeE}eiKZn%w5~P$0BS^}a+2F<2pAE(Ij8H^Tv)TJIFo3~V_(Ba^9xvFv z#Iz3{JAC*7lWOw-`|JMw3uP1Q`EKPnj@_lK_)vlX-g=H|cd~gMV^E!rA^Agw!_x>TZbf$ty3#1K4 zXTleWk5?~#MzyNmm38}`h_uoHLS<~dv?3-i-z&(z1o64rf@_r?j-qP7<{Y6HBxc90P4($pjz!kj3 z`pyJ#;Am%9nh|gB7Hq0)?c~cW;fApQsb3^#fh5f$^f%E8Ai=rT0#Z;fgXSoNmWQR- zjNKXjnpm?nuzHBGX`cce$+sLp0o06u210?=bN61oI=lk<^Rl>gv@30O6&l({|LDv$ ze{0@)bpFFLgzY+WiNJcz2N;TV`*r{rXR8^rwEMG>UAkO>Kd^rSF06joiK$PJH-HW- zGi-5b$U#~3g6Fv|FnKtFX3^7u=p1Y13kgk^?ISmc^}iu}T}eTMpF7zSWHZ%0vi*<9 zz!RDPzYW3?kYg6y#}S{8xlrFVo<3D2C#fdL*XkR6@(gzSQKP9pn)|d*A+q=9&v~zU zK7^nc=MtA)i!#&M?E?l-ufLq8Ch3mN1i&mA%ZM%;K&|?^(f&{OMrY`D>}5ajDPu_v zeRCL^L!X0_K#cWj$(W-u9|t9HOCzAK*zsf;18EmtLwcPhS@CsxFA=@Ha!oS1>}&Pv zd7X8=Z28Udg^|-ojIFZbpOjr)_buI!H|T;7v+@z*eCRj|kjm&xUXUfyy?9h5nnB_b zc`2mf0#Zxh{46C%RlQbww{UTq;OpthV&|;`9Ver^@NFE>aq#@JBkHq=Ex$;NXvuoZ zr;Mk%v&5!cF~P^}K)^4)cXCm$j#XE1TyGxju0z$6!Fap+5sOipy-xMg9=i$olEs~$ zfwz`*KT;FxV+Y#Q4>TycL~_&o$Ey!|);;nDzMiV5M3&_PuZCF3mR$22B1^EjKZOq7 zC}Ubp*p_t`;_w+NoBhrR)6oA5IJ$iT_Z*Y^cSUF>JoaYPW*_Wph1!LHrEFh2;)Qo zAjW1&W5ho2@m0~FX!nL}q@T&Bol|#Ah&T7%d=Y+z2x8K0?55B~NKZQSP?GEC;`tTS zbmV$P@3sQxCupt8)$MQ&IX)9Nj)3o%+zmJG$d!_*%YGy$j+F0%V?3AJ!fz(< zQ4*$!G204oJ1tXon+Y3Gt#%?@>l@`bLC4iZVJrJp5&n*flN2_@7{>Gzl2yM!kdmK{ zFXuGcuC`0VfWr5Bg8&5fh`kwUmE)tS%h`3uRm~Eax>TgI4;OsGM^g#4g7vwWH zf`R?Ufpi$mtK9&UFsB+`GUuaz=s{-g33PfL=>;Cv#kh6Ww{6!leZDm#=kNFY4ImDx z;>6n((srOB{IhtUgfF2TOW29SxaJkf!R(tw#Pw$ zDWMDWm(K#&rs8P4T1)NiTJBR4v$%Ut%E%HlQ?x)MQS+{youZLge97YAz=F|xQJR_6 zs^8XqT1E&KfP^dtGeH;T$$*xbBL=)-x{mc?!=!pCdHo+*JC_3j#G2MWA=@$@B>P$V zk%0CWZkg%4`SB|DW(g=}G$)K%Hhr>Ko%dK@DcT^MVi4#^#LAB-zyiQR88|u^=`hrL zFu0(0#P)JlBO}bQrw_1}aTh{8LnC_|%_&%{(XWP~{f)@Z4HdEHK(i0nMM(MlJf1e2 zsqY|?=>iMzdWLS1pPaq_wgOU)b_*o|!Qn=Gt#ii`E?-S3obm~KhxLYZ(E)mWV=gWb zi&sguDK7B(#mMiETP0&u`a#}{kZe8fg#T4MHqsmvoK7~!PnEUjB2_6(LX+QWJEZ26 zFJLO?%zf8WPc(AUOoU`W``wu=#tY8Txeyf$2b=?Hj?FoM_aydrx^%f&AoT5LAc5}& zLJ}uA-TEl@pC%G|o%KF+p|uO4_iAa_ZpW>uJ8t|RJ+|Alx8iRufyg4eZ_|hrDk5*( z1vhSUz(h6+o6LSEr%7GtUA_r)=_kJH69y&$V4cpy z(wA@2x~rab0WS`iMG<&4rwi&|E>uY0UU+BdaK)6M7EIE#DQ8q3K&20v-nJx{<5X2u zL+kt{caa6uudg6=d;ww}n@jCLro?9n`RT{K`JB(GHnF*J9%-kD|Kt~_SVm-(!jkB? z`(|;caN9ly*?q~kbiGq7A&is7)fEHhn@^B9j<3D@3YrHm7tBHwEjD9_=j6qqzPoU| z+Pv1nxy>2~xIO8cH`4%Yh7*6U;PKvTr_^gf{`&?J|98}*r8-q~88TzHg&{rHe-uz^_+WIeT z=H&Mzq{bm3v<#eQwiNkmtP(b{kZ3mb^cKHBnA^a-z6b>XtjdyQVSE?F?GI3;!~*)h zCCx{(e?>gM5H<4GV)_pB;r5g6bAKRMVBL|i#wz7U2k4*H?iM%G`EqgenEQBR9LQ>P z^WG!v?`zxjZFTJas>qr`v=E6?#_bw#2D=-YBaFsogcepI-FNAnIqvmUKJp|w_gpAe z(0`4j=6f)c(H?pW=<3WFaJE^EVK@Awp)Rt(n)@<$V?=d+DC)RP8DOiI>!TGn%T#@Z zQW}*~(*~Jc1yR1oDG95(=JrRt#btJjYggNQ(B8we62Ps^qj51dU3I{jl`Uk-!zypq zMRk#Q34N%0tdV!!QOTFc^ofYke>R=zo6O{Dfb?5hNvIVvZd4ew zc+#J{cb}JDgX7xswvN8*>N0`X)$0`>_On_JUr)QwYJpOJqkST+Jv}hG`g+=fp7Sj& zDY_2#svd8ymu}+1on4mXzK%?K4>yuz8uUNlk{fYLQct{ywj-YDIU^3XI|_C3tcHt& zfUfbtso436CDGh720VP62x_L0h@qHX4zHlGQ`CV(vjs%sBT{&TnYSN#spr(J=zQlsJ#V*pN?Z$w zp*uMD9H0B$JITV9AK_@vFVQPJ8aUXz1PumYaETcnGx0fJ@jVTbQPcZ=1t|X!isxQ( z)fRviLN53=rp$PaNRJ`TZX0bMAa^8+Op3pcw%5xR47_qaXsUb_pPB4SD)7bV$Q(Hv zglszVMO6}qtDF_zJqkGJaom=3yAgxWpKA|T#uK{E_pZTjs;B6Oef1@=IirWlb6 z@Aj~*2qJ7!YkYDROxXT3^%DYYNOyy&wQv}sI)299fnu<3c@>62p9sBtr9Ho_EYpID z0LGE72!J`iek0a$t&|iZJsmlNQ94sPO}H^D7o=drAlV6C3fCD<7q1M*v?2y=>(Fcb zdVt|NLoI^&wjeV9Wuf7S{(pTkgdtOH5`TnC+d8}q+vd8~)vs+Dr{S~Poc&ZhmHpIg ztQo`csSwL&5zoL6H%hnfL_9@h&WU{5cEqv9`~$5--Maxp-&xy}YBI;rCrv7g$1NZA z14b0d9Op6qX65VeBD3}HW;Y%z%_nTiY)X$pXH8s?ydp*FvJ(D4EqI+s6Cc{r0eU!e zgMl)TQq|tJ%5w}7qfZlq$}&8Hr3)=g(e&_$xuao58k0!MxLmv1owGd%5^t zHC@b7mk!(Z!a=s@oPct$CkGR4tof#2WThPxYLM+|pCt%p@c0CLl(^iUpHa365&xIh z_UW?vYcaiGgZPBGdM4Sh&Vp3AhM09C_J_k7vsf00ecj^sjzIUZY^6x)D(*0<>OggY z^%s)fm*W-P-KNfRQ8l3%Xp}fsnq{WjE%SUAMBq{k1>@7DD565xy;+iIPtL6LEHo`; zrk?~w?w@`g3Yyf^g}9e^DsQ-F&%SFe7Za^1r@QjiIzeg~F+^#qrlcfz%WT`bWq6$! zL0!z+7m{`JZd#HxB;F@@Rg^Ha#cjLkm9@ql6G*z#oc&oe3*Mk@pb9z`ditoDYDm&z zKX@#*;RS;(y`gt_WV_S)3-`7IjCnkd4!jtrIf~NpGWx>{XF{Krk-?YDlc?uKWtz=@ zyF0s)CQmtxux!%gA<%}nbD9IJBXF)RZ=IXY3!u6NI`lfUSVo@nRDAr_1s56Gr{~2t zs#!J{=7C`ov}Ew%&#(leolm{d+Ctm3Cq-{RRqHM>13eCfPLmkxIjg%$rb_~^=(jx@ zFT%IA6Ezl>>1%@R&A%Y7Y70r6>t^@y-K8mkCm()yDY4xvzxI7ENf0EcX+k{HXzE=? z7kowN-v@J9sOC@aC>+$L;~X&iGO&)+2kYrNrZOy(2Gt{=t1N8g0~6jjuXXmtLpS;J z_cqPw(}MRYoDX_zDHAlFN0X*}S_(}amZYVTOT*9U{6)=ON`^aCk2a)wW5An1zjQp4pDe<1@GA>v=L4p9y->Bug(?z9#4=MG zn9kq`s#E7nO|7jHB15+=(<`$-d0(EB5B3hP0nE<%AhC~OCZcl}A(*l{d-M1KCQgqx zQtbyN;=LC^jMp)TQ0;#fOa&X8ltwn#!M;E^4!IwwNz9Zo?0{RKG3uE*)FWLd|-fh<`y} z6WUf&ikdl%H=ccwEW8gxwf8g^;`Fk~%z6IdHgB)Q7tIBMnna`Mzn5yoHD)kwACy+0 z%MaaI(T_XQS2o2I6a1IohriEp@K@fqv+~52o$V-vf5whNOg}c&f`w5a$yuVr8E7)e zDe)e>l?B5Lhl*%|6;BJGsWSt|Q{2xSlYdERrCutCrnb=3x^<7CH-jbYq2;-kc`x3l zCbIbtanrDk(A}z7c4fg?m)DPFZYlQgB5S)XmMs5 zEWc-V(D+W%rikyP(Pa{l;VIO~1yI73rmspodz0o)Wew(ZPr0`~yMA?%}SzfFXeu*ZTc`A@EvUgUc0TE(M8At7QT6xE{KWP#$3K!srywd z&7nGgB9MuqwQz)|kOe=-)2EZ0O0A=Fq*SXtq#agskdbne=|&*%G{ zT&OuR>)qhX7`n=Oie;?W=UWwb~)+v}nz0u86EUe@4Yu2Cbj6PuYD+ES7oUSc)vNN?$A%42U6nC z9k)UmHdIdSh0o8qtP--M&4OUNWumYK$xq~p1vUzbX&(`Wt9SqY2ZhjGqHKLW(8}pp z**a>Fo7%(LpJRr-Uw~9?8N#k6DY`iTgTuY}E2pZ=?D^HUg0e82GM51FUS%$9CpQDD zf5l7uj>3IlmGySc(%MWQ|KUxYyYGW;>adHPjcZOjGeV=I)FGW_#Uwz9N6cMM#+-|! zUrR^zTd8-;i0^v#GR>9xl2Mn%z1GtyG_#C{mS6sE>s}FcMRb=uDwFT5DSejUYL%cR z-#ev5oLwfZoid%|bOOyNlfdmNHG7GCSadfCnu-$>q%@DU(<#7c71GoeY7o-@P;rZ&8qca;CAV6343d2`+IE zQPg%p`xMphlq)7IKfdh7FoOZ4>YL?*#aaGhpnT02&@!wK-q}fiFnFl><-n30Y4TYL z1g?4<5r)2%j-wEFT!5(Evd2|K9`Qh*yK`!>#}eV)1YUE?UG`R6Z@N6|V=i9d4PbXf zFIP6iSKoGx?&i-@aF14dAz4N-0B!sN5g=()Ft=f8!d`nvJo3SKzdg2jAm+%pMr(+v zrI#HKdTk?U;t^B3+TB*3Pwbp~QuDz$?-b%y>8|FLIskU_Cp3xY{cw!6b01k@3hW9T zGR01->+90iyS53nRhF{PD3W=v`>(=kTh#Nge#2#zsV04mZ9AdB`eQEN57Q)7Fij#o z?7-@dWXDW3*%v^ zGMv8Wny2{s`}=ZMEe?4fFEoHuwHZ);zsU;L-jW7a0Gd7G4bH#c&z2oC(qvZbVFSad$tvsN^fk{Tcvg;AZkzhL zZ0qP9Ir=#v84LO4=KU1YDE`{rHp0yiLe`YF^<8tfUu;y*=8|KlFOL8zqW(3Xpz&d~ zZs5|$^EzApWsmpgwp0g)t!&c8Ou>hn*^kO&A1u8V@;1L;J~@ehW-m;sva8TG=5EW6 zRX9q76}ay6AeQUr4!F%fpXST`;OMVoP*F(mS^mK3lDbWgws;A=Iw-Fz;t8PtAmhC@ z$eHPR0ujin^|eifepB{h5M~;-=8h}_Q}Hj|Wvo6rNRBg}tk@)(=Bs=&T|bCUk9vo4 zFl*Q}2v>OM)zBG2g%S466wuHSA%;5gQzkFE(Di5Szk2#mX5h)dCVLSq&F=R5oIw+T z-ZEf0ZG5C}Tn0%|Jw`k8S82s2~ck-D2cEj(e6=wB3uJAr^L7k2~4RLzF(}T8maW@=Qo|*{Ti&Mldu%i z7Jd01eVu)_YU{YpW4FIHXRdl-GK7*boF&Jnr+zG<0!Xr^3JzOAeQb=acUfugoF*oR zxjLa1$NmcfTi=vSa_n9z+ z_3V=xO)>NjL(FL-0trw5QJuk066z;k-;y><^yyarLM-fiC7pKQFpnvVJ-N&PsG)=DVm>n>Orm^6rCUW4ZT?zUGGCld zb4vGa3CuL0wa3<%tK}QI11-w&)@iMX9V3fRNS`77G-m0IL^td?x|)k<%Yslkb9#nM z)R9a$Pr*SwxAm$t-Ui(OG@EDUIrZYT^LXAiZ+C;r&+4JQ+S_Lvy{8>l2s|=u8a+vQ z9;%E+zmq&5fo%az7S?CRL3R_cFd{}`iVTvBl6VJ(uIfaN+W3*+Q)>@(djy1BTD9lY zpdw(4+oZ2%^UIy4n|Wad@ZG{$D%*&u^g zNg-0aLbeM&Z+7@jXsBlRL~^-&ne4<&nNX1GU%ayvr~I>@T3=*hpphT(ZmhM98y(L{jxrjB#^E1};-)ZoA@94d=0r=j|2SQS zZaf_;aqgeE50`KsvQmIBNiu%joS}b#uOEB54G6OdFE2Uf{+U~VS+lCdd=hIG232X3 zYkl`S_e~V-5oNy_I3%ocFMb$8D%JX$)Nz*Qoba?bw!VxVvj{}MZkRq@Ahix`;NhEE z{NSy;c>Qj9jCt_;(0W}>5wI^$w*gi-t?E$u#zc7wkm%ytm9L3R*P6jP$n#i3&Ac(Z z!m42=Aot+$i|DoN2C0eXVFodTS7SD?-7DjlX}a4i7jM7+Ym(CodyV9JF6Y#px{OTl z6iC(DSFsGuXLD^STy+t3faG@ch$9Mkh8WNY?zWczI+avju-Q2Kk4 z{S-#vkccB`UHyxPd{1V^MEy3g2yF z%@}+D=Zpq>a60LR6g5vkFKc=0Vr+`dwP{PEwz)d5b-{~VB<{EdAqf{AQ_(#xtMTX} z^+}#WgRYm+E*;82mnOg)7c+J0gV$YY9)BT_nx1wNThu6%I57^lK7WoSy|@)1vBaaa zjl)V(Ss^J|m&mbCKj>@HI$OVuzAO~wMZ?D{Web6n`&Zz?>G`A{WBNEhC*8YpHSnfm zZlP+Mf$zHRXXz{Q>tm`Ty}|bN;2&)2hilF$hHaicZf%smLeHuV?}_cm2x}jg`0ae8 z&odQqb7R;1BU>-xaR@1Q4rLV||GBBdiyTc)*Jq=2k#p-;R0fF>Fe2kkQ+qp6d~R}x z>3Z{K>lN6K1Yq^M_oXowV!})tr6$tZ%_eF_#rHc++iaf(2@Sca^39DEr$9gbB*&mW zQ}yE^;yF!D&YW8>MFAv0K!jiFRPD- z*s?xAl^DRPL&D{IH*)jZ(0qD8e{?VI2^|kGggp$^<6Hm8sMPUI0e`%_V%`*Tv~`2= zDp-ex)H2rb#I6GrodWY$N)T-W!u_;6QiX10TuB;mvDN{B6UXffE;|a@WHCC~>9RAO zD<+hLyso-Qeaw_WT{-xVkKNsW^;6EQZiiJ)eV_)s{sA^%Vw{Wk3Re~cm~FkNG)@cv zxQyNcGULyQ^FMUB>G-7ZwckJ)GuUe!(ES6c5q%|Fr~1MJ1so*-vDMvsyYixV+CfiX zc)bEtSjs>dM@8r*^$=@zVeJKjZ{NWCLC~s)-F6Uvf#;)MrsDU^4kDC&YbQ>eeI~2s zPXacMAjYvuQu%m}zHuMToORZ_9VgB@H2XkZAq9z)dW`F`(g8Jzny@%p!Lie8GP}A3 zX_)+wZS)Rt5k3fSMTsCUf3@>@B>80Jw{qGDhBvh5Mr9-%e5_N#nj*IM3+0d_BSeaIQ0M1~9cEv~xQD*^f7puUs@( zZHaK$RMKcoqO@062(77V_TaA2lPy@j`4Pk}qe3-EJaX6UVblFqNq+$3E}RljeIZ1( zyP2TARLXu~V>Z-R*R#gGZ1u_m%Wj}A%*_Faam5d}8Xp{-R7^As5(p>WfX~qSJ*4@s z#Q|qRwR;>GF|Ty77)njQ!4~vL^%~8t-r-#1Vu}#Z9gGh~dAEggY`7W%4S8rL1lf7) z$NoHa)8k!B#{kwt&E$DhKQsnKE1#7Yp){@4T6L#t`9++3ffqDix&b8)fy|)C-lcTw zd)Ux_zuF2nAN&SqaW;i(5!oW~I?PqE{^Z_?pG$;-@{V?*9>p}WYa3t4)z2HExvMBF z#j67tu^o_fe6P|!2x0OsqPgSpT5(z8Y(+CS4I{-{kh?AUAjsXZ7B}OSvPTs~MQF}u z<+f43C(YZ#q+yLYGi!3Yp&Oi?MwpW6pNA}U&-h5}yc|Hw7CtgqjRcxertwkWUYuLP zfBTz6kDF22(h2GIs2{sLt(|Rdvr>_i`P8N@itkZ%M>oWX#+4laok0||(~*y;e)1@+ z4coF6lfBwip1izM8{?Ygycjy>bL$jJR4|Lk(KwJT zTk(F*yw)3PkvFcT{%0U(2})n9B$13E*h6YH=@{b&52ofDh05lqk8-w`11^Ws9ND%G za!@U{z?~|Q;kB>Md2I&01CB-0K$+%cNPoZ1Bkw@P;}Tl06}I z>T|>N#~&pw05c?voA4#|l!blzKpyM(qrqulN*XWELEF%${^4=SF8~vt$?Pzt&Ib9_ zxLioPhO#X08t~Y$2rT(R4JH|gWrOZzQHhSwB4--!e$*O5z7?%m9^SR-tPgv?9!y7E z2nR?DS|Dsv!V_)lkaSm-FFot5&&>Jb#P;$H=Rn5?C|m-F8w(=LMRz^*px`VEJ}fIC z?&~_U#=9gBhg^_nPAOuwE;VAF8FMRVY^PsG+hbj0$KR%EA*_>#pqIOdNJYeowOY3S z?*1ADFZB)i(ZoA7W%zw=cg@umLQJ*PJA)sa%=U*G-a%rfGEDCUy2hf^>l`yhZ*HU{ zBjrs=F0}flEcErw&x_|7>f&KkX=A9cK70;<{+BnL9&xwf}1IK z*;zQKJ3zFa^?wu@Y9HFGMqihiPh-SsS3%*fR+2d&NymBJ4cKPasoxELxQrlFMHd$y z5*?S%A1GJz!{JSxT?K0QTMMgsqu2pBF$aEWoh&39tn9o(8?bYIqb{gkV#}<_%K$Chpwm20(RF-(Ng^nV`9~ubn%i;OBY#(OXNf_x*V!CT2i8 zg&x!HtrKvMl)r@;@B0J@&U6Ygvsv}i3!Y8ocL{1vKdP{|_LEM#s&u?4l|k3a0Goy8 zw_IR7^quCO+){^8aPhZ3XZnE*TDxi`wIb;>lZJFWYS{YdDB+SHM5yRD#X0jq+l;9V za4kO;7bQXMjA&J94l47l+rmsODGl=YSYKBpIfeEL@{0XV7fSb8|_i<4gk|h$ux#8ZQPOUoUzLhzAF)Lb@JXi7iFEIzt!Qk zSBY`VOqQ|FW?1_`b?Atl`jpVwvMCxn1K?Y&uu&RrDq@J~0&N-we;#Rcg1i?r+woU9 z?LX45oa3)V&NBez^Mm#+eVl*2M7)~a=!TWU!Asihy}1aqYl!AmW=nX{cb9_pU1X>o z5Tks5a$3=^yf`B=B+KRQaL}ceY#BK}I!+}(8A9Z+G8mjCOZ8N`*q_j+vrCBmsi$m9Fz4KW6eBkhN zT>L_FPgCbE@#XK9)HTqb9-|MhP%daf45tzBKG03(Cbh9VC{3M(`@Jv3TakwU_6;~} z2KP|p(Y#kObB2#-Wb|UYw~I&D6~d9^od?|#Jv`i{(#)r`s}FMUnp6b>uXSRjn0t9C zrgzQc{*>Vv03bT5eb?K4U&H%`4-4Y*;13lysf%>_bSU84r8k?t7w6^K{@hJ0{78^m z*BNmr?=9!PaBxrxqUIFN&E;y2G@Meo@a|Sx@eVE%QzY}e=WH(zCsi87=)n2G4?7b` zgpoO`Qj!$PX#{Z3S2<8n+6xVnj(cgV>@9Q%GjMRW?itZXGSYsx#@rSNzj<^^q3ubW z&<%ZM`aW8(qIMC~f>)piD*l#lw|(5LW6n%o%l!dkZ)*i>8EY)%-RKTYrcQI>^DzBW zh7z;vL5q1^_msT~xqChUv#GW_>E!}6_|H43OUjL>Ce1nBO-y>~VI4FP{M|a&Vra6{ z=Oic5Se>N|LR8b!5#JvrJ-}A>a6$cuRFb&k_>Ok9_56bee zn3?j7M@CcGto6$G=EglUJZ$kcB0g)&Yq+Hb>6yu_Ck}7@e`*2nW=NhLS9>A-eyVa_ zTBiR($%W9+Y_5J$T)G(d!d=3e4nNKHKr42%7Wg( zQ121QB~qt4!&lsrnHotn_-ZZJJlb5M0rj^*q7I?a-k^OWBZM>zc~5=0ypeYfmZNdJ zCwKC*C!(~ua*l0wb(U$(5{OTP^fRx;1*JuYZH1glm(2cqScp5L^0xt1? z-5C6N^$mQ4Jja0)MY5~?DY#*MDeR~*CtF{C9bch9ESIG-(}wrZ_^dS9WN-b)KOUhNVIL?8cawe10T~#IJEr`4 zzx{LS{`12Q97mRl@vGQlWLH|lLbH*6!|@-}_K#;qZbt;bmH6Ktwub*HK@&+98-Mww=mV}*PsRV$p2l-=HSA)NlLPXW(Frn_l2te`Opf9DKOxk zm)d;D{`nWxxnGYr-2o?LJ=&zakq_$~tcUTSw*(d(Xck97-PuBo}{_jiu zDTH8K>3u8wq?68TPhRhd!J)E~BWkN$^{ar}0lu$^oi{~l2CAN=Kz?PvZF z$k}bZ4+~-Nfd-$Y1^@YoTT}A$6Al!^vN-2DsRuHLKd0~zGTGm3DYlV);4dE`u^k57 zGmbz({)Py_2d*0*j@|k92mZ?s2c(d%Hci(%L3V){{7#I^gzN+V^PZ94{A$xpEJq@X z_9yoG|LewYen%3Wo@{4hvMcM(!&`Gy0rkHIoPzQfhmG(xWR=!jkW~FSjARc*_9YN6 zxgl3JY8C%ZcI7V)#D972a2Rr(qq*eg`;IhNr3xI9BcR0jZ{PaYeD8qtn^?giZTf>g zh0Ll#5Dd8hW#`{n;J<#z=v!D+5udGot{wR2ikonn9^~g4liFH)zg#L1TOe1SHX6D@ zHn(Ou@QE>JrpUIMe|dmNh}MW#9y*bY%FQff65F0Q>-}SV$?opwXe4eT3!^vN-h}MR z1u)8V-AC0W`!C*dU3IIXsxjX7J}@{&V71ufTUSj&ek9{n@{a3ATy}dOI(& zPyFRw3ojtg*As~|B)f7$Rl%m$QjRD&=~zYfjbvlD^@KMQcQ15pBZ5Ri9MaFyB0zsdK>Ea3HsWa`*FE!vO%#F9DO^J8(l$8dU#Vf!Cx{m%qka(S7O# z$JYIi79a)2A1_!fD3dRG>_Rpxi=R8zVINI zPV*F}3W}Z2=NFG|KpiF-ncMBmy29X|RH7f@pbfo0(2s%_1-aRUhpJvLWqdS`_5edg z6vQJL@HI#|!NvH7_tti|=OPk=OHK-Ik+lD1O)b1pDBoiTDDlu(q*2I;TjHH&Nlx#7 zJNA4Y|1h8_khokr|hl96J!01PEi z;qvtTNJ#gM)O6usjhv2Ewqhr&(b|>q^H!S(Swj(UhS+|>fY*S>U|#BBIg2l;xh^lK`XCz5)!XI9BK=_hVT=1P#Tl5o#B7O*YI!bIF-vK!IAI znF*DVDM9~kktR#C3yO}~4OJTr@|$a?);Rd63ojqszx8%VAus>)>PuvMAlc(>9S{nM zJE>QV0js`@6uCvHGm_9qM{X-GCjBYK1jAFT@#y$_%t;rG`QOZ%Owz>Es|6aP@kPkcuKzkfOTWj20cf0%S`U z9Q3YuL51ilQk8`Eo)js5c@Ua$%qr2+0$O-&S|%kygSK_+VOV!V?vbB;|6i6I*^9*D z@59m;a(R6*(>HD}m^EL`luFadgl)zgwn|lis6OuT23eMHaX@kxBFfiZ>oVUOg*Eav z{jE0$8vOZE>2mf@BRg(qZ%m|@AZejwiIP@Zap=PC>(hw@lZgzvckRcq`Eg}X1H95knXw-B)UWhbQkwGNl|ivm<00UHY#)jURO zd=9;q*gTXJa6ae9l_;jQR-o7CxE?5eRoYxvpWpbBA{REo^Bggd44-(p>SC`?UnrP% z8=+eib-H}bK9vp3zt;!}M@akDJ;oO3whBkc;?Nst+jy^@Wg{o@SVoqPGJ}x#q2NUi!1;^2j@z z`-wY|TFz##%|40G7}m96)PtEmLypm~(X|3*2c=nvQd zO~&~DvG<+h9{Q>Z+%n$^uf>j(6)g&p^^t z)6AGPOjTlcPr&8T6WjEkN*`{#wP8B!Ae3n;I87r^N~a>`lFzE-5E(z;%$ecnkb9f= zw5n3e$2O;#CGH36EMH0QD7AiXF;_$Ix*U&g{=cp zM1{_XwAyf~PdDpCDQw5BRH!B$J)z1D450H{;J?}N#H@YsUo6vBWxyHpsK^kwI;JOt zd`Ozqt@$gaIkFl4d;`ZJ7!GmFb`Q*n+YWlw?{5p=Of^;qb*Uu)oLA$pL#=>NIpCZe zFohDFr=L(4#G{h|8UV0Jo{6>Q)kI@@aGjAvi0;ZCps-n>2rZLR+wVsHJ{@3hZOOc{ zYh)G>S8dl&t>gKi=heI5Bx0;eRfxc=!2ya_c`3&?HxyFZEgqHsByx<7B4}h;bUy@D z@|UmP{t&AV=QP$QNW5o-_)UG^gYF2shb`7r13{pzFSd3oEzcZDIB=hB`br3py++^4phT|5^jZqSTZmso}60q*R0g>7#l!Gw#SSC(T@yZb!XK$oR>`i zA6CWA4*(L;3OQJKIIw$jX;(y?v@dM~$3?>V*FFVWY`4fZ((#1aP3<0l+ZM?H`xpc& z!0?XboUaYd(q7DrBxMC5{QO{qD6mqN&|i;`<%p(@VmzpMM(Ogs-6cRrQVOc>;)u&V zboY87A=MHKAT~hWDkvf1U;qBSP1 z1T(EeZ`^G6bN<%Aag`98)s}*Z91>L~JrPw}oJjJ6P~Qxwd~ei`__^Uy!__ zYQp>2%bM?Qtw~us3d%%%f7s;2Uov(FP?_vgb7sj_J$ZBSrdaF=D)+iwBFPXbc`8S- zAsEJeRGFFZs-<*V-m*zm=Ef8b}-4MS@0N$1L7ER@KE=7J$` z!%8xb+uoiDhJA3L-2y6X3ySy9)PU=ct(00)!Lbva?zPC01h^}kN15~)fED-vDhX4+ zlHk~x_jJYs?k_TXGC2FCqnV=_ow@{%je=(%=(69R8W7x>#WO>+h+@^` z6J`!+$@xHJ$&~@`r2|+t~xDJkBt$~AZy;{MF>cwXE6^c%uAhuH8^d}zBg!F6@4L#(Bge%>Oa z{TG9iABCWWE#ZG=Kg85k?6JOgi*xzKs?KE|=`zR&f?r$?w@h2%6|Rf*-M@J6JCLFr zE#79LxB$a~aM>(e!PBS-=8CwBiwogchk+V><2*vx!M`4m{i9wljdl^%X2}=V_=q(C zFJ79zBz*HLguu%0KPOn1U%a;!AQ;m^Zuj^RUdIkE@`g^i_XrLHVMz(!JObYo)^_@K zoA6DpgRp@w)?6gHWEAnrFm`Rg$YRjKA=?4thFr&5j+5H1Y=8VF&#{i9g!OHQ*rha4|zzSu2JVFh7|Gk{$<2_Ormv*eJ-)lK%^ z|BH89nD5ptE2agqg+ZeY0d{5MT5a0Jl()uSiqGI@=m1ERk;{WMTUg^x{ykDIx8o6J zRR0LEL~4@*L#QHmQ5?wIZt^PhM+iZ9i$%$sw%vexyU*0yPte5ukl$ATyZO+7$(%9% z;~@V!5bb3bNk-l&;#K|Cp-Mcz8tR^ul>jBRx~4oP$@XdYV(K<~*(RX()uo5x&IwSz zFGL;qH?bP8Gur5|?bANeGh!+31FD4yWCJ`f2!V}#>B1ik4tp$QPPvj-HWdv5%1|Zq zW06hk!ReWzK}b+-K3XLutz_AU+4i`wRwu?0HP23BNMk^#fzBus&vDa*Z?% zy;pZcl2*-D$MGhCWgKnMDvGvg61mmVi>G`jSxok}HB|CSA{@(V>SpA2&<@nX)ufhU z`HEVqc8kA}r&4|*!jUoW*6KXFsM%3?sFG+yM7G=&Edp1!dAw*4uK<%j&S=_c!+vh- zSQM{cXi18AMSOSYl+a;wTYYB0quM%Xgjk^yy+#N?isKhB1Q5*-C%F2zhF(`s{lz0e zJV%5<92Fq)uKXpAop2`1K#_FC4voD-6b{oBxC98>?f*C62C0xktQF={CW`YtPz-wx z3n!m;NLy{(LoyN>k4~)AL-PeG0weZMMSkm3i1O17dMn%V>B9^c!jXi zOWVg@cx#KI0tLb&OaXFKyGD9r6iCPsl{AvBtNw3bs5ZZ6vJ0vI2%}$-2)v=zu`bx+kfGIJ-D^5pZe_!!C)^$KmC#7VMNdLVfH{?0~oR=dFO*lpe zH+Q}mUQr|5tQ$>`V}d*qR@Z06F$nELlz6uf=*kYrhIM?s0Zc^F0CMem)X6_2aGjyuqw$T$N1aU z8_RpMAVQ`C(RCTD#yllpGxj6CJ;1s38pM>9QiNEZDe1m81tyA+N=>iG_X7%AcaAzt z!bMI7Dp<{ee}fV@*EjQ-Ee#Dg#G?f_;mEtB1(LExj!_hp(C`WzhDTWK;Q)i4+7su5LzxBU=w@YWd@D` zR=P&3j20i;7zEVl?t_uil!*|8=E3TgbL1y5YR7Zw-K`DBSJW^Z{ye|m2$Hd=r+fqd zNET#WdhGe{0u=Lp_QSPC_2$+39WYLT2v(t%UUFji_PUHCt^2VraGKP#0aedQzv*r* z!5&d`C!rx4&+OEoMHQz4*w{&6D*M#7`OencR9V$Ge9^;cPmAn0pD8(sq0k|!LHu-iiY9$kxcp^+pw!XX%5oUYEA zR<2BXUIArqC0I?4aQivlEi7<^A0DiQaL&HME@-U7p2}T8Q@al693)?0{yP$aBP}+NPK7wo3x$3)NUN40*8>gouGo+Uq&M~e zg`cCWbL?opiAB~FYUPQcVbhp#k%FpL@oPO0f!~dZ`;^#mDHsKFvTd$$ z7hYpzAug#-QX=?P9D_RrNMSsbqJRHk@)k3T@jwXH(pd#5)BQ9>L&H$Lb{a|-G%7h+ z*PV#50yQE-^(qtiQS;4^&n6Yxft^oCRj2Y)14giteIeeDCr@1K8RM*i2(S+ZSA|rk zsmk79062XwWHCOv(j0Md;j2qdPlN#2p`1(zMHi|t2!-9F)yEtdX2ZFaq4xkNt=P-v z5f4r`NphrI6@d6)ex~XR2p!yimif=gckEpg|65b<>mTMS(64zkH?A!5-@BEzTjE*R zP)MQJ2Mi0>ic?N+KhlK+h)yZcbunkl;II<;Tex@)V!k`w3KA$ML8Z^dywb2*7we97 zrpEd$E0G!qG`ZIe+YHbqg>{g3Hu0Myn1Esy_DR~!q7z@-N}y2GOAGU-LkP{6k#O&W z3PKJUAehe70T4Y0?_bdg<#RdW0!T7gsv2|TtfKmkwGkzdzgFAd`7L~zMN);{JOHmf zR?OmPjWAuED>VM>9pFm5Mz*{+k*kU%zPMf1aVKrVh62p@W0fybL;5tG2!*7T`93x| zS|3BGW*fqUM$w6iak!{idO~o|xvZtDR7TXtyv8_Bh^Z{159*I&*IH0{MnMIuD;0-5 zX!ikLq`8DfaZt`NH3oU<63{R1@7s)P0`e_XiZIJFDc;h9G3AowHL#v#*dq3450CYYc>lPQONil`wte5^RaxEF;9N3YZ7W84wA{E4dH$LFrOA z>|6(g#6LQRQ^z?Mo9a7E0e-OlG2pDxN9|6nPe*5+$n0?`5> z8@-VEcGb4;9aT(_Ei|xNVJSMRFUIH+|584$kwoap^yb*;X7A$W~<&0&6;_xIwxE5v-F^V)iA3KDZ7F zI!k~O@TuZ-D__7J>q+_@Oycw zQHh-idjI%39i1GD!K(HEF|D1wb!!dt_N_CrFm9;&s`{_Dv88ph)miWimSg?Dud6_3 zs43*A+ZfBT2ZOx~JXy{>f9O%P|A!4C3ot7*ie-wW=%9qmZJ(e5Bcy;aA@bKWf|am- zVF-{*!O%HKG{-U$&S=N?Co+XV3)(H}T3R-ODMhLKCKn-leO_*vq2lHS1CLkJ^EN+~ z^e<`XWIV{Oseum>{DR`|&T~GzN zLzAqVwcvM@V6idcGSa)DSnLegYI9##CV+$4p*kIyg4D&s=xCKnjmwY-I*H!OU{#Zf z0%$-}2xak91avuv+p!v1)E3dqYg`5LFxWIWg_bbU16H;53Jz(L=81$d$fXTw#%`{w z&_Xj6jmz3^+_qp2g23|=W)alKtOQcw-0%Zx)5Gk5a+m`KvB}S(HUNKF@4fAI$nSR~ zRvUck;zYLuAWI@Lv@fxK9T_=X7zBC!xJKBs9Da+4@*1(#5 z%S_%HRrAiP0f#-%`1k;!iqBAY72MRLEIa1oT-r%uQ~|DV|4(YFzzBySQ>tX%WI2@O zaSZqM`K(NyoTT6vC3PAfmVhhB1aJ`ksqJL;KQ&wu`t7c?*LAlCpx1g`-rc|)*5oJSbS1qI0CKT*#L z_TxdqBE*ylv;EO`yug4K47nKEFr(LFcmqIQuPBZyR-+@hi;K}cGf+Hx!hvkV-n1<* zI{wpWU)^KzlC9 z7QHjr+2pm_mHmbZud{2z{Cno_Q)G&Bmk8iz{P!;r%uj70YaEQ+9Xv{qh%?#UD;szs z2u|KB3Iw4m&Dm!*Vzrxb7H@A|17!8!m~2`}HxX$`%kOdbk` zsVFLwCnzZV83{J5r%DOK>qJv4w)Ky*Dko$c=~xT z#Oi%M&3cVdlJeIXk~VD;7NXiv*KKj`cMv61UxR7I=HAf7&zF9bKO1~e^-Bq%oW(I1 z!jfK>b*=Y+fBU3r=dYB~d{9O^4F;?})w7s*ScZ4xl-00B|K9E(1$Gc8VH_z4i16in z9g&7=#yttg78iKw=@gs8fdBHUFnyDa5LWs3A}XMbf4;nVVo>z{>mDCiUTIyYrN^CL z0f+|oz%u^JtHShK8R4q1%|c=kP_X!upH7}Cq#6mAtT{>84U(|se6=7*g3s3tB!#>h zCE@2+#i)`nJcX~V{GmO@U6j`WJu#irDejTs85 zXg(0SO3D3|Qg&-}=q8VW&o0I8Y}Bg16}+N6lwZ*E=wz^v^vm;f*d0O_w+BMh@ z?NkuE(o<%HQYr{q|FBsFg$8-GswCHo8FtJ?TW68-3{t}&_^UsB9Xhe1MruzPX~F;R z8^A7zb*!iX3oWA*uPs{zoK_{!nb}k160vf&Sjlm0b`WtOGqY1*$!n^-*1s7Ao(p@r z%Ntu#!6>P8UE*2ljAd+$vYqDwAoxRK{?Bk&biJ(rLs#NeHxvxL9z&I`m=nye<8SNI z0p{BQs8LDis|6jYx7A;0dKCP7wrXb!_hFJ+<v{w?46daaR%l_e#~VjR;~I0@OvK5*d*W8@oqKNfkPS_nUz z#)zre3I-pB0BOmrJj3$d4KrMx^a~^Z;*Y(r@tKWJ6&qbeQ$&DOp~Ok#bZX+A#T1Ul zy|u@0PCk-gJQWQ+pq1t7H*8_N&rLV1>N1;*K32%b_RiAPWDD*TOF5;E_=vBvVw=) zll3fsmp>nf{!sgsu8X+C&(=i11z9ID;hXNo*@E5+4r!GE6C~Xm@`=rR%^U<*G1=dl z#yGD@TcH$m#Xc$9SVT;@@{>1lem_oOb(>n@WOzjEX?kEy;$Ov^EemLdO{YmOm%q-6 zpp8a+`oRLk)U_CvQc~YlCAr%EEuf*;_m~q)^YU4DWUGF2=jI^w>*5snu}@l}CUHWd z@Y(b-{`pJSd`z2ou>Q76JXi+a@k)Sj#q?LjWaYJ>2Tzuc5G=YErmir-wuqn?gy$Cf z!)JeLcoL9Lzp#YI0I9@y;N^zJ=WWu)B6)LF{$`S?%pSxQWnS0%P835~sQLzN_&rt zIBDR4utVqJA(WX&WXk; zsCwblF&-tZH4m(H(8aZ6Bo&z|Gi>Q0N&NuA+sMHK6`dFr&73vFe*7N`o4 z5f)b?6y|b_+VtNz7@;60ftRZY>s`zZKW2z~%5wDA=jm_lP;~-MmHxAQF@hVajb*HH z;==?m;xFbugqJ|Shl7N*HANzWJdQ}xh{+OI9uIRJN}`!m03l0Kx-d(4;Nmh7#M?nE z0ftGqYfF%cRGiB7XH_Kel43fr(~@ypRuNVw`!VQLwUVY@(vzkznxrJWRB-~VwQAZB z3(3OdI{+uQu4u0%mf1F<73rlmBHYcFo_nz^3{#ubs!2rEih_9BZdv*;5O&^iHyp`~ zS2?u=RHS1Gszl9wlmu~KT24(}V5!UZClIlPXW@aW?3YQZuua;yPvN(RiRVHG-dZw^ zXBENXFD+jJSp9s(hzP!x--8bDk7S@9*MUXk$~E#EYzCgfPHTI(6x{C`NN- zf3%ROhu)wbN{eS9xz(p(c~q-{xVZ?6yM!TGTqc5eFJDmx!<6kBA;?5KJxnF)qV8tG zRDSx&!W@ENr#TAFZ6&UbBtXHfPdTR%4avd}e)Cs<|12I%)ngh9 zVwU1GSV>jSAg)b>N;%lrm`)gNBZu3}=bRVfV0J1-9i6H5t{UopkqQo80 zKJ0!2Dac%X1=-9cvD(L92Ut)=gRpf<+Dw6=orwUTRae(~ z{LRcMmWDRFE1!;!u&_UE`21#Tt2>@so$Ln%d(^&TE66hQ9s84feON)nk zW<_6@)YL}}s4C|0{GfFcBI)cS%F__?hr|FhD37h~29yC(eX|*)XnzUdF=_q0CHf6= z_^#)T9|Cp+ZYZ_06R$_0Q0ZE>h_l_+rSy)FU}r`&ns{6PpAX&|Ad74%fSc6F-*F~4 z{4oR_q0C}xQ~q{{l`|o!B}y+>)=l9cA&POA)cd1h zd~IQow)&b5f+w(ukOzrLEB%}E=xEh#jFn(9l?B&i%qbbi-{2T{XmeBEUh+){`(}Di zOoyyy^>!mMstqm)cO6Ec>yA6-gOP_3^DDz^Ef6Rt(Z+d`6`Z+kY|)c$P4$t+f~UBA5af*vl|K&7X@gDxRU+!u(Pe9(w^dOzs|_^YvKD@X@*mB>mk$Zy9&<+4B} z6T4kugSqzZ(+{?C?_!74jOCL=dxq01dqbr&j2hp)+cCv z{~%?g;%l z;X*GTe#%(y)T(4H2-U1Kz+6t#j7$0p&=Xdm2jX;Fu1CB%!R(=_KiB01J7ngVagT=H zs{7o7q#AKrMTPIiWaTry(F{K4H)(bF7BVsMlD>6%{qAg^(Jvpb-)e+v{H)-W>u6p9 z#zRniN9H$ZLQZkb4bB&GJ|uV!Sw_$;@8z;<6Rf{jqg55Jqce9z+3G(i0qQ4ipKr>T zN_2A5efN+_TPBYF7j`|@)xB(^CNuoQ-qxg;ltO;)iRJp>1NJK0sKbERvLN;PIkQim zY1~c}PPdO_Bt&L%`Aq^!@`;P+tm6l?dS7_$6 z?`V3+;h|?q>AQV^79_`RhUJgvvX@4nD71*xqAd@Y=dlV?0&q+`NQ`RKuf&!;joOC+ z=u^bKMxil~4iq`=8-axx#vW+qdygiSU2*RJVAFgk`gak`+Ctt;xCg;ba10~6Ijos> z4pRi@(p(y*nDPbs`i{=<=t9?w@d86>$N}q&WInQ|2N)eJ{3)ysjZ;3Jedv$$aRvTd z8JnifI#6mWgB0hUBDPj_zw5{T#nJ(YC5G@F}ofP2))7BTo0w=v4XezEugPW_jH%qXev^Wyh1$7bi-=Vz2A8L=;^a6 zPdjI0t^h59hJdppgrW!QRoO+DzZ@YqXcj5EG`;V9@Kw>XcX=^gct7E8(M+`6a5xV@ zhZt?oK-#zEZR^%N=ow7!F`SY!);vg~{9qV?C-43m7pFRkC)gXr*6$VKbVR)~PE3x; zW&;$Y{(6n&`%p$kzxpvDiTZIGzb@#Byo&)qN*Q7OZTd}ze3Kwo%a>y^f&3JQsYho< z?Po_LbnR`_y7W;;r2?!H%VsODNFf?F9vC*RHoI-I9aflr;kL~5d7aVw^}?TaSQz>Ga~7;8HP(>QX?p|v$_8=_*HY|~SakOFmJ_r?6IJp-%yGkzD?v@M?zST(HqJW+pkIJ@A5ApX_gXNX_ouNN=bS;YlPjOb zjBRGWi{X~G>lybNtjH_alK3(@q;d>~XfKrsO)>0wCg+g$OiCmspF4Mqd5f~4GnekI z7*xPkQYEyRKW=Y%Tb{4K_m2DYS1VB{3c01hOzCClP92s7f=?}a;%R^+Zqs1{R^r3AWOt~agXCc{)Wm;!B#Z6$Q?<{k& z?#XjwumdBbm3PG#Avn&w{d&g_^RwEHCWwpo07}bW(Y*~c*wtp2{E6YjWL}X$cfU93 zJ;*bGcw3vK-Y%fWd4gC=#Am_Zp@FW?I@T*K)JTiJB^)knD>v zJxAR={^Ral<>{@5gr&ucXTF}7=`oJ5+S98(e(Y}kGK*pL-$OHb>)m23ht*l{76A-E zR!iTMFFdGoP_%`?#?m4Tp+7V=G|YwvszhSd`a=Kqs^-=ob!O@VXFp z;S+*Nv_-bO4|pPA_zapT4t(pke88`u;2kC8XRpcJprTqfao%r2ZlVZ)g8`P2(6f43 z6CCE#gKb59{VL*F<0f0EAlgfQ!7@%D6`IlPCgn5Oc?#z+67r3<&8>a=A<`EFqSFX)ED>)r{$?{ z2-SPCIvKf@w$$&0XGS$y-Vdt-Mjg|Z*WG!{2-Gm{b`qVsG|@zxb)j2g<-k;&?DnC* z3&%|T;c~Z{BWxeZ2;Sp$PY+}>Xez2%UYkQn>`^C|ukUxYc!kvEQUGXGi%!HGMxSMo zwH3K&V175iAr<8+Gr`R$1#pw|b!IMl>YMQUmhKCPn`IN}j(LB-OJwjx(W{NN?Z{OIuwyx7MOw z*y{@UQD*Y(FPrm!7^rMs1;$+_y#P9vcBCBmylr_cUwY&E%JG-c+NVrY^_mSTiCI8?xL(8tA~c^ zFE!e@1k^&srN_$n!RvL<11A`e?R?cP#_E7D%xUAbd;SKr?P%y}TQGAWK+MB+ok{eM z!$1)=5EaXx8b8U!u=#?1{zmBz1`+aR`<6HxdCIq#kUW!le&za zz3f=BD*65X75At*ZJX}xnb=(ez{c3@QP67VNA=3>pS5e;XnGZKfOhHDtlM-9~r=_ zKwD&GmVDTdNj|ArV(Yj$l*0z6H`xer?&yH|ETk;mBYlBthK}x=JMl zdXk*qcXV{z9MDyxp_$wB!o!8JP9^8iu|uExl>5w1L7y*3@M4t^s2ZZhhw?8R2M4AA>_JTmtFS9pz1hZ{B=fng?7 z&v*V&<$kF*;7N|*3>+Ss#;L<+Ft%Be}mC$}b zy}HwGGR#hOy7DvG98h6|cJ=*2+N^t8oSD^i1J9C%CK>txtViwM5a`Bb3!S+XD}6@i z_RgOfLY0CyE=t}1`D*t+ck`)|{}A*h&7eD|`HJG@32pw3F$#&5PzzOx-U+O_n1n<8 zfzPUzQt8o@x{3;|kwSPk*niSjU0L-I-ye}wQ4e~s0~hOhi3XnNWK{++mzX)`J&Vfb zL+^seY04g;%cPfdU~ei|@8Hnlng@~c%X^g?yCH1Atq&N$oEUT!uN|px%5LJ5?KsRT z)uznYU~uPBomNJ9=R-X?ktkXb@ON2rB@T7iIG@g^YIo_euAfx9pZ{@OA-oD(ozJIcq?w#e}MBOHnP<5Inc#Jf4=%Bq*n**k?QZd_EkLpg9Pa znOF(=PHb(_1HC~mR_C|He$x`67k3}W?(O3Bme6;&ma4Zf32U(~W((Cv+qhUOhz!E# zcHK8VP)WQR+j%OI{g09U>0~(FA!CnDn`H|})oTa3+?QmV)fF>_Hc7aj#f})QO%4s7 zuOwMIA_0-H(;R?g>pfjGKG>#pq?}?z!N4-1i(+4^d;$P$iWuKk=8yExJUCc*(tR5K zTlix3o9Jbuh_S#*w_P#Ylo_|X7>nmr+c@9PmtDi3h>d*HSVZ}X%PFiRJ|0TU_t!SN z-QqZ+7_J%)UFlfq6;~&VLQk*|c>n0Un1FLPGz z9MW#ovgHXtnL`A<>2~GEz%I771dOI3;yzl6V>`=beKHSd*9N{7wO|#c^-#C7!~#&| z@QZ$V18u3Xonu&=gpgK|=y0KNxG(N!fEZEE%f(B!`grg}9+~^jHrR<92JYqM>x>km zw8$e7mY@I0Dm{9JN{q3=^~7Lnfh0QZlT&X_$2&9K`mj-TAZzWWyvyOy5fL1z`b8u@HI+O4zj&Mq&HvL`6)PwhD zo8pw&&M?`_HUN@*KWiwbN^(q|h3u`W=IE^zb5TsO5J(+aOsw@H8UNqwhbSf_(kg)~ zs>;d8H@Wotj()M#hpG(S`}x`9G)F#S<2~EPb?PUnav!iCeFT)ElF_<(fB) zZFcQp=({PQP$^h9iaXh5*K6V@2?%!kRH&nC8ra`W=Qxnx6KQCBok}w@qCvSbIC_+9 z&HWKG+YFN)XfD*hu`I^-h@Faqphx>Sa{7*j=G!1*{LPiT5k0vpoW5N*IiPGXeG7He zpgt^U0qYS(Mdd80i7v(PCSTX+TyMh(m(CLILM3InXbg)#@wv|={=p(I;$qx6xvrw5 zo2?rG+H8}Qcm4AylwESViu(&kCyG97i&b0Mi>Us6nSul88%Sb2KC`-c7%ppPfYMIc zI0C9b4v!b{QMJ4FeW9?Q?J=}xlUBS_7AR#i+M;~zu&`+B-zB`J2>#v^6~<5Uj&Wn% zQy_U$VVe2j6qldDU)!I@1Py!*LCL*jnkaTE0lqKiQdzT+L(!H}VNod0r=*GesK!(2hHOkQ$j|C{x{@AW*S_ruS8tr4uhsAv8mmqZ^W$Fu|4)qbbE z-R@WQ+q7280ET}kmoJmM+GTBp>>9!PfUqHmn)pIIq7Mv93HW3_J#A&ZwEHg<2X>lG z`8R!1pSfWyHPZ?`Eel!AvLIGd`I6$i#L8X_K4A#XGERkQDH>b-TvEKGTK;y;P^8 z>jEBQFubhUh_S&JNLW&#ms70C@X>DWx^}^O)-2`lV?&pe==6%B`~QaK3Lq(3slr#A z`GEhgbd=cm%F}cWb3Uy!uq85D&GEf9V2$&I?S8`6<`eM7FR-m!Qw83^G2C@^lBxoI z`1@RDa*eLK6|x!p^}9^zUw+OHi-#zwloDL)<5ZOPl^FaxfCs)RWb1&dKC36hb9i&w z(4Uim=$MLeFX~!5qlZkPqk(s(Y=*lqIR?E$J(`SKYG^oAp0h}MU+{KjI{3jRu*590 zz>AL)ki;S#@Zyr@dwq)_Qy^^3bg2oVIy($K!^j%?1Mg5UN!%5x2On2G2yXqt!hrG2 z8Ki1!a-uTsE6?aPvn-967((6N%><6*ZE+jU4;H5~bKE%Iv8WFsX-`h-2aEHW@=l*u z52$=wXOvgdl()Oz_Nk$JqH#C0LOi{i!Sw9?uvvHTgl3TZ&4pW3(bjf5Fd}{`)e@bo zOg}YJ`@*T5IUWS-uOxK9O+Jri%%#sArKvy8j%J>3rL~u5p0ijG@nrm!G|YR5{>|hd z6|P*(u*=U3z+$R3P$@6~r{De4>6R4nv0vuHRZV9jjm*eZ%E4mnr?7-{BCURN0Y;jK z@Sc8{_u;ZptZ3SmtehcU_Jblw!BDoJkJV1%IdA=CHQ8%|M`O7A@*ir-l_D2JDTdMy zF`Yci)0gz9+&nB>SnmCdN*GzqbV5;4p4;kOF)H7nmGd&eT!x}!a@nrB{jyYPS&;{J zAW38}vzrhE23BNKkryUW_!~lc^P*V~ri=E8T) zv#B6OwE92*5%!28gF(=_cXKTbuaoLSl90wpmbA(c4s$*g5s)| zUBgKbd(ad$`bhTSOE1v;>QCTJ{$Qv|Wf6E19=l@Z=v18oQ!O6!VEM9fM4cDZkN=Kc zIw8imNx-*RNtE)n-qyxBXDY+D$5F_`7J9ZytkLo|J~5)+G96Z*=O)bh{yR9=Rah9? zA*nubZg_Xb2y;3Ebs8U3)Hc<;UCrbTb^p)wM85^cp0oM#@jrL3F@>5eUcqxThw5uL zn_SB5%w!10N-oOxKv>0=?+=%R6{T2p?l%U zKp?^tF04@0_npqMBHu{Yc)-svpwpO~m-*|(i)M!nEueMaD=7R6m2j^=tVp-Tr87@< zWeT0L+~JvuJP`%cVXURZL~@SZuvezu#I`GDWdosdjMSgll0pSkQdr8$$^v^d*0c4U z@0!M243MiPDuql4(NHG`h7CfRNIl*QXjZBquOA0d+1W{KD!sR`7I+xNuMJN%{I$nV zxfr=XJ&{fENdz1jbdfe0 z^lYdDFPlx#7AXpmxx2SbcC!1v1kRaYio+5OQ}r`F^;W9C^)&H&@tbIle2xMF^ozU4 z$MiN{b!IX`a<9rk`b#|&s(JQM0sC2uqbSTV@8B@3LojwJw+_an*m70namxv8Ge3R! zci&GCna~w0=L`ITV0N6TlhrUQyJaTxAwoNPvF94H!vZqKPak3vn6C$;N*4~r; zJu3rJO~{i5duX%9#1$F^>PM?YR?KT^ZjI{~&)%G?3sl7drrqoGJxQ9%<8U9}twecj zXR-7OECj|ro^d-tyVrF<&e1TWaa)(@%7CU3j9m5L)kp`hFM5ApVH6P|RCdFQB*oxf zY{9he+1niy@qXF3J*+iQW>B!o9t7$YQoc^Jl;kkm!RjDX#CJ^ukjiyHfuao7w$eI3 z7r;F*4TOjAMWyl+z+dx7nV+Hvj*Sr9WmL1b*i-y%1q3D4=Mwh(*f$WVQ}l)X47N?7 zT}Mr#SA}gbAxr6!>XL0Uw-sW)HH_^1>4{5maMa5D_Qfi>x4@Q~K`qx>5*|op#pI za9J~t(9!uCDytLZu5cPScl092A{P}B<$q8w0#!tlaHpK>`}6+EjU(1;BY@RO$K}vB z?V`8a4lT?`8R2g&v2;B1pDeD+&!1>t$JC1-AVqjAdTS^xfVW`Zy9{8BvAG{skXX3s zu5KsfLW_=0Al8N@0jk4aLB7r`m%LzsXWxGamM=(s7a5^==VzIm7e$6WXCd*dW-0h? z3sB=2AZc6PTd%V+j+TS1LBQ(0pZ!A2j&)t(A8JeU7J4s&NM1C)i2D?1==r!|a>NGG@tL9(h-a8kxTT;dSy->wp zuqdysEGh2+-4iU+cg^KXsatVStMCjgiNftPJ{RVN_hE;wkOs@cI2Jc|X^C6rD1z}m zyYG)AO8!{6POiS!q*7q?s@iSAKX{t+-1=(ndD6}Alh{5)xxb-YwNPCDtG7)(?Qgog z7eH-0*p=emM$@lQy=Hm9#V?33;dZx@j-;8UWx* z(H(x{rVsS*%|f@4&w$gVSqcqe*QZ@dZC$8~<$3@D@&0b#w}o~2#UK8XkatKkZTuvp zzr6QAwCkJs-4VbVp}23Qf7`%c$u1grL4c_xy=OJ6+`2M3P4BJLyif7pclcX={<{wU zU5Edki~p^DpyiyxCiSuHS7lxUgu`W!Wpt1k0+}+euDJ5EzLL(4U;~KAA7;D>L$pR^|#t+cMeM5vF5boya{)F33sK91x3Wp*o(G~c-atZUZDzzg45Li zY}87HpiC*C-%2DSAiIfF@W_Lv8uw{x%RR$+E&w2O#WcSQ{h_e-X6&>gYb#ifEMth5 zwJGmf29|6!MbLuP&VC3VIGqV4)>6;AK|fnV|09l3>x}v!_}c+_tcXuv6&rtOn6$Adewam_X};e1-PbGUb7jXb~36C7b8P{y-4BW24F>%H1>`BP|5EIEpf$rAb``>YcrnI^ZPc!txwjVi`C$_oA8Vjec#dSFo;}+m zpuMkZeJBNG)a2uKA4 z_I6K!_uiRk5`guS`m_=YC)X1OuC+NYys+d;OBWn6TRh7nbSE7!P;ur7i&Q=jTo2x1 zJI1f>wLrF13aPEQ!F9A8XOMlYHc@&A3J81kn-;2<{u8$s>VPhLIg%%50S5LJ1i249 zNk?WTprKG!Gz0#@x$bo4cD*$zcndMB7Wjf~Dw6IkIj!{rqJi=rt99Sa zv71-l6W4{&HfduXax=HtA{E6iMx&rS2?bl+rD7{;pioCm0GKTge#JBnP*A_-_>pYf zT=IbKVC{3{2YVhHOuE3|ej?}dN}3qWNJ zUTDfSi2&9|H^0zFkk5rtSU`{uG|CX3G;Bf1PVg2k%!voN&Qg4>{*4vHc$OZn zAcUE`5F&oY6hNEO*wIR=wxcv81R=J9Nk}~i>7YbS!PQ+LwBJCWTXzUfW?3MmY_1ly=J}L3M~S7=NJBfs!}m z13!fcQBTO-nA-v4p%j)kefjpkvrcfv3LsFvp$=+t_CTAZOSY#m{M&(Dys#$5ug5zA zOLwbtWEZs{Y#(2}9D$kZ7t<4~$1`lpN>+oQVPsVC)1B*I37IG?w}>_ebttVqp08MP zU2V`)t!?|(=di!o-th~jWh*cdjTWyT{-vZZN-PVk{c}aPZ_uXk##{qOxbT*MTj3ip zFmg_ky)4khCl|zE8=uL_`DM>;06%7RTPy4Q+~)tsyqqkY<9P??nlt=DnLJ#1{uhpF zFvpCO+lf~HfBbsxF-pjpaap6558;f-FBV(zt%9O>;lq52^Ow?JtR_75PdICg={{`A zzr!PTU8r5K4?{re)hph#^uWaD6<-E%rXlOfG=_iY7N{)T^|=ni2X9kSNFwt#Z3P;( z(S{zC%3b)Vx1EcJ$^+CB=WnZt<1M*wjx-=aNn0*TuyeXp$h!l_@Lr~BvDF(k~T7k zS`flt?(HhD)513e6%#?Nr-{d;E@3Mx zgPPCO3(x-(=}5f2!bxxGTiD8tb%pNiNH0efVX$D}tzd&jcNzaQ-oo>Ve`vn}@o{!E zt51f1H)}>Mtol}O6u26df5W`0!Os0KkJ5uK9~RCUW|H%xF2Mz}^s0zCgIp<7Moj)! zRTKkQeq}NfxWe&(7K%sEJJ6QK-<(M0^b(7hMl4d~G~jT~CN|P7FxZJX!FF3z{NcHQ zlb`Y6#>>6PLf-$$MU-F5R-D$bQD;{*HpN{${Vrgv><={10>; zj)17^Apm@bV3Sq2#NtGCeLPN8spsDLM(=el?w|heG9s3+^DB%H-=cu*aQt@RAM_BA%ud++aAZYQ( z%@73@4E6-FGp^e^47+Hu&Iq@?od!oVG*dPBHaE>b8dJ;(j-AEW3a^DI_ODF9-j`TC z+la+=uTo6fG_S(_sol(PQu%X^fJTy0J)qW|*-$_JGFpF~@)lx%cqA%}nj&&Xy58D)1Y-VwZVS#!b0{U^ySgrB=U z;w92~oCZ6sn!1~N$Go}v)!P>LqxfWfU?Di_V#2UyRtH>3=cgi3gSto9Eoe}RO?$C% zNQcMAWrWY>m-r_c63fHmSM%6&6XD&+FoPQU)SRenm;QAe*iNtAubBuFtO8@0*7NMM z1IeMQ(Wp=Vwh$9S;rJ7Wj_~eUJiR}??&3B(zJ;sxMukE%!b`^EtgAU+k{WrLV6i6(gesReTNU%$c<>thNg$0CpY^+FowSHE^FfmwUl-J>LM#5yXVPjXrz zi!hg^r@e$wEG0XO%S6~!@}XZHG zw(gehy+c^qr{W-?``IpSCw#W#a{F6@c&BMa77&xStnfhAO=+Zl>mc?C9Rum^RfKOo zm4}fd*siD$K3jTZ6Zo;9g?<5%y2=jTW^(zBpU%sY4_bl`RxAzEQJ+rJ?IB78VLKMi zcl&mjVBtl{g9HvY|0D3(s<%9(5dwGM&LVvEC<9?u#Zj<-J*hWxrAX~o6~+*3%L_je z4)9h8m5gp$uDZDSzj_J}UYEFDtRqaSeG9y|^u<$y3$y#xA3d1R7rB1z6=6aDv!GC~ z$4O#HRRFj8yyCZX!s{$KxR@nu^`|u669fjMd8g8vpq`d~j{pC>LbcPtqzx|W43dm@ zw;(Z5k0y7^@a=xdL!Ei zuLGlNlZmJn!d@)OQ@aQZ)2nQ9kY!P4H28stiL71n`@}_Gii2$_uC}GMSn3k=Z=rAz zilTW#0B9`zTZ(ukkcYB&6NJU_kB7GoQl%#&88c%*YOgnv*Dn)hxCAra;vx|zEfxm? z=EWW+N)Ve8dsDW#>@wtBj|&XsjHz*b9z&s9LlZYIb$|)Y|5{ z^?DyPsWNGuDCcupScQN6<7~88FIi19lh;;`v};F`o8Pv*AAC}`wlugX)WW5Xu*Ex= z9gmoNW~5Ozx^O`&DCga`ZMFv@crU+va3Vh#TDIt^43mUSQOMDJ1Z++F6T=N{>Z4~{ zDy<2mf?`qR<~2hH8=o86?Nl`JEW1jctQFL}kn8!^_g*+L4{wVZkktg**;pn|XST&& zh!Y{G+>d89rsX{-LS~J^DJ8U3%K>fn?*u;2dWmt6)kxPx=?|ta-n@52ukg9?TM~e4 zvUUuT43N~aJxp6RI+n+Bhrum5#yTf*(f*0KQFzApsnAkLGzyA zkrzi~pL4d^uVT?;P+)&kqFQ{B?@U|w%lJLJ z_P}WdQqfb#&){zz3@jru;KA6_z^Y%}rO!ihPwv75n02cN>hSCn_(6 zcHaHf?$29+tKcd4&_%iuv=fZo#|JX0W*A6v2T#BbZj&ut$QwbH&=Wqoep$Ct5<;JW zU#UoWIUmo6IS3w9Vj!G(JP(E-Nf~vd4}uGL-FyMT#OBI}U{lLKe2w*h+rf#~%%sHV zAvBS<(2N%#csn?DJ$!1N;X?2kmtIPGOrIW?`nx{l@4eB5a6#0)*Vj0qo5q845`?{7 zQjB&S1ey7)ZANg`aO^Djbi`_#%hJOxiUtp2(eHZl5{CH-$q3cW=Rc`IGYz^R*TwHH zIlhA!_QieirISEvi(}i7{Z|qER}uU_s0fOMS6J&OoOo{i(fbg4yL);4`Xm>7-t@72 zW%>I0YjN`Lepos^t+VcMPkNujC!)f-$MDX^ZNHh1ce1|eRPM7B5E}dN>Vm4=$-?mj zzPfd7s*_?_qxY%T70iB#nWhz0-G68H^O(%x<^k*XPd5fX>-5Zc5gqeQI7x+BFa2A| zrA*7V4TF?)+v{eHlx`0Cj81+t%553Fwc4*c>sh=ppR(b2Om`ELjI~^t^S2+xS$l2^ zGTMmPoZT8yGCW@9v6d}5=4?=&d{>B+7nO9z_g=0HF17yC6N**Ur@L-8NA7E^3Gd@H z_n1hVxbJ+cC^GeUXPik?YIIS;RO2qctu%?X-_N%|dk`nzjTSUB%65?gmm6bdbS0lD zmYLb-kSIwVF z!mR7J6o^i2Q#0=$e-~rfy4K{gi1p3M+Kul%-Jac;JYeW{XE542COFG4-Vzq=gHe}o zksQ51#Q1CR_X2F3YF27JeQ84hpj%g=vysvLA1b7w=h>x-3<{(7MZE=tr-p`<-&ZQS zL|2S7I&WBOV*fqs?GL)yahVI|&h-j5_O(YfOlpcU8LjR50y*#WY!KyCprtNpwP`nu z+Tc+u^s+upHs|B|6Sp>J3LY5IQ|QZ6i+E}DJ#_v1I^}3OAg24qDSDP7s`tj%+l@Y> zBHk^|vjU^ajm=Eq!k;JWCeOcL(^gNFt7fX0Wyd+y;%e(yVYjg}v|{|DsFOX-AD?pA zIz&@8eN?k;BTImX5}G;V(H#KM%5FB>x}XrIiX zVpYogX5#8jea0^;<<-qkx&FWQzC0f4E$&~UL{Zr)S-S2`C0i?->( zW6DsnbaP8(ja<7S$rhuLgb-tkVJz7hvJJ+J-}!c*hi}iF9#6mL&xgOfzVkijd(LM& z@AEmI&*yy0aesuPJ}%#xrQTv+#BW*qL}V_)&h#Y6WVp|?U3+?VSzG^36u z?LGOT*%)^tnzrzDVw_5gPH(xY|E@nUn3E^Y`CH%mC}H`Jb|9+m5RYHHRsq8G=!w4P z@+ZmK32NRQYf0v&XsmNR_02%;o8yj0({wlrv{A@2coV-W+9X zHdu-DrB#y0b|A7x?j#dcr|Z$!7=A6Bwi%f9*Gb#nuVe#bXD@K;xHz>{b|icBd87Yn zAI20{Sm_6{viP)7t8$=>$U-XKPtwunwc&m`xPfR7Y4ZRFgc%&eei1dP?0yJp2Oj%; z*3tX-zcV|_1N<8eF8{t!_`nf;QT}M3!Qjj~L?Sg+d!26B8sgQv`fPde2qK}#D6%9< z;6U&Pbbk>~>00e`8>#0!OdsM2#r*0EZcq`8{y9VWpXcUJ9uM8*T;o7YGNT@MSBCUxlbVu!P)1SUl*9=9!Dq-sBXtOxEye4-Oz_z z7=JWAAdmZN{uE07anqwWA-WRSh&@w6Saeu(js!|P$k3K?)ipWtO}WjnuGb|Ks5bQB zk*r?ZgyMbe`;U;7lSAXei0*WTdU9=CrDvbWPLaIMlEB0OgI5K!%}Q8x!EH@AGP{2* z5r;dC!xP7f+_}i@yJ_^Si{`1C4PuI?8I;@j#<8!X114Vc*yhsq(6^gAylM2znKKUp zw593yWj$(+p6TIpDy9bD{ka(PSF#M}&qru}vq;dJBr@JW+G!~d4nDpDpj}ub^xLli zd$rIF4Ld#r8`f(L2D9SD-yAKDX;otfB?#&5nKKkCt4SMIU*w>AK!8v=rBTL^My17Y z6^gi8*pDP-HtXB@iH>CJ;OEKoLD4RretNdKkMTI*iDGl-v932nDtF8_#KETWIx8nm zYx6@0{qX&lr&6N`J7O;Xt}o0U7Vmp2C$-6Gw}Wu6kGV(bi7usba|5$R!F}kF`V;fm z`&H()yGu+vv=eB0=uFqy?$)Xqi1tC6ZzNtej}qXvQCzdv9qGoXOSXw$4zsdVLrl_-saaf@&qkS#?gh;%^lKsgrZBv zc(WYR4~r1t$-`3_4Ve?o+8jh{K3(!PgI48A5o%P2XjHd3YJ+pQU7o~4G^7QTKYv*Z zF4%2Tuzcno9qLD`Q5D-R#?8Ms{ z+T^pJrE4lsRS|Ob^ikEap-L{AefISuw;KF=FIfz|9<;!w(*nrEJGD08Ks;Nx_^s~j z+%fZzY2@JfP(P=|ndgS4uO0@lxbxjJb4U!c)N6ylP1bsEIlzdk+dB~+{jR0El+e;g zuaeEwCHz%Y2h<m68-iYrJ7BYJO_FMaa?a#Fqw~y5Us4w>aupQj4_Ik*LFzz_UKT zUB2B-DZ8FPuGWYVR&p(xigo6VDiMxqQAyj}Cym#_k3>6<*yR3YfPL-x-fR!wBMc}< z_445Xj5l;>>5l&ORm6*xwB@{u;w`?;{bph0=Ues3p67rrKokV2XME3twa%cXgQ@d< zL=b{5E-1?9|LKsmO?ut=1AaS@N3tI_QL1P$+oL@wIW5D}YbE;i4+ud?Uqgygk!aC%EWxSmV1sPfH6N*obtswLP{C+Wmgt&s=3$nXy*8WsFc&z zS0LsR|GvERki>|HP~njQZLOj|B5%&Alv$RM^*Fo6WcZJF_8Pd@QX$mk)?wc}G2}cu zma$2YJnNh$oqhq*>d@DnF2=sJ22p$A;=GwxW!HW1>lxiC&W#SCWkZj!17l+IZ5_nf6e{ zzItb3yY_Ud3~t*!7HSm^FN6S~cmJEt%=(KRo@1q%_08G?l1@2w5~be)&^c543+8(G zss1XwcJ{#e9e<*qb5Z#=S=QxaXG@Dt*Q*GwHIw9pMPE;R!2Q5I-iZF##b_DHE z#$sD;N1GN|V#ZA>@v`QoA-d8&?neTVT3pU#mkBcquowtNOw%=POGlfDA|LJ{q2CS2 zrd=_38y8j?{-s-?%#!TXs$5K?4IiK4;i*iI)054en}9;?J5+%0 z;#XW?vE^)_P@HkNDE82zOEtY~y_MrB2VJM}*I!tuGPMO#B=5>3!xClAc-*U=`(2X5 z(xO_kl#eaS@fRHVYSO8Jg!if>Dp%I^<^}rw%*C4q?}zF+V@$5yA5V-yNzDwrlaRnl z@f=mq4;Sc+-h!!pdz}lrxIpdfv2-On$sOF8dT#H=ivVZlPyi*tO1rW54kGC_*;FpBPYSOa4z|_|w0VR5(-~JAg=vN`KkZb6Hjwmps-oNa zo+*i3Hut)!>}NV6KZhK)K?eLG@LWN^sH-Cp+rPWmDCKN~<`j=)-(m|1i~f{(da!7q zuejWdvu)>LEfClgrzQqvNQ}0N|DxN;>s)Ld3)P_~W&@I6%L}9iXrvexy(3;Ms_ePIy@1&tRY&847%syfcwzx zcnN2;?K5_QIU~~~d2yf*BeB~*otv%)>|o}Yn;lksX2E-;F3(PcLo>?7CoKb@5|`Fl zlxop$C*RE*XJ9y;aYeKiXZj*#`x6uI;`)Q}`Jz)*ct0X4&ox=Pz{s^cjNll7dt~IR zr1%9n#cfyqA&65i@jQ>v=xvRAS}eHUz~bC*{lc5M5;S-9Rr4qoHh5#YCjIQRNJSSz z9LNdfopyN#yb{D(&C=nFYJ|kg~g7Ff_?&b0Zn*fMrV|K8sv$AARD9-xWXpGEQ&nUb+VKEq(e(^Onq*w& z2S*n#j1+W_<(E5(Hkr6qv`m(w-5v5~KLl90g0-Iq5h;MQ)>tz&t&r%KXy&0pQtC>O z?IS4JA*2+CZiuZVAqBML7A?B@CaulA#P{cqm!Glop2t>L^f*P=31)`eY3gl$5)dsU z;%%wxdFd1vXCnKP2f@V!49>2XV-7m|pP=H$ToT2lIouIb-pLuQ)qlnx-U#8toMzn^ zC)DSoU4JH;Y553TYTEip%kFY&`3AD^b`3|_-P5%KwD~{?H$3#gk7jV#&gc z#>{Drm>?BeTT!i_)53T+aH8eS{Z&NJeXudK5m!unDmyp27kDl#rb34OO5MO=*9a~6 zPM40FvgaTDmqESG4q<9GF5q>hr>AN)TV7b#R1(>iUM)}UbY5hSKjCu5V=jjxlIV9I zS8Qs=Uk{F5xih)1g81af+kP9ucam!3c6JF`cL+dkn%!$C{7)kBV+TjRnw{(cDCcj0 za(b!~b*C8}H)#P~rT!OvWJa;WV;%=akR!b|q4PtpxSc~=y@JQ-MGAqzi?&@?$8%C5 zH!=do>_y(pE(B(|QB`JiTlz9@W);}3q1@p45QA3RcGxAuu<+`OMl$*p`Wh?Sj_>i_ z8Gk+jvFAS=>@YtDXocbypo5x$Q^1P?ZQAEl54-2lNKR!vtI(x@VMH`hga$BNvOJXyXN%z*0G}dzWo?tCmC= z=puK0Ui=|5MxiO8vPy=peWox@FEgIEI?-D;r*{oypl!DN8O=Xm^?)`0=At+KL{}jm zpJ7f<+ox}2@xu9wll!wq$!zbLu7*L2_lL_3yd{QN+@}rsr#z$Tp59Dl3JD&qyo)84UJMvq+gVpFGcCfR!ci?~HpMofRudj|! zQE_{d$VJ^it%eY-CM`4Ik*Z5>?QIS^en5fqqnS%-X>X&?*dN;D5HmxoaJjB&1zJo? zROD??ZY`(XI^s|%(7_-_J=}G074s~$n2`MLHurP!CdfjKC}C#r_nS#JYDzf8Oook? zricqjH}X5h5zFHBK7<(nw;J(Ik$OORwC5r3Yg0x(Wpzqv!VsM3jxQ!l@u(>L<90Si zE3{ua@{V4d5}4!~4#8%s)mYYEqHO7vy|C1j#zI2Gz&QhklW^ z&-9zjqSo0D_%xb`2h#-LvWMvj(!OmT5e>% z@lxQ4C#c$@dB%8rmV!Xjr{Zw~|av~xFbs0q%ZQ1vDjz=Nk!8ar+A;BM`CWCO2+v!=yRxwOjf)3n)lPlb;2 ziG*b6ugh~Mx%4`dFy?0t;c{+4o8(8p#lzM(%H?|OZfI*AK+Hz?4q$=3xN;eJ<%(Kxn9eYjHVJYyabd_97Dh$1RXlFKgch~Pt&6|ADUmC4xzV&Zl4$}^!+9cOdWYY3oj`V1@ zeGovCt-x-aTgV`#>b5V_qTEb`;Z+`%RdBVdl^4H7WB(y^n%5_+ zyT5sqD>6-b-)qSd;b8tKee^pSw>^=s>2*nl)6W$hypGHopf^A}o4~OqFIM-gyKS{C z68j5EGA*;FB)>bX#oWJx|E<3a{>8TYqvodFOIr&=(~};$4UJz@(B{w)E2!s>()C&B ziU{Zx2n{f;B8O`2D()K#4Ol$NXx$ujK_yl4XulDAUjI{{H_+l-`gzw~E7LdoN`zhK zldlPINC?~+)nRe_9Q(zp=Op%q0}elDb_BS<2>AwN@|fqVI3g?Qaq+XSiuE1HsYiED zxa@QNc7}2mY=-{RiDMa7OkRRcNGrHe9jmdHl;bg_v0%N8g+=M=>66DU3fW&TgB)b`-{$yB zGhf_JD4uv1KqQm`U7kVoy@K#b@)(~avF~O{EpB5S*}gT0@Mtn%PbZ?y{#zm|=_bz~ zte)SYtm7|2Sv4_v%&yzj+Y#BMJCNgPqt1ofXLcpgPwnFHBKPo?hGEqxL3;*CUCqa_ z#0LsScF!`0?qN%_WzKWwc1)i07_T@jT)dAsrj8j9RZT0Z@3y$x_+-CdzUo%ST*>XO zCS=S8Cp_(#%q>ItHLUz#2P0W>^&+@!2c9_glRyGBE)X|laxYmD7HZKA#OY>e8VCY0 z;u>D@j@g6ImjCSw5!eTk#6S$gn%(ihLIuIn#$eGeKOiFGJ)no<=S*P{E1Ln73PD~q z-P&36Ke&!K))RPc`+i7kRbvN_IAynA;&Qfz<(D$w#(~=V$HD6YmP4?7O$?McM-m?f z(LhZ^)Nc_1AZt2--;w-UnOx^b}92f4i=06RQzkRo&hWv0_ao<$}`{fL!S9Pz}|9|SJE4tt)#Ap906`8!y1?Tt5^+Py-oaN|ZlcPx~s_{cycIQ@z6U0ojRAXn-eyt(pc% zSXWKMckx{{4c~R||E6gGLEDU}W-TZv{|4$B+)iClV_#P-hxC{wtX=2A-MCIv*~2-< zKyfIa#a+`Oyke1OU_ znNz+>&23hc-8_CXU;CwGJq`!Kdiz>w|oTm48Phw-BVRMN>vHx-A#nO8mo_)HZc7yl2Mv& z>*J$F=Is=@fVvBdyJfxxMDu-g0F}}=N!+AXfAjV?`= z%?m0?QLf5T1BW%ld2>H<&jrg35@TEp$j<>W+=$ zJpkiYJ6F!VQWJvC9enLMV8~(uhLun89MT(Tc5|JD^f zyI?egjSI%|hZuk~)+H6d<{T>zMx$gE^XbvD5HRn@1q#|%82vj3*5L&x>(2DD87wH9 zIlwga2MU^-f? zQ(@d^&Mau>TSIhw$_1l}15`O$GWQ*uQ#*KXR6qe<3nCvR4AfNX zKV2&Kwk$p{vVc(yYzK6W{$k4ovsYq}KJ)3UtQN08e$ao}_AVbZG9}WIDNu{G19DjC zW+%0r8^(gM1v6>%Q(n>hu^B@p%x!-xVJ-(63uj+~S7T>B>jEfk((X&R<{PQ&C1e_VCkRLt-*K8y1F&^nGsp_5kQpryy_$P ziGY0H>8|<+zHjz0t3CqeJDOEz;XnAD$!hx(jKAt5SoIP7)PV$<;#D8Ps*m8mTaqEv zzv?6Sk7I{bAHh#VWz|Qp>Ld7|CLtX#p(a%@!=wRv{mj_ zkL*UZx<)k@j}XJI7?m;3#JFCzk*oyP>+5U__9>}(_p11nkP8?*#k+pSfAhG*&AqGH&pM{rYmtX6Hns$H!oY=*!=N?E%z4ScUtuO9gPU!~;s{ z$knbKVUP`8G&+WdML~$A`}!)44sC?hP-af5dQOf!Vn$6TY{;L$BWrg0%Haju_%}O; z271C?#2f%4IgsiCzYT+_8}cDwZq)Tl>tI17S8{xPkvU0|Oy7r5iUkwx>su)C6<#F0 z5)8R2qp57AwrYle$}NrC;2|Wy(M4$|)WC?xOt*m~fjZ~zlHDK=Wr{!Tzf~EbfbKL4P{{iM;=}BzulXB=Ms~N5dfV^(+Fa)-kA2&xoyoFs$8nu(iL({ zsm{EYOcS7cCM|QYU;Ti52ABq~7{sM!1UUPpv0xjFwcr*OckPc6>|0_BhHR_T z56kdjBHJ+j!M<^gjg53ofABZhM}mMLYnCamTvz_zN{Rtx2cQ#oHs{@Cv17XIv0$u#5|pR4 zs>4|OZ>lrzrNj~Fo})!SY{Z+v>MiVcXx)lZaSd?xn!&IojI~o>Br3beu-<+$^Hk6_ zRXqw81jj_SnN#X700+X25+1-NB)d \ No newline at end of file From 56d357235fba9c29dc7d5525e3bd327285c91f62 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Thu, 28 Nov 2024 14:47:09 -0800 Subject: [PATCH 02/20] Add settings --- assets/__demo_variables.css | 1 + assets/demo.css | 36 ++++++++ demo_callbacks.py | 28 +++++- demo_configs.py | 11 +-- demo_interface.py | 177 +++++++++++++++++++++++------------- src/demo_enums.py | 16 +++- 6 files changed, 191 insertions(+), 78 deletions(-) diff --git a/assets/__demo_variables.css b/assets/__demo_variables.css index 372d7dc..a1aa435 100644 --- a/assets/__demo_variables.css +++ b/assets/__demo_variables.css @@ -41,5 +41,6 @@ Dash reads all css files contained in `/assets/` so no imports are necessary. --banner-height: 5.5rem; --left-col-width: 42rem; --problem-details-height: 8rem; + --advanced-settings-height: 23rem; /*** Add new variables here ***/ } diff --git a/assets/demo.css b/assets/demo.css index 8a849f4..4628d52 100644 --- a/assets/demo.css +++ b/assets/demo.css @@ -55,3 +55,39 @@ custom CSS can be added below. font-size: 1.2rem; text-transform: uppercase; } + +.advanced-settings label { + color: var(--theme); + letter-spacing: normal; + text-transform: uppercase; + font-size: 1.3rem; + font-weight: 600; + cursor: pointer; +} + +.details-collapse.advanced-settings .collapse-arrow { + margin-top: 2rem; + border-width: 3px; + height: 1rem; + width: 1rem; +} + +.collapsed .details-collapse.advanced-settings .collapse-arrow { + margin-top: 1.8rem; +} + +.advanced-collapse { + background: white; + padding: 0 1rem 1rem; + border: 1px solid var(--grey-light); +} + +.details-collapse-wrapper.collapsed .advanced-collapse { + padding-bottom: 0; + border-top: none; + border-bottom: none; +} + +.details-collapse-wrapper:not(.collapsed) .details-to-collapse.advanced-collapse { + height: var(--advanced-settings-height) !important; +} diff --git a/demo_callbacks.py b/demo_callbacks.py index 7cb1e39..8e4af9a 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -17,12 +17,12 @@ from typing import NamedTuple, Union import dash -from dash import MATCH, ctx +from dash import ALL, MATCH, ctx from dash.dependencies import Input, Output, State from dash.exceptions import PreventUpdate from demo_interface import generate_problem_details_table_rows -from src.demo_enums import SolverType +from src.demo_enums import ProblemType, SolverType @dash.callback( @@ -52,6 +52,30 @@ def toggle_left_column(collapse_trigger: int, to_collapse_class: str) -> str: return to_collapse_class + " collapsed" if to_collapse_class else "collapsed" +@dash.callback( + Output({"type": "generated-settings", "index": ALL}, "className"), + Output("uploaded-settings", "className"), + inputs=[ + Input("problem-type", "value"), + State({"type": "generated-settings", "index": ALL}, "children"), + ], +) +def update_problem_type(problem_type: Union[ProblemType, int], gen_settings: list) -> tuple[str, str]: + """Runs on load and any time the value of the slider is updated. + Add `prevent_initial_call=True` to skip on load runs. + + Args: + slider_value: The value of the slider. + + Returns: + str: The content of the input tab. + """ + if problem_type is ProblemType.FILE.value: + return ["display-none"]*len(gen_settings), "" + + return [""]*len(gen_settings), "display-none" + + @dash.callback( Output("input", "children"), inputs=[ diff --git a/demo_configs.py b/demo_configs.py index 247600a..ac962a7 100644 --- a/demo_configs.py +++ b/demo_configs.py @@ -30,6 +30,8 @@ are cuboids, and the sides of the items must be packed parallel to the sides of bins. """ +RANDOM_SEED = None + ####################################### # Sliders, buttons and option entries # ####################################### @@ -62,14 +64,7 @@ "value": 50, } -# an example dropdown -DROPDOWN = ["Option 1", "Option 2"] - -# an example checklist -CHECKLIST = ["Option 1", "Option 2"] - -# an example radio list -RADIO = ["Option 1", "Option 2"] +ADVANCED_SETTINGS = ["Color coded cases", "Display input data"] # solver time limits in seconds (value means default) SOLVER_TIME = { diff --git a/demo_interface.py b/demo_interface.py index 898b694..24d2981 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -20,18 +20,16 @@ from demo_configs import ( BIN_DIM, CASE_DIM, - CHECKLIST, + ADVANCED_SETTINGS, DESCRIPTION, - DROPDOWN, MAIN_HEADER, NUM_BINS, NUM_CASES, - RADIO, SOLVER_TIME, THEME_COLOR_SECONDARY, THUMBNAIL, ) -from src.demo_enums import SolverType +from src.demo_enums import ProblemType, SolverType def slider(label: str, id: str, config: dict) -> html.Div: @@ -147,9 +145,11 @@ def generate_settings_form() -> html.Div: Returns: html.Div: A Div containing the settings for selecting the scenario, model, and solver. """ - dropdown_options = generate_options(DROPDOWN) - checklist_options = generate_options(CHECKLIST) - radio_options = generate_options(RADIO) + checklist_options = generate_options(ADVANCED_SETTINGS) + + problem_type_options = [ + {"label": problem_type.label, "value": problem_type.value} for problem_type in ProblemType + ] solver_options = [ {"label": solver_type.label, "value": solver_type.value} for solver_type in SolverType @@ -158,69 +158,73 @@ def generate_settings_form() -> html.Div: return html.Div( className="settings", children=[ - slider( - "Number of Bins", - "num-bins", - NUM_BINS, - ), - slider( - "Number of Cases", - "num-cases", - NUM_CASES, + dropdown( + "Problem Type", + "problem-type", + sorted(problem_type_options, key=lambda op: op["value"]), ), - slider( - "Case Dimension Range", - "case-dim", - CASE_DIM, + html.Div( + [ + html.Label("Problem File Path"), + dcc.Input( + id="input-file", + type="text", + placeholder="input/sample_data_1.txt", + ), + ], + id="uploaded-settings", + className="display-none", ), - html.Label("Bin Dimensions"), html.Div( [ - html.Div([ - html.Label("Length"), - dcc.Input( - id="bin-length", - type="number", - **BIN_DIM, - ), - ]), - html.Div([ - html.Label("Width"), - dcc.Input( - id="bin-width", - type="number", - **BIN_DIM, - ), - ]), - html.Div([ - html.Label("Height"), - dcc.Input( - id="bin-height", - type="number", - **BIN_DIM, - ), - ]) + slider( + "Number of Bins", + "num-bins", + NUM_BINS, + ), + html.Label("Bin Dimensions"), + html.Div( + [ + html.Div([ + html.Label("Length"), + dcc.Input( + id="bin-length", + type="number", + **BIN_DIM, + ), + ]), + html.Div([ + html.Label("Width"), + dcc.Input( + id="bin-width", + type="number", + **BIN_DIM, + ), + ]), + html.Div([ + html.Label("Height"), + dcc.Input( + id="bin-height", + type="number", + **BIN_DIM, + ), + ]) + ], + className="display-flex-settings" + ), + slider( + "Number of Cases", + "num-cases", + NUM_CASES, + ), + slider( + "Case Dimension Range", + "case-dim", + CASE_DIM, + ), ], - className="display-flex-settings" + id={"type": "generated-settings", "index": 0} ), - - # dropdown( - # "Example Dropdown", - # "dropdown", - # sorted(dropdown_options, key=lambda op: op["value"]), - # ), - # checklist( - # "Example Checklist", - # "checklist", - # sorted(checklist_options, key=lambda op: op["value"]), - # [0], - # ), - # radio( - # "Example Radio", - # "radio", - # sorted(radio_options, key=lambda op: op["value"]), - # 0, - # ), dropdown( "Solver", "solver-type-select", @@ -232,6 +236,51 @@ def generate_settings_form() -> html.Div: type="number", **SOLVER_TIME, ), + html.Div( + id={ + "type": "to-collapse-class", + "index": 3, + }, + className="details-collapse-wrapper collapsed", + children=[ + html.Button( + id={ + "type": "collapse-trigger", + "index": 3, + }, + className="details-collapse advanced-settings", + children=[ + html.Label("Advanced settings"), + html.Div(className="collapse-arrow"), + ], + ), + html.Div( + className="details-to-collapse advanced-collapse", + children=[ + checklist( + "", + "checklist", + sorted(checklist_options, key=lambda op: op["value"]), + [0], + ), + html.Div([ + html.Label("Save Input Data to File"), + dcc.Input( + id="save-input-file", + type="text", + placeholder="File Name", + ), + ], id={"type": "generated-settings", "index": 1}), + html.Label("Write Solution to File"), + dcc.Input( + id="solution-file", + type="text", + placeholder="File Name" + ), + ], + ), + ], + ), ], ) diff --git a/src/demo_enums.py b/src/demo_enums.py index 6cae3d4..4d532cb 100644 --- a/src/demo_enums.py +++ b/src/demo_enums.py @@ -16,10 +16,6 @@ class SolverType(Enum): - """Add a list of solver options here. If this demo only requires 1 solver, - this functionality can be removed. - """ - CQM = 0 MIP = 1 @@ -29,3 +25,15 @@ def label(self): SolverType.CQM: "Quantum Hybrid (CQM)", SolverType.MIP: "CBC (Python-MIP)", }[self] + + +class ProblemType(Enum): + GENERATED = 0 + FILE = 1 + + @property + def label(self): + return { + ProblemType.GENERATED: "Generated", + ProblemType.FILE: "Uploaded", + }[self] From ec2c978b7abae88f2f4ba7cd30e687f9ff874751 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Mon, 2 Dec 2024 15:08:45 -0800 Subject: [PATCH 03/20] Display data, add file upload --- assets/demo.css | 56 ++++++++++++++-- demo_callbacks.py | 168 +++++++++++++++++++++++++++++++++++++++++++--- demo_configs.py | 6 +- demo_interface.py | 79 ++++++++++++++++++---- utils.py | 25 +++++-- 5 files changed, 297 insertions(+), 37 deletions(-) diff --git a/assets/demo.css b/assets/demo.css index 4628d52..6f275cb 100644 --- a/assets/demo.css +++ b/assets/demo.css @@ -28,19 +28,52 @@ custom CSS can be added below. height: 100%; } -.solution-stats-table td:nth-child(2n) { +.tab-content { + padding: 3rem 5rem; +} + +/* .solution-stats-table td:nth-child(2n) { text-align: right; } .solution-stats-table td:nth-child(2n+1) { border-right: none; -} +} */ .input, .results { display: flex; - justify-content: center; - align-items: center; height: 100%; + width: 100%; +} + +.input h6 { + font-size: 1.6rem; +} + +.input h6 span { + font-weight: bold; + margin: 0 0.4rem 0 1rem; +} + +.input > *:last-child { + margin-left: 5rem; +} + +.input > div:first-child { + height: calc(100vh - var(--banner-height) - 160px); + overflow-y: auto; +} + +#input thead { + position: sticky; + top: 0; +} + +#input-file { + padding: 1rem; + border: 1px dashed var(--grey-dark); + border-radius: 0.5rem; + text-align: center; } .display-flex-settings { @@ -91,3 +124,18 @@ custom CSS can be added below. .details-collapse-wrapper:not(.collapsed) .details-to-collapse.advanced-collapse { height: var(--advanced-settings-height) !important; } + +.range-slider > div { + padding-left: 6px !important; + padding-right: 6px !important; +} + +th { + background-color: var(--blue-dark); + color: white; + font-weight: 500; +} + +tr:nth-child(even) { + background-color: var(--grey-lighter); +} diff --git a/demo_callbacks.py b/demo_callbacks.py index 8e4af9a..bf01726 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -14,15 +14,19 @@ from __future__ import annotations +import base64 from typing import NamedTuple, Union import dash from dash import ALL, MATCH, ctx from dash.dependencies import Input, Output, State from dash.exceptions import PreventUpdate +from demo_configs import RANDOM_SEED +import numpy as np -from demo_interface import generate_problem_details_table_rows +from demo_interface import generate_problem_details_table_rows, generate_table from src.demo_enums import ProblemType, SolverType +from utils import data_to_lists, write_input_data @dash.callback( @@ -79,10 +83,112 @@ def update_problem_type(problem_type: Union[ProblemType, int], gen_settings: lis @dash.callback( Output("input", "children"), inputs=[ - Input("slider", "value"), + Input("problem-type", "value"), + Input("num-cases", "value"), + Input("case-dim", "value"), + ], +) +def update_input_graph_generated( + problem_type: Union[ProblemType, int], + num_cases: int, + case_size_range: int, +) -> str: + """Runs on load and any time the value of the slider is updated. + Add `prevent_initial_call=True` to skip on load runs. + + Args: + slider_value: The value of the slider. + + Returns: + str: The content of the input tab. + """ + if ProblemType(problem_type) is ProblemType.FILE: + raise PreventUpdate + + rng = np.random.default_rng(RANDOM_SEED) + + data = { + "case_length": rng.integers( + case_size_range[0], case_size_range[1], + num_cases, endpoint=True + ), + "case_width": rng.integers( + case_size_range[0], case_size_range[1], + num_cases, endpoint=True + ), + "case_height": rng.integers( + case_size_range[0], case_size_range[1], + num_cases, endpoint=True + ), + } + + # Determine quantities and case_ids + case_dimensions = np.vstack( + [data["case_length"], data["case_width"], data["case_height"]] + ) + unique_dimensions, data["quantity"] = np.unique(case_dimensions, + axis=1, + return_counts=True) + + data["case_length"] = unique_dimensions[0,:] + data["case_width"] = unique_dimensions[1,:] + data["case_height"] = unique_dimensions[2,:] + + data["case_ids"] = np.array(range(len(data["quantity"]))) + + return generate_table(*data_to_lists(data)) + + +@dash.callback( + Output("max-bins", "children"), + Output("bin-dims", "children"), + inputs=[ + Input("problem-type", "value"), + Input("num-bins", "value"), + Input("bin-length", "value"), + Input("bin-width", "value"), + Input("bin-height", "value"), + ], +) +def update_input_generated( + problem_type: Union[ProblemType, int], + num_bins: int, + bin_length: int, + bin_width: int, + bin_height: int, +) -> str: + """Runs on load and any time the value of the slider is updated. + Add `prevent_initial_call=True` to skip on load runs. + + Args: + slider_value: The value of the slider. + + Returns: + str: The content of the input tab. + """ + if ProblemType(problem_type) is ProblemType.FILE: + raise PreventUpdate + + return num_bins, f"{bin_length} * {bin_width} * {bin_height}" + + +@dash.callback( + Output("input", "children", allow_duplicate=True), + Output("max-bins", "children", allow_duplicate=True), + Output("bin-dims", "children", allow_duplicate=True), + Output("filename", "children"), + inputs=[ + Input("input-file", 'contents'), + Input("problem-type", "value"), + State("input-file", 'filename'), ], + prevent_initial_call=True, ) -def render_initial_state(slider_value: int) -> str: +def update_input_file( + file_contents: str, + problem_type: Union[ProblemType, int], + filename: str, +) -> str: """Runs on load and any time the value of the slider is updated. Add `prevent_initial_call=True` to skip on load runs. @@ -92,7 +198,33 @@ def render_initial_state(slider_value: int) -> str: Returns: str: The content of the input tab. """ - return f"Put demo input here. The current slider value is {slider_value}." + if ProblemType(problem_type) is ProblemType.GENERATED: + raise PreventUpdate + + if file_contents is not None: + decoded = base64.b64decode(file_contents) + + try: + lines = decoded.decode('ISO-8859-1').splitlines() + + num_bins = int(lines[0].split(":")[1].strip()) + bin_length, bin_width, bin_height = map(int, lines[1].split(":")[1].split()) + + table_data = [] + for line in lines[5:]: + if line.strip(): + table_data.append(list(map(int, line.split()))) + + except Exception as e: + print(e) + return 'There was an error processing this file.' + + return ( + generate_table(["Case ID", "Quantity", "Length", "Width", "Height"], table_data), + num_bins, + f"{bin_length} * {bin_width} * {bin_height}", filename) + + raise PreventUpdate class RunOptimizationReturn(NamedTuple): @@ -115,10 +247,17 @@ class RunOptimizationReturn(NamedTuple): Input("run-button", "n_clicks"), State("solver-type-select", "value"), State("solver-time-limit", "value"), - State("slider", "value"), - State("dropdown", "value"), + State("problem-type", "value"), + State("input-file", "contents"), + State("num-bins", "value"), + State("bin-length", "value"), + State("bin-width", "value"), + State("bin-height", "value"), + State("num-cases", "value"), + State("case-dim", "value"), State("checklist", "value"), - State("radio", "value"), + State("save-input", "value"), + State("save-solution", "value"), ], running=[ (Output("cancel-button", "className"), "", "display-none"), # Show/hide cancel button. @@ -137,10 +276,17 @@ def run_optimization( run_click: int, solver_type: Union[SolverType, int], time_limit: float, - slider_value: int, - dropdown_value: int, - checklist_value: list, - radio_value: int, + problem_type: Union[ProblemType, int], + input_file: str, + num_bins: int, + bin_length: int, + bin_width: int, + bin_height: int, + num_cases: int, + case_dim: int, + checklist: list, + save_input: str, + save_solution: str, ) -> RunOptimizationReturn: """Runs the optimization and updates UI accordingly. diff --git a/demo_configs.py b/demo_configs.py index ac962a7..2a8c7fd 100644 --- a/demo_configs.py +++ b/demo_configs.py @@ -30,7 +30,7 @@ are cuboids, and the sides of the items must be packed parallel to the sides of bins. """ -RANDOM_SEED = None +RANDOM_SEED = 4 ####################################### # Sliders, buttons and option entries # @@ -54,7 +54,7 @@ "min": 1, "max": 30, "step": 1, - "value": 15, + "value": [2, 15], } BIN_DIM = { @@ -64,7 +64,7 @@ "value": 50, } -ADVANCED_SETTINGS = ["Color coded cases", "Display input data"] +ADVANCED_SETTINGS = ["Color coded cases"] # solver time limits in seconds (value means default) SOLVER_TIME = { diff --git a/demo_interface.py b/demo_interface.py index 24d2981..c50724d 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -134,6 +134,28 @@ def radio(label: str, id: str, options: list, value: int, inline: bool = True) - ) +def range_slider(label: str, id: str, config: dict) -> html.Div: + """Range slider element for value selection.""" + return html.Div( + className="range-slider", + children=[ + html.Label(label), + dcc.RangeSlider( + id=id, + **config, + marks={ + config["min"]: str(config["min"]), + config["max"]: str(config["max"]), + }, + tooltip={ + "placement": "bottom", + "always_visible": True, + }, + ), + ], + ) + + def generate_options(options_list: list) -> list[dict]: """Generates options for dropdowns, checklists, radios, etc.""" return [{"label": label, "value": i} for i, label in enumerate(options_list)] @@ -165,12 +187,15 @@ def generate_settings_form() -> html.Div: ), html.Div( [ - html.Label("Problem File Path"), - dcc.Input( + html.Label("Problem File"), + dcc.Upload( id="input-file", - type="text", - placeholder="input/sample_data_1.txt", - ), + children=html.Div([ + "Drag and Drop or ", + html.A('Select Files'), + html.Div(id="filename") + ]) + ) ], id="uploaded-settings", className="display-none", @@ -217,8 +242,8 @@ def generate_settings_form() -> html.Div: "num-cases", NUM_CASES, ), - slider( - "Case Dimension Range", + range_slider( + "Case Dimension Bounds", "case-dim", CASE_DIM, ), @@ -266,14 +291,14 @@ def generate_settings_form() -> html.Div: html.Div([ html.Label("Save Input Data to File"), dcc.Input( - id="save-input-file", + id="save-input", type="text", placeholder="File Name", ), ], id={"type": "generated-settings", "index": 1}), html.Label("Write Solution to File"), dcc.Input( - id="solution-file", + id="save-solution", type="text", placeholder="File Name" ), @@ -301,6 +326,21 @@ def generate_run_buttons() -> html.Div: ) +def generate_table(headers: list, body: list) -> list[html.Thead, html.Tbody]: + """Generates solution table. + + Args: + results_dict: Dictionary of lists of results values from all previous runs. + + Returns: + list: The table head and table body of the results table. + """ + return [ + html.Thead([html.Tr([html.Th(header) for header in headers])]), + html.Tbody([html.Tr([html.Td(cell) for cell in cells]) for cells in body]), + ] + + def generate_problem_details_table_rows(solver: str, time_limit: int) -> list[html.Tr]: """Generates table rows for the problem details table. @@ -433,12 +473,23 @@ def create_interface(): value="input-tab", # used for switching tabs programatically className="tab", children=[ - dcc.Loading( - parent_className="input", - type="circle", - color=THEME_COLOR_SECONDARY, + html.Div( + className="input", + # type="circle", + # color=THEME_COLOR_SECONDARY, # A Dash callback (in app.py) will generate content in the Div below - children=html.Div(id="input"), + children=[ + html.Div( + html.Table( + id="input", + # add children dynamically using 'generate_table' + ) + ), + html.Div([ + html.H6(["Maximum bins: ", html.Span(id="max-bins")]), + html.H6(["Bin dimensions: ", html.Span(id="bin-dims"), " (L*W*H)"]) + ]) + ], ), ], ), diff --git a/utils.py b/utils.py index d9237a3..c1d233d 100644 --- a/utils.py +++ b/utils.py @@ -287,11 +287,7 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: input_string: input data information """ - header = ["case_id", "quantity", "length", "width", "height"] - - case_info = [[i, data["quantity"][i], data["case_length"][i], - data["case_width"][i], data["case_height"][i]] - for i in range(len(data['case_ids']))] + header, case_info = data_to_lists(data) input_string = f'# Max num of bins : {data["num_bins"]} \n' input_string += (f'# Bin dimensions ' @@ -308,3 +304,22 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: f.close() return input_string + + +def data_to_lists(data: dict) -> tuple[list[str], list[list]]: + """Convert input data dictionary to a list to prepare for display. + + Args: + data: dictionary containing raw information for both bins and cases + + Returns: + header: A list of headers for the case_info columns. + case_info: a list of lists of rows that fall under the headers. + """ + header = ["Case ID", "Quantity", "Length", "Width", "Height"] + + case_info = [[i, data["quantity"][i], data["case_length"][i], + data["case_width"][i], data["case_height"][i]] + for i in range(len(data['case_ids']))] + + return header, case_info From e9021e45259b88aa9eafa3d7fc3cedda5f4fdd9b Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Tue, 3 Dec 2024 10:15:03 -0800 Subject: [PATCH 04/20] Run problem and display results --- assets/_tabs.css | 4 -- assets/demo.css | 19 +++------ demo_callbacks.py | 105 +++++++++++++++++++--------------------------- demo_configs.py | 2 + demo_interface.py | 44 ++++++++++--------- utils.py | 52 ++++++++++++++--------- 6 files changed, 108 insertions(+), 118 deletions(-) diff --git a/assets/_tabs.css b/assets/_tabs.css index cec67b3..5817702 100644 --- a/assets/_tabs.css +++ b/assets/_tabs.css @@ -51,10 +51,6 @@ div.tab.tab--disabled { height: 100%; } -.tab-content > div:not(.tab-content-results) { - height: inherit; -} - .tab-content { background-color: white; } diff --git a/assets/demo.css b/assets/demo.css index 6f275cb..4e76f1e 100644 --- a/assets/demo.css +++ b/assets/demo.css @@ -21,26 +21,19 @@ custom CSS can be added below. *******************************************************************/ .tab-content-results { - padding: 0 3rem; - display: flex; - flex-direction: column; - justify-content: space-between; height: 100%; + padding-right: 5rem; } -.tab-content { - padding: 3rem 5rem; +.results, #results { + height: 100%; } -/* .solution-stats-table td:nth-child(2n) { - text-align: right; +.input-wrapper { + padding: 3rem 5rem; } -.solution-stats-table td:nth-child(2n+1) { - border-right: none; -} */ - -.input, .results { +.input { display: flex; height: 100%; width: 100%; diff --git a/demo_callbacks.py b/demo_callbacks.py index bf01726..336e446 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -21,12 +21,14 @@ from dash import ALL, MATCH, ctx from dash.dependencies import Input, Output, State from dash.exceptions import PreventUpdate -from demo_configs import RANDOM_SEED +from demo_configs import RANDOM_SEED, TABLE_HEADERS import numpy as np +import plotly.graph_objs as go -from demo_interface import generate_problem_details_table_rows, generate_table +from demo_interface import generate_table +from packing3d import Bins, Cases, Variables, build_cqm, call_solver from src.demo_enums import ProblemType, SolverType -from utils import data_to_lists, write_input_data +from utils import case_list_to_dict, data_to_lists, plot_cuboids, write_solution_to_file @dash.callback( @@ -82,6 +84,7 @@ def update_problem_type(problem_type: Union[ProblemType, int], gen_settings: lis @dash.callback( Output("input", "children"), + Output("data-table-store", "data"), inputs=[ Input("problem-type", "value"), Input("num-cases", "value"), @@ -136,12 +139,16 @@ def update_input_graph_generated( data["case_ids"] = np.array(range(len(data["quantity"]))) - return generate_table(*data_to_lists(data)) + data_lists = data_to_lists(data) + + return generate_table(TABLE_HEADERS, data_lists), data_lists @dash.callback( Output("max-bins", "children"), Output("bin-dims", "children"), + Output("max-bins-store", "data"), + Output("bin-dimensions-store", "data"), inputs=[ Input("problem-type", "value"), Input("num-bins", "value"), @@ -169,7 +176,7 @@ def update_input_generated( if ProblemType(problem_type) is ProblemType.FILE: raise PreventUpdate - return num_bins, f"{bin_length} * {bin_width} * {bin_height}" + return num_bins, f"{bin_length} * {bin_width} * {bin_height}", num_bins, [bin_length, bin_width, bin_height] @dash.callback( @@ -177,6 +184,9 @@ def update_input_generated( Output("max-bins", "children", allow_duplicate=True), Output("bin-dims", "children", allow_duplicate=True), Output("filename", "children"), + Output("data-table-store", "data", allow_duplicate=True), + Output("max-bins-store", "data", allow_duplicate=True), + Output("bin-dimensions-store", "data", allow_duplicate=True), inputs=[ Input("input-file", 'contents'), Input("problem-type", "value"), @@ -220,41 +230,29 @@ def update_input_file( return 'There was an error processing this file.' return ( - generate_table(["Case ID", "Quantity", "Length", "Width", "Height"], table_data), + generate_table(TABLE_HEADERS, table_data), + num_bins, + f"{bin_length} * {bin_width} * {bin_height}", + filename, + table_data, num_bins, - f"{bin_length} * {bin_width} * {bin_height}", filename) + [bin_length, bin_width, bin_height] + ) raise PreventUpdate -class RunOptimizationReturn(NamedTuple): - """Return type for the ``run_optimization`` callback function.""" - - results: str = dash.no_update - problem_details_table: list = dash.no_update - # Add more return variables here. Return values for callback functions - # with many variables should be returned as a NamedTuple for clarity. - - @dash.callback( # The Outputs below must align with `RunOptimizationReturn`. - Output("results", "children"), - Output("problem-details", "children"), + Output("results", "figure"), background=True, inputs=[ - # The first string in the Input/State elements below must match an id in demo_interface.py - # Remove or alter the following id's to match any changes made to demo_interface.py Input("run-button", "n_clicks"), State("solver-type-select", "value"), State("solver-time-limit", "value"), - State("problem-type", "value"), - State("input-file", "contents"), - State("num-bins", "value"), - State("bin-length", "value"), - State("bin-width", "value"), - State("bin-height", "value"), - State("num-cases", "value"), - State("case-dim", "value"), + State("data-table-store", "data"), + State("max-bins-store", "data"), + State("bin-dimensions-store", "data"), State("checklist", "value"), State("save-input", "value"), State("save-solution", "value"), @@ -265,29 +263,21 @@ class RunOptimizationReturn(NamedTuple): (Output("results-tab", "disabled"), True, False), # Disables results tab while running. (Output("results-tab", "label"), "Loading...", "Results"), (Output("tabs", "value"), "input-tab", "input-tab"), # Switch to input tab while running. - (Output("run-in-progress", "data"), True, False), # Can block certain callbacks. ], cancel=[Input("cancel-button", "n_clicks")], prevent_initial_call=True, ) def run_optimization( - # The parameters below must match the `Input` and `State` variables found - # in the `inputs` list above. run_click: int, solver_type: Union[SolverType, int], time_limit: float, - problem_type: Union[ProblemType, int], - input_file: str, + data_table: list[int], num_bins: int, - bin_length: int, - bin_width: int, - bin_height: int, - num_cases: int, - case_dim: int, + bin_dimensions: list[int], checklist: list, save_input: str, - save_solution: str, -) -> RunOptimizationReturn: + save_solution_filepath: str, +) -> go.Figure: """Runs the optimization and updates UI accordingly. This is the main function which is called when the ``Run Optimization`` button is clicked. @@ -299,10 +289,6 @@ def run_optimization( run_click: The (total) number of times the run button has been clicked. solver_type: The solver to use for the optimization run defined by SolverType in demo_enums.py. time_limit: The solver time limit. - slider_value: The value of the slider. - dropdown_value: The value of the dropdown. - checklist_value: A list of the values of the checklist. - radio_value: The value of the radio. Returns: A NamedTuple (RunOptimizationReturn) containing all outputs to be used when updating the HTML @@ -311,28 +297,23 @@ def run_optimization( results: The results to display in the results tab. problem-details: List of the table rows for the problem details table. """ + solver_type = SolverType(solver_type) - # Only run optimization code if this function was triggered by a click on `run-button`. - # Setting `Input` as exclusively `run-button` and setting `prevent_initial_call=True` - # also accomplishes this. - if run_click == 0 or ctx.triggered_id != "run-button": - raise PreventUpdate + data = case_list_to_dict(num_bins, bin_dimensions, data_table) + cases = Cases(data) + bins = Bins(data, cases) - solver_type = SolverType(solver_type) + vars = Variables(cases, bins) + cqm, effective_dimensions = build_cqm(vars, bins, cases) - ########################### - ### YOUR CODE GOES HERE ### - ########################### + best_feasible = call_solver(cqm, time_limit, solver_type is SolverType.CQM) + if save_solution_filepath is not None: + write_solution_to_file(save_solution_filepath, cqm, vars, best_feasible, + cases, bins, effective_dimensions) - # Generates a list of table rows for the problem details table. - problem_details_table = generate_problem_details_table_rows( - solver=solver_type.label, - time_limit=time_limit, - ) + fig = plot_cuboids(best_feasible, vars, cases, + bins, effective_dimensions, checklist) - return RunOptimizationReturn( - results="Put demo results here.", - problem_details_table=problem_details_table, - ) + return fig diff --git a/demo_configs.py b/demo_configs.py index 2a8c7fd..3c31850 100644 --- a/demo_configs.py +++ b/demo_configs.py @@ -32,6 +32,8 @@ RANDOM_SEED = 4 +TABLE_HEADERS = ["Case ID", "Quantity", "Length", "Width", "Height"] + ####################################### # Sliders, buttons and option entries # ####################################### diff --git a/demo_interface.py b/demo_interface.py index c50724d..ca5c1ac 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -422,7 +422,9 @@ def create_interface(): id="app-container", children=[ # Below are any temporary storage items, e.g., for sharing data between callbacks. - dcc.Store(id="run-in-progress", data=False), # Indicates whether run is in progress + dcc.Store(id="data-table-store"), + dcc.Store(id="max-bins-store"), + dcc.Store(id="bin-dimensions-store"), # Header brand banner html.Div(className="banner", children=[html.Img(src=THUMBNAIL)]), # Settings and results columns @@ -474,22 +476,22 @@ def create_interface(): className="tab", children=[ html.Div( - className="input", - # type="circle", - # color=THEME_COLOR_SECONDARY, - # A Dash callback (in app.py) will generate content in the Div below - children=[ - html.Div( - html.Table( - id="input", - # add children dynamically using 'generate_table' - ) - ), - html.Div([ - html.H6(["Maximum bins: ", html.Span(id="max-bins")]), - html.H6(["Bin dimensions: ", html.Span(id="bin-dims"), " (L*W*H)"]) - ]) - ], + html.Div( + className="input", + children=[ + html.Div( + html.Table( + id="input", + # add children dynamically using 'generate_table' + ) + ), + html.Div([ + html.H6(["Maximum bins: ", html.Span(id="max-bins")]), + html.H6(["Bin dimensions: ", html.Span(id="bin-dims"), " (L*W*H)"]) + ]) + ], + ), + className="input-wrapper" ), ], ), @@ -507,10 +509,12 @@ def create_interface(): type="circle", color=THEME_COLOR_SECONDARY, # A Dash callback (in app.py) will generate content in the Div below - children=html.Div(id="results"), + children=dcc.Graph( + id="results", + responsive=True, + config={"displayModeBar": False}, + ), ), - # Problem details dropdown - html.Div([html.Hr(), problem_details(1)]), ], ) ], diff --git a/utils.py b/utils.py index c1d233d..315541b 100644 --- a/utils.py +++ b/utils.py @@ -13,6 +13,7 @@ # limitations under the License. import os +from demo_configs import TABLE_HEADERS import plotly.colors as colors import plotly.graph_objects as go import numpy as np @@ -184,7 +185,7 @@ def plot_cuboids(sample: dimod.SampleSet, vars: "Variables", return fig -def read_instance(instance_path: str) -> dict: +def case_list_to_dict(num_bins: int, bin_dimensions: list, case_info: list) -> dict: """Convert instance input files into raw problem data. Args: @@ -192,29 +193,45 @@ def read_instance(instance_path: str) -> dict: Returns: data: dictionary containing raw information for both bins and cases. - """ - data = {"num_bins": 0, "bin_dimensions": [], "quantity": [], "case_ids": [], + data = {"num_bins": num_bins, "bin_dimensions": bin_dimensions, "quantity": [], "case_ids": [], "case_length": [], "case_width": [], "case_height": []} + for case_info_line in case_info: + data["case_ids"].append(case_info_line[0]) + data["quantity"].append(case_info_line[1]) + data["case_length"].append(case_info_line[2]) + data["case_width"].append(case_info_line[3]) + data["case_height"].append(case_info_line[4]) + + return data + + +def read_instance(instance_path: str) -> dict: + """Convert instance input files into raw problem data. + + Args: + instance_path: Path to the bin packing problem instance file. + + Returns: + data: dictionary containing raw information for both bins and cases. + + """ with open(instance_path) as f: + case_info = [] + for i, line in enumerate(f): if i == 0: - data["num_bins"] = int(line.split()[-1]) + num_bins = int(line.split()[-1]) elif i == 1: - data["bin_dimensions"] = [int(i) for i in line.split()[-3:]] + bin_dimensions = [int(i) for i in line.split()[-3:]] elif 2 <= i <= 4: continue else: - case_info = list(map(int, line.split())) - data["case_ids"].append(case_info[0]) - data["quantity"].append(case_info[1]) - data["case_length"].append(case_info[2]) - data["case_width"].append(case_info[3]) - data["case_height"].append(case_info[4]) + case_info.append(list(map(int, line.split()))) - return data + return case_list_to_dict(num_bins, bin_dimensions, case_info) def write_solution_to_file(solution_file_path: str, @@ -287,14 +304,14 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: input_string: input data information """ - header, case_info = data_to_lists(data) + case_info = data_to_lists(data) input_string = f'# Max num of bins : {data["num_bins"]} \n' input_string += (f'# Bin dimensions ' f'(L * W * H): {data["bin_dimensions"][0]} ' f'{data["bin_dimensions"][1]} ' f'{data["bin_dimensions"][2]} \n \n') - input_string += tabulate([header, *[v for v in case_info]], + input_string += tabulate([TABLE_HEADERS, *[v for v in case_info]], headers="firstrow", colalign='right') if input_filename is not None: @@ -306,20 +323,17 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: return input_string -def data_to_lists(data: dict) -> tuple[list[str], list[list]]: +def data_to_lists(data: dict) -> list[int]: """Convert input data dictionary to a list to prepare for display. Args: data: dictionary containing raw information for both bins and cases Returns: - header: A list of headers for the case_info columns. case_info: a list of lists of rows that fall under the headers. """ - header = ["Case ID", "Quantity", "Length", "Width", "Height"] - case_info = [[i, data["quantity"][i], data["case_length"][i], data["case_width"][i], data["case_height"][i]] for i in range(len(data['case_ids']))] - return header, case_info + return case_info From 1f205e63912b99fbd060582e1ba76551106fa8a6 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Tue, 3 Dec 2024 14:54:53 -0800 Subject: [PATCH 05/20] Implement save to file --- assets/__style_guide.css | 2 +- assets/demo.css | 15 ++++++++++ demo_callbacks.py | 62 +++++++++++++++++++++++++++++++++------- demo_interface.py | 14 +++++---- 4 files changed, 77 insertions(+), 16 deletions(-) diff --git a/assets/__style_guide.css b/assets/__style_guide.css index f949118..834bf18 100644 --- a/assets/__style_guide.css +++ b/assets/__style_guide.css @@ -92,7 +92,7 @@ input[type="radio"] { } .display-none { - display: none; + display: none !important; } #app-container { diff --git a/assets/demo.css b/assets/demo.css index 4e76f1e..fb13329 100644 --- a/assets/demo.css +++ b/assets/demo.css @@ -132,3 +132,18 @@ th { tr:nth-child(even) { background-color: var(--grey-lighter); } + +#save-input-button { + margin-left: 0.5rem; + padding: 1.2rem 1.8rem; + font-size: 1.2rem; +} + +#save-input-filename { + display: inline-block; +} + +#saved { + display: inline; + margin-left: 0.8rem; +} diff --git a/demo_callbacks.py b/demo_callbacks.py index 336e446..fe9dfd8 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -28,7 +28,7 @@ from demo_interface import generate_table from packing3d import Bins, Cases, Variables, build_cqm, call_solver from src.demo_enums import ProblemType, SolverType -from utils import case_list_to_dict, data_to_lists, plot_cuboids, write_solution_to_file +from utils import case_list_to_dict, data_to_lists, plot_cuboids, write_input_data, write_solution_to_file @dash.callback( @@ -85,11 +85,13 @@ def update_problem_type(problem_type: Union[ProblemType, int], gen_settings: lis @dash.callback( Output("input", "children"), Output("data-table-store", "data"), + Output("saved", "className", allow_duplicate=True), inputs=[ Input("problem-type", "value"), Input("num-cases", "value"), Input("case-dim", "value"), ], + prevent_initial_call='initial_duplicate' ) def update_input_graph_generated( problem_type: Union[ProblemType, int], @@ -141,7 +143,7 @@ def update_input_graph_generated( data_lists = data_to_lists(data) - return generate_table(TABLE_HEADERS, data_lists), data_lists + return generate_table(TABLE_HEADERS, data_lists), data_lists, "display-none" @dash.callback( @@ -149,6 +151,7 @@ def update_input_graph_generated( Output("bin-dims", "children"), Output("max-bins-store", "data"), Output("bin-dimensions-store", "data"), + Output("saved", "className"), inputs=[ Input("problem-type", "value"), Input("num-bins", "value"), @@ -176,7 +179,13 @@ def update_input_generated( if ProblemType(problem_type) is ProblemType.FILE: raise PreventUpdate - return num_bins, f"{bin_length} * {bin_width} * {bin_height}", num_bins, [bin_length, bin_width, bin_height] + return ( + num_bins, + f"{bin_length} * {bin_width} * {bin_height}", + num_bins, + [bin_length, bin_width, bin_height], + "display-none" + ) @dash.callback( @@ -236,12 +245,49 @@ def update_input_file( filename, table_data, num_bins, - [bin_length, bin_width, bin_height] + [bin_length, bin_width, bin_height], ) raise PreventUpdate +@dash.callback( + Output("saved", "className", allow_duplicate=True), + inputs=[ + Input("save-input-button", "n_clicks"), + State("save-input-filename", "value"), + State("data-table-store", "data"), + State("max-bins-store", "data"), + State("bin-dimensions-store", "data"), + ], + prevent_initial_call=True, +) +def save_input_to_file( + save_button: int, + filename: str, + data_table: list[int], + num_bins: int, + bin_dimensions: list[int], +) -> go.Figure: + """Runs the optimization and updates UI accordingly. + + This is the main function which is called when the ``Run Optimization`` button is clicked. + This function takes in all form values and runs the optimization, updates the run/cancel + buttons, deactivates (and reactivates) the results tab, and updates all relevant HTML + components. + + Args: + run_click: The (total) number of times the run button has been clicked. + solver_type: The solver to use for the optimization run defined by SolverType in demo_enums.py. + time_limit: The solver time limit. + + Returns: + results: The results to display in the results tab. + """ + write_input_data(case_list_to_dict(num_bins, bin_dimensions, data_table), filename) + return "" + + @dash.callback( # The Outputs below must align with `RunOptimizationReturn`. Output("results", "figure"), @@ -254,7 +300,7 @@ def update_input_file( State("max-bins-store", "data"), State("bin-dimensions-store", "data"), State("checklist", "value"), - State("save-input", "value"), + State("save-input-filename", "value"), State("save-solution", "value"), ], running=[ @@ -291,11 +337,7 @@ def run_optimization( time_limit: The solver time limit. Returns: - A NamedTuple (RunOptimizationReturn) containing all outputs to be used when updating the HTML - template (in ``demo_interface.py``). These are: - - results: The results to display in the results tab. - problem-details: List of the table rows for the problem details table. + results: The results to display in the results tab. """ solver_type = SolverType(solver_type) diff --git a/demo_interface.py b/demo_interface.py index ca5c1ac..a640566 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -290,11 +290,15 @@ def generate_settings_form() -> html.Div: ), html.Div([ html.Label("Save Input Data to File"), - dcc.Input( - id="save-input", - type="text", - placeholder="File Name", - ), + html.Div([ + dcc.Input( + id="save-input-filename", + type="text", + placeholder="File Name", + ), + html.Button(id="save-input-button", children="Save", n_clicks=0), + html.P("Saved!", className="display-none", id="saved") + ]), ], id={"type": "generated-settings", "index": 1}), html.Label("Write Solution to File"), dcc.Input( From 841dd972cb4d5a07d25eaa591ecd22806494d9f5 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Wed, 4 Dec 2024 15:44:57 -0800 Subject: [PATCH 06/20] Add Model Details, fix alignment --- assets/__demo_variables.css | 2 +- assets/demo.css | 24 ++++++++++++++++++++++-- demo_callbacks.py | 10 +++++++--- demo_interface.py | 29 +++++++++++++++-------------- utils.py | 37 +++++++++++++++++++++++++++---------- 5 files changed, 72 insertions(+), 30 deletions(-) diff --git a/assets/__demo_variables.css b/assets/__demo_variables.css index a1aa435..9b3277f 100644 --- a/assets/__demo_variables.css +++ b/assets/__demo_variables.css @@ -40,7 +40,7 @@ Dash reads all css files contained in `/assets/` so no imports are necessary. --font: "Helvetica Neue", sans-serif; --banner-height: 5.5rem; --left-col-width: 42rem; - --problem-details-height: 8rem; + --problem-details-height: 13.5rem; --advanced-settings-height: 23rem; /*** Add new variables here ***/ } diff --git a/assets/demo.css b/assets/demo.css index fb13329..07ea994 100644 --- a/assets/demo.css +++ b/assets/demo.css @@ -23,9 +23,20 @@ custom CSS can be added below. .tab-content-results { height: 100%; padding-right: 5rem; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.tab-content-results > div:last-child { + padding-left: 5rem; +} + +table { + margin-bottom: 0; } -.results, #results { +.results, #results, .graph { height: 100%; } @@ -129,10 +140,19 @@ th { font-weight: 500; } -tr:nth-child(even) { +#input tr:nth-child(even) { background-color: var(--grey-lighter); } +.solution-stats-table th, +.solution-stats-table td { + text-align: center; +} + +.solution-stats-table tr:nth-child(1) td { + font-weight: 600; +} + #save-input-button { margin-left: 0.5rem; padding: 1.2rem 1.8rem; diff --git a/demo_callbacks.py b/demo_callbacks.py index fe9dfd8..a25d938 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -25,10 +25,10 @@ import numpy as np import plotly.graph_objs as go -from demo_interface import generate_table +from demo_interface import generate_problem_details_table_rows, generate_table from packing3d import Bins, Cases, Variables, build_cqm, call_solver from src.demo_enums import ProblemType, SolverType -from utils import case_list_to_dict, data_to_lists, plot_cuboids, write_input_data, write_solution_to_file +from utils import case_list_to_dict, data_to_lists, get_cqm_stats, plot_cuboids, print_cqm_stats, write_input_data, write_solution_to_file @dash.callback( @@ -291,6 +291,7 @@ def save_input_to_file( @dash.callback( # The Outputs below must align with `RunOptimizationReturn`. Output("results", "figure"), + Output("problem-details", "children"), background=True, inputs=[ Input("run-button", "n_clicks"), @@ -358,4 +359,7 @@ def run_optimization( fig = plot_cuboids(best_feasible, vars, cases, bins, effective_dimensions, checklist) - return fig + # Generates a list of table rows for the problem details table. + problem_details_table = generate_problem_details_table_rows(get_cqm_stats(cqm)) + + return fig, problem_details_table diff --git a/demo_interface.py b/demo_interface.py index a640566..80538ff 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -345,7 +345,7 @@ def generate_table(headers: list, body: list) -> list[html.Thead, html.Tbody]: ] -def generate_problem_details_table_rows(solver: str, time_limit: int) -> list[html.Tr]: +def generate_problem_details_table_rows(table_data: list[list]) -> list[html.Tr]: """Generates table rows for the problem details table. Args: @@ -356,12 +356,7 @@ def generate_problem_details_table_rows(solver: str, time_limit: int) -> list[ht list[html.Tr]: List of rows for the problem details table. """ - table_rows = ( - ("Solver:", solver, "Time Limit:", f"{time_limit}s"), - ### Add more table rows here. Each tuple is a row in the table. - ) - - return [html.Tr([html.Td(cell) for cell in row]) for row in table_rows] + return [html.Tr([html.Td(cell) for cell in row]) for row in table_data] def problem_details(index: int) -> html.Div: @@ -383,7 +378,7 @@ def problem_details(index: int) -> html.Div: id={"type": "collapse-trigger", "index": index}, className="details-collapse", children=[ - html.H5("Problem Details"), + html.H5("Model Details"), html.Div(className="collapse-arrow"), ], ), @@ -399,12 +394,16 @@ def problem_details(index: int) -> html.Div: html.Tr( [ html.Th( - colSpan=2, - children=["Problem Specifics"], + colSpan=3, + children=["Variables"], ), html.Th( - colSpan=2, - children=["Run Time"], + colSpan=3, + children=["Constraints"], + ), + html.Th( + colSpan=3, + children=["Sensitivity"], ), ] ) @@ -513,12 +512,14 @@ def create_interface(): type="circle", color=THEME_COLOR_SECONDARY, # A Dash callback (in app.py) will generate content in the Div below - children=dcc.Graph( + children=html.Div(dcc.Graph( id="results", responsive=True, config={"displayModeBar": False}, - ), + ), className="graph"), ), + # Problem details dropdown + html.Div([html.Hr(), problem_details(1)]), ], ) ], diff --git a/utils.py b/utils.py index 315541b..9c8be4c 100644 --- a/utils.py +++ b/utils.py @@ -25,7 +25,7 @@ from packing3d import Cases, Bins, Variables -def print_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: +def get_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: """Print some information about the CQM model defining the 3D bin packing problem. Args: @@ -58,20 +58,37 @@ def print_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: assert (num_quadratic_constraints + num_linear_constraints == len(cqm.constraints)) + return [ + ["Binary", "Integer", "Continuous", "Quad", "Linear", "One-hot", "EQ ", "LT", "GT"], + [ + num_binaries, + num_integers, + num_continuous, + num_quadratic_constraints, + num_linear_constraints, + num_discretes, + num_equality_constraints, + num_le_inequality_constraints, + num_ge_inequality_constraints + ] + ] + + +def print_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: + """Print some information about the CQM model defining the 3D bin packing problem. + + Args: + cqm: A dimod constrained quadratic model. + + """ + cqm_stats = get_cqm_stats(cqm) + print(" \n" + "=" * 35 + "MODEL INFORMATION" + "=" * 35) print( ' ' * 10 + 'Variables' + " " * 20 + 'Constraints' + " " * 15 + 'Sensitivity') print('-' * 30 + " " + '-' * 28 + ' ' + '-' * 18) - print(tabulate([["Binary", "Integer", "Continuous", "Quad", "Linear", - "One-hot", "EQ ", "LT", "GT"], - [num_binaries, num_integers, num_continuous, - num_quadratic_constraints, - num_linear_constraints, num_discretes, - num_equality_constraints, - num_le_inequality_constraints, - num_ge_inequality_constraints]], - headers="firstrow")) + print(tabulate(cqm_stats, headers="firstrow")) def _cuboid_data(origin: tuple, size: tuple = (1, 1, 1)): From bde3753fcd2ce8843bec7301c1dc44bb1f63df58 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Thu, 5 Dec 2024 16:33:35 -0800 Subject: [PATCH 07/20] Move color by case ID --- .gitpod.yml | 14 --- assets/__demo_variables.css | 2 +- assets/demo.css | 10 +- bin_packing_app.py | 213 ------------------------------------ demo_callbacks.py | 37 ++++++- demo_configs.py | 2 +- demo_interface.py | 16 +-- utils.py | 16 +++ 8 files changed, 67 insertions(+), 243 deletions(-) delete mode 100644 .gitpod.yml delete mode 100644 bin_packing_app.py diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 65d93bc..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,14 +0,0 @@ -tasks: - - name: Open streamlit app in a new browser window - command: | - port=8501 - gp await-port "$port" && gp preview "$(gp url "$port")" --external - - - name: Run streamlit app - init: | - pip install -r requirements.txt - command: | - port=8501 - url=$(gp url "$port") - host=${url#"https://"} - streamlit run --server.port "$port" --browser.serverAddress "$host" --browser.serverPort 80 bin_packing_app.py diff --git a/assets/__demo_variables.css b/assets/__demo_variables.css index 9b3277f..59d3f41 100644 --- a/assets/__demo_variables.css +++ b/assets/__demo_variables.css @@ -41,6 +41,6 @@ Dash reads all css files contained in `/assets/` so no imports are necessary. --banner-height: 5.5rem; --left-col-width: 42rem; --problem-details-height: 13.5rem; - --advanced-settings-height: 23rem; + --advanced-settings-height: 17rem; /*** Add new variables here ***/ } diff --git a/assets/demo.css b/assets/demo.css index 07ea994..51a9119 100644 --- a/assets/demo.css +++ b/assets/demo.css @@ -26,6 +26,7 @@ custom CSS can be added below. display: flex; flex-direction: column; justify-content: space-between; + position: relative; } .tab-content-results > div:last-child { @@ -64,7 +65,7 @@ table { } .input > div:first-child { - height: calc(100vh - var(--banner-height) - 160px); + height: calc(100vh - var(--banner-height) - 160px); /* minus height of tabs and padding */ overflow-y: auto; } @@ -167,3 +168,10 @@ th { display: inline; margin-left: 0.8rem; } + +.checklist-wrapper { + position: absolute; + z-index: 5; + right: 4rem; + top: 4rem; +} diff --git a/bin_packing_app.py b/bin_packing_app.py deleted file mode 100644 index 29af2ca..0000000 --- a/bin_packing_app.py +++ /dev/null @@ -1,213 +0,0 @@ -# Copyright 2022 D-Wave Systems Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from io import StringIO -import numpy as np -import sys -import streamlit as st -from typing import Optional -from packing3d import (Cases, - Bins, - Variables, - build_cqm, - call_solver) -from utils import (print_cqm_stats, - plot_cuboids, - read_instance, - write_solution_to_file, - write_input_data) - - -def _get_cqm_stats(cqm) -> str: - cqm_info_stream = StringIO() - sys.stdout = cqm_info_stream - print_cqm_stats(cqm) - sys.stdout = sys.__stdout__ - - return cqm_info_stream.getvalue() - - -def _solve_bin_packing_instance(data: dict, - write_to_file: bool, - solution_filename: Optional[str], - use_cqm_solver: bool = True, - **st_plotly_kwargs): - cases = Cases(data) - bins = Bins(data, cases=cases) - - model_variables = Variables(cases, bins) - - cqm, effective_dimensions = build_cqm(model_variables, bins, cases) - - best_feasible = call_solver(cqm, time_limit, use_cqm_solver) - - plotly_fig = plot_cuboids(best_feasible, model_variables, cases, - bins, effective_dimensions, color_coded) - - st.plotly_chart(plotly_fig, **st_plotly_kwargs) - - st.code(_get_cqm_stats(cqm)) - - if write_to_file: - write_solution_to_file(solution_filename, cqm, - model_variables, best_feasible, - cases, bins, effective_dimensions) - - -st.set_page_config(layout="wide") - -st.markdown( - "

3D Bin Packing Demo

", - unsafe_allow_html=True -) - -run_type = st.sidebar.radio(label="Choose run type:", - options=["Random", "File upload"]) - -solver_type = st.sidebar.radio(label="Choose solver to run problems on:", - options=["Constrained Quadratic Model", - "CBC (Python-MIP)", - ]) - -if solver_type == "Constrained Quadratic Model": - use_cqm_solver = True -else: - use_cqm_solver = False - -if run_type == "File upload": - problem_filepath = st.sidebar.text_input(label="Problem instance file", - value="input/sample_data_1.txt") - time_limit = st.sidebar.number_input(label="Hybrid solver time limit (S)", - value=20) - color_coded = st.sidebar.checkbox("Color coded cases") - display_input = st.sidebar.checkbox("Display input data") - write_to_file = st.sidebar.checkbox("Write solution to file") - if write_to_file: - solution_filename = st.sidebar.text_input("Solution filename") - else: - solution_filename = None - run_button = st.sidebar.button("Run") - - if display_input: - col1, col2 = st.columns([1, 2]) - with col1: - if problem_filepath: - with open(problem_filepath) as f: - for line in f: - st.text(line) - - with col2: - if run_button: - data = read_instance(problem_filepath) - _solve_bin_packing_instance(data, - write_to_file, - solution_filename, - use_cqm_solver, - **{"use_container_width": True}) - else: - if run_button: - data = read_instance(problem_filepath) - _solve_bin_packing_instance(data, - write_to_file, - solution_filename, - use_cqm_solver, - **{"use_container_width": True}) - - -elif run_type == "Random": - color_coded = st.sidebar.checkbox("Color coded cases") - display_input = st.sidebar.checkbox("Display input data") - random_seed = st.sidebar.checkbox("Set random seed") - if random_seed: - seed = st.sidebar.number_input("Random seed", value=0) - - save_input_to_file = st.sidebar.checkbox("Save input data to file") - if save_input_to_file: - input_filename = st.sidebar.text_input("input filename") - else: - input_filename = None - - write_to_file = st.sidebar.checkbox("Write solution to file") - if write_to_file: - solution_filename = st.sidebar.text_input("Solution filename") - else: - solution_filename = None - - col1, col2 = st.columns([1, 2]) - with col1: - with st.form(key="problem_config"): - time_limit = st.number_input(label="Hybrid solver time limit(S)", - value=20) - num_bins = st.number_input("Number of bins", min_value=1, - max_value=5) - num_cases = st.number_input("Number of cases", - min_value=1, max_value=75, value=20) - case_size_range = st.slider("Case dimension range", min_value=1, - max_value=30, value=(1, 15)) - bin_length = st.number_input("Bin length", min_value=1, - max_value=200, value=50) - bin_width = st.number_input("Bin width", min_value=1, - max_value=200, value=50) - bin_height = st.number_input("Bin height", min_value=1, - max_value=200, value=50) - form_submit = st.form_submit_button("Run") - - if form_submit: - if random_seed: - rng = np.random.default_rng(seed) - else: - rng = np.random.default_rng() - - data = { - "num_bins": num_bins, - "bin_dimensions": [bin_length, bin_width, bin_height], - "case_length": rng.integers( - case_size_range[0], case_size_range[1], - num_cases, endpoint=True - ), - "case_width": rng.integers( - case_size_range[0], case_size_range[1], - num_cases, endpoint=True - ), - "case_height": rng.integers( - case_size_range[0], case_size_range[1], - num_cases, endpoint=True - ), - } - - # Determine quantities and case_ids - case_dimensions = np.vstack( - [data["case_length"], data["case_width"], data["case_height"]] - ) - unique_dimensions, data["quantity"] = np.unique(case_dimensions, - axis=1, - return_counts=True) - - data["case_length"] = unique_dimensions[0,:] - data["case_width"] = unique_dimensions[1,:] - data["case_height"] = unique_dimensions[2,:] - - data["case_ids"] = np.array(range(len(data["quantity"]))) - - input_data_string = write_input_data(data, input_filename) - if display_input: - for line in input_data_string.split(sep='\n'): - st.text(line) - - with col2: - _solve_bin_packing_instance(data, - write_to_file, - solution_filename, - use_cqm_solver, - **{"use_container_width": True}) diff --git a/demo_callbacks.py b/demo_callbacks.py index a25d938..24aa14f 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -28,7 +28,7 @@ from demo_interface import generate_problem_details_table_rows, generate_table from packing3d import Bins, Cases, Variables, build_cqm, call_solver from src.demo_enums import ProblemType, SolverType -from utils import case_list_to_dict, data_to_lists, get_cqm_stats, plot_cuboids, print_cqm_stats, write_input_data, write_solution_to_file +from utils import case_list_to_dict, data_to_lists, get_cqm_stats, plot_cuboids, print_cqm_stats, update_colors, write_input_data, write_solution_to_file @dash.callback( @@ -289,7 +289,36 @@ def save_input_to_file( @dash.callback( - # The Outputs below must align with `RunOptimizationReturn`. + Output("results", "figure", allow_duplicate=True), + inputs=[ + Input("checklist", "value"), + State("results", "figure"), + ], + prevent_initial_call=True, +) +def update_graph_colors( + checklist: list, + fig: go.Figure, +) -> go.Figure: + """Runs the optimization and updates UI accordingly. + + This is the main function which is called when the ``Run Optimization`` button is clicked. + This function takes in all form values and runs the optimization, updates the run/cancel + buttons, deactivates (and reactivates) the results tab, and updates all relevant HTML + components. + + Args: + run_click: The (total) number of times the run button has been clicked. + solver_type: The solver to use for the optimization run defined by SolverType in demo_enums.py. + time_limit: The solver time limit. + + Returns: + results: The results to display in the results tab. + """ + return update_colors(fig, bool(checklist)) + + +@dash.callback( Output("results", "figure"), Output("problem-details", "children"), background=True, @@ -301,7 +330,6 @@ def save_input_to_file( State("max-bins-store", "data"), State("bin-dimensions-store", "data"), State("checklist", "value"), - State("save-input-filename", "value"), State("save-solution", "value"), ], running=[ @@ -322,7 +350,6 @@ def run_optimization( num_bins: int, bin_dimensions: list[int], checklist: list, - save_input: str, save_solution_filepath: str, ) -> go.Figure: """Runs the optimization and updates UI accordingly. @@ -357,7 +384,7 @@ def run_optimization( cases, bins, effective_dimensions) fig = plot_cuboids(best_feasible, vars, cases, - bins, effective_dimensions, checklist) + bins, effective_dimensions, bool(checklist)) # Generates a list of table rows for the problem details table. problem_details_table = generate_problem_details_table_rows(get_cqm_stats(cqm)) diff --git a/demo_configs.py b/demo_configs.py index 3c31850..b85e8f9 100644 --- a/demo_configs.py +++ b/demo_configs.py @@ -66,7 +66,7 @@ "value": 50, } -ADVANCED_SETTINGS = ["Color coded cases"] +ADVANCED_SETTINGS = ["Color by Case ID"] # solver time limits in seconds (value means default) SOLVER_TIME = { diff --git a/demo_interface.py b/demo_interface.py index 80538ff..054773b 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -167,8 +167,6 @@ def generate_settings_form() -> html.Div: Returns: html.Div: A Div containing the settings for selecting the scenario, model, and solver. """ - checklist_options = generate_options(ADVANCED_SETTINGS) - problem_type_options = [ {"label": problem_type.label, "value": problem_type.value} for problem_type in ProblemType ] @@ -282,12 +280,6 @@ def generate_settings_form() -> html.Div: html.Div( className="details-to-collapse advanced-collapse", children=[ - checklist( - "", - "checklist", - sorted(checklist_options, key=lambda op: op["value"]), - [0], - ), html.Div([ html.Label("Save Input Data to File"), html.Div([ @@ -421,6 +413,8 @@ def problem_details(index: int) -> html.Div: def create_interface(): """Set the application HTML.""" + checklist_options = generate_options(ADVANCED_SETTINGS) + return html.Div( id="app-container", children=[ @@ -507,6 +501,12 @@ def create_interface(): html.Div( className="tab-content-results", children=[ + checklist( + "", + "checklist", + sorted(checklist_options, key=lambda op: op["value"]), + [], + ), dcc.Loading( parent_className="results", type="circle", diff --git a/utils.py b/utils.py index 9c8be4c..acf8887 100644 --- a/utils.py +++ b/utils.py @@ -91,6 +91,22 @@ def print_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: print(tabulate(cqm_stats, headers="firstrow")) +def update_colors(fig: go.Figure, color_coded: bool): + if color_coded: + case_ids = np.array( + [ + int(trace["name"].split("_")[1]) for trace in fig["data"] if trace["name"][:4] == "case" + ] + ) + colors = _get_colors(case_ids) + + for i, trace in enumerate(fig["data"]): + if trace["name"][:4] == "case": + trace["color"] = colors[i] if color_coded else "" + + return fig + + def _cuboid_data(origin: tuple, size: tuple = (1, 1, 1)): X = [[[0, 1, 0], [0, 0, 0], [1, 0, 0], [1, 1, 0]], [[0, 0, 0], [0, 0, 1], [1, 0, 1], [1, 0, 0]], From a5e4ea348b1d23d45170e2a55c11a26ac76060ed Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Fri, 6 Dec 2024 11:40:08 -0800 Subject: [PATCH 08/20] Update docstrings, move save file --- assets/demo.css | 4 ++ demo_callbacks.py | 152 ++++++++++++++++++++++++++++------------------ demo_interface.py | 31 +++++----- requirements.txt | 2 +- utils.py | 21 +++++-- 5 files changed, 130 insertions(+), 80 deletions(-) diff --git a/assets/demo.css b/assets/demo.css index 51a9119..05b9090 100644 --- a/assets/demo.css +++ b/assets/demo.css @@ -60,6 +60,10 @@ table { margin: 0 0.4rem 0 1rem; } +.input label { + margin-top: 6rem; +} + .input > *:last-child { margin-left: 5rem; } diff --git a/demo_callbacks.py b/demo_callbacks.py index 24aa14f..38c2b4f 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -18,7 +18,7 @@ from typing import NamedTuple, Union import dash -from dash import ALL, MATCH, ctx +from dash import ALL, MATCH from dash.dependencies import Input, Output, State from dash.exceptions import PreventUpdate from demo_configs import RANDOM_SEED, TABLE_HEADERS @@ -28,7 +28,7 @@ from demo_interface import generate_problem_details_table_rows, generate_table from packing3d import Bins, Cases, Variables, build_cqm, call_solver from src.demo_enums import ProblemType, SolverType -from utils import case_list_to_dict, data_to_lists, get_cqm_stats, plot_cuboids, print_cqm_stats, update_colors, write_input_data, write_solution_to_file +from utils import case_list_to_dict, data_to_lists, get_cqm_stats, plot_cuboids, update_colors, write_input_data, write_solution_to_file @dash.callback( @@ -66,15 +66,19 @@ def toggle_left_column(collapse_trigger: int, to_collapse_class: str) -> str: State({"type": "generated-settings", "index": ALL}, "children"), ], ) -def update_problem_type(problem_type: Union[ProblemType, int], gen_settings: list) -> tuple[str, str]: - """Runs on load and any time the value of the slider is updated. - Add `prevent_initial_call=True` to skip on load runs. +def update_problem_type( + problem_type: Union[ProblemType, int], + gen_settings: list, +) -> tuple[list[str], str]: + """Updates the visible settings when the Problem Type is changed. Args: - slider_value: The value of the slider. + problem_type: The ProblemType that was just selected from the dropdown. + gen_settings: The settings for the `Generated` ProblemType. Returns: - str: The content of the input tab. + list[str]: The classe names for the settings for the `Generated` ProblemType. + str: The class name for the `Uploaded` ProblemType. """ if problem_type is ProblemType.FILE.value: return ["display-none"]*len(gen_settings), "" @@ -93,19 +97,23 @@ def update_problem_type(problem_type: Union[ProblemType, int], gen_settings: lis ], prevent_initial_call='initial_duplicate' ) -def update_input_graph_generated( +def update_input_table_generated( problem_type: Union[ProblemType, int], num_cases: int, - case_size_range: int, -) -> str: - """Runs on load and any time the value of the slider is updated. - Add `prevent_initial_call=True` to skip on load runs. + case_size_range: list[int], +) -> tuple[list, list, str]: + """Updates the input table when ProblemType is `Generated` and any relevant settings have been + changed. Args: - slider_value: The value of the slider. + problem_type: The input problem type. Either Generated or Uploaded. + num_cases: The value of the number of cases setting. + case_size_range: The values of the case size range setting. Returns: - str: The content of the input tab. + list: The input table. + list: The data that was generated for the table. + str: The class name for the `Saved!` feedback. """ if ProblemType(problem_type) is ProblemType.FILE: raise PreventUpdate @@ -166,15 +174,23 @@ def update_input_generated( bin_length: int, bin_width: int, bin_height: int, -) -> str: - """Runs on load and any time the value of the slider is updated. - Add `prevent_initial_call=True` to skip on load runs. +) -> tuple[int, str, int, list, str]: + """Updates the number of bins and bin dimensions store and input when ProblemType is `Generated` + and any relevant form fields are updated. Args: - slider_value: The value of the slider. + problem_type: The input problem type. Either Generated or Uploaded. + num_bins: The current value of the number of bins setting. + bin_length: The current value of the bin length setting. + bin_width: The current value of the bin width setting. + bin_height: The current value of the bin height setting. Returns: - str: The content of the input tab. + max_bins: The maximum bins to display in the input UI. + bin_dimensions: The bin dimension string to display in the UI. + max_bins_store: The value to update the maximum bins store. + bin_dimensions_store: The value to update the bin dimensions store. + saved_classname: The `Saved!` text class name. """ if ProblemType(problem_type) is ProblemType.FILE: raise PreventUpdate @@ -188,6 +204,17 @@ def update_input_generated( ) +class UpdateInputFileReturn(NamedTuple): + """Return type for the ``update_input_file`` callback function.""" + + table_input: list = dash.no_update + max_bins: int = dash.no_update + bin_dimensions: str = dash.no_update + filename: str = dash.no_update + data_table_store: list = dash.no_update + max_bins_store: int = dash.no_update + bin_dimensions_store: list = dash.no_update + @dash.callback( Output("input", "children", allow_duplicate=True), Output("max-bins", "children", allow_duplicate=True), @@ -207,15 +234,23 @@ def update_input_file( file_contents: str, problem_type: Union[ProblemType, int], filename: str, -) -> str: - """Runs on load and any time the value of the slider is updated. - Add `prevent_initial_call=True` to skip on load runs. +) -> UpdateInputFileReturn: + """Reads input file and displays data in a table. Args: - slider_value: The value of the slider. + file_contents: The encoded contents of the uploaded input file. + problem_type: The input problem type. Either Generated or Uploaded. + filename: The name of the uploaded file. Returns: - str: The content of the input tab. + A NamedTuple (UpdateInputFileReturn) with the following parameters: + table_input: The input table containing problem data from the file. + max_bins: The maximum bins to display in the input UI. + bin_dimensions: The bin dimension string to display in the UI. + filename: The name of the file that was uploaded to display in the UI. + data_table_store: The value to update the table data store. + max_bins_store: The value to update the maximum bins store. + bin_dimensions_store: The value to update the bin dimensions store. """ if ProblemType(problem_type) is ProblemType.GENERATED: raise PreventUpdate @@ -236,16 +271,16 @@ def update_input_file( except Exception as e: print(e) - return 'There was an error processing this file.' - - return ( - generate_table(TABLE_HEADERS, table_data), - num_bins, - f"{bin_length} * {bin_width} * {bin_height}", - filename, - table_data, - num_bins, - [bin_length, bin_width, bin_height], + return UpdateInputFileReturn(filename='There was an error processing this file.') + + return UpdateInputFileReturn( + table_input=generate_table(TABLE_HEADERS, table_data), + max_bins=num_bins, + bin_dimensions=f"{bin_length} * {bin_width} * {bin_height}", + filename=filename, + data_table_store=table_data, + max_bins_store=num_bins, + bin_dimensions_store=[bin_length, bin_width, bin_height], ) raise PreventUpdate @@ -268,21 +303,18 @@ def save_input_to_file( data_table: list[int], num_bins: int, bin_dimensions: list[int], -) -> go.Figure: - """Runs the optimization and updates UI accordingly. - - This is the main function which is called when the ``Run Optimization`` button is clicked. - This function takes in all form values and runs the optimization, updates the run/cancel - buttons, deactivates (and reactivates) the results tab, and updates all relevant HTML - components. +) -> str: + """Saves input data to a text file when the `save-input-button` is clicked. Args: - run_click: The (total) number of times the run button has been clicked. - solver_type: The solver to use for the optimization run defined by SolverType in demo_enums.py. - time_limit: The solver time limit. + save_button: How many times the save to file button has been clicked. + filename: The file name to save the input data to. + data_table: The data from the table of input values. + num_bins: The number of bins. + bin_dimensions: The bin dimensions. Returns: - results: The results to display in the results tab. + str: The `Saved!` text class name. """ write_input_data(case_list_to_dict(num_bins, bin_dimensions, data_table), filename) return "" @@ -300,20 +332,14 @@ def update_graph_colors( checklist: list, fig: go.Figure, ) -> go.Figure: - """Runs the optimization and updates UI accordingly. - - This is the main function which is called when the ``Run Optimization`` button is clicked. - This function takes in all form values and runs the optimization, updates the run/cancel - buttons, deactivates (and reactivates) the results tab, and updates all relevant HTML - components. + """Updates the colors of the figure when the value of the checklist changes. Args: - run_click: The (total) number of times the run button has been clicked. - solver_type: The solver to use for the optimization run defined by SolverType in demo_enums.py. - time_limit: The solver time limit. + checklist: A list of the current values of the checklist. + fig: The current figure that is displayed. Returns: - results: The results to display in the results tab. + go.Figure: The updated figure. """ return update_colors(fig, bool(checklist)) @@ -351,7 +377,7 @@ def run_optimization( bin_dimensions: list[int], checklist: list, save_solution_filepath: str, -) -> go.Figure: +) -> tuple[go.Figure, list]: """Runs the optimization and updates UI accordingly. This is the main function which is called when the ``Run Optimization`` button is clicked. @@ -360,12 +386,18 @@ def run_optimization( components. Args: - run_click: The (total) number of times the run button has been clicked. - solver_type: The solver to use for the optimization run defined by SolverType in demo_enums.py. - time_limit: The solver time limit. + run_click: The number of times the run button has been clicked. + solver_type: The value of the Solver form field. + time_limit: The value of the Solver Time Limit form field. + data_table: The stored generated data. + num_bins: The stored number of bins. + bin_dimensions: The stored bin dimensions. + checklist: The current value of the checklist. + save_solution_filepath: The filepath to save the solution to. Returns: - results: The results to display in the results tab. + fig: The results figure. + problem_details_table: The table and information to display in the problem details table. """ solver_type = SolverType(solver_type) diff --git a/demo_interface.py b/demo_interface.py index 054773b..4942f24 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -273,25 +273,13 @@ def generate_settings_form() -> html.Div: }, className="details-collapse advanced-settings", children=[ - html.Label("Advanced settings"), + html.Label("More settings"), html.Div(className="collapse-arrow"), ], ), html.Div( className="details-to-collapse advanced-collapse", children=[ - html.Div([ - html.Label("Save Input Data to File"), - html.Div([ - dcc.Input( - id="save-input-filename", - type="text", - placeholder="File Name", - ), - html.Button(id="save-input-button", children="Save", n_clicks=0), - html.P("Saved!", className="display-none", id="saved") - ]), - ], id={"type": "generated-settings", "index": 1}), html.Label("Write Solution to File"), dcc.Input( id="save-solution", @@ -484,7 +472,22 @@ def create_interface(): ), html.Div([ html.H6(["Maximum bins: ", html.Span(id="max-bins")]), - html.H6(["Bin dimensions: ", html.Span(id="bin-dims"), " (L*W*H)"]) + html.H6(["Bin dimensions: ", html.Span(id="bin-dims"), " (L*W*H)"]), + html.Div( + [ + html.Label("Save Input Data to File"), + html.Div([ + dcc.Input( + id="save-input-filename", + type="text", + placeholder="File Name", + ), + html.Button(id="save-input-button", children="Save", n_clicks=0), + html.P("Saved!", className="display-none", id="saved") + ]), + ], + id={"type": "generated-settings", "index": 1}, + ), ]) ], ), diff --git a/requirements.txt b/requirements.txt index 465a63f..a6941a6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ +dash[diskcache]==2.17.1 dwave-ocean-sdk>=6.3.0 mip==1.13.0 plotly==5.6.0 -dash[diskcache]==2.17.1 tabulate==0.8.9 diff --git a/utils.py b/utils.py index acf8887..be544bc 100644 --- a/utils.py +++ b/utils.py @@ -1,4 +1,4 @@ -# Copyright 2022 D-Wave Systems Inc. +# Copyright 2024 D-Wave # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,12 +25,14 @@ from packing3d import Cases, Bins, Variables -def get_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: - """Print some information about the CQM model defining the 3D bin packing problem. +def get_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> list[list]: + """Get information about the CQM model defining the 3D bin packing problem. Args: cqm: A dimod constrained quadratic model. + Returns: + list[list]: A list of CQM data ready to be printed or displayed in a table. """ if not isinstance(cqm, dimod.ConstrainedQuadraticModel): raise ValueError("input instance should be a dimod CQM model") @@ -59,7 +61,7 @@ def get_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: len(cqm.constraints)) return [ - ["Binary", "Integer", "Continuous", "Quad", "Linear", "One-hot", "EQ ", "LT", "GT"], + ["Binary", "Integer", "Continuous", "Quad", "Linear", "One-hot", "EQ", "LT", "GT"], [ num_binaries, num_integers, @@ -91,7 +93,16 @@ def print_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: print(tabulate(cqm_stats, headers="firstrow")) -def update_colors(fig: go.Figure, color_coded: bool): +def update_colors(fig: go.Figure, color_coded: bool) -> go.Figure: + """Update the case colors given a figure and the color coding rule. + + Args: + fig: A go.Figure containing colored cases with case IDs of the form ``case_#``. + color_coded: Whether the cases should be colored based on their ID. + + Returns: + go.Figure: The go.Figure with updated colors. + """ if color_coded: case_ids = np.array( [ From 58882d1acd62633663bf7993429dc50eef28a014 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Fri, 6 Dec 2024 14:45:28 -0800 Subject: [PATCH 09/20] Refactor data structures --- demo_callbacks.py | 154 +++++++++++++++++--------------------------- demo_configs.py | 2 - demo_interface.py | 27 ++++---- packing3d.py | 10 +-- tests/test_utils.py | 22 +++---- utils.py | 49 ++++++-------- 6 files changed, 111 insertions(+), 153 deletions(-) diff --git a/demo_callbacks.py b/demo_callbacks.py index 38c2b4f..6e76685 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -21,14 +21,14 @@ from dash import ALL, MATCH from dash.dependencies import Input, Output, State from dash.exceptions import PreventUpdate -from demo_configs import RANDOM_SEED, TABLE_HEADERS +from demo_configs import RANDOM_SEED import numpy as np import plotly.graph_objs as go -from demo_interface import generate_problem_details_table_rows, generate_table +from demo_interface import generate_table_rows, generate_table from packing3d import Bins, Cases, Variables, build_cqm, call_solver from src.demo_enums import ProblemType, SolverType -from utils import case_list_to_dict, data_to_lists, get_cqm_stats, plot_cuboids, update_colors, write_input_data, write_solution_to_file +from utils import case_list_to_dict, get_cqm_stats, plot_cuboids, update_colors, write_input_data, write_solution_to_file @dash.callback( @@ -88,19 +88,21 @@ def update_problem_type( @dash.callback( Output("input", "children"), - Output("data-table-store", "data"), + Output("problem-data-store", "data", allow_duplicate=True), Output("saved", "className", allow_duplicate=True), inputs=[ Input("problem-type", "value"), Input("num-cases", "value"), Input("case-dim", "value"), + State("problem-data-store", "data"), ], prevent_initial_call='initial_duplicate' ) -def update_input_table_generated( +def generate_data( problem_type: Union[ProblemType, int], num_cases: int, case_size_range: list[int], + problem_data: dict, ) -> tuple[list, list, str]: """Updates the input table when ProblemType is `Generated` and any relevant settings have been changed. @@ -109,6 +111,7 @@ def update_input_table_generated( problem_type: The input problem type. Either Generated or Uploaded. num_cases: The value of the number of cases setting. case_size_range: The values of the case size range setting. + problem_data: The stored problem data. Returns: list: The input table. @@ -120,45 +123,26 @@ def update_input_table_generated( rng = np.random.default_rng(RANDOM_SEED) - data = { - "case_length": rng.integers( + case_dimensions = np.array([ + rng.integers( case_size_range[0], case_size_range[1], num_cases, endpoint=True - ), - "case_width": rng.integers( - case_size_range[0], case_size_range[1], - num_cases, endpoint=True - ), - "case_height": rng.integers( - case_size_range[0], case_size_range[1], - num_cases, endpoint=True - ), - } + ) for i in range(3) + ]) # Determine quantities and case_ids - case_dimensions = np.vstack( - [data["case_length"], data["case_width"], data["case_height"]] - ) - unique_dimensions, data["quantity"] = np.unique(case_dimensions, - axis=1, - return_counts=True) - - data["case_length"] = unique_dimensions[0,:] - data["case_width"] = unique_dimensions[1,:] - data["case_height"] = unique_dimensions[2,:] - - data["case_ids"] = np.array(range(len(data["quantity"]))) + unique_dimensions, problem_data["Quantity"] = np.unique(case_dimensions, axis=1, return_counts=True) - data_lists = data_to_lists(data) + problem_data["Case ID"] = np.arange(len(problem_data["Quantity"])) + problem_data["Length"], problem_data["Width"], problem_data["Height"] = unique_dimensions - return generate_table(TABLE_HEADERS, data_lists), data_lists, "display-none" + return generate_table(problem_data), problem_data, "display-none" @dash.callback( Output("max-bins", "children"), Output("bin-dims", "children"), - Output("max-bins-store", "data"), - Output("bin-dimensions-store", "data"), + Output("problem-data-store", "data"), Output("saved", "className"), inputs=[ Input("problem-type", "value"), @@ -166,14 +150,16 @@ def update_input_table_generated( Input("bin-length", "value"), Input("bin-width", "value"), Input("bin-height", "value"), + State("problem-data-store", "data"), ], ) -def update_input_generated( +def generate_bins( problem_type: Union[ProblemType, int], num_bins: int, bin_length: int, bin_width: int, bin_height: int, + problem_data: dict, ) -> tuple[int, str, int, list, str]: """Updates the number of bins and bin dimensions store and input when ProblemType is `Generated` and any relevant form fields are updated. @@ -184,45 +170,43 @@ def update_input_generated( bin_length: The current value of the bin length setting. bin_width: The current value of the bin width setting. bin_height: The current value of the bin height setting. + problem_data: The stored problem data. Returns: max_bins: The maximum bins to display in the input UI. bin_dimensions: The bin dimension string to display in the UI. - max_bins_store: The value to update the maximum bins store. - bin_dimensions_store: The value to update the bin dimensions store. + problem_data: The problem data to store. saved_classname: The `Saved!` text class name. """ if ProblemType(problem_type) is ProblemType.FILE: raise PreventUpdate + + problem_data["num_bins"] = num_bins + problem_data["bin_dimensions"] = [bin_length, bin_width, bin_height] return ( num_bins, f"{bin_length} * {bin_width} * {bin_height}", - num_bins, - [bin_length, bin_width, bin_height], + problem_data, "display-none" ) -class UpdateInputFileReturn(NamedTuple): - """Return type for the ``update_input_file`` callback function.""" +class ReadInputFileReturn(NamedTuple): + """Return type for the ``read_input_file`` callback function.""" table_input: list = dash.no_update max_bins: int = dash.no_update bin_dimensions: str = dash.no_update filename: str = dash.no_update - data_table_store: list = dash.no_update - max_bins_store: int = dash.no_update - bin_dimensions_store: list = dash.no_update + problem_data_store: list = dash.no_update @dash.callback( Output("input", "children", allow_duplicate=True), Output("max-bins", "children", allow_duplicate=True), Output("bin-dims", "children", allow_duplicate=True), Output("filename", "children"), - Output("data-table-store", "data", allow_duplicate=True), - Output("max-bins-store", "data", allow_duplicate=True), - Output("bin-dimensions-store", "data", allow_duplicate=True), + Output("problem-data-store", "data", allow_duplicate=True), inputs=[ Input("input-file", 'contents'), Input("problem-type", "value"), @@ -230,11 +214,11 @@ class UpdateInputFileReturn(NamedTuple): ], prevent_initial_call=True, ) -def update_input_file( +def read_input_file( file_contents: str, problem_type: Union[ProblemType, int], filename: str, -) -> UpdateInputFileReturn: +) -> ReadInputFileReturn: """Reads input file and displays data in a table. Args: @@ -243,14 +227,12 @@ def update_input_file( filename: The name of the uploaded file. Returns: - A NamedTuple (UpdateInputFileReturn) with the following parameters: + A NamedTuple (ReadInputFileReturn) with the following parameters: table_input: The input table containing problem data from the file. max_bins: The maximum bins to display in the input UI. bin_dimensions: The bin dimension string to display in the UI. filename: The name of the file that was uploaded to display in the UI. - data_table_store: The value to update the table data store. - max_bins_store: The value to update the maximum bins store. - bin_dimensions_store: The value to update the bin dimensions store. + problem_data_store: The value to update the table data store. """ if ProblemType(problem_type) is ProblemType.GENERATED: raise PreventUpdate @@ -264,24 +246,24 @@ def update_input_file( num_bins = int(lines[0].split(":")[1].strip()) bin_length, bin_width, bin_height = map(int, lines[1].split(":")[1].split()) - table_data = [] + case_data = [] for line in lines[5:]: if line.strip(): - table_data.append(list(map(int, line.split()))) + case_data.append(list(map(int, line.split()))) + + problem_data = case_list_to_dict(num_bins, [bin_length, bin_width, bin_height], case_data) + + return ReadInputFileReturn( + table_input=generate_table(problem_data), + max_bins=num_bins, + bin_dimensions=f"{bin_length} * {bin_width} * {bin_height}", + filename=filename, + problem_data_store=problem_data, + ) except Exception as e: print(e) - return UpdateInputFileReturn(filename='There was an error processing this file.') - - return UpdateInputFileReturn( - table_input=generate_table(TABLE_HEADERS, table_data), - max_bins=num_bins, - bin_dimensions=f"{bin_length} * {bin_width} * {bin_height}", - filename=filename, - data_table_store=table_data, - max_bins_store=num_bins, - bin_dimensions_store=[bin_length, bin_width, bin_height], - ) + return ReadInputFileReturn(filename='There was an error processing this file.') raise PreventUpdate @@ -291,32 +273,27 @@ def update_input_file( inputs=[ Input("save-input-button", "n_clicks"), State("save-input-filename", "value"), - State("data-table-store", "data"), - State("max-bins-store", "data"), - State("bin-dimensions-store", "data"), + State("problem-data-store", "data"), ], prevent_initial_call=True, ) def save_input_to_file( save_button: int, filename: str, - data_table: list[int], - num_bins: int, - bin_dimensions: list[int], + problem_data: list[int], ) -> str: """Saves input data to a text file when the `save-input-button` is clicked. Args: save_button: How many times the save to file button has been clicked. filename: The file name to save the input data to. - data_table: The data from the table of input values. - num_bins: The number of bins. - bin_dimensions: The bin dimensions. + problem_data: The data from the table of input values. Returns: str: The `Saved!` text class name. """ - write_input_data(case_list_to_dict(num_bins, bin_dimensions, data_table), filename) + write_input_data(problem_data, filename) + return "" @@ -352,9 +329,7 @@ def update_graph_colors( Input("run-button", "n_clicks"), State("solver-type-select", "value"), State("solver-time-limit", "value"), - State("data-table-store", "data"), - State("max-bins-store", "data"), - State("bin-dimensions-store", "data"), + State("problem-data-store", "data"), State("checklist", "value"), State("save-solution", "value"), ], @@ -372,9 +347,7 @@ def run_optimization( run_click: int, solver_type: Union[SolverType, int], time_limit: float, - data_table: list[int], - num_bins: int, - bin_dimensions: list[int], + problem_data: dict, checklist: list, save_solution_filepath: str, ) -> tuple[go.Figure, list]: @@ -389,9 +362,7 @@ def run_optimization( run_click: The number of times the run button has been clicked. solver_type: The value of the Solver form field. time_limit: The value of the Solver Time Limit form field. - data_table: The stored generated data. - num_bins: The stored number of bins. - bin_dimensions: The stored bin dimensions. + problem_data: The stored generated data. checklist: The current value of the checklist. save_solution_filepath: The filepath to save the solution to. @@ -399,26 +370,21 @@ def run_optimization( fig: The results figure. problem_details_table: The table and information to display in the problem details table. """ - solver_type = SolverType(solver_type) - - data = case_list_to_dict(num_bins, bin_dimensions, data_table) - cases = Cases(data) - bins = Bins(data, cases) - + cases = Cases(problem_data) + bins = Bins(problem_data, cases) vars = Variables(cases, bins) cqm, effective_dimensions = build_cqm(vars, bins, cases) - best_feasible = call_solver(cqm, time_limit, solver_type is SolverType.CQM) + best_feasible = call_solver(cqm, time_limit, solver_type is SolverType.CQM.value) if save_solution_filepath is not None: write_solution_to_file(save_solution_filepath, cqm, vars, best_feasible, cases, bins, effective_dimensions) - fig = plot_cuboids(best_feasible, vars, cases, - bins, effective_dimensions, bool(checklist)) + fig = plot_cuboids(best_feasible, vars, cases, bins, effective_dimensions, bool(checklist)) # Generates a list of table rows for the problem details table. - problem_details_table = generate_problem_details_table_rows(get_cqm_stats(cqm)) + problem_details_table = generate_table_rows(get_cqm_stats(cqm)) return fig, problem_details_table diff --git a/demo_configs.py b/demo_configs.py index b85e8f9..f1c457d 100644 --- a/demo_configs.py +++ b/demo_configs.py @@ -32,8 +32,6 @@ RANDOM_SEED = 4 -TABLE_HEADERS = ["Case ID", "Quantity", "Length", "Width", "Height"] - ####################################### # Sliders, buttons and option entries # ####################################### diff --git a/demo_interface.py b/demo_interface.py index 4942f24..0a3503c 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -14,6 +14,7 @@ """This file stores the Dash HTML layout for the app.""" from __future__ import annotations +from collections import defaultdict from dash import dcc, html @@ -30,6 +31,7 @@ THUMBNAIL, ) from src.demo_enums import ProblemType, SolverType +from utils import TABLE_HEADERS def slider(label: str, id: str, config: dict) -> html.Div: @@ -310,30 +312,33 @@ def generate_run_buttons() -> html.Div: ) -def generate_table(headers: list, body: list) -> list[html.Thead, html.Tbody]: - """Generates solution table. +def generate_table(table_data: dict) -> list[html.Thead, html.Tbody]: + """Generates the input table. Args: - results_dict: Dictionary of lists of results values from all previous runs. + table_data: Dictionary of lists of input data. Returns: list: The table head and table body of the results table. """ + body = [ + [table_data[table_header][i] for table_header in TABLE_HEADERS] + for i in range(len(table_data[TABLE_HEADERS[0]])) + ] return [ - html.Thead([html.Tr([html.Th(header) for header in headers])]), - html.Tbody([html.Tr([html.Td(cell) for cell in cells]) for cells in body]), + html.Thead([html.Tr([html.Th(header) for header in TABLE_HEADERS])]), + html.Tbody(generate_table_rows(body)), ] -def generate_problem_details_table_rows(table_data: list[list]) -> list[html.Tr]: - """Generates table rows for the problem details table. +def generate_table_rows(table_data: list[list]) -> list[html.Tr]: + """Generates table rows. Args: - solver: The solver used for optimization. - time_limit: The solver time limit. + table_data: A list of lists to display in table rows. Returns: - list[html.Tr]: List of rows for the problem details table. + list[html.Tr]: List of rows. """ return [html.Tr([html.Td(cell) for cell in row]) for row in table_data] @@ -407,7 +412,7 @@ def create_interface(): id="app-container", children=[ # Below are any temporary storage items, e.g., for sharing data between callbacks. - dcc.Store(id="data-table-store"), + dcc.Store(id="problem-data-store", data=defaultdict(list)), dcc.Store(id="max-bins-store"), dcc.Store(id="bin-dimensions-store"), # Header brand banner diff --git a/packing3d.py b/packing3d.py index e2364bb..84ecdb4 100644 --- a/packing3d.py +++ b/packing3d.py @@ -33,11 +33,11 @@ class Cases: """ def __init__(self, data): - self.case_ids = np.repeat(data["case_ids"], data["quantity"]) - self.num_cases = np.sum(data["quantity"], dtype=np.int32) - self.length = np.repeat(data["case_length"], data["quantity"]) - self.width = np.repeat(data["case_width"], data["quantity"]) - self.height = np.repeat(data["case_height"], data["quantity"]) + self.case_ids = np.repeat(data["Case ID"], data["Quantity"]) + self.num_cases = np.sum(data["Quantity"], dtype=np.int32) + self.length = np.repeat(data["Length"], data["Quantity"]) + self.width = np.repeat(data["Width"], data["Quantity"]) + self.height = np.repeat(data["Height"], data["Quantity"]) print(f'Number of cases: {self.num_cases}') diff --git a/tests/test_utils.py b/tests/test_utils.py index 1f1523c..02d3fa3 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -78,9 +78,9 @@ def test_plot_cuboids(self): def test_read_write_input_data(self): data = read_instance(instance_path='./tests/test_data_1.txt') out_file_string = write_input_data(data) - data1 = {"num_bins": 0, "bin_dimensions": [], "quantity": [], - "case_ids": [], "case_length": [], "case_width": [], - "case_height": []} + data1 = {"num_bins": 0, "bin_dimensions": [], "Quantity": [], + "Case ID": [], "Length": [], "Width": [], + "Height": []} out_list = (out_file_string.split(sep='\n')) for i, line in enumerate(out_list): if i == 0: @@ -91,16 +91,16 @@ def test_read_write_input_data(self): continue else: case_info = list(map(int, line.split())) - data1["case_ids"].append(case_info[0]) - data1["quantity"].append(case_info[1]) - data1["case_length"].append(case_info[2]) - data1["case_width"].append(case_info[3]) - data1["case_height"].append(case_info[4]) + data1["Case ID"].append(case_info[0]) + data1["Quantity"].append(case_info[1]) + data1["Length"].append(case_info[2]) + data1["Width"].append(case_info[3]) + data1["Height"].append(case_info[4]) self.assertEqual(data1, {'num_bins': 1, 'bin_dimensions': [30, 40, 50], - 'quantity': [1, 1], 'case_ids': [0, 1], - 'case_length': [2, 3], 'case_width': [2, 3], - 'case_height': [2, 3]}) + 'Quantity': [1, 1], 'Case ID': [0, 1], + 'Length': [2, 3], 'Width': [2, 3], + 'Height': [2, 3]}) self.assertEqual(data1, data) def test_write_solution_to_file(self): diff --git a/utils.py b/utils.py index be544bc..4e28ece 100644 --- a/utils.py +++ b/utils.py @@ -13,7 +13,6 @@ # limitations under the License. import os -from demo_configs import TABLE_HEADERS import plotly.colors as colors import plotly.graph_objects as go import numpy as np @@ -24,6 +23,8 @@ if TYPE_CHECKING: from packing3d import Cases, Bins, Variables +TABLE_HEADERS = ["Case ID", "Quantity", "Length", "Width", "Height"] + def get_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> list[list]: """Get information about the CQM model defining the 3D bin packing problem. @@ -238,16 +239,14 @@ def case_list_to_dict(num_bins: int, bin_dimensions: list, case_info: list) -> d Returns: data: dictionary containing raw information for both bins and cases. """ - - data = {"num_bins": num_bins, "bin_dimensions": bin_dimensions, "quantity": [], "case_ids": [], - "case_length": [], "case_width": [], "case_height": []} + data = {table_header: [] for table_header in TABLE_HEADERS} for case_info_line in case_info: - data["case_ids"].append(case_info_line[0]) - data["quantity"].append(case_info_line[1]) - data["case_length"].append(case_info_line[2]) - data["case_width"].append(case_info_line[3]) - data["case_height"].append(case_info_line[4]) + for i, table_header in enumerate(TABLE_HEADERS): + data[table_header].append(case_info_line[i]) + + data["num_bins"] = num_bins + data["bin_dimensions"] = bin_dimensions return data @@ -348,13 +347,19 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: input_string: input data information """ - case_info = data_to_lists(data) + num_bins = data.pop('num_bins') + bin_dimensions = data.pop('bin_dimensions') - input_string = f'# Max num of bins : {data["num_bins"]} \n' + case_info = [ + [data[table_header][i] for table_header in TABLE_HEADERS] + for i in range(len(data[TABLE_HEADERS[0]])) + ] + + input_string = f'# Max num of bins : {num_bins} \n' input_string += (f'# Bin dimensions ' - f'(L * W * H): {data["bin_dimensions"][0]} ' - f'{data["bin_dimensions"][1]} ' - f'{data["bin_dimensions"][2]} \n \n') + f'(L * W * H): {bin_dimensions[0]} ' + f'{bin_dimensions[1]} ' + f'{bin_dimensions[2]} \n \n') input_string += tabulate([TABLE_HEADERS, *[v for v in case_info]], headers="firstrow", colalign='right') @@ -365,19 +370,3 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: f.close() return input_string - - -def data_to_lists(data: dict) -> list[int]: - """Convert input data dictionary to a list to prepare for display. - - Args: - data: dictionary containing raw information for both bins and cases - - Returns: - case_info: a list of lists of rows that fall under the headers. - """ - case_info = [[i, data["quantity"][i], data["case_length"][i], - data["case_width"][i], data["case_height"][i]] - for i in range(len(data['case_ids']))] - - return case_info From 397bb3ca285dd0456dbf1bd3c775d1e2c1d63a35 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Fri, 6 Dec 2024 15:23:04 -0800 Subject: [PATCH 10/20] Update README --- README.md | 143 ++++++++++++++++++------------- _static/sample_solution_plot.png | Bin 125333 -> 177940 bytes assets/__demo_variables.css | 2 +- demo_callbacks.py | 2 +- output/sample_solution_1.txt | 2 +- static/demo.png | Bin 221173 -> 378327 bytes utils.py | 12 +-- 7 files changed, 94 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index b09b286..72ff979 100644 --- a/README.md +++ b/README.md @@ -7,60 +7,76 @@ # 3D Bin Packing -Three-dimensional bin packing [[1]](#Martello) is an +Three-dimensional bin packing [[1]](#Martello) is an optimization problem where the goal is to use the minimum number of bins to pack items with different dimensions, weights and properties. Examples of bins are containers, pallets or aircraft ULDs (Unit Load Device). -3d binpacking problems may include various objectives and requirements. Basic -requirements are boundary and geometric constraints, which require that items be -packed within bin boundaries and without overlapping, respectively. There may be -additional requirements on the stability of the packing, flatness of top or bottom layers, -fragility and weight distribution, etc., which are not modeled in this formulation. -In this example, both items and bins are cuboids, and the sides of the items must be packed parallel -to the sides of bins. +3D binpacking problems may include various objectives and requirements. Basic +requirements are boundary and geometric constraints, which require that items be +packed within bin boundaries and without overlapping, respectively. There may be +additional requirements on the stability of the packing, flatness of top or bottom layers, +fragility and weight distribution, etc., which are not modeled in this formulation. +In this example, both items and bins are cuboids, and the sides of the items must be packed parallel +to the sides of bins. This example demonstrates a formulation and optimization of a three-dimensional multi bin packing problem using a [constrained quadratic model]( https://docs.ocean.dwavesys.com/en/stable/concepts/cqm.html#cqm-sdk) (CQM) that can be solved using a Leap hybrid CQM solver. +![Demo Example](static/demo.png) + Below is an example output of the program: ![Example Solution](_static/sample_solution_plot.png) ## Installation +You can run this example without installation in cloud-based IDEs that support the +[Development Containers specification](https://containers.dev/supporting) (aka "devcontainers") +such as GitHub Codespaces. -You can run this example without installation in cloud-based IDEs that support -the [Development Containers specification](https://containers.dev/supporting) -(aka "devcontainers"). - -For development environments that do not support ``devcontainers``, install -requirements: +For development environments that do not support `devcontainers`, install requirements: - pip install -r requirements.txt +```bash +pip install -r requirements.txt +``` -If you are cloning the repo to your local system, working in a -[virtual environment](https://docs.python.org/3/library/venv.html) is -recommended. +If you are cloning the repo to your local system, working in a +[virtual environment](https://docs.python.org/3/library/venv.html) is recommended. ## Usage +Your development environment should be configured to access the +[Leap™ quantum cloud service](https://docs.ocean.dwavesys.com/en/stable/overview/sapi.html). +You can see information about supported IDEs and authorizing access to your Leap account +[here](https://docs.dwavesys.com/docs/latest/doc_leap_dev_env.html). + +Run the following terminal command to start the Dash application: -To run the demo, type: +```bash +python app.py +``` + +Access the user interface with your browser at http://127.0.0.1:8050/. - streamlit run bin_packing_app.py +The demo program opens an interface where you can configure problems and submit these problems to +a solver. -The demo program opens an interface where you can instantiate a 3d bin packing problem by either importing a file -or configuring a random problem. The user interface also allows you to submit the problems and view results. +Configuration options can be found in the [demo_configs.py](demo_configs.py) file. + +> [!NOTE]\ +> If you plan on editing any files while the application is running, please run the application +with the `--debug` command-line argument for live reloads and easier debugging: +`python app.py --debug` Alternatively, one can solve an instance of a problem through the terminal by typing: python packing3d.py --data_filepath -There are several examples of problem instances under the `input` folder. +There are several examples of problem instances under the `input` folder. ### Inputs -This is an example of a 3d bin packing input instance file with 1 bin and 35 cases. +This is an example of a 3D bin packing input instance file with 1 bin and 35 cases. ``` # Max num of bins : 1 @@ -78,9 +94,11 @@ This is an example of a 3d bin packing input instance file with 1 bin and 35 cas Note that: - all bins are the same size. -- there are several cases of each size (`quantity` sets the number of cases of identity `case id` with all having the dimensions defined in that row). +- there are several cases of each size (`quantity` sets the number of cases of identity `case id` +with all having the dimensions defined in that row). -Run `python packing3d.py --help` in the terminal for a description of the demo program's input parameters. +Run `python packing3d.py --help` in the terminal for a description of the demo program's input +parameters. ### Outputs The program produces a solution like this: @@ -90,7 +108,7 @@ The program produces a solution like this: # Number of cases packed: 35 # Objective value: 104.457 - case_id bin-location orientation x y z x' y' z' + case_id bin_location orientation x y z x' y' z' --------- -------------- ------------- --- --- --- ---- ---- ---- 0 1 3 15 0 0 3 5 8 0 1 3 9 0 0 3 5 8 @@ -100,12 +118,12 @@ The program produces a solution like this: 0 1 2 20 0 0 5 8 3 ... ``` -Note that only a portion of the solution is shown above. Also, there are multiple rows with same `case_id` as -there are several items of the same size. -The number under the `orientation` column shows the rotation of a case inside a bin as shown in the following figure. - -![Orientations](_static/orientations.png) +Note that only a portion of the solution is shown above. Also, there are multiple rows with same +`case_id` as there are several items of the same size. +The number under the `orientation` column shows the rotation of a case inside a bin as shown in the +following figure. +![Orientations](_static/orientations.png) The [graphic](#plot) at the top of the README is a visualization of this solution. @@ -113,26 +131,27 @@ Note that in this example, we do not model support or load-bearing constraints f Therefore, it is possible that larger cases are packed over smaller cases without having full support. ## Problem Description -The goal of the 3D-bin packing problem is to ensure that the cases are securely packed within the fewest -bins possible. The model sets the following objectives and constraints to achieve this goal: +The goal of the 3D bin packing problem is to ensure that the cases are securely packed within the +fewest bins possible. The model sets the following objectives and constraints to achieve this goal: -**Objectives:** minimize the height of the packed cases and number of bins used. +**Objectives:** minimize the height of the packed cases and number of bins used. -**Constraints:** the constraints for this problem fall into multiple categories. Orientation constraints focus on restricting -cases to a single orientation. Case and bin assignment constraints ensure that each case is placed in exactly -one bin, that the chosen bin is in use, and that there are no gaps between bins. Geometric constraints -are used to make sure cases aren't assigned to positions that would cause an overlap with another case. Bin -boundary constraints enforce that cases are placed completely inside their designated bin. +**Constraints:** the constraints for this problem fall into multiple categories. Orientation +constraints focus on restricting cases to a single orientation. Case and bin assignment constraints +ensure that each case is placed in exactly one bin, that the chosen bin is in use, and that there +are no gaps between bins. Geometric constraints are used to make sure cases aren't assigned to +positions that would cause an overlap with another case. Bin boundary constraints enforce that cases +are placed completely inside their designated bin. ## Model Overview -In this example, to model multiple bins we assume that bins are located back-to-back +In this example, to model multiple bins we assume that bins are located back-to-back next to each other along x-axis of the coordinate system. This way we only need to use one coordinate system with width of `W`, height of `H` and length of `n * L` to model all bins,(see [below](#problem-parameters) -for definition of these parameters). +for definition of these parameters). That means that the first bin is located at `0 <= x <= L`, second at `L < x <= 2 * L`, -and last bin is located at `(n - 1) * L < x <= n * L`. -We apply necessary constraints to ensure that cases are not placed between two bins. +and last bin is located at `(n - 1) * L < x <= n * L`. +We apply necessary constraints to ensure that cases are not placed between two bins. ### Problem Parameters @@ -160,8 +179,9 @@ These are the parameters of the problem: - `r_(i,k)`: binary variable defining `k` orientations for case `i` - `x_i`,`y_i`,`z_i`: continuous variable defining location of the back lower left corner of case `i` along `x`, `y`, and `z` axes of the bin -Note that we can determine some variables before the optimization. For example, without loss of generality we can assign the first case to -the first bin. Therefore `u_{0,0} = 1` and `u_{0,j} = 0` for any `j\ne 0`. +Note that we can determine some variables before the optimization. For example, without loss of +generality we can assign the first case to +the first bin. Therefore `u_{0,0} = 1` and `u_{0,j} = 0` for any `j\ne 0`. We can also estimate a lower bound on the number of occupied bins: @@ -171,10 +191,10 @@ The first `jmin` bin variables `v_j` can therefore be set equal to 1 without loss of generality. In what follows, the set of bins `J` is `{jmin, ..., n}`. ### Expressions - Expressions are linear or quadratic combinations of variables used for easier representations of the models. - - `x'_i`,`y'_i`,`z'_i`: effective length, width and height of case `i`, considering orientation, + Expressions are linear or quadratic combinations of variables used for easier representations of the models. + - `x'_i`,`y'_i`,`z'_i`: effective length, width and height of case `i`, considering orientation, along `x`, `y`, and `z` axes of the bin - - `o_1`, `o_2`, `o_3`: terms of the objective + - `o_1`, `o_2`, `o_3`: terms of the objective ### Objective Our objective contains three terms: @@ -184,7 +204,7 @@ that cases are packed down. ![eq1](_static/eq1.png) -The second term in the objective ensures that the height of the topmost case in each bin is minimized. This +The second term in the objective ensures that the height of the topmost case in each bin is minimized. This objective is weakly considered in the first objective term, but here is given more importance. ![eq2](_static/eq2.png) @@ -193,9 +213,9 @@ Our third objective function minimizes the total number of the bins. ![eq3](_static/eq3.png) -Note that we multiplied this term by the height of the bins so its contribution to the objective has same weights as the -first and second objective terms. -The total objective value is the summation of all these terms. +Note that we multiplied this term by the height of the bins so its contribution to the objective has +same weights as the first and second objective terms. +The total objective value is the summation of all these terms. ### Constraints #### Orientation Constraints @@ -226,10 +246,12 @@ before bin `j + 1`. ![eq10](_static/eq10.png) #### Geometric Constraints -Geometric constraints, required only for three-dimensional problems, are applied to prevent overlaps between cases. -In the following constraints, "left" and "right" refer to the position of the case along the `x` axis of a bin, -"behind" and "in front of" to the `y` axis, and "above" and "below" to the `z` axis. -To avoid overlaps between each pair of cases we only need to ensure that at least one of these situations occur: +Geometric constraints, required only for three-dimensional problems, are applied to prevent overlaps +between cases. +In the following constraints, "left" and "right" refer to the position of the case along the `x` +axis of a bin, "behind" and "in front of" to the `y` axis, and "above" and "below" to the `z` axis. +To avoid overlaps between each pair of cases we only need to ensure that at least one of these +situations occur: - case `i` is on the left of case `k` (`q = 0`): @@ -272,12 +294,15 @@ These sets of constraints ensure that case `i` is not placed outside the bins. When `u_{i,j}` is 0 these constraints are relaxed. -Note that the width constraints do not involve the variables `u_{i,j}`. This is because the bins are virtually placed along the x-axis and all the cases have to satisfy the width constraints in a similar manner. Similar considerations apply for the height constraints, however, here we want to track the bin height `s_j`. +Note that the width constraints do not involve the variables `u_{i,j}`. This is because the bins are +virtually placed along the x-axis and all the cases have to satisfy the width constraints in a +similar manner. Similar considerations apply for the height constraints, however, here we want to +track the bin height `s_j`. ## References -[1] Martello, Silvano, David Pisinger, and Daniele Vigo. +[1] Martello, Silvano, David Pisinger, and Daniele Vigo. "The three-dimensional bin packing problem." Operations research 48.2 (2000): 256-267. ## License diff --git a/_static/sample_solution_plot.png b/_static/sample_solution_plot.png index c2a873090a312108cc2ca61c6b1b3d18de30a0d1..e709560b25f0a518117042396aac813c28c5e27f 100644 GIT binary patch literal 177940 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

-TmARduN>Dh0vXEb+Cjgm{+Y||7Qlbh{8mv%RQmWfi}m&0u)~rJzHL7XM{jnEp6&*-nmOhO_%V*NkTurtJLjXGL?B=wN+N{?>E{g)@h1W zQwMwN(>ETvWf%-$k3$!tcaWSy>nm$ms%_yDMmnN$9)4AGVqoz5wP@Dq+$WA>$PL=p7p@FN8dg3JcHM(}exUknd8S`~M`x0aD$_1I zvczCV(s{oWQoS?7eIdwyvHp724PcxzD=JFNKfkI!J-a=!#W=e@&9k-9EL(58+rF0I zV#{o|G2;Fr6QGPPEa%YSwyooR7jix{i+W+)CSOFMHLz#3@cz`k{bq<8;VgKVzRx}l z5?OQjIH-2}OM1-9!tDorRr}A~FcVfNS9#PNS;@)w}zk%$c#UK z{=Uio1lfVh*sfMWtfrQF!i6W))e9`sx3|37u9QYD1?pY20 z1t0z7l5Fk!7cwzRC5>iQvBtn@vG-+uo&2y_uM=n+?nfMbkxehH-D_>-zDSGdD-D@- zAU@u#jIt2$p%$3BpAwAR$zNX;2|3R7^!zVw&ig)q)!s1{G&QP%7z_%ZTDvHCxPsl5 zzx~{4lnRr$Ewbv`6UjkuDnsHejc@;}N17^Rqox@UuL{k&ZNdVB3SO`ZJdc^}?31dO zCiyyPPb~tL57~ctK`kxe%HhVMgCsp+#=R-!+fNssSN!?8vKTen+jmUsEY z3e!*XuTd@Ve$Wkvtii%}4t=SWA@vK`eEGsJXN4daE9FD67LavpP`(IPn7=>ntPPk# zz8Sx@Pq2k8S=mDdKjA zk1Nz5TeW>tOmVXZ2Oa{tcw=OzF*`2X^((3yy%R^OHLIP!pf3izWkd#6X}V@J8&BzC zyaUUjkmZ-Z_*29>7FySR675Y{V$NGY^ZDC>3+)6w&5r5g2?%zsZd{uzNK>F$4 zZna3f;5xRk>eQ4FvJa6supVGx4+}HfbLQl-sOD5I{j-*+bjn{y*s9-%B+h&T%c~nd z2a4PWgI)_PYUwbGijMMo_kc4$#SpUuF2|Lu!A`# zyUVDF#RQV+H~4-7gbI>O;kk z7-Vyodtq!F!PPXWsWh%#)mC1uQG?A`!yOYx+G-k(E38$U-rmnT9jEf{RhI^2LuWT8 zQz(Mq&CpsO`8f!(7iKgwDj&DCI&1TK<`=KAE-DpoCkQVyRTH~h_0 zttoyG<%Mv9%$=bs}^WW0w*ZPl+lL?h%J(To!Mkuv=nFT zo_DWUE(@pZbsLMMizjK8VZx;!+#RvfIXGpHNbKxUnE%x!TRK=xMc>%U>proC2d!gW znlo|8LY%vW0c1C?6SCIz0Wbx?c2L1~l~=!YUdf>j*K%n88KD}3Y@!r_(20j`6GeYt zVC<08_9v03mNC;uE|a-^kNbT8_B^z}c~aq+@AM?{v-MzzGJUhGK=6g_#iJIJmb;YP zW0}r#9bxM=#XgQ~-CcFeX>lCOU#qOuUNZzZ7emgsgsL3R71lofU`iQlFFU&;v+iG$ zS?=hkkeM^G+DaBmg#`>KeSk#mi_7G&^!wShOQdg1|Jv}VJAZ17!!Ry=YxagGn#2n% zX4yHH!eA}GLUt^KeQl+dX_6I; zb~kY;G-R6$8>C(1%YQA8$^?miYNQv7lq%XLHHaZ-l!z}2NMEY5JbD&1(`8b|;=IGk zf6{SrG$b;Y)}0@_I#RjoFK0Wne`jfP9DvfA41LLKn&9D=c?K0Mu2zL%mC1R-bYzD@ z_xO{wRq~4a1>M_%UiQA^(QEl!0vvi1x5G$X<8?Bb9iT=8s{{~ViT>6}!$$ogv(JP! zhnK{IzB#8wcU1t7^X`5=K0dbXEG-vUb0RNMOo;vfoZ`+^Q4vu9oDq&nt^mgasD59W z+|{HJO}B{w!UPY?ry|3oaHJia`mtseZ;kIVQ@x~THh9XLT+45$20`?+Sm?C9QTLwZ zX+8pPu3?)t4L6~9JQA06cJ~s#7h0p+Kv$(yU^#`~X{Pb;Uh}=#T4VF_|EmQ)m z3HM{0@%H7aiQfU(@3J!urfVAl-}oqXRjr#XtQ8tfGwg~D60qO?{gZ5FU3$KiH^?_P z@xUjkJ_YD3-bX}?9*tGg3~u`*SoIY<9snoW4lfkvS@z6Vt1?zO_H5V=xFbF}NpGL7 z53?B=Y-5%De?wgb>|At^HF5c8+^96z^G;mrV)=p)78YMXD*wrIpWh3je~0K5*ujA& z@}u7$DNI~`bPzG7plm5%%}DIQBKlZft4X9)^o-ENvzJr2#=TWZ->yF+N1jbf5yE4g5yZ2R^Hhf_*Y=wxS+6x*< z(C7t4v?|UI`5xw{n@tn<`_e4}C%pFlG1Q%8*7jFxwi`8lP#Gyfa$I)@G8*NWRn*k< zD)W`is*se!3^JpdrX)$;GBZ0n1%TaeSkN&dG(s9z#pr|U7)?UA z&0T706a{Gm?8o0dTu?+ieoC^HB12Wnri~o-i4zs=Z9rww;GCR~`W@d%_cM?H8}zr` zQwAVr``t+98V_b-K^1E z@xJO8{E54_6Zp4x5s81WXxu;_NES~VcYaaiQOlUAl)o=`QZsyribX24e`3)VBTBr! zXgSZCmPZbt$tmrmNaZ`XGZij-ans4sqr^*kgvh)^V}jg%{H8*WI!eHocQf}~pnC=U zcGRZ9pcun%&b1MiyYy^U*l_dpYAew7uZs9{=-`Qj#ho?LQ{4viSnPMM|8%c{?gJhH zp({kZfH#E8HcB{m{cn(Fi)-}$&(bV+_^r#37ngLr(t|Orq1)ir6rU;&DVeAQ1;SVu zSC$0Y@~M826E*34G>e8~re7~Z2xHit%ot3e+KYiwg8EImNAtm*x*T&uEiP%n(=A^Z zg()7)Ki$=DR-ScRIjK0+uP-=lqL0XIr>)@Y*!!n9CBKjTykgHQZn8;#ILjNVW60P^ zLyR8vlz|-LJY9x6Rj}bxva>x_sykzAVD#cUUhb8|(S3tF7=AEC_s|8*tFX*a_38Xg z202102lmo0wjV11$+SFmN}_vaC&R3RZCoZ!;~DW75$y-=I!+@Ivhnvc(xhxPl%@sB z4wi%6v|(=YcgFWj7&P$f#+C~on%XUK37VUAvl!0=oIa7;mvPNMhZW5#nu~-1X_O7F z8iFErQJ(=@oIg)1n3O@S0&_JTdbu4e<6Zm1ii^lF5>rIB_`s3}V;vheJPeh(oU?KRYNIzI&_ zpz_ZL+Mx43esE8l8{=J@P)p#7N5sC4N1WSdiCea0HRGc)7T!`TR?Qh-XCkV8y~v8s z!0djyXCc2gD!^{K?TODDE4cc&!ZFcf53#5io8Ux|5T!@$`-{q%6kX0=vmC*{D{nW2oP3kOVvaZpHB*`6vG_0RZfsZ#lWs-lQ|BxwvX!vHC88{^ZG>kRC4C*o( z2COCzI4v*0?$CvwR-FHu=GK1gv6(iRIus6zmRa<&EbTOicxfR;BTY?#nvm&s$$5qi zI+%$*?eks;HT|MJjrrh2 zWMt)GDt_1

dxnk0Vu?EH5Uq#emq;f!RU6l~2As2Vcz2DP;1g2DW0X>6gSObG&vv z&cOLonr)#Q&_V?`iNg3YhtgD0^i&D+Jx;3j{}S(Li%@0TffZG@pN!JsJqHha234I} zJZ0h`IN(9&f4 zCIQyy|AV==jH;^Z<3$BQ38hmcq(Rv9rb`5*rKC39CEX<{un7gELupXDySpSLrKP(Y z?%IIQ`@Hv_bH*Lxj&tw*z!>m}wdR`hU%!|C&7F!p&b9-G zfSGuT%rWVx)!qR?*uRMq?6|P$uG=%%ba%8g+vuBfsL^LXD35aNh&)h7=mqm^jXy3B zB#R;1GhN^T9T}s4Tj0>HbT`9iw5v!f*L9m47$B98rSEHRBn_t`0{F@-`szZzMpk|* z)r_o=3HkGwna81%Q_`L?7ry_Zyd%5ut({ z$D9vK#76OfnUmS?6P|Cr+mbFN_ILVG;U&Kdt&kJG*zb)!y;As}?c1T-eai&fw|S=W zxUUuZgfNS!O`hThV7!a%dR&+rPuzMlY^AV=0#e2{daHXQBEu@5z)1aAYiP>=$HyCd z-WD)dD*?9sP~l>OS!Sw+!#Tn&WnwPMu~)+~+eWD+%wSO{U&fE(?cvf9Pf)0$mQ_rQ z*x6PZ{FoG4^+h$pO>gFdR63Qc8;5WmbagYiF zma{|MSE=(DqCm=CFn6ww5$h8qR z#Z6*m=cB!7~KG6WEhCPs{b+7!X%$=_&1mfUz8JEsss)s(?ZU0LcghlT#! zjqH;MY|pm<%(9dmWky#vWmU5I{q4soLqjJq*m8vJOSPYAZvum+5&a%11#>1HbTuAF2x_VyC(376a*IQ(js8!Pja)_?0G!i@z=_hcgk zzO4!aayqe}z}h>I<+=IVd7dSbY0rO)^=ewjH+0?3YOy45a$u^;J*@Vmf3*IPZrumk zH498aiaDwWLAPf_Xavb3&WXf^I(VA_-?ZegH%?vzFXvk6-8)4Ii5B#8@?R|W?JoeP z%#9Gh7Jiq7(N$COQ-zE=gaHlO4|sbWGDnJ7XkWthKmrNZ>-h+bQGmi^hxDMEphZK*Gbv zR73^j_1TuoP8>bdj$VQWh`f{z^OGNtTQ^FOB+}Na2Eij!QwgndbL(~?P1!9{4v3pnL#oE zP^FX(B5ENuQDMjobA3Z0Hw&jK@h^dlq@ujcRmEnfiklQb!2gnd<9Oc$yRokOpgN8G z5vtk<{6vJsS5hX2g>%pofD}Zw^2o z|1C?wlnWmCuRL1?8pW}aMsl~MY2P~%&XC}C&71?g_EJOJ2h^Hx%H^i?^&k8Uut{%e zx6gbc1r8g=gp7b)YMt9+r2X-U+P?x@&vU_&SpVmg5$MFyAUQ-1=K^PBMS7M)cx#;t zRK8|{YWa8LMIi^yHG3$rDGqIw{69w6*&`Sw@j_CpQ;mucWJHbh98r050X4}nbeAX1 zebjbTDK}2Aqlm8C2O5YCmeKxV@%8mLxlChxXAiPonaicp@%Z)Zdb(An|A2&!lT&KtlHk)(pFFd2Vdc$oN;Ik zFaMq^=1nawgbNwzjj|VZp6aZaE3Qk8n7Pv7&bvJ4J$F4i0cfuZ>!S|nJe511{aJ@4 z)Zp)p|Nq6`Lk*xo2>9ED^wrr9E;H#A2UgtN?!%T9+rqXspKEr){NGZ@Nr0Xgi#A;0 z0V9gX5TV~dn=0CArECCrbfD{N!JT zf021dQY;PH>*O32-WBH;XP@zBRyE|%l6m!*lK{<8@rLJqH7)l0xTQeCZDB*-tQ}YP z{#la>&8aH!3d`?g{ah}3^BdbN4*Ehj0`}9mY1twdNn_b7iql%xXY@QCBW3-DW0$6s zNv;c@L*rEeMawh$WyAhG=m2k$Sh9_K8V{EaKCCvlLIfJk;m)#bS-Rzzd2-@q*PT{R zOftjG&PapdaXDDkR6{M_q=;VKdsnoTz7Qrr_}ROkYw4{<&h-8i$%IA)5kHNa4A=COuc)i` z7{?mFS)be|Y!f&u;yfb`J<_=33(&u>8s_90UsgJ^DP0!q3$8m^)+6BegR21Tjiv~< ze)`2sQW9Os%*BAM%JZ|iqX2?X`pV1VS-7Ijn6Qy*WhwO%M~b@B$%bji_s_gYh`kQ` zkDR$*24pQP3{@*5UoEUWep`@Yp9Z5*p$lFORgtE+Z4c&*WGFtKNw2QvId5^nULD5O z=DiRn_6&@a8Tz3HS9dUzb+|4V!_$F&b0lnkArr$j6?d(+-~W;QxL6~}Xt}jmg=?d| z;E>Qc+Aem?dcF+uc9R-LL%o5`Xr5K!{o2G;%zD&=P;ILC!`eDkPspl5>aG?{(jM7H z?%|{~F}2m)JBQS>R;?_`Bswsw`pq#l(|8UT58C^@w@y88c^5 zf;HPBBTI!_YS>z*0=ljEM9D9R+7nNe1%N*BOq1yFiNuY?WeBiSFLi7MUsRp~1t$`0Q%dl?`JCWFm?#>FU1EZZ(@M(|oy^{PGB`mwZDM&jy@*_V95 z&gfaMi;^dka06U!eTDWrTvGDcwU_LAfo4NcKi>(HtXrZBtK~w5Z7}uB-UI&PIVy1r z7qjg@VuW-zo+tY8m>0Y%F7KgJN5KC}<+_H5j}Txc6mLX~k7&*`6Ece@xqqhEh3qznm>%w8 z*C{K^c+Cy2m~?BR^N#VeS=s(R=P=W!Nwmp{Od2j2@U-6{9?Q-uw0r>z3rV-w%u5Y} zCQ)3K+N8kT@#ZTAKzM-2y-};#Kjk?c(Wb=emRl2siV#y z@WoFf^_(m!vWO?~KKWx2r!QL-%anmC{xstu`YEaL)Wyp36zSJ5+Fs(mVT3}QS|0f) z_T3jJ{D)6u5{_c+rklkx-vZ1uU=sQ1T9avTsTh^GO)Ki+SZ4w;|jIZYX4Zgm}0u?!OgGY6SlQp^*rbDSlA^qQk| zRE-Ugev9P6-MoreN%MJE3kG;Na&*Gb9rfA#4iD3}n)ycr8IpLGMDeA0jT17zl(r zK2ux4B2Q>ahxL>Drq~A=0U6{jn%awN$^uBLkw6VZJYl1jv}vc*sd1R$!PS0Y3 zPJRv#+zjX0tp|xK43M}fjDd(v#~d?CcQZJX=-MiM=qq=xKc=`#00)hFV5kb=Gk41#8nI%il2vE{KK7DOUzu48{ZyV)Jqj-QU*PrU$9$)`8g zx_CjXs#rFd1g~MBU`Tp<~h8h@u;K+KPA4 zHUoL2-_}7dyWD2jb8L20Si*S3rrSNiz))^+ohyGJM%=07EYTi(wH0%upjp$>71-70 z%0&J6^VK6?=3g&P&&pD^^!2=`2jt2vrOP~~+TZ40MV@CKV{cRhe%!sIpFDt{N2bJv zU>O!t^3dS@5wVuf+FDqv1U>f%j$QQJk7tBxxk1DDiv{Zr!zPlI$;q zDoCtGT3HWoSZ(n5Z}t=VZ8%yC=b_M~UR;MHysFq8o1d6Zhi#KQmXX=t_nP+Syr9TW z1%mR5h2Y*CW9fjF=AVelfnT$EX^a{bk7aLgRk&NxpmYqm*2n$W=)YfWO_tjf7%AQ~ddW}~UDmYAxeU{8By(PjkwHC;fQ;344U7U18 zE^MGNqo!A|A=d_()Ee||$EC{?A~MK+*}f| zo+#3P99lakW_%7R*L!Vo6(#uOig;^AS0(qykIaght3V^c!w|dVwn)IAA^A~?gTMan z%rwtno4#z8FWT>zZhgHD@f1%9HhuG*eD%8WZz4qvfE<0HtNJLxM4CZk2{s)m;6M3l z)ECcf-nkpkJiL>z1IaQ9$sTqqsB)GEV(*x=$p2>g?PEwI8g?8sctw zRCUsCAktR}BgQ5&#B5LVV9(lZU*fOU6JUdklik@hZR8i9#7b|6njhTq$hPkYhQJcb zSnK-z3rW4$57T4eAd3WjzSi(_g)_aZ_N?Gq=tDRowoP%*Oy{C-7QE6`! z?_N3J<7uJr`G+2Gsy8b}aoCi>0-E%@}KB`-yI|vMc%n=J9pT=rD0@)Yk?x@o@{hqh}M*$5_Z5 z<;Ep%v?D#Jdt8xQ=m+^v&w7rd^s75GQm$|S} z0L?qg-$vBC6`>gk^xG$XF!epndw%fC#yGY}<*v!Ie-jc`Nj^R=6-=^S_-sEi|B-7& zl`PJ7jPJa`SPS~SXV@x~&<0Cc>D}NK8>vlyj!#d+^%ZIS&Ea=hG0ETlMZ|boVo46< zd+~Ih!*(9^wj9%74-&v{gJLJ6v}1c~?W6(N1EvLv6aKhpgRgk53wMl*i)Y{Pp#&&bKVzF63^T3(NwlP+jdv&eTRk&yqO>{ zqgn^rR?domW)fZV0{z*h^>JtQ(*#pX3s)8pL+q}Xs3>oVx;w}YZLe&$U<&8LisDPT zsZ7$zIOBVdFJCuUx%-=YD$GZRyOqtK^SasZtoMRGNhDN`^1+tp;-BRKFiIt5MdOeo zt)`57gqr1ejkWd9SLtexD4no8IN7O9xiKv?_kAU$+|Fi!6BLTIu!mLsyzSfx{%z5H z+7h9eS2-w5&5~IUUN)mDz9%`T!oeFE!qgrjwz8dtcr8!Pq%QSkn~1=DabU`NH?3~` zdm1v8Qq&~z44C_!xKVdm+Igz`u_g@^hsgpbju>a~(cS1-krLybwJsP&XAqy@>^F`T zqz0&Ko9tEp5uuO&PekbIl8vPfko9PWOg!xNYWA1mL}H?g`Sw7Gws_`A=H$r<~m`cBW%a z!cAZKjrB{PEY(@410A%%x*7!ij_;s^oK6mSKTVMHy{JSAIuvw?FCn5Ckgf4P^J?IZ z&M7gT99w+lb_)~o!s_2tQ7PnD+RDRm`y6R(5(pMz{e_3f9N>EdwMA>+ zNmm=Lex)#pahy2wDzLX~cBq1Z0fNSVpVsYY!)A+}bffw!=uvL0*fn8q=y{_ zfG!DnQF!Fv@>UbcTW%K^)^rV~wjtEQO}RT|+;d&VLhj>h?77sqJz-B2OSx>Mk%rJu z^MYNKtC&8zmQ#Vdnh--xX;p2!|KllnGt~a$!}4;2KWk|2J?9Mm2`C8S?I{fPBimYX zOL-OS>Ib5m6-S!uk7>+iojg5o8sbh9k-P+JZ2oo^_pIfAL2jicEVrDyf|))w{cqN5 zSo8#f?NqRD4!@j;EvcJZv(+?tW&`IC91nr*VECDpIR}@<_b8Sk+o3PGQrI& zJNbdkCpq>mvFn@wYc^lphWI`W-YS!$Zug|--B*SJ+>0=%igivrvoFd8DFB{(4O8j7 zm-;Zp~x2ruqT>5Zx^>j&yCwgFE4Pxgfc$ecoX=z z`0Ax|zfn^)!>g%UxqsIP6Kb3C$xq8ps8N{!VcmdONho6LO-79Xv|DVf+@Rii6x!Ez zyc1BkDT50s^psLXPbK;HDk+k~W_J}ZWH}g*k-D+r>k%-L&%)qMQD-yaE2wW%yx>H)t9*)O|NFfJ+urma z_%6{cd_;+T&25z5+N>HU80rHB6)+nw31U5^Ml4w5Xbd4ILIPiI)v!(=JL0fs!87TDU&rxc3RXZ2e3g3^g#nfjQ6KBSZX zChSDsHu8YJ5EjUKkYlMUab`GzP?BALW~kSg#MKag0VpBtYpl_YVWx|8(q8*p=xAnc zSx+LRqZy~Z6FD?7AMrE97 z>S#udDc)W(*e}%&x&(@vyoSdK$@=* z7dtAI(r7EKS1j;oAuF^*SgJrnEhJIc zn-Nmze`}cm!{~0GWz9$Go=e+9#|aiR^QKkwl@0B>Al3EyqbEs#tn>YyHCW0)hH)=m zQaAWAmFElH8ndA)LGfS#MKkJ2DNy4|@G>ka<1$BR;zS)aj~Tkv;k%$)s{Sqn$E|IY zQ0m96yI^WdV``-y^RKL+6WZnQQFv~x3cR~xD2z@sO#b`%9>8tf9{X2+zo7M}n1_g& zQTJ_+6LC!UVu1W$%Ta%ezFl?Zl_;2P;pAWlLJATIJ0*IH}JBqslYr61cd$_ z!~u{b5cqyn$sfb`0husuYG@}Wv*okwXuyxU?~)sBB^w2V)hSIS)%3^P*v-rSabN7? z7#NthY>aI1D3loX7=Z^`@WKm#NqlUF#lb?VSaVuFT}P^bW$c)C&i0Ck`{xrJK?;g>+cWAJ`-O^IG3(|&!0dy!prW@(A&RH9ZL|JACe6Vy18V9{?JqhSM zzJ8;_J!~w@mF=!dFdt!IiFXwLddkyV8cz)j%!d24sj9J7gveOn3UH#DCwQo0q^>)RKsmYC2%TUNJL{~UQ?Mge9xv-l41ZA(PFdfRvXqO+JN)zHec=WO4 zl}@-;U$)3ip6pc6s9V>c<;&|g;3Wbm14RAuG_LE)+L8~h%XL1jx-~{=HfIlSqR7~c zR7wL+G2vaCqmbX1dw@uX7FetRo<~OBA07eGkzMGJ9hk^IM5rNaL^zG<;WG@O%ec?G z95ld$r1SYkoUHzmPxry2la6Sw{%mbTk#Vb(3>MT%fbP-BUg;0`xHwS3(y~Q!1DYDO&?#HTn`rv0Zee&*?cv* zJdH0un;vh;eLUKc5|QQN%bk87aRo%L*)1T^049H!FLWa2n%`*Lj;~j^?9=EgW6w9n z?LU_0G-WYg0W>B+vQe=})9Gg__=V?hRF_<$A3^lK#Q4crD`e6YP8vDQfxFjsOh+AA zGd;-}k|+k`%oSM@d)v3+{}|AV`5qa>L=DBPev>fSagRV~PQT{8|DHb$fDdKLlmCw` z09wUt86&JO-fGwpI0Q_<*7j($znw&TEGO0+`mnA2Pz<-^(INk>2*j2o)VtG+`PbS& z-&N81?of{<-_f!y-h2|oSHrH-G5S8Y5Yy*F*J8_}XC0o6h4d0w#v(U_!rkVKA8y<^ z=JmH*&%4h^?5`I9Sdc01{7UmK=pVBY{>AqmASjTL`Jig28fB*cd<{{yBI*PT_#?-X zx`tPVM8fOl#+gsHH`cQ1+$xX%Z(0M0`F$|;L4C{y8^f;sXAE1YYt~4uSq?t>Xt^|$ zX($hIQZt!Q(js({K0yOGQHDz|pEgNOZ>8~LFb4^RQ=qQWh_@Su>P|98@}+m+0SA5b zc-%>4W%}8dO&P&gnb(aEHY!eCQ2)LN(5=YhL&{Z@hH6L|vS6@`cENSBqp6DIboI9I zCMKI(Ee(^phaaUlgMnyN@WBrAkCU*GO$&gxStzmW78EAnbJ%5K^<*-sns|4n zMszqTk~L0%uEg+pH2r@L;qb{SjpuwY^Hdk+o#YIcQJy4Y7SCJ3fTS+VAO2MlEFc4p z04aM$*{x%;wJQMcfDIDuxl0#%vmp)m$M%lxis+%X&9WVttvqL<6x?qn^4REVvJ-!j zc`(4O<~S{Tr*Sn`~ug+JS3_fRu@;EZUi+?@Ah6|jzLC8UvKaG&PSeE(#1_9JYL z>tNDw@a)JvcM8@|W`$ReR&B-$hNdgZ@fFKse{awb2V~;C+@5aLCse*k_(TTNwgA;_WA!u@#Y|;s0?Mw;&aVlfmUx6Z0^Yz3oVzC;e zcHATtLDl+f>4TnG5uZR$M$m$Z?R0c6zC(8rtI7JSTQOs2)p+n@#6Z!NxmU?pw3( zc{xJ`!@~q!S3)Qgaa$B^Y)q$f{XF*$9%hfpRS&|ZG#^tu*M5f&@Sm(Itq&I)0le_D4#lccMzDQ%Q1B7<+ zpAH`#ZBKrh#)=F3Mq!E_7<@`T>yUY+ntD%Gx4fBq^>-BJorF*e+gm+K6E6NY?|yOs zCbaXWC6AI^=)PEjX!=1_2hlx=ZS!rm|4SzTUG?`l4USjTJO{rUxVCJTyGny%y6NJb zJ02c(`oughTFR-4Br;6DyqFF*6=SGxQFL~=w2>_CNOAr0KAyG1)OTtD{EOA;nmnF; z>&41X52uiZ=#5#4RFI)ahpv*naK6{YMW_?1o%0Qhvli=a_U>JeJrj?f{=Z(t` zE8^#+A7Q0>{avXZf&n)?YLg@AhJ;%HXp|uLy-Zv*rKFFPfbZJ~!?ZATpfms`{_8Fi z{YutNQM#|NQe@&DpfVCqg4574RHcjQ!hH=qD%9Lrl>ZVJX+**g{;39DAOV)u@`zB0 zv766azO4njrCNC!6^FdPR>#wMSB8FfXj>yBs-z@tCkx)}1A_MoL3@Olv6MIoQPChT zzq0>b5PvDb3;0ZA5FoYzcHb^Ek*KA7nV)(-m#n@p@eDh?lyCk}i5$;T6N9Z~s)+2C|I+5dO}W_1)!mZ1#J= zjWoaENXys~r~kc+OH)!2;zrAj(E9&W+h2LZ`jpUW_NLR0-9gOvQxkL$U2tn$6)Y3p z=w@5q%aR4@jT!P!3mEc#d>LM{b!B(3h5oalvU#o4e$5<@ z3j(^J_d{EX`M}TuXgfx;ln`LOPg>A{jQ<0_=*)$+%@f69ty5WQpj*_`okXW1t2FQm zSwOq{?lK>Ra1dkW^$W5LQ{06gUs-6!^XKV)J2fC#x(D8aULPqp89G?xMGF`Gz$gQb zJ45>O-%egUEL$1eA6OVpUw-&H(=>& zryUnhTMV64nnHj0qm9e_mx|R~qGy?ui>5U^o1>uodZ#So@b~QN=nW?%vMx7&arXR# zdz?M==zoQ?hY;LWl0FL#Vu!gf0m;GOloDHm?tCdN3WycI)>JVvo%ca8W}x0@f2oA% zr%-FCWp!N8X$A@?L1k1CK$lDRzXX_C{h2vM@Xmbmp+v1xXT30U_3H9StrZ{GBCp3g zN6}G-UQDM}GJ`Wzq4uCQj(>uK0L+%Svzq?mXk8Y4pn5QCZ0{qi+9?Pl+Isx0v`E+l>CJT!rLZz*!%-H?WqU}ktsL6jmpK)GW7>P1R(5Wr?#DV<`^P3+n^ z@SA7i_gn~RmDSH`aDvzPE8tS^dj0mZl|<>4FoHyx$e)gAu=W?7@a`n&AxHxr%g%>y zIa@L^rR3;iOUM*jMXkG5ULEjwp9kTsm8OK!wM0yOo4oEqEyGZYfNMFU7I`onz(J@& zG&|@HWy^DDOt=*fR_2t+B9L?4A#mDWx3UYEX z8l)3N2O2Ij?I3;DYNrc&GPYD9KD5G#`~Gt6T98o7zNm|A_Gb4MPjn6c7O(QkTzK?-Pv_S4KIS z{z7h+Vm09+m4L@kCtn-wbPT>r0(4WuVO=M$s|D#hqp^YD2W6NoCWi!k5bL-VJN)c)l(nb#3P!Sm+v?b(ixU zsBUKQ+IgR}y1AK`@4Xdu;Q@!<*GJ|e2|Dg8!R{1M3%n84F z`*PvCm1*nQ*l_t)ke9*B|6O`{Jp`C5x4g1U5+?umJF30Im`x7fdjj0hnjxeqdqUlH zCZplC6eN(a`H;2t0f(V#@pa%<;`{<5hF0zCLQ+5+rk=VWao8dyl=*ydv6@v|8V8uN zL&pxr@8`$_*IU16Rs>!A2ZBgmgCe?T)I>gbt%Yt>&4hG6P3v-M{Ro4qXmM zhr(-PhDd5EvSvwnKRhDk{8a5YQ#W{KkG?yi>oj{q$$z?PXOoIi(P2IY_`8^x4Oc5y z_bu|Y+>Qz{?ni~Ue38F%N>e1zGCJ3FMjm}70A^9m0*8kp=8g4d^B1*9$nKM}K#ZK& z79LMQfy2~h#nqyWY)zNe0X#!P5Jv6}%L8v~1fT#zg42>RylQ8KQJ44BUuyC=e0|3# z^~e7A3J~+xdQ=^yH7(SOfxF5T2Ry2I6#d$i_b28zKRXbChbPAm^&qOu^Ebi4jz(pt zkmctK<_+2vbjPz|^p?Z%JUc}izt8D~#|&)~{bOL9=P%z!xg3vIXTHSa;~Nf9=5yT9 z&hDJaL&)F&o5=sb3uIswlPJk3R>(LL)~5y2w#(Oe`H|rOj8@+z*_63#qZmw;+aUG5 zzn_OGXnpQEQmoj6S5Q+DZ~iLkPx+_hskP_6K9H$xC&3@H3*w0XwDoK-V7(sIxZGMz z8PhZRlegD#9AMYt{%4onm{T@6 z$x-Cs#?y{L(RiS=pu_+8)tyzqR_Cr zkaF5uHjAS2O-<~3={Ix3IKato!;x!5BSNCY*8cMt@zNLPS~r+Z^!iFCn7{DhU$FK8 zf~~O5*~<68v0#acC&cy$TSNKm(>*pxZMT9$U|tKmdgb+C`rjYTFcF}# zie*qZ4Pw|t>Nf(!36pz4=i=vB_F8#FMi;}~#HHF2CCtif`Du#QnEGU}^J)YI(!IrJ z(HgSCNFm)Ucry=omN?2vovY}i>n6N^;e)_G2f%WwCmAE_z&{VgH{;ZW=hJ*-OdG2J z$bB8y{mHcG8=4#UnqZi~ zfV65MF};FM;rUy0e{yx|+h+UL@~#vPUY@McM`~}-zqISC7m=`aP;=)i(tk#&z%RD9 zKAw~JpMhFusDKM~C;l~}9RKQ2{;hhwIRNyTToKRWaSWId`a82$F`$YD9<1KFT)9H_ z7D)cU2wv%1n_B`v*8Y8yA?GD-#aG_#reS%3p;h|LBI2nH7!@ChQD*3B)t&^#W#~M& za%uI^_=l+t>i|C}-)>C&`@z>;BI)aY;_L4C<>5T;L)RMW*D}_apMBawAvdn0at69T z8Df>jM%vpO(PG?ULzOO?6$3opX{Nk2*sHMu`^7+zKxW!N5fTUdNbvhvV(e0VFl})! znj=H{6CyNqW4Uc`oq3)V%lHtm9WU=p)%-iK07?;W+FO6ln*Xc`56E9C=55m{3ur4B znJv5U=G(R>4)`=Cw+aWM3VF+>7ONXe*V0^wHjLkIbXHxQ3|7vfUUl9nP;|zm=1jZ{ zI036oi;qgZ+f$$B^27T+{dkcA*#1&}i9z}QG{C?w>}oK?w&u?No23~+8tazP0w%4K z;W${~YQ1N*gy49@J)=xetU5C+N#_CZzg1xmWHv+9*yF49RSd1zfze;DPas#Bvy8=_ zPnxAhF*WQSA~B9uq6C03;Tb9o4lcNrL+(Aum6$|4{`Kx~7$$e3WWm3mVz-pg@DU^0 zlU_=YxvM7&K~#JZv=16NkjaO01sG z2C4P%-Cdv>Vm~etkQ&})b2TM}!ydDmFB>}LMg4E(u@D&_fXvLR`R5@wQ8CbsJoF|- zUPZe$hA#*D3mCt0_%+N-h1pn`x{uH)4++FzyB15KmD!=dn`_?9Tqe_Cxz^+Hy<#w; z_*nzJnqaxcfze@2d7nu`#4a42A_BhmLm+6qzQBGZReA-TnUHII4KQiObp$mJ|Lp?~ z9EjViEk^G@J`Dh9{L=(D-!=g_;MZij@&-M}>!sCyI1LFnqa+e?2=+~v(9VBU3m8u@ z=vqjLI_oxNxLV53Wa6N%qx;2>u{x4=lI0D@TsG_j4uB>A zlIJ=(%Mq54zH^?}e!Ai&Swv=nq2<##?(qB-RP)-WjI0s3-lSXLmoT;u6fM}~UnxTf z@K=QSzi<5e)hq3hIchGzPU=PXNH4`ATwFiB1vnUqo&EzvhOqs_0BCUYM~!UWXU@y9 z&bI*ykgaP_9?vlFlk>6Ak_!%rF@P6o*<0uVtVFoC3jI*V_2jS9%H11dzzzgP++nzg zwL}VWzC|j6Gb84;au)KfJ;QBx?G>gk3uw~U2@Yi7dJp&w34D#ewShmkSzSItW&-@) zhiLG$)bT2U7?XdCq0JAI!LlWpaU%}Kn@GT3np&o4vfff+Gl|sGqnN!WwC8V`+=WHk zuqB^+<>>M5T)Wg*+{|swRLztq6tEnkgn`Z6X-eimxc)-0?kg1XK|(kHD03(h=9_(G z@S2q4XyREz3M8EB@aw@AMH~rK(l@ouJ@1QzMq7t(aF-R*)^(~`(tghq985hl&z3<& z(p`3Wgy${f4DX+Wl6|_`+(`P$&q_jD=B&b}9&ZrqZ?^a#`PE%g+FC6M5R+?2Tb}`- z=@-s&VX_!lpv-!D3lEJWAZ0h*xI3x*Gt=F-j2OL;!tjr?14|u{Yo!2!c2zrW!||*y zysIVa=Wh&3{A?nSm>RangGuW5MAVP=yjmbe5Mm^zC;Nx?fD9SpY1^hL~mSFcc?#e4oTnkEMmDuxO zU_~Rm{si|V3=Kj4F{Zpc4z4f){#&2!)VaW5X8N!|G>QxI)Yn2{YQLSol5Z375Hw~# zAtyue*_86Ze)SGZD=GMw63;IwhuQ7i_3K|ZzRH>oJ5?3+6|*->O9^)QLjtjE#wDBd zyrPJ>znc7tEM|NEa7k*|1%@?L3>5D)Vt;gI@jO$l%tr6T=XeV7{lJ0LYCN@SP@|~Z zMSb)U$qyysC_hWg*(d&h>u3f+rydD7Dx5#e&bS`gMm_~8(m39 z${|GJfp1d0#)`8WOsH+20!=aCkns2BUO-yeL|bXe-a-^4I;398>}4h%$xm|haK!A> zXp?EIfbs|4)e3bn+vTgbSo1Wiqc``lZLhE^vt~Z!_sq3m3Ao9Rq=-wVa zkxB1qJjYnDtHvw|`?A$TI`Fam5oVrarSVgE4A8i-D9-j1S=28S<7}W+hHpG(jes#ez3FH}v%|5mX6~G8`VoDKYV1QxV3bTMsH$nqPF5@ZSL6{Gz{M^=H#WNynm2 z4a+n9b*R`z_XZD6h(ffMIaom80j{4l%~zF5+N&2@I9Oc1ANCL|2w4nvbg|DH z!hJoy_u7jWzW7P{w^e9-?5*A`DijUnsqy~^R3fmOJtsF;zXh{>*{zNE!FRXdgboR8sqHMrmw%o-pofd*t`tASmEQbPk(#B0g3_#d)X|f?X%6i@!a*0 zGcQ+skJhs$La|*fakk2HP){o-o6OYnWK8B4V$6=K-CzT4ov_E)G&YT75S#3~e67Xm ztoqf-s)wPZynfFzleW`5^G{r-25QzuUxfEelen2MPyeoQOTutFCQj9QND{pxXg!d} zepd{Nc2ojn02)p%D_<4%Pi;7kb8|N#EpxwRz+S>@ipD3coaGwPN zCE*?Xq%hP#+Y^jWMrh{&loVY+pr;IQKpiR;&4jRS)ZDzc>-rpOZg$dTE!ll@dQZbMeR)PfFY!54)&{#AKep9tmo?>)~X2){Gg{tzSfunIGAaEAL9I= zjDq2M?N6OPGkNVJ7CQ)BHT>2@Z+4!y>SFfFi~@bZfyPKeaV4qRx-*9Ku1Ofw3z?t| zrL7gd&X@xu-I$^%`2G)Dp|9YLF_6&VW*S6yZa`>Dy@g&#(wAe9#H3gFUmc2zNL9J}lyNuxPGsu=Yzl||Q{y{IcaBv!xhltIq((Z7jA ze3Ny&MaxpO94__c_%S;E&kwqCoqJpd2L0)S-4yZc7r3sLZ5_oHE^ce3z%*;4;p(&2 zC&?B&S_jYA2DGXP2)9o;G{S&GQAS%icaNJz78Le)3&f zAS*@SYRTYX)EXld^s^Pi0DVh`j^864*6|-Qt&z!kL|@kUi?h6{%=T{^LH45PCmZCc z{GnoN8!?*3bCM}g5fxp3=FMO&;AWn`aTds;xVrIFu(R2)FV_VJ-`I|SxH>yuKvc7U zh*~Q2d5*!DufiJW#FtGczk1D6Z8xO0hV&`%$W&d>_CP`HHA$cIwQ|*LuHmrRmUbGN z57|E znr-I*8sP_bxyIwvAu1vbUhCjTmjWaHIOS6s*o{ z=fV|-QN^a}F3%%N4D;7+9yn!O1RSOvuati-n7%pa{h?yAlJ7CH5ubl}nAY-}bmO|# zx{E%Z?dECK?E09|+mc?fcos4Udy(ofHE@_R?hjL-kgj|cB~GsNUiny5)yEe7yuRM5H%?%lx=9?q#;_z-mujp#%xhL>?NaL(}oiiS= zok1=&?O__(V=^9=vNHn*pOk${bSXBOr~%Q<=hdlKZhk&CTca}c&qkl=@fYnzoLKoO zQwPd&rR&P?n00UP4-nW5*(fPMoslz|Ih^~R_ybZGp!#~RXkkeLxcZT;?_0qtn?nDO zs^Td`_N|-?j;Xm!2P9be@$#!wq;dSPEKai>rc!^OIbLwQ(k=+yjBO%wLcwc_7}VK7J2Wn|M8iX#rF;6Bqhi5wlF408!og&YwALk5m^?b9Hcj<| zMjOmiEn8sAQ?*>4b-TL`i3t)Hq(7uFD>k`Y^97H-czbmAf@kBq$mst;-Ft^q{r~^t zk#dZ3Y$`iK9IJ?Ij!j09UD=}?D|?1;NQ7gPEuoBT>d4+%ku9?_v)Au&jC#G_pU>~} z{axSd^BuqI>W_21uIqK2=VRQ*ZQP%+?@+OY&hmw~*(7$JPu;*u^J|@_mYaUA`a~%d zlxZo*GfQJ61D}b%h`sCLWB56i`kZ3ubZjgFrwX4^tWdAYq;$CrtP>d44a}bDTC-xm zNLA%6sP*03Rm*A2>Jg^6C?*ZMg)a{m(Qpf=tvMd;8tZL~Yk94Q;hw`EG+d<7!G=$>nl8j?S` zpIdHmjDHN*uWK*)t2Zc)aNT9D>ov+Q7>ia2 zNQ`&_G^WbTg_yH(bx`Ab2xTBDZs{#Gh@oO4CwJt4bbMcT%Z!%Tt!P{9&1^IjmNYni zT&SLb1hR}Pmo48P<-K1eqA_FPhlu5OV&im~I_rXOSaZ8TQ=ZGjV8K4A*sQgh=uWte ztqh@ALmAxxgmP2VP(hn{^Dz7#?_9Li{A=P;;w9pqyn$-F9=G#ja+|}01J$~6qPZq5 zk3HPF#$@}93$t-|C&k9P&rX@PlnTpJJG$w`Cu5TBP2b~W8{)0aAC}jms~E)9?(l0$ z{pm09;L8~W0a>Ni6y3Xp&bx8TqZ}_eMj`M6zCcuyt`Q#|r9bRAwJs}r^XVyQOu7pY zY9K)&8zY0}{>zE`BT*cbhJ&0+0}wFF_FMgQ+2ZA)+78LJBu+ZdnisB5mz3zd-upC! zBr}y#i#>&mIO~_{{JMVq&KJ^GGd;V>?wn&=%<~e;Q%AGl^KC{BRaKcB1Bqwz zv()Nr!s*uAUHqOd4qY=W&=ZdB5Gu;~lF{$dStI38Rrc9vyFe#&f9oT!e+GE_^ILZl z-o65-3cI=-jjXv(jb_cA<%C07*JsrqJ*uKp>;Bw^Ng@RokCTWA4nDFaqjuvhZ@uod z_GI~}R?24k6|FMoR~!=@)D43iwb6;GzQL9n?>=8`lQ=V3f8_`LBZ{03rn_R>?*diP zM(><$S<+Qy*f++BFH&ML1)MP}icC_z+2Xs-iCnrhsC!)%HUd40iki)x+DSimew|q_H+n0) zPtndd=QB~N-ne0=5q|YHzs-om8bw~ph}*>qgFBph_mi#&>5126SVw_Aw0yE5hq|~aVIRx!40jheR5uj+bFGo2eXd$&ri=*?1t@o zqF=Kuh#c#oxJT)S{!8cp8)>Ncuan-^6Za zm1{IK*|lg~9xlCz0RgPeO)w_0G0IS5fdhZiz~qzP+MZw;xM}FzYKmvp%-vzyj5?S& zgH?^g{*+wf8P`RP9h-XB%D8-w;$JI|$R|?W)##6!zBA#2egqpfpGr^tduYXvbQ5Sk zb+h8^0+057P_VDD3win`>Ap)Cb^h^6sHf`PlwfbIlT*b)A;Gj6hn%T!ZODO5-)zZ{ z-FDuDpny8)^V;J!tF==hh1Sq zEd$n=UakN@E11g41jl*p{-|_6Aud7GmwfH~oOcNMca7>*A}lyfDSqQwj0vpGbCTLx`8f zJS0D<9em6g$4e1vCgof4Bj_ukWUv;YRRi|tVH95up2-Gn>R7~ezq}$J)H0&1nL>#YMC|68c!XG^D5swJ;~gTAw-ftPyOnF|J&3Nb zzdWGHAT#4N;g>HcsSVEZ{4{K~QV7tXp>nrc;Z9A?_~u$ed={3SxUi!r>2rLNUwUg> z#(i5|V>KN{4B%hw)RTLWpCw>NP-;98RK*-bAxAL~F)qpN1KQRQmcDT6_mlN+(D3~z zct0}ke12Mx_n@Dmsn9_xZ(NO+v(|B$G=;ZyUC%iaxN94ms}GjO%+F6S-Wft43fiVd zz98G9UA}z7roT*6u*m!D>$K^kYKHf?n!(2-qli-UTDNcy;^;sK3cB&$gBe~e@U0$8 zjNECu^{AU9Ux|X2YLG*1OAP0HtzCK$D*8gv1r~PCEjcI*pZutL>6ZMcgg&=hD&1Oo zap~kmBrMn!en|G#`Y|VO#0n~M_Nm^?&v^?jmnY*>&8uEwOePBn6KUkMvcMxrxsr>2 zd_x$pm^N*@*{L^n(}M~f1p9U`zPZH1!g0N@DDvyDJnpwuRDMV+HU!pREEh@BfS#3T3m7Nmwk2X?IqVbYJNr;v$PI6XkD;A*q-R>GeXkX&>A@ zsi85VXP>64m_Mq2f=4nVQc|v7waLH78-n|&8U1{Bl!L5&_%s}CChWvdtK>rirt^H423oXc_ry+pduhH7(o zPX6xUi+?^X{R2EqTZuY>7}c@;;nV6O_O=-%#R>r{Ts-V5ngih+mfw$IN0ltkZ?G{~ z*5+VG=k{{nro&i&KeiGJNs4(S@6$(OMYVX4FKqcs zgPwfvQ!d3(TLw-lZRKm@7}*=nP|(P-fK!t?+lsqQB4YKpUf_aES@xKgVhs)>`0u@U zZ7=-2B;avAf$zsldhLb-p>$&0BE*(}F5k1O(`|ki-15rcN7|3rXrmt2H&lGRebe8c z$LkHW)SsLeH3Vqsc(IBCQF3H3YKuzNPoCIgH;6!b7WV%1SPJh1WjEM-(ZeUfxq{x` zkK&4*zbI1on)4r9h9QlCzZE8W=G-zBn)!_R95!|m#F+%fp_3qQTT(#|(t{WsS5CI0 z;b&ahf?})a>vy+balOp5r4rb1Q)3QpPDA>FMVl^u=GG+e*ucD{Y~8OK4T zm4JXntW2}=r{_QVfMzBe1AU*WD!eV5S=B%r9(C=Gg=tYB2lWgA;@+r^-IGyqBId)O zpBJy)bFBERMJWu_Qp=L`!{G4Lw?2}dUN&is;x#LCZW+B$Pge4oAgnHyD=Yo5 z@yj{fe_PdC*i8uHM)e?^iPV=Lsc~>fAto3M%#v;>OeWFkW>oT+f5c^zrpfwbPjm1- z(eYUEvd>@{XKx11T!V6TSM5xAIqAv}4!V8K7H4NO{X8LGL&ZZGayt9x_$GuaoI%6) zS|rN?&4L5fRJ`GetQ#iX$SD6-f)(n>F}Ih)eGKxH6kNB!3iw`wT7p|mvUdsY>esfT zoMEkSO^`Gp{NRnV*fR(fr(WcM=?Yp_r&@ZNqT`^SB`P!=uol$H>ae=xzrQ-pV%kky-c?gbj%EFqIL%-Ie zgD@xrm4aegz!tB{j!u9h?ZnGiuR0{V97ap#B-}4A_6qLC^+R@F_g*=X9VLD&jXrmIdJ5vvNu9aZcg<0d^&4DP?1+}3(`CtS@J$ns)MzC1bHiXEAbYF z^+J*q={A`2kisKhLRqiprhNXqg;|BEqpW%MIBOE(7;J4S>^z;)Y&rD2?AX$gx^}xb z%?)>qDj?j0=#v*-ix;uwZ?&k>=!AFyRTU)6Aj{X9vcP#6ii6Dp4FOjJkLtG28;JD1 zeq^-uLkcMDjg4Q8Vh4gpG4?J%TnAg>W4b8-Lpv7wctfx`^iF;pDH{HnJt*}3%JW~C zy48GYCfQ=?pf2*KTsnbJk`(G`M`q1{AxjDCTtMA}IxkQOyV?l7F>7gqT3r*>FWo5*tVoNk+hG6rQ znb+Ecssod>q>+?&QsLTa5K4c){31@KfS)4PcOUqQ(N6?PmCfmh-Z+0GfjxsY0SbfV z*T(6ARN^!QXgH3VEsyBIqqCvZVvR;0zwKtdQ%)QZPWY(gcVAn~BFL{fL{ohWm)`$xwuv7JSaw}+-;ChTur@(7O=4F|L#vHtO|oKix z-0VFD`qx~>!Awb@-spbWP2k`t{Q(KnGbhBZfNU{=gyg^gpE?7%&;O&|usfC82XkD7 z)($vrm9IDed{L`b^@hs3Z|Q_6KUF^&r9X*L3_O5;d@i5H-cN(9ST{llN+^)9lIQWF zy3T3??&_AJ{k5*-BAxOXb@x=i^B3vvRBm2L=ZoXdyw{qkrW7(t*QGy!cu0b&RVcy5 z26QMP7FLO>HutXD!qs1clb(QO5JDPF#c2)GJzuxCm1m~m$|L*{qw{R=xR@V7!-LMP z97Wd8q}gBZDP5?!r8HklK7e;|LLC?HiC>_%$!EosL#Hc#isEBeKt9?`oAQ_s5mk@) z`Q71bXwvzHQ!Q*ZO9};Sp)FGUby*|#5pyTMi(`|PSh>-iFM`Wj;)#FLrr!_N^yFG{ z)aKi_!t!EIzR7=cT71nU8>S}lkT@zjN@L%(xi{72yuQo)x!&xDXER(9`NGz=!TYsr z+=#kG*^I8Rc1^?r1{}0x?QJy;{rNRce6zy{fZ;R$4knX6k z0zN!0ftJ?mbHSoa^V0Iv>t%b4ajV}w9Cd2<4^THezqoH7)F$uZI=-98hk_pFpY;XU==9A- zDW{v8*Gyt3Dsn2uSM_aRJCqp$*-I5}lhSOq4b3fmR(hMgl=`=wQdW$ftJW3wc=UFz z8`$i+2#g4Qw=Mr>M06oD-p#3i^btUedaXXzt?uJ4mPef*d#azvU-ppmh*kl29-OIO zdGTriWY$me5~Y=^dd~OxOv*8AcKS9STNa!$F;~4*uuy-2_Y(~iDlg6nE`xLgoTC~? z>D4+(wz--C)gUK6-iR59jIEtKP*??uh~}iC5Wj`xG%=apRdhPsz!jSeJZ5Y;%TAO`~pm4UuO0Az3r-%5Hz*;`iE=6 zfe0ahOW9ze5i~&#-P^P37)+yjm#BwG*Qsf0rD)S2Szej%(kk=4d-uA3Z3@flmM%qz z89EO7+wsd=TN8S$jcD%t%mqin1m%#fO-dJ8@NECisDM}(27|2Qh`>xnmiaN)_3Pp` z|I!57t$h3)Kc)@*fqT>jF3_ip#`{;gv?!?&P~K4w*vW>f*OGic5 zNLh^)u)V&A_~})6X1=$EhMA?|y7Kher@C`D9(*OW6Yda><+CXMv7J6x&}DU9G}@%~ zn_^a9vz+$fudv_fRC2q2VeQ~{gfHrO`WnAX(|rN&_xP?$U>26PcH20I4%eZ2C#~eh zlS$$7rOO1@)W7wcSvJgnvCrm6b2V_`5m^g!`*&(W4HwJtDe{Z*^=I{l;i(k2WC&2` zRJ$B9*{D^WfW*h0cQS_QoHRU_dfbKsV+dP9f>Hvh=;?_O-;AN?b7S~L#E^JrVrCsO z&{^Q)>6`K4p>Qfgzbr7%#fe?|qv;I1mcp!8%zMv0^e1My;G7(pDqEMq`-}TOnN&x- zdR0u@S1zz#o>Ba}oygc{ZBW-RZKQ%zIURU=ai8*LtFPJjk$v;Il+i_H2QSa*^-c4JwSty?0H|nM9bR&L_rvBg zr`hcCK??zR3F^Ob5UCfj74Y7v3~EOn?(>&tT~kXfo|e&3m!a+-d#bRjn%G_#ruaAY z_|>u(>iaRlKLV_XMJH10Imk8R)-u=(;asV3B=$u#oZ&$)K;}GrGP8a$|==_-! zkaohsSs~e+D0&g*lI`YqyBsi!+!RD`Qz_a zn}@=DKgfs5t?1S(GOvs5&v9=yR)}%w6$a0=c>#82r-T}SaN(we5K4$MyybKjfHFsP zH6CdCkNZ(+F}&;|wfiZoseaR~zS@o#%7p+rQ}}3fXj`z|J3bba6CjWAI|+@9cv*j3 zn#^VTjO3DZzKG3^O)HK30#YJ_Pf;u$gp}*xaI9piU1i&P}uo8-c?^^T|GiStajUz;DX0E^?;cnWmR%p z)x6hcU)$_jRPF#2$ttQ@B^;zvVx2iS3zF1yTio?Zees^83d5ocPjsGR5V(?Ko?`!M zN+hWU4wCD2s^=mbLBMlO{8Z}cTjAFzb zy3C*xNsGA}33=l54^~JNx>LQM9Tg`RUYc|qh5;8Bq@HE0K6H0qo)>cco)Z^gtoI@Jp{s}En$SR=?#(QQ(lOQ9n$gRD z=(`Um^xccTf6#X%x-|wO7xU|+K)WVvc2vlB-@#UpK}PsbhOw&cEJKr8g11QBYu504Ek;Fp0=nixhseXRQ>cP&{nb74hKT}Ot}kngT%hc-{b z;HT-P-scq#F+hMgL?h~|6wRgUIVAsM)hnH@^w(Y5?gaU?9IM%jb~6{u#+P}V7N{2N zCJgl+OS*ib7HcU>+9(m+*tM;w+Jv}V0^*#Yfa%|O(~;2IgqYGqD&Po--KS59X0)`O zRLtIbH4QXZO;^M+$s$-V@Ra`~f+@~j@k2_Ym;N>Ygd@knb4$eO2F^(f0EN(C*`WPp*P}m8{)*)_ zV)AP(E?2Z@zD(Dov9&tlQlj9>wx*uEmM)^Z=;0jfj^ulEi?3mSS+=Zfb6dTIz5Foj zZG=Rro+43bS*UYZ%#-THsQ6L7Et!hhj+(_0$yIGmjVC|8Jv$J6!}1C)@|E&%`vonP zfJV)8y*nDeR}soCFRs-{TI`8xIUOpIl0 zS_pARk;R6sizoZ^L0SB&+jFr#Qj-Ssc4*!G08)r*VfO5WiPTIVtLvnQAe6M(mf_h# zX8IW@4C|rPwUe?u&>6eN4_Qh`Vbe*509)=j2!k~`j&&WhIOv&;7ERZ64ybi5CeBZB z@pr|n*nc;hYP|URa>0)o%SOtmsB7~<@@w<^cWR=Sa{2T$y^1wE^wgGmQXOV^gbWPU zD&ubB>fK2T7-JM$h+l*J8ZNn0V^HqQo9Jk&k)fEkmgMn#&e=Aoan-Qo((a0n3BDqD zC9(E)i}4%7rQe;aSt^OCxOBcro#X>rTtRuz0cG|39#J^Zyl#r|^H2#q)rwrU&Z;zLTDKR-`>lRAQ}`RIW%l zU1O)&sJTdOJ7ai%nF|&oYQ6137JoZ&anW$C&PQ#{$C)QsxZwgdmQN}?mI+)l>{&Vb zGZT;U?!8?!km<8nfx`NA_}eH>Bz%%8fDcQJYEE^$V^s)_Tv8(tMQ0=slg>#8ZH|3o zUH!fiv^J;DrdyvZHDC9*Z;)NVFq(D2wo*SqS?^7oX%U;Ud3T|c#nZ(f`JG8HX?)b1 zH|%lTjtuW1s}9Bc8uoFwO+q-bgiAho{5ZmvHBXO$CRssBYk0y_P#dGi`&-aoIzNQKP+6KLrrNKS&USv2vjzmn9 zlhKGtbaLKTv8h^@Pt4K(x^iVLqm+R*-l0w@5L8f3NER|Ipr#|U`?0&WYAyE+oQTG_SzTqbL7)*RJ=CR zTCjgCU>QA_-LWQagP4Cej2cU=FR0a0#J3e5t(?h`eICI_EtY%kUkSjuXWr4Q6EF^~ ztq0nGj;|jOv2^G1)4PnCZL`ig-xX^pt1sx(^V!edxh73NX$&)Hn%S4)g@!>dN zc{SrqZ(NmCPhBnR-(K!EDwb+_krUApaq~%xOkSrY3ks6kCpUH0EbNMqUC2d+>H4h) z57CE{lPYE<<_@oHY{$+%$4~c?Wvh=>idFt%^{Zeq$B=tdyXxnNSIpDJQLfISd#$Eq zHem!TS9juGVrmcgG5ZH@0BC8b*%tU)XgNjEaU1WoH*6nH@D}#U*K7Y$uE(FOzuW55 z?92!~-rz~mIc}mYJxi)WutXVa?q!eJpV2g-F7p}< zgjUmPQ$>#*3P;$44AdWPS*7|>7b4(wqxblIbzj9y|*yEmg~7WT{zQ%>Q`3o4&6isgc#79`%99t zl$cl*-cERp_ad8qoCxdeRivv96lQs;?1K>KDu2ACUm8P;6)bmh%Fsb!G6iQ&VHPat zyGuTg#g`x@D9PB7hA2o98n3Nr@={)Ay znG2CUsfwz$=s{|bf#q)pH}VFVt7(GL4b&ig0E@kEbxyFZp3sXv;z6mJPBo6zr#kCD ztqKMr_?UY1P@qf!3_Jwe5hJ3f1aN0`6T%iZkk@EYdRZHS^(u&BI`O!kO9UI>sM!@w zEVV()&(1A@cNeUsyA8L-AH)rO_;Hjh1CAmfBczw%0n5ayr2F~lP1?I=FHCEFc#TXA z83@`t(^KILK)UntoX_fv2KLX@y|)k%iLd+`frdYP&T9n9aYs__a&xs&+`o%qcJ7~tFr7h< z&=6bc_=``zKKO_Pw>~O+iE(b=#k_{O{_P8I%$jG!v+|i{^zl09QxJ3FGXo$2r$h5v z7fTwaAZg-+*9GIUIn$2a(q+1UWx7Br597?+AxYSOPu3CVn$3XWTyu^%S7~V1Rg8>% zpD|5gO}p&L&{4Bh!3_BBM}E9UI(HGB@Q;tcArd$_MBa$^9r&6@ERu7bKahO9?{GSQ zdf|@>%0R*+UNNls&oNIo_YrJJd*uHoOeTV$8C%+%MotB(LysqpF)O02dlD>Ua5=?T% ztS`08(hoJ2I4_%CFXix3QDS|~l2fa5AhL|T1EFHnqu2e-8PPkWgl5h&U}XMk&k+;i-6he zW+47oZc+Rr0SHN42yAzp2@?8S4rhJDAu$sF?7Zm<9+ZoM)h%aU6PLbD;OU5NCY{KYs3JMQ`=zReCfS=>YP86;Lk?06R_q;qVD1wI+Ki13u%^ zMS5%HDf2y=3++TY9|CwHhcAnr_46d>!G@TF7}PyO(xwkVJ(zpV1)010aayR%`g!+r z;JCTuINEnNp>K39hl*FUC4|~ne=J3fRfkNR(NB>Z+_vX-6bzWvj5}J*2Ayvwa%7gR z!K=q7C=csm(Mbd6!^(7Kg2aU2#Xu-K=IWs?pIp5HoVI1H^cTuM<_CxCF&yVWxy-6m zBsJf}g3NnkwE`J#G(6p0tuv_L88OfeEZ$%`w2u$@@LkCv;1Djg_8c|g6~-NE&N2}Z zy9nvgHKO_xW2<5zGB+fzdihXdnVF!#wAv;Jg$)hCohy^xX>_p@vI;$Q5)K z-nFlfBQ?1`bqPK|{P_``;Gzl_1@&IL?DbWpb! zC#2SU6uM&Q=G)axhlCT4LT}F0vP`RI>8|2%oHczC^KbzX`F@ zem#NnluVm?S-Sp9!svkiZ>rhdQu8ih`7VVwg-Y#b)y^hL9T0fgfN>oVvpZ)@zyZf@WornV;tuuT@AL#Ww5c z>v7j7Pjb39D>xac04(X)pmCd_CjZQc!%IF$B^4NclCCE*6)$b8+0vi118Pc&lL=SwcFLX~* zO4y+5l~U{XO{#)`_{d2o{E!-5f61!NOW86&J6NoFu$MaM`Znp5=Glf>YB4LXm`NG}el87T_|YFydMjVmd=J8ZpG+N2fqm5J_} zb70N~1_4U{b$hcbJgqT1hqnfX;0h`?HbM1drAkbg+H1C}5f- zoQqt!6qo?uz_`ojhrHQ801_47$ioZfG0Z1xAkBtVf_R9tNX_p0&V2nQZymGOl;)+) zP8Wwcxz{sRdaRGh4kz1Wr_HLu_r`aV`mM8uuSEAeml<|^wc71C-oge>( z05-Nhlj^1B`fMk^@|sE{i5bT0(BOE-qr1c&_Y#mv-&DFiBD=4*wEiL4sV7g07F8*- z(eFV>s9AjSNNxBxxj|ciJo?Y%|#1u5uN7@)^=(2puyKKFoln*Ut zm8$%5rznW41ncvln6DfL>bk`*Vm9#xk>Z6oq0#<|&q8?|stioK-nT)$>lJrDA8DMa zGoK0i`JC}nq@pLF^7VSJ#%fX;sijE}NZ}lKjG*Dro)P&|%1WxxtNRm}#S3q3aZrkN zP+1HzYQSRGN4!eQzc)49L{9TtPOJ{7%qk3Wg|ZEXOYaiVW`v0vE(P=14vRSGhxNG4 z*l7}?CMTH&!{sOwy!U&$@Sy-@y90WETg|yAI;?E$n^O4Vv(& z-KOEj@hZQ%-<0xIl*a~Z-v)+ z80-Fj%xWEln`eleW4#`0R{eZ!#j>F7jhA>SZ7~bTGu^4a#9Jm;krYnsP_9L3#-*c+ z73uZJXP2VH9!azVN`jVh}b3Sgy7yU(CvyXa? zJ^O{@)Gkh9mxQuQ-AG504PEv{;#T%@?P`Itpl_&FhUVwaH<{K!!9=0rv~xvt8e-^@ zb4PXAjgxq~$M_(?(C%t`GTy}GfTe{%@B*(9lyk@sKhY^ozPK#S$JzE8iD2?K<6>sB zRK7hfKSE0VHd5SrHJ`icZF3+w{sTcAkN1v7Oc*5bY8ErPT3Ja4wED3Te6Lo!RXP2N zyi@*if1|mw?%F7r4K;6-vq!PyQh4~0SV(>OHqCBz)4fX}x7q&J5L5p~MnRX6-r9bx zP3qUk%}O?{I?U6R>EE=3NEDlU;W>H@e&Hn;ZxE+Zq*ldM_&@IptKGGnSp!qTtODU=bk_}%q=B`&=che9 zIo!^)J!%A&VsU4rVDP*^9)>;H(~&q5yU~wR`d|pxC$3S3kEQyWjvLjORW~C1KByY0 zz+@|UKFBsqs@S;!vN9PP+Lr_b>t6Nu%MvOW174u+QV9(nhde4FT*8Z|noO{xzzQZ( zZIaI#?ok3R^Ynse+FVz-WJRjgwYZf|wU)cpNy#z48LQV0wDS1{HWyX$bQ2}ofwblP zx`z3BqhTv^eVGsNHP6z0_?a?TUZ8Q%khk}~|I;dX-;d~x`|NZLjkwAAX|hRg*yI~b zDlcUY6!eYmOa0Jnw`lq$P&U@T@6tXn){`x3*0dj8y>&NFd?Eo*!CPa6Af>(|jYZU4Ag17yBcN~l$l-<&Qx+qC0dJ=zRVSz&B z2hRDv?K`_TS|_y8lg9r|w2{O|E=;07kt;iG()}1n=x*}Dj^^S!-#vNw$jt(;d-B|i zFj*iUI}^LbE>Fs=%eqK=kh3u5aPl5*4Ne5rDV8dkBq z%5}5t9ST59`6g0EC*1>g2)Lbpc^}8E)&FCjtyzb4A;$$W5l}j83!)@;9j5gZltP?D z8vSn`g=2x!aLfY2@zdjQycvA1zw5V21HBHm?)^{$DCZ?roDshWz8fgI+z^fp9`#maS4Ri_>JUdp62W)V&J85qAN$A|@Ou-EpQ=s{ltPGF%`L)Us zw_Uf`_vw=0oT~^Z6ZCqT9C_fj)0tQv3# z$b?;y8{ztOl>piyJy_=MimfxTpN(Mp z2UwhuG0QyTnY1@H4l1a*KZS(WG+@A?&eQg;_Q*XlE&OKh30-i&A8C%}uBxA`5;;~+ z6!kN6wLBFB3d;FurKjieB%CO3xzrzlCuU#G6bCN@>h|jE&o@pW`v+HifNorA4Q05g z-VuoBkowteofw`ZENV+zecdE?%bwMvEKf)mKHo|L7kN^OEDBPL8noumz~j`}fB}c= z$ogQ9zuW|<+~A~{u&WdjNiRNlS*qA)g@jK>X7QKV{L|l#gH?+c^N^0RF?0R5_2Q$J zCH+_Eh0X8X-1OL)tl%b-bPZWJ`kHsAk|eo7xh5vwIz_hiW=4j`y)M;V{-vhgW)rY7 z$S*XwNJhhzvs`(H^^#d8#~G%cZLSuf@`fdbJt-HN2K(DVD(D> zwHD5SZS;#-)x*(|`8Tbw$ffu6u`7GLJGJ+cD~FcPp~fyH*)stdU(Z{Yg67U%^t9NI zLq*VfD|N`_^r`K9oHS{osSesy>Spg;U+WOL;jzf8gQ^{@zJAjpQbyqSPX&+sUo!2y zm-}33=Ptl#qIXwyi?`M{E#(^ko7xW}kZCzT zD(bb|BJ)Kq0aGzu9-CRwV+9c{yh#iHU8LK=*xwkJjQXbKTxT(aO+bV)vmZ z&4w+HIWbz@lrRQ{ftDUW1X{p)g7G>lqJwl$Qn4R()6So{sP|#QEj0z8^)1_M^~auc*a`gC>M z9pUf5*?WY)S3s_?vUc|wI7}Tw5LjsVjr%k!lA4%b)5z{@gWo-w7#5o(Sw&TO2?}di z-86GJ@DJz~b6XbX>ro3pC$CFhJ`J&Fv8vJVFzboUX9zscsPeYKo*o1ITU{qMD`JF~ zLop1aud@PM4UCAs-Y|>_=Zj&i=KKOv#d`pgMUs(TxasXI33j;rapq|0wo9v{n)0I2=_39C`+Uohd-E?9fgV zDkVjqf+=++DbJ?DSyiN-NmTh!dOdA@F+uZEcCA(izBOxFNX($8^npI+^cA_sXfBl! zrtrcBs045s0E76+u{9kPBt*jpTKqq}AHxJ~KNyZQQZ*qH|NII`(lh{ViDt!RgE~KS zH$TmqbC!pvF!=pe%tguJZQN&g55@TxSW}!H0nU$4(ONGlx}KDJ7}tlJn6=<-rsOk4 zw|5A(%g$$8g8ePp*9oWIV=5Zj5Ycav#aq&3JQu*&mD0$glf`$r11VQpG3L^oxxl`W)@&ipQ3M7;gzj4g{_}NlU|IUI#+5 z7be+^wgJd)ukYbUB$JGoN}kI$4=PZx6@clpd;pVI`O?4wNow zFQiYt-FWSO@AE}p(CD zYDmKQh7C!2Q9=KOQtMwC=V;4Gz0GZ}`F0+VfZ156-ub6cSeACoO7Nylkkw?$6f=2% z3K6f}Taey1>XdE{j)f8N>px(?ft{1e>{jkEP`Z z_z%FR{5dwcY4@7pUsxPJ@a_YobK42Ffg}BqaJTHJaw6$k@Gl_sL-Jb%Qapy0T~9jm z8EKY@nOzVwfoE1mwckhsg_&-#JoxK6!IS}rxHEpO78I%ZK=~XleFX}M_}eBDtv>D& zxeM0A@|C}NPW#zpwCtJ5444%JRiV^o*LccQy4IE*Ia-Pyd=mZ}qA)wVfGP71@lS#V z6pEFf(^1kFDtslrzo)1i$yU2b&y?l!z8Wg`crf5+vkDhy>J+iGqQl!F@==n>4AUre z5{+y}nfPTcYK7qK`eBY!mT5nZ@6x|;x?mhE7!;3mZa7^SrH^y!bXCt4k90z=5+9em zU%Y09{z9KiWiB4$k|s(JH~NORqc}-yN#ew~Oi!_hH}Pn(p0DnJQ;8J-gilms{=Bo( zo5g4K@nPyh#Mq7Gb8dY7wk*uXA{5qCzkz!I0>lQ2-s4pcfc?kD4HKsy#tEVLN3U{u zQLE9}lSJ-Gg8T~^YR?ZZ5=^0-;YHEm2Q1y}286`GQn0e?mC#172fUPHt^NV0rI`@6 zNd!WWoNMWFZs5+?0ZwC$|ubl-u>sTs91%zD3i;Q;d_UTqa)Zx3TLt z_nHa%c#@f~gv}&9K>NH@+1CC!(+TxBl3Ax+)f;{YymR+HpAs$0P}coL+DRp{Zf%%C zTl$MN^co`-Gd;G633+4;6`iV~1FzUoM#DMIXu#O=Q=;#^runj(SIfYP6V0V-3 zERo1Shj zLCFk&cb9&h*yaYh4?U|+qG_S=UYS4#uTjVp4x4kns6QkazhmGP`-N~80>U1nC&*O5 z(kl&x#E83?+$5)nIyY=6ElUAoQcMIKl!5fE&rqe4u)%rjjSE_$7|aXeCVh{?h;f?+ z?$-o{m>#P;$f@?$;K25#@UAh~{pRQ6_wNBt8A6Ih0dr@iW@8Mv*9hdS5_k1N!fL;Y z8#Q#UP%VF`5ixHYJFjld;rU?=(kw{?wug)2WP2otxp%l!Y5pAbl$6o4i68+3I8|EF zyoM{#QWQHJ<1TL7)YmXQu?U{rA9__lAgJ-GV~3_KX1zE!k;-E9bNvs$5&l2qH+~xP zR6s#6lH~5k$DU9pz!mid!|T9~{lN#gxM|OurpTvsCl}pZ(p_PZMv`k?u&0oq|MFQ8 z)B}v~=8!%Sk7`^7wKS?F1X>1*65v+fFo%4Fu&U!=+e2uVT^$S6^THSetH6b(F*|mb2jIj;c zR1ftAIZI1?6MmJfw;wp!cB?+nDmpwKS|xZqxN&{|ck2_EDoxI~Zb5CcZf43L&U1$U zQ?!S;>WTT$M3u*PUhi1t2A2LT&u5Q34n2Au$-QZD=T?$;6~N}l)2(%<#WE;px9jHX zNUXJ{<)4E`p?V7QVt0PTH7XPN_5S(!p7!d>0lfESV+;#7 z#~*GVoZTE&cxF?XuX1_#9R()p{5T%y;R~J}6Lq$aqK>aleb-Z!qr}nCb&>IwkTmi^ z3WV}K&RbT4)4Y+7*Amn>o!4TiCZ;rZC`?Wkm1E<-FLXpSzt6G!`pM|zZ7EQw^hf=& zGBAdaS|+zZ4eei~OzZ9*ZME|shVW6eJ_g-kL1IT#q2VPEnSwUxgcayKYDUS;Cd=IB zDroifk_E2^DB7-s15YHfLku-^kR$jD2-Q5lR!Gr?C0B3mC|QD87+heAN$``}S^1#~ z57gc^rYS9w2Ux;f{L+UnW`@(Pn_QLYOzm-7Deg2sy;i|gHjGC3ifMRcHCkIhNA~#> zr>0UDBFfR$bI(hT@D#BVJjIvg!EeLVLIgFY0_1o1;!Lb}lpldKK}|6|lnU!Q zATm)O`|q1`mA<85ero-y-?;WS1BCJ%0ISk3V<7yZf&5 z+rV3u-^-hcTI1`kFMa$k2JG<|SgXKegfme+I5xIWnwRTT`1KpMP9J-?h zLU}4OEju<|>68?CFBP3{9;96zjJNTUAvNQOFhX#=$PtZ(9lp%$&}JOdx#e~xag0H6 z|5nP6KDxXNThiHPkFoo=!iPSHYVfI`lB7(i`_@{J^RZsTx&HwvhJqPa{zzb>cjb5D z0ct6--<9;<&e+YNe9hggQtl6Yh#7Qn(9+r2EDz3M#vUwd^**zn(5_E*qPh2B5loV0 zCrmUpt*Gl-;ra6lWN`#eu^&=1Gq^wva6bPRPSk^7OORreZTzKq_(CcvSQr@}|MK~Y z%EPbXQYnTIyclgvseqUu7J36dR~esl1P>y~m{u8eA`c%<{BfJKg#X&UX=x$YNI5vCSO&l6horpLtTMq6unElac5D+h4)e|;(YhE2!`auTrpYS35RehUa zs3g!f>#Ixdx9#h2>TSrmmHdtMidC zQNlbc`b3om`fpceDbkY?h$e1aC{3~$Gs=UWKF~WBBNs@4uU`vEPKD#uQ^RCXY|6*2 zxrxH9KXT{$FEMOL0meq+a__&zSo7aL7*CST_2%X422wyVaq~|I{FotDh7+iUiz2gU zsaIRls^zxCry3x@;)4LJg^R#XmL4htcm+^MJk&uX7BYX3w^CR<;Jzm(ra^|%q>7#f zzJbgo+<=n`0!V$p{N*aZ32ChMH2`Vl&)hHhj}=`V4|-beiX`Ls8D(a#=B}}0b%sOgbHEF$b+d}^!3^VZ;Oc>>}xZ(I~SfZn9g7Avyj0%mEK5P$} ztIW!EYf6@Spr?kv(NjzXwMolx#|SuPyFs>noj~&FIbiLP&P^vB4uk=^SSx4JjK)P$ zOjE57ZWjOOI*bgv6(1;`CT4b-_i`YG)H@?pAR726w-PZ@nAW+CX9HCRV!>bv{}M*M z$WECc%=j4Ia|wUiaSnx#@rVhn)g!x%ZylKac$!Zga1saxPSow-R^6TVnpRNz+n(p|GP z5@Wot4SUmUtVXm^?^TnA+t40q;}XHUuu;bUFCB(A^cXWs)5Hs!=7b=lx61AZYens{ z!bIfn{isPj5=+~pKX;un>n%bMfK5%)yfo$OEs8Az%=nZZR_VEp-i7{+fnrNSZ>&c& zXjS$b$tK9Sjz?a0t+xRG`)RW!`o}aADR2`6^46!eg891v8(NuDLjTFgJF&~hBku&X zZr5Z3Gx!~)xI0T;t0nG+i4%puL~1t^?3zrG!57xOvKlv5IV?Etdg$L>!BR<`VQ@wx=;vGDEskyQcSb%Y@lbY}3y+)ofYhy^L2H>F)bUfnJF< z7g+L+k-+=$7|V=J){)}_=|_ytsHliLALgzD8>_c(3E#L=UOm=_alo^K=@pJ+Pcl)_ zZzGb6ga_BZVJ+CpwlB&4-^{Qu;7Bs-4Z{f(DMZP-Qy{$}@1(g?F& zWNZbJvZhmv;I5okR8A9h#^ZNpKgUQoBrr(Ak+I$$3cP3LCWYoBJ+4e(QeNlOUv6fX zwjx;A#eGuPRjWmFWma_uq3ie|_zQ|T*md{`r5P!Ty=c%{fmEmXr+!@GZpDwHEP`-! z2BxHRB22f-93RevyY ztVf0RxBObWGj6kPls>Y%Y9@Ect1NQ{(^oA^)3dP1c=mqPRMKKuTJ2S8^1$F~R=yAt z&X$l{b@kso5jvA_hklS|3NM`|6z>v@eP-)IA2sKKm7$FdaL>4q|IL?an7sYqM=>O;Ms>PFNbfvx)RDODfEU> z&l&3G9?W6z@)wEvcgRI-31U@gB+1n)KzeqB#cUjMsgE`~zW5yR$k#;ir1)lEo+1*E zWHaFHS@8<2tSK!!IuPJk5Rd|^Nj9HO??8>gh#VNH9=fS6=wAF1(|1%2DD;E`e3w(W zOFJM$C+ZsVRBn*xp1O8n!-bygb?x@=Bo9k2S-6k?3#pFY+u3+88DOYkN9#Q&2`t-_EZ8>ff}bXx#Ch2 z(;tTftD@D!b38OKx?yJLyyuumMp&kRo`aYBAVB?xFF^GguEA?E){BC3))KouwiHCs5%?hMM_ z&bdyw6AR2(U_7A+#SwZ%Gc@6bx6EFDeIo8HX!YYC;T`leovR94o`a~(6}L#&t`W9P zz;qu*R%^2Us-_{@oX5UMeV2fX|2deev7yWMn*12_eP`~dpsfVEL;vgp*f__OIFgbxiuN8b&?bKnEs{oz_K z^Q??2D(NTT1xI;iE};0&W@Zs#dX)EQfmJnY@wrj!8}zS22yq8;>Pwd{xjYsZQLPS> z1^wHSk-VtUM%6k$VX|N-9DJ`(=^3*uB1Atq*i(0)))SC_8xL%eEDVn~dU#XZzta*9 zr9K#7edUM6Z}dHY_*Z3IW?2u>Z);qMJGLi!DfjLZqy2CH5gx)JinmE}-$Mhx`}EYI zIm_~5Ai;7x=1bMy{oTaqcaPbdsqf)D66PHD99PDaV1bP*Th@4$t0~v3;Se$+lAj#r ze#B7CZb9JVbLL>Z5J@dj)+QjR#lxUN!w~7a^cvlJdC4s?c68zy`(a#p`;okmU57xc zeZrQ2%A5W6EmCcSDg>;d`c{CxNE}1Yz?Kx`5%D0%p`xrxE>?~8$NLA{r@GD&0l8%o zSu{_%MbQRKrllToY?~2qRAIi#Gf(As;2W1&`U$EEz$oRtr(XvsqiH+tL|3s*mL|zM z(3F3V@8%0nnrzgVx6X;UG1mFIr9oA*IIaCehvBBbwqz_*sdUJLx6ddS48i=9gHuL=R zc?g+X5#?pDcYL0vfIbi|f2|kZgKQiw7dETyrbcJqa#b-fk4YaD2TLba{BI(u%cd0# zl8Xe*u`V@=e4{|?gs=p(;(#{&1EE{0RW$xAGB07vKia9)?UFkLaf9RtgEMAjxqI{1 zlMFYYx(;w+ng3EV#2;M(JI%(?WZ#VAUAkE&{OvmW9wF_Gp!PCsmX^`m0f_G>wR-bK zKwgMh=fu4H6&r>{3jwQP_(do<(J1Sox|m)vrWF#wn}of|x>RZygvKGv6-H@vOu5eg zB_Kvcf!&T9zE^61Xs>||re^&{s$&=5`Bamh91&h*%Mv6wmA-$y!To&c!%x0cBro_owo|5%gU7?j{fYN`G zsJtbBj*RKiU8H%DJLhP(SVarH@ME3Fcu3+UbmV$8M(pJp8lrpKZ#*#}s-#(A%5OOD z%sy^8GPzemBsq3kt9BdiOy}pg;gK-!uZKqI1NEUq2a~{lcPJ)n_2^FTwy9NP<(5nS zprWe&ShM@XIE@Z-jPUw@{mp);g<$+D5YVAeO9_F{DQb=gH(3yS58ddcz=k>Xrz#nb zeHDxMvgO6eOCC>tsy{&^R%Un!1AQ{y6Ka6X(JN-N5Z~?F_5MXwO0y9zEJ?DEKG7cO zP+Gx9C+0$MQsDGLWpcb()jeCSWJU3Ys10TWe&fHsFks^;O8kVb{C$L{1>=*^6oGc#3n406 zZc<`^?S^;D3&BJa+7;(N_}cek#nc6e& z%VQl|R^n-&lcE`~9~FISUHCBQh3hbMW0xfVRrZ3fFf#;J@gViimi;%=;KyiM*eqBD z9Aw7ZVbkn0Pr@=*abdLnR{r9qN;fHr4L>=o1v&1<+VHZS9HO08)_i;)0p{fSJElZ7 zm7P~x7hjZ7%>pKQInXw*hIbeUA zPK0W?Y56L}yJxaa(;A9Yp!j8}AjrWWRR1DVc2rp`*>e>2U|#ASeZG%V#2Cj=$80?( z-N?E+Blmp_26RHUISA855zK|wo$xtX$F1P8rmOTVK7p5dp9YGqdk9llf#tin9zEbO zIea9r@#ck6ci5dhyaKcwHlRk^gP%LSWWfDgSdHQQwCq--tKGt~V zw2e~Hs%-l`6Z6lT0dx?Jx1LJi+(N*)rQFPTl;l%sllG80l#$BL*Q@RP-n_+veGV6w zwl_zzvp~=s{!&q<;!g*=d*6?DrTXuvxKcmz!d8B7jz%acLV*rmqNpeSEZ7jNk5;$- zi~0iu_PQS5`1?N=!q(O3Kr-!9Ge;j4TpYpj65dQA5N1m1M@q{BSM7Q7TzXnvKO9YJ3;`T`xVbJ=oqNCr&QSztap3t^zSo;pA#j(z#&f;-fDf(F0F$C7@k#7aCI5$Yu) zYKzO$mz&<10sl56#fJIX84r#>{fHy|-M4OL^fqeLAR92NL)62Zp(u}Vby(Jp#sX=T zg}SYA3tX}`HODMT9)0&O#;#{edSU=RO*{Z{+FJx-Ck5k=#-_xaG=`A2-xlk$7P%i7 zs#z(@$wJ%R?`eL#;)U3&^BM;Q05h@dH{{RBmG{LO>}U5{f_!!)BO$AZjGkChK+33c zQX_sFfp58)es$|>rYTLDB^(>1Ao}>j9US<1s^eW_Ubpje#B94(d4O|2`L1e2QLX5Vgg(OU9tM8z@!Hg@yPDjv@n@2C z>3%+BA-cm-lG^4GNem_I;@^GBShWacDT2i6B~!E!+IYSZuh=rDKMN994s{v zGJaO_QEKAWoV&iL;Bl*5J$pl4b2%0{o7X`C-snFbG^mP~9BW+n7 zR=P8~+Pw7gph3OBZB1m5P9hMfNA$%qbc;iDA)6hGQ`{2j&FO1q-H~_atH;*f_b667mfXt7SjPzjZVqXvUJsyG0`j@50)*YvJcaTSt z`CyD6Y_bDne&_T&Q=H2*(hbO{Q$8`{Tety8G@tRWmD;m&8qPdik~X)wm4=FpIk;{2(UDKRf8IJTG5csf zK;h1WqqvL{%WeH|Dh$FOMw{!2bDcF}1cJr3pBr|J^yX^4q>xO44{6IEbS4jC(yHGyL7$+ako3O`c_~gkA+xlj{wOqv@ex*uNMGx2M z6Sf|nrTVzrl@t9%&xa(c$+x6jCdI<6(@1j5vg1Pq4sUj?hwe77++N#zFyguuvC{aV zM(Ym@WBmiel3$}gJTR)U&ncy?98t`;vPBdA(FX)&nfrXBO9AfO$~LwFdhcOy|Ju$*}(N-{!-&5cfDca80Br##6 zmh1~59WE4h^^ZmwO6^**bE^j?aizGjou81WK;iCO>#__7Y1nDJDj&DM=^ylGSnxZh z3%tCh?`o$(h;S ztTis!tn0(qnvrr3$9VVJWH)8n$d_H!ot&O2BeeMRaZyt!-PgpD{_fNIZ1wpan!BwA ztwMx?BQQ$icJ;B&;aVCytX$Zs%;VpELPAMq9r!I=zo0{^NU&n3yKNx1S&p^cHOl>< z`Vi4;SesLQnj5jbUf{A>z^xY}`D&Q%kkhv2XZ{zW2itRV-GQg&-E%~oV7eZ7xh5EY zN;b|rmka%p9fN$3iNDvRoJL)PG6vkTbNRIJC*IQSFYXd`e>9jDfXPWPF<4FwIs*K# zqs`#7&_#BLvy$9ddW}7+a9p`E>%BRl<*jKiv%`1K+6tr$&6~0r3+NSDWsYB$(W)}! z)+Vaq!5K-aQr22end3xCu8#ac*Q=r~AkT54aiQvt!4+2cDAC2er=W=Rw638!q9@er zWLeI{^+IUnMeWb8`BOc5Ng%%z5fd|+m8CP(Hb>Z1TP*k`!r$7O zHkuo&{EI*D)pXBgbqx=T66&~=Gn)rSDm%)(S9WqC4E8KNDswY>J-0gaIU~OqJ|jTA zysJLC=b5m-BsA@^26HWIKYn0tSY5WS%foB(VVkcINj={_feOZ-&tC z7VX)$^1X`Ea?n?rz4`dv#9c~w#osE23pCgD^zlDrXz6ydO+S<<%3`gFTU3o9_ zW0|xaTJU8&Sy-e15MCWm(X(Mi>n9W?1qoj|l~@)#Vj{f|m07WP*A&w27}BDYFm{WH zB>q8Qg6Jq|add0P@^;hg$C!4}~`XYy8E*=>9 zI1R?lV~HPhT}EF0DBWHxpZOk>c#Fq3!F`!L(eS4!=xza(8^KweqeSoNWE@q3RbafR zc9p4W{B*eUk%Xb7B<|*?(vP_&u|cge{4ds8rW#^H4cbTouC9T{L=Fju-+6EXR2wW3*3*GGuVMCb91)g(Zx>7s~* zS;wwb_ZY=j-yWWmD3>m;K=uGb(jXkl6d+a8NOZ5{Xz~ElVOu#uYZ}-k|-GmeEXy+YdYM3Uznw2{jfN;s5_f*l;Q*}&q;s7 zc$r1LJ4gB8KJ4zX$%EsG{JwCbqlSqe@o1+yT_ai7g7(`X)?f9jb2SPRX!-X7`K>z< zA%&&gl9t)0@02!|a&s%=PVP@YUl1-rsR8|Rlq76rMd@$W9G%G}oZ}dWrCH}Ov@A+L)g1S($xL{eGp3J%m z5E$SC6I5UJzARMpnZDR?+8&7{lO}9;pVTb_$b@I}EtO44TQrXk?BOn50-KiF!$~R4 z{;^6f;4I9L`CKOBIQ4l$TD}q?n?U(49jm6S}*%&+C z1^-R(07=j~lq=0IZTus?Ug2x_aB!wF7S{@;a14x8p*`9P0(-_|vv>I%y0JZ?csE`< zbOXNz@1ufq7k)(Yt+`2CP5Kc92X4TUAh1z; zL1eP@>b{<8GYj{PlxC+9*_Tpn?UzO{sx<>L?$8GiR$AWcK|1~~^3!BQX^#0{WTfM_<4<%I7~UyVU9&FM0~6N& z6rFTMTS}@|06`ON&dDSY{T^>6x#$YtUy_EF8V7E(ad!rfxy+{+gz04Yp@xN$#*oS+ zGMB2a#`_srX7k2x=BGOPy27QNwHlI_dR*7BpLxeMMM6xxprFu}aqF~F+Dcujqypr2 zyXk;~1gJ54F5CF~z5;kP**;Uu{Z-o1rNK^*4`h71%{xxIuim>R49i7#&6b*siSX)b zu5cf#$JX4d$cw5?#*$jA*lGz24|S*fQkjN$Qp5N*DjN0T zGR_EHFt5GvSM92m#zp`}h2R8b#*K;Xdy*01`yH<6$hTHjUkG5B0|dd2(JIdq5P@Qj z!_!y3c6{&esnZ~Y<2$2@b-zlJY`{7DFWf7cp1YwK**&*Fl@`VOiRRtyXE?eA`0(Y6 znsCnv4X`ePujkKIu-CsRaAa*JbPfWHHhO0fez;yT_VyejuDerq2e98}1r8o9)}K!? zjGa~=6&CIk9ApJ;Z(6Li95W{@4_79BCVx@Ae8M1LXF6G;*X{XLA;s|huYB7r#~8X} zT_dnhJ7FaggAl546ZGso1mg?WKfL7KPyK9EJT${+v?m|M!^#plmq{hrvrwrqT(Y~0 zR`z^dSo6}vqj0eExV5%PDDnugT6!#bpi^VhG1#fvgUc;M;+#%8^S+-7>D=yv5K2Z; z)50ZnoiIi`6b>O#rhScYLlhO(L3UPd8K5y2*tjI+?KHp0k|@sWfCnCNWqmce(W_wA zuG3P*31gj*(wNzpY=6WCh30>IbFTz__O?80vQBN1@k#y$WdS`M?kz8wj|PZZ??g!~ z)_sAmy`LdDu_7p*Qm2eFDevj^3k8b804)gDIZc7jK{08VsA{A2FJ)||-Tm$sf-Rs8gW z*_kUM&TKmy-qY|3f0pYrvQl@BsY{uu1w*gfok=_IGebM}^}J=MMG?Enk`PucEWlpL z_%2t0R5$9DRaQYqL#wFf`W|MXkNY>*O+maVOY)o+{h%)dqUJ!EwA`OR^Pa>dmVcn*2dL9k16 zSDx&5?HIBv%lhR{NqmEAd#f=`?uB$Y8Y4ZW;rHjg{A}z3^3(W!-y5W%bfu#evEiu^b+}>H zD1N(lRF@x%1*=zs050ywf<@)NNK;XwO!{6pB1u=vG#&#vD_gvc5%?_0QS1RwvQ(9c zE;`ftXmQHM?I>Gldgh_DhNB5s(2UPnV#|i1C+>lMX#l98^AU0Pk8V;JjCstG>jRpx8J?Xj6C6y z{am2hvND+2e$03>E7ARu_4ikGT_-zgN54kuSumj!yc1uvi+3`4Bi3x> zZ6BZ5kA*Sh)!%C-?6;`wn;zAqow0FCxNvh{0!3fUTjE8br|qHzGOBy@XN+hv2i{Xh zez082mSRvsuC8Lo8LAbo;{Tu~ZGT+72d~;njh2K3 zTjrN4vKc6(+h+BS60r%5FIvC*$<0p1U6{L?fPE3y&QLvSZ)bcPi*JKoGxItCg{8 zQuRkVEGd^X znZw^$^`;%WDFeU$yS1IHn&j*SSd!M5oweHlhCbeBxPwi$y4f_Pj7yqB?ixM&~ z`2j$^@Z!qH#XCLNJTiTX$Km-2>5Vfq39j@6dZGx|Q5lxwd6mO~McSS#D9Pwju%r%1 zOt`=9w~0PCyCq{$ljbCUS6W8iqB`#bl&S%`0~MF3sQ)tVb*SBwNYwM!-H3X!Z!v#< zJNMt;{tetdl)MWK{17>!J#+k)u>}3LR?m8s`GWXqUc8Sf;RAf37gC?X7a0|XRMiPM zC{K$5?-m;--vQLvUBKp?wn?R1Z;vs2kYcK7U=~GiC!6{pj}it(X?-fWbsi?fq~ZI< z8T9y})igjBH7=;&v$s@_2M$&wo%UI+<>hIG9*BP)3m!aRhK28H1Coj6dfB(NQB6~& zj2l~gKc%iE>%0`+F!vgt#Hjb|KhvPftxrhuXu4T2lW6urHI!`FvVJ9}lliYtO545z ziln8a>4<3!s6QbB@TP)ri8&EC2iE6%4s?iXsMyl687G zU-kotusd?^BLOa~Muf6m!$vYR*z*@2F%JOWM-`Woc<^fJnIJ5qLl7zFPBELz$15`{ z$yRGPa0jsf+KDeN)P+d8@+Z4PFYXK8$A@ZkGuGB!FXW8b z3dg&Cw#yaO(nu3Nsj~HbR&6R8z;>}6}suiGQlx*$A#t4Ebf?!QD#y88rcXXh@NT%UNYJKELfj{;)PT` zStfudJ{P$x`+AnZPtZ-x|92<2sSH2|&Q)g;5YEpC&rmPKnP%Mc#VxDCq;UL;(*Wlu zh7rnQi+ve7@$$I6k~GI=8WYDK{#R=X&!udvB4VN0ch8vjG{sCYf6)K*lhN+$p84Hp ziXF>=bSyAZG`^<(fkA&qg0ZCj)6e8@TXZETasMsE!;Y7&sxD~Fjw5;e1WNVMQ0^}t zK>Y(p0rhn0f1mEs=@%c51q1QN^f1b%gWjIJ5=GrAt3|jpk;7|vF1>qf3j*mn+{KO* zNY>F}6SLWPIV`IU7@f70*FPs?WlD0)Yb2tzqul%>CqD z{_BS=4dtf$4QOYV>v~NC3Ge8?uGJ;Ypq` zQR8#XEW#i=btZ4QPKwi0dU?+6$lq7`_nrM1%iFlHn52jsU)SH?8)?RA#V|k=Wsn4q zCp#-g_QcBp&@ z8C-7IO}7HiCybvP332=qfGuYJj;prk_@o^A8pTr)v==wpRrM9kagp63g&0&Hjd#_e z4kkICu&3P=T^PvJfz+rh7H2f z`HEIFUZ75mXz{1xlqjz5=GN7MSi%q`7IO#*pGUg;PER2|eD4H$65Szm7(}nR&>S9a z%57kl{dfE1Q=HeYLV`2O;)ggj1sHO#iaEdLaX_)3vIdD`oFkhF+p&H?*1d=A<06&vdxv;7Ka$8C?ji}AU z&a06%ph$%BWfV76IumLWc?;D@wDPq$>-@Qx?#c#ez=)JjLjRXluoZvWWbGkB>QBkr zB9T9kW#dBHSum<*VX?%(GoUZfG-3M)^`PDi*&;ab+FG9)il@4$%kiH5R5S77#=8Fc znJmXPt6-xqWgyTH)#ueZ;WN}+RnET5(cnD~F>(m^E)ZYwE|{;d;3E;0(I$7ToGDz+ zu>Bq44am_|({@GL3Ff5?&Qy;eiR_)5n zA|D7Lu6V=1-rmAW>^&=14CtY?LY!kb85S=g__z}5Nn?n>^JCQeZN=O&f ztc`0w;>ZC3E1uf8U2NE-sjmFSjh-y`^Deh|_wVd&BWdY+4-E^fJB{aY=$kkA%2Dfz zoOWhQzXcqo*2v%InEcYS+o=RuvAjsU zt2z|+zs_QUf52nv{dF;1IDUo!!yqt>%zP)j_Hm~54Hhr|4a%pHri2idtFJD-WOg%a zbuAlSJw$W5Th~eL>4}TdDQopUkF#nLDN&RViI7=b7)UnIf!RYqNh)1@F}nDMc!{{Q z@=-;`9CK>_=ySOz73)4y3xQRY{0LRGCn_~1Ql@~gxe)p>Pvz!o3ab+D989mEiqI{04De-Q?xH_y!&rR=!CAQc;;N$LrR+(=P;%Cz%E-cPUoFC?(lBbi#+yZttvwN$s2L zY{VvK8FlX#n6=*89$Ry2UfSVJK^fv38E@M+7XuV`Jdjj9}HHlfI3RL(&Y+ zQNaWAvL&Z}hTH_YF$DWg^Zu8p2{Y9v4`20b`*dfjG+kG)_$%qJ7i2OK-dI!!85VlW zYZ4!ovU;ny%6JHNuoETJ(oG)ol4-=b*LX#CdBEx2+mH$ct3>Cf+=af_+~?d^Z-9}x z;7Yq(TbM;m^6-m(L)Ioy;rQm) z*Cx`PtUC0)(V}VBZgy7->P+QxtW5CDw=ijSXWLUrHP|r1V5q>mmSLitsN(h$P%8(H zTaGRQtB2!3CYgZ0`K+v>a{G8TIJ3ZINq+x$6VVZo@_5;iBOo&z1R7 zv#@E`0uTJ0!^qW&HHHD%B>c)+CGINe(|ak?&#LNt*6c+7 zCo`>M`w!}VbyIxAn>Uy=MJIF&Q3=e+i#KTo;RNO-_!Rme#b+HYzv1ZaRS4`LK`DCc z8l(NHd9f)oHmsyNZNxU^@;SRX`4%O~lk5^?;$8OxlDv3{&0zKf)mmBrRg+(eOoGRz z;J%%+@vS)BrNZLK?pADMXUi>Z71M~j`$|yZs|h0^@59Ji6!%>|WXDO4p3n`DOC_`c z@kQbE_E+7ce&kDL1j{LW&!OBe{DIypDf=|moc|Y1ey}>Xj4%1%@Ko#ZErnRRj#pc0 zW<5p`t2&Mg# zM``Ej&lEwBqC-(4?zWiErYDX0UxNfOIE^ZJ%=b9RQTU9){2JgTa0K#t?lZ?bDy z0r=t*E}#85iAPHXx4mO!I?$Ay_Mh9A=*e2+<21u+(9j=zCFlWV?M!C|^t)4vjYDfS zlAl#a!+L9`sH5m^$dfKchGXcMi*ng14jH46G?3@EQm;-umL_KZe0scdYkr_KNA#+m zq(`fqSej{!u6zHqX|&$x{m_iAJ+}Vt0h8a6OQRlb|E0CNIr$!+bXlx*E$>^mY>j#x z-&stEUFp7xPMD~{JOufV`sbS>8j4`oYvf#56`RVY^G|^jLyJ$kave1;zld7*T$Ym9 z7*f@(P_<92sMcf#&RWt$YZ85bd_z!t-mX)*_pMe&GF{u{#-8^tJe&|SzI!F}Zk(tb zXfMJ7_&Rr$9uOt;@6E&=buW}nAQj7)db=yFj%kVcY~RiaX!xv!Meic}#;VatNIss% z@2cZqE5Rd=jxiS_`bXy0fwxUNID3Epo&Eem)9MD#)gaKs4&H?3Mc7tElN^~snXbRE zld3*g;Bq+yFts9&*F!J^f2zlT5<#GRjvs@+TNda0K#*JynRoE$QBX{V%$N_f3lxYY zo4paLp{dSTv%VZ)^A_Z@0D~7Oy!h1;Khsa3=AZok0419LIs~G5%c@rp8#p0^{R$u6 z_%hCSA+C0DcqDu%Azt6lpwmq?zUw}5$A0PwGPJz^aZjZ-;bPQ8@~)6B4S1}}<~2TJ z)guM*&nnli5?KFg%eBNpuo_yI##lvk`P%N!3uP_b3Movdo+{9Z=QA$2vvxeW+WV&Q z=$W^Z{jW79wVVvhTY^*_+S`+cma7FyBul_)oiM7W=f-oaU(2!x>tO+1A&5P(3%W1~ z9n?C`-M|*^awg_IMpoHoGK|Q&A?1)uu186!L|O7yAKtL^)*`3z4Vj+LMRWauf9tg? zMq@e*aZJ}2#lESdF!w=Tzj;JON^0UYByT;bniJ zlyP$l3Ju?_WyDcP(9M60w3H~<0ZZeBsHa?u_+-Ryf z;dj?q$76Spl*cs=R=Nlq2r74XA{zlnf{*hMQuN~^4>1J*F;5MZ@2dwJP9c}%H3rRbF+re`*Gmg z0*WA2Z8n;=aL8JpPKF@{@}Q+*cm!DG5h0&-za zg;91}h3Y@A+#Wn7p94@e-T#&lQ|_8VcxOEiQEwnhC^0?jOQ3lA@N%7U@FS;^o-?xA z_$sif78#KY*cS-g40hBsuNE1Ss4ZB16tTMW9ebrJ_`Y0g9qt4k<^%g5&8xiM;(}|k z^1xfe#0JAnTH}NiqwUrC_(pgA3Q2Gz-h}QJ=M9y{$0<37Wd8m0)#z{#UI<=G!i*_m zp`v4t{;hbHRv{fZF;)`syBHO^4f-O?3cg6bQJgM#ZTmU5}CPXRRJ#mW|{v2%M za;nEP^PONvfThJq*YF!nj#;TY-=;dJ{;-@~e__h0FaXj#s9vZQN_iMfmnw%oy#y`4~o$YBScJw4CB#DY}AzbSnp zd6b~wkZBdR>i(B-fYaydoKfk*pVxG_Ga z#n7Mu*s{@8OgGmiP>$CHObwO#K)V3C4? zAzL_betL(@=gUXY9WPK^)N{hl?_irv8g{$1LVBur`M*j{2}}?i*86&JSr%RMEJ<)D zlJ^{zoe2c0pR!e!ZjVWa&AF_4b}zimf~B;w3aVQfzMhV*h9wt|9rtj&W%~aoTRSQJ zpJeMtJVUF(%!8sPi>}DAia4_T2gH6b7c({ zWK36kfs>|lq5$s6ko|Kb8K^!3KZ&GNxhX@5>e{E&L5ZQdD_))H!1&b=-h@}AVyGqf zL1pF979m#&g!YWbgPqyQD`I^rhRVwrY}bt#x##D2(FyN0L8#6n(o-|EeC87RYjsYU z;bfmbbY1cFU(;HM?2e9OsPc$bblihjB9jecQVWc9cuhjfO`Lcnq6}Kc!u}`O8qaj~ zuu+sPe@)Y1#TwOpTuqKI)vr zj2fKY%R$=uEY80r$o1yMpOO{-_R+eQ_e{Mc$3vO@b}YBHJJ!rPsJ|F5BGuZyYG&4= z7{wLVQI(L+PYKcev3M#9a4R}HG6;;)jMxI(3z2^$kpnIle)G8Fq!KWJcw4hxJvDlY zejZWkxn3(`5T<_%Wq~g`T7@Mh9qAi+%g~=_>dS)CnT*leqvPqvs@?g~G&$a{igWsL zJAayW-lDXS2bB$_9&Wx>gLwnFi499by3cRcG_W$NIH7thVf~g}BU1m+$u29-P&oeH zmL-*g0^8LZiKGw{3P1#+b>_b+_W zQX<$`@vEi=>Ofi1_3h-Cf9<1&@4u*HIDOrxb9$?P7ZyvK2DMj-vcY1ZtJs}LNymxnFZb#0M$vlQ1Uy{IDL!bUCT#r*ytJm70dlc+eJt3l|X9# zo;09S;B=#-`UqaC%cjm80EqkSEmPM*l!-n{vb;-m&m-;@sU-&I*3= zOQn2W?KTLEYhkQcIl+{JkP4l!|GSHkYK-FWn8B<9)ysbgxUc8IH}+3RD#ie=JMqcA zS8eqRsj0W${4zMcg_c2{39KX|=TZ;5I0UvLB;zVxE^K4gLB_HI{!g=x`T&+lLb!(M zgn?bYj}9j=GL%i^s#^W*um`m8;y;8n>H^}F|M^zhf4)^$vexrEpidLZzx$46_j1M% z-u*?A{PU3DBV*KLF3sINYTP}Es$biw(rp2E7 zf8om6KWKrdBXKl=a%%P1L2a!OGr`P8zD%I+0J+TN!>`*TY|>2pDUrR;@UyLpKir9j zY`5|X6y!LP@ z5p~M*@|4fpOX6kr4Y1SF9NsM@DwO}It|Q+0#o_-vdbXsgp&wc(%@+AevMP7RyWn1} z1VpkfNZ5w$2$Jmh?Y$R*HQ(nk_^`V!GUw>U|D9m!W8nPkF#sG|87!D7t6ghk$Pd! zd|n~Nq8tdcP}2R$ONB386zey>y?qT13lT)`XBV<4JEL`FB?X2aO=#Vi_^XyF8g9dI zrV*}0O*_h_fo5@K>j!5#>RZSkc1Y#DAt}k=*Wk&S~pfZ8h;0?C=c5oB=gv?uk zThSZL&XR?dfPQ6prdgdoEyMELR?y8KxUeH*3@YUSkOA$y@1vbNV$Tj(`kw=~@#lcy zL3?+LuD7kpfb94k&%LgB9dnsA_oj!kH;0C)lCp2Ue_j90uUWqql(fykcn57^-;5ZhIcU=az zp}KZ_X15Ec25=bv>)gNn)5Q!yaZu*22=jcO_=ZZBbfGUFNwWbvoJMID&?1@FJSvKP zs{Dv-;@r;gCHhb59@u_L>$9u<*hYy3NwZiJ_l{+*wPallo5!U5np|^_o`Y~(iC?Ov zsgmmwzy>^6i}?E2E=-Mo#%i?5Jssr0&Mf6A;GN3jvwN&Kq0B98i+43oS?K6?Ad~{)C%K zwcEw=oD7YB#ujKlhZQD1cqNR%!erXL8qB#8lr+hOCG!^0b_Ni~Bt(pwjXzty&#iVO zXf66-wIs&R|UDgN9^VTn$Nf$XbAHEM1U|2qR+Ld#be z_o=RyGWHEdA2vlU2Xk6&=b{CRm@t9hx<~CPOo{_sZe+c%N*^c}ba`_WHN_%g;=`xM z#myF37|4Lh;>-$XGgUz!J{~AK;i&z?PFS!iq49KSodiwD+HghCFw4;Nw*JX=VVe!9 zM&1=1c(%RT3IBtjKSKp#IZDTsXOCXD#FY<{y*Vob#l392W%3fov@lsq;|p*@2QQ0X zxu^lp4Hy&XH<720fb*0mf=qC+8wrc&0HoQQOnW-ZE`~#RPi+tmocX1*4H>#94bCzl z*U9oas~xF789y!yKP>8Ja#2LSS-crKq4t-cWrJJ}CF>`<4Q!hw-#*@?a z+W}IxNQfP@sKY>-`aq32XbItfP0k?Lf@xvGE@q>M1u7CSQ~=}5no1+z#Z!Juta9^p z|Hzw->6efhzmU)IxwD=t5HN$@@*gA)tiQ0Td&rDg4m|dyzWi3Eh&nH>lRE@>6-0IX`&Y$Jk~`5hs{R^m=7zQz13t@Z?-i}RV!#PvgF z%r?!m=GIL@kNXb?jWdt0dW_h)fdcXJVQ)Mtpu`DPyR%u2cFVambf2FaRoL8_a;?h3 zt1fZkGnDKl1K@z%2VbTVdU-z_U2s!4!4!sb;aU;U97>PIG0`?eK9rV9jD8#;*RGc8 zUfQN8nU^45^7MR-UW*GChp@D$4X9bxK+Fd!pICtqlI+lllB!=+GUn5k+%JC0&?t%v zuO-k5-|`wyewVj;8`uasf(5u`ZE(S`2dSraHO7W>9ry}E{DpY%k3(rjd}~^XPN{{q z-#QSx9hoeWB^h{s z>|(Lv=)uqkY$r*>-FSX2Ls{}EG)x}ErjP?!dB7hw-=g<(16fuJOo~vrjSY*F4pa$n zIm0uP_C$ACMim4S_A`#`V?ErZR4P1*zOLgj%V~n!Xq$Q+>*CB@g3yBpq^F)-Yc@-# z72IY%cCH8@k9in#P@)hl1o_1V@qP^YVWYm?Cq>Ve{x&868?6q+y$6Qr5Ss`*eqOC_ zn>4I?F7u)&nILoNVtTO`E`unTlTUJUf$1VK7EY0vsUik((7_G{i@tj$8e7BoxvZ9& z3do@$?90;C>ltbW*nC(uKA(#2rY(|5O&i+F#mHm2n0Vud;;Gjg0|MmdtA3bbN0lY;*MkCghBE(L5|PHgWJrTqmO~ zLPL8EamI#C9BtCP8xekmYNuqX6G6FueSw|!Jgj_Js68~$u~G8OOwj>dLAYQPz)jS2 zniq*6jJP>2ms)utB1N&S>+21$%hhL(L=H>{)rU}BIN@Ool5vU%mWoHYU}MCweR=yN zZk5CPWOdR{^8|W&Ux1AaY-PD!>K#wtZL; z6$F(KMoLOTVFpp@6dXDvlo~*g?vzdeg#iSlyF*Gk1sO@{?v^g;hVL3{@8@~H_xslR zt>0R%z2*-$4)=XsXB_8o9Or!P&ZfRGA1!Dlo+V;nTm&^8_PeWbRCqj?XvytlsA&kT zOpiRbJ^TDh1T*DLreP`AdDmo5Td~IV&$K4W!K^ zpxf#0;5)we=qsGB(k{(<>$pXBZU-&@seY~wH z>g4J6wDWW@ylP3`TN8LHDPVBwf`JLax6z`#1EQesTZP6uPXyua-o&t`?3L%aBhR^P zRepy&ji>mC1KrVTxe@4Ula-Lh>csSnerq3eRGcfWA@#FdK48a4e~q?9lkGSfjN36G zd=11C{wmP{;@*iJ$-Yk<`(#L&$N#Wl}S-`d>Bx`fnuU%=h(7?au!Y=*p3-$I zdilV+)jt#zJ*H^oKojUHUUi?#cwwfneq)zKVRjrQj`L0n(t?d`VZswdmm+W zX7PP5R-ZJRfaN#EQC4p<+qNz-zc&VG=j0e`7`yrSy;@Dz&5AzFK+l5i%6yJq2F+Wo zYYQ;=mMEMC1BtsFHd@MO?k8@N(rv<|}^!bRzaeK!}BG0z!a^ zrJJ??JBw+t5C2IB;64RTlhD5Y{$68qXhsACmJ&wU5i#2O{)7>S>Qd*rXiLkDPUSrE z|4pSYIV1J()OxyijYfXJd6%L+Y`x0GXxV;wt2R`}{B)ZzdQWO)a)0=LD)rH<05xU6 zn12xZ;Fc)Jf%V;5ud=D0S?0(bHJW_Lqe3eaU--QFNIy=WpAGyD{3g@4X3{E;UZJ7D zMom>#Hl0ALB^L>u$+j1x)1YcIrx|d3JEfhwy|wouatiHb5L1{q^^3GF3}Ntumt=N^ zgX!ggC+6fh@Y70tefeL^^&sqeU{OZQtjB-kG=oK;>D}uHtQ-!OjRx7b550?jZ-O?9a|3w9O zUd2j73R=rVEV50s(M5F}=N{Q0=KXB4MSJNt>$nfubGNZz*T=_nKGamy0p9q!Xt&-I zVs$`Jyi%8TUB30Rphdx0aET?SQC$OYR~ioRy&Umy;ilsJSepH^LnWFEPp<0MXi@(s ze`Fyf?xoxPB=~(P{@{50e)lf}shD<3(qg**1fFxSb+=2ImIiUh#mK{%sT9J(I{3lmUu4Gkpcn-{;{c&yYDWO=%g?m^@6J{gy=d#nmXGh&!RD*HjH1p}=-}t`$jvb(v>OcRSu1jJ^Q!s&I`I}jYOzFa z`=S*LGpk<;#=&Z((4QV|y9$ktQ(*WQyuy|iW4KYc6#ts<{t`u+K@9FGoPlqTxP`Pk z{r2(p3Z!?QZ=6Pj)LIICbFgnv3qiJ2_j);xMe#er)1R1N`%+{O&K7G=&?(l@kr#Lm z0uIhJnm-A-^}Egmg!doxU_^(biP@=*a!-gAVd*?e*$;QAvHmU&2Ga(6Cmb$&*agfteDP$IFxa>gPAYg>CCdktE? zC6LZN90&*jKb7$!Dd%VFQ<)>_S%EBLBgaLJNO1$XYW9k$!h&smzYNoO4?xpPQSI{q z3TP`HZ&!wZ5&eGzPTC1*M$o?m>pOVAM)9S3>roD<`1YiyLlqNlan3`vR|c$E|N1scp~1r|=m zJHE*13rHx-tx~{161_UVPeB#Kp*&Ob0}R zl3h`oe0oM5aqouJ!ok_T&SPzy{I8ypuk221gMvdN1yz=w@C#2+{rJ1d8IJ=Kv_ZJk z&oCtu`7bBp-fr#b*5W z;m2K@PS6ju|JV4wY;z-E{a~$RqSppYGn2`Tm~RQAvp|=YHq$)K7p>%1^s&tqEf_cv zGrOh@-axb7$2QWC>4X3gG6fAo;P!b+{zfOw23Kx61qPV3IOgiL+bY{=ZPFFA)Ff(o)9f48g zpZ;c3n2Pu^#C8NG)5PYwdVTFi=!S{P*^&{d<1p3HZzl9sKQ7_^4(pR_q zkkNj8*v7eW8hJ%>O$I!w%^0`*JMrOe8LbpE1CQCRa~?nDruU^F<1o)~=-J?Wy~btvHbK=wYxDa{6|R5}t}JL` z{QsE8zt#siy7FYkdahD+af(M{{d1K&jEpzvVNdU3bN6hq?XlU>YHR+|zi0Ejvh|eJ z=k&f{&(COii){1mImfGqr#o&-n}m1IKYXCD;yD9J0IkUa{C@jO7pZ{{3G@t;sAO>l z+Kgq1dXHc8t_K560p!%B(5``;dhmQ-Uwo=xd0HZUxGSrLR>nC(> z7I5JfUFi=D=5ie==a4|9!7>%u_ka!R_^griPas#vC}1rAVd#ARRfE)JFh%h>1t&`R z|5v>pdr+m1&SwKS=8Os_{BRr?+Smsu5$5gq))%dfZaQx3y0}FUc2V1Sy8D8@hqYVl zOV|)KXgn~|Z~>8u%_P+BjzO%!!{gR$cnq#l=bX(m)4F%S4@q{6-CVKjkml-8h^bB| zz9H+L=^@Y+0nD`sRAuAaIP~Q^8;*r+?E2buX@yoqZ0s+(3IcC%4=mM}?E~QvsMp^1 zXIoU9cw?Pudri=l_4>Y}_&nI?_!pj^XTSqlvg(;=app?hYlEj=$eG@M3DudT;}DM>^e<;=4%?2qAFJVTAwP@YJDhBcaPgx8s13}>Qg6XHhdjDJ6j50+( z+hfB|*5~wSf8hexpAyuo{l78l6(D!8exz_ywCcw=Y#C^`rN26&8$+H)4YQE|tYVB>U z74=QK@=OOW1^sUC21wd1fNv{q7NduI#5@nesyHYdrFI8OmnEdq6^bg0O&`z3fPOhe zbkbNf7sllgVpMX7!T@d~_#W5l(#Bc;8FPI>3TA@SINMAN6HufG{~zOh0n&nO052GR z=wQ|sjs)vj1@RC+s4sZnVP~euRc9RdX=6VZlN;UDZE}L*ZvZ%O)vht!_9uA~2aIKt z4@~c~Xx!H}rXB?;{NeqCOa1p6smc$Y>iB}c8_r3eAR}b4=?hnW^=ek@9!j_5fm70L z?xlvCS!3=z0~T(Qj2UlOe;;W8f1rpED15a@W*|-z(2Sj5-OSJo9O{~>Z4aWcmGQIZ zrw1TrEY*d&IZT{B!7nTxtb`c~n@3;pZ%=gJo5s4AW6N`fREW5l(@rct!fy;FAesH(El9KbZkrC5wvTNNKI4}~z1hjQ5bq5{?GmvS< zvMT@KIQ^;RJvf0aHC>0mg(26M7)EvVY9?}eADf<%&LtDSKFLkVVOUlHO=e}JQVj3T znX?TSMIV@XcJjeMY?&=+W?JyvLL z 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⋙FbwX2uA`giJ2L7IA5^$t!b zC2lnNxy*x1Lr6qvvp|!J7j6W)Sr=PC9y(di7I_Z`SyW>nITjFldq{U%nMB*A`uq&*vZ2xq zFP}8C{%Dv@Dk-HVJmLJWLGPH2Ew1$i&;;x|l(;B=DvS7R`Nl-cxByQ>;A{q_5+9(k zx7!yub>NLL8EmJ-mvgt?GE>;HlHiNdM2PauY!4>4Py6nTwzDOlF6b0e$;pVne;TEg z#96_068m>f1pxm&_n?S#Z^3qF=s`_~{2 z7OTL17Z`byy}89Pp*Kytydvk)A^s2@8|IG@z%ISw~S?kzMZ&#W@fH%qa=tWq*hWVkN_s;_MS2q-m>moJSLrWeowENl{& z7RgU;?FTzsK}3(FTUKrhJ5;*NC&@}{EuS_i$4(?0`fb{s#1HPT=`FQ9{j%s>>rkUZ{_c$ zk^^kmZ;418;L=Gn^Ckvwqs+?9tS`klCO#iK9+?JBgH-BFH~j<{_hiIbW(tx|$K6Yc zB1MPvuzM(7c)B-c>xZ?OaWl7}wt^@y=C86JqshXyo;ZnNs= zs-Z6|AL&{P;|;zJKOIqLjm5<+R?F4ERnV6K0Mu|f2%OsoJG=miRFBs?L(p52T}#>V zuMx<}@0+El)j)R<83WSdKyv;p6nAtU+l_Tq+y@h8<365un#-d!=%DF}isb$n;tYef z;MA+*I4`O_)}>()q3>`2>C;*%%*j6|b*hfSt%jX&@JnfsDHht4 zXbOKwjyPTesHAfjS1fT;VWcC5%Wi5Wn^CaO!~XcZc*}apt4+bgig;gl(?Skm9X>-B zJ_ECBu{&A(rB)ZIq$uOjV~=R`kTPuE4`9-;e0M^r(r;M!LFnxPaN#_?IreGfdlz0N z^i!e1;t|QF4whQP)+$UI>_iA^U}7>jupeyjNDQb>sx~YQse;-licO1QeBk8`?aXPN zs_8yVnOO~tb*(J`Ooix`Y&R~ylH~on=6+U!+uDrjJ?M}2Xphu;o~cqPWZ$Ai{&L6k zp(tMq(@=lG$j3hyE3-zVCl-Dq82|PC+lRpF0#nff!^f|`K5F`-08s%)_GDNPd^rMX z{62z(h6x67KiY|RlQoa`eaW?m?jhw%38x1eceoSQEv zN|^gS^K5Tdux=~!dP6IpwkZobq_$M;TmHkG9EZPR< z4R!x4>fR)hZ>6y6dkmyGChZZVHHjKAvEAKbe~nQ#WTG57<0`I6*~z8ftM!MQ$RPWM z7dt{*cIU)Y+hNn79NV2Jpo*Nnth6M{!a3{hzbI%6@`vs7W;* zwEt?ibQC&p3=7xmkKXw5m{w*|ANLKU{1h}S!i?HdNfb_T)-JaNjS3Om$5~N>B909L zzcEn@n>{b~no4Vi3mnpLS;Q$c{ocr06dP?@ID*IP3x5Y2MP=*R+^!IWhKm}+?3B4A z_>8$UoRV}yp=CouqAp8tUv<*f0hM&fYz8s0clFHJ8hIcrz6fU_@b;#+#8 z1c#&YRQlA?*C=7`B!w)}hU<*4kk5{ZAqp4ILR3H})wYGi@;dGqY~kKJ2I?Sv-20~@ z(Snt91;gNCmCBD*;n;j^8y!wKslw_ivHjfZJ9^p|3!i$uLzXDBHyi7cy32d!27q;s z^$?Dt{_tNu*_^VK=N^4cAyhtEC*)xe7zI2?Zx3H5XeUaW*9vMGdEUTFNc?E66N<36 zomReFKX;bqLvC=kFr9N&&&G(-d;|lpZ$Z z@?>PyyUFYn@nKDADQoqAN~Y7ya;1x{@mGn>eaU+K7Ovx~m?I>)B~qE~DUCY5olFlD zbF#;7w=;1`xXLd z-i?kUg&)@_qfeTohz@`9t9)*42;B@u7)8az6%Wki@JxbTop0lJsjH0X;i=7H9c6IU;>#;_Jbgz zqyTmji2~abN+}a98;jBRlaw!{7j5%YtZSb+A#HZ8OehVn%Z%m$Xx?!5D#%3S?8KVS z?8Bvvs0uMgQWOK+f;enKJ~RCbd=5)oaT@E|x`YNE#(uN<0u$O3w8e9gZ#_$bl}%#% zj(QT0MzYxU00nmo?NjVP^BE(L)kg+DYI3Y@Ffx@hGZQ;_Ihfy5)w4U#FlY%Oya8LA z9$aR3L{f?=28$*}mKR5Kp6=T0>V%(as}*#z9ch0DG6WXqLK}%Xamn-?@(E_7Im{=O zlTBdu=40X^1KoY`)|-&EyBP1911RXMgN(gMxIMMLJMc&6Vmrdm*%G3L2GpS9rx8b* zzVW44^+%VpL8U_TBMBawrg}>V5W{=Zx7ZEl`umiJFI~|E5NFAcX4JR$W(mL&Yvq^U ztn{A{#hLSY-Pu|c?r6T7Pu=?NTFX;|nCjRbpf4?$pWGa=qg;WNL2=p&>p>)QHz+mw zN#PA;r_c_h*Nl?I$V zoJc){-n~)!`1_CV>L@f%Zgob~#yr5oAn2HZ#K{|xyY!*1>N|}Ac88(t^j8DYpWth-IZ8P|9F>sEbeN ztr#6tJz4=-EjHwY$KWt=V7wVCP#T5#s9mS0qGX)+YbSz}X}c>k!8^9*3B=@MSoSjP zj@v7s`15*ym*l)-^tkc9i4K<`?Yf)$GpajNfR^=w<@5=ih!K~;E;5^+Z%uF357VwR zym()*bJ=hwd{0TcV4uC=FrVB<22kXEs>7VbaSg8a4(NroE;f~(+8bYspCRmQlVp4C zObT;;DWU#q`=0|?Fx41j^t?LmtkyAqJeAx0RLypqKpbR?L~0{>XkzjT=o1?mh|EnGVK zAK(RkR1}{(FEHMC3?4q@YG=eI?rDP>{ZdkcEdCx+XoXBUIppjPNEmyJ?V6abiqmP& zSV;AE@xl-w`03V_<5SqDwL6Zbt05G7>i6q10ew~T8N{5F5v~zNVOT3ndDB0pz7V67 zV@?a_l?jYYMrdNm!hI<8j0V<+(FAD)8ImcsEe|7Tva_g;UCs@dqw>W>=lM~Tx%Wh< z06Tse@lmmM3!usfWn`H>$}f^bdELmU#2Y3%b_=m-GLj<%J5_}kO&)YBm z;2dw#F?_E3dlBTz*4eoEq(3mx)Rm z+qzpqBKq)JK#(dOe^aXVQy;mp4fDC-R@tR_15rR-wT@WyDz2N)U2OwVbY$sUlNF>#5~9R6Tji!us+e zcA@}*qu&~3-2+*p#3`WACM#}kk)58~es0B^dq4KvU9JqepMD!fI)8%1;<}11xP+0R zoM7-p_@r@oTDE7LG%MFU6$&?R}9o?UZ_zlu=nhZ!FR{t4jO zv&y9Y=H@uN51ACKwXZB4`PsTwUFLtN6spFgB^W<>3QAVBhn`D7hX#W*|Nxu1-*u~s?GS<2ql zGw`z)sID@F?*|vQ(nI3tKGmR00CslEH!Zp7v)m<$ld0W_fwd|wrZVG3t9A{1)3u+d zk_jD1ae5QdtQ)fwn^ek?mF#J6L|NZ)CW-%FUXgTZ@7&~n00+|$nUDFrBKv}Glc zZ|~&Vo8$IvRH;5T@o%jydop`GYf)L2FzPs1V9WBiW|QiA;0%XpX@rX{91c;Ozrc*v zQW}9wtqL0k1Pk~|H6ZdAH;0ncI~rIB_#J)$Bstqj#}=+twfF=4f7#`l+@BNf(jtNP zyPRn9Rm{JX^#fnU%|HJs+a6+v9%MCr(l2G>9vLML^9?3=ma$GUmRkkVYny%p7ysD( zXO5VTOMZHaZN>~YAU(w$?99vQ^joZKhFQszT_V~ zo^xF0ST&Pu({5_>w(fTh9(ih5#=nnA4iILJ){E_9`pPz`QEt`CGaRkyDRwuNR}Foi zP5HzrmCq)%ok9XwIHX_78t@e8{WcPox;?b7ej25!C7*;|W0Ck~KXX~{U*Z)IUbll@ z)LC1t7pDupeWN;ci96jSdamO9$uqPaK%NU!f4ZphVd=B$RF69P-da0bwbI02@Lj(V z`AO>}GkPwPF6J}Ii(%ot3o?!qR*V+rfBPvTDdmqrhX-Sm9!QZP013FPZFv|;3veHX zo-ydz6GeYRJ6qPnrd^9N1}A2X{afq4wqzG9&6EAVn!oIj2ozrpuwo?|mj!@%F-Bb4 z!!{PO&+zY7MhHq4-;QapngkKkV`({R4sk zH9C>kcKlptqUvsd!REr)bg5Oo_NiuyYu?qb<~~_xDjM*w?}Cdw=<1@g~{H^&fNkc;&pZA zQzod`Tb1($O92Ml0^1>Sp8=a=I|HT11_g{K_DAEfffCt);Oszgl)y@B$CnIlzmG+s zGb}8V8lTv?GAC(@`~#{>$K~xaev5B=qo@V~ZHcJ?(5_#fXlAJOV`{<{g58(pkhnsV zZCO-jhLnBF?a%C=tCC2s(i|#1#`~|7+brtJ=x=RPJ6^?*0zEXk4>b6_0inm?D{pq{ z=Q3z(?AN9S8>N@0uD*?(`W*(qn>+fdW6@7*v)}EJNaT5YIE3QnT!XA!nk4^?vJ^_Y z=L1D1nj%Do4_T{~?`jLob%|R*HlMZxgKH>KCnNv)b->o_shIC}GM_U+g&)HqeQtBo zhhl3@hgAI`n*jZd43lNLsGV*4JX>EKot<&c+Vrw+X!mQBPVfeA*&e-X4hHkyg~g!< z+y{DK7LfImSolDtmePL@lIjHvvgZCnP&GA>i4eMpZSh81*%BRK&v_1z(~O5;yM1(O zOgl;_13p)%%?3Sl#6)V1r$Q@Pwt%k_Zamu+ZUKRJMABQ47mJiv@BE_mf2+110B=?^ z3-jPEU}jAo5P602d`X=iL3^_ zN0~VdH64|w`M-T77xvhSg z9`|p~b`4%FfNOq|oH7Q~53Yy#!&hc2)>NP#N0N)itwp^wvQ2&fPaXxHw}HgC}+}>lK4Xm0#Ync3*vSzh5e>k;Z?7 z>&Z05GWmB!RLuo=M}G9@vp`t}?!H(Ht`}ME>Ds&p$o_YR?y(zs`Y?SIxE&yU%kSP1quI)s0hq& z7B6}K$H?mpsVgemF$e+OH&$vD8k{x@^Xs{DdVuTPC)@7nPkuW=S8Tf)m^K~I`@6U} zu^$MIIl%P+RgJ?v@-2ysK)+()5R=02h!-L!zejXhW7Xb%yK?ZnBxh)MP*-!(lsJER z%=7+e>gVwtV{!XXknuQ~nt^Dry79C)B|GooKl1g=NlxrF5tLu$o;Ge;JUIhkX;(Y! z%t$cKQYY_{K+lI{7K;>aWfcIJrPqJQ$SS@$Qv%&Sv~c+FXH5WqT{KD%0_Ii5cFn~_ zZuIFVG&3HPK%R}G(^64s_#V9#$>m7Ujd3CTcxkZZbHmwa@BU~4$A+(oXu}&?bM1(D zO4zq{(617%YQx%4C!|dXiGBDWel+eFIG+>NCLMvKF^+f)`KAvbb`RLXqgCv)KN9auUg(`e3**VXzW|50ADzD*sYwzIAxD_b= z=!+ygUeVc9ZY2~11+4c@_}Epy#o4Zp@vDT)%5g~se*|gtwxfFrhyH~I)$`UQ1J5xvu5&Y%6T($kY#N+7zgS;xF%feu`+ z5M1M5oX~xh;=pbqRo_Z+t)?JNG2|kP65Km`+A#fei`aiW8!pj3&*t@>XOo*V6m$&S zcDK~8I;<9cOLkVroNN42+*0WRlJH4`A0fr((G?HeaEYAjI5J9|ANs-lIBb7~DsY?! zl4d!9?xq{7syN3>l923-P2!5c$hhF-c(0!rj0`x@@`?p$Z1{P%1YAxD?*)CLesLN^ zCRm)R-4bbRyRMWJ7*B9NxV_jzqgyW^{uAz3xcnVB_Usz@A#YmOr^T9JoG*v+ardD# z8LgC3JK6QR9eiZ`aASDFo*KgDA%VEkfJpkMS#$m%Cz485uXlAHxolU{W;xVxU8VB6 z;!0%`PCZhQ-+ic1M$r+SZBg6xESi~NHQMES|2C{x+jQmsWYxe%+XDsY=&<@d@revB zpb>@AY{rWzTlO=`umsiTz!CR&YgO-c$vclf`9tiHu5$tvSt)RPH4VAXdb})9Z$u*s zOuU|1m9EWdQUnsP_pLtB6x5<*S=?K>E6JvNu;QlC^%wR@TgEbG4>1FhCbxg}h0gdr z59XnfoSO9&14EOt=40Sh#*IA>##bg7qZs$wf(dhEObru15Nr&j=O~J1Pesifa$PFs zvjBM^#Y1ycs9eN6<)8KoDdQjZONlR@d{v_cetWC`koHjp9YTfn?uPp}Tc6B*8e{N`72*z_j6SJdnF={mJ5X zZ#X;fgOLS3TMNAEdU!w>wKL=UcS+`@4&ZLyFYMRG3bz|Ou8~kR1LEE+Y&Zsz=%4T+ z?j902qQV%>@Fg}c_3fIJ-vgvU^w2wH82U=K%@fb9@51$wnDRnL1smkn=am6NhS%tt ztjM%@mR}y-N3SEmY3qx`QCf|Y_tr2VsG5(s>3AVmzY6$Fy!H#hrG_7!KHPNAY zjviTz1jGZ2+g@DX+=aOfv|h#t|3Txd5a6JvN&oLTDzbcvmbG*| zEItx_JPgeh);*}>>FYV8a<(sSr~i_F51=SyQ&P8o$=|;Z`R_OWIN$?;9{xivM5w=B|o5epE$|&C34|;H7y>`(}aKchK)MfIhi;HkQVt~`Qqm1d-i`Wy z#{F>b{czv$-cQdSgTdHvVy(63n)4TPMXRgI;b4+sA|N2(D9FobA|O1nMLM;PyTIAPzc}S^UCFrThh}Y8D=etamgwo3Ey2NsXqobB)?cy#_i~PImVe>I!znfF?F#wntVNn89It%CE=Yh|PWs#;>=2J?5?=b~tNq zlJtgKfysJIkZ0>n=az2~uYOq6e_a&s9ajhm{&T%YCYgHtpBnG@9ps4+u{FWJ4|J;U(CwLB+I;)Px=*VjuDZ6IiJqSyYduWNhd;y``b30 zL**N1wi-R%pGy&pZ5thxh?3`ENyENcRp*7y6s6;{MRV(E;?gqwx zFXw%D`C}CG3N8{HFy6KF)Z{X(G6BXI0h9TAm4yRIUE?E)Gy#Sle*>2dwj0F=?CX32 ztVqu$_5!`x+D7Tm3zIWo`woefi$Z}l-aEs#t|whZ^IC;G5e+gjOHZ)Cx02s_jd8(- zJC5>;ni=PJv8;wDuyklOhqU3Jk>rDFHoNFgJ_SY&Y&BUo&gDJaca6&n-FkcU^d9-|GN-dV zu}dUWt6>%j8eBatKKXsa?K|eza`eN6d-J4xBSlwtaYaGpVg3t25`;aQc|u*7V7!?} z4cK5|Y89Q{Vj7MI#j0 zd+xgO(Hlxe%;)fpVOAxZNmu2nOu5T46$GNvJYB5!*cbZ!d%Rd)HBK%9o8`TWrQGm> zCwzWIMHHB8=`3bAy=G)80|Rm4w;M#$|= z64AEq3?9J(0wuJYiHV4ZptEVi)K9sRSGWw=iHK6_9G84Gy-O8!IxpHQ3|f?9Dsq-u z-7`TtI>UQ{SnK?!)Csz}B5Ye(o-mQK390Mq2FRhV>FD>w0$VqQ;pn;&hicIjA0Rhs zR0rkOPErd!9?^mSW~3mnJql+ad5u1=$=)zfS7wJ^3XT9rf`=wj|2&H!{eA7}PX#f= zaHly2LT00?PAa~=m--#9=~iIy2<5cXdwrfm%~LcSvS-L>xC#E(BSkf(>K^+G^yDjS zDQ3?ZJXhQ^-;%sAQdAO8;EBxPl#a|U40t^?qpR0-?T-<;*qO-l1XI7M=F0cQuhvQO z$UtQ+VD+9c(#oG*<>&1M@7NSMxJxJGIq;jOo6nn*TIgG(!(XBlPEzX-4gcLa$wrmH z80()x+}#`3H#Qcu=zjn9-U(Q|pyalMBcCL(@Q)^!HH`!#qcKi>Ww3rn!pU>cVw@`0 zX7tL`Bjt1Eebg^Mv9h{=@xdIwVgs7*9{cWE18c{6U0pi2o$%%*$KB1u2-Ip(xr%DM zSmr@XwIV8DwtmmU)6{;tBI~heP8k_z+KkD9FVyvNpI`N9F5xGH@&^28 zhbzDhcp>djo4mmLJ56I_OSR~|Wn-pb35kPDQMCZKZP}A=Qv-Ep>CA=A%|iiUL!}yN zrNrp=Ivi=Y8yhDlqijVrH4?AlMC9NVCIRcPyQLXT5XkHvw2O+zS$nrh<*R75HMZnB zmC$nm+A)_`l6i$0S&-+T(l@CNgX4mQd4`^jofMVK6Mp4nFOPfvFEc52Zq76uSLBCd z1w7Z(X|L0ydmrUj>z?`TSn8CDN$CC_$fv&8b49Uh zSJp~kj;qTHhv1T;Xe)4Yg<-2z>oj9u>)!;VG24FkN>8W5+ky78XD3J9?P$T}7nODq z<0^{Xx{}u7sw$JsFM)buOYO4ZRXo<;XjjDVeNTQURS!=q-9a~Re~lb#8XB^(>2|Qh z65r`i1^%#|?_5*bC3$WJJh|M9z!YckMe*<^l zo}=)~MU)q}EE)2OgZo5MLTX~{!@CeA9iDw-=#~%ZaciCXKOd3YIx+4s%rm~IHAp7z_*Oa7r$BT@7)Y=AVbafH73a;K zk&Ouvjlf=(PS9WD4%p6(3QW8xoUtVxkTPtjKev)iBl`CsSicW($UN~x2b15@VxZ8w z&OJ>$vC9GRqZIXA8KecJehzgn0rLIs;}FXVL%qS8D)X#=`H-7P+JJ871&Wo4sr(Ku zT2cNdPljaKbM`(S#bmv3J~(g18@c?Pryj?SQX$f5TubEbTOaCwbGFp_|U_xq?&=Xv09Pp(sFZ9pm=-UU4 z)J3I!40E5}l`HyBt)!bGN5iGhcS4V#dtBp4^0WK}e&WFaqida!T`n_m~UrKf{D*dQ)iBhq9pXi@Oc|Rs)>X15-8oyT-*AkgUe=yx?ul9Zn z$i$QH)rpaL@&>KjFECpp8<4T;irPo4)db^dA+t1v=Z|`Ki1BP~>Ga`OG2c`3{(`#g zq5B<8Tfcq5_pho&ODMA`j&FW3C%Vr(@kQN!E0-(NfghsRz$F0M(%r{mwY!D-BlcE# zWy3IJGZ;j_WKZC$X}DK(co3^fGdeKDanS`3!4Ms==9utREy*Qq;vf-!lfJD=Pi}Lh z-(a>KHC5zb=E&CR=$_!|MsMuk@Q2arR9zEeNFX!si$cboNBGZaZKS?G!O2Eqjgs1M z$PXQPnapg5ElJ%NH;THbDznoe+4$u@$%Zn_^H5#8ZojUxn##K7|6JM?UjRT1GvWD= z?x{MlBq36XRd0~x=ikrXXC#W;J^hDfTn)6=R&mR1wTUXvo3l%+of6V7$5Lw7s#6qZ zmETWI;mzD+WEi9eY_X?%ZQyVR{IJr$=*8p}C&3>1c>PpnORd@DAd^Q;yRY|QbGHsp zuR|5YQ?@-nC&r9O+XeW-tBje&@8_R9Z2tsWMsCNwXZqJ;LVtJn`&IlAzAI_g4j{6 z!g-!9(!gXLlIHko-&q(A6yswG2TuLfCN!mefpSrrAAU~GH{6erR$d*6BdnrRZN#Ln zpYA$%W@rWf-1hZGG8A>BI~dt&rPGy#oi*9G?PBQDr6MB<_VAMD5)=I^>@?untbblD z8J);uF3U-GJ12r42AKA)!m8!5!=>OH6?Z1sosMTaf;H|Uz_6z%ko2p$3|M?~g~&$e z(Cx6p8nM8JQqPNgO{d+y_-+afZ~U;I)vAT?;>Qg2kaaCY*pnem{lw$>TjlbpY#TH9 z;yP@~%gY(LxMs5-508&)T`s~76G-c+5^|JV^ox}{v~ei}N@E(v$X*z|{`RJg-QT0- zZRZ|qI{!Vv@ozs(@NIUy_;2M#iSGS{-Qt+Rwc3Ed$}9g$m$oJN7e*W$6W=&JQ)<|q zX#8KGWsB->q~RT@?h&Y6fC;v*sMg4OT29vAkqJThLHEvAQt^4%@RugzYH{`%9K?Sh z;Vb?DbmWqju-II%YOXePJ z7hLmt#&zD*gp;eQT@w=v%W8e-jn$W(4LQf%6=M!r*+&;@jgCj(AMZLH)RxG29DL(o z#vye8P|PPn8C5W-og%`L;hK}I3#V%iq?E-|gq_na!DM^hKN>#t<GyL%2r?9Vo8@Apwo zTHm~QzlQomsgQ+kD_%sG&uN(s3^pyx`F(R*dD0g7w5)pZ&HM-I5!2L8ns@Ks)%g#q z0=vwIRCMPtu+x~o7&t@vC1jG((ZMd;Jg5}CQAbPjNT(u>?(rHM?w&^X4uX1XyYTyT zoABTIaBgfxiBLqiMAIxU5B-vlDyeHJrx00*s&kx$M3)1R-A)yAHQU{I1$LUdQkt@7 ztCb%AA7ZrA;m38S@5jYeTay2+#9tT4+G4INMi;!(4A-qW^IFDQy1HDao8s&_j?4K{ zv*|ns35PlNqTa_vv+LW8f!e15ej8q8m6a(e<;%&kSb=Qu;>QgRE5}9d>`9!~A6=lI z{moL>*S)OzKB=5U4rV{j8Fy0I8mdV5gkGTUW1xm|2lf=4jIGQn#SPL=JKcvXe{fE} zUHaOWkov3#zuzJVnjKchaX##U)k^u{@stkyD&FXzGAW=X{l|GE$rKEc7E;w%r9FeT zCwL{{Zl|$Qk&I_+7z1z)d!8lR9s9qN6g9xIofh$D;8>(r>HOr>AoNo~UTJs$_>M9B zepD%y$Lg2w!$1j}RxJ!XeMOwHa7w85v4}g4t$%P$>$b#T0w42e<%Un{s$$xWn2*kH zSlBuCHF5*5Jc>5hejo22^D63`*rGOUQrjylm^!^uD7>?|pCh>>wbpN{-)EU3l{Uzy zl5m1*{sSG%8#7{Mj_A;d$+93~Iu(^q zC>%dszr)X3ew-Iwg!f&A?5QSsuSLm-`y>TsHo>=^ETxELZA3B*oSe&f7E~7OkSx2lT%P^4@*Hs`em}H`kGcH zGX6+L>g9KD`;Y!qp@PrOb>?2xR%S2|FZ^h+q#pjyTl?3#&6B4>@}f{G$bGmix~t*v z3(0V*dC$_xZ0M9aR_+Y{BL*$dEMz=wN|mYVV7iznM}X*r6L$ACb`VIR^-u_%UMsK%45 z==;|#K@(FYO$UGZ3E_?7Y%!~oR@Z-i>$cnSdMHn*UdjNaR)7FxvQfX)fD`{^Bq{7aU&E0vKEgKIxHp!At%s}8vLWNNS;z7*ZzE`kX>pM78@MDI z4FI|07g83M4I&5rx9v>`W@+vK`ekdMH%(e>8(9ojg%;CC%YHt)A1&&8grRw3qE0uy zb6arVP&?|kJBE8n1P7MXf8qV{T71|ByIP*;jF<>+Jb%jgR@(fV&C&3u@kuYzOgXCC zTNmzB?JQiSUiBb~az8QUL<6RnO(IK$2+3x?q`;O+wSM9<7>ai#kAQ z#_KExIsXC|TP#|u0&xcSNSEBem&pUc;z&VWl0gsxa{giWq>^FnqyX0G z!w-x^DUn}qE-H-MR0HnnSrU`h-qT7eT78?-sJqB=zwp$;lQx)ob*c`_|MYLCDu&{r zokZ`p#UKoHzlA@u&47WQzYtO4<1ARlxbBzfya2%b-f8XOpfAEQ)}P2L^?#5wfEt@p zJ|G)@@+l*2y{Dy1C%AHjTAip$HvCcD&N=vGZ~$xLGL~3LR<@|Z@G=`j1x-w;7Ue3} z;Y_02wQh1;VoFKT26Qf@-(POf)@O*uN4&SPIPgRpChpiEi`O%=+|BDKzKVr~>oW6N zu-R-yKolB&A%K5*Wq=0`RcIF>*~fLmAy~8=Iej&5nkDUgF$&2%7%f&fd~y23p*Brcjs{6`|c~J0szu{P*tCzNgkjv6*v+z zqYPVX$7lph(y-Vsr=|8Y{J2Ccgk3^(VBN|8#-0Zvdj0AjMHsCzK zGN19%+RoR1iK`pP9zc?NvWCXS9Nyk77s=;sr>9?UVf(^XpDNJSnYA2KS+tx|096UP zR$mVwM$*e~oJu*yoCREMiU6IL@e|7d>340dsflTE;5)Znw3hui_NrJhEe|lY|K`}_ z{zgGMbT*qFJ{viZv{qZ9351R!2}u2u)cmdXJJ!DwftS^>lf;nBClL!v(6id|;+A56 z9!pf61&3*`gkfqEmY+#B3Qs)48nE9#k0kvoEAmeNztwSELTd;C8Rt*Fe)BSUrsX>h zkR7@e4Z^+`gQj-KLUuvX(d>A;d5*jJRWs1-h_D>Jb0CGI?&c+>G*H^IH4OOTFUS6g zeV^F>z1ov<_!SNx9xlPwj@LhJYSK>FJ@=VGuu$VP$^XL?-)5^j|=F-KF*a^o?*H&#s&&8GEc5^t=9n)HI zSkFqme`QaP$NQj~mtYWeaiqi4-iE`x@Opg-mXnT_!*1K6X$Ajm3Txi#;&;|W95*Mh zoN{91w09k^w8zEH7Vp*l&7C?nRyGcNH-~skslDRtPnAVt0 zxCpD7C2@VpH!>7-p^6J=Tgz-+8Qxt+$7|%^*BO~TQ@i51lM8|{$zgwJUZ!VbkI4kn zNahfJSnp`Ms3k`P_9^5(`eGTcbkYf4LjCJ#6awNt^gdS{KYH1dJDKGmld;j{wD(Ku z)y8Y+bF#G2jQ(UyGvgfV2sY!B>wfXKG1@(JD7_m8CZ-Jrd~mu#4oG+d2W{z>F=gFK z0)#wB1sQ*~8;-3?+1blRI-*@&)l{WMtmpc=eXsvjwc+spCB}qsg{u>%)RpdNT`uj- zM>_NHnSB@*B9Gffr8QVu&4nZ11XYa_(vrbfvm+X6?dENUk^%}1h*w|h-fbOJME;`A z&x15*J`H@ztbf$xOBS={-e;!V!DtlEuf?XRvP2CF%O0C!Y9r^fZmxigE>taTqdOZX zIzsIK%7oFq!F@g$VRi5B5->+t0hVU6pR^N^`_hbIj|v<57+3D=&y98LkCqBNR&4Nd zZx7E~S%kElq`VMi5GFmlEF&M3iD0BmV>1a~kzQh8rFW%&<&{LN8Rj@v$^rT}d^?ZG zszn&fu81JkE|)5u$J1r<-44lfljuw3cF!N8PY#Q`)c(3yG0apu#m^`teEcWXiF;Jq zrRG!d@mpF+5w`ok-XjYJF9szWZH3&9=?u!2gN<1~$a0y1B?(i?q>*}M9)UQsEZo89M;~U-Ed{)z1hgccp7ZB__Y$Vg$HolT>NvKG4JBl zDbmDKF_xt*^Ej3bHEiP`oQ1zY)0p?E|C3lhK~w(&;}s_j5%3B2%Gfm~%P`JmBO z7lqPoXPS6L`RUw5!OHsR%+MOl41A`hFiemUH)VOMY?q>g+Lv;$`@!H_MH8bs6OCQn zaef_e?ERyALa2j^(cyHZyI62rV{=d40G}P%o)#Ty*mp{eQSo3l%m9AqRyjG6YYmgZ z@Yp|!(i%%!nb*5&18Al#de002GCeE;!)G_in|x6;~dbbL)873=RryC+{$} zoT)1nk)0p}hJp~fKh}SPd2e4aLVS;P$1I^oUS2nFzpP0oU3JhaG(P%;5bauOk5HwA zHNPob?fw3z_|r3%K26%I>QxorBXub`K5Wfk~sI_vNe4gGo((%3<><$ZbW~2 zjTE0!&fJBk-@lt&PT;3`GGJi1M@{E5&utAKz2e+HGWYBryvD^OD0esaVrI$Ct2q&zF&J8sePU0 zANuUOH8OWRJ5p$0EN{CVX&0cPQmNeaCRMrp1eH|WrHmiPb!pw!b*3-}@O)n@$ZpW`c8S{0Rwd=!JH$K)GeZfFN%=jJEBvjq{^%}z zh|b@`kV{+pB+E*VWu@n@f-v7}(k4TO`!T=5OKB!+l8FUVFvbNn^pRKv2tMaSd2~2p zgUY-cE4Dil-6O!{ZFC5u6xaNqdE(1a&1wv&1Hly|l7atE+}#3O=0`Qc3gJ5Ez>EhV z;uoa(WXw4g5Zs&>NBW_Ew0@1lX_G&Gp+<{=5$Ksyg|`CL$7_3{xvN`5?NtMi9!

gzMsZ?Pw=d=8W_F+Q&N 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 z%0D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%0A_YWU;<3`6z1kYycrhiM7|I* z_QQqYA;oe;IR`+6PBMCXd&PuXLfccYv9bS*Y1N+2`w~Pgb%ZK1+YTmkI&E=Y`98Wh zSr0_~J{QO_=Z4tISW8%zngEwQ6q+=D4cvPf@P5^rJXX&w*fsWU4wtW$JFKdfdSvoT z_O?|@Y+$vj^==V0-|tF!*r!b+LNatgG3(GO85%%p?C|SczIQljM5+F{2-YwZI;kn* zAm?avehoOfZG^g*s&?kbFpB zJCD5liyKAJ&)SGmU+|HzPt>h2w5f6xOiMpiM)qrcMqd*ULlmLI^tc)Kpa`+x<%2y@ zRPOzHU#%f|3!RuAXSQPPY&>i=kK$|PJQ#{QP5In3)oPbo{GK2h3mg+yT3ibS6=Cw* zU?QON674orp#k|NG^<55cCQW&4@*4SJ6-kz1?G2|8hvNny--L|*KIopvJFO;*q-5= zv;yb!{-BPI@6b9*N{h#!dpkzu#psuN(LIkb9Wpv1 zCiz06xvi-+3d-j^XZ4nBfl;r8Y|dMXByCoF@uzdi8C_Oy(|-06SMKIx=XQyxJoRf- zGs;7`GcdYFM%dK6m%~PGhYYm7SoRqO=n4DjLz=f=QVu@E)YKins(5@ci&6cX6ol=L z=0*Y#Hp~cQVUp_QE}>W4!1%IEoA=QBl^gD$k=u9XnrEqQaaW_r@%43cYDI-x!7RNc zDgfYE(%^woA!`MIP?m*@5(s-Kp|E`7$-czd`s(Ni3S{&7Ad0a!dkxQO%kwTU8%z(j z38U>pQ;hQ&Mno-z(VZPQwM_0T$xyFe!T&?H>HW0wDlRLxx~E zx8#qh67wt2&iO1~ zM|=pt-p^ns&+2Ltj@61}1SaotozKE7ea@eSNeqC#9=RmCzoWa2$N}n#w9=t;y{bl z2UsywG8N;|-Bi(F-bttGRvnC+T9B;5$IcrA3;HA;Eb1hTA!7+Hy=GVgeJDE;?=RK+ z+Wr_Ynt7H>7R?1i&L)EDp%O$ivqHBzR+M8sszS{%NH zw%TSbX}p+MV#}}$yn_t7*%23jk$;65^^2KVqNVuWF6X<5@(~kCUG83gKm90=zK~Vf z0<2<|ef6R4?JAj;0_s~DI=DvKagi23Z%!rFaDcRjS$FZ7W($X z=!x!5(!|hw;oF};zItMOQNrW`6HdB)Cd(9$`ttp-v;#0}O?GJLqF@(5;oD1Ls3uwLcSizN zHz1jSX_No{=Ol9gvsI{!Ohx`eK&w$f^e$Z;TYb0gr-{eO$A6v_3GbAzz@MEdq|^(Q zKlzge-ZBx*hf~NUi?~LR0$TSW8m|XGs;;fxVat!9tqX#H zLvr)Ar0o}%1)8EpU8$!Q8I$r)t$qetCDo0wSYKjP#-!?7D=<}mRyQO3e;#oZev_lN zc&aT&XeX_Y{AJ0mE(5#@+9roY`iRERyMNcu{9ICeZ%eYS=KWp z#M=ovL!T8ERzVESN@QzX`4@lTCi_$Dv`;0Uy zylf97_K5B;iwwLumKevh0GCbLZVvsJ;U;OnV24m~*EM@z`BGA&@TSux9`6OBn?|^i zEQWUgLRt*Z)ewa8n0F}r#H)QsH;v-@z(b3}?x)C}qRxl3+voESs|eBoq_i4%7>el= zfJ-Ovwb?TN>!bkx{hfjX=h3|MYZwC}4{yt3dx=2H!GU=y>y3ktK^oW-6x9p_ir#Ia z0m_%~x!zq+f{{EO?cBzpgCQ2}Yq9m=Emosz6R{s)C9xiOxnj13>Xr8n8)^aJpHhbl zoVxvh{`4pxGwN&ga)$oMYqx&&O+DWq02oP0I)LDJ8%TM7nNWIkoZR{C5~0NUg6U4lo3n3SPZ%t6@md$pv(%UJuge|+EnWoQ`?d~7CJ(9P&K zS(;K_0sz*Z84$}~LHWeuj98Vn1T;u$u6SP+T_B}e{4l7>uTK~O^PJY2E}SbxWKhEl zMNu`D!(>B8krpn-A?pCj;G{-(A`tPEU@+y#!E{6-xM=KrVQ^#%d$yFFkTey5At$R2 zpB3U+uvEVwyMMJo6dJJzOt-Y#Y;+exL5fbEyXJneERa%T(G(UyigfJKB>*XWhk~CT?C&$ZwD5P45 zS1|Vji|P6}X5O;Sbf^ZG)cZ<^pb5Ovc&ib`U++!{0*OWL)?5mq5jn9G)#(QibFc%s zZ-eqxR$BVBX}F?YUlMc`GP|&w)!g*guT55JA=4ahKYj`Ki+*WyJ|U2q?Uk4?GWxIc zcaro@w6ugdN+MnuA=LaNH$X+65hxEKNXfJV`B-GRg!fVd}Y1RHkEt0PjHHdor!SSd+rpRrY#U zTg>YS|y^trUU^SLUmhB5)Iq8{+n$!{CM>A^liW%j=NnjERGw6rZY9)fRS-Qfm#9E zh;_rL-8{=q5JvQtr7vL1LnY?gBtL(Cl4xMzg8zlJhf1$0U5^W+*N@%+e0HE?0cK-d zch6_-X_RRr5?pEj;@9SUD%j^`Nj~(Qbcr=l3h}N!eAN*)Fz{tTl-hLnM~Em3HDG&w zdcW)jtg1oH!Xo4~Q{j$D8uy<)-bLI0mB%}h*fF{8e_<|Ohz7nSRSUJkYt`7HHnESd zFZ?>x(7G6HnwRp`-2L-78A(FFP|UFKUt@zZ3-vuUu5{he7`2w`Z7F4vN^k8;Pyr-s z&zf+?r&4t6iB4OipRkAt@IU#n{rl^Oc(J^TLN2lUg%o7yQa(GLvq8rKTrB^IxrxKg zyZ3AezkiPcD4T|nN)ZdEwmV)%^>usRQ3HNoc`WP{^E9X;X3w*22Ef695RUn#DJ})ay*i{tD=y4%GgkkUIdVuKl(*kqHi5%SYOqXw*cuXE5(`GhTCyNX&ayc9mi| zhk|2)dGN)YT97llvxrdANqPo_e0XG$H#q=c_nPh&l#5n;tN#yX zi&|C(_Fj{4;MR$R_Z{Q;cT)5WcnRSog%gP)D-HO6j-jDSMs)3)ZwT)XhkOlqWPu6z z6x7`F0+bW~zcm2+$!2#Fm?TB2MfD46CZXR&OGE<2%s$Qk<)bO_XNpLv z-DdC6;7VioX#*EY@L>OkvPsCQ7d``TYF>0@2JRp!b5yg{eYcy%E_hoDM{_Xd#c~(D z{g;~!%*;B_{zav%TvRM}{9wsaPznG>QnN5|x_QSGVD`m$n0+bp(n{07M`zL{VcMzO ze>gK#uv|-Z{3q+-Y`ex4dLj80?(pjFz`9ST46MPOifQ6HX+Yx$r1UrWKUTBV(h+qm z$hp81RkqB5*#3Rc!{o%*Se%tw=-nl+9u+;?ew^rxsD5-8FbfP?G+97SbjzDXBivBg zsA6rnD!_ClbG<8}dTwOCaOmw zSI%X$9(yu3?BRkk8LIfvrwWG@3am4Y^`l**nDq7Zok>yZg=>(L;3Zt{tqKQFE<4ry%;1 zaQ~h!X~q>JebUk>@__Z)O8r=>9_Hlu!oX zg~$v*_ zwdBU?lRihQv0m7{jT8vyyOUw(bR<~`*by@VfA2mgs|~F#mW}wKhJaTq5;#P16t;&! zSu@6ozAwKo02AXsHPq?kSn)AI*LUPM`_{wthLZ^JYYK%fbzX+JZBEBoXpq(Wn&g8B zS^8OLZz-CKh9>0313KzEo?s~h5RD<3BJ#cv6bi3u99Z``5=E63|63NKp#7@G#vmZ8 zu348^uy~9D1j1b^sz>3FBW5aYG?^5s-Wrr*J~-GYL|r<*u<2`}V2+n=HUN?QHfHPN zTyo&$H6Wa<2xXiCzdEG`YLrp0 z_T{`4#@a|5=ZY(7Rg{#%HLPz*YMi#Sj3JQ{MWWPd0O|vz+$cr759I=41|kUY_O0W+ zZlzt-%AEWYBG9nBj9#hf4s=?5Ad-A9zLLemoH5tGwmOw%T(LZwtyk;F4LzRpe!e!~ z+_7@D249{Wyf)yOfgkz2I3ZMKk?T!LVl;-S^Uk#YRJL^MU3vfzS2s+5e?BNYop!f2 zt9Vz=#8j8&<=dU?<%aLDG5$E%n~SnDivI)$>|KLU>$DBXd#s~ls;Xw4FpKIg5Ih?8 zrCbxcRSUsr1a??nT$*m)E#Bbb=5gE4HX|U8?#s!l+q9(AMqP>&FXN(VyzZ#oT5l?C z&uy9eHIy7)rNoyW{I1Dod_{E|2zLyYYvR0sYF}8#6Z@4L+{~gEQPIF!%B8X!ayrjI zvr~S**qaO5yWr^Jx(m$n%P$-Y9aBGyW!gQ&ln@&CR!wXc0#|e669BoI!*eW1pWA^N zh?YcvWwWh1J=%BhjHUYKq9l%OwOAE^4{NAc9~9s$B*Q3NRnwu5S6!JYR~dkA2jGVU z=ahRzX8|0FHO+BDBZt89xDL-0H0`givQDH@@VsB_zEP0e94%zijz4_@%wz9&@Ci49 zIUec)L?PU}+b|WRgFzm#sU1}*GUr$mn_cchIig)wpT>}u5QfrvS6kaRqc3(+8{ z9tTlzEKANV-s>8Yva-So3ei_7ciU^0z8C*Es^{3hX`F58BdOhA&o=+#D4zLv&gvY4 zj9w!^!}=%k#01xP#U(ZH>`AuvUyI zhkMj4+J4-D0Kmjhw6z>kVpr#~MY<|A#T&_Bq z&dHtx^0}&ECAX) z8QcD8Z`=c&lnj=l#QB^ZYfcWa(*Nj&y zqX6d@ADA@F`-(bQRa)a|4kZmh=y;Xw-Z@euPWffU-09Qd0*wCx!j&M9#=bzzurjb0#gE7N-(yoz1dtj}ceC{chzsNVc5U(b3;e%j z0>pePK(^a64~mkhD;UvgD`t3xxI`dluxiy6i8f}2Aw+#Tq};QhG3H}|ljGelD9A}> zea+qf<{qbqRDbyJiN)^Ex3jCmyvts2aE=?UauETLJ_fY#SqQt09^{)2-2V9Z9~2c0 zr2m1El4o^p08FF;RF7H^)y1XNV_I_CCP{9=uaEL}5{t>YU!`vU+wYK>#6 z!EOWG3(g;nHB_ZQr3I2t!hL~f%NP+7p%Bgjl%lNwh}j0n`KjZ zMyOkp%9C=h2Sp{Rz{6Du=nyLQpM7hAU&d0}k42&=O3p+-+c6js^tU^0dhRW@QG1Lm z!zN0&c3g>B#8%H=#3E?&Dn?~hLMVemSJlN!#eme^YN40e zbFYi>(+gerLb(*a@t^j8Ba3|dbPd>VU5y>-+}vLc@=-Y zH42=mG1f(|$v~^pc(p+^@fFajN4|KwMr?7tgGh`L83?#-MS+E`&&bGvje7_8hi0$s zw4W9du`AUxSDPl1PvUx7N*eQ&ClgP2~U)R2(`&ob@AoGNq)HHCI zw90aZN8o!Q=sWx7R@^M~Yuq*mJpkkU{EiFj6IA*Q9UF;$*-2Z@5qG#ce?xJWK!a4Jn9|^4G~srSTsO;@m5;@?s zI-F1XdtH%%^=e2Y+~p#ND+DecD{%Mmk_Q_^hVGSjq4$lei}NM1?fT7U$W@CA5-Dx2 ztLQ$(n(lt`qH(l4yYT|NcXy_L&$75W1ga^&)j`y;Q2&}t7gz%AqERqmJ7-;DxQ?I#9$=#5E{l4rlUDX8(3G)yr9lw{Jc$d?v7jQVb}N1gm!|_ zMqwbql?^HrAexyz)IB7TXZzOoo(JYFVY9|#U_K2dsEpX;leTJAv6NR?OqBr?Xl`-E+-?c{IwSNv6Kb3|fV76#+j$$$+q}x5X z)psg;ny!in5~X!t$dnABDL*-8-@=m>xv7BXAi#25QN1t9@gOCDVvh3DFLMg zBp|&A5%@rQq)Jf{D@6!j5C}COy^DY}kuJUW-aCZZ5uLT}!>n~@&6-*BaL)s*JRHd0 z=j^@z#)a4AqognJ^p7C@*aw&BD|AT*nxZ7+wTLl0wZCZSu@Kmcf`Fgxb> z^#C2PicMfA&TC$WN<}J*WxswuBLsbf%(DrllYv_zuaY%`*ZGUtYA*3`-xTz+fRCDD z`UGrc`urANdm~i2#jI1XZZzvJNJeM3$v5kH`kqG|c&ohb6?27M&%>>0^F`52K=A7v&n7&^sPVu{#D6RIdYv(M&GrJ5?6%DI^DMo_kIxyyN+ zO2g3khwI-Kc-9b zD&R7=GQ=bYoJ(E8V1V*XC(I@8>q=ut0nKbETa>@jv58U$K4(l@0@6hbDG6QC2z(qV zq*-0quU`K>T-`MVXuHfL5Bi6Oszn-j!2t^Um+wX_k?n zHTJu~NU3EOw%~6vhQ36cvU-D3q>K~*(l5nTzu~nZF{k(rnY7EVaBbXHy9yNcSck<# z#mlc;>`V^&wd|C3Rn@aAI|KsyK>j(L>dUfgU+~n>HMG*h&Cf`Y(v^Owb~|i3(B1J^ z{R<*Zv2aHXCRsJV-t>x)%$g0TC2z^Y7oMfT5uI;l*VbPViAt+j-IE8e+~Z?j@Lck2 zF95aqAKiPnwQUHjpDZ@XjW#TrZf|7V_7BHfr-it+-F+ET1?8ZloY}noDLL6}AYXrU zDs+5ub6ef(^ao>4Y5@CA<}bt0=5`fxF#dP-PZa!!RSw+`?hD8pznSTBSsV&H zCXWsnWqh}&rxazm3FSnQihZK0$6!aUwHe?bI+u!&gmN^n7=MH!%KvAk;Yb8#FT6x# zYv<56U$+>CGaK;SUj{;D=cMnu$TNxHqRuKtGoOu{aWG`n&Wz@;zNzU)t67L>zJ(a- zq2_oTPc@DqzKID{m>vKc%%glPrMRPQNJOZCmb(0{E+qIlHI~EPa`G5bB{DnYrN;gs zbZat*y;DM~xC625ugNPnvLcZbZl|=@bKl@_mTRFepK6>?3D+AM^6XbA0!QG=?l*}^ z2T}8ULrIHz_|D`?D7@q-*OUI+%hpgrZwK`{y z9wTWf0b`rVo@p@!2DZw&clv`*)9VI=(98!^O&)CqrhsT`*2y|9=?tKi-aq**k_eX< zhg4SpVyD)!x^Cp1{?Si!o%?4-Z^Er4nB@vB#+Q;EWw0;h$O(!d>JTtH5=KZ0 zz*7(+w20$(XE!2s9`~aootsYo%8P1VlD3)lHu}OsPwbxUjl8Tg5s~g0Oye4MTRLN& zt5LtDVS$MPwDVx8)B%i88=x(Wn%}pBy?nhxk!0*bDBpu753O=@I_f1A6_JbS6S>(_ zP1oz&%t=n2@=Dvb7x%mSIV8$h*o(d%U%7cnpT9ax&vS%w@`ooP0TMg%q zLO7*-pKX7r2%4A>Vqs-%SVk853d%U{(Wni3F)ts@Us@Q*;l}!w+(KDj*w`bR{(^k2E(R4tXxN=pYO5NgC=lf$ zQ*2|pafUXqD-V;&#xw4y+&(eN(J@DBAkQFegi)7CIC?uWoEB7yB3rmJCdm}>PMbhm zoDk*yyw+UfIGxV1o=ihn@OQ6^bNDqB4hVa-C#R&O+9R@iGybtWaMF1{?0YfjR`l5^usJ|#beE2tyzSRnRy4vPyBe9sb zukek}Lq@(m3SrH2KX`Sx@F+>oK)To144ZBa`$wfS zdg<_?>DIICqr*o;9n|*lQ5G#RV|`*9#zh)BvcXM?Y3#1pWq@$vyrbvA<%9ZL^+#?$==IO1b6!~vSXdsTy~!&chlsfPVEhC=U!b|wUQJ_!`??Re-cvHwy| zcYusj8#;VehG?62+uJBzi8WfjWo5H-$^MMHMjk7NcLlaJM%QHp*0_EW)ANcFR^@d%}NCzp?i zg?t|vN@2##NK&mjIn+1#f?Mu`z_jcdLH49DIM9zyh;^gQn%|)4v+_x_N<3FC_IOF< z>A410?{Td+lF0zD_}n7gTV2fF?>CVkM_5>xQ&1HZ)}llx8Ghs%lBTac850>F3^;en zb}Pgts?VA!QtnQm90)JaIiKziD1XMfchuFNCO%-zvLOg8A5 zIsqi-n+o9*A9{InPdadFYZx(k^VFK(J$?+6@<(MhM6Sc8Jli>TJgMoUcwi%4;<}h& zHFrxV%Xha+_VcA1(?576ZCbDO>ObHe`4kn0*DRnaVIS6 zD1{y5be)3oXy4#QcTLg1I1XH(_Pb#bB%ZKGvFCS<%dzV2BgE3K{CpRn{4;SFhZ#LB zFFP$Pe{KHkUo))?&9T-atI>=jL$eWMjp=9-CDy>2xR<$M8RTo^}Sw8yNgz0!Iw^Ta>=4i`x9Fv%p$!DD4op~9e{hV1h>R0{S z7yuGJwHzrOSQ~jAj3}uz>t(v+&S7QRh!1$Lo6M_3O34^0e^e*W%lJ(t!Uf;j_+Gx6 zd|~HtSLx?HJzCJ=$5Fxqy=U(vy{Irpl4L(R_`V9KEZ2Gb=(3Y>{&ln(paZCFYR$j> ziBq_^w1@XVW%^}~Iid4n0xPNF9bhgq7a3`h+FCECH>r-{utxRrjK5e;iw5XH23|wd z)XQDIa)0;dHRi&6Qpc$XE?5Wz%_MY(slOQ+Kp$O+&mo5nXm)E?Zzzh9aY zs80+YNa9{?kzq`WZcVd$@_4EII)`D&=xQyo5=ov%itzq~x)5DbEGlh-!t(c0&i!HHg+$LuO<_?yuH-8;&Er0MxTQnACI1KVcnAceG6k0&ng% z!K4>JRRfq#>s=`Y}2u}&g%5Hhc#)g5&vZm zImlA>!JUeMQ!cGHY>@$`+`s?+MA!jE334`*wCZ^3SA)gOrbj z_3+1>AX)!4mm^V?erbDIyge9i095E|tQn?z3Sb(0G11R*e4ZqbmXX2@@;slEJ#KYn zG2#@EFx`R)z7b7FntpYt=dym^;LVhpV3E3#ZGpVP}}wv!Q%uFAO82WSGMB1J!M z$X&yS(?1kuerDzl9J55Bb|It}4i-B14T(?`3y{)Y+yS(3i+_muOG7@<17QY_(xXgd zM00H67{Hn~?9-l4QKW`Ey4s?rofM;Rb*f91bu z%cxBjiJ}OM({wzi-ZYTMX;OiPF6hhfGPXnoyDj$Njcn(?Rtc^S$+ZdbG0hivxU8L&!UA284mtxT}&fB{$MdpDSS)EVo0 zi9J)^6Owd$)sr?}K2$s0^{Uq3$jk+l!m0%^!huR~?&03%w}ESjhUs^w&Ed*oQ}Cdz z#>u0%g_RDCz$M`K(aNd+obRQC43UakX`kE$8~dUgg<&4{IZ7;Bn(dX61SFbbV`h?# zeR7LZ)j58N8}oXXR_c@vfugY20dX$V2p`!BrZxu=Ch2KtSGz8kKhEW<|F*CG-{HpQ^JPF8`B-XbeTK8E~F*~OqSVP6!`g_)3w(9IS(-9z;03@XT{V@ zw;?3+Y^UB8N%zSvO#N_58MW+?+ufgMMFUKB)}@M8zOHwwH-khS7a}^(EE-~0SFI{4 zzNAxN8f6pk*m)-TodJVg?Xt+J-i1@_@)ak%iBAXET*gWagoy9k_6BQQW?Ee0U-w(; z_FC#??VJNusEP&j#gMy;HVP@ni!=tbe|)zGWe%Ko@bVow^8Xjzmsw;vQ1__$reX4M z)(bs$h$#<>lXDyIKy=s7Kfgs*F}TL7Xi#vvaLAeYbFNFa{WfCl`l=l9VEy4oucd3w z4@AU&1Q$3MrE4#OswNJ9hV>;*KNFt?^vR*#;UW;xWE*!oUk9On4d=GZ@7^hN)=eP} zlIOBIN(}RpYlgEGzm9*NZeC;MZ@9Z~1-NO{0sk!g@d}2(+Z%PU^@>^3#+OgMK^LoS zebPW6?svzV<|3VjipeInY(et1v#MUq+t}kI+qBQ}fmhCLG$viOVOK)N=Y^t=Cy~qT zC6@;$$w>a|*R+->7P#E4MD4AX#ny_r1zN9_R*CaY*PWIU+Lbp+&Tc&yAGlWulx;>F z1=O0oFL(0Vob$u#24&;J%0~|TvJEe-DL!K;K7B;oPFX8CB0e!*v5q@ec@9{)ft|I+ z41w!&S{VVpOh7~1EF?NX29z6o9@k-YM`$YU;2WH49#~b--fH`(;NEW_Ky({J8<@bd zhbv7?G7MH%2@doyOSkm*8S%%}s`jt=$PZ?NF}ge6)pZ7k4g0`OP&WRkscEi{d2DQ~ zlg+=b#B;}c)T>zBW1D|X5l-lz?O6Vbb}Z+Pjz-ouG^;q@!_brlH{P>~DE;6*wNAOs(3N;IF?P_hY0ssI!x$_uk(bGTRBHzQ&)4R1uM`bO-aocP;-S~4vBAhwpKZA^JX zkqujvWt_X#9W-~mX1VgFu@VZISNcBKCe3^62m@tLe&0N;88T z2WD8Qe~aSL&6gi89-i>@na#=EDg29?s19KX4{E7d*1mTSN|1}T!3d;TAMFg7SfrCV zVGRKz0~W)?n%A}jK(Hc-sNje;8U+nd>GM}2)XxSb)}&jdBfO7?v=`R|98C+uq?0lk z_x>z5+lT*ySo_uDV*JO=>;pdS6IM9}m%;OO--$fuG~_`xBGw%*zye7Q+xMDcY%!m} z&yP44N4}4Nva^(~20OW<8>mS7(L<;WzU1L;ql?IrQ}*3HSrw(wwzZL&w(*BXya(Hu z`N>M#M&50+Wzc@vFIlbB?$(PC*Q(Hq3c-i2?i~QEpuRzoSi6OCtVJX+dV>~-*O-}^ zRpl&rv&$s+~^p8M*VWJbaeigL^RZ{9d`P{*V~zC z_s1_%a<+zPZ0{WQw6@q60X(7%TxN_W|3GTnY571uE zS^cc_{M5wXrY3!^Eq{Pgq6w3?E13E&qHu5VH;X$YWDcl2KyhcBd6u}gU$Oex0z`aa z?Y8QDyPJ!cteM!@3}5u|3_-&b!AgfcoM0`{UPwb}ai@m;EV=z$w#qC6Ng+Y@%PE`W z7FP#~z<4HHcY0#cTB~$>`NMgfNcrPMy+k^y_5yJ@3z70bNTbr-HG~3!(mgPgfHcF< z9q%4}p5u6a=eZ8Pe}B2Iakgvk6?cE`d#yb$RF!23a4B)o(9j6vd9G!#pWdsQM8v9&jhzxzU3jLo*%IxA_WaJ|6RQU8 zVB<@$E7#~-@Jt1z{a8%}mHhU;+Rm7a5?7%~YR);`q(I9y2p0YDEbao|;2}Ne>PFCY zv_T5uqxpH|dFdqF687@T(rg3fnI~y68vKyC=i4_yl57uBu0$;o$&XZbw9Y;f6SWaQ^ z_G=_{`71dS(+$15)U3oo7`L`d{9WW7^7|Wj1?(LfM&=b6nAKhoeK&6nVc86*Sg+pP zpVlw#xOkb>SXK6=0RIyQ4lk+4FQ2SwS4qAm&Kf+R?GIltI(c6=P|0^5VgB zn|0C|ePTkVZ}pGFAMk!>zbxt(zD_q;Q@r`OPN=y3@JvkNi;ubX%NMG5`lX`qccc`a z5Ocr0_5hy=HXU5exfUV&F;60&Ly%;TI;qVK+@yXNYx?rE@VgiXaCEWUruu6WN#;Q! z&H3x_HvMnIssjW>AHCCrAGNwVN`HF}xhugoPUHy+VAG?hVq*a^@;C9%l!iYHmcTO-{0 zv|PnZ`4_C4BRkf6mp!i=83ar|ncH|OO*1WVOdzhK!?cxTodiy5ymh#FY2Ycs;$sS1 z3dd!$r}I48>tXbd9qx%{P2-cBlWU_ZZPJ^VP3zR{zdVrxLR<&c3kKbA4k_q+ zjYYe1La`vjdqp3T7xBvJ(BI-_hQ%94UL!Fvd8m#1CQ`n5RQtAOq=s>YHltU!R*7;x z`O$L{N8#>|G}E|*pGh2O#V@5saJE8cMK*-%E;WWqv>dJ5V^Ds2{!McIx&yWe4n<&2 z;FY^V#v;>P)A-{G27zw(u0M>kklua<=8k`RKS@eoaa?j-K~#Q~UYuz+M(zfBH2T*N z()%;foANi)UDGGhnfl4p$d}M{f@~gu7_eg0zg%~^T$5B6=H>4dbR2#h|6Z!(z5B!W zx4hb2+SS_mA27~c$q3tw&y}xucc?m>qci9+STU%(OtCDsOhraU=1is%dyVW}yMAm1 z%h99m9MMMy*|`~3MeUk2MJyTy?`x%Z(wA+A1b8XC66RGD-pviX>CLswvLv#g8(g$f zwxZ^1fKgZARtQ(HT5%5DUe;V@+j+4Zv^=+rHN=^-XQj%U&o@G;A2CWvMk&i{XSHqJ z&nIgoV>xfdF+85(VOXXYmTp==mi`&aG7QUg)m`DH`JmT3>O$)+?oD-qU$2muZTq3C zue+aPVDiI6;Y8MljM?0nY#yboy9?FISsaa{sVIlV5i zmN84t!Gr;yzZmD6mUA6;hIiiWN;lK%gmsB0j=g1mOCFElYqXcDc&wYQmtSg8xmdR5i1#(L2*S=;S8W;HL?x#o|xzOazUq7aaQ5bEgGpG-z}pFGcc25+%DN zUr!26T23~MET(>S=gGnI;mcD=6G_fVRYFrVIed3)p7wodeN|+zYT(X6#sQV-lerX? zz>{k{$f|{<<+maO)w6S{;S++6VnnE#Ew!jD- zp?Sk}jr3ck;<)!5-)qWDL{+{>x#G>q@b+6jE zIcu+29M5IjbnqgW#F>dUHC_CL$kJmL2EN;_TFc~iq*b9~sjc#PiYv1v9@g%h`=`em z$FzP?kAuGH)T$hYZm;2|hR0Hf#rwq1#n<1hbf{m~(6kuN%-$IJX;6*Dhzm5RKF-RD^03n$-AtDDi$iFkG7HoDI_NjYqc zc&++s?@v8A$RKY|>S*t1V4G)eSYP>K1U(flzTqu@q_&qq6?ZxA#hVH3wJNU#+%B>p zR@x%!vQj%T6OEzq2h$H{tuUq5#CCpf7~8m)wZfM-wJa;Sn*}Wem-JHY6vl@SskW+?;lX1amA(@U zu)Z1|khwyItm_WP2LlD`UP?=)p0y1KCjw`DKy^hMVp_B|S?c{b)n#hyB!nBW?#rQf?akZG8Ln~@+qDgcorm4Q--9C=jb#(4>Zyq6T!m|A-;S1q&I-51rKF|Y z66fxHG&1O`=2g1)s5PgpD<%PvLJL0BRZvtoieCpHC}yhIM7x!(@PhN&h)2#=bytKz8H?P;<*FT5 z=JykmtM;pE?H9&3Tm)Bw^q18sG9~Y&D=s>=!a2JH=Dc8F3*oSIaH@Yp_ zM)&Bw?+RKQ>ac-L^UR)Hh(T@C4#u9okNBDg6mKJ}r~am|)v3-w|L)wo#^W=q6{<1l z&Vx;>Z#y#rnD(GLSMRZLx{0%I25XQWgo4C1uaSdS2PHe|{aNOzSw0NjI!8lm*0WXX z_IsF4SePyPI9jKy&pw4_W}&ZpVxg5kMO$3=lA*~GJo}3GUa+kF^1h0;qs(h^H#Dp1 zGq57(F{B3PV}tGb{-vFvHgsYoboxn>v=1@_L!ZhLj`eS|-g74$q2A+T7a%xJd@tyH zO1#&@{xYZ5KXuIa0-A}}iyIpJn?OntYN{=7rlf?%0$gLGVO*d@y98Wa06yXusQ$W^ zxo`^&{YU#nG_(*)G>rc|qYQi_|6T$gWS^hk=+VJwSit|T03Y|Xi~oHZ&ngZ5zt@wW*Mz4@PxqMS(D zQF!r_(LY)NPK)D;a{eVXaop5vnTi z$-C_ATl@FeuyL`8q@*w|y}FM5oOkJ_q~gWfFM+@Br+fP24u}cx&+LEdwCaOb! zYGiHP{F;O;YrTM%BgRM1(cm`(S8p7vcp1LGAN^r$*s8zcN?XHHVncjj+DyVCx$g`jW%IJcg7<5v zbe1pCf|wngf5zJ z4lGtZo60PEdtRtC)|AEMKxa>{XV`JWsOxLq-f<-Q<;H#ET62m{P;^W%_ZBuY6I?GT*bKc=NYS`ZDHErSAI4Ba9sqN6 znkm!p>5f*`qztpu$+H}OkT6ALxvaFD+U9E6nk0KxE`MGhG{Fw|)Y)TGvMY+UBo5S8 znzl@)3M7MTnaQCsk&QIa3>?xuYgNcUr^IMV`&%|;IA#}ALh-c{9-H?UTkxDL#)6|Uw_-Y76Ka+;8`F)@I*|SM`Gg zIxSgeojL!e`u{Uzx)@5TLbm2L^c1hW&Ig(BNR7#eENEJ1#g_8=J(PkU_FMYH~~JK}`w$hI{U?u%7fRZP)o~O{2nj2n&0=dYf=jBpuW*7bC$Fj-4P>&+= zCCtgFyK0Rl9vSs}M4BwWSzyFF-?o|1vXWk#dDaO%77m&>zkS zcoM|4lb#{Yc_E6V4#0M{zE&tN!zUSre%*<1sl^XO36xfFT0PEioxE7URskKi3qHKUGoJdWc?c*)+ey=4siL5fAn83J%>DQAs@~Eb4^=n3*Qw zQ~IZ`n&|%A;n&c|HmcW#WigFZM7I(?LF>+92I+Up4BdGVj^BrT`g?6A-yPR^^)Aprzk+?73+Kx! zba?M;vfOxHNU58GMJ3HgdGz*(@c#Uv_hLnsKF~pDIdzpje5-;2Lu&Pc5*FtFX|TTw z!0#A86 zSa%LnwmsmP6In5lx4W$+BxD_r3D2!o27p{$n_Kv{!Kxy6Z}Kf>uA9$X>TL=dkDk6s zpe=xFm4&m-pUbM#QwCwlk+LZrZvj(iw48ihk zq$`VaQ_VZ!N#{*5{8j)Fyb{ShyQeS9Ii%p#7pc#yB$8=r04Mv?ZEyO+7;X^ww#qMN zqFIbxRmz#+m4d&=2p(H{ShSWty)45pHzLztJ5zBV=S!9jYs6vFwhlaVfj37*AmVnR z#JN*gQgvXyfUWD8;|lgdB6 zF)rv=sW9mdhcu1%tH2m7-|`QGznS;Yj!*F0Qq? zQpeowugWG=L_a;QCmvL$>gDJOFwbF|jy-SIt$Uex(C$9xTs<7$iW%p1CIQ_ro@HFf zq@uQnB^qyK9|2_N4LfWjfyrxZEzMz7;b6o#F{0g`2OKdyEjU#`EuRvg?HiruRL5cI zy#Xul(W+zaVC>SB?}w)MSZelI^iM_UBn;)|P4uW0fMU-LH0^P)t=t^MV=yld1Opbp zJAlCw6IkBiGJvROV$)rBKQMU@O}}b+n3O%u0lAf<-v7-JHr-Z1COyhsKDNdv?_T|o zE*dj0#`7itYn#tpy=F|L*e>5!#M^X}9;!QSm3rK z=9Yh6Iu1`~fN$=|Hy0;1+8{RB35-nSM1m^@s4eei$R8zTp4e6MTdML$-du68gt^8B znP1&Xaxuu*cyKswMy72ye8*A(SkuyB2e6!@seF~_qiEQToDRNo8!pm}tm!R@OOmDF zH{P{tFz1sn*_WuZ#2?u;&=2ic`hV2Ha94LNq$gi6eVsYMmQ(t60fbQzGfctWFAC9t zWyF`I8-Mq~w_4!y)hWE>dTwOu_#+7*hhqai_SKsZ*sX9u%K-Lf-HcRT+3|-WYx&9B za+DV%c5dRtG22!p7Ao*mMa=UqRS%TMmv^T_ckZf+gmK^4q4YFJNCWkYGkMFDd5XuJ z`cMn6u}v|%el1lx|61&UYJi)A4^mG8?GkZ@`EwiNX(|RVD;U9QQThI9G)c>f2@jTI zTtdFfBwLxW^X2k%9kBVA%D262WwU%N6vE035*3kh=B^|f9VwE>&1`_^+2w$o zwVt-^5F62)TOjlbKpBLMk7_WM_xW31If_JuvKYHMae2v#__SSb0VCo(71wl}IJ3($ zN<%eCoXV8Z5fh4cvLb?G%s42AhE@;Q<^`7o`x9<@gUWE(v-lKYjl8qUwU}j;&i&l! z6*+F+n%+gwVCVBLsJ9X6ZIX`CrCI=2o^IT}$rXdi#|-Gmb3gcvwj>I-pqh--a@mBJ z9#hjDPKI663fJo$(vdvc;03+xe0anip;TaPlKSC3bLx_=_e16L<{R~_^w|@iYLqDNDN@xbQ4T7S^edL- zfp{R6vb*V0z3#S}#=Y8F1&q53NPmlMt_9(sY@Kc4Daru}mzDB<`c}STYQa3v`Kk8^ zwjmz&%vr69x92Xkb-y{AVd7`OCt~tZyxt0Bn$d+3`6*rLjdU@!k08pDkc7}X=f)Xv zfXzdm<_#tSGG$WKvCDj@T^7$ZmrhWLZyoEiOw+ZNX;8?MBVX4*5$7ZlVMuilQ72*B z>-PO5LY&#vvVu-Nplj%m3i{}cEVV+OD-(^1ZdLlbxy8QDvf)q@AT=M8+rqy|9rWSAr;9$foI%}nqp6Gxp8?o&|g2vc3|6`t*e+ z4EHyjF&U_Ig)`=8K!)$LSEQdj5SdS3DIS6@t)eVyi|Jy5rDoAe z2?H~6YKGA}g4rB=cmpM zz$Me}|&#RJG39_^NRX97L+^8!sA|#U0GFxb6g8(i)jEITM zp@5`+niI@aj=yQZ+O^HR!;wFLz3HMPcllYq00yHez1 z()ONw*@>L+u-S_Jg7En<2k|X`K$szB43>-BAizRS)5|IGl_(t|>Yq=qTsu{ADu)&E zUf9%>o^}+46Y?>0cN`|9n^=A3w4`#hDJWO(0nEjc-y(J1O%u|p)ALd2ypE4v)dh%V zgk7o$k4^jhVMq0+H;s$5>?lC)UuCA_O*@)2e0^`}yU!U+&*UMx6*-k|@$$oL_IbNR zUysR=ta41nTxC*fd@`Yv|0>J52B}#WTwOgP#I6pxfU74)5egA&$1GjMrR0jcTh$c#Z`DBT{Dgh~U2^TuV2S_5R!W`Y=lEyQtvEt*Zb+7d?N0T+lI z<*Dh{uq!olnbu}1rw#5CQg&%x%`Wl6U5|y?s^qS0W-Vi8(M(c7)qghJP zV(fiY$WTQ>Ytg7=%ym5-{Je#)Yr<2`{(6MJtKX#L0U~Gi}vX9%U#bQyyiWLt@%eo zt2?h!Lwv>8wR6E%21#ycmBXUnX|xN5igY98JGN-G`hCnC4X#2g z81dYC>Grt7V7gDV-nzgK6l-p)J@^t_?>ZiCD^c)jF=j{DvUObS+(7aK2xFJtHnX`M zbUhIiv9Ge+Um~A;lbf4NbmaJ!-^4H%yljvp%f%~S%@^f!KkJ5f-oogjzTvFZU=dpn z-Tr8qwAXN{=q4dTi%J19{6HfARcTflNT-SQyw11$I$-gkhM0R-+0zYZ`;ogR2e!>n zy|wtuy9bLD1Vsv9sVp~EWy`L^g>IJ-rBv!_ZpCZD#nEma_?qed0Wpr^Ei(wirjZt8AQY=7o3>QGvtARDo^wy zqI0s~P!HIO%sN20pb5aav_%hn3CrjAtwzmFI}>obR9;P}Cnr2|eP z%{9rm*PscB$_O*VJi3C{3mf4T&IQ9|i`&|>uqX+jj$dI|RlA#%27)RlN1ih=Pg6w# znv_UoEEYYA$?vYr!98_*eA8V;9uJ4Cd_dDv&00Rk3+tWzrW!rw25(KV`8zzGpM=U@ zeK%Bx4wGKUr*4TTns9k4RMizO(y`NVyBdv^HE zoN{X72VAN}I^nd|UNXi4F{oXm5 z{+Dy2w+BLUow?-Ec@6hJ=xrO=>Hzg9w0FROrllRRnO=LQWwC-hVXApb(< z;Inh{_qm)E7 z^y}x$ZvMme|1-aT7R&#c-#_!^|G)XkuM1cqfKQ$;zB(nF&Q(C9V8o zwG4%J#O^m3uZ`CPOt3ayttmQ``R9fFa*LkGZ8NC($o_v_CvYqKHh^hkT5nWfza z?B?o)36%PtB=RJN8)AG(=-*t^ty&MvJa7`0}ye*>CL}L z`2heLo$bH>)$%_s(k1{e0l%s#fwICNGU7pw)xpJUC~g1PebLh|SPFg#?`mKhEtri> zznY6px7@cZK_w+9FKw5LkPc-@w_XAY@5dyqh0^wqoREw{ zF7s@+sxc@-A&#G~^P1C$9Rwac0SGC)84E=qxHpg)>DOK|l(v5yz1QR-nH1c*sJ=3T zK{;92b>ze!)-33SGJTpPQaB0t1`H?+`$tt0V*&t|35k^;3TtivC1_>4xd;EY4oUiC zfC<8!S}5qZR~ndEj5j{`?msKTuW4|BnGK3@`e;z55k|s4A#3)3L$`iDNZeLMAz+Bo zSrZ%Eswize_#f%~H7_>tKb!^a6$6$%!K3B*;NO;Ai!6eVnJN0Bc!n>E0NUkwaE=q) zjDUs9KHHc3HH+jKu{{-aa zSOC!csQuqhXG`h=j<5VlAqx6TGe;szGZuotzZUa9E=Z9ngoFBfX%wPd9sq6X{jh&k z&l99V_&VFQpmaV4a*Hvwzu59WFJL!;z8pF`C}$B>-2p_CJdJ#)E|2Q9t>}!A&VL_(I7-iyf zXB(bc0AJk}hQFZr4GVgJ4QO91QN}~Li^9D$WO&P58b?*mD&(f@5&kl2$o)t1ZxsT{ z>9`=%gEF>78PJyKr}3{z(jjm-8xqAl)%%NK+Yq2{V-eaciq8GgdsJ0}1Fpa>wIJbF zU*cQUK<7`)a(gI?K_T?lIFjT@`Zm5V38M(001!ac{DR%TGprJr#+J$)WtK%pfQPiH zkDLE>zfTBxLi2eMs#rDw{pyAqt^6Z{QP!Up2V`ep4^TwJFFyFy0uId8Bk5n&3qu!p zyTa~5PXWp-F39S@#=QMJ3B&mQH_7T1BXr}#IzKMohu9rhp->gE-_k3;(<|4+SOQ<< z1#@|HJv8oEh`=4Qy~C2M0AT+%@NeI0$AF1@tv&Il7Od zHE{6~iXLEK-?;i*#FnmZU~zq!J*+W6t6u6eO?j%vd^}m4Vv-@L9;c^3x(J=Q8Xf;^^Vs2D`fzBH@oMHs6 zGHnH8@}PZfOb5KE3 zzXoL0#QxA+{BqMmkKWZcMBkxU>?q&?5VIfKC7CGPX*_!>l3^pp4&5;=D1aEXOP_vy zjD8mech=hI;ytG>{b2T>(_m>HyLfx;ofX4j1O8509*} z%J;xK>BSuiOu=3J+Ct$p>PZs!;*Jo%AG11Cc)V2V=WrH&b2@ZvKBVmIPSyOkswuBW zf;J0%d_Ck#E&Uk^&85KRS<4HOX3v!Zt@Oeryx*2aEXU4eJ)F&Kx zB!V(3JJR8`K)1WdPfX~Od}lXv_s+gGs|S|nwcq;9pZHzJX(`^FW|laLYh*myc>|XT zsW;SJ^`&81OQ&%gtW4bfGP)K2i!@-4TAj4IJkXD`L{!+Ded{iGw|2h>D9*0f<;&ua}+M!gtNdK&O z>3U03dnG*6!1Dd?;3kw+)mjVAr-?UBg+*!tE!6c?c*BN+j*gDZkb(}vR&>2JP%>&H zAEI$vIGI!u`Pq@VAL&gZfLfPbeN+V3gF`w;WTx|}JNamp!*C9ozuZ-uLUi&}N87OG z9ccfAyb{}_jr1rrxEprY`!}+B>n|$A5d?}!_}YI)lZiXE0Jnp~Xa)`I+&3OK3QV{R zd@^Wd!F>0-6UKIVCwUD0KntWzpHiZz1PX~60XN*jyNH3J5FP*|U3f>^gr%&fSux$w zaO|Hu_q#)QCi(CZNMtu9*WhSM8p4=ee=wh@1#i5I;$Z@BzmB&bu5p@7c0V(ujV z(hR>8;FLkPIm@MrEk`H|%G4OxPdNc5)#p(D=31UfvI6m~V6g_pa4uY=0Ai^5^Z55H zQgBjjj^B2j{q6!*Megb8^80&^hrm0N5F+M@mnfs($^=}5IB<+LISQhQ(oQc)4+f(7 zs?rdOo*+s1dC;=wx5Fb}fPqD%J4rQgtg=2j{f^~Hb%9BH2R{6M+^aVPpvYTrDHx?@ zBFT-cyT+4C!M(;SeosY40eZ~sb7lU<;ZR`hte$JAv`Yp915-T7%mz-tTzaGM8%1fo zz`dXp+T`ExiJv$!=Wdo4c#1N5C{RpF?x_PbVYW~Mr5(thfEtbnSe@^0;Z_sK2=w}X ze^KNPFmN|9&wUMl*zIEd-zf?Lq5;SD_Tum7Hn!gZ6wxWyGN8l-RYgD!Ui0@=Md;iL zew$Tt7ocY}G56Ik)j}%M&rQY@Fe>dYkpl<6y`6hyP}y%z?Kg^UAycb&S+WZ#kpu8J zM1VAo9Qp}RT$JaMh2{1b9)?h%ia$k7?`I; z@nLKl2$wDHcZ%Kt_wdBTgi)LXK%6)7phQTF-4~S6k>{^PQavsYcDEVip|k_}Fd1=DjamECB4f>iq(0(v1BS7&w{1EHoFRLj7^g>)-f@3+$>GEH3r^e$-@98lXr# z$weBajG6Wpki$V|7+^?ix~R&C=C=yaQzoFn_?wXvTige1f=p}=m3DgM!1&zik8Wls zU+l>EjUrVG;ND%8sP5lN1Cn%rH1?*`sqUbR{u!xr=7xYF{hw?3<^2Eux)!0yqbP`Z zV33N$fD4gK1SJ_$eyx+XcT+W&V@0fj#B9?@$%n+kqGW+e;bEsKnFv}MnYdQ5Oy16o zjFO_t_6Gr&)`bo2k39}*%?xMtTYMr#`KR0qiYL=I7{kExTheC<298p|BWVNrw^NWaz+fNrWL{acC*);BaH#UXu_ZIcs6JZ) zkmo1&c;Wq{qawl&P5AF`0sL>LMdgTKEK9-Hnh<5z2X{0Zx2|5AHj3iJ=20l(CO!7Q zZ5^~AVc)fWOfZa1Rn#c+R?X9U2~Pk!W86W#ZA`)yRJ}79uQZ{zk~z{tQ#E?4&MWWh zv}s0zZN+GQCy>k868&Rt9T{%}@^KXq28-UuUmFmKZOR-QUmR@LZ} z6NkYIB7s_GjSE?XHg4DJs6+N5Cn^aMUbB@z{#O*^_sChp#VTJKyysVCDRSwa9VbBd&_=po_95e!y!~ z%mGGMDLm#fB;29j;_l15F+Zp=N`1jbF!bYC&&kh-^v{C+pTg};6gXR2k4G3>iwN(Lu8Qu3tCY$mtr7nM=(VYovE)xfS{&Zb*ItT-{bY{hvke7|*Eg z1UkZ#nS<$1OIr!~?=~y<8eJjlFWlB1dAxrhZ#X?Cy?5$6Z4#nLAn%q?*uOJ)-y?z# z#2Z}hyH$YRl>Q=b7+#eIGDxXR8aG*9d{v&^D)$oP}&~El7tK6B+Cl1%Rb` znd$#o5DhdOmj@%FPVRIj)u+9HtW0gbI&s66U2F6{3436^h0obW^RZDK_lsTiWJ~Z# z=ZwE-8|6{sEI(Bc9bJ{mHId5QwJzW|NTDJEjun}vWsLxPrv-#9fZtY%c3;^1vzh=D&tWn{><#s>)lF!@>yuh74?LCM0M1pH4RUu6V^P{nme!8N_b;1 z)tOMe8I5DxvXQTMW5UAh3*G6t2&j>mK4=rNGO4%n{r%^jz(hpC<-+QXck2UqXND`K zWOI7rzRBx(MfGC&fEQM+gDvaG$EocaeKl*UXIxJzm;*ahJluwa zBFKH01|>p_^j#D_drt|@?-(PXHaZU{SuahA&%zwqYXlzAbjN1VQVttgdks0u$xo$p@MKQ_{(XvrA01i!^XmkFCC>*%jaO+P77lV0TqyZW z(hrH2M1^Wmw$YGi3F#@EVAeswCVUXPMxEQ~^?Gjw8#XwavJBSu9FA3raz_t=MRB#z zyA*uTl+eYoBC@rf2fTiZ(J5cjUY0K*d!c*dg0fzqy{}gfm*-%1sIv}PIXJ&0)iDGv z-MF6Uuu{)s4LbVX({Q_PjVy6kbSjD&Mlr|%Hav;4oMtp?6cnwnkgv&}+1Z;CxnWZ~ zogTXB!}$du4YAw$vm%;+tS4(0RvZDidCU3tmzPM9^(jH;cg(+`AW3>aX|lAj1SSrO z9KQLU)-Kb45p|}5fOA#9^d{!2!mK^CFQ=q+qJl_#7x-bDX6IbOx#uU9M6xu+(nHQCx+5>rK;ZT_$lbm-)!gL{u}s!e|ti@>1`i;R0E~ z+{B^#FWnr?_Yht)1kw-cA^^}jeBlRlTogxo$9cs+@{Y-O5hTo~49K(7WNxcxhjD?N zK8qD(bMm;8XLEQ>u>xX`9G6;GifB1R4kpOv=KPg|<4h74PL@)q%a{!`?HXow(p3;- zNaYXRWWyB}8orir78T&DT`@LR@9reH#d@SE1}zE#UUQHT-TGQQ7UHWJ>xr~CR^RQ( z+=as$RaHo;`P2w9&q>q!5q*UIEc)Qqi$#ixi3)lfex@P!MZ7E?4US=Hk0JG1A%_Oj zrMO8CDIkOqj2ay##>~wfCG~!O#FINUTTMGv5|k2})JRMthzL9ZfX6N1IHHLv1jexd zr#4~CGVOR1vIIb=vUxV_s4jzRW)dY_;S@Z=HpRn%>+hAII8?9w+dZfO(l|NUo5&Gh zwJzgfu%XoisR5nulfJZ-d?A&fwt04ZN0WU%ru;kmWrzEY#&A9@ypdI8Lv_ zc&?L@1LNJ8u%=bDqpf)f8m9b8rxAyV7sgIY=JoQkSPQlB!Jb0d$qPJ}7gkGZRAPs_ zn)(wwSUTCeCR+M+M<2sqWTb8wf9NN-m5E|uzwz_kSBtxV@!^!?+X1N++C#G6Oi&dY znTRL`DF3a@Mh55->#gNR56`dt>;34;g`RyhjpBF0Uo3SqMW&wY&aV#*oT}|~i*yUU zHH|i`PA#tzcNca5TqJh1H4K~J!% zT;aI0|L8{B)eIr8E$d2rh;5_JbA+B)igvN!@j)wAGoq+o;JBn5L`mZqa-#Kmey`X2 z^uw}euB-2`6g<_?-MRW;jY1jii`&<38BLRuPh9bF z(=bhIm{-zJZb=@BlJMMnNCQPldl@q^3a+_Z-e`C-I&XGl1<))pt9Tecc-Oh8l?R2Fdu~-zF(q<(BhhiM;z38FYO>pR? zGNhcr9K)gm8&*$8PM@(z9Y=pwGWRNe$k&aG!IE^yjY^);KT9qGJsq)zh-9cDQ*iwN5jq`YPP_s7Z^No^wjv*jZJu$7@UWI_P~* zhS>8xQD`EU*oKj%mU#|*Eiv>x+FtLT?Jj`r^wj$TfQ%{^;gx85%XK~}>w(l-SaZQ1 z;glo9Dr=dvl2uTm{40RstqX!ivV32I1`RXXm1lrG6r$9#>A7iWhQZe|QDrf^)K4^> zF~c4zma>OYzAMoVQ0XY<`iwPK@LKu({dsP1V2Oz=w2mVTIOLXW_<(|ZO06t; z|7aPUI?k%7Z97K>-EQL9a9;|eYV$dZn%<8YqW6a&Tp3?Ob ziL(S17xUng55c>2_l>ip^ALg)g_VFBbDl2t@S*3#ovn)*Z`P9Jb!%z98(i@{^(#g& z`;yV796TKY^x9rMtbX-rBEoO`$+D-&iJQ8X`>_C>dnj$ zmhK8&Vz;~EXNg#Wx2f{`igQKQeA%d-#yynaU-XMMk^X0Ya~eXpHmnb?)eM03aTdZo z8TPJSJM*+$*mq>SyE$>H*qLxN_zf`{Uq=4ugOUNLH)SjklGSy2P?>!JnaOOYBAMm< zXUwv@Ulas3`F2o{A!%1Y{0+!3wIYua8zm5fWiN7kLB~F2&7gn2zPdCO7g{DKJxuvoG1uo%Xk5{qnnyn+^(Mux^WUTLYCKzT?tPdzR`{a&Ju!^hIWR! zdRk&s*a<_Z!G>m#R3bjA198k#d*Rst#xQSWS zhLDFw$SDva>1?CfMkD~s<&zxST!qb=3hbhNDoh*IsXbLz> zpelsG`__|P)H%n&XIkfp^CWu7X&yy+20~1tZ;i!bF6T z&2uA%Yo14ht-GW(#^TE znv|N8imKqg8S|!BZAPSpwH~nI+F&2Swc_Mv1~9=Mt*3YcV%U5}#TQKPwQt=>Ba}pz zI!pdg`RG`0`7{h`V@43+cuGa%4~qyy{sM^P*^k(^@Ncn={>8`RgDr(Kr=9-bxJaNr znP1w@@-FUFoIX+{Qi2vZI;eY1z)oKpi~I*#^z*p_WPHswZ4(y0-lH@Dd~L}dbjQ#- z2SmBhJIybp<3ZQZM9WC~4T1L`ogQ{UK|yiW{DR+GM&l;0Mv5G4GTiK`KN%&Tqy&wd zeOSP~%YZF~{j7Lx4y`9H)C`Ib?$n zAzqQ&_9i3wtIApb*aL_;^I3ot{sY8OPFed95%}a73xtCOujwi--DkjDbdxwWP9?L9F8ACLaJ6b-*3(Z6j=tq@UC*;&>b(^Td(cXv7XG!?qS=r zz;8?}F1DIK`O4GLWGH)bT~r_TwGMU}{dDSV+mN79PQ76-Jj@QqNOY%XE=t4bQbk@V za(7zN2yeUpjEjod33+;YOUH+O`8%!^xvSas?=K+rBQs|*=bxt$zQ}z0ghhwn@rGSN zV>A$lIKAYH3)RnHXeae1BuM8I#JU_r?R z+ZtTuhsGL?zScLwt{j-Mt?&+#Y5oZgs=E<|gk@{xq)7gXOb}Mf{QZw)K5IA%v^N2jc z+lQxV<>13F1|4~ZqUq~(5+^)fyXhUlukn4yx)+??6~vL-Hj-7yePtf?f43@09x1rC zJ-(%V=~t$VW65?jsc2=_#RN|&cvgxhOXpi|lVWDaD)@pJ!h>cx*6e5X75QT(V_f7& ze=oSXA9e*=x3ZfUWbgg|vG?WiP_OUbZCaGnDJepoP8*>OA*9VIk_nT&^gt4p5N>DeV*sv-#=c1`FuY2eP7po zUGM9<-`DlA56!Es{amhKAoH&4X(CHR>8ugOeXauC&mR4Y5Qu`}A#JV=yV}KIg|i1s zn6dqHo2kUxoIfJBT7&@<$|YkQrw7@>s;M!O~B6v~TYCU^8EwaCq25ekyVmBvt{mS<-~6H5G4d^x~M z73^}K51+I*XwaM+w`aopL$HJMYaOX_K1(m-0_GJ9B?y<<+-c7G9_{ZAoN}c?DM>%bk3S=}9#h#DR7cWr&sOl;b^Fz8U5Pp)RQQ zxcr?dZIf1=y+$esiBp-Qvx6c*C#^QFf^-)(QO!kk^bdx}h?pkh_l7_s-}0T?4ssLJ<1%3D z=Wjl-vBb}I!+`%BMbW;fXH*CYSrH5tul`%l^a2k@%AF|h+1t03-msVFJRw}E9~{p)Y#G?&HzM34l4hS* z-Td}i4|%hlP0Km|tLjC}x=JnKcoXNgToC2XFCC3Ed|lI>*q_tfu$QJvFLi1$CL4Aw za`6tL>XVJVnhbBv$>JD3HOKl4u#%UkYB?}B019(7K)HpaqEi-A7I=TtP4 zmlwPIpT!0Z*y4Q`N1PT0nz)WfK*fll>UgmwH?C#v%8_;AK>!jW=DSvC1JS#7i;*lm zy4@>BG2|xh*{M$l?o9T5^k;nRE>fb}7p74g*_VHm8ZNg2P^{Mj`^!b??tNw?v|Gu3 zVadJr5(Eltl`3!tebp^5D9}t|GV5~!O5d|vMlqW*WW5;{g6&*v>A}x6ng-_XCBlrn zQcoy2Hb}n~yO7ThpQ9P4Rh%dChXO#_xu~z;RC$48$N0xEnOaj>ko1(eKu&+%ZiEHV0)X=ev-909-EHOnRw!bP^!t?+55F%iqt8v{nX+ zJDlnGYhJWsfR}%U7jM<-Z(L{{5U^QvtHCbb9^3EMe*=(%?;9&i{vrFr-vv{I>}uk$ zQoi%OA{UH5bhPPYhD6OC_Sx^` zus<3IE7bL!7KuycWy{1G^ld%CP~key zJ$I^RItuN$nnZt!$=#2S zVf{SXx_d2YrT2{dYNdQFDDH@$mhnPkNo;krm3YV~#W^OV;z|NV=GtB;NAt7v>qT^= z&L$0RmwHI4{`3-?I3MHG*3c^5$Q#@2DCE4wSjtNPE6fiT3YjQ~k*z&r!pFceq<3sb z(-Q0n;hv!?S^x`csN5xyHYo*+rAt)F~yXMFeVctAEYf@Na^Er@-bup4 zcaK@zm}epljjh7-8dd1G))A$=hm$@i-jzzb7Ikt4C&Cn!H96gpV6@F+3lzz);aQE_ zffO~<6IFkxDq-pdx6rE|o?S8+?f>z_1MYl(sIYIR_b_(y-dK|uENeR@YFc`(VWrys ze&o3Y-XJJI*7m$ucA^N?Xyx(PG0qv@)(xqPtjS{yX!u+=N-olNz$P1bmh8}E6v~&$ z?)8`|mvjzA2|VjgB4O6c&!KTNEaqAOMh(;yi>Ah?s`4+sNSLh)%;S#bSRpY0rcb}@GDsB6D(ljGE$sGZw#fv%44VB4Zdr0l&@&;5+X@}L;Zg-UG!h?pp>1|b?QW9CS>0|e8x|eP? zzQip~f3mt@-w+-qwfl41P$@#kZ2J9ug7ZApm{8O!CPP6D2{(#ChoAH|X=zT}>C|+R zwiA{9ytHxOgL52Fz=?^syrxGuJ8mzsdfm2jiA!tNVe9<146j}TzOZUd>MrmNyBqC6 ztN6d4^Ia3L9y`UP$M0$*pj>=|n1|p%QaNB4!vIYyti>2qVX-AI`yIkr@I{O|``l~}+!}I&wlbr>< zy2JZ{RRx&rrmPth?uO&fES*#<^5yL z)A657o+l!9Z91^++^UD`P@HbjCZ8xM5{sUYmeiQsyON zsTI*JY}zSC+Uj2)BCe#1xm)Jcd%o3;b_-&XWDiL;cyB6#L&199mAH>}d?{=542Vay zdMlXMH6&=zAX%)|Tj2y4Ift7au9A`czIYLR^(*>KcG|Y$#gsHVimWNFXw!~E#YEfK zG)(!T=~ML6rl?bgu~}&_4TZSC6;(0c0W@du0HQiX{;~*8;{_vNjgMoO^AiP5}w{2q37`Dn_OeSt_B=nC!cO@u3xEnDjXUx8V z)%_nX|E$5nbSWQjv?8sp6tO*q_IjpqDt4hEWAkN7 zM~nU38PU64C{9Sn`Z;5^SN+Q##MsM_!fH{KyY@5Z-Z$3JBC)$cSH0gZ^EZi*1z315 zU7(f&&Ni53VGM|7IOv%|wX%4j$+d<7iX3MHzbuHzG0tk-A!u7#!O5O%FBaA&}*f;OO zSnHr0CR_%qA+kmg|5K&}t7xh?Uh0){>F^x3ESKrWDr0z!_Gx^ra_1%(GA%J~wvmdN zw~|PA(i!%qjwD%lcfh+$V7g@RTd@NaIrBf~VE1~Ir*}~-<$doeon3mN!@i^Y8UNQF zlBB9bG{dKYlTR(-J?e)0x3!idjv%Uk3psX4&(z%OTg!f&b?8=sS#*y1jw^Fm*B8S! zNI2eFlP#$<{d$k9{qzNgy6B6bo#W%}e52*RY~}R%GV1D-UbbTk0xkkrtrvT3{n%8R z*( zvSwPZQvpwV+*-daOBUBrf#|riK^0)u!t*3SS7EW!pBgamy~wfr-ckKZVU49cbLWpD z;~Y@tYLjh>$C)EKKXN{>`$IJleoO6DI*P_i`%1aP>`=d@1K6``zuP(`pj5MrCj}bI zzq?=B2l`@CZPeap`6&M6kZeSl*Snim@D> zPL34HKXjsv6Q*K8&Up&i02L+3q)T*>w~7@zj1`@~d`Mt^lbz_>Pw)5&Q@M@r7W;p7 zizSaJ=!@CUNOrvZFh$5mb=5#fWjy0T9l~(G+VJJ`XoQ zf69iVN5oS~-RTjK6Q-Ju0q?PrLPK@~f_8M;u%IP7?Ko~R%TR1(o6lYXyFp;@XQ;3F zJ=oIZVn_TR0SR^6Eetj=JxA3D^Dhi7+1@SO7|I<2e4A?ao4*D+$W6p3>$N<2qV&{L zHr!5dC@?!G;ASOJ^px3WO@@aCr=7JxKj6iTUsKp^Xm8oAip_VBDasE|HY{Tn_`ui~ z`VTU4{D?N9J@Ke_#NX&5SmEy==#d(x=PQOMVG|TTcd@+!P;&p={Sav9X-~chRudcax^o2=?}tWwYa&Jy~gib z?AXpGIB2==cxbjGaUreSrB2rO6})V=omH_}KBXrJCG$r{*;qjxrPC&X(VooJd2{@O zkd$-P_B8Zu>90vnN5>7fHL(o5K^cv|%}Twa-B?U3;$15&&)k_ggXaMSr|dD}EK00)0SozWK^hR>N9ht@Y20;cTcR49n)KMmMYiKqJp-{8%vxWK|@nx7 zC3Hx3zO%g(W@JyB>qv`?^CPv}wvL({QOKUY^e&T>$TGY!>^WC{_I2SamJ7qAL$Qot zN}Db1C{>HZD`rOzy#Az=!RaPR!7-K0=jLP)p3-~7IQ105MCW-H`YnrL!?+uh-Fgr^ zVk(Iw%asp>kl6JPgXFtg+eh=w28TQ5_@3CQUX2Av8uu7=?_~|Jb=N!OU_MC)0yTK~ zaVN$;W_<+J1b-c016KO}1RuV-3Ibdds%m#Xdi)hLRS+x{fFGxh64a z+;%}N=|7@6U!C_E*eGuZNt$OMx8e=7l|FX`EKAgHVZhMTGF1F7n>eBp$9PeQ(1|f1 zpUU5|BD(@X5m*1fGl0~tBx&G!BrhZm3#Otqw{kzihm3aoOLC2X_1RgNj+*(RW!(1OcWJVQBo(jF z1hS?#RYlfgAr0OgdGl{K-sw=yLQAkh5)seB`6~n@g5C*?=fUl#_y`R+t^;cV)?wQo zPWIOj9ux$|C^twHRwiXYOpyX&_AI=zv zFl~f%w4Yo6nTGk^4Ka%FXzF8WSD2Rq+;ZyMM`i!iNDE2?lsk9qywM5OuIu>Q)xway zhVRYlj=amByQ3e#$T24bChuN0;^z`|mt}W6gnR$3gy&##zAKUU^{@8Rq0M*4Dn5L= zBV2B2NYjwsUFfL?@q?BOe9fA~N?5dCKp^APyL!Z@Q3lY{cPH90)Jrw?J5;kf{sQ1@ zlv&KQq2RQ-C8)EjQ3g2J^_~-O6Z6ffY3{@)O5wXn+;4S9anviq)#KrkfEY=NgAeG! z@1_rlMLFu3l56bR$60>)AjagS;Q_tjue z(5_)Md2{Ew{!kjf?ypp&!6YAcE=|w_ZZ(B#=hsupc7k=kT@+3lj_u%f%s=a1hvn?4 zT!xnqL_ZDr6)$?xE9ihdWv0Y|rLv+D5vh`U76X=L)Vk)*ZWTj4cC2e-KFBeh!l`l= zXA2`Oyg!@Z>_@n7Mr{QBDN;TY53{lDCcZZ*814iG6oitb+-9|mAS^-lWj)o9=SnNs z=^K!LTv*W4??~#+xg<@vK)i^LK`U+jjH4yiY3XF$v3_YNVbdk9o;#dV?hS7>q&T#s zJaq?PDO))q5m(V6XoYFJs7K8{Gk?O5>l1U*>e)z}l5!iqJarz`zY;NXfwgJu?-&&H zRd*if!BMU?pb*Y`Wo($9Wc^|F4F5^2`6l8yabvZq@+dd4ti{}!jkpE;mkUw$Zi^o_k zvQWyq*+Jc9WSeQB7E3>6VOuP+t`0#vC3UaCd;Y7?weW&U#DsDvRh$_rtW|O+zy(^4 z%20r{oPn7T4_G(GJC+I0Bge){4Ts}gS47sQ40}{l+9O*hfuADVYByyTANj0-_ z!@a)&D)H!FNzi4vDadXMOmY>#f*8k_ie#2q5?ags{E(9$MP1ipQS&MYfiIsVJi5Nb zdkyYU^6IO4imMQm0UbXo?w(yiIuNkia@IWg{9OxP0xe+VwYV7_Rk8K4#zPL8@&XN} zHJQ%+)tyZmys_%cshL;WawCD2Qj5IV*7WNh$+w;oOz|K0h)9vzABP*597S|GNoj*7 zFltD|=m$8Yk0nxC$+bH(W=cRXuB}FVM_BGx0K$^gf{hBh+7~9_KQ?*|CYe%*syPy> zvb4X-m!>dqxA(HF)-D0#;IX_;X~gVPs!d2Ph_E0c2uSLDC!G~4-F?r!@Q(v_u258v z$W4fmLQb5w6I9jnYpHG6KQ6c`5pgroyDf*o_>Ae}CB6~<@W8T9=Jy%_tm9rT&V2g) za7SA_@Y=W<#j?BU1E;1Il*;og<-Am21_Hh`B0FzbN?SW64Wg7$cDq+TM|xqXUzFE> z3|m24@76%yA8tlF#NXTbUx?#AOQ`%C+k< zA9M-v^AKKJHGaudd=n@6PJKQM|N8!6z65Z`*|lbiDnn+B2Wz+HA;(K<8cur8+^2f> zhkzFyt+D*Rh|0hx486be+lnX^j%*8j6KRexhP9y~joEw*wKL0L^V(K#UYj8_O48dv z8;zE5xK3?RoMkQnyHGl?bY||*{0Uh5F~d}oWHBWNd-GB^XZ^}qtV1`2g1;_rvS^b*Gl!j;pS7951&}9wZg#po4MB5C*Uv*kw-!=f~um{O~GKEedSf%$e|R)+qf z92K1S7_dvEfIZi+!I-{FXUa^UWnUs)g1(viC^0GT!r#yE&A=4>6xhLNjszmU(uJxJY(zAaf!N;fNc@2sJwsjgHK+h@a}ruol{k}k-; zv31xTwr}_z^R&@2n4ST6s=v`-IUi9guP3evXQcA34y35{xRcEpPY=gCh1I-}fT?-U zd{WIowHw=XmJG$yBRIp!p;?BxG^v*~*CsXi{6w!qGAmdVQ=m|@<9|{*J}+gUuI)R^wU+)mqa;c97bi0eCG$7|8c%ZQn!m8tzlGkBhGhO1@d? zJ{etnsuXZdy6OGV(gifsxC2O|EhW^)foMX)_d^(~=MA&pV5Az*)>7`Q0o$PYHb2N3 zYW@|i!3D78pmzFJKu&#`!4uOD_Nb8jXzl|H?P&!u&a>|+VqqZCMsBo+NnjEYJWjAw z-r)=h?W#YQ5%YSm$z_Q6@andSgayzVt$d%`(YfR=;KcXslL;mqWHidlGpqFy)KM)F(dwvD zBrQz`F|Q1-ey+q@pm~7Iq_E9%4u`Q;l>4O}n%&PlFts~+w$(@6r^WxNh?&S1pDA>i zCHWR0d>Zmp8+X3v%-4O+r?L)+9QPRy9JE&Ggz{7Y8=&xL3B@Q(( zbmEr) zI8Wz}1ke(ST^wPHL8&b`j1o|SHz!~@aF^z6V|Jg`%xKSt@iR#BJEG>D>QGn4OV{{% zy82=QoBK`a!}nyN-0NEjyJsLz?6}yQa{zk(3gk>gGM9MA+7Xba;8RzZ!vBwxr z&&K0KEj;(bmCL?J1rb1=1AP+Uz2GPOBp>iPdcfuDt;fm@#9cjgkY>`29U-pQz$VUaD z+njc@KRdK5+2Qi?K<9x)f!dFaMS z#^s_Mx{C7$2)WoV8o2Km!5vsf(S7M(2Vb@Z4w>BrkurV1n`!aOTZ@KyMj zgPLfldY=mQ`tIJR91AVND(a$d)ETt-hDZy@oI|S*>^M|!MgwWl`)e1oVnJb8k0>G6 zInD$mcUWyzd!B|r>W}y``DZ~kCW%zcId;zsxDYMW@t&8CXditjOB?B#S3PpOP&zA5mNf zWs4Z0W#mJbbe(nX%+};~$YkI2GAABV4;?29!iLa+l0z?Hu`ie>zvMUg91l!H$SI`p zr!Ta8X7WPy-y4#EoEv9>vb&WAXLA-yijrJ8g&ZV8msv5dyG!n!9U;lcCJ8tWtCTQHQ>>+mw`2Z7<3cj zaJ^*Q3)z>-6DhvuTZmB^_rEbwpuMxBzO8niXI36)X0hU8XAS`hfK+f%e*`8zdpytLw%MeJ$O=l zdN|*9`p7q*rGcgn8Q#JnxX;m^*kW250tCjt8A8yBIK|_mm75UF#-Rrt=*{M2e3{&9@ zqrc|nnzX-r0RY^KQk||p#fUIFs^H zQ+6e_wqij+np;KYE02Z*ye{dxQsB5XZ{M@?ydKb4VU`_Zw`F#u^)Nhhq*XNN8>PrL zOp*9fi68e0A?GCs<5G^h3XH<19g3@;Atv*wMneN85M@VrV5AbrmZPZs|9;H!jvN38TrIoc{sC>qcC zizIFwT}QxQnYM80!r|x!n1xF>b8F05MIpOqFO8N-?M6@2@LIW>L%&2qN7YtxVO3XM;-%P1H8_{87G@p{gMA&a-)#raWX zj74tt4>l<1Y7%$MF)Wera)ZWZtKt{YTjgbr5kD@971Lqx2P;g%M|i^iCD^f%gq?PMb=pIeD#^AuWO3 z`&V%yZkK@qcj&U;oycxZbV$PKy6jvP4L99E_A1Rxe@dZmv?Emt>3G)&l`0aE56n|t zw1REy?$I1=O}K=V+MDUyI~O(P+6@KO&AdMi6!hZ@MO2GULkysf2{8rj`wO>|nF$K< z-%+3;KlkuL?I)A9D7#IRltV+-_pF$7y**&nW%|!FZ~j%8SFd}wN)s-Bqrosh9+ExV zlTO2fTwG})cIJijE#XcF9qJ*$3rc{!ARvn*edHC0_AC}8TAj2p_*!Vm-qntSoPtqH zqp+~()$?I5QRKi}?DY{X|C&o~sAh1VNeKY;@`^t1`(U&$B5@BnaE6DQ6NY6;ork!=?m;A7k%K zp)caNwb>WoB{=OGT};DYt-fzy!s>HL-K;9VLiC=)v&m35$+31v1*$`sWc!gLMrw{9 znh@VE@rsmsq@)NLjp@9ux%3WO-)|KOe$F++(A*I07b)F|WQ-5vOG&mwUaN}Y{W^&G zw$fUGw|lNiklGd96WFZ+*AF^y(L3;X2_@6iuK@EycW5-2-IwF(ezCAq)(wSH zzOgptmu<%tWn)a}!{t`V$7e=w?DL#;U`%f{jmQhm5`4H`Ch=J{AA%7R6sg1*6)G`q zDp@B+xyD4%@h&4dk6ZAiQcxzlqgr4VvRx%}r1yDba^93*jgJlOVy~&%y)V8|gK7KR zc_F37b*V9b$VMx0YckHyQWJb&I}SCuK+x%0bI*-68VUz>#7*h<)v`?$3**fx6bj}T zQ}W0slhp@mf1jw!4IT>`HquE@r~&LRdTlCw?{G6N0PC>bZ;8g8H>ENiL+{Oc1kVyE zvNl_4#hNzqwe?}34Bv^=#Q(%);PBU?JX9XJ%+b;-;cNF?NAsy)wfkY1#mE29(Et zN_G8sz*Ro)Y9=jf``^}dC9Yfb@Gf|!XmU-#GIE){{B;W1lLrnlm0*55TZm)xjDqT+ zQ+<(8U+n6dF3bMI4Yko_-6tCuZKgq#SK6m*qpSZbiT<;i56+G71<~_bVFjH214j4h zJqHf??u^l{Wm)!YJj-q2jlBjO!tMlW6Xm0#X}b1UQOaL@yi4OlvuS{_!JG4~#e9*$Ith-6<0} z(_bwLpZ^rPV=mVtR|G!Cg&Bd|8$TCYFc<^UG02g)Tt*+kqR>{O{&V!W*4{E3M^%6g zIi?mX4)af-PP#WpqhKvf2COar1wj>#0Ku5$ z(TA6JG(aco|wLJkcMxp!xj)4_t?uI?i)|J7oJ~!(Bl5( z2Z6>T|IZJy5M0^``J_JD=hrzbeE79JPtiQR&>YpbwY~IG*sJU?k!8b9(pc83wErKy zGPuosl)%U|)F|vdpn;pK_JJ}uX0`!VW5a6RRNa`|yV`Ok7qR5ZN6SJJy0Gl^K_S53 znS&oH^{|D{k}Nw4TlOg5H}CSc*$syIaXA0jvO4*1oA+6ALoTKAItv}2V<*F`Atg;1 z1l$qTKE9Vj{=Aq&Zi_H`dn3H=_}UeP_>FJ7ruh&4&MN!AmfMF-OH=gUV?fqTC!QOo z6F(W&5W_1}aHMpY$aYtmVDH~$MB0uAitpW``ka4rz2Cry58gTEc@Xr8Ib```j?14O z3i7RK(uP2X75Dm&wOG#N3$dCD`+wGOJa;VkH2Kw6+{>CRqNkkUx)VIRIaTk6JmjCJg18|x6 zS52G9pQoRAlJ6vjih&6J=DhsS@*`zn&@C|qmw$OaxY;vsjAi~@vhG(|9ptb5`T8{m z;N6I;j#)29DL-zOaUbZP2+DJK@2_fcZY{X1dzG*XVOdT8R=jXN;y7Cq@c+I;{+a%f zBruKN?(WJ1Z?q7&ed2rm`R`>rcL{9qoZ-p~LqFX1@+YxGaM^m#=1!}hr=PLn?&bbJ z?9)F_-o#(~ZG{gY+evb(f{lNc3mCjK|0ML1l%&cEef}TaXkG;_Q+n^;D7Org{?-*M z{x)iI-k)JE>4AIp&$pM?Q_mZ$eX5dG$ls6t``voAoAWELlym499r058|`FIz3?hS>A-R+V1K18x3)H?MyWcAwsPz6q;3b{hgr z*!#N%|9bv2K9>Cw6x8@{6Lt<RiqK$AtZl3H!%){f`Oz&mxw; zH`2NPF=77^Li`^S_K!VbAVB3*!05xu2DUkftqXA+tzhrCC%dAu8=l^`-M=X+mV$T4lYEosb|H~9s ztvSd?XTM!Gc=V6ft$?a?Wqge9C@ib`OX3B>&x>5mK&0;=<(NC-e)%5=8$e!@(I;g5 zJ#P8&s99q$2$Xv1nE20Yu)>>6Z$JDSDaYMK@n48mF9qD}_tnOG|IvmOkoM494u~*b z>NZ07=l{F{K<6;^wWT1a(atE;`FRNd-1sGh@?%^ZNq#`Gv%KAfK|lR*-^+b^P=5-X zQgo%m^77BX>0gWV9@$4<$g<@aBWNQl3^DwW&Ej{f}ZdtiEvt9oUB{@Z_bhmEhVfm?h& zV*E=wmZSiL<<5BW1^S;%Wb_4?cByOD@GqlyZ3J%oRMS}EKN>~~$h@T=+5NN79tQI1 zLrD_OtY!MpeTa9Y5$L~Bs&9)ilPoK6UeacP-Cxtjr z23ymp|LN17Q`Q|?QmAjcM!qBmf#S{lmmj;|_1A>rbIZ9D5?&p(*a7&f#uF-HEo%y` z8w%!Vel*4u8k1uuq2l%lIj6BSae-eVm~|<57p}*fK2T<+Y_ny~BSfJ+55b^>7pmG5 z1RuIc2>xvSLIquwdkq!7U=DFbAglj?NsMiNIA3({m=PoUbbJ6T$ zvKH@Ev36~>fC3mdA0;+yWPjD~YbD!fe>v}Q-6Znj5{PRgm=#9?L{QM~x_!q$8u zihZad!gVRekvOuL6xFD~^Pz&AvTLK1(qyA5vk0V)s&u^PdxNqKb1j?;PmC+A7C1ZC z<$8T?yr@;T5EO>&bBsCg;!K5w?}C*QFFnCGdd_7aHvbJr)~1|J$B6i+TbpgyelX}WiK?&zdA*JFbU3Vs^mBu-A zmx^??0?KN)Y-=u5gI|2K*@BpKERTVsMoVthzs~|E!H!1=3|1i;_HI9wM0%>%&GvDR z#AI?Zs%C*%u1Y?i@UtTQSL&W2wMImoWT4Qj!5O(Ow<0CPF5;gzGFs@Z+O zkvJXT3y8~NFLGSoBqG8u9!yAj^ZthUmY`jQTO{1^RP3 zd|5q|;6wgO1zz9_-ETlmWJiS2-KV$F#^&#KwIUK9(SX$~^KX4w`3Yj)FVvZq*7$z3 zX9z+Pjrv+!>oJzh0ObBkK8;+oXi#iN}- z=}R~BIG_^K!6aQb?%Ev&cxhAmi$8ahdH}2AX42J$M0d<$>Z7mdj4_N1JAhyE>D&h8 z%+!-_g7{-!Z0HNvFU0+e~u3{5^*rXbNffw30tTP{H!K}qWZg#@^iB` zg`SsiyU{IK<4lck)`FhC`o}CV_5UqT^l6BIcXIx*fJmrg)6l1ZhH&C3Sqtty* zTfWTAPGhh>$`UXs2`E6naEN`>S%#d`)e-im_;IHb7fN6MwW~@}OXF00 zE(h$RrdZiY6rk=rm9aUWbFuWz%joJV?{wMUZ?U1-(tUzo*T1bW)-;j=AvVC_Dp?@!m@sH} z_8!Zx83Qu&=)bNuOS<*(PRNlzGO`!Sd0Zr&oSU%ToB-Gh_G|`z&e4@PC}`IN2)cm0 z9c#c)9jX<4bH=iIi=o6jI29*wES#1F%6G6{(}TvKE@#Sg-y7}yi&B0|U!oOY)}XQ~ z?_h+{?{7?I6Irm&2P2CNvP}*)n#E`ygxpR5wH&H}l!WsXaGY*7FrG(2?ynP7Vak^; z-R;SBr?(4GhbTQ20h_x^-PP$G!@ET&cB8RisiE*uQf50S>9L#DX74AAw5Ai#oDeaE z+7g(;c2c|l?<(Y1jVJshYl*h4Y07NFupOIAh(JAdQJTOXN;V+S1YVCG+47ZZ5=wAL zevmjqo(A>7#Yml-w~s^p%{1ZWGIhrapA(c87}aGt#KlpEB6V>`@Sfdb`P8hT`s`OmUuPkI?+=rskfU*Rex#M=cz& z-Az9Dbh=r#N_pK7L1^$_`N*Fg@DJGXaEY(AsQ0TkbWk138IP_q-%aa|#lM@V*vuyd z729g zze&NQU^N4nbqC(&P3vTyyEbcXC^=3ZjB#|}7kHZkf09E3Z`O0BTR4;qn3Zo361#^! z9Z%{(GS$G|Vvo^yTo3fgk_3++353)BMfY~&n$TKr6tH^mswdmW-^e`4NP8KL&J>nV zIh}1%nl`ZGmYAabo3g1|ndt6-0iaDT^yVc0qmOy*rj8}Y?|D8~IP3E56KNit40gtQ z_HDv%g~Cy(;RYw;Vvr1Mr3T8IrTZRhT67X z(-s6aA-9Ybogg~|1I8Rw*~)3hq`#z_YFaXqE2b@LUg&fSx0`#I;~N1boC4l7J`xy~ zbE(`pyB`1=9KTFVeg3OIiCgz4nFLnCQ4PtO0o^sU-DT4ac5ivzM;r+a8b2&*?)Dc7 zFww^?k}XrF&yl-8**^nkV(wp`h#MaPlg=QNv)NHOBHfn4%HLjgY_LQN+Q~f5qH7JM zHEvgk(^y<0%_f6hrTTe>!k0%>lz}QOg}dd@g!L;ccFxpn)3cgvN-R;Y*)5f1A@!X6WgU0jpM)U2ZN#U;U*t{FmLw1vBa zI_N);=D6t#bEDrv9rW7V9-5$eIaF>M`x5rfOfd?j>zx~<#OGpr_-$e4FQRNFzJ3@t z<9FKXW?qR(DD#a=)(S-={H0Q}#I#Zgbw@GYO*f`Z%Vt7`PAMkP{Q7W_GYg4cFkmE# ziMK}20D6Y^yY%{Y{ESiSIB35>z3ne_vk(Fb z0u0&==1*>Fpj-dcy0v~w{Zjn(*<5{0^41wiCkdWn=GRD;7|_#>`eY=gJ1TfJF2ax0dxPrM^z+WXKJ#eU zd^9ZQ3PJw^n_%&v_8{D2n)q$!9q8+feKZfvYfgKD(}B0q`hJ7T?t( zireT(`>`fGt_FC&=*6T3f(J8RQ5%#pH=3%w`C8d(yP3(8bu+6#Ujom<0+B)N4D--#6gjfWJ1d)Q6; zyCZeaPF9gBHKRXoz+wnoQsBw;f+f{;R$*TTI`HT-Iqaauq?ELv)c`+wD;Xy+yw7}A ziWByJsVgk=%?^|q;^Ta#K98GTu2?{`_r$m*2$Ln0VvEdlxRTq+p;slfz$;Qhx1#Rng4zT7m@&4_>W_66^_tLZESpI9%rFTlM4VS8)sL-h=i4O#FEW+9i9{ z4Cv@#o@xy}VK|-fEJOM?cEoi(Y7^#t{v$kkS5{sW+K8RD4}V^Bq3F2N?#A5axKQW0PQw6hm6vk7ygb{diA8nXQoFWZO3Ox&K*5Ft@F@9g6b2U zvsyylPc}m=3tgH6I)TY$ECS@0UNLTxu*QbFxY?iLYnrNJgCzoIE0=vf^F@B6W^AAb^L9;q*hznnH{Bjwii)}bJ&S>wm`ZP9v+#KLwcL=4DI2^OyO=qaJNP-vj z*3s!@zT=&jru`&&6pqb~uFkw$K#R!P4xLqZO*jqS;W5QdLB7(cRvC0@FRNA(c*s#m zW}u_zq%m1{OQFNu0S%8CWIzrCYOK1&jxI?r7dc0V+&3GFS~JvUUe1IL!uFFrOYBdw z_s(&f{J4eez;zlrH3oCLyJ@q?>w`+S?ybjG1_@xdqSEND7ljLLJ16$9>-O`xT$`K8Cuqy;~yM>kA5Evkxz47N!nD)cnyS;PL3Mhl060UvuTPiJA%%56D^O~&nV-nA8rYG;1Lc>E(TB&bpV^BqkLKdbIkMQsVs0(T@syy*U|Cs4pR-*_#w)LO z7nK(`M81L*nLnX$T_?VfGBmMUtGD}7??T4NjVEq@vD%oxIo{8NHC=Co?R>5qljD{A zAdMio7Z~LlJooG%Nt4Kgw5A-V=)l>|Ov}EZsFPM#!A&DM^G8k-kDx!r zMW zE1;s>+WkdQVWc~x8$`OhB&1tXqyz*BK^keKK{};j=x&fM0l}e$mTqZD|9j58cinr= z`p&n`_g{;(&Jh`T-0W6)zhoTMUStJSaRtfci4 zJ(ZaY>R6q!{?U(jd9{0)QFsOV`;s_2I%BV4CGyr5UJQ;Y=0ZJPE&X`0oS#vo6xv!Y zG~QPZh?ZYj{+MZ$176yDd~dIwMSF^ObDnE2()pmVBvYNHB-#^`Ety_t z$ugK`4L#XQ4KltvHCkpFna~HN1llm|wYeA?*`~o?%biUb?+lB!gthSxfLkK4xeFCsi=mBewHPy-o~l;>(lN|?alT$p z;V|{;BxaL2?n+^FOp324bZxncB%yf(iN{cXAveipru0c)6nI>`WNh1sy=Vf;V@n+J z*il%lcLZUT+Ifp#^O+|RwO_>K#m1;_Lnyq7uvnogh1p6Lb1*jn{ox;-g34q=^{D7< z5E}6h`e6KoQ-OI<+}U$nfiRu<`n$hkpp@mzFq1I9%l%YRZoBVFe9nt0Sjs9S80T7A z+czT0$5&4DC5q`6jk%-u4NWi6)O*Z*41=!TZRI64K`xTLLhiy`fZelcOl@iQ=ILj? zCNWve!-hj>bSuE88<&3uj|h0pO5<6-C%AkJJ3um#u^leAEj;p`4h4e;GIEyzKIJ$= zdpZ?`=~FPaQ7a1Uo!*wSoR=1;K5P(htH(x}*w#>@^1(v~rOb%7*t*HJcCFl`(P_zp z<2GaYp$XUlws*7hR(vSjdF%C<&Obq@w-dzEQLI_mojUFlCK&--LSMsmh%a!^u6d7F z-!k3#nz7hURS3<28E+mmR4~C$4?uG`9nIUa^EmvVZz#+b}<^Ht|T&ANTpCV9v@#jg`U&x%{Qll)J%@zCd4^K=K^xr2LAUl(RJi`V1hj#`9#c zADvk#eGgB$9}`l-ez8jzsy27-S(|LKK)a+22NKy&-EyfK-^SOkGUm-zogOe^`|??OB8~dr9plM&SG?J z%1ay-rWB)-3s19Z&wqB&RO7|Zm=NKHGQLR{bcQsm!%j=_weWw0HxuM+4-sfBJKyL6 z*Pl9ONUrm4JzvxQ`GUvW^QR|I*7YK1mHEr?&WG6xOQTyOO{Nu0upZQo3Lk%s(`XWbJh^b^lrs!pB3y-|EJ4(NLL@hE5 z7dTY`D2qhVX1P_Yh2r9t@w)Vmi~1w~h1+8$P+?_IXibgkwIrQdmOinNcHQq530HfX znpBn_F)sC>seVV;69A8o4%492TBTIpi>IBQ|Lk~>y6X&Ph&LWU6^ohEA%w+6 zBqhwQm!Vl8S>ozvaNkleKI3UEZVO1v}Oyt8k(bdm+q5)LXNKS>Sibf`y zmIHw!uup3TuXS1;pG*{~e$fU}^75~1HyagD{Y3zzC4ZXtpjdwjkkruLDFden{l3=o zg`Kt{8nj-UG|{1_O`FtwQNQy;5Rj=?YQQrK?Y6Tky!`@w{$JSIgXj3YT@QV@ZA24N zMi+Iu!0$gG?i4|?!%G~UtXlQjq6r>EUOPf__xuY0$Z$4o zI$2|-AtrE2LWnWZ%|4e*oPYEv80nb(b*b0kMppgdP(Zm!KbL`M8iO7G+#=XR-0%gz zyX87DZV~nCE`I^BY#er{l`D9Pnyh(x7t)yK#K9Y|*NMy8K9b3@V1JczWxZ9WAS z&W0<0i)mnE-vwx()A8kJmon8nEWi+v%V+Sy?&l&Oiw|U-}}X6s0$%nS?uQBtk3To z!~-UOsLLXbYwrNbc6rs*1#TNnc)qkO%{g;{x@pOVh zaA$4MS)Dfv2(}n00te#x_ zrzqhgIa2P|(TM2CQrQ(vTmI^vKq(#-j^&YxR~BWV@avXmv;OT zKICL#{pOw4t>8H}wzuXF8zKXkqTn+~jq}06JefY(A~wylq`UsswfHdYX}u|5 zIH0QD-dvr(?{W}(_ZS1f?0ifmMhE`zl%=j5hasCZzcgrBS^mw0Kq*0xh_e^;$Yr|o zmbVkooqPO6?}sR3d+245asJd6HG%6IKg+~e6x@730zy#6a@)G_Z`gj!aI*#!sq z7DTw;q5Utp^|$}$E6AqmAh8Ef+38zAxCrV7zI6&rv}?PtXa)fPe2WRs4zPG4vOgbP zKx6Y$`~;xt=_&yJ($doPy4)&In!umHo77NME1d%;f-C-GYgl2-j>>uzAOu9UhV_@- z0^#|}>D!&nDLPbK5n+$^iX?Z$eqX56D}Z1!Qe#w|p+WW%)oqL0y}sj7v4i}bJ-`7O z*o&b(4(w<|P%c`J&W3`uqHh|&X$tay_BDylfzIH4s_Ld1Qda}PgM;T}u#vfp&exD+ zt9DO~FX|I{#n#)Y<+)xUZ7ua~axx;t>1jauAy{A-QcjR%mhep2$>%^nXY1vAcqSmN zY8RZUy=9VF>p;lx6#x1+V1Y`2W!Y|_i3Ch$%1_+|n6|^!XG$n^84+b#d1btNS{kqY zM;XVUoR%ag>t)Yd=Rek8VeS5_LY`yFalG#O7yGqd`c?iU?t|JDastLc2_jhA_0f=R zK{^<18GX84EMw!hztYrK3<|g|kE9VgLz=)EPrqhSJVOl$+f)51KRD2k*g?j(4Il?h zedHb`5swANy?VDykPZkJcCNiQs#P2$Y*`Ny(J8op?v!qy0_up*SWUkRblXOg)IB9) zHs%~O(5Bv-Gbb(8a@0S{vZIZpXF=_Wxx;v^s1(|V61Ky*-eE!B6!J|`+fLF`pMKXp z5>d=stPZ^hNB8-SN`XAM>#=^d{Y2;M0e13i`J)3=>#4vTX^MZM6Dmx-i%$w_@68Q5pxj5W#0v|F7b04LC&xul0J`CxHf+S z@Qm+!X^DY0WL=8~W}fhZ-i0Huou?fR$T@RB)V7j7eGf9wRbM+*5A!WJP$9M|2k4-$eMYk z3^c-;^B+>;9fjL0^N^Ac*?W%P@XskzO}zrI%j|Swsg80uR~pvPQWe@wT`!LWi*Mw# z^gcqEgw8uHp6W2Hb3KvT@Y%(6p9Rzuzrzx5ZwlH(UIH4^k%l|7?S%wu=298v*rcYa z(Dn5vQs3O|pD(&*1&6*9y?Dqwhq2bEB5$(#lVr?t!n(M0T?YhYUp4zI z$$M!y|E`EKS?szW_FuiO{f&G7)8qHGo{{gBrV%~w)WOr+REbz}GZe8$wFX46Nz0<& zlcDx4#_c}nVwgA1L}h%()jezlQ@NwlKd)IqJdcNx(lt5uzN{e$uwN!d5_tXDIr6VD z*w1#Tng*)+o}zO(CR$gTzj&$xC!BedsFaQ41wc$JXj2Vj_AN8q=xg1z3QzD`HE5jB z00s>7I+ldjBWRuhH(Epn9r6^EWdWbhK>Y14GtK+WZ&bE#`@)G$A@!G`(W2Z$55(~M zH3}I)Qz4_|0f^~RfPdT7Au?Swi!_yH6MQA7O+3H>Xux9@p%0`a>K#i45_G2;6DlC& zd{x_dGb=bBnq(twz^}OyhWdU4umYMlQ}qZ5+5N9K9<4zW;iqlU_OHipgG}CQ*&Ixk zrfR28-rk7`AfSvhZf4idN6@UC@E?Rf${oyjlUz%!QLrzM^#;FRxyBC&4`N!~U= zUhIt|OLY`pPcq#FCE3}hIh*mr6p*`a+qjlsm+?RCMlNdsUlYUD@`Kvkm#t+3K%X!% zjH`{L4B!8KdoDH$o}9VsOKeeCEJ-qlD%d?Iir(HXTmrSi3lPFFUKjh0b-U%TPsPNL zY!o#5d91}>cE4pwX{_L-7=U2I`KwoDYcL4z0}yr`xWHEnhx)-&3UooqSb7?$wRUQx zM5PoMcRGB}8uDfviFy$X=13tBwU5)((w_=oo-8(WT@EZd9`&i)fL0iMm#`HPujwJs z&n3U(m>%v;t2KQ7-5K4=m{VW$Dh}`2q-8ewlG<~@sji2bC(T_fisUU)0|VM7*b#}U zxu@5{uSJ=%)-%2HX4}flO8N7Pnuxv@dA+CCimVd{*c_?lxH+6YZ_9DhN5Y)AYCCO!ll@QPey8oD(4nDqI1`2{+7JDAEek>g_ClD=`f77@UDRfQ!V)U4b4V}&>AvP~ zyzV0#yq#~VRmv2dM=0ECL|cJ22N9h5 z>nVNP<>y=rRdeh6sQ49A98=!EwvWBs{h8T(!gIt zklN9~V?C`oFAYXrU$@23)`T1PA4XiDuq}wb%3mL4C^RgQuu#>Xo!~(9TLwH9 z>5J~J{lP^%B3xfG@j%V^mbKuaGf=N0N8bjBto%;<-f;7BOhg{BVFRI?ri|^W z6h8FS!|$#8H)+hYU-_dPhNHLDDl6vDo3C#!b~V%i^aCm8+A)~Ak&CZ&#@MXh1u8uy z!*;M?y<&cu22u?Gp0jT`cl8HA*?r36Wbg}}uqo*DXPEczZwG9GK3qOxX#Q|LonP#J z3p-g5 z&fag!1H~oh!UcX%08>AAiD7*%m#t1~D;*#=gJV@mixdAkYn(bZTk|y)T>#ccg%`1* zZ$5@FdejA|-fX<*UukjLm`@Zs@bKx|a9VsZ@-^*P#B!wN{4&GRKJw*PECE8CIOVJm zg=i?&8cxx>t#JjHp%|KAV*zfxMqEb$S{IG}skMpBkk4QO8BvcQLG~F4`quIyU^6OV zTRz9d#ljNcisN?K)kWx4?^*QZK0x^?D4|LU2Aa;v*cyz6E0>oaoLvAgmdST+&N39< zv9BZdDddeoqoesTo;5WRwW-hnF+Dc4G@6ikq|44M#*}K%oD+`lMaE}+6eS6>WYH5i197a^7ZCAsBe3`5t?rbz9 z>^JL94rCTa+z{!{FJym?n#kOI4*I)^;tcHCVY%;&k2BaT0$kp3<;a+N0jZzp4ccsU zc6=)4Ar{ z9shuI4~8u4H3CFYDAHDn-H?mj{9AL-8|AIPmJ4I;#l>y zv6Q$}GKB43_}lp#+`qs@t(qmaOv|EXvRi0*Vf$SSh_r?2=&3myxWM~~{ZUgkG>|=1 zuHJ47AmoH7D_9Tx<)toNHTb2aWl>h6Kcye^K`T)eP)i1s4;doNvo2E8Ov zfM^=q2eLPnhJ7N9XbmX( zXqrkzjXJ8mKU27D!{kZ0Uw`JC$*gQj+`}b#R7u1qgsHrC=GGUsE*gpFN0#;5lF#vldQ z7D9j7CG^FOad^{6R_R0Xlr5z9KvnomhL3MF@QAXCV_#&Wn=V`n^eC!*Wt_Bx?$9x{;_}^Sc+$P<0wW;fr4^;zmMqmVLH~Q7*5NPH!Aj>vob#o zdlf@kBIRaW9|*M{FE`_6Pp^0cA2;KUU~h3v+NSXht-clb=5TmPzFhvqXkJ-uwwSfc zG3FmH=4kOF+@CdtrHAAq?wSM7Ltg3@s!}l-wKU*-IQ3@pmaK!<*`_ix1lV)^C?*`- z!NZ{9qu!gXS3#8pjjSqlvzXdM$vs*M7~x(Vo3ZGGXnsj6tI)va!A+1}#iXG}+ zv(7b~luVT&bxEc~Gt2U~hr*I)Hsw9pt?DJ7~esN3_Z!fGZqE1FkkuB?K z!iq(MaJKme4n%~F+PF|gP7;b~fOWDAh6WbBqM{b2wxR)!7nzgQ`?Vd1 z_dbmPO9Zp4-H(M%E`Hr3I2SMZB8?x%&+*$6_pYag->ZR=9*?E2h_d`diah%VE=`~7y zexLsN%KET@stP;v#O*2gfQMn)clyQmo_e)~lCz}rJ8~d$$79ulZQKQ;eWHWO-Q{dq zR6l=+?QS73pD*~r)Fi1UBtyz8G4Z1znetl;8ftgU7m!+<3m*J!$m#aPrw;#zS1oz> zWAZY6ZrzAMw%_3Q3KJ<}!FR78KkwG?@Vz5r%T{xDNc=ACKmIC`|B&rsU1#%6PmLcf zl(7V@)%`RUsK$#;M}&_R@jq6BWmM(!+xtb`n`Cjc?^fSFON;|dy>)OD8S&=kEITyPdmFw4!tb+&qG1H5x+}4pm z7_GRP5YKFUEj1Dj#vvk^B$dJ0lu#wOJe1*w05`l8YFpHH^_2SfrrxU?t+dTZ6TI1@pwrf#s{pVddEj z*ib<1qU>M-D@&e2d~6UpDTMkxXC8$wkR;31y>?Z;d#a5zpNNk2Jq=D_q$2_^UnsSpBj2r*Hn> zANUvlPpJ)F)E7!SD)r|NB>ElrK7-+>$}fMp;(zzYXl}%dlr$A`JIO1p{v z2e(Oyr1T-Xj=n?X&#&=ClLbpC$i`7S=|8wnoM+%govO!@f4Q*#URs?;|GYqp7T*R> zN4lWxK+0cU6o7cflfESVXCHvsUA$VUXFcJ6xw0a}6+>$ocmDFh{M#L8feJh+Lbe^T zf4MT+q&qTu$oDqZ{>2LTKMUwje@l4}vCw@$U@==(Jg@{aNdECkqx3~Q0a(0jGJn3ZC01}{trO%=(Eo$;Hx~yf z6kY^NDS7ng7m4eFUlJS`mi!-F*azfJO7IM#>3;podlsz+{;>jWk1F23d@}#;k4toj z+kufh`RkQQfqQt`3mt2KCz;| zXaqJ~x}C{VjoL!JTIlL52{b&1fc6T>T0Vbmp-v9_yT5y7J6k+w9CA|#arX8!1 zcy?Qci+_SAmXz%h%Ew+T`{yG%4#(~XOH!Wd9PW>); zMZIRRwo?3UFX`JjAa!^uZ-e7i2|Ps1V1CrGz!1pcP{ z^DxdQG+*hxm$uO{?K|Db-k})*;Dh0PQv8>P`QLspS!U}@eh103{dpF^ z-JxGa<@ZHVB>F$ZRPeofKdtBEfZ+5saQDZu=scY|Hd)-CZ$>O!jy>F9Oo{}cCY1*X zEM0agQ+^rnB%@PQP5M^0xH@SuS+S3G<=ZwXnTN0JjJg&bpKO!Maf*VL@G z&tg2MK01@RwsqtFe1AaOMqAlPy>FN+*RIo@k0%_4*moJQ%l_|^Y4#3m_+0LoFK_M+BdSQ&Xxo9|v{Jq2s-8Nz{HB}M=4Q=I)CXxUjz>Me#-92dRL zX9|LA5W~_3fx(CY{5idq>`^?6P68lmUiuCKtyxLR=C_e*Jvy%B9h}AW4nK9>dT$Q^3fZ7`9i!^7)7EX7j2x0iB zbM%Typ9eo*Nykvj1YJgFt z-TNlj_3(#v>aDMf2bk12u?=RjQGp=&bUl|0zR6Rha{wZ|Ff0asJ0KoS+@!wnZ2R>i ztm@sCI^B7ek>EVo!K+OBFtp0SF4I3Y95?a zg6Iuk%DkeW^Y*G!J2V~1n|~%?NEm*_o8kOkp?8T7U}lJ3v_!vNSq*8HgvYwDk}By- zcwN`(qq&DoQKp{aK6gEw(z*x6f|}9~KXPn?(;*HtOani9!nERS=8UuQ>7FO_!-_Pt zE_|-`_?(Fbea2)62k#2F0Zip=I>ZCp*3aV%kdf#w#wRumTit7gLGXb! z{<+gwwv3jTWc$SEW|jF6)O!{{j~!L*0UI4)Y|R=-$G}ol;Lzv_LZA5M3FJ2^se9&f zH81^K?pk^YCoLuWakQ8X#JYGtLB_4+SU*2lT-=Yc%=D^5Bj%(nNv2xX2QeYh-Fy4cfWmb`OGh4f z@{u#M^1)FJAH5&`e&pjlM!ri<^|RfXH87S#vC9Ws)e!*Qi-cVxf4Gq-k#=u4M>1pi z-k!v;@0da~m4U^^{;;nF}|6dx=zC8UA9B&2%}80DX8 zsIbp)5GKAl6nX0Q4h;&K!S(2&zn?idm# zIC?u(W;m>bl=yxRZXRaBkI`8~pr8Iw(wkKyKOFEJJ&i*~?I0m!4RBP|QU6c< z!#qUXrjATBOZSPme<~VbR(4|wS>0KVq2>o?P-#O5&(#c;q! z{3K!D+*$qbPgEW>!Tf ztPEH3mq#kA6El+^bJIPi#&7(yU5;wWo-6)MosC6|H2M*a<%Y$COI?;wg+)~bP-5mm z>QyDVOssTDqU6q}($io|HKrsT24j#S@1Su<2VxC#!^{R{mP6qP$I2Wyl+N<7oJq%8 z)hwjlpRFpTQ>Cd4Z9OxcxC$#8gZ>tMoNnUh9^Hib`(s6quEmKS-sW z*=1-o(81no&Wd_V}0qUY{Wcd>i)iYjTzURG)Tg$^MO&0j>BQg^f zPDC;#oO+uZC$|#BiCjo?J=3(2?hD8b4-mT?&J;72@3NMPrWixX%K(#T29QDZajJ~&ZZJ%)9tuKgo%Xiw?sB*PO<;YN8sjNay+VSdLy=xfm?vVdO@V z^H}9|=@{T8Vn!moQWXs;B>Mf%4+g=;ITysCen7*?7t3T_j6R7e-O?*U46S+8f#O%D z98zL?=JSTHN3lez6A|@NS%_oiD1GqEeI$`K6#+RZ@ox|jc}0IpjJ&)!tz zX!iZBwsKxwF_(h{)@V&Co1FPWv~P|jBP$0^pm9Ib4J;hT3Lk#AJIygcucz(8!bh+B zne8>PAZ&B1AyNa@o0|i+1w+uZSQ6eFeTq^ak`cA)$x8*{?4_m+pHDI~rN3q%?#1R4 zC939dp~)JhX{zF)cCELY-<4OS_o=T7(!_MoRXOq_igcLw%t$hK(m&&?qj_6#7P?OE za;7G&8r)s-X%@K-coJsb-inKEoTDjz@r#QH;Qh8JW=|pX`#X+pNS(AJE_4E;5A#GN ze8qLY`P9qlYfqMI+m6l4o1e>FXXlho#@x0`tD7#P$d_gQjvRU92y|>J->3u|&@pui z)(P@qDtNUT)n2UzEN3EYz;HX*>-{6WF66!Z^yDFZ+T6y}%{?C$amQP9YNOhmLNc~0 zVYWXtrvHnYinHI9XR`hc8bgKs@7N0W2E3!;z%KonUtFODXp#Il)UI-{MXyeG3bM6- zNMmVIK?QMX8RFUj4>?}{*0^>yPXC@v8gHPfTvUhxptWUTL0G{~mcuC%8?flor;V#P zwdigZqZy?MN+!fHHB=+bbk&i-LKuzkm6;#USPVA*T4Bwur|zsz#u^}u35>y7!&j5y zG9NUvz(y%=y1`B+b4&nI4tR)O*qI}}G>eSpTUu$6DeUl@k7kEuQA}AfEY{63w!vs< zFEkjWS=aypW~7xFG6!YQ;ScoA43EVBgzgeJB%E?ZFvXSEp*uCtL~M#9pYtrjeuf(r z7ro}h`q>2Ufmg`XM6r&F)049AB`>(>46+T`CGMYBYQV?^9CJgvQ`eD^c!jTjcDZ!F z=`SNHn8R81CX=5frV>cVcA-U^Up0hvw7l&E8}-7=IoVEREJb7odPS)3bto!&^cE2M z?|uEzM6P(v!@#=S7C>}B@0+St$`P6UBn#zIS&j6qGdqLbrlb^3Z#NBVcoZq$h`093 zH@!p=X37?0eLryhc*+6;LPoI)(nsAlQn55Gc7g?b?~HS-n$lY86EbVcDaDR+a_)aB z$Z%&Kc2XvLycFDCNfwN3Q~rA2q&n({09x-z!0Xk^(uV-o!kVid2|y)i_#N}r0eRH! zrqvp7O6q_U&XlUeT$AS>`VK_ z0RR%7Wb}u!-yhKT*&jIjIIo_qA~>FlS$1M;@Lys*CZ55{~8NN6&d*bgJqW%VA zrOZGEIL@nI{ugSV-F$Abw)xN!iXaSZSSMC?$6CVFSOUpa}<*2UJj| zSSAgDD8Bm(pglzNo9QpcOHw%#+j-}}pfc80z(>Ows4GR60Y7J3`NTkNHWM${Ny^p# zR}i<;x+0T)U5VZqLoBF6@&gDW3T^Akq0xu;gemt@)pINLS*s9jNe zuK^1ZzX2W~1Q3!o4QpcZFaqGF3-_y#yb$DYMmSc*4PCX0_3|8EEe8RW;aWHl;hUPs{e$OdKKf+LXzr@$J{scA@ZfQp&kVj!cfE4*{0PKu@WW; zuk0RA2XByV=YJxo9k%oW6y>hmpI{5><)d|Io??kwQ8zw2LM7QdoV^MS)B^A z%b2pAS)7h+>43AOcueo+guGk;-6wYs7ftk4YX1lMdzY*a^9vEte2*4ZeFLrt7LnL* z`2+X33DK)MuDxGAbK=|aKe*e}{xTNQHcLfyS17xXCiyL4NIv@4ogk0$V!xlV3J3-{ zc6hr{K@E0h@G19=?;jO_dFpgEzUkueoA0jBm!JZ$j%*+ZvL(}Lk@s;#Q~(ciUt-rD zzNfq1vz)E7wSLu3dgpq+NVoD8^S4m04`CxJYWkm+82)Yp%|@loD@6bJ2I+*ODlnwLCD4l(Es^fJ@AIRYT*8H1Zy3C*d=aOg`*0nwekm zQh~#s5vw)L3bg&>pC#_q5<3#FvRL{pLF6%*4Ag|MEV=xOh?nOw

TyS4R|4NVe%c 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 s-dP@>E0``3*7@8Sb7l9GwR+6)tOU1 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 A0{{R3 literal 221173 zcmeEuby!r}`!9`1nske(D2PZ7DJm){T>~Q0G4vpflt_uvEg&7z-KEmPkVD7d07G}( zJ)U#Ej_025J$Rq{+`oQ2&p6|rz1F+l{=Dy6d;AsTq)5-woW;VzB7OYmz9JSDu@x2; zf!!Gb;0nD59xE0W$vqQENrlIfl1vIV5JMAl11zjZ{^4qb>PlZOCuqHUD{hR9m+C!^ zckViNs&^00Bd%8&-dDu0aTC0HL$9H1bt~hw2Pyc{(%f|cV^a7LEzIXE#p-jT0dMpKOvK&FU z_BozAcS!2*^dHw$S7B3_IKym zgil2NO3NplTihfR(=Cc|oNX}0xEpQG27Cp*H(!rpDJV`^HGjv-(D4-(NsJ}qRX$*L zxVVmY537HH!Wl6uGba&;Q@~q%PU0raDD^n${V{)Mzn&}^yDL>Yf`#MB@hk18d`9yp z(ZMHRn?g28(VKcIUnmHrq!A<=4jg8t85gs~;p{S`As*@%rpa*I|ke09`4t0ZAwe7RHM#mz(@a+?4x7SBqx0x@bJ-Z^w@ZD50 zq8Te$j5~_zQE|hTH3WWv+)GVYJ>H4{C3-hxW!pR5Tdt9{(f%Ig)b>S*54-8t+PpY3 z7&AUUK!#M*-};b7jPi4qu+IowoZPQxfcm;cm6LBS;b=s#SemFVh?$&N5Qqtr`p^%D z2ELPe>-uFtEJV3P#hzL@Uy-weHXu3Il|~9hq18R%VMEBV(9r2mcwO`e|%f; z^B|All4r8&AP1Q@erkgkhLJSumv05I6C=+YPeB&GJmHC6R7VUg?mifgY)fQzmBJlR z?v*KE5@8ML^47%@jlVT36qpPW6cWT`I;#Dws|!hfF+qAi{RmXHN{&^nNkB*#;)1xR zi8X{EC_9;2iQ~m}6AHr?fJSkgL$nKOJ2BUndDFm6oa)a+VVemsvQM5B_T)N)#mt1$ z{ObN~>W7KggB4UVghdTF3M5Y&&VC|LeiihLcnI6U>nQ0Q9X@*lwbeOog24uGxl?5W zaS!>pXZM*`Zz*ovliZ}xZ^kK*jH4i!4#H#7dvy2R>r|%iuPH*Aib8!JU03u~W{C~e ze8Ff#CFma~B@{aPSu&OKWsu7~Ze@JfJ<_Mrc6YyuM;l+G36Q(j*K1;ot?A7v$*n=aGxuAu$OZaU&sSnhPtmo=C*U7XThg4H;JU1nuoM=@HpB`KRM-4iz2esDF^&q zoBahy(`UA=@Cj$E1t=4JyIUfs!*|K5u^~T!Vy#hs%bKg{Oq!f87Y@ z2-~@lsN|M$`1FBNi>lAZcR4IiHPQ;fbKYMq!ugeNz}_LHWs~QhMm{ymOwS9#76Do8&VB#Yd* z=WeUFS_o*hC)Jb3ZZhnI&zkIU6O_~zjtA3Z$g4u#&`EIUOK!(A` zmVvMRH((>Vun(~O+|1=1`g{?|swW3g4v}PO`k74wUj{VtigXdaUFqk1S)*8YSt9~7 z7_AMOoyS5eYb#yG&X0*y4%&--@7==LEZkH@@*>9u+qNvWQZ~~UAw6Qb6a0#1sfb6Y z&+kGHq{g|$NzF-wkoy} z1jqB2nk;b`fsAT52oPGFcO%z01GF{4wUw0>Z@`OS=dq44MR?Yj<(*=x(7=y@wkSNP z*v?Co)R>r4xzp^+rJddOzHy#*+jOIDfo$tTYpphs?K@l3juzX<^)%;nN60#AoqKI+ zw|`f7op)ny&vL`HwOG&a4wPGWUvS_5h-|OM=;f#RPjb8Z#}dbE$Mo1S*w)zL*yK2} zxP7>bI0s(ZuMF|y&s@dxBgiMI{lfRccDQ8en4;{hAhX4X8y~nogntNWG;eCw>zwIb zW1dk9s-v_#$4LSS#5%Y1TIJjhYc5Or0|tMVhYudAJP-+DxF7=BHz&De_@tvN3R>V+ z(5}DIs?qj%T5|?A{eH%5W`cc}J&esxmP$mg%R9h--~Ux}+7(4bmv5!1p8nVu24$Ay z93FGZ)pCC^{TBEb!M-TpmEdCjX5?a5818lNFz>MV>$(Ex;%K_WZ-7dKN)p?r^X6(N z_tsT6oc44M?;IE1%`Yx2PO!`0RQX;*ElNE{?TQnTq_}#6N5EEp{vhXd&a#HrFwwBH zO_+_M4H+@7k49r@=0hbTndOVa{%;&6zYX?m76E%u;@7 za#=adIwbF#NoS1uz%40|;+nSH!N!w#3GebDA8}$!JWOcx#rCUVa>Q+fc|t&kZ2YKD zx4BMlHEK^{19~&*=4Z`S=MVaN8dIY_M8vTHBmwi3BFAhCk(JM3&#l)wA0!0uakf$t zUxwbKu6i-{4#HObj`(Bn$GMNX5jK%JyY?OVm+HtkrL_hM;P!jImzpm%UgB5X&w)Qp zd#b9i?FiddArefFJX0((#qAcSeEmOZ(r;YdJJC4n*~Qg4^}L*%JL_wrHtgi>wHox+}W!QbLHRm zLqSC91r*$Srk`ywk9>GXkg8`W>8}4!Urp(`5@PCYQ*LKMr(duD-LPB#tTBvxS-(9* zDVUO;(fqnGwE(kFFZ9mQ?99ORT&TRPfPL<*tlSy9h3~dTINfnV?ZTrrU5oJE4F&|c z?lW!U>IJ8Q4`UyXdR92=7?D=X#^tjPncoW!=H|Pso zN@CB%(UU{d)va&*PLR?%d$&;`3c=M$a936LinQp0>(E;0+S*dOw|uv#{K>t2#WmQx z*+y9pWQV|(fbanwx70R=N5h-6kJzhDAguoTSjMX^52LS%oqRdVB3AU3Vpm?>?P1s@ zH7w-RiL)}}VO0fD{dn%`F8&tm9ro)~9EwGoddwg1xbJ+i2!a2d2VRazIDg$uY?Xxj z*JlDd;5#e{CCSH+fp;Z+8v_GNTVsfww0GtfaDm9`k%lc6)@3&I3;VI+l~rK=ArobF zJ9SwZA$^Dir``+5a|2FC3!pp#{)8QcfR7dic6v;X7Uq_=LXILVKkg6$KBF&lu`vC( z#m-EGMO{{bNfKgXz{JOSoAWk{=vgKvCSjWwhC+(>AO1NU_@4-iv7Mcj5EmB|3gv|I za6)X1xVQxc1-WkD;kt9@7I4Qc+n1JhdXBd&ZCU@A81d~v=7u*kl-3C6>hP{)6edG?hD=c_lw z*QzR~lR2}KpRZ(lBxk&4$;fz}l)*&xAoY>dJ!1OviVj^(L|iMff=2UQ@M!+J1J{t~ ziXFI;8v?#Vy^;9d+HB>hj@Zi!3mXUT3({Pb-YS2;jg6es>675C_&miV>U^=`Uz#}WVwvhKNPk!INzyntaPX@ElHc_iyz<=N9dgF*vA9Q-bWaTP zZ+Z;iWW2vQ1nYmC?CL!hUbSUqlllfZtzr(>$puIg`SWK?I?MG*rUeHbNgd9;!4yPj|;m>?hF*} zXMs<<3@T^9G1)pyNXT0$jGyYw^}jWw{?O82+hStO>!{UuF=FI}oN?)J@K=5AdU|$t zQ7starhTE!&3%L1`JC{$339=$wEf7ZoJJi6oAR-z4I#Jr@bSu};|7x(y)r?BZ67Yf z3~y)wxiQg!PmbQ5{p%cF5Fu|p*uGn1MbOOtCP8^@Zg`eS*M9bRUwgiwS!!h42gqq@ z^@yQ4>{h9oYKZGGp);*oE@=$Euq#6vTKX-dz((HmnV3PI?R=Ww#ni(77hcgc2thzmqJ z2s9BA#io*$o7M;|BKu{&R(_3+O?~KGtbnYPClyW~P`fH6Hz{P0n>rFEIPWlm@)NW$ zazU}3GAMbDp93O#XvHHUg#n}~2R7Ugv^-#%9&alsp@@xY{U(Tw3VUg3aC8@?x1uBa zveib|$rY_dLq0*ynkt-_ot$XN4VtjiqmxcRi?Ou!x%Zz;I=nElxfioGe#arYlgKKv zw=OiT=1|axayD%1?zILuGLDaUVLk^|aBo&GnA7Z3@pVeu^g}r%?Vhs`z#7rY(IYHp)<9E=!`TT6yLB&fvpE4)%KRKv5Vn zu~IcAh_xi4-)+mO!jPe6-2I64)FP!^7{!8;3~%k9Yf7q+O0hDjskFg~Fj(e{y>O8; zJ7mkndCo;nU5vM$ei81_$LnP9dicnAj@r!d{f2PKdbJ^Wp%1OitA!w8n*sQ$<@UD~ zgzCWS35h17KIhZ==rzqG2rj&aCXP-}q5}J~>MO5Ii@Rq{gO{Mai2-NBE|2BAWpUXj z%tY$NX z8+jiFdAciX7D|>*QfZpq_|Aq$hy)jo$dmR(&<}96v$H3SUUQ6BlCSDEOV3dpe3EjE z5ZG*wkv^jD|NK$OHcjWWlBc3W2kB0GIVzhR-$GTx;Rls=hK$) ztW2#cqMvqYE|(y95l~rHzc?qS&ZO}XngIPQepLj~DWOsl6mX_00shRXZ*D}A^WWyY z*=g~mZAa;e=WKD{`u0bu9r~uLmBaf_a@n^t2W!pW7OB!~iEO=GP9MusYP*QAf18*h z;6`}bAY~^9fF#?}6jO#xEGXV%-i369g$#dGJ&~nJMrOmJAvP*52~t$~%}GZ)Q`u|i zdCFUxED14@>`Z-ALnXL*rvGW}hu|qdD4-~TrqSYJ*3xq*=$rD>sc*q{c~TsmMDg32 zQRSnlnTy%cO2IGl@uQU7yYDVSvm}a~Dr*R6N+N~Q)Z5gLMc|)5^PW~|3)MjQMFdfn zyrs#ZYj0@i_prDRS`FK{N8(4eZ`~*{>IbA*PJg|gPQ^jBA}naLTrNk%a<~y6dlI~Z zse}_7RgObUe1Xo zWPVr-!-AT62ySzKtc4d8D~j457N89EPWsn&+HGTm5{&z}^xwGJpVAUN#81$Lqji^} zS9|BH@Xks)uQzM#3`PmI21V142O|>-zbRCFOv|B4a64>R?VlmPGNzWT5X#)AxfSx! zR`5fg4$-;D?}?SAin)r3!#YHVY1{k;hnZ&iYOUkOV=V=A?mZ3xZd`mfX!Aer-py{Z zKdoY!6yyO@N{}J!O84c^BDG4i>e-fLZV3fL*aOQCvuJ%T-4H7Y_Cpy z7L4P{3qp+f;c&jzCwoq|nr1FumX~A|2UU?gp_;npRWJnKxK?v$k*Z>=*kv4eMZ+>u z*fApOyw0iJ_5z@fc!gXgBX(T)b%{Q>!t<0>2m9B#-sMVO9}0rphQ`WFd;JIF6fDzm zn+v#L`lGUg8MU{Tczxf@xRlwZ3KJF_hhf>?jMUV<8GGQ;;`|246i=S$Dkb(MC-nAD zggl6WWoP$wE7mx~v!6C=H2^g{YFap*;G%7lS7t+JT#~^P$EqjL?oKt|bO!gNeeUnP zFqZW0$D}(NAC%Mk#cfclGb3;GmZ|2KH$%_gupIE~ueZ-qGkq<%oxM~NBeXp<7&gJ3 zsn2B!&omR+u6r+q99ek5*f0CvFwoy^Oi* z7D42F0Jm#v(wi2&onFtjyr`OSI7??uh$_DTMTXLl1#Nxw?ot|EPPY-X9W|FzYK!kP zG>y-kYrW@D^_n}?iIgky!lc}?K9WbXe_#zg`a%vN~h&GXGw23s9 z=i*t$!Y00w!7H#)pA(QzmBot#l)#UaGDR~%H~1HoIm|LO;spl-&h(@OGq>I3{Y=-U zIiM*^4_(qPLWo89OCiexXl#*A?xoO{BmQl%JilG!>0#s;+FE_r#YP{IUP~jmsb3-p zT4`Os-T+g@ftP6?c&WP%gkBK3#R89oRlFlk_chYzSDG&#wz8Q|)&S?~a6J!JY6~@s z*k8JQ$*_x8W?8qZTxsyxQ++vl$voMV^#@xuPigbcopwE*p@2uTJ`ma!K9Hk8CP(;%}h|C^fSKLG$I~&JKOG4f@hw(21#`9_T{p+T{WudN4m>tm7utg+UIQH znLuE!=}mrZJsUOOp^MyL9F;#BQ&c`9w6&ujEL&4p(A}FH+ih170)>?4wO9MG{xq; z^&&3UxLv42SfKGidML+Y+7X7V*~F8_r2ehb@n@{cfFK&o%zsg9mqa!b^iFMaIc)|ZNYg!XRaiJlrz^vM4}Q@Q=03__XbILY$o(iA1j3Oth? zUUdyu2pBvw*vt;6SYItjt)%2Fow9%;(Ns&MU43VEE7$1Kx6{Md&RRiD!?Pk!4Tk}| zSQWs*#A`krG-*WXH&&e4pJbeqkum0`gh)0)oM zOF^>-9tRbIo5820bSCT;I#5tQA|)-O?O2|Ed)6dt6oB>HHU#R;)gSXhS#V}D^=9P= zLu~_N!)57}I6UWv9OR5EUkjSv9gnLmF62{6d@mPL6zXaA8*2RFS!S72aMi{LFx^9` zm?xy;t*xV^7ZG^6wgjV{ZY4D045A6j8!RI<@RJ!~kG5aZqe}TL8j=2eE$~t2Z`X<=tlSE!4jzFlSt*E7-8^&@^o= z98U&HkGcfDYA>_A`?2&~+khM>$Q%G%+1Q716B_X}My$Alr+1RNvuL{WHaL+rmnTIh z=VHBU9EPr$SAC(Gir(93%0F>*E?-r1Cl;%nZf)GOX-qEYRh7&X+)%J!WnTr?uv1=5 z*DXM?3_LQ8T_)(Wy)|+@QAlkWFBqu!9(2O2-uJ%*I$mAsN+Md|9hj)oX&XVZ^l&1_lXNH^5$+j@uPzGJmB<5G>%!TXBp z7guJ~y_qyZ7 z)l3LjWka*;%fcnxlp3o*lG=F!4G^zy=#gnzylNYaxLcQ_TW#|OOZ^y1vvbYNKF&I4 zd8w9u1!5E@s2^yt^{v;kzAmygnd`I;*yH?TWg=gnJM~*m7QWVziLF%LovDCyW@Tl# zmC;=5LYm*33Y{@w{~Xh!Z4;V|3%A}u!ol(HL8B@70sHUnccJDC6fTyiI?Y8drA>WC z)Wuqu1)NsHt+nXZXQ%a3&vpmD;=y2AU-|fIc~xF#`W^SF{Ic;xd-!qSrPLmTJMvQu%%p0cV+azD81Jp~f6LZrtjt8mC$4-%BQS z<~nl9irJ(7fcUQXMFd*~;Y^d4_Ymku#Rt;%hYd_u!@baP9de~k8cYuSkZR-{(aXccX` zFJBe?i)Cdd=&XyKvo`DK$}B?8yDa-?`6C51eekQg4l8UgFh8@7*mq(^u{6ycRMK;7|($DTb%|4|i79Fk3SEj&^lVZ*Ae3jP-I&Znjp=mGl z7GxvpbUjeG5R&U+X<(^kl1>S)+&W0rGOG)Jc@4>cjY_@(JM~s*34kBWGVP|c%e*Qo zBsFdPiKgDk*Kp^E=xa7<<(F@7TYb))Fi}q%3y3EPEG^=(WtXfPJIgQ_8*91ZrjyUO z9LF_7y*R6B@uGLRptXe2Jy^`R>fso2)C>pi3bGfHJ01M>tVLHd>v!!z#=~8!hB?B# zaW1=EdWrFgx3Ej$@!aNYS&cz3bH}BAC%?dZWwWPehZ8qGnJY}m&y3ji4 zCiEt5RJ9d6>tsCOHoW*TR^P(#>8w3AiiH<;>ROW($iz}_F768Ya?Du6I;!ru=pJc5 zy8zBa`Yg(kJEJ~H49)wPdA|(*w0&uC?3|n9-b7>kj_9}WZ8Kg)(%@Dz^yXPEOF);( z(Tu-bcf+b%%eLaa>atq;!R1kttqk7^zX@H3PtN6P_Q8IMwBv(?<7$JF_VmT3d^XzL zsiN!J8u~emqct)Gzp4Q9%+dceq`e)C8fJ$hXMH=>-a`_+k z`$vQLANTubyZyg+KPrBst~eiD9?f4OX#H(Zwn%N8q4Z;Skn{G^2MJ}}1NZwtEczES zZcPBf<4~*;D@F^I3D~;=oqNLlj|#op@S|D7yd!2D>Fn9Q~`yAEA4R?zU-d z|A`iOXD$M@BbXx9^k2(h&ldoh7dP-RC{vjMxlrHYVbH(Ugq!F}VWm5i0V5mrFar~k zHDpEn7gm3YEQ14BV`M8nhGJSP0sW~b>dpM?-hK_5X=mGHDGa7he`f45pjNKrRg8m< zo)W+gIYTiu|G(}lE1;R)vrQtzpd5x4_xWl=3@KvR!B6$qV*zoTe07#q=s))4DM1Mk z-n{he5M#cdLc*9P=>X8n82=#4f5u|th_C=+V7>5x_TL6S^FU_;<3du5GXtJ20LY@; zS^f8I;6JxxOE4TzJOt>Q>?|}dT*g?=KdyqR32je~Hl#s6O~SJkxEAE9{qL~p4Im!Q zapfS4sW<%r4J68hSz?$S#>z0La07Y~@x9uofZ+$90Y!IhD8~G}?Y}T!tP5ZmS4mzB zW%Q&2%XSsAuKd?Mvwd}7a0t8nAcjd8qqjaq#GwC4g5EzIRS%$KO(}Q(wYG{B~`q76Gl+|Y0{Wt z6hVivruQkBtwuXlfa#)I(|-+Pcn<;J2;sBFbV_VAJbUZUCxfw^e`Z<|U{K^Pb>+RE zD--{58e=i{-wz!y;bB{5{~UeVW0g_bJ*j_`5XRttM4^9Fn!7R> zV)$nhvC{;|^fe+e6q;lNtj5{F)GqKRC;vP+Py@&g+@KNyjGQRW16(t_m-p{(@c^(8 z%3E2OdjtDurXguhq%i#Kr!QbK9fh_f9wied4B^fK(nh?w{_iNh7|2y)c}WKtR2H;= zW!J_F(PIeWpM~d&9$coBK7&E|A13_AWn+1217x(h=P)Q!@c_oIZ+L^$``^U983dT; zgiLraMx<0I2CnrcBmXtU;>7@2lK+BD{7)*L+-O#ul|YN36nV84db^`ymwlZXbf_4d zZ+PPqJLe}lVW1~qoEOJ!H|;Y@kz{(U#nyT$uvVYk0R~D{4NG&Uo7&~KZ>oQKw!mH+ zB1VQ`$AJ0vnBmN{1`)3r9qz74imkckGvdH&L?!nzwlBro0Pg`kj0IbhSn4`1zgn%* zI(%Tomq7cA^(WbRQs(n>E)})xa$lGYmRR1~K#(7W1!w>5SU;1}vqoB6-oh7miB>ZI|sW z{MjO?Mnau?{TZBC>&GPDf8fBdAUid{@~g&6G^-XWeWni7xH9a&2>wlskvO#ZqMUJ` zq}+YuW^^69WBDPUMF`3wb=~$TP6|gQezn*A2TX3)Uv4iA2fTt`V3(uYzh{%brRz~O zXn5ZpL#hktm^YYV#&;1qe!PFFag^6O?h1ydVR_bG7O?X>9`$$L?Hc9CD}NrvXQ8Rv z?b-E4`3~A^S!m=Np~tKw>x5)pZz) z{}!Nx*w6-cQZnKF>8nk=>4zaFN=|L6`L1}7a^|W-L8<94X70I;=j&IlFZv8#{*`ga zc^2sMh5Gl9Vo0qLeYnGQ!!$s*+FW9H?ABJ_DB)7Ei{qE8N==p7oYYt47UIS3s~xOh z;3&Wj2-Kd9ANowK>~xXV9d77PRks@r`Z%sR%`}Eq1?D@~L~?e-@^f`0ii!O&hD6bt z$jY?8Z3raY@;pFQaS3k^>FWW;s5jm0Zvj)8?F9CbOtUb$_nx)DLm!+*mD8xv6YJx{ zn4oTTJ%20YqAD?Mo@nO0Jv&CI0Ah+b7ZKcXCvLU0dyIM>w#S|(H(Iv?onojx*p4yF zqn;MySpHk&(SI-*ZInO+g!KwELBsf|;I;@GLX@o5m_r@r;6PUoDv$m$Ef z5EoAx#20n{f{Rv12y&j-FpwBBVSAXdQDet~x?lRN;nkAtXSw%k*Dons z-2F`dsE>2S7v{LN{qdpU?1Wi(g>6%#4{;M9{$U<>e{g>OubzSBsfsrp8M#tE6MWke zUf#nY2ym=w_)P?Zxj-UMojos&r%^>lVpV-=TO}Dz0eOh1{0?&Bhmd-D&g1;8re>m= zqwXh^79TJZ<{1hqTAYn}E)wV3o%yF;)Vh26C?oQfWvrbzL0jMbnl7P5lI8n+rWA6& zuz}?%O8NR^y+5~XT*wQ>AWFZ7=$7wNFt>{D!BS8V7#Iu0Os{K|O38|!q^UaPlZj7b$ z3#N-1cX!1C~6fVE2C%EF+e*YS6B4?{7N5FewqBX2Ot7mf$zQ;u}~ZW zFdxao1<0n{?AO>NgwEL-x+T9vUo1}tKv$!^w!d^X&Z6y^f+yt$Hj3ot1I$&5CqaPw z4-B*Her+WZC;$y&EcUUt7&kA-0?gaYKk%rcgXaFCSaCE^1TAJeUcW}Po~n|!AQ(C*MZ8ss~V8aOrFXwR2Omp zqDHQ;zwHT)05H)~s{5BiFV_GjtHe73v+&A!K3)9PE^2}MQL&ldel;R0aXIL>J3y*{s@K;(UBVjh+ui4;+JzN_yCiXucM!aV?hZbl7F#_ z9)93{R~{9iUnj@C1{A>_?=3%L+`O3vFfX{lQV$NUQvHQ$QV}po{FVv`Lx{jYV<|uc z^ddW$>P$j2iNnp4b$+s|Uh!AE_-9=H3=0qeq1881jEL_!{v(L$0J5#es0{GnymRuz>hF|o=0?f~K z1pH5M`F{{xc(x41_LX-REy!PtmpHC{jEJL3lhe5)12$AtFI_L%Ol4~1*%}wIpiZ)&S zi^?9(FZc%%xNp&IW#u-GgDljCKa2)9v%0!i>OR}iKjDH4E{0ZKa-9a}pK&%Xa~oUC z)hRz7IB3eA*z1fbBeoiRVg2rpJWR!e4!&2lelPf@>6GEXVV1XwHs4Ljp6n-EEsV$d z8AL`ai!6tWkKzCr)Oxu^e5*K9x@2r%^(Zqwth-vYRvk2iAO`0`|Mc%9QA zr8hZ!nX}e%V6}#abL#8vKZBVk0!T}VMGNyFY?P(x-wwG{vH_XzmdP>(d_aQ>7eGQX zMTKaFkK014yuEY_G^qIVoLV_N2k;be;05zs$8EKG>6E!JO;%pi`N=%b>5G2`rpZKf zgt&?SdqF(fDF_EnSiR(?38($5vTJZ|uugTY( z%us_|k`uN&KuYD~X`X*XYSlJ2!L{Gqpcnly(mXRhl%L2dw$6VO! z$7C%memNs8UIs{~iY=G^m(0iX7ASJ!O$M&j9~D4R)Y~I^UL7=vx7-fI7>MekUmERp zb?1@uKoVfZ!92n4FNdI!K`{|Z9^xXN{aDcIlb#wr@^pp@+nTJxE@CSq>+65Q5Rxdg zOJ3moO_$79!bX|$U%shL<>t~NJLO*M@SqP|QFkNzGgenWa?E21672k&GVuxS{=$s%g-}^_Tq0({;&$H-(A4i zS*tcn5fP}4nb^ruuD$bKFLdeL_PBLZYv#!nVAMO!1f_FqNqhgO7%U3?IH?oFw6SZ^lT$f=)wugNhFl{#|*=Sa> zZ5j*TN4c)9-Cq3A=7$2?w_MkQg{S%M3fZr})7YB37XIt*Y(=b> zx(jP-w9BguY!-DJxHzb03QK0^+&0Kq{urs5tik(NBh?>Ji@yRs<%LO3DrI{N@CN{H z^b=1a+@wN(>j0So;BxRqrh8!^U>}_zQK!edz4?%w;esQb{a33E?xQvHB~E{2W%jz7 zkBSIcd+1Kycoo_=KGpD(A1oC=RbAL^7u(g}?UOCaf|1nZ6~kw(kf9(h2Na}CjDqtJ z7Bp2QRwpW~PDC~cdM>6@G}=0)3w?R4aHdqXVvqQ;?}Q4@3PRV(wS0AbLdk%{L_ zK4ROq+Ui<*hC?=1TV!nAjO6Oc^iG*?KwkNExC=s3cJbxf)oeeJGA*&C$}J(i)~`yj z5nPqxDOfw6&gL}Rf*+2%R@fOTT?LRZt&;waEVyuPZI@x*GCzp69k_hD67>F{s9TQK zSEN)|Y^i)NhMCR9Wydwdm#5ZkE@Pj3%&h1WjM(s|5Tn<=_0Iar(R9A-LD3FyG*Yc* zb`PB?E+H+F7`-N}>D?FE-O0+vHdd1zOlyXpH>orgcd}Mw#^B* z=KtPaYvuUu5h`x$k-*GJ-kHe5`H0kYR$}@+f_DX+f%S*RHIBut}F0it!*Pp8Txc{-U&oZC$`12OalQ!0=c*d$L9n~+_dUl`t zAYBApCMbRMw^!Lf0KCFx$T}kc*g>XE;Bg;ks8jxCp++Qh#J@K!{v9S@&K2NSsGKqF1A%bsZ5R zwyN9Mdtd>xB3#^M^KzYVLuDZ41Qv7~3-X5z7hGH(POS9?(7F-nDdUG<;FfV4(Q+V` zmUpsLTg4B*RaSSLve@`tx3+rV7HM}2{kI8KYNhO|^|qH{%fxkOtvf2(-h_|M$qU>0 zQPe3<|A{j-(a%kH=8jbXwelr9v0ti_&14|oado{B{UzmMd7^7v9<_TKz%!_quII@6)5Erk`w?4{1aOWj*EVrrj-ZK zl040PMz_&+Ux(YlgVU&4>&SJ7;PQY~wTXi)Uy1Rlt+ugRF*g*X3DI@ZwAy#8E~H_z zZ=zCbsHl*~jz1W9^moXwuhvn+0J(N`g^egzd>-(w=(%|}@Z%s&9hZE`S^BvoUcy~|R(voCOBKWX42 zg;(pzMv3lVP1(GxtXylnL!By7oaJiuC1gYn<>c|O5gBnlXm8ZMX~CX@&YGDZ!F{cQ z-`mWxoS)8i--k7?bbIX<;H%B_(XsTl3DJylS>ERE04C{tW2oyc&$jC{#KGTP%eCVh zhP5*z-$lyhzIXzQ&)%usW1C76;qNr9jK|sucdz83JFZ) zclo};O#Ep|k>{^n))l2w$CK&)us{W%>A-13{d--Fu6_=l`XjIQSD#qY`T?#rnqh`GIn19LGdeQw z-$VMBORr#aIqMBM#)mgOG|Q(N$nh>*sa)x`YO)~rUgTJIT}*d3p^6If?2}Ji{|Y=7 zvEXf7g9R;Fp2`PV78p7%qqs=4%!^IcO-5$XzT|svd~n`ciEq`oUtJ(t8>^1 zYLYJ10p--L7wWBlllCreUkic?Q*j=RO*EBpc6x#7*9E`qocoHsQ2yN1rCcY2F-4S@_-JCbFiS6Rky^z@py#8r-Z{y(07h8>gYxJ zUY=hgBL~QyfAr|UnepXO&jvUs@*aJD%i}W-OS`*?v5_$xr-UTycU?Tjm62d?mk%b45V&HahUd=>=2-gfDs9wA8 z08#ZLdr)ni=4zfsi0=ha8|x;fmn2_xHvJ_Vfr4EH!m-KAUVpTzFYg!0uu)R^VdJl= z?%n<%&;Uo()-;{d&C+r=KM4mxs9O0)Oe<}6(9rt25m=M|6J66+vHjhKl#$1zR*=0z zSfd8}vdBdn29?Ki_u(~1n_RjK&)te-`ZB zzy`FKQEw;oA9@IO(tw_{zK#6x17Run^PRDj49-ghy_65*sMWp*HrLTc-8E5+y8YpJ zqBEpC7a=CP)_g$^1+UNpHkI`%<{}pNj*(11;^{R>z#f!pIsnj%j39K+GgROqkm?pW z;tdFzUwD$S5vev&I#hx5+hHs+Ge9iMzJtmh1Gt!EWp{xMHcIIn1Y*?PALjS=ztGC% zP^;kq^3AQYLW=5TQ+B8?)oL=*RH(JLxoNNV;=af2CagUGO~rgAYb^;*bU}W4GHJJV zf?Z*ycP3wWYROju7E-Gp;yblAWzlkbrLDW>N4-HVRx@F{o||OG;h~*3RblzNXnPokf%>mZ*XYWn&In z2JdV3Bx^JwHCvY#!6Xh`=(7WGMQM9OrKT2|P0t@*ya}9Dg3dSJJ$v5$2QIh)ns->w zpsWNtw-#G{(Eza3zV9f*nUnosTS`}k<20DUDv&e|tmXyl=yhPpJLzgT$p;}r52`dg z(1FGk9o;Emy$hYMo;dB#LH3-=Z3kHG16-&2U7LVZsIs&FnKUh+QR5{+41F$Mx%}Y}+f-vagiggiHy$B%Da)D#b*%@_Pbb!UWu{CO1jfPaF> z3aX@~^=k=v3kZmokInu#BpP_x7}y=nHTW2=iaY>k)8dyy>W;Q4pw~j$K3hRy^&CI^ zj0z7J)1ko$s;^lY?Iz`x5n5NbuK3s#t}AHM``yWNuv~g8ghS%%7wKCC8Rp2?mm8Gc zxN<^VhjS}CA(aMwTWUlTdx^N0K@->NUF+L*sN_J~9|OW6+f#iL$F2r#$Pw&ySLpDy zIP1gqSe1gIEx~ZG7r*mZIweT$Xf=GN=7xFQ@J1G+pH9fpBzaS}yZhpEL>43PxL@m3 z-9(|*mi~Ylyv8xVEFR1scbq7-e4fm$#ZbdO?V=@Hz3YUeythcm!NX2)tbXkEh6%va z^7nQ&8arZ*f@oCX@xpG*%sabnxFLR#)q5PgkgCe_QHgh0Zcp5-KkAcbygZ<7zeYc5 zrh44{-nxrFw`lu$D5KlqnwYnbsL=1+sTY8m_3+dXZM&3a)#aY`R2w` zj(XQE-4!Cj8pL6Y?BTw&ly`V!w=!ux-D7qBmD!S*B7q0gld zmbZm4G7e}M#rwub^B8p{i^aCR;>h`QPu*?r_(&}eznoUCEZ~O^K6?b@D_iC;`pNN? zX2<{>+Zhde#CC@~B~$js5?9FljuB9^VDtI1@$(Vd&+m1bWwJvBksMRwgp7|;IXqx09zej;mI6=oIE@CE?Y&OX@e686hdOfZ+ftcd%{*dS2C)c zZT{VUs!@Tce}D|pb~axG5%tNAxGIewDU%IUn}e+KRZREaYf2T3ebyqfny?zh)srxH zY%b`H;qWE8&>A8zdZ?dL?}8$OPaJ$+Y-(N1fmipQW7C1Imo=5}kAtSo&k&*t9y?C- zRs{=9EH&rnRfy1Sc`^pxPzAagng5HuH;;$1egDQwQE{V^WN*78D%oSQlu#jwq3pYC zV<*IrB!s$4c0O?<}XR zjAQ@%gYfNsPNuhk`tP$!k9bKtV0^S_d~Cx(j3I9jem?fHx9eTU;_fGdSaO?q+hy%9 z>gxMNk0<+pytd;ybA<0KL&^+g7H|$-u~Ta23a&jx$3eDWWzAjSz_liRQMoc0Rpr)} zk7ePu?1|N@G@kS%MA$qoQpl&?wnA+5Ku2<%HeouSLxvbRh%QBgCLTcw>&p=%y!=&f*If#*d598|2lGsNCNqX;{%O>^mqO?p{91j` ziVhcSj%ppO!5;;C@xs53spRl5pFbQjhlm#!c}UKHAFxR#@m>riF&g7*+E=hDSDNf{9_@%t+mbX zi-o0$-_Mx&Rho~>{>#UmI>~GxlmQ5X-hjC$yV^T(i4H?2j-bQ?_TQ*bNpV! zWC`0POe|lM{EwPFBVPm%Jd9UGDhd|PFx12tz{<7IehpIAZOL*v59gyLhPO)SRzX{C=&-Nd{Hs<;Q4%n~KPK6#s5*T5-K@A>Vnp1$on zQIeNXIKvz>?LefJ6M2p6#DIOgFx=MtSMu!2H;=ju%|YM$5~@^E@CX2&Qg)UQr*hp( z4s$K4No{g2t)Im088kyeK3gP#4eUZ9mN9wF&d1yg@WpWLo*h9)P4sYjor{EUL|s;4 zcut58Clzz?@%LF*&3|&8lQ+-!@k9?My70P0zLae^k{JOkaWE+BE{ylP3s~`y27m$7 za|`SrNbkY7H7D@H&=Vuhok^_0W#J?*|CJb8u&R5;ZQ1fxfG?4=v-WQrUi~UbLa}iG zxoB=s0FbZ!_dGt;0uQI`#o8i?YT2?L<+H47hHK=I>z9kX?6`DmxS*9rfc)s$V~mF_ z&u%ALTF{b;6Q|h!Cyvoh%YCR4=kVE1=nkXh2;9*&+A@E~HB+K@k$AoEqVFM|4z|-> zS!U}?Q{h|@klPJ#vuU6g#_q813CCc`q89bHYs!7jGi1zx&8`JHgDp=J#G1~r=^A-- zPdEG+4q|1Y|1=sp1~MWAd8#MBZlq;Sz`OM`>ep6a7 zM*zmWeS$oPfeY4DO`1nY7i@6Z=bZRxR9AnNrh}9GG=x(w1Q>)RytmmR7M^Y$Wl}|8 zstt+6`Azow3;2uE&O`vf+*Ise4`%1IM$n_97!hp5LgiV1qY0sVV$&KeKb2 zN&ZD1*Xgy9En>;Q32zhb+&BV>sOSmZMS9f8uLG;{^<2dfSy`&;YgRM>Eda}{9OnaV zMLnx8-v(j?Ym=Dgn~s*N0*^Rn( z^FQp}cJI=pau8jht<&wdK)YYWPj82+yy-w+s7j}KVekGB!umM=wK>X{a$ff`R@ZZc^* zF^1Nj2jZ6A_?I)ayl~GlMba}RQfZ6BemPV&+J4{j=TX_lb5Hcs);YJN;AO<8wtLnm zy)I}`d4CViY_mpA>cAYt2YWL9u8t~TQ}1>R38zl!@sJ{vJt7}2qFAe>912Fn}EMtX=NegZFCjk(lwE!QK&M6k)?&HDvoqQlwNX zE>kmeOx|E}b*SE-rtR}qj04bmHYym}5t3p+2YiH4lahMO-AHsGlzQh<24)`4{}J;z zNzCeIt7D%Pm_bf}I*L-sw-h#)oEy((SYk&Qwk>5ISh`JFxAm<$7KSQv z!4ro3$tdPz`*@RLgS<`RG}Y;Lv?JydL!||l6f-76xBqy+F1k+_Xw1$bAO@BD zBFy`QdsH4zC0fR`A!4R-g<2`<9yc9(X>D*+BW+!HZr8btU0x?UwOI&u418bzwt25= zyvi@W);Tx2PADMySbvQ3ZO~}5zIuTU-%rV;R@&rpZmLY?<_sVUyf-T9)RX!pgVy>O z$~;ch5u++?lD#eL+HEc%Uik(A?qS-T<1n6t&57^C-q#Flvt0Gq&~Yx6Lq( zPp$-M!YY2*Nxrk?EBrdbo}TfKx`m!Ms>@g#pGY0%fH$n*nU5e|m#+pMIl6Iyx;EQp#HG~>iR<)-DAlV!%$ zM5?+bWAAUx>;6|owBR#!wWKkn3qW zkV}VeqORjM7M~T2H#xys29jR-I9V_(56Z^I*arB{|6`>hFQSTs*>oNeQgF_QXkKQm zWbfA~-&gh$y1+{RW#n3)f^X*wnVA>42NidLX%qzUBz!QZHh6Kd$==rAQ_s)Upx_Uo z#kt9HzWwk?UQzRFwY(UxUM(+FDRXc#X7yXRHP*bx5NnVmegND3tbrenpD7*k z*J?_9@GW%wwE?W4b1AC9jB1*L@bzT>c;u3vGummWdYnoTna_JZ;5Fno{`6Gj)Bd9( zKV^{yvW!W+;bGmL*aMba!z@f{XrX>aOEmY(x^o+L{VfU7rP5d6fTX!%1w*AhFM&n& zSQP4J0xBw)7%yqxzX`o>)MoorVE|s9l~66Zy?a(6X49&K=o_+TG2e)Qgbonf>Jj(t zx(&Ta1Cb3wj{b?I7d>Ctd2cRcTBtXT3&U65C(_{!c;v;p{6C9AVynp>t#QQpn9DF@ zKPs+_LMd;mA78kF{`7NE`a>*J9a>0E7q6GhgqQL<>gOGTXH1&Bc)pqPmI169+QnX&Ir9l9VGF?H_ZGu<{R4ohL%^r1}dbE^BSyy z)qxQ+O zMF{Dy@nsp(iA4%WQ4n_aOK4Szlq#_(&NnWmfg!tFRMI|Yhvm!3A<6LM`II$>eta2m2?uv`^Bf|MrrU_0hyk)RFk1|Yl|F+DxW`BtVS+h* z*G{}ZpRhm8>?^?NY~tFGJzjl)KX`?B1~ycVnyOZYbb543N#z@%br&Ea!jd&rt8HWH zZU_TjgRW8H#GI3?WBW-v{R<{tPdB16o-7l-7pkparR_b%l$pICk=FY90cVc-B-BZ8 zcI-bArHI@OqkqqyKX^Ya;!zT|?F0b#{a2p)etml*-Jlfa>F)p@N)dCx8kA?O@IN=& zhs=?59#%{{Ue@o4bF?vrZ-NK~*f^fN4}k%eI+u%$G4hP#6tjGq@afb~WfB3(G!qiL z=h~J9FyF0EgBqTfCFHzxc4Ggk`)2;sg##qd`d*;K{_^y+j*i@1|IvoTsgb!Om;p))>m)@qQy>1>VP_h72% zON9vP)tvSpNgRC7+0>x-=DK{x+CJ2KKA0ZC#lv|kp)=oej3;Dksw}5m-D+$tnxFCe zGY^Q+x3gc`f@>!TDPCP1u5TVnIw_5pF&7b8O_6 zCErEY4I=JnuIEZpR{|h=gKumZ5%#~I+XeV8O?Hg`sAG*PDhH;oC78qbenu3xbnDVg zd13E0hX8}_a$JcccWE_ccex*V<%)6vIEA`r^6OYUWq^ZZsJ>-u6^~m119w)t;Q01B z$Z%X2s6ju29?kcQwmlYCe4!_WoK#Q}>T2Ig-_|7?-qH_&K}St@S4Z)M%FS=-6ZTiZaTF5i)A!7K{N-)rmVHzf zQnSIyKh@Dtkhmi!mlJWxO{CKThi9;N;~nnt7l1IdV9VDV{&_c^(#hY|RCZK1&>(t( zcH|-b<&PhB@PZE2y}luV`ezS51VPRB_G)Bxk+@*VFCBDX+dv<`?MSz`EIUHhPHAsh z+NB49TV^GYE{maTIVwFnx56&*Ins6RedjID_0KO(X;3MfL^q(Vw@YgWLi<4-h~2GA zBYPp_3PP@UMxtw&->m@1i({RKwx&B%9~i4{m2+Dc4N$D!`<2<*ULjp0;iyg`tTR0# zOWS5l#1K8j=q}uwl%3wb3Tk2;AK;hEd-Ux&Hw~1*KIFLExlTZpCKKwLV@2yG_0Z-S zgksna&+eK{kD1yVl*~J8BA5+x|IKA=%?*{pHz#OY`1tKGx>>g_zj2QBW4fUaW$tQC zCS5Ptv^1M0+#2efsTyGTqO0jU_)Q@uL8+C?o@SZc2Z&MzO?Z!vK&{2Y#L@Vc>4X?n zUbb>25xe>KCYg7Z_`_rBQP{Uv1~RL`&e;5zZ4xh@3%@WMD|sdLLGWmiW8Iwh0Dg0I zU+O@mPlIT>a_4&LqF7RF)UMK%u|l-5IFNxzW3ew1A;V zB`j6Sxc3=Vph<|gH`Ax51eCZ-0nRLy%YWcWMHjCGm<>@ zd#647fn9Q}@FdzHSh*xV;~$JhtN>s0v1Rl2u1vWJb|v(1!A~RL&Gz|p4RK$BK?!i{ zyR&UbZHVNYZ|{X32){!0AfdwCDHPz{&)7p}dn(LY=s!y4f%2?$m(hADK{+_3G3U-e zg@+@&fN;UEtQ|m7f!LXl0&(CJC(4NL_sZsa&=M~hL>XWUE*q%serkCL(15(s;XlvU zo4`5rim!_n`hSi2ZW@N%pc6g|>`n;UzvC zAG#!}?>=$7;H7uO&*=rk7>qTI3js2kRUD+Yal|XSEKri;F>MK$sDn+gw%q6MMA#G&7y%7eY>`SXvj_m)|=Q2o|Ijn4EDteU7|I37RM`}DK>F39yd zl)Ge`F1s>16HVQ9z3fSgz)y1`cL6{C-Ov`gz7x z&AkOw@^UE%1AP>HnCsaG68}#qJ?Wj;xUzki9R`P)Uag?pv!4cFcpp+5b(k0u!!2>& zwCAox#PE-eupUMoEDb(R>OR*uvxg2E7nlbd8Aqd`9}HSpZS3WO-$GNqj7v6>SrF*nRq8)tKlSyUrzCwop)1RRtapC^Tp>p1-p1(m#G8jcqLE5uyOkG>P*7WG5R8l1fi8`31nW@p|!#Z{c`%U26<9e z`Hzwq{D`t#t}cmxeC&mvM%}u{oAitY^97rsgi|7`nzhP^^7;Kmw+LqrOxVbtLIC{Q z>0MfB%ID*MQygk<_}~jm5f}`Bx#+Sfs75<8cZJKT62}59HSzI6 zC367*UjBh&g~kc#E`+yYBmY2*B}p1j^Xiw|jHIMuSo_aMU%1OagSxu{!vK&siX8#Z z(mCc;61H_tUZ(3lG(0x)nXE0 z4R}udvj)OH!O}8YF29sTKMB)&k;oseH%LDr;&!#|g0(XumvWkWNp~1hG9YVdQlu8+ zVJ@JzwqE4qFGjt*2=8{oGbZE?)n0bD5+RA98b(FD@s;b8QWpYVZb`8d)v2%5$#MRk zb&0}C?&EYLX-A7(uF8;mX;Y1M3R=Pf4^rES!`aDF3atjmDn8ya$aPdnE;Rx6KwunF zgA!`F(@uK8t zi*Ka326s<{emc({eCVL2tTS{PD|vPIvU@*3?~*}z{<7}T`6QjmN9tQ%g_p2OIj7?mMU&Vn}tdF`)n zr~Qf0S7d{0>?`QblQe;%p%MDH#RMV8wj_vjrVp{L(~UkgLDJq@*rB17iOB%%@g6R# z65P~%2Oz~E3~+r+hXB{!-GeUZc|W}V2l|u?&U1b!e!)< z7=?JR^oLF=nyZ)IRcV=eH(TvX=r6WAV?>Em9g@}?fSer>^Yd|+upte6=t5}=kBGtQ zON%&S(=Kdi)~3wA#PVB9-N!Ybhw(R|=t^0plLh1@Vum*LyIj^qbVAANour(?M++wK zyo+8c^%LMjTt-1EI01XUxvR5|}l! z(!UL<<3%JcLY-Ebk8aZu7b1>F?`>Z zS>Y_(9ojwbnSip&Rj?50bS_3>9sp-xXgq(BPYSt^n2EyZYNy!^;+%SVBy#wNGLW#L zwO;Z#Acjv**PccmHi`t^ejb_Gx2tmb#sVTn#&xbmJ#Ro-l)EIHrPyA5aC2jyThpo+ za%Qxvu2hmL`yl)AY+q|;BmnmFuk4dWH8s~|-wi|ng?%?T@l4Z)g>|~BSmptiB^|oR zpoP1A-*-F;6R(MhvsZcMEj-e)PfJ+Y*w9y>wWw`{TSemn78KpDF|`;A3?TB6l?Ocs ze2miUCX8g?hoNmxFJL;Fafnv2Qu$XK59QHwE9pa&1l70&x-FBwdoOK|hoHavf?Dl| zOq~iew^p%$Nk=chfCXUjq%|ytVg=}baRbSj@`+?|tf8BRqJ-=B>zx=lb$A(su$)Tp zu1&+s1r2=mNA~JL3qYtP0UY~#M;y-|;U4a3yO4b{HokVm2H{t-DKiPeZ5U;*32~Dx9*AIbC|}GRq->fe>oG5TNRPMd{N3{ zv1qYgj<~w85J$zCFWx(?ZWx`_Gaz*Mb(L4|6>rpCLjd&f0vk<2umL-sN8Zm_bhat#Q^b>=F|aw#Aa)sT>>v< zMbNFo_S+$#Atc}y+XH|1^-_wa+_H|_ShQY00=B|&8HATxETZJbHN$*zH{pOlbf6aO zhCwIox{=Wxn(|~KV0Fb+d0ZYVgidTv=_}AgV78F^4$JwIEL8Z{m#Od zWXjs4#xwn7ZH_$Bp`Z1y<5N3(DUl^aC{n?-C3VXs&5pJQ1_mN`7&Zr4>d3iTn|l96 zD9#IJ54&vdr0vw*AA0o5m!)Y&XL}od_?Vj8ICC4ce8>#QcAknI(~Q>}qLwr+Ya1zk zSZ^g_CE6-QC8vZq_%LZQ5A$wW@eUuYiM3IXR8p;e)phb^oNSD0aw#GUTBLF&yNG35 zL)g!55vkxAkvojkEeKJykV@5tpX_$z1u^xW!l84uSVdj192+*@w@vmrHpcbw=;rNx;E*c)z|X&h9a@yl*Y z%2Bc2Oh;AQKL3cmI%aVJ(wj-=^+vaKH;i|Yw&~|N6wKaDsG||hRUG`5 zXW;8qGQJ-_zRlJJe))dJBG&5lskeMn&0WPKlVV5d%P#Op|1mjdw~W9me zW|>qQ4sM}5yP-z8n)Ar97t`$)2y&O9_FGbD`pC@^=qx0y78y&U0dWgrC5P zguYZCShY=HY&l3?Lar+ z6$>sOJAgKE$Eh7)B_#Qh1yE8L^I*}J^6|E_J~Nx2N4*Y^=WQ~-c}BqqeF-f35~#U0 zF%k7->s!YtI$aXfPZ(-((NvYHs)1t_*~N=oG~-4;>!bju(!?vf_$}oJ+=1K%t!g<# zKpldVH)3Vywpgliz*2E$y@p@MFIlpkfv;3~FO7*fKxY+>ifEMFzo>~V{NPs+ALKdM zyOAdKfw=35z_w|83oHsmBcJCy;2u?BXj;bh$+&F?4K&}@?5+iZ|8xG-c60y)cE%<4Ev?l>uX2?-QfI|t*T z+rVas4^NnI#Cc_Gm?~j>a;Zmw8xSvXw_C#Au#I8Zs{fsmaFPB1{B6%!wND2gLdbds zqWaNQ?6U}7Z^L;~*k|TL%QF#&Dz2C}MHs|+p6C9AB51DKQuxQGq^nEVtKkuQ=h?6I zR3IM>i3S}n9`edkpbFnHqm1T(-agi?MOX$SfpKa{FT;DRT}QhhPaen#YDwr4m(;!Y zu8TEp^C$Z}493hP4ieXxMq72aHh!ZC(9X3eQPpjzh6g_g_kGw4*``Z=o+!Hl8)+M$ zZ?vuB)USyOP&{;ihAvIP%QJ|9GELhB;k3hFp?-T;D7w(#=j^=M+`kw4c~S`(fV)~n zDX2zmt<29CWzZ1_eKF|Dj&opxK3x+5<9jf?+c%}kmn22V!}zcDd1QV1w-*4v#J1!= zg?aPARPT>_9ejG|cn$BKTD9MXlma??moc5v{B^G#I~D`JTO_E>{R>_G719zEVM4g& zdbWo8Kl|KO5PTXEYwNBY0AW6N^!G0h3UY!O`CD9PM(__yNDm?~xiwcNo^KoApS#%f}AIWNrDK*KZ3C{#^(ZA}NB8ux$wb{eujROHgW-s5n`Z z#BenH_b>Oqq8X2WIE6g_l$Q?7vfglt+vlC~-cH=wXcu;Dv|n1eAPn>cQw<*Wv~z|5 zK$Zf3D(bK>`c2;BA>dQDr*SHJd&@d&%(Z^|a#!F#U@S&rN}nSCkXI)K$jiv%&ceBK ze#5kZ2AS0dgBN_C&>y$=r|AneW^kuI(&qXz=*j6N<&zWso4ns?Tn~$A=VaI}FRr`i zw#cJ@rxJu)#DLUl)|tJ3%F9Swu)v_!6FZef(FJJGh32vyhU9;C*TK(uU?dysUm?GX zyNj+5K#5kBD39Od4dkII;|XgnqeH{D_Jk|{_T}!qH)&(}@)tYgPk94@yu!}yGL}2% zSMV0lpkPjp9iZsfDzC8veK9fd**2}el=3(?_*36x!G+)CeXayPmHDWiCJZP^(}F*Z z!51)=3vsFDs(;A)JEQjR{C?U3%%k9mk^chb9k>6l@%pdv`okFf*LeNcc>RJAw0HkC zUjId2eDq(;dr!-sNcH&hV8tX^kHWhUuk74~2?RX%vys=* zou0XLPDRf?(EJ7i_$(RLv;ae?P6|X_>Orx(3`+f;X zdv}~4;LF9-n}}cdar@mXnq#%VqZi4z^AC3p0&GclNAd!Icw7a2M}C8n0gA0Oq@MVS zut^ZIkfF+>{>%w-UawzMX9F3*n}0fWO61kGVbG`G@Cu+NWyh>vymiFiS?UYs!Jau9AQAd&4&JTZiBfq~B(gnl%#3HxvH(zdVnasZ5?)0BT zNT~oL(JQ@#Q~EW!U4d_CE}ewZhsfWL?45)C*AW1YmMG0}vCfpay;I(&V3l}puyDjsK1OK6ou288Va;MMw??nAMpxcFD)M}oSy)HW^|1(WdN*?9>#&`YiD+)$5#dri7 z;0rQc#z8veP13P9uZPUT&o{qO4sQmr4YLfdS$v;_L+?eqIHYlNqD&_(5i+N+QHYj{ zoNnC`4@Ldcy)iv#tP3#!r4N3jBv3=)GkIsh&>})oJweK`*)AJ(v_d^qfU-7$7$=qv zm7oh&`t1`+9C1f|VjAtpAk2dJi4=TOw*Dtim@a3ORJ6ws-IblK+d1gGTAYH{LB zlL$rvJk3DVW4cQe)F5f34_HR2GBaYI5Aav*U{O7S5GrS)4mm5&`QT5N^rl_z6r!V*4AQL z^NM@)$3cuXygwqCi6fq#>1eNQg^KV};w>^Qh->UU#*PkyO$$EJo%E{!>(>HS5_Z=3 z!3cdP5}IvpYQ}$XKbXUR16Kd*yzSh@c83L#yGWJZi_IW?4$+;;HryH}LWtI8b|!P* zG1WI4^d$DLy<}Rzv#yK@*HnQLgE$4sYMrhZ2FxszYhrN!{pzbJCVtD&GQ$CTX3VC> zBPg3>J;I6VjfE!b;hI1f-02!#)!N60**{}_OAqo;Jmf({*1GxF;vAfco9*8u4LL0} z@lCzI8uG4grMR7ZEdb)66RQgz^HUaXE78lbb4&fF;Rq?EWYXc0=H&SX{*Xq^#7iAz z`2^4b#%z6=z)^}9%FZ#*9ze!hOR<;nKm2jU4Fvr9D8(%+L|lWTa10yL*S8!`>aE_` zMFQGk#{vSgriY+O$&&W3QP1VA8egSc%`zAU`$igNQ0ghdv@p4k4D{50{{lPRdG`P^ z$dF;l)dYD<6{vG_OLjduQ^^ZY6~8ckCsY~iKS-5DfZq0fHVDTv8u6BP*jz_rpQ(3O zdCc)r2b>#TT-+T9no;Amcq;$X=ysa6U4eE7!HRhmjzT|sgV?3#3pUNm9e;622#$Pf zyS%8b3leI1#nWzrS^_^%Ar?0pr64~d%UH(Dcez(Lt>@|h+DrPBYNUGELyzVkL4JT{ z6iLoIct3Ry9-y#lZ;1Zn=t9k=AdQ-AA?S%GBzfecY-ElJr?X*@`M{Q}6RL0%bPVZE~c)j2qbk`LdB`JYDt6AnhS#NO$ zR@|*C^?nenYl@v)^GO#G+MaDI1_t$0i<;F{AwrYt9CLX(?ls6&bZ3#Y{d#%|IrUhv zxUF9RTHx55pUR8AmSn>3um#DSaZi1P#KdX?{0Il|8;cz`RTKd%huQr#D3BExSq%PR$_XPc03$laa<%K2te% zG3P&#ay>Vq6e#%i;Ki?t0$}#A)y{S?1*w>7&kN zcV6s7zI@QKy+l@tPOeDS3Us>3iY%AX8)<^@vV;1G2$yVH|IGOKKkI7d>A*0MiIC$5 zlJ?{EjJ^LpW)PgT(r3f(1}aZuK}4CMbNM?h69uecOp+%^h=>R05W}KPOS}~=@UsXK zkhp_g4Yl{{Z1Q^cnx%tc4w&oBsO~DcQf-jA`hru==e_sTyO>8py|6)AI`aAo(O%YL z`umx8OR=y3gCrJydHj93;{4l-a~LYDs^J-@MfKV^H#(7AL_78NuwHIoB4FDX{07|R zg#Hr5fgG42S|udqTqmt=67A(w1k%n_gXcC)5p;M}e!utS^Yz>j$O_@-ndt?y{l(d| zQXX57W3Gb^Rg`{^R+Bl}qt)vSvT=&L z8)*e%a2N7Mm$s&4kxg3(*^5@A={r}2jhy@bfIdg#GevDBfp_R9RU^2p z1|KeJh+EYEg?_f8mcB_QN!#ZXJV{DdSa=me7X+Ef50b-LEmFvH37{0>>xB#o`|Tmn zcxOhQL6}Oq0o@I&!qi9d+VgpTf00Rw(H#O0+aSggt4M=aN@c4Lu$}4MRS1z@8l+WZ z7^%!TMMMut9Q9!(bX0|S3_2FINR0>VVYvuOTYhk8t{R$^gZ%zj1?om8?HM+g6r={+ zwYl%>Dr%)FW2%;W3|4yOSBLj3g4)8qdt$hUi!H?EQx59z)scN^b}M$E{xp3GUtZ*= zPze@8rMr5}4@^woS}0|*KAP>;r4Ow=zRDBN>o>vSCdI{8tkY^we}KA(p!Sl2BCpIH zKxIs?aUp_OWCf?w8LL!j;X*QIDm}sBI=*^!jz0;`bxP7GgjVKXcCpL>I%4Pu>J+8H zlH~X$Pb1vx4d&RStr_d4pB$#j4VQR>r;FV6t?DUHBgNbMAOus8gh=0^a&K8_565m1 zwvQ_Y({o0=qo5$j39ftvyO-qORjjK5GUG4uLOk7%e6To!oiZK!3$cpz1|>11r-Q-( z>=a0IWcm8l3qH+}GXMCr%%w=&oHAM2;j1>soYa{+we~TTEof@})Glc!!NXv>nP=QL)}M8kEE}Byy~hUZn;KDEFQeuxry&XcW6SMItZ|^d zLEl4A{P$tvSvB{xT*~}_a~<=*iM>&c1@r}L~lg5W_}rK!YY+(6vl=&PI%rzdSpH-7>7(;#~iBsFE|YV@~W8hv*BV|Kug zv?%#_XYZ;g_TxI*w{<=kY{q1sRY#GW3a9g7Mo?YdNr=`<1bQX2F{>8AXmrM&(Ky+o z=bje!RPZQ!rk-}$-PCFU#6z)3l?hw0#i^CL#|%GQ4R)y0f3v9HeOaVzn2!4vi-Bh6 zdl6~8v(mwD6cUE&ICLsLgZtRVkE-;u5Azn=B_ph6m@k4d;L?r=2|J%Cf?UGQCd4$=`7Ys0OP>&WX%CBhXaxo=I+f~d?j_-#*oOu?jz}PR;J{?k~wpNv0=L;-+ zi}yrQ3}~D*fq@-&Ip0ZmZ=lerO5GgZR|YDQ$;TbIdq}{iKz!AJgw}qY-Aq|j!TJWT zuod^V?JZ5bimNE8NYKQ)Q?)h;Doh|z7P)eRApDqEJM9nmF)6#4U#(r9!1MlD{p}A9 zevxPF`VlQsxaPrUZ>`LQoo!qlwG`IYZ@t#QaB=wc2n-{)~ z8a4r5kt4l2G|7`#%OvuiU3h?SEpXb8G$5TRR5AA2px>^Dkw^F=GXGV!WwtHj-0BA? z)~naT!$~umi#^O!BUNoJ2lN>!S;$1Pp{KL59xE9s_%xrcK`rYj_tL*(Pj*i=Q*cjD zNuu*)JS6O#H(kPrtB?X|+G*1bc8pJ%K_yj7VYiZ`<`s$MyvCN?vl3&E>iqNDTJ-MT zT!ePtBiKQ5iQuR$xtZsiG^v$}1|4u}TXiRKlJuV4?&=rr=P>3oy2-NgE?z*-nAg2Q zj!*Fy)#f$udL~}^VU~IMJ28rJVaWZb{%-9O=S*^f(^j~zcDBz%rWW1EUFh3H) z593(ggNGT(HL8qUCg#xvP<-uw41bXNNPJC8%BqmX;zjLqjzsF-zm0>oWAjq-@=I&i z8SAq(>32c@Hfl){@W~D9@0XT@27psKf#_DA$%qt6v2T`?(oR<|Sd;1TM<)U|m+mEkmBE^9aZ1C0R$hSy~cJG;eM31EMX=FD3ja2g-9o`4A z{=weJp0d^kXJD@giZ)NS^fk_woqeIo$GJCw{g%S_=Su2Lug?=T7}h`0NqaKN37^ih z0Nn`gIQt`INmemNM~iJ31*feKV~-rf<{ewrU@wIR8@FJjR+}EnwYgVHMsn@(y4X6)V_n2rVKxJ!&sDKrjP8 zy9gsVOuh3sQjLJ#)UZN`9dNe446wq&@N;*!=grgDJg2-CumRl$&wt-nCSFyNnfK67 zpy|DdAEtfTWFpFbJ+VV007F^N_TyiLu8CByn)~v4G(Ab;pRIb^#=U9xh@9v`n3PQo zqsZ=aH@4^W^84y#Jh1dlUux*QA^+IMb# zR%UgWSM&7cBTKvoZl_l!s}HQoqObP~#vVOTnfvsy`{+6vK${?|lPA8K`k&seo zg(V%m8L893JdSX#J@8@U`tr1C#fs|0lgoG?pF~*?yDqVUiPsp1Ubnc4>bh}+TdT|! zs;snm%!??3(&j3eg32R5;gjr@X+2Soryi~8lRmO(K7+(;lIp>e_c(L-vo7%# z=dOIHQrPgT1brUfybgcd_(*;bm>5&zw|4dy-GK;DTAAj+-nv@w8M0n zoL1!YU{R@^)FLA{Lm&4CEuVxw938he9Jo}^7v-dNb8Y~zAGz(6iqWvg#L-9`CjIm0 z2%~hYZK;2H6oq_cwqWxb49OTd(IP$cEP)^WaE5R_R_^W)V#37YJNruCTl?IiXPbX@ zlLuQmCtl}%@u#job4LsmY-SW{Qi}WM^bjsEv=0^Sz5Z-PA^fED#l4Gou@{Q#VW1lV zJs}%m+nG+^WaZ=d1?yGlupWU=War6W1Rv7NH=B=pc7D5Cql`swTJ&8*o^QPZCQ{LF94jGqQgVeGSK7=)FRD}j?& zLRXxg)o+z?D`}(e078$nax(RM%0Ic;mON-TWIEC=(GJOn3d3f-R~L3xt-XI`%o@5l z0NNFxGO};`f_!IX=mQV(o3Kh*KFMX5uQvqxCMJ@7b5Yhvju=DNP*j+$%>%fOk?dhu z0eeEoU!3L>tI_u)uZ-eL91WaM(VC#I#eD;rdwDvX6-c`l|9!dr4^9tT2`{WKo*WS^ z0=e3_8^}uD12W{Ipb2De4r8?)t&9ZZ_?5J63RTPI>3r&ULN0I}h@gK->z|M&)atMO zP7~S&T_lMf?k|k49VkTV67+&RI+q1;K*@V=Eo3_jAZt)zExC6xktQKkUMI~w-9X_7 zPJTef+~gYN;c~ZLiCCdA!e=_`%;89nqM0;|0`lTqWShzLhK!ro7wu@t(8te5bGa!C z6gTL6)MFju+w0e{x(JU&$y>R#CCGQ#c0PBtJ;tv)<6Fb_EUNcwJx1*KhW(!Ya)bNJ>Sqa zq(R-xkl(ahf44rkoTprX*+0yWRyeb+uDk3@#b2M0C6W@pxKZ(o!p`XGCE)|eCpqb& zU+=!_yp!dLYHWmY`wvz4XWA9T`)?}3>?mZlIkqa3S|J7kR`KK&Q*@-i?dY5E3x#dk zeHre;&IEm=&{w-J{t+iju95*>bD}kvz&0)QfAjsm0J)dGsZu?j037oZnf|CY;Z3e9 zceyW`2B6gQykFE*Pl5DtqvkxoK!~m1V#96BS+7U$hF*?x6{UNb!g8%775@}8X4~Dx$wLm0o;eHk7;Ga%*&uY7-FX>sW~DPY-*GZ z>USR5y|8Qbe0c$%;nzjUJR4w=rov3dZ)zPsdxu_nzdw2RY$%&R{7X&wzVmjGmlv*s zEk}-}l|+rSo2HXKvaUFS2GUY*r&?H&RfOOPpwhM%`y#B-8u-CXYyvD!tkQI%-Aq`$I(vW%5oz^NGyt{q?j*?mmvKE1Am8 zik|@6K!!N<^iY;7uc6IJD30i>LpZxS1Q-!HNkHSg3)NXJZet5pBR0n>lpk}VUuT8P zT;vW|LSuU;xw;Fj)Zm4F)$UVw$eFt;m{QTfC%Zor3nqEA)s76WGz_8$eBtv|*@Rc} zbzK{#xk>rUOAru1Ii8Oq#GnJecsaMR=jwjeKfgdYHIB^AEo|G|<@IKcox*%&{amMw zzC$O;m@^xIG&pZ7@D66A8s|M`yrS+XsLLeDzN&G=6mZ4#lQCh7r}ttksZ%$ zpZkxQgXsmWl>R)4X;Q}Ub0HOi0(}LcJA0xncfs4ksg3xYE^RB!0(zS`=HI-c73^o8 zz+_&3i`6&D7MuhL$_dQG<|#=Et}fmWCoGF=flbMAC_Kxj਎{XRl7274!m;u;AA4q{$Gr&0VD? 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 dict: - """Convert instance input files into raw problem data. +def case_list_to_dict(case_info: list[list], num_bins: int, bin_dimensions: list) -> dict: + """Convert a case info list and bin information into a dictionary. Args: - instance_path: Path to the bin packing problem instance file. + case_info: A list of lists of case dimensions and info. + num_bins: The number of bins. + bin_dimensions: The bin dimensions [length, width, height]. Returns: data: dictionary containing raw information for both bins and cases. @@ -274,7 +276,7 @@ def read_instance(instance_path: str) -> dict: else: case_info.append(list(map(int, line.split()))) - return case_list_to_dict(num_bins, bin_dimensions, case_info) + return case_list_to_dict(case_info, num_bins, bin_dimensions) def write_solution_to_file(solution_file_path: str, @@ -309,7 +311,7 @@ def write_solution_to_file(solution_file_path: str, num_bin_used = 1 objective_value = cqm.objective.energy(sample) - vs = [['case_id', 'bin-location', 'orientation', 'x', 'y', 'z', "x'", + vs = [['case_id', 'bin_location', 'orientation', 'x', 'y', 'z', "x'", "y'", "z'"]] for i in range(num_cases): vs.append([cases.case_ids[i], From 8b9eb14865e5b048de077eb00b1caaaf27c115c9 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Fri, 6 Dec 2024 15:58:59 -0800 Subject: [PATCH 11/20] Fix tests --- tests/test_packing3d.py | 8 ++++++-- tests/test_utils.py | 43 ++++++++++++++++++++++------------------- utils.py | 9 +++++---- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/tests/test_packing3d.py b/tests/test_packing3d.py index ed476f1..7b57ae1 100644 --- a/tests/test_packing3d.py +++ b/tests/test_packing3d.py @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os +import sys + from itertools import combinations import numpy as np import unittest @@ -19,17 +22,18 @@ import dimod from mip_solver import MIPCQMSolver -import packing3d from packing3d import build_cqm, Cases, Bins, Variables, call_solver from packing3d import _add_orientation_constraints, _add_bin_on_constraint from packing3d import _add_boundary_constraints, _add_geometric_constraints from utils import read_instance +project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + class TestPacking3d(unittest.TestCase): def setUp(self): - self.data = read_instance("./tests/test_data_1.txt") + self.data = read_instance(project_dir + "/tests/test_data_1.txt") self.cases = Cases(self.data) self.bins = Bins(self.data, self.cases) self.variables = Variables(self.cases, self.bins) diff --git a/tests/test_utils.py b/tests/test_utils.py index 02d3fa3..653eff1 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -19,7 +19,7 @@ from tempfile import TemporaryDirectory import unittest -from utils import (print_cqm_stats, +from utils import (case_list_to_dict, print_cqm_stats, plot_cuboids, read_instance, write_input_data, @@ -31,6 +31,8 @@ build_cqm, call_solver) +project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + class TestUtils(unittest.TestCase): def test_print_cqm_stats(self): @@ -58,7 +60,7 @@ def test_print_cqm_stats(self): expected_field_values) def test_plot_cuboids(self): - data = read_instance(instance_path='./tests/test_data_1.txt') + data = read_instance(instance_path=project_dir+'/tests/test_data_1.txt') cases = Cases(data) bins = Bins(data, cases=cases) variables = Variables(cases, bins) @@ -76,35 +78,36 @@ def test_plot_cuboids(self): ) def test_read_write_input_data(self): - data = read_instance(instance_path='./tests/test_data_1.txt') + data = read_instance(instance_path=project_dir+'/tests/test_data_1.txt') out_file_string = write_input_data(data) - data1 = {"num_bins": 0, "bin_dimensions": [], "Quantity": [], - "Case ID": [], "Length": [], "Width": [], - "Height": []} + out_list = (out_file_string.split(sep='\n')) + case_info = [] for i, line in enumerate(out_list): if i == 0: - data1["num_bins"] = int(line.split()[-1]) + num_bins = int(line.split()[-1]) elif i == 1: - data1["bin_dimensions"] = [int(i) for i in line.split()[-3:]] + bin_dimensions = [int(i) for i in line.split()[-3:]] elif 2 <= i <= 4: continue else: - case_info = list(map(int, line.split())) - data1["Case ID"].append(case_info[0]) - data1["Quantity"].append(case_info[1]) - data1["Length"].append(case_info[2]) - data1["Width"].append(case_info[3]) - data1["Height"].append(case_info[4]) - - self.assertEqual(data1, {'num_bins': 1, 'bin_dimensions': [30, 40, 50], - 'Quantity': [1, 1], 'Case ID': [0, 1], - 'Length': [2, 3], 'Width': [2, 3], - 'Height': [2, 3]}) + case_info.append(list(map(int, line.split()))) + + data1 = case_list_to_dict(case_info, num_bins, bin_dimensions) + + self.assertEqual(data1, { + 'Case ID': [0, 1], + 'Quantity': [1, 1], + 'Length': [2, 3], + 'Width': [2, 3], + 'Height': [2, 3], + 'num_bins': 1, + 'bin_dimensions': [30, 40, 50] + }) self.assertEqual(data1, data) def test_write_solution_to_file(self): - data = read_instance(instance_path='./tests/test_data_1.txt') + data = read_instance(instance_path=project_dir+'/tests/test_data_1.txt') cases = Cases(data) bins = Bins(data, cases=cases) variables = Variables(cases, bins) diff --git a/utils.py b/utils.py index f39fcef..3755652 100644 --- a/utils.py +++ b/utils.py @@ -349,12 +349,13 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: input_string: input data information """ - num_bins = data.pop('num_bins') - bin_dimensions = data.pop('bin_dimensions') + problem_data = data.copy() + num_bins = problem_data.pop('num_bins') + bin_dimensions = problem_data.pop('bin_dimensions') case_info = [ - [data[table_header][i] for table_header in TABLE_HEADERS] - for i in range(len(data[TABLE_HEADERS[0]])) + [problem_data[table_header][i] for table_header in TABLE_HEADERS] + for i in range(len(problem_data[TABLE_HEADERS[0]])) ] input_string = f'# Max num of bins : {num_bins} \n' From ec32010fd459abcb44ceff8403d47174bf1ffd51 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Fri, 6 Dec 2024 16:18:54 -0800 Subject: [PATCH 12/20] Run black and isort --- demo_callbacks.py | 68 ++++---- demo_interface.py | 161 ++++++++++-------- mip_solver.py | 43 ++--- packing3d.py | 342 +++++++++++++++++++++++---------------- tests/test_mip_solver.py | 22 +-- tests/test_packing3d.py | 225 ++++++++++++++++---------- tests/test_utils.py | 87 +++++----- utils.py | 258 +++++++++++++++++------------ 8 files changed, 703 insertions(+), 503 deletions(-) diff --git a/demo_callbacks.py b/demo_callbacks.py index 22b0ca0..db11c27 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -18,17 +18,24 @@ from typing import NamedTuple, Union import dash +import numpy as np +import plotly.graph_objs as go from dash import ALL, MATCH from dash.dependencies import Input, Output, State from dash.exceptions import PreventUpdate -from demo_configs import RANDOM_SEED -import numpy as np -import plotly.graph_objs as go -from demo_interface import generate_table_rows, generate_table +from demo_configs import RANDOM_SEED +from demo_interface import generate_table, generate_table_rows from packing3d import Bins, Cases, Variables, build_cqm, call_solver from src.demo_enums import ProblemType, SolverType -from utils import case_list_to_dict, get_cqm_stats, plot_cuboids, update_colors, write_input_data, write_solution_to_file +from utils import ( + case_list_to_dict, + get_cqm_stats, + plot_cuboids, + update_colors, + write_input_data, + write_solution_to_file, +) @dash.callback( @@ -81,9 +88,9 @@ def update_problem_type( str: The class name for the `Uploaded` ProblemType. """ if problem_type is ProblemType.FILE.value: - return ["display-none"]*len(gen_settings), "" + return ["display-none"] * len(gen_settings), "" - return [""]*len(gen_settings), "display-none" + return [""] * len(gen_settings), "display-none" @dash.callback( @@ -96,7 +103,7 @@ def update_problem_type( Input("case-dim", "value"), State("problem-data-store", "data"), ], - prevent_initial_call='initial_duplicate' + prevent_initial_call="initial_duplicate", ) def generate_data( problem_type: Union[ProblemType, int], @@ -123,15 +130,17 @@ def generate_data( rng = np.random.default_rng(RANDOM_SEED) - case_dimensions = np.array([ - rng.integers( - case_size_range[0], case_size_range[1], - num_cases, endpoint=True - ) for i in range(3) - ]) + case_dimensions = np.array( + [ + rng.integers(case_size_range[0], case_size_range[1], num_cases, endpoint=True) + for i in range(3) + ] + ) # Determine quantities and case_ids - unique_dimensions, problem_data["Quantity"] = np.unique(case_dimensions, axis=1, return_counts=True) + unique_dimensions, problem_data["Quantity"] = np.unique( + case_dimensions, axis=1, return_counts=True + ) problem_data["Case ID"] = np.arange(len(problem_data["Quantity"])) problem_data["Length"], problem_data["Width"], problem_data["Height"] = unique_dimensions @@ -180,16 +189,11 @@ def generate_bins( """ if ProblemType(problem_type) is ProblemType.FILE: raise PreventUpdate - + problem_data["num_bins"] = num_bins problem_data["bin_dimensions"] = [bin_length, bin_width, bin_height] - return ( - num_bins, - f"{bin_length} * {bin_width} * {bin_height}", - problem_data, - "display-none" - ) + return num_bins, f"{bin_length} * {bin_width} * {bin_height}", problem_data, "display-none" class ReadInputFileReturn(NamedTuple): @@ -201,6 +205,7 @@ class ReadInputFileReturn(NamedTuple): filename: str = dash.no_update problem_data_store: list = dash.no_update + @dash.callback( Output("input", "children", allow_duplicate=True), Output("max-bins", "children", allow_duplicate=True), @@ -208,9 +213,9 @@ class ReadInputFileReturn(NamedTuple): Output("filename", "children"), Output("problem-data-store", "data", allow_duplicate=True), inputs=[ - Input("input-file", 'contents'), + Input("input-file", "contents"), Input("problem-type", "value"), - State("input-file", 'filename'), + State("input-file", "filename"), ], prevent_initial_call=True, ) @@ -241,7 +246,7 @@ def read_input_file( decoded = base64.b64decode(file_contents) try: - lines = decoded.decode('ISO-8859-1').splitlines() + lines = decoded.decode("ISO-8859-1").splitlines() num_bins = int(lines[0].split(":")[1].strip()) bin_length, bin_width, bin_height = map(int, lines[1].split(":")[1].split()) @@ -251,7 +256,9 @@ def read_input_file( if line.strip(): case_data.append(list(map(int, line.split()))) - problem_data = case_list_to_dict(case_data, num_bins, [bin_length, bin_width, bin_height]) + problem_data = case_list_to_dict( + case_data, num_bins, [bin_length, bin_width, bin_height] + ) return ReadInputFileReturn( table_input=generate_table(problem_data), @@ -263,7 +270,7 @@ def read_input_file( except Exception as e: print(e) - return ReadInputFileReturn(filename='There was an error processing this file.') + return ReadInputFileReturn(filename="There was an error processing this file.") raise PreventUpdate @@ -379,12 +386,13 @@ def run_optimization( best_feasible = call_solver(cqm, time_limit, solver_type is SolverType.CQM.value) if save_solution_filepath is not None: - write_solution_to_file(save_solution_filepath, cqm, vars, best_feasible, - cases, bins, effective_dimensions) + write_solution_to_file( + save_solution_filepath, cqm, vars, best_feasible, cases, bins, effective_dimensions + ) fig = plot_cuboids(best_feasible, vars, cases, bins, effective_dimensions, bool(checklist)) - # Generates a list of table rows for the problem details table. + # Generates a list of table rows for the problem details table. problem_details_table = generate_table_rows(get_cqm_stats(cqm)) return fig, problem_details_table diff --git a/demo_interface.py b/demo_interface.py index 0a3503c..6708386 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -14,14 +14,15 @@ """This file stores the Dash HTML layout for the app.""" from __future__ import annotations + from collections import defaultdict from dash import dcc, html from demo_configs import ( + ADVANCED_SETTINGS, BIN_DIM, CASE_DIM, - ADVANCED_SETTINGS, DESCRIPTION, MAIN_HEADER, NUM_BINS, @@ -190,12 +191,10 @@ def generate_settings_form() -> html.Div: html.Label("Problem File"), dcc.Upload( id="input-file", - children=html.Div([ - "Drag and Drop or ", - html.A('Select Files'), - html.Div(id="filename") - ]) - ) + children=html.Div( + ["Drag and Drop or ", html.A("Select Files"), html.Div(id="filename")] + ), + ), ], id="uploaded-settings", className="display-none", @@ -210,32 +209,38 @@ def generate_settings_form() -> html.Div: html.Label("Bin Dimensions"), html.Div( [ - html.Div([ - html.Label("Length"), - dcc.Input( - id="bin-length", - type="number", - **BIN_DIM, - ), - ]), - html.Div([ - html.Label("Width"), - dcc.Input( - id="bin-width", - type="number", - **BIN_DIM, - ), - ]), - html.Div([ - html.Label("Height"), - dcc.Input( - id="bin-height", - type="number", - **BIN_DIM, - ), - ]) + html.Div( + [ + html.Label("Length"), + dcc.Input( + id="bin-length", + type="number", + **BIN_DIM, + ), + ] + ), + html.Div( + [ + html.Label("Width"), + dcc.Input( + id="bin-width", + type="number", + **BIN_DIM, + ), + ] + ), + html.Div( + [ + html.Label("Height"), + dcc.Input( + id="bin-height", + type="number", + **BIN_DIM, + ), + ] + ), ], - className="display-flex-settings" + className="display-flex-settings", ), slider( "Number of Cases", @@ -248,7 +253,7 @@ def generate_settings_form() -> html.Div: CASE_DIM, ), ], - id={"type": "generated-settings", "index": 0} + id={"type": "generated-settings", "index": 0}, ), dropdown( "Solver", @@ -283,11 +288,7 @@ def generate_settings_form() -> html.Div: className="details-to-collapse advanced-collapse", children=[ html.Label("Write Solution to File"), - dcc.Input( - id="save-solution", - type="text", - placeholder="File Name" - ), + dcc.Input(id="save-solution", type="text", placeholder="File Name"), ], ), ], @@ -475,28 +476,56 @@ def create_interface(): # add children dynamically using 'generate_table' ) ), - html.Div([ - html.H6(["Maximum bins: ", html.Span(id="max-bins")]), - html.H6(["Bin dimensions: ", html.Span(id="bin-dims"), " (L*W*H)"]), - html.Div( - [ - html.Label("Save Input Data to File"), - html.Div([ - dcc.Input( - id="save-input-filename", - type="text", - placeholder="File Name", + html.Div( + [ + html.H6( + [ + "Maximum bins: ", + html.Span(id="max-bins"), + ] + ), + html.H6( + [ + "Bin dimensions: ", + html.Span(id="bin-dims"), + " (L*W*H)", + ] + ), + html.Div( + [ + html.Label( + "Save Input Data to File" ), - html.Button(id="save-input-button", children="Save", n_clicks=0), - html.P("Saved!", className="display-none", id="saved") - ]), - ], - id={"type": "generated-settings", "index": 1}, - ), - ]) + html.Div( + [ + dcc.Input( + id="save-input-filename", + type="text", + placeholder="File Name", + ), + html.Button( + id="save-input-button", + children="Save", + n_clicks=0, + ), + html.P( + "Saved!", + className="display-none", + id="saved", + ), + ] + ), + ], + id={ + "type": "generated-settings", + "index": 1, + }, + ), + ] + ), ], ), - className="input-wrapper" + className="input-wrapper", ), ], ), @@ -512,7 +541,10 @@ def create_interface(): checklist( "", "checklist", - sorted(checklist_options, key=lambda op: op["value"]), + sorted( + checklist_options, + key=lambda op: op["value"], + ), [], ), dcc.Loading( @@ -520,11 +552,14 @@ def create_interface(): type="circle", color=THEME_COLOR_SECONDARY, # A Dash callback (in app.py) will generate content in the Div below - children=html.Div(dcc.Graph( - id="results", - responsive=True, - config={"displayModeBar": False}, - ), className="graph"), + children=html.Div( + dcc.Graph( + id="results", + responsive=True, + config={"displayModeBar": False}, + ), + className="graph", + ), ), # Problem details dropdown html.Div([html.Hr(), problem_details(1)]), diff --git a/mip_solver.py b/mip_solver.py index 8db33e1..3807db5 100644 --- a/mip_solver.py +++ b/mip_solver.py @@ -16,8 +16,8 @@ import time import typing -import mip import dimod +import mip class MIPCQMSolver: @@ -25,35 +25,38 @@ class MIPCQMSolver: See https://www.python-mip.com/ """ + @staticmethod def _mip_vartype(vartype: dimod.typing.VartypeLike) -> str: vartype = dimod.as_vartype(vartype, extended=True) if vartype is dimod.SPIN: raise ValueError("MIP cannot handle SPIN variables") elif vartype is dimod.BINARY: - return 'B' + return "B" elif vartype is dimod.INTEGER: - return 'I' + return "I" elif vartype is dimod.REAL: - return 'C' + return "C" else: raise ValueError("unexpected vartype") @staticmethod - def _qm_to_expression(qm: typing.Union[dimod.QuadraticModel, dimod.BinaryQuadraticModel], - variable_map: typing.Dict[dimod.typing.Variable, mip.Var], - ) -> mip.LinExpr: + def _qm_to_expression( + qm: typing.Union[dimod.QuadraticModel, dimod.BinaryQuadraticModel], + variable_map: typing.Dict[dimod.typing.Variable, mip.Var], + ) -> mip.LinExpr: if not qm.is_linear(): raise ValueError("MIP cannot support quadratic interactions") - return mip.xsum(itertools.chain( - (variable_map[v] * bias for v, bias in qm.iter_linear()), - (qm.offset,) - )) + return mip.xsum( + itertools.chain((variable_map[v] * bias for v, bias in qm.iter_linear()), (qm.offset,)) + ) @classmethod - def sample_cqm(cls, cqm: dimod.ConstrainedQuadraticModel, - time_limit: float = float('inf'), - ) -> dimod.SampleSet: + def sample_cqm( + cls, + cqm: dimod.ConstrainedQuadraticModel, + time_limit: float = float("inf"), + ) -> dimod.SampleSet: """Use Python-MIP to solve a constrained quadratic model. Note that Python-MIP requires the objective and constraints to be @@ -79,8 +82,8 @@ def sample_cqm(cls, cqm: dimod.ConstrainedQuadraticModel, name=v, lb=cqm.lower_bound(v), ub=cqm.upper_bound(v), - var_type=cls._mip_vartype(cqm.vartype(v)) - ) + var_type=cls._mip_vartype(cqm.vartype(v)), + ) model.objective = cls._qm_to_expression(cqm.objective, variable_map) @@ -101,9 +104,9 @@ def sample_cqm(cls, cqm: dimod.ConstrainedQuadraticModel, run_time = time.perf_counter() - t samples = [ - [variable_map[v].xi(k) for v in cqm.variables] - for k in range(model.num_solutions) - ] + [variable_map[v].xi(k) for v in cqm.variables] for k in range(model.num_solutions) + ] return dimod.SampleSet.from_samples_cqm( - (samples, cqm.variables), cqm, info=dict(run_time=run_time)) + (samples, cqm.variables), cqm, info=dict(run_time=run_time) + ) diff --git a/packing3d.py b/packing3d.py index 84ecdb4..acccaf8 100644 --- a/packing3d.py +++ b/packing3d.py @@ -13,15 +13,15 @@ # limitations under the License. import argparse -from dimod import quicksum, ConstrainedQuadraticModel, Real, Binary, SampleSet -from dwave.system import LeapHybridCQMSampler from itertools import combinations, permutations -import numpy as np from typing import Tuple -from utils import print_cqm_stats, plot_cuboids -from utils import read_instance, write_solution_to_file +import numpy as np +from dimod import Binary, ConstrainedQuadraticModel, Real, SampleSet, quicksum +from dwave.system import LeapHybridCQMSampler + from mip_solver import MIPCQMSolver +from utils import plot_cuboids, print_cqm_stats, read_instance, write_solution_to_file class Cases: @@ -29,7 +29,7 @@ class Cases: Args: data: dictionary containing raw information for both bins and cases - + """ def __init__(self, data): @@ -38,7 +38,7 @@ def __init__(self, data): self.length = np.repeat(data["Length"], data["Quantity"]) self.width = np.repeat(data["Width"], data["Quantity"]) self.height = np.repeat(data["Height"], data["Quantity"]) - print(f'Number of cases: {self.num_cases}') + print(f"Number of cases: {self.num_cases}") class Bins: @@ -55,15 +55,18 @@ def __init__(self, data, cases): self.width = data["bin_dimensions"][1] self.height = data["bin_dimensions"][2] self.num_bins = data["num_bins"] - self.lowest_num_bin = int(np.ceil( - np.sum(cases.length * cases.width * cases.height) / ( - self.length * self.width * self.height))) + self.lowest_num_bin = int( + np.ceil( + np.sum(cases.length * cases.width * cases.height) + / (self.length * self.width * self.height) + ) + ) if self.lowest_num_bin > self.num_bins: raise RuntimeError( - f'number of bins is at least {self.lowest_num_bin}, ' + - 'try increasing the number of bins' + f"number of bins is at least {self.lowest_num_bin}, " + + "try increasing the number of bins" ) - print(f'Minimum Number of bins required: {self.lowest_num_bin}') + print(f"Minimum Number of bins required: {self.lowest_num_bin}") class Variables: @@ -72,70 +75,76 @@ class Variables: Args: cases: Instance of ``Cases``, representing cuboid items packed into containers. bins: Instance of ``Bins``, representing containers to pack cases into. - + """ def __init__(self, cases: Cases, bins: Bins): num_cases = cases.num_cases num_bins = bins.num_bins - lowest_num_bin = bins.lowest_num_bin - self.x = {i: Real(f'x_{i}', - lower_bound=0, - upper_bound=bins.length * bins.num_bins) - for i in range(num_cases)} - self.y = {i: Real(f'y_{i}', lower_bound=0, upper_bound=bins.width) - for i in range(num_cases)} - self.z = {i: Real(f'z_{i}', lower_bound=0, upper_bound=bins.height) - for i in range(num_cases)} + lowest_num_bin = bins.lowest_num_bin + self.x = { + i: Real(f"x_{i}", lower_bound=0, upper_bound=bins.length * bins.num_bins) + for i in range(num_cases) + } + self.y = { + i: Real(f"y_{i}", lower_bound=0, upper_bound=bins.width) for i in range(num_cases) + } + self.z = { + i: Real(f"z_{i}", lower_bound=0, upper_bound=bins.height) for i in range(num_cases) + } self.bin_height = { - j: Real(label=f'upper_bound_{j}', upper_bound=bins.height) - for j in range(num_bins)} + j: Real(label=f"upper_bound_{j}", upper_bound=bins.height) for j in range(num_bins) + } - # the first case always goes to the first bin + # the first case always goes to the first bin self.bin_loc = { - (i, j): Binary(f'case_{i}_in_bin_{j}') if num_bins > 1 else 1 - for i in range(1, num_cases) for j in range(num_bins)} - - self.bin_loc.update( - {(0, j): int(j == 0) for j in range(num_bins)}) + (i, j): Binary(f"case_{i}_in_bin_{j}") if num_bins > 1 else 1 + for i in range(1, num_cases) + for j in range(num_bins) + } + + self.bin_loc.update({(0, j): int(j == 0) for j in range(num_bins)}) - self.bin_on = {j: 1 if j < lowest_num_bin else Binary(f'bin_{j}_is_used') - for j in range(num_bins)} + self.bin_on = { + j: 1 if j < lowest_num_bin else Binary(f"bin_{j}_is_used") for j in range(num_bins) + } - self.o = {(i, k): Binary(f'o_{i}_{k}') for i in range(num_cases) - for k in range(6)} + self.o = {(i, k): Binary(f"o_{i}_{k}") for i in range(num_cases) for k in range(6)} - self.selector = {(i, j, k): Binary(f'sel_{i}_{j}_{k}') - for i, j in combinations(range(num_cases), r=2) - for k in range(6)} + self.selector = { + (i, j, k): Binary(f"sel_{i}_{j}_{k}") + for i, j in combinations(range(num_cases), r=2) + for k in range(6) + } -def _add_bin_on_constraint(cqm: ConstrainedQuadraticModel, vars: Variables, - bins: Bins, cases: Cases): +def _add_bin_on_constraint( + cqm: ConstrainedQuadraticModel, vars: Variables, bins: Bins, cases: Cases +): num_cases = cases.num_cases num_bins = bins.num_bins lowest_num_bin = bins.lowest_num_bin if num_bins > 1: for j in range(lowest_num_bin, num_bins): - cqm.add_constraint((1 - vars.bin_on[j]) * quicksum( - vars.bin_loc[i, j] for i in range(num_cases)) <= 0, - label=f'bin_on_{j}') + cqm.add_constraint( + (1 - vars.bin_on[j]) * quicksum(vars.bin_loc[i, j] for i in range(num_cases)) <= 0, + label=f"bin_on_{j}", + ) for j in range(lowest_num_bin, num_bins - 1): - cqm.add_constraint(vars.bin_on[j + 1] - vars.bin_on[j] <= 0, - label=f'bin_use_order_{j}') + cqm.add_constraint(vars.bin_on[j + 1] - vars.bin_on[j] <= 0, label=f"bin_use_order_{j}") -def _add_orientation_constraints(cqm: ConstrainedQuadraticModel, - vars: Variables, cases: Cases) -> list: +def _add_orientation_constraints( + cqm: ConstrainedQuadraticModel, vars: Variables, cases: Cases +) -> list: num_cases = cases.num_cases dx = {} dy = {} dz = {} for i in range(num_cases): - p1 = list( - permutations([cases.length[i], cases.width[i], cases.height[i]])) + p1 = list(permutations([cases.length[i], cases.width[i], cases.height[i]])) dx[i] = 0 dy[i] = 0 dz[i] = 0 @@ -145,14 +154,17 @@ def _add_orientation_constraints(cqm: ConstrainedQuadraticModel, dz[i] += c * vars.o[i, j] for i in range(num_cases): - cqm.add_discrete(quicksum([vars.o[i, k] for k in range(6)]), - label=f'orientation_{i}') + cqm.add_discrete(quicksum([vars.o[i, k] for k in range(6)]), label=f"orientation_{i}") return [dx, dy, dz] -def _add_geometric_constraints(cqm: ConstrainedQuadraticModel, vars: Variables, - bins: Bins, cases: Cases, - effective_dimensions: list): +def _add_geometric_constraints( + cqm: ConstrainedQuadraticModel, + vars: Variables, + bins: Bins, + cases: Cases, + effective_dimensions: list, +): num_cases = cases.num_cases num_bins = bins.num_bins dx, dy, dz = effective_dimensions @@ -161,85 +173,106 @@ def _add_geometric_constraints(cqm: ConstrainedQuadraticModel, vars: Variables, for i in range(1, num_cases): cqm.add_discrete( quicksum([vars.bin_loc[i, j] for j in range(num_bins)]), - label=f'case_{i}_max_packed') + label=f"case_{i}_max_packed", + ) for i, k in combinations(range(num_cases), r=2): - cqm.add_discrete(quicksum([vars.selector[i, k, s] for s in range(6)]), - label=f'discrete_{i}_{k}') + cqm.add_discrete( + quicksum([vars.selector[i, k, s] for s in range(6)]), label=f"discrete_{i}_{k}" + ) for i, k in combinations(range(num_cases), r=2): for j in range(num_bins): cases_on_same_bin = vars.bin_loc[i, j] * vars.bin_loc[k, j] cqm.add_constraint( - - (2 - cases_on_same_bin - - vars.selector[i, k, 0]) * num_bins * bins.length + - (vars.x[i] + dx[i] - vars.x[k]) <= 0, - label=f'overlap_{i}_{k}_{j}_0') + -(2 - cases_on_same_bin - vars.selector[i, k, 0]) * num_bins * bins.length + + (vars.x[i] + dx[i] - vars.x[k]) + <= 0, + label=f"overlap_{i}_{k}_{j}_0", + ) cqm.add_constraint( - -(2 - cases_on_same_bin - - vars.selector[i, k, 1]) * bins.width + - (vars.y[i] + dy[i] - vars.y[k]) <= 0, - label=f'overlap_{i}_{k}_{j}_1') + -(2 - cases_on_same_bin - vars.selector[i, k, 1]) * bins.width + + (vars.y[i] + dy[i] - vars.y[k]) + <= 0, + label=f"overlap_{i}_{k}_{j}_1", + ) cqm.add_constraint( - -(2 - cases_on_same_bin - - vars.selector[i, k, 2]) * bins.height + - (vars.z[i] + dz[i] - vars.z[k]) <= 0, - label=f'overlap_{i}_{k}_{j}_2') + -(2 - cases_on_same_bin - vars.selector[i, k, 2]) * bins.height + + (vars.z[i] + dz[i] - vars.z[k]) + <= 0, + label=f"overlap_{i}_{k}_{j}_2", + ) cqm.add_constraint( - -(2 - cases_on_same_bin - - vars.selector[i, k, 3]) * num_bins * bins.length + - (vars.x[k] + dx[k] - vars.x[i]) <= 0, - label=f'overlap_{i}_{k}_{j}_3') + -(2 - cases_on_same_bin - vars.selector[i, k, 3]) * num_bins * bins.length + + (vars.x[k] + dx[k] - vars.x[i]) + <= 0, + label=f"overlap_{i}_{k}_{j}_3", + ) cqm.add_constraint( - -(2 - cases_on_same_bin - - vars.selector[i, k, 4]) * bins.width + - (vars.y[k] + dy[k] - vars.y[i]) <= 0, - label=f'overlap_{i}_{k}_{j}_4') + -(2 - cases_on_same_bin - vars.selector[i, k, 4]) * bins.width + + (vars.y[k] + dy[k] - vars.y[i]) + <= 0, + label=f"overlap_{i}_{k}_{j}_4", + ) cqm.add_constraint( - -(2 - cases_on_same_bin - - vars.selector[i, k, 5]) * bins.height + - (vars.z[k] + dz[k] - vars.z[i]) <= 0, - label=f'overlap_{i}_{k}_{j}_5') + -(2 - cases_on_same_bin - vars.selector[i, k, 5]) * bins.height + + (vars.z[k] + dz[k] - vars.z[i]) + <= 0, + label=f"overlap_{i}_{k}_{j}_5", + ) -def _add_boundary_constraints(cqm: ConstrainedQuadraticModel, vars: Variables, - bins: Bins, cases: Cases, - effective_dimensions: list): +def _add_boundary_constraints( + cqm: ConstrainedQuadraticModel, + vars: Variables, + bins: Bins, + cases: Cases, + effective_dimensions: list, +): num_cases = cases.num_cases num_bins = bins.num_bins dx, dy, dz = effective_dimensions for i in range(num_cases): - cqm.add_constraint( - vars.y[i] + dy[i] <= bins.width, - label=f'maxy_{i}_less') + cqm.add_constraint(vars.y[i] + dy[i] <= bins.width, label=f"maxy_{i}_less") for j in range(num_bins): - cqm.add_constraint(vars.z[i] + dz[i] - vars.bin_height[j] - - (1 - vars.bin_loc[i, j]) * bins.height <= 0, - label=f'maxx_height_{i}_{j}') - - cqm.add_constraint(vars.x[i] + dx[i] - bins.length * (j + 1) - - (1 - vars.bin_loc[i, j]) * - num_bins * bins.length <= 0, - label=f'maxx_{i}_{j}_less') + cqm.add_constraint( + vars.z[i] + dz[i] - vars.bin_height[j] - (1 - vars.bin_loc[i, j]) * bins.height + <= 0, + label=f"maxx_height_{i}_{j}", + ) + + cqm.add_constraint( + vars.x[i] + + dx[i] + - bins.length * (j + 1) + - (1 - vars.bin_loc[i, j]) * num_bins * bins.length + <= 0, + label=f"maxx_{i}_{j}_less", + ) if j > 0: cqm.add_constraint( bins.length * j * vars.bin_loc[i, j] - vars.x[i] <= 0, - label=f'maxx_{i}_{j}_greater') + label=f"maxx_{i}_{j}_greater", + ) -def _define_objective(cqm: ConstrainedQuadraticModel, vars: Variables, - bins: Bins, cases: Cases, effective_dimensions: list): +def _define_objective( + cqm: ConstrainedQuadraticModel, + vars: Variables, + bins: Bins, + cases: Cases, + effective_dimensions: list, +): num_cases = cases.num_cases num_bins = bins.num_bins lowest_num_bin = bins.lowest_num_bin dx, dy, dz = effective_dimensions # First term of objective: minimize average height of cases - first_obj_term = quicksum( - vars.z[i] + dz[i] for i in range(num_cases)) / num_cases + first_obj_term = quicksum(vars.z[i] + dz[i] for i in range(num_cases)) / num_cases # Second term of objective: minimize height of the case at the top of the # bin @@ -250,13 +283,14 @@ def _define_objective(cqm: ConstrainedQuadraticModel, vars: Variables, first_obj_coefficient = 1 second_obj_coefficient = 1 third_obj_coefficient = bins.height - cqm.set_objective(first_obj_coefficient * first_obj_term + - second_obj_coefficient * second_obj_term + - third_obj_coefficient * third_obj_term) + cqm.set_objective( + first_obj_coefficient * first_obj_term + + second_obj_coefficient * second_obj_term + + third_obj_coefficient * third_obj_term + ) -def build_cqm(vars: Variables, bins: Bins, - cases: Cases) -> Tuple[ConstrainedQuadraticModel, list]: +def build_cqm(vars: Variables, bins: Bins, cases: Cases) -> Tuple[ConstrainedQuadraticModel, list]: """Builds the CQM model from the problem variables and data. Args: @@ -268,7 +302,7 @@ def build_cqm(vars: Variables, bins: Bins, Returns: A ``dimod.CQM`` object that defines the 3D bin packing problem. effective_dimensions: List of case dimensions based on orientations of cases. - + """ cqm = ConstrainedQuadraticModel() effective_dimensions = _add_orientation_constraints(cqm, vars, cases) @@ -280,9 +314,9 @@ def build_cqm(vars: Variables, bins: Bins, return cqm, effective_dimensions -def call_solver(cqm: ConstrainedQuadraticModel, - time_limit: float, - use_cqm_solver: bool = True) -> SampleSet: +def call_solver( + cqm: ConstrainedQuadraticModel, time_limit: float, use_cqm_solver: bool = True +) -> SampleSet: """Helper function to call the CQM Solver. Args: @@ -291,11 +325,11 @@ def call_solver(cqm: ConstrainedQuadraticModel, Returns: A ``dimod.SampleSet`` that represents the best feasible solution found. - + """ if use_cqm_solver: sampler = LeapHybridCQMSampler() - res = sampler.sample_cqm(cqm, time_limit=time_limit, label='3d bin packing') + res = sampler.sample_cqm(cqm, time_limit=time_limit, label="3d bin packing") else: sampler = MIPCQMSolver() res = sampler.sample_cqm(cqm, time_limit=time_limit) @@ -307,40 +341,62 @@ def call_solver(cqm: ConstrainedQuadraticModel, best_feasible = feasible_sampleset.first.sample return best_feasible - + except ValueError: raise RuntimeError( - "Sampleset is empty, try increasing time limit or " + - "adjusting problem config." + "Sampleset is empty, try increasing time limit or " + "adjusting problem config." ) -if __name__ == '__main__': +if __name__ == "__main__": parser = argparse.ArgumentParser() - parser.add_argument("--data_filepath", type=str, nargs="?", - help="Filename with path to bin-packing data file.", - default="input/sample_data_1.txt") - - parser.add_argument("--output_filepath", type=str, nargs="?", - help="Path for the output solution file.", - default=None) - - parser.add_argument("--time_limit", type=float, nargs="?", - help="Time limit for the hybrid CQM Solver to run in" - " seconds.", - default=20) - - parser.add_argument("--use_cqm_solver", type=bool, nargs="?", - help="Flag to either use CQM or MIP solver", - default=True) - - parser.add_argument("--html_filepath", type=str, nargs="?", - help="Filename with path to plot html file.", - default=None) - - parser.add_argument("--color_coded", type=bool, nargs="?", - help="View plot with coded or randomly colored cases.", - default=False) + parser.add_argument( + "--data_filepath", + type=str, + nargs="?", + help="Filename with path to bin-packing data file.", + default="input/sample_data_1.txt", + ) + + parser.add_argument( + "--output_filepath", + type=str, + nargs="?", + help="Path for the output solution file.", + default=None, + ) + + parser.add_argument( + "--time_limit", + type=float, + nargs="?", + help="Time limit for the hybrid CQM Solver to run in" " seconds.", + default=20, + ) + + parser.add_argument( + "--use_cqm_solver", + type=bool, + nargs="?", + help="Flag to either use CQM or MIP solver", + default=True, + ) + + parser.add_argument( + "--html_filepath", + type=str, + nargs="?", + help="Filename with path to plot html file.", + default=None, + ) + + parser.add_argument( + "--color_coded", + type=bool, + nargs="?", + help="View plot with coded or randomly colored cases.", + default=False, + ) args = parser.parse_args() output_filepath = args.output_filepath @@ -362,11 +418,11 @@ def call_solver(cqm: ConstrainedQuadraticModel, best_feasible = call_solver(cqm, time_limit, use_cqm_solver) if output_filepath is not None: - write_solution_to_file(output_filepath, cqm, vars, best_feasible, - cases, bins, effective_dimensions) + write_solution_to_file( + output_filepath, cqm, vars, best_feasible, cases, bins, effective_dimensions + ) - fig = plot_cuboids(best_feasible, vars, cases, - bins, effective_dimensions, color_coded) + fig = plot_cuboids(best_feasible, vars, cases, bins, effective_dimensions, color_coded) if html_filepath is not None: fig.write_html(html_filepath) diff --git a/tests/test_mip_solver.py b/tests/test_mip_solver.py index 46a4e15..ecf5dc2 100644 --- a/tests/test_mip_solver.py +++ b/tests/test_mip_solver.py @@ -28,7 +28,7 @@ def test_empty(self): def test_infease(self): cqm = dimod.ConstrainedQuadraticModel() - i, j = dimod.Integers('ij') + i, j = dimod.Integers("ij") cqm.add_constraint(i - j <= -1) cqm.add_constraint(i - j >= +1) @@ -39,22 +39,22 @@ def test_infease(self): def test_bounds(self): cqm = dimod.ConstrainedQuadraticModel() - i = dimod.Integer('i', lower_bound=-5, upper_bound=5) + i = dimod.Integer("i", lower_bound=-5, upper_bound=5) cqm.set_objective(i) sampleset = MIPCQMSolver().sample_cqm(cqm) - self.assertEqual(sampleset.first.sample['i'], -5) + self.assertEqual(sampleset.first.sample["i"], -5) cqm.set_objective(-i) sampleset = MIPCQMSolver().sample_cqm(cqm) - self.assertEqual(sampleset.first.sample['i'], 5) + self.assertEqual(sampleset.first.sample["i"], 5) def test_quadratic(self): cqm = dimod.ConstrainedQuadraticModel() - i, j = dimod.Integers('ij') + i, j = dimod.Integers("ij") - cqm.add_constraint(i*j <= 5) + cqm.add_constraint(i * j <= 5) with self.assertRaises(ValueError): MIPCQMSolver().sample_cqm(cqm) @@ -63,10 +63,10 @@ def test_vartypes(self): cqm = dimod.ConstrainedQuadraticModel() - i = dimod.Integer('i') - a = dimod.Real('a') - x = dimod.Binary('x') - s = dimod.Spin('s') + i = dimod.Integer("i") + a = dimod.Real("a") + x = dimod.Binary("x") + s = dimod.Spin("s") cqm.set_objective(-i - a - x) cqm.add_constraint(i <= 5.5) @@ -75,7 +75,7 @@ def test_vartypes(self): sampleset = MIPCQMSolver().sample_cqm(cqm) - self.assertEqual(sampleset.first.sample, {'i': 5, 'a': 6.5, 'x': 1}) + self.assertEqual(sampleset.first.sample, {"i": 5, "a": 6.5, "x": 1}) cqm.add_constraint(s <= 5) with self.assertRaises(ValueError): diff --git a/tests/test_packing3d.py b/tests/test_packing3d.py index 7b57ae1..8e06c05 100644 --- a/tests/test_packing3d.py +++ b/tests/test_packing3d.py @@ -14,18 +14,25 @@ import os import sys - -from itertools import combinations -import numpy as np import unittest +from itertools import combinations from unittest.mock import patch import dimod -from mip_solver import MIPCQMSolver -from packing3d import build_cqm, Cases, Bins, Variables, call_solver -from packing3d import _add_orientation_constraints, _add_bin_on_constraint -from packing3d import _add_boundary_constraints, _add_geometric_constraints +import numpy as np +from mip_solver import MIPCQMSolver +from packing3d import ( + Bins, + Cases, + Variables, + _add_bin_on_constraint, + _add_boundary_constraints, + _add_geometric_constraints, + _add_orientation_constraints, + build_cqm, + call_solver, +) from utils import read_instance project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -39,11 +46,11 @@ def setUp(self): self.variables = Variables(self.cases, self.bins) def test_cases(self): - np.testing.assert_array_equal(self.cases.case_ids, np.array([0,1])) + np.testing.assert_array_equal(self.cases.case_ids, np.array([0, 1])) self.assertEqual(self.cases.num_cases, 2) - np.testing.assert_array_equal(self.cases.length, np.array([2,3])) - np.testing.assert_array_equal(self.cases.width, np.array([2,3])) - np.testing.assert_array_equal(self.cases.height, np.array([2,3])) + np.testing.assert_array_equal(self.cases.length, np.array([2, 3])) + np.testing.assert_array_equal(self.cases.width, np.array([2, 3])) + np.testing.assert_array_equal(self.cases.height, np.array([2, 3])) def test_bins(self): data = self.data.copy() @@ -54,7 +61,7 @@ def test_bins(self): self.assertEqual(self.bins.lowest_num_bin, 1) # Alter bin dimensions to trigger exception - data['bin_dimensions'] = [1,1,1] + data["bin_dimensions"] = [1, 1, 1] with self.assertRaises(RuntimeError): Bins(data, self.cases) @@ -63,14 +70,12 @@ def test_variables(self): self.assertEqual(len(self.variables.y), self.cases.num_cases) self.assertEqual(len(self.variables.z), self.cases.num_cases) self.assertEqual(len(self.variables.bin_height), self.bins.num_bins) - self.assertEqual( - len(self.variables.bin_loc), self.cases.num_cases * self.bins.num_bins - ) + self.assertEqual(len(self.variables.bin_loc), self.cases.num_cases * self.bins.num_bins) self.assertEqual(len(self.variables.bin_on), self.bins.num_bins) self.assertEqual(len(self.variables.o), self.cases.num_cases * 6) self.assertEqual( - len(self.variables.selector), - len(list(combinations(range(self.cases.num_cases), r=2))) * 6 + len(self.variables.selector), + len(list(combinations(range(self.cases.num_cases), r=2))) * 6, ) def test_add_orientation_constraints(self): @@ -91,71 +96,86 @@ def test_add_bin_on_constraint(self): # check a feasible solution sample = { - 'bin_0_is_used': 1, 'case_0_in_bin_0': 1, 'case_1_in_bin_0': 0, - 'bin_1_is_used': 1, 'case_0_in_bin_1': 0, 'case_1_in_bin_1': 1, - 'bin_2_is_used': 0, 'case_0_in_bin_2': 0, 'case_1_in_bin_2': 0} + "bin_0_is_used": 1, + "case_0_in_bin_0": 1, + "case_1_in_bin_0": 0, + "bin_1_is_used": 1, + "case_0_in_bin_1": 0, + "case_1_in_bin_1": 1, + "bin_2_is_used": 0, + "case_0_in_bin_2": 0, + "case_1_in_bin_2": 0, + } self.assertEqual(cqm.check_feasible(sample), True) # check sequence bin use constraint sample = { - 'bin_0_is_used': 1, 'case_0_in_bin_0': 1, 'case_1_in_bin_0': 0, - 'bin_1_is_used': 0, 'case_0_in_bin_1': 0, 'case_1_in_bin_1': 0, - 'bin_2_is_used': 1, 'case_0_in_bin_2': 0, 'case_1_in_bin_2': 1} + "bin_0_is_used": 1, + "case_0_in_bin_0": 1, + "case_1_in_bin_0": 0, + "bin_1_is_used": 0, + "case_0_in_bin_1": 0, + "case_1_in_bin_1": 0, + "bin_2_is_used": 1, + "case_0_in_bin_2": 0, + "case_1_in_bin_2": 1, + } self.assertEqual(cqm.check_feasible(sample), False) # check that it is not possible to put item in a bin that is off sample = { - 'bin_0_is_used': 1, 'case_0_in_bin_0': 1, 'case_1_in_bin_0': 0, - 'bin_1_is_used': 0, 'case_0_in_bin_1': 0, 'case_1_in_bin_1': 1, - 'bin_2_is_used': 0, 'case_0_in_bin_2': 0, 'case_1_in_bin_2': 0} + "bin_0_is_used": 1, + "case_0_in_bin_0": 1, + "case_1_in_bin_0": 0, + "bin_1_is_used": 0, + "case_0_in_bin_1": 0, + "case_1_in_bin_1": 1, + "bin_2_is_used": 0, + "case_0_in_bin_2": 0, + "case_1_in_bin_2": 0, + } self.assertEqual(cqm.check_feasible(sample), False) def test_add_geometric(self): cqm = dimod.ConstrainedQuadraticModel() - effective_dimensions = _add_orientation_constraints(cqm, - self.variables, - self.cases) - _add_geometric_constraints(cqm, - self.variables, - self.bins, - self.cases, - effective_dimensions) + effective_dimensions = _add_orientation_constraints(cqm, self.variables, self.cases) + _add_geometric_constraints(cqm, self.variables, self.bins, self.cases, effective_dimensions) self.assertEqual(len(cqm.constraints), 9) original_sample = {k: 0 for k in cqm.variables.copy()} - original_sample['o_0_0'] = 1 - original_sample['o_1_0'] = 1 + original_sample["o_0_0"] = 1 + original_sample["o_1_0"] = 1 - for i, v in enumerate(['x', 'y', 'z']): + for i, v in enumerate(["x", "y", "z"]): # check feasible configurations for k in range(2): sample = original_sample.copy() - sample[f'{v}_{1 - k}'] = 10 - sample[f'sel_0_1_{i + 3 * k}'] = 1 + sample[f"{v}_{1 - k}"] = 10 + sample[f"sel_0_1_{i + 3 * k}"] = 1 self.assertTrue(cqm.check_feasible(sample)) sample = original_sample.copy() - sample[f'{v}_{k}'] = 10 - sample[f'sel_0_1_{i + 3 * (1 - k)}'] = 1 + sample[f"{v}_{k}"] = 10 + sample[f"sel_0_1_{i + 3 * (1 - k)}"] = 1 self.assertTrue(cqm.check_feasible(sample)) # check infeasible configurations for k in range(2): sample = original_sample.copy() - sample[f'{v}_{1 - k}'] = 10 - sample[f'{v}_{k}'] = 9 - sample[f'sel_0_1_{i + 3 * k}'] = 1 + sample[f"{v}_{1 - k}"] = 10 + sample[f"{v}_{k}"] = 9 + sample[f"sel_0_1_{i + 3 * k}"] = 1 self.assertFalse(cqm.check_feasible(sample)) # check selectors for j in range(6): sample = original_sample.copy() - sample[f'{v}_1'] = 10 + sample[f"{v}_1"] = 10 # check when no selector is enforced solution is infeasible self.assertFalse(cqm.check_feasible(sample)) - sample[f'sel_0_1_{i}'] = 1 - sample[f'sel_0_1_{j}'] = 1 + sample[f"sel_0_1_{i}"] = 1 + sample[f"sel_0_1_{j}"] = 1 if i == j: # check that at least one selector is enforced self.assertTrue(cqm.check_feasible(sample)) @@ -169,59 +189,94 @@ def test_add_boundary_constraints(self): bins.num_bins = 2 vars = Variables(self.cases, bins) cqm = dimod.ConstrainedQuadraticModel() - effective_dimensions = _add_orientation_constraints(cqm, - vars, - self.cases) - _add_boundary_constraints(cqm, vars, bins, - self.cases, effective_dimensions) + effective_dimensions = _add_orientation_constraints(cqm, vars, self.cases) + _add_boundary_constraints(cqm, vars, bins, self.cases, effective_dimensions) self.assertEqual(len(cqm.constraints), 14) original_sample = {k: 0 for k in cqm.variables.copy()} - original_sample['o_0_0'] = 1 - original_sample['o_1_0'] = 1 - for v in ['x', 'y', 'z']: + original_sample["o_0_0"] = 1 + original_sample["o_1_0"] = 1 + for v in ["x", "y", "z"]: # check boundary when items are assigned to bin 1 sample = original_sample.copy() - sample['case_1_in_bin_0'] = 1 - sample['upper_bound_0'] = 12 - sample[f'{v}_0'] = 10 + sample["case_1_in_bin_0"] = 1 + sample["upper_bound_0"] = 12 + sample[f"{v}_0"] = 10 self.assertTrue(cqm.check_feasible(sample)) # check boundary when items are assigned to bins 1 and 2 sample = original_sample.copy() - sample[f'{v}_1'] = 35 - sample[f'x_1'] = 35 - sample['case_1_in_bin_1'] = 1 - sample['upper_bound_1'] = 38 - sample['upper_bound_0'] = 37 + sample[f"{v}_1"] = 35 + sample[f"x_1"] = 35 + sample["case_1_in_bin_1"] = 1 + sample["upper_bound_1"] = 38 + sample["upper_bound_0"] = 37 self.assertTrue(cqm.check_feasible(sample)) # check infeasible configuration sample = original_sample.copy() - sample[f'{v}_0'] = 35 - sample[f'z_0'] = 35 - sample['case_1_in_bin_0'] = 1 - sample['upper_bound_1'] = 30 + sample[f"{v}_0"] = 35 + sample[f"z_0"] = 35 + sample["case_1_in_bin_0"] = 1 + sample["upper_bound_1"] = 30 self.assertFalse(cqm.check_feasible(sample)) def test_build_cqm(self): cqm, _ = build_cqm(self.variables, self.bins, self.cases) feasible_sample = { - 'o_0_0': 0.0, 'o_0_1': 0.0, 'o_0_2': 0.0, 'o_0_3': 0.0, - 'o_0_4': 0.0, 'o_0_5': 1.0, 'o_1_0': 0.0, 'o_1_1': 0.0, - 'o_1_2': 1.0, 'o_1_3': 0.0, 'o_1_4': 0.0, 'o_1_5': 0.0, - 'sel_0_1_0': 0.0, 'sel_0_1_1': 0.0, 'sel_0_1_2': 0.0, - 'sel_0_1_3': 0.0, 'sel_0_1_4': 1.0, 'sel_0_1_5': 0.0, - 'x_0': 0.0, 'x_1': 0.0, 'y_0': 3.0, 'y_1': 0.0, - 'z_0': 0.0, 'z_1': 0.0, 'upper_bound_0': 3.0} + "o_0_0": 0.0, + "o_0_1": 0.0, + "o_0_2": 0.0, + "o_0_3": 0.0, + "o_0_4": 0.0, + "o_0_5": 1.0, + "o_1_0": 0.0, + "o_1_1": 0.0, + "o_1_2": 1.0, + "o_1_3": 0.0, + "o_1_4": 0.0, + "o_1_5": 0.0, + "sel_0_1_0": 0.0, + "sel_0_1_1": 0.0, + "sel_0_1_2": 0.0, + "sel_0_1_3": 0.0, + "sel_0_1_4": 1.0, + "sel_0_1_5": 0.0, + "x_0": 0.0, + "x_1": 0.0, + "y_0": 3.0, + "y_1": 0.0, + "z_0": 0.0, + "z_1": 0.0, + "upper_bound_0": 3.0, + } infeasible_sample = { - 'o_0_0': 0.0, 'o_0_1': 0.0, 'o_0_2': 0.0, 'o_0_3': 0.0, - 'o_0_4': 0.0, 'o_0_5': 1.0, 'o_1_0': 0.0, 'o_1_1': 0.0, - 'o_1_2': 0.0, 'o_1_3': 0.0, 'o_1_4': 1.0, 'o_1_5': 0.0, - 'sel_0_1_0': 0.0, 'sel_0_1_1': 0.0, 'sel_0_1_2': 1.0, - 'sel_0_1_3': 0.0, 'sel_0_1_4': 0.0, 'sel_0_1_5': 0.0, - 'x_0': 0.0, 'x_1': 0.0, 'y_0': 0.0, 'y_1': 0.0, - 'z_0': 0.0, 'z_1': 0.0, 'upper_bound_0': 3.0} + "o_0_0": 0.0, + "o_0_1": 0.0, + "o_0_2": 0.0, + "o_0_3": 0.0, + "o_0_4": 0.0, + "o_0_5": 1.0, + "o_1_0": 0.0, + "o_1_1": 0.0, + "o_1_2": 0.0, + "o_1_3": 0.0, + "o_1_4": 1.0, + "o_1_5": 0.0, + "sel_0_1_0": 0.0, + "sel_0_1_1": 0.0, + "sel_0_1_2": 1.0, + "sel_0_1_3": 0.0, + "sel_0_1_4": 0.0, + "sel_0_1_5": 0.0, + "x_0": 0.0, + "x_1": 0.0, + "y_0": 0.0, + "y_1": 0.0, + "z_0": 0.0, + "z_1": 0.0, + "upper_bound_0": 3.0, + } self.assertTrue(cqm.check_feasible(feasible_sample)) self.assertFalse(cqm.check_feasible(infeasible_sample)) @@ -229,10 +284,12 @@ def test_build_cqm(self): def test_call_solver(self): cqm, _ = build_cqm(self.variables, self.bins, self.cases) - with patch('packing3d.LeapHybridCQMSampler') as mock: + with patch("packing3d.LeapHybridCQMSampler") as mock: call_solver(cqm, time_limit=5, use_cqm_solver=True) - mock.return_value.sample_cqm.assert_called_with(cqm, time_limit=5, label='3d bin packing') + mock.return_value.sample_cqm.assert_called_with( + cqm, time_limit=5, label="3d bin packing" + ) - with patch.object(MIPCQMSolver, 'sample_cqm') as mock: + with patch.object(MIPCQMSolver, "sample_cqm") as mock: call_solver(cqm, time_limit=5, use_cqm_solver=False) mock.assert_called_with(cqm, time_limit=5) diff --git a/tests/test_utils.py b/tests/test_utils.py index 653eff1..310225d 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -12,38 +12,37 @@ # See the License for the specific language governing permissions and # limitations under the License. -from io import StringIO -import dimod import os import sys -from tempfile import TemporaryDirectory import unittest +from io import StringIO +from tempfile import TemporaryDirectory -from utils import (case_list_to_dict, print_cqm_stats, - plot_cuboids, - read_instance, - write_input_data, - write_solution_to_file) +import dimod -from packing3d import (Cases, - Bins, - Variables, - build_cqm, - call_solver) +from packing3d import Bins, Cases, Variables, build_cqm, call_solver +from utils import ( + case_list_to_dict, + plot_cuboids, + print_cqm_stats, + read_instance, + write_input_data, + write_solution_to_file, +) project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) class TestUtils(unittest.TestCase): def test_print_cqm_stats(self): - test_bqm = dimod.BQM('BINARY') + test_bqm = dimod.BQM("BINARY") with self.assertRaises(ValueError): print_cqm_stats(test_bqm) test_cqm = dimod.CQM() - r = dimod.Real('r') - b = dimod.Binary('b') - i = dimod.Integer('i') + r = dimod.Real("r") + b = dimod.Binary("b") + i = dimod.Integer("i") test_cqm.add_constraint(r == 1) test_cqm.add_constraint(b >= 0.5) test_cqm.add_constraint(i <= 2) @@ -54,13 +53,12 @@ def test_print_cqm_stats(self): sys.stdout = sys.__stdout__ printed_string = cqm_stats_stream.getvalue() - expected_field_values = ['1','1','1','0','3','0','1','1','1'] + expected_field_values = ["1", "1", "1", "0", "3", "0", "1", "1", "1"] - self.assertEqual(printed_string.splitlines()[-1].split(), - expected_field_values) + self.assertEqual(printed_string.splitlines()[-1].split(), expected_field_values) def test_plot_cuboids(self): - data = read_instance(instance_path=project_dir+'/tests/test_data_1.txt') + data = read_instance(instance_path=project_dir + "/tests/test_data_1.txt") cases = Cases(data) bins = Bins(data, cases=cases) variables = Variables(cases, bins) @@ -68,20 +66,17 @@ def test_plot_cuboids(self): best_feasible = call_solver(cqm, time_limit=3, use_cqm_solver=False) - fig = plot_cuboids(best_feasible, variables, cases, bins, - effective_dimensions) - + fig = plot_cuboids(best_feasible, variables, cases, bins, effective_dimensions) + expected_num_cases = 2 expected_num_boundaries = 3 - self.assertEqual( - len(fig['data']), expected_num_cases + expected_num_boundaries - ) + self.assertEqual(len(fig["data"]), expected_num_cases + expected_num_boundaries) def test_read_write_input_data(self): - data = read_instance(instance_path=project_dir+'/tests/test_data_1.txt') + data = read_instance(instance_path=project_dir + "/tests/test_data_1.txt") out_file_string = write_input_data(data) - out_list = (out_file_string.split(sep='\n')) + out_list = out_file_string.split(sep="\n") case_info = [] for i, line in enumerate(out_list): if i == 0: @@ -95,19 +90,22 @@ def test_read_write_input_data(self): data1 = case_list_to_dict(case_info, num_bins, bin_dimensions) - self.assertEqual(data1, { - 'Case ID': [0, 1], - 'Quantity': [1, 1], - 'Length': [2, 3], - 'Width': [2, 3], - 'Height': [2, 3], - 'num_bins': 1, - 'bin_dimensions': [30, 40, 50] - }) + self.assertEqual( + data1, + { + "Case ID": [0, 1], + "Quantity": [1, 1], + "Length": [2, 3], + "Width": [2, 3], + "Height": [2, 3], + "num_bins": 1, + "bin_dimensions": [30, 40, 50], + }, + ) self.assertEqual(data1, data) def test_write_solution_to_file(self): - data = read_instance(instance_path=project_dir+'/tests/test_data_1.txt') + data = read_instance(instance_path=project_dir + "/tests/test_data_1.txt") cases = Cases(data) bins = Bins(data, cases=cases) variables = Variables(cases, bins) @@ -117,12 +115,7 @@ def test_write_solution_to_file(self): with TemporaryDirectory() as tempdir: solution_file_path = os.path.join(tempdir, "solution_test.txt") - write_solution_to_file(solution_file_path, - cqm, - variables, - best_feasible, - cases, - bins, - effective_dimensions) + write_solution_to_file( + solution_file_path, cqm, variables, best_feasible, cases, bins, effective_dimensions + ) self.assertTrue(os.path.exists(solution_file_path)) - \ No newline at end of file diff --git a/utils.py b/utils.py index 3755652..3eb5f07 100644 --- a/utils.py +++ b/utils.py @@ -13,15 +13,16 @@ # limitations under the License. import os +from typing import TYPE_CHECKING, List, Optional + +import dimod +import numpy as np import plotly.colors as colors import plotly.graph_objects as go -import numpy as np from tabulate import tabulate -from typing import List, Optional, TYPE_CHECKING -import dimod if TYPE_CHECKING: - from packing3d import Cases, Bins, Variables + from packing3d import Bins, Cases, Variables TABLE_HEADERS = ["Case ID", "Quantity", "Length", "Width", "Height"] @@ -42,24 +43,24 @@ def get_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> list[list]: num_continuous = sum(cqm.vartype(v) is dimod.REAL for v in cqm.variables) num_discretes = len(cqm.discrete) num_linear_constraints = sum( - constraint.lhs.is_linear() for constraint in cqm.constraints.values()) + constraint.lhs.is_linear() for constraint in cqm.constraints.values() + ) num_quadratic_constraints = sum( - not constraint.lhs.is_linear() for constraint in - cqm.constraints.values()) + not constraint.lhs.is_linear() for constraint in cqm.constraints.values() + ) num_le_inequality_constraints = sum( - constraint.sense is dimod.sym.Sense.Le for constraint in - cqm.constraints.values()) + constraint.sense is dimod.sym.Sense.Le for constraint in cqm.constraints.values() + ) num_ge_inequality_constraints = sum( - constraint.sense is dimod.sym.Sense.Ge for constraint in - cqm.constraints.values()) + constraint.sense is dimod.sym.Sense.Ge for constraint in cqm.constraints.values() + ) num_equality_constraints = sum( - constraint.sense is dimod.sym.Sense.Eq for constraint in - cqm.constraints.values()) + constraint.sense is dimod.sym.Sense.Eq for constraint in cqm.constraints.values() + ) - assert (num_binaries + num_integers + num_continuous == len(cqm.variables)) + assert num_binaries + num_integers + num_continuous == len(cqm.variables) - assert (num_quadratic_constraints + num_linear_constraints == - len(cqm.constraints)) + assert num_quadratic_constraints + num_linear_constraints == len(cqm.constraints) return [ ["Binary", "Integer", "Continuous", "Quad", "Linear", "One-hot", "EQ", "LT", "GT"], @@ -72,8 +73,8 @@ def get_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> list[list]: num_discretes, num_equality_constraints, num_le_inequality_constraints, - num_ge_inequality_constraints - ] + num_ge_inequality_constraints, + ], ] @@ -87,10 +88,8 @@ def print_cqm_stats(cqm: dimod.ConstrainedQuadraticModel) -> None: cqm_stats = get_cqm_stats(cqm) print(" \n" + "=" * 35 + "MODEL INFORMATION" + "=" * 35) - print( - ' ' * 10 + 'Variables' + " " * 20 + 'Constraints' + " " * 15 + - 'Sensitivity') - print('-' * 30 + " " + '-' * 28 + ' ' + '-' * 18) + print(" " * 10 + "Variables" + " " * 20 + "Constraints" + " " * 15 + "Sensitivity") + print("-" * 30 + " " + "-" * 28 + " " + "-" * 18) print(tabulate(cqm_stats, headers="firstrow")) @@ -107,7 +106,9 @@ def update_colors(fig: go.Figure, color_coded: bool) -> go.Figure: if color_coded: case_ids = np.array( [ - int(trace["name"].split("_")[1]) for trace in fig["data"] if trace["name"][:4] == "case" + int(trace["name"].split("_")[1]) + for trace in fig["data"] + if trace["name"][:4] == "case" ] ) colors = _get_colors(case_ids) @@ -120,12 +121,14 @@ def update_colors(fig: go.Figure, color_coded: bool) -> go.Figure: def _cuboid_data(origin: tuple, size: tuple = (1, 1, 1)): - X = [[[0, 1, 0], [0, 0, 0], [1, 0, 0], [1, 1, 0]], - [[0, 0, 0], [0, 0, 1], [1, 0, 1], [1, 0, 0]], - [[1, 0, 1], [1, 0, 0], [1, 1, 0], [1, 1, 1]], - [[0, 0, 1], [0, 0, 0], [0, 1, 0], [0, 1, 1]], - [[0, 1, 0], [0, 1, 1], [1, 1, 1], [1, 1, 0]], - [[0, 1, 1], [0, 0, 1], [1, 0, 1], [1, 1, 1]]] + X = [ + [[0, 1, 0], [0, 0, 0], [1, 0, 0], [1, 1, 0]], + [[0, 0, 0], [0, 0, 1], [1, 0, 1], [1, 0, 0]], + [[1, 0, 1], [1, 0, 0], [1, 1, 0], [1, 1, 1]], + [[0, 0, 1], [0, 0, 0], [0, 1, 0], [0, 1, 1]], + [[0, 1, 0], [0, 1, 1], [1, 1, 1], [1, 1, 0]], + [[0, 1, 1], [0, 0, 1], [1, 0, 1], [1, 1, 1]], + ] X = np.array(X).astype(float) for i in range(3): X[:, :, i] *= size[i] @@ -134,8 +137,9 @@ def _cuboid_data(origin: tuple, size: tuple = (1, 1, 1)): return X -def _get_all_cuboids(positions: List[tuple], sizes: List[tuple], - color_coded: bool, case_ids: np.array) -> list: +def _get_all_cuboids( + positions: List[tuple], sizes: List[tuple], color_coded: bool, case_ids: np.array +) -> list: case_data = [] mesh_kwargs = dict(alphahull=0, flatshading=True, showlegend=True) colors = _get_colors(case_ids) @@ -145,40 +149,49 @@ def _get_all_cuboids(positions: List[tuple], sizes: List[tuple], x, y, z = np.unique(np.vstack(case_points), axis=0).T if color_coded: mesh_kwargs["color"] = c - case_data.append(go.Mesh3d(x=x, y=y, z=z, - name=f"case_{id}", - **mesh_kwargs)) + case_data.append(go.Mesh3d(x=x, y=y, z=z, name=f"case_{id}", **mesh_kwargs)) return case_data -def _plot_cuboids(positions: List[tuple], sizes: List[tuple], - bin_length: int, bin_width: int, - bin_height: int, color_coded: bool, - case_ids: np.array) -> go.Figure: +def _plot_cuboids( + positions: List[tuple], + sizes: List[tuple], + bin_length: int, + bin_width: int, + bin_height: int, + color_coded: bool, + case_ids: np.array, +) -> go.Figure: case_data = _get_all_cuboids(positions, sizes, color_coded, case_ids) fig = go.Figure(data=case_data) - fig.update_layout(scene=dict( - xaxis=dict(range=[0, bin_length * 1.1]), - yaxis=dict(range=[0, bin_width * 1.1]), - zaxis=dict(range=[0, bin_height * 1.1]) - )) + fig.update_layout( + scene=dict( + xaxis=dict(range=[0, bin_length * 1.1]), + yaxis=dict(range=[0, bin_width * 1.1]), + zaxis=dict(range=[0, bin_height * 1.1]), + ) + ) return fig def _get_colors(case_ids: np.array) -> list: if len(np.unique(case_ids)) > 1: - scaled = (case_ids - np.min(case_ids)) / \ - (np.max(case_ids) - np.min(case_ids)) + scaled = (case_ids - np.min(case_ids)) / (np.max(case_ids) - np.min(case_ids)) return colors.sample_colorscale(colors.sequential.Rainbow, scaled) return ["blue"] * len(case_ids) -def plot_cuboids(sample: dimod.SampleSet, vars: "Variables", - cases: "Cases", bins: "Bins", effective_dimensions: list, - color_coded: bool = True) -> go.Figure: +def plot_cuboids( + sample: dimod.SampleSet, + vars: "Variables", + cases: "Cases", + bins: "Bins", + effective_dimensions: list, + color_coded: bool = True, +) -> go.Figure: """Visualization utility tool to view 3D bin packing solution. Args: @@ -200,29 +213,51 @@ def plot_cuboids(sample: dimod.SampleSet, vars: "Variables", sizes = [] for i in range(num_cases): positions.append( - (vars.x[i].energy(sample), vars.y[i].energy(sample), - vars.z[i].energy(sample))) - sizes.append((dx[i].energy(sample), - dy[i].energy(sample), - dz[i].energy(sample))) - fig = _plot_cuboids(positions, sizes, bins.length * num_bins, - bins.width, bins.height, color_coded, cases.case_ids) + (vars.x[i].energy(sample), vars.y[i].energy(sample), vars.z[i].energy(sample)) + ) + sizes.append((dx[i].energy(sample), dy[i].energy(sample), dz[i].energy(sample))) + fig = _plot_cuboids( + positions, + sizes, + bins.length * num_bins, + bins.width, + bins.height, + color_coded, + cases.case_ids, + ) for i in range(num_bins): fig.add_trace( - go.Scatter3d(x=[bins.length * i, bins.length * (i + 1)], y=[0, 0], - z=[0, 0], mode='lines', name=f"Bin Boundary {i + 1}", - line_color="red", line_width=5) + go.Scatter3d( + x=[bins.length * i, bins.length * (i + 1)], + y=[0, 0], + z=[0, 0], + mode="lines", + name=f"Bin Boundary {i + 1}", + line_color="red", + line_width=5, + ) ) fig.add_trace( - go.Scatter3d(x=[bins.length * (i + 1)] * 2, y=[0, bins.width], - z=[0, 0], mode='lines', name=f"Bin Boundary {i + 1}", - line_color="red", line_width=5) + go.Scatter3d( + x=[bins.length * (i + 1)] * 2, + y=[0, bins.width], + z=[0, 0], + mode="lines", + name=f"Bin Boundary {i + 1}", + line_color="red", + line_width=5, + ) ) fig.add_trace( - go.Scatter3d(x=[bins.length * (i + 1)] * 2, y=[0, 0], - z=[0, bins.height], mode='lines', - name=f"Bin Boundary {i + 1}", line_color="red", - line_width=5) + go.Scatter3d( + x=[bins.length * (i + 1)] * 2, + y=[0, 0], + z=[0, bins.height], + mode="lines", + name=f"Bin Boundary {i + 1}", + line_color="red", + line_width=5, + ) ) fig.update_layout(scene=dict(aspectmode="data")) @@ -279,13 +314,15 @@ def read_instance(instance_path: str) -> dict: return case_list_to_dict(case_info, num_bins, bin_dimensions) -def write_solution_to_file(solution_file_path: str, - cqm: dimod.ConstrainedQuadraticModel, - vars: "Variables", - sample: dimod.SampleSet, - cases: "Cases", - bins: "Bins", - effective_dimensions: list): +def write_solution_to_file( + solution_file_path: str, + cqm: dimod.ConstrainedQuadraticModel, + vars: "Variables", + sample: dimod.SampleSet, + cases: "Cases", + bins: "Bins", + effective_dimensions: list, +): """Write solution to a file. Args: @@ -305,37 +342,45 @@ def write_solution_to_file(solution_file_path: str, lowest_num_bin = bins.lowest_num_bin dx, dy, dz = effective_dimensions if num_bins > 1: - num_bin_used = lowest_num_bin + sum([vars.bin_on[j].energy(sample) - for j in range(lowest_num_bin, num_bins)]) + num_bin_used = lowest_num_bin + sum( + [vars.bin_on[j].energy(sample) for j in range(lowest_num_bin, num_bins)] + ) else: num_bin_used = 1 objective_value = cqm.objective.energy(sample) - vs = [['case_id', 'bin_location', 'orientation', 'x', 'y', 'z', "x'", - "y'", "z'"]] + vs = [["case_id", "bin_location", "orientation", "x", "y", "z", "x'", "y'", "z'"]] for i in range(num_cases): - vs.append([cases.case_ids[i], - int(sum(int(j == 0) if i == 0 or num_bins == 1 else - (j + 1) * vars.bin_loc[i, j].energy(sample) - for j in range(num_bins))), - int(sum((r + 1) * vars.o[i, r].energy(sample) for r in - range(6))), - np.round(vars.x[i].energy(sample), 2), - np.round(vars.y[i].energy(sample), 2), - np.round(vars.z[i].energy(sample), 2), - np.round(dx[i].energy(sample), 2), - np.round(dy[i].energy(sample), 2), - np.round(dz[i].energy(sample), 2)]) - - with open(solution_file_path, 'w') as f: - f.write('# Number of bins used: ' + str(int(num_bin_used)) + '\n') - f.write('# Number of cases packed: ' + str(int(num_cases)) + '\n') - f.write( - '# Objective value: ' + str(np.round(objective_value, 3)) + '\n\n') + vs.append( + [ + cases.case_ids[i], + int( + sum( + ( + int(j == 0) + if i == 0 or num_bins == 1 + else (j + 1) * vars.bin_loc[i, j].energy(sample) + ) + for j in range(num_bins) + ) + ), + int(sum((r + 1) * vars.o[i, r].energy(sample) for r in range(6))), + np.round(vars.x[i].energy(sample), 2), + np.round(vars.y[i].energy(sample), 2), + np.round(vars.z[i].energy(sample), 2), + np.round(dx[i].energy(sample), 2), + np.round(dy[i].energy(sample), 2), + np.round(dz[i].energy(sample), 2), + ] + ) + + with open(solution_file_path, "w") as f: + f.write("# Number of bins used: " + str(int(num_bin_used)) + "\n") + f.write("# Number of cases packed: " + str(int(num_cases)) + "\n") + f.write("# Objective value: " + str(np.round(objective_value, 3)) + "\n\n") f.write(tabulate(vs, headers="firstrow")) f.close() - print(f'Saved solution to ' - f'{os.path.join(os.getcwd(), solution_file_path)}') + print(f"Saved solution to " f"{os.path.join(os.getcwd(), solution_file_path)}") def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: @@ -350,21 +395,24 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: """ problem_data = data.copy() - num_bins = problem_data.pop('num_bins') - bin_dimensions = problem_data.pop('bin_dimensions') + num_bins = problem_data.pop("num_bins") + bin_dimensions = problem_data.pop("bin_dimensions") case_info = [ [problem_data[table_header][i] for table_header in TABLE_HEADERS] for i in range(len(problem_data[TABLE_HEADERS[0]])) ] - input_string = f'# Max num of bins : {num_bins} \n' - input_string += (f'# Bin dimensions ' - f'(L * W * H): {bin_dimensions[0]} ' - f'{bin_dimensions[1]} ' - f'{bin_dimensions[2]} \n \n') - input_string += tabulate([TABLE_HEADERS, *[v for v in case_info]], - headers="firstrow", colalign='right') + input_string = f"# Max num of bins : {num_bins} \n" + input_string += ( + f"# Bin dimensions " + f"(L * W * H): {bin_dimensions[0]} " + f"{bin_dimensions[1]} " + f"{bin_dimensions[2]} \n \n" + ) + input_string += tabulate( + [TABLE_HEADERS, *[v for v in case_info]], headers="firstrow", colalign="right" + ) if input_filename is not None: full_file_path = os.path.join("input", input_filename) From d56f56c7923bdaae6a12fb7b348b1bce1a93eba6 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Mon, 9 Dec 2024 15:45:00 -0800 Subject: [PATCH 13/20] Fix problem set up --- demo_callbacks.py | 107 ++++++++++++++++++---------------------------- demo_interface.py | 4 +- 2 files changed, 43 insertions(+), 68 deletions(-) diff --git a/demo_callbacks.py b/demo_callbacks.py index db11c27..a98d4e8 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -95,22 +95,29 @@ def update_problem_type( @dash.callback( Output("input", "children"), - Output("problem-data-store", "data", allow_duplicate=True), - Output("saved", "className", allow_duplicate=True), + Output("max-bins", "children"), + Output("bin-dims", "children"), + Output("problem-data-store", "data"), + Output("saved", "className"), inputs=[ Input("problem-type", "value"), Input("num-cases", "value"), Input("case-dim", "value"), - State("problem-data-store", "data"), + Input("num-bins", "value"), + Input("bin-length", "value"), + Input("bin-width", "value"), + Input("bin-height", "value"), ], - prevent_initial_call="initial_duplicate", ) def generate_data( problem_type: Union[ProblemType, int], num_cases: int, case_size_range: list[int], - problem_data: dict, -) -> tuple[list, list, str]: + num_bins: int, + bin_length: int, + bin_width: int, + bin_height: int, +) -> tuple[list, int, str, dict, str]: """Updates the input table when ProblemType is `Generated` and any relevant settings have been changed. @@ -118,12 +125,17 @@ def generate_data( problem_type: The input problem type. Either Generated or Uploaded. num_cases: The value of the number of cases setting. case_size_range: The values of the case size range setting. - problem_data: The stored problem data. + num_bins: The current value of the number of bins setting. + bin_length: The current value of the bin length setting. + bin_width: The current value of the bin width setting. + bin_height: The current value of the bin height setting. Returns: - list: The input table. - list: The data that was generated for the table. - str: The class name for the `Saved!` feedback. + input: The input table. + max-bins: The maximum bins to display in the input UI. + bin-dimensions: The bin dimension string to display in the UI. + problem-data-store: The data that was generated for the table. + saved: The class name for the `Saved!` feedback. """ if ProblemType(problem_type) is ProblemType.FILE: raise PreventUpdate @@ -138,62 +150,27 @@ def generate_data( ) # Determine quantities and case_ids - unique_dimensions, problem_data["Quantity"] = np.unique( + unique_dimensions, quantity = np.unique( case_dimensions, axis=1, return_counts=True ) - problem_data["Case ID"] = np.arange(len(problem_data["Quantity"])) - problem_data["Length"], problem_data["Width"], problem_data["Height"] = unique_dimensions - - return generate_table(problem_data), problem_data, "display-none" - - -@dash.callback( - Output("max-bins", "children"), - Output("bin-dims", "children"), - Output("problem-data-store", "data"), - Output("saved", "className"), - inputs=[ - Input("problem-type", "value"), - Input("num-bins", "value"), - Input("bin-length", "value"), - Input("bin-width", "value"), - Input("bin-height", "value"), - State("problem-data-store", "data"), - ], -) -def generate_bins( - problem_type: Union[ProblemType, int], - num_bins: int, - bin_length: int, - bin_width: int, - bin_height: int, - problem_data: dict, -) -> tuple[int, str, int, list, str]: - """Updates the number of bins and bin dimensions store and input when ProblemType is `Generated` - and any relevant form fields are updated. - - Args: - problem_type: The input problem type. Either Generated or Uploaded. - num_bins: The current value of the number of bins setting. - bin_length: The current value of the bin length setting. - bin_width: The current value of the bin width setting. - bin_height: The current value of the bin height setting. - problem_data: The stored problem data. - - Returns: - max_bins: The maximum bins to display in the input UI. - bin_dimensions: The bin dimension string to display in the UI. - problem_data: The problem data to store. - saved_classname: The `Saved!` text class name. - """ - if ProblemType(problem_type) is ProblemType.FILE: - raise PreventUpdate - - problem_data["num_bins"] = num_bins - problem_data["bin_dimensions"] = [bin_length, bin_width, bin_height] - - return num_bins, f"{bin_length} * {bin_width} * {bin_height}", problem_data, "display-none" + problem_data = { + "Case ID": np.arange(len(quantity)), + "Quantity": quantity, + "Length": unique_dimensions[0], + "Width": unique_dimensions[1], + "Height": unique_dimensions[2], + "num_bins": num_bins, + "bin_dimensions": [bin_length, bin_width, bin_height], + } + + return ( + generate_table(problem_data), + num_bins, + f"{bin_length} * {bin_width} * {bin_height}", + problem_data, + "display-none" + ) class ReadInputFileReturn(NamedTuple): @@ -203,7 +180,7 @@ class ReadInputFileReturn(NamedTuple): max_bins: int = dash.no_update bin_dimensions: str = dash.no_update filename: str = dash.no_update - problem_data_store: list = dash.no_update + problem_data_store: dict = dash.no_update @dash.callback( @@ -287,7 +264,7 @@ def read_input_file( def save_input_to_file( save_button: int, filename: str, - problem_data: list[int], + problem_data: dict, ) -> str: """Saves input data to a text file when the `save-input-button` is clicked. diff --git a/demo_interface.py b/demo_interface.py index 6708386..deaa2be 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -15,8 +15,6 @@ """This file stores the Dash HTML layout for the app.""" from __future__ import annotations -from collections import defaultdict - from dash import dcc, html from demo_configs import ( @@ -413,7 +411,7 @@ def create_interface(): id="app-container", children=[ # Below are any temporary storage items, e.g., for sharing data between callbacks. - dcc.Store(id="problem-data-store", data=defaultdict(list)), + dcc.Store(id="problem-data-store"), dcc.Store(id="max-bins-store"), dcc.Store(id="bin-dimensions-store"), # Header brand banner From 556f3525ef6923e972ef6a781bf383ce350ddafc Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Mon, 23 Dec 2024 09:45:14 -0800 Subject: [PATCH 14/20] Update utils.py copyright date Co-authored-by: Theodor Isacsson --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index 3eb5f07..f9bf231 100644 --- a/utils.py +++ b/utils.py @@ -1,4 +1,4 @@ -# Copyright 2024 D-Wave +# Copyright 2022 D-Wave # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. From d2c039eabae0fc000aeb3cd6a4d2bd613e5f47ca Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Mon, 23 Dec 2024 09:48:28 -0800 Subject: [PATCH 15/20] Update color by case id --- demo_configs.py | 3 ++- demo_interface.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/demo_configs.py b/demo_configs.py index f1c457d..7bb32be 100644 --- a/demo_configs.py +++ b/demo_configs.py @@ -64,7 +64,8 @@ "value": 50, } -ADVANCED_SETTINGS = ["Color by Case ID"] +# checklist to color by case id or color each case separately +COLOR_BY_CASE = ["Color by Case ID"] # solver time limits in seconds (value means default) SOLVER_TIME = { diff --git a/demo_interface.py b/demo_interface.py index deaa2be..a4154ce 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -18,7 +18,7 @@ from dash import dcc, html from demo_configs import ( - ADVANCED_SETTINGS, + COLOR_BY_CASE, BIN_DIM, CASE_DIM, DESCRIPTION, @@ -405,7 +405,7 @@ def problem_details(index: int) -> html.Div: def create_interface(): """Set the application HTML.""" - checklist_options = generate_options(ADVANCED_SETTINGS) + checklist_options = generate_options(COLOR_BY_CASE) return html.Div( id="app-container", From 03d4b6488d38b59dfaf7725159aac02dd88f916a Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Mon, 23 Dec 2024 10:13:30 -0800 Subject: [PATCH 16/20] Add .txt and input folder clarification --- demo_interface.py | 2 +- utils.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/demo_interface.py b/demo_interface.py index a4154ce..0f12ca7 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -507,7 +507,7 @@ def create_interface(): n_clicks=0, ), html.P( - "Saved!", + "Saved to /input folder", className="display-none", id="saved", ), diff --git a/utils.py b/utils.py index f9bf231..2881b70 100644 --- a/utils.py +++ b/utils.py @@ -415,6 +415,9 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: ) if input_filename is not None: + if len(input_filename.split(".")) < 2: + input_filename = input_filename + ".txt" + full_file_path = os.path.join("input", input_filename) f = open(full_file_path, "w") f.write(input_string) From 4761450418643bd6f09482b48da6df28ab3d3695 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Mon, 23 Dec 2024 10:52:14 -0800 Subject: [PATCH 17/20] Disable settings while running --- demo_callbacks.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/demo_callbacks.py b/demo_callbacks.py index a98d4e8..c34c4c8 100644 --- a/demo_callbacks.py +++ b/demo_callbacks.py @@ -323,6 +323,13 @@ def update_graph_colors( (Output("results-tab", "disabled"), True, False), # Disables results tab while running. (Output("results-tab", "label"), "Loading...", "Results"), (Output("tabs", "value"), "input-tab", "input-tab"), # Switch to input tab while running. + (Output("problem-type", "disabled"), True, False), + (Output("num-cases", "disabled"), True, False), + (Output("case-dim", "disabled"), True, False), + (Output("num-bins", "disabled"), True, False), + (Output("bin-length", "disabled"), True, False), + (Output("bin-width", "disabled"), True, False), + (Output("bin-height", "disabled"), True, False), ], cancel=[Input("cancel-button", "n_clicks")], prevent_initial_call=True, From 26cc4b4b7edcd264535a64497162bf1f928dcd07 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Tue, 31 Dec 2024 09:40:26 -0800 Subject: [PATCH 18/20] Update to PurePath --- utils.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/utils.py b/utils.py index 2881b70..43aa4c3 100644 --- a/utils.py +++ b/utils.py @@ -13,6 +13,7 @@ # limitations under the License. import os +from pathlib import Path, PurePath from typing import TYPE_CHECKING, List, Optional import dimod @@ -415,12 +416,15 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: ) if input_filename is not None: - if len(input_filename.split(".")) < 2: - input_filename = input_filename + ".txt" + input_file = PurePath(input_filename) - full_file_path = os.path.join("input", input_filename) - f = open(full_file_path, "w") - f.write(input_string) - f.close() + if input_file.suffix != ".txt": + input_file = input_file.with_suffix('.txt') + + input_folder = Path(__file__).parent / "input" + file_path = input_folder / input_file.name + + with Path(file_path).open("w") as f: + f.write(input_string) return input_string From b3011e32780376e0eacbe35e4b3d98becbecbcd0 Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Tue, 31 Dec 2024 15:07:58 -0800 Subject: [PATCH 19/20] Update prompt copy Co-authored-by: Theodor Isacsson --- demo_interface.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demo_interface.py b/demo_interface.py index 0f12ca7..5e25091 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -190,7 +190,7 @@ def generate_settings_form() -> html.Div: dcc.Upload( id="input-file", children=html.Div( - ["Drag and Drop or ", html.A("Select Files"), html.Div(id="filename")] + ["Drag and Drop or ", html.A("Select File"), html.Div(id="filename")] ), ), ], @@ -507,7 +507,7 @@ def create_interface(): n_clicks=0, ), html.P( - "Saved to /input folder", + "Saved to input folder", className="display-none", id="saved", ), From 7f63250e2d6f073447dbed4ecf9802bb7392de5e Mon Sep 17 00:00:00 2001 From: Kate Culver Date: Tue, 31 Dec 2024 15:17:35 -0800 Subject: [PATCH 20/20] Clean up file logic --- demo_interface.py | 2 +- utils.py | 16 ++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/demo_interface.py b/demo_interface.py index 5e25091..8571bd3 100644 --- a/demo_interface.py +++ b/demo_interface.py @@ -190,7 +190,7 @@ def generate_settings_form() -> html.Div: dcc.Upload( id="input-file", children=html.Div( - ["Drag and Drop or ", html.A("Select File"), html.Div(id="filename")] + ["Drag and Drop or ", html.A("Select a File"), html.Div(id="filename")] ), ), ], diff --git a/utils.py b/utils.py index 43aa4c3..24bb333 100644 --- a/utils.py +++ b/utils.py @@ -13,7 +13,7 @@ # limitations under the License. import os -from pathlib import Path, PurePath +from pathlib import Path from typing import TYPE_CHECKING, List, Optional import dimod @@ -415,16 +415,8 @@ def write_input_data(data: dict, input_filename: Optional[str] = None) -> str: [TABLE_HEADERS, *[v for v in case_info]], headers="firstrow", colalign="right" ) - if input_filename is not None: - input_file = PurePath(input_filename) - - if input_file.suffix != ".txt": - input_file = input_file.with_suffix('.txt') - - input_folder = Path(__file__).parent / "input" - file_path = input_folder / input_file.name - - with Path(file_path).open("w") as f: - f.write(input_string) + if input_filename: + file_path = "input" / Path(input_filename).with_suffix('.txt') + file_path.write_text(input_string) return input_string